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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/abstract/ActivityBlock.d.ts +5 -5
  2. package/abstract/ActivityBlock.d.ts.map +1 -1
  3. package/abstract/ActivityBlock.js +10 -15
  4. package/abstract/Block.d.ts +9 -9
  5. package/abstract/Block.d.ts.map +1 -1
  6. package/abstract/Block.js +15 -0
  7. package/abstract/CTX.d.ts +6 -6
  8. package/abstract/CTX.d.ts.map +1 -1
  9. package/abstract/CTX.js +3 -1
  10. package/abstract/LocaleManager.d.ts +3 -3
  11. package/abstract/LocaleManager.d.ts.map +1 -1
  12. package/abstract/ModalManager.d.ts +124 -0
  13. package/abstract/ModalManager.d.ts.map +1 -0
  14. package/abstract/ModalManager.js +227 -0
  15. package/abstract/SecureUploadsManager.d.ts +2 -2
  16. package/abstract/SecureUploadsManager.d.ts.map +1 -1
  17. package/abstract/SolutionBlock.d.ts +2 -2
  18. package/abstract/SolutionBlock.d.ts.map +1 -1
  19. package/abstract/TypedCollection.d.ts.map +1 -1
  20. package/abstract/TypedData.d.ts +1 -1
  21. package/abstract/TypedData.d.ts.map +1 -1
  22. package/abstract/UploaderBlock.d.ts +8 -6
  23. package/abstract/UploaderBlock.d.ts.map +1 -1
  24. package/abstract/UploaderBlock.js +24 -8
  25. package/abstract/UploaderPublicApi.d.ts +24 -23
  26. package/abstract/UploaderPublicApi.d.ts.map +1 -1
  27. package/abstract/UploaderPublicApi.js +39 -9
  28. package/abstract/ValidationManager.d.ts +4 -4
  29. package/abstract/ValidationManager.d.ts.map +1 -1
  30. package/abstract/a11y.d.ts +2 -2
  31. package/abstract/a11y.d.ts.map +1 -1
  32. package/abstract/buildOutputCollectionState.d.ts +1 -1
  33. package/abstract/buildOutputCollectionState.d.ts.map +1 -1
  34. package/abstract/defineComponents.d.ts.map +1 -1
  35. package/abstract/l10nProcessor.d.ts.map +1 -1
  36. package/abstract/loadFileUploaderFrom.d.ts +1 -1
  37. package/abstract/loadFileUploaderFrom.d.ts.map +1 -1
  38. package/abstract/localeRegistry.d.ts.map +1 -1
  39. package/abstract/sharedConfigKey.d.ts.map +1 -1
  40. package/abstract/uploadEntrySchema.d.ts +2 -2
  41. package/abstract/uploadEntrySchema.d.ts.map +1 -1
  42. package/blocks/CameraSource/CameraSource.d.ts +9 -9
  43. package/blocks/CameraSource/CameraSource.d.ts.map +1 -1
  44. package/blocks/CameraSource/CameraSource.js +1 -0
  45. package/blocks/CameraSource/calcCameraModes.d.ts +1 -1
  46. package/blocks/CameraSource/constants.d.ts.map +1 -1
  47. package/blocks/CloudImageEditor/src/CloudImageEditorBlock.d.ts.map +1 -1
  48. package/blocks/CloudImageEditor/src/CropFrame.d.ts +1 -1
  49. package/blocks/CloudImageEditor/src/EditorImageCropper.d.ts +3 -3
  50. package/blocks/CloudImageEditor/src/EditorImageFader.d.ts +1 -1
  51. package/blocks/CloudImageEditor/src/EditorImageFader.d.ts.map +1 -1
  52. package/blocks/CloudImageEditor/src/EditorSlider.d.ts +1 -1
  53. package/blocks/CloudImageEditor/src/EditorSlider.d.ts.map +1 -1
  54. package/blocks/CloudImageEditor/src/EditorToolbar.d.ts +1 -1
  55. package/blocks/CloudImageEditor/src/crop-utils.d.ts +14 -14
  56. package/blocks/CloudImageEditor/src/crop-utils.d.ts.map +1 -1
  57. package/blocks/CloudImageEditor/src/cropper-constants.d.ts.map +1 -1
  58. package/blocks/CloudImageEditor/src/lib/applyFocusVisiblePolyfill.d.ts +1 -1
  59. package/blocks/CloudImageEditor/src/lib/applyFocusVisiblePolyfill.d.ts.map +1 -1
  60. package/blocks/CloudImageEditor/src/lib/parseCropPreset.d.ts +1 -1
  61. package/blocks/CloudImageEditor/src/lib/transformationUtils.d.ts +3 -3
  62. package/blocks/CloudImageEditor/src/lib/transformationUtils.d.ts.map +1 -1
  63. package/blocks/CloudImageEditor/src/state.d.ts +4 -4
  64. package/blocks/CloudImageEditor/src/svg-sprite.d.ts.map +1 -1
  65. package/blocks/CloudImageEditor/src/types.d.ts +8 -58
  66. package/blocks/CloudImageEditor/src/types.d.ts.map +1 -1
  67. package/blocks/CloudImageEditorActivity/CloudImageEditorActivity.d.ts +1 -1
  68. package/blocks/CloudImageEditorActivity/CloudImageEditorActivity.d.ts.map +1 -1
  69. package/blocks/CloudImageEditorActivity/CloudImageEditorActivity.js +2 -0
  70. package/blocks/Config/Config.d.ts +3 -12
  71. package/blocks/Config/Config.d.ts.map +1 -1
  72. package/blocks/Config/assertions.d.ts +1 -1
  73. package/blocks/Config/initialConfig.d.ts +1 -1
  74. package/blocks/Config/initialConfig.d.ts.map +1 -1
  75. package/blocks/Config/initialConfig.js +4 -0
  76. package/blocks/Config/normalizeConfigValue.d.ts +2 -1
  77. package/blocks/Config/normalizeConfigValue.d.ts.map +1 -1
  78. package/blocks/Config/normalizeConfigValue.js +19 -106
  79. package/blocks/Config/side-effects.d.ts.map +1 -1
  80. package/blocks/Config/validatorsType.d.ts +37 -0
  81. package/blocks/Config/validatorsType.d.ts.map +1 -0
  82. package/blocks/Config/validatorsType.js +134 -0
  83. package/blocks/DropArea/DropArea.d.ts +3 -2
  84. package/blocks/DropArea/DropArea.d.ts.map +1 -1
  85. package/blocks/DropArea/DropArea.js +21 -2
  86. package/blocks/DropArea/addDropzone.d.ts.map +1 -1
  87. package/blocks/DropArea/getDropItems.d.ts +2 -2
  88. package/blocks/DropArea/getDropItems.d.ts.map +1 -1
  89. package/blocks/ExternalSource/ExternalSource.d.ts +3 -3
  90. package/blocks/ExternalSource/ExternalSource.d.ts.map +1 -1
  91. package/blocks/ExternalSource/ExternalSource.js +2 -1
  92. package/blocks/ExternalSource/MessageBridge.d.ts +3 -3
  93. package/blocks/ExternalSource/MessageBridge.d.ts.map +1 -1
  94. package/blocks/ExternalSource/query-string.d.ts.map +1 -1
  95. package/blocks/ExternalSource/types.d.ts +64 -64
  96. package/blocks/ExternalSource/types.d.ts.map +1 -1
  97. package/blocks/FileItem/FileItem.d.ts +5 -6
  98. package/blocks/FileItem/FileItem.d.ts.map +1 -1
  99. package/blocks/FileItem/FileItem.js +40 -42
  100. package/blocks/FileItem/file-item.css +90 -0
  101. package/blocks/Img/ImgBase.d.ts +3 -3
  102. package/blocks/Img/ImgBase.d.ts.map +1 -1
  103. package/blocks/Img/ImgConfig.d.ts.map +1 -1
  104. package/blocks/Img/configurations.d.ts.map +1 -1
  105. package/blocks/Modal/Modal.d.ts +21 -2
  106. package/blocks/Modal/Modal.d.ts.map +1 -1
  107. package/blocks/Modal/Modal.js +52 -24
  108. package/blocks/ProgressBar/ProgressBar.d.ts.map +1 -1
  109. package/blocks/ProgressBar/ProgressBar.js +1 -0
  110. package/blocks/ProgressBar/progress-bar.css +1 -0
  111. package/blocks/Range/Range.d.ts.map +1 -1
  112. package/blocks/SimpleBtn/SimpleBtn.d.ts +2 -2
  113. package/blocks/SimpleBtn/SimpleBtn.d.ts.map +1 -1
  114. package/blocks/SimpleBtn/SimpleBtn.js +1 -1
  115. package/blocks/SourceBtn/SourceBtn.d.ts +3 -3
  116. package/blocks/SourceBtn/SourceBtn.d.ts.map +1 -1
  117. package/blocks/SourceBtn/SourceBtn.js +29 -15
  118. package/blocks/SourceList/SourceList.d.ts.map +1 -1
  119. package/blocks/SourceList/SourceList.js +17 -11
  120. package/blocks/Spinner/Spinner.d.ts.map +1 -1
  121. package/blocks/StartFrom/StartFrom.js +1 -1
  122. package/blocks/Thumb/Thumb.d.ts +48 -0
  123. package/blocks/Thumb/Thumb.d.ts.map +1 -0
  124. package/blocks/Thumb/Thumb.js +169 -0
  125. package/blocks/Thumb/thumb.css +4 -0
  126. package/blocks/UploadCtxProvider/EventEmitter.d.ts +20 -20
  127. package/blocks/UploadCtxProvider/EventEmitter.d.ts.map +1 -1
  128. package/blocks/UploadCtxProvider/UploadCtxProvider.d.ts +4 -4
  129. package/blocks/UploadCtxProvider/UploadCtxProvider.d.ts.map +1 -1
  130. package/blocks/UploadList/UploadList.d.ts +4 -2
  131. package/blocks/UploadList/UploadList.d.ts.map +1 -1
  132. package/blocks/UploadList/UploadList.js +16 -1
  133. package/blocks/UploadList/upload-list.css +23 -0
  134. package/blocks/UrlSource/UrlSource.d.ts.map +1 -1
  135. package/blocks/UrlSource/UrlSource.js +1 -0
  136. package/blocks/svg-backgrounds/svg-backgrounds.d.ts +3 -3
  137. package/blocks/svg-backgrounds/svg-backgrounds.d.ts.map +1 -1
  138. package/blocks/themes/uc-basic/common.css +1 -1
  139. package/blocks/themes/uc-basic/index.css +1 -0
  140. package/blocks/themes/uc-basic/svg-sprite.d.ts +1 -1
  141. package/blocks/themes/uc-basic/svg-sprite.d.ts.map +1 -1
  142. package/blocks/themes/uc-basic/svg-sprite.js +1 -1
  143. package/blocks/themes/uc-basic/theme.css +12 -0
  144. package/blocks/utils/UploadSource.d.ts +6 -1
  145. package/blocks/utils/UploadSource.d.ts.map +1 -1
  146. package/blocks/utils/UploadSource.js +7 -1
  147. package/blocks/utils/debounce.d.ts +3 -1
  148. package/blocks/utils/debounce.d.ts.map +1 -1
  149. package/blocks/utils/resizeImage.d.ts +1 -1
  150. package/blocks/utils/resizeImage.d.ts.map +1 -1
  151. package/blocks/utils/supportCapture.d.ts +2 -0
  152. package/blocks/utils/supportCapture.d.ts.map +1 -0
  153. package/blocks/utils/supportCapture.js +3 -0
  154. package/blocks/utils/throttle.d.ts +3 -1
  155. package/blocks/utils/throttle.d.ts.map +1 -1
  156. package/blocks/utils/userAgent.d.ts +1 -1
  157. package/blocks/utils/userAgent.d.ts.map +1 -1
  158. package/env.d.ts +1 -1
  159. package/env.d.ts.map +1 -1
  160. package/env.js +1 -1
  161. package/index.d.ts +2 -0
  162. package/index.js +2 -0
  163. package/index.ssr.d.ts +88 -15
  164. package/index.ssr.d.ts.map +1 -1
  165. package/index.ssr.js +119 -24
  166. package/locales/file-uploader/ar.d.ts +2 -0
  167. package/locales/file-uploader/ar.js +2 -0
  168. package/locales/file-uploader/az.d.ts +2 -0
  169. package/locales/file-uploader/az.js +2 -0
  170. package/locales/file-uploader/ca.d.ts +2 -0
  171. package/locales/file-uploader/ca.js +2 -0
  172. package/locales/file-uploader/cs.d.ts +2 -0
  173. package/locales/file-uploader/cs.js +2 -0
  174. package/locales/file-uploader/da.d.ts +2 -0
  175. package/locales/file-uploader/da.js +2 -0
  176. package/locales/file-uploader/de.d.ts +2 -0
  177. package/locales/file-uploader/de.js +2 -0
  178. package/locales/file-uploader/el.d.ts +2 -0
  179. package/locales/file-uploader/el.js +2 -0
  180. package/locales/file-uploader/en.d.ts +2 -1
  181. package/locales/file-uploader/en.js +2 -1
  182. package/locales/file-uploader/es.d.ts +2 -0
  183. package/locales/file-uploader/es.js +2 -0
  184. package/locales/file-uploader/et.d.ts +2 -0
  185. package/locales/file-uploader/et.js +2 -0
  186. package/locales/file-uploader/fi.d.ts +2 -0
  187. package/locales/file-uploader/fi.js +2 -0
  188. package/locales/file-uploader/fr.d.ts +2 -0
  189. package/locales/file-uploader/fr.js +2 -0
  190. package/locales/file-uploader/he.d.ts +2 -0
  191. package/locales/file-uploader/he.js +2 -0
  192. package/locales/file-uploader/hy.d.ts +2 -0
  193. package/locales/file-uploader/hy.js +2 -0
  194. package/locales/file-uploader/is.d.ts +2 -0
  195. package/locales/file-uploader/is.js +2 -0
  196. package/locales/file-uploader/it.d.ts +2 -0
  197. package/locales/file-uploader/it.js +2 -0
  198. package/locales/file-uploader/ja.d.ts +2 -0
  199. package/locales/file-uploader/ja.js +2 -0
  200. package/locales/file-uploader/ka.d.ts +2 -0
  201. package/locales/file-uploader/ka.js +2 -0
  202. package/locales/file-uploader/kk.d.ts +2 -0
  203. package/locales/file-uploader/kk.js +2 -0
  204. package/locales/file-uploader/ko.d.ts +2 -0
  205. package/locales/file-uploader/ko.js +2 -0
  206. package/locales/file-uploader/lv.d.ts +2 -0
  207. package/locales/file-uploader/lv.js +2 -0
  208. package/locales/file-uploader/nb.d.ts +2 -0
  209. package/locales/file-uploader/nb.js +2 -0
  210. package/locales/file-uploader/nl.d.ts +2 -0
  211. package/locales/file-uploader/nl.js +2 -0
  212. package/locales/file-uploader/pl.d.ts +2 -0
  213. package/locales/file-uploader/pl.js +2 -0
  214. package/locales/file-uploader/pt.d.ts +2 -0
  215. package/locales/file-uploader/pt.js +2 -0
  216. package/locales/file-uploader/ro.d.ts +2 -0
  217. package/locales/file-uploader/ro.js +2 -0
  218. package/locales/file-uploader/ru.d.ts +2 -0
  219. package/locales/file-uploader/ru.js +2 -0
  220. package/locales/file-uploader/sk.d.ts +2 -0
  221. package/locales/file-uploader/sk.js +2 -0
  222. package/locales/file-uploader/sr.d.ts +2 -0
  223. package/locales/file-uploader/sr.js +2 -0
  224. package/locales/file-uploader/sv.d.ts +2 -0
  225. package/locales/file-uploader/sv.js +2 -0
  226. package/locales/file-uploader/tr.d.ts +2 -0
  227. package/locales/file-uploader/tr.js +2 -0
  228. package/locales/file-uploader/uk.d.ts +2 -0
  229. package/locales/file-uploader/uk.js +2 -0
  230. package/locales/file-uploader/vi.d.ts +2 -0
  231. package/locales/file-uploader/vi.js +2 -0
  232. package/locales/file-uploader/zh-TW.d.ts +2 -0
  233. package/locales/file-uploader/zh-TW.js +2 -0
  234. package/locales/file-uploader/zh.d.ts +2 -0
  235. package/locales/file-uploader/zh.js +2 -0
  236. package/package.json +4 -2
  237. package/solutions/file-uploader/inline/FileUploaderInline.d.ts +2 -2
  238. package/solutions/file-uploader/inline/FileUploaderInline.d.ts.map +1 -1
  239. package/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts +35 -0
  240. package/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts.map +1 -1
  241. package/solutions/file-uploader/minimal/FileUploaderMinimal.js +122 -9
  242. package/solutions/file-uploader/minimal/index.css +25 -24
  243. package/solutions/file-uploader/minimal/index.d.ts +1 -13
  244. package/solutions/file-uploader/minimal/index.js +1 -13
  245. package/solutions/file-uploader/regular/FileUploaderRegular.d.ts +3 -5
  246. package/solutions/file-uploader/regular/FileUploaderRegular.d.ts.map +1 -1
  247. package/solutions/file-uploader/regular/FileUploaderRegular.js +17 -16
  248. package/types/exported.d.ts +7 -0
  249. package/utils/cdn-utils.d.ts +3 -3
  250. package/utils/cdn-utils.d.ts.map +1 -1
  251. package/utils/fileTypes.d.ts +1 -1
  252. package/utils/fileTypes.d.ts.map +1 -1
  253. package/utils/getPluralForm.d.ts.map +1 -1
  254. package/utils/isSecureTokenExpired.d.ts +1 -1
  255. package/utils/memoize.d.ts.map +1 -1
  256. package/utils/mixinClass.d.ts +3 -1
  257. package/utils/mixinClass.d.ts.map +1 -1
  258. package/utils/prettyBytes.d.ts.map +1 -1
  259. package/utils/template-utils.d.ts +1 -1
  260. package/utils/template-utils.d.ts.map +1 -1
  261. package/utils/toKebabCase.d.ts.map +1 -1
  262. package/utils/transparentPixelSrc.d.ts.map +1 -1
  263. package/utils/uniqueArray.d.ts.map +1 -1
  264. package/utils/validators/collection/validateCollectionUploadError.d.ts +1 -1
  265. package/utils/validators/collection/validateMultiple.d.ts +1 -1
  266. package/utils/validators/file/validateFileType.d.ts +1 -1
  267. package/utils/validators/file/validateIsImage.d.ts +1 -1
  268. package/utils/validators/file/validateMaxSizeLimit.d.ts +1 -1
  269. package/utils/validators/file/validateUploadError.d.ts +1 -1
  270. package/utils/waitForAttribute.d.ts +1 -1
  271. package/utils/waitForAttribute.d.ts.map +1 -1
  272. package/web/file-uploader.iife.min.js +4 -4
  273. package/web/file-uploader.min.js +4 -4
  274. package/web/uc-basic.min.css +1 -1
  275. package/web/uc-cloud-image-editor.min.css +1 -1
  276. package/web/uc-cloud-image-editor.min.js +4 -4
  277. package/web/uc-file-uploader-inline.min.css +1 -1
  278. package/web/uc-file-uploader-inline.min.js +4 -4
  279. package/web/uc-file-uploader-minimal.min.css +1 -1
  280. package/web/uc-file-uploader-minimal.min.js +4 -3
  281. package/web/uc-file-uploader-regular.min.css +1 -1
  282. package/web/uc-file-uploader-regular.min.js +4 -4
  283. package/web/uc-img.min.js +2 -2
  284. package/blocks/utils/checkDevice.d.ts +0 -9
  285. package/blocks/utils/checkDevice.d.ts.map +0 -1
  286. package/blocks/utils/checkDevice.js +0 -34
