@uploadcare/file-uploader 1.15.0-alpha.3 → 1.15.0-alpha.5

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 (60) hide show
  1. package/abstract/ActivityBlock.d.ts.map +1 -1
  2. package/abstract/ActivityBlock.js +3 -0
  3. package/abstract/UploaderBlock.js +1 -1
  4. package/blocks/Config/Config.d.ts +1 -1
  5. package/blocks/Config/Config.d.ts.map +1 -1
  6. package/blocks/Config/initialConfig.js +3 -3
  7. package/blocks/Config/normalizeConfigValue.d.ts +2 -1
  8. package/blocks/Config/normalizeConfigValue.d.ts.map +1 -1
  9. package/blocks/Config/normalizeConfigValue.js +18 -109
  10. package/blocks/Config/validatorsType.d.ts +37 -0
  11. package/blocks/Config/validatorsType.d.ts.map +1 -0
  12. package/blocks/Config/validatorsType.js +134 -0
  13. package/blocks/DropArea/DropArea.d.ts +1 -0
  14. package/blocks/DropArea/DropArea.d.ts.map +1 -1
  15. package/blocks/DropArea/DropArea.js +20 -2
  16. package/blocks/ExternalSource/ExternalSource.d.ts.map +1 -1
  17. package/blocks/ExternalSource/ExternalSource.js +0 -1
  18. package/blocks/FileItem/FileItem.d.ts.map +1 -1
  19. package/blocks/FileItem/FileItem.js +12 -13
  20. package/blocks/FileItem/file-item.css +24 -0
  21. package/blocks/Modal/Modal.d.ts +0 -2
  22. package/blocks/Modal/Modal.d.ts.map +1 -1
  23. package/blocks/Modal/Modal.js +0 -2
  24. package/blocks/ProgressBar/progress-bar.css +1 -0
  25. package/blocks/SimpleBtn/SimpleBtn.js +1 -1
  26. package/blocks/Thumb/Thumb.d.ts +24 -0
  27. package/blocks/Thumb/Thumb.d.ts.map +1 -0
  28. package/blocks/Thumb/Thumb.js +45 -0
  29. package/blocks/Thumb/thumb.css +4 -0
  30. package/blocks/UploadList/UploadList.d.ts +2 -0
  31. package/blocks/UploadList/UploadList.d.ts.map +1 -1
  32. package/blocks/UploadList/UploadList.js +3 -1
  33. package/blocks/themes/uc-basic/common.css +1 -1
  34. package/blocks/themes/uc-basic/index.css +1 -0
  35. package/index.d.ts +1 -0
  36. package/index.js +1 -0
  37. package/index.ssr.d.ts +51 -0
  38. package/index.ssr.d.ts.map +1 -1
  39. package/index.ssr.js +72 -12
  40. package/package.json +1 -1
  41. package/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts +3 -1
  42. package/solutions/file-uploader/minimal/FileUploaderMinimal.d.ts.map +1 -1
  43. package/solutions/file-uploader/minimal/FileUploaderMinimal.js +63 -13
  44. package/solutions/file-uploader/minimal/index.css +15 -14
  45. package/solutions/file-uploader/minimal/index.d.ts +1 -16
  46. package/solutions/file-uploader/minimal/index.js +1 -18
  47. package/solutions/file-uploader/regular/FileUploaderRegular.d.ts +1 -3
  48. package/solutions/file-uploader/regular/FileUploaderRegular.d.ts.map +1 -1
  49. package/solutions/file-uploader/regular/FileUploaderRegular.js +1 -15
  50. package/types/exported.d.ts +4 -3
  51. package/web/file-uploader.iife.min.js +4 -4
  52. package/web/file-uploader.min.js +4 -4
  53. package/web/uc-basic.min.css +1 -1
  54. package/web/uc-cloud-image-editor.min.js +4 -4
  55. package/web/uc-file-uploader-inline.min.css +1 -1
  56. package/web/uc-file-uploader-inline.min.js +4 -4
  57. package/web/uc-file-uploader-minimal.min.css +1 -1
  58. package/web/uc-file-uploader-minimal.min.js +4 -4
  59. package/web/uc-file-uploader-regular.min.css +1 -1
  60. package/web/uc-file-uploader-regular.min.js +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityBlock.d.ts","sourceRoot":"","sources":["ActivityBlock.js"],"names":[],"mappings":"AASA;;;;;GAKG;AAEH;IA+EE;;;;;;OAMG;IACH,kCAAsC;IArFtC,iBAAiB;IACjB,kCAAuB;IAEvB;;;;;;MAA+B;IAE/B;;MAAqE;IAErE,eAAe;IACf,oBAKC;IAED,eAAe;IACf,kBAaC;IA8BD,eAAe;IACf,sBAWC;IAED,eAAe;IACf,8BAEC;IAWD,4CAEC;IAED,iCAEC;IAED;;;;;;;OAOG;IACH;4BAHiB,IAAI;8BACJ,IAAI;yBAQpB;IAED,2BAKC;IAoBD,0BAEC;IAED,yDAAyD;IACzD,oLAEC;IAED,qBAAqB;IACrB,2BAEC;IAED,qBAAqB;IACrB,2BAEC;IAED,oBA4BC;IA7KC,8CAAyB;CA8K5B;;;;;;;;;;;;gCA/LY;IACZ,kBAAsB,EAAE,OAAO,gEAAgE,EAAE,cAAc,CAAC;IAChH,UAAc,OAAO,4CAA4C,EAAE,cAAc,CAAC;CAC/E;qCAwMU,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,CAAC;2BAChF,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI;sBAnNrC,YAAY"}
