@exulu/frontend 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +129 -131
- package/dist/.next/app-path-routes-manifest.json +1 -1
- package/dist/.next/build-manifest.json +2 -2
- package/dist/.next/prerender-manifest.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +7 -7
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js +4 -4
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/page.js +1 -1
- package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/prompts/page.js +1 -1
- package/dist/.next/server/app/(application)/prompts/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +1 -1
- package/dist/.next/server/app-paths-manifest.json +6 -6
- package/dist/.next/server/chunks/1025.js +1 -0
- package/dist/.next/server/chunks/2270.js +11 -48
- package/dist/.next/server/chunks/3434.js +1 -1
- package/dist/.next/server/chunks/3503.js +1 -0
- package/dist/.next/server/chunks/5084.js +1 -0
- package/dist/.next/server/chunks/5192.js +1 -1
- package/dist/.next/server/chunks/5485.js +1 -1
- package/dist/.next/server/chunks/5600.js +1 -1
- package/dist/.next/server/chunks/5974.js +1 -0
- package/dist/.next/server/chunks/6590.js +1 -1
- package/dist/.next/server/chunks/7471.js +1 -1
- package/dist/.next/server/chunks/8286.js +1 -1
- package/dist/.next/server/chunks/{3679.js → 9874.js} +5 -5
- package/dist/.next/server/middleware-manifest.json +5 -5
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js +2 -0
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js.map +1 -0
- package/dist/.next/static/chunks/{4811-316807e25b634f9f.js → 192-72d6868cd891ccc6.js} +8 -8
- package/dist/.next/static/chunks/192-72d6868cd891ccc6.js.map +1 -0
- package/dist/.next/static/chunks/1957-cf44b1d31a9c7d5c.js +2 -0
- package/dist/.next/static/chunks/1957-cf44b1d31a9c7d5c.js.map +1 -0
- package/dist/.next/static/chunks/342-d9c2d6ae9f9435cb.js +2 -0
- package/dist/.next/static/chunks/342-d9c2d6ae9f9435cb.js.map +1 -0
- package/dist/.next/static/chunks/552-39155a93c527ec6d.js +2 -0
- package/dist/.next/static/chunks/552-39155a93c527ec6d.js.map +1 -0
- package/dist/.next/static/chunks/6367-59655a85d75e19be.js +2 -0
- package/dist/.next/static/chunks/6367-59655a85d75e19be.js.map +1 -0
- package/dist/.next/static/chunks/6373-601400fab8a3bb55.js +2 -0
- package/dist/.next/static/chunks/6373-601400fab8a3bb55.js.map +1 -0
- package/dist/.next/static/chunks/8030-9c926ea4dfd3a54e.js +2 -0
- package/dist/.next/static/chunks/8030-9c926ea4dfd3a54e.js.map +1 -0
- package/dist/.next/static/chunks/{6805-792cc8008b165c07.js → 8293-0e69d89d2dac7111.js} +10 -10
- package/dist/.next/static/chunks/8293-0e69d89d2dac7111.js.map +1 -0
- package/dist/.next/static/chunks/9953-95900a236271a222.js +2 -0
- package/dist/.next/static/chunks/9953-95900a236271a222.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e4a4693953329671.js +2 -0
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e4a4693953329671.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-7edb1c7c850f982c.js +2 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-7edb1c7c850f982c.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-8d2b3995cacfd832.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-8d2b3995cacfd832.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js +2 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/cases/{page-a39fef7444581565.js → page-827f50c6d1f150d0.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/cases/{page-a39fef7444581565.js.map → page-827f50c6d1f150d0.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js +2 -0
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/prompts/page-2c500e9898447506.js +2 -0
- package/dist/.next/static/chunks/app/(application)/prompts/page-2c500e9898447506.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/workflows/{page-47dedb88cec600d5.js → page-e38f9456120dab69.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/workflows/page-e38f9456120dab69.js.map +1 -0
- package/dist/.next/static/css/6f8c5212af8ef284.css +4 -0
- package/dist/.next/static/css/6f8c5212af8ef284.css.map +1 -0
- package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
- package/package.json +1 -1
- package/dist/.next/server/chunks/2948.js +0 -1
- package/dist/.next/server/chunks/38.js +0 -1
- package/dist/.next/server/chunks/7958.js +0 -1
- package/dist/.next/server/chunks/8050.js +0 -1
- package/dist/.next/static/chunks/1685-9cacdee7e3f0942f.js +0 -2
- package/dist/.next/static/chunks/1685-9cacdee7e3f0942f.js.map +0 -1
- package/dist/.next/static/chunks/1957-39a01a3915f246ab.js +0 -2
- package/dist/.next/static/chunks/1957-39a01a3915f246ab.js.map +0 -1
- package/dist/.next/static/chunks/4811-316807e25b634f9f.js.map +0 -1
- package/dist/.next/static/chunks/5282-68f9880f1f951f44.js +0 -2
- package/dist/.next/static/chunks/5282-68f9880f1f951f44.js.map +0 -1
- package/dist/.next/static/chunks/6367-59cef3c74213925b.js +0 -2
- package/dist/.next/static/chunks/6367-59cef3c74213925b.js.map +0 -1
- package/dist/.next/static/chunks/6373-4c5dffaf4193621c.js +0 -2
- package/dist/.next/static/chunks/6373-4c5dffaf4193621c.js.map +0 -1
- package/dist/.next/static/chunks/6805-792cc8008b165c07.js.map +0 -1
- package/dist/.next/static/chunks/8030-c1b6be46253076cb.js +0 -2
- package/dist/.next/static/chunks/8030-c1b6be46253076cb.js.map +0 -1
- package/dist/.next/static/chunks/9621-f81c4d7c0ecf5a67.js +0 -2
- package/dist/.next/static/chunks/9621-f81c4d7c0ecf5a67.js.map +0 -1
- package/dist/.next/static/chunks/9953-dfb5fc0e5b74ec09.js +0 -2
- package/dist/.next/static/chunks/9953-dfb5fc0e5b74ec09.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-4e7e02768ed1a72a.js +0 -2
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-4e7e02768ed1a72a.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-38f845d5ccdad76b.js +0 -2
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-38f845d5ccdad76b.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-a391b8407f74e9b4.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-a391b8407f74e9b4.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-cf6f8d2bd4e9c819.js +0 -2
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-cf6f8d2bd4e9c819.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-bc859da58d8505f7.js +0 -2
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-bc859da58d8505f7.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/prompts/page-d2f36ff149385efd.js +0 -2
- package/dist/.next/static/chunks/app/(application)/prompts/page-d2f36ff149385efd.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/workflows/page-47dedb88cec600d5.js.map +0 -1
- package/dist/.next/static/css/c8c015815c72d053.css +0 -4
- package/dist/.next/static/css/c8c015815c72d053.css.map +0 -1
- /package/dist/.next/static/{GOwerAkBncYx0J8q1TqQb → ls-syPkq9-MWp-VWWDEZJ}/_buildManifest.js +0 -0
- /package/dist/.next/static/{GOwerAkBncYx0J8q1TqQb → ls-syPkq9-MWp-VWWDEZJ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/chunks/192-72d6868cd891ccc6.js","mappings":"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CA,iBACA,UACA,iBACA,WACA,kBACA,YACA,mBAEA,SACA,gBACA,UACA,iBAEA,YACA,mBACA,aACA,oBACA,UACA,iBAEA,UACA,iBACA,YACA,mBACA,mBACA,0BACA,mBACA,0BACA,YACA,mBACA,cACA,qBACA,UACA,iBACA,eACA,sBACA,mBACA,0BACA,cACA,qBACA,UACA,iBACA,SACA,gBACA,YACA,mBACA,aACA,oBACA,eACA,sBACA,WACA,kBACA,YACA,mBACA,YACA,mBACA,YACA,mBACA,eACA,sBACA,iBACA,wBACA,YACA,mBAEA,aACA,oBACA,UACA,iBACA,gBACA,uBACA,gBACA,uBACA,SACA,gBACA,YACA,mBACA,cACA,qBACA,aACA,oBACA,cACA,qBACA,aACA,oBACA,cACA,qBACA,SACA,gBACA,cACA,qBACA,eACA,eACA,cACA,qBACA,aACA,oBACA,cACA,qBACA,YACA,mBAEA,WACA,kBAEA,gBACA,uBACA,aACA,oBACA,cACA,qBACA,eACA,sBAEA,gBACA,uBACA,gBACA,uBACA,cACA,qBACA,kBACA,yBACA,iBACA,wBACA,iBACA,wBACA,gBACA,uBACA,eACA,sBACA,sBACA,6BACA,uBACA,8BAEA,WACA,kBAEA,UACA,iBAEA,mBACA,0BACA,iBACA,wBACA,uBACA,8BAEA,kBACA,yBACA,CACAC,GAAA,iBAKA,IAAAC,GAJkB,GAElBpuF,OAAAm/B,WAAA,CAAAn/B,OAAAw9B,OAAA,CAAA7f,GAAAwI,MAAA,GAAAlT,EAAA,GAAAk7E,GAAAp+E,IAAA,CAAAkD,IAAAi7E,GAAA1lF,QAAA,CAAAyK,IElOA,OAAAo7E,WAAwBC,GAAAC,SAAS,CACjCrrC,SAAA,CACAne,MAAA,CACA+W,mBAAA,CACA,KAAA0yC,aAAA,EACA,CACAtyC,mBAAAuyC,CAAA,EACA,GAAAA,EAAAjhE,IAAA,QAAA7P,KAAA,CAAA6P,IAAA,CACA,KAAAkhE,eAAA,CAAAD,GACA,KAAAD,aAAA,QAEA,GAAiBG,SDlB8BhxE,CAAA,CAAA8wE,CAAA,EAG/C,IAAAG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","sources":["webpack://_N_E/./node_modules/@transloadit/prettier-bytes/dist/prettierBytes.js","webpack://_N_E/./node_modules/base64-js/index.js","webpack://_N_E/./node_modules/buffer/index.js","webpack://_N_E/./node_modules/ieee754/index.js","webpack://_N_E/./node_modules/lodash/_Symbol.js","webpack://_N_E/./node_modules/lodash/_baseGetTag.js","webpack://_N_E/./node_modules/lodash/_baseTrim.js","webpack://_N_E/./node_modules/lodash/_freeGlobal.js","webpack://_N_E/./node_modules/lodash/_getRawTag.js","webpack://_N_E/./node_modules/lodash/_objectToString.js","webpack://_N_E/./node_modules/lodash/_root.js","webpack://_N_E/./node_modules/lodash/_trimmedEndIndex.js","webpack://_N_E/./node_modules/lodash/debounce.js","webpack://_N_E/./node_modules/lodash/isObject.js","webpack://_N_E/./node_modules/lodash/isObjectLike.js","webpack://_N_E/./node_modules/lodash/isSymbol.js","webpack://_N_E/./node_modules/lodash/now.js","webpack://_N_E/./node_modules/lodash/throttle.js","webpack://_N_E/./node_modules/lodash/toNumber.js","webpack://_N_E/../../../src/icons/chevron-left.ts","webpack://_N_E/../../../src/icons/download.ts","webpack://_N_E/../../../src/icons/file-plus.ts","webpack://_N_E/../../../src/icons/file-text.ts","webpack://_N_E/../../../src/icons/file-warning.ts","webpack://_N_E/../../../src/icons/file.ts","webpack://_N_E/../../../src/icons/image.ts","webpack://_N_E/../../../src/icons/loader.ts","webpack://_N_E/../../../src/icons/plus.ts","webpack://_N_E/./node_modules/mime-match/index.js","webpack://_N_E/./node_modules/namespace-emitter/index.js","webpack://_N_E/./node_modules/p-queue/node_modules/eventemitter3/index.js","webpack://_N_E/./node_modules/retry/index.js","webpack://_N_E/./node_modules/retry/lib/retry.js","webpack://_N_E/./node_modules/retry/lib/retry_operation.js","webpack://_N_E/./node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js","webpack://_N_E/./node_modules/use-sync-external-store/with-selector.js","webpack://_N_E/./node_modules/wildcard/index.js","webpack://_N_E/./node_modules/@uppy/core/dist/style.min.css","webpack://_N_E/./node_modules/@uppy/dashboard/dist/style.min.css","webpack://_N_E/./node_modules/classnames/index.js","webpack://_N_E/./node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/primitive/dist/index.mjs","webpack://_N_E/../src/presence.tsx","webpack://_N_E/../src/use-state-machine.tsx","webpack://_N_E/../src/collapsible.tsx","webpack://_N_E/./node_modules/@tanstack/query-core/build/modern/mutation.js","webpack://_N_E/./node_modules/@tanstack/query-core/build/modern/mutationObserver.js","webpack://_N_E/../../src/useMutation.ts","webpack://_N_E/./node_modules/@uppy/companion-client/lib/getAllowedHosts.js","webpack://_N_E/./node_modules/@uppy/utils/lib/hasProperty.js","webpack://_N_E/./node_modules/@uppy/utils/lib/ErrorWithCause.js","webpack://_N_E/./node_modules/@uppy/utils/lib/NetworkError.js","webpack://_N_E/./node_modules/@uppy/utils/lib/fetchWithNetworkError.js","webpack://_N_E/./node_modules/@uppy/utils/lib/getSocketHost.js","webpack://_N_E/./node_modules/@uppy/utils/lib/UserFacingApiError.js","webpack://_N_E/./node_modules/is-network-error/index.js","webpack://_N_E/./node_modules/p-retry/index.js","webpack://_N_E/./node_modules/@uppy/companion-client/lib/AuthError.js","webpack://_N_E/./node_modules/@uppy/companion-client/lib/RequestClient.js","webpack://_N_E/./node_modules/@uppy/companion-client/lib/Provider.js","webpack://_N_E/./node_modules/@uppy/companion-client/lib/SearchProvider.js","webpack://_N_E/./node_modules/@uppy/companion-client/lib/index.js","webpack://_N_E/./node_modules/@uppy/core/lib/EventManager.js","webpack://_N_E/./node_modules/@uppy/utils/lib/AbortController.js","webpack://_N_E/./node_modules/@uppy/utils/lib/fileFilters.js","webpack://_N_E/./node_modules/@uppy/utils/lib/getAllowedMetaFields.js","webpack://_N_E/./node_modules/@uppy/utils/lib/RateLimitedQueue.js","webpack://_N_E/./node_modules/@uppy/aws-s3/lib/createSignedURL.js","webpack://_N_E/./node_modules/@uppy/aws-s3/lib/MultipartUploader.js","webpack://_N_E/./node_modules/@uppy/aws-s3/lib/utils.js","webpack://_N_E/./node_modules/@uppy/aws-s3/lib/HTTPCommunicationQueue.js","webpack://_N_E/./node_modules/@uppy/aws-s3/lib/index.js","webpack://_N_E/./node_modules/@uppy/core/lib/BasePlugin.js","webpack://_N_E/./node_modules/@uppy/store-default/lib/index.js","webpack://_N_E/./node_modules/@uppy/core/node_modules/nanoid/non-secure/index.js","webpack://_N_E/./node_modules/@uppy/core/lib/getFileName.js","webpack://_N_E/./node_modules/@uppy/core/lib/locale.js","webpack://_N_E/./node_modules/@uppy/utils/lib/getTimeStamp.js","webpack://_N_E/./node_modules/@uppy/core/lib/loggers.js","webpack://_N_E/./node_modules/@uppy/core/lib/Restricter.js","webpack://_N_E/./node_modules/@uppy/core/lib/supportsUploadProgress.js","webpack://_N_E/./node_modules/@uppy/core/lib/Uppy.js","webpack://_N_E/./node_modules/@uppy/utils/lib/isDOMElement.js","webpack://_N_E/./node_modules/@uppy/utils/lib/findDOMElement.js","webpack://_N_E/./node_modules/@uppy/utils/lib/getTextDirection.js","webpack://_N_E/./node_modules/preact/dist/preact.module.js","webpack://_N_E/./node_modules/preact/hooks/dist/hooks.module.js","webpack://_N_E/./node_modules/preact/compat/dist/compat.module.js","webpack://_N_E/./node_modules/@uppy/core/lib/UIPlugin.js","webpack://_N_E/./node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","webpack://_N_E/./node_modules/@uppy/informer/lib/FadeIn.js","webpack://_N_E/./node_modules/@uppy/informer/lib/TransitionGroup.js","webpack://_N_E/./node_modules/@uppy/informer/lib/Informer.js","webpack://_N_E/./node_modules/@uppy/informer/lib/index.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/ProviderView/AuthView.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/GooglePicker/googlePicker.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/GooglePicker/icons.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/GooglePicker/GooglePickerView.js","webpack://_N_E/./node_modules/@uppy/utils/lib/remoteFileObjToLocal.js","webpack://_N_E/./node_modules/@uppy/utils/lib/VirtualList.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/Item/components/ItemIcon.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/Item/components/GridItem.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/Item/components/ListItem.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/Item/index.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/Browser.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/getNumberOfSelectedFiles.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/FooterActions.js","webpack://_N_E/./node_modules/@uppy/provider-views/node_modules/nanoid/non-secure/index.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/SearchInput.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/getTagFile.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/addFiles.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/getClickedRange.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/handleError.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/getBreadcrumbs.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/getCheckedFilesWithPaths.js","webpack://_N_E/./node_modules/p-queue/node_modules/eventemitter3/index.mjs","webpack://_N_E/./node_modules/p-timeout/index.js","webpack://_N_E/./node_modules/p-queue/dist/lower-bound.js","webpack://_N_E/./node_modules/p-queue/dist/priority-queue.js","webpack://_N_E/./node_modules/p-queue/dist/index.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/shallowClone.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/afterFill.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/afterOpenFolder.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/afterScrollFolder.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/afterToggleCheckbox.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/index.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/utils/shouldHandleScroll.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/Breadcrumbs.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/ProviderView/User.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/ProviderView/Header.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/ProviderView/ProviderView.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/ProviderView/index.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/SearchProviderView/SearchProviderView.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/SearchProviderView/index.js","webpack://_N_E/./node_modules/@uppy/provider-views/lib/index.js","webpack://_N_E/./node_modules/@uppy/utils/lib/emaFilter.js","webpack://_N_E/./node_modules/@uppy/status-bar/lib/locale.js","webpack://_N_E/./node_modules/@uppy/status-bar/lib/StatusBarStates.js","webpack://_N_E/./node_modules/@uppy/utils/lib/secondsToTime.js","webpack://_N_E/./node_modules/@uppy/utils/lib/prettyETA.js","webpack://_N_E/./node_modules/@uppy/status-bar/lib/Components.js","webpack://_N_E/./node_modules/@uppy/status-bar/lib/calculateProcessingProgress.js","webpack://_N_E/./node_modules/@uppy/status-bar/lib/StatusBarUI.js","webpack://_N_E/./node_modules/@uppy/status-bar/lib/StatusBar.js","webpack://_N_E/./node_modules/@uppy/status-bar/lib/index.js","webpack://_N_E/./node_modules/@uppy/utils/lib/dataURItoBlob.js","webpack://_N_E/./node_modules/@uppy/utils/lib/isObjectURL.js","webpack://_N_E/./node_modules/@uppy/utils/lib/isPreviewSupported.js","webpack://_N_E/./node_modules/exifr/dist/mini.esm.mjs","webpack://_N_E/./node_modules/@uppy/thumbnail-generator/lib/locale.js","webpack://_N_E/./node_modules/@uppy/thumbnail-generator/lib/index.js","webpack://_N_E/./node_modules/@uppy/utils/lib/findAllDOMElements.js","webpack://_N_E/./node_modules/@uppy/utils/lib/toArray.js","webpack://_N_E/./node_modules/@uppy/utils/lib/getDroppedFiles/utils/fallbackApi.js","webpack://_N_E/./node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getFilesAndDirectoriesFromDirectory.js","webpack://_N_E/./node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/index.js","webpack://_N_E/./node_modules/@uppy/utils/lib/getDroppedFiles/index.js","webpack://_N_E/./node_modules/@uppy/dashboard/node_modules/nanoid/non-secure/index.js","webpack://_N_E/./node_modules/@uppy/utils/lib/isDragDropSupported.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/AddFiles.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/AddFilesPanel.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/EditorPanel.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/utils/getFileTypeIcon.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/utils/ignoreEvent.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/FilePreview.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/FileCard/RenderMetaFields.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/FileCard/index.js","webpack://_N_E/./node_modules/shallow-equal/dist/index.modern.mjs","webpack://_N_E/./node_modules/@uppy/dashboard/lib/utils/copyToClipboard.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/FileItem/Buttons/index.js","webpack://_N_E/./node_modules/@uppy/utils/lib/truncateString.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/FileItem/MetaErrorMessage.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/FileItem/FileInfo/index.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/FileItem/FilePreviewAndLink/index.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/FileItem/FileProgress/index.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/FileItem/index.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/FileList.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/PickerPanelContent.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/PickerPanelTopBar.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/Slide.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/components/Dashboard.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/locale.js","webpack://_N_E/./node_modules/@uppy/utils/lib/FOCUSABLE_ELEMENTS.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/utils/getActiveOverlayEl.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/utils/createSuperFocus.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/utils/trapFocus.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/Dashboard.js","webpack://_N_E/./node_modules/@uppy/dashboard/lib/index.js","webpack://_N_E/./node_modules/@uppy/react/lib/getHTMLProps.js","webpack://_N_E/./node_modules/@uppy/react/lib/nonHtmlPropsHaveChanged.js","webpack://_N_E/./node_modules/@uppy/react/lib/Dashboard.js","webpack://_N_E/./node_modules/@uppy/react/lib/DashboardModal.js","webpack://_N_E/./node_modules/@uppy/drag-drop/lib/locale.js","webpack://_N_E/./node_modules/@uppy/drag-drop/lib/DragDrop.js","webpack://_N_E/./node_modules/@uppy/drag-drop/lib/index.js","webpack://_N_E/./node_modules/@uppy/react/lib/DragDrop.js","webpack://_N_E/./node_modules/@uppy/file-input/lib/locale.js","webpack://_N_E/./node_modules/@uppy/file-input/lib/FileInput.js","webpack://_N_E/./node_modules/@uppy/file-input/lib/index.js","webpack://_N_E/./node_modules/@uppy/react/lib/FileInput.js","webpack://_N_E/./node_modules/@uppy/components/lib/Dropzone.js","webpack://_N_E/./node_modules/@uppy/components/lib/FilesGrid.js","webpack://_N_E/./node_modules/@uppy/components/lib/FilesList.js","webpack://_N_E/./node_modules/dequal/lite/index.mjs","webpack://_N_E/./node_modules/@uppy/components/lib/hooks/remote-source.js","webpack://_N_E/./node_modules/@uppy/components/lib/ProviderIcon.js","webpack://_N_E/./node_modules/@uppy/components/lib/Thumbnail.js","webpack://_N_E/./node_modules/@uppy/components/lib/UploadButton.js","webpack://_N_E/./node_modules/@uppy/components/lib/index.js","webpack://_N_E/./node_modules/@uppy/react/lib/headless/UppyContextProvider.js","webpack://_N_E/./node_modules/@uppy/react/lib/headless/generated/Dropzone.js","webpack://_N_E/./node_modules/@uppy/react/lib/headless/generated/FilesGrid.js","webpack://_N_E/./node_modules/@uppy/react/lib/headless/generated/FilesList.js","webpack://_N_E/./node_modules/@uppy/react/lib/headless/generated/ProviderIcon.js","webpack://_N_E/./node_modules/@uppy/react/lib/headless/generated/Thumbnail.js","webpack://_N_E/./node_modules/@uppy/react/lib/headless/generated/UploadButton.js","webpack://_N_E/./node_modules/@uppy/react/lib/headless/generated/index.js","webpack://_N_E/./node_modules/@uppy/progress-bar/lib/ProgressBar.js","webpack://_N_E/./node_modules/@uppy/progress-bar/lib/index.js","webpack://_N_E/./node_modules/@uppy/react/lib/ProgressBar.js","webpack://_N_E/./node_modules/@uppy/react/lib/StatusBar.js","webpack://_N_E/./node_modules/@uppy/react/lib/useDropzone.js","webpack://_N_E/./node_modules/@uppy/react/lib/useFileInput.js","webpack://_N_E/./node_modules/@uppy/react/lib/useRemoteSource.js","webpack://_N_E/./node_modules/@uppy/react/lib/useScreenCapture.js","webpack://_N_E/./node_modules/@uppy/react/lib/useUppyEvent.js","webpack://_N_E/./node_modules/@uppy/react/lib/useUppyState.js","webpack://_N_E/./node_modules/@uppy/react/lib/useWebcam.js","webpack://_N_E/./node_modules/@uppy/react/lib/index.js","webpack://_N_E/./node_modules/@uppy/utils/lib/Translator.js","webpack://_N_E/./node_modules/@uppy/utils/lib/generateFileID.js","webpack://_N_E/./node_modules/@uppy/utils/lib/getFileNameAndExtension.js","webpack://_N_E/./node_modules/@uppy/utils/lib/mimeTypes.js","webpack://_N_E/./node_modules/@uppy/utils/lib/getFileType.js"],"sourcesContent":["\"use strict\";\nmodule.exports = function prettierBytes(input) {\n if (typeof input !== 'number' || Number.isNaN(input)) {\n throw new TypeError(`Expected a number, got ${typeof input}`);\n }\n const neg = input < 0;\n let num = Math.abs(input);\n if (neg) {\n num = -num;\n }\n if (num === 0) {\n return '0 B';\n }\n const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1);\n const value = Number(num / 1024 ** exponent);\n const unit = units[exponent];\n return `${value >= 10 || value % 1 === 0 ? Math.round(value) : value.toFixed(1)} ${unit}`;\n};\n//# sourceMappingURL=prettierBytes.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('ChevronLeft', [\n ['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }],\n]);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Download\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/download\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Download = createLucideIcon('Download', [\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4', key: 'ih7n3h' }],\n ['polyline', { points: '7 10 12 15 17 10', key: '2ggqvy' }],\n ['line', { x1: '12', x2: '12', y1: '15', y2: '3', key: '1vk2je' }],\n]);\n\nexport default Download;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FilePlus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FilePlus = createLucideIcon('FilePlus', [\n [\n 'path',\n { d: 'M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z', key: '1nnpy2' },\n ],\n ['polyline', { points: '14 2 14 8 20 8', key: '1ew0cm' }],\n ['line', { x1: '12', x2: '12', y1: '18', y2: '12', key: '1tsf04' }],\n ['line', { x1: '9', x2: '15', y1: '15', y2: '15', key: '110plj' }],\n]);\n\nexport default FilePlus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('FileText', [\n [\n 'path',\n { d: 'M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z', key: '1nnpy2' },\n ],\n ['polyline', { points: '14 2 14 8 20 8', key: '1ew0cm' }],\n ['line', { x1: '16', x2: '8', y1: '13', y2: '13', key: '14keom' }],\n ['line', { x1: '16', x2: '8', y1: '17', y2: '17', key: '17nazh' }],\n ['line', { x1: '10', x2: '8', y1: '9', y2: '9', key: '1a5vjj' }],\n]);\n\nexport default FileText;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FileWarning\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-warning\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileWarning = createLucideIcon('FileWarning', [\n [\n 'path',\n { d: 'M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z', key: '1nnpy2' },\n ],\n ['path', { d: 'M12 9v4', key: 'juzpu7' }],\n ['path', { d: 'M12 17h.01', key: 'p32p05' }],\n]);\n\nexport default FileWarning;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name File\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst File = createLucideIcon('File', [\n [\n 'path',\n { d: 'M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z', key: '1nnpy2' },\n ],\n ['polyline', { points: '14 2 14 8 20 8', key: '1ew0cm' }],\n]);\n\nexport default File;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Image\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/image\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Image = createLucideIcon('Image', [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n ['circle', { cx: '9', cy: '9', r: '2', key: 'af1f0g' }],\n ['path', { d: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21', key: '1xmnt7' }],\n]);\n\nexport default Image;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Loader\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/loader\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Loader = createLucideIcon('Loader', [\n ['line', { x1: '12', x2: '12', y1: '2', y2: '6', key: 'gza1u7' }],\n ['line', { x1: '12', x2: '12', y1: '18', y2: '22', key: '1qhbu9' }],\n ['line', { x1: '4.93', x2: '7.76', y1: '4.93', y2: '7.76', key: 'xae44r' }],\n ['line', { x1: '16.24', x2: '19.07', y1: '16.24', y2: '19.07', key: 'bxnmvf' }],\n ['line', { x1: '2', x2: '6', y1: '12', y2: '12', key: '89khin' }],\n ['line', { x1: '18', x2: '22', y1: '12', y2: '12', key: 'pb8tfm' }],\n ['line', { x1: '4.93', x2: '7.76', y1: '19.07', y2: '16.24', key: '1uxjnu' }],\n ['line', { x1: '16.24', x2: '19.07', y1: '7.76', y2: '4.93', key: '6duxfx' }],\n]);\n\nexport default Loader;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('Plus', [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n]);\n\nexport default Plus;\n","var wildcard = require('wildcard');\nvar reMimePartSplit = /[\\/\\+\\.]/;\n\n/**\n # mime-match\n\n A simple function to checker whether a target mime type matches a mime-type\n pattern (e.g. image/jpeg matches image/jpeg OR image/*).\n\n ## Example Usage\n\n <<< example.js\n\n**/\nmodule.exports = function(target, pattern) {\n function test(pattern) {\n var result = wildcard(pattern, target, reMimePartSplit);\n\n // ensure that we have a valid mime type (should have two parts)\n return result && result.length >= 2;\n }\n\n return pattern ? test(pattern.split(';')[0]) : test;\n};\n","/**\n* Create an event emitter with namespaces\n* @name createNamespaceEmitter\n* @example\n* var emitter = require('./index')()\n*\n* emitter.on('*', function () {\n* console.log('all events emitted', this.event)\n* })\n*\n* emitter.on('example', function () {\n* console.log('example event emitted')\n* })\n*/\nmodule.exports = function createNamespaceEmitter () {\n var emitter = {}\n var _fns = emitter._fns = {}\n\n /**\n * Emit an event. Optionally namespace the event. Handlers are fired in the order in which they were added with exact matches taking precedence. Separate the namespace and event with a `:`\n * @name emit\n * @param {String} event – the name of the event, with optional namespace\n * @param {...*} data – up to 6 arguments that are passed to the event listener\n * @example\n * emitter.emit('example')\n * emitter.emit('demo:test')\n * emitter.emit('data', { example: true}, 'a string', 1)\n */\n emitter.emit = function emit (event, arg1, arg2, arg3, arg4, arg5, arg6) {\n var toEmit = getListeners(event)\n\n if (toEmit.length) {\n emitAll(event, toEmit, [arg1, arg2, arg3, arg4, arg5, arg6])\n }\n }\n\n /**\n * Create en event listener.\n * @name on\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.on('example', function () {})\n * emitter.on('demo', function () {})\n */\n emitter.on = function on (event, fn) {\n if (!_fns[event]) {\n _fns[event] = []\n }\n\n _fns[event].push(fn)\n }\n\n /**\n * Create en event listener that fires once.\n * @name once\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.once('example', function () {})\n * emitter.once('demo', function () {})\n */\n emitter.once = function once (event, fn) {\n function one () {\n fn.apply(this, arguments)\n emitter.off(event, one)\n }\n this.on(event, one)\n }\n\n /**\n * Stop listening to an event. Stop all listeners on an event by only passing the event name. Stop a single listener by passing that event handler as a callback.\n * You must be explicit about what will be unsubscribed: `emitter.off('demo')` will unsubscribe an `emitter.on('demo')` listener,\n * `emitter.off('demo:example')` will unsubscribe an `emitter.on('demo:example')` listener\n * @name off\n * @param {String} event\n * @param {Function} [fn] – the specific handler\n * @example\n * emitter.off('example')\n * emitter.off('demo', function () {})\n */\n emitter.off = function off (event, fn) {\n var keep = []\n\n if (event && fn) {\n var fns = this._fns[event]\n var i = 0\n var l = fns ? fns.length : 0\n\n for (i; i < l; i++) {\n if (fns[i] !== fn) {\n keep.push(fns[i])\n }\n }\n }\n\n keep.length ? this._fns[event] = keep : delete this._fns[event]\n }\n\n function getListeners (e) {\n var out = _fns[e] ? _fns[e] : []\n var idx = e.indexOf(':')\n var args = (idx === -1) ? [e] : [e.substring(0, idx), e.substring(idx + 1)]\n\n var keys = Object.keys(_fns)\n var i = 0\n var l = keys.length\n\n for (i; i < l; i++) {\n var key = keys[i]\n if (key === '*') {\n out = out.concat(_fns[key])\n }\n\n if (args.length === 2 && args[0] === key) {\n out = out.concat(_fns[key])\n break\n }\n }\n\n return out\n }\n\n function emitAll (e, fns, args) {\n var i = 0\n var l = fns.length\n\n for (i; i < l; i++) {\n if (!fns[i]) break\n fns[i].event = e\n fns[i].apply(fns[i], args)\n }\n }\n\n return emitter\n}\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","module.exports = require('./lib/retry');","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && (options.forever || options.retries === Infinity),\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n this._timer = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts.slice(0);\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.push(err);\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(0, this._errors.length - 1);\n timeout = this._cachedTimeouts.slice(-1);\n } else {\n return false;\n }\n }\n\n var self = this;\n this._timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n this._timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","/**\n * @license React\n * use-sync-external-store-with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = React.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/use-sync-external-store-with-selector.production.js');\n} else {\n module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","/* jshint node: true */\n'use strict';\n\n/**\n # wildcard\n\n Very simple wildcard matching, which is designed to provide the same\n functionality that is found in the\n [eve](https://github.com/adobe-webplatform/eve) eventing library.\n\n ## Usage\n\n It works with strings:\n\n <<< examples/strings.js\n\n Arrays:\n\n <<< examples/arrays.js\n\n Objects (matching against keys):\n\n <<< examples/objects.js\n\n While the library works in Node, if you are are looking for file-based\n wildcard matching then you should have a look at:\n\n <https://github.com/isaacs/node-glob>\n**/\n\nfunction WildcardMatcher(text, separator) {\n this.text = text = text || '';\n this.hasWild = ~text.indexOf('*');\n this.separator = separator;\n this.parts = text.split(separator);\n}\n\nWildcardMatcher.prototype.match = function(input) {\n var matches = true;\n var parts = this.parts;\n var ii;\n var partsCount = parts.length;\n var testParts;\n\n if (typeof input == 'string' || input instanceof String) {\n if (!this.hasWild && this.text != input) {\n matches = false;\n } else {\n testParts = (input || '').split(this.separator);\n for (ii = 0; matches && ii < partsCount; ii++) {\n if (parts[ii] === '*') {\n continue;\n } else if (ii < testParts.length) {\n matches = parts[ii] === testParts[ii];\n } else {\n matches = false;\n }\n }\n\n // If matches, then return the component parts\n matches = matches && testParts;\n }\n }\n else if (typeof input.splice == 'function') {\n matches = [];\n\n for (ii = input.length; ii--; ) {\n if (this.match(input[ii])) {\n matches[matches.length] = input[ii];\n }\n }\n }\n else if (typeof input == 'object') {\n matches = {};\n\n for (var key in input) {\n if (this.match(key)) {\n matches[key] = input[key];\n }\n }\n }\n\n return matches;\n};\n\nmodule.exports = function(text, test, separator) {\n var matcher = new WildcardMatcher(text, separator || /[\\/\\.]/);\n if (typeof test != 'undefined') {\n return matcher.match(test);\n }\n\n return matcher;\n};\n","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './use-state-machine';\n\ninterface PresenceProps {\n children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n present: boolean;\n}\n\nconst Presence: React.FC<PresenceProps> = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n\n const child = (\n typeof children === 'function'\n ? children({ present: presence.isPresent })\n : React.Children.only(children)\n ) as React.ReactElement<{ ref?: React.Ref<HTMLElement> }>;\n\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n const [node, setNode] = React.useState<HTMLElement>();\n const stylesRef = React.useRef<CSSStyleDeclaration | null>(null);\n const prevPresentRef = React.useRef(present);\n const prevAnimationNameRef = React.useRef<string>('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended',\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted',\n },\n unmounted: {\n MOUNT: 'mounted',\n },\n });\n\n React.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [state]);\n\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n\n if (present) {\n send('MOUNT');\n } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n } else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n if (wasPresent && isAnimating) {\n send('ANIMATION_OUT');\n } else {\n send('UNMOUNT');\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n if (node) {\n let timeoutId: number;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n // The event.animationName is unescaped for CSS syntax,\n // so we need to escape it to compare with the animationName computed from the style.\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n // With React 18 concurrency this update is applied a frame after the\n // animation ends, creating a flash of visible content. By setting the\n // animation fill mode to \"forwards\", we force the node to keep the\n // styles of the last keyframe, removing the flash.\n //\n // Previously we flushed the update via ReactDom.flushSync, but with\n // exit animations this resulted in the node being removed from the\n // DOM before the synthetic animationEnd event was dispatched, meaning\n // user-provided event handlers would not be called.\n // https://github.com/radix-ui/primitives/pull/1849\n send('ANIMATION_END');\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = 'forwards';\n // Reset the style after the node had time to unmount (for cases\n // where the component chooses not to unmount). Doing this any\n // sooner than `setTimeout` (e.g. with `requestAnimationFrame`)\n // still causes a flash.\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === 'forwards') {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener('animationstart', handleAnimationStart);\n node.addEventListener('animationcancel', handleAnimationEnd);\n node.addEventListener('animationend', handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener('animationstart', handleAnimationStart);\n node.removeEventListener('animationcancel', handleAnimationEnd);\n node.removeEventListener('animationend', handleAnimationEnd);\n };\n } else {\n // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send('ANIMATION_END');\n }\n }, [node, send]);\n\n return {\n isPresent: ['mounted', 'unmountSuspended'].includes(state),\n ref: React.useCallback((node: HTMLElement) => {\n stylesRef.current = node ? getComputedStyle(node) : null;\n setNode(node);\n }, []),\n };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles: CSSStyleDeclaration | null) {\n return styles?.animationName || 'none';\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement<{ ref?: React.Ref<unknown> }>) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n\n // Not DEV\n return element.props.ref || (element as any).ref;\n}\n\nconst Root = Presence;\n\nexport {\n Presence,\n //\n Root,\n};\nexport type { PresenceProps };\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine<M>(\n initialState: MachineState<M>,\n machine: M & Machine<MachineState<M>>\n) {\n return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Presence } from '@radix-ui/react-presence';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Collapsible\n * -----------------------------------------------------------------------------------------------*/\n\nconst COLLAPSIBLE_NAME = 'Collapsible';\n\ntype ScopedProps<P> = P & { __scopeCollapsible?: Scope };\nconst [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\n\ntype CollapsibleContextValue = {\n contentId: string;\n disabled?: boolean;\n open: boolean;\n onOpenToggle(): void;\n};\n\nconst [CollapsibleProvider, useCollapsibleContext] =\n createCollapsibleContext<CollapsibleContextValue>(COLLAPSIBLE_NAME);\n\ntype CollapsibleElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface CollapsibleProps extends PrimitiveDivProps {\n defaultOpen?: boolean;\n open?: boolean;\n disabled?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nconst Collapsible = React.forwardRef<CollapsibleElement, CollapsibleProps>(\n (props: ScopedProps<CollapsibleProps>, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: COLLAPSIBLE_NAME,\n });\n\n return (\n <CollapsibleProvider\n scope={__scopeCollapsible}\n disabled={disabled}\n contentId={useId()}\n open={open}\n onOpenToggle={React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}\n >\n <Primitive.div\n data-state={getState(open)}\n data-disabled={disabled ? '' : undefined}\n {...collapsibleProps}\n ref={forwardedRef}\n />\n </CollapsibleProvider>\n );\n }\n);\n\nCollapsible.displayName = COLLAPSIBLE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CollapsibleTrigger';\n\ntype CollapsibleTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface CollapsibleTriggerProps extends PrimitiveButtonProps {}\n\nconst CollapsibleTrigger = React.forwardRef<CollapsibleTriggerElement, CollapsibleTriggerProps>(\n (props: ScopedProps<CollapsibleTriggerProps>, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return (\n <Primitive.button\n type=\"button\"\n aria-controls={context.contentId}\n aria-expanded={context.open || false}\n data-state={getState(context.open)}\n data-disabled={context.disabled ? '' : undefined}\n disabled={context.disabled}\n {...triggerProps}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, context.onOpenToggle)}\n />\n );\n }\n);\n\nCollapsibleTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'CollapsibleContent';\n\ntype CollapsibleContentElement = CollapsibleContentImplElement;\ninterface CollapsibleContentProps extends Omit<CollapsibleContentImplProps, 'present'> {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CollapsibleContent = React.forwardRef<CollapsibleContentElement, CollapsibleContentProps>(\n (props: ScopedProps<CollapsibleContentProps>, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return (\n <Presence present={forceMount || context.open}>\n {({ present }) => (\n <CollapsibleContentImpl {...contentProps} ref={forwardedRef} present={present} />\n )}\n </Presence>\n );\n }\n);\n\nCollapsibleContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype CollapsibleContentImplElement = React.ComponentRef<typeof Primitive.div>;\ninterface CollapsibleContentImplProps extends PrimitiveDivProps {\n present: boolean;\n}\n\nconst CollapsibleContentImpl = React.forwardRef<\n CollapsibleContentImplElement,\n CollapsibleContentImplProps\n>((props: ScopedProps<CollapsibleContentImplProps>, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef<CollapsibleContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef<number | undefined>(0);\n const height = heightRef.current;\n const widthRef = React.useRef<number | undefined>(0);\n const width = widthRef.current;\n // when opening we want it to immediately open to retrieve dimensions\n // when closing we delay `present` to retrieve dimensions before closing\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef<Record<string, string>>(undefined);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName,\n };\n // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none';\n\n // get width and height from full dimensions\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n\n // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration!;\n node.style.animationName = originalStylesRef.current.animationName!;\n }\n\n setIsPresent(present);\n }\n /**\n * depends on `context.open` because it will change to `false`\n * when a close is triggered but `present` will be `false` on\n * animation end (so when close finishes). This allows us to\n * retrieve the dimensions *before* closing.\n */\n }, [context.open, present]);\n\n return (\n <Primitive.div\n data-state={getState(context.open)}\n data-disabled={context.disabled ? '' : undefined}\n id={context.contentId}\n hidden={!isOpen}\n {...contentProps}\n ref={composedRefs}\n style={{\n [`--radix-collapsible-content-height` as any]: height ? `${height}px` : undefined,\n [`--radix-collapsible-content-width` as any]: width ? `${width}px` : undefined,\n ...props.style,\n }}\n >\n {isOpen && children}\n </Primitive.div>\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open?: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst Root = Collapsible;\nconst Trigger = CollapsibleTrigger;\nconst Content = CollapsibleContent;\n\nexport {\n createCollapsibleScope,\n //\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n //\n Root,\n Trigger,\n Content,\n};\nexport type { CollapsibleProps, CollapsibleTriggerProps, CollapsibleContentProps };\n","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #observers;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\n this.mutationId = config.mutationId;\n this.#mutationCache = config.mutationCache;\n this.#observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = options;\n this.updateGcTime(this.options.gcTime);\n }\n get meta() {\n return this.options.meta;\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n this.scheduleGc();\n this.#mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === \"pending\") {\n this.scheduleGc();\n } else {\n this.#mutationCache.remove(this);\n }\n }\n }\n continue() {\n return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables);\n }\n async execute(variables) {\n const onContinue = () => {\n this.#dispatch({ type: \"continue\" });\n };\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error(\"No mutationFn found\"));\n }\n return this.options.mutationFn(variables);\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue,\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this)\n });\n const restored = this.state.status === \"pending\";\n const isPaused = !this.#retryer.canStart();\n try {\n if (restored) {\n onContinue();\n } else {\n this.#dispatch({ type: \"pending\", variables, isPaused });\n await this.#mutationCache.config.onMutate?.(\n variables,\n this\n );\n const context = await this.options.onMutate?.(variables);\n if (context !== this.state.context) {\n this.#dispatch({\n type: \"pending\",\n context,\n variables,\n isPaused\n });\n }\n }\n const data = await this.#retryer.start();\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this\n );\n await this.options.onSuccess?.(data, variables, this.state.context);\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(data, null, variables, this.state.context);\n this.#dispatch({ type: \"success\", data });\n return data;\n } catch (error) {\n try {\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this\n );\n await this.options.onError?.(\n error,\n variables,\n this.state.context\n );\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this\n );\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context\n );\n throw error;\n } finally {\n this.#dispatch({ type: \"error\", error });\n }\n } finally {\n this.#mutationCache.runNext(this);\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"pending\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: \"pending\",\n variables: action.variables,\n submittedAt: Date.now()\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.#mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n};\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0,\n submittedAt: 0\n };\n}\nexport {\n Mutation,\n getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n #client;\n #currentResult = void 0;\n #currentMutation;\n #mutateOptions;\n constructor(client, options) {\n super();\n this.#client = client;\n this.setOptions(options);\n this.bindMethods();\n this.#updateResult();\n }\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n this.options = this.#client.defaultMutationOptions(options);\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: \"observerOptionsUpdated\",\n mutation: this.#currentMutation,\n observer: this\n });\n }\n if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n this.reset();\n } else if (this.#currentMutation?.state.status === \"pending\") {\n this.#currentMutation.setOptions(this.options);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this);\n }\n }\n onMutationUpdate(action) {\n this.#updateResult();\n this.#notify(action);\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n reset() {\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = void 0;\n this.#updateResult();\n this.#notify();\n }\n mutate(variables, options) {\n this.#mutateOptions = options;\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n this.#currentMutation.addObserver(this);\n return this.#currentMutation.execute(variables);\n }\n #updateResult() {\n const state = this.#currentMutation?.state ?? getDefaultState();\n this.#currentResult = {\n ...state,\n isPending: state.status === \"pending\",\n isSuccess: state.status === \"success\",\n isError: state.status === \"error\",\n isIdle: state.status === \"idle\",\n mutate: this.mutate,\n reset: this.reset\n };\n }\n #notify(action) {\n notifyManager.batch(() => {\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables;\n const context = this.#currentResult.context;\n if (action?.type === \"success\") {\n this.#mutateOptions.onSuccess?.(action.data, variables, context);\n this.#mutateOptions.onSettled?.(action.data, null, variables, context);\n } else if (action?.type === \"error\") {\n this.#mutateOptions.onError?.(action.error, variables, context);\n this.#mutateOptions.onSettled?.(\n void 0,\n action.error,\n variables,\n context\n );\n }\n }\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n });\n }\n};\nexport {\n MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","'use client'\nimport * as React from 'react'\nimport {\n MutationObserver,\n noop,\n notifyManager,\n shouldThrowError,\n} from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport type {\n UseMutateFunction,\n UseMutationOptions,\n UseMutationResult,\n} from './types'\nimport type { DefaultError, QueryClient } from '@tanstack/query-core'\n\n// HOOK\n\nexport function useMutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n>(\n options: UseMutationOptions<TData, TError, TVariables, TContext>,\n queryClient?: QueryClient,\n): UseMutationResult<TData, TError, TVariables, TContext> {\n const client = useQueryClient(queryClient)\n\n const [observer] = React.useState(\n () =>\n new MutationObserver<TData, TError, TVariables, TContext>(\n client,\n options,\n ),\n )\n\n React.useEffect(() => {\n observer.setOptions(options)\n }, [observer, options])\n\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) =>\n observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer],\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult(),\n )\n\n const mutate = React.useCallback<\n UseMutateFunction<TData, TError, TVariables, TContext>\n >(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop)\n },\n [observer],\n )\n\n if (\n result.error &&\n shouldThrowError(observer.options.throwOnError, [result.error])\n ) {\n throw result.error\n }\n\n return { ...result, mutate, mutateAsync: result.mutate }\n}\n","// https://stackoverflow.com/a/3561711/6519037\nfunction escapeRegex(string) {\n return string.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\nfunction wrapInRegex(value) {\n if (typeof value === 'string') {\n // TODO in the next major we should change this to `new RegExp(value)` so that the user can control start/end characters\n return new RegExp(`^${value}$`); // throws if invalid regex\n }\n if (value instanceof RegExp) {\n return value;\n }\n return undefined;\n}\nexport default function getAllowedHosts(companionAllowedHosts, companionUrl) {\n if (companionAllowedHosts) {\n const validate = (value) => {\n if (!(typeof value === 'string' && wrapInRegex(value)) && // wrapInRegex throws if invalid regex\n !(value instanceof RegExp)) {\n throw new TypeError(`The option \"companionAllowedHosts\" must be one of string, Array, RegExp`);\n }\n };\n if (Array.isArray(companionAllowedHosts)) {\n companionAllowedHosts.every(validate);\n }\n else {\n validate(companionAllowedHosts);\n }\n return companionAllowedHosts;\n }\n // if it does not start with https://, prefix it (and remove any leading slashes)\n let ret = companionUrl;\n if (/^(?!https?:\\/\\/).*$/i.test(ret)) {\n ret = `https://${companionUrl.replace(/^\\/\\//, '')}`;\n }\n ret = new URL(ret).origin;\n ret = escapeRegex(ret);\n return ret;\n}\nexport function isOriginAllowed(origin, allowedOrigin) {\n const patterns = Array.isArray(allowedOrigin)\n ? allowedOrigin.map(wrapInRegex)\n : [wrapInRegex(allowedOrigin)];\n return patterns.some((pattern) => pattern?.test(origin) || pattern?.test(`${origin}/`)); // allowing for trailing '/'\n}\n","export default function hasProperty(object, key) {\n return Object.hasOwn(object, key);\n}\n","import hasProperty from './hasProperty.js';\nclass ErrorWithCause extends Error {\n isNetworkError;\n cause;\n constructor(message, options) {\n super(message);\n this.cause = options?.cause;\n if (this.cause && hasProperty(this.cause, 'isNetworkError')) {\n this.isNetworkError = this.cause.isNetworkError;\n }\n else {\n this.isNetworkError = false;\n }\n }\n}\nexport default ErrorWithCause;\n","class NetworkError extends Error {\n cause;\n isNetworkError;\n request;\n constructor(error, xhr = null) {\n super(`This looks like a network error, the endpoint might be blocked by an internet provider or a firewall.`);\n this.cause = error;\n this.isNetworkError = true;\n this.request = xhr;\n }\n}\nexport default NetworkError;\n","import NetworkError from './NetworkError.js';\n/**\n * Wrapper around window.fetch that throws a NetworkError when appropriate\n */\nexport default function fetchWithNetworkError(...options) {\n return fetch(...options).catch((err) => {\n if (err.name === 'AbortError') {\n throw err;\n }\n else {\n throw new NetworkError(err);\n }\n });\n}\n","export default function getSocketHost(url) {\n // get the host domain\n const regex = /^(?:https?:\\/\\/|\\/\\/)?(?:[^@\\n]+@)?([^\\n]+)/i;\n const host = regex.exec(url)?.[1];\n const socketProtocol = /^http:\\/\\//i.test(url) ? 'ws' : 'wss';\n return `${socketProtocol}://${host}`;\n}\n","class UserFacingApiError extends Error {\n name = 'UserFacingApiError';\n}\nexport default UserFacingApiError;\n","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'network error', // Chrome\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Load failed', // Safari 17+\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n\t'terminated', // Undici (Node.js)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\t// We do an extra check for Safari 17+ as it has a very generic error message.\n\t// Network errors in Safari have no stack.\n\tif (error.message === 'Load failed') {\n\t\treturn error.stack === undefined;\n\t}\n\n\treturn errorMessages.has(error.message);\n}\n","import retry from 'retry';\nimport isNetworkError from 'is-network-error';\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nconst decorateErrorWithCounts = (error, attemptNumber, options) => {\n\t// Minus 1 from attemptNumber because the first attempt does not count as a retry\n\tconst retriesLeft = options.retries - (attemptNumber - 1);\n\n\terror.attemptNumber = attemptNumber;\n\terror.retriesLeft = retriesLeft;\n\treturn error;\n};\n\nexport default async function pRetry(input, options) {\n\treturn new Promise((resolve, reject) => {\n\t\toptions = {...options};\n\t\toptions.onFailedAttempt ??= () => {};\n\t\toptions.shouldRetry ??= () => true;\n\t\toptions.retries ??= 10;\n\n\t\tconst operation = retry.operation(options);\n\n\t\tconst abortHandler = () => {\n\t\t\toperation.stop();\n\t\t\treject(options.signal?.reason);\n\t\t};\n\n\t\tif (options.signal && !options.signal.aborted) {\n\t\t\toptions.signal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tconst cleanUp = () => {\n\t\t\toptions.signal?.removeEventListener('abort', abortHandler);\n\t\t\toperation.stop();\n\t\t};\n\n\t\toperation.attempt(async attemptNumber => {\n\t\t\ttry {\n\t\t\t\tconst result = await input(attemptNumber);\n\t\t\t\tcleanUp();\n\t\t\t\tresolve(result);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof AbortError) {\n\t\t\t\t\t\tthrow error.originalError;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof TypeError && !isNetworkError(error)) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\tdecorateErrorWithCounts(error, attemptNumber, options);\n\n\t\t\t\t\tif (!(await options.shouldRetry(error))) {\n\t\t\t\t\t\toperation.stop();\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\n\t\t\t\t\tawait options.onFailedAttempt(error);\n\n\t\t\t\t\tif (!operation.retry(error)) {\n\t\t\t\t\t\tthrow operation.mainError();\n\t\t\t\t\t}\n\t\t\t\t} catch (finalError) {\n\t\t\t\t\tdecorateErrorWithCounts(finalError, attemptNumber, options);\n\t\t\t\t\tcleanUp();\n\t\t\t\t\treject(finalError);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n","class AuthError extends Error {\n isAuthError;\n constructor() {\n super('Authorization required');\n this.name = 'AuthError';\n // we use a property because of instanceof is unsafe:\n // https://github.com/transloadit/uppy/pull/4619#discussion_r1406225982\n this.isAuthError = true;\n }\n}\nexport default AuthError;\n","import ErrorWithCause from '@uppy/utils/lib/ErrorWithCause';\nimport fetchWithNetworkError from '@uppy/utils/lib/fetchWithNetworkError';\nimport getSocketHost from '@uppy/utils/lib/getSocketHost';\nimport UserFacingApiError from '@uppy/utils/lib/UserFacingApiError';\nimport pRetry, { AbortError } from 'p-retry';\nimport packageJson from '../package.json' with { type: 'json' };\nimport AuthError from './AuthError.js';\n// Remove the trailing slash so we can always safely append /xyz.\nfunction stripSlash(url) {\n return url.replace(/\\/$/, '');\n}\nconst retryCount = 10; // set to a low number, like 2 to test manual user retries\nconst socketActivityTimeoutMs = 5 * 60 * 1000; // set to a low number like 10000 to test this\nexport const authErrorStatusCode = 401;\nclass HttpError extends Error {\n statusCode;\n constructor({ statusCode, message, }) {\n super(message);\n this.name = 'HttpError';\n this.statusCode = statusCode;\n }\n}\nasync function handleJSONResponse(res) {\n if (res.status === authErrorStatusCode) {\n throw new AuthError();\n }\n if (res.ok) {\n return res.json();\n }\n let errMsg = `Failed request with status: ${res.status}. ${res.statusText}`;\n let errData;\n try {\n errData = await res.json();\n if (errData.message)\n errMsg = `${errMsg} message: ${errData.message}`;\n if (errData.requestId)\n errMsg = `${errMsg} request-Id: ${errData.requestId}`;\n }\n catch (cause) {\n // if the response contains invalid JSON, let's ignore the error data\n throw new Error(errMsg, { cause });\n }\n if (res.status >= 400 && res.status <= 499 && errData.message) {\n throw new UserFacingApiError(errData.message);\n }\n throw new HttpError({ statusCode: res.status, message: errMsg });\n}\nfunction emitSocketProgress(uploader, progressData, file) {\n const { progress, bytesUploaded, bytesTotal } = progressData;\n if (progress) {\n uploader.uppy.log(`Upload progress: ${progress}`);\n uploader.uppy.emit('upload-progress', file, {\n uploadStarted: file.progress.uploadStarted ?? 0,\n bytesUploaded,\n bytesTotal,\n });\n }\n}\nexport default class RequestClient {\n static VERSION = packageJson.version;\n #companionHeaders;\n uppy;\n opts;\n constructor(uppy, opts) {\n this.uppy = uppy;\n this.opts = opts;\n this.onReceiveResponse = this.onReceiveResponse.bind(this);\n this.#companionHeaders = opts.companionHeaders;\n }\n setCompanionHeaders(headers) {\n this.#companionHeaders = headers;\n }\n [Symbol.for('uppy test: getCompanionHeaders')]() {\n return this.#companionHeaders;\n }\n get hostname() {\n const { companion } = this.uppy.getState();\n const host = this.opts.companionUrl;\n return stripSlash(companion?.[host] ? companion[host] : host);\n }\n async headers(emptyBody = false) {\n const defaultHeaders = {\n Accept: 'application/json',\n ...(emptyBody\n ? undefined\n : {\n // Passing those headers on requests with no data forces browsers to first make a preflight request.\n 'Content-Type': 'application/json',\n }),\n };\n return {\n ...defaultHeaders,\n ...this.#companionHeaders,\n };\n }\n onReceiveResponse(res) {\n const { headers } = res;\n const state = this.uppy.getState();\n const companion = state.companion || {};\n const host = this.opts.companionUrl;\n // Store the self-identified domain name for the Companion instance we just hit.\n if (headers.has('i-am') && headers.get('i-am') !== companion[host]) {\n this.uppy.setState({\n companion: { ...companion, [host]: headers.get('i-am') },\n });\n }\n }\n #getUrl(url) {\n if (/^(https?:|)\\/\\//.test(url)) {\n return url;\n }\n return `${this.hostname}/${url}`;\n }\n async request({ path, method = 'GET', data, skipPostResponse, signal, }) {\n try {\n const headers = await this.headers(!data);\n const response = await fetchWithNetworkError(this.#getUrl(path), {\n method,\n signal,\n headers,\n credentials: this.opts.companionCookiesRule || 'same-origin',\n body: data ? JSON.stringify(data) : null,\n });\n if (!skipPostResponse)\n this.onReceiveResponse(response);\n return await handleJSONResponse(response);\n }\n catch (err) {\n // pass these through\n if (err.isAuthError ||\n err.name === 'UserFacingApiError' ||\n err.name === 'AbortError')\n throw err;\n throw new ErrorWithCause(`Could not ${method} ${this.#getUrl(path)}`, {\n cause: err,\n });\n }\n }\n async get(path, options) {\n return this.request({ ...options, path });\n }\n async post(path, data, options) {\n return this.request({ ...options, path, method: 'POST', data });\n }\n async delete(path, data, options) {\n return this.request({ ...options, path, method: 'DELETE', data });\n }\n /**\n * Remote uploading consists of two steps:\n * 1. #requestSocketToken which starts the download/upload in companion and returns a unique token for the upload.\n * Then companion will halt the upload until:\n * 2. #awaitRemoteFileUpload is called, which will open/ensure a websocket connection towards companion, with the\n * previously generated token provided. It returns a promise that will resolve/reject once the file has finished\n * uploading or is otherwise done (failed, canceled)\n */\n async uploadRemoteFile(file, reqBody, options) {\n try {\n const { signal, getQueue } = options || {};\n return await pRetry(async () => {\n // if we already have a serverToken, assume that we are resuming the existing server upload id\n const existingServerToken = this.uppy.getFile(file.id)?.serverToken;\n if (existingServerToken != null) {\n this.uppy.log(`Connecting to exiting websocket ${existingServerToken}`);\n return this.#awaitRemoteFileUpload({\n file,\n queue: getQueue(),\n signal,\n });\n }\n const queueRequestSocketToken = getQueue().wrapPromiseFunction(async (...args) => {\n try {\n return await this.#requestSocketToken(...args);\n }\n catch (outerErr) {\n // throwing AbortError will cause p-retry to stop retrying\n if (outerErr.isAuthError)\n throw new AbortError(outerErr);\n if (outerErr.cause == null)\n throw outerErr;\n const err = outerErr.cause;\n const isRetryableHttpError = () => [408, 409, 429, 418, 423].includes(err.statusCode) ||\n (err.statusCode >= 500 &&\n err.statusCode <= 599 &&\n ![501, 505].includes(err.statusCode));\n if (err.name === 'HttpError' && !isRetryableHttpError())\n throw new AbortError(err);\n // p-retry will retry most other errors,\n // but it will not retry TypeError (except network error TypeErrors)\n throw err;\n }\n }, { priority: -1 });\n const serverToken = await queueRequestSocketToken({\n file,\n postBody: reqBody,\n signal,\n }).abortOn(signal);\n if (!this.uppy.getFile(file.id))\n return undefined; // has file since been removed?\n this.uppy.setFileState(file.id, { serverToken });\n return this.#awaitRemoteFileUpload({\n file: this.uppy.getFile(file.id), // re-fetching file because it might have changed in the meantime\n queue: getQueue(),\n signal,\n });\n }, {\n retries: retryCount,\n signal,\n onFailedAttempt: (err) => this.uppy.log(`Retrying upload due to: ${err.message}`, 'warning'),\n });\n }\n catch (err) {\n // this is a bit confusing, but note that an error with the `name` prop set to 'AbortError' (from AbortController)\n // is not the same as `p-retry` `AbortError`\n if (err.name === 'AbortError') {\n // The file upload was aborted, it’s not an error\n return undefined;\n }\n this.uppy.emit('upload-error', file, err);\n throw err;\n }\n }\n #requestSocketToken = async ({ file, postBody, signal, }) => {\n if (file.remote?.url == null) {\n throw new Error('Cannot connect to an undefined URL');\n }\n const res = await this.post(file.remote.url, {\n ...file.remote.body,\n ...postBody,\n }, { signal });\n return res.token;\n };\n /**\n * This method will ensure a websocket for the specified file and returns a promise that resolves\n * when the file has finished downloading, or rejects if it fails.\n * It will retry if the websocket gets disconnected\n */\n async #awaitRemoteFileUpload({ file, queue, signal, }) {\n let removeEventHandlers;\n const { capabilities } = this.uppy.getState();\n try {\n return await new Promise((resolve, reject) => {\n const token = file.serverToken;\n const host = getSocketHost(file.remote.companionUrl);\n let socket;\n let socketAbortController;\n let activityTimeout;\n let { isPaused } = file;\n const socketSend = (action, payload) => {\n if (socket == null || socket.readyState !== socket.OPEN) {\n this.uppy.log(`Cannot send \"${action}\" to socket ${file.id} because the socket state was ${String(socket?.readyState)}`, 'warning');\n return;\n }\n socket.send(JSON.stringify({\n action,\n payload: payload ?? {},\n }));\n };\n function sendState() {\n if (!capabilities.resumableUploads)\n return;\n if (isPaused)\n socketSend('pause');\n else\n socketSend('resume');\n }\n const createWebsocket = async () => {\n if (socketAbortController)\n socketAbortController.abort();\n socketAbortController = new AbortController();\n const onFatalError = (err) => {\n // Remove the serverToken so that a new one will be created for the retry.\n this.uppy.setFileState(file.id, { serverToken: null });\n socketAbortController?.abort?.();\n reject(err);\n };\n // todo instead implement the ability for users to cancel / retry *currently uploading files* in the UI\n function resetActivityTimeout() {\n clearTimeout(activityTimeout);\n if (isPaused)\n return;\n activityTimeout = setTimeout(() => onFatalError(new Error('Timeout waiting for message from Companion socket')), socketActivityTimeoutMs);\n }\n try {\n await queue\n .wrapPromiseFunction(async () => {\n const reconnectWebsocket = async () => new Promise((_, rejectSocket) => {\n socket = new WebSocket(`${host}/api/${token}`);\n resetActivityTimeout();\n socket.addEventListener('close', () => {\n socket = undefined;\n rejectSocket(new Error('Socket closed unexpectedly'));\n });\n socket.addEventListener('error', (error) => {\n this.uppy.log(`Companion socket error ${JSON.stringify(error)}, closing socket`, 'warning');\n socket?.close(); // will 'close' event to be emitted\n });\n socket.addEventListener('open', () => {\n sendState();\n });\n socket.addEventListener('message', (e) => {\n resetActivityTimeout();\n try {\n const { action, payload } = JSON.parse(e.data);\n switch (action) {\n case 'progress': {\n emitSocketProgress(this, payload, this.uppy.getFile(file.id));\n break;\n }\n case 'success': {\n // payload.response is sent from companion for xhr-upload (aka uploadMultipart in companion) and\n // s3 multipart (aka uploadS3Multipart)\n // but not for tus/transloadit (aka uploadTus)\n // responseText is a string which may or may not be in JSON format\n // this means that an upload destination of xhr or s3 multipart MUST respond with valid JSON\n // to companion, or the JSON.parse will crash\n const text = payload.response?.responseText;\n this.uppy.emit('upload-success', this.uppy.getFile(file.id), {\n uploadURL: payload.url,\n status: payload.response?.status ?? 200,\n body: text\n ? JSON.parse(text)\n : undefined,\n });\n socketAbortController?.abort?.();\n resolve();\n break;\n }\n case 'error': {\n const { message } = payload.error;\n throw Object.assign(new Error(message), {\n cause: payload.error,\n });\n }\n default:\n this.uppy.log(`Companion socket unknown action ${action}`, 'warning');\n }\n }\n catch (err) {\n onFatalError(err);\n }\n });\n const closeSocket = () => {\n this.uppy.log(`Closing socket ${file.id}`);\n clearTimeout(activityTimeout);\n if (socket)\n socket.close();\n socket = undefined;\n };\n socketAbortController.signal.addEventListener('abort', () => {\n closeSocket();\n });\n });\n await pRetry(reconnectWebsocket, {\n retries: retryCount,\n signal: socketAbortController.signal,\n onFailedAttempt: () => {\n if (socketAbortController.signal.aborted)\n return; // don't log in this case\n this.uppy.log(`Retrying websocket ${file.id}`);\n },\n });\n })()\n .abortOn(socketAbortController.signal);\n }\n catch (err) {\n if (socketAbortController.signal.aborted)\n return;\n onFatalError(err);\n }\n };\n const pause = (newPausedState) => {\n if (!capabilities.resumableUploads)\n return;\n isPaused = newPausedState;\n if (socket)\n sendState();\n };\n const onFileRemove = (targetFile) => {\n if (!capabilities.individualCancellation)\n return;\n if (targetFile.id !== file.id)\n return;\n socketSend('cancel');\n socketAbortController?.abort?.();\n this.uppy.log(`upload ${file.id} was removed`);\n resolve();\n };\n const onCancelAll = () => {\n socketSend('cancel');\n socketAbortController?.abort?.();\n this.uppy.log(`upload ${file.id} was canceled`);\n resolve();\n };\n const onFilePausedChange = (targetFile, newPausedState) => {\n if (targetFile?.id !== file.id)\n return;\n pause(newPausedState);\n };\n const onPauseAll = () => pause(true);\n const onResumeAll = () => pause(false);\n this.uppy.on('file-removed', onFileRemove);\n this.uppy.on('cancel-all', onCancelAll);\n this.uppy.on('upload-pause', onFilePausedChange);\n this.uppy.on('pause-all', onPauseAll);\n this.uppy.on('resume-all', onResumeAll);\n removeEventHandlers = () => {\n this.uppy.off('file-removed', onFileRemove);\n this.uppy.off('cancel-all', onCancelAll);\n this.uppy.off('upload-pause', onFilePausedChange);\n this.uppy.off('pause-all', onPauseAll);\n this.uppy.off('resume-all', onResumeAll);\n };\n signal.addEventListener('abort', () => {\n socketAbortController?.abort();\n });\n createWebsocket();\n });\n }\n finally {\n // @ts-expect-error used before defined\n removeEventHandlers?.();\n }\n }\n}\n","import { isOriginAllowed } from './getAllowedHosts.js';\nimport RequestClient, { authErrorStatusCode } from './RequestClient.js';\nconst getName = (id) => {\n return id\n .split('-')\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1))\n .join(' ');\n};\nfunction getOrigin() {\n return location.origin;\n}\nexport default class Provider extends RequestClient {\n #refreshingTokenPromise;\n provider;\n id;\n name;\n pluginId;\n tokenKey;\n companionKeysParams;\n preAuthToken;\n supportsRefreshToken;\n constructor(uppy, opts) {\n super(uppy, opts);\n this.provider = opts.provider;\n this.id = this.provider;\n this.name = this.opts.name || getName(this.id);\n this.pluginId = this.opts.pluginId;\n this.tokenKey = `companion-${this.pluginId}-auth-token`;\n this.companionKeysParams = this.opts.companionKeysParams;\n this.preAuthToken = null;\n this.supportsRefreshToken = !!opts.supportsRefreshToken;\n }\n async headers() {\n const [headers, token] = await Promise.all([\n super.headers(),\n this.#getAuthToken(),\n ]);\n const authHeaders = {};\n if (token) {\n authHeaders['uppy-auth-token'] = token;\n }\n if (this.companionKeysParams) {\n authHeaders['uppy-credentials-params'] = btoa(JSON.stringify({ params: this.companionKeysParams }));\n }\n return { ...headers, ...authHeaders };\n }\n onReceiveResponse(response) {\n super.onReceiveResponse(response);\n const plugin = this.#getPlugin();\n const oldAuthenticated = plugin.getPluginState().authenticated;\n const authenticated = oldAuthenticated\n ? response.status !== authErrorStatusCode\n : response.status < 400;\n plugin.setPluginState({ authenticated });\n return response;\n }\n async setAuthToken(token) {\n return this.#getPlugin().storage.setItem(this.tokenKey, token);\n }\n async #getAuthToken() {\n return this.#getPlugin().storage.getItem(this.tokenKey);\n }\n async removeAuthToken() {\n return this.#getPlugin().storage.removeItem(this.tokenKey);\n }\n #getPlugin() {\n const plugin = this.uppy.getPlugin(this.pluginId);\n if (plugin == null)\n throw new Error('Plugin was nullish');\n return plugin;\n }\n /**\n * Ensure we have a preauth token if necessary. Attempts to fetch one if we don't,\n * or rejects if loading one fails.\n */\n async ensurePreAuth() {\n if (this.companionKeysParams && !this.preAuthToken) {\n await this.fetchPreAuthToken();\n if (!this.preAuthToken) {\n throw new Error('Could not load authentication data required for third-party login. Please try again later.');\n }\n }\n }\n authQuery(data) {\n return {};\n }\n authUrl({ authFormData, query, }) {\n const params = new URLSearchParams({\n ...query,\n // This is only used for Companion instances configured to accept multiple origins.\n state: btoa(JSON.stringify({ origin: getOrigin() })),\n ...this.authQuery({ authFormData }),\n });\n if (this.preAuthToken) {\n params.set('uppyPreAuthToken', this.preAuthToken);\n }\n return `${this.hostname}/${this.id}/connect?${params}`;\n }\n async loginSimpleAuth({ uppyVersions, authFormData, signal, }) {\n const response = await this.post(`${this.id}/simple-auth`, { form: authFormData }, { qs: { uppyVersions }, signal });\n this.setAuthToken(response.uppyAuthToken);\n }\n async loginOAuth({ uppyVersions, authFormData, signal, }) {\n await this.ensurePreAuth();\n signal.throwIfAborted();\n const link = this.authUrl({ query: { uppyVersions }, authFormData });\n const authWindow = window.open(link, '_blank');\n let interval;\n let handleMessage;\n try {\n return await new Promise((resolve, reject) => {\n handleMessage = (e) => {\n if (e.source !== authWindow) {\n let jsonData = '';\n try {\n // TODO improve our uppy logger so that it can take an arbitrary number of arguments,\n // each either objects, errors or strings,\n // then we don’t have to manually do these things like json stringify when logging.\n // the logger should never throw an error.\n jsonData = JSON.stringify(e.data);\n }\n catch (_err) {\n // in case JSON.stringify fails (ignored)\n }\n this.uppy.log(`ignoring event from unknown source ${jsonData}`, 'warning');\n return;\n }\n const { companionAllowedHosts } = this.#getPlugin().opts;\n if (!isOriginAllowed(e.origin, companionAllowedHosts)) {\n this.uppy.log(`ignoring event from ${e.origin} vs allowed pattern ${companionAllowedHosts}`, 'warning');\n // We cannot reject here because the page might send events from other origins\n // before sending the \"real\" auth completed event.\n // for example Box has a \"Pendo\" tool that sends events to the opener\n // https://github.com/transloadit/uppy/pull/5719\n return;\n }\n // Check if it's a string before doing the JSON.parse to maintain support\n // for older Companion versions that used object references\n const data = typeof e.data === 'string' ? JSON.parse(e.data) : e.data;\n if (data.error) {\n const { uppy } = this;\n const message = uppy.i18n('authAborted');\n uppy.info({ message }, 'warning', 5000);\n reject(new Error('auth aborted'));\n return;\n }\n if (!data.token) {\n reject(new Error('did not receive token from auth window'));\n return;\n }\n resolve(this.setAuthToken(data.token));\n };\n // poll for user closure of the window, so we can reject when it happens\n if (authWindow) {\n interval = window.setInterval(() => {\n if (authWindow.closed) {\n reject(new Error('Auth window was closed by the user'));\n }\n }, 500);\n }\n signal.addEventListener('abort', () => reject(new Error('Aborted')));\n window.addEventListener('message', handleMessage);\n });\n }\n finally {\n // cleanup:\n authWindow?.close();\n window.clearInterval(interval);\n if (handleMessage)\n window.removeEventListener('message', handleMessage);\n }\n }\n async login({ uppyVersions, authFormData, signal, }) {\n return this.loginOAuth({ uppyVersions, authFormData, signal });\n }\n refreshTokenUrl() {\n return `${this.hostname}/${this.id}/refresh-token`;\n }\n fileUrl(id) {\n return `${this.hostname}/${this.id}/get/${id}`;\n }\n async request(...args) {\n await this.#refreshingTokenPromise;\n try {\n // to test simulate access token expired (leading to a token token refresh),\n // see mockAccessTokenExpiredError in companion/drive.\n // If you want to test refresh token *and* access token invalid, do this for example with Google Drive:\n // While uploading, go to your google account settings,\n // \"Third-party apps & services\", then click \"Companion\" and \"Remove access\".\n return await super.request(...args);\n }\n catch (err) {\n if (!this.supportsRefreshToken)\n throw err;\n // only handle auth errors (401 from provider), and only handle them if we have a (refresh) token\n const authTokenAfter = await this.#getAuthToken();\n if (!err.isAuthError || !authTokenAfter)\n throw err;\n if (this.#refreshingTokenPromise == null) {\n // Many provider requests may be starting at once, however refresh token should only be called once.\n // Once a refresh token operation has started, we need all other request to wait for this operation (atomically)\n this.#refreshingTokenPromise = (async () => {\n try {\n this.uppy.log(`[CompanionClient] Refreshing expired auth token`);\n const response = await super.request({\n path: this.refreshTokenUrl(),\n method: 'POST',\n });\n await this.setAuthToken(response.uppyAuthToken);\n }\n catch (refreshTokenErr) {\n if (refreshTokenErr.isAuthError) {\n // if refresh-token has failed with auth error, delete token, so we don't keep trying to refresh in future\n await this.removeAuthToken();\n }\n throw err;\n }\n finally {\n this.#refreshingTokenPromise = undefined;\n }\n })();\n }\n await this.#refreshingTokenPromise;\n // now retry the request with our new refresh token\n return super.request(...args);\n }\n }\n async fetchPreAuthToken() {\n if (!this.companionKeysParams) {\n return;\n }\n try {\n const res = await this.post(`${this.id}/preauth/`, {\n params: this.companionKeysParams,\n });\n this.preAuthToken = res.token;\n }\n catch (err) {\n this.uppy.log(`[CompanionClient] unable to fetch preAuthToken ${err}`, 'warning');\n }\n }\n list(directory, options) {\n return this.get(`${this.id}/list/${directory || ''}`, options);\n }\n async logout(options) {\n const response = await this.get(`${this.id}/logout`, options);\n await this.removeAuthToken();\n return response;\n }\n}\n","import RequestClient, {} from './RequestClient.js';\nconst getName = (id) => {\n return id\n .split('-')\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1))\n .join(' ');\n};\nexport default class SearchProvider extends RequestClient {\n provider;\n id;\n name;\n pluginId;\n constructor(uppy, opts) {\n super(uppy, opts);\n this.provider = opts.provider;\n this.id = this.provider;\n this.name = this.opts.name || getName(this.id);\n this.pluginId = this.opts.pluginId;\n }\n fileUrl(id) {\n return `${this.hostname}/search/${this.id}/get/${id}`;\n }\n search(text, queries) {\n return this.get(`search/${this.id}/list?q=${encodeURIComponent(text)}${queries ? `&${queries}` : ''}`);\n }\n}\n","/**\n * Manages communications with Companion\n */\nexport { default as getAllowedHosts } from './getAllowedHosts.js';\nexport { default as Provider } from './Provider.js';\nexport { default as RequestClient } from './RequestClient.js';\nexport { default as SearchProvider } from './SearchProvider.js';\nexport * as tokenStorage from './tokenStorage.js';\n","/**\n * Create a wrapper around an event emitter with a `remove` method to remove\n * all events that were added using the wrapped emitter.\n */\nexport default class EventManager {\n #uppy;\n #events = [];\n constructor(uppy) {\n this.#uppy = uppy;\n }\n on(event, fn) {\n this.#events.push([event, fn]);\n return this.#uppy.on(event, fn);\n }\n remove() {\n for (const [event, fn] of this.#events.splice(0)) {\n this.#uppy.off(event, fn);\n }\n }\n onFilePause(fileID, cb) {\n this.on('upload-pause', (file, isPaused) => {\n if (fileID === file?.id) {\n cb(isPaused);\n }\n });\n }\n onFileRemove(fileID, cb) {\n this.on('file-removed', (file) => {\n if (fileID === file.id)\n cb(file.id);\n });\n }\n onPause(fileID, cb) {\n this.on('upload-pause', (file, isPaused) => {\n if (fileID === file?.id) {\n // const isPaused = this.#uppy.pauseResume(fileID)\n cb(isPaused);\n }\n });\n }\n onRetry(fileID, cb) {\n this.on('upload-retry', (file) => {\n if (fileID === file?.id) {\n cb();\n }\n });\n }\n onRetryAll(fileID, cb) {\n this.on('retry-all', () => {\n if (!this.#uppy.getFile(fileID))\n return;\n cb();\n });\n }\n onPauseAll(fileID, cb) {\n this.on('pause-all', () => {\n if (!this.#uppy.getFile(fileID))\n return;\n cb();\n });\n }\n onCancelAll(fileID, eventHandler) {\n this.on('cancel-all', (...args) => {\n if (!this.#uppy.getFile(fileID))\n return;\n eventHandler(...args);\n });\n }\n onResumeAll(fileID, cb) {\n this.on('resume-all', () => {\n if (!this.#uppy.getFile(fileID))\n return;\n cb();\n });\n }\n}\n","import hasProperty from './hasProperty.js';\n/**\n * Little AbortController proxy module so we can swap out the implementation easily later.\n */\nexport const { AbortController } = globalThis;\nexport const { AbortSignal } = globalThis;\nexport const createAbortError = (message = 'Aborted', options) => {\n const err = new DOMException(message, 'AbortError');\n if (options != null && hasProperty(options, 'cause')) {\n Object.defineProperty(err, 'cause', {\n // @ts-expect-error TS is drunk\n __proto__: null,\n configurable: true,\n writable: true,\n value: options.cause,\n });\n }\n return err;\n};\n","export function filterNonFailedFiles(files) {\n const hasError = (file) => 'error' in file && !!file.error;\n return files.filter((file) => !hasError(file));\n}\n// Don't double-emit upload-started for Golden Retriever-restored files that were already started\nexport function filterFilesToEmitUploadStarted(files) {\n return files.filter((file) => !file.progress?.uploadStarted || !file.isRestored);\n}\n","export default function getAllowedMetaFields(fields, meta) {\n if (fields === true) {\n return Object.keys(meta);\n }\n if (Array.isArray(fields)) {\n return fields;\n }\n return [];\n}\n","function createCancelError(cause) {\n return new Error('Cancelled', { cause });\n}\nfunction abortOn(signal) {\n if (signal != null) {\n const abortPromise = () => this.abort(signal.reason);\n signal.addEventListener('abort', abortPromise, { once: true });\n const removeAbortListener = () => {\n signal.removeEventListener('abort', abortPromise);\n };\n this.then?.(removeAbortListener, removeAbortListener);\n }\n return this;\n}\nexport class RateLimitedQueue {\n #activeRequests = 0;\n #queuedHandlers = [];\n #paused = false;\n #pauseTimer;\n #downLimit = 1;\n #upperLimit;\n #rateLimitingTimer;\n limit;\n constructor(limit) {\n if (typeof limit !== 'number' || limit === 0) {\n this.limit = Infinity;\n }\n else {\n this.limit = limit;\n }\n }\n #call(fn) {\n this.#activeRequests += 1;\n let done = false;\n let cancelActive;\n try {\n cancelActive = fn();\n }\n catch (err) {\n this.#activeRequests -= 1;\n throw err;\n }\n return {\n abort: (cause) => {\n if (done)\n return;\n done = true;\n this.#activeRequests -= 1;\n cancelActive?.(cause);\n this.#queueNext();\n },\n done: () => {\n if (done)\n return;\n done = true;\n this.#activeRequests -= 1;\n this.#queueNext();\n },\n };\n }\n #queueNext() {\n // Do it soon but not immediately, this allows clearing out the entire queue synchronously\n // one by one without continuously _advancing_ it (and starting new tasks before immediately\n // aborting them)\n queueMicrotask(() => this.#next());\n }\n #next() {\n if (this.#paused || this.#activeRequests >= this.limit) {\n return;\n }\n if (this.#queuedHandlers.length === 0) {\n return;\n }\n // Dispatch the next request, and update the abort/done handlers\n // so that cancelling it does the Right Thing (and doesn't just try\n // to dequeue an already-running request).\n const next = this.#queuedHandlers.shift();\n if (next == null) {\n throw new Error('Invariant violation: next is null');\n }\n const handler = this.#call(next.fn);\n next.abort = handler.abort;\n next.done = handler.done;\n }\n #queue(fn, options) {\n const handler = {\n fn,\n priority: options?.priority || 0,\n abort: () => {\n this.#dequeue(handler);\n },\n done: () => {\n throw new Error('Cannot mark a queued request as done: this indicates a bug');\n },\n };\n const index = this.#queuedHandlers.findIndex((other) => {\n return handler.priority > other.priority;\n });\n if (index === -1) {\n this.#queuedHandlers.push(handler);\n }\n else {\n this.#queuedHandlers.splice(index, 0, handler);\n }\n return handler;\n }\n #dequeue(handler) {\n const index = this.#queuedHandlers.indexOf(handler);\n if (index !== -1) {\n this.#queuedHandlers.splice(index, 1);\n }\n }\n run(fn, queueOptions) {\n if (!this.#paused && this.#activeRequests < this.limit) {\n return this.#call(fn);\n }\n return this.#queue(fn, queueOptions);\n }\n wrapSyncFunction(fn, queueOptions) {\n return (...args) => {\n const queuedRequest = this.run(() => {\n fn(...args);\n queueMicrotask(() => queuedRequest.done());\n return () => { };\n }, queueOptions);\n return {\n abortOn,\n abort() {\n queuedRequest.abort();\n },\n };\n };\n }\n wrapPromiseFunction(fn, queueOptions) {\n return (...args) => {\n let queuedRequest;\n const outerPromise = new Promise((resolve, reject) => {\n queuedRequest = this.run(() => {\n let cancelError;\n let innerPromise;\n try {\n innerPromise = Promise.resolve(fn(...args));\n }\n catch (err) {\n innerPromise = Promise.reject(err);\n }\n innerPromise.then((result) => {\n if (cancelError) {\n reject(cancelError);\n }\n else {\n queuedRequest.done();\n resolve(result);\n }\n }, (err) => {\n if (cancelError) {\n reject(cancelError);\n }\n else {\n queuedRequest.done();\n reject(err);\n }\n });\n return (cause) => {\n cancelError = createCancelError(cause);\n };\n }, queueOptions);\n });\n outerPromise.abort = (cause) => {\n queuedRequest.abort(cause);\n };\n outerPromise.abortOn = abortOn;\n return outerPromise;\n };\n }\n resume() {\n this.#paused = false;\n clearTimeout(this.#pauseTimer);\n for (let i = 0; i < this.limit; i++) {\n this.#queueNext();\n }\n }\n #resume = () => this.resume();\n /**\n * Freezes the queue for a while or indefinitely.\n *\n * @param {number | null } [duration] Duration for the pause to happen, in milliseconds.\n * If omitted, the queue won't resume automatically.\n */\n pause(duration = null) {\n this.#paused = true;\n clearTimeout(this.#pauseTimer);\n if (duration != null) {\n this.#pauseTimer = setTimeout(this.#resume, duration);\n }\n }\n /**\n * Pauses the queue for a duration, and lower the limit of concurrent requests\n * when the queue resumes. When the queue resumes, it tries to progressively\n * increase the limit in `this.#increaseLimit` until another call is made to\n * `this.rateLimit`.\n * Call this function when using the RateLimitedQueue for network requests and\n * the remote server responds with 429 HTTP code.\n *\n * @param {number} duration in milliseconds.\n */\n rateLimit(duration) {\n clearTimeout(this.#rateLimitingTimer);\n this.pause(duration);\n if (this.limit > 1 && Number.isFinite(this.limit)) {\n this.#upperLimit = this.limit - 1;\n this.limit = this.#downLimit;\n this.#rateLimitingTimer = setTimeout(this.#increaseLimit, duration);\n }\n }\n #increaseLimit = () => {\n if (this.#paused) {\n this.#rateLimitingTimer = setTimeout(this.#increaseLimit, 0);\n return;\n }\n this.#downLimit = this.limit;\n this.limit = Math.ceil((this.#upperLimit + this.#downLimit) / 2);\n for (let i = this.#downLimit; i <= this.limit; i++) {\n this.#queueNext();\n }\n if (this.#upperLimit - this.#downLimit > 3) {\n this.#rateLimitingTimer = setTimeout(this.#increaseLimit, 2000);\n }\n else {\n this.#downLimit = Math.floor(this.#downLimit / 2);\n }\n };\n get isPaused() {\n return this.#paused;\n }\n}\nexport const internalRateLimitedQueue = Symbol('__queue');\n","/**\n * Create a canonical request by concatenating the following strings, separated\n * by newline characters. This helps ensure that the signature that you\n * calculate and the signature that AWS calculates can match.\n *\n * @see https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html#create-canonical-request\n *\n * @param param0\n * @param param0.method – The HTTP method.\n * @param param0.CanonicalUri – The URI-encoded version of the absolute\n * path component URL (everything between the host and the question mark\n * character (?) that starts the query string parameters). If the absolute path\n * is empty, use a forward slash character (/).\n * @param param0.CanonicalQueryString – The URL-encoded query string\n * parameters, separated by ampersands (&). Percent-encode reserved characters,\n * including the space character. Encode names and values separately. If there\n * are empty parameters, append the equals sign to the parameter name before\n * encoding. After encoding, sort the parameters alphabetically by key name. If\n * there is no query string, use an empty string (\"\").\n * @param param0.SignedHeaders – The request headers,\n * that will be signed, and their values, separated by newline characters.\n * For the values, trim any leading or trailing spaces, convert sequential\n * spaces to a single space, and separate the values for a multi-value header\n * using commas. You must include the host header (HTTP/1.1), and any x-amz-*\n * headers in the signature. You can optionally include other standard headers\n * in the signature, such as content-type.\n * @param param0.HashedPayload – A string created using the payload in\n * the body of the HTTP request as input to a hash function. This string uses\n * lowercase hexadecimal characters. If the payload is empty, use an empty\n * string as the input to the hash function.\n */\nfunction createCanonicalRequest({ method = 'PUT', CanonicalUri = '/', CanonicalQueryString = '', SignedHeaders, HashedPayload, }) {\n const headerKeys = Object.keys(SignedHeaders)\n .map((k) => k.toLowerCase())\n .sort();\n return [\n method,\n CanonicalUri,\n CanonicalQueryString,\n ...headerKeys.map((k) => `${k}:${SignedHeaders[k]}`),\n '',\n headerKeys.join(';'),\n HashedPayload,\n ].join('\\n');\n}\nconst ec = new TextEncoder();\nconst algorithm = { name: 'HMAC', hash: 'SHA-256' };\nasync function digest(data) {\n const { subtle } = globalThis.crypto;\n return subtle.digest(algorithm.hash, ec.encode(data));\n}\nasync function generateHmacKey(secret) {\n const { subtle } = globalThis.crypto;\n return subtle.importKey('raw', typeof secret === 'string' ? ec.encode(secret) : secret, algorithm, false, ['sign']);\n}\nfunction arrayBufferToHexString(arrayBuffer) {\n const byteArray = new Uint8Array(arrayBuffer);\n let hexString = '';\n for (let i = 0; i < byteArray.length; i++) {\n hexString += byteArray[i].toString(16).padStart(2, '0');\n }\n return hexString;\n}\nasync function hash(key, data) {\n const { subtle } = globalThis.crypto;\n return subtle.sign(algorithm, await generateHmacKey(key), ec.encode(data));\n}\n/**\n * @see https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html\n */\nexport default async function createSignedURL({ accountKey, accountSecret, sessionToken, bucketName, Key, Region, expires, uploadId, partNumber, }) {\n const Service = 's3';\n const host = `${Service}.${Region}.amazonaws.com`;\n /**\n * List of char out of `encodeURI()` is taken from ECMAScript spec.\n * Note that the `/` character is purposefully not included in list below.\n *\n * @see https://tc39.es/ecma262/#sec-encodeuri-uri\n */\n const CanonicalUri = `/${bucketName}/${encodeURI(Key).replace(/[;?:@&=+$,#!'()*]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`)}`;\n const payload = 'UNSIGNED-PAYLOAD';\n const requestDateTime = new Date().toISOString().replace(/[-:]|\\.\\d+/g, ''); // YYYYMMDDTHHMMSSZ\n const date = requestDateTime.slice(0, 8); // YYYYMMDD\n const scope = `${date}/${Region}/${Service}/aws4_request`;\n const url = new URL(`https://${host}${CanonicalUri}`);\n // N.B.: URL search params needs to be added in the ASCII order\n url.searchParams.set('X-Amz-Algorithm', 'AWS4-HMAC-SHA256');\n url.searchParams.set('X-Amz-Content-Sha256', payload);\n url.searchParams.set('X-Amz-Credential', `${accountKey}/${scope}`);\n url.searchParams.set('X-Amz-Date', requestDateTime);\n url.searchParams.set('X-Amz-Expires', expires);\n // We are signing on the client, so we expect there's going to be a session token:\n url.searchParams.set('X-Amz-Security-Token', sessionToken);\n url.searchParams.set('X-Amz-SignedHeaders', 'host');\n // Those two are present only for Multipart Uploads:\n if (partNumber)\n url.searchParams.set('partNumber', partNumber);\n if (uploadId)\n url.searchParams.set('uploadId', uploadId);\n url.searchParams.set('x-id', partNumber && uploadId ? 'UploadPart' : 'PutObject');\n // Step 1: Create a canonical request\n const canonical = createCanonicalRequest({\n CanonicalUri,\n CanonicalQueryString: url.search.slice(1),\n SignedHeaders: {\n host,\n },\n HashedPayload: payload,\n });\n // Step 2: Create a hash of the canonical request\n const hashedCanonical = arrayBufferToHexString(await digest(canonical));\n // Step 3: Create a string to sign\n const stringToSign = [\n `AWS4-HMAC-SHA256`, // The algorithm used to create the hash of the canonical request.\n requestDateTime, // The date and time used in the credential scope.\n scope, // The credential scope. This restricts the resulting signature to the specified Region and service.\n hashedCanonical, // The hash of the canonical request.\n ].join('\\n');\n // Step 4: Calculate the signature\n const kDate = await hash(`AWS4${accountSecret}`, date);\n const kRegion = await hash(kDate, Region);\n const kService = await hash(kRegion, Service);\n const kSigning = await hash(kService, 'aws4_request');\n const signature = arrayBufferToHexString(await hash(kSigning, stringToSign));\n // Step 5: Add the signature to the request\n url.searchParams.set('X-Amz-Signature', signature);\n return url;\n}\n","import { AbortController } from '@uppy/utils/lib/AbortController';\nconst MB = 1024 * 1024;\nconst defaultOptions = {\n getChunkSize(file) {\n return Math.ceil(file.size / 10000);\n },\n onProgress() { },\n onPartComplete() { },\n onSuccess() { },\n onError(err) {\n throw err;\n },\n};\nfunction ensureInt(value) {\n if (typeof value === 'string') {\n // @ts-expect-error TS is not able to recognize it's fine.\n return parseInt(value, 10);\n }\n if (typeof value === 'number') {\n // @ts-expect-error TS is not able to recognize it's fine.\n return value;\n }\n throw new TypeError('Expected a number');\n}\nexport const pausingUploadReason = Symbol('pausing upload, not an actual error');\n/**\n * A MultipartUploader instance is used per file upload to determine whether a\n * upload should be done as multipart or as a regular S3 upload\n * (based on the user-provided `shouldUseMultipart` option value) and to manage\n * the chunk splitting.\n */\nclass MultipartUploader {\n options;\n #abortController = new AbortController();\n #chunks = [];\n #chunkState = [];\n /**\n * The (un-chunked) data to upload.\n */\n #data;\n #file;\n #uploadHasStarted = false;\n #onError;\n #onSuccess;\n #shouldUseMultipart;\n #isRestoring;\n #onReject = (err) => err?.cause === pausingUploadReason ? null : this.#onError(err);\n #maxMultipartParts = 10_000;\n #minPartSize = 5 * MB;\n constructor(data, options) {\n this.options = {\n ...defaultOptions,\n ...options,\n };\n // Use default `getChunkSize` if it was null or something\n this.options.getChunkSize ??= defaultOptions.getChunkSize;\n this.#data = data;\n this.#file = options.file;\n this.#onSuccess = this.options.onSuccess;\n this.#onError = this.options.onError;\n this.#shouldUseMultipart = this.options.shouldUseMultipart;\n // When we are restoring an upload, we already have an UploadId and a Key. Otherwise\n // we need to call `createMultipartUpload` to get an `uploadId` and a `key`.\n // Non-multipart uploads are not restorable.\n this.#isRestoring = (options.uploadId && options.key);\n this.#initChunks();\n }\n // initChunks checks the user preference for using multipart uploads (opts.shouldUseMultipart)\n // and calculates the optimal part size. When using multipart part uploads every part except for the last has\n // to be at least 5 MB and there can be no more than 10K parts.\n // This means we sometimes need to change the preferred part size from the user in order to meet these requirements.\n #initChunks() {\n const fileSize = this.#data.size;\n const shouldUseMultipart = typeof this.#shouldUseMultipart === 'function'\n ? this.#shouldUseMultipart(this.#file)\n : Boolean(this.#shouldUseMultipart);\n if (shouldUseMultipart && fileSize > this.#minPartSize) {\n // At least 5MB per request:\n let chunkSize = Math.max(this.options.getChunkSize(this.#data), // Math.max can take undefined but TS does not think so\n this.#minPartSize);\n let arraySize = Math.floor(fileSize / chunkSize);\n // At most 10k requests per file:\n if (arraySize > this.#maxMultipartParts) {\n arraySize = this.#maxMultipartParts;\n chunkSize = fileSize / this.#maxMultipartParts;\n }\n this.#chunks = Array(arraySize);\n for (let offset = 0, j = 0; offset < fileSize; offset += chunkSize, j++) {\n const end = Math.min(fileSize, offset + chunkSize);\n // Defer data fetching/slicing until we actually need the data, because it's slow if we have a lot of files\n const getData = () => {\n const i2 = offset;\n return this.#data.slice(i2, end);\n };\n this.#chunks[j] = {\n getData,\n onProgress: this.#onPartProgress(j),\n onComplete: this.#onPartComplete(j),\n shouldUseMultipart,\n };\n if (this.#isRestoring) {\n const size = offset + chunkSize > fileSize ? fileSize - offset : chunkSize;\n // setAsUploaded is called by listPart, to keep up-to-date the\n // quantity of data that is left to actually upload.\n this.#chunks[j].setAsUploaded = () => {\n this.#chunks[j] = null;\n this.#chunkState[j].uploaded = size;\n };\n }\n }\n }\n else {\n this.#chunks = [\n {\n getData: () => this.#data,\n onProgress: this.#onPartProgress(0),\n onComplete: this.#onPartComplete(0),\n shouldUseMultipart,\n },\n ];\n }\n this.#chunkState = this.#chunks.map(() => ({ uploaded: 0 }));\n }\n #createUpload() {\n this.options.companionComm\n .uploadFile(this.#file, this.#chunks, this.#abortController.signal)\n .then(this.#onSuccess, this.#onReject);\n this.#uploadHasStarted = true;\n }\n #resumeUpload() {\n this.options.companionComm\n .resumeUploadFile(this.#file, this.#chunks, this.#abortController.signal)\n .then(this.#onSuccess, this.#onReject);\n }\n #onPartProgress = (index) => (ev) => {\n if (!ev.lengthComputable)\n return;\n this.#chunkState[index].uploaded = ensureInt(ev.loaded);\n const totalUploaded = this.#chunkState.reduce((n, c) => n + c.uploaded, 0);\n this.options.onProgress(totalUploaded, this.#data.size);\n };\n #onPartComplete = (index) => (etag) => {\n // This avoids the net::ERR_OUT_OF_MEMORY in Chromium Browsers.\n this.#chunks[index] = null;\n this.#chunkState[index].etag = etag;\n this.#chunkState[index].done = true;\n const part = {\n PartNumber: index + 1,\n ETag: etag,\n };\n this.options.onPartComplete(part);\n };\n #abortUpload() {\n this.#abortController.abort();\n this.options.companionComm\n .abortFileUpload(this.#file)\n .catch((err) => this.options.log(err));\n }\n start() {\n if (this.#uploadHasStarted) {\n if (!this.#abortController.signal.aborted)\n this.#abortController.abort(pausingUploadReason);\n this.#abortController = new AbortController();\n this.#resumeUpload();\n }\n else if (this.#isRestoring) {\n this.options.companionComm.restoreUploadFile(this.#file, {\n uploadId: this.options.uploadId,\n key: this.options.key,\n });\n this.#resumeUpload();\n }\n else {\n this.#createUpload();\n }\n }\n pause() {\n this.#abortController.abort(pausingUploadReason);\n // Swap it out for a new controller, because this instance may be resumed later.\n this.#abortController = new AbortController();\n }\n abort(opts) {\n if (opts?.really)\n this.#abortUpload();\n else\n this.pause();\n }\n [Symbol.for('uppy test: getChunkState')]() {\n return this.#chunkState;\n }\n}\nexport default MultipartUploader;\n","import { createAbortError } from '@uppy/utils/lib/AbortController';\nexport function throwIfAborted(signal) {\n if (signal?.aborted) {\n throw createAbortError('The operation was aborted', {\n cause: signal.reason,\n });\n }\n}\n","import { pausingUploadReason } from './MultipartUploader.js';\nimport { throwIfAborted } from './utils.js';\nfunction removeMetadataFromURL(urlString) {\n const urlObject = new URL(urlString);\n urlObject.search = '';\n urlObject.hash = '';\n return urlObject.href;\n}\nexport class HTTPCommunicationQueue {\n #abortMultipartUpload;\n #cache = new WeakMap();\n #createMultipartUpload;\n #fetchSignature;\n #getUploadParameters;\n #listParts;\n #previousRetryDelay;\n #requests;\n #retryDelays;\n #sendCompletionRequest;\n #setS3MultipartState;\n #uploadPartBytes;\n #getFile;\n constructor(requests, options, setS3MultipartState, getFile) {\n this.#requests = requests;\n this.#setS3MultipartState = setS3MultipartState;\n this.#getFile = getFile;\n this.setOptions(options);\n }\n setOptions(options) {\n const requests = this.#requests;\n if ('abortMultipartUpload' in options) {\n this.#abortMultipartUpload = requests.wrapPromiseFunction(options.abortMultipartUpload, { priority: 1 });\n }\n if ('createMultipartUpload' in options) {\n this.#createMultipartUpload = requests.wrapPromiseFunction(options.createMultipartUpload, { priority: -1 });\n }\n if ('signPart' in options) {\n this.#fetchSignature = requests.wrapPromiseFunction(options.signPart);\n }\n if ('listParts' in options) {\n this.#listParts = requests.wrapPromiseFunction(options.listParts);\n }\n if ('completeMultipartUpload' in options) {\n this.#sendCompletionRequest = requests.wrapPromiseFunction(options.completeMultipartUpload, { priority: 1 });\n }\n if ('retryDelays' in options) {\n this.#retryDelays = options.retryDelays ?? [];\n }\n if ('uploadPartBytes' in options) {\n this.#uploadPartBytes = requests.wrapPromiseFunction(options.uploadPartBytes, { priority: Infinity });\n }\n if ('getUploadParameters' in options) {\n this.#getUploadParameters = requests.wrapPromiseFunction(options.getUploadParameters);\n }\n }\n async #shouldRetry(err, retryDelayIterator) {\n const requests = this.#requests;\n const status = err?.source?.status;\n // TODO: this retry logic is taken out of Tus. We should have a centralized place for retrying,\n // perhaps the rate limited queue, and dedupe all plugins with that.\n if (status == null) {\n return false;\n }\n if (status === 403 && err.message === 'Request has expired') {\n if (!requests.isPaused) {\n // We don't want to exhaust the retryDelayIterator as long as there are\n // more than one request in parallel, to give slower connection a chance\n // to catch up with the expiry set in Companion.\n if (requests.limit === 1 || this.#previousRetryDelay == null) {\n const next = retryDelayIterator.next();\n if (next == null || next.done) {\n return false;\n }\n // If there are more than 1 request done in parallel, the RLQ limit is\n // decreased and the failed request is requeued after waiting for a bit.\n // If there is only one request in parallel, the limit can't be\n // decreased, so we iterate over `retryDelayIterator` as we do for\n // other failures.\n // `#previousRetryDelay` caches the value so we can re-use it next time.\n this.#previousRetryDelay = next.value;\n }\n // No need to stop the other requests, we just want to lower the limit.\n requests.rateLimit(0);\n await new Promise((resolve) => setTimeout(resolve, this.#previousRetryDelay));\n }\n }\n else if (status === 429) {\n // HTTP 429 Too Many Requests => to avoid the whole download to fail, pause all requests.\n if (!requests.isPaused) {\n const next = retryDelayIterator.next();\n if (next == null || next.done) {\n return false;\n }\n requests.rateLimit(next.value);\n }\n }\n else if (status > 400 && status < 500 && status !== 409) {\n // HTTP 4xx, the server won't send anything, it's doesn't make sense to retry\n return false;\n }\n else if (typeof navigator !== 'undefined' && navigator.onLine === false) {\n // The navigator is offline, let's wait for it to come back online.\n if (!requests.isPaused) {\n requests.pause();\n window.addEventListener('online', () => {\n requests.resume();\n }, { once: true });\n }\n }\n else {\n // Other error code means the request can be retried later.\n const next = retryDelayIterator.next();\n if (next == null || next.done) {\n return false;\n }\n await new Promise((resolve) => setTimeout(resolve, next.value));\n }\n return true;\n }\n async getUploadId(file, signal) {\n let cachedResult;\n // As the cache is updated asynchronously, there could be a race condition\n // where we just miss a new result so we loop here until we get nothing back,\n // at which point it's out turn to create a new cache entry.\n for (;;) {\n cachedResult = this.#cache.get(file.data);\n if (cachedResult == null)\n break;\n try {\n return await cachedResult;\n }\n catch {\n // In case of failure, we want to ignore the cached error.\n // At this point, either there's a new cached value, or we'll exit the loop a create a new one.\n }\n }\n const promise = this.#createMultipartUpload(this.#getFile(file), signal);\n const abortPromise = () => {\n promise.abort(signal.reason);\n this.#cache.delete(file.data);\n };\n signal.addEventListener('abort', abortPromise, { once: true });\n this.#cache.set(file.data, promise);\n promise.then(async (result) => {\n signal.removeEventListener('abort', abortPromise);\n this.#setS3MultipartState(file, result);\n this.#cache.set(file.data, result);\n }, () => {\n signal.removeEventListener('abort', abortPromise);\n this.#cache.delete(file.data);\n });\n return promise;\n }\n async abortFileUpload(file) {\n const result = this.#cache.get(file.data);\n if (result == null) {\n // If the createMultipartUpload request never was made, we don't\n // need to send the abortMultipartUpload request.\n return;\n }\n // Remove the cache entry right away for follow-up requests do not try to\n // use the soon-to-be aborted cached values.\n this.#cache.delete(file.data);\n this.#setS3MultipartState(file, Object.create(null));\n let awaitedResult;\n try {\n awaitedResult = await result;\n }\n catch {\n // If the cached result rejects, there's nothing to abort.\n return;\n }\n await this.#abortMultipartUpload(this.#getFile(file), awaitedResult);\n }\n async #nonMultipartUpload(file, chunk, signal) {\n const { method = 'POST', url, fields, headers, } = await this.#getUploadParameters(this.#getFile(file), {\n signal,\n }).abortOn(signal);\n let body;\n const data = chunk.getData();\n if (method.toUpperCase() === 'POST') {\n const formData = new FormData();\n Object.entries(fields).forEach(([key, value]) => formData.set(key, value));\n formData.set('file', data);\n body = formData;\n }\n else {\n body = data;\n }\n const { onProgress, onComplete } = chunk;\n const result = (await this.#uploadPartBytes({\n signature: { url, headers, method },\n body,\n size: data.size,\n onProgress,\n onComplete,\n signal,\n }).abortOn(signal)); // todo this doesn't make sense\n // Note: `fields.key` is not returned by old Companion versions.\n // See https://github.com/transloadit/uppy/pull/5602\n const key = fields?.key;\n this.#setS3MultipartState(file, { key: key });\n return {\n ...result,\n location: result.location ?? removeMetadataFromURL(url),\n bucket: fields?.bucket,\n key,\n };\n }\n async uploadFile(file, chunks, signal) {\n throwIfAborted(signal);\n if (chunks.length === 1 && !chunks[0].shouldUseMultipart) {\n return this.#nonMultipartUpload(file, chunks[0], signal);\n }\n const { uploadId, key } = await this.getUploadId(file, signal);\n throwIfAborted(signal);\n try {\n const parts = await Promise.all(chunks.map((chunk, i) => this.uploadChunk(file, i + 1, chunk, signal)));\n throwIfAborted(signal);\n return await this.#sendCompletionRequest(this.#getFile(file), { key, uploadId, parts, signal }, signal).abortOn(signal);\n }\n catch (err) {\n if (err?.cause !== pausingUploadReason && err?.name !== 'AbortError') {\n // We purposefully don't wait for the promise and ignore its status,\n // because we want the error `err` to bubble up ASAP to report it to the\n // user. A failure to abort is not that big of a deal anyway.\n this.abortFileUpload(file);\n }\n throw err;\n }\n }\n restoreUploadFile(file, uploadIdAndKey) {\n this.#cache.set(file.data, uploadIdAndKey);\n }\n async resumeUploadFile(file, chunks, signal) {\n throwIfAborted(signal);\n if (chunks.length === 1 &&\n chunks[0] != null &&\n !chunks[0].shouldUseMultipart) {\n return this.#nonMultipartUpload(file, chunks[0], signal);\n }\n const { uploadId, key } = await this.getUploadId(file, signal);\n throwIfAborted(signal);\n const alreadyUploadedParts = await this.#listParts(this.#getFile(file), { uploadId, key, signal }, signal).abortOn(signal);\n throwIfAborted(signal);\n const parts = await Promise.all(chunks.map((chunk, i) => {\n const partNumber = i + 1;\n const alreadyUploadedInfo = alreadyUploadedParts.find(({ PartNumber }) => PartNumber === partNumber);\n if (alreadyUploadedInfo == null) {\n return this.uploadChunk(file, partNumber, chunk, signal);\n }\n // Already uploaded chunks are set to null. If we are restoring the upload, we need to mark it as already uploaded.\n chunk?.setAsUploaded?.();\n return { PartNumber: partNumber, ETag: alreadyUploadedInfo.ETag };\n }));\n throwIfAborted(signal);\n return this.#sendCompletionRequest(this.#getFile(file), { key, uploadId, parts, signal }, signal).abortOn(signal);\n }\n async uploadChunk(file, partNumber, chunk, signal) {\n throwIfAborted(signal);\n const { uploadId, key } = await this.getUploadId(file, signal);\n const signatureRetryIterator = this.#retryDelays.values();\n const chunkRetryIterator = this.#retryDelays.values();\n const shouldRetrySignature = () => {\n const next = signatureRetryIterator.next();\n if (next == null || next.done) {\n return null;\n }\n return next.value;\n };\n for (;;) {\n throwIfAborted(signal);\n const chunkData = chunk.getData();\n const { onProgress, onComplete } = chunk;\n let signature;\n try {\n signature = await this.#fetchSignature(this.#getFile(file), {\n // Always defined for multipart uploads\n uploadId: uploadId,\n key,\n partNumber,\n body: chunkData,\n signal,\n }).abortOn(signal);\n }\n catch (err) {\n const timeout = shouldRetrySignature();\n if (timeout == null || signal.aborted) {\n throw err;\n }\n await new Promise((resolve) => setTimeout(resolve, timeout));\n continue;\n }\n throwIfAborted(signal);\n try {\n return {\n PartNumber: partNumber,\n ...(await this.#uploadPartBytes({\n signature,\n body: chunkData,\n size: chunkData.size,\n onProgress,\n onComplete,\n signal,\n }).abortOn(signal)),\n };\n }\n catch (err) {\n if (!(await this.#shouldRetry(err, chunkRetryIterator)))\n throw err;\n }\n }\n }\n}\n","import { RequestClient } from '@uppy/companion-client';\nimport { BasePlugin, } from '@uppy/core';\nimport EventManager from '@uppy/core/lib/EventManager.js';\nimport { createAbortError } from '@uppy/utils/lib/AbortController';\nimport { filterFilesToEmitUploadStarted, filterNonFailedFiles, } from '@uppy/utils/lib/fileFilters';\nimport getAllowedMetaFields from '@uppy/utils/lib/getAllowedMetaFields';\nimport { RateLimitedQueue } from '@uppy/utils/lib/RateLimitedQueue';\nimport packageJson from '../package.json' with { type: 'json' };\nimport createSignedURL from './createSignedURL.js';\nimport { HTTPCommunicationQueue } from './HTTPCommunicationQueue.js';\nimport MultipartUploader from './MultipartUploader.js';\nimport { throwIfAborted } from './utils.js';\nfunction assertServerError(res) {\n if (res?.error) {\n const error = new Error(res.message);\n Object.assign(error, res.error);\n throw error;\n }\n return res;\n}\n/**\n * Computes the expiry time for a request signed with temporary credentials. If\n * no expiration was provided, or an invalid value (e.g. in the past) is\n * provided, undefined is returned. This function assumes the client clock is in\n * sync with the remote server, which is a requirement for the signature to be\n * validated for AWS anyway.\n */\nfunction getExpiry(credentials) {\n const expirationDate = credentials.Expiration;\n if (expirationDate) {\n const timeUntilExpiry = Math.floor((new Date(expirationDate) - Date.now()) / 1000);\n if (timeUntilExpiry > 9) {\n return timeUntilExpiry;\n }\n }\n return undefined;\n}\nfunction getAllowedMetadata({ meta, allowedMetaFields, querify = false, }) {\n const metaFields = allowedMetaFields ?? Object.keys(meta);\n if (!meta)\n return {};\n return Object.fromEntries(metaFields\n .filter((key) => meta[key] != null)\n .map((key) => {\n const realKey = querify ? `metadata[${key}]` : key;\n const value = String(meta[key]);\n return [realKey, value];\n }));\n}\nconst defaultOptions = {\n allowedMetaFields: true,\n limit: 6,\n getTemporarySecurityCredentials: false,\n shouldUseMultipart: ((file) => (file.size || 0) > 100 * 1024 * 1024),\n retryDelays: [0, 1000, 3000, 5000],\n};\nexport default class AwsS3Multipart extends BasePlugin {\n static VERSION = packageJson.version;\n #companionCommunicationQueue;\n #client;\n requests;\n uploaderEvents;\n uploaders;\n constructor(uppy, opts) {\n super(uppy, {\n ...defaultOptions,\n uploadPartBytes: AwsS3Multipart.uploadPartBytes,\n createMultipartUpload: null,\n listParts: null,\n abortMultipartUpload: null,\n completeMultipartUpload: null,\n signPart: null,\n getUploadParameters: null,\n ...opts,\n });\n // We need the `as any` here because of the dynamic default options.\n this.type = 'uploader';\n this.id = this.opts.id || 'AwsS3Multipart';\n this.#setClient(opts);\n const dynamicDefaultOptions = {\n createMultipartUpload: this.createMultipartUpload,\n listParts: this.listParts,\n abortMultipartUpload: this.abortMultipartUpload,\n completeMultipartUpload: this.completeMultipartUpload,\n signPart: opts?.getTemporarySecurityCredentials\n ? this.createSignedURL\n : this.signPart,\n getUploadParameters: opts?.getTemporarySecurityCredentials\n ? this.createSignedURL\n : this.getUploadParameters,\n };\n for (const key of Object.keys(dynamicDefaultOptions)) {\n if (this.opts[key] == null) {\n this.opts[key] =\n dynamicDefaultOptions[key].bind(this);\n }\n }\n /**\n * Simultaneous upload limiting is shared across all uploads with this plugin.\n *\n * @type {RateLimitedQueue}\n */\n this.requests =\n this.opts.rateLimitedQueue ??\n new RateLimitedQueue(this.opts.limit);\n this.#companionCommunicationQueue = new HTTPCommunicationQueue(this.requests, this.opts, this.#setS3MultipartState, this.#getFile);\n this.uploaders = Object.create(null);\n this.uploaderEvents = Object.create(null);\n }\n [Symbol.for('uppy test: getClient')]() {\n return this.#client;\n }\n #setClient(opts) {\n if (opts == null ||\n !('endpoint' in opts ||\n 'companionUrl' in opts ||\n 'headers' in opts ||\n 'companionHeaders' in opts ||\n 'cookiesRule' in opts ||\n 'companionCookiesRule' in opts))\n return;\n if ('companionUrl' in opts && !('endpoint' in opts)) {\n this.uppy.log('`companionUrl` option has been removed in @uppy/aws-s3, use `endpoint` instead.', 'warning');\n }\n if ('companionHeaders' in opts && !('headers' in opts)) {\n this.uppy.log('`companionHeaders` option has been removed in @uppy/aws-s3, use `headers` instead.', 'warning');\n }\n if ('companionCookiesRule' in opts && !('cookiesRule' in opts)) {\n this.uppy.log('`companionCookiesRule` option has been removed in @uppy/aws-s3, use `cookiesRule` instead.', 'warning');\n }\n if ('endpoint' in opts) {\n this.#client = new RequestClient(this.uppy, {\n pluginId: this.id,\n provider: 'AWS',\n companionUrl: this.opts.endpoint,\n companionHeaders: this.opts.headers,\n companionCookiesRule: this.opts.cookiesRule,\n });\n }\n else {\n if ('headers' in opts) {\n this.#setCompanionHeaders();\n }\n if ('cookiesRule' in opts) {\n this.#client.opts.companionCookiesRule = opts.cookiesRule;\n }\n }\n }\n setOptions(newOptions) {\n this.#companionCommunicationQueue.setOptions(newOptions);\n super.setOptions(newOptions);\n this.#setClient(newOptions);\n }\n /**\n * Clean up all references for a file's upload: the MultipartUploader instance,\n * any events related to the file, and the Companion WebSocket connection.\n *\n * Set `opts.abort` to tell S3 that the multipart upload is cancelled and must be removed.\n * This should be done when the user cancels the upload, not when the upload is completed or errored.\n */\n resetUploaderReferences(fileID, opts) {\n if (this.uploaders[fileID]) {\n this.uploaders[fileID].abort({ really: opts?.abort || false });\n this.uploaders[fileID] = null;\n }\n if (this.uploaderEvents[fileID]) {\n this.uploaderEvents[fileID].remove();\n this.uploaderEvents[fileID] = null;\n }\n }\n #assertHost(method) {\n if (!this.#client) {\n throw new Error(`Expected a \\`endpoint\\` option containing a URL, or if you are not using Companion, a custom \\`${method}\\` implementation.`);\n }\n }\n createMultipartUpload(file, signal) {\n this.#assertHost('createMultipartUpload');\n throwIfAborted(signal);\n const allowedMetaFields = getAllowedMetaFields(this.opts.allowedMetaFields, file.meta);\n const metadata = getAllowedMetadata({ meta: file.meta, allowedMetaFields });\n return this.#client\n .post('s3/multipart', {\n filename: file.name,\n type: file.type,\n metadata,\n }, { signal })\n .then(assertServerError);\n }\n listParts(file, { key, uploadId, signal }, oldSignal) {\n signal ??= oldSignal;\n this.#assertHost('listParts');\n throwIfAborted(signal);\n const filename = encodeURIComponent(key);\n return this.#client\n .get(`s3/multipart/${encodeURIComponent(uploadId)}?key=${filename}`, { signal })\n .then(assertServerError);\n }\n completeMultipartUpload(file, { key, uploadId, parts, signal }, oldSignal) {\n signal ??= oldSignal;\n this.#assertHost('completeMultipartUpload');\n throwIfAborted(signal);\n const filename = encodeURIComponent(key);\n const uploadIdEnc = encodeURIComponent(uploadId);\n return this.#client\n .post(`s3/multipart/${uploadIdEnc}/complete?key=${filename}`, { parts: parts.map(({ ETag, PartNumber }) => ({ ETag, PartNumber })) }, { signal })\n .then(assertServerError);\n }\n #cachedTemporaryCredentials;\n async #getTemporarySecurityCredentials(options) {\n throwIfAborted(options?.signal);\n if (this.#cachedTemporaryCredentials == null) {\n const { getTemporarySecurityCredentials } = this.opts;\n // We do not await it just yet, so concurrent calls do not try to override it:\n if (getTemporarySecurityCredentials === true) {\n this.#assertHost('getTemporarySecurityCredentials');\n this.#cachedTemporaryCredentials = this.#client\n .get('s3/sts', options)\n .then(assertServerError);\n }\n else {\n this.#cachedTemporaryCredentials =\n getTemporarySecurityCredentials(options);\n }\n this.#cachedTemporaryCredentials = await this.#cachedTemporaryCredentials;\n setTimeout(() => {\n // At half the time left before expiration, we clear the cache. That's\n // an arbitrary tradeoff to limit the number of requests made to the\n // remote while limiting the risk of using an expired token in case the\n // clocks are not exactly synced.\n // The HTTP cache should be configured to ensure a client doesn't request\n // more tokens than it needs, but this timeout provides a second layer of\n // security in case the HTTP cache is disabled or misconfigured.\n this.#cachedTemporaryCredentials = null;\n }, (getExpiry(this.#cachedTemporaryCredentials.credentials) || 0) * 500);\n }\n return this.#cachedTemporaryCredentials;\n }\n async createSignedURL(file, options) {\n const data = await this.#getTemporarySecurityCredentials(options);\n const expires = getExpiry(data.credentials) || 604_800; // 604 800 is the max value accepted by AWS.\n const { uploadId, key, partNumber } = options;\n // Return an object in the correct shape.\n return {\n method: 'PUT',\n expires,\n fields: {},\n url: `${await createSignedURL({\n accountKey: data.credentials.AccessKeyId,\n accountSecret: data.credentials.SecretAccessKey,\n sessionToken: data.credentials.SessionToken,\n expires,\n bucketName: data.bucket,\n Region: data.region,\n Key: key ?? `${crypto.randomUUID()}-${file.name}`,\n uploadId,\n partNumber,\n })}`,\n // Provide content type header required by S3\n headers: {\n 'Content-Type': file.type,\n },\n };\n }\n signPart(file, { uploadId, key, partNumber, signal }) {\n this.#assertHost('signPart');\n throwIfAborted(signal);\n if (uploadId == null || key == null || partNumber == null) {\n throw new Error('Cannot sign without a key, an uploadId, and a partNumber');\n }\n const filename = encodeURIComponent(key);\n return this.#client\n .get(`s3/multipart/${encodeURIComponent(uploadId)}/${partNumber}?key=${filename}`, { signal })\n .then(assertServerError);\n }\n abortMultipartUpload(file, { key, uploadId, signal }) {\n this.#assertHost('abortMultipartUpload');\n const filename = encodeURIComponent(key);\n const uploadIdEnc = encodeURIComponent(uploadId);\n return this.#client\n .delete(`s3/multipart/${uploadIdEnc}?key=${filename}`, undefined, {\n signal,\n })\n .then(assertServerError);\n }\n getUploadParameters(file, options) {\n this.#assertHost('getUploadParameters');\n const { meta } = file;\n const { type, name: filename } = meta;\n const allowedMetaFields = getAllowedMetaFields(this.opts.allowedMetaFields, file.meta);\n const metadata = getAllowedMetadata({\n meta,\n allowedMetaFields,\n querify: true,\n });\n const query = new URLSearchParams({ filename, type, ...metadata });\n return this.#client.get(`s3/params?${query}`, options);\n }\n static async uploadPartBytes({ signature: { url, expires, headers, method = 'PUT' }, body, size = body.size, onProgress, onComplete, signal, }) {\n throwIfAborted(signal);\n if (url == null) {\n throw new Error('Cannot upload to an undefined URL');\n }\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n if (headers) {\n Object.keys(headers).forEach((key) => {\n xhr.setRequestHeader(key, headers[key]);\n });\n }\n xhr.responseType = 'text';\n if (typeof expires === 'number') {\n xhr.timeout = expires * 1000;\n }\n function onabort() {\n xhr.abort();\n }\n function cleanup() {\n signal?.removeEventListener('abort', onabort);\n }\n signal?.addEventListener('abort', onabort);\n xhr.upload.addEventListener('progress', (ev) => {\n onProgress(ev);\n });\n xhr.addEventListener('abort', () => {\n cleanup();\n reject(createAbortError());\n });\n xhr.addEventListener('timeout', () => {\n cleanup();\n const error = new Error('Request has expired');\n error.source = { status: 403 };\n reject(error);\n });\n xhr.addEventListener('load', () => {\n cleanup();\n if (xhr.status === 403 &&\n xhr.responseText.includes('<Message>Request has expired</Message>')) {\n const error = new Error('Request has expired');\n error.source = xhr;\n reject(error);\n return;\n }\n if (xhr.status < 200 || xhr.status >= 300) {\n const error = new Error('Non 2xx');\n error.source = xhr;\n reject(error);\n return;\n }\n onProgress?.({ loaded: size, lengthComputable: true });\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#examples\n const arr = xhr\n .getAllResponseHeaders()\n .trim()\n .split(/[\\r\\n]+/);\n // @ts-expect-error null is allowed to avoid inherited properties\n const headersMap = { __proto__: null };\n for (const line of arr) {\n const parts = line.split(': ');\n const header = parts.shift();\n const value = parts.join(': ');\n headersMap[header] = value;\n }\n const { etag, location } = headersMap;\n // More info bucket settings when this is not present:\n // https://github.com/transloadit/uppy/issues/5388#issuecomment-2464885562\n if (method.toUpperCase() === 'POST' && location == null) {\n // Not being able to read the Location header is not a fatal error.\n console.error('@uppy/aws-s3: Could not read the Location header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3/#setting-up-your-s3-bucket');\n }\n if (etag == null) {\n console.error('@uppy/aws-s3: Could not read the ETag header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3/#setting-up-your-s3-bucket');\n return;\n }\n onComplete?.(etag);\n resolve({\n ...headersMap,\n ETag: etag, // keep capitalised ETag for backwards compatiblity\n });\n });\n xhr.addEventListener('error', (ev) => {\n cleanup();\n const error = new Error('Unknown error');\n error.source = ev.target;\n reject(error);\n });\n xhr.send(body);\n });\n }\n #setS3MultipartState = (file, { key, uploadId }) => {\n const cFile = this.uppy.getFile(file.id);\n if (cFile == null) {\n // file was removed from store\n return;\n }\n this.uppy.setFileState(file.id, {\n s3Multipart: {\n ...cFile.s3Multipart,\n key,\n uploadId,\n },\n });\n };\n #getFile = (file) => {\n return this.uppy.getFile(file.id) || file;\n };\n #uploadLocalFile(file) {\n return new Promise((resolve, reject) => {\n const onProgress = (bytesUploaded, bytesTotal) => {\n const latestFile = this.uppy.getFile(file.id);\n this.uppy.emit('upload-progress', latestFile, {\n uploadStarted: latestFile.progress.uploadStarted ?? 0,\n bytesUploaded,\n bytesTotal,\n });\n };\n const onError = (err) => {\n this.uppy.log(err);\n this.uppy.emit('upload-error', file, err);\n this.resetUploaderReferences(file.id);\n reject(err);\n };\n const onSuccess = (result) => {\n const uploadResp = {\n body: {\n ...result,\n },\n status: 200,\n uploadURL: result.location,\n };\n this.resetUploaderReferences(file.id);\n this.uppy.emit('upload-success', this.#getFile(file), uploadResp);\n if (result.location) {\n this.uppy.log(`Download ${file.name} from ${result.location}`);\n }\n resolve(undefined);\n };\n const upload = new MultipartUploader(file.data, {\n // .bind to pass the file object to each handler.\n companionComm: this.#companionCommunicationQueue,\n log: (...args) => this.uppy.log(...args),\n getChunkSize: this.opts.getChunkSize\n ? this.opts.getChunkSize.bind(this)\n : undefined,\n onProgress,\n onError,\n onSuccess,\n onPartComplete: (part) => {\n this.uppy.emit('s3-multipart:part-uploaded', this.#getFile(file), part);\n },\n file,\n shouldUseMultipart: this.opts.shouldUseMultipart,\n ...file.s3Multipart,\n });\n this.uploaders[file.id] = upload;\n const eventManager = new EventManager(this.uppy);\n this.uploaderEvents[file.id] = eventManager;\n eventManager.onFileRemove(file.id, (removed) => {\n upload.abort();\n this.resetUploaderReferences(file.id, { abort: true });\n resolve(`upload ${removed} was removed`);\n });\n eventManager.onCancelAll(file.id, () => {\n upload.abort();\n this.resetUploaderReferences(file.id, { abort: true });\n resolve(`upload ${file.id} was canceled`);\n });\n eventManager.onFilePause(file.id, (isPaused) => {\n if (isPaused) {\n upload.pause();\n }\n else {\n upload.start();\n }\n });\n eventManager.onPauseAll(file.id, () => {\n upload.pause();\n });\n eventManager.onResumeAll(file.id, () => {\n upload.start();\n });\n upload.start();\n });\n }\n #getCompanionClientArgs(file) {\n return {\n ...file.remote?.body,\n protocol: 's3-multipart',\n size: file.data.size,\n metadata: file.meta,\n };\n }\n #upload = async (fileIDs) => {\n if (fileIDs.length === 0)\n return undefined;\n const files = this.uppy.getFilesByIds(fileIDs);\n const filesFiltered = filterNonFailedFiles(files);\n const filesToEmit = filterFilesToEmitUploadStarted(filesFiltered);\n this.uppy.emit('upload-start', filesToEmit);\n const promises = filesFiltered.map((file) => {\n if (file.isRemote) {\n const getQueue = () => this.requests;\n this.#setResumableUploadsCapability(false);\n const controller = new AbortController();\n const removedHandler = (removedFile) => {\n if (removedFile.id === file.id)\n controller.abort();\n };\n this.uppy.on('file-removed', removedHandler);\n const uploadPromise = this.uppy\n .getRequestClientForFile(file)\n .uploadRemoteFile(file, this.#getCompanionClientArgs(file), {\n signal: controller.signal,\n getQueue,\n });\n this.requests.wrapSyncFunction(() => {\n this.uppy.off('file-removed', removedHandler);\n }, { priority: -1 })();\n return uploadPromise;\n }\n return this.#uploadLocalFile(file);\n });\n const upload = await Promise.allSettled(promises);\n // After the upload is done, another upload may happen with only local files.\n // We reset the capability so that the next upload can use resumable uploads.\n this.#setResumableUploadsCapability(true);\n return upload;\n };\n #setCompanionHeaders = () => {\n this.#client?.setCompanionHeaders(this.opts.headers);\n };\n #setResumableUploadsCapability = (boolean) => {\n const { capabilities } = this.uppy.getState();\n this.uppy.setState({\n capabilities: {\n ...capabilities,\n resumableUploads: boolean,\n },\n });\n };\n #resetResumableCapability = () => {\n this.#setResumableUploadsCapability(true);\n };\n install() {\n this.#setResumableUploadsCapability(true);\n this.uppy.addPreProcessor(this.#setCompanionHeaders);\n this.uppy.addUploader(this.#upload);\n this.uppy.on('cancel-all', this.#resetResumableCapability);\n }\n uninstall() {\n this.uppy.removePreProcessor(this.#setCompanionHeaders);\n this.uppy.removeUploader(this.#upload);\n this.uppy.off('cancel-all', this.#resetResumableCapability);\n }\n}\n","/**\n * Core plugin logic that all plugins share.\n *\n * BasePlugin does not contain DOM rendering so it can be used for plugins\n * without a user interface.\n *\n * See `Plugin` for the extended version with Preact rendering for interfaces.\n */\nimport Translator from '@uppy/utils/lib/Translator';\nexport default class BasePlugin {\n uppy;\n opts;\n id;\n defaultLocale;\n i18n;\n i18nArray;\n type;\n VERSION;\n constructor(uppy, opts) {\n this.uppy = uppy;\n this.opts = opts ?? {};\n }\n getPluginState() {\n const { plugins } = this.uppy.getState();\n return (plugins?.[this.id] || {});\n }\n setPluginState(update) {\n const { plugins } = this.uppy.getState();\n this.uppy.setState({\n plugins: {\n ...plugins,\n [this.id]: {\n ...plugins[this.id],\n ...update,\n },\n },\n });\n }\n setOptions(newOpts) {\n this.opts = { ...this.opts, ...newOpts };\n this.setPluginState(undefined); // so that UI re-renders with new options\n this.i18nInit();\n }\n i18nInit() {\n const translator = new Translator([\n this.defaultLocale,\n this.uppy.locale,\n this.opts.locale,\n ]);\n this.i18n = translator.translate.bind(translator);\n this.i18nArray = translator.translateArray.bind(translator);\n this.setPluginState(undefined); // so that UI re-renders and we see the updated locale\n }\n /**\n * Extendable methods\n * ==================\n * These methods are here to serve as an overview of the extendable methods as well as\n * making them not conditional in use, such as `if (this.afterUpdate)`.\n */\n addTarget(plugin) {\n throw new Error(\"Extend the addTarget method to add your plugin to another plugin's target\");\n }\n install() { }\n uninstall() { }\n update(state) { }\n // Called after every state update, after everything's mounted. Debounced.\n afterUpdate() { }\n}\n","import packageJson from '../package.json' with { type: 'json' };\n/**\n * Default store that keeps state in a simple object.\n */\nclass DefaultStore {\n static VERSION = packageJson.version;\n state = {};\n #callbacks = new Set();\n getState() {\n return this.state;\n }\n setState(patch) {\n const prevState = { ...this.state };\n const nextState = { ...this.state, ...patch };\n this.state = nextState;\n this.#publish(prevState, nextState, patch);\n }\n subscribe(listener) {\n this.#callbacks.add(listener);\n return () => {\n this.#callbacks.delete(listener);\n };\n }\n #publish(...args) {\n this.#callbacks.forEach((listener) => {\n listener(...args);\n });\n }\n}\nexport default DefaultStore;\n","/* @ts-self-types=\"./index.d.ts\" */\nlet urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nexport let customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nexport let nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n","export default function getFileName(fileType, fileDescriptor) {\n if (fileDescriptor.name) {\n return fileDescriptor.name;\n }\n if (fileType.split('/')[0] === 'image') {\n return `${fileType.split('/')[0]}.${fileType.split('/')[1]}`;\n }\n return 'noname';\n}\n","export default {\n strings: {\n addBulkFilesFailed: {\n 0: 'Failed to add %{smart_count} file due to an internal error',\n 1: 'Failed to add %{smart_count} files due to internal errors',\n },\n youCanOnlyUploadX: {\n 0: 'You can only upload %{smart_count} file',\n 1: 'You can only upload %{smart_count} files',\n },\n youHaveToAtLeastSelectX: {\n 0: 'You have to select at least %{smart_count} file',\n 1: 'You have to select at least %{smart_count} files',\n },\n aggregateExceedsSize: 'You selected %{size} of files, but maximum allowed size is %{sizeAllowed}',\n exceedsSize: '%{file} exceeds maximum allowed size of %{size}',\n missingRequiredMetaField: 'Missing required meta fields',\n missingRequiredMetaFieldOnFile: 'Missing required meta fields in %{fileName}',\n inferiorSize: 'This file is smaller than the allowed size of %{size}',\n youCanOnlyUploadFileTypes: 'You can only upload: %{types}',\n noMoreFilesAllowed: 'Cannot add more files',\n noDuplicates: \"Cannot add the duplicate file '%{fileName}', it already exists\",\n companionError: 'Connection with Companion failed',\n authAborted: 'Authentication aborted',\n companionUnauthorizeHint: 'To unauthorize to your %{provider} account, please go to %{url}',\n failedToUpload: 'Failed to upload %{file}',\n noInternetConnection: 'No Internet connection',\n connectedToInternet: 'Connected to the Internet',\n // Strings for remote providers\n noFilesFound: 'You have no files or folders here',\n noSearchResults: 'Unfortunately, there are no results for this search',\n selectX: {\n 0: 'Select %{smart_count}',\n 1: 'Select %{smart_count}',\n },\n allFilesFromFolderNamed: 'All files from folder %{name}',\n openFolderNamed: 'Open folder %{name}',\n cancel: 'Cancel',\n logOut: 'Log out',\n logIn: 'Log in',\n pickFiles: 'Pick files',\n pickPhotos: 'Pick photos',\n filter: 'Filter',\n resetFilter: 'Reset filter',\n loading: 'Loading...',\n loadedXFiles: 'Loaded %{numFiles} files',\n authenticateWithTitle: 'Please authenticate with %{pluginName} to select files',\n authenticateWith: 'Connect to %{pluginName}',\n signInWithGoogle: 'Sign in with Google',\n searchImages: 'Search for images',\n enterTextToSearch: 'Enter text to search for images',\n search: 'Search',\n resetSearch: 'Reset search',\n emptyFolderAdded: 'No files were added from empty folder',\n addedNumFiles: 'Added %{numFiles} file(s)',\n folderAlreadyAdded: 'The folder \"%{folder}\" was already added',\n folderAdded: {\n 0: 'Added %{smart_count} file from %{folder}',\n 1: 'Added %{smart_count} files from %{folder}',\n },\n additionalRestrictionsFailed: '%{count} additional restrictions were not fulfilled',\n unnamed: 'Unnamed',\n pleaseWait: 'Please wait',\n },\n};\n","/**\n * Adds zero to strings shorter than two characters.\n */\nfunction pad(number) {\n return number < 10 ? `0${number}` : number.toString();\n}\n/**\n * Returns a timestamp in the format of `hours:minutes:seconds`\n */\nexport default function getTimeStamp() {\n const date = new Date();\n const hours = pad(date.getHours());\n const minutes = pad(date.getMinutes());\n const seconds = pad(date.getSeconds());\n return `${hours}:${minutes}:${seconds}`;\n}\n","import getTimeStamp from '@uppy/utils/lib/getTimeStamp';\n// Swallow all logs, except errors.\n// default if logger is not set or debug: false\nconst justErrorsLogger = {\n debug: () => { },\n warn: () => { },\n error: (...args) => console.error(`[Uppy] [${getTimeStamp()}]`, ...args),\n};\n// Print logs to console with namespace + timestamp,\n// set by logger: Uppy.debugLogger or debug: true\nconst debugLogger = {\n debug: (...args) => console.debug(`[Uppy] [${getTimeStamp()}]`, ...args),\n warn: (...args) => console.warn(`[Uppy] [${getTimeStamp()}]`, ...args),\n error: (...args) => console.error(`[Uppy] [${getTimeStamp()}]`, ...args),\n};\nexport { justErrorsLogger, debugLogger };\n","import prettierBytes from '@transloadit/prettier-bytes';\n// @ts-ignore untyped\nimport match from 'mime-match';\nconst defaultOptions = {\n maxFileSize: null,\n minFileSize: null,\n maxTotalFileSize: null,\n maxNumberOfFiles: null,\n minNumberOfFiles: null,\n allowedFileTypes: null,\n requiredMetaFields: [],\n};\nclass RestrictionError extends Error {\n isUserFacing;\n file;\n constructor(message, opts) {\n super(message);\n this.isUserFacing = opts?.isUserFacing ?? true;\n if (opts?.file) {\n this.file = opts.file; // only some restriction errors are related to a particular file\n }\n }\n isRestriction = true;\n}\nclass Restricter {\n getI18n;\n getOpts;\n constructor(getOpts, getI18n) {\n this.getI18n = getI18n;\n this.getOpts = () => {\n const opts = getOpts();\n if (opts.restrictions?.allowedFileTypes != null &&\n !Array.isArray(opts.restrictions.allowedFileTypes)) {\n throw new TypeError('`restrictions.allowedFileTypes` must be an array');\n }\n return opts;\n };\n }\n // Because these operations are slow, we cannot run them for every file (if we are adding multiple files)\n validateAggregateRestrictions(existingFiles, addingFiles) {\n const { maxTotalFileSize, maxNumberOfFiles } = this.getOpts().restrictions;\n if (maxNumberOfFiles) {\n const nonGhostFiles = existingFiles.filter((f) => !f.isGhost);\n if (nonGhostFiles.length + addingFiles.length > maxNumberOfFiles) {\n throw new RestrictionError(`${this.getI18n()('youCanOnlyUploadX', {\n smart_count: maxNumberOfFiles,\n })}`);\n }\n }\n if (maxTotalFileSize) {\n const totalFilesSize = [...existingFiles, ...addingFiles].reduce((total, f) => total + (f.size ?? 0), 0);\n if (totalFilesSize > maxTotalFileSize) {\n throw new RestrictionError(this.getI18n()('aggregateExceedsSize', {\n sizeAllowed: prettierBytes(maxTotalFileSize),\n size: prettierBytes(totalFilesSize),\n }));\n }\n }\n }\n validateSingleFile(file) {\n const { maxFileSize, minFileSize, allowedFileTypes } = this.getOpts().restrictions;\n if (allowedFileTypes) {\n const isCorrectFileType = allowedFileTypes.some((type) => {\n // check if this is a mime-type\n if (type.includes('/')) {\n if (!file.type)\n return false;\n return match(file.type.replace(/;.*?$/, ''), type);\n }\n // otherwise this is likely an extension\n if (type[0] === '.' && file.extension) {\n return file.extension.toLowerCase() === type.slice(1).toLowerCase();\n }\n return false;\n });\n if (!isCorrectFileType) {\n const allowedFileTypesString = allowedFileTypes.join(', ');\n throw new RestrictionError(this.getI18n()('youCanOnlyUploadFileTypes', {\n types: allowedFileTypesString,\n }), { file });\n }\n }\n // We can't check maxFileSize if the size is unknown.\n if (maxFileSize && file.size != null && file.size > maxFileSize) {\n throw new RestrictionError(this.getI18n()('exceedsSize', {\n size: prettierBytes(maxFileSize),\n file: file.name ?? this.getI18n()('unnamed'),\n }), { file });\n }\n // We can't check minFileSize if the size is unknown.\n if (minFileSize && file.size != null && file.size < minFileSize) {\n throw new RestrictionError(this.getI18n()('inferiorSize', {\n size: prettierBytes(minFileSize),\n }), { file });\n }\n }\n validate(existingFiles, addingFiles) {\n addingFiles.forEach((addingFile) => {\n this.validateSingleFile(addingFile);\n });\n this.validateAggregateRestrictions(existingFiles, addingFiles);\n }\n validateMinNumberOfFiles(files) {\n const { minNumberOfFiles } = this.getOpts().restrictions;\n if (minNumberOfFiles && Object.keys(files).length < minNumberOfFiles) {\n throw new RestrictionError(this.getI18n()('youHaveToAtLeastSelectX', {\n smart_count: minNumberOfFiles,\n }));\n }\n }\n getMissingRequiredMetaFields(file) {\n const error = new RestrictionError(this.getI18n()('missingRequiredMetaFieldOnFile', {\n fileName: file.name ?? this.getI18n()('unnamed'),\n }));\n const { requiredMetaFields } = this.getOpts().restrictions;\n const missingFields = [];\n for (const field of requiredMetaFields) {\n if (!Object.hasOwn(file.meta, field) || file.meta[field] === '') {\n missingFields.push(field);\n }\n }\n return { missingFields, error };\n }\n}\nexport { Restricter, defaultOptions, RestrictionError };\n","// Edge 15.x does not fire 'progress' events on uploads.\n// See https://github.com/transloadit/uppy/issues/945\n// And https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12224510/\nexport default function supportsUploadProgress(userAgent) {\n // Allow passing in userAgent for tests\n if (userAgent == null && typeof navigator !== 'undefined') {\n userAgent = navigator.userAgent;\n }\n // Assume it works because basically everything supports progress events.\n if (!userAgent)\n return true;\n const m = /Edge\\/(\\d+\\.\\d+)/.exec(userAgent);\n if (!m)\n return true;\n const edgeVersion = m[1];\n const version = edgeVersion.split('.', 2);\n const major = parseInt(version[0], 10);\n const minor = parseInt(version[1], 10);\n // Worked before:\n // Edge 40.15063.0.0\n // Microsoft EdgeHTML 15.15063\n if (major < 15 || (major === 15 && minor < 15063)) {\n return true;\n }\n // Fixed in:\n // Microsoft EdgeHTML 18.18218\n if (major > 18 || (major === 18 && minor >= 18218)) {\n return true;\n }\n // other versions don't work.\n return false;\n}\n","/* global AggregateError */\nimport DefaultStore, {} from '@uppy/store-default';\nimport { getSafeFileId } from '@uppy/utils/lib/generateFileID';\nimport getFileNameAndExtension from '@uppy/utils/lib/getFileNameAndExtension';\nimport getFileType from '@uppy/utils/lib/getFileType';\nimport Translator from '@uppy/utils/lib/Translator';\nimport throttle from 'lodash/throttle.js';\n// @ts-ignore untyped\nimport ee from 'namespace-emitter';\nimport { nanoid } from 'nanoid/non-secure';\nimport packageJson from '../package.json' with { type: 'json' };\nimport getFileName from './getFileName.js';\nimport locale from './locale.js';\nimport { debugLogger, justErrorsLogger } from './loggers.js';\nimport { defaultOptions as defaultRestrictionOptions, Restricter, RestrictionError, } from './Restricter.js';\nimport supportsUploadProgress from './supportsUploadProgress.js';\nconst defaultUploadState = {\n totalProgress: 0,\n allowNewUpload: true,\n error: null,\n recoveredState: null,\n};\n/**\n * Uppy Core module.\n * Manages plugins, state updates, acts as an event bus,\n * adds/removes files and metadata.\n */\nexport class Uppy {\n static VERSION = packageJson.version;\n #plugins = Object.create(null);\n #restricter;\n #storeUnsubscribe;\n #emitter = ee();\n #preProcessors = new Set();\n #uploaders = new Set();\n #postProcessors = new Set();\n defaultLocale;\n locale;\n // The user optionally passes in options, but we set defaults for missing options.\n // We consider all options present after the contructor has run.\n opts;\n store;\n // Warning: do not use this from a plugin, as it will cause the plugins' translations to be missing\n i18n;\n i18nArray;\n scheduledAutoProceed = null;\n wasOffline = false;\n /**\n * Instantiate Uppy\n */\n constructor(opts) {\n this.defaultLocale = locale;\n const defaultOptions = {\n id: 'uppy',\n autoProceed: false,\n allowMultipleUploadBatches: true,\n debug: false,\n restrictions: defaultRestrictionOptions,\n meta: {},\n onBeforeFileAdded: (file, files) => !Object.hasOwn(files, file.id),\n onBeforeUpload: (files) => files,\n store: new DefaultStore(),\n logger: justErrorsLogger,\n infoTimeout: 5000,\n };\n const merged = { ...defaultOptions, ...opts };\n // Merge default options with the ones set by user,\n // making sure to merge restrictions too\n this.opts = {\n ...merged,\n restrictions: {\n ...defaultOptions.restrictions,\n ...opts?.restrictions,\n },\n };\n // Support debug: true for backwards-compatability, unless logger is set in opts\n // opts instead of this.opts to avoid comparing objects — we set logger: justErrorsLogger in defaultOptions\n if (opts?.logger && opts.debug) {\n this.log('You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.', 'warning');\n }\n else if (opts?.debug) {\n this.opts.logger = debugLogger;\n }\n this.log(`Using Core v${Uppy.VERSION}`);\n this.i18nInit();\n this.store = this.opts.store;\n this.setState({\n ...defaultUploadState,\n plugins: {},\n files: {},\n currentUploads: {},\n capabilities: {\n uploadProgress: supportsUploadProgress(),\n individualCancellation: true,\n resumableUploads: false,\n },\n meta: { ...this.opts.meta },\n info: [],\n });\n this.#restricter = new Restricter(() => this.opts, () => this.i18n);\n this.#storeUnsubscribe = this.store.subscribe((prevState, nextState, patch) => {\n this.emit('state-update', prevState, nextState, patch);\n this.updateAll(nextState);\n });\n // Exposing uppy object on window for debugging and testing\n if (this.opts.debug && typeof window !== 'undefined') {\n // @ts-ignore Mutating the global object for debug purposes\n window[this.opts.id] = this;\n }\n this.#addListeners();\n }\n emit(event, ...args) {\n this.#emitter.emit(event, ...args);\n }\n on(event, callback) {\n this.#emitter.on(event, callback);\n return this;\n }\n once(event, callback) {\n this.#emitter.once(event, callback);\n return this;\n }\n off(event, callback) {\n this.#emitter.off(event, callback);\n return this;\n }\n /**\n * Iterate on all plugins and run `update` on them.\n * Called each time state changes.\n *\n */\n updateAll(state) {\n this.iteratePlugins((plugin) => {\n plugin.update(state);\n });\n }\n /**\n * Updates state with a patch\n */\n setState(patch) {\n this.store.setState(patch);\n }\n /**\n * Returns current state.\n */\n getState() {\n return this.store.getState();\n }\n patchFilesState(filesWithNewState) {\n const existingFilesState = this.getState().files;\n this.setState({\n files: {\n ...existingFilesState,\n ...Object.fromEntries(Object.entries(filesWithNewState).map(([fileID, newFileState]) => [\n fileID,\n {\n ...existingFilesState[fileID],\n ...newFileState,\n },\n ])),\n },\n });\n }\n /**\n * Shorthand to set state for a specific file.\n */\n setFileState(fileID, state) {\n if (!this.getState().files[fileID]) {\n throw new Error(`Can’t set state for ${fileID} (the file could have been removed)`);\n }\n this.patchFilesState({ [fileID]: state });\n }\n i18nInit() {\n const onMissingKey = (key) => this.log(`Missing i18n string: ${key}`, 'error');\n const translator = new Translator([this.defaultLocale, this.opts.locale], {\n onMissingKey,\n });\n this.i18n = translator.translate.bind(translator);\n this.i18nArray = translator.translateArray.bind(translator);\n this.locale = translator.locale;\n }\n setOptions(newOpts) {\n this.opts = {\n ...this.opts,\n ...newOpts,\n restrictions: {\n ...this.opts.restrictions,\n ...newOpts?.restrictions,\n },\n };\n if (newOpts.meta) {\n this.setMeta(newOpts.meta);\n }\n this.i18nInit();\n if (newOpts.locale) {\n this.iteratePlugins((plugin) => {\n plugin.setOptions(newOpts);\n });\n }\n // Note: this is not the preact `setState`, it's an internal function that has the same name.\n this.setState(undefined); // so that UI re-renders with new options\n }\n resetProgress() {\n const defaultProgress = {\n percentage: 0,\n bytesUploaded: false,\n uploadComplete: false,\n uploadStarted: null,\n };\n const files = { ...this.getState().files };\n const updatedFiles = Object.create(null);\n Object.keys(files).forEach((fileID) => {\n updatedFiles[fileID] = {\n ...files[fileID],\n progress: {\n ...files[fileID].progress,\n ...defaultProgress,\n },\n // @ts-expect-error these typed are inserted\n // into the namespace in their respective packages\n // but core isn't ware of those\n tus: undefined,\n transloadit: undefined,\n };\n });\n this.setState({ files: updatedFiles, ...defaultUploadState });\n }\n clear() {\n const { capabilities, currentUploads } = this.getState();\n if (Object.keys(currentUploads).length > 0 &&\n !capabilities.individualCancellation) {\n throw new Error('The installed uploader plugin does not allow removing files during an upload.');\n }\n this.setState({ ...defaultUploadState, files: {} });\n }\n addPreProcessor(fn) {\n this.#preProcessors.add(fn);\n }\n removePreProcessor(fn) {\n return this.#preProcessors.delete(fn);\n }\n addPostProcessor(fn) {\n this.#postProcessors.add(fn);\n }\n removePostProcessor(fn) {\n return this.#postProcessors.delete(fn);\n }\n addUploader(fn) {\n this.#uploaders.add(fn);\n }\n removeUploader(fn) {\n return this.#uploaders.delete(fn);\n }\n setMeta(data) {\n const updatedMeta = { ...this.getState().meta, ...data };\n const updatedFiles = { ...this.getState().files };\n Object.keys(updatedFiles).forEach((fileID) => {\n updatedFiles[fileID] = {\n ...updatedFiles[fileID],\n meta: { ...updatedFiles[fileID].meta, ...data },\n };\n });\n this.log('Adding metadata:');\n this.log(data);\n this.setState({\n meta: updatedMeta,\n files: updatedFiles,\n });\n }\n setFileMeta(fileID, data) {\n const updatedFiles = { ...this.getState().files };\n if (!updatedFiles[fileID]) {\n this.log(`Was trying to set metadata for a file that has been removed: ${fileID}`);\n return;\n }\n const newMeta = { ...updatedFiles[fileID].meta, ...data };\n updatedFiles[fileID] = { ...updatedFiles[fileID], meta: newMeta };\n this.setState({ files: updatedFiles });\n }\n /**\n * Get a file object.\n */\n getFile(fileID) {\n return this.getState().files[fileID];\n }\n /**\n * Get all files in an array.\n */\n getFiles() {\n const { files } = this.getState();\n return Object.values(files);\n }\n getFilesByIds(ids) {\n return ids.map((id) => this.getFile(id));\n }\n getObjectOfFilesPerState() {\n const { files: filesObject, totalProgress, error } = this.getState();\n const files = Object.values(filesObject);\n const inProgressFiles = [];\n const newFiles = [];\n const startedFiles = [];\n const uploadStartedFiles = [];\n const pausedFiles = [];\n const completeFiles = [];\n const erroredFiles = [];\n const inProgressNotPausedFiles = [];\n const processingFiles = [];\n for (const file of files) {\n const { progress } = file;\n if (!progress.uploadComplete && progress.uploadStarted) {\n inProgressFiles.push(file);\n if (!file.isPaused) {\n inProgressNotPausedFiles.push(file);\n }\n }\n if (!progress.uploadStarted) {\n newFiles.push(file);\n }\n if (progress.uploadStarted ||\n progress.preprocess ||\n progress.postprocess) {\n startedFiles.push(file);\n }\n if (progress.uploadStarted) {\n uploadStartedFiles.push(file);\n }\n if (file.isPaused) {\n pausedFiles.push(file);\n }\n if (progress.uploadComplete) {\n completeFiles.push(file);\n }\n if (file.error) {\n erroredFiles.push(file);\n }\n if (progress.preprocess || progress.postprocess) {\n processingFiles.push(file);\n }\n }\n return {\n newFiles,\n startedFiles,\n uploadStartedFiles,\n pausedFiles,\n completeFiles,\n erroredFiles,\n inProgressFiles,\n inProgressNotPausedFiles,\n processingFiles,\n isUploadStarted: uploadStartedFiles.length > 0,\n isAllComplete: totalProgress === 100 &&\n completeFiles.length === files.length &&\n processingFiles.length === 0,\n isAllErrored: !!error && erroredFiles.length === files.length,\n isAllPaused: inProgressFiles.length !== 0 &&\n pausedFiles.length === inProgressFiles.length,\n isUploadInProgress: inProgressFiles.length > 0,\n isSomeGhost: files.some((file) => file.isGhost),\n };\n }\n #informAndEmit(errors) {\n for (const error of errors) {\n if (error.isRestriction) {\n this.emit('restriction-failed', error.file, error);\n }\n else {\n this.emit('error', error, error.file);\n }\n this.log(error, 'warning');\n }\n const userFacingErrors = errors.filter((error) => error.isUserFacing);\n // don't flood the user: only show the first 4 toasts\n const maxNumToShow = 4;\n const firstErrors = userFacingErrors.slice(0, maxNumToShow);\n const additionalErrors = userFacingErrors.slice(maxNumToShow);\n firstErrors.forEach(({ message, details = '' }) => {\n this.info({ message, details }, 'error', this.opts.infoTimeout);\n });\n if (additionalErrors.length > 0) {\n this.info({\n message: this.i18n('additionalRestrictionsFailed', {\n count: additionalErrors.length,\n }),\n });\n }\n }\n validateRestrictions(file, files = this.getFiles()) {\n try {\n this.#restricter.validate(files, [file]);\n }\n catch (err) {\n return err;\n }\n return null;\n }\n validateSingleFile(file) {\n try {\n this.#restricter.validateSingleFile(file);\n }\n catch (err) {\n return err.message;\n }\n return null;\n }\n validateAggregateRestrictions(files) {\n const existingFiles = this.getFiles();\n try {\n this.#restricter.validateAggregateRestrictions(existingFiles, files);\n }\n catch (err) {\n return err.message;\n }\n return null;\n }\n #checkRequiredMetaFieldsOnFile(file) {\n const { missingFields, error } = this.#restricter.getMissingRequiredMetaFields(file);\n if (missingFields.length > 0) {\n this.setFileState(file.id, { missingRequiredMetaFields: missingFields });\n this.log(error.message);\n this.emit('restriction-failed', file, error);\n return false;\n }\n if (missingFields.length === 0 && file.missingRequiredMetaFields) {\n this.setFileState(file.id, { missingRequiredMetaFields: [] });\n }\n return true;\n }\n #checkRequiredMetaFields(files) {\n let success = true;\n for (const file of Object.values(files)) {\n if (!this.#checkRequiredMetaFieldsOnFile(file)) {\n success = false;\n }\n }\n return success;\n }\n #assertNewUploadAllowed(file) {\n const { allowNewUpload } = this.getState();\n if (allowNewUpload === false) {\n const error = new RestrictionError(this.i18n('noMoreFilesAllowed'), {\n file,\n });\n this.#informAndEmit([error]);\n throw error;\n }\n }\n checkIfFileAlreadyExists(fileID) {\n const { files } = this.getState();\n if (files[fileID] && !files[fileID].isGhost) {\n return true;\n }\n return false;\n }\n /**\n * Create a file state object based on user-provided `addFile()` options.\n */\n #transformFile(fileDescriptorOrFile) {\n // Uppy expects files in { name, type, size, data } format.\n // If the actual File object is passed from input[type=file] or drag-drop,\n // we normalize it to match Uppy file object\n const file = (fileDescriptorOrFile instanceof File\n ? {\n name: fileDescriptorOrFile.name,\n type: fileDescriptorOrFile.type,\n size: fileDescriptorOrFile.size,\n data: fileDescriptorOrFile,\n }\n : fileDescriptorOrFile);\n const fileType = getFileType(file);\n const fileName = getFileName(fileType, file);\n const fileExtension = getFileNameAndExtension(fileName).extension;\n const id = getSafeFileId(file, this.getID());\n const meta = file.meta || {};\n meta.name = fileName;\n meta.type = fileType;\n // `null` means the size is unknown.\n const size = Number.isFinite(file.data.size)\n ? file.data.size\n : null;\n return {\n source: file.source || '',\n id,\n name: fileName,\n extension: fileExtension || '',\n meta: {\n ...this.getState().meta,\n ...meta,\n },\n type: fileType,\n data: file.data,\n progress: {\n percentage: 0,\n bytesUploaded: false,\n bytesTotal: size,\n uploadComplete: false,\n uploadStarted: null,\n },\n size,\n isGhost: false,\n isRemote: file.isRemote || false,\n remote: file.remote,\n preview: file.preview,\n };\n }\n // Schedule an upload if `autoProceed` is enabled.\n #startIfAutoProceed() {\n if (this.opts.autoProceed && !this.scheduledAutoProceed) {\n this.scheduledAutoProceed = setTimeout(() => {\n this.scheduledAutoProceed = null;\n this.upload().catch((err) => {\n if (!err.isRestriction) {\n this.log(err.stack || err.message || err);\n }\n });\n }, 4);\n }\n }\n #checkAndUpdateFileState(filesToAdd) {\n let { files: existingFiles } = this.getState();\n // create a copy of the files object only once\n let nextFilesState = { ...existingFiles };\n const validFilesToAdd = [];\n const errors = [];\n for (const fileToAdd of filesToAdd) {\n try {\n let newFile = this.#transformFile(fileToAdd);\n // If a file has been recovered (Golden Retriever), but we were unable to recover its data (probably too large),\n // users are asked to re-select these half-recovered files and then this method will be called again.\n // In order to keep the progress, meta and everything else, we keep the existing file,\n // but we replace `data`, and we remove `isGhost`, because the file is no longer a ghost now\n const isGhost = existingFiles[newFile.id]?.isGhost;\n if (isGhost) {\n const existingFileState = existingFiles[newFile.id];\n newFile = {\n ...existingFileState,\n isGhost: false,\n data: fileToAdd.data,\n };\n this.log(`Replaced the blob in the restored ghost file: ${newFile.name}, ${newFile.id}`);\n }\n const onBeforeFileAddedResult = this.opts.onBeforeFileAdded(newFile, nextFilesState);\n // update state after onBeforeFileAdded\n existingFiles = this.getState().files;\n nextFilesState = { ...existingFiles, ...nextFilesState };\n if (!onBeforeFileAddedResult &&\n this.checkIfFileAlreadyExists(newFile.id)) {\n throw new RestrictionError(this.i18n('noDuplicates', {\n fileName: newFile.name ?? this.i18n('unnamed'),\n }), { file: fileToAdd });\n }\n // Pass through reselected files from Golden Retriever\n if (onBeforeFileAddedResult === false && !isGhost) {\n // Don’t show UI info for this error, as it should be done by the developer\n throw new RestrictionError('Cannot add the file because onBeforeFileAdded returned false.', { isUserFacing: false, file: fileToAdd });\n }\n else if (typeof onBeforeFileAddedResult === 'object' &&\n onBeforeFileAddedResult !== null) {\n newFile = onBeforeFileAddedResult;\n }\n this.#restricter.validateSingleFile(newFile);\n // need to add it to the new local state immediately, so we can use the state to validate the next files too\n nextFilesState[newFile.id] = newFile;\n validFilesToAdd.push(newFile);\n }\n catch (err) {\n errors.push(err);\n }\n }\n try {\n // need to run this separately because it's much more slow, so if we run it inside the for-loop it will be very slow\n // when many files are added\n this.#restricter.validateAggregateRestrictions(Object.values(existingFiles), validFilesToAdd);\n }\n catch (err) {\n errors.push(err);\n // If we have any aggregate error, don't allow adding this batch\n return {\n nextFilesState: existingFiles,\n validFilesToAdd: [],\n errors,\n };\n }\n return {\n nextFilesState,\n validFilesToAdd,\n errors,\n };\n }\n /**\n * Add a new file to `state.files`. This will run `onBeforeFileAdded`,\n * try to guess file type in a clever way, check file against restrictions,\n * and start an upload if `autoProceed === true`.\n */\n addFile(file) {\n this.#assertNewUploadAllowed(file);\n const { nextFilesState, validFilesToAdd, errors } = this.#checkAndUpdateFileState([file]);\n const restrictionErrors = errors.filter((error) => error.isRestriction);\n this.#informAndEmit(restrictionErrors);\n if (errors.length > 0)\n throw errors[0];\n this.setState({ files: nextFilesState });\n const [firstValidFileToAdd] = validFilesToAdd;\n this.emit('file-added', firstValidFileToAdd);\n this.emit('files-added', validFilesToAdd);\n this.log(`Added file: ${firstValidFileToAdd.name}, ${firstValidFileToAdd.id}, mime type: ${firstValidFileToAdd.type}`);\n this.#startIfAutoProceed();\n return firstValidFileToAdd.id;\n }\n /**\n * Add multiple files to `state.files`. See the `addFile()` documentation.\n *\n * If an error occurs while adding a file, it is logged and the user is notified.\n * This is good for UI plugins, but not for programmatic use.\n * Programmatic users should usually still use `addFile()` on individual files.\n */\n addFiles(fileDescriptors) {\n this.#assertNewUploadAllowed();\n const { nextFilesState, validFilesToAdd, errors } = this.#checkAndUpdateFileState(fileDescriptors);\n const restrictionErrors = errors.filter((error) => error.isRestriction);\n this.#informAndEmit(restrictionErrors);\n const nonRestrictionErrors = errors.filter((error) => !error.isRestriction);\n if (nonRestrictionErrors.length > 0) {\n let message = 'Multiple errors occurred while adding files:\\n';\n nonRestrictionErrors.forEach((subError) => {\n message += `\\n * ${subError.message}`;\n });\n this.info({\n message: this.i18n('addBulkFilesFailed', {\n smart_count: nonRestrictionErrors.length,\n }),\n details: message,\n }, 'error', this.opts.infoTimeout);\n if (typeof AggregateError === 'function') {\n throw new AggregateError(nonRestrictionErrors, message);\n }\n else {\n const err = new Error(message);\n // @ts-expect-error fallback when AggregateError is not available\n err.errors = nonRestrictionErrors;\n throw err;\n }\n }\n // OK, we haven't thrown an error, we can start updating state and emitting events now:\n this.setState({ files: nextFilesState });\n validFilesToAdd.forEach((file) => {\n this.emit('file-added', file);\n });\n this.emit('files-added', validFilesToAdd);\n if (validFilesToAdd.length > 5) {\n this.log(`Added batch of ${validFilesToAdd.length} files`);\n }\n else {\n Object.values(validFilesToAdd).forEach((file) => {\n this.log(`Added file: ${file.name}\\n id: ${file.id}\\n type: ${file.type}`);\n });\n }\n if (validFilesToAdd.length > 0) {\n this.#startIfAutoProceed();\n }\n }\n removeFiles(fileIDs) {\n const { files, currentUploads } = this.getState();\n const updatedFiles = { ...files };\n const updatedUploads = { ...currentUploads };\n const removedFiles = Object.create(null);\n fileIDs.forEach((fileID) => {\n if (files[fileID]) {\n removedFiles[fileID] = files[fileID];\n delete updatedFiles[fileID];\n }\n });\n // Remove files from the `fileIDs` list in each upload.\n function fileIsNotRemoved(uploadFileID) {\n return removedFiles[uploadFileID] === undefined;\n }\n Object.keys(updatedUploads).forEach((uploadID) => {\n const newFileIDs = currentUploads[uploadID].fileIDs.filter(fileIsNotRemoved);\n // Remove the upload if no files are associated with it anymore.\n if (newFileIDs.length === 0) {\n delete updatedUploads[uploadID];\n return;\n }\n const { capabilities } = this.getState();\n if (newFileIDs.length !== currentUploads[uploadID].fileIDs.length &&\n !capabilities.individualCancellation) {\n throw new Error('The installed uploader plugin does not allow removing files during an upload.');\n }\n updatedUploads[uploadID] = {\n ...currentUploads[uploadID],\n fileIDs: newFileIDs,\n };\n });\n const stateUpdate = {\n currentUploads: updatedUploads,\n files: updatedFiles,\n };\n // If all files were removed - allow new uploads,\n // and clear recoveredState\n if (Object.keys(updatedFiles).length === 0) {\n stateUpdate.allowNewUpload = true;\n stateUpdate.error = null;\n stateUpdate.recoveredState = null;\n }\n this.setState(stateUpdate);\n this.#updateTotalProgressThrottled();\n const removedFileIDs = Object.keys(removedFiles);\n removedFileIDs.forEach((fileID) => {\n this.emit('file-removed', removedFiles[fileID]);\n });\n if (removedFileIDs.length > 5) {\n this.log(`Removed ${removedFileIDs.length} files`);\n }\n else {\n this.log(`Removed files: ${removedFileIDs.join(', ')}`);\n }\n }\n removeFile(fileID) {\n this.removeFiles([fileID]);\n }\n pauseResume(fileID) {\n if (!this.getState().capabilities.resumableUploads ||\n this.getFile(fileID).progress.uploadComplete) {\n return undefined;\n }\n const file = this.getFile(fileID);\n const wasPaused = file.isPaused || false;\n const isPaused = !wasPaused;\n this.setFileState(fileID, {\n isPaused,\n });\n this.emit('upload-pause', file, isPaused);\n return isPaused;\n }\n pauseAll() {\n const updatedFiles = { ...this.getState().files };\n const inProgressUpdatedFiles = Object.keys(updatedFiles).filter((file) => {\n return (!updatedFiles[file].progress.uploadComplete &&\n updatedFiles[file].progress.uploadStarted);\n });\n inProgressUpdatedFiles.forEach((file) => {\n const updatedFile = { ...updatedFiles[file], isPaused: true };\n updatedFiles[file] = updatedFile;\n });\n this.setState({ files: updatedFiles });\n this.emit('pause-all');\n }\n resumeAll() {\n const updatedFiles = { ...this.getState().files };\n const inProgressUpdatedFiles = Object.keys(updatedFiles).filter((file) => {\n return (!updatedFiles[file].progress.uploadComplete &&\n updatedFiles[file].progress.uploadStarted);\n });\n inProgressUpdatedFiles.forEach((file) => {\n const updatedFile = {\n ...updatedFiles[file],\n isPaused: false,\n error: null,\n };\n updatedFiles[file] = updatedFile;\n });\n this.setState({ files: updatedFiles });\n this.emit('resume-all');\n }\n #getFilesToRetry() {\n const { files } = this.getState();\n return Object.keys(files).filter((file) => {\n return files[file].error;\n });\n }\n async #doRetryAll() {\n const filesToRetry = this.#getFilesToRetry();\n const updatedFiles = { ...this.getState().files };\n filesToRetry.forEach((fileID) => {\n updatedFiles[fileID] = {\n ...updatedFiles[fileID],\n isPaused: false,\n error: null,\n };\n });\n this.setState({\n files: updatedFiles,\n error: null,\n });\n this.emit('retry-all', this.getFilesByIds(filesToRetry));\n if (filesToRetry.length === 0) {\n return {\n successful: [],\n failed: [],\n };\n }\n const uploadID = this.#createUpload(filesToRetry, {\n forceAllowNewUpload: true, // create new upload even if allowNewUpload: false\n });\n return this.#runUpload(uploadID);\n }\n async retryAll() {\n const result = await this.#doRetryAll();\n this.emit('complete', result);\n return result;\n }\n cancelAll() {\n this.emit('cancel-all');\n const { files } = this.getState();\n const fileIDs = Object.keys(files);\n if (fileIDs.length) {\n this.removeFiles(fileIDs);\n }\n this.setState(defaultUploadState);\n }\n retryUpload(fileID) {\n this.setFileState(fileID, {\n error: null,\n isPaused: false,\n });\n this.emit('upload-retry', this.getFile(fileID));\n const uploadID = this.#createUpload([fileID], {\n forceAllowNewUpload: true, // create new upload even if allowNewUpload: false\n });\n return this.#runUpload(uploadID);\n }\n logout() {\n this.iteratePlugins((plugin) => {\n ;\n plugin.provider?.logout?.();\n });\n }\n #handleUploadProgress = (file, progress) => {\n const fileInState = file ? this.getFile(file.id) : undefined;\n if (file == null || !fileInState) {\n this.log(`Not setting progress for a file that has been removed: ${file?.id}`);\n return;\n }\n if (fileInState.progress.percentage === 100) {\n this.log(`Not setting progress for a file that has been already uploaded: ${file.id}`);\n return;\n }\n const newProgress = {\n bytesTotal: progress.bytesTotal,\n // bytesTotal may be null or zero; in that case we can't divide by it\n percentage: progress.bytesTotal != null &&\n Number.isFinite(progress.bytesTotal) &&\n progress.bytesTotal > 0\n ? Math.round((progress.bytesUploaded / progress.bytesTotal) * 100)\n : undefined,\n };\n if (fileInState.progress.uploadStarted != null) {\n this.setFileState(file.id, {\n progress: {\n ...fileInState.progress,\n ...newProgress,\n bytesUploaded: progress.bytesUploaded,\n },\n });\n }\n else {\n this.setFileState(file.id, {\n progress: {\n ...fileInState.progress,\n ...newProgress,\n },\n });\n }\n this.#updateTotalProgressThrottled();\n };\n #updateTotalProgress() {\n const totalProgress = this.#calculateTotalProgress();\n let totalProgressPercent = null;\n if (totalProgress != null) {\n totalProgressPercent = Math.round(totalProgress * 100);\n if (totalProgressPercent > 100)\n totalProgressPercent = 100;\n else if (totalProgressPercent < 0)\n totalProgressPercent = 0;\n }\n this.emit('progress', totalProgressPercent ?? 0);\n this.setState({\n totalProgress: totalProgressPercent ?? 0,\n });\n }\n // ___Why throttle at 500ms?\n // - We must throttle at >250ms for superfocus in Dashboard to work well\n // (because animation takes 0.25s, and we want to wait for all animations to be over before refocusing).\n // [Practical Check]: if thottle is at 100ms, then if you are uploading a file,\n // and click 'ADD MORE FILES', - focus won't activate in Firefox.\n // - We must throttle at around >500ms to avoid performance lags.\n // [Practical Check] Firefox, try to upload a big file for a prolonged period of time. Laptop will start to heat up.\n #updateTotalProgressThrottled = throttle(() => this.#updateTotalProgress(), 500, { leading: true, trailing: true });\n [Symbol.for('uppy test: updateTotalProgress')]() {\n return this.#updateTotalProgress();\n }\n #calculateTotalProgress() {\n // calculate total progress, using the number of files currently uploading,\n // between 0 and 1 and sum of individual progress of each file\n const files = this.getFiles();\n // note: also includes files that have completed uploading:\n const filesInProgress = files.filter((file) => {\n return (file.progress.uploadStarted ||\n file.progress.preprocess ||\n file.progress.postprocess);\n });\n if (filesInProgress.length === 0) {\n return 0;\n }\n if (filesInProgress.every((file) => file.progress.uploadComplete)) {\n // If every uploading file is complete, and we're still getting progress, it probably means\n // there's a bug somewhere in some progress reporting code (maybe not even our code)\n // and we're still getting progress, so let's just assume it means a 100% progress\n return 1;\n }\n const isSizedFile = (file) => file.progress.bytesTotal != null && file.progress.bytesTotal !== 0;\n const sizedFilesInProgress = filesInProgress.filter(isSizedFile);\n const unsizedFilesInProgress = filesInProgress.filter((file) => !isSizedFile(file));\n if (sizedFilesInProgress.every((file) => file.progress.uploadComplete) &&\n unsizedFilesInProgress.length > 0 &&\n !unsizedFilesInProgress.every((file) => file.progress.uploadComplete)) {\n // we are done with uploading all files of known size, however\n // there is at least one file with unknown size still uploading,\n // and we cannot say anything about their progress\n // In any case, return null because it doesn't make any sense to show a progress\n return null;\n }\n const totalFilesSize = sizedFilesInProgress.reduce((acc, file) => acc + (file.progress.bytesTotal ?? 0), 0);\n const totalUploadedSize = sizedFilesInProgress.reduce((acc, file) => acc + (file.progress.bytesUploaded || 0), 0);\n return totalFilesSize === 0 ? 0 : totalUploadedSize / totalFilesSize;\n }\n /**\n * Registers listeners for all global actions, like:\n * `error`, `file-removed`, `upload-progress`\n */\n #addListeners() {\n // Type inference only works for inline functions so we have to type it again\n const errorHandler = (error, file, response) => {\n let errorMsg = error.message || 'Unknown error';\n if (error.details) {\n errorMsg += ` ${error.details}`;\n }\n this.setState({ error: errorMsg });\n if (file != null && file.id in this.getState().files) {\n this.setFileState(file.id, {\n error: errorMsg,\n response,\n });\n }\n };\n this.on('error', errorHandler);\n this.on('upload-error', (file, error, response) => {\n errorHandler(error, file, response);\n if (typeof error === 'object' && error.message) {\n this.log(error.message, 'error');\n const newError = new Error(this.i18n('failedToUpload', { file: file?.name ?? '' })); // we may want a new custom error here\n newError.isUserFacing = true; // todo maybe don't do this with all errors?\n newError.details = error.message;\n if (error.details) {\n newError.details += ` ${error.details}`;\n }\n this.#informAndEmit([newError]);\n }\n else {\n this.#informAndEmit([error]);\n }\n });\n let uploadStalledWarningRecentlyEmitted = null;\n this.on('upload-stalled', (error, files) => {\n const { message } = error;\n const details = files.map((file) => file.meta.name).join(', ');\n if (!uploadStalledWarningRecentlyEmitted) {\n this.info({ message, details }, 'warning', this.opts.infoTimeout);\n uploadStalledWarningRecentlyEmitted = setTimeout(() => {\n uploadStalledWarningRecentlyEmitted = null;\n }, this.opts.infoTimeout);\n }\n this.log(`${message} ${details}`.trim(), 'warning');\n });\n this.on('upload', () => {\n this.setState({ error: null });\n });\n const onUploadStarted = (files) => {\n const filesFiltered = files.filter((file) => {\n const exists = file != null && this.getFile(file.id);\n if (!exists)\n this.log(`Not setting progress for a file that has been removed: ${file?.id}`);\n return exists;\n });\n const filesState = Object.fromEntries(filesFiltered.map((file) => [\n file.id,\n {\n progress: {\n uploadStarted: Date.now(),\n uploadComplete: false,\n bytesUploaded: 0,\n bytesTotal: file.size,\n },\n },\n ]));\n this.patchFilesState(filesState);\n };\n this.on('upload-start', onUploadStarted);\n this.on('upload-progress', this.#handleUploadProgress);\n this.on('upload-success', (file, uploadResp) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file?.id}`);\n return;\n }\n const currentProgress = this.getFile(file.id).progress;\n this.setFileState(file.id, {\n progress: {\n ...currentProgress,\n postprocess: this.#postProcessors.size > 0\n ? {\n mode: 'indeterminate',\n }\n : undefined,\n uploadComplete: true,\n percentage: 100,\n bytesUploaded: currentProgress.bytesTotal,\n },\n response: uploadResp,\n uploadURL: uploadResp.uploadURL,\n isPaused: false,\n });\n // Remote providers sometimes don't tell us the file size,\n // but we can know how many bytes we uploaded once the upload is complete.\n if (file.size == null) {\n this.setFileState(file.id, {\n size: uploadResp.bytesUploaded || currentProgress.bytesTotal,\n });\n }\n this.#updateTotalProgressThrottled();\n });\n this.on('preprocess-progress', (file, progress) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file?.id}`);\n return;\n }\n this.setFileState(file.id, {\n progress: { ...this.getFile(file.id).progress, preprocess: progress },\n });\n });\n this.on('preprocess-complete', (file) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file?.id}`);\n return;\n }\n const files = { ...this.getState().files };\n files[file.id] = {\n ...files[file.id],\n progress: { ...files[file.id].progress },\n };\n delete files[file.id].progress.preprocess;\n this.setState({ files });\n });\n this.on('postprocess-progress', (file, progress) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file?.id}`);\n return;\n }\n this.setFileState(file.id, {\n progress: {\n ...this.getState().files[file.id].progress,\n postprocess: progress,\n },\n });\n });\n this.on('postprocess-complete', (file) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file?.id}`);\n return;\n }\n const files = {\n ...this.getState().files,\n };\n files[file.id] = {\n ...files[file.id],\n progress: {\n ...files[file.id].progress,\n },\n };\n delete files[file.id].progress.postprocess;\n this.setState({ files });\n });\n this.on('restored', () => {\n // Files may have changed--ensure progress is still accurate.\n this.#updateTotalProgressThrottled();\n });\n // @ts-expect-error should fix itself when dashboard it typed (also this doesn't belong here)\n this.on('dashboard:file-edit-complete', (file) => {\n if (file) {\n this.#checkRequiredMetaFieldsOnFile(file);\n }\n });\n // show informer if offline\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('online', this.#updateOnlineStatus);\n window.addEventListener('offline', this.#updateOnlineStatus);\n setTimeout(this.#updateOnlineStatus, 3000);\n }\n }\n updateOnlineStatus() {\n const online = window.navigator.onLine ?? true;\n if (!online) {\n this.emit('is-offline');\n this.info(this.i18n('noInternetConnection'), 'error', 0);\n this.wasOffline = true;\n }\n else {\n this.emit('is-online');\n if (this.wasOffline) {\n this.emit('back-online');\n this.info(this.i18n('connectedToInternet'), 'success', 3000);\n this.wasOffline = false;\n }\n }\n }\n #updateOnlineStatus = this.updateOnlineStatus.bind(this);\n getID() {\n return this.opts.id;\n }\n /**\n * Registers a plugin with Core.\n */\n use(Plugin, \n // We want to let the plugin decide whether `opts` is optional or not\n // so we spread the argument rather than defining `opts:` ourselves.\n ...args) {\n if (typeof Plugin !== 'function') {\n const msg = `Expected a plugin class, but got ${Plugin === null ? 'null' : typeof Plugin}.` +\n ' Please verify that the plugin was imported and spelled correctly.';\n throw new TypeError(msg);\n }\n // Instantiate\n const plugin = new Plugin(this, ...args);\n const pluginId = plugin.id;\n if (!pluginId) {\n throw new Error('Your plugin must have an id');\n }\n if (!plugin.type) {\n throw new Error('Your plugin must have a type');\n }\n const existsPluginAlready = this.getPlugin(pluginId);\n if (existsPluginAlready) {\n const msg = `Already found a plugin named '${existsPluginAlready.id}'. ` +\n `Tried to use: '${pluginId}'.\\n` +\n 'Uppy plugins must have unique `id` options.';\n throw new Error(msg);\n }\n // @ts-expect-error does exist\n if (Plugin.VERSION) {\n // @ts-expect-error does exist\n this.log(`Using ${pluginId} v${Plugin.VERSION}`);\n }\n if (plugin.type in this.#plugins) {\n this.#plugins[plugin.type].push(plugin);\n }\n else {\n this.#plugins[plugin.type] = [plugin];\n }\n plugin.install();\n this.emit('plugin-added', plugin);\n return this;\n }\n /**\n * Find one Plugin by name.\n */\n getPlugin(id) {\n for (const plugins of Object.values(this.#plugins)) {\n const foundPlugin = plugins.find((plugin) => plugin.id === id);\n if (foundPlugin != null)\n return foundPlugin;\n }\n return undefined;\n }\n [Symbol.for('uppy test: getPlugins')](type) {\n return this.#plugins[type];\n }\n /**\n * Iterate through all `use`d plugins.\n *\n */\n iteratePlugins(method) {\n Object.values(this.#plugins).flat(1).forEach(method);\n }\n /**\n * Uninstall and remove a plugin.\n *\n * @param {object} instance The plugin instance to remove.\n */\n removePlugin(instance) {\n this.log(`Removing plugin ${instance.id}`);\n this.emit('plugin-remove', instance);\n if (instance.uninstall) {\n instance.uninstall();\n }\n const list = this.#plugins[instance.type];\n // list.indexOf failed here, because Vue3 converted the plugin instance\n // to a Proxy object, which failed the strict comparison test:\n // obj !== objProxy\n const index = list.findIndex((item) => item.id === instance.id);\n if (index !== -1) {\n list.splice(index, 1);\n }\n const state = this.getState();\n const updatedState = {\n plugins: {\n ...state.plugins,\n [instance.id]: undefined,\n },\n };\n this.setState(updatedState);\n }\n /**\n * Uninstall all plugins and close down this Uppy instance.\n */\n destroy() {\n this.log(`Closing Uppy instance ${this.opts.id}: removing all files and uninstalling plugins`);\n this.cancelAll();\n this.#storeUnsubscribe();\n this.iteratePlugins((plugin) => {\n this.removePlugin(plugin);\n });\n if (typeof window !== 'undefined' && window.removeEventListener) {\n window.removeEventListener('online', this.#updateOnlineStatus);\n window.removeEventListener('offline', this.#updateOnlineStatus);\n }\n }\n hideInfo() {\n const { info } = this.getState();\n this.setState({ info: info.slice(1) });\n this.emit('info-hidden');\n }\n /**\n * Set info message in `state.info`, so that UI plugins like `Informer`\n * can display the message.\n */\n info(message, type = 'info', duration = 3000) {\n const isComplexMessage = typeof message === 'object';\n this.setState({\n info: [\n ...this.getState().info,\n {\n type,\n message: isComplexMessage ? message.message : message,\n details: isComplexMessage ? message.details : null,\n },\n ],\n });\n setTimeout(() => this.hideInfo(), duration);\n this.emit('info-visible');\n }\n /**\n * Passes messages to a function, provided in `opts.logger`.\n * If `opts.logger: Uppy.debugLogger` or `opts.debug: true`, logs to the browser console.\n */\n log(message, type) {\n const { logger } = this.opts;\n switch (type) {\n case 'error':\n logger.error(message);\n break;\n case 'warning':\n logger.warn(message);\n break;\n default:\n logger.debug(message);\n break;\n }\n }\n // We need to store request clients by a unique ID, so we can share RequestClient instances across files\n // this allows us to do rate limiting and synchronous operations like refreshing provider tokens\n // example: refreshing tokens: if each file has their own requestclient,\n // we don't have any way to synchronize all requests in order to\n // - block all requests\n // - refresh the token\n // - unblock all requests and allow them to run with a the new access token\n // back when we had a requestclient per file, once an access token expired,\n // all 6 files would go ahead and refresh the token at the same time\n // (calling /refresh-token up to 6 times), which will probably fail for some providers\n #requestClientById = new Map();\n registerRequestClient(id, client) {\n this.#requestClientById.set(id, client);\n }\n /** @protected */\n getRequestClientForFile(file) {\n if (!file.remote)\n throw new Error(`Tried to get RequestClient for a non-remote file ${file.id}`);\n const requestClient = this.#requestClientById.get(file.remote.requestClientId);\n if (requestClient == null)\n throw new Error(`requestClientId \"${file.remote.requestClientId}\" not registered for file \"${file.id}\"`);\n return requestClient;\n }\n /**\n * Restore an upload by its ID.\n */\n restore(uploadID) {\n this.log(`Core: attempting to restore upload \"${uploadID}\"`);\n if (!this.getState().currentUploads[uploadID]) {\n this.#removeUpload(uploadID);\n return Promise.reject(new Error('Nonexistent upload'));\n }\n return this.#runUpload(uploadID);\n }\n /**\n * Create an upload for a bunch of files.\n *\n */\n #createUpload(fileIDs, opts = {}) {\n // uppy.retryAll sets this to true — when retrying we want to ignore `allowNewUpload: false`\n const { forceAllowNewUpload = false } = opts;\n const { allowNewUpload, currentUploads } = this.getState();\n if (!allowNewUpload && !forceAllowNewUpload) {\n throw new Error('Cannot create a new upload: already uploading.');\n }\n const uploadID = nanoid();\n this.emit('upload', uploadID, this.getFilesByIds(fileIDs));\n this.setState({\n allowNewUpload: this.opts.allowMultipleUploadBatches !== false &&\n this.opts.allowMultipleUploads !== false,\n currentUploads: {\n ...currentUploads,\n [uploadID]: {\n fileIDs,\n step: 0,\n result: {},\n },\n },\n });\n return uploadID;\n }\n [Symbol.for('uppy test: createUpload')](...args) {\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/47595\n return this.#createUpload(...args);\n }\n #getUpload(uploadID) {\n const { currentUploads } = this.getState();\n return currentUploads[uploadID];\n }\n /**\n * Add data to an upload's result object.\n */\n addResultData(uploadID, data) {\n if (!this.#getUpload(uploadID)) {\n this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n return;\n }\n const { currentUploads } = this.getState();\n const currentUpload = {\n ...currentUploads[uploadID],\n result: { ...currentUploads[uploadID].result, ...data },\n };\n this.setState({\n currentUploads: { ...currentUploads, [uploadID]: currentUpload },\n });\n }\n /**\n * Remove an upload, eg. if it has been canceled or completed.\n *\n */\n #removeUpload(uploadID) {\n const currentUploads = { ...this.getState().currentUploads };\n delete currentUploads[uploadID];\n this.setState({\n currentUploads,\n });\n }\n /**\n * Run an upload. This picks up where it left off in case the upload is being restored.\n */\n async #runUpload(uploadID) {\n const getCurrentUpload = () => {\n const { currentUploads } = this.getState();\n return currentUploads[uploadID];\n };\n let currentUpload = getCurrentUpload();\n const steps = [\n ...this.#preProcessors,\n ...this.#uploaders,\n ...this.#postProcessors,\n ];\n try {\n for (let step = currentUpload.step || 0; step < steps.length; step++) {\n if (!currentUpload) {\n break;\n }\n const fn = steps[step];\n this.setState({\n currentUploads: {\n ...this.getState().currentUploads,\n [uploadID]: {\n ...currentUpload,\n step,\n },\n },\n });\n const { fileIDs } = currentUpload;\n // TODO give this the `updatedUpload` object as its only parameter maybe?\n // Otherwise when more metadata may be added to the upload this would keep getting more parameters\n await fn(fileIDs, uploadID);\n // Update currentUpload value in case it was modified asynchronously.\n currentUpload = getCurrentUpload();\n }\n }\n catch (err) {\n this.#removeUpload(uploadID);\n throw err;\n }\n // Set result data.\n if (currentUpload) {\n // Mark postprocessing step as complete if necessary; this addresses a case where we might get\n // stuck in the postprocessing UI while the upload is fully complete.\n // If the postprocessing steps do not do any work, they may not emit postprocessing events at\n // all, and never mark the postprocessing as complete. This is fine on its own but we\n // introduced code in the @uppy/core upload-success handler to prepare postprocessing progress\n // state if any postprocessors are registered. That is to avoid a \"flash of completed state\"\n // before the postprocessing plugins can emit events.\n //\n // So, just in case an upload with postprocessing plugins *has* completed *without* emitting\n // postprocessing completion, we do it instead.\n currentUpload.fileIDs.forEach((fileID) => {\n const file = this.getFile(fileID);\n if (file?.progress.postprocess) {\n this.emit('postprocess-complete', file);\n }\n });\n const files = currentUpload.fileIDs.map((fileID) => this.getFile(fileID));\n const successful = files.filter((file) => !file.error);\n const failed = files.filter((file) => file.error);\n this.addResultData(uploadID, { successful, failed, uploadID });\n // Update currentUpload value in case it was modified asynchronously.\n currentUpload = getCurrentUpload();\n }\n // Emit completion events.\n // This is in a separate function so that the `currentUploads` variable\n // always refers to the latest state. In the handler right above it refers\n // to an outdated object without the `.result` property.\n let result;\n if (currentUpload) {\n result = currentUpload.result;\n this.#removeUpload(uploadID);\n }\n if (result == null) {\n this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n result = {\n successful: [],\n failed: [],\n uploadID,\n };\n }\n return result;\n }\n /**\n * Start an upload for all the files that are not currently being uploaded.\n */\n async upload() {\n if (!this.#plugins.uploader?.length) {\n this.log('No uploader type plugins are used', 'warning');\n }\n let { files } = this.getState();\n // retry any failed files from a previous upload() call\n const filesToRetry = this.#getFilesToRetry();\n if (filesToRetry.length > 0) {\n const retryResult = await this.#doRetryAll(); // we don't want the complete event to fire\n const hasNewFiles = this.getFiles().filter((file) => file.progress.uploadStarted == null)\n .length > 0;\n // if no new files, make it idempotent and return\n if (!hasNewFiles) {\n this.emit('complete', retryResult);\n return retryResult;\n }\n // reload files which might have changed after retry\n ;\n ({ files } = this.getState());\n }\n // If no files to retry, proceed with original upload() behavior for new files\n const onBeforeUploadResult = this.opts.onBeforeUpload(files);\n if (onBeforeUploadResult === false) {\n return Promise.reject(new Error('Not starting the upload because onBeforeUpload returned false'));\n }\n if (onBeforeUploadResult && typeof onBeforeUploadResult === 'object') {\n files = onBeforeUploadResult;\n // Updating files in state, because uploader plugins receive file IDs,\n // and then fetch the actual file object from state\n this.setState({\n files,\n });\n }\n return Promise.resolve()\n .then(() => this.#restricter.validateMinNumberOfFiles(files))\n .catch((err) => {\n this.#informAndEmit([err]);\n throw err;\n })\n .then(() => {\n if (!this.#checkRequiredMetaFields(files)) {\n throw new RestrictionError(this.i18n('missingRequiredMetaField'));\n }\n })\n .catch((err) => {\n // Doing this in a separate catch because we already emited and logged\n // all the errors in `checkRequiredMetaFields` so we only throw a generic\n // missing fields error here.\n throw err;\n })\n .then(async () => {\n const { currentUploads } = this.getState();\n // get a list of files that are currently assigned to uploads\n const currentlyUploadingFiles = Object.values(currentUploads).flatMap((curr) => curr.fileIDs);\n const waitingFileIDs = [];\n Object.keys(files).forEach((fileID) => {\n const file = this.getFile(fileID);\n // if the file hasn't started uploading and hasn't already been assigned to an upload..\n if (!file.progress.uploadStarted &&\n currentlyUploadingFiles.indexOf(fileID) === -1) {\n waitingFileIDs.push(file.id);\n }\n });\n const uploadID = this.#createUpload(waitingFileIDs);\n const result = await this.#runUpload(uploadID);\n this.emit('complete', result);\n return result;\n })\n .catch((err) => {\n this.emit('error', err);\n this.log(err, 'error');\n throw err;\n });\n }\n}\nexport default Uppy;\n","/**\n * Check if an object is a DOM element. Duck-typing based on `nodeType`.\n */\nexport default function isDOMElement(obj) {\n if (typeof obj !== 'object' || obj === null)\n return false;\n if (!('nodeType' in obj))\n return false;\n return obj.nodeType === Node.ELEMENT_NODE;\n}\n","import isDOMElement from './isDOMElement.js';\nfunction findDOMElement(element, context = document) {\n if (typeof element === 'string') {\n return context.querySelector(element);\n }\n if (isDOMElement(element)) {\n return element;\n }\n return null;\n}\nexport default findDOMElement;\n","/**\n * Get the declared text direction for an element.\n */\nfunction getTextDirection(element) {\n // There is another way to determine text direction using getComputedStyle(), as done here:\n // https://github.com/pencil-js/text-direction/blob/2a235ce95089b3185acec3b51313cbba921b3811/text-direction.js\n //\n // We do not use that approach because we are interested specifically in the _declared_ text direction.\n // If no text direction is declared, we have to provide our own explicit text direction so our\n // bidirectional CSS style sheets work.\n while (element && !element.dir) {\n element = element.parentNode;\n }\n return element?.dir;\n}\nexport default getTextDirection;\n","var n,l,u,t,i,o,r,f,e,c,s,a,h={},v=[],p=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,y=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function w(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,o,r,f={};for(r in u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return g(l,f,i,o,null)}function g(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++u:r,__i:-1,__u:0};return null==r&&null!=l.vnode&&l.vnode(f),f}function m(){return{current:null}}function b(n){return n.children}function k(n,l){this.props=n,this.context=l}function x(n,l){if(null==l)return n.__?x(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?x(n):null}function C(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return C(n)}}function S(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!M.__r++||o!==l.debounceRendering)&&((o=l.debounceRendering)||r)(M)}function M(){var n,u,t,o,r,e,c,s;for(i.sort(f);n=i.shift();)n.__d&&(u=i.length,o=void 0,e=(r=(t=n).__v).__e,c=[],s=[],t.__P&&((o=d({},r)).__v=r.__v+1,l.vnode&&l.vnode(o),O(t.__P,o,r,t.__n,t.__P.namespaceURI,32&r.__u?[e]:null,c,null==e?x(r):e,!!(32&r.__u),s),o.__v=r.__v,o.__.__k[o.__i]=o,j(c,o,s),o.__e!=e&&C(o)),i.length>u&&i.sort(f));M.__r=0}function P(n,l,u,t,i,o,r,f,e,c,s){var a,p,y,d,w,_=t&&t.__k||v,g=l.length;for(u.__d=e,$(u,l,_),e=u.__d,a=0;a<g;a++)null!=(y=u.__k[a])&&(p=-1===y.__i?h:_[y.__i]||h,y.__i=a,O(n,y,p,i,o,r,f,e,c,s),d=y.__e,y.ref&&p.ref!=y.ref&&(p.ref&&N(p.ref,null,y),s.push(y.ref,y.__c||d,y)),null==w&&null!=d&&(w=d),65536&y.__u||p.__k===y.__k?e=I(y,e,n):\"function\"==typeof y.type&&void 0!==y.__d?e=y.__d:d&&(e=d.nextSibling),y.__d=void 0,y.__u&=-196609);u.__d=e,u.__e=w}function $(n,l,u){var t,i,o,r,f,e=l.length,c=u.length,s=c,a=0;for(n.__k=[],t=0;t<e;t++)null!=(i=l[t])&&\"boolean\"!=typeof i&&\"function\"!=typeof i?(r=t+a,(i=n.__k[t]=\"string\"==typeof i||\"number\"==typeof i||\"bigint\"==typeof i||i.constructor==String?g(null,i,null,null,null):y(i)?g(b,{children:i},null,null,null):void 0===i.constructor&&i.__b>0?g(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):i).__=n,i.__b=n.__b+1,o=null,-1!==(f=i.__i=L(i,u,r,s))&&(s--,(o=u[f])&&(o.__u|=131072)),null==o||null===o.__v?(-1==f&&a--,\"function\"!=typeof i.type&&(i.__u|=65536)):f!==r&&(f==r-1?a--:f==r+1?a++:(f>r?a--:a++,i.__u|=65536))):i=n.__k[t]=null;if(s)for(t=0;t<c;t++)null!=(o=u[t])&&0==(131072&o.__u)&&(o.__e==n.__d&&(n.__d=x(o)),V(o,o))}function I(n,l,u){var t,i;if(\"function\"==typeof n.type){for(t=n.__k,i=0;t&&i<t.length;i++)t[i]&&(t[i].__=n,l=I(t[i],l,u));return l}n.__e!=l&&(l&&n.type&&!u.contains(l)&&(l=x(n)),u.insertBefore(n.__e,l||null),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8===l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(y(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i=n.key,o=n.type,r=u-1,f=u+1,e=l[u];if(null===e||e&&i==e.key&&o===e.type&&0==(131072&e.__u))return u;if(t>(null!=e&&0==(131072&e.__u)?1:0))for(;r>=0||f<l.length;){if(r>=0){if((e=l[r])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return r;r--}if(f<l.length){if((e=l[f])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return f;f++}}return-1}function T(n,l,u){\"-\"===l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||p.test(l)?u:u+\"px\"}function A(n,l,u,t,i){var o;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]===t[l]||T(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])o=l!==(l=l.replace(/(PointerCapture)$|Capture$/i,\"$1\")),l=l.toLowerCase()in n||\"onFocusOut\"===l||\"onFocusIn\"===l?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?t?u.u=t.u:(u.u=e,n.addEventListener(l,o?s:c,o)):n.removeEventListener(l,o?s:c,o);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!==l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function F(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=e++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function O(n,u,t,i,o,r,f,e,c,s){var a,h,v,p,w,_,g,m,x,C,S,M,$,I,H,L,T=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),r=[e=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof T)try{if(m=u.props,x=\"prototype\"in T&&T.prototype.render,C=(a=T.contextType)&&i[a.__c],S=a?C?C.props.value:a.__:i,t.__c?g=(h=u.__c=t.__c).__=h.__E:(x?u.__c=h=new T(m,S):(u.__c=h=new k(m,S),h.constructor=T,h.render=q),C&&C.sub(h),h.props=m,h.state||(h.state={}),h.context=S,h.__n=i,v=h.__d=!0,h.__h=[],h._sb=[]),x&&null==h.__s&&(h.__s=h.state),x&&null!=T.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=d({},h.__s)),d(h.__s,T.getDerivedStateFromProps(m,h.__s))),p=h.props,w=h.state,h.__v=u,v)x&&null==T.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),x&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(x&&null==T.getDerivedStateFromProps&&m!==p&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(m,S),!h.__e&&(null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(m,h.__s,S)||u.__v===t.__v)){for(u.__v!==t.__v&&(h.props=m,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),M=0;M<h._sb.length;M++)h.__h.push(h._sb[M]);h._sb=[],h.__h.length&&f.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(m,h.__s,S),x&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(p,w,_)})}if(h.context=S,h.props=m,h.__P=n,h.__e=!1,$=l.__r,I=0,x){for(h.state=h.__s,h.__d=!1,$&&$(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,$&&$(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++I<25);h.state=h.__s,null!=h.getChildContext&&(i=d(d({},i),h.getChildContext())),x&&!v&&null!=h.getSnapshotBeforeUpdate&&(_=h.getSnapshotBeforeUpdate(p,w)),P(n,y(L=null!=a&&a.type===b&&null==a.key?a.props.children:a)?L:[L],u,t,i,o,r,f,e,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&f.push(h),g&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=r){for(u.__u|=c?160:128;e&&8===e.nodeType&&e.nextSibling;)e=e.nextSibling;r[r.indexOf(e)]=null,u.__e=e}else u.__e=t.__e,u.__k=t.__k;l.__e(n,u,t)}else null==r&&u.__v===t.__v?(u.__k=t.__k,u.__e=t.__e):u.__e=z(t.__e,u,t,i,o,r,f,c,s);(a=l.diffed)&&a(u)}function j(n,u,t){u.__d=void 0;for(var i=0;i<t.length;i++)N(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function z(u,t,i,o,r,f,e,c,s){var a,v,p,d,_,g,m,b=i.props,k=t.props,C=t.type;if(\"svg\"===C?r=\"http://www.w3.org/2000/svg\":\"math\"===C?r=\"http://www.w3.org/1998/Math/MathML\":r||(r=\"http://www.w3.org/1999/xhtml\"),null!=f)for(a=0;a<f.length;a++)if((_=f[a])&&\"setAttribute\"in _==!!C&&(C?_.localName===C:3===_.nodeType)){u=_,f[a]=null;break}if(null==u){if(null===C)return document.createTextNode(k);u=document.createElementNS(r,C,k.is&&k),c&&(l.__m&&l.__m(t,f),c=!1),f=null}if(null===C)b===k||c&&u.data===k||(u.data=k);else{if(f=f&&n.call(u.childNodes),b=i.props||h,!c&&null!=f)for(b={},a=0;a<u.attributes.length;a++)b[(_=u.attributes[a]).name]=_.value;for(a in b)if(_=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)p=_;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;A(u,a,null,_,r)}for(a in k)_=k[a],\"children\"==a?d=_:\"dangerouslySetInnerHTML\"==a?v=_:\"value\"==a?g=_:\"checked\"==a?m=_:c&&\"function\"!=typeof _||b[a]===_||A(u,a,_,b[a],r);if(v)c||p&&(v.__html===p.__html||v.__html===u.innerHTML)||(u.innerHTML=v.__html),t.__k=[];else if(p&&(u.innerHTML=\"\"),P(u,y(d)?d:[d],t,i,o,\"foreignObject\"===C?\"http://www.w3.org/1999/xhtml\":r,f,e,f?f[0]:i.__k&&x(i,0),c,s),null!=f)for(a=f.length;a--;)w(f[a]);c||(a=\"value\",\"progress\"===C&&null==g?u.removeAttribute(\"value\"):void 0!==g&&(g!==u[a]||\"progress\"===C&&!g||\"option\"===C&&g!==b[a])&&A(u,a,g,b[a],r),a=\"checked\",void 0!==m&&m!==u[a]&&A(u,a,m,b[a],r))}return u}function N(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function V(n,u,t){var i,o;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!==n.__e||N(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(o=0;o<i.length;o++)i[o]&&V(i[o],u,t||\"function\"!=typeof n.type);t||w(n.__e),n.__c=n.__=n.__e=n.__d=void 0}function q(n,l,u){return this.constructor(n,u)}function B(u,t,i){var o,r,f,e;l.__&&l.__(u,t),r=(o=\"function\"==typeof i)?null:i&&i.__k||t.__k,f=[],e=[],O(t,u=(!o&&i||t).__k=_(b,null,[u]),r||h,h,t.namespaceURI,!o&&i?[i]:r?null:t.firstChild?n.call(t.childNodes):null,f,!o&&i?i:r?r.__e:t.firstChild,o,e),j(f,u,e)}function D(n,l){B(n,l,D)}function E(l,u,t){var i,o,r,f,e=d({},l.props);for(r in l.type&&l.type.defaultProps&&(f=l.type.defaultProps),u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:e[r]=void 0===u[r]&&void 0!==f?f[r]:u[r];return arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),g(l.type,e,i||l.key,o||l.ref,null)}function G(n,l){var u={__c:l=\"__cC\"+a++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.forEach(function(n){n.__e=!0,S(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=v.slice,l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},k.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),S(this))},k.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),S(this))},k.prototype.render=b,i=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},M.__r=0,e=0,c=F(!1),s=F(!0),a=0;export{k as Component,b as Fragment,E as cloneElement,G as createContext,_ as createElement,m as createRef,_ as h,D as hydrate,t as isValidElement,l as options,B as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function d(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function h(n){return o=1,p(D,n)}function p(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!(!i&&o.__c.props===n)&&(!c||c.call(this,n,t,r))};r.u=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=d(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.i=u,r.__H.__h.push(i))}function _(n,u){var i=d(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.i=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function T(n,r){var u=d(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=d(t++,10),i=h();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.i=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.i=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,p as useReducer,A as useRef,h as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as c,createRef as f,cloneElement as l}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useCallback as a,useContext as s,useDebugValue as h,useEffect as v,useId as d,useImperativeHandle as p,useLayoutEffect as m,useMemo as y,useReducer as _,useRef as b,useState as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function E(n,t){this.props=n,this.context=t}function C(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:g(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u}(E.prototype=new n).isPureReactComponent=!0,E.prototype.shouldComponentUpdate=function(n,t){return g(this.props,n)||g(this.state,t)};var x=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),x&&x(n)};var R=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function w(n){function t(t){if(!(\"ref\"in t))return n(t,null);var e=t.ref;delete t.ref;var r=n(t,e);return t.ref=e,r}return t.$$typeof=R,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var k=function(n,t){return null==n?null:r(r(n).map(t))},I={map:k,forEach:k,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},N=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);N(n,t,e,r)};var M=e.unmount;function T(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=function(n,t){for(var e in t)n[e]=t[e];return n}({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return T(n,t,e)})),n}function A(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return A(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function D(){this.__u=0,this.t=null,this.__b=null}function L(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function O(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function F(){this.u=null,this.o=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),M&&M(n)},(D.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=L(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(c):c())};e.__R=i;var c=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=A(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},D.prototype.componentWillUnmount=function(){this.t=[]},D.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=T(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var U=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.u=e=e[2]}};function V(n){return this.getChildContext=function(){return n.context},n.children}function W(n){var e=this,r=n.i;e.componentWillUnmount=function(){o(null,e.l),e.l=null,e.i=null},e.i&&e.i!==r&&e.componentWillUnmount(),e.l||(e.i=r,e.l={nodeType:1,parentNode:r,childNodes:[],contains:function(){return!0},appendChild:function(n){this.childNodes.push(n),e.i.appendChild(n)},insertBefore:function(n,t){this.childNodes.push(n),e.i.appendChild(n)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.i.removeChild(n)}}),o(t(V,{context:e.context},n.__v),e.l)}function P(n,e){var r=t(W,{__v:n,i:e});return r.containerInfo=e,r}(F.prototype=new n).__a=function(n){var t=this,e=L(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),U(t,n,r)):u()};e?e(o):o()}},F.prototype.render=function(n){this.u=null,this.o=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},F.prototype.componentDidUpdate=F.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){U(n,e,t)})};var j=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,z=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,B=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,H=/[A-Z0-9]/g,Z=\"undefined\"!=typeof document,Y=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function $(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function q(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var G=e.event;function J(){}function K(){return this.cancelBubble}function Q(){return this.defaultPrevented}e.event=function(n){return G&&(n=G(n)),n.persist=J,n.isPropagationStopped=K,n.isDefaultPrevented=Q,n.nativeEvent=n};var X,nn={enumerable:!1,configurable:!0,get:function(){return this.class}},tn=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={},o=-1===e.indexOf(\"-\");for(var i in t){var c=t[i];if(!(\"value\"===i&&\"defaultValue\"in t&&null==c||Z&&\"children\"===i&&\"noscript\"===e||\"class\"===i||\"className\"===i)){var f=i.toLowerCase();\"defaultValue\"===i&&\"value\"in t&&null==t.value?i=\"value\":\"download\"===i&&!0===c?c=\"\":\"translate\"===f&&\"no\"===c?c=!1:\"o\"===f[0]&&\"n\"===f[1]?\"ondoubleclick\"===f?i=\"ondblclick\":\"onchange\"!==f||\"input\"!==e&&\"textarea\"!==e||Y(t.type)?\"onfocus\"===f?i=\"onfocusin\":\"onblur\"===f?i=\"onfocusout\":B.test(i)&&(i=f):f=i=\"oninput\":o&&z.test(i)?i=i.replace(H,\"-$&\").toLowerCase():null===c&&(c=void 0),\"oninput\"===f&&u[i=f]&&(i=\"oninputCapture\"),u[i]=c}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",nn)):(t.className&&!t.class||t.class&&t.className)&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=j,tn&&tn(n)};var en=e.__r;e.__r=function(n){en&&en(n),X=n.__c};var rn=e.diffed;e.diffed=function(n){rn&&rn(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),X=null};var un={ReactCurrentDispatcher:{current:{readContext:function(n){return X.__n[n.__c].props.value},useCallback:a,useContext:s,useDebugValue:h,useDeferredValue:_n,useEffect:v,useId:d,useImperativeHandle:p,useInsertionEffect:Sn,useLayoutEffect:m,useMemo:y,useReducer:_,useRef:b,useState:S,useSyncExternalStore:En,useTransition:bn}}},on=\"18.3.1\";function cn(n){return t.bind(null,n)}function fn(n){return!!n&&n.$$typeof===j}function ln(n){return fn(n)&&n.type===u}function an(n){return!!n&&!!n.displayName&&(\"string\"==typeof n.displayName||n.displayName instanceof String)&&n.displayName.startsWith(\"Memo(\")}function sn(n){return fn(n)?l.apply(null,arguments):n}function hn(n){return!!n.__k&&(o(null,n),!0)}function vn(n){return n&&(n.base||1===n.nodeType&&n)||null}var dn=function(n,t){return n(t)},pn=function(n,t){return n(t)},mn=u;function yn(n){n()}function _n(n){return n}function bn(){return[!1,yn]}var Sn=m,gn=fn;function En(n,t){var e=t(),r=S({h:{__:e,v:t}}),u=r[0].h,o=r[1];return m(function(){u.__=e,u.v=t,Cn(u)&&o({h:u})},[n,e,t]),v(function(){return Cn(u)&&o({h:u}),n(function(){Cn(u)&&o({h:u})})},[n]),e}function Cn(n){var t,e,r=n.v,u=n.__;try{var o=r();return!((t=u)===(e=o)&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}}var xn={useState:S,useId:d,useReducer:_,useEffect:v,useLayoutEffect:m,useInsertionEffect:Sn,useTransition:bn,useDeferredValue:_n,useSyncExternalStore:En,startTransition:yn,useRef:b,useImperativeHandle:p,useMemo:y,useCallback:a,useContext:s,useDebugValue:h,version:\"18.3.1\",Children:I,render:$,hydrate:q,unmountComponentAtNode:hn,createPortal:P,createElement:t,createContext:c,createFactory:cn,cloneElement:sn,createRef:f,Fragment:u,isValidElement:fn,isElement:gn,isFragment:ln,isMemo:an,findDOMNode:vn,Component:n,PureComponent:E,memo:C,forwardRef:w,flushSync:pn,unstable_batchedUpdates:dn,StrictMode:mn,Suspense:D,SuspenseList:F,lazy:O,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:un};export{I as Children,E as PureComponent,mn as StrictMode,D as Suspense,F as SuspenseList,un as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sn as cloneElement,cn as createFactory,P as createPortal,xn as default,vn as findDOMNode,pn as flushSync,w as forwardRef,q as hydrate,gn as isElement,ln as isFragment,an as isMemo,fn as isValidElement,O as lazy,C as memo,$ as render,yn as startTransition,hn as unmountComponentAtNode,dn as unstable_batchedUpdates,_n as useDeferredValue,Sn as useInsertionEffect,En as useSyncExternalStore,bn as useTransition,on as version};\n//# sourceMappingURL=compat.module.js.map\n","import findDOMElement from '@uppy/utils/lib/findDOMElement';\nimport getTextDirection from '@uppy/utils/lib/getTextDirection';\nimport { render } from 'preact/compat';\nimport BasePlugin from './BasePlugin.js';\n/**\n * Defer a frequent call to the microtask queue.\n */\nfunction debounce(fn) {\n let calling = null;\n let latestArgs;\n return (...args) => {\n latestArgs = args;\n if (!calling) {\n calling = Promise.resolve().then(() => {\n calling = null;\n // At this point `args` may be different from the most\n // recent state, if multiple calls happened since this task\n // was queued. So we use the `latestArgs`, which definitely\n // is the most recent call.\n return fn(...latestArgs);\n });\n }\n return calling;\n };\n}\n/**\n * UIPlugin is the extended version of BasePlugin to incorporate rendering with Preact.\n * Use this for plugins that need a user interface.\n *\n * For plugins without an user interface, see BasePlugin.\n */\nclass UIPlugin extends BasePlugin {\n #updateUI;\n isTargetDOMEl;\n el;\n parent;\n title;\n getTargetPlugin(target) {\n let targetPlugin;\n if (typeof target?.addTarget === 'function') {\n // Targeting a plugin *instance*\n targetPlugin = target;\n if (!(targetPlugin instanceof UIPlugin)) {\n console.warn(new Error('The provided plugin is not an instance of UIPlugin. This is an indication of a bug with the way Uppy is bundled.', { cause: { targetPlugin, UIPlugin } }));\n }\n }\n else if (typeof target === 'function') {\n // Targeting a plugin type\n const Target = target;\n // Find the target plugin instance.\n this.uppy.iteratePlugins((p) => {\n if (p instanceof Target) {\n targetPlugin = p;\n }\n });\n }\n return targetPlugin;\n }\n /**\n * Check if supplied `target` is a DOM element or an `object`.\n * If it’s an object — target is a plugin, and we search `plugins`\n * for a plugin with same name and return its target.\n */\n mount(target, plugin) {\n const callerPluginName = plugin.id;\n const targetElement = findDOMElement(target);\n if (targetElement) {\n this.isTargetDOMEl = true;\n // When target is <body> with a single <div> element,\n // Preact thinks it’s the Uppy root element in there when doing a diff,\n // and destroys it. So we are creating a fragment (could be empty div)\n const uppyRootElement = document.createElement('div');\n uppyRootElement.classList.add('uppy-Root');\n // API for plugins that require a synchronous rerender.\n this.#updateUI = debounce((state) => {\n // plugin could be removed, but this.rerender is debounced below,\n // so it could still be called even after uppy.removePlugin or uppy.destroy\n // hence the check\n if (!this.uppy.getPlugin(this.id))\n return;\n render(this.render(state, uppyRootElement), uppyRootElement);\n this.afterUpdate();\n });\n this.uppy.log(`Installing ${callerPluginName} to a DOM element '${target}'`);\n if (this.opts.replaceTargetContent) {\n // Doing render(h(null), targetElement), which should have been\n // a better way, since because the component might need to do additional cleanup when it is removed,\n // stopped working — Preact just adds null into target, not replacing\n targetElement.innerHTML = '';\n }\n render(this.render(this.uppy.getState(), uppyRootElement), uppyRootElement);\n this.el = uppyRootElement;\n targetElement.appendChild(uppyRootElement);\n // Set the text direction if the page has not defined one.\n uppyRootElement.dir =\n this.opts.direction || getTextDirection(uppyRootElement) || 'ltr';\n this.onMount();\n return this.el;\n }\n const targetPlugin = this.getTargetPlugin(target);\n if (targetPlugin) {\n this.uppy.log(`Installing ${callerPluginName} to ${targetPlugin.id}`);\n this.parent = targetPlugin;\n this.el = targetPlugin.addTarget(plugin);\n this.onMount();\n return this.el;\n }\n this.uppy.log(`Not installing ${callerPluginName}`);\n let message = `Invalid target option given to ${callerPluginName}.`;\n if (typeof target === 'function') {\n message +=\n ' The given target is not a Plugin class. ' +\n \"Please check that you're not specifying a React Component instead of a plugin. \" +\n 'If you are using @uppy/* packages directly, make sure you have only 1 version of @uppy/core installed: ' +\n 'run `npm ls @uppy/core` on the command line and verify that all the versions match and are deduped correctly.';\n }\n else {\n message +=\n 'If you meant to target an HTML element, please make sure that the element exists. ' +\n 'Check that the <script> tag initializing Uppy is right before the closing </body> tag at the end of the page. ' +\n '(see https://github.com/transloadit/uppy/issues/1042)\\n\\n' +\n 'If you meant to target a plugin, please confirm that your `import` statements or `require` calls are correct.';\n }\n throw new Error(message);\n }\n /**\n * Called when plugin is mounted, whether in DOM or into another plugin.\n * Needed because sometimes plugins are mounted separately/after `install`,\n * so this.el and this.parent might not be available in `install`.\n * This is the case with @uppy/react plugins, for example.\n */\n render(state, container) {\n throw new Error('Extend the render method to add your plugin to a DOM element');\n }\n update(state) {\n if (this.el != null) {\n this.#updateUI?.(state);\n }\n }\n unmount() {\n if (this.isTargetDOMEl) {\n this.el?.remove();\n }\n this.onUnmount();\n }\n onMount() { }\n onUnmount() { }\n}\nexport default UIPlugin;\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\""\";break;case 38:f=\"&\";break;case 60:f=\"<\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,l=t;\"ref\"in t&&(a=t.ref,delete t.ref);var p={type:e,props:l,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===l[c]&&(l[c]=a[c]);return r.vnode&&r.vnode(p),p}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},l=/[A-Z]/g;function p(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var p=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(l,\"-$&\").toLowerCase()),_=\";\";\"number\"!=typeof a||p.startsWith(\"--\")||o.test(p)||(_=\"px;\"),i=i+p+\":\"+a+_}}return e+'=\"'+i+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(t)+'\"'}function _(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=_(r[e]);return r}}return n(\"\"+r)}export{u as jsx,p as jsxAttr,u as jsxDEV,_ as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import { jsx as _jsx } from \"preact/jsx-runtime\";\nimport { Component, createRef, h } from 'preact';\nconst TRANSITION_MS = 300;\nexport default class FadeIn extends Component {\n ref = createRef();\n componentWillEnter(callback) {\n this.ref.current.style.opacity = '1';\n this.ref.current.style.transform = 'none';\n setTimeout(callback, TRANSITION_MS);\n }\n componentWillLeave(callback) {\n this.ref.current.style.opacity = '0';\n this.ref.current.style.transform = 'translateY(350%)';\n setTimeout(callback, TRANSITION_MS);\n }\n render() {\n const { children } = this.props;\n return (_jsx(\"div\", { className: \"uppy-Informer-animated\", ref: this.ref, children: children }));\n }\n}\n","// INFO: not typing copy pasted libarary code\n// @ts-nocheck\n/**\n * @source https://github.com/developit/preact-transition-group\n */\nimport { Component, cloneElement, h, toChildArray } from 'preact';\nfunction assign(obj, props) {\n return Object.assign(obj, props);\n}\nfunction getKey(vnode, fallback) {\n return vnode?.key ?? fallback;\n}\nfunction linkRef(component, name) {\n // biome-ignore lint/suspicious/noAssignInExpressions: ...\n const cache = component._ptgLinkedRefs || (component._ptgLinkedRefs = {});\n return (cache[name] ||\n // biome-ignore lint/suspicious/noAssignInExpressions: ...\n (cache[name] = (c) => {\n component.refs[name] = c;\n }));\n}\nfunction getChildMapping(children) {\n const out = {};\n for (let i = 0; i < children.length; i++) {\n if (children[i] != null) {\n const key = getKey(children[i], i.toString(36));\n out[key] = children[i];\n }\n }\n return out;\n}\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n const getValueForKey = (key) => Object.hasOwn(next, key) ? next[key] : prev[key];\n // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n const nextKeysPending = {};\n let pendingKeys = [];\n for (const prevKey in prev) {\n if (Object.hasOwn(next, prevKey)) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n }\n else {\n pendingKeys.push(prevKey);\n }\n }\n const childMapping = {};\n for (const nextKey in next) {\n if (Object.hasOwn(nextKeysPending, nextKey)) {\n for (let i = 0; i < nextKeysPending[nextKey].length; i++) {\n const pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] =\n getValueForKey(pendingNextKey);\n }\n }\n childMapping[nextKey] = getValueForKey(nextKey);\n }\n // Finally, add the keys which didn't appear before any key in `next`\n for (let i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n return childMapping;\n}\nconst identity = (i) => i;\nclass TransitionGroup extends Component {\n constructor(props, context) {\n super(props, context);\n this.refs = {};\n this.state = {\n children: getChildMapping(toChildArray(toChildArray(this.props.children)) || []),\n };\n this.performAppear = this.performAppear.bind(this);\n this.performEnter = this.performEnter.bind(this);\n this.performLeave = this.performLeave.bind(this);\n }\n componentWillMount() {\n this.currentlyTransitioningKeys = {};\n this.keysToAbortLeave = [];\n this.keysToEnter = [];\n this.keysToLeave = [];\n }\n componentDidMount() {\n const initialChildMapping = this.state.children;\n for (const key in initialChildMapping) {\n if (initialChildMapping[key]) {\n // this.performAppear(getKey(initialChildMapping[key], key));\n this.performAppear(key);\n }\n }\n }\n componentWillReceiveProps(nextProps) {\n const nextChildMapping = getChildMapping(toChildArray(nextProps.children) || []);\n const prevChildMapping = this.state.children;\n this.setState((prevState) => ({\n children: mergeChildMappings(prevState.children, nextChildMapping),\n }));\n let key;\n for (key in nextChildMapping) {\n if (Object.hasOwn(nextChildMapping, key)) {\n const hasPrev = prevChildMapping && Object.hasOwn(prevChildMapping, key);\n // We should re-enter the component and abort its leave function\n if (nextChildMapping[key] &&\n hasPrev &&\n this.currentlyTransitioningKeys[key]) {\n this.keysToEnter.push(key);\n this.keysToAbortLeave.push(key);\n }\n else if (nextChildMapping[key] &&\n !hasPrev &&\n !this.currentlyTransitioningKeys[key]) {\n this.keysToEnter.push(key);\n }\n }\n }\n for (key in prevChildMapping) {\n if (Object.hasOwn(prevChildMapping, key)) {\n const hasNext = nextChildMapping && Object.hasOwn(nextChildMapping, key);\n if (prevChildMapping[key] &&\n !hasNext &&\n !this.currentlyTransitioningKeys[key]) {\n this.keysToLeave.push(key);\n }\n }\n }\n }\n componentDidUpdate() {\n const { keysToEnter } = this;\n this.keysToEnter = [];\n keysToEnter.forEach(this.performEnter);\n const { keysToLeave } = this;\n this.keysToLeave = [];\n keysToLeave.forEach(this.performLeave);\n }\n _finishAbort(key) {\n const idx = this.keysToAbortLeave.indexOf(key);\n if (idx !== -1) {\n this.keysToAbortLeave.splice(idx, 1);\n }\n }\n performAppear(key) {\n this.currentlyTransitioningKeys[key] = true;\n const component = this.refs[key];\n if (component?.componentWillAppear) {\n component.componentWillAppear(this._handleDoneAppearing.bind(this, key));\n }\n else {\n this._handleDoneAppearing(key);\n }\n }\n _handleDoneAppearing(key) {\n const component = this.refs[key];\n if (component?.componentDidAppear) {\n component.componentDidAppear();\n }\n delete this.currentlyTransitioningKeys[key];\n this._finishAbort(key);\n const currentChildMapping = getChildMapping(toChildArray(this.props.children) || []);\n if (!currentChildMapping || !Object.hasOwn(currentChildMapping, key)) {\n // This was removed before it had fully appeared. Remove it.\n this.performLeave(key);\n }\n }\n performEnter(key) {\n this.currentlyTransitioningKeys[key] = true;\n const component = this.refs[key];\n if (component?.componentWillEnter) {\n component.componentWillEnter(this._handleDoneEntering.bind(this, key));\n }\n else {\n this._handleDoneEntering(key);\n }\n }\n _handleDoneEntering(key) {\n const component = this.refs[key];\n if (component?.componentDidEnter) {\n component.componentDidEnter();\n }\n delete this.currentlyTransitioningKeys[key];\n this._finishAbort(key);\n const currentChildMapping = getChildMapping(toChildArray(this.props.children) || []);\n if (!currentChildMapping || !Object.hasOwn(currentChildMapping, key)) {\n // This was removed before it had fully entered. Remove it.\n this.performLeave(key);\n }\n }\n performLeave(key) {\n // If we should immediately abort this leave function,\n // don't run the leave transition at all.\n const idx = this.keysToAbortLeave.indexOf(key);\n if (idx !== -1) {\n return;\n }\n this.currentlyTransitioningKeys[key] = true;\n const component = this.refs[key];\n if (component?.componentWillLeave) {\n component.componentWillLeave(this._handleDoneLeaving.bind(this, key));\n }\n else {\n // Note that this is somewhat dangerous b/c it calls setState()\n // again, effectively mutating the component before all the work\n // is done.\n this._handleDoneLeaving(key);\n }\n }\n _handleDoneLeaving(key) {\n // If we should immediately abort the leave,\n // then skip this altogether\n const idx = this.keysToAbortLeave.indexOf(key);\n if (idx !== -1) {\n return;\n }\n const component = this.refs[key];\n if (component?.componentDidLeave) {\n component.componentDidLeave();\n }\n delete this.currentlyTransitioningKeys[key];\n const currentChildMapping = getChildMapping(toChildArray(this.props.children) || []);\n if (currentChildMapping && Object.hasOwn(currentChildMapping, key)) {\n // This entered again before it fully left. Add it again.\n this.performEnter(key);\n }\n else {\n const children = assign({}, this.state.children);\n delete children[key];\n this.setState({ children });\n }\n }\n render({ childFactory, transitionLeave, transitionName, transitionAppear, transitionEnter, transitionLeaveTimeout, transitionEnterTimeout, transitionAppearTimeout, component, ...props }, { children }) {\n // TODO: we could get rid of the need for the wrapper node\n // by cloning a single child\n const childrenToRender = Object.entries(children)\n .map(([key, child]) => {\n if (!child)\n return undefined;\n const ref = linkRef(this, key);\n return cloneElement(childFactory(child), { ref, key });\n })\n .filter(Boolean);\n return h(component, props, childrenToRender);\n }\n}\nTransitionGroup.defaultProps = {\n component: 'span',\n childFactory: identity,\n};\nexport default TransitionGroup;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { UIPlugin } from '@uppy/core';\nimport { h } from 'preact';\nimport packageJson from '../package.json' with { type: 'json' };\nimport FadeIn from './FadeIn.js';\nimport TransitionGroup from './TransitionGroup.js';\n/**\n * Informer\n * Shows rad message bubbles\n * used like this: `uppy.info('hello world', 'info', 5000)`\n * or for errors: `uppy.info('Error uploading img.jpg', 'error', 5000)`\n *\n */\nexport default class Informer extends UIPlugin {\n static VERSION = packageJson.version;\n constructor(uppy, opts) {\n super(uppy, opts);\n this.type = 'progressindicator';\n this.id = this.opts.id || 'Informer';\n this.title = 'Informer';\n }\n render = (state) => {\n return (_jsx(\"div\", { className: \"uppy uppy-Informer\", children: _jsx(TransitionGroup, { children: state.info.map((info) => (_jsx(FadeIn, { children: _jsxs(\"p\", { role: \"alert\", children: [info.message, ' ', info.details && (\n // biome-ignore lint/a11y/useKeyWithClickEvents: ...\n _jsx(\"span\", { \"aria-label\": info.details, \"data-microtip-position\": \"top-left\", \"data-microtip-size\": \"medium\", role: \"tooltip\", onClick: () => alert(`${info.message} \\n\\n ${info.details}`), children: \"?\" }))] }) }, info.message))) }) }));\n };\n install() {\n const { target } = this.opts;\n if (target) {\n this.mount(target, this);\n }\n }\n}\n","export { default } from './Informer.js';\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nimport { useCallback } from 'preact/hooks';\nfunction GoogleIcon() {\n return (_jsx(\"svg\", { width: \"26\", height: \"26\", viewBox: \"0 0 26 26\", xmlns: \"http://www.w3.org/2000/svg\", children: _jsxs(\"g\", { fill: \"none\", \"fill-rule\": \"evenodd\", children: [_jsx(\"circle\", { fill: \"#FFF\", cx: \"13\", cy: \"13\", r: \"13\" }), _jsx(\"path\", { d: \"M21.64 13.205c0-.639-.057-1.252-.164-1.841H13v3.481h4.844a4.14 4.14 0 01-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615z\", fill: \"#4285F4\", \"fill-rule\": \"nonzero\" }), _jsx(\"path\", { d: \"M13 22c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H4.957v2.332A8.997 8.997 0 0013 22z\", fill: \"#34A853\", \"fill-rule\": \"nonzero\" }), _jsx(\"path\", { d: \"M7.964 14.71A5.41 5.41 0 017.682 13c0-.593.102-1.17.282-1.71V8.958H4.957A8.996 8.996 0 004 13c0 1.452.348 2.827.957 4.042l3.007-2.332z\", fill: \"#FBBC05\", \"fill-rule\": \"nonzero\" }), _jsx(\"path\", { d: \"M13 7.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C17.463 4.891 15.426 4 13 4a8.997 8.997 0 00-8.043 4.958l3.007 2.332C8.672 9.163 10.656 7.58 13 7.58z\", fill: \"#EA4335\", \"fill-rule\": \"nonzero\" }), _jsx(\"path\", { d: \"M4 4h18v18H4z\" })] }) }));\n}\nfunction DefaultForm({ pluginName, i18n, onAuth, }) {\n // In order to comply with Google's brand we need to create a different button\n // for the Google Drive plugin\n const isGoogleDrive = pluginName === 'Google Drive';\n const onSubmit = useCallback((e) => {\n e.preventDefault();\n onAuth();\n }, [onAuth]);\n return (_jsx(\"form\", { onSubmit: onSubmit, children: isGoogleDrive ? (_jsxs(\"button\", { type: \"submit\", className: \"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Provider-authBtn uppy-Provider-btn-google\", \"data-uppy-super-focusable\": true, children: [_jsx(GoogleIcon, {}), i18n('signInWithGoogle')] })) : (_jsx(\"button\", { type: \"submit\", className: \"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Provider-authBtn\", \"data-uppy-super-focusable\": true, children: i18n('authenticateWith', { pluginName }) })) }));\n}\nconst defaultRenderForm = ({ pluginName, i18n, onAuth, }) => _jsx(DefaultForm, { pluginName: pluginName, i18n: i18n, onAuth: onAuth });\nexport default function AuthView({ loading, pluginName, pluginIcon, i18n, handleAuth, renderForm = defaultRenderForm, }) {\n return (_jsxs(\"div\", { className: \"uppy-Provider-auth\", children: [_jsx(\"div\", { className: \"uppy-Provider-authIcon\", children: pluginIcon() }), _jsx(\"div\", { className: \"uppy-Provider-authTitle\", children: i18n('authenticateWithTitle', {\n pluginName,\n }) }), renderForm({ pluginName, i18n, loading, onAuth: handleAuth })] }));\n}\n","const getAuthHeader = (token) => ({\n authorization: `Bearer ${token}`,\n});\nconst injectedScripts = new Set();\nlet driveApiLoaded = false;\n// https://stackoverflow.com/a/39008859/6519037\nasync function injectScript(src) {\n if (injectedScripts.has(src))\n return;\n await new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = src;\n script.addEventListener('load', () => resolve());\n script.addEventListener('error', (e) => reject(e.error));\n document.head.appendChild(script);\n });\n injectedScripts.add(src);\n}\nexport async function ensureScriptsInjected(pickerType) {\n await Promise.all([\n injectScript('https://accounts.google.com/gsi/client'), // Google Identity Services\n (async () => {\n await injectScript('https://apis.google.com/js/api.js');\n if (pickerType === 'drive' && !driveApiLoaded) {\n await new Promise((resolve) => gapi.load('client:picker', () => resolve()));\n await gapi.client.load('https://www.googleapis.com/discovery/v1/apis/drive/v3/rest');\n driveApiLoaded = true;\n }\n })(),\n ]);\n}\nasync function isTokenValid(accessToken, signal) {\n const response = await fetch(`https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=${encodeURIComponent(accessToken)}`, { signal });\n if (response.ok) {\n return true;\n }\n // console.warn('Token is invalid or expired:', response.status, await response.text());\n // Token is invalid or expired\n return false;\n}\nexport async function authorize({ pickerType, clientId, accessToken, }) {\n const response = await new Promise((resolve, reject) => {\n const scopes = pickerType === 'drive'\n ? ['https://www.googleapis.com/auth/drive.file']\n : ['https://www.googleapis.com/auth/photospicker.mediaitems.readonly'];\n const tokenClient = google.accounts.oauth2.initTokenClient({\n client_id: clientId,\n // Authorization scopes required by the API; multiple scopes can be included, separated by spaces.\n scope: scopes.join(' '),\n callback: resolve,\n error_callback: reject,\n });\n if (accessToken === null) {\n // Prompt the user to select a Google Account and ask for consent to share their data\n // when establishing a new session.\n tokenClient.requestAccessToken({ prompt: 'consent' });\n }\n else {\n // Skip display of account chooser and consent dialog for an existing session.\n tokenClient.requestAccessToken({ prompt: '' });\n }\n });\n if (response.error) {\n throw new Error(`OAuth2 error: ${response.error}`);\n }\n return response.access_token;\n}\nexport async function logout(accessToken) {\n await new Promise((resolve) => google.accounts.oauth2.revoke(accessToken, resolve));\n}\nexport class InvalidTokenError extends Error {\n constructor() {\n super('Invalid or expired token');\n this.name = 'InvalidTokenError';\n }\n}\nexport async function showDrivePicker({ token, apiKey, appId, onFilesPicked, signal, }) {\n // google drive picker will crash hard if given an invalid token, so we need to check it first\n // https://github.com/transloadit/uppy/pull/5443#pullrequestreview-2452439265\n if (!(await isTokenValid(token, signal))) {\n throw new InvalidTokenError();\n }\n const onPicked = (picked) => {\n if (picked.action === google.picker.Action.PICKED) {\n // console.log('Picker response', JSON.stringify(picked, null, 2));\n onFilesPicked(picked.docs.map((doc) => ({\n platform: 'drive',\n id: doc.id,\n name: doc.name,\n mimeType: doc.mimeType,\n })), token);\n }\n };\n const picker = new google.picker.PickerBuilder()\n .enableFeature(google.picker.Feature.NAV_HIDDEN)\n .enableFeature(google.picker.Feature.MULTISELECT_ENABLED)\n .setDeveloperKey(apiKey)\n .setAppId(appId)\n .setOAuthToken(token)\n .addView(new google.picker.DocsView(google.picker.ViewId.DOCS)\n .setIncludeFolders(true)\n // Note: setEnableDrives doesn't seem to work\n // .setEnableDrives(true)\n .setSelectFolderEnabled(false)\n .setMode(google.picker.DocsViewMode.LIST))\n // NOTE: photos is broken and results in an error being returned from Google\n // I think it's the old Picasa photos\n // .addView(google.picker.ViewId.PHOTOS)\n .setCallback(onPicked)\n .build();\n picker.setVisible(true);\n signal?.addEventListener('abort', () => picker.dispose());\n}\nexport async function showPhotosPicker({ token, pickingSession, onPickingSessionChange, signal, }) {\n // https://developers.google.com/photos/picker/guides/get-started-picker\n const headers = getAuthHeader(token);\n let newPickingSession = pickingSession;\n if (newPickingSession == null) {\n const createSessionResponse = await fetch('https://photospicker.googleapis.com/v1/sessions', { method: 'post', headers, signal });\n if (createSessionResponse.status === 401) {\n const resp = await createSessionResponse.json();\n if (resp.error?.status === 'UNAUTHENTICATED') {\n throw new InvalidTokenError();\n }\n }\n if (!createSessionResponse.ok) {\n throw new Error('Failed to create a session');\n }\n newPickingSession = (await createSessionResponse.json());\n onPickingSessionChange(newPickingSession);\n }\n const w = window.open(newPickingSession.pickerUri);\n signal?.addEventListener('abort', () => w?.close());\n}\nasync function resolvePickedPhotos({ accessToken, pickingSession, signal, }) {\n const headers = getAuthHeader(accessToken);\n let pageToken;\n let mediaItems = [];\n do {\n const pageSize = 100;\n const response = await fetch(`https://photospicker.googleapis.com/v1/mediaItems?${new URLSearchParams({ sessionId: pickingSession.id, pageSize: String(pageSize), ...(pageToken && { pageToken }) }).toString()}`, { headers, signal });\n if (!response.ok)\n throw new Error('Failed to get a media items');\n const { mediaItems: batchMediaItems, nextPageToken, } = await response.json();\n pageToken = nextPageToken;\n mediaItems.push(...batchMediaItems);\n } while (pageToken);\n // Filter out items that aren't fully processed or ready\n mediaItems = mediaItems.flatMap((i) => i.type === 'PHOTO' ||\n (i.type === 'VIDEO' &&\n i.mediaFile.mediaFileMetadata.videoMetadata.processingStatus === 'READY')\n ? [i]\n : []);\n // Transform media items into picked items with appropriate metadata\n return mediaItems.map((mediaItem) => {\n const { id, type, mediaFile: { mimeType, filename, baseUrl }, } = mediaItem;\n return {\n platform: 'photos',\n id,\n mimeType,\n // we want the original resolution, so we don't append any parameter to the baseUrl\n // https://developers.google.com/photos/library/guides/access-media-items#base-urls\n url: type === 'VIDEO' ? `${baseUrl}=dv` : `${baseUrl}=d`, // dv to download video, d to get original image (non cropped)\n name: filename,\n metadata: {\n // Note that metadata keys `filename` and `type` have special meanings in Companion\n // and should not be overridden\n googlePhotosFileType: mediaItem.type,\n createTime: mediaItem.createTime,\n width: mediaItem.mediaFile.mediaFileMetadata.width,\n height: mediaItem.mediaFile.mediaFileMetadata.height,\n ...(mediaItem.type === 'PHOTO' && {\n cameraMake: mediaItem.mediaFile.mediaFileMetadata.photoMetadata?.cameraMake,\n cameraModel: mediaItem.mediaFile.mediaFileMetadata.photoMetadata?.cameraModel,\n focalLength: mediaItem.mediaFile.mediaFileMetadata.photoMetadata?.focalLength,\n apertureFNumber: mediaItem.mediaFile.mediaFileMetadata.photoMetadata\n ?.apertureFNumber,\n isoEquivalent: mediaItem.mediaFile.mediaFileMetadata.photoMetadata?.isoEquivalent,\n exposureTime: mediaItem.mediaFile.mediaFileMetadata.photoMetadata?.exposureTime,\n }),\n ...(mediaItem.type === 'VIDEO' && {\n cameraMake: mediaItem.mediaFile.mediaFileMetadata.videoMetadata.cameraMake,\n cameraModel: mediaItem.mediaFile.mediaFileMetadata.videoMetadata.cameraModel,\n fps: mediaItem.mediaFile.mediaFileMetadata.videoMetadata.fps,\n processingStatus: mediaItem.mediaFile.mediaFileMetadata.videoMetadata\n .processingStatus,\n }),\n },\n };\n });\n}\nexport async function pollPickingSession({ pickingSessionRef, accessTokenRef, signal, onFilesPicked, onError, }) {\n // if we have an active session, poll it until it either times out, or the user selects some photos.\n // Note that the user can also just close the page, but we get no indication of that from Google when polling,\n // so we just have to continue polling in the background, so we can react to it\n // in case the user opens the photo selector again. Hence the infinite for loop\n for (let interval = 1;;) {\n try {\n if (pickingSessionRef.current != null) {\n interval = parseFloat(pickingSessionRef.current.pollingConfig.pollInterval);\n }\n else {\n interval = 1;\n }\n await Promise.race([\n new Promise((resolve) => setTimeout(resolve, interval * 1000)),\n new Promise((_resolve, reject) => {\n signal.addEventListener('abort', reject);\n }),\n ]);\n signal.throwIfAborted();\n const accessToken = accessTokenRef.current;\n const pickingSession = pickingSessionRef.current;\n if (pickingSession != null && accessToken != null) {\n const headers = getAuthHeader(accessToken);\n // https://developers.google.com/photos/picker/reference/rest/v1/sessions\n const response = await fetch(`https://photospicker.googleapis.com/v1/sessions/${encodeURIComponent(pickingSession.id)}`, { headers, signal });\n if (!response.ok)\n throw new Error('Failed to get session');\n const json = await response.json();\n if (json.mediaItemsSet) {\n // console.log('User picked!', json)\n const resolvedPhotos = await resolvePickedPhotos({\n accessToken,\n pickingSession,\n signal,\n });\n pickingSessionRef.current = undefined;\n onFilesPicked(resolvedPhotos, accessToken);\n }\n if (pickingSession.pollingConfig.timeoutIn === '0s') {\n pickingSessionRef.current = undefined;\n }\n }\n }\n catch (err) {\n if (err instanceof Error && err.name === 'AbortError') {\n return;\n }\n // just report the error and continue polling\n onError(err);\n }\n }\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nexport const GooglePhotosIcon = () => (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"32\", height: \"32\", viewBox: \"-7 -7 73 73\", children: _jsxs(\"g\", { fill: \"none\", \"fill-rule\": \"evenodd\", children: [_jsx(\"path\", { d: \"M-3-3h64v64H-3z\" }), _jsxs(\"g\", { \"fill-rule\": \"nonzero\", children: [_jsx(\"path\", { fill: \"#FBBC04\", d: \"M14.8 13.4c8.1 0 14.7 6.6 14.7 14.8v1.3H1.3c-.7 0-1.3-.6-1.3-1.3C0 20 6.6 13.4 14.8 13.4z\" }), _jsx(\"path\", { fill: \"#EA4335\", d: \"M45.6 14.8c0 8.1-6.6 14.7-14.8 14.7h-1.3V1.3c0-.7.6-1.3 1.3-1.3C39 0 45.6 6.6 45.6 14.8z\" }), _jsx(\"path\", { fill: \"#4285F4\", d: \"M44.3 45.6c-8.2 0-14.8-6.6-14.8-14.8v-1.3h28.2c.7 0 1.3.6 1.3 1.3 0 8.2-6.6 14.8-14.8 14.8z\" }), _jsx(\"path\", { fill: \"#34A853\", d: \"M13.4 44.3c0-8.2 6.6-14.8 14.8-14.8h1.3v28.2c0 .7-.6 1.3-1.3 1.3-8.2 0-14.8-6.6-14.8-14.8z\" })] })] }) }));\nexport const GoogleDriveIcon = () => (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"32\", height: \"32\", viewBox: \"0 0 32 32\", children: _jsxs(\"g\", { fillRule: \"nonzero\", fill: \"none\", children: [_jsx(\"path\", { d: \"M6.663 22.284l.97 1.62c.202.34.492.609.832.804l3.465-5.798H5c0 .378.1.755.302 1.096l1.361 2.278z\", fill: \"#0066DA\" }), _jsx(\"path\", { d: \"M16 12.09l-3.465-5.798c-.34.195-.63.463-.832.804l-6.4 10.718A2.15 2.15 0 005 18.91h6.93L16 12.09z\", fill: \"#00AC47\" }), _jsx(\"path\", { d: \"M23.535 24.708c.34-.195.63-.463.832-.804l.403-.67 1.928-3.228c.201-.34.302-.718.302-1.096h-6.93l1.474 2.802 1.991 2.996z\", fill: \"#EA4335\" }), _jsx(\"path\", { d: \"M16 12.09l3.465-5.798A2.274 2.274 0 0018.331 6h-4.662c-.403 0-.794.11-1.134.292L16 12.09z\", fill: \"#00832D\" }), _jsx(\"path\", { d: \"M20.07 18.91h-8.14l-3.465 5.798c.34.195.73.292 1.134.292h12.802c.403 0 .794-.11 1.134-.292L20.07 18.91z\", fill: \"#2684FC\" }), _jsx(\"path\", { d: \"M23.497 12.455l-3.2-5.359a2.252 2.252 0 00-.832-.804L16 12.09l4.07 6.82h6.917c0-.377-.1-.755-.302-1.096l-3.188-5.359z\", fill: \"#FFBA00\" })] }) }));\n","import { jsxs as _jsxs, jsx as _jsx } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks';\nimport AuthView from '../ProviderView/AuthView.js';\nimport { authorize, ensureScriptsInjected, InvalidTokenError, logout, pollPickingSession, showDrivePicker, showPhotosPicker, } from './googlePicker.js';\nimport { GoogleDriveIcon, GooglePhotosIcon } from './icons.js';\nfunction useStore(store, key) {\n const [value, setValueState] = useState();\n useEffect(() => {\n ;\n (async () => {\n setValueState(await store.getItem(key));\n })();\n }, [key, store]);\n const setValue = useCallback(async (v) => {\n setValueState(v);\n if (v == null) {\n return store.removeItem(key);\n }\n return store.setItem(key, v);\n }, [key, store]);\n return [value, setValue];\n}\nexport default function GooglePickerView({ uppy, i18n, clientId, onFilesPicked, pickerType, apiKey, appId, storage, }) {\n const [loading, setLoading] = useState(false);\n const [accessToken, setAccessTokenStored] = useStore(storage, `uppy:google-${pickerType}-picker:accessToken`);\n const pickingSessionRef = useRef();\n const accessTokenRef = useRef(accessToken);\n const shownPickerRef = useRef(false);\n const setAccessToken = useCallback((t) => {\n uppy.log('Access token updated');\n setAccessTokenStored(t);\n accessTokenRef.current = t;\n }, [setAccessTokenStored, uppy]);\n // keep access token in sync with the ref\n useEffect(() => {\n accessTokenRef.current = accessToken;\n }, [accessToken]);\n const showPicker = useCallback(async (signal) => {\n let newAccessToken = accessToken;\n const doShowPicker = async (token) => {\n if (pickerType === 'drive') {\n await showDrivePicker({\n token,\n apiKey,\n appId,\n onFilesPicked,\n signal,\n });\n }\n else {\n // photos\n const onPickingSessionChange = (newPickingSession) => {\n pickingSessionRef.current = newPickingSession;\n };\n await showPhotosPicker({\n token,\n pickingSession: pickingSessionRef.current,\n onPickingSessionChange,\n signal,\n });\n }\n };\n setLoading(true);\n try {\n try {\n await ensureScriptsInjected(pickerType);\n if (newAccessToken == null) {\n newAccessToken = await authorize({ clientId, pickerType });\n }\n if (newAccessToken == null)\n throw new Error();\n await doShowPicker(newAccessToken);\n shownPickerRef.current = true;\n setAccessToken(newAccessToken);\n }\n catch (err) {\n if (err instanceof InvalidTokenError) {\n uppy.log('Token is invalid or expired, reauthenticating');\n newAccessToken = await authorize({\n pickerType,\n accessToken: newAccessToken,\n clientId,\n });\n // now try again:\n await doShowPicker(newAccessToken);\n shownPickerRef.current = true;\n setAccessToken(newAccessToken);\n }\n else {\n throw err;\n }\n }\n }\n catch (err) {\n if (err instanceof Error &&\n 'type' in err &&\n err.type === 'popup_closed') {\n // user closed the auth popup, ignore\n }\n else {\n setAccessToken(null);\n uppy.log(err);\n }\n }\n finally {\n setLoading(false);\n }\n }, [\n accessToken,\n apiKey,\n appId,\n clientId,\n onFilesPicked,\n pickerType,\n setAccessToken,\n uppy,\n ]);\n useEffect(() => {\n const abortController = new AbortController();\n pollPickingSession({\n pickingSessionRef,\n accessTokenRef,\n signal: abortController.signal,\n onFilesPicked,\n onError: (err) => uppy.log(err),\n });\n return () => abortController.abort();\n }, [onFilesPicked, uppy]);\n useEffect(() => {\n // when mounting, once we have a token, be nice to the user and automatically show the picker\n // accessToken === undefined means not yet loaded from storage, so wait for that first\n if (accessToken === undefined || shownPickerRef.current) {\n return undefined;\n }\n const abortController = new AbortController();\n showPicker(abortController.signal);\n return () => {\n // only abort the picker if it's not yet shown\n if (!shownPickerRef.current)\n abortController.abort();\n };\n }, [accessToken, showPicker]);\n const handleLogoutClick = useCallback(async () => {\n if (accessToken) {\n await logout(accessToken);\n setAccessToken(null);\n pickingSessionRef.current = undefined;\n }\n }, [accessToken, setAccessToken]);\n if (loading) {\n return _jsxs(\"div\", { children: [i18n('pleaseWait'), \"...\"] });\n }\n if (accessToken == null) {\n return (_jsx(AuthView, { pluginName: pickerType === 'drive'\n ? i18n('pluginNameGoogleDrivePicker')\n : i18n('pluginNameGooglePhotosPicker'), pluginIcon: pickerType === 'drive' ? GoogleDriveIcon : GooglePhotosIcon, handleAuth: showPicker, i18n: i18n, loading: loading }));\n }\n return (_jsxs(\"div\", { style: { textAlign: 'center' }, children: [_jsx(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-c-btn uppy-c-btn-primary\", style: { display: 'block', marginBottom: '1em' }, disabled: loading, onClick: () => showPicker(), children: pickerType === 'drive' ? i18n('pickFiles') : i18n('pickPhotos') }), _jsx(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-c-btn\", disabled: loading, onClick: handleLogoutClick, children: i18n('logOut') })] }));\n}\n","import getFileNameAndExtension from './getFileNameAndExtension.js';\nexport default function remoteFileObjToLocal(file) {\n return {\n ...file,\n type: file.mimeType,\n extension: file.name ? getFileNameAndExtension(file.name).extension : null,\n };\n}\n","import { jsx as _jsx } from \"preact/jsx-runtime\";\n/**\n * Adapted from preact-virtual-list: https://github.com/developit/preact-virtual-list\n *\n * © 2016 Jason Miller\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * Adaptations:\n * - Added role=presentation to helper elements\n * - Tweaked styles for Uppy's Dashboard use case\n */\nimport { Component, h } from 'preact';\nconst STYLE_INNER = {\n position: 'relative',\n // Disabled for our use case: the wrapper elements around FileList already deal with overflow,\n // and this additional property would hide things that we want to show.\n //\n // overflow: 'hidden',\n width: '100%',\n minHeight: '100%',\n};\nconst STYLE_CONTENT = {\n position: 'absolute',\n top: 0,\n left: 0,\n // Because the `top` value gets set to some offset, this `height` being 100% would make the scrollbar\n // stretch far beyond the content. For our use case, the content div actually can get its height from\n // the elements inside it, so we don't need to specify a `height` property at all.\n //\n // height: '100%',\n width: '100%',\n overflow: 'visible',\n};\nclass VirtualList extends Component {\n constructor(props) {\n super(props);\n // The currently focused node, used to retain focus when the visible rows change.\n // To avoid update loops, this should not cause state updates, so it's kept as a plain property.\n this.focusElement = null;\n this.state = {\n offset: 0,\n height: 0,\n };\n }\n componentDidMount() {\n this.resize();\n window.addEventListener('resize', this.handleResize);\n }\n // TODO: refactor to stable lifecycle method\n componentWillUpdate() {\n if (this.base.contains(document.activeElement)) {\n this.focusElement = document.activeElement;\n }\n }\n componentDidUpdate() {\n // Maintain focus when rows are added and removed.\n if (this.focusElement?.parentNode &&\n document.activeElement !== this.focusElement) {\n this.focusElement.focus();\n }\n this.focusElement = null;\n this.resize();\n }\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleResize);\n }\n handleScroll = () => {\n this.setState({ offset: this.base.scrollTop });\n };\n handleResize = () => {\n this.resize();\n };\n resize() {\n const { height } = this.state;\n if (height !== this.base.offsetHeight) {\n this.setState({\n height: this.base.offsetHeight,\n });\n }\n }\n render({ data, rowHeight, renderRow, overscanCount = 10, ...props }) {\n const { offset, height } = this.state;\n // first visible row index\n let start = Math.floor(offset / rowHeight);\n // actual number of visible rows (without overscan)\n let visibleRowCount = Math.floor(height / rowHeight);\n // Overscan: render blocks of rows modulo an overscan row count\n // This dramatically reduces DOM writes during scrolling\n if (overscanCount) {\n start = Math.max(0, start - (start % overscanCount));\n visibleRowCount += overscanCount;\n }\n // last visible + overscan row index + padding to allow keyboard focus to travel past the visible area\n const end = start + visibleRowCount + 4;\n // data slice currently in viewport plus overscan items\n const selection = data.slice(start, end);\n const styleInner = { ...STYLE_INNER, height: data.length * rowHeight };\n const styleContent = { ...STYLE_CONTENT, top: start * rowHeight };\n // The `role=\"presentation\"` attributes ensure that these wrapper elements are not treated as list\n // items by accessibility and outline tools.\n return (_jsx(\"div\", { onScroll: this.handleScroll, ...props, children: _jsx(\"div\", { role: \"presentation\", style: styleInner, children: _jsx(\"div\", { role: \"presentation\", style: styleContent, children: selection.map(renderRow) }) }) }));\n }\n}\nexport default VirtualList;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nfunction FileIcon() {\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: 11, height: 14.5, viewBox: \"0 0 44 58\", children: _jsx(\"path\", { d: \"M27.437.517a1 1 0 0 0-.094.03H4.25C2.037.548.217 2.368.217 4.58v48.405c0 2.212 1.82 4.03 4.03 4.03H39.03c2.21 0 4.03-1.818 4.03-4.03V15.61a1 1 0 0 0-.03-.28 1 1 0 0 0 0-.093 1 1 0 0 0-.03-.032 1 1 0 0 0 0-.03 1 1 0 0 0-.032-.063 1 1 0 0 0-.03-.063 1 1 0 0 0-.032 0 1 1 0 0 0-.03-.063 1 1 0 0 0-.032-.03 1 1 0 0 0-.03-.063 1 1 0 0 0-.063-.062l-14.593-14a1 1 0 0 0-.062-.062A1 1 0 0 0 28 .708a1 1 0 0 0-.374-.157 1 1 0 0 0-.156 0 1 1 0 0 0-.03-.03l-.003-.003zM4.25 2.547h22.218v9.97c0 2.21 1.82 4.03 4.03 4.03h10.564v36.438a2.02 2.02 0 0 1-2.032 2.032H4.25c-1.13 0-2.032-.9-2.032-2.032V4.58c0-1.13.902-2.032 2.03-2.032zm24.218 1.345l10.375 9.937.75.718H30.5c-1.13 0-2.032-.9-2.032-2.03V3.89z\" }) }));\n}\nfunction FolderIcon() {\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", style: { minWidth: 16, marginRight: 3 }, viewBox: \"0 0 276.157 276.157\", children: _jsx(\"path\", { d: \"M273.08 101.378c-3.3-4.65-8.86-7.32-15.254-7.32h-24.34V67.59c0-10.2-8.3-18.5-18.5-18.5h-85.322c-3.63 0-9.295-2.875-11.436-5.805l-6.386-8.735c-4.982-6.814-15.104-11.954-23.546-11.954H58.73c-9.292 0-18.638 6.608-21.737 15.372l-2.033 5.752c-.958 2.71-4.72 5.37-7.596 5.37H18.5C8.3 49.09 0 57.39 0 67.59v167.07c0 .886.16 1.73.443 2.52.152 3.306 1.18 6.424 3.053 9.064 3.3 4.652 8.86 7.32 15.255 7.32h188.487c11.395 0 23.27-8.425 27.035-19.18l40.677-116.188c2.11-6.035 1.43-12.164-1.87-16.816zM18.5 64.088h8.864c9.295 0 18.64-6.607 21.738-15.37l2.032-5.75c.96-2.712 4.722-5.373 7.597-5.373h29.565c3.63 0 9.295 2.876 11.437 5.806l6.386 8.735c4.982 6.815 15.104 11.954 23.546 11.954h85.322c1.898 0 3.5 1.602 3.5 3.5v26.47H69.34c-11.395 0-23.27 8.423-27.035 19.178L15 191.23V67.59c0-1.898 1.603-3.5 3.5-3.5zm242.29 49.15l-40.676 116.188c-1.674 4.78-7.812 9.135-12.877 9.135H18.75c-1.447 0-2.576-.372-3.02-.997-.442-.625-.422-1.814.057-3.18l40.677-116.19c1.674-4.78 7.812-9.134 12.877-9.134h188.487c1.448 0 2.577.372 3.02.997.443.625.423 1.814-.056 3.18z\" }) }));\n}\nfunction VideoIcon() {\n return (_jsxs(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", style: { width: 16, marginRight: 4 }, viewBox: \"0 0 58 58\", children: [_jsx(\"path\", { d: \"M36.537 28.156l-11-7a1.005 1.005 0 0 0-1.02-.033C24.2 21.3 24 21.635 24 22v14a1 1 0 0 0 1.537.844l11-7a1.002 1.002 0 0 0 0-1.688zM26 34.18V23.82L34.137 29 26 34.18z\" }), _jsx(\"path\", { d: \"M57 6H1a1 1 0 0 0-1 1v44a1 1 0 0 0 1 1h56a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1zM10 28H2v-9h8v9zm-8 2h8v9H2v-9zm10 10V8h34v42H12V40zm44-12h-8v-9h8v9zm-8 2h8v9h-8v-9zm8-22v9h-8V8h8zM2 8h8v9H2V8zm0 42v-9h8v9H2zm54 0h-8v-9h8v9z\" })] }));\n}\nexport default function ItemIcon({ itemIconString, alt = undefined, }) {\n if (itemIconString === null)\n return null;\n switch (itemIconString) {\n case 'file':\n return _jsx(FileIcon, {});\n case 'folder':\n return _jsx(FolderIcon, {});\n case 'video':\n return _jsx(VideoIcon, {});\n default: {\n return (_jsx(\"img\", { src: itemIconString, alt: alt, referrerPolicy: \"no-referrer\", loading: \"lazy\", width: 16, height: 16 }));\n }\n }\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nimport ItemIcon from './ItemIcon.js';\nfunction GridItem({ file, toggleCheckbox, className, isDisabled, restrictionError, showTitles, children = null, i18n, }) {\n return (_jsxs(\"li\", { className: className, title: isDisabled && restrictionError ? restrictionError : undefined, children: [_jsx(\"input\", { type: \"checkbox\", className: \"uppy-u-reset uppy-ProviderBrowserItem-checkbox uppy-ProviderBrowserItem-checkbox--grid\", onChange: toggleCheckbox, name: \"listitem\", id: file.id, checked: file.status === 'checked', disabled: isDisabled, \"data-uppy-super-focusable\": true }), _jsxs(\"label\", { htmlFor: file.id, \"aria-label\": file.data.name ?? i18n('unnamed'), className: \"uppy-u-reset uppy-ProviderBrowserItem-inner\", children: [_jsx(ItemIcon, { itemIconString: file.data.thumbnail || file.data.icon }), showTitles && (file.data.name ?? i18n('unnamed')), children] })] }));\n}\nexport default GridItem;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nimport ItemIcon from './ItemIcon.js';\nexport default function ListItem({ file, openFolder, className, isDisabled, restrictionError, toggleCheckbox, showTitles, i18n, }) {\n return (_jsxs(\"li\", { className: className, title: file.status !== 'checked' && restrictionError\n ? restrictionError\n : undefined, children: [_jsx(\"input\", { type: \"checkbox\", className: \"uppy-u-reset uppy-ProviderBrowserItem-checkbox\", onChange: toggleCheckbox, \n // for the <label/>\n name: \"listitem\", id: file.id, checked: file.status === 'checked', \"aria-label\": file.data.isFolder\n ? i18n('allFilesFromFolderNamed', {\n name: file.data.name ?? i18n('unnamed'),\n })\n : null, disabled: isDisabled, \"data-uppy-super-focusable\": true }), file.data.isFolder ? (\n // button to open a folder\n _jsxs(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-c-btn uppy-ProviderBrowserItem-inner\", onClick: () => openFolder(file.id), \"aria-label\": i18n('openFolderNamed', {\n name: file.data.name ?? i18n('unnamed'),\n }), children: [_jsx(\"div\", { className: \"uppy-ProviderBrowserItem-iconWrap\", children: _jsx(ItemIcon, { itemIconString: file.data.icon }) }), showTitles && file.data.name ? (_jsx(\"span\", { children: file.data.name })) : (i18n('unnamed'))] })) : (\n // label for a checkbox\n _jsxs(\"label\", { htmlFor: file.id, className: \"uppy-u-reset uppy-ProviderBrowserItem-inner\", children: [_jsx(\"div\", { className: \"uppy-ProviderBrowserItem-iconWrap\", children: _jsx(ItemIcon, { itemIconString: file.data.icon }) }), showTitles && (file.data.name ?? i18n('unnamed'))] }))] }));\n}\n","import { jsx as _jsx } from \"preact/jsx-runtime\";\nimport classNames from 'classnames';\nimport { h } from 'preact';\nimport GridItem from './components/GridItem.js';\nimport ListItem from './components/ListItem.js';\nexport default function Item(props) {\n const { viewType, toggleCheckbox, showTitles, i18n, openFolder, file, utmSource, } = props;\n const restrictionError = file.type === 'folder' ? null : file.restrictionError;\n const isDisabled = !!restrictionError && file.status !== 'checked';\n const ourProps = {\n file,\n openFolder,\n toggleCheckbox,\n utmSource,\n i18n,\n viewType,\n showTitles,\n className: classNames('uppy-ProviderBrowserItem', { 'uppy-ProviderBrowserItem--disabled': isDisabled }, { 'uppy-ProviderBrowserItem--noPreview': file.data.icon === 'video' }, { 'uppy-ProviderBrowserItem--is-checked': file.status === 'checked' }, { 'uppy-ProviderBrowserItem--is-partial': file.status === 'partial' }),\n isDisabled,\n restrictionError,\n };\n switch (viewType) {\n case 'grid':\n return _jsx(GridItem, { ...ourProps });\n case 'list':\n return _jsx(ListItem, { ...ourProps });\n case 'unsplash':\n return (_jsx(GridItem, { ...ourProps, children: _jsx(\"a\", { href: `${file.data.author.url}?utm_source=${utmSource}&utm_medium=referral`, target: \"_blank\", rel: \"noopener noreferrer\", className: \"uppy-ProviderBrowserItem-author\", tabIndex: -1, children: file.data.author.name }) }));\n default:\n throw new Error(`There is no such type ${viewType}`);\n }\n}\n","import { jsx as _jsx } from \"preact/jsx-runtime\";\n// @ts-ignore untyped\nimport VirtualList from '@uppy/utils/lib/VirtualList';\nimport { h } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\nimport Item from './Item/index.js';\nfunction Browser(props) {\n const { displayedPartialTree, viewType, toggleCheckbox, handleScroll, showTitles, i18n, isLoading, openFolder, noResultsLabel, virtualList, utmSource, } = props;\n const [isShiftKeyPressed, setIsShiftKeyPressed] = useState(false);\n // This records whether the user is holding the SHIFT key this very moment.\n // Typically, this is implemented using `onClick((e) => e.shiftKey)` -\n // however we can't use that, because for accessibility reasons\n // we're using html tags that don't support `e.shiftKey` property (see #3768).\n useEffect(() => {\n const handleKeyUp = (e) => {\n if (e.key === 'Shift')\n setIsShiftKeyPressed(false);\n };\n const handleKeyDown = (e) => {\n if (e.key === 'Shift')\n setIsShiftKeyPressed(true);\n };\n document.addEventListener('keyup', handleKeyUp);\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keyup', handleKeyUp);\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n if (isLoading) {\n return (_jsx(\"div\", { className: \"uppy-Provider-loading\", children: typeof isLoading === 'string' ? isLoading : i18n('loading') }));\n }\n if (displayedPartialTree.length === 0) {\n return _jsx(\"div\", { className: \"uppy-Provider-empty\", children: noResultsLabel });\n }\n const renderItem = (item) => (_jsx(Item, { viewType: viewType, toggleCheckbox: (event) => {\n event.stopPropagation();\n event.preventDefault();\n // Prevent shift-clicking from highlighting file names\n // (https://stackoverflow.com/a/1527797/3192470)\n document.getSelection()?.removeAllRanges();\n toggleCheckbox(item, isShiftKeyPressed);\n }, showTitles: showTitles, i18n: i18n, openFolder: openFolder, file: item, utmSource: utmSource }));\n if (virtualList) {\n return (_jsx(\"div\", { className: \"uppy-ProviderBrowser-body\", children: _jsx(\"ul\", { className: \"uppy-ProviderBrowser-list\", children: _jsx(VirtualList, { data: displayedPartialTree, renderRow: renderItem, rowHeight: 31 }) }) }));\n }\n return (_jsx(\"div\", { className: \"uppy-ProviderBrowser-body\", children: _jsx(\"ul\", { className: \"uppy-ProviderBrowser-list\", onScroll: handleScroll, \n // making <ul> not focusable for firefox\n tabIndex: -1, children: displayedPartialTree.map(renderItem) }) }));\n}\nexport default Browser;\n","/**\n * We're interested in all 'checked' leaves of this tree,\n * but we don't yet know how many files there are inside of each checked folder.\n * `getNumberOfSelectedFiles()` returns the most intuitive number we can show to the user\n * in this situation.\n */\nconst getNumberOfSelectedFiles = (partialTree) => {\n const checkedLeaves = partialTree.filter((item) => {\n if (item.type === 'file' && item.status === 'checked') {\n return true;\n }\n if (item.type === 'folder' && item.status === 'checked') {\n const doesItHaveChildren = partialTree.some((i) => i.type !== 'root' && i.parentId === item.id);\n return !doesItHaveChildren;\n }\n return false;\n });\n return checkedLeaves.length;\n};\nexport default getNumberOfSelectedFiles;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport classNames from 'classnames';\nimport { h } from 'preact';\nimport { useMemo } from 'preact/hooks';\nimport getNumberOfSelectedFiles from './utils/PartialTreeUtils/getNumberOfSelectedFiles.js';\nexport default function FooterActions({ cancelSelection, donePicking, i18n, partialTree, validateAggregateRestrictions, }) {\n const aggregateRestrictionError = useMemo(() => {\n return validateAggregateRestrictions(partialTree);\n }, [partialTree, validateAggregateRestrictions]);\n const nOfSelectedFiles = useMemo(() => {\n return getNumberOfSelectedFiles(partialTree);\n }, [partialTree]);\n if (nOfSelectedFiles === 0) {\n return null;\n }\n return (_jsxs(\"div\", { className: \"uppy-ProviderBrowser-footer\", children: [_jsxs(\"div\", { className: \"uppy-ProviderBrowser-footer-buttons\", children: [_jsx(\"button\", { className: classNames('uppy-u-reset uppy-c-btn uppy-c-btn-primary', {\n 'uppy-c-btn--disabled': aggregateRestrictionError,\n }), disabled: !!aggregateRestrictionError, onClick: donePicking, type: \"button\", children: i18n('selectX', {\n smart_count: nOfSelectedFiles,\n }) }), _jsx(\"button\", { className: \"uppy-u-reset uppy-c-btn uppy-c-btn-link\", onClick: cancelSelection, type: \"button\", children: i18n('cancel') })] }), aggregateRestrictionError && (_jsx(\"div\", { className: \"uppy-ProviderBrowser-footer-error\", children: aggregateRestrictionError }))] }));\n}\n","/* @ts-self-types=\"./index.d.ts\" */\nlet urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nexport let customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nexport let nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { nanoid } from 'nanoid/non-secure';\nimport { h } from 'preact';\nimport { useCallback, useEffect, useState } from 'preact/hooks';\nfunction SearchInput({ searchString, setSearchString, submitSearchString, wrapperClassName, inputClassName, inputLabel, clearSearchLabel = '', showButton = false, buttonLabel = '', buttonCSSClassName = '', }) {\n const onInput = (e) => {\n setSearchString(e.target.value);\n };\n const submit = useCallback((ev) => {\n ev.preventDefault();\n submitSearchString();\n }, [submitSearchString]);\n // We do this to avoid nested <form>s\n // (See https://github.com/transloadit/uppy/pull/5050#discussion_r1640392516)\n const [form] = useState(() => {\n const formEl = document.createElement('form');\n formEl.setAttribute('tabindex', '-1');\n formEl.id = nanoid();\n return formEl;\n });\n useEffect(() => {\n document.body.appendChild(form);\n form.addEventListener('submit', submit);\n return () => {\n form.removeEventListener('submit', submit);\n document.body.removeChild(form);\n };\n }, [form, submit]);\n return (_jsxs(\"section\", { className: wrapperClassName, children: [_jsx(\"input\", { className: `uppy-u-reset ${inputClassName}`, type: \"search\", \"aria-label\": inputLabel, placeholder: inputLabel, value: searchString, onInput: onInput, form: form.id, \"data-uppy-super-focusable\": true }), !showButton && (\n // 🔍\n _jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon uppy-ProviderBrowser-searchFilterIcon\", width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", children: _jsx(\"path\", { d: \"M8.638 7.99l3.172 3.172a.492.492 0 1 1-.697.697L7.91 8.656a4.977 4.977 0 0 1-2.983.983C2.206 9.639 0 7.481 0 4.819 0 2.158 2.206 0 4.927 0c2.721 0 4.927 2.158 4.927 4.82a4.74 4.74 0 0 1-1.216 3.17zm-3.71.685c2.176 0 3.94-1.726 3.94-3.856 0-2.129-1.764-3.855-3.94-3.855C2.75.964.984 2.69.984 4.819c0 2.13 1.765 3.856 3.942 3.856z\" }) })), !showButton && searchString && (\n // ❌\n _jsx(\"button\", { className: \"uppy-u-reset uppy-ProviderBrowser-searchFilterReset\", type: \"button\", \"aria-label\": clearSearchLabel, title: clearSearchLabel, onClick: () => setSearchString(''), children: _jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", viewBox: \"0 0 19 19\", children: _jsx(\"path\", { d: \"M17.318 17.232L9.94 9.854 9.586 9.5l-.354.354-7.378 7.378h.707l-.62-.62v.706L9.318 9.94l.354-.354-.354-.354L1.94 1.854v.707l.62-.62h-.706l7.378 7.378.354.354.354-.354 7.378-7.378h-.707l.622.62v-.706L9.854 9.232l-.354.354.354.354 7.378 7.378.708-.707-7.38-7.378v.708l7.38-7.38.353-.353-.353-.353-.622-.622-.353-.353-.354.352-7.378 7.38h.708L2.56 1.23 2.208.88l-.353.353-.622.62-.353.355.352.353 7.38 7.38v-.708l-7.38 7.38-.353.353.352.353.622.622.353.353.354-.353 7.38-7.38h-.708l7.38 7.38z\" }) }) })), showButton && (_jsx(\"button\", { className: `uppy-u-reset uppy-c-btn uppy-c-btn-primary ${buttonCSSClassName}`, type: \"submit\", form: form.id, children: buttonLabel }))] }));\n}\nexport default SearchInput;\n","// TODO: document what is a \"tagFile\" or get rid of this concept\nconst getTagFile = (file, plugin, provider) => {\n const tagFile = {\n id: file.id,\n source: plugin.id,\n name: file.name || file.id,\n type: file.mimeType,\n isRemote: true,\n data: file,\n preview: file.thumbnail || undefined,\n meta: {\n authorName: file.author?.name,\n authorUrl: file.author?.url,\n // We need to do this `|| null` check, because null value\n // for .relDirPath is `undefined` and for .relativePath is `null`.\n // I do think we should just use `null` everywhere.\n relativePath: file.relDirPath || null,\n absolutePath: file.absDirPath,\n },\n body: {\n fileId: file.id,\n },\n remote: {\n companionUrl: plugin.opts.companionUrl,\n url: `${provider.fileUrl(file.requestPath)}`,\n body: {\n fileId: file.id,\n },\n providerName: provider.name,\n provider: provider.provider,\n requestClientId: provider.provider,\n },\n };\n return tagFile;\n};\nexport default getTagFile;\n","import { getSafeFileId } from '@uppy/utils/lib/generateFileID';\nimport getTagFile from './getTagFile.js';\nconst addFiles = (companionFiles, plugin, provider) => {\n const tagFiles = companionFiles.map((f) => getTagFile(f, plugin, provider));\n const filesToAdd = [];\n const filesAlreadyAdded = [];\n tagFiles.forEach((tagFile) => {\n if (plugin.uppy.checkIfFileAlreadyExists(getSafeFileId(tagFile, plugin.uppy.getID()))) {\n filesAlreadyAdded.push(tagFile);\n }\n else {\n filesToAdd.push(tagFile);\n }\n });\n if (filesToAdd.length > 0) {\n plugin.uppy.info(plugin.uppy.i18n('addedNumFiles', { numFiles: filesToAdd.length }));\n }\n if (filesAlreadyAdded.length > 0) {\n plugin.uppy.info(`Not adding ${filesAlreadyAdded.length} files because they already exist`);\n }\n plugin.uppy.addFiles(filesToAdd);\n};\nexport default addFiles;\n","// Shift-clicking selects a single consecutive list of items\n// starting at the previous click.\nconst getClickedRange = (clickedId, displayedPartialTree, isShiftKeyPressed, lastCheckbox) => {\n const lastCheckboxIndex = displayedPartialTree.findIndex((item) => item.id === lastCheckbox);\n if (lastCheckboxIndex !== -1 && isShiftKeyPressed) {\n const newCheckboxIndex = displayedPartialTree.findIndex((item) => item.id === clickedId);\n const clickedRange = displayedPartialTree.slice(Math.min(lastCheckboxIndex, newCheckboxIndex), Math.max(lastCheckboxIndex, newCheckboxIndex) + 1);\n return clickedRange.map((item) => item.id);\n }\n return [clickedId];\n};\nexport default getClickedRange;\n","const handleError = (uppy) => (error) => {\n // authError just means we're not authenticated, don't report it\n if (error.isAuthError) {\n return;\n }\n // AbortError means the user has clicked \"cancel\" on an operation\n if (error.name === 'AbortError') {\n uppy.log('Aborting request', 'warning');\n return;\n }\n uppy.log(error, 'error');\n if (error.name === 'UserFacingApiError') {\n uppy.info({\n message: uppy.i18n('companionError'),\n details: uppy.i18n(error.message),\n }, 'warning', 5000);\n }\n};\nexport default handleError;\n","const getBreadcrumbs = (partialTree, currentFolderId) => {\n let folder = partialTree.find((f) => f.id === currentFolderId);\n let breadcrumbs = [];\n while (true) {\n breadcrumbs = [folder, ...breadcrumbs];\n if (folder.type === 'root')\n break;\n const currentParentId = folder.parentId;\n folder = partialTree.find((f) => f.id === currentParentId);\n }\n return breadcrumbs;\n};\nexport default getBreadcrumbs;\n","const getPath = (partialTree, id, cache) => {\n const sId = id === null ? 'null' : id;\n if (cache[sId])\n return cache[sId];\n const file = partialTree.find((f) => f.id === id);\n if (file.type === 'root')\n return [];\n const meAndParentPath = [...getPath(partialTree, file.parentId, cache), file];\n cache[sId] = meAndParentPath;\n return meAndParentPath;\n};\n// See \"Uppy file properties\" documentation for `.absolutePath` and `.relativePath`\n// (https://uppy.io/docs/uppy/#working-with-uppy-files)\nconst getCheckedFilesWithPaths = (partialTree) => {\n // Equivalent to `const cache = {}`, but makes keys such as 'hasOwnProperty' safe too\n const cache = Object.create(null);\n // We're only interested in injecting paths into 'checked' files\n const checkedFiles = partialTree.filter((item) => item.type === 'file' && item.status === 'checked');\n const companionFilesWithInjectedPaths = checkedFiles.map((file) => {\n const absFolders = getPath(partialTree, file.id, cache);\n const firstCheckedFolderIndex = absFolders.findIndex((i) => i.type === 'folder' && i.status === 'checked');\n const relFolders = absFolders.slice(firstCheckedFolderIndex);\n const absDirPath = `/${absFolders.map((i) => i.data.name).join('/')}`;\n const relDirPath = relFolders.length === 1\n ? // Must return `undefined` (which later turns into `null` in `.getTagFile()`)\n // (https://github.com/transloadit/uppy/pull/4537#issuecomment-1629136652)\n undefined\n : relFolders.map((i) => i.data.name).join('/');\n return {\n ...file.data,\n absDirPath,\n relDirPath,\n };\n });\n return companionFilesWithInjectedPaths;\n};\nexport default getCheckedFilesWithPaths;\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined\n\t? new AbortError(errorMessage)\n\t: new DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined\n\t\t? getDOMException('This operation was aborted.')\n\t\t: signal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t} = options;\n\n\tlet timer;\n\tlet abortHandler;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tabortHandler = () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t};\n\n\t\t\tsignal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tpromise.then(resolve, reject);\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t})();\n\t});\n\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t\tif (abortHandler && options.signal) {\n\t\t\toptions.signal.removeEventListener('abort', abortHandler);\n\t\t}\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n id: options.id,\n run,\n };\n if (this.size === 0 || this.#queue[this.size - 1].priority >= options.priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n setPriority(id, priority) {\n const index = this.#queue.findIndex((element) => element.id === id);\n if (index === -1) {\n throw new ReferenceError(`No promise function with the id \"${id}\" exists in the queue.`);\n }\n const [item] = this.#queue.splice(index, 1);\n this.enqueue(item.run, { priority, id });\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverConcurrencyCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #interval;\n #intervalEnd = 0;\n #intervalId;\n #timeoutId;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n #throwOnTimeout;\n // Use to assign a unique identifier to a promise function, if not explicitly specified\n #idAssigner = 1n;\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n\n Applies to each future operation.\n */\n timeout;\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n this.#carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n this.#throwOnTimeout = options.throwOnTimeout === true;\n this.#isPaused = options.autoStart === false;\n }\n get #doesIntervalAllowAnother() {\n return this.#isIntervalIgnored || this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n this.#timeoutId = undefined;\n }\n get #isIntervalPaused() {\n const now = Date.now();\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this.#intervalCount = (this.#carryoverConcurrencyCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n if (this.#timeoutId === undefined) {\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n }\n this.#intervalId = undefined;\n this.emit('empty');\n if (this.#pending === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!this.#isPaused) {\n const canInitializeInterval = !this.#isIntervalPaused;\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n this.#processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n async #throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n }, { once: true });\n });\n }\n /**\n Updates the priority of a promise function by its id, affecting its execution order. Requires a defined concurrency limit to take effect.\n\n For example, this can be used to prioritize a promise function to run earlier.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 0, id: '🦀'});\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦄', {priority: 1});\n\n queue.setPriority('🦀', 2);\n ```\n\n In this case, the promise function with `id: '🦀'` runs second.\n\n You can also deprioritize a promise function to delay its execution:\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 1, id: '🦀'});\n queue.add(async () => '🦄');\n queue.add(async () => '🦄', {priority: 0});\n\n queue.setPriority('🦀', -1);\n ```\n Here, the promise function with `id: '🦀'` executes last.\n */\n setPriority(id, priority) {\n this.#queue.setPriority(id, priority);\n }\n async add(function_, options = {}) {\n // In case `id` is not defined.\n options.id ??= (this.#idAssigner++).toString();\n options = {\n timeout: this.timeout,\n throwOnTimeout: this.#throwOnTimeout,\n ...options,\n };\n return new Promise((resolve, reject) => {\n this.#queue.enqueue(async () => {\n this.#pending++;\n this.#intervalCount++;\n try {\n options.signal?.throwIfAborted();\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout });\n }\n if (options.signal) {\n operation = Promise.race([operation, this.#throwOnAbort(options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n this.#next();\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n}\n","/**\n * One-level copying is sufficient as mutations within our `partialTree` are limited to properties\n * such as `.status`, `.cached`, `.nextPagePath`, and not `.data = { THIS }`.\n */\nconst shallowClone = (partialTree) => {\n return partialTree.map((item) => ({ ...item }));\n};\nexport default shallowClone;\n","// p-queue does not have a `\"main\"` field in its `package.json`, and that makes `import/no-unresolved` freak out.\n// We can safely ignore it because bundlers will happily use the `\"exports\"` field instead.\nimport PQueue from 'p-queue';\nimport shallowClone from './shallowClone.js';\nconst recursivelyFetch = async (queue, poorTree, poorFolder, apiList, validateSingleFile) => {\n let items = [];\n let currentPath = poorFolder.cached\n ? poorFolder.nextPagePath\n : poorFolder.id;\n while (currentPath) {\n const response = await apiList(currentPath);\n items = items.concat(response.items);\n currentPath = response.nextPagePath;\n }\n const newFolders = items.filter((i) => i.isFolder === true);\n const newFiles = items.filter((i) => i.isFolder === false);\n const folders = newFolders.map((folder) => ({\n type: 'folder',\n id: folder.requestPath,\n cached: false,\n nextPagePath: null,\n status: 'checked',\n parentId: poorFolder.id,\n data: folder,\n }));\n const files = newFiles.map((file) => {\n const restrictionError = validateSingleFile(file);\n return {\n type: 'file',\n id: file.requestPath,\n restrictionError,\n status: restrictionError ? 'unchecked' : 'checked',\n parentId: poorFolder.id,\n data: file,\n };\n });\n poorFolder.cached = true;\n poorFolder.nextPagePath = null;\n poorTree.push(...files, ...folders);\n folders.forEach(async (folder) => {\n queue.add(() => recursivelyFetch(queue, poorTree, folder, apiList, validateSingleFile));\n });\n};\nconst afterFill = async (partialTree, apiList, validateSingleFile, reportProgress) => {\n const queue = new PQueue({ concurrency: 6 });\n // fill up the missing parts of a partialTree!\n const poorTree = shallowClone(partialTree);\n const poorFolders = poorTree.filter((item) => item.type === 'folder' &&\n item.status === 'checked' &&\n // either \"not yet cached at all\" or \"some pages are left to fetch\"\n (item.cached === false || item.nextPagePath));\n // per each poor folder, recursively fetch all files and make them .checked!\n poorFolders.forEach((poorFolder) => {\n queue.add(() => recursivelyFetch(queue, poorTree, poorFolder, apiList, validateSingleFile));\n });\n queue.on('completed', () => {\n const nOfFilesChecked = poorTree.filter((i) => i.type === 'file' && i.status === 'checked').length;\n reportProgress(nOfFilesChecked);\n });\n await queue.onIdle();\n return poorTree;\n};\nexport default afterFill;\n","const afterOpenFolder = (oldPartialTree, discoveredItems, clickedFolder, currentPagePath, validateSingleFile) => {\n const discoveredFolders = discoveredItems.filter((i) => i.isFolder === true);\n const discoveredFiles = discoveredItems.filter((i) => i.isFolder === false);\n const isParentFolderChecked = clickedFolder.type === 'folder' && clickedFolder.status === 'checked';\n const folders = discoveredFolders.map((folder) => ({\n type: 'folder',\n id: folder.requestPath,\n cached: false,\n nextPagePath: null,\n status: isParentFolderChecked ? 'checked' : 'unchecked',\n parentId: clickedFolder.id,\n data: folder,\n }));\n const files = discoveredFiles.map((file) => {\n const restrictionError = validateSingleFile(file);\n return {\n type: 'file',\n id: file.requestPath,\n restrictionError,\n status: isParentFolderChecked && !restrictionError ? 'checked' : 'unchecked',\n parentId: clickedFolder.id,\n data: file,\n };\n });\n // just doing `clickedFolder.cached = true` in a non-mutating way\n const updatedClickedFolder = {\n ...clickedFolder,\n cached: true,\n nextPagePath: currentPagePath,\n };\n const partialTreeWithUpdatedClickedFolder = oldPartialTree.map((folder) => folder.id === updatedClickedFolder.id ? updatedClickedFolder : folder);\n const newPartialTree = [\n ...partialTreeWithUpdatedClickedFolder,\n ...folders,\n ...files,\n ];\n return newPartialTree;\n};\nexport default afterOpenFolder;\n","const afterScrollFolder = (oldPartialTree, currentFolderId, items, nextPagePath, validateSingleFile) => {\n const currentFolder = oldPartialTree.find((i) => i.id === currentFolderId);\n const newFolders = items.filter((i) => i.isFolder === true);\n const newFiles = items.filter((i) => i.isFolder === false);\n // just doing `scrolledFolder.nextPagePath = ...` in a non-mutating way\n const scrolledFolder = { ...currentFolder, nextPagePath };\n const partialTreeWithUpdatedScrolledFolder = oldPartialTree.map((folder) => folder.id === scrolledFolder.id ? scrolledFolder : folder);\n const isParentFolderChecked = scrolledFolder.type === 'folder' && scrolledFolder.status === 'checked';\n const folders = newFolders.map((folder) => ({\n type: 'folder',\n id: folder.requestPath,\n cached: false,\n nextPagePath: null,\n status: isParentFolderChecked ? 'checked' : 'unchecked',\n parentId: scrolledFolder.id,\n data: folder,\n }));\n const files = newFiles.map((file) => {\n const restrictionError = validateSingleFile(file);\n return {\n type: 'file',\n id: file.requestPath,\n restrictionError,\n status: isParentFolderChecked && !restrictionError ? 'checked' : 'unchecked',\n parentId: scrolledFolder.id,\n data: file,\n };\n });\n const newPartialTree = [\n ...partialTreeWithUpdatedScrolledFolder,\n ...folders,\n ...files,\n ];\n return newPartialTree;\n};\nexport default afterScrollFolder;\n","import shallowClone from './shallowClone.js';\n/*\n FROM | TO\n\n root | root\n folder | folder\n folder ✅︎ | folder ✅︎\n file | file ✅︎\n file | file ✅︎\n folder | folder ✅︎\n file | file ✅︎\n file | file\n file | file\n*/\nconst percolateDown = (tree, id, shouldMarkAsChecked) => {\n const children = tree.filter((item) => item.type !== 'root' && item.parentId === id);\n children.forEach((item) => {\n item.status =\n shouldMarkAsChecked && !(item.type === 'file' && item.restrictionError)\n ? 'checked'\n : 'unchecked';\n percolateDown(tree, item.id, shouldMarkAsChecked);\n });\n};\n/*\n FROM | TO\n\n root | root\n folder | folder\n folder | folder [▬] ('partial' status)\n file | file\n folder | folder ✅︎\n file ✅︎ | file ✅︎\n file | file\n file | file\n*/\nconst percolateUp = (tree, id) => {\n const folder = tree.find((item) => item.id === id);\n if (folder.type === 'root')\n return;\n const validChildren = tree.filter((item) => \n // is a child\n item.type !== 'root' &&\n item.parentId === folder.id &&\n // does pass validations\n !(item.type === 'file' && item.restrictionError));\n const areAllChildrenChecked = validChildren.every((item) => item.status === 'checked');\n const areAllChildrenUnchecked = validChildren.every((item) => item.status === 'unchecked');\n if (areAllChildrenChecked) {\n folder.status = 'checked';\n }\n else if (areAllChildrenUnchecked) {\n folder.status = 'unchecked';\n }\n else {\n folder.status = 'partial';\n }\n percolateUp(tree, folder.parentId);\n};\nconst afterToggleCheckbox = (oldTree, clickedRange) => {\n const tree = shallowClone(oldTree);\n if (clickedRange.length >= 2) {\n // We checked two or more items\n const newlyCheckedItems = tree.filter((item) => item.type !== 'root' && clickedRange.includes(item.id));\n newlyCheckedItems.forEach((item) => {\n if (item.type === 'file') {\n item.status = item.restrictionError ? 'unchecked' : 'checked';\n }\n else {\n item.status = 'checked';\n }\n });\n newlyCheckedItems.forEach((item) => {\n percolateDown(tree, item.id, true);\n });\n percolateUp(tree, newlyCheckedItems[0].parentId);\n }\n else {\n // We checked exactly one item\n const clickedItem = tree.find((item) => item.id === clickedRange[0]);\n clickedItem.status =\n clickedItem.status === 'checked' ? 'unchecked' : 'checked';\n percolateDown(tree, clickedItem.id, clickedItem.status === 'checked');\n percolateUp(tree, clickedItem.parentId);\n }\n return tree;\n};\nexport default afterToggleCheckbox;\n","import afterFill from './afterFill.js';\nimport afterOpenFolder from './afterOpenFolder.js';\nimport afterScrollFolder from './afterScrollFolder.js';\nimport afterToggleCheckbox from './afterToggleCheckbox.js';\nexport default {\n afterOpenFolder,\n afterScrollFolder,\n afterToggleCheckbox,\n afterFill,\n};\n","const shouldHandleScroll = (event) => {\n const { scrollHeight, scrollTop, offsetHeight } = event.target;\n const scrollPosition = scrollHeight - (scrollTop + offsetHeight);\n return scrollPosition < 50;\n};\nexport default shouldHandleScroll;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { Fragment, h } from 'preact';\nexport default function Breadcrumbs(props) {\n const { openFolder, title, breadcrumbsIcon, breadcrumbs, i18n } = props;\n return (_jsxs(\"div\", { className: \"uppy-Provider-breadcrumbs\", children: [_jsx(\"div\", { className: \"uppy-Provider-breadcrumbsIcon\", children: breadcrumbsIcon }), breadcrumbs.map((folder, index) => (_jsxs(Fragment, { children: [_jsx(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-c-btn\", onClick: () => openFolder(folder.id), children: folder.type === 'root'\n ? title\n : (folder.data.name ?? i18n('unnamed')) }, folder.id), breadcrumbs.length === index + 1 ? '' : ' / '] })))] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { Fragment, h } from 'preact';\nexport default function User({ i18n, logout, username }) {\n return (_jsxs(Fragment, { children: [username && (_jsx(\"span\", { className: \"uppy-ProviderBrowser-user\", children: username }, \"username\")), _jsx(\"button\", { type: \"button\", onClick: logout, className: \"uppy-u-reset uppy-c-btn uppy-ProviderBrowser-userLogout\", children: i18n('logOut') }, \"logout\")] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport classNames from 'classnames';\nimport { h } from 'preact';\nimport Breadcrumbs from '../Breadcrumbs.js';\nimport User from './User.js';\nexport default function Header(props) {\n return (_jsx(\"div\", { className: \"uppy-ProviderBrowser-header\", children: _jsxs(\"div\", { className: classNames('uppy-ProviderBrowser-headerBar', !props.showBreadcrumbs && 'uppy-ProviderBrowser-headerBar--simple'), children: [props.showBreadcrumbs && (_jsx(Breadcrumbs, { openFolder: props.openFolder, breadcrumbs: props.breadcrumbs, breadcrumbsIcon: props.pluginIcon?.(), title: props.title, i18n: props.i18n })), _jsx(User, { logout: props.logout, username: props.username, i18n: props.i18n })] }) }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport remoteFileObjToLocal from '@uppy/utils/lib/remoteFileObjToLocal';\nimport classNames from 'classnames';\nimport { h } from 'preact';\n// @ts-ignore We don't want TS to generate types for the package.json\nimport packageJson from '../../package.json';\nimport Browser from '../Browser.js';\nimport FooterActions from '../FooterActions.js';\nimport SearchInput from '../SearchInput.js';\nimport addFiles from '../utils/addFiles.js';\nimport getClickedRange from '../utils/getClickedRange.js';\nimport handleError from '../utils/handleError.js';\nimport getBreadcrumbs from '../utils/PartialTreeUtils/getBreadcrumbs.js';\nimport getCheckedFilesWithPaths from '../utils/PartialTreeUtils/getCheckedFilesWithPaths.js';\nimport getNumberOfSelectedFiles from '../utils/PartialTreeUtils/getNumberOfSelectedFiles.js';\nimport PartialTreeUtils from '../utils/PartialTreeUtils/index.js';\nimport shouldHandleScroll from '../utils/shouldHandleScroll.js';\nimport AuthView from './AuthView.js';\nimport Header from './Header.js';\nexport function defaultPickerIcon() {\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"30\", height: \"30\", viewBox: \"0 0 30 30\", children: _jsx(\"path\", { d: \"M15 30c8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15zm4.258-12.676v6.846h-8.426v-6.846H5.204l9.82-12.364 9.82 12.364H19.26z\" }) }));\n}\nconst getDefaultState = (rootFolderId) => ({\n authenticated: undefined, // we don't know yet\n partialTree: [\n {\n type: 'root',\n id: rootFolderId,\n cached: false,\n nextPagePath: null,\n },\n ],\n currentFolderId: rootFolderId,\n searchString: '',\n didFirstRender: false,\n username: null,\n loading: false,\n});\n/**\n * Class to easily generate generic views for Provider plugins\n */\nexport default class ProviderView {\n static VERSION = packageJson.version;\n plugin;\n provider;\n opts;\n isHandlingScroll = false;\n lastCheckbox = null;\n constructor(plugin, opts) {\n this.plugin = plugin;\n this.provider = opts.provider;\n const defaultOptions = {\n viewType: 'list',\n showTitles: true,\n showFilter: true,\n showBreadcrumbs: true,\n loadAllFiles: false,\n virtualList: false,\n };\n this.opts = { ...defaultOptions, ...opts };\n this.openFolder = this.openFolder.bind(this);\n this.logout = this.logout.bind(this);\n this.handleAuth = this.handleAuth.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n this.resetPluginState = this.resetPluginState.bind(this);\n this.donePicking = this.donePicking.bind(this);\n this.render = this.render.bind(this);\n this.cancelSelection = this.cancelSelection.bind(this);\n this.toggleCheckbox = this.toggleCheckbox.bind(this);\n // Set default state for the plugin\n this.resetPluginState();\n // todo\n // @ts-expect-error this should be typed in @uppy/dashboard.\n this.plugin.uppy.on('dashboard:close-panel', this.resetPluginState);\n this.plugin.uppy.registerRequestClient(this.provider.provider, this.provider);\n }\n resetPluginState() {\n this.plugin.setPluginState(getDefaultState(this.plugin.rootFolderId));\n }\n tearDown() {\n // Nothing.\n }\n setLoading(loading) {\n this.plugin.setPluginState({ loading });\n }\n cancelSelection() {\n const { partialTree } = this.plugin.getPluginState();\n const newPartialTree = partialTree.map((item) => item.type === 'root' ? item : { ...item, status: 'unchecked' });\n this.plugin.setPluginState({ partialTree: newPartialTree });\n }\n #abortController;\n async #withAbort(op) {\n // prevent multiple requests in parallel from causing race conditions\n this.#abortController?.abort();\n const abortController = new AbortController();\n this.#abortController = abortController;\n const cancelRequest = () => {\n abortController.abort();\n };\n try {\n // @ts-expect-error this should be typed in @uppy/dashboard.\n // Even then I don't think we can make this work without adding dashboard\n // as a dependency to provider-views.\n this.plugin.uppy.on('dashboard:close-panel', cancelRequest);\n this.plugin.uppy.on('cancel-all', cancelRequest);\n await op(abortController.signal);\n }\n finally {\n // @ts-expect-error this should be typed in @uppy/dashboard.\n // Even then I don't think we can make this work without adding dashboard\n // as a dependency to provider-views.\n this.plugin.uppy.off('dashboard:close-panel', cancelRequest);\n this.plugin.uppy.off('cancel-all', cancelRequest);\n this.#abortController = undefined;\n }\n }\n async openFolder(folderId) {\n this.lastCheckbox = null;\n // Returning cached folder\n const { partialTree } = this.plugin.getPluginState();\n const clickedFolder = partialTree.find((folder) => folder.id === folderId);\n if (clickedFolder.cached) {\n this.plugin.setPluginState({\n currentFolderId: folderId,\n searchString: '',\n });\n return;\n }\n this.setLoading(true);\n await this.#withAbort(async (signal) => {\n let currentPagePath = folderId;\n let currentItems = [];\n do {\n const { username, nextPagePath, items } = await this.provider.list(currentPagePath, { signal });\n // It's important to set the username during one of our first fetches\n this.plugin.setPluginState({ username });\n currentPagePath = nextPagePath;\n currentItems = currentItems.concat(items);\n this.setLoading(this.plugin.uppy.i18n('loadedXFiles', {\n numFiles: currentItems.length,\n }));\n } while (this.opts.loadAllFiles && currentPagePath);\n const newPartialTree = PartialTreeUtils.afterOpenFolder(partialTree, currentItems, clickedFolder, currentPagePath, this.validateSingleFile);\n this.plugin.setPluginState({\n partialTree: newPartialTree,\n currentFolderId: folderId,\n searchString: '',\n });\n }).catch(handleError(this.plugin.uppy));\n this.setLoading(false);\n }\n /**\n * Removes session token on client side.\n */\n async logout() {\n await this.#withAbort(async (signal) => {\n const res = await this.provider.logout({\n signal,\n });\n // res.ok is from the JSON body, not to be confused with Response.ok\n if (res.ok) {\n if (!res.revoked) {\n const message = this.plugin.uppy.i18n('companionUnauthorizeHint', {\n provider: this.plugin.title,\n url: res.manual_revoke_url,\n });\n this.plugin.uppy.info(message, 'info', 7000);\n }\n this.plugin.setPluginState({\n ...getDefaultState(this.plugin.rootFolderId),\n authenticated: false,\n });\n }\n }).catch(handleError(this.plugin.uppy));\n }\n async handleAuth(authFormData) {\n await this.#withAbort(async (signal) => {\n this.setLoading(true);\n await this.provider.login({ authFormData, signal });\n this.plugin.setPluginState({ authenticated: true });\n await Promise.all([\n this.provider.fetchPreAuthToken(),\n this.openFolder(this.plugin.rootFolderId),\n ]);\n }).catch(handleError(this.plugin.uppy));\n this.setLoading(false);\n }\n async handleScroll(event) {\n const { partialTree, currentFolderId } = this.plugin.getPluginState();\n const currentFolder = partialTree.find((i) => i.id === currentFolderId);\n if (shouldHandleScroll(event) &&\n !this.isHandlingScroll &&\n currentFolder.nextPagePath) {\n this.isHandlingScroll = true;\n await this.#withAbort(async (signal) => {\n const { nextPagePath, items } = await this.provider.list(currentFolder.nextPagePath, { signal });\n const newPartialTree = PartialTreeUtils.afterScrollFolder(partialTree, currentFolderId, items, nextPagePath, this.validateSingleFile);\n this.plugin.setPluginState({ partialTree: newPartialTree });\n }).catch(handleError(this.plugin.uppy));\n this.isHandlingScroll = false;\n }\n }\n validateSingleFile = (file) => {\n const companionFile = remoteFileObjToLocal(file);\n const result = this.plugin.uppy.validateSingleFile(companionFile);\n return result;\n };\n async donePicking() {\n const { partialTree } = this.plugin.getPluginState();\n this.setLoading(true);\n await this.#withAbort(async (signal) => {\n // 1. Enrich our partialTree by fetching all 'checked' but not-yet-fetched folders\n const enrichedTree = await PartialTreeUtils.afterFill(partialTree, (path) => this.provider.list(path, { signal }), this.validateSingleFile, (n) => {\n this.setLoading(this.plugin.uppy.i18n('addedNumFiles', { numFiles: n }));\n });\n // 2. Now that we know how many files there are - recheck aggregateRestrictions!\n const aggregateRestrictionError = this.validateAggregateRestrictions(enrichedTree);\n if (aggregateRestrictionError) {\n this.plugin.setPluginState({ partialTree: enrichedTree });\n return;\n }\n // 3. Add files\n const companionFiles = getCheckedFilesWithPaths(enrichedTree);\n addFiles(companionFiles, this.plugin, this.provider);\n // 4. Reset state\n this.resetPluginState();\n }).catch(handleError(this.plugin.uppy));\n this.setLoading(false);\n }\n toggleCheckbox(ourItem, isShiftKeyPressed) {\n const { partialTree } = this.plugin.getPluginState();\n const clickedRange = getClickedRange(ourItem.id, this.getDisplayedPartialTree(), isShiftKeyPressed, this.lastCheckbox);\n const newPartialTree = PartialTreeUtils.afterToggleCheckbox(partialTree, clickedRange);\n this.plugin.setPluginState({ partialTree: newPartialTree });\n this.lastCheckbox = ourItem.id;\n }\n getDisplayedPartialTree = () => {\n const { partialTree, currentFolderId, searchString } = this.plugin.getPluginState();\n const inThisFolder = partialTree.filter((item) => item.type !== 'root' && item.parentId === currentFolderId);\n const filtered = searchString === ''\n ? inThisFolder\n : inThisFolder.filter((item) => (item.data.name ?? this.plugin.uppy.i18n('unnamed'))\n .toLowerCase()\n .indexOf(searchString.toLowerCase()) !== -1);\n return filtered;\n };\n getBreadcrumbs = () => {\n const { partialTree, currentFolderId } = this.plugin.getPluginState();\n return getBreadcrumbs(partialTree, currentFolderId);\n };\n getSelectedAmount = () => {\n const { partialTree } = this.plugin.getPluginState();\n return getNumberOfSelectedFiles(partialTree);\n };\n validateAggregateRestrictions = (partialTree) => {\n const checkedFiles = partialTree.filter((item) => item.type === 'file' && item.status === 'checked');\n const uppyFiles = checkedFiles.map((file) => file.data);\n return this.plugin.uppy.validateAggregateRestrictions(uppyFiles);\n };\n render(state, viewOptions = {}) {\n const { didFirstRender } = this.plugin.getPluginState();\n const { i18n } = this.plugin.uppy;\n if (!didFirstRender) {\n this.plugin.setPluginState({ didFirstRender: true });\n this.provider.fetchPreAuthToken();\n this.openFolder(this.plugin.rootFolderId);\n }\n const opts = { ...this.opts, ...viewOptions };\n const { authenticated, loading } = this.plugin.getPluginState();\n const pluginIcon = this.plugin.icon || defaultPickerIcon;\n if (authenticated === false) {\n return (_jsx(AuthView, { pluginName: this.plugin.title, pluginIcon: pluginIcon, handleAuth: this.handleAuth, i18n: this.plugin.uppy.i18n, renderForm: opts.renderAuthForm, loading: loading }));\n }\n const { partialTree, username, searchString } = this.plugin.getPluginState();\n const breadcrumbs = this.getBreadcrumbs();\n return (_jsxs(\"div\", { className: classNames('uppy-ProviderBrowser', `uppy-ProviderBrowser-viewType--${opts.viewType}`), children: [_jsx(Header, { showBreadcrumbs: opts.showBreadcrumbs, openFolder: this.openFolder, breadcrumbs: breadcrumbs, pluginIcon: pluginIcon, title: this.plugin.title, logout: this.logout, username: username, i18n: i18n }), opts.showFilter && (_jsx(SearchInput, { searchString: searchString, setSearchString: (s) => {\n this.plugin.setPluginState({ searchString: s });\n }, submitSearchString: () => { }, inputLabel: i18n('filter'), clearSearchLabel: i18n('resetFilter'), wrapperClassName: \"uppy-ProviderBrowser-searchFilter\", inputClassName: \"uppy-ProviderBrowser-searchFilterInput\" })), _jsx(Browser, { toggleCheckbox: this.toggleCheckbox, displayedPartialTree: this.getDisplayedPartialTree(), openFolder: this.openFolder, virtualList: opts.virtualList, noResultsLabel: i18n('noFilesFound'), handleScroll: this.handleScroll, viewType: opts.viewType, showTitles: opts.showTitles, i18n: this.plugin.uppy.i18n, isLoading: loading, utmSource: \"Companion\" }), _jsx(FooterActions, { partialTree: partialTree, donePicking: this.donePicking, cancelSelection: this.cancelSelection, i18n: i18n, validateAggregateRestrictions: this.validateAggregateRestrictions })] }));\n }\n}\n","export { default, defaultPickerIcon } from './ProviderView.js';\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport remoteFileObjToLocal from '@uppy/utils/lib/remoteFileObjToLocal';\nimport classNames from 'classnames';\nimport { h } from 'preact';\n// @ts-ignore We don't want TS to generate types for the package.json\nimport packageJson from '../../package.json';\nimport Browser from '../Browser.js';\nimport FooterActions from '../FooterActions.js';\nimport SearchInput from '../SearchInput.js';\nimport addFiles from '../utils/addFiles.js';\nimport getClickedRange from '../utils/getClickedRange.js';\nimport handleError from '../utils/handleError.js';\nimport getCheckedFilesWithPaths from '../utils/PartialTreeUtils/getCheckedFilesWithPaths.js';\nimport PartialTreeUtils from '../utils/PartialTreeUtils/index.js';\nimport shouldHandleScroll from '../utils/shouldHandleScroll.js';\nconst defaultState = {\n loading: false,\n searchString: '',\n partialTree: [\n {\n type: 'root',\n id: null,\n cached: false,\n nextPagePath: null,\n },\n ],\n currentFolderId: null,\n isInputMode: true,\n};\nconst defaultOptions = {\n viewType: 'grid',\n showTitles: true,\n showFilter: true,\n utmSource: 'Companion',\n};\n/**\n * SearchProviderView, used for Unsplash and future image search providers.\n * Extends generic View, shared with regular providers like Google Drive and Instagram.\n */\nexport default class SearchProviderView {\n static VERSION = packageJson.version;\n plugin;\n provider;\n opts;\n isHandlingScroll = false;\n lastCheckbox = null;\n constructor(plugin, opts) {\n this.plugin = plugin;\n this.provider = opts.provider;\n this.opts = { ...defaultOptions, ...opts };\n this.setSearchString = this.setSearchString.bind(this);\n this.search = this.search.bind(this);\n this.resetPluginState = this.resetPluginState.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n this.donePicking = this.donePicking.bind(this);\n this.cancelSelection = this.cancelSelection.bind(this);\n this.toggleCheckbox = this.toggleCheckbox.bind(this);\n this.render = this.render.bind(this);\n // Set default state for the plugin\n this.resetPluginState();\n // @ts-expect-error this should be typed in @uppy/dashboard.\n this.plugin.uppy.on('dashboard:close-panel', this.resetPluginState);\n this.plugin.uppy.registerRequestClient(this.provider.provider, this.provider);\n }\n tearDown() {\n // Nothing.\n }\n setLoading(loading) {\n this.plugin.setPluginState({ loading });\n }\n resetPluginState() {\n this.plugin.setPluginState(defaultState);\n }\n cancelSelection() {\n const { partialTree } = this.plugin.getPluginState();\n const newPartialTree = partialTree.map((item) => item.type === 'root' ? item : { ...item, status: 'unchecked' });\n this.plugin.setPluginState({ partialTree: newPartialTree });\n }\n async search() {\n const { searchString } = this.plugin.getPluginState();\n if (searchString === '')\n return;\n this.setLoading(true);\n try {\n const response = await this.provider.search(searchString);\n const newPartialTree = [\n {\n type: 'root',\n id: null,\n cached: false,\n nextPagePath: response.nextPageQuery,\n },\n ...response.items.map((item) => ({\n type: 'file',\n id: item.requestPath,\n status: 'unchecked',\n parentId: null,\n data: item,\n })),\n ];\n this.plugin.setPluginState({\n partialTree: newPartialTree,\n isInputMode: false,\n });\n }\n catch (error) {\n handleError(this.plugin.uppy)(error);\n }\n this.setLoading(false);\n }\n async handleScroll(event) {\n const { partialTree, searchString } = this.plugin.getPluginState();\n const root = partialTree.find((i) => i.type === 'root');\n if (shouldHandleScroll(event) &&\n !this.isHandlingScroll &&\n root.nextPagePath) {\n this.isHandlingScroll = true;\n try {\n const response = await this.provider.search(searchString, root.nextPagePath);\n const newRoot = {\n ...root,\n nextPagePath: response.nextPageQuery,\n };\n const oldItems = partialTree.filter((i) => i.type !== 'root');\n const newPartialTree = [\n newRoot,\n ...oldItems,\n ...response.items.map((item) => ({\n type: 'file',\n id: item.requestPath,\n status: 'unchecked',\n parentId: null,\n data: item,\n })),\n ];\n this.plugin.setPluginState({ partialTree: newPartialTree });\n }\n catch (error) {\n handleError(this.plugin.uppy)(error);\n }\n this.isHandlingScroll = false;\n }\n }\n async donePicking() {\n const { partialTree } = this.plugin.getPluginState();\n // 1. Add files\n const companionFiles = getCheckedFilesWithPaths(partialTree);\n addFiles(companionFiles, this.plugin, this.provider);\n // 2. Reset state\n this.resetPluginState();\n }\n toggleCheckbox(ourItem, isShiftKeyPressed) {\n const { partialTree } = this.plugin.getPluginState();\n const clickedRange = getClickedRange(ourItem.id, this.getDisplayedPartialTree(), isShiftKeyPressed, this.lastCheckbox);\n const newPartialTree = PartialTreeUtils.afterToggleCheckbox(partialTree, clickedRange);\n this.plugin.setPluginState({ partialTree: newPartialTree });\n this.lastCheckbox = ourItem.id;\n }\n validateSingleFile = (file) => {\n const companionFile = remoteFileObjToLocal(file);\n const result = this.plugin.uppy.validateSingleFile(companionFile);\n return result;\n };\n getDisplayedPartialTree = () => {\n const { partialTree } = this.plugin.getPluginState();\n return partialTree.filter((item) => item.type !== 'root');\n };\n setSearchString = (searchString) => {\n this.plugin.setPluginState({ searchString });\n if (searchString === '') {\n this.plugin.setPluginState({ partialTree: [] });\n }\n };\n validateAggregateRestrictions = (partialTree) => {\n const checkedFiles = partialTree.filter((item) => item.type === 'file' && item.status === 'checked');\n const uppyFiles = checkedFiles.map((file) => file.data);\n return this.plugin.uppy.validateAggregateRestrictions(uppyFiles);\n };\n render(state, viewOptions = {}) {\n const { isInputMode, searchString, loading, partialTree } = this.plugin.getPluginState();\n const { i18n } = this.plugin.uppy;\n const opts = { ...this.opts, ...viewOptions };\n if (isInputMode) {\n return (_jsx(SearchInput, { searchString: searchString, setSearchString: this.setSearchString, submitSearchString: this.search, inputLabel: i18n('enterTextToSearch'), buttonLabel: i18n('searchImages'), wrapperClassName: \"uppy-SearchProvider\", inputClassName: \"uppy-c-textInput uppy-SearchProvider-input\", showButton: true, buttonCSSClassName: \"uppy-SearchProvider-searchButton\" }));\n }\n return (_jsxs(\"div\", { className: classNames('uppy-ProviderBrowser', `uppy-ProviderBrowser-viewType--${opts.viewType}`), children: [opts.showFilter && (_jsx(SearchInput, { searchString: searchString, setSearchString: this.setSearchString, submitSearchString: this.search, inputLabel: i18n('search'), clearSearchLabel: i18n('resetSearch'), wrapperClassName: \"uppy-ProviderBrowser-searchFilter\", inputClassName: \"uppy-ProviderBrowser-searchFilterInput\" })), _jsx(Browser, { toggleCheckbox: this.toggleCheckbox, displayedPartialTree: this.getDisplayedPartialTree(), handleScroll: this.handleScroll, openFolder: async () => { }, noResultsLabel: i18n('noSearchResults'), viewType: opts.viewType, showTitles: opts.showTitles, isLoading: loading, i18n: i18n, virtualList: false, utmSource: this.opts.utmSource }), _jsx(FooterActions, { partialTree: partialTree, donePicking: this.donePicking, cancelSelection: this.cancelSelection, i18n: i18n, validateAggregateRestrictions: this.validateAggregateRestrictions })] }));\n }\n}\n","export { default } from './SearchProviderView.js';\n","export { default as GooglePickerView } from './GooglePicker/GooglePickerView.js';\nexport { default as ProviderViews, defaultPickerIcon, } from './ProviderView/index.js';\nexport { default as SearchInput } from './SearchInput.js';\nexport { default as SearchProviderViews } from './SearchProviderView/index.js';\n","/**\n * Low-pass filter using Exponential Moving Averages (aka exponential smoothing)\n * Filters a sequence of values by updating the mixing the previous output value\n * with the new input using the exponential window function\n *\n * @param newValue the n-th value of the sequence\n * @param previousSmoothedValue the exponential average of the first n-1 values\n * @param halfLife value of `dt` to move the smoothed value halfway between `previousFilteredValue` and `newValue`\n * @param dt time elapsed between adding the (n-1)th and the n-th values\n * @returns the exponential average of the first n values\n */\nexport default function emaFilter(newValue, previousSmoothedValue, halfLife, dt) {\n if (halfLife === 0 || newValue === previousSmoothedValue)\n return newValue;\n if (dt === 0)\n return previousSmoothedValue;\n return newValue + (previousSmoothedValue - newValue) * 2 ** (-dt / halfLife);\n}\n","export default {\n strings: {\n // Shown in the status bar while files are being uploaded.\n uploading: 'Uploading',\n // Shown in the status bar once all files have been uploaded.\n complete: 'Complete',\n // Shown in the status bar if an upload failed.\n uploadFailed: 'Upload failed',\n // Shown in the status bar while the upload is paused.\n paused: 'Paused',\n // Used as the label for the button that retries an upload.\n retry: 'Retry',\n // Used as the label for the button that cancels an upload.\n cancel: 'Cancel',\n // Used as the label for the button that pauses an upload.\n pause: 'Pause',\n // Used as the label for the button that resumes an upload.\n resume: 'Resume',\n // Used as the label for the button that resets the upload state after an upload\n done: 'Done',\n // When `showProgressDetails` is set, shows the number of files that have been fully uploaded so far.\n filesUploadedOfTotal: {\n 0: '%{complete} of %{smart_count} file uploaded',\n 1: '%{complete} of %{smart_count} files uploaded',\n },\n // When `showProgressDetails` is set, shows the amount of bytes that have been uploaded so far.\n dataUploadedOfTotal: '%{complete} of %{total}',\n dataUploadedOfUnknown: '%{complete} of unknown',\n // When `showProgressDetails` is set, shows an estimation of how long the upload will take to complete.\n xTimeLeft: '%{time} left',\n // Used as the label for the button that starts an upload.\n uploadXFiles: {\n 0: 'Upload %{smart_count} file',\n 1: 'Upload %{smart_count} files',\n },\n // Used as the label for the button that starts an upload, if another upload has been started in the past\n // and new files were added later.\n uploadXNewFiles: {\n 0: 'Upload +%{smart_count} file',\n 1: 'Upload +%{smart_count} files',\n },\n upload: 'Upload',\n retryUpload: 'Retry upload',\n xMoreFilesAdded: {\n 0: '%{smart_count} more file added',\n 1: '%{smart_count} more files added',\n },\n showErrorDetails: 'Show error details',\n },\n};\n","export default {\n STATE_ERROR: 'error',\n STATE_WAITING: 'waiting',\n STATE_PREPROCESSING: 'preprocessing',\n STATE_UPLOADING: 'uploading',\n STATE_POSTPROCESSING: 'postprocessing',\n STATE_COMPLETE: 'complete',\n};\n","export default function secondsToTime(rawSeconds) {\n const hours = Math.floor(rawSeconds / 3600) % 24;\n const minutes = Math.floor(rawSeconds / 60) % 60;\n const seconds = Math.floor(rawSeconds % 60);\n return { hours, minutes, seconds };\n}\n","import secondsToTime from './secondsToTime.js';\nexport default function prettyETA(seconds) {\n const time = secondsToTime(seconds);\n // Only display hours and minutes if they are greater than 0 but always\n // display minutes if hours is being displayed\n // Display a leading zero if the there is a preceding unit: 1m 05s, but 5s\n const hoursStr = time.hours === 0 ? '' : `${time.hours}h`;\n const minutesStr = time.minutes === 0\n ? ''\n : `${time.hours === 0\n ? time.minutes\n : ` ${time.minutes.toString(10).padStart(2, '0')}`}m`;\n const secondsStr = time.hours !== 0\n ? ''\n : `${time.minutes === 0\n ? time.seconds\n : ` ${time.seconds.toString(10).padStart(2, '0')}`}s`;\n return `${hoursStr}${minutesStr}${secondsStr}`;\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport prettierBytes from '@transloadit/prettier-bytes';\nimport prettyETA from '@uppy/utils/lib/prettyETA';\nimport classNames from 'classnames';\nimport { h } from 'preact';\nimport statusBarStates from './StatusBarStates.js';\nconst DOT = `\\u00B7`;\nconst renderDot = () => ` ${DOT} `;\nfunction UploadBtn(props) {\n const { newFiles, isUploadStarted, recoveredState, i18n, uploadState, isSomeGhost, startUpload, } = props;\n const uploadBtnClassNames = classNames('uppy-u-reset', 'uppy-c-btn', 'uppy-StatusBar-actionBtn', 'uppy-StatusBar-actionBtn--upload', {\n 'uppy-c-btn-primary': uploadState === statusBarStates.STATE_WAITING,\n }, { 'uppy-StatusBar-actionBtn--disabled': isSomeGhost });\n const uploadBtnText = newFiles && isUploadStarted && !recoveredState\n ? i18n('uploadXNewFiles', { smart_count: newFiles })\n : i18n('uploadXFiles', { smart_count: newFiles });\n return (_jsx(\"button\", { type: \"button\", className: uploadBtnClassNames, \"aria-label\": i18n('uploadXFiles', { smart_count: newFiles }), onClick: startUpload, disabled: isSomeGhost, \"data-uppy-super-focusable\": true, children: uploadBtnText }));\n}\nfunction RetryBtn(props) {\n const { i18n, uppy } = props;\n return (_jsxs(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--retry\", \"aria-label\": i18n('retryUpload'), onClick: () => uppy.retryAll().catch(() => {\n /* Error reported and handled via an event */\n }), \"data-uppy-super-focusable\": true, \"data-cy\": \"retry\", children: [_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: \"8\", height: \"10\", viewBox: \"0 0 8 10\", children: _jsx(\"path\", { d: \"M4 2.408a2.75 2.75 0 1 0 2.75 2.75.626.626 0 0 1 1.25.018v.023a4 4 0 1 1-4-4.041V.25a.25.25 0 0 1 .389-.208l2.299 1.533a.25.25 0 0 1 0 .416l-2.3 1.533A.25.25 0 0 1 4 3.316v-.908z\" }) }), i18n('retry')] }));\n}\nfunction CancelBtn(props) {\n const { i18n, uppy } = props;\n return (_jsx(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-StatusBar-actionCircleBtn\", title: i18n('cancel'), \"aria-label\": i18n('cancel'), onClick: () => uppy.cancelAll(), \"data-cy\": \"cancel\", \"data-uppy-super-focusable\": true, children: _jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", children: _jsxs(\"g\", { fill: \"none\", fillRule: \"evenodd\", children: [_jsx(\"circle\", { fill: \"#888\", cx: \"8\", cy: \"8\", r: \"8\" }), _jsx(\"path\", { fill: \"#FFF\", d: \"M9.283 8l2.567 2.567-1.283 1.283L8 9.283 5.433 11.85 4.15 10.567 6.717 8 4.15 5.433 5.433 4.15 8 6.717l2.567-2.567 1.283 1.283z\" })] }) }) }));\n}\nfunction PauseResumeButton(props) {\n const { isAllPaused, i18n, isAllComplete, resumableUploads, uppy } = props;\n const title = isAllPaused ? i18n('resume') : i18n('pause');\n function togglePauseResume() {\n if (isAllComplete)\n return;\n if (!resumableUploads) {\n uppy.cancelAll();\n return;\n }\n if (isAllPaused) {\n uppy.resumeAll();\n return;\n }\n uppy.pauseAll();\n }\n return (_jsx(\"button\", { title: title, \"aria-label\": title, className: \"uppy-u-reset uppy-StatusBar-actionCircleBtn\", type: \"button\", onClick: togglePauseResume, \"data-cy\": \"togglePauseResume\", \"data-uppy-super-focusable\": true, children: _jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", children: _jsxs(\"g\", { fill: \"none\", fillRule: \"evenodd\", children: [_jsx(\"circle\", { fill: \"#888\", cx: \"8\", cy: \"8\", r: \"8\" }), _jsx(\"path\", { fill: \"#FFF\", d: isAllPaused\n ? 'M6 4.25L11.5 8 6 11.75z'\n : 'M5 4.5h2v7H5v-7zm4 0h2v7H9v-7z' })] }) }) }));\n}\nfunction DoneBtn(props) {\n const { i18n, doneButtonHandler } = props;\n return (_jsx(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--done\", onClick: doneButtonHandler, \"data-uppy-super-focusable\": true, children: i18n('done') }));\n}\nfunction LoadingSpinner() {\n return (_jsx(\"svg\", { className: \"uppy-StatusBar-spinner\", \"aria-hidden\": \"true\", focusable: \"false\", width: \"14\", height: \"14\", children: _jsx(\"path\", { d: \"M13.983 6.547c-.12-2.509-1.64-4.893-3.939-5.936-2.48-1.127-5.488-.656-7.556 1.094C.524 3.367-.398 6.048.162 8.562c.556 2.495 2.46 4.52 4.94 5.183 2.932.784 5.61-.602 7.256-3.015-1.493 1.993-3.745 3.309-6.298 2.868-2.514-.434-4.578-2.349-5.153-4.84a6.226 6.226 0 0 1 2.98-6.778C6.34.586 9.74 1.1 11.373 3.493c.407.596.693 1.282.842 1.988.127.598.073 1.197.161 1.794.078.525.543 1.257 1.15.864.525-.341.49-1.05.456-1.592-.007-.15.02.3 0 0\", fillRule: \"evenodd\" }) }));\n}\nfunction ProgressBarProcessing(props) {\n const { progress } = props;\n const { value, mode, message } = progress;\n const dot = `\\u00B7`;\n return (_jsxs(\"div\", { className: \"uppy-StatusBar-content\", children: [_jsx(LoadingSpinner, {}), mode === 'determinate' ? `${Math.round(value * 100)}% ${dot} ` : '', message] }));\n}\nfunction ProgressDetails(props) {\n const { numUploads, complete, totalUploadedSize, totalSize, totalETA, i18n } = props;\n const ifShowFilesUploadedOfTotal = numUploads > 1;\n const totalUploadedSizeStr = prettierBytes(totalUploadedSize);\n return (_jsxs(\"div\", { className: \"uppy-StatusBar-statusSecondary\", children: [ifShowFilesUploadedOfTotal &&\n i18n('filesUploadedOfTotal', {\n complete,\n smart_count: numUploads,\n }), _jsxs(\"span\", { className: \"uppy-StatusBar-additionalInfo\", children: [ifShowFilesUploadedOfTotal && renderDot(), totalSize != null\n ? i18n('dataUploadedOfTotal', {\n complete: totalUploadedSizeStr,\n total: prettierBytes(totalSize),\n })\n : i18n('dataUploadedOfUnknown', { complete: totalUploadedSizeStr }), renderDot(), totalETA != null &&\n i18n('xTimeLeft', {\n time: prettyETA(totalETA),\n })] })] }));\n}\nfunction FileUploadCount(props) {\n const { i18n, complete, numUploads } = props;\n return (_jsx(\"div\", { className: \"uppy-StatusBar-statusSecondary\", children: i18n('filesUploadedOfTotal', { complete, smart_count: numUploads }) }));\n}\nfunction UploadNewlyAddedFiles(props) {\n const { i18n, newFiles, startUpload } = props;\n const uploadBtnClassNames = classNames('uppy-u-reset', 'uppy-c-btn', 'uppy-StatusBar-actionBtn', 'uppy-StatusBar-actionBtn--uploadNewlyAdded');\n return (_jsxs(\"div\", { className: \"uppy-StatusBar-statusSecondary\", children: [_jsx(\"div\", { className: \"uppy-StatusBar-statusSecondaryHint\", children: i18n('xMoreFilesAdded', { smart_count: newFiles }) }), _jsx(\"button\", { type: \"button\", className: uploadBtnClassNames, \"aria-label\": i18n('uploadXFiles', { smart_count: newFiles }), onClick: startUpload, children: i18n('upload') })] }));\n}\nfunction ProgressBarUploading(props) {\n const { i18n, supportsUploadProgress, totalProgress, showProgressDetails, isUploadStarted, isAllComplete, isAllPaused, newFiles, numUploads, complete, totalUploadedSize, totalSize, totalETA, startUpload, } = props;\n const showUploadNewlyAddedFiles = newFiles && isUploadStarted;\n if (!isUploadStarted || isAllComplete) {\n return null;\n }\n const title = isAllPaused ? i18n('paused') : i18n('uploading');\n function renderProgressDetails() {\n if (!isAllPaused && !showUploadNewlyAddedFiles && showProgressDetails) {\n if (supportsUploadProgress) {\n return (_jsx(ProgressDetails, { numUploads: numUploads, complete: complete, totalUploadedSize: totalUploadedSize, totalSize: totalSize, totalETA: totalETA, i18n: i18n }));\n }\n return (_jsx(FileUploadCount, { i18n: i18n, complete: complete, numUploads: numUploads }));\n }\n return null;\n }\n return (_jsxs(\"div\", { className: \"uppy-StatusBar-content\", title: title, children: [!isAllPaused ? _jsx(LoadingSpinner, {}) : null, _jsxs(\"div\", { className: \"uppy-StatusBar-status\", children: [_jsx(\"div\", { className: \"uppy-StatusBar-statusPrimary\", children: supportsUploadProgress && totalProgress !== 0\n ? `${title}: ${totalProgress}%`\n : title }), renderProgressDetails(), showUploadNewlyAddedFiles ? (_jsx(UploadNewlyAddedFiles, { i18n: i18n, newFiles: newFiles, startUpload: startUpload })) : null] })] }));\n}\nfunction ProgressBarComplete(props) {\n const { i18n } = props;\n return (_jsx(\"div\", { className: \"uppy-StatusBar-content\", \n // biome-ignore lint/a11y/useSemanticElements: ...\n role: \"status\", title: i18n('complete'), children: _jsx(\"div\", { className: \"uppy-StatusBar-status\", children: _jsxs(\"div\", { className: \"uppy-StatusBar-statusPrimary\", children: [_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-StatusBar-statusIndicator uppy-c-icon\", width: \"15\", height: \"11\", viewBox: \"0 0 15 11\", children: _jsx(\"path\", { d: \"M.414 5.843L1.627 4.63l3.472 3.472L13.202 0l1.212 1.213L5.1 10.528z\" }) }), i18n('complete')] }) }) }));\n}\nfunction ProgressBarError(props) {\n const { error, i18n, complete, numUploads } = props;\n function displayErrorAlert() {\n const errorMessage = `${i18n('uploadFailed')} \\n\\n ${error}`;\n alert(errorMessage); // TODO: move to custom alert implementation\n }\n return (_jsxs(\"div\", { className: \"uppy-StatusBar-content\", title: i18n('uploadFailed'), children: [_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-StatusBar-statusIndicator uppy-c-icon\", width: \"11\", height: \"11\", viewBox: \"0 0 11 11\", children: _jsx(\"path\", { d: \"M4.278 5.5L0 1.222 1.222 0 5.5 4.278 9.778 0 11 1.222 6.722 5.5 11 9.778 9.778 11 5.5 6.722 1.222 11 0 9.778z\" }) }), _jsxs(\"div\", { className: \"uppy-StatusBar-status\", children: [_jsxs(\"div\", { className: \"uppy-StatusBar-statusPrimary\", children: [i18n('uploadFailed'), _jsx(\"button\", { className: \"uppy-u-reset uppy-StatusBar-details\", \"aria-label\": i18n('showErrorDetails'), \"data-microtip-position\": \"top-right\", \"data-microtip-size\": \"medium\", onClick: displayErrorAlert, type: \"button\", children: \"?\" })] }), _jsx(FileUploadCount, { i18n: i18n, complete: complete, numUploads: numUploads })] })] }));\n}\nexport { UploadBtn, RetryBtn, CancelBtn, PauseResumeButton, DoneBtn, LoadingSpinner, ProgressDetails, ProgressBarProcessing, ProgressBarError, ProgressBarUploading, ProgressBarComplete, };\n","export default function calculateProcessingProgress(files) {\n const values = [];\n let mode = 'indeterminate';\n let message;\n for (const { progress } of Object.values(files)) {\n const { preprocess, postprocess } = progress;\n // In the future we should probably do this differently. For now we'll take the\n // mode and message from the first file…\n if (message == null && (preprocess || postprocess)) {\n ;\n ({ mode, message } = preprocess || postprocess);\n }\n if (preprocess?.mode === 'determinate')\n values.push(preprocess.value);\n if (postprocess?.mode === 'determinate')\n values.push(postprocess.value);\n }\n const value = values.reduce((total, progressValue) => {\n return total + progressValue / values.length;\n }, 0);\n return {\n mode,\n message,\n value,\n };\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport classNames from 'classnames';\nimport { h } from 'preact';\nimport { CancelBtn, DoneBtn, PauseResumeButton, ProgressBarComplete, ProgressBarError, ProgressBarProcessing, ProgressBarUploading, RetryBtn, UploadBtn, } from './Components.js';\nimport calculateProcessingProgress from './calculateProcessingProgress.js';\nimport statusBarStates from './StatusBarStates.js';\nconst { STATE_ERROR, STATE_WAITING, STATE_PREPROCESSING, STATE_UPLOADING, STATE_POSTPROCESSING, STATE_COMPLETE, } = statusBarStates;\nexport default function StatusBarUI({ newFiles, allowNewUpload, isUploadInProgress, isAllPaused, resumableUploads, error, hideUploadButton = undefined, hidePauseResumeButton = false, hideCancelButton = false, hideRetryButton = false, recoveredState, uploadState, totalProgress, files, supportsUploadProgress, hideAfterFinish = false, isSomeGhost, doneButtonHandler = undefined, isUploadStarted, i18n, startUpload, uppy, isAllComplete, showProgressDetails = undefined, numUploads, complete, totalSize, totalETA, totalUploadedSize, }) {\n function getProgressValue() {\n switch (uploadState) {\n case STATE_POSTPROCESSING:\n case STATE_PREPROCESSING: {\n const progress = calculateProcessingProgress(files);\n if (progress.mode === 'determinate') {\n return progress.value * 100;\n }\n return totalProgress;\n }\n case STATE_ERROR: {\n return null;\n }\n case STATE_UPLOADING: {\n if (!supportsUploadProgress) {\n return null;\n }\n return totalProgress;\n }\n default:\n return totalProgress;\n }\n }\n function getIsIndeterminate() {\n switch (uploadState) {\n case STATE_POSTPROCESSING:\n case STATE_PREPROCESSING: {\n const { mode } = calculateProcessingProgress(files);\n return mode === 'indeterminate';\n }\n case STATE_UPLOADING: {\n if (!supportsUploadProgress) {\n return true;\n }\n return false;\n }\n default:\n return false;\n }\n }\n const progressValue = getProgressValue();\n const width = progressValue ?? 100;\n const showUploadBtn = !error &&\n newFiles &&\n ((!isUploadInProgress && !isAllPaused) || recoveredState) &&\n allowNewUpload &&\n !hideUploadButton;\n const showCancelBtn = !hideCancelButton &&\n uploadState !== STATE_WAITING &&\n uploadState !== STATE_COMPLETE;\n const showPauseResumeBtn = resumableUploads &&\n !hidePauseResumeButton &&\n uploadState === STATE_UPLOADING;\n const showRetryBtn = error && !isAllComplete && !hideRetryButton;\n const showDoneBtn = doneButtonHandler && uploadState === STATE_COMPLETE;\n const progressClassNames = classNames('uppy-StatusBar-progress', {\n 'is-indeterminate': getIsIndeterminate(),\n });\n const statusBarClassNames = classNames('uppy-StatusBar', `is-${uploadState}`, { 'has-ghosts': isSomeGhost });\n const progressBarStateEl = (() => {\n switch (uploadState) {\n case STATE_PREPROCESSING:\n case STATE_POSTPROCESSING:\n return (_jsx(ProgressBarProcessing, { progress: calculateProcessingProgress(files) }));\n case STATE_COMPLETE:\n return _jsx(ProgressBarComplete, { i18n: i18n });\n case STATE_ERROR:\n return (_jsx(ProgressBarError, { error: error, i18n: i18n, numUploads: numUploads, complete: complete }));\n case STATE_UPLOADING:\n return (_jsx(ProgressBarUploading, { i18n: i18n, supportsUploadProgress: supportsUploadProgress, totalProgress: totalProgress, showProgressDetails: showProgressDetails, isUploadStarted: isUploadStarted, isAllComplete: isAllComplete, isAllPaused: isAllPaused, newFiles: newFiles, numUploads: numUploads, complete: complete, totalUploadedSize: totalUploadedSize, totalSize: totalSize, totalETA: totalETA, startUpload: startUpload }));\n default:\n return null;\n }\n })();\n const atLeastOneAction = showUploadBtn ||\n showRetryBtn ||\n showPauseResumeBtn ||\n showCancelBtn ||\n showDoneBtn;\n const thereIsNothingInside = !atLeastOneAction && !progressBarStateEl;\n const isHidden = thereIsNothingInside || (uploadState === STATE_COMPLETE && hideAfterFinish);\n if (isHidden) {\n return null;\n }\n return (_jsxs(\"div\", { className: statusBarClassNames, children: [_jsx(\"div\", { className: progressClassNames, style: { width: `${width}%` }, role: \"progressbar\", \"aria-label\": `${width}%`, \"aria-valuetext\": `${width}%`, \"aria-valuemin\": 0, \"aria-valuemax\": 100, \"aria-valuenow\": progressValue }), progressBarStateEl, _jsxs(\"div\", { className: \"uppy-StatusBar-actions\", children: [showUploadBtn ? (_jsx(UploadBtn, { newFiles: newFiles, isUploadStarted: isUploadStarted, recoveredState: recoveredState, i18n: i18n, isSomeGhost: isSomeGhost, startUpload: startUpload, uploadState: uploadState })) : null, showRetryBtn ? _jsx(RetryBtn, { i18n: i18n, uppy: uppy }) : null, showPauseResumeBtn ? (_jsx(PauseResumeButton, { isAllPaused: isAllPaused, i18n: i18n, isAllComplete: isAllComplete, resumableUploads: resumableUploads, uppy: uppy })) : null, showCancelBtn ? _jsx(CancelBtn, { i18n: i18n, uppy: uppy }) : null, showDoneBtn ? (_jsx(DoneBtn, { i18n: i18n, doneButtonHandler: doneButtonHandler })) : null] })] }));\n}\n","import { UIPlugin } from '@uppy/core';\nimport emaFilter from '@uppy/utils/lib/emaFilter';\nimport getTextDirection from '@uppy/utils/lib/getTextDirection';\nimport { h } from 'preact';\nimport packageJson from '../package.json' with { type: 'json' };\nimport locale from './locale.js';\nimport statusBarStates from './StatusBarStates.js';\nimport StatusBarUI, {} from './StatusBarUI.js';\nconst speedFilterHalfLife = 2000;\nconst ETAFilterHalfLife = 2000;\nfunction getUploadingState(error, isAllComplete, recoveredState, files) {\n if (error) {\n return statusBarStates.STATE_ERROR;\n }\n if (isAllComplete) {\n return statusBarStates.STATE_COMPLETE;\n }\n if (recoveredState) {\n return statusBarStates.STATE_WAITING;\n }\n let state = statusBarStates.STATE_WAITING;\n const fileIDs = Object.keys(files);\n for (let i = 0; i < fileIDs.length; i++) {\n const { progress } = files[fileIDs[i]];\n // If ANY files are being uploaded right now, show the uploading state.\n if (progress.uploadStarted && !progress.uploadComplete) {\n return statusBarStates.STATE_UPLOADING;\n }\n // If files are being preprocessed AND postprocessed at this time, we show the\n // preprocess state. If any files are being uploaded we show uploading.\n if (progress.preprocess) {\n state = statusBarStates.STATE_PREPROCESSING;\n }\n // If NO files are being preprocessed or uploaded right now, but some files are\n // being postprocessed, show the postprocess state.\n if (progress.postprocess && state !== statusBarStates.STATE_PREPROCESSING) {\n state = statusBarStates.STATE_POSTPROCESSING;\n }\n }\n return state;\n}\nconst defaultOptions = {\n hideUploadButton: false,\n hideRetryButton: false,\n hidePauseResumeButton: false,\n hideCancelButton: false,\n showProgressDetails: false,\n hideAfterFinish: true,\n doneButtonHandler: null,\n};\n/**\n * StatusBar: renders a status bar with upload/pause/resume/cancel/retry buttons,\n * progress percentage and time remaining.\n */\nexport default class StatusBar extends UIPlugin {\n static VERSION = packageJson.version;\n #lastUpdateTime;\n #previousUploadedBytes;\n #previousSpeed;\n #previousETA;\n constructor(uppy, opts) {\n super(uppy, { ...defaultOptions, ...opts });\n this.id = this.opts.id || 'StatusBar';\n this.title = 'StatusBar';\n this.type = 'progressindicator';\n this.defaultLocale = locale;\n this.i18nInit();\n this.render = this.render.bind(this);\n this.install = this.install.bind(this);\n }\n #computeSmoothETA(totalBytes) {\n if (totalBytes.total == null || totalBytes.total === 0) {\n return null;\n }\n const remaining = totalBytes.total - totalBytes.uploaded;\n if (remaining <= 0) {\n return null;\n }\n // When state is restored, lastUpdateTime is still nullish at this point.\n this.#lastUpdateTime ??= performance.now();\n const dt = performance.now() - this.#lastUpdateTime;\n if (dt === 0) {\n return Math.round((this.#previousETA ?? 0) / 100) / 10;\n }\n const uploadedBytesSinceLastTick = totalBytes.uploaded - this.#previousUploadedBytes;\n this.#previousUploadedBytes = totalBytes.uploaded;\n // uploadedBytesSinceLastTick can be negative in some cases (packet loss?)\n // in which case, we wait for next tick to update ETA.\n if (uploadedBytesSinceLastTick <= 0) {\n return Math.round((this.#previousETA ?? 0) / 100) / 10;\n }\n const currentSpeed = uploadedBytesSinceLastTick / dt;\n const filteredSpeed = this.#previousSpeed == null\n ? currentSpeed\n : emaFilter(currentSpeed, this.#previousSpeed, speedFilterHalfLife, dt);\n this.#previousSpeed = filteredSpeed;\n const instantETA = remaining / filteredSpeed;\n const updatedPreviousETA = Math.max(this.#previousETA - dt, 0);\n const filteredETA = this.#previousETA == null\n ? instantETA\n : emaFilter(instantETA, updatedPreviousETA, ETAFilterHalfLife, dt);\n this.#previousETA = filteredETA;\n this.#lastUpdateTime = performance.now();\n return Math.round(filteredETA / 100) / 10;\n }\n startUpload = () => {\n return this.uppy.upload().catch((() => {\n // Error logged in Core\n }));\n };\n render(state) {\n const { capabilities, files, allowNewUpload, totalProgress, error, recoveredState, } = state;\n const { newFiles, startedFiles, completeFiles, isUploadStarted, isAllComplete, isAllPaused, isUploadInProgress, isSomeGhost, } = this.uppy.getObjectOfFilesPerState();\n // If some state was recovered, we want to show Upload button/counter\n // for all the files, because in this case it’s not an Upload button,\n // but “Confirm Restore Button”\n const newFilesOrRecovered = recoveredState ? Object.values(files) : newFiles;\n const resumableUploads = !!capabilities.resumableUploads;\n const supportsUploadProgress = capabilities.uploadProgress !== false;\n let totalSize = null;\n let totalUploadedSize = 0;\n // Only if all files have a known size, does it make sense to display a total size\n if (startedFiles.every((f) => f.progress.bytesTotal != null && f.progress.bytesTotal !== 0)) {\n totalSize = 0;\n startedFiles.forEach((file) => {\n totalSize += file.progress.bytesTotal || 0;\n totalUploadedSize += file.progress.bytesUploaded || 0;\n });\n }\n else {\n // however uploaded size we will always have\n startedFiles.forEach((file) => {\n totalUploadedSize += file.progress.bytesUploaded || 0;\n });\n }\n const totalETA = this.#computeSmoothETA({\n uploaded: totalUploadedSize,\n total: totalSize,\n });\n return StatusBarUI({\n error,\n uploadState: getUploadingState(error, isAllComplete, recoveredState, state.files || {}),\n allowNewUpload,\n totalProgress,\n totalSize,\n totalUploadedSize,\n isAllComplete: false,\n isAllPaused,\n isUploadStarted,\n isUploadInProgress,\n isSomeGhost,\n recoveredState,\n complete: completeFiles.length,\n newFiles: newFilesOrRecovered.length,\n numUploads: startedFiles.length,\n totalETA,\n files,\n i18n: this.i18n,\n uppy: this.uppy,\n startUpload: this.startUpload,\n doneButtonHandler: this.opts.doneButtonHandler,\n resumableUploads,\n supportsUploadProgress,\n showProgressDetails: this.opts.showProgressDetails,\n hideUploadButton: this.opts.hideUploadButton,\n hideRetryButton: this.opts.hideRetryButton,\n hidePauseResumeButton: this.opts.hidePauseResumeButton,\n hideCancelButton: this.opts.hideCancelButton,\n hideAfterFinish: this.opts.hideAfterFinish,\n });\n }\n onMount() {\n // Set the text direction if the page has not defined one.\n const element = this.el;\n const direction = getTextDirection(element);\n if (!direction) {\n element.dir = 'ltr';\n }\n }\n #onUploadStart = () => {\n const { recoveredState } = this.uppy.getState();\n this.#previousSpeed = null;\n this.#previousETA = null;\n if (recoveredState) {\n this.#previousUploadedBytes = Object.values(recoveredState.files).reduce((pv, { progress }) => pv + progress.bytesUploaded, 0);\n // We don't set `#lastUpdateTime` at this point because the upload won't\n // actually resume until the user asks for it.\n this.uppy.emit('restore-confirmed');\n return;\n }\n this.#lastUpdateTime = performance.now();\n this.#previousUploadedBytes = 0;\n };\n install() {\n const { target } = this.opts;\n if (target) {\n this.mount(target, this);\n }\n this.uppy.on('upload', this.#onUploadStart);\n // To cover the use case where the status bar is installed while the upload\n // has started, we set `lastUpdateTime` right away.\n this.#lastUpdateTime = performance.now();\n this.#previousUploadedBytes = this.uppy\n .getFiles()\n .reduce((pv, file) => pv + file.progress.bytesUploaded, 0);\n }\n uninstall() {\n this.unmount();\n this.uppy.off('upload', this.#onUploadStart);\n }\n}\n","export { default } from './StatusBar.js';\n","const DATA_URL_PATTERN = /^data:([^/]+\\/[^,;]+(?:[^,]*?))(;base64)?,([\\s\\S]*)$/;\nfunction dataURItoBlob(dataURI, opts, toFile) {\n // get the base64 data\n const dataURIData = DATA_URL_PATTERN.exec(dataURI);\n // user may provide mime type, if not get it from data URI\n const mimeType = opts.mimeType ?? dataURIData?.[1] ?? 'plain/text';\n let data; // We add `!` to tell TS we're OK with `data` being not defined when the dataURI is invalid.\n if (dataURIData?.[2] != null) {\n const binary = atob(decodeURIComponent(dataURIData[3]));\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n data = [bytes];\n }\n else if (dataURIData?.[3] != null) {\n data = [decodeURIComponent(dataURIData[3])];\n }\n // Convert to a File?\n if (toFile) {\n return new File(data, opts.name || '', { type: mimeType });\n }\n return new Blob(data, { type: mimeType });\n}\nexport default dataURItoBlob;\n","/**\n * Check if a URL string is an object URL from `URL.createObjectURL`.\n */\nexport default function isObjectURL(url) {\n return url.startsWith('blob:');\n}\n","export default function isPreviewSupported(fileType) {\n if (!fileType)\n return false;\n // list of images that browsers can preview\n return /^[^/]+\\/(jpe?g|gif|png|svg|svg\\+xml|bmp|webp|avif)$/.test(fileType);\n}\n","function e(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}var t=\"undefined\"!=typeof self?self:global;const s=\"undefined\"!=typeof navigator,i=s&&\"undefined\"==typeof HTMLImageElement,n=!(\"undefined\"==typeof global||\"undefined\"==typeof process||!process.versions||!process.versions.node),r=t.Buffer,a=!!r,h=e=>void 0!==e;function f(e){return void 0===e||(e instanceof Map?0===e.size:0===Object.values(e).filter(h).length)}function l(e){let t=new Error(e);throw delete t.stack,t}function o(e){let t=function(e){let t=0;return e.ifd0.enabled&&(t+=1024),e.exif.enabled&&(t+=2048),e.makerNote&&(t+=2048),e.userComment&&(t+=1024),e.gps.enabled&&(t+=512),e.interop.enabled&&(t+=100),e.ifd1.enabled&&(t+=1024),t+2048}(e);return e.jfif.enabled&&(t+=50),e.xmp.enabled&&(t+=2e4),e.iptc.enabled&&(t+=14e3),e.icc.enabled&&(t+=6e3),t}const u=e=>String.fromCharCode.apply(null,e),d=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf-8\"):void 0;class c{static from(e,t){return e instanceof this&&e.le===t?e:new c(e,void 0,void 0,t)}constructor(e,t=0,s,i){if(\"boolean\"==typeof i&&(this.le=i),Array.isArray(e)&&(e=new Uint8Array(e)),0===e)this.byteOffset=0,this.byteLength=0;else if(e instanceof ArrayBuffer){void 0===s&&(s=e.byteLength-t);let i=new DataView(e,t,s);this._swapDataView(i)}else if(e instanceof Uint8Array||e instanceof DataView||e instanceof c){void 0===s&&(s=e.byteLength-t),(t+=e.byteOffset)+s>e.byteOffset+e.byteLength&&l(\"Creating view outside of available memory in ArrayBuffer\");let i=new DataView(e.buffer,t,s);this._swapDataView(i)}else if(\"number\"==typeof e){let t=new DataView(new ArrayBuffer(e));this._swapDataView(t)}else l(\"Invalid input argument for BufferView: \"+e)}_swapArrayBuffer(e){this._swapDataView(new DataView(e))}_swapBuffer(e){this._swapDataView(new DataView(e.buffer,e.byteOffset,e.byteLength))}_swapDataView(e){this.dataView=e,this.buffer=e.buffer,this.byteOffset=e.byteOffset,this.byteLength=e.byteLength}_lengthToEnd(e){return this.byteLength-e}set(e,t,s=c){return e instanceof DataView||e instanceof c?e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Uint8Array||l(\"BufferView.set(): Invalid data argument.\"),this.toUint8().set(e,t),new s(this,t,e.byteLength)}subarray(e,t){return t=t||this._lengthToEnd(e),new c(this,e,t)}toUint8(){return new Uint8Array(this.buffer,this.byteOffset,this.byteLength)}getUint8Array(e,t){return new Uint8Array(this.buffer,this.byteOffset+e,t)}getString(e=0,t=this.byteLength){let s=this.getUint8Array(e,t);return i=s,d?d.decode(i):a?Buffer.from(i).toString(\"utf8\"):decodeURIComponent(escape(u(i)));var i}getLatin1String(e=0,t=this.byteLength){let s=this.getUint8Array(e,t);return u(s)}getUnicodeString(e=0,t=this.byteLength){const s=[];for(let i=0;i<t&&e+i<this.byteLength;i+=2)s.push(this.getUint16(e+i));return u(s)}getInt8(e){return this.dataView.getInt8(e)}getUint8(e){return this.dataView.getUint8(e)}getInt16(e,t=this.le){return this.dataView.getInt16(e,t)}getInt32(e,t=this.le){return this.dataView.getInt32(e,t)}getUint16(e,t=this.le){return this.dataView.getUint16(e,t)}getUint32(e,t=this.le){return this.dataView.getUint32(e,t)}getFloat32(e,t=this.le){return this.dataView.getFloat32(e,t)}getFloat64(e,t=this.le){return this.dataView.getFloat64(e,t)}getFloat(e,t=this.le){return this.dataView.getFloat32(e,t)}getDouble(e,t=this.le){return this.dataView.getFloat64(e,t)}getUintBytes(e,t,s){switch(t){case 1:return this.getUint8(e,s);case 2:return this.getUint16(e,s);case 4:return this.getUint32(e,s);case 8:return this.getUint64&&this.getUint64(e,s)}}getUint(e,t,s){switch(t){case 8:return this.getUint8(e,s);case 16:return this.getUint16(e,s);case 32:return this.getUint32(e,s);case 64:return this.getUint64&&this.getUint64(e,s)}}toString(e){return this.dataView.toString(e,this.constructor.name)}ensureChunk(){}}function p(e,t){l(`${e} '${t}' was not loaded, try using full build of exifr.`)}class g extends Map{constructor(e){super(),this.kind=e}get(e,t){return this.has(e)||p(this.kind,e),t&&(e in t||function(e,t){l(`Unknown ${e} '${t}'.`)}(this.kind,e),t[e].enabled||p(this.kind,e)),super.get(e)}keyList(){return Array.from(this.keys())}}var m=new g(\"file parser\"),y=new g(\"segment parser\"),b=new g(\"file reader\");let w=t.fetch;function k(e,t){return(i=e).startsWith(\"data:\")||i.length>1e4?v(e,t,\"base64\"):n&&e.includes(\"://\")?O(e,t,\"url\",S):n?v(e,t,\"fs\"):s?O(e,t,\"url\",S):void l(\"Invalid input argument\");var i}async function O(e,t,s,i){return b.has(s)?v(e,t,s):i?async function(e,t){let s=await t(e);return new c(s)}(e,i):void l(`Parser ${s} is not loaded`)}async function v(e,t,s){let i=new(b.get(s))(e,t);return await i.read(),i}const S=e=>w(e).then((e=>e.arrayBuffer())),A=e=>new Promise(((t,s)=>{let i=new FileReader;i.onloadend=()=>t(i.result||new ArrayBuffer),i.onerror=s,i.readAsArrayBuffer(e)}));class U extends Map{get tagKeys(){return this.allKeys||(this.allKeys=Array.from(this.keys())),this.allKeys}get tagValues(){return this.allValues||(this.allValues=Array.from(this.values())),this.allValues}}function x(e,t,s){let i=new U;for(let[e,t]of s)i.set(e,t);if(Array.isArray(t))for(let s of t)e.set(s,i);else e.set(t,i);return i}function C(e,t,s){let i,n=e.get(t);for(i of s)n.set(i[0],i[1])}const B=new Map,V=new Map,I=new Map,L=[\"chunked\",\"firstChunkSize\",\"firstChunkSizeNode\",\"firstChunkSizeBrowser\",\"chunkSize\",\"chunkLimit\"],T=[\"jfif\",\"xmp\",\"icc\",\"iptc\",\"ihdr\"],z=[\"tiff\",...T],P=[\"ifd0\",\"ifd1\",\"exif\",\"gps\",\"interop\"],F=[...z,...P],j=[\"makerNote\",\"userComment\"],E=[\"translateKeys\",\"translateValues\",\"reviveValues\",\"multiSegment\"],M=[...E,\"sanitize\",\"mergeOutput\",\"silentErrors\"];class _{get translate(){return this.translateKeys||this.translateValues||this.reviveValues}}class D extends _{get needed(){return this.enabled||this.deps.size>0}constructor(t,s,i,n){if(super(),e(this,\"enabled\",!1),e(this,\"skip\",new Set),e(this,\"pick\",new Set),e(this,\"deps\",new Set),e(this,\"translateKeys\",!1),e(this,\"translateValues\",!1),e(this,\"reviveValues\",!1),this.key=t,this.enabled=s,this.parse=this.enabled,this.applyInheritables(n),this.canBeFiltered=P.includes(t),this.canBeFiltered&&(this.dict=B.get(t)),void 0!==i)if(Array.isArray(i))this.parse=this.enabled=!0,this.canBeFiltered&&i.length>0&&this.translateTagSet(i,this.pick);else if(\"object\"==typeof i){if(this.enabled=!0,this.parse=!1!==i.parse,this.canBeFiltered){let{pick:e,skip:t}=i;e&&e.length>0&&this.translateTagSet(e,this.pick),t&&t.length>0&&this.translateTagSet(t,this.skip)}this.applyInheritables(i)}else!0===i||!1===i?this.parse=this.enabled=i:l(`Invalid options argument: ${i}`)}applyInheritables(e){let t,s;for(t of E)s=e[t],void 0!==s&&(this[t]=s)}translateTagSet(e,t){if(this.dict){let s,i,{tagKeys:n,tagValues:r}=this.dict;for(s of e)\"string\"==typeof s?(i=r.indexOf(s),-1===i&&(i=n.indexOf(Number(s))),-1!==i&&t.add(Number(n[i]))):t.add(s)}else for(let s of e)t.add(s)}finalizeFilters(){!this.enabled&&this.deps.size>0?(this.enabled=!0,X(this.pick,this.deps)):this.enabled&&this.pick.size>0&&X(this.pick,this.deps)}}var N={jfif:!1,tiff:!0,xmp:!1,icc:!1,iptc:!1,ifd0:!0,ifd1:!1,exif:!0,gps:!0,interop:!1,ihdr:void 0,makerNote:!1,userComment:!1,multiSegment:!1,skip:[],pick:[],translateKeys:!0,translateValues:!0,reviveValues:!0,sanitize:!0,mergeOutput:!0,silentErrors:!0,chunked:!0,firstChunkSize:void 0,firstChunkSizeNode:512,firstChunkSizeBrowser:65536,chunkSize:65536,chunkLimit:5},$=new Map;class R extends _{static useCached(e){let t=$.get(e);return void 0!==t||(t=new this(e),$.set(e,t)),t}constructor(e){super(),!0===e?this.setupFromTrue():void 0===e?this.setupFromUndefined():Array.isArray(e)?this.setupFromArray(e):\"object\"==typeof e?this.setupFromObject(e):l(`Invalid options argument ${e}`),void 0===this.firstChunkSize&&(this.firstChunkSize=s?this.firstChunkSizeBrowser:this.firstChunkSizeNode),this.mergeOutput&&(this.ifd1.enabled=!1),this.filterNestedSegmentTags(),this.traverseTiffDependencyTree(),this.checkLoadedPlugins()}setupFromUndefined(){let e;for(e of L)this[e]=N[e];for(e of M)this[e]=N[e];for(e of j)this[e]=N[e];for(e of F)this[e]=new D(e,N[e],void 0,this)}setupFromTrue(){let e;for(e of L)this[e]=N[e];for(e of M)this[e]=N[e];for(e of j)this[e]=!0;for(e of F)this[e]=new D(e,!0,void 0,this)}setupFromArray(e){let t;for(t of L)this[t]=N[t];for(t of M)this[t]=N[t];for(t of j)this[t]=N[t];for(t of F)this[t]=new D(t,!1,void 0,this);this.setupGlobalFilters(e,void 0,P)}setupFromObject(e){let t;for(t of(P.ifd0=P.ifd0||P.image,P.ifd1=P.ifd1||P.thumbnail,Object.assign(this,e),L))this[t]=W(e[t],N[t]);for(t of M)this[t]=W(e[t],N[t]);for(t of j)this[t]=W(e[t],N[t]);for(t of z)this[t]=new D(t,N[t],e[t],this);for(t of P)this[t]=new D(t,N[t],e[t],this.tiff);this.setupGlobalFilters(e.pick,e.skip,P,F),!0===e.tiff?this.batchEnableWithBool(P,!0):!1===e.tiff?this.batchEnableWithUserValue(P,e):Array.isArray(e.tiff)?this.setupGlobalFilters(e.tiff,void 0,P):\"object\"==typeof e.tiff&&this.setupGlobalFilters(e.tiff.pick,e.tiff.skip,P)}batchEnableWithBool(e,t){for(let s of e)this[s].enabled=t}batchEnableWithUserValue(e,t){for(let s of e){let e=t[s];this[s].enabled=!1!==e&&void 0!==e}}setupGlobalFilters(e,t,s,i=s){if(e&&e.length){for(let e of i)this[e].enabled=!1;let t=K(e,s);for(let[e,s]of t)X(this[e].pick,s),this[e].enabled=!0}else if(t&&t.length){let e=K(t,s);for(let[t,s]of e)X(this[t].skip,s)}}filterNestedSegmentTags(){let{ifd0:e,exif:t,xmp:s,iptc:i,icc:n}=this;this.makerNote?t.deps.add(37500):t.skip.add(37500),this.userComment?t.deps.add(37510):t.skip.add(37510),s.enabled||e.skip.add(700),i.enabled||e.skip.add(33723),n.enabled||e.skip.add(34675)}traverseTiffDependencyTree(){let{ifd0:e,exif:t,gps:s,interop:i}=this;i.needed&&(t.deps.add(40965),e.deps.add(40965)),t.needed&&e.deps.add(34665),s.needed&&e.deps.add(34853),this.tiff.enabled=P.some((e=>!0===this[e].enabled))||this.makerNote||this.userComment;for(let e of P)this[e].finalizeFilters()}get onlyTiff(){return!T.map((e=>this[e].enabled)).some((e=>!0===e))&&this.tiff.enabled}checkLoadedPlugins(){for(let e of z)this[e].enabled&&!y.has(e)&&p(\"segment parser\",e)}}function K(e,t){let s,i,n,r,a=[];for(n of t){for(r of(s=B.get(n),i=[],s))(e.includes(r[0])||e.includes(r[1]))&&i.push(r[0]);i.length&&a.push([n,i])}return a}function W(e,t){return void 0!==e?e:void 0!==t?t:void 0}function X(e,t){for(let s of t)e.add(s)}e(R,\"default\",N);class H{constructor(t){e(this,\"parsers\",{}),e(this,\"output\",{}),e(this,\"errors\",[]),e(this,\"pushToErrors\",(e=>this.errors.push(e))),this.options=R.useCached(t)}async read(e){this.file=await function(e,t){return\"string\"==typeof e?k(e,t):s&&!i&&e instanceof HTMLImageElement?k(e.src,t):e instanceof Uint8Array||e instanceof ArrayBuffer||e instanceof DataView?new c(e):s&&e instanceof Blob?O(e,t,\"blob\",A):void l(\"Invalid input argument\")}(e,this.options)}setup(){if(this.fileParser)return;let{file:e}=this,t=e.getUint16(0);for(let[s,i]of m)if(i.canHandle(e,t))return this.fileParser=new i(this.options,this.file,this.parsers),e[s]=!0;this.file.close&&this.file.close(),l(\"Unknown file format\")}async parse(){let{output:e,errors:t}=this;return this.setup(),this.options.silentErrors?(await this.executeParsers().catch(this.pushToErrors),t.push(...this.fileParser.errors)):await this.executeParsers(),this.file.close&&this.file.close(),this.options.silentErrors&&t.length>0&&(e.errors=t),f(s=e)?void 0:s;var s}async executeParsers(){let{output:e}=this;await this.fileParser.parse();let t=Object.values(this.parsers).map((async t=>{let s=await t.parse();t.assignToOutput(e,s)}));this.options.silentErrors&&(t=t.map((e=>e.catch(this.pushToErrors)))),await Promise.all(t)}async extractThumbnail(){this.setup();let{options:e,file:t}=this,s=y.get(\"tiff\",e);var i;if(t.tiff?i={start:0,type:\"tiff\"}:t.jpeg&&(i=await this.fileParser.getOrFindSegment(\"tiff\")),void 0===i)return;let n=await this.fileParser.ensureSegmentChunk(i),r=this.parsers.tiff=new s(n,e,t),a=await r.extractThumbnail();return t.close&&t.close(),a}}async function Y(e,t){let s=new H(t);return await s.read(e),s.parse()}var G=Object.freeze({__proto__:null,parse:Y,Exifr:H,fileParsers:m,segmentParsers:y,fileReaders:b,tagKeys:B,tagValues:V,tagRevivers:I,createDictionary:x,extendDictionary:C,fetchUrlAsArrayBuffer:S,readBlobAsArrayBuffer:A,chunkedProps:L,otherSegments:T,segments:z,tiffBlocks:P,segmentsAndBlocks:F,tiffExtractables:j,inheritables:E,allFormatters:M,Options:R});class J{static findPosition(e,t){let s=e.getUint16(t+2)+2,i=\"function\"==typeof this.headerLength?this.headerLength(e,t,s):this.headerLength,n=t+i,r=s-i;return{offset:t,length:s,headerLength:i,start:n,size:r,end:n+r}}static parse(e,t={}){return new this(e,new R({[this.type]:t}),e).parse()}normalizeInput(e){return e instanceof c?e:new c(e)}constructor(t,s={},i){e(this,\"errors\",[]),e(this,\"raw\",new Map),e(this,\"handleError\",(e=>{if(!this.options.silentErrors)throw e;this.errors.push(e.message)})),this.chunk=this.normalizeInput(t),this.file=i,this.type=this.constructor.type,this.globalOptions=this.options=s,this.localOptions=s[this.type],this.canTranslate=this.localOptions&&this.localOptions.translate}translate(){this.canTranslate&&(this.translated=this.translateBlock(this.raw,this.type))}get output(){return this.translated?this.translated:this.raw?Object.fromEntries(this.raw):void 0}translateBlock(e,t){let s=I.get(t),i=V.get(t),n=B.get(t),r=this.options[t],a=r.reviveValues&&!!s,h=r.translateValues&&!!i,f=r.translateKeys&&!!n,l={};for(let[t,r]of e)a&&s.has(t)?r=s.get(t)(r):h&&i.has(t)&&(r=this.translateValue(r,i.get(t))),f&&n.has(t)&&(t=n.get(t)||t),l[t]=r;return l}translateValue(e,t){return t[e]||t.DEFAULT||e}assignToOutput(e,t){this.assignObjectToOutput(e,this.constructor.type,t)}assignObjectToOutput(e,t,s){if(this.globalOptions.mergeOutput)return Object.assign(e,s);e[t]?Object.assign(e[t],s):e[t]=s}}e(J,\"headerLength\",4),e(J,\"type\",void 0),e(J,\"multiSegment\",!1),e(J,\"canHandle\",(()=>!1));function q(e){return 192===e||194===e||196===e||219===e||221===e||218===e||254===e}function Q(e){return e>=224&&e<=239}function Z(e,t,s){for(let[i,n]of y)if(n.canHandle(e,t,s))return i}class ee extends class{constructor(t,s,i){e(this,\"errors\",[]),e(this,\"ensureSegmentChunk\",(async e=>{let t=e.start,s=e.size||65536;if(this.file.chunked)if(this.file.available(t,s))e.chunk=this.file.subarray(t,s);else try{e.chunk=await this.file.readChunk(t,s)}catch(t){l(`Couldn't read segment: ${JSON.stringify(e)}. ${t.message}`)}else this.file.byteLength>t+s?e.chunk=this.file.subarray(t,s):void 0===e.size?e.chunk=this.file.subarray(t):l(\"Segment unreachable: \"+JSON.stringify(e));return e.chunk})),this.extendOptions&&this.extendOptions(t),this.options=t,this.file=s,this.parsers=i}injectSegment(e,t){this.options[e].enabled&&this.createParser(e,t)}createParser(e,t){let s=new(y.get(e))(t,this.options,this.file);return this.parsers[e]=s}createParsers(e){for(let t of e){let{type:e,chunk:s}=t,i=this.options[e];if(i&&i.enabled){let t=this.parsers[e];t&&t.append||t||this.createParser(e,s)}}}async readSegments(e){let t=e.map(this.ensureSegmentChunk);await Promise.all(t)}}{constructor(...t){super(...t),e(this,\"appSegments\",[]),e(this,\"jpegSegments\",[]),e(this,\"unknownSegments\",[])}static canHandle(e,t){return 65496===t}async parse(){await this.findAppSegments(),await this.readSegments(this.appSegments),this.mergeMultiSegments(),this.createParsers(this.mergedAppSegments||this.appSegments)}setupSegmentFinderArgs(e){!0===e?(this.findAll=!0,this.wanted=new Set(y.keyList())):(e=void 0===e?y.keyList().filter((e=>this.options[e].enabled)):e.filter((e=>this.options[e].enabled&&y.has(e))),this.findAll=!1,this.remaining=new Set(e),this.wanted=new Set(e)),this.unfinishedMultiSegment=!1}async findAppSegments(e=0,t){this.setupSegmentFinderArgs(t);let{file:s,findAll:i,wanted:n,remaining:r}=this;if(!i&&this.file.chunked&&(i=Array.from(n).some((e=>{let t=y.get(e),s=this.options[e];return t.multiSegment&&s.multiSegment})),i&&await this.file.readWhole()),e=this.findAppSegmentsInRange(e,s.byteLength),!this.options.onlyTiff&&s.chunked){let t=!1;for(;r.size>0&&!t&&(s.canReadNextChunk||this.unfinishedMultiSegment);){let{nextChunkOffset:i}=s,n=this.appSegments.some((e=>!this.file.available(e.offset||e.start,e.length||e.size)));if(t=e>i&&!n?!await s.readNextChunk(e):!await s.readNextChunk(i),void 0===(e=this.findAppSegmentsInRange(e,s.byteLength)))return}}}findAppSegmentsInRange(e,t){t-=2;let s,i,n,r,a,h,{file:f,findAll:l,wanted:o,remaining:u,options:d}=this;for(;e<t;e++)if(255===f.getUint8(e))if(s=f.getUint8(e+1),Q(s)){if(i=f.getUint16(e+2),n=Z(f,e,i),n&&o.has(n)&&(r=y.get(n),a=r.findPosition(f,e),h=d[n],a.type=n,this.appSegments.push(a),!l&&(r.multiSegment&&h.multiSegment?(this.unfinishedMultiSegment=a.chunkNumber<a.chunkCount,this.unfinishedMultiSegment||u.delete(n)):u.delete(n),0===u.size)))break;d.recordUnknownSegments&&(a=J.findPosition(f,e),a.marker=s,this.unknownSegments.push(a)),e+=i+1}else if(q(s)){if(i=f.getUint16(e+2),218===s&&!1!==d.stopAfterSos)return;d.recordJpegSegments&&this.jpegSegments.push({offset:e,length:i,marker:s}),e+=i+1}return e}mergeMultiSegments(){if(!this.appSegments.some((e=>e.multiSegment)))return;let e=function(e,t){let s,i,n,r=new Map;for(let a=0;a<e.length;a++)s=e[a],i=s[t],r.has(i)?n=r.get(i):r.set(i,n=[]),n.push(s);return Array.from(r)}(this.appSegments,\"type\");this.mergedAppSegments=e.map((([e,t])=>{let s=y.get(e,this.options);if(s.handleMultiSegments){return{type:e,chunk:s.handleMultiSegments(t)}}return t[0]}))}getSegment(e){return this.appSegments.find((t=>t.type===e))}async getOrFindSegment(e){let t=this.getSegment(e);return void 0===t&&(await this.findAppSegments(0,[e]),t=this.getSegment(e)),t}}e(ee,\"type\",\"jpeg\"),m.set(\"jpeg\",ee);const te=[void 0,1,1,2,4,8,1,1,2,4,8,4,8,4];class se extends J{parseHeader(){var e=this.chunk.getUint16();18761===e?this.le=!0:19789===e&&(this.le=!1),this.chunk.le=this.le,this.headerParsed=!0}parseTags(e,t,s=new Map){let{pick:i,skip:n}=this.options[t];i=new Set(i);let r=i.size>0,a=0===n.size,h=this.chunk.getUint16(e);e+=2;for(let f=0;f<h;f++){let h=this.chunk.getUint16(e);if(r){if(i.has(h)&&(s.set(h,this.parseTag(e,h,t)),i.delete(h),0===i.size))break}else!a&&n.has(h)||s.set(h,this.parseTag(e,h,t));e+=12}return s}parseTag(e,t,s){let{chunk:i}=this,n=i.getUint16(e+2),r=i.getUint32(e+4),a=te[n];if(a*r<=4?e+=8:e=i.getUint32(e+8),(n<1||n>13)&&l(`Invalid TIFF value type. block: ${s.toUpperCase()}, tag: ${t.toString(16)}, type: ${n}, offset ${e}`),e>i.byteLength&&l(`Invalid TIFF value offset. block: ${s.toUpperCase()}, tag: ${t.toString(16)}, type: ${n}, offset ${e} is outside of chunk size ${i.byteLength}`),1===n)return i.getUint8Array(e,r);if(2===n)return\"\"===(h=function(e){for(;e.endsWith(\"\\0\");)e=e.slice(0,-1);return e}(h=i.getString(e,r)).trim())?void 0:h;var h;if(7===n)return i.getUint8Array(e,r);if(1===r)return this.parseTagValue(n,e);{let t=new(function(e){switch(e){case 1:return Uint8Array;case 3:return Uint16Array;case 4:return Uint32Array;case 5:return Array;case 6:return Int8Array;case 8:return Int16Array;case 9:return Int32Array;case 10:return Array;case 11:return Float32Array;case 12:return Float64Array;default:return Array}}(n))(r),s=a;for(let i=0;i<r;i++)t[i]=this.parseTagValue(n,e),e+=s;return t}}parseTagValue(e,t){let{chunk:s}=this;switch(e){case 1:return s.getUint8(t);case 3:return s.getUint16(t);case 4:return s.getUint32(t);case 5:return s.getUint32(t)/s.getUint32(t+4);case 6:return s.getInt8(t);case 8:return s.getInt16(t);case 9:return s.getInt32(t);case 10:return s.getInt32(t)/s.getInt32(t+4);case 11:return s.getFloat(t);case 12:return s.getDouble(t);case 13:return s.getUint32(t);default:l(`Invalid tiff type ${e}`)}}}class ie extends se{static canHandle(e,t){return 225===e.getUint8(t+1)&&1165519206===e.getUint32(t+4)&&0===e.getUint16(t+8)}async parse(){this.parseHeader();let{options:e}=this;return e.ifd0.enabled&&await this.parseIfd0Block(),e.exif.enabled&&await this.safeParse(\"parseExifBlock\"),e.gps.enabled&&await this.safeParse(\"parseGpsBlock\"),e.interop.enabled&&await this.safeParse(\"parseInteropBlock\"),e.ifd1.enabled&&await this.safeParse(\"parseThumbnailBlock\"),this.createOutput()}safeParse(e){let t=this[e]();return void 0!==t.catch&&(t=t.catch(this.handleError)),t}findIfd0Offset(){void 0===this.ifd0Offset&&(this.ifd0Offset=this.chunk.getUint32(4))}findIfd1Offset(){if(void 0===this.ifd1Offset){this.findIfd0Offset();let e=this.chunk.getUint16(this.ifd0Offset),t=this.ifd0Offset+2+12*e;this.ifd1Offset=this.chunk.getUint32(t)}}parseBlock(e,t){let s=new Map;return this[t]=s,this.parseTags(e,t,s),s}async parseIfd0Block(){if(this.ifd0)return;let{file:e}=this;this.findIfd0Offset(),this.ifd0Offset<8&&l(\"Malformed EXIF data\"),!e.chunked&&this.ifd0Offset>e.byteLength&&l(`IFD0 offset points to outside of file.\\nthis.ifd0Offset: ${this.ifd0Offset}, file.byteLength: ${e.byteLength}`),e.tiff&&await e.ensureChunk(this.ifd0Offset,o(this.options));let t=this.parseBlock(this.ifd0Offset,\"ifd0\");return 0!==t.size?(this.exifOffset=t.get(34665),this.interopOffset=t.get(40965),this.gpsOffset=t.get(34853),this.xmp=t.get(700),this.iptc=t.get(33723),this.icc=t.get(34675),this.options.sanitize&&(t.delete(34665),t.delete(40965),t.delete(34853),t.delete(700),t.delete(33723),t.delete(34675)),t):void 0}async parseExifBlock(){if(this.exif)return;if(this.ifd0||await this.parseIfd0Block(),void 0===this.exifOffset)return;this.file.tiff&&await this.file.ensureChunk(this.exifOffset,o(this.options));let e=this.parseBlock(this.exifOffset,\"exif\");return this.interopOffset||(this.interopOffset=e.get(40965)),this.makerNote=e.get(37500),this.userComment=e.get(37510),this.options.sanitize&&(e.delete(40965),e.delete(37500),e.delete(37510)),this.unpack(e,41728),this.unpack(e,41729),e}unpack(e,t){let s=e.get(t);s&&1===s.length&&e.set(t,s[0])}async parseGpsBlock(){if(this.gps)return;if(this.ifd0||await this.parseIfd0Block(),void 0===this.gpsOffset)return;let e=this.parseBlock(this.gpsOffset,\"gps\");return e&&e.has(2)&&e.has(4)&&(e.set(\"latitude\",ne(...e.get(2),e.get(1))),e.set(\"longitude\",ne(...e.get(4),e.get(3)))),e}async parseInteropBlock(){if(!this.interop&&(this.ifd0||await this.parseIfd0Block(),void 0!==this.interopOffset||this.exif||await this.parseExifBlock(),void 0!==this.interopOffset))return this.parseBlock(this.interopOffset,\"interop\")}async parseThumbnailBlock(e=!1){if(!this.ifd1&&!this.ifd1Parsed&&(!this.options.mergeOutput||e))return this.findIfd1Offset(),this.ifd1Offset>0&&(this.parseBlock(this.ifd1Offset,\"ifd1\"),this.ifd1Parsed=!0),this.ifd1}async extractThumbnail(){if(this.headerParsed||this.parseHeader(),this.ifd1Parsed||await this.parseThumbnailBlock(!0),void 0===this.ifd1)return;let e=this.ifd1.get(513),t=this.ifd1.get(514);return this.chunk.getUint8Array(e,t)}get image(){return this.ifd0}get thumbnail(){return this.ifd1}createOutput(){let e,t,s,i={};for(t of P)if(e=this[t],!f(e))if(s=this.canTranslate?this.translateBlock(e,t):Object.fromEntries(e),this.options.mergeOutput){if(\"ifd1\"===t)continue;Object.assign(i,s)}else i[t]=s;return this.makerNote&&(i.makerNote=this.makerNote),this.userComment&&(i.userComment=this.userComment),i}assignToOutput(e,t){if(this.globalOptions.mergeOutput)Object.assign(e,t);else for(let[s,i]of Object.entries(t))this.assignObjectToOutput(e,s,i)}}function ne(e,t,s,i){var n=e+t/60+s/3600;return\"S\"!==i&&\"W\"!==i||(n*=-1),n}e(ie,\"type\",\"tiff\"),e(ie,\"headerLength\",10),y.set(\"tiff\",ie);var re=Object.freeze({__proto__:null,default:G,Exifr:H,fileParsers:m,segmentParsers:y,fileReaders:b,tagKeys:B,tagValues:V,tagRevivers:I,createDictionary:x,extendDictionary:C,fetchUrlAsArrayBuffer:S,readBlobAsArrayBuffer:A,chunkedProps:L,otherSegments:T,segments:z,tiffBlocks:P,segmentsAndBlocks:F,tiffExtractables:j,inheritables:E,allFormatters:M,Options:R,parse:Y});const ae={ifd0:!1,ifd1:!1,exif:!1,gps:!1,interop:!1,sanitize:!1,reviveValues:!0,translateKeys:!1,translateValues:!1,mergeOutput:!1},he=Object.assign({},ae,{firstChunkSize:4e4,gps:[1,2,3,4]});async function fe(e){let t=new H(he);await t.read(e);let s=await t.parse();if(s&&s.gps){let{latitude:e,longitude:t}=s.gps;return{latitude:e,longitude:t}}}const le=Object.assign({},ae,{tiff:!1,ifd1:!0,mergeOutput:!1});async function oe(e){let t=new H(le);await t.read(e);let s=await t.extractThumbnail();return s&&a?r.from(s):s}async function ue(e){let t=await this.thumbnail(e);if(void 0!==t){let e=new Blob([t]);return URL.createObjectURL(e)}}const de=Object.assign({},ae,{firstChunkSize:4e4,ifd0:[274]});async function ce(e){let t=new H(de);await t.read(e);let s=await t.parse();if(s&&s.ifd0)return s.ifd0[274]}const pe=Object.freeze({1:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:0,rad:0},2:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:0,rad:0},3:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:180,rad:180*Math.PI/180},4:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:180,rad:180*Math.PI/180},5:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:90,rad:90*Math.PI/180},6:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:90,rad:90*Math.PI/180},7:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:270,rad:270*Math.PI/180},8:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:270,rad:270*Math.PI/180}});let ge=!0,me=!0;if(\"object\"==typeof navigator){let e=navigator.userAgent;if(e.includes(\"iPad\")||e.includes(\"iPhone\")){let t=e.match(/OS (\\d+)_(\\d+)/);if(t){let[,e,s]=t,i=Number(e)+.1*Number(s);ge=i<13.4,me=!1}}else if(e.includes(\"OS X 10\")){let[,t]=e.match(/OS X 10[_.](\\d+)/);ge=me=Number(t)<15}if(e.includes(\"Chrome/\")){let[,t]=e.match(/Chrome\\/(\\d+)/);ge=me=Number(t)<81}else if(e.includes(\"Firefox/\")){let[,t]=e.match(/Firefox\\/(\\d+)/);ge=me=Number(t)<77}}async function ye(e){let t=await ce(e);return Object.assign({canvas:ge,css:me},pe[t])}class be extends c{constructor(...t){super(...t),e(this,\"ranges\",new we),0!==this.byteLength&&this.ranges.add(0,this.byteLength)}_tryExtend(e,t,s){if(0===e&&0===this.byteLength&&s){let e=new DataView(s.buffer||s,s.byteOffset,s.byteLength);this._swapDataView(e)}else{let s=e+t;if(s>this.byteLength){let{dataView:e}=this._extend(s);this._swapDataView(e)}}}_extend(e){let t;t=a?r.allocUnsafe(e):new Uint8Array(e);let s=new DataView(t.buffer,t.byteOffset,t.byteLength);return t.set(new Uint8Array(this.buffer,this.byteOffset,this.byteLength),0),{uintView:t,dataView:s}}subarray(e,t,s=!1){return t=t||this._lengthToEnd(e),s&&this._tryExtend(e,t),this.ranges.add(e,t),super.subarray(e,t)}set(e,t,s=!1){s&&this._tryExtend(t,e.byteLength,e);let i=super.set(e,t);return this.ranges.add(t,i.byteLength),i}async ensureChunk(e,t){this.chunked&&(this.ranges.available(e,t)||await this.readChunk(e,t))}available(e,t){return this.ranges.available(e,t)}}class we{constructor(){e(this,\"list\",[])}get length(){return this.list.length}add(e,t,s=0){let i=e+t,n=this.list.filter((t=>ke(e,t.offset,i)||ke(e,t.end,i)));if(n.length>0){e=Math.min(e,...n.map((e=>e.offset))),i=Math.max(i,...n.map((e=>e.end))),t=i-e;let s=n.shift();s.offset=e,s.length=t,s.end=i,this.list=this.list.filter((e=>!n.includes(e)))}else this.list.push({offset:e,length:t,end:i})}available(e,t){let s=e+t;return this.list.some((t=>t.offset<=e&&s<=t.end))}}function ke(e,t,s){return e<=t&&t<=s}class Oe extends be{constructor(t,s){super(0),e(this,\"chunksRead\",0),this.input=t,this.options=s}async readWhole(){this.chunked=!1,await this.readChunk(this.nextChunkOffset)}async readChunked(){this.chunked=!0,await this.readChunk(0,this.options.firstChunkSize)}async readNextChunk(e=this.nextChunkOffset){if(this.fullyRead)return this.chunksRead++,!1;let t=this.options.chunkSize,s=await this.readChunk(e,t);return!!s&&s.byteLength===t}async readChunk(e,t){if(this.chunksRead++,0!==(t=this.safeWrapAddress(e,t)))return this._readChunk(e,t)}safeWrapAddress(e,t){return void 0!==this.size&&e+t>this.size?Math.max(0,this.size-e):t}get nextChunkOffset(){if(0!==this.ranges.list.length)return this.ranges.list[0].length}get canReadNextChunk(){return this.chunksRead<this.options.chunkLimit}get fullyRead(){return void 0!==this.size&&this.nextChunkOffset===this.size}read(){return this.options.chunked?this.readChunked():this.readWhole()}close(){}}b.set(\"blob\",class extends Oe{async readWhole(){this.chunked=!1;let e=await A(this.input);this._swapArrayBuffer(e)}readChunked(){return this.chunked=!0,this.size=this.input.size,super.readChunked()}async _readChunk(e,t){let s=t?e+t:void 0,i=this.input.slice(e,s),n=await A(i);return this.set(n,e,!0)}});export default re;export{H as Exifr,R as Options,M as allFormatters,L as chunkedProps,x as createDictionary,C as extendDictionary,S as fetchUrlAsArrayBuffer,m as fileParsers,b as fileReaders,fe as gps,he as gpsOnlyOptions,E as inheritables,ce as orientation,de as orientationOnlyOptions,T as otherSegments,Y as parse,A as readBlobAsArrayBuffer,ge as rotateCanvas,me as rotateCss,ye as rotation,pe as rotations,y as segmentParsers,z as segments,F as segmentsAndBlocks,B as tagKeys,I as tagRevivers,V as tagValues,oe as thumbnail,le as thumbnailOnlyOptions,ue as thumbnailUrl,P as tiffBlocks,j as tiffExtractables};\n","export default {\n strings: {\n generatingThumbnails: 'Generating thumbnails...',\n },\n};\n","import { UIPlugin } from '@uppy/core';\nimport dataURItoBlob from '@uppy/utils/lib/dataURItoBlob';\nimport isObjectURL from '@uppy/utils/lib/isObjectURL';\nimport isPreviewSupported from '@uppy/utils/lib/isPreviewSupported';\n// @ts-ignore untyped\nimport { rotation } from 'exifr/dist/mini.esm.mjs';\nimport packageJson from '../package.json' with { type: 'json' };\nimport locale from './locale.js';\n/**\n * Save a <canvas> element's content to a Blob object.\n *\n */\nfunction canvasToBlob(canvas, type, quality) {\n try {\n canvas.getContext('2d').getImageData(0, 0, 1, 1);\n }\n catch (err) {\n if (err.code === 18) {\n return Promise.reject(new Error('cannot read image, probably an svg with external resources'));\n }\n }\n if (canvas.toBlob) {\n return new Promise((resolve) => {\n canvas.toBlob(resolve, type, quality);\n }).then((blob) => {\n if (blob === null) {\n throw new Error('cannot read image, probably an svg with external resources');\n }\n return blob;\n });\n }\n return Promise.resolve()\n .then(() => {\n return dataURItoBlob(canvas.toDataURL(type, quality), {});\n })\n .then((blob) => {\n if (blob === null) {\n throw new Error('could not extract blob, probably an old browser');\n }\n return blob;\n });\n}\nfunction rotateImage(image, translate) {\n let w = image.width;\n let h = image.height;\n if (translate.deg === 90 || translate.deg === 270) {\n w = image.height;\n h = image.width;\n }\n const canvas = document.createElement('canvas');\n canvas.width = w;\n canvas.height = h;\n const context = canvas.getContext('2d');\n context.translate(w / 2, h / 2);\n if (translate.canvas) {\n context.rotate(translate.rad);\n context.scale(translate.scaleX, translate.scaleY);\n }\n context.drawImage(image, -image.width / 2, -image.height / 2, image.width, image.height);\n return canvas;\n}\n/**\n * Make sure the image doesn’t exceed browser/device canvas limits.\n * For ios with 256 RAM and ie\n */\nfunction protect(image) {\n // https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element\n const ratio = image.width / image.height;\n const maxSquare = 5000000; // ios max canvas square\n const maxSize = 4096; // ie max canvas dimensions\n let maxW = Math.floor(Math.sqrt(maxSquare * ratio));\n let maxH = Math.floor(maxSquare / Math.sqrt(maxSquare * ratio));\n if (maxW > maxSize) {\n maxW = maxSize;\n maxH = Math.round(maxW / ratio);\n }\n if (maxH > maxSize) {\n maxH = maxSize;\n maxW = Math.round(ratio * maxH);\n }\n if (image.width > maxW) {\n const canvas = document.createElement('canvas');\n canvas.width = maxW;\n canvas.height = maxH;\n canvas.getContext('2d').drawImage(image, 0, 0, maxW, maxH);\n return canvas;\n }\n return image;\n}\nconst defaultOptions = {\n thumbnailWidth: null,\n thumbnailHeight: null,\n thumbnailType: 'image/jpeg',\n waitForThumbnailsBeforeUpload: false,\n lazy: false,\n};\n/**\n * The Thumbnail Generator plugin\n */\nexport default class ThumbnailGenerator extends UIPlugin {\n static VERSION = packageJson.version;\n queue;\n queueProcessing;\n defaultThumbnailDimension;\n thumbnailType;\n constructor(uppy, opts) {\n super(uppy, { ...defaultOptions, ...opts });\n this.type = 'modifier';\n this.id = this.opts.id || 'ThumbnailGenerator';\n this.title = 'Thumbnail Generator';\n this.queue = [];\n this.queueProcessing = false;\n this.defaultThumbnailDimension = 200;\n this.thumbnailType = this.opts.thumbnailType;\n this.defaultLocale = locale;\n this.i18nInit();\n if (this.opts.lazy && this.opts.waitForThumbnailsBeforeUpload) {\n throw new Error('ThumbnailGenerator: The `lazy` and `waitForThumbnailsBeforeUpload` options are mutually exclusive. Please ensure at most one of them is set to `true`.');\n }\n }\n createThumbnail(file, targetWidth, targetHeight) {\n const originalUrl = URL.createObjectURL(file.data);\n const onload = new Promise((resolve, reject) => {\n const image = new Image();\n image.src = originalUrl;\n image.addEventListener('load', () => {\n URL.revokeObjectURL(originalUrl);\n resolve(image);\n });\n image.addEventListener('error', (event) => {\n URL.revokeObjectURL(originalUrl);\n reject(event.error || new Error('Could not create thumbnail'));\n });\n });\n const orientationPromise = rotation(file.data).catch(() => 1);\n return Promise.all([onload, orientationPromise])\n .then(([image, orientation]) => {\n const dimensions = this.getProportionalDimensions(image, targetWidth, targetHeight, orientation.deg);\n const rotatedImage = rotateImage(image, orientation);\n const resizedImage = this.resizeImage(rotatedImage, dimensions.width, dimensions.height);\n return canvasToBlob(resizedImage, this.thumbnailType, 80);\n })\n .then((blob) => {\n return URL.createObjectURL(blob);\n });\n }\n /**\n * Get the new calculated dimensions for the given image and a target width\n * or height. If both width and height are given, only width is taken into\n * account. If neither width nor height are given, the default dimension\n * is used.\n */\n getProportionalDimensions(img, width, height, deg) {\n let aspect = img.width / img.height;\n if (deg === 90 || deg === 270) {\n aspect = img.height / img.width;\n }\n if (width != null) {\n return {\n width,\n height: Math.round(width / aspect),\n };\n }\n if (height != null) {\n return {\n width: Math.round(height * aspect),\n height,\n };\n }\n return {\n width: this.defaultThumbnailDimension,\n height: Math.round(this.defaultThumbnailDimension / aspect),\n };\n }\n /**\n * Resize an image to the target `width` and `height`.\n *\n * Returns a Canvas with the resized image on it.\n */\n resizeImage(image, targetWidth, targetHeight) {\n // Resizing in steps refactored to use a solution from\n // https://blog.uploadcare.com/image-resize-in-browsers-is-broken-e38eed08df01\n let img = protect(image);\n let steps = Math.ceil(Math.log2(img.width / targetWidth));\n if (steps < 1) {\n steps = 1;\n }\n let sW = targetWidth * 2 ** (steps - 1);\n let sH = targetHeight * 2 ** (steps - 1);\n const x = 2;\n while (steps--) {\n const canvas = document.createElement('canvas');\n canvas.width = sW;\n canvas.height = sH;\n canvas.getContext('2d').drawImage(img, 0, 0, sW, sH);\n img = canvas;\n sW = Math.round(sW / x);\n sH = Math.round(sH / x);\n }\n return img;\n }\n /**\n * Set the preview URL for a file.\n */\n setPreviewURL(fileID, preview) {\n this.uppy.setFileState(fileID, { preview });\n }\n addToQueue(fileID) {\n this.queue.push(fileID);\n if (this.queueProcessing === false) {\n this.processQueue();\n }\n }\n processQueue() {\n this.queueProcessing = true;\n if (this.queue.length > 0) {\n const current = this.uppy.getFile(this.queue.shift());\n if (!current) {\n this.uppy.log('[ThumbnailGenerator] file was removed before a thumbnail could be generated, but not removed from the queue. This is probably a bug', 'error');\n return Promise.resolve();\n }\n return this.requestThumbnail(current)\n .catch(() => { })\n .then(() => this.processQueue());\n }\n this.queueProcessing = false;\n this.uppy.log('[ThumbnailGenerator] Emptied thumbnail queue');\n this.uppy.emit('thumbnail:all-generated');\n return Promise.resolve();\n }\n requestThumbnail(file) {\n if (isPreviewSupported(file.type) && !file.isRemote) {\n return this.createThumbnail(file, this.opts.thumbnailWidth, this.opts.thumbnailHeight)\n .then((preview) => {\n this.setPreviewURL(file.id, preview);\n this.uppy.log(`[ThumbnailGenerator] Generated thumbnail for ${file.id}`);\n this.uppy.emit('thumbnail:generated', this.uppy.getFile(file.id), preview);\n })\n .catch((err) => {\n this.uppy.log(`[ThumbnailGenerator] Failed thumbnail for ${file.id}:`, 'warning');\n this.uppy.log(err, 'warning');\n this.uppy.emit('thumbnail:error', this.uppy.getFile(file.id), err);\n });\n }\n return Promise.resolve();\n }\n onFileAdded = (file) => {\n if (!file.preview &&\n file.data &&\n isPreviewSupported(file.type) &&\n !file.isRemote) {\n this.addToQueue(file.id);\n }\n };\n /**\n * Cancel a lazy request for a thumbnail if the thumbnail has not yet been generated.\n */\n onCancelRequest = (file) => {\n const index = this.queue.indexOf(file.id);\n if (index !== -1) {\n this.queue.splice(index, 1);\n }\n };\n /**\n * Clean up the thumbnail for a file. Cancel lazy requests and free the thumbnail URL.\n */\n onFileRemoved = (file) => {\n const index = this.queue.indexOf(file.id);\n if (index !== -1) {\n this.queue.splice(index, 1);\n }\n // Clean up object URLs.\n if (file.preview && isObjectURL(file.preview)) {\n URL.revokeObjectURL(file.preview);\n }\n };\n onRestored = () => {\n const restoredFiles = this.uppy.getFiles().filter((file) => file.isRestored);\n restoredFiles.forEach((file) => {\n // Only add blob URLs; they are likely invalid after being restored.\n if (!file.preview || isObjectURL(file.preview)) {\n this.addToQueue(file.id);\n }\n });\n };\n onAllFilesRemoved = () => {\n this.queue = [];\n };\n waitUntilAllProcessed = (fileIDs) => {\n fileIDs.forEach((fileID) => {\n const file = this.uppy.getFile(fileID);\n this.uppy.emit('preprocess-progress', file, {\n mode: 'indeterminate',\n message: this.i18n('generatingThumbnails'),\n });\n });\n const emitPreprocessCompleteForAll = () => {\n fileIDs.forEach((fileID) => {\n const file = this.uppy.getFile(fileID);\n this.uppy.emit('preprocess-complete', file);\n });\n };\n return new Promise((resolve) => {\n if (this.queueProcessing) {\n this.uppy.once('thumbnail:all-generated', () => {\n emitPreprocessCompleteForAll();\n resolve();\n });\n }\n else {\n emitPreprocessCompleteForAll();\n resolve();\n }\n });\n };\n install() {\n this.uppy.on('file-removed', this.onFileRemoved);\n this.uppy.on('cancel-all', this.onAllFilesRemoved);\n if (this.opts.lazy) {\n this.uppy.on('thumbnail:request', this.onFileAdded);\n this.uppy.on('thumbnail:cancel', this.onCancelRequest);\n }\n else {\n this.uppy.on('thumbnail:request', this.onFileAdded);\n this.uppy.on('file-added', this.onFileAdded);\n this.uppy.on('restored', this.onRestored);\n }\n if (this.opts.waitForThumbnailsBeforeUpload) {\n this.uppy.addPreProcessor(this.waitUntilAllProcessed);\n }\n }\n uninstall() {\n this.uppy.off('file-removed', this.onFileRemoved);\n this.uppy.off('cancel-all', this.onAllFilesRemoved);\n if (this.opts.lazy) {\n this.uppy.off('thumbnail:request', this.onFileAdded);\n this.uppy.off('thumbnail:cancel', this.onCancelRequest);\n }\n else {\n this.uppy.off('thumbnail:request', this.onFileAdded);\n this.uppy.off('file-added', this.onFileAdded);\n this.uppy.off('restored', this.onRestored);\n }\n if (this.opts.waitForThumbnailsBeforeUpload) {\n this.uppy.removePreProcessor(this.waitUntilAllProcessed);\n }\n }\n}\n","import isDOMElement from './isDOMElement.js';\n/**\n * Find one or more DOM elements.\n */\nfunction findAllDOMElements(element) {\n if (typeof element === 'string') {\n const elements = document.querySelectorAll(element);\n return elements.length === 0 ? null : Array.from(elements);\n }\n if (typeof element === 'object' && isDOMElement(element)) {\n return [element];\n }\n return null;\n}\nexport default findAllDOMElements;\n","/**\n * Converts list into array\n */\nexport default Array.from;\n","import toArray from '../../toArray.js';\n// .files fallback, should be implemented in any browser\nexport default function fallbackApi(dataTransfer) {\n const files = toArray(dataTransfer.files);\n return Promise.resolve(files);\n}\n","/**\n * Recursive function, calls the original callback() when the directory is entirely parsed.\n */\nexport default function getFilesAndDirectoriesFromDirectory(directoryReader, oldEntries, logDropError, { onSuccess }) {\n directoryReader.readEntries((entries) => {\n const newEntries = [...oldEntries, ...entries];\n // According to the FileSystem API spec, getFilesAndDirectoriesFromDirectory()\n // must be called until it calls the onSuccess with an empty array.\n if (entries.length) {\n queueMicrotask(() => {\n getFilesAndDirectoriesFromDirectory(directoryReader, newEntries, logDropError, { onSuccess });\n });\n // Done iterating this particular directory\n }\n else {\n onSuccess(newEntries);\n }\n }, \n // Make sure we resolve on error anyway, it's fine if only one directory couldn't be parsed!\n (error) => {\n logDropError(error);\n onSuccess(oldEntries);\n });\n}\n","import getFilesAndDirectoriesFromDirectory from './getFilesAndDirectoriesFromDirectory.js';\n/**\n * Polyfill for the new (experimental) getAsFileSystemHandle API (using the popular webkitGetAsEntry behind the scenes)\n * so that we can switch to the getAsFileSystemHandle API once it (hopefully) becomes standard\n */\nfunction getAsFileSystemHandleFromEntry(entry, logDropError) {\n if (entry == null)\n return entry;\n return {\n kind: entry.isFile\n ? 'file'\n : entry.isDirectory\n ? 'directory'\n : undefined,\n name: entry.name,\n getFile() {\n return new Promise((resolve, reject) => entry.file(resolve, reject));\n },\n async *values() {\n // If the file is a directory.\n const directoryReader = entry.createReader();\n const entries = await new Promise((resolve) => {\n getFilesAndDirectoriesFromDirectory(directoryReader, [], logDropError, {\n onSuccess: (dirEntries) => resolve(dirEntries.map((file) => getAsFileSystemHandleFromEntry(file, logDropError))),\n });\n });\n yield* entries;\n },\n isSameEntry: undefined,\n };\n}\nasync function* createPromiseToAddFileOrParseDirectory(entry, relativePath, lastResortFile = undefined) {\n const getNextRelativePath = () => `${relativePath}/${entry.name}`;\n // For each dropped item, - make sure it's a file/directory, and start deepening in!\n if (entry.kind === 'file') {\n const file = await entry.getFile();\n if (file != null) {\n ;\n file.relativePath = relativePath ? getNextRelativePath() : null;\n yield file;\n }\n else if (lastResortFile != null)\n yield lastResortFile;\n }\n else if (entry.kind === 'directory') {\n for await (const handle of entry.values()) {\n // Recurse on the directory, appending the dir name to the relative path\n yield* createPromiseToAddFileOrParseDirectory(handle, relativePath ? getNextRelativePath() : entry.name);\n }\n }\n else if (lastResortFile != null)\n yield lastResortFile;\n}\n/**\n * Load all files from data transfer, and recursively read any directories.\n * Note that IE is not supported for drag-drop, because IE doesn't support Data Transfers\n *\n * @param {DataTransfer} dataTransfer\n * @param {*} logDropError on error\n */\nexport default async function* getFilesFromDataTransfer(dataTransfer, logDropError) {\n // Retrieving the dropped items must happen synchronously\n // otherwise only the first item gets treated and the other ones are garbage collected.\n // https://github.com/transloadit/uppy/pull/3998\n const fileSystemHandles = await Promise.all(Array.from(dataTransfer.items, async (item) => {\n // biome-ignore lint/style/useConst: ...\n let fileSystemHandle;\n // TODO enable getAsFileSystemHandle API once we can get it working with subdirectories\n // IMPORTANT: Need to check isSecureContext *before* calling getAsFileSystemHandle\n // or else Chrome will crash when running in HTTP: https://github.com/transloadit/uppy/issues/4133\n // if (window.isSecureContext && item.getAsFileSystemHandle != null)\n // fileSystemHandle = await item.getAsFileSystemHandle()\n // `webkitGetAsEntry` exists in all popular browsers (including non-WebKit browsers),\n // however it may be renamed to getAsEntry() in the future, so you should code defensively, looking for both.\n // from https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry\n const getAsEntry = () => typeof item.getAsEntry === 'function'\n ? item.getAsEntry()\n : item.webkitGetAsEntry();\n fileSystemHandle ??= getAsFileSystemHandleFromEntry(getAsEntry(), logDropError);\n return {\n fileSystemHandle,\n lastResortFile: item.getAsFile(), // can be used as a fallback in case other methods fail\n };\n }));\n for (const { lastResortFile, fileSystemHandle } of fileSystemHandles) {\n // fileSystemHandle and lastResortFile can be null when we drop an url.\n if (fileSystemHandle != null) {\n try {\n yield* createPromiseToAddFileOrParseDirectory(fileSystemHandle, '', lastResortFile);\n }\n catch (err) {\n // Example: If dropping a symbolic link, Chromium will throw:\n // \"DOMException: A requested file or directory could not be found at the time an operation was processed.\",\n // So we will use lastResortFile instead. See https://github.com/transloadit/uppy/issues/3505.\n if (lastResortFile != null) {\n yield lastResortFile;\n }\n else {\n logDropError(err);\n }\n }\n }\n else if (lastResortFile != null)\n yield lastResortFile;\n }\n}\n","import fallbackApi from './utils/fallbackApi.js';\nimport webkitGetAsEntryApi from './utils/webkitGetAsEntryApi/index.js';\n/**\n * Returns a promise that resolves to the array of dropped files (if a folder is\n * dropped, and browser supports folder parsing - promise resolves to the flat\n * array of all files in all directories).\n * Each file has .relativePath prop appended to it (e.g. \"/docs/Prague/ticket_from_prague_to_ufa.pdf\")\n * if browser supports it. Otherwise it's undefined.\n *\n * @param dataTransfer\n * @param options\n * @param options.logDropError - a function that's called every time some\n * folder or some file error out (e.g. because of the folder name being too long\n * on Windows). Notice that resulting promise will always be resolved anyway.\n *\n * @returns {Promise} - Array<File>\n */\nexport default async function getDroppedFiles(dataTransfer, options) {\n // Get all files from all subdirs. Works (at least) in Chrome, Mozilla, and Safari\n const logDropError = options?.logDropError ?? Function.prototype;\n try {\n const accumulator = [];\n for await (const file of webkitGetAsEntryApi(dataTransfer, logDropError)) {\n accumulator.push(file);\n }\n return accumulator;\n // Otherwise just return all first-order files\n }\n catch {\n return fallbackApi(dataTransfer);\n }\n}\n","/* @ts-self-types=\"./index.d.ts\" */\nlet urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nexport let customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nexport let nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n","/**\n * Checks if the browser supports Drag & Drop (not supported on mobile devices, for example).\n */\nexport default function isDragDropSupported() {\n const div = document.body;\n if (!('draggable' in div) || !('ondragstart' in div && 'ondrop' in div)) {\n return false;\n }\n if (!('FormData' in window)) {\n return false;\n }\n if (!('FileReader' in window)) {\n return false;\n }\n return true;\n}\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"preact/jsx-runtime\";\nimport { Component, Fragment, h } from 'preact';\nclass AddFiles extends Component {\n fileInput = null;\n folderInput = null;\n mobilePhotoFileInput = null;\n mobileVideoFileInput = null;\n triggerFileInputClick = () => {\n this.fileInput?.click();\n };\n triggerFolderInputClick = () => {\n this.folderInput?.click();\n };\n triggerVideoCameraInputClick = () => {\n this.mobileVideoFileInput?.click();\n };\n triggerPhotoCameraInputClick = () => {\n this.mobilePhotoFileInput?.click();\n };\n onFileInputChange = (event) => {\n this.props.handleInputChange(event);\n // Clear the input so that Chrome/Safari/etc. can detect file section when the same file is repeatedly selected\n // (see https://github.com/transloadit/uppy/issues/768#issuecomment-2264902758)\n event.currentTarget.value = '';\n };\n renderHiddenInput = (isFolder, refCallback) => {\n return (_jsx(\"input\", { className: \"uppy-Dashboard-input\", hidden: true, \"aria-hidden\": \"true\", tabIndex: -1, \n // @ts-expect-error default types don't yet know about the `webkitdirectory` property\n webkitdirectory: isFolder, type: \"file\", name: \"files[]\", multiple: this.props.maxNumberOfFiles !== 1, onChange: this.onFileInputChange, accept: this.props.allowedFileTypes?.join(', '), ref: refCallback }));\n };\n renderHiddenCameraInput = (type, nativeCameraFacingMode, refCallback) => {\n const typeToAccept = { photo: 'image/*', video: 'video/*' };\n const accept = typeToAccept[type];\n return (_jsx(\"input\", { className: \"uppy-Dashboard-input\", hidden: true, \"aria-hidden\": \"true\", tabIndex: -1, type: \"file\", name: `camera-${type}`, onChange: this.onFileInputChange, capture: nativeCameraFacingMode === '' ? 'environment' : nativeCameraFacingMode, accept: accept, ref: refCallback }));\n };\n renderMyDeviceAcquirer = () => {\n return (_jsx(\"div\", { className: \"uppy-DashboardTab\", role: \"presentation\", \"data-uppy-acquirer-id\": \"MyDevice\", children: _jsxs(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\", role: \"tab\", tabIndex: 0, \"data-uppy-super-focusable\": true, onClick: this.triggerFileInputClick, children: [_jsx(\"div\", { className: \"uppy-DashboardTab-inner\", children: _jsx(\"svg\", { className: \"uppy-DashboardTab-iconMyDevice\", \"aria-hidden\": \"true\", focusable: \"false\", width: \"32\", height: \"32\", viewBox: \"0 0 32 32\", children: _jsx(\"path\", { d: \"M8.45 22.087l-1.305-6.674h17.678l-1.572 6.674H8.45zm4.975-12.412l1.083 1.765a.823.823 0 00.715.386h7.951V13.5H8.587V9.675h4.838zM26.043 13.5h-1.195v-2.598c0-.463-.336-.75-.798-.75h-8.356l-1.082-1.766A.823.823 0 0013.897 8H7.728c-.462 0-.815.256-.815.718V13.5h-.956a.97.97 0 00-.746.37.972.972 0 00-.19.81l1.724 8.565c.095.44.484.755.933.755H24c.44 0 .824-.3.929-.727l2.043-8.568a.972.972 0 00-.176-.825.967.967 0 00-.753-.38z\", fill: \"currentcolor\", \"fill-rule\": \"evenodd\" }) }) }), _jsx(\"div\", { className: \"uppy-DashboardTab-name\", children: this.props.i18n('myDevice') })] }) }));\n };\n renderPhotoCamera = () => {\n return (_jsx(\"div\", { className: \"uppy-DashboardTab\", role: \"presentation\", \"data-uppy-acquirer-id\": \"MobilePhotoCamera\", children: _jsxs(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\", role: \"tab\", tabIndex: 0, \"data-uppy-super-focusable\": true, onClick: this.triggerPhotoCameraInputClick, children: [_jsx(\"div\", { className: \"uppy-DashboardTab-inner\", children: _jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"32\", height: \"32\", viewBox: \"0 0 32 32\", children: _jsx(\"path\", { d: \"M23.5 9.5c1.417 0 2.5 1.083 2.5 2.5v9.167c0 1.416-1.083 2.5-2.5 2.5h-15c-1.417 0-2.5-1.084-2.5-2.5V12c0-1.417 1.083-2.5 2.5-2.5h2.917l1.416-2.167C13 7.167 13.25 7 13.5 7h5c.25 0 .5.167.667.333L20.583 9.5H23.5zM16 11.417a4.706 4.706 0 00-4.75 4.75 4.704 4.704 0 004.75 4.75 4.703 4.703 0 004.75-4.75c0-2.663-2.09-4.75-4.75-4.75zm0 7.825c-1.744 0-3.076-1.332-3.076-3.074 0-1.745 1.333-3.077 3.076-3.077 1.744 0 3.074 1.333 3.074 3.076s-1.33 3.075-3.074 3.075z\", fill: \"#02B383\", \"fill-rule\": \"nonzero\" }) }) }), _jsx(\"div\", { className: \"uppy-DashboardTab-name\", children: this.props.i18n('takePictureBtn') })] }) }));\n };\n renderVideoCamera = () => {\n return (_jsx(\"div\", { className: \"uppy-DashboardTab\", role: \"presentation\", \"data-uppy-acquirer-id\": \"MobileVideoCamera\", children: _jsxs(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\", role: \"tab\", tabIndex: 0, \"data-uppy-super-focusable\": true, onClick: this.triggerVideoCameraInputClick, children: [_jsx(\"div\", { className: \"uppy-DashboardTab-inner\", children: _jsx(\"svg\", { \"aria-hidden\": \"true\", width: \"32\", height: \"32\", viewBox: \"0 0 32 32\", children: _jsx(\"path\", { fill: \"#FF675E\", fillRule: \"nonzero\", d: \"m21.254 14.277 2.941-2.588c.797-.313 1.243.818 1.09 1.554-.01 2.094.02 4.189-.017 6.282-.126.915-1.145 1.08-1.58.34l-2.434-2.142c-.192.287-.504 1.305-.738.468-.104-1.293-.028-2.596-.05-3.894.047-.312.381.823.426 1.069.063-.384.206-.744.362-1.09zm-12.939-3.73c3.858.013 7.717-.025 11.574.02.912.129 1.492 1.237 1.351 2.217-.019 2.412.04 4.83-.03 7.239-.17 1.025-1.166 1.59-2.029 1.429-3.705-.012-7.41.025-11.114-.019-.913-.129-1.492-1.237-1.352-2.217.018-2.404-.036-4.813.029-7.214.136-.82.83-1.473 1.571-1.454z \" }) }) }), _jsx(\"div\", { className: \"uppy-DashboardTab-name\", children: this.props.i18n('recordVideoBtn') })] }) }));\n };\n renderBrowseButton = (text, onClickFn) => {\n const numberOfAcquirers = this.props.acquirers.length;\n return (_jsx(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-browse\", onClick: onClickFn, \"data-uppy-super-focusable\": numberOfAcquirers === 0, children: text }));\n };\n renderDropPasteBrowseTagline = (numberOfAcquirers) => {\n const browseFiles = this.renderBrowseButton(this.props.i18n('browseFiles'), this.triggerFileInputClick);\n const browseFolders = this.renderBrowseButton(this.props.i18n('browseFolders'), this.triggerFolderInputClick);\n // in order to keep the i18n CamelCase and options lower (as are defaults) we will want to transform a lower\n // to Camel\n const lowerFMSelectionType = this.props.fileManagerSelectionType;\n const camelFMSelectionType = lowerFMSelectionType.charAt(0).toUpperCase() +\n lowerFMSelectionType.slice(1);\n return (_jsx(\"div\", { class: \"uppy-Dashboard-AddFiles-title\", children: this.props.disableLocalFiles\n ? this.props.i18n('importFiles')\n : numberOfAcquirers > 0\n ? this.props.i18nArray(`dropPasteImport${camelFMSelectionType}`, {\n browseFiles,\n browseFolders,\n browse: browseFiles,\n })\n : this.props.i18nArray(`dropPaste${camelFMSelectionType}`, {\n browseFiles,\n browseFolders,\n browse: browseFiles,\n }) }));\n };\n [Symbol.for('uppy test: disable unused locale key warning')]() {\n // Those are actually used in `renderDropPasteBrowseTagline` method.\n this.props.i18nArray('dropPasteBoth');\n this.props.i18nArray('dropPasteFiles');\n this.props.i18nArray('dropPasteFolders');\n this.props.i18nArray('dropPasteImportBoth');\n this.props.i18nArray('dropPasteImportFiles');\n this.props.i18nArray('dropPasteImportFolders');\n }\n renderAcquirer = (acquirer) => {\n return (_jsx(\"div\", { className: \"uppy-DashboardTab\", role: \"presentation\", \"data-uppy-acquirer-id\": acquirer.id, children: _jsxs(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\", role: \"tab\", tabIndex: 0, \"data-cy\": acquirer.id, \"aria-controls\": `uppy-DashboardContent-panel--${acquirer.id}`, \"aria-selected\": this.props.activePickerPanel?.id === acquirer.id, \"data-uppy-super-focusable\": true, onClick: () => this.props.showPanel(acquirer.id), children: [_jsx(\"div\", { className: \"uppy-DashboardTab-inner\", children: acquirer.icon() }), _jsx(\"div\", { className: \"uppy-DashboardTab-name\", children: acquirer.name })] }) }));\n };\n renderAcquirers = (acquirers) => {\n // Group last two buttons, so we don’t end up with\n // just one button on a new line\n const acquirersWithoutLastTwo = [...acquirers];\n const lastTwoAcquirers = acquirersWithoutLastTwo.splice(acquirers.length - 2, acquirers.length);\n return (_jsxs(_Fragment, { children: [acquirersWithoutLastTwo.map((acquirer) => this.renderAcquirer(acquirer)), _jsx(\"span\", { role: \"presentation\", style: { 'white-space': 'nowrap' }, children: lastTwoAcquirers.map((acquirer) => this.renderAcquirer(acquirer)) })] }));\n };\n renderSourcesList = (acquirers, disableLocalFiles) => {\n const { showNativePhotoCameraButton, showNativeVideoCameraButton } = this.props;\n let list = [];\n const myDeviceKey = 'myDevice';\n if (!disableLocalFiles)\n list.push({\n key: myDeviceKey,\n elements: this.renderMyDeviceAcquirer(),\n });\n if (showNativePhotoCameraButton)\n list.push({\n key: 'nativePhotoCameraButton',\n elements: this.renderPhotoCamera(),\n });\n if (showNativeVideoCameraButton)\n list.push({\n key: 'nativePhotoCameraButton',\n elements: this.renderVideoCamera(),\n });\n list.push(...acquirers.map((acquirer) => ({\n key: acquirer.id,\n elements: this.renderAcquirer(acquirer),\n })));\n // doesn't make sense to show only a lonely \"My Device\"\n const hasOnlyMyDevice = list.length === 1 && list[0].key === myDeviceKey;\n if (hasOnlyMyDevice)\n list = [];\n // Group last two buttons, so we don’t end up with\n // just one button on a new line\n const listWithoutLastTwo = [...list];\n const lastTwo = listWithoutLastTwo.splice(list.length - 2, list.length);\n return (_jsxs(_Fragment, { children: [this.renderDropPasteBrowseTagline(list.length), _jsxs(\"div\", { className: \"uppy-Dashboard-AddFiles-list\", role: \"tablist\", children: [listWithoutLastTwo.map(({ key, elements }) => (_jsx(Fragment, { children: elements }, key))), _jsx(\"span\", { role: \"presentation\", style: { 'white-space': 'nowrap' }, children: lastTwo.map(({ key, elements }) => (_jsx(Fragment, { children: elements }, key))) })] })] }));\n };\n renderPoweredByUppy() {\n const { i18nArray } = this.props;\n const uppyBranding = (_jsxs(\"span\", { children: [_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon uppy-Dashboard-poweredByIcon\", width: \"11\", height: \"11\", viewBox: \"0 0 11 11\", children: _jsx(\"path\", { d: \"M7.365 10.5l-.01-4.045h2.612L5.5.806l-4.467 5.65h2.604l.01 4.044h3.718z\", fillRule: \"evenodd\" }) }), _jsx(\"span\", { className: \"uppy-Dashboard-poweredByUppy\", children: \"Uppy\" })] }));\n const linkText = i18nArray('poweredBy', { uppy: uppyBranding });\n return (_jsx(\"a\", { tabIndex: -1, href: \"https://uppy.io\", rel: \"noreferrer noopener\", target: \"_blank\", className: \"uppy-Dashboard-poweredBy\", children: linkText }));\n }\n render() {\n const { showNativePhotoCameraButton, showNativeVideoCameraButton, nativeCameraFacingMode, } = this.props;\n return (_jsxs(\"div\", { className: \"uppy-Dashboard-AddFiles\", children: [this.renderHiddenInput(false, (ref) => {\n this.fileInput = ref;\n }), this.renderHiddenInput(true, (ref) => {\n this.folderInput = ref;\n }), showNativePhotoCameraButton &&\n this.renderHiddenCameraInput('photo', nativeCameraFacingMode, (ref) => {\n this.mobilePhotoFileInput = ref;\n }), showNativeVideoCameraButton &&\n this.renderHiddenCameraInput('video', nativeCameraFacingMode, (ref) => {\n this.mobileVideoFileInput = ref;\n }), this.renderSourcesList(this.props.acquirers, this.props.disableLocalFiles), _jsxs(\"div\", { className: \"uppy-Dashboard-AddFiles-info\", children: [this.props.note && (_jsx(\"div\", { className: \"uppy-Dashboard-note\", children: this.props.note })), this.props.proudlyDisplayPoweredByUppy && this.renderPoweredByUppy()] })] }));\n }\n}\nexport default AddFiles;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport classNames from 'classnames';\nimport { h } from 'preact';\nimport AddFiles from './AddFiles.js';\nconst AddFilesPanel = (props) => {\n return (_jsxs(\"div\", { className: classNames('uppy-Dashboard-AddFilesPanel', props.className), \"data-uppy-panelType\": \"AddFiles\", \"aria-hidden\": !props.showAddFilesPanel, children: [_jsxs(\"div\", { className: \"uppy-DashboardContent-bar\", children: [_jsx(\"div\", { className: \"uppy-DashboardContent-title\", \n // biome-ignore lint/a11y/useSemanticElements: ...\n role: \"heading\", \"aria-level\": 1, children: props.i18n('addingMoreFiles') }), _jsx(\"button\", { className: \"uppy-DashboardContent-back\", type: \"button\", onClick: () => props.toggleAddFilesPanel(false), children: props.i18n('back') })] }), _jsx(AddFiles, { ...props })] }));\n};\nexport default AddFilesPanel;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport classNames from 'classnames';\nimport { h } from 'preact';\nfunction EditorPanel(props) {\n const file = props.files[props.fileCardFor];\n const handleCancel = () => {\n props.uppy.emit('file-editor:cancel', file);\n props.closeFileEditor();\n };\n return (_jsxs(\"div\", { className: classNames('uppy-DashboardContent-panel', props.className), role: \"tabpanel\", \"data-uppy-panelType\": \"FileEditor\", id: \"uppy-DashboardContent-panel--editor\", children: [_jsxs(\"div\", { className: \"uppy-DashboardContent-bar\", children: [_jsx(\"div\", { className: \"uppy-DashboardContent-title\", \n // biome-ignore lint/a11y/useSemanticElements: ...\n role: \"heading\", \"aria-level\": 1, children: props.i18nArray('editing', {\n file: (_jsx(\"span\", { className: \"uppy-DashboardContent-titleFile\", children: file.meta ? file.meta.name : file.name })),\n }) }), _jsx(\"button\", { className: \"uppy-DashboardContent-back\", type: \"button\", onClick: handleCancel, children: props.i18n('cancel') }), _jsx(\"button\", { className: \"uppy-DashboardContent-save\", type: \"button\", onClick: props.saveFileEditor, children: props.i18n('save') })] }), _jsx(\"div\", { className: \"uppy-DashboardContent-panelBody\", children: props.editors.map((target) => {\n return props.uppy.getPlugin(target.id).render(props.state);\n }) })] }));\n}\nexport default EditorPanel;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nfunction iconImage() {\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"25\", height: \"25\", viewBox: \"0 0 25 25\", children: _jsxs(\"g\", { fill: \"#686DE0\", fillRule: \"evenodd\", children: [_jsx(\"path\", { d: \"M5 7v10h15V7H5zm0-1h15a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z\", fillRule: \"nonzero\" }), _jsx(\"path\", { d: \"M6.35 17.172l4.994-5.026a.5.5 0 0 1 .707 0l2.16 2.16 3.505-3.505a.5.5 0 0 1 .707 0l2.336 2.31-.707.72-1.983-1.97-3.505 3.505a.5.5 0 0 1-.707 0l-2.16-2.159-3.938 3.939-1.409.026z\", fillRule: \"nonzero\" }), _jsx(\"circle\", { cx: \"7.5\", cy: \"9.5\", r: \"1.5\" })] }) }));\n}\nfunction iconAudio() {\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: \"25\", height: \"25\", viewBox: \"0 0 25 25\", children: _jsx(\"path\", { d: \"M9.5 18.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V7.25a.5.5 0 0 1 .379-.485l9-2.25A.5.5 0 0 1 18.5 5v11.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V8.67l-8 2v7.97zm8-11v-2l-8 2v2l8-2zM7 19.64c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1zm9-2c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1z\", fill: \"#049BCF\", fillRule: \"nonzero\" }) }));\n}\nfunction iconVideo() {\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: \"25\", height: \"25\", viewBox: \"0 0 25 25\", children: _jsx(\"path\", { d: \"M16 11.834l4.486-2.691A1 1 0 0 1 22 10v6a1 1 0 0 1-1.514.857L16 14.167V17a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2.834zM15 9H5v8h10V9zm1 4l5 3v-6l-5 3z\", fill: \"#19AF67\", fillRule: \"nonzero\" }) }));\n}\nfunction iconPDF() {\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: \"25\", height: \"25\", viewBox: \"0 0 25 25\", children: _jsx(\"path\", { d: \"M9.766 8.295c-.691-1.843-.539-3.401.747-3.726 1.643-.414 2.505.938 2.39 3.299-.039.79-.194 1.662-.537 3.148.324.49.66.967 1.055 1.51.17.231.382.488.629.757 1.866-.128 3.653.114 4.918.655 1.487.635 2.192 1.685 1.614 2.84-.566 1.133-1.839 1.084-3.416.249-1.141-.604-2.457-1.634-3.51-2.707a13.467 13.467 0 0 0-2.238.426c-1.392 4.051-4.534 6.453-5.707 4.572-.986-1.58 1.38-4.206 4.914-5.375.097-.322.185-.656.264-1.001.08-.353.306-1.31.407-1.737-.678-1.059-1.2-2.031-1.53-2.91zm2.098 4.87c-.033.144-.068.287-.104.427l.033-.01-.012.038a14.065 14.065 0 0 1 1.02-.197l-.032-.033.052-.004a7.902 7.902 0 0 1-.208-.271c-.197-.27-.38-.526-.555-.775l-.006.028-.002-.003c-.076.323-.148.632-.186.8zm5.77 2.978c1.143.605 1.832.632 2.054.187.26-.519-.087-1.034-1.113-1.473-.911-.39-2.175-.608-3.55-.608.845.766 1.787 1.459 2.609 1.894zM6.559 18.789c.14.223.693.16 1.425-.413.827-.648 1.61-1.747 2.208-3.206-2.563 1.064-4.102 2.867-3.633 3.62zm5.345-10.97c.088-1.793-.351-2.48-1.146-2.28-.473.119-.564 1.05-.056 2.405.213.566.52 1.188.908 1.859.18-.858.268-1.453.294-1.984z\", fill: \"#E2514A\", fillRule: \"nonzero\" }) }));\n}\nfunction iconArchive() {\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"25\", height: \"25\", viewBox: \"0 0 25 25\", children: _jsx(\"path\", { d: \"M10.45 2.05h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V2.55a.5.5 0 0 1 .5-.5zm2.05 1.024h1.05a.5.5 0 0 1 .5.5V3.6a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5v-.001zM10.45 0h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 3.074h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 1.024h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm-2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-1.656 3.074l-.82 5.946c.52.302 1.174.458 1.976.458.803 0 1.455-.156 1.975-.458l-.82-5.946h-2.311zm0-1.025h2.312c.512 0 .946.378 1.015.885l.82 5.946c.056.412-.142.817-.501 1.026-.686.398-1.515.597-2.49.597-.974 0-1.804-.199-2.49-.597a1.025 1.025 0 0 1-.5-1.026l.819-5.946c.07-.507.503-.885 1.015-.885zm.545 6.6a.5.5 0 0 1-.397-.561l.143-.999a.5.5 0 0 1 .495-.429h.74a.5.5 0 0 1 .495.43l.143.998a.5.5 0 0 1-.397.561c-.404.08-.819.08-1.222 0z\", fill: \"#00C469\", fillRule: \"nonzero\" }) }));\n}\nfunction iconFile() {\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: \"25\", height: \"25\", viewBox: \"0 0 25 25\", children: _jsxs(\"g\", { fill: \"#A7AFB7\", fillRule: \"nonzero\", children: [_jsx(\"path\", { d: \"M5.5 22a.5.5 0 0 1-.5-.5v-18a.5.5 0 0 1 .5-.5h10.719a.5.5 0 0 1 .367.16l3.281 3.556a.5.5 0 0 1 .133.339V21.5a.5.5 0 0 1-.5.5h-14zm.5-1h13V7.25L16 4H6v17z\" }), _jsx(\"path\", { d: \"M15 4v3a1 1 0 0 0 1 1h3V7h-3V4h-1z\" })] }) }));\n}\nfunction iconText() {\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: \"25\", height: \"25\", viewBox: \"0 0 25 25\", children: _jsx(\"path\", { d: \"M4.5 7h13a.5.5 0 1 1 0 1h-13a.5.5 0 0 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h10a.5.5 0 1 1 0 1h-10a.5.5 0 1 1 0-1z\", fill: \"#5A5E69\", fillRule: \"nonzero\" }) }));\n}\nexport default function getIconByMime(fileType) {\n const defaultChoice = {\n color: '#838999',\n icon: iconFile(),\n };\n if (!fileType)\n return defaultChoice;\n const fileTypeGeneral = fileType.split('/')[0];\n const fileTypeSpecific = fileType.split('/')[1];\n // Text\n if (fileTypeGeneral === 'text') {\n return {\n color: '#5a5e69',\n icon: iconText(),\n };\n }\n // Image\n if (fileTypeGeneral === 'image') {\n return {\n color: '#686de0',\n icon: iconImage(),\n };\n }\n // Audio\n if (fileTypeGeneral === 'audio') {\n return {\n color: '#068dbb',\n icon: iconAudio(),\n };\n }\n // Video\n if (fileTypeGeneral === 'video') {\n return {\n color: '#19af67',\n icon: iconVideo(),\n };\n }\n // PDF\n if (fileTypeGeneral === 'application' && fileTypeSpecific === 'pdf') {\n return {\n color: '#e25149',\n icon: iconPDF(),\n };\n }\n // Archive\n const archiveTypes = [\n 'zip',\n 'x-7z-compressed',\n 'x-zip-compressed',\n 'x-rar-compressed',\n 'x-tar',\n 'x-gzip',\n 'x-apple-diskimage',\n ];\n if (fileTypeGeneral === 'application' &&\n archiveTypes.indexOf(fileTypeSpecific) !== -1) {\n return {\n color: '#00C469',\n icon: iconArchive(),\n };\n }\n return defaultChoice;\n}\n","// ignore drop/paste events if they are not in input or textarea —\n// otherwise when Url plugin adds drop/paste listeners to this.el,\n// draging UI elements or pasting anything into any field triggers those events —\n// Url treats them as URLs that need to be imported\nfunction ignoreEvent(ev) {\n const { tagName } = ev.target;\n if (tagName === 'INPUT' || tagName === 'TEXTAREA') {\n ev.stopPropagation();\n return;\n }\n ev.preventDefault();\n ev.stopPropagation();\n}\nexport default ignoreEvent;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nimport getFileTypeIcon from '../utils/getFileTypeIcon.js';\nexport default function FilePreview(props) {\n const { file } = props;\n if (file.preview) {\n return (_jsx(\"img\", { draggable: false, className: \"uppy-Dashboard-Item-previewImg\", alt: file.name, src: file.preview }));\n }\n const { color, icon } = getFileTypeIcon(file.type);\n return (_jsxs(\"div\", { className: \"uppy-Dashboard-Item-previewIconWrap\", children: [_jsx(\"span\", { className: \"uppy-Dashboard-Item-previewIcon\", style: { color }, children: icon }), _jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-Dashboard-Item-previewIconBg\", width: \"58\", height: \"76\", viewBox: \"0 0 58 76\", children: _jsx(\"rect\", { fill: \"#FFF\", width: \"58\", height: \"76\", rx: \"3\", fillRule: \"evenodd\" }) })] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nexport default function RenderMetaFields(props) {\n const { computedMetaFields, requiredMetaFields, updateMeta, form, formState, } = props;\n const fieldCSSClasses = {\n text: 'uppy-u-reset uppy-c-textInput uppy-Dashboard-FileCard-input',\n };\n return computedMetaFields.map((field) => {\n const id = `uppy-Dashboard-FileCard-input-${field.id}`;\n const required = requiredMetaFields.includes(field.id);\n return (_jsxs(\"fieldset\", { className: \"uppy-Dashboard-FileCard-fieldset\", children: [_jsx(\"label\", { className: \"uppy-Dashboard-FileCard-label\", htmlFor: id, children: field.name }), field.render !== undefined ? (field.render({\n value: formState[field.id],\n onChange: (newVal) => updateMeta(newVal, field.id),\n fieldCSSClasses,\n required,\n form: form.id,\n }, h)) : (_jsx(\"input\", { className: fieldCSSClasses.text, id: id, form: form.id, type: field.type || 'text', required: required, value: formState[field.id], placeholder: field.placeholder, onInput: (ev) => updateMeta(ev.target.value, field.id), \"data-uppy-super-focusable\": true }))] }, field.id));\n });\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport classNames from 'classnames';\nimport { nanoid } from 'nanoid/non-secure';\nimport { h } from 'preact';\nimport { useCallback, useEffect, useState } from 'preact/hooks';\nimport getFileTypeIcon from '../../utils/getFileTypeIcon.js';\nimport ignoreEvent from '../../utils/ignoreEvent.js';\nimport FilePreview from '../FilePreview.js';\nimport RenderMetaFields from './RenderMetaFields.js';\nexport default function FileCard(props) {\n const { files, fileCardFor, toggleFileCard, saveFileCard, metaFields, requiredMetaFields, openFileEditor, i18n, i18nArray, className, canEditFile, } = props;\n const getMetaFields = () => {\n return typeof metaFields === 'function'\n ? metaFields(files[fileCardFor])\n : metaFields;\n };\n const file = files[fileCardFor];\n const computedMetaFields = getMetaFields() ?? [];\n const showEditButton = canEditFile(file);\n const storedMetaData = {};\n computedMetaFields.forEach((field) => {\n storedMetaData[field.id] = file.meta[field.id] ?? '';\n });\n const [formState, setFormState] = useState(storedMetaData);\n const handleSave = useCallback((ev) => {\n ev.preventDefault();\n saveFileCard(formState, fileCardFor);\n }, [saveFileCard, formState, fileCardFor]);\n const updateMeta = (newVal, name) => {\n setFormState({\n ...formState,\n [name]: newVal,\n });\n };\n const handleCancel = () => {\n toggleFileCard(false);\n };\n const [form] = useState(() => {\n const formEl = document.createElement('form');\n formEl.setAttribute('tabindex', '-1');\n formEl.id = nanoid();\n return formEl;\n });\n useEffect(() => {\n document.body.appendChild(form);\n form.addEventListener('submit', handleSave);\n return () => {\n form.removeEventListener('submit', handleSave);\n document.body.removeChild(form);\n };\n }, [form, handleSave]);\n return (\n // biome-ignore lint/a11y/noStaticElementInteractions: ...\n _jsxs(\"div\", { className: classNames('uppy-Dashboard-FileCard', className), \"data-uppy-panelType\": \"FileCard\", onDragOver: ignoreEvent, onDragLeave: ignoreEvent, onDrop: ignoreEvent, onPaste: ignoreEvent, children: [_jsxs(\"div\", { className: \"uppy-DashboardContent-bar\", children: [_jsx(\"div\", { className: \"uppy-DashboardContent-title\", \n // biome-ignore lint/a11y/useSemanticElements: ...\n role: \"heading\", \"aria-level\": 1, children: i18nArray('editing', {\n file: (_jsx(\"span\", { className: \"uppy-DashboardContent-titleFile\", children: file.meta ? file.meta.name : file.name })),\n }) }), _jsx(\"button\", { className: \"uppy-DashboardContent-back\", type: \"button\", form: form.id, title: i18n('finishEditingFile'), onClick: handleCancel, children: i18n('cancel') })] }), _jsxs(\"div\", { className: \"uppy-Dashboard-FileCard-inner\", children: [_jsxs(\"div\", { className: \"uppy-Dashboard-FileCard-preview\", style: { backgroundColor: getFileTypeIcon(file.type).color }, children: [_jsx(FilePreview, { file: file }), showEditButton && (_jsx(\"button\", { type: \"button\", className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-FileCard-edit\", onClick: (event) => {\n // When opening the image editor we want to save any meta fields changes.\n // Otherwise it's confusing for the user to click save in the editor,\n // but the changes here are discarded. This bypasses validation,\n // but we are okay with that.\n handleSave(event);\n openFileEditor(file);\n }, children: i18n('editImage') }))] }), _jsx(\"div\", { className: \"uppy-Dashboard-FileCard-info\", children: _jsx(RenderMetaFields, { computedMetaFields: computedMetaFields, requiredMetaFields: requiredMetaFields, updateMeta: updateMeta, form: form, formState: formState }) }), _jsxs(\"div\", { className: \"uppy-Dashboard-FileCard-actions\", children: [_jsx(\"button\", { className: \"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Dashboard-FileCard-actionsBtn\", \n // If `form` attribute is supported, we want a submit button to trigger the form validation.\n // Otherwise, fallback to a classic button with a onClick event handler.\n type: \"submit\", form: form.id, children: i18n('saveChanges') }), _jsx(\"button\", { className: \"uppy-u-reset uppy-c-btn uppy-c-btn-link uppy-Dashboard-FileCard-actionsBtn\", type: \"button\", onClick: handleCancel, form: form.id, children: i18n('cancel') })] })] })] }));\n}\n","function shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n if (!arrA || !arrB) {\n return false;\n }\n const len = arrA.length;\n if (arrB.length !== len) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction shallowEqualObjects(objA, objB) {\n if (objA === objB) {\n return true;\n }\n if (!objA || !objB) {\n return false;\n }\n const aKeys = Object.keys(objA);\n const bKeys = Object.keys(objB);\n const len = aKeys.length;\n if (bKeys.length !== len) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n const key = aKeys[i];\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n }\n return true;\n}\n\nfunction shallowEqual(a, b) {\n const aIsArr = Array.isArray(a);\n const bIsArr = Array.isArray(b);\n if (aIsArr !== bIsArr) {\n return false;\n }\n if (aIsArr && bIsArr) {\n return shallowEqualArrays(a, b);\n }\n return shallowEqualObjects(a, b);\n}\n\nexport { shallowEqual, shallowEqualArrays, shallowEqualObjects };\n//# sourceMappingURL=index.modern.mjs.map\n","/**\n * Copies text to clipboard by creating an almost invisible textarea,\n * adding text there, then running execCommand('copy').\n * Falls back to prompt() when the easy way fails (hello, Safari!)\n * From http://stackoverflow.com/a/30810322\n *\n * @param {string} textToCopy\n * @param {string} fallbackString\n * @returns {Promise}\n */\nexport default function copyToClipboard(textToCopy, fallbackString = 'Copy the URL below') {\n return new Promise((resolve) => {\n const textArea = document.createElement('textarea');\n textArea.setAttribute('style', {\n position: 'fixed',\n top: 0,\n left: 0,\n width: '2em',\n height: '2em',\n padding: 0,\n border: 'none',\n outline: 'none',\n boxShadow: 'none',\n background: 'transparent',\n });\n textArea.value = textToCopy;\n document.body.appendChild(textArea);\n textArea.select();\n const magicCopyFailed = () => {\n document.body.removeChild(textArea);\n window.prompt(fallbackString, textToCopy);\n resolve();\n };\n try {\n const successful = document.execCommand('copy');\n if (!successful) {\n return magicCopyFailed();\n }\n document.body.removeChild(textArea);\n return resolve();\n }\n catch (_err) {\n document.body.removeChild(textArea);\n return magicCopyFailed();\n }\n });\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nimport copyToClipboard from '../../../utils/copyToClipboard.js';\nfunction EditButton({ file, uploadInProgressOrComplete, metaFields, canEditFile, i18n, onClick, }) {\n if ((!uploadInProgressOrComplete && metaFields && metaFields.length > 0) ||\n (!uploadInProgressOrComplete && canEditFile(file))) {\n return (_jsx(\"button\", { className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-action uppy-Dashboard-Item-action--edit\", type: \"button\", \"aria-label\": i18n('editFileWithFilename', { file: file.meta.name }), title: i18n('editFileWithFilename', { file: file.meta.name }), onClick: () => onClick(), children: _jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: \"14\", height: \"14\", viewBox: \"0 0 14 14\", children: _jsxs(\"g\", { fillRule: \"evenodd\", children: [_jsx(\"path\", { d: \"M1.5 10.793h2.793A1 1 0 0 0 5 10.5L11.5 4a1 1 0 0 0 0-1.414L9.707.793a1 1 0 0 0-1.414 0l-6.5 6.5A1 1 0 0 0 1.5 8v2.793zm1-1V8L9 1.5l1.793 1.793-6.5 6.5H2.5z\", fillRule: \"nonzero\" }), _jsx(\"rect\", { x: \"1\", y: \"12.293\", width: \"11\", height: \"1\", rx: \".5\" }), _jsx(\"path\", { fillRule: \"nonzero\", d: \"M6.793 2.5L9.5 5.207l.707-.707L7.5 1.793z\" })] }) }) }));\n }\n return null;\n}\nfunction RemoveButton({ i18n, onClick, file, }) {\n return (_jsx(\"button\", { className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--remove\", type: \"button\", \"aria-label\": i18n('removeFile', { file: file.meta.name }), title: i18n('removeFile', { file: file.meta.name }), onClick: () => onClick(), children: _jsxs(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: \"18\", height: \"18\", viewBox: \"0 0 18 18\", children: [_jsx(\"path\", { d: \"M9 0C4.034 0 0 4.034 0 9s4.034 9 9 9 9-4.034 9-9-4.034-9-9-9z\" }), _jsx(\"path\", { fill: \"#FFF\", d: \"M13 12.222l-.778.778L9 9.778 5.778 13 5 12.222 8.222 9 5 5.778 5.778 5 9 8.222 12.222 5l.778.778L9.778 9z\" })] }) }));\n}\nfunction CopyLinkButton({ file, uppy, i18n, }) {\n const copyLinkToClipboard = (event) => {\n copyToClipboard(file.uploadURL, i18n('copyLinkToClipboardFallback'))\n .then(() => {\n uppy.log('Link copied to clipboard.');\n uppy.info(i18n('copyLinkToClipboardSuccess'), 'info', 3000);\n })\n .catch(uppy.log)\n // avoid losing focus\n .then(() => event.target.focus({ preventScroll: true }));\n };\n return (_jsx(\"button\", { className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--copyLink\", type: \"button\", \"aria-label\": i18n('copyLink'), title: i18n('copyLink'), onClick: (event) => copyLinkToClipboard(event), children: _jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: \"14\", height: \"14\", viewBox: \"0 0 14 12\", children: _jsx(\"path\", { d: \"M7.94 7.703a2.613 2.613 0 0 1-.626 2.681l-.852.851a2.597 2.597 0 0 1-1.849.766A2.616 2.616 0 0 1 2.764 7.54l.852-.852a2.596 2.596 0 0 1 2.69-.625L5.267 7.099a1.44 1.44 0 0 0-.833.407l-.852.851a1.458 1.458 0 0 0 1.03 2.486c.39 0 .755-.152 1.03-.426l.852-.852c.231-.231.363-.522.406-.824l1.04-1.038zm4.295-5.937A2.596 2.596 0 0 0 10.387 1c-.698 0-1.355.272-1.849.766l-.852.851a2.614 2.614 0 0 0-.624 2.688l1.036-1.036c.041-.304.173-.6.407-.833l.852-.852c.275-.275.64-.426 1.03-.426a1.458 1.458 0 0 1 1.03 2.486l-.852.851a1.442 1.442 0 0 1-.824.406l-1.04 1.04a2.596 2.596 0 0 0 2.683-.628l.851-.85a2.616 2.616 0 0 0 0-3.697zm-6.88 6.883a.577.577 0 0 0 .82 0l3.474-3.474a.579.579 0 1 0-.819-.82L5.355 7.83a.579.579 0 0 0 0 .819z\" }) }) }));\n}\nexport default function Buttons(props) {\n const { uppy, file, uploadInProgressOrComplete, canEditFile, metaFields, showLinkToFileUploadResult, showRemoveButton, i18n, toggleFileCard, openFileEditor, } = props;\n const editAction = () => {\n if (metaFields && metaFields.length > 0) {\n toggleFileCard(true, file.id);\n }\n else {\n openFileEditor(file);\n }\n };\n return (_jsxs(\"div\", { className: \"uppy-Dashboard-Item-actionWrapper\", children: [_jsx(EditButton, { i18n: i18n, file: file, uploadInProgressOrComplete: uploadInProgressOrComplete, canEditFile: canEditFile, metaFields: metaFields, onClick: editAction }), showLinkToFileUploadResult && file.uploadURL ? (_jsx(CopyLinkButton, { file: file, uppy: uppy, i18n: i18n })) : null, showRemoveButton ? (_jsx(RemoveButton, { i18n: i18n, file: file, onClick: () => uppy.removeFile(file.id) })) : null] }));\n}\n","/**\n * Truncates a string to the given number of chars (maxLength) by inserting '...' in the middle of that string.\n * Partially taken from https://stackoverflow.com/a/5723274/3192470.\n */\nconst separator = '...';\nexport default function truncateString(string, maxLength) {\n // Return the empty string if maxLength is zero\n if (maxLength === 0)\n return '';\n // Return original string if it's already shorter than maxLength\n if (string.length <= maxLength)\n return string;\n // Return truncated substring appended of the ellipsis char if string can't be meaningfully truncated\n if (maxLength <= separator.length + 1)\n return `${string.slice(0, maxLength - 1)}…`;\n const charsToShow = maxLength - separator.length;\n const frontChars = Math.ceil(charsToShow / 2);\n const backChars = Math.floor(charsToShow / 2);\n return string.slice(0, frontChars) + separator + string.slice(-backChars);\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nconst metaFieldIdToName = (metaFieldId, metaFields) => {\n const fields = typeof metaFields === 'function' ? metaFields() : metaFields;\n const field = fields.filter((f) => f.id === metaFieldId);\n return field[0].name;\n};\nexport default function MetaErrorMessage(props) {\n const { file, toggleFileCard, i18n, metaFields } = props;\n const { missingRequiredMetaFields } = file;\n if (!missingRequiredMetaFields?.length) {\n return null;\n }\n const metaFieldsString = missingRequiredMetaFields\n .map((missingMetaField) => metaFieldIdToName(missingMetaField, metaFields))\n .join(', ');\n return (_jsxs(\"div\", { className: \"uppy-Dashboard-Item-errorMessage\", children: [i18n('missingRequiredMetaFields', {\n smart_count: missingRequiredMetaFields.length,\n fields: metaFieldsString,\n }), ' ', _jsx(\"button\", { type: \"button\", class: \"uppy-u-reset uppy-Dashboard-Item-errorMessageBtn\", onClick: () => toggleFileCard(true, file.id), children: i18n('editFile') })] }));\n}\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport prettierBytes from '@transloadit/prettier-bytes';\nimport truncateString from '@uppy/utils/lib/truncateString';\nimport { h } from 'preact';\nimport MetaErrorMessage from '../MetaErrorMessage.js';\nconst renderFileName = (props) => {\n const { author, name } = props.file.meta;\n function getMaxNameLength() {\n if (props.isSingleFile && props.containerHeight >= 350) {\n return 90;\n }\n if (props.containerWidth <= 352) {\n return 35;\n }\n if (props.containerWidth <= 576) {\n return 60;\n }\n // When `author` is present, we want to make sure\n // the file name fits on one line so we can place\n // the author on the second line.\n return author ? 20 : 30;\n }\n return (_jsx(\"div\", { className: \"uppy-Dashboard-Item-name\", title: name, children: truncateString(name, getMaxNameLength()) }));\n};\nconst renderAuthor = (props) => {\n const { author } = props.file.meta;\n const providerName = props.file.remote?.providerName;\n const dot = `\\u00B7`;\n if (!author) {\n return null;\n }\n return (_jsxs(\"div\", { className: \"uppy-Dashboard-Item-author\", children: [_jsx(\"a\", { href: `${author.url}?utm_source=Companion&utm_medium=referral`, target: \"_blank\", rel: \"noopener noreferrer\", children: truncateString(author.name, 13) }), providerName ? (_jsxs(_Fragment, { children: [` ${dot} `, providerName, ` ${dot} `] })) : null] }));\n};\nconst renderFileSize = (props) => props.file.size && (_jsx(\"div\", { className: \"uppy-Dashboard-Item-statusSize\", children: prettierBytes(props.file.size) }));\nconst ReSelectButton = (props) => props.file.isGhost && (_jsxs(\"span\", { children: [' \\u2022 ', _jsx(\"button\", { className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-reSelect\", type: \"button\", onClick: () => props.toggleAddFilesPanel(true), children: props.i18n('reSelect') })] }));\nconst ErrorButton = ({ file, onClick, }) => {\n if (file.error) {\n return (_jsx(\"button\", { className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-errorDetails\", \"aria-label\": file.error, \"data-microtip-position\": \"bottom\", \"data-microtip-size\": \"medium\", onClick: onClick, type: \"button\", children: \"?\" }));\n }\n return null;\n};\nexport default function FileInfo(props) {\n const { file, i18n, toggleFileCard, metaFields, toggleAddFilesPanel, isSingleFile, containerHeight, containerWidth, } = props;\n return (_jsxs(\"div\", { className: \"uppy-Dashboard-Item-fileInfo\", \"data-uppy-file-source\": file.source, children: [_jsxs(\"div\", { className: \"uppy-Dashboard-Item-fileName\", children: [renderFileName({\n file,\n isSingleFile,\n containerHeight,\n containerWidth,\n }), _jsx(ErrorButton, { file: file, onClick: () => alert(file.error) })] }), _jsxs(\"div\", { className: \"uppy-Dashboard-Item-status\", children: [renderAuthor({ file }), renderFileSize({ file }), ReSelectButton({ file, toggleAddFilesPanel, i18n })] }), _jsx(MetaErrorMessage, { file: file, i18n: i18n, toggleFileCard: toggleFileCard, metaFields: metaFields })] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nimport getFileTypeIcon from '../../../utils/getFileTypeIcon.js';\nimport FilePreview from '../../FilePreview.js';\nimport MetaErrorMessage from '../MetaErrorMessage.js';\nexport default function FilePreviewAndLink(props) {\n const { file, i18n, toggleFileCard, metaFields, showLinkToFileUploadResult } = props;\n const white = 'rgba(255, 255, 255, 0.5)';\n const previewBackgroundColor = file.preview\n ? white\n : getFileTypeIcon(file.type).color;\n return (_jsxs(\"div\", { className: \"uppy-Dashboard-Item-previewInnerWrap\", style: { backgroundColor: previewBackgroundColor }, children: [showLinkToFileUploadResult && file.uploadURL && (_jsx(\"a\", { className: \"uppy-Dashboard-Item-previewLink\", href: file.uploadURL, rel: \"noreferrer noopener\", target: \"_blank\", \"aria-label\": file.meta.name, children: _jsx(\"span\", { hidden: true, children: file.meta.name }) })), _jsx(FilePreview, { file: file }), _jsx(MetaErrorMessage, { file: file, i18n: i18n, toggleFileCard: toggleFileCard, metaFields: metaFields })] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nfunction onPauseResumeCancelRetry(props) {\n if (props.isUploaded)\n return;\n if (props.error && !props.hideRetryButton) {\n props.uppy.retryUpload(props.file.id);\n return;\n }\n if (props.resumableUploads && !props.hidePauseResumeButton) {\n props.uppy.pauseResume(props.file.id);\n }\n else if (props.individualCancellation && !props.hideCancelButton) {\n props.uppy.removeFile(props.file.id);\n }\n}\nfunction progressIndicatorTitle(props) {\n if (props.isUploaded) {\n return props.i18n('uploadComplete');\n }\n if (props.error) {\n return props.i18n('retryUpload');\n }\n if (props.resumableUploads) {\n if (props.file.isPaused) {\n return props.i18n('resumeUpload');\n }\n return props.i18n('pauseUpload');\n }\n if (props.individualCancellation) {\n return props.i18n('cancelUpload');\n }\n return '';\n}\nfunction ProgressIndicatorButton(props) {\n return (_jsx(\"div\", { className: \"uppy-Dashboard-Item-progress\", children: _jsx(\"button\", { className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-progressIndicator\", type: \"button\", \"aria-label\": progressIndicatorTitle(props), title: progressIndicatorTitle(props), onClick: () => onPauseResumeCancelRetry(props), children: props.children }) }));\n}\nfunction ProgressCircleContainer({ children }) {\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"70\", height: \"70\", viewBox: \"0 0 36 36\", className: \"uppy-c-icon uppy-Dashboard-Item-progressIcon--circle\", children: children }));\n}\nfunction ProgressCircle({ progress }) {\n // circle length equals 2 * PI * R\n const circleLength = 2 * Math.PI * 15;\n return (_jsxs(\"g\", { children: [_jsx(\"circle\", { className: \"uppy-Dashboard-Item-progressIcon--bg\", r: \"15\", cx: \"18\", cy: \"18\", \"stroke-width\": \"2\", fill: \"none\" }), _jsx(\"circle\", { className: \"uppy-Dashboard-Item-progressIcon--progress\", r: \"15\", cx: \"18\", cy: \"18\", transform: \"rotate(-90, 18, 18)\", fill: \"none\", \"stroke-width\": \"2\", \"stroke-dasharray\": circleLength, \"stroke-dashoffset\": circleLength - (circleLength / 100) * progress })] }));\n}\nexport default function FileProgress(props) {\n // Nothing if upload has not started\n if (!props.file.progress.uploadStarted) {\n return null;\n }\n if (props.file.progress.percentage === undefined) {\n return null;\n }\n // Green checkmark when complete\n if (props.isUploaded) {\n return (_jsx(\"div\", { className: \"uppy-Dashboard-Item-progress\", children: _jsx(\"div\", { className: \"uppy-Dashboard-Item-progressIndicator\", children: _jsxs(ProgressCircleContainer, { children: [_jsx(\"circle\", { r: \"15\", cx: \"18\", cy: \"18\", fill: \"#1bb240\" }), _jsx(\"polygon\", { className: \"uppy-Dashboard-Item-progressIcon--check\", transform: \"translate(2, 3)\", points: \"14 22.5 7 15.2457065 8.99985857 13.1732815 14 18.3547104 22.9729883 9 25 11.1005634\" })] }) }) }));\n }\n if (props.recoveredState) {\n return null;\n }\n // Retry button for error\n if (props.error && !props.hideRetryButton) {\n return (_jsx(ProgressIndicatorButton, { ...props, children: _jsxs(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon uppy-Dashboard-Item-progressIcon--retry\", width: \"28\", height: \"31\", viewBox: \"0 0 16 19\", children: [_jsx(\"path\", { d: \"M16 11a8 8 0 1 1-8-8v2a6 6 0 1 0 6 6h2z\" }), _jsx(\"path\", { d: \"M7.9 3H10v2H7.9z\" }), _jsx(\"path\", { d: \"M8.536.5l3.535 3.536-1.414 1.414L7.12 1.914z\" }), _jsx(\"path\", { d: \"M10.657 2.621l1.414 1.415L8.536 7.57 7.12 6.157z\" })] }) }));\n }\n // Pause/resume button for resumable uploads\n if (props.resumableUploads && !props.hidePauseResumeButton) {\n return (_jsx(ProgressIndicatorButton, { ...props, children: _jsxs(ProgressCircleContainer, { children: [_jsx(ProgressCircle, { progress: props.file.progress.percentage }), props.file.isPaused ? (_jsx(\"polygon\", { className: \"uppy-Dashboard-Item-progressIcon--play\", transform: \"translate(3, 3)\", points: \"12 20 12 10 20 15\" })) : (_jsxs(\"g\", { className: \"uppy-Dashboard-Item-progressIcon--pause\", transform: \"translate(14.5, 13)\", children: [_jsx(\"rect\", { x: \"0\", y: \"0\", width: \"2\", height: \"10\", rx: \"0\" }), _jsx(\"rect\", { x: \"5\", y: \"0\", width: \"2\", height: \"10\", rx: \"0\" })] }))] }) }));\n }\n // Cancel button for non-resumable uploads if individualCancellation is supported (not bundled)\n if (!props.resumableUploads &&\n props.individualCancellation &&\n !props.hideCancelButton) {\n return (_jsx(ProgressIndicatorButton, { ...props, children: _jsxs(ProgressCircleContainer, { children: [_jsx(ProgressCircle, { progress: props.file.progress.percentage }), _jsx(\"polygon\", { className: \"cancel\", transform: \"translate(2, 2)\", points: \"19.8856516 11.0625 16 14.9481516 12.1019737 11.0625 11.0625 12.1143484 14.9481516 16 11.0625 19.8980263 12.1019737 20.9375 16 17.0518484 19.8856516 20.9375 20.9375 19.8980263 17.0518484 16 20.9375 12\" })] }) }));\n }\n // Just progress when buttons are disabled\n return (_jsx(\"div\", { className: \"uppy-Dashboard-Item-progress\", children: _jsx(\"div\", { className: \"uppy-Dashboard-Item-progressIndicator\", children: _jsx(ProgressCircleContainer, { children: _jsx(ProgressCircle, { progress: props.file.progress.percentage }) }) }) }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport classNames from 'classnames';\n// biome-ignore lint/style/useImportType: h is not a type\nimport { Component, h } from 'preact';\nimport { shallowEqualObjects } from 'shallow-equal';\nimport Buttons from './Buttons/index.js';\nimport FileInfo from './FileInfo/index.js';\nimport FilePreviewAndLink from './FilePreviewAndLink/index.js';\nimport FileProgress from './FileProgress/index.js';\nexport default class FileItem extends Component {\n componentDidMount() {\n const { file } = this.props;\n if (!file.preview) {\n this.props.handleRequestThumbnail(file);\n }\n }\n shouldComponentUpdate(nextProps) {\n return !shallowEqualObjects(this.props, nextProps);\n }\n // VirtualList mounts FileItems again and they emit `thumbnail:request`\n // Otherwise thumbnails are broken or missing after Golden Retriever restores files\n componentDidUpdate() {\n const { file } = this.props;\n if (!file.preview) {\n this.props.handleRequestThumbnail(file);\n }\n }\n componentWillUnmount() {\n const { file } = this.props;\n if (!file.preview) {\n this.props.handleCancelThumbnail(file);\n }\n }\n render() {\n const { file } = this.props;\n const isProcessing = file.progress.preprocess || file.progress.postprocess;\n const isUploaded = !!file.progress.uploadComplete && !isProcessing && !file.error;\n const uploadInProgressOrComplete = !!file.progress.uploadStarted || !!isProcessing;\n const uploadInProgress = (file.progress.uploadStarted && !file.progress.uploadComplete) ||\n isProcessing;\n const error = file.error || false;\n // File that Golden Retriever was able to partly restore (only meta, not blob),\n // users still need to re-add it, so it’s a ghost\n const { isGhost } = file;\n let showRemoveButton = this.props.individualCancellation\n ? !isUploaded\n : !uploadInProgress && !isUploaded;\n if (isUploaded && this.props.showRemoveButtonAfterComplete) {\n showRemoveButton = true;\n }\n const dashboardItemClass = classNames({\n 'uppy-Dashboard-Item': true,\n 'is-inprogress': uploadInProgress && !this.props.recoveredState,\n 'is-processing': isProcessing,\n 'is-complete': isUploaded,\n 'is-error': !!error,\n 'is-resumable': this.props.resumableUploads,\n 'is-noIndividualCancellation': !this.props.individualCancellation,\n 'is-ghost': isGhost,\n });\n return (_jsxs(\"div\", { className: dashboardItemClass, id: `uppy_${file.id}`, role: this.props.role, children: [_jsxs(\"div\", { className: \"uppy-Dashboard-Item-preview\", children: [_jsx(FilePreviewAndLink, { file: file, showLinkToFileUploadResult: this.props.showLinkToFileUploadResult, i18n: this.props.i18n, toggleFileCard: this.props.toggleFileCard, metaFields: this.props.metaFields }), _jsx(FileProgress, { uppy: this.props.uppy, file: file, error: error, isUploaded: isUploaded, hideRetryButton: this.props.hideRetryButton, hideCancelButton: this.props.hideCancelButton, hidePauseResumeButton: this.props.hidePauseResumeButton, recoveredState: this.props.recoveredState, resumableUploads: this.props.resumableUploads, individualCancellation: this.props.individualCancellation, i18n: this.props.i18n })] }), _jsxs(\"div\", { className: \"uppy-Dashboard-Item-fileInfoAndButtons\", children: [_jsx(FileInfo, { file: file, containerWidth: this.props.containerWidth, containerHeight: this.props.containerHeight, i18n: this.props.i18n, toggleAddFilesPanel: this.props.toggleAddFilesPanel, toggleFileCard: this.props.toggleFileCard, metaFields: this.props.metaFields, isSingleFile: this.props.isSingleFile }), _jsx(Buttons, { file: file, metaFields: this.props.metaFields, showLinkToFileUploadResult: this.props.showLinkToFileUploadResult, showRemoveButton: showRemoveButton, canEditFile: this.props.canEditFile, uploadInProgressOrComplete: uploadInProgressOrComplete, toggleFileCard: this.props.toggleFileCard, openFileEditor: this.props.openFileEditor, uppy: this.props.uppy, i18n: this.props.i18n })] })] }));\n }\n}\n","import { jsx as _jsx } from \"preact/jsx-runtime\";\n// @ts-ignore untyped\nimport VirtualList from '@uppy/utils/lib/VirtualList';\nimport { h } from 'preact';\nimport { useMemo } from 'preact/hooks';\nimport FileItem from './FileItem/index.js';\nfunction chunks(list, size) {\n const chunked = [];\n let currentChunk = [];\n list.forEach((item) => {\n if (currentChunk.length < size) {\n currentChunk.push(item);\n }\n else {\n chunked.push(currentChunk);\n currentChunk = [item];\n }\n });\n if (currentChunk.length)\n chunked.push(currentChunk);\n return chunked;\n}\nexport default function FileList({ id, i18n, uppy, files, resumableUploads, hideRetryButton, hidePauseResumeButton, hideCancelButton, showLinkToFileUploadResult, showRemoveButtonAfterComplete, metaFields, isSingleFile, toggleFileCard, handleRequestThumbnail, handleCancelThumbnail, recoveredState, individualCancellation, itemsPerRow, openFileEditor, canEditFile, toggleAddFilesPanel, containerWidth, containerHeight, }) {\n // It's not great that this is hardcoded!\n // It's ESPECIALLY not great that this is checking against `itemsPerRow`!\n const rowHeight = itemsPerRow === 1\n ? // Mobile\n 71\n : // 190px height + 2 * 5px margin\n 200;\n // Sort files by file.isGhost, ghost files first, only if recoveredState is present\n const rows = useMemo(() => {\n const sortByGhostComesFirst = (file1, file2) => Number(files[file2].isGhost) - Number(files[file1].isGhost);\n const fileIds = Object.keys(files);\n if (recoveredState)\n fileIds.sort(sortByGhostComesFirst);\n return chunks(fileIds, itemsPerRow);\n }, [files, itemsPerRow, recoveredState]);\n const renderRow = (row) => (_jsx(\"div\", { class: \"uppy-Dashboard-filesInner\", \n // The `role=\"presentation` attribute ensures that the list items are properly\n // associated with the `VirtualList` element.\n role: \"presentation\", children: row.map((fileID) => (_jsx(FileItem, { uppy: uppy, \n // FIXME This is confusing, it's actually the Dashboard's plugin ID\n id: id, \n // TODO move this to context\n i18n: i18n, \n // features\n resumableUploads: resumableUploads, individualCancellation: individualCancellation, \n // visual options\n hideRetryButton: hideRetryButton, hidePauseResumeButton: hidePauseResumeButton, hideCancelButton: hideCancelButton, showLinkToFileUploadResult: showLinkToFileUploadResult, showRemoveButtonAfterComplete: showRemoveButtonAfterComplete, metaFields: metaFields, recoveredState: recoveredState, isSingleFile: isSingleFile, containerWidth: containerWidth, containerHeight: containerHeight, \n // callbacks\n toggleFileCard: toggleFileCard, handleRequestThumbnail: handleRequestThumbnail, handleCancelThumbnail: handleCancelThumbnail, role: \"listitem\", openFileEditor: openFileEditor, canEditFile: canEditFile, toggleAddFilesPanel: toggleAddFilesPanel, file: files[fileID] }, fileID))) }, row[0]));\n if (isSingleFile) {\n return _jsx(\"div\", { class: \"uppy-Dashboard-files\", children: renderRow(rows[0]) });\n }\n return (_jsx(VirtualList, { class: \"uppy-Dashboard-files\", role: \"list\", data: rows, renderRow: renderRow, rowHeight: rowHeight }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport classNames from 'classnames';\nimport { h } from 'preact';\nimport { useRef } from 'preact/hooks';\nimport ignoreEvent from '../utils/ignoreEvent.js';\nfunction PickerPanelContent({ activePickerPanel, className, hideAllPanels, i18n, state, uppy, }) {\n const ref = useRef(null);\n return (_jsxs(\"div\", { className: classNames('uppy-DashboardContent-panel', className), role: \"tabpanel\", \"data-uppy-panelType\": \"PickerPanel\", id: `uppy-DashboardContent-panel--${activePickerPanel.id}`, onDragOver: ignoreEvent, onDragLeave: ignoreEvent, onDrop: ignoreEvent, onPaste: ignoreEvent, children: [_jsxs(\"div\", { className: \"uppy-DashboardContent-bar\", children: [_jsx(\"div\", { className: \"uppy-DashboardContent-title\", \n // biome-ignore lint/a11y/useSemanticElements: ...\n role: \"heading\", \"aria-level\": 1, children: i18n('importFrom', { name: activePickerPanel.name }) }), _jsx(\"button\", { className: \"uppy-DashboardContent-back\", type: \"button\", onClick: hideAllPanels, children: i18n('cancel') })] }), _jsx(\"div\", { ref: ref, className: \"uppy-DashboardContent-panelBody\", children: uppy.getPlugin(activePickerPanel.id).render(state, ref.current) })] }));\n}\nexport default PickerPanelContent;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nconst uploadStates = {\n STATE_ERROR: 'error',\n STATE_WAITING: 'waiting',\n STATE_PREPROCESSING: 'preprocessing',\n STATE_UPLOADING: 'uploading',\n STATE_POSTPROCESSING: 'postprocessing',\n STATE_COMPLETE: 'complete',\n STATE_PAUSED: 'paused',\n};\nfunction getUploadingState(isAllErrored, isAllComplete, isAllPaused, files = {}) {\n if (isAllErrored) {\n return uploadStates.STATE_ERROR;\n }\n if (isAllComplete) {\n return uploadStates.STATE_COMPLETE;\n }\n if (isAllPaused) {\n return uploadStates.STATE_PAUSED;\n }\n let state = uploadStates.STATE_WAITING;\n const fileIDs = Object.keys(files);\n for (let i = 0; i < fileIDs.length; i++) {\n const { progress } = files[fileIDs[i]];\n // If ANY files are being uploaded right now, show the uploading state.\n if (progress.uploadStarted && !progress.uploadComplete) {\n return uploadStates.STATE_UPLOADING;\n }\n // If files are being preprocessed AND postprocessed at this time, we show the\n // preprocess state. If any files are being uploaded we show uploading.\n if (progress.preprocess && state !== uploadStates.STATE_UPLOADING) {\n state = uploadStates.STATE_PREPROCESSING;\n }\n // If NO files are being preprocessed or uploaded right now, but some files are\n // being postprocessed, show the postprocess state.\n if (progress.postprocess &&\n state !== uploadStates.STATE_UPLOADING &&\n state !== uploadStates.STATE_PREPROCESSING) {\n state = uploadStates.STATE_POSTPROCESSING;\n }\n }\n return state;\n}\nfunction UploadStatus({ files, i18n, isAllComplete, isAllErrored, isAllPaused, inProgressNotPausedFiles, newFiles, processingFiles, }) {\n const uploadingState = getUploadingState(isAllErrored, isAllComplete, isAllPaused, files);\n switch (uploadingState) {\n case 'uploading':\n return i18n('uploadingXFiles', {\n smart_count: inProgressNotPausedFiles.length,\n });\n case 'preprocessing':\n case 'postprocessing':\n return i18n('processingXFiles', { smart_count: processingFiles.length });\n case 'paused':\n return i18n('uploadPaused');\n case 'waiting':\n return i18n('xFilesSelected', { smart_count: newFiles.length });\n case 'complete':\n return i18n('uploadComplete');\n case 'error':\n return i18n('error');\n default:\n }\n}\nfunction PanelTopBar(props) {\n const { i18n, isAllComplete, hideCancelButton, maxNumberOfFiles, toggleAddFilesPanel, uppy, } = props;\n let { allowNewUpload } = props;\n // TODO maybe this should be done in ../Dashboard.js, then just pass that down as `allowNewUpload`\n if (allowNewUpload && maxNumberOfFiles) {\n allowNewUpload = props.totalFileCount < props.maxNumberOfFiles;\n }\n return (_jsxs(\"div\", { className: \"uppy-DashboardContent-bar\", children: [!isAllComplete && !hideCancelButton ? (_jsx(\"button\", { className: \"uppy-DashboardContent-back\", type: \"button\", onClick: () => uppy.cancelAll(), children: i18n('cancel') })) : (_jsx(\"div\", {})), _jsx(\"div\", { className: \"uppy-DashboardContent-title\", children: _jsx(UploadStatus, { ...props }) }), allowNewUpload ? (_jsxs(\"button\", { className: \"uppy-DashboardContent-addMore\", type: \"button\", \"aria-label\": i18n('addMoreFiles'), title: i18n('addMoreFiles'), onClick: () => toggleAddFilesPanel(true), children: [_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon\", width: \"15\", height: \"15\", viewBox: \"0 0 15 15\", children: _jsx(\"path\", { d: \"M8 6.5h6a.5.5 0 0 1 .5.5v.5a.5.5 0 0 1-.5.5H8v6a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V8h-6a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5h6v-6A.5.5 0 0 1 7 0h.5a.5.5 0 0 1 .5.5v6z\" }) }), _jsx(\"span\", { className: \"uppy-DashboardContent-addMoreCaption\", children: i18n('addMore') })] })) : (_jsx(\"div\", {}))] }));\n}\nexport default PanelTopBar;\n","import classNames from 'classnames';\nimport { cloneElement, h, toChildArray, } from 'preact';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nconst transitionName = 'uppy-transition-slideDownUp';\nconst duration = 250;\n/**\n * Vertical slide transition.\n *\n * This can take a _single_ child component, which _must_ accept a `className` prop.\n *\n * Currently this is specific to the `uppy-transition-slideDownUp` transition,\n * but it should be simple to extend this for any type of single-element\n * transition by setting the CSS name and duration as props.\n */\nfunction Slide({ children }) {\n const [cachedChildren, setCachedChildren] = useState(null);\n const [className, setClassName] = useState('');\n const enterTimeoutRef = useRef();\n const leaveTimeoutRef = useRef();\n const animationFrameRef = useRef();\n const handleEnterTransition = () => {\n setClassName(`${transitionName}-enter`);\n cancelAnimationFrame(animationFrameRef.current);\n clearTimeout(leaveTimeoutRef.current);\n leaveTimeoutRef.current = undefined;\n animationFrameRef.current = requestAnimationFrame(() => {\n setClassName(`${transitionName}-enter ${transitionName}-enter-active`);\n enterTimeoutRef.current = setTimeout(() => {\n setClassName('');\n }, duration);\n });\n };\n const handleLeaveTransition = () => {\n setClassName(`${transitionName}-leave`);\n cancelAnimationFrame(animationFrameRef.current);\n clearTimeout(enterTimeoutRef.current);\n enterTimeoutRef.current = undefined;\n animationFrameRef.current = requestAnimationFrame(() => {\n setClassName(`${transitionName}-leave ${transitionName}-leave-active`);\n leaveTimeoutRef.current = setTimeout(() => {\n setCachedChildren(null);\n setClassName('');\n }, duration);\n });\n };\n useEffect(() => {\n const child = toChildArray(children)[0];\n if (cachedChildren === child)\n return;\n if (child && !cachedChildren) {\n handleEnterTransition();\n }\n else if (cachedChildren && !child && !leaveTimeoutRef.current) {\n handleLeaveTransition();\n }\n setCachedChildren(child);\n }, [children, cachedChildren]); // Dependency array to trigger effect on children change\n useEffect(() => {\n return () => {\n clearTimeout(enterTimeoutRef.current);\n clearTimeout(leaveTimeoutRef.current);\n cancelAnimationFrame(animationFrameRef.current);\n };\n }, []); // Cleanup useEffect\n if (!cachedChildren)\n return null;\n return cloneElement(cachedChildren, {\n className: classNames(className, cachedChildren.props.className),\n });\n}\nexport default Slide;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport isDragDropSupported from '@uppy/utils/lib/isDragDropSupported';\nimport classNames from 'classnames';\nimport { h } from 'preact';\nimport AddFiles from './AddFiles.js';\nimport AddFilesPanel from './AddFilesPanel.js';\nimport EditorPanel from './EditorPanel.js';\nimport FileCard from './FileCard/index.js';\nimport FileList from './FileList.js';\nimport PickerPanelContent from './PickerPanelContent.js';\nimport PanelTopBar from './PickerPanelTopBar.js';\nimport Slide from './Slide.js';\n// http://dev.edenspiekermann.com/2016/02/11/introducing-accessible-modal-dialog\n// https://github.com/ghosh/micromodal\nconst WIDTH_XL = 900;\nconst WIDTH_LG = 700;\nconst WIDTH_MD = 576;\nconst HEIGHT_MD = 330;\nexport default function Dashboard(props) {\n const isNoFiles = props.totalFileCount === 0;\n const isSingleFile = props.totalFileCount === 1;\n const isSizeMD = props.containerWidth > WIDTH_MD;\n const isSizeHeightMD = props.containerHeight > HEIGHT_MD;\n const dashboardClassName = classNames({\n 'uppy-Dashboard': true,\n 'uppy-Dashboard--isDisabled': props.disabled,\n 'uppy-Dashboard--animateOpenClose': props.animateOpenClose,\n 'uppy-Dashboard--isClosing': props.isClosing,\n 'uppy-Dashboard--isDraggingOver': props.isDraggingOver,\n 'uppy-Dashboard--modal': !props.inline,\n 'uppy-size--md': props.containerWidth > WIDTH_MD,\n 'uppy-size--lg': props.containerWidth > WIDTH_LG,\n 'uppy-size--xl': props.containerWidth > WIDTH_XL,\n 'uppy-size--height-md': props.containerHeight > HEIGHT_MD,\n // We might want to enable this in the future\n // 'uppy-size--height-lg': props.containerHeight > HEIGHT_LG,\n // 'uppy-size--height-xl': props.containerHeight > HEIGHT_XL,\n 'uppy-Dashboard--isAddFilesPanelVisible': props.showAddFilesPanel,\n 'uppy-Dashboard--isInnerWrapVisible': props.areInsidesReadyToBeVisible,\n // Only enable “centered single file” mode when Dashboard is tall enough\n 'uppy-Dashboard--singleFile': props.singleFileFullScreen && isSingleFile && isSizeHeightMD,\n });\n // Important: keep these in sync with the percent width values in `src/components/FileItem/index.scss`.\n let itemsPerRow = 1; // mobile\n if (props.containerWidth > WIDTH_XL) {\n itemsPerRow = 5;\n }\n else if (props.containerWidth > WIDTH_LG) {\n itemsPerRow = 4;\n }\n else if (props.containerWidth > WIDTH_MD) {\n itemsPerRow = 3;\n }\n const showFileList = props.showSelectedFiles && !isNoFiles;\n const numberOfFilesForRecovery = props.recoveredState\n ? Object.keys(props.recoveredState.files).length\n : null;\n const numberOfGhosts = props.files\n ? Object.keys(props.files).filter((fileID) => props.files[fileID].isGhost)\n .length\n : 0;\n const renderRestoredText = () => {\n if (numberOfGhosts > 0) {\n return props.i18n('recoveredXFiles', {\n smart_count: numberOfGhosts,\n });\n }\n return props.i18n('recoveredAllFiles');\n };\n const dashboard = (\n // biome-ignore lint/a11y/useAriaPropsSupportedByRole: ...\n _jsxs(\"div\", { className: dashboardClassName, \"data-uppy-theme\": props.theme, \"data-uppy-num-acquirers\": props.acquirers.length, \"data-uppy-drag-drop-supported\": !props.disableLocalFiles && isDragDropSupported(), \"aria-hidden\": props.inline ? 'false' : props.isHidden, \"aria-disabled\": props.disabled, \"aria-label\": !props.inline\n ? props.i18n('dashboardWindowTitle')\n : props.i18n('dashboardTitle'), onPaste: props.handlePaste, onDragOver: props.handleDragOver, onDragLeave: props.handleDragLeave, onDrop: props.handleDrop, children: [_jsx(\"div\", { \"aria-hidden\": \"true\", className: \"uppy-Dashboard-overlay\", tabIndex: -1, onClick: props.handleClickOutside }), _jsxs(\"div\", { className: \"uppy-Dashboard-inner\", role: props.inline ? undefined : 'dialog', style: {\n width: props.inline && props.width ? props.width : '',\n height: props.inline && props.height ? props.height : '',\n }, children: [!props.inline ? (_jsx(\"button\", { className: \"uppy-u-reset uppy-Dashboard-close\", type: \"button\", \"aria-label\": props.i18n('closeModal'), title: props.i18n('closeModal'), onClick: props.closeModal, children: _jsx(\"span\", { \"aria-hidden\": \"true\", children: \"\\u00D7\" }) })) : null, _jsxs(\"div\", { className: \"uppy-Dashboard-innerWrap\", children: [_jsx(\"div\", { className: \"uppy-Dashboard-dropFilesHereHint\", children: props.i18n('dropHint') }), showFileList && _jsx(PanelTopBar, { ...props }), numberOfFilesForRecovery && (_jsxs(\"div\", { className: \"uppy-Dashboard-serviceMsg\", children: [_jsx(\"svg\", { className: \"uppy-Dashboard-serviceMsg-icon\", \"aria-hidden\": \"true\", focusable: \"false\", width: \"21\", height: \"16\", viewBox: \"0 0 24 19\", children: _jsxs(\"g\", { transform: \"translate(0 -1)\", fill: \"none\", fillRule: \"evenodd\", children: [_jsx(\"path\", { d: \"M12.857 1.43l10.234 17.056A1 1 0 0122.234 20H1.766a1 1 0 01-.857-1.514L11.143 1.429a1 1 0 011.714 0z\", fill: \"#FFD300\" }), _jsx(\"path\", { fill: \"#000\", d: \"M11 6h2l-.3 8h-1.4z\" }), _jsx(\"circle\", { fill: \"#000\", cx: \"12\", cy: \"17\", r: \"1\" })] }) }), _jsx(\"strong\", { className: \"uppy-Dashboard-serviceMsg-title\", children: props.i18n('sessionRestored') }), _jsx(\"div\", { className: \"uppy-Dashboard-serviceMsg-text\", children: renderRestoredText() })] })), showFileList ? (_jsx(FileList, { id: props.id, i18n: props.i18n, uppy: props.uppy, files: props.files, resumableUploads: props.resumableUploads, hideRetryButton: props.hideRetryButton, hidePauseResumeButton: props.hidePauseResumeButton, hideCancelButton: props.hideCancelButton, showLinkToFileUploadResult: props.showLinkToFileUploadResult, showRemoveButtonAfterComplete: props.showRemoveButtonAfterComplete, metaFields: props.metaFields, toggleFileCard: props.toggleFileCard, handleRequestThumbnail: props.handleRequestThumbnail, handleCancelThumbnail: props.handleCancelThumbnail, recoveredState: props.recoveredState, individualCancellation: props.individualCancellation, openFileEditor: props.openFileEditor, canEditFile: props.canEditFile, toggleAddFilesPanel: props.toggleAddFilesPanel, isSingleFile: isSingleFile, itemsPerRow: itemsPerRow, containerWidth: props.containerWidth, containerHeight: props.containerHeight })) : (_jsx(AddFiles, { i18n: props.i18n, i18nArray: props.i18nArray, acquirers: props.acquirers, handleInputChange: props.handleInputChange, maxNumberOfFiles: props.maxNumberOfFiles, allowedFileTypes: props.allowedFileTypes, showNativePhotoCameraButton: props.showNativePhotoCameraButton, showNativeVideoCameraButton: props.showNativeVideoCameraButton, nativeCameraFacingMode: props.nativeCameraFacingMode, showPanel: props.showPanel, activePickerPanel: props.activePickerPanel, disableLocalFiles: props.disableLocalFiles, fileManagerSelectionType: props.fileManagerSelectionType, note: props.note, proudlyDisplayPoweredByUppy: props.proudlyDisplayPoweredByUppy })), _jsx(Slide, { children: props.showAddFilesPanel ? (_jsx(AddFilesPanel, { ...props, isSizeMD: isSizeMD }, \"AddFiles\")) : null }), _jsx(Slide, { children: props.fileCardFor ? _jsx(FileCard, { ...props }, \"FileCard\") : null }), _jsx(Slide, { children: props.activePickerPanel ? (_jsx(PickerPanelContent, { ...props }, \"Picker\")) : null }), _jsx(Slide, { children: props.showFileEditor ? (_jsx(EditorPanel, { ...props }, \"Editor\")) : null }), _jsx(\"div\", { className: \"uppy-Dashboard-progressindicators\", children: props.progressindicators.map((target) => {\n // TODO\n // Here we're telling typescript all `this.type = 'progressindicator'` plugins inherit from `UIPlugin`\n // This is factually true in Uppy right now, but maybe it doesn't have to be\n return props.uppy.getPlugin(target.id).render(props.state);\n }) })] })] })] }));\n return dashboard;\n}\n","export default {\n strings: {\n // When `inline: false`, used as the screen reader label for the button that closes the modal.\n closeModal: 'Close Modal',\n // Used as the screen reader label for the plus (+) button that shows the “Add more files” screen\n addMoreFiles: 'Add more files',\n addingMoreFiles: 'Adding more files',\n // Used as the header for import panels, e.g., “Import from Google Drive”.\n importFrom: 'Import from %{name}',\n // When `inline: false`, used as the screen reader label for the dashboard modal.\n dashboardWindowTitle: 'Uppy Dashboard Window (Press escape to close)',\n // When `inline: true`, used as the screen reader label for the dashboard area.\n dashboardTitle: 'Uppy Dashboard',\n // Shown in the Informer when a link to a file was copied to the clipboard.\n copyLinkToClipboardSuccess: 'Link copied to clipboard.',\n // Used when a link cannot be copied automatically — the user has to select the text from the\n // input element below this string.\n copyLinkToClipboardFallback: 'Copy the URL below',\n // Used as the hover title and screen reader label for buttons that copy a file link.\n copyLink: 'Copy link',\n back: 'Back',\n // Used as the screen reader label for buttons that remove a file.\n removeFile: 'Remove file',\n // Used as the screen reader label for buttons that open the metadata editor panel for a file.\n editFile: 'Edit file',\n editImage: 'Edit image',\n // Shown in the panel header for the metadata editor. Rendered as “Editing image.png”.\n editing: 'Editing %{file}',\n // Shown on the main upload screen when an upload error occurs\n error: 'Error',\n // Used as the screen reader label for the button that saves metadata edits and returns to the\n // file list view.\n finishEditingFile: 'Finish editing file',\n saveChanges: 'Save changes',\n // Used as the label for the tab button that opens the system file selection dialog.\n myDevice: 'My Device',\n dropHint: 'Drop your files here',\n // Used as the hover text and screen reader label for file progress indicators when\n // they have been fully uploaded.\n uploadComplete: 'Upload complete',\n uploadPaused: 'Upload paused',\n // Used as the hover text and screen reader label for the buttons to resume paused uploads.\n resumeUpload: 'Resume upload',\n // Used as the hover text and screen reader label for the buttons to pause uploads.\n pauseUpload: 'Pause upload',\n // Used as the hover text and screen reader label for the buttons to retry failed uploads.\n retryUpload: 'Retry upload',\n // Used as the hover text and screen reader label for the buttons to cancel uploads.\n cancelUpload: 'Cancel upload',\n // Used in a title, how many files are currently selected\n xFilesSelected: {\n 0: '%{smart_count} file selected',\n 1: '%{smart_count} files selected',\n },\n uploadingXFiles: {\n 0: 'Uploading %{smart_count} file',\n 1: 'Uploading %{smart_count} files',\n },\n processingXFiles: {\n 0: 'Processing %{smart_count} file',\n 1: 'Processing %{smart_count} files',\n },\n // The \"powered by Uppy\" link at the bottom of the Dashboard.\n poweredBy: 'Powered by %{uppy}',\n addMore: 'Add more',\n editFileWithFilename: 'Edit file %{file}',\n save: 'Save',\n cancel: 'Cancel',\n dropPasteFiles: 'Drop files here or %{browseFiles}',\n dropPasteFolders: 'Drop files here or %{browseFolders}',\n dropPasteBoth: 'Drop files here, %{browseFiles} or %{browseFolders}',\n dropPasteImportFiles: 'Drop files here, %{browseFiles} or import from:',\n dropPasteImportFolders: 'Drop files here, %{browseFolders} or import from:',\n dropPasteImportBoth: 'Drop files here, %{browseFiles}, %{browseFolders} or import from:',\n importFiles: 'Import files from:',\n browseFiles: 'browse files',\n browseFolders: 'browse folders',\n recoveredXFiles: {\n 0: 'We could not fully recover 1 file. Please re-select it and resume the upload.',\n 1: 'We could not fully recover %{smart_count} files. Please re-select them and resume the upload.',\n },\n recoveredAllFiles: 'We restored all files. You can now resume the upload.',\n sessionRestored: 'Session restored',\n reSelect: 'Re-select',\n missingRequiredMetaFields: {\n 0: 'Missing required meta field: %{fields}.',\n 1: 'Missing required meta fields: %{fields}.',\n },\n // Used for native device camera buttons on mobile\n takePictureBtn: 'Take Picture',\n recordVideoBtn: 'Record Video',\n },\n};\n","export default [\n 'a[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])',\n 'area[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])',\n 'input:not([disabled]):not([inert]):not([aria-hidden])',\n 'select:not([disabled]):not([inert]):not([aria-hidden])',\n 'textarea:not([disabled]):not([inert]):not([aria-hidden])',\n 'button:not([disabled]):not([inert]):not([aria-hidden])',\n 'iframe:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])',\n 'object:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])',\n 'embed:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])',\n '[contenteditable]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])',\n '[tabindex]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])',\n];\n","/**\n * @returns {HTMLElement} - either dashboard element, or the overlay that's most on top\n */\nexport default function getActiveOverlayEl(dashboardEl, activeOverlayType) {\n if (activeOverlayType) {\n const overlayEl = dashboardEl.querySelector(`[data-uppy-paneltype=\"${activeOverlayType}\"]`);\n // if an overlay is already mounted\n if (overlayEl)\n return overlayEl;\n }\n return dashboardEl;\n}\n","// @ts-ignore untyped\nimport FOCUSABLE_ELEMENTS from '@uppy/utils/lib/FOCUSABLE_ELEMENTS';\nimport debounce from 'lodash/debounce.js';\nimport getActiveOverlayEl from './getActiveOverlayEl.js';\n/*\n Focuses on some element in the currently topmost overlay.\n\n 1. If there are some [data-uppy-super-focusable] elements rendered already - focuses\n on the first superfocusable element, and leaves focus up to the control of\n a user (until currently focused element disappears from the screen [which\n can happen when overlay changes, or, e.g., when we click on a folder in googledrive]).\n 2. If there are no [data-uppy-super-focusable] elements yet (or ever) - focuses\n on the first focusable element, but switches focus if superfocusable elements appear on next render.\n*/\nexport default function createSuperFocus() {\n let lastFocusWasOnSuperFocusableEl = false;\n const superFocus = (dashboardEl, activeOverlayType) => {\n const overlayEl = getActiveOverlayEl(dashboardEl, activeOverlayType);\n const isFocusInOverlay = overlayEl.contains(document.activeElement);\n // If focus is already in the topmost overlay, AND on last update we focused on the superfocusable\n // element - then leave focus up to the user.\n // [Practical check] without this line, typing in the search input in googledrive overlay won't work.\n if (isFocusInOverlay && lastFocusWasOnSuperFocusableEl)\n return;\n const superFocusableEl = overlayEl.querySelector('[data-uppy-super-focusable]');\n // If we are already in the topmost overlay, AND there are no super focusable elements yet, - leave focus up to the user.\n // [Practical check] without this line, if you are in an empty folder in google drive, and something's uploading in the\n // bg, - focus will be jumping to Done all the time.\n if (isFocusInOverlay && !superFocusableEl)\n return;\n if (superFocusableEl) {\n superFocusableEl.focus({ preventScroll: true });\n lastFocusWasOnSuperFocusableEl = true;\n }\n else {\n const firstEl = overlayEl.querySelector(FOCUSABLE_ELEMENTS);\n firstEl?.focus({ preventScroll: true });\n lastFocusWasOnSuperFocusableEl = false;\n }\n };\n // ___Why do we need to debounce?\n // 1. To deal with animations: overlay changes via animations, which results in the DOM updating AFTER plugin.update()\n // already executed.\n // [Practical check] without debounce, if we open the Url overlay, and click 'Done', Dashboard won't get focused again.\n // [Practical check] if we delay 250ms instead of 260ms - IE11 won't get focused in same situation.\n // 2. Performance: there can be many state update()s in a second, and this function is called every time.\n return debounce(superFocus, 260);\n}\n","// @ts-ignore untyped\nimport FOCUSABLE_ELEMENTS from '@uppy/utils/lib/FOCUSABLE_ELEMENTS';\nimport toArray from '@uppy/utils/lib/toArray';\nimport getActiveOverlayEl from './getActiveOverlayEl.js';\nfunction focusOnFirstNode(event, nodes) {\n const node = nodes[0];\n if (node) {\n node.focus();\n event.preventDefault();\n }\n}\nfunction focusOnLastNode(event, nodes) {\n const node = nodes[nodes.length - 1];\n if (node) {\n node.focus();\n event.preventDefault();\n }\n}\n// ___Why not just use (focusedItemIndex === -1)?\n// Firefox thinks <ul> is focusable, but we don't have <ul>s in our FOCUSABLE_ELEMENTS. Which means that if we tab into\n// the <ul>, code will think that we are not in the active overlay, and we should focusOnFirstNode() of the currently\n// active overlay!\n// [Practical check] if we use (focusedItemIndex === -1), instagram provider in firefox will never get focus on its pics\n// in the <ul>.\nfunction isFocusInOverlay(activeOverlayEl) {\n return activeOverlayEl.contains(document.activeElement);\n}\nfunction trapFocus(event, activeOverlayType, dashboardEl) {\n const activeOverlayEl = getActiveOverlayEl(dashboardEl, activeOverlayType);\n const focusableNodes = toArray(activeOverlayEl.querySelectorAll(FOCUSABLE_ELEMENTS));\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n // If we pressed tab, and focus is not yet within the current overlay - focus on\n // the first element within the current overlay.\n // This is a safety measure (for when user returns from another tab e.g.), most\n // plugins will try to focus on some important element as it loads.\n if (!isFocusInOverlay(activeOverlayEl)) {\n focusOnFirstNode(event, focusableNodes);\n // If we pressed shift + tab, and we're on the first element of a modal\n }\n else if (event.shiftKey && focusedItemIndex === 0) {\n focusOnLastNode(event, focusableNodes);\n // If we pressed tab, and we're on the last element of the modal\n }\n else if (!event.shiftKey &&\n focusedItemIndex === focusableNodes.length - 1) {\n focusOnFirstNode(event, focusableNodes);\n }\n}\n// Traps focus inside of the currently open overlay (e.g. Dashboard, or e.g. Instagram),\n// never lets focus disappear from the modal.\nexport { trapFocus as forModal };\n// Traps focus inside of the currently open overlay, unless overlay is null - then let the user tab away.\nexport function forInline(event, activeOverlayType, dashboardEl) {\n // ___When we're in the bare 'Drop files here, paste, browse or import from' screen\n if (activeOverlayType === null) {\n // Do nothing and let the browser handle it, user can tab away from Uppy to other elements on the page\n // ___When there is some overlay with 'Done' button\n }\n else {\n // Trap the focus inside this overlay!\n // User can close the overlay (click 'Done') if they want to travel away from Uppy.\n trapFocus(event, activeOverlayType, dashboardEl);\n }\n}\n","import { UIPlugin } from '@uppy/core';\nimport Informer from '@uppy/informer';\nimport { defaultPickerIcon } from '@uppy/provider-views';\nimport StatusBar from '@uppy/status-bar';\nimport ThumbnailGenerator from '@uppy/thumbnail-generator';\nimport findAllDOMElements from '@uppy/utils/lib/findAllDOMElements';\nimport getDroppedFiles from '@uppy/utils/lib/getDroppedFiles';\nimport toArray from '@uppy/utils/lib/toArray';\nimport { nanoid } from 'nanoid/non-secure';\nimport { h } from 'preact';\nimport packageJson from '../package.json' with { type: 'json' };\nimport DashboardUI from './components/Dashboard.js';\nimport locale from './locale.js';\nimport createSuperFocus from './utils/createSuperFocus.js';\nimport * as trapFocus from './utils/trapFocus.js';\nconst TAB_KEY = 9;\nconst ESC_KEY = 27;\nfunction createPromise() {\n const o = {};\n o.promise = new Promise((resolve, reject) => {\n o.resolve = resolve;\n o.reject = reject;\n });\n return o;\n}\nconst defaultOptions = {\n target: 'body',\n metaFields: [],\n thumbnailWidth: 280,\n thumbnailType: 'image/jpeg',\n waitForThumbnailsBeforeUpload: false,\n defaultPickerIcon,\n showLinkToFileUploadResult: false,\n showProgressDetails: false,\n hideUploadButton: false,\n hideCancelButton: false,\n hideRetryButton: false,\n hidePauseResumeButton: false,\n hideProgressAfterFinish: false,\n note: null,\n singleFileFullScreen: true,\n disableStatusBar: false,\n disableInformer: false,\n disableThumbnailGenerator: false,\n fileManagerSelectionType: 'files',\n proudlyDisplayPoweredByUppy: true,\n showSelectedFiles: true,\n showRemoveButtonAfterComplete: false,\n showNativePhotoCameraButton: false,\n showNativeVideoCameraButton: false,\n theme: 'light',\n autoOpen: null,\n disabled: false,\n disableLocalFiles: false,\n nativeCameraFacingMode: '',\n onDragLeave: () => { },\n onDragOver: () => { },\n onDrop: () => { },\n plugins: [],\n // Dynamic default options, they have to be defined in the constructor (because\n // they require access to the `this` keyword), but we still want them to\n // appear in the default options so TS knows they'll be defined.\n doneButtonHandler: undefined,\n onRequestCloseModal: null,\n // defaultModalOptions\n inline: false,\n animateOpenClose: true,\n browserBackButtonClose: false,\n closeAfterFinish: false,\n closeModalOnClickOutside: false,\n disablePageScrollWhenModalOpen: true,\n trigger: null,\n // defaultInlineOptions\n width: 750,\n height: 550,\n};\n/**\n * Dashboard UI with previews, metadata editing, tabs for various services and more\n */\nexport default class Dashboard extends UIPlugin {\n static VERSION = packageJson.version;\n #disabledNodes;\n modalName = `uppy-Dashboard-${nanoid()}`;\n superFocus = createSuperFocus();\n ifFocusedOnUppyRecently = false;\n dashboardIsDisabled;\n savedScrollPosition;\n savedActiveElement;\n resizeObserver;\n darkModeMediaQuery;\n // Timeouts\n makeDashboardInsidesVisibleAnywayTimeout;\n constructor(uppy, opts) {\n const autoOpen = opts?.autoOpen ?? null;\n super(uppy, { ...defaultOptions, ...opts, autoOpen });\n this.id = this.opts.id || 'Dashboard';\n this.title = 'Dashboard';\n this.type = 'orchestrator';\n this.defaultLocale = locale;\n // Dynamic default options:\n if (this.opts.doneButtonHandler === undefined) {\n // `null` means \"do not display a Done button\", while `undefined` means\n // \"I want the default behavior\". For this reason, we need to differentiate `null` and `undefined`.\n this.opts.doneButtonHandler = () => {\n this.uppy.clear();\n this.requestCloseModal();\n };\n }\n this.opts.onRequestCloseModal ??= () => this.closeModal();\n this.i18nInit();\n }\n removeTarget = (plugin) => {\n const pluginState = this.getPluginState();\n // filter out the one we want to remove\n const newTargets = pluginState.targets.filter((target) => target.id !== plugin.id);\n this.setPluginState({\n targets: newTargets,\n });\n };\n addTarget = (plugin) => {\n const callerPluginId = plugin.id || plugin.constructor.name;\n const callerPluginName = plugin.title || callerPluginId;\n const callerPluginType = plugin.type;\n if (callerPluginType !== 'acquirer' &&\n callerPluginType !== 'progressindicator' &&\n callerPluginType !== 'editor') {\n const msg = 'Dashboard: can only be targeted by plugins of types: acquirer, progressindicator, editor';\n this.uppy.log(msg, 'error');\n return null;\n }\n const target = {\n id: callerPluginId,\n name: callerPluginName,\n type: callerPluginType,\n };\n const state = this.getPluginState();\n const newTargets = state.targets.slice();\n newTargets.push(target);\n this.setPluginState({\n targets: newTargets,\n });\n return this.el;\n };\n hideAllPanels = () => {\n const state = this.getPluginState();\n const update = {\n activePickerPanel: undefined,\n showAddFilesPanel: false,\n activeOverlayType: null,\n fileCardFor: null,\n showFileEditor: false,\n };\n if (state.activePickerPanel === update.activePickerPanel &&\n state.showAddFilesPanel === update.showAddFilesPanel &&\n state.showFileEditor === update.showFileEditor &&\n state.activeOverlayType === update.activeOverlayType) {\n // avoid doing a state update if nothing changed\n return;\n }\n this.setPluginState(update);\n this.uppy.emit('dashboard:close-panel', state.activePickerPanel?.id);\n };\n showPanel = (id) => {\n const { targets } = this.getPluginState();\n const activePickerPanel = targets.find((target) => {\n return target.type === 'acquirer' && target.id === id;\n });\n this.setPluginState({\n activePickerPanel,\n activeOverlayType: 'PickerPanel',\n });\n this.uppy.emit('dashboard:show-panel', id);\n };\n canEditFile = (file) => {\n const { targets } = this.getPluginState();\n const editors = this.#getEditors(targets);\n return editors.some((target) => this.uppy.getPlugin(target.id).canEditFile(file));\n };\n openFileEditor = (file) => {\n const { targets } = this.getPluginState();\n const editors = this.#getEditors(targets);\n this.setPluginState({\n showFileEditor: true,\n fileCardFor: file.id || null,\n activeOverlayType: 'FileEditor',\n });\n editors.forEach((editor) => {\n ;\n this.uppy.getPlugin(editor.id).selectFile(file);\n });\n };\n closeFileEditor = () => {\n const { metaFields } = this.getPluginState();\n const isMetaEditorEnabled = metaFields && metaFields.length > 0;\n if (isMetaEditorEnabled) {\n this.setPluginState({\n showFileEditor: false,\n activeOverlayType: 'FileCard',\n });\n }\n else {\n this.setPluginState({\n showFileEditor: false,\n fileCardFor: null,\n activeOverlayType: 'AddFiles',\n });\n }\n };\n saveFileEditor = () => {\n const { targets } = this.getPluginState();\n const editors = this.#getEditors(targets);\n editors.forEach((editor) => {\n ;\n this.uppy.getPlugin(editor.id).save();\n });\n this.closeFileEditor();\n };\n openModal = () => {\n const { promise, resolve } = createPromise();\n // save scroll position\n this.savedScrollPosition = window.pageYOffset;\n // save active element, so we can restore focus when modal is closed\n this.savedActiveElement = document.activeElement;\n if (this.opts.disablePageScrollWhenModalOpen) {\n document.body.classList.add('uppy-Dashboard-isFixed');\n }\n if (this.opts.animateOpenClose && this.getPluginState().isClosing) {\n const handler = () => {\n this.setPluginState({\n isHidden: false,\n });\n this.el.removeEventListener('animationend', handler, false);\n resolve();\n };\n this.el.addEventListener('animationend', handler, false);\n }\n else {\n this.setPluginState({\n isHidden: false,\n });\n resolve();\n }\n if (this.opts.browserBackButtonClose) {\n this.updateBrowserHistory();\n }\n // handle ESC and TAB keys in modal dialog\n document.addEventListener('keydown', this.handleKeyDownInModal);\n this.uppy.emit('dashboard:modal-open');\n return promise;\n };\n closeModal = (opts) => {\n // Whether the modal is being closed by the user (`true`) or by other means (e.g. browser back button)\n const manualClose = opts?.manualClose ?? true;\n const { isHidden, isClosing } = this.getPluginState();\n if (isHidden || isClosing) {\n // short-circuit if animation is ongoing\n return undefined;\n }\n const { promise, resolve } = createPromise();\n if (this.opts.disablePageScrollWhenModalOpen) {\n document.body.classList.remove('uppy-Dashboard-isFixed');\n }\n if (this.opts.animateOpenClose) {\n this.setPluginState({\n isClosing: true,\n });\n const handler = () => {\n this.setPluginState({\n isHidden: true,\n isClosing: false,\n });\n this.superFocus.cancel();\n this.savedActiveElement.focus();\n this.el.removeEventListener('animationend', handler, false);\n resolve();\n };\n this.el.addEventListener('animationend', handler, false);\n }\n else {\n this.setPluginState({\n isHidden: true,\n });\n this.superFocus.cancel();\n this.savedActiveElement.focus();\n resolve();\n }\n // handle ESC and TAB keys in modal dialog\n document.removeEventListener('keydown', this.handleKeyDownInModal);\n if (manualClose) {\n if (this.opts.browserBackButtonClose) {\n // Make sure that the latest entry in the history state is our modal name\n if (history.state?.[this.modalName]) {\n // Go back in history to clear out the entry we created (ultimately closing the modal)\n history.back();\n }\n }\n }\n this.uppy.emit('dashboard:modal-closed');\n return promise;\n };\n isModalOpen = () => {\n return !this.getPluginState().isHidden || false;\n };\n requestCloseModal = () => {\n if (this.opts.onRequestCloseModal) {\n return this.opts.onRequestCloseModal();\n }\n return this.closeModal();\n };\n setDarkModeCapability = (isDarkModeOn) => {\n const { capabilities } = this.uppy.getState();\n this.uppy.setState({\n capabilities: {\n ...capabilities,\n darkMode: isDarkModeOn,\n },\n });\n };\n handleSystemDarkModeChange = (event) => {\n const isDarkModeOnNow = event.matches;\n this.uppy.log(`[Dashboard] Dark mode is ${isDarkModeOnNow ? 'on' : 'off'}`);\n this.setDarkModeCapability(isDarkModeOnNow);\n };\n toggleFileCard = (show, fileID) => {\n const file = this.uppy.getFile(fileID);\n if (show) {\n this.uppy.emit('dashboard:file-edit-start', file);\n }\n else {\n this.uppy.emit('dashboard:file-edit-complete', file);\n }\n this.setPluginState({\n fileCardFor: show ? fileID : null,\n activeOverlayType: show ? 'FileCard' : null,\n });\n };\n toggleAddFilesPanel = (show) => {\n this.setPluginState({\n showAddFilesPanel: show,\n activeOverlayType: show ? 'AddFiles' : null,\n });\n };\n addFiles = (files) => {\n const descriptors = files.map((file) => ({\n source: this.id,\n name: file.name,\n type: file.type,\n data: file,\n meta: {\n // path of the file relative to the ancestor directory the user selected.\n // e.g. 'docs/Old Prague/airbnb.pdf'\n relativePath: file.relativePath || file.webkitRelativePath || null,\n },\n }));\n try {\n this.uppy.addFiles(descriptors);\n }\n catch (err) {\n this.uppy.log(err);\n }\n };\n // ___Why make insides of Dashboard invisible until first ResizeObserver event is emitted?\n // ResizeOberserver doesn't emit the first resize event fast enough, users can see the jump from one .uppy-size-- to\n // another (e.g. in Safari)\n // ___Why not apply visibility property to .uppy-Dashboard-inner?\n // Because ideally, acc to specs, ResizeObserver should see invisible elements as of width 0. So even though applying\n // invisibility to .uppy-Dashboard-inner works now, it may not work in the future.\n startListeningToResize = () => {\n // Watch for Dashboard container (`.uppy-Dashboard-inner`) resize\n // and update containerWidth/containerHeight in plugin state accordingly.\n // Emits first event on initialization.\n this.resizeObserver = new ResizeObserver((entries) => {\n const uppyDashboardInnerEl = entries[0];\n const { width, height } = uppyDashboardInnerEl.contentRect;\n this.setPluginState({\n containerWidth: width,\n containerHeight: height,\n areInsidesReadyToBeVisible: true,\n });\n });\n this.resizeObserver.observe(this.el.querySelector('.uppy-Dashboard-inner'));\n // If ResizeObserver fails to emit an event telling us what size to use - default to the mobile view\n this.makeDashboardInsidesVisibleAnywayTimeout = setTimeout(() => {\n const pluginState = this.getPluginState();\n const isModalAndClosed = !this.opts.inline && pluginState.isHidden;\n if (\n // We might want to enable this in the future\n // if ResizeObserver hasn't yet fired,\n !pluginState.areInsidesReadyToBeVisible &&\n // and it's not due to the modal being closed\n !isModalAndClosed) {\n this.uppy.log('[Dashboard] resize event didn’t fire on time: defaulted to mobile layout', 'warning');\n this.setPluginState({\n areInsidesReadyToBeVisible: true,\n });\n }\n }, 1000);\n };\n stopListeningToResize = () => {\n this.resizeObserver.disconnect();\n clearTimeout(this.makeDashboardInsidesVisibleAnywayTimeout);\n };\n // Records whether we have been interacting with uppy right now,\n // which is then used to determine whether state updates should trigger a refocusing.\n recordIfFocusedOnUppyRecently = (event) => {\n if (this.el.contains(event.target)) {\n this.ifFocusedOnUppyRecently = true;\n }\n else {\n this.ifFocusedOnUppyRecently = false;\n // ___Why run this.superFocus.cancel here when it already runs in superFocusOnEachUpdate?\n // Because superFocus is debounced, when we move from Uppy to some other element on the page,\n // previously run superFocus sometimes hits and moves focus back to Uppy.\n this.superFocus.cancel();\n }\n };\n disableInteractiveElements = (disable) => {\n const NODES_TO_DISABLE = [\n 'a[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n '[role=\"button\"]:not([disabled])',\n ];\n const nodesToDisable = this.#disabledNodes ??\n toArray(this.el.querySelectorAll(NODES_TO_DISABLE)).filter((node) => !node.classList.contains('uppy-Dashboard-close'));\n for (const node of nodesToDisable) {\n // Links can’t have `disabled` attr, so we use `aria-disabled` for a11y\n if (node.tagName === 'A') {\n node.setAttribute('aria-disabled', disable);\n }\n else {\n node.disabled = disable;\n }\n }\n if (disable) {\n this.#disabledNodes = nodesToDisable;\n }\n else {\n this.#disabledNodes = null;\n }\n this.dashboardIsDisabled = disable;\n };\n updateBrowserHistory = () => {\n // Ensure history state does not already contain our modal name to avoid double-pushing\n if (!history.state?.[this.modalName]) {\n // Push to history so that the page is not lost on browser back button press\n history.pushState({\n ...history.state,\n [this.modalName]: true,\n }, '');\n }\n // Listen for back button presses\n window.addEventListener('popstate', this.handlePopState, false);\n };\n handlePopState = (event) => {\n // Close the modal if the history state no longer contains our modal name\n if (this.isModalOpen() && (!event.state || !event.state[this.modalName])) {\n this.closeModal({ manualClose: false });\n }\n // When the browser back button is pressed and uppy is now the latest entry\n // in the history but the modal is closed, fix the history by removing the\n // uppy history entry.\n // This occurs when another entry is added into the history state while the\n // modal is open, and then the modal gets manually closed.\n // Solves PR #575 (https://github.com/transloadit/uppy/pull/575)\n if (!this.isModalOpen() && event.state?.[this.modalName]) {\n history.back();\n }\n };\n handleKeyDownInModal = (event) => {\n // close modal on esc key press\n if (event.keyCode === ESC_KEY)\n this.requestCloseModal();\n // trap focus on tab key press\n if (event.keyCode === TAB_KEY)\n trapFocus.forModal(event, this.getPluginState().activeOverlayType, this.el);\n };\n handleClickOutside = () => {\n if (this.opts.closeModalOnClickOutside)\n this.requestCloseModal();\n };\n handlePaste = (event) => {\n // Let any acquirer plugin (Url/Webcam/etc.) handle pastes to the root\n this.uppy.iteratePlugins((plugin) => {\n if (plugin.type === 'acquirer') {\n // Every Plugin with .type acquirer can define handleRootPaste(event)\n ;\n plugin.handleRootPaste?.(event);\n }\n });\n // Add all dropped files\n const files = toArray(event.clipboardData.files);\n if (files.length > 0) {\n this.uppy.log('[Dashboard] Files pasted');\n this.addFiles(files);\n }\n };\n handleInputChange = (event) => {\n event.preventDefault();\n const files = toArray(event.currentTarget.files || []);\n if (files.length > 0) {\n this.uppy.log('[Dashboard] Files selected through input');\n this.addFiles(files);\n }\n };\n handleDragOver = (event) => {\n event.preventDefault();\n event.stopPropagation();\n // Check if some plugin can handle the datatransfer without files —\n // for instance, the Url plugin can import a url\n const canSomePluginHandleRootDrop = () => {\n let somePluginCanHandleRootDrop = true;\n this.uppy.iteratePlugins((plugin) => {\n if (plugin.canHandleRootDrop?.(event)) {\n somePluginCanHandleRootDrop = true;\n }\n });\n return somePluginCanHandleRootDrop;\n };\n // Check if the \"type\" of the datatransfer object includes files\n const doesEventHaveFiles = () => {\n const { types } = event.dataTransfer;\n return types.some((type) => type === 'Files');\n };\n // Deny drop, if no plugins can handle datatransfer, there are no files,\n // or when opts.disabled is set, or new uploads are not allowed\n const somePluginCanHandleRootDrop = canSomePluginHandleRootDrop();\n const hasFiles = doesEventHaveFiles();\n if ((!somePluginCanHandleRootDrop && !hasFiles) ||\n this.opts.disabled ||\n // opts.disableLocalFiles should only be taken into account if no plugins\n // can handle the datatransfer\n (this.opts.disableLocalFiles &&\n (hasFiles || !somePluginCanHandleRootDrop)) ||\n !this.uppy.getState().allowNewUpload) {\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n // Add a small (+) icon on drop\n // (and prevent browsers from interpreting this as files being _moved_ into the\n // browser, https://github.com/transloadit/uppy/issues/1978).\n event.dataTransfer.dropEffect = 'copy';\n this.setPluginState({ isDraggingOver: true });\n this.opts.onDragOver(event);\n };\n handleDragLeave = (event) => {\n event.preventDefault();\n event.stopPropagation();\n this.setPluginState({ isDraggingOver: false });\n this.opts.onDragLeave(event);\n };\n handleDrop = async (event) => {\n event.preventDefault();\n event.stopPropagation();\n this.setPluginState({ isDraggingOver: false });\n // Let any acquirer plugin (Url/Webcam/etc.) handle drops to the root\n this.uppy.iteratePlugins((plugin) => {\n if (plugin.type === 'acquirer') {\n // Every Plugin with .type acquirer can define handleRootDrop(event)\n ;\n plugin.handleRootDrop?.(event);\n }\n });\n // Add all dropped files\n let executedDropErrorOnce = false;\n const logDropError = (error) => {\n this.uppy.log(error, 'error');\n // In practice all drop errors are most likely the same,\n // so let's just show one to avoid overwhelming the user\n if (!executedDropErrorOnce) {\n this.uppy.info(error.message, 'error');\n executedDropErrorOnce = true;\n }\n };\n this.uppy.log('[Dashboard] Processing dropped files');\n // Add all dropped files\n const files = await getDroppedFiles(event.dataTransfer, { logDropError });\n if (files.length > 0) {\n this.uppy.log('[Dashboard] Files dropped');\n this.addFiles(files);\n }\n this.opts.onDrop(event);\n };\n handleRequestThumbnail = (file) => {\n if (!this.opts.waitForThumbnailsBeforeUpload) {\n this.uppy.emit('thumbnail:request', file);\n }\n };\n /**\n * We cancel thumbnail requests when a file item component unmounts to avoid\n * clogging up the queue when the user scrolls past many elements.\n */\n handleCancelThumbnail = (file) => {\n if (!this.opts.waitForThumbnailsBeforeUpload) {\n this.uppy.emit('thumbnail:cancel', file);\n }\n };\n handleKeyDownInInline = (event) => {\n // Trap focus on tab key press.\n if (event.keyCode === TAB_KEY)\n trapFocus.forInline(event, this.getPluginState().activeOverlayType, this.el);\n };\n // ___Why do we listen to the 'paste' event on a document instead of onPaste={props.handlePaste} prop,\n // or this.el.addEventListener('paste')?\n // Because (at least) Chrome doesn't handle paste if focus is on some button, e.g. 'My Device'.\n // => Therefore, the best option is to listen to all 'paste' events, and only react to them when we are focused on our\n // particular Uppy instance.\n // ___Why do we still need onPaste={props.handlePaste} for the DashboardUi?\n // Because if we click on the 'Drop files here' caption e.g., `document.activeElement` will be 'body'. Which means our\n // standard determination of whether we're pasting into our Uppy instance won't work.\n // => Therefore, we need a traditional onPaste={props.handlePaste} handler too.\n handlePasteOnBody = (event) => {\n const isFocusInOverlay = this.el.contains(document.activeElement);\n if (isFocusInOverlay) {\n this.handlePaste(event);\n }\n };\n handleComplete = ({ failed }) => {\n if (this.opts.closeAfterFinish && !failed?.length) {\n // All uploads are done\n this.requestCloseModal();\n }\n };\n handleCancelRestore = () => {\n this.uppy.emit('restore-canceled');\n };\n #generateLargeThumbnailIfSingleFile = () => {\n if (this.opts.disableThumbnailGenerator) {\n return;\n }\n const LARGE_THUMBNAIL = 600;\n const files = this.uppy.getFiles();\n if (files.length === 1) {\n const thumbnailGenerator = this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);\n thumbnailGenerator?.setOptions({ thumbnailWidth: LARGE_THUMBNAIL });\n const fileForThumbnail = { ...files[0], preview: undefined };\n thumbnailGenerator?.requestThumbnail(fileForThumbnail).then(() => {\n thumbnailGenerator?.setOptions({\n thumbnailWidth: this.opts.thumbnailWidth,\n });\n });\n }\n };\n #openFileEditorWhenFilesAdded = (files) => {\n const firstFile = files[0];\n const { metaFields } = this.getPluginState();\n const isMetaEditorEnabled = metaFields && metaFields.length > 0;\n const isImageEditorEnabled = this.canEditFile(firstFile);\n if (isMetaEditorEnabled && this.opts.autoOpen === 'metaEditor') {\n this.toggleFileCard(true, firstFile.id);\n }\n else if (isImageEditorEnabled && this.opts.autoOpen === 'imageEditor') {\n this.openFileEditor(firstFile);\n }\n };\n initEvents = () => {\n // Modal open button\n if (this.opts.trigger && !this.opts.inline) {\n const showModalTrigger = findAllDOMElements(this.opts.trigger);\n if (showModalTrigger) {\n showModalTrigger.forEach((trigger) => trigger.addEventListener('click', this.openModal));\n }\n else {\n this.uppy.log('Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options, unless you are planning to call `dashboard.openModal()` method yourself', 'warning');\n }\n }\n this.startListeningToResize();\n document.addEventListener('paste', this.handlePasteOnBody);\n this.uppy.on('plugin-added', this.#addSupportedPluginIfNoTarget);\n this.uppy.on('plugin-remove', this.removeTarget);\n this.uppy.on('file-added', this.hideAllPanels);\n this.uppy.on('dashboard:modal-closed', this.hideAllPanels);\n this.uppy.on('complete', this.handleComplete);\n this.uppy.on('files-added', this.#generateLargeThumbnailIfSingleFile);\n this.uppy.on('file-removed', this.#generateLargeThumbnailIfSingleFile);\n // ___Why fire on capture?\n // Because this.ifFocusedOnUppyRecently needs to change before onUpdate() fires.\n document.addEventListener('focus', this.recordIfFocusedOnUppyRecently, true);\n document.addEventListener('click', this.recordIfFocusedOnUppyRecently, true);\n if (this.opts.inline) {\n this.el.addEventListener('keydown', this.handleKeyDownInInline);\n }\n if (this.opts.autoOpen) {\n this.uppy.on('files-added', this.#openFileEditorWhenFilesAdded);\n }\n };\n removeEvents = () => {\n const showModalTrigger = findAllDOMElements(this.opts.trigger);\n if (!this.opts.inline && showModalTrigger) {\n showModalTrigger.forEach((trigger) => trigger.removeEventListener('click', this.openModal));\n }\n this.stopListeningToResize();\n document.removeEventListener('paste', this.handlePasteOnBody);\n window.removeEventListener('popstate', this.handlePopState, false);\n this.uppy.off('plugin-added', this.#addSupportedPluginIfNoTarget);\n this.uppy.off('plugin-remove', this.removeTarget);\n this.uppy.off('file-added', this.hideAllPanels);\n this.uppy.off('dashboard:modal-closed', this.hideAllPanels);\n this.uppy.off('complete', this.handleComplete);\n this.uppy.off('files-added', this.#generateLargeThumbnailIfSingleFile);\n this.uppy.off('file-removed', this.#generateLargeThumbnailIfSingleFile);\n document.removeEventListener('focus', this.recordIfFocusedOnUppyRecently);\n document.removeEventListener('click', this.recordIfFocusedOnUppyRecently);\n if (this.opts.inline) {\n this.el.removeEventListener('keydown', this.handleKeyDownInInline);\n }\n if (this.opts.autoOpen) {\n this.uppy.off('files-added', this.#openFileEditorWhenFilesAdded);\n }\n };\n superFocusOnEachUpdate = () => {\n const isFocusInUppy = this.el.contains(document.activeElement);\n // When focus is lost on the page (== focus is on body for most browsers, or focus is null for IE11)\n const isFocusNowhere = document.activeElement === document.body ||\n document.activeElement === null;\n const isInformerHidden = this.uppy.getState().info.length === 0;\n const isModal = !this.opts.inline;\n if (\n // If update is connected to showing the Informer - let the screen reader calmly read it.\n isInformerHidden &&\n // If we are in a modal - always superfocus without concern for other elements\n // on the page (user is unlikely to want to interact with the rest of the page)\n (isModal ||\n // If we are already inside of Uppy, or\n isFocusInUppy ||\n // If we are not focused on anything BUT we have already, at least once, focused on uppy\n // 1. We focus when isFocusNowhere, because when the element we were focused\n // on disappears (e.g. an overlay), - focus gets lost. If user is typing\n // something somewhere else on the page, - focus won't be 'nowhere'.\n // 2. We only focus when focus is nowhere AND this.ifFocusedOnUppyRecently,\n // to avoid focus jumps if we do something else on the page.\n // [Practical check] Without '&& this.ifFocusedOnUppyRecently', in Safari, in inline mode,\n // when file is uploading, - navigate via tab to the checkbox,\n // try to press space multiple times. Focus will jump to Uppy.\n (isFocusNowhere && this.ifFocusedOnUppyRecently))) {\n this.superFocus(this.el, this.getPluginState().activeOverlayType);\n }\n else {\n this.superFocus.cancel();\n }\n };\n afterUpdate = () => {\n if (this.opts.disabled && !this.dashboardIsDisabled) {\n this.disableInteractiveElements(true);\n return;\n }\n if (!this.opts.disabled && this.dashboardIsDisabled) {\n this.disableInteractiveElements(false);\n }\n this.superFocusOnEachUpdate();\n };\n saveFileCard = (meta, fileID) => {\n this.uppy.setFileMeta(fileID, meta);\n this.toggleFileCard(false, fileID);\n };\n #attachRenderFunctionToTarget = (target) => {\n const plugin = this.uppy.getPlugin(target.id);\n return {\n ...target,\n icon: plugin.icon || this.opts.defaultPickerIcon,\n render: plugin.render,\n };\n };\n #isTargetSupported = (target) => {\n const plugin = this.uppy.getPlugin(target.id);\n // If the plugin does not provide a `supported` check, assume the plugin works everywhere.\n if (typeof plugin.isSupported !== 'function') {\n return true;\n }\n return plugin.isSupported();\n };\n #getAcquirers = (targets) => {\n return targets\n .filter((target) => target.type === 'acquirer' && this.#isTargetSupported(target))\n .map(this.#attachRenderFunctionToTarget);\n };\n #getProgressIndicators = (targets) => {\n return targets\n .filter((target) => target.type === 'progressindicator')\n .map(this.#attachRenderFunctionToTarget);\n };\n #getEditors = (targets) => {\n return targets\n .filter((target) => target.type === 'editor')\n .map(this.#attachRenderFunctionToTarget);\n };\n render = (state) => {\n const pluginState = this.getPluginState();\n const { files, capabilities, allowNewUpload } = state;\n const { newFiles, uploadStartedFiles, completeFiles, erroredFiles, inProgressFiles, inProgressNotPausedFiles, processingFiles, isUploadStarted, isAllComplete, isAllPaused, } = this.uppy.getObjectOfFilesPerState();\n const acquirers = this.#getAcquirers(pluginState.targets);\n const progressindicators = this.#getProgressIndicators(pluginState.targets);\n const editors = this.#getEditors(pluginState.targets);\n let theme;\n if (this.opts.theme === 'auto') {\n theme = capabilities.darkMode ? 'dark' : 'light';\n }\n else {\n theme = this.opts.theme;\n }\n if (['files', 'folders', 'both'].indexOf(this.opts.fileManagerSelectionType) <\n 0) {\n this.opts.fileManagerSelectionType = 'files';\n console.warn(`Unsupported option for \"fileManagerSelectionType\". Using default of \"${this.opts.fileManagerSelectionType}\".`);\n }\n return DashboardUI({\n state,\n isHidden: pluginState.isHidden,\n files,\n newFiles,\n uploadStartedFiles,\n completeFiles,\n erroredFiles,\n inProgressFiles,\n inProgressNotPausedFiles,\n processingFiles,\n isUploadStarted,\n isAllComplete,\n isAllPaused,\n totalFileCount: Object.keys(files).length,\n totalProgress: state.totalProgress,\n allowNewUpload,\n acquirers,\n theme,\n disabled: this.opts.disabled,\n disableLocalFiles: this.opts.disableLocalFiles,\n direction: this.opts.direction,\n activePickerPanel: pluginState.activePickerPanel,\n showFileEditor: pluginState.showFileEditor,\n saveFileEditor: this.saveFileEditor,\n closeFileEditor: this.closeFileEditor,\n disableInteractiveElements: this.disableInteractiveElements,\n animateOpenClose: this.opts.animateOpenClose,\n isClosing: pluginState.isClosing,\n progressindicators,\n editors,\n autoProceed: this.uppy.opts.autoProceed,\n id: this.id,\n closeModal: this.requestCloseModal,\n handleClickOutside: this.handleClickOutside,\n handleInputChange: this.handleInputChange,\n handlePaste: this.handlePaste,\n inline: this.opts.inline,\n showPanel: this.showPanel,\n hideAllPanels: this.hideAllPanels,\n i18n: this.i18n,\n i18nArray: this.i18nArray,\n uppy: this.uppy,\n note: this.opts.note,\n recoveredState: state.recoveredState,\n metaFields: pluginState.metaFields,\n resumableUploads: capabilities.resumableUploads || false,\n individualCancellation: capabilities.individualCancellation,\n isMobileDevice: capabilities.isMobileDevice,\n fileCardFor: pluginState.fileCardFor,\n toggleFileCard: this.toggleFileCard,\n toggleAddFilesPanel: this.toggleAddFilesPanel,\n showAddFilesPanel: pluginState.showAddFilesPanel,\n saveFileCard: this.saveFileCard,\n openFileEditor: this.openFileEditor,\n canEditFile: this.canEditFile,\n width: this.opts.width,\n height: this.opts.height,\n showLinkToFileUploadResult: this.opts.showLinkToFileUploadResult,\n fileManagerSelectionType: this.opts.fileManagerSelectionType,\n proudlyDisplayPoweredByUppy: this.opts.proudlyDisplayPoweredByUppy,\n hideCancelButton: this.opts.hideCancelButton,\n hideRetryButton: this.opts.hideRetryButton,\n hidePauseResumeButton: this.opts.hidePauseResumeButton,\n showRemoveButtonAfterComplete: this.opts.showRemoveButtonAfterComplete,\n containerWidth: pluginState.containerWidth,\n containerHeight: pluginState.containerHeight,\n areInsidesReadyToBeVisible: pluginState.areInsidesReadyToBeVisible,\n parentElement: this.el,\n allowedFileTypes: this.uppy.opts.restrictions.allowedFileTypes,\n maxNumberOfFiles: this.uppy.opts.restrictions.maxNumberOfFiles,\n requiredMetaFields: this.uppy.opts.restrictions.requiredMetaFields,\n showSelectedFiles: this.opts.showSelectedFiles,\n showNativePhotoCameraButton: this.opts.showNativePhotoCameraButton,\n showNativeVideoCameraButton: this.opts.showNativeVideoCameraButton,\n nativeCameraFacingMode: this.opts.nativeCameraFacingMode,\n singleFileFullScreen: this.opts.singleFileFullScreen,\n handleCancelRestore: this.handleCancelRestore,\n handleRequestThumbnail: this.handleRequestThumbnail,\n handleCancelThumbnail: this.handleCancelThumbnail,\n // drag props\n isDraggingOver: pluginState.isDraggingOver,\n handleDragOver: this.handleDragOver,\n handleDragLeave: this.handleDragLeave,\n handleDrop: this.handleDrop,\n });\n };\n #addSpecifiedPluginsFromOptions = () => {\n const { plugins } = this.opts;\n plugins.forEach((pluginID) => {\n const plugin = this.uppy.getPlugin(pluginID);\n if (plugin) {\n ;\n plugin.mount(this, plugin);\n }\n else {\n this.uppy.log(`[Uppy] Dashboard could not find plugin '${pluginID}', make sure to uppy.use() the plugins you are specifying`, 'warning');\n }\n });\n };\n #autoDiscoverPlugins = () => {\n this.uppy.iteratePlugins(this.#addSupportedPluginIfNoTarget);\n };\n #addSupportedPluginIfNoTarget = (plugin) => {\n // Only these types belong on the Dashboard,\n // we wouldn’t want to try and mount Compressor or Tus, for example.\n const typesAllowed = ['acquirer', 'editor'];\n if (plugin && !plugin.opts?.target && typesAllowed.includes(plugin.type)) {\n const pluginAlreadyAdded = this.getPluginState().targets.some((installedPlugin) => plugin.id === installedPlugin.id);\n if (!pluginAlreadyAdded) {\n ;\n plugin.mount(this, plugin);\n }\n }\n };\n #getStatusBarOpts() {\n const { hideUploadButton, hideRetryButton, hidePauseResumeButton, hideCancelButton, showProgressDetails, hideProgressAfterFinish, locale: l, doneButtonHandler, } = this.opts;\n return {\n hideUploadButton,\n hideRetryButton,\n hidePauseResumeButton,\n hideCancelButton,\n showProgressDetails,\n hideAfterFinish: hideProgressAfterFinish,\n locale: l,\n doneButtonHandler,\n };\n }\n #getThumbnailGeneratorOpts() {\n const { thumbnailWidth, thumbnailHeight, thumbnailType, waitForThumbnailsBeforeUpload, } = this.opts;\n return {\n thumbnailWidth,\n thumbnailHeight,\n thumbnailType,\n waitForThumbnailsBeforeUpload,\n // If we don't block on thumbnails, we can lazily generate them\n lazy: !waitForThumbnailsBeforeUpload,\n };\n }\n #getInformerOpts() {\n return {\n // currently no options\n };\n }\n setOptions(opts) {\n super.setOptions(opts);\n this.uppy\n .getPlugin(this.#getStatusBarId())\n ?.setOptions(this.#getStatusBarOpts());\n this.uppy\n .getPlugin(this.#getThumbnailGeneratorId())\n ?.setOptions(this.#getThumbnailGeneratorOpts());\n }\n #getStatusBarId() {\n return `${this.id}:StatusBar`;\n }\n #getThumbnailGeneratorId() {\n return `${this.id}:ThumbnailGenerator`;\n }\n #getInformerId() {\n return `${this.id}:Informer`;\n }\n install = () => {\n // Set default state for Dashboard\n this.setPluginState({\n isHidden: true,\n fileCardFor: null,\n activeOverlayType: null,\n showAddFilesPanel: false,\n activePickerPanel: undefined,\n showFileEditor: false,\n metaFields: this.opts.metaFields,\n targets: [],\n // We'll make them visible once .containerWidth is determined\n areInsidesReadyToBeVisible: false,\n isDraggingOver: false,\n });\n const { inline, closeAfterFinish } = this.opts;\n if (inline && closeAfterFinish) {\n throw new Error('[Dashboard] `closeAfterFinish: true` cannot be used on an inline Dashboard, because an inline Dashboard cannot be closed at all. Either set `inline: false`, or disable the `closeAfterFinish` option.');\n }\n const { allowMultipleUploads, allowMultipleUploadBatches } = this.uppy.opts;\n if ((allowMultipleUploads || allowMultipleUploadBatches) &&\n closeAfterFinish) {\n this.uppy.log('[Dashboard] When using `closeAfterFinish`, we recommended setting the `allowMultipleUploadBatches` option to `false` in the Uppy constructor. See https://uppy.io/docs/uppy/#allowMultipleUploads-true', 'warning');\n }\n const { target } = this.opts;\n if (target) {\n this.mount(target, this);\n }\n if (!this.opts.disableStatusBar) {\n this.uppy.use(StatusBar, {\n id: this.#getStatusBarId(),\n target: this,\n ...this.#getStatusBarOpts(),\n });\n }\n if (!this.opts.disableInformer) {\n this.uppy.use(Informer, {\n id: this.#getInformerId(),\n target: this,\n ...this.#getInformerOpts(),\n });\n }\n if (!this.opts.disableThumbnailGenerator) {\n this.uppy.use(ThumbnailGenerator, {\n id: this.#getThumbnailGeneratorId(),\n ...this.#getThumbnailGeneratorOpts(),\n });\n }\n // Dark Mode / theme\n this.darkModeMediaQuery =\n typeof window !== 'undefined' && window.matchMedia\n ? window.matchMedia('(prefers-color-scheme: dark)')\n : null;\n const isDarkModeOnFromTheStart = this.darkModeMediaQuery\n ? this.darkModeMediaQuery.matches\n : false;\n this.uppy.log(`[Dashboard] Dark mode is ${isDarkModeOnFromTheStart ? 'on' : 'off'}`);\n this.setDarkModeCapability(isDarkModeOnFromTheStart);\n if (this.opts.theme === 'auto') {\n this.darkModeMediaQuery?.addListener(this.handleSystemDarkModeChange);\n }\n this.#addSpecifiedPluginsFromOptions();\n this.#autoDiscoverPlugins();\n this.initEvents();\n };\n uninstall = () => {\n if (!this.opts.disableInformer) {\n const informer = this.uppy.getPlugin(`${this.id}:Informer`);\n // Checking if this plugin exists, in case it was removed by uppy-core\n // before the Dashboard was.\n if (informer)\n this.uppy.removePlugin(informer);\n }\n if (!this.opts.disableStatusBar) {\n const statusBar = this.uppy.getPlugin(`${this.id}:StatusBar`);\n if (statusBar)\n this.uppy.removePlugin(statusBar);\n }\n if (!this.opts.disableThumbnailGenerator) {\n const thumbnail = this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);\n if (thumbnail)\n this.uppy.removePlugin(thumbnail);\n }\n const { plugins } = this.opts;\n plugins.forEach((pluginID) => {\n const plugin = this.uppy.getPlugin(pluginID);\n if (plugin)\n plugin.unmount();\n });\n if (this.opts.theme === 'auto') {\n this.darkModeMediaQuery?.removeListener(this.handleSystemDarkModeChange);\n }\n if (this.opts.disablePageScrollWhenModalOpen) {\n document.body.classList.remove('uppy-Dashboard-isFixed');\n }\n this.unmount();\n this.removeEvents();\n };\n}\n","export { default } from './Dashboard.js';\n","// List taken from React.HTMLAttributes supported properties:\n// https://unpkg.com/@types/react@17.0.22/index.d.js:1821\nconst reactSupportedHtmlAttr = [\n // React-specific Attributes\n 'defaultChecked',\n 'defaultValue',\n 'suppressContentEditableWarning',\n 'suppressHydrationWarning',\n 'dangerouslySetInnerHTML',\n // Standard HTML Attributes\n 'accessKey',\n 'className',\n 'contentEditable',\n 'contextMenu',\n 'dir',\n 'draggable',\n 'hidden',\n 'id',\n 'lang',\n 'placeholder',\n 'slot',\n 'spellCheck',\n 'style',\n 'tabIndex',\n 'title',\n 'translate',\n // Unknown\n 'radioGroup',\n // WAI-ARIA\n 'role',\n // RDFa Attributes\n 'about',\n 'datatype',\n 'inlist',\n 'prefix',\n 'property',\n 'resource',\n 'typeof',\n 'vocab',\n // Non-standard Attributes\n 'autoCapitalize',\n 'autoCorrect',\n 'autoSave',\n 'color',\n 'itemProp',\n 'itemScope',\n 'itemType',\n 'itemID',\n 'itemRef',\n 'results',\n 'security',\n 'unselectable',\n // Living Standard\n 'inputMode',\n 'is',\n // Clipboard Events\n 'onCopy',\n 'onCopyCapture',\n 'onCut',\n 'onCutCapture',\n 'onPaste',\n 'onPasteCapture',\n // Composition Events\n 'onCompositionEnd',\n 'onCompositionEndCapture',\n 'onCompositionStart',\n 'onCompositionStartCapture',\n 'onCompositionUpdate',\n 'onCompositionUpdateCapture',\n // Focus Events\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n // Form Events\n 'onChange',\n 'onChangeCapture',\n 'onBeforeInput',\n 'onBeforeInputCapture',\n 'onInput',\n 'onInputCapture',\n 'onReset',\n 'onResetCapture',\n 'onSubmit',\n 'onSubmitCapture',\n 'onInvalid',\n 'onInvalidCapture',\n // Image Events\n 'onLoad',\n 'onLoadCapture',\n 'onError', // also a Media Event\n 'onErrorCapture', // also a Media Event\n // Keyboard Events\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyPressCapture',\n 'onKeyUp',\n 'onKeyUpCapture',\n // Media Events\n 'onAbort',\n 'onAbortCapture',\n 'onCanPlay',\n 'onCanPlayCapture',\n 'onCanPlayThrough',\n 'onCanPlayThroughCapture',\n 'onDurationChange',\n 'onDurationChangeCapture',\n 'onEmptied',\n 'onEmptiedCapture',\n 'onEncrypted',\n 'onEncryptedCapture',\n 'onEnded',\n 'onEndedCapture',\n 'onLoadedData',\n 'onLoadedDataCapture',\n 'onLoadedMetadata',\n 'onLoadedMetadataCapture',\n 'onLoadStart',\n 'onLoadStartCapture',\n 'onPause',\n 'onPauseCapture',\n 'onPlay',\n 'onPlayCapture',\n 'onPlaying',\n 'onPlayingCapture',\n 'onProgress',\n 'onProgressCapture',\n 'onRateChange',\n 'onRateChangeCapture',\n 'onSeeked',\n 'onSeekedCapture',\n 'onSeeking',\n 'onSeekingCapture',\n 'onStalled',\n 'onStalledCapture',\n 'onSuspend',\n 'onSuspendCapture',\n 'onTimeUpdate',\n 'onTimeUpdateCapture',\n 'onVolumeChange',\n 'onVolumeChangeCapture',\n 'onWaiting',\n 'onWaitingCapture',\n // MouseEvents\n 'onAuxClick',\n 'onAuxClickCapture',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onContextMenuCapture',\n 'onDoubleClick',\n 'onDoubleClickCapture',\n 'onDrag',\n 'onDragCapture',\n 'onDragEnd',\n 'onDragEndCapture',\n 'onDragEnter',\n 'onDragEnterCapture',\n 'onDragExit',\n 'onDragExitCapture',\n 'onDragLeave',\n 'onDragLeaveCapture',\n 'onDragOver',\n 'onDragOverCapture',\n 'onDragStart',\n 'onDragStartCapture',\n 'onDrop',\n 'onDropCapture',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseMoveCapture',\n 'onMouseOut',\n 'onMouseOutCapture',\n 'onMouseOver',\n 'onMouseOverCapture',\n 'onMouseUp',\n 'onMouseUpCapture',\n // Selection Events\n 'onSelect',\n 'onSelectCapture',\n // Touch Events\n 'onTouchCancel',\n 'onTouchCancelCapture',\n 'onTouchEnd',\n 'onTouchEndCapture',\n 'onTouchMove',\n 'onTouchMoveCapture',\n 'onTouchStart',\n 'onTouchStartCapture',\n // Pointer Events\n 'onPointerDown',\n 'onPointerDownCapture',\n 'onPointerMove',\n 'onPointerMoveCapture',\n 'onPointerUp',\n 'onPointerUpCapture',\n 'onPointerCancel',\n 'onPointerCancelCapture',\n 'onPointerEnter',\n 'onPointerEnterCapture',\n 'onPointerLeave',\n 'onPointerLeaveCapture',\n 'onPointerOver',\n 'onPointerOverCapture',\n 'onPointerOut',\n 'onPointerOutCapture',\n 'onGotPointerCapture',\n 'onGotPointerCaptureCapture',\n 'onLostPointerCapture',\n 'onLostPointerCaptureCapture',\n // UI Events\n 'onScroll',\n 'onScrollCapture',\n // Wheel Events\n 'onWheel',\n 'onWheelCapture',\n // Animation Events\n 'onAnimationStart',\n 'onAnimationStartCapture',\n 'onAnimationEnd',\n 'onAnimationEndCapture',\n 'onAnimationIteration',\n 'onAnimationIterationCapture',\n // Transition Events\n 'onTransitionEnd',\n 'onTransitionEndCapture',\n];\nconst validHTMLAttribute = /^(aria-|data-)/;\nconst getHTMLProps = (props) => {\n // Gets all the React props\n return Object.fromEntries(Object.entries(props).filter(([key]) => validHTMLAttribute.test(key) || reactSupportedHtmlAttr.includes(key)));\n};\nexport default getHTMLProps;\n","import getHTMLProps from './getHTMLProps.js';\nexport default function nonHtmlPropsHaveChanged(props, prevProps) {\n // todo instead rewrite the components that use nonHtmlPropsHaveChanged\n // to hooks, so we can use useEffect on specific props instead of this hack\n const htmlProps = getHTMLProps(props);\n return Object.keys(props).some((key) => !Object.hasOwn(htmlProps, key) && props[key] !== prevProps[key]);\n}\n","import DashboardPlugin from '@uppy/dashboard';\nimport { Component, createElement as h } from 'react';\nimport getHTMLProps from './getHTMLProps.js';\nimport nonHtmlPropsHaveChanged from './nonHtmlPropsHaveChanged.js';\n/**\n * React Component that renders a Dashboard for an Uppy instance. This component\n * renders the Dashboard inline, so you can put it anywhere you want.\n */\nclass Dashboard extends Component {\n container;\n plugin;\n componentDidMount() {\n this.installPlugin();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.uppy !== this.props.uppy) {\n this.uninstallPlugin(prevProps);\n this.installPlugin();\n }\n else if (nonHtmlPropsHaveChanged(this.props, prevProps)) {\n const { uppy, ...options } = { ...this.props, target: this.container };\n this.plugin.setOptions(options);\n }\n }\n componentWillUnmount() {\n this.uninstallPlugin();\n }\n installPlugin() {\n const { uppy, ...options } = {\n id: 'Dashboard',\n ...this.props,\n inline: true,\n target: this.container,\n };\n uppy.use((DashboardPlugin), options);\n this.plugin = uppy.getPlugin(options.id);\n }\n uninstallPlugin(props = this.props) {\n const { uppy } = props;\n uppy.removePlugin(this.plugin);\n }\n render() {\n return h('div', {\n className: 'uppy-Container',\n ref: (container) => {\n this.container = container;\n },\n ...getHTMLProps(this.props),\n });\n }\n}\nexport default Dashboard;\n","import DashboardPlugin, {} from '@uppy/dashboard';\nimport { Component, createElement as h } from 'react';\nimport getHTMLProps from './getHTMLProps.js';\nimport nonHtmlPropsHaveChanged from './nonHtmlPropsHaveChanged.js';\n/**\n * React Component that renders a Dashboard for an Uppy instance in a Modal\n * dialog. Visibility of the Modal is toggled using the `open` prop.\n */\nclass DashboardModal extends Component {\n static defaultProps = {\n open: undefined,\n onRequestClose: undefined,\n };\n container;\n plugin;\n componentDidMount() {\n this.installPlugin();\n }\n componentDidUpdate(prevProps) {\n const { uppy, open, onRequestClose } = this.props;\n if (prevProps.uppy !== uppy) {\n this.uninstallPlugin(prevProps);\n this.installPlugin();\n }\n else if (nonHtmlPropsHaveChanged(this.props, prevProps)) {\n const { uppy, ...options } = {\n ...this.props,\n inline: false,\n onRequestCloseModal: onRequestClose,\n };\n this.plugin.setOptions(options);\n }\n if (prevProps.open && !open) {\n this.plugin.closeModal();\n }\n else if (!prevProps.open && open) {\n this.plugin.openModal();\n }\n }\n componentWillUnmount() {\n this.uninstallPlugin();\n }\n installPlugin() {\n const { target = this.container, open, onRequestClose, uppy, ...rest } = this.props;\n const options = {\n id: 'DashboardModal',\n ...rest,\n inline: false,\n target,\n open,\n onRequestCloseModal: onRequestClose,\n };\n uppy.use((DashboardPlugin), options);\n this.plugin = uppy.getPlugin(options.id);\n if (open) {\n this.plugin.openModal();\n }\n }\n uninstallPlugin(props = this.props) {\n const { uppy } = props;\n uppy.removePlugin(this.plugin);\n }\n render() {\n return h('div', {\n className: 'uppy-Container',\n ref: (container) => {\n this.container = container;\n },\n ...getHTMLProps(this.props),\n });\n }\n}\nexport default DashboardModal;\n","export default {\n strings: {\n // Text to show on the droppable area.\n // `%{browse}` is replaced with a link that opens the system file selection dialog.\n dropHereOr: 'Drop here or %{browse}',\n // Used as the label for the link that opens the system file selection dialog.\n browse: 'browse',\n },\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { UIPlugin } from '@uppy/core';\nimport getDroppedFiles from '@uppy/utils/lib/getDroppedFiles';\nimport isDragDropSupported from '@uppy/utils/lib/isDragDropSupported';\nimport toArray from '@uppy/utils/lib/toArray';\nimport { h } from 'preact';\nimport packageJson from '../package.json' with { type: 'json' };\nimport locale from './locale.js';\nconst defaultOptions = {\n inputName: 'files[]',\n width: '100%',\n height: '100%',\n};\n/**\n * Drag & Drop plugin\n *\n */\nexport default class DragDrop extends UIPlugin {\n static VERSION = packageJson.version;\n // Check for browser dragDrop support\n isDragDropSupported = isDragDropSupported();\n fileInputRef;\n constructor(uppy, opts) {\n super(uppy, {\n ...defaultOptions,\n ...opts,\n });\n this.type = 'acquirer';\n this.id = this.opts.id || 'DragDrop';\n this.title = 'Drag & Drop';\n this.defaultLocale = locale;\n this.i18nInit();\n }\n addFiles = (files) => {\n const descriptors = files.map((file) => ({\n source: this.id,\n name: file.name,\n type: file.type,\n data: file,\n meta: {\n // path of the file relative to the ancestor directory the user selected.\n // e.g. 'docs/Old Prague/airbnb.pdf'\n relativePath: file.relativePath || null,\n },\n }));\n try {\n this.uppy.addFiles(descriptors);\n }\n catch (err) {\n this.uppy.log(err);\n }\n };\n onInputChange = (event) => {\n const files = toArray(event.currentTarget.files || []);\n if (files.length > 0) {\n this.uppy.log('[DragDrop] Files selected through input');\n this.addFiles(files);\n }\n // Clear the input so that Chrome can detect file section when the same file is repeatedly selected\n // (see https://github.com/transloadit/uppy/issues/768#issuecomment-2264902758)\n event.currentTarget.value = '';\n };\n handleDragOver = (event) => {\n event.preventDefault();\n event.stopPropagation();\n // Check if the \"type\" of the datatransfer object includes files. If not, deny drop.\n const { types } = event.dataTransfer;\n const hasFiles = types.some((type) => type === 'Files');\n const { allowNewUpload } = this.uppy.getState();\n if (!hasFiles || !allowNewUpload) {\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n // Add a small (+) icon on drop\n // (and prevent browsers from interpreting this as files being _moved_ into the browser\n // https://github.com/transloadit/uppy/issues/1978)\n //\n event.dataTransfer.dropEffect = 'copy';\n this.setPluginState({ isDraggingOver: true });\n this.opts.onDragOver?.(event);\n };\n handleDragLeave = (event) => {\n event.preventDefault();\n event.stopPropagation();\n this.setPluginState({ isDraggingOver: false });\n this.opts.onDragLeave?.(event);\n };\n handleDrop = async (event) => {\n event.preventDefault();\n event.stopPropagation();\n this.setPluginState({ isDraggingOver: false });\n const logDropError = (error) => {\n this.uppy.log(error, 'error');\n };\n // Add all dropped files\n const files = await getDroppedFiles(event.dataTransfer, { logDropError });\n if (files.length > 0) {\n this.uppy.log('[DragDrop] Files dropped');\n this.addFiles(files);\n }\n this.opts.onDrop?.(event);\n };\n renderHiddenFileInput() {\n const { restrictions } = this.uppy.opts;\n return (_jsx(\"input\", { className: \"uppy-DragDrop-input\", type: \"file\", hidden: true, ref: (ref) => {\n this.fileInputRef = ref;\n }, name: this.opts.inputName, multiple: restrictions.maxNumberOfFiles !== 1, accept: restrictions.allowedFileTypes?.join(', '), onChange: this.onInputChange }));\n }\n static renderArrowSvg() {\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", className: \"uppy-c-icon uppy-DragDrop-arrow\", width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", children: _jsx(\"path\", { d: \"M11 10V0H5v10H2l6 6 6-6h-3zm0 0\", fillRule: \"evenodd\" }) }));\n }\n renderLabel() {\n return (_jsx(\"div\", { className: \"uppy-DragDrop-label\", children: this.i18nArray('dropHereOr', {\n browse: (_jsx(\"span\", { className: \"uppy-DragDrop-browse\", children: this.i18n('browse') })),\n }) }));\n }\n renderNote() {\n return _jsx(\"span\", { className: \"uppy-DragDrop-note\", children: this.opts.note });\n }\n render() {\n const dragDropClass = `uppy-u-reset\n uppy-DragDrop-container\n ${this.isDragDropSupported ? 'uppy-DragDrop--isDragDropSupported' : ''}\n ${this.getPluginState().isDraggingOver ? 'uppy-DragDrop--isDraggingOver' : ''}\n `;\n const dragDropStyle = {\n width: this.opts.width,\n height: this.opts.height,\n };\n return (_jsxs(\"button\", { type: \"button\", className: dragDropClass, style: dragDropStyle, onClick: () => this.fileInputRef.click(), onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop, children: [this.renderHiddenFileInput(), _jsxs(\"div\", { className: \"uppy-DragDrop-inner\", children: [DragDrop.renderArrowSvg(), this.renderLabel(), this.renderNote()] })] }));\n }\n install() {\n const { target } = this.opts;\n this.setPluginState({\n isDraggingOver: false,\n });\n if (target) {\n this.mount(target, this);\n }\n }\n uninstall() {\n this.unmount();\n }\n}\n","export { default } from './DragDrop.js';\n","import DragDropPlugin, {} from '@uppy/drag-drop';\nimport { Component, createElement as h } from 'react';\nimport getHTMLProps from './getHTMLProps.js';\nimport nonHtmlPropsHaveChanged from './nonHtmlPropsHaveChanged.js';\n/**\n * React component that renders an area in which files can be dropped to be\n * uploaded.\n */\nclass DragDrop extends Component {\n container;\n plugin;\n componentDidMount() {\n this.installPlugin();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.uppy !== this.props.uppy) {\n this.uninstallPlugin(prevProps);\n this.installPlugin();\n }\n else if (nonHtmlPropsHaveChanged(this.props, prevProps)) {\n const { uppy, ...options } = { ...this.props, target: this.container };\n this.plugin.setOptions(options);\n }\n }\n componentWillUnmount() {\n this.uninstallPlugin();\n }\n installPlugin() {\n const { uppy, locale, inputName, width, height, note, id } = this.props;\n const options = {\n id: id || 'DragDrop',\n locale,\n inputName,\n width,\n height,\n note,\n target: this.container,\n };\n uppy.use(DragDropPlugin, options);\n this.plugin = uppy.getPlugin(options.id);\n }\n uninstallPlugin(props = this.props) {\n const { uppy } = props;\n uppy.removePlugin(this.plugin);\n }\n render() {\n return h('div', {\n className: 'uppy-Container',\n ref: (container) => {\n this.container = container;\n },\n ...getHTMLProps(this.props),\n });\n }\n}\nexport default DragDrop;\n","export default {\n strings: {\n chooseFiles: 'Choose files',\n },\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { UIPlugin } from '@uppy/core';\nimport toArray from '@uppy/utils/lib/toArray';\n// biome-ignore lint/style/useImportType: h is not a type\nimport { h } from 'preact';\nimport packageJson from '../package.json' with { type: 'json' };\nimport locale from './locale.js';\nconst defaultOptions = {\n pretty: true,\n inputName: 'files[]',\n};\nexport default class FileInput extends UIPlugin {\n static VERSION = packageJson.version;\n input = null;\n constructor(uppy, opts) {\n super(uppy, { ...defaultOptions, ...opts });\n this.id = this.opts.id || 'FileInput';\n this.title = 'File Input';\n this.type = 'acquirer';\n this.defaultLocale = locale;\n this.i18nInit();\n this.render = this.render.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n addFiles(files) {\n const descriptors = files.map((file) => ({\n source: this.id,\n name: file.name,\n type: file.type,\n data: file,\n }));\n try {\n this.uppy.addFiles(descriptors);\n }\n catch (err) {\n this.uppy.log(err);\n }\n }\n handleInputChange(event) {\n this.uppy.log('[FileInput] Something selected through input...');\n const files = toArray(event.currentTarget.files || []);\n this.addFiles(files);\n // Clear the input so that Chrome can detect file section when the same file is repeatedly selected\n // (see https://github.com/transloadit/uppy/issues/768#issuecomment-2264902758)\n event.currentTarget.value = '';\n }\n handleClick() {\n this.input.click();\n }\n render() {\n /* http://tympanus.net/codrops/2015/09/15/styling-customizing-file-inputs-smart-way/ */\n const hiddenInputStyle = {\n width: '0.1px',\n height: '0.1px',\n opacity: 0,\n overflow: 'hidden',\n position: 'absolute',\n zIndex: -1,\n };\n const { restrictions } = this.uppy.opts;\n return (_jsxs(\"div\", { className: \"uppy-FileInput-container\", children: [_jsx(\"input\", { className: \"uppy-FileInput-input\", style: this.opts.pretty ? hiddenInputStyle : undefined, type: \"file\", name: this.opts.inputName, onChange: this.handleInputChange, multiple: restrictions.maxNumberOfFiles !== 1, accept: restrictions.allowedFileTypes?.join(', '), ref: (input) => {\n this.input = input;\n } }), this.opts.pretty && (_jsx(\"button\", { className: \"uppy-FileInput-btn\", type: \"button\", onClick: this.handleClick, children: this.i18n('chooseFiles') }))] }));\n }\n install() {\n const { target } = this.opts;\n if (target) {\n this.mount(target, this);\n }\n }\n uninstall() {\n this.unmount();\n }\n}\n","export { default } from './FileInput.js';\n","import FileInputPlugin, {} from '@uppy/file-input';\nimport { Component, createElement as h } from 'react';\n/**\n * React component that renders an area in which files can be dropped to be\n * uploaded.\n */\nclass FileInput extends Component {\n // Must be kept in sync with @uppy/file-input/src/FileInput.js\n static defaultProps = {\n locale: undefined,\n pretty: true,\n inputName: 'files[]',\n };\n container;\n plugin;\n componentDidMount() {\n this.installPlugin();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.uppy !== this.props.uppy) {\n this.uninstallPlugin(prevProps);\n this.installPlugin();\n }\n }\n componentWillUnmount() {\n this.uninstallPlugin();\n }\n installPlugin() {\n const { uppy, locale, pretty, inputName, id } = this.props;\n const options = {\n id: id || 'FileInput',\n locale,\n pretty,\n inputName,\n target: this.container,\n };\n uppy.use(FileInputPlugin, options);\n this.plugin = uppy.getPlugin(options.id);\n }\n uninstallPlugin(props = this.props) {\n const { uppy } = props;\n uppy.removePlugin(this.plugin);\n }\n render() {\n return h('div', {\n className: 'uppy-Container',\n ref: (container) => {\n this.container = container;\n },\n });\n }\n}\nexport default FileInput;\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { clsx } from 'clsx';\nimport { h } from 'preact';\nimport { useMemo } from 'preact/hooks';\nimport { createDropzone } from './hooks/dropzone.js';\nexport default function Dropzone(props) {\n const { width, height, note, noClick, ctx } = props;\n if (!ctx.uppy) {\n throw new Error('Dropzone must be used within a UppyContextProvider');\n }\n const { getRootProps, getInputProps } = useMemo(() => createDropzone(ctx, { noClick }), [ctx, noClick]);\n return (_jsxs(\"div\", { className: \"uppy-reset\", \"data-uppy-element\": \"dropzone\", role: \"presentation\", tabIndex: 0, children: [_jsx(\"input\", { ...getInputProps(), tabIndex: -1, name: \"uppy-dropzone-file-input\", className: \"uppy:hidden\" }), _jsxs(\"div\", { ...getRootProps(), style: {\n width: width || '100%',\n height: height || '100%',\n }, className: clsx('uppy:border-2 uppy:border-dashed uppy:border-gray-300', 'uppy:rounded-lg uppy:p-6 uppy:bg-gray-50', 'uppy:transition-colors uppy:duration-200', {\n 'uppy:cursor-pointer uppy:hover:bg-blue-50': !noClick,\n }), children: [_jsx(\"div\", { className: \"uppy:flex uppy:flex-col uppy:items-center uppy:justify-center uppy:h-full uppy:space-y-3\", children: _jsx(\"p\", { className: \"uppy:text-gray-600\", children: \"Drop files here or click to add them\" }) }), note ? (_jsx(\"div\", { className: \"uppy:text-sm uppy:text-gray-500\", children: note })) : null] })] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { clsx } from 'clsx';\nimport { Fragment, h } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\nimport prettyBytes from 'pretty-bytes';\nimport { Thumbnail } from './index.js';\nexport default function FilesGrid(props) {\n const [files, setFiles] = useState(() => []);\n const { ctx, editFile } = props;\n function gridColsClass() {\n return ({\n 1: 'uppy:grid-cols-1',\n 2: 'uppy:grid-cols-2',\n 3: 'uppy:grid-cols-3',\n 4: 'uppy:grid-cols-4',\n 5: 'uppy:grid-cols-5',\n 6: 'uppy:grid-cols-6',\n }[props.columns || 2] || 'uppy:grid-cols-2');\n }\n useEffect(() => {\n const onStateUpdate = (prev, next, patch) => {\n if (patch?.files) {\n setFiles(Object.values(patch.files));\n }\n };\n ctx.uppy?.on('state-update', onStateUpdate);\n return () => {\n ctx.uppy?.off('state-update', onStateUpdate);\n };\n }, [ctx.uppy]);\n return (_jsx(\"div\", { \"data-uppy-element\": \"files-grid\", className: clsx('uppy:reset uppy:my-4 uppy:grid uppy:gap-4', gridColsClass()), children: files?.map((file) => (_jsx(\"div\", { className: \"uppy:flex uppy:flex-col uppy:items-center uppy:gap-2\", children: _jsxs(Fragment, { children: [_jsx(Thumbnail, { images: true, file: file }), _jsxs(\"div\", { className: \"uppy:w-full uppy-reset\", children: [_jsx(\"p\", { className: \"uppy:font-medium uppy:truncate\", title: file.name, children: file.name }), _jsxs(\"div\", { className: \"uppy:flex uppy:items-center uppy:gap-2\", children: [_jsx(\"p\", { className: \" uppy:text-gray-500 uppy:tabular-nums \", children: prettyBytes(file.size || 0) }), editFile && (_jsx(\"button\", { type: \"button\", className: \"uppy:flex uppy:rounded uppy:text-blue-500 uppy:hover:text-blue-700 uppy:bg-transparent uppy:transition-colors\", onClick: () => {\n editFile(file);\n }, children: \"edit\" })), _jsx(\"button\", { type: \"button\", className: \"uppy:flex uppy:rounded uppy:text-blue-500 uppy:hover:text-blue-700 uppy:bg-transparent uppy:transition-colors\", onClick: () => {\n ctx.uppy?.removeFile(file.id);\n }, children: \"remove\" })] })] })] }) }, file.id))) }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { clsx } from 'clsx';\nimport { Fragment, h } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\nimport prettyBytes from 'pretty-bytes';\nimport { Thumbnail } from './index.js';\nexport default function FilesList(props) {\n const [files, setFiles] = useState(() => []);\n const { ctx, editFile } = props;\n useEffect(() => {\n const onStateUpdate = (prev, next, patch) => {\n if (patch?.files) {\n setFiles(Object.values(patch.files));\n }\n };\n ctx.uppy?.on('state-update', onStateUpdate);\n return () => {\n ctx.uppy?.off('state-update', onStateUpdate);\n };\n }, [ctx.uppy]);\n return (_jsx(\"ul\", { \"data-uppy-element\": \"files-list\", className: \"uppy-reset uppy:my-4\", children: files?.map((file) => (_jsx(\"li\", { children: _jsxs(Fragment, { children: [_jsxs(\"div\", { className: \"uppy:flex uppy:items-center uppy:gap-2\", children: [_jsx(\"div\", { className: \"uppy:w-[32px] uppy:h-[32px]\", children: _jsx(Thumbnail, { width: \"32px\", height: \"32px\", file: file }) }), _jsx(\"p\", { className: \"uppy:truncate\", children: file.name }), _jsx(\"p\", { className: \"uppy:text-gray-500 uppy:tabular-nums uppy:min-w-18 uppy:text-right uppy:ml-auto\", children: prettyBytes(file.size || 0) }), _jsxs(Fragment, { children: [editFile && (_jsx(\"button\", { type: \"button\", className: \"uppy:flex uppy:rounded uppy:text-blue-500 uppy:hover:text-blue-700 uppy:bg-transparent uppy:transition-colors\", onClick: () => {\n editFile(file);\n }, children: \"edit\" })), _jsx(\"button\", { type: \"button\", className: \"uppy:flex uppy:rounded uppy:text-blue-500 uppy:hover:text-blue-700 uppy:bg-transparent uppy:transition-colors\", onClick: () => {\n ctx.uppy?.removeFile(file.id);\n }, children: \"remove\" })] })] }), _jsx(\"progress\", { max: \"100\", className: clsx('uppy:w-full uppy:h-[2px] uppy:appearance-none uppy:bg-gray-100 uppy:rounded-full uppy:overflow-hidden uppy:[&::-webkit-progress-bar]:bg-gray-100 uppy:block uppy:my-2', {\n 'uppy:[&::-webkit-progress-value]:bg-green-500 uppy:[&::-moz-progress-bar]:bg-green-500': file.progress?.uploadComplete,\n 'uppy:[&::-webkit-progress-value]:bg-red-500 uppy:[&::-moz-progress-bar]:bg-red-500': file.error,\n 'uppy:[&::-webkit-progress-value]:bg-blue-500 uppy:[&::-moz-progress-bar]:bg-blue-500': !file.progress?.uploadComplete && !file.error,\n }), value: file.progress?.percentage || 0 })] }) }, file.id))) }));\n}\n","var has = Object.prototype.hasOwnProperty;\n\nexport function dequal(foo, bar) {\n\tvar ctor, len;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n","import { dequal } from 'dequal/lite';\nimport { Subscribers } from './utils.js';\nexport function createRemoteSourceController(uppy, sourceId) {\n const plugin = uppy.getPlugin(sourceId);\n if (!plugin) {\n throw new Error(`(${sourceId}) is not installed. Install the plugin or the preset @uppy/remote-sources and add it to the Uppy instance`);\n }\n const subscribers = new Subscribers();\n const view = plugin.view;\n let didFirstRender = false;\n const onStateUpdate = (prev, next, patch) => {\n if (patch?.plugins?.[sourceId]) {\n subscribers.emit();\n }\n };\n // Keep a cached snapshot so that the reference stays stable when nothing\n // has changed, as expected by `useSyncExternalStore` from React\n let cachedSnapshot = {\n state: {\n ...plugin.getPluginState(),\n // By default the partialTree is an array of all folders you have opened at some point,\n // not the contents of the current folder. We filter it here to make it more intuitive to work with.\n partialTree: view.getDisplayedPartialTree(),\n selectedAmount: view.getSelectedAmount(),\n error: view.validateAggregateRestrictions(plugin.getPluginState().partialTree),\n breadcrumbs: view.getBreadcrumbs(),\n },\n login: view?.handleAuth,\n logout: view?.logout,\n open: view?.openFolder,\n checkbox: view?.toggleCheckbox,\n done: view?.donePicking,\n cancel: view?.cancelSelection,\n };\n const getSnapshot = () => {\n const nextSnapshot = {\n ...cachedSnapshot,\n state: {\n ...plugin.getPluginState(),\n partialTree: view.getDisplayedPartialTree(),\n selectedAmount: view.getSelectedAmount(),\n error: view.validateAggregateRestrictions(plugin.getPluginState().partialTree),\n breadcrumbs: view.getBreadcrumbs(),\n },\n };\n if (!dequal(cachedSnapshot.state, nextSnapshot.state)) {\n cachedSnapshot = nextSnapshot;\n }\n return cachedSnapshot;\n };\n const mount = () => {\n uppy.on('state-update', onStateUpdate);\n if (!didFirstRender) {\n view.openFolder?.(plugin.rootFolderId);\n view.provider.fetchPreAuthToken?.();\n didFirstRender = true;\n }\n };\n const unmount = () => {\n didFirstRender = false;\n uppy.off('state-update', onStateUpdate);\n };\n return {\n mount,\n unmount,\n subscribe: subscribers.add,\n getSnapshot,\n };\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nexport default function ProviderIcon(props) {\n switch (props.provider) {\n case 'device':\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", width: \"32\", height: \"32\", viewBox: \"0 0 32 32\", children: _jsx(\"path\", { d: \"M8.45 22.087l-1.305-6.674h17.678l-1.572 6.674H8.45zm4.975-12.412l1.083 1.765a.823.823 0 00.715.386h7.951V13.5H8.587V9.675h4.838zM26.043 13.5h-1.195v-2.598c0-.463-.336-.75-.798-.75h-8.356l-1.082-1.766A.823.823 0 0013.897 8H7.728c-.462 0-.815.256-.815.718V13.5h-.956a.97.97 0 00-.746.37.972.972 0 00-.19.81l1.724 8.565c.095.44.484.755.933.755H24c.44 0 .824-.3.929-.727l2.043-8.568a.972.972 0 00-.176-.825.967.967 0 00-.753-.38z\", \"fill-rule\": \"evenodd\", fill: props.fill || 'currentcolor' }) }));\n case 'camera':\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", width: \"32\", height: \"32\", viewBox: \"0 0 32 32\", children: _jsx(\"path\", { d: \"M23.5 9.5c1.417 0 2.5 1.083 2.5 2.5v9.167c0 1.416-1.083 2.5-2.5 2.5h-15c-1.417 0-2.5-1.084-2.5-2.5V12c0-1.417 1.083-2.5 2.5-2.5h2.917l1.416-2.167C13 7.167 13.25 7 13.5 7h5c.25 0 .5.167.667.333L20.583 9.5H23.5zM16 11.417a4.706 4.706 0 00-4.75 4.75 4.704 4.704 0 004.75 4.75 4.703 4.703 0 004.75-4.75c0-2.663-2.09-4.75-4.75-4.75zm0 7.825c-1.744 0-3.076-1.332-3.076-3.074 0-1.745 1.333-3.077 3.076-3.077 1.744 0 3.074 1.333 3.074 3.076s-1.33 3.075-3.074 3.075z\", \"fill-rule\": \"nonzero\", fill: props.fill || '#02B383' }) }));\n case 'screen-capture':\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", width: \"32\", height: \"32\", viewBox: \"0 0 32 32\", children: _jsxs(\"g\", { fill: \"currentcolor\", \"fill-rule\": \"evenodd\", children: [_jsx(\"path\", { d: \"M24.182 9H7.818C6.81 9 6 9.742 6 10.667v10c0 .916.81 1.666 1.818 1.666h4.546V24h7.272v-1.667h4.546c1 0 1.809-.75 1.809-1.666l.009-10C26 9.742 25.182 9 24.182 9zM24 21H8V11h16v10z\" }), _jsx(\"circle\", { cx: \"16\", cy: \"16\", r: \"2\" })] }) }));\n case 'audio':\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", width: \"32px\", height: \"32px\", viewBox: \"0 0 32 32\", children: _jsx(\"path\", { d: \"M21.143 12.297c.473 0 .857.383.857.857v2.572c0 3.016-2.24 5.513-5.143 5.931v2.64h2.572a.857.857 0 110 1.714H12.57a.857.857 0 110-1.714h2.572v-2.64C12.24 21.24 10 18.742 10 15.726v-2.572a.857.857 0 111.714 0v2.572A4.29 4.29 0 0016 20.01a4.29 4.29 0 004.286-4.285v-2.572c0-.474.384-.857.857-.857zM16 6.5a3 3 0 013 3v6a3 3 0 01-6 0v-6a3 3 0 013-3z\", fill: \"currentcolor\", \"fill-rule\": \"nonzero\" }) }));\n case 'dropbox':\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"32\", height: \"32\", viewBox: \"0 0 32 32\", children: _jsx(\"path\", { d: \"M10.5 7.5L5 10.955l5.5 3.454 5.5-3.454 5.5 3.454 5.5-3.454L21.5 7.5 16 10.955zM10.5 21.319L5 17.864l5.5-3.455 5.5 3.455zM16 17.864l5.5-3.455 5.5 3.455-5.5 3.455zM16 25.925l-5.5-3.455 5.5-3.454 5.5 3.454z\", fill: props.fill || 'currentcolor', fillRule: \"nonzero\" }) }));\n case 'facebook':\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"32\", height: \"32\", viewBox: \"0 0 32 32\", children: _jsxs(\"g\", { fill: \"none\", fillRule: \"evenodd\", children: [_jsx(\"path\", { d: \"M27 16c0-6.075-4.925-11-11-11S5 9.925 5 16c0 5.49 4.023 10.041 9.281 10.866V19.18h-2.793V16h2.793v-2.423c0-2.757 1.642-4.28 4.155-4.28 1.204 0 2.462.215 2.462.215v2.707h-1.387c-1.366 0-1.792.848-1.792 1.718V16h3.05l-.487 3.18h-2.563v7.686C22.977 26.041 27 21.49 27 16\", fill: \"#1777F2\" }), _jsx(\"path\", { d: \"M20.282 19.18L20.77 16h-3.051v-2.063c0-.87.426-1.718 1.792-1.718h1.387V9.512s-1.258-.215-2.462-.215c-2.513 0-4.155 1.523-4.155 4.28V16h-2.793v3.18h2.793v7.686a11.082 11.082 0 003.438 0V19.18h2.563\", fill: \"#FFFFFE\" })] }) }));\n case 'instagram':\n return (_jsxs(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"32\", height: \"32\", viewBox: \"0 0 32 32\", children: [_jsx(\"defs\", { children: _jsx(\"path\", { d: \"M16.825 5l.483-.001.799.002c1.168.005 1.598.021 2.407.057 1.17.05 1.97.235 2.67.506.725.28 1.34.655 1.951 1.265.613.61.99 1.223 1.273 1.946.273.7.46 1.498.516 2.67l.025.552.008.205c.029.748.037 1.51.042 3.777l.001.846v.703l-.001.398a50.82 50.82 0 01-.058 2.588c-.05 1.17-.235 1.97-.506 2.67a5.394 5.394 0 01-1.265 1.951c-.61.613-1.222.99-1.946 1.273-.699.273-1.498.46-2.668.516-.243.012-.451.022-.656.03l-.204.007c-.719.026-1.512.034-3.676.038l-.847.001h-1.1a50.279 50.279 0 01-2.587-.059c-1.171-.05-1.971-.235-2.671-.506a5.394 5.394 0 01-1.951-1.265 5.385 5.385 0 01-1.272-1.946c-.274-.699-.46-1.498-.517-2.668a88.15 88.15 0 01-.03-.656l-.007-.205c-.026-.718-.034-1.512-.038-3.674v-2.129c.006-1.168.022-1.597.058-2.406.051-1.171.235-1.971.506-2.672a5.39 5.39 0 011.265-1.95 5.381 5.381 0 011.946-1.272c.699-.274 1.498-.462 2.669-.517l.656-.03.204-.007c.718-.026 1.511-.034 3.674-.038zm.678 1.981h-1.226l-.295.001c-2.307.005-3.016.013-3.777.043l-.21.009-.457.02c-1.072.052-1.654.232-2.042.383-.513.2-.879.44-1.263.825a3.413 3.413 0 00-.82 1.267c-.15.388-.33.97-.375 2.043a48.89 48.89 0 00-.056 2.482v.398 1.565c.006 2.937.018 3.285.073 4.444.05 1.073.231 1.654.382 2.043.2.512.44.878.825 1.263.386.383.753.621 1.267.82.388.15.97.328 2.043.374.207.01.388.017.563.024l.208.007a63.28 63.28 0 002.109.026h1.564c2.938-.006 3.286-.019 4.446-.073 1.071-.051 1.654-.232 2.04-.383.514-.2.88-.44 1.264-.825.384-.386.622-.753.82-1.266.15-.389.328-.971.375-2.044.039-.88.054-1.292.057-2.723v-1.15-.572c-.006-2.936-.019-3.284-.074-4.445-.05-1.071-.23-1.654-.382-2.04-.2-.515-.44-.88-.825-1.264a3.405 3.405 0 00-1.267-.82c-.388-.15-.97-.328-2.042-.375a48.987 48.987 0 00-2.535-.056zm-1.515 3.37a5.65 5.65 0 11.021 11.299 5.65 5.65 0 01-.02-11.3zm.004 1.982a3.667 3.667 0 10.015 7.334 3.667 3.667 0 00-.015-7.334zm5.865-3.536a1.32 1.32 0 11.005 2.64 1.32 1.32 0 01-.005-2.64z\", id: \"a\" }) }), _jsxs(\"g\", { fill: \"none\", \"fill-rule\": \"evenodd\", children: [_jsx(\"mask\", { id: \"b\", fill: \"#fff\", children: _jsx(\"use\", { xlinkHref: \"#a\" }) }), _jsx(\"image\", { mask: \"url(#b)\", x: \"4\", y: \"4\", width: \"24\", height: \"24\", xlinkHref: \"data:image/png;base64,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\" })] })] }));\n case 'onedrive':\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"32\", height: \"32\", viewBox: \"0 0 32 32\", children: _jsxs(\"g\", { fill: \"none\", fillRule: \"nonzero\", children: [_jsx(\"path\", { d: \"M13.39 12.888l4.618 2.747 2.752-1.15a4.478 4.478 0 012.073-.352 6.858 6.858 0 00-5.527-5.04 6.895 6.895 0 00-6.876 2.982l.07-.002a5.5 5.5 0 012.89.815z\", fill: \"#0364B8\" }), _jsx(\"path\", { d: \"M13.39 12.887v.001a5.5 5.5 0 00-2.89-.815l-.07.002a5.502 5.502 0 00-4.822 2.964 5.43 5.43 0 00.38 5.62l4.073-1.702 1.81-.757 4.032-1.685 2.105-.88-4.619-2.748z\", fill: \"#0078D4\" }), _jsx(\"path\", { d: \"M22.833 14.133a4.479 4.479 0 00-2.073.352l-2.752 1.15.798.475 2.616 1.556 1.141.68 3.902 2.321a4.413 4.413 0 00-.022-4.25 4.471 4.471 0 00-3.61-2.284z\", fill: \"#1490DF\" }), _jsx(\"path\", { d: \"M22.563 18.346l-1.141-.68-2.616-1.556-.798-.475-2.105.88L11.87 18.2l-1.81.757-4.073 1.702A5.503 5.503 0 0010.5 23h12.031a4.472 4.472 0 003.934-2.333l-3.902-2.321z\", fill: \"#28A8EA\" })] }) }));\n case 'googlephotos':\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"32\", height: \"32\", viewBox: \"-7 -7 73 73\", children: _jsxs(\"g\", { fill: \"none\", fillRule: \"evenodd\", children: [_jsx(\"path\", { d: \"M-3-3h64v64H-3z\" }), _jsxs(\"g\", { fillRule: \"nonzero\", children: [_jsx(\"path\", { fill: \"#FBBC04\", d: \"M14.8 13.4c8.1 0 14.7 6.6 14.7 14.8v1.3H1.3c-.7 0-1.3-.6-1.3-1.3C0 20 6.6 13.4 14.8 13.4z\" }), _jsx(\"path\", { fill: \"#EA4335\", d: \"M45.6 14.8c0 8.1-6.6 14.7-14.8 14.7h-1.3V1.3c0-.7.6-1.3 1.3-1.3C39 0 45.6 6.6 45.6 14.8z\" }), _jsx(\"path\", { fill: \"#4285F4\", d: \"M44.3 45.6c-8.2 0-14.8-6.6-14.8-14.8v-1.3h28.2c.7 0 1.3.6 1.3 1.3 0 8.2-6.6 14.8-14.8 14.8z\" }), _jsx(\"path\", { fill: \"#34A853\", d: \"M13.4 44.3c0-8.2 6.6-14.8 14.8-14.8h1.3v28.2c0 .7-.6 1.3-1.3 1.3-8.2 0-14.8-6.6-14.8-14.8z\" })] })] }) }));\n case 'googledrive':\n return (_jsx(\"svg\", { \"aria-hidden\": \"true\", focusable: \"false\", width: \"32\", height: \"32\", viewBox: \"0 0 32 32\", children: _jsxs(\"g\", { fillRule: \"nonzero\", fill: \"none\", children: [_jsx(\"path\", { d: \"M6.663 22.284l.97 1.62c.202.34.492.609.832.804l3.465-5.798H5c0 .378.1.755.302 1.096l1.361 2.278z\", fill: \"#0066DA\" }), _jsx(\"path\", { d: \"M16 12.09l-3.465-5.798c-.34.195-.63.463-.832.804l-6.4 10.718A2.15 2.15 0 005 18.91h6.93L16 12.09z\", fill: \"#00AC47\" }), _jsx(\"path\", { d: \"M23.535 24.708c.34-.195.63-.463.832-.804l.403-.67 1.928-3.228c.201-.34.302-.718.302-1.096h-6.93l1.474 2.802 1.991 2.996z\", fill: \"#EA4335\" }), _jsx(\"path\", { d: \"M16 12.09l3.465-5.798A2.274 2.274 0 0018.331 6h-4.662c-.403 0-.794.11-1.134.292L16 12.09z\", fill: \"#00832D\" }), _jsx(\"path\", { d: \"M20.07 18.91h-8.14l-3.465 5.798c.34.195.73.292 1.134.292h12.802c.403 0 .794-.11 1.134-.292L20.07 18.91z\", fill: \"#2684FC\" }), _jsx(\"path\", { d: \"M23.497 12.455l-3.2-5.359a2.252 2.252 0 00-.832-.804L16 12.09l4.07 6.82h6.917c0-.377-.1-.755-.302-1.096l-3.188-5.359z\", fill: \"#FFBA00\" })] }) }));\n default:\n return null;\n }\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { h } from 'preact';\nimport { useEffect, useMemo } from 'preact/hooks';\nexport default function Thumbnail(props) {\n const width = props.width || '100%';\n const height = props.height || '100%';\n const fileTypeGeneral = props.file.type?.split('/')[0] || '';\n const fileTypeSpecific = props.file.type?.split('/')[1] || '';\n const isImage = props.file.type.startsWith('image/');\n const isArchive = fileTypeGeneral === 'application' &&\n [\n 'zip',\n 'x-7z-compressed',\n 'x-zip-compressed',\n 'x-rar-compressed',\n 'x-tar',\n 'x-gzip',\n 'x-apple-diskimage',\n ].includes(fileTypeSpecific);\n const isPDF = fileTypeGeneral === 'application' && fileTypeSpecific === 'pdf';\n const objectUrl = useMemo(() => {\n if (!props.images) {\n return '';\n }\n if (props.file.isRemote) {\n return props.file.preview;\n }\n return URL.createObjectURL(props.file.data);\n }, [props.file.data, props.images, props.file.isRemote, props.file.preview]);\n const showThumbnail = props.images && isImage && objectUrl;\n useEffect(() => {\n return () => {\n if (objectUrl) {\n URL.revokeObjectURL(objectUrl);\n }\n };\n }, [objectUrl]);\n return (_jsxs(\"div\", { \"data-uppy-element\": \"thumbnail\", className: \"uppy:relative uppy:overflow-hidden uppy:bg-gray-100 uppy:rounded-lg uppy:flex uppy:items-center uppy:justify-center\", style: {\n width,\n height,\n aspectRatio: '1',\n }, children: [showThumbnail ? (_jsx(\"img\", { className: \"uppy:w-full uppy:h-full uppy:object-cover\", src: objectUrl, alt: props.file.name })) : null, !showThumbnail ? (_jsx(\"div\", { className: \"uppy:flex uppy:flex-col uppy:items-center uppy:justify-center uppy:w-full uppy:h-full\", children: _jsxs(\"div\", { className: \"uppy:flex-1 uppy:flex uppy:items-center uppy:justify-center uppy:w-full\", children: [!props.file.type ? (_jsx(\"svg\", { \"aria-hidden\": \"true\", className: \"uppy:w-3/4 uppy:h-3/4\", viewBox: \"0 0 25 25\", children: _jsxs(\"g\", { fill: \"#A7AFB7\", \"fill-rule\": \"nonzero\", children: [_jsx(\"path\", { d: \"M5.5 22a.5.5 0 0 1-.5-.5v-18a.5.5 0 0 1 .5-.5h10.719a.5.5 0 0 1 .367.16l3.281 3.556a.5.5 0 0 1 .133.339V21.5a.5.5 0 0 1-.5.5h-14zm.5-1h13V7.25L16 4H6v17z\" }), _jsx(\"path\", { d: \"M15 4v3a1 1 0 0 0 1 1h3V7h-3V4h-1z\" })] }) })) : null, fileTypeGeneral === 'text' ? (_jsx(\"svg\", { \"aria-hidden\": \"true\", className: \"uppy:w-3/4 uppy:h-3/4\", viewBox: \"0 0 25 25\", children: _jsx(\"path\", { d: \"M4.5 7h13a.5.5 0 1 1 0 1h-13a.5.5 0 0 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h10a.5.5 0 1 1 0 1h-10a.5.5 0 1 1 0-1z\", fill: \"#5A5E69\", \"fill-rule\": \"nonzero\" }) })) : null, fileTypeGeneral === 'image' && !showThumbnail ? (_jsx(\"svg\", { \"aria-hidden\": \"true\", className: \"uppy:w-3/4 uppy:h-3/4\", viewBox: \"0 0 25 25\", children: _jsxs(\"g\", { fill: \"#686DE0\", \"fill-rule\": \"evenodd\", children: [_jsx(\"path\", { d: \"M5 7v10h15V7H5zm0-1h15a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z\", \"fill-rule\": \"nonzero\" }), _jsx(\"path\", { d: \"M6.35 17.172l4.994-5.026a.5.5 0 0 1 .707 0l2.16 2.16 3.505-3.505a.5.5 0 0 1 .707 0l2.336 2.31-.707.72-1.983-1.97-3.505 3.505a.5.5 0 0 1-.707 0l-2.16-2.159-3.938 3.939-1.409.026z\", \"fill-rule\": \"nonzero\" }), _jsx(\"circle\", { cx: \"7.5\", cy: \"9.5\", r: \"1.5\" })] }) })) : null, fileTypeGeneral === 'audio' ? (_jsx(\"svg\", { \"aria-hidden\": \"true\", className: \"uppy:w-3/4 uppy:h-3/4\", viewBox: \"0 0 25 25\", children: _jsx(\"path\", { d: \"M9.5 18.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V7.25a.5.5 0 0 1 .379-.485l9-2.25A.5.5 0 0 1 18.5 5v11.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V8.67l-8 2v7.97zm8-11v-2l-8 2v2l8-2zM7 19.64c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1zm9-2c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1z\", fill: \"#049BCF\", \"fill-rule\": \"nonzero\" }) })) : null, fileTypeGeneral === 'video' ? (_jsx(\"svg\", { \"aria-hidden\": \"true\", className: \"uppy:w-3/4 uppy:h-3/4\", viewBox: \"0 0 25 25\", children: _jsx(\"path\", { d: \"M16 11.834l4.486-2.691A1 1 0 0 1 22 10v6a1 1 0 0 1-1.514.857L16 14.167V17a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2.834zM15 9H5v8h10V9zm1 4l5 3v-6l-5 3z\", fill: \"#19AF67\", \"fill-rule\": \"nonzero\" }) })) : null, isPDF ? (_jsx(\"svg\", { \"aria-hidden\": \"true\", className: \"uppy:w-3/4 uppy:h-3/4\", viewBox: \"0 0 25 25\", children: _jsx(\"path\", { d: \"M9.766 8.295c-.691-1.843-.539-3.401.747-3.726 1.643-.414 2.505.938 2.39 3.299-.039.79-.194 1.662-.537 3.148.324.49.66.967 1.055 1.51.17.231.382.488.629.757 1.866-.128 3.653.114 4.918.655 1.487.635 2.192 1.685 1.614 2.84-.566 1.133-1.839 1.084-3.416.249-1.141-.604-2.457-1.634-3.51-2.707a13.467 13.467 0 0 0-2.238.426c-1.392 4.051-4.534 6.453-5.707 4.572-.986-1.58 1.38-4.206 4.914-5.375.097-.322.185-.656.264-1.001.08-.353.306-1.31.407-1.737-.678-1.059-1.2-2.031-1.53-2.91zm2.098 4.87c-.033.144-.068.287-.104.427l.033-.01-.012.038a14.065 14.065 0 0 1 1.02-.197l-.032-.033.052-.004a7.902 7.902 0 0 1-.208-.271c-.197-.27-.38-.526-.555-.775l-.006.028-.002-.003c-.076.323-.148.632-.186.8zm5.77 2.978c1.143.605 1.832.632 2.054.187.26-.519-.087-1.034-1.113-1.473-.911-.39-2.175-.608-3.55-.608.845.766 1.787 1.459 2.609 1.894zM6.559 18.789c.14.223.693.16 1.425-.413.827-.648 1.61-1.747 2.208-3.206-2.563 1.064-4.102 2.867-3.633 3.62zm5.345-10.97c.088-1.793-.351-2.48-1.146-2.28-.473.119-.564 1.05-.056 2.405.213.566.52 1.188.908 1.859.18-.858.268-1.453.294-1.984z\", fill: \"#E2514A\", \"fill-rule\": \"nonzero\" }) })) : null, isArchive ? (_jsx(\"svg\", { \"aria-hidden\": \"true\", className: \"uppy:w-3/4 uppy:h-3/4\", viewBox: \"0 0 25 25\", children: _jsx(\"path\", { d: \"M10.45 2.05h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V2.55a.5.5 0 0 1 .5-.5zm2.05 1.024h1.05a.5.5 0 0 1 .5.5V3.6a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5v-.001zM10.45 0h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 3.074h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 1.024h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm-2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm-2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-1.656 3.074l-.82 5.946c.52.302 1.174.458 1.976.458.803 0 1.455-.156 1.975-.458l-.82-5.946h-2.311zm0-1.025h2.312c.512 0 .946.378 1.015.885l.82 5.946c.056.412-.142.817-.501 1.026-.686.398-1.515.597-2.49.597-.974 0-1.804-.199-2.49-.597a1.025 1.025 0 0 1-.5-1.026l.819-5.946c.07-.507.503-.885 1.015-.885zm.545 6.6a.5.5 0 0 1-.397-.561l.143-.999a.5.5 0 0 1 .495-.429h.74a.5.5 0 0 1 .495.43l.143.998a.5.5 0 0 1-.397.561c-.404.08-.819.08-1.222 0z\", fill: \"#00C469\", \"fill-rule\": \"nonzero\" }) })) : null, props.file.type && !fileTypeGeneral && !isPDF && !isArchive ? (_jsx(\"svg\", { \"aria-hidden\": \"true\", className: \"uppy:w-3/4 uppy:h-3/4\", viewBox: \"0 0 25 25\", children: _jsxs(\"g\", { fill: \"#A7AFB7\", \"fill-rule\": \"nonzero\", children: [_jsx(\"path\", { d: \"M5.5 22a.5.5 0 0 1-.5-.5v-18a.5.5 0 0 1 .5-.5h10.719a.5.5 0 0 1 .367.16l3.281 3.556a.5.5 0 0 1 .133.339V21.5a.5.5 0 0 1-.5.5h-14zm.5-1h13V7.25L16 4H6v17z\" }), _jsx(\"path\", { d: \"M15 4v3a1 1 0 0 0 1 1h3V7h-3V4h-1z\" })] }) })) : null] }) })) : null] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { clsx } from 'clsx';\nimport { h } from 'preact';\nexport default function UploadButton(props) {\n const { ctx } = props;\n return (_jsxs(\"div\", { className: \"uppy-reset uppy:space-y-2\", children: [_jsxs(\"button\", { type: \"button\", \"data-uppy-element\": \"upload-button\", \"data-state\": ctx.status, onClick: () => {\n if (ctx.status === 'ready') {\n ctx.uppy?.upload();\n }\n }, className: clsx('uppy:relative uppy:w-full uppy:p-2 uppy:rounded-lg', 'uppy:text-white uppy:font-medium', 'uppy:transition-all uppy:overflow-hidden', 'uppy:bg-blue-500 uppy:hover:bg-blue-600', {\n 'uppy:bg-red-500 uppy:hover:bg-red-600': ctx.status === 'error',\n 'uppy:bg-green-500 uppy:hover:bg-green-600': ctx.status === 'complete',\n }, 'uppy:disabled:hover:bg-blue-500 uppy:disabled:cursor-not-allowed'), disabled: ctx.status === 'init' ||\n ctx.status === 'uploading' ||\n ctx.status === 'paused', children: [_jsx(\"div\", { className: clsx('uppy:absolute uppy:inset-0 uppy:origin-left uppy:transition-all', {\n 'uppy:bg-red-700': ctx.status === 'error',\n 'uppy:bg-green-700': ctx.status === 'complete',\n 'uppy:bg-blue-700': ctx.status !== 'error' && ctx.status !== 'complete',\n }), style: {\n transform: `scaleX(${ctx.progress / 100})`,\n } }), _jsx(\"span\", { className: \"uppy:relative uppy:z-10\", children: ctx.status === 'uploading' || ctx.status === 'paused'\n ? `Uploaded ${Math.round(ctx.progress)}%`\n : ctx.status === 'error'\n ? 'Retry'\n : ctx.status === 'complete'\n ? 'Complete'\n : 'Upload' })] }), ctx.status === 'uploading' || ctx.status === 'paused' ? (_jsxs(\"div\", { className: \"uppy:flex uppy:gap-2\", children: [ctx.uppy?.getState().capabilities.resumableUploads ? (_jsx(\"button\", { type: \"button\", \"data-uppy-element\": \"pause-button\", \"data-state\": ctx.status, onClick: () => {\n if (ctx.status === 'paused') {\n ctx.uppy?.resumeAll();\n }\n else {\n ctx.uppy?.pauseAll();\n }\n }, className: clsx('uppy:w-full uppy:p-2 uppy:rounded-lg uppy:text-amber-500 uppy:bg-gray-50 uppy:hover:bg-amber-50 uppy:font-medium uppy:transition-all', {\n 'uppy:text-green-500 uppy:hover:bg-green-50': ctx.status === 'paused',\n }), children: ctx.status === 'paused' ? 'Resume' : 'Pause' })) : null, _jsx(\"button\", { type: \"button\", \"data-uppy-element\": \"cancel-button\", className: \"uppy:w-full uppy:p-2 uppy:rounded-lg uppy:text-red-500 uppy:bg-gray-50 uppy:hover:bg-red-50 uppy:font-medium uppy:transition-all\", \"data-state\": ctx.status, onClick: () => ctx.uppy?.cancelAll(), children: \"Cancel\" })] })) : null] }));\n}\n","// Headless components\nexport { default as Dropzone } from './Dropzone.js';\nexport { default as FilesGrid } from './FilesGrid.js';\nexport { default as FilesList } from './FilesList.js';\n// Headless hooks\nexport { createDropzone, } from './hooks/dropzone.js';\nexport { createFileInput, } from './hooks/file-input.js';\nexport { createRemoteSourceController, } from './hooks/remote-source.js';\nexport { createScreenCaptureController, } from './hooks/screencapture.js';\nexport { createWebcamController, } from './hooks/webcam.js';\nexport { default as ProviderIcon, } from './ProviderIcon.js';\nexport { default as Thumbnail } from './Thumbnail.js';\nexport { default as UploadButton, } from './UploadButton.js';\nexport { createUppyEventAdapter } from './uppyEventAdapter.js';\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createUppyEventAdapter, } from '@uppy/components';\nimport { createContext, createElement as h, useContext, useEffect, useState, } from 'react';\nexport const UppyContext = createContext({\n uppy: undefined,\n status: 'init',\n progress: 0,\n});\nexport function UppyContextProvider({ uppy, children }) {\n const [status, setStatus] = useState('init');\n const [progress, setProgress] = useState(0);\n useEffect(() => {\n if (!uppy) {\n throw new Error('UppyContextProvider: passing `uppy` as a prop is required');\n }\n const uppyEventAdapter = createUppyEventAdapter({\n uppy,\n onStatusChange: (newStatus) => {\n setStatus(newStatus);\n },\n onProgressChange: (newProgress) => {\n setProgress(newProgress);\n },\n });\n return () => uppyEventAdapter.cleanup();\n }, [uppy]);\n return (_jsx(UppyContext.Provider, { value: {\n uppy,\n status,\n progress,\n }, children: children }));\n}\nexport default UppyContextProvider;\nexport function useUppyContext() {\n const ctx = useContext(UppyContext);\n if (!ctx.uppy) {\n throw new Error('Uppy hooks must be called within a UppyContextProvider');\n }\n return ctx; // covered by the if statement above\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\n// This file was generated by build-components.mjs\n// ANY EDITS WILL BE OVERWRITTEN!\nimport { Dropzone as PreactDropzone, } from '@uppy/components';\nimport { h as preactH } from 'preact';\nimport { render as preactRender } from 'preact/compat';\nimport { createElement as h, useContext, useEffect, useRef } from 'react';\nimport { UppyContext } from '../UppyContextProvider.js';\nexport default function Dropzone(props) {\n const ref = useRef(null);\n const ctx = useContext(UppyContext);\n useEffect(() => {\n if (ref.current) {\n preactRender(preactH(PreactDropzone, {\n ...props,\n ctx,\n }), ref.current);\n }\n }, [ctx, props]);\n return _jsx(\"div\", { ref: ref });\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\n// This file was generated by build-components.mjs\n// ANY EDITS WILL BE OVERWRITTEN!\nimport { FilesGrid as PreactFilesGrid, } from '@uppy/components';\nimport { h as preactH } from 'preact';\nimport { render as preactRender } from 'preact/compat';\nimport { createElement as h, useContext, useEffect, useRef } from 'react';\nimport { UppyContext } from '../UppyContextProvider.js';\nexport default function FilesGrid(props) {\n const ref = useRef(null);\n const ctx = useContext(UppyContext);\n useEffect(() => {\n if (ref.current) {\n preactRender(preactH(PreactFilesGrid, {\n ...props,\n ctx,\n }), ref.current);\n }\n }, [ctx, props]);\n return _jsx(\"div\", { ref: ref });\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\n// This file was generated by build-components.mjs\n// ANY EDITS WILL BE OVERWRITTEN!\nimport { FilesList as PreactFilesList, } from '@uppy/components';\nimport { h as preactH } from 'preact';\nimport { render as preactRender } from 'preact/compat';\nimport { createElement as h, useContext, useEffect, useRef } from 'react';\nimport { UppyContext } from '../UppyContextProvider.js';\nexport default function FilesList(props) {\n const ref = useRef(null);\n const ctx = useContext(UppyContext);\n useEffect(() => {\n if (ref.current) {\n preactRender(preactH(PreactFilesList, {\n ...props,\n ctx,\n }), ref.current);\n }\n }, [ctx, props]);\n return _jsx(\"div\", { ref: ref });\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\n// This file was generated by build-components.mjs\n// ANY EDITS WILL BE OVERWRITTEN!\nimport { ProviderIcon as PreactProviderIcon, } from '@uppy/components';\nimport { h as preactH } from 'preact';\nimport { render as preactRender } from 'preact/compat';\nimport { createElement as h, useContext, useEffect, useRef } from 'react';\nimport { UppyContext } from '../UppyContextProvider.js';\nexport default function ProviderIcon(props) {\n const ref = useRef(null);\n const ctx = useContext(UppyContext);\n useEffect(() => {\n if (ref.current) {\n preactRender(preactH(PreactProviderIcon, {\n ...props,\n ctx,\n }), ref.current);\n }\n }, [ctx, props]);\n return _jsx(\"div\", { ref: ref });\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\n// This file was generated by build-components.mjs\n// ANY EDITS WILL BE OVERWRITTEN!\nimport { Thumbnail as PreactThumbnail, } from '@uppy/components';\nimport { h as preactH } from 'preact';\nimport { render as preactRender } from 'preact/compat';\nimport { createElement as h, useContext, useEffect, useRef } from 'react';\nimport { UppyContext } from '../UppyContextProvider.js';\nexport default function Thumbnail(props) {\n const ref = useRef(null);\n const ctx = useContext(UppyContext);\n useEffect(() => {\n if (ref.current) {\n preactRender(preactH(PreactThumbnail, {\n ...props,\n ctx,\n }), ref.current);\n }\n }, [ctx, props]);\n return _jsx(\"div\", { ref: ref });\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\n// This file was generated by build-components.mjs\n// ANY EDITS WILL BE OVERWRITTEN!\nimport { UploadButton as PreactUploadButton, } from '@uppy/components';\nimport { h as preactH } from 'preact';\nimport { render as preactRender } from 'preact/compat';\nimport { createElement as h, useContext, useEffect, useRef } from 'react';\nimport { UppyContext } from '../UppyContextProvider.js';\nexport default function UploadButton(props) {\n const ref = useRef(null);\n const ctx = useContext(UppyContext);\n useEffect(() => {\n if (ref.current) {\n preactRender(preactH(PreactUploadButton, {\n ...props,\n ctx,\n }), ref.current);\n }\n }, [ctx, props]);\n return _jsx(\"div\", { ref: ref });\n}\n","export { default as Dropzone } from './Dropzone.js';\nexport { default as FilesGrid } from './FilesGrid.js';\nexport { default as FilesList } from './FilesList.js';\nexport { default as ProviderIcon } from './ProviderIcon.js';\nexport { default as Thumbnail } from './Thumbnail.js';\nexport { default as UploadButton } from './UploadButton.js';\n","import { jsx as _jsx, jsxs as _jsxs } from \"preact/jsx-runtime\";\nimport { UIPlugin } from '@uppy/core';\nimport { h } from 'preact';\nimport packageJson from '../package.json' with { type: 'json' };\n// set default options, must kept in sync with @uppy/react/src/ProgressBar.js\nconst defaultOptions = {\n fixed: false,\n hideAfterFinish: true,\n};\n/**\n * Progress bar\n *\n */\nexport default class ProgressBar extends UIPlugin {\n static VERSION = packageJson.version;\n constructor(uppy, opts) {\n super(uppy, { ...defaultOptions, ...opts });\n this.id = this.opts.id || 'ProgressBar';\n this.title = 'Progress Bar';\n this.type = 'progressindicator';\n this.render = this.render.bind(this);\n }\n render(state) {\n const { totalProgress } = state;\n // before starting and after finish should be hidden if specified in the options\n const isHidden = (totalProgress === 0 || totalProgress === 100) &&\n this.opts.hideAfterFinish;\n return (_jsxs(\"div\", { className: \"uppy uppy-ProgressBar\", style: { position: this.opts.fixed ? 'fixed' : 'initial' }, \"aria-hidden\": isHidden, children: [_jsx(\"div\", { className: \"uppy-ProgressBar-inner\", style: { width: `${totalProgress}%` } }), _jsx(\"div\", { className: \"uppy-ProgressBar-percentage\", children: totalProgress })] }));\n }\n install() {\n const { target } = this.opts;\n if (target) {\n this.mount(target, this);\n }\n }\n uninstall() {\n this.unmount();\n }\n}\n","export { default } from './ProgressBar.js';\n","import ProgressBarPlugin, {} from '@uppy/progress-bar';\nimport { Component, createElement as h } from 'react';\nimport getHTMLProps from './getHTMLProps.js';\nimport nonHtmlPropsHaveChanged from './nonHtmlPropsHaveChanged.js';\n/**\n * React component that renders a progress bar at the top of the page.\n */\nclass ProgressBar extends Component {\n container;\n plugin;\n componentDidMount() {\n this.installPlugin();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.uppy !== this.props.uppy) {\n this.uninstallPlugin(prevProps);\n this.installPlugin();\n }\n else if (nonHtmlPropsHaveChanged(this.props, prevProps)) {\n const { uppy, ...options } = { ...this.props, target: this.container };\n this.plugin.setOptions(options);\n }\n }\n componentWillUnmount() {\n this.uninstallPlugin();\n }\n installPlugin() {\n const { uppy, fixed, hideAfterFinish, id } = this.props;\n const options = {\n id: id || 'ProgressBar',\n fixed,\n hideAfterFinish,\n target: this.container,\n };\n uppy.use(ProgressBarPlugin, options);\n this.plugin = uppy.getPlugin(options.id);\n }\n uninstallPlugin(props = this.props) {\n const { uppy } = props;\n uppy.removePlugin(this.plugin);\n }\n render() {\n return h('div', {\n className: 'uppy-Container',\n ref: (container) => {\n this.container = container;\n },\n ...getHTMLProps(this.props),\n });\n }\n}\nexport default ProgressBar;\n","import StatusBarPlugin, {} from '@uppy/status-bar';\nimport { Component, createElement as h } from 'react';\nimport getHTMLProps from './getHTMLProps.js';\nimport nonHtmlPropsHaveChanged from './nonHtmlPropsHaveChanged.js';\n/**\n * React component that renders a status bar containing upload progress and speed,\n * processing progress and pause/resume/cancel controls.\n */\nclass StatusBar extends Component {\n container;\n plugin;\n componentDidMount() {\n this.installPlugin();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.uppy !== this.props.uppy) {\n this.uninstallPlugin(prevProps);\n this.installPlugin();\n }\n else if (nonHtmlPropsHaveChanged(this.props, prevProps)) {\n const { uppy, ...options } = { ...this.props, target: this.container };\n this.plugin.setOptions(options);\n }\n }\n componentWillUnmount() {\n this.uninstallPlugin();\n }\n installPlugin() {\n const { uppy, hideUploadButton, hideRetryButton, hidePauseResumeButton, hideCancelButton, showProgressDetails, hideAfterFinish, doneButtonHandler, id, } = this.props;\n const options = {\n id: id || 'StatusBar',\n hideUploadButton,\n hideRetryButton,\n hidePauseResumeButton,\n hideCancelButton,\n showProgressDetails,\n hideAfterFinish,\n doneButtonHandler,\n target: this.container,\n };\n uppy.use(StatusBarPlugin, options);\n this.plugin = uppy.getPlugin(options.id);\n }\n uninstallPlugin(props = this.props) {\n const { uppy } = props;\n uppy.removePlugin(this.plugin);\n }\n render() {\n return h('div', {\n className: 'uppy-Container',\n ref: (container) => {\n this.container = container;\n },\n ...getHTMLProps(this.props),\n });\n }\n}\nexport default StatusBar;\n","import { createDropzone, } from '@uppy/components';\nimport { useMemo } from 'react';\nimport { useUppyContext } from './headless/UppyContextProvider.js';\nexport function useDropzone(options) {\n const ctx = useUppyContext();\n const dropzone = useMemo(() => createDropzone(ctx, options), \n // We need every value on options to be memoized to avoid re-creating the dropzone on every render\n [\n ctx,\n options?.noClick,\n options?.onDragOver,\n options?.onDragEnter,\n options?.onDragLeave,\n options?.onDrop,\n options?.onFileInputChange,\n options,\n ]);\n return dropzone;\n}\n","import { createFileInput } from '@uppy/components';\nimport { useMemo } from 'react';\nimport { useUppyContext } from './headless/UppyContextProvider.js';\nexport function useFileInput(props) {\n const ctx = useUppyContext();\n const fileInput = useMemo(() => createFileInput(ctx, props), \n // We need every value on props to be memoized to avoid re-creating the file input on every render\n [ctx, props?.accept, props?.multiple, props]);\n return fileInput;\n}\n","import { createRemoteSourceController, } from '@uppy/components';\nimport { useEffect, useMemo } from 'react';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim/index.js';\nimport { useUppyContext } from './headless/UppyContextProvider.js';\nexport function useRemoteSource(sourceId) {\n const { uppy } = useUppyContext();\n const controller = useMemo(() => createRemoteSourceController(uppy, sourceId), [uppy, sourceId]);\n const store = useSyncExternalStore(controller.subscribe, controller.getSnapshot, controller.getSnapshot);\n useEffect(() => {\n controller.mount();\n return () => {\n controller.unmount();\n };\n }, [controller]);\n return store;\n}\n","import { createScreenCaptureController, } from '@uppy/components';\nimport { useMemo } from 'react';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim/index.js';\nimport { useUppyContext } from './headless/UppyContextProvider.js';\nexport function useScreenCapture({ onSubmit, }) {\n const { uppy } = useUppyContext();\n const controller = useMemo(() => createScreenCaptureController(uppy, onSubmit), [uppy, onSubmit]);\n const store = useSyncExternalStore(controller.subscribe, controller.getSnapshot, controller.getSnapshot);\n return store;\n}\n","import { useEffect, useState } from 'react';\nexport default function useUppyEvent(uppy, event, callback) {\n const [result, setResult] = useState([]);\n const clear = () => setResult([]);\n useEffect(() => {\n const handler = ((...args) => {\n setResult(args);\n callback?.(...args);\n });\n uppy.on(event, handler);\n return function cleanup() {\n uppy.off(event, handler);\n };\n }, [uppy, event, callback]);\n return [result, clear];\n}\n","import { useCallback, useMemo } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector.js';\nexport default function useUppyState(uppy, selector) {\n const subscribe = useMemo(() => uppy.store.subscribe.bind(uppy.store), [uppy.store]);\n const getSnapshot = useCallback(() => uppy.store.getState(), [uppy.store]);\n return useSyncExternalStoreWithSelector(subscribe, getSnapshot, // client\n getSnapshot, // server\n selector);\n}\n","import { createWebcamController } from '@uppy/components';\nimport { useMemo, useSyncExternalStore } from 'react';\nimport { useUppyContext } from './headless/UppyContextProvider.js';\nexport function useWebcam({ onSubmit }) {\n const { uppy } = useUppyContext();\n const controller = useMemo(() => createWebcamController(uppy, onSubmit), [uppy, onSubmit]);\n const store = useSyncExternalStore(controller.subscribe, controller.getSnapshot, controller.getSnapshot);\n return store;\n}\n","export { default as Dashboard } from './Dashboard.js';\nexport { default as DashboardModal } from './DashboardModal.js';\nexport { default as DragDrop } from './DragDrop.js';\nexport { default as FileInput } from './FileInput.js';\nexport * from './headless/generated/index.js';\n// Headless components\nexport { UppyContext, UppyContextProvider, } from './headless/UppyContextProvider.js';\nexport { default as ProgressBar } from './ProgressBar.js';\nexport { default as StatusBar } from './StatusBar.js';\nexport { useDropzone } from './useDropzone.js';\nexport { useFileInput } from './useFileInput.js';\nexport { useRemoteSource } from './useRemoteSource.js';\nexport { useScreenCapture } from './useScreenCapture.js';\nexport { default as useUppyEvent } from './useUppyEvent.js';\nexport { default as useUppyState } from './useUppyState.js';\nexport { useWebcam } from './useWebcam.js';\n","function insertReplacement(source, rx, replacement) {\n const newParts = [];\n source.forEach((chunk) => {\n // When the source contains multiple placeholders for interpolation,\n // we should ignore chunks that are not strings, because those\n // can be JSX objects and will be otherwise incorrectly turned into strings.\n // Without this condition we’d get this: [object Object] hello [object Object] my <button>\n if (typeof chunk !== 'string') {\n return newParts.push(chunk);\n }\n return rx[Symbol.split](chunk).forEach((raw, i, list) => {\n if (raw !== '') {\n newParts.push(raw);\n }\n // Interlace with the `replacement` value\n if (i < list.length - 1) {\n newParts.push(replacement);\n }\n });\n });\n return newParts;\n}\n/**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param phrase that needs interpolation, with placeholders\n * @param options with values that will be used to replace placeholders\n */\nfunction interpolate(phrase, options) {\n const dollarRegex = /\\$/g;\n const dollarBillsYall = '$$$$';\n let interpolated = [phrase];\n if (options == null)\n return interpolated;\n for (const arg of Object.keys(options)) {\n if (arg !== '_') {\n // Ensure replacement value is escaped to prevent special $-prefixed\n // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n // be escaped with \"$\" itself, and we need two in the resulting output.\n let replacement = options[arg];\n if (typeof replacement === 'string') {\n replacement = dollarRegex[Symbol.replace](replacement, dollarBillsYall);\n }\n // We create a new `RegExp` each time instead of using a more-efficient\n // string replace so that the same argument can be replaced multiple times\n // in the same phrase.\n interpolated = insertReplacement(interpolated, new RegExp(`%\\\\{${arg}\\\\}`, 'g'), replacement);\n }\n }\n return interpolated;\n}\nconst defaultOnMissingKey = (key) => {\n throw new Error(`missing string: ${key}`);\n};\n/**\n * Translates strings with interpolation & pluralization support.\n * Extensible with custom dictionaries and pluralization functions.\n *\n * Borrows heavily from and inspired by Polyglot https://github.com/airbnb/polyglot.js,\n * basically a stripped-down version of it. Differences: pluralization functions are not hardcoded\n * and can be easily added among with dictionaries, nested objects are used for pluralization\n * as opposed to `||||` delimeter\n *\n * Usage example: `translator.translate('files_chosen', {smart_count: 3})`\n */\nexport default class Translator {\n locale;\n constructor(locales, { onMissingKey = defaultOnMissingKey } = {}) {\n this.locale = {\n strings: {},\n pluralize(n) {\n if (n === 1) {\n return 0;\n }\n return 1;\n },\n };\n if (Array.isArray(locales)) {\n locales.forEach(this.#apply, this);\n }\n else {\n this.#apply(locales);\n }\n this.#onMissingKey = onMissingKey;\n }\n #onMissingKey;\n #apply(locale) {\n if (!locale?.strings) {\n return;\n }\n const prevLocale = this.locale;\n Object.assign(this.locale, {\n strings: { ...prevLocale.strings, ...locale.strings },\n pluralize: locale.pluralize || prevLocale.pluralize,\n });\n }\n /**\n * Public translate method\n *\n * @param key\n * @param options with values that will be used later to replace placeholders in string\n * @returns string translated (and interpolated)\n */\n translate(key, options) {\n return this.translateArray(key, options).join('');\n }\n /**\n * Get a translation and return the translated and interpolated parts as an array.\n *\n * @returns The translated and interpolated parts, in order.\n */\n translateArray(key, options) {\n let string = this.locale.strings[key];\n if (string == null) {\n this.#onMissingKey(key);\n string = key;\n }\n const hasPluralForms = typeof string === 'object';\n if (hasPluralForms) {\n if (options && typeof options.smart_count !== 'undefined') {\n const plural = this.locale.pluralize(options.smart_count);\n return interpolate(string[plural], options);\n }\n throw new Error('Attempted to use a string with plural forms, but no value was given for %{smart_count}');\n }\n if (typeof string !== 'string') {\n throw new Error(`string was not a string`);\n }\n return interpolate(string, options);\n }\n}\n","import getFileType from './getFileType.js';\nfunction encodeCharacter(character) {\n return character.charCodeAt(0).toString(32);\n}\nfunction encodeFilename(name) {\n let suffix = '';\n return (name.replace(/[^A-Z0-9]/gi, (character) => {\n suffix += `-${encodeCharacter(character)}`;\n return '/';\n }) + suffix);\n}\n/**\n * Takes a file object and turns it into fileID, by converting file.name to lowercase,\n * removing extra characters and adding type, size and lastModified\n */\nexport default function generateFileID(file, instanceId) {\n // It's tempting to do `[items].filter(Boolean).join('-')` here, but that\n // is slower! simple string concatenation is fast\n let id = instanceId || 'uppy';\n if (typeof file.name === 'string') {\n id += `-${encodeFilename(file.name.toLowerCase())}`;\n }\n if (file.type !== undefined) {\n id += `-${file.type}`;\n }\n if (file.meta && typeof file.meta.relativePath === 'string') {\n id += `-${encodeFilename(file.meta.relativePath.toLowerCase())}`;\n }\n if (file.data.size !== undefined) {\n id += `-${file.data.size}`;\n }\n if (file.data.lastModified !== undefined) {\n id += `-${file.data.lastModified}`;\n }\n return id;\n}\n// If the provider has a stable, unique ID, then we can use that to identify the file.\n// Then we don't have to generate our own ID, and we can add the same file many times if needed (different path)\nfunction hasFileStableId(file) {\n if (!file.isRemote || !file.remote)\n return false;\n // These are the providers that it seems like have stable IDs for their files. The other's I haven't checked yet.\n const stableIdProviders = new Set([\n 'box',\n 'dropbox',\n 'drive',\n 'facebook',\n 'unsplash',\n ]);\n return stableIdProviders.has(file.remote.provider);\n}\nexport function getSafeFileId(file, instanceId) {\n if (hasFileStableId(file))\n return file.id;\n const fileType = getFileType(file);\n return generateFileID({\n ...file,\n type: fileType,\n }, instanceId);\n}\n","/**\n * Takes a full filename string and returns an object {name, extension}\n */\nexport default function getFileNameAndExtension(fullFileName) {\n const lastDot = fullFileName.lastIndexOf('.');\n // these count as no extension: \"no-dot\", \"trailing-dot.\"\n if (lastDot === -1 || lastDot === fullFileName.length - 1) {\n return {\n name: fullFileName,\n extension: undefined,\n };\n }\n return {\n name: fullFileName.slice(0, lastDot),\n extension: fullFileName.slice(lastDot + 1),\n };\n}\n","// ___Why not add the mime-types package?\n// It's 19.7kB gzipped, and we only need mime types for well-known extensions (for file previews).\n// ___Where to take new extensions from?\n// https://github.com/jshttp/mime-db/blob/master/db.json\nexport default {\n __proto__: null,\n md: 'text/markdown',\n markdown: 'text/markdown',\n mp4: 'video/mp4',\n mp3: 'audio/mp3',\n svg: 'image/svg+xml',\n jpg: 'image/jpeg',\n png: 'image/png',\n webp: 'image/webp',\n gif: 'image/gif',\n heic: 'image/heic',\n heif: 'image/heif',\n yaml: 'text/yaml',\n yml: 'text/yaml',\n csv: 'text/csv',\n tsv: 'text/tab-separated-values',\n tab: 'text/tab-separated-values',\n avi: 'video/x-msvideo',\n mks: 'video/x-matroska',\n mkv: 'video/x-matroska',\n mov: 'video/quicktime',\n dicom: 'application/dicom',\n doc: 'application/msword',\n msg: 'application/vnd.ms-outlook',\n docm: 'application/vnd.ms-word.document.macroenabled.12',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n dot: 'application/msword',\n dotm: 'application/vnd.ms-word.template.macroenabled.12',\n dotx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n xla: 'application/vnd.ms-excel',\n xlam: 'application/vnd.ms-excel.addin.macroenabled.12',\n xlc: 'application/vnd.ms-excel',\n xlf: 'application/x-xliff+xml',\n xlm: 'application/vnd.ms-excel',\n xls: 'application/vnd.ms-excel',\n xlsb: 'application/vnd.ms-excel.sheet.binary.macroenabled.12',\n xlsm: 'application/vnd.ms-excel.sheet.macroenabled.12',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n xlt: 'application/vnd.ms-excel',\n xltm: 'application/vnd.ms-excel.template.macroenabled.12',\n xltx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n xlw: 'application/vnd.ms-excel',\n txt: 'text/plain',\n text: 'text/plain',\n conf: 'text/plain',\n log: 'text/plain',\n pdf: 'application/pdf',\n zip: 'application/zip',\n '7z': 'application/x-7z-compressed',\n rar: 'application/x-rar-compressed',\n tar: 'application/x-tar',\n gz: 'application/gzip',\n dmg: 'application/x-apple-diskimage',\n};\n","import getFileNameAndExtension from './getFileNameAndExtension.js';\nimport mimeTypes from './mimeTypes.js';\nexport default function getFileType(file) {\n if (file.type)\n return file.type;\n const fileExtension = file.name\n ? getFileNameAndExtension(file.name).extension?.toLowerCase()\n : null;\n if (fileExtension && fileExtension in mimeTypes) {\n // else, see if we can map extension to a mime type\n return mimeTypes[fileExtension];\n }\n // if all fails, fall back to a generic byte stream type\n return 'application/octet-stream';\n}\n"],"names":["module","exports","input","Number","isNaN","num","Math","abs","units","exponent","min","floor","log","length","value","unit","round","toFixed","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","i","arr","Arr","curByte","len","charCodeAt","revLookup","fromByteArray","uint8","extraBytes","parts","len2","push","encodeChunk","start","end","output","lookup","join","Uint8Array","Array","code","indexOf","base64","__webpack_require__","ieee754","customInspectSymbol","Symbol","createBuffer","buf","Object","setPrototypeOf","Buffer","prototype","arg","encodingOrOffset","allocUnsafe","from","fromString","string","encoding","isEncoding","actual","write","slice","ArrayBuffer","isView","fromArrayView","arrayView","isInstance","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","SharedArrayBuffer","valueOf","b","fromObject","obj","isBuffer","checked","undefined","type","isArray","data","toPrimitive","assertSize","size","array","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","out","hexSliceLookupTable","utf8Slice","asciiSlice","ret","String","fromCharCode","latin1Slice","utf16leSlice","bytes","res","swap","n","m","bidirectionalIndexOf","val","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","codePoints","apply","checkOffset","offset","ext","checkInt","max","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","lW","h2","TYPED_ARRAY_SUPPORT","typedArraySupport","proto","foo","e","console","error","defineProperty","enumerable","get","poolSize","alloc","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","set","swap16","swap32","swap64","toString","toLocaleString","equals","inspect","str","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","remaining","hexWrite","strLen","parsed","parseInt","substr","blitBuffer","asciiToBytes","byteArray","utf16leToBytes","c","hi","toJSON","_arr","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","maxBytes","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","Infinity","leadSurrogate","base64clean","split","src","dst","constructor","name","alphabet","table","i16","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","s","NaN","rt","LN2","root","getRawTag","objectToString","symToStringTag","toStringTag","trimmedEndIndex","reTrimStart","freeGlobal","g","objectProto","hasOwnProperty","nativeObjectToString","isOwn","tag","unmasked","result","freeSelf","self","Function","reWhitespace","index","test","charAt","isObject","now","toNumber","nativeMax","nativeMin","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","shouldInvoke","timeSinceLastCall","timeSinceLastInvoke","timerExpired","timeWaiting","trailingEdge","setTimeout","debounced","isInvoking","clearTimeout","cancel","flush","baseGetTag","isObjectLike","Date","debounce","baseTrim","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","isBinary","ChevronLeft","createLucideIcon","key","Download","points","x1","x2","y1","y2","FilePlus","FileText","FileWarning","File","Image","width","height","rx","ry","cx","cy","r","Loader","Plus","wildcard","reMimePartSplit","pattern","emitter","_fns","emit","event","arg1","arg2","arg3","arg4","arg5","arg6","toEmit","getListeners","idx","substring","keys","l","emitAll","fns","on","fn","once","one","off","keep","has","prefix","Events","EE","context","addListener","listener","evt","_events","_eventsCount","clearEvent","EventEmitter","create","__proto__","eventNames","events","names","getOwnPropertySymbols","listeners","handlers","ee","listenerCount","a1","a2","a3","a4","a5","removeListener","removeAllListeners","prefixed","RetryOperation","operation","timeouts","forever","retries","unref","maxRetryTime","opts","factor","minTimeout","maxTimeout","randomize","createTimeout","sort","attempt","random","wrap","methods","method","original","op","callback","pop","err","retry","mainError","bind","_originalTimeouts","JSON","parse","stringify","_timeouts","_options","_maxRetryTime","_fn","_errors","_attempts","_operationTimeout","_operationTimeoutCb","_timeout","_operationStart","_timer","_cachedTimeouts","reset","stop","currentTime","getTime","unshift","timeout","shift","splice","timeoutOps","cb","try","errors","attempts","counts","mainErrorCount","message","count","React","useSyncExternalStore","useRef","useEffect","useMemo","useDebugValue","WildcardMatcher","text","separator","hasWild","match","ii","testParts","matches","partsCount","matcher","__WEBPACK_AMD_DEFINE_RESULT__","hasOwn","classNames","classes","appendClass","parseValue","newClass","default","window","document","createElement","Presence","getter","mayWarn","present","children","props","presence","usePresence","initialState","machine","node","setNode","React2","stylesRef","prevPresentRef","prevAnimationNameRef","state","send","mounted","UNMOUNT","ANIMATION_OUT","unmountSuspended","MOUNT","ANIMATION_END","unmounted","nextState","currentAnimationName","getAnimationName","current","useLayoutEffect","styles","wasPresent","prevAnimationName","display","timeoutId","ownerWindow","ownerDocument","defaultView","handleAnimationEnd","isCurrentAnimation","CSS","escape","animationName","currentFillMode","style","animationFillMode","handleAnimationStart","addEventListener","removeEventListener","isPresent","ref","getComputedStyle","child","only","useComposedRefs","getOwnPropertyDescriptor","element","isReactWarning","forceMount","displayName","COLLAPSIBLE_NAME","createCollapsibleContext","createCollapsibleScope","createContextScope","CollapsibleProvider","useCollapsibleContext","Collapsible","forwardedRef","__scopeCollapsible","open","openProp","defaultOpen","disabled","onOpenChange","collapsibleProps","setOpen","useControllableState","prop","defaultProp","onChange","caller","jsx","scope","contentId","useId","onOpenToggle","prevOpen","Primitive","div","getState","TRIGGER_NAME","CollapsibleTrigger","triggerProps","button","onClick","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","defaultPrevented","CONTENT_NAME","CollapsibleContent","contentProps","param","CollapsibleContentImpl","setIsPresent","composedRefs","heightRef","widthRef","isOpen","isMountAnimationPreventedRef","originalStylesRef","rAF","requestAnimationFrame","cancelAnimationFrame","transitionDuration","rect","getBoundingClientRect","id","hidden","Root","Mutation","_removable_js__WEBPACK_IMPORTED_MODULE_0__","F","observers","mutationCache","retryer","config","mutationId","getDefaultState","setOptions","scheduleGc","updateGcTime","gcTime","meta","addObserver","observer","clearGcTimeout","notify","mutation","removeObserver","filter","optionalRemove","status","remove","continue","execute","variables","onContinue","dispatch","_retryer_js__WEBPACK_IMPORTED_MODULE_1__","Mz","mutationFn","Promise","reject","onFail","failureCount","onPause","retryDelay","networkMode","canRun","restored","isPaused","canStart","onMutate","onSuccess","onSettled","onError","runNext","action","reducer","failureReason","submittedAt","_notifyManager_js__WEBPACK_IMPORTED_MODULE_2__","Vr","batch","forEach","onMutationUpdate","MutationObserver","subscribable","client","currentResult","currentMutation","mutateOptions","bindMethods","updateResult","mutate","prevOptions","defaultMutationOptions","utils","VS","getMutationCache","mutationKey","Ym","onUnsubscribe","hasListeners","getCurrentResult","build","R","isPending","isSuccess","isError","isIdle","notifyManager","useMutation","queryClient","useQueryClient","subscribe","batchCalls","onStoreChange","catch","noop","shouldThrowError","throwOnError","mutateAsync","hasProperty","object","ErrorWithCause","Error","isNetworkError","cause","NetworkError","request","xhr","UserFacingApiError","errorMessages","Set","AbortError","originalError","stack","decorateErrorWithCounts","attemptNumber","retriesLeft","pRetry","resolve","onFailedAttempt","shouldRetry","abortHandler","signal","reason","aborted","cleanUp","TypeError","finalError","AuthError","isAuthError","HttpError","statusCode","handleJSONResponse","errData","ok","json","errMsg","statusText","requestId","RequestClient","VERSION","companionHeaders","uppy","onReceiveResponse","setCompanionHeaders","headers","for","hostname","companion","host","companionUrl","url","emptyBody","Accept","setState","getUrl","path","skipPostResponse","response","fetchWithNetworkError","fetch","credentials","companionCookiesRule","body","post","delete","uploadRemoteFile","file","reqBody","getQueue","existingServerToken","getFile","serverToken","awaitRemoteFileUpload","queue","queueRequestSocketToken","wrapPromiseFunction","requestSocketToken","outerErr","priority","postBody","abortOn","setFileState","remote","token","removeEventHandlers","capabilities","socket","socketAbortController","activityTimeout","getSocketHost","regex","exec","socketProtocol","socketSend","payload","readyState","OPEN","sendState","resumableUploads","createWebsocket","abort","AbortController","onFatalError","resetActivityTimeout","reconnectWebsocket","_","rejectSocket","WebSocket","close","emitSocketProgress","uploader","progressData","progress","bytesUploaded","bytesTotal","uploadStarted","responseText","uploadURL","assign","closeSocket","pause","newPausedState","onFileRemove","individualCancellation","targetFile","onCancelAll","onFilePausedChange","onPauseAll","onResumeAll","EventManager","onFilePause","fileID","onRetry","onRetryAll","eventHandler","AbortController_AbortController","globalThis","AbortSignal","createAbortError","DOMException","configurable","writable","getAllowedMetaFields","fields","abortPromise","removeAbortListener","then","RateLimitedQueue","activeRequests","queuedHandlers","paused","pauseTimer","downLimit","upperLimit","rateLimitingTimer","cancelActive","done","queueNext","queueMicrotask","next","handler","dequeue","findIndex","run","queueOptions","wrapSyncFunction","queuedRequest","outerPromise","cancelError","innerPromise","resume","duration","rateLimit","increaseLimit","ceil","ec","TextEncoder","algorithm","hash","digest","subtle","crypto","encode","generateHmacKey","secret","importKey","arrayBufferToHexString","arrayBuffer","hexString","padStart","sign","createSignedURL","accountKey","accountSecret","sessionToken","bucketName","Key","Region","expires","uploadId","partNumber","CanonicalUri","encodeURI","toUpperCase","requestDateTime","toISOString","date","URL","searchParams","canonical","createCanonicalRequest","CanonicalQueryString","SignedHeaders","HashedPayload","headerKeys","map","k","search","stringToSign","kDate","kRegion","kService","kSigning","signature","defaultOptions","getChunkSize","onProgress","onPartComplete","pausingUploadReason","MultipartUploader","abortController","chunks","chunkState","uploadHasStarted","shouldUseMultipart","isRestoring","onReject","maxMultipartParts","minPartSize","initChunks","fileSize","Boolean","chunkSize","arraySize","getData","i2","onPartProgress","onComplete","setAsUploaded","uploaded","createUpload","companionComm","uploadFile","resumeUpload","resumeUploadFile","ev","lengthComputable","ensureInt","loaded","totalUploaded","reduce","etag","PartNumber","ETag","abortUpload","abortFileUpload","restoreUploadFile","really","throwIfAborted","HTTPCommunicationQueue","abortMultipartUpload","cache","WeakMap","createMultipartUpload","fetchSignature","getUploadParameters","listParts","previousRetryDelay","requests","retryDelays","sendCompletionRequest","setS3MultipartState","uploadPartBytes","signPart","completeMultipartUpload","retryDelayIterator","source","navigator","onLine","getUploadId","cachedResult","promise","awaitedResult","nonMultipartUpload","chunk","formData","FormData","entries","location","removeMetadataFromURL","urlString","urlObject","href","bucket","all","uploadChunk","uploadIdAndKey","alreadyUploadedParts","alreadyUploadedInfo","find","signatureRetryIterator","values","chunkRetryIterator","shouldRetrySignature","chunkData","assertServerError","getExpiry","expirationDate","Expiration","timeUntilExpiry","getAllowedMetadata","allowedMetaFields","querify","metaFields","fromEntries","lib_defaultOptions","getTemporarySecurityCredentials","AwsS3Multipart","BasePlugin","Z","companionCommunicationQueue","uploaderEvents","uploaders","setClient","dynamicDefaultOptions","rateLimitedQueue","pluginId","provider","endpoint","cookiesRule","newOptions","resetUploaderReferences","assertHost","metadata","filename","oldSignal","encodeURIComponent","uploadIdEnc","cachedTemporaryCredentials","AccessKeyId","SecretAccessKey","SessionToken","region","randomUUID","query","URLSearchParams","XMLHttpRequest","onabort","cleanup","setRequestHeader","responseType","upload","getAllResponseHeaders","headersMap","line","header","cFile","s3Multipart","uploadLocalFile","latestFile","uploadResp","part","eventManager","removed","getCompanionClientArgs","protocol","fileIDs","filesFiltered","filterNonFailedFiles","files","hasError","getFilesByIds","filesToEmit","isRestored","promises","isRemote","setResumableUploadsCapability","controller","removedHandler","removedFile","uploadPromise","getRequestClientForFile","allSettled","boolean","resetResumableCapability","install","addPreProcessor","addUploader","uninstall","removePreProcessor","removeUploader","defaultLocale","i18n","i18nArray","getPluginState","plugins","setPluginState","update","newOpts","i18nInit","translator","_uppy_utils_lib_Translator__WEBPACK_IMPORTED_MODULE_0__","locale","translate","translateArray","addTarget","plugin","afterUpdate","DefaultStore","callbacks","patch","prevState","publish","add","nanoid","urlAlphabet","strings","addBulkFilesFailed","youCanOnlyUploadX","youHaveToAtLeastSelectX","aggregateExceedsSize","exceedsSize","missingRequiredMetaField","missingRequiredMetaFieldOnFile","inferiorSize","youCanOnlyUploadFileTypes","noMoreFilesAllowed","noDuplicates","companionError","authAborted","companionUnauthorizeHint","failedToUpload","noInternetConnection","connectedToInternet","noFilesFound","noSearchResults","selectX","allFilesFromFolderNamed","openFolderNamed","logOut","logIn","pickFiles","pickPhotos","resetFilter","loading","loadedXFiles","authenticateWithTitle","authenticateWith","signInWithGoogle","searchImages","enterTextToSearch","resetSearch","emptyFolderAdded","addedNumFiles","folderAlreadyAdded","folderAdded","additionalRestrictionsFailed","unnamed","pleaseWait","pad","number","getTimeStamp","hours","getHours","minutes","getMinutes","seconds","getSeconds","justErrorsLogger","debug","warn","debugLogger","Restricter_defaultOptions","maxFileSize","minFileSize","maxTotalFileSize","maxNumberOfFiles","minNumberOfFiles","allowedFileTypes","requiredMetaFields","RestrictionError","isUserFacing","isRestriction","Restricter","getI18n","getOpts","restrictions","validateAggregateRestrictions","existingFiles","addingFiles","nonGhostFiles","f","isGhost","smart_count","totalFilesSize","total","sizeAllowed","prettierBytes","validateSingleFile","some","mime_match","extension","allowedFileTypesString","types","validate","addingFile","validateMinNumberOfFiles","getMissingRequiredMetaFields","fileName","missingFields","field","defaultUploadState","totalProgress","allowNewUpload","recoveredState","Uppy","restricter","storeUnsubscribe","namespace_emitter","preProcessors","postProcessors","store","scheduledAutoProceed","wasOffline","autoProceed","allowMultipleUploadBatches","onBeforeFileAdded","onBeforeUpload","logger","infoTimeout","merged","currentUploads","uploadProgress","supportsUploadProgress","userAgent","version","edgeVersion","major","minor","info","updateAll","addListeners","iteratePlugins","patchFilesState","filesWithNewState","existingFilesState","newFileState","Translator","onMissingKey","setMeta","resetProgress","defaultProgress","percentage","uploadComplete","updatedFiles","tus","transloadit","clear","addPostProcessor","removePostProcessor","updatedMeta","setFileMeta","newMeta","getFiles","ids","getObjectOfFilesPerState","filesObject","inProgressFiles","newFiles","startedFiles","uploadStartedFiles","pausedFiles","completeFiles","erroredFiles","inProgressNotPausedFiles","processingFiles","preprocess","postprocess","isUploadStarted","isAllComplete","isAllErrored","isAllPaused","isUploadInProgress","isSomeGhost","informAndEmit","userFacingErrors","firstErrors","additionalErrors","details","validateRestrictions","checkRequiredMetaFieldsOnFile","missingRequiredMetaFields","checkRequiredMetaFields","success","assertNewUploadAllowed","checkIfFileAlreadyExists","transformFile","fileDescriptorOrFile","fileType","getFileType","fileDescriptor","fileExtension","getFileNameAndExtension","generateFileID","H","getID","preview","startIfAutoProceed","checkAndUpdateFileState","filesToAdd","nextFilesState","validFilesToAdd","fileToAdd","newFile","onBeforeFileAddedResult","addFile","restrictionErrors","firstValidFileToAdd","addFiles","fileDescriptors","nonRestrictionErrors","subError","AggregateError","removeFiles","updatedUploads","removedFiles","fileIsNotRemoved","uploadFileID","newFileIDs","uploadID","stateUpdate","updateTotalProgressThrottled","removedFileIDs","removeFile","pauseResume","pauseAll","inProgressUpdatedFiles","updatedFile","resumeAll","getFilesToRetry","doRetryAll","filesToRetry","successful","failed","forceAllowNewUpload","runUpload","retryAll","cancelAll","retryUpload","logout","handleUploadProgress","fileInState","newProgress","updateTotalProgress","calculateTotalProgress","totalProgressPercent","throttle","filesInProgress","every","isSizedFile","sizedFilesInProgress","unsizedFilesInProgress","acc","totalUploadedSize","errorHandler","errorMsg","newError","uploadStalledWarningRecentlyEmitted","filesState","exists","currentProgress","mode","updateOnlineStatus","use","Plugin","existsPluginAlready","getPlugin","foundPlugin","flat","removePlugin","instance","item","updatedState","destroy","hideInfo","isComplexMessage","requestClientById","Map","registerRequestClient","requestClient","requestClientId","restore","removeUpload","allowMultipleUploads","step","getUpload","addResultData","currentUpload","getCurrentUpload","steps","retryResult","onBeforeUploadResult","currentlyUploadingFiles","flatMap","curr","waitingFileIDs","lib_Uppy","lastFocusWasOnSuperFocusableEl","isDOMElement","nodeType","Node","ELEMENT_NODE","preact_module_l","u","o","preact_module_r","preact_module_e","lib_getTextDirection","parentNode","preact_module_h","v","p","w","removeChild","t","defaultProps","__k","__","__b","__e","__d","__c","__v","__i","__u","vnode","S","M","__r","debounceRendering","__P","O","__n","namespaceURI","C","base","P","$","L","V","unmount","N","componentWillUnmount","I","contains","insertBefore","nextSibling","T","setProperty","A","cssText","removeAttribute","setAttribute","h","render","contextType","__E","q","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","z","localName","createTextNode","createElementNS","is","__m","childNodes","attributes","__html","innerHTML","diffed","E","getDerivedStateFromError","componentDidCatch","forceUpdate","hooks_module_t","hooks_module_r","hooks_module_u","hooks_module_i","hooks_module_o","hooks_module_f","hooks_module_c","hooks_module_e","hooks_module_a","hooks_module_v","hooks_module_m","hooks_module_s","hooks_module_d","__H","hooks_module_h","hooks_module_p","hooks_module_D","__N","hooks_module_y","hooks_module_C","hooks_module_A","hooks_module_T","hooks_module_q","hooks_module_j","hooks_module_z","hooks_module_B","hooks_module_k","compat_module_g","compat_module_E","isPureReactComponent","compat_module_x","__f","compat_module_N","compat_module_M","compat_module_D","compat_module_L","__a","compat_module_F","__R","compat_module_A","appendChild","__O","compat_module_T","fallback","U","revealOrder","reverse","compat_module_j","compat_module_z","compat_module_B","compat_module_H","compat_module_$","textContent","firstChild","isReactComponent","compat_module_G","J","K","cancelBubble","Q","persist","isPropagationStopped","isDefaultPrevented","nativeEvent","nn","class","tn","multiple","selected","defaultValue","className","$$typeof","en","rn","UIPlugin","updateUI","isTargetDOMEl","el","parent","title","getTargetPlugin","targetPlugin","mount","callerPluginName","targetElement","lib_findDOMElement","querySelector","latestArgs","calling","uppyRootElement","classList","replaceTargetContent","direction","onMount","container","onUnmount","lib_UIPlugin","jsxRuntime_module_f","jsxRuntime_module_u","__source","__self","FadeIn","componentWillEnter","opacity","transform","componentWillLeave","getChildMapping","TransitionGroup","refs","performAppear","performEnter","performLeave","currentlyTransitioningKeys","keysToAbortLeave","keysToEnter","keysToLeave","initialChildMapping","nextProps","nextChildMapping","prevChildMapping","mergeChildMappings","prev","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","hasPrev","hasNext","_finishAbort","component","componentWillAppear","_handleDoneAppearing","componentDidAppear","currentChildMapping","_handleDoneEntering","componentDidEnter","_handleDoneLeaving","componentDidLeave","childFactory","transitionLeave","transitionName","transitionAppear","transitionEnter","transitionLeaveTimeout","transitionEnterTimeout","transitionAppearTimeout","linkRef","_ptgLinkedRefs","Informer","role","alert","GoogleIcon","viewBox","xmlns","DefaultForm","pluginName","onAuth","isGoogleDrive","onSubmit","preventDefault","defaultRenderForm","AuthView_AuthView","pluginIcon","handleAuth","renderForm","remoteFileObjToLocal","mimeType","STYLE_INNER","position","minHeight","STYLE_CONTENT","top","left","overflow","VirtualList","focusElement","resize","handleResize","activeElement","focus","handleScroll","scrollTop","offsetHeight","rowHeight","renderRow","overscanCount","visibleRowCount","selection","styleInner","styleContent","onScroll","FileIcon","focusable","FolderIcon","minWidth","marginRight","VideoIcon","ItemIcon","itemIconString","alt","referrerPolicy","components_GridItem","toggleCheckbox","isDisabled","restrictionError","showTitles","htmlFor","thumbnail","icon","ListItem","openFolder","isFolder","Item","viewType","utmSource","ourProps","classnames","author","rel","tabIndex","lib_Browser","displayedPartialTree","isLoading","noResultsLabel","virtualList","isShiftKeyPressed","setIsShiftKeyPressed","handleKeyUp","handleKeyDown","renderItem","stopPropagation","getSelection","removeAllRanges","PartialTreeUtils_getNumberOfSelectedFiles","checkedLeaves","partialTree","parentId","FooterActions","cancelSelection","donePicking","aggregateRestrictionError","nOfSelectedFiles","lib_SearchInput","searchString","setSearchString","submitSearchString","wrapperClassName","inputClassName","inputLabel","clearSearchLabel","showButton","buttonLabel","buttonCSSClassName","submit","form","formEl","placeholder","onInput","utils_getTagFile","authorName","authorUrl","relativePath","relDirPath","absolutePath","absDirPath","fileId","fileUrl","requestPath","providerName","utils_addFiles","companionFiles","tagFiles","filesAlreadyAdded","tagFile","numFiles","utils_getClickedRange","clickedId","lastCheckbox","lastCheckboxIndex","newCheckboxIndex","clickedRange","utils_handleError","PartialTreeUtils_getBreadcrumbs","currentFolderId","folder","breadcrumbs","currentParentId","getPath","sId","meAndParentPath","PartialTreeUtils_getCheckedFilesWithPaths","checkedFiles","absFolders","firstCheckedFolderIndex","relFolders","TimeoutError","getDOMException","errorMessage","getAbortedReason","PriorityQueue","enqueue","lowerBound","comparator","first","trunc","it","setPriority","PQueue","eventemitter3","carryoverConcurrencyCount","isIntervalIgnored","intervalCount","intervalCap","interval","intervalEnd","intervalId","queueClass","pending","concurrency","throwOnTimeout","idAssigner","POSITIVE_INFINITY","autoStart","doesIntervalAllowAnother","doesConcurrentAllowAnother","tryToStartAnother","onResumeInterval","onInterval","initializeIntervalIfNeeded","isIntervalPaused","delay","clearInterval","canInitializeInterval","job","setInterval","processQueue","newConcurrency","throwOnAbort","_resolve","function_","pTimeout","timer","milliseconds","customTimers","cancelablePromise","wrappedPromise","timeoutError","finally","race","addAll","functions","onEmpty","onEvent","onSizeLessThan","onIdle","sizeBy","PartialTreeUtils_shallowClone","recursivelyFetch","poorTree","poorFolder","apiList","items","currentPath","cached","nextPagePath","newFolders","folders","percolateDown","tree","shouldMarkAsChecked","percolateUp","validChildren","areAllChildrenChecked","areAllChildrenUnchecked","PartialTreeUtils","afterOpenFolder","oldPartialTree","discoveredItems","clickedFolder","currentPagePath","discoveredFolders","discoveredFiles","isParentFolderChecked","updatedClickedFolder","afterScrollFolder","currentFolder","scrolledFolder","partialTreeWithUpdatedScrolledFolder","afterToggleCheckbox","oldTree","newlyCheckedItems","clickedItem","afterFill","reportProgress","poorFolders","utils_shouldHandleScroll","scrollHeight","scrollPosition","Breadcrumbs","breadcrumbsIcon","User","username","Header","showBreadcrumbs","defaultPickerIcon","authenticated","rootFolderId","didFirstRender","ProviderView","isHandlingScroll","showFilter","loadAllFiles","resetPluginState","tearDown","setLoading","newPartialTree","withAbort","cancelRequest","folderId","currentItems","revoked","manual_revoke_url","authFormData","login","fetchPreAuthToken","companionFile","enrichedTree","ourItem","getDisplayedPartialTree","inThisFolder","getBreadcrumbs","getSelectedAmount","uppyFiles","viewOptions","renderAuthForm","defaultState","isInputMode","SearchProviderView","nextPageQuery","newRoot","oldItems","emaFilter","newValue","previousSmoothedValue","halfLife","dt","uploading","complete","uploadFailed","filesUploadedOfTotal","dataUploadedOfTotal","dataUploadedOfUnknown","xTimeLeft","uploadXFiles","uploadXNewFiles","xMoreFilesAdded","showErrorDetails","StatusBarStates","STATE_ERROR","STATE_WAITING","STATE_PREPROCESSING","STATE_UPLOADING","STATE_POSTPROCESSING","STATE_COMPLETE","DOT","renderDot","UploadBtn","uploadState","startUpload","uploadBtnClassNames","uploadBtnText","RetryBtn","CancelBtn","fillRule","PauseResumeButton","DoneBtn","doneButtonHandler","LoadingSpinner","ProgressBarProcessing","dot","ProgressDetails","numUploads","totalSize","totalETA","ifShowFilesUploadedOfTotal","totalUploadedSizeStr","prettyETA","rawSeconds","hoursStr","minutesStr","secondsStr","FileUploadCount","UploadNewlyAddedFiles","ProgressBarUploading","showProgressDetails","showUploadNewlyAddedFiles","ProgressBarComplete","ProgressBarError","calculateProcessingProgress","progressValue","StatusBar_defaultOptions","hideUploadButton","hideRetryButton","hidePauseResumeButton","hideCancelButton","hideAfterFinish","StatusBar","lastUpdateTime","previousUploadedBytes","previousSpeed","previousETA","computeSmoothETA","totalBytes","performance","uploadedBytesSinceLastTick","currentSpeed","filteredSpeed","instantETA","updatedPreviousETA","filteredETA","newFilesOrRecovered","StatusBarUI","getProgressValue","showUploadBtn","showCancelBtn","showPauseResumeBtn","showRetryBtn","showDoneBtn","progressClassNames","getIsIndeterminate","statusBarClassNames","progressBarStateEl","getUploadingState","onUploadStart","pv","DATA_URL_PATTERN","lib_dataURItoBlob","dataURI","toFile","dataURIData","binary","atob","decodeURIComponent","Blob","isObjectURL","startsWith","isPreviewSupported","mini_esm_e","mini_esm_t","global","mini_esm_s","mini_esm_i","HTMLImageElement","mini_esm_n","process","versions","mini_esm_r","mini_esm_a","mini_esm_h","mini_esm_f","mini_esm_l","mini_esm_o","ifd0","enabled","exif","makerNote","userComment","gps","interop","ifd1","jfif","xmp","iptc","icc","mini_esm_u","mini_esm_d","TextDecoder","mini_esm_c","le","DataView","_swapDataView","_swapArrayBuffer","_swapBuffer","dataView","_lengthToEnd","toUint8","getUint8Array","getString","decode","getLatin1String","getUnicodeString","getUint16","getInt8","getUint8","getInt16","getInt32","getUint32","getFloat32","getFloat64","getFloat","getDouble","getUintBytes","getUint64","getUint","ensureChunk","mini_esm_p","mini_esm_g","kind","keyList","mini_esm_m","mini_esm_y","mini_esm_b","mini_esm_w","mini_esm_k","mini_esm_v","mini_esm_O","mini_esm_S","mini_esm_A","FileReader","onloadend","onerror","readAsArrayBuffer","mini_esm_U","tagKeys","allKeys","tagValues","allValues","mini_esm_x","mini_esm_C","mini_esm_B","mini_esm_V","mini_esm_I","mini_esm_L","mini_esm_T","mini_esm_z","mini_esm_P","mini_esm_F","mini_esm_j","mini_esm_E","mini_esm_M","mini_esm_","translateKeys","translateValues","reviveValues","mini_esm_D","needed","deps","applyInheritables","canBeFiltered","dict","translateTagSet","pick","skip","finalizeFilters","mini_esm_X","mini_esm_N","tiff","ihdr","multiSegment","sanitize","mergeOutput","silentErrors","chunked","firstChunkSize","firstChunkSizeNode","firstChunkSizeBrowser","chunkLimit","mini_esm_$","mini_esm_R","useCached","setupFromTrue","setupFromUndefined","setupFromArray","setupFromObject","filterNestedSegmentTags","traverseTiffDependencyTree","checkLoadedPlugins","setupGlobalFilters","image","mini_esm_W","batchEnableWithBool","batchEnableWithUserValue","mini_esm_K","onlyTiff","mini_esm_H","setup","fileParser","canHandle","parsers","executeParsers","pushToErrors","assignToOutput","extractThumbnail","jpeg","getOrFindSegment","ensureSegmentChunk","mini_esm_Y","mini_esm_G","freeze","Exifr","fileParsers","segmentParsers","fileReaders","tagRevivers","createDictionary","extendDictionary","fetchUrlAsArrayBuffer","readBlobAsArrayBuffer","chunkedProps","otherSegments","segments","tiffBlocks","segmentsAndBlocks","tiffExtractables","inheritables","allFormatters","Options","mini_esm_J","findPosition","headerLength","normalizeInput","globalOptions","localOptions","canTranslate","translated","translateBlock","raw","translateValue","DEFAULT","assignObjectToOutput","available","readChunk","extendOptions","injectSegment","createParser","createParsers","append","readSegments","findAppSegments","appSegments","mergeMultiSegments","mergedAppSegments","setupSegmentFinderArgs","findAll","wanted","unfinishedMultiSegment","readWhole","findAppSegmentsInRange","canReadNextChunk","nextChunkOffset","readNextChunk","mini_esm_Z","chunkNumber","chunkCount","recordUnknownSegments","marker","unknownSegments","stopAfterSos","recordJpegSegments","jpegSegments","handleMultiSegments","getSegment","te","se","parseHeader","headerParsed","parseTags","parseTag","endsWith","parseTagValue","Uint16Array","Uint32Array","Int8Array","Int16Array","Int32Array","Float32Array","Float64Array","ie","parseIfd0Block","safeParse","createOutput","handleError","findIfd0Offset","ifd0Offset","findIfd1Offset","ifd1Offset","parseBlock","exifOffset","interopOffset","gpsOffset","parseExifBlock","unpack","parseGpsBlock","ne","parseInteropBlock","parseThumbnailBlock","ifd1Parsed","ae","de","ce","pe","dimensionSwapped","scaleX","scaleY","deg","rad","PI","ge","me","ye","canvas","css","be","we","ranges","_tryExtend","_extend","uintView","ke","Oe","readChunked","fullyRead","chunksRead","safeWrapAddress","_readChunk","lib_locale","generatingThumbnails","thumbnailWidth","thumbnailHeight","thumbnailType","waitForThumbnailsBeforeUpload","lazy","ThumbnailGenerator","queueProcessing","defaultThumbnailDimension","createThumbnail","targetWidth","targetHeight","originalUrl","createObjectURL","revokeObjectURL","orientation","dimensions","getProportionalDimensions","rotatedImage","rotateImage","getContext","rotate","scale","drawImage","canvasToBlob","quality","getImageData","toBlob","blob","toDataURL","resizeImage","img","aspect","protect","ratio","maxW","sqrt","maxSquare","maxH","log2","sW","sH","setPreviewURL","addToQueue","requestThumbnail","onFileAdded","onCancelRequest","onFileRemoved","onRestored","restoredFiles","onAllFilesRemoved","waitUntilAllProcessed","emitPreprocessCompleteForAll","lib_findAllDOMElements","elements","querySelectorAll","toArray","createPromiseToAddFileOrParseDirectory","entry","lastResortFile","getNextRelativePath","handle","getFilesFromDataTransfer","dataTransfer","logDropError","fileSystemHandle","getAsFileSystemHandleFromEntry","isFile","isDirectory","directoryReader","createReader","getFilesAndDirectoriesFromDirectory","oldEntries","readEntries","newEntries","dirEntries","isSameEntry","getAsEntry","webkitGetAsEntry","getAsFile","getDroppedFiles","accumulator","non_secure_nanoid","non_secure_urlAlphabet","isDragDropSupported","AddFiles","fileInput","folderInput","mobilePhotoFileInput","mobileVideoFileInput","triggerFileInputClick","click","triggerFolderInputClick","triggerVideoCameraInputClick","triggerPhotoCameraInputClick","onFileInputChange","handleInputChange","currentTarget","renderHiddenInput","refCallback","webkitdirectory","accept","renderHiddenCameraInput","nativeCameraFacingMode","capture","typeToAccept","photo","video","renderMyDeviceAcquirer","renderPhotoCamera","renderVideoCamera","renderBrowseButton","onClickFn","numberOfAcquirers","acquirers","renderDropPasteBrowseTagline","browseFiles","browseFolders","lowerFMSelectionType","fileManagerSelectionType","camelFMSelectionType","disableLocalFiles","browse","renderAcquirer","acquirer","activePickerPanel","showPanel","renderAcquirers","acquirersWithoutLastTwo","lastTwoAcquirers","renderSourcesList","showNativePhotoCameraButton","showNativeVideoCameraButton","myDeviceKey","listWithoutLastTwo","lastTwo","renderPoweredByUppy","linkText","note","proudlyDisplayPoweredByUppy","components_AddFilesPanel","showAddFilesPanel","toggleAddFilesPanel","components_EditorPanel","fileCardFor","closeFileEditor","saveFileEditor","editors","getIconByMime","defaultChoice","color","fileTypeGeneral","fileTypeSpecific","archiveTypes","utils_ignoreEvent","tagName","FilePreview","draggable","RenderMetaFields","computedMetaFields","updateMeta","formState","fieldCSSClasses","required","newVal","FileCard","toggleFileCard","saveFileCard","openFileEditor","canEditFile","getMetaFields","showEditButton","storedMetaData","setFormState","handleSave","handleCancel","onDragOver","onDragLeave","onDrop","onPaste","backgroundColor","EditButton","uploadInProgressOrComplete","RemoveButton","CopyLinkButton","copyLinkToClipboard","copyToClipboard","textToCopy","fallbackString","textArea","padding","border","outline","boxShadow","background","select","magicCopyFailed","prompt","execCommand","_err","preventScroll","Buttons","showLinkToFileUploadResult","showRemoveButton","truncateString","maxLength","charsToShow","metaFieldIdToName","metaFieldId","MetaErrorMessage","metaFieldsString","missingMetaField","renderFileName","isSingleFile","containerHeight","containerWidth","renderAuthor","renderFileSize","ReSelectButton","ErrorButton","FileInfo","FilePreviewAndLink","progressIndicatorTitle","isUploaded","ProgressIndicatorButton","onPauseResumeCancelRetry","ProgressCircleContainer","ProgressCircle","circleLength","FileProgress","FileItem","handleRequestThumbnail","shallowEqualObjects","objA","objB","aKeys","bKeys","handleCancelThumbnail","isProcessing","uploadInProgress","showRemoveButtonAfterComplete","FileList","itemsPerRow","rows","fileIds","file1","file2","currentChunk","row","components_PickerPanelContent","hideAllPanels","uploadStates","STATE_PAUSED","UploadStatus","PickerPanelTopBar_getUploadingState","PickerPanelTopBar","totalFileCount","components_Slide","cachedChildren","setCachedChildren","setClassName","enterTimeoutRef","leaveTimeoutRef","animationFrameRef","handleEnterTransition","handleLeaveTransition","dashboard_lib_locale","closeModal","addMoreFiles","addingMoreFiles","importFrom","dashboardWindowTitle","dashboardTitle","copyLinkToClipboardSuccess","copyLinkToClipboardFallback","copyLink","back","editFile","editImage","editing","finishEditingFile","saveChanges","myDevice","dropHint","uploadPaused","pauseUpload","cancelUpload","xFilesSelected","uploadingXFiles","processingXFiles","poweredBy","addMore","editFileWithFilename","save","dropPasteFiles","dropPasteFolders","dropPasteBoth","dropPasteImportFiles","dropPasteImportFolders","dropPasteImportBoth","importFiles","recoveredXFiles","recoveredAllFiles","sessionRestored","reSelect","takePictureBtn","recordVideoBtn","FOCUSABLE_ELEMENTS","getActiveOverlayEl","dashboardEl","activeOverlayType","overlayEl","focusOnFirstNode","nodes","trapFocus","activeOverlayEl","focusableNodes","focusedItemIndex","shiftKey","focusOnLastNode","createPromise","Dashboard_defaultOptions","hideProgressAfterFinish","singleFileFullScreen","disableStatusBar","disableInformer","disableThumbnailGenerator","showSelectedFiles","theme","autoOpen","onRequestCloseModal","inline","animateOpenClose","browserBackButtonClose","closeAfterFinish","closeModalOnClickOutside","disablePageScrollWhenModalOpen","trigger","lib_Dashboard_Dashboard","disabledNodes","modalName","superFocus","lodash_debounce","isFocusInOverlay","superFocusableEl","firstEl","ifFocusedOnUppyRecently","dashboardIsDisabled","savedScrollPosition","savedActiveElement","resizeObserver","darkModeMediaQuery","makeDashboardInsidesVisibleAnywayTimeout","requestCloseModal","removeTarget","newTargets","pluginState","targets","callerPluginId","callerPluginType","showFileEditor","getEditors","editor","selectFile","openModal","pageYOffset","isClosing","isHidden","updateBrowserHistory","handleKeyDownInModal","manualClose","history","isModalOpen","setDarkModeCapability","darkMode","isDarkModeOn","handleSystemDarkModeChange","isDarkModeOnNow","show","descriptors","webkitRelativePath","startListeningToResize","ResizeObserver","uppyDashboardInnerEl","contentRect","areInsidesReadyToBeVisible","observe","isModalAndClosed","stopListeningToResize","disconnect","recordIfFocusedOnUppyRecently","disableInteractiveElements","nodesToDisable","disable","pushState","handlePopState","keyCode","handleClickOutside","handlePaste","handleRootPaste","clipboardData","handleDragOver","somePluginCanHandleRootDrop","canSomePluginHandleRootDrop","canHandleRootDrop","hasFiles","doesEventHaveFiles","dropEffect","isDraggingOver","handleDragLeave","handleDrop","handleRootDrop","executedDropErrorOnce","handleKeyDownInInline","forInline","handlePasteOnBody","handleComplete","handleCancelRestore","generateLargeThumbnailIfSingleFile","thumbnailGenerator","fileForThumbnail","openFileEditorWhenFilesAdded","firstFile","isMetaEditorEnabled","isImageEditorEnabled","initEvents","showModalTrigger","addSupportedPluginIfNoTarget","removeEvents","superFocusOnEachUpdate","isFocusInUppy","isFocusNowhere","isInformerHidden","isModal","attachRenderFunctionToTarget","isTargetSupported","isSupported","getAcquirers","getProgressIndicators","progressindicators","Dashboard_Dashboard","isNoFiles","isSizeMD","isSizeHeightMD","dashboardClassName","showFileList","numberOfFilesForRecovery","numberOfGhosts","isMobileDevice","parentElement","addSpecifiedPluginsFromOptions","pluginID","autoDiscoverPlugins","typesAllowed","installedPlugin","getStatusBarOpts","getThumbnailGeneratorOpts","getInformerOpts","getStatusBarId","getThumbnailGeneratorId","getInformerId","matchMedia","isDarkModeOnFromTheStart","informer","statusBar","reactSupportedHtmlAttr","validHTMLAttribute","lib_getHTMLProps","Dashboard","react","Component","installPlugin","prevProps","uninstallPlugin","nonHtmlPropsHaveChanged_nonHtmlPropsHaveChanged","htmlProps","lib_Dashboard","drag_drop_lib_locale","dropHereOr","DragDrop_defaultOptions","inputName","DragDrop","fileInputRef","onInputChange","renderHiddenFileInput","renderArrowSvg","renderLabel","renderNote","file_input_lib_locale","chooseFiles","FileInput_defaultOptions","pretty","FileInput_FileInput","handleClick","zIndex","createContext","ProgressBar_defaultOptions","fixed","ProgressBar","interpolate","phrase","dollarRegex","interpolated","replacement","insertReplacement","newParts","defaultOnMissingKey","locales","pluralize","prevLocale","encodeFilename","suffix","character","getSafeFileId","instanceId","stableIdProviders","_getFileType_js__WEBPACK_IMPORTED_MODULE_0__","lastModified","fullFileName","lastDot","lib_mimeTypes","md","markdown","mp4","mp3","svg","jpg","png","webp","gif","heic","heif","yaml","yml","csv","tsv","tab","avi","mks","mkv","mov","dicom","doc","msg","docm","docx","dotm","dotx","xla","xlam","xlc","xlf","xlm","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xlw","txt","conf","pdf","zip","rar","tar","gz","dmg"],"sourceRoot":""}
|