@@ -29,10 +29,7 @@ export class FileItem extends UploaderBlock {
29
29
  * @type {any} TODO: Add types for upload entry
30
30
  */
31
31
  _entry = null;
32
- /** @private */
33
- _isIntersecting = false;
34
- /** @private */
35
- _debouncedGenerateThumb = debounce(this._generateThumbnail.bind(this), 100);
32
+
36
33
  /** @private */
37
34
  _debouncedCalculateState = debounce(this._calculateState.bind(this), 100);
38
35
 
@@ -57,12 +54,14 @@ export class FileItem extends UploaderBlock {
57
54
  isUploading: false,
58
55
  isFocused: false,
59
56
  isEditable: false,
57
+ showFileNames: false,
60
58
  state: FileItemState.IDLE,
61
59
  ariaLabelStatusFile: '',
62
60
  onEdit: () => {
63
61
  this.$['*currentActivityParams'] = {
64
62
  internalId: this._entry.uid,
65
63
  };
64
+ this.modalManager.open(ActivityBlock.activities.CLOUD_IMG_EDIT);
66
65
  this.$['*currentActivity'] = ActivityBlock.activities.CLOUD_IMG_EDIT;
67
66
  },
68
67
  onRemove: () => {
@@ -79,7 +78,6 @@ export class FileItem extends UploaderBlock {
79
78
  sub.remove();
80
79
  }
81
80
 
82
- this._debouncedGenerateThumb.cancel();
83
81
  this._debouncedCalculateState.cancel();
84
82
  this._entrySubs = new Set();
85
83
  this._entry = null;
@@ -91,17 +89,14 @@ export class FileItem extends UploaderBlock {
91
89
  */
92
90
  _observerCallback(entries) {
93
91
  let [entry] = entries;
92
+
94
93
  this._isIntersecting = entry.isIntersecting;
94
+ this._thumbRect = entry.boundingClientRect;
95
95
 
96
96
  if (entry.isIntersecting && !this._renderedOnce) {
97
97
  this.render();
98
98
  this._renderedOnce = true;
99
99
  }
100
- if (entry.intersectionRatio === 0) {
101
- this._debouncedGenerateThumb.cancel();
102
- } else {
103
- this._debouncedGenerateThumb();
104
- }
105
100
  }
106
101
 
107
102
  /** @private */
@@ -131,7 +126,12 @@ export class FileItem extends UploaderBlock {
131
126
  let entry = this._entry;
132
127
 
133
128
  if (entry.getValue('fileInfo') && entry.getValue('isImage')) {
134
- let size = this.cfg.thumbSize;
129
+ let size = Math.max(
130
+ parseInt(String(this?._thumbRect?.height || 0)),
131
+ parseInt(String(this?._thumbRect?.width || 0)),
132
+ this.cfg.thumbSize,
133
+ );
134
+
135
135
  let thumbUrl = await this.proxyUrl(
136
136
  createCdnUrl(
137
137
  createOriginalUrl(this.cfg.cdnCname, this._entry.getValue('uuid')),
@@ -146,10 +146,6 @@ export class FileItem extends UploaderBlock {
146
146
  return;
147
147
  }
148
148
 
149
- if (entry.getValue('thumbUrl')) {
150
- return;
151
- }
152
-
153
149
  if (entry.getValue('file')?.type.includes('image')) {
154
150
  try {
155
151
  let thumbUrl = await generateThumb(entry.getValue('file'), this.cfg.thumbSize);
@@ -225,21 +221,8 @@ export class FileItem extends UploaderBlock {
225
221
  this.$.itemName = entry.getValue('fileName') || externalUrl || this.l10n('file-no-name');
226
222
  });
227
223
 
228
- this._subEntry('fileInfo', (fileInfo) => {
224
+ this._subEntry('fileInfo', () => {
229
225
  this._debouncedCalculateState();
230
- if (fileInfo && this._isIntersecting) {
231
- this._debouncedGenerateThumb();
232
- }
233
- });
234
-
235
- this._subEntry('cdnUrlModifiers', () => {
236
- if (this._isIntersecting) {
237
- this._debouncedGenerateThumb();
238
- }
239
- });
240
-
241
- this._subEntry('thumbUrl', (thumbUrl) => {
242
- this.$.thumbUrl = thumbUrl ? `url(${thumbUrl})` : '';
243
226
  });
244
227
 
245
228
  this._subEntry('errors', () => this._debouncedCalculateState());
@@ -247,10 +230,6 @@ export class FileItem extends UploaderBlock {
247
230
  this._subEntry('fileSize', () => this._debouncedCalculateState());
248
231
  this._subEntry('mimeType', () => this._debouncedCalculateState());
249
232
  this._subEntry('isImage', () => this._debouncedCalculateState());
250
-
251
- if (this._isIntersecting) {
252
- this._debouncedGenerateThumb();
253
- }
254
233
  }
255
234
 
256
235
  initCallback() {
@@ -265,6 +244,25 @@ export class FileItem extends UploaderBlock {
265
244
  });
266
245
 
267
246
  this.subConfigValue('useCloudImageEditor', () => this._debouncedCalculateState());
247
+ this.subConfigValue('filesViewMode', (mode) => {
248
+ if (this.cfg.filesViewMode === 'list') {
249
+ this.$.showFileNames = true;
250
+ }
251
+ if (this.cfg.filesViewMode === 'grid') {
252
+ this.$.showFileNames = this.cfg.gridShowFileNames;
253
+ }
254
+
255
+ this.setAttribute('mode', mode);
256
+ });
257
+
258
+ this.subConfigValue('gridShowFileNames', (value) => {
259
+ if (this.cfg.filesViewMode === 'grid') {
260
+ this.$.showFileNames = value;
261
+ }
262
+ if (this.cfg.filesViewMode === 'list') {
263
+ this.$.showFileNames = true;
264
+ }
265
+ });
268
266
 
269
267
  this.onclick = () => {
270
268
  FileItem.activeInstances.forEach((inst) => {
@@ -338,7 +336,6 @@ export class FileItem extends UploaderBlock {
338
336
  disconnectedCallback() {
339
337
  super.disconnectedCallback();
340
338
 
341
- this._debouncedGenerateThumb.cancel();
342
339
  this._observer?.disconnect();
343
340
  }
344
341
 
@@ -445,14 +442,11 @@ export class FileItem extends UploaderBlock {
445
442
 
446
443
  FileItem.template = /* HTML */ `
447
444
  <div class="uc-inner" set="@finished: isFinished; @uploading: isUploading; @failed: isFailed; @focused: isFocused">
448
- <div class="uc-thumb" set="style.backgroundImage: thumbUrl">
449
- <div class="uc-badge">
450
- <uc-icon set="@name: badgeIcon"></uc-icon>
451
- </div>
452
- </div>
445
+ <uc-thumb set="uid:uid;badgeIcon:badgeIcon"></uc-thumb>
446
+
453
447
  <div aria-atomic="true" aria-live="polite" class="uc-file-name-wrapper" set="@aria-label:ariaLabelStatusFile;">
454
- <span class="uc-file-name">{{itemName}}</span>
455
- <span class="uc-file-error" set="@hidden: !errorText">{{errorText}}</span>
448
+ <span class="uc-file-name" set="@hidden: !showFileNames">{{itemName}}</span>
449
+ <span class="uc-file-error" set="@hidden: !errorText;">{{errorText}}</span>
456
450
  <span class="uc-file-hint" set="@hidden: !hint">{{hint}}</span>
457
451
  </div>
458
452
  <div class="uc-file-actions">
@@ -476,7 +470,11 @@ FileItem.template = /* HTML */ `
476
470
  <uc-icon name="upload"></uc-icon>
477
471
  </button>
478
472
  </div>
479
- <uc-progress-bar class="uc-progress-bar" set="value: progressValue; visible: progressVisible;"> </uc-progress-bar>
473
+ <uc-progress-bar
474
+ class="uc-progress-bar"
475
+ set="value: progressValue; visible: progressVisible; @hasFileName: showFileNames"
476
+ >
477
+ </uc-progress-bar>
480
478
  </div>
481
479
  `;
482
480
  FileItem.activeInstances = new Set();
@@ -45,6 +45,7 @@ uc-file-item .uc-thumb {
45
45
  height: var(--uc-preview-size);
46
46
  background-color: var(--uc-secondary);
47
47
  background-position: center center;
48
+ background-repeat: no-repeat;
48
49
  background-size: cover;
49
50
  border-radius: var(--uc-radius);
50
51
  }
@@ -142,3 +143,92 @@ uc-file-item .uc-file-actions {
142
143
  align-items: center;
143
144
  justify-content: center;
144
145
  }
146
+
147
+ /* File item in the grid */
148
+ uc-file-item[mode='grid'] {
149
+ overflow: visible;
150
+ min-height: initial;
151
+ }
152
+
153
+ uc-file-item[mode='grid'] .uc-inner {
154
+ height: 100%;
155
+ grid-template-columns: 1fr;
156
+ grid-template-rows: 1fr max-content;
157
+ padding: 0;
158
+ background-color: transparent;
159
+ margin-bottom: 0;
160
+ border-radius: 0;
161
+ }
162
+
163
+ uc-file-item[mode='grid'] .uc-inner[failed] .uc-badge {
164
+ display: none;
165
+ }
166
+
167
+ uc-file-item[mode='grid'] .uc-thumb {
168
+ width: 100%;
169
+ height: 100%;
170
+ }
171
+
172
+ uc-file-item[mode='grid'] .uc-badge {
173
+ right: var(--uc-padding);
174
+ bottom: var(--uc-padding);
175
+ }
176
+
177
+ uc-file-item[mode='grid'] .uc-file-name-wrapper {
178
+ padding: 0;
179
+ }
180
+
181
+ uc-file-item[mode='grid'] .uc-file-name:not([hidden]) + .uc-file-error {
182
+ bottom: calc(var(--uc-padding) + var(--uc-font-size));
183
+ }
184
+
185
+ uc-file-item[mode='grid'] .uc-file-error {
186
+ position: absolute;
187
+ background-color: var(--uc-destructive-foreground);
188
+ border-radius: var(--uc-radius);
189
+ color: var(--uc-background);
190
+ bottom: var(--uc-padding);
191
+ left: var(--uc-padding);
192
+ right: var(--uc-padding);
193
+ padding: calc(var(--uc-padding) / 2) var(--uc-padding);
194
+ }
195
+
196
+ uc-file-item[mode='grid'] .uc-file-actions {
197
+ position: absolute;
198
+ top: var(--uc-padding);
199
+ right: var(--uc-padding);
200
+ }
201
+
202
+ uc-file-item[mode='grid'] button {
203
+ background-color: var(--uc-background);
204
+ }
205
+
206
+ uc-file-item[mode='grid'] button:hover {
207
+ background-color: var(--uc-muted);
208
+ }
209
+
210
+ uc-file-item[mode='grid'] .uc-progress-bar {
211
+ width: initial;
212
+ height: 4px !important;
213
+ opacity: 1;
214
+ top: initial !important;
215
+ bottom: var(--uc-padding);
216
+ left: var(--uc-padding);
217
+ right: var(--uc-padding);
218
+ border-radius: var(--uc-radius);
219
+ background-color: var(--uc-background);
220
+ z-index: 1;
221
+ }
222
+
223
+ uc-file-item[mode='grid'] .uc-progress-bar.uc-progress-bar--hidden {
224
+ opacity: 0;
225
+ }
226
+
227
+ uc-file-item[mode='grid'] .uc-progress-bar[hasfilename] {
228
+ bottom: calc(var(--uc-padding) + var(--uc-font-size));
229
+ }
230
+
231
+ uc-file-item[mode='grid'] .uc-progress-bar .uc-progress {
232
+ background-color: var(--uc-primary);
233
+ opacity: 0.7;
234
+ }
@@ -12,14 +12,14 @@ export class ImgBase extends ImgConfig {
12
12
  * @param {String} [size]
13
13
  * @returns {String | Number}
14
14
  */
15
- _validateSize(size?: string | undefined): string | number;
15
+ _validateSize(size?: string): string | number;
16
16
  /**
17
17
  * Image operations
18
18
  *
19
19
  * @param {String} [size]
20
20
  * @param {String} [blur]
21
21
  */
22
- _getCdnModifiers(size?: string | undefined, blur?: string | undefined): string;
22
+ _getCdnModifiers(size?: string, blur?: string): string;
23
23
  /**
24
24
  * @private
25
25
  * @param {String} [size]
@@ -38,7 +38,7 @@ export class ImgBase extends ImgConfig {
38
38
  * @param {Number} [k]
39
39
  * @param {Boolean} [wOnly]
40
40
  */
41
- _getElSize(el: HTMLElement, k?: number | undefined, wOnly?: boolean | undefined): string | null;
41
+ _getElSize(el: HTMLElement, k?: number, wOnly?: boolean): string | null;
42
42
  /** @param {HTMLImageElement} img */
43
43
  _setupEventProxy(img: HTMLImageElement): void;
44
44
  /** @type {HTMLImageElement} */
@@ -1 +1 @@
1
- {"version":3,"file":"ImgBase.d.ts","sourceRoot":"","sources":["ImgBase.js"],"names":[],"mappings":"AAgBA;IACE,uBAAmB;IACnB,8BAA0B;IAE1B;;;OAGG;IACH,gBAMC;IAED;;;;;OAKG;IACH,0CAFa,eAAe,CAoB3B;IAED;;;;;OAKG;IACH,+EAWC;IAED;;;;;OAKG;IACH,oBA6DC;IAED;;;;OAIG;IACH,kBAUC;IAED;;;;OAIG;IACH,eAJW,WAAW,sEAcrB;IAED,oCAAoC;IACpC,sBADY,gBAAgB,QAY3B;IAED,+BAA+B;IAC/B,4BAMC;IAED;;;;;;MAUC;IAED,2BAEC;IAED,sBAEC;IAED,mCAOC;IAED,4BAEC;IAED,8BAA8B;IAC9B,aADY,WAAW,QAgBtB;IAED,oBAsBC;IAED,cAEC;IAED,yBAEC;IAED,yBAUC;IAED;;;;aAQC;IAED;;aAGC;IAED;;;;qBAqBC;IAED,6BA8DC;IAED,aAMC;CACF;0BAlZyB,gBAAgB"}
1
+ {"version":3,"file":"ImgBase.d.ts","sourceRoot":"","sources":["ImgBase.js"],"names":[],"mappings":"AAgBA;IACE,uBAAmB;IACnB,8BAA0B;IAE1B;;;OAGG;IACH,gBAMC;IAED;;;;;OAKG;IACH,8BAFa,eAAe,CAoB3B;IAED;;;;;OAKG;IACH,uDAWC;IAED;;;;;OAKG;IACH,oBA6DC;IAED;;;;OAIG;IACH,kBAUC;IAED;;;;OAIG;IACH,eAJW,WAAW,8CAcrB;IAED,oCAAoC;IACpC,sBADY,gBAAgB,QAY3B;IAED,+BAA+B;IAC/B,WADW,gBAAgB,CAO1B;IAED;;;;;;MAUC;IAED,2BAEC;IAED,sBAEC;IAED,mCAOC;IAED,4BAEC;IAED,8BAA8B;IAC9B,aADY,WAAW,QAgBtB;IAED,oBAsBC;IAED,cAEC;IAED,yBAEC;IAED,yBAUC;IAED;;;;aAQC;IAED;;aAGC;IAED;;;;qBAqBC;IAED,6BA8DC;IAED,aAMC;CACF;0BAlZyB,gBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ImgConfig.d.ts","sourceRoot":"","sources":["ImgConfig.js"],"names":[],"mappings":"AAUA;IAkFE,0CAEC;IAlDgD,cACjD;IAlCA,cAAqB;IAErB;;;OAGG;IACH,iBAFa,GAAG,CAIf;IAED,qDAAqD;IACrD,wBAIC;IAED;;;OAGG;IACH,+BAFiB,GAAG,KAAK,IAAI,QAW5B;IAED,0BAEC;IAED,8BAMC;IAED;;;OAGG;IACH,qBAHW,WAAW,SACX,MAAM,IAAI,QAsBpB;IAfC,eAAe;IACf,qBAOQ;IAGN,eAAe;IACf,kBAA0B;IAoB9B,oEAIC;CACF;8BArGmC,sBAAsB"}
1
+ {"version":3,"file":"ImgConfig.d.ts","sourceRoot":"","sources":["ImgConfig.js"],"names":[],"mappings":"AAUA;IAkFE,0CAEC;;IAnFD,cAAqB;IAErB;;;OAGG;IACH,iBAFa,GAAG,CAIf;IAED,qDAAqD;IACrD,wBAIC;IAED;;;OAGG;IACH,yBAFW,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,QAW5B;IAED,0BAEC;IAED,8BAMC;IAED;;;OAGG;IACH,qBAHW,WAAW,SACX,MAAM,IAAI,QAsBpB;IAfC,eAAe;IACf,qBAOQ;IAGN,eAAe;IACf,kBAA0B;IAoB9B,oEAIC;CACF;8BArGmC,sBAAsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"configurations.d.ts","sourceRoot":"","sources":["configurations.js"],"names":[],"mappings":"AAAA,mCAAoC;AACpC,2CAA4C;AAC5C,yBAA0B;AAC1B,4BAA6B;AAC7B,+BACuH;AAEvH,6BAA8B;AAC9B,iCAAkC;AAElC;;;GAGG"}
1
+ {"version":3,"file":"configurations.d.ts","sourceRoot":"","sources":["configurations.js"],"names":[],"mappings":"AAAA,uBAAwB,WAAW,CAAC;AACpC,8BAA+B,YAAY,CAAC;AAC5C,uBAAwB,CAAC,CAAC;AAC1B,0BAA2B,CAAC,CAAC;AAC7B,+BACuH;AAEvH,wBAAyB,IAAI,CAAC;AAC9B,4BAA6B,IAAI,CAAC;AAElC;;;GAGG"}
@@ -1,8 +1,6 @@
1
1
  export class Modal extends Block {
2
2
  static StateConsumerScope: string;
3
3
  init$: {
4
- '*modalActive': boolean;
5
- isOpen: boolean;
6
4
  closeClicked: () => void;
7
5
  };
8
6
  _handleBackdropClick: () => void;
@@ -16,6 +14,27 @@ export class Modal extends Block {
16
14
  _handleDialogMouseUp: (e: Event) => void;
17
15
  show(): void;
18
16
  hide(): void;
17
+ /**
18
+ * @private
19
+ * @type {import('../../abstract/ModalManager.js').ModalCb}
20
+ */
21
+ private _handleModalOpen;
22
+ /**
23
+ * @private
24
+ * @type {import('../../abstract/ModalManager.js').ModalCb}
25
+ */
26
+ private _handleModalClose;
27
+ /** @private */
28
+ private _handleModalCloseAll;
29
+ handleModalOpen: ((data: {
30
+ id: import("../../abstract/ModalManager.js").ModalId;
31
+ modal?: import("../../abstract/ModalManager.js").ModalNode;
32
+ }) => void) | undefined;
33
+ handleModalClose: ((data: {
34
+ id: import("../../abstract/ModalManager.js").ModalId;
35
+ modal?: import("../../abstract/ModalManager.js").ModalNode;
36
+ }) => void) | undefined;
37
+ handleModalCloseAll: (() => void) | undefined;
19
38
  }
20
39
  export namespace Modal {
21
40
  let template: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["Modal.js"],"names":[],"mappings":"AAGA;IAEE,kCAAoC;IAIlC;;;;MAKC;IAGH,iCAEE;IAEF,yBAEE;IAEF,+BAEE;IAEF,uBAAuB;IACvB,4BADY,KAAK,UAIf;IAFA,eAAe;IACf,yBAAgC;IAGlC,uBAAuB;IACvB,0BADY,KAAK,UAKf;IAEF,aAMC;IAED,aAMC;CAgDF;;;;sBAvGqB,yBAAyB"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["Modal.js"],"names":[],"mappings":"AAIA;IAEE,kCAAoC;IAIlC;;MAGC;IAGH,iCAEE;IAEF,yBAME;IAEF,+BAEE;IAEF,uBAAuB;IACvB,yBAA0B,GADd,KACe,UAGzB;IAFA,eAAe;IACf,yBAAgC;IAGlC,uBAAuB;IACvB,uBAAwB,GADZ,KACa,UAIvB;IAEF,aAWC;IAED,aAOC;IAED;;;OAGG;IACH,yBAMC;IAED;;;OAGG;IACH,0BAIC;IAED,eAAe;IACf,6BAEC;IAmBC;;aAnGY,CAAC;4BAmG0C;IACvD;;aApGY,CAAC;4BAoG4C;IACzD,8CAA+D;CAmBlE;;;;sBAnIqB,yBAAyB"}
@@ -1,5 +1,6 @@
1
1
  // @ts-check
2
2
  import { Block } from '../../abstract/Block.js';
3
+ import { ModalEvents } from '../../abstract/ModalManager.js';
3
4
 
4
5
  export class Modal extends Block {
5
6
  static styleAttrs = [...super.styleAttrs, 'uc-modal'];
@@ -9,8 +10,6 @@ export class Modal extends Block {
9
10
  super();
10
11
  this.init$ = {
11
12
  ...this.init$,
12
- '*modalActive': false,
13
- isOpen: false,
14
13
  closeClicked: this._handleDialogClose,
15
14
  };
16
15
  }
@@ -20,7 +19,11 @@ export class Modal extends Block {
20
19
  };
21
20
 
22
21
  _closeDialog = () => {
23
- this.setOrAddState('*modalActive', false);
22
+ this.modalManager?.close(this.id);
23
+
24
+ if (!this.modalManager.hasActiveModals) {
25
+ document.body.style.overflow = '';
26
+ }
24
27
  };
25
28
 
26
29
  _handleDialogClose = () => {
@@ -42,39 +45,62 @@ export class Modal extends Block {
42
45
 
43
46
  show() {
44
47
  if (this.ref.dialog.showModal) {
48
+ this.setAttribute('aria-modal', 'true');
45
49
  this.ref.dialog.showModal();
46
50
  } else {
47
51
  this.ref.dialog.setAttribute('open', '');
48
52
  }
53
+
54
+ if (this.cfg.modalScrollLock) {
55
+ document.body.style.overflow = 'hidden';
56
+ }
49
57
  }
50
58
 
51
59
  hide() {
52
60
  if (this.ref.dialog.close) {
61
+ this.setAttribute('aria-modal', 'false');
53
62
  this.ref.dialog.close();
54
63
  } else {
55
64
  this.ref.dialog.removeAttribute('open');
56
65
  }
57
66
  }
58
67
 
68
+ /**
69
+ * @private
70
+ * @type {import('../../abstract/ModalManager.js').ModalCb}
71
+ */
72
+ _handleModalOpen({ id }) {
73
+ if (id === this.id) {
74
+ this.show();
75
+ } else {
76
+ this.hide();
77
+ }
78
+ }
79
+
80
+ /**
81
+ * @private
82
+ * @type {import('../../abstract/ModalManager.js').ModalCb}
83
+ */
84
+ _handleModalClose({ id }) {
85
+ if (id === this.id) {
86
+ this.hide();
87
+ }
88
+ }
89
+
90
+ /** @private */
91
+ _handleModalCloseAll() {
92
+ this.hide();
93
+ }
94
+
59
95
  initCallback() {
60
96
  super.initCallback();
61
97
 
98
+ this.modalManager?.registerModal(this.id, this);
99
+
62
100
  this.ref.dialog.addEventListener('close', this._handleDialogClose);
63
101
  this.ref.dialog.addEventListener('mousedown', this._handleDialogMouseDown);
64
102
  this.ref.dialog.addEventListener('mouseup', this._handleDialogMouseUp);
65
103
 
66
- this.sub('*modalActive', (modalActive) => {
67
- if (this.$.isOpen !== modalActive) {
68
- this.$.isOpen = modalActive;
69
- }
70
-
71
- if (modalActive && this.cfg.modalScrollLock) {
72
- document.body.style.overflow = 'hidden';
73
- } else {
74
- document.body.style.overflow = '';
75
- }
76
- });
77
-
78
104
  this.subConfigValue('modalBackdropStrokes', (val) => {
79
105
  if (val) {
80
106
  this.setAttribute('strokes', '');
@@ -83,15 +109,13 @@ export class Modal extends Block {
83
109
  }
84
110
  });
85
111
 
86
- this.sub('isOpen', (isOpen) => {
87
- if (isOpen) {
88
- this.show();
89
- this.setAttribute('aria-modal', 'true');
90
- } else {
91
- this.hide();
92
- this.setAttribute('aria-modal', 'false');
93
- }
94
- });
112
+ this.handleModalOpen = this._handleModalOpen.bind(this);
113
+ this.handleModalClose = this._handleModalClose.bind(this);
114
+ this.handleModalCloseAll = this._handleModalCloseAll.bind(this);
115
+
116
+ this.modalManager.subscribe(ModalEvents.OPEN, this.handleModalOpen);
117
+ this.modalManager.subscribe(ModalEvents.CLOSE, this.handleModalClose);
118
+ this.modalManager.subscribe(ModalEvents.CLOSE_ALL, this.handleModalCloseAll);
95
119
  }
96
120
 
97
121
  destroyCallback() {
@@ -101,6 +125,10 @@ export class Modal extends Block {
101
125
  this.ref.dialog.removeEventListener('close', this._handleDialogClose);
102
126
  this.ref.dialog.removeEventListener('mousedown', this._handleDialogMouseDown);
103
127
  this.ref.dialog.removeEventListener('mouseup', this._handleDialogMouseUp);
128
+
129
+ this.modalManager.unsubscribe(ModalEvents.OPEN, this.handleModalOpen);
130
+ this.modalManager.unsubscribe(ModalEvents.CLOSE, this.handleModalClose);
131
+ this.modalManager.unsubscribe(ModalEvents.CLOSE_ALL, this.handleModalCloseAll);
104
132
  }
105
133
  }
106
134
 
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["ProgressBar.js"],"names":[],"mappings":"AAEA;IACE,qBAAqB;IACrB,eAAW;IAEX,sBAAsB;IACtB,kBAAgB;IAEhB,WAIE;CA8CH;;;;sBA3DqB,yBAAyB"}
1
+ {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["ProgressBar.js"],"names":[],"mappings":"AAEA;IACE,qBAAqB;IACrB,eAAW;IAEX,sBAAsB;IACtB,kBAAgB;IAEhB,WAIE;CA+CH;;;;sBA5DqB,yBAAyB"}
@@ -24,6 +24,7 @@ export class ProgressBar extends Block {
24
24
  this.ref.realProgressLine.addEventListener(
25
25
  'transitionend',
26
26
  () => {
27
+ this.classList.add('uc-progress-bar--hidden');
27
28
  this.ref.realProgressLine.classList.toggle('uc-progress--hidden', true);
28
29
  },
29
30
  {
@@ -41,6 +41,7 @@ uc-progress-bar .uc-fake-progress {
41
41
  display 1s;
42
42
  /* stylelint-disable-next-line property-no-unknown */
43
43
  transition-behavior: allow-discrete;
44
+ z-index: 1;
44
45
  }
45
46
 
46
47
  uc-progress-bar .uc-fake-progress--hidden {
@@ -1 +1 @@
1
- {"version":3,"file":"Range.d.ts","sourceRoot":"","sources":["Range.js"],"names":[],"mappings":"AAEA;IAqC0C,cAAgB;IApCxD;;;;;MAUE;IAIA,+BAA+B;IAC/B,qCAA4B;CAe/B;;;;8BAjC6B,sBAAsB"}
1
+ {"version":3,"file":"Range.d.ts","sourceRoot":"","sources":["Range.js"],"names":[],"mappings":"AAEA;;IACE;;;;;MAUE;IAIA,+BAA+B;IAC/B,qCAA4B;CAe/B;;;;8BAjC6B,sBAAsB"}
@@ -6,8 +6,8 @@ export class SimpleBtn extends UploaderBlock {
6
6
  '*commonProgress': number;
7
7
  '*uploadList': never[];
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': ReturnType<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("../../abstract/SecureUploadsManager.js").SecureUploadsManager | null;
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleBtn.d.ts","sourceRoot":"","sources":["SimpleBtn.js"],"names":[],"mappings":"AAIA;IAMI;;;;;;;;;;;;;;;;;MAOC;CAoBJ;;;;8BApC6B,iCAAiC"}
1
+ {"version":3,"file":"SimpleBtn.d.ts","sourceRoot":"","sources":["SimpleBtn.js"],"names":[],"mappings":"AAIA;IAMI;;;;;;;+CAmBI,gBACH;mCAGgB,gBAAU;6BAE3B,2BAIO;;wCAGD,wCAA2B;;;;;;MAzBhC;CAoBJ;;;;8BApC6B,iCAAiC"}
@@ -1,6 +1,6 @@
1
1
  // @ts-check
2
2
  import { UploaderBlock } from '../../abstract/UploaderBlock.js';
3
- import { asBoolean } from '../Config/normalizeConfigValue.js';
3
+ import { asBoolean } from '../Config/validatorsType.js';
4
4
 
5
5
  export class SimpleBtn extends UploaderBlock {
6
6
  static styleAttrs = [...super.styleAttrs, 'uc-simple-btn'];
@@ -20,10 +20,10 @@ export class SourceBtn extends UploaderBlock {
20
20
  iconName: string;
21
21
  'src-type': string;
22
22
  '*commonProgress': number;
23
- '*uploadList': never[]; /** @type {string | undefined} */
23
+ '*uploadList': never[];
24
24
  '*uploadQueue': import("@uploadcare/upload-client").Queue;
25
- '*collectionErrors': any[];
26
- '*collectionState': import("../../index.js").OutputCollectionState<import("../../index.js").OutputCollectionStatus, "maybe-has-group"> | null;
25
+ '*collectionErrors': ReturnType<import("../../index.js" /** @type {string | undefined} */).OutputErrorCollection>[];
26
+ '*collectionState': import("../../index.js").OutputCollectionState | null;
27
27
  '*groupInfo': import("@uploadcare/upload-client").UploadcareGroup | null;
28
28
  '*uploadTrigger': Set<string>;
29
29
  '*secureUploadsManager': import("../../abstract/SecureUploadsManager.js").SecureUploadsManager | null;
@@ -1 +1 @@
1
- {"version":3,"file":"SourceBtn.d.ts","sourceRoot":"","sources":["SourceBtn.js"],"names":[],"mappings":"AAQA;;;;;;;;;GASG;AAEH;IAEE,iCAAiC;IACjC,MADW,MAAM,GAAG,SAAS,CACZ;IACjB;;;OAGG;IACH,yBAAsB;IAKpB;;;;gCAXF,iCAAiC;;;;;;;;;;;;MAe9B;IAGH,kBAkDC;IAkBD,kCAAkC;IAClC,yBADY,OAAO,QAGlB;IAED,2BAA2B;IAC3B,cADY,MAAM,WAGjB;IAED,iBAYC;IAED,2BAA2B;IAC3B,gBADY,MAAM,QAcjB;CACF;;;;sBAzIY;IACZ,IAAQ,EAAE,MAAM,CAAC;IACjB,QAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAY,CAAC,EAAE,MAAM,OAAO,CAAC;IAC7B,cAAkB,CAAC,EAAE,OAAO,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;8BAf0B,iCAAiC"}
1
+ {"version":3,"file":"SourceBtn.d.ts","sourceRoot":"","sources":["SourceBtn.js"],"names":[],"mappings":"AASA;;;;;;;;;GASG;AAEH;IAEE,iCAAiC;IACjC,MADW,MAAM,GAAG,SAAS,CACZ;IACjB;;;OAGG;IACH,yBAAsB;IAKpB;;;;;;+CAZc,gBACjB,CAAC,iCAAiC;mCAIhC,gBAAU;6BAKJ,2BAGN;;wCAQS,wCACL;;;;;;MANF;IAGH,kBA2DC;IAkBD,kCAAkC;IAClC,yBADY,OAAO,QAGlB;IAED,2BAA2B;IAC3B,cADY,MAAM,WAGjB;IAED,iBAgBC;IAED,2BAA2B;IAC3B,gBADY,MAAM,QAcjB;CACF;;;;sBAtJY;IACR,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;8BAhB0B,iCAAiC"}
@@ -1,8 +1,9 @@
1
1
  // @ts-check
2
2
  import { UploaderBlock } from '../../abstract/UploaderBlock.js';
3
3
  import { ActivityBlock } from '../../abstract/ActivityBlock.js';
4
- import { ExternalUploadSource, UploadSource } from '../utils/UploadSource.js';
4
+ import { ExternalUploadSource, UploadSource, UploadSourceMobile } from '../utils/UploadSource.js';
5
5
  import { CameraSourceTypes } from '../CameraSource/constants.js';
6
+ import { isSupportCapture } from '../utils/supportCapture.js';
6
7
 
7
8
  const L10N_PREFIX = 'src-type-';
8
9
 
@@ -54,30 +55,39 @@ export class SourceBtn extends UploaderBlock {
54
55
  type: UploadSource.CAMERA,
55
56
  activity: ActivityBlock.activities.CAMERA,
56
57
  activate: () => {
57
- const supportsCapture = 'capture' in document.createElement('input');
58
- if (supportsCapture) {
59
- this.api.openSystemDialog({ captureCamera: true, modeCamera: CameraSourceTypes.PHOTO });
60
- }
61
- return !supportsCapture;
62
- },
63
- });
64
- this.registerType({
65
- type: UploadSource.VIDEO_CAMERA,
66
- activity: ActivityBlock.activities.CAMERA,
67
- activate: () => {
68
- const supportsCapture = 'capture' in document.createElement('input');
58
+ const supportsCapture = isSupportCapture();
59
+
69
60
  if (supportsCapture) {
70
- this.api.openSystemDialog({ captureCamera: true, modeCamera: CameraSourceTypes.VIDEO });
61
+ this.api.openSystemDialog({ captureCamera: true });
71
62
  }
72
63
  return !supportsCapture;
73
64
  },
74
65
  });
66
+
75
67
  this.registerType({
76
68
  type: 'draw',
77
69
  activity: ActivityBlock.activities.DRAW,
78
70
  icon: 'edit-draw',
79
71
  });
80
72
 
73
+ for (let mobileSourceType of Object.values(UploadSourceMobile)) {
74
+ this.registerType({
75
+ type: mobileSourceType,
76
+ activity: ActivityBlock.activities.CAMERA,
77
+ activate: () => {
78
+ const supportsCapture = isSupportCapture();
79
+ if (supportsCapture) {
80
+ this.api.openSystemDialog({
81
+ captureCamera: true,
82
+ modeCamera:
83
+ mobileSourceType === 'mobile-photo-camera' ? CameraSourceTypes.PHOTO : CameraSourceTypes.VIDEO,
84
+ });
85
+ }
86
+ return !supportsCapture;
87
+ },
88
+ });
89
+ }
90
+
81
91
  for (let externalSourceType of Object.values(ExternalUploadSource)) {
82
92
  this.registerType({
83
93
  type: externalSourceType,
@@ -122,11 +132,15 @@ export class SourceBtn extends UploaderBlock {
122
132
  const configType = this._registeredTypes[this.type];
123
133
  const { activity, activate, activityParams = {} } = configType;
124
134
  const showActivity = activate ? activate() : !!activity;
125
- showActivity &&
135
+
136
+ if (showActivity) {
137
+ this.modalManager.open(/** @type {string} */ (activity));
138
+
126
139
  this.set$({
127
140
  '*currentActivityParams': activityParams,
128
141
  '*currentActivity': activity,
129
142
  });
143
+ }
130
144
  }
131
145
 
132
146
  /** @param {string} type */
@@ -1 +1 @@
1
- {"version":3,"file":"SourceList.d.ts","sourceRoot":"","sources":["SourceList.js"],"names":[],"mappings":"AAOA;CAqCC;sBA1CqB,yBAAyB"}
1
+ {"version":3,"file":"SourceList.d.ts","sourceRoot":"","sources":["SourceList.js"],"names":[],"mappings":"AAMA;CA4CC;sBAjDqB,yBAAyB"}