1
+ {"version":3,"file":"ActivityBlock.d.ts","sourceRoot":"","sources":["ActivityBlock.js"],"names":[],"mappings":"AASA;;;;;GAKG;AAEH;IA+EE;;;;;;OAMG;IACH,kCAAsC;IArFtC,iBAAiB;IACjB,kCAAuB;IAEvB;;;;;;MAA+B;IAE/B;;MAAqE;IAErE,eAAe;IACf,oBAKC;IAED,eAAe;IACf,kBAaC;IA8BD,eAAe;IACf,sBAWC;IAED,eAAe;IACf,8BAEC;IAWD,4CAEC;IAED,iCAEC;IAED;;;;;;;OAOG;IACH;4BAHiB,IAAI;8BACJ,IAAI;yBAQpB;IAED,2BAKC;IAoBD,0BAEC;IAED,yDAAyD;IACzD,oLAEC;IAED,qBAAqB;IACrB,2BAEC;IAED,qBAAqB;IACrB,2BAEC;IAED,oBA+BC;IAhLC,8CAAyB;CAiL5B;;;;;;;;;;;;gCAlMY;IACZ,kBAAsB,EAAE,OAAO,gEAAgE,EAAE,cAAc,CAAC;IAChH,UAAc,OAAO,4CAA4C,EAAE,cAAc,CAAC;CAC/E;qCA2MU,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,CAAC;2BAChF,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI;sBAtNrC,YAAY"}
@@ -187,6 +187,9 @@ export class ActivityBlock extends Block {
187
187
  couldOpenActivity = /** @type {ActivityBlock} */ (nextActivityBlock)?.couldOpenActivity ?? false;
188
188
  }
189
189
 
190
+ // TODO: Возможно стоит обработать поведение activity start-from для minimal mode
191
+ console.log({ nextActivity });
192
+
190
193
  nextActivity = couldOpenActivity ? nextActivity : undefined;
191
194
 
192
195
  if (nextActivity) this.modalManager.open(nextActivity);
@@ -254,7 +254,7 @@ export class UploaderBlock extends ActivityBlock {
254
254
  this.setInitialCrop();
255
255
  }
256
256
 
257
- if (this.cfg.usePreviewImage) {
257
+ if (this.cfg.cloudImageEditorAutoOpen) {
258
258
  this.openCloudImageEditor();
259
259
  }
260
260
  }
@@ -64,6 +64,6 @@ declare class ConfigClass extends Block {
64
64
  }
65
65
  import { Block } from '../../abstract/Block.js';
66
66
  /** Mapping of attribute names to state */
67
- declare const attrStateMapping: Record<"accept" | "pubkey" | "multiple" | "store" | "debug" | "crop-preset" | "secure-expire" | "max-local-file-size-bytes" | "multiple-min" | "multiple-max" | "confirm-upload" | "img-only" | "external-sources-preferred-types" | "external-sources-embed-css" | "camera-mirror" | "camera-capture" | "source-list" | "thumb-size" | "show-empty-list" | "use-local-image-editor" | "use-cloud-image-editor" | "cloud-image-editor-tabs" | "remove-copyright" | "image-shrink" | "modal-scroll-lock" | "modal-backdrop-strokes" | "source-list-wrap" | "remote-tab-session-key" | "cdn-cname" | "base-url" | "social-base-url" | "secure-signature" | "secure-delivery-proxy" | "retry-throttled-request-max-times" | "multipart-min-file-size" | "multipart-chunk-size" | "max-concurrent-requests" | "multipart-max-concurrent-requests" | "multipart-max-attempts" | "check-for-url-duplicates" | "save-url-for-recurrent-uploads" | "group-output" | "user-agent-integration" | "locale-name" | "secure-uploads-expire-threshold" | "camera-modes" | "default-camera-mode" | "enable-audio-recording" | "enable-video-recording" | "max-video-recording-duration" | "display-upload-list" | "enable-file-name" | "use-preview-image" | "secureexpire" | "croppreset" | "maxlocalfilesizebytes" | "multiplemin" | "multiplemax" | "confirmupload" | "imgonly" | "externalsourcespreferredtypes" | "externalsourcesembedcss" | "cameramirror" | "cameracapture" | "sourcelist" | "thumbsize" | "showemptylist" | "uselocalimageeditor" | "usecloudimageeditor" | "cloudimageeditortabs" | "removecopyright" | "imageshrink" | "modalscrolllock" | "modalbackdropstrokes" | "sourcelistwrap" | "remotetabsessionkey" | "cdncname" | "baseurl" | "socialbaseurl" | "securesignature" | "securedeliveryproxy" | "retrythrottledrequestmaxtimes" | "multipartminfilesize" | "multipartchunksize" | "maxconcurrentrequests" | "multipartmaxconcurrentrequests" | "multipartmaxattempts" | "checkforurlduplicates" | "saveurlforrecurrentuploads" | "groupoutput" | "useragentintegration" | "localename" | "secureuploadsexpirethreshold" | "cameramodes" | "defaultcameramode" | "enableaudiorecording" | "enablevideorecording" | "maxvideorecordingduration" | "displayuploadlist" | "enablefilename" | "usepreviewimage", string>;
67
+ declare const attrStateMapping: Record<"accept" | "pubkey" | "multiple" | "store" | "debug" | "crop-preset" | "secure-expire" | "max-local-file-size-bytes" | "multiple-min" | "multiple-max" | "confirm-upload" | "img-only" | "external-sources-preferred-types" | "external-sources-embed-css" | "camera-mirror" | "camera-capture" | "source-list" | "thumb-size" | "show-empty-list" | "use-local-image-editor" | "use-cloud-image-editor" | "cloud-image-editor-tabs" | "remove-copyright" | "image-shrink" | "modal-scroll-lock" | "modal-backdrop-strokes" | "source-list-wrap" | "remote-tab-session-key" | "cdn-cname" | "base-url" | "social-base-url" | "secure-signature" | "secure-delivery-proxy" | "retry-throttled-request-max-times" | "multipart-min-file-size" | "multipart-chunk-size" | "max-concurrent-requests" | "multipart-max-concurrent-requests" | "multipart-max-attempts" | "check-for-url-duplicates" | "save-url-for-recurrent-uploads" | "group-output" | "user-agent-integration" | "locale-name" | "secure-uploads-expire-threshold" | "camera-modes" | "default-camera-mode" | "enable-audio-recording" | "enable-video-recording" | "max-video-recording-duration" | "files-view-mode" | "grid-show-file-names" | "cloud-image-editor-auto-open" | "secureexpire" | "croppreset" | "maxlocalfilesizebytes" | "multiplemin" | "multiplemax" | "confirmupload" | "imgonly" | "externalsourcespreferredtypes" | "externalsourcesembedcss" | "cameramirror" | "cameracapture" | "sourcelist" | "thumbsize" | "showemptylist" | "uselocalimageeditor" | "usecloudimageeditor" | "cloudimageeditortabs" | "removecopyright" | "imageshrink" | "modalscrolllock" | "modalbackdropstrokes" | "sourcelistwrap" | "remotetabsessionkey" | "cdncname" | "baseurl" | "socialbaseurl" | "securesignature" | "securedeliveryproxy" | "retrythrottledrequestmaxtimes" | "multipartminfilesize" | "multipartchunksize" | "maxconcurrentrequests" | "multipartmaxconcurrentrequests" | "multipartmaxattempts" | "checkforurlduplicates" | "saveurlforrecurrentuploads" | "groupoutput" | "useragentintegration" | "localename" | "secureuploadsexpirethreshold" | "cameramodes" | "defaultcameramode" | "enableaudiorecording" | "enablevideorecording" | "maxvideorecordingduration" | "filesviewmode" | "gridshowfilenames" | "cloudimageeditorautoopen", string>;
68
68
  export {};
