@uploadcare/file-uploader 1.13.3-alpha.0 → 1.14.0-alpha.11

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 (286) hide show
  1. package/abstract/ActivityBlock.d.ts +5 -5
  2. package/abstract/ActivityBlock.d.ts.map +1 -1
  3. package/abstract/ActivityBlock.js +10 -15
  4. package/abstract/Block.d.ts +9 -9
  5. package/abstract/Block.d.ts.map +1 -1
  6. package/abstract/Block.js +15 -0
  7. package/abstract/CTX.d.ts +6 -6
  8. package/abstract/CTX.d.ts.map +1 -1
  9. package/abstract/CTX.js +3 -1
  10. package/abstract/LocaleManager.d.ts +3 -3
  11. package/abstract/LocaleManager.d.ts.map +1 -1
  12. package/abstract/ModalManager.d.ts +124 -0
  13. package/abstract/ModalManager.d.ts.map +1 -0
  14. package/abstract/ModalManager.js +227 -0
  15. package/abstract/SecureUploadsManager.d.ts +2 -2
  16. package/abstract/SecureUploadsManager.d.ts.map +1 -1
  17. package/abstract/SolutionBlock.d.ts +2 -2
  18. package/abstract/SolutionBlock.d.ts.map +1 -1
  19. package/abstract/TypedCollection.d.ts.map +1 -1
  20. package/abstract/TypedData.d.ts +1 -1
  21. package/abstract/TypedData.d.ts.map +1 -1
  22. package/abstract/UploaderBlock.d.ts +8 -6
  23. package/abstract/UploaderBlock.d.ts.map +1 -1
  24. package/abstract/UploaderBlock.js +24 -8
  25. package/abstract/UploaderPublicApi.d.ts +24 -23
  26. package/abstract/UploaderPublicApi.d.ts.map +1 -1
  27. package/abstract/UploaderPublicApi.js +39 -9
  28. package/abstract/ValidationManager.d.ts +4 -4
  29. package/abstract/ValidationManager.d.ts.map +1 -1
  30. package/abstract/a11y.d.ts +2 -2
  31. package/abstract/a11y.d.ts.map +1 -1
  32. package/abstract/buildOutputCollectionState.d.ts +1 -1
  33. package/abstract/buildOutputCollectionState.d.ts.map +1 -1
  34. package/abstract/defineComponents.d.ts.map +1 -1
  35. package/abstract/l10nProcessor.d.ts.map +1 -1
  36. package/abstract/loadFileUploaderFrom.d.ts +1 -1
  37. package/abstract/loadFileUploaderFrom.d.ts.map +1 -1
  38. package/abstract/localeRegistry.d.ts.map +1 -1
  39. package/abstract/sharedConfigKey.d.ts.map +1 -1
  40. package/abstract/uploadEntrySchema.d.ts +2 -2
  41. package/abstract/uploadEntrySchema.d.ts.map +1 -1
  42. package/blocks/CameraSource/CameraSource.d.ts +9 -9
  43. package/blocks/CameraSource/CameraSource.d.ts.map +1 -1
  44. package/blocks/CameraSource/CameraSource.js +1 -0
  45. package/blocks/CameraSource/calcCameraModes.d.ts +1 -1
  46. package/blocks/CameraSource/constants.d.ts.map +1 -1
  47. package/blocks/CloudImageEditor/src/CloudImageEditorBlock.d.ts.map +1 -1
  48. package/blocks/CloudImageEditor/src/CropFrame.d.ts +1 -1
  49. package/blocks/CloudImageEditor/src/EditorImageCropper.d.ts +3 -3
  50. package/blocks/CloudImageEditor/src/EditorImageFader.d.ts +1 -1
  51. package/blocks/CloudImageEditor/src/EditorImageFader.d.ts.map +1 -1
  52. package/blocks/CloudImageEditor/src/EditorSlider.d.ts +1 -1
  53. package/blocks/CloudImageEditor/src/EditorSlider.d.ts.map +1 -1
  54. package/blocks/CloudImageEditor/src/EditorToolbar.d.ts +1 -1
  55. package/blocks/CloudImageEditor/src/crop-utils.d.ts +14 -14
  56. package/blocks/CloudImageEditor/src/crop-utils.d.ts.map +1 -1
  57. package/blocks/CloudImageEditor/src/cropper-constants.d.ts.map +1 -1
  58. package/blocks/CloudImageEditor/src/lib/applyFocusVisiblePolyfill.d.ts +1 -1
  59. package/blocks/CloudImageEditor/src/lib/applyFocusVisiblePolyfill.d.ts.map +1 -1
  60. package/blocks/CloudImageEditor/src/lib/parseCropPreset.d.ts +1 -1
  61. package/blocks/CloudImageEditor/src/lib/transformationUtils.d.ts +3 -3
  62. package/blocks/CloudImageEditor/src/lib/transformationUtils.d.ts.map +1 -1
  63. package/blocks/CloudImageEditor/src/state.d.ts +4 -4
  64. package/blocks/CloudImageEditor/src/svg-sprite.d.ts.map +1 -1
  65. package/blocks/CloudImageEditor/src/types.d.ts +8 -58
  66. package/blocks/CloudImageEditor/src/types.d.ts.map +1 -1
  67. package/blocks/CloudImageEditorActivity/CloudImageEditorActivity.d.ts +1 -1
  68. package/blocks/CloudImageEditorActivity/CloudImageEditorActivity.d.ts.map +1 -1
  69. package/blocks/CloudImageEditorActivity/CloudImageEditorActivity.js +2 -0
  70. package/blocks/Config/Config.d.ts +3 -12
  71. package/blocks/Config/Config.d.ts.map +1 -1
  72. package/blocks/Config/assertions.d.ts +1 -1
  73. package/blocks/Config/initialConfig.d.ts +1 -1
  74. package/blocks/Config/initialConfig.d.ts.map +1 -1
  75. package/blocks/Config/initialConfig.js +4 -0
  76. package/blocks/Config/normalizeConfigValue.d.ts +2 -1
  77. package/blocks/Config/normalizeConfigValue.d.ts.map +1 -1
  78. package/blocks/Config/normalizeConfigValue.js +19 -106
  79. package/blocks/Config/side-effects.d.ts.map +1 -1
  80. package/blocks/Config/validatorsType.d.ts +37 -0
  81. package/blocks/Config/validatorsType.d.ts.map +1 -0
  82. package/blocks/Config/validatorsType.js +134 -0
  83. package/blocks/DropArea/DropArea.d.ts +3 -2
  84. package/blocks/DropArea/DropArea.d.ts.map +1 -1
  85. package/blocks/DropArea/DropArea.js +21 -2
  86. package/blocks/DropArea/addDropzone.d.ts.map +1 -1
  87. package/blocks/DropArea/getDropItems.d.ts +2 -2
  88. package/blocks/DropArea/getDropItems.d.ts.map +1 -1
  89. package/blocks/ExternalSource/ExternalSource.d.ts +3 -3
  90. package/blocks/ExternalSource/ExternalSource.d.ts.map +1 -1
  91. package/blocks/ExternalSource/ExternalSource.js +2 -1
  92. package/blocks/ExternalSource/MessageBridge.d.ts +3 -3
  93. package/blocks/ExternalSource/MessageBridge.d.ts.map +1 -1
  94. package/blocks/ExternalSource/query-string.d.ts.map +1 -1
  95. package/blocks/ExternalSource/types.d.ts +64 -64
  96. package/blocks/ExternalSource/types.d.ts.map +1 -1
  97. package/blocks/FileItem/FileItem.d.ts +5 -6
  98. package/blocks/FileItem/FileItem.d.ts.map +1 -1
  99. package/blocks/FileItem/FileItem.js +40 -42
  100. package/blocks/FileItem/file-item.css +90 -0
  101. package/blocks/Img/ImgBase.d.ts +3 -3
  102. package/blocks/Img/ImgBase.d.ts.map +1 -1
  103. package/blocks/Img/ImgConfig.d.ts.map +1 -1
  104. package/blocks/Img/configurations.d.ts.map +1 -1
  105. package/blocks/Modal/Modal.d.ts +21 -2
  106. package/blocks/Modal/Modal.d.ts.map +1 -1
  107. package/blocks/Modal/Modal.js +52 -24
  108. package/blocks/ProgressBar/ProgressBar.d.ts.map +1 -1
  109. package/blocks/ProgressBar/ProgressBar.js +1 -0
  110. package/blocks/ProgressBar/progress-bar.css +1 -0
  111. package/blocks/Range/Range.d.ts.map +1 -1
  112. package/blocks/SimpleBtn/SimpleBtn.d.ts +2 -2
  113. package/blocks/SimpleBtn/SimpleBtn.d.ts.map +1 -1
  114. package/blocks/SimpleBtn/SimpleBtn.js +1 -1
  115. package/blocks/SourceBtn/SourceBtn.d.ts +3 -3
  116. package/blocks/SourceBtn/SourceBtn.d.ts.map +1 -1
  117. package/blocks/SourceBtn/SourceBtn.js +29 -15
  118. package/blocks/SourceList/SourceList.d.ts.map +1 -1
  119. package/blocks/SourceList/SourceList.js +17 -11
  120. package/blocks/Spinner/Spinner.d.ts.map +1 -1
  121. package/blocks/StartFrom/StartFrom.js +1 -1
  122. package/blocks/Thumb/Thumb.d.ts +48 -0
  123. package/blocks/Thumb/Thumb.d.ts.map +1 -0
  124. package/blocks/Thumb/Thumb.js +169 -0
  125. package/blocks/Thumb/thumb.css +4 -0
  126. package/blocks/UploadCtxProvider/EventEmitter.d.ts +20 -20
  127. package/blocks/UploadCtxProvider/EventEmitter.d.ts.map +1 -1
  128. package/blocks/UploadCtxProvider/UploadCtxProvider.d.ts +4 -4
  129. package/blocks/UploadCtxProvider/UploadCtxProvider.d.ts.map +1 -1
  130. package/blocks/UploadList/UploadList.d.ts +4 -2
  131. package/blocks/UploadList/UploadList.d.ts.map +1 -1
  132. package/blocks/UploadList/UploadList.js +16 -1
  133. package/blocks/UploadList/upload-list.css +23 -0
  134. package/blocks/UrlSource/UrlSource.d.ts.map +1 -1
  135. package/blocks/UrlSource/UrlSource.js +1 -0
  136. package/blocks/svg-backgrounds/svg-backgrounds.d.ts +3 -3
  137. package/blocks/svg-backgrounds/svg-backgrounds.d.ts.map +1 -1
  138. package/blocks/themes/uc-basic/common.css +1 -1
  139. package/blocks/themes/uc-basic/index.css +1 -0
  140. package/blocks/themes/uc-basic/svg-sprite.d.ts +1 -1
  141. package/blocks/themes/uc-basic/svg-sprite.d.ts.map +1 -1
  142. package/blocks/themes/uc-basic/svg-sprite.js +1 -1
  143. package/blocks/themes/uc-basic/theme.css +12 -0
  144. package/blocks/utils/UploadSource.d.ts +6 -1
  145. package/blocks/utils/UploadSource.d.ts.map +1 -1
  146. package/blocks/utils/UploadSource.js +7 -1
  147. package/blocks/utils/debounce.d.ts +3 -1
  148. package/blocks/utils/debounce.d.ts.map +1 -1
  149. package/blocks/utils/resizeImage.d.ts +1 -1
  150. package/blocks/utils/resizeImage.d.ts.map +1 -1
  151. package/blocks/utils/supportCapture.d.ts +2 -0
  152. package/blocks/utils/supportCapture.d.ts.map +1 -0
  153. package/blocks/utils/supportCapture.js +3 -0
  154. package/blocks/utils/throttle.d.ts +3 -1
  155. package/blocks/utils/throttle.d.ts.map +1 -1
  156. package/blocks/utils/userAgent.d.ts +1 -1
  157. package/blocks/utils/userAgent.d.ts.map +1 -1
  158. package/env.d.ts +1 -1
  159. package/env.d.ts.map +1 -1
  160. package/env.js +1 -1
  161. package/index.d.ts +2 -0
  162. package/index.js +2 -0
  163. package/index.ssr.d.ts +88 -15
  164. package/index.ssr.d.ts.map +1 -1
  165. package/index.ssr.js +119 -24
  166. package/locales/file-uploader/ar.d.ts +2 -0
  167. package/locales/file-uploader/ar.js +2 -0
  168. package/locales/file-uploader/az.d.ts +2 -0
  169. package/locales/file-uploader/az.js +2 -0
  170. package/locales/file-uploader/ca.d.ts +2 -0
  171. package/locales/file-uploader/ca.js +2 -0
  172. package/locales/file-uploader/cs.d.ts +2 -0
  173. package/locales/file-uploader/cs.js +2 -0
  174. package/locales/file-uploader/da.d.ts +2 -0
  175. package/locales/file-uploader/da.js +2 -0
  176. package/locales/file-uploader/de.d.ts +2 -0
  177. package/locales/file-uploader/de.js +2 -0
  178. package/locales/file-uploader/el.d.ts +2 -0
  179. package/locales/file-uploader/el.js +2 -0
  180. package/locales/file-uploader/en.d.ts +2 -1
  181. package/locales/file-uploader/en.js +2 -1
  182. package/locales/file-uploader/es.d.ts +2 -0
  183. package/locales/file-uploader/es.js +2 -0
  184. package/locales/file-uploader/et.d.ts +2 -0
  185. package/locales/file-uploader/et.js +2 -0
  186. package/locales/file-uploader/fi.d.ts +2 -0
  187. package/locales/file-uploader/fi.js +2 -0
  188. package/locales/file-uploader/fr.d.ts +2 -0
  189. package/locales/file-uploader/fr.js +2 -0
  190. package/locales/file-uploader/he.d.ts +2 -0
  191. package/locales/file-uploader/he.js +2 -0
  192. package/locales/file-uploader/hy.d.ts +2 -0
  193. package/locales/file-uploader/hy.js +2 -0
  194. package/locales/file-uploader/is.d.ts +2 -0
  195. package/locales/file-uploader/is.js +2 -0
  196. package/locales/file-uploader/it.d.ts +2 -0
  197. package/locales/file-uploader/it.js +2 -0
  198. package/locales/file-uploader/ja.d.ts +2 -0
  199. package/locales/file-uploader/ja.js +2 -0
  200. package/locales/file-uploader/ka.d.ts +2 -0
  201. package/locales/file-uploader/ka.js +2 -0
  202. package/locales/file-uploader/kk.d.ts +2 -0
  203. package/locales/file-uploader/kk.js +2 -0
  204. package/locales/file-uploader/ko.d.ts +2 -0
  205. package/locales/file-uploader/ko.js +2 -0
  206. package/locales/file-uploader/lv.d.ts +2 -0
  207. package/locales/file-uploader/lv.js +2 -0
  208. package/locales/file-uploader/nb.d.ts +2 -0
  209. package/locales/file-uploader/nb.js +2 -0
  210. package/locales/file-uploader/nl.d.ts +2 -0
  211. package/locales/file-uploader/nl.js +2 -0
  212. package/locales/file-uploader/pl.d.ts +2 -0
  213. package/locales/file-uploader/pl.js +2 -0
  214. package/locales/file-uploader/pt.d.ts +2 -0
  215. package/locales/file-uploader/pt.js +2 -0
  216. package/locales/file-uploader/ro.d.ts +2 -0
  217. package/locales/file-uploader/ro.js +2 -0
  218. package/locales/file-uploader/ru.d.ts +2 -0
  219. package/locales/file-uploader/ru.js +2 -0
  220. package/locales/file-uploader/sk.d.ts +2 -0
  221. package/locales/file-uploader/sk.js +2 -0
  222. package/locales/file-uploader/sr.d.ts +2 -0
  223. package/locales/file-uploader/sr.js +2 -0
  224. package/locales/file-uploader/sv.d.ts +2 -0
  225. package/locales/file-uploader/sv.js +2 -0
  226. package/locales/file-uploader/tr.d.ts +2 -0
  227. package/locales/file-uploader/tr.js +2 -0
  228. package/locales/file-uploader/uk.d.ts +2 -0
  229. package/locales/file-uploader/uk.js +2 -0
  230. package/locales/file-uploader/vi.d.ts +2 -0
  231. package/locales/file-uploader/vi.js +2 -0
  232. package/locales/file-uploader/zh-TW.d.ts +2 -0
  233. package/locales/file-uploader/zh-TW.js +2 -0
  234. package/locales/file-uploader/zh.d.ts +2 -0
  235. package/locales/file-uploader/zh.js +2 -0
  236. package/package.json +4 -2
  237. package/solutions/file-uploader/inline/FileUploaderInline.d.ts +2 -2
  238. package/solutions/file-uploader/inline/FileUploaderInline.d.ts.map +1 -1
  239. package/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts +35 -0
  240. package/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts.map +1 -1
  241. package/solutions/file-uploader/minimal/FileUploaderMinimal.js +122 -9
  242. package/solutions/file-uploader/minimal/index.css +25 -24
  243. package/solutions/file-uploader/minimal/index.d.ts +1 -13
  244. package/solutions/file-uploader/minimal/index.js +1 -13
  245. package/solutions/file-uploader/regular/FileUploaderRegular.d.ts +3 -5
  246. package/solutions/file-uploader/regular/FileUploaderRegular.d.ts.map +1 -1
  247. package/solutions/file-uploader/regular/FileUploaderRegular.js +17 -16
  248. package/types/exported.d.ts +7 -0
  249. package/utils/cdn-utils.d.ts +3 -3
  250. package/utils/cdn-utils.d.ts.map +1 -1
  251. package/utils/fileTypes.d.ts +1 -1
  252. package/utils/fileTypes.d.ts.map +1 -1
  253. package/utils/getPluralForm.d.ts.map +1 -1
  254. package/utils/isSecureTokenExpired.d.ts +1 -1
  255. package/utils/memoize.d.ts.map +1 -1
  256. package/utils/mixinClass.d.ts +3 -1
  257. package/utils/mixinClass.d.ts.map +1 -1
  258. package/utils/prettyBytes.d.ts.map +1 -1
  259. package/utils/template-utils.d.ts +1 -1
  260. package/utils/template-utils.d.ts.map +1 -1
  261. package/utils/toKebabCase.d.ts.map +1 -1
  262. package/utils/transparentPixelSrc.d.ts.map +1 -1
  263. package/utils/uniqueArray.d.ts.map +1 -1
  264. package/utils/validators/collection/validateCollectionUploadError.d.ts +1 -1
  265. package/utils/validators/collection/validateMultiple.d.ts +1 -1
  266. package/utils/validators/file/validateFileType.d.ts +1 -1
  267. package/utils/validators/file/validateIsImage.d.ts +1 -1
  268. package/utils/validators/file/validateMaxSizeLimit.d.ts +1 -1
  269. package/utils/validators/file/validateUploadError.d.ts +1 -1
  270. package/utils/waitForAttribute.d.ts +1 -1
  271. package/utils/waitForAttribute.d.ts.map +1 -1
  272. package/web/file-uploader.iife.min.js +4 -4
  273. package/web/file-uploader.min.js +4 -4
  274. package/web/uc-basic.min.css +1 -1
  275. package/web/uc-cloud-image-editor.min.css +1 -1
  276. package/web/uc-cloud-image-editor.min.js +4 -4
  277. package/web/uc-file-uploader-inline.min.css +1 -1
  278. package/web/uc-file-uploader-inline.min.js +4 -4
  279. package/web/uc-file-uploader-minimal.min.css +1 -1
  280. package/web/uc-file-uploader-minimal.min.js +4 -3
  281. package/web/uc-file-uploader-regular.min.css +1 -1
  282. package/web/uc-file-uploader-regular.min.js +4 -4
  283. package/web/uc-img.min.js +2 -2
  284. package/blocks/utils/checkDevice.d.ts +0 -9
  285. package/blocks/utils/checkDevice.d.ts.map +0 -1
  286. package/blocks/utils/checkDevice.js +0 -34
