@uploadcare/file-uploader 1.15.0-alpha.2 → 1.15.0-alpha.20

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 (293) hide show
  1. package/abstract/ActivityBlock.d.ts +5 -5
  2. package/abstract/ActivityBlock.d.ts.map +1 -1
  3. package/abstract/Block.d.ts +3 -9
  4. package/abstract/Block.d.ts.map +1 -1
  5. package/abstract/Block.js +1 -1
  6. package/abstract/CTX.d.ts +6 -6
  7. package/abstract/CTX.d.ts.map +1 -1
  8. package/abstract/LocaleManager.d.ts +3 -3
  9. package/abstract/LocaleManager.d.ts.map +1 -1
  10. package/abstract/ModalManager.d.ts +26 -17
  11. package/abstract/ModalManager.d.ts.map +1 -1
  12. package/abstract/ModalManager.js +32 -18
  13. package/abstract/SecureUploadsManager.d.ts +2 -2
  14. package/abstract/SecureUploadsManager.d.ts.map +1 -1
  15. package/abstract/SolutionBlock.d.ts +2 -2
  16. package/abstract/SolutionBlock.d.ts.map +1 -1
  17. package/abstract/TypedCollection.d.ts +44 -44
  18. package/abstract/TypedCollection.d.ts.map +1 -1
  19. package/abstract/TypedCollection.js +53 -33
  20. package/abstract/TypedData.d.ts +71 -25
  21. package/abstract/TypedData.d.ts.map +1 -1
  22. package/abstract/TypedData.js +74 -17
  23. package/abstract/UploaderBlock.d.ts +10 -10
  24. package/abstract/UploaderBlock.d.ts.map +1 -1
  25. package/abstract/UploaderBlock.js +23 -11
  26. package/abstract/UploaderPublicApi.d.ts +24 -23
  27. package/abstract/UploaderPublicApi.d.ts.map +1 -1
  28. package/abstract/UploaderPublicApi.js +21 -10
  29. package/abstract/ValidationManager.d.ts +125 -6
  30. package/abstract/ValidationManager.d.ts.map +1 -1
  31. package/abstract/ValidationManager.js +1 -1
  32. package/abstract/a11y.d.ts +2 -2
  33. package/abstract/a11y.d.ts.map +1 -1
  34. package/abstract/buildOutputCollectionState.d.ts +1 -1
  35. package/abstract/buildOutputCollectionState.d.ts.map +1 -1
  36. package/abstract/defineComponents.d.ts.map +1 -1
  37. package/abstract/l10nProcessor.d.ts.map +1 -1
  38. package/abstract/loadFileUploaderFrom.d.ts +1 -1
  39. package/abstract/loadFileUploaderFrom.d.ts.map +1 -1
  40. package/abstract/localeRegistry.d.ts.map +1 -1
  41. package/abstract/sharedConfigKey.d.ts.map +1 -1
  42. package/abstract/uploadEntrySchema.d.ts +123 -63
  43. package/abstract/uploadEntrySchema.d.ts.map +1 -1
  44. package/abstract/uploadEntrySchema.js +66 -81
  45. package/blocks/CameraSource/CameraSource.d.ts +9 -9
  46. package/blocks/CameraSource/CameraSource.d.ts.map +1 -1
  47. package/blocks/CameraSource/calcCameraModes.d.ts +1 -1
  48. package/blocks/CameraSource/constants.d.ts.map +1 -1
  49. package/blocks/CloudImageEditor/src/CloudImageEditorBlock.d.ts.map +1 -1
  50. package/blocks/CloudImageEditor/src/CropFrame.d.ts +1 -1
  51. package/blocks/CloudImageEditor/src/EditorFilterControl.js +1 -1
  52. package/blocks/CloudImageEditor/src/EditorImageCropper.d.ts +3 -3
  53. package/blocks/CloudImageEditor/src/EditorImageCropper.js +1 -1
  54. package/blocks/CloudImageEditor/src/EditorImageFader.d.ts +1 -1
  55. package/blocks/CloudImageEditor/src/EditorImageFader.d.ts.map +1 -1
  56. package/blocks/CloudImageEditor/src/EditorImageFader.js +1 -1
  57. package/blocks/CloudImageEditor/src/EditorSlider.d.ts +1 -1
  58. package/blocks/CloudImageEditor/src/EditorSlider.d.ts.map +1 -1
  59. package/blocks/CloudImageEditor/src/EditorToolbar.d.ts +1 -1
  60. package/blocks/CloudImageEditor/src/EditorToolbar.js +1 -1
  61. package/blocks/CloudImageEditor/src/crop-utils.d.ts +14 -14
  62. package/blocks/CloudImageEditor/src/crop-utils.d.ts.map +1 -1
  63. package/blocks/CloudImageEditor/src/cropper-constants.d.ts.map +1 -1
  64. package/blocks/CloudImageEditor/src/lib/applyFocusVisiblePolyfill.d.ts +1 -1
  65. package/blocks/CloudImageEditor/src/lib/applyFocusVisiblePolyfill.d.ts.map +1 -1
  66. package/blocks/CloudImageEditor/src/lib/parseCropPreset.d.ts +1 -1
  67. package/blocks/CloudImageEditor/src/lib/transformationUtils.d.ts +3 -3
  68. package/blocks/CloudImageEditor/src/lib/transformationUtils.d.ts.map +1 -1
  69. package/blocks/CloudImageEditor/src/state.d.ts +4 -4
  70. package/blocks/CloudImageEditor/src/svg-sprite.d.ts.map +1 -1
  71. package/blocks/CloudImageEditor/src/types.d.ts +8 -58
  72. package/blocks/CloudImageEditor/src/types.d.ts.map +1 -1
  73. package/blocks/CloudImageEditorActivity/CloudImageEditorActivity.d.ts +5 -2
  74. package/blocks/CloudImageEditorActivity/CloudImageEditorActivity.d.ts.map +1 -1
  75. package/blocks/CloudImageEditorActivity/CloudImageEditorActivity.js +7 -3
  76. package/blocks/Config/Config.d.ts +3 -12
  77. package/blocks/Config/Config.d.ts.map +1 -1
  78. package/blocks/Config/assertions.d.ts +1 -1
  79. package/blocks/Config/initialConfig.d.ts +1 -1
  80. package/blocks/Config/initialConfig.d.ts.map +1 -1
  81. package/blocks/Config/initialConfig.js +4 -4
  82. package/blocks/Config/normalizeConfigValue.d.ts +2 -1
  83. package/blocks/Config/normalizeConfigValue.d.ts.map +1 -1
  84. package/blocks/Config/normalizeConfigValue.js +18 -109
  85. package/blocks/Config/side-effects.d.ts.map +1 -1
  86. package/blocks/Config/validatorsType.d.ts +37 -0
  87. package/blocks/Config/validatorsType.d.ts.map +1 -0
  88. package/blocks/Config/validatorsType.js +134 -0
  89. package/blocks/DropArea/DropArea.d.ts +3 -2
  90. package/blocks/DropArea/DropArea.d.ts.map +1 -1
  91. package/blocks/DropArea/DropArea.js +20 -2
  92. package/blocks/DropArea/addDropzone.d.ts.map +1 -1
  93. package/blocks/DropArea/drop-area.css +4 -2
  94. package/blocks/DropArea/getDropItems.d.ts +2 -2
  95. package/blocks/DropArea/getDropItems.d.ts.map +1 -1
  96. package/blocks/ExternalSource/ExternalSource.d.ts +3 -3
  97. package/blocks/ExternalSource/ExternalSource.d.ts.map +1 -1
  98. package/blocks/ExternalSource/ExternalSource.js +0 -1
  99. package/blocks/ExternalSource/MessageBridge.d.ts +3 -3
  100. package/blocks/ExternalSource/MessageBridge.d.ts.map +1 -1
  101. package/blocks/ExternalSource/query-string.d.ts.map +1 -1
  102. package/blocks/ExternalSource/types.d.ts +64 -64
  103. package/blocks/ExternalSource/types.d.ts.map +1 -1
  104. package/blocks/FileItem/FileItem.d.ts +13 -40
  105. package/blocks/FileItem/FileItem.d.ts.map +1 -1
  106. package/blocks/FileItem/FileItem.js +126 -179
  107. package/blocks/FileItem/FileItemConfig.d.ts +28 -0
  108. package/blocks/FileItem/FileItemConfig.d.ts.map +1 -0
  109. package/blocks/FileItem/FileItemConfig.js +74 -0
  110. package/blocks/FileItem/file-item.css +39 -0
  111. package/blocks/Img/ImgBase.d.ts +3 -3
  112. package/blocks/Img/ImgBase.d.ts.map +1 -1
  113. package/blocks/Img/ImgBase.js +9 -9
  114. package/blocks/Img/ImgConfig.d.ts.map +1 -1
  115. package/blocks/Img/configurations.d.ts.map +1 -1
  116. package/blocks/Modal/Modal.d.ts +21 -2
  117. package/blocks/Modal/Modal.d.ts.map +1 -1
  118. package/blocks/Modal/Modal.js +37 -18
  119. package/blocks/ProgressBar/ProgressBar.d.ts +6 -1
  120. package/blocks/ProgressBar/ProgressBar.d.ts.map +1 -1
  121. package/blocks/ProgressBar/ProgressBar.js +41 -44
  122. package/blocks/ProgressBar/progress-bar.css +9 -6
  123. package/blocks/Range/Range.d.ts.map +1 -1
  124. package/blocks/SimpleBtn/SimpleBtn.d.ts +2 -2
  125. package/blocks/SimpleBtn/SimpleBtn.d.ts.map +1 -1
  126. package/blocks/SimpleBtn/SimpleBtn.js +1 -1
  127. package/blocks/SourceBtn/SourceBtn.d.ts +2 -5
  128. package/blocks/SourceBtn/SourceBtn.d.ts.map +1 -1
  129. package/blocks/SourceBtn/SourceBtn.js +5 -5
  130. package/blocks/SourceList/SourceList.js +2 -2
  131. package/blocks/Spinner/Spinner.d.ts.map +1 -1
  132. package/blocks/Thumb/Thumb.d.ts +51 -0
  133. package/blocks/Thumb/Thumb.d.ts.map +1 -0
  134. package/blocks/Thumb/Thumb.js +220 -0
  135. package/blocks/Thumb/thumb.css +4 -0
  136. package/blocks/UploadCtxProvider/EventEmitter.d.ts +20 -20
  137. package/blocks/UploadCtxProvider/EventEmitter.d.ts.map +1 -1
  138. package/blocks/UploadCtxProvider/UploadCtxProvider.d.ts +4 -4
  139. package/blocks/UploadCtxProvider/UploadCtxProvider.d.ts.map +1 -1
  140. package/blocks/UploadList/UploadList.d.ts +4 -2
  141. package/blocks/UploadList/UploadList.d.ts.map +1 -1
  142. package/blocks/UploadList/UploadList.js +3 -1
  143. package/blocks/svg-backgrounds/svg-backgrounds.d.ts +3 -3
  144. package/blocks/svg-backgrounds/svg-backgrounds.d.ts.map +1 -1
  145. package/blocks/themes/uc-basic/common.css +1 -1
  146. package/blocks/themes/uc-basic/index.css +1 -0
  147. package/blocks/themes/uc-basic/svg-sprite.d.ts.map +1 -1
  148. package/blocks/utils/UploadSource.d.ts.map +1 -1
  149. package/blocks/utils/debounce.d.ts +3 -1
  150. package/blocks/utils/debounce.d.ts.map +1 -1
  151. package/blocks/{CloudImageEditor/src/lib → utils}/preloadImage.js +1 -1
  152. package/blocks/utils/resizeImage.d.ts +1 -1
  153. package/blocks/utils/resizeImage.d.ts.map +1 -1
  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.map +1 -1
  159. package/index.d.ts +2 -0
  160. package/index.js +2 -0
  161. package/index.ssr.d.ts +59 -0
  162. package/index.ssr.d.ts.map +1 -1
  163. package/index.ssr.js +79 -13
  164. package/locales/file-uploader/ar.d.ts +1 -0
  165. package/locales/file-uploader/ar.js +1 -0
  166. package/locales/file-uploader/az.d.ts +1 -0
  167. package/locales/file-uploader/az.js +1 -0
  168. package/locales/file-uploader/ca.d.ts +1 -0
  169. package/locales/file-uploader/ca.js +1 -0
  170. package/locales/file-uploader/cs.d.ts +1 -0
  171. package/locales/file-uploader/cs.js +1 -0
  172. package/locales/file-uploader/da.d.ts +1 -0
  173. package/locales/file-uploader/da.js +1 -0
  174. package/locales/file-uploader/de.d.ts +1 -0
  175. package/locales/file-uploader/de.js +1 -0
  176. package/locales/file-uploader/el.d.ts +1 -0
  177. package/locales/file-uploader/el.js +1 -0
  178. package/locales/file-uploader/en.d.ts +1 -0
  179. package/locales/file-uploader/en.js +1 -0
  180. package/locales/file-uploader/es.d.ts +1 -0
  181. package/locales/file-uploader/es.js +1 -0
  182. package/locales/file-uploader/et.d.ts +1 -0
  183. package/locales/file-uploader/et.js +1 -0
  184. package/locales/file-uploader/fi.d.ts +1 -0
  185. package/locales/file-uploader/fi.js +1 -0
  186. package/locales/file-uploader/fr.d.ts +1 -0
  187. package/locales/file-uploader/fr.js +1 -0
  188. package/locales/file-uploader/he.d.ts +1 -0
  189. package/locales/file-uploader/he.js +1 -0
  190. package/locales/file-uploader/hy.d.ts +1 -0
  191. package/locales/file-uploader/hy.js +1 -0
  192. package/locales/file-uploader/is.d.ts +1 -0
  193. package/locales/file-uploader/is.js +1 -0
  194. package/locales/file-uploader/it.d.ts +1 -0
  195. package/locales/file-uploader/it.js +1 -0
  196. package/locales/file-uploader/ja.d.ts +1 -0
  197. package/locales/file-uploader/ja.js +1 -0
  198. package/locales/file-uploader/ka.d.ts +1 -0
  199. package/locales/file-uploader/ka.js +1 -0
  200. package/locales/file-uploader/kk.d.ts +1 -0
  201. package/locales/file-uploader/kk.js +1 -0
  202. package/locales/file-uploader/ko.d.ts +1 -0
  203. package/locales/file-uploader/ko.js +1 -0
  204. package/locales/file-uploader/lv.d.ts +1 -0
  205. package/locales/file-uploader/lv.js +1 -0
  206. package/locales/file-uploader/nb.d.ts +1 -0
  207. package/locales/file-uploader/nb.js +1 -0
  208. package/locales/file-uploader/nl.d.ts +1 -0
  209. package/locales/file-uploader/nl.js +1 -0
  210. package/locales/file-uploader/pl.d.ts +1 -0
  211. package/locales/file-uploader/pl.js +1 -0
  212. package/locales/file-uploader/pt.d.ts +1 -0
  213. package/locales/file-uploader/pt.js +1 -0
  214. package/locales/file-uploader/ro.d.ts +1 -0
  215. package/locales/file-uploader/ro.js +1 -0
  216. package/locales/file-uploader/ru.d.ts +1 -0
  217. package/locales/file-uploader/ru.js +1 -0
  218. package/locales/file-uploader/sk.d.ts +1 -0
  219. package/locales/file-uploader/sk.js +1 -0
  220. package/locales/file-uploader/sr.d.ts +1 -0
  221. package/locales/file-uploader/sr.js +1 -0
  222. package/locales/file-uploader/sv.d.ts +1 -0
  223. package/locales/file-uploader/sv.js +1 -0
  224. package/locales/file-uploader/tr.d.ts +1 -0
  225. package/locales/file-uploader/tr.js +1 -0
  226. package/locales/file-uploader/uk.d.ts +1 -0
  227. package/locales/file-uploader/uk.js +1 -0
  228. package/locales/file-uploader/vi.d.ts +1 -0
  229. package/locales/file-uploader/vi.js +1 -0
  230. package/locales/file-uploader/zh-TW.d.ts +1 -0
  231. package/locales/file-uploader/zh-TW.js +1 -0
  232. package/locales/file-uploader/zh.d.ts +1 -0
  233. package/locales/file-uploader/zh.js +1 -0
  234. package/package.json +6 -5
  235. package/solutions/file-uploader/inline/FileUploaderInline.d.ts +2 -2
  236. package/solutions/file-uploader/inline/FileUploaderInline.d.ts.map +1 -1
  237. package/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts +21 -2
  238. package/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts.map +1 -1
  239. package/solutions/file-uploader/minimal/FileUploaderMinimal.js +102 -23
  240. package/solutions/file-uploader/minimal/index.css +11 -28
  241. package/solutions/file-uploader/minimal/index.d.ts +1 -16
  242. package/solutions/file-uploader/minimal/index.js +1 -18
  243. package/solutions/file-uploader/regular/FileUploaderRegular.d.ts +3 -5
  244. package/solutions/file-uploader/regular/FileUploaderRegular.d.ts.map +1 -1
  245. package/solutions/file-uploader/regular/FileUploaderRegular.js +1 -15
  246. package/types/exported.d.ts +4 -3
  247. package/types/jsx.d.ts +1 -1
  248. package/utils/browser-info.d.ts +13 -0
  249. package/utils/browser-info.d.ts.map +1 -0
  250. package/utils/browser-info.js +22 -0
  251. package/utils/browser-info.test.d.ts +2 -0
  252. package/utils/browser-info.test.d.ts.map +1 -0
  253. package/utils/browser-info.test.js +109 -0
  254. package/utils/cdn-utils.d.ts +3 -3
  255. package/utils/cdn-utils.d.ts.map +1 -1
  256. package/utils/fileTypes.d.ts +5 -1
  257. package/utils/fileTypes.d.ts.map +1 -1
  258. package/utils/fileTypes.js +18 -2
  259. package/utils/getPluralForm.d.ts.map +1 -1
  260. package/utils/isSecureTokenExpired.d.ts +1 -1
  261. package/utils/memoize.d.ts.map +1 -1
  262. package/utils/mixinClass.d.ts +3 -1
  263. package/utils/mixinClass.d.ts.map +1 -1
  264. package/utils/prettyBytes.d.ts.map +1 -1
  265. package/utils/template-utils.d.ts +1 -1
  266. package/utils/template-utils.d.ts.map +1 -1
  267. package/utils/toKebabCase.d.ts.map +1 -1
  268. package/utils/transparentPixelSrc.d.ts.map +1 -1
  269. package/utils/uniqueArray.d.ts.map +1 -1
  270. package/utils/validators/collection/validateCollectionUploadError.d.ts +1 -1
  271. package/utils/validators/collection/validateMultiple.d.ts +1 -1
  272. package/utils/validators/file/validateFileType.d.ts +1 -1
  273. package/utils/validators/file/validateIsImage.d.ts +1 -1
  274. package/utils/validators/file/validateMaxSizeLimit.d.ts +1 -1
  275. package/utils/validators/file/validateUploadError.d.ts +1 -1
  276. package/utils/waitForAttribute.d.ts +1 -1
  277. package/utils/waitForAttribute.d.ts.map +1 -1
  278. package/web/file-uploader.iife.min.js +4 -4
  279. package/web/file-uploader.min.js +4 -4
  280. package/web/uc-basic.min.css +1 -1
  281. package/web/uc-cloud-image-editor.min.js +4 -4
  282. package/web/uc-file-uploader-inline.min.css +1 -1
  283. package/web/uc-file-uploader-inline.min.js +4 -4
  284. package/web/uc-file-uploader-minimal.min.css +1 -1
  285. package/web/uc-file-uploader-minimal.min.js +4 -4
  286. package/web/uc-file-uploader-regular.min.css +1 -1
  287. package/web/uc-file-uploader-regular.min.js +4 -4
  288. package/web/uc-img.min.js +1 -1
  289. package/blocks/utils/supportCapture.d.ts +0 -2
  290. package/blocks/utils/supportCapture.d.ts.map +0 -1
  291. package/blocks/utils/supportCapture.js +0 -3
  292. /package/blocks/{CloudImageEditor/src/lib → utils}/preloadImage.d.ts +0 -0
  293. /package/blocks/{CloudImageEditor/src/lib → utils}/preloadImage.d.ts.map +0 -0
