Compare commits

..
Author SHA1 Message Date
zsviczian 64e43bf7c7 lint 2025-01-17 22:47:50 +00:00
zsviczian 9d24003517 testing 2025-01-17 22:39:06 +00:00
2 changed files with 44 additions and 17 deletions
+41 -14
View File
@@ -22,7 +22,6 @@ export const fileOpen = <M extends boolean | undefined = false>(opts: {
const mimeTypes = opts.extensions?.reduce((mimeTypes, type) => {
mimeTypes.push(MIME_TYPES[type]);
return mimeTypes;
}, [] as string[]);
@@ -39,34 +38,62 @@ export const fileOpen = <M extends boolean | undefined = false>(opts: {
mimeTypes,
multiple: opts.multiple ?? false,
legacySetup: (resolve, reject, input) => {
let isResolved = false;
let checkInterval: number | null = null;
// Increased delay for iOS to ensure file selection is complete
const CHECK_INTERVAL = 100; // 100ms
const MAX_CHECKS = 50; // 5 seconds total
let checkCount = 0;
const scheduleRejection = debounce(reject, INPUT_CHANGE_INTERVAL_MS);
const focusHandler = () => {
checkForFile();
document.addEventListener(EVENT.KEYUP, scheduleRejection);
document.addEventListener(EVENT.POINTER_UP, scheduleRejection);
scheduleRejection();
};
const checkForFile = () => {
// this hack might not work when expecting multiple files
if (isResolved) {
return;
}
if (input.files?.length) {
isResolved = true;
const ret = opts.multiple ? [...input.files] : input.files[0];
resolve(ret as RetType);
return true;
}
checkCount++;
if (checkCount >= MAX_CHECKS) {
scheduleRejection();
return true;
}
return false;
};
const focusHandler = () => {
// Start checking for files only after focus event
checkInterval = window.setInterval(() => {
if (checkForFile()) {
clearInterval(checkInterval!);
}
}, CHECK_INTERVAL);
document.addEventListener(EVENT.KEYUP, scheduleRejection);
document.addEventListener(EVENT.POINTER_UP, scheduleRejection);
};
requestAnimationFrame(() => {
window.addEventListener(EVENT.FOCUS, focusHandler);
});
const interval = window.setInterval(() => {
checkForFile();
}, INPUT_CHANGE_INTERVAL_MS);
return (rejectPromise) => {
clearInterval(interval);
if (checkInterval) {
clearInterval(checkInterval);
}
scheduleRejection.cancel();
window.removeEventListener(EVENT.FOCUS, focusHandler);
document.removeEventListener(EVENT.KEYUP, scheduleRejection);
document.removeEventListener(EVENT.POINTER_UP, scheduleRejection);
if (rejectPromise) {
// so that something is shown in console if we need to debug this
if (rejectPromise && !isResolved) {
console.warn("Opening the file was canceled (legacy-fs).");
rejectPromise(new AbortError());
}
+3 -3
View File
@@ -7480,9 +7480,9 @@ jsonpointer@^5.0.0:
object.values "^1.1.6"
katex@^0.16.9:
version "0.16.21"
resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.21.tgz#8f63c659e931b210139691f2cc7bb35166b792a3"
integrity sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==
version "0.16.10"
resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.10.tgz#6f81b71ac37ff4ec7556861160f53bc5f058b185"
integrity sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==
dependencies:
commander "^8.3.0"