@@ -46,11 +46,11 @@ export class ActivityBlock extends Block {
46
46
  registerActivity(name: string, options?: {
47
47
  onActivate?: (() => void) | undefined;
48
48
  onDeactivate?: (() => void) | undefined;
49
- } | undefined): void;
49
+ }): void;
50
50
  unregisterActivity(): void;
51
51
  get activityKey(): string;
52
52
  /** @type {ActivityParamsMap[keyof ActivityParamsMap]} */
53
- get activityParams(): import("../blocks/ExternalSource/ExternalSource.js").ActivityParams | import("../blocks/CloudImageEditorActivity/CloudImageEditorActivity.js").ActivityParams;
53
+ get activityParams(): ActivityParamsMap[keyof ActivityParamsMap];
54
54
  /** @type {String} */
55
55
  get initActivity(): string;
56
56
  /** @type {String} */
@@ -70,10 +70,10 @@ export namespace ActivityBlock {
70
70
  }>;
71
71
  }
72
72
  export type ActivityParamsMap = {
73
- 'cloud-image-edit': import('../blocks/CloudImageEditorActivity/CloudImageEditorActivity.js').ActivityParams;
74
- external: import('../blocks/ExternalSource/ExternalSource.js').ActivityParams;
73
+ "cloud-image-edit": import("../blocks/CloudImageEditorActivity/CloudImageEditorActivity.js").ActivityParams;
74
+ external: import("../blocks/ExternalSource/ExternalSource.js").ActivityParams;
75
75
  };