69
69
  //# sourceMappingURL=Config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["Config.js"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;GAaG;AACH,gCAXU;IACT,UAAc;IACd,0BAA8B;IAC9B,gCAAoC;IACpC,gCAAoC;IACpC,kBAAsB;IACtB,gBAAoB;IACpB,sBAA0B;IAC1B,sBAA0B;CACvB,CAWF;qBAyNY,OAAO,2BAA2B,EAAE,UAAU,CAAC,kBAAkB,EAAE,OAAO,aAAa,EAAE,UAAU,CAAC;AAAlH,6HAA6H;AAG7H,4BAAmF;AA/LnF;IAkBE;;;;OAIG;IACH,+BAYC;IAED;;;;OAIG;IACH,2BAQC;IAED;;;;OAIG;IACH,kBAyBC;IAED;;;OAGG;IACH,kBAIC;IAED;;;;OAIG;IACH,wCAJW,MAAM,iBACN,OAAO,aACP,OAAO,QAoBjB;IA0CD;;;;OAIG;IACH,+BAJW,MAAM,uBAAuB,UAC7B,MAAM,UACN,MAAM,QAahB;CACF;sBAjPqB,yBAAyB;AAwD/C,0CAA0C;AAC1C,suEAGG"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["Config.js"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;GAaG;AACH,gCAXU;IACT,UAAc;IACd,0BAA8B;IAC9B,gCAAoC;IACpC,gCAAoC;IACpC,kBAAsB;IACtB,gBAAoB;IACpB,sBAA0B;IAC1B,sBAA0B;CACvB,CAWF;qBAyNY,OAAO,2BAA2B,EAAE,UAAU,CAAC,kBAAkB,EAAE,OAAO,aAAa,EAAE,UAAU,CAAC;AAAlH,6HAA6H;AAG7H,4BAAmF;AA/LnF;IAkBE;;;;OAIG;IACH,+BAYC;IAED;;;;OAIG;IACH,2BAQC;IAED;;;;OAIG;IACH,kBAyBC;IAED;;;OAGG;IACH,kBAIC;IAED;;;;OAIG;IACH,wCAJW,MAAM,iBACN,OAAO,aACP,OAAO,QAoBjB;IA0CD;;;;OAIG;IACH,+BAJW,MAAM,uBAAuB,UAC7B,MAAM,UACN,MAAM,QAahB;CACF;sBAjPqB,yBAAyB;AAwD/C,0CAA0C;AAC1C,yvEAGG"}
@@ -75,7 +75,7 @@ export const initialConfig = {
75
75
  maxVideoRecordingDuration: null,
76
76
  mediaRecorderOptions: null,
77
77
 
78
- displayUploadList: 'grid',
79
- enableFileName: false,
80
- usePreviewImage: false,
78
+ filesViewMode: 'list',
79
+ gridShowFileNames: false,
80
+ cloudImageEditorAutoOpen: false,
81
81
  };
@@ -1,3 +1,4 @@
1
- export function asBoolean(value: unknown): boolean;
2
1
  export function normalizeConfigValue<T extends keyof import("../../types").ConfigType>(key: T, value: unknown): import("../../types").ConfigType[T] | undefined;
2
+ export { asBoolean };
3
+ import { asBoolean } from './validatorsType.js';
3
4
  //# sourceMappingURL=normalizeConfigValue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalizeConfigValue.d.ts","sourceRoot":"","sources":["normalizeConfigValue.js"],"names":[],"mappings":"AAiBO,iCADK,OAAO,WAWlB;AA4KM,sGAHI,OAAO,mDAcjB"}
1
+ {"version":3,"file":"normalizeConfigValue.d.ts","sourceRoot":"","sources":["normalizeConfigValue.js"],"names":[],"mappings":"AA2GO,sGAHI,OAAO,mDAcjB;;0BAtGM,qBAAqB"}
@@ -1,112 +1,20 @@
1
1
  // @ts-check
