@spiffcommerce/core 22.4.4 → 22.4.5
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 +6 -3
- package/dist/index.js +364 -351
- package/dist/index.umd.cjs +6 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHttpLink as vA, InMemoryCache as HA, ApolloClient as UA, from as kA, gql as f } from "@apollo/client/core";
|
|
2
|
-
import { fetch as ot, getAttributesFromArrayBuffer as Tt, AssetType as _e, StepType as F, getFrameData as rt, frameDataCache as GA, modifySVGColors as bA, svgToDataUrl as JA, GroupCommand as k, UpdateFramePattern as Ot, UpdateFrameThresholdSettingsCommand as TA, calculateOffsets as ct, LayoutElementType as G, generate as J, CreateElementCommand as O, generateSVGWithUnknownColors as Oe, svgObjectURL as ve, fetchAsString as
|
|
2
|
+
import { fetch as ot, getAttributesFromArrayBuffer as Tt, AssetType as _e, StepType as F, getFrameData as rt, frameDataCache as GA, modifySVGColors as bA, svgToDataUrl as JA, GroupCommand as k, UpdateFramePattern as Ot, UpdateFrameThresholdSettingsCommand as TA, calculateOffsets as ct, LayoutElementType as G, generate as J, CreateElementCommand as O, generateSVGWithUnknownColors as Oe, svgObjectURL as ve, fetchAsString as _, DeleteElementCommand as Ae, generateDefaultRectangleFrameSvg as ft, GetSVGDimensions as OA, patternImageDataCache as Ft, fetchAsArrayBuffer as LA, findElement as He, modifySVGWithElementProperties as zA, IllustrationColorCommand as et, IllustrationCacheCommand as KA, getFontMetrics as jA, getPatternImageData as tt, FontAlignmentCommand as VA, FontColorCommand as WA, FontImageFillCommand as Ve, applyTextTransformations as At, determineCorrectFontSizeAndLines as Ne, FontSourceCommand as yt, loadFont as gt, TextChangeCommand as XA, FontSizeCommand as qA, createElementNS as ZA, createElement as fe, _loadFontExternalDataURL as lt, UpdateWorkflowStateCommand as Mt, CommandContext as $A, createCanvas as Ue, getSvgElement as Lt, LayoutRenderingPurpose as zt, renderPapyrusComponentAsString as Kt, loadImage as jt, getDomParser as Vt, toBase64 as St, getVariant as _A, generateFrameSVG as ea, getDefaultVariant as Le, domParser as Wt, sanitizeSvgTree as Xt, traverse as ta, xmlSerializer as qt, CreateLayoutCommand as Aa, AspectType as $, rehydrateSerializedLayout as ne } from "@spiffcommerce/papyrus";
|
|
3
3
|
import { AspectType as ys, AssetType as Ms, BringForwardCommand as Ss, BringToBackCommand as Ys, BringToFrontCommand as Ps, CanvasCommand as xs, CommandContext as Ns, CreateElementCommand as Rs, CreateLayoutCommand as vs, DeleteElementCommand as Hs, FontAlignmentCommand as Us, FontColorCommand as ks, FontSizeCommand as Gs, FontSourceCommand as bs, GroupCommand as Js, LayoutElementFactory as Ts, LayoutElementType as Os, MoveCommand as Ls, ResizeCommand as zs, RotateCommand as Ks, SendBackwardsCommand as js, StepAspectType as Vs, StepType as Ws, TextChangeCommand as Xs, UnitOfMeasurement as qs, UpdateImageSourceCommand as Zs, dataUrlFromExternalUrl as $s, determineCorrectFontSizeAndLines as _s, findElement as eo, frameDataCache as to, generate as Ao, generateSVGWithUnknownColors as ao, getAttributesFromArrayBuffer as no, getAxisAlignedBoundingBox as io, getFrameData as so, getSvgElement as oo, loadFont as ro, patternImageDataCache as co, registerFetchImplementation as go, registerWindowImplementation as lo, rehydrateSerializedLayout as Bo, setCanvasModule as Co, svgToDataUrl as wo } from "@spiffcommerce/papyrus";
|
|
4
4
|
import { setContext as aa } from "@apollo/client/link/context";
|
|
5
5
|
import { onError as na } from "@apollo/client/link/error";
|
|
@@ -32,7 +32,7 @@ class z extends De {
|
|
|
32
32
|
super(`Panel not Found: ${e.panelId}`), this.panelId = (e == null ? void 0 : e.panelId) || "N/A";
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
class
|
|
35
|
+
class ae extends De {
|
|
36
36
|
constructor(e) {
|
|
37
37
|
super(`Asset not found for variant: ${e.name}`), this.variant = e;
|
|
38
38
|
}
|
|
@@ -57,7 +57,7 @@ class b extends ze {
|
|
|
57
57
|
super(`Unhandled Behavior Encountered: ${e}`);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
class
|
|
60
|
+
class de extends ze {
|
|
61
61
|
constructor(e) {
|
|
62
62
|
super(`Parsing Error: ${e}`);
|
|
63
63
|
}
|
|
@@ -153,10 +153,10 @@ let AA;
|
|
|
153
153
|
const xt = (c) => {
|
|
154
154
|
AA = c;
|
|
155
155
|
};
|
|
156
|
-
let
|
|
156
|
+
let Ct;
|
|
157
157
|
const ca = (c) => {
|
|
158
|
-
|
|
159
|
-
}, ga = () =>
|
|
158
|
+
Ct = c;
|
|
159
|
+
}, ga = () => Ct;
|
|
160
160
|
let aA;
|
|
161
161
|
const la = (c) => {
|
|
162
162
|
aA = c;
|
|
@@ -165,15 +165,15 @@ const la = (c) => {
|
|
|
165
165
|
A.origin === e && (window.removeEventListener("message", t), c(A.data));
|
|
166
166
|
};
|
|
167
167
|
window.parent !== window && (window.addEventListener("message", t, !1), window.parent.postMessage("ready", e));
|
|
168
|
-
}),
|
|
168
|
+
}), Ca = async () => {
|
|
169
169
|
const c = {
|
|
170
|
-
applicationKey:
|
|
170
|
+
applicationKey: Ct,
|
|
171
171
|
customerToken: AA,
|
|
172
172
|
bearer: aA
|
|
173
173
|
};
|
|
174
174
|
return typeof window < "u" && (window.location.href.includes("/workflows/product/") || window.location.href.includes("hub=true")) ? { ...await Ba(), ...c } : c;
|
|
175
175
|
};
|
|
176
|
-
class
|
|
176
|
+
class da {
|
|
177
177
|
constructor() {
|
|
178
178
|
this.shadowGraphqlClient = this.constructShadowGraphqlClient(), q.addServerUrlCallback(() => {
|
|
179
179
|
this.shadowGraphqlClient = this.constructShadowGraphqlClient();
|
|
@@ -187,7 +187,7 @@ class Ca {
|
|
|
187
187
|
uri: `${q.getServerUrl()}/graphql`,
|
|
188
188
|
fetch: ot
|
|
189
189
|
}), t = aa(async (i, s) => {
|
|
190
|
-
const { headers: o } = s, r = o || {}, g = await
|
|
190
|
+
const { headers: o } = s, r = o || {}, g = await Ca(), B = s.bearer ?? g.bearer, l = s.partnerId ?? g.partnerId, C = s.activeIntegration ?? g.activeIntegration, d = s.transactionOwnerId, E = s.customerToken ?? g.customerToken, w = s.applicationKey ?? g.applicationKey, u = s.bundleOwnerId;
|
|
191
191
|
try {
|
|
192
192
|
if (window && window.__SENTRY__) {
|
|
193
193
|
const h = window.__SENTRY__.hub;
|
|
@@ -200,7 +200,7 @@ class Ca {
|
|
|
200
200
|
}
|
|
201
201
|
} catch {
|
|
202
202
|
}
|
|
203
|
-
return B && (r.Authorization = `Bearer ${B}`), l && (r.partnerId = l),
|
|
203
|
+
return B && (r.Authorization = `Bearer ${B}`), l && (r.partnerId = l), C && (r.activeIntegration = C), d && (r.transactionOwnerId = d), E && (r.customerToken = E), w && (r["X-Application-Key"] = w), u && (r.bundleOwnerId = u), {
|
|
204
204
|
headers: r
|
|
205
205
|
};
|
|
206
206
|
}), A = na(({ operation: i, graphQLErrors: s, networkError: o }) => {
|
|
@@ -258,7 +258,7 @@ class Ca {
|
|
|
258
258
|
});
|
|
259
259
|
}
|
|
260
260
|
}
|
|
261
|
-
const P = new
|
|
261
|
+
const P = new da(), wa = f`
|
|
262
262
|
fragment AssetMetadataFields on Asset {
|
|
263
263
|
metadata {
|
|
264
264
|
key
|
|
@@ -287,7 +287,7 @@ const P = new Ca(), wa = f`
|
|
|
287
287
|
...AssetFields
|
|
288
288
|
}
|
|
289
289
|
}
|
|
290
|
-
`,
|
|
290
|
+
`, dt = f`
|
|
291
291
|
fragment MaterialFields on Material {
|
|
292
292
|
id
|
|
293
293
|
name
|
|
@@ -335,7 +335,7 @@ const P = new Ca(), wa = f`
|
|
|
335
335
|
}
|
|
336
336
|
}
|
|
337
337
|
`, ha = f`
|
|
338
|
-
${
|
|
338
|
+
${dt}
|
|
339
339
|
query GetMaterials($ids: [String]) {
|
|
340
340
|
materials(id: $ids) {
|
|
341
341
|
...MaterialFields
|
|
@@ -475,7 +475,7 @@ class Da {
|
|
|
475
475
|
g.lengthComputable && A(g.loaded * 100 / g.total);
|
|
476
476
|
}, r.onload = () => {
|
|
477
477
|
const g = i.assetResponse.asset;
|
|
478
|
-
|
|
478
|
+
ie.add(i.assetResponse.asset), s(g);
|
|
479
479
|
}, r.onerror = o, r.send(e.blob);
|
|
480
480
|
}), this.cacheAsset(i.assetResponse.asset), i.assetResponse.asset;
|
|
481
481
|
}
|
|
@@ -516,7 +516,7 @@ class Da {
|
|
|
516
516
|
});
|
|
517
517
|
if (this.bgrmProcessCache.delete(t), !((s = (i = n.data) == null ? void 0 : i.assetRemoveBackground) != null && s.key))
|
|
518
518
|
throw new Error("Failed to remove background from image");
|
|
519
|
-
return
|
|
519
|
+
return ie.add(n.data.assetRemoveBackground), K.add(t, n.data.assetRemoveBackground.key), this.cache.set(
|
|
520
520
|
n.data.assetRemoveBackground.key,
|
|
521
521
|
Promise.resolve(n.data.assetRemoveBackground)
|
|
522
522
|
), n.data.assetRemoveBackground;
|
|
@@ -524,16 +524,16 @@ class Da {
|
|
|
524
524
|
return this.bgrmProcessCache.set(t, a), a;
|
|
525
525
|
}
|
|
526
526
|
removePersistedAsset(e) {
|
|
527
|
-
|
|
527
|
+
ie.remove(e), K.delete(e), K.deleteForBgRemovedKey(e);
|
|
528
528
|
}
|
|
529
529
|
getPersistedAssets() {
|
|
530
|
-
return
|
|
530
|
+
return ie.list();
|
|
531
531
|
}
|
|
532
532
|
registerPersistedAssetListener(e) {
|
|
533
|
-
|
|
533
|
+
ie.addCallback(e);
|
|
534
534
|
}
|
|
535
535
|
unRegisterPersistedAssetListener(e) {
|
|
536
|
-
|
|
536
|
+
ie.removeCallback(e);
|
|
537
537
|
}
|
|
538
538
|
/**
|
|
539
539
|
* Handles mimeType resolution & asset creation request
|
|
@@ -562,7 +562,7 @@ class Da {
|
|
|
562
562
|
}
|
|
563
563
|
}
|
|
564
564
|
}
|
|
565
|
-
const le = "persistentAssets", nA = class
|
|
565
|
+
const le = "persistentAssets", nA = class ee {
|
|
566
566
|
/**
|
|
567
567
|
* Add a new asset to persistence
|
|
568
568
|
* @param asset The asset to add.
|
|
@@ -577,7 +577,7 @@ const le = "persistentAssets", nA = class _ {
|
|
|
577
577
|
const A = Y.getMap(le);
|
|
578
578
|
A && A.forEach((a, n) => {
|
|
579
579
|
t.set(n, a);
|
|
580
|
-
}), Y.setMap(le, t),
|
|
580
|
+
}), Y.setMap(le, t), ee.executeCallbacks();
|
|
581
581
|
}
|
|
582
582
|
/**
|
|
583
583
|
* Remove an existing asset from persistence. Noop if the asset doesn't exist.
|
|
@@ -588,7 +588,7 @@ const le = "persistentAssets", nA = class _ {
|
|
|
588
588
|
if (!t)
|
|
589
589
|
return;
|
|
590
590
|
const A = Array.from(t.entries()).find((a) => a[0] === e);
|
|
591
|
-
A && (t.delete(A[0]), Y.setMap(le, t),
|
|
591
|
+
A && (t.delete(A[0]), Y.setMap(le, t), ee.executeCallbacks());
|
|
592
592
|
}
|
|
593
593
|
/**
|
|
594
594
|
* Get a list of all persisted assets.
|
|
@@ -601,20 +601,20 @@ const le = "persistentAssets", nA = class _ {
|
|
|
601
601
|
* Adds a callback that will be called whenever assets are added/removed from persistence.
|
|
602
602
|
*/
|
|
603
603
|
static addCallback(e) {
|
|
604
|
-
|
|
604
|
+
ee.callbacks.push(e);
|
|
605
605
|
}
|
|
606
606
|
/**
|
|
607
607
|
* Removes an existing callback.
|
|
608
608
|
*/
|
|
609
609
|
static removeCallback(e) {
|
|
610
|
-
|
|
610
|
+
ee.callbacks = ee.callbacks.filter((t) => t !== e);
|
|
611
611
|
}
|
|
612
612
|
static executeCallbacks() {
|
|
613
|
-
|
|
613
|
+
ee.callbacks.forEach((e) => e());
|
|
614
614
|
}
|
|
615
615
|
};
|
|
616
616
|
nA.callbacks = [];
|
|
617
|
-
let
|
|
617
|
+
let ie = nA;
|
|
618
618
|
const Nt = "bgrmPersistentAssets";
|
|
619
619
|
class K {
|
|
620
620
|
static has(e) {
|
|
@@ -722,7 +722,7 @@ const Qe = new Ia(), iA = f`
|
|
|
722
722
|
}
|
|
723
723
|
`, fa = f`
|
|
724
724
|
${Ie(!1)}
|
|
725
|
-
${
|
|
725
|
+
${dt}
|
|
726
726
|
${iA}
|
|
727
727
|
query GetOptions($ids: [String]!) {
|
|
728
728
|
options(ids: $ids) {
|
|
@@ -1513,9 +1513,9 @@ const Ja = f`
|
|
|
1513
1513
|
silentSteps: c.silentSteps.filter((A) => re(A, e))
|
|
1514
1514
|
};
|
|
1515
1515
|
return t.silentSteps.length === 0 && t.renderableSteps.length === 0 ? null : t;
|
|
1516
|
-
},
|
|
1516
|
+
}, oe = (c, e) => c.map((t) => ja(t, e)).filter((t) => t !== null), Va = async (c, e, t = !1) => {
|
|
1517
1517
|
var i;
|
|
1518
|
-
const A =
|
|
1518
|
+
const A = oe(c, e), a = [];
|
|
1519
1519
|
for (const s of A)
|
|
1520
1520
|
for (const o of s.renderableSteps) {
|
|
1521
1521
|
const r = (((i = o.option) == null ? void 0 : i.variants) || []).length;
|
|
@@ -1854,7 +1854,7 @@ class vt {
|
|
|
1854
1854
|
const l = this.configuration.type === F.SilentIllustration ? (r = this.configuration.data.asset) == null ? void 0 : r.fileLink : (g = this.product) == null ? void 0 : g.overlayImageUrl;
|
|
1855
1855
|
if (!l)
|
|
1856
1856
|
throw new Error("Undefined raster silent step source");
|
|
1857
|
-
const
|
|
1857
|
+
const C = {
|
|
1858
1858
|
stepName: this.configuration.stepName,
|
|
1859
1859
|
id: J(),
|
|
1860
1860
|
src: l,
|
|
@@ -1873,27 +1873,27 @@ class vt {
|
|
|
1873
1873
|
};
|
|
1874
1874
|
return {
|
|
1875
1875
|
regionElement: {
|
|
1876
|
-
id:
|
|
1876
|
+
id: C.id,
|
|
1877
1877
|
region: a
|
|
1878
1878
|
},
|
|
1879
|
-
command: new O(
|
|
1879
|
+
command: new O(C, n)
|
|
1880
1880
|
};
|
|
1881
1881
|
} else {
|
|
1882
|
-
const l = this.configuration.type === F.SilentIllustration ? (B = this.configuration.data.asset) == null ? void 0 : B.fileLink : i,
|
|
1882
|
+
const l = this.configuration.type === F.SilentIllustration ? (B = this.configuration.data.asset) == null ? void 0 : B.fileLink : i, d = await Oe(await (async () => new Promise((w, u) => {
|
|
1883
1883
|
if (!l) {
|
|
1884
1884
|
u("Undefined vector silent step source");
|
|
1885
1885
|
return;
|
|
1886
1886
|
}
|
|
1887
|
-
|
|
1887
|
+
_(l, !0).then((h) => {
|
|
1888
1888
|
w(h);
|
|
1889
1889
|
}).catch((h) => console.error(h));
|
|
1890
1890
|
}))()), E = {
|
|
1891
1891
|
stepName: this.configuration.stepName,
|
|
1892
1892
|
id: J(),
|
|
1893
|
-
cachedObjectURL: await ve(
|
|
1893
|
+
cachedObjectURL: await ve(d.svg),
|
|
1894
1894
|
src: l,
|
|
1895
|
-
svg:
|
|
1896
|
-
colors:
|
|
1895
|
+
svg: d.svg,
|
|
1896
|
+
colors: d.colors,
|
|
1897
1897
|
type: s,
|
|
1898
1898
|
y: a.top,
|
|
1899
1899
|
x: a.left,
|
|
@@ -1951,7 +1951,7 @@ const qa = async (c) => {
|
|
|
1951
1951
|
throw console.error(t), new Ke("Failed to shorten URL, see console.");
|
|
1952
1952
|
}
|
|
1953
1953
|
};
|
|
1954
|
-
class
|
|
1954
|
+
class CA {
|
|
1955
1955
|
async poll() {
|
|
1956
1956
|
try {
|
|
1957
1957
|
if (await this.predicate()) {
|
|
@@ -1995,28 +1995,28 @@ class Za {
|
|
|
1995
1995
|
async regenerateQRCode(e, t, A, a) {
|
|
1996
1996
|
const n = async () => {
|
|
1997
1997
|
var E, w;
|
|
1998
|
-
const
|
|
1999
|
-
return { asset:
|
|
2000
|
-
}, i = await new Promise((
|
|
2001
|
-
new
|
|
1998
|
+
const C = (await nt([t]))[0], d = (w = (E = C == null ? void 0 : C.versions) == null ? void 0 : E.find((u) => u.name === "mpeg4")) == null ? void 0 : w.link;
|
|
1999
|
+
return { asset: C, link: d };
|
|
2000
|
+
}, i = await new Promise((C, d) => {
|
|
2001
|
+
new CA(
|
|
2002
2002
|
async () => !!(await n()).link,
|
|
2003
2003
|
async () => {
|
|
2004
2004
|
const E = await n();
|
|
2005
2005
|
if (!E.link || !E.link)
|
|
2006
2006
|
throw new ue(E.asset);
|
|
2007
|
-
|
|
2007
|
+
C({
|
|
2008
2008
|
rel: "mpeg4",
|
|
2009
2009
|
href: E.link
|
|
2010
2010
|
});
|
|
2011
2011
|
},
|
|
2012
2012
|
() => {
|
|
2013
|
-
|
|
2013
|
+
d("Poller timed out with 40 attempts @ 3 second interval");
|
|
2014
2014
|
},
|
|
2015
2015
|
3e3,
|
|
2016
2016
|
40
|
|
2017
2017
|
);
|
|
2018
2018
|
});
|
|
2019
|
-
e.forEach((
|
|
2019
|
+
e.forEach((C) => A.getCommandDispatcher()(new Ae(C.id)));
|
|
2020
2020
|
const s = a.data.baseUrl.slice(0, 4) === "http" ? "" : "https://", o = new URL(s + a.data.baseUrl);
|
|
2021
2021
|
o.searchParams.append("video", btoa(JSON.stringify([i]))), o.pathname = o.pathname + (o.pathname.slice(-1) === "/" ? "" : "/");
|
|
2022
2022
|
const r = o.toString();
|
|
@@ -2066,7 +2066,7 @@ class Za {
|
|
|
2066
2066
|
} };
|
|
2067
2067
|
}
|
|
2068
2068
|
}
|
|
2069
|
-
const
|
|
2069
|
+
const dA = new Za(), me = [
|
|
2070
2070
|
"Yellow C",
|
|
2071
2071
|
"Yellow 012 C",
|
|
2072
2072
|
"Orange 021 C",
|
|
@@ -4785,16 +4785,16 @@ const _a = me.map((c, e) => ({ pms: c, hex: ce[e] })), en = new ia(_a, { keys: [
|
|
|
4785
4785
|
function us(c, e) {
|
|
4786
4786
|
return en.search(c, e ? { limit: e } : void 0);
|
|
4787
4787
|
}
|
|
4788
|
-
let
|
|
4788
|
+
let Ce = null;
|
|
4789
4789
|
function tn(c) {
|
|
4790
4790
|
if (c.startsWith("#"))
|
|
4791
4791
|
return Ht(c);
|
|
4792
4792
|
if (!document)
|
|
4793
4793
|
throw new Error("browserColorToHex is only supported on browsers");
|
|
4794
|
-
if (
|
|
4794
|
+
if (Ce || (Ce = document.createElement("canvas").getContext("2d")), !Ce)
|
|
4795
4795
|
throw new Error("Failed to create canvas context required to convert colors");
|
|
4796
|
-
|
|
4797
|
-
const e = Ht(
|
|
4796
|
+
Ce.fillStyle = c;
|
|
4797
|
+
const e = Ht(Ce.fillStyle);
|
|
4798
4798
|
return e || console.error(`Unknown browser color ${c}`), e;
|
|
4799
4799
|
}
|
|
4800
4800
|
function Ht(c) {
|
|
@@ -4808,10 +4808,10 @@ class An {
|
|
|
4808
4808
|
return ft(t);
|
|
4809
4809
|
const A = e.asset;
|
|
4810
4810
|
if (!A)
|
|
4811
|
-
throw new
|
|
4811
|
+
throw new ae(e);
|
|
4812
4812
|
const a = A.fileLink;
|
|
4813
4813
|
if (a)
|
|
4814
|
-
return
|
|
4814
|
+
return _(a, !0);
|
|
4815
4815
|
throw new ue(A);
|
|
4816
4816
|
};
|
|
4817
4817
|
}
|
|
@@ -4859,10 +4859,10 @@ class An {
|
|
|
4859
4859
|
}
|
|
4860
4860
|
if (a) {
|
|
4861
4861
|
const g = async () => {
|
|
4862
|
-
var
|
|
4863
|
-
const B = (
|
|
4862
|
+
var d, E, w, u, h;
|
|
4863
|
+
const B = (d = a.storage) == null ? void 0 : d.colors, l = (E = a.storage) == null ? void 0 : E.framePatternSrc, C = (w = a.storage) == null ? void 0 : w.frameOffsetsList;
|
|
4864
4864
|
if (t.updateMetadata(e.stepName, {
|
|
4865
|
-
frameOffsetsList:
|
|
4865
|
+
frameOffsetsList: C,
|
|
4866
4866
|
framePatternSrc: l
|
|
4867
4867
|
}), l) {
|
|
4868
4868
|
const I = (u = t.getStepSpecificServices(e.stepName)) == null ? void 0 : u.frameService;
|
|
@@ -4872,27 +4872,27 @@ class An {
|
|
|
4872
4872
|
framePatternSrc: l
|
|
4873
4873
|
}), this.validateColorCount(e, t);
|
|
4874
4874
|
}
|
|
4875
|
-
if (
|
|
4875
|
+
if (C != null && C.some((I) => I.zoom)) {
|
|
4876
4876
|
const I = (h = t.getStepSpecificServices(e.stepName)) == null ? void 0 : h.frameService;
|
|
4877
4877
|
if (!I)
|
|
4878
4878
|
throw new Error("Frame service unavailable, cannot load pattern!");
|
|
4879
|
-
I.updateOffsets(
|
|
4879
|
+
I.updateOffsets(C);
|
|
4880
4880
|
}
|
|
4881
4881
|
t.setMandatoryFulfilled(e.stepName, !0);
|
|
4882
4882
|
};
|
|
4883
4883
|
if (a.selectedVariants && a.selectedVariants.length > 0) {
|
|
4884
4884
|
const B = a.selectedVariants[0].id;
|
|
4885
4885
|
if (e.option && B) {
|
|
4886
|
-
const l = (r = e.option.variants) == null ? void 0 : r.find((
|
|
4886
|
+
const l = (r = e.option.variants) == null ? void 0 : r.find((C) => C.id === B);
|
|
4887
4887
|
l && await t.setSelectionsAndElements(
|
|
4888
4888
|
e.stepName,
|
|
4889
4889
|
[l],
|
|
4890
4890
|
o,
|
|
4891
4891
|
async () => {
|
|
4892
|
-
const
|
|
4893
|
-
e.data.regions.map((
|
|
4892
|
+
const C = await Promise.all(
|
|
4893
|
+
e.data.regions.map((d) => this.frameSourceSvg(l, d))
|
|
4894
4894
|
);
|
|
4895
|
-
t.updateStorage(e.stepName, { currentFrameSources:
|
|
4895
|
+
t.updateStorage(e.stepName, { currentFrameSources: C }), await g();
|
|
4896
4896
|
}
|
|
4897
4897
|
);
|
|
4898
4898
|
}
|
|
@@ -4919,10 +4919,10 @@ class An {
|
|
|
4919
4919
|
const s = t.fileLink || "";
|
|
4920
4920
|
return s.endsWith(".pdf") || s.endsWith(".eps") || s.endsWith(".ai") ? new Promise((r) => {
|
|
4921
4921
|
A.addPoller(
|
|
4922
|
-
new
|
|
4922
|
+
new CA(
|
|
4923
4923
|
async () => {
|
|
4924
|
-
var
|
|
4925
|
-
const B = (
|
|
4924
|
+
var C;
|
|
4925
|
+
const B = (C = (await U.getFromServer(t.key || "")).versions) == null ? void 0 : C.find((d) => d.name === "svg");
|
|
4926
4926
|
return B ? (await fetch(B.link)).status === 200 : !1;
|
|
4927
4927
|
},
|
|
4928
4928
|
() => {
|
|
@@ -4980,7 +4980,7 @@ class An {
|
|
|
4980
4980
|
}
|
|
4981
4981
|
async loadPatternFromString(e, t, A = !0, a = void 0, n) {
|
|
4982
4982
|
if (e.endsWith("svg")) {
|
|
4983
|
-
const i = await OA(e), s = i.width, o = i.height, r = await
|
|
4983
|
+
const i = await OA(e), s = i.width, o = i.height, r = await _(e);
|
|
4984
4984
|
if (n) {
|
|
4985
4985
|
const l = r.match(/<(image|linearGradient|radialGradient)(\s|>|\/>)/gim);
|
|
4986
4986
|
if (l && l.length > 0)
|
|
@@ -5087,12 +5087,12 @@ class An {
|
|
|
5087
5087
|
if (!s)
|
|
5088
5088
|
throw new Error("Frame service unavailable, cannot load pattern!");
|
|
5089
5089
|
const o = await Promise.all(
|
|
5090
|
-
e.data.regions.map((
|
|
5090
|
+
e.data.regions.map((C) => this.frameSourceSvg(t, C))
|
|
5091
5091
|
);
|
|
5092
5092
|
n && n(!0);
|
|
5093
5093
|
const r = await Promise.all(
|
|
5094
|
-
e.data.regions.map(async (
|
|
5095
|
-
const E = await rt(o[
|
|
5094
|
+
e.data.regions.map(async (C, d) => {
|
|
5095
|
+
const E = await rt(o[d]), w = s.getImageData(), u = A.map((p) => new Ae(p.id)), h = w ? ct(w, E) : void 0, I = w ? {
|
|
5096
5096
|
id: J(),
|
|
5097
5097
|
src: w.src,
|
|
5098
5098
|
x: (h == null ? void 0 : h.x) || 0,
|
|
@@ -5102,11 +5102,11 @@ class An {
|
|
|
5102
5102
|
scaleX: (h == null ? void 0 : h.zoom) || 1,
|
|
5103
5103
|
scaleY: (h == null ? void 0 : h.zoom) || 1,
|
|
5104
5104
|
rotation: 0
|
|
5105
|
-
} : void 0, D = J(), Q = a.getLayouts().find((p) => p.panelId ===
|
|
5105
|
+
} : void 0, D = J(), Q = a.getLayouts().find((p) => p.panelId === C.panelId);
|
|
5106
5106
|
if (!Q)
|
|
5107
|
-
throw new z(
|
|
5107
|
+
throw new z(C);
|
|
5108
5108
|
return {
|
|
5109
|
-
command: this.getCreateElementCommand(D,
|
|
5109
|
+
command: this.getCreateElementCommand(D, C, Q, {
|
|
5110
5110
|
frameData: E,
|
|
5111
5111
|
pattern: I,
|
|
5112
5112
|
disablePlaceholder: e.data.disablePlaceholder,
|
|
@@ -5117,28 +5117,28 @@ class An {
|
|
|
5117
5117
|
}),
|
|
5118
5118
|
regionEl: {
|
|
5119
5119
|
id: D,
|
|
5120
|
-
region:
|
|
5120
|
+
region: C
|
|
5121
5121
|
},
|
|
5122
5122
|
removeExistingCommands: u
|
|
5123
5123
|
};
|
|
5124
5124
|
})
|
|
5125
|
-
), g = r.map((
|
|
5125
|
+
), g = r.map((C) => C.command), B = r.map((C) => C.removeExistingCommands).flat();
|
|
5126
5126
|
return {
|
|
5127
5127
|
command: new k([...g, ...B]),
|
|
5128
5128
|
followup: async () => {
|
|
5129
5129
|
n && n(!1), await a.setSelectionsAndElements(
|
|
5130
5130
|
e.stepName,
|
|
5131
5131
|
t ? [t] : [],
|
|
5132
|
-
[...r.map((
|
|
5132
|
+
[...r.map((C) => C.regionEl)],
|
|
5133
5133
|
async () => {
|
|
5134
|
-
var
|
|
5134
|
+
var C;
|
|
5135
5135
|
if (a.updateStorage(e.stepName, { currentFrameSources: o }), i) {
|
|
5136
|
-
const
|
|
5136
|
+
const d = (C = a.getStepSpecificServices(
|
|
5137
5137
|
e.stepName
|
|
5138
|
-
)) == null ? void 0 :
|
|
5139
|
-
if (!
|
|
5138
|
+
)) == null ? void 0 : C.frameService;
|
|
5139
|
+
if (!d)
|
|
5140
5140
|
throw new Error("Frame service unavailable, cannot load pattern!");
|
|
5141
|
-
await this.loadPatternFromString(i,
|
|
5141
|
+
await this.loadPatternFromString(i, d, !0);
|
|
5142
5142
|
}
|
|
5143
5143
|
}
|
|
5144
5144
|
);
|
|
@@ -5187,11 +5187,11 @@ class An {
|
|
|
5187
5187
|
), this.validateColorCount(t, A);
|
|
5188
5188
|
}
|
|
5189
5189
|
}
|
|
5190
|
-
const
|
|
5190
|
+
const te = new An();
|
|
5191
5191
|
class an {
|
|
5192
5192
|
async getIllustrationBody(e) {
|
|
5193
5193
|
return new Promise((t) => {
|
|
5194
|
-
|
|
5194
|
+
_(e, !0).then((A) => {
|
|
5195
5195
|
t(A);
|
|
5196
5196
|
}).catch((A) => console.error(A));
|
|
5197
5197
|
});
|
|
@@ -5257,15 +5257,15 @@ class an {
|
|
|
5257
5257
|
if (o && g) {
|
|
5258
5258
|
const B = (r = o.variants) == null ? void 0 : r.find((l) => l.id === g);
|
|
5259
5259
|
if (B) {
|
|
5260
|
-
const l = s.map((
|
|
5260
|
+
const l = s.map((C) => ({ id: C.id, region: C.stepRegion }));
|
|
5261
5261
|
await t.setSelectionsAndElements(
|
|
5262
5262
|
e.stepName,
|
|
5263
5263
|
[B],
|
|
5264
5264
|
l,
|
|
5265
5265
|
async () => {
|
|
5266
|
-
var
|
|
5266
|
+
var C;
|
|
5267
5267
|
t.updateMetadata(e.stepName, {
|
|
5268
|
-
colors: (
|
|
5268
|
+
colors: (C = a.storage) == null ? void 0 : C.colors
|
|
5269
5269
|
}), t.setMandatoryFulfilled(e.stepName, !0);
|
|
5270
5270
|
}
|
|
5271
5271
|
);
|
|
@@ -5291,14 +5291,14 @@ class an {
|
|
|
5291
5291
|
i[B] = { browserValue: l, spotColor: (g = i[B]) == null ? void 0 : g.spotColor };
|
|
5292
5292
|
const s = zA(e, t, A, i), o = await ve(s), r = [];
|
|
5293
5293
|
for (const B of a) {
|
|
5294
|
-
for (const [l,
|
|
5295
|
-
r.push(new et(B, l,
|
|
5294
|
+
for (const [l, C] of n.entries())
|
|
5295
|
+
r.push(new et(B, l, C));
|
|
5296
5296
|
r.push(new KA(B, s, o));
|
|
5297
5297
|
}
|
|
5298
5298
|
return new k(r);
|
|
5299
5299
|
}
|
|
5300
5300
|
async changeColors(e, t, A, a, n) {
|
|
5301
|
-
var
|
|
5301
|
+
var C, d;
|
|
5302
5302
|
if (t.length === 0)
|
|
5303
5303
|
return;
|
|
5304
5304
|
const i = He(
|
|
@@ -5310,10 +5310,10 @@ class an {
|
|
|
5310
5310
|
h && (u.spotColor = { profileName: h.profileName, namedColor: h.namedColor }), o[E] = u;
|
|
5311
5311
|
});
|
|
5312
5312
|
for (const [E, w] of n.entries())
|
|
5313
|
-
s[E] = { browserValue: w, spotColor: (
|
|
5313
|
+
s[E] = { browserValue: w, spotColor: (C = s[E]) == null ? void 0 : C.spotColor }, o[E] = { browserValue: w };
|
|
5314
5314
|
let r = Array.from(Object.values(s)).map((E) => E.browserValue);
|
|
5315
5315
|
const g = e.data.colorOption;
|
|
5316
|
-
g && ((
|
|
5316
|
+
g && ((d = g.variants) == null || d.forEach((E) => {
|
|
5317
5317
|
r = r.map((w) => {
|
|
5318
5318
|
var u;
|
|
5319
5319
|
return w.toLowerCase() === ((u = E.color) == null ? void 0 : u.toLowerCase()) ? E.name : w;
|
|
@@ -5344,11 +5344,11 @@ class an {
|
|
|
5344
5344
|
if (!e.data || !e.data.regions)
|
|
5345
5345
|
throw new Ge(e, "Missing regions.");
|
|
5346
5346
|
a(!0);
|
|
5347
|
-
const i = A.map((h) => new
|
|
5347
|
+
const i = A.map((h) => new Ae(h.id));
|
|
5348
5348
|
e.mandatory && n.setMandatoryFulfilled(e.stepName, !1);
|
|
5349
5349
|
const s = t.asset;
|
|
5350
5350
|
if (!s)
|
|
5351
|
-
throw new
|
|
5351
|
+
throw new ae(t);
|
|
5352
5352
|
const o = s.fileLink;
|
|
5353
5353
|
if (!o)
|
|
5354
5354
|
throw new ue(s);
|
|
@@ -5366,7 +5366,7 @@ class an {
|
|
|
5366
5366
|
svg: r
|
|
5367
5367
|
})
|
|
5368
5368
|
};
|
|
5369
|
-
}, l = e.data.regions.map(B),
|
|
5369
|
+
}, l = e.data.regions.map(B), d = [...l.map((h) => h.command), ...i];
|
|
5370
5370
|
let E = Array.from(Object.values(r.colors)).map((h) => h.browserValue);
|
|
5371
5371
|
const w = e.data.colorOption;
|
|
5372
5372
|
return w && ((u = w.variants) == null || u.forEach((h) => {
|
|
@@ -5375,7 +5375,7 @@ class an {
|
|
|
5375
5375
|
return I.toLowerCase() === ((D = h.color) == null ? void 0 : D.toLowerCase()) ? h.name : I;
|
|
5376
5376
|
});
|
|
5377
5377
|
})), n.updateMetadata(e.stepName, { colors: E }), {
|
|
5378
|
-
command: new k(
|
|
5378
|
+
command: new k(d),
|
|
5379
5379
|
followup: async () => {
|
|
5380
5380
|
await n.setSelectionsAndElements(
|
|
5381
5381
|
e.stepName,
|
|
@@ -5424,15 +5424,15 @@ class nn {
|
|
|
5424
5424
|
if (g) {
|
|
5425
5425
|
const B = (r = o.variants) == null ? void 0 : r.find((l) => l.id === g);
|
|
5426
5426
|
if (B) {
|
|
5427
|
-
const l = B.material,
|
|
5427
|
+
const l = B.material, C = s.map((d) => ({ id: d.id, region: d.stepRegion }));
|
|
5428
5428
|
await t.setSelectionsAndElements(
|
|
5429
5429
|
e.stepName,
|
|
5430
5430
|
[B],
|
|
5431
|
-
|
|
5431
|
+
C,
|
|
5432
5432
|
async () => {
|
|
5433
|
-
const
|
|
5434
|
-
if (
|
|
5435
|
-
const E = e.data.targetMaterials.map((w) =>
|
|
5433
|
+
const d = t.getModelContainer();
|
|
5434
|
+
if (d) {
|
|
5435
|
+
const E = e.data.targetMaterials.map((w) => d.applyMaterialVariant(
|
|
5436
5436
|
w,
|
|
5437
5437
|
o.id || "",
|
|
5438
5438
|
l || {}
|
|
@@ -5456,7 +5456,7 @@ class nn {
|
|
|
5456
5456
|
a(!0);
|
|
5457
5457
|
const i = t.material;
|
|
5458
5458
|
if (!i)
|
|
5459
|
-
throw a(!1), new
|
|
5459
|
+
throw a(!1), new ae(t);
|
|
5460
5460
|
return {
|
|
5461
5461
|
command: void 0,
|
|
5462
5462
|
followup: async () => {
|
|
@@ -5500,19 +5500,19 @@ class sn {
|
|
|
5500
5500
|
if (o && g) {
|
|
5501
5501
|
const B = (r = o.variants) == null ? void 0 : r.find((l) => l.id === g);
|
|
5502
5502
|
if (B) {
|
|
5503
|
-
const l = s.map((
|
|
5503
|
+
const l = s.map((C) => ({ id: C.id, region: C.stepRegion }));
|
|
5504
5504
|
await t.setSelectionsAndElements(
|
|
5505
5505
|
e.stepName,
|
|
5506
5506
|
[B],
|
|
5507
5507
|
l,
|
|
5508
5508
|
async () => {
|
|
5509
|
-
var
|
|
5510
|
-
const
|
|
5511
|
-
if (
|
|
5512
|
-
const E = (
|
|
5509
|
+
var d;
|
|
5510
|
+
const C = t.getModelContainer();
|
|
5511
|
+
if (C && e.option) {
|
|
5512
|
+
const E = (d = B.asset) == null ? void 0 : d.fileLink;
|
|
5513
5513
|
if (!E)
|
|
5514
|
-
throw new
|
|
5515
|
-
await
|
|
5514
|
+
throw new ae(B);
|
|
5515
|
+
await C.applyModelVariant(
|
|
5516
5516
|
e.stepName || "",
|
|
5517
5517
|
{
|
|
5518
5518
|
model: E,
|
|
@@ -5536,7 +5536,7 @@ class sn {
|
|
|
5536
5536
|
a(!0);
|
|
5537
5537
|
const n = (i = t.asset) == null ? void 0 : i.fileLink;
|
|
5538
5538
|
if (!n)
|
|
5539
|
-
throw new
|
|
5539
|
+
throw new ae(t);
|
|
5540
5540
|
return {
|
|
5541
5541
|
command: void 0,
|
|
5542
5542
|
followup: async () => {
|
|
@@ -5594,18 +5594,18 @@ class on {
|
|
|
5594
5594
|
if (A.setMandatoryFulfilled(e.stepName, t !== ""), !e.data || !e.data.regions || e.data.regions.length <= 0)
|
|
5595
5595
|
return console.error("Missing configuration."), null;
|
|
5596
5596
|
A.updateStorage(e.stepName, { text: t }), A.updateMetadata(e.stepName, { text: t });
|
|
5597
|
-
const r = (B, l,
|
|
5598
|
-
const
|
|
5597
|
+
const r = (B, l, C) => {
|
|
5598
|
+
const d = C || J(), w = A.getLayouts().find((h) => h.panelId === l.panelId);
|
|
5599
5599
|
if (!w)
|
|
5600
5600
|
return console.error(`Can not find layout for region: ${l.panelId}`), null;
|
|
5601
5601
|
const u = [];
|
|
5602
|
-
return
|
|
5602
|
+
return C && u.push(new Ae(d)), u.push(
|
|
5603
5603
|
new O(
|
|
5604
5604
|
{
|
|
5605
5605
|
stepRegion: l,
|
|
5606
5606
|
stepName: e.stepName,
|
|
5607
5607
|
colors: {},
|
|
5608
|
-
id:
|
|
5608
|
+
id: d,
|
|
5609
5609
|
svg: B,
|
|
5610
5610
|
type: G.Illustration,
|
|
5611
5611
|
y: l.top,
|
|
@@ -5620,18 +5620,18 @@ class on {
|
|
|
5620
5620
|
w
|
|
5621
5621
|
)
|
|
5622
5622
|
), {
|
|
5623
|
-
id:
|
|
5623
|
+
id: d,
|
|
5624
5624
|
region: l,
|
|
5625
5625
|
command: new k(u)
|
|
5626
5626
|
};
|
|
5627
5627
|
};
|
|
5628
5628
|
if (i.length > 0) {
|
|
5629
|
-
const l = i.map((
|
|
5630
|
-
if (!
|
|
5629
|
+
const l = i.map((C) => {
|
|
5630
|
+
if (!C.region)
|
|
5631
5631
|
return null;
|
|
5632
|
-
const
|
|
5633
|
-
return r(
|
|
5634
|
-
}).filter((
|
|
5632
|
+
const d = s.svgPrint(t, C.region);
|
|
5633
|
+
return r(d, C.region, C.id);
|
|
5634
|
+
}).filter((C) => !!C).filter((C) => !!C).map((C) => C && C.command);
|
|
5635
5635
|
return {
|
|
5636
5636
|
command: new k(l),
|
|
5637
5637
|
followup: async () => {
|
|
@@ -5639,16 +5639,16 @@ class on {
|
|
|
5639
5639
|
};
|
|
5640
5640
|
} else {
|
|
5641
5641
|
const B = e.data.regions.map(
|
|
5642
|
-
(
|
|
5643
|
-
), l = B.filter((
|
|
5642
|
+
(C) => r(s.svgPrint(t, C), C)
|
|
5643
|
+
), l = B.filter((C) => !!C).map((C) => C && C.command);
|
|
5644
5644
|
return {
|
|
5645
5645
|
command: new k(l),
|
|
5646
5646
|
followup: async () => {
|
|
5647
|
-
const
|
|
5647
|
+
const C = B.filter((d) => d).map((d) => d && { id: d.id, region: d.region });
|
|
5648
5648
|
await A.setSelectionsAndElements(
|
|
5649
5649
|
e.stepName,
|
|
5650
5650
|
[],
|
|
5651
|
-
|
|
5651
|
+
C
|
|
5652
5652
|
);
|
|
5653
5653
|
}
|
|
5654
5654
|
};
|
|
@@ -5696,7 +5696,7 @@ class rn {
|
|
|
5696
5696
|
if (o && g) {
|
|
5697
5697
|
const B = (r = o.variants) == null ? void 0 : r.find((l) => l.id === g);
|
|
5698
5698
|
if (B) {
|
|
5699
|
-
const l = s.map((
|
|
5699
|
+
const l = s.map((C) => ({ id: C.id, region: C.stepRegion }));
|
|
5700
5700
|
await t.setSelectionsAndElements(
|
|
5701
5701
|
e.stepName,
|
|
5702
5702
|
[B],
|
|
@@ -5716,23 +5716,23 @@ class rn {
|
|
|
5716
5716
|
async selectVariantCommand(e, t, A, a) {
|
|
5717
5717
|
const n = t.asset;
|
|
5718
5718
|
if (!n)
|
|
5719
|
-
throw new
|
|
5719
|
+
throw new ae(t);
|
|
5720
5720
|
const i = n == null ? void 0 : n.fileLink;
|
|
5721
5721
|
if (!i)
|
|
5722
5722
|
return console.error("No URL for picture!"), null;
|
|
5723
5723
|
a(!0), e.mandatory && A.setMandatoryFulfilled(e.stepName, !1);
|
|
5724
|
-
const o = A.getRegionElements(e.stepName).map((B) => new
|
|
5725
|
-
const
|
|
5726
|
-
if (!
|
|
5724
|
+
const o = A.getRegionElements(e.stepName).map((B) => new Ae(B.id)), r = (B) => {
|
|
5725
|
+
const C = A.getLayouts().find((E) => E.panelId === B.panelId);
|
|
5726
|
+
if (!C)
|
|
5727
5727
|
throw new z(B);
|
|
5728
|
-
const
|
|
5728
|
+
const d = J();
|
|
5729
5729
|
return {
|
|
5730
|
-
regionElement: { id:
|
|
5730
|
+
regionElement: { id: d, region: B },
|
|
5731
5731
|
command: new O(
|
|
5732
5732
|
{
|
|
5733
5733
|
stepName: e.stepName,
|
|
5734
5734
|
stepRegion: B,
|
|
5735
|
-
id:
|
|
5735
|
+
id: d,
|
|
5736
5736
|
src: i,
|
|
5737
5737
|
type: G.Image,
|
|
5738
5738
|
y: B.top,
|
|
@@ -5745,7 +5745,7 @@ class rn {
|
|
|
5745
5745
|
immutable: B.immutable,
|
|
5746
5746
|
preserveAspectRatio: "none"
|
|
5747
5747
|
},
|
|
5748
|
-
|
|
5748
|
+
C
|
|
5749
5749
|
)
|
|
5750
5750
|
};
|
|
5751
5751
|
}, g = e.data.regions.map(r);
|
|
@@ -5883,15 +5883,15 @@ class gn {
|
|
|
5883
5883
|
if (o && g) {
|
|
5884
5884
|
const B = (r = o.variants) == null ? void 0 : r.find((l) => l.id === g);
|
|
5885
5885
|
if (B) {
|
|
5886
|
-
const l = s.map((
|
|
5886
|
+
const l = s.map((C) => ({ id: C.id, region: C.stepRegion }));
|
|
5887
5887
|
await t.setSelectionsAndElements(
|
|
5888
5888
|
e.stepName,
|
|
5889
5889
|
[B],
|
|
5890
5890
|
l,
|
|
5891
5891
|
async () => {
|
|
5892
|
-
var
|
|
5892
|
+
var C;
|
|
5893
5893
|
t.updateStorage(e.stepName, {
|
|
5894
|
-
colour: ((
|
|
5894
|
+
colour: ((C = a == null ? void 0 : a.storage) == null ? void 0 : C.colour) || ""
|
|
5895
5895
|
}), t.setMandatoryFulfilled(e.stepName, !0);
|
|
5896
5896
|
}
|
|
5897
5897
|
);
|
|
@@ -5914,8 +5914,8 @@ class gn {
|
|
|
5914
5914
|
const l = B.region;
|
|
5915
5915
|
if (!n.find((E) => E.panelId === (l == null ? void 0 : l.panelId)))
|
|
5916
5916
|
throw new z(l);
|
|
5917
|
-
const
|
|
5918
|
-
return new et(B.id, this.shapeFillId,
|
|
5917
|
+
const d = s();
|
|
5918
|
+
return new et(B.id, this.shapeFillId, d);
|
|
5919
5919
|
}, g = A.map(r).filter((B) => !!B);
|
|
5920
5920
|
return {
|
|
5921
5921
|
command: new k(g),
|
|
@@ -5928,10 +5928,10 @@ class gn {
|
|
|
5928
5928
|
}
|
|
5929
5929
|
};
|
|
5930
5930
|
} else {
|
|
5931
|
-
const r = (
|
|
5932
|
-
const
|
|
5933
|
-
if (!
|
|
5934
|
-
throw new z(
|
|
5931
|
+
const r = (C) => {
|
|
5932
|
+
const d = n.find((I) => I.panelId === C.panelId);
|
|
5933
|
+
if (!d)
|
|
5934
|
+
throw new z(C);
|
|
5935
5935
|
const E = s(), w = `
|
|
5936
5936
|
<svg
|
|
5937
5937
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -5957,29 +5957,29 @@ class gn {
|
|
|
5957
5957
|
const h = J();
|
|
5958
5958
|
return {
|
|
5959
5959
|
id: h,
|
|
5960
|
-
region:
|
|
5960
|
+
region: C,
|
|
5961
5961
|
command: new O(
|
|
5962
5962
|
{
|
|
5963
|
-
stepRegion:
|
|
5963
|
+
stepRegion: C,
|
|
5964
5964
|
stepName: e.stepName,
|
|
5965
5965
|
colors: u,
|
|
5966
5966
|
id: h,
|
|
5967
5967
|
svg: w,
|
|
5968
5968
|
type: G.Illustration,
|
|
5969
|
-
y:
|
|
5970
|
-
x:
|
|
5971
|
-
rotation:
|
|
5972
|
-
width:
|
|
5973
|
-
height:
|
|
5974
|
-
layer:
|
|
5975
|
-
layerIndex:
|
|
5976
|
-
immutable:
|
|
5969
|
+
y: C.top,
|
|
5970
|
+
x: C.left,
|
|
5971
|
+
rotation: C.rotation,
|
|
5972
|
+
width: C.width,
|
|
5973
|
+
height: C.height,
|
|
5974
|
+
layer: C.layer,
|
|
5975
|
+
layerIndex: C.layerIndex,
|
|
5976
|
+
immutable: C.immutable,
|
|
5977
5977
|
excludeFromExport: e.data.excludeFromPrint
|
|
5978
5978
|
},
|
|
5979
|
-
|
|
5979
|
+
d
|
|
5980
5980
|
)
|
|
5981
5981
|
};
|
|
5982
|
-
}, g = e.data.regions.map(r), B = g.filter((
|
|
5982
|
+
}, g = e.data.regions.map(r), B = g.filter((C) => !!C).map((C) => C == null ? void 0 : C.command), l = g.filter((C) => !!C).map((C) => ({ id: C.id, region: C.region }));
|
|
5983
5983
|
return {
|
|
5984
5984
|
command: new k(B),
|
|
5985
5985
|
followup: async () => {
|
|
@@ -6028,14 +6028,14 @@ class Je extends Error {
|
|
|
6028
6028
|
super(e), Object.setPrototypeOf(this, new.target.prototype), this.name = Je.name;
|
|
6029
6029
|
}
|
|
6030
6030
|
}
|
|
6031
|
-
const
|
|
6031
|
+
const Cn = ["‘", "’", "“", "”", `
|
|
6032
6032
|
`];
|
|
6033
6033
|
class Te extends Error {
|
|
6034
6034
|
constructor(e) {
|
|
6035
6035
|
super(e), Object.setPrototypeOf(this, new.target.prototype), this.name = Te.name;
|
|
6036
6036
|
}
|
|
6037
6037
|
}
|
|
6038
|
-
class
|
|
6038
|
+
class dn {
|
|
6039
6039
|
constructor() {
|
|
6040
6040
|
this.cachedColors = /* @__PURE__ */ new Map(), this.filterUnsupportedCharacters = (e, t) => {
|
|
6041
6041
|
let A = e.replace(
|
|
@@ -6044,7 +6044,7 @@ class Cn {
|
|
|
6044
6044
|
);
|
|
6045
6045
|
const a = [], n = t ? jA(t.assetUrl) : void 0;
|
|
6046
6046
|
if (n) {
|
|
6047
|
-
const i = A.split("").filter((o) => !
|
|
6047
|
+
const i = A.split("").filter((o) => !Cn.includes(o)).join(""), s = i.split("").map((o) => n.getFont().charToGlyph(o));
|
|
6048
6048
|
for (let o = 0; o < s.length; o++)
|
|
6049
6049
|
s[o].name === ".notdef" && a.push(String.fromCharCode(i.charCodeAt(o)));
|
|
6050
6050
|
}
|
|
@@ -6220,19 +6220,19 @@ class Cn {
|
|
|
6220
6220
|
for (const l of t) {
|
|
6221
6221
|
if (!l.fontData)
|
|
6222
6222
|
throw new b("Failed to resolve font data for text.");
|
|
6223
|
-
const [
|
|
6223
|
+
const [C, d] = Ne(
|
|
6224
6224
|
l.fontSize,
|
|
6225
6225
|
l.fontData,
|
|
6226
6226
|
{ left: l.x, top: l.y, width: l.width, height: l.height, rotation: l.rotation, panelId: "" },
|
|
6227
6227
|
[i],
|
|
6228
6228
|
{ size: A.data.size, minSize: A.data.minSize, maxSize: A.data.maxSize }
|
|
6229
6229
|
);
|
|
6230
|
-
g.set(l.id,
|
|
6231
|
-
const E = A.data.curved ? i : (
|
|
6230
|
+
g.set(l.id, C), B.set(l.id, d);
|
|
6231
|
+
const E = A.data.curved ? i : (d || []).join(`
|
|
6232
6232
|
`);
|
|
6233
|
-
r.push(this.generateTextChangeCommandsForRegion(
|
|
6233
|
+
r.push(this.generateTextChangeCommandsForRegion(C, A.data, l.id, E));
|
|
6234
6234
|
}
|
|
6235
|
-
return !A.data.curved && t.length > 0 && !Array.from(B.values()).every((
|
|
6235
|
+
return !A.data.curved && t.length > 0 && !Array.from(B.values()).every((C) => C) ? (s.errors.push({ localizationKey: "workflow.steps.text.doesNotFit" }), s) : (a.updateStorage(A.stepName, { text: e }), a.updateMetadata(A.stepName, {
|
|
6236
6236
|
text: i
|
|
6237
6237
|
}), n.defaultCleared && a.setMandatoryFulfilled(A.stepName, !0), s.command = new k(r), s);
|
|
6238
6238
|
}
|
|
@@ -6269,16 +6269,16 @@ class Cn {
|
|
|
6269
6269
|
if (a != null && a.selectedVariants) {
|
|
6270
6270
|
const l = a.selectedVariants[0].id;
|
|
6271
6271
|
if (o && l) {
|
|
6272
|
-
const
|
|
6273
|
-
if (
|
|
6274
|
-
const
|
|
6272
|
+
const C = (r = o.variants) == null ? void 0 : r.find((d) => d.id === l);
|
|
6273
|
+
if (C) {
|
|
6274
|
+
const d = await this.fontDataFromVariant(C), E = s.map((I) => ({ id: I.id, region: I.stepRegion })), w = (g = a.storage) == null ? void 0 : g.color, u = (B = a.storage) == null ? void 0 : B.text;
|
|
6275
6275
|
await t.setSelectionsAndElements(
|
|
6276
6276
|
e.stepName,
|
|
6277
|
-
[
|
|
6277
|
+
[C],
|
|
6278
6278
|
E,
|
|
6279
6279
|
async () => {
|
|
6280
6280
|
t.updateMetadata(e.stepName, { color: w, text: u }), t.updateStorage(e.stepName, { text: u, inputText: u });
|
|
6281
|
-
const I = s.map((m) => new yt(m.id,
|
|
6281
|
+
const I = s.map((m) => new yt(m.id, d)), D = new k(I);
|
|
6282
6282
|
t.getCommandDispatcher()(D);
|
|
6283
6283
|
}
|
|
6284
6284
|
);
|
|
@@ -6313,7 +6313,7 @@ class Cn {
|
|
|
6313
6313
|
async fontDataFromVariant(e) {
|
|
6314
6314
|
const t = e.asset;
|
|
6315
6315
|
if (!t)
|
|
6316
|
-
throw new
|
|
6316
|
+
throw new ae(e);
|
|
6317
6317
|
const A = t.fileLink;
|
|
6318
6318
|
if (!A)
|
|
6319
6319
|
throw new ue(t);
|
|
@@ -6332,7 +6332,7 @@ class Cn {
|
|
|
6332
6332
|
const E = a.map((w) => new Ve(w.id, o));
|
|
6333
6333
|
l.push(...E);
|
|
6334
6334
|
}
|
|
6335
|
-
const
|
|
6335
|
+
const C = await this.changeInputTextWithRegion(
|
|
6336
6336
|
e,
|
|
6337
6337
|
e.data.size || Xe,
|
|
6338
6338
|
g,
|
|
@@ -6343,7 +6343,7 @@ class Cn {
|
|
|
6343
6343
|
i,
|
|
6344
6344
|
s
|
|
6345
6345
|
);
|
|
6346
|
-
return
|
|
6346
|
+
return C && l.push(C), {
|
|
6347
6347
|
command: new k(l),
|
|
6348
6348
|
followup: async () => {
|
|
6349
6349
|
n.markUpdateCompleted(r), await n.setSelectionsAndElements(e.stepName, [t], a);
|
|
@@ -6357,7 +6357,7 @@ class Cn {
|
|
|
6357
6357
|
g,
|
|
6358
6358
|
A,
|
|
6359
6359
|
n
|
|
6360
|
-
),
|
|
6360
|
+
), C = await this.changeInputTextWithRegion(
|
|
6361
6361
|
e,
|
|
6362
6362
|
e.data.size || Xe,
|
|
6363
6363
|
g,
|
|
@@ -6367,15 +6367,15 @@ class Cn {
|
|
|
6367
6367
|
!!A.customiseAllText,
|
|
6368
6368
|
i,
|
|
6369
6369
|
s
|
|
6370
|
-
),
|
|
6370
|
+
), d = l.flatMap((w) => w.commands);
|
|
6371
6371
|
if (o) {
|
|
6372
6372
|
const w = l.map(
|
|
6373
6373
|
(u) => new Ve(u.regionElement.id, o)
|
|
6374
6374
|
);
|
|
6375
|
-
|
|
6375
|
+
d.push(...w);
|
|
6376
6376
|
}
|
|
6377
|
-
return
|
|
6378
|
-
command: new k(
|
|
6377
|
+
return C && d.push(C), {
|
|
6378
|
+
command: new k(d),
|
|
6379
6379
|
followup: async () => {
|
|
6380
6380
|
n.markUpdateCompleted(r);
|
|
6381
6381
|
}
|
|
@@ -6395,9 +6395,9 @@ class Cn {
|
|
|
6395
6395
|
throw new Error("Step data not supplied");
|
|
6396
6396
|
const s = n.text || A.defaultText || "", o = this.getProcessedInput(s, A, !1), r = async (B) => {
|
|
6397
6397
|
var E;
|
|
6398
|
-
const
|
|
6398
|
+
const C = i.getLayouts().find((w) => w.panelId === B.panelId), d = J();
|
|
6399
6399
|
try {
|
|
6400
|
-
if (!
|
|
6400
|
+
if (!C)
|
|
6401
6401
|
throw new Te("Failed to find layout for region: " + B.panelId);
|
|
6402
6402
|
const w = A.colorOption;
|
|
6403
6403
|
let u;
|
|
@@ -6417,7 +6417,7 @@ class Cn {
|
|
|
6417
6417
|
fill: n.color ? n.color : I,
|
|
6418
6418
|
fontSize: A.size || Xe,
|
|
6419
6419
|
fontData: a,
|
|
6420
|
-
id:
|
|
6420
|
+
id: d,
|
|
6421
6421
|
layer: B.layer,
|
|
6422
6422
|
layerIndex: B.layerIndex,
|
|
6423
6423
|
rotation: B.rotation,
|
|
@@ -6457,9 +6457,9 @@ class Cn {
|
|
|
6457
6457
|
m.push(
|
|
6458
6458
|
this.generateTextChangeCommandsForRegion(y, A, D.id, S)
|
|
6459
6459
|
);
|
|
6460
|
-
const N = new O(D,
|
|
6460
|
+
const N = new O(D, C);
|
|
6461
6461
|
return {
|
|
6462
|
-
regionElement: { id:
|
|
6462
|
+
regionElement: { id: d, region: B },
|
|
6463
6463
|
commands: [N, ...m],
|
|
6464
6464
|
newElement: D,
|
|
6465
6465
|
fontData: a
|
|
@@ -6495,8 +6495,8 @@ class Cn {
|
|
|
6495
6495
|
* @deprecated
|
|
6496
6496
|
*/
|
|
6497
6497
|
async changeInputTextWithRegion(e, t, A, a, n, i, s, o, r, g) {
|
|
6498
|
-
const B = (a || "").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g, ""), l = this.getProcessedInput(B, e.data, s),
|
|
6499
|
-
for (const D of
|
|
6498
|
+
const B = (a || "").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g, ""), l = this.getProcessedInput(B, e.data, s), C = i.getRegionElements(e.stepName), d = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new Map();
|
|
6499
|
+
for (const D of C)
|
|
6500
6500
|
if (D.region) {
|
|
6501
6501
|
const [m, Q] = Ne(
|
|
6502
6502
|
t,
|
|
@@ -6505,7 +6505,7 @@ class Cn {
|
|
|
6505
6505
|
[l],
|
|
6506
6506
|
{ size: e.data.size, minSize: e.data.minSize, maxSize: e.data.maxSize }
|
|
6507
6507
|
);
|
|
6508
|
-
|
|
6508
|
+
d.set(D.id, m), E.set(D.id, Q);
|
|
6509
6509
|
}
|
|
6510
6510
|
const u = (() => {
|
|
6511
6511
|
if (e.data && e.data.maxLength && l.length > e.data.maxLength)
|
|
@@ -6530,12 +6530,12 @@ class Cn {
|
|
|
6530
6530
|
text: this.injectReplaceableText(B, e.data)
|
|
6531
6531
|
}), n.defaultCleared && i.setMandatoryFulfilled(e.stepName, !0);
|
|
6532
6532
|
const h = [];
|
|
6533
|
-
for (const D of
|
|
6533
|
+
for (const D of C) {
|
|
6534
6534
|
const m = e.data.curved ? l : (E.get(D.id) || []).join(`
|
|
6535
6535
|
`);
|
|
6536
6536
|
h.push(
|
|
6537
6537
|
this.generateTextChangeCommandsForRegion(
|
|
6538
|
-
|
|
6538
|
+
d.get(D.id) || 1,
|
|
6539
6539
|
e.data,
|
|
6540
6540
|
D.id,
|
|
6541
6541
|
m
|
|
@@ -6545,7 +6545,7 @@ class Cn {
|
|
|
6545
6545
|
return new k(h);
|
|
6546
6546
|
}
|
|
6547
6547
|
}
|
|
6548
|
-
const V = new
|
|
6548
|
+
const V = new dn();
|
|
6549
6549
|
class Et {
|
|
6550
6550
|
}
|
|
6551
6551
|
const wn = "data:application/font-woff;base64,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", En = `<?xml version="1.0" encoding="iso-8859-1"?>
|
|
@@ -7903,7 +7903,7 @@ class Qt {
|
|
|
7903
7903
|
l = (B * 100 | 0) / 100;
|
|
7904
7904
|
break;
|
|
7905
7905
|
default:
|
|
7906
|
-
throw new
|
|
7906
|
+
throw new de("Failed to encode path.");
|
|
7907
7907
|
}
|
|
7908
7908
|
o || i.push(" "), i.push(l), o = !1;
|
|
7909
7909
|
}
|
|
@@ -7917,12 +7917,12 @@ class Qt {
|
|
|
7917
7917
|
for (t.lastIndex = 0; n = t.exec(e); ) {
|
|
7918
7918
|
const i = n[1].toLowerCase(), s = (n[2].match(A) || []).map(parseFloat), o = i === n[1], r = Ut[i];
|
|
7919
7919
|
if (s.length < r.length)
|
|
7920
|
-
throw new
|
|
7920
|
+
throw new de(
|
|
7921
7921
|
`Path type "${i}" given ${s.length} arguments, expected ${r.length}.`
|
|
7922
7922
|
);
|
|
7923
7923
|
if (r.length > 0) {
|
|
7924
7924
|
if (s.length % r.length !== 0)
|
|
7925
|
-
throw new
|
|
7925
|
+
throw new de(
|
|
7926
7926
|
`Path type "${i}" given ${s.length} arguments, not divisible by ${r.length}`
|
|
7927
7927
|
);
|
|
7928
7928
|
for (let g = 0; g < s.length / r.length; g++) {
|
|
@@ -7947,7 +7947,7 @@ class Qt {
|
|
|
7947
7947
|
if (s in n && o in n) {
|
|
7948
7948
|
const r = [n[s], n[o]], g = t(r);
|
|
7949
7949
|
if (g.length < 2)
|
|
7950
|
-
throw new
|
|
7950
|
+
throw new de("Transformer must return at least 2 points.");
|
|
7951
7951
|
n[s] = g[0], n[o] = g[1];
|
|
7952
7952
|
}
|
|
7953
7953
|
}
|
|
@@ -8001,16 +8001,16 @@ class pn extends Et {
|
|
|
8001
8001
|
return "";
|
|
8002
8002
|
const B = v("defs");
|
|
8003
8003
|
o.appendChild(B), pA(o, B, t);
|
|
8004
|
-
const l = r * 0.23,
|
|
8005
|
-
o.appendChild(w), w.setAttribute("transform", `translate(${
|
|
8006
|
-
const u = ht(l,
|
|
8004
|
+
const l = r * 0.23, C = g * 0.94, d = g * 0.04, E = r * 0.53, w = v("g");
|
|
8005
|
+
o.appendChild(w), w.setAttribute("transform", `translate(${d} ${E}) rotate(-21)`);
|
|
8006
|
+
const u = ht(l, C);
|
|
8007
8007
|
u.setAttribute("opacity", "0"), w.appendChild(u);
|
|
8008
8008
|
const h = v("g");
|
|
8009
8009
|
w.appendChild(h);
|
|
8010
8010
|
const I = s();
|
|
8011
8011
|
h.appendChild(I);
|
|
8012
8012
|
const D = Bt(i);
|
|
8013
|
-
return ut(h, D, l,
|
|
8013
|
+
return ut(h, D, l, C), IA(o.outerHTML);
|
|
8014
8014
|
}
|
|
8015
8015
|
}
|
|
8016
8016
|
const Dn = "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==";
|
|
@@ -8044,20 +8044,20 @@ class In extends Et {
|
|
|
8044
8044
|
}, [g, B, l] = mA(t);
|
|
8045
8045
|
if (!g)
|
|
8046
8046
|
return "";
|
|
8047
|
-
const
|
|
8048
|
-
g.appendChild(
|
|
8049
|
-
let
|
|
8050
|
-
A ? (
|
|
8047
|
+
const C = v("defs");
|
|
8048
|
+
g.appendChild(C), pA(g, C, t);
|
|
8049
|
+
let d, E, w, u;
|
|
8050
|
+
A ? (d = B * 0.25 * (1 + 0.1), E = l / 2 * (1 + 0.1), w = l * 0.22, u = B * 0.32) : (d = B * 0.22 * (1 + 0.1), E = l * 0.8, w = l * 0.067, u = B * 0.33);
|
|
8051
8051
|
const h = v("g");
|
|
8052
8052
|
g.appendChild(h), h.setAttribute("transform", `translate(${w} ${u}) rotate(-10)`);
|
|
8053
|
-
const I = ht(
|
|
8053
|
+
const I = ht(d, E);
|
|
8054
8054
|
I.setAttribute("opacity", "0"), h.appendChild(I);
|
|
8055
8055
|
const D = v("g");
|
|
8056
8056
|
h.appendChild(D);
|
|
8057
8057
|
const m = r();
|
|
8058
8058
|
D.appendChild(m);
|
|
8059
8059
|
const Q = Bt(o);
|
|
8060
|
-
return ut(D, Q,
|
|
8060
|
+
return ut(D, Q, d, E), g.outerHTML;
|
|
8061
8061
|
}
|
|
8062
8062
|
// 1 if true, 0 if false.
|
|
8063
8063
|
}
|
|
@@ -8090,12 +8090,12 @@ class Fn extends Et {
|
|
|
8090
8090
|
return M.classList.add("module-layer3"), I.appendChild(M), M.setAttribute("fill", "white"), M.innerHTML = s, new Qt(I).transform(([N, x]) => [N, x + (r / 2 - N) ** 2 / (r * 6)]), I;
|
|
8091
8091
|
}, l = v("g");
|
|
8092
8092
|
l.classList.add("module-root");
|
|
8093
|
-
const
|
|
8094
|
-
l.appendChild(
|
|
8095
|
-
const
|
|
8096
|
-
|
|
8093
|
+
const C = v("defs");
|
|
8094
|
+
l.appendChild(C);
|
|
8095
|
+
const d = v("g");
|
|
8096
|
+
d.classList.add("module-bounds"), l.appendChild(d);
|
|
8097
8097
|
const E = ht(t.height, t.width);
|
|
8098
|
-
E.setAttribute("opacity", "0"),
|
|
8098
|
+
E.setAttribute("opacity", "0"), d.appendChild(E);
|
|
8099
8099
|
const w = v("g");
|
|
8100
8100
|
w.classList.add("module-text-enclosure"), l.appendChild(w);
|
|
8101
8101
|
const u = B();
|
|
@@ -8108,7 +8108,7 @@ async function fA(c) {
|
|
|
8108
8108
|
if (c === "Favourites")
|
|
8109
8109
|
return new pn();
|
|
8110
8110
|
if (c === "Maltesers") {
|
|
8111
|
-
const e =
|
|
8111
|
+
const e = _("https://assets.spiff.com.au/public/modules/img/MaltesersBackground.svg"), t = _("https://assets.spiff.com.au/public/modules/img/MaltesersBackgroundShort.svg"), A = await Promise.all([e, t]);
|
|
8112
8112
|
return new In(A[0], A[1]);
|
|
8113
8113
|
}
|
|
8114
8114
|
if (c === "Vegemite")
|
|
@@ -8130,7 +8130,7 @@ class kt extends lA {
|
|
|
8130
8130
|
}
|
|
8131
8131
|
}
|
|
8132
8132
|
class Mn {
|
|
8133
|
-
constructor(e, t, A, a, n, i, s, o, r, g, B, l,
|
|
8133
|
+
constructor(e, t, A, a, n, i, s, o, r, g, B, l, C = !1, d, E = !1, w = !1, u = !1) {
|
|
8134
8134
|
this.workflowStatePromiseQueue = new BA(1), this.initialized = !1, this.readOnly = !1, this.isReloadedTransaction = !1, this.singleVariantsRenderable = !1, this.renderLayouts = () => {
|
|
8135
8135
|
var D;
|
|
8136
8136
|
if (!this.previewService)
|
|
@@ -8139,7 +8139,7 @@ class Mn {
|
|
|
8139
8139
|
if (I)
|
|
8140
8140
|
for (const [, m] of I)
|
|
8141
8141
|
m.render(h);
|
|
8142
|
-
}, this.experience = e, this.client = t, this.updateTransaction = s, this.commandContext = i, this.reloadedState = l, this.transaction = o, this.readOnly =
|
|
8142
|
+
}, this.experience = e, this.client = t, this.updateTransaction = s, this.commandContext = i, this.reloadedState = l, this.transaction = o, this.readOnly = C, this.singleVariantsRenderable = w, this.confirmedDesign = !1, this.editedSteps = {}, this.informationResults = [], this.mandatorySteps = {}, this.pendingUpdates = [], this.selectionCost = 0, this.workflow = A, this.stepSpecificServices = {}, this.profanityFilter = a, this.pollers = [], this.allScenes = [], this.layouts = n, this.product = r, this.previewService = g, this.modelContainer = d, this.stepElements = {}, this.stepInitialised = {}, this.stepMetadata = {}, this.stepSelections = {}, this.storage = {}, this.validationErrors = { steps: /* @__PURE__ */ new Map() }, this.confirmCallbacks = [], this.editedCallbacks = [], this.elementsCallbacks = [], this.informationResultCallbacks = [], this.initCallbacks = [], this.mandatoryCallbacks = [], this.makingAdjustmentsCallback = [], this.metadataCallbacks = [], this.selectionCallbacks = [], this.stepSpecificStorageCallbacks = {}, this.storageCallbacks = [], this.validationCallbacks = [], this.currentAdjustingStepId = "", this.renderableContextService = B, this.isReloadedTransaction = E, u && (this.workflowStatePromiseQueue.enabled = !1), this.initializationPromise = this.initializeDefaultWorkflowState(A), this.initializationPromise.then(() => {
|
|
8143
8143
|
this.initialized = !0;
|
|
8144
8144
|
}), this.initializationPromise.catch((h) => {
|
|
8145
8145
|
throw console.error(h), this.initialized = !1, new Error("Workflow initialization failed due to an error. See console.");
|
|
@@ -8161,7 +8161,7 @@ class Mn {
|
|
|
8161
8161
|
this.reloadedState && this.reloadedState.serializableWorkflow.steps.forEach((s) => {
|
|
8162
8162
|
this.storage[s.stepName] = s.storage || {};
|
|
8163
8163
|
}), this.allScenes = await za(e);
|
|
8164
|
-
const a =
|
|
8164
|
+
const a = oe(this.allScenes, this.stepSelections).map((s) => s.silentSteps).flat(), { stepElements: n, commands: i } = await this.stepElementsForIntroducedSilentSteps(a, !!this.reloadedState);
|
|
8165
8165
|
this.commandContext.apply(new k(i), !0), this.stepElements = { ...this.stepElements, ...n }, await this.ensureStepsAreLoaded(), !this.isReloadedTransaction && this.updateStateWithServer(), this.renderLayouts(), this.reloadedState && t();
|
|
8166
8166
|
}
|
|
8167
8167
|
getWorkflowExperience() {
|
|
@@ -8358,7 +8358,7 @@ class Mn {
|
|
|
8358
8358
|
},
|
|
8359
8359
|
{ refocusCamera: t }
|
|
8360
8360
|
);
|
|
8361
|
-
this.setModelContainer(A),
|
|
8361
|
+
this.setModelContainer(A), oe(this.allScenes, this.stepSelections).filter((i) => i).map((i) => i.renderableSteps).flat().filter((i) => i.type === F.Model || i.type === F.Material).forEach((i) => {
|
|
8362
8362
|
var r, g, B;
|
|
8363
8363
|
if (!((r = i.option) != null && r.id)) {
|
|
8364
8364
|
console.error(`Failed to read option id from step: ${i.stepName}`);
|
|
@@ -8378,14 +8378,14 @@ class Mn {
|
|
|
8378
8378
|
console.error(`Failed to read model url from variant: ${o.id} for step: ${i.stepName}`);
|
|
8379
8379
|
return;
|
|
8380
8380
|
}
|
|
8381
|
-
const
|
|
8381
|
+
const C = i.data;
|
|
8382
8382
|
this.modelContainer.applyModelVariant(
|
|
8383
8383
|
i.stepName,
|
|
8384
8384
|
{
|
|
8385
8385
|
model: l,
|
|
8386
8386
|
contextService: this.getLayoutPreviewService()
|
|
8387
8387
|
},
|
|
8388
|
-
|
|
8388
|
+
C.replaceProductModel || !1
|
|
8389
8389
|
);
|
|
8390
8390
|
} else {
|
|
8391
8391
|
const l = o.material;
|
|
@@ -8393,12 +8393,12 @@ class Mn {
|
|
|
8393
8393
|
console.error(`Failed to read material from variant: ${o.id} for step: ${i.stepName}`);
|
|
8394
8394
|
return;
|
|
8395
8395
|
}
|
|
8396
|
-
i.data.targetMaterials.forEach((
|
|
8396
|
+
i.data.targetMaterials.forEach((d) => {
|
|
8397
8397
|
if (!this.modelContainer)
|
|
8398
8398
|
throw new b(
|
|
8399
8399
|
"We should always have a model container when injecting a preview!"
|
|
8400
8400
|
);
|
|
8401
|
-
this.modelContainer.applyMaterialVariant(
|
|
8401
|
+
this.modelContainer.applyMaterialVariant(d, i.option.id, l);
|
|
8402
8402
|
});
|
|
8403
8403
|
}
|
|
8404
8404
|
}), await A.getInitializationPromise(), this.renderLayouts();
|
|
@@ -8569,7 +8569,7 @@ class Mn {
|
|
|
8569
8569
|
async reset() {
|
|
8570
8570
|
this.commandContext.getAllLayouts().forEach(
|
|
8571
8571
|
(t) => t.layoutState.elements.forEach((A) => {
|
|
8572
|
-
this.getCommandDispatcher()(new
|
|
8572
|
+
this.getCommandDispatcher()(new Ae(A.id));
|
|
8573
8573
|
})
|
|
8574
8574
|
), this.stepElements = {}, this.stepInitialised = {}, this.stepMetadata = {}, this.stepSelections = {}, this.storage = {}, await this.ensureStepsAreLoaded();
|
|
8575
8575
|
}
|
|
@@ -8582,16 +8582,16 @@ class Mn {
|
|
|
8582
8582
|
}, this.selectionCost = Object.values(this.stepSelections).reduce((Q, p) => Q + p.selectedVariants.map((y) => y.priceModifier || 0).reduce((y, M) => y + M, 0), 0), this.workflow.steps.forEach((Q) => {
|
|
8583
8583
|
re(Q, this.stepSelections) || (this.stepInitialised[Q.stepName] = !1, delete this.stepMetadata[Q.stepName], delete this.stepSelections[Q.stepName], delete this.storage[Q.stepName]);
|
|
8584
8584
|
});
|
|
8585
|
-
const i = this.allScenes, s =
|
|
8585
|
+
const i = this.allScenes, s = oe(i, n), o = oe(i, this.stepSelections), r = s.map((Q) => Q.silentSteps).flat(), B = o.map((Q) => Q.silentSteps).flat().filter(
|
|
8586
8586
|
(Q) => !r.some((p) => p.stepName === Q.stepName)
|
|
8587
8587
|
);
|
|
8588
8588
|
r.forEach((Q) => {
|
|
8589
8589
|
re(Q, this.stepSelections) || (this.stepInitialised[Q.stepName] = !1);
|
|
8590
8590
|
});
|
|
8591
|
-
const l = this.getInvalidCanvasRegions(), { stepElements:
|
|
8591
|
+
const l = this.getInvalidCanvasRegions(), { stepElements: C, commands: d } = await this.stepElementsForIntroducedSilentSteps(B, !1);
|
|
8592
8592
|
this.stepElements = {
|
|
8593
8593
|
...this.stepElements,
|
|
8594
|
-
...
|
|
8594
|
+
...C,
|
|
8595
8595
|
[e]: A
|
|
8596
8596
|
}, this.removeElements(l);
|
|
8597
8597
|
const E = this.workflow.steps.find((Q) => Q.stepName === e);
|
|
@@ -8599,7 +8599,7 @@ class Mn {
|
|
|
8599
8599
|
const Q = this.getStepSpecificServices(e);
|
|
8600
8600
|
(m = Q == null ? void 0 : Q.frameService) == null || m.setTargetElements(A.map((p) => p.id));
|
|
8601
8601
|
}
|
|
8602
|
-
const w = l.map((Q) => new
|
|
8602
|
+
const w = l.map((Q) => new Ae(Q.id)), u = new Mt(this.constructSerializableWorkflow()), h = [...d, ...w, u];
|
|
8603
8603
|
h.length > 0 && this.commandContext.apply(new k(h), !0), await this.ensureStepsAreLoaded(), this.onElementsChange();
|
|
8604
8604
|
const I = this.getInvalidModelVariants(), D = this.modelContainer;
|
|
8605
8605
|
if (D) {
|
|
@@ -8617,13 +8617,13 @@ class Mn {
|
|
|
8617
8617
|
await this.onSelectionChange(), a && await a();
|
|
8618
8618
|
}
|
|
8619
8619
|
async ensureStepsAreLoaded() {
|
|
8620
|
-
const t =
|
|
8620
|
+
const t = oe(this.allScenes, this.stepSelections).map((o) => o.renderableSteps), A = [], a = t.flat();
|
|
8621
8621
|
for (const o of a)
|
|
8622
8622
|
if (!this.stepInitialised[o.stepName])
|
|
8623
8623
|
switch (this.stepInitialised[o.stepName] = !0, o.type) {
|
|
8624
8624
|
case F.DigitalContent:
|
|
8625
8625
|
A.push(
|
|
8626
|
-
|
|
8626
|
+
dA.init(
|
|
8627
8627
|
o,
|
|
8628
8628
|
this,
|
|
8629
8629
|
this.reloadedState
|
|
@@ -8636,7 +8636,7 @@ class Mn {
|
|
|
8636
8636
|
r.connectWorkflowManager(this, o.stepName), this.stepSpecificServices[o.stepName] = {
|
|
8637
8637
|
frameService: r
|
|
8638
8638
|
}, A.push(
|
|
8639
|
-
|
|
8639
|
+
te.init(o, this, this.reloadedState)
|
|
8640
8640
|
);
|
|
8641
8641
|
}
|
|
8642
8642
|
break;
|
|
@@ -9218,10 +9218,10 @@ class vn extends X {
|
|
|
9218
9218
|
* @param userInput Input from the user.
|
|
9219
9219
|
*/
|
|
9220
9220
|
setText(e) {
|
|
9221
|
-
var
|
|
9221
|
+
var C, d;
|
|
9222
9222
|
const t = {
|
|
9223
9223
|
input: e
|
|
9224
|
-
}, A = V.findLayoutElements(this.manager, this.step), a = V.filterUnsupportedCharacters(e, (
|
|
9224
|
+
}, A = V.findLayoutElements(this.manager, this.step), a = V.filterUnsupportedCharacters(e, (C = A[0]) == null ? void 0 : C.fontData);
|
|
9225
9225
|
!!this.step.data && !!this.step.data.maxLength && a.length > this.step.data.maxLength || (t.input = a);
|
|
9226
9226
|
const i = A.length <= 0, s = i ? { inputText: a, text: a } : { inputText: a };
|
|
9227
9227
|
if (this.manager.updateStorage(this.step.stepName, s), this.manager.updateMetadata(this.step.stepName, {
|
|
@@ -9235,7 +9235,7 @@ class vn extends X {
|
|
|
9235
9235
|
this.manager
|
|
9236
9236
|
);
|
|
9237
9237
|
o && this.manager.getCommandDispatcher()(o);
|
|
9238
|
-
const B = this.manager.getInformationResults(), l = (
|
|
9238
|
+
const B = this.manager.getInformationResults(), l = (d = r[0]) == null ? void 0 : d.localizationKey;
|
|
9239
9239
|
if (l)
|
|
9240
9240
|
this.manager.setInformationResults([
|
|
9241
9241
|
...B,
|
|
@@ -9337,7 +9337,7 @@ class Un extends X {
|
|
|
9337
9337
|
* @returns The final URL string for the QR code.
|
|
9338
9338
|
*/
|
|
9339
9339
|
async selectVideo(e) {
|
|
9340
|
-
return
|
|
9340
|
+
return dA.regenerateQRCode(
|
|
9341
9341
|
this.manager.getRegionElements(this.step.stepName),
|
|
9342
9342
|
e.key,
|
|
9343
9343
|
this.manager,
|
|
@@ -9599,9 +9599,9 @@ const Jn = async (c) => {
|
|
|
9599
9599
|
}
|
|
9600
9600
|
return a;
|
|
9601
9601
|
}, MA = (c, e, t, A, a, n, i, s) => {
|
|
9602
|
-
var
|
|
9603
|
-
const o = e.basePrice || 0, r = c.priceModifierTotal || 0, g = On(A, t, void 0, n), l = (Y.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(c.id),
|
|
9604
|
-
additionalExternalProductId: (
|
|
9602
|
+
var d, E;
|
|
9603
|
+
const o = e.basePrice || 0, r = c.priceModifierTotal || 0, g = On(A, t, void 0, n), l = (Y.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(c.id), C = {
|
|
9604
|
+
additionalExternalProductId: (d = c.integrationProduct) == null ? void 0 : d.additionalExternalProductId,
|
|
9605
9605
|
additionalExternalVariantId: (E = c.integrationProduct) == null ? void 0 : E.additionalExternalVariantId,
|
|
9606
9606
|
baseCost: o,
|
|
9607
9607
|
designExternalVariants: c.designExternalVariants,
|
|
@@ -9621,7 +9621,7 @@ const Jn = async (c) => {
|
|
|
9621
9621
|
workflowViewerLink: c.workflowViewerLink || "",
|
|
9622
9622
|
workflowViewerReadOnlyLink: c.workflowViewerReadOnlyLink || ""
|
|
9623
9623
|
};
|
|
9624
|
-
return n && (
|
|
9624
|
+
return n && (C.metadata = n), A && (C.selectedVariants = A), a && (C.sku = a), C;
|
|
9625
9625
|
}, SA = async (c, e, t, A, a, n, i, s, o, r) => {
|
|
9626
9626
|
var y;
|
|
9627
9627
|
await (async () => {
|
|
@@ -9642,7 +9642,7 @@ const Jn = async (c) => {
|
|
|
9642
9642
|
x.errors && console.log("Server Error:", T.message);
|
|
9643
9643
|
}), null) : R ?? null;
|
|
9644
9644
|
})() || (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"));
|
|
9645
|
-
const l = c.getPreviewService(),
|
|
9645
|
+
const l = c.getPreviewService(), C = (y = e == null ? void 0 : e.finalizeStepConfig) == null ? void 0 : y.lookAtAnimation, d = l && e.showModelOnFinishStep && !!C, E = o && st(o, e, !0), w = o && st(o, e, !1), u = async (M) => {
|
|
9646
9646
|
const S = {};
|
|
9647
9647
|
let N = 0;
|
|
9648
9648
|
if (Object.keys(n).length > 0)
|
|
@@ -9676,7 +9676,7 @@ const Jn = async (c) => {
|
|
|
9676
9676
|
D[M].map((S) => S.id)
|
|
9677
9677
|
])
|
|
9678
9678
|
);
|
|
9679
|
-
let Q = await s(
|
|
9679
|
+
let Q = await s(d, a.id);
|
|
9680
9680
|
if (Q) {
|
|
9681
9681
|
const M = await (await fetch(Q)).blob();
|
|
9682
9682
|
Q = (await U.uploadAsset(
|
|
@@ -9696,7 +9696,7 @@ const Jn = async (c) => {
|
|
|
9696
9696
|
})),
|
|
9697
9697
|
workflowId: e.id,
|
|
9698
9698
|
transactionId: a.id,
|
|
9699
|
-
useThreeDimPreview: !!
|
|
9699
|
+
useThreeDimPreview: !!d,
|
|
9700
9700
|
previewImage: Q
|
|
9701
9701
|
};
|
|
9702
9702
|
if (w) {
|
|
@@ -9719,7 +9719,7 @@ const Jn = async (c) => {
|
|
|
9719
9719
|
}, Ln = async (c, e, t, A, a, n, i, s, o, r, g) => {
|
|
9720
9720
|
var u, h;
|
|
9721
9721
|
o("workflow.steps.finish.finalize.buildingLayouts");
|
|
9722
|
-
const { designDetails: B, cartSelectionsWithPrices: l, cartMetadata:
|
|
9722
|
+
const { designDetails: B, cartSelectionsWithPrices: l, cartMetadata: C } = await SA(
|
|
9723
9723
|
c,
|
|
9724
9724
|
e,
|
|
9725
9725
|
t,
|
|
@@ -9731,20 +9731,20 @@ const Jn = async (c) => {
|
|
|
9731
9731
|
g
|
|
9732
9732
|
);
|
|
9733
9733
|
o("workflow.steps.finish.finalize.creatingDesign");
|
|
9734
|
-
const
|
|
9735
|
-
if (!(
|
|
9734
|
+
const d = await Jn(B), E = (u = d == null ? void 0 : d.transaction) == null ? void 0 : u.previewImageLink;
|
|
9735
|
+
if (!(d != null && d.transaction))
|
|
9736
9736
|
throw new Error("Failed to create design");
|
|
9737
9737
|
o("workflow.steps.finish.finalize.updatingTransaction");
|
|
9738
|
-
const w =
|
|
9738
|
+
const w = d.transaction;
|
|
9739
9739
|
return MA(
|
|
9740
9740
|
w,
|
|
9741
9741
|
a,
|
|
9742
9742
|
e,
|
|
9743
9743
|
l,
|
|
9744
|
-
|
|
9745
|
-
|
|
9744
|
+
d == null ? void 0 : d.sku,
|
|
9745
|
+
C,
|
|
9746
9746
|
E,
|
|
9747
|
-
(h =
|
|
9747
|
+
(h = d == null ? void 0 : d.processExecution) == null ? void 0 : h.id
|
|
9748
9748
|
);
|
|
9749
9749
|
}, zn = async (c, e, t) => {
|
|
9750
9750
|
e("workflow.steps.finish.finalize.buildingLayouts"), await Promise.all(
|
|
@@ -9981,16 +9981,16 @@ class Se {
|
|
|
9981
9981
|
y: 0,
|
|
9982
9982
|
width: g.layoutState.layout.width,
|
|
9983
9983
|
height: g.layoutState.layout.height
|
|
9984
|
-
}, l = this.commandContext.getLayoutById(g.layoutState.layout.id),
|
|
9985
|
-
if (!
|
|
9984
|
+
}, l = this.commandContext.getLayoutById(g.layoutState.layout.id), C = i.getContext("2d");
|
|
9985
|
+
if (!C)
|
|
9986
9986
|
throw new Ke("Failed to obtain 2D context for preview image creation");
|
|
9987
|
-
const
|
|
9987
|
+
const d = Lt(l.layoutState.layout, l.layoutState.elements, {
|
|
9988
9988
|
renderingConfiguration: {
|
|
9989
9989
|
purpose: zt.Print,
|
|
9990
9990
|
region: { left: B.x, top: B.y, width: B.width, height: B.height }
|
|
9991
9991
|
}
|
|
9992
|
-
}), E = Kt(
|
|
9993
|
-
await (await Zt.from(
|
|
9992
|
+
}), E = Kt(d);
|
|
9993
|
+
await (await Zt.from(C, E, {
|
|
9994
9994
|
anonymousCrossOrigin: !0,
|
|
9995
9995
|
ignoreDimensions: !1,
|
|
9996
9996
|
createCanvas: Ue,
|
|
@@ -10086,17 +10086,17 @@ class Se {
|
|
|
10086
10086
|
i.forEach((r) => {
|
|
10087
10087
|
const g = /* @__PURE__ */ new Set(), B = r.getRaw().globalPropertyAspectConfigurations;
|
|
10088
10088
|
B !== void 0 && (B.forEach((l) => g.add(JSON.stringify(l))), s.forEach((l) => {
|
|
10089
|
-
const
|
|
10090
|
-
|
|
10091
|
-
const E = o(
|
|
10089
|
+
const C = l.getRaw().globalPropertyAspectConfigurations;
|
|
10090
|
+
C !== void 0 && C.forEach((d) => {
|
|
10091
|
+
const E = o(d), w = g.has(JSON.stringify(d));
|
|
10092
10092
|
if (w && (E == null ? void 0 : E.getType()) === "Option") {
|
|
10093
10093
|
const u = l.getCurrentVariant();
|
|
10094
10094
|
if (!u)
|
|
10095
10095
|
return;
|
|
10096
|
-
r.selectVariant(u), g.delete(JSON.stringify(
|
|
10096
|
+
r.selectVariant(u), g.delete(JSON.stringify(d));
|
|
10097
10097
|
} else if (w && (E == null ? void 0 : E.getType()) === "Text") {
|
|
10098
10098
|
const u = l.getText();
|
|
10099
|
-
r.setText(u), g.delete(JSON.stringify(
|
|
10099
|
+
r.setText(u), g.delete(JSON.stringify(d));
|
|
10100
10100
|
}
|
|
10101
10101
|
});
|
|
10102
10102
|
}));
|
|
@@ -10278,29 +10278,29 @@ const Wn = [
|
|
|
10278
10278
|
], Xn = async (c, e, t) => {
|
|
10279
10279
|
const A = e.data, a = t.data.baseUrl, n = A.assetUrl.replace("localhost", "localstack"), i = a.slice(0, 4) === "http" ? "" : "https://", s = new URL(i + a);
|
|
10280
10280
|
s.searchParams.append("video", St(JSON.stringify([{ href: n }]))), s.pathname = s.pathname + (s.pathname.slice(-1) === "/" ? "" : "/");
|
|
10281
|
-
const o = s.toString(), g = `data:image/svg+xml;base64,${St(await eA(o, { type: "svg" }))}`, B = (
|
|
10282
|
-
const
|
|
10283
|
-
if (!
|
|
10284
|
-
throw new z(
|
|
10281
|
+
const o = s.toString(), g = `data:image/svg+xml;base64,${St(await eA(o, { type: "svg" }))}`, B = (C) => {
|
|
10282
|
+
const d = c.find((w) => w.panelId === C.panelId);
|
|
10283
|
+
if (!d)
|
|
10284
|
+
throw new z(C);
|
|
10285
10285
|
const E = J();
|
|
10286
10286
|
return new O(
|
|
10287
10287
|
{
|
|
10288
10288
|
id: E,
|
|
10289
10289
|
src: g,
|
|
10290
10290
|
type: G.Image,
|
|
10291
|
-
y:
|
|
10292
|
-
x:
|
|
10293
|
-
width:
|
|
10294
|
-
height:
|
|
10291
|
+
y: C.top,
|
|
10292
|
+
x: C.left,
|
|
10293
|
+
width: C.width,
|
|
10294
|
+
height: C.height,
|
|
10295
10295
|
rotation: 0
|
|
10296
10296
|
},
|
|
10297
|
-
|
|
10297
|
+
d
|
|
10298
10298
|
);
|
|
10299
10299
|
}, l = t.data.regions;
|
|
10300
10300
|
try {
|
|
10301
10301
|
return l.map(B);
|
|
10302
|
-
} catch (
|
|
10303
|
-
return console.error(
|
|
10302
|
+
} catch (C) {
|
|
10303
|
+
return console.error(C), [];
|
|
10304
10304
|
}
|
|
10305
10305
|
}, qn = async (c, e, t, A) => {
|
|
10306
10306
|
const a = t.data, n = a.assetUrl, i = await tt(n);
|
|
@@ -10315,10 +10315,10 @@ const Wn = [
|
|
|
10315
10315
|
height: 1
|
|
10316
10316
|
},
|
|
10317
10317
|
(E = s == null ? void 0 : s.asset) == null ? void 0 : E.fileLink
|
|
10318
|
-
), B = await rt(g), l = J(),
|
|
10319
|
-
if (!
|
|
10318
|
+
), B = await rt(g), l = J(), C = c.find((w) => w.panelId === r.panelId);
|
|
10319
|
+
if (!C)
|
|
10320
10320
|
throw new z(r);
|
|
10321
|
-
const
|
|
10321
|
+
const d = ct(i, B, {
|
|
10322
10322
|
scale: a.scale,
|
|
10323
10323
|
left: a.x,
|
|
10324
10324
|
top: a.y
|
|
@@ -10346,9 +10346,9 @@ const Wn = [
|
|
|
10346
10346
|
scaleY: r.height / B.height,
|
|
10347
10347
|
pattern: void 0
|
|
10348
10348
|
},
|
|
10349
|
-
|
|
10349
|
+
C
|
|
10350
10350
|
),
|
|
10351
|
-
new Ot(l, i,
|
|
10351
|
+
new Ot(l, i, d)
|
|
10352
10352
|
];
|
|
10353
10353
|
};
|
|
10354
10354
|
return (await Promise.all(A.data.regions.map((r) => o(r)))).flat();
|
|
@@ -10369,12 +10369,12 @@ const Wn = [
|
|
|
10369
10369
|
const s = (Q = i.asset) == null ? void 0 : Q.fileLink;
|
|
10370
10370
|
if (!s)
|
|
10371
10371
|
return console.error(`No asset link for variant with ID: ${a.illustrationVariantId}`), [];
|
|
10372
|
-
const o = await
|
|
10373
|
-
if (!
|
|
10372
|
+
const o = await _(s, !0), r = /<svg.*?<\/svg>/s, g = o.match(r) || [], B = (g == null ? void 0 : g.length) > 0 ? g[0] : "", d = Wt().parseFromString(B, "image/svg+xml").firstElementChild;
|
|
10373
|
+
if (!d)
|
|
10374
10374
|
return console.error("Failed to read SVG."), [];
|
|
10375
|
-
Xt(
|
|
10375
|
+
Xt(d);
|
|
10376
10376
|
const E = {};
|
|
10377
|
-
ta(
|
|
10377
|
+
ta(d, (p) => {
|
|
10378
10378
|
Wn.includes(p.tagName) && !p.attributes.getNamedItem("fill") && p.setAttribute("fill", "#000000");
|
|
10379
10379
|
const y = p.attributes.getNamedItem("fill");
|
|
10380
10380
|
if (y && y.value !== "none") {
|
|
@@ -10387,7 +10387,7 @@ const Wn = [
|
|
|
10387
10387
|
p.classList.add(x), E[x] = { browserValue: S };
|
|
10388
10388
|
}
|
|
10389
10389
|
});
|
|
10390
|
-
const u = qt().serializeToString(
|
|
10390
|
+
const u = qt().serializeToString(d), h = a.colors;
|
|
10391
10391
|
if (h) {
|
|
10392
10392
|
for (const [p, y] of Object.entries(E))
|
|
10393
10393
|
for (const M of Object.keys(h))
|
|
@@ -10469,13 +10469,13 @@ const Wn = [
|
|
|
10469
10469
|
if (!s)
|
|
10470
10470
|
return console.error(`No asset link for variant with ID: ${a.pictureVariantId}`), [];
|
|
10471
10471
|
const o = (l) => {
|
|
10472
|
-
const
|
|
10473
|
-
if (!
|
|
10472
|
+
const C = c.find((E) => E.panelId === l.panelId);
|
|
10473
|
+
if (!C)
|
|
10474
10474
|
throw new z(l);
|
|
10475
|
-
const
|
|
10475
|
+
const d = J();
|
|
10476
10476
|
return new O(
|
|
10477
10477
|
{
|
|
10478
|
-
id:
|
|
10478
|
+
id: d,
|
|
10479
10479
|
src: s,
|
|
10480
10480
|
type: G.Image,
|
|
10481
10481
|
y: l.top,
|
|
@@ -10488,7 +10488,7 @@ const Wn = [
|
|
|
10488
10488
|
immutable: l.immutable,
|
|
10489
10489
|
preserveAspectRatio: "none"
|
|
10490
10490
|
},
|
|
10491
|
-
|
|
10491
|
+
C
|
|
10492
10492
|
);
|
|
10493
10493
|
}, r = A.data.regions;
|
|
10494
10494
|
try {
|
|
@@ -10529,10 +10529,10 @@ const Wn = [
|
|
|
10529
10529
|
fill="${i == null ? void 0 : i.color}"
|
|
10530
10530
|
/>
|
|
10531
10531
|
</svg>
|
|
10532
|
-
`,
|
|
10532
|
+
`, d = { "spiff-fill-shape": { browserValue: i.color || "#000000" } }, E = J();
|
|
10533
10533
|
return new O(
|
|
10534
10534
|
{
|
|
10535
|
-
colors:
|
|
10535
|
+
colors: d,
|
|
10536
10536
|
id: E,
|
|
10537
10537
|
svg: l,
|
|
10538
10538
|
type: G.Illustration,
|
|
@@ -10587,17 +10587,17 @@ const Wn = [
|
|
|
10587
10587
|
console.error(r);
|
|
10588
10588
|
}
|
|
10589
10589
|
else {
|
|
10590
|
-
const r = await
|
|
10591
|
-
const l = /<svg.*?<\/svg>/s,
|
|
10590
|
+
const r = await _(n, !0), g = (B) => {
|
|
10591
|
+
const l = /<svg.*?<\/svg>/s, C = B.match(l) || [], d = (C == null ? void 0 : C.length) > 0 ? C[0] : "", u = Wt().parseFromString(d, "image/svg+xml").firstElementChild;
|
|
10592
10592
|
if (!u)
|
|
10593
|
-
throw new
|
|
10593
|
+
throw new de("Failed to read SVG.");
|
|
10594
10594
|
return Xt(u), qt().serializeToString(u);
|
|
10595
10595
|
};
|
|
10596
10596
|
o.forEach((B) => {
|
|
10597
|
-
const l = c.find((
|
|
10597
|
+
const l = c.find((d) => d.panelId === B.panelId);
|
|
10598
10598
|
if (!l)
|
|
10599
10599
|
throw new z(B);
|
|
10600
|
-
const
|
|
10600
|
+
const C = {
|
|
10601
10601
|
id: J(),
|
|
10602
10602
|
src: n,
|
|
10603
10603
|
asset_key: n,
|
|
@@ -10616,7 +10616,7 @@ const Wn = [
|
|
|
10616
10616
|
productOverlay: e.type === F.ProductOverlay ? !0 : void 0,
|
|
10617
10617
|
excludeFromExport: e.data.excludeFromPrint
|
|
10618
10618
|
};
|
|
10619
|
-
A.push(new O(
|
|
10619
|
+
A.push(new O(C, l));
|
|
10620
10620
|
});
|
|
10621
10621
|
}
|
|
10622
10622
|
return A;
|
|
@@ -10645,13 +10645,13 @@ const Wn = [
|
|
|
10645
10645
|
})(), B = (A.data.replaceableText ? A.data.replaceableText.replace("{{}}", n.text) : n.text) || "", l = At(B, {
|
|
10646
10646
|
vertical: A.data.vertical,
|
|
10647
10647
|
uppercase: A.data.uppercase
|
|
10648
|
-
}),
|
|
10648
|
+
}), C = async (w) => {
|
|
10649
10649
|
const u = w.colorOption;
|
|
10650
10650
|
if (!u)
|
|
10651
10651
|
return;
|
|
10652
10652
|
const h = j.getDefaultVariant(u);
|
|
10653
10653
|
return h == null ? void 0 : h.color;
|
|
10654
|
-
},
|
|
10654
|
+
}, d = n.color || await C(A.data), E = A.data.regions;
|
|
10655
10655
|
for (const w of E) {
|
|
10656
10656
|
const u = c.find((I) => I.panelId === w.panelId);
|
|
10657
10657
|
if (!u)
|
|
@@ -10661,7 +10661,7 @@ const Wn = [
|
|
|
10661
10661
|
id: J(),
|
|
10662
10662
|
align: s(A.data),
|
|
10663
10663
|
curved: A.data.curved,
|
|
10664
|
-
fill: n.color ||
|
|
10664
|
+
fill: n.color || d || "#000000",
|
|
10665
10665
|
fontData: g,
|
|
10666
10666
|
fontSize: A.data.size || i,
|
|
10667
10667
|
height: w.height,
|
|
@@ -10907,14 +10907,14 @@ class ri extends lA {
|
|
|
10907
10907
|
* a loose target but should be kept in mind when making changes.
|
|
10908
10908
|
*/
|
|
10909
10909
|
async execute() {
|
|
10910
|
-
const e = this.layouts.find((
|
|
10910
|
+
const e = this.layouts.find((C) => C.layoutState.layout.id === this.layoutId);
|
|
10911
10911
|
if (!e)
|
|
10912
10912
|
return;
|
|
10913
10913
|
const t = e.layoutState.elements || [], A = e.layoutState.layout.width, a = e.layoutState.layout.height, n = A === 1 || a === 1 ? { width: 1, height: 1 } : this.getDynamicTextureResolution(), i = n.width, s = n.height;
|
|
10914
10914
|
let o, r;
|
|
10915
10915
|
if (this.nonPOTSupport) {
|
|
10916
|
-
const
|
|
10917
|
-
A / a <
|
|
10916
|
+
const C = i / s;
|
|
10917
|
+
A / a < C ? (o = i, r = a * (i / A)) : (o = A * (s / a), r = s);
|
|
10918
10918
|
const E = this.resizeFit({ width: o, height: r });
|
|
10919
10919
|
o = E.width, r = E.height;
|
|
10920
10920
|
} else
|
|
@@ -11117,7 +11117,7 @@ const Qs = (c, e) => {
|
|
|
11117
11117
|
}
|
|
11118
11118
|
}
|
|
11119
11119
|
}
|
|
11120
|
-
`,
|
|
11120
|
+
`, Ci = f`
|
|
11121
11121
|
${YA}
|
|
11122
11122
|
query GetProductCollectionProducts($id: String!) {
|
|
11123
11123
|
productCollections(ids: [$id]) {
|
|
@@ -11127,7 +11127,7 @@ const Qs = (c, e) => {
|
|
|
11127
11127
|
}
|
|
11128
11128
|
}
|
|
11129
11129
|
}
|
|
11130
|
-
`,
|
|
11130
|
+
`, di = (c) => f`
|
|
11131
11131
|
${PA(c)}
|
|
11132
11132
|
mutation CreateBundle($collectionId: String, $initialMetadata: [MetadataInput!]) {
|
|
11133
11133
|
bundleCreate(collectionId: $collectionId, metadata: $initialMetadata) {
|
|
@@ -11290,19 +11290,19 @@ class fi {
|
|
|
11290
11290
|
}
|
|
11291
11291
|
async createHandle(e) {
|
|
11292
11292
|
switch (e.type) {
|
|
11293
|
-
case
|
|
11293
|
+
case $.FileUpload:
|
|
11294
11294
|
return new Fi(this.bundle, e);
|
|
11295
|
-
case
|
|
11295
|
+
case $.ColorOption:
|
|
11296
11296
|
return new Gt(
|
|
11297
11297
|
this.bundle,
|
|
11298
11298
|
e,
|
|
11299
11299
|
e.entityId ? await j.getOption(e.entityId) : void 0
|
|
11300
11300
|
);
|
|
11301
|
-
case
|
|
11301
|
+
case $.Option: {
|
|
11302
11302
|
const t = e.entityId ? await j.getOption(e.entityId) : void 0;
|
|
11303
11303
|
return (t == null ? void 0 : t.type) === "Color" ? new Gt(this.bundle, e, t) : new xA(this.bundle, e, t);
|
|
11304
11304
|
}
|
|
11305
|
-
case
|
|
11305
|
+
case $.Text:
|
|
11306
11306
|
return new yi(this.bundle, e);
|
|
11307
11307
|
default:
|
|
11308
11308
|
throw new Error("Unhandled Global Property Aspect Type");
|
|
@@ -11615,12 +11615,16 @@ class Gt extends xA {
|
|
|
11615
11615
|
]);
|
|
11616
11616
|
}
|
|
11617
11617
|
async applyGlobalState(e) {
|
|
11618
|
-
var
|
|
11618
|
+
var n, i, s;
|
|
11619
11619
|
const t = this.getStateValue();
|
|
11620
11620
|
if (!t)
|
|
11621
11621
|
return Promise.resolve();
|
|
11622
|
-
const A = (
|
|
11623
|
-
|
|
11622
|
+
const A = (i = (n = this.optionResource) == null ? void 0 : n.variants) == null ? void 0 : i.find((o) => o.id === t);
|
|
11623
|
+
if (!A)
|
|
11624
|
+
return Promise.resolve();
|
|
11625
|
+
await this.applyColorVariant(new Z(A), e);
|
|
11626
|
+
const a = (s = this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)) == null ? void 0 : s.customColor;
|
|
11627
|
+
a && this.setCustomColor(a);
|
|
11624
11628
|
}
|
|
11625
11629
|
async applyColorVariant(e, t) {
|
|
11626
11630
|
const a = this.getSharedSteps(t).map((n) => {
|
|
@@ -11641,13 +11645,14 @@ class Gt extends xA {
|
|
|
11641
11645
|
* Sets a custom color on the global state.
|
|
11642
11646
|
*/
|
|
11643
11647
|
setCustomColor(e) {
|
|
11644
|
-
this.getSharedSteps().forEach((A) => A.setCustomColor(e));
|
|
11648
|
+
this.getSharedSteps().forEach((A) => A.setCustomColor(e)), this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name, { customColor: e });
|
|
11645
11649
|
}
|
|
11646
11650
|
/**
|
|
11647
11651
|
* Gets the custom color used by the global state.
|
|
11648
11652
|
*/
|
|
11649
11653
|
getCustomColor() {
|
|
11650
|
-
|
|
11654
|
+
var e, t;
|
|
11655
|
+
return ((e = this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)) == null ? void 0 : e.customColor) || ((t = this.getCurrentVariant()) == null ? void 0 : t.getColor()) || "#ffffff";
|
|
11651
11656
|
}
|
|
11652
11657
|
}
|
|
11653
11658
|
const Dt = f`
|
|
@@ -11656,6 +11661,9 @@ const Dt = f`
|
|
|
11656
11661
|
value
|
|
11657
11662
|
type
|
|
11658
11663
|
storage {
|
|
11664
|
+
... on GlobalPropertyStateColorOptionStorage {
|
|
11665
|
+
customColor
|
|
11666
|
+
}
|
|
11659
11667
|
... on GlobalPropertyStateFileUploadStorage {
|
|
11660
11668
|
originalAssetKey
|
|
11661
11669
|
backgroundRemovedAssetKey
|
|
@@ -11765,10 +11773,15 @@ class Pi {
|
|
|
11765
11773
|
const n = a.type && a.storage ? {} : void 0;
|
|
11766
11774
|
if (n)
|
|
11767
11775
|
switch (a.type) {
|
|
11768
|
-
case
|
|
11776
|
+
case $.FileUpload: {
|
|
11769
11777
|
n.fileUpload = a.storage;
|
|
11770
11778
|
break;
|
|
11771
11779
|
}
|
|
11780
|
+
case $.Option:
|
|
11781
|
+
case $.ColorOption: {
|
|
11782
|
+
n.option = a.storage;
|
|
11783
|
+
break;
|
|
11784
|
+
}
|
|
11772
11785
|
}
|
|
11773
11786
|
return {
|
|
11774
11787
|
name: a.name,
|
|
@@ -11939,7 +11952,7 @@ class Ni {
|
|
|
11939
11952
|
if (this.collection.productCollectionProducts)
|
|
11940
11953
|
return this.collection.productCollectionProducts.map((t) => new Ze(t));
|
|
11941
11954
|
const e = await P.getShadowGraphqlClient().query({
|
|
11942
|
-
query:
|
|
11955
|
+
query: Ci,
|
|
11943
11956
|
variables: {
|
|
11944
11957
|
id: this.getId()
|
|
11945
11958
|
},
|
|
@@ -12220,7 +12233,7 @@ class bt {
|
|
|
12220
12233
|
return this.globalPropertyStateManager;
|
|
12221
12234
|
}
|
|
12222
12235
|
async getGlobalPropertyTotalSubunits() {
|
|
12223
|
-
return (await this.globalPropertyHandleService.getHandles()).filter((A) => A.getType() ===
|
|
12236
|
+
return (await this.globalPropertyHandleService.getHandles()).filter((A) => A.getType() === $.Option).map((A) => {
|
|
12224
12237
|
var a;
|
|
12225
12238
|
return ((a = A.getCurrentVariant()) == null ? void 0 : a.getPrice()) || 0;
|
|
12226
12239
|
}).reduce((A, a) => A + a, 0);
|
|
@@ -12624,19 +12637,19 @@ class Ui {
|
|
|
12624
12637
|
* @returns
|
|
12625
12638
|
*/
|
|
12626
12639
|
async execute(e, t, A) {
|
|
12627
|
-
var B, l,
|
|
12640
|
+
var B, l, C;
|
|
12628
12641
|
const n = (l = (B = (await P.getShadowGraphqlClient().mutate({
|
|
12629
12642
|
mutation: Hi,
|
|
12630
12643
|
variables: {
|
|
12631
12644
|
processFlowId: e,
|
|
12632
|
-
inputs: [...t.map((
|
|
12645
|
+
inputs: [...t.map((d) => d.getValueForTransmission())]
|
|
12633
12646
|
}
|
|
12634
12647
|
})).data) == null ? void 0 : B.processExecutionCreate) == null ? void 0 : l.id;
|
|
12635
12648
|
if (!n)
|
|
12636
12649
|
throw new Error("Failed to create process execution.");
|
|
12637
|
-
function i(
|
|
12650
|
+
function i(d) {
|
|
12638
12651
|
return new Promise((E) => {
|
|
12639
|
-
setTimeout(E,
|
|
12652
|
+
setTimeout(E, d);
|
|
12640
12653
|
});
|
|
12641
12654
|
}
|
|
12642
12655
|
let s = !1, o = 0, r, g;
|
|
@@ -12660,15 +12673,15 @@ class Ui {
|
|
|
12660
12673
|
ids: [n]
|
|
12661
12674
|
}
|
|
12662
12675
|
});
|
|
12663
|
-
const
|
|
12664
|
-
if (!r || !
|
|
12676
|
+
const d = (C = r.data) == null ? void 0 : C.processExecutions[0];
|
|
12677
|
+
if (!r || !d)
|
|
12665
12678
|
throw new Error("Failed to retrieve server response for execution.");
|
|
12666
|
-
if (
|
|
12679
|
+
if (d.failedAt)
|
|
12667
12680
|
throw new Error(
|
|
12668
12681
|
"Execution has failed to complete. See Automation > FLows in Flight on partner account on SpiffCommerce Hub."
|
|
12669
12682
|
);
|
|
12670
|
-
if (
|
|
12671
|
-
s = !0, g = new ki(
|
|
12683
|
+
if (d.completedAt) {
|
|
12684
|
+
s = !0, g = new ki(d);
|
|
12672
12685
|
break;
|
|
12673
12686
|
}
|
|
12674
12687
|
o += 1;
|
|
@@ -12952,7 +12965,7 @@ const bi = f`
|
|
|
12952
12965
|
}
|
|
12953
12966
|
`, Li = (c) => f`
|
|
12954
12967
|
${Ie(c)}
|
|
12955
|
-
${
|
|
12968
|
+
${dt}
|
|
12956
12969
|
${iA}
|
|
12957
12970
|
${bi}
|
|
12958
12971
|
${Ji}
|
|
@@ -13463,7 +13476,7 @@ const bi = f`
|
|
|
13463
13476
|
}
|
|
13464
13477
|
}
|
|
13465
13478
|
}
|
|
13466
|
-
`,
|
|
13479
|
+
`, se = async (c) => {
|
|
13467
13480
|
var e;
|
|
13468
13481
|
for (const t in c.layouts) {
|
|
13469
13482
|
const A = c.layouts[t].elements.filter(
|
|
@@ -13540,7 +13553,7 @@ class es {
|
|
|
13540
13553
|
} catch (A) {
|
|
13541
13554
|
throw console.error(A), new H("Critical - Unable to synchronize workflow state with server.");
|
|
13542
13555
|
}
|
|
13543
|
-
}, this.initialized = !1, this.options = e, this.options.applicationKey && ca(this.options.applicationKey), console.debug("------------------------"), console.debug("Spiff Commerce Core SDK"), console.debug("Version: 22.4.
|
|
13556
|
+
}, this.initialized = !1, this.options = e, this.options.applicationKey && ca(this.options.applicationKey), console.debug("------------------------"), console.debug("Spiff Commerce Core SDK"), console.debug("Version: 22.4.4"), console.debug(`Application Key Provided: ${!!this.options.applicationKey}`), console.debug("------------------------");
|
|
13544
13557
|
}
|
|
13545
13558
|
/** @deprecated Use `configure` instead */
|
|
13546
13559
|
configureUrls(e, t, A) {
|
|
@@ -13627,7 +13640,7 @@ class es {
|
|
|
13627
13640
|
* @throws An error if the transaction is not found.
|
|
13628
13641
|
*/
|
|
13629
13642
|
async authenticateTransactionFromLocalStorage(e) {
|
|
13630
|
-
var g, B, l,
|
|
13643
|
+
var g, B, l, C, d, E;
|
|
13631
13644
|
const t = P.getShadowGraphqlClient(), A = await t.query({
|
|
13632
13645
|
query: zi,
|
|
13633
13646
|
errorPolicy: "all",
|
|
@@ -13650,12 +13663,12 @@ class es {
|
|
|
13650
13663
|
if (s != null && s.has(e)) {
|
|
13651
13664
|
const w = s.get(e);
|
|
13652
13665
|
if (w && await this.authenticateCustomerId(w)) {
|
|
13653
|
-
const h = ((
|
|
13666
|
+
const h = ((C = (l = this.customer) == null ? void 0 : l.bundleStakeholders) == null ? void 0 : C.find(
|
|
13654
13667
|
(I) => {
|
|
13655
13668
|
var D, m;
|
|
13656
13669
|
return (m = (D = I.bundle) == null ? void 0 : D.transactions) == null ? void 0 : m.some((Q) => Q.id === e);
|
|
13657
13670
|
}
|
|
13658
|
-
)) || ((E = (
|
|
13671
|
+
)) || ((E = (d = this.customer) == null ? void 0 : d.stakeholders) == null ? void 0 : E.find(
|
|
13659
13672
|
(I) => {
|
|
13660
13673
|
var D;
|
|
13661
13674
|
return ((D = I.transaction) == null ? void 0 : D.id) === e;
|
|
@@ -13802,10 +13815,10 @@ class es {
|
|
|
13802
13815
|
async getNewBundle(e, t, A) {
|
|
13803
13816
|
var r, g, B;
|
|
13804
13817
|
const n = (B = (await P.getShadowGraphqlClient().mutate({
|
|
13805
|
-
mutation:
|
|
13818
|
+
mutation: di(((g = (r = A == null ? void 0 : A.graphql) == null ? void 0 : r.productCollection) == null ? void 0 : g.eagerFetchProducts) || !1),
|
|
13806
13819
|
variables: {
|
|
13807
13820
|
collectionId: e,
|
|
13808
|
-
initialMetadata: t ? Object.entries(t).map((l,
|
|
13821
|
+
initialMetadata: t ? Object.entries(t).map((l, C) => ({ key: l[0], value: l[1] })) : void 0
|
|
13809
13822
|
},
|
|
13810
13823
|
fetchPolicy: "no-cache"
|
|
13811
13824
|
})).data) == null ? void 0 : B.bundleCreate;
|
|
@@ -13845,9 +13858,9 @@ class es {
|
|
|
13845
13858
|
});
|
|
13846
13859
|
if (!((D = l.data) != null && D.bundles) || ((m = l.data) == null ? void 0 : m.bundles.length) === 0 || !((Q = l.data) != null && Q.bundles[0]))
|
|
13847
13860
|
throw new Error(`Unable to find bundle: ${e}`);
|
|
13848
|
-
const
|
|
13849
|
-
|
|
13850
|
-
const E = new bt(this,
|
|
13861
|
+
const C = (p = l.data) == null ? void 0 : p.bundles[0], d = Y.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
13862
|
+
d.set(C.id, C.partner.id), Y.setMap("bundlePartnerIds", d);
|
|
13863
|
+
const E = new bt(this, C, t, A, i, {
|
|
13851
13864
|
additionalHeaders: (y = a == null ? void 0 : a.graphql) == null ? void 0 : y.additionalHeaders
|
|
13852
13865
|
});
|
|
13853
13866
|
return await E.getInitializationPromise(), E;
|
|
@@ -13884,7 +13897,7 @@ class es {
|
|
|
13884
13897
|
* @returns A workflow experience configured as requested.
|
|
13885
13898
|
*/
|
|
13886
13899
|
async getWorkflowExperience(e, t, A, a) {
|
|
13887
|
-
var B, l,
|
|
13900
|
+
var B, l, C, d, E;
|
|
13888
13901
|
if (!a)
|
|
13889
13902
|
return await this.getWorkflowExperienceDeprecated(e, t, A);
|
|
13890
13903
|
const n = async () => {
|
|
@@ -13957,10 +13970,10 @@ class es {
|
|
|
13957
13970
|
};
|
|
13958
13971
|
if (a.type === "transaction" && i.workflowState) {
|
|
13959
13972
|
const w = JSON.parse(i.workflowState);
|
|
13960
|
-
r.layouts = Object.values(w.layouts).map((u) => u.layout), await
|
|
13973
|
+
r.layouts = Object.values(w.layouts).map((u) => u.layout), await ne(w), await se(w), r.reloadedState = w;
|
|
13961
13974
|
} else if (!o && a.workflowState) {
|
|
13962
13975
|
const w = JSON.parse(a.workflowState);
|
|
13963
|
-
r.layouts = Object.values(w.layouts).map((u) => u.layout), await
|
|
13976
|
+
r.layouts = Object.values(w.layouts).map((u) => u.layout), await ne(w), await se(w), r.reloadedState = w;
|
|
13964
13977
|
} else
|
|
13965
13978
|
r.layouts = $e(
|
|
13966
13979
|
r.transaction,
|
|
@@ -13968,10 +13981,10 @@ class es {
|
|
|
13968
13981
|
);
|
|
13969
13982
|
if (r.renderableContextService = new Ye(
|
|
13970
13983
|
r.layouts
|
|
13971
|
-
), a.previewService ? (r.previewService = a.previewService, (
|
|
13984
|
+
), a.previewService ? (r.previewService = a.previewService, (C = r.product) != null && C.modelUrl && (r.modelContainer = r.previewService.loadModel({
|
|
13972
13985
|
model: r.product.modelUrl,
|
|
13973
13986
|
contextService: r.renderableContextService
|
|
13974
|
-
}))) : (r.previewService = A && A(s), (
|
|
13987
|
+
}))) : (r.previewService = A && A(s), (d = r.product) != null && d.modelUrl && (r.modelContainer = (E = r.previewService) == null ? void 0 : E.loadModel({
|
|
13975
13988
|
model: r.product.modelUrl,
|
|
13976
13989
|
contextService: r.renderableContextService
|
|
13977
13990
|
}))), a.type !== "transaction") {
|
|
@@ -14054,9 +14067,9 @@ class es {
|
|
|
14054
14067
|
), r = Yt(s, 10), g = Yt(o, 10), B = (await Promise.all([
|
|
14055
14068
|
...r.map(a),
|
|
14056
14069
|
...g.map(n)
|
|
14057
|
-
])).flat(), l = [...new Set(B.map((m) => m.workflowId))],
|
|
14070
|
+
])).flat(), l = [...new Set(B.map((m) => m.workflowId))], C = await RA(l, t), d = new Map(C.map((m) => [m.id, m])), E = Y.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), w = B.map(async (m) => {
|
|
14058
14071
|
var L;
|
|
14059
|
-
const { transaction: Q, workflowId: p, readOnly: y, index: M } = m, S =
|
|
14072
|
+
const { transaction: Q, workflowId: p, readOnly: y, index: M } = m, S = d.get(p), N = e[M];
|
|
14060
14073
|
!E.get(Q.id) && Q.transactionOwnerId && E.set(Q.id, Q.transactionOwnerId);
|
|
14061
14074
|
const x = E.get(Q.id) || void 0, R = {
|
|
14062
14075
|
product: Q.product,
|
|
@@ -14072,10 +14085,10 @@ class es {
|
|
|
14072
14085
|
};
|
|
14073
14086
|
if (N.type === "transaction" && Q.workflowState) {
|
|
14074
14087
|
const T = JSON.parse(Q.workflowState);
|
|
14075
|
-
R.layouts = Object.values(T.layouts || {}).map((W) => W.layout), await
|
|
14088
|
+
R.layouts = Object.values(T.layouts || {}).map((W) => W.layout), await ne(T), await se(T), R.reloadedState = T;
|
|
14076
14089
|
} else if (!y && N.workflowState) {
|
|
14077
14090
|
const T = JSON.parse(N.workflowState);
|
|
14078
|
-
R.layouts = Object.values(T.layouts || {}).map((W) => W.layout), await
|
|
14091
|
+
R.layouts = Object.values(T.layouts || {}).map((W) => W.layout), await ne(T), await se(T), R.reloadedState = T;
|
|
14079
14092
|
} else
|
|
14080
14093
|
R.layouts = $e(
|
|
14081
14094
|
R.transaction,
|
|
@@ -14142,18 +14155,18 @@ class es {
|
|
|
14142
14155
|
if (e === "")
|
|
14143
14156
|
throw new H("No transaction ID provided.");
|
|
14144
14157
|
const A = P.getShadowGraphqlClient(), a = async () => {
|
|
14145
|
-
var
|
|
14146
|
-
const l = (
|
|
14158
|
+
var C, d;
|
|
14159
|
+
const l = (C = (await A.query({
|
|
14147
14160
|
query: Fe,
|
|
14148
14161
|
variables: { ids: [e] },
|
|
14149
14162
|
fetchPolicy: "no-cache",
|
|
14150
14163
|
errorPolicy: "all"
|
|
14151
|
-
})).data) == null ? void 0 :
|
|
14164
|
+
})).data) == null ? void 0 : C.transactions[0];
|
|
14152
14165
|
if (!l)
|
|
14153
14166
|
throw new H("Failed to read transaction.");
|
|
14154
14167
|
if (!l.product)
|
|
14155
14168
|
throw new H("Failed to load transaction, product not available.");
|
|
14156
|
-
this.currencyCode = (
|
|
14169
|
+
this.currencyCode = (d = l.product.partner) == null ? void 0 : d.currencyCode, this.experienceOptions = {
|
|
14157
14170
|
product: l.product,
|
|
14158
14171
|
transaction: l,
|
|
14159
14172
|
layouts: [],
|
|
@@ -14182,7 +14195,7 @@ class es {
|
|
|
14182
14195
|
product: l.product,
|
|
14183
14196
|
transaction: l,
|
|
14184
14197
|
layouts: [],
|
|
14185
|
-
stateMutationFunc: async (
|
|
14198
|
+
stateMutationFunc: async (C) => this.updateTransactionState({ ...C, context: { transactionOwnerId: i } }),
|
|
14186
14199
|
readOnly: t
|
|
14187
14200
|
}, this.initialized = !0;
|
|
14188
14201
|
return;
|
|
@@ -14201,8 +14214,8 @@ class es {
|
|
|
14201
14214
|
product: l.product,
|
|
14202
14215
|
transaction: l,
|
|
14203
14216
|
layouts: [],
|
|
14204
|
-
stateMutationFunc: async (
|
|
14205
|
-
...
|
|
14217
|
+
stateMutationFunc: async (C) => this.updateTransactionState({
|
|
14218
|
+
...C,
|
|
14206
14219
|
context: { transactionOwnerId: l.transactionOwnerId }
|
|
14207
14220
|
}),
|
|
14208
14221
|
readOnly: t
|
|
@@ -14222,7 +14235,7 @@ class es {
|
|
|
14222
14235
|
const o = await xe(this.experienceOptions.transaction.workflowId);
|
|
14223
14236
|
if (this.experienceOptions.workflow = o, this.experienceOptions.transaction.workflowState) {
|
|
14224
14237
|
const g = JSON.parse(this.experienceOptions.transaction.workflowState);
|
|
14225
|
-
this.experienceOptions.layouts = Object.values(g.layouts).map((B) => B.layout), await
|
|
14238
|
+
this.experienceOptions.layouts = Object.values(g.layouts).map((B) => B.layout), await ne(g), await se(g), this.experienceOptions.reloadedState = g;
|
|
14226
14239
|
}
|
|
14227
14240
|
this.experienceOptions.previewService = A && A(o), this.experienceOptions.renderableContextService = new Ye(this.experienceOptions.layouts), (a = this.experienceOptions.product) != null && a.modelUrl && (this.experienceOptions.modelContainer = (n = this.experienceOptions.previewService) == null ? void 0 : n.loadModel({
|
|
14228
14241
|
model: this.experienceOptions.product.modelUrl,
|
|
@@ -14243,8 +14256,8 @@ class es {
|
|
|
14243
14256
|
}
|
|
14244
14257
|
}), B = xe(e);
|
|
14245
14258
|
if (await Promise.all([g, B]), this.experienceOptions.workflow = await B, t) {
|
|
14246
|
-
const
|
|
14247
|
-
this.experienceOptions.layouts = Object.values(
|
|
14259
|
+
const C = JSON.parse(t);
|
|
14260
|
+
this.experienceOptions.layouts = Object.values(C.layouts).map((d) => d.layout), await ne(C), await se(C), this.experienceOptions.reloadedState = C;
|
|
14248
14261
|
} else
|
|
14249
14262
|
this.experienceOptions.layouts = $e(
|
|
14250
14263
|
this.experienceOptions.transaction,
|
|
@@ -14493,7 +14506,7 @@ class As extends X {
|
|
|
14493
14506
|
}
|
|
14494
14507
|
selectVariant(e) {
|
|
14495
14508
|
const t = this.manager.getRegionElements(this.step.stepName);
|
|
14496
|
-
return
|
|
14509
|
+
return te.selectVariant(
|
|
14497
14510
|
this.step,
|
|
14498
14511
|
e.getResource(),
|
|
14499
14512
|
t,
|
|
@@ -14514,7 +14527,7 @@ class As extends X {
|
|
|
14514
14527
|
*/
|
|
14515
14528
|
async selectImage(e, t = !0, A = !0) {
|
|
14516
14529
|
var a;
|
|
14517
|
-
if (await
|
|
14530
|
+
if (await te.selectImage(this.step, e, this.manager, A), t) {
|
|
14518
14531
|
const n = ((a = this.manager.getStepStorage(this.step.stepName)) == null ? void 0 : a.framePatternData) || {};
|
|
14519
14532
|
this.manager.updateStorage(this.step.stepName, {
|
|
14520
14533
|
framePatternData: {
|
|
@@ -14554,7 +14567,7 @@ class As extends X {
|
|
|
14554
14567
|
if (!t)
|
|
14555
14568
|
throw new Error("You must supply an image selection before attempting to remove the background.");
|
|
14556
14569
|
const A = await U.removeBackgroundFromAsset(t);
|
|
14557
|
-
e && await
|
|
14570
|
+
e && await te.selectImage(this.step, A, this.manager, !1);
|
|
14558
14571
|
const a = ((n = this.manager.getStepStorage(this.step.stepName)) == null ? void 0 : n.framePatternData) || {};
|
|
14559
14572
|
return this.manager.updateStorage(this.step.stepName, {
|
|
14560
14573
|
framePatternData: {
|
|
@@ -14565,7 +14578,7 @@ class As extends X {
|
|
|
14565
14578
|
}), A;
|
|
14566
14579
|
}
|
|
14567
14580
|
changeColors(e) {
|
|
14568
|
-
|
|
14581
|
+
te.changeColors(this.step, this.manager, e);
|
|
14569
14582
|
}
|
|
14570
14583
|
getImageData() {
|
|
14571
14584
|
if (this.frameService)
|
|
@@ -14575,7 +14588,7 @@ class As extends X {
|
|
|
14575
14588
|
return this.step.data.colorOption;
|
|
14576
14589
|
}
|
|
14577
14590
|
getAvailableColors() {
|
|
14578
|
-
return this.step.data.colorPickerEnabled ?
|
|
14591
|
+
return this.step.data.colorPickerEnabled ? te.availableColors(this.step, this.manager) : Promise.resolve([]);
|
|
14579
14592
|
}
|
|
14580
14593
|
isColorPickerEnabled() {
|
|
14581
14594
|
return this.step.data.colorPickerEnabled ?? !1;
|
|
@@ -14588,7 +14601,7 @@ class As extends X {
|
|
|
14588
14601
|
return this.step.data.maxColors;
|
|
14589
14602
|
}
|
|
14590
14603
|
getUniqueColorCount() {
|
|
14591
|
-
return
|
|
14604
|
+
return te.getUniqueColorCount(this.step, this.manager);
|
|
14592
14605
|
}
|
|
14593
14606
|
getCurrentFrameStep(e, t, A, a) {
|
|
14594
14607
|
return a && a.length > 1 && e === void 0 ? "SelectFrame" : t || A || this.getImageData() ? "Position" : "SelectImage";
|
|
@@ -14662,7 +14675,7 @@ export {
|
|
|
14662
14675
|
wt as AddonHandle,
|
|
14663
14676
|
Ds as ArrayInput,
|
|
14664
14677
|
ys as AspectType,
|
|
14665
|
-
|
|
14678
|
+
ae as AssetNotFoundError,
|
|
14666
14679
|
Ms as AssetType,
|
|
14667
14680
|
Ss as BringForwardCommand,
|
|
14668
14681
|
Ys as BringToBackCommand,
|
|
@@ -14708,7 +14721,7 @@ export {
|
|
|
14708
14721
|
Gi as ObjectInputType,
|
|
14709
14722
|
xA as OptionGlobalPropertyHandle,
|
|
14710
14723
|
ke as OptionNotFoundError,
|
|
14711
|
-
|
|
14724
|
+
de as ParseError,
|
|
14712
14725
|
xn as PictureStepHandle,
|
|
14713
14726
|
xa as ProductCameraRig,
|
|
14714
14727
|
Ni as ProductCollection,
|
|
@@ -14746,11 +14759,11 @@ export {
|
|
|
14746
14759
|
$s as dataUrlFromExternalUrl,
|
|
14747
14760
|
qe as designService,
|
|
14748
14761
|
_s as determineCorrectFontSizeAndLines,
|
|
14749
|
-
|
|
14762
|
+
dA as digitalContentStepService,
|
|
14750
14763
|
eo as findElement,
|
|
14751
14764
|
us as findPmsColors,
|
|
14752
14765
|
to as frameDataCache,
|
|
14753
|
-
|
|
14766
|
+
te as frameStepService,
|
|
14754
14767
|
Ao as generate,
|
|
14755
14768
|
ni as generateCommands,
|
|
14756
14769
|
ao as generateSVGWithUnknownColors,
|