76
- export type RegisteredActivityType = (typeof ActivityBlock)['activities'][keyof (typeof ActivityBlock)['activities']];
76
+ export type RegisteredActivityType = (typeof ActivityBlock)["activities"][keyof (typeof ActivityBlock)["activities"]];
77
77
  export type ActivityType = RegisteredActivityType | (string & {}) | null;
78
78
  import { Block } from './Block.js';
79
79
  //# sourceMappingURL=ActivityBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityBlock.d.ts","sourceRoot":"","sources":["ActivityBlock.js"],"names":[],"mappings":"AASA;;;;;GAKG;AAEH;IA4FE;;;;;;OAMG;IACH,kCAAsC;IAlGtC,iBAAiB;IACjB,kCAAuB;IAEvB;;;;;;MAA+B;IAE/B;;MAAqE;IAErE,eAAe;IACf,oBAKC;IAED,eAAe;IACf,kBAaC;IA2CD,eAAe;IACf,sBAWC;IAED,eAAe;IACf,8BAEC;IAWD,4CAEC;IAED,iCAEC;IAED;;;;;;;OAOG;IACH;4BAHiB,IAAI;8BACJ,IAAI;yBAQpB;IAED,2BAKC;IAoBD,0BAEC;IAED,yDAAyD;IACzD,oLAEC;IAED,qBAAqB;IACrB,2BAEC;IAED,qBAAqB;IACrB,2BAEC;IAED,oBAoBC;IAlLC,8CAAyB;CAmL5B;;;;;;;;;;;;gCApMY;IACZ,kBAAsB,EAAE,OAAO,gEAAgE,EAAE,cAAc,CAAC;IAChH,UAAc,OAAO,4CAA4C,EAAE,cAAc,CAAC;CAC/E;qCA6MU,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,CAAC;2BAChF,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI;sBAxNrC,YAAY"}
