@uploadcare/file-uploader 1.27.1 → 1.28.0-alpha.1

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.
Files changed (722) hide show
  1. package/dist/ActivityHeader-R6Mlx-dA.js +9 -0
  2. package/dist/ActivityHeader.css +23 -0
  3. package/dist/ActivityHeader.layered.css +24 -0
  4. package/dist/CameraSource-DDwj1jCV.js +511 -0
  5. package/dist/CameraSource-n1tun2Df.js +10 -0
  6. package/dist/CameraSource.css +180 -0
  7. package/dist/CameraSource.layered.css +209 -0
  8. package/dist/CloudImageEditor-DcVoIRb3.js +2163 -0
  9. package/dist/CloudImageEditorActivity-Csij4nlC.js +87 -0
  10. package/dist/CloudImageEditorActivity-DD4NdU0P.js +9 -0
  11. package/dist/CloudImageEditorActivity.css +14 -0
  12. package/dist/CloudImageEditorActivity.layered.css +15 -0
  13. package/dist/Config-DKOromHY.js +433 -0
  14. package/dist/Config.css +4 -0
  15. package/dist/Config.layered.css +5 -0
  16. package/dist/ExternalSource-6MSUgxqy.js +10 -0
  17. package/dist/ExternalSource-DVEjSkPB.js +253 -0
  18. package/dist/ExternalSource.css +98 -0
  19. package/dist/ExternalSource.layered.css +116 -0
  20. package/dist/Icon-tXRTvEF2.js +1810 -0
  21. package/dist/Icon.css +14 -0
  22. package/dist/Icon.layered.css +15 -0
  23. package/dist/LitUploaderBlock-LxeOZ0ya.js +998 -0
  24. package/dist/UrlSource-BkyX00I2.js +73 -0
  25. package/dist/UrlSource-RI8TSD48.js +10 -0
  26. package/dist/UrlSource.css +17 -0
  27. package/dist/UrlSource.layered.css +18 -0
  28. package/dist/abstract/CTX.d.ts +40 -0
  29. package/dist/abstract/TypedCollection.d.ts +47 -0
  30. package/dist/abstract/TypedCollection.test.d.ts +1 -0
  31. package/dist/abstract/TypedData.d.ts +12 -0
  32. package/dist/abstract/TypedData.test.d.ts +1 -0
  33. package/dist/abstract/UploaderPublicApi.d.ts +41 -0
  34. package/dist/abstract/buildOutputCollectionState.d.ts +3 -0
  35. package/dist/abstract/customConfigOptions.d.ts +65 -0
  36. package/dist/abstract/defineComponents.d.ts +1 -0
  37. package/dist/abstract/features/ClipboardLayer.d.ts +12 -0
  38. package/dist/abstract/loadFileUploaderFrom.d.ts +3 -4
  39. package/dist/abstract/loadFileUploaderFrom.js +7 -6
  40. package/dist/abstract/localeRegistry.d.ts +5 -0
  41. package/dist/abstract/managers/LocaleManager.d.ts +10 -0
  42. package/dist/abstract/managers/ModalManager.d.ts +53 -0
  43. package/dist/abstract/managers/SecureUploadsManager.d.ts +7 -0
  44. package/dist/abstract/managers/TelemetryManager.d.ts +41 -0
  45. package/dist/abstract/managers/ValidationManager.d.ts +34 -0
  46. package/dist/abstract/managers/__tests__/ModalManager.test.d.ts +13 -0
  47. package/dist/abstract/managers/__tests__/SecureUploadsManager.test.d.ts +1 -0
  48. package/dist/abstract/managers/a11y.d.ts +9 -0
  49. package/dist/abstract/managers/plugin/PluginManager.d.ts +25 -0
  50. package/dist/abstract/managers/plugin/PluginTypes.d.ts +146 -0
  51. package/dist/abstract/managers/plugin/index.d.ts +2 -0
  52. package/dist/abstract/sharedConfigKey.d.ts +2 -0
  53. package/dist/abstract/uploadEntrySchema.d.ts +34 -0
  54. package/dist/blocks/ActivityHeader/ActivityHeader.d.ts +8 -0
  55. package/dist/blocks/CameraSource/CameraSource.d.ts +121 -0
  56. package/dist/blocks/CameraSource/__tests__/calcCameraModes.test.d.ts +1 -0
  57. package/dist/blocks/CameraSource/calcCameraModes.d.ts +5 -0
  58. package/dist/blocks/CameraSource/constants.d.ts +15 -0
  59. package/dist/blocks/CloudImageEditor/index.d.ts +1 -0
  60. package/dist/blocks/CloudImageEditor/src/CloudImageEditorBlock.d.ts +60 -0
  61. package/dist/blocks/CloudImageEditor/src/CropFrame.d.ts +56 -0
  62. package/dist/blocks/CloudImageEditor/src/EditorAspectRatioButtonControl.d.ts +24 -0
  63. package/dist/blocks/CloudImageEditor/src/EditorButtonControl.d.ts +14 -0
  64. package/dist/blocks/CloudImageEditor/src/EditorCropButtonControl.d.ts +13 -0
  65. package/dist/blocks/CloudImageEditor/src/EditorFilterControl.d.ts +35 -0
  66. package/dist/blocks/CloudImageEditor/src/EditorImageCropper.d.ts +56 -0
  67. package/dist/blocks/CloudImageEditor/src/EditorImageFader.d.ts +63 -0
  68. package/dist/blocks/CloudImageEditor/src/EditorOperationControl.d.ts +15 -0
  69. package/dist/blocks/CloudImageEditor/src/EditorScroller.d.ts +15 -0
  70. package/dist/blocks/CloudImageEditor/src/EditorSlider.d.ts +33 -0
  71. package/dist/blocks/CloudImageEditor/src/EditorToolbar.d.ts +68 -0
  72. package/dist/blocks/CloudImageEditor/src/crop-utils.d.ts +36 -0
  73. package/dist/blocks/CloudImageEditor/src/crop-utils.test.d.ts +1 -0
  74. package/dist/blocks/CloudImageEditor/src/cropper-constants.d.ts +10 -0
  75. package/dist/blocks/CloudImageEditor/src/elements/button/BtnUi.d.ts +31 -0
  76. package/dist/blocks/CloudImageEditor/src/elements/line-loader/LineLoaderUi.d.ts +19 -0
  77. package/dist/blocks/CloudImageEditor/src/elements/presence-toggle/PresenceToggle.d.ts +27 -0
  78. package/dist/blocks/CloudImageEditor/src/elements/slider/SliderUi.d.ts +38 -0
  79. package/dist/blocks/CloudImageEditor/src/index.d.ts +15 -0
  80. package/dist/blocks/CloudImageEditor/src/lib/classNames.d.ts +5 -0
  81. package/dist/blocks/CloudImageEditor/src/lib/classNames.test.d.ts +1 -0
  82. package/dist/blocks/CloudImageEditor/src/lib/linspace.d.ts +1 -0
  83. package/dist/blocks/CloudImageEditor/src/lib/linspace.test.d.ts +1 -0
  84. package/dist/blocks/CloudImageEditor/src/lib/parseCropPreset.d.ts +4 -0
  85. package/dist/blocks/CloudImageEditor/src/lib/parseCropPreset.test.d.ts +1 -0
  86. package/dist/blocks/CloudImageEditor/src/lib/parseTabs.d.ts +2 -0
  87. package/dist/blocks/CloudImageEditor/src/lib/pick.d.ts +1 -0
  88. package/dist/blocks/CloudImageEditor/src/lib/pick.test.d.ts +1 -0
  89. package/dist/blocks/CloudImageEditor/src/lib/transformationUtils.d.ts +7 -0
  90. package/dist/blocks/CloudImageEditor/src/state.d.ts +20 -0
  91. package/dist/blocks/CloudImageEditor/src/svg-sprite.d.ts +2 -0
  92. package/dist/blocks/CloudImageEditor/src/toolbar-constants.d.ts +61 -0
  93. package/dist/blocks/CloudImageEditor/src/types.d.ts +60 -0
  94. package/dist/blocks/CloudImageEditor/src/util.d.ts +2 -0
  95. package/dist/blocks/CloudImageEditor/src/utils/parseFilterValue.d.ts +7 -0
  96. package/dist/blocks/CloudImageEditor/src/utils/parseFilterValue.test.d.ts +1 -0
  97. package/dist/blocks/CloudImageEditorActivity/CloudImageEditorActivity.d.ts +25 -0
  98. package/dist/blocks/Config/Config.d.ts +60 -0
  99. package/dist/blocks/Config/assertions.d.ts +5 -0
  100. package/dist/blocks/Config/computed-properties.d.ts +24 -0
  101. package/dist/blocks/Config/computed-properties.test.d.ts +1 -0
  102. package/dist/blocks/Config/initialConfig.d.ts +6 -0
  103. package/dist/blocks/Config/normalizeConfigValue.d.ts +2 -0
  104. package/dist/blocks/Config/validatorsType.d.ts +18 -0
  105. package/dist/blocks/Copyright/Copyright.d.ts +10 -0
  106. package/dist/blocks/DropArea/DropArea.d.ts +47 -0
  107. package/dist/blocks/DropArea/addDropzone.d.ts +17 -0
  108. package/dist/blocks/DropArea/getDropItems.d.ts +12 -0
  109. package/dist/blocks/ExternalSource/ExternalSource.d.ts +45 -0
  110. package/dist/blocks/ExternalSource/MessageBridge.d.ts +11 -0
  111. package/dist/blocks/ExternalSource/buildThemeDefinition.d.ts +4 -0
  112. package/dist/blocks/ExternalSource/query-string.d.ts +1 -0
  113. package/dist/blocks/ExternalSource/types.d.ts +105 -0
  114. package/dist/blocks/FileItem/FileItem.d.ts +50 -0
  115. package/dist/blocks/FileItem/FileItemConfig.d.ts +10 -0
  116. package/dist/blocks/FormInput/FormInput.d.ts +18 -0
  117. package/dist/blocks/Icon/Icon.d.ts +19 -0
  118. package/dist/blocks/Img/Img.d.ts +14 -0
  119. package/dist/blocks/Img/ImgBase.d.ts +29 -0
  120. package/dist/blocks/Img/ImgConfig.d.ts +28 -0
  121. package/dist/blocks/Img/configurations.d.ts +11 -0
  122. package/dist/blocks/Img/props-map.d.ts +28 -0
  123. package/dist/blocks/Img/utils/parseObjectToString.d.ts +2 -0
  124. package/dist/blocks/Modal/Modal.d.ts +34 -0
  125. package/dist/blocks/PluginActivityRenderer/PluginActivityRenderer.d.ts +32 -0
  126. package/dist/blocks/PluginActivityRenderer/index.d.ts +1 -0
  127. package/dist/blocks/ProgressBar/ProgressBar.d.ts +21 -0
  128. package/dist/blocks/ProgressBarCommon/ProgressBarCommon.d.ts +17 -0
  129. package/dist/blocks/Select/Select.d.ts +18 -0
  130. package/dist/blocks/SimpleBtn/SimpleBtn.d.ts +15 -0
  131. package/dist/blocks/SourceBtn/SourceBtn.d.ts +23 -0
  132. package/dist/blocks/SourceList/SourceList.d.ts +24 -0
  133. package/dist/blocks/Spinner/Spinner.d.ts +9 -0
  134. package/dist/blocks/StartFrom/StartFrom.d.ts +12 -0
  135. package/dist/blocks/Thumb/Thumb.d.ts +35 -0
  136. package/dist/blocks/UploadCtxProvider/EventEmitter.d.ts +70 -0
  137. package/dist/blocks/UploadCtxProvider/UploadCtxProvider.d.ts +44 -0
  138. package/dist/blocks/UploadList/UploadList.d.ts +39 -0
  139. package/dist/blocks/UrlSource/UrlSource.d.ts +14 -0
  140. package/dist/blocks/svg-backgrounds/svg-backgrounds.d.ts +3 -0
  141. package/dist/blocks/themes/uc-basic/svg-sprite.d.ts +2 -0
  142. package/dist/cameraPlugin-weRKO7eG.js +8 -0
  143. package/dist/cloud-image-editor-hhbyNWLG.js +11 -0
  144. package/dist/cloud-image-editor.css +1380 -0
  145. package/dist/cloud-image-editor.layered.css +1549 -0
  146. package/dist/cloudImageEditorPlugin-FjUgbMK3.js +8 -0
  147. package/dist/core.d.ts +42 -0
  148. package/dist/en-8OWEmZim.js +135 -0
  149. package/dist/env-mM-ksNPq.js +8 -0
  150. package/dist/env.d.ts +2 -4
  151. package/dist/env.js +7 -6
  152. package/dist/externalSourcesPlugin-CMBmLT8S.js +8 -0
  153. package/dist/imageShrinkPlugin-BN6loiP2.js +8 -0
  154. package/dist/index-base.css +2497 -0
  155. package/dist/index-base.layered.css +2837 -0
  156. package/dist/index.css +9 -6
  157. package/dist/index.d.ts +42 -2715
  158. package/dist/index.js +1796 -8
  159. package/dist/index.layered.css +9 -7
  160. package/dist/instagramPlugin-CXRm8MGL.js +8 -0
  161. package/dist/lit/BaseComponent.d.ts +12 -0
  162. package/dist/lit/Constructor.d.ts +1 -0
  163. package/dist/lit/CssDataMixin.d.ts +7 -0
  164. package/dist/lit/LightDomMixin.d.ts +8 -0
  165. package/dist/lit/LitActivityBlock.d.ts +53 -0
  166. package/dist/lit/LitBlock.d.ts +83 -0
  167. package/dist/lit/LitSolutionBlock.d.ts +21 -0
  168. package/dist/lit/LitUploaderBlock.d.ts +53 -0
  169. package/dist/lit/PubSubCompat.d.ts +18 -0
  170. package/dist/lit/RegisterableElementMixin.d.ts +7 -0
  171. package/dist/lit/SharedState.d.ts +119 -0
  172. package/dist/lit/SymbioteCompatMixin.d.ts +40 -0
  173. package/dist/lit/TestModeController.d.ts +16 -0
  174. package/dist/lit/Uid.d.ts +3 -0
  175. package/dist/lit/activity-constants.d.ts +11 -0
  176. package/dist/lit/createDebugPrinter.d.ts +3 -0
  177. package/dist/lit/findBlockInCtx.d.ts +3 -0
  178. package/dist/lit/getOutputData.d.ts +2 -0
  179. package/dist/lit/hasBlockInCtx.d.ts +3 -0
  180. package/dist/lit/l10n.d.ts +5 -0
  181. package/dist/lit/parseCssPropertyValue.d.ts +1 -0
  182. package/dist/lit/shared-instances.d.ts +65 -0
  183. package/dist/loadFileUploaderFrom-Bfz8L3VB.js +28 -0
  184. package/dist/locales/file-uploader/ar.d.ts +1 -4
  185. package/dist/locales/file-uploader/ar.js +142 -6
  186. package/dist/locales/file-uploader/az.d.ts +1 -4
  187. package/dist/locales/file-uploader/az.js +134 -6
  188. package/dist/locales/file-uploader/ca.d.ts +1 -4
  189. package/dist/locales/file-uploader/ca.js +136 -6
  190. package/dist/locales/file-uploader/cs.d.ts +1 -4
  191. package/dist/locales/file-uploader/cs.js +138 -6
  192. package/dist/locales/file-uploader/da.d.ts +1 -4
  193. package/dist/locales/file-uploader/da.js +134 -6
  194. package/dist/locales/file-uploader/de.d.ts +1 -4
  195. package/dist/locales/file-uploader/de.js +134 -6
  196. package/dist/locales/file-uploader/el.d.ts +1 -4
  197. package/dist/locales/file-uploader/el.js +134 -6
  198. package/dist/locales/file-uploader/en.d.ts +1 -4
  199. package/dist/locales/file-uploader/en.js +7 -6
  200. package/dist/locales/file-uploader/es.d.ts +1 -4
  201. package/dist/locales/file-uploader/es.js +136 -6
  202. package/dist/locales/file-uploader/et.d.ts +1 -4
  203. package/dist/locales/file-uploader/et.js +134 -6
  204. package/dist/locales/file-uploader/fi.d.ts +1 -4
  205. package/dist/locales/file-uploader/fi.js +134 -6
  206. package/dist/locales/file-uploader/fr.d.ts +1 -4
  207. package/dist/locales/file-uploader/fr.js +136 -6
  208. package/dist/locales/file-uploader/he.d.ts +1 -4
  209. package/dist/locales/file-uploader/he.js +136 -6
  210. package/dist/locales/file-uploader/hy.d.ts +1 -4
  211. package/dist/locales/file-uploader/hy.js +134 -6
  212. package/dist/locales/file-uploader/is.d.ts +1 -4
  213. package/dist/locales/file-uploader/is.js +134 -6
  214. package/dist/locales/file-uploader/it.d.ts +1 -4
  215. package/dist/locales/file-uploader/it.js +136 -6
  216. package/dist/locales/file-uploader/ja.d.ts +1 -4
  217. package/dist/locales/file-uploader/ja.js +134 -6
  218. package/dist/locales/file-uploader/ka.d.ts +1 -4
  219. package/dist/locales/file-uploader/ka.js +134 -6
  220. package/dist/locales/file-uploader/kk.d.ts +1 -4
  221. package/dist/locales/file-uploader/kk.js +134 -6
  222. package/dist/locales/file-uploader/ko.d.ts +1 -4
  223. package/dist/locales/file-uploader/ko.js +134 -6
  224. package/dist/locales/file-uploader/lv.d.ts +1 -4
  225. package/dist/locales/file-uploader/lv.js +136 -6
  226. package/dist/locales/file-uploader/nb.d.ts +1 -4
  227. package/dist/locales/file-uploader/nb.js +134 -6
  228. package/dist/locales/file-uploader/nl.d.ts +1 -4
  229. package/dist/locales/file-uploader/nl.js +134 -6
  230. package/dist/locales/file-uploader/pl.d.ts +1 -4
  231. package/dist/locales/file-uploader/pl.js +138 -6
  232. package/dist/locales/file-uploader/pt.d.ts +1 -4
  233. package/dist/locales/file-uploader/pt.js +136 -6
  234. package/dist/locales/file-uploader/ro.d.ts +1 -4
  235. package/dist/locales/file-uploader/ro.js +136 -6
  236. package/dist/locales/file-uploader/ru.d.ts +1 -4
  237. package/dist/locales/file-uploader/ru.js +138 -6
  238. package/dist/locales/file-uploader/sk.d.ts +1 -4
  239. package/dist/locales/file-uploader/sk.js +138 -6
  240. package/dist/locales/file-uploader/sr.d.ts +1 -4
  241. package/dist/locales/file-uploader/sr.js +136 -6
  242. package/dist/locales/file-uploader/sv.d.ts +1 -4
  243. package/dist/locales/file-uploader/sv.js +134 -6
  244. package/dist/locales/file-uploader/tr.d.ts +1 -4
  245. package/dist/locales/file-uploader/tr.js +134 -6
  246. package/dist/locales/file-uploader/uk.d.ts +1 -4
  247. package/dist/locales/file-uploader/uk.js +138 -6
  248. package/dist/locales/file-uploader/vi.d.ts +1 -4
  249. package/dist/locales/file-uploader/vi.js +134 -6
  250. package/dist/locales/file-uploader/zh-TW.d.ts +1 -4
  251. package/dist/locales/file-uploader/zh-TW.js +134 -6
  252. package/dist/locales/file-uploader/zh.d.ts +1 -4
  253. package/dist/locales/file-uploader/zh.js +134 -6
  254. package/dist/plugins/cameraPlugin.d.ts +2 -0
  255. package/dist/plugins/cloudImageEditorPlugin.d.ts +2 -0
  256. package/dist/plugins/externalSourcesPlugin.d.ts +2 -0
  257. package/dist/plugins/imageShrinkPlugin.d.ts +2 -0
  258. package/dist/plugins/instagramPlugin.d.ts +2 -0
  259. package/dist/plugins/unsplashPlugin.d.ts +16 -0
  260. package/dist/plugins/urlSourcePlugin.d.ts +2 -0
  261. package/dist/plugins-CGUls7EV.js +278 -0
  262. package/dist/solutions/adaptive-image/index.d.ts +2 -0
  263. package/dist/solutions/cloud-image-editor/CloudImageEditor.d.ts +11 -0
  264. package/dist/solutions/cloud-image-editor/index.d.ts +5 -0
  265. package/dist/solutions/file-uploader/inline/FileUploaderInline.d.ts +20 -0
  266. package/dist/solutions/file-uploader/inline/index.d.ts +1 -0
  267. package/dist/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts +23 -0
  268. package/dist/solutions/file-uploader/minimal/index.d.ts +1 -0
  269. package/dist/solutions/file-uploader/regular/FileUploaderRegular.d.ts +17 -0
  270. package/dist/solutions/file-uploader/regular/index.d.ts +1 -0
  271. package/dist/types/dom.d.ts +1 -0
  272. package/dist/types/events.d.ts +4 -0
  273. package/dist/types/exported.d.ts +492 -0
  274. package/dist/types/index.d.ts +5 -0
  275. package/dist/urlSourcePlugin-_WdbEhq2.js +8 -0
  276. package/dist/utils/UID.d.ts +5 -0
  277. package/dist/utils/UID.test.d.ts +1 -0
  278. package/dist/utils/UploadSource.d.ts +37 -0
  279. package/dist/utils/WindowHeightTracker.d.ts +9 -0
  280. package/dist/utils/abilities.d.ts +1 -0
  281. package/dist/utils/applyStyles.d.ts +1 -0
  282. package/dist/utils/browser-info.d.ts +12 -0
  283. package/dist/utils/browser-info.test.d.ts +1 -0
  284. package/dist/utils/cdn-utils.d.ts +53 -0
  285. package/dist/utils/cdn-utils.test.d.ts +1 -0
  286. package/dist/utils/comma-separated.d.ts +2 -0
  287. package/dist/utils/debounce.d.ts +3 -0
  288. package/dist/utils/delay.d.ts +1 -0
  289. package/dist/utils/fileTypes.d.ts +11 -0
  290. package/dist/utils/fileTypes.test.d.ts +1 -0
  291. package/dist/utils/get-top-level-origin.d.ts +1 -0
  292. package/dist/utils/get-top-level-origin.test.d.ts +1 -0
  293. package/dist/utils/getLocaleDirection.d.ts +1 -0
  294. package/dist/utils/getPluralForm.d.ts +1 -0
  295. package/dist/utils/getPluralForm.test.d.ts +1 -0
  296. package/dist/utils/isPromiseLike.d.ts +1 -0
  297. package/dist/utils/isPromiseLike.test.d.ts +1 -0
  298. package/dist/utils/isSecureTokenExpired.d.ts +8 -0
  299. package/dist/utils/isSecureTokenExpired.test.d.ts +1 -0
  300. package/dist/utils/memoize.d.ts +1 -0
  301. package/dist/utils/memoize.test.d.ts +1 -0
  302. package/dist/utils/mixinClass.d.ts +8 -0
  303. package/dist/utils/parseCdnUrl.d.ts +11 -0
  304. package/dist/utils/parseCdnUrl.test.d.ts +1 -0
  305. package/dist/utils/parseShrink.d.ts +7 -0
  306. package/dist/utils/parseShrink.test.d.ts +1 -0
  307. package/dist/utils/preloadImage.d.ts +10 -0
  308. package/dist/utils/prettyBytes.d.ts +11 -0
  309. package/dist/utils/prettyBytes.test.d.ts +1 -0
  310. package/dist/utils/resizeImage.d.ts +1 -0
  311. package/dist/utils/stringToArray.d.ts +1 -0
  312. package/dist/utils/stringToArray.test.d.ts +1 -0
  313. package/dist/utils/template-utils.d.ts +16 -0
  314. package/dist/utils/template-utils.test.d.ts +1 -0
  315. package/dist/utils/throttle.d.ts +3 -0
  316. package/dist/utils/toKebabCase.d.ts +2 -0
  317. package/dist/utils/toKebabCase.test.d.ts +1 -0
  318. package/dist/utils/transparentPixelSrc.d.ts +1 -0
  319. package/dist/utils/uniqueArray.d.ts +1 -0
  320. package/dist/utils/uniqueArray.test.d.ts +1 -0
  321. package/dist/utils/userAgent.d.ts +2 -0
  322. package/dist/utils/validators/collection/index.d.ts +2 -0
  323. package/dist/utils/validators/collection/validateCollectionUploadError.d.ts +2 -0
  324. package/dist/utils/validators/collection/validateMultiple.d.ts +2 -0
  325. package/dist/utils/validators/file/index.d.ts +4 -0
  326. package/dist/utils/validators/file/validateFileType.d.ts +2 -0
  327. package/dist/utils/validators/file/validateIsImage.d.ts +2 -0
  328. package/dist/utils/validators/file/validateMaxSizeLimit.d.ts +2 -0
  329. package/dist/utils/validators/file/validateUploadError.d.ts +2 -0
  330. package/dist/utils/warnOnce.d.ts +1 -0
  331. package/dist/utils/wildcardRegexp.d.ts +1 -0
  332. package/dist/utils/wildcardRegexp.test.d.ts +1 -0
  333. package/dist/utils/withResolvers.d.ts +5 -0
  334. package/dist/utils/withResolvers.test.d.ts +1 -0
  335. package/package.json +8 -2
  336. package/web/ActivityHeader-BFdTdVfD.js +9 -0
  337. package/web/ActivityHeader-DQy6rII1.js +9 -0
  338. package/web/ActivityHeader-DvzMl0uj.js +9 -0
  339. package/web/ActivityHeader-i4x6_Fne.js +9 -0
  340. package/web/CameraSource-BAWIA4Wm.js +508 -0
  341. package/web/CameraSource-BqZCQcij.js +11 -0
  342. package/web/CameraSource-Brxr4tz4.js +508 -0
  343. package/web/CameraSource-BvBJ5Uzy.js +508 -0
  344. package/web/CameraSource-CkHzIE-h.js +11 -0
  345. package/web/CameraSource-D964yPLu.js +508 -0
  346. package/web/CameraSource-DE48Az-f.js +11 -0
  347. package/web/CameraSource-DyPebtRF.js +478 -0
  348. package/web/CameraSource-pj7Xo81m.js +11 -0
  349. package/web/CloudImageEditor-CTgUWB07.js +2192 -0
  350. package/web/CloudImageEditor-CxqV9Lwm.js +2192 -0
  351. package/web/CloudImageEditor-DoLWHpqV.js +2192 -0
  352. package/web/CloudImageEditor-Drywn265.js +2192 -0
  353. package/web/CloudImageEditor-MXcaDtMx.js +2187 -0
  354. package/web/CloudImageEditorActivity-BPzmfaJV.js +85 -0
  355. package/web/CloudImageEditorActivity-Br8pU5gd.js +11 -0
  356. package/web/CloudImageEditorActivity-Cw8b2CEz.js +11 -0
  357. package/web/CloudImageEditorActivity-Df1ySGq0.js +86 -0
  358. package/web/CloudImageEditorActivity-DinG5r0y.js +11 -0
  359. package/web/CloudImageEditorActivity-DmnLLINR.js +85 -0
  360. package/web/CloudImageEditorActivity-U90BGCek.js +85 -0
  361. package/web/CloudImageEditorActivity-dNLQZRZI.js +11 -0
  362. package/web/CloudImageEditorActivity-ur-hQ-6p.js +85 -0
  363. package/web/Config-8hlBNhvs.js +455 -0
  364. package/web/Config-BDZhPIyz.js +455 -0
  365. package/web/Config-CJVNrrjj.js +455 -0
  366. package/web/Config-DvkVtlQ7.js +455 -0
  367. package/web/ExternalSource-B9ycBFiD.js +10 -0
  368. package/web/ExternalSource-BE7HX47E.js +250 -0
  369. package/web/ExternalSource-BL5GSlol.js +250 -0
  370. package/web/ExternalSource-BXQY6Dlc.js +10 -0
  371. package/web/ExternalSource-BXxH3JCD.js +250 -0
  372. package/web/ExternalSource-BYSS-PPV.js +245 -0
  373. package/web/ExternalSource-C57a61QN.js +10 -0
  374. package/web/ExternalSource-CKfMtOgU.js +250 -0
  375. package/web/ExternalSource-DP6q8ylB.js +10 -0
  376. package/web/LitUploaderBlock-AX6jOdAS.js +996 -0
  377. package/web/LitUploaderBlock-BjAaoLl2.js +996 -0
  378. package/web/LitUploaderBlock-D8E5HuwH.js +996 -0
  379. package/web/LitUploaderBlock-Dl3ce0Tc.js +996 -0
  380. package/web/LitUploaderBlock-Oi33U0uf.js +996 -0
  381. package/web/UrlSource-B9SX3K0L.js +10 -0
  382. package/web/UrlSource-C3zB1rCb.js +70 -0
  383. package/web/UrlSource-C7bEU6Xv.js +10 -0
  384. package/web/UrlSource-CE389CBz.js +70 -0
  385. package/web/UrlSource-CnvAJ58Y.js +10 -0
  386. package/web/UrlSource-CqF0h6B-.js +10 -0
  387. package/web/UrlSource-D-971Nut.js +70 -0
  388. package/web/UrlSource-DhI3YCt5.js +70 -0
  389. package/web/UrlSource-hWV7jtB2.js +70 -0
  390. package/web/abstract/CTX.d.ts +40 -0
  391. package/web/abstract/TypedCollection.d.ts +47 -0
  392. package/web/abstract/TypedCollection.test.d.ts +1 -0
  393. package/web/abstract/TypedData.d.ts +12 -0
  394. package/web/abstract/TypedData.test.d.ts +1 -0
  395. package/web/abstract/UploaderPublicApi.d.ts +41 -0
  396. package/web/abstract/buildOutputCollectionState.d.ts +3 -0
  397. package/web/abstract/customConfigOptions.d.ts +65 -0
  398. package/web/abstract/defineComponents.d.ts +1 -0
  399. package/web/abstract/features/ClipboardLayer.d.ts +12 -0
  400. package/web/abstract/loadFileUploaderFrom.d.ts +13 -0
  401. package/web/abstract/localeRegistry.d.ts +5 -0
  402. package/web/abstract/managers/LocaleManager.d.ts +10 -0
  403. package/web/abstract/managers/ModalManager.d.ts +53 -0
  404. package/web/abstract/managers/SecureUploadsManager.d.ts +7 -0
  405. package/web/abstract/managers/TelemetryManager.d.ts +41 -0
  406. package/web/abstract/managers/ValidationManager.d.ts +34 -0
  407. package/web/abstract/managers/__tests__/ModalManager.test.d.ts +13 -0
  408. package/web/abstract/managers/__tests__/SecureUploadsManager.test.d.ts +1 -0
  409. package/web/abstract/managers/a11y.d.ts +9 -0
  410. package/web/abstract/managers/plugin/PluginManager.d.ts +25 -0
  411. package/web/abstract/managers/plugin/PluginTypes.d.ts +146 -0
  412. package/web/abstract/managers/plugin/index.d.ts +2 -0
  413. package/web/abstract/sharedConfigKey.d.ts +2 -0
  414. package/web/abstract/uploadEntrySchema.d.ts +34 -0
  415. package/web/blocks/ActivityHeader/ActivityHeader.d.ts +8 -0
  416. package/web/blocks/CameraSource/CameraSource.d.ts +121 -0
  417. package/web/blocks/CameraSource/__tests__/calcCameraModes.test.d.ts +1 -0
  418. package/web/blocks/CameraSource/calcCameraModes.d.ts +5 -0
  419. package/web/blocks/CameraSource/constants.d.ts +15 -0
  420. package/web/blocks/CloudImageEditor/index.d.ts +1 -0
  421. package/web/blocks/CloudImageEditor/src/CloudImageEditorBlock.d.ts +60 -0
  422. package/web/blocks/CloudImageEditor/src/CropFrame.d.ts +56 -0
  423. package/web/blocks/CloudImageEditor/src/EditorAspectRatioButtonControl.d.ts +24 -0
  424. package/web/blocks/CloudImageEditor/src/EditorButtonControl.d.ts +14 -0
  425. package/web/blocks/CloudImageEditor/src/EditorCropButtonControl.d.ts +13 -0
  426. package/web/blocks/CloudImageEditor/src/EditorFilterControl.d.ts +35 -0
  427. package/web/blocks/CloudImageEditor/src/EditorImageCropper.d.ts +56 -0
  428. package/web/blocks/CloudImageEditor/src/EditorImageFader.d.ts +63 -0
  429. package/web/blocks/CloudImageEditor/src/EditorOperationControl.d.ts +15 -0
  430. package/web/blocks/CloudImageEditor/src/EditorScroller.d.ts +15 -0
  431. package/web/blocks/CloudImageEditor/src/EditorSlider.d.ts +33 -0
  432. package/web/blocks/CloudImageEditor/src/EditorToolbar.d.ts +68 -0
  433. package/web/blocks/CloudImageEditor/src/crop-utils.d.ts +36 -0
  434. package/web/blocks/CloudImageEditor/src/crop-utils.test.d.ts +1 -0
  435. package/web/blocks/CloudImageEditor/src/cropper-constants.d.ts +10 -0
  436. package/web/blocks/CloudImageEditor/src/elements/button/BtnUi.d.ts +31 -0
  437. package/web/blocks/CloudImageEditor/src/elements/line-loader/LineLoaderUi.d.ts +19 -0
  438. package/web/blocks/CloudImageEditor/src/elements/presence-toggle/PresenceToggle.d.ts +27 -0
  439. package/web/blocks/CloudImageEditor/src/elements/slider/SliderUi.d.ts +38 -0
  440. package/web/blocks/CloudImageEditor/src/index.d.ts +15 -0
  441. package/web/blocks/CloudImageEditor/src/lib/classNames.d.ts +5 -0
  442. package/web/blocks/CloudImageEditor/src/lib/classNames.test.d.ts +1 -0
  443. package/web/blocks/CloudImageEditor/src/lib/linspace.d.ts +1 -0
  444. package/web/blocks/CloudImageEditor/src/lib/linspace.test.d.ts +1 -0
  445. package/web/blocks/CloudImageEditor/src/lib/parseCropPreset.d.ts +4 -0
  446. package/web/blocks/CloudImageEditor/src/lib/parseCropPreset.test.d.ts +1 -0
  447. package/web/blocks/CloudImageEditor/src/lib/parseTabs.d.ts +2 -0
  448. package/web/blocks/CloudImageEditor/src/lib/pick.d.ts +1 -0
  449. package/web/blocks/CloudImageEditor/src/lib/pick.test.d.ts +1 -0
  450. package/web/blocks/CloudImageEditor/src/lib/transformationUtils.d.ts +7 -0
  451. package/web/blocks/CloudImageEditor/src/state.d.ts +20 -0
  452. package/web/blocks/CloudImageEditor/src/svg-sprite.d.ts +2 -0
  453. package/web/blocks/CloudImageEditor/src/toolbar-constants.d.ts +61 -0
  454. package/web/blocks/CloudImageEditor/src/types.d.ts +60 -0
  455. package/web/blocks/CloudImageEditor/src/util.d.ts +2 -0
  456. package/web/blocks/CloudImageEditor/src/utils/parseFilterValue.d.ts +7 -0
  457. package/web/blocks/CloudImageEditor/src/utils/parseFilterValue.test.d.ts +1 -0
  458. package/web/blocks/CloudImageEditorActivity/CloudImageEditorActivity.d.ts +25 -0
  459. package/web/blocks/Config/Config.d.ts +60 -0
  460. package/web/blocks/Config/assertions.d.ts +5 -0
  461. package/web/blocks/Config/computed-properties.d.ts +24 -0
  462. package/web/blocks/Config/computed-properties.test.d.ts +1 -0
  463. package/web/blocks/Config/initialConfig.d.ts +6 -0
  464. package/web/blocks/Config/normalizeConfigValue.d.ts +2 -0
  465. package/web/blocks/Config/validatorsType.d.ts +18 -0
  466. package/web/blocks/Copyright/Copyright.d.ts +10 -0
  467. package/web/blocks/DropArea/DropArea.d.ts +47 -0
  468. package/web/blocks/DropArea/addDropzone.d.ts +17 -0
  469. package/web/blocks/DropArea/getDropItems.d.ts +12 -0
  470. package/web/blocks/ExternalSource/ExternalSource.d.ts +45 -0
  471. package/web/blocks/ExternalSource/MessageBridge.d.ts +11 -0
  472. package/web/blocks/ExternalSource/buildThemeDefinition.d.ts +4 -0
  473. package/web/blocks/ExternalSource/query-string.d.ts +1 -0
  474. package/web/blocks/ExternalSource/types.d.ts +105 -0
  475. package/web/blocks/FileItem/FileItem.d.ts +50 -0
  476. package/web/blocks/FileItem/FileItemConfig.d.ts +10 -0
  477. package/web/blocks/FormInput/FormInput.d.ts +18 -0
  478. package/web/blocks/Icon/Icon.d.ts +19 -0
  479. package/web/blocks/Img/Img.d.ts +14 -0
  480. package/web/blocks/Img/ImgBase.d.ts +29 -0
  481. package/web/blocks/Img/ImgConfig.d.ts +28 -0
  482. package/web/blocks/Img/configurations.d.ts +11 -0
  483. package/web/blocks/Img/props-map.d.ts +28 -0
  484. package/web/blocks/Img/utils/parseObjectToString.d.ts +2 -0
  485. package/web/blocks/Modal/Modal.d.ts +34 -0
  486. package/web/blocks/PluginActivityRenderer/PluginActivityRenderer.d.ts +32 -0
  487. package/web/blocks/PluginActivityRenderer/index.d.ts +1 -0
  488. package/web/blocks/ProgressBar/ProgressBar.d.ts +21 -0
  489. package/web/blocks/ProgressBarCommon/ProgressBarCommon.d.ts +17 -0
  490. package/web/blocks/Select/Select.d.ts +18 -0
  491. package/web/blocks/SimpleBtn/SimpleBtn.d.ts +15 -0
  492. package/web/blocks/SourceBtn/SourceBtn.d.ts +23 -0
  493. package/web/blocks/SourceList/SourceList.d.ts +24 -0
  494. package/web/blocks/Spinner/Spinner.d.ts +9 -0
  495. package/web/blocks/StartFrom/StartFrom.d.ts +12 -0
  496. package/web/blocks/Thumb/Thumb.d.ts +35 -0
  497. package/web/blocks/UploadCtxProvider/EventEmitter.d.ts +70 -0
  498. package/web/blocks/UploadCtxProvider/UploadCtxProvider.d.ts +44 -0
  499. package/web/blocks/UploadList/UploadList.d.ts +39 -0
  500. package/web/blocks/UrlSource/UrlSource.d.ts +14 -0
  501. package/web/blocks/svg-backgrounds/svg-backgrounds.d.ts +3 -0
  502. package/web/blocks/themes/uc-basic/svg-sprite.d.ts +2 -0
  503. package/web/cameraPlugin-DeedXMWV.js +8 -0
  504. package/web/cameraPlugin-Duy1QwjB.js +8 -0
  505. package/web/cameraPlugin-QS9SUOtO.js +8 -0
  506. package/web/cameraPlugin-bq8ggY04.js +8 -0
  507. package/web/cameraPlugin-cel9YgP_.js +8 -0
  508. package/web/cloud-image-editor-8DrVRZ7E.js +12 -0
  509. package/web/cloud-image-editor-BX50EK1U.js +12 -0
  510. package/web/cloud-image-editor-DSW3oWq-.js +12 -0
  511. package/web/cloud-image-editor-DuI2Lx4M.js +12 -0
  512. package/web/cloudImageEditorPlugin-5my6aD36.js +8 -0
  513. package/web/cloudImageEditorPlugin-Bk19DmJv.js +8 -0
  514. package/web/cloudImageEditorPlugin-CcdnmtBW.js +8 -0
  515. package/web/cloudImageEditorPlugin-DQJmDl03.js +8 -0
  516. package/web/cloudImageEditorPlugin-kojghfqw.js +8 -0
  517. package/web/constants-BCfCF0cJ.js +4025 -0
  518. package/web/core.d.ts +42 -0
  519. package/web/env.d.ts +2 -0
  520. package/web/externalSourcesPlugin-BTeRm5C0.js +8 -0
  521. package/web/externalSourcesPlugin-BXgVeojg.js +8 -0
  522. package/web/externalSourcesPlugin-BgLpuIK9.js +8 -0
  523. package/web/externalSourcesPlugin-DMc9zs4T.js +8 -0
  524. package/web/externalSourcesPlugin-Dm9vnTBv.js +8 -0
  525. package/web/file-uploader.iife.min.js +697 -8
  526. package/web/file-uploader.min.js +1858 -7
  527. package/web/imageShrinkPlugin-BdHgEGZH.js +8 -0
  528. package/web/imageShrinkPlugin-BjkMGfvT.js +8 -0
  529. package/web/imageShrinkPlugin-CCkGHL2w.js +8 -0
  530. package/web/imageShrinkPlugin-D4WjaRGo.js +8 -0
  531. package/web/imageShrinkPlugin-DqYGutVx.js +8 -0
  532. package/web/index.d.ts +42 -0
  533. package/web/instagramPlugin-BTMz0K2a.js +8 -0
  534. package/web/instagramPlugin-BbIKgTH7.js +8 -0
  535. package/web/instagramPlugin-CQQhsEJa.js +8 -0
  536. package/web/instagramPlugin-Cm7lWKae.js +8 -0
  537. package/web/instagramPlugin-DcclxM_d.js +8 -0
  538. package/web/lit/BaseComponent.d.ts +12 -0
  539. package/web/lit/Constructor.d.ts +1 -0
  540. package/web/lit/CssDataMixin.d.ts +7 -0
  541. package/web/lit/LightDomMixin.d.ts +8 -0
  542. package/web/lit/LitActivityBlock.d.ts +53 -0
  543. package/web/lit/LitBlock.d.ts +83 -0
  544. package/web/lit/LitSolutionBlock.d.ts +21 -0
  545. package/web/lit/LitUploaderBlock.d.ts +53 -0
  546. package/web/lit/PubSubCompat.d.ts +18 -0
  547. package/web/lit/RegisterableElementMixin.d.ts +7 -0
  548. package/web/lit/SharedState.d.ts +119 -0
  549. package/web/lit/SymbioteCompatMixin.d.ts +40 -0
  550. package/web/lit/TestModeController.d.ts +16 -0
  551. package/web/lit/Uid.d.ts +3 -0
  552. package/web/lit/activity-constants.d.ts +11 -0
  553. package/web/lit/createDebugPrinter.d.ts +3 -0
  554. package/web/lit/findBlockInCtx.d.ts +3 -0
  555. package/web/lit/getOutputData.d.ts +2 -0
  556. package/web/lit/hasBlockInCtx.d.ts +3 -0
  557. package/web/lit/l10n.d.ts +5 -0
  558. package/web/lit/parseCssPropertyValue.d.ts +1 -0
  559. package/web/lit/shared-instances.d.ts +65 -0
  560. package/web/locales/file-uploader/ar.d.ts +137 -0
  561. package/web/locales/file-uploader/az.d.ts +129 -0
  562. package/web/locales/file-uploader/ca.d.ts +131 -0
  563. package/web/locales/file-uploader/cs.d.ts +133 -0
  564. package/web/locales/file-uploader/da.d.ts +129 -0
  565. package/web/locales/file-uploader/de.d.ts +129 -0
  566. package/web/locales/file-uploader/el.d.ts +129 -0
  567. package/web/locales/file-uploader/en.d.ts +129 -0
  568. package/web/locales/file-uploader/es.d.ts +131 -0
  569. package/web/locales/file-uploader/et.d.ts +129 -0
  570. package/web/locales/file-uploader/fi.d.ts +129 -0
  571. package/web/locales/file-uploader/fr.d.ts +131 -0
  572. package/web/locales/file-uploader/he.d.ts +131 -0
  573. package/web/locales/file-uploader/hy.d.ts +129 -0
  574. package/web/locales/file-uploader/is.d.ts +129 -0
  575. package/web/locales/file-uploader/it.d.ts +131 -0
  576. package/web/locales/file-uploader/ja.d.ts +129 -0
  577. package/web/locales/file-uploader/ka.d.ts +129 -0
  578. package/web/locales/file-uploader/kk.d.ts +129 -0
  579. package/web/locales/file-uploader/ko.d.ts +129 -0
  580. package/web/locales/file-uploader/lv.d.ts +131 -0
  581. package/web/locales/file-uploader/nb.d.ts +129 -0
  582. package/web/locales/file-uploader/nl.d.ts +129 -0
  583. package/web/locales/file-uploader/pl.d.ts +133 -0
  584. package/web/locales/file-uploader/pt.d.ts +131 -0
  585. package/web/locales/file-uploader/ro.d.ts +131 -0
  586. package/web/locales/file-uploader/ru.d.ts +133 -0
  587. package/web/locales/file-uploader/sk.d.ts +133 -0
  588. package/web/locales/file-uploader/sr.d.ts +131 -0
  589. package/web/locales/file-uploader/sv.d.ts +129 -0
  590. package/web/locales/file-uploader/tr.d.ts +129 -0
  591. package/web/locales/file-uploader/uk.d.ts +133 -0
  592. package/web/locales/file-uploader/vi.d.ts +129 -0
  593. package/web/locales/file-uploader/zh-TW.d.ts +129 -0
  594. package/web/locales/file-uploader/zh.d.ts +129 -0
  595. package/web/plugins/cameraPlugin.d.ts +2 -0
  596. package/web/plugins/cloudImageEditorPlugin.d.ts +2 -0
  597. package/web/plugins/externalSourcesPlugin.d.ts +2 -0
  598. package/web/plugins/imageShrinkPlugin.d.ts +2 -0
  599. package/web/plugins/instagramPlugin.d.ts +2 -0
  600. package/web/plugins/unsplashPlugin.d.ts +16 -0
  601. package/web/plugins/urlSourcePlugin.d.ts +2 -0
  602. package/web/plugins-Bt7FXHKx.js +562 -0
  603. package/web/plugins-CaaolyMk.js +562 -0
  604. package/web/plugins-Cjgw5oWg.js +562 -0
  605. package/web/plugins-CzNtrVQB.js +562 -0
  606. package/web/plugins-DS0hIs2V.js +563 -0
  607. package/web/ref-BOnG19ns.js +4040 -0
  608. package/web/ref-BejJFG7m.js +4040 -0
  609. package/web/ref-DcRg7zo9.js +4040 -0
  610. package/web/ref-ZWPcLQB9.js +4040 -0
  611. package/web/solutions/adaptive-image/index.d.ts +2 -0
  612. package/web/solutions/cloud-image-editor/CloudImageEditor.d.ts +11 -0
  613. package/web/solutions/cloud-image-editor/index.d.ts +5 -0
  614. package/web/solutions/file-uploader/inline/FileUploaderInline.d.ts +20 -0
  615. package/web/solutions/file-uploader/inline/index.d.ts +1 -0
  616. package/web/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts +23 -0
  617. package/web/solutions/file-uploader/minimal/index.d.ts +1 -0
  618. package/web/solutions/file-uploader/regular/FileUploaderRegular.d.ts +17 -0
  619. package/web/solutions/file-uploader/regular/index.d.ts +1 -0
  620. package/web/style-map-BmZdux7T.js +37 -0
  621. package/web/style-map-CZ6fSV6e.js +37 -0
  622. package/web/style-map-Dk7mLCrB.js +37 -0
  623. package/web/style-map-HkHnu9oA.js +37 -0
  624. package/web/style-map-tw1yUEaj.js +37 -0
  625. package/web/types/dom.d.ts +1 -0
  626. package/web/types/events.d.ts +4 -0
  627. package/web/types/exported.d.ts +492 -0
  628. package/web/types/index.d.ts +5 -0
  629. package/web/uc-basic.layered.min.css +6046 -7
  630. package/web/uc-basic.min.css +5487 -6
  631. package/web/uc-cloud-image-editor.layered.min.css +1884 -7
  632. package/web/uc-cloud-image-editor.min.css +1675 -6
  633. package/web/uc-cloud-image-editor.min.js +456 -7
  634. package/web/uc-file-uploader-inline.layered.min.css +4352 -7
  635. package/web/uc-file-uploader-inline.min.css +3836 -6
  636. package/web/uc-file-uploader-inline.min.js +1858 -7
  637. package/web/uc-file-uploader-minimal.layered.min.css +4352 -7
  638. package/web/uc-file-uploader-minimal.min.css +3836 -6
  639. package/web/uc-file-uploader-minimal.min.js +1858 -7
  640. package/web/uc-file-uploader-regular.layered.min.css +4352 -7
  641. package/web/uc-file-uploader-regular.min.css +3836 -6
  642. package/web/uc-file-uploader-regular.min.js +1858 -7
  643. package/web/uc-img.min.js +894 -7
  644. package/web/urlSourcePlugin-9lhcr02f.js +8 -0
  645. package/web/urlSourcePlugin-C-sLGhGb.js +8 -0
  646. package/web/urlSourcePlugin-DNXDpnRD.js +8 -0
  647. package/web/urlSourcePlugin-JnD0cnxb.js +8 -0
  648. package/web/urlSourcePlugin-hcMU2K6T.js +8 -0
  649. package/web/utils/UID.d.ts +5 -0
  650. package/web/utils/UID.test.d.ts +1 -0
  651. package/web/utils/UploadSource.d.ts +37 -0
  652. package/web/utils/WindowHeightTracker.d.ts +9 -0
  653. package/web/utils/abilities.d.ts +1 -0
  654. package/web/utils/applyStyles.d.ts +1 -0
  655. package/web/utils/browser-info.d.ts +12 -0
  656. package/web/utils/browser-info.test.d.ts +1 -0
  657. package/web/utils/cdn-utils.d.ts +53 -0
  658. package/web/utils/cdn-utils.test.d.ts +1 -0
  659. package/web/utils/comma-separated.d.ts +2 -0
  660. package/web/utils/debounce.d.ts +3 -0
  661. package/web/utils/delay.d.ts +1 -0
  662. package/web/utils/fileTypes.d.ts +11 -0
  663. package/web/utils/fileTypes.test.d.ts +1 -0
  664. package/web/utils/get-top-level-origin.d.ts +1 -0
  665. package/web/utils/get-top-level-origin.test.d.ts +1 -0
  666. package/web/utils/getLocaleDirection.d.ts +1 -0
  667. package/web/utils/getPluralForm.d.ts +1 -0
  668. package/web/utils/getPluralForm.test.d.ts +1 -0
  669. package/web/utils/isPromiseLike.d.ts +1 -0
  670. package/web/utils/isPromiseLike.test.d.ts +1 -0
  671. package/web/utils/isSecureTokenExpired.d.ts +8 -0
  672. package/web/utils/isSecureTokenExpired.test.d.ts +1 -0
  673. package/web/utils/memoize.d.ts +1 -0
  674. package/web/utils/memoize.test.d.ts +1 -0
  675. package/web/utils/mixinClass.d.ts +8 -0
  676. package/web/utils/parseCdnUrl.d.ts +11 -0
  677. package/web/utils/parseCdnUrl.test.d.ts +1 -0
  678. package/web/utils/parseShrink.d.ts +7 -0
  679. package/web/utils/parseShrink.test.d.ts +1 -0
  680. package/web/utils/preloadImage.d.ts +10 -0
  681. package/web/utils/prettyBytes.d.ts +11 -0
  682. package/web/utils/prettyBytes.test.d.ts +1 -0
  683. package/web/utils/resizeImage.d.ts +1 -0
  684. package/web/utils/stringToArray.d.ts +1 -0
  685. package/web/utils/stringToArray.test.d.ts +1 -0
  686. package/web/utils/template-utils.d.ts +16 -0
  687. package/web/utils/template-utils.test.d.ts +1 -0
  688. package/web/utils/throttle.d.ts +3 -0
  689. package/web/utils/toKebabCase.d.ts +2 -0
  690. package/web/utils/toKebabCase.test.d.ts +1 -0
  691. package/web/utils/transparentPixelSrc.d.ts +1 -0
  692. package/web/utils/uniqueArray.d.ts +1 -0
  693. package/web/utils/uniqueArray.test.d.ts +1 -0
  694. package/web/utils/userAgent.d.ts +2 -0
  695. package/web/utils/validators/collection/index.d.ts +2 -0
  696. package/web/utils/validators/collection/validateCollectionUploadError.d.ts +2 -0
  697. package/web/utils/validators/collection/validateMultiple.d.ts +2 -0
  698. package/web/utils/validators/file/index.d.ts +4 -0
  699. package/web/utils/validators/file/validateFileType.d.ts +2 -0
  700. package/web/utils/validators/file/validateIsImage.d.ts +2 -0
  701. package/web/utils/validators/file/validateMaxSizeLimit.d.ts +2 -0
  702. package/web/utils/validators/file/validateUploadError.d.ts +2 -0
  703. package/web/utils/warnOnce.d.ts +1 -0
  704. package/web/utils/wildcardRegexp.d.ts +1 -0
  705. package/web/utils/wildcardRegexp.test.d.ts +1 -0
  706. package/web/utils/withResolvers.d.ts +5 -0
  707. package/web/utils/withResolvers.test.d.ts +1 -0
  708. package/dist/index.ssr.js +0 -1538
  709. package/web/file-uploader.iife.min.d.ts +0 -2859
  710. package/web/file-uploader.iife.min.js.LEGAL.txt +0 -71
  711. package/web/file-uploader.min.d.ts +0 -2859
  712. package/web/file-uploader.min.js.LEGAL.txt +0 -71
  713. package/web/uc-cloud-image-editor.min.d.ts +0 -2816
  714. package/web/uc-cloud-image-editor.min.js.LEGAL.txt +0 -70
  715. package/web/uc-file-uploader-inline.min.d.ts +0 -2859
  716. package/web/uc-file-uploader-inline.min.js.LEGAL.txt +0 -71
  717. package/web/uc-file-uploader-minimal.min.d.ts +0 -2859
  718. package/web/uc-file-uploader-minimal.min.js.LEGAL.txt +0 -71
  719. package/web/uc-file-uploader-regular.min.d.ts +0 -2859
  720. package/web/uc-file-uploader-regular.min.js.LEGAL.txt +0 -71
  721. package/web/uc-img.min.d.ts +0 -75
  722. package/web/uc-img.min.js.LEGAL.txt +0 -24
