@spiffcommerce/core 21.11.0-alpha.5 → 21.11.0
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.d.ts +5 -1
- package/dist/index.js +478 -475
- package/dist/index.umd.cjs +14 -14
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHttpLink as IA, InMemoryCache as fA, ApolloClient as DA, from as FA, gql as D } from "@apollo/client/core";
|
|
2
|
-
import { fetch as et, getAttributesFromArrayBuffer as
|
|
3
|
-
import { AspectType as es, AssetType as ts, BringForwardCommand as As, BringToBackCommand as as, BringToFrontCommand as ns, CanvasCommand as is, CommandContext as ss, CreateElementCommand as os, CreateLayoutCommand as rs, DeleteElementCommand as cs, FontAlignmentCommand as gs, FontColorCommand as ls, FontSizeCommand as Bs, FontSourceCommand as ds, GroupCommand as ws, LayoutElementFactory as hs, LayoutElementType as Es, MoveCommand as us, ResizeCommand as Cs, RotateCommand as Qs, SendBackwardsCommand as ms, StepAspectType as ps, StepType as Is, TextChangeCommand as fs, UnitOfMeasurement as Ds, UpdateImageSourceCommand as Fs, dataUrlFromExternalUrl as ys, determineCorrectFontSizeAndLines as Ms, findElement as Ss, frameDataCache as Ys, generate as Ps, generateSVGWithUnknownColors as xs, getAttributesFromArrayBuffer as Ns, getAxisAlignedBoundingBox as
|
|
2
|
+
import { fetch as et, getAttributesFromArrayBuffer as Rt, AssetType as ut, StepType as y, getFrameData as tt, frameDataCache as yA, GroupCommand as v, UpdateFramePattern as Ht, UpdateFrameThresholdSettingsCommand as MA, calculateOffsets as At, LayoutElementType as k, generate as J, CreateElementCommand as O, generateSVGWithUnknownColors as Ut, svgObjectURL as Pe, fetchAsString as _, DeleteElementCommand as ee, generateDefaultRectangleFrameSvg as Ct, GetSVGDimensions as SA, patternImageDataCache as Qt, fetchAsArrayBuffer as YA, findElement as xe, modifySVGWithElementProperties as PA, IllustrationColorCommand as We, IllustrationCacheCommand as xA, getFontMetrics as NA, getPatternImageData as Xe, FontAlignmentCommand as RA, FontColorCommand as HA, FontImageFillCommand as Te, applyTextTransformations as qe, determineCorrectFontSizeAndLines as Me, FontSourceCommand as mt, loadFont as at, TextChangeCommand as UA, FontSizeCommand as vA, createElementNS as GA, createElement as Qe, _loadFontExternalDataURL as nt, UpdateWorkflowStateCommand as pt, CommandContext as kA, createCanvas as Ne, getSvgElement as vt, LayoutRenderingPurpose as Gt, renderPapyrusComponentAsString as kt, loadImage as bt, getDomParser as Jt, toBase64 as It, getVariant as bA, generateFrameSVG as JA, getDefaultVariant as be, domParser as Lt, sanitizeSvgTree as Ot, traverse as LA, xmlSerializer as Tt, CreateLayoutCommand as OA, AspectType as Be, rehydrateSerializedLayout as Ae } from "@spiffcommerce/papyrus";
|
|
3
|
+
import { AspectType as es, AssetType as ts, BringForwardCommand as As, BringToBackCommand as as, BringToFrontCommand as ns, CanvasCommand as is, CommandContext as ss, CreateElementCommand as os, CreateLayoutCommand as rs, DeleteElementCommand as cs, FontAlignmentCommand as gs, FontColorCommand as ls, FontSizeCommand as Bs, FontSourceCommand as ds, GroupCommand as ws, LayoutElementFactory as hs, LayoutElementType as Es, MoveCommand as us, ResizeCommand as Cs, RotateCommand as Qs, SendBackwardsCommand as ms, StepAspectType as ps, StepType as Is, TextChangeCommand as fs, UnitOfMeasurement as Ds, UpdateImageSourceCommand as Fs, dataUrlFromExternalUrl as ys, determineCorrectFontSizeAndLines as Ms, findElement as Ss, frameDataCache as Ys, generate as Ps, generateSVGWithUnknownColors as xs, getAttributesFromArrayBuffer as Ns, getAxisAlignedBoundingBox as Rs, getFrameData as Hs, getSvgElement as Us, loadFont as vs, patternImageDataCache as Gs, registerFetchImplementation as ks, registerWindowImplementation as bs, rehydrateSerializedLayout as Js, setCanvasModule as Ls } from "@spiffcommerce/papyrus";
|
|
4
4
|
import { setContext as TA } from "@apollo/client/link/context";
|
|
5
5
|
import { onError as zA } from "@apollo/client/link/error";
|
|
6
6
|
import { Pith as zt } from "pith";
|
|
@@ -21,7 +21,7 @@ class ue extends Wt {
|
|
|
21
21
|
super(`ConfigurationError - ${e}`);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
class
|
|
24
|
+
class Re extends ue {
|
|
25
25
|
constructor(e) {
|
|
26
26
|
super(`Option not Configured: ${e.stepTitle}`), this.optionId = (e == null ? void 0 : e.optionId) || "N/A";
|
|
27
27
|
}
|
|
@@ -41,7 +41,7 @@ class he extends ue {
|
|
|
41
41
|
super(`Resource not found for asset: ${e.name}`), this.asset = e;
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
class
|
|
44
|
+
class He extends ue {
|
|
45
45
|
constructor(e, t) {
|
|
46
46
|
super(`Workflow Misconfiguration: ${e.stepName} - ${t}`), this.step = e;
|
|
47
47
|
}
|
|
@@ -181,20 +181,20 @@ class $A {
|
|
|
181
181
|
uri: `${$.getServerUrl()}/graphql`,
|
|
182
182
|
fetch: et
|
|
183
183
|
}), t = TA(async (i, s) => {
|
|
184
|
-
const { headers: o } = s, r = o || {}, g = await ZA(), B = s.bearer ?? g.bearer, l = s.partnerId ?? g.partnerId, d = s.activeIntegration ?? g.activeIntegration, w = s.transactionOwnerId, E = s.customerToken ?? g.customerToken, h = s.applicationKey ?? g.applicationKey,
|
|
184
|
+
const { headers: o } = s, r = o || {}, g = await ZA(), B = s.bearer ?? g.bearer, l = s.partnerId ?? g.partnerId, d = s.activeIntegration ?? g.activeIntegration, w = s.transactionOwnerId, E = s.customerToken ?? g.customerToken, h = s.applicationKey ?? g.applicationKey, u = s.bundleOwnerId;
|
|
185
185
|
try {
|
|
186
186
|
if (window && window.__SENTRY__) {
|
|
187
|
-
const
|
|
188
|
-
if (
|
|
189
|
-
const
|
|
190
|
-
Object.entries(
|
|
191
|
-
r[
|
|
187
|
+
const C = window.__SENTRY__.hub;
|
|
188
|
+
if (C) {
|
|
189
|
+
const I = C.traceHeaders();
|
|
190
|
+
Object.entries(I).forEach(([m, Q]) => {
|
|
191
|
+
r[m] = Q;
|
|
192
192
|
});
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
} catch {
|
|
196
196
|
}
|
|
197
|
-
return B && (r.Authorization = `Bearer ${B}`), l && (r.partnerId = l), d && (r.activeIntegration = d), w && (r.transactionOwnerId = w), E && (r.customerToken = E), h && (r["X-Application-Key"] = h),
|
|
197
|
+
return B && (r.Authorization = `Bearer ${B}`), l && (r.partnerId = l), d && (r.activeIntegration = d), w && (r.transactionOwnerId = w), E && (r.customerToken = E), h && (r["X-Application-Key"] = h), u && (r.bundleOwnerId = u), {
|
|
198
198
|
headers: r
|
|
199
199
|
};
|
|
200
200
|
}), A = zA(({ operation: i, graphQLErrors: s, networkError: o }) => {
|
|
@@ -387,8 +387,8 @@ const x = new $A(), _A = D`
|
|
|
387
387
|
};
|
|
388
388
|
class sa {
|
|
389
389
|
constructor() {
|
|
390
|
-
this.cache = /* @__PURE__ */ new Map(), this.
|
|
391
|
-
const t = await e.arrayBuffer(), A = await
|
|
390
|
+
this.cache = /* @__PURE__ */ new Map(), this.bgrmProcessCache = /* @__PURE__ */ new Map(), this.materialCache = /* @__PURE__ */ new Map(), this.loadImageAsFileInfo = async (e) => {
|
|
391
|
+
const t = await e.arrayBuffer(), A = await Rt(t), a = (n, i) => {
|
|
392
392
|
const s = atob(n.split(",")[1]), o = [];
|
|
393
393
|
for (let r = 0; r < s.length; r++)
|
|
394
394
|
o.push(s.charCodeAt(r));
|
|
@@ -485,11 +485,11 @@ class sa {
|
|
|
485
485
|
}
|
|
486
486
|
async removeBackgroundFromAsset(e) {
|
|
487
487
|
const t = e.key;
|
|
488
|
-
if (this.
|
|
489
|
-
return this.
|
|
488
|
+
if (this.bgrmProcessCache.has(t))
|
|
489
|
+
return this.bgrmProcessCache.get(t);
|
|
490
490
|
if (K.has(t)) {
|
|
491
491
|
const n = this.getLocalOrFromServer(K.get(t));
|
|
492
|
-
return this.
|
|
492
|
+
return this.bgrmProcessCache.set(t, n), n;
|
|
493
493
|
}
|
|
494
494
|
const a = (async () => {
|
|
495
495
|
var i, s;
|
|
@@ -501,11 +501,14 @@ class sa {
|
|
|
501
501
|
key: t
|
|
502
502
|
}
|
|
503
503
|
});
|
|
504
|
-
if (!((s = (i = n.data) == null ? void 0 : i.assetRemoveBackground) != null && s.key))
|
|
504
|
+
if (this.bgrmProcessCache.delete(t), !((s = (i = n.data) == null ? void 0 : i.assetRemoveBackground) != null && s.key))
|
|
505
505
|
throw new Error("Failed to remove background from image");
|
|
506
|
-
return ae.add(n.data.assetRemoveBackground), K.add(t, n.data.assetRemoveBackground.key), this.
|
|
506
|
+
return ae.add(n.data.assetRemoveBackground), K.add(t, n.data.assetRemoveBackground.key), this.cache.set(
|
|
507
|
+
n.data.assetRemoveBackground.key,
|
|
508
|
+
Promise.resolve(n.data.assetRemoveBackground)
|
|
509
|
+
), n.data.assetRemoveBackground;
|
|
507
510
|
})();
|
|
508
|
-
return this.
|
|
511
|
+
return this.bgrmProcessCache.set(t, a), a;
|
|
509
512
|
}
|
|
510
513
|
removePersistedAsset(e) {
|
|
511
514
|
ae.remove(e), K.delete(e), K.deleteForBgRemovedKey(e);
|
|
@@ -1630,7 +1633,7 @@ class Ya {
|
|
|
1630
1633
|
n.forEach((o, r) => {
|
|
1631
1634
|
s(
|
|
1632
1635
|
new v([
|
|
1633
|
-
new
|
|
1636
|
+
new Ht(o, t, e[r]),
|
|
1634
1637
|
new MA(o, a.useThreshold, a.invertThreshold, a.threshold, a.thresholdSaturation)
|
|
1635
1638
|
])
|
|
1636
1639
|
);
|
|
@@ -1666,7 +1669,7 @@ class St {
|
|
|
1666
1669
|
if (this.configuration.type === y.ProductOverlay) {
|
|
1667
1670
|
let l = "";
|
|
1668
1671
|
if ((o = this.product) != null && o.overlayImageUrl && (l = this.product.overlayImageUrl), i = l, !l)
|
|
1669
|
-
throw new
|
|
1672
|
+
throw new He(this.configuration, "Couldn't find an asset for product overlay step");
|
|
1670
1673
|
}
|
|
1671
1674
|
const s = this.evaluateAssetType();
|
|
1672
1675
|
if (s === k.Image) {
|
|
@@ -1698,14 +1701,14 @@ class St {
|
|
|
1698
1701
|
command: new O(d, n)
|
|
1699
1702
|
};
|
|
1700
1703
|
} else {
|
|
1701
|
-
const l = this.configuration.type === y.SilentIllustration ? (B = this.configuration.data.asset) == null ? void 0 : B.fileLink : i, w = await Ut(await (async () => new Promise((h,
|
|
1704
|
+
const l = this.configuration.type === y.SilentIllustration ? (B = this.configuration.data.asset) == null ? void 0 : B.fileLink : i, w = await Ut(await (async () => new Promise((h, u) => {
|
|
1702
1705
|
if (!l) {
|
|
1703
|
-
|
|
1706
|
+
u("Undefined vector silent step source");
|
|
1704
1707
|
return;
|
|
1705
1708
|
}
|
|
1706
|
-
_(l, !0).then((
|
|
1707
|
-
h(
|
|
1708
|
-
}).catch((
|
|
1709
|
+
_(l, !0).then((C) => {
|
|
1710
|
+
h(C);
|
|
1711
|
+
}).catch((C) => console.error(C));
|
|
1709
1712
|
}))()), E = {
|
|
1710
1713
|
stepName: this.configuration.stepName,
|
|
1711
1714
|
id: J(),
|
|
@@ -1737,7 +1740,7 @@ class St {
|
|
|
1737
1740
|
}
|
|
1738
1741
|
async trigger() {
|
|
1739
1742
|
if (!this.configuration.data.regions)
|
|
1740
|
-
throw new
|
|
1743
|
+
throw new He(this.configuration, "Missing regions.");
|
|
1741
1744
|
if (this.configuration.type === y.SilentIllustration) {
|
|
1742
1745
|
const e = this.configuration.data.regions.map(this.processRegion);
|
|
1743
1746
|
return Promise.all(e);
|
|
@@ -1814,29 +1817,29 @@ class xa {
|
|
|
1814
1817
|
async regenerateQRCode(e, t, A, a, n, i, s, o, r) {
|
|
1815
1818
|
if (!t && A !== "" && a === "") {
|
|
1816
1819
|
const g = async () => {
|
|
1817
|
-
var
|
|
1818
|
-
const
|
|
1819
|
-
return { asset:
|
|
1820
|
-
}, B = await new Promise((
|
|
1820
|
+
var m, Q;
|
|
1821
|
+
const C = (await qt([A]))[0], I = (Q = (m = C == null ? void 0 : C.versions) == null ? void 0 : m.find((p) => p.name === "mpeg4")) == null ? void 0 : Q.link;
|
|
1822
|
+
return { asset: C, link: I };
|
|
1823
|
+
}, B = await new Promise((C, I) => {
|
|
1821
1824
|
new aA(
|
|
1822
1825
|
async () => !!(await g()).link,
|
|
1823
1826
|
async () => {
|
|
1824
|
-
const
|
|
1825
|
-
if (!
|
|
1826
|
-
throw new he(
|
|
1827
|
-
|
|
1827
|
+
const m = await g();
|
|
1828
|
+
if (!m.link || !m.link)
|
|
1829
|
+
throw new he(m.asset);
|
|
1830
|
+
C({
|
|
1828
1831
|
rel: "mpeg4",
|
|
1829
|
-
href:
|
|
1832
|
+
href: m.link
|
|
1830
1833
|
});
|
|
1831
1834
|
},
|
|
1832
1835
|
() => {
|
|
1833
|
-
|
|
1836
|
+
I("Poller timed out with 40 attempts @ 3 second interval");
|
|
1834
1837
|
},
|
|
1835
1838
|
3e3,
|
|
1836
1839
|
40
|
|
1837
1840
|
);
|
|
1838
1841
|
});
|
|
1839
|
-
e.forEach((
|
|
1842
|
+
e.forEach((C) => o(new ee(C.id)));
|
|
1840
1843
|
const l = i.data.baseUrl.slice(0, 4) === "http" ? "" : "https://", d = new URL(l + i.data.baseUrl);
|
|
1841
1844
|
d.searchParams.append("video", btoa(JSON.stringify([B]))), d.pathname = d.pathname + (d.pathname.slice(-1) === "/" ? "" : "/");
|
|
1842
1845
|
const w = d.toString();
|
|
@@ -1844,9 +1847,9 @@ class xa {
|
|
|
1844
1847
|
throw new Le("Cannot create QR code, URL too long.");
|
|
1845
1848
|
const E = await Pa(w);
|
|
1846
1849
|
if (s(E), !i.data || !i.data.regions)
|
|
1847
|
-
throw new
|
|
1848
|
-
const h = await this.regionElements(i),
|
|
1849
|
-
|
|
1850
|
+
throw new He(i, "Missing regions.");
|
|
1851
|
+
const h = await this.regionElements(i), u = await this.command(E, h, n, i.stepName);
|
|
1852
|
+
u && (u.command && n.getCommandDispatcher()(u.command), u.followup && await u.followup()), await n.setSelectionsAndElements(i.stepName, [], h, async () => {
|
|
1850
1853
|
n.updateStorage(i.stepName, {
|
|
1851
1854
|
videoShortUrl: E,
|
|
1852
1855
|
videoUrl: a
|
|
@@ -1889,7 +1892,7 @@ class xa {
|
|
|
1889
1892
|
}
|
|
1890
1893
|
}
|
|
1891
1894
|
const Na = new xa();
|
|
1892
|
-
class
|
|
1895
|
+
class Ra {
|
|
1893
1896
|
constructor() {
|
|
1894
1897
|
this.frameSourceSvg = async (e, t) => {
|
|
1895
1898
|
if (!e)
|
|
@@ -1946,18 +1949,18 @@ class Ha {
|
|
|
1946
1949
|
frameOffsetsList: l,
|
|
1947
1950
|
framePatternSrc: B
|
|
1948
1951
|
}), B) {
|
|
1949
|
-
const
|
|
1950
|
-
if (!
|
|
1952
|
+
const u = (E = t.getStepSpecificServices(e.stepName)) == null ? void 0 : E.frameService;
|
|
1953
|
+
if (!u)
|
|
1951
1954
|
throw new Error("Frame service unavailable, cannot load pattern!");
|
|
1952
|
-
await this.loadPatternFromString(B,
|
|
1955
|
+
await this.loadPatternFromString(B, u), t.updateMetadata(e.stepName, { image: B }), t.updateStorage(e.stepName, {
|
|
1953
1956
|
framePatternSrc: B
|
|
1954
1957
|
});
|
|
1955
1958
|
}
|
|
1956
|
-
if (l != null && l.some((
|
|
1957
|
-
const
|
|
1958
|
-
if (!
|
|
1959
|
+
if (l != null && l.some((u) => u.zoom)) {
|
|
1960
|
+
const u = (h = t.getStepSpecificServices(e.stepName)) == null ? void 0 : h.frameService;
|
|
1961
|
+
if (!u)
|
|
1959
1962
|
throw new Error("Frame service unavailable, cannot load pattern!");
|
|
1960
|
-
|
|
1963
|
+
u.updateOffsets(l);
|
|
1961
1964
|
}
|
|
1962
1965
|
t.setMandatoryFulfilled(e.stepName, !0);
|
|
1963
1966
|
};
|
|
@@ -2051,7 +2054,7 @@ class Ha {
|
|
|
2051
2054
|
};
|
|
2052
2055
|
Qt.set(e, i), t.setPatternData(i);
|
|
2053
2056
|
} else {
|
|
2054
|
-
const A = await YA(e, !0), a = await
|
|
2057
|
+
const A = await YA(e, !0), a = await Rt(A), n = {
|
|
2055
2058
|
src: e,
|
|
2056
2059
|
width: a.width,
|
|
2057
2060
|
height: a.height,
|
|
@@ -2071,23 +2074,23 @@ class Ha {
|
|
|
2071
2074
|
n && n(!0);
|
|
2072
2075
|
const r = await Promise.all(
|
|
2073
2076
|
e.data.regions.map(async (d, w) => {
|
|
2074
|
-
const E = await tt(o[w]), h = s.getImageData(),
|
|
2077
|
+
const E = await tt(o[w]), h = s.getImageData(), u = A.map((f) => new ee(f.id)), C = h ? At(h, E) : void 0, I = h ? {
|
|
2075
2078
|
id: J(),
|
|
2076
2079
|
src: h.src,
|
|
2077
|
-
x: (
|
|
2078
|
-
y: (
|
|
2080
|
+
x: (C == null ? void 0 : C.x) || 0,
|
|
2081
|
+
y: (C == null ? void 0 : C.y) || 0,
|
|
2079
2082
|
width: h.width,
|
|
2080
2083
|
height: h.height,
|
|
2081
|
-
scaleX: (
|
|
2082
|
-
scaleY: (
|
|
2084
|
+
scaleX: (C == null ? void 0 : C.zoom) || 1,
|
|
2085
|
+
scaleY: (C == null ? void 0 : C.zoom) || 1,
|
|
2083
2086
|
rotation: 0
|
|
2084
|
-
} : void 0,
|
|
2087
|
+
} : void 0, m = J(), p = a.getLayouts().find((f) => f.panelId === d.panelId);
|
|
2085
2088
|
if (!p)
|
|
2086
2089
|
throw new z(d);
|
|
2087
2090
|
return {
|
|
2088
|
-
command: this.getCreateElementCommand(
|
|
2091
|
+
command: this.getCreateElementCommand(m, d, p, {
|
|
2089
2092
|
frameData: E,
|
|
2090
|
-
pattern:
|
|
2093
|
+
pattern: I,
|
|
2091
2094
|
disablePlaceholder: e.data.disablePlaceholder,
|
|
2092
2095
|
focalBlur: e.data.focalBlur,
|
|
2093
2096
|
focalBlurStrength: e.data.focalBlurStrength,
|
|
@@ -2095,10 +2098,10 @@ class Ha {
|
|
|
2095
2098
|
stepName: e.stepName
|
|
2096
2099
|
}),
|
|
2097
2100
|
regionEl: {
|
|
2098
|
-
id:
|
|
2101
|
+
id: m,
|
|
2099
2102
|
region: d
|
|
2100
2103
|
},
|
|
2101
|
-
removeExistingCommands:
|
|
2104
|
+
removeExistingCommands: u
|
|
2102
2105
|
};
|
|
2103
2106
|
})
|
|
2104
2107
|
), g = r.map((d) => d.command), B = r.map((d) => d.removeExistingCommands).flat();
|
|
@@ -2147,8 +2150,8 @@ class Ha {
|
|
|
2147
2150
|
}), A.markUpdateCompleted(n);
|
|
2148
2151
|
}
|
|
2149
2152
|
}
|
|
2150
|
-
const Se = new
|
|
2151
|
-
class
|
|
2153
|
+
const Se = new Ra();
|
|
2154
|
+
class Ha {
|
|
2152
2155
|
async getIllustrationBody(e) {
|
|
2153
2156
|
return new Promise((t) => {
|
|
2154
2157
|
_(e, !0).then((A) => {
|
|
@@ -2202,7 +2205,7 @@ class Ra {
|
|
|
2202
2205
|
const n = V.getDefaultVariant(a);
|
|
2203
2206
|
if (n)
|
|
2204
2207
|
return await this.selectVariantCommand(e, n, [], () => {
|
|
2205
|
-
}, t);
|
|
2208
|
+
}, t, !0);
|
|
2206
2209
|
}
|
|
2207
2210
|
return null;
|
|
2208
2211
|
}
|
|
@@ -2266,8 +2269,8 @@ class Ra {
|
|
|
2266
2269
|
a().map((E) => E.layoutState)
|
|
2267
2270
|
), s = { ...i.colors }, o = {};
|
|
2268
2271
|
Object.entries(s).forEach(([E, h]) => {
|
|
2269
|
-
const
|
|
2270
|
-
|
|
2272
|
+
const u = { browserValue: h.browserValue }, C = h.spotColor;
|
|
2273
|
+
C && (u.spotColor = { profileName: C.profileName, namedColor: C.namedColor }), o[E] = u;
|
|
2271
2274
|
});
|
|
2272
2275
|
for (const [E, h] of n.entries())
|
|
2273
2276
|
s[E] = { browserValue: h, spotColor: (d = s[E]) == null ? void 0 : d.spotColor }, o[E] = { browserValue: h };
|
|
@@ -2275,8 +2278,8 @@ class Ra {
|
|
|
2275
2278
|
const g = e.data.colorOption;
|
|
2276
2279
|
g && ((w = g.variants) == null || w.forEach((E) => {
|
|
2277
2280
|
r = r.map((h) => {
|
|
2278
|
-
var
|
|
2279
|
-
return h.toLowerCase() === ((
|
|
2281
|
+
var u;
|
|
2282
|
+
return h.toLowerCase() === ((u = E.color) == null ? void 0 : u.toLowerCase()) ? E.name : h;
|
|
2280
2283
|
});
|
|
2281
2284
|
})), A.updateMetadata(e.stepName, { colors: r });
|
|
2282
2285
|
const B = /* @__PURE__ */ new Map();
|
|
@@ -2299,80 +2302,80 @@ class Ra {
|
|
|
2299
2302
|
const i = await this.selectVariantCommand(e, t, A, a, n);
|
|
2300
2303
|
i && (i.command && n.getCommandDispatcher()(i.command), i.followup && await i.followup());
|
|
2301
2304
|
}
|
|
2302
|
-
async selectVariantCommand(e, t, A, a, n) {
|
|
2305
|
+
async selectVariantCommand(e, t, A, a, n, i) {
|
|
2303
2306
|
var C;
|
|
2304
2307
|
if (!e.data || !e.data.regions)
|
|
2305
|
-
throw new
|
|
2308
|
+
throw new He(e, "Missing regions.");
|
|
2306
2309
|
a(!0);
|
|
2307
|
-
const
|
|
2310
|
+
const s = A.map((I) => new ee(I.id));
|
|
2308
2311
|
n.setMandatoryFulfilled(e.stepName, !1);
|
|
2309
|
-
const
|
|
2310
|
-
if (!s)
|
|
2311
|
-
throw new te(t);
|
|
2312
|
-
const o = s.fileLink;
|
|
2312
|
+
const o = t.asset;
|
|
2313
2313
|
if (!o)
|
|
2314
|
-
throw new
|
|
2315
|
-
const r =
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2314
|
+
throw new te(t);
|
|
2315
|
+
const r = o.fileLink;
|
|
2316
|
+
if (!r)
|
|
2317
|
+
throw new he(o);
|
|
2318
|
+
const g = await Ut(await this.getIllustrationBody(r)), B = await Pe(g.svg), l = (I) => {
|
|
2319
|
+
const m = n.getLayouts().find((p) => p.panelId === I.panelId);
|
|
2320
|
+
if (!m)
|
|
2321
|
+
throw new z(I);
|
|
2319
2322
|
const Q = J();
|
|
2320
2323
|
return {
|
|
2321
|
-
regionElement: { id: Q, region:
|
|
2322
|
-
command: this.getCreateElementCommand(Q,
|
|
2324
|
+
regionElement: { id: Q, region: I },
|
|
2325
|
+
command: this.getCreateElementCommand(Q, I, m, {
|
|
2323
2326
|
stepName: e.stepName,
|
|
2324
|
-
src:
|
|
2325
|
-
objectURL:
|
|
2326
|
-
svg:
|
|
2327
|
+
src: r,
|
|
2328
|
+
objectURL: B,
|
|
2329
|
+
svg: g
|
|
2327
2330
|
})
|
|
2328
2331
|
};
|
|
2329
|
-
},
|
|
2330
|
-
let
|
|
2331
|
-
const
|
|
2332
|
-
return
|
|
2333
|
-
|
|
2332
|
+
}, d = e.data.regions.map(l), E = [...d.map((I) => I.command), ...s];
|
|
2333
|
+
let h = Array.from(Object.values(g.colors)).map((I) => I.browserValue);
|
|
2334
|
+
const u = e.data.colorOption;
|
|
2335
|
+
return u && ((C = u.variants) == null || C.forEach((I) => {
|
|
2336
|
+
h = h.map((m) => {
|
|
2334
2337
|
var Q;
|
|
2335
|
-
return
|
|
2338
|
+
return m.toLowerCase() === ((Q = I.color) == null ? void 0 : Q.toLowerCase()) ? I.name : m;
|
|
2336
2339
|
});
|
|
2337
|
-
})), n.updateMetadata(e.stepName, { colors:
|
|
2338
|
-
command: new v(
|
|
2340
|
+
})), n.updateMetadata(e.stepName, { colors: h }), {
|
|
2341
|
+
command: new v(E),
|
|
2339
2342
|
followup: async () => {
|
|
2340
2343
|
await n.setSelectionsAndElements(
|
|
2341
2344
|
e.stepName,
|
|
2342
2345
|
[t],
|
|
2343
|
-
|
|
2346
|
+
d.map((Q) => Q.regionElement),
|
|
2344
2347
|
async () => {
|
|
2345
|
-
n.setMandatoryFulfilled(e.stepName, !0), a(!1);
|
|
2348
|
+
i || n.setMandatoryFulfilled(e.stepName, !0), a(!1);
|
|
2346
2349
|
}
|
|
2347
2350
|
);
|
|
2348
|
-
const
|
|
2349
|
-
if (e.data.colorPickerEnabled &&
|
|
2350
|
-
const Q =
|
|
2351
|
+
const I = await this.availableColors(e, n) || [], m = Object.keys(g.colors);
|
|
2352
|
+
if (e.data.colorPickerEnabled && I.length === 1 && m.length === 1) {
|
|
2353
|
+
const Q = I[0], p = m[0];
|
|
2351
2354
|
await this.changeColors(
|
|
2352
2355
|
e,
|
|
2353
|
-
|
|
2356
|
+
d.map((f) => f.regionElement),
|
|
2354
2357
|
n,
|
|
2355
2358
|
() => n.getCommandContext().getAllLayouts(),
|
|
2356
|
-
/* @__PURE__ */ new Map([[
|
|
2359
|
+
/* @__PURE__ */ new Map([[p, Q.variant.color]])
|
|
2357
2360
|
);
|
|
2358
2361
|
}
|
|
2359
2362
|
}
|
|
2360
2363
|
};
|
|
2361
2364
|
}
|
|
2362
2365
|
}
|
|
2363
|
-
const Ye = new
|
|
2366
|
+
const Ye = new Ha();
|
|
2364
2367
|
class Ua {
|
|
2365
2368
|
async init(e, t, A) {
|
|
2366
2369
|
const a = e.option;
|
|
2367
2370
|
if (!a)
|
|
2368
|
-
throw new
|
|
2371
|
+
throw new Re(e);
|
|
2369
2372
|
if (A)
|
|
2370
2373
|
await this.reload(e, t, A);
|
|
2371
2374
|
else {
|
|
2372
2375
|
const n = V.getDefaultVariant(a);
|
|
2373
2376
|
if (n)
|
|
2374
2377
|
return await this.selectVariantLambda(e, n, t, () => {
|
|
2375
|
-
});
|
|
2378
|
+
}, !0);
|
|
2376
2379
|
}
|
|
2377
2380
|
return null;
|
|
2378
2381
|
}
|
|
@@ -2383,7 +2386,7 @@ class Ua {
|
|
|
2383
2386
|
A.serializableWorkflow.steps
|
|
2384
2387
|
), s = Object.values(A.layouts).map((g) => g.elements).flat().filter((g) => g.stepName === e.stepName), o = e.option;
|
|
2385
2388
|
if (!o)
|
|
2386
|
-
throw new
|
|
2389
|
+
throw new Re(e);
|
|
2387
2390
|
if (a != null && a.selectedVariants) {
|
|
2388
2391
|
const g = a.selectedVariants[0].id;
|
|
2389
2392
|
if (g) {
|
|
@@ -2412,20 +2415,20 @@ class Ua {
|
|
|
2412
2415
|
const n = await this.selectVariantLambda(e, t, A, a);
|
|
2413
2416
|
n && (n.command && A.getCommandDispatcher()(n.command), n.followup && await n.followup());
|
|
2414
2417
|
}
|
|
2415
|
-
async selectVariantLambda(e, t, A, a) {
|
|
2416
|
-
const
|
|
2418
|
+
async selectVariantLambda(e, t, A, a, n) {
|
|
2419
|
+
const i = A.getModelContainer();
|
|
2417
2420
|
a(!0);
|
|
2418
|
-
const
|
|
2419
|
-
if (!
|
|
2421
|
+
const s = t.material;
|
|
2422
|
+
if (!s)
|
|
2420
2423
|
throw a(!1), new te(t);
|
|
2421
2424
|
return {
|
|
2422
2425
|
command: void 0,
|
|
2423
2426
|
followup: async () => {
|
|
2424
2427
|
await A.setSelectionsAndElements(e.stepName, [t], [], async () => {
|
|
2425
2428
|
try {
|
|
2426
|
-
|
|
2427
|
-
e.option &&
|
|
2428
|
-
}), A.setMandatoryFulfilled(e.stepName, !0);
|
|
2429
|
+
i && e.data.targetMaterials.forEach((o) => {
|
|
2430
|
+
e.option && i.applyMaterialVariant(o, e.option.id || "", s);
|
|
2431
|
+
}), n || A.setMandatoryFulfilled(e.stepName, !0);
|
|
2429
2432
|
} finally {
|
|
2430
2433
|
a(!1);
|
|
2431
2434
|
}
|
|
@@ -2439,14 +2442,14 @@ class va {
|
|
|
2439
2442
|
async init(e, t, A) {
|
|
2440
2443
|
const a = e.option;
|
|
2441
2444
|
if (!a)
|
|
2442
|
-
throw new
|
|
2445
|
+
throw new Re(e);
|
|
2443
2446
|
if (A)
|
|
2444
2447
|
await this.reload(e, t, A);
|
|
2445
2448
|
else {
|
|
2446
2449
|
const n = V.getDefaultVariant(a);
|
|
2447
2450
|
if (n)
|
|
2448
2451
|
return await this.selectVariantLambda(e, n, t, () => {
|
|
2449
|
-
});
|
|
2452
|
+
}, !0);
|
|
2450
2453
|
}
|
|
2451
2454
|
return null;
|
|
2452
2455
|
}
|
|
@@ -2492,26 +2495,26 @@ class va {
|
|
|
2492
2495
|
const n = await this.selectVariantLambda(e, t, A, a);
|
|
2493
2496
|
n && (n.command && A.getCommandDispatcher()(n.command), n.followup && await n.followup());
|
|
2494
2497
|
}
|
|
2495
|
-
async selectVariantLambda(e, t, A, a) {
|
|
2496
|
-
var
|
|
2498
|
+
async selectVariantLambda(e, t, A, a, n) {
|
|
2499
|
+
var s;
|
|
2497
2500
|
a(!0);
|
|
2498
|
-
const
|
|
2499
|
-
if (!
|
|
2501
|
+
const i = (s = t.asset) == null ? void 0 : s.fileLink;
|
|
2502
|
+
if (!i)
|
|
2500
2503
|
throw new te(t);
|
|
2501
2504
|
return {
|
|
2502
2505
|
command: void 0,
|
|
2503
2506
|
followup: async () => {
|
|
2504
2507
|
await A.setSelectionsAndElements(e.stepName, [t], [], async () => {
|
|
2505
2508
|
try {
|
|
2506
|
-
const
|
|
2507
|
-
|
|
2509
|
+
const o = A.getModelContainer();
|
|
2510
|
+
o && await o.applyModelVariant(
|
|
2508
2511
|
e.stepName,
|
|
2509
2512
|
{
|
|
2510
|
-
model:
|
|
2513
|
+
model: i,
|
|
2511
2514
|
contextService: A.getLayoutPreviewService()
|
|
2512
2515
|
},
|
|
2513
2516
|
e.data.replaceProductModel || !1
|
|
2514
|
-
), A.setMandatoryFulfilled(e.stepName, !0);
|
|
2517
|
+
), n || A.setMandatoryFulfilled(e.stepName, !0);
|
|
2515
2518
|
} finally {
|
|
2516
2519
|
a(!1);
|
|
2517
2520
|
}
|
|
@@ -2556,11 +2559,11 @@ class Ga {
|
|
|
2556
2559
|
return console.error("Missing configuration."), null;
|
|
2557
2560
|
A.updateStorage(e.stepName, { text: t });
|
|
2558
2561
|
const r = (B, l, d) => {
|
|
2559
|
-
const w = d || J(), h = A.getLayouts().find((
|
|
2562
|
+
const w = d || J(), h = A.getLayouts().find((C) => C.panelId === l.panelId);
|
|
2560
2563
|
if (!h)
|
|
2561
2564
|
return console.error(`Can not find layout for region: ${l.panelId}`), null;
|
|
2562
|
-
const
|
|
2563
|
-
return d &&
|
|
2565
|
+
const u = [];
|
|
2566
|
+
return d && u.push(new ee(w)), u.push(
|
|
2564
2567
|
new O(
|
|
2565
2568
|
{
|
|
2566
2569
|
stepRegion: l,
|
|
@@ -2583,7 +2586,7 @@ class Ga {
|
|
|
2583
2586
|
), {
|
|
2584
2587
|
id: w,
|
|
2585
2588
|
region: l,
|
|
2586
|
-
command: new v(
|
|
2589
|
+
command: new v(u)
|
|
2587
2590
|
};
|
|
2588
2591
|
};
|
|
2589
2592
|
if (i.length > 0) {
|
|
@@ -2643,7 +2646,7 @@ class ba {
|
|
|
2643
2646
|
await this.reload(e, t, A);
|
|
2644
2647
|
else if (a.defaultVariant)
|
|
2645
2648
|
return t.markStepsAsInitialised([e.stepName]), this.selectVariantCommand(e, a.defaultVariant, t, () => {
|
|
2646
|
-
});
|
|
2649
|
+
}, !0);
|
|
2647
2650
|
return t.markStepsAsInitialised([e.stepName]), null;
|
|
2648
2651
|
}
|
|
2649
2652
|
async reload(e, t, A) {
|
|
@@ -2674,51 +2677,51 @@ class ba {
|
|
|
2674
2677
|
const n = await this.selectVariantCommand(e, t, A, a);
|
|
2675
2678
|
n && (n.command && A.getCommandDispatcher()(n.command), n.followup && await n.followup());
|
|
2676
2679
|
}
|
|
2677
|
-
async selectVariantCommand(e, t, A, a) {
|
|
2678
|
-
const
|
|
2679
|
-
if (!n)
|
|
2680
|
-
throw new te(t);
|
|
2681
|
-
const i = n == null ? void 0 : n.fileLink;
|
|
2680
|
+
async selectVariantCommand(e, t, A, a, n) {
|
|
2681
|
+
const i = t.asset;
|
|
2682
2682
|
if (!i)
|
|
2683
|
+
throw new te(t);
|
|
2684
|
+
const s = i == null ? void 0 : i.fileLink;
|
|
2685
|
+
if (!s)
|
|
2683
2686
|
return console.error("No URL for picture!"), null;
|
|
2684
2687
|
a(!0), A.setMandatoryFulfilled(e.stepName, !1);
|
|
2685
|
-
const
|
|
2686
|
-
const
|
|
2687
|
-
if (!
|
|
2688
|
-
throw new z(
|
|
2689
|
-
const
|
|
2688
|
+
const r = A.getRegionElements(e.stepName).map((l) => new ee(l.id)), g = (l) => {
|
|
2689
|
+
const w = A.getLayouts().find((h) => h.panelId === l.panelId);
|
|
2690
|
+
if (!w)
|
|
2691
|
+
throw new z(l);
|
|
2692
|
+
const E = J();
|
|
2690
2693
|
return {
|
|
2691
|
-
regionElement: { id:
|
|
2694
|
+
regionElement: { id: E, region: l },
|
|
2692
2695
|
command: new O(
|
|
2693
2696
|
{
|
|
2694
2697
|
stepName: e.stepName,
|
|
2695
|
-
stepRegion:
|
|
2696
|
-
id:
|
|
2697
|
-
src:
|
|
2698
|
+
stepRegion: l,
|
|
2699
|
+
id: E,
|
|
2700
|
+
src: s,
|
|
2698
2701
|
type: k.Image,
|
|
2699
|
-
y:
|
|
2700
|
-
x:
|
|
2701
|
-
rotation:
|
|
2702
|
-
width:
|
|
2703
|
-
height:
|
|
2704
|
-
layer:
|
|
2705
|
-
layerIndex:
|
|
2706
|
-
immutable:
|
|
2702
|
+
y: l.top,
|
|
2703
|
+
x: l.left,
|
|
2704
|
+
rotation: l.rotation,
|
|
2705
|
+
width: l.width,
|
|
2706
|
+
height: l.height,
|
|
2707
|
+
layer: l.layer,
|
|
2708
|
+
layerIndex: l.layerIndex,
|
|
2709
|
+
immutable: l.immutable,
|
|
2707
2710
|
preserveAspectRatio: "none"
|
|
2708
2711
|
},
|
|
2709
|
-
|
|
2712
|
+
w
|
|
2710
2713
|
)
|
|
2711
2714
|
};
|
|
2712
|
-
},
|
|
2715
|
+
}, B = e.data.regions.map(g);
|
|
2713
2716
|
return {
|
|
2714
|
-
command: new v([...
|
|
2717
|
+
command: new v([...r, ...B.map((l) => l.command)]),
|
|
2715
2718
|
followup: async () => {
|
|
2716
2719
|
await A.setSelectionsAndElements(
|
|
2717
2720
|
e.stepName,
|
|
2718
2721
|
[t],
|
|
2719
|
-
|
|
2722
|
+
B.map((l) => l.regionElement),
|
|
2720
2723
|
async () => {
|
|
2721
|
-
A.setMandatoryFulfilled(e.stepName, !0), a(!1);
|
|
2724
|
+
n || A.setMandatoryFulfilled(e.stepName, !0), a(!1);
|
|
2722
2725
|
}
|
|
2723
2726
|
);
|
|
2724
2727
|
}
|
|
@@ -2740,7 +2743,7 @@ class Ja {
|
|
|
2740
2743
|
var r;
|
|
2741
2744
|
return o.id === ((r = a.defaultVariant) == null ? void 0 : r.id);
|
|
2742
2745
|
});
|
|
2743
|
-
return this.selectVariantLambda(e, (s == null ? void 0 : s.id) || "", t);
|
|
2746
|
+
return this.selectVariantLambda(e, (s == null ? void 0 : s.id) || "", t, !0);
|
|
2744
2747
|
}
|
|
2745
2748
|
}
|
|
2746
2749
|
return null;
|
|
@@ -2764,21 +2767,21 @@ class Ja {
|
|
|
2764
2767
|
const a = await this.selectVariantLambda(e, t, A);
|
|
2765
2768
|
a && (a.command && A.getCommandDispatcher()(a.command), a.followup && await a.followup());
|
|
2766
2769
|
}
|
|
2767
|
-
async selectVariantLambda(e, t, A) {
|
|
2768
|
-
const
|
|
2769
|
-
if (!a)
|
|
2770
|
-
return null;
|
|
2771
|
-
const n = a.variants;
|
|
2770
|
+
async selectVariantLambda(e, t, A, a) {
|
|
2771
|
+
const n = e.option;
|
|
2772
2772
|
if (!n)
|
|
2773
2773
|
return null;
|
|
2774
|
-
const i = n.
|
|
2774
|
+
const i = n.variants;
|
|
2775
2775
|
if (!i)
|
|
2776
|
+
return null;
|
|
2777
|
+
const s = i.length > 1 ? i.find((o) => o.id === t) : i[0];
|
|
2778
|
+
if (!s)
|
|
2776
2779
|
throw new Error("Failed to find selected variant in step variants, this should never happen!");
|
|
2777
2780
|
return {
|
|
2778
2781
|
command: void 0,
|
|
2779
2782
|
followup: async () => {
|
|
2780
|
-
await A.setSelectionsAndElements(e.stepName, [
|
|
2781
|
-
A.setMandatoryFulfilled(e.stepName, !0);
|
|
2783
|
+
await A.setSelectionsAndElements(e.stepName, [s], [], async () => {
|
|
2784
|
+
a || A.setMandatoryFulfilled(e.stepName, !0);
|
|
2782
2785
|
});
|
|
2783
2786
|
}
|
|
2784
2787
|
};
|
|
@@ -2811,7 +2814,7 @@ class La {
|
|
|
2811
2814
|
async init(e, t, A) {
|
|
2812
2815
|
const a = e.option;
|
|
2813
2816
|
if (!a)
|
|
2814
|
-
throw new
|
|
2817
|
+
throw new Re(e);
|
|
2815
2818
|
if (A)
|
|
2816
2819
|
await this.reload(e, t, A);
|
|
2817
2820
|
else {
|
|
@@ -2890,7 +2893,7 @@ class La {
|
|
|
2890
2893
|
};
|
|
2891
2894
|
} else {
|
|
2892
2895
|
const r = (d) => {
|
|
2893
|
-
const w = n.find((
|
|
2896
|
+
const w = n.find((I) => I.panelId === d.panelId);
|
|
2894
2897
|
if (!w)
|
|
2895
2898
|
throw new z(d);
|
|
2896
2899
|
const E = s(), h = `
|
|
@@ -2913,18 +2916,18 @@ class La {
|
|
|
2913
2916
|
fill="${E}"
|
|
2914
2917
|
/>
|
|
2915
2918
|
</svg>
|
|
2916
|
-
`,
|
|
2917
|
-
|
|
2918
|
-
const
|
|
2919
|
+
`, u = {};
|
|
2920
|
+
u[this.shapeFillId] = { browserValue: E };
|
|
2921
|
+
const C = J();
|
|
2919
2922
|
return {
|
|
2920
|
-
id:
|
|
2923
|
+
id: C,
|
|
2921
2924
|
region: d,
|
|
2922
2925
|
command: new O(
|
|
2923
2926
|
{
|
|
2924
2927
|
stepRegion: d,
|
|
2925
2928
|
stepName: e.stepName,
|
|
2926
|
-
colors:
|
|
2927
|
-
id:
|
|
2929
|
+
colors: u,
|
|
2930
|
+
id: C,
|
|
2928
2931
|
svg: h,
|
|
2929
2932
|
type: k.Illustration,
|
|
2930
2933
|
y: d.top,
|
|
@@ -3094,7 +3097,7 @@ class Ka {
|
|
|
3094
3097
|
return;
|
|
3095
3098
|
const n = a.getCommandDispatcher();
|
|
3096
3099
|
for (const i of A) {
|
|
3097
|
-
const s = new
|
|
3100
|
+
const s = new RA(i.id, t);
|
|
3098
3101
|
n(s);
|
|
3099
3102
|
}
|
|
3100
3103
|
}
|
|
@@ -3114,7 +3117,7 @@ class Ka {
|
|
|
3114
3117
|
for (const r of A) {
|
|
3115
3118
|
if (!t.fill)
|
|
3116
3119
|
throw new Error("Fill not set on new color selection!");
|
|
3117
|
-
const g = new
|
|
3120
|
+
const g = new HA(r.id, t.fill, s);
|
|
3118
3121
|
n(g);
|
|
3119
3122
|
}
|
|
3120
3123
|
}
|
|
@@ -3228,24 +3231,24 @@ class Ka {
|
|
|
3228
3231
|
if (o && l) {
|
|
3229
3232
|
const d = (r = o.variants) == null ? void 0 : r.find((w) => w.id === l);
|
|
3230
3233
|
if (d) {
|
|
3231
|
-
const w = await this.fontDataFromVariant(d), E = s.map((
|
|
3234
|
+
const w = await this.fontDataFromVariant(d), E = s.map((I) => ({ id: I.id, region: I.stepRegion })), h = (g = a.storage) == null ? void 0 : g.color, u = (B = a.storage) == null ? void 0 : B.text;
|
|
3232
3235
|
await t.setSelectionsAndElements(
|
|
3233
3236
|
e.stepName,
|
|
3234
3237
|
[d],
|
|
3235
3238
|
E,
|
|
3236
3239
|
async () => {
|
|
3237
|
-
t.updateMetadata(e.stepName, { color: h, text:
|
|
3238
|
-
const
|
|
3239
|
-
t.getCommandDispatcher()(
|
|
3240
|
+
t.updateMetadata(e.stepName, { color: h, text: u }), t.updateStorage(e.stepName, { text: u, inputText: u });
|
|
3241
|
+
const I = s.map((Q) => new mt(Q.id, w)), m = new v(I);
|
|
3242
|
+
t.getCommandDispatcher()(m), t.setMandatoryFulfilled(e.stepName, !0);
|
|
3240
3243
|
}
|
|
3241
3244
|
);
|
|
3242
|
-
const { command:
|
|
3243
|
-
|
|
3245
|
+
const { command: C } = j.updateInputText(
|
|
3246
|
+
u || "",
|
|
3244
3247
|
s,
|
|
3245
3248
|
e,
|
|
3246
3249
|
t
|
|
3247
3250
|
);
|
|
3248
|
-
|
|
3251
|
+
C && t.getCommandDispatcher()(C);
|
|
3249
3252
|
}
|
|
3250
3253
|
}
|
|
3251
3254
|
}
|
|
@@ -3327,7 +3330,7 @@ class Ka {
|
|
|
3327
3330
|
), w = l.flatMap((h) => h.commands);
|
|
3328
3331
|
if (o) {
|
|
3329
3332
|
const h = l.map(
|
|
3330
|
-
(
|
|
3333
|
+
(u) => new Te(u.regionElement.id, o)
|
|
3331
3334
|
);
|
|
3332
3335
|
w.push(...h);
|
|
3333
3336
|
}
|
|
@@ -3357,21 +3360,21 @@ class Ka {
|
|
|
3357
3360
|
if (!d)
|
|
3358
3361
|
throw new Ge("Failed to find layout for region: " + B.panelId);
|
|
3359
3362
|
const h = A.colorOption;
|
|
3360
|
-
let
|
|
3363
|
+
let u;
|
|
3361
3364
|
if (h && h.variants) {
|
|
3362
|
-
const N = h.variants.find((
|
|
3365
|
+
const N = h.variants.find((R) => {
|
|
3363
3366
|
var T;
|
|
3364
|
-
return
|
|
3367
|
+
return R.id === ((T = h.defaultVariant) == null ? void 0 : T.id);
|
|
3365
3368
|
}) || h.variants[0];
|
|
3366
|
-
|
|
3369
|
+
u = this.createTextFillSpotColor(h, N), i.updateStorage(e, {
|
|
3367
3370
|
colorProfileAssetKey: (E = h.colorProfile) == null ? void 0 : E.key
|
|
3368
3371
|
});
|
|
3369
3372
|
}
|
|
3370
|
-
const
|
|
3373
|
+
const C = await this.getDefaultColor(A), I = C || "#000000", m = {
|
|
3371
3374
|
stepRegion: B,
|
|
3372
3375
|
stepName: e,
|
|
3373
3376
|
align: this.textAlign(A),
|
|
3374
|
-
fill: n.color ? n.color :
|
|
3377
|
+
fill: n.color ? n.color : I,
|
|
3375
3378
|
fontSize: A.size || ze,
|
|
3376
3379
|
fontData: a,
|
|
3377
3380
|
id: w,
|
|
@@ -3390,35 +3393,35 @@ class Ka {
|
|
|
3390
3393
|
verticalAlign: A.verticalAlign || "middle",
|
|
3391
3394
|
curved: A.curved,
|
|
3392
3395
|
paths: A.paths,
|
|
3393
|
-
fillSpotColorDefinition:
|
|
3394
|
-
},
|
|
3395
|
-
if (!
|
|
3396
|
+
fillSpotColorDefinition: u
|
|
3397
|
+
}, Q = [], p = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map();
|
|
3398
|
+
if (!m.fontData)
|
|
3396
3399
|
throw new b("Failed to resolve font data for text.");
|
|
3397
3400
|
const [F, M] = Me(
|
|
3398
|
-
|
|
3399
|
-
|
|
3401
|
+
m.fontSize,
|
|
3402
|
+
m.fontData,
|
|
3400
3403
|
{
|
|
3401
|
-
left:
|
|
3402
|
-
top:
|
|
3403
|
-
width:
|
|
3404
|
-
height:
|
|
3405
|
-
rotation:
|
|
3404
|
+
left: m.x,
|
|
3405
|
+
top: m.y,
|
|
3406
|
+
width: m.width,
|
|
3407
|
+
height: m.height,
|
|
3408
|
+
rotation: m.rotation,
|
|
3406
3409
|
panelId: ""
|
|
3407
3410
|
},
|
|
3408
3411
|
[o],
|
|
3409
3412
|
{ size: A.size, minSize: A.minSize, maxSize: A.maxSize }
|
|
3410
3413
|
);
|
|
3411
|
-
p.set(
|
|
3414
|
+
p.set(m.id, F), f.set(m.id, M);
|
|
3412
3415
|
const P = A.curved || A.vertical ? o : (M || []).join(`
|
|
3413
3416
|
`);
|
|
3414
|
-
|
|
3415
|
-
this.generateTextChangeCommandsForRegion(F, A,
|
|
3417
|
+
Q.push(
|
|
3418
|
+
this.generateTextChangeCommandsForRegion(F, A, m.id, P)
|
|
3416
3419
|
);
|
|
3417
|
-
const S = new O(
|
|
3420
|
+
const S = new O(m, d);
|
|
3418
3421
|
return {
|
|
3419
3422
|
regionElement: { id: w, region: B },
|
|
3420
|
-
commands: [S, ...
|
|
3421
|
-
newElement:
|
|
3423
|
+
commands: [S, ...Q],
|
|
3424
|
+
newElement: m,
|
|
3422
3425
|
fontData: a
|
|
3423
3426
|
};
|
|
3424
3427
|
} catch (h) {
|
|
@@ -3453,53 +3456,53 @@ class Ka {
|
|
|
3453
3456
|
*/
|
|
3454
3457
|
async changeInputTextWithRegion(e, t, A, a, n, i, s, o, r, g) {
|
|
3455
3458
|
const B = (a || "").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g, ""), l = this.getProcessedInput(B, e.data, s), d = i.getRegionElements(e.stepName), w = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new Map();
|
|
3456
|
-
for (const
|
|
3457
|
-
if (
|
|
3458
|
-
const [
|
|
3459
|
+
for (const m of d)
|
|
3460
|
+
if (m.region) {
|
|
3461
|
+
const [Q, p] = Me(
|
|
3459
3462
|
t,
|
|
3460
3463
|
A,
|
|
3461
|
-
|
|
3464
|
+
m.region,
|
|
3462
3465
|
[l],
|
|
3463
3466
|
{ size: e.data.size, minSize: e.data.minSize, maxSize: e.data.maxSize }
|
|
3464
3467
|
);
|
|
3465
|
-
w.set(
|
|
3468
|
+
w.set(m.id, Q), E.set(m.id, p);
|
|
3466
3469
|
}
|
|
3467
|
-
const
|
|
3470
|
+
const u = (() => {
|
|
3468
3471
|
if (e.data && e.data.maxLength && l.length > e.data.maxLength)
|
|
3469
3472
|
return g && g(!0), { info: "0" };
|
|
3470
|
-
const
|
|
3471
|
-
for (const p of
|
|
3472
|
-
for (const
|
|
3473
|
-
const F =
|
|
3473
|
+
const m = i.getProfanities(), Q = Ze(l.toLowerCase());
|
|
3474
|
+
for (const p of Q)
|
|
3475
|
+
for (const f in m) {
|
|
3476
|
+
const F = m[f].toLowerCase().replace(/\s/g, "");
|
|
3474
3477
|
if (p === F)
|
|
3475
3478
|
return o(!0), { error: "Blocked profanity." };
|
|
3476
3479
|
}
|
|
3477
3480
|
return !e.data.vertical && !e.data.allowNewlines && (l.includes(`
|
|
3478
|
-
`) || l.includes("\r")) ? (o(!0), { error: "Cannot span multiple lines." }) : !e.data.curved && !Array.from(E.values()).every((
|
|
3481
|
+
`) || l.includes("\r")) ? (o(!0), { error: "Cannot span multiple lines." }) : !e.data.curved && !Array.from(E.values()).every((f) => f) ? (o(!0), { error: "Does not fit." }) : (o(!1), { info: (e.data.maxLength - l.length).toString() });
|
|
3479
3482
|
})();
|
|
3480
|
-
if (
|
|
3481
|
-
r(
|
|
3483
|
+
if (u.error) {
|
|
3484
|
+
r(u.error);
|
|
3482
3485
|
return;
|
|
3483
3486
|
}
|
|
3484
|
-
if (r(`${
|
|
3487
|
+
if (r(`${u.info} characters remaining` || ""), g)
|
|
3485
3488
|
return;
|
|
3486
3489
|
i.updateStorage(e.stepName, { text: B }), i.updateMetadata(e.stepName, {
|
|
3487
3490
|
text: this.injectReplaceableText(B, e.data)
|
|
3488
3491
|
}), n.defaultCleared && i.setMandatoryFulfilled(e.stepName, !0);
|
|
3489
|
-
const
|
|
3490
|
-
for (const
|
|
3491
|
-
const
|
|
3492
|
+
const C = [];
|
|
3493
|
+
for (const m of d) {
|
|
3494
|
+
const Q = e.data.curved ? l : (E.get(m.id) || []).join(`
|
|
3492
3495
|
`);
|
|
3493
|
-
|
|
3496
|
+
C.push(
|
|
3494
3497
|
this.generateTextChangeCommandsForRegion(
|
|
3495
|
-
w.get(
|
|
3498
|
+
w.get(m.id) || 1,
|
|
3496
3499
|
e.data,
|
|
3497
|
-
|
|
3498
|
-
|
|
3500
|
+
m.id,
|
|
3501
|
+
Q
|
|
3499
3502
|
)
|
|
3500
3503
|
);
|
|
3501
3504
|
}
|
|
3502
|
-
return new v(
|
|
3505
|
+
return new v(C);
|
|
3503
3506
|
}
|
|
3504
3507
|
}
|
|
3505
3508
|
const j = new Ka();
|
|
@@ -4766,14 +4769,14 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
|
|
|
4766
4769
|
</g>
|
|
4767
4770
|
</svg>
|
|
4768
4771
|
|
|
4769
|
-
`,
|
|
4770
|
-
const t =
|
|
4772
|
+
`, H = (c) => GA("http://www.w3.org/2000/svg", c), gt = (c, e) => {
|
|
4773
|
+
const t = H("rect");
|
|
4771
4774
|
return t.setAttribute("height", `${c}`), t.setAttribute("width", `${e}`), t;
|
|
4772
4775
|
}, Wa = () => {
|
|
4773
|
-
const c =
|
|
4776
|
+
const c = H("svg");
|
|
4774
4777
|
return c.setAttribute("xmlns", "http://www.w3.org/2000/svg"), c.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"), c.setAttribute("version", "1.1"), c;
|
|
4775
4778
|
}, Xa = (c) => {
|
|
4776
|
-
const e =
|
|
4779
|
+
const e = H("use");
|
|
4777
4780
|
return e.setAttribute("xlink:href", c), e.setAttribute("href", c), e;
|
|
4778
4781
|
};
|
|
4779
4782
|
function rA(c) {
|
|
@@ -4781,7 +4784,7 @@ function rA(c) {
|
|
|
4781
4784
|
return e.setAttribute("height", `${a}`), e.setAttribute("width", `${A}`), [e, a, A];
|
|
4782
4785
|
}
|
|
4783
4786
|
const qa = (c, e, t) => {
|
|
4784
|
-
const A =
|
|
4787
|
+
const A = H("g");
|
|
4785
4788
|
c.appendChild(A), A.setAttribute("id", t), A.innerHTML = e;
|
|
4786
4789
|
};
|
|
4787
4790
|
function cA(c, e, t) {
|
|
@@ -4943,31 +4946,31 @@ class $a extends ct {
|
|
|
4943
4946
|
}
|
|
4944
4947
|
brandSvg(e, t) {
|
|
4945
4948
|
const A = e.toSVG(2), a = e.getBoundingBox(), n = a.x2 - a.x1, i = e.toPathData(3), s = () => {
|
|
4946
|
-
const
|
|
4947
|
-
|
|
4948
|
-
const
|
|
4949
|
-
|
|
4950
|
-
const F =
|
|
4951
|
-
|
|
4952
|
-
const M =
|
|
4953
|
-
|
|
4954
|
-
const P =
|
|
4955
|
-
return
|
|
4949
|
+
const Q = H("g"), p = H("defs");
|
|
4950
|
+
Q.appendChild(p), p.appendChild(gA(3, 7, 4, "shadow"));
|
|
4951
|
+
const f = H("g");
|
|
4952
|
+
Q.appendChild(f), f.setAttribute("filter", "url(#shadow)"), f.innerHTML = A;
|
|
4953
|
+
const F = H("g");
|
|
4954
|
+
Q.appendChild(F), F.setAttribute("fill", "red"), F.setAttribute("stroke", "red"), F.setAttribute("stroke-width", "9"), F.innerHTML = A;
|
|
4955
|
+
const M = H("g");
|
|
4956
|
+
Q.appendChild(M), M.setAttribute("fill", "#9d2621"), M.setAttribute("transform", "translate(1,1)"), M.innerHTML = A;
|
|
4957
|
+
const P = H("g");
|
|
4958
|
+
return Q.appendChild(P), P.setAttribute("fill", "yellow"), P.innerHTML = A, new Bt(Q).transform(([N, R]) => [N, R + (n / 2 - N) ** 2 / (n * 2.9)]), Q;
|
|
4956
4959
|
}, [o, r, g] = rA(t);
|
|
4957
4960
|
if (!o)
|
|
4958
4961
|
return "";
|
|
4959
|
-
const B =
|
|
4962
|
+
const B = H("defs");
|
|
4960
4963
|
o.appendChild(B), cA(o, B, t);
|
|
4961
|
-
const l = r * 0.23, d = g * 0.94, w = g * 0.04, E = r * 0.53, h =
|
|
4964
|
+
const l = r * 0.23, d = g * 0.94, w = g * 0.04, E = r * 0.53, h = H("g");
|
|
4962
4965
|
o.appendChild(h), h.setAttribute("transform", `translate(${w} ${E}) rotate(-21)`);
|
|
4963
|
-
const
|
|
4964
|
-
|
|
4965
|
-
const
|
|
4966
|
-
h.appendChild(
|
|
4967
|
-
const
|
|
4968
|
-
|
|
4969
|
-
const
|
|
4970
|
-
return lt(
|
|
4966
|
+
const u = gt(l, d);
|
|
4967
|
+
u.setAttribute("opacity", "0"), h.appendChild(u);
|
|
4968
|
+
const C = H("g");
|
|
4969
|
+
h.appendChild(C);
|
|
4970
|
+
const I = s();
|
|
4971
|
+
C.appendChild(I);
|
|
4972
|
+
const m = it(i);
|
|
4973
|
+
return lt(C, m, l, d), lA(o.outerHTML);
|
|
4971
4974
|
}
|
|
4972
4975
|
}
|
|
4973
4976
|
const _a = "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==";
|
|
@@ -4987,34 +4990,34 @@ class en extends ct {
|
|
|
4987
4990
|
}
|
|
4988
4991
|
brandSvg(e, t, A) {
|
|
4989
4992
|
const a = e.toSVG(2), n = e.getBoundingBox(), i = n.y2 - n.y1, s = n.x2 - n.x1, o = e.toPathData(3), r = () => {
|
|
4990
|
-
const
|
|
4991
|
-
|
|
4992
|
-
const M =
|
|
4993
|
-
|
|
4994
|
-
const P =
|
|
4995
|
-
|
|
4996
|
-
const S = new Bt(
|
|
4997
|
-
return S.transform(([N,
|
|
4993
|
+
const f = H("g"), F = H("g");
|
|
4994
|
+
f.appendChild(F), F.setAttribute("stroke", "#5C1A0D"), F.setAttribute("stroke-width", "4"), F.setAttribute("transform", "translate(1,1)"), F.innerHTML = a;
|
|
4995
|
+
const M = H("g");
|
|
4996
|
+
f.appendChild(M), M.setAttribute("fill", "#FFE386"), M.setAttribute("transform", "translate(1,1)"), M.innerHTML = a;
|
|
4997
|
+
const P = H("g");
|
|
4998
|
+
f.appendChild(P), P.setAttribute("fill", "white"), P.innerHTML = a;
|
|
4999
|
+
const S = new Bt(f);
|
|
5000
|
+
return S.transform(([N, R]) => [N, R + ((s - N) * R) ** 2 / (s * 5e4)]), S.transform(([N, R]) => [
|
|
4998
5001
|
N,
|
|
4999
|
-
|
|
5000
|
-
]), S.transform(([N,
|
|
5002
|
+
R + (s / 3 - N) ** 2 / s * this.indicator(N < s / 3)
|
|
5003
|
+
]), S.transform(([N, R]) => [N - (i - R) * (s - N) / 800, R]), f;
|
|
5001
5004
|
}, [g, B, l] = rA(t);
|
|
5002
5005
|
if (!g)
|
|
5003
5006
|
return "";
|
|
5004
|
-
const d =
|
|
5007
|
+
const d = H("defs");
|
|
5005
5008
|
g.appendChild(d), cA(g, d, t);
|
|
5006
|
-
let w, E, h,
|
|
5007
|
-
A ? (w = B * 0.25 * (1 + 0.1), E = l / 2 * (1 + 0.1), h = l * 0.22,
|
|
5008
|
-
const
|
|
5009
|
-
g.appendChild(
|
|
5010
|
-
const
|
|
5011
|
-
|
|
5012
|
-
const
|
|
5013
|
-
|
|
5014
|
-
const
|
|
5015
|
-
|
|
5009
|
+
let w, E, h, u;
|
|
5010
|
+
A ? (w = B * 0.25 * (1 + 0.1), E = l / 2 * (1 + 0.1), h = l * 0.22, u = B * 0.32) : (w = B * 0.22 * (1 + 0.1), E = l * 0.8, h = l * 0.067, u = B * 0.33);
|
|
5011
|
+
const C = H("g");
|
|
5012
|
+
g.appendChild(C), C.setAttribute("transform", `translate(${h} ${u}) rotate(-10)`);
|
|
5013
|
+
const I = gt(w, E);
|
|
5014
|
+
I.setAttribute("opacity", "0"), C.appendChild(I);
|
|
5015
|
+
const m = H("g");
|
|
5016
|
+
C.appendChild(m);
|
|
5017
|
+
const Q = r();
|
|
5018
|
+
m.appendChild(Q);
|
|
5016
5019
|
const p = it(o);
|
|
5017
|
-
return lt(
|
|
5020
|
+
return lt(m, p, w, E), g.outerHTML;
|
|
5018
5021
|
}
|
|
5019
5022
|
// 1 if true, 0 if false.
|
|
5020
5023
|
}
|
|
@@ -5030,35 +5033,35 @@ class An extends ct {
|
|
|
5030
5033
|
return this.svgElement(e, t);
|
|
5031
5034
|
}
|
|
5032
5035
|
svgElement(e, t) {
|
|
5033
|
-
const A = nt(tn), n = e !== "" ? ((
|
|
5034
|
-
const
|
|
5035
|
-
|
|
5036
|
-
const
|
|
5037
|
-
|
|
5038
|
-
const
|
|
5039
|
-
|
|
5040
|
-
const p =
|
|
5041
|
-
p.classList.add("module-layer0"),
|
|
5042
|
-
const
|
|
5043
|
-
|
|
5044
|
-
const F =
|
|
5045
|
-
F.classList.add("module-layer2"),
|
|
5046
|
-
const M =
|
|
5047
|
-
return M.classList.add("module-layer3"),
|
|
5048
|
-
}, l =
|
|
5036
|
+
const A = nt(tn), n = e !== "" ? ((I) => I.charAt(0).toUpperCase() + I.substr(1).toLowerCase())(e) : "", i = A.getPath(n, 0, 72, 72), s = i.toSVG(2), o = i.getBoundingBox(), r = o.x2 - o.x1, g = i.toPathData(3), B = () => {
|
|
5037
|
+
const I = H("g");
|
|
5038
|
+
I.classList.add("module-text-group");
|
|
5039
|
+
const m = H("defs");
|
|
5040
|
+
I.appendChild(m), m.appendChild(gA(0, 2, 2, "shadow"));
|
|
5041
|
+
const Q = H("path");
|
|
5042
|
+
Q.setAttribute("d", g), Q.setAttribute("stroke", "black"), Q.setAttribute("stroke-width", "3"), m.appendChild(Q);
|
|
5043
|
+
const p = H("g");
|
|
5044
|
+
p.classList.add("module-layer0"), I.appendChild(p), p.setAttribute("filter", "url(#shadow)"), p.innerHTML = Q.outerHTML;
|
|
5045
|
+
const f = H("g");
|
|
5046
|
+
f.classList.add("module-layer1"), I.appendChild(f), f.setAttribute("stroke-width", "3"), f.setAttribute("stroke", "rgb(45,41,38)"), f.setAttribute("fill", "rgb(45,41,38)"), f.setAttribute("transform", "translate(0.5,0)"), f.innerHTML = s;
|
|
5047
|
+
const F = H("g");
|
|
5048
|
+
F.classList.add("module-layer2"), I.appendChild(F), F.setAttribute("fill", "rgb(255,209,0)"), F.setAttribute("transform", "translate(1,-0.1)"), F.innerHTML = s;
|
|
5049
|
+
const M = H("g");
|
|
5050
|
+
return M.classList.add("module-layer3"), I.appendChild(M), M.setAttribute("fill", "white"), M.innerHTML = s, new Bt(I).transform(([S, N]) => [S, N + (r / 2 - S) ** 2 / (r * 6)]), I;
|
|
5051
|
+
}, l = H("g");
|
|
5049
5052
|
l.classList.add("module-root");
|
|
5050
|
-
const d =
|
|
5053
|
+
const d = H("defs");
|
|
5051
5054
|
l.appendChild(d);
|
|
5052
|
-
const w =
|
|
5055
|
+
const w = H("g");
|
|
5053
5056
|
w.classList.add("module-bounds"), l.appendChild(w);
|
|
5054
5057
|
const E = gt(t.height, t.width);
|
|
5055
5058
|
E.setAttribute("opacity", "0"), w.appendChild(E);
|
|
5056
|
-
const h =
|
|
5059
|
+
const h = H("g");
|
|
5057
5060
|
h.classList.add("module-text-enclosure"), l.appendChild(h);
|
|
5058
|
-
const
|
|
5059
|
-
h.appendChild(
|
|
5060
|
-
const
|
|
5061
|
-
return lt(h,
|
|
5061
|
+
const u = B();
|
|
5062
|
+
h.appendChild(u);
|
|
5063
|
+
const C = it(g);
|
|
5064
|
+
return lt(h, C, t.height, t.width, 0.35, 0.65), lA(l.outerHTML);
|
|
5062
5065
|
}
|
|
5063
5066
|
}
|
|
5064
5067
|
async function BA(c) {
|
|
@@ -5089,17 +5092,17 @@ class Pt extends tA {
|
|
|
5089
5092
|
class nn {
|
|
5090
5093
|
constructor(e, t, A, a, n, i, s, o, r, g, B, l = !1, d, w = !1, E = !1, h = !1) {
|
|
5091
5094
|
this.workflowStatePromiseQueue = new AA(1), this.initialized = !1, this.readOnly = !1, this.isReloadedTransaction = !1, this.singleVariantsRenderable = !1, this.renderLayouts = () => {
|
|
5092
|
-
var
|
|
5095
|
+
var I;
|
|
5093
5096
|
if (!this.previewService)
|
|
5094
5097
|
return;
|
|
5095
|
-
const
|
|
5096
|
-
if (
|
|
5097
|
-
for (const [,
|
|
5098
|
-
|
|
5098
|
+
const u = this.getCommandContext().getAllLayouts(), C = (I = this.getLayoutPreviewService()) == null ? void 0 : I.getAll();
|
|
5099
|
+
if (C)
|
|
5100
|
+
for (const [, m] of C)
|
|
5101
|
+
m.render(this.getWorkflow(), u, this.getProduct().overlayImageUrl);
|
|
5099
5102
|
}, this.client = e, this.updateTransaction = i, this.commandContext = n, this.reloadedState = B, this.transaction = s, this.readOnly = l, this.singleVariantsRenderable = E, this.confirmedDesign = !1, this.editedSteps = {}, this.informationResults = [], this.mandatorySteps = {}, this.pendingUpdates = [], this.selectionCost = 0, this.workflow = t, this.stepSpecificServices = {}, this.profanityFilter = A, this.pollers = [], this.allScenes = [], this.layouts = a, this.product = o, this.previewService = r, this.modelContainer = d, 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.currentAdjustingStepId = "", this.renderableContextService = g, this.isReloadedTransaction = w, h && (this.workflowStatePromiseQueue.enabled = !1), this.initializationPromise = this.initializeDefaultWorkflowState(t), this.initializationPromise.then(() => {
|
|
5100
5103
|
this.initialized = !0;
|
|
5101
|
-
}), this.initializationPromise.catch((
|
|
5102
|
-
throw console.error(
|
|
5104
|
+
}), this.initializationPromise.catch((u) => {
|
|
5105
|
+
throw console.error(u), this.initialized = !1, new Error("Workflow initialization failed due to an error. See console.");
|
|
5103
5106
|
}), this.initializationPromise.finally(
|
|
5104
5107
|
() => this.getCommandContext().registerStateCallback(() => {
|
|
5105
5108
|
this.updateStateWithServer(), this.renderLayouts();
|
|
@@ -5492,16 +5495,16 @@ class nn {
|
|
|
5492
5495
|
), this.stepElements = {}, this.stepInitialised = {}, this.stepMetadata = {}, this.stepSelections = {}, this.storage = {}, await this.ensureStepsAreLoaded();
|
|
5493
5496
|
}
|
|
5494
5497
|
async setSelectionsAndElements(e, t, A, a) {
|
|
5495
|
-
var
|
|
5498
|
+
var Q;
|
|
5496
5499
|
const n = this.stepSelections;
|
|
5497
5500
|
this.stepSelections = {
|
|
5498
5501
|
...this.stepSelections,
|
|
5499
5502
|
[e]: { selectedVariants: t }
|
|
5500
|
-
}, this.selectionCost = Object.values(this.stepSelections).reduce((p,
|
|
5503
|
+
}, this.selectionCost = Object.values(this.stepSelections).reduce((p, f) => p + f.selectedVariants.map((F) => F.priceModifier || 0).reduce((F, M) => F + M, 0), 0), this.workflow.steps.forEach((p) => {
|
|
5501
5504
|
se(p, this.stepSelections) || (this.stepInitialised[p.stepName] = !1, delete this.stepMetadata[p.stepName], delete this.stepSelections[p.stepName], delete this.storage[p.stepName]);
|
|
5502
5505
|
});
|
|
5503
5506
|
const i = this.allScenes, s = ie(i, n), o = ie(i, this.stepSelections), r = s.map((p) => p.silentSteps).flat(), B = o.map((p) => p.silentSteps).flat().filter(
|
|
5504
|
-
(p) => !r.some((
|
|
5507
|
+
(p) => !r.some((f) => f.stepName === p.stepName)
|
|
5505
5508
|
);
|
|
5506
5509
|
r.forEach((p) => {
|
|
5507
5510
|
se(p, this.stepSelections) || (this.stepInitialised[p.stepName] = !1);
|
|
@@ -5515,15 +5518,15 @@ class nn {
|
|
|
5515
5518
|
const E = this.workflow.steps.find((p) => p.stepName === e);
|
|
5516
5519
|
if ((E == null ? void 0 : E.type) === y.Frame) {
|
|
5517
5520
|
const p = this.getStepSpecificServices(e);
|
|
5518
|
-
(
|
|
5519
|
-
}
|
|
5520
|
-
const h = l.map((p) => new ee(p.id)),
|
|
5521
|
-
|
|
5522
|
-
const
|
|
5523
|
-
if (
|
|
5524
|
-
const p =
|
|
5525
|
-
(
|
|
5526
|
-
|
|
5521
|
+
(Q = p == null ? void 0 : p.frameService) == null || Q.setTargetElements(A.map((f) => f.id));
|
|
5522
|
+
}
|
|
5523
|
+
const h = l.map((p) => new ee(p.id)), u = new pt(this.constructSerializableWorkflow()), C = [...w, ...h, u];
|
|
5524
|
+
C.length > 0 && this.commandContext.apply(new v(C), !0), await this.ensureStepsAreLoaded(), this.onElementsChange();
|
|
5525
|
+
const I = this.getInvalidModelVariants(), m = this.modelContainer;
|
|
5526
|
+
if (m) {
|
|
5527
|
+
const p = I.map(
|
|
5528
|
+
(f) => m.applyModelVariant(
|
|
5529
|
+
f,
|
|
5527
5530
|
{
|
|
5528
5531
|
contextService: this.getLayoutPreviewService()
|
|
5529
5532
|
},
|
|
@@ -6248,7 +6251,7 @@ class Ie {
|
|
|
6248
6251
|
case y.Model:
|
|
6249
6252
|
return new rn(e, t);
|
|
6250
6253
|
case y.Frame:
|
|
6251
|
-
return new
|
|
6254
|
+
return new Hi(e, t);
|
|
6252
6255
|
default:
|
|
6253
6256
|
throw new b(`Step type ${t.type} not yet supported in Core SDK`);
|
|
6254
6257
|
}
|
|
@@ -6476,19 +6479,19 @@ const En = async (c) => {
|
|
|
6476
6479
|
context: {
|
|
6477
6480
|
transactionOwnerId: P
|
|
6478
6481
|
}
|
|
6479
|
-
}),
|
|
6482
|
+
}), R = (T = N.data) == null ? void 0 : T.transactions[0].workflowState;
|
|
6480
6483
|
return N.errors ? (N.errors.forEach((L) => {
|
|
6481
6484
|
N.errors && console.log("Server Error:", L.message);
|
|
6482
|
-
}), null) :
|
|
6485
|
+
}), null) : R ?? null;
|
|
6483
6486
|
})() || (console.warn("State mismatch detected. Uploading known state explicitly"), console.warn("State Object:", JSON.stringify(A())), await c.updateStateWithServerImmediate(A), console.log("Server state is undefined @ Workflow completion"));
|
|
6484
|
-
const l = c.getPreviewService(), d = (F = e == null ? void 0 : e.finalizeStepConfig) == null ? void 0 : F.lookAtAnimation, w = l && e.showModelOnFinishStep && !!d, E = o && _e(o, e, !0), h = o && _e(o, e, !1),
|
|
6487
|
+
const l = c.getPreviewService(), d = (F = e == null ? void 0 : e.finalizeStepConfig) == null ? void 0 : F.lookAtAnimation, w = l && e.showModelOnFinishStep && !!d, E = o && _e(o, e, !0), h = o && _e(o, e, !1), u = async (M) => {
|
|
6485
6488
|
const P = {};
|
|
6486
6489
|
let S = 0;
|
|
6487
6490
|
if (Object.keys(n).length > 0)
|
|
6488
6491
|
for (const N of Object.keys(n)) {
|
|
6489
|
-
const
|
|
6490
|
-
for (let L = 0; L <
|
|
6491
|
-
const W =
|
|
6492
|
+
const R = n[N], T = e.steps.find((L) => L.stepName === N);
|
|
6493
|
+
for (let L = 0; L < R.selections.length; ++L) {
|
|
6494
|
+
const W = R.selections[L];
|
|
6492
6495
|
if (T && (!M || T.option && (T.option.variants || []).length > 1 && !T.data.hideSelectionInCart && !T.data.hideSelectionsInCart)) {
|
|
6493
6496
|
const Oe = T.stepTitle;
|
|
6494
6497
|
P[Oe] ? P[Oe].push({
|
|
@@ -6507,12 +6510,12 @@ const En = async (c) => {
|
|
|
6507
6510
|
}
|
|
6508
6511
|
}
|
|
6509
6512
|
return [P, S];
|
|
6510
|
-
}, [
|
|
6511
|
-
Object.keys(
|
|
6512
|
-
), [
|
|
6513
|
-
Object.keys(
|
|
6513
|
+
}, [C] = await u(!0), I = Object.fromEntries(
|
|
6514
|
+
Object.keys(C).map((M) => [M, C[M].map((P) => P.id)])
|
|
6515
|
+
), [m] = await u(!1), Q = Object.fromEntries(
|
|
6516
|
+
Object.keys(m).map((M) => [
|
|
6514
6517
|
M,
|
|
6515
|
-
|
|
6518
|
+
m[M].map((P) => P.id)
|
|
6516
6519
|
])
|
|
6517
6520
|
), p = await s(w, a.id);
|
|
6518
6521
|
return {
|
|
@@ -6534,19 +6537,19 @@ const En = async (c) => {
|
|
|
6534
6537
|
P.push({ key: S, value: N });
|
|
6535
6538
|
M.metadata = P;
|
|
6536
6539
|
}
|
|
6537
|
-
if (
|
|
6540
|
+
if (I) {
|
|
6538
6541
|
const P = [];
|
|
6539
|
-
for (const [S, N] of Object.entries(
|
|
6542
|
+
for (const [S, N] of Object.entries(Q))
|
|
6540
6543
|
P.push({ key: S, ids: N });
|
|
6541
6544
|
M.selectedVariants = P;
|
|
6542
6545
|
}
|
|
6543
6546
|
return M;
|
|
6544
6547
|
})(),
|
|
6545
|
-
cartSelectionsWithPrices:
|
|
6548
|
+
cartSelectionsWithPrices: C,
|
|
6546
6549
|
cartMetadata: E
|
|
6547
6550
|
};
|
|
6548
6551
|
}, Qn = async (c, e, t, A, a, n, i, s, o, r, g) => {
|
|
6549
|
-
var
|
|
6552
|
+
var u, C;
|
|
6550
6553
|
o("workflow.steps.finish.finalize.buildingLayouts");
|
|
6551
6554
|
const { designDetails: B, cartSelectionsWithPrices: l, cartMetadata: d } = await EA(
|
|
6552
6555
|
c,
|
|
@@ -6560,7 +6563,7 @@ const En = async (c) => {
|
|
|
6560
6563
|
g
|
|
6561
6564
|
);
|
|
6562
6565
|
o("workflow.steps.finish.finalize.creatingDesign");
|
|
6563
|
-
const w = await En(B), E = (
|
|
6566
|
+
const w = await En(B), E = (u = w == null ? void 0 : w.transaction) == null ? void 0 : u.previewImageLink;
|
|
6564
6567
|
if (!(w != null && w.transaction))
|
|
6565
6568
|
throw new Error("Failed to create design");
|
|
6566
6569
|
o("workflow.steps.finish.finalize.updatingTransaction");
|
|
@@ -6573,7 +6576,7 @@ const En = async (c) => {
|
|
|
6573
6576
|
w == null ? void 0 : w.sku,
|
|
6574
6577
|
d,
|
|
6575
6578
|
E,
|
|
6576
|
-
(
|
|
6579
|
+
(C = w == null ? void 0 : w.processExecution) == null ? void 0 : C.id
|
|
6577
6580
|
);
|
|
6578
6581
|
}, mn = async (c, e, t) => {
|
|
6579
6582
|
e("workflow.steps.finish.finalize.buildingLayouts"), await Promise.all(
|
|
@@ -6787,18 +6790,18 @@ class fe {
|
|
|
6787
6790
|
return this.workflowManager;
|
|
6788
6791
|
}
|
|
6789
6792
|
async createPreviewImage(e, t) {
|
|
6790
|
-
var
|
|
6791
|
-
const A = this.workflowManager.getWorkflow(), a = (
|
|
6793
|
+
var C, I;
|
|
6794
|
+
const A = this.workflowManager.getWorkflow(), a = (C = A == null ? void 0 : A.finalizeStepConfig) == null ? void 0 : C.lookAtAnimation;
|
|
6792
6795
|
if (e) {
|
|
6793
6796
|
if (!a)
|
|
6794
6797
|
throw new Error("Failed to generate cart preview image!");
|
|
6795
|
-
return await ((
|
|
6798
|
+
return await ((I = this.workflowManager.getPreviewService()) == null ? void 0 : I.renderSceneScreenshot(t ?? 512, a)) || "";
|
|
6796
6799
|
}
|
|
6797
6800
|
let n = 2048;
|
|
6798
6801
|
t && t <= 2048 && (n = t);
|
|
6799
|
-
const i = Ne(n, n), s = this.commandContext.getAllLayouts(), o = A.defaultPreviewPanelIndex || 0, r = A.panels[o], g = s.find((
|
|
6800
|
-
var
|
|
6801
|
-
return ((
|
|
6802
|
+
const i = Ne(n, n), s = this.commandContext.getAllLayouts(), o = A.defaultPreviewPanelIndex || 0, r = A.panels[o], g = s.find((m) => {
|
|
6803
|
+
var Q;
|
|
6804
|
+
return ((Q = m.layoutState) == null ? void 0 : Q.layout.panelId) === (r == null ? void 0 : r.name);
|
|
6802
6805
|
}) || s[0], B = g.layoutState.layout.previewRegion ? {
|
|
6803
6806
|
x: g.layoutState.layout.previewRegion.left,
|
|
6804
6807
|
y: g.layoutState.layout.previewRegion.top,
|
|
@@ -6826,8 +6829,8 @@ class fe {
|
|
|
6826
6829
|
DOMParser: Jt(),
|
|
6827
6830
|
fetch: et
|
|
6828
6831
|
})).render();
|
|
6829
|
-
const
|
|
6830
|
-
return i.toDataURL(
|
|
6832
|
+
const u = await this.getCanvasObjectURLAsync(i);
|
|
6833
|
+
return i.toDataURL(u);
|
|
6831
6834
|
}
|
|
6832
6835
|
getStepById(e) {
|
|
6833
6836
|
const t = this.getWorkflowManager().getWorkflow().steps.find((n) => n.stepName === e);
|
|
@@ -6918,13 +6921,13 @@ class fe {
|
|
|
6918
6921
|
d !== void 0 && d.forEach((w) => {
|
|
6919
6922
|
const E = o(w), h = g.has(JSON.stringify(w));
|
|
6920
6923
|
if (h && (E == null ? void 0 : E.getType()) === "Option") {
|
|
6921
|
-
const
|
|
6922
|
-
if (!
|
|
6924
|
+
const u = l.getCurrentVariant();
|
|
6925
|
+
if (!u)
|
|
6923
6926
|
return;
|
|
6924
|
-
r.selectVariant(
|
|
6927
|
+
r.selectVariant(u), g.delete(JSON.stringify(w));
|
|
6925
6928
|
} else if (h && (E == null ? void 0 : E.getType()) === "Text") {
|
|
6926
|
-
const
|
|
6927
|
-
r.setText(
|
|
6929
|
+
const u = l.getText();
|
|
6930
|
+
r.setText(u), g.delete(JSON.stringify(w));
|
|
6928
6931
|
}
|
|
6929
6932
|
});
|
|
6930
6933
|
}));
|
|
@@ -7176,7 +7179,7 @@ const Dn = [
|
|
|
7176
7179
|
},
|
|
7177
7180
|
d
|
|
7178
7181
|
),
|
|
7179
|
-
new
|
|
7182
|
+
new Ht(l, i, w)
|
|
7180
7183
|
];
|
|
7181
7184
|
};
|
|
7182
7185
|
return (await Promise.all(A.data.regions.map((r) => o(r)))).flat();
|
|
@@ -7184,11 +7187,11 @@ const Dn = [
|
|
|
7184
7187
|
return console.error(s), [];
|
|
7185
7188
|
}
|
|
7186
7189
|
}, Mn = async (c, e, t, A) => {
|
|
7187
|
-
var
|
|
7190
|
+
var Q, p;
|
|
7188
7191
|
const a = t.data, n = A.option;
|
|
7189
7192
|
if (!n)
|
|
7190
7193
|
return console.error(`No option for step ${A.stepName}.`), [];
|
|
7191
|
-
const i = ((
|
|
7194
|
+
const i = ((Q = n.variants) == null ? void 0 : Q.find((f) => f.id === a.illustrationVariantId)) || be(n);
|
|
7192
7195
|
if (!i)
|
|
7193
7196
|
return console.error(`No variant with ID: ${a.illustrationVariantId}`), [];
|
|
7194
7197
|
if (!i.asset)
|
|
@@ -7202,55 +7205,55 @@ const Dn = [
|
|
|
7202
7205
|
return console.error("Failed to read SVG."), [];
|
|
7203
7206
|
Ot(w);
|
|
7204
7207
|
const E = {};
|
|
7205
|
-
LA(w, (
|
|
7206
|
-
Dn.includes(
|
|
7207
|
-
const F =
|
|
7208
|
+
LA(w, (f) => {
|
|
7209
|
+
Dn.includes(f.tagName) && !f.attributes.getNamedItem("fill") && f.setAttribute("fill", "#000000");
|
|
7210
|
+
const F = f.attributes.getNamedItem("fill");
|
|
7208
7211
|
if (F && F.value !== "none") {
|
|
7209
7212
|
const P = F.value, N = `spiff-fill-${P.replace(/\W/g, "")}`;
|
|
7210
|
-
|
|
7213
|
+
f.classList.add(N), E[N] = { browserValue: P };
|
|
7211
7214
|
}
|
|
7212
|
-
const M =
|
|
7215
|
+
const M = f.attributes.getNamedItem("stroke");
|
|
7213
7216
|
if (M && M.value !== "none") {
|
|
7214
7217
|
const P = M.value, N = `spiff-stroke-${P.replace(/\W/g, "")}`;
|
|
7215
|
-
|
|
7218
|
+
f.classList.add(N), E[N] = { browserValue: P };
|
|
7216
7219
|
}
|
|
7217
7220
|
});
|
|
7218
|
-
const
|
|
7219
|
-
if (
|
|
7220
|
-
for (const [
|
|
7221
|
-
for (const M of Object.keys(
|
|
7221
|
+
const u = Tt().serializeToString(w), C = a.colors;
|
|
7222
|
+
if (C) {
|
|
7223
|
+
for (const [f, F] of Object.entries(E))
|
|
7224
|
+
for (const M of Object.keys(C))
|
|
7222
7225
|
if (F.browserValue === M) {
|
|
7223
|
-
E[
|
|
7226
|
+
E[f] = { browserValue: C[M] };
|
|
7224
7227
|
break;
|
|
7225
7228
|
}
|
|
7226
7229
|
}
|
|
7227
|
-
const
|
|
7228
|
-
const F = c.find((P) => P.panelId ===
|
|
7230
|
+
const I = (f) => {
|
|
7231
|
+
const F = c.find((P) => P.panelId === f.panelId);
|
|
7229
7232
|
if (!F)
|
|
7230
|
-
throw new z(
|
|
7233
|
+
throw new z(f);
|
|
7231
7234
|
const M = J();
|
|
7232
7235
|
return new O(
|
|
7233
7236
|
{
|
|
7234
7237
|
colors: E,
|
|
7235
7238
|
id: M,
|
|
7236
|
-
svg:
|
|
7239
|
+
svg: u,
|
|
7237
7240
|
type: k.Illustration,
|
|
7238
|
-
y:
|
|
7239
|
-
x:
|
|
7240
|
-
rotation:
|
|
7241
|
-
width:
|
|
7242
|
-
height:
|
|
7243
|
-
layer:
|
|
7244
|
-
layerIndex:
|
|
7245
|
-
immutable:
|
|
7241
|
+
y: f.top,
|
|
7242
|
+
x: f.left,
|
|
7243
|
+
rotation: f.rotation,
|
|
7244
|
+
width: f.width,
|
|
7245
|
+
height: f.height,
|
|
7246
|
+
layer: f.layer,
|
|
7247
|
+
layerIndex: f.layerIndex,
|
|
7248
|
+
immutable: f.immutable
|
|
7246
7249
|
},
|
|
7247
7250
|
F
|
|
7248
7251
|
);
|
|
7249
|
-
},
|
|
7252
|
+
}, m = A.data.regions;
|
|
7250
7253
|
try {
|
|
7251
|
-
return
|
|
7252
|
-
} catch (
|
|
7253
|
-
return console.error(
|
|
7254
|
+
return m.map(I);
|
|
7255
|
+
} catch (f) {
|
|
7256
|
+
return console.error(f), [];
|
|
7254
7257
|
}
|
|
7255
7258
|
}, Sn = async (c, e, t) => {
|
|
7256
7259
|
const A = await BA(t.data.module), a = e.data, n = (s, o) => {
|
|
@@ -7416,10 +7419,10 @@ const Dn = [
|
|
|
7416
7419
|
}
|
|
7417
7420
|
else {
|
|
7418
7421
|
const r = await _(n, !0), g = (B) => {
|
|
7419
|
-
const l = /<svg.*?<\/svg>/s, d = B.match(l) || [], w = (d == null ? void 0 : d.length) > 0 ? d[0] : "",
|
|
7420
|
-
if (!
|
|
7422
|
+
const l = /<svg.*?<\/svg>/s, d = B.match(l) || [], w = (d == null ? void 0 : d.length) > 0 ? d[0] : "", u = Lt().parseFromString(w, "image/svg+xml").firstElementChild;
|
|
7423
|
+
if (!u)
|
|
7421
7424
|
throw new ge("Failed to read SVG.");
|
|
7422
|
-
return Ot(
|
|
7425
|
+
return Ot(u), Tt().serializeToString(u);
|
|
7423
7426
|
};
|
|
7424
7427
|
o.forEach((B) => {
|
|
7425
7428
|
const l = c.find((w) => w.panelId === B.panelId);
|
|
@@ -7450,41 +7453,41 @@ const Dn = [
|
|
|
7450
7453
|
return A;
|
|
7451
7454
|
}, Nn = async (c, e, t, A) => {
|
|
7452
7455
|
const a = [], n = t.data, i = 30, s = (h) => h.vertical ? "center" : h.textAlign || "center", o = () => {
|
|
7453
|
-
var
|
|
7456
|
+
var I;
|
|
7454
7457
|
const h = A.option;
|
|
7455
7458
|
if (!h)
|
|
7456
7459
|
return;
|
|
7457
|
-
const
|
|
7458
|
-
if (!
|
|
7460
|
+
const u = ((I = h.variants) == null ? void 0 : I.find((m) => m.id === n.fontVariantId)) || be(h);
|
|
7461
|
+
if (!u || !u.asset)
|
|
7459
7462
|
return;
|
|
7460
|
-
e[A.stepName] = { selectedVariants: [
|
|
7461
|
-
const
|
|
7462
|
-
if (
|
|
7463
|
-
return
|
|
7463
|
+
e[A.stepName] = { selectedVariants: [u] };
|
|
7464
|
+
const C = u.asset.fileLink;
|
|
7465
|
+
if (C)
|
|
7466
|
+
return C;
|
|
7464
7467
|
}, g = await (async () => {
|
|
7465
7468
|
const h = o();
|
|
7466
7469
|
if (!h)
|
|
7467
7470
|
return;
|
|
7468
|
-
const
|
|
7471
|
+
const u = await at(h);
|
|
7469
7472
|
return {
|
|
7470
7473
|
assetUrl: h,
|
|
7471
|
-
name:
|
|
7474
|
+
name: u.names.fullName.en
|
|
7472
7475
|
};
|
|
7473
7476
|
})(), B = (A.data.replaceableText ? A.data.replaceableText.replace("{{}}", n.text) : n.text) || "", l = qe(B, {
|
|
7474
7477
|
vertical: A.data.vertical,
|
|
7475
7478
|
uppercase: A.data.uppercase
|
|
7476
7479
|
}), d = async (h) => {
|
|
7477
|
-
const
|
|
7478
|
-
if (!
|
|
7480
|
+
const u = h.colorOption;
|
|
7481
|
+
if (!u)
|
|
7479
7482
|
return;
|
|
7480
|
-
const
|
|
7481
|
-
return
|
|
7483
|
+
const C = V.getDefaultVariant(u);
|
|
7484
|
+
return C == null ? void 0 : C.color;
|
|
7482
7485
|
}, w = n.color || await d(A.data), E = A.data.regions;
|
|
7483
7486
|
for (const h of E) {
|
|
7484
|
-
const
|
|
7485
|
-
if (!
|
|
7487
|
+
const u = c.find((I) => I.panelId === h.panelId);
|
|
7488
|
+
if (!u)
|
|
7486
7489
|
continue;
|
|
7487
|
-
const
|
|
7490
|
+
const C = {
|
|
7488
7491
|
stepName: t.name,
|
|
7489
7492
|
id: J(),
|
|
7490
7493
|
align: s(A.data),
|
|
@@ -7506,7 +7509,7 @@ const Dn = [
|
|
|
7506
7509
|
y: h.top
|
|
7507
7510
|
};
|
|
7508
7511
|
if (g) {
|
|
7509
|
-
const [
|
|
7512
|
+
const [I, m] = Me(
|
|
7510
7513
|
A.data.size || i,
|
|
7511
7514
|
g,
|
|
7512
7515
|
h,
|
|
@@ -7525,19 +7528,19 @@ const Dn = [
|
|
|
7525
7528
|
a.push(
|
|
7526
7529
|
new O(
|
|
7527
7530
|
{
|
|
7528
|
-
...
|
|
7529
|
-
fontSize:
|
|
7530
|
-
text:
|
|
7531
|
+
...C,
|
|
7532
|
+
fontSize: I,
|
|
7533
|
+
text: C.curved ? C.text : (m || []).join(`
|
|
7531
7534
|
`)
|
|
7532
7535
|
},
|
|
7533
|
-
|
|
7536
|
+
u
|
|
7534
7537
|
)
|
|
7535
7538
|
);
|
|
7536
7539
|
} else
|
|
7537
|
-
a.push(new O(
|
|
7540
|
+
a.push(new O(C, u));
|
|
7538
7541
|
}
|
|
7539
7542
|
return a;
|
|
7540
|
-
},
|
|
7543
|
+
}, Rn = (c, e) => c.conditions ? c.conditions.every((t) => {
|
|
7541
7544
|
const A = e[t.targetStepName];
|
|
7542
7545
|
if (A && A.selectedVariants) {
|
|
7543
7546
|
const a = A.selectedVariants;
|
|
@@ -7546,7 +7549,7 @@ const Dn = [
|
|
|
7546
7549
|
);
|
|
7547
7550
|
}
|
|
7548
7551
|
return !1;
|
|
7549
|
-
}) : !0,
|
|
7552
|
+
}) : !0, Hn = async (c, e, t, A) => {
|
|
7550
7553
|
const a = [], n = {};
|
|
7551
7554
|
for (const i of c) {
|
|
7552
7555
|
const s = e.steps.find((o) => o.stepName === i.name);
|
|
@@ -7594,7 +7597,7 @@ const Dn = [
|
|
|
7594
7597
|
}
|
|
7595
7598
|
}
|
|
7596
7599
|
for (const i of e.steps)
|
|
7597
|
-
i.type !== y.SilentIllustration && i.type !== y.ProductOverlay ||
|
|
7600
|
+
i.type !== y.SilentIllustration && i.type !== y.ProductOverlay || Rn(i, n) && a.push(
|
|
7598
7601
|
...await xn(t, i, A)
|
|
7599
7602
|
);
|
|
7600
7603
|
return a;
|
|
@@ -7779,7 +7782,7 @@ const Vi = (c, e) => {
|
|
|
7779
7782
|
layouts: {}
|
|
7780
7783
|
};
|
|
7781
7784
|
a = new v(t.map((o) => new OA(o))).apply(a);
|
|
7782
|
-
const i = await
|
|
7785
|
+
const i = await Hn(c, e, t, A);
|
|
7783
7786
|
return new v(i).apply(a);
|
|
7784
7787
|
}, bn = D`
|
|
7785
7788
|
${oe}
|
|
@@ -10425,21 +10428,21 @@ class Ni {
|
|
|
10425
10428
|
if (s != null && s.has(e)) {
|
|
10426
10429
|
const h = s.get(e);
|
|
10427
10430
|
if (h && await this.authenticateCustomerId(h)) {
|
|
10428
|
-
const
|
|
10429
|
-
(
|
|
10430
|
-
var
|
|
10431
|
-
return (
|
|
10431
|
+
const C = ((d = (l = this.customer) == null ? void 0 : l.bundleStakeholders) == null ? void 0 : d.find(
|
|
10432
|
+
(I) => {
|
|
10433
|
+
var m, Q;
|
|
10434
|
+
return (Q = (m = I.bundle) == null ? void 0 : m.transactions) == null ? void 0 : Q.some((p) => p.id === e);
|
|
10432
10435
|
}
|
|
10433
10436
|
)) || ((E = (w = this.customer) == null ? void 0 : w.stakeholders) == null ? void 0 : E.find(
|
|
10434
|
-
(
|
|
10435
|
-
var
|
|
10436
|
-
return ((
|
|
10437
|
+
(I) => {
|
|
10438
|
+
var m;
|
|
10439
|
+
return ((m = I.transaction) == null ? void 0 : m.id) === e;
|
|
10437
10440
|
}
|
|
10438
10441
|
));
|
|
10439
|
-
if (
|
|
10442
|
+
if (C)
|
|
10440
10443
|
return Promise.resolve({
|
|
10441
10444
|
success: !0,
|
|
10442
|
-
stakeholderType:
|
|
10445
|
+
stakeholderType: C.type
|
|
10443
10446
|
});
|
|
10444
10447
|
}
|
|
10445
10448
|
}
|
|
@@ -10599,15 +10602,15 @@ class Ni {
|
|
|
10599
10602
|
* @returns A bundle to be used for grouping and operating on large amounts of workflow experiences.
|
|
10600
10603
|
*/
|
|
10601
10604
|
async getExistingBundle(e, t, A, a) {
|
|
10602
|
-
var h, C,
|
|
10605
|
+
var h, u, C, I, m, Q, p, f, F;
|
|
10603
10606
|
const n = Y.getMap("bundleOwnerIds"), i = n == null ? void 0 : n.get(e), o = ((h = Object.entries(localStorage).find(([M, P]) => M.startsWith("CognitoIdentityServiceProvider") && M.endsWith("idToken"))) == null ? void 0 : h[0]) || "", r = localStorage.getItem(o), g = {};
|
|
10604
10607
|
r && !dt(r) && (g.Authorization = `Bearer ${r}`);
|
|
10605
10608
|
const B = {
|
|
10606
10609
|
bundleOwnerId: i,
|
|
10607
10610
|
...g,
|
|
10608
|
-
...(
|
|
10611
|
+
...(u = a == null ? void 0 : a.graphql) == null ? void 0 : u.additionalHeaders
|
|
10609
10612
|
}, l = await x.getShadowGraphqlClient().query({
|
|
10610
|
-
query: Jn(((
|
|
10613
|
+
query: Jn(((I = (C = a == null ? void 0 : a.graphql) == null ? void 0 : C.productCollection) == null ? void 0 : I.eagerFetchProducts) || !1),
|
|
10611
10614
|
variables: {
|
|
10612
10615
|
id: e
|
|
10613
10616
|
},
|
|
@@ -10616,9 +10619,9 @@ class Ni {
|
|
|
10616
10619
|
headers: B
|
|
10617
10620
|
}
|
|
10618
10621
|
});
|
|
10619
|
-
if (!((
|
|
10622
|
+
if (!((m = l.data) != null && m.bundles) || ((Q = l.data) == null ? void 0 : Q.bundles.length) === 0 || !((p = l.data) != null && p.bundles[0]))
|
|
10620
10623
|
throw new Error(`Unable to find bundle: ${e}`);
|
|
10621
|
-
const d = (
|
|
10624
|
+
const d = (f = l.data) == null ? void 0 : f.bundles[0], w = Y.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10622
10625
|
w.set(d.id, d.partner.id), Y.setMap("bundlePartnerIds", w);
|
|
10623
10626
|
const E = new xt(this, d, t, A, i, {
|
|
10624
10627
|
additionalHeaders: (F = a == null ? void 0 : a.graphql) == null ? void 0 : F.additionalHeaders
|
|
@@ -10661,36 +10664,36 @@ class Ni {
|
|
|
10661
10664
|
if (!a)
|
|
10662
10665
|
return await this.getWorkflowExperienceDeprecated(e, t, A);
|
|
10663
10666
|
const n = async () => {
|
|
10664
|
-
var
|
|
10667
|
+
var u, C;
|
|
10665
10668
|
const h = x.getShadowGraphqlClient();
|
|
10666
10669
|
if (a.type === "transaction") {
|
|
10667
|
-
const { transactionId:
|
|
10670
|
+
const { transactionId: I, readOnly: m } = a, Q = await h.query({
|
|
10668
10671
|
query: me,
|
|
10669
10672
|
variables: {
|
|
10670
|
-
ids: [
|
|
10673
|
+
ids: [I]
|
|
10671
10674
|
},
|
|
10672
10675
|
errorPolicy: "all",
|
|
10673
10676
|
fetchPolicy: "no-cache"
|
|
10674
10677
|
});
|
|
10675
|
-
if (!((
|
|
10678
|
+
if (!((u = Q.data) != null && u.transactions) || Q.data.transactions.length === 0)
|
|
10676
10679
|
throw new U("Existing transaction not found.");
|
|
10677
|
-
const p = (
|
|
10680
|
+
const p = (C = Q.data) == null ? void 0 : C.transactions[0];
|
|
10678
10681
|
if (!p.workflowId)
|
|
10679
10682
|
throw new U("Existing transaction has no workflow ID.");
|
|
10680
|
-
const
|
|
10683
|
+
const f = await ye(p.workflowId);
|
|
10681
10684
|
if (!p.product)
|
|
10682
10685
|
throw new U("Failed to load transaction, product not available.");
|
|
10683
|
-
return { transaction: p, workflow:
|
|
10686
|
+
return { transaction: p, workflow: f, readOnly: m };
|
|
10684
10687
|
}
|
|
10685
10688
|
if (a.type === "integration" || a.type === "external") {
|
|
10686
|
-
const
|
|
10687
|
-
const
|
|
10689
|
+
const I = async () => {
|
|
10690
|
+
const f = a.type === "integration" ? { integrationProductId: a.integrationProductId } : {
|
|
10688
10691
|
externalIntegrationId: a.externalIntegrationId,
|
|
10689
10692
|
externalProductId: a.externalProductId
|
|
10690
10693
|
}, F = await h.mutate({
|
|
10691
10694
|
mutation: Mt,
|
|
10692
10695
|
variables: {
|
|
10693
|
-
...
|
|
10696
|
+
...f,
|
|
10694
10697
|
workflowId: a.workflowId,
|
|
10695
10698
|
claim: !0
|
|
10696
10699
|
},
|
|
@@ -10705,8 +10708,8 @@ class Ni {
|
|
|
10705
10708
|
if (!M.product)
|
|
10706
10709
|
throw new U("Failed to create transaction, product not available.");
|
|
10707
10710
|
return M;
|
|
10708
|
-
},
|
|
10709
|
-
return { transaction:
|
|
10711
|
+
}, m = ye(a.workflowId, a == null ? void 0 : a.graphql), [Q, p] = await Promise.all([I(), m]);
|
|
10712
|
+
return { transaction: Q, workflow: p };
|
|
10710
10713
|
}
|
|
10711
10714
|
throw new U("No workflow ID provided.");
|
|
10712
10715
|
}, { transaction: i, workflow: s, readOnly: o } = await n();
|
|
@@ -10719,18 +10722,18 @@ class Ni {
|
|
|
10719
10722
|
stateMutationFunc: o ? async () => {
|
|
10720
10723
|
throw new b("State mutation is forbidden in read only mode!");
|
|
10721
10724
|
} : async (h) => {
|
|
10722
|
-
const
|
|
10723
|
-
return this.updateTransactionState({ ...h, context: { transactionOwnerId:
|
|
10725
|
+
const C = (Y.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(i.id) || void 0;
|
|
10726
|
+
return this.updateTransactionState({ ...h, context: { transactionOwnerId: C } });
|
|
10724
10727
|
},
|
|
10725
10728
|
readOnly: o,
|
|
10726
10729
|
workflow: s
|
|
10727
10730
|
};
|
|
10728
10731
|
if (a.type === "transaction" && i.workflowState) {
|
|
10729
10732
|
const h = JSON.parse(i.workflowState);
|
|
10730
|
-
r.layouts = Object.values(h.layouts).map((
|
|
10733
|
+
r.layouts = Object.values(h.layouts).map((u) => u.layout), await Ae(h), await ne(h), r.reloadedState = h;
|
|
10731
10734
|
} else if (!o && a.workflowState) {
|
|
10732
10735
|
const h = JSON.parse(a.workflowState);
|
|
10733
|
-
r.layouts = Object.values(h.layouts).map((
|
|
10736
|
+
r.layouts = Object.values(h.layouts).map((u) => u.layout), await Ae(h), await ne(h), r.reloadedState = h;
|
|
10734
10737
|
} else
|
|
10735
10738
|
r.layouts = Ve(
|
|
10736
10739
|
r.transaction,
|
|
@@ -10763,39 +10766,39 @@ class Ni {
|
|
|
10763
10766
|
async getWorkflowExperiences(e, t) {
|
|
10764
10767
|
if (e.length === 0)
|
|
10765
10768
|
throw new U("No options provided!");
|
|
10766
|
-
const A = x.getShadowGraphqlClient(), a = async (
|
|
10769
|
+
const A = x.getShadowGraphqlClient(), a = async (Q) => {
|
|
10767
10770
|
var M, P;
|
|
10768
|
-
if (
|
|
10771
|
+
if (Q.length === 0)
|
|
10769
10772
|
return [];
|
|
10770
|
-
const p =
|
|
10773
|
+
const p = Q.map((S) => S.option.transactionId), f = await A.query({
|
|
10771
10774
|
query: me,
|
|
10772
10775
|
variables: {
|
|
10773
10776
|
ids: p
|
|
10774
10777
|
},
|
|
10775
10778
|
errorPolicy: "all",
|
|
10776
10779
|
fetchPolicy: "no-cache"
|
|
10777
|
-
}), F =
|
|
10778
|
-
if (F.length !==
|
|
10779
|
-
const S = ((P = (M =
|
|
10780
|
+
}), F = f.data.transactions;
|
|
10781
|
+
if (F.length !== Q.length) {
|
|
10782
|
+
const S = ((P = (M = f.errors) == null ? void 0 : M[0]) == null ? void 0 : P.message) || "Unknown error";
|
|
10780
10783
|
throw new U(`Not all transactions were found: ${S}`);
|
|
10781
10784
|
}
|
|
10782
10785
|
return F.map((S, N) => {
|
|
10783
|
-
var
|
|
10786
|
+
var R;
|
|
10784
10787
|
return {
|
|
10785
10788
|
transaction: S,
|
|
10786
10789
|
workflowId: S.workflowId,
|
|
10787
|
-
readOnly: ((
|
|
10788
|
-
index:
|
|
10790
|
+
readOnly: ((R = Q.find((T) => T.option.transactionId === S.id)) == null ? void 0 : R.option.readOnly) ?? !1,
|
|
10791
|
+
index: Q[N].index
|
|
10789
10792
|
};
|
|
10790
10793
|
});
|
|
10791
|
-
}, n = async (
|
|
10794
|
+
}, n = async (Q) => {
|
|
10792
10795
|
var F, M, P;
|
|
10793
|
-
if (
|
|
10796
|
+
if (Q.length === 0)
|
|
10794
10797
|
return [];
|
|
10795
10798
|
const p = await A.mutate({
|
|
10796
10799
|
mutation: ua,
|
|
10797
10800
|
variables: {
|
|
10798
|
-
inputs:
|
|
10801
|
+
inputs: Q.map((S) => ({
|
|
10799
10802
|
integrationProductId: S.option.type === "integration" ? S.option.integrationProductId : void 0,
|
|
10800
10803
|
externalIntegrationId: S.option.type === "external" ? S.option.externalIntegrationId : void 0,
|
|
10801
10804
|
externalProductId: S.option.type === "external" ? S.option.externalProductId : void 0,
|
|
@@ -10805,27 +10808,27 @@ class Ni {
|
|
|
10805
10808
|
},
|
|
10806
10809
|
errorPolicy: "all",
|
|
10807
10810
|
fetchPolicy: "no-cache"
|
|
10808
|
-
}),
|
|
10809
|
-
if (!
|
|
10811
|
+
}), f = (F = p.data) == null ? void 0 : F.transactionCreateMany;
|
|
10812
|
+
if (!f || f.length === 0) {
|
|
10810
10813
|
const S = ((P = (M = p.errors) == null ? void 0 : M[0]) == null ? void 0 : P.message) || "Unknown error";
|
|
10811
10814
|
throw new U(`Failed to create transactions: ${S}`);
|
|
10812
10815
|
}
|
|
10813
|
-
return
|
|
10816
|
+
return f.map((S, N) => ({
|
|
10814
10817
|
transaction: S,
|
|
10815
10818
|
workflowId: S.workflowId,
|
|
10816
10819
|
readOnly: !1,
|
|
10817
|
-
index:
|
|
10820
|
+
index: Q[N].index
|
|
10818
10821
|
}));
|
|
10819
|
-
}, i = e.map((
|
|
10820
|
-
(
|
|
10822
|
+
}, i = e.map((Q, p) => ({ option: Q, index: p })), s = i.filter((Q) => Q.option.type === "transaction"), o = i.filter(
|
|
10823
|
+
(Q) => Q.option.type === "integration" || Q.option.type === "external"
|
|
10821
10824
|
), r = ft(s, 10), g = ft(o, 10), B = (await Promise.all([
|
|
10822
10825
|
...r.map(a),
|
|
10823
10826
|
...g.map(n)
|
|
10824
|
-
])).flat(), l = [...new Set(B.map((
|
|
10827
|
+
])).flat(), l = [...new Set(B.map((Q) => Q.workflowId))], d = await pA(l, t), w = new Map(d.map((Q) => [Q.id, Q])), E = Y.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), h = B.map(async (Q) => {
|
|
10825
10828
|
var T;
|
|
10826
|
-
const { transaction: p, workflowId:
|
|
10829
|
+
const { transaction: p, workflowId: f, readOnly: F, index: M } = Q, P = w.get(f), S = e[M];
|
|
10827
10830
|
!E.get(p.id) && p.transactionOwnerId && E.set(p.id, p.transactionOwnerId);
|
|
10828
|
-
const N = E.get(p.id) || void 0,
|
|
10831
|
+
const N = E.get(p.id) || void 0, R = {
|
|
10829
10832
|
product: p.product,
|
|
10830
10833
|
transaction: p,
|
|
10831
10834
|
layouts: [],
|
|
@@ -10839,25 +10842,25 @@ class Ni {
|
|
|
10839
10842
|
};
|
|
10840
10843
|
if (S.type === "transaction" && p.workflowState) {
|
|
10841
10844
|
const L = JSON.parse(p.workflowState);
|
|
10842
|
-
|
|
10845
|
+
R.layouts = Object.values(L.layouts || {}).map((W) => W.layout), await Ae(L), await ne(L), R.reloadedState = L;
|
|
10843
10846
|
} else if (!F && S.workflowState) {
|
|
10844
10847
|
const L = JSON.parse(S.workflowState);
|
|
10845
|
-
|
|
10848
|
+
R.layouts = Object.values(L.layouts || {}).map((W) => W.layout), await Ae(L), await ne(L), R.reloadedState = L;
|
|
10846
10849
|
} else
|
|
10847
|
-
|
|
10848
|
-
|
|
10849
|
-
|
|
10850
|
+
R.layouts = Ve(
|
|
10851
|
+
R.transaction,
|
|
10852
|
+
R.workflow
|
|
10850
10853
|
);
|
|
10851
|
-
return
|
|
10852
|
-
|
|
10853
|
-
),
|
|
10854
|
+
return R.renderableContextService = new De(
|
|
10855
|
+
R.layouts
|
|
10856
|
+
), R.delayWorkflowStateSync = !0, this.initialized = !0, this.experienceOptions = R, { experienceOptions: R, index: M, options: S };
|
|
10854
10857
|
});
|
|
10855
10858
|
Y.setMap("transactionOwnerIds", E);
|
|
10856
|
-
const
|
|
10857
|
-
const { experienceOptions: p, options:
|
|
10858
|
-
return await F.getWorkflowManager().getInitializationPromise(),
|
|
10859
|
-
}),
|
|
10860
|
-
return
|
|
10859
|
+
const I = (await Promise.all(h)).sort((Q, p) => Q.index - p.index).map(async (Q) => {
|
|
10860
|
+
const { experienceOptions: p, options: f } = Q, F = new fe(this, p);
|
|
10861
|
+
return await F.getWorkflowManager().getInitializationPromise(), f.type !== "transaction" && this.customer && await F.attachCustomerDetails({ email: this.customer.emailAddress }), F;
|
|
10862
|
+
}), m = await Promise.all(I);
|
|
10863
|
+
return m.forEach((Q) => Q.getWorkflowManager().setWorkflowStateSyncEnabled(!0)), m;
|
|
10861
10864
|
}
|
|
10862
10865
|
/**
|
|
10863
10866
|
* Initialize the client from an integration product.
|
|
@@ -11221,8 +11224,8 @@ class Zi {
|
|
|
11221
11224
|
setWorkflowStateSyncEnabled(e) {
|
|
11222
11225
|
}
|
|
11223
11226
|
}
|
|
11224
|
-
var
|
|
11225
|
-
class
|
|
11227
|
+
var Ri = /* @__PURE__ */ ((c) => (c.SelectFrame = "SelectFrame", c.SelectImage = "SelectImage", c.Position = "Position", c))(Ri || {});
|
|
11228
|
+
class Hi extends X {
|
|
11226
11229
|
constructor(e, t) {
|
|
11227
11230
|
var A;
|
|
11228
11231
|
super(e, t), this.frameService = (A = this.manager.getStepSpecificServices(this.getId())) == null ? void 0 : A.frameService;
|
|
@@ -11378,8 +11381,8 @@ export {
|
|
|
11378
11381
|
Bs as FontSizeCommand,
|
|
11379
11382
|
ds as FontSourceCommand,
|
|
11380
11383
|
Ya as FrameService,
|
|
11381
|
-
|
|
11382
|
-
|
|
11384
|
+
Ri as FrameStep,
|
|
11385
|
+
Hi as FrameStepHandle,
|
|
11383
11386
|
wt as GlobalPropertyHandle,
|
|
11384
11387
|
ws as GroupCommand,
|
|
11385
11388
|
sn as IllustrationStepHandle,
|
|
@@ -11391,14 +11394,14 @@ export {
|
|
|
11391
11394
|
Es as LayoutElementType,
|
|
11392
11395
|
z as LayoutNotFoundError,
|
|
11393
11396
|
on as MaterialStepHandle,
|
|
11394
|
-
|
|
11397
|
+
He as MisconfigurationError,
|
|
11395
11398
|
Zi as MockWorkflowManager,
|
|
11396
11399
|
rn as ModelStepHandle,
|
|
11397
11400
|
us as MoveCommand,
|
|
11398
11401
|
mA as ObjectInput,
|
|
11399
11402
|
hi as ObjectInputType,
|
|
11400
11403
|
QA as OptionGlobalPropertyHandle,
|
|
11401
|
-
|
|
11404
|
+
Re as OptionNotFoundError,
|
|
11402
11405
|
ge as ParseError,
|
|
11403
11406
|
cn as PictureStepHandle,
|
|
11404
11407
|
wa as ProductCameraRig,
|
|
@@ -11440,13 +11443,13 @@ export {
|
|
|
11440
11443
|
Ys as frameDataCache,
|
|
11441
11444
|
Se as frameStepService,
|
|
11442
11445
|
Ps as generate,
|
|
11443
|
-
|
|
11446
|
+
Hn as generateCommands,
|
|
11444
11447
|
xs as generateSVGWithUnknownColors,
|
|
11445
11448
|
Wi as generateStateFromDesignInputSteps,
|
|
11446
11449
|
Ns as getAttributesFromArrayBuffer,
|
|
11447
|
-
|
|
11450
|
+
Rs as getAxisAlignedBoundingBox,
|
|
11448
11451
|
Sa as getBoundedOffsets,
|
|
11449
|
-
|
|
11452
|
+
Hs as getFrameData,
|
|
11450
11453
|
Us as getSvgElement,
|
|
11451
11454
|
ye as getWorkflow,
|
|
11452
11455
|
pA as getWorkflows,
|