2
2
 
3
- import { CameraSourceTypes } from '../CameraSource/constants.js';
4
- import { deserializeCsv } from '../utils/comma-separated.js';
5
3
  import { initialConfig } from './initialConfig.js';
6
-
7
- /** @param {unknown} value */
8
- const asString = (value) => String(value);
9
- /** @param {unknown} value */
10
- const asNumber = (value) => {
11
- const number = Number(value);
12
- if (Number.isNaN(number)) {
13
- throw new Error(`Invalid number: "${value}"`);
14
- }
15
- return number;
16
- };
17
- /** @param {unknown} value */
18
- export const asBoolean = (value) => {
19
- if (typeof value === 'undefined' || value === null) return false;
20
- if (typeof value === 'boolean') return value;
21
- // for attr like multiple="true" (react will pass it as string)
22
- if (value === 'true') return true;
23
- // for attr flags like multiple="" (some other libs will pass it as empty string)
24
- if (value === '') return true;
25
- // for attr like multiple="false" (react will pass it as string)
26
- if (value === 'false') return false;
27
- throw new Error(`Invalid boolean: "${value}"`);
28
- };
29
- /** @param {unknown} value */
30
- const asStore = (value) => (value === 'auto' ? value : asBoolean(value));
31
-
32
- /** @param {unknown} value */
33
- const asCameraCapture = (value) => {
34
- const strValue = asString(value);
35
- if (strValue !== 'user' && strValue !== 'environment' && strValue !== '') {
36
- throw new Error(`Invalid value: "${strValue}"`);
37
- }
38
- return strValue;
39
- };
40
-
41
- /** @param {unknown} value */
42
- const asCameraMode = (value) => {
43
- const strValue = asString(value);
44
- if (!Object.values(CameraSourceTypes).includes(strValue)) {
45
- throw new Error(`Invalid value: "${strValue}"`);
46
- }
47
- return /** @type {import('../CameraSource/CameraSource.js').CameraMode} */ (strValue);
48
- };
49
-
50
- /** @param {unknown} value */
51
- const asCameraModes = (value) => {
52
- const str = asString(value);
53
- const array = deserializeCsv(str);
54
- if (array.some((item) => !Object.values(CameraSourceTypes).includes(item))) {
55
- throw new Error(`Invalid value: "${JSON.stringify(array)}"`);
56
- }
57
- return str;
58
- };
59
-
60
- /** @param {unknown} value */
61
- const asMetadata = (value) => {
62
- if (typeof value === 'object' && !Array.isArray(value)) {
63
- return /** @type {import('../../types').Metadata} */ (value);
64
- }
65
- if (typeof value === 'function') {
66
- return /** @type {import('../../types').MetadataCallback} */ (value);
67
- }
68
-
69
- throw new Error('Invalid metadata value. Must be an object or function.');
70
- };
71
-
72
- /**
73
- * @template {{}} T
74
- * @param {unknown} value
75
- * @returns {T}
76
- */
77
- const asObject = (value) => {
78
- if (typeof value === 'object') {
79
- return /** @type {T} */ (value);
80
- }
81
-
82
- throw new Error('Invalid value. Must be an object.');
83
- };
84
-
85
- /**
86
- * @template {Function} T
87
- * @param {unknown} value
88
- * @returns {T}
89
- */
90
- const asFunction = (value) => {
91
- if (typeof value === 'function') {
92
- return /** @type {T} */ (value);
93
- }
94
-
95
- throw new Error('Invalid value. Must be a function.');
96
- };
97
-
98
- /**
99
- * @template {Function[] | string | {}} T
100
- * @param {unknown} value
101
- * @returns {T}
102
- */
103
- const asArray = (value) => {
104
- if (Array.isArray(value)) {
105
- return /** @type {T} */ (value);
106
- }
107
-
108
- throw new Error('Must be an array.');
109
- };
4
+ import {
5
+ asString,
6
+ asNumber,
7
+ asFunction,
8
+ asBoolean,
9
+ asObject,
10
+ asArray,
11
+ asMetadata,
12
+ asCameraCapture,
13
+ asCameraMode,
14
+ asCameraModes,
15
+ asStore,
16
+ asFilesViewMode,
17
+ } from './validatorsType.js';
110
18
 
