ablok-photobooth 0.2.30 → 0.2.32
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.
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import { defineComponent as AA, getCurrentInstance as
|
|
2
|
-
import { BaseCamera as
|
|
3
|
-
import { useI18n as
|
|
4
|
-
import { debounce as
|
|
5
|
-
async function
|
|
6
|
-
let
|
|
1
|
+
import { defineComponent as AA, getCurrentInstance as QA, computed as F, ref as D, watch as Z, onMounted as wA, openBlock as f, createElementBlock as w, normalizeClass as Y, normalizeStyle as _, createVNode as L, unref as B, createCommentVNode as E, createBlock as R, Transition as IA, withCtx as G, createElementVNode as b, withModifiers as q, toDisplayString as P, withDirectives as iA, vShow as cA, Fragment as kA, renderList as SA, createTextVNode as J, renderSlot as CA, onBeforeMount as hA } from "vue";
|
|
2
|
+
import { BaseCamera as MA, BaseImage as bA, LoadingSpinner as BA, BaseButton as lA, SvgIcon as X, InputFile as PA, useCameraFilter as UA, MediaThumbnails as EA, TouchWrapper as OA, ColorPalette as jA } from "ablok-components";
|
|
3
|
+
import { useI18n as LA } from "vue-i18n";
|
|
4
|
+
import { debounce as TA } from "lodash";
|
|
5
|
+
async function FA(A) {
|
|
6
|
+
let r = await fetch(A, { mode: "no-cors" }).then((a) => a.blob());
|
|
7
7
|
return await new Promise((a) => {
|
|
8
8
|
let s = new FileReader();
|
|
9
|
-
s.onload = () => a(s.result), s.readAsDataURL(
|
|
9
|
+
s.onload = () => a(s.result), s.readAsDataURL(r);
|
|
10
10
|
});
|
|
11
11
|
}
|
|
12
|
-
async function
|
|
13
|
-
return await new Promise((
|
|
12
|
+
async function mA(A) {
|
|
13
|
+
return await new Promise((r) => {
|
|
14
14
|
let a = new FileReader();
|
|
15
|
-
a.onload = () =>
|
|
15
|
+
a.onload = () => r(a.result), a.readAsDataURL(A);
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
|
-
function
|
|
19
|
-
return new Promise((
|
|
18
|
+
function HA(A) {
|
|
19
|
+
return new Promise((r, a) => {
|
|
20
20
|
const s = new Image();
|
|
21
|
-
s.onload = () =>
|
|
21
|
+
s.onload = () => r(s), s.onerror = a, s.src = A;
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
function
|
|
24
|
+
function YA(A, r = 0, a = 0) {
|
|
25
25
|
return new Promise((s, c) => {
|
|
26
26
|
const o = new Image();
|
|
27
27
|
o.crossOrigin = "anonymous", o.naturalWidth, o.naturalHeight, o.onload = () => {
|
|
28
28
|
const g = document.createElement("canvas"), i = g.getContext("2d");
|
|
29
|
-
g.width =
|
|
30
|
-
const
|
|
31
|
-
s(
|
|
29
|
+
g.width = r, g.height = o.height * r / o.width, i.drawImage(o, 0, 0, g.width, g.height);
|
|
30
|
+
const y = g.toDataURL();
|
|
31
|
+
s(y);
|
|
32
32
|
}, o.src = A;
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
function
|
|
35
|
+
function yA(A, r = 1) {
|
|
36
36
|
return new Promise((a, s) => {
|
|
37
37
|
const c = new Image();
|
|
38
38
|
c.crossOrigin = "anonymous", c.onload = () => {
|
|
39
39
|
const o = c.naturalWidth, g = c.naturalHeight, i = o / g;
|
|
40
|
-
let
|
|
41
|
-
i >
|
|
42
|
-
const
|
|
43
|
-
|
|
40
|
+
let y = o, h = g;
|
|
41
|
+
i > r ? y = g * r : i < r && (h = o / r);
|
|
42
|
+
const k = document.createElement("canvas");
|
|
43
|
+
k.width = y, k.height = h, k.getContext("2d").drawImage(c, k.width / 2 - c.width / 2, k.height / 2 - c.height / 2), a(k.toDataURL());
|
|
44
44
|
}, c.src = A;
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
|
-
const
|
|
48
|
-
const
|
|
47
|
+
const RA = (A) => {
|
|
48
|
+
const r = new FileReader();
|
|
49
49
|
return new Promise((a) => {
|
|
50
|
-
|
|
50
|
+
r.onload = (s) => {
|
|
51
51
|
if (!s.target)
|
|
52
52
|
return a(0);
|
|
53
53
|
const c = s.target, o = new DataView(c.result);
|
|
@@ -57,29 +57,29 @@ const YA = (A) => {
|
|
|
57
57
|
let i = 2;
|
|
58
58
|
for (; i < g; ) {
|
|
59
59
|
if (o.getUint16(i + 2, !1) <= 8) return a(-1);
|
|
60
|
-
let
|
|
61
|
-
if (i += 2,
|
|
60
|
+
let y = o.getUint16(i, !1);
|
|
61
|
+
if (i += 2, y == 65505) {
|
|
62
62
|
if (o.getUint32(i += 2, !1) != 1165519206)
|
|
63
63
|
return a(-1);
|
|
64
64
|
let h = o.getUint16(i += 6, !1) == 18761;
|
|
65
65
|
i += o.getUint32(i + 4, h);
|
|
66
|
-
let
|
|
66
|
+
let k = o.getUint16(i, h);
|
|
67
67
|
i += 2;
|
|
68
|
-
for (let d = 0; d <
|
|
68
|
+
for (let d = 0; d < k; d++)
|
|
69
69
|
if (o.getUint16(i + d * 12, h) == 274)
|
|
70
70
|
return a(o.getUint16(i + d * 12 + 8, h));
|
|
71
71
|
} else {
|
|
72
|
-
if ((
|
|
72
|
+
if ((y & 65280) != 65280)
|
|
73
73
|
break;
|
|
74
74
|
i += o.getUint16(i, !1);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
return a(-1);
|
|
78
|
-
},
|
|
78
|
+
}, r.readAsArrayBuffer(A);
|
|
79
79
|
});
|
|
80
80
|
};
|
|
81
|
-
function
|
|
82
|
-
let
|
|
81
|
+
function VA(A) {
|
|
82
|
+
let r = 0;
|
|
83
83
|
switch (A) {
|
|
84
84
|
// case 1:
|
|
85
85
|
// degree = 0;
|
|
@@ -106,28 +106,28 @@ function RA(A) {
|
|
|
106
106
|
// degree = 270;
|
|
107
107
|
// break;
|
|
108
108
|
case 3:
|
|
109
|
-
|
|
109
|
+
r = 180;
|
|
110
110
|
break;
|
|
111
111
|
case 6:
|
|
112
|
-
|
|
112
|
+
r = 90;
|
|
113
113
|
break;
|
|
114
114
|
case 8:
|
|
115
|
-
|
|
115
|
+
r = 270;
|
|
116
116
|
break;
|
|
117
117
|
default:
|
|
118
|
-
|
|
118
|
+
r = 0;
|
|
119
119
|
}
|
|
120
|
-
return
|
|
120
|
+
return r;
|
|
121
121
|
}
|
|
122
|
-
async function
|
|
123
|
-
const
|
|
124
|
-
return await
|
|
122
|
+
async function xA(A) {
|
|
123
|
+
const r = await RA(A);
|
|
124
|
+
return await VA(r);
|
|
125
125
|
}
|
|
126
|
-
async function
|
|
127
|
-
const a = await
|
|
128
|
-
return s.width = a.width, s.height = a.height, c.setTransform(1, 0, 0, 1, s.width / 2, s.height / 2), c.rotate(
|
|
126
|
+
async function _A(A, r) {
|
|
127
|
+
const a = await HA(A), s = document.createElement("canvas"), c = s.getContext("2d");
|
|
128
|
+
return s.width = a.width, s.height = a.height, c.setTransform(1, 0, 0, 1, s.width / 2, s.height / 2), c.rotate(r), c.drawImage(a, -a.width / 2, -a.height / 2), s.toDataURL();
|
|
129
129
|
}
|
|
130
|
-
const
|
|
130
|
+
const DA = {
|
|
131
131
|
// removeBg: async (endpoint: string, file: { dataUrl: string, resolution?: number }, basePath: string = '/media') => {
|
|
132
132
|
// const body = JSON.stringify({
|
|
133
133
|
// dataUrl: file.dataUrl,
|
|
@@ -144,9 +144,9 @@ const EA = {
|
|
|
144
144
|
// .catch((error) => [ error ]);
|
|
145
145
|
// return await response.dataUrl;
|
|
146
146
|
// },
|
|
147
|
-
processImage: async (A,
|
|
147
|
+
processImage: async (A, r, a = "/media") => {
|
|
148
148
|
const s = JSON.stringify({
|
|
149
|
-
...
|
|
149
|
+
...r
|
|
150
150
|
});
|
|
151
151
|
return await (await fetch(A, {
|
|
152
152
|
headers: {
|
|
@@ -156,22 +156,22 @@ const EA = {
|
|
|
156
156
|
body: s
|
|
157
157
|
}).then((o) => o.json()).catch((o) => [o])).dataUrl;
|
|
158
158
|
}
|
|
159
|
-
}, _A = "data:image/png;base64,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", GA = { class: "photo-app__drop-target__canvas" }, zA = { class: "flex-grow-1 text-center" }, NA = ["innerHTML"], $A = { class: "ml-2" }, WA = {
|
|
159
|
+
}, GA = "data:image/png;base64,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", zA = { class: "photo-app__drop-target__canvas" }, NA = { class: "flex-grow-1 text-center" }, $A = ["innerHTML"], WA = { class: "ml-2" }, JA = {
|
|
160
160
|
key: 0,
|
|
161
161
|
class: "d-flex flex-column align-center justify-center"
|
|
162
|
-
},
|
|
162
|
+
}, XA = { key: 0 }, ZA = { class: "photo-app__errors mt-2" }, KA = { class: "error--text" }, qA = {
|
|
163
163
|
key: 1,
|
|
164
164
|
class: "photo-app__file-list"
|
|
165
|
-
},
|
|
165
|
+
}, Ae = { class: "row" }, ee = { key: 0 }, te = { key: 1 }, ae = { key: 2 }, oe = { key: 3 }, le = { class: "photo-app__form-input text-center" }, ne = { class: "photo-app__controls" }, re = { class: "row" }, se = { class: "col col-12" }, ie = ["innerHTML"], ce = {
|
|
166
166
|
key: 0,
|
|
167
167
|
class: "d-flex justify-center col-8 mx-auto"
|
|
168
|
-
},
|
|
168
|
+
}, ue = { class: "col" }, de = {
|
|
169
169
|
key: 0,
|
|
170
170
|
class: "col"
|
|
171
|
-
},
|
|
171
|
+
}, ge = {
|
|
172
172
|
key: 1,
|
|
173
173
|
class: "col"
|
|
174
|
-
},
|
|
174
|
+
}, fe = ["required", "value"], xe = /* @__PURE__ */ AA({
|
|
175
175
|
__name: "photo-app",
|
|
176
176
|
props: {
|
|
177
177
|
modelValue: {
|
|
@@ -252,7 +252,7 @@ const EA = {
|
|
|
252
252
|
},
|
|
253
253
|
guideSrc: {
|
|
254
254
|
type: String,
|
|
255
|
-
default:
|
|
255
|
+
default: GA
|
|
256
256
|
},
|
|
257
257
|
acceptButton: {
|
|
258
258
|
type: Boolean,
|
|
@@ -322,119 +322,124 @@ const EA = {
|
|
|
322
322
|
processImage: null,
|
|
323
323
|
filter: String,
|
|
324
324
|
tint: Object,
|
|
325
|
-
resolutions: Object
|
|
325
|
+
resolutions: Object,
|
|
326
|
+
zoom: Number,
|
|
327
|
+
enableZoomSlider: {
|
|
328
|
+
type: Boolean,
|
|
329
|
+
default: !1
|
|
330
|
+
}
|
|
326
331
|
},
|
|
327
332
|
emits: ["update:modelValue"],
|
|
328
|
-
setup(A, { emit:
|
|
329
|
-
const { tm: a } =
|
|
330
|
-
const
|
|
331
|
-
return
|
|
332
|
-
}),
|
|
333
|
+
setup(A, { emit: r }) {
|
|
334
|
+
const { tm: a } = LA(), s = QA(), c = s && s.appContext.config.globalProperties.$config, o = A, g = r, i = F(() => c.baseMediaPath), y = F(() => l.value && l.value.length && l.value.filter((n) => n.response && Object.keys(n.response).length).length === l.value.length), h = F(() => {
|
|
335
|
+
const n = l.value.find((p) => p.response && p.response.path);
|
|
336
|
+
return n && n.response.path;
|
|
337
|
+
}), k = F(() => h.value ? `${i.value}${h.value}` : ""), d = F(() => ({
|
|
333
338
|
...o.i18n ? o.i18n.messages : {},
|
|
334
339
|
...o.messages
|
|
335
340
|
}));
|
|
336
341
|
F(() => !!(l.value && l.value.length));
|
|
337
|
-
const
|
|
338
|
-
Z(
|
|
339
|
-
if (
|
|
340
|
-
const
|
|
341
|
-
l.value.push(new File([
|
|
342
|
-
type:
|
|
343
|
-
})),
|
|
342
|
+
const v = F(() => l.value.length ? d.value.reviewTitle : d.value.captureTitle), l = D([]), m = D(), S = D(), u = D(), N = D(!1), M = D(!1), eA = D(), U = D(), H = D(!1), tA = D("");
|
|
343
|
+
Z(eA, async (n, p) => {
|
|
344
|
+
if (n) {
|
|
345
|
+
const I = n.blob && n.blob.type.split("/")[1], Q = new File([n.blob], `${n.id}.${I}`), T = await xA(Q), z = await mA(Q), $ = await _A(z, T), x = await (await fetch($)).blob();
|
|
346
|
+
l.value.push(new File([x], `${n.id}.${I}`, {
|
|
347
|
+
type: x.type
|
|
348
|
+
})), H.value = !1, dA();
|
|
344
349
|
}
|
|
345
|
-
}, { deep: !0 }), Z(l, async (
|
|
350
|
+
}, { deep: !0 }), Z(l, async (n, p) => {
|
|
346
351
|
if (o.enableInstantUpload)
|
|
347
|
-
|
|
352
|
+
n.find((I) => !I.response.path) && (m.value.active = !0);
|
|
348
353
|
else {
|
|
349
|
-
const
|
|
350
|
-
let T = await
|
|
351
|
-
o.downScaleImages && Number(o.maxFileSize) &&
|
|
352
|
-
const
|
|
353
|
-
return await
|
|
354
|
+
const I = await Promise.all(n.map(async (Q) => {
|
|
355
|
+
let T = await mA(Q);
|
|
356
|
+
o.downScaleImages && Number(o.maxFileSize) && Q.size > Number(o.maxFileSize) && (T = await YA(T, 800, 800));
|
|
357
|
+
const z = o.ratio.split("x");
|
|
358
|
+
return await yA(T, Number(z[0]) / Number(z[1]));
|
|
354
359
|
}));
|
|
355
|
-
|
|
360
|
+
U.value = I[0];
|
|
356
361
|
}
|
|
357
|
-
}, { deep: !0 }), Z(
|
|
358
|
-
|
|
359
|
-
}, { deep: !0 }), Z(
|
|
360
|
-
o.enableAutoSave &&
|
|
362
|
+
}, { deep: !0 }), Z(y, async (n, p) => {
|
|
363
|
+
n && !p && (U.value = o.enableInstantUpload ? h.value : await yA(k.value));
|
|
364
|
+
}, { deep: !0 }), Z(U, async (n, p) => {
|
|
365
|
+
o.enableAutoSave && U !== p && rA();
|
|
361
366
|
});
|
|
362
367
|
function nA() {
|
|
363
|
-
|
|
368
|
+
U.value = "", l.value = [];
|
|
364
369
|
}
|
|
365
|
-
function
|
|
366
|
-
|
|
370
|
+
function dA() {
|
|
371
|
+
M.value = !1;
|
|
367
372
|
}
|
|
368
373
|
function K() {
|
|
369
|
-
nA(),
|
|
374
|
+
nA(), M.value = !M.value;
|
|
370
375
|
}
|
|
371
|
-
async function
|
|
376
|
+
async function gA(n) {
|
|
372
377
|
if (!o.filter) {
|
|
373
|
-
l.value =
|
|
378
|
+
l.value = n;
|
|
374
379
|
return;
|
|
375
380
|
}
|
|
376
|
-
const { applyFilterToImageBlob: p } =
|
|
381
|
+
const { applyFilterToImageBlob: p } = UA({
|
|
377
382
|
...o,
|
|
378
383
|
tintColor: o.tint?.color,
|
|
379
384
|
tintIntensity: o.tint?.intensity
|
|
380
|
-
}),
|
|
381
|
-
const T =
|
|
385
|
+
}), I = await Promise.all((n || []).map(async (Q) => {
|
|
386
|
+
const T = Q?.file instanceof File ? Q.file : Q instanceof File ? Q : null;
|
|
382
387
|
if (!T)
|
|
383
|
-
return
|
|
384
|
-
const
|
|
388
|
+
return Q;
|
|
389
|
+
const z = await mA(T), $ = await p(z), V = new File([$], T.name, {
|
|
385
390
|
type: $.type || T.type,
|
|
386
391
|
lastModified: T.lastModified
|
|
387
392
|
});
|
|
388
|
-
if (
|
|
389
|
-
const
|
|
393
|
+
if (Q?.file instanceof File) {
|
|
394
|
+
const x = window.URL || window.webkitURL;
|
|
390
395
|
return {
|
|
391
|
-
...
|
|
396
|
+
...Q,
|
|
392
397
|
file: V,
|
|
393
398
|
size: V.size,
|
|
394
399
|
type: V.type,
|
|
395
400
|
name: V.name,
|
|
396
|
-
blob:
|
|
401
|
+
blob: x && x.createObjectURL ? x.createObjectURL(V) : Q.blob
|
|
397
402
|
};
|
|
398
403
|
}
|
|
399
404
|
return V;
|
|
400
405
|
}));
|
|
401
|
-
l.value =
|
|
406
|
+
l.value = I;
|
|
402
407
|
}
|
|
403
408
|
const rA = (async () => {
|
|
404
|
-
|
|
405
|
-
const
|
|
406
|
-
return await
|
|
407
|
-
}, Promise.resolve(
|
|
408
|
-
}),
|
|
409
|
+
H.value = !0, o.enableProcessImage && o.processImage && (U.value = await o.processImage.reduce(async (n, p) => {
|
|
410
|
+
const I = await n;
|
|
411
|
+
return await fA(I, p);
|
|
412
|
+
}, Promise.resolve(U.value))), g("update:modelValue", U.value);
|
|
413
|
+
}), fA = (async (n, p) => `${await DA.processImage(
|
|
409
414
|
`${p.endpoint}${p.search ? `?${p.search}` : ""}`,
|
|
410
|
-
{ ...p.body, dataUrl:
|
|
415
|
+
{ ...p.body, dataUrl: n, resolution: o.fixedResolution },
|
|
411
416
|
p.basePath
|
|
412
417
|
)}`);
|
|
413
|
-
function
|
|
414
|
-
|
|
418
|
+
function sA() {
|
|
419
|
+
H.value = !0, S.value?.onCapture();
|
|
415
420
|
}
|
|
416
|
-
return
|
|
417
|
-
["dragenter", "dragover"].forEach((
|
|
418
|
-
document.body.addEventListener(
|
|
419
|
-
p.preventDefault(),
|
|
421
|
+
return wA(() => {
|
|
422
|
+
["dragenter", "dragover"].forEach((n) => {
|
|
423
|
+
document.body.addEventListener(n, (p) => {
|
|
424
|
+
p.preventDefault(), N.value = !0;
|
|
420
425
|
}, !1);
|
|
421
|
-
}), ["dragleave", "drop"].forEach((
|
|
422
|
-
u.value.addEventListener(
|
|
423
|
-
p.preventDefault(),
|
|
426
|
+
}), ["dragleave", "drop"].forEach((n) => {
|
|
427
|
+
u.value.addEventListener(n, (p) => {
|
|
428
|
+
p.preventDefault(), N.value = !1;
|
|
424
429
|
}, !1);
|
|
425
|
-
}), ["drop"].forEach((
|
|
426
|
-
u.value.addEventListener(
|
|
427
|
-
p.preventDefault(),
|
|
428
|
-
const
|
|
429
|
-
(
|
|
430
|
+
}), ["drop"].forEach((n) => {
|
|
431
|
+
u.value.addEventListener(n, (p) => {
|
|
432
|
+
p.preventDefault(), N.value = !1;
|
|
433
|
+
const I = p.dataTransfer;
|
|
434
|
+
(I && Array.from(I.files || []))?.forEach((T) => {
|
|
430
435
|
l.value.push(T);
|
|
431
436
|
});
|
|
432
437
|
}, !1);
|
|
433
438
|
});
|
|
434
|
-
}), (
|
|
435
|
-
class:
|
|
439
|
+
}), (n, p) => (f(), w("div", {
|
|
440
|
+
class: Y(["photo-app", A.variant === "dark" && "theme--dark"])
|
|
436
441
|
}, [
|
|
437
|
-
A.enableCamera ? (f(),
|
|
442
|
+
A.enableCamera ? (f(), w("div", {
|
|
438
443
|
key: 0,
|
|
439
444
|
class: "photo-app__canvas media-container",
|
|
440
445
|
style: _({
|
|
@@ -442,16 +447,16 @@ const EA = {
|
|
|
442
447
|
backgroundColor: A.backgroundColor
|
|
443
448
|
})
|
|
444
449
|
}, [
|
|
445
|
-
|
|
450
|
+
M.value ? (f(), w("div", {
|
|
446
451
|
key: 0,
|
|
447
|
-
class:
|
|
452
|
+
class: Y(["photo-app__camera", `${A.ratio ? `aspect-ratio--${A.ratio}` : ""}`]),
|
|
448
453
|
style: _({ borderColor: A.color })
|
|
449
454
|
}, [
|
|
450
|
-
L(B(
|
|
455
|
+
L(B(MA), {
|
|
451
456
|
ref_key: "camera",
|
|
452
|
-
ref:
|
|
453
|
-
modelValue:
|
|
454
|
-
"onUpdate:modelValue": p[0] || (p[0] = (
|
|
457
|
+
ref: S,
|
|
458
|
+
modelValue: eA.value,
|
|
459
|
+
"onUpdate:modelValue": p[0] || (p[0] = (I) => eA.value = I),
|
|
455
460
|
"enable-toggle-play": A.enableTogglePlay,
|
|
456
461
|
countdown: A.captureCountdown,
|
|
457
462
|
"enable-mirror-camera": A.enableMirrorCamera,
|
|
@@ -472,36 +477,36 @@ const EA = {
|
|
|
472
477
|
"tint-intensity": A.tint?.intensity
|
|
473
478
|
}, null, 8, ["modelValue", "enable-toggle-play", "countdown", "enable-mirror-camera", "enable-switch-camera", "default-rear-camera", "enable-guide", "guide-src", "fixed-resolution", "enable-audio", "enable-select-device", "enable-crop-image", "text-color", "ratio", "resolutions", "filter", "tint-color", "tint-intensity"])
|
|
474
479
|
], 6)) : E("", !0),
|
|
475
|
-
l.value && l.value.length && !
|
|
480
|
+
l.value && l.value.length && !M.value ? (f(), w("div", {
|
|
476
481
|
key: 1,
|
|
477
482
|
class: "photo-app__preview",
|
|
478
483
|
style: _({ borderColor: A.color })
|
|
479
484
|
}, [
|
|
480
|
-
|
|
485
|
+
U.value ? (f(), R(B(bA), {
|
|
481
486
|
key: 0,
|
|
482
|
-
src:
|
|
487
|
+
src: k.value || U.value
|
|
483
488
|
}, null, 8, ["src"])) : E("", !0),
|
|
484
|
-
L(
|
|
489
|
+
L(IA, {
|
|
485
490
|
name: "fade",
|
|
486
491
|
mode: "out-in"
|
|
487
492
|
}, {
|
|
488
493
|
default: G(() => [
|
|
489
|
-
|
|
494
|
+
H.value ? (f(), R(B(BA), { key: 0 })) : E("", !0)
|
|
490
495
|
]),
|
|
491
496
|
_: 1
|
|
492
497
|
})
|
|
493
|
-
], 4)) :
|
|
498
|
+
], 4)) : M.value ? E("", !0) : (f(), w("div", {
|
|
494
499
|
key: 2,
|
|
495
|
-
class:
|
|
500
|
+
class: Y(["photo-app__drop-target", `${A.ratio ? `aspect-ratio--${A.ratio}` : ""}`]),
|
|
496
501
|
style: _({ borderColor: A.color })
|
|
497
502
|
}, [
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
503
|
+
b("div", zA, [
|
|
504
|
+
b("div", NA, [
|
|
505
|
+
b("p", {
|
|
501
506
|
class: "headline h2 font-weight-bold",
|
|
502
|
-
innerHTML: d.value.title ||
|
|
503
|
-
}, null, 8,
|
|
504
|
-
A.enableCamera ? (f(), R(B(
|
|
507
|
+
innerHTML: d.value.title || n.$t("fileInput.coverTitle")
|
|
508
|
+
}, null, 8, $A),
|
|
509
|
+
A.enableCamera ? (f(), R(B(lA), {
|
|
505
510
|
key: 0,
|
|
506
511
|
type: "button",
|
|
507
512
|
onClick: q(K, ["prevent"]),
|
|
@@ -511,78 +516,78 @@ const EA = {
|
|
|
511
516
|
}, {
|
|
512
517
|
default: G(() => [
|
|
513
518
|
L(B(X), { symbol: "camera" }),
|
|
514
|
-
|
|
519
|
+
b("span", WA, P(d.value.launchCamera || n.$t("fileInput.coverLaunchCta")), 1)
|
|
515
520
|
]),
|
|
516
521
|
_: 1
|
|
517
522
|
}, 8, ["style"])) : E("", !0)
|
|
518
523
|
]),
|
|
519
|
-
A.enableLocalFileUpload ? (f(),
|
|
520
|
-
|
|
524
|
+
A.enableLocalFileUpload ? (f(), w("div", JA, [
|
|
525
|
+
b("p", {
|
|
521
526
|
class: "subtitle fw-bold ma-0",
|
|
522
527
|
style: _({ color: A.color })
|
|
523
|
-
}, P(d.value.localFileTitle ||
|
|
524
|
-
|
|
528
|
+
}, P(d.value.localFileTitle || n.$t("fileInput.coverLocalSelectTitle")), 5),
|
|
529
|
+
b("p", {
|
|
525
530
|
class: "text-body-1",
|
|
526
531
|
style: _({ color: A.color })
|
|
527
532
|
}, [
|
|
528
|
-
A.enableDragDrop ? (f(),
|
|
529
|
-
|
|
533
|
+
A.enableDragDrop ? (f(), w("span", XA, P(d.value.dropTarget || n.$t("fileInput.coverDropTarget")) + " " + P(A.enableLocalFileUpload && A.enableDragDrop ? d.value.or || n.$t("common.or") : "") + " " + P(), 1)) : E("", !0),
|
|
534
|
+
b("label", {
|
|
530
535
|
for: "fileUpload",
|
|
531
536
|
role: "button",
|
|
532
537
|
class: "d-inline link",
|
|
533
538
|
style: _({ color: A.color })
|
|
534
|
-
}, P(d.value.coverSelectFileCta ||
|
|
539
|
+
}, P(d.value.coverSelectFileCta || n.$t("fileInput.coverLocalFileCta")), 5)
|
|
535
540
|
], 4)
|
|
536
541
|
])) : E("", !0)
|
|
537
542
|
])
|
|
538
543
|
], 6))
|
|
539
544
|
], 4)) : E("", !0),
|
|
540
|
-
|
|
545
|
+
iA(b("div", {
|
|
541
546
|
class: "photo-app__drop-overlay",
|
|
542
547
|
ref_key: "dropArea",
|
|
543
548
|
ref: u
|
|
544
549
|
}, [
|
|
545
|
-
|
|
550
|
+
b("h3", null, P(d.value.dropTarget || n.$t("fileInput.dropTargetLabel")), 1)
|
|
546
551
|
], 512), [
|
|
547
|
-
[
|
|
552
|
+
[cA, A.enableLocalFileUpload && A.enableDragDrop && N.value]
|
|
548
553
|
]),
|
|
549
|
-
|
|
550
|
-
|
|
554
|
+
iA(b("div", ZA, [
|
|
555
|
+
b("p", KA, P(tA.value), 1)
|
|
551
556
|
], 512), [
|
|
552
|
-
[
|
|
557
|
+
[cA, tA.value]
|
|
553
558
|
]),
|
|
554
|
-
A.enableFileList && l.value.length ? (f(),
|
|
555
|
-
|
|
556
|
-
(f(!0),
|
|
557
|
-
key:
|
|
559
|
+
A.enableFileList && l.value.length ? (f(), w("div", qA, [
|
|
560
|
+
b("div", Ae, [
|
|
561
|
+
(f(!0), w(kA, null, SA(l.value, (I) => (f(), w("div", {
|
|
562
|
+
key: I.id,
|
|
558
563
|
class: "col col-12"
|
|
559
564
|
}, [
|
|
560
|
-
|
|
565
|
+
b("span", null, P(I.name), 1),
|
|
561
566
|
p[2] || (p[2] = J(" - ", -1)),
|
|
562
|
-
|
|
567
|
+
b("span", null, P(I.size), 1),
|
|
563
568
|
p[3] || (p[3] = J(" - ", -1)),
|
|
564
|
-
|
|
569
|
+
I.error ? (f(), w("span", ee, P(I.error), 1)) : I.success ? (f(), w("span", te, P(n.$t("common.success")), 1)) : I.active ? (f(), w("span", ae, P(n.$t("common.active")), 1)) : (f(), w("span", oe))
|
|
565
570
|
]))), 128))
|
|
566
571
|
])
|
|
567
572
|
])) : E("", !0),
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
A.enableTitle && (
|
|
573
|
+
iA(b("div", le, [
|
|
574
|
+
b("div", ne, [
|
|
575
|
+
b("div", re, [
|
|
576
|
+
b("div", se, [
|
|
577
|
+
CA(n.$slots, "headline", {}, () => [
|
|
578
|
+
A.enableTitle && (M.value || l.value.length) ? (f(), w("p", {
|
|
574
579
|
key: 0,
|
|
575
580
|
class: "headline",
|
|
576
|
-
innerHTML:
|
|
577
|
-
}, null, 8,
|
|
581
|
+
innerHTML: v.value
|
|
582
|
+
}, null, 8, ie)) : E("", !0)
|
|
578
583
|
]),
|
|
579
|
-
!A.enableLegacyInput && (
|
|
580
|
-
|
|
581
|
-
|
|
584
|
+
!A.enableLegacyInput && (M.value || l.value.length) ? (f(), w("div", ce, [
|
|
585
|
+
b("div", ue, [
|
|
586
|
+
M.value || l.value.length && (!m.value || !m.value.active) ? (f(), R(B(lA), {
|
|
582
587
|
key: 0,
|
|
583
588
|
type: "button",
|
|
584
|
-
class:
|
|
585
|
-
onClick: p[1] || (p[1] = q((
|
|
589
|
+
class: Y(["btn btn-primary-outline rounded-circle", `theme--${A.variant}`]),
|
|
590
|
+
onClick: p[1] || (p[1] = q((I) => M.value ? K() : nA(), ["prevent"]))
|
|
586
591
|
}, {
|
|
587
592
|
default: G(() => [
|
|
588
593
|
L(B(X), {
|
|
@@ -590,91 +595,91 @@ const EA = {
|
|
|
590
595
|
"base-path": B(c).iconSprite,
|
|
591
596
|
class: "primary"
|
|
592
597
|
}, null, 8, ["base-path"]),
|
|
593
|
-
J(" " + P(A.enableButtonCaptions ? d.value.cancel ||
|
|
598
|
+
J(" " + P(A.enableButtonCaptions ? d.value.cancel || n.$t("fileInput.cancel") : ""), 1)
|
|
594
599
|
]),
|
|
595
600
|
_: 1
|
|
596
601
|
}, 8, ["class"])) : E("", !0)
|
|
597
602
|
]),
|
|
598
|
-
|
|
599
|
-
L(B(
|
|
603
|
+
M.value ? (f(), w("div", de, [
|
|
604
|
+
L(B(lA), {
|
|
600
605
|
type: "button",
|
|
601
|
-
class:
|
|
602
|
-
onClick: q(
|
|
603
|
-
disabled:
|
|
606
|
+
class: Y(["btn btn-primary rounded-circle", `theme--${A.variant}`]),
|
|
607
|
+
onClick: q(sA, ["prevent"]),
|
|
608
|
+
disabled: H.value
|
|
604
609
|
}, {
|
|
605
610
|
default: G(() => [
|
|
606
611
|
L(B(X), {
|
|
607
612
|
symbol: "camera",
|
|
608
613
|
"base-path": B(c).iconSprite
|
|
609
614
|
}, null, 8, ["base-path"]),
|
|
610
|
-
J(" " + P(A.enableButtonCaptions ? d.value.shoot ||
|
|
615
|
+
J(" " + P(A.enableButtonCaptions ? d.value.shoot || n.$t("fileInput.shoot") : ""), 1)
|
|
611
616
|
]),
|
|
612
617
|
_: 1
|
|
613
618
|
}, 8, ["class", "disabled"])
|
|
614
|
-
])) : A.enableReview ? (f(),
|
|
615
|
-
L(B(
|
|
619
|
+
])) : A.enableReview ? (f(), w("div", ge, [
|
|
620
|
+
L(B(lA), {
|
|
616
621
|
type: "button",
|
|
617
|
-
class:
|
|
622
|
+
class: Y(["btn btn-primary rounded-circle", {
|
|
618
623
|
[`theme--${A.variant}`]: A.variant,
|
|
619
|
-
"btn-success":
|
|
624
|
+
"btn-success": H.value
|
|
620
625
|
}]),
|
|
621
626
|
onClick: q(rA, ["prevent"]),
|
|
622
|
-
disabled:
|
|
627
|
+
disabled: H.value
|
|
623
628
|
}, {
|
|
624
629
|
default: G(() => [
|
|
625
630
|
L(B(X), { symbol: "check" }),
|
|
626
|
-
J(" " + P(A.enableButtonCaptions ? d.value.accept ||
|
|
631
|
+
J(" " + P(A.enableButtonCaptions ? d.value.accept || n.$t("common.accept") : ""), 1)
|
|
627
632
|
]),
|
|
628
633
|
_: 1
|
|
629
634
|
}, 8, ["class", "disabled"])
|
|
630
635
|
])) : E("", !0)
|
|
631
636
|
])) : E("", !0),
|
|
632
|
-
|
|
633
|
-
class:
|
|
634
|
-
"d-flex": A.enableLegacyInput && (
|
|
637
|
+
iA(b("div", {
|
|
638
|
+
class: Y(["justify-center col-10 mx-auto", {
|
|
639
|
+
"d-flex": A.enableLegacyInput && (M.value || l.value.length)
|
|
635
640
|
}])
|
|
636
641
|
}, [
|
|
637
|
-
|
|
642
|
+
b("button", {
|
|
638
643
|
type: "button",
|
|
639
|
-
class:
|
|
644
|
+
class: Y(["btn btn-primary", `theme--${A.variant}`]),
|
|
640
645
|
onClick: q(K, ["prevent"])
|
|
641
646
|
}, [
|
|
642
647
|
A.enableButtonIcons ? (f(), R(B(X), {
|
|
643
648
|
key: 0,
|
|
644
649
|
symbol: "camera"
|
|
645
650
|
})) : E("", !0),
|
|
646
|
-
J(" " + P(A.enableButtonCaptions ?
|
|
651
|
+
J(" " + P(A.enableButtonCaptions ? M.value ? d.value.cancel || n.$t("common.cancel") : d.value.camera || n.$t("fileInput.selectCameraCta") : ""), 1)
|
|
647
652
|
], 2),
|
|
648
|
-
|
|
653
|
+
M.value && (!n.$refs.upload || m.value.active) ? (f(), R(B(lA), {
|
|
649
654
|
key: 0,
|
|
650
655
|
type: "button",
|
|
651
|
-
class:
|
|
652
|
-
onClick: q(
|
|
653
|
-
disabled:
|
|
656
|
+
class: Y(["btn btn-primary", `theme--${A.variant}`]),
|
|
657
|
+
onClick: q(sA, ["prevent"]),
|
|
658
|
+
disabled: H.value
|
|
654
659
|
}, {
|
|
655
660
|
default: G(() => [
|
|
656
661
|
A.enableButtonIcons ? (f(), R(B(X), {
|
|
657
662
|
key: 0,
|
|
658
663
|
symbol: "camera"
|
|
659
664
|
})) : E("", !0),
|
|
660
|
-
J(" " + P(A.enableButtonCaptions ? d.value.shoot ||
|
|
665
|
+
J(" " + P(A.enableButtonCaptions ? d.value.shoot || n.$t("fileInput.shoot") : ""), 1)
|
|
661
666
|
]),
|
|
662
667
|
_: 1
|
|
663
668
|
}, 8, ["class", "disabled"])) : E("", !0),
|
|
664
|
-
L(B(
|
|
669
|
+
L(B(PA), {
|
|
665
670
|
ref_key: "upload",
|
|
666
671
|
ref: m,
|
|
667
672
|
"model-value": l.value,
|
|
668
673
|
id: "fileUpload",
|
|
669
|
-
"onUpdate:modelValue":
|
|
674
|
+
"onUpdate:modelValue": gA,
|
|
670
675
|
name: "fileUpload"
|
|
671
676
|
}, {
|
|
672
677
|
default: G(() => [
|
|
673
|
-
|
|
674
|
-
|
|
678
|
+
CA(n.$slots, "label", {}, () => [
|
|
679
|
+
b("label", {
|
|
675
680
|
for: "fileUpload",
|
|
676
681
|
type: "button",
|
|
677
|
-
class:
|
|
682
|
+
class: Y(["btn btn-primary", `theme--${A.variant}`])
|
|
678
683
|
}, [
|
|
679
684
|
A.enableButtonIcons ? (f(), R(B(X), {
|
|
680
685
|
key: 0,
|
|
@@ -686,54 +691,54 @@ const EA = {
|
|
|
686
691
|
_: 3
|
|
687
692
|
}, 8, ["model-value"])
|
|
688
693
|
], 2), [
|
|
689
|
-
[
|
|
694
|
+
[cA, A.enableLegacyInput && (M.value || l.value.length)]
|
|
690
695
|
]),
|
|
691
|
-
A.required ? (f(),
|
|
696
|
+
A.required ? (f(), w("input", {
|
|
692
697
|
key: 1,
|
|
693
698
|
ref: "hiddenInput",
|
|
694
699
|
required: A.required,
|
|
695
|
-
value:
|
|
700
|
+
value: U.value,
|
|
696
701
|
style: { display: "none" }
|
|
697
|
-
}, null, 8,
|
|
702
|
+
}, null, 8, fe)) : E("", !0)
|
|
698
703
|
])
|
|
699
704
|
])
|
|
700
705
|
])
|
|
701
706
|
], 512), [
|
|
702
|
-
[
|
|
707
|
+
[cA, M.value || l.value.length]
|
|
703
708
|
])
|
|
704
709
|
], 2));
|
|
705
710
|
}
|
|
706
711
|
});
|
|
707
|
-
function
|
|
708
|
-
return new Promise((
|
|
709
|
-
A.oncomplete = A.onsuccess = () =>
|
|
712
|
+
function uA(A) {
|
|
713
|
+
return new Promise((r, a) => {
|
|
714
|
+
A.oncomplete = A.onsuccess = () => r(A.result), A.onabort = A.onerror = () => a(A.error);
|
|
710
715
|
});
|
|
711
716
|
}
|
|
712
|
-
function
|
|
717
|
+
function me(A, r) {
|
|
713
718
|
const a = indexedDB.open(A);
|
|
714
|
-
a.onupgradeneeded = () => a.result.createObjectStore(
|
|
715
|
-
const s =
|
|
719
|
+
a.onupgradeneeded = () => a.result.createObjectStore(r);
|
|
720
|
+
const s = uA(a);
|
|
716
721
|
return (c, o) => s.then(
|
|
717
|
-
(g) => o(g.transaction(
|
|
722
|
+
(g) => o(g.transaction(r, c).objectStore(r))
|
|
718
723
|
);
|
|
719
724
|
}
|
|
720
|
-
let
|
|
721
|
-
function
|
|
722
|
-
return
|
|
725
|
+
let pA;
|
|
726
|
+
function vA() {
|
|
727
|
+
return pA || (pA = me("keyval-store", "keyval")), pA;
|
|
723
728
|
}
|
|
724
|
-
function
|
|
725
|
-
return
|
|
729
|
+
function pe(A, r = vA()) {
|
|
730
|
+
return r("readonly", (a) => uA(a.get(A)));
|
|
726
731
|
}
|
|
727
|
-
function
|
|
728
|
-
return a("readwrite", (s) => (s.put(
|
|
732
|
+
function Ce(A, r, a = vA()) {
|
|
733
|
+
return a("readwrite", (s) => (s.put(r, A), uA(s.transaction)));
|
|
729
734
|
}
|
|
730
|
-
function
|
|
731
|
-
return
|
|
735
|
+
function be(A, r = vA()) {
|
|
736
|
+
return r("readwrite", (a) => (a.delete(A), uA(a.transaction)));
|
|
732
737
|
}
|
|
733
|
-
const
|
|
738
|
+
const ve = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23ffffffCC'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%20class='feather%20feather-rotate-cw'%3e%3cpolyline%20points='23%204%2023%2010%2017%2010'%3e%3c/polyline%3e%3cpath%20d='M20.49%2015a9%209%200%201%201-2.12-9.36L23%2010'%3e%3c/path%3e%3c/svg%3e", ye = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23ffffffCC'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%20class='feather%20feather-x-circle'%3e%3ccircle%20cx='12'%20cy='12'%20r='10'%20fill='none'%3e%3c/circle%3e%3cline%20x1='15'%20y1='9'%20x2='9'%20y2='15'%20fill='none'%3e%3c/line%3e%3cline%20x1='9'%20y1='9'%20x2='15'%20y2='15'%20fill='none'%3e%3c/line%3e%3c/svg%3e", we = { class: "fabric-canvas__canvas" }, Ie = {
|
|
734
739
|
id: "fabricCanvas",
|
|
735
740
|
ref: "canvasRef"
|
|
736
|
-
},
|
|
741
|
+
}, he = /* @__PURE__ */ AA({
|
|
737
742
|
__name: "fabric-canvas",
|
|
738
743
|
props: {
|
|
739
744
|
modelValue: {
|
|
@@ -778,174 +783,174 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
778
783
|
}
|
|
779
784
|
},
|
|
780
785
|
emits: ["update:modelValue", "update:jsonModel", "update:pending", "on-ready"],
|
|
781
|
-
setup(A, { expose:
|
|
782
|
-
let s, c, o, g, i,
|
|
786
|
+
setup(A, { expose: r, emit: a }) {
|
|
787
|
+
let s, c, o, g, i, y, h, k;
|
|
783
788
|
const d = a;
|
|
784
|
-
|
|
785
|
-
const
|
|
786
|
-
let u;
|
|
787
|
-
const
|
|
788
|
-
async function
|
|
789
|
-
return new Promise(async (
|
|
790
|
-
const
|
|
791
|
-
if (
|
|
792
|
-
const
|
|
793
|
-
|
|
789
|
+
r({ setBackgroundImage: nA, setOverlayImage: K, addCanvasObject: gA });
|
|
790
|
+
const v = A, l = D(), m = D(0), S = D(0);
|
|
791
|
+
let u, N = !1;
|
|
792
|
+
const M = D();
|
|
793
|
+
async function eA(e, t) {
|
|
794
|
+
return new Promise(async (C) => {
|
|
795
|
+
const O = JSON.parse(t);
|
|
796
|
+
if (O.backgroundImage) {
|
|
797
|
+
const j = await U(O.backgroundImage.src || O.backgroundImage.filename);
|
|
798
|
+
j.set({
|
|
794
799
|
opacity: 1
|
|
795
|
-
}), e.backgroundImage =
|
|
800
|
+
}), e.backgroundImage = j, e.centerObject(j);
|
|
796
801
|
}
|
|
797
|
-
if (
|
|
798
|
-
const
|
|
799
|
-
|
|
802
|
+
if (O.overlayImage) {
|
|
803
|
+
const j = await U(O.overlayImage.src || O.overlayImage.filename);
|
|
804
|
+
j.set({
|
|
800
805
|
opacity: 1,
|
|
801
806
|
left: m.value / 2,
|
|
802
|
-
top:
|
|
803
|
-
scaleX: m.value /
|
|
804
|
-
scaleY:
|
|
805
|
-
}), e.overlayImage =
|
|
807
|
+
top: S.value / 2,
|
|
808
|
+
scaleX: m.value / j.width,
|
|
809
|
+
scaleY: S.value / j.height
|
|
810
|
+
}), e.overlayImage = j;
|
|
806
811
|
}
|
|
807
|
-
(await g.enlivenObjects(
|
|
812
|
+
(await g.enlivenObjects(O.objects, {
|
|
808
813
|
reviver: void 0
|
|
809
|
-
})).forEach((
|
|
810
|
-
e.add(
|
|
811
|
-
}),
|
|
814
|
+
})).forEach((j) => {
|
|
815
|
+
e.add(j);
|
|
816
|
+
}), C(e);
|
|
812
817
|
});
|
|
813
818
|
}
|
|
814
|
-
async function
|
|
815
|
-
const t = await
|
|
819
|
+
async function U(e) {
|
|
820
|
+
const t = await V(e);
|
|
816
821
|
e.includes("data:image") || (t.filename = e);
|
|
817
|
-
const
|
|
822
|
+
const C = g.findScaleToCover(t, u), O = t instanceof c;
|
|
818
823
|
return t.set({
|
|
819
824
|
left: 0,
|
|
820
825
|
top: 0,
|
|
821
|
-
opacity:
|
|
822
|
-
scaleX:
|
|
823
|
-
scaleY:
|
|
826
|
+
opacity: O && v.animationDuration > 0 ? 0 : 1,
|
|
827
|
+
scaleX: C,
|
|
828
|
+
scaleY: C,
|
|
824
829
|
src: e
|
|
825
830
|
}), t;
|
|
826
831
|
}
|
|
827
|
-
async function
|
|
828
|
-
!(e instanceof c) ||
|
|
829
|
-
const
|
|
830
|
-
const
|
|
831
|
-
e.set("opacity", W), u.renderAll(), W < 1 ? requestAnimationFrame(
|
|
832
|
+
async function H(e) {
|
|
833
|
+
!(e instanceof c) || v.animationDuration === 0 || (v.emitPending && d("update:pending", !0), await new Promise((C) => {
|
|
834
|
+
const O = v.animationDuration, aA = Date.now(), j = () => {
|
|
835
|
+
const oA = Date.now() - aA, W = Math.min(oA / O, 1);
|
|
836
|
+
e.set("opacity", W), u.renderAll(), W < 1 ? requestAnimationFrame(j) : (v.emitPending && d("update:pending", !1), C());
|
|
832
837
|
};
|
|
833
|
-
requestAnimationFrame(
|
|
838
|
+
requestAnimationFrame(j);
|
|
834
839
|
}));
|
|
835
840
|
}
|
|
836
|
-
function
|
|
841
|
+
function tA(e) {
|
|
837
842
|
const t = g.findScaleToCover(e, u);
|
|
838
843
|
return e.set({
|
|
839
844
|
scaleX: t,
|
|
840
845
|
scaleY: t
|
|
841
846
|
}), e;
|
|
842
847
|
}
|
|
843
|
-
async function lA(e) {
|
|
844
|
-
const t = await x(e.src);
|
|
845
|
-
u.backgroundImage = t, u.centerObject(t), u.renderAll(), await j(t), C();
|
|
846
|
-
}
|
|
847
848
|
async function nA(e) {
|
|
848
|
-
const t = await
|
|
849
|
-
|
|
849
|
+
const t = await U(e.src);
|
|
850
|
+
u.backgroundImage = t, u.centerObject(t), u.renderAll(), await H(t), Q();
|
|
850
851
|
}
|
|
851
|
-
async function
|
|
852
|
-
const t = await
|
|
852
|
+
async function dA(e) {
|
|
853
|
+
const t = await U(e.src);
|
|
854
|
+
t.selectable = !1, t.assetType = "foreground", u.add(t), u.centerObject(t), u.renderAll(), await H(t), Q();
|
|
855
|
+
}
|
|
856
|
+
async function K(e) {
|
|
857
|
+
const t = await U(e.src);
|
|
853
858
|
t.set({
|
|
854
859
|
left: m.value / 2,
|
|
855
|
-
top:
|
|
860
|
+
top: S.value / 2,
|
|
856
861
|
scaleX: m.value / t.width,
|
|
857
|
-
scaleY:
|
|
858
|
-
}), u.overlayImage = t, u.renderAll(), await
|
|
862
|
+
scaleY: S.value / t.height
|
|
863
|
+
}), u.overlayImage = t, u.renderAll(), await H(t), Q();
|
|
859
864
|
}
|
|
860
|
-
async function
|
|
865
|
+
async function gA(e) {
|
|
861
866
|
u.discardActiveObject();
|
|
862
|
-
const t = await
|
|
867
|
+
const t = await V(e.src);
|
|
863
868
|
t.filename = e.src;
|
|
864
|
-
const
|
|
869
|
+
const C = m.value / 3, O = S.value / 3, aA = C / t.width, j = O / t.height, oA = Math.min(aA, j);
|
|
865
870
|
t.set({
|
|
866
|
-
scaleX:
|
|
867
|
-
scaleY:
|
|
871
|
+
scaleX: oA,
|
|
872
|
+
scaleY: oA,
|
|
868
873
|
left: m.value / 2,
|
|
869
|
-
top:
|
|
870
|
-
}), t.id = e.id, t.padding = 8, u.add(t), u.setActiveObject(t), await
|
|
874
|
+
top: S.value / 2
|
|
875
|
+
}), t.id = e.id, t.padding = 8, u.add(t), u.setActiveObject(t), await H(t), u.renderAll();
|
|
871
876
|
}
|
|
872
|
-
function
|
|
877
|
+
function rA(e, t) {
|
|
873
878
|
t.target.id;
|
|
874
|
-
const
|
|
875
|
-
return u.remove(
|
|
879
|
+
const C = t.target;
|
|
880
|
+
return u.remove(C), u.requestRenderAll(), !0;
|
|
876
881
|
}
|
|
877
|
-
function
|
|
878
|
-
if (m.value = l.value.offsetWidth,
|
|
882
|
+
function fA() {
|
|
883
|
+
if (m.value = l.value.offsetWidth, S.value = l.value.offsetHeight, u.setDimensions({ width: m.value, height: S.value }), u.backgroundImage && (u.backgroundImage = tA(u.backgroundImage), u.centerObject(u.backgroundImage)), u.overlayImage) {
|
|
879
884
|
const e = u.overlayImage;
|
|
880
885
|
e.set({
|
|
881
886
|
scaleX: m.value / e.width,
|
|
882
|
-
scaleY:
|
|
887
|
+
scaleY: S.value / e.height
|
|
883
888
|
});
|
|
884
889
|
}
|
|
885
890
|
u.getObjects().forEach((e) => {
|
|
886
|
-
e.assetType === "foreground" && (e =
|
|
891
|
+
e.assetType === "foreground" && (e = tA(e), u.centerObject(e));
|
|
887
892
|
}), u.renderAll();
|
|
888
893
|
}
|
|
889
|
-
const
|
|
890
|
-
|
|
894
|
+
const sA = TA(() => {
|
|
895
|
+
fA();
|
|
891
896
|
}, 200, { trailing: !0, leading: !1 });
|
|
892
|
-
function
|
|
893
|
-
return (t,
|
|
894
|
-
t.save(), t.translate(
|
|
897
|
+
function n(e) {
|
|
898
|
+
return (t, C, O, aA, j) => {
|
|
899
|
+
t.save(), t.translate(C, O), t.rotate(g.degreesToRadians(j.angle)), t.fillStyle = v.options.themeData?.colors?.primary, t.fillRect(-24 / 2, -24 / 2, 24, 24);
|
|
895
900
|
const W = 20;
|
|
896
901
|
t.drawImage(e, -W / 2, -W / 2, W, W), t.restore();
|
|
897
902
|
};
|
|
898
903
|
}
|
|
899
|
-
function
|
|
904
|
+
function p() {
|
|
900
905
|
const e = document.createElement("img");
|
|
901
|
-
e.src =
|
|
906
|
+
e.src = ve;
|
|
902
907
|
const t = document.createElement("img");
|
|
903
|
-
t.src =
|
|
904
|
-
|
|
908
|
+
t.src = ye, u.on("object:added", (C) => {
|
|
909
|
+
C.target && C.target.controls && (C.target.set({
|
|
905
910
|
transparentCorners: !1,
|
|
906
911
|
cornerSize: 16,
|
|
907
912
|
cornerStyle: "circle",
|
|
908
|
-
...
|
|
909
|
-
cornerColor:
|
|
910
|
-
cornerStrokeColor:
|
|
911
|
-
borderColor:
|
|
913
|
+
...v.options.themeData?.colors?.primary ? {
|
|
914
|
+
cornerColor: v.options.themeData?.colors?.primary,
|
|
915
|
+
cornerStrokeColor: v.options.themeData?.colors?.primary,
|
|
916
|
+
borderColor: v.options.themeData?.colors?.primary
|
|
912
917
|
} : {}
|
|
913
|
-
}),
|
|
918
|
+
}), C.target.controls.ml.visible = !1, C.target.controls.mr.visible = !1, C.target.controls.mb.visible = !1, C.target.controls.mt.visible = !1, C.target.controls.mtr.visible = !1, C.target.controls.rotate = new o({
|
|
914
919
|
x: 0.5,
|
|
915
920
|
y: -0.5,
|
|
916
921
|
offsetX: 32,
|
|
917
922
|
offsetY: 0,
|
|
918
923
|
cursorStyle: "pointer",
|
|
919
924
|
actionName: "rotate",
|
|
920
|
-
actionHandler:
|
|
921
|
-
cursorStyleHandler:
|
|
922
|
-
render:
|
|
923
|
-
}),
|
|
925
|
+
actionHandler: k.rotationWithSnapping,
|
|
926
|
+
cursorStyleHandler: k.rotationStyleHandler,
|
|
927
|
+
render: n(e)
|
|
928
|
+
}), C.target.controls.delete = new o({
|
|
924
929
|
x: 0.5,
|
|
925
930
|
y: -0.5,
|
|
926
931
|
offsetX: 32,
|
|
927
932
|
offsetY: 32,
|
|
928
933
|
cursorStyle: "pointer",
|
|
929
|
-
mouseUpHandler:
|
|
930
|
-
render:
|
|
934
|
+
mouseUpHandler: rA,
|
|
935
|
+
render: n(t)
|
|
931
936
|
}));
|
|
932
937
|
});
|
|
933
938
|
}
|
|
934
|
-
async function
|
|
939
|
+
async function I() {
|
|
935
940
|
return await new Promise((e) => {
|
|
936
941
|
setTimeout(() => {
|
|
937
|
-
const t =
|
|
942
|
+
const t = v.exportToSvg ? u.toSVG() : u.toDataURL({ multiplier: 2 });
|
|
938
943
|
e(t);
|
|
939
944
|
}, 200);
|
|
940
945
|
});
|
|
941
946
|
}
|
|
942
|
-
function
|
|
947
|
+
function Q() {
|
|
943
948
|
setTimeout(async () => {
|
|
944
949
|
const e = u.toDatalessJSON(["selectable", "assetType", "filename"]);
|
|
945
|
-
await
|
|
950
|
+
await Ce("fabric-canvas", JSON.stringify(e));
|
|
946
951
|
let t = !0;
|
|
947
|
-
if (
|
|
948
|
-
switch (t = !1,
|
|
952
|
+
if (v.required)
|
|
953
|
+
switch (t = !1, v.feature) {
|
|
949
954
|
case "overlay":
|
|
950
955
|
e.overlayImage && (t = !0);
|
|
951
956
|
break;
|
|
@@ -959,63 +964,64 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
959
964
|
(e.objects.length > 1 || e.backgroundImage || e.overlayImage) && (t = !0);
|
|
960
965
|
}
|
|
961
966
|
if (t) {
|
|
962
|
-
|
|
963
|
-
|
|
967
|
+
N = !0;
|
|
968
|
+
const C = await I();
|
|
969
|
+
d("update:modelValue", C), d("update:jsonModel", e);
|
|
964
970
|
}
|
|
965
971
|
}, 120);
|
|
966
972
|
}
|
|
967
|
-
async function
|
|
973
|
+
async function T(e) {
|
|
968
974
|
try {
|
|
969
975
|
return await c.fromURL(e);
|
|
970
976
|
} catch (t) {
|
|
971
977
|
throw console.error("Error loading image:", t), t;
|
|
972
978
|
}
|
|
973
979
|
}
|
|
974
|
-
async function
|
|
975
|
-
const { objects: t, options:
|
|
976
|
-
return g.groupSVGElements(t,
|
|
977
|
-
}
|
|
978
|
-
async function N(e) {
|
|
979
|
-
const { objects: t, options: b } = await w(e);
|
|
980
|
-
return g.groupSVGElements(t, b);
|
|
980
|
+
async function z(e) {
|
|
981
|
+
const { objects: t, options: C } = await i(e);
|
|
982
|
+
return g.groupSVGElements(t, C);
|
|
981
983
|
}
|
|
982
984
|
async function $(e) {
|
|
983
|
-
|
|
985
|
+
const { objects: t, options: C } = await y(e);
|
|
986
|
+
return g.groupSVGElements(t, C);
|
|
984
987
|
}
|
|
985
|
-
async function V(e
|
|
986
|
-
e &&
|
|
988
|
+
async function V(e) {
|
|
989
|
+
return e && typeof e == "string" && e.trim().startsWith("<") ? await $(e) : e && new RegExp(/([\w_/-]*\.svg$)|(image\/svg\+xml)/gi).test(e) ? await z(e) : await T(e);
|
|
987
990
|
}
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
}
|
|
991
|
-
|
|
991
|
+
async function x(e, t) {
|
|
992
|
+
e && !t && !N && dA({ src: e });
|
|
993
|
+
}
|
|
994
|
+
return Z(() => v.modelValue, async (e, t) => {
|
|
995
|
+
x(e, t);
|
|
996
|
+
}), wA(async () => {
|
|
997
|
+
({ Canvas: s, FabricImage: c, Control: o, util: g, loadSVGFromURL: i, loadSVGFromString: y, config: h, controlsUtils: k } = await import("fabric")), m.value = l.value.offsetWidth, S.value = l.value.offsetHeight, window.addEventListener("resize", sA), h.NUM_FRACTION_DIGITS = 8;
|
|
992
998
|
const e = s.prototype._onTouchStart;
|
|
993
999
|
s.prototype._onTouchStart = function(t) {
|
|
994
|
-
const
|
|
995
|
-
this.allowTouchScrolling &&
|
|
1000
|
+
const C = this.findTarget(t);
|
|
1001
|
+
this.allowTouchScrolling && C.assetType && !this.isDrawingMode || e.call(this, t);
|
|
996
1002
|
}, u = new s("fabricCanvas", {
|
|
997
1003
|
width: m.value,
|
|
998
|
-
height:
|
|
1004
|
+
height: S.value,
|
|
999
1005
|
// enableRetinaScaling: false,
|
|
1000
1006
|
skipOffscreen: !0,
|
|
1001
1007
|
// devicePixelRatio: 4,
|
|
1002
1008
|
allowTouchScrolling: !0
|
|
1003
1009
|
// backstoreOnly: true
|
|
1004
|
-
}),
|
|
1010
|
+
}), v.resetState && await be("fabric-canvas"), M.value = await pe("fabric-canvas"), M.value ? (await eA(u, M.value), u.requestRenderAll(), requestAnimationFrame(() => {
|
|
1005
1011
|
u.renderAll();
|
|
1006
|
-
})) :
|
|
1007
|
-
}), (e, t) => (f(),
|
|
1012
|
+
})) : v.modelValue && x(v.modelValue, ""), u.on("object:added", Q), u.on("object:removed", Q), u.on("object:modified", Q), p(), u.renderAll(), d("on-ready", u);
|
|
1013
|
+
}), (e, t) => (f(), w("div", {
|
|
1008
1014
|
class: "fabric-canvas",
|
|
1009
1015
|
ref_key: "root",
|
|
1010
1016
|
ref: l
|
|
1011
1017
|
}, [
|
|
1012
|
-
|
|
1013
|
-
|
|
1018
|
+
b("div", we, [
|
|
1019
|
+
b("canvas", Ie, null, 512)
|
|
1014
1020
|
]),
|
|
1015
|
-
|
|
1021
|
+
CA(e.$slots, "default")
|
|
1016
1022
|
], 512));
|
|
1017
1023
|
}
|
|
1018
|
-
}),
|
|
1024
|
+
}), Be = { class: "creative-booth" }, Ee = { class: "media-container" }, De = ["innerHTML"], Qe = { class: "creative-booth__thumbnails" }, ke = [
|
|
1019
1025
|
{
|
|
1020
1026
|
type: "background",
|
|
1021
1027
|
thumbnail: "/themes/corp/backgrounds/corporate-your-background-1024x1024.jpg",
|
|
@@ -1059,7 +1065,7 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1059
1065
|
mediaType: "svg",
|
|
1060
1066
|
filters: ["asset-01", "asset-02"]
|
|
1061
1067
|
}
|
|
1062
|
-
],
|
|
1068
|
+
], _e = /* @__PURE__ */ AA({
|
|
1063
1069
|
__name: "creative-booth",
|
|
1064
1070
|
props: {
|
|
1065
1071
|
modelValue: {
|
|
@@ -1091,7 +1097,7 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1091
1097
|
},
|
|
1092
1098
|
assets: {
|
|
1093
1099
|
type: Array,
|
|
1094
|
-
default: () =>
|
|
1100
|
+
default: () => ke
|
|
1095
1101
|
},
|
|
1096
1102
|
assetFilters: {
|
|
1097
1103
|
type: Array,
|
|
@@ -1132,10 +1138,10 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1132
1138
|
}
|
|
1133
1139
|
},
|
|
1134
1140
|
emits: ["update:modelValue", "update:jsonModel", "update:ready", "update:pending"],
|
|
1135
|
-
setup(A, { emit:
|
|
1136
|
-
const a = A, s =
|
|
1141
|
+
setup(A, { emit: r }) {
|
|
1142
|
+
const a = A, s = r, c = D(), o = D(), g = D(!1), i = F(
|
|
1137
1143
|
() => a.assetFilters && a.assetFilters.length > 0 ? a.assets.filter((l) => !l.filters || l.filters.length == 0 || a.assetFilters.some((m) => l.filters.includes(m))) : a.assets
|
|
1138
|
-
),
|
|
1144
|
+
), y = F({
|
|
1139
1145
|
get() {
|
|
1140
1146
|
return a.modelValue;
|
|
1141
1147
|
},
|
|
@@ -1149,7 +1155,7 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1149
1155
|
set(l) {
|
|
1150
1156
|
s("update:jsonModel", l);
|
|
1151
1157
|
}
|
|
1152
|
-
}),
|
|
1158
|
+
}), k = F({
|
|
1153
1159
|
get() {
|
|
1154
1160
|
return a.pending;
|
|
1155
1161
|
},
|
|
@@ -1175,41 +1181,41 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1175
1181
|
}
|
|
1176
1182
|
}
|
|
1177
1183
|
}
|
|
1178
|
-
const
|
|
1184
|
+
const v = (async () => {
|
|
1179
1185
|
if (g.value = !0, a.autoSelect !== void 0) {
|
|
1180
1186
|
const l = a.autoSelect >= 0 ? a.autoSelect : Math.floor(Math.random() * i.value.length);
|
|
1181
1187
|
d(l);
|
|
1182
1188
|
}
|
|
1183
1189
|
s("update:ready", !0);
|
|
1184
1190
|
});
|
|
1185
|
-
return (l, m) => (f(),
|
|
1186
|
-
|
|
1187
|
-
L(
|
|
1188
|
-
modelValue:
|
|
1189
|
-
"onUpdate:modelValue": m[0] || (m[0] = (
|
|
1191
|
+
return (l, m) => (f(), w("div", Be, [
|
|
1192
|
+
b("div", Ee, [
|
|
1193
|
+
L(he, {
|
|
1194
|
+
modelValue: y.value,
|
|
1195
|
+
"onUpdate:modelValue": m[0] || (m[0] = (S) => y.value = S),
|
|
1190
1196
|
"json-model": h.value,
|
|
1191
|
-
"onUpdate:jsonModel": m[1] || (m[1] = (
|
|
1192
|
-
pending:
|
|
1193
|
-
"onUpdate:pending": m[2] || (m[2] = (
|
|
1197
|
+
"onUpdate:jsonModel": m[1] || (m[1] = (S) => h.value = S),
|
|
1198
|
+
pending: k.value,
|
|
1199
|
+
"onUpdate:pending": m[2] || (m[2] = (S) => k.value = S),
|
|
1194
1200
|
ref_key: "canvas",
|
|
1195
1201
|
ref: c,
|
|
1196
1202
|
"reset-state": A.resetState,
|
|
1197
1203
|
options: { themeData: A.themeData },
|
|
1198
1204
|
feature: A.feature,
|
|
1199
1205
|
required: A.required,
|
|
1200
|
-
class:
|
|
1201
|
-
onOnReady:
|
|
1206
|
+
class: Y(`${A.ratio ? `aspect-ratio aspect-ratio--${A.ratio}` : ""}`),
|
|
1207
|
+
onOnReady: v,
|
|
1202
1208
|
"emit-pending": A.emitPending,
|
|
1203
1209
|
"animation-duration": A.animationDuration
|
|
1204
1210
|
}, null, 8, ["modelValue", "json-model", "pending", "reset-state", "options", "feature", "required", "class", "emit-pending", "animation-duration"])
|
|
1205
1211
|
]),
|
|
1206
|
-
A.messages.headline ? (f(),
|
|
1212
|
+
A.messages.headline ? (f(), w("p", {
|
|
1207
1213
|
key: 0,
|
|
1208
1214
|
class: "headline",
|
|
1209
1215
|
innerHTML: A.messages.headline
|
|
1210
|
-
}, null, 8,
|
|
1211
|
-
|
|
1212
|
-
g.value ? (f(), R(B(
|
|
1216
|
+
}, null, 8, De)) : E("", !0),
|
|
1217
|
+
b("div", Qe, [
|
|
1218
|
+
g.value ? (f(), R(B(EA), {
|
|
1213
1219
|
key: 0,
|
|
1214
1220
|
assets: i.value,
|
|
1215
1221
|
onSelect: d
|
|
@@ -1217,7 +1223,7 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1217
1223
|
])
|
|
1218
1224
|
]));
|
|
1219
1225
|
}
|
|
1220
|
-
}),
|
|
1226
|
+
}), Se = { class: "face-swap" }, Me = { class: "position-relative" }, Pe = ["innerHTML"], Ue = { class: "face-swap__thumbnails" }, Oe = [
|
|
1221
1227
|
{
|
|
1222
1228
|
type: "target",
|
|
1223
1229
|
thumbnail: "/faceswap/robotroll._avengers_black_widow_fbe3e886-525d-4c8b-b46c-b32856fae2bf.png",
|
|
@@ -1323,7 +1329,7 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1323
1329
|
mediaType: "image",
|
|
1324
1330
|
filters: []
|
|
1325
1331
|
}
|
|
1326
|
-
],
|
|
1332
|
+
], Ge = /* @__PURE__ */ AA({
|
|
1327
1333
|
__name: "face-swap",
|
|
1328
1334
|
props: {
|
|
1329
1335
|
modelValue: {
|
|
@@ -1343,7 +1349,7 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1343
1349
|
},
|
|
1344
1350
|
assets: {
|
|
1345
1351
|
type: Array,
|
|
1346
|
-
default: () =>
|
|
1352
|
+
default: () => Oe
|
|
1347
1353
|
},
|
|
1348
1354
|
resetState: {
|
|
1349
1355
|
type: Boolean,
|
|
@@ -1360,8 +1366,8 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1360
1366
|
autoSelect: Number
|
|
1361
1367
|
},
|
|
1362
1368
|
emits: ["update:modelValue"],
|
|
1363
|
-
setup(A, { emit:
|
|
1364
|
-
const a = A, s =
|
|
1369
|
+
setup(A, { emit: r }) {
|
|
1370
|
+
const a = A, s = r, c = D(), o = D(), g = D(), i = D(!1);
|
|
1365
1371
|
F({
|
|
1366
1372
|
get() {
|
|
1367
1373
|
return a.modelValue;
|
|
@@ -1370,73 +1376,73 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1370
1376
|
s("update:modelValue", d);
|
|
1371
1377
|
}
|
|
1372
1378
|
});
|
|
1373
|
-
const
|
|
1374
|
-
Z(g, async (d,
|
|
1375
|
-
d && d !==
|
|
1379
|
+
const y = F(() => g.value || c.value && c.value.src || o.value);
|
|
1380
|
+
Z(g, async (d, v) => {
|
|
1381
|
+
d && d !== v && s("update:modelValue", d);
|
|
1376
1382
|
}, { deep: !0 });
|
|
1377
1383
|
function h(d) {
|
|
1378
1384
|
if (typeof d < "u") {
|
|
1379
|
-
const
|
|
1380
|
-
c.value =
|
|
1385
|
+
const v = a.assets[d];
|
|
1386
|
+
c.value = v, g.value = null;
|
|
1381
1387
|
}
|
|
1382
1388
|
}
|
|
1383
|
-
async function
|
|
1384
|
-
const d = await
|
|
1389
|
+
async function k() {
|
|
1390
|
+
const d = await FA(c.value.src), l = { dataUrl: a.modelValue, targetDataUrl: d };
|
|
1385
1391
|
i.value = !0;
|
|
1386
|
-
const m =
|
|
1392
|
+
const m = DA;
|
|
1387
1393
|
g.value = await m.processImage(
|
|
1388
1394
|
a.endpoint,
|
|
1389
1395
|
l,
|
|
1390
1396
|
""
|
|
1391
1397
|
), i.value = !1;
|
|
1392
1398
|
}
|
|
1393
|
-
return
|
|
1399
|
+
return hA(() => {
|
|
1394
1400
|
o.value = a.modelValue;
|
|
1395
|
-
}), (d,
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
class:
|
|
1401
|
+
}), (d, v) => (f(), w("div", Se, [
|
|
1402
|
+
b("div", Me, [
|
|
1403
|
+
b("div", {
|
|
1404
|
+
class: Y(["media-container", `${A.ratio ? `ratio ratio-${A.ratio}` : ""}`])
|
|
1399
1405
|
}, [
|
|
1400
|
-
L(
|
|
1406
|
+
L(IA, {
|
|
1401
1407
|
name: "fade",
|
|
1402
1408
|
mode: "out-in"
|
|
1403
1409
|
}, {
|
|
1404
1410
|
default: G(() => [
|
|
1405
|
-
(f(),
|
|
1406
|
-
L(B(
|
|
1411
|
+
(f(), w("div", { key: y.value }, [
|
|
1412
|
+
L(B(bA), { src: y.value }, null, 8, ["src"])
|
|
1407
1413
|
]))
|
|
1408
1414
|
]),
|
|
1409
1415
|
_: 1
|
|
1410
1416
|
})
|
|
1411
1417
|
], 2),
|
|
1412
|
-
c.value ? (f(),
|
|
1418
|
+
c.value ? (f(), w("button", {
|
|
1413
1419
|
key: 0,
|
|
1414
1420
|
type: "button",
|
|
1415
1421
|
class: "btn face-swap__swap-face",
|
|
1416
|
-
onClick:
|
|
1422
|
+
onClick: k
|
|
1417
1423
|
}, [
|
|
1418
|
-
o.value && !g.value && !i.value ? (f(), R(B(
|
|
1424
|
+
o.value && !g.value && !i.value ? (f(), R(B(bA), {
|
|
1419
1425
|
key: 0,
|
|
1420
1426
|
src: o.value,
|
|
1421
1427
|
class: "img-thumbnail"
|
|
1422
1428
|
}, null, 8, ["src"])) : E("", !0)
|
|
1423
1429
|
])) : E("", !0),
|
|
1424
|
-
i.value ? (f(), R(B(
|
|
1430
|
+
i.value ? (f(), R(B(BA), { key: 1 })) : E("", !0)
|
|
1425
1431
|
]),
|
|
1426
|
-
A.messages.headline ? (f(),
|
|
1432
|
+
A.messages.headline ? (f(), w("p", {
|
|
1427
1433
|
key: 0,
|
|
1428
1434
|
class: "headline",
|
|
1429
1435
|
innerHTML: A.messages.headline
|
|
1430
|
-
}, null, 8,
|
|
1431
|
-
|
|
1432
|
-
L(B(
|
|
1436
|
+
}, null, 8, Pe)) : E("", !0),
|
|
1437
|
+
b("div", Ue, [
|
|
1438
|
+
L(B(EA), {
|
|
1433
1439
|
assets: A.assets,
|
|
1434
1440
|
onSelect: h
|
|
1435
1441
|
}, null, 8, ["assets"])
|
|
1436
1442
|
])
|
|
1437
1443
|
]));
|
|
1438
1444
|
}
|
|
1439
|
-
}),
|
|
1445
|
+
}), je = ["innerHTML"], Le = /* @__PURE__ */ AA({
|
|
1440
1446
|
__name: "svg-canvas",
|
|
1441
1447
|
props: {
|
|
1442
1448
|
modelValue: {
|
|
@@ -1451,35 +1457,35 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1451
1457
|
groupedFill: Boolean
|
|
1452
1458
|
},
|
|
1453
1459
|
emits: ["update:modelValue"],
|
|
1454
|
-
setup(A, { emit:
|
|
1455
|
-
const a = A, s =
|
|
1460
|
+
setup(A, { emit: r }) {
|
|
1461
|
+
const a = A, s = r, c = D();
|
|
1456
1462
|
function o(g) {
|
|
1457
1463
|
const i = g.target;
|
|
1458
1464
|
if (!i.closest(".read-only")) {
|
|
1459
1465
|
if (a.groupedFill && a.fillColor) {
|
|
1460
|
-
const
|
|
1466
|
+
const v = i.closest("[data-group-class]").dataset.groupClass, l = i.closest("svg")?.querySelectorAll(`.${v}`);
|
|
1461
1467
|
l && Array.from(l).forEach((m) => {
|
|
1462
1468
|
m.setAttribute("fill", a.fillColor), m.setAttribute("fill-opacity", "1");
|
|
1463
1469
|
});
|
|
1464
1470
|
} else a.fillColor && (i.setAttribute("fill", a.fillColor), i.setAttribute("fill-opacity", "1"));
|
|
1465
|
-
const
|
|
1466
|
-
s("update:modelValue",
|
|
1471
|
+
const k = i.closest(".svg-canvas").querySelector("svg").outerHTML;
|
|
1472
|
+
s("update:modelValue", k);
|
|
1467
1473
|
}
|
|
1468
1474
|
}
|
|
1469
|
-
return (g, i) => (f(),
|
|
1470
|
-
class:
|
|
1475
|
+
return (g, i) => (f(), w("div", {
|
|
1476
|
+
class: Y(["svg-canvas", `${A.scale > 1 ? "overflow-scroll" : ""}`])
|
|
1471
1477
|
}, [
|
|
1472
|
-
|
|
1478
|
+
b("div", {
|
|
1473
1479
|
ref_key: "svg",
|
|
1474
1480
|
ref: c,
|
|
1475
1481
|
class: "svg-wrapper",
|
|
1476
1482
|
innerHTML: A.modelValue,
|
|
1477
1483
|
style: _({ transform: `scale(${A.scale})` }),
|
|
1478
|
-
onClick: i[0] || (i[0] = (
|
|
1479
|
-
}, null, 12,
|
|
1484
|
+
onClick: i[0] || (i[0] = (y) => o(y))
|
|
1485
|
+
}, null, 12, je)
|
|
1480
1486
|
], 2));
|
|
1481
1487
|
}
|
|
1482
|
-
}),
|
|
1488
|
+
}), Te = { class: "svg-editor" }, Fe = { class: "svg-editor__frame" }, ze = /* @__PURE__ */ AA({
|
|
1483
1489
|
__name: "color-booth",
|
|
1484
1490
|
props: {
|
|
1485
1491
|
modelValue: String,
|
|
@@ -1490,8 +1496,8 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1490
1496
|
groupedFill: Boolean
|
|
1491
1497
|
},
|
|
1492
1498
|
emits: ["update:modelValue"],
|
|
1493
|
-
setup(A, { emit:
|
|
1494
|
-
const a = A, s =
|
|
1499
|
+
setup(A, { emit: r }) {
|
|
1500
|
+
const a = A, s = r, c = D(""), o = D(1), g = F({
|
|
1495
1501
|
get() {
|
|
1496
1502
|
return a.modelValue;
|
|
1497
1503
|
},
|
|
@@ -1499,18 +1505,18 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1499
1505
|
s("update:modelValue", i);
|
|
1500
1506
|
}
|
|
1501
1507
|
});
|
|
1502
|
-
return
|
|
1508
|
+
return hA(() => {
|
|
1503
1509
|
c.value = a.colors?.length ? a.colors[0] : "";
|
|
1504
|
-
}), (i,
|
|
1505
|
-
|
|
1506
|
-
L(B(
|
|
1510
|
+
}), (i, y) => (f(), w("div", Te, [
|
|
1511
|
+
b("div", Fe, [
|
|
1512
|
+
L(B(OA), {
|
|
1507
1513
|
modelValue: o.value,
|
|
1508
|
-
"onUpdate:modelValue":
|
|
1514
|
+
"onUpdate:modelValue": y[1] || (y[1] = (h) => o.value = h)
|
|
1509
1515
|
}, {
|
|
1510
1516
|
default: G(() => [
|
|
1511
|
-
L(
|
|
1517
|
+
L(Le, {
|
|
1512
1518
|
modelValue: g.value,
|
|
1513
|
-
"onUpdate:modelValue":
|
|
1519
|
+
"onUpdate:modelValue": y[0] || (y[0] = (h) => g.value = h),
|
|
1514
1520
|
fillColor: c.value,
|
|
1515
1521
|
scale: o.value,
|
|
1516
1522
|
"grouped-fill": A.groupedFill
|
|
@@ -1518,9 +1524,9 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1518
1524
|
]),
|
|
1519
1525
|
_: 1
|
|
1520
1526
|
}, 8, ["modelValue"]),
|
|
1521
|
-
L(B(
|
|
1527
|
+
L(B(jA), {
|
|
1522
1528
|
modelValue: c.value,
|
|
1523
|
-
"onUpdate:modelValue":
|
|
1529
|
+
"onUpdate:modelValue": y[2] || (y[2] = (h) => c.value = h),
|
|
1524
1530
|
colors: A.colors,
|
|
1525
1531
|
class: "mt-2"
|
|
1526
1532
|
}, null, 8, ["modelValue", "colors"])
|
|
@@ -1529,9 +1535,9 @@ const be = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20wid
|
|
|
1529
1535
|
}
|
|
1530
1536
|
});
|
|
1531
1537
|
export {
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1538
|
+
ze as ColorBooth,
|
|
1539
|
+
_e as CreativeBooth,
|
|
1540
|
+
he as FabricCanvas,
|
|
1541
|
+
Ge as FaceSwap,
|
|
1542
|
+
xe as PhotoApp
|
|
1537
1543
|
};
|