@uploadcare/file-uploader 1.2.0 → 1.3.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 (214) hide show
  1. package/README.md +4 -4
  2. package/abstract/ActivityBlock.d.ts +1 -1
  3. package/abstract/ActivityBlock.d.ts.map +1 -1
  4. package/abstract/ActivityBlock.js +2 -0
  5. package/abstract/Block.d.ts +4 -11
  6. package/abstract/Block.d.ts.map +1 -1
  7. package/abstract/Block.js +37 -18
  8. package/abstract/CTX.d.ts +7 -7
  9. package/abstract/CTX.d.ts.map +1 -1
  10. package/abstract/CTX.js +1 -1
  11. package/abstract/LocaleManager.d.ts +3 -3
  12. package/abstract/SecureUploadsManager.d.ts +2 -2
  13. package/abstract/SecureUploadsManager.d.ts.map +1 -1
  14. package/abstract/SolutionBlock.d.ts +2 -2
  15. package/abstract/SolutionBlock.d.ts.map +1 -1
  16. package/abstract/TypedCollection.d.ts +1 -1
  17. package/abstract/TypedCollection.d.ts.map +1 -1
  18. package/abstract/TypedCollection.js +4 -4
  19. package/abstract/TypedData.d.ts +2 -2
  20. package/abstract/TypedData.d.ts.map +1 -1
  21. package/abstract/TypedData.js +4 -4
  22. package/abstract/UploaderBlock.d.ts +5 -5
  23. package/abstract/UploaderBlock.d.ts.map +1 -1
  24. package/abstract/UploaderBlock.js +5 -5
  25. package/abstract/UploaderPublicApi.d.ts +22 -21
  26. package/abstract/UploaderPublicApi.d.ts.map +1 -1
  27. package/abstract/UploaderPublicApi.js +3 -3
  28. package/abstract/ValidationManager.d.ts +3 -3
  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/bindCompatibilityFallbackProcessor.d.ts +3 -0
  33. package/abstract/bindCompatibilityFallbackProcessor.d.ts.map +1 -0
  34. package/abstract/bindCompatibilityFallbackProcessor.js +16 -0
  35. package/abstract/buildOutputCollectionState.d.ts +1 -1
  36. package/abstract/buildOutputCollectionState.d.ts.map +1 -1
  37. package/abstract/defineComponents.d.ts.map +1 -1
  38. package/abstract/defineComponents.js +5 -0
  39. package/abstract/l10nProcessor.d.ts.map +1 -1
  40. package/abstract/l10nProcessor.js +3 -3
  41. package/abstract/loadFileUploaderFrom.d.ts.map +1 -1
  42. package/abstract/localeRegistry.d.ts.map +1 -1
  43. package/abstract/sharedConfigKey.d.ts.map +1 -1
  44. package/abstract/uploadEntrySchema.d.ts +2 -2
  45. package/abstract/uploadEntrySchema.d.ts.map +1 -1
  46. package/abstract/uploadEntrySchema.js +1 -1
  47. package/blocks/CameraSource/CameraSource.d.ts.map +1 -1
  48. package/blocks/CameraSource/CameraSource.js +12 -11
  49. package/blocks/CloudImageEditor/src/CloudImageEditorBlock.d.ts.map +1 -1
  50. package/blocks/CloudImageEditor/src/CropFrame.d.ts +11 -11
  51. package/blocks/CloudImageEditor/src/CropFrame.d.ts.map +1 -1
  52. package/blocks/CloudImageEditor/src/CropFrame.js +2 -1
  53. package/blocks/CloudImageEditor/src/EditorButtonControl.d.ts.map +1 -1
  54. package/blocks/CloudImageEditor/src/EditorButtonControl.js +3 -2
  55. package/blocks/CloudImageEditor/src/EditorCropButtonControl.js +1 -1
  56. package/blocks/CloudImageEditor/src/EditorFilterControl.d.ts.map +1 -1
  57. package/blocks/CloudImageEditor/src/EditorFilterControl.js +4 -8
  58. package/blocks/CloudImageEditor/src/EditorImageCropper.d.ts +3 -3
  59. package/blocks/CloudImageEditor/src/EditorImageCropper.js +2 -2
  60. package/blocks/CloudImageEditor/src/EditorImageFader.d.ts +1 -1
  61. package/blocks/CloudImageEditor/src/EditorImageFader.d.ts.map +1 -1
  62. package/blocks/CloudImageEditor/src/EditorOperationControl.js +1 -1
  63. package/blocks/CloudImageEditor/src/EditorScroller.d.ts.map +1 -1
  64. package/blocks/CloudImageEditor/src/EditorScroller.js +2 -1
  65. package/blocks/CloudImageEditor/src/EditorSlider.d.ts.map +1 -1
  66. package/blocks/CloudImageEditor/src/EditorSlider.js +3 -2
  67. package/blocks/CloudImageEditor/src/EditorToolbar.d.ts +1 -1
  68. package/blocks/CloudImageEditor/src/EditorToolbar.d.ts.map +1 -1
  69. package/blocks/CloudImageEditor/src/EditorToolbar.js +15 -14
  70. package/blocks/CloudImageEditor/src/crop-utils.d.ts +14 -14
  71. package/blocks/CloudImageEditor/src/crop-utils.d.ts.map +1 -1
  72. package/blocks/CloudImageEditor/src/css/common.css +2 -2
  73. package/blocks/CloudImageEditor/src/elements/button/BtnUi.d.ts.map +1 -1
  74. package/blocks/CloudImageEditor/src/elements/button/BtnUi.js +5 -5
  75. package/blocks/CloudImageEditor/src/elements/line-loader/LineLoaderUi.d.ts.map +1 -1
  76. package/blocks/CloudImageEditor/src/elements/line-loader/LineLoaderUi.js +2 -1
  77. package/blocks/CloudImageEditor/src/elements/presence-toggle/PresenceToggle.d.ts.map +1 -1
  78. package/blocks/CloudImageEditor/src/elements/presence-toggle/PresenceToggle.js +3 -2
  79. package/blocks/CloudImageEditor/src/elements/slider/SliderUi.d.ts.map +1 -1
  80. package/blocks/CloudImageEditor/src/elements/slider/SliderUi.js +3 -2
  81. package/blocks/CloudImageEditor/src/lib/parseCropPreset.d.ts +1 -1
  82. package/blocks/CloudImageEditor/src/lib/transformationUtils.d.ts +3 -3
  83. package/blocks/CloudImageEditor/src/lib/transformationUtils.d.ts.map +1 -1
  84. package/blocks/CloudImageEditor/src/state.d.ts +4 -4
  85. package/blocks/CloudImageEditor/src/template.d.ts.map +1 -1
  86. package/blocks/CloudImageEditor/src/template.js +5 -4
  87. package/blocks/CloudImageEditor/src/types.d.ts +2 -2
  88. package/blocks/CloudImageEditor/src/types.d.ts.map +1 -1
  89. package/blocks/CloudImageEditorActivity/CloudImageEditorActivity.d.ts +3 -3
  90. package/blocks/CloudImageEditorActivity/CloudImageEditorActivity.d.ts.map +1 -1
  91. package/blocks/CloudImageEditorActivity/CloudImageEditorActivity.js +2 -1
  92. package/blocks/Config/Config.d.ts +3 -11
  93. package/blocks/Config/Config.d.ts.map +1 -1
  94. package/blocks/Config/initialConfig.d.ts +1 -1
  95. package/blocks/Config/normalizeConfigValue.d.ts.map +1 -1
  96. package/blocks/Copyright/Copyright.d.ts.map +1 -1
  97. package/blocks/Copyright/Copyright.js +2 -1
  98. package/blocks/DropArea/DropArea.d.ts +2 -2
  99. package/blocks/DropArea/DropArea.d.ts.map +1 -1
  100. package/blocks/DropArea/DropArea.js +5 -5
  101. package/blocks/DropArea/addDropzone.d.ts.map +1 -1
  102. package/blocks/DropArea/getDropItems.d.ts +2 -2
  103. package/blocks/DropArea/getDropItems.d.ts.map +1 -1
  104. package/blocks/ExternalSource/ExternalSource.d.ts +5 -5
  105. package/blocks/ExternalSource/ExternalSource.d.ts.map +1 -1
  106. package/blocks/ExternalSource/ExternalSource.js +9 -9
  107. package/blocks/ExternalSource/buildStyles.js +2 -2
  108. package/blocks/ExternalSource/query-string.d.ts.map +1 -1
  109. package/blocks/FileItem/FileItem.d.ts +3 -3
  110. package/blocks/FileItem/FileItem.d.ts.map +1 -1
  111. package/blocks/FileItem/FileItem.js +12 -11
  112. package/blocks/Icon/Icon.d.ts +0 -1
  113. package/blocks/Icon/Icon.d.ts.map +1 -1
  114. package/blocks/Icon/Icon.js +3 -5
  115. package/blocks/Img/ImgBase.js +9 -9
  116. package/blocks/Img/ImgConfig.d.ts +2 -2
  117. package/blocks/Img/ImgConfig.d.ts.map +1 -1
  118. package/blocks/Img/ImgConfig.js +3 -3
  119. package/blocks/Img/utils/parseObjectToString.js +1 -1
  120. package/blocks/Modal/Modal.d.ts.map +1 -1
  121. package/blocks/Modal/Modal.js +2 -1
  122. package/blocks/ProgressBar/ProgressBar.d.ts.map +1 -1
  123. package/blocks/ProgressBar/ProgressBar.js +2 -1
  124. package/blocks/ProgressBarCommon/ProgressBarCommon.d.ts.map +1 -1
  125. package/blocks/ProgressBarCommon/ProgressBarCommon.js +2 -1
  126. package/blocks/Select/Select.d.ts.map +1 -1
  127. package/blocks/Select/Select.js +14 -9
  128. package/blocks/SimpleBtn/SimpleBtn.d.ts +2 -2
  129. package/blocks/SimpleBtn/SimpleBtn.d.ts.map +1 -1
  130. package/blocks/SimpleBtn/SimpleBtn.js +4 -3
  131. package/blocks/SourceBtn/SourceBtn.d.ts +2 -2
  132. package/blocks/SourceBtn/SourceBtn.d.ts.map +1 -1
  133. package/blocks/SourceBtn/SourceBtn.js +4 -4
  134. package/blocks/SourceList/SourceList.d.ts.map +1 -1
  135. package/blocks/SourceList/SourceList.js +5 -4
  136. package/blocks/StartFrom/StartFrom.d.ts.map +1 -1
  137. package/blocks/StartFrom/StartFrom.js +2 -1
  138. package/blocks/UploadCtxProvider/EventEmitter.d.ts +19 -19
  139. package/blocks/UploadCtxProvider/EventEmitter.d.ts.map +1 -1
  140. package/blocks/UploadCtxProvider/UploadCtxProvider.d.ts +4 -4
  141. package/blocks/UploadCtxProvider/UploadCtxProvider.d.ts.map +1 -1
  142. package/blocks/UploadList/UploadList.d.ts +2 -2
  143. package/blocks/UploadList/UploadList.d.ts.map +1 -1
  144. package/blocks/UploadList/UploadList.js +10 -11
  145. package/blocks/UrlSource/UrlSource.d.ts.map +1 -1
  146. package/blocks/UrlSource/UrlSource.js +7 -6
  147. package/blocks/themes/uc-basic/index.css +0 -1
  148. package/blocks/utils/debounce.d.ts +3 -1
  149. package/blocks/utils/debounce.d.ts.map +1 -1
  150. package/blocks/utils/throttle.d.ts +3 -1
  151. package/blocks/utils/throttle.d.ts.map +1 -1
  152. package/blocks/utils/userAgent.d.ts +1 -1
  153. package/blocks/utils/userAgent.d.ts.map +1 -1
  154. package/index.d.ts +1 -1
  155. package/index.js +1 -1
  156. package/index.ssr.d.ts +115 -1
  157. package/index.ssr.d.ts.map +1 -1
  158. package/index.ssr.js +189 -78
  159. package/package.json +9 -7
  160. package/solutions/file-uploader/inline/FileUploaderInline.d.ts +2 -2
  161. package/solutions/file-uploader/inline/FileUploaderInline.d.ts.map +1 -1
  162. package/solutions/file-uploader/inline/FileUploaderInline.js +3 -2
  163. package/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts.map +1 -1
  164. package/solutions/file-uploader/minimal/FileUploaderMinimal.js +2 -1
  165. package/solutions/file-uploader/regular/FileUploaderRegular.d.ts +2 -2
  166. package/solutions/file-uploader/regular/FileUploaderRegular.d.ts.map +1 -1
  167. package/solutions/file-uploader/regular/FileUploaderRegular.js +4 -3
  168. package/types/jsx.d.ts +9 -3
  169. package/utils/getPluralForm.d.ts.map +1 -1
  170. package/utils/isSecureTokenExpired.d.ts +1 -1
  171. package/utils/memoize.d.ts.map +1 -1
  172. package/utils/mixinClass.d.ts +3 -1
  173. package/utils/mixinClass.d.ts.map +1 -1
  174. package/utils/prettyBytes.d.ts.map +1 -1
  175. package/utils/template-utils.d.ts.map +1 -1
  176. package/utils/toKebabCase.d.ts.map +1 -1
  177. package/utils/uniqueArray.d.ts.map +1 -1
  178. package/utils/validators/collection/validateCollectionUploadError.d.ts +1 -1
  179. package/utils/validators/collection/validateMultiple.d.ts +1 -1
  180. package/utils/validators/file/validateFileType.d.ts +1 -1
  181. package/utils/validators/file/validateIsImage.d.ts +1 -1
  182. package/utils/validators/file/validateMaxSizeLimit.d.ts +1 -1
  183. package/utils/validators/file/validateUploadError.d.ts +1 -1
  184. package/utils/waitForAttribute.d.ts +12 -6
  185. package/utils/waitForAttribute.d.ts.map +1 -1
  186. package/utils/waitForAttribute.js +38 -8
  187. package/utils/waitForAttribute.test.js +10 -47
  188. package/utils/withResolvers.d.ts +7 -0
  189. package/utils/withResolvers.d.ts.map +1 -0
  190. package/utils/withResolvers.js +17 -0
  191. package/utils/withResolvers.test.d.ts +2 -0
  192. package/utils/withResolvers.test.d.ts.map +1 -0
  193. package/utils/withResolvers.test.js +27 -0
  194. package/web/file-uploader.iife.min.js +4 -4
  195. package/web/file-uploader.min.js +4 -4
  196. package/web/uc-basic.min.css +1 -1
  197. package/web/uc-cloud-image-editor.min.css +1 -1
  198. package/web/uc-cloud-image-editor.min.js +4 -4
  199. package/web/uc-file-uploader-inline.min.css +1 -1
  200. package/web/uc-file-uploader-inline.min.js +4 -4
  201. package/web/uc-file-uploader-minimal.min.js +3 -3
  202. package/web/uc-file-uploader-regular.min.css +1 -1
  203. package/web/uc-file-uploader-regular.min.js +4 -4
  204. package/web/uc-img.min.js +3 -3
  205. package/blocks/CloudImageEditor/src/lib/FocusVisible.d.ts +0 -15
  206. package/blocks/CloudImageEditor/src/lib/FocusVisible.d.ts.map +0 -1
  207. package/blocks/CloudImageEditor/src/lib/FocusVisible.js +0 -33
  208. package/blocks/CloudImageEditor/src/lib/applyFocusVisiblePolyfill.d.ts +0 -10
  209. package/blocks/CloudImageEditor/src/lib/applyFocusVisiblePolyfill.d.ts.map +0 -1
  210. package/blocks/CloudImageEditor/src/lib/applyFocusVisiblePolyfill.js +0 -256
  211. package/blocks/Range/Range.d.ts +0 -16
  212. package/blocks/Range/Range.d.ts.map +0 -1
  213. package/blocks/Range/Range.js +0 -44
  214. package/blocks/Range/range.css +0 -65