111
19
  /**
112
20
  * @type {{
@@ -186,9 +94,9 @@ const mapping = {
186
94
 
187
95
  maxVideoRecordingDuration: asNumber,
188
96
 
189
- displayUploadList: asString,
190
- enableFileName: asBoolean,
191
- usePreviewImage: asBoolean,
97
+ filesViewMode: asFilesViewMode,
98
+ gridShowFileNames: asBoolean,
99
+ cloudImageEditorAutoOpen: asBoolean,
192
100
  };
193
101
 
194
102
  /**
@@ -209,3 +117,4 @@ export const normalizeConfigValue = (key, value) => {
209
117
  return initialConfig[key];
210
118
  }
211
119
  };
120
+ export { asBoolean };
@@ -0,0 +1,37 @@
1
+ /** @param {unknown} value */
2
+ export function asString(value: unknown): string;
3
+ /** @param {unknown} value */
4
+ export function asNumber(value: unknown): number;
5
+ /** @param {unknown} value */
6
+ export function asBoolean(value: unknown): boolean;
7
+ /** @param {unknown} value */
8
+ export function asStore(value: unknown): boolean | "auto";
9
+ /** @param {unknown} value */
10
+ export function asCameraCapture(value: unknown): "" | "user" | "environment";
11
+ /** @param {unknown} value */
12
+ export function asCameraMode(value: unknown): import("../CameraSource/CameraSource.js").CameraMode;
13
+ /** @param {unknown} value */
14
+ export function asCameraModes(value: unknown): string;
15
+ /** @param {unknown} value */
16
+ export function asMetadata(value: unknown): import("@uploadcare/upload-client").Metadata | import("../../types").MetadataCallback;
17
+ /**
18
+ * @template {{}} T
19
+ * @param {unknown} value
20
+ * @returns {T}
21
+ */
22
+ export function asObject<T extends {}>(value: unknown): T;
23
+ /**
24
+ * @template {Function} T
25
+ * @param {unknown} value
26
+ * @returns {T}
27
+ */
28
+ export function asFunction<T extends Function>(value: unknown): T;
29
+ /**
30
+ * @template {Function[] | string | {}} T
31
+ * @param {unknown} value
32
+ * @returns {T}
33
+ */
34
+ export function asArray<T extends string | {} | Function[]>(value: unknown): T;
35
+ /** @param {unknown} value */
36
+ export function asFilesViewMode(value: unknown): import("../UploadList/UploadList.js").FilesViewMode;
37
+ //# sourceMappingURL=validatorsType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validatorsType.d.ts","sourceRoot":"","sources":["validatorsType.js"],"names":[],"mappings":"AAIA,6BAA6B;AAC7B,gCADY,OAAO,UACsB;AAEzC,6BAA6B;AAC7B,gCADY,OAAO,UAOlB;AACD,6BAA6B;AAC7B,iCADY,OAAO,WAWlB;AACD,6BAA6B;AAC7B,+BADY,OAAO,oBACqD;AAExE,6BAA6B;AAC7B,uCADY,OAAO,+BAOlB;AAED,6BAA6B;AAC7B,oCADY,OAAO,wDAOlB;AAED,6BAA6B;AAC7B,qCADY,OAAO,UAQlB;AAED,6BAA6B;AAC7B,kCADY,OAAO,yFAUlB;AAED;;;;GAIG;AACH,8CAHW,OAAO,KASjB;AAED;;;;GAIG;AACH,sDAHW,OAAO,KASjB;AAED;;;;GAIG;AACH,mEAHW,OAAO,KASjB;AAED,6BAA6B;AAC7B,uCADY,OAAO,uDASlB"}
@@ -0,0 +1,134 @@
1
+ // @ts-check
2
+ import { CameraSourceTypes } from '../CameraSource/constants.js';
3
+ import { deserializeCsv } from '../utils/comma-separated.js';
4
+
5
+ /** @param {unknown} value */
6
+ const asString = (value) => String(value);
7
+
8
+ /** @param {unknown} value */
9
+ const asNumber = (value) => {
10
+ const number = Number(value);
11
+ if (Number.isNaN(number)) {
12
+ throw new Error(`Invalid number: "${value}"`);
13
+ }
14
+ return number;
15
+ };
16
+ /** @param {unknown} value */
17
+ const asBoolean = (value) => {
18
+ if (typeof value === 'undefined' || value === null) return false;
19
+ if (typeof value === 'boolean') return value;
20
+ // for attr like multiple="true" (react will pass it as string)
21
+ if (value === 'true') return true;
22
+ // for attr flags like multiple="" (some other libs will pass it as empty string)
23
+ if (value === '') return true;
24
+ // for attr like multiple="false" (react will pass it as string)
25
+ if (value === 'false') return false;
26
+ throw new Error(`Invalid boolean: "${value}"`);
27
+ };
28
+ /** @param {unknown} value */
29
+ const asStore = (value) => (value === 'auto' ? value : asBoolean(value));
30
+
31
+ /** @param {unknown} value */
32
+ const asCameraCapture = (value) => {
33
+ const strValue = asString(value);
34
+ if (strValue !== 'user' && strValue !== 'environment' && strValue !== '') {
35
+ throw new Error(`Invalid value: "${strValue}"`);
36
+ }
37
+ return strValue;
38
+ };
39
+
40
+ /** @param {unknown} value */
41
+ const asCameraMode = (value) => {
42
+ const strValue = asString(value);
43
+ if (!Object.values(CameraSourceTypes).includes(strValue)) {
44
+ throw new Error(`Invalid value: "${strValue}"`);
45
+ }
46
+ return /** @type {import('../CameraSource/CameraSource.js').CameraMode} */ (strValue);
47
+ };
48
+
49
+ /** @param {unknown} value */
50
+ const asCameraModes = (value) => {
51
+ const str = asString(value);
52
+ const array = deserializeCsv(str);
53
+ if (array.some((item) => !Object.values(CameraSourceTypes).includes(item))) {
54
+ throw new Error(`Invalid value: "${JSON.stringify(array)}"`);
55
+ }
56
+ return str;
57
+ };
58
+
59
+ /** @param {unknown} value */
60
+ const asMetadata = (value) => {
61
+ if (typeof value === 'object' && !Array.isArray(value)) {
62
+ return /** @type {import('../../types').Metadata} */ (value);
63
+ }
64
+ if (typeof value === 'function') {
65
+ return /** @type {import('../../types').MetadataCallback} */ (value);
66
+ }
67
+
68
+ throw new Error('Invalid metadata value. Must be an object or function.');
69
+ };
70
+
71
+ /**
72
+ * @template {{}} T
73
+ * @param {unknown} value
74
+ * @returns {T}
75
+ */
76
+ const asObject = (value) => {
77
+ if (typeof value === 'object') {
78
+ return /** @type {T} */ (value);
79
+ }
80
+
81
+ throw new Error('Invalid value. Must be an object.');
82
+ };
83
+
84
+ /**
85
+ * @template {Function} T
86
+ * @param {unknown} value
87
+ * @returns {T}
88
+ */
89
+ const asFunction = (value) => {
90
+ if (typeof value === 'function') {
91
+ return /** @type {T} */ (value);
92
+ }
93
+
94
+ throw new Error('Invalid value. Must be a function.');
95
+ };
96
+
97
+ /**
98
+ * @template {Function[] | string | {}} T
99
+ * @param {unknown} value
100
+ * @returns {T}
101
+ */
102
+ const asArray = (value) => {
103
+ if (Array.isArray(value)) {
104
+ return /** @type {T} */ (value);
105
+ }
106
+
107
+ throw new Error('Must be an array.');
108
+ };
109
+
110
+ /** @param {unknown} value */
111
+ const asFilesViewMode = (value) => {
112
+ const strValue = asString(value);
113
+
114
+ if (['grid', 'list'].includes(strValue)) {
115
+ return /** @type {import('../UploadList/UploadList.js').FilesViewMode} */ (strValue);
116
+ }
117
+
118
+ throw new Error(`Invalid value: "${strValue}"`);
119
+ };
120
+
121
+ export {
122
+ asString,
123
+ asNumber,
124
+ asBoolean,
125
+ asStore,
126
+ asCameraCapture,
127
+ asCameraMode,
128
+ asCameraModes,
129
+ asMetadata,
130
+ asObject,
131
+ asFunction,
132
+ asArray,
133
+ asFilesViewMode,
134
+ };
@@ -6,6 +6,7 @@ export class DropArea extends UploaderBlock {
6
6
  isFullscreen: boolean;
7
7
  isEnabled: boolean;
8
8
  isVisible: boolean;
9
+ isInitFlow: boolean;
9
10
  text: string;
10
11
  "uc-drop-area/registry": null;
11
12
  '*commonProgress': number;
@@ -1 +1 @@
1
- {"version":3,"file":"DropArea.d.ts","sourceRoot":"","sources":["DropArea.js"],"names":[],"mappings":"AAaA;IAKI;;;;;;;;;;;;;;;;;;;;;;MAUC;IAGH,oBAgBC;IAgDC,eAAe;IACf,yBA4BE;IAIA,yDAWE;IA6BF;;;OAGG;IACH,uBASC;IAOL;;;;;OAKG;IACH,sBAeC;IAED,eAAe;IACf,0BAcC;CAqBF;;;;8BAnP6B,iCAAiC"}
1
+ {"version":3,"file":"DropArea.d.ts","sourceRoot":"","sources":["DropArea.js"],"names":[],"mappings":"AAaA;IAKI;;;;;;;;;;;;;;;;;;;;;;;MAWC;IAGH,oBAgBC;IAsDC,eAAe;IACf,yBA2BE;IAIA,yDAWE;IA6BF;;;OAGG;IACH,uBAmBC;IAOL;;;;;OAKG;IACH,sBAeC;IAED,eAAe;IACf,0BAcC;CAqBF;;;;8BAnQ6B,iCAAiC"}
@@ -4,7 +4,7 @@ import { Data } from '@symbiotejs/symbiote';
4
4
  import { ActivityBlock } from '../../abstract/ActivityBlock.js';
5
5
  import { UploaderBlock } from '../../abstract/UploaderBlock.js';
6
6
  import { stringToArray } from '../../utils/stringToArray.js';
7
- import { asBoolean } from '../Config/normalizeConfigValue.js';
7
+ import { asBoolean } from '../Config/validatorsType.js';
8
8
  import { UploadSource } from '../utils/UploadSource.js';
9
9
  import { DropzoneState, addDropzone } from './addDropzone.js';
10
10
 
@@ -24,6 +24,7 @@ export class DropArea extends UploaderBlock {
24
24
  isFullscreen: false,
25
25
  isEnabled: true,
26
26
  isVisible: true,
27
+ isInitFlow: false,
27
28
  text: '',
28
29
  [REGISTRY_KEY]: null,
29
30
  };
@@ -69,6 +70,12 @@ export class DropArea extends UploaderBlock {
69
70
  this.set$({ isClickable: asBoolean(value) });
70
71
  },
71
72
  );
