ablok-components 0.3.120 → 0.3.122
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.
|
@@ -5,25 +5,25 @@ import r from "../input-dropdown/input-dropdown.js";
|
|
|
5
5
|
import { useCameraFilter as i } from "../../../composables/useCameraFilter.js";
|
|
6
6
|
import a from "../../atoms/zoom-slider/zoom-slider.js";
|
|
7
7
|
import o from "../../../assets/img/guide.js";
|
|
8
|
-
import { computed as s, createBlock as c, createCommentVNode as l, createElementBlock as u, createElementVNode as d, createVNode as f, defineComponent as p, nextTick as ee, normalizeClass as m, normalizeStyle as
|
|
9
|
-
import
|
|
8
|
+
import { computed as s, createBlock as c, createCommentVNode as l, createElementBlock as u, createElementVNode as d, createVNode as f, defineComponent as p, nextTick as ee, normalizeClass as m, normalizeStyle as te, onBeforeUnmount as ne, onMounted as re, openBlock as h, ref as g, toDisplayString as _, vShow as ie, watch as ae, withCtx as oe, withDirectives as se, withModifiers as ce } from "vue";
|
|
9
|
+
import le from "lodash";
|
|
10
10
|
//#region src/components/molecules/base-camera/base-camera.vue?vue&type=script&async=true&setup=true&lang.ts
|
|
11
|
-
var
|
|
11
|
+
var ue = { class: "camera__preview" }, de = {
|
|
12
12
|
key: 0,
|
|
13
13
|
class: "camera__bg-notification"
|
|
14
|
-
},
|
|
14
|
+
}, fe = ["innerHTML"], pe = ["width", "height"], me = {
|
|
15
15
|
key: 1,
|
|
16
16
|
class: "camera__countdown-overlay"
|
|
17
|
-
},
|
|
17
|
+
}, he = ["innerHTML", "data-countdown"], ge = ["src"], _e = {
|
|
18
18
|
key: 3,
|
|
19
19
|
class: "camera__zoom-slider"
|
|
20
|
-
},
|
|
20
|
+
}, ve = { class: "camera__controls" }, ye = { class: "container" }, be = { class: "row" }, xe = { class: "col" }, Se = { class: "btn-group" }, Ce = { key: 0 }, we = { key: 1 }, Te = {
|
|
21
21
|
key: 0,
|
|
22
22
|
class: "camera__select-device"
|
|
23
|
-
},
|
|
23
|
+
}, Ee = { class: "col" }, De = { class: "" }, Oe = {
|
|
24
24
|
name: "BaseCamera",
|
|
25
25
|
inheritAttrs: !1
|
|
26
|
-
},
|
|
26
|
+
}, ke = {
|
|
27
27
|
"1x1": {
|
|
28
28
|
width: 720,
|
|
29
29
|
height: 720
|
|
@@ -60,8 +60,8 @@ var le = { class: "camera__preview" }, ue = {
|
|
|
60
60
|
width: 720,
|
|
61
61
|
height: 1280
|
|
62
62
|
}
|
|
63
|
-
},
|
|
64
|
-
...
|
|
63
|
+
}, Ae = /*@__PURE__*/ p({
|
|
64
|
+
...Oe,
|
|
65
65
|
props: {
|
|
66
66
|
modelValue: { type: null },
|
|
67
67
|
enableSwitchCamera: {
|
|
@@ -123,7 +123,7 @@ var le = { class: "camera__preview" }, ue = {
|
|
|
123
123
|
},
|
|
124
124
|
resolutions: {
|
|
125
125
|
type: Object,
|
|
126
|
-
default: () =>
|
|
126
|
+
default: () => ke
|
|
127
127
|
},
|
|
128
128
|
zoom: {
|
|
129
129
|
type: Number,
|
|
@@ -139,113 +139,116 @@ var le = { class: "camera__preview" }, ue = {
|
|
|
139
139
|
}
|
|
140
140
|
},
|
|
141
141
|
emits: ["update:modelValue"],
|
|
142
|
-
setup(o, { expose: p, emit:
|
|
143
|
-
let { debounce:
|
|
144
|
-
|
|
145
|
-
|
|
142
|
+
setup(o, { expose: p, emit: Oe }) {
|
|
143
|
+
let { debounce: Ae } = le, v = o, je = Oe, y = g(), b = g(), Me = g(!1), x = g([]), S = g(), C = g(), w = g(), T = g(), E = g(), D = g(!1), O = g(!1), k = g(0), A = g(0), j = g(), M = g(v.zoom || 1), Ne = g(!1), N = g(!1), Pe = g(null), Fe = g(!1), P, F, Ie = typeof window < "u" && "DeviceMotionEvent" in window && (window.matchMedia?.("(pointer: coarse)")?.matches || "ontouchstart" in window), Le = s(() => v.correctOrientation && Ie), I = s(() => Me.value && (!Le.value || Fe.value));
|
|
144
|
+
ae(I, (e) => {
|
|
145
|
+
e && Z(J);
|
|
146
|
+
}, { flush: "post" });
|
|
147
|
+
function Re() {
|
|
148
|
+
F &&= (window.removeEventListener("pointerdown", F, !0), window.removeEventListener("touchend", F, !0), void 0);
|
|
146
149
|
}
|
|
147
|
-
function
|
|
148
|
-
|
|
150
|
+
function L() {
|
|
151
|
+
Fe.value = !0, P &&= (clearTimeout(P), void 0), Re();
|
|
149
152
|
}
|
|
150
|
-
function
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}, window.addEventListener("pointerdown",
|
|
153
|
+
function ze() {
|
|
154
|
+
F || (F = () => {
|
|
155
|
+
R();
|
|
156
|
+
}, window.addEventListener("pointerdown", F, !0), window.addEventListener("touchend", F, !0));
|
|
154
157
|
}
|
|
155
|
-
function
|
|
158
|
+
function Be(e) {
|
|
156
159
|
let t = e.accelerationIncludingGravity;
|
|
157
160
|
if (!t || t.x == null || t.y == null) return;
|
|
158
161
|
let n = Math.round(Math.atan2(t.x, t.y) * 180 / Math.PI);
|
|
159
|
-
if (
|
|
162
|
+
if (Pe.value = n, !(typeof screen < "u" && screen.orientation && screen.orientation.type || "portrait-primary").startsWith("portrait")) N.value = !1;
|
|
160
163
|
else {
|
|
161
164
|
let e = Math.abs(Math.abs(n) - 90);
|
|
162
165
|
!N.value && e < 40 ? N.value = !0 : N.value && e > 50 && (N.value = !1);
|
|
163
166
|
}
|
|
164
|
-
|
|
167
|
+
Fe.value || L();
|
|
165
168
|
}
|
|
166
|
-
async function
|
|
167
|
-
if (!(!
|
|
169
|
+
async function R() {
|
|
170
|
+
if (!(!v.correctOrientation || Ne.value)) try {
|
|
168
171
|
let e = window.DeviceOrientationEvent, t = window.DeviceMotionEvent;
|
|
169
172
|
if (e && typeof e.requestPermission == "function" && await e.requestPermission() !== "granted") {
|
|
170
|
-
|
|
173
|
+
L();
|
|
171
174
|
return;
|
|
172
175
|
}
|
|
173
|
-
t && typeof t.requestPermission == "function" && await t.requestPermission().catch(() => {}), window.addEventListener("devicemotion",
|
|
176
|
+
t && typeof t.requestPermission == "function" && await t.requestPermission().catch(() => {}), window.addEventListener("devicemotion", Be, !0), Ne.value = !0, Re();
|
|
174
177
|
} catch (e) {
|
|
175
|
-
console.error(e, "enableMotion: failed"),
|
|
178
|
+
console.error(e, "enableMotion: failed"), L();
|
|
176
179
|
}
|
|
177
180
|
}
|
|
178
|
-
let
|
|
179
|
-
...
|
|
180
|
-
...
|
|
181
|
-
})),
|
|
182
|
-
function
|
|
181
|
+
let z = s(() => ({
|
|
182
|
+
...ke,
|
|
183
|
+
...v.resolutions
|
|
184
|
+
})), Ve = s(() => Object.values(z.value)[0]);
|
|
185
|
+
function He(e) {
|
|
183
186
|
return String(e || "").trim().toLowerCase().replace(/\s+/g, "").replace(/[:/]/g, "x");
|
|
184
187
|
}
|
|
185
|
-
let
|
|
186
|
-
if (
|
|
187
|
-
let e =
|
|
188
|
-
if (
|
|
189
|
-
}),
|
|
190
|
-
let e =
|
|
188
|
+
let B = s(() => {
|
|
189
|
+
if (z.value[v.ratio]) return v.ratio;
|
|
190
|
+
let e = He(v.ratio);
|
|
191
|
+
if (z.value[e]) return e;
|
|
192
|
+
}), V = s(() => B.value ? z.value[B.value] : Ve.value), Ue = s(() => {
|
|
193
|
+
let e = B.value ? z.value[B.value] : void 0;
|
|
191
194
|
return e ? `${e.width} / ${e.height}` : void 0;
|
|
192
|
-
}),
|
|
193
|
-
function
|
|
194
|
-
e && !
|
|
195
|
+
}), H = s(() => x.value.filter((e) => e.kind === "videoinput")), We = s(() => x.value.filter((e) => e.kind === "audioinput")), U = g([]), W = s(() => H.value.filter((e) => !U.value.includes(e.deviceId)));
|
|
196
|
+
function Ge(e) {
|
|
197
|
+
e && !U.value.includes(e) && (U.value = [...U.value, e]);
|
|
195
198
|
}
|
|
196
|
-
function
|
|
197
|
-
let t =
|
|
199
|
+
function Ke(e) {
|
|
200
|
+
let t = H.value;
|
|
198
201
|
if (!t.length) return;
|
|
199
202
|
let n = t.findIndex((t) => t.deviceId === e);
|
|
200
203
|
for (let e = 1; e <= t.length; e++) {
|
|
201
204
|
let r = t[(Math.max(n, 0) + e) % t.length];
|
|
202
|
-
if (r && !
|
|
205
|
+
if (r && !U.value.includes(r.deviceId)) return r;
|
|
203
206
|
}
|
|
204
207
|
}
|
|
205
|
-
let
|
|
208
|
+
let qe = s(() => W.value.map((e, t) => ({
|
|
206
209
|
text: e.label.slice(0, e.label.indexOf("(")) || `Camera ${t + 1}`,
|
|
207
210
|
value: e.deviceId
|
|
208
|
-
}))),
|
|
211
|
+
}))), Je = s({
|
|
209
212
|
get() {
|
|
210
|
-
return
|
|
213
|
+
return S.value && S.value.deviceId;
|
|
211
214
|
},
|
|
212
215
|
set(e) {
|
|
213
|
-
|
|
216
|
+
S.value = H.value.find((t) => t.deviceId === e), w.value = void 0;
|
|
214
217
|
}
|
|
215
218
|
});
|
|
216
219
|
s({
|
|
217
220
|
get() {
|
|
218
|
-
return
|
|
221
|
+
return C.value && C.value.deviceId;
|
|
219
222
|
},
|
|
220
223
|
set(e) {
|
|
221
|
-
|
|
224
|
+
C.value = We.value.find((t) => t.deviceId === e);
|
|
222
225
|
}
|
|
223
226
|
});
|
|
224
|
-
let
|
|
225
|
-
let e =
|
|
226
|
-
return
|
|
227
|
-
}), { tintRgb:
|
|
228
|
-
function
|
|
229
|
-
if (
|
|
230
|
-
k.value =
|
|
227
|
+
let G = s(() => v.enableMirrorCamera ? T.value ? T.value === "user" ? "mirror-cam" : "" : w.value ? w.value === "user" ? "mirror-cam" : "" : (S.value && H.value.findIndex((e) => e.deviceId === S.value?.deviceId)) === 0 ? "mirror-cam" : "" : ""), Ye = s(() => {
|
|
228
|
+
let e = S.value && x.value.findIndex((e) => e.deviceId === S.value?.deviceId);
|
|
229
|
+
return G.value ? `${G.value} mirror-device-${e}` : "";
|
|
230
|
+
}), { tintRgb: Xe, applyFilterToCanvas: Ze } = i(v);
|
|
231
|
+
function Qe() {
|
|
232
|
+
if (B.value && V.value) {
|
|
233
|
+
k.value = V.value.width, A.value = V.value.height;
|
|
231
234
|
return;
|
|
232
235
|
}
|
|
233
|
-
k.value =
|
|
236
|
+
k.value = y.value.parentElement && y.value.parentElement.clientWidth, A.value = y.value.parentElement && y.value.parentElement.clientHeight;
|
|
234
237
|
}
|
|
235
|
-
let
|
|
236
|
-
|
|
238
|
+
let $e = Ae(() => {
|
|
239
|
+
Qe();
|
|
237
240
|
}, 300, {
|
|
238
241
|
trailing: !0,
|
|
239
242
|
leading: !1
|
|
240
243
|
});
|
|
241
|
-
function
|
|
244
|
+
function K(e) {
|
|
242
245
|
return new Promise((t) => setTimeout(t, e));
|
|
243
246
|
}
|
|
244
|
-
async function
|
|
245
|
-
let e =
|
|
246
|
-
width:
|
|
247
|
-
height:
|
|
248
|
-
} : void 0, t = e ? Math.max(e.width, e.height) : void 0, n = e ? Math.min(e.width, e.height) : void 0, r =
|
|
247
|
+
async function et() {
|
|
248
|
+
let e = V.value ? {
|
|
249
|
+
width: V.value.width,
|
|
250
|
+
height: V.value.height
|
|
251
|
+
} : void 0, t = e ? Math.max(e.width, e.height) : void 0, n = e ? Math.min(e.width, e.height) : void 0, r = v.enableAudio && { ...C.value ? { deviceId: C.value.deviceId } : {} }, i = S.value && S.value.deviceId, a = w.value, o = [];
|
|
249
252
|
i ? (t && n && o.push({
|
|
250
253
|
deviceId: { exact: i },
|
|
251
254
|
width: { ideal: t },
|
|
@@ -269,233 +272,266 @@ var le = { class: "camera__preview" }, ue = {
|
|
|
269
272
|
} catch (e) {
|
|
270
273
|
let t = e && e.name;
|
|
271
274
|
if (t === "NotReadableError" || t === "AbortError") {
|
|
272
|
-
await
|
|
275
|
+
await K(500);
|
|
273
276
|
continue;
|
|
274
277
|
}
|
|
275
278
|
break;
|
|
276
279
|
}
|
|
277
280
|
}
|
|
278
|
-
function
|
|
279
|
-
|
|
281
|
+
function q() {
|
|
282
|
+
y.value && y.value.srcObject && (y.value.srcObject.getTracks().forEach((e) => {
|
|
280
283
|
e.stop();
|
|
281
|
-
}),
|
|
284
|
+
}), y.value.srcObject = null);
|
|
282
285
|
}
|
|
283
|
-
let
|
|
284
|
-
function
|
|
285
|
-
|
|
286
|
+
let J = 0, Y, tt;
|
|
287
|
+
function X() {
|
|
288
|
+
Y &&= (clearTimeout(Y), void 0), tt &&= (tt(), void 0);
|
|
286
289
|
}
|
|
287
|
-
function
|
|
288
|
-
|
|
289
|
-
let t =
|
|
290
|
-
t && t.deviceId !== e && (
|
|
290
|
+
function nt(e) {
|
|
291
|
+
Ge(e);
|
|
292
|
+
let t = Ke(e);
|
|
293
|
+
t && t.deviceId !== e && (S.value = t);
|
|
291
294
|
}
|
|
292
|
-
function
|
|
293
|
-
|
|
294
|
-
let t =
|
|
295
|
+
function rt(e) {
|
|
296
|
+
X();
|
|
297
|
+
let t = S.value && S.value.deviceId, n = y.value;
|
|
295
298
|
if (!t || !n) return;
|
|
296
299
|
let r = n.srcObject && n.srcObject.getVideoTracks?.()[0];
|
|
297
300
|
if (!r || typeof r.addEventListener != "function" || n.videoWidth > 0) return;
|
|
298
301
|
let i = () => {
|
|
299
|
-
if (
|
|
300
|
-
let n =
|
|
301
|
-
n && n.deviceId !== t && (
|
|
302
|
+
if (X(), e !== J || !y.value) return;
|
|
303
|
+
let n = Ke(t);
|
|
304
|
+
n && n.deviceId !== t && (q(), nt(t));
|
|
302
305
|
}, a = () => {
|
|
303
|
-
e ===
|
|
306
|
+
e === J && y.value && y.value.videoWidth > 0 && X();
|
|
304
307
|
}, o = () => {
|
|
305
308
|
i();
|
|
306
309
|
};
|
|
307
|
-
r.addEventListener("unmute", a), r.addEventListener("ended", o),
|
|
310
|
+
r.addEventListener("unmute", a), r.addEventListener("ended", o), tt = () => {
|
|
308
311
|
r.removeEventListener("unmute", a), r.removeEventListener("ended", o);
|
|
309
|
-
},
|
|
310
|
-
|
|
312
|
+
}, Y = setTimeout(() => {
|
|
313
|
+
Y = void 0, !(e !== J || !y.value) && (y.value.videoWidth === 0 ? i() : X());
|
|
311
314
|
}, 8e3);
|
|
312
315
|
}
|
|
313
|
-
let
|
|
314
|
-
async function
|
|
315
|
-
let
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
316
|
+
let it = 0;
|
|
317
|
+
async function Z(e) {
|
|
318
|
+
for (let t = 0; t < 3; t++) {
|
|
319
|
+
if (e !== J || !y.value) return;
|
|
320
|
+
try {
|
|
321
|
+
await y.value.play?.();
|
|
322
|
+
return;
|
|
323
|
+
} catch {
|
|
324
|
+
t < 2 && await K(300);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
function at() {
|
|
329
|
+
return !!(y.value && y.value.videoWidth > 0);
|
|
330
|
+
}
|
|
331
|
+
function Q(e, t) {
|
|
332
|
+
return new Promise((n) => {
|
|
333
|
+
let r = Date.now(), i = () => {
|
|
334
|
+
if (e !== J || !y.value) return n(!1);
|
|
335
|
+
if (at()) return n(!0);
|
|
336
|
+
if (Date.now() - r >= t) return n(!1);
|
|
337
|
+
setTimeout(i, 100);
|
|
338
|
+
};
|
|
339
|
+
i();
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
async function ot(e) {
|
|
343
|
+
if (typeof (y.value?.srcObject)?.getVideoTracks?.()[0]?.addEventListener != "function" || await Q(e, 800) || e !== J || !y.value || (await Z(e), await Q(e, 800)) || e !== J || !y.value) return;
|
|
344
|
+
let t = y.value, n = t.style.display;
|
|
345
|
+
if (t.style.display = "none", t.offsetHeight, t.style.display = n, await Z(e), await Q(e, 800) || e !== J || !y.value) return;
|
|
346
|
+
let r = y.value.srcObject;
|
|
347
|
+
r && (y.value.srcObject = null, await ee(), e !== J || !y.value || (y.value.srcObject = r, await Z(e), await Q(e, 800))) || e === J && await $();
|
|
348
|
+
}
|
|
349
|
+
function st() {
|
|
350
|
+
document.visibilityState !== "visible" || !D.value || !y.value || (y.value.paused || y.value.videoWidth === 0) && Z(J);
|
|
351
|
+
}
|
|
352
|
+
async function $() {
|
|
353
|
+
let e = ++J;
|
|
354
|
+
X();
|
|
355
|
+
let t = !!(y.value && y.value.srcObject);
|
|
356
|
+
if (q(), E.value = void 0, t && (await K(350), e !== J)) return;
|
|
357
|
+
let n = await et();
|
|
358
|
+
if (e !== J) {
|
|
321
359
|
n?.getTracks?.().forEach((e) => e.stop());
|
|
322
360
|
return;
|
|
323
361
|
}
|
|
324
|
-
if (n &&
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
} else if (!n && C.value) {
|
|
331
|
-
nt < 2 && (nt++, await Ze(600), e === Y && await Q());
|
|
362
|
+
if (n && y.value) {
|
|
363
|
+
it = 0, y.value.srcObject = n;
|
|
364
|
+
let t = n.getVideoTracks?.()[0]?.getSettings?.();
|
|
365
|
+
T.value = t?.facingMode, E.value = t?.deviceId, y.value.muted = !0, await Z(e), rt(e), ot(e);
|
|
366
|
+
} else if (!n && S.value) {
|
|
367
|
+
it < 2 && (it++, await K(600), e === J && await $());
|
|
332
368
|
return;
|
|
333
369
|
}
|
|
334
|
-
return
|
|
335
|
-
stream:
|
|
336
|
-
devices:
|
|
370
|
+
return x.value = await navigator.mediaDevices.enumerateDevices(), {
|
|
371
|
+
stream: y.value && y.value.srcObject,
|
|
372
|
+
devices: x.value
|
|
337
373
|
};
|
|
338
374
|
}
|
|
339
|
-
function
|
|
340
|
-
D.value ? (D.value = !1, O.value = !1,
|
|
375
|
+
function ct() {
|
|
376
|
+
D.value ? (D.value = !1, O.value = !1, q()) : (D.value = !0, $());
|
|
341
377
|
}
|
|
342
|
-
function
|
|
343
|
-
|
|
378
|
+
function lt() {
|
|
379
|
+
S.value = void 0, w.value = w.value === "user" ? "environment" : "user", $();
|
|
344
380
|
}
|
|
345
|
-
async function
|
|
346
|
-
e && (!t || e.deviceId !== t.deviceId) && await
|
|
381
|
+
async function ut(e, t) {
|
|
382
|
+
e && e.deviceId === E.value || e && (!t || e.deviceId !== t.deviceId) && await $();
|
|
347
383
|
}
|
|
348
|
-
|
|
349
|
-
function
|
|
350
|
-
|
|
384
|
+
ae(() => S.value, ut), ae(() => C.value, ut);
|
|
385
|
+
function dt() {
|
|
386
|
+
v.countdown ? (j.value = j.value ? j.value - 1 : v.countdown, j.value ? setTimeout(dt, 1e3) : mt()) : mt();
|
|
351
387
|
}
|
|
352
388
|
p({
|
|
353
|
-
onCapture:
|
|
354
|
-
enableMotion:
|
|
355
|
-
camera:
|
|
389
|
+
onCapture: dt,
|
|
390
|
+
enableMotion: R,
|
|
391
|
+
camera: y.value,
|
|
356
392
|
zoom: M
|
|
357
393
|
});
|
|
358
|
-
function
|
|
359
|
-
if (!
|
|
360
|
-
let e = ((
|
|
394
|
+
function ft() {
|
|
395
|
+
if (!v.correctOrientation || Pe.value == null) return 0;
|
|
396
|
+
let e = ((Pe.value - 180) % 360 + 360) % 360;
|
|
361
397
|
return (-1 * (Math.round(e / 90) * 90 % 360) % 360 + 360) % 360;
|
|
362
398
|
}
|
|
363
|
-
function
|
|
364
|
-
let a =
|
|
365
|
-
e.translate(a / 2, o / 2),
|
|
399
|
+
function pt(e, t, n, r, i) {
|
|
400
|
+
let a = b.value.width, o = b.value.height;
|
|
401
|
+
e.translate(a / 2, o / 2), G.value && e.scale(-1, 1), e.rotate(n * Math.PI / 180);
|
|
366
402
|
let s = o, c = a, l = Math.max(s / r, c / i) * (M.value && M.value > 0 ? M.value : 1), u = r * l, d = i * l;
|
|
367
403
|
e.drawImage(t, -u / 2, -d / 2, u, d);
|
|
368
404
|
}
|
|
369
|
-
function
|
|
405
|
+
function mt() {
|
|
370
406
|
O.value = !0;
|
|
371
|
-
let e =
|
|
407
|
+
let e = b.value.getContext("2d"), t = y.value, n = t && t.srcObject && t.srcObject.getTracks(), { aspectRatio: r, width: i, height: a } = n.length && n[0].getSettings(), o = t?.videoWidth || i || k.value, s = t?.videoHeight || a || A.value, c = o && s ? o / s : r, l = V.value || {
|
|
372
408
|
width: o,
|
|
373
409
|
height: s
|
|
374
|
-
}, u = l?.width || o, d =
|
|
375
|
-
if (
|
|
376
|
-
let p =
|
|
410
|
+
}, u = l?.width || o, d = B.value ? l?.height || s : Math.round(u / c), f = u / d;
|
|
411
|
+
if (b.value.width = u, b.value.height = d, !o || !s || !c) return;
|
|
412
|
+
let p = ft();
|
|
377
413
|
if (e.save(), p === 90 || p === 270) {
|
|
378
|
-
|
|
414
|
+
pt(e, t, p, o, s), e.restore(), Ze(e, b.value.width, b.value.height), ht(b.value.toDataURL("image/png"));
|
|
379
415
|
return;
|
|
380
416
|
}
|
|
381
|
-
if (p === 180 && (e.translate(
|
|
417
|
+
if (p === 180 && (e.translate(b.value.width, b.value.height), e.scale(-1, -1)), G.value && (e.translate(b.value.width, 0), e.scale(-1, 1)), v.enableCropImage) {
|
|
382
418
|
let n = 0, r = 0, i = o, a = s;
|
|
383
419
|
if (c > f ? (i = s * f, n = (o - i) / 2) : c < f && (a = o / f, r = (s - a) / 2), M.value && M.value !== 1) {
|
|
384
420
|
let e = i / M.value, t = a / M.value;
|
|
385
421
|
n += (i - e) / 2, r += (a - t) / 2, i = e, a = t;
|
|
386
422
|
}
|
|
387
|
-
e.drawImage(t, n, r, i, a, 0, 0,
|
|
423
|
+
e.drawImage(t, n, r, i, a, 0, 0, b.value.width, b.value.height);
|
|
388
424
|
} else {
|
|
389
|
-
let n =
|
|
390
|
-
if (c > f ? (r =
|
|
425
|
+
let n = b.value.width, r = b.value.height, i = 0, a = 0;
|
|
426
|
+
if (c > f ? (r = b.value.width / c, a = (b.value.height - r) / 2) : c < f && (n = b.value.height * c, i = (b.value.width - n) / 2), M.value && M.value !== 1) {
|
|
391
427
|
let c = o / M.value, l = s / M.value, u = (o - c) / 2, d = (s - l) / 2;
|
|
392
|
-
|
|
393
|
-
} else
|
|
428
|
+
G.value && (i = b.value.width - i - n), e.drawImage(t, u, d, c, l, i, a, n, r);
|
|
429
|
+
} else G.value && (i = b.value.width - i - n), e.drawImage(t, 0, 0, o, s, i, a, n, r);
|
|
394
430
|
}
|
|
395
|
-
e.restore(),
|
|
431
|
+
e.restore(), Ze(e, b.value.width, b.value.height), ht(b.value.toDataURL("image/png"));
|
|
396
432
|
}
|
|
397
|
-
function
|
|
433
|
+
function ht(e) {
|
|
398
434
|
let t = n(e);
|
|
399
|
-
|
|
435
|
+
je("update:modelValue", {
|
|
400
436
|
name: `cam-pic-${(/* @__PURE__ */ new Date()).toISOString()}`,
|
|
401
437
|
id: `cam-pic-${(/* @__PURE__ */ new Date()).toISOString()}`,
|
|
402
438
|
blob: t,
|
|
403
439
|
size: t.size
|
|
404
440
|
});
|
|
405
441
|
}
|
|
406
|
-
return
|
|
407
|
-
|
|
408
|
-
let e =
|
|
409
|
-
if (
|
|
410
|
-
await
|
|
411
|
-
}), window.addEventListener("resize",
|
|
412
|
-
|
|
442
|
+
return re(async () => {
|
|
443
|
+
w.value = v.defaultRearCamera ? "environment" : "user", await $(), D.value = !0;
|
|
444
|
+
let e = H.value.find((e) => e.deviceId === E.value), t = v.defaultRearCamera && H.value.length > 1 ? H.value[H.value.length - 1] : e || H.value[0];
|
|
445
|
+
if (S.value = t, v.enableAudio && (C.value = We.value[0]), navigator.mediaDevices.addEventListener("devicechange", async (e) => {
|
|
446
|
+
await $();
|
|
447
|
+
}), document.addEventListener("visibilitychange", st), window.addEventListener("resize", $e), Qe(), Le.value) {
|
|
448
|
+
P = setTimeout(L, 3e3);
|
|
413
449
|
let e = window.DeviceOrientationEvent;
|
|
414
|
-
e && typeof e.requestPermission == "function" ?
|
|
450
|
+
e && typeof e.requestPermission == "function" ? ze() : R();
|
|
415
451
|
}
|
|
416
|
-
await ee(),
|
|
417
|
-
}),
|
|
418
|
-
D.value = !1, O.value = !1,
|
|
419
|
-
}), (n, i) => (
|
|
420
|
-
d("div",
|
|
421
|
-
|
|
422
|
-
default:
|
|
452
|
+
await ee(), Me.value = !0;
|
|
453
|
+
}), ne(() => {
|
|
454
|
+
D.value = !1, O.value = !1, X(), q(), window.removeEventListener("resize", $e), window.removeEventListener("devicemotion", Be, !0), document.removeEventListener("visibilitychange", st), P && clearTimeout(P), Re();
|
|
455
|
+
}), (n, i) => (h(), u("div", { class: m(["camera", Ye.value]) }, [
|
|
456
|
+
d("div", ue, [
|
|
457
|
+
I.value ? l("", !0) : (h(), u("div", de, [f(t, { color: "#000" }, {
|
|
458
|
+
default: oe(() => [d("span", {
|
|
423
459
|
class: m("d-block text-center"),
|
|
424
460
|
innerHTML: n.$t("camera.waitForCameraNotification")
|
|
425
|
-
}, null, 8,
|
|
461
|
+
}, null, 8, fe)]),
|
|
426
462
|
_: 1
|
|
427
463
|
})])),
|
|
428
|
-
|
|
429
|
-
class: m(["camera__video-wrapper",
|
|
430
|
-
style:
|
|
431
|
-
aspectRatio:
|
|
464
|
+
se(d("div", {
|
|
465
|
+
class: m(["camera__video-wrapper", B.value ? `aspect-ratio--${B.value}` : ""]),
|
|
466
|
+
style: te({
|
|
467
|
+
aspectRatio: Ue.value || void 0,
|
|
432
468
|
transform: M.value === 1 ? void 0 : `scale(${M.value})`
|
|
433
469
|
})
|
|
434
470
|
}, [d("video", {
|
|
435
471
|
ref_key: "camera",
|
|
436
|
-
ref:
|
|
472
|
+
ref: y,
|
|
437
473
|
class: "camera__video",
|
|
438
|
-
style:
|
|
439
|
-
filter:
|
|
474
|
+
style: te({
|
|
475
|
+
filter: v.filter === "grayscale" ? "grayscale(100%)" : v.filter === "sepia" ? "sepia(100%)" : "none",
|
|
440
476
|
transform: o.correctOrientation && N.value ? "rotate(180deg)" : void 0
|
|
441
477
|
}),
|
|
442
478
|
autoplay: "",
|
|
443
479
|
muted: "",
|
|
444
480
|
playsinline: ""
|
|
445
|
-
}, null, 4), o.tintColor ? (
|
|
481
|
+
}, null, 4), o.tintColor ? (h(), u("div", {
|
|
446
482
|
key: 0,
|
|
447
483
|
class: "camera__tint-overlay",
|
|
448
|
-
style:
|
|
484
|
+
style: te({
|
|
449
485
|
backgroundColor: o.tintColor,
|
|
450
486
|
opacity: o.tintIntensity,
|
|
451
487
|
mixBlendMode: "multiply"
|
|
452
488
|
})
|
|
453
|
-
}, null, 4)) : l("", !0)], 6), [[
|
|
454
|
-
|
|
489
|
+
}, null, 4)) : l("", !0)], 6), [[ie, I.value]]),
|
|
490
|
+
se(d("canvas", {
|
|
455
491
|
ref_key: "canvas",
|
|
456
|
-
ref:
|
|
492
|
+
ref: b,
|
|
457
493
|
class: "camera__canvas",
|
|
458
494
|
width: k.value,
|
|
459
495
|
height: A.value
|
|
460
|
-
}, null, 8,
|
|
461
|
-
j.value ? (
|
|
496
|
+
}, null, 8, pe), [[ie, O.value]]),
|
|
497
|
+
j.value ? (h(), u("div", me, [(h(), u("p", {
|
|
462
498
|
class: "countdown",
|
|
463
499
|
key: j.value,
|
|
464
500
|
innerHTML: j.value,
|
|
465
501
|
"data-countdown": j.value
|
|
466
|
-
}, null, 8,
|
|
467
|
-
o.enableGuide && D.value &&
|
|
502
|
+
}, null, 8, he))])) : l("", !0),
|
|
503
|
+
o.enableGuide && D.value && I.value ? (h(), u("img", {
|
|
468
504
|
key: 2,
|
|
469
505
|
class: "camera__guide",
|
|
470
506
|
src: o.guideSrc
|
|
471
|
-
}, null, 8,
|
|
472
|
-
o.enableZoomSlider ? (
|
|
507
|
+
}, null, 8, ge)) : l("", !0),
|
|
508
|
+
o.enableZoomSlider ? (h(), u("div", _e, [f(a, {
|
|
473
509
|
modelValue: M.value,
|
|
474
510
|
"onUpdate:modelValue": i[0] ||= (e) => M.value = e
|
|
475
511
|
}, null, 8, ["modelValue"])])) : l("", !0)
|
|
476
512
|
]),
|
|
477
|
-
d("div",
|
|
513
|
+
d("div", ve, [d("div", ye, [d("div", be, [d("div", xe, [d("div", Se, [d("button", {
|
|
478
514
|
type: "button",
|
|
479
515
|
class: "camera__toggle btn btn-primary",
|
|
480
|
-
onClick:
|
|
481
|
-
}, [D.value ? (
|
|
516
|
+
onClick: ct
|
|
517
|
+
}, [D.value ? (h(), u("span", we, _(n.$t("common.pause")), 1)) : (h(), u("span", Ce, _(n.$t("common.play")), 1))]), d("button", {
|
|
482
518
|
type: "button",
|
|
483
519
|
class: "camera__capture btn btn-primary",
|
|
484
|
-
onClick:
|
|
485
|
-
},
|
|
486
|
-
(o.enableSwitchCamera || o.enableSelectDevice) &&
|
|
520
|
+
onClick: dt
|
|
521
|
+
}, _(n.$t("camera.capture")), 1)])])])])]),
|
|
522
|
+
(o.enableSwitchCamera || o.enableSelectDevice) && W.value && W.value.length > 1 ? (h(), u("div", Te, [d("div", Ee, [o.enableSelectDevice ? (h(), c(r, {
|
|
487
523
|
key: 0,
|
|
488
|
-
modelValue:
|
|
489
|
-
"onUpdate:modelValue": i[1] ||= (e) =>
|
|
490
|
-
options:
|
|
524
|
+
modelValue: Je.value,
|
|
525
|
+
"onUpdate:modelValue": i[1] ||= (e) => Je.value = e,
|
|
526
|
+
options: qe.value,
|
|
491
527
|
class: "w-100"
|
|
492
|
-
}, null, 8, ["modelValue", "options"])) : l("", !0)]), d("div",
|
|
528
|
+
}, null, 8, ["modelValue", "options"])) : l("", !0)]), d("div", De, [o.enableSwitchCamera ? (h(), u("button", {
|
|
493
529
|
key: 0,
|
|
494
530
|
class: "btn",
|
|
495
|
-
onClick:
|
|
531
|
+
onClick: ce(lt, ["prevent"])
|
|
496
532
|
}, [f(e, { symbol: "switch-camera" })])) : l("", !0)])])) : l("", !0)
|
|
497
533
|
], 2));
|
|
498
534
|
}
|
|
499
535
|
});
|
|
500
536
|
//#endregion
|
|
501
|
-
export {
|
|
537
|
+
export { Ae as default };
|