@uploadcare/file-uploader 0.50.1-alpha.2 → 0.50.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/README.md +30 -30
- package/abstract/Block.d.ts +4 -2
- package/abstract/Block.d.ts.map +1 -1
- package/abstract/Block.js +16 -22
- package/abstract/SolutionBlock.js +2 -2
- package/abstract/UploaderBlock.js +4 -4
- package/abstract/connectBlocksFrom.d.ts +1 -1
- package/abstract/connectBlocksFrom.js +4 -4
- package/abstract/registerBlocks.d.ts.map +1 -1
- package/abstract/registerBlocks.js +2 -13
- package/blocks/ActivityHeader/activity-header.css +2 -2
- package/blocks/CameraSource/CameraSource.js +8 -8
- package/blocks/CameraSource/camera-source.css +14 -14
- package/blocks/CloudImageEditor/src/CloudImageEditorBlock.js +2 -2
- package/blocks/CloudImageEditor/src/EditorButtonControl.js +1 -1
- package/blocks/CloudImageEditor/src/EditorFilterControl.d.ts +2 -2
- package/blocks/CloudImageEditor/src/EditorFilterControl.d.ts.map +1 -1
- package/blocks/CloudImageEditor/src/EditorFilterControl.js +33 -23
- package/blocks/CloudImageEditor/src/EditorImageCropper.js +4 -4
- package/blocks/CloudImageEditor/src/EditorImageFader.d.ts +5 -5
- package/blocks/CloudImageEditor/src/EditorImageFader.d.ts.map +1 -1
- package/blocks/CloudImageEditor/src/EditorImageFader.js +17 -15
- package/blocks/CloudImageEditor/src/EditorSlider.js +2 -2
- package/blocks/CloudImageEditor/src/EditorToolbar.js +24 -24
- package/blocks/CloudImageEditor/src/css/common.css +142 -142
- package/blocks/CloudImageEditor/src/css/icons.css +2 -2
- package/blocks/CloudImageEditor/src/elements/button/{BtnUi.d.ts → LrBtnUi.d.ts} +3 -3
- package/blocks/CloudImageEditor/src/elements/button/LrBtnUi.d.ts.map +1 -0
- package/blocks/CloudImageEditor/src/elements/button/{BtnUi.js → LrBtnUi.js} +4 -4
- package/blocks/CloudImageEditor/src/index.d.ts +1 -1
- package/blocks/CloudImageEditor/src/index.js +1 -1
- package/blocks/CloudImageEditor/src/template.js +8 -8
- package/blocks/CloudImageEditorActivity/index.css +2 -2
- package/blocks/Config/Config.d.ts +1 -1
- package/blocks/Config/Config.js +7 -7
- package/blocks/Config/config.css +1 -1
- package/blocks/Copyright/copyright.css +4 -4
- package/blocks/DropArea/DropArea.d.ts +1 -1
- package/blocks/DropArea/DropArea.js +4 -4
- package/blocks/DropArea/drop-area.css +34 -34
- package/blocks/ExternalSource/ExternalSource.js +5 -5
- package/blocks/ExternalSource/external-source.css +9 -9
- package/blocks/FileItem/FileItem.js +6 -6
- package/blocks/FileItem/file-item.css +22 -22
- package/blocks/Icon/icon.css +2 -2
- package/blocks/Img/ImgConfig.js +1 -1
- package/blocks/Img/configurations.d.ts +1 -1
- package/blocks/Img/configurations.js +1 -1
- package/blocks/Img/test.css +5 -5
- package/blocks/Modal/Modal.js +1 -1
- package/blocks/Modal/modal.css +15 -15
- package/blocks/ProgressBar/progress-bar.css +3 -3
- package/blocks/ProgressBarCommon/ProgressBarCommon.js +1 -1
- package/blocks/ProgressBarCommon/progress-bar-common.css +2 -2
- package/blocks/Range/range.css +8 -8
- package/blocks/Select/select.css +2 -2
- package/blocks/SimpleBtn/SimpleBtn.js +4 -4
- package/blocks/SimpleBtn/simple-btn.css +11 -11
- package/blocks/SourceBtn/SourceBtn.js +1 -1
- package/blocks/SourceBtn/source-btn.css +5 -5
- package/blocks/SourceList/SourceList.js +1 -1
- package/blocks/StartFrom/start-from.css +5 -5
- package/blocks/UploadList/UploadList.js +6 -6
- package/blocks/UploadList/upload-list.css +10 -10
- package/blocks/UrlSource/UrlSource.js +5 -5
- package/blocks/UrlSource/url-source.css +4 -4
- package/blocks/themes/{uc-basic → lr-basic}/common.css +19 -19
- package/blocks/themes/{uc-basic → lr-basic}/config.css +1 -1
- package/blocks/themes/{uc-basic → lr-basic}/theme.css +7 -7
- package/env.d.ts +1 -1
- package/env.js +1 -1
- package/index.ssr.d.ts +10 -10
- package/index.ssr.d.ts.map +1 -1
- package/index.ssr.js +108 -108
- package/package.json +1 -1
- package/solutions/adaptive-image/index.js +1 -1
- package/solutions/cloud-image-editor/CloudImageEditor.js +1 -1
- package/solutions/cloud-image-editor/index.css +1 -1
- package/solutions/file-uploader/inline/FileUploaderInline.js +12 -12
- package/solutions/file-uploader/inline/index.css +12 -12
- package/solutions/file-uploader/minimal/FileUploaderMinimal.js +6 -6
- package/solutions/file-uploader/minimal/index.css +25 -25
- package/solutions/file-uploader/regular/FileUploaderRegular.js +15 -15
- package/solutions/file-uploader/regular/index.css +1 -1
- package/types/exported.d.ts +1 -1
- package/types/global.d.ts +2 -2
- package/types/jsx.d.ts +37 -37
- package/web/blocks.iife.min.js +4 -4
- package/web/blocks.min.js +2 -2
- package/web/lr-basic.min.css +1 -1
- package/web/lr-cloud-image-editor.min.css +1 -1
- package/web/lr-cloud-image-editor.min.js +4 -4
- package/web/lr-file-uploader-inline.min.css +1 -1
- package/web/lr-file-uploader-inline.min.js +2 -2
- package/web/lr-file-uploader-minimal.min.css +1 -1
- package/web/lr-file-uploader-minimal.min.js +3 -3
- package/web/lr-file-uploader-regular.min.css +1 -1
- package/web/lr-file-uploader-regular.min.js +2 -2
- package/web/lr-img.min.js +2 -2
- package/blocks/CloudImageEditor/src/elements/button/BtnUi.d.ts.map +0 -1
- package/web/uc-basic.min.css +0 -1
- package/web/uc-cloud-image-editor.min.css +0 -1
- package/web/uc-cloud-image-editor.min.js +0 -29
- package/web/uc-file-uploader-inline.min.css +0 -1
- package/web/uc-file-uploader-inline.min.js +0 -29
- package/web/uc-file-uploader-minimal.min.css +0 -1
- package/web/uc-file-uploader-minimal.min.js +0 -28
- package/web/uc-file-uploader-regular.min.css +0 -1
- package/web/uc-file-uploader-regular.min.js +0 -29
- package/web/uc-img.min.js +0 -28
- /package/blocks/themes/{uc-basic → lr-basic}/index.css +0 -0
- /package/blocks/themes/{uc-basic → lr-basic}/svg-sprite.d.ts +0 -0
- /package/blocks/themes/{uc-basic → lr-basic}/svg-sprite.d.ts.map +0 -0
- /package/blocks/themes/{uc-basic → lr-basic}/svg-sprite.js +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import { createCdnUrl, createCdnUrlModifiers } from '../../../utils/cdn-utils.js';
|
|
2
3
|
import { EditorButtonControl } from './EditorButtonControl.js';
|
|
3
4
|
import { FAKE_ORIGINAL_FILTER } from './EditorSlider.js';
|
|
@@ -5,15 +6,19 @@ import { COMMON_OPERATIONS, transformationsToOperations } from './lib/transforma
|
|
|
5
6
|
import { preloadImage } from './lib/preloadImage.js';
|
|
6
7
|
|
|
7
8
|
export class EditorFilterControl extends EditorButtonControl {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
constructor() {
|
|
10
|
+
super();
|
|
11
|
+
|
|
12
|
+
this.init$ = {
|
|
13
|
+
...this.init$,
|
|
14
|
+
active: false,
|
|
15
|
+
title: '',
|
|
16
|
+
icon: '',
|
|
17
|
+
isOriginal: false,
|
|
18
|
+
iconSize: '20',
|
|
19
|
+
'on.click': null,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
17
22
|
|
|
18
23
|
_previewSrc() {
|
|
19
24
|
let previewSize = parseInt(window.getComputedStyle(this).getPropertyValue('--l-base-min-width'), 10);
|
|
@@ -24,6 +29,7 @@ export class EditorFilterControl extends EditorButtonControl {
|
|
|
24
29
|
|
|
25
30
|
/** @type {import('./types.js').Transformations} */
|
|
26
31
|
let transformations = { ...this.$['*editorTransformations'] };
|
|
32
|
+
// @ts-expect-error FIXME: fix this
|
|
27
33
|
transformations[this._operation] =
|
|
28
34
|
this._filter !== FAKE_ORIGINAL_FILTER
|
|
29
35
|
? {
|
|
@@ -47,10 +53,10 @@ export class EditorFilterControl extends EditorButtonControl {
|
|
|
47
53
|
* @param {IntersectionObserverEntry[]} entries
|
|
48
54
|
* @param {IntersectionObserver} observer
|
|
49
55
|
*/
|
|
50
|
-
_observerCallback(entries, observer) {
|
|
56
|
+
async _observerCallback(entries, observer) {
|
|
51
57
|
let intersectionEntry = entries[0];
|
|
52
58
|
if (intersectionEntry.isIntersecting) {
|
|
53
|
-
let src = this.proxyUrl(this._previewSrc());
|
|
59
|
+
let src = await this.proxyUrl(this._previewSrc());
|
|
54
60
|
let previewEl = this.ref['preview-el'];
|
|
55
61
|
let { promise, cancel } = preloadImage(src);
|
|
56
62
|
this._cancelPreload = cancel;
|
|
@@ -66,14 +72,14 @@ export class EditorFilterControl extends EditorButtonControl {
|
|
|
66
72
|
observer.unobserve(this);
|
|
67
73
|
});
|
|
68
74
|
} else {
|
|
69
|
-
this._cancelPreload
|
|
75
|
+
this._cancelPreload?.();
|
|
70
76
|
}
|
|
71
77
|
}
|
|
72
78
|
|
|
73
79
|
initCallback() {
|
|
74
80
|
super.initCallback();
|
|
75
81
|
|
|
76
|
-
this.$['on.click'] = (
|
|
82
|
+
this.$['on.click'] = () => {
|
|
77
83
|
if (!this.$.active) {
|
|
78
84
|
this.$['*sliderEl'].setOperation(this._operation, this._filter);
|
|
79
85
|
this.$['*sliderEl'].apply();
|
|
@@ -85,12 +91,16 @@ export class EditorFilterControl extends EditorButtonControl {
|
|
|
85
91
|
this.$['*currentFilter'] = this._filter;
|
|
86
92
|
};
|
|
87
93
|
|
|
88
|
-
this.defineAccessor(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
+
this.defineAccessor(
|
|
95
|
+
'filter',
|
|
96
|
+
/** @param {string} filter */
|
|
97
|
+
(filter) => {
|
|
98
|
+
this._operation = 'filter';
|
|
99
|
+
this._filter = filter;
|
|
100
|
+
this.$.isOriginal = filter === FAKE_ORIGINAL_FILTER;
|
|
101
|
+
this.$.icon = this.$.isOriginal ? 'original' : 'slider';
|
|
102
|
+
},
|
|
103
|
+
);
|
|
94
104
|
|
|
95
105
|
this._observer = new window.IntersectionObserver(this._observerCallback.bind(this), {
|
|
96
106
|
threshold: [0, 1],
|
|
@@ -128,9 +138,9 @@ export class EditorFilterControl extends EditorButtonControl {
|
|
|
128
138
|
}
|
|
129
139
|
});
|
|
130
140
|
|
|
131
|
-
this.sub('*networkProblems', (networkProblems) => {
|
|
141
|
+
this.sub('*networkProblems', async (networkProblems) => {
|
|
132
142
|
if (!networkProblems) {
|
|
133
|
-
let src = this.proxyUrl(this._previewSrc());
|
|
143
|
+
let src = await this.proxyUrl(this._previewSrc());
|
|
134
144
|
let previewEl = this.ref['preview-el'];
|
|
135
145
|
if (previewEl.style.backgroundImage) {
|
|
136
146
|
previewEl.style.backgroundImage = 'none';
|
|
@@ -143,13 +153,13 @@ export class EditorFilterControl extends EditorButtonControl {
|
|
|
143
153
|
destroyCallback() {
|
|
144
154
|
super.destroyCallback();
|
|
145
155
|
this._observer?.disconnect();
|
|
146
|
-
this._cancelPreload
|
|
156
|
+
this._cancelPreload?.();
|
|
147
157
|
}
|
|
148
158
|
}
|
|
149
159
|
|
|
150
160
|
EditorFilterControl.template = /* HTML */ `
|
|
151
161
|
<button type="button" role="option">
|
|
152
162
|
<div class="uc-preview" ref="preview-el"></div>
|
|
153
|
-
<
|
|
163
|
+
<lr-icon ref="icon-el" set="@name: icon; @size: iconSize;"></lr-icon>
|
|
154
164
|
</button>
|
|
155
165
|
`;
|
|
@@ -461,7 +461,7 @@ export class EditorImageCropper extends Block {
|
|
|
461
461
|
* @param {import('./types.js').Transformations} transformations
|
|
462
462
|
* @returns {Promise<HTMLImageElement>}
|
|
463
463
|
*/
|
|
464
|
-
_waitForImage(originalUrl, transformations) {
|
|
464
|
+
async _waitForImage(originalUrl, transformations) {
|
|
465
465
|
let width = this.offsetWidth;
|
|
466
466
|
transformations = {
|
|
467
467
|
...transformations,
|
|
@@ -470,13 +470,13 @@ export class EditorImageCropper extends Block {
|
|
|
470
470
|
flip: undefined,
|
|
471
471
|
mirror: undefined,
|
|
472
472
|
};
|
|
473
|
-
let src = this.proxyUrl(viewerImageSrc(originalUrl, width, transformations));
|
|
473
|
+
let src = await this.proxyUrl(viewerImageSrc(originalUrl, width, transformations));
|
|
474
474
|
let { promise, cancel, image } = preloadImage(src);
|
|
475
475
|
|
|
476
476
|
let stop = this._handleImageLoading(src);
|
|
477
477
|
image.addEventListener('load', stop, { once: true });
|
|
478
478
|
image.addEventListener('error', stop, { once: true });
|
|
479
|
-
this._cancelPreload
|
|
479
|
+
this._cancelPreload?.();
|
|
480
480
|
this._cancelPreload = cancel;
|
|
481
481
|
|
|
482
482
|
return promise
|
|
@@ -547,5 +547,5 @@ export class EditorImageCropper extends Block {
|
|
|
547
547
|
|
|
548
548
|
EditorImageCropper.template = /* HTML */ `
|
|
549
549
|
<canvas class="uc-canvas" ref="canvas-el"></canvas>
|
|
550
|
-
<
|
|
550
|
+
<lr-crop-frame ref="frame-el"></lr-crop-frame>
|
|
551
551
|
`;
|
|
@@ -35,14 +35,14 @@ export class EditorImageFader extends Block {
|
|
|
35
35
|
* @param {String} [options.filter]
|
|
36
36
|
* @param {String} [options.operation]
|
|
37
37
|
* @param {Number} [options.value]
|
|
38
|
-
* @returns {String}
|
|
38
|
+
* @returns {Promise<String>}
|
|
39
39
|
*/
|
|
40
40
|
private _imageSrc;
|
|
41
41
|
/**
|
|
42
42
|
* @private
|
|
43
43
|
* @param {String} operation
|
|
44
44
|
* @param {Number} value
|
|
45
|
-
* @returns {Keypoint}
|
|
45
|
+
* @returns {Promise<Keypoint>}
|
|
46
46
|
*/
|
|
47
47
|
private _constructKeypoint;
|
|
48
48
|
/**
|
|
@@ -79,7 +79,7 @@ export class EditorImageFader extends Block {
|
|
|
79
79
|
_cancelLastImages: any;
|
|
80
80
|
_container: HTMLDivElement | undefined;
|
|
81
81
|
/** @param {import('./types.js').Transformations} transformations */
|
|
82
|
-
setTransformations(transformations: import('./types.js').Transformations): void
|
|
82
|
+
setTransformations(transformations: import('./types.js').Transformations): Promise<void>;
|
|
83
83
|
_transformations: import("./types.js").Transformations | undefined;
|
|
84
84
|
/**
|
|
85
85
|
* @param {object} options
|
|
@@ -93,7 +93,7 @@ export class EditorImageFader extends Block {
|
|
|
93
93
|
operation: string;
|
|
94
94
|
value: number;
|
|
95
95
|
filter?: string | undefined;
|
|
96
|
-
}): void
|
|
96
|
+
}): Promise<void>;
|
|
97
97
|
_cancelBatchPreload: (() => void) | undefined;
|
|
98
98
|
/** @private */
|
|
99
99
|
private _setOriginalSrc;
|
|
@@ -111,7 +111,7 @@ export class EditorImageFader extends Block {
|
|
|
111
111
|
value?: number | undefined;
|
|
112
112
|
filter?: string | undefined;
|
|
113
113
|
fromViewer?: boolean | undefined;
|
|
114
|
-
}): void
|
|
114
|
+
}): Promise<void>;
|
|
115
115
|
_url: string | undefined;
|
|
116
116
|
_filter: string | undefined;
|
|
117
117
|
_fromViewer: boolean | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorImageFader.d.ts","sourceRoot":"","sources":["EditorImageFader.js"],"names":[],"mappings":"AA8DA;;;;;;;GAOG;AAEH;IAII;;;OAGG;IACH,kBAAsB;IAEtB;;;OAGG;IACH,gBAAmB;IAEnB,eAAe;IACf,8BAAwE;IAK1E;;;;OAIG;IACH,4BAmBC;IAED,eAAe;IACf,eAWC;IATC,yBAQE;IAGJ;;;;;;;;OAQG;IACH,kBAUC;IAED;;;;;OAKG;IACH,2BASC;IAED;;;;;;;OAOG;IACH,gBAEC;IAED;;;;;OAKG;IACH,qBA0CC;IAED,qCAAqC;IACrC,WADY,eAAe,QAK1B;IAED;;;;OAIG;IACH,gBAgBC;IAfC,+BAA2B;IAC3B,2BAAmB;IAgBrB,eAAe;IACf,4BAKC;IAED,eAAe;IACf,mBAmCC;IAjCC,mBAAqE;IAcrE,uBAGC;IAMC,uCAA2B;IAY/B,oEAAoE;IACpE,oCADY,OAAO,YAAY,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"EditorImageFader.d.ts","sourceRoot":"","sources":["EditorImageFader.js"],"names":[],"mappings":"AA8DA;;;;;;;GAOG;AAEH;IAII;;;OAGG;IACH,kBAAsB;IAEtB;;;OAGG;IACH,gBAAmB;IAEnB,eAAe;IACf,8BAAwE;IAK1E;;;;OAIG;IACH,4BAmBC;IAED,eAAe;IACf,eAWC;IATC,yBAQE;IAGJ;;;;;;;;OAQG;IACH,kBAUC;IAED;;;;;OAKG;IACH,2BASC;IAED;;;;;;;OAOG;IACH,gBAEC;IAED;;;;;OAKG;IACH,qBA0CC;IAED,qCAAqC;IACrC,WADY,eAAe,QAK1B;IAED;;;;OAIG;IACH,gBAgBC;IAfC,+BAA2B;IAC3B,2BAAmB;IAgBrB,eAAe;IACf,4BAKC;IAED,eAAe;IACf,mBAmCC;IAjCC,mBAAqE;IAcrE,uBAGC;IAMC,uCAA2B;IAY/B,oEAAoE;IACpE,oCADY,OAAO,YAAY,EAAE,eAAe,iBAmB/C;IAjBC,mEAAuC;IAmBzC;;;;;;OAMG;IACH;QAL2B,GAAG;QACH,SAAS;QACT,KAAK;QACJ,MAAM;sBAUjC;IADC,8CAAiC;IAGnC,eAAe;IACf,wBA4CC;IAED;;;;;;;OAOG;IACH;QAN2B,GAAG;QACF,SAAS;QACT,KAAK;QACL,MAAM;QACL,UAAU;sBAwBtC;IAnBC,yBAAe;IAGf,4BAAqB;IACrB,iCAA6B;IAS7B,mCAEC;IAMH,0CAA0C;IAC1C,sBADY;QAAE,IAAI,CAAC,UAAS;KAAE,QA4B7B;CACF;;;;;WApYa,gBAAgB;;;sBAlER,4BAA4B"}
|
|
@@ -138,9 +138,9 @@ export class EditorImageFader extends Block {
|
|
|
138
138
|
* @param {String} [options.filter]
|
|
139
139
|
* @param {String} [options.operation]
|
|
140
140
|
* @param {Number} [options.value]
|
|
141
|
-
* @returns {String}
|
|
141
|
+
* @returns {Promise<String>}
|
|
142
142
|
*/
|
|
143
|
-
_imageSrc({ url = this._url, filter = this._filter, operation, value } = {}) {
|
|
143
|
+
async _imageSrc({ url = this._url, filter = this._filter, operation, value } = {}) {
|
|
144
144
|
let transformations = { ...this._transformations };
|
|
145
145
|
|
|
146
146
|
if (operation) {
|
|
@@ -149,17 +149,17 @@ export class EditorImageFader extends Block {
|
|
|
149
149
|
|
|
150
150
|
// do not use getBoundingClientRect because scale transform affects it
|
|
151
151
|
let width = this.offsetWidth;
|
|
152
|
-
return this.proxyUrl(viewerImageSrc(url, width, transformations));
|
|
152
|
+
return await this.proxyUrl(viewerImageSrc(url, width, transformations));
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
/**
|
|
156
156
|
* @private
|
|
157
157
|
* @param {String} operation
|
|
158
158
|
* @param {Number} value
|
|
159
|
-
* @returns {Keypoint}
|
|
159
|
+
* @returns {Promise<Keypoint>}
|
|
160
160
|
*/
|
|
161
|
-
_constructKeypoint(operation, value) {
|
|
162
|
-
let src = this._imageSrc({ operation, value });
|
|
161
|
+
async _constructKeypoint(operation, value) {
|
|
162
|
+
let src = await this._imageSrc({ operation, value });
|
|
163
163
|
return {
|
|
164
164
|
src,
|
|
165
165
|
image: null,
|
|
@@ -187,14 +187,14 @@ export class EditorImageFader extends Block {
|
|
|
187
187
|
* @param {String | null} filter
|
|
188
188
|
* @param {Number} value
|
|
189
189
|
*/
|
|
190
|
-
_addKeypoint(operation, filter, value) {
|
|
190
|
+
async _addKeypoint(operation, filter, value) {
|
|
191
191
|
let shouldSkip = () =>
|
|
192
192
|
!this._isSame(operation, filter) || this._value !== value || !!this._keypoints.find((kp) => kp.value === value);
|
|
193
193
|
|
|
194
194
|
if (shouldSkip()) {
|
|
195
195
|
return;
|
|
196
196
|
}
|
|
197
|
-
let keypoint = this._constructKeypoint(operation, value);
|
|
197
|
+
let keypoint = await this._constructKeypoint(operation, value);
|
|
198
198
|
let image = new Image();
|
|
199
199
|
image.src = keypoint.src;
|
|
200
200
|
let stop = this._handleImageLoading(keypoint.src);
|
|
@@ -308,10 +308,10 @@ export class EditorImageFader extends Block {
|
|
|
308
308
|
}
|
|
309
309
|
|
|
310
310
|
/** @param {import('./types.js').Transformations} transformations */
|
|
311
|
-
setTransformations(transformations) {
|
|
311
|
+
async setTransformations(transformations) {
|
|
312
312
|
this._transformations = transformations;
|
|
313
313
|
if (this._previewImage) {
|
|
314
|
-
let src = this._imageSrc();
|
|
314
|
+
let src = await this._imageSrc();
|
|
315
315
|
let stop = this._handleImageLoading(src);
|
|
316
316
|
this._previewImage.src = src;
|
|
317
317
|
this._previewImage.addEventListener('load', stop, { once: true });
|
|
@@ -335,11 +335,11 @@ export class EditorImageFader extends Block {
|
|
|
335
335
|
* @param {Number} options.value
|
|
336
336
|
* @param {String} [options.filter]
|
|
337
337
|
*/
|
|
338
|
-
preload({ url, filter, operation, value }) {
|
|
338
|
+
async preload({ url, filter, operation, value }) {
|
|
339
339
|
this._cancelBatchPreload && this._cancelBatchPreload();
|
|
340
340
|
|
|
341
341
|
let keypoints = keypointsRange(operation, value);
|
|
342
|
-
let srcList = keypoints.map((kp) => this._imageSrc({ url, filter, operation, value: kp }));
|
|
342
|
+
let srcList = await Promise.all(keypoints.map((kp) => this._imageSrc({ url, filter, operation, value: kp })));
|
|
343
343
|
let { cancel } = batchPreloadImages(srcList);
|
|
344
344
|
|
|
345
345
|
this._cancelBatchPreload = cancel;
|
|
@@ -400,7 +400,7 @@ export class EditorImageFader extends Block {
|
|
|
400
400
|
* @param {String} [options.filter]
|
|
401
401
|
* @param {Boolean} [options.fromViewer]
|
|
402
402
|
*/
|
|
403
|
-
activate({ url, operation, value, filter, fromViewer }) {
|
|
403
|
+
async activate({ url, operation, value, filter, fromViewer }) {
|
|
404
404
|
this._isActive = true;
|
|
405
405
|
this._hidden = false;
|
|
406
406
|
this._url = url;
|
|
@@ -411,12 +411,14 @@ export class EditorImageFader extends Block {
|
|
|
411
411
|
|
|
412
412
|
let isOriginal = typeof value !== 'number' && !filter;
|
|
413
413
|
if (isOriginal) {
|
|
414
|
-
let src = this._imageSrc({ operation, value });
|
|
414
|
+
let src = await this._imageSrc({ operation, value });
|
|
415
415
|
this._setOriginalSrc(src);
|
|
416
416
|
this._container && this._container.remove();
|
|
417
417
|
return;
|
|
418
418
|
}
|
|
419
|
-
this._keypoints =
|
|
419
|
+
this._keypoints = await Promise.all(
|
|
420
|
+
keypointsRange(operation, value).map((keyValue) => this._constructKeypoint(operation, keyValue)),
|
|
421
|
+
);
|
|
420
422
|
|
|
421
423
|
this._update(operation, value);
|
|
422
424
|
this._initNodes();
|
|
@@ -111,8 +111,8 @@ export class EditorSlider extends Block {
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
EditorSlider.template = /* HTML */ `
|
|
114
|
-
<
|
|
114
|
+
<lr-slider-ui
|
|
115
115
|
ref="slider-el"
|
|
116
116
|
set="disabled: disabled; min: min; max: max; defaultValue: defaultValue; zero: zero; onInput: on.input;"
|
|
117
|
-
></
|
|
117
|
+
></lr-slider-ui>
|
|
118
118
|
`;
|
|
@@ -19,31 +19,31 @@ import { viewerImageSrc } from './util.js';
|
|
|
19
19
|
/** @param {String} id */
|
|
20
20
|
function renderTabToggle(id) {
|
|
21
21
|
return /* HTML */ `
|
|
22
|
-
<
|
|
22
|
+
<lr-presence-toggle
|
|
23
23
|
class="uc-tab-toggle"
|
|
24
24
|
set="visible: presence.tabToggle.${id}; styles: presence.tabToggleStyles;"
|
|
25
25
|
>
|
|
26
|
-
<
|
|
26
|
+
<lr-btn-ui
|
|
27
27
|
theme="tab"
|
|
28
28
|
ref="tab-toggle-${id}"
|
|
29
29
|
data-id="${id}"
|
|
30
30
|
icon="${id}"
|
|
31
31
|
set="onclick: on.clickTab; aria-role:tab_role; aria-controls:tab_${id}"
|
|
32
32
|
>
|
|
33
|
-
</
|
|
34
|
-
</
|
|
33
|
+
</lr-btn-ui>
|
|
34
|
+
</lr-presence-toggle>
|
|
35
35
|
`;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
/** @param {String} id */
|
|
39
39
|
function renderTabContent(id) {
|
|
40
40
|
return /* HTML */ `
|
|
41
|
-
<
|
|
41
|
+
<lr-presence-toggle
|
|
42
42
|
id="tab_${id}"
|
|
43
43
|
class="uc-tab-content"
|
|
44
44
|
set="visible: presence.tabContent.${id}; styles: presence.tabContentStyles"
|
|
45
45
|
>
|
|
46
|
-
<
|
|
46
|
+
<lr-editor-scroller hidden-scrollbar>
|
|
47
47
|
<div class="uc-controls-list_align">
|
|
48
48
|
<div
|
|
49
49
|
role="listbox"
|
|
@@ -52,8 +52,8 @@ function renderTabContent(id) {
|
|
|
52
52
|
ref="controls-list-${id}"
|
|
53
53
|
></div>
|
|
54
54
|
</div>
|
|
55
|
-
</
|
|
56
|
-
</
|
|
55
|
+
</lr-editor-scroller>
|
|
56
|
+
</lr-presence-toggle>
|
|
57
57
|
`;
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -105,7 +105,7 @@ export class EditorToolbar extends Block {
|
|
|
105
105
|
visible: 'uc-tab-toggles--visible',
|
|
106
106
|
},
|
|
107
107
|
'on.cancel': () => {
|
|
108
|
-
this._cancelPreload
|
|
108
|
+
this._cancelPreload?.();
|
|
109
109
|
this.$['*on.cancel']();
|
|
110
110
|
},
|
|
111
111
|
'on.apply': () => {
|
|
@@ -271,11 +271,11 @@ export class EditorToolbar extends Block {
|
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
/** @private */
|
|
274
|
-
_preloadEditedImage() {
|
|
274
|
+
async _preloadEditedImage() {
|
|
275
275
|
if (this.$['*imgContainerEl'] && this.$['*originalUrl']) {
|
|
276
276
|
let width = this.$['*imgContainerEl'].offsetWidth;
|
|
277
|
-
let src = this.proxyUrl(viewerImageSrc(this.$['*originalUrl'], width, this.$['*editorTransformations']));
|
|
278
|
-
this._cancelPreload
|
|
277
|
+
let src = await this.proxyUrl(viewerImageSrc(this.$['*originalUrl'], width, this.$['*editorTransformations']));
|
|
278
|
+
this._cancelPreload?.();
|
|
279
279
|
let { cancel } = batchPreloadImages([src]);
|
|
280
280
|
this._cancelPreload = () => {
|
|
281
281
|
cancel();
|
|
@@ -400,42 +400,42 @@ export class EditorToolbar extends Block {
|
|
|
400
400
|
}
|
|
401
401
|
|
|
402
402
|
EditorToolbar.template = /* HTML */ `
|
|
403
|
-
<
|
|
403
|
+
<lr-line-loader-ui set="active: showLoader"></lr-line-loader-ui>
|
|
404
404
|
<div class="uc-info-tooltip_container">
|
|
405
405
|
<div class="uc-info-tooltip_wrapper">
|
|
406
406
|
<div ref="tooltip-el" class="uc-info-tooltip uc-info-tooltip_hidden">{{*operationTooltip}}</div>
|
|
407
407
|
</div>
|
|
408
408
|
</div>
|
|
409
409
|
<div class="uc-toolbar-container">
|
|
410
|
-
<
|
|
410
|
+
<lr-presence-toggle
|
|
411
411
|
role="tablist"
|
|
412
412
|
class="uc-sub-toolbar"
|
|
413
413
|
set="visible: presence.mainToolbar; styles: presence.subTopToolbarStyles"
|
|
414
414
|
>
|
|
415
415
|
<div class="uc-tab-content-row">${ALL_TABS.map(renderTabContent).join('')}</div>
|
|
416
416
|
<div class="uc-controls-row">
|
|
417
|
-
<
|
|
417
|
+
<lr-presence-toggle
|
|
418
418
|
class="uc-tab-toggles"
|
|
419
419
|
set="visible: presence.tabToggles; styles: presence.tabTogglesStyles"
|
|
420
420
|
>
|
|
421
421
|
<div ref="tabs-indicator" class="uc-tab-toggles_indicator"></div>
|
|
422
422
|
${ALL_TABS.map(renderTabToggle).join('')}
|
|
423
|
-
</
|
|
424
|
-
<
|
|
425
|
-
<
|
|
423
|
+
</lr-presence-toggle>
|
|
424
|
+
<lr-btn-ui style="order: -1" theme="secondary-icon" icon="closeMax" set="onclick: on.cancel"> </lr-btn-ui>
|
|
425
|
+
<lr-btn-ui theme="primary-icon" icon="done" set="onclick: on.apply"> </lr-btn-ui>
|
|
426
426
|
</div>
|
|
427
|
-
</
|
|
428
|
-
<
|
|
427
|
+
</lr-presence-toggle>
|
|
428
|
+
<lr-presence-toggle
|
|
429
429
|
class="uc-sub-toolbar"
|
|
430
430
|
set="visible: presence.subToolbar; styles: presence.subBottomToolbarStyles"
|
|
431
431
|
>
|
|
432
432
|
<div class="uc-slider">
|
|
433
|
-
<
|
|
433
|
+
<lr-editor-slider ref="slider-el"></lr-editor-slider>
|
|
434
434
|
</div>
|
|
435
435
|
<div class="uc-controls-row">
|
|
436
|
-
<
|
|
437
|
-
<
|
|
436
|
+
<lr-btn-ui theme="secondary" set="onclick: on.cancelSlider;" l10n="@text:cancel"> </lr-btn-ui>
|
|
437
|
+
<lr-btn-ui theme="primary" set="onclick: on.applySlider;" l10n="@text:apply"> </lr-btn-ui>
|
|
438
438
|
</div>
|
|
439
|
-
</
|
|
439
|
+
</lr-presence-toggle>
|
|
440
440
|
</div>
|
|
441
441
|
`;
|