@spiffcommerce/core 16.5.1-0 → 16.5.1-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/dist/index.js +468 -469
- package/dist/index.umd.cjs +20 -20
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -190,13 +190,13 @@ class Kt {
|
|
|
190
190
|
uri: `${xA.getServerUrl()}/graphql`,
|
|
191
191
|
fetch: _A
|
|
192
192
|
}), e = vt(async (s, i) => {
|
|
193
|
-
const { headers:
|
|
194
|
-
return B && (
|
|
195
|
-
headers:
|
|
193
|
+
const { headers: o } = i, r = o || {}, c = await zt(), B = i.bearer ?? c.bearer, l = i.partnerId ?? c.partnerId, d = i.activeIntegration ?? c.activeIntegration, E = i.transactionOwnerId ?? c.transactionOwnerId, C = i.customerToken ?? c.customerToken, w = i.applicationKey ?? c.applicationKey, Q = i.bundleOwnerId ?? c.bundleOwnerId;
|
|
194
|
+
return B && (r.Authorization = `Bearer ${B}`), l && (r.partnerId = l), d && (r.activeIntegration = d), E && (r.transactionOwnerId = E), C && (r.customerToken = C), w && (r["X-Application-Key"] = w), Q && (r.bundleOwnerId = Q), {
|
|
195
|
+
headers: r
|
|
196
196
|
};
|
|
197
|
-
}), t = kt(({ operation: s, graphQLErrors: i, networkError:
|
|
198
|
-
const
|
|
199
|
-
|
|
197
|
+
}), t = kt(({ operation: s, graphQLErrors: i, networkError: o }) => {
|
|
198
|
+
const r = i || [];
|
|
199
|
+
o && console.log("GraphQL Network error"), r.forEach(() => console.log("GraphQL Error: " + s.operationName));
|
|
200
200
|
});
|
|
201
201
|
function a() {
|
|
202
202
|
return {
|
|
@@ -375,10 +375,10 @@ class $t {
|
|
|
375
375
|
constructor() {
|
|
376
376
|
this.cache = /* @__PURE__ */ new Map(), this.materialCache = /* @__PURE__ */ new Map(), this.loadImageAsFileInfo = async (A) => {
|
|
377
377
|
const e = await A.arrayBuffer(), t = await Fe(e), a = (n, s) => {
|
|
378
|
-
const i = atob(n.split(",")[1]),
|
|
379
|
-
for (let
|
|
380
|
-
|
|
381
|
-
return new Blob([new Uint8Array(
|
|
378
|
+
const i = atob(n.split(",")[1]), o = [];
|
|
379
|
+
for (let r = 0; r < i.length; r++)
|
|
380
|
+
o.push(i.charCodeAt(r));
|
|
381
|
+
return new Blob([new Uint8Array(o)], { type: s });
|
|
382
382
|
};
|
|
383
383
|
return {
|
|
384
384
|
name: A.name.substring(A.name.lastIndexOf("/") + 1),
|
|
@@ -433,14 +433,14 @@ class $t {
|
|
|
433
433
|
const s = await this.dispatchCreateAssetRequest(A, e, a, n);
|
|
434
434
|
if (!s)
|
|
435
435
|
throw new Error("Failed to create asset.");
|
|
436
|
-
return await new Promise((i,
|
|
437
|
-
const
|
|
438
|
-
|
|
436
|
+
return await new Promise((i, o) => {
|
|
437
|
+
const r = new XMLHttpRequest();
|
|
438
|
+
r.open("PUT", s.assetResponse.uploadUrl, !0), r.setRequestHeader("Content-Type", s.mimeType), r.setRequestHeader("Cache-Control", "public,max-age=31536000,immutable"), r.upload.onprogress = (c) => {
|
|
439
439
|
c.lengthComputable && t(c.loaded * 100 / c.total);
|
|
440
|
-
},
|
|
440
|
+
}, r.onload = () => {
|
|
441
441
|
const c = s.assetResponse.asset;
|
|
442
442
|
LA.add(s.assetResponse.asset), i(c);
|
|
443
|
-
},
|
|
443
|
+
}, r.onerror = o, r.send(A.blob);
|
|
444
444
|
}), s.assetResponse.asset;
|
|
445
445
|
}
|
|
446
446
|
async uploadFile(A, e) {
|
|
@@ -649,12 +649,12 @@ class na {
|
|
|
649
649
|
var a, n;
|
|
650
650
|
const e = A.thumbnail;
|
|
651
651
|
if (e) {
|
|
652
|
-
const s = (a = e.versions) == null ? void 0 : a.find((
|
|
652
|
+
const s = (a = e.versions) == null ? void 0 : a.find((o) => o.name === "thumbnail"), i = e.fileLink;
|
|
653
653
|
return (s == null ? void 0 : s.link) || i;
|
|
654
654
|
}
|
|
655
655
|
const t = A.asset;
|
|
656
656
|
if (t) {
|
|
657
|
-
const s = (n = t.versions) == null ? void 0 : n.find((
|
|
657
|
+
const s = (n = t.versions) == null ? void 0 : n.find((o) => o.name === "thumbnail"), i = t.fileLink;
|
|
658
658
|
return (s == null ? void 0 : s.link) || i;
|
|
659
659
|
}
|
|
660
660
|
return A.material ? A.material.id : "";
|
|
@@ -1202,66 +1202,65 @@ const Ve = y`
|
|
|
1202
1202
|
});
|
|
1203
1203
|
for (const n of g.steps) {
|
|
1204
1204
|
if (A.bulkScene) {
|
|
1205
|
-
let
|
|
1205
|
+
let i = !1;
|
|
1206
1206
|
switch (n.type) {
|
|
1207
1207
|
case I.DigitalContent:
|
|
1208
|
-
n.data.varyUpload && (
|
|
1208
|
+
n.data.varyUpload && (i = !0);
|
|
1209
1209
|
break;
|
|
1210
1210
|
case I.Frame:
|
|
1211
1211
|
{
|
|
1212
1212
|
const o = n.data;
|
|
1213
|
-
o.varyUpload && (o.varySelection || !n.option) && (
|
|
1213
|
+
o.varyUpload && (o.varySelection || !n.option) && (i = !0);
|
|
1214
1214
|
}
|
|
1215
1215
|
break;
|
|
1216
1216
|
case I.Illustration:
|
|
1217
1217
|
{
|
|
1218
1218
|
const o = n.data;
|
|
1219
|
-
(o.varySelection || !n.option || (n.option.variants || []).length === 1) && (o.varyColors || !o.colorPickerEnabled) && (
|
|
1219
|
+
(o.varySelection || !n.option || (n.option.variants || []).length === 1) && (o.varyColors || !o.colorPickerEnabled) && (i = !0);
|
|
1220
1220
|
}
|
|
1221
1221
|
break;
|
|
1222
1222
|
case I.Material:
|
|
1223
|
-
n.data.varySelection && (
|
|
1223
|
+
n.data.varySelection && (i = !0);
|
|
1224
1224
|
break;
|
|
1225
1225
|
case I.Model:
|
|
1226
|
-
n.data.varySelection && (
|
|
1226
|
+
n.data.varySelection && (i = !0);
|
|
1227
1227
|
break;
|
|
1228
1228
|
case I.Picture:
|
|
1229
|
-
n.data.varySelection && (
|
|
1229
|
+
n.data.varySelection && (i = !0);
|
|
1230
1230
|
break;
|
|
1231
1231
|
case I.Question:
|
|
1232
|
-
n.data.varySelections && (
|
|
1232
|
+
n.data.varySelections && (i = !0);
|
|
1233
1233
|
break;
|
|
1234
1234
|
case I.Shape:
|
|
1235
|
-
n.data.varySelection && (
|
|
1235
|
+
n.data.varySelection && (i = !0);
|
|
1236
1236
|
break;
|
|
1237
1237
|
case I.Text:
|
|
1238
1238
|
{
|
|
1239
1239
|
const o = n.data;
|
|
1240
|
-
(o.varySelection || !n.option || (n.option.variants || []).length === 1) && (o.varyColor || !o.colorPickerEnabled || !o.colorOption) && o.varyText && (
|
|
1240
|
+
(o.varySelection || !n.option || (n.option.variants || []).length === 1) && (o.varyColor || !o.colorPickerEnabled || !o.colorOption) && o.varyText && (i = !0);
|
|
1241
1241
|
}
|
|
1242
1242
|
break;
|
|
1243
1243
|
}
|
|
1244
|
-
if (
|
|
1244
|
+
if (i)
|
|
1245
1245
|
continue;
|
|
1246
1246
|
}
|
|
1247
1247
|
const s = Ea(n.stepName, g.stepGroups);
|
|
1248
|
-
if (!
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
}
|
|
1248
|
+
if (!s)
|
|
1249
|
+
t.push({
|
|
1250
|
+
name: n.stepName,
|
|
1251
|
+
title: n.stepTitle,
|
|
1252
|
+
renderableSteps: iA.includes(n.type) ? [] : [n],
|
|
1253
|
+
silentSteps: iA.includes(n.type) ? [n] : []
|
|
1254
|
+
});
|
|
1255
|
+
else {
|
|
1256
|
+
const i = t.find((o) => o.name === s.name);
|
|
1257
|
+
i ? iA.includes(n.type) ? i.silentSteps.push(n) : i.renderableSteps.push(n) : t.push({
|
|
1258
|
+
name: s.name,
|
|
1259
|
+
title: s.name,
|
|
1260
|
+
renderableSteps: iA.includes(n.type) ? [] : [n],
|
|
1261
|
+
silentSteps: iA.includes(n.type) ? [n] : []
|
|
1262
|
+
});
|
|
1263
|
+
}
|
|
1265
1264
|
}
|
|
1266
1265
|
if (A.bulkScene) {
|
|
1267
1266
|
const n = (a = e == null ? void 0 : e.product) == null ? void 0 : a.bulkConfiguration;
|
|
@@ -1322,16 +1321,16 @@ const Ve = y`
|
|
|
1322
1321
|
var s;
|
|
1323
1322
|
const t = aA(g, A), a = [];
|
|
1324
1323
|
for (const i of t)
|
|
1325
|
-
for (const
|
|
1326
|
-
const
|
|
1327
|
-
|
|
1324
|
+
for (const o of i.renderableSteps) {
|
|
1325
|
+
const r = (((s = o.option) == null ? void 0 : s.variants) || []).length;
|
|
1326
|
+
o.silent && (o.type === I.Model || o.type === I.Material || o.type === I.Picture || o.type === I.Shape ? (r > 1 || e) && a.push(o.stepName) : a.push(o.stepName));
|
|
1328
1327
|
}
|
|
1329
1328
|
const n = t.filter((i) => i.renderableSteps.filter(
|
|
1330
|
-
(
|
|
1329
|
+
(r) => a.includes(r.stepName)
|
|
1331
1330
|
).length > 0);
|
|
1332
1331
|
for (const i of n)
|
|
1333
1332
|
i.renderableSteps = i.renderableSteps.filter(
|
|
1334
|
-
(
|
|
1333
|
+
(o) => a.includes(o.stepName)
|
|
1335
1334
|
);
|
|
1336
1335
|
return n;
|
|
1337
1336
|
};
|
|
@@ -1402,10 +1401,10 @@ class qe {
|
|
|
1402
1401
|
function Qa(g, A, e, t) {
|
|
1403
1402
|
const a = e.width * g.zoom, n = e.height * g.zoom;
|
|
1404
1403
|
if (t) {
|
|
1405
|
-
const i = g,
|
|
1406
|
-
i.zoom = Math.max(
|
|
1407
|
-
const
|
|
1408
|
-
return i.x = hA(g.x, A.width -
|
|
1404
|
+
const i = g, o = Math.max(A.width / e.width, A.height / e.height);
|
|
1405
|
+
i.zoom = Math.max(o, g.zoom);
|
|
1406
|
+
const r = e.width * i.zoom, c = e.height * i.zoom;
|
|
1407
|
+
return i.x = hA(g.x, A.width - r, 0), i.y = hA(g.y, A.height - c, 0), i;
|
|
1409
1408
|
}
|
|
1410
1409
|
const s = g;
|
|
1411
1410
|
return s.x = hA(s.x, -a, A.width), s.y = hA(s.y, -n, A.height), s;
|
|
@@ -1430,8 +1429,8 @@ class ua {
|
|
|
1430
1429
|
if (a.currentFrameSources) {
|
|
1431
1430
|
let n = !1;
|
|
1432
1431
|
for (let s = 0; s < a.currentFrameSources.length; s++) {
|
|
1433
|
-
const i = a.currentFrameSources[s],
|
|
1434
|
-
ke(
|
|
1432
|
+
const i = a.currentFrameSources[s], o = await Ae(i);
|
|
1433
|
+
ke(o, this.frameData) || (this.frameData || (this.frameData = new Array(a.currentFrameSources.length)), this.frameData[s] = o, n = !0);
|
|
1435
1434
|
}
|
|
1436
1435
|
n && (this.onFrameDataChangeListeners.forEach(
|
|
1437
1436
|
(s) => s(this.frameData)
|
|
@@ -1500,7 +1499,7 @@ class ua {
|
|
|
1500
1499
|
if (this.imageData && this.offsets && this.frameData) {
|
|
1501
1500
|
(!this.offsets || this.offsets.length !== this.frameData.length) && (this.offsets = new Array(this.frameData.length));
|
|
1502
1501
|
const n = this.frameData.map((s, i) => {
|
|
1503
|
-
const
|
|
1502
|
+
const o = (e[i] - this.offsets[i].x) / this.offsets[i].zoom, r = (t[i] - this.offsets[i].y) / this.offsets[i].zoom, c = e[i] - o * A[i], B = t[i] - r * A[i];
|
|
1504
1503
|
return {
|
|
1505
1504
|
x: c,
|
|
1506
1505
|
y: B,
|
|
@@ -1564,8 +1563,8 @@ class ua {
|
|
|
1564
1563
|
if (!this.workflowManager)
|
|
1565
1564
|
throw new v("No workflow manager set, cannot update offsets.");
|
|
1566
1565
|
const s = this.workflowManager.getCommandDispatcher();
|
|
1567
|
-
a.forEach((i,
|
|
1568
|
-
s(new Me(i, e, A[
|
|
1566
|
+
a.forEach((i, o) => {
|
|
1567
|
+
s(new Me(i, e, A[o]));
|
|
1569
1568
|
}), this.stepName && this.workflowManager.updateStorage(this.stepName, {
|
|
1570
1569
|
frameOffsetsList: A
|
|
1571
1570
|
}), n && n();
|
|
@@ -1590,19 +1589,19 @@ class ua {
|
|
|
1590
1589
|
class me {
|
|
1591
1590
|
constructor(A, e, t) {
|
|
1592
1591
|
this.processRegion = async (a) => {
|
|
1593
|
-
var
|
|
1592
|
+
var o, r, c, B;
|
|
1594
1593
|
const n = this.layouts.find((l) => l.panelId === a.panelId);
|
|
1595
1594
|
if (!n)
|
|
1596
1595
|
throw new L(a);
|
|
1597
1596
|
let s = "";
|
|
1598
1597
|
if (this.configuration.type === I.ProductOverlay) {
|
|
1599
1598
|
let l = "";
|
|
1600
|
-
if ((
|
|
1599
|
+
if ((o = this.product) != null && o.overlayImageUrl && (l = this.product.overlayImageUrl), s = l, !l)
|
|
1601
1600
|
throw new SA(this.configuration, "Couldn't find an asset for product overlay step");
|
|
1602
1601
|
}
|
|
1603
1602
|
const i = this.evaluateAssetType();
|
|
1604
1603
|
if (i === H.Image) {
|
|
1605
|
-
const l = this.configuration.type === I.SilentIllustration ? (
|
|
1604
|
+
const l = this.configuration.type === I.SilentIllustration ? (r = this.configuration.data.asset) == null ? void 0 : r.fileLink : (c = this.product) == null ? void 0 : c.overlayImageUrl;
|
|
1606
1605
|
if (!l)
|
|
1607
1606
|
throw new Error("Undefined raster silent step source");
|
|
1608
1607
|
const d = {
|
|
@@ -1733,17 +1732,17 @@ class pa {
|
|
|
1733
1732
|
const a = e.getSerializedStep(
|
|
1734
1733
|
A.stepName,
|
|
1735
1734
|
t.serializableWorkflow.steps
|
|
1736
|
-
),
|
|
1737
|
-
await e.setSelectionsAndElements(A.stepName, [],
|
|
1735
|
+
), o = Object.values(t.layouts).map((r) => r.elements).flat().filter((r) => r.stepName === A.stepName).map((r) => ({ id: r.id, region: r.stepRegion }));
|
|
1736
|
+
await e.setSelectionsAndElements(A.stepName, [], o, async () => {
|
|
1738
1737
|
var B, l;
|
|
1739
|
-
const
|
|
1738
|
+
const r = (B = a == null ? void 0 : a.storage) == null ? void 0 : B.videoShortUrl, c = (l = a == null ? void 0 : a.storage) == null ? void 0 : l.videoUrl;
|
|
1740
1739
|
e.updateStorage(A.stepName, {
|
|
1741
|
-
videoShortUrl:
|
|
1740
|
+
videoShortUrl: r,
|
|
1742
1741
|
videoUrl: c
|
|
1743
1742
|
});
|
|
1744
1743
|
});
|
|
1745
1744
|
}
|
|
1746
|
-
async regenerateQRCode(A, e, t, a, n, s, i,
|
|
1745
|
+
async regenerateQRCode(A, e, t, a, n, s, i, o, r) {
|
|
1747
1746
|
if (!e && t !== "" && a === "") {
|
|
1748
1747
|
const c = async () => {
|
|
1749
1748
|
var f, p;
|
|
@@ -1768,7 +1767,7 @@ class pa {
|
|
|
1768
1767
|
40
|
|
1769
1768
|
);
|
|
1770
1769
|
});
|
|
1771
|
-
A.forEach((h) =>
|
|
1770
|
+
A.forEach((h) => o(new $(h.id)));
|
|
1772
1771
|
const l = s.data.baseUrl.slice(0, 4) === "http" ? "" : "https://", d = new URL(l + s.data.baseUrl);
|
|
1773
1772
|
d.searchParams.append("video", btoa(JSON.stringify([B]))), d.pathname = d.pathname + (d.pathname.slice(-1) === "/" ? "" : "/");
|
|
1774
1773
|
const E = d.toString();
|
|
@@ -1782,18 +1781,18 @@ class pa {
|
|
|
1782
1781
|
n.updateStorage(s.stepName, {
|
|
1783
1782
|
videoShortUrl: C,
|
|
1784
1783
|
videoUrl: a
|
|
1785
|
-
}),
|
|
1784
|
+
}), r(!1);
|
|
1786
1785
|
});
|
|
1787
1786
|
} else
|
|
1788
|
-
|
|
1787
|
+
r(!1);
|
|
1789
1788
|
}
|
|
1790
1789
|
async regionElements(A) {
|
|
1791
1790
|
const e = (t) => ({ id: k(), region: t });
|
|
1792
1791
|
return A.data.regions.map(e);
|
|
1793
1792
|
}
|
|
1794
1793
|
async command(A, e, t, a) {
|
|
1795
|
-
const n = t.getLayouts(), i = `data:image/svg+xml;base64,${btoa(await be(A, { type: "svg" }))}`,
|
|
1796
|
-
const c =
|
|
1794
|
+
const n = t.getLayouts(), i = `data:image/svg+xml;base64,${btoa(await be(A, { type: "svg" }))}`, o = e.map((r) => {
|
|
1795
|
+
const c = r.region, B = n.find((l) => l.panelId === (c == null ? void 0 : c.panelId));
|
|
1797
1796
|
if (!B && c)
|
|
1798
1797
|
throw new L(c);
|
|
1799
1798
|
if (B && !c)
|
|
@@ -1804,7 +1803,7 @@ class pa {
|
|
|
1804
1803
|
{
|
|
1805
1804
|
stepRegion: c,
|
|
1806
1805
|
stepName: a,
|
|
1807
|
-
id:
|
|
1806
|
+
id: r.id,
|
|
1808
1807
|
src: i,
|
|
1809
1808
|
type: H.Image,
|
|
1810
1809
|
y: c.top,
|
|
@@ -1816,7 +1815,7 @@ class pa {
|
|
|
1816
1815
|
B
|
|
1817
1816
|
);
|
|
1818
1817
|
});
|
|
1819
|
-
return { command: new G(
|
|
1818
|
+
return { command: new G(o), followup: async () => {
|
|
1820
1819
|
} };
|
|
1821
1820
|
}
|
|
1822
1821
|
}
|
|
@@ -1859,11 +1858,11 @@ class Da {
|
|
|
1859
1858
|
);
|
|
1860
1859
|
}
|
|
1861
1860
|
async reload(A, e, t) {
|
|
1862
|
-
var
|
|
1861
|
+
var r;
|
|
1863
1862
|
const a = e.getSerializedStep(
|
|
1864
1863
|
A.stepName,
|
|
1865
1864
|
t.serializableWorkflow.steps
|
|
1866
|
-
),
|
|
1865
|
+
), o = Object.values(t.layouts).map((c) => c.elements).flat().filter((c) => c.stepName === A.stepName).map((c) => ({ id: c.id, region: c.stepRegion }));
|
|
1867
1866
|
if (!A.option || (A.option.variants || []).length === 0) {
|
|
1868
1867
|
const c = A.data.regions.map((B) => Be(B));
|
|
1869
1868
|
e.updateStorage(A.stepName, {
|
|
@@ -1896,11 +1895,11 @@ class Da {
|
|
|
1896
1895
|
if (a.selectedVariants && a.selectedVariants.length > 0) {
|
|
1897
1896
|
const B = a.selectedVariants[0].id;
|
|
1898
1897
|
if (A.option && B) {
|
|
1899
|
-
const l = (
|
|
1898
|
+
const l = (r = A.option.variants) == null ? void 0 : r.find((d) => d.id === B);
|
|
1900
1899
|
l && await e.setSelectionsAndElements(
|
|
1901
1900
|
A.stepName,
|
|
1902
1901
|
[l],
|
|
1903
|
-
|
|
1902
|
+
o,
|
|
1904
1903
|
async () => {
|
|
1905
1904
|
const d = await Promise.all(
|
|
1906
1905
|
A.data.regions.map((E) => this.frameSourceSvg(l, E))
|
|
@@ -1910,15 +1909,15 @@ class Da {
|
|
|
1910
1909
|
);
|
|
1911
1910
|
}
|
|
1912
1911
|
} else
|
|
1913
|
-
await e.setSelectionsAndElements(A.stepName, [],
|
|
1912
|
+
await e.setSelectionsAndElements(A.stepName, [], o, c);
|
|
1914
1913
|
}
|
|
1915
1914
|
}
|
|
1916
1915
|
selectImage(A, e, t) {
|
|
1917
1916
|
t.setEditedStatus(A.stepName, !0), (e.fileLink || "").endsWith("pdf") ? t.addPoller(
|
|
1918
1917
|
new Ze(
|
|
1919
1918
|
async () => {
|
|
1920
|
-
var
|
|
1921
|
-
const s = (
|
|
1919
|
+
var o;
|
|
1920
|
+
const s = (o = (await T.getLocalOrFromServer(e.key || "")).versions) == null ? void 0 : o.find((r) => r.name === "svg");
|
|
1922
1921
|
return s ? (await fetch(s.link)).status === 200 : !1;
|
|
1923
1922
|
},
|
|
1924
1923
|
() => {
|
|
@@ -1995,13 +1994,13 @@ class Da {
|
|
|
1995
1994
|
const i = (l = a.getStepSpecificServices(A.stepName)) == null ? void 0 : l.frameService;
|
|
1996
1995
|
if (!i)
|
|
1997
1996
|
throw new Error("Frame service unavailable, cannot load pattern!");
|
|
1998
|
-
const
|
|
1997
|
+
const o = await Promise.all(
|
|
1999
1998
|
A.data.regions.map((d) => this.frameSourceSvg(e, d))
|
|
2000
1999
|
);
|
|
2001
2000
|
n && n(!0);
|
|
2002
|
-
const
|
|
2001
|
+
const r = await Promise.all(
|
|
2003
2002
|
A.data.regions.map(async (d, E) => {
|
|
2004
|
-
const C = await Ae(
|
|
2003
|
+
const C = await Ae(o[E]), w = i.getImageData(), Q = t.map((m) => new $(m.id)), h = w ? ee(w, C) : void 0, u = w ? {
|
|
2005
2004
|
id: k(),
|
|
2006
2005
|
src: w.src,
|
|
2007
2006
|
x: (h == null ? void 0 : h.x) || 0,
|
|
@@ -2031,17 +2030,17 @@ class Da {
|
|
|
2031
2030
|
removeExistingCommands: Q
|
|
2032
2031
|
};
|
|
2033
2032
|
})
|
|
2034
|
-
), c =
|
|
2033
|
+
), c = r.map((d) => d.command), B = r.map((d) => d.removeExistingCommands).flat();
|
|
2035
2034
|
return {
|
|
2036
2035
|
command: new G([...c, ...B]),
|
|
2037
2036
|
followup: async () => {
|
|
2038
2037
|
n && n(!1), await a.setSelectionsAndElements(
|
|
2039
2038
|
A.stepName,
|
|
2040
2039
|
e ? [e] : [],
|
|
2041
|
-
[...
|
|
2040
|
+
[...r.map((d) => d.regionEl)],
|
|
2042
2041
|
async () => {
|
|
2043
2042
|
var d;
|
|
2044
|
-
if (a.updateStorage(A.stepName, { currentFrameSources:
|
|
2043
|
+
if (a.updateStorage(A.stepName, { currentFrameSources: o }), s) {
|
|
2045
2044
|
const E = (d = a.getStepSpecificServices(
|
|
2046
2045
|
A.stepName
|
|
2047
2046
|
)) == null ? void 0 : d.frameService;
|
|
@@ -2137,15 +2136,15 @@ class fa {
|
|
|
2137
2136
|
return null;
|
|
2138
2137
|
}
|
|
2139
2138
|
async reload(A, e, t) {
|
|
2140
|
-
var
|
|
2139
|
+
var r;
|
|
2141
2140
|
const a = e.getSerializedStep(
|
|
2142
2141
|
A.stepName,
|
|
2143
2142
|
t.serializableWorkflow.steps
|
|
2144
|
-
), i = Object.values(t.layouts).map((c) => c.elements).flat().filter((c) => c.stepName === A.stepName),
|
|
2143
|
+
), i = Object.values(t.layouts).map((c) => c.elements).flat().filter((c) => c.stepName === A.stepName), o = A.option;
|
|
2145
2144
|
if (a != null && a.selectedVariants) {
|
|
2146
2145
|
const c = a.selectedVariants[0].id;
|
|
2147
|
-
if (
|
|
2148
|
-
const B = (
|
|
2146
|
+
if (o && c) {
|
|
2147
|
+
const B = (r = o.variants) == null ? void 0 : r.find((l) => l.id === c);
|
|
2149
2148
|
if (B) {
|
|
2150
2149
|
const l = i.map((d) => ({ id: d.id, region: d.stepRegion }));
|
|
2151
2150
|
await e.setSelectionsAndElements(
|
|
@@ -2179,13 +2178,13 @@ class fa {
|
|
|
2179
2178
|
const s = {};
|
|
2180
2179
|
for (const [B, l] of n.entries())
|
|
2181
2180
|
s[B] = { browserValue: l, spotColor: (c = s[B]) == null ? void 0 : c.spotColor };
|
|
2182
|
-
const i = ft(A, e, t, s),
|
|
2181
|
+
const i = ft(A, e, t, s), o = await FA(i), r = [];
|
|
2183
2182
|
for (const B of a) {
|
|
2184
2183
|
for (const [l, d] of n.entries())
|
|
2185
|
-
|
|
2186
|
-
|
|
2184
|
+
r.push(new jA(B, l, d));
|
|
2185
|
+
r.push(new Ft(B, i, o));
|
|
2187
2186
|
}
|
|
2188
|
-
return new G(
|
|
2187
|
+
return new G(r);
|
|
2189
2188
|
}
|
|
2190
2189
|
async changeColors(A, e, t, a, n) {
|
|
2191
2190
|
var d, E;
|
|
@@ -2194,21 +2193,21 @@ class fa {
|
|
|
2194
2193
|
const s = MA(
|
|
2195
2194
|
e[0].id,
|
|
2196
2195
|
a().map((C) => C.layoutState)
|
|
2197
|
-
), i = { ...s.colors },
|
|
2196
|
+
), i = { ...s.colors }, o = {};
|
|
2198
2197
|
Object.entries(i).forEach(([C, w]) => {
|
|
2199
2198
|
const Q = { browserValue: w.browserValue }, h = w.spotColor;
|
|
2200
|
-
h && (Q.spotColor = { profileName: h.profileName, namedColor: h.namedColor }),
|
|
2199
|
+
h && (Q.spotColor = { profileName: h.profileName, namedColor: h.namedColor }), o[C] = Q;
|
|
2201
2200
|
});
|
|
2202
2201
|
for (const [C, w] of n.entries())
|
|
2203
|
-
i[C] = { browserValue: w, spotColor: (d = i[C]) == null ? void 0 : d.spotColor },
|
|
2204
|
-
let
|
|
2202
|
+
i[C] = { browserValue: w, spotColor: (d = i[C]) == null ? void 0 : d.spotColor }, o[C] = { browserValue: w };
|
|
2203
|
+
let r = Array.from(Object.values(i)).map((C) => C.browserValue);
|
|
2205
2204
|
const c = A.data.colorOption;
|
|
2206
2205
|
c && ((E = c.variants) == null || E.forEach((C) => {
|
|
2207
|
-
|
|
2206
|
+
r = r.map((w) => {
|
|
2208
2207
|
var Q;
|
|
2209
2208
|
return w.toLowerCase() === ((Q = C.color) == null ? void 0 : Q.toLowerCase()) ? C.name : w;
|
|
2210
2209
|
});
|
|
2211
|
-
})), t.updateMetadata(A.stepName, { colors:
|
|
2210
|
+
})), t.updateMetadata(A.stepName, { colors: r });
|
|
2212
2211
|
const B = /* @__PURE__ */ new Map();
|
|
2213
2212
|
if (Object.entries(i).forEach(([C, w]) => {
|
|
2214
2213
|
B.set(C, w.browserValue);
|
|
@@ -2222,7 +2221,7 @@ class fa {
|
|
|
2222
2221
|
B
|
|
2223
2222
|
);
|
|
2224
2223
|
t.updateStorage(A.stepName, {
|
|
2225
|
-
colors:
|
|
2224
|
+
colors: o
|
|
2226
2225
|
}), t.getCommandDispatcher()(l);
|
|
2227
2226
|
}
|
|
2228
2227
|
async selectVariant(A, e, t, a, n) {
|
|
@@ -2239,10 +2238,10 @@ class fa {
|
|
|
2239
2238
|
const i = e.asset;
|
|
2240
2239
|
if (!i)
|
|
2241
2240
|
throw new _(e);
|
|
2242
|
-
const
|
|
2243
|
-
if (!
|
|
2241
|
+
const o = i.fileLink;
|
|
2242
|
+
if (!o)
|
|
2244
2243
|
throw new lA(i);
|
|
2245
|
-
const
|
|
2244
|
+
const r = await ye(await this.getIllustrationBody(o)), c = await FA(r.svg), B = (h) => {
|
|
2246
2245
|
const u = n.getLayouts().find((p) => p.panelId === h.panelId);
|
|
2247
2246
|
if (!u)
|
|
2248
2247
|
throw new L(h);
|
|
@@ -2251,13 +2250,13 @@ class fa {
|
|
|
2251
2250
|
regionElement: { id: f, region: h },
|
|
2252
2251
|
command: this.getCreateElementCommand(f, h, u, {
|
|
2253
2252
|
stepName: A.stepName,
|
|
2254
|
-
src:
|
|
2253
|
+
src: o,
|
|
2255
2254
|
objectURL: c,
|
|
2256
|
-
svg:
|
|
2255
|
+
svg: r
|
|
2257
2256
|
})
|
|
2258
2257
|
};
|
|
2259
2258
|
}, l = A.data.regions.map(B), E = [...l.map((h) => h.command), ...s];
|
|
2260
|
-
let C = Array.from(Object.values(
|
|
2259
|
+
let C = Array.from(Object.values(r.colors)).map((h) => h.browserValue);
|
|
2261
2260
|
const w = A.data.colorOption;
|
|
2262
2261
|
return w && ((Q = w.variants) == null || Q.forEach((h) => {
|
|
2263
2262
|
C = C.map((u) => {
|
|
@@ -2296,17 +2295,17 @@ class Fa {
|
|
|
2296
2295
|
return null;
|
|
2297
2296
|
}
|
|
2298
2297
|
async reload(A, e, t) {
|
|
2299
|
-
var
|
|
2298
|
+
var r;
|
|
2300
2299
|
const a = e.getSerializedStep(
|
|
2301
2300
|
A.stepName,
|
|
2302
2301
|
t.serializableWorkflow.steps
|
|
2303
|
-
), i = Object.values(t.layouts).map((c) => c.elements).flat().filter((c) => c.stepName === A.stepName),
|
|
2304
|
-
if (!
|
|
2302
|
+
), i = Object.values(t.layouts).map((c) => c.elements).flat().filter((c) => c.stepName === A.stepName), o = A.option;
|
|
2303
|
+
if (!o)
|
|
2305
2304
|
throw new YA(A);
|
|
2306
2305
|
if (a != null && a.selectedVariants) {
|
|
2307
2306
|
const c = a.selectedVariants[0].id;
|
|
2308
2307
|
if (c) {
|
|
2309
|
-
const B = (
|
|
2308
|
+
const B = (r = o.variants) == null ? void 0 : r.find((l) => l.id === c);
|
|
2310
2309
|
if (B) {
|
|
2311
2310
|
const l = B.material, d = i.map((E) => ({ id: E.id, region: E.stepRegion }));
|
|
2312
2311
|
await e.setSelectionsAndElements(
|
|
@@ -2316,7 +2315,7 @@ class Fa {
|
|
|
2316
2315
|
async () => {
|
|
2317
2316
|
const E = e.getModelContainer();
|
|
2318
2317
|
if (E) {
|
|
2319
|
-
const C = A.data.targetMaterials.map((w) => E.applyMaterialVariant(w,
|
|
2318
|
+
const C = A.data.targetMaterials.map((w) => E.applyMaterialVariant(w, o.id || "", l || {}));
|
|
2320
2319
|
Promise.all(C).then(
|
|
2321
2320
|
() => e.setMandatoryFulfilled(A.stepName, !0)
|
|
2322
2321
|
);
|
|
@@ -2370,15 +2369,15 @@ class Ma {
|
|
|
2370
2369
|
return null;
|
|
2371
2370
|
}
|
|
2372
2371
|
async reload(A, e, t) {
|
|
2373
|
-
var
|
|
2372
|
+
var r;
|
|
2374
2373
|
const a = e.getSerializedStep(
|
|
2375
2374
|
A.stepName,
|
|
2376
2375
|
t.serializableWorkflow.steps
|
|
2377
|
-
), i = Object.values(t.layouts).map((c) => c.elements).flat().filter((c) => c.stepName === A.stepName),
|
|
2376
|
+
), i = Object.values(t.layouts).map((c) => c.elements).flat().filter((c) => c.stepName === A.stepName), o = A.option;
|
|
2378
2377
|
if (a != null && a.selectedVariants) {
|
|
2379
2378
|
const c = a.selectedVariants[0].id;
|
|
2380
|
-
if (
|
|
2381
|
-
const B = (
|
|
2379
|
+
if (o && c) {
|
|
2380
|
+
const B = (r = o.variants) == null ? void 0 : r.find((l) => l.id === c);
|
|
2382
2381
|
if (B) {
|
|
2383
2382
|
const l = i.map((d) => ({ id: d.id, region: d.stepRegion }));
|
|
2384
2383
|
await e.setSelectionsAndElements(
|
|
@@ -2453,10 +2452,10 @@ class ya {
|
|
|
2453
2452
|
const a = e.getSerializedStep(
|
|
2454
2453
|
A.stepName,
|
|
2455
2454
|
t.serializableWorkflow.steps
|
|
2456
|
-
),
|
|
2457
|
-
await e.setSelectionsAndElements(A.stepName, [],
|
|
2458
|
-
var
|
|
2459
|
-
e.updateStorage(A.stepName, { text: (
|
|
2455
|
+
), o = Object.values(t.layouts).map((r) => r.elements).flat().filter((r) => r.stepName === A.stepName).map((r) => ({ id: r.id, region: r.stepRegion }));
|
|
2456
|
+
await e.setSelectionsAndElements(A.stepName, [], o, async () => {
|
|
2457
|
+
var r, c;
|
|
2458
|
+
e.updateStorage(A.stepName, { text: (r = a == null ? void 0 : a.storage) == null ? void 0 : r.text }), e.setMandatoryFulfilled(A.stepName, ((c = a == null ? void 0 : a.storage) == null ? void 0 : c.text) !== "");
|
|
2460
2459
|
});
|
|
2461
2460
|
}
|
|
2462
2461
|
async changeText(A, e, t, a, n) {
|
|
@@ -2468,13 +2467,13 @@ class ya {
|
|
|
2468
2467
|
const s = t.getRegionElements(A.stepName), i = (c = t.getStepSpecificServices(A.stepName)) == null ? void 0 : c.module;
|
|
2469
2468
|
if (!i)
|
|
2470
2469
|
return console.error("Missing module."), null;
|
|
2471
|
-
const
|
|
2472
|
-
if (!this.validateInput(A, e,
|
|
2470
|
+
const o = t.getProfanities();
|
|
2471
|
+
if (!this.validateInput(A, e, o, n))
|
|
2473
2472
|
return t.setMandatoryFulfilled(A.stepName, !1), console.error(a), null;
|
|
2474
2473
|
if (t.setMandatoryFulfilled(A.stepName, e !== ""), !A.data || !A.data.regions || A.data.regions.length <= 0)
|
|
2475
2474
|
return console.error("Missing configuration."), null;
|
|
2476
2475
|
t.updateStorage(A.stepName, { text: e });
|
|
2477
|
-
const
|
|
2476
|
+
const r = (B, l, d) => {
|
|
2478
2477
|
const E = d || k(), w = t.getLayouts().find((h) => h.panelId === l.panelId);
|
|
2479
2478
|
if (!w)
|
|
2480
2479
|
return console.error(`Can not find layout for region: ${l.panelId}`), null;
|
|
@@ -2510,7 +2509,7 @@ class ya {
|
|
|
2510
2509
|
if (!d.region)
|
|
2511
2510
|
return null;
|
|
2512
2511
|
const E = i.svgPrint(e, d.region);
|
|
2513
|
-
return
|
|
2512
|
+
return r(E, d.region, d.id);
|
|
2514
2513
|
}).filter((d) => !!d).filter((d) => !!d).map((d) => d && d.command);
|
|
2515
2514
|
return {
|
|
2516
2515
|
command: new G(l),
|
|
@@ -2519,7 +2518,7 @@ class ya {
|
|
|
2519
2518
|
};
|
|
2520
2519
|
} else {
|
|
2521
2520
|
const B = A.data.regions.map(
|
|
2522
|
-
(d) =>
|
|
2521
|
+
(d) => r(i.svgPrint(e, d), d)
|
|
2523
2522
|
), l = B.filter((d) => !!d).map((d) => d && d.command);
|
|
2524
2523
|
return {
|
|
2525
2524
|
command: new G(l),
|
|
@@ -2545,8 +2544,8 @@ class ya {
|
|
|
2545
2544
|
const n = XA(e.toLowerCase());
|
|
2546
2545
|
for (const s of n)
|
|
2547
2546
|
for (const i in t) {
|
|
2548
|
-
const
|
|
2549
|
-
if (s ===
|
|
2547
|
+
const o = t[i].toLowerCase().replace(/\s/g, "");
|
|
2548
|
+
if (s === o)
|
|
2550
2549
|
return a("Blocked profanity."), !1;
|
|
2551
2550
|
}
|
|
2552
2551
|
return a(""), !0;
|
|
@@ -2566,15 +2565,15 @@ class Sa {
|
|
|
2566
2565
|
return e.markStepsAsInitialised([A.stepName]), null;
|
|
2567
2566
|
}
|
|
2568
2567
|
async reload(A, e, t) {
|
|
2569
|
-
var
|
|
2568
|
+
var r;
|
|
2570
2569
|
const a = e.getSerializedStep(
|
|
2571
2570
|
A.stepName,
|
|
2572
2571
|
t.serializableWorkflow.steps
|
|
2573
|
-
), i = Object.values(t.layouts).map((c) => c.elements).flat().filter((c) => c.stepName === A.stepName),
|
|
2572
|
+
), i = Object.values(t.layouts).map((c) => c.elements).flat().filter((c) => c.stepName === A.stepName), o = A.option;
|
|
2574
2573
|
if (a != null && a.selectedVariants) {
|
|
2575
2574
|
const c = a.selectedVariants[0].id;
|
|
2576
|
-
if (
|
|
2577
|
-
const B = (
|
|
2575
|
+
if (o && c) {
|
|
2576
|
+
const B = (r = o.variants) == null ? void 0 : r.find((l) => l.id === c);
|
|
2578
2577
|
if (B) {
|
|
2579
2578
|
const l = i.map((d) => ({ id: d.id, region: d.stepRegion }));
|
|
2580
2579
|
await e.setSelectionsAndElements(
|
|
@@ -2601,7 +2600,7 @@ class Sa {
|
|
|
2601
2600
|
if (!s)
|
|
2602
2601
|
return console.error("No URL for picture!"), null;
|
|
2603
2602
|
a(!0), t.setMandatoryFulfilled(A.stepName, !1);
|
|
2604
|
-
const
|
|
2603
|
+
const o = t.getRegionElements(A.stepName).map((B) => new $(B.id)), r = (B) => {
|
|
2605
2604
|
const d = t.getLayouts().find((C) => C.panelId === B.panelId);
|
|
2606
2605
|
if (!d)
|
|
2607
2606
|
throw new L(B);
|
|
@@ -2628,9 +2627,9 @@ class Sa {
|
|
|
2628
2627
|
d
|
|
2629
2628
|
)
|
|
2630
2629
|
};
|
|
2631
|
-
}, c = A.data.regions.map(
|
|
2630
|
+
}, c = A.data.regions.map(r);
|
|
2632
2631
|
return {
|
|
2633
|
-
command: new G([...
|
|
2632
|
+
command: new G([...o, ...c.map((B) => B.command)]),
|
|
2634
2633
|
followup: async () => {
|
|
2635
2634
|
await t.setSelectionsAndElements(
|
|
2636
2635
|
A.stepName,
|
|
@@ -2655,9 +2654,9 @@ class xa {
|
|
|
2655
2654
|
else {
|
|
2656
2655
|
const n = a.variants;
|
|
2657
2656
|
if (z.getDefaultVariant(a)) {
|
|
2658
|
-
const i = n == null ? void 0 : n.find((
|
|
2659
|
-
var
|
|
2660
|
-
return
|
|
2657
|
+
const i = n == null ? void 0 : n.find((o) => {
|
|
2658
|
+
var r;
|
|
2659
|
+
return o.id === ((r = a.defaultVariant) == null ? void 0 : r.id);
|
|
2661
2660
|
});
|
|
2662
2661
|
return this.selectVariantLambda(A, (i == null ? void 0 : i.id) || "", e);
|
|
2663
2662
|
}
|
|
@@ -2673,8 +2672,8 @@ class xa {
|
|
|
2673
2672
|
if (a != null && a.selectedVariants) {
|
|
2674
2673
|
const i = a.selectedVariants[0].id;
|
|
2675
2674
|
if (n && i) {
|
|
2676
|
-
const
|
|
2677
|
-
|
|
2675
|
+
const o = (s = n.variants) == null ? void 0 : s.find((r) => r.id === i);
|
|
2676
|
+
o && await e.setSelectionsAndElements(A.stepName, [o], []);
|
|
2678
2677
|
}
|
|
2679
2678
|
}
|
|
2680
2679
|
}
|
|
@@ -2720,9 +2719,9 @@ class Na {
|
|
|
2720
2719
|
}
|
|
2721
2720
|
setCustomColor(A, e, t) {
|
|
2722
2721
|
const a = t.getLayouts(), s = (t.getRegionElements(e.stepName) || []).map((i) => {
|
|
2723
|
-
const
|
|
2724
|
-
if (!a.find((c) => c.panelId === (
|
|
2725
|
-
throw new L(
|
|
2722
|
+
const o = i.region;
|
|
2723
|
+
if (!a.find((c) => c.panelId === (o == null ? void 0 : o.panelId)))
|
|
2724
|
+
throw new L(o);
|
|
2726
2725
|
return new jA(i.id, this.shapeFillId, A);
|
|
2727
2726
|
}).filter((i) => !!i);
|
|
2728
2727
|
t.getCommandDispatcher()(new G(s)), t.updateStorage(e.stepName, { colour: A });
|
|
@@ -2753,15 +2752,15 @@ class Na {
|
|
|
2753
2752
|
n && (n.command && a.getCommandDispatcher()(n.command), n.followup && await n.followup());
|
|
2754
2753
|
}
|
|
2755
2754
|
async reload(A, e, t) {
|
|
2756
|
-
var
|
|
2755
|
+
var r;
|
|
2757
2756
|
const a = e.getSerializedStep(
|
|
2758
2757
|
A.stepName,
|
|
2759
2758
|
t.serializableWorkflow.steps
|
|
2760
|
-
), i = Object.values(t.layouts).map((c) => c.elements).flat().filter((c) => c.stepName === A.stepName),
|
|
2759
|
+
), i = Object.values(t.layouts).map((c) => c.elements).flat().filter((c) => c.stepName === A.stepName), o = A.option;
|
|
2761
2760
|
if (a != null && a.selectedVariants) {
|
|
2762
2761
|
const c = a.selectedVariants[0].id;
|
|
2763
|
-
if (
|
|
2764
|
-
const B = (
|
|
2762
|
+
if (o && c) {
|
|
2763
|
+
const B = (r = o.variants) == null ? void 0 : r.find((l) => l.id === c);
|
|
2765
2764
|
if (B) {
|
|
2766
2765
|
const l = i.map((d) => ({ id: d.id, region: d.stepRegion }));
|
|
2767
2766
|
await e.setSelectionsAndElements(
|
|
@@ -2780,23 +2779,23 @@ class Na {
|
|
|
2780
2779
|
}
|
|
2781
2780
|
}
|
|
2782
2781
|
async selectVariantCommand(A, e, t, a) {
|
|
2783
|
-
var
|
|
2784
|
-
const n = a.getLayouts(), s = (
|
|
2785
|
-
var
|
|
2786
|
-
if (((
|
|
2782
|
+
var o;
|
|
2783
|
+
const n = a.getLayouts(), s = (o = a.getStepStorage(A.stepName)) == null ? void 0 : o.colour, i = () => {
|
|
2784
|
+
var r, c;
|
|
2785
|
+
if (((r = e.variant) == null ? void 0 : r.color) === "#custom")
|
|
2787
2786
|
return s || "#FFFFFF";
|
|
2788
2787
|
if ((c = e.variant) != null && c.color)
|
|
2789
2788
|
return e.variant.color;
|
|
2790
2789
|
throw new Error("Failed to resolve color for shape step.");
|
|
2791
2790
|
};
|
|
2792
2791
|
if (t.length > 0) {
|
|
2793
|
-
const
|
|
2792
|
+
const r = (B) => {
|
|
2794
2793
|
const l = B.region;
|
|
2795
2794
|
if (!n.find((C) => C.panelId === (l == null ? void 0 : l.panelId)))
|
|
2796
2795
|
throw new L(l);
|
|
2797
2796
|
const E = i();
|
|
2798
2797
|
return new jA(B.id, this.shapeFillId, E);
|
|
2799
|
-
}, c = t.map(
|
|
2798
|
+
}, c = t.map(r).filter((B) => !!B);
|
|
2800
2799
|
return {
|
|
2801
2800
|
command: new G(c),
|
|
2802
2801
|
followup: async () => {
|
|
@@ -2808,7 +2807,7 @@ class Na {
|
|
|
2808
2807
|
}
|
|
2809
2808
|
};
|
|
2810
2809
|
} else {
|
|
2811
|
-
const
|
|
2810
|
+
const r = (d) => {
|
|
2812
2811
|
const E = n.find((u) => u.panelId === d.panelId);
|
|
2813
2812
|
if (!E)
|
|
2814
2813
|
throw new L(d);
|
|
@@ -2859,7 +2858,7 @@ class Na {
|
|
|
2859
2858
|
E
|
|
2860
2859
|
)
|
|
2861
2860
|
};
|
|
2862
|
-
}, c = A.data.regions.map(
|
|
2861
|
+
}, c = A.data.regions.map(r), B = c.filter((d) => !!d).map((d) => d == null ? void 0 : d.command), l = c.filter((d) => !!d).map((d) => ({ id: d.id, region: d.region }));
|
|
2863
2862
|
return {
|
|
2864
2863
|
command: new G(B),
|
|
2865
2864
|
followup: async () => {
|
|
@@ -2921,9 +2920,9 @@ class Ua {
|
|
|
2921
2920
|
);
|
|
2922
2921
|
const a = [], n = e ? Mt(e.assetUrl) : void 0;
|
|
2923
2922
|
if (n) {
|
|
2924
|
-
const s = t.split("").filter((
|
|
2925
|
-
for (let
|
|
2926
|
-
i[
|
|
2923
|
+
const s = t.split("").filter((o) => !Ha.includes(o)).join(""), i = s.split("").map((o) => n.getFont().charToGlyph(o));
|
|
2924
|
+
for (let o = 0; o < i.length; o++)
|
|
2925
|
+
i[o].name === ".notdef" && a.push(String.fromCharCode(s.charCodeAt(o)));
|
|
2927
2926
|
}
|
|
2928
2927
|
for (let s = 0; s < a.length; s++)
|
|
2929
2928
|
t = t.replaceAll(a[s], "");
|
|
@@ -2932,10 +2931,10 @@ class Ua {
|
|
|
2932
2931
|
const a = [];
|
|
2933
2932
|
e.data && e.data.maxLength && A.length > e.data.maxLength && a.push({ localizationKey: "workflow.steps.text.characterLimit" });
|
|
2934
2933
|
const n = t.getProfanities(), s = XA(A.toLowerCase());
|
|
2935
|
-
for (const
|
|
2936
|
-
for (const
|
|
2937
|
-
const c = n[
|
|
2938
|
-
if (
|
|
2934
|
+
for (const o of s)
|
|
2935
|
+
for (const r in n) {
|
|
2936
|
+
const c = n[r].toLowerCase().replace(/\s/g, "");
|
|
2937
|
+
if (o === c) {
|
|
2939
2938
|
a.push({ localizationKey: "workflow.steps.text.blockedProfanity" });
|
|
2940
2939
|
break;
|
|
2941
2940
|
}
|
|
@@ -2952,7 +2951,7 @@ class Ua {
|
|
|
2952
2951
|
if (t)
|
|
2953
2952
|
await this.reload(A, e, t);
|
|
2954
2953
|
else {
|
|
2955
|
-
const
|
|
2954
|
+
const o = this.getDefaultImageFillVariant(A.data), r = (n = o == null ? void 0 : o.asset) == null ? void 0 : n.fileLink, c = r ? await VA(r) : void 0, B = c ? {
|
|
2956
2955
|
src: c.src,
|
|
2957
2956
|
height: c.height,
|
|
2958
2957
|
width: c.width,
|
|
@@ -2965,7 +2964,7 @@ class Ua {
|
|
|
2965
2964
|
}), e.updateMetadata(A.stepName, {
|
|
2966
2965
|
text: A.data.defaultText || "",
|
|
2967
2966
|
color: ((i = await this.getDefaultColorVariant(A.data)) == null ? void 0 : i.name) || await this.getDefaultColor(A.data),
|
|
2968
|
-
fillImage:
|
|
2967
|
+
fillImage: o == null ? void 0 : o.name
|
|
2969
2968
|
});
|
|
2970
2969
|
const l = z.getDefaultVariant(a);
|
|
2971
2970
|
if (l)
|
|
@@ -3009,7 +3008,7 @@ class Ua {
|
|
|
3009
3008
|
return [];
|
|
3010
3009
|
}
|
|
3011
3010
|
async changeFillColor(A, e, t, a) {
|
|
3012
|
-
var
|
|
3011
|
+
var o;
|
|
3013
3012
|
if (!A.data || !A.data.regions)
|
|
3014
3013
|
return;
|
|
3015
3014
|
const n = a.getCommandDispatcher();
|
|
@@ -3017,14 +3016,14 @@ class Ua {
|
|
|
3017
3016
|
const s = A.data.colorOption, i = s ? this.createTextFillSpotColor(s, e.variant) : void 0;
|
|
3018
3017
|
s ? a.updateStorage(A.stepName, {
|
|
3019
3018
|
color: e.fill,
|
|
3020
|
-
colorProfileAssetKey: (
|
|
3019
|
+
colorProfileAssetKey: (o = s.colorProfile) == null ? void 0 : o.key
|
|
3021
3020
|
}) : a.updateStorage(A.stepName, {
|
|
3022
3021
|
color: e.fill
|
|
3023
3022
|
});
|
|
3024
|
-
for (const
|
|
3023
|
+
for (const r of t) {
|
|
3025
3024
|
if (!e.fill)
|
|
3026
3025
|
throw new Error("Fill not set on new color selection!");
|
|
3027
|
-
const c = new yt(
|
|
3026
|
+
const c = new yt(r.id, e.fill, i);
|
|
3028
3027
|
n(c);
|
|
3029
3028
|
}
|
|
3030
3029
|
}
|
|
@@ -3051,18 +3050,18 @@ class Ua {
|
|
|
3051
3050
|
return Promise.resolve([]);
|
|
3052
3051
|
}
|
|
3053
3052
|
async changeFillImage(A, e, t, a) {
|
|
3054
|
-
var i,
|
|
3053
|
+
var i, o;
|
|
3055
3054
|
if (!A.data || !A.data.regions)
|
|
3056
3055
|
return;
|
|
3057
|
-
const n = a.getCommandDispatcher(), s = (
|
|
3056
|
+
const n = a.getCommandDispatcher(), s = (o = (i = A.option) == null ? void 0 : i.variants) == null ? void 0 : o.find((r) => {
|
|
3058
3057
|
var c;
|
|
3059
|
-
return ((c =
|
|
3058
|
+
return ((c = r.asset) == null ? void 0 : c.fileLink) === e.src;
|
|
3060
3059
|
});
|
|
3061
3060
|
a.updateMetadata(A.stepName, { fillImage: s == null ? void 0 : s.name }), a.updateStorage(A.stepName, {
|
|
3062
3061
|
fillImage: e
|
|
3063
3062
|
});
|
|
3064
|
-
for (const
|
|
3065
|
-
const c = new JA(
|
|
3063
|
+
for (const r of t) {
|
|
3064
|
+
const c = new JA(r.id, e);
|
|
3066
3065
|
n(c);
|
|
3067
3066
|
}
|
|
3068
3067
|
}
|
|
@@ -3081,9 +3080,9 @@ class Ua {
|
|
|
3081
3080
|
};
|
|
3082
3081
|
if (i.errors.length > 0)
|
|
3083
3082
|
return i.helperText = i.errors[0].localizationKey, i;
|
|
3084
|
-
const
|
|
3085
|
-
i.helperText = `${
|
|
3086
|
-
const
|
|
3083
|
+
const o = (t.data.maxLength - s.length).toString();
|
|
3084
|
+
i.helperText = `${o} characters remaining`;
|
|
3085
|
+
const r = a.getTransaction().bulk && t.data.varyText || !1, c = [], B = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map();
|
|
3087
3086
|
for (const d of e) {
|
|
3088
3087
|
if (!d.fontData)
|
|
3089
3088
|
throw new v("Failed to resolve font data for text.");
|
|
@@ -3097,11 +3096,11 @@ class Ua {
|
|
|
3097
3096
|
B.set(d.id, E), l.set(d.id, C);
|
|
3098
3097
|
const w = t.data.curved ? s : (C || []).join(`
|
|
3099
3098
|
`);
|
|
3100
|
-
c.push(this.generateTextChangeCommandsForRegion(E, t.data, d.id, w,
|
|
3099
|
+
c.push(this.generateTextChangeCommandsForRegion(E, t.data, d.id, w, r));
|
|
3101
3100
|
}
|
|
3102
3101
|
return !t.data.curved && e.length > 0 && !Array.from(l.values()).every((E) => E) ? (i.errors.push({ localizationKey: "workflow.steps.text.doesNotFit" }), i) : (a.updateStorage(t.stepName, { text: A }), a.updateMetadata(t.stepName, {
|
|
3103
3102
|
text: s
|
|
3104
|
-
}), n.defaultCleared && a.setMandatoryFulfilled(t.stepName, !0), i.command = new G(c), i.command.varying =
|
|
3103
|
+
}), n.defaultCleared && a.setMandatoryFulfilled(t.stepName, !0), i.command = new G(c), i.command.varying = r, i);
|
|
3105
3104
|
}
|
|
3106
3105
|
async selectVariant(A, e, t, a, n) {
|
|
3107
3106
|
const s = await this.selectVariantCommand(
|
|
@@ -3128,15 +3127,15 @@ class Ua {
|
|
|
3128
3127
|
}
|
|
3129
3128
|
}
|
|
3130
3129
|
async reload(A, e, t) {
|
|
3131
|
-
var
|
|
3130
|
+
var r, c, B;
|
|
3132
3131
|
const a = e.getSerializedStep(
|
|
3133
3132
|
A.stepName,
|
|
3134
3133
|
t.serializableWorkflow.steps
|
|
3135
|
-
), i = Object.values(t.layouts).map((l) => l.elements).flat().filter((l) => l.stepName === A.stepName),
|
|
3134
|
+
), i = Object.values(t.layouts).map((l) => l.elements).flat().filter((l) => l.stepName === A.stepName), o = A.option;
|
|
3136
3135
|
if (a != null && a.selectedVariants) {
|
|
3137
3136
|
const l = a.selectedVariants[0].id;
|
|
3138
|
-
if (
|
|
3139
|
-
const d = (
|
|
3137
|
+
if (o && l) {
|
|
3138
|
+
const d = (r = o.variants) == null ? void 0 : r.find((E) => E.id === l);
|
|
3140
3139
|
if (d) {
|
|
3141
3140
|
const E = await this.fontDataFromVariant(d), C = i.map((u) => ({ id: u.id, region: u.stepRegion })), w = (c = a.storage) == null ? void 0 : c.color, Q = (B = a.storage) == null ? void 0 : B.text;
|
|
3142
3141
|
await e.setSelectionsAndElements(
|
|
@@ -3190,13 +3189,13 @@ class Ua {
|
|
|
3190
3189
|
name: a.names.fullName.en
|
|
3191
3190
|
};
|
|
3192
3191
|
}
|
|
3193
|
-
async selectVariantCommand(A, e, t, a, n, s, i,
|
|
3192
|
+
async selectVariantCommand(A, e, t, a, n, s, i, o) {
|
|
3194
3193
|
var B;
|
|
3195
|
-
const
|
|
3194
|
+
const r = n.markUpdatePending(), c = await this.fontDataFromVariant(e);
|
|
3196
3195
|
if (a.length > 0) {
|
|
3197
3196
|
const l = a.map((C) => new we(C.id, c));
|
|
3198
|
-
if (
|
|
3199
|
-
const C = a.map((w) => new JA(w.id,
|
|
3197
|
+
if (o) {
|
|
3198
|
+
const C = a.map((w) => new JA(w.id, o));
|
|
3200
3199
|
l.push(...C);
|
|
3201
3200
|
}
|
|
3202
3201
|
const d = await this.changeInputTextWithRegion(
|
|
@@ -3213,7 +3212,7 @@ class Ua {
|
|
|
3213
3212
|
return d && l.push(d), {
|
|
3214
3213
|
command: new G(l),
|
|
3215
3214
|
followup: async () => {
|
|
3216
|
-
n.markUpdateCompleted(
|
|
3215
|
+
n.markUpdateCompleted(r), await n.setSelectionsAndElements(A.stepName, [e], a);
|
|
3217
3216
|
}
|
|
3218
3217
|
};
|
|
3219
3218
|
} else {
|
|
@@ -3235,16 +3234,16 @@ class Ua {
|
|
|
3235
3234
|
s,
|
|
3236
3235
|
i
|
|
3237
3236
|
), E = l.flatMap((w) => w.commands);
|
|
3238
|
-
if (
|
|
3237
|
+
if (o) {
|
|
3239
3238
|
const w = l.map(
|
|
3240
|
-
(Q) => new JA(Q.regionElement.id,
|
|
3239
|
+
(Q) => new JA(Q.regionElement.id, o)
|
|
3241
3240
|
);
|
|
3242
3241
|
E.push(...w);
|
|
3243
3242
|
}
|
|
3244
3243
|
return d && E.push(d), {
|
|
3245
3244
|
command: new G(E),
|
|
3246
3245
|
followup: async () => {
|
|
3247
|
-
n.markUpdateCompleted(
|
|
3246
|
+
n.markUpdateCompleted(r);
|
|
3248
3247
|
}
|
|
3249
3248
|
};
|
|
3250
3249
|
}
|
|
@@ -3260,7 +3259,7 @@ class Ua {
|
|
|
3260
3259
|
async createTextboxRegions(A, e, t, a, n, s) {
|
|
3261
3260
|
if (!t || !t.regions)
|
|
3262
3261
|
throw new Error("Step data not supplied");
|
|
3263
|
-
const i = s.getTransaction().bulk && t.varyText || !1,
|
|
3262
|
+
const i = s.getTransaction().bulk && t.varyText || !1, o = i ? "" : n.text || t.defaultText || "", r = this.getProcessedInput(o, t, !1), c = async (l) => {
|
|
3264
3263
|
var w;
|
|
3265
3264
|
const E = s.getLayouts().find((Q) => Q.panelId === l.panelId), C = k();
|
|
3266
3265
|
try {
|
|
@@ -3288,8 +3287,8 @@ class Ua {
|
|
|
3288
3287
|
layer: l.layer,
|
|
3289
3288
|
layerIndex: l.layerIndex,
|
|
3290
3289
|
rotation: l.rotation,
|
|
3291
|
-
text:
|
|
3292
|
-
input:
|
|
3290
|
+
text: r,
|
|
3291
|
+
input: o,
|
|
3293
3292
|
type: H.Textbox,
|
|
3294
3293
|
vertical: t.vertical,
|
|
3295
3294
|
x: l.left,
|
|
@@ -3315,11 +3314,11 @@ class Ua {
|
|
|
3315
3314
|
rotation: p.rotation,
|
|
3316
3315
|
panelId: ""
|
|
3317
3316
|
},
|
|
3318
|
-
[
|
|
3317
|
+
[r],
|
|
3319
3318
|
{ size: t.size, minSize: t.minSize, maxSize: t.maxSize }
|
|
3320
3319
|
);
|
|
3321
3320
|
m.set(p.id, Y), M.set(p.id, F);
|
|
3322
|
-
const U = t.curved || t.vertical ?
|
|
3321
|
+
const U = t.curved || t.vertical ? r : (F || []).join(`
|
|
3323
3322
|
`);
|
|
3324
3323
|
D.push(
|
|
3325
3324
|
this.generateTextChangeCommandsForRegion(Y, t, p.id, U, i)
|
|
@@ -3343,9 +3342,9 @@ class Ua {
|
|
|
3343
3342
|
B.map((l) => l.regionElement),
|
|
3344
3343
|
async () => {
|
|
3345
3344
|
s.updateMetadata(A, {
|
|
3346
|
-
text:
|
|
3345
|
+
text: o
|
|
3347
3346
|
}), s.updateStorage(A, {
|
|
3348
|
-
text:
|
|
3347
|
+
text: o
|
|
3349
3348
|
});
|
|
3350
3349
|
}
|
|
3351
3350
|
), B;
|
|
@@ -3353,16 +3352,16 @@ class Ua {
|
|
|
3353
3352
|
generateTextChangeCommandsForRegion(A, e, t, a, n) {
|
|
3354
3353
|
const s = [], i = new Yt(t, a);
|
|
3355
3354
|
if (i.varying = n, s.push(i), !e.size) {
|
|
3356
|
-
const
|
|
3357
|
-
|
|
3355
|
+
const r = new St(t, A);
|
|
3356
|
+
r.varying = n, s.push(r);
|
|
3358
3357
|
}
|
|
3359
|
-
const
|
|
3360
|
-
return
|
|
3358
|
+
const o = new G(s);
|
|
3359
|
+
return o.varying = n, o;
|
|
3361
3360
|
}
|
|
3362
3361
|
/**
|
|
3363
3362
|
* @deprecated
|
|
3364
3363
|
*/
|
|
3365
|
-
async changeInputTextWithRegion(A, e, t, a, n, s, i,
|
|
3364
|
+
async changeInputTextWithRegion(A, e, t, a, n, s, i, o, r, c) {
|
|
3366
3365
|
const B = (a || "").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g, ""), l = this.getProcessedInput(B, A.data, i), d = s.getRegionElements(A.stepName), E = /* @__PURE__ */ new Map(), C = /* @__PURE__ */ new Map();
|
|
3367
3366
|
for (const p of d)
|
|
3368
3367
|
if (p.region) {
|
|
@@ -3383,16 +3382,16 @@ class Ua {
|
|
|
3383
3382
|
for (const M in p) {
|
|
3384
3383
|
const Y = p[M].toLowerCase().replace(/\s/g, "");
|
|
3385
3384
|
if (m === Y)
|
|
3386
|
-
return
|
|
3385
|
+
return o(!0), { error: "Blocked profanity." };
|
|
3387
3386
|
}
|
|
3388
3387
|
return !A.data.vertical && !A.data.allowNewlines && (l.includes(`
|
|
3389
|
-
`) || l.includes("\r")) ? (
|
|
3388
|
+
`) || l.includes("\r")) ? (o(!0), { error: "Cannot span multiple lines." }) : !A.data.curved && !Array.from(C.values()).every((M) => M) ? (o(!0), { error: "Does not fit." }) : (o(!1), { info: (A.data.maxLength - l.length).toString() });
|
|
3390
3389
|
})();
|
|
3391
3390
|
if (Q.error) {
|
|
3392
|
-
|
|
3391
|
+
r(Q.error);
|
|
3393
3392
|
return;
|
|
3394
3393
|
}
|
|
3395
|
-
if (
|
|
3394
|
+
if (r(`${Q.info} characters remaining` || ""), c)
|
|
3396
3395
|
return;
|
|
3397
3396
|
s.updateStorage(A.stepName, { text: B }), s.updateMetadata(A.stepName, {
|
|
3398
3397
|
text: this.injectReplaceableText(B, A.data)
|
|
@@ -4717,16 +4716,16 @@ const nt = (g, A, e, t) => {
|
|
|
4717
4716
|
return A = A.replace(/feoffset/gi, "feOffset"), A = A.replace(/fegaussianblur/gi, "feGaussianBlur"), A = A.replace(/feblend/gi, "feBlend"), A = A.replace(/lineargradient/gi, "linearGradient"), A = A.replace(/stddeviation/gi, "stdDeviation"), A;
|
|
4718
4717
|
};
|
|
4719
4718
|
function re(g, A, e, t, a, n) {
|
|
4720
|
-
const s = a || 1, i = n || 1,
|
|
4719
|
+
const s = a || 1, i = n || 1, o = {
|
|
4721
4720
|
x: A[0],
|
|
4722
4721
|
y: A[1],
|
|
4723
4722
|
width: A[2] - A[0],
|
|
4724
4723
|
height: A[3] - A[1]
|
|
4725
4724
|
};
|
|
4726
|
-
if (
|
|
4725
|
+
if (o.width <= 0)
|
|
4727
4726
|
return;
|
|
4728
|
-
const
|
|
4729
|
-
g.setAttribute("transform", `translate(${c} ${B}) scale(${
|
|
4727
|
+
const r = Ta(o.height, o.width, e * s, t * i), c = (t - r * o.width) / 2 - r * o.x, B = (e - r * o.height) / 2 - r * o.y;
|
|
4728
|
+
g.setAttribute("transform", `translate(${c} ${B}) scale(${r} ${r})`);
|
|
4730
4729
|
}
|
|
4731
4730
|
function Ta(g, A, e, t) {
|
|
4732
4731
|
const a = e / g, n = t / A;
|
|
@@ -4761,10 +4760,10 @@ class ce {
|
|
|
4761
4760
|
let e = "";
|
|
4762
4761
|
const a = (n) => {
|
|
4763
4762
|
const s = [], i = n.relative ? n.type : n.type.toUpperCase();
|
|
4764
|
-
let
|
|
4765
|
-
const
|
|
4766
|
-
|
|
4767
|
-
for (const c of
|
|
4763
|
+
let o = e !== i;
|
|
4764
|
+
const r = pe[n.type];
|
|
4765
|
+
o && (s.push(i), e = i);
|
|
4766
|
+
for (const c of r) {
|
|
4768
4767
|
const B = n[c];
|
|
4769
4768
|
let l;
|
|
4770
4769
|
switch (typeof B) {
|
|
@@ -4777,7 +4776,7 @@ class ce {
|
|
|
4777
4776
|
default:
|
|
4778
4777
|
throw new rA("Failed to encode path.");
|
|
4779
4778
|
}
|
|
4780
|
-
|
|
4779
|
+
o || s.push(" "), s.push(l), o = !1;
|
|
4781
4780
|
}
|
|
4782
4781
|
return s.join("");
|
|
4783
4782
|
};
|
|
@@ -4787,24 +4786,24 @@ class ce {
|
|
|
4787
4786
|
const e = /([mzlhvcsqta])([^mzlhvcsqta]*)/gi, t = /-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi, a = [];
|
|
4788
4787
|
let n;
|
|
4789
4788
|
for (e.lastIndex = 0; n = e.exec(A); ) {
|
|
4790
|
-
const s = n[1].toLowerCase(), i = (n[2].match(t) || []).map(parseFloat),
|
|
4791
|
-
if (i.length <
|
|
4789
|
+
const s = n[1].toLowerCase(), i = (n[2].match(t) || []).map(parseFloat), o = s === n[1], r = pe[s];
|
|
4790
|
+
if (i.length < r.length)
|
|
4792
4791
|
throw new rA(
|
|
4793
|
-
`Path type "${s}" given ${i.length} arguments, expected ${
|
|
4792
|
+
`Path type "${s}" given ${i.length} arguments, expected ${r.length}.`
|
|
4794
4793
|
);
|
|
4795
|
-
if (
|
|
4796
|
-
if (i.length %
|
|
4794
|
+
if (r.length > 0) {
|
|
4795
|
+
if (i.length % r.length !== 0)
|
|
4797
4796
|
throw new rA(
|
|
4798
|
-
`Path type "${s}" given ${i.length} arguments, not divisible by ${
|
|
4797
|
+
`Path type "${s}" given ${i.length} arguments, not divisible by ${r.length}`
|
|
4799
4798
|
);
|
|
4800
|
-
for (let c = 0; c < i.length /
|
|
4801
|
-
const B = { type: s, relative:
|
|
4802
|
-
for (let l = 0; l <
|
|
4803
|
-
B[
|
|
4799
|
+
for (let c = 0; c < i.length / r.length; c++) {
|
|
4800
|
+
const B = { type: s, relative: o };
|
|
4801
|
+
for (let l = 0; l < r.length; l++)
|
|
4802
|
+
B[r[l]] = i[c * r.length + l];
|
|
4804
4803
|
a.push(B);
|
|
4805
4804
|
}
|
|
4806
4805
|
} else
|
|
4807
|
-
a.push({ type: s, relative:
|
|
4806
|
+
a.push({ type: s, relative: o });
|
|
4808
4807
|
}
|
|
4809
4808
|
return a;
|
|
4810
4809
|
}
|
|
@@ -4815,12 +4814,12 @@ class ce {
|
|
|
4815
4814
|
["x", "y"]
|
|
4816
4815
|
], a = (n) => {
|
|
4817
4816
|
for (let s = 0; s < t.length; s++) {
|
|
4818
|
-
const [i,
|
|
4819
|
-
if (i in n &&
|
|
4820
|
-
const
|
|
4817
|
+
const [i, o] = t[s];
|
|
4818
|
+
if (i in n && o in n) {
|
|
4819
|
+
const r = [n[i], n[o]], c = e(r);
|
|
4821
4820
|
if (c.length < 2)
|
|
4822
4821
|
throw new rA("Transformer must return at least 2 points.");
|
|
4823
|
-
n[i] = c[0], n[
|
|
4822
|
+
n[i] = c[0], n[o] = c[1];
|
|
4824
4823
|
}
|
|
4825
4824
|
}
|
|
4826
4825
|
return n;
|
|
@@ -4868,13 +4867,13 @@ class La extends ie {
|
|
|
4868
4867
|
p.appendChild(Y), Y.setAttribute("fill", "#9d2621"), Y.setAttribute("transform", "translate(1,1)"), Y.innerHTML = t;
|
|
4869
4868
|
const F = R("g");
|
|
4870
4869
|
return p.appendChild(F), F.setAttribute("fill", "yellow"), F.innerHTML = t, new ce(p).transform(([S, b]) => [S, b + (n / 2 - S) ** 2 / (n * 2.9)]), p;
|
|
4871
|
-
}, [
|
|
4872
|
-
if (!
|
|
4870
|
+
}, [o, r, c] = tt(e);
|
|
4871
|
+
if (!o)
|
|
4873
4872
|
return "";
|
|
4874
4873
|
const B = R("defs");
|
|
4875
|
-
|
|
4876
|
-
const l =
|
|
4877
|
-
|
|
4874
|
+
o.appendChild(B), at(o, B, e);
|
|
4875
|
+
const l = r * 0.23, d = c * 0.94, E = c * 0.04, C = r * 0.53, w = R("g");
|
|
4876
|
+
o.appendChild(w), w.setAttribute("transform", `translate(${E} ${C}) rotate(-21)`);
|
|
4878
4877
|
const Q = oe(l, d);
|
|
4879
4878
|
Q.setAttribute("opacity", "0"), w.appendChild(Q);
|
|
4880
4879
|
const h = R("g");
|
|
@@ -4882,7 +4881,7 @@ class La extends ie {
|
|
|
4882
4881
|
const u = i();
|
|
4883
4882
|
h.appendChild(u);
|
|
4884
4883
|
const f = ne(s);
|
|
4885
|
-
return re(h, f, l, d), st(
|
|
4884
|
+
return re(h, f, l, d), st(o.outerHTML);
|
|
4886
4885
|
}
|
|
4887
4886
|
}
|
|
4888
4887
|
const Oa = "data:application/octet-stream;base64,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ZWxmIE1ha2VyIDIuMy41AABNAGEAbAB0AGUAcwBlAHIAcwBSAGUAZwB1AGwAYQByAABNYWx0ZXNlcnNSZWd1bGFyAABNAGEAbAB0AGUAcwBlAHIAcwAATWFsdGVzZXJzAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAAAAAAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAABAAIBAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCsAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAljb250cm9sTEYJY29udHJvbENSB0FwLmxpZ2EHQWoubGlnYQdFdC5saWdhB0VmLmxpZ2EHRWoubGlnYQdFay5saWdhB0VsLmxpZ2EHRWIubGlnYQdGdC5saWdhB0ZoLmxpZ2EHRmsubGlnYQdGbC5saWdhB0ZiLmxpZ2EHSHQubGlnYQdIZi5saWdhB0l0LmxpZ2EHSXAubGlnYQdJZi5saWdhB0lqLmxpZ2EHSWwubGlnYQdJYi5saWdhB0p0LmxpZ2EHSmYubGlnYQdKaC5saWdhB0prLmxpZ2EHSmwubGlnYQdKYi5saWdhB0t0LmxpZ2EHS3AubGlnYQdLeS5saWdhB0xqLmxpZ2EHTWoubGlnYQdNaC5saWdhB01mLmxpZ2EHTnQubGlnYQdOZi5saWdhB09mLmxpZ2EHT3oubGlnYQdQcS5saWdhB1B3LmxpZ2EHUHIubGlnYQdQdC5saWdhB1B5LmxpZ2EHUHUubGlnYQdQaS5saWdhB1BmLmxpZ2EHUGgubGlnYQdQai5saWdhB1BrLmxpZ2EHUGwubGlnYQdQei5saWdhB1B4LmxpZ2EHUHYubGlnYQdQYi5saWdhB1BuLmxpZ2EHUG0ubGlnYQdScC5saWdhB1JmLmxpZ2EHUmoubGlnYQdUdC5saWdhB1RmLmxpZ2EHVGgubGlnYQdUay5saWdhB1RsLmxpZ2EHVGIubGlnYQdVdC5saWdhB1VzLmxpZ2EHVWYubGlnYQdWdC5saWdhB1ZzLmxpZ2EHVmYubGlnYQdWbC5saWdhB1d0LmxpZ2EHV2YubGlnYQdYcC5saWdhB1l0LmxpZ2EHWWkubGlnYQdZZi5saWdhB1loLmxpZ2EHWWwubGlnYQdZay5saWdhB1liLmxpZ2EHQWYubGlnYQdDeS5saWdhB0VoLmxpZ2EHR3IubGlnYQdPcC5saWdhB2J0LmxpZ2EHYnIubGlnYQdiZi5saWdhB2JqLmxpZ2EHYnoubGlnYQdkdC5saWdhB2VmLmxpZ2EHZnQubGlnYQdmaC5saWdhB2ZiLmxpZ2EHZmsubGlnYQdnai5saWdhB2pqLmxpZ2EHeWoubGlnYQd0dC5saWdhB3RmLmxpZ2EHdGgubGlnYQd0aS5saWdhB3RrLmxpZ2EHdGwubGlnYQh0dGgubGlnYQhlZmYubGlnYQhlZmIubGlnYQdmZi5saWdhB2ZpLmxpZ2EHZmwubGlnYQAAAAAAAAH//wACAAEAAAAMAAAAHAAAAAIAAgADADoAAQA7AKsAAgAEAAAAAgAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQQIAB0AQABaAGQAngDIANIA5AEWAUgBYgFsAYYBmAGyAkQCXgKQAqoCzALeAugDIgNMA1YDdAOuA7gDwgP+AAMACAAOABQAjQACACUAPAACACkAOwACAC8AAQAEAI4AAgA4AAcAEAAWABwAIgAoAC4ANACPAAIAJwBCAAIAIQBBAAIAKwBAAAIAKgA/AAIAKQA+AAIAJQA9AAIAMwAFAAwAEgAYAB4AJABHAAIAIQBGAAIAKwBFAAIAKgBEAAIAJwBDAAIAMwABAAQAkAACADEAAgAGAAwASQACACUASAACADMABgAOABQAGgAgACYALABPAAIAIQBOAAIAKwBNAAIAKQBMAAIAJQBLAAIALwBKAAIAMwAGAA4AFAAaACAAJgAsAFUAAgAhAFQAAgArAFMAAgAqAFIAAgAnAFEAAgAlAFAAAgAzAAMACAAOABQAWAACADgAVwACAC8AVgACADMAAQAEAFkAAgApAAMACAAOABQAXAACACUAWwACACcAWgACACkAAgAGAAwAXgACACUAXQACADMAAwAIAA4AFACRAAIALwBgAAIAOQBfAAIAJQASACYALAAyADgAPgBEAEoAUABWAFwAYgBoAG4AdAB6AIAAhgCMAHIAAgAsAHEAAgAtAHAAAgAhAG8AAgA1AG4AAgA3AG0AAgA5AGwAAgArAGsAAgAqAGoAAgApAGkAAgAnAGgAAgAlAGcAAgAoAGYAAgA0AGUAAgA4AGQAAgAzAGMAAgAxAGIAAgA2AGEAAgAwAAMACAAOABQAdQACACkAdAACACUAcwACAC8ABgAOABQAGgAgACYALAB7AAIAIQB6AAIAKwB5AAIAKgB4AAIAJwB3AAIAJQB2AAIAMwADAAgADgAUAH4AAgAlAH0AAgAyAHwAAgAzAAQACgAQABYAHACCAAIAKwCBAAIAJQCAAAIAMgB/AAIAMwACAAYADACEAAIAJQCDAAIAMwABAAQAhQACAC8ABwAQABYAHAAiACgALgA0AIwAAgAhAIsAAgAqAIoAAgArAIkAAgAnAIgAAgAlAIcAAgAoAIYAAgAzAAUADAASABgAHgAkAJYAAgA5AJUAAgApAJQAAgAlAJMAAgAxAJIAAgAzAAEABACXAAIAMwADAAgAEAAYAKgAAwAlACEApwADACUAJQCYAAIAJQAHABAAFgAcACIAKAAuADQAqwACACsAqgACACgAqQACACUAnAACACoAmwACACEAmgACACcAmQACADMAAQAEAJ0AAgApAAEABACeAAIAKQAHABAAGAAeACQAKgAwADYApgADADMAJwClAAIAKwCkAAIAKgCjAAIAKACiAAIAJwChAAIAJQCgAAIAMwABAAQAnwACACkAAQAdAAYACAAKAAsADAANAA4ADwAQABEAEgATABQAFQAXABkAGgAbABwAHQAeACEAIwAkACUAJgApADMAOAAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFrZXJuAAgAAAABAAAAAQAEAAIAAAABAAgAAQPGAAQAAABEAJIAnADSAOABIgEoATYBPAFKAVABXgFkAW4BfAGKAawBsgHAAcYB1AHiAewB/gIIAhYCSAJiAnAChgKcAqoCvALKAtAC6gL0AvoDAAMKAxADGgMgAyYDLAMyAzgDOAMyAz4DRANOAz4DVANaA2ADIANmA2wDcgN4A34DiAOOA5gDngOkA7IDvAACAC7//AA3//IADQAl/+oAKP/8ACn/9AAq//AAK//6ACz//gAt//4AMf/qADP//AA0//wANf/+ADb/+AA5//QAAwAt//wALv/8ADb//AAQACT//AAl/+wAJv/6ACf//AAp/+wAKv/0ACv/+gAs//gALf/8AC//7gAx//gAMv/0ADT/9gA3/+oAOP/6ADn/5AABADf/+gADADX//AA3/+gAOf/6AAEALv/2AAMAKP/8ACn/6AAy/+QAAQAu//IAAwAo/+4AL//2ADX/5gABACT/8AACABgAAgAoAAQAAwAo//4ALv/wADL/+AADACf/9gAv/+4Ao//sAAgAKf/qACv/9AAu//wAL//uADH/7gAy//IAN//mAJX/9AABADYADgADACAABAAjAAQAM//4AAEAMv/8AAMAJv/+ACr/+AA3//4AAwAo//gALv/0AJn/7AACACMAAgAl/+wABAAk//wAL//8ADT/9AA4//4AAgAt//IAq//iAAMAJf/sACb/+AA3//wADAAk//wAJv/+ACj/+gAp/+AAK//+ACz/9gAt//wAL//qADH/7AAy//IAN//cAKP/4gAGACQAAgAl/9oAK//yAC//4gAx/+gAMv/8AAMAKQB+ADL/7ACeAIgABQAg//wAIv/4ACb//AAu//YANQAEAAUAKf/0ACr/+AAv//QAM//mAKP/3gADACEAHAAkAAIALv/4AAQAJf/0AC3//gAv//wAmf/8AAMAJP/wACf/+AAp/+4AAQAk//oABgAg//QAIf/wACj/9gAu/+wAL//0ADP/9AACACH//gA3//IAAQApAEIAAQAnACgAAgAzADQAqgAoAAEAMwA0AAIAMwAyAKEARgABADL/6gABADMALAABACkANAABAJoAGAABADMAMgABACkAOAABADMAMAACACUAEgAzAC4AAQApAHgAAQApADYAAQAzAC4AAQAzADgAAQAzAEIAAQAzAEwAAQAz//IAAQAnAEgAAgAl/+4Amv/oAAEAKQBiAAIAKQBaAJ4AUAABACkAVgABAKEARAADADMANgCaABIAogBKAAIAJwAsAKEARgACAC3/8gA3/+oAAQBEAAYABwAIAAkACgAMABEAFAAVABgAHQAgACEAIgAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOQA8AD0APgBIAEkASwBMAE0AUABRAFkAWgBcAF4AXwBhAGgAagB+AIEAhACIAI0AkQCYAJoAnQCeAJ8AoAChAKkAqgAAAAAAAQAAAADUGBYRAAAAANfpcqUAAAAA1+lypQ==";
|
|
@@ -4897,11 +4896,11 @@ class za extends ie {
|
|
|
4897
4896
|
return this.svg(A);
|
|
4898
4897
|
}
|
|
4899
4898
|
svg(A) {
|
|
4900
|
-
const e = ae(Oa), a = A !== "" ? ((
|
|
4899
|
+
const e = ae(Oa), a = A !== "" ? ((o) => o.charAt(0).toUpperCase() + o.substr(1).toLowerCase())(A) : "", n = e.getPath(a, 0, 72, 72), s = A.length < this.shortLength, i = s ? this.backgroundShortSvg : this.backgroundSvg;
|
|
4901
4900
|
return this.brandSvg(n, i, s);
|
|
4902
4901
|
}
|
|
4903
4902
|
brandSvg(A, e, t) {
|
|
4904
|
-
const a = A.toSVG(2), n = A.getBoundingBox(), s = n.y2 - n.y1, i = n.x2 - n.x1,
|
|
4903
|
+
const a = A.toSVG(2), n = A.getBoundingBox(), s = n.y2 - n.y1, i = n.x2 - n.x1, o = A.toPathData(3), r = () => {
|
|
4905
4904
|
const m = R("g"), M = R("g");
|
|
4906
4905
|
m.appendChild(M), M.setAttribute("stroke", "#5C1A0D"), M.setAttribute("stroke-width", "4"), M.setAttribute("transform", "translate(1,1)"), M.innerHTML = a;
|
|
4907
4906
|
const Y = R("g");
|
|
@@ -4926,9 +4925,9 @@ class za extends ie {
|
|
|
4926
4925
|
u.setAttribute("opacity", "0"), h.appendChild(u);
|
|
4927
4926
|
const f = R("g");
|
|
4928
4927
|
h.appendChild(f);
|
|
4929
|
-
const p =
|
|
4928
|
+
const p = r();
|
|
4930
4929
|
f.appendChild(p);
|
|
4931
|
-
const D = ne(
|
|
4930
|
+
const D = ne(o);
|
|
4932
4931
|
return re(f, D, E, C), c.outerHTML;
|
|
4933
4932
|
}
|
|
4934
4933
|
// 1 if true, 0 if false.
|
|
@@ -4945,7 +4944,7 @@ class ja extends ie {
|
|
|
4945
4944
|
return this.svgElement(A, e);
|
|
4946
4945
|
}
|
|
4947
4946
|
svgElement(A, e) {
|
|
4948
|
-
const t = ae(Ka), n = A !== "" ? ((u) => u.charAt(0).toUpperCase() + u.substr(1).toLowerCase())(A) : "", s = t.getPath(n, 0, 72, 72), i = s.toSVG(2),
|
|
4947
|
+
const t = ae(Ka), n = A !== "" ? ((u) => u.charAt(0).toUpperCase() + u.substr(1).toLowerCase())(A) : "", s = t.getPath(n, 0, 72, 72), i = s.toSVG(2), o = s.getBoundingBox(), r = o.x2 - o.x1, c = s.toPathData(3), B = () => {
|
|
4949
4948
|
const u = R("g");
|
|
4950
4949
|
u.classList.add("module-text-group");
|
|
4951
4950
|
const f = R("defs");
|
|
@@ -4959,7 +4958,7 @@ class ja extends ie {
|
|
|
4959
4958
|
const M = R("g");
|
|
4960
4959
|
M.classList.add("module-layer2"), u.appendChild(M), M.setAttribute("fill", "rgb(255,209,0)"), M.setAttribute("transform", "translate(1,-0.1)"), M.innerHTML = i;
|
|
4961
4960
|
const Y = R("g");
|
|
4962
|
-
return Y.classList.add("module-layer3"), u.appendChild(Y), Y.setAttribute("fill", "white"), Y.innerHTML = i, new ce(u).transform(([U, S]) => [U, S + (
|
|
4961
|
+
return Y.classList.add("module-layer3"), u.appendChild(Y), Y.setAttribute("fill", "white"), Y.innerHTML = i, new ce(u).transform(([U, S]) => [U, S + (r / 2 - U) ** 2 / (r * 6)]), u;
|
|
4963
4962
|
}, l = R("g");
|
|
4964
4963
|
l.classList.add("module-root");
|
|
4965
4964
|
const d = R("defs");
|
|
@@ -5002,7 +5001,7 @@ class Ie extends Xe {
|
|
|
5002
5001
|
}
|
|
5003
5002
|
}
|
|
5004
5003
|
class Wa {
|
|
5005
|
-
constructor(A, e, t, a, n, s, i,
|
|
5004
|
+
constructor(A, e, t, a, n, s, i, o, r, c, B = !1, l, d = !1, E = !1) {
|
|
5006
5005
|
this.workflowStatePromiseQueue = new qe(1), this.variationRecords = [], this.initialized = !1, this.readOnly = !1, this.isReloadedTransaction = !1, this.singleVariantsRenderable = !1, this.renderLayouts = () => {
|
|
5007
5006
|
var Q;
|
|
5008
5007
|
if (!this.previewService)
|
|
@@ -5016,7 +5015,7 @@ class Wa {
|
|
|
5016
5015
|
this.getCurrentVariationRecord() || null,
|
|
5017
5016
|
this.getProduct().overlayImageUrl
|
|
5018
5017
|
);
|
|
5019
|
-
}, this.updateTransaction = n, this.commandContext = a, this.reloadedState = c, this.transaction = s, this.readOnly = B, this.singleVariantsRenderable = E, this.confirmedDesign = !1, this.editedSteps = {}, this.informationResults = [], this.mandatorySteps = {}, this.pendingUpdates = [], this.selectionCost = 0, this.workflow = A, this.stepSpecificServices = {}, this.profanityFilter = e, this.pollers = [], this.allScenes = [], this.layouts = t, this.product = i, this.previewService =
|
|
5018
|
+
}, this.updateTransaction = n, this.commandContext = a, this.reloadedState = c, this.transaction = s, this.readOnly = B, this.singleVariantsRenderable = E, this.confirmedDesign = !1, this.editedSteps = {}, this.informationResults = [], this.mandatorySteps = {}, this.pendingUpdates = [], this.selectionCost = 0, this.workflow = A, this.stepSpecificServices = {}, this.profanityFilter = e, this.pollers = [], this.allScenes = [], this.layouts = t, this.product = i, this.previewService = o, this.modelContainer = l, this.stepElements = {}, this.stepInitialised = {}, this.stepMetadata = {}, this.stepSelections = {}, this.storage = {}, this.confirmCallbacks = [], this.editedCallbacks = [], this.elementsCallbacks = [], this.informationResultCallbacks = [], this.initCallbacks = [], this.mandatoryCallbacks = [], this.makingAdjustmentsCallback = [], this.metadataCallbacks = [], this.selectionCallbacks = [], this.stepSpecificStorageCallbacks = {}, this.storageCallbacks = [], this.currentVariationRecordCallbacks = [], this.variationRecordCallbacks = [], this.currentAdjustingStepId = "", this.renderableContextService = r, this.currentVariationRecord = null, this.isReloadedTransaction = d, this.initializationPromise = this.initializeDefaultWorkflowState(A, s), this.initializationPromise.then(() => {
|
|
5020
5019
|
this.initialized = !0;
|
|
5021
5020
|
}), this.initializationPromise.catch((C) => {
|
|
5022
5021
|
throw console.error(C), this.initialized = !1, new Error("Workflow initialization failed due to an error. See console.");
|
|
@@ -5029,14 +5028,14 @@ class Wa {
|
|
|
5029
5028
|
async initializeDefaultWorkflowState(A, e) {
|
|
5030
5029
|
const t = () => {
|
|
5031
5030
|
var B, l;
|
|
5032
|
-
const
|
|
5033
|
-
if (!
|
|
5031
|
+
const o = this.workflow.finalizeStepConfig;
|
|
5032
|
+
if (!o)
|
|
5034
5033
|
return;
|
|
5035
|
-
const
|
|
5036
|
-
|
|
5034
|
+
const r = o.lookAtAnimation, c = o.modelAnimation;
|
|
5035
|
+
r && ((B = this.previewService) == null || B.executeCameraAnimation(r)), c && ((l = this.modelContainer) == null || l.executeAnimation(c));
|
|
5037
5036
|
};
|
|
5038
|
-
this.reloadedState && this.reloadedState.serializableWorkflow.steps.forEach((
|
|
5039
|
-
this.storage[
|
|
5037
|
+
this.reloadedState && this.reloadedState.serializableWorkflow.steps.forEach((o) => {
|
|
5038
|
+
this.storage[o.stepName] = o.storage || {};
|
|
5040
5039
|
}), this.allScenes = await wa(
|
|
5041
5040
|
A,
|
|
5042
5041
|
{
|
|
@@ -5048,7 +5047,7 @@ class Wa {
|
|
|
5048
5047
|
},
|
|
5049
5048
|
e
|
|
5050
5049
|
);
|
|
5051
|
-
const n = aA(this.allScenes, this.stepSelections).map((
|
|
5050
|
+
const n = aA(this.allScenes, this.stepSelections).map((o) => o.silentSteps).flat(), { stepElements: s, commands: i } = await this.stepElementsForIntroducedSilentSteps(n, !!this.reloadedState);
|
|
5052
5051
|
this.commandContext.apply(new G(i), !0), this.stepElements = { ...this.stepElements, ...s }, await this.ensureStepsAreLoaded(), !this.isReloadedTransaction && this.updateStateWithServer(), this.renderLayouts(), this.reloadedState && t();
|
|
5053
5052
|
}
|
|
5054
5053
|
getProduct() {
|
|
@@ -5241,12 +5240,12 @@ class Wa {
|
|
|
5241
5240
|
contextService: this.getLayoutPreviewService()
|
|
5242
5241
|
}).getInitializationPromise();
|
|
5243
5242
|
this.setModelContainer(e), aA(this.allScenes, this.stepSelections).filter((n) => n).map((n) => n.renderableSteps).flat().filter((n) => n.type === I.Model || n.type === I.Material).forEach((n) => {
|
|
5244
|
-
var
|
|
5245
|
-
if (!((
|
|
5243
|
+
var o, r, c;
|
|
5244
|
+
if (!((o = n.option) != null && o.id)) {
|
|
5246
5245
|
console.error(`Failed to read option id from step: ${n.stepName}`);
|
|
5247
5246
|
return;
|
|
5248
5247
|
}
|
|
5249
|
-
const s = ((
|
|
5248
|
+
const s = ((r = this.stepSelections[n.stepName]) == null ? void 0 : r.selectedVariants) || [];
|
|
5250
5249
|
if (s.length === 0)
|
|
5251
5250
|
return;
|
|
5252
5251
|
const i = s[0];
|
|
@@ -5375,9 +5374,9 @@ class Wa {
|
|
|
5375
5374
|
removeElements(A) {
|
|
5376
5375
|
const e = (t, a) => Object.keys(t).reduce((n, s) => {
|
|
5377
5376
|
const i = [...t[s] || []];
|
|
5378
|
-
return a.forEach((
|
|
5379
|
-
const
|
|
5380
|
-
|
|
5377
|
+
return a.forEach((o) => {
|
|
5378
|
+
const r = i.findIndex((c) => c.id === o.id);
|
|
5379
|
+
r > -1 && i.splice(r, 1);
|
|
5381
5380
|
}), n[s] = i, n;
|
|
5382
5381
|
}, {});
|
|
5383
5382
|
this.stepElements = e(this.stepElements, A);
|
|
@@ -5394,30 +5393,30 @@ class Wa {
|
|
|
5394
5393
|
const t = this.product;
|
|
5395
5394
|
if (!t)
|
|
5396
5395
|
return Promise.resolve({ stepElements: {}, commands: [] });
|
|
5397
|
-
const a = async (
|
|
5398
|
-
if (
|
|
5399
|
-
const l = await new me(
|
|
5400
|
-
return { step:
|
|
5401
|
-
} else if (
|
|
5396
|
+
const a = async (r, c, B) => {
|
|
5397
|
+
if (r.type === I.SilentIllustration) {
|
|
5398
|
+
const l = await new me(r, c).trigger();
|
|
5399
|
+
return { step: r, results: l };
|
|
5400
|
+
} else if (r.type === I.ProductOverlay) {
|
|
5402
5401
|
const l = await new me(
|
|
5403
|
-
|
|
5402
|
+
r,
|
|
5404
5403
|
c,
|
|
5405
5404
|
B
|
|
5406
5405
|
).trigger();
|
|
5407
|
-
return { step:
|
|
5406
|
+
return { step: r, results: l };
|
|
5408
5407
|
}
|
|
5409
5408
|
return Promise.reject("Unknown silent step. This is a bug");
|
|
5410
5409
|
}, n = A.filter(
|
|
5411
|
-
(
|
|
5410
|
+
(r) => !this.stepInitialised[r.stepName]
|
|
5412
5411
|
), s = {
|
|
5413
5412
|
stepElements: {},
|
|
5414
5413
|
commands: []
|
|
5415
5414
|
}, i = [];
|
|
5416
|
-
for (const
|
|
5417
|
-
this.markStepsAsInitialised([
|
|
5418
|
-
const
|
|
5419
|
-
for (const
|
|
5420
|
-
s.stepElements[
|
|
5415
|
+
for (const r of n)
|
|
5416
|
+
this.markStepsAsInitialised([r.stepName]), e || i.push(a(r, this.layouts, t));
|
|
5417
|
+
const o = await Promise.all(i);
|
|
5418
|
+
for (const r of o)
|
|
5419
|
+
s.stepElements[r.step.stepName] = r.results.map((c) => c.regionElement), s.commands = [...s.commands, ...r.results.map((c) => c.command)];
|
|
5421
5420
|
return s;
|
|
5422
5421
|
}
|
|
5423
5422
|
getStepStorage(A) {
|
|
@@ -5457,10 +5456,10 @@ class Wa {
|
|
|
5457
5456
|
}, this.selectionCost = Object.values(this.stepSelections).reduce((D, m) => D + m.selectedVariants.map((M) => M.priceModifier || 0).reduce((M, Y) => M + Y, 0), 0), this.workflow.steps.forEach((D) => {
|
|
5458
5457
|
nA(D, this.stepSelections) || (this.stepInitialised[D.stepName] = !1, delete this.stepMetadata[D.stepName], delete this.stepSelections[D.stepName], delete this.storage[D.stepName]);
|
|
5459
5458
|
});
|
|
5460
|
-
const s = this.allScenes, i = aA(s, n),
|
|
5461
|
-
(D) => !
|
|
5459
|
+
const s = this.allScenes, i = aA(s, n), o = aA(s, this.stepSelections), r = i.map((D) => D.silentSteps).flat(), B = o.map((D) => D.silentSteps).flat().filter(
|
|
5460
|
+
(D) => !r.some((m) => m.stepName === D.stepName)
|
|
5462
5461
|
);
|
|
5463
|
-
|
|
5462
|
+
r.forEach((D) => {
|
|
5464
5463
|
nA(D, this.stepSelections) || (this.stepInitialised[D.stepName] = !1);
|
|
5465
5464
|
});
|
|
5466
5465
|
const l = this.getInvalidCanvasRegions(), { stepElements: d, commands: E } = await this.stepElementsForIntroducedSilentSteps(B, !1);
|
|
@@ -5492,7 +5491,7 @@ class Wa {
|
|
|
5492
5491
|
await this.onSelectionChange(), a && await a();
|
|
5493
5492
|
}
|
|
5494
5493
|
async ensureStepsAreLoaded() {
|
|
5495
|
-
var
|
|
5494
|
+
var o, r;
|
|
5496
5495
|
const e = aA(this.allScenes, this.stepSelections).map((c) => c.renderableSteps), t = [], a = e.flat();
|
|
5497
5496
|
for (const c of a)
|
|
5498
5497
|
if (!this.stepInitialised[c.stepName])
|
|
@@ -5500,7 +5499,7 @@ class Wa {
|
|
|
5500
5499
|
case I.Bulk:
|
|
5501
5500
|
this.updateStorage(
|
|
5502
5501
|
"Bulk",
|
|
5503
|
-
((
|
|
5502
|
+
((r = (o = this.reloadedState) == null ? void 0 : o.serializableWorkflow.steps.find((B) => B.stepName === "Bulk")) == null ? void 0 : r.storage) || {}
|
|
5504
5503
|
);
|
|
5505
5504
|
break;
|
|
5506
5505
|
case I.DigitalContent:
|
|
@@ -6159,14 +6158,14 @@ class an extends j {
|
|
|
6159
6158
|
text: a
|
|
6160
6159
|
}), s)
|
|
6161
6160
|
return e;
|
|
6162
|
-
const { command:
|
|
6161
|
+
const { command: o, errors: r, helperText: c } = K.updateInputText(
|
|
6163
6162
|
a,
|
|
6164
6163
|
t,
|
|
6165
6164
|
this.step,
|
|
6166
6165
|
this.manager
|
|
6167
6166
|
);
|
|
6168
|
-
|
|
6169
|
-
const B = this.manager.getInformationResults(), l = (E =
|
|
6167
|
+
o && this.manager.getCommandDispatcher()(o);
|
|
6168
|
+
const B = this.manager.getInformationResults(), l = (E = r[0]) == null ? void 0 : E.localizationKey;
|
|
6170
6169
|
if (l)
|
|
6171
6170
|
this.manager.setInformationResults([
|
|
6172
6171
|
...B,
|
|
@@ -6383,23 +6382,23 @@ const ct = y`
|
|
|
6383
6382
|
const t = (n) => {
|
|
6384
6383
|
const s = {};
|
|
6385
6384
|
if (n.type === "Frame") {
|
|
6386
|
-
const i = g[n.stepName],
|
|
6387
|
-
if (!i || !i.image ||
|
|
6385
|
+
const i = g[n.stepName], o = n.data;
|
|
6386
|
+
if (!i || !i.image || o.hideImageInCart && e)
|
|
6388
6387
|
return s;
|
|
6389
6388
|
s[`${n.stepTitle} image`] = i.image;
|
|
6390
6389
|
}
|
|
6391
6390
|
if (n.type === "Illustration") {
|
|
6392
|
-
const i = g[n.stepName],
|
|
6393
|
-
if (!i ||
|
|
6391
|
+
const i = g[n.stepName], o = n.data;
|
|
6392
|
+
if (!i || o.hideColorsInCart && e || !i.colors)
|
|
6394
6393
|
return s;
|
|
6395
6394
|
if (i.colors.length > 0) {
|
|
6396
|
-
const
|
|
6397
|
-
s[`${n.stepTitle} colors`] =
|
|
6395
|
+
const r = i.colors.join(", ").toUpperCase();
|
|
6396
|
+
s[`${n.stepTitle} colors`] = r;
|
|
6398
6397
|
}
|
|
6399
6398
|
}
|
|
6400
6399
|
if (n.type === "Module") {
|
|
6401
|
-
const i = g[n.stepName],
|
|
6402
|
-
if (!i || i.text === void 0 || i.text === null ||
|
|
6400
|
+
const i = g[n.stepName], o = n.data;
|
|
6401
|
+
if (!i || i.text === void 0 || i.text === null || o.hideTextInCart && e)
|
|
6403
6402
|
return s;
|
|
6404
6403
|
s[`${n.stepTitle} text`] = i.text;
|
|
6405
6404
|
}
|
|
@@ -6407,8 +6406,8 @@ const ct = y`
|
|
|
6407
6406
|
const i = g[n.stepName];
|
|
6408
6407
|
if (!i)
|
|
6409
6408
|
return s;
|
|
6410
|
-
const
|
|
6411
|
-
(!
|
|
6409
|
+
const o = n.data;
|
|
6410
|
+
(!o.hideTextInCart || !e && i.text !== void 0 && i.text !== null) && (s[`${n.stepTitle} text`] = i.text), i.color && (!o.hideColorInCart || !e) && (s[`${n.stepTitle} color`] = i.color);
|
|
6412
6411
|
}
|
|
6413
6412
|
return s;
|
|
6414
6413
|
}, a = {};
|
|
@@ -6434,21 +6433,21 @@ const ct = y`
|
|
|
6434
6433
|
};
|
|
6435
6434
|
}
|
|
6436
6435
|
for (const s of Object.keys(g)) {
|
|
6437
|
-
const i = g[s],
|
|
6436
|
+
const i = g[s], o = A.steps.find((r) => r.stepTitle === s);
|
|
6438
6437
|
if (i.length === 1)
|
|
6439
|
-
a[`${
|
|
6438
|
+
a[`${o == null ? void 0 : o.stepTitle} selection`] = {
|
|
6440
6439
|
value: i[0].name,
|
|
6441
6440
|
priceModifier: i[0].priceModifier
|
|
6442
6441
|
};
|
|
6443
6442
|
else if (i.length > 1)
|
|
6444
|
-
for (let
|
|
6445
|
-
a[`${
|
|
6446
|
-
value: i[
|
|
6447
|
-
priceModifier: i[
|
|
6443
|
+
for (let r = 0; r < i.length; r++)
|
|
6444
|
+
a[`${o == null ? void 0 : o.stepTitle} selection ${r + 1}`] = {
|
|
6445
|
+
value: i[r].name,
|
|
6446
|
+
priceModifier: i[r].priceModifier
|
|
6448
6447
|
};
|
|
6449
6448
|
}
|
|
6450
6449
|
return a;
|
|
6451
|
-
}, gt = (g, A, e, t, a, n, s, i,
|
|
6450
|
+
}, gt = (g, A, e, t, a, n, s, i, o, r) => {
|
|
6452
6451
|
const B = (x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(g.id), l = {
|
|
6453
6452
|
baseCost: e,
|
|
6454
6453
|
designProductId: g.externalDesignProductId,
|
|
@@ -6459,14 +6458,14 @@ const ct = y`
|
|
|
6459
6458
|
externalCartProductVariantId: g.externalCartProductVariantId,
|
|
6460
6459
|
lineItemImageUrl: s || "",
|
|
6461
6460
|
optionsCost: t,
|
|
6462
|
-
processExecutionId:
|
|
6461
|
+
processExecutionId: r,
|
|
6463
6462
|
transactionId: g.id,
|
|
6464
6463
|
transactionOwnerId: B,
|
|
6465
6464
|
weight: A.weight,
|
|
6466
6465
|
workflowViewerLink: g.workflowViewerLink || "",
|
|
6467
6466
|
workflowViewerReadOnlyLink: g.workflowViewerReadOnlyLink || ""
|
|
6468
6467
|
};
|
|
6469
|
-
return a && (l.metadata = a), i && (l.selectedVariants = i),
|
|
6468
|
+
return a && (l.metadata = a), i && (l.selectedVariants = i), o && (l.sku = o), l;
|
|
6470
6469
|
}, ln = (g, A, e, t) => {
|
|
6471
6470
|
const a = (A.basePrice || 0) * (g.variationsCount || 0), n = g.priceModifierTotal || 0, s = {
|
|
6472
6471
|
items: {
|
|
@@ -6487,12 +6486,12 @@ const ct = y`
|
|
|
6487
6486
|
t
|
|
6488
6487
|
);
|
|
6489
6488
|
}, lt = async (g, A, e, t, a, n, s, i) => {
|
|
6490
|
-
const
|
|
6489
|
+
const o = A.basePrice || 0, r = g.priceModifierTotal || 0, c = gn(t, e, void 0, n);
|
|
6491
6490
|
return gt(
|
|
6492
6491
|
g,
|
|
6493
6492
|
A,
|
|
6494
|
-
r,
|
|
6495
6493
|
o,
|
|
6494
|
+
r,
|
|
6496
6495
|
n,
|
|
6497
6496
|
c,
|
|
6498
6497
|
s,
|
|
@@ -6500,12 +6499,12 @@ const ct = y`
|
|
|
6500
6499
|
a,
|
|
6501
6500
|
i
|
|
6502
6501
|
);
|
|
6503
|
-
}, Bt = async (g, A, e, t, a, n, s, i,
|
|
6502
|
+
}, Bt = async (g, A, e, t, a, n, s, i, o, r) => {
|
|
6504
6503
|
var M;
|
|
6505
6504
|
await (async () => {
|
|
6506
6505
|
var S;
|
|
6507
|
-
if (
|
|
6508
|
-
return
|
|
6506
|
+
if (r !== void 0)
|
|
6507
|
+
return r;
|
|
6509
6508
|
await g.outstandingRequestsPromise();
|
|
6510
6509
|
const F = await N.getShadowGraphqlClient().query({
|
|
6511
6510
|
query: Ve,
|
|
@@ -6517,7 +6516,7 @@ const ct = y`
|
|
|
6517
6516
|
F.errors && console.log("Server Error:", b.message);
|
|
6518
6517
|
}), null) : U ?? null;
|
|
6519
6518
|
})() || (console.warn("State mismatch detected. Uploading known state explicitly"), console.warn("State Object:", JSON.stringify(t())), await g.updateStateWithServerImmediate(t), console.log("Server state is undefined @ Workflow completion"));
|
|
6520
|
-
const l = g.getPreviewService(), d = (M = A == null ? void 0 : A.finalizeStepConfig) == null ? void 0 : M.lookAtAnimation, E = l && A.showModelOnFinishStep && !!d, C =
|
|
6519
|
+
const l = g.getPreviewService(), d = (M = A == null ? void 0 : A.finalizeStepConfig) == null ? void 0 : M.lookAtAnimation, E = l && A.showModelOnFinishStep && !!d, C = o && $A(o, A, !0), w = o && $A(o, A, !1), Q = async (Y) => {
|
|
6521
6520
|
const F = {};
|
|
6522
6521
|
let U = 0;
|
|
6523
6522
|
if (Object.keys(n).length > 0)
|
|
@@ -6581,9 +6580,9 @@ const ct = y`
|
|
|
6581
6580
|
cartSelectionsWithPrices: h,
|
|
6582
6581
|
cartMetadata: C
|
|
6583
6582
|
};
|
|
6584
|
-
}, Bn = async (g, A, e, t, a, n, s, i,
|
|
6583
|
+
}, Bn = async (g, A, e, t, a, n, s, i, o, r, c, B, l) => {
|
|
6585
6584
|
var u, f, p;
|
|
6586
|
-
|
|
6585
|
+
o("workflow.steps.finish.finalize.buildingLayouts");
|
|
6587
6586
|
const { designDetails: d, cartSelectionsWithPrices: E, cartMetadata: C } = await Bt(
|
|
6588
6587
|
g,
|
|
6589
6588
|
A,
|
|
@@ -6595,11 +6594,11 @@ const ct = y`
|
|
|
6595
6594
|
B,
|
|
6596
6595
|
l
|
|
6597
6596
|
);
|
|
6598
|
-
|
|
6597
|
+
o("workflow.steps.finish.finalize.creatingDesign"), n.bulk && await r(c);
|
|
6599
6598
|
const w = await rn(d), Q = (u = w == null ? void 0 : w.transaction) == null ? void 0 : u.previewImageLink;
|
|
6600
6599
|
if (!(w != null && w.transaction))
|
|
6601
6600
|
throw new Error("Failed to create design");
|
|
6602
|
-
|
|
6601
|
+
o("workflow.steps.finish.finalize.updatingTransaction");
|
|
6603
6602
|
const h = w.transaction;
|
|
6604
6603
|
return n.bulk ? ln(
|
|
6605
6604
|
h,
|
|
@@ -6623,16 +6622,16 @@ const ct = y`
|
|
|
6623
6622
|
})
|
|
6624
6623
|
);
|
|
6625
6624
|
const t = await (async () => {
|
|
6626
|
-
var
|
|
6625
|
+
var o;
|
|
6627
6626
|
const i = await N.getShadowGraphqlClient().query({
|
|
6628
6627
|
query: Ve,
|
|
6629
|
-
variables: { ids: g.map((
|
|
6628
|
+
variables: { ids: g.map((r) => r.transaction.id) },
|
|
6630
6629
|
fetchPolicy: "no-cache",
|
|
6631
6630
|
errorPolicy: "all"
|
|
6632
6631
|
});
|
|
6633
|
-
return i.errors ? (i.errors.forEach((
|
|
6634
|
-
i.errors && console.log("Server Error:",
|
|
6635
|
-
}), null) : (
|
|
6632
|
+
return i.errors ? (i.errors.forEach((r) => {
|
|
6633
|
+
i.errors && console.log("Server Error:", r.message);
|
|
6634
|
+
}), null) : (o = i.data) != null && o.transactions ? i.data.transactions.map((r) => r.workflowState ?? null) : null;
|
|
6636
6635
|
})(), a = await Promise.all(
|
|
6637
6636
|
g.map(async (s, i) => await Bt(
|
|
6638
6637
|
s.workflowManager,
|
|
@@ -6655,14 +6654,14 @@ const ct = y`
|
|
|
6655
6654
|
return A("workflow.steps.finish.finalize.updatingTransaction"), Promise.all(
|
|
6656
6655
|
n.map(async (s, i) => {
|
|
6657
6656
|
var B;
|
|
6658
|
-
const
|
|
6657
|
+
const o = g[i], r = a[i], c = s.transaction;
|
|
6659
6658
|
return await lt(
|
|
6660
6659
|
c,
|
|
6661
|
-
|
|
6662
|
-
|
|
6663
|
-
|
|
6660
|
+
o.product,
|
|
6661
|
+
o.workflow,
|
|
6662
|
+
r.cartSelectionsWithPrices,
|
|
6664
6663
|
s.sku,
|
|
6665
|
-
|
|
6664
|
+
r.cartMetadata,
|
|
6666
6665
|
//lineItemImageLink,
|
|
6667
6666
|
void 0,
|
|
6668
6667
|
(B = s.processExecution) == null ? void 0 : B.id
|
|
@@ -6747,14 +6746,14 @@ class CA {
|
|
|
6747
6746
|
) && this.save();
|
|
6748
6747
|
}, 2500), this.getCanvasObjectURLAsync = async (n) => new Promise((s, i) => {
|
|
6749
6748
|
try {
|
|
6750
|
-
n.toBlob((
|
|
6751
|
-
if (
|
|
6752
|
-
const
|
|
6753
|
-
s(
|
|
6749
|
+
n.toBlob((o) => {
|
|
6750
|
+
if (o) {
|
|
6751
|
+
const r = URL.createObjectURL(o);
|
|
6752
|
+
s(r);
|
|
6754
6753
|
}
|
|
6755
6754
|
});
|
|
6756
|
-
} catch (
|
|
6757
|
-
i(
|
|
6755
|
+
} catch (o) {
|
|
6756
|
+
i(o);
|
|
6758
6757
|
}
|
|
6759
6758
|
}), !e.workflow)
|
|
6760
6759
|
throw new Error("No Workflow ID provided.");
|
|
@@ -6783,11 +6782,11 @@ class CA {
|
|
|
6783
6782
|
e.isReloadedTransaction
|
|
6784
6783
|
), this.workflowManager.addSelectionCallback((n) => {
|
|
6785
6784
|
const s = n.traversableScenes.map((i) => {
|
|
6786
|
-
const
|
|
6785
|
+
const o = i.renderableSteps.map((r) => r.stepName);
|
|
6787
6786
|
return {
|
|
6788
6787
|
id: i.name,
|
|
6789
6788
|
title: i.title,
|
|
6790
|
-
renderableSteps:
|
|
6789
|
+
renderableSteps: o
|
|
6791
6790
|
};
|
|
6792
6791
|
});
|
|
6793
6792
|
this.renderableScenes = s, this.renderableSceneCallbacks.forEach((i) => i(s));
|
|
@@ -6831,9 +6830,9 @@ class CA {
|
|
|
6831
6830
|
}
|
|
6832
6831
|
let n = 2048;
|
|
6833
6832
|
e && e <= 2048 && (n = e);
|
|
6834
|
-
const s = yA(n, n), i = this.commandContext.getAllLayouts(),
|
|
6833
|
+
const s = yA(n, n), i = this.commandContext.getAllLayouts(), o = t.defaultPreviewPanelIndex || 0, r = t.panels[o], c = i.find((f) => {
|
|
6835
6834
|
var p;
|
|
6836
|
-
return ((p = f.layoutState) == null ? void 0 : p.layout.panelId) === (
|
|
6835
|
+
return ((p = f.layoutState) == null ? void 0 : p.layout.panelId) === (r == null ? void 0 : r.name);
|
|
6837
6836
|
}) || i[0], B = c.layoutState.layout.previewRegion ? {
|
|
6838
6837
|
x: c.layoutState.layout.previewRegion.left,
|
|
6839
6838
|
y: c.layoutState.layout.previewRegion.top,
|
|
@@ -6938,8 +6937,8 @@ class CA {
|
|
|
6938
6937
|
}
|
|
6939
6938
|
})).data) == null ? void 0 : a.transactionAddStakeholder) == null ? void 0 : n.stakeholders) == null ? void 0 : s.find(
|
|
6940
6939
|
(i) => {
|
|
6941
|
-
var
|
|
6942
|
-
return ((
|
|
6940
|
+
var o;
|
|
6941
|
+
return ((o = i.customer) == null ? void 0 : o.emailAddress) === A.emailAddress;
|
|
6943
6942
|
}
|
|
6944
6943
|
);
|
|
6945
6944
|
if (t != null && t.customer) {
|
|
@@ -6959,10 +6958,10 @@ class CA {
|
|
|
6959
6958
|
throw new v("State undefined!");
|
|
6960
6959
|
const a = {
|
|
6961
6960
|
title: await (async () => {
|
|
6962
|
-
var
|
|
6961
|
+
var o;
|
|
6963
6962
|
if (A)
|
|
6964
6963
|
return A;
|
|
6965
|
-
const n = this.getWorkflowManager().getTransaction().id, i = (
|
|
6964
|
+
const n = this.getWorkflowManager().getTransaction().id, i = (o = (await zA.getSavedDesigns()).find((r) => r.transactionId === n)) == null ? void 0 : o.title;
|
|
6966
6965
|
return i || "My design";
|
|
6967
6966
|
})(),
|
|
6968
6967
|
thumbnail: await this.createPreviewImage(!1, 256),
|
|
@@ -7015,13 +7014,13 @@ class CA {
|
|
|
7015
7014
|
var a;
|
|
7016
7015
|
const A = /* @__PURE__ */ new Map(), e = this.getWorkflowManager().getWorkflowMetadata(), t = this.getWorkflowManager().getWorkflowSelections();
|
|
7017
7016
|
return Object.keys(e).forEach((n) => {
|
|
7018
|
-
const s = this.workflowManager.getWorkflow().steps.find((
|
|
7017
|
+
const s = this.workflowManager.getWorkflow().steps.find((o) => o.stepName === n);
|
|
7019
7018
|
if (!s)
|
|
7020
7019
|
return;
|
|
7021
7020
|
A.has(s.stepTitle) || A.set(s.stepTitle, {});
|
|
7022
7021
|
const i = e[n];
|
|
7023
|
-
Object.keys(i).forEach((
|
|
7024
|
-
A.get(s.stepTitle)[
|
|
7022
|
+
Object.keys(i).forEach((o) => {
|
|
7023
|
+
A.get(s.stepTitle)[o] = i[o];
|
|
7025
7024
|
});
|
|
7026
7025
|
}), (a = Object.keys(t)) == null || a.forEach((n) => {
|
|
7027
7026
|
const s = this.workflowManager.getWorkflow().steps.find((i) => i.stepName === n);
|
|
@@ -7044,7 +7043,7 @@ const En = [
|
|
|
7044
7043
|
], hn = async (g, A, e) => {
|
|
7045
7044
|
const t = A.data, a = e.data.baseUrl, n = t.assetUrl.replace("localhost", "localstack"), s = a.slice(0, 4) === "http" ? "" : "https://", i = new URL(s + a);
|
|
7046
7045
|
i.searchParams.append("video", he(JSON.stringify([{ href: n }]))), i.pathname = i.pathname + (i.pathname.slice(-1) === "/" ? "" : "/");
|
|
7047
|
-
const
|
|
7046
|
+
const o = i.toString(), c = `data:image/svg+xml;base64,${he(await be(o, { type: "svg" }))}`, B = (d) => {
|
|
7048
7047
|
const E = g.find((w) => w.panelId === d.panelId);
|
|
7049
7048
|
if (!E)
|
|
7050
7049
|
throw new L(d);
|
|
@@ -7073,17 +7072,17 @@ const En = [
|
|
|
7073
7072
|
try {
|
|
7074
7073
|
const i = Rt(a, t.option);
|
|
7075
7074
|
i && (A[t.stepName] = { selectedVariants: [i] });
|
|
7076
|
-
const
|
|
7075
|
+
const o = async (r) => {
|
|
7077
7076
|
var C;
|
|
7078
7077
|
const c = await Pt(
|
|
7079
|
-
|
|
7078
|
+
r || {
|
|
7080
7079
|
width: 1,
|
|
7081
7080
|
height: 1
|
|
7082
7081
|
},
|
|
7083
7082
|
(C = i == null ? void 0 : i.asset) == null ? void 0 : C.fileLink
|
|
7084
|
-
), B = await Ae(c), l = k(), d = g.find((w) => w.panelId ===
|
|
7083
|
+
), B = await Ae(c), l = k(), d = g.find((w) => w.panelId === r.panelId);
|
|
7085
7084
|
if (!d)
|
|
7086
|
-
throw new L(
|
|
7085
|
+
throw new L(r);
|
|
7087
7086
|
const E = ee(s, B, {
|
|
7088
7087
|
scale: a.scale,
|
|
7089
7088
|
left: a.x,
|
|
@@ -7101,15 +7100,15 @@ const En = [
|
|
|
7101
7100
|
focalBlurStrength: t.data.focalBlurStrength,
|
|
7102
7101
|
focalBlurRadius: t.data.focalBlurRadius,
|
|
7103
7102
|
forceImageCover: t.data.forceImageCover,
|
|
7104
|
-
x:
|
|
7105
|
-
y:
|
|
7106
|
-
width:
|
|
7107
|
-
height:
|
|
7108
|
-
layer:
|
|
7109
|
-
layerIndex:
|
|
7110
|
-
rotation:
|
|
7111
|
-
scaleX:
|
|
7112
|
-
scaleY:
|
|
7103
|
+
x: r.left,
|
|
7104
|
+
y: r.top,
|
|
7105
|
+
width: r.width,
|
|
7106
|
+
height: r.height,
|
|
7107
|
+
layer: r.layer,
|
|
7108
|
+
layerIndex: r.layerIndex,
|
|
7109
|
+
rotation: r.rotation,
|
|
7110
|
+
scaleX: r.width / B.width,
|
|
7111
|
+
scaleY: r.height / B.height,
|
|
7113
7112
|
pattern: void 0
|
|
7114
7113
|
},
|
|
7115
7114
|
d
|
|
@@ -7117,7 +7116,7 @@ const En = [
|
|
|
7117
7116
|
new Me(l, s, E)
|
|
7118
7117
|
];
|
|
7119
7118
|
};
|
|
7120
|
-
return (await Promise.all(t.data.regions.map((
|
|
7119
|
+
return (await Promise.all(t.data.regions.map((r) => o(r)))).flat();
|
|
7121
7120
|
} catch (i) {
|
|
7122
7121
|
return console.error(i), [];
|
|
7123
7122
|
}
|
|
@@ -7135,7 +7134,7 @@ const En = [
|
|
|
7135
7134
|
const i = (D = s.asset) == null ? void 0 : D.fileLink;
|
|
7136
7135
|
if (!i)
|
|
7137
7136
|
return console.error(`No asset link for variant with ID: ${a.illustrationVariantId}`), [];
|
|
7138
|
-
const
|
|
7137
|
+
const o = await Z(i, !0), r = /<svg.*?<\/svg>/s, c = o.match(r) || [], B = (c == null ? void 0 : c.length) > 0 ? c[0] : "", E = Pe().parseFromString(B, "image/svg+xml").firstElementChild;
|
|
7139
7138
|
if (!E)
|
|
7140
7139
|
return console.error("Failed to read SVG."), [];
|
|
7141
7140
|
He(E);
|
|
@@ -7191,10 +7190,10 @@ const En = [
|
|
|
7191
7190
|
return console.error(m), [];
|
|
7192
7191
|
}
|
|
7193
7192
|
}, un = async (g, A, e) => {
|
|
7194
|
-
const t = await it(e.data.module), a = A.data, n = (i,
|
|
7195
|
-
const
|
|
7196
|
-
if (!
|
|
7197
|
-
throw new L(
|
|
7193
|
+
const t = await it(e.data.module), a = A.data, n = (i, o) => {
|
|
7194
|
+
const r = g.find((B) => B.panelId === o.panelId);
|
|
7195
|
+
if (!r)
|
|
7196
|
+
throw new L(o);
|
|
7198
7197
|
const c = k();
|
|
7199
7198
|
return new J(
|
|
7200
7199
|
{
|
|
@@ -7202,15 +7201,15 @@ const En = [
|
|
|
7202
7201
|
id: c,
|
|
7203
7202
|
svg: i,
|
|
7204
7203
|
type: H.Illustration,
|
|
7205
|
-
y:
|
|
7206
|
-
x:
|
|
7207
|
-
rotation:
|
|
7208
|
-
width:
|
|
7209
|
-
height:
|
|
7210
|
-
layer:
|
|
7211
|
-
layerIndex:
|
|
7204
|
+
y: o.top,
|
|
7205
|
+
x: o.left,
|
|
7206
|
+
rotation: o.rotation,
|
|
7207
|
+
width: o.width,
|
|
7208
|
+
height: o.height,
|
|
7209
|
+
layer: o.layer,
|
|
7210
|
+
layerIndex: o.layerIndex
|
|
7212
7211
|
},
|
|
7213
|
-
|
|
7212
|
+
r
|
|
7214
7213
|
);
|
|
7215
7214
|
}, s = e.data.regions;
|
|
7216
7215
|
try {
|
|
@@ -7234,7 +7233,7 @@ const En = [
|
|
|
7234
7233
|
const i = (B = s.asset) == null ? void 0 : B.fileLink;
|
|
7235
7234
|
if (!i)
|
|
7236
7235
|
return console.error(`No asset link for variant with ID: ${a.pictureVariantId}`), [];
|
|
7237
|
-
const
|
|
7236
|
+
const o = (l) => {
|
|
7238
7237
|
const d = g.find((C) => C.panelId === l.panelId);
|
|
7239
7238
|
if (!d)
|
|
7240
7239
|
throw new L(l);
|
|
@@ -7256,18 +7255,18 @@ const En = [
|
|
|
7256
7255
|
},
|
|
7257
7256
|
d
|
|
7258
7257
|
);
|
|
7259
|
-
},
|
|
7258
|
+
}, r = t.data.regions;
|
|
7260
7259
|
try {
|
|
7261
|
-
return
|
|
7260
|
+
return r.map(o);
|
|
7262
7261
|
} catch (l) {
|
|
7263
7262
|
return console.error(l), [];
|
|
7264
7263
|
}
|
|
7265
7264
|
}, pn = async (g, A, e, t) => {
|
|
7266
|
-
var
|
|
7265
|
+
var r;
|
|
7267
7266
|
const a = e.data, n = t.option;
|
|
7268
7267
|
if (!n)
|
|
7269
7268
|
return console.error(`No option for step ${t.stepName}.`), [];
|
|
7270
|
-
const s = ((
|
|
7269
|
+
const s = ((r = n.variants) == null ? void 0 : r.find((c) => c.id === a.colorVariantId)) || UA(n);
|
|
7271
7270
|
if (!s)
|
|
7272
7271
|
return console.error(`No variant with ID: ${a.colorVariantId}`), [];
|
|
7273
7272
|
A[t.stepName] = { selectedVariants: [s] };
|
|
@@ -7313,53 +7312,53 @@ const En = [
|
|
|
7313
7312
|
},
|
|
7314
7313
|
B
|
|
7315
7314
|
);
|
|
7316
|
-
},
|
|
7315
|
+
}, o = t.data.regions;
|
|
7317
7316
|
try {
|
|
7318
|
-
return
|
|
7317
|
+
return o.map(i);
|
|
7319
7318
|
} catch (c) {
|
|
7320
7319
|
return console.error(c), [];
|
|
7321
7320
|
}
|
|
7322
7321
|
}, In = async (g, A, e) => {
|
|
7323
7322
|
const t = [], n = (() => {
|
|
7324
|
-
var
|
|
7325
|
-
return A.type === I.ProductOverlay ? e || ((
|
|
7326
|
-
})(), i = (() => n.endsWith(".jpeg") || n.endsWith(".jpg") || n.endsWith(".png") ? H.Image : n.endsWith(".svg") ? H.Illustration : H.Illustration)(),
|
|
7323
|
+
var r, c;
|
|
7324
|
+
return A.type === I.ProductOverlay ? e || ((r = A.data.asset) == null ? void 0 : r.fileLink) || "" : ((c = A.data.asset) == null ? void 0 : c.fileLink) || "";
|
|
7325
|
+
})(), i = (() => n.endsWith(".jpeg") || n.endsWith(".jpg") || n.endsWith(".png") ? H.Image : n.endsWith(".svg") ? H.Illustration : H.Illustration)(), o = A.data.regions;
|
|
7327
7326
|
if (i === "image")
|
|
7328
7327
|
try {
|
|
7329
|
-
|
|
7330
|
-
const c = g.find((l) => l.panelId ===
|
|
7328
|
+
o.forEach((r) => {
|
|
7329
|
+
const c = g.find((l) => l.panelId === r.panelId);
|
|
7331
7330
|
if (!c)
|
|
7332
|
-
throw new L(
|
|
7331
|
+
throw new L(r);
|
|
7333
7332
|
const B = {
|
|
7334
7333
|
id: k(),
|
|
7335
7334
|
src: n,
|
|
7336
7335
|
type: i,
|
|
7337
|
-
y:
|
|
7338
|
-
x:
|
|
7339
|
-
width:
|
|
7340
|
-
height:
|
|
7341
|
-
layer:
|
|
7342
|
-
layerIndex:
|
|
7336
|
+
y: r.top,
|
|
7337
|
+
x: r.left,
|
|
7338
|
+
width: r.width,
|
|
7339
|
+
height: r.height,
|
|
7340
|
+
layer: r.layer,
|
|
7341
|
+
layerIndex: r.layerIndex,
|
|
7343
7342
|
productOverlay: A.type === I.ProductOverlay ? !0 : void 0,
|
|
7344
7343
|
scaleX: 1,
|
|
7345
7344
|
scaleY: 1,
|
|
7346
|
-
rotation:
|
|
7345
|
+
rotation: r.rotation,
|
|
7347
7346
|
excludeFromExport: A.data.excludeFromPrint,
|
|
7348
7347
|
preserveAspectRatio: "none"
|
|
7349
7348
|
};
|
|
7350
7349
|
t.push(new J(B, c));
|
|
7351
7350
|
});
|
|
7352
|
-
} catch (
|
|
7353
|
-
console.error(
|
|
7351
|
+
} catch (r) {
|
|
7352
|
+
console.error(r);
|
|
7354
7353
|
}
|
|
7355
7354
|
else {
|
|
7356
|
-
const
|
|
7355
|
+
const r = await Z(n, !0), c = (B) => {
|
|
7357
7356
|
const l = /<svg.*?<\/svg>/s, d = B.match(l) || [], E = (d == null ? void 0 : d.length) > 0 ? d[0] : "", Q = Pe().parseFromString(E, "image/svg+xml").firstElementChild;
|
|
7358
7357
|
if (!Q)
|
|
7359
7358
|
throw new rA("Failed to read SVG.");
|
|
7360
7359
|
return He(Q), Ue().serializeToString(Q);
|
|
7361
7360
|
};
|
|
7362
|
-
|
|
7361
|
+
o.forEach((B) => {
|
|
7363
7362
|
const l = g.find((E) => E.panelId === B.panelId);
|
|
7364
7363
|
if (!l)
|
|
7365
7364
|
throw new L(B);
|
|
@@ -7367,7 +7366,7 @@ const En = [
|
|
|
7367
7366
|
id: k(),
|
|
7368
7367
|
src: n,
|
|
7369
7368
|
asset_key: n,
|
|
7370
|
-
svg: c(
|
|
7369
|
+
svg: c(r),
|
|
7371
7370
|
colors: {},
|
|
7372
7371
|
type: i,
|
|
7373
7372
|
y: B.top,
|
|
@@ -7387,7 +7386,7 @@ const En = [
|
|
|
7387
7386
|
}
|
|
7388
7387
|
return t;
|
|
7389
7388
|
}, Dn = async (g, A, e, t) => {
|
|
7390
|
-
const a = [], n = e.data, s = 30, i = (w) => w.vertical ? "center" : w.textAlign || "center",
|
|
7389
|
+
const a = [], n = e.data, s = 30, i = (w) => w.vertical ? "center" : w.textAlign || "center", o = () => {
|
|
7391
7390
|
var u;
|
|
7392
7391
|
const w = t.option;
|
|
7393
7392
|
if (!w)
|
|
@@ -7400,7 +7399,7 @@ const En = [
|
|
|
7400
7399
|
if (h)
|
|
7401
7400
|
return h;
|
|
7402
7401
|
}, c = await (async () => {
|
|
7403
|
-
const w =
|
|
7402
|
+
const w = o();
|
|
7404
7403
|
if (!w)
|
|
7405
7404
|
return;
|
|
7406
7405
|
const Q = await te(w);
|
|
@@ -7487,7 +7486,7 @@ const En = [
|
|
|
7487
7486
|
}) : !0, Fn = async (g, A, e, t) => {
|
|
7488
7487
|
const a = [], n = {};
|
|
7489
7488
|
for (const s of g) {
|
|
7490
|
-
const i = A.steps.find((
|
|
7489
|
+
const i = A.steps.find((o) => o.stepName === s.name);
|
|
7491
7490
|
if (i)
|
|
7492
7491
|
switch (i.type) {
|
|
7493
7492
|
case I.DigitalContent:
|
|
@@ -7635,8 +7634,8 @@ class yn {
|
|
|
7635
7634
|
}
|
|
7636
7635
|
}
|
|
7637
7636
|
class Yn extends Xe {
|
|
7638
|
-
constructor(A, e, t, a, n, s, i,
|
|
7639
|
-
super(), this.layoutId = A, this.ctx = e, this.nonPOTSupport = t, this.onRender = a, this.workflow = n, this.layouts = s, this.variationRecord = i, this.productOverlayImageUrl =
|
|
7637
|
+
constructor(A, e, t, a, n, s, i, o) {
|
|
7638
|
+
super(), this.layoutId = A, this.ctx = e, this.nonPOTSupport = t, this.onRender = a, this.workflow = n, this.layouts = s, this.variationRecord = i, this.productOverlayImageUrl = o;
|
|
7640
7639
|
}
|
|
7641
7640
|
/**
|
|
7642
7641
|
* Returns the resolution expected for generated textures.
|
|
@@ -7692,17 +7691,17 @@ class Yn extends Xe {
|
|
|
7692
7691
|
}), Gt(e);
|
|
7693
7692
|
}
|
|
7694
7693
|
const t = A.layoutState.layout.width, a = A.layoutState.layout.height, n = this.getDynamicTextureResolution().width, s = this.getDynamicTextureResolution().height;
|
|
7695
|
-
let i,
|
|
7694
|
+
let i, o;
|
|
7696
7695
|
if (this.nonPOTSupport) {
|
|
7697
7696
|
const l = n / s;
|
|
7698
|
-
t / a < l ? (i = n,
|
|
7699
|
-
const E = this.resizeFit({ width: i, height:
|
|
7700
|
-
i = E.width,
|
|
7697
|
+
t / a < l ? (i = n, o = a * (n / t)) : (i = t * (s / a), o = s);
|
|
7698
|
+
const E = this.resizeFit({ width: i, height: o });
|
|
7699
|
+
i = E.width, o = E.height;
|
|
7701
7700
|
} else
|
|
7702
|
-
i = this.getDynamicTextureResolution().width,
|
|
7703
|
-
const
|
|
7701
|
+
i = this.getDynamicTextureResolution().width, o = this.getDynamicTextureResolution().height;
|
|
7702
|
+
const r = Ye(A.layoutState.layout, e, {
|
|
7704
7703
|
renderingConfiguration: { purpose: Se.ThreeD }
|
|
7705
|
-
}), c = xe(
|
|
7704
|
+
}), c = xe(r), B = await Ge.from(this.ctx, c, {
|
|
7706
7705
|
anonymousCrossOrigin: !0,
|
|
7707
7706
|
ignoreDimensions: !this.nonPOTSupport,
|
|
7708
7707
|
ignoreAnimation: !0,
|
|
@@ -7714,7 +7713,7 @@ class Yn extends Xe {
|
|
|
7714
7713
|
DOMParser: Re(),
|
|
7715
7714
|
fetch: _A
|
|
7716
7715
|
});
|
|
7717
|
-
B.resize(i,
|
|
7716
|
+
B.resize(i, o), await B.render(), this.onRender();
|
|
7718
7717
|
}
|
|
7719
7718
|
}
|
|
7720
7719
|
const Sn = (g, A) => {
|
|
@@ -7733,7 +7732,7 @@ const Sn = (g, A) => {
|
|
|
7733
7732
|
serializableWorkflow: { steps: [] },
|
|
7734
7733
|
layouts: {}
|
|
7735
7734
|
};
|
|
7736
|
-
a = new G(e.map((
|
|
7735
|
+
a = new G(e.map((o) => new Ut(o))).apply(a);
|
|
7737
7736
|
const s = await Fn(g, A, e, t);
|
|
7738
7737
|
return new G(s).apply(a);
|
|
7739
7738
|
}, Nn = y`
|
|
@@ -8103,8 +8102,8 @@ class ge {
|
|
|
8103
8102
|
var s;
|
|
8104
8103
|
return (s = n.getRaw().globalPropertyAspectConfigurations) == null ? void 0 : s.some(
|
|
8105
8104
|
(i) => {
|
|
8106
|
-
var
|
|
8107
|
-
return i.globalPropertyConfigurationId === ((
|
|
8105
|
+
var o, r;
|
|
8106
|
+
return i.globalPropertyConfigurationId === ((r = (o = this.bundle.getProductCollection()) == null ? void 0 : o.getResource().globalPropertyConfiguration) == null ? void 0 : r.id) && i.aspectName === this.property.name;
|
|
8108
8107
|
}
|
|
8109
8108
|
);
|
|
8110
8109
|
})
|
|
@@ -8380,7 +8379,7 @@ class _n {
|
|
|
8380
8379
|
this.state ? this.state.transactions || (this.state.transactions = []) : this.state = {
|
|
8381
8380
|
transactions: []
|
|
8382
8381
|
};
|
|
8383
|
-
const s = this.state.transactions.find((
|
|
8382
|
+
const s = this.state.transactions.find((o) => o.transactionId === n);
|
|
8384
8383
|
s ? s.transform = e : this.state.transactions.push({
|
|
8385
8384
|
transactionId: n,
|
|
8386
8385
|
transform: e
|
|
@@ -8474,9 +8473,9 @@ class es {
|
|
|
8474
8473
|
*/
|
|
8475
8474
|
getIntegrationByType(A, e) {
|
|
8476
8475
|
const a = (this.product.integrationProducts || []).find((n) => {
|
|
8477
|
-
var
|
|
8478
|
-
const s = (
|
|
8479
|
-
return s && i &&
|
|
8476
|
+
var r, c, B;
|
|
8477
|
+
const s = (r = n.integration) == null ? void 0 : r.type, i = ((c = n.integration) == null ? void 0 : c.type) === A, o = e ? ((B = n.integration) == null ? void 0 : B.externalIntegrationId) === e : !0;
|
|
8478
|
+
return s && i && o;
|
|
8480
8479
|
});
|
|
8481
8480
|
if (!a)
|
|
8482
8481
|
throw new Error(
|
|
@@ -8592,11 +8591,11 @@ class as {
|
|
|
8592
8591
|
class fe {
|
|
8593
8592
|
constructor(A, e, t, a) {
|
|
8594
8593
|
var n, s, i;
|
|
8595
|
-
this.eventListeners = /* @__PURE__ */ new Map(), this.workflowExperiences = [], this.client = A, this.id = e.id, this.name = e.name || "", this.metadata = new Map(((n = e.metadata) == null ? void 0 : n.map((
|
|
8594
|
+
this.eventListeners = /* @__PURE__ */ new Map(), this.workflowExperiences = [], this.client = A, this.id = e.id, this.name = e.name || "", this.metadata = new Map(((n = e.metadata) == null ? void 0 : n.map((o) => [o.key, o.value])) || []), this.productCollection = e.productCollection, this.bundleStateManager = new _n(e.bundleStateData), this.globalConfiguration = (s = this.productCollection) == null ? void 0 : s.globalPropertyConfiguration, this.globalPropertyStateManager = new $n(
|
|
8596
8595
|
this.id,
|
|
8597
8596
|
this.checkConditionalHandlesChanged.bind(this)
|
|
8598
8597
|
), this.globalPropertyHandleService = new Kn(this), this.setPreviewService(t), this.initializationPromise = this.loadExistingBundles(
|
|
8599
|
-
((i = e.transactions) == null ? void 0 : i.map((
|
|
8598
|
+
((i = e.transactions) == null ? void 0 : i.map((o) => o.id)) || [],
|
|
8600
8599
|
a
|
|
8601
8600
|
);
|
|
8602
8601
|
}
|
|
@@ -9002,9 +9001,9 @@ class ss {
|
|
|
9002
9001
|
setTimeout(C, E);
|
|
9003
9002
|
});
|
|
9004
9003
|
}
|
|
9005
|
-
let i = !1,
|
|
9004
|
+
let i = !1, o = 0, r, c;
|
|
9006
9005
|
for (; !i; ) {
|
|
9007
|
-
|
|
9006
|
+
r = await N.getShadowGraphqlClient().query({
|
|
9008
9007
|
query: y`
|
|
9009
9008
|
query getProcessFlowExecution($ids: [String]!) {
|
|
9010
9009
|
processExecutions(ids: $ids) {
|
|
@@ -9023,8 +9022,8 @@ class ss {
|
|
|
9023
9022
|
ids: [n]
|
|
9024
9023
|
}
|
|
9025
9024
|
});
|
|
9026
|
-
const E = (d =
|
|
9027
|
-
if (!
|
|
9025
|
+
const E = (d = r.data) == null ? void 0 : d.processExecutions[0];
|
|
9026
|
+
if (!r || !E)
|
|
9028
9027
|
throw new Error("Failed to retrieve server response for execution.");
|
|
9029
9028
|
if (E.failedAt)
|
|
9030
9029
|
throw new Error(
|
|
@@ -9034,9 +9033,9 @@ class ss {
|
|
|
9034
9033
|
i = !0, c = new is(E);
|
|
9035
9034
|
break;
|
|
9036
9035
|
}
|
|
9037
|
-
|
|
9036
|
+
o += 1;
|
|
9038
9037
|
const C = t != null && t.repeats ? t == null ? void 0 : t.repeats : 5;
|
|
9039
|
-
if (
|
|
9038
|
+
if (o >= C)
|
|
9040
9039
|
throw new Error("Maximum wait time exceeded for execution result.");
|
|
9041
9040
|
await s(t != null && t.sleepTime ? Math.max(t.sleepTime, 500) : 2e3);
|
|
9042
9041
|
}
|
|
@@ -9805,8 +9804,8 @@ const cs = y`
|
|
|
9805
9804
|
throw new Error(`Unable to read workflows: ${e.errors ?? "Length mismatch in response"}`);
|
|
9806
9805
|
return t.forEach((n) => {
|
|
9807
9806
|
n.steps.forEach((s) => {
|
|
9808
|
-
var i,
|
|
9809
|
-
delete s.data.__typename, (i = s.option) != null && i.id && ((
|
|
9807
|
+
var i, o, r;
|
|
9808
|
+
delete s.data.__typename, (i = s.option) != null && i.id && ((o = s.option.defaultVariant) != null && o.asset && T.cacheAsset(s.option.defaultVariant.asset), s.option.colorProfile && T.cacheAsset(s.option.colorProfile), (r = s.option.variants) == null || r.forEach((c) => {
|
|
9810
9809
|
c.asset && T.cacheAsset(c.asset), c.displayImage && T.cacheAsset(c.displayImage), c.thumbnail && T.cacheAsset(c.thumbnail), c.material && T.cacheMaterial(c.material);
|
|
9811
9810
|
}), BA.set({ id: s.option.id }, Promise.resolve(s.option)));
|
|
9812
9811
|
});
|
|
@@ -9817,7 +9816,7 @@ const cs = y`
|
|
|
9817
9816
|
throw new Error(`Workflow not found: ${g}`);
|
|
9818
9817
|
return t;
|
|
9819
9818
|
}, ht = async (g, A) => {
|
|
9820
|
-
const e = g.map((i) => BA.get({ id: i, options: A })), t = g.filter((i,
|
|
9819
|
+
const e = g.map((i) => BA.get({ id: i, options: A })), t = g.filter((i, o) => e[o] === void 0);
|
|
9821
9820
|
if (t.length === 0)
|
|
9822
9821
|
return Promise.all(e);
|
|
9823
9822
|
const a = ps(t, A), n = t.map(
|
|
@@ -9886,8 +9885,8 @@ class fs {
|
|
|
9886
9885
|
}
|
|
9887
9886
|
const t = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
9888
9887
|
if (t.has(A)) {
|
|
9889
|
-
const s = t.get(A),
|
|
9890
|
-
if (
|
|
9888
|
+
const s = t.get(A), o = (x.getMap("partnerCustomerIds") || /* @__PURE__ */ new Map()).get(s);
|
|
9889
|
+
if (o && await this.authenticateCustomerId(o)) {
|
|
9891
9890
|
const c = (n = (a = this.customer) == null ? void 0 : a.bundleStakeholders) == null ? void 0 : n.find(
|
|
9892
9891
|
(B) => {
|
|
9893
9892
|
var l;
|
|
@@ -9957,18 +9956,18 @@ class fs {
|
|
|
9957
9956
|
});
|
|
9958
9957
|
}
|
|
9959
9958
|
}
|
|
9960
|
-
const
|
|
9959
|
+
const r = (await e.query({
|
|
9961
9960
|
query: Es,
|
|
9962
9961
|
errorPolicy: "all",
|
|
9963
9962
|
variables: {
|
|
9964
9963
|
id: a.workflowId
|
|
9965
9964
|
}
|
|
9966
9965
|
})).data.workflow;
|
|
9967
|
-
if (!
|
|
9966
|
+
if (!r)
|
|
9968
9967
|
throw new Error(`Unable to read workflow: ${a.workflowId}`);
|
|
9969
9968
|
return Promise.resolve({
|
|
9970
9969
|
success: !1,
|
|
9971
|
-
theme:
|
|
9970
|
+
theme: r.overrideTheme,
|
|
9972
9971
|
customLogoLink: a.customLogoLink
|
|
9973
9972
|
});
|
|
9974
9973
|
}
|
|
@@ -10002,7 +10001,7 @@ class fs {
|
|
|
10002
10001
|
}
|
|
10003
10002
|
})).data.customer;
|
|
10004
10003
|
if (!a.id) {
|
|
10005
|
-
const
|
|
10004
|
+
const o = (s = (await e.mutate({
|
|
10006
10005
|
mutation: Cs,
|
|
10007
10006
|
errorPolicy: "all",
|
|
10008
10007
|
fetchPolicy: "no-cache",
|
|
@@ -10012,10 +10011,10 @@ class fs {
|
|
|
10012
10011
|
}
|
|
10013
10012
|
}
|
|
10014
10013
|
})).data) == null ? void 0 : s.customerCreate;
|
|
10015
|
-
if (!
|
|
10014
|
+
if (!o)
|
|
10016
10015
|
throw new Error("Unable to create customer.");
|
|
10017
|
-
return this.storeCustomer(
|
|
10018
|
-
customer:
|
|
10016
|
+
return this.storeCustomer(o), this.customer = o, {
|
|
10017
|
+
customer: o,
|
|
10019
10018
|
isAuthenticated: !1
|
|
10020
10019
|
};
|
|
10021
10020
|
}
|
|
@@ -10124,10 +10123,10 @@ class fs {
|
|
|
10124
10123
|
});
|
|
10125
10124
|
if (!((c = s.data) != null && c.bundles) || ((B = s.data) == null ? void 0 : B.bundles.length) === 0 || !((l = s.data) != null && l.bundles[0]))
|
|
10126
10125
|
throw new Error(`Unable to find bundle: ${A}`);
|
|
10127
|
-
const i = (d = s.data) == null ? void 0 : d.bundles[0],
|
|
10128
|
-
|
|
10129
|
-
const
|
|
10130
|
-
return await
|
|
10126
|
+
const i = (d = s.data) == null ? void 0 : d.bundles[0], o = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10127
|
+
o.set(i.id, i.partner.id), x.setMap("bundlePartnerIds", o);
|
|
10128
|
+
const r = new fe(this, i, e, t);
|
|
10129
|
+
return await r.getInitializationPromise(), r;
|
|
10131
10130
|
}
|
|
10132
10131
|
/**
|
|
10133
10132
|
* Retrieves all existing bundle stakeholders from the API, for the currently authenticated customer.
|
|
@@ -10148,8 +10147,8 @@ class fs {
|
|
|
10148
10147
|
throw new Error("Unable to find customer.");
|
|
10149
10148
|
const t = A.data.customers[0].bundleStakeholders || [], a = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10150
10149
|
return t.forEach((s) => {
|
|
10151
|
-
var i,
|
|
10152
|
-
(i = s.bundle) != null && i.id && ((
|
|
10150
|
+
var i, o;
|
|
10151
|
+
(i = s.bundle) != null && i.id && ((o = s.bundle.partner) != null && o.id) && a.set(s.bundle.id, s.bundle.partner.id);
|
|
10153
10152
|
}), x.setMap("bundlePartnerIds", a), t;
|
|
10154
10153
|
}
|
|
10155
10154
|
/**
|
|
@@ -10214,50 +10213,50 @@ class fs {
|
|
|
10214
10213
|
return { transaction: p, workflow: D };
|
|
10215
10214
|
}
|
|
10216
10215
|
throw new P("No workflow ID provided.");
|
|
10217
|
-
}, { transaction: s, workflow: i, readOnly:
|
|
10216
|
+
}, { transaction: s, workflow: i, readOnly: o } = await n();
|
|
10218
10217
|
this.currencyCode = (B = s.product.partner) == null ? void 0 : B.currencyCode;
|
|
10219
|
-
const
|
|
10218
|
+
const r = {
|
|
10220
10219
|
product: s.product,
|
|
10221
10220
|
transaction: s,
|
|
10222
10221
|
layouts: [],
|
|
10223
10222
|
singleVariantsRenderable: (l = a == null ? void 0 : a.workflowConfiguration) == null ? void 0 : l.singleVariantsRenderable,
|
|
10224
|
-
stateMutationFunc:
|
|
10223
|
+
stateMutationFunc: o ? async () => {
|
|
10225
10224
|
throw new v("State mutation is forbidden in read only mode!");
|
|
10226
10225
|
} : async (w) => {
|
|
10227
10226
|
const h = (x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(s.id) || void 0;
|
|
10228
10227
|
return this.updateTransactionState({ ...w, context: { transactionOwnerId: h } });
|
|
10229
10228
|
},
|
|
10230
|
-
readOnly:
|
|
10229
|
+
readOnly: o,
|
|
10231
10230
|
workflow: i
|
|
10232
10231
|
};
|
|
10233
10232
|
if (a.type === "transaction" && s.workflowState) {
|
|
10234
10233
|
const w = JSON.parse(s.workflowState);
|
|
10235
|
-
|
|
10236
|
-
} else if (!
|
|
10234
|
+
r.layouts = Object.values(w.layouts).map((Q) => Q.layout), await AA(w), await tA(w), r.reloadedState = w;
|
|
10235
|
+
} else if (!o && a.workflowState) {
|
|
10237
10236
|
const w = JSON.parse(a.workflowState);
|
|
10238
|
-
|
|
10237
|
+
r.layouts = Object.values(w.layouts).map((Q) => Q.layout), await AA(w), await tA(w), r.reloadedState = w;
|
|
10239
10238
|
} else
|
|
10240
|
-
|
|
10241
|
-
|
|
10242
|
-
|
|
10239
|
+
r.layouts = KA(
|
|
10240
|
+
r.transaction,
|
|
10241
|
+
r.workflow
|
|
10243
10242
|
);
|
|
10244
|
-
if (
|
|
10245
|
-
|
|
10246
|
-
), a.previewService ? (
|
|
10247
|
-
model:
|
|
10248
|
-
contextService:
|
|
10249
|
-
}))) : (
|
|
10250
|
-
model:
|
|
10251
|
-
contextService:
|
|
10243
|
+
if (r.renderableContextService = new QA(
|
|
10244
|
+
r.layouts
|
|
10245
|
+
), a.previewService ? (r.previewService = a.previewService, (d = r.product) != null && d.modelUrl && (r.modelContainer = r.previewService.loadModel({
|
|
10246
|
+
model: r.product.modelUrl,
|
|
10247
|
+
contextService: r.renderableContextService
|
|
10248
|
+
}))) : (r.previewService = t && t(i), (E = r.product) != null && E.modelUrl && (r.modelContainer = (C = r.previewService) == null ? void 0 : C.loadModel({
|
|
10249
|
+
model: r.product.modelUrl,
|
|
10250
|
+
contextService: r.renderableContextService
|
|
10252
10251
|
}))), a.type !== "transaction") {
|
|
10253
10252
|
const w = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map();
|
|
10254
10253
|
w.set(s.id, s.transactionOwnerId), eA(s.transactionOwnerId || ""), x.setMap("transactionOwnerIds", w);
|
|
10255
10254
|
} else {
|
|
10256
10255
|
const Q = (x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(s.id);
|
|
10257
|
-
Q && eA(Q),
|
|
10256
|
+
Q && eA(Q), r.isReloadedTransaction = !0;
|
|
10258
10257
|
}
|
|
10259
|
-
this.initialized = !0, this.experienceOptions =
|
|
10260
|
-
const c = new CA(this,
|
|
10258
|
+
this.initialized = !0, this.experienceOptions = r;
|
|
10259
|
+
const c = new CA(this, r);
|
|
10261
10260
|
return await c.getWorkflowManager().getInitializationPromise(), a.type !== "transaction" && this.customer && await c.attachCustomerDetails({ email: this.customer.emailAddress }), c;
|
|
10262
10261
|
}
|
|
10263
10262
|
/**
|
|
@@ -10297,7 +10296,7 @@ class fs {
|
|
|
10297
10296
|
index: n[M].index
|
|
10298
10297
|
};
|
|
10299
10298
|
});
|
|
10300
|
-
},
|
|
10299
|
+
}, o = async () => {
|
|
10301
10300
|
var f, p, D;
|
|
10302
10301
|
if (s.length === 0)
|
|
10303
10302
|
return [];
|
|
@@ -10326,7 +10325,7 @@ class fs {
|
|
|
10326
10325
|
readOnly: !1,
|
|
10327
10326
|
index: s[M].index
|
|
10328
10327
|
}));
|
|
10329
|
-
},
|
|
10328
|
+
}, r = (await Promise.all([i(), o()])).flat(), c = [...new Set(r.map((h) => h.workflowId))], B = await ht(c, e), l = new Map(B.map((h) => [h.id, h])), d = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), E = r.map(async (h) => {
|
|
10330
10329
|
var U;
|
|
10331
10330
|
const { transaction: u, workflowId: f, readOnly: p, index: D } = h, m = l.get(f), M = A[D];
|
|
10332
10331
|
!d.get(u.id) && u.transactionOwnerId && d.set(u.id, u.transactionOwnerId);
|
|
@@ -10406,7 +10405,7 @@ class fs {
|
|
|
10406
10405
|
* @deprecated Use getWorkflowExperience to initialize the experience.
|
|
10407
10406
|
*/
|
|
10408
10407
|
async initFromTransaction(A, e = !1) {
|
|
10409
|
-
var i,
|
|
10408
|
+
var i, o, r, c;
|
|
10410
10409
|
if (A === "")
|
|
10411
10410
|
throw new P("No transaction ID provided.");
|
|
10412
10411
|
const t = N.getShadowGraphqlClient(), a = async () => {
|
|
@@ -10447,7 +10446,7 @@ class fs {
|
|
|
10447
10446
|
throw new P("Failed to read transaction.");
|
|
10448
10447
|
if (!l.product)
|
|
10449
10448
|
throw new P("Failed to load transaction, product not available.");
|
|
10450
|
-
this.currencyCode = (
|
|
10449
|
+
this.currencyCode = (o = l.product.partner) == null ? void 0 : o.currencyCode, this.experienceOptions = {
|
|
10451
10450
|
product: l.product,
|
|
10452
10451
|
transaction: l,
|
|
10453
10452
|
layouts: [],
|
|
@@ -10457,11 +10456,11 @@ class fs {
|
|
|
10457
10456
|
return;
|
|
10458
10457
|
}
|
|
10459
10458
|
try {
|
|
10460
|
-
const l = (
|
|
10459
|
+
const l = (r = (await t.mutate({
|
|
10461
10460
|
mutation: ga,
|
|
10462
10461
|
variables: { id: A },
|
|
10463
10462
|
errorPolicy: "all"
|
|
10464
|
-
})).data) == null ? void 0 :
|
|
10463
|
+
})).data) == null ? void 0 : r.transactionClaim;
|
|
10465
10464
|
if (!l)
|
|
10466
10465
|
throw new P("Failed to read transaction.");
|
|
10467
10466
|
if (!l.product)
|
|
@@ -10485,27 +10484,27 @@ class fs {
|
|
|
10485
10484
|
if (!this.initialized || !this.experienceOptions)
|
|
10486
10485
|
throw new P("Cannot launch experience: Not initialized.");
|
|
10487
10486
|
if (this.experienceOptions.transaction.workflowId) {
|
|
10488
|
-
const
|
|
10489
|
-
if (this.experienceOptions.workflow =
|
|
10487
|
+
const o = await pA(this.experienceOptions.transaction.workflowId);
|
|
10488
|
+
if (this.experienceOptions.workflow = o, this.experienceOptions.transaction.workflowState) {
|
|
10490
10489
|
const c = JSON.parse(this.experienceOptions.transaction.workflowState);
|
|
10491
10490
|
this.experienceOptions.layouts = Object.values(c.layouts).map((B) => B.layout), await AA(c), await tA(c), this.experienceOptions.reloadedState = c;
|
|
10492
10491
|
}
|
|
10493
|
-
this.experienceOptions.previewService = t && t(
|
|
10492
|
+
this.experienceOptions.previewService = t && t(o), this.experienceOptions.renderableContextService = new QA(this.experienceOptions.layouts), (a = this.experienceOptions.product) != null && a.modelUrl && (this.experienceOptions.modelContainer = (n = this.experienceOptions.previewService) == null ? void 0 : n.loadModel({
|
|
10494
10493
|
model: this.experienceOptions.product.modelUrl,
|
|
10495
10494
|
contextService: this.experienceOptions.renderableContextService
|
|
10496
10495
|
}));
|
|
10497
|
-
const
|
|
10498
|
-
return await
|
|
10496
|
+
const r = new CA(this, this.experienceOptions);
|
|
10497
|
+
return await r.getWorkflowManager().getInitializationPromise(), r;
|
|
10499
10498
|
}
|
|
10500
10499
|
if (A) {
|
|
10501
|
-
const
|
|
10500
|
+
const o = N.getShadowGraphqlClient().mutate({
|
|
10502
10501
|
mutation: Ba,
|
|
10503
10502
|
variables: {
|
|
10504
10503
|
workflowId: A,
|
|
10505
10504
|
id: this.experienceOptions.transaction.id
|
|
10506
10505
|
}
|
|
10507
|
-
}),
|
|
10508
|
-
if (await Promise.all([
|
|
10506
|
+
}), r = pA(A);
|
|
10507
|
+
if (await Promise.all([o, r]), this.experienceOptions.workflow = await r, e) {
|
|
10509
10508
|
const B = JSON.parse(e);
|
|
10510
10509
|
this.experienceOptions.layouts = Object.values(B.layouts).map((l) => l.layout), await AA(B), await tA(B), this.experienceOptions.reloadedState = B;
|
|
10511
10510
|
} else
|
|
@@ -10513,7 +10512,7 @@ class fs {
|
|
|
10513
10512
|
this.experienceOptions.transaction,
|
|
10514
10513
|
this.experienceOptions.workflow
|
|
10515
10514
|
);
|
|
10516
|
-
this.experienceOptions.previewService = t && t(await
|
|
10515
|
+
this.experienceOptions.previewService = t && t(await r), this.experienceOptions.renderableContextService = new QA(this.experienceOptions.layouts), (s = this.experienceOptions.product) != null && s.modelUrl && (this.experienceOptions.modelContainer = (i = this.experienceOptions.previewService) == null ? void 0 : i.loadModel({
|
|
10517
10516
|
model: this.experienceOptions.product.modelUrl,
|
|
10518
10517
|
contextService: this.experienceOptions.renderableContextService
|
|
10519
10518
|
}));
|