1
+ {"version":3,"file":"ActivityBlock.d.ts","sourceRoot":"","sources":["ActivityBlock.js"],"names":[],"mappings":"AASA;;;;;GAKG;AAEH;IA+EE;;;;;;OAMG;IACH,kCAAsC;IArFtC,iBAAiB;IACjB,kCAAuB;IAEvB;;;;;;MAA+B;IAE/B;;MAAqE;IAErE,eAAe;IACf,oBAKC;IAED,eAAe;IACf,kBAaC;IA8BD,eAAe;IACf,sBAWC;IAED,eAAe;IACf,8BAEC;IAWD,4CAEC;IAED,iCAEC;IAED;;;;;;;OAOG;IACH,yCAHG;QAA6B,UAAU,UAAzB,IAAI;QACW,YAAY,UAA3B,IAAI;KAAwB,QAQ5C;IAED,2BAKC;IAoBD,0BAEC;IAED,yDAAyD;IACzD,sBADW,iBAAiB,CAAC,MAAM,iBAAiB,CAAC,CAGpD;IAED,qBAAqB;IACrB,2BAEC;IAED,qBAAqB;IACrB,2BAEC;IAED,oBA4BC;IA7KC,8CAAyB;CA8K5B;;;;;;;;;;;;gCA/LY;IACZ,kBAAsB,EAAE,OAAO,gEAAgE,EAAE,cAAc,CAAC;IAC5G,QAAQ,EAAE,OAAO,4CAA4C,EAAE,cAAc,CAAC;CAC/E;qCAwMU,CAAC,OAAO,aAAa,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,EAAE,YAAY,CAAC,CAAC;2BAChF,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI;sBAnNrC,YAAY"}
@@ -49,11 +49,6 @@ export class ActivityBlock extends Block {
49
49
  /** @protected */
50
50
  initCallback() {
51
51
  super.initCallback();
52
- if (this.hasAttribute('current-activity')) {
53
- this.sub('*currentActivity', (/** @type {String} */ val) => {
54
- this.setAttribute('current-activity', val);
55
- });
56
- }
57
52
 
58
53
  // TODO: rename activityType to activityId
59
54
  if (this.activityType) {
@@ -76,14 +71,6 @@ export class ActivityBlock extends Block {
76
71
  this.$['*history'] = [];
77
72
  }
78
73
  });
79
-
80
- if (this.has('*modalActive')) {
81
- this.sub('*modalActive', (modalActive) => {
82
- if (!modalActive && this.activityType === this.$['*currentActivity']) {
83
- this.$['*currentActivity'] = null;
84
- }
85
- });
86
- }
87
74
  }
88
75
  }
89
76
 
@@ -160,7 +147,7 @@ export class ActivityBlock extends Block {
160
147
 
161
148
  if (!hasCurrentActivityInCtx) {
162
149
  this.$['*currentActivity'] = null;
163
- this.setOrAddState('*modalActive', false);
150
+ this.modalManager.closeAll();
164
151
  }
165
152
  }
166
153
 