package/README.md CHANGED
@@ -85,7 +85,7 @@ We use [JSDoc type annotations](https://www.typescriptlang.org/docs/handbook/int
85
85
  href="https://cdn.jsdelivr.net/npm/@uploadcare/file-uploader@1/web/uc-file-uploader-regular.min.css"
86
86
  />
87
87
 
88
- <uc-file-uploader-regular ctx-name="my-uploader"> </uc-file-uploader-regular>
88
+ <uc-file-uploader-regular ctx="my-uploader"> </uc-file-uploader-regular>
89
89
  ```
90
90
 
91
91
  3. Configure Uploadcare File Uploader and add your personal public key to the project. Discover the instructions in the [following section](#configuration).
@@ -109,7 +109,7 @@ UC.defineComponents(UC);
109
109
  href="https://cdn.jsdelivr.net/npm/@uploadcare/file-uploader@1/web/uc-file-uploader-regular.min.css"
110
110
  />
111
111
 
112
- <uc-file-uploader-inline ctx-name="my-uploader"> </uc-file-uploader-inline>
112
+ <uc-file-uploader-inline ctx="my-uploader"> </uc-file-uploader-inline>
113
113
  ```
114
114
 
115
115
  4. Configure Uploadcare File Uploader and add your personal public key to the project. Discover the instructions in the [following section](#configuration).
@@ -123,10 +123,10 @@ All configurations in Uploadcare File Uploader are managed from `uc-config` bloc
123
123
  3. Add a `uc-config` block to your markup and replace `YOUR_PUBLIC_KEY` with your own public key:
124
124
 
125
125
  ```html
126
- <uc-config ctx-name="my-uploader" pubkey="YOUR_PUBLIC_KEY"></uc-config>
126
+ <uc-config ctx="my-uploader" pubkey="YOUR_PUBLIC_KEY"></uc-config>
127
127
  ```
128
128
 
129
- 4. Make sure that your config block uses the same `ctx-name` attribute value as your solution block.
129
+ 4. Make sure that your config block uses the same `ctx` attribute value as your solution block.
130
130
 
131
131
  Discover more about Uploadcare File Uploader configuration in [our documentation](https://uploadcare.com/docs/file-uploader/configuration/?ref=github-readme).
132
132
 
@@ -63,6 +63,6 @@ export namespace ActivityBlock {
63
63
  DETAILS: "details";
64
64
  }>;
65
65
  }
66
- export type ActivityType = (typeof ActivityBlock)['activities'][keyof (typeof ActivityBlock)['activities']] | (string & {}) | null;
66
+ export type ActivityType = (typeof ActivityBlock)["activities"][keyof (typeof ActivityBlock)["activities"]] | (string & {}) | null;
67
67
  import { Block } from './Block.js';
68
68
  //# sourceMappingURL=ActivityBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityBlock.d.ts","sourceRoot":"","sources":["ActivityBlock.js"],"names":[],"mappings":"AASA;IAuFE;;;;;;OAMG;IACH,kCAAsC;IA7FtC,iBAAiB;IACjB,kCAAuB;IAEvB;;;;;;MAA+B;IAE/B;;MAAqE;IAErE,eAAe;IACf,oBAKC;IAED,eAAe;IACf,kBAaC;IAsCD,eAAe;IACf,sBAWC;IAED,eAAe;IACf,8BAEC;IAWD,4CAEC;IAED,iCAEC;IAED;;;;;;;OAOG;IACH;4BAHiB,IAAI;8BACJ,IAAI;yBAQpB;IAED,2BAKC;IAoBD,0BAEC;IAED,0BAEC;IAED,qBAAqB;IACrB,2BAEC;IAED,qBAAqB;IACrB,2BAEC;IAED,oBAoBC;IA5KC,8CAAyB;CA6K5B;;;;;;;;;;;;;2BAaa,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI;sBA3M/F,YAAY"}
1
+ {"version":3,"file":"ActivityBlock.d.ts","sourceRoot":"","sources":["ActivityBlock.js"],"names":[],"mappings":"AASA;IAyFE;;;;;;OAMG;IACH,kCAAsC;IA/FtC,iBAAiB;IACjB,kCAAuB;IAEvB;;;;;;MAA+B;IAE/B;;MAAqE;IAErE,eAAe;IACf,oBAKC;IAED,eAAe;IACf,kBAaC;IAwCD,eAAe;IACf,sBAWC;IAED,eAAe;IACf,8BAEC;IAWD,4CAEC;IAED,iCAEC;IAED;;;;;;;OAOG;IACH;4BAHiB,IAAI;8BACJ,IAAI;yBAQpB;IAED,2BAKC;IAoBD,0BAEC;IAED,0BAEC;IAED,qBAAqB;IACrB,2BAEC;IAED,qBAAqB;IACrB,2BAEC;IAED,oBAoBC;IA9KC,8CAAyB;CA+K5B;;;;;;;;;;;;;2BAaa,CAAC,OAAO,aAAa,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI;sBA7M/F,YAAY"}
@@ -54,6 +54,8 @@ export class ActivityBlock extends Block {
54
54
  this.setAttribute('activity', this.activityType);
55
55
  }
56
56
  this.sub('*currentActivity', (/** @type {String} */ val) => {
57
+ if (this.activityType === 'url') {
58
+ }
57
59
  if (this.activityType !== val && this[ACTIVE_PROP]) {
58
60
  this._deactivate();
59
61
  } else if (this.activityType === val && !this[ACTIVE_PROP]) {
@@ -1,4 +1,4 @@
1
- export class Block extends BaseComponent<any> {
1
+ export class Block extends Symbiote<any> {
2
2
  /** @type {string | null} */
3
3
  static StateConsumerScope: string | null;
4
4
  /** @type {string[]} */
@@ -9,7 +9,7 @@ export class Block extends BaseComponent<any> {
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}
@@ -95,7 +89,6 @@ export class Block extends BaseComponent<any> {
95
89
  /** @param {unknown[]} args */
96
90
  debugPrint(...args: unknown[]): void;
97
91
  }
98
- export { BaseComponent };
99
- import { BaseComponent } from '@symbiotejs/symbiote';
92
+ import { Symbiote } from '@symbiotejs/symbiote';
100
93
  import { A11y } from './a11y.js';
101
94
  //# 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;IAoTvB,6BAA6B;IAC7B,4CAQC;IAzQD,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;IAsBD;;;;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;;8BArVmC,sBAAsB;qBAarC,WAAW"}
1
+ {"version":3,"file":"Block.d.ts","sourceRoot":"","sources":["Block.js"],"names":[],"mappings":"AAuBA;IACE,4BAA4B;IAC5B,2BADW,MAAM,GAAG,IAAI,CACS;IAEjC,uBAAuB;IACvB,mBADW,MAAM,EAAE,CACI;IAqUvB,6BAA6B;IAC7B,4CAQC;IA1RD,cAUC;IA5DD,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;IASpC;;;;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;IA8ED;;;OAGG;IACH,4BAEC;IAED;;;OAGG;IACH,kCAEC;IAED,yBAAyB;IACzB,iCAEC;IAsBD;;;;OAIG;IACH,qCAIC;IAED;;;;OAIG;IACH,iCAHa,OAAO,QAAQ,CA6B3B;IAED,iDAAiD;IACjD,yCA8BC;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,QAYpB;CAYF;yBA1WsC,sBAAsB;qBAaxC,WAAW"}
package/abstract/Block.js CHANGED
@@ -1,23 +1,27 @@
1
1
  // @ts-check
2
- import { BaseComponent, Data } from '@symbiotejs/symbiote';
2
+ import { DICT, PubSub, Symbiote } from '@symbiotejs/symbiote';
3
+ // @ts-ignore - something wrong with the tsd
4
+ import { slotProcessor } from '@symbiotejs/symbiote/core/slotProcessor.js';
3
5
  import { initialConfig } from '../blocks/Config/initialConfig.js';
4
6
  import { EventEmitter } from '../blocks/UploadCtxProvider/EventEmitter.js';
5
7
  import { WindowHeightTracker } from '../utils/WindowHeightTracker.js';
6
- import { extractFilename, extractCdnUrlModifiers, extractUuid } from '../utils/cdn-utils.js';
8
+ import { extractCdnUrlModifiers, extractFilename, extractUuid } from '../utils/cdn-utils.js';
7
9
  import { getLocaleDirection } from '../utils/getLocaleDirection.js';
8
10
  import { getPluralForm } from '../utils/getPluralForm.js';
9
11
  import { applyTemplateData, getPluralObjects } from '../utils/template-utils.js';
10
12
  import { waitForAttribute } from '../utils/waitForAttribute.js';
11
13
  import { blockCtx } from './CTX.js';
12
14
  import { LocaleManager, localeStateKey } from './LocaleManager.js';
15
+ import { A11y } from './a11y.js';
13
16
  import { l10nProcessor } from './l10nProcessor.js';
14
17
  import { sharedConfigKey } from './sharedConfigKey.js';
15
- import { A11y } from './a11y.js';
18
+ import { bindCompatibilityFallbackProcessor } from './bindCompatibilityFallbackProcessor.js';
16
19
 
17
20
  const TAG_PREFIX = 'uc-';
21
+ const CTX_NAME_FALLBACK_ATTR = 'ctx-name';
18
22
 
19
23
  // @ts-ignore TODO: fix this
20
- export class Block extends BaseComponent {
24
+ export class Block extends Symbiote {
21
25
  /** @type {string | null} */
22
26
  static StateConsumerScope = null;
23
27
 
@@ -78,8 +82,12 @@ export class Block extends BaseComponent {
78
82
  super();
79
83
  /** @type {Map<string, Set<{ remove: () => void }>>} */
80
84
  this.l10nProcessorSubs = new Map();
81
- // @ts-ignore TODO: fix this
85
+ // @ts-expect-error TODO: fix this
82
86
  this.addTemplateProcessor(l10nProcessor);
87
+ this.addTemplateProcessor(slotProcessor);
88
+
89
+ // Prepend tpl processors with bind compatibility fallback processor
90
+ this.tplProcessors = new Set([bindCompatibilityFallbackProcessor, ...this.tplProcessors]);
83
91
  }
84
92
 
85
93
  /**
@@ -135,17 +143,29 @@ export class Block extends BaseComponent {
135
143
  this.processInnerHtml = true;
136
144
  }
137
145
  if (this.requireCtxName) {
138
- waitForAttribute({
139
- element: this,
140
- attribute: 'ctx-name',
141
- onSuccess: () => {
142
- // async wait for ctx-name attribute to be set, needed for Angular because it sets attributes after mount
146
+ Promise.race([
147
+ waitForAttribute({
148
+ element: this,
149
+ attribute: DICT.CTX_NAME_ATTR,
150
+ }),
151
+ waitForAttribute({
152
+ element: this,
153
+ attribute: CTX_NAME_FALLBACK_ATTR,
154
+ }),
155
+ ]).then((result) => {
156
+ if (result.success) {
157
+ if (result.attribute === CTX_NAME_FALLBACK_ATTR) {
158
+ const ctxName = result.value;
159
+ this.style.setProperty(DICT.CSS_CTX_PROP, `'${ctxName}'`);
160
+ }
161
+ // async wait for ctx attribute to be set, needed for Angular because it sets attributes after mount
143
162
  // TODO: should be moved to the symbiote core
144
163
  super.connectedCallback();
145
- },
146
- onTimeout: () => {
147
- console.error('Attribute `ctx-name` is required and it is not set.');
148
- },
164
+ } else {
165
+ console.error(
166
+ `Attribute "${DICT.CTX_NAME_ATTR}" or "${CTX_NAME_FALLBACK_ATTR}" is required and it is not set.`,
167
+ );
168
+ }
149
169
  });
150
170
  } else {
151
171
  super.connectedCallback();
@@ -217,7 +237,7 @@ export class Block extends BaseComponent {
217
237
 
218
238
  // Destroy local context
219
239
  // TODO: this should be done inside symbiote
220
- Data.deleteCtx(this);
240
+ PubSub.deleteCtx(this.localCtx.uid);
221
241
 
222
242
  if (blocksRegistry?.size === 0) {
223
243
  setTimeout(() => {
@@ -233,7 +253,7 @@ export class Block extends BaseComponent {
233
253
  * @protected
234
254
  */
235
255
  destroyCtxCallback() {
236
- Data.deleteCtx(this.ctxName);
256
+ PubSub.deleteCtx(this.ctxName);
237
257
 
238
258
  this.localeManager?.destroy();
239
259
  }
@@ -327,6 +347,7 @@ export class Block extends BaseComponent {
327
347
  const resolver = args[0];
328
348
  consoleArgs = resolver();
329
349
  }
350
+
330
351
  console.log(`[${this.ctxName}]`, ...consoleArgs);
331
352
  }
332
353
 
@@ -341,5 +362,3 @@ export class Block extends BaseComponent {
341
362
  }
342
363
  }
343
364
  }
344
-
345
- export { BaseComponent };
package/abstract/CTX.d.ts CHANGED
@@ -1,26 +1,26 @@
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
  '*focusedEntry': null;
13
13
  '*uploadQueue': Queue;
14
- /** @type {ReturnType<import('../types').OutputErrorCollection>[]} */
15
- '*collectionErrors': ReturnType<import('../types').OutputErrorCollection>[];
14
+ /** @type {import('../types').OutputErrorCollection[]} */
15
+ '*collectionErrors': import("../types").OutputErrorCollection[];
16
16
  /** @type {import('../types').OutputCollectionState | null} */
17
- '*collectionState': import('../types').OutputCollectionState | null;
17
+ '*collectionState': import("../types").OutputCollectionState | null;
18
18
  /** @type {import('@uploadcare/upload-client').UploadcareGroup | null} */
19
- '*groupInfo': import('@uploadcare/upload-client').UploadcareGroup | null;
19
+ '*groupInfo': import("@uploadcare/upload-client").UploadcareGroup | null;
20
20
  /** @type {Set<string>} */
21
21
  '*uploadTrigger': Set<string>;
22
22
  /** @type {import('./SecureUploadsManager.js').SecureUploadsManager | null} */
23
- '*secureUploadsManager': import('./SecureUploadsManager.js').SecureUploadsManager | null;
23
+ '*secureUploadsManager': import("./SecureUploadsManager.js").SecureUploadsManager | null;
24
24
  '*currentActivity': null;
25
25
  '*currentActivityParams': {};
26
26
  '*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;;;;;IAOjC,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;sBApCoB,2BAA2B"}
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;;;;;IAOjC,yDAAyD;yBAA9C,OAAO,UAAU,EAAE,qBAAqB,EAAE;IAErD,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;sBApCoB,2BAA2B"}
package/abstract/CTX.js CHANGED
@@ -25,7 +25,7 @@ export const uploaderBlockCtx = (fnCtx) => ({
25
25
  '*uploadList': [],
26
26
  '*focusedEntry': null,
27
27
  '*uploadQueue': new Queue(1),
28
- /** @type {ReturnType<import('../types').OutputErrorCollection>[]} */
28
+ /** @type {import('../types').OutputErrorCollection[]} */
29
29
  '*collectionErrors': [],
30
30
  /** @type {import('../types').OutputCollectionState | null} */
31
31
  '*collectionState': null,
@@ -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,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"}
@@ -6,8 +6,8 @@ export class SolutionBlock extends Block {
6
6
  '*uploadList': never[];
7
7
  '*focusedEntry': null;
8
8
  '*uploadQueue': import("@uploadcare/upload-client").Queue;
9
- '*collectionErrors': any[];
10
- '*collectionState': import("../index.js").OutputCollectionState<import("../index.js").OutputCollectionStatus, "maybe-has-group"> | null;
9
+ '*collectionErrors': import("../index.js").OutputErrorCollection[];
10
+ '*collectionState': import("../index.js").OutputCollectionState | null;
11
11
  '*groupInfo': import("@uploadcare/upload-client").UploadcareGroup | null;
12
12
  '*uploadTrigger': Set<string>;
13
13
  '*secureUploadsManager': import("./SecureUploadsManager.js").SecureUploadsManager | null;
@@ -1 +1 @@
1
- {"version":3,"file":"SolutionBlock.d.ts","sourceRoot":"","sources":["SolutionBlock.js"],"names":[],"mappings":"AAIA;IAWE,gCAEC;IAED,2BAEC;IAdD;;;;;;;;;;;;;;;MAA+B;IAC/B,gBAAiB;CAclB;sBArBqB,YAAY"}
1
+ {"version":3,"file":"SolutionBlock.d.ts","sourceRoot":"","sources":["SolutionBlock.js"],"names":[],"mappings":"AAIA;IAWE,gCAEC;IAED,2BAEC;IAdD;;;;;oCAgBwG,aAAU;mCAA6E,aAAU;6BAAmF,2BAA2B;;wCAAmI,2BAA2B;;;;;;MAhBtb;IAC/B,gBAAiB;CAclB;sBArBqB,YAAY"}
@@ -29,7 +29,7 @@ export class TypedCollection {
29
29
  private __ctxId;
30
30
  /**
31
31
  * @private
32
- * @type {Data}
32
+ * @type {PubSub}
33
33
  */
34
34
  private __data;
35
35
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TypedCollection.d.ts","sourceRoot":"","sources":["TypedCollection.js"],"names":[],"mappings":"AAGA;IACE;;;;;;OAMG;IACH;QAL8D,WAAW;gBAAvD,MAAM,GAAE;gBAAE,IAAI,EAAE,GAAG,CAAC;gBAAC,KAAK,EAAE,GAAG,CAAA;aAAE;;QACrB,SAAS;QAC2C,OAAO,WAAvE,MAAM,EAAE,SAAS,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,KAAK,IAAI;QAC3C,OAAO;OAgFlC;IA7EC;;;OAGG;IACH,sBAAwC;IACxC;;;OAGG;IACH,gBAAgD;IAChD;;;OAGG;IACH,eAAgD;IAChD;;;OAGG;IACH,oBAA0C;IAC1C;;;OAGG;IACH,kBAAoC;IACpC;;;OAGG;IACH,4BAAoC;IACpC;;;OAGG;IACH,8BAAsC;IACtC;;;OAGG;IACH,gBAAwB;IACxB;;;OAGG;IACH,kBAA0B;IAC1B;;;OAGG;IACH,gBAAwB;IAIxB;;;;OAIG;IACH,0BAkBC;IAVC,eAAe;IACf,yBAQE;IAIN,eAcC;IAVC,eAAe;IACf,wBAQE;IAGJ,oFAAoF;IACpF,kCADmB,MAAM,EAAE,SAAS,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,KAAK,IAAI,cAWvE;IAED,gCAAgC;IAChC,6CAEC;IAED;;;OAGG;IACH;YAHkB,MAAM,GAAE,GAAG;QAChB,MAAM,CAuBlB;IAED;;;OAGG;IACH,kBAFa,SAAS,CAIrB;IAED;;;;OAIG;IACH,wCAFa,GAAG,CAKf;IAED;;;;;OAKG;IACH,6DAGC;IAED,yBAAyB;IACzB,yBAMC;IAED,iBAIC;IAED,gCAAgC;IAChC,iDAMC;IAED,gCAAgC;IAChC,6CAEC;IAED;;;OAGG;IACH,0BAHkB,SAAS,eACd,QAAQ,CAWpB;IAED,kBAEC;IAED,mBAEC;IAED,gBAUC;CACF;0BAnPyB,gBAAgB"}
1
+ {"version":3,"file":"TypedCollection.d.ts","sourceRoot":"","sources":["TypedCollection.js"],"names":[],"mappings":"AAGA;IACE;;;;;;OAMG;IACH,qBALG;QAA2D,WAAW,EAA9D;gBAAO,MAAM,GAAE;gBAAE,IAAI,EAAE,GAAG,CAAC;gBAAC,KAAK,EAAE,GAAG,CAAA;aAAE;SAAC;QACtB,SAAS;QAC2C,OAAO,WAAvE,MAAM,EAAE,SAAS,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;QAC3C,OAAO;KAAC,EAgFnC;IA7EC;;;OAGG;IACH,sBAAwC;IACxC;;;OAGG;IACH,gBAAgD;IAChD;;;OAGG;IACH,eAAkD;IAClD;;;OAGG;IACH,oBAA0C;IAC1C;;;OAGG;IACH,kBAAoC;IACpC;;;OAGG;IACH,4BAAoC;IACpC;;;OAGG;IACH,8BAAsC;IACtC;;;OAGG;IACH,gBAAwB;IACxB;;;OAGG;IACH,kBAA0B;IAC1B;;;OAGG;IACH,gBAAwB;IAIxB;;;;OAIG;IACH,0BAkBC;IAVC,eAAe;IACf,yBAQE;IAIN,eAcC;IAVC,eAAe;IACf,wBAQE;IAGJ,oFAAoF;IACpF,2BADY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,cAWvE;IAED,gCAAgC;IAChC,6CAEC;IAED;;;OAGG;IACH,UAHW;YAAO,MAAM,GAAE,GAAG;KAAC,GACjB,MAAM,CAuBlB;IAED;;;OAGG;IACH,kBAFa,SAAS,CAIrB;IAED;;;;OAIG;IACH,wCAFa,GAAG,CAKf;IAED;;;;;OAKG;IACH,YALa,CAAC,uCAGH,CAAC,QAKX;IAED,yBAAyB;IACzB,yBAMC;IAED,iBAIC;IAED,gCAAgC;IAChC,iDAMC;IAED,gCAAgC;IAChC,6CAEC;IAED;;;OAGG;IACH,mBAHW,CAAC,IAAI,EAAE,SAAS,YAAY,GAC1B,QAAQ,CAWpB;IAED,kBAEC;IAED,mBAEC;IAED,gBAUC;CACF;0BAnPyB,gBAAgB"}
@@ -1,4 +1,4 @@
1
- import { Data, UID } from '@symbiotejs/symbiote';
1
+ import { PubSub, UID } from '@symbiotejs/symbiote';
2
2
  import { TypedData } from './TypedData.js';
3
3
 
4
4
  export class TypedCollection {
@@ -22,9 +22,9 @@ export class TypedCollection {
22
22
  this.__ctxId = options.ctxName || UID.generate();
23
23
  /**
24
24
  * @private
25
- * @type {Data}
25
+ * @type {PubSub}
26
26
  */
27
- this.__data = Data.registerCtx({}, this.__ctxId);
27
+ this.__data = PubSub.registerCtx({}, this.__ctxId);
28
28
  /**
29
29
  * @private
30
30
  * @type {string[]}
@@ -232,7 +232,7 @@ export class TypedCollection {
232
232
  }
233
233
 
234
234
  destroy() {
235
- Data.deleteCtx(this.__ctxId);
235
+ PubSub.deleteCtx(this.__ctxId);
236
236
  this.__propertyObservers = null;
237
237
  this.__collectionObservers = null;
238
238
  for (let id in this.__subsMap) {
@@ -18,7 +18,7 @@ export class TypedData {
18
18
  private __schema;
19
19
  /**
20
20
  * @private
21
- * @type {Data}
21
+ * @type {PubSub}
22
22
  */
23
23
  private __data;
24
24
  /** @returns {String} */
@@ -40,7 +40,7 @@ export class TypedData {
40
40
  */
41
41
  subscribe(prop: string, handler: (newVal: any) => void): {
42
42
  remove: () => void;
43
- callback: Function;
43
+ callback: (val: unknown) => void;
44
44
  };
45
45
  remove(): void;
46
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TypedData.d.ts","sourceRoot":"","sources":["TypedData.js"],"names":[],"mappings":"AAKA;IACE;;;OAGG;IACH;YAHkB,MAAM,GAAE;YAAE,IAAI,EAAE,GAAG,CAAC;YAAC,KAAK,EAAE,GAAG,CAAC;YAAC,QAAQ,CAAC,UAAS;SAAE;qCAkBtE;IAdC,eAAe;IACf,sBAAgC;IAChC,eAAe;IACf,gBAAwC;IACxC,eAAe;IACf,iBAGM;IACN;;;OAGG;IACH,eAA2D;IAG7D,wBAAwB;IACxB,kBAEC;IAED;;;OAGG;IACH,8BAFW,GAAG,QAab;IAED,0CAA0C;IAC1C;YADmB,MAAM,GAAE,GAAG;aAK7B;IAED,2BAA2B;IAC3B,4BAMC;IAED;;;OAGG;IACH,0CAFoB,GAAG,KAAK,IAAI;;;MAI/B;IAED,eAEC;CACF"}
1
+ {"version":3,"file":"TypedData.d.ts","sourceRoot":"","sources":["TypedData.js"],"names":[],"mappings":"AAKA;IACE;;;OAGG;IACH,yBAHW;YAAO,MAAM,GAAE;YAAE,IAAI,EAAE,GAAG,CAAC;YAAC,KAAK,EAAE,GAAG,CAAC;YAAC,QAAQ,CAAC,UAAS;SAAE;KAAC,gCAkBvE;IAdC,eAAe;IACf,sBAAgC;IAChC,eAAe;IACf,gBAAwC;IACxC,eAAe;IACf,iBAGM;IACN;;;OAGG;IACH,eAA6D;IAG/D,wBAAwB;IACxB,kBAEC;IAED;;;OAGG;IACH,8BAFW,GAAG,QAab;IAED,0CAA0C;IAC1C,0BADY;YAAO,MAAM,GAAE,GAAG;KAAC,QAK9B;IAED,2BAA2B;IAC3B,4BAMC;IAED;;;OAGG;IACH,iCAFW,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI;;;MAI/B;IAED,eAEC;CACF"}
@@ -1,4 +1,4 @@
1
- import { Data, UID } from '@symbiotejs/symbiote';
1
+ import { PubSub, UID } from '@symbiotejs/symbiote';
2
2
 
3
3
  const MSG_NAME = '[Typed State] Wrong property name: ';
4
4
  const MSG_TYPE = '[Typed State] Wrong property type: ';
@@ -20,9 +20,9 @@ export class TypedData {
20
20
  }, {});
21
21
  /**
22
22
  * @private
23
- * @type {Data}
23
+ * @type {PubSub}
24
24
  */
25
- this.__data = Data.registerCtx(this.__schema, this.__ctxId);
25
+ this.__data = PubSub.registerCtx(this.__schema, this.__ctxId);
26
26
  }
27
27
 
28
28
  /** @returns {String} */
@@ -72,6 +72,6 @@ export class TypedData {
72
72
  }
73
73
 
74
74
  remove() {
75
- Data.deleteCtx(this.__ctxId);
75
+ PubSub.deleteCtx(this.__ctxId);
76
76
  }
77
77
  }
@@ -8,11 +8,11 @@ export class UploaderBlock extends ActivityBlock {
8
8
  '*uploadList': never[];
9
9
  '*focusedEntry': null;
10
10
  '*uploadQueue': import("@uploadcare/upload-client").Queue;
11
- '*collectionErrors': any[];
12
- '*collectionState': import("../types").OutputCollectionState<import("../types").OutputCollectionStatus, "maybe-has-group"> | null;
11
+ '*collectionErrors': import("../types").OutputErrorCollection[];
12
+ '*collectionState': import("../types").OutputCollectionState | null;
13
13
  '*groupInfo': import("@uploadcare/upload-client").UploadcareGroup | null;
14
14
  '*uploadTrigger': Set<string>;
15
- '*secureUploadsManager': SecureUploadsManager | null;
15
+ '*secureUploadsManager': import("./SecureUploadsManager.js").SecureUploadsManager | null;
16
16
  '*currentActivity': null;
17
17
  '*currentActivityParams': {};
18
18
  '*history': never[];
@@ -68,9 +68,9 @@ export class UploaderBlock extends ActivityBlock {
68
68
  * @returns {Promise<import('@uploadcare/upload-client').FileFromOptions>}
69
69
  * @protected
70
70
  */
71
- protected getUploadClientOptions(): Promise<import('@uploadcare/upload-client').FileFromOptions>;
71
+ protected getUploadClientOptions(): Promise<import("@uploadcare/upload-client").FileFromOptions>;
72
72
  /** @returns {import('../types/exported.js').OutputFileEntry[]} */
73
- getOutputData(): import('../types/exported.js').OutputFileEntry[];
73
+ getOutputData(): import("../types/exported.js").OutputFileEntry[];
74
74
  }
75
75
  export namespace UploaderBlock {
76
76
  type extSrcList = string;
@@ -1 +1 @@
1
- {"version":3,"file":"UploaderBlock.d.ts","sourceRoot":"","sources":["UploaderBlock.js"],"names":[],"mappings":"AAkBA;IACE,iBAAiB;IACjB,mCAAwB;IAExB,eAAe;IACf,mBAAmB;IAEnB;;;;;;;;;;;;;;;MAA+B;IAE/B,eAAe;IACf,0BAOC;IA2BD;;;OAGG;IACH,qDAKC;IAED,mCAAmC;IACnC,6BAKC;IAED,4BAEC;IAED,iCAAiC;IACjC,wCAKC;IAYD,eAAe;IACf,qBA0BC;IAvBC,eAAe;IACf,6BAAiG;IAEjG,eAAe;IACf,uCAEC;IAmBH;;;OAGG;IACH,qBAkBC;IAED,eAAe;IACf,0BAYQ;IAER;;;;OAIG;IACH,gCAiCE;IAEF;;;OAGG;IACH,0CAyFE;IAEF,eAAe;IACf,mCAoBE;IAEF,eAAe;IACf,uBAqCC;IAED;;;OAGG;IACH,kCAHW,MAAM,qEAWhB;IAED;;;OAGG;IACH,oCAHa,QAAQ,OAAO,2BAA2B,EAAE,eAAe,CAAC,CA2BxE;IAED,kEAAkE;IAClE,iBADc,OAAO,sBAAsB,EAAE,eAAe,EAAE,CAK7D;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAla6B,oBAAoB;qCAWb,2BAA2B;kCAG9B,wBAAwB;kCADxB,wBAAwB;gCAD1B,sBAAsB"}
1
+ {"version":3,"file":"UploaderBlock.d.ts","sourceRoot":"","sources":["UploaderBlock.js"],"names":[],"mappings":"AAkBA;IACE,iBAAiB;IACjB,mCAAwB;IAExB,eAAe;IACf,mBAAmB;IAEnB;;;;;oCAbK,UAAS;mCACW,UAAU;6BAEjC,2BAA2B;;wCAGU,2BACxB;;;;;;MAMgB;IAE/B,eAAe;IACf,0BAOC;IA2BD;;;OAGG;IACH,qDAKC;IAED,mCAAmC;IACnC,6BAKC;IAED,4BAEC;IAED,iCAAiC;IACjC,wCAKC;IAYD,eAAe;IACf,qBA0BC;IAvBC,eAAe;IACf,6BAAiG;IAEjG,eAAe;IACf,uCAEC;IAmBH;;;OAGG;IACH,qBAkBC;IAED,eAAe;IACf,0BAYQ;IAER;;;;OAIG;IACH,gCAiCE;IAEF;;;OAGG;IACH,0CAyFE;IAEF,eAAe;IACf,mCAoBE;IAEF,eAAe;IACf,uBAqCC;IAED;;;OAGG;IACH,kCAHW,MAAM,qEAWhB;IAED;;;OAGG;IACH,oCAHa,OAAO,CAAC,OAAO,2BAA2B,EAAE,eAAe,CAAC,CA2BxE;IAED,kEAAkE;IAClE,iBADc,OAAO,sBAAsB,EAAE,eAAe,EAAE,CAK7D;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAla6B,oBAAoB;qCAWb,2BAA2B;kCAG9B,wBAAwB;kCADxB,wBAAwB;gCAD1B,sBAAsB"}
@@ -1,7 +1,7 @@
1
1
  // @ts-check
2
2
  import { ActivityBlock } from './ActivityBlock.js';
3
3
 
4
- import { Data } from '@symbiotejs/symbiote';
4
+ import { PubSub } from '@symbiotejs/symbiote';
5
5
  import { uploadFileGroup } from '@uploadcare/upload-client';
6
6
  import { calculateMaxCenteredCropFrame } from '../blocks/CloudImageEditor/src/crop-utils.js';
7
7
  import { parseCropPreset } from '../blocks/CloudImageEditor/src/lib/parseCropPreset.js';
@@ -234,7 +234,7 @@ export class UploaderBlock extends ActivityBlock {
234
234
 
235
235
  if (changeMap.uploadProgress) {
236
236
  for (const entryId of changeMap.uploadProgress) {
237
- const { isUploading, silent } = Data.getCtx(entryId).store;
237
+ const { isUploading, silent } = PubSub.getCtx(entryId).store;
238
238
  if (isUploading && !silent) {
239
239
  this.emit(EventType.FILE_UPLOAD_PROGRESS, this.api.getOutputItem(entryId));
240
240
  }
@@ -244,7 +244,7 @@ export class UploaderBlock extends ActivityBlock {
244
244
  }
245
245
  if (changeMap.isUploading) {
246
246
  for (const entryId of changeMap.isUploading) {
247
- const { isUploading, silent } = Data.getCtx(entryId).store;
247
+ const { isUploading, silent } = PubSub.getCtx(entryId).store;
248
248
  if (isUploading && !silent) {
249
249
  this.emit(EventType.FILE_UPLOAD_START, this.api.getOutputItem(entryId));
250
250
  }
@@ -252,7 +252,7 @@ export class UploaderBlock extends ActivityBlock {
252
252
  }
253
253
  if (changeMap.fileInfo) {
254
254
  for (const entryId of changeMap.fileInfo) {
255
- const { fileInfo, silent } = Data.getCtx(entryId).store;
255
+ const { fileInfo, silent } = PubSub.getCtx(entryId).store;
256
256
  if (fileInfo && !silent) {
257
257
  this.emit(EventType.FILE_UPLOAD_SUCCESS, this.api.getOutputItem(entryId));
258
258
  }
@@ -263,7 +263,7 @@ export class UploaderBlock extends ActivityBlock {
263
263
  }
264
264
  if (changeMap.errors) {
265
265
  for (const entryId of changeMap.errors) {
266
- const { errors } = Data.getCtx(entryId).store;
266
+ const { errors } = PubSub.getCtx(entryId).store;
267
267
  if (errors.length > 0) {
268
268
  this.emit(EventType.FILE_UPLOAD_FAILED, this.api.getOutputItem(entryId));
269
269
  this.emit(
@@ -1,6 +1,6 @@
1
1
  export class UploaderPublicApi {
2
2
  /** @param {import('./UploaderBlock.js').UploaderBlock} ctx */
3
- constructor(ctx: import('./UploaderBlock.js').UploaderBlock);
3
+ constructor(ctx: import("./UploaderBlock.js").UploaderBlock);
4
4
  /**
5
5
  * @private
6
6
  * @type {import('./UploaderBlock.js').UploaderBlock}
@@ -20,41 +20,41 @@ export class UploaderPublicApi {
20
20
  * @returns {import('../types').OutputFileEntry<'idle'>}
21
21
  */
22
22
  addFileFromUrl: (url: string, { silent, fileName, source }?: {
23
- silent?: boolean | undefined;
24
- fileName?: string | undefined;
25
- source?: string | undefined;
26
- } | undefined) => import('../types').OutputFileEntry<'idle'>;
23
+ silent?: boolean;
24
+ fileName?: string;
25
+ source?: string;
26
+ } | undefined) => import("../types").OutputFileEntry<"idle">;
27
27
  /**
28
28
  * @param {string} uuid
29
29
  * @param {{ silent?: boolean; fileName?: string; source?: string }} [options]
30
30
  * @returns {import('../types').OutputFileEntry<'idle'>}
31
31
  */
32
32
  addFileFromUuid: (uuid: string, { silent, fileName, source }?: {
33
- silent?: boolean | undefined;
34
- fileName?: string | undefined;
35
- source?: string | undefined;
36
- } | undefined) => import('../types').OutputFileEntry<'idle'>;
33
+ silent?: boolean;
34
+ fileName?: string;
35
+ source?: string;
36
+ } | undefined) => import("../types").OutputFileEntry<"idle">;
37
37
  /**
38
38
  * @param {string} cdnUrl
39
39
  * @param {{ silent?: boolean; fileName?: string; source?: string }} [options]
40
40
  * @returns {import('../types').OutputFileEntry<'idle'>}
41
41
  */
42
42
  addFileFromCdnUrl: (cdnUrl: string, { silent, fileName, source }?: {
43
- silent?: boolean | undefined;
44
- fileName?: string | undefined;
45
- source?: string | undefined;
46
- } | undefined) => import('../types').OutputFileEntry<'idle'>;
43
+ silent?: boolean;
44
+ fileName?: string;
45
+ source?: string;
46
+ } | undefined) => import("../types").OutputFileEntry<"idle">;
47
47
  /**
48
48
  * @param {File} file
49
49
  * @param {{ silent?: boolean; fileName?: string; source?: string; fullPath?: string }} [options]
50
50
  * @returns {import('../types').OutputFileEntry<'idle'>}
51
51
  */
52
52
  addFileFromObject: (file: File, { silent, fileName, source, fullPath }?: {
53
- silent?: boolean | undefined;
54
- fileName?: string | undefined;
55
- source?: string | undefined;
56
- fullPath?: string | undefined;
57
- } | undefined) => import('../types').OutputFileEntry<'idle'>;
53
+ silent?: boolean;
54
+ fileName?: string;
55
+ source?: string;
56
+ fullPath?: string;
57
+ } | undefined) => import("../types").OutputFileEntry<"idle">;
58
58
  /** @param {string} internalId */
59
59
  removeFileByInternalId: (internalId: string) => void;
60
60
  removeAllFiles(): void;
@@ -68,9 +68,9 @@ export class UploaderPublicApi {
68
68
  * @param {string} entryId
69
69
  * @returns {import('../types/exported.js').OutputFileEntry<TStatus>}
70
70
  */
71
- getOutputItem: <TStatus extends import("../types").OutputFileStatus>(entryId: string) => import("../types").OutputFileEntry<TStatus>;
71
+ getOutputItem: <TStatus extends import("../types").OutputFileStatus>(entryId: string) => import("../types/exported.js").OutputFileEntry<TStatus>;
72
72
  /** @template {import('../types').OutputCollectionStatus} TStatus */
73
- getOutputCollectionState: <TStatus_1 extends import("../types").OutputCollectionStatus>() => import("../types").OutputCollectionState<TStatus_1, "maybe-has-group">;
73
+ getOutputCollectionState: <TStatus extends import("../types").OutputCollectionStatus>() => ReturnType<typeof buildOutputCollectionState<TStatus>>;
74
74
  /** @param {Boolean} [force] */
75
75
  initFlow: (force?: boolean | undefined) => void;
76
76
  doneFlow: () => void;
@@ -78,7 +78,7 @@ export class UploaderPublicApi {
78
78
  * @param {import('./ActivityBlock.js').ActivityType} activityType
79
79
  * @param {import('../blocks/ExternalSource/ExternalSource.js').ActivityParams | {}} [params]
80
80
  */
81
- setCurrentActivity: (activityType: import('./ActivityBlock.js').ActivityType, params?: {} | import("../blocks/ExternalSource/ExternalSource.js").ActivityParams | undefined) => void;
81
+ setCurrentActivity: (activityType: import("./ActivityBlock.js").ActivityType, params?: {} | import("../blocks/ExternalSource/ExternalSource.js").ActivityParams | undefined) => void;
82
82
  /** @param {boolean} opened */
83
83
  setModalState: (opened: boolean) => void;
84
84
  /**
@@ -87,4 +87,5 @@ export class UploaderPublicApi {
87
87
  */
88
88
  private get _sourceList();
89
89
  }
90
+ import { buildOutputCollectionState } from './buildOutputCollectionState.js';
90
91
  //# sourceMappingURL=UploaderPublicApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UploaderPublicApi.d.ts","sourceRoot":"","sources":["UploaderPublicApi.js"],"names":[],"mappings":"AAYA;IAOE,8DAA8D;IAC9D,iBADY,OAAO,oBAAoB,EAAE,aAAa,EAGrD;IATD;;;OAGG;IACH,aAAK;IAOL,eAAe;IACf,gCAEC;IAED,yCAEC;IAED;;iBAEC;IAED;;;;;;OAMG;IACH,sBAJW,MAAM;;;;sBAEJ,OAAO,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAUrD;IAEF;;;;OAIG;IACH,wBAJW,MAAM;;;;sBAEJ,OAAO,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAUrD;IAEF;;;;OAIG;IACH,4BAJW,MAAM;;;;sBAEJ,OAAO,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAgBrD;IAEF;;;;OAIG;IACH,0BAJW,IAAI;;;;;sBAEF,OAAO,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAcrD;IAEF,iCAAiC;IACjC,qCADY,MAAM,UAMhB;IAEF,uBAEC;IAED,sBAeE;IAEF,mDAAmD;IACnD,6BADY;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,UAgCrC;IAEF;;;;OAIG;IACH,8EAHW,MAAM,iDA6Cf;IAEF,oEAAoE;IACpE,oKAIE;IAEF,+BAA+B;IAC/B,gDAsCE;IAEF,qBAQE;IAEF;;;OAGG;IACH,mCAHW,OAAO,oBAAoB,EAAE,YAAY,yGAYlD;IAEF,8BAA8B;IAC9B,wBADY,OAAO,UAOjB;IAEF;;;OAGG;IACH,0BAOC;CACF"}
1
+ {"version":3,"file":"UploaderPublicApi.d.ts","sourceRoot":"","sources":["UploaderPublicApi.js"],"names":[],"mappings":"AAYA;IAOE,8DAA8D;IAC9D,iBADY,OAAO,oBAAoB,EAAE,aAAa,EAGrD;IATD;;;OAGG;IACH,aAAK;IAOL,eAAe;IACf,gCAEC;IAED,yCAEC;IAED;;iBAEC;IAED;;;;;;OAMG;IACH,sBAJW,MAAM;iBACK,OAAO;mBAAa,MAAM;iBAAW,MAAM;sBACpD,OAAO,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAUrD;IAEF;;;;OAIG;IACH,wBAJW,MAAM;iBACK,OAAO;mBAAa,MAAM;iBAAW,MAAM;sBACpD,OAAO,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAUrD;IAEF;;;;OAIG;IACH,4BAJW,MAAM;iBACK,OAAO;mBAAa,MAAM;iBAAW,MAAM;sBACpD,OAAO,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAgBrD;IAEF;;;;OAIG;IACH,0BAJW,IAAI;iBACO,OAAO;mBAAa,MAAM;iBAAW,MAAM;mBAAa,MAAM;sBACvE,OAAO,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAcrD;IAEF,iCAAiC;IACjC,qCADY,MAAM,UAMhB;IAEF,uBAEC;IAED,sBAeE;IAEF,mDAAmD;IACnD,6BADY;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,UAgCrC;IAEF;;;;OAIG;IACH,gBAJmD,OAAO,SAA7C,OAAQ,UAAU,EAAE,gBAAiB,WACvC,MAAM,KACJ,OAAO,sBAAsB,EAAE,eAAe,CAAC,OAAO,CAAC,CA4ClE;IAEF,oEAAoE;IACpE,2BAD0D,OAAO,SAAnD,OAAQ,UAAU,EAAE,sBAAuB,OAErC,UAAU,CAAC,OAAO,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAGxE;IAEF,+BAA+B;IAC/B,gDAsCE;IAEF,qBAQE;IAEF;;;OAGG;IACH,mCAHW,OAAO,oBAAoB,EAAE,YAAY,yGAYlD;IAEF,8BAA8B;IAC9B,wBADY,OAAO,UAOjB;IAEF;;;OAGG;IACH,0BAOC;CACF;2CAjT0C,iCAAiC"}