@@ -0,0 +1,220 @@
1
+ //@ts-check
2
+
3
+ import { createCdnUrl, createCdnUrlModifiers, createOriginalUrl } from '../../utils/cdn-utils.js';
4
+ import { preloadImage } from '../utils/preloadImage.js';
5
+ import { FileItemConfig } from '../FileItem/FileItemConfig.js';
6
+ import { fileCssBg } from '../svg-backgrounds/svg-backgrounds.js';
7
+ import { debounce } from '../utils/debounce.js';
8
+ import { generateThumb } from '../utils/resizeImage.js';
9
+
10
+ const CDN_MAX_OUTPUT_DIMENSION = 3000;
11
+ export class Thumb extends FileItemConfig {
12
+ /** @private */
13
+ _renderedGridOnce = false;
14
+
15
+ /**
16
+ * @private
17
+ * @type {IntersectionObserverEntry['boundingClientRect'] | null}
18
+ */
19
+ _thumbRect = null;
20
+
21
+ _isIntersecting = false;
22
+
23
+ _firstViewMode = this.cfg.filesViewMode;
24
+
25
+ constructor() {
26
+ super();
27
+
28
+ this.init$ = {
29
+ ...this.init$,
30
+ thumbUrl: '',
31
+ badgeIcon: '',
32
+ uid: '',
33
+ };
34
+ }
35
+
36
+ _calculateThumbSize(force = false) {
37
+ if (force) {
38
+ this._thumbRect = this.getBoundingClientRect();
39
+ }
40
+
41
+ let size = Math.max(
42
+ parseInt(String(this?._thumbRect?.height || 0)),
43
+ parseInt(String(this?._thumbRect?.width || 0)),
44
+ this.cfg.thumbSize,
45
+ );
46
+
47
+ if (window.devicePixelRatio > 1) {
48
+ size *= window.devicePixelRatio;
49
+ }
50
+
51
+ return Math.min(size, CDN_MAX_OUTPUT_DIMENSION);
52
+ }
53
+
54
+ /** @private */
55
+ _generateThumbnail = this._withEntry(async (entry, force = false) => {
56
+ const fileInfo = entry.getValue('fileInfo');
57
+ const isImage = entry.getValue('isImage');
58
+ const uuid = entry.getValue('uuid');
59
+ const currentThumbUrl = entry.getValue('thumbUrl');
60
+
61
+ let size = this._calculateThumbSize(force);
62
+
63
+ if (fileInfo && isImage && uuid) {
64
+ let thumbUrl = await this.proxyUrl(
65
+ createCdnUrl(
66
+ createOriginalUrl(this.cfg.cdnCname, uuid),
67
+ createCdnUrlModifiers(entry.getValue('cdnUrlModifiers'), `stretch/off`, `scale_crop/${size}x${size}/center`),
68
+ ),
69
+ );
70
+
71
+ const { promise } = preloadImage(thumbUrl);
72
+
73
+ promise
74
+ .then(() => {
75
+ entry.setValue('thumbUrl', thumbUrl);
76
+ currentThumbUrl?.startsWith('blob:') && URL.revokeObjectURL(currentThumbUrl);
77
+ })
78
+ .catch(() => {
79
+ console.error('Failed to load image', thumbUrl);
80
+ });
81
+
82
+ return;
83
+ }
84
+
85
+ if (entry.getValue('thumbUrl')) {
86
+ return;
87
+ }
88
+
89
+ const file = entry.getValue('file');
90
+ if (file?.type.includes('image')) {
91
+ try {
92
+ let thumbUrl = await generateThumb(file, size);
93
+ entry.setValue('thumbUrl', thumbUrl);
94
+ } catch (err) {
95
+ let color = window.getComputedStyle(this).getPropertyValue('--uc-muted-foreground');
96
+ entry.setValue('thumbUrl', fileCssBg(color));
97
+ }
98
+ } else {
99
+ let color = window.getComputedStyle(this).getPropertyValue('--uc-muted-foreground');
100
+ entry.setValue('thumbUrl', fileCssBg(color));
101
+ }
102
+ });
103
+
104
+ _debouncedGenerateThumb = debounce(this._generateThumbnail.bind(this), 100);
105
+
106
+ /**
107
+ * @private
108
+ * @param {IntersectionObserverEntry[]} entries
109
+ */
110
+ _observerCallback(entries) {
111
+ const [entry] = entries;
112
+ this._isIntersecting = entry.isIntersecting;
113
+
114
+ if (entry.isIntersecting) {
115
+ this._thumbRect = entry.boundingClientRect;
116
+ this._debouncedGenerateThumb();
117
+ this._observer?.disconnect();
118
+ }
119
+
120
+ if (entry.intersectionRatio === 0) {
121
+ this._debouncedGenerateThumb.cancel();
122
+ }
123
+ }
124
+
125
+ _reset() {
126
+ super._reset();
127
+ this._debouncedGenerateThumb.cancel();
128
+ }
129
+
130
+ /**
131
+ * @private
132
+ * @param {String} id
133
+ */
134
+ _handleEntryId(id) {
135
+ this._reset();
136
+
137
+ let entry = this.uploadCollection?.read(id);
138
+ this._entry = entry;
139
+
140
+ if (!entry) {
141
+ return;
142
+ }
143
+
144
+ this._subEntry('fileInfo', (fileInfo) => {
145
+ if (fileInfo?.isImage && this._isIntersecting) {
146
+ this._debouncedGenerateThumb();
147
+ }
148
+ });
149
+
150
+ this._subEntry('thumbUrl', (thumbUrl) => {
151
+ this.$.thumbUrl = thumbUrl ? `url(${thumbUrl})` : '';
152
+ });
153
+
154
+ this._subEntry('cdnUrlModifiers', () => {
155
+ if (this._isIntersecting) {
156
+ this._debouncedGenerateThumb();
157
+ }
158
+ });
159
+
160
+ if (this._isIntersecting) {
161
+ this._debouncedGenerateThumb();
162
+ }
163
+ }
164
+
165
+ initCallback() {
166
+ super.initCallback();
167
+
168
+ this.defineAccessor('badgeIcon', (/** @type {string} */ val) => (this.$.badgeIcon = val));
169
+
170
+ this.defineAccessor('uid', (/** @type {string} */ value) => {
171
+ this.set$({ uid: value });
172
+ });
173
+
174
+ this.sub('uid', (uid) => {
175
+ this._handleEntryId(uid);
176
+ });
177
+
178
+ this.subConfigValue('filesViewMode', (viewMode) => {
179
+ if (viewMode === 'grid' && !this._renderedGridOnce) {
180
+ if (this._firstViewMode === 'list') {
181
+ this._debouncedGenerateThumb(true);
182
+ }
183
+ this._renderedGridOnce = true;
184
+ }
185
+ });
186
+
187
+ this.setAttribute('role', 'img');
188
+ }
189
+
190
+ connectedCallback() {
191
+ super.connectedCallback();
192
+
193
+ this._observer = new window.IntersectionObserver(this._observerCallback.bind(this), { threshold: 0.1 });
194
+
195
+ this._observer.observe(this);
196
+ }
197
+
198
+ disconnectedCallback() {
199
+ super.disconnectedCallback();
200
+
201
+ this._entrySubs = new Set();
202
+ this._debouncedGenerateThumb.cancel();
203
+ this._observer?.disconnect();
204
+ }
205
+ }
206
+
207
+ Thumb.template = /* html */ `
208
+ <div class="uc-thumb" set="style.backgroundImage: thumbUrl">
209
+ <div class="uc-badge">
210
+ <uc-icon set="@name: badgeIcon"></uc-icon>
211
+ </div>
212
+ </div>
213
+ `;
214
+
215
+ Thumb.bindAttributes({
216
+ // @ts-expect-error TODO: fix types inside symbiote
217
+ badgeIcon: null,
218
+ // @ts-expect-error TODO: fix types inside symbiote
219
+ uid: null,
220
+ });
@@ -0,0 +1,4 @@
1
+ uc-thumb {
2
+ width: 100%;
3
+ height: 100%;
4
+ }
@@ -61,9 +61,9 @@ export class EventEmitter {
61
61
  */
62
62
  private _debugPrint;
63
63
  /** @param {import('../../abstract/Block.js').Block} target */
64
- bindTarget(target: import('../../abstract/Block.js').Block): void;
64
+ bindTarget(target: import("../../abstract/Block.js").Block): void;
65
65
  /** @param {import('../../abstract/Block.js').Block} target */
66
- unbindTarget(target: import('../../abstract/Block.js').Block): void;
66
+ unbindTarget(target: import("../../abstract/Block.js").Block): void;
67
67
  /**
68
68
  * @private
69
69
  * @template {(typeof EventType)[keyof typeof EventType]} T
@@ -78,30 +78,30 @@ export class EventEmitter {
78
78
  * @param {TDebounce extends false | undefined ? unknown : () => unknown} [payload]
79
79
  * @param {{ debounce?: TDebounce }} [options]
80
80
  */
81
- emit<T extends "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", TDebounce extends number | boolean | undefined>(type: T, payload?: (TDebounce extends false | undefined ? unknown : () => unknown) | undefined, { debounce }?: {
82
- debounce?: TDebounce | undefined;
83
- } | undefined): void;
81
+ emit<T extends (typeof EventType)[keyof typeof EventType], TDebounce extends boolean | number | undefined>(type: T, payload?: TDebounce extends false | undefined ? unknown : () => unknown, { debounce }?: {
82
+ debounce?: TDebounce;
83
+ }): void;
84
84
  }