@@ -0,0 +1,4025 @@
1
+ /**
2
+ * @license
3
+ * Package: @uploadcare/file-uploader@1.28.0-alpha.1 (MIT)
4
+ * License: https://github.com/uploadcare/blob/main/LICENSE
5
+ * Built: 2026-03-02T20:26:12.501Z
6
+ */
7
+ import { m as ACTIVITY_TYPES, p as serializeCsv } from "./plugins-DS0hIs2V.js";
8
+ /**
9
+ * @license
10
+ * Copyright 2019 Google LLC
11
+ * SPDX-License-Identifier: BSD-3-Clause
12
+ */
13
+ var t$4 = globalThis, e$7 = t$4.ShadowRoot && (t$4.ShadyCSS === void 0 || t$4.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, s$7 = Symbol(), o$8 = /* @__PURE__ */ new WeakMap(), n$7 = class {
14
+ constructor(d, m, v) {
15
+ if (this._$cssResult$ = !0, v !== s$7) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
16
+ this.cssText = d, this.t = m;
17
+ }
18
+ get styleSheet() {
19
+ let d = this.o, m = this.t;
20
+ if (e$7 && d === void 0) {
21
+ let v = m !== void 0 && m.length === 1;
22
+ v && (d = o$8.get(m)), d === void 0 && ((this.o = d = new CSSStyleSheet()).replaceSync(this.cssText), v && o$8.set(m, d));
23
+ }
24
+ return d;
25
+ }
26
+ toString() {
27
+ return this.cssText;
28
+ }
29
+ }, r$6 = (d) => new n$7(typeof d == "string" ? d : d + "", void 0, s$7), S$1 = (d, m) => {
30
+ if (e$7) d.adoptedStyleSheets = m.map((d) => d instanceof CSSStyleSheet ? d : d.styleSheet);
31
+ else for (let x of m) {
32
+ let m = document.createElement("style"), w = t$4.litNonce;
33
+ w !== void 0 && m.setAttribute("nonce", w), m.textContent = x.cssText, d.appendChild(m);
34
+ }
35
+ }, c$4 = e$7 ? (d) => d : (d) => d instanceof CSSStyleSheet ? ((d) => {
36
+ let m = "";
37
+ for (let v of d.cssRules) m += v.cssText;
38
+ return r$6(m);
39
+ })(d) : d, { is: i$6, defineProperty: e$6, getOwnPropertyDescriptor: h$5, getOwnPropertyNames: r$5, getOwnPropertySymbols: o$7, getPrototypeOf: n$6 } = Object, a$2 = globalThis, c$5 = a$2.trustedTypes, l$3 = c$5 ? c$5.emptyScript : "", p$3 = a$2.reactiveElementPolyfillSupport, d$2 = (d, m) => d, u$2 = {
40
+ toAttribute(d, m) {
41
+ switch (m) {
42
+ case Boolean:
43
+ d = d ? l$3 : null;
44
+ break;
45
+ case Object:
46
+ case Array: d = d == null ? d : JSON.stringify(d);
47
+ }
48
+ return d;
49
+ },
50
+ fromAttribute(d, m) {
51
+ let v = d;
52
+ switch (m) {
53
+ case Boolean:
54
+ v = d !== null;
55
+ break;
56
+ case Number:
57
+ v = d === null ? null : Number(d);
58
+ break;
59
+ case Object:
60
+ case Array: try {
61
+ v = JSON.parse(d);
62
+ } catch {
63
+ v = null;
64
+ }
65
+ }
66
+ return v;
67
+ }
68
+ }, f$3 = (d, m) => !i$6(d, m), b$1 = {
69
+ attribute: !0,
70
+ type: String,
71
+ converter: u$2,
72
+ reflect: !1,
73
+ useDefault: !1,
74
+ hasChanged: f$3
75
+ };
76
+ Symbol.metadata ??= Symbol("metadata"), a$2.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();
77
+ var y$1 = class extends HTMLElement {
78
+ static addInitializer(d) {
79
+ this._$Ei(), (this.l ??= []).push(d);
80
+ }
81
+ static get observedAttributes() {
82
+ return this.finalize(), this._$Eh && [...this._$Eh.keys()];
83
+ }
84
+ static createProperty(d, m = b$1) {
85
+ if (m.state && (m.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(d) && ((m = Object.create(m)).wrapped = !0), this.elementProperties.set(d, m), !m.noAccessor) {
86
+ let v = Symbol(), x = this.getPropertyDescriptor(d, v, m);
87
+ x !== void 0 && e$6(this.prototype, d, x);
88
+ }
89
+ }
90
+ static getPropertyDescriptor(d, m, v) {
91
+ let { get: x, set: w } = h$5(this.prototype, d) ?? {
92
+ get() {
93
+ return this[m];
94
+ },
95
+ set(d) {
96
+ this[m] = d;
97
+ }
98
+ };
99
+ return {
100
+ get: x,
101
+ set(m) {
102
+ let T = x?.call(this);
103
+ w?.call(this, m), this.requestUpdate(d, T, v);
104
+ },
105
+ configurable: !0,
106
+ enumerable: !0
107
+ };
108
+ }
109
+ static getPropertyOptions(d) {
110
+ return this.elementProperties.get(d) ?? b$1;
111
+ }
112
+ static _$Ei() {
113
+ if (this.hasOwnProperty(d$2("elementProperties"))) return;
114
+ let d = n$6(this);
115
+ d.finalize(), d.l !== void 0 && (this.l = [...d.l]), this.elementProperties = new Map(d.elementProperties);
116
+ }
117
+ static finalize() {
118
+ if (this.hasOwnProperty(d$2("finalized"))) return;
119
+ if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(d$2("properties"))) {
120
+ let d = this.properties, m = [...r$5(d), ...o$7(d)];
121
+ for (let v of m) this.createProperty(v, d[v]);
122
+ }
123
+ let d = this[Symbol.metadata];
124
+ if (d !== null) {
125
+ let m = litPropertyMetadata.get(d);
126
+ if (m !== void 0) for (let [d, v] of m) this.elementProperties.set(d, v);
127
+ }
128
+ this._$Eh = /* @__PURE__ */ new Map();
129
+ for (let [d, m] of this.elementProperties) {
130
+ let v = this._$Eu(d, m);
131
+ v !== void 0 && this._$Eh.set(v, d);
132
+ }
133
+ this.elementStyles = this.finalizeStyles(this.styles);
134
+ }
135
+ static finalizeStyles(d) {
136
+ let m = [];
137
+ if (Array.isArray(d)) {
138
+ let v = new Set(d.flat(Infinity).reverse());
139
+ for (let d of v) m.unshift(c$4(d));
140
+ } else d !== void 0 && m.push(c$4(d));
141
+ return m;
142
+ }
143
+ static _$Eu(d, m) {
144
+ let v = m.attribute;
145
+ return !1 === v ? void 0 : typeof v == "string" ? v : typeof d == "string" ? d.toLowerCase() : void 0;
146
+ }
147
+ constructor() {
148
+ super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
149
+ }
150
+ _$Ev() {
151
+ this._$ES = new Promise((d) => this.enableUpdating = d), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach((d) => d(this));
152
+ }
153
+ addController(d) {
154
+ (this._$EO ??= /* @__PURE__ */ new Set()).add(d), this.renderRoot !== void 0 && this.isConnected && d.hostConnected?.();
155
+ }
156
+ removeController(d) {
157
+ this._$EO?.delete(d);
158
+ }
159
+ _$E_() {
160
+ let d = /* @__PURE__ */ new Map(), m = this.constructor.elementProperties;
161
+ for (let v of m.keys()) this.hasOwnProperty(v) && (d.set(v, this[v]), delete this[v]);
162
+ d.size > 0 && (this._$Ep = d);
163
+ }
164
+ createRenderRoot() {
165
+ let d = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
166
+ return S$1(d, this.constructor.elementStyles), d;
167
+ }
168
+ connectedCallback() {
169
+ this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(!0), this._$EO?.forEach((d) => d.hostConnected?.());
170
+ }
171
+ enableUpdating(d) {}
172
+ disconnectedCallback() {
173
+ this._$EO?.forEach((d) => d.hostDisconnected?.());
174
+ }
175
+ attributeChangedCallback(d, m, v) {
176
+ this._$AK(d, v);
177
+ }
178
+ _$ET(d, m) {
179
+ let v = this.constructor.elementProperties.get(d), x = this.constructor._$Eu(d, v);
180
+ if (x !== void 0 && !0 === v.reflect) {
181
+ let w = (v.converter?.toAttribute === void 0 ? u$2 : v.converter).toAttribute(m, v.type);
182
+ this._$Em = d, w == null ? this.removeAttribute(x) : this.setAttribute(x, w), this._$Em = null;
183
+ }
184
+ }
185
+ _$AK(d, m) {
186
+ let v = this.constructor, x = v._$Eh.get(d);
187
+ if (x !== void 0 && this._$Em !== x) {
188
+ let d = v.getPropertyOptions(x), w = typeof d.converter == "function" ? { fromAttribute: d.converter } : d.converter?.fromAttribute === void 0 ? u$2 : d.converter;
189
+ this._$Em = x;
190
+ let T = w.fromAttribute(m, d.type);
191
+ this[x] = T ?? this._$Ej?.get(x) ?? T, this._$Em = null;
192
+ }
193
+ }
194
+ requestUpdate(d, m, v, x = !1, w) {
195
+ if (d !== void 0) {
196
+ let T = this.constructor;
197
+ if (!1 === x && (w = this[d]), v ??= T.getPropertyOptions(d), !((v.hasChanged ?? f$3)(w, m) || v.useDefault && v.reflect && w === this._$Ej?.get(d) && !this.hasAttribute(T._$Eu(d, v)))) return;
198
+ this.C(d, m, v);
199
+ }
200
+ !1 === this.isUpdatePending && (this._$ES = this._$EP());
201
+ }
202
+ C(d, m, { useDefault: v, reflect: x, wrapped: w }, T) {
203
+ v && !(this._$Ej ??= /* @__PURE__ */ new Map()).has(d) && (this._$Ej.set(d, T ?? m ?? this[d]), !0 !== w || T !== void 0) || (this._$AL.has(d) || (this.hasUpdated || v || (m = void 0), this._$AL.set(d, m)), !0 === x && this._$Em !== d && (this._$Eq ??= /* @__PURE__ */ new Set()).add(d));
204
+ }
205
+ async _$EP() {
206
+ this.isUpdatePending = !0;
207
+ try {
208
+ await this._$ES;
209
+ } catch (d) {
210
+ Promise.reject(d);
211
+ }
212
+ let d = this.scheduleUpdate();
213
+ return d != null && await d, !this.isUpdatePending;
214
+ }
215
+ scheduleUpdate() {
216
+ return this.performUpdate();
217
+ }
218
+ performUpdate() {
219
+ if (!this.isUpdatePending) return;
220
+ if (!this.hasUpdated) {
221
+ if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {
222
+ for (let [d, m] of this._$Ep) this[d] = m;
223
+ this._$Ep = void 0;
224
+ }
225
+ let d = this.constructor.elementProperties;
226
+ if (d.size > 0) for (let [m, v] of d) {
227
+ let { wrapped: d } = v, x = this[m];
228
+ !0 !== d || this._$AL.has(m) || x === void 0 || this.C(m, void 0, v, x);
229
+ }
230
+ }
231
+ let d = !1, m = this._$AL;
232
+ try {
233
+ d = this.shouldUpdate(m), d ? (this.willUpdate(m), this._$EO?.forEach((d) => d.hostUpdate?.()), this.update(m)) : this._$EM();
234
+ } catch (m) {
235
+ throw d = !1, this._$EM(), m;
236
+ }
237
+ d && this._$AE(m);
238
+ }
239
+ willUpdate(d) {}
240
+ _$AE(d) {
241
+ this._$EO?.forEach((d) => d.hostUpdated?.()), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(d)), this.updated(d);
242
+ }
243
+ _$EM() {
244
+ this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
245
+ }
246
+ get updateComplete() {
247
+ return this.getUpdateComplete();
248
+ }
249
+ getUpdateComplete() {
250
+ return this._$ES;
251
+ }
252
+ shouldUpdate(d) {
253
+ return !0;
254
+ }
255
+ update(d) {
256
+ this._$Eq &&= this._$Eq.forEach((d) => this._$ET(d, this[d])), this._$EM();
257
+ }
258
+ updated(d) {}
259
+ firstUpdated(d) {}
260
+ };
261
+ y$1.elementStyles = [], y$1.shadowRootOptions = { mode: "open" }, y$1[d$2("elementProperties")] = /* @__PURE__ */ new Map(), y$1[d$2("finalized")] = /* @__PURE__ */ new Map(), p$3?.({ ReactiveElement: y$1 }), (a$2.reactiveElementVersions ??= []).push("2.1.2");
262
+ /**
263
+ * @license
264
+ * Copyright 2017 Google LLC
265
+ * SPDX-License-Identifier: BSD-3-Clause
266
+ */
267
+ var t$3 = globalThis, i$5 = (d) => d, s$6 = t$3.trustedTypes, e$5 = s$6 ? s$6.createPolicy("lit-html", { createHTML: (d) => d }) : void 0, h$4 = "$lit$", o$6 = `lit$${Math.random().toFixed(9).slice(2)}$`, n$5 = "?" + o$6, r$4 = `<${n$5}>`, l$2 = document, c$3 = () => l$2.createComment(""), a$1 = (d) => d === null || typeof d != "object" && typeof d != "function", u$3 = Array.isArray, d$1 = (d) => u$3(d) || typeof d?.[Symbol.iterator] == "function", f$4 = "[ \n\f\r]", v$1 = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, _ = /-->/g, m$1 = />/g, p$2 = RegExp(`>|${f$4}(?:([^\\s"'>=/]+)(${f$4}*=${f$4}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`, "g"), g = /'/g, $ = /"/g, y$2 = /^(?:script|style|textarea|title)$/i, b = ((d) => (m, ...v) => ({
268
+ _$litType$: d,
269
+ strings: m,
270
+ values: v
271
+ }))(1), E = Symbol.for("lit-noChange"), A = Symbol.for("lit-nothing"), C = /* @__PURE__ */ new WeakMap(), P = l$2.createTreeWalker(l$2, 129);
272
+ function V(d, m) {
273
+ if (!u$3(d) || !d.hasOwnProperty("raw")) throw Error("invalid template strings array");
274
+ return e$5 === void 0 ? m : e$5.createHTML(m);
275
+ }
276
+ var N = (d, m) => {
277
+ let v = d.length - 1, x = [], w, T = m === 2 ? "<svg>" : m === 3 ? "<math>" : "", O = v$1;
278
+ for (let m = 0; m < v; m++) {
279
+ let v = d[m], M, F, U = -1, W = 0;
280
+ for (; W < v.length && (O.lastIndex = W, F = O.exec(v), F !== null);) W = O.lastIndex, O === v$1 ? F[1] === "!--" ? O = _ : F[1] === void 0 ? F[2] === void 0 ? F[3] !== void 0 && (O = p$2) : (y$2.test(F[2]) && (w = RegExp("</" + F[2], "g")), O = p$2) : O = m$1 : O === p$2 ? F[0] === ">" ? (O = w ?? v$1, U = -1) : F[1] === void 0 ? U = -2 : (U = O.lastIndex - F[2].length, M = F[1], O = F[3] === void 0 ? p$2 : F[3] === "\"" ? $ : g) : O === $ || O === g ? O = p$2 : O === _ || O === m$1 ? O = v$1 : (O = p$2, w = void 0);
281
+ let G = O === p$2 && d[m + 1].startsWith("/>") ? " " : "";
282
+ T += O === v$1 ? v + r$4 : U >= 0 ? (x.push(M), v.slice(0, U) + h$4 + v.slice(U) + o$6 + G) : v + o$6 + (U === -2 ? m : G);
283
+ }
284
+ return [V(d, T + (d[v] || "<?>") + (m === 2 ? "</svg>" : m === 3 ? "</math>" : "")), x];
285
+ }, S = class d {
286
+ constructor({ strings: m, _$litType$: v }, x) {
287
+ let w;
288
+ this.parts = [];
289
+ let T = 0, O = 0, M = m.length - 1, F = this.parts, [U, W] = N(m, v);
290
+ if (this.el = d.createElement(U, x), P.currentNode = this.el.content, v === 2 || v === 3) {
291
+ let d = this.el.content.firstChild;
292
+ d.replaceWith(...d.childNodes);
293
+ }
294
+ for (; (w = P.nextNode()) !== null && F.length < M;) {
295
+ if (w.nodeType === 1) {
296
+ if (w.hasAttributes()) for (let d of w.getAttributeNames()) if (d.endsWith(h$4)) {
297
+ let m = W[O++], v = w.getAttribute(d).split(o$6), x = /([.?@])?(.*)/.exec(m);
298
+ F.push({
299
+ type: 1,
300
+ index: T,
301
+ name: x[2],
302
+ strings: v,
303
+ ctor: x[1] === "." ? I : x[1] === "?" ? L : x[1] === "@" ? z : H
304
+ }), w.removeAttribute(d);
305
+ } else d.startsWith(o$6) && (F.push({
306
+ type: 6,
307
+ index: T
308
+ }), w.removeAttribute(d));
309
+ if (y$2.test(w.tagName)) {
310
+ let d = w.textContent.split(o$6), m = d.length - 1;
311
+ if (m > 0) {
312
+ w.textContent = s$6 ? s$6.emptyScript : "";
313
+ for (let v = 0; v < m; v++) w.append(d[v], c$3()), P.nextNode(), F.push({
314
+ type: 2,
315
+ index: ++T
316
+ });
317
+ w.append(d[m], c$3());
318
+ }
319
+ }
320
+ } else if (w.nodeType === 8) if (w.data === n$5) F.push({
321
+ type: 2,
322
+ index: T
323
+ });
324
+ else {
325
+ let d = -1;
326
+ for (; (d = w.data.indexOf(o$6, d + 1)) !== -1;) F.push({
327
+ type: 7,
328
+ index: T
329
+ }), d += o$6.length - 1;
330
+ }
331
+ T++;
332
+ }
333
+ }
334
+ static createElement(d, m) {
335
+ let v = l$2.createElement("template");
336
+ return v.innerHTML = d, v;
337
+ }
338
+ };
339
+ function M$1(d, m, v = d, x) {
340
+ if (m === E) return m;
341
+ let w = x === void 0 ? v._$Cl : v._$Co?.[x], T = a$1(m) ? void 0 : m._$litDirective$;
342
+ return w?.constructor !== T && (w?._$AO?.(!1), T === void 0 ? w = void 0 : (w = new T(d), w._$AT(d, v, x)), x === void 0 ? v._$Cl = w : (v._$Co ??= [])[x] = w), w !== void 0 && (m = M$1(d, w._$AS(d, m.values), w, x)), m;
343
+ }
344
+ var R = class {
345
+ constructor(d, m) {
346
+ this._$AV = [], this._$AN = void 0, this._$AD = d, this._$AM = m;
347
+ }
348
+ get parentNode() {
349
+ return this._$AM.parentNode;
350
+ }
351
+ get _$AU() {
352
+ return this._$AM._$AU;
353
+ }
354
+ u(d) {
355
+ let { el: { content: m }, parts: v } = this._$AD, x = (d?.creationScope ?? l$2).importNode(m, !0);
356
+ P.currentNode = x;
357
+ let w = P.nextNode(), T = 0, O = 0, M = v[0];
358
+ for (; M !== void 0;) {
359
+ if (T === M.index) {
360
+ let m;
361
+ M.type === 2 ? m = new k(w, w.nextSibling, this, d) : M.type === 1 ? m = new M.ctor(w, M.name, M.strings, this, d) : M.type === 6 && (m = new Z(w, this, d)), this._$AV.push(m), M = v[++O];
362
+ }
363
+ T !== M?.index && (w = P.nextNode(), T++);
364
+ }
365
+ return P.currentNode = l$2, x;
366
+ }
367
+ p(d) {
368
+ let m = 0;
369
+ for (let v of this._$AV) v !== void 0 && (v.strings === void 0 ? v._$AI(d[m]) : (v._$AI(d, v, m), m += v.strings.length - 2)), m++;
370
+ }
371
+ }, k = class d {
372
+ get _$AU() {
373
+ return this._$AM?._$AU ?? this._$Cv;
374
+ }
375
+ constructor(d, m, v, x) {
376
+ this.type = 2, this._$AH = A, this._$AN = void 0, this._$AA = d, this._$AB = m, this._$AM = v, this.options = x, this._$Cv = x?.isConnected ?? !0;
377
+ }
378
+ get parentNode() {
379
+ let d = this._$AA.parentNode, m = this._$AM;
380
+ return m !== void 0 && d?.nodeType === 11 && (d = m.parentNode), d;
381
+ }
382
+ get startNode() {
383
+ return this._$AA;
384
+ }
385
+ get endNode() {
386
+ return this._$AB;
387
+ }
388
+ _$AI(d, m = this) {
389
+ d = M$1(this, d, m), a$1(d) ? d === A || d == null || d === "" ? (this._$AH !== A && this._$AR(), this._$AH = A) : d !== this._$AH && d !== E && this._(d) : d._$litType$ === void 0 ? d.nodeType === void 0 ? d$1(d) ? this.k(d) : this._(d) : this.T(d) : this.$(d);
390
+ }
391
+ O(d) {
392
+ return this._$AA.parentNode.insertBefore(d, this._$AB);
393
+ }
394
+ T(d) {
395
+ this._$AH !== d && (this._$AR(), this._$AH = this.O(d));
396
+ }
397
+ _(d) {
398
+ this._$AH !== A && a$1(this._$AH) ? this._$AA.nextSibling.data = d : this.T(l$2.createTextNode(d)), this._$AH = d;
399
+ }
400
+ $(d) {
401
+ let { values: m, _$litType$: v } = d, x = typeof v == "number" ? this._$AC(d) : (v.el === void 0 && (v.el = S.createElement(V(v.h, v.h[0]), this.options)), v);
402
+ if (this._$AH?._$AD === x) this._$AH.p(m);
403
+ else {
404
+ let d = new R(x, this), v = d.u(this.options);
405
+ d.p(m), this.T(v), this._$AH = d;
406
+ }
407
+ }
408
+ _$AC(d) {
409
+ let m = C.get(d.strings);
410
+ return m === void 0 && C.set(d.strings, m = new S(d)), m;
411
+ }
412
+ k(m) {
413
+ u$3(this._$AH) || (this._$AH = [], this._$AR());
414
+ let v = this._$AH, x, w = 0;
415
+ for (let T of m) w === v.length ? v.push(x = new d(this.O(c$3()), this.O(c$3()), this, this.options)) : x = v[w], x._$AI(T), w++;
416
+ w < v.length && (this._$AR(x && x._$AB.nextSibling, w), v.length = w);
417
+ }
418
+ _$AR(d = this._$AA.nextSibling, m) {
419
+ for (this._$AP?.(!1, !0, m); d !== this._$AB;) {
420
+ let m = i$5(d).nextSibling;
421
+ i$5(d).remove(), d = m;
422
+ }
423
+ }
424
+ setConnected(d) {
425
+ this._$AM === void 0 && (this._$Cv = d, this._$AP?.(d));
426
+ }
427
+ }, H = class {
428
+ get tagName() {
429
+ return this.element.tagName;
430
+ }
431
+ get _$AU() {
432
+ return this._$AM._$AU;
433
+ }
434
+ constructor(d, m, v, x, w) {
435
+ this.type = 1, this._$AH = A, this._$AN = void 0, this.element = d, this.name = m, this._$AM = x, this.options = w, v.length > 2 || v[0] !== "" || v[1] !== "" ? (this._$AH = Array(v.length - 1).fill(/* @__PURE__ */ new String()), this.strings = v) : this._$AH = A;
436
+ }
437
+ _$AI(d, m = this, v, x) {
438
+ let w = this.strings, T = !1;
439
+ if (w === void 0) d = M$1(this, d, m, 0), T = !a$1(d) || d !== this._$AH && d !== E, T && (this._$AH = d);
440
+ else {
441
+ let x = d, O, M;
442
+ for (d = w[0], O = 0; O < w.length - 1; O++) M = M$1(this, x[v + O], m, O), M === E && (M = this._$AH[O]), T ||= !a$1(M) || M !== this._$AH[O], M === A ? d = A : d !== A && (d += (M ?? "") + w[O + 1]), this._$AH[O] = M;
443
+ }
444
+ T && !x && this.j(d);
445
+ }
446
+ j(d) {
447
+ d === A ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, d ?? "");
448
+ }
449
+ }, I = class extends H {
450
+ constructor() {
451
+ super(...arguments), this.type = 3;
452
+ }
453
+ j(d) {
454
+ this.element[this.name] = d === A ? void 0 : d;
455
+ }
456
+ }, L = class extends H {
457
+ constructor() {
458
+ super(...arguments), this.type = 4;
459
+ }
460
+ j(d) {
461
+ this.element.toggleAttribute(this.name, !!d && d !== A);
462
+ }
463
+ }, z = class extends H {
464
+ constructor(d, m, v, x, w) {
465
+ super(d, m, v, x, w), this.type = 5;
466
+ }
467
+ _$AI(d, m = this) {
468
+ if ((d = M$1(this, d, m, 0) ?? A) === E) return;
469
+ let v = this._$AH, x = d === A && v !== A || d.capture !== v.capture || d.once !== v.once || d.passive !== v.passive, w = d !== A && (v === A || x);
470
+ x && this.element.removeEventListener(this.name, this, v), w && this.element.addEventListener(this.name, this, d), this._$AH = d;
471
+ }
472
+ handleEvent(d) {
473
+ typeof this._$AH == "function" ? this._$AH.call(this.options?.host ?? this.element, d) : this._$AH.handleEvent(d);
474
+ }
475
+ }, Z = class {
476
+ constructor(d, m, v) {
477
+ this.element = d, this.type = 6, this._$AN = void 0, this._$AM = m, this.options = v;
478
+ }
479
+ get _$AU() {
480
+ return this._$AM._$AU;
481
+ }
482
+ _$AI(d) {
483
+ M$1(this, d);
484
+ }
485
+ }, j = {
486
+ M: h$4,
487
+ P: o$6,
488
+ A: n$5,
489
+ C: 1,
490
+ L: N,
491
+ R,
492
+ D: d$1,
493
+ V: M$1,
494
+ I: k,
495
+ H,
496
+ N: L,
497
+ U: z,
498
+ B: I,
499
+ F: Z
500
+ }, B = t$3.litHtmlPolyfillSupport;
501
+ B?.(S, k), (t$3.litHtmlVersions ??= []).push("3.3.2");
502
+ var D = (d, m, v) => {
503
+ let x = v?.renderBefore ?? m, w = x._$litPart$;
504
+ if (w === void 0) {
505
+ let d = v?.renderBefore ?? null;
506
+ x._$litPart$ = w = new k(m.insertBefore(c$3(), d), d, void 0, v ?? {});
507
+ }
508
+ return w._$AI(d), w;
509
+ }, s$5 = globalThis, i = class extends y$1 {
510
+ constructor() {
511
+ super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
512
+ }
513
+ createRenderRoot() {
514
+ let d = super.createRenderRoot();
515
+ return this.renderOptions.renderBefore ??= d.firstChild, d;
516
+ }
517
+ update(d) {
518
+ let m = this.render();
519
+ this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(d), this._$Do = D(m, this.renderRoot, this.renderOptions);
520
+ }
521
+ connectedCallback() {
522
+ super.connectedCallback(), this._$Do?.setConnected(!0);
523
+ }
524
+ disconnectedCallback() {
525
+ super.disconnectedCallback(), this._$Do?.setConnected(!1);
526
+ }
527
+ render() {
528
+ return E;
529
+ }
530
+ };
531
+ i._$litElement$ = !0, i.finalized = !0, s$5.litElementHydrateSupport?.({ LitElement: i });
532
+ var o$5 = s$5.litElementPolyfillSupport;
533
+ o$5?.({ LitElement: i }), (s$5.litElementVersions ??= []).push("4.2.2");
534
+ /**
535
+ * @license
536
+ * Copyright 2017 Google LLC
537
+ * SPDX-License-Identifier: BSD-3-Clause
538
+ */ var o$4 = {
539
+ attribute: !0,
540
+ type: String,
541
+ converter: u$2,
542
+ reflect: !1,
543
+ hasChanged: f$3
544
+ }, r$3 = (d = o$4, m, v) => {
545
+ let { kind: x, metadata: w } = v, T = globalThis.litPropertyMetadata.get(w);
546
+ if (T === void 0 && globalThis.litPropertyMetadata.set(w, T = /* @__PURE__ */ new Map()), x === "setter" && ((d = Object.create(d)).wrapped = !0), T.set(v.name, d), x === "accessor") {
547
+ let { name: x } = v;
548
+ return {
549
+ set(v) {
550
+ let w = m.get.call(this);
551
+ m.set.call(this, v), this.requestUpdate(x, w, d, !0, v);
552
+ },
553
+ init(m) {
554
+ return m !== void 0 && this.C(x, void 0, d, m), m;
555
+ }
556
+ };
557
+ }
558
+ if (x === "setter") {
559
+ let { name: x } = v;
560
+ return function(v) {
561
+ let w = this[x];
562
+ m.call(this, v), this.requestUpdate(x, w, d, !0, v);
563
+ };
564
+ }
565
+ throw Error("Unsupported decorator location: " + x);
566
+ };
567
+ function n(d) {
568
+ return (m, v) => typeof v == "object" ? r$3(d, m, v) : ((d, m, v) => {
569
+ let x = m.hasOwnProperty(v);
570
+ return m.constructor.createProperty(v, d), x ? Object.getOwnPropertyDescriptor(m, v) : void 0;
571
+ })(d, m, v);
572
+ }
573
+ /**
574
+ * @license
575
+ * Copyright 2017 Google LLC
576
+ * SPDX-License-Identifier: BSD-3-Clause
577
+ */ function r(d) {
578
+ return n({
579
+ ...d,
580
+ state: !0,
581
+ attribute: !1
582
+ });
583
+ }
584
+ /**
585
+ * @license
586
+ * Copyright 2020 Google LLC
587
+ * SPDX-License-Identifier: BSD-3-Clause
588
+ */ var { I: t$2 } = j, r$1 = (d) => d.strings === void 0, t$1 = {
589
+ ATTRIBUTE: 1,
590
+ CHILD: 2,
591
+ PROPERTY: 3,
592
+ BOOLEAN_ATTRIBUTE: 4,
593
+ EVENT: 5,
594
+ ELEMENT: 6
595
+ }, e$1 = (d) => (...m) => ({
596
+ _$litDirective$: d,
597
+ values: m
598
+ }), i$3 = class {
599
+ constructor(d) {}
600
+ get _$AU() {
601
+ return this._$AM._$AU;
602
+ }
603
+ _$AT(d, m, v) {
604
+ this._$Ct = d, this._$AM = m, this._$Ci = v;
605
+ }
606
+ _$AS(d, m) {
607
+ return this.update(d, m);
608
+ }
609
+ update(d, m) {
610
+ return this.render(...m);
611
+ }
612
+ }, s$3 = (d, m) => {
613
+ let v = d._$AN;
614
+ if (v === void 0) return !1;
615
+ for (let d of v) d._$AO?.(m, !1), s$3(d, m);
616
+ return !0;
617
+ }, o$3 = (d) => {
618
+ let m, v;
619
+ do {
620
+ if ((m = d._$AM) === void 0) break;
621
+ v = m._$AN, v.delete(d), d = m;
622
+ } while (v?.size === 0);
623
+ }, r$2 = (d) => {
624
+ for (let m; m = d._$AM; d = m) {
625
+ let v = m._$AN;
626
+ if (v === void 0) m._$AN = v = /* @__PURE__ */ new Set();
627
+ else if (v.has(d)) break;
628
+ v.add(d), c$1(m);
629
+ }
630
+ };
631
+ function h$2(d) {
632
+ this._$AN === void 0 ? this._$AM = d : (o$3(this), this._$AM = d, r$2(this));
633
+ }
634
+ function n$3(d, m = !1, v = 0) {
635
+ let x = this._$AH, w = this._$AN;
636
+ if (w !== void 0 && w.size !== 0) if (m) if (Array.isArray(x)) for (let d = v; d < x.length; d++) s$3(x[d], !1), o$3(x[d]);
637
+ else x != null && (s$3(x, !1), o$3(x));
638
+ else s$3(this, d);
639
+ }
640
+ var c$1 = (d) => {
641
+ d.type == t$1.CHILD && (d._$AP ??= n$3, d._$AQ ??= h$2);
642
+ }, f$1 = class extends i$3 {
643
+ constructor() {
644
+ super(...arguments), this._$AN = void 0;
645
+ }
646
+ _$AT(d, m, v) {
647
+ super._$AT(d, m, v), r$2(this), this.isConnected = d._$AU;
648
+ }
649
+ _$AO(d, m = !0) {
650
+ d !== this.isConnected && (this.isConnected = d, d ? this.reconnected?.() : this.disconnected?.()), m && (s$3(this, d), o$3(this));
651
+ }
652
+ setValue(d) {
653
+ if (r$1(this._$Ct)) this._$Ct._$AI(d, this);
654
+ else {
655
+ let m = [...this._$Ct._$AH];
656
+ m[this._$Ci] = d, this._$Ct._$AI(m, this, 0);
657
+ }
658
+ }
659
+ disconnected() {}
660
+ reconnected() {}
661
+ }, e$3 = () => new h$1(), h$1 = class {}, o$2 = /* @__PURE__ */ new WeakMap(), n$2 = e$1(class extends f$1 {
662
+ render(d) {
663
+ return A;
664
+ }
665
+ update(d, [m]) {
666
+ let v = m !== this.G;
667
+ return v && this.G !== void 0 && this.rt(void 0), (v || this.lt !== this.ct) && (this.G = m, this.ht = d.options?.host, this.rt(this.ct = d.element)), A;
668
+ }
669
+ rt(d) {
670
+ if (this.isConnected || (d = void 0), typeof this.G == "function") {
671
+ let m = this.ht ?? globalThis, v = o$2.get(m);
672
+ v === void 0 && (v = /* @__PURE__ */ new WeakMap(), o$2.set(m, v)), v.get(this.G) !== void 0 && this.G.call(this.ht, void 0), v.set(this.G, d), d !== void 0 && this.G.call(this.ht, d);
673
+ } else this.G.value = d;
674
+ }
675
+ get lt() {
676
+ return typeof this.G == "function" ? o$2.get(this.ht ?? globalThis)?.get(this.G) : this.G?.value;
677
+ }
678
+ disconnected() {
679
+ this.lt === this.ct && this.rt(void 0);
680
+ }
681
+ reconnected() {
682
+ this.rt(this.ct);
683
+ }
684
+ }), e$2 = class extends i$3 {
685
+ constructor(d) {
686
+ if (super(d), this.it = A, d.type !== t$1.CHILD) throw Error(this.constructor.directiveName + "() can only be used in child bindings");
687
+ }
688
+ render(d) {
689
+ if (d === A || d == null) return this._t = void 0, this.it = d;
690
+ if (d === E) return d;
691
+ if (typeof d != "string") throw Error(this.constructor.directiveName + "() called with a non-string value");
692
+ if (d === this.it) return this._t;
693
+ this.it = d;
694
+ let m = [d];
695
+ return m.raw = m, this._t = {
696
+ _$litType$: this.constructor.resultType,
697
+ strings: m,
698
+ values: []
699
+ };
700
+ }
701
+ };
702
+ e$2.directiveName = "unsafeHTML", e$2.resultType = 1;
703
+ /**
704
+ * @license
705
+ * Copyright 2017 Google LLC
706
+ * SPDX-License-Identifier: BSD-3-Clause
707
+ */ var t = class extends e$2 {};
708
+ t.directiveName = "unsafeSVG", t.resultType = 2;
709
+ var o = e$1(t);
710
+ function isObject(d) {
711
+ return Object.prototype.toString.call(d) === "[object Object]";
712
+ }
713
+ var SEPARATOR = /\W|_/g;
714
+ function camelizeString(d) {
715
+ return d.split(SEPARATOR).map((d, m) => d.charAt(0)[m > 0 ? "toUpperCase" : "toLowerCase"]() + d.slice(1)).join("");
716
+ }
717
+ function camelizeArrayItems(d, { ignoreKeys: m } = { ignoreKeys: [] }) {
718
+ return Array.isArray(d) ? d.map((d) => camelizeKeys(d, { ignoreKeys: m })) : d;
719
+ }
720
+ function camelizeKeys(d, { ignoreKeys: m } = { ignoreKeys: [] }) {
721
+ if (Array.isArray(d)) return camelizeArrayItems(d, { ignoreKeys: m });
722
+ if (!isObject(d)) return d;
723
+ let v = {};
724
+ for (let x of Object.keys(d)) {
725
+ let w = d[x];
726
+ if (m.includes(x)) {
727
+ v[x] = w;
728
+ continue;
729
+ }
730
+ isObject(w) ? w = camelizeKeys(w, { ignoreKeys: m }) : Array.isArray(w) && (w = camelizeArrayItems(w, { ignoreKeys: m })), v[camelizeString(x)] = w;
731
+ }
732
+ return v;
733
+ }
734
+ var delay = (d) => new Promise((m) => setTimeout(m, d));
735
+ function getUserAgent$1({ libraryName: d, libraryVersion: m, userAgent: v, publicKey: x = "", integration: w = "" }) {
736
+ let T = "JavaScript";
737
+ return typeof v == "string" ? v : typeof v == "function" ? v({
738
+ publicKey: x,
739
+ libraryName: d,
740
+ libraryVersion: m,
741
+ languageName: T,
742
+ integration: w
743
+ }) : `${[
744
+ d,
745
+ m,
746
+ x
747
+ ].filter(Boolean).join("/")} (${[T, w].filter(Boolean).join("; ")})`;
748
+ }
749
+ var defaultOptions = {
750
+ factor: 2,
751
+ time: 100
752
+ };
753
+ function retrier(d, m = defaultOptions) {
754
+ let v = 0;
755
+ function x(d) {
756
+ let w = Math.round(m.time * m.factor ** v);
757
+ return d({
758
+ attempt: v,
759
+ retry: (m) => delay(m ?? w).then(() => (v += 1, x(d)))
760
+ });
761
+ }
762
+ return x(d);
763
+ }
764
+ var UploadcareError = class extends Error {}, NetworkError = class d extends UploadcareError {
765
+ originalProgressEvent;
766
+ constructor(m) {
767
+ super(), this.name = "NetworkError", this.message = "Network error", Object.setPrototypeOf(this, d.prototype), this.originalProgressEvent = m;
768
+ }
769
+ }, onCancel = (d, m) => {
770
+ d && (d.aborted ? Promise.resolve().then(m) : d.addEventListener("abort", () => m(), { once: !0 }));
771
+ }, CancelError = class d extends UploadcareError {
772
+ isCancel = !0;
773
+ constructor(m = "Request canceled") {
774
+ super(m), this.name = "CancelError", Object.setPrototypeOf(this, d.prototype);
775
+ }
776
+ }, DEFAULT_INTERVAL = 500, poll = ({ check: d, interval: m = DEFAULT_INTERVAL, timeout: v, signal: x }) => new Promise((w, T) => {
777
+ let O, M;
778
+ onCancel(x, () => {
779
+ O && clearTimeout(O), T(new CancelError("Poll cancelled"));
780
+ }), v && (M = setTimeout(() => {
781
+ O && clearTimeout(O), T(new CancelError("Timed out"));
782
+ }, v));
783
+ let F = () => {
784
+ try {
785
+ Promise.resolve(d(x)).then((d) => {
786
+ d ? (M && clearTimeout(M), w(d)) : O = setTimeout(F, m);
787
+ }).catch((d) => {
788
+ M && clearTimeout(M), T(d);
789
+ });
790
+ } catch (d) {
791
+ M && clearTimeout(M), T(d);
792
+ }
793
+ };
794
+ O = setTimeout(F, 0);
795
+ }), defaultSettings = {
796
+ baseCDN: "https://ucarecdn.com",
797
+ baseURL: "https://upload.uploadcare.com",
798
+ maxContentLength: 50 * 1024 * 1024,
799
+ retryThrottledRequestMaxTimes: 1,
800
+ retryNetworkErrorMaxTimes: 3,
801
+ multipartMinFileSize: 25 * 1024 * 1024,
802
+ multipartChunkSize: 5 * 1024 * 1024,
803
+ multipartMinLastPartSize: 1024 * 1024,
804
+ maxConcurrentRequests: 4,
805
+ pollingTimeoutMilliseconds: 1e4,
806
+ pusherKey: "79ae88bd931ea68464d9"
807
+ }, defaultContentType = "application/octet-stream", defaultFilename = "original", request = ({ method: d, url: m, data: v, headers: x = {}, signal: w, onProgress: T }) => new Promise((O, M) => {
808
+ let F = new XMLHttpRequest(), U = d?.toUpperCase() || "GET", W = !1;
809
+ F.open(U, m, !0), x && Object.entries(x).forEach((d) => {
810
+ let [m, v] = d;
811
+ v !== void 0 && !Array.isArray(v) && F.setRequestHeader(m, v);
812
+ }), F.responseType = "text", onCancel(w, () => {
813
+ W = !0, F.abort(), M(new CancelError());
814
+ }), F.onload = () => {
815
+ if (F.status != 200) M(/* @__PURE__ */ Error(`Error ${F.status}: ${F.statusText}`));
816
+ else {
817
+ let d = {
818
+ method: U,
819
+ url: m,
820
+ data: v,
821
+ headers: x || void 0,
822
+ signal: w,
823
+ onProgress: T
824
+ }, M = F.getAllResponseHeaders().trim().split(/[\r\n]+/), W = {};
825
+ M.forEach(function(d) {
826
+ let m = d.split(": "), v = m.shift(), x = m.join(": ");
827
+ v && v !== void 0 && (W[v] = x);
828
+ });
829
+ let G = F.response, K = F.status;
830
+ O({
831
+ request: d,
832
+ data: G,
833
+ headers: W,
834
+ status: K
835
+ });
836
+ }
837
+ }, F.onerror = (d) => {
838
+ W || M(new NetworkError(d));
839
+ }, T && typeof T == "function" && (F.upload.onprogress = (d) => {
840
+ d.lengthComputable ? T({
841
+ isComputable: !0,
842
+ value: d.loaded / d.total
843
+ }) : T({ isComputable: !1 });
844
+ }), v ? F.send(v) : F.send();
845
+ });
846
+ function identity(d, ...m) {
847
+ return d;
848
+ }
849
+ var getFileOptions = ({ name: d }) => d ? [d] : [], transformFile = identity, getFormData = () => new FormData(), isBuffer = (d) => !1, isBlob = (d) => typeof Blob < "u" && d instanceof Blob, isFile = (d) => typeof File < "u" && d instanceof File, isReactNativeAsset = (d) => !!d && typeof d == "object" && !Array.isArray(d) && "uri" in d && typeof d.uri == "string", isFileData = (d) => isBlob(d) || isFile(d) || isBuffer() || isReactNativeAsset(d), isSimpleValue = (d) => typeof d == "string" || typeof d == "number" || d === void 0, isObjectValue = (d) => !!d && typeof d == "object" && !Array.isArray(d), isFileValue = (d) => !!d && typeof d == "object" && "data" in d && isFileData(d.data);
850
+ function collectParams(d, m, v) {
851
+ if (Array.isArray(v)) for (let x of v) collectParams(d, `${m}[]`, x);
852
+ else if (isFileValue(v)) {
853
+ let { name: x, contentType: w } = v, T = transformFile(v.data, x, w ?? defaultContentType), O = getFileOptions({
854
+ name: x,
855
+ contentType: w
856
+ });
857
+ d.push([
858
+ m,
859
+ T,
860
+ ...O
861
+ ]);
862
+ } else if (isObjectValue(v)) for (let [x, w] of Object.entries(v)) w !== void 0 && d.push([`${m}[${x}]`, String(w)]);
863
+ else isSimpleValue(v) && v && d.push([m, v.toString()]);
864
+ }
865
+ function getFormDataParams(d) {
866
+ let m = [];
867
+ for (let [v, x] of Object.entries(d)) collectParams(m, v, x);
868
+ return m;
869
+ }
870
+ function buildFormData(d) {
871
+ let m = getFormData(), v = getFormDataParams(d);
872
+ for (let d of v) {
873
+ let [v, x, ...w] = d;
874
+ m.append(v, x, ...w);
875
+ }
876
+ return m;
877
+ }
878
+ var UploadError = class d extends UploadcareError {
879
+ code;
880
+ request;
881
+ response;
882
+ headers;
883
+ constructor(m, v, x, w, T) {
884
+ super(), this.name = "UploadError", this.message = m, this.code = v, this.request = x, this.response = w, this.headers = T, Object.setPrototypeOf(this, d.prototype);
885
+ }
886
+ }, buildSearchParams = (d) => {
887
+ let m = new URLSearchParams();
888
+ for (let [v, x] of Object.entries(d)) x && typeof x == "object" && !Array.isArray(x) ? Object.entries(x).filter((d) => d[1] ?? !1).forEach((d) => m.set(`${v}[${d[0]}]`, String(d[1]))) : Array.isArray(x) ? x.forEach((d) => {
889
+ m.append(`${v}[]`, d);
890
+ }) : typeof x == "string" && x ? m.set(v, x) : typeof x == "number" && m.set(v, x.toString());
891
+ return m.toString();
892
+ }, getUrl = (d, m, v) => {
893
+ let x = new URL(d);
894
+ return x.pathname = (x.pathname + m).replace("//", "/"), v && (x.search = buildSearchParams(v)), x.toString();
895
+ }, version$1 = "6.18.4", LIBRARY_NAME = "UploadcareUploadClient", LIBRARY_VERSION = version$1;
896
+ function getUserAgent(d) {
897
+ return getUserAgent$1({
898
+ libraryName: LIBRARY_NAME,
899
+ libraryVersion: LIBRARY_VERSION,
900
+ ...d
901
+ });
902
+ }
903
+ var REQUEST_WAS_THROTTLED_CODE = "RequestThrottledError", DEFAULT_RETRY_AFTER_TIMEOUT = 15e3, DEFAULT_NETWORK_ERROR_TIMEOUT = 1e3;
904
+ function getTimeoutFromThrottledRequest(d) {
905
+ let { headers: m } = d || {};
906
+ if (!m || typeof m["retry-after"] != "string") return DEFAULT_RETRY_AFTER_TIMEOUT;
907
+ let v = parseInt(m["retry-after"], 10);
908
+ return Number.isFinite(v) ? v * 1e3 : DEFAULT_RETRY_AFTER_TIMEOUT;
909
+ }
910
+ function retryIfFailed(d, m) {
911
+ let { retryThrottledRequestMaxTimes: v, retryNetworkErrorMaxTimes: x } = m;
912
+ return retrier(({ attempt: m, retry: w }) => d().catch((d) => {
913
+ if ("response" in d && d?.code === REQUEST_WAS_THROTTLED_CODE && m < v) return w(getTimeoutFromThrottledRequest(d));
914
+ if (d instanceof NetworkError && m < x) return w((m + 1) * DEFAULT_NETWORK_ERROR_TIMEOUT);
915
+ throw d;
916
+ }));
917
+ }
918
+ var getContentType = (d) => {
919
+ let m = "";
920
+ return (isBlob(d) || isFile(d) || isReactNativeAsset(d)) && (m = d.type), m || defaultContentType;
921
+ }, getFileName = (d) => {
922
+ let m = "";
923
+ return isFile(d) && d.name ? m = d.name : isBlob(d) || isBuffer() ? m = "" : isReactNativeAsset(d) && d.name && (m = d.name), m || defaultFilename;
924
+ };
925
+ function getStoreValue(d) {
926
+ return d === void 0 || d === "auto" ? "auto" : d ? "1" : "0";
927
+ }
928
+ function base(d, { publicKey: m, fileName: v, contentType: x, baseURL: w = defaultSettings.baseURL, secureSignature: T, secureExpire: O, store: M, signal: F, onProgress: U, source: W = "local", integration: G, userAgent: K, retryThrottledRequestMaxTimes: q = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes: J = defaultSettings.retryNetworkErrorMaxTimes, metadata: Y }) {
929
+ return retryIfFailed(() => request({
930
+ method: "POST",
931
+ url: getUrl(w, "/base/", { jsonerrors: 1 }),
932
+ headers: { "X-UC-User-Agent": getUserAgent({
933
+ publicKey: m,
934
+ integration: G,
935
+ userAgent: K
936
+ }) },
937
+ data: buildFormData({
938
+ file: {
939
+ data: d,
940
+ name: v || getFileName(d),
941
+ contentType: x || getContentType(d)
942
+ },
943
+ UPLOADCARE_PUB_KEY: m,
944
+ UPLOADCARE_STORE: getStoreValue(M),
945
+ signature: T,
946
+ expire: O,
947
+ source: W,
948
+ metadata: Y
949
+ }),
950
+ signal: F,
951
+ onProgress: U
952
+ }).then(({ data: d, headers: m, request: v }) => {
953
+ let x = camelizeKeys(JSON.parse(d));
954
+ if ("error" in x) throw new UploadError(x.error.content, x.error.errorCode, v, x, m);
955
+ return x;
956
+ }), {
957
+ retryNetworkErrorMaxTimes: J,
958
+ retryThrottledRequestMaxTimes: q
959
+ });
960
+ }
961
+ var TypeEnum;
962
+ (function(d) {
963
+ d.Token = "token", d.FileInfo = "file_info";
964
+ })(TypeEnum ||= {});
965
+ function fromUrl(d, { publicKey: m, baseURL: v = defaultSettings.baseURL, store: x, fileName: w, checkForUrlDuplicates: T, saveUrlForRecurrentUploads: O, secureSignature: M, secureExpire: F, source: U = "url", signal: W, integration: G, userAgent: K, retryThrottledRequestMaxTimes: q = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes: J = defaultSettings.retryNetworkErrorMaxTimes, metadata: Y }) {
966
+ return retryIfFailed(() => request({
967
+ method: "POST",
968
+ headers: { "X-UC-User-Agent": getUserAgent({
969
+ publicKey: m,
970
+ integration: G,
971
+ userAgent: K
972
+ }) },
973
+ url: getUrl(v, "/from_url/", {
974
+ jsonerrors: 1,
975
+ pub_key: m,
976
+ source_url: d,
977
+ store: getStoreValue(x),
978
+ filename: w,
979
+ check_URL_duplicates: T ? 1 : void 0,
980
+ save_URL_duplicates: O ? 1 : void 0,
981
+ signature: M,
982
+ expire: F,
983
+ source: U,
984
+ metadata: Y
985
+ }),
986
+ signal: W
987
+ }).then(({ data: d, headers: m, request: v }) => {
988
+ let x = camelizeKeys(JSON.parse(d));
989
+ if ("error" in x) throw new UploadError(x.error.content, x.error.errorCode, v, x, m);
990
+ return x;
991
+ }), {
992
+ retryNetworkErrorMaxTimes: J,
993
+ retryThrottledRequestMaxTimes: q
994
+ });
995
+ }
996
+ var Status;
997
+ (function(d) {
998
+ d.Unknown = "unknown", d.Waiting = "waiting", d.Progress = "progress", d.Error = "error", d.Success = "success";
999
+ })(Status ||= {});
1000
+ var isErrorResponse = (d) => "status" in d && d.status === Status.Error;
1001
+ function fromUrlStatus(d, { publicKey: m, baseURL: v = defaultSettings.baseURL, signal: x, integration: w, userAgent: T, retryThrottledRequestMaxTimes: O = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes: M = defaultSettings.retryNetworkErrorMaxTimes } = {}) {
1002
+ return retryIfFailed(() => request({
1003
+ method: "GET",
1004
+ headers: m ? { "X-UC-User-Agent": getUserAgent({
1005
+ publicKey: m,
1006
+ integration: w,
1007
+ userAgent: T
1008
+ }) } : void 0,
1009
+ url: getUrl(v, "/from_url/status/", {
1010
+ jsonerrors: 1,
1011
+ token: d
1012
+ }),
1013
+ signal: x
1014
+ }).then(({ data: d, headers: m, request: v }) => {
1015
+ let x = camelizeKeys(JSON.parse(d));
1016
+ if ("error" in x && !isErrorResponse(x)) throw new UploadError(x.error.content, x.error.errorCode, v, x, m);
1017
+ return x;
1018
+ }), {
1019
+ retryNetworkErrorMaxTimes: M,
1020
+ retryThrottledRequestMaxTimes: O
1021
+ });
1022
+ }
1023
+ function group(d, { publicKey: m, baseURL: v = defaultSettings.baseURL, jsonpCallback: x, secureSignature: w, secureExpire: T, signal: O, source: M, integration: F, userAgent: U, retryThrottledRequestMaxTimes: W = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes: G = defaultSettings.retryNetworkErrorMaxTimes }) {
1024
+ return retryIfFailed(() => request({
1025
+ method: "POST",
1026
+ headers: { "X-UC-User-Agent": getUserAgent({
1027
+ publicKey: m,
1028
+ integration: F,
1029
+ userAgent: U
1030
+ }) },
1031
+ url: getUrl(v, "/group/", { jsonerrors: 1 }),
1032
+ data: buildFormData({
1033
+ files: d,
1034
+ callback: x,
1035
+ pub_key: m,
1036
+ signature: w,
1037
+ expire: T,
1038
+ source: M
1039
+ }),
1040
+ signal: O
1041
+ }).then(({ data: d, headers: m, request: v }) => {
1042
+ let x = camelizeKeys(JSON.parse(d));
1043
+ if ("error" in x) throw new UploadError(x.error.content, x.error.errorCode, v, x, m);
1044
+ return x;
1045
+ }), {
1046
+ retryNetworkErrorMaxTimes: G,
1047
+ retryThrottledRequestMaxTimes: W
1048
+ });
1049
+ }
1050
+ function info(d, { publicKey: m, baseURL: v = defaultSettings.baseURL, signal: x, source: w, integration: T, userAgent: O, retryThrottledRequestMaxTimes: M = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes: F = defaultSettings.retryNetworkErrorMaxTimes }) {
1051
+ return retryIfFailed(() => request({
1052
+ method: "GET",
1053
+ headers: { "X-UC-User-Agent": getUserAgent({
1054
+ publicKey: m,
1055
+ integration: T,
1056
+ userAgent: O
1057
+ }) },
1058
+ url: getUrl(v, "/info/", {
1059
+ jsonerrors: 1,
1060
+ pub_key: m,
1061
+ file_id: d,
1062
+ source: w
1063
+ }),
1064
+ signal: x
1065
+ }).then(({ data: d, headers: m, request: v }) => {
1066
+ let x = camelizeKeys(JSON.parse(d));
1067
+ if ("error" in x) throw new UploadError(x.error.content, x.error.errorCode, v, x, m);
1068
+ return x;
1069
+ }), {
1070
+ retryThrottledRequestMaxTimes: M,
1071
+ retryNetworkErrorMaxTimes: F
1072
+ });
1073
+ }
1074
+ function multipartStart(d, { publicKey: m, contentType: v, fileName: x, multipartChunkSize: w = defaultSettings.multipartChunkSize, baseURL: T = "", secureSignature: O, secureExpire: M, store: F, signal: U, source: W = "local", integration: G, userAgent: K, retryThrottledRequestMaxTimes: q = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes: J = defaultSettings.retryNetworkErrorMaxTimes, metadata: Y }) {
1075
+ return retryIfFailed(() => request({
1076
+ method: "POST",
1077
+ url: getUrl(T, "/multipart/start/", { jsonerrors: 1 }),
1078
+ headers: { "X-UC-User-Agent": getUserAgent({
1079
+ publicKey: m,
1080
+ integration: G,
1081
+ userAgent: K
1082
+ }) },
1083
+ data: buildFormData({
1084
+ filename: x || defaultFilename,
1085
+ size: d,
1086
+ content_type: v || defaultContentType,
1087
+ part_size: w,
1088
+ UPLOADCARE_STORE: getStoreValue(F),
1089
+ UPLOADCARE_PUB_KEY: m,
1090
+ signature: O,
1091
+ expire: M,
1092
+ source: W,
1093
+ metadata: Y
1094
+ }),
1095
+ signal: U
1096
+ }).then(({ data: d, headers: m, request: v }) => {
1097
+ let x = camelizeKeys(JSON.parse(d));
1098
+ if ("error" in x) throw new UploadError(x.error.content, x.error.errorCode, v, x, m);
1099
+ return x.parts = Object.keys(x.parts).map((d) => x.parts[Number(d)]), x;
1100
+ }), {
1101
+ retryThrottledRequestMaxTimes: q,
1102
+ retryNetworkErrorMaxTimes: J
1103
+ });
1104
+ }
1105
+ function multipartUpload(d, m, { contentType: v, signal: x, onProgress: w, retryThrottledRequestMaxTimes: T = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes: O = defaultSettings.retryNetworkErrorMaxTimes }) {
1106
+ return retryIfFailed(() => request({
1107
+ method: "PUT",
1108
+ url: m,
1109
+ data: d,
1110
+ onProgress: w,
1111
+ signal: x,
1112
+ headers: { "Content-Type": v || defaultContentType }
1113
+ }).then((d) => (w && w({
1114
+ isComputable: !0,
1115
+ value: 1
1116
+ }), d)).then(({ status: d }) => ({ code: d })), {
1117
+ retryThrottledRequestMaxTimes: T,
1118
+ retryNetworkErrorMaxTimes: O
1119
+ });
1120
+ }
1121
+ function multipartComplete(d, { publicKey: m, baseURL: v = defaultSettings.baseURL, source: x = "local", signal: w, integration: T, userAgent: O, retryThrottledRequestMaxTimes: M = defaultSettings.retryThrottledRequestMaxTimes, retryNetworkErrorMaxTimes: F = defaultSettings.retryNetworkErrorMaxTimes }) {
1122
+ return retryIfFailed(() => request({
1123
+ method: "POST",
1124
+ url: getUrl(v, "/multipart/complete/", { jsonerrors: 1 }),
1125
+ headers: { "X-UC-User-Agent": getUserAgent({
1126
+ publicKey: m,
1127
+ integration: T,
1128
+ userAgent: O
1129
+ }) },
1130
+ data: buildFormData({
1131
+ uuid: d,
1132
+ UPLOADCARE_PUB_KEY: m,
1133
+ source: x
1134
+ }),
1135
+ signal: w
1136
+ }).then(({ data: d, headers: m, request: v }) => {
1137
+ let x = camelizeKeys(JSON.parse(d));
1138
+ if ("error" in x) throw new UploadError(x.error.content, x.error.errorCode, v, x, m);
1139
+ return x;
1140
+ }), {
1141
+ retryThrottledRequestMaxTimes: M,
1142
+ retryNetworkErrorMaxTimes: F
1143
+ });
1144
+ }
1145
+ function isReadyPoll(d, { publicKey: m, baseURL: v, source: x, integration: w, userAgent: T, retryThrottledRequestMaxTimes: O, retryNetworkErrorMaxTimes: M, signal: F, onProgress: U }) {
1146
+ return poll({
1147
+ check: (F) => info(d, {
1148
+ publicKey: m,
1149
+ baseURL: v,
1150
+ signal: F,
1151
+ source: x,
1152
+ integration: w,
1153
+ userAgent: T,
1154
+ retryThrottledRequestMaxTimes: O,
1155
+ retryNetworkErrorMaxTimes: M
1156
+ }).then((d) => d.isReady ? d : (U && U({
1157
+ isComputable: !0,
1158
+ value: 1
1159
+ }), !1)),
1160
+ signal: F
1161
+ });
1162
+ }
1163
+ function isGroupFileInfo(d) {
1164
+ return "defaultEffects" in d;
1165
+ }
1166
+ var UploadcareFile = class {
1167
+ uuid;
1168
+ name;
1169
+ size;
1170
+ isStored;
1171
+ isImage;
1172
+ mimeType;
1173
+ cdnUrl;
1174
+ s3Url;
1175
+ originalFilename;
1176
+ imageInfo;
1177
+ videoInfo;
1178
+ contentInfo;
1179
+ metadata;
1180
+ s3Bucket;
1181
+ defaultEffects = null;
1182
+ constructor(d, { baseCDN: m = defaultSettings.baseCDN, fileName: v } = {}) {
1183
+ let { uuid: x, s3Bucket: w } = d, T = getUrl(m, `${x}/`), O = w ? getUrl(`https://${w}.s3.amazonaws.com/`, `${x}/${d.filename}`) : null;
1184
+ this.uuid = x, this.name = v || d.filename, this.size = d.size, this.isStored = d.isStored, this.isImage = d.isImage, this.mimeType = d.mimeType, this.cdnUrl = T, this.originalFilename = d.originalFilename, this.imageInfo = d.imageInfo, this.videoInfo = d.videoInfo, this.contentInfo = d.contentInfo, this.metadata = d.metadata || null, this.s3Bucket = w || null, this.s3Url = O, isGroupFileInfo(d) && (this.defaultEffects = d.defaultEffects);
1185
+ }
1186
+ }, uploadDirect = (d, { publicKey: m, fileName: v, baseURL: x, secureSignature: w, secureExpire: T, store: O, contentType: M, signal: F, onProgress: U, source: W, integration: G, userAgent: K, retryThrottledRequestMaxTimes: q, retryNetworkErrorMaxTimes: J, baseCDN: Y, metadata: X }) => base(d, {
1187
+ publicKey: m,
1188
+ fileName: v,
1189
+ contentType: M,
1190
+ baseURL: x,
1191
+ secureSignature: w,
1192
+ secureExpire: T,
1193
+ store: O,
1194
+ signal: F,
1195
+ onProgress: U,
1196
+ source: W,
1197
+ integration: G,
1198
+ userAgent: K,
1199
+ retryThrottledRequestMaxTimes: q,
1200
+ retryNetworkErrorMaxTimes: J,
1201
+ metadata: X
1202
+ }).then(({ file: d }) => isReadyPoll(d, {
1203
+ publicKey: m,
1204
+ baseURL: x,
1205
+ source: W,
1206
+ integration: G,
1207
+ userAgent: K,
1208
+ retryThrottledRequestMaxTimes: q,
1209
+ retryNetworkErrorMaxTimes: J,
1210
+ onProgress: U,
1211
+ signal: F
1212
+ })).then((d) => new UploadcareFile(d, { baseCDN: Y })), uploadFromUploaded = (d, { publicKey: m, fileName: v, baseURL: x, signal: w, onProgress: T, source: O, integration: M, userAgent: F, retryThrottledRequestMaxTimes: U, retryNetworkErrorMaxTimes: W, baseCDN: G }) => info(d, {
1213
+ publicKey: m,
1214
+ baseURL: x,
1215
+ signal: w,
1216
+ source: O,
1217
+ integration: M,
1218
+ userAgent: F,
1219
+ retryThrottledRequestMaxTimes: U,
1220
+ retryNetworkErrorMaxTimes: W
1221
+ }).then((d) => new UploadcareFile(d, {
1222
+ baseCDN: G,
1223
+ fileName: v
1224
+ })).then((d) => (T && T({
1225
+ isComputable: !0,
1226
+ value: 1
1227
+ }), d)), race = (d, { signal: m } = {}) => {
1228
+ let v = null, x = null, w = d.map(() => new AbortController()), T = (d) => () => {
1229
+ x = d, w.forEach((m, v) => v !== d && m.abort());
1230
+ };
1231
+ return onCancel(m, () => {
1232
+ w.forEach((d) => d.abort());
1233
+ }), Promise.all(d.map((d, m) => {
1234
+ let x = T(m);
1235
+ return Promise.resolve().then(() => d({
1236
+ stopRace: x,
1237
+ signal: w[m].signal
1238
+ })).then((d) => (x(), d)).catch((d) => (v = d, null));
1239
+ })).then((d) => {
1240
+ if (x === null) throw v;
1241
+ return d[x];
1242
+ });
1243
+ }, WebSocket = window.WebSocket, Events = class {
1244
+ events = Object.create({});
1245
+ emit(d, m) {
1246
+ this.events[d]?.forEach((d) => d(m));
1247
+ }
1248
+ on(d, m) {
1249
+ this.events[d] = this.events[d] || [], this.events[d].push(m);
1250
+ }
1251
+ off(d, m) {
1252
+ m ? this.events[d] = this.events[d].filter((d) => d !== m) : this.events[d] = [];
1253
+ }
1254
+ }, response = (d, m) => d === "success" ? {
1255
+ status: Status.Success,
1256
+ ...m
1257
+ } : d === "progress" ? {
1258
+ status: Status.Progress,
1259
+ ...m
1260
+ } : {
1261
+ status: Status.Error,
1262
+ ...m
1263
+ }, Pusher = class {
1264
+ key;
1265
+ disconnectTime;
1266
+ ws = void 0;
1267
+ queue = [];
1268
+ isConnected = !1;
1269
+ subscribers = 0;
1270
+ emmitter = new Events();
1271
+ disconnectTimeoutId = null;
1272
+ constructor(d, m = 3e4) {
1273
+ this.key = d, this.disconnectTime = m;
1274
+ }
1275
+ connect() {
1276
+ this.disconnectTimeoutId && clearTimeout(this.disconnectTimeoutId), !this.isConnected && !this.ws && (this.ws = new WebSocket(`wss://ws.pusherapp.com/app/${this.key}?protocol=5&client=js&version=1.12.2`), this.ws.addEventListener("error", (d) => {
1277
+ this.emmitter.emit("error", Error(d.message));
1278
+ }), this.emmitter.on("connected", () => {
1279
+ this.isConnected = !0, this.queue.forEach((d) => this.send(d.event, d.data)), this.queue = [];
1280
+ }), this.ws.addEventListener("message", (d) => {
1281
+ let m = JSON.parse(d.data.toString());
1282
+ switch (m.event) {
1283
+ case "pusher:connection_established":
1284
+ this.emmitter.emit("connected", void 0);
1285
+ break;
1286
+ case "pusher:ping":
1287
+ this.send("pusher:pong", {});
1288
+ break;
1289
+ case "progress":
1290
+ case "success":
1291
+ case "fail": this.emmitter.emit(m.channel, response(m.event, JSON.parse(m.data)));
1292
+ }
1293
+ }));
1294
+ }
1295
+ disconnect() {
1296
+ let d = () => {
1297
+ this.ws?.close(), this.ws = void 0, this.isConnected = !1;
1298
+ };
1299
+ this.disconnectTime ? this.disconnectTimeoutId = setTimeout(() => {
1300
+ d();
1301
+ }, this.disconnectTime) : d();
1302
+ }
1303
+ send(d, m) {
1304
+ let v = JSON.stringify({
1305
+ event: d,
1306
+ data: m
1307
+ });
1308
+ this.ws?.send(v);
1309
+ }
1310
+ subscribe(d, m) {
1311
+ this.subscribers += 1, this.connect();
1312
+ let v = `task-status-${d}`, x = {
1313
+ event: "pusher:subscribe",
1314
+ data: { channel: v }
1315
+ };
1316
+ this.emmitter.on(v, m), this.isConnected ? this.send(x.event, x.data) : this.queue.push(x);
1317
+ }
1318
+ unsubscribe(d) {
1319
+ --this.subscribers;
1320
+ let m = `task-status-${d}`, v = {
1321
+ event: "pusher:unsubscribe",
1322
+ data: { channel: m }
1323
+ };
1324
+ this.emmitter.off(m), this.isConnected ? this.send(v.event, v.data) : this.queue = this.queue.filter((d) => d.data.channel !== m), this.subscribers === 0 && this.disconnect();
1325
+ }
1326
+ onError(d) {
1327
+ return this.emmitter.on("error", d), () => this.emmitter.off("error", d);
1328
+ }
1329
+ }, pusher = null, getPusher = (d) => (pusher ||= new Pusher(d, typeof window > "u" ? 0 : 3e4), pusher), preconnect = (d) => {
1330
+ getPusher(d).connect();
1331
+ };
1332
+ function pollStrategy({ token: d, publicKey: m, baseURL: v, integration: x, userAgent: w, retryThrottledRequestMaxTimes: T, retryNetworkErrorMaxTimes: O, onProgress: M, signal: F }) {
1333
+ return poll({
1334
+ check: (F) => fromUrlStatus(d, {
1335
+ publicKey: m,
1336
+ baseURL: v,
1337
+ integration: x,
1338
+ userAgent: w,
1339
+ retryThrottledRequestMaxTimes: T,
1340
+ retryNetworkErrorMaxTimes: O,
1341
+ signal: F
1342
+ }).then((m) => {
1343
+ switch (m.status) {
1344
+ case Status.Error: return new UploadError(m.error, m.errorCode);
1345
+ case Status.Waiting: return !1;
1346
+ case Status.Unknown: return new UploadError(`Token "${d}" was not found.`);
1347
+ case Status.Progress: return M && (m.total === "unknown" ? M({ isComputable: !1 }) : M({
1348
+ isComputable: !0,
1349
+ value: m.done / m.total
1350
+ })), !1;
1351
+ case Status.Success: return M && M({
1352
+ isComputable: !0,
1353
+ value: m.done / m.total
1354
+ }), m;
1355
+ default: throw Error("Unknown status");
1356
+ }
1357
+ }),
1358
+ signal: F
1359
+ });
1360
+ }
1361
+ var pushStrategy = ({ token: d, pusherKey: m, signal: v, onProgress: x }) => new Promise((w, T) => {
1362
+ let O = getPusher(m), M = O.onError(T), F = () => {
1363
+ M(), O.unsubscribe(d);
1364
+ };
1365
+ onCancel(v, () => {
1366
+ F(), T(new CancelError("pusher cancelled"));
1367
+ }), O.subscribe(d, (d) => {
1368
+ switch (d.status) {
1369
+ case Status.Progress:
1370
+ x && (d.total === "unknown" ? x({ isComputable: !1 }) : x({
1371
+ isComputable: !0,
1372
+ value: d.done / d.total
1373
+ }));
1374
+ break;
1375
+ case Status.Success:
1376
+ F(), x && x({
1377
+ isComputable: !0,
1378
+ value: d.done / d.total
1379
+ }), w(d);
1380
+ break;
1381
+ case Status.Error: F(), T(new UploadError(d.msg, d.error_code));
1382
+ }
1383
+ });
1384
+ }), uploadFromUrl = (d, { publicKey: m, fileName: v, baseURL: x, baseCDN: w, checkForUrlDuplicates: T, saveUrlForRecurrentUploads: O, secureSignature: M, secureExpire: F, store: U, signal: W, onProgress: G, source: K, integration: q, userAgent: J, retryThrottledRequestMaxTimes: Y, pusherKey: X = defaultSettings.pusherKey, metadata: mo }) => Promise.resolve(preconnect(X)).then(() => fromUrl(d, {
1385
+ publicKey: m,
1386
+ fileName: v,
1387
+ baseURL: x,
1388
+ checkForUrlDuplicates: T,
1389
+ saveUrlForRecurrentUploads: O,
1390
+ secureSignature: M,
1391
+ secureExpire: F,
1392
+ store: U,
1393
+ signal: W,
1394
+ source: K,
1395
+ integration: q,
1396
+ userAgent: J,
1397
+ retryThrottledRequestMaxTimes: Y,
1398
+ metadata: mo
1399
+ })).catch((d) => (getPusher(X)?.disconnect(), Promise.reject(d))).then((d) => d.type === TypeEnum.FileInfo ? d : race([({ signal: v }) => pollStrategy({
1400
+ token: d.token,
1401
+ publicKey: m,
1402
+ baseURL: x,
1403
+ integration: q,
1404
+ userAgent: J,
1405
+ retryThrottledRequestMaxTimes: Y,
1406
+ onProgress: G,
1407
+ signal: v
1408
+ }), ({ signal: m }) => pushStrategy({
1409
+ token: d.token,
1410
+ pusherKey: X,
1411
+ signal: m,
1412
+ onProgress: G
1413
+ })], { signal: W })).then((d) => {
1414
+ if (d instanceof UploadError) throw d;
1415
+ return d;
1416
+ }).then((d) => isReadyPoll(d.uuid, {
1417
+ publicKey: m,
1418
+ baseURL: x,
1419
+ integration: q,
1420
+ userAgent: J,
1421
+ retryThrottledRequestMaxTimes: Y,
1422
+ onProgress: G,
1423
+ signal: W
1424
+ })).then((d) => new UploadcareFile(d, { baseCDN: w })), memo = /* @__PURE__ */ new WeakMap(), getBlobFromReactNativeAsset = async (d) => {
1425
+ if (memo.has(d)) return memo.get(d);
1426
+ let m = await fetch(d.uri).then((d) => d.blob());
1427
+ return memo.set(d, m), m;
1428
+ }, getFileSize = async (d) => {
1429
+ if (isFile(d) || isBlob(d)) return d.size;
1430
+ if (isReactNativeAsset(d)) return (await getBlobFromReactNativeAsset(d)).size;
1431
+ throw Error("Unknown file type. Cannot determine file size.");
1432
+ }, isMultipart = (d, m = defaultSettings.multipartMinFileSize) => d >= m, isUuid = (d) => {
1433
+ let m = /* @__PURE__ */ RegExp("[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}");
1434
+ return !isFileData(d) && m.test(d);
1435
+ }, isUrl = (d) => {
1436
+ let m = /* @__PURE__ */ RegExp("^(?:\\w+:)?\\/\\/([^\\s\\.]+\\.\\S{2}|localhost[\\:?\\d]*)\\S*$");
1437
+ return !isFileData(d) && m.test(d);
1438
+ }, runWithConcurrency = (d, m) => new Promise((v, x) => {
1439
+ let w = [], T = !1, O = m.length, M = [...m], F = () => {
1440
+ let d = m.length - M.length, U = M.shift();
1441
+ U && U().then((m) => {
1442
+ T || (w[d] = m, --O, O ? F() : v(w));
1443
+ }).catch((d) => {
1444
+ T = !0, x(d);
1445
+ });
1446
+ };
1447
+ for (let m = 0; m < d; m++) F();
1448
+ }), sliceChunk = (d, m, v, x) => {
1449
+ let w = x * m, T = Math.min(w + x, v);
1450
+ return d.slice(w, T);
1451
+ }, prepareChunks = async (d, m, v) => (x) => sliceChunk(d, x, m, v), uploadPart = (d, m, { publicKey: v, contentType: x, onProgress: w, signal: T, integration: O, retryThrottledRequestMaxTimes: M, retryNetworkErrorMaxTimes: F }) => multipartUpload(d, m, {
1452
+ publicKey: v,
1453
+ contentType: x,
1454
+ onProgress: w,
1455
+ signal: T,
1456
+ integration: O,
1457
+ retryThrottledRequestMaxTimes: M,
1458
+ retryNetworkErrorMaxTimes: F
1459
+ }), uploadMultipart = async (d, { publicKey: m, fileName: v, fileSize: x, baseURL: w, secureSignature: T, secureExpire: O, store: M, signal: F, onProgress: U, source: W, integration: G, userAgent: K, retryThrottledRequestMaxTimes: q, retryNetworkErrorMaxTimes: J, contentType: Y, multipartChunkSize: X = defaultSettings.multipartChunkSize, maxConcurrentRequests: mo = defaultSettings.maxConcurrentRequests, baseCDN: Q, metadata: ho }) => {
1460
+ let go = x ?? await getFileSize(d), _o, vo = (d, m) => {
1461
+ if (!U) return;
1462
+ _o ||= Array(d).fill(0);
1463
+ let v = (d) => d.reduce((d, m) => d + m, 0);
1464
+ return (x) => {
1465
+ x.isComputable && (_o[m] = x.value, U({
1466
+ isComputable: !0,
1467
+ value: v(_o) / d
1468
+ }));
1469
+ };
1470
+ };
1471
+ return Y ||= getContentType(d), multipartStart(go, {
1472
+ publicKey: m,
1473
+ contentType: Y,
1474
+ fileName: v || getFileName(d),
1475
+ baseURL: w,
1476
+ secureSignature: T,
1477
+ secureExpire: O,
1478
+ store: M,
1479
+ signal: F,
1480
+ source: W,
1481
+ integration: G,
1482
+ userAgent: K,
1483
+ retryThrottledRequestMaxTimes: q,
1484
+ retryNetworkErrorMaxTimes: J,
1485
+ metadata: ho,
1486
+ multipartChunkSize: X
1487
+ }).then(async ({ uuid: v, parts: x }) => {
1488
+ let w = await prepareChunks(d, go, X);
1489
+ return Promise.all([v, runWithConcurrency(mo, x.map((d, v) => () => uploadPart(w(v), d, {
1490
+ publicKey: m,
1491
+ contentType: Y,
1492
+ onProgress: vo(x.length, v),
1493
+ signal: F,
1494
+ integration: G,
1495
+ retryThrottledRequestMaxTimes: q,
1496
+ retryNetworkErrorMaxTimes: J
1497
+ })))]);
1498
+ }).then(([d]) => multipartComplete(d, {
1499
+ publicKey: m,
1500
+ baseURL: w,
1501
+ source: W,
1502
+ integration: G,
1503
+ userAgent: K,
1504
+ retryThrottledRequestMaxTimes: q,
1505
+ retryNetworkErrorMaxTimes: J
1506
+ })).then((d) => d.isReady ? d : isReadyPoll(d.uuid, {
1507
+ publicKey: m,
1508
+ baseURL: w,
1509
+ source: W,
1510
+ integration: G,
1511
+ userAgent: K,
1512
+ retryThrottledRequestMaxTimes: q,
1513
+ retryNetworkErrorMaxTimes: J,
1514
+ onProgress: U,
1515
+ signal: F
1516
+ })).then((d) => new UploadcareFile(d, { baseCDN: Q }));
1517
+ };
1518
+ async function uploadFile(d, { publicKey: m, fileName: v, baseURL: x = defaultSettings.baseURL, secureSignature: w, secureExpire: T, store: O, signal: M, onProgress: F, source: U, integration: W, userAgent: G, retryThrottledRequestMaxTimes: K, retryNetworkErrorMaxTimes: q, contentType: J, multipartMinFileSize: Y, multipartChunkSize: X, maxConcurrentRequests: mo, baseCDN: Q = defaultSettings.baseCDN, checkForUrlDuplicates: ho, saveUrlForRecurrentUploads: go, pusherKey: _o, metadata: vo }) {
1519
+ if (isFileData(d)) {
1520
+ let ho = await getFileSize(d);
1521
+ return isMultipart(ho, Y) ? uploadMultipart(d, {
1522
+ publicKey: m,
1523
+ contentType: J,
1524
+ multipartChunkSize: X,
1525
+ fileSize: ho,
1526
+ fileName: v,
1527
+ baseURL: x,
1528
+ secureSignature: w,
1529
+ secureExpire: T,
1530
+ store: O,
1531
+ signal: M,
1532
+ onProgress: F,
1533
+ source: U,
1534
+ integration: W,
1535
+ userAgent: G,
1536
+ maxConcurrentRequests: mo,
1537
+ retryThrottledRequestMaxTimes: K,
1538
+ retryNetworkErrorMaxTimes: q,
1539
+ baseCDN: Q,
1540
+ metadata: vo
1541
+ }) : uploadDirect(d, {
1542
+ publicKey: m,
1543
+ fileName: v,
1544
+ contentType: J,
1545
+ baseURL: x,
1546
+ secureSignature: w,
1547
+ secureExpire: T,
1548
+ store: O,
1549
+ signal: M,
1550
+ onProgress: F,
1551
+ source: U,
1552
+ integration: W,
1553
+ userAgent: G,
1554
+ retryThrottledRequestMaxTimes: K,
1555
+ retryNetworkErrorMaxTimes: q,
1556
+ baseCDN: Q,
1557
+ metadata: vo
1558
+ });
1559
+ }
1560
+ if (isUrl(d)) return uploadFromUrl(d, {
1561
+ publicKey: m,
1562
+ fileName: v,
1563
+ baseURL: x,
1564
+ baseCDN: Q,
1565
+ checkForUrlDuplicates: ho,
1566
+ saveUrlForRecurrentUploads: go,
1567
+ secureSignature: w,
1568
+ secureExpire: T,
1569
+ store: O,
1570
+ signal: M,
1571
+ onProgress: F,
1572
+ source: U,
1573
+ integration: W,
1574
+ userAgent: G,
1575
+ retryThrottledRequestMaxTimes: K,
1576
+ retryNetworkErrorMaxTimes: q,
1577
+ pusherKey: _o,
1578
+ metadata: vo
1579
+ });
1580
+ if (isUuid(d)) return uploadFromUploaded(d, {
1581
+ publicKey: m,
1582
+ fileName: v,
1583
+ baseURL: x,
1584
+ signal: M,
1585
+ onProgress: F,
1586
+ source: U,
1587
+ integration: W,
1588
+ userAgent: G,
1589
+ retryThrottledRequestMaxTimes: K,
1590
+ retryNetworkErrorMaxTimes: q,
1591
+ baseCDN: Q
1592
+ });
1593
+ throw TypeError(`File uploading from "${d}" is not supported`);
1594
+ }
1595
+ var replaceUrlBase = (d, m) => {
1596
+ try {
1597
+ let v = new URL(d), x = new URL(m);
1598
+ return v.protocol = x.protocol, v.hostname = x.hostname, v.port = x.port, v.toString();
1599
+ } catch {
1600
+ return d;
1601
+ }
1602
+ }, UploadcareGroup = class {
1603
+ uuid;
1604
+ filesCount;
1605
+ totalSize;
1606
+ isStored;
1607
+ isImage;
1608
+ cdnUrl;
1609
+ files;
1610
+ createdAt;
1611
+ storedAt = null;
1612
+ constructor(d, { baseCDN: m = defaultSettings.baseCDN } = {}) {
1613
+ this.uuid = d.id, this.filesCount = d.filesCount;
1614
+ let v = d.files.filter(Boolean);
1615
+ this.totalSize = Object.values(v).reduce((d, m) => d + m.size, 0), this.isStored = !!d.datetimeStored, this.isImage = !!Object.values(v).filter((d) => d.isImage).length, this.cdnUrl = replaceUrlBase(d.cdnUrl, m), this.files = v.map((d) => new UploadcareFile(d, { baseCDN: m })), this.createdAt = d.datetimeCreated, this.storedAt = d.datetimeStored;
1616
+ }
1617
+ }, isFileDataArray = (d) => {
1618
+ for (let m of d) if (!isFileData(m)) return !1;
1619
+ return !0;
1620
+ }, isUuidArray = (d) => {
1621
+ for (let m of d) if (!isUuid(m)) return !1;
1622
+ return !0;
1623
+ }, isUrlArray = (d) => {
1624
+ for (let m of d) if (!isUrl(m)) return !1;
1625
+ return !0;
1626
+ };
1627
+ function uploadFileGroup(d, { publicKey: m, fileName: v, baseURL: x = defaultSettings.baseURL, secureSignature: w, secureExpire: T, store: O, signal: M, onProgress: F, source: U, integration: W, userAgent: G, retryThrottledRequestMaxTimes: K, retryNetworkErrorMaxTimes: q, contentType: J, multipartChunkSize: Y = defaultSettings.multipartChunkSize, baseCDN: X = defaultSettings.baseCDN, checkForUrlDuplicates: mo, saveUrlForRecurrentUploads: Q, jsonpCallback: ho }) {
1628
+ if (!isFileDataArray(d) && !isUrlArray(d) && !isUuidArray(d)) throw TypeError(`Group uploading from "${d}" is not supported`);
1629
+ let go, _o = !0, vo = d.length, yo = (d, m) => {
1630
+ if (!F) return;
1631
+ go ||= Array(d).fill(0);
1632
+ let v = (m) => m.reduce((d, m) => d + m) / d;
1633
+ return (d) => {
1634
+ if (!d.isComputable || !_o) {
1635
+ _o = !1, F({ isComputable: !1 });
1636
+ return;
1637
+ }
1638
+ go[m] = d.value, F({
1639
+ isComputable: !0,
1640
+ value: v(go)
1641
+ });
1642
+ };
1643
+ };
1644
+ return Promise.all(d.map((d, F) => isFileData(d) || isUrl(d) ? uploadFile(d, {
1645
+ publicKey: m,
1646
+ fileName: v,
1647
+ baseURL: x,
1648
+ secureSignature: w,
1649
+ secureExpire: T,
1650
+ store: O,
1651
+ signal: M,
1652
+ onProgress: yo(vo, F),
1653
+ source: U,
1654
+ integration: W,
1655
+ userAgent: G,
1656
+ retryThrottledRequestMaxTimes: K,
1657
+ retryNetworkErrorMaxTimes: q,
1658
+ contentType: J,
1659
+ multipartChunkSize: Y,
1660
+ baseCDN: X,
1661
+ checkForUrlDuplicates: mo,
1662
+ saveUrlForRecurrentUploads: Q
1663
+ }).then((d) => d.uuid) : d)).then((d) => group(d, {
1664
+ publicKey: m,
1665
+ baseURL: x,
1666
+ jsonpCallback: ho,
1667
+ secureSignature: w,
1668
+ secureExpire: T,
1669
+ signal: M,
1670
+ source: U,
1671
+ integration: W,
1672
+ userAgent: G,
1673
+ retryThrottledRequestMaxTimes: K,
1674
+ retryNetworkErrorMaxTimes: q
1675
+ }).then((d) => new UploadcareGroup(d, { baseCDN: X })).then((d) => (F && F({
1676
+ isComputable: !0,
1677
+ value: 1
1678
+ }), d)));
1679
+ }
1680
+ var Queue = class {
1681
+ _concurrency = 1;
1682
+ _pending = [];
1683
+ _running = 0;
1684
+ _resolvers = /* @__PURE__ */ new Map();
1685
+ _rejectors = /* @__PURE__ */ new Map();
1686
+ constructor(d) {
1687
+ this._concurrency = d;
1688
+ }
1689
+ run() {
1690
+ let d = this._concurrency - this._running;
1691
+ for (let m = 0; m < d; m++) {
1692
+ let d = this._pending.shift();
1693
+ if (!d) return;
1694
+ let m = this._resolvers.get(d), v = this._rejectors.get(d);
1695
+ if (!m || !v) throw Error("Unexpected behavior: resolver or rejector is undefined");
1696
+ this._running += 1, d().finally(() => {
1697
+ this._resolvers.delete(d), this._rejectors.delete(d), --this._running, this.run();
1698
+ }).then((d) => m(d)).catch((d) => v(d));
1699
+ }
1700
+ }
1701
+ add(d, { autoRun: m } = { autoRun: !0 }) {
1702
+ return new Promise((v, x) => {
1703
+ this._resolvers.set(d, v), this._rejectors.set(d, x), this._pending.push(d), m && this.run();
1704
+ });
1705
+ }
1706
+ get pending() {
1707
+ return this._pending.length;
1708
+ }
1709
+ get running() {
1710
+ return this._running;
1711
+ }
1712
+ set concurrency(d) {
1713
+ this._concurrency = d, this.run();
1714
+ }
1715
+ get concurrency() {
1716
+ return this._concurrency;
1717
+ }
1718
+ };
1719
+ const blockCtx = () => ({}), activityBlockCtx = (d) => ({
1720
+ ...blockCtx(),
1721
+ "*currentActivity": null,
1722
+ "*currentActivityParams": {},
1723
+ "*history": [],
1724
+ "*historyBack": null,
1725
+ "*closeModal": () => {
1726
+ d.modalManager?.close(d.$["*currentActivity"]), d.pub("*currentActivity", null);
1727
+ }
1728
+ }), uploaderBlockCtx = (d) => ({
1729
+ ...activityBlockCtx(d),
1730
+ "*commonProgress": 0,
1731
+ "*uploadList": [],
1732
+ "*uploadQueue": new Queue(1),
1733
+ "*collectionErrors": [],
1734
+ "*collectionState": null,
1735
+ "*groupInfo": null,
1736
+ "*uploadTrigger": /* @__PURE__ */ new Set()
1737
+ }), sharedConfigKey = (d) => `*cfg/${d}`, normalizeCdnOperation = (d) => {
1738
+ if (typeof d != "string" || !d) return "";
1739
+ let m = d.trim();
1740
+ return m.startsWith("-/") ? m = m.slice(2) : m.startsWith("/") && (m = m.slice(1)), m.endsWith("/") && (m = m.slice(0, m.length - 1)), m;
1741
+ }, joinCdnOperations = (...d) => d.filter((d) => typeof d == "string" && !!d).map((d) => normalizeCdnOperation(d)).join("/-/"), createCdnUrlModifiers = (...d) => {
1742
+ let m = joinCdnOperations(...d);
1743
+ return m ? `-/${m}/` : "";
1744
+ };
1745
+ function extractFilename(d) {
1746
+ let m = new URL(d), v = m.pathname + m.search + m.hash, x = v.lastIndexOf("http"), w = v.lastIndexOf("/"), T = "";
1747
+ return x >= 0 ? T = v.slice(x) : w >= 0 && (T = v.slice(w + 1)), T;
1748
+ }
1749
+ function extractUuid(d) {
1750
+ let { pathname: m } = new URL(d), v = m.indexOf("/"), x = m.indexOf("/", v + 1);
1751
+ return m.substring(v + 1, x);
1752
+ }
1753
+ function extractCdnUrlModifiers(d) {
1754
+ let m = trimFilename(d), v = new URL(m), x = v.pathname.indexOf("/-/");
1755
+ return x === -1 ? "" : v.pathname.substring(x).slice(1);
1756
+ }
1757
+ function extractOperations(d) {
1758
+ return extractCdnUrlModifiers(d).split("/-/").filter(Boolean).map((d) => normalizeCdnOperation(d));
1759
+ }
1760
+ function trimFilename(d) {
1761
+ let m = new URL(d), v = extractFilename(d), x = isFileUrl(v) ? splitFileUrl(v).pathname : v;
1762
+ return m.pathname = m.pathname.replace(x, ""), m.search = "", m.hash = "", m.toString();
1763
+ }
1764
+ function isFileUrl(d) {
1765
+ return d.startsWith("http");
1766
+ }
1767
+ function splitFileUrl(d) {
1768
+ let m = new URL(d);
1769
+ return {
1770
+ pathname: `${m.origin}${m.pathname ?? ""}`,
1771
+ search: m.search ?? "",
1772
+ hash: m.hash ?? ""
1773
+ };
1774
+ }
1775
+ const createCdnUrl = (d, m, v) => {
1776
+ let x = new URL(trimFilename(d)), w = v ?? extractFilename(d), T = m ?? "";
1777
+ if (x.pathname.startsWith("//") && (x.pathname = x.pathname.replace("//", "/")), w && isFileUrl(w)) {
1778
+ let d = splitFileUrl(w);
1779
+ x.pathname = `${x.pathname}${T}${d.pathname || ""}`, x.search = d.search, x.hash = d.hash;
1780
+ } else x.pathname = `${x.pathname}${T}${w || ""}`;
1781
+ return x.toString();
1782
+ }, createOriginalUrl = (d, m) => {
1783
+ let v = new URL(d);
1784
+ return v.pathname = `${m}/`, v.toString();
1785
+ }, stringToArray = (d, m = ",") => d.trim().split(m).map((d) => d.trim()).filter((d) => d.length > 0), OPERATIONS_DEFAULTS = Object.freeze({
1786
+ brightness: 0,
1787
+ exposure: 0,
1788
+ gamma: 100,
1789
+ contrast: 0,
1790
+ saturation: 0,
1791
+ vibrance: 0,
1792
+ warmth: 0,
1793
+ enhance: 0,
1794
+ filter: 0,
1795
+ rotate: 0,
1796
+ mirror: !1,
1797
+ flip: !1,
1798
+ crop: void 0
1799
+ });
1800
+ var SUPPORTED_OPERATIONS_ORDERED = [
1801
+ "enhance",
1802
+ "brightness",
1803
+ "exposure",
1804
+ "gamma",
1805
+ "contrast",
1806
+ "saturation",
1807
+ "vibrance",
1808
+ "warmth",
1809
+ "filter",
1810
+ "mirror",
1811
+ "flip",
1812
+ "rotate",
1813
+ "crop"
1814
+ ];
1815
+ function transformationToStr(d, m) {
1816
+ if (typeof m == "number") {
1817
+ let v = m;
1818
+ return OPERATIONS_DEFAULTS[d] === v ? "" : `${d}/${v}`;
1819
+ }
1820
+ if (typeof m == "boolean") {
1821
+ let v = m;
1822
+ return OPERATIONS_DEFAULTS[d] === v ? "" : `${d}`;
1823
+ }
1824
+ if (d === "filter" && m) {
1825
+ let { name: v, amount: x } = m;
1826
+ return OPERATIONS_DEFAULTS.filter === x ? "" : `${d}/${v}/${x}`;
1827
+ }
1828
+ if (d === "crop" && m) {
1829
+ let { dimensions: v, coords: x } = m;
1830
+ return `${d}/${v.join("x")}/${x.join(",")}`;
1831
+ }
1832
+ return "";
1833
+ }
1834
+ function transformationsToOperations(d) {
1835
+ return joinCdnOperations(...SUPPORTED_OPERATIONS_ORDERED.filter((m) => d[m] !== void 0 && d[m] !== null).map((m) => {
1836
+ let v = d[m];
1837
+ return transformationToStr(m, v);
1838
+ }).filter((d) => !!d));
1839
+ }
1840
+ const COMMON_OPERATIONS = joinCdnOperations("format/auto", "progressive/yes");
1841
+ var asNumber = ([d]) => d === void 0 ? void 0 : Number(d), asBoolean = () => !0, asFilter = ([d, m]) => ({
1842
+ name: d,
1843
+ amount: m === void 0 ? 100 : Number(m)
1844
+ }), asCrop = ([d, m]) => {
1845
+ if (!/\d+x\d+/.test(d) || !/\d+,\d+/.test(m)) throw Error("Crop by aspect ratio, percentage or alignment shortcuts is not supported.");
1846
+ return {
1847
+ dimensions: stringToArray(d, "x").map(Number),
1848
+ coords: stringToArray(m).map(Number)
1849
+ };
1850
+ }, OPERATION_PROCESSORS = Object.freeze({
1851
+ enhance: asNumber,
1852
+ brightness: asNumber,
1853
+ exposure: asNumber,
1854
+ gamma: asNumber,
1855
+ contrast: asNumber,
1856
+ saturation: asNumber,
1857
+ vibrance: asNumber,
1858
+ warmth: asNumber,
1859
+ filter: asFilter,
1860
+ mirror: asBoolean,
1861
+ flip: asBoolean,
1862
+ rotate: asNumber,
1863
+ crop: (d) => {
1864
+ let [m, v] = d, { dimensions: x, coords: w } = asCrop([m, v]);
1865
+ return {
1866
+ dimensions: x,
1867
+ coords: w
1868
+ };
1869
+ }
1870
+ });
1871
+ function operationsToTransformations(d) {
1872
+ let m = {};
1873
+ for (let v of d) {
1874
+ let [d, ...x] = v.split("/");
1875
+ if (!d || !SUPPORTED_OPERATIONS_ORDERED.includes(d)) continue;
1876
+ let w = d, T = OPERATION_PROCESSORS[w];
1877
+ try {
1878
+ m[w] = T(x);
1879
+ } catch (d) {
1880
+ console.warn([
1881
+ `Failed to parse URL operation "${v}". It will be ignored.`,
1882
+ d instanceof Error ? `Error message: "${d.message}"` : d,
1883
+ "If you need this functionality, please feel free to open an issue at https://github.com/uploadcare/blocks/issues/new"
1884
+ ].join("\n"));
1885
+ }
1886
+ }
1887
+ return m;
1888
+ }
1889
+ const TabId = Object.freeze({
1890
+ CROP: "crop",
1891
+ TUNING: "tuning",
1892
+ FILTERS: "filters"
1893
+ }), ALL_TABS = Object.freeze([
1894
+ TabId.CROP,
1895
+ TabId.TUNING,
1896
+ TabId.FILTERS
1897
+ ]), ALL_COLOR_OPERATIONS = Object.freeze([
1898
+ "brightness",
1899
+ "exposure",
1900
+ "gamma",
1901
+ "contrast",
1902
+ "saturation",
1903
+ "vibrance",
1904
+ "warmth",
1905
+ "enhance"
1906
+ ]), ALL_FILTERS = Object.freeze(/* @__PURE__ */ "adaris.briaril.calarel.carris.cynarel.cyren.elmet.elonni.enzana.erydark.fenralan.ferand.galen.gavin.gethriel.iorill.iothari.iselva.jadis.lavra.misiara.namala.nerion.nethari.pamaya.sarnar.sedis.sewen.sorahel.sorlen.tarian.thellassan.varriel.varven.vevera.virkas.yedis.yllara.zatvel.zevcen".split(".")), ALL_CROP_OPERATIONS = Object.freeze([
1907
+ "rotate",
1908
+ "mirror",
1909
+ "flip"
1910
+ ]);
1911
+ var NUMERIC_OPERATION_DEFAULTS = OPERATIONS_DEFAULTS;
1912
+ const COLOR_OPERATIONS_CONFIG = Object.freeze({
1913
+ brightness: {
1914
+ zero: NUMERIC_OPERATION_DEFAULTS.brightness,
1915
+ range: [-100, 100],
1916
+ keypointsNumber: 2
1917
+ },
1918
+ exposure: {
1919
+ zero: NUMERIC_OPERATION_DEFAULTS.exposure,
1920
+ range: [-500, 500],
1921
+ keypointsNumber: 2
1922
+ },
1923
+ gamma: {
1924
+ zero: NUMERIC_OPERATION_DEFAULTS.gamma,
1925
+ range: [0, 1e3],
1926
+ keypointsNumber: 2
1927
+ },
1928
+ contrast: {
1929
+ zero: NUMERIC_OPERATION_DEFAULTS.contrast,
1930
+ range: [-100, 500],
1931
+ keypointsNumber: 2
1932
+ },
1933
+ saturation: {
1934
+ zero: NUMERIC_OPERATION_DEFAULTS.saturation,
1935
+ range: [-100, 500],
1936
+ keypointsNumber: 1
1937
+ },
1938
+ vibrance: {
1939
+ zero: NUMERIC_OPERATION_DEFAULTS.vibrance,
1940
+ range: [-100, 500],
1941
+ keypointsNumber: 1
1942
+ },
1943
+ warmth: {
1944
+ zero: NUMERIC_OPERATION_DEFAULTS.warmth,
1945
+ range: [-100, 100],
1946
+ keypointsNumber: 1
1947
+ },
1948
+ enhance: {
1949
+ zero: NUMERIC_OPERATION_DEFAULTS.enhance,
1950
+ range: [0, 100],
1951
+ keypointsNumber: 1
1952
+ },
1953
+ filter: {
1954
+ zero: NUMERIC_OPERATION_DEFAULTS.filter,
1955
+ range: [0, 100],
1956
+ keypointsNumber: 1
1957
+ }
1958
+ }), DEFAULT_CDN_CNAME = "https://ucarecdn.com";
1959
+ var config = {
1960
+ pubkey: "",
1961
+ multiple: !0,
1962
+ multipleMin: 0,
1963
+ multipleMax: 2 ** 53 - 1,
1964
+ confirmUpload: !1,
1965
+ imgOnly: !1,
1966
+ accept: "",
1967
+ externalSourcesPreferredTypes: "",
1968
+ externalSourcesEmbedCss: "",
1969
+ store: "auto",
1970
+ cameraMirror: !1,
1971
+ cameraCapture: "",
1972
+ sourceList: "local, url, camera, dropbox, gdrive",
1973
+ topLevelOrigin: "",
1974
+ maxLocalFileSizeBytes: 0,
1975
+ thumbSize: 76,
1976
+ showEmptyList: !1,
1977
+ useLocalImageEditor: !1,
1978
+ removeCopyright: !1,
1979
+ cropPreset: "",
1980
+ imageShrink: "",
1981
+ modalScrollLock: !0,
1982
+ modalBackdropStrokes: !1,
1983
+ sourceListWrap: !0,
1984
+ remoteTabSessionKey: "",
1985
+ cdnCname: DEFAULT_CDN_CNAME,
1986
+ cdnCnamePrefixed: "https://ucarecd.net",
1987
+ baseUrl: "https://upload.uploadcare.com",
1988
+ socialBaseUrl: "https://social.uploadcare.com",
1989
+ secureSignature: "",
1990
+ secureExpire: "",
1991
+ secureDeliveryProxy: "",
1992
+ retryThrottledRequestMaxTimes: 3,
1993
+ retryNetworkErrorMaxTimes: 3,
1994
+ multipartMinFileSize: 26214400,
1995
+ multipartChunkSize: 5242880,
1996
+ maxConcurrentRequests: 10,
1997
+ multipartMaxConcurrentRequests: 4,
1998
+ multipartMaxAttempts: 3,
1999
+ checkForUrlDuplicates: !1,
2000
+ saveUrlForRecurrentUploads: !1,
2001
+ groupOutput: !1,
2002
+ userAgentIntegration: "",
2003
+ debug: !1,
2004
+ metadata: null,
2005
+ localeName: "en",
2006
+ localeDefinitionOverride: null,
2007
+ secureUploadsExpireThreshold: 600 * 1e3,
2008
+ secureUploadsSignatureResolver: null,
2009
+ secureDeliveryProxyUrlResolver: null,
2010
+ iconHrefResolver: null,
2011
+ fileValidators: [],
2012
+ collectionValidators: [],
2013
+ validationTimeout: 15 * 1e3,
2014
+ validationConcurrency: 100,
2015
+ cameraModes: "photo, video",
2016
+ defaultCameraMode: null,
2017
+ enableAudioRecording: !0,
2018
+ enableVideoRecording: null,
2019
+ maxVideoRecordingDuration: null,
2020
+ mediaRecorderOptions: null,
2021
+ filesViewMode: "list",
2022
+ gridShowFileNames: !1,
2023
+ useCloudImageEditor: !0,
2024
+ cloudImageEditorAutoOpen: !1,
2025
+ cloudImageEditorTabs: serializeCsv(ALL_TABS),
2026
+ cloudImageEditorMaskHref: null,
2027
+ testMode: !1,
2028
+ qualityInsights: !0,
2029
+ pasteScope: "local",
2030
+ plugins: []
2031
+ };
2032
+ const initialConfig = Object.freeze(config), createDebugPrinter = (d, m) => (...v) => {
2033
+ let x = d();
2034
+ if (!x.read(sharedConfigKey("debug"))) return;
2035
+ let w = v;
2036
+ if (typeof v?.[0] == "function") {
2037
+ let d = v[0];
2038
+ w = d();
2039
+ }
2040
+ let T = [x.id, m].filter(Boolean);
2041
+ console.log(`[${T.join("][")}]`, ...w);
2042
+ };
2043
+ var SharedInstance = class {
2044
+ constructor(d) {
2045
+ this._subscriptions = /* @__PURE__ */ new Set(), this._cfgProxy = null, this._debugPrint = createDebugPrinter(() => this._sharedInstancesBag.ctx, this.constructor.name), this._sharedInstancesBag = d, this._ctx = d.ctx;
2046
+ }
2047
+ addSub(d) {
2048
+ this._subscriptions.add(d);
2049
+ }
2050
+ get _cfg() {
2051
+ return this._cfgProxy ||= new Proxy({}, {
2052
+ set: () => {
2053
+ throw Error("SharedInstance cfg proxy is read-only");
2054
+ },
2055
+ get: (d, m) => {
2056
+ if (typeof m != "string") return;
2057
+ let v = sharedConfigKey(m);
2058
+ return this._sharedInstancesBag.ctx.has(v) ? this._sharedInstancesBag.ctx.read(v) : initialConfig[m];
2059
+ }
2060
+ }), this._cfgProxy;
2061
+ }
2062
+ destroy() {
2063
+ for (let d of this._subscriptions) try {
2064
+ d();
2065
+ } catch {}
2066
+ this._subscriptions.clear();
2067
+ }
2068
+ }, instanceKeyMap = {
2069
+ modalManager: "*modalManager",
2070
+ pluginManager: "*pluginManager",
2071
+ telemetryManager: "*telemetryManager",
2072
+ localeManager: "*localeManager",
2073
+ a11y: "*a11y",
2074
+ clipboard: "*clipboard",
2075
+ blocksRegistry: "*blocksRegistry",
2076
+ eventEmitter: "*eventEmitter",
2077
+ uploadCollection: "*uploadCollection",
2078
+ secureUploadsManager: "*secureUploadsManager",
2079
+ api: "*publicApi",
2080
+ validationManager: "*validationManager"
2081
+ };
2082
+ const getSharedInstance = (d, m, v = !0) => {
2083
+ let x = d.has(m), w = x ? d.read(m) : null;
2084
+ if (x && w || !v) return w;
2085
+ throw Error(`Unexpected error: shared instance for key "${String(m)}" is not available`);
2086
+ }, createSharedInstancesBag = (d) => ({
2087
+ get ctx() {
2088
+ return d();
2089
+ },
2090
+ get modalManager() {
2091
+ return getSharedInstance(d(), "*modalManager", !1);
2092
+ },
2093
+ get pluginManager() {
2094
+ return getSharedInstance(d(), "*pluginManager");
2095
+ },
2096
+ get telemetryManager() {
2097
+ return getSharedInstance(d(), "*telemetryManager");
2098
+ },
2099
+ get localeManager() {
2100
+ return getSharedInstance(d(), "*localeManager");
2101
+ },
2102
+ get a11y() {
2103
+ return getSharedInstance(d(), "*a11y");
2104
+ },
2105
+ get blocksRegistry() {
2106
+ return getSharedInstance(d(), "*blocksRegistry");
2107
+ },
2108
+ get eventEmitter() {
2109
+ return getSharedInstance(d(), "*eventEmitter");
2110
+ },
2111
+ get uploadCollection() {
2112
+ return getSharedInstance(d(), "*uploadCollection");
2113
+ },
2114
+ get secureUploadsManager() {
2115
+ return getSharedInstance(d(), "*secureUploadsManager", !1);
2116
+ },
2117
+ get api() {
2118
+ return getSharedInstance(d(), "*publicApi");
2119
+ },
2120
+ get validationManager() {
2121
+ return getSharedInstance(d(), "*validationManager");
2122
+ },
2123
+ when(m, v) {
2124
+ let x = instanceKeyMap[m], w = d(), T = w.has(x) ? w.read(x) : void 0;
2125
+ if (T) return v(T), () => {};
2126
+ let O = w.sub(x, (d) => {
2127
+ d && (v(d), O());
2128
+ });
2129
+ return O;
2130
+ }
2131
+ });
2132
+ var ClipboardLayer = class extends SharedInstance {
2133
+ constructor(d) {
2134
+ super(d), this.scopes = /* @__PURE__ */ new Set(), this.listener = this._listener.bind(this), window.addEventListener("paste", this.listener);
2135
+ }
2136
+ openUploadList() {
2137
+ this._sharedInstancesBag.api.setCurrentActivity(ACTIVITY_TYPES.UPLOAD_LIST), this._sharedInstancesBag.api.setModalState(!0);
2138
+ }
2139
+ async _listener(d) {
2140
+ if (d.clipboardData) {
2141
+ for (let m of this.scopes) if (m.isConnected) switch (this._cfg.pasteScope) {
2142
+ case "global":
2143
+ await this.handlePaste(d);
2144
+ break;
2145
+ case "local":
2146
+ if (!m.contains(d.target)) continue;
2147
+ await this.handlePaste(d);
2148
+ break;
2149
+ default: continue;
2150
+ }
2151
+ }
2152
+ }
2153
+ async handlePaste(d) {
2154
+ let m = Array.from(d.clipboardData.items), v = m.map((d) => d.getAsFile()).filter((d) => d !== null), x = m.filter((d) => d.kind === "string" && d.type === "text/plain").map((d) => new Promise((m) => {
2155
+ d.getAsString((d) => {
2156
+ m(d);
2157
+ });
2158
+ }));
2159
+ v.length > 0 && (v.forEach((d) => {
2160
+ this._sharedInstancesBag.api.addFileFromObject(d, { source: "clipboard" });
2161
+ }), this.openUploadList()), x.length > 0 && ((await Promise.all(x)).forEach((d) => {
2162
+ this._sharedInstancesBag.api.addFileFromUrl(d, { source: "clipboard" });
2163
+ }), this.openUploadList());
2164
+ }
2165
+ registerBlock(d) {
2166
+ return this.scopes.add(d), () => {
2167
+ this.scopes.delete(d);
2168
+ };
2169
+ }
2170
+ destroy() {
2171
+ super.destroy(), window.removeEventListener("paste", this.listener), this.scopes.clear();
2172
+ }
2173
+ }, ROLES = {
2174
+ button: ["toolbar"],
2175
+ checkbox: ["toolbar"],
2176
+ menuitem: ["menu", "menubar"],
2177
+ option: ["listbox"],
2178
+ tab: ["tablist"]
2179
+ };
2180
+ function focus(d, m) {
2181
+ m.tabIndex = 0, m.focus(), d.tabIndex = -1;
2182
+ }
2183
+ function findGroupNodeByEventTarget(d) {
2184
+ let m = d.role || d.type || d.tagName;
2185
+ if (!m) return null;
2186
+ let v = ROLES[m.toLowerCase()];
2187
+ if (!v) return null;
2188
+ for (let m of v) {
2189
+ let v = d.closest(`[role=${m}]`);
2190
+ if (v) return v;
2191
+ }
2192
+ }
2193
+ function getItems(d, m) {
2194
+ return m.role === "toolbar" ? getToolbarItems(m) : m.querySelectorAll(`[role=${d.role}]`);
2195
+ }
2196
+ function getToolbarItems(d) {
2197
+ return [...d.querySelectorAll("*")].filter((d) => d.role === "button" || d.type === "button" || d.role === "checkbox" || d.type === "checkbox");
2198
+ }
2199
+ function isHorizontalOrientation(d) {
2200
+ let m = d.getAttribute("aria-orientation");
2201
+ if (m === "vertical") return !1;
2202
+ if (m === "horizontal") return !0;
2203
+ let v = d.role;
2204
+ return v === "menubar" || v === "tablist" || v === "toolbar";
2205
+ }
2206
+ function focusGroupKeyUX(d) {
2207
+ return (m) => {
2208
+ let v = !1, x = d?.searchDelayMs || 300, w = 0, T = "";
2209
+ function O(d) {
2210
+ let v = findGroupNodeByEventTarget(d.target);
2211
+ if (!v) {
2212
+ M();
2213
+ return;
2214
+ }
2215
+ let O = getItems(d.target, v), F = Array.from(O).indexOf(d.target), U = "ArrowDown", W = "ArrowUp";
2216
+ if (isHorizontalOrientation(v) && (m.document.dir === "rtl" ? (U = "ArrowLeft", W = "ArrowRight") : (U = "ArrowRight", W = "ArrowLeft")), d.key === U) d.preventDefault(), focus(d.target, O[F + 1] || O[0]);
2217
+ else if (d.key === W) d.preventDefault(), focus(d.target, O[F - 1] || O[O.length - 1]);
2218
+ else if (d.key === "Home") d.preventDefault(), focus(d.target, O[0]);
2219
+ else if (d.key === "End") d.preventDefault(), focus(d.target, O[O.length - 1]);
2220
+ else if (d.key.length === 1 && v.role !== "tablist") {
2221
+ let m = Date.now();
2222
+ m - w <= x ? T += d.key.toLowerCase() : T = d.key.toLowerCase(), w = m;
2223
+ let v = Array.from(O).find((d) => d.textContent?.trim()?.toLowerCase()?.startsWith(T));
2224
+ v && (d.preventDefault(), focus(d.target, v));
2225
+ }
2226
+ }
2227
+ function M() {
2228
+ v = !1, m.removeEventListener("keydown", O);
2229
+ }
2230
+ function F(d) {
2231
+ let x = findGroupNodeByEventTarget(d.target);
2232
+ if (x) {
2233
+ v || (v = !0, m.addEventListener("keydown", O));
2234
+ let w = getItems(d.target, x);
2235
+ for (let m of w) m !== d.target && m.setAttribute("tabindex", -1);
2236
+ } else v && M();
2237
+ }
2238
+ function U(d) {
2239
+ (!d.relatedTarget || d.relatedTarget === m.document) && M();
2240
+ }
2241
+ function W(d) {
2242
+ let m = findGroupNodeByEventTarget(d.target);
2243
+ if (m) {
2244
+ let v = getItems(d.target, m);
2245
+ for (let m of v) m !== d.target && m.setAttribute("tabindex", -1);
2246
+ d.target.setAttribute("tabindex", 0);
2247
+ }
2248
+ }
2249
+ return m.addEventListener("click", W), m.addEventListener("focusin", F), m.addEventListener("focusout", U), () => {
2250
+ M(), m.removeEventListener("click", W), m.removeEventListener("focusin", F), m.removeEventListener("focusout", U);
2251
+ };
2252
+ };
2253
+ }
2254
+ function hiddenKeyUX() {
2255
+ return (d) => {
2256
+ let m, v;
2257
+ function x(d) {
2258
+ if (d.target.getAttribute("aria-hidden") === "true") {
2259
+ m = d.target, m.setAttribute("aria-hidden", "false"), v = m.hidden, v && (m.hidden = !1);
2260
+ let x = d.target.querySelector("a, button, select, textarea, input:not([type=radio]), [type=radio]:checked, [tabindex]:not([tabindex=\"-1\"])");
2261
+ x && (x.tabIndex = 0);
2262
+ }
2263
+ }
2264
+ function w(d) {
2265
+ m && m.contains(d.target) && (!d.relatedTarget || !m.contains(d.relatedTarget)) && (d.target.tabIndex = -1, m.setAttribute("aria-hidden", "true"), v && (m.hidden = !0), m = null);
2266
+ }
2267
+ return d.addEventListener("keyuxJump", x), d.addEventListener("focusout", w), () => {
2268
+ d.removeEventListener("keyuxJump", x), d.removeEventListener("focusout", w);
2269
+ };
2270
+ };
2271
+ }
2272
+ function jumpKeyUX() {
2273
+ return (d) => {
2274
+ let m = [];
2275
+ function v(v) {
2276
+ let x = d.document.activeElement;
2277
+ x && x !== d.document.body && m.push(new WeakRef(x)), v.focus({ focusVisible: !0 });
2278
+ }
2279
+ function x() {
2280
+ let v = m.pop();
2281
+ if (!v) {
2282
+ d.document.activeElement.blur();
2283
+ return;
2284
+ }
2285
+ let w = v.deref();
2286
+ w && w.isConnected ? w.focus() : x();
2287
+ }
2288
+ let w = 0, T;
2289
+ function O(m) {
2290
+ clearInterval(T);
2291
+ let x = m.getAttribute("aria-controls");
2292
+ T = setInterval(() => {
2293
+ if (w++ > 50) {
2294
+ clearInterval(T);
2295
+ return;
2296
+ }
2297
+ let m = d.document.getElementById(x);
2298
+ if (m) {
2299
+ let x = m.querySelector("a, button, select, textarea, input:not([type=radio]), [type=radio]:checked, [tabindex]:not([tabindex=\"-1\"])");
2300
+ x && (clearInterval(T), m.dispatchEvent(new d.CustomEvent("keyuxJump", { bubbles: !0 })), v(x));
2301
+ }
2302
+ }, 50);
2303
+ }
2304
+ function M(d) {
2305
+ d.target.getAttribute("aria-controls") && d.key === "Enter" && O(d.target), d.key === "Escape" && x();
2306
+ }
2307
+ return d.addEventListener("keydown", M), () => {
2308
+ d.removeEventListener("keydown", M);
2309
+ };
2310
+ };
2311
+ }
2312
+ function pressKeyUX(d) {
2313
+ let m, v = d.split(" "), x;
2314
+ function w(d) {
2315
+ d.key === "Enter" && (d.target.tagName === "BUTTON" || d.target.tagName === "A") && (T(), d.target.classList.add(...v), m = d.target, x = d.target);
2316
+ }
2317
+ function T() {
2318
+ m && m.classList.remove(...v), x = null;
2319
+ }
2320
+ function O(d) {
2321
+ d.clientX === 0 && d.clientY === 0 && x !== d.target && (T(), d.target.classList.add(...v), m = d.target);
2322
+ }
2323
+ return (d) => (d.addEventListener("click", O), d.addEventListener("keydown", w), d.addEventListener("keyup", T), () => {
2324
+ d.removeEventListener("click", O), d.removeEventListener("keydown", w), d.removeEventListener("keyup", T);
2325
+ });
2326
+ }
2327
+ function startKeyUX(d, m) {
2328
+ let v = m.map((m) => m(d));
2329
+ return () => {
2330
+ v.forEach((d) => d());
2331
+ };
2332
+ }
2333
+ var ScopedMinimalWindow = class {
2334
+ constructor() {
2335
+ this._listeners = /* @__PURE__ */ new Map(), this._scope = [];
2336
+ }
2337
+ addEventListener(d, m) {
2338
+ let v = (d) => {
2339
+ let v = d.target;
2340
+ v instanceof Node && this._scope.some((d) => d === v || d.contains(v)) && m(d);
2341
+ };
2342
+ this._listeners.set(m, v), window.addEventListener(d, v);
2343
+ }
2344
+ removeEventListener(d, m) {
2345
+ let v = this._listeners.get(m);
2346
+ v && window.removeEventListener(d, v), this._listeners.delete(m);
2347
+ }
2348
+ get CustomEvent() {
2349
+ return window.CustomEvent;
2350
+ }
2351
+ get document() {
2352
+ return window.document;
2353
+ }
2354
+ get navigator() {
2355
+ return window.navigator;
2356
+ }
2357
+ registerScope(d) {
2358
+ this._scope.push(d);
2359
+ }
2360
+ destroy() {
2361
+ this._scope = [];
2362
+ for (let d of this._listeners.values()) window.removeEventListener("keydown", d), window.removeEventListener("keyup", d);
2363
+ this._listeners.clear();
2364
+ }
2365
+ }, A11y = class {
2366
+ constructor() {
2367
+ this._scopedWindow = new ScopedMinimalWindow(), this._destroyKeyUX = startKeyUX(this._scopedWindow, [
2368
+ focusGroupKeyUX(),
2369
+ pressKeyUX("is-pressed"),
2370
+ jumpKeyUX(),
2371
+ hiddenKeyUX()
2372
+ ]);
2373
+ }
2374
+ registerBlock(d) {
2375
+ this._scopedWindow.registerScope(d);
2376
+ }
2377
+ destroy() {
2378
+ this._destroyKeyUX?.(), this._scopedWindow.destroy();
2379
+ }
2380
+ }, en_default = {
2381
+ "locale-id": "en",
2382
+ "social-source-lang": "en",
2383
+ "upload-file": "Upload file",
2384
+ "upload-files": "Upload files",
2385
+ "choose-file": "Choose file",
2386
+ "choose-files": "Choose files",
2387
+ "drop-files-here": "Drop files here",
2388
+ "select-file-source": "Select file source",
2389
+ selected: "Selected",
2390
+ upload: "Upload",
2391
+ "add-more": "Add more",
2392
+ cancel: "Cancel",
2393
+ "start-from-cancel": "Cancel",
2394
+ clear: "Clear",
2395
+ "camera-shot": "Shot",
2396
+ "upload-url": "Import",
2397
+ "upload-url-placeholder": "Paste link here",
2398
+ "edit-image": "Edit image",
2399
+ "edit-detail": "Details",
2400
+ back: "Back",
2401
+ done: "Done",
2402
+ ok: "Ok",
2403
+ "remove-from-list": "Remove",
2404
+ no: "No",
2405
+ yes: "Yes",
2406
+ "confirm-your-action": "Confirm your action",
2407
+ "are-you-sure": "Are you sure?",
2408
+ "selected-count": "{{count}} of {{total}} selected",
2409
+ "select-all": "Select all",
2410
+ "deselect-all": "Deselect all",
2411
+ "upload-error": "Upload error",
2412
+ "validation-error": "Validation error",
2413
+ "no-files": "No files selected",
2414
+ browse: "Browse",
2415
+ "not-uploaded-yet": "Not uploaded yet...",
2416
+ file__one: "file",
2417
+ file__other: "files",
2418
+ error__one: "error",
2419
+ error__other: "errors",
2420
+ "header-uploading": "Uploading {{count}} {{plural:file(count)}}",
2421
+ "header-failed": "{{count}} {{plural:error(count)}}",
2422
+ "header-succeed": "{{count}} {{plural:file(count)}} uploaded",
2423
+ "header-total": "{{count}} {{plural:file(count)}} selected",
2424
+ "src-type-local": "From device",
2425
+ "src-type-from-url": "From link",
2426
+ "src-type-camera": "Camera",
2427
+ "src-type-mobile-video-camera": "Video",
2428
+ "src-type-mobile-photo-camera": "Photo",
2429
+ "src-type-facebook": "Facebook",
2430
+ "src-type-dropbox": "Dropbox",
2431
+ "src-type-gdrive": "Google Drive",
2432
+ "src-type-ngdrive": "Google Drive",
2433
+ "src-type-gphotos": "Google Photos",
2434
+ "src-type-flickr": "Flickr",
2435
+ "src-type-vk": "VK",
2436
+ "src-type-evernote": "Evernote",
2437
+ "src-type-box": "Box",
2438
+ "src-type-onedrive": "OneDrive",
2439
+ "src-type-huddle": "Huddle",
2440
+ "src-type-other": "Other",
2441
+ "caption-from-url": "Import from link",
2442
+ "caption-camera": "Camera",
2443
+ "caption-edit-file": "Edit file",
2444
+ "file-no-name": "No name...",
2445
+ "toggle-fullscreen": "Toggle fullscreen",
2446
+ "toggle-guides": "Toggle guides",
2447
+ rotate: "Rotate",
2448
+ "flip-vertical": "Flip vertical",
2449
+ "flip-horizontal": "Flip horizontal",
2450
+ apply: "Apply",
2451
+ brightness: "Brightness",
2452
+ contrast: "Contrast",
2453
+ saturation: "Saturation",
2454
+ exposure: "Exposure",
2455
+ gamma: "Gamma",
2456
+ vibrance: "Vibrance",
2457
+ warmth: "Warmth",
2458
+ enhance: "Enhance",
2459
+ original: "Original",
2460
+ resize: "Resize image",
2461
+ crop: "Crop",
2462
+ "select-color": "Select color",
2463
+ text: "Text",
2464
+ draw: "Draw",
2465
+ "cancel-edit": "Cancel edit",
2466
+ "tab-view": "Preview",
2467
+ "tab-details": "Details",
2468
+ "file-name": "Name",
2469
+ "file-size": "Size",
2470
+ "cdn-url": "CDN URL",
2471
+ "file-size-unknown": "Unknown",
2472
+ "camera-permissions-denied": "Camera access denied",
2473
+ "camera-permissions-prompt": "Please allow access to the camera",
2474
+ "camera-permissions-request": "Request access",
2475
+ "files-count-limit-error-title": "Files count limit overflow",
2476
+ "files-count-limit-error-too-few": "You’ve chosen {{total}} {{plural:file(total)}}. At least {{min}} {{plural:file(min)}} required.",
2477
+ "files-count-limit-error-too-many": "You’ve chosen too many files. {{max}} {{plural:file(max)}} is maximum.",
2478
+ "files-max-size-limit-error": "File is too big. Max file size is {{maxFileSize}}.",
2479
+ "has-validation-errors": "File validation error occurred. Please, check your files before upload.",
2480
+ "images-only-accepted": "Only image files are accepted.",
2481
+ "file-type-not-allowed": "Uploading of these file types is not allowed.",
2482
+ "some-files-were-not-uploaded": "Some files were not uploaded.",
2483
+ "file-item-edit-button": "Edit",
2484
+ "file-item-remove-button": "Remove",
2485
+ "a11y-editor-tab-filters": "Filters",
2486
+ "a11y-editor-tab-tuning": "Tuning",
2487
+ "a11y-editor-tab-crop": "Crop",
2488
+ "a11y-activity-header-button-close": "Close",
2489
+ flip: "Flip",
2490
+ mirror: "Mirror",
2491
+ "a11y-cloud-editor-apply-filter": "Apply {{name}} filter",
2492
+ "a11y-cloud-editor-apply-crop": "Apply {{name}} operation",
2493
+ "a11y-cloud-editor-apply-tuning": "Apply {{name}} tuning",
2494
+ "a11y-cloud-editor-apply-aspect-ratio": "Apply operation {{name}} {{value}}",
2495
+ finished: "Finished",
2496
+ failed: "Failed",
2497
+ uploading: "Uploading",
2498
+ idle: "Idle",
2499
+ "a11y-file-item-status": "File {{fileName}} in status {{status}}",
2500
+ "waiting-for": "Waiting for {{source}}",
2501
+ "queued-uploading": "Queued for upload",
2502
+ "queued-validation": "Queued for validation",
2503
+ validation: "Validating",
2504
+ "crop-to-shape": "Crop to {{value}}",
2505
+ custom: "Freeform",
2506
+ "freeform-crop": "Freeform crop"
2507
+ }, localeRegistry = /* @__PURE__ */ new Map(), localeResolvers = /* @__PURE__ */ new Map(), defineLocaleSync = (d, m) => {
2508
+ localeRegistry.has(d) && console.log(`Locale ${d} is already defined. Overwriting...`);
2509
+ let v = {
2510
+ ...en_default,
2511
+ ...m
2512
+ };
2513
+ return localeRegistry.set(d, v), v;
2514
+ }, defineLocaleAsync = (d, m) => {
2515
+ localeResolvers.set(d, m);
2516
+ };
2517
+ const defineLocale = (d, m) => {
2518
+ typeof m == "function" ? defineLocaleAsync(d, m) : defineLocaleSync(d, m);
2519
+ }, resolveLocaleDefinition = async (d) => {
2520
+ let m = localeRegistry.get(d);
2521
+ if (!m) {
2522
+ let v = localeResolvers.get(d);
2523
+ if (!v) throw Error(`Locale ${d} is not defined`);
2524
+ m = defineLocaleSync(d, await v());
2525
+ }
2526
+ return m;
2527
+ };
2528
+ defineLocale("en", en_default);
2529
+ const localeStateKey = (d) => `*l10n/${d}`;
2530
+ var LocaleManager = class extends SharedInstance {
2531
+ constructor(d) {
2532
+ super(d), this._localeName = "";
2533
+ for (let [d, m] of Object.entries(en_default)) {
2534
+ let v = this._ctx.has(localeStateKey(d)) ? !this._ctx.read(localeStateKey(d)) : !0;
2535
+ this._ctx.add(localeStateKey(d), m, v);
2536
+ }
2537
+ let m = d.pluginManager;
2538
+ m?.onPluginsChange && this.addSub(m.onPluginsChange(() => {
2539
+ this._localeName && this._applyPluginLocales(this._localeName);
2540
+ })), this.addSub(this._ctx.sub(sharedConfigKey("localeName"), async (d) => {
2541
+ if (!d) return;
2542
+ this._localeName = d;
2543
+ let m = await resolveLocaleDefinition(d);
2544
+ d !== "en" && this._localeName !== d || (this._applyPluginLocales(d), this._applyOverrides(d, m));
2545
+ })), this.addSub(this._ctx.sub(sharedConfigKey("localeDefinitionOverride"), (d) => {
2546
+ if (!d) return;
2547
+ let m = d[this._localeName];
2548
+ m && this._applyOverrides(this._localeName, m);
2549
+ }));
2550
+ }
2551
+ _applyOverrides(d, m) {
2552
+ let v = this._cfg.localeDefinitionOverride?.[d];
2553
+ for (let [d, x] of Object.entries(m)) {
2554
+ let m = v?.[d];
2555
+ this._ctx.add(localeStateKey(d), m ?? x, !0);
2556
+ }
2557
+ }
2558
+ _applyPluginLocales(d) {
2559
+ let m = this._sharedInstancesBag.pluginManager;
2560
+ if (!m) return;
2561
+ let v = m.snapshot();
2562
+ for (let m of v.i18n) {
2563
+ let { pluginId: v, ...x } = m, w = x[d];
2564
+ if (w) for (let [d, m] of Object.entries(w)) m !== void 0 && this._ctx.add(localeStateKey(d), m, !0);
2565
+ }
2566
+ }
2567
+ };
2568
+ const ModalEvents = Object.freeze({
2569
+ ADD: "modal:add",
2570
+ DELETE: "modal:delete",
2571
+ OPEN: "modal:open",
2572
+ CLOSE: "modal:close",
2573
+ CLOSE_ALL: "modal:closeAll",
2574
+ DESTROY: "modal:destroy"
2575
+ });
2576
+ var ModalManager = class extends SharedInstance {
2577
+ constructor(...d) {
2578
+ super(...d), this._modals = /* @__PURE__ */ new Map(), this._activeModals = /* @__PURE__ */ new Set(), this._subscribers = /* @__PURE__ */ new Map();
2579
+ }
2580
+ registerModal(d, m) {
2581
+ this._modals.set(d, m), this._notify(ModalEvents.ADD, {
2582
+ id: d,
2583
+ modal: m
2584
+ });
2585
+ }
2586
+ deleteModal(d) {
2587
+ let m = this._modals.get(d);
2588
+ return m ? (this._modals.delete(d), this._activeModals.delete(d), this._notify(ModalEvents.DELETE, {
2589
+ id: d,
2590
+ modal: m
2591
+ }), !0) : !1;
2592
+ }
2593
+ open(d) {
2594
+ let m = this._modals.get(d);
2595
+ return m ? (this._activeModals.add(d), this._notify(ModalEvents.OPEN, {
2596
+ modal: m,
2597
+ id: d
2598
+ }), !0) : (this._debugPrint(`Modal with ID "${d}" not found`), !1);
2599
+ }
2600
+ close(d) {
2601
+ let m = this._modals.get(d);
2602
+ return !m || !this._activeModals.has(d) ? (this._debugPrint(`Modal with ID "${d}" not found or not active`), !1) : (this._activeModals.delete(d), this._notify(ModalEvents.CLOSE, {
2603
+ id: d,
2604
+ modal: m
2605
+ }), !0);
2606
+ }
2607
+ toggle(d) {
2608
+ return this._modals.has(d) ? this._activeModals.has(d) ? this.close(d) : this.open(d) : (this._debugPrint(`Modal with ID "${d}" not found`), !1);
2609
+ }
2610
+ get hasActiveModals() {
2611
+ return this._activeModals.size > 0;
2612
+ }
2613
+ back() {
2614
+ if (this._activeModals.size === 0) return this._debugPrint("No active modals to go back from"), !1;
2615
+ let d = Array.from(this._activeModals).pop();
2616
+ return d ? this.close(d) : !1;
2617
+ }
2618
+ closeAll() {
2619
+ let d = this._activeModals.size;
2620
+ return this._activeModals.clear(), this._notify(ModalEvents.CLOSE_ALL, {}), d;
2621
+ }
2622
+ subscribe(d, m) {
2623
+ return this._subscribers.has(d) || this._subscribers.set(d, /* @__PURE__ */ new Set()), this._subscribers.get(d)?.add(m), () => this.unsubscribe(d, m);
2624
+ }
2625
+ unsubscribe(d, m) {
2626
+ this._subscribers.has(d) && this._subscribers.get(d)?.delete(m);
2627
+ }
2628
+ _notify(d, m) {
2629
+ if (this._subscribers.has(d)) for (let v of this._subscribers.get(d) ?? /* @__PURE__ */ new Set()) try {
2630
+ v(m);
2631
+ } catch (d) {
2632
+ this._sharedInstancesBag.telemetryManager.sendEventError(d, "modal subscriber"), this._debugPrint("Error in modal subscriber:", d);
2633
+ }
2634
+ }
2635
+ destroy() {
2636
+ super.destroy(), this.closeAll(), this._modals.clear(), this._subscribers.clear(), this._notify(ModalEvents.DESTROY, {});
2637
+ }
2638
+ }, CustomConfigRegistry = class {
2639
+ constructor() {
2640
+ this._definitions = /* @__PURE__ */ new Map();
2641
+ }
2642
+ register(d, m) {
2643
+ if (this._definitions.has(m.name)) {
2644
+ console.warn(`[CustomConfig] Config option "${m.name}" is already registered`);
2645
+ return;
2646
+ }
2647
+ let v = {
2648
+ attribute: !0,
2649
+ ...m,
2650
+ pluginId: d
2651
+ };
2652
+ this._definitions.set(m.name, v);
2653
+ }
2654
+ unregister(d) {
2655
+ this._definitions.delete(d);
2656
+ }
2657
+ unregisterByPlugin(d) {
2658
+ for (let [m, v] of this._definitions) v.pluginId === d && this._definitions.delete(m);
2659
+ }
2660
+ get(d) {
2661
+ return this._definitions.get(d);
2662
+ }
2663
+ getAll() {
2664
+ return new Map(this._definitions);
2665
+ }
2666
+ }, PluginManager = class extends SharedInstance {
2667
+ constructor(d) {
2668
+ super(d), this._plugins = /* @__PURE__ */ new Map(), this._sources = [], this._activities = [], this._fileActions = [], this._fileHooks = [], this._icons = [], this._i18n = [], this._subscribers = /* @__PURE__ */ new Set(), this._pluginsUpdate = Promise.resolve(), this.configRegistry = new CustomConfigRegistry(), this.addSub(this._ctx.sub(sharedConfigKey("plugins"), (d) => {
2669
+ this._pluginsUpdate = this._pluginsUpdate.then(() => this._syncPlugins(d));
2670
+ }));
2671
+ }
2672
+ onPluginsChange(d) {
2673
+ return this._subscribers.add(d), () => {
2674
+ this._subscribers.delete(d);
2675
+ };
2676
+ }
2677
+ async _syncPlugins(d) {
2678
+ let m = new Set(this._plugins.keys()), v = /* @__PURE__ */ new Set();
2679
+ for (let x of d) {
2680
+ if (v.has(x.id)) {
2681
+ this._debugPrint(`Plugin "${x.id}" is already in the list, skipping duplicate`);
2682
+ continue;
2683
+ }
2684
+ v.add(x.id);
2685
+ let d = this._plugins.get(x.id);
2686
+ if (!d || d.plugin !== x) try {
2687
+ await this._registerPlugin(x);
2688
+ } catch (d) {
2689
+ this._purgeRegistrations(x.id), this._notifySubscribers(), this._debugPrint(`Plugin "${x.id}" setup failed`, d);
2690
+ }
2691
+ m.delete(x.id);
2692
+ }
2693
+ for (let d of m) this._unregisterPlugin(d);
2694
+ }
2695
+ async _registerPlugin(d) {
2696
+ this._plugins.has(d.id) && this._unregisterPlugin(d.id);
2697
+ let m = {
2698
+ sources: [],
2699
+ activities: [],
2700
+ fileActions: [],
2701
+ fileHooks: [],
2702
+ icons: [],
2703
+ i18n: []
2704
+ }, v = [], x = {
2705
+ registry: {
2706
+ registerSource: (v) => this._register(this._sources, m.sources, d.id, v),
2707
+ registerActivity: (v) => this._register(this._activities, m.activities, d.id, v),
2708
+ registerFileAction: (v) => this._register(this._fileActions, m.fileActions, d.id, v),
2709
+ registerFileHook: (v) => this._register(this._fileHooks, m.fileHooks, d.id, v),
2710
+ registerIcon: (v) => this._register(this._icons, m.icons, d.id, v),
2711
+ registerI18n: (v) => this._register(this._i18n, m.i18n, d.id, v),
2712
+ registerConfig: (m) => {
2713
+ this.configRegistry.register(d.id, m);
2714
+ }
2715
+ },
2716
+ config: {
2717
+ get: (d) => {
2718
+ let m = sharedConfigKey(d);
2719
+ return this._ctx.read(m);
2720
+ },
2721
+ subscribe: (d, m) => {
2722
+ let x = sharedConfigKey(d), w = this._ctx.sub(x, (d) => {
2723
+ m(d);
2724
+ });
2725
+ return v.push(w), w;
2726
+ }
2727
+ },
2728
+ activity: {
2729
+ getParams: () => this._ctx.read("*currentActivityParams"),
2730
+ subscribeToParams: (d) => {
2731
+ let m = this._ctx.sub("*currentActivityParams", (m) => {
2732
+ d(m);
2733
+ });
2734
+ return v.push(m), m;
2735
+ }
2736
+ },
2737
+ files: { update: (d, m) => {
2738
+ let v = this._sharedInstancesBag.uploadCollection?.read(d);
2739
+ v && (m.file !== void 0 && (v.setValue("file", m.file), v.setValue("fileSize", m.file.size)), m.cdnUrl !== void 0 && v.setValue("cdnUrl", m.cdnUrl), m.cdnUrlModifiers !== void 0 && v.setValue("cdnUrlModifiers", m.cdnUrlModifiers), m.mimeType !== void 0 && v.setValue("mimeType", m.mimeType));
2740
+ } }
2741
+ }, w = this._sharedInstancesBag.api, T;
2742
+ try {
2743
+ T = await d.setup({
2744
+ pluginApi: x,
2745
+ uploaderApi: w
2746
+ }) ?? void 0;
2747
+ } catch (d) {
2748
+ for (let d of v) try {
2749
+ d();
2750
+ } catch (d) {
2751
+ this._debugPrint("Failed to unsubscribe config listener", d);
2752
+ }
2753
+ throw d;
2754
+ }
2755
+ this._plugins.set(d.id, {
2756
+ plugin: d,
2757
+ exports: T,
2758
+ registrations: m,
2759
+ configSubscriptions: v
2760
+ }), this._notifySubscribers();
2761
+ }
2762
+ _unregisterPlugin(d) {
2763
+ let m = this._plugins.get(d);
2764
+ if (m) {
2765
+ this._purgeRegistrations(d);
2766
+ for (let d of m.configSubscriptions) try {
2767
+ d();
2768
+ } catch (d) {
2769
+ this._debugPrint("Failed to unsubscribe config listener", d);
2770
+ }
2771
+ m.exports?.dispose?.(), this._plugins.delete(d), this._notifySubscribers();
2772
+ }
2773
+ }
2774
+ snapshot() {
2775
+ return {
2776
+ sources: [...this._sources],
2777
+ activities: [...this._activities],
2778
+ fileActions: [...this._fileActions],
2779
+ fileHooks: [...this._fileHooks],
2780
+ icons: [...this._icons],
2781
+ i18n: [...this._i18n]
2782
+ };
2783
+ }
2784
+ destroy() {
2785
+ for (let d of Array.from(this._plugins.keys())) this._unregisterPlugin(d);
2786
+ super.destroy();
2787
+ }
2788
+ _register(d, m, v, x) {
2789
+ let w = {
2790
+ ...x,
2791
+ pluginId: v
2792
+ };
2793
+ return d.push(w), m.push(w), x;
2794
+ }
2795
+ _purgeRegistrations(d) {
2796
+ this._sources = this._sources.filter((m) => m.pluginId !== d), this._activities = this._activities.filter((m) => m.pluginId !== d), this._fileActions = this._fileActions.filter((m) => m.pluginId !== d), this._fileHooks = this._fileHooks.filter((m) => m.pluginId !== d), this._icons = this._icons.filter((m) => m.pluginId !== d), this._i18n = this._i18n.filter((m) => m.pluginId !== d), this.configRegistry.unregisterByPlugin(d);
2797
+ }
2798
+ _notifySubscribers() {
2799
+ for (let d of this._subscribers) try {
2800
+ d();
2801
+ } catch {}
2802
+ }
2803
+ };
2804
+ function i$2(d) {
2805
+ return d.replace(/[A-Z]/g, (d) => `_${d.toLowerCase()}`).replace(/__/g, "_");
2806
+ }
2807
+ function c(d) {
2808
+ return Array.isArray(d) ? d.map((d) => typeof d == "object" && d ? c(d) : d) : typeof d != "object" || !d ? d : Object.fromEntries(Object.entries(d).map(([d, m]) => {
2809
+ let v = i$2(d);
2810
+ return typeof m == "object" && m ? [v, c(m)] : [v, m];
2811
+ }));
2812
+ }
2813
+ function u(d) {
2814
+ return {
2815
+ ok: !0,
2816
+ value: d
2817
+ };
2818
+ }
2819
+ function a(d) {
2820
+ return {
2821
+ ok: !1,
2822
+ error: d
2823
+ };
2824
+ }
2825
+ var l = "https://tlm.uploadcare.com/api/", y = class {
2826
+ constructor(d = l) {
2827
+ this.baseUrl = d;
2828
+ }
2829
+ async base(d, m = {}) {
2830
+ let v = `${this.baseUrl}${d}`;
2831
+ try {
2832
+ let d = await fetch(v, m);
2833
+ if (!d.ok) return a(/* @__PURE__ */ Error(`Got non-200 response from "${v}". Status: ${d.status.toString()}`));
2834
+ try {
2835
+ return u(await d.json());
2836
+ } catch (d) {
2837
+ return a(/* @__PURE__ */ Error(`Error parsing JSON from "${v}". Error: ${d}`));
2838
+ }
2839
+ } catch (d) {
2840
+ return a(/* @__PURE__ */ Error(`Error fetching data from "${v}". Error: ${d}`));
2841
+ }
2842
+ }
2843
+ async post(d, m, v = {}) {
2844
+ return await this.base(d, {
2845
+ ...v,
2846
+ method: "POST",
2847
+ body: JSON.stringify(c(m)),
2848
+ headers: {
2849
+ "Content-Type": "application/json",
2850
+ ...v.headers || {}
2851
+ }
2852
+ });
2853
+ }
2854
+ async get(d, m = {}) {
2855
+ return await this.base(d, {
2856
+ method: "GET",
2857
+ ...m
2858
+ });
2859
+ }
2860
+ }, p = async (d, m) => ({
2861
+ success: !0,
2862
+ data: m
2863
+ }), f = async (d) => p(void 0, d), h = class extends y {
2864
+ constructor() {
2865
+ super();
2866
+ }
2867
+ async sendEvent(d, m) {
2868
+ let v = await f(d);
2869
+ if (!v.success) throw console.error("TelemetryAPIService: events: body is invalid", v.error), /* @__PURE__ */ Error("TelemetryAPIService: events: body is invalid");
2870
+ return this.post("v1/events", d, m);
2871
+ }
2872
+ }, DEFAULT_DEBOUNCE_TIMEOUT = 20;
2873
+ const InternalEventType = Object.freeze({
2874
+ INIT_SOLUTION: "init-solution",
2875
+ CHANGE_CONFIG: "change-config",
2876
+ ACTION_EVENT: "action-event",
2877
+ ERROR_EVENT: "error-event"
2878
+ }), EventType = Object.freeze({
2879
+ FILE_ADDED: "file-added",
2880
+ FILE_REMOVED: "file-removed",
2881
+ FILE_UPLOAD_START: "file-upload-start",
2882
+ FILE_UPLOAD_PROGRESS: "file-upload-progress",
2883
+ FILE_UPLOAD_SUCCESS: "file-upload-success",
2884
+ FILE_UPLOAD_FAILED: "file-upload-failed",
2885
+ FILE_URL_CHANGED: "file-url-changed",
2886
+ MODAL_OPEN: "modal-open",
2887
+ MODAL_CLOSE: "modal-close",
2888
+ DONE_CLICK: "done-click",
2889
+ UPLOAD_CLICK: "upload-click",
2890
+ ACTIVITY_CHANGE: "activity-change",
2891
+ COMMON_UPLOAD_START: "common-upload-start",
2892
+ COMMON_UPLOAD_PROGRESS: "common-upload-progress",
2893
+ COMMON_UPLOAD_SUCCESS: "common-upload-success",
2894
+ COMMON_UPLOAD_FAILED: "common-upload-failed",
2895
+ CHANGE: "change",
2896
+ GROUP_CREATED: "group-created"
2897
+ });
2898
+ var EventEmitter = class extends SharedInstance {
2899
+ constructor(...d) {
2900
+ super(...d), this._timeoutStore = /* @__PURE__ */ new Map(), this._targets = /* @__PURE__ */ new Set();
2901
+ }
2902
+ bindTarget(d) {
2903
+ return this._targets.add(d), () => {
2904
+ this._targets.delete(d);
2905
+ };
2906
+ }
2907
+ _dispatch(d, m) {
2908
+ for (let v of this._targets) v.dispatchEvent(new CustomEvent(d, { detail: m }));
2909
+ this._debugPrint?.(() => {
2910
+ let v = m && typeof m == "object" ? { ...m } : m;
2911
+ return [`event "${d}"`, v];
2912
+ });
2913
+ }
2914
+ emit(d, m, v = {}) {
2915
+ let { debounce: x } = v;
2916
+ if (typeof x != "number" && !x) {
2917
+ this._dispatch(d, typeof m == "function" ? m() : m);
2918
+ return;
2919
+ }
2920
+ this._timeoutStore.has(d) && window.clearTimeout(this._timeoutStore.get(d));
2921
+ let w = typeof x == "number" ? x : DEFAULT_DEBOUNCE_TIMEOUT, T = window.setTimeout(() => {
2922
+ try {
2923
+ let v = typeof m == "function" ? m() : m;
2924
+ this._dispatch(d, v), this._timeoutStore.delete(d);
2925
+ } catch (m) {
2926
+ this._debugPrint?.(() => `Error while getting payload for event "${d}"`, m);
2927
+ }
2928
+ }, w);
2929
+ this._timeoutStore.set(d, T);
2930
+ }
2931
+ destroy() {
2932
+ for (let d of this._timeoutStore.values()) window.clearTimeout(d);
2933
+ this._targets.clear();
2934
+ }
2935
+ };
2936
+ const PACKAGE_NAME = "blocks", PACKAGE_VERSION = "1.28.0-alpha.1";
2937
+ var UID = class d {
2938
+ static generateFastUid() {
2939
+ return `uid-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 11)}`;
2940
+ }
2941
+ static generateRandomUUID() {
2942
+ let m = globalThis.crypto;
2943
+ return m && typeof m.randomUUID == "function" ? m.randomUUID() : d.generateFastUid();
2944
+ }
2945
+ }, TelemetryManager = class extends SharedInstance {
2946
+ constructor(d) {
2947
+ super(d), this._sessionId = UID.generateRandomUUID(), this._config = structuredClone(initialConfig), this._initialized = !1, this._lastPayload = null, this._isEnabled = !1, this._telemetryInstance = new h(), this._queue = new Queue(10), this.addSub(this._ctx.sub(sharedConfigKey("qualityInsights"), (d) => {
2948
+ this._isEnabled = !!d;
2949
+ }));
2950
+ for (let d of Object.keys(this._config)) this.addSub(this._ctx.sub(sharedConfigKey(d), (m) => {
2951
+ this._isEnabled && (this._initialized && this._config[d] !== m && this.sendEvent({ eventType: InternalEventType.CHANGE_CONFIG }), this._setConfig(d, m));
2952
+ }));
2953
+ }
2954
+ _init(d) {
2955
+ d === InternalEventType.INIT_SOLUTION && !this._initialized && (this._initialized = !0);
2956
+ }
2957
+ _setConfig(d, m) {
2958
+ this._config[d] !== m && (this._config[d] = m);
2959
+ }
2960
+ _formattingPayload(d) {
2961
+ let m = d.payload ? { ...d.payload } : {};
2962
+ m.activity &&= void 0;
2963
+ let v = { ...d };
2964
+ return (d.eventType === InternalEventType.INIT_SOLUTION || d.eventType === InternalEventType.CHANGE_CONFIG) && (v.config = this._config), {
2965
+ ...v,
2966
+ appVersion: PACKAGE_VERSION,
2967
+ appName: PACKAGE_NAME,
2968
+ sessionId: this._sessionId,
2969
+ component: this._solution,
2970
+ activity: this._activity,
2971
+ projectPubkey: this._config.pubkey,
2972
+ userAgent: navigator.userAgent,
2973
+ eventType: v.eventType ?? "",
2974
+ eventTimestamp: this._timestamp,
2975
+ payload: {
2976
+ location: this._location,
2977
+ ...m
2978
+ }
2979
+ };
2980
+ }
2981
+ _excludedEvents(d) {
2982
+ return !!(d && [
2983
+ EventType.CHANGE,
2984
+ EventType.COMMON_UPLOAD_PROGRESS,
2985
+ EventType.FILE_ADDED,
2986
+ EventType.FILE_REMOVED,
2987
+ EventType.FILE_UPLOAD_START,
2988
+ EventType.FILE_UPLOAD_PROGRESS,
2989
+ EventType.FILE_UPLOAD_SUCCESS,
2990
+ EventType.FILE_UPLOAD_FAILED
2991
+ ].includes(d));
2992
+ }
2993
+ sendEvent(d) {
2994
+ if (!this._isEnabled) return;
2995
+ let m = this._formattingPayload({
2996
+ eventType: d.eventType,
2997
+ payload: d.payload,
2998
+ config: d.config
2999
+ });
3000
+ this._init(d.eventType), !this._excludedEvents(d.eventType) && (this._lastPayload && this._checkObj(this._lastPayload, m) || this._queue.add(async () => {
3001
+ this._lastPayload = m, await this._telemetryInstance.sendEvent(m);
3002
+ }));
3003
+ }
3004
+ sendEventError(d, m = "unknown") {
3005
+ this.sendEvent({
3006
+ eventType: InternalEventType.ERROR_EVENT,
3007
+ payload: { metadata: {
3008
+ event: "error",
3009
+ text: `Error in ${m}`,
3010
+ error: d.message
3011
+ } }
3012
+ });
3013
+ }
3014
+ sendEventCloudImageEditor(d, m, v = {}) {
3015
+ this.sendEvent({
3016
+ eventType: InternalEventType.ACTION_EVENT,
3017
+ payload: { metadata: {
3018
+ tabId: m,
3019
+ node: d.currentTarget?.tagName,
3020
+ event: d.type,
3021
+ ...v
3022
+ } }
3023
+ });
3024
+ }
3025
+ _checkObj(d, m) {
3026
+ if (JSON.stringify(d) === JSON.stringify(m)) return !0;
3027
+ if (typeof d != "object" || typeof m != "object" || d == null || m == null) return !1;
3028
+ let v = Object.keys(d), x = Object.keys(m);
3029
+ if (v.length !== x.length) return !1;
3030
+ for (let x of v) if (!Object.hasOwn(m, x) || !this._checkObj(d[x], m[x])) return !1;
3031
+ return !0;
3032
+ }
3033
+ get _timestamp() {
3034
+ return Date.now();
3035
+ }
3036
+ get _solution() {
3037
+ if (!this._ctx.has("*solution")) return null;
3038
+ let d = this._ctx.read("*solution");
3039
+ return d ? d.toLowerCase() : null;
3040
+ }
3041
+ get _activity() {
3042
+ return this._ctx.has("*currentActivity") ? this._ctx.read("*currentActivity") : null;
3043
+ }
3044
+ get _location() {
3045
+ return location.origin;
3046
+ }
3047
+ };
3048
+ let clean = Symbol("clean");
3049
+ var listenerQueue = [], lqIndex = 0, QUEUE_ITEMS_PER_LISTENER = 4;
3050
+ let epoch = 0;
3051
+ const atom = /* @__NO_SIDE_EFFECTS__ */ (d) => {
3052
+ let m = [], v = {
3053
+ get() {
3054
+ return v.lc || v.listen(() => {})(), v.value;
3055
+ },
3056
+ lc: 0,
3057
+ listen(d) {
3058
+ return v.lc = m.push(d), () => {
3059
+ for (let m = lqIndex + QUEUE_ITEMS_PER_LISTENER; m < listenerQueue.length;) listenerQueue[m] === d ? listenerQueue.splice(m, QUEUE_ITEMS_PER_LISTENER) : m += QUEUE_ITEMS_PER_LISTENER;
3060
+ let x = m.indexOf(d);
3061
+ ~x && (m.splice(x, 1), --v.lc || v.off());
3062
+ };
3063
+ },
3064
+ notify(d, x) {
3065
+ epoch++;
3066
+ let w = !listenerQueue.length;
3067
+ for (let w of m) listenerQueue.push(w, v.value, d, x);
3068
+ if (w) {
3069
+ for (lqIndex = 0; lqIndex < listenerQueue.length; lqIndex += QUEUE_ITEMS_PER_LISTENER) listenerQueue[lqIndex](listenerQueue[lqIndex + 1], listenerQueue[lqIndex + 2], listenerQueue[lqIndex + 3]);
3070
+ listenerQueue.length = 0;
3071
+ }
3072
+ },
3073
+ off() {},
3074
+ set(d) {
3075
+ let m = v.value;
3076
+ m !== d && (v.value = d, v.notify(m));
3077
+ },
3078
+ subscribe(d) {
3079
+ let m = v.listen(d);
3080
+ return d(v.value), m;
3081
+ },
3082
+ value: d
3083
+ };
3084
+ return process.env.NODE_ENV !== "production" && (v[clean] = () => {
3085
+ m = [], v.lc = 0, v.off();
3086
+ }), v;
3087
+ };
3088
+ function listenKeys(d, m, v) {
3089
+ let x = new Set(m).add(void 0);
3090
+ return d.listen((d, m, w) => {
3091
+ x.has(w) && v(d, m, w);
3092
+ });
3093
+ }
3094
+ function subscribeKeys(d, m, v) {
3095
+ let x = listenKeys(d, m, v);
3096
+ return v(d.value), x;
3097
+ }
3098
+ const map = /* @__NO_SIDE_EFFECTS__ */ (d = {}) => {
3099
+ let m = /* @__PURE__ */ atom(d);
3100
+ return m.setKey = function(d, v) {
3101
+ let x = m.value;
3102
+ v === void 0 && d in m.value ? (m.value = { ...m.value }, delete m.value[d], m.notify(x, d)) : m.value[d] !== v && (m.value = {
3103
+ ...m.value,
3104
+ [d]: v
3105
+ }, m.notify(x, d));
3106
+ }, m;
3107
+ };
3108
+ var PubSub = class d {
3109
+ static {
3110
+ this._contexts = /* @__PURE__ */ new Map();
3111
+ }
3112
+ constructor(d, m) {
3113
+ this._ctxId = d, this._store = m;
3114
+ }
3115
+ get id() {
3116
+ return this._ctxId;
3117
+ }
3118
+ pub(d, m) {
3119
+ d in this._store.get() || console.warn(`PubSub#pub: Key "${String(d)}" not found`), this._store.setKey(d, m);
3120
+ }
3121
+ sub(d, m, v = !0) {
3122
+ return (v ? subscribeKeys : listenKeys)(this._store, [d], (v) => {
3123
+ m(v[d]);
3124
+ });
3125
+ }
3126
+ read(d) {
3127
+ return d in this._store.get() || console.warn(`PubSub#read: Key "${String(d)}" not found`), this._store.get()[d];
3128
+ }
3129
+ add(d, m, v = !1) {
3130
+ (!(d in this._store.get()) || v) && this._store.setKey(d, m);
3131
+ }
3132
+ has(d) {
3133
+ return d in this._store.get();
3134
+ }
3135
+ get store() {
3136
+ return this._store.get();
3137
+ }
3138
+ static registerCtx(m, v) {
3139
+ if (d._contexts.has(v)) throw Error(`PubSub: Context with id "${v}" already exists`);
3140
+ let x = /* @__PURE__ */ map(m);
3141
+ return d._contexts.set(v, x), new d(v, x);
3142
+ }
3143
+ static deleteCtx(m) {
3144
+ d._contexts.delete(m);
3145
+ }
3146
+ static getCtx(m) {
3147
+ let v = d._contexts.get(m);
3148
+ return v ? new d(m, v) : null;
3149
+ }
3150
+ static hasCtx(m) {
3151
+ return d._contexts.has(m);
3152
+ }
3153
+ };
3154
+ const getLocaleDirection = (d) => {
3155
+ let m = new Intl.Locale(d), v = "ltr", x = m.getTextInfo?.().direction;
3156
+ return x ? v = x : m.textInfo?.direction && (v = m.textInfo.direction), v;
3157
+ };
3158
+ var DEFAULT_TRANSFORMER = (d) => d, OPEN_TOKEN = "{{", CLOSE_TOKEN = "}}", PLURAL_PREFIX = "plural:";
3159
+ function applyTemplateData(d, m = {}, v = {}) {
3160
+ let { openToken: x = OPEN_TOKEN, closeToken: w = CLOSE_TOKEN, transform: T = DEFAULT_TRANSFORMER } = v;
3161
+ for (let v in m) {
3162
+ let O = m[v]?.toString(), M = typeof O == "string" ? T(O) : String(O);
3163
+ d = d.replaceAll(x + v + w, M);
3164
+ }
3165
+ return d;
3166
+ }
3167
+ function getPluralObjects(d) {
3168
+ let m = [], v = d.indexOf(OPEN_TOKEN);
3169
+ for (; v !== -1;) {
3170
+ let x = d.indexOf(CLOSE_TOKEN, v);
3171
+ if (x === -1) break;
3172
+ let w = d.substring(v + 2, x);
3173
+ if (w.startsWith(PLURAL_PREFIX)) {
3174
+ let T = d.substring(v + 2, x).replace(PLURAL_PREFIX, ""), O = T.substring(0, T.indexOf("(")), M = T.substring(T.indexOf("(") + 1, T.indexOf(")"));
3175
+ m.push({
3176
+ variable: w,
3177
+ pluralKey: O,
3178
+ countVariable: M
3179
+ });
3180
+ }
3181
+ v = d.indexOf(OPEN_TOKEN, x);
3182
+ }
3183
+ return m;
3184
+ }
3185
+ function debounce(d, m) {
3186
+ let v, x = ((...x) => {
3187
+ v && clearTimeout(v), v = setTimeout(() => d(...x), m);
3188
+ });
3189
+ return x.cancel = () => {
3190
+ v && clearTimeout(v);
3191
+ }, x;
3192
+ }
3193
+ var WINDOW_HEIGHT_TRACKER_PROPERTY = "--uploadcare-blocks-window-height", WindowHeightTracker = class d {
3194
+ static {
3195
+ this.clientsRegistry = /* @__PURE__ */ new Set();
3196
+ }
3197
+ static {
3198
+ this.flush = debounce(() => {
3199
+ document.documentElement.style.setProperty(WINDOW_HEIGHT_TRACKER_PROPERTY, `${window.innerHeight}px`);
3200
+ }, 100);
3201
+ }
3202
+ static registerClient(m) {
3203
+ d.clientsRegistry.size === 0 && d.attachTracker(), d.clientsRegistry.add(m);
3204
+ }
3205
+ static unregisterClient(m) {
3206
+ d.clientsRegistry.delete(m), d.clientsRegistry.size === 0 && d.detachTracker();
3207
+ }
3208
+ static attachTracker() {
3209
+ window.addEventListener("resize", d.flush, {
3210
+ passive: !0,
3211
+ capture: !0
3212
+ }), d.flush();
3213
+ }
3214
+ static detachTracker() {
3215
+ window.removeEventListener("resize", d.flush, { capture: !0 }), document.documentElement.style.removeProperty(WINDOW_HEIGHT_TRACKER_PROPERTY);
3216
+ }
3217
+ }, SINGLE_QUOTE = "'", DOUBLE_QUOTE = "\"", ESCAPED_PATTERN = /\\([0-9a-fA-F]{1,6} ?)/g;
3218
+ function hasLeadingTrailingQuotes(d) {
3219
+ return d.length < 2 ? !1 : (d[0] === DOUBLE_QUOTE || d[0] === SINGLE_QUOTE) && (d[d.length - 1] === DOUBLE_QUOTE || d[d.length - 1] === SINGLE_QUOTE);
3220
+ }
3221
+ function trimQuotes(d) {
3222
+ let m = d;
3223
+ return (m[0] === DOUBLE_QUOTE || m[0] === SINGLE_QUOTE) && (m = m.slice(1)), (m[m.length - 1] === DOUBLE_QUOTE || m[m.length - 1] === SINGLE_QUOTE) && (m = m.slice(0, -1)), m;
3224
+ }
3225
+ function escapeQuotes(d) {
3226
+ let m = "", v = "";
3227
+ for (let x = 0; x < d.length; x++) {
3228
+ let w = d[x + 1];
3229
+ d[x] === "\\" && w === "\"" ? (m += "\\\"", x++) : d[x] === "\"" && v !== "\\" ? m += "\\\"" : m += d[x], v = d[x] ?? "";
3230
+ }
3231
+ return m;
3232
+ }
3233
+ function parseCssPropertyValue(d) {
3234
+ let m = d;
3235
+ hasLeadingTrailingQuotes(d) && (m = trimQuotes(m), m = m.replace(ESCAPED_PATTERN, (d, m) => String.fromCodePoint(parseInt(m.trim(), 16))), m = m.replaceAll("\\\n", "\\n"), m = escapeQuotes(m), m = DOUBLE_QUOTE + m + DOUBLE_QUOTE);
3236
+ try {
3237
+ return JSON.parse(m);
3238
+ } catch {
3239
+ return;
3240
+ }
3241
+ }
3242
+ function CssDataMixin(d) {
3243
+ class m extends d {
3244
+ constructor(...d) {
3245
+ super(...d), this._cssDataCache = null, this._computedStyle = null;
3246
+ }
3247
+ getCssData(d, m = !1) {
3248
+ let v = this._cssDataCache ?? Object.create(null);
3249
+ if (!Object.keys(v).includes(d) || !v[d]) {
3250
+ this._computedStyle ||= window.getComputedStyle(this);
3251
+ let x = this._computedStyle.getPropertyValue(d).trim();
3252
+ try {
3253
+ v[d] = parseCssPropertyValue(x);
3254
+ } catch (x) {
3255
+ m || console.warn(`CSS Data error: ${d}`, x), v[d] = null;
3256
+ }
3257
+ }
3258
+ return this._cssDataCache = v, v[d];
3259
+ }
3260
+ }
3261
+ return m;
3262
+ }
3263
+ function LightDomMixin(d) {
3264
+ class m extends d {
3265
+ constructor(...d) {
3266
+ super(...d), this.willYield = !0, this._slotsMap = {}, this._initialLightDomChildren = null, this._hasAdoptedChildren = !1;
3267
+ }
3268
+ createRenderRoot() {
3269
+ return this;
3270
+ }
3271
+ connectedCallback() {
3272
+ this._initialLightDomChildren ||= Array.from(this.childNodes), super.connectedCallback();
3273
+ }
3274
+ _adoptChildren() {
3275
+ if (this._hasAdoptedChildren) return;
3276
+ this._hasAdoptedChildren = !0, this._slotsMap = {};
3277
+ let d = Array.from(this.childNodes), m = d.length ? d : this._initialLightDomChildren ?? [];
3278
+ for (let d of m) {
3279
+ let m = this._getSlotNameForChild(d), v = this._slotsMap[m] ?? [];
3280
+ d instanceof Element && (d.removeAttribute("slot"), d.removeAttribute("content-for")), v.push(d), this._slotsMap[m] = v;
3281
+ }
3282
+ this._initialLightDomChildren = null;
3283
+ }
3284
+ _getSlotNameForChild(d) {
3285
+ return d instanceof Comment && d.nextSibling instanceof Element ? this._getSlotNameForChild(d.nextSibling) : "contentFor" in d ? d.contentFor || "" : d instanceof Element && d.hasAttribute("content-for") && d.getAttribute("content-for") || "";
3286
+ }
3287
+ _isTextNodeEmpty(d) {
3288
+ return !d.textContent || !d.textContent.trim();
3289
+ }
3290
+ _isSlotEmpty(d) {
3291
+ let m = this._slotsMap[d];
3292
+ return !m || m.every((d) => d instanceof Comment || d instanceof Text && this._isTextNodeEmpty(d));
3293
+ }
3294
+ update(d) {
3295
+ !this.hasUpdated && this.willYield && this._adoptChildren(), super.update(d);
3296
+ }
3297
+ yield(d, m) {
3298
+ if (d === "" && !this._slotsMap[d] && !this._hasAdoptedChildren && this._initialLightDomChildren?.length) {
3299
+ let m = [];
3300
+ for (let d of this._initialLightDomChildren) d instanceof Element && (d.removeAttribute("slot"), d.removeAttribute("content-for")), m.push(d);
3301
+ this._slotsMap[d] = m, this._hasAdoptedChildren = !0, this._initialLightDomChildren = null;
3302
+ }
3303
+ return b`
3304
+ ${this._slotsMap[d]}
3305
+ ${this._isSlotEmpty(d) ? m : void 0}
3306
+ `;
3307
+ }
3308
+ }
3309
+ return m;
3310
+ }
3311
+ const getPluralForm = (d, m) => new Intl.PluralRules(d).select(m), createPluralizer = (d) => (m, v) => {
3312
+ let x = d();
3313
+ return x(`${m}__${getPluralForm(x("locale-id") || "en", v)}`);
3314
+ }, createL10n = (d) => {
3315
+ let m = createPluralizer(() => v), v = (v, x = {}) => {
3316
+ if (!v) return "";
3317
+ let w = d().read(localeStateKey(v)) || v, T = getPluralObjects(w);
3318
+ for (let d of T) x[d.variable] = m(d.pluralKey, Number(x[d.countVariable]));
3319
+ return applyTemplateData(w, x);
3320
+ };
3321
+ return v;
3322
+ };
3323
+ function RegisterableElementMixin(d) {
3324
+ class m extends d {
3325
+ static reg(d) {
3326
+ let m = this, v = window.customElements.get(d);
3327
+ if (v) {
3328
+ v !== m && console.warn([
3329
+ `Element with tag name "${d}" already registered.`,
3330
+ `You're trying to override it with another class "${this.name}".`,
3331
+ "This is most likely a mistake.",
3332
+ "New element will not be registered."
3333
+ ].join("\n"));
3334
+ return;
3335
+ }
3336
+ window.customElements.define(d, m);
3337
+ }
3338
+ }
3339
+ return m;
3340
+ }
3341
+ /**
3342
+ * @license
3343
+ * Copyright 2021 Google LLC
3344
+ * SPDX-License-Identifier: BSD-3-Clause
3345
+ */
3346
+ var s$1 = class extends Event {
3347
+ constructor(d, m, v, x) {
3348
+ super("context-request", {
3349
+ bubbles: !0,
3350
+ composed: !0
3351
+ }), this.context = d, this.contextTarget = m, this.callback = v, this.subscribe = x ?? !1;
3352
+ }
3353
+ };
3354
+ /**
3355
+ * @license
3356
+ * Copyright 2021 Google LLC
3357
+ * SPDX-License-Identifier: BSD-3-Clause
3358
+ */
3359
+ function n$1(d) {
3360
+ return d;
3361
+ }
3362
+ /**
3363
+ * @license
3364
+ * Copyright 2021 Google LLC
3365
+ * SPDX-License-Identifier: BSD-3-Clause
3366
+ */ var s = class {
3367
+ constructor(d, m, v, x) {
3368
+ if (this.subscribe = !1, this.provided = !1, this.value = void 0, this.t = (d, m) => {
3369
+ this.unsubscribe && (this.unsubscribe !== m && (this.provided = !1, this.unsubscribe()), this.subscribe || this.unsubscribe()), this.value = d, this.host.requestUpdate(), this.provided && !this.subscribe || (this.provided = !0, this.callback && this.callback(d, m)), this.unsubscribe = m;
3370
+ }, this.host = d, m.context !== void 0) {
3371
+ let d = m;
3372
+ this.context = d.context, this.callback = d.callback, this.subscribe = d.subscribe ?? !1;
3373
+ } else this.context = m, this.callback = v, this.subscribe = x ?? !1;
3374
+ this.host.addController(this);
3375
+ }
3376
+ hostConnected() {
3377
+ this.dispatchRequest();
3378
+ }
3379
+ hostDisconnected() {
3380
+ this.unsubscribe &&= (this.unsubscribe(), void 0);
3381
+ }
3382
+ dispatchRequest() {
3383
+ this.host.dispatchEvent(new s$1(this.context, this.host, this.t, this.subscribe));
3384
+ }
3385
+ }, s$2 = class {
3386
+ get value() {
3387
+ return this.o;
3388
+ }
3389
+ set value(d) {
3390
+ this.setValue(d);
3391
+ }
3392
+ setValue(d, m = !1) {
3393
+ let v = m || !Object.is(d, this.o);
3394
+ this.o = d, v && this.updateObservers();
3395
+ }
3396
+ constructor(d) {
3397
+ this.subscriptions = /* @__PURE__ */ new Map(), this.updateObservers = () => {
3398
+ for (let [d, { disposer: m }] of this.subscriptions) d(this.o, m);
3399
+ }, d !== void 0 && (this.value = d);
3400
+ }
3401
+ addCallback(d, m, v) {
3402
+ if (!v) return void d(this.value);
3403
+ this.subscriptions.has(d) || this.subscriptions.set(d, {
3404
+ disposer: () => {
3405
+ this.subscriptions.delete(d);
3406
+ },
3407
+ consumerHost: m
3408
+ });
3409
+ let { disposer: x } = this.subscriptions.get(d);
3410
+ d(this.value, x);
3411
+ }
3412
+ clearCallbacks() {
3413
+ this.subscriptions.clear();
3414
+ }
3415
+ }, e = class extends Event {
3416
+ constructor(d, m) {
3417
+ super("context-provider", {
3418
+ bubbles: !0,
3419
+ composed: !0
3420
+ }), this.context = d, this.contextTarget = m;
3421
+ }
3422
+ }, i$1 = class extends s$2 {
3423
+ constructor(d, m, v) {
3424
+ super(m.context === void 0 ? v : m.initialValue), this.onContextRequest = (d) => {
3425
+ if (d.context !== this.context) return;
3426
+ let m = d.contextTarget ?? d.composedPath()[0];
3427
+ m !== this.host && (d.stopPropagation(), this.addCallback(d.callback, m, d.subscribe));
3428
+ }, this.onProviderRequest = (d) => {
3429
+ if (d.context !== this.context || (d.contextTarget ?? d.composedPath()[0]) === this.host) return;
3430
+ let m = /* @__PURE__ */ new Set();
3431
+ for (let [d, { consumerHost: v }] of this.subscriptions) m.has(d) || (m.add(d), v.dispatchEvent(new s$1(this.context, v, d, !0)));
3432
+ d.stopPropagation();
3433
+ }, this.host = d, m.context === void 0 ? this.context = m : this.context = m.context, this.attachListeners(), this.host.addController?.(this);
3434
+ }
3435
+ attachListeners() {
3436
+ this.host.addEventListener("context-request", this.onContextRequest), this.host.addEventListener("context-provider", this.onProviderRequest);
3437
+ }
3438
+ hostConnected() {
3439
+ this.host.dispatchEvent(new e(this.context, this.host));
3440
+ }
3441
+ };
3442
+ function __decorate(d, m, v, x) {
3443
+ var w = arguments.length, T = w < 3 ? m : x === null ? x = Object.getOwnPropertyDescriptor(m, v) : x, O;
3444
+ if (typeof Reflect == "object" && typeof Reflect.decorate == "function") T = Reflect.decorate(d, m, v, x);
3445
+ else for (var M = d.length - 1; M >= 0; M--) (O = d[M]) && (T = (w < 3 ? O(T) : w > 3 ? O(m, v, T) : O(m, v)) || T);
3446
+ return w > 3 && T && Object.defineProperty(m, v, T), T;
3447
+ }
3448
+ const ctxNameContext = n$1("ctx-name-context");
3449
+ function SymbioteMixin() {
3450
+ return function(d) {
3451
+ class m extends d {
3452
+ static set template(d) {
3453
+ console.error("Caution: static 'template' property is deprecated and has no effect. See https://github.com/uploadcare/file-uploader/releases/tag/v1.25.0 for details.");
3454
+ }
3455
+ get _ctxNameAttr() {
3456
+ return this._ctxNameAttrValue;
3457
+ }
3458
+ set _ctxNameAttr(d) {
3459
+ let m = d ?? void 0;
3460
+ this._ctxNameAttrValue !== m && (this._ctxNameAttrValue = m, this._handleCtxNameSourceChange());
3461
+ }
3462
+ shouldUpdate(d) {
3463
+ return this._isInitialized ? super.shouldUpdate(d) : !1;
3464
+ }
3465
+ constructor(...d) {
3466
+ super(...d), this._symbioteSharedPubSub = null, this._symbioteFirstUpdated = !1, this._needsReconnectInit = !1, this._ctxNameProvider = void 0, this._pendingSharedAdds = /* @__PURE__ */ new Map(), this._symbioteSubscriptions = /* @__PURE__ */ new Set(), this.init$ = {}, this.ctxOwner = !1, this._ctxNameAttrValue = void 0, this._pendingCtxInitOnConnect = !1, this.ctxName = this._effectiveCtxName, this._isInitialized = !1, this._ctxNameAttrValue = this.getAttribute("ctx-name") || void 0, this.ctxName = this._effectiveCtxName, this._ctxNameConsumer = new s(this, {
3467
+ context: ctxNameContext,
3468
+ callback: (d) => {
3469
+ if (!d) {
3470
+ console.error("SymbioteMixin: Received invalid ctx-name from context");
3471
+ return;
3472
+ }
3473
+ this._ctxNameFromContext = d, this._handleCtxNameSourceChange();
3474
+ },
3475
+ subscribe: !0
3476
+ });
3477
+ }
3478
+ get _effectiveCtxName() {
3479
+ return this._ctxNameAttr || this._ctxNameFromContext || void 0;
3480
+ }
3481
+ _handleCtxNameSourceChange() {
3482
+ if (this.ctxName = this._effectiveCtxName, !(!this.ctxName || this._symbioteFirstUpdated)) {
3483
+ if (this.isConnected) {
3484
+ this._performInitialization();
3485
+ return;
3486
+ }
3487
+ this._pendingCtxInitOnConnect = !0;
3488
+ }
3489
+ }
3490
+ willUpdate(d) {
3491
+ super.willUpdate(d), this.ctxName = this._effectiveCtxName, this.ctxName && (this._ctxNameProvider ? this._ctxNameProvider.setValue(this.ctxName) : this._ctxNameProvider = new i$1(this, {
3492
+ context: ctxNameContext,
3493
+ initialValue: this.ctxName
3494
+ }));
3495
+ }
3496
+ _applyPendingSharedAdds() {
3497
+ if (!(!this._symbioteSharedPubSub || this._pendingSharedAdds.size === 0)) {
3498
+ for (let [d, { value: m, rewrite: v }] of this._pendingSharedAdds) this._symbioteSharedPubSub.add(d, m, v);
3499
+ this._pendingSharedAdds.clear();
3500
+ }
3501
+ }
3502
+ _getSharedPubSub() {
3503
+ return !this._symbioteSharedPubSub && this._effectiveCtxName && this._initSharedContext(), this._symbioteSharedPubSub && this._applyPendingSharedAdds(), this._symbioteSharedPubSub;
3504
+ }
3505
+ _requireSharedPubSub() {
3506
+ let d = this._getSharedPubSub();
3507
+ if (!d) throw Error("SymbioteMixin: Shared context is not initialized.");
3508
+ return d;
3509
+ }
3510
+ _initSharedContext() {
3511
+ let d = this.init$, m = this._effectiveCtxName;
3512
+ if (!m) {
3513
+ console.error("SymbioteMixin: ctx-name is required for components with shared properties (*)");
3514
+ return;
3515
+ }
3516
+ if (!this._symbioteSharedPubSub) {
3517
+ this._symbioteSharedPubSub = PubSub.getCtx(m) ?? PubSub.registerCtx(d, m);
3518
+ for (let [d, m] of Object.entries(this.init$)) this._symbioteSharedPubSub.add(d, m, this.ctxOwner);
3519
+ this._applyPendingSharedAdds();
3520
+ }
3521
+ }
3522
+ get $() {
3523
+ return this._effectiveCtxName && this._initSharedContext(), new Proxy({}, {
3524
+ get: (d, m) => {
3525
+ if (typeof m == "string") return this._symbioteSharedPubSub?.read(m);
3526
+ },
3527
+ set: (d, m, v) => (typeof m == "string" && this._symbioteSharedPubSub?.pub(m, v), !0)
3528
+ });
3529
+ }
3530
+ sub(d, m, v = !0) {
3531
+ let x = this._requireSharedPubSub().sub(d, m, v);
3532
+ if (!x || typeof x != "function") return () => {};
3533
+ let w = x.bind(x), T = !1, O = () => {
3534
+ T || (T = !0, w(), this._symbioteSubscriptions.delete(O));
3535
+ };
3536
+ return this._symbioteSubscriptions.add(O), O;
3537
+ }
3538
+ pub(d, m) {
3539
+ this._requireSharedPubSub().pub(d, m);
3540
+ }
3541
+ set$(d) {
3542
+ for (let [m, v] of Object.entries(d)) this.pub(m, v);
3543
+ }
3544
+ get sharedCtx() {
3545
+ return this._requireSharedPubSub();
3546
+ }
3547
+ has(d) {
3548
+ return this._symbioteSharedPubSub?.has(d) ?? !1;
3549
+ }
3550
+ add(d, m, v = !1) {
3551
+ let x = this._getSharedPubSub();
3552
+ if (!x) {
3553
+ if (!v && this._pendingSharedAdds.has(d)) return;
3554
+ this._pendingSharedAdds.set(d, {
3555
+ value: m,
3556
+ rewrite: v
3557
+ });
3558
+ return;
3559
+ }
3560
+ this._pendingSharedAdds.delete(d), x.add(d, m, v);
3561
+ }
3562
+ add$(d, m = !1) {
3563
+ for (let [v, x] of Object.entries(d)) this.add(v, x, m);
3564
+ }
3565
+ connectedCallback() {
3566
+ super.connectedCallback(), this._symbioteFirstUpdated ? this._isInitialized && this._needsReconnectInit && (this._needsReconnectInit = !1, this.initCallback()) : (this.ctxName || this._pendingCtxInitOnConnect && this._effectiveCtxName) && (this._pendingCtxInitOnConnect = !1, this._performInitialization());
3567
+ }
3568
+ _performInitialization() {
3569
+ if (this._symbioteFirstUpdated) return;
3570
+ this._symbioteFirstUpdated = !0, this._initSharedContext();
3571
+ let d = this.init$;
3572
+ if (Object.keys(d).length > 0) {
3573
+ let m = this._requireSharedPubSub();
3574
+ for (let [v, x] of Object.entries(d)) m.read(v) === void 0 && m.pub(v, x), this.sub(v, debounce(async () => {
3575
+ this.isConnected && (await this.updateComplete, this.requestUpdate());
3576
+ }, 0), !1);
3577
+ }
3578
+ this.initCallback(), this._isInitialized = !0, this.requestUpdate();
3579
+ }
3580
+ firstUpdated(d) {
3581
+ super.firstUpdated(d);
3582
+ }
3583
+ disconnectedCallback() {
3584
+ this._cleanupSymbioteSubscriptions(), super.disconnectedCallback(), this._symbioteFirstUpdated && (this._needsReconnectInit = !0);
3585
+ }
3586
+ _cleanupSymbioteSubscriptions() {
3587
+ if (this._symbioteSubscriptions.size !== 0) {
3588
+ for (let d of [...this._symbioteSubscriptions]) d();
3589
+ this._symbioteSubscriptions.clear();
3590
+ }
3591
+ }
3592
+ initCallback() {}
3593
+ }
3594
+ return __decorate([n({
3595
+ type: String,
3596
+ attribute: "ctx-name",
3597
+ noAccessor: !0
3598
+ })], m.prototype, "_ctxNameAttr", null), __decorate([r()], m.prototype, "_ctxNameFromContext", void 0), __decorate([r()], m.prototype, "ctxName", void 0), __decorate([r()], m.prototype, "_isInitialized", void 0), m;
3599
+ };
3600
+ }
3601
+ var isCustomElement = (d) => d.tagName?.includes("-") ?? !1, TestModeController = class {
3602
+ constructor(d) {
3603
+ this._trackedElements = /* @__PURE__ */ new Set(), this._originalValues = /* @__PURE__ */ new Map(), this._enabled = !1, this._host = d, this._host.addController(this);
3604
+ }
3605
+ hostDisconnected() {
3606
+ this._unsubscribe?.(), this._unsubscribe = void 0, this._trackedElements.clear(), this._originalValues.clear();
3607
+ }
3608
+ hostUpdated() {
3609
+ !this._unsubscribe && this._host.has(sharedConfigKey("testMode")) && (this._unsubscribe = this._host.subConfigValue("testMode", (d) => {
3610
+ this._enabled = !!d, this._applyTestMode();
3611
+ })), this._collectElements(), this._applyTestMode();
3612
+ }
3613
+ _collectElements() {
3614
+ let d = this._host, m = d.renderRoot ?? d;
3615
+ if (!m) return;
3616
+ let v = this._host, x = v.tagName?.toLowerCase(), w = Array.from(m.querySelectorAll("[data-testid]")).filter((d) => !isCustomElement(d));
3617
+ for (let d of w) if (!(x && d.closest(x) !== v) && !this._trackedElements.has(d)) {
3618
+ let m = d.getAttribute("data-testid");
3619
+ if (!m) continue;
3620
+ this._trackedElements.add(d), this._originalValues.set(d, m);
3621
+ }
3622
+ for (let d of Array.from(this._trackedElements)) (!d.isConnected || x && d.closest(x) !== v) && (this._trackedElements.delete(d), this._originalValues.delete(d));
3623
+ }
3624
+ _applyTestMode() {
3625
+ if (!this._trackedElements.size) return;
3626
+ let d = this._host.testId || "";
3627
+ for (let m of this._trackedElements) {
3628
+ let v = this._originalValues.get(m);
3629
+ v && (this._enabled ? m.setAttribute("data-testid", `${d}--${v}`) : m.removeAttribute("data-testid"));
3630
+ }
3631
+ }
3632
+ }, LitBlockBase = RegisterableElementMixin(SymbioteMixin()(CssDataMixin(LightDomMixin(i)))), LitBlock = class extends LitBlockBase {
3633
+ static {
3634
+ this.styleAttrs = [];
3635
+ }
3636
+ constructor() {
3637
+ super(), this.activityType = null, this.init$ = blockCtx(), this.l10n = createL10n(() => this.sharedCtx), this.debugPrint = createDebugPrinter(() => this.sharedCtx, this.constructor.name), this._sharedInstancesBag = createSharedInstancesBag(() => this.sharedCtx), new TestModeController(this);
3638
+ }
3639
+ emit(d, m, v) {
3640
+ let x = this.has("*eventEmitter") ? this.$["*eventEmitter"] : void 0;
3641
+ if (!x) return;
3642
+ x.emit(d, m, v);
3643
+ let w = typeof m == "function" ? m() : m;
3644
+ this.telemetryManager.sendEvent({
3645
+ eventType: d,
3646
+ payload: w ?? void 0
3647
+ });
3648
+ }
3649
+ hasBlockInCtx(d) {
3650
+ for (let m of this.blocksRegistry) if (d(m)) return !0;
3651
+ return !1;
3652
+ }
3653
+ connectedCallback() {
3654
+ this.constructor.styleAttrs.forEach((d) => {
3655
+ this.setAttribute(d, "");
3656
+ }), super.connectedCallback(), WindowHeightTracker.registerClient(this);
3657
+ }
3658
+ initCallback() {
3659
+ this._addSharedContextInstance("*blocksRegistry", () => /* @__PURE__ */ new Set()), this._addSharedContextInstance("*pluginManager", (d) => new PluginManager(d)), this._addSharedContextInstance("*eventEmitter", (d) => new EventEmitter(d)), this._addSharedContextInstance("*localeManager", (d) => new LocaleManager(d)), this._addSharedContextInstance("*modalManager", (d) => new ModalManager(d)), this._addSharedContextInstance("*a11y", () => new A11y()), this._addSharedContextInstance("*clipboard", (d) => new ClipboardLayer(d)), this._addSharedContextInstance("*telemetryManager", (d) => new TelemetryManager(d)), this.sub(localeStateKey("locale-id"), (d) => {
3660
+ let m = getLocaleDirection(d);
3661
+ this.style.direction = m === "ltr" ? "" : m, this.requestUpdate();
3662
+ }), this.subConfigValue("testMode", (d) => {
3663
+ if (!d || !this.testId) {
3664
+ this.removeAttribute("data-testid");
3665
+ return;
3666
+ }
3667
+ this.setAttribute("data-testid", this.testId);
3668
+ }), this.blocksRegistry.add(this);
3669
+ }
3670
+ get testId() {
3671
+ return window.customElements.getName(this.constructor);
3672
+ }
3673
+ get modalManager() {
3674
+ return this._getSharedContextInstance("*modalManager", !1);
3675
+ }
3676
+ get telemetryManager() {
3677
+ return this._getSharedContextInstance("*telemetryManager");
3678
+ }
3679
+ get localeManager() {
3680
+ return this._getSharedContextInstance("*localeManager");
3681
+ }
3682
+ get a11y() {
3683
+ return this._getSharedContextInstance("*a11y");
3684
+ }
3685
+ get clipboardLayer() {
3686
+ return this._getSharedContextInstance("*clipboard");
3687
+ }
3688
+ get blocksRegistry() {
3689
+ return this._getSharedContextInstance("*blocksRegistry");
3690
+ }
3691
+ get eventEmitter() {
3692
+ return this._getSharedContextInstance("*eventEmitter");
3693
+ }
3694
+ disconnectedCallback() {
3695
+ super.disconnectedCallback(), WindowHeightTracker.unregisterClient(this);
3696
+ let d = this.blocksRegistry;
3697
+ d?.delete(this), d?.size === 0 && setTimeout(() => {
3698
+ this.isConnected || d?.size > 0 || this.destroyCtxCallback();
3699
+ }, 0);
3700
+ }
3701
+ destroyCtxCallback() {
3702
+ this._destroySharedContextInstances(), PubSub.deleteCtx(this.ctxName);
3703
+ }
3704
+ _getSharedContextInstances() {
3705
+ let d = "*sharedContextInstances";
3706
+ if (!this.has(d) || !this.$[d]) {
3707
+ let m = /* @__PURE__ */ new Map();
3708
+ this.add(d, m, !0);
3709
+ }
3710
+ return this.$[d];
3711
+ }
3712
+ _addSharedContextInstance(d, m) {
3713
+ let v = this._getSharedContextInstances();
3714
+ if (!v.has(d) && (!this.has(d) || !this.$[d])) {
3715
+ let x = m(this._sharedInstancesBag);
3716
+ this.add(d, x, !0), v.set(d, x);
3717
+ return;
3718
+ }
3719
+ }
3720
+ _destroySharedContextInstances() {
3721
+ let d = this._getSharedContextInstances();
3722
+ for (let [m, v] of d.entries()) v?.destroy?.(), this.pub(m, null);
3723
+ d.clear();
3724
+ }
3725
+ _getSharedContextInstance(d, m = !0) {
3726
+ if (this.has(d) && this.$[d] || !m) return this.$[d];
3727
+ throw Error(`Unexpected error: context manager for key "${String(d)}" is not available`);
3728
+ }
3729
+ async proxyUrl(d) {
3730
+ if (this.cfg.secureDeliveryProxy && this.cfg.secureDeliveryProxyUrlResolver && console.warn("Both secureDeliveryProxy and secureDeliveryProxyUrlResolver are set. The secureDeliveryProxyUrlResolver will be used."), this.cfg.secureDeliveryProxyUrlResolver) try {
3731
+ return await this.cfg.secureDeliveryProxyUrlResolver(d, {
3732
+ uuid: extractUuid(d),
3733
+ cdnUrlModifiers: extractCdnUrlModifiers(d),
3734
+ fileName: extractFilename(d)
3735
+ });
3736
+ } catch (m) {
3737
+ return console.error("Failed to resolve secure delivery proxy URL. Falling back to the default URL.", m), this.telemetryManager.sendEventError(m, "secureDeliveryProxyUrlResolver. Failed to resolve secure delivery proxy URL. Falling back to the default URL."), d;
3738
+ }
3739
+ return this.cfg.secureDeliveryProxy ? applyTemplateData(this.cfg.secureDeliveryProxy, { previewUrl: d }, { transform: (d) => window.encodeURIComponent(d) }) : d;
3740
+ }
3741
+ get cfg() {
3742
+ return this._cfgProxy ||= new Proxy({}, {
3743
+ set: (d, m, v) => {
3744
+ if (typeof m != "string" || !(m in initialConfig)) return !1;
3745
+ let x = m, w = sharedConfigKey(x);
3746
+ return this.has(w) || this.add(w, initialConfig[x]), this.$[w] = v, !0;
3747
+ },
3748
+ get: (d, m) => {
3749
+ let v = sharedConfigKey(m);
3750
+ return this.has(v) || this.add(v, initialConfig[m]), this.$[v];
3751
+ }
3752
+ }), this._cfgProxy;
3753
+ }
3754
+ subConfigValue(d, m) {
3755
+ let v = sharedConfigKey(d);
3756
+ return this.has(v) || this.add(v, initialConfig[d]), this.sub(v, m);
3757
+ }
3758
+ }, EXCLUDED_TYPES = ["free"];
3759
+ const parseCropPreset = (d) => {
3760
+ let m = stringToArray(d);
3761
+ if (!m || m.length === 0) return [];
3762
+ let v = [];
3763
+ for (let d of m) {
3764
+ let m = d.trim();
3765
+ if (!m) continue;
3766
+ let x = m.indexOf(":");
3767
+ if (x === -1 && !EXCLUDED_TYPES.includes(m)) {
3768
+ console.warn(`Invalid crop preset: ${m}`);
3769
+ continue;
3770
+ }
3771
+ let w = Number(m.slice(0, x)), T = Number(m.slice(x + 1));
3772
+ if ((!Number.isFinite(w) || !Number.isFinite(T) || w <= 0 || T <= 0) && !EXCLUDED_TYPES.includes(m)) {
3773
+ console.warn(`Invalid crop preset: ${m}`);
3774
+ continue;
3775
+ }
3776
+ v.push({
3777
+ id: UID.generateFastUid(),
3778
+ type: "aspect-ratio",
3779
+ width: EXCLUDED_TYPES.includes(m) ? 0 : w,
3780
+ height: EXCLUDED_TYPES.includes(m) ? 0 : T,
3781
+ hasFreeform: EXCLUDED_TYPES.includes(m)
3782
+ });
3783
+ }
3784
+ return v;
3785
+ }, getClosestAspectRatio = (d, m, v, x = .1) => {
3786
+ let w = d / m, T = null, O = Infinity;
3787
+ for (let d of v) {
3788
+ let [m, v] = [d.width, d.height], x = m / v, M = Math.abs(w - x);
3789
+ M < O && (O = M, T = d);
3790
+ }
3791
+ if (T) {
3792
+ let [d, m] = [T.width, T.height], v = d / m;
3793
+ if (Math.abs(w - v) / v > x) return null;
3794
+ }
3795
+ return T;
3796
+ };
3797
+ var Icon = class extends LitBlock {
3798
+ constructor(...d) {
3799
+ super(...d), this.name = "", this._resolvedHref = "", this._pluginSvg = null, this._iconHrefResolver = null;
3800
+ }
3801
+ initCallback() {
3802
+ super.initCallback(), this.setAttribute("aria-hidden", "true"), this.subConfigValue("iconHrefResolver", (d) => {
3803
+ this._iconHrefResolver = d, this._updateResolvedHref();
3804
+ });
3805
+ let d = this._sharedInstancesBag.pluginManager;
3806
+ d?.onPluginsChange && (this._unsubscribePlugins = d.onPluginsChange(() => this._updateResolvedHref()));
3807
+ }
3808
+ willUpdate(d) {
3809
+ super.willUpdate(d), d.has("name") && this._updateResolvedHref();
3810
+ }
3811
+ _updateResolvedHref() {
3812
+ if (!this.name) {
3813
+ this._resolvedHref = "", this._pluginSvg = null;
3814
+ return;
3815
+ }
3816
+ let d = this._sharedInstancesBag.pluginManager?.snapshot().icons.find((d) => d.name === this.name);
3817
+ if (d) {
3818
+ this._pluginSvg = d.svg, this._resolvedHref = "";
3819
+ return;
3820
+ }
3821
+ this._pluginSvg = null;
3822
+ let m = `#uc-icon-${this.name}`;
3823
+ this._resolvedHref = this._iconHrefResolver?.(this.name) ?? m;
3824
+ }
3825
+ render() {
3826
+ return this._pluginSvg ? b`${this.yield("", b`${o(this._pluginSvg)}`)}` : b`
3827
+ ${this.yield("", b`<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
3828
+ <use href=${this._resolvedHref}></use>
3829
+ </svg>`)}
3830
+ `;
3831
+ }
3832
+ disconnectedCallback() {
3833
+ this._unsubscribePlugins?.(), this._unsubscribePlugins = void 0, super.disconnectedCallback();
3834
+ }
3835
+ };
3836
+ __decorate([n({ type: String })], Icon.prototype, "name", void 0), __decorate([r()], Icon.prototype, "_resolvedHref", void 0), __decorate([r()], Icon.prototype, "_pluginSvg", void 0);
3837
+ const CROP_PADDING = 20, THUMB_CORNER_SIZE = 24, THUMB_SIDE_SIZE = 34, THUMB_STROKE_WIDTH = 3, THUMB_OFFSET = 3 / 2, GUIDE_STROKE_WIDTH = 1, GUIDE_THIRD = 100 / 3, MIN_CROP_SIZE = 1, MAX_INTERACTION_SIZE = 24, MIN_INTERACTION_SIZE = 6;
3838
+ function setSvgNodeAttrs(d, m) {
3839
+ for (let [v, x] of Object.entries(m)) d.setAttributeNS(null, v, x.toString());
3840
+ }
3841
+ function createSvgNode(d, m = {}) {
3842
+ let v = document.createElementNS("http://www.w3.org/2000/svg", d);
3843
+ return setSvgNodeAttrs(v, m), v;
3844
+ }
3845
+ function cornerPath(d, m, v) {
3846
+ let { x, y: w, width: T, height: O } = d, M = m.includes("w") ? 0 : 1, F = m.includes("n") ? 0 : 1, U = M === 0 ? -1 : 1, W = F === 0 ? -1 : 1, G = [x + M * T + THUMB_OFFSET * U, w + F * O + THUMB_OFFSET * W - 24 * v * W], K = [x + M * T + THUMB_OFFSET * U, w + F * O + THUMB_OFFSET * W], q = [x + M * T - 24 * v * U + THUMB_OFFSET * U, w + F * O + THUMB_OFFSET * W];
3847
+ return {
3848
+ d: `M ${G[0]} ${G[1]} L ${K[0]} ${K[1]} L ${q[0]} ${q[1]}`,
3849
+ center: [K[0], K[1]]
3850
+ };
3851
+ }
3852
+ function sidePath(d, m, v) {
3853
+ let { x, y: w, width: T, height: O } = d, M = m === "n" || m === "s", F = m === "w" || m === "e", U = M ? .5 : m === "w" ? 0 : 1, W = F ? .5 : m === "n" ? 0 : 1, G = m === "w" ? -1 : m === "e" ? 1 : 0, K = m === "n" ? -1 : m === "s" ? 1 : 0, q, J;
3854
+ return M ? (q = [x + U * T - 34 * v / 2, w + W * O + THUMB_OFFSET * K], J = [x + U * T + 34 * v / 2, w + W * O + THUMB_OFFSET * K]) : (q = [x + U * T + THUMB_OFFSET * G, w + W * O - 34 * v / 2], J = [x + U * T + THUMB_OFFSET * G, w + W * O + 34 * v / 2]), {
3855
+ d: `M ${q[0]} ${q[1]} L ${J[0]} ${J[1]}`,
3856
+ center: [(q[0] + J[0]) / 2, (q[1] + J[1]) / 2]
3857
+ };
3858
+ }
3859
+ function thumbCursor(d) {
3860
+ return d === "" ? "move" : ["e", "w"].includes(d) ? "ew-resize" : ["n", "s"].includes(d) ? "ns-resize" : ["nw", "se"].includes(d) ? "nwse-resize" : "nesw-resize";
3861
+ }
3862
+ function moveRect({ rect: d, delta: [m, v], imageBox: x }) {
3863
+ return constraintRect({
3864
+ ...d,
3865
+ x: d.x + m,
3866
+ y: d.y + v
3867
+ }, x);
3868
+ }
3869
+ function constraintRect(d, m) {
3870
+ let { x: v } = d, { y: x } = d;
3871
+ return d.x < m.x ? v = m.x : d.x + d.width > m.x + m.width && (v = m.x + m.width - d.width), d.y < m.y ? x = m.y : d.y + d.height > m.y + m.height && (x = m.y + m.height - d.height), {
3872
+ ...d,
3873
+ x: v,
3874
+ y: x
3875
+ };
3876
+ }
3877
+ function resizeNorth({ rect: d, delta: m, aspectRatio: v, imageBox: x }) {
3878
+ let [, w] = m, { y: T, width: O, height: M } = d;
3879
+ T += w, M -= w, v && (O = M * v);
3880
+ let F = d.x + d.width / 2 - O / 2;
3881
+ return T <= x.y && (T = x.y, M = d.y + d.height - T, v && (O = M * v, F = d.x + d.width / 2 - O / 2)), F <= x.x && (F = x.x, T = d.y + d.height - M), F + O >= x.x + x.width && (F = Math.max(x.x, x.x + x.width - O), O = x.x + x.width - F, v && (M = O / v), T = d.y + d.height - M), M < 1 && (M = 1, v && (O = M * v, F = d.x + d.width / 2 - O / 2), T = d.y + d.height - M), O < 1 && (O = 1, v && (M = O / v, F = d.x + d.width / 2 - O / 2), T = d.y + d.height - M), {
3882
+ x: F,
3883
+ y: T,
3884
+ width: O,
3885
+ height: M
3886
+ };
3887
+ }
3888
+ function resizeWest({ rect: d, delta: m, aspectRatio: v, imageBox: x }) {
3889
+ let [w] = m, { x: T, width: O, height: M } = d;
3890
+ T += w, O -= w, v && (M = O / v);
3891
+ let F = d.y + d.height / 2 - M / 2;
3892
+ return T <= x.x && (T = x.x, O = d.x + d.width - T, v && (M = O / v, F = d.y + d.height / 2 - M / 2)), F <= x.y && (F = x.y, T = d.x + d.width - O), F + M >= x.y + x.height && (F = Math.max(x.y, x.y + x.height - M), M = x.y + x.height - F, v && (O = M * v), T = d.x + d.width - O), M < 1 && (M = 1, v && (O = M * v), F = d.y + d.height / 2 - M / 2, T = d.x + d.width - O), O < 1 && (O = 1, v && (M = O / v), F = d.y + d.height / 2 - M / 2, T = d.x + d.width - O), {
3893
+ x: T,
3894
+ y: F,
3895
+ width: O,
3896
+ height: M
3897
+ };
3898
+ }
3899
+ function resizeSouth({ rect: d, delta: m, aspectRatio: v, imageBox: x }) {
3900
+ let [, w] = m, { y: T, width: O, height: M } = d;
3901
+ M += w, v && (O = M * v);
3902
+ let F = d.x + d.width / 2 - O / 2;
3903
+ return T + M >= x.y + x.height && (M = x.y + x.height - T, v && (O = M * v), F = d.x + d.width / 2 - O / 2), F <= x.x && (F = x.x, T = d.y), F + O >= x.x + x.width && (F = Math.max(x.x, x.x + x.width - O), O = x.x + x.width - F, v && (M = O / v), T = d.y), M < 1 && (M = 1, v && (O = M * v), F = d.x + d.width / 2 - O / 2), O < 1 && (O = 1, v && (M = O / v), F = d.x + d.width / 2 - O / 2), {
3904
+ x: F,
3905
+ y: T,
3906
+ width: O,
3907
+ height: M
3908
+ };
3909
+ }
3910
+ function resizeEast({ rect: d, delta: m, aspectRatio: v, imageBox: x }) {
3911
+ let [w] = m, { x: T, width: O, height: M } = d;
3912
+ O += w, v && (M = O / v);
3913
+ let F = d.y + d.height / 2 - M / 2;
3914
+ return T + O >= x.x + x.width && (O = x.x + x.width - T, v && (M = O / v), F = d.y + d.height / 2 - M / 2), F <= x.y && (F = x.y, T = d.x), F + M >= x.y + x.height && (F = Math.max(x.y, x.y + x.height - M), M = x.y + x.height - F, v && (O = M * v), T = d.x), M < 1 && (M = 1, v && (O = M * v), F = d.y + d.height / 2 - M / 2), O < 1 && (O = 1, v && (M = O / v), F = d.y + d.height / 2 - M / 2), {
3915
+ x: T,
3916
+ y: F,
3917
+ width: O,
3918
+ height: M
3919
+ };
3920
+ }
3921
+ function resizeNorthWest({ rect: d, delta: m, aspectRatio: v, imageBox: x }) {
3922
+ let [w, T] = m, { x: O, y: M, width: F, height: U } = d;
3923
+ return O + w < x.x && (w = x.x - O), M + T < x.y && (T = x.y - M), O += w, F -= w, M += T, U -= T, v && Math.abs(F / U) > v ? (T = F / v - U, U += T, M -= T, M <= x.y && (U -= x.y - M, F = U * v, O = d.x + d.width - F, M = x.y)) : v && (w = U * v - F, F += w, O -= w, O <= x.x && (F -= x.x - O, U = F / v, O = x.x, M = d.y + d.height - U)), U < 1 && (U = 1, v && (F = U * v), O = d.x + d.width - F, M = d.y + d.height - U), F < 1 && (F = 1, v && (U = F / v), O = d.x + d.width - F, M = d.y + d.height - U), {
3924
+ x: O,
3925
+ y: M,
3926
+ width: F,
3927
+ height: U
3928
+ };
3929
+ }
3930
+ function resizeNorthEast({ rect: d, delta: m, aspectRatio: v, imageBox: x }) {
3931
+ let [w, T] = m, { x: O, y: M, width: F, height: U } = d;
3932
+ return O + F + w > x.x + x.width && (w = x.x + x.width - O - F), M + T < x.y && (T = x.y - M), F += w, M += T, U -= T, v && Math.abs(F / U) > v ? (T = F / v - U, U += T, M -= T, M <= x.y && (U -= x.y - M, F = U * v, O = d.x, M = x.y)) : v && (w = U * v - F, F += w, O + F >= x.x + x.width && (F = x.x + x.width - O, U = F / v, O = x.x + x.width - F, M = d.y + d.height - U)), U < 1 && (U = 1, v && (F = U * v), M = d.y + d.height - U), F < 1 && (F = 1, v && (U = F / v), M = d.y + d.height - U), {
3933
+ x: O,
3934
+ y: M,
3935
+ width: F,
3936
+ height: U
3937
+ };
3938
+ }
3939
+ function resizeSouthWest({ rect: d, delta: m, aspectRatio: v, imageBox: x }) {
3940
+ let [w, T] = m, { x: O, y: M, width: F, height: U } = d;
3941
+ return O + w < x.x && (w = x.x - O), M + U + T > x.y + x.height && (T = x.y + x.height - M - U), O += w, F -= w, U += T, v && Math.abs(F / U) > v ? (T = F / v - U, U += T, M + U >= x.y + x.height && (U = x.y + x.height - M, F = U * v, O = d.x + d.width - F, M = x.y + x.height - U)) : v && (w = U * v - F, F += w, O -= w, O <= x.x && (F -= x.x - O, U = F / v, O = x.x, M = d.y)), U < 1 && (U = 1, v && (F = U * v), O = d.x + d.width - F), F < 1 && (F = 1, v && (U = F / v), O = d.x + d.width - F), {
3942
+ x: O,
3943
+ y: M,
3944
+ width: F,
3945
+ height: U
3946
+ };
3947
+ }
3948
+ function resizeSouthEast({ rect: d, delta: m, aspectRatio: v, imageBox: x }) {
3949
+ let [w, T] = m, { x: O, y: M, width: F, height: U } = d;
3950
+ return O + F + w > x.x + x.width && (w = x.x + x.width - O - F), M + U + T > x.y + x.height && (T = x.y + x.height - M - U), F += w, U += T, v && Math.abs(F / U) > v ? (T = F / v - U, U += T, M + U >= x.y + x.height && (U = x.y + x.height - M, F = U * v, O = d.x, M = x.y + x.height - U)) : v && (w = U * v - F, F += w, O + F >= x.x + x.width && (F = x.x + x.width - O, U = F / v, O = x.x + x.width - F, M = d.y)), U < 1 && (U = 1, v && (F = U * v)), F < 1 && (F = 1, v && (U = F / v)), {
3951
+ x: O,
3952
+ y: M,
3953
+ width: F,
3954
+ height: U
3955
+ };
3956
+ }
3957
+ function resizeRect({ direction: d, ...m }) {
3958
+ switch (d) {
3959
+ case "n": return resizeNorth(m);
3960
+ case "w": return resizeWest(m);
3961
+ case "s": return resizeSouth(m);
3962
+ case "e": return resizeEast(m);
3963
+ case "nw": return resizeNorthWest(m);
3964
+ case "ne": return resizeNorthEast(m);
3965
+ case "sw": return resizeSouthWest(m);
3966
+ case "se": return resizeSouthEast(m);
3967
+ default: return m.rect;
3968
+ }
3969
+ }
3970
+ function rectContainsPoint(d, [m, v]) {
3971
+ return d.x <= m && m <= d.x + d.width && d.y <= v && v <= d.y + d.height;
3972
+ }
3973
+ function isRectInsideRect(d, m) {
3974
+ return d.x >= m.x && d.y >= m.y && d.x + d.width <= m.x + m.width && d.y + d.height <= m.y + m.height;
3975
+ }
3976
+ function isRectMatchesAspectRatio(d, m) {
3977
+ return Math.abs(d.width / d.height - m) < .1;
3978
+ }
3979
+ function rotateSize({ width: d, height: m }, v) {
3980
+ let x = v / 90 % 2 != 0;
3981
+ return {
3982
+ width: x ? m : d,
3983
+ height: x ? d : m
3984
+ };
3985
+ }
3986
+ function calculateMaxCenteredCropFrame(d, m, v) {
3987
+ let x = d / m, w, T;
3988
+ x > v ? (w = Math.round(m * v), T = m) : (w = d, T = Math.round(d / v));
3989
+ let O = Math.round((d - w) / 2), M = Math.round((m - T) / 2);
3990
+ return O + w > d && (w = d - O), M + T > m && (T = m - M), {
3991
+ x: O,
3992
+ y: M,
3993
+ width: w,
3994
+ height: T
3995
+ };
3996
+ }
3997
+ function roundRect(d) {
3998
+ return {
3999
+ x: Math.round(d.x),
4000
+ y: Math.round(d.y),
4001
+ width: Math.round(d.width),
4002
+ height: Math.round(d.height)
4003
+ };
4004
+ }
4005
+ function clamp(d, m, v) {
4006
+ return Math.min(Math.max(d, m), v);
4007
+ }
4008
+ var warnings = /* @__PURE__ */ new Set();
4009
+ function warnOnce(d) {
4010
+ warnings.has(d) || (warnings.add(d), console.warn(d));
4011
+ }
4012
+ const CameraSourceTypes = Object.freeze({
4013
+ PHOTO: "photo",
4014
+ VIDEO: "video"
4015
+ }), CameraSourceEvents = Object.freeze({
4016
+ IDLE: "idle",
4017
+ SHOT: "shot",
4018
+ PLAY: "play",
4019
+ PAUSE: "pause",
4020
+ RESUME: "resume",
4021
+ STOP: "stop",
4022
+ RETAKE: "retake",
4023
+ ACCEPT: "accept"
4024
+ });
4025
+ export { transformationsToOperations as $, parseCropPreset as A, EventType as B, MIN_CROP_SIZE as C, E as Ct, THUMB_STROKE_WIDTH as D, THUMB_SIDE_SIZE as E, debounce as F, ALL_COLOR_OPERATIONS as G, SharedInstance as H, PubSub as I, ALL_TABS as J, ALL_CROP_OPERATIONS as K, UID as L, __decorate as M, createL10n as N, Icon as O, getPluralForm as P, operationsToTransformations as Q, PACKAGE_NAME as R, MAX_INTERACTION_SIZE as S, A as St, THUMB_CORNER_SIZE as T, DEFAULT_CDN_CNAME as U, InternalEventType as V, initialConfig as W, TabId as X, COLOR_OPERATIONS_CONFIG as Y, COMMON_OPERATIONS as Z, sidePath as _, e$1 as _t, clamp as a, extractUuid as at, GUIDE_STROKE_WIDTH as b, r as bt, createSvgNode as c, uploaderBlockCtx as ct, moveRect as d, UploadError as dt, stringToArray as et, rectContainsPoint as f, getUserAgent$1 as ft, setSvgNodeAttrs as g, n$2 as gt, roundRect as h, e$3 as ht, calculateMaxCenteredCropFrame as i, extractOperations as it, LitBlock as j, getClosestAspectRatio as k, isRectInsideRect as l, NetworkError as lt, rotateSize as m, o as mt, CameraSourceTypes as n, createCdnUrlModifiers as nt, constraintRect as o, sharedConfigKey as ot, resizeRect as p, uploadFileGroup as pt, ALL_FILTERS as q, warnOnce as r, createOriginalUrl as rt, cornerPath as s, activityBlockCtx as st, CameraSourceEvents as t, createCdnUrl as tt, isRectMatchesAspectRatio as u, Queue as ut, thumbCursor as v, i$3 as vt, MIN_INTERACTION_SIZE as w, b as wt, GUIDE_THIRD as x, n as xt, CROP_PADDING as y, t$1 as yt, PACKAGE_VERSION as z };