73
+ this.defineAccessor(
74
+ 'initflow',
75
+ /** @param {unknown} value */ (value) => {
76
+ this.set$({ isInitFlow: asBoolean(value) });
77
+ },
78
+ );
72
79
  this.defineAccessor(
73
80
  'with-icon',
74
81
  /** @param {unknown} value */ (value) => {
@@ -119,7 +126,6 @@ export class DropArea extends UploaderBlock {
119
126
  this.set$({
120
127
  '*currentActivity': ActivityBlock.activities.UPLOAD_LIST,
121
128
  });
122
- // this.setOrAddState('*modalActive', true);
123
129
  }
124
130
  },
125
131
  });
@@ -174,9 +180,19 @@ export class DropArea extends UploaderBlock {
174
180
  if (event.type === 'keydown') {
175
181
  // @ts-ignore
176
182
  if (event.code === 'Space' || event.code === 'Enter') {
183
+ if (this.$.isInitFlow) {
184
+ this.api.initFlow();
185
+ return;
186
+ }
187
+
177
188
  this.api.openSystemDialog();
178
189
  }
179
190
  } else if (event.type === 'click') {
191
+ if (this.$.isInitFlow) {
192
+ this.api.initFlow();
193
+ return;
194
+ }
195
+
180
196
  this.api.openSystemDialog();
181
197
  }
182
198
  };