85
85
  export type EventPayload = {
86
- [EventType.FILE_ADDED]: import('../../index.js').OutputFileEntry<'idle'>;
87
- [EventType.FILE_REMOVED]: import('../../index.js').OutputFileEntry<'removed'>;
88
- [EventType.FILE_UPLOAD_START]: import('../../index.js').OutputFileEntry<'uploading'>;
89
- [EventType.FILE_UPLOAD_PROGRESS]: import('../../index.js').OutputFileEntry<'uploading'>;
90
- [EventType.FILE_UPLOAD_SUCCESS]: import('../../index.js').OutputFileEntry<'success'>;
91
- [EventType.FILE_UPLOAD_FAILED]: import('../../index.js').OutputFileEntry<'failed'>;
92
- [EventType.FILE_URL_CHANGED]: import('../../index.js').OutputFileEntry<'success'>;
86
+ [EventType.FILE_ADDED]: import("../../index.js").OutputFileEntry<"idle">;
87
+ [EventType.FILE_REMOVED]: import("../../index.js").OutputFileEntry<"removed">;
88
+ [EventType.FILE_UPLOAD_START]: import("../../index.js").OutputFileEntry<"uploading">;
89
+ [EventType.FILE_UPLOAD_PROGRESS]: import("../../index.js").OutputFileEntry<"uploading">;
90
+ [EventType.FILE_UPLOAD_SUCCESS]: import("../../index.js").OutputFileEntry<"success">;
91
+ [EventType.FILE_UPLOAD_FAILED]: import("../../index.js").OutputFileEntry<"failed">;
92
+ [EventType.FILE_URL_CHANGED]: import("../../index.js").OutputFileEntry<"success">;
93
93
  [EventType.MODAL_OPEN]: void;
94
94
  [EventType.MODAL_CLOSE]: void;
95
95
  [EventType.ACTIVITY_CHANGE]: {
96
- activity: import('../../abstract/ActivityBlock.js').ActivityType;
96
+ activity: import("../../abstract/ActivityBlock.js").ActivityType;
97
97
  };
98
98
  [EventType.UPLOAD_CLICK]: void;
99
- [EventType.DONE_CLICK]: import('../../index.js').OutputCollectionState;
100
- [EventType.COMMON_UPLOAD_START]: import('../../index.js').OutputCollectionState<'uploading'>;
101
- [EventType.COMMON_UPLOAD_PROGRESS]: import('../../index.js').OutputCollectionState<'uploading'>;
102
- [EventType.COMMON_UPLOAD_SUCCESS]: import('../../index.js').OutputCollectionState<'success'>;
103
- [EventType.COMMON_UPLOAD_FAILED]: import('../../index.js').OutputCollectionState<'failed'>;
104
- [EventType.CHANGE]: import('../../index.js').OutputCollectionState;
105
- [EventType.GROUP_CREATED]: import('../../index.js').OutputCollectionState<'success', 'has-group'>;
99
+ [EventType.DONE_CLICK]: import("../../index.js").OutputCollectionState;
100
+ [EventType.COMMON_UPLOAD_START]: import("../../index.js").OutputCollectionState<"uploading">;
101
+ [EventType.COMMON_UPLOAD_PROGRESS]: import("../../index.js").OutputCollectionState<"uploading">;
102
+ [EventType.COMMON_UPLOAD_SUCCESS]: import("../../index.js").OutputCollectionState<"success">;
103
+ [EventType.COMMON_UPLOAD_FAILED]: import("../../index.js").OutputCollectionState<"failed">;
104
+ [EventType.CHANGE]: import("../../index.js").OutputCollectionState;
105
+ [EventType.GROUP_CREATED]: import("../../index.js").OutputCollectionState<"success", "has-group">;
106
106
  };