@@ -186,21 +173,29 @@ export class ActivityBlock extends Block {
186
173
  historyBack() {
187
174
  /** @type {String[]} */
188
175
  let history = this.$['*history'];
176
+
189
177
  if (history) {
190
178
  let nextActivity = history.pop();
179
+
191
180
  while (nextActivity === this.activityType) {
192
181
  nextActivity = history.pop();
193
182
  }
183
+
194
184
  let couldOpenActivity = !!nextActivity;
195
185
  if (nextActivity) {
196
186
  const nextActivityBlock = [...this.blocksRegistry].find((block) => block.activityType === nextActivity);
197
187
  couldOpenActivity = /** @type {ActivityBlock} */ (nextActivityBlock)?.couldOpenActivity ?? false;
198
188
  }
189
+
199
190
  nextActivity = couldOpenActivity ? nextActivity : undefined;
191
+
192
+ if (nextActivity) this.modalManager.open(nextActivity);
193
+
200
194
  this.$['*currentActivity'] = nextActivity;
201
195
  this.$['*history'] = history;
196
+
202
197
  if (!nextActivity) {
203
- this.setOrAddState('*modalActive', false);
198
+ this.modalManager.closeAll();
204
199
  }
205
200
  }
206
201
  }
@@ -4,12 +4,12 @@ export class Block extends BaseComponent<any> {
4
4
  /** @type {string[]} */
5
5
  static styleAttrs: string[];
6
6
  /** @param {String} [name] */
7
- static reg(name?: string | undefined): void;
7
+ static reg(name?: string): void;
8
8
  constructor();
9
9
  /** @protected */
10
10
  protected requireCtxName: boolean;
11
11
  /** @type {import('./ActivityBlock.js').ActivityType} */
12
- activityType: import('./ActivityBlock.js').ActivityType;
12
+ activityType: import("./ActivityBlock.js").ActivityType;
13
13
  init$: {};
14
14
  /**
15
15
  * @param {String} str
@@ -41,13 +41,7 @@ export class Block extends BaseComponent<any> {
41
41
  * @param {Parameters<import('../blocks/UploadCtxProvider/EventEmitter.js').EventEmitter['emit']>[1]} [payload]
42
42
  * @param {Parameters<import('../blocks/UploadCtxProvider/EventEmitter.js').EventEmitter['emit']>[2]} [options]
43
43
  */
44
- emit(type: [type: "change" | "file-added" | "file-removed" | "file-upload-start" | "file-upload-progress" | "file-upload-success" | "file-upload-failed" | "file-url-changed" | "modal-open" | "modal-close" | "done-click" | "upload-click" | "activity-change" | "common-upload-start" | "common-upload-progress" | "common-upload-success" | "common-upload-failed" | "group-created", payload?: unknown, ({
45
- debounce?: number | boolean | undefined;
46
- } | undefined)?][0], payload?: [type: "change" | "file-added" | "file-removed" | "file-upload-start" | "file-upload-progress" | "file-upload-success" | "file-upload-failed" | "file-url-changed" | "modal-open" | "modal-close" | "done-click" | "upload-click" | "activity-change" | "common-upload-start" | "common-upload-progress" | "common-upload-success" | "common-upload-failed" | "group-created", payload?: unknown, ({
47
- debounce?: number | boolean | undefined;
48
- } | undefined)?][1], options?: [type: "change" | "file-added" | "file-removed" | "file-upload-start" | "file-upload-progress" | "file-upload-success" | "file-upload-failed" | "file-url-changed" | "modal-open" | "modal-close" | "done-click" | "upload-click" | "activity-change" | "common-upload-start" | "common-upload-progress" | "common-upload-success" | "common-upload-failed" | "group-created", payload?: unknown, ({
49
- debounce?: number | boolean | undefined;
50
- } | undefined)?][2]): void;
44
+ emit(type: Parameters<import("../blocks/UploadCtxProvider/EventEmitter.js").EventEmitter["emit"]>[0], payload?: Parameters<import("../blocks/UploadCtxProvider/EventEmitter.js").EventEmitter["emit"]>[1], options?: Parameters<import("../blocks/UploadCtxProvider/EventEmitter.js").EventEmitter["emit"]>[2]): void;
51
45
  /**
52
46
  * @param {(block: Block) => boolean} callback
53
47
  * @returns {Boolean}
@@ -58,6 +52,11 @@ export class Block extends BaseComponent<any> {
58
52
  * @param {any} newVal
59
53
  */
60
54
  setOrAddState(prop: string, newVal: any): void;
55
+ /**
56
+ * @returns {ModalManager}
57
+ * @public
58
+ */
59
+ public get modalManager(): ModalManager;
61
60
  /**
62
61
  * @private
63
62
  * @returns {LocaleManager | null}
@@ -97,5 +96,6 @@ export class Block extends BaseComponent<any> {
97
96
  }
98
97
  export { BaseComponent };
99
98
  import { BaseComponent } from '@symbiotejs/symbiote';
99
+ import { ModalManager } from './ModalManager.js';
100
100
  import { A11y } from './a11y.js';
101
101
  //# sourceMappingURL=Block.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Block.d.ts","sourceRoot":"","sources":["Block.js"],"names":[],"mappings":"AAmBA;IACE,4BAA4B;IAC5B,2BADW,MAAM,GAAG,IAAI,CACS;IAEjC,uBAAuB;IACvB,mBADW,MAAM,EAAE,CACI;IAsTvB,6BAA6B;IAC7B,4CAQC;IA3QD,cAMC;IAxDD,iBAAiB;IACjB,kCAAuB;IAEvB,wDAAwD;IACxD,cADW,OAAO,oBAAoB,EAAE,YAAY,CAChC;IAEpB,UAAmB;IAEnB;;;;OAIG;IACH;;eAcC;IAED;;;;;OAKG;IACH,kBAIC;IAED;;;;OAIG;IACH,wBAJW,MAAM,YACN,MAAM,IAAI,QAKpB;IAIC,uDAAuD;IACvD,mBADW,IAAI,MAAM,EAAE,IAAI;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAC,CACjB;IAKpC;;;;OAIG;IACH,WAJW;;qBAAuF,CAAC,CAAC,YACzF;;qBAAuF,CAAC,CAAC,YACzF;;qBAAuF,CAAC,CAAC,QASnG;IAED;;;OAGG;IACH,gCAHmB,KAAK,KAAK,OAAO,WAUnC;IAED;;;OAGG;IACH,oCAFW,GAAG,QASb;IAkED;;;OAGG;IACH,4BAEC;IAED;;;OAGG;IACH,kCAEC;IAED,yBAAyB;IACzB,iCAEC;IAwBD;;;;OAIG;IACH,qCAIC;IAED;;;;OAIG;IACH,iCAHa,eAAe,CA6B3B;IAED,iDAAiD;IACjD,yCA8BC;IA3BG,eAAe;IACf,mBAuBE;IAKN;;;;OAIG;IACH,6HAFwD,IAAI,QAQ3D;IAED,8BAA8B;IAC9B,oBADY,OAAO,EAAE,QAWpB;CAYF;;8BAvVmC,sBAAsB;qBAarC,WAAW"}
1
+ {"version":3,"file":"Block.d.ts","sourceRoot":"","sources":["Block.js"],"names":[],"mappings":"AAoBA;IACE,4BAA4B;IAC5B,2BADW,MAAM,GAAG,IAAI,CACS;IAEjC,uBAAuB;IACvB,mBADW,MAAM,EAAE,CACI;IAoUvB,6BAA6B;IAC7B,gCAQC;IAzRD,cAMC;IAxDD,iBAAiB;IACjB,kCAAuB;IAEvB,wDAAwD;IACxD,cADW,OAAO,oBAAoB,EAAE,YAAY,CAChC;IAEpB,UAAmB;IAEnB;;;;OAIG;IACH,8BAHW;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,UAiB5C;IAED;;;;;OAKG;IACH,kBAIC;IAED;;;;OAIG;IACH,wBAJW,MAAM,YACN,MAAM,IAAI,QAKpB;IAIC,uDAAuD;IACvD,mBADW,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAC,CACjB;IAKpC;;;;OAIG;IACH,WAJW,UAAU,CAAC,OAAO,6CAA6C,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YACzF,UAAU,CAAC,OAAO,6CAA6C,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YACzF,UAAU,CAAC,OAAO,6CAA6C,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QASnG;IAED;;;OAGG;IACH,wBAHW,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,WAUnC;IAED;;;OAGG;IACH,oCAFW,GAAG,QASb;IAsED;;;OAGG;IACH,2BAHa,YAAY,CAKxB;IAED;;;OAGG;IACH,4BAEC;IAED;;;OAGG;IACH,sBAHa,IAAI,GAAG,IAAI,CAKvB;IAED,yBAAyB;IACzB,sBADW,GAAG,CAAC,KAAK,CAAC,CAGpB;IAwBD;;;;OAIG;IACH,qCAMC;IAED;;;;OAIG;IACH,iCAHa,OAAO,QAAQ,CA6B3B;IAED,iDAAiD;IACjD,WADc,OAAO,UAAU,EAAE,UAAU,CA+B1C;IA3BG,eAAe;IACf,mBAuBE;IAKN;;;;OAIG;IACH,eAJmD,CAAC,SAAvC,MAAO,OAAO,UAAU,EAAE,UAAW,OACvC,CAAC,YACD,CAAC,KAAK,EAAE,OAAO,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,QAQ3D;IAED,8BAA8B;IAC9B,oBADY,OAAO,EAAE,QAWpB;CAYF;;8BAtWmC,sBAAsB;6BAc7B,mBAAmB;qBAD3B,WAAW"}
package/abstract/Block.js CHANGED
@@ -13,6 +13,7 @@ import { LocaleManager, localeStateKey } from './LocaleManager.js';
13
13
  import { l10nProcessor } from './l10nProcessor.js';
14
14
  import { sharedConfigKey } from './sharedConfigKey.js';
15
15
  import { A11y } from './a11y.js';
16
+ import { ModalManager } from './ModalManager.js';
16
17
 
17
18
  const TAG_PREFIX = 'uc-';
18
19
 
@@ -180,12 +181,24 @@ export class Block extends BaseComponent {
180
181
  this.add('*a11y', new A11y());
181
182
  }
182
183
 
184
+ if (!this.has('*modalManager')) {
185
+ this.add('*modalManager', new ModalManager(this));
186
+ }
187
+
183
188
  this.sub(localeStateKey('locale-id'), (localeId) => {
184
189
  const direction = getLocaleDirection(localeId);
185
190
  this.style.direction = direction === 'ltr' ? '' : direction;
186
191
  });
187
192
  }
188
193
 
194
+ /**
195
+ * @returns {ModalManager}
196
+ * @public
197
+ */
198
+ get modalManager() {
199
+ return this.has('*modalManager') && this.$['*modalManager'];
200
+ }
201
+
189
202
  /**
190
203
  * @private
191
204
  * @returns {LocaleManager | null}
@@ -238,6 +251,8 @@ export class Block extends BaseComponent {
238
251
  Data.deleteCtx(this.ctxName);
239
252
 
240
253
  this.localeManager?.destroy();
254
+
255
+ this.modalManager && this.modalManager?.destroy();
241
256
  }
242
257
 
243
258
  /**
package/abstract/CTX.d.ts CHANGED
@@ -1,25 +1,25 @@
1
1
  export function blockCtx(): {};
2
- export function activityBlockCtx(fnCtx: import('./Block').Block): {
2
+ export function activityBlockCtx(fnCtx: import("./Block").Block): {
3
3
  '*currentActivity': null;
4
4
  '*currentActivityParams': {};
5
5
  '*history': never[];
6
6
  '*historyBack': null;
7
7
  '*closeModal': () => void;
8
8
  };
9
- export function uploaderBlockCtx(fnCtx: import('./Block').Block): {
9
+ export function uploaderBlockCtx(fnCtx: import("./Block").Block): {
10
10
  '*commonProgress': number;
11
11
  '*uploadList': never[];
12
12
  '*uploadQueue': Queue;
13
13
  /** @type {ReturnType<import('../types').OutputErrorCollection>[]} */
14
- '*collectionErrors': ReturnType<import('../types').OutputErrorCollection>[];
14
+ '*collectionErrors': ReturnType<import("../types").OutputErrorCollection>[];
15
15
  /** @type {import('../types').OutputCollectionState | null} */
16
- '*collectionState': import('../types').OutputCollectionState | null;
16
+ '*collectionState': import("../types").OutputCollectionState | null;
17
17
  /** @type {import('@uploadcare/upload-client').UploadcareGroup | null} */
18
- '*groupInfo': import('@uploadcare/upload-client').UploadcareGroup | null;
18
+ '*groupInfo': import("@uploadcare/upload-client").UploadcareGroup | null;
19
19
  /** @type {Set<string>} */
20
20
  '*uploadTrigger': Set<string>;
21
21
  /** @type {import('./SecureUploadsManager.js').SecureUploadsManager | null} */
22
- '*secureUploadsManager': import('./SecureUploadsManager.js').SecureUploadsManager | null;
22
+ '*secureUploadsManager': import("./SecureUploadsManager.js").SecureUploadsManager | null;
23
23
  '*currentActivity': null;
24
24
  '*currentActivityParams': {};
25
25
  '*history': never[];
@@ -1 +1 @@
1
- {"version":3,"file":"CTX.d.ts","sourceRoot":"","sources":["CTX.js"],"names":[],"mappings":"AAGO,+BAA2B;AAG3B,wCADK,OAAO,SAAS,EAAE,KAAK;;;;;;EAajC;AAGK,wCADK,OAAO,SAAS,EAAE,KAAK;;;;IAMjC,qEAAqE;yBAA1D,WAAW,OAAO,UAAU,EAAE,qBAAqB,CAAC,EAAE;IAEjE,8DAA8D;wBAAnD,OAAO,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAE1D,yEAAyE;kBAA9D,OAAO,2BAA2B,EAAE,eAAe,GAAG,IAAI;IAErE,0BAA0B;sBAAf,IAAI,MAAM,CAAC;IAEtB,8EAA8E;6BAAnE,OAAO,2BAA2B,EAAE,oBAAoB,GAAG,IAAI;;;;;;EAE1E;sBAnCoB,2BAA2B"}
1
+ {"version":3,"file":"CTX.d.ts","sourceRoot":"","sources":["CTX.js"],"names":[],"mappings":"AAGO,+BAA2B;AAG3B,wCADK,OAAO,SAAS,EAAE,KAAK;;;;;;EAejC;AAGK,wCADK,OAAO,SAAS,EAAE,KAAK;;;;IAMjC,qEAAqE;yBAA1D,UAAU,CAAC,OAAO,UAAU,EAAE,qBAAqB,CAAC,EAAE;IAEjE,8DAA8D;wBAAnD,OAAO,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAE1D,yEAAyE;kBAA9D,OAAO,2BAA2B,EAAE,eAAe,GAAG,IAAI;IAErE,0BAA0B;sBAAf,GAAG,CAAC,MAAM,CAAC;IAEtB,8EAA8E;6BAAnE,OAAO,2BAA2B,EAAE,oBAAoB,GAAG,IAAI;;;;;;EAE1E;sBArCoB,2BAA2B"}
package/abstract/CTX.js CHANGED
@@ -8,12 +8,14 @@ export const activityBlockCtx = (fnCtx) => ({
8
8
  ...blockCtx(),
9
9
  '*currentActivity': null,
10
10
  '*currentActivityParams': {},
11
+
11
12
  '*history': [],
12
13
  '*historyBack': null,
13
14
  '*closeModal': () => {
15
+ fnCtx.modalManager.closeAll();
16
+
14
17
  fnCtx.set$({
15
18
  '*currentActivity': null,
16
- '*modalActive': false,
17
19
  });
18
20
  },
19
21
  });
@@ -2,7 +2,7 @@ export function localeStateKey(key: string): string;
2
2
  export const DEFAULT_LOCALE: "en";
3
3
  export class LocaleManager {
4
4
  /** @param {import('./Block.js').Block} blockInstance */
5
- constructor(blockInstance: import('./Block.js').Block);
5
+ constructor(blockInstance: import("./Block.js").Block);
6
6
  /**
7
7
  * @private
8
8
  * @type {import('./Block.js').Block | null}
@@ -30,9 +30,9 @@ export class LocaleManager {
30
30
  * @param {string} key
31
31
  * @param {() => void} resolver
32
32
  */
33
- bindL10n(block: import('./Block.js').Block, key: string, resolver: () => void): void;
33
+ bindL10n(block: import("./Block.js").Block, key: string, resolver: () => void): void;
34
34
  /** @param {import('./Block.js').Block} block */
35
- destroyL10nBindings(block: import('./Block.js').Block): void;
35
+ destroyL10nBindings(block: import("./Block.js").Block): void;
36
36
  destroy(): void;
37
37
  }
38
38
  //# sourceMappingURL=LocaleManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocaleManager.d.ts","sourceRoot":"","sources":["LocaleManager.js"],"names":[],"mappings":"AAMO,oCADK,MAAM,UACmC;AACrD,kCAAmC;AAEnC;IAsBE,wDAAwD;IACxD,2BADY,OAAO,YAAY,EAAE,KAAK,EA6CrC;IAlED;;;OAGG;IACH,uBAAsB;IAEtB,eAAe;IACf,oBAAiB;IAEjB;;;OAGG;IACH,mBAAuB;IAEvB;;;OAGG;IACH,qBAAyB;IAiDzB;;;OAGG;IACH,yBAHW,MAAM,IAAI,GACR,MAAM,IAAI,CAQtB;IAED;;;;OAIG;IACH,gBAJW,OAAO,YAAY,EAAE,KAAK,OAC1B,MAAM,YACN,MAAM,IAAI,QAgBpB;IAED,gDAAgD;IAChD,2BADY,OAAO,YAAY,EAAE,KAAK,QAUrC;IAED,gBAEC;CACF"}
1
+ {"version":3,"file":"LocaleManager.d.ts","sourceRoot":"","sources":["LocaleManager.js"],"names":[],"mappings":"AAMO,oCADK,MAAM,UACmC;AACrD,6BAA8B,IAAI,CAAC;AAEnC;IAsBE,wDAAwD;IACxD,2BADY,OAAO,YAAY,EAAE,KAAK,EA6CrC;IAlED;;;OAGG;IACH,uBAAsB;IAEtB,eAAe;IACf,oBAAiB;IAEjB;;;OAGG;IACH,mBAAuB;IAEvB;;;OAGG;IACH,qBAAyB;IAiDzB;;;OAGG;IACH,yBAHW,MAAM,IAAI,GACR,MAAM,IAAI,CAQtB;IAED;;;;OAIG;IACH,gBAJW,OAAO,YAAY,EAAE,KAAK,OAC1B,MAAM,YACN,MAAM,IAAI,QAgBpB;IAED,gDAAgD;IAChD,2BADY,OAAO,YAAY,EAAE,KAAK,QAUrC;IAED,gBAEC;CACF"}
@@ -0,0 +1,124 @@
1
+ export const ModalEvents: Readonly<{
2
+ ADD: "modal:add";
3
+ DELETE: "modal:delete";
4
+ OPEN: "modal:open";
5
+ CLOSE: "modal:close";
6
+ CLOSE_ALL: "modal:closeAll";
7
+ DESTROY: "modal:destroy";
8
+ }>;
9
+ /** @typedef {string} ModalId */
10
+ /** @typedef {import('../blocks/Modal/Modal.js').Modal} ModalNode */
11
+ /** @typedef {(data: { id: ModalId; modal?: ModalNode }) => void} ModalCb */
12
+ /** @typedef {(typeof ModalEvents)[keyof ModalEvents]} ModalEventType */
13
+ export class ModalManager {
14
+ /** @param {import('./Block.js').Block} block */
15
+ constructor(block: import("./Block.js").Block);
16
+ /**
17
+ * @private
18
+ * @type {Map<ModalId, ModalNode>}
19
+ */
20
+ private _modals;
21
+ /**
22
+ * @private
23
+ * @type {Set<ModalId>}
24
+ */
25
+ private _activeModals;
26
+ /**
27
+ * @private
28
+ * @type {Map<ModalEventType, Set<ModalCb>>}
29
+ */
30
+ private _subscribers;
31
+ _block: import("./Block.js").Block;
32
+ /**
33
+ * @private
34
+ * @param {unknown[]} args
35
+ */
36
+ private _debugPrint;
37
+ /**
38
+ * Register a modal with the manager
39
+ *
40
+ * @param {ModalId} id - Unique identifier for the modal
41
+ * @param {ModalNode} modal - Modal component instance
42
+ */
43
+ registerModal(id: ModalId, modal: ModalNode): void;
44
+ /** @param {ModalId} id - Unique identifier for the modal */
45
+ deleteModal(id: ModalId): boolean;
46
+ /**
47
+ * Open a modal by its ID
48
+ *
49
+ * @param {ModalId} id - The ID of the modal to open
50
+ * @returns {boolean} - Success status
51
+ */
52
+ open(id: ModalId): boolean;
53
+ /**
54
+ * Close a specific modal by ID
55
+ *
56
+ * @param {ModalId} id - The ID of the modal to close
57
+ * @returns {boolean} - Success status
58
+ */
59
+ close(id: ModalId): boolean;
60
+ /**
61
+ * Toggle a modal - open if closed, close if open
62
+ *
63
+ * @param {ModalId} id - The ID of the modal to toggle
64
+ * @returns {boolean} - Success status
65
+ */
66
+ toggle(id: ModalId): boolean;
67
+ /**
68
+ * Check if any modals are currently active/open
69
+ *
70
+ * @returns {boolean} - True if there are any active modals
71
+ */
72
+ get hasActiveModals(): boolean;
73
+ /**
74
+ * Close the most recently opened modal and return to the previous one
75
+ *
76
+ * @returns {boolean} - Success status
77
+ */
78
+ back(): boolean;
79
+ /**
80
+ * Close all open modals
81
+ *
82
+ * @returns {number} - Number of modals closed
83
+ */
84
+ closeAll(): number;
85
+ /**
86
+ * Subscribe to modal events
87
+ *
88
+ * @param {ModalEventType} event
89
+ * @param {ModalCb} callback
90
+ * @returns {() => void}
91
+ */
92
+ subscribe(event: ModalEventType, callback: ModalCb): () => void;
93
+ /**
94
+ * Unsubscribe from modal events
95
+ *
96
+ * @param {ModalEventType} event
97
+ * @param {ModalCb | undefined} callback
98
+ */
99
+ unsubscribe(event: ModalEventType, callback: ModalCb | undefined): void;
100
+ /**
101
+ * Notify all subscribers of a modal event
102
+ *
103
+ * @private
104
+ * @param {ModalEventType} event - Event name
105
+ * @param {{
106
+ * id?: ModalId | ModalId[];
107
+ * modal?: ModalNode | ModalNode[];
108
+ * }
109
+ * | {
110
+ * modalIds: ModalId[];
111
+ * }} data
112
+ */
113
+ private _notify;
114
+ /** Destroy the modal manager, clean up resources */
115
+ destroy(): void;
116
+ }
117
+ export type ModalId = string;
118
+ export type ModalNode = import("../blocks/Modal/Modal.js").Modal;
119
+ export type ModalCb = (data: {
120
+ id: ModalId;
121
+ modal?: ModalNode;
122
+ }) => void;
123
+ export type ModalEventType = (typeof ModalEvents)["ADD" | "DELETE" | "OPEN" | "CLOSE" | "CLOSE_ALL" | "DESTROY"];
124
+ //# sourceMappingURL=ModalManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalManager.d.ts","sourceRoot":"","sources":["ModalManager.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gCAAgC;AAEhC,oEAAoE;AAEpE,4EAA4E;AAE5E,wEAAwE;AAExE;IAmBE,gDAAgD;IAChD,mBADY,OAAO,YAAY,EAAE,KAAK,EAGrC;IArBD;;;OAGG;IACH,gBAAoB;IAEpB;;;OAGG;IACH,sBAA0B;IAE1B;;;OAGG;IACH,qBAAyB;IAIvB,mCAAmB;IAGrB;;;OAGG;IACH,oBAEC;IAED;;;;;OAKG;IACH,kBAHW,OAAO,SACP,SAAS,QAKnB;IAED,4DAA4D;IAC5D,gBADY,OAAO,WASlB;IAED;;;;;OAKG;IACH,SAHW,OAAO,GACL,OAAO,CAanB;IAED;;;;;OAKG;IACH,UAHW,OAAO,GACL,OAAO,CAanB;IAED;;;;;OAKG;IACH,WAHW,OAAO,GACL,OAAO,CAanB;IAED;;;;OAIG;IACH,uBAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,QAFa,OAAO,CAWnB;IAED;;;;OAIG;IACH,YAFa,MAAM,CAQlB;IAED;;;;;;OAMG;IACH,iBAJW,cAAc,YACd,OAAO,GACL,MAAM,IAAI,CAStB;IAED;;;;;OAKG;IACH,mBAHW,cAAc,YACd,OAAO,GAAG,SAAS,QAM7B;IAED;;;;;;;;;;;;OAYG;IACH,gBAUC;IAED,oDAAoD;IACpD,gBAKC;CACF;sBAzNa,MAAM;wBAEN,OAAO,0BAA0B,EAAE,KAAK;sBAExC,CAAC,IAAI,EAAE;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,KAAK,IAAI;6BAElD,CAAC,OAAO,WAAW,gEAAoB"}
@@ -0,0 +1,227 @@
1
+ export const ModalEvents = Object.freeze({
2
+ ADD: 'modal:add',
3
+ DELETE: 'modal:delete',
4
+ OPEN: 'modal:open',
5
+ CLOSE: 'modal:close',
6
+ CLOSE_ALL: 'modal:closeAll',
7
+ DESTROY: 'modal:destroy',
8
+ });
9
+
10
+ /** @typedef {string} ModalId */
11
+
12
+ /** @typedef {import('../blocks/Modal/Modal.js').Modal} ModalNode */
13
+
14
+ /** @typedef {(data: { id: ModalId; modal?: ModalNode }) => void} ModalCb */
15
+
16
+ /** @typedef {(typeof ModalEvents)[keyof ModalEvents]} ModalEventType */
17
+
18
+ export class ModalManager {
19
+ /**
20
+ * @private
21
+ * @type {Map<ModalId, ModalNode>}
22
+ */
23
+ _modals = new Map();
24
+
25
+ /**
26
+ * @private
27
+ * @type {Set<ModalId>}
28
+ */
29
+ _activeModals = new Set();
30
+
31
+ /**
32
+ * @private
33
+ * @type {Map<ModalEventType, Set<ModalCb>>}
34
+ */
35
+ _subscribers = new Map();
36
+
37
+ /** @param {import('./Block.js').Block} block */
38
+ constructor(block) {
39
+ this._block = block;
40
+ }
41
+
42
+ /**
43
+ * @private
44
+ * @param {unknown[]} args
45
+ */
46
+ _debugPrint(...args) {
47
+ this._block.debugPrint('[modal-manager]', ...args);
48
+ }
49
+
50
+ /**
51
+ * Register a modal with the manager
52
+ *
53
+ * @param {ModalId} id - Unique identifier for the modal
54
+ * @param {ModalNode} modal - Modal component instance
55
+ */
56
+ registerModal(id, modal) {
57
+ this._modals.set(id, modal);
58
+ this._notify(ModalEvents.ADD, { id, modal });
59
+ }
60
+
61
+ /** @param {ModalId} id - Unique identifier for the modal */
62
+ deleteModal(id) {
63
+ if (!this._modals.has(id)) return false;
64
+
65
+ const modal = this._modals.get(id);
66
+ this._modals.delete(id);
67
+ this._activeModals.delete(id);
68
+ this._notify(ModalEvents.DELETE, { id, modal });
69
+ return true;
70
+ }
71
+
72
+ /**
73
+ * Open a modal by its ID
74
+ *
75
+ * @param {ModalId} id - The ID of the modal to open
76
+ * @returns {boolean} - Success status
77
+ */
78
+ open(id) {
79
+ if (!this._modals.has(id)) {
80
+ this._debugPrint(`Modal with ID "${id}" not found`);
81
+ return false;
82
+ }
83
+
84
+ const modal = this._modals.get(id);
85
+
86
+ this._activeModals.add(id);
87
+ this._notify(ModalEvents.OPEN, { modal, id });
88
+ return true;
89
+ }
90
+
91
+ /**
92
+ * Close a specific modal by ID
93
+ *
94
+ * @param {ModalId} id - The ID of the modal to close
95
+ * @returns {boolean} - Success status
96
+ */
97
+ close(id) {
98
+ if (!this._modals.has(id) || !this._activeModals.has(id)) {
99
+ this._debugPrint(`Modal with ID "${id}" not found or not active`);
100
+ return false;
101
+ }
102
+
103
+ const modal = this._modals.get(id);
104
+
105
+ this._activeModals.delete(id);
106
+ this._notify(ModalEvents.CLOSE, { id, modal });
107
+ return true;
108
+ }
109
+
110
+ /**
111
+ * Toggle a modal - open if closed, close if open
112
+ *
113
+ * @param {ModalId} id - The ID of the modal to toggle
114
+ * @returns {boolean} - Success status
115
+ */
116
+ toggle(id) {
117
+ if (!this._modals.has(id)) {
118
+ this._debugPrint(`Modal with ID "${id}" not found`);
119
+ return false;
120
+ }
121
+
122
+ if (this._activeModals.has(id)) {
123
+ return this.close(id);
124
+ } else {
125
+ return this.open(id);
126
+ }
127
+ }
128
+
129
+ /**
130
+ * Check if any modals are currently active/open
131
+ *
132
+ * @returns {boolean} - True if there are any active modals
133
+ */
134
+ get hasActiveModals() {
135
+ return this._activeModals.size > 0;
136
+ }
137
+
138
+ /**
139
+ * Close the most recently opened modal and return to the previous one
140
+ *
141
+ * @returns {boolean} - Success status
142
+ */
143
+ back() {
144
+ if (this._activeModals.size === 0) {
145
+ this._debugPrint('No active modals to go back from');
146
+ return false;
147
+ }
148
+
149
+ // Get the last opened modal
150
+ const lastModalId = Array.from(this._activeModals).pop();
151
+ return this.close(/** @type {string} */ (lastModalId));
152
+ }
153
+
154
+ /**
155
+ * Close all open modals
156
+ *
157
+ * @returns {number} - Number of modals closed
158
+ */
159
+ closeAll() {
160
+ const count = this._activeModals.size;
161
+
162
+ this._activeModals.clear();
163
+ this._notify(ModalEvents.CLOSE_ALL, {});
164
+ return count;
165
+ }
166
+
167
+ /**
168
+ * Subscribe to modal events
169
+ *
170
+ * @param {ModalEventType} event
171
+ * @param {ModalCb} callback
172
+ * @returns {() => void}
173
+ */
174
+ subscribe(event, callback) {
175
+ if (!this._subscribers.has(event)) {
176
+ this._subscribers.set(event, new Set());
177
+ }
178
+ this._subscribers.get(event).add(callback);
179
+
180
+ return () => this.unsubscribe(event, callback);
181
+ }
182
+
183
+ /**
184
+ * Unsubscribe from modal events
185
+ *
186
+ * @param {ModalEventType} event
187
+ * @param {ModalCb | undefined} callback
188
+ */
189
+ unsubscribe(event, callback) {
190
+ if (this._subscribers.has(event)) {
191
+ this._subscribers.get(event).delete(callback);
192
+ }
193
+ }
194
+
195
+ /**
196
+ * Notify all subscribers of a modal event
197
+ *
198
+ * @private
199
+ * @param {ModalEventType} event - Event name
200
+ * @param {{
201
+ * id?: ModalId | ModalId[];
202
+ * modal?: ModalNode | ModalNode[];
203
+ * }
204
+ * | {
205
+ * modalIds: ModalId[];
206
+ * }} data
207
+ */
208
+ _notify(event, data) {
209
+ if (this._subscribers.has(event)) {
210
+ for (const callback of this._subscribers.get(event)) {
211
+ try {
212
+ callback(data);
213
+ } catch (error) {
214
+ this._debugPrint('Error in modal subscriber:', error);
215
+ }
216
+ }
217
+ }
218
+ }
219
+
220
+ /** Destroy the modal manager, clean up resources */
221
+ destroy() {
222
+ this.closeAll();
223
+ this._modals.clear();
224
+ this._subscribers.clear();
225
+ this._notify(ModalEvents.DESTROY, {});
226
+ }
227
+ }
@@ -1,6 +1,6 @@
1
1
  export class SecureUploadsManager {
2
2
  /** @param {import('./UploaderBlock.js').UploaderBlock} block */
3
- constructor(block: import('./UploaderBlock.js').UploaderBlock);
3
+ constructor(block: import("./UploaderBlock.js").UploaderBlock);
4
4
  /**
5
5
  * @private
6
6
  * @type {import('./UploaderBlock.js').UploaderBlock}
@@ -17,6 +17,6 @@ export class SecureUploadsManager {
17
17
  */
18
18
  private _debugPrint;
19
19
  /** @returns {Promise<import('../types').SecureUploadsSignatureAndExpire | null>} */
20
- getSecureToken(): Promise<import('../types').SecureUploadsSignatureAndExpire | null>;
20
+ getSecureToken(): Promise<import("../types").SecureUploadsSignatureAndExpire | null>;
21
21
  }
22
22
  //# sourceMappingURL=SecureUploadsManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SecureUploadsManager.d.ts","sourceRoot":"","sources":["SecureUploadsManager.js"],"names":[],"mappings":"AAIA;IAYE,gEAAgE;IAChE,mBADY,OAAO,oBAAoB,EAAE,aAAa,EAGrD;IAdD;;;OAGG;IACH,eAAO;IACP;;;OAGG;IACH,qBAAoB;IAOpB;;;OAGG;IACH,oBAEC;IAED,oFAAoF;IACpF,kBADc,QAAQ,OAAO,UAAU,EAAE,+BAA+B,GAAG,IAAI,CAAC,CAwD/E;CACF"}
1
+ {"version":3,"file":"SecureUploadsManager.d.ts","sourceRoot":"","sources":["SecureUploadsManager.js"],"names":[],"mappings":"AAIA;IAYE,gEAAgE;IAChE,mBADY,OAAO,oBAAoB,EAAE,aAAa,EAGrD;IAdD;;;OAGG;IACH,eAAO;IACP;;;OAGG;IACH,qBAAoB;IAOpB;;;OAGG;IACH,oBAEC;IAED,oFAAoF;IACpF,kBADc,OAAO,CAAC,OAAO,UAAU,EAAE,+BAA+B,GAAG,IAAI,CAAC,CAwD/E;CACF"}