@@ -271,4 +287,6 @@ DropArea.bindAttributes({
271
287
  fullscreen: null,
272
288
  // @ts-expect-error TODO: fix types inside symbiote
273
289
  disabled: null,
290
+ // @ts-expect-error TODO: fix types inside symbiote
291
+ initflow: null,
274
292
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalSource.d.ts","sourceRoot":"","sources":["ExternalSource.js"],"names":[],"mappings":"AAWA,+DAA+D;AAE/D;IAEE,yBAAiD;IAK/C;;;QAKE,6FAA6F;sBAAlF,OAAO,YAAY,EAAE,eAAe,CAAC,uBAAuB,CAAC,CAAC,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;MAkC1F;IAGH,6BAA6B;IAC7B,qCAMC;IAiDD;;;OAGG;IACH,mCAcC;IAED;;;OAGG;IACH,kCAsBC;IAED,eAAe;IACf,yBAIC;IAED,eAAe;IACf,mBAKC;IAED;;;OAGG;IACH,sBAKC;IAED,eAAe;IACf,kBAKC;IAED,eAAe;IACf,kBAeC;IAED,eAAe;IACf,oBA6BC;IALC,eAAe;IACf,uBAA6D;IAM/D,eAAe;IACf,sBAMC;IAED,eAAe;IACf,6BASC;CACF;;;;6BAnQa;IAAE,kBAAkB,EAAE,MAAM,CAAA;CAAE;8BAPd,iCAAiC"}
1
+ {"version":3,"file":"ExternalSource.d.ts","sourceRoot":"","sources":["ExternalSource.js"],"names":[],"mappings":"AAWA,+DAA+D;AAE/D;IAEE,yBAAiD;IAK/C;;;QAKE,6FAA6F;sBAAlF,OAAO,YAAY,EAAE,eAAe,CAAC,uBAAuB,CAAC,CAAC,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;MAkC1F;IAGH,6BAA6B;IAC7B,qCAMC;IAgDD;;;OAGG;IACH,mCAcC;IAED;;;OAGG;IACH,kCAsBC;IAED,eAAe;IACf,yBAIC;IAED,eAAe;IACf,mBAKC;IAED;;;OAGG;IACH,sBAKC;IAED,eAAe;IACf,kBAKC;IAED,eAAe;IACf,kBAeC;IAED,eAAe;IACf,oBA6BC;IALC,eAAe;IACf,uBAA6D;IAM/D,eAAe;IACf,sBAMC;IAED,eAAe;IACf,6BASC;CACF;;;;6BAlQa;IAAE,kBAAkB,EAAE,MAAM,CAAA;CAAE;8BAPd,iCAAiC"}
@@ -78,7 +78,6 @@ export class ExternalSource extends UploaderBlock {
78
78
  if (!externalSourceType) {
79
79
  this.modalManager.close(this.$['*currentActivity']);
80
80
  this.$['*currentActivity'] = null;
81
- // this.setOrAddState('*modalActive', false);
82
81
  console.error(`Param "externalSourceType" is required for activity "${this.activityType}"`);
83
82
  return;
84
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FileItem.d.ts","sourceRoot":"","sources":["FileItem.js"],"names":[],"mappings":"AAoBA;IAIE,eAAe;IACf,mBAAuB;IACvB;;;OAGG;IACH,eAAc;IACd,eAAe;IACf,wBAAwB;IACxB,eAAe;IACf,gCAA4E;IAC5E,eAAe;IACf,iCAA0E;IAE1E,eAAe;IACf,sBAAsB;IAKpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+BC;IAGH,eASC;IAED;;;OAGG;IACH,0BAcC;IAXC,wCAA0C;IAa5C,eAAe;IACf,wBAgBC;IAED,eAAe;IACf,2BA2CC;IAED;;;;OAIG;IACH,kBAUC;IAED;;MAaQ;IAER;;;OAGG;IACH,uBAmDC;IA6CD,wEAAwE;IACxE,oBADY,CAAC,oBAAoB,CAAC,CAAC,MAAM,oBAAoB,CAAC,QA0B7D;IAaC,eAAe;IACf,kBAEE;IAWJ;;;MAEC;IAED;;;OAGG;IACH,uBAEC;IAED,wBAsFC;CACF;;;;;8BAtc6B,iCAAiC;AAS/D;;;;;GAKG"}
1
+ {"version":3,"file":"FileItem.d.ts","sourceRoot":"","sources":["FileItem.js"],"names":[],"mappings":"AAoBA;IAIE,eAAe;IACf,mBAAuB;IACvB;;;OAGG;IACH,eAAc;IACd,eAAe;IACf,wBAAwB;IACxB,eAAe;IACf,gCAA4E;IAC5E,eAAe;IACf,iCAA0E;IAE1E,eAAe;IACf,sBAAsB;IAKpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+BC;IAGH,eASC;IAED;;;OAGG;IACH,0BAcC;IAXC,wCAA0C;IAa5C,eAAe;IACf,wBAgBC;IAED,eAAe;IACf,2BAuCC;IAED;;;;OAIG;IACH,kBAUC;IAED;;MAaQ;IAER;;;OAGG;IACH,uBAmDC;IA+CD,wEAAwE;IACxE,oBADY,CAAC,oBAAoB,CAAC,CAAC,MAAM,oBAAoB,CAAC,QA0B7D;IAaC,eAAe;IACf,kBAEE;IAWJ;;;MAEC;IAED;;;OAGG;IACH,uBAEC;IAED,wBAsFC;CACF;;;;;8BApc6B,iCAAiC;AAS/D;;;;;GAKG"}
@@ -134,11 +134,7 @@ export class FileItem extends UploaderBlock {
134
134
  let entry = this._entry;
135
135
 
136
136
  if (entry.getValue('fileInfo') && entry.getValue('isImage')) {
137
- let size = Math.max(
138
- parseInt(String(this?._thumbRect?.height || 0)),
139
- parseInt(String(this?._thumbRect?.width || 0)),
140
- this.cfg.thumbSize,
141
- );
137
+ let size = this.cfg.thumbSize;
142
138
 
143
139
  let thumbUrl = await this.proxyUrl(
144
140
  createCdnUrl(
@@ -273,9 +269,11 @@ export class FileItem extends UploaderBlock {
273
269
  });
274
270
 
275
271
  this.subConfigValue('useCloudImageEditor', () => this._debouncedCalculateState());
276
- this.subConfigValue('displayUploadList', (mode) => {
272
+ this.subConfigValue('filesViewMode', (mode) => {
277
273
  if (mode === 'grid') {
278
- this.subConfigValue('enableFileName', (value) => (this.$.isFileName = !value));
274
+ this.subConfigValue('gridShowFileNames', (value) => (this.$.isFileName = !value));
275
+ } else {
276
+ this.$.isFileName = false;
279
277
  }
280
278
 
281
279
  this.setAttribute('mode', mode);
@@ -460,11 +458,8 @@ export class FileItem extends UploaderBlock {
460
458
 
461
459
  FileItem.template = /* HTML */ `
462
460
  <div class="uc-inner" set="@finished: isFinished; @uploading: isUploading; @failed: isFailed; @focused: isFocused">
463
- <div class="uc-thumb" set="style.backgroundImage: thumbUrl">
464
- <div class="uc-badge">
465
- <uc-icon set="@name: badgeIcon"></uc-icon>
466
- </div>
467
- </div>
461
+ <uc-thumb set="thumbUrl:thumbUrl;badgeIcon:badgeIcon"></uc-thumb>
462
+
468
463
  <div aria-atomic="true" aria-live="polite" class="uc-file-name-wrapper" set="@aria-label:ariaLabelStatusFile;">
469
464
  <span class="uc-file-name" set="@hidden: isFileName">{{itemName}}</span>
470
465
  <span class="uc-file-error" set="@hidden: !errorText;">{{errorText}}</span>
@@ -491,7 +486,11 @@ FileItem.template = /* HTML */ `
491
486
  <uc-icon name="upload"></uc-icon>
492
487
  </button>
493
488
  </div>
494
- <uc-progress-bar class="uc-progress-bar" set="value: progressValue; visible: progressVisible;"> </uc-progress-bar>
489
+ <uc-progress-bar
490
+ class="uc-progress-bar"
491
+ set="value: progressValue; visible: progressVisible; @hasFileName: !isFileName"
492
+ >
493
+ </uc-progress-bar>
495
494
  </div>
496
495
  `;
497
496
  FileItem.activeInstances = new Set();
@@ -202,3 +202,27 @@ uc-file-item[mode='grid'] .uc-file-actions {
202
202
  uc-file-item[mode='grid'] button {
203
203
  background-color: var(--uc-background);
204
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
+ z-index: 1;
219
+ }
220
+
221
+ uc-file-item[mode='grid'] .uc-progress-bar[hasfilename] {
222
+ bottom: calc(var(--uc-padding) + var(--uc-font-size));
223
+ }
224
+
225
+ uc-file-item[mode='grid'] .uc-progress-bar .uc-progress {
226
+ background-color: rgba(255, 255, 255, 80%) !important;
227
+ width: 100% !important;
228
+ }
@@ -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;
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["Modal.js"],"names":[],"mappings":"AAIA;IAEE,kCAAoC;IAIlC;;;;MAKC;IAGH,iCAEE;IAEF,yBAME;IAEF,+BAEE;IAEF,uBAAuB;IACvB,4BADY,KAAK,UAIf;IAFA,eAAe;IACf,yBAAgC;IAGlC,uBAAuB;IACvB,0BADY,KAAK,UAKf;IAEF,aAWC;IAED,aAOC;CA8CF;;;;sBAhHqB,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,4BADY,KAAK,UAIf;IAFA,eAAe;IACf,yBAAgC;IAGlC,uBAAuB;IACvB,0BADY,KAAK,UAKf;IAEF,aAWC;IAED,aAOC;CA8CF;;;;sBA9GqB,yBAAyB"}
@@ -10,8 +10,6 @@ export class Modal extends Block {
10
10
  super();
11
11
  this.init$ = {
12
12
  ...this.init$,
13
- '*modalActive': false,
14
- isOpen: false,
15
13
  closeClicked: this._handleDialogClose,
16
14
  };
17
15
  }
@@ -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,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'];
@@ -0,0 +1,24 @@
1
+ export class Thumb extends UploaderBlock {
2
+ init$: {
3
+ thumbUrl: string;
4
+ badgeIcon: string;
5
+ '*commonProgress': number;
6
+ '*uploadList': never[];
7
+ '*uploadQueue': import("@uploadcare/upload-client").Queue;
8
+ '*collectionErrors': any[];
9
+ '*collectionState': import("../../index.js").OutputCollectionState<import("../../index.js").OutputCollectionStatus, "maybe-has-group"> | null;
10
+ '*groupInfo': import("@uploadcare/upload-client").UploadcareGroup | null;
11
+ '*uploadTrigger': Set<string>;
12
+ '*secureUploadsManager': import("../../abstract/SecureUploadsManager.js").SecureUploadsManager | null;
13
+ '*currentActivity': null;
14
+ '*currentActivityParams': {};
15
+ '*history': never[];
16
+ '*historyBack': null;
17
+ '*closeModal': () => void;
18
+ };
19
+ }
20
+ export namespace Thumb {
21
+ let template: string;
22
+ }
23
+ import { UploaderBlock } from '../../abstract/UploaderBlock.js';
24
+ //# sourceMappingURL=Thumb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Thumb.d.ts","sourceRoot":"","sources":["Thumb.js"],"names":[],"mappings":"AAIA;IAII;;;;;;;;;;;;;;;;MAIC;CAeJ;;;;8BAzB6B,iCAAiC"}