107
107
  //# sourceMappingURL=EventEmitter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventEmitter.d.ts","sourceRoot":"","sources":["EventEmitter.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;IAmBE,uDAAuD;IACvD,kCADsB,OAAO,EAAE,KAAK,IAAI,EAGvC;IArBD;;;OAGG;IACH,sBAA0B;IAE1B;;;OAGG;IACH,iBAAqB;IAErB;;;OAGG;IACH,oBAAmB;IAOnB,8DAA8D;IAC9D,mBADY,OAAO,yBAAyB,EAAE,KAAK,QAGlD;IAED,8DAA8D;IAC9D,qBADY,OAAO,yBAAyB,EAAE,KAAK,QAGlD;IAED;;;;;OAKG;IACH,kBAaC;IAED;;;;;;OAMG;IACH,ifAHiE,OAAO;;yBAkBvE;CACF;2BAtGY;IACZ,CAAK,UAAU,UAAU,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAK,UAAU,YAAY,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAClF,CAAK,UAAU,iBAAiB,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACzF,CAAK,UAAU,oBAAoB,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IAC5F,CAAK,UAAU,mBAAmB,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACzF,CAAK,UAAU,kBAAkB,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvF,CAAK,UAAU,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACtF,CAAK,UAAU,UAAU,CAAC,EAAE,IAAI,CAAC;IACjC,CAAK,UAAU,WAAW,CAAC,EAAE,IAAI,CAAC;IAClC,CAAK,UAAU,eAAe,CAAC,EAAE;QACjC,QAAc,EAAE,OAAO,iCAAiC,EAAE,YAAY,CAAC;KAClE,CAAC;IACN,CAAK,UAAU,YAAY,CAAC,EAAE,IAAI,CAAC;IACnC,CAAK,UAAU,UAAU,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC;IAC3E,CAAK,UAAU,mBAAmB,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACjG,CAAK,UAAU,sBAAsB,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACpG,CAAK,UAAU,qBAAqB,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACjG,CAAK,UAAU,oBAAoB,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC/F,CAAK,UAAU,MAAM,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC;IACvE,CAAK,UAAU,aAAa,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;CACnG"}
