@uploadcare/file-uploader 1.12.1-alpha.0 → 1.12.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abstract/UploaderPublicApi.d.ts.map +1 -1
- package/abstract/UploaderPublicApi.js +4 -11
- package/blocks/CameraSource/CameraSource.d.ts +12 -22
- package/blocks/CameraSource/CameraSource.d.ts.map +1 -1
- package/blocks/CameraSource/CameraSource.js +81 -83
- package/blocks/CameraSource/camera-source.css +1 -0
- package/blocks/CameraSource/constants.d.ts +15 -0
- package/blocks/CameraSource/constants.d.ts.map +1 -0
- package/blocks/CameraSource/constants.js +17 -0
- package/blocks/CloudImageEditor/src/lib/parseTabs.js +2 -2
- package/blocks/Config/Config.d.ts +3 -3
- package/blocks/Config/Config.d.ts.map +1 -1
- package/blocks/Config/Config.js +13 -3
- package/blocks/Config/assertions.d.ts +5 -0
- package/blocks/Config/assertions.d.ts.map +1 -0
- package/blocks/Config/assertions.js +37 -0
- package/blocks/Config/initialConfig.d.ts.map +1 -1
- package/blocks/Config/initialConfig.js +4 -3
- package/blocks/Config/normalizeConfigValue.d.ts.map +1 -1
- package/blocks/Config/normalizeConfigValue.js +20 -7
- package/blocks/Config/side-effects.d.ts +7 -0
- package/blocks/Config/side-effects.d.ts.map +1 -0
- package/blocks/Config/side-effects.js +32 -0
- package/blocks/FileItem/FileItem.d.ts +0 -4
- package/blocks/FileItem/FileItem.d.ts.map +1 -1
- package/blocks/FileItem/FileItem.js +2 -22
- package/blocks/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/blocks/ProgressBar/ProgressBar.js +6 -30
- package/blocks/ProgressBar/progress-bar.css +1 -35
- package/blocks/utils/comma-separated.d.ts +1 -1
- package/blocks/utils/comma-separated.d.ts.map +1 -1
- package/blocks/utils/comma-separated.js +5 -2
- package/index.ssr.d.ts +0 -14
- package/index.ssr.d.ts.map +1 -1
- package/index.ssr.js +6 -19
- package/locales/file-uploader/ar.d.ts +0 -1
- package/locales/file-uploader/ar.js +0 -1
- package/locales/file-uploader/az.d.ts +0 -1
- package/locales/file-uploader/az.js +0 -1
- package/locales/file-uploader/ca.d.ts +0 -1
- package/locales/file-uploader/ca.js +0 -1
- package/locales/file-uploader/cs.d.ts +0 -1
- package/locales/file-uploader/cs.js +0 -1
- package/locales/file-uploader/da.d.ts +0 -1
- package/locales/file-uploader/da.js +0 -1
- package/locales/file-uploader/de.d.ts +0 -1
- package/locales/file-uploader/de.js +0 -1
- package/locales/file-uploader/el.d.ts +0 -1
- package/locales/file-uploader/el.js +0 -1
- package/locales/file-uploader/en.d.ts +0 -1
- package/locales/file-uploader/en.js +1 -2
- package/locales/file-uploader/es.d.ts +0 -1
- package/locales/file-uploader/es.js +0 -1
- package/locales/file-uploader/et.d.ts +0 -1
- package/locales/file-uploader/et.js +0 -1
- package/locales/file-uploader/fi.d.ts +0 -1
- package/locales/file-uploader/fi.js +0 -1
- package/locales/file-uploader/fr.d.ts +0 -1
- package/locales/file-uploader/fr.js +0 -1
- package/locales/file-uploader/he.d.ts +0 -1
- package/locales/file-uploader/he.js +0 -1
- package/locales/file-uploader/hy.d.ts +0 -1
- package/locales/file-uploader/hy.js +0 -1
- package/locales/file-uploader/is.d.ts +0 -1
- package/locales/file-uploader/is.js +0 -1
- package/locales/file-uploader/it.d.ts +0 -1
- package/locales/file-uploader/it.js +0 -1
- package/locales/file-uploader/ja.d.ts +0 -1
- package/locales/file-uploader/ja.js +0 -1
- package/locales/file-uploader/ka.d.ts +0 -1
- package/locales/file-uploader/ka.js +0 -1
- package/locales/file-uploader/kk.d.ts +0 -1
- package/locales/file-uploader/kk.js +0 -1
- package/locales/file-uploader/ko.d.ts +0 -1
- package/locales/file-uploader/ko.js +0 -1
- package/locales/file-uploader/lv.d.ts +0 -1
- package/locales/file-uploader/lv.js +0 -1
- package/locales/file-uploader/nb.d.ts +0 -1
- package/locales/file-uploader/nb.js +0 -1
- package/locales/file-uploader/nl.d.ts +0 -1
- package/locales/file-uploader/nl.js +0 -1
- package/locales/file-uploader/pl.d.ts +0 -1
- package/locales/file-uploader/pl.js +0 -1
- package/locales/file-uploader/pt.d.ts +0 -1
- package/locales/file-uploader/pt.js +0 -1
- package/locales/file-uploader/ro.d.ts +0 -1
- package/locales/file-uploader/ro.js +0 -1
- package/locales/file-uploader/ru.d.ts +0 -1
- package/locales/file-uploader/ru.js +0 -1
- package/locales/file-uploader/sk.d.ts +0 -1
- package/locales/file-uploader/sk.js +0 -1
- package/locales/file-uploader/sr.d.ts +0 -1
- package/locales/file-uploader/sr.js +0 -1
- package/locales/file-uploader/sv.d.ts +0 -1
- package/locales/file-uploader/sv.js +0 -1
- package/locales/file-uploader/tr.d.ts +0 -1
- package/locales/file-uploader/tr.js +0 -1
- package/locales/file-uploader/uk.d.ts +0 -1
- package/locales/file-uploader/uk.js +0 -1
- package/locales/file-uploader/vi.d.ts +0 -1
- package/locales/file-uploader/vi.js +0 -1
- package/locales/file-uploader/zh-TW.d.ts +0 -1
- package/locales/file-uploader/zh-TW.js +0 -1
- package/locales/file-uploader/zh.d.ts +0 -1
- package/locales/file-uploader/zh.js +0 -1
- package/package.json +1 -1
- package/types/exported.d.ts +81 -64
- package/web/file-uploader.iife.min.js +4 -4
- package/web/file-uploader.min.js +4 -4
- package/web/uc-basic.min.css +1 -1
- package/web/uc-cloud-image-editor.min.js +4 -4
- package/web/uc-file-uploader-inline.min.css +1 -1
- package/web/uc-file-uploader-inline.min.js +4 -4
- package/web/uc-file-uploader-minimal.min.css +1 -1
- package/web/uc-file-uploader-minimal.min.js +3 -3
- package/web/uc-file-uploader-regular.min.css +1 -1
- package/web/uc-file-uploader-regular.min.js +4 -4
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* 'iconHrefResolver',
|
|
10
10
|
* 'fileValidators',
|
|
11
11
|
* 'collectionValidators',
|
|
12
|
-
* '
|
|
12
|
+
* 'mediaRecorderOptions',
|
|
13
13
|
* ]}
|
|
14
14
|
*/
|
|
15
15
|
export const complexConfigKeys: [
|
|
@@ -20,7 +20,7 @@ export const complexConfigKeys: [
|
|
|
20
20
|
'iconHrefResolver',
|
|
21
21
|
'fileValidators',
|
|
22
22
|
'collectionValidators',
|
|
23
|
-
'
|
|
23
|
+
'mediaRecorderOptions'
|
|
24
24
|
];
|
|
25
25
|
export type Config = import('../../utils/mixinClass.js').MixinClass<typeof ConfigClass, import('../../types').ConfigType>;
|
|
26
26
|
/** @typedef {import('../../utils/mixinClass.js').MixinClass<typeof ConfigClass, import('../../types').ConfigType>} Config */
|
|
@@ -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<"
|
|
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" | "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", 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":"
|
|
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,smEAGG"}
|
package/blocks/Config/Config.js
CHANGED
|
@@ -4,6 +4,8 @@ import { initialConfig } from './initialConfig.js';
|
|
|
4
4
|
import { sharedConfigKey } from '../../abstract/sharedConfigKey.js';
|
|
5
5
|
import { toKebabCase } from '../../utils/toKebabCase.js';
|
|
6
6
|
import { normalizeConfigValue } from './normalizeConfigValue.js';
|
|
7
|
+
import { runAssertions } from './assertions.js';
|
|
8
|
+
import { runSideEffects } from './side-effects.js';
|
|
7
9
|
|
|
8
10
|
const allConfigKeys = /** @type {(keyof import('../../types').ConfigType)[]} */ ([
|
|
9
11
|
// "debug" option should go first to be able to print debug messages from the very beginning
|
|
@@ -21,7 +23,7 @@ const allConfigKeys = /** @type {(keyof import('../../types').ConfigType)[]} */
|
|
|
21
23
|
* 'iconHrefResolver',
|
|
22
24
|
* 'fileValidators',
|
|
23
25
|
* 'collectionValidators',
|
|
24
|
-
* '
|
|
26
|
+
* 'mediaRecorderOptions',
|
|
25
27
|
* ]}
|
|
26
28
|
*/
|
|
27
29
|
export const complexConfigKeys = [
|
|
@@ -32,7 +34,7 @@ export const complexConfigKeys = [
|
|
|
32
34
|
'iconHrefResolver',
|
|
33
35
|
'fileValidators',
|
|
34
36
|
'collectionValidators',
|
|
35
|
-
'
|
|
37
|
+
'mediaRecorderOptions',
|
|
36
38
|
];
|
|
37
39
|
|
|
38
40
|
/** @type {(key: keyof import('../../types').ConfigType) => key is keyof import('../../types').ConfigComplexType} */
|
|
@@ -136,6 +138,14 @@ class ConfigClass extends Block {
|
|
|
136
138
|
this._flushValueToState(key, normalizedValue);
|
|
137
139
|
|
|
138
140
|
this.debugPrint(`[uc-config] "${key}"`, normalizedValue);
|
|
141
|
+
|
|
142
|
+
runAssertions(this.cfg);
|
|
143
|
+
runSideEffects({
|
|
144
|
+
key,
|
|
145
|
+
value: normalizedValue ?? null,
|
|
146
|
+
setValue: this._setValue.bind(this),
|
|
147
|
+
getValue: this._getValue.bind(this),
|
|
148
|
+
});
|
|
139
149
|
}
|
|
140
150
|
|
|
141
151
|
/**
|
|
@@ -145,7 +155,7 @@ class ConfigClass extends Block {
|
|
|
145
155
|
_getValue(key) {
|
|
146
156
|
const anyThis = /** @type {typeof this & any} */ (this);
|
|
147
157
|
const localPropName = getLocalPropName(key);
|
|
148
|
-
return anyThis[localPropName];
|
|
158
|
+
return anyThis[localPropName] ?? this.$[sharedConfigKey(key)];
|
|
149
159
|
}
|
|
150
160
|
|
|
151
161
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["assertions.js"],"names":[],"mappings":"AAyBA,oEAAoE;AACpE,mCACc,OAAO,aAAa,EAAE,UAAU;;EAS5C"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { warnOnce } from '../../utils/warnOnce.js';
|
|
2
|
+
import { debounce } from '../utils/debounce.js';
|
|
3
|
+
|
|
4
|
+
const ASSERTIONS = [
|
|
5
|
+
{
|
|
6
|
+
test: (cfg) => cfg.accept && !!cfg.imgOnly,
|
|
7
|
+
message:
|
|
8
|
+
'There could be a mistake.\n' +
|
|
9
|
+
'Both `accept` and `imgOnly` parameters are set.\n' +
|
|
10
|
+
'The value of `accept` will be concatenated with the internal image mime types list.',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
test: (cfg) => cfg.enableVideoRecording !== null,
|
|
14
|
+
message:
|
|
15
|
+
'The `enableVideoRecording` parameter is deprecated and will be removed in the next major release.\n' +
|
|
16
|
+
'Please use the `cameraModes` parameter instead.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
test: (cfg) => cfg.defaultCameraMode !== null,
|
|
20
|
+
message:
|
|
21
|
+
'The `defaultCameraMode` parameter is deprecated and will be removed in the next major release.\n' +
|
|
22
|
+
'Please use the `cameraModes` parameter instead.',
|
|
23
|
+
},
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
/** Runs on every config change and warns about potential issues. */
|
|
27
|
+
export const runAssertions = debounce(
|
|
28
|
+
/** @param {import('../../types').ConfigType} cfg */
|
|
29
|
+
(cfg) => {
|
|
30
|
+
for (const { test, message } of ASSERTIONS) {
|
|
31
|
+
if (test(cfg)) {
|
|
32
|
+
warnOnce(message);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
0,
|
|
37
|
+
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialConfig.d.ts","sourceRoot":"","sources":["initialConfig.js"],"names":[],"mappings":"AAKA,uDAAwD;AACxD,+DAAgE;AAChE,sEAAuE;AAEvE,wDAAwD;AACxD,4BADW,OAAO,sBAAsB,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"initialConfig.d.ts","sourceRoot":"","sources":["initialConfig.js"],"names":[],"mappings":"AAKA,uDAAwD;AACxD,+DAAgE;AAChE,sEAAuE;AAEvE,wDAAwD;AACxD,4BADW,OAAO,sBAAsB,EAAE,UAAU,CAmElD"}
|
|
@@ -68,9 +68,10 @@ export const initialConfig = {
|
|
|
68
68
|
fileValidators: [],
|
|
69
69
|
collectionValidators: [],
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
cameraModes: 'photo, video',
|
|
72
|
+
defaultCameraMode: null,
|
|
72
73
|
enableAudioRecording: true,
|
|
73
|
-
enableVideoRecording:
|
|
74
|
+
enableVideoRecording: null,
|
|
74
75
|
maxVideoRecordingDuration: null,
|
|
75
|
-
|
|
76
|
+
mediaRecorderOptions: null,
|
|
76
77
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeConfigValue.d.ts","sourceRoot":"","sources":["normalizeConfigValue.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"normalizeConfigValue.d.ts","sourceRoot":"","sources":["normalizeConfigValue.js"],"names":[],"mappings":"AAiBO,iCADK,OAAO,WAWlB;AAwKM,sGAHI,OAAO,mDAcjB"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
|
|
3
|
+
import { CameraSourceTypes } from '../CameraSource/constants.js';
|
|
4
|
+
import { deserializeCsv } from '../utils/comma-separated.js';
|
|
3
5
|
import { initialConfig } from './initialConfig.js';
|
|
4
6
|
|
|
5
7
|
/** @param {unknown} value */
|
|
@@ -31,18 +33,28 @@ const asStore = (value) => (value === 'auto' ? value : asBoolean(value));
|
|
|
31
33
|
const asCameraCapture = (value) => {
|
|
32
34
|
const strValue = asString(value);
|
|
33
35
|
if (strValue !== 'user' && strValue !== 'environment' && strValue !== '') {
|
|
34
|
-
throw new Error(`Invalid
|
|
36
|
+
throw new Error(`Invalid value: "${strValue}"`);
|
|
35
37
|
}
|
|
36
38
|
return strValue;
|
|
37
39
|
};
|
|
38
40
|
|
|
39
41
|
/** @param {unknown} value */
|
|
40
|
-
const
|
|
42
|
+
const asCameraMode = (value) => {
|
|
41
43
|
const strValue = asString(value);
|
|
42
|
-
if (strValue
|
|
43
|
-
throw new Error(`Invalid
|
|
44
|
+
if (!Object.values(CameraSourceTypes).includes(strValue)) {
|
|
45
|
+
throw new Error(`Invalid value: "${strValue}"`);
|
|
44
46
|
}
|
|
45
|
-
return strValue;
|
|
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;
|
|
46
58
|
};
|
|
47
59
|
|
|
48
60
|
/** @param {unknown} value */
|
|
@@ -166,10 +178,11 @@ const mapping = {
|
|
|
166
178
|
fileValidators: /** @type {typeof asArray<import('../../types').FileValidators>} */ (asArray),
|
|
167
179
|
collectionValidators: /** @type {typeof asArray<import('../../types').CollectionValidators>} */ (asArray),
|
|
168
180
|
|
|
169
|
-
|
|
181
|
+
cameraModes: asCameraModes,
|
|
182
|
+
defaultCameraMode: asCameraMode,
|
|
170
183
|
enableAudioRecording: asBoolean,
|
|
171
184
|
enableVideoRecording: asBoolean,
|
|
172
|
-
|
|
185
|
+
mediaRecorderOptions: asObject,
|
|
173
186
|
|
|
174
187
|
maxVideoRecordingDuration: asNumber,
|
|
175
188
|
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function runSideEffects<T extends keyof import("../../types").ConfigType>({ key, value, setValue, getValue }: {
|
|
2
|
+
key: T;
|
|
3
|
+
value: import("../../types").ConfigType[T];
|
|
4
|
+
setValue: (key: T, value: import("../../types").ConfigType[T]) => void;
|
|
5
|
+
getValue: (key: T) => import("../../types").ConfigType[T];
|
|
6
|
+
}): void;
|
|
7
|
+
//# sourceMappingURL=side-effects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"side-effects.d.ts","sourceRoot":"","sources":["side-effects.js"],"names":[],"mappings":"AAWO;;;sEAJgE,IAAI;;SAwB1E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { deserializeCsv, serializeCsv } from '../utils/comma-separated.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @template {keyof import('../../types').ConfigType} T
|
|
5
|
+
* @param {{
|
|
6
|
+
* key: T;
|
|
7
|
+
* value: import('../../types').ConfigType[T];
|
|
8
|
+
* setValue: (key: T, value: import('../../types').ConfigType[T]) => void;
|
|
9
|
+
* getValue: (key: T) => import('../../types').ConfigType[T];
|
|
10
|
+
* }} options
|
|
11
|
+
*/
|
|
12
|
+
export const runSideEffects = ({ key, value, setValue, getValue }) => {
|
|
13
|
+
if (key === 'enableVideoRecording' && value !== null) {
|
|
14
|
+
let cameraModes = deserializeCsv(getValue('cameraModes'));
|
|
15
|
+
if (value && !cameraModes.includes('video')) {
|
|
16
|
+
cameraModes = cameraModes.concat('video');
|
|
17
|
+
} else if (!value) {
|
|
18
|
+
cameraModes = cameraModes.filter((mode) => mode !== 'video');
|
|
19
|
+
}
|
|
20
|
+
setValue('cameraModes', serializeCsv(cameraModes));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (key === 'defaultCameraMode' && value !== null) {
|
|
24
|
+
let cameraModes = deserializeCsv(getValue('cameraModes'));
|
|
25
|
+
cameraModes = cameraModes.sort((a, b) => {
|
|
26
|
+
if (a === value) return -1;
|
|
27
|
+
if (b === value) return 1;
|
|
28
|
+
return 0;
|
|
29
|
+
});
|
|
30
|
+
setValue('cameraModes', serializeCsv(cameraModes));
|
|
31
|
+
}
|
|
32
|
+
};
|
|
@@ -18,7 +18,6 @@ export class FileItem extends UploaderBlock {
|
|
|
18
18
|
uid: string;
|
|
19
19
|
itemName: string;
|
|
20
20
|
errorText: string;
|
|
21
|
-
hint: string;
|
|
22
21
|
thumbUrl: string;
|
|
23
22
|
progressValue: number;
|
|
24
23
|
progressVisible: boolean;
|
|
@@ -63,9 +62,6 @@ export class FileItem extends UploaderBlock {
|
|
|
63
62
|
* @param {(value: any) => void} handler
|
|
64
63
|
*/
|
|
65
64
|
private _subEntry;
|
|
66
|
-
_updateHint: (() => void) & {
|
|
67
|
-
readonly cancel: () => void;
|
|
68
|
-
};
|
|
69
65
|
/**
|
|
70
66
|
* @private
|
|
71
67
|
* @param {String} id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileItem.d.ts","sourceRoot":"","sources":["FileItem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FileItem.d.ts","sourceRoot":"","sources":["FileItem.js"],"names":[],"mappings":"AAkBA;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA4BC;IAGH,eASC;IAED;;;OAGG;IACH,0BAaC;IAED,eAAe;IACf,wBAgBC;IAED,eAAe;IACf,2BAsCC;IAED;;;;OAIG;IACH,kBAUC;IAED;;;OAGG;IACH,uBAkDC;IAsCD,wEAAwE;IACxE,oBADY,CAAC,oBAAoB,CAAC,CAAC,MAAM,oBAAoB,CAAC,QA0B7D;IAaC,eAAe;IACf,kBAEE;IAWJ;;;MAEC;IAED;;;OAGG;IACH,uBAEC;IAED,wBAsFC;CACF;;;;;8BApa6B,iCAAiC;AAO/D;;;;;GAKG"}
|
|
@@ -8,8 +8,6 @@ import { fileCssBg } from '../svg-backgrounds/svg-backgrounds.js';
|
|
|
8
8
|
import { debounce } from '../utils/debounce.js';
|
|
9
9
|
import { generateThumb } from '../utils/resizeImage.js';
|
|
10
10
|
import { parseShrink } from '../../utils/parseShrink.js';
|
|
11
|
-
import { UploadSource } from '../utils/UploadSource.js';
|
|
12
|
-
import { throttle } from '../utils/throttle.js';
|
|
13
11
|
|
|
14
12
|
const FileItemState = Object.freeze({
|
|
15
13
|
FINISHED: Symbol('FINISHED'),
|
|
@@ -47,7 +45,6 @@ export class FileItem extends UploaderBlock {
|
|
|
47
45
|
uid: '',
|
|
48
46
|
itemName: '',
|
|
49
47
|
errorText: '',
|
|
50
|
-
hint: '',
|
|
51
48
|
thumbUrl: '',
|
|
52
49
|
progressValue: 0,
|
|
53
50
|
progressVisible: false,
|
|
@@ -181,21 +178,6 @@ export class FileItem extends UploaderBlock {
|
|
|
181
178
|
this._entrySubs.add(sub);
|
|
182
179
|
}
|
|
183
180
|
|
|
184
|
-
_updateHint = throttle(() => {
|
|
185
|
-
const showHint =
|
|
186
|
-
this.$.state === FileItemState.UPLOADING &&
|
|
187
|
-
this._entry.getValue('externalUrl') &&
|
|
188
|
-
this._entry.getValue('source') !== UploadSource.URL &&
|
|
189
|
-
this._entry.getValue('errors').length === 0 &&
|
|
190
|
-
this.$.progressValue === 0;
|
|
191
|
-
|
|
192
|
-
const hint = showHint
|
|
193
|
-
? this.l10n('waiting-for', { source: this.l10n(`src-type-${this._entry.getValue('source')}`) })
|
|
194
|
-
: '';
|
|
195
|
-
|
|
196
|
-
this.$.hint = hint;
|
|
197
|
-
}, 100);
|
|
198
|
-
|
|
199
181
|
/**
|
|
200
182
|
* @private
|
|
201
183
|
* @param {String} id
|
|
@@ -213,7 +195,6 @@ export class FileItem extends UploaderBlock {
|
|
|
213
195
|
|
|
214
196
|
this._subEntry('uploadProgress', (uploadProgress) => {
|
|
215
197
|
this.$.progressValue = uploadProgress;
|
|
216
|
-
this._updateHint();
|
|
217
198
|
});
|
|
218
199
|
|
|
219
200
|
this._subEntry('fileName', (name) => {
|
|
@@ -299,6 +280,8 @@ export class FileItem extends UploaderBlock {
|
|
|
299
280
|
|
|
300
281
|
if (state === FileItemState.UPLOADING) {
|
|
301
282
|
this.$.isFocused = false;
|
|
283
|
+
} else {
|
|
284
|
+
this.$.progressValue = 0;
|
|
302
285
|
}
|
|
303
286
|
|
|
304
287
|
this.set$({
|
|
@@ -313,8 +296,6 @@ export class FileItem extends UploaderBlock {
|
|
|
313
296
|
status: this.l10n(state?.description?.toLocaleLowerCase() ?? '').toLocaleLowerCase(),
|
|
314
297
|
}),
|
|
315
298
|
});
|
|
316
|
-
|
|
317
|
-
this._updateHint();
|
|
318
299
|
}
|
|
319
300
|
|
|
320
301
|
destroyCallback() {
|
|
@@ -453,7 +434,6 @@ FileItem.template = /* HTML */ `
|
|
|
453
434
|
<div aria-live="polite" class="uc-file-name-wrapper" set="@aria-label:ariaLabelStatusFile;">
|
|
454
435
|
<span class="uc-file-name" set="@title: itemName">{{itemName}}</span>
|
|
455
436
|
<span class="uc-file-error" set="@hidden: !errorText">{{errorText}}</span>
|
|
456
|
-
<span class="uc-file-hint" set="@hidden: !hint">{{hint}}</span>
|
|
457
437
|
</div>
|
|
458
438
|
<div class="uc-file-actions">
|
|
459
439
|
<button
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["ProgressBar.js"],"names":[],"mappings":"AAEA;IACE,qBAAqB;IACrB,eAAW;IAEX,WAIE;
|
|
1
|
+
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["ProgressBar.js"],"names":[],"mappings":"AAEA;IACE,qBAAqB;IACrB,eAAW;IAEX,WAIE;CAyBH;;;;sBAnCqB,yBAAyB"}
|
|
@@ -19,44 +19,20 @@ export class ProgressBar extends Block {
|
|
|
19
19
|
const prevValue = this._value;
|
|
20
20
|
this._value = value;
|
|
21
21
|
|
|
22
|
-
if (value === 100) {
|
|
23
|
-
this.ref.realProgressLine.addEventListener(
|
|
24
|
-
'transitionend',
|
|
25
|
-
() => {
|
|
26
|
-
this.ref.realProgressLine.classList.toggle('uc-progress--hidden', true);
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
once: true,
|
|
30
|
-
},
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
this.ref.fakeProgressLine.classList.toggle('uc-fake-progress--hidden', value !== 0);
|
|
35
|
-
|
|
36
22
|
if (value === 0 && prevValue > 0) {
|
|
37
|
-
this.ref.
|
|
38
|
-
'
|
|
39
|
-
|
|
40
|
-
this.style.setProperty('--l-progress-value', this._value.toString());
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
once: true,
|
|
44
|
-
},
|
|
45
|
-
);
|
|
23
|
+
this.ref.line.addEventListener('transitionend', () => {
|
|
24
|
+
this.style.setProperty('--l-width', this._value.toString());
|
|
25
|
+
});
|
|
46
26
|
return;
|
|
47
27
|
}
|
|
48
28
|
|
|
49
|
-
this.style.setProperty('--l-
|
|
29
|
+
this.style.setProperty('--l-width', this._value.toString());
|
|
50
30
|
});
|
|
51
31
|
|
|
52
32
|
this.defineAccessor('visible', (visible) => {
|
|
53
|
-
this.ref.
|
|
54
|
-
this.ref.fakeProgressLine.classList.toggle('uc-fake-progress--hidden', !visible);
|
|
33
|
+
this.ref.line.classList.toggle('uc-progress--hidden', !visible);
|
|
55
34
|
});
|
|
56
35
|
}
|
|
57
36
|
}
|
|
58
37
|
|
|
59
|
-
ProgressBar.template = /* HTML */ `
|
|
60
|
-
<div ref="fakeProgressLine" class="uc-fake-progress"></div>
|
|
61
|
-
<div ref="realProgressLine" class="uc-progress"></div>
|
|
62
|
-
`;
|
|
38
|
+
ProgressBar.template = /* HTML */ ` <div ref="line" class="uc-progress"></div> `;
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
uc-progress-bar {
|
|
2
|
-
--l-progress-value: 0;
|
|
3
|
-
|
|
4
2
|
position: absolute;
|
|
5
3
|
top: 0;
|
|
6
4
|
bottom: 0;
|
|
@@ -12,8 +10,7 @@ uc-progress-bar {
|
|
|
12
10
|
}
|
|
13
11
|
|
|
14
12
|
uc-progress-bar .uc-progress {
|
|
15
|
-
|
|
16
|
-
width: calc(var(--l-progress-value) * 1%);
|
|
13
|
+
width: calc(var(--l-width) * 1%);
|
|
17
14
|
height: 100%;
|
|
18
15
|
background-color: var(--uc-primary);
|
|
19
16
|
transform: translateX(0);
|
|
@@ -26,34 +23,3 @@ uc-progress-bar .uc-progress {
|
|
|
26
23
|
uc-progress-bar .uc-progress--hidden {
|
|
27
24
|
opacity: 0;
|
|
28
25
|
}
|
|
29
|
-
|
|
30
|
-
uc-progress-bar .uc-fake-progress {
|
|
31
|
-
--l-fake-progress-width: 30;
|
|
32
|
-
|
|
33
|
-
position: absolute;
|
|
34
|
-
width: calc(var(--l-fake-progress-width) * 1%);
|
|
35
|
-
height: 100%;
|
|
36
|
-
background-color: var(--uc-primary);
|
|
37
|
-
animation: fake-progress-animation 1s ease-in-out infinite;
|
|
38
|
-
opacity: 1;
|
|
39
|
-
transition:
|
|
40
|
-
opacity 0.3s,
|
|
41
|
-
display 1s;
|
|
42
|
-
/* stylelint-disable-next-line property-no-unknown */
|
|
43
|
-
transition-behavior: allow-discrete;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
uc-progress-bar .uc-fake-progress--hidden {
|
|
47
|
-
opacity: 0;
|
|
48
|
-
display: none;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
@keyframes fake-progress-animation {
|
|
52
|
-
from {
|
|
53
|
-
transform: translateX(-100%);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
to {
|
|
57
|
-
transform: translateX(calc(100 / var(--l-fake-progress-width) * 100 * 1%));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comma-separated.d.ts","sourceRoot":"","sources":["comma-separated.js"],"names":[],"mappings":"AAGO,sCADK,MAAM,
|
|
1
|
+
{"version":3,"file":"comma-separated.d.ts","sourceRoot":"","sources":["comma-separated.js"],"names":[],"mappings":"AAGO,sCADK,MAAM,YAUjB;AAGM,oCADK,OAAO,EAAE,UAOpB"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
|
|
3
3
|
/** @param {string} value */
|
|
4
|
-
export const
|
|
4
|
+
export const deserializeCsv = (value) => {
|
|
5
5
|
if (!value) {
|
|
6
6
|
return [];
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
return value
|
|
9
|
+
return value
|
|
10
|
+
.split(',')
|
|
11
|
+
.map((item) => item.trim())
|
|
12
|
+
.filter(Boolean);
|
|
10
13
|
};
|
|
11
14
|
|
|
12
15
|
/** @param {unknown[]} value */
|
package/index.ssr.d.ts
CHANGED
|
@@ -54,20 +54,6 @@ export const BtnUi: {
|
|
|
54
54
|
};
|
|
55
55
|
export const CameraSource: {
|
|
56
56
|
new (): {};
|
|
57
|
-
types: {
|
|
58
|
-
PHOTO: string;
|
|
59
|
-
VIDEO: string;
|
|
60
|
-
};
|
|
61
|
-
events: {
|
|
62
|
-
IDLE: string;
|
|
63
|
-
SHOT: string;
|
|
64
|
-
PLAY: string;
|
|
65
|
-
PAUSE: string;
|
|
66
|
-
RESUME: string;
|
|
67
|
-
STOP: string;
|
|
68
|
-
RETAKE: string;
|
|
69
|
-
ACCEPT: string;
|
|
70
|
-
};
|
|
71
57
|
template: string;
|
|
72
58
|
extSrcList: {
|
|
73
59
|
FACEBOOK: string;
|
package/index.ssr.d.ts.map
CHANGED
|
@@ -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;;;;;;;;EAYE;AACF
|
|
1
|
+
{"version":3,"file":"index.ssr.d.ts","sourceRoot":"","sources":["index.ssr.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;EAcE;AACF;;;;;;;;;;;;;;;EAcE;AACF;;;;;EAIE;AACF;;;;;;EAKE;AACF;;;;;;;;EAYE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0IE;AACF;;;;;;;;EAuCE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CE;AACF;;;;;;;;EAuCE;AACF;;;;;;;EAsGE;AACF;;;;;;;EAaE;AACF;;;;;;;EAME;AACF;;;;;;;;;;;;;;;;EAeE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgEE;AACF;;;;;;;EAWE;AACF;;;;;;;EAWE;AACF;;;;;;;EASE;AACF;;;;;;EAKE;AACF;;;;;;;EAWE;AACF;;;;;;;EAME;AACF;;;;;;;EAWE;AACF;;;;;;;EA2IE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwEE;;;;;;;;;;;;;AAaF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiFE;AACF;;;;;;EAKE;AACF;;;;;;EAKE;AACF;;;;;;;EAME;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CE;AACF;;;;;;;;EAWE;AACF;;;;;;EAwBE;AACF;;;;;;;EAUE;AACF;;;;;;;;EAWE;AACF,oCAAqC;AACrC,uCAAwC;AACxC;;;;;;;EAME;AACF;;;;;;;EAME;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CE;AACF;;;;;;;EAME;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDE;AACF;;;;;;;EAeE;AACF;;;;;;EAKE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoDE;AACF;;;;;;EAKE;AACF;;;;;;EAKE;AACF;;;;;;;;;;;;;;;;EAeE;AACF;;;;;;;;;;;;EAWE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4FE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyEE;AACK,yCAAiC;AACjC,qCAA6B;AAC7B,6CAAqC;AACrC,oCAA4B"}
|
package/index.ssr.js
CHANGED
|
@@ -53,17 +53,6 @@ export const BtnUi = class {
|
|
|
53
53
|
static bindAttributes = () => {};
|
|
54
54
|
};
|
|
55
55
|
export const CameraSource = class {
|
|
56
|
-
static types = { PHOTO: "photo", VIDEO: "video" };
|
|
57
|
-
static events = {
|
|
58
|
-
IDLE: "idle",
|
|
59
|
-
SHOT: "shot",
|
|
60
|
-
PLAY: "play",
|
|
61
|
-
PAUSE: "pause",
|
|
62
|
-
RESUME: "resume",
|
|
63
|
-
STOP: "stop",
|
|
64
|
-
RETAKE: "retake",
|
|
65
|
-
ACCEPT: "accept",
|
|
66
|
-
};
|
|
67
56
|
static template = `
|
|
68
57
|
<uc-activity-header>
|
|
69
58
|
<button type="button" class="uc-mini-btn" set="onclick: *historyBack" l10n="@title:back">
|
|
@@ -118,7 +107,7 @@ export const CameraSource = class {
|
|
|
118
107
|
<button
|
|
119
108
|
data-id="video"
|
|
120
109
|
type="button"
|
|
121
|
-
class="uc-switch
|
|
110
|
+
class="uc-switch uc-mini-btn"
|
|
122
111
|
set="onclick: onClickTab; @hidden: tabVideoHidden"
|
|
123
112
|
>
|
|
124
113
|
<uc-icon name="video-camera"></uc-icon>
|
|
@@ -145,8 +134,8 @@ export const CameraSource = class {
|
|
|
145
134
|
</button>
|
|
146
135
|
|
|
147
136
|
<div class="uc-select">
|
|
148
|
-
<button class="uc-mini-btn uc-btn-microphone" set="onclick: onToggleAudio; @hidden:
|
|
149
|
-
<uc-icon set="@name:
|
|
137
|
+
<button class="uc-mini-btn uc-btn-microphone" set="onclick: onToggleAudio; @hidden: audioToggleMicrophoneHidden;">
|
|
138
|
+
<uc-icon set="@name:toggleMicrophoneIcon"></uc-icon>
|
|
150
139
|
</button>
|
|
151
140
|
|
|
152
141
|
<uc-select
|
|
@@ -375,6 +364,7 @@ export const Config = class {
|
|
|
375
364
|
"user-agent-integration",
|
|
376
365
|
"locale-name",
|
|
377
366
|
"secure-uploads-expire-threshold",
|
|
367
|
+
"camera-modes",
|
|
378
368
|
"default-camera-mode",
|
|
379
369
|
"enable-audio-recording",
|
|
380
370
|
"enable-video-recording",
|
|
@@ -419,6 +409,7 @@ export const Config = class {
|
|
|
419
409
|
"useragentintegration",
|
|
420
410
|
"localename",
|
|
421
411
|
"secureuploadsexpirethreshold",
|
|
412
|
+
"cameramodes",
|
|
422
413
|
"defaultcameramode",
|
|
423
414
|
"enableaudiorecording",
|
|
424
415
|
"enablevideorecording",
|
|
@@ -838,7 +829,6 @@ export const FileItem = class {
|
|
|
838
829
|
<div aria-live="polite" class="uc-file-name-wrapper" set="@aria-label:ariaLabelStatusFile;">
|
|
839
830
|
<span class="uc-file-name" set="@title: itemName">{{itemName}}</span>
|
|
840
831
|
<span class="uc-file-error" set="@hidden: !errorText">{{errorText}}</span>
|
|
841
|
-
<span class="uc-file-hint" set="@hidden: !hint">{{hint}}</span>
|
|
842
832
|
</div>
|
|
843
833
|
<div class="uc-file-actions">
|
|
844
834
|
<button
|
|
@@ -1045,10 +1035,7 @@ export const PresenceToggle = class {
|
|
|
1045
1035
|
static bindAttributes = () => {};
|
|
1046
1036
|
};
|
|
1047
1037
|
export const ProgressBar = class {
|
|
1048
|
-
static template = `
|
|
1049
|
-
<div ref="fakeProgressLine" class="uc-fake-progress"></div>
|
|
1050
|
-
<div ref="realProgressLine" class="uc-progress"></div>
|
|
1051
|
-
`;
|
|
1038
|
+
static template = ` <div ref="line" class="uc-progress"></div> `;
|
|
1052
1039
|
static reg = () => {};
|
|
1053
1040
|
static styleAttrs = [];
|
|
1054
1041
|
static is = `sym-1`;
|