1
+ {"version":3,"file":"EventEmitter.d.ts","sourceRoot":"","sources":["EventEmitter.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;IAmBE,uDAAuD;IACvD,wBADY,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAGvC;IArBD;;;OAGG;IACH,sBAA0B;IAE1B;;;OAGG;IACH,iBAAqB;IAErB;;;OAGG;IACH,oBAAmB;IAOnB,8DAA8D;IAC9D,mBADY,OAAO,yBAAyB,EAAE,KAAK,QAGlD;IAED,8DAA8D;IAC9D,qBADY,OAAO,yBAAyB,EAAE,KAAK,QAGlD;IAED;;;;;OAKG;IACH,kBAaC;IAED;;;;;;OAMG;IACH,KAN0D,CAAC,SAA9C,CAAE,OAAO,SAAS,EAAE,MAAM,OAAO,SAAS,CAAE,EACb,SAAS,SAAvC,OAAO,GAAG,MAAM,GAAG,SAAU,QAChC,CAAC,YACD,SAAS,SAAS,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,OAAO,iBAC7D;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,QAiBlC;CACF;2BAtGY;IACZ,CAAK,SAAS,CAAC,UAAU,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAK,SAAS,CAAC,YAAY,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAClF,CAAK,SAAS,CAAC,iBAAiB,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACzF,CAAK,SAAS,CAAC,oBAAoB,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IAC5F,CAAK,SAAS,CAAC,mBAAmB,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACzF,CAAK,SAAS,CAAC,kBAAkB,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvF,CAAK,SAAS,CAAC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACtF,CAAK,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IACjC,CAAK,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAClC,CAAK,SAAS,CAAC,eAAe,CAAC,EAAE;QAC3B,QAAQ,EAAE,OAAO,iCAAiC,EAAE,YAAY,CAAC;KAClE,CAAC;IACN,CAAK,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;IACnC,CAAK,SAAS,CAAC,UAAU,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC;IAC3E,CAAK,SAAS,CAAC,mBAAmB,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACjG,CAAK,SAAS,CAAC,sBAAsB,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACpG,CAAK,SAAS,CAAC,qBAAqB,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACjG,CAAK,SAAS,CAAC,oBAAoB,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC/F,CAAK,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC;IACvE,CAAK,SAAS,CAAC,aAAa,CAAC,EAAE,OAAO,gBAAgB,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;CACnG"}
@@ -1,7 +1,7 @@
1
- export type UploadCtxProvider = (new () => {
2
- addEventListener<T extends "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">(type: T, listener: (e: CustomEvent<import("./EventEmitter.js").EventPayload[T]>) => void, options?: boolean | AddEventListenerOptions): void;
3
- removeEventListener<T_1 extends "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">(type: T_1, listener: (e: CustomEvent<import("./EventEmitter.js").EventPayload[T_1]>) => void, options?: boolean | EventListenerOptions): void;
4
- } & UploadCtxProviderClass) & Omit<typeof UploadCtxProviderClass, "new">;
1
+ export type UploadCtxProvider = import("../../utils/mixinClass.js").MixinClass<typeof UploadCtxProviderClass, {
2
+ addEventListener<T extends (typeof import("./EventEmitter.js").EventType)[keyof typeof import("./EventEmitter.js").EventType]>(type: T, listener: (e: CustomEvent<import("./EventEmitter.js").EventPayload[T]>) => void, options?: boolean | AddEventListenerOptions): void;
3
+ removeEventListener<T extends (typeof import("./EventEmitter.js").EventType)[keyof typeof import("./EventEmitter.js").EventType]>(type: T, listener: (e: CustomEvent<import("./EventEmitter.js").EventPayload[T]>) => void, options?: boolean | EventListenerOptions): void;
4
+ }>;
5
5
  /**
6
6
  * @typedef {import('../../utils/mixinClass.js').MixinClass<
7
7
  * typeof UploadCtxProviderClass,
@@ -1 +1 @@
1
- {"version":3,"file":"UploadCtxProvider.d.ts","sourceRoot":"","sources":["UploadCtxProvider.js"],"names":[],"mappings":";2dA8BoF,IAAI,YACrE,OAAO,GAAG,uBAAuB,GAC1C,IAAI;oeAKsE,IAAI,YACrE,OAAO,GAAG,oBAAoB,GACvC,IAAI;;AAjBd;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,kDAAoH;AAxCpH;CAcC;;;;8BAhB6B,iCAAiC;0BACrC,mBAAmB"}
1
+ {"version":3,"file":"UploadCtxProvider.d.ts","sourceRoot":"","sources":["UploadCtxProvider.js"],"names":[],"mappings":"gCAuBa,OAAO,2BAA2B,EAAE,UAAU,CAC1D,OAAW,sBAAsB,EACjC;IACM,gBAAgB,CACd,CAAC,SAAS,CAAC,cAAc,mBAAmB,EAAE,SAAS,CAAC,CAAC,MAAM,cAAc,mBAAmB,EAAE,SAAS,CAAC,EAE5G,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,OAAO,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAC/E,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC1C,IAAI,CAAC;IACR,mBAAmB,CACjB,CAAC,SAAS,CAAC,cAAc,mBAAmB,EAAE,SAAS,CAAC,CAAC,MAAM,cAAc,mBAAmB,EAAE,SAAS,CAAC,EAE5G,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,OAAO,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAC/E,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACvC,IAAI,CAAC;CACT,CACF;AAnBJ;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,gCAA4C,iBAAiB,CAAuD;AAxCpH;CAcC;;;;8BAhB6B,iCAAiC;0BACrC,mBAAmB"}
@@ -1,3 +1,4 @@
1
+ /** @typedef {'grid' | 'list'} FilesViewMode */
1
2
  /**
2
3
  * @typedef {{
3
4
  * total: number;
@@ -24,8 +25,8 @@ export class UploadList extends UploaderBlock {
24
25
  '*commonProgress': number;
25
26
  '*uploadList': never[];
26
27
  '*uploadQueue': import("@uploadcare/upload-client").Queue;
27
- '*collectionErrors': any[];
28
- '*collectionState': import("../../types").OutputCollectionState<import("../../types").OutputCollectionStatus, "maybe-has-group"> | null;
28
+ '*collectionErrors': ReturnType<import("../../types").OutputErrorCollection>[];
29
+ '*collectionState': import("../../types").OutputCollectionState | null;
29
30
  '*groupInfo': import("@uploadcare/upload-client").UploadcareGroup | null;
30
31
  '*uploadTrigger': Set<string>;
31
32
  '*secureUploadsManager': import("../../abstract/SecureUploadsManager.js").SecureUploadsManager | null;
@@ -48,6 +49,7 @@ export class UploadList extends UploaderBlock {
48
49
  export namespace UploadList {
49
50
  let template: string;
50
51
  }
52
+ export type FilesViewMode = "grid" | "list";
51
53
  export type Summary = {
52
54
  total: number;
53
55
  succeed: number;
@@ -1 +1 @@
1
- {"version":3,"file":"UploadList.d.ts","sourceRoot":"","sources":["UploadList.js"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AAEH;IAKE,4BAAoD;IAKlD;;;;;;;;;;;;;;;;;;;;;;;;;;MA0BC;IAGH,eAAe;IACf,yCASQ;IAER,eAAe;IACf,4BAuCC;IAED;;;OAGG;IACH,uBAmBC;CAwEF;;;;sBApMY;IACZ,KAAS,EAAE,MAAM,CAAC;IAClB,OAAW,EAAE,MAAM,CAAC;IACpB,SAAa,EAAE,MAAM,CAAC;IACtB,MAAU,EAAE,MAAM,CAAC;CAChB;8BAV0B,iCAAiC"}
1
+ {"version":3,"file":"UploadList.d.ts","sourceRoot":"","sources":["UploadList.js"],"names":[],"mappings":"AAMA,+CAA+C;AAE/C;;;;;;;GAOG;AAEH;IAKE,4BAAoD;IAKlD;;;;;;;;;;;;;;;;+CALwC,aAAU;mCAOhD,aAAQ;6BAGN,2BACL;;wCAMK,wCAAwB;;;;;;MAc3B;IAGH,eAAe;IACf,yCASQ;IAER,eAAe;IACf,4BAuCC;IAED;;;OAGG;IACH,uBAmBC;CAwEF;;;;4BAvMa,MAAM,GAAG,MAAM;sBAGhB;IACR,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;8BAZ0B,iCAAiC"}
@@ -4,6 +4,8 @@ import { UploaderBlock } from '../../abstract/UploaderBlock.js';
4
4
  import { EventType } from '../UploadCtxProvider/EventEmitter.js';
5
5
  import { throttle } from '../utils/throttle.js';
6
6
 
7
+ /** @typedef {'grid' | 'list'} FilesViewMode */
8
+
7
9
  /**
8
10
  * @typedef {{
9
11
  * total: number;
@@ -149,7 +151,7 @@ export class UploadList extends UploaderBlock {
149
151
  }
150
152
  });
151
153
 
152
- this.subConfigValue('displayUploadList', (mode) => {
154
+ this.subConfigValue('filesViewMode', (mode) => {
153
155
  this.setAttribute('mode', mode);
154
156
  });
155
157
 
@@ -3,15 +3,15 @@
3
3
  * @param {String} [color2]
4
4
  * @returns {String}
5
5
  */
6
- export function checkerboardCssBg(color1?: string | undefined, color2?: string | undefined): string;
6
+ export function checkerboardCssBg(color1?: string, color2?: string): string;
7
7
  /**
8
8
  * @param {String} [color]
9
9
  * @returns {String}
10
10
  */
11
- export function strokesCssBg(color?: string | undefined): string;
11
+ export function strokesCssBg(color?: string): string;
12
12
  /**
13
13
  * @param {String} [color]
14
14
  * @returns {String}
15
15
  */
16
- export function fileCssBg(color?: string | undefined, width?: number, height?: number): string;
16
+ export function fileCssBg(color?: string, width?: number, height?: number): string;
17
17
  //# sourceMappingURL=svg-backgrounds.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"svg-backgrounds.d.ts","sourceRoot":"","sources":["svg-backgrounds.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,oGAMC;AAED;;;GAGG;AACH,iEAIC;AAED;;;GAGG;AACH,+FAMC"}
1
+ {"version":3,"file":"svg-backgrounds.d.ts","sourceRoot":"","sources":["svg-backgrounds.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,4EAMC;AAED;;;GAGG;AACH,qDAIC;AAED;;;GAGG;AACH,mFAMC"}
@@ -13,7 +13,7 @@
13
13
  display: none !important;
14
14
  }
15
15
 
16
- :where([uc-wgt-common]) [activity]:not([active]) {
16
+ :where([uc-wgt-common]) [activity]:not([active], .active) {
17
17
  display: none;
18
18
  }
19
19
 
@@ -31,6 +31,7 @@
31
31
  @import url('../../CloudImageEditorActivity/index.css');
32
32
  @import url('../../Select/select.css');
33
33
  @import url('../../Spinner/spinner.css');
34
+ @import url('../../Thumb/thumb.css');
34
35
 
35
36
  /* POST RESET */
36
37
  @import url('post-reset.css');
@@ -1 +1 @@
1
- {"version":3,"file":"svg-sprite.d.ts","sourceRoot":"","sources":["svg-sprite.js"],"names":[],"mappings":""}
1
+ {"version":3,"file":"svg-sprite.d.ts","sourceRoot":"","sources":["svg-sprite.js"],"names":[],"mappings":"wBAAe,kztBAAkztB"}
@@ -1 +1 @@
1
- {"version":3,"file":"UploadSource.d.ts","sourceRoot":"","sources":["UploadSource.js"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAEH;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;GAWG;0BAEW,CAAC,mBAAmB,CAAC,CAAC,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"UploadSource.d.ts","sourceRoot":"","sources":["UploadSource.js"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAEH;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;GAWG;0BAEW,CAAC,OAAO,YAAY,EAAE,MAAM,OAAO,YAAY,CAAC"}
@@ -4,7 +4,9 @@
4
4
  * @param {number} wait
5
5
  * @returns {T & { cancel: () => void }} }
6
6
  */
7
- export function debounce<T extends (...args: any[]) => any>(callback: T, wait: number): T & {
7
+ export function debounce<T extends {
8
+ (...args: any[]): any;
9
+ }>(callback: T, wait: number): T & {
8
10
  cancel: () => void;
9
11
  };
10
12
  //# sourceMappingURL=debounce.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["debounce.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,6CAL0B,GAAG,EAAE,KAAG,GAAG,qBAE1B,MAAM;YACU,MAAM,IAAI;EAepC"}
1
+ {"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["debounce.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,yBALyC,CAAC,SAA7B;IAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;CAAG,YAC7B,CAAC,QACD,MAAM,GACJ,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAetC"}
@@ -1,4 +1,4 @@
1
- import { TRANSPARENT_PIXEL_SRC } from '../../../../utils/transparentPixelSrc.js';
1
+ import { TRANSPARENT_PIXEL_SRC } from '../../utils/transparentPixelSrc.js';
2
2
 
3
3
  export function preloadImage(src) {
4
4
  let image = new Image();
@@ -2,5 +2,5 @@
2
2
  * @param {File} imgFile
3
3
  * @param {Number} [size]
4
4
  */
5
- export function generateThumb(imgFile: File, size?: number | undefined): string | Promise<any>;
5
+ export function generateThumb(imgFile: File, size?: number): string | Promise<any>;
6
6
  //# sourceMappingURL=resizeImage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resizeImage.d.ts","sourceRoot":"","sources":["resizeImage.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,uCAHW,IAAI,oDAsCd"}
1
+ {"version":3,"file":"resizeImage.d.ts","sourceRoot":"","sources":["resizeImage.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,uCAHW,IAAI,wCAsCd"}
@@ -1,4 +1,6 @@
1
- export function throttle<T extends (...args: any[]) => void>(fn: T, wait: number): T & {
1
+ export function throttle<T extends {
2
+ (...args: any[]): void;
3
+ }>(fn: T, wait: number): T & {
2
4
  readonly cancel: () => void;
3
5
  };
4
6
  //# sourceMappingURL=throttle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["throttle.js"],"names":[],"mappings":"AAQO,6CALmB,GAAG,EAAE,KAAG,IAAI,eAE3B,MAAM;qBACmB,MAAM,IAAI;EAsC7C"}
1
+ {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["throttle.js"],"names":[],"mappings":"AAQO,yBALmC,CAAC,SAA9B;IAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;CAAG,MAC9B,CAAC,QACD,MAAM,GACJ,CAAC,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAsC/C"}
@@ -2,5 +2,5 @@
2
2
  * @param {import('@uploadcare/upload-client').CustomUserAgentOptions} options
3
3
  * @returns {ReturnType<import('@uploadcare/upload-client').CustomUserAgentFn>}
4
4
  */
5
- export function customUserAgent(options: import('@uploadcare/upload-client').CustomUserAgentOptions): ReturnType<import('@uploadcare/upload-client').CustomUserAgentFn>;
5
+ export function customUserAgent(options: import("@uploadcare/upload-client").CustomUserAgentOptions): ReturnType<import("@uploadcare/upload-client").CustomUserAgentFn>;
6
6
  //# sourceMappingURL=userAgent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"userAgent.d.ts","sourceRoot":"","sources":["userAgent.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,yCAHW,OAAO,2BAA2B,EAAE,sBAAsB,GACxD,WAAW,OAAO,2BAA2B,EAAE,iBAAiB,CAAC,CAQ7E"}
1
+ {"version":3,"file":"userAgent.d.ts","sourceRoot":"","sources":["userAgent.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,yCAHW,OAAO,2BAA2B,EAAE,sBAAsB,GACxD,UAAU,CAAC,OAAO,2BAA2B,EAAE,iBAAiB,CAAC,CAQ7E"}
package/env.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["env.js"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,oCAAqC;AACrC,uCAAwC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["env.js"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2BAA4B,QAAQ,CAAC;AACrC,8BAA+B,QAAQ,CAAC"}
package/index.d.ts CHANGED
@@ -28,6 +28,7 @@ export { ActivityHeader } from "./blocks/ActivityHeader/ActivityHeader.js";
28
28
  export { Select } from "./blocks/Select/Select.js";
29
29
  export { Copyright } from "./blocks/Copyright/Copyright.js";
30
30
  export { Spinner } from "./blocks/Spinner/Spinner.js";
31
+ export { Thumb } from "./blocks/Thumb/Thumb.js";
31
32
  export { FileUploaderRegular } from "./solutions/file-uploader/regular/FileUploaderRegular.js";
32
33
  export { FileUploaderMinimal } from "./solutions/file-uploader/minimal/FileUploaderMinimal.js";
33
34
  export { FileUploaderInline } from "./solutions/file-uploader/inline/FileUploaderInline.js";
@@ -36,6 +37,7 @@ export { defineComponents } from "./abstract/defineComponents.js";
36
37
  export { defineLocale } from "./abstract/localeRegistry.js";
37
38
  export { loadFileUploaderFrom } from "./abstract/loadFileUploaderFrom.js";
38
39
  export { toKebabCase } from "./utils/toKebabCase.js";
40
+ export { ModalEvents } from "./abstract/ModalManager.js";
39
41
  export { BaseComponent, Data, UID } from "@symbiotejs/symbiote";
40
42
  export { UploadSource, ExternalUploadSource } from "./blocks/utils/UploadSource.js";
41
43
  //# sourceMappingURL=index.d.ts.map
package/index.js CHANGED
@@ -33,6 +33,7 @@ export { ActivityHeader } from './blocks/ActivityHeader/ActivityHeader.js';
33
33
  export { Select } from './blocks/Select/Select.js';
34
34
  export { Copyright } from './blocks/Copyright/Copyright.js';
35
35
  export { Spinner } from './blocks/Spinner/Spinner.js';
36
+ export { Thumb } from './blocks/Thumb/Thumb.js';
36
37
 
37
38
  // Solutions:
38
39
  export { FileUploaderRegular } from './solutions/file-uploader/regular/FileUploaderRegular.js';
@@ -46,6 +47,7 @@ export { defineLocale } from './abstract/localeRegistry.js';
46
47
  export { loadFileUploaderFrom } from './abstract/loadFileUploaderFrom.js';
47
48
  export { toKebabCase } from './utils/toKebabCase.js';
48
49
  export { UploadSource, ExternalUploadSource } from './blocks/utils/UploadSource.js';
50
+ export { ModalEvents } from './abstract/ModalManager.js';
49
51
 
50
52
  export * from './env.js';
51
53
 
package/index.ssr.d.ts CHANGED
@@ -541,6 +541,14 @@ export const Modal: {
541
541
  is: string;
542
542
  bindAttributes: () => void;
543
543
  };
544
+ export namespace ModalEvents {
545
+ let ADD: string;
546
+ let DELETE: string;
547
+ let OPEN: string;
548
+ let CLOSE: string;
549
+ let CLOSE_ALL: string;
550
+ let DESTROY: string;
551
+ }
544
552
  export const PACKAGE_NAME: "blocks";
545
553
  export const PACKAGE_VERSION: "1.14.0";
546
554
  export const PresenceToggle: {
@@ -765,6 +773,57 @@ export const StartFrom: {
765
773
  is: string;
766
774
  bindAttributes: () => void;
767
775
  };
776
+ export const Thumb: {
777
+ new (): {};
778
+ template: string;
779
+ observedAttributes: string[];
780
+ extSrcList: {
781
+ FACEBOOK: string;
782
+ DROPBOX: string;
783
+ GDRIVE: string;
784
+ GPHOTOS: string;
785
+ FLICKR: string;
786
+ VK: string;
787
+ EVERNOTE: string;
788
+ BOX: string;
789
+ ONEDRIVE: string;
790
+ HUDDLE: string;
791
+ };
792
+ sourceTypes: {
793
+ LOCAL: string;
794
+ DROP_AREA: string;
795
+ CAMERA: string;
796
+ EXTERNAL: string;
797
+ API: string;
798
+ URL: string;
799
+ DRAW: string;
800
+ MOBILE_VIDEO_CAMERA: string;
801
+ MOBILE_PHOTO_CAMERA: string;
802
+ FACEBOOK: string;
803
+ DROPBOX: string;
804
+ GDRIVE: string;
805
+ GPHOTOS: string;
806
+ FLICKR: string;
807
+ VK: string;
808
+ EVERNOTE: string;
809
+ BOX: string;
810
+ ONEDRIVE: string;
811
+ HUDDLE: string;
812
+ };
813
+ activities: {
814
+ START_FROM: string;
815
+ CAMERA: string;
816
+ DRAW: string;
817
+ UPLOAD_LIST: string;
818
+ URL: string;
819
+ CLOUD_IMG_EDIT: string;
820
+ EXTERNAL: string;
821
+ };
822
+ reg: () => void;
823
+ styleAttrs: any[];
824
+ is: string;
825
+ bindAttributes: () => void;
826
+ };
768
827
  export const UID: {
769
828
  new (): {};
770
829
  generate: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.ssr.d.ts","sourceRoot":"","sources":["index.ssr.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;EAcE;AACF;;;;;;;;;;;;;;;EAcE;AACF;;;;;EAIE;AACF;;;;;;EAKE;AACF;;;;;;;;EAgBE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4IE;AACF;;;;;;;;EAuCE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CE;AACF;;;;;;;;EAuCE;AACF;;;;;;;EA4GE;AACF;;;;;;;EAaE;AACF;;;;;;;EAME;AACF;;;;;;;;;;;;;;;;EAeE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkEE;AACF;;;;;;;EAWE;AACF;;;;;;;EAWE;AACF;;;;;;;EASE;AACF;;;;;;EAKE;AACF;;;;;;;EAWE;AACF;;;;;;;EAME;AACF;;;;;;;EAWE;AACF;;;;;;;EA2IE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0EE;;;;;;;;;;;;;AAaF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoFE;AACF;;;;;;EAKE;AACF;;;;;;EAKE;AACF;;;;;;;EAME;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CE;AACF;;;;;;;;EAWE;AACF;;;;;;EAwBE;AACF;;;;;;;EAUE;AACF;;;;;;;;EAWE;AACF,oCAAqC;AACrC,uCAAwC;AACxC;;;;;;;EAME;AACF;;;;;;;EASE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDE;AACF;;;;;;;EAME;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0DE;AACF;;;;;;;EAeE;AACF;;;;;;EAKE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsDE;AACF;;;;;;EAKE;AACF;;;;;;EAKE;AACF;;;;;;;;;;;;;;;;EAeE;AACF;;;;;;;;;;;;EAWE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmEE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuGE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2EE;AACK,yCAAiC;AACjC,qCAA6B;AAC7B,6CAAqC;AACrC,oCAA4B"}
1
+ {"version":3,"file":"index.ssr.d.ts","sourceRoot":"","sources":["index.ssr.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;EAcE;AACF;;;;;;;;;;;;;;;EAcE;AACF;;;;;EAIE;AACF;;;;;;EAKE;AACF;;;;;;;;EAgBE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4IE;AACF;;;;;;;;EAuCE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CE;AACF;;;;;;;;EAuCE;AACF;;;;;;;EA4GE;AACF;;;;;;;EAaE;AACF;;;;;;;EAME;AACF;;;;;;;;;;;;;;;;EAeE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmEE;AACF;;;;;;;EAWE;AACF;;;;;;;EAWE;AACF;;;;;;;EASE;AACF;;;;;;EAKE;AACF;;;;;;;EAWE;AACF;;;;;;;EAME;AACF;;;;;;;EAWE;AACF;;;;;;;EA2IE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0EE;;;;;;;;;;;;;AAaF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqFE;AACF;;;;;;EAKE;AACF;;;;;;EAKE;AACF;;;;;;;EAME;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CE;AACF;;;;;;;;EAWE;AACF;;;;;;EAwBE;AACF;;;;;;;EAUE;AACF;;;;;;;;EAWE;;;;;;;;;AASF,oCAAqC;AACrC,uCAAwC;AACxC;;;;;;;EAME;AACF;;;;;;;EASE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDE;AACF;;;;;;;EAME;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0DE;AACF;;;;;;;EAeE;AACF;;;;;;EAKE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsDE;AACF;;;;;;EAKE;AACF;;;;;;EAKE;AACF;;;;;;;;;;;;;;;;EAeE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDE;AACF;;;;;;;;;;;;EAWE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmEE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuGE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2EE;AACK,yCAAiC;AACjC,qCAA6B;AAC7B,6CAAqC;AACrC,oCAA4B"}