@spiffcommerce/core 16.5.1-alpha.0 → 16.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +23 -0
- package/dist/index.js +627 -627
- package/dist/index.umd.cjs +22 -23
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createHttpLink as Ct, InMemoryCache as Qt, ApolloClient as ut, from as mt, gql as
|
|
2
|
-
import { fetch as _A, getAttributesFromArrayBuffer as Fe, AssetType as le, StepType as I, StepAspectType as O, getFrameData as Ae, frameDataCache as pt, UpdateFramePattern as Me, calculateOffsets as ee, LayoutElementType as
|
|
1
|
+
import { createHttpLink as Ct, InMemoryCache as Qt, ApolloClient as ut, from as mt, gql as y } from "@apollo/client/core";
|
|
2
|
+
import { fetch as _A, getAttributesFromArrayBuffer as Fe, AssetType as le, StepType as I, StepAspectType as O, getFrameData as Ae, frameDataCache as pt, UpdateFramePattern as Me, calculateOffsets as ee, LayoutElementType as H, generate as k, CreateElementCommand as J, generateSVGWithUnknownColors as ye, svgObjectURL as FA, fetchAsString as Z, DeleteElementCommand as $, GroupCommand as G, generateDefaultRectangleFrameSvg as Be, GetSVGDimensions as It, patternImageDataCache as de, fetchAsArrayBuffer as Dt, findElement as MA, modifySVGWithElementProperties as ft, IllustrationColorCommand as jA, IllustrationCacheCommand as Ft, getFontMetrics as Mt, getPatternImageData as VA, FontColorCommand as yt, FontImageFillCommand as JA, applyTextTransformations as WA, determineCorrectFontSizeAndLines as IA, FontSourceCommand as we, loadFont as te, TextChangeCommand as Yt, FontSizeCommand as St, createElementNS as xt, createElement as wA, _loadFontExternalDataURL as ae, UpdateWorkflowStateCommand as Ee, CommandContext as Nt, createCanvas as yA, getSvgElement as Ye, LayoutRenderingPurpose as Se, renderPapyrusComponentAsString as xe, loadImage as Ne, getDomParser as Re, toBase64 as he, getVariant as Rt, generateFrameSVG as Pt, getDefaultVariant as UA, domParser as Pe, sanitizeSvgTree as He, traverse as Ht, xmlSerializer as Ue, CreateLayoutCommand as Ut, sortElementsByLayersWithIndex as Gt, AspectType as DA, rehydrateSerializedLayout as AA } from "@spiffcommerce/papyrus";
|
|
3
3
|
import { AssetType as Ts, BringForwardCommand as Ls, BringToBackCommand as Os, BringToFrontCommand as zs, CanvasCommand as Ks, CommandContext as js, CreateElementCommand as Vs, CreateLayoutCommand as Ws, DeleteElementCommand as Xs, FontAlignmentCommand as qs, FontColorCommand as Zs, FontSizeCommand as $s, FontSourceCommand as _s, GroupCommand as Ai, LayoutElementFactory as ei, LayoutElementType as ti, MoveCommand as ai, ResizeCommand as ni, RotateCommand as si, SendBackwardsCommand as ii, StepAspectType as oi, StepType as ri, TextChangeCommand as ci, UnitOfMeasurement as gi, dataUrlFromExternalUrl as li, determineCorrectFontSizeAndLines as Bi, findElement as di, frameDataCache as wi, generate as Ei, generateSVGWithUnknownColors as hi, getAttributesFromArrayBuffer as Ci, getAxisAlignedBoundingBox as Qi, getFrameData as ui, getSvgElement as mi, loadFont as pi, patternImageDataCache as Ii, registerFetchImplementation as Di, registerWindowImplementation as fi, rehydrateSerializedLayout as Fi, setCanvasModule as Mi } from "@spiffcommerce/papyrus";
|
|
4
4
|
import { setContext as vt } from "@apollo/client/link/context";
|
|
5
5
|
import { onError as kt } from "@apollo/client/link/error";
|
|
@@ -7,15 +7,15 @@ import { Pith as Ge } from "pith";
|
|
|
7
7
|
import ve from "lodash.debounce";
|
|
8
8
|
import ke from "lodash.isequal";
|
|
9
9
|
import gA from "lodash.clonedeep";
|
|
10
|
-
import { toString as
|
|
10
|
+
import { toString as be } from "qrcode";
|
|
11
11
|
import { split as XA } from "unicode-default-word-boundary";
|
|
12
12
|
import ne from "svg-path-bbox";
|
|
13
|
-
class
|
|
13
|
+
class Je extends Error {
|
|
14
14
|
constructor(A) {
|
|
15
15
|
super(A), this.name = this.constructor.name;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
class dA extends
|
|
18
|
+
class dA extends Je {
|
|
19
19
|
constructor(A) {
|
|
20
20
|
super(`ConfigurationError - ${A}`);
|
|
21
21
|
}
|
|
@@ -25,7 +25,7 @@ class YA extends dA {
|
|
|
25
25
|
super(`Option not Configured: ${A.stepTitle}`), this.optionId = (A == null ? void 0 : A.optionId) || "N/A";
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
class
|
|
28
|
+
class L extends dA {
|
|
29
29
|
constructor(A) {
|
|
30
30
|
super(`Panel not Found: ${A.panelId}`), this.panelId = (A == null ? void 0 : A.panelId) || "N/A";
|
|
31
31
|
}
|
|
@@ -45,7 +45,7 @@ class SA extends dA {
|
|
|
45
45
|
super(`Workflow Misconfiguration: ${A.stepName} - ${e}`), this.step = A;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
class GA extends
|
|
48
|
+
class GA extends Je {
|
|
49
49
|
constructor(A) {
|
|
50
50
|
super(`ImplementationError - ${A}`);
|
|
51
51
|
}
|
|
@@ -60,7 +60,7 @@ class rA extends GA {
|
|
|
60
60
|
super(`Parsing Error: ${A}`);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
class
|
|
63
|
+
class P extends GA {
|
|
64
64
|
constructor(A) {
|
|
65
65
|
super(`Client Error: ${A}`);
|
|
66
66
|
}
|
|
@@ -70,7 +70,7 @@ class vA extends GA {
|
|
|
70
70
|
super(`Resource Generation Failed: ${A}`);
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
class
|
|
73
|
+
class bt {
|
|
74
74
|
get(A) {
|
|
75
75
|
return localStorage.getItem(A) || void 0;
|
|
76
76
|
}
|
|
@@ -113,13 +113,13 @@ class Ce {
|
|
|
113
113
|
this.set(A, t);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
const
|
|
116
|
+
const Jt = () => {
|
|
117
117
|
try {
|
|
118
|
-
return localStorage ? new
|
|
118
|
+
return localStorage ? new bt() : new Ce();
|
|
119
119
|
} catch {
|
|
120
120
|
return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."), new Ce();
|
|
121
121
|
}
|
|
122
|
-
},
|
|
122
|
+
}, x = Jt();
|
|
123
123
|
class Tt {
|
|
124
124
|
constructor() {
|
|
125
125
|
this.defaultServerUrl = "https://api.spiff.com.au", this.defaultServicesApiUrl = "https://services.spiff.com.au", this.defaultHubUrl = "https://hub.spiff.com.au", this.serverUrl = this.defaultServerUrl, this.servicesApiUrl = this.defaultServicesApiUrl, this.hubUrl = this.defaultHubUrl, this.serverUrlCallbacks = [];
|
|
@@ -190,8 +190,8 @@ class Kt {
|
|
|
190
190
|
uri: `${xA.getServerUrl()}/graphql`,
|
|
191
191
|
fetch: _A
|
|
192
192
|
}), e = vt(async (s, i) => {
|
|
193
|
-
const { headers: o } = i, r = o || {}, c = await zt(), B = i.bearer ?? c.bearer, l = i.partnerId ?? c.partnerId, d = i.activeIntegration ?? c.activeIntegration, E = i.transactionOwnerId ?? c.transactionOwnerId,
|
|
194
|
-
return B && (r.Authorization = `Bearer ${B}`), l && (r.partnerId = l), d && (r.activeIntegration = d), E && (r.transactionOwnerId = E),
|
|
193
|
+
const { headers: o } = i, r = o || {}, c = await zt(), B = i.bearer ?? c.bearer, l = i.partnerId ?? c.partnerId, d = i.activeIntegration ?? c.activeIntegration, E = i.transactionOwnerId ?? c.transactionOwnerId, C = i.customerToken ?? c.customerToken, w = i.applicationKey ?? c.applicationKey, Q = i.bundleOwnerId ?? c.bundleOwnerId;
|
|
194
|
+
return B && (r.Authorization = `Bearer ${B}`), l && (r.partnerId = l), d && (r.activeIntegration = d), E && (r.transactionOwnerId = E), C && (r.customerToken = C), w && (r["X-Application-Key"] = w), Q && (r.bundleOwnerId = Q), {
|
|
195
195
|
headers: r
|
|
196
196
|
};
|
|
197
197
|
}), t = kt(({ operation: s, graphQLErrors: i, networkError: o }) => {
|
|
@@ -251,14 +251,14 @@ class Kt {
|
|
|
251
251
|
});
|
|
252
252
|
}
|
|
253
253
|
}
|
|
254
|
-
const
|
|
254
|
+
const N = new Kt(), jt = y`
|
|
255
255
|
fragment AssetMetadataFields on Asset {
|
|
256
256
|
metadata {
|
|
257
257
|
key
|
|
258
258
|
value
|
|
259
259
|
}
|
|
260
260
|
}
|
|
261
|
-
`, kA = (g) =>
|
|
261
|
+
`, kA = (g) => y`
|
|
262
262
|
${g && jt || ""}
|
|
263
263
|
fragment AssetFields on Asset {
|
|
264
264
|
name
|
|
@@ -273,14 +273,14 @@ const x = new Kt(), jt = M`
|
|
|
273
273
|
}
|
|
274
274
|
${g && "...AssetMetadataFields" || ""}
|
|
275
275
|
}
|
|
276
|
-
`, Vt =
|
|
276
|
+
`, Vt = y`
|
|
277
277
|
${kA(!1)}
|
|
278
278
|
query GetAssets($keys: [String]!) {
|
|
279
279
|
assets(keys: $keys) {
|
|
280
280
|
...AssetFields
|
|
281
281
|
}
|
|
282
282
|
}
|
|
283
|
-
`, se =
|
|
283
|
+
`, se = y`
|
|
284
284
|
fragment MaterialFields on Material {
|
|
285
285
|
id
|
|
286
286
|
name
|
|
@@ -321,14 +321,14 @@ const x = new Kt(), jt = M`
|
|
|
321
321
|
fileLink
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
|
-
`, Wt =
|
|
324
|
+
`, Wt = y`
|
|
325
325
|
${se}
|
|
326
326
|
query GetMaterials($ids: [String]) {
|
|
327
327
|
materials(id: $ids) {
|
|
328
328
|
...MaterialFields
|
|
329
329
|
}
|
|
330
330
|
}
|
|
331
|
-
`, Xt =
|
|
331
|
+
`, Xt = y`
|
|
332
332
|
mutation CreateAsset($name: String!, $type: String!, $mimeType: String!, $anonymous: Boolean, $temporary: Boolean) {
|
|
333
333
|
assetCreate(name: $name, type: $type, mimeType: $mimeType, anonymous: $anonymous, temporary: $temporary) {
|
|
334
334
|
uploadUrl
|
|
@@ -342,14 +342,14 @@ const x = new Kt(), jt = M`
|
|
|
342
342
|
}
|
|
343
343
|
}
|
|
344
344
|
}
|
|
345
|
-
`, Ke = async (g) => (await
|
|
345
|
+
`, Ke = async (g) => (await N.getShadowGraphqlClient().query({
|
|
346
346
|
query: Vt,
|
|
347
347
|
errorPolicy: "all",
|
|
348
348
|
fetchPolicy: "no-cache",
|
|
349
349
|
variables: {
|
|
350
350
|
keys: g
|
|
351
351
|
}
|
|
352
|
-
})).data.assets, qt = async (g) => (await
|
|
352
|
+
})).data.assets, qt = async (g) => (await N.getShadowGraphqlClient().query({
|
|
353
353
|
query: Wt,
|
|
354
354
|
errorPolicy: "all",
|
|
355
355
|
fetchPolicy: "no-cache",
|
|
@@ -358,7 +358,7 @@ const x = new Kt(), jt = M`
|
|
|
358
358
|
}
|
|
359
359
|
})).data.materials, Zt = async (g, A, e, t, a) => {
|
|
360
360
|
var s;
|
|
361
|
-
return (s = (await
|
|
361
|
+
return (s = (await N.getShadowGraphqlClient().mutate({
|
|
362
362
|
mutation: Xt,
|
|
363
363
|
errorPolicy: "all",
|
|
364
364
|
fetchPolicy: "no-cache",
|
|
@@ -453,7 +453,7 @@ class $t {
|
|
|
453
453
|
name: A.name,
|
|
454
454
|
blob: new Blob([A], { type: A.type })
|
|
455
455
|
};
|
|
456
|
-
return await
|
|
456
|
+
return await T.uploadAssetWithProgress(n, a, e, !0);
|
|
457
457
|
}
|
|
458
458
|
}
|
|
459
459
|
removePersistedAsset(A) {
|
|
@@ -502,31 +502,31 @@ class LA {
|
|
|
502
502
|
}
|
|
503
503
|
const e = /* @__PURE__ */ new Map();
|
|
504
504
|
e.set(A.key || "", A.fileLink);
|
|
505
|
-
const t =
|
|
505
|
+
const t = x.getMap(sA);
|
|
506
506
|
t && t.forEach((a, n) => {
|
|
507
507
|
e.set(n, a);
|
|
508
|
-
}),
|
|
508
|
+
}), x.setMap(sA, e);
|
|
509
509
|
}
|
|
510
510
|
/**
|
|
511
511
|
* Remove an existing asset from persistence. Noop if the asset doesn't exist.
|
|
512
512
|
* @param assetKey The key to remove.
|
|
513
513
|
*/
|
|
514
514
|
static remove(A) {
|
|
515
|
-
const e =
|
|
515
|
+
const e = x.getMap(sA);
|
|
516
516
|
if (!e)
|
|
517
517
|
return;
|
|
518
518
|
const t = Array.from(e.entries()).find((a) => a[0] === A);
|
|
519
|
-
t && (e.delete(t[0]),
|
|
519
|
+
t && (e.delete(t[0]), x.setMap(sA, e));
|
|
520
520
|
}
|
|
521
521
|
/**
|
|
522
522
|
* Get a list of all persisted assets.
|
|
523
523
|
*/
|
|
524
524
|
static list() {
|
|
525
|
-
const A =
|
|
525
|
+
const A = x.getMap(sA);
|
|
526
526
|
return A ? Array.from(A.entries()).map((e) => ({ assetKey: e[0], src: e[1] })) : [];
|
|
527
527
|
}
|
|
528
528
|
}
|
|
529
|
-
const
|
|
529
|
+
const T = new $t();
|
|
530
530
|
class _t {
|
|
531
531
|
constructor() {
|
|
532
532
|
this.cache = {};
|
|
@@ -546,7 +546,7 @@ class _t {
|
|
|
546
546
|
return this.cache[t] = e, e;
|
|
547
547
|
}
|
|
548
548
|
}
|
|
549
|
-
const BA = new _t(), je =
|
|
549
|
+
const BA = new _t(), je = y`
|
|
550
550
|
fragment OptionFields on Option {
|
|
551
551
|
id
|
|
552
552
|
name
|
|
@@ -586,7 +586,7 @@ const BA = new _t(), je = M`
|
|
|
586
586
|
...AssetFields
|
|
587
587
|
}
|
|
588
588
|
}
|
|
589
|
-
`, Aa =
|
|
589
|
+
`, Aa = y`
|
|
590
590
|
${kA(!1)}
|
|
591
591
|
${se}
|
|
592
592
|
${je}
|
|
@@ -596,7 +596,7 @@ const BA = new _t(), je = M`
|
|
|
596
596
|
}
|
|
597
597
|
}
|
|
598
598
|
`, ea = async (g) => {
|
|
599
|
-
const A = await
|
|
599
|
+
const A = await N.getShadowGraphqlClient().query({
|
|
600
600
|
query: Aa,
|
|
601
601
|
errorPolicy: "all",
|
|
602
602
|
fetchPolicy: "no-cache",
|
|
@@ -606,8 +606,8 @@ const BA = new _t(), je = M`
|
|
|
606
606
|
});
|
|
607
607
|
return A.data.options.forEach((e) => {
|
|
608
608
|
var t, a;
|
|
609
|
-
(t = e.defaultVariant) != null && t.asset &&
|
|
610
|
-
n.asset &&
|
|
609
|
+
(t = e.defaultVariant) != null && t.asset && T.cacheAsset(e.defaultVariant.asset), e.colorProfile && T.cacheAsset(e.colorProfile), (a = e.variants) == null || a.forEach((n) => {
|
|
610
|
+
n.asset && T.cacheAsset(n.asset), n.displayImage && T.cacheAsset(n.displayImage), n.thumbnail && T.cacheAsset(n.thumbnail), n.material && T.cacheMaterial(n.material);
|
|
611
611
|
});
|
|
612
612
|
}), A.data.options;
|
|
613
613
|
}, ta = async (g, A) => (await A).find((t) => t.id === g), aa = async (g) => {
|
|
@@ -674,7 +674,7 @@ class na {
|
|
|
674
674
|
}
|
|
675
675
|
const z = new na();
|
|
676
676
|
var sa = /* @__PURE__ */ ((g) => (g[g.Orbit = 0] = "Orbit", g[g.Pan = 1] = "Pan", g))(sa || {}), ia = /* @__PURE__ */ ((g) => (g.PerVariation = "PerVariation", g.BaseProduct = "BaseProduct", g))(ia || {}), oa = /* @__PURE__ */ ((g) => (g.Manual = "Manual", g.OnStart = "OnStart", g.OnQuit = "OnQuit", g.OnEnd = "OnEnd", g))(oa || {}), ra = /* @__PURE__ */ ((g) => (g.Email = "Email", g.FirstName = "FirstName", g.LastName = "LastName", g.Phone = "Phone", g))(ra || {}), NA = /* @__PURE__ */ ((g) => (g.Owner = "Owner", g.Approver = "Approver", g.Editor = "Editor", g.Viewer = "Viewer", g))(NA || {});
|
|
677
|
-
const ue =
|
|
677
|
+
const ue = y`
|
|
678
678
|
mutation CreateTransaction(
|
|
679
679
|
$integrationProductId: String
|
|
680
680
|
$externalIntegrationId: String
|
|
@@ -768,7 +768,7 @@ const ue = M`
|
|
|
768
768
|
}
|
|
769
769
|
}
|
|
770
770
|
}
|
|
771
|
-
`, ca =
|
|
771
|
+
`, ca = y`
|
|
772
772
|
mutation CreateTransactions($inputs: [TransactionCreateInput]!) {
|
|
773
773
|
transactionCreateMany(inputs: $inputs) {
|
|
774
774
|
id
|
|
@@ -848,7 +848,7 @@ const ue = M`
|
|
|
848
848
|
}
|
|
849
849
|
}
|
|
850
850
|
}
|
|
851
|
-
`, ga =
|
|
851
|
+
`, ga = y`
|
|
852
852
|
mutation ClaimTransaction($id: String!) {
|
|
853
853
|
transactionClaim(id: $id) {
|
|
854
854
|
id
|
|
@@ -928,7 +928,7 @@ const ue = M`
|
|
|
928
928
|
}
|
|
929
929
|
}
|
|
930
930
|
}
|
|
931
|
-
`, EA =
|
|
931
|
+
`, EA = y`
|
|
932
932
|
query ReadTransactions($ids: [String]!) {
|
|
933
933
|
transactions(ids: $ids) {
|
|
934
934
|
bulk
|
|
@@ -1015,26 +1015,26 @@ const ue = M`
|
|
|
1015
1015
|
}
|
|
1016
1016
|
}
|
|
1017
1017
|
}
|
|
1018
|
-
`, la =
|
|
1018
|
+
`, la = y`
|
|
1019
1019
|
mutation UpdateTransactionWorkflowState($id: String!, $workflowState: String!) {
|
|
1020
1020
|
transactionUpdate(id: $id, workflowState: $workflowState) {
|
|
1021
1021
|
id
|
|
1022
1022
|
}
|
|
1023
1023
|
}
|
|
1024
|
-
`, Ba =
|
|
1024
|
+
`, Ba = y`
|
|
1025
1025
|
mutation UpdateTransactionWorkflowId($id: String!, $workflowId: String!) {
|
|
1026
1026
|
transactionUpdate(id: $id, workflowId: $workflowId) {
|
|
1027
1027
|
id
|
|
1028
1028
|
}
|
|
1029
1029
|
}
|
|
1030
|
-
`, da =
|
|
1030
|
+
`, da = y`
|
|
1031
1031
|
mutation UpdateVariationRecords($transactionId: String!, $updates: [VariationRecordUpdateInput]!) {
|
|
1032
1032
|
variationRecordsUpdate(transactionId: $transactionId, updates: $updates) {
|
|
1033
1033
|
recordNumber
|
|
1034
1034
|
}
|
|
1035
1035
|
}
|
|
1036
1036
|
`;
|
|
1037
|
-
|
|
1037
|
+
y`
|
|
1038
1038
|
query ReadTransactionForDesignCreation($id: String!) {
|
|
1039
1039
|
transactions(ids: [$id]) {
|
|
1040
1040
|
id
|
|
@@ -1087,7 +1087,7 @@ M`
|
|
|
1087
1087
|
}
|
|
1088
1088
|
}
|
|
1089
1089
|
`;
|
|
1090
|
-
const Ve =
|
|
1090
|
+
const Ve = y`
|
|
1091
1091
|
query ReadWorkflowStates($ids: [String]!) {
|
|
1092
1092
|
transactions(ids: $ids) {
|
|
1093
1093
|
id
|
|
@@ -1317,24 +1317,22 @@ const Ve = M`
|
|
|
1317
1317
|
silentSteps: g.silentSteps.filter((t) => nA(t, A))
|
|
1318
1318
|
};
|
|
1319
1319
|
return e.silentSteps.length === 0 && e.renderableSteps.length === 0 ? null : e;
|
|
1320
|
-
}, aA = (g, A) => g.map((e) => ha(e, A)).filter((e) => e !== null), Ca = async (g, A) => {
|
|
1321
|
-
var
|
|
1322
|
-
const
|
|
1323
|
-
for (const
|
|
1324
|
-
for (const
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
const a = e.filter((s) => s.renderableSteps.filter(
|
|
1331
|
-
(o) => t.includes(o.stepName)
|
|
1320
|
+
}, aA = (g, A) => g.map((e) => ha(e, A)).filter((e) => e !== null), Ca = async (g, A, e = !1) => {
|
|
1321
|
+
var s;
|
|
1322
|
+
const t = aA(g, A), a = [];
|
|
1323
|
+
for (const i of t)
|
|
1324
|
+
for (const o of i.renderableSteps) {
|
|
1325
|
+
const r = (((s = o.option) == null ? void 0 : s.variants) || []).length;
|
|
1326
|
+
o.silent || (o.type === I.Model || o.type === I.Material || o.type === I.Picture || o.type === I.Shape ? (r > 1 || e) && a.push(o.stepName) : a.push(o.stepName));
|
|
1327
|
+
}
|
|
1328
|
+
const n = t.filter((i) => i.renderableSteps.filter(
|
|
1329
|
+
(r) => a.includes(r.stepName)
|
|
1332
1330
|
).length > 0);
|
|
1333
|
-
for (const
|
|
1334
|
-
|
|
1335
|
-
(
|
|
1331
|
+
for (const i of n)
|
|
1332
|
+
i.renderableSteps = i.renderableSteps.filter(
|
|
1333
|
+
(o) => a.includes(o.stepName)
|
|
1336
1334
|
);
|
|
1337
|
-
return
|
|
1335
|
+
return n;
|
|
1338
1336
|
};
|
|
1339
1337
|
class Xe {
|
|
1340
1338
|
constructor() {
|
|
@@ -1594,7 +1592,7 @@ class me {
|
|
|
1594
1592
|
var o, r, c, B;
|
|
1595
1593
|
const n = this.layouts.find((l) => l.panelId === a.panelId);
|
|
1596
1594
|
if (!n)
|
|
1597
|
-
throw new
|
|
1595
|
+
throw new L(a);
|
|
1598
1596
|
let s = "";
|
|
1599
1597
|
if (this.configuration.type === I.ProductOverlay) {
|
|
1600
1598
|
let l = "";
|
|
@@ -1602,7 +1600,7 @@ class me {
|
|
|
1602
1600
|
throw new SA(this.configuration, "Couldn't find an asset for product overlay step");
|
|
1603
1601
|
}
|
|
1604
1602
|
const i = this.evaluateAssetType();
|
|
1605
|
-
if (i ===
|
|
1603
|
+
if (i === H.Image) {
|
|
1606
1604
|
const l = this.configuration.type === I.SilentIllustration ? (r = this.configuration.data.asset) == null ? void 0 : r.fileLink : (c = this.product) == null ? void 0 : c.overlayImageUrl;
|
|
1607
1605
|
if (!l)
|
|
1608
1606
|
throw new Error("Undefined raster silent step source");
|
|
@@ -1636,10 +1634,10 @@ class me {
|
|
|
1636
1634
|
Q("Undefined vector silent step source");
|
|
1637
1635
|
return;
|
|
1638
1636
|
}
|
|
1639
|
-
Z(l, !0).then((
|
|
1640
|
-
w(
|
|
1641
|
-
}).catch((
|
|
1642
|
-
}))()),
|
|
1637
|
+
Z(l, !0).then((h) => {
|
|
1638
|
+
w(h);
|
|
1639
|
+
}).catch((h) => console.error(h));
|
|
1640
|
+
}))()), C = {
|
|
1643
1641
|
stepName: this.configuration.stepName,
|
|
1644
1642
|
id: k(),
|
|
1645
1643
|
cachedObjectURL: await FA(E.svg),
|
|
@@ -1660,10 +1658,10 @@ class me {
|
|
|
1660
1658
|
};
|
|
1661
1659
|
return {
|
|
1662
1660
|
regionElement: {
|
|
1663
|
-
id:
|
|
1661
|
+
id: C.id,
|
|
1664
1662
|
region: a
|
|
1665
1663
|
},
|
|
1666
|
-
command: new J(
|
|
1664
|
+
command: new J(C, n)
|
|
1667
1665
|
};
|
|
1668
1666
|
}
|
|
1669
1667
|
}, this.configuration = A, this.layouts = e, this.product = t || void 0;
|
|
@@ -1678,7 +1676,7 @@ class me {
|
|
|
1678
1676
|
return this.configuration.type === I.ProductOverlay ? Promise.all(
|
|
1679
1677
|
this.configuration.data.regions.map((A) => {
|
|
1680
1678
|
if (!this.layouts.find((t) => A.panelId === t.panelId))
|
|
1681
|
-
throw new
|
|
1679
|
+
throw new L(A);
|
|
1682
1680
|
return this.processRegion(A);
|
|
1683
1681
|
})
|
|
1684
1682
|
) : Promise.reject("Unknown silent step. This is a bug");
|
|
@@ -1686,7 +1684,7 @@ class me {
|
|
|
1686
1684
|
evaluateAssetType() {
|
|
1687
1685
|
var e, t, a;
|
|
1688
1686
|
const A = this.configuration.type === I.ProductOverlay && ((e = this.product) != null && e.overlayImageUrl) ? this.product.overlayImageUrl.toLowerCase() : (a = (t = this.configuration.data.asset) == null ? void 0 : t.fileLink) == null ? void 0 : a.toLowerCase().split("?")[0];
|
|
1689
|
-
return A != null && A.startsWith("data:image/png") || A != null && A.endsWith(".jpeg") || A != null && A.endsWith(".jpg") || A != null && A.endsWith(".png") ?
|
|
1687
|
+
return A != null && A.startsWith("data:image/png") || A != null && A.endsWith(".jpeg") || A != null && A.endsWith(".jpg") || A != null && A.endsWith(".png") ? H.Image : A != null && A.endsWith(".svg") || A != null && A.startsWith("image/svg+xml") ? H.Illustration : H.Illustration;
|
|
1690
1688
|
}
|
|
1691
1689
|
}
|
|
1692
1690
|
const ma = async (g) => {
|
|
@@ -1747,19 +1745,19 @@ class pa {
|
|
|
1747
1745
|
async regenerateQRCode(A, e, t, a, n, s, i, o, r) {
|
|
1748
1746
|
if (!e && t !== "" && a === "") {
|
|
1749
1747
|
const c = async () => {
|
|
1750
|
-
var
|
|
1751
|
-
const
|
|
1752
|
-
return { asset:
|
|
1753
|
-
}, B = await new Promise((
|
|
1748
|
+
var f, p;
|
|
1749
|
+
const h = (await Ke([t]))[0], u = (p = (f = h == null ? void 0 : h.versions) == null ? void 0 : f.find((D) => D.name === "mpeg4")) == null ? void 0 : p.link;
|
|
1750
|
+
return { asset: h, link: u };
|
|
1751
|
+
}, B = await new Promise((h, u) => {
|
|
1754
1752
|
new Ze(
|
|
1755
1753
|
async () => !!(await c()).link,
|
|
1756
1754
|
async () => {
|
|
1757
|
-
const
|
|
1758
|
-
if (!
|
|
1759
|
-
throw new lA(
|
|
1760
|
-
|
|
1755
|
+
const f = await c();
|
|
1756
|
+
if (!f.link || !f.link)
|
|
1757
|
+
throw new lA(f.asset);
|
|
1758
|
+
h({
|
|
1761
1759
|
rel: "mpeg4",
|
|
1762
|
-
href:
|
|
1760
|
+
href: f.link
|
|
1763
1761
|
});
|
|
1764
1762
|
},
|
|
1765
1763
|
() => {
|
|
@@ -1769,19 +1767,19 @@ class pa {
|
|
|
1769
1767
|
40
|
|
1770
1768
|
);
|
|
1771
1769
|
});
|
|
1772
|
-
A.forEach((
|
|
1770
|
+
A.forEach((h) => o(new $(h.id)));
|
|
1773
1771
|
const l = s.data.baseUrl.slice(0, 4) === "http" ? "" : "https://", d = new URL(l + s.data.baseUrl);
|
|
1774
1772
|
d.searchParams.append("video", btoa(JSON.stringify([B]))), d.pathname = d.pathname + (d.pathname.slice(-1) === "/" ? "" : "/");
|
|
1775
1773
|
const E = d.toString();
|
|
1776
1774
|
if (E.length >= 2e3)
|
|
1777
1775
|
throw new vA("Cannot create QR code, URL too long.");
|
|
1778
|
-
const
|
|
1779
|
-
if (i(
|
|
1776
|
+
const C = await ma(E);
|
|
1777
|
+
if (i(C), !s.data || !s.data.regions)
|
|
1780
1778
|
throw new SA(s, "Missing regions.");
|
|
1781
|
-
const w = await this.regionElements(s), Q = await this.command(
|
|
1779
|
+
const w = await this.regionElements(s), Q = await this.command(C, w, n, s.stepName);
|
|
1782
1780
|
Q && (Q.command && n.getCommandDispatcher()(Q.command), Q.followup && await Q.followup()), await n.setSelectionsAndElements(s.stepName, [], w, async () => {
|
|
1783
1781
|
n.updateStorage(s.stepName, {
|
|
1784
|
-
videoShortUrl:
|
|
1782
|
+
videoShortUrl: C,
|
|
1785
1783
|
videoUrl: a
|
|
1786
1784
|
}), r(!1);
|
|
1787
1785
|
});
|
|
@@ -1793,10 +1791,10 @@ class pa {
|
|
|
1793
1791
|
return A.data.regions.map(e);
|
|
1794
1792
|
}
|
|
1795
1793
|
async command(A, e, t, a) {
|
|
1796
|
-
const n = t.getLayouts(), i = `data:image/svg+xml;base64,${btoa(await
|
|
1794
|
+
const n = t.getLayouts(), i = `data:image/svg+xml;base64,${btoa(await be(A, { type: "svg" }))}`, o = e.map((r) => {
|
|
1797
1795
|
const c = r.region, B = n.find((l) => l.panelId === (c == null ? void 0 : c.panelId));
|
|
1798
1796
|
if (!B && c)
|
|
1799
|
-
throw new
|
|
1797
|
+
throw new L(c);
|
|
1800
1798
|
if (B && !c)
|
|
1801
1799
|
throw new Error("Region not found");
|
|
1802
1800
|
if (!B || !c)
|
|
@@ -1807,7 +1805,7 @@ class pa {
|
|
|
1807
1805
|
stepName: a,
|
|
1808
1806
|
id: r.id,
|
|
1809
1807
|
src: i,
|
|
1810
|
-
type:
|
|
1808
|
+
type: H.Image,
|
|
1811
1809
|
y: c.top,
|
|
1812
1810
|
x: c.left,
|
|
1813
1811
|
width: c.width,
|
|
@@ -1873,13 +1871,13 @@ class Da {
|
|
|
1873
1871
|
}
|
|
1874
1872
|
if (a) {
|
|
1875
1873
|
const c = async () => {
|
|
1876
|
-
var d, E,
|
|
1874
|
+
var d, E, C, w;
|
|
1877
1875
|
const B = (d = a.storage) == null ? void 0 : d.framePatternSrc, l = (E = a.storage) == null ? void 0 : E.frameOffsetsList;
|
|
1878
1876
|
if (e.updateMetadata(A.stepName, {
|
|
1879
1877
|
frameOffsetsList: l,
|
|
1880
1878
|
framePatternSrc: B
|
|
1881
1879
|
}), B) {
|
|
1882
|
-
const Q = (
|
|
1880
|
+
const Q = (C = e.getStepSpecificServices(A.stepName)) == null ? void 0 : C.frameService;
|
|
1883
1881
|
if (!Q)
|
|
1884
1882
|
throw new Error("Frame service unavailable, cannot load pattern!");
|
|
1885
1883
|
await this.loadPatternFromString(B, Q), e.updateMetadata(A.stepName, { image: B }), e.updateStorage(A.stepName, {
|
|
@@ -1919,11 +1917,11 @@ class Da {
|
|
|
1919
1917
|
new Ze(
|
|
1920
1918
|
async () => {
|
|
1921
1919
|
var o;
|
|
1922
|
-
const s = (o = (await
|
|
1920
|
+
const s = (o = (await T.getLocalOrFromServer(e.key || "")).versions) == null ? void 0 : o.find((r) => r.name === "svg");
|
|
1923
1921
|
return s ? (await fetch(s.link)).status === 200 : !1;
|
|
1924
1922
|
},
|
|
1925
1923
|
() => {
|
|
1926
|
-
|
|
1924
|
+
T.getLocalOrFromServer(e.key || "").then((n) => {
|
|
1927
1925
|
this.loadPatternFromAsset(n, A, t);
|
|
1928
1926
|
});
|
|
1929
1927
|
},
|
|
@@ -1947,7 +1945,7 @@ class Da {
|
|
|
1947
1945
|
return new J(
|
|
1948
1946
|
{
|
|
1949
1947
|
id: A,
|
|
1950
|
-
type:
|
|
1948
|
+
type: H.Frame,
|
|
1951
1949
|
x: e.left,
|
|
1952
1950
|
y: e.top,
|
|
1953
1951
|
width: e.width,
|
|
@@ -2002,22 +2000,22 @@ class Da {
|
|
|
2002
2000
|
n && n(!0);
|
|
2003
2001
|
const r = await Promise.all(
|
|
2004
2002
|
A.data.regions.map(async (d, E) => {
|
|
2005
|
-
const
|
|
2003
|
+
const C = await Ae(o[E]), w = i.getImageData(), Q = t.map((m) => new $(m.id)), h = w ? ee(w, C) : void 0, u = w ? {
|
|
2006
2004
|
id: k(),
|
|
2007
2005
|
src: w.src,
|
|
2008
|
-
x: (
|
|
2009
|
-
y: (
|
|
2006
|
+
x: (h == null ? void 0 : h.x) || 0,
|
|
2007
|
+
y: (h == null ? void 0 : h.y) || 0,
|
|
2010
2008
|
width: w.width,
|
|
2011
2009
|
height: w.height,
|
|
2012
|
-
scaleX: (
|
|
2013
|
-
scaleY: (
|
|
2010
|
+
scaleX: (h == null ? void 0 : h.zoom) || 1,
|
|
2011
|
+
scaleY: (h == null ? void 0 : h.zoom) || 1,
|
|
2014
2012
|
rotation: 0
|
|
2015
|
-
} : void 0,
|
|
2016
|
-
if (!
|
|
2017
|
-
throw new
|
|
2013
|
+
} : void 0, f = k(), D = a.getLayouts().find((m) => m.panelId === d.panelId);
|
|
2014
|
+
if (!D)
|
|
2015
|
+
throw new L(d);
|
|
2018
2016
|
return {
|
|
2019
|
-
command: this.getCreateElementCommand(
|
|
2020
|
-
frameData:
|
|
2017
|
+
command: this.getCreateElementCommand(f, d, D, {
|
|
2018
|
+
frameData: C,
|
|
2021
2019
|
pattern: u,
|
|
2022
2020
|
disablePlaceholder: A.data.disablePlaceholder,
|
|
2023
2021
|
focalBlur: A.data.focalBlur,
|
|
@@ -2026,7 +2024,7 @@ class Da {
|
|
|
2026
2024
|
stepName: A.stepName
|
|
2027
2025
|
}),
|
|
2028
2026
|
regionEl: {
|
|
2029
|
-
id:
|
|
2027
|
+
id: f,
|
|
2030
2028
|
region: d
|
|
2031
2029
|
},
|
|
2032
2030
|
removeExistingCommands: Q
|
|
@@ -2097,7 +2095,7 @@ class fa {
|
|
|
2097
2095
|
src: a.src,
|
|
2098
2096
|
svg: a.svg.svg,
|
|
2099
2097
|
cachedObjectURL: a.objectURL,
|
|
2100
|
-
type:
|
|
2098
|
+
type: H.Illustration,
|
|
2101
2099
|
y: e.top,
|
|
2102
2100
|
x: e.left,
|
|
2103
2101
|
rotation: e.rotation,
|
|
@@ -2194,32 +2192,32 @@ class fa {
|
|
|
2194
2192
|
return;
|
|
2195
2193
|
const s = MA(
|
|
2196
2194
|
e[0].id,
|
|
2197
|
-
a().map((
|
|
2195
|
+
a().map((C) => C.layoutState)
|
|
2198
2196
|
), i = { ...s.colors }, o = {};
|
|
2199
|
-
Object.entries(i).forEach(([
|
|
2200
|
-
const Q = { browserValue: w.browserValue },
|
|
2201
|
-
|
|
2197
|
+
Object.entries(i).forEach(([C, w]) => {
|
|
2198
|
+
const Q = { browserValue: w.browserValue }, h = w.spotColor;
|
|
2199
|
+
h && (Q.spotColor = { profileName: h.profileName, namedColor: h.namedColor }), o[C] = Q;
|
|
2202
2200
|
});
|
|
2203
|
-
for (const [
|
|
2204
|
-
i[
|
|
2205
|
-
let r = Array.from(Object.values(i)).map((
|
|
2201
|
+
for (const [C, w] of n.entries())
|
|
2202
|
+
i[C] = { browserValue: w, spotColor: (d = i[C]) == null ? void 0 : d.spotColor }, o[C] = { browserValue: w };
|
|
2203
|
+
let r = Array.from(Object.values(i)).map((C) => C.browserValue);
|
|
2206
2204
|
const c = A.data.colorOption;
|
|
2207
|
-
c && ((E = c.variants) == null || E.forEach((
|
|
2205
|
+
c && ((E = c.variants) == null || E.forEach((C) => {
|
|
2208
2206
|
r = r.map((w) => {
|
|
2209
2207
|
var Q;
|
|
2210
|
-
return w.toLowerCase() === ((Q =
|
|
2208
|
+
return w.toLowerCase() === ((Q = C.color) == null ? void 0 : Q.toLowerCase()) ? C.name : w;
|
|
2211
2209
|
});
|
|
2212
2210
|
})), t.updateMetadata(A.stepName, { colors: r });
|
|
2213
2211
|
const B = /* @__PURE__ */ new Map();
|
|
2214
|
-
if (Object.entries(i).forEach(([
|
|
2215
|
-
B.set(
|
|
2212
|
+
if (Object.entries(i).forEach(([C, w]) => {
|
|
2213
|
+
B.set(C, w.browserValue);
|
|
2216
2214
|
}), !s.svg)
|
|
2217
2215
|
throw new Error("Colors changed before SVG loaded. This should never happen!");
|
|
2218
2216
|
const l = await this.changeColorsCommand(
|
|
2219
2217
|
s.svg,
|
|
2220
2218
|
s.width,
|
|
2221
2219
|
s.height,
|
|
2222
|
-
e.map((
|
|
2220
|
+
e.map((C) => C.id),
|
|
2223
2221
|
B
|
|
2224
2222
|
);
|
|
2225
2223
|
t.updateStorage(A.stepName, {
|
|
@@ -2235,7 +2233,7 @@ class fa {
|
|
|
2235
2233
|
if (!A.data || !A.data.regions)
|
|
2236
2234
|
throw new SA(A, "Missing regions.");
|
|
2237
2235
|
a(!0);
|
|
2238
|
-
const s = t.map((
|
|
2236
|
+
const s = t.map((h) => new $(h.id));
|
|
2239
2237
|
n.setMandatoryFulfilled(A.stepName, !1);
|
|
2240
2238
|
const i = e.asset;
|
|
2241
2239
|
if (!i)
|
|
@@ -2243,35 +2241,35 @@ class fa {
|
|
|
2243
2241
|
const o = i.fileLink;
|
|
2244
2242
|
if (!o)
|
|
2245
2243
|
throw new lA(i);
|
|
2246
|
-
const r = await ye(await this.getIllustrationBody(o)), c = await FA(r.svg), B = (
|
|
2247
|
-
const u = n.getLayouts().find((p) => p.panelId ===
|
|
2244
|
+
const r = await ye(await this.getIllustrationBody(o)), c = await FA(r.svg), B = (h) => {
|
|
2245
|
+
const u = n.getLayouts().find((p) => p.panelId === h.panelId);
|
|
2248
2246
|
if (!u)
|
|
2249
|
-
throw new
|
|
2250
|
-
const
|
|
2247
|
+
throw new L(h);
|
|
2248
|
+
const f = k();
|
|
2251
2249
|
return {
|
|
2252
|
-
regionElement: { id:
|
|
2253
|
-
command: this.getCreateElementCommand(
|
|
2250
|
+
regionElement: { id: f, region: h },
|
|
2251
|
+
command: this.getCreateElementCommand(f, h, u, {
|
|
2254
2252
|
stepName: A.stepName,
|
|
2255
2253
|
src: o,
|
|
2256
2254
|
objectURL: c,
|
|
2257
2255
|
svg: r
|
|
2258
2256
|
})
|
|
2259
2257
|
};
|
|
2260
|
-
}, l = A.data.regions.map(B), E = [...l.map((
|
|
2261
|
-
let
|
|
2258
|
+
}, l = A.data.regions.map(B), E = [...l.map((h) => h.command), ...s];
|
|
2259
|
+
let C = Array.from(Object.values(r.colors)).map((h) => h.browserValue);
|
|
2262
2260
|
const w = A.data.colorOption;
|
|
2263
|
-
return w && ((Q = w.variants) == null || Q.forEach((
|
|
2264
|
-
|
|
2265
|
-
var
|
|
2266
|
-
return u.toLowerCase() === ((
|
|
2261
|
+
return w && ((Q = w.variants) == null || Q.forEach((h) => {
|
|
2262
|
+
C = C.map((u) => {
|
|
2263
|
+
var f;
|
|
2264
|
+
return u.toLowerCase() === ((f = h.color) == null ? void 0 : f.toLowerCase()) ? h.name : u;
|
|
2267
2265
|
});
|
|
2268
|
-
})), n.updateMetadata(A.stepName, { colors:
|
|
2266
|
+
})), n.updateMetadata(A.stepName, { colors: C }), {
|
|
2269
2267
|
command: new G(E),
|
|
2270
2268
|
followup: async () => {
|
|
2271
2269
|
await n.setSelectionsAndElements(
|
|
2272
2270
|
A.stepName,
|
|
2273
2271
|
[e],
|
|
2274
|
-
l.map((
|
|
2272
|
+
l.map((h) => h.regionElement),
|
|
2275
2273
|
async () => {
|
|
2276
2274
|
n.setMandatoryFulfilled(A.stepName, !0), a(!1);
|
|
2277
2275
|
}
|
|
@@ -2317,8 +2315,8 @@ class Fa {
|
|
|
2317
2315
|
async () => {
|
|
2318
2316
|
const E = e.getModelContainer();
|
|
2319
2317
|
if (E) {
|
|
2320
|
-
const
|
|
2321
|
-
Promise.all(
|
|
2318
|
+
const C = A.data.targetMaterials.map((w) => E.applyMaterialVariant(w, o.id || "", l || {}));
|
|
2319
|
+
Promise.all(C).then(
|
|
2322
2320
|
() => e.setMandatoryFulfilled(A.stepName, !0)
|
|
2323
2321
|
);
|
|
2324
2322
|
}
|
|
@@ -2390,13 +2388,13 @@ class Ma {
|
|
|
2390
2388
|
var E;
|
|
2391
2389
|
const d = e.getModelContainer();
|
|
2392
2390
|
if (d && A.option) {
|
|
2393
|
-
const
|
|
2394
|
-
if (!
|
|
2391
|
+
const C = (E = B.asset) == null ? void 0 : E.fileLink;
|
|
2392
|
+
if (!C)
|
|
2395
2393
|
throw new _(B);
|
|
2396
2394
|
await d.applyModelVariant(
|
|
2397
2395
|
A.stepName || "",
|
|
2398
2396
|
{
|
|
2399
|
-
model:
|
|
2397
|
+
model: C,
|
|
2400
2398
|
contextService: e.getLayoutPreviewService()
|
|
2401
2399
|
},
|
|
2402
2400
|
A.data.replaceProductModel || !1
|
|
@@ -2476,7 +2474,7 @@ class ya {
|
|
|
2476
2474
|
return console.error("Missing configuration."), null;
|
|
2477
2475
|
t.updateStorage(A.stepName, { text: e });
|
|
2478
2476
|
const r = (B, l, d) => {
|
|
2479
|
-
const E = d || k(), w = t.getLayouts().find((
|
|
2477
|
+
const E = d || k(), w = t.getLayouts().find((h) => h.panelId === l.panelId);
|
|
2480
2478
|
if (!w)
|
|
2481
2479
|
return console.error(`Can not find layout for region: ${l.panelId}`), null;
|
|
2482
2480
|
const Q = [];
|
|
@@ -2488,7 +2486,7 @@ class ya {
|
|
|
2488
2486
|
colors: {},
|
|
2489
2487
|
id: E,
|
|
2490
2488
|
svg: B,
|
|
2491
|
-
type:
|
|
2489
|
+
type: H.Illustration,
|
|
2492
2490
|
y: l.top,
|
|
2493
2491
|
x: l.left,
|
|
2494
2492
|
rotation: l.rotation,
|
|
@@ -2603,9 +2601,9 @@ class Sa {
|
|
|
2603
2601
|
return console.error("No URL for picture!"), null;
|
|
2604
2602
|
a(!0), t.setMandatoryFulfilled(A.stepName, !1);
|
|
2605
2603
|
const o = t.getRegionElements(A.stepName).map((B) => new $(B.id)), r = (B) => {
|
|
2606
|
-
const d = t.getLayouts().find((
|
|
2604
|
+
const d = t.getLayouts().find((C) => C.panelId === B.panelId);
|
|
2607
2605
|
if (!d)
|
|
2608
|
-
throw new
|
|
2606
|
+
throw new L(B);
|
|
2609
2607
|
const E = k();
|
|
2610
2608
|
return {
|
|
2611
2609
|
regionElement: { id: E, region: B },
|
|
@@ -2615,7 +2613,7 @@ class Sa {
|
|
|
2615
2613
|
stepRegion: B,
|
|
2616
2614
|
id: E,
|
|
2617
2615
|
src: s,
|
|
2618
|
-
type:
|
|
2616
|
+
type: H.Image,
|
|
2619
2617
|
y: B.top,
|
|
2620
2618
|
x: B.left,
|
|
2621
2619
|
rotation: B.rotation,
|
|
@@ -2723,7 +2721,7 @@ class Na {
|
|
|
2723
2721
|
const a = t.getLayouts(), s = (t.getRegionElements(e.stepName) || []).map((i) => {
|
|
2724
2722
|
const o = i.region;
|
|
2725
2723
|
if (!a.find((c) => c.panelId === (o == null ? void 0 : o.panelId)))
|
|
2726
|
-
throw new
|
|
2724
|
+
throw new L(o);
|
|
2727
2725
|
return new jA(i.id, this.shapeFillId, A);
|
|
2728
2726
|
}).filter((i) => !!i);
|
|
2729
2727
|
t.getCommandDispatcher()(new G(s)), t.updateStorage(e.stepName, { colour: A });
|
|
@@ -2793,8 +2791,8 @@ class Na {
|
|
|
2793
2791
|
if (t.length > 0) {
|
|
2794
2792
|
const r = (B) => {
|
|
2795
2793
|
const l = B.region;
|
|
2796
|
-
if (!n.find((
|
|
2797
|
-
throw new
|
|
2794
|
+
if (!n.find((C) => C.panelId === (l == null ? void 0 : l.panelId)))
|
|
2795
|
+
throw new L(l);
|
|
2798
2796
|
const E = i();
|
|
2799
2797
|
return new jA(B.id, this.shapeFillId, E);
|
|
2800
2798
|
}, c = t.map(r).filter((B) => !!B);
|
|
@@ -2812,8 +2810,8 @@ class Na {
|
|
|
2812
2810
|
const r = (d) => {
|
|
2813
2811
|
const E = n.find((u) => u.panelId === d.panelId);
|
|
2814
2812
|
if (!E)
|
|
2815
|
-
throw new
|
|
2816
|
-
const
|
|
2813
|
+
throw new L(d);
|
|
2814
|
+
const C = i(), w = `
|
|
2817
2815
|
<svg
|
|
2818
2816
|
xmlns="http://www.w3.org/2000/svg"
|
|
2819
2817
|
xmlnsXlink="http://www.w3.org/1999/xlink"
|
|
@@ -2830,23 +2828,23 @@ class Na {
|
|
|
2830
2828
|
width="1"
|
|
2831
2829
|
height="1"
|
|
2832
2830
|
class="${this.shapeFillId}"
|
|
2833
|
-
fill="${
|
|
2831
|
+
fill="${C}"
|
|
2834
2832
|
/>
|
|
2835
2833
|
</svg>
|
|
2836
2834
|
`, Q = {};
|
|
2837
|
-
Q[this.shapeFillId] = { browserValue:
|
|
2838
|
-
const
|
|
2835
|
+
Q[this.shapeFillId] = { browserValue: C };
|
|
2836
|
+
const h = k();
|
|
2839
2837
|
return {
|
|
2840
|
-
id:
|
|
2838
|
+
id: h,
|
|
2841
2839
|
region: d,
|
|
2842
2840
|
command: new J(
|
|
2843
2841
|
{
|
|
2844
2842
|
stepRegion: d,
|
|
2845
2843
|
stepName: A.stepName,
|
|
2846
2844
|
colors: Q,
|
|
2847
|
-
id:
|
|
2845
|
+
id: h,
|
|
2848
2846
|
svg: w,
|
|
2849
|
-
type:
|
|
2847
|
+
type: H.Illustration,
|
|
2850
2848
|
y: d.top,
|
|
2851
2849
|
x: d.left,
|
|
2852
2850
|
rotation: d.rotation,
|
|
@@ -3063,7 +3061,7 @@ class Ua {
|
|
|
3063
3061
|
fillImage: e
|
|
3064
3062
|
});
|
|
3065
3063
|
for (const r of t) {
|
|
3066
|
-
const c = new
|
|
3064
|
+
const c = new JA(r.id, e);
|
|
3067
3065
|
n(c);
|
|
3068
3066
|
}
|
|
3069
3067
|
}
|
|
@@ -3088,15 +3086,15 @@ class Ua {
|
|
|
3088
3086
|
for (const d of e) {
|
|
3089
3087
|
if (!d.fontData)
|
|
3090
3088
|
throw new v("Failed to resolve font data for text.");
|
|
3091
|
-
const [E,
|
|
3089
|
+
const [E, C] = IA(
|
|
3092
3090
|
d.fontSize,
|
|
3093
3091
|
d.fontData,
|
|
3094
3092
|
{ left: d.x, top: d.y, width: d.width, height: d.height, rotation: d.rotation, panelId: "" },
|
|
3095
3093
|
[s],
|
|
3096
3094
|
{ size: t.data.size, minSize: t.data.minSize, maxSize: t.data.maxSize }
|
|
3097
3095
|
);
|
|
3098
|
-
B.set(d.id, E), l.set(d.id,
|
|
3099
|
-
const w = t.data.curved ? s : (
|
|
3096
|
+
B.set(d.id, E), l.set(d.id, C);
|
|
3097
|
+
const w = t.data.curved ? s : (C || []).join(`
|
|
3100
3098
|
`);
|
|
3101
3099
|
c.push(this.generateTextChangeCommandsForRegion(E, t.data, d.id, w, r));
|
|
3102
3100
|
}
|
|
@@ -3139,24 +3137,24 @@ class Ua {
|
|
|
3139
3137
|
if (o && l) {
|
|
3140
3138
|
const d = (r = o.variants) == null ? void 0 : r.find((E) => E.id === l);
|
|
3141
3139
|
if (d) {
|
|
3142
|
-
const E = await this.fontDataFromVariant(d),
|
|
3140
|
+
const E = await this.fontDataFromVariant(d), C = i.map((u) => ({ id: u.id, region: u.stepRegion })), w = (c = a.storage) == null ? void 0 : c.color, Q = (B = a.storage) == null ? void 0 : B.text;
|
|
3143
3141
|
await e.setSelectionsAndElements(
|
|
3144
3142
|
A.stepName,
|
|
3145
3143
|
[d],
|
|
3146
|
-
|
|
3144
|
+
C,
|
|
3147
3145
|
async () => {
|
|
3148
3146
|
e.updateMetadata(A.stepName, { color: w, text: Q }), e.updateStorage(A.stepName, { text: Q, inputText: Q });
|
|
3149
|
-
const u = i.map((p) => new we(p.id, E)),
|
|
3150
|
-
e.getCommandDispatcher()(
|
|
3147
|
+
const u = i.map((p) => new we(p.id, E)), f = new G(u);
|
|
3148
|
+
e.getCommandDispatcher()(f), e.setMandatoryFulfilled(A.stepName, !0);
|
|
3151
3149
|
}
|
|
3152
3150
|
);
|
|
3153
|
-
const { command:
|
|
3151
|
+
const { command: h } = K.updateInputText(
|
|
3154
3152
|
Q || "",
|
|
3155
3153
|
i,
|
|
3156
3154
|
A,
|
|
3157
3155
|
e
|
|
3158
3156
|
);
|
|
3159
|
-
|
|
3157
|
+
h && e.getCommandDispatcher()(h);
|
|
3160
3158
|
}
|
|
3161
3159
|
}
|
|
3162
3160
|
}
|
|
@@ -3195,10 +3193,10 @@ class Ua {
|
|
|
3195
3193
|
var B;
|
|
3196
3194
|
const r = n.markUpdatePending(), c = await this.fontDataFromVariant(e);
|
|
3197
3195
|
if (a.length > 0) {
|
|
3198
|
-
const l = a.map((
|
|
3196
|
+
const l = a.map((C) => new we(C.id, c));
|
|
3199
3197
|
if (o) {
|
|
3200
|
-
const
|
|
3201
|
-
l.push(...
|
|
3198
|
+
const C = a.map((w) => new JA(w.id, o));
|
|
3199
|
+
l.push(...C);
|
|
3202
3200
|
}
|
|
3203
3201
|
const d = await this.changeInputTextWithRegion(
|
|
3204
3202
|
A,
|
|
@@ -3238,7 +3236,7 @@ class Ua {
|
|
|
3238
3236
|
), E = l.flatMap((w) => w.commands);
|
|
3239
3237
|
if (o) {
|
|
3240
3238
|
const w = l.map(
|
|
3241
|
-
(Q) => new
|
|
3239
|
+
(Q) => new JA(Q.regionElement.id, o)
|
|
3242
3240
|
);
|
|
3243
3241
|
E.push(...w);
|
|
3244
3242
|
}
|
|
@@ -3263,35 +3261,35 @@ class Ua {
|
|
|
3263
3261
|
throw new Error("Step data not supplied");
|
|
3264
3262
|
const i = s.getTransaction().bulk && t.varyText || !1, o = i ? "" : n.text || t.defaultText || "", r = this.getProcessedInput(o, t, !1), c = async (l) => {
|
|
3265
3263
|
var w;
|
|
3266
|
-
const E = s.getLayouts().find((Q) => Q.panelId === l.panelId),
|
|
3264
|
+
const E = s.getLayouts().find((Q) => Q.panelId === l.panelId), C = k();
|
|
3267
3265
|
try {
|
|
3268
3266
|
if (!E)
|
|
3269
3267
|
throw new PA("Failed to find layout for region: " + l.panelId);
|
|
3270
3268
|
const Q = t.colorOption;
|
|
3271
|
-
let
|
|
3269
|
+
let h;
|
|
3272
3270
|
if (Q && Q.variants) {
|
|
3273
|
-
const
|
|
3271
|
+
const b = Q.variants.find((V) => {
|
|
3274
3272
|
var W;
|
|
3275
3273
|
return V.id === ((W = Q.defaultVariant) == null ? void 0 : W.id);
|
|
3276
3274
|
}) || Q.variants[0];
|
|
3277
|
-
|
|
3275
|
+
h = this.createTextFillSpotColor(Q, b), s.updateStorage(A, {
|
|
3278
3276
|
colorProfileAssetKey: (w = Q.colorProfile) == null ? void 0 : w.key
|
|
3279
3277
|
});
|
|
3280
3278
|
}
|
|
3281
|
-
const u = await this.getDefaultColor(t),
|
|
3279
|
+
const u = await this.getDefaultColor(t), f = u || "#000000", p = {
|
|
3282
3280
|
stepRegion: l,
|
|
3283
3281
|
stepName: A,
|
|
3284
3282
|
align: this.textAlign(t),
|
|
3285
|
-
fill: n.color ? n.color :
|
|
3283
|
+
fill: n.color ? n.color : f,
|
|
3286
3284
|
fontSize: t.size || OA,
|
|
3287
3285
|
fontData: a,
|
|
3288
|
-
id:
|
|
3286
|
+
id: C,
|
|
3289
3287
|
layer: l.layer,
|
|
3290
3288
|
layerIndex: l.layerIndex,
|
|
3291
3289
|
rotation: l.rotation,
|
|
3292
3290
|
text: r,
|
|
3293
3291
|
input: o,
|
|
3294
|
-
type:
|
|
3292
|
+
type: H.Textbox,
|
|
3295
3293
|
vertical: t.vertical,
|
|
3296
3294
|
x: l.left,
|
|
3297
3295
|
y: l.top,
|
|
@@ -3301,8 +3299,8 @@ class Ua {
|
|
|
3301
3299
|
verticalAlign: t.verticalAlign || "middle",
|
|
3302
3300
|
curved: t.curved,
|
|
3303
3301
|
paths: t.paths,
|
|
3304
|
-
fillSpotColorDefinition:
|
|
3305
|
-
},
|
|
3302
|
+
fillSpotColorDefinition: h
|
|
3303
|
+
}, D = [], m = /* @__PURE__ */ new Map(), M = /* @__PURE__ */ new Map();
|
|
3306
3304
|
if (!p.fontData)
|
|
3307
3305
|
throw new v("Failed to resolve font data for text.");
|
|
3308
3306
|
const [Y, F] = IA(
|
|
@@ -3319,16 +3317,16 @@ class Ua {
|
|
|
3319
3317
|
[r],
|
|
3320
3318
|
{ size: t.size, minSize: t.minSize, maxSize: t.maxSize }
|
|
3321
3319
|
);
|
|
3322
|
-
m.set(p.id, Y),
|
|
3323
|
-
const
|
|
3320
|
+
m.set(p.id, Y), M.set(p.id, F);
|
|
3321
|
+
const U = t.curved || t.vertical ? r : (F || []).join(`
|
|
3324
3322
|
`);
|
|
3325
|
-
|
|
3326
|
-
this.generateTextChangeCommandsForRegion(Y, t, p.id,
|
|
3323
|
+
D.push(
|
|
3324
|
+
this.generateTextChangeCommandsForRegion(Y, t, p.id, U, i)
|
|
3327
3325
|
);
|
|
3328
|
-
const
|
|
3329
|
-
return
|
|
3330
|
-
regionElement: { id:
|
|
3331
|
-
commands: [
|
|
3326
|
+
const S = new J(p, E);
|
|
3327
|
+
return S.varying = i, {
|
|
3328
|
+
regionElement: { id: C, region: l },
|
|
3329
|
+
commands: [S, ...D],
|
|
3332
3330
|
newElement: p,
|
|
3333
3331
|
fontData: a
|
|
3334
3332
|
};
|
|
@@ -3364,30 +3362,30 @@ class Ua {
|
|
|
3364
3362
|
* @deprecated
|
|
3365
3363
|
*/
|
|
3366
3364
|
async changeInputTextWithRegion(A, e, t, a, n, s, i, o, r, c) {
|
|
3367
|
-
const B = (a || "").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g, ""), l = this.getProcessedInput(B, A.data, i), d = s.getRegionElements(A.stepName), E = /* @__PURE__ */ new Map(),
|
|
3365
|
+
const B = (a || "").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g, ""), l = this.getProcessedInput(B, A.data, i), d = s.getRegionElements(A.stepName), E = /* @__PURE__ */ new Map(), C = /* @__PURE__ */ new Map();
|
|
3368
3366
|
for (const p of d)
|
|
3369
3367
|
if (p.region) {
|
|
3370
|
-
const [
|
|
3368
|
+
const [D, m] = IA(
|
|
3371
3369
|
e,
|
|
3372
3370
|
t,
|
|
3373
3371
|
p.region,
|
|
3374
3372
|
[l],
|
|
3375
3373
|
{ size: A.data.size, minSize: A.data.minSize, maxSize: A.data.maxSize }
|
|
3376
3374
|
);
|
|
3377
|
-
E.set(p.id,
|
|
3375
|
+
E.set(p.id, D), C.set(p.id, m);
|
|
3378
3376
|
}
|
|
3379
3377
|
const Q = (() => {
|
|
3380
3378
|
if (A.data && A.data.maxLength && l.length > A.data.maxLength)
|
|
3381
3379
|
return c && c(!0), { info: "0" };
|
|
3382
|
-
const p = s.getProfanities(),
|
|
3383
|
-
for (const m of
|
|
3384
|
-
for (const
|
|
3385
|
-
const Y = p[
|
|
3380
|
+
const p = s.getProfanities(), D = XA(l.toLowerCase());
|
|
3381
|
+
for (const m of D)
|
|
3382
|
+
for (const M in p) {
|
|
3383
|
+
const Y = p[M].toLowerCase().replace(/\s/g, "");
|
|
3386
3384
|
if (m === Y)
|
|
3387
3385
|
return o(!0), { error: "Blocked profanity." };
|
|
3388
3386
|
}
|
|
3389
3387
|
return !A.data.vertical && !A.data.allowNewlines && (l.includes(`
|
|
3390
|
-
`) || l.includes("\r")) ? (o(!0), { error: "Cannot span multiple lines." }) : !A.data.curved && !Array.from(
|
|
3388
|
+
`) || l.includes("\r")) ? (o(!0), { error: "Cannot span multiple lines." }) : !A.data.curved && !Array.from(C.values()).every((M) => M) ? (o(!0), { error: "Does not fit." }) : (o(!1), { info: (A.data.maxLength - l.length).toString() });
|
|
3391
3389
|
})();
|
|
3392
3390
|
if (Q.error) {
|
|
3393
3391
|
r(Q.error);
|
|
@@ -3398,24 +3396,24 @@ class Ua {
|
|
|
3398
3396
|
s.updateStorage(A.stepName, { text: B }), s.updateMetadata(A.stepName, {
|
|
3399
3397
|
text: this.injectReplaceableText(B, A.data)
|
|
3400
3398
|
});
|
|
3401
|
-
const
|
|
3399
|
+
const h = s.getTransaction().bulk && A.data.varyText || !1;
|
|
3402
3400
|
n.defaultCleared && s.setMandatoryFulfilled(A.stepName, !0);
|
|
3403
3401
|
const u = [];
|
|
3404
3402
|
for (const p of d) {
|
|
3405
|
-
const
|
|
3403
|
+
const D = A.data.curved ? l : (C.get(p.id) || []).join(`
|
|
3406
3404
|
`);
|
|
3407
3405
|
u.push(
|
|
3408
3406
|
this.generateTextChangeCommandsForRegion(
|
|
3409
3407
|
E.get(p.id) || 1,
|
|
3410
3408
|
A.data,
|
|
3411
3409
|
p.id,
|
|
3412
|
-
|
|
3413
|
-
|
|
3410
|
+
D,
|
|
3411
|
+
h
|
|
3414
3412
|
)
|
|
3415
3413
|
);
|
|
3416
3414
|
}
|
|
3417
|
-
const
|
|
3418
|
-
return
|
|
3415
|
+
const f = new G(u);
|
|
3416
|
+
return f.varying = h, f;
|
|
3419
3417
|
}
|
|
3420
3418
|
}
|
|
3421
3419
|
const K = new Ua();
|
|
@@ -4682,27 +4680,27 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
|
|
|
4682
4680
|
</g>
|
|
4683
4681
|
</svg>
|
|
4684
4682
|
|
|
4685
|
-
`,
|
|
4686
|
-
const e =
|
|
4683
|
+
`, R = (g) => xt("http://www.w3.org/2000/svg", g), oe = (g, A) => {
|
|
4684
|
+
const e = R("rect");
|
|
4687
4685
|
return e.setAttribute("height", `${g}`), e.setAttribute("width", `${A}`), e;
|
|
4688
4686
|
}, ka = () => {
|
|
4689
|
-
const g =
|
|
4687
|
+
const g = R("svg");
|
|
4690
4688
|
return g.setAttribute("xmlns", "http://www.w3.org/2000/svg"), g.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"), g.setAttribute("version", "1.1"), g;
|
|
4691
|
-
},
|
|
4692
|
-
const A =
|
|
4689
|
+
}, ba = (g) => {
|
|
4690
|
+
const A = R("use");
|
|
4693
4691
|
return A.setAttribute("xlink:href", g), A.setAttribute("href", g), A;
|
|
4694
4692
|
};
|
|
4695
4693
|
function tt(g) {
|
|
4696
4694
|
const A = ka(), e = /viewBox="0 0 (.+?) (.+?)"/.exec(g) || ["0", "0"], t = parseFloat(e[1]), a = parseFloat(e[2]);
|
|
4697
4695
|
return A.setAttribute("height", `${a}`), A.setAttribute("width", `${t}`), [A, a, t];
|
|
4698
4696
|
}
|
|
4699
|
-
const
|
|
4700
|
-
const t =
|
|
4697
|
+
const Ja = (g, A, e) => {
|
|
4698
|
+
const t = R("g");
|
|
4701
4699
|
g.appendChild(t), t.setAttribute("id", e), t.innerHTML = A;
|
|
4702
4700
|
};
|
|
4703
4701
|
function at(g, A, e) {
|
|
4704
4702
|
const t = k();
|
|
4705
|
-
|
|
4703
|
+
Ja(A, e, `bgdef-${t}`), g.appendChild(ba(`#bgdef-${t}`));
|
|
4706
4704
|
}
|
|
4707
4705
|
const nt = (g, A, e, t) => {
|
|
4708
4706
|
const a = wA("filter");
|
|
@@ -4859,31 +4857,31 @@ class La extends ie {
|
|
|
4859
4857
|
}
|
|
4860
4858
|
brandSvg(A, e) {
|
|
4861
4859
|
const t = A.toSVG(2), a = A.getBoundingBox(), n = a.x2 - a.x1, s = A.toPathData(3), i = () => {
|
|
4862
|
-
const p =
|
|
4863
|
-
p.appendChild(
|
|
4864
|
-
const m =
|
|
4860
|
+
const p = R("g"), D = R("defs");
|
|
4861
|
+
p.appendChild(D), D.appendChild(nt(3, 7, 4, "shadow"));
|
|
4862
|
+
const m = R("g");
|
|
4865
4863
|
p.appendChild(m), m.setAttribute("filter", "url(#shadow)"), m.innerHTML = t;
|
|
4866
|
-
const
|
|
4867
|
-
p.appendChild(
|
|
4868
|
-
const Y =
|
|
4864
|
+
const M = R("g");
|
|
4865
|
+
p.appendChild(M), M.setAttribute("fill", "red"), M.setAttribute("stroke", "red"), M.setAttribute("stroke-width", "9"), M.innerHTML = t;
|
|
4866
|
+
const Y = R("g");
|
|
4869
4867
|
p.appendChild(Y), Y.setAttribute("fill", "#9d2621"), Y.setAttribute("transform", "translate(1,1)"), Y.innerHTML = t;
|
|
4870
|
-
const F =
|
|
4871
|
-
return p.appendChild(F), F.setAttribute("fill", "yellow"), F.innerHTML = t, new ce(p).transform(([
|
|
4868
|
+
const F = R("g");
|
|
4869
|
+
return p.appendChild(F), F.setAttribute("fill", "yellow"), F.innerHTML = t, new ce(p).transform(([S, b]) => [S, b + (n / 2 - S) ** 2 / (n * 2.9)]), p;
|
|
4872
4870
|
}, [o, r, c] = tt(e);
|
|
4873
4871
|
if (!o)
|
|
4874
4872
|
return "";
|
|
4875
|
-
const B =
|
|
4873
|
+
const B = R("defs");
|
|
4876
4874
|
o.appendChild(B), at(o, B, e);
|
|
4877
|
-
const l = r * 0.23, d = c * 0.94, E = c * 0.04,
|
|
4878
|
-
o.appendChild(w), w.setAttribute("transform", `translate(${E} ${
|
|
4875
|
+
const l = r * 0.23, d = c * 0.94, E = c * 0.04, C = r * 0.53, w = R("g");
|
|
4876
|
+
o.appendChild(w), w.setAttribute("transform", `translate(${E} ${C}) rotate(-21)`);
|
|
4879
4877
|
const Q = oe(l, d);
|
|
4880
4878
|
Q.setAttribute("opacity", "0"), w.appendChild(Q);
|
|
4881
|
-
const
|
|
4882
|
-
w.appendChild(
|
|
4879
|
+
const h = R("g");
|
|
4880
|
+
w.appendChild(h);
|
|
4883
4881
|
const u = i();
|
|
4884
|
-
|
|
4885
|
-
const
|
|
4886
|
-
return re(
|
|
4882
|
+
h.appendChild(u);
|
|
4883
|
+
const f = ne(s);
|
|
4884
|
+
return re(h, f, l, d), st(o.outerHTML);
|
|
4887
4885
|
}
|
|
4888
4886
|
}
|
|
4889
4887
|
const Oa = "data:application/octet-stream;base64,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ZWxmIE1ha2VyIDIuMy41AABNAGEAbAB0AGUAcwBlAHIAcwBSAGUAZwB1AGwAYQByAABNYWx0ZXNlcnNSZWd1bGFyAABNAGEAbAB0AGUAcwBlAHIAcwAATWFsdGVzZXJzAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAAAAAAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAABAAIBAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCsAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAljb250cm9sTEYJY29udHJvbENSB0FwLmxpZ2EHQWoubGlnYQdFdC5saWdhB0VmLmxpZ2EHRWoubGlnYQdFay5saWdhB0VsLmxpZ2EHRWIubGlnYQdGdC5saWdhB0ZoLmxpZ2EHRmsubGlnYQdGbC5saWdhB0ZiLmxpZ2EHSHQubGlnYQdIZi5saWdhB0l0LmxpZ2EHSXAubGlnYQdJZi5saWdhB0lqLmxpZ2EHSWwubGlnYQdJYi5saWdhB0p0LmxpZ2EHSmYubGlnYQdKaC5saWdhB0prLmxpZ2EHSmwubGlnYQdKYi5saWdhB0t0LmxpZ2EHS3AubGlnYQdLeS5saWdhB0xqLmxpZ2EHTWoubGlnYQdNaC5saWdhB01mLmxpZ2EHTnQubGlnYQdOZi5saWdhB09mLmxpZ2EHT3oubGlnYQdQcS5saWdhB1B3LmxpZ2EHUHIubGlnYQdQdC5saWdhB1B5LmxpZ2EHUHUubGlnYQdQaS5saWdhB1BmLmxpZ2EHUGgubGlnYQdQai5saWdhB1BrLmxpZ2EHUGwubGlnYQdQei5saWdhB1B4LmxpZ2EHUHYubGlnYQdQYi5saWdhB1BuLmxpZ2EHUG0ubGlnYQdScC5saWdhB1JmLmxpZ2EHUmoubGlnYQdUdC5saWdhB1RmLmxpZ2EHVGgubGlnYQdUay5saWdhB1RsLmxpZ2EHVGIubGlnYQdVdC5saWdhB1VzLmxpZ2EHVWYubGlnYQdWdC5saWdhB1ZzLmxpZ2EHVmYubGlnYQdWbC5saWdhB1d0LmxpZ2EHV2YubGlnYQdYcC5saWdhB1l0LmxpZ2EHWWkubGlnYQdZZi5saWdhB1loLmxpZ2EHWWwubGlnYQdZay5saWdhB1liLmxpZ2EHQWYubGlnYQdDeS5saWdhB0VoLmxpZ2EHR3IubGlnYQdPcC5saWdhB2J0LmxpZ2EHYnIubGlnYQdiZi5saWdhB2JqLmxpZ2EHYnoubGlnYQdkdC5saWdhB2VmLmxpZ2EHZnQubGlnYQdmaC5saWdhB2ZiLmxpZ2EHZmsubGlnYQdnai5saWdhB2pqLmxpZ2EHeWoubGlnYQd0dC5saWdhB3RmLmxpZ2EHdGgubGlnYQd0aS5saWdhB3RrLmxpZ2EHdGwubGlnYQh0dGgubGlnYQhlZmYubGlnYQhlZmIubGlnYQdmZi5saWdhB2ZpLmxpZ2EHZmwubGlnYQAAAAAAAAH//wACAAEAAAAMAAAAHAAAAAIAAgADADoAAQA7AKsAAgAEAAAAAgAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQQIAB0AQABaAGQAngDIANIA5AEWAUgBYgFsAYYBmAGyAkQCXgKQAqoCzALeAugDIgNMA1YDdAOuA7gDwgP+AAMACAAOABQAjQACACUAPAACACkAOwACAC8AAQAEAI4AAgA4AAcAEAAWABwAIgAoAC4ANACPAAIAJwBCAAIAIQBBAAIAKwBAAAIAKgA/AAIAKQA+AAIAJQA9AAIAMwAFAAwAEgAYAB4AJABHAAIAIQBGAAIAKwBFAAIAKgBEAAIAJwBDAAIAMwABAAQAkAACADEAAgAGAAwASQACACUASAACADMABgAOABQAGgAgACYALABPAAIAIQBOAAIAKwBNAAIAKQBMAAIAJQBLAAIALwBKAAIAMwAGAA4AFAAaACAAJgAsAFUAAgAhAFQAAgArAFMAAgAqAFIAAgAnAFEAAgAlAFAAAgAzAAMACAAOABQAWAACADgAVwACAC8AVgACADMAAQAEAFkAAgApAAMACAAOABQAXAACACUAWwACACcAWgACACkAAgAGAAwAXgACACUAXQACADMAAwAIAA4AFACRAAIALwBgAAIAOQBfAAIAJQASACYALAAyADgAPgBEAEoAUABWAFwAYgBoAG4AdAB6AIAAhgCMAHIAAgAsAHEAAgAtAHAAAgAhAG8AAgA1AG4AAgA3AG0AAgA5AGwAAgArAGsAAgAqAGoAAgApAGkAAgAnAGgAAgAlAGcAAgAoAGYAAgA0AGUAAgA4AGQAAgAzAGMAAgAxAGIAAgA2AGEAAgAwAAMACAAOABQAdQACACkAdAACACUAcwACAC8ABgAOABQAGgAgACYALAB7AAIAIQB6AAIAKwB5AAIAKgB4AAIAJwB3AAIAJQB2AAIAMwADAAgADgAUAH4AAgAlAH0AAgAyAHwAAgAzAAQACgAQABYAHACCAAIAKwCBAAIAJQCAAAIAMgB/AAIAMwACAAYADACEAAIAJQCDAAIAMwABAAQAhQACAC8ABwAQABYAHAAiACgALgA0AIwAAgAhAIsAAgAqAIoAAgArAIkAAgAnAIgAAgAlAIcAAgAoAIYAAgAzAAUADAASABgAHgAkAJYAAgA5AJUAAgApAJQAAgAlAJMAAgAxAJIAAgAzAAEABACXAAIAMwADAAgAEAAYAKgAAwAlACEApwADACUAJQCYAAIAJQAHABAAFgAcACIAKAAuADQAqwACACsAqgACACgAqQACACUAnAACACoAmwACACEAmgACACcAmQACADMAAQAEAJ0AAgApAAEABACeAAIAKQAHABAAGAAeACQAKgAwADYApgADADMAJwClAAIAKwCkAAIAKgCjAAIAKACiAAIAJwChAAIAJQCgAAIAMwABAAQAnwACACkAAQAdAAYACAAKAAsADAANAA4ADwAQABEAEgATABQAFQAXABkAGgAbABwAHQAeACEAIwAkACUAJgApADMAOAAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFrZXJuAAgAAAABAAAAAQAEAAIAAAABAAgAAQPGAAQAAABEAJIAnADSAOABIgEoATYBPAFKAVABXgFkAW4BfAGKAawBsgHAAcYB1AHiAewB/gIIAhYCSAJiAnAChgKcAqoCvALKAtAC6gL0AvoDAAMKAxADGgMgAyYDLAMyAzgDOAMyAz4DRANOAz4DVANaA2ADIANmA2wDcgN4A34DiAOOA5gDngOkA7IDvAACAC7//AA3//IADQAl/+oAKP/8ACn/9AAq//AAK//6ACz//gAt//4AMf/qADP//AA0//wANf/+ADb/+AA5//QAAwAt//wALv/8ADb//AAQACT//AAl/+wAJv/6ACf//AAp/+wAKv/0ACv/+gAs//gALf/8AC//7gAx//gAMv/0ADT/9gA3/+oAOP/6ADn/5AABADf/+gADADX//AA3/+gAOf/6AAEALv/2AAMAKP/8ACn/6AAy/+QAAQAu//IAAwAo/+4AL//2ADX/5gABACT/8AACABgAAgAoAAQAAwAo//4ALv/wADL/+AADACf/9gAv/+4Ao//sAAgAKf/qACv/9AAu//wAL//uADH/7gAy//IAN//mAJX/9AABADYADgADACAABAAjAAQAM//4AAEAMv/8AAMAJv/+ACr/+AA3//4AAwAo//gALv/0AJn/7AACACMAAgAl/+wABAAk//wAL//8ADT/9AA4//4AAgAt//IAq//iAAMAJf/sACb/+AA3//wADAAk//wAJv/+ACj/+gAp/+AAK//+ACz/9gAt//wAL//qADH/7AAy//IAN//cAKP/4gAGACQAAgAl/9oAK//yAC//4gAx/+gAMv/8AAMAKQB+ADL/7ACeAIgABQAg//wAIv/4ACb//AAu//YANQAEAAUAKf/0ACr/+AAv//QAM//mAKP/3gADACEAHAAkAAIALv/4AAQAJf/0AC3//gAv//wAmf/8AAMAJP/wACf/+AAp/+4AAQAk//oABgAg//QAIf/wACj/9gAu/+wAL//0ADP/9AACACH//gA3//IAAQApAEIAAQAnACgAAgAzADQAqgAoAAEAMwA0AAIAMwAyAKEARgABADL/6gABADMALAABACkANAABAJoAGAABADMAMgABACkAOAABADMAMAACACUAEgAzAC4AAQApAHgAAQApADYAAQAzAC4AAQAzADgAAQAzAEIAAQAzAEwAAQAz//IAAQAnAEgAAgAl/+4Amv/oAAEAKQBiAAIAKQBaAJ4AUAABACkAVgABAKEARAADADMANgCaABIAogBKAAIAJwAsAKEARgACAC3/8gA3/+oAAQBEAAYABwAIAAkACgAMABEAFAAVABgAHQAgACEAIgAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOQA8AD0APgBIAEkASwBMAE0AUABRAFkAWgBcAF4AXwBhAGgAagB+AIEAhACIAI0AkQCYAJoAnQCeAJ8AoAChAKkAqgAAAAAAAQAAAADUGBYRAAAAANfpcqUAAAAA1+lypQ==";
|
|
@@ -4903,34 +4901,34 @@ class za extends ie {
|
|
|
4903
4901
|
}
|
|
4904
4902
|
brandSvg(A, e, t) {
|
|
4905
4903
|
const a = A.toSVG(2), n = A.getBoundingBox(), s = n.y2 - n.y1, i = n.x2 - n.x1, o = A.toPathData(3), r = () => {
|
|
4906
|
-
const m =
|
|
4907
|
-
m.appendChild(
|
|
4908
|
-
const Y =
|
|
4904
|
+
const m = R("g"), M = R("g");
|
|
4905
|
+
m.appendChild(M), M.setAttribute("stroke", "#5C1A0D"), M.setAttribute("stroke-width", "4"), M.setAttribute("transform", "translate(1,1)"), M.innerHTML = a;
|
|
4906
|
+
const Y = R("g");
|
|
4909
4907
|
m.appendChild(Y), Y.setAttribute("fill", "#FFE386"), Y.setAttribute("transform", "translate(1,1)"), Y.innerHTML = a;
|
|
4910
|
-
const F =
|
|
4908
|
+
const F = R("g");
|
|
4911
4909
|
m.appendChild(F), F.setAttribute("fill", "white"), F.innerHTML = a;
|
|
4912
|
-
const
|
|
4913
|
-
return
|
|
4914
|
-
|
|
4915
|
-
|
|
4916
|
-
]),
|
|
4910
|
+
const U = new ce(m);
|
|
4911
|
+
return U.transform(([S, b]) => [S, b + ((i - S) * b) ** 2 / (i * 5e4)]), U.transform(([S, b]) => [
|
|
4912
|
+
S,
|
|
4913
|
+
b + (i / 3 - S) ** 2 / i * this.indicator(S < i / 3)
|
|
4914
|
+
]), U.transform(([S, b]) => [S - (s - b) * (i - S) / 800, b]), m;
|
|
4917
4915
|
}, [c, B, l] = tt(e);
|
|
4918
4916
|
if (!c)
|
|
4919
4917
|
return "";
|
|
4920
|
-
const d =
|
|
4918
|
+
const d = R("defs");
|
|
4921
4919
|
c.appendChild(d), at(c, d, e);
|
|
4922
|
-
let E,
|
|
4923
|
-
t ? (E = B * 0.25 * (1 + 0.1),
|
|
4924
|
-
const
|
|
4925
|
-
c.appendChild(
|
|
4926
|
-
const u = oe(E,
|
|
4927
|
-
u.setAttribute("opacity", "0"),
|
|
4928
|
-
const
|
|
4929
|
-
|
|
4920
|
+
let E, C, w, Q;
|
|
4921
|
+
t ? (E = B * 0.25 * (1 + 0.1), C = l / 2 * (1 + 0.1), w = l * 0.22, Q = B * 0.32) : (E = B * 0.22 * (1 + 0.1), C = l * 0.8, w = l * 0.067, Q = B * 0.33);
|
|
4922
|
+
const h = R("g");
|
|
4923
|
+
c.appendChild(h), h.setAttribute("transform", `translate(${w} ${Q}) rotate(-10)`);
|
|
4924
|
+
const u = oe(E, C);
|
|
4925
|
+
u.setAttribute("opacity", "0"), h.appendChild(u);
|
|
4926
|
+
const f = R("g");
|
|
4927
|
+
h.appendChild(f);
|
|
4930
4928
|
const p = r();
|
|
4931
|
-
|
|
4932
|
-
const
|
|
4933
|
-
return re(
|
|
4929
|
+
f.appendChild(p);
|
|
4930
|
+
const D = ne(o);
|
|
4931
|
+
return re(f, D, E, C), c.outerHTML;
|
|
4934
4932
|
}
|
|
4935
4933
|
// 1 if true, 0 if false.
|
|
4936
4934
|
}
|
|
@@ -4947,34 +4945,34 @@ class ja extends ie {
|
|
|
4947
4945
|
}
|
|
4948
4946
|
svgElement(A, e) {
|
|
4949
4947
|
const t = ae(Ka), n = A !== "" ? ((u) => u.charAt(0).toUpperCase() + u.substr(1).toLowerCase())(A) : "", s = t.getPath(n, 0, 72, 72), i = s.toSVG(2), o = s.getBoundingBox(), r = o.x2 - o.x1, c = s.toPathData(3), B = () => {
|
|
4950
|
-
const u =
|
|
4948
|
+
const u = R("g");
|
|
4951
4949
|
u.classList.add("module-text-group");
|
|
4952
|
-
const
|
|
4953
|
-
u.appendChild(
|
|
4954
|
-
const p =
|
|
4955
|
-
p.setAttribute("d", c), p.setAttribute("stroke", "black"), p.setAttribute("stroke-width", "3"),
|
|
4956
|
-
const
|
|
4957
|
-
|
|
4958
|
-
const m =
|
|
4950
|
+
const f = R("defs");
|
|
4951
|
+
u.appendChild(f), f.appendChild(nt(0, 2, 2, "shadow"));
|
|
4952
|
+
const p = R("path");
|
|
4953
|
+
p.setAttribute("d", c), p.setAttribute("stroke", "black"), p.setAttribute("stroke-width", "3"), f.appendChild(p);
|
|
4954
|
+
const D = R("g");
|
|
4955
|
+
D.classList.add("module-layer0"), u.appendChild(D), D.setAttribute("filter", "url(#shadow)"), D.innerHTML = p.outerHTML;
|
|
4956
|
+
const m = R("g");
|
|
4959
4957
|
m.classList.add("module-layer1"), u.appendChild(m), m.setAttribute("stroke-width", "3"), m.setAttribute("stroke", "rgb(45,41,38)"), m.setAttribute("fill", "rgb(45,41,38)"), m.setAttribute("transform", "translate(0.5,0)"), m.innerHTML = i;
|
|
4960
|
-
const
|
|
4961
|
-
|
|
4962
|
-
const Y =
|
|
4963
|
-
return Y.classList.add("module-layer3"), u.appendChild(Y), Y.setAttribute("fill", "white"), Y.innerHTML = i, new ce(u).transform(([
|
|
4964
|
-
}, l =
|
|
4958
|
+
const M = R("g");
|
|
4959
|
+
M.classList.add("module-layer2"), u.appendChild(M), M.setAttribute("fill", "rgb(255,209,0)"), M.setAttribute("transform", "translate(1,-0.1)"), M.innerHTML = i;
|
|
4960
|
+
const Y = R("g");
|
|
4961
|
+
return Y.classList.add("module-layer3"), u.appendChild(Y), Y.setAttribute("fill", "white"), Y.innerHTML = i, new ce(u).transform(([U, S]) => [U, S + (r / 2 - U) ** 2 / (r * 6)]), u;
|
|
4962
|
+
}, l = R("g");
|
|
4965
4963
|
l.classList.add("module-root");
|
|
4966
|
-
const d =
|
|
4964
|
+
const d = R("defs");
|
|
4967
4965
|
l.appendChild(d);
|
|
4968
|
-
const E =
|
|
4966
|
+
const E = R("g");
|
|
4969
4967
|
E.classList.add("module-bounds"), l.appendChild(E);
|
|
4970
|
-
const
|
|
4971
|
-
|
|
4972
|
-
const w =
|
|
4968
|
+
const C = oe(e.height, e.width);
|
|
4969
|
+
C.setAttribute("opacity", "0"), E.appendChild(C);
|
|
4970
|
+
const w = R("g");
|
|
4973
4971
|
w.classList.add("module-text-enclosure"), l.appendChild(w);
|
|
4974
4972
|
const Q = B();
|
|
4975
4973
|
w.appendChild(Q);
|
|
4976
|
-
const
|
|
4977
|
-
return re(w,
|
|
4974
|
+
const h = ne(c);
|
|
4975
|
+
return re(w, h, e.height, e.width, 0.35, 0.65), st(l.outerHTML);
|
|
4978
4976
|
}
|
|
4979
4977
|
}
|
|
4980
4978
|
async function it(g) {
|
|
@@ -5003,25 +5001,24 @@ class Ie extends Xe {
|
|
|
5003
5001
|
}
|
|
5004
5002
|
}
|
|
5005
5003
|
class Wa {
|
|
5006
|
-
|
|
5007
|
-
|
|
5008
|
-
|
|
5009
|
-
var w;
|
|
5004
|
+
constructor(A, e, t, a, n, s, i, o, r, c, B = !1, l, d = !1, E = !1) {
|
|
5005
|
+
this.workflowStatePromiseQueue = new qe(1), this.variationRecords = [], this.initialized = !1, this.readOnly = !1, this.isReloadedTransaction = !1, this.singleVariantsRenderable = !1, this.renderLayouts = () => {
|
|
5006
|
+
var Q;
|
|
5010
5007
|
if (!this.previewService)
|
|
5011
5008
|
return;
|
|
5012
|
-
const
|
|
5013
|
-
if (
|
|
5014
|
-
for (const [,
|
|
5015
|
-
|
|
5009
|
+
const C = this.getCommandContext().getAllLayouts(), w = (Q = this.getLayoutPreviewService()) == null ? void 0 : Q.getAll();
|
|
5010
|
+
if (w)
|
|
5011
|
+
for (const [, h] of w)
|
|
5012
|
+
h.render(
|
|
5016
5013
|
this.getWorkflow(),
|
|
5017
|
-
|
|
5014
|
+
C,
|
|
5018
5015
|
this.getCurrentVariationRecord() || null,
|
|
5019
5016
|
this.getProduct().overlayImageUrl
|
|
5020
5017
|
);
|
|
5021
|
-
}, this.updateTransaction = n, this.commandContext = a, this.reloadedState = c, this.transaction = s, this.readOnly = B, this.confirmedDesign = !1, this.editedSteps = {}, this.informationResults = [], this.mandatorySteps = {}, this.pendingUpdates = [], this.selectionCost = 0, this.workflow = A, this.stepSpecificServices = {}, this.profanityFilter = e, this.pollers = [], this.allScenes = [], this.layouts = t, this.product = i, this.previewService = o, this.modelContainer = l, this.stepElements = {}, this.stepInitialised = {}, this.stepMetadata = {}, this.stepSelections = {}, this.storage = {}, this.confirmCallbacks = [], this.editedCallbacks = [], this.elementsCallbacks = [], this.informationResultCallbacks = [], this.initCallbacks = [], this.mandatoryCallbacks = [], this.makingAdjustmentsCallback = [], this.metadataCallbacks = [], this.selectionCallbacks = [], this.stepSpecificStorageCallbacks = {}, this.storageCallbacks = [], this.currentVariationRecordCallbacks = [], this.variationRecordCallbacks = [], this.currentAdjustingStepId = "", this.renderableContextService = r, this.currentVariationRecord = null, this.isReloadedTransaction = d, this.initializationPromise = this.initializeDefaultWorkflowState(A, s), this.initializationPromise.then(() => {
|
|
5018
|
+
}, this.updateTransaction = n, this.commandContext = a, this.reloadedState = c, this.transaction = s, this.readOnly = B, this.singleVariantsRenderable = E, this.confirmedDesign = !1, this.editedSteps = {}, this.informationResults = [], this.mandatorySteps = {}, this.pendingUpdates = [], this.selectionCost = 0, this.workflow = A, this.stepSpecificServices = {}, this.profanityFilter = e, this.pollers = [], this.allScenes = [], this.layouts = t, this.product = i, this.previewService = o, this.modelContainer = l, this.stepElements = {}, this.stepInitialised = {}, this.stepMetadata = {}, this.stepSelections = {}, this.storage = {}, this.confirmCallbacks = [], this.editedCallbacks = [], this.elementsCallbacks = [], this.informationResultCallbacks = [], this.initCallbacks = [], this.mandatoryCallbacks = [], this.makingAdjustmentsCallback = [], this.metadataCallbacks = [], this.selectionCallbacks = [], this.stepSpecificStorageCallbacks = {}, this.storageCallbacks = [], this.currentVariationRecordCallbacks = [], this.variationRecordCallbacks = [], this.currentAdjustingStepId = "", this.renderableContextService = r, this.currentVariationRecord = null, this.isReloadedTransaction = d, this.initializationPromise = this.initializeDefaultWorkflowState(A, s), this.initializationPromise.then(() => {
|
|
5022
5019
|
this.initialized = !0;
|
|
5023
|
-
}), this.initializationPromise.catch((
|
|
5024
|
-
throw console.error(
|
|
5020
|
+
}), this.initializationPromise.catch((C) => {
|
|
5021
|
+
throw console.error(C), this.initialized = !1, new Error("Workflow initialization failed due to an error. See console.");
|
|
5025
5022
|
}), this.initializationPromise.finally(
|
|
5026
5023
|
() => this.getCommandContext().registerStateCallback(() => {
|
|
5027
5024
|
this.updateStateWithServer(), this.renderLayouts();
|
|
@@ -5456,14 +5453,14 @@ class Wa {
|
|
|
5456
5453
|
this.stepSelections = {
|
|
5457
5454
|
...this.stepSelections,
|
|
5458
5455
|
[A]: { selectedVariants: e }
|
|
5459
|
-
}, this.selectionCost = Object.values(this.stepSelections).reduce((
|
|
5460
|
-
nA(
|
|
5456
|
+
}, this.selectionCost = Object.values(this.stepSelections).reduce((D, m) => D + m.selectedVariants.map((M) => M.priceModifier || 0).reduce((M, Y) => M + Y, 0), 0), this.workflow.steps.forEach((D) => {
|
|
5457
|
+
nA(D, this.stepSelections) || (this.stepInitialised[D.stepName] = !1, delete this.stepMetadata[D.stepName], delete this.stepSelections[D.stepName], delete this.storage[D.stepName]);
|
|
5461
5458
|
});
|
|
5462
|
-
const s = this.allScenes, i = aA(s, n), o = aA(s, this.stepSelections), r = i.map((
|
|
5463
|
-
(
|
|
5459
|
+
const s = this.allScenes, i = aA(s, n), o = aA(s, this.stepSelections), r = i.map((D) => D.silentSteps).flat(), B = o.map((D) => D.silentSteps).flat().filter(
|
|
5460
|
+
(D) => !r.some((m) => m.stepName === D.stepName)
|
|
5464
5461
|
);
|
|
5465
|
-
r.forEach((
|
|
5466
|
-
nA(
|
|
5462
|
+
r.forEach((D) => {
|
|
5463
|
+
nA(D, this.stepSelections) || (this.stepInitialised[D.stepName] = !1);
|
|
5467
5464
|
});
|
|
5468
5465
|
const l = this.getInvalidCanvasRegions(), { stepElements: d, commands: E } = await this.stepElementsForIntroducedSilentSteps(B, !1);
|
|
5469
5466
|
this.stepElements = {
|
|
@@ -5471,17 +5468,17 @@ class Wa {
|
|
|
5471
5468
|
...d,
|
|
5472
5469
|
[A]: t
|
|
5473
5470
|
}, this.removeElements(l);
|
|
5474
|
-
const
|
|
5475
|
-
if ((
|
|
5476
|
-
const
|
|
5477
|
-
(p =
|
|
5478
|
-
}
|
|
5479
|
-
const w = l.map((
|
|
5480
|
-
|
|
5481
|
-
const u = this.getInvalidModelVariants(),
|
|
5482
|
-
if (
|
|
5483
|
-
const
|
|
5484
|
-
(m) =>
|
|
5471
|
+
const C = this.workflow.steps.find((D) => D.stepName === A);
|
|
5472
|
+
if ((C == null ? void 0 : C.type) === I.Frame) {
|
|
5473
|
+
const D = this.getStepSpecificServices(A);
|
|
5474
|
+
(p = D == null ? void 0 : D.frameService) == null || p.setTargetElements(t.map((m) => m.id));
|
|
5475
|
+
}
|
|
5476
|
+
const w = l.map((D) => new $(D.id)), Q = new Ee(this.constructSerializableWorkflow()), h = [...E, ...w, Q];
|
|
5477
|
+
h.length > 0 && this.commandContext.apply(new G(h), !0), await this.ensureStepsAreLoaded(), this.onElementsChange();
|
|
5478
|
+
const u = this.getInvalidModelVariants(), f = this.modelContainer;
|
|
5479
|
+
if (f) {
|
|
5480
|
+
const D = u.map(
|
|
5481
|
+
(m) => f.applyModelVariant(
|
|
5485
5482
|
m,
|
|
5486
5483
|
{
|
|
5487
5484
|
contextService: this.getLayoutPreviewService()
|
|
@@ -5489,7 +5486,7 @@ class Wa {
|
|
|
5489
5486
|
!1
|
|
5490
5487
|
)
|
|
5491
5488
|
);
|
|
5492
|
-
await Promise.all(
|
|
5489
|
+
await Promise.all(D);
|
|
5493
5490
|
}
|
|
5494
5491
|
await this.onSelectionChange(), a && await a();
|
|
5495
5492
|
}
|
|
@@ -5626,7 +5623,7 @@ class Wa {
|
|
|
5626
5623
|
}), this.renderLayouts();
|
|
5627
5624
|
}
|
|
5628
5625
|
traversableScenes() {
|
|
5629
|
-
return Ca(this.allScenes, this.stepSelections);
|
|
5626
|
+
return Ca(this.allScenes, this.stepSelections, this.singleVariantsRenderable);
|
|
5630
5627
|
}
|
|
5631
5628
|
}
|
|
5632
5629
|
class X {
|
|
@@ -5809,7 +5806,7 @@ const ot = class ZA {
|
|
|
5809
5806
|
};
|
|
5810
5807
|
ot.updateState = /* @__PURE__ */ new Map();
|
|
5811
5808
|
let j = ot;
|
|
5812
|
-
const rt =
|
|
5809
|
+
const rt = y`
|
|
5813
5810
|
mutation AddTransactionStakeholder($id: String!, $type: String!, $details: CustomerDetailsInput!) {
|
|
5814
5811
|
transactionAddStakeholder(id: $id, details: $details, type: $type) {
|
|
5815
5812
|
id
|
|
@@ -5823,7 +5820,7 @@ const rt = M`
|
|
|
5823
5820
|
}
|
|
5824
5821
|
}
|
|
5825
5822
|
}
|
|
5826
|
-
`, Xa =
|
|
5823
|
+
`, Xa = y`
|
|
5827
5824
|
mutation UpdateDesignName($transactionId: String!, $designName: String!) {
|
|
5828
5825
|
transactionUpdate(id: $transactionId, designName: $designName) {
|
|
5829
5826
|
id
|
|
@@ -5838,7 +5835,7 @@ class qa extends j {
|
|
|
5838
5835
|
throw new Error("Bulk step does not support variants.");
|
|
5839
5836
|
}
|
|
5840
5837
|
async setDesignName(A) {
|
|
5841
|
-
await
|
|
5838
|
+
await N.getShadowGraphqlClient().mutate({
|
|
5842
5839
|
mutation: Xa,
|
|
5843
5840
|
variables: {
|
|
5844
5841
|
transactionId: this.manager.getTransaction().id,
|
|
@@ -5865,7 +5862,7 @@ class qa extends j {
|
|
|
5865
5862
|
window.open(this.transaction.bulkSourceUrl, "_blank");
|
|
5866
5863
|
}
|
|
5867
5864
|
async sendGoogleSheetLinkToEmail(A) {
|
|
5868
|
-
await
|
|
5865
|
+
await N.getShadowGraphqlClient().mutate({
|
|
5869
5866
|
mutation: rt,
|
|
5870
5867
|
variables: { id: this.transaction.id, details: { emailAddress: A }, type: "Owner" }
|
|
5871
5868
|
}), this.openBulkSourceUrl();
|
|
@@ -6179,8 +6176,8 @@ class an extends j {
|
|
|
6179
6176
|
}
|
|
6180
6177
|
]);
|
|
6181
6178
|
else {
|
|
6182
|
-
const
|
|
6183
|
-
this.manager.setInformationResults(
|
|
6179
|
+
const C = B.filter((w) => w.stepID !== this.step.stepName);
|
|
6180
|
+
this.manager.setInformationResults(C);
|
|
6184
6181
|
}
|
|
6185
6182
|
return e.helperText = l || c, e.errorText = l, e;
|
|
6186
6183
|
}
|
|
@@ -6282,7 +6279,7 @@ class oA {
|
|
|
6282
6279
|
}
|
|
6283
6280
|
}
|
|
6284
6281
|
}
|
|
6285
|
-
const ct =
|
|
6282
|
+
const ct = y`
|
|
6286
6283
|
fragment CreateDesignTransaction on Transaction {
|
|
6287
6284
|
id
|
|
6288
6285
|
bulk
|
|
@@ -6299,7 +6296,7 @@ const ct = M`
|
|
|
6299
6296
|
workflowViewerLink
|
|
6300
6297
|
workflowViewerReadOnlyLink
|
|
6301
6298
|
}
|
|
6302
|
-
`, sn =
|
|
6299
|
+
`, sn = y`
|
|
6303
6300
|
${ct}
|
|
6304
6301
|
mutation CreateDesign(
|
|
6305
6302
|
$name: String!
|
|
@@ -6331,7 +6328,7 @@ const ct = M`
|
|
|
6331
6328
|
}
|
|
6332
6329
|
}
|
|
6333
6330
|
}
|
|
6334
|
-
`, on =
|
|
6331
|
+
`, on = y`
|
|
6335
6332
|
${ct}
|
|
6336
6333
|
mutation CreateDesigns($inputs: [DesignCreateInput]!) {
|
|
6337
6334
|
designCreateMany(inputs: $inputs) {
|
|
@@ -6347,7 +6344,7 @@ const ct = M`
|
|
|
6347
6344
|
}
|
|
6348
6345
|
`, rn = async (g) => {
|
|
6349
6346
|
var e;
|
|
6350
|
-
return (e = (await
|
|
6347
|
+
return (e = (await N.getShadowGraphqlClient().mutate({
|
|
6351
6348
|
mutation: sn,
|
|
6352
6349
|
errorPolicy: "all",
|
|
6353
6350
|
fetchPolicy: "no-cache",
|
|
@@ -6364,7 +6361,7 @@ const ct = M`
|
|
|
6364
6361
|
})).data) == null ? void 0 : e.designCreate;
|
|
6365
6362
|
}, cn = async (g) => {
|
|
6366
6363
|
var e;
|
|
6367
|
-
return (e = (await
|
|
6364
|
+
return (e = (await N.getShadowGraphqlClient().mutate({
|
|
6368
6365
|
mutation: on,
|
|
6369
6366
|
errorPolicy: "all",
|
|
6370
6367
|
fetchPolicy: "no-cache",
|
|
@@ -6451,7 +6448,7 @@ const ct = M`
|
|
|
6451
6448
|
}
|
|
6452
6449
|
return a;
|
|
6453
6450
|
}, gt = (g, A, e, t, a, n, s, i, o, r) => {
|
|
6454
|
-
const B = (
|
|
6451
|
+
const B = (x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(g.id), l = {
|
|
6455
6452
|
baseCost: e,
|
|
6456
6453
|
designProductId: g.externalDesignProductId,
|
|
6457
6454
|
designProductVariantId: g.externalDesignProductVariantId,
|
|
@@ -6503,37 +6500,37 @@ const ct = M`
|
|
|
6503
6500
|
i
|
|
6504
6501
|
);
|
|
6505
6502
|
}, Bt = async (g, A, e, t, a, n, s, i, o, r) => {
|
|
6506
|
-
var
|
|
6503
|
+
var M;
|
|
6507
6504
|
await (async () => {
|
|
6508
|
-
var
|
|
6505
|
+
var S;
|
|
6509
6506
|
if (r !== void 0)
|
|
6510
6507
|
return r;
|
|
6511
6508
|
await g.outstandingRequestsPromise();
|
|
6512
|
-
const F = await
|
|
6509
|
+
const F = await N.getShadowGraphqlClient().query({
|
|
6513
6510
|
query: Ve,
|
|
6514
6511
|
variables: { ids: [a.id] },
|
|
6515
6512
|
fetchPolicy: "no-cache",
|
|
6516
6513
|
errorPolicy: "all"
|
|
6517
|
-
}),
|
|
6518
|
-
return F.errors ? (F.errors.forEach((
|
|
6519
|
-
F.errors && console.log("Server Error:",
|
|
6520
|
-
}), null) :
|
|
6514
|
+
}), U = (S = F.data) == null ? void 0 : S.transactions[0].workflowState;
|
|
6515
|
+
return F.errors ? (F.errors.forEach((b) => {
|
|
6516
|
+
F.errors && console.log("Server Error:", b.message);
|
|
6517
|
+
}), null) : U ?? null;
|
|
6521
6518
|
})() || (console.warn("State mismatch detected. Uploading known state explicitly"), console.warn("State Object:", JSON.stringify(t())), await g.updateStateWithServerImmediate(t), console.log("Server state is undefined @ Workflow completion"));
|
|
6522
|
-
const l = g.getPreviewService(), d = (
|
|
6519
|
+
const l = g.getPreviewService(), d = (M = A == null ? void 0 : A.finalizeStepConfig) == null ? void 0 : M.lookAtAnimation, E = l && A.showModelOnFinishStep && !!d, C = o && $A(o, A, !0), w = o && $A(o, A, !1), Q = async (Y) => {
|
|
6523
6520
|
const F = {};
|
|
6524
|
-
let
|
|
6521
|
+
let U = 0;
|
|
6525
6522
|
if (Object.keys(n).length > 0)
|
|
6526
|
-
for (const
|
|
6527
|
-
const
|
|
6528
|
-
for (let W = 0; W <
|
|
6529
|
-
const q =
|
|
6523
|
+
for (const S of Object.keys(n)) {
|
|
6524
|
+
const b = n[S], V = A.steps.find((W) => W.stepName === S);
|
|
6525
|
+
for (let W = 0; W < b.selections.length; ++W) {
|
|
6526
|
+
const q = b.selections[W];
|
|
6530
6527
|
if (V && (!Y || V.option && (V.option.variants || []).length > 1 && !V.data.hideSelectionInCart && !V.data.hideSelectionsInCart)) {
|
|
6531
|
-
const
|
|
6532
|
-
F[
|
|
6528
|
+
const bA = V.stepTitle;
|
|
6529
|
+
F[bA] ? F[bA].push({
|
|
6533
6530
|
id: q.id || "",
|
|
6534
6531
|
name: q.name,
|
|
6535
6532
|
priceModifier: q.priceModifier
|
|
6536
|
-
}) : F[
|
|
6533
|
+
}) : F[bA] = [
|
|
6537
6534
|
{
|
|
6538
6535
|
id: q.id || "",
|
|
6539
6536
|
name: q.name,
|
|
@@ -6541,18 +6538,18 @@ const ct = M`
|
|
|
6541
6538
|
}
|
|
6542
6539
|
];
|
|
6543
6540
|
}
|
|
6544
|
-
|
|
6541
|
+
U += q.priceModifier;
|
|
6545
6542
|
}
|
|
6546
6543
|
}
|
|
6547
|
-
return [F,
|
|
6548
|
-
}, [
|
|
6549
|
-
Object.keys(
|
|
6550
|
-
), [
|
|
6551
|
-
Object.keys(
|
|
6544
|
+
return [F, U];
|
|
6545
|
+
}, [h] = await Q(!0), u = Object.fromEntries(
|
|
6546
|
+
Object.keys(h).map((Y) => [Y, h[Y].map((F) => F.id)])
|
|
6547
|
+
), [f] = await Q(!1), p = Object.fromEntries(
|
|
6548
|
+
Object.keys(f).map((Y) => [
|
|
6552
6549
|
Y,
|
|
6553
|
-
|
|
6550
|
+
f[Y].map((F) => F.id)
|
|
6554
6551
|
])
|
|
6555
|
-
),
|
|
6552
|
+
), D = await i(E);
|
|
6556
6553
|
return {
|
|
6557
6554
|
designDetails: (() => {
|
|
6558
6555
|
const Y = {
|
|
@@ -6564,29 +6561,29 @@ const ct = M`
|
|
|
6564
6561
|
workflowId: A.id,
|
|
6565
6562
|
transactionId: a.id,
|
|
6566
6563
|
useThreeDimPreview: !!E,
|
|
6567
|
-
previewImage:
|
|
6564
|
+
previewImage: D
|
|
6568
6565
|
};
|
|
6569
6566
|
if (w) {
|
|
6570
6567
|
const F = [];
|
|
6571
|
-
for (const [
|
|
6572
|
-
F.push({ key:
|
|
6568
|
+
for (const [U, S] of Object.entries(w))
|
|
6569
|
+
F.push({ key: U, value: S });
|
|
6573
6570
|
Y.metadata = F;
|
|
6574
6571
|
}
|
|
6575
6572
|
if (u) {
|
|
6576
6573
|
const F = [];
|
|
6577
|
-
for (const [
|
|
6578
|
-
F.push({ key:
|
|
6574
|
+
for (const [U, S] of Object.entries(p))
|
|
6575
|
+
F.push({ key: U, ids: S });
|
|
6579
6576
|
Y.selectedVariants = F;
|
|
6580
6577
|
}
|
|
6581
6578
|
return Y;
|
|
6582
6579
|
})(),
|
|
6583
|
-
cartSelectionsWithPrices:
|
|
6584
|
-
cartMetadata:
|
|
6580
|
+
cartSelectionsWithPrices: h,
|
|
6581
|
+
cartMetadata: C
|
|
6585
6582
|
};
|
|
6586
6583
|
}, Bn = async (g, A, e, t, a, n, s, i, o, r, c, B, l) => {
|
|
6587
|
-
var u,
|
|
6584
|
+
var u, f, p;
|
|
6588
6585
|
o("workflow.steps.finish.finalize.buildingLayouts");
|
|
6589
|
-
const { designDetails: d, cartSelectionsWithPrices: E, cartMetadata:
|
|
6586
|
+
const { designDetails: d, cartSelectionsWithPrices: E, cartMetadata: C } = await Bt(
|
|
6590
6587
|
g,
|
|
6591
6588
|
A,
|
|
6592
6589
|
e,
|
|
@@ -6602,19 +6599,19 @@ const ct = M`
|
|
|
6602
6599
|
if (!(w != null && w.transaction))
|
|
6603
6600
|
throw new Error("Failed to create design");
|
|
6604
6601
|
o("workflow.steps.finish.finalize.updatingTransaction");
|
|
6605
|
-
const
|
|
6602
|
+
const h = w.transaction;
|
|
6606
6603
|
return n.bulk ? ln(
|
|
6607
|
-
|
|
6604
|
+
h,
|
|
6608
6605
|
a,
|
|
6609
6606
|
Q,
|
|
6610
|
-
(
|
|
6607
|
+
(f = w == null ? void 0 : w.processExecution) == null ? void 0 : f.id
|
|
6611
6608
|
) : await lt(
|
|
6612
|
-
|
|
6609
|
+
h,
|
|
6613
6610
|
a,
|
|
6614
6611
|
A,
|
|
6615
6612
|
E,
|
|
6616
6613
|
w == null ? void 0 : w.sku,
|
|
6617
|
-
|
|
6614
|
+
C,
|
|
6618
6615
|
Q,
|
|
6619
6616
|
(p = w == null ? void 0 : w.processExecution) == null ? void 0 : p.id
|
|
6620
6617
|
);
|
|
@@ -6626,7 +6623,7 @@ const ct = M`
|
|
|
6626
6623
|
);
|
|
6627
6624
|
const t = await (async () => {
|
|
6628
6625
|
var o;
|
|
6629
|
-
const i = await
|
|
6626
|
+
const i = await N.getShadowGraphqlClient().query({
|
|
6630
6627
|
query: Ve,
|
|
6631
6628
|
variables: { ids: g.map((r) => r.transaction.id) },
|
|
6632
6629
|
fetchPolicy: "no-cache",
|
|
@@ -6693,7 +6690,7 @@ class wn {
|
|
|
6693
6690
|
*/
|
|
6694
6691
|
async getSavedDesigns() {
|
|
6695
6692
|
if (this.storageMethod === "Local") {
|
|
6696
|
-
const A =
|
|
6693
|
+
const A = x.get(this.localPersistenceKey);
|
|
6697
6694
|
return A ? JSON.parse(A) : [];
|
|
6698
6695
|
}
|
|
6699
6696
|
throw new v("Unexpected storage method requested");
|
|
@@ -6733,7 +6730,7 @@ class wn {
|
|
|
6733
6730
|
}
|
|
6734
6731
|
async setDesigns(A) {
|
|
6735
6732
|
if (this.storageMethod === "Local") {
|
|
6736
|
-
|
|
6733
|
+
x.set(this.localPersistenceKey, JSON.stringify(A));
|
|
6737
6734
|
return;
|
|
6738
6735
|
}
|
|
6739
6736
|
throw new v("Unexpected storage method requested");
|
|
@@ -6782,7 +6779,8 @@ class CA {
|
|
|
6782
6779
|
e.reloadedState,
|
|
6783
6780
|
e.readOnly,
|
|
6784
6781
|
e.modelContainer,
|
|
6785
|
-
e.isReloadedTransaction
|
|
6782
|
+
e.isReloadedTransaction,
|
|
6783
|
+
e.singleVariantsRenderable
|
|
6786
6784
|
), this.workflowManager.addSelectionCallback((n) => {
|
|
6787
6785
|
const s = n.traversableScenes.map((i) => {
|
|
6788
6786
|
const o = i.renderableSteps.map((r) => r.stepName);
|
|
@@ -6808,7 +6806,7 @@ class CA {
|
|
|
6808
6806
|
return this.workflowManager;
|
|
6809
6807
|
}
|
|
6810
6808
|
async updateVariationRecords(A) {
|
|
6811
|
-
await
|
|
6809
|
+
await N.getShadowGraphqlClient().mutate({
|
|
6812
6810
|
mutation: da,
|
|
6813
6811
|
variables: {
|
|
6814
6812
|
transactionId: this.workflowManager.getTransaction().id,
|
|
@@ -6824,8 +6822,8 @@ class CA {
|
|
|
6824
6822
|
});
|
|
6825
6823
|
}
|
|
6826
6824
|
async createPreviewImage(A, e) {
|
|
6827
|
-
var
|
|
6828
|
-
const t = this.workflowManager.getWorkflow(), a = (
|
|
6825
|
+
var h, u;
|
|
6826
|
+
const t = this.workflowManager.getWorkflow(), a = (h = t == null ? void 0 : t.finalizeStepConfig) == null ? void 0 : h.lookAtAnimation;
|
|
6829
6827
|
if (A) {
|
|
6830
6828
|
if (!a)
|
|
6831
6829
|
throw new Error("Failed to generate cart preview image!");
|
|
@@ -6833,9 +6831,9 @@ class CA {
|
|
|
6833
6831
|
}
|
|
6834
6832
|
let n = 2048;
|
|
6835
6833
|
e && e <= 2048 && (n = e);
|
|
6836
|
-
const s = yA(n, n), i = this.commandContext.getAllLayouts(), o = t.defaultPreviewPanelIndex || 0, r = t.panels[o], c = i.find((
|
|
6834
|
+
const s = yA(n, n), i = this.commandContext.getAllLayouts(), o = t.defaultPreviewPanelIndex || 0, r = t.panels[o], c = i.find((f) => {
|
|
6837
6835
|
var p;
|
|
6838
|
-
return ((p =
|
|
6836
|
+
return ((p = f.layoutState) == null ? void 0 : p.layout.panelId) === (r == null ? void 0 : r.name);
|
|
6839
6837
|
}) || i[0], B = c.layoutState.layout.previewRegion ? {
|
|
6840
6838
|
x: c.layoutState.layout.previewRegion.left,
|
|
6841
6839
|
y: c.layoutState.layout.previewRegion.top,
|
|
@@ -6854,8 +6852,8 @@ class CA {
|
|
|
6854
6852
|
purpose: Se.Print,
|
|
6855
6853
|
region: { left: B.x, top: B.y, width: B.width, height: B.height }
|
|
6856
6854
|
}
|
|
6857
|
-
}),
|
|
6858
|
-
await (await Ge.from(d,
|
|
6855
|
+
}), C = xe(E);
|
|
6856
|
+
await (await Ge.from(d, C, {
|
|
6859
6857
|
anonymousCrossOrigin: !0,
|
|
6860
6858
|
ignoreDimensions: !1,
|
|
6861
6859
|
createCanvas: yA,
|
|
@@ -6931,7 +6929,7 @@ class CA {
|
|
|
6931
6929
|
}
|
|
6932
6930
|
async assignCustomerDetails(A) {
|
|
6933
6931
|
var a, n, s;
|
|
6934
|
-
const t = (s = (n = (a = (await
|
|
6932
|
+
const t = (s = (n = (a = (await N.getShadowGraphqlClient().mutate({
|
|
6935
6933
|
mutation: rt,
|
|
6936
6934
|
variables: {
|
|
6937
6935
|
id: this.getWorkflowManager().getTransaction().id,
|
|
@@ -6946,8 +6944,8 @@ class CA {
|
|
|
6946
6944
|
);
|
|
6947
6945
|
if (t != null && t.customer) {
|
|
6948
6946
|
this.getWorkflowManager().setTransactionCustomer(t.customer);
|
|
6949
|
-
const i =
|
|
6950
|
-
i.set(this.getWorkflowManager().getTransaction().id, t.customer.id),
|
|
6947
|
+
const i = x.getMap("transactionCustomerIds") || /* @__PURE__ */ new Map();
|
|
6948
|
+
i.set(this.getWorkflowManager().getTransaction().id, t.customer.id), x.setMap("transactionCustomerIds", i);
|
|
6951
6949
|
}
|
|
6952
6950
|
}
|
|
6953
6951
|
attachRenderableSceneListener(A) {
|
|
@@ -7046,16 +7044,16 @@ const En = [
|
|
|
7046
7044
|
], hn = async (g, A, e) => {
|
|
7047
7045
|
const t = A.data, a = e.data.baseUrl, n = t.assetUrl.replace("localhost", "localstack"), s = a.slice(0, 4) === "http" ? "" : "https://", i = new URL(s + a);
|
|
7048
7046
|
i.searchParams.append("video", he(JSON.stringify([{ href: n }]))), i.pathname = i.pathname + (i.pathname.slice(-1) === "/" ? "" : "/");
|
|
7049
|
-
const o = i.toString(), c = `data:image/svg+xml;base64,${he(await
|
|
7047
|
+
const o = i.toString(), c = `data:image/svg+xml;base64,${he(await be(o, { type: "svg" }))}`, B = (d) => {
|
|
7050
7048
|
const E = g.find((w) => w.panelId === d.panelId);
|
|
7051
7049
|
if (!E)
|
|
7052
|
-
throw new
|
|
7053
|
-
const
|
|
7050
|
+
throw new L(d);
|
|
7051
|
+
const C = k();
|
|
7054
7052
|
return new J(
|
|
7055
7053
|
{
|
|
7056
|
-
id:
|
|
7054
|
+
id: C,
|
|
7057
7055
|
src: c,
|
|
7058
|
-
type:
|
|
7056
|
+
type: H.Image,
|
|
7059
7057
|
y: d.top,
|
|
7060
7058
|
x: d.left,
|
|
7061
7059
|
width: d.width,
|
|
@@ -7076,16 +7074,16 @@ const En = [
|
|
|
7076
7074
|
const i = Rt(a, t.option);
|
|
7077
7075
|
i && (A[t.stepName] = { selectedVariants: [i] });
|
|
7078
7076
|
const o = async (r) => {
|
|
7079
|
-
var
|
|
7077
|
+
var C;
|
|
7080
7078
|
const c = await Pt(
|
|
7081
7079
|
r || {
|
|
7082
7080
|
width: 1,
|
|
7083
7081
|
height: 1
|
|
7084
7082
|
},
|
|
7085
|
-
(
|
|
7083
|
+
(C = i == null ? void 0 : i.asset) == null ? void 0 : C.fileLink
|
|
7086
7084
|
), B = await Ae(c), l = k(), d = g.find((w) => w.panelId === r.panelId);
|
|
7087
7085
|
if (!d)
|
|
7088
|
-
throw new
|
|
7086
|
+
throw new L(r);
|
|
7089
7087
|
const E = ee(s, B, {
|
|
7090
7088
|
scale: a.scale,
|
|
7091
7089
|
left: a.x,
|
|
@@ -7098,7 +7096,7 @@ const En = [
|
|
|
7098
7096
|
path: B.path,
|
|
7099
7097
|
dataWidth: B.width,
|
|
7100
7098
|
dataHeight: B.height,
|
|
7101
|
-
type:
|
|
7099
|
+
type: H.Frame,
|
|
7102
7100
|
focalBlur: t.data.focalBlur,
|
|
7103
7101
|
focalBlurStrength: t.data.focalBlurStrength,
|
|
7104
7102
|
focalBlurRadius: t.data.focalBlurRadius,
|
|
@@ -7124,7 +7122,7 @@ const En = [
|
|
|
7124
7122
|
return console.error(i), [];
|
|
7125
7123
|
}
|
|
7126
7124
|
}, Qn = async (g, A, e, t) => {
|
|
7127
|
-
var p,
|
|
7125
|
+
var p, D;
|
|
7128
7126
|
const a = e.data, n = t.option;
|
|
7129
7127
|
if (!n)
|
|
7130
7128
|
return console.error(`No option for step ${t.stepName}.`), [];
|
|
@@ -7134,47 +7132,47 @@ const En = [
|
|
|
7134
7132
|
if (!s.asset)
|
|
7135
7133
|
return console.error(`No asset for variant with ID: ${a.illustrationVariantId}`), [];
|
|
7136
7134
|
A[t.stepName] = { selectedVariants: [s] };
|
|
7137
|
-
const i = (
|
|
7135
|
+
const i = (D = s.asset) == null ? void 0 : D.fileLink;
|
|
7138
7136
|
if (!i)
|
|
7139
7137
|
return console.error(`No asset link for variant with ID: ${a.illustrationVariantId}`), [];
|
|
7140
7138
|
const o = await Z(i, !0), r = /<svg.*?<\/svg>/s, c = o.match(r) || [], B = (c == null ? void 0 : c.length) > 0 ? c[0] : "", E = Pe().parseFromString(B, "image/svg+xml").firstElementChild;
|
|
7141
7139
|
if (!E)
|
|
7142
7140
|
return console.error("Failed to read SVG."), [];
|
|
7143
7141
|
He(E);
|
|
7144
|
-
const
|
|
7142
|
+
const C = {};
|
|
7145
7143
|
Ht(E, (m) => {
|
|
7146
7144
|
En.includes(m.tagName) && !m.attributes.getNamedItem("fill") && m.setAttribute("fill", "#000000");
|
|
7147
|
-
const
|
|
7148
|
-
if (
|
|
7149
|
-
const F =
|
|
7150
|
-
m.classList.add(
|
|
7145
|
+
const M = m.attributes.getNamedItem("fill");
|
|
7146
|
+
if (M && M.value !== "none") {
|
|
7147
|
+
const F = M.value, S = `spiff-fill-${F.replace(/\W/g, "")}`;
|
|
7148
|
+
m.classList.add(S), C[S] = { browserValue: F };
|
|
7151
7149
|
}
|
|
7152
7150
|
const Y = m.attributes.getNamedItem("stroke");
|
|
7153
7151
|
if (Y && Y.value !== "none") {
|
|
7154
|
-
const F = Y.value,
|
|
7155
|
-
m.classList.add(
|
|
7152
|
+
const F = Y.value, S = `spiff-stroke-${F.replace(/\W/g, "")}`;
|
|
7153
|
+
m.classList.add(S), C[S] = { browserValue: F };
|
|
7156
7154
|
}
|
|
7157
7155
|
});
|
|
7158
|
-
const Q = Ue().serializeToString(E),
|
|
7159
|
-
if (
|
|
7160
|
-
for (const [m,
|
|
7161
|
-
for (const Y of Object.keys(
|
|
7162
|
-
if (
|
|
7163
|
-
|
|
7156
|
+
const Q = Ue().serializeToString(E), h = a.colors;
|
|
7157
|
+
if (h) {
|
|
7158
|
+
for (const [m, M] of Object.entries(C))
|
|
7159
|
+
for (const Y of Object.keys(h))
|
|
7160
|
+
if (M.browserValue === Y) {
|
|
7161
|
+
C[m] = { browserValue: h[Y] };
|
|
7164
7162
|
break;
|
|
7165
7163
|
}
|
|
7166
7164
|
}
|
|
7167
7165
|
const u = (m) => {
|
|
7168
|
-
const
|
|
7169
|
-
if (!
|
|
7170
|
-
throw new
|
|
7166
|
+
const M = g.find((F) => F.panelId === m.panelId);
|
|
7167
|
+
if (!M)
|
|
7168
|
+
throw new L(m);
|
|
7171
7169
|
const Y = k();
|
|
7172
7170
|
return new J(
|
|
7173
7171
|
{
|
|
7174
|
-
colors:
|
|
7172
|
+
colors: C,
|
|
7175
7173
|
id: Y,
|
|
7176
7174
|
svg: Q,
|
|
7177
|
-
type:
|
|
7175
|
+
type: H.Illustration,
|
|
7178
7176
|
y: m.top,
|
|
7179
7177
|
x: m.left,
|
|
7180
7178
|
rotation: m.rotation,
|
|
@@ -7184,11 +7182,11 @@ const En = [
|
|
|
7184
7182
|
layerIndex: m.layerIndex,
|
|
7185
7183
|
immutable: m.immutable
|
|
7186
7184
|
},
|
|
7187
|
-
|
|
7185
|
+
M
|
|
7188
7186
|
);
|
|
7189
|
-
},
|
|
7187
|
+
}, f = t.data.regions;
|
|
7190
7188
|
try {
|
|
7191
|
-
return
|
|
7189
|
+
return f.map(u);
|
|
7192
7190
|
} catch (m) {
|
|
7193
7191
|
return console.error(m), [];
|
|
7194
7192
|
}
|
|
@@ -7196,14 +7194,14 @@ const En = [
|
|
|
7196
7194
|
const t = await it(e.data.module), a = A.data, n = (i, o) => {
|
|
7197
7195
|
const r = g.find((B) => B.panelId === o.panelId);
|
|
7198
7196
|
if (!r)
|
|
7199
|
-
throw new
|
|
7197
|
+
throw new L(o);
|
|
7200
7198
|
const c = k();
|
|
7201
7199
|
return new J(
|
|
7202
7200
|
{
|
|
7203
7201
|
colors: {},
|
|
7204
7202
|
id: c,
|
|
7205
7203
|
svg: i,
|
|
7206
|
-
type:
|
|
7204
|
+
type: H.Illustration,
|
|
7207
7205
|
y: o.top,
|
|
7208
7206
|
x: o.left,
|
|
7209
7207
|
rotation: o.rotation,
|
|
@@ -7237,15 +7235,15 @@ const En = [
|
|
|
7237
7235
|
if (!i)
|
|
7238
7236
|
return console.error(`No asset link for variant with ID: ${a.pictureVariantId}`), [];
|
|
7239
7237
|
const o = (l) => {
|
|
7240
|
-
const d = g.find((
|
|
7238
|
+
const d = g.find((C) => C.panelId === l.panelId);
|
|
7241
7239
|
if (!d)
|
|
7242
|
-
throw new
|
|
7240
|
+
throw new L(l);
|
|
7243
7241
|
const E = k();
|
|
7244
7242
|
return new J(
|
|
7245
7243
|
{
|
|
7246
7244
|
id: E,
|
|
7247
7245
|
src: i,
|
|
7248
|
-
type:
|
|
7246
|
+
type: H.Image,
|
|
7249
7247
|
y: l.top,
|
|
7250
7248
|
x: l.left,
|
|
7251
7249
|
rotation: l.rotation,
|
|
@@ -7276,7 +7274,7 @@ const En = [
|
|
|
7276
7274
|
const i = (c) => {
|
|
7277
7275
|
const B = g.find((w) => w.panelId === c.panelId);
|
|
7278
7276
|
if (!B)
|
|
7279
|
-
throw new
|
|
7277
|
+
throw new L(c);
|
|
7280
7278
|
const l = `
|
|
7281
7279
|
<svg
|
|
7282
7280
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -7297,13 +7295,13 @@ const En = [
|
|
|
7297
7295
|
fill="${s == null ? void 0 : s.color}"
|
|
7298
7296
|
/>
|
|
7299
7297
|
</svg>
|
|
7300
|
-
`, E = { "spiff-fill-shape": { browserValue: s.color || "#000000" } },
|
|
7298
|
+
`, E = { "spiff-fill-shape": { browserValue: s.color || "#000000" } }, C = k();
|
|
7301
7299
|
return new J(
|
|
7302
7300
|
{
|
|
7303
7301
|
colors: E,
|
|
7304
|
-
id:
|
|
7302
|
+
id: C,
|
|
7305
7303
|
svg: l,
|
|
7306
|
-
type:
|
|
7304
|
+
type: H.Illustration,
|
|
7307
7305
|
y: c.top,
|
|
7308
7306
|
x: c.left,
|
|
7309
7307
|
rotation: c.rotation,
|
|
@@ -7325,13 +7323,13 @@ const En = [
|
|
|
7325
7323
|
const t = [], n = (() => {
|
|
7326
7324
|
var r, c;
|
|
7327
7325
|
return A.type === I.ProductOverlay ? e || ((r = A.data.asset) == null ? void 0 : r.fileLink) || "" : ((c = A.data.asset) == null ? void 0 : c.fileLink) || "";
|
|
7328
|
-
})(), i = (() => n.endsWith(".jpeg") || n.endsWith(".jpg") || n.endsWith(".png") ?
|
|
7326
|
+
})(), i = (() => n.endsWith(".jpeg") || n.endsWith(".jpg") || n.endsWith(".png") ? H.Image : n.endsWith(".svg") ? H.Illustration : H.Illustration)(), o = A.data.regions;
|
|
7329
7327
|
if (i === "image")
|
|
7330
7328
|
try {
|
|
7331
7329
|
o.forEach((r) => {
|
|
7332
7330
|
const c = g.find((l) => l.panelId === r.panelId);
|
|
7333
7331
|
if (!c)
|
|
7334
|
-
throw new
|
|
7332
|
+
throw new L(r);
|
|
7335
7333
|
const B = {
|
|
7336
7334
|
id: k(),
|
|
7337
7335
|
src: n,
|
|
@@ -7364,7 +7362,7 @@ const En = [
|
|
|
7364
7362
|
o.forEach((B) => {
|
|
7365
7363
|
const l = g.find((E) => E.panelId === B.panelId);
|
|
7366
7364
|
if (!l)
|
|
7367
|
-
throw new
|
|
7365
|
+
throw new L(B);
|
|
7368
7366
|
const d = {
|
|
7369
7367
|
id: k(),
|
|
7370
7368
|
src: n,
|
|
@@ -7394,13 +7392,13 @@ const En = [
|
|
|
7394
7392
|
const w = t.option;
|
|
7395
7393
|
if (!w)
|
|
7396
7394
|
return;
|
|
7397
|
-
const Q = ((u = w.variants) == null ? void 0 : u.find((
|
|
7395
|
+
const Q = ((u = w.variants) == null ? void 0 : u.find((f) => f.id === n.fontVariantId)) || UA(w);
|
|
7398
7396
|
if (!Q || !Q.asset)
|
|
7399
7397
|
return;
|
|
7400
7398
|
A[t.stepName] = { selectedVariants: [Q] };
|
|
7401
|
-
const
|
|
7402
|
-
if (
|
|
7403
|
-
return
|
|
7399
|
+
const h = Q.asset.fileLink;
|
|
7400
|
+
if (h)
|
|
7401
|
+
return h;
|
|
7404
7402
|
}, c = await (async () => {
|
|
7405
7403
|
const w = o();
|
|
7406
7404
|
if (!w)
|
|
@@ -7417,14 +7415,14 @@ const En = [
|
|
|
7417
7415
|
const Q = w.colorOption;
|
|
7418
7416
|
if (!Q)
|
|
7419
7417
|
return;
|
|
7420
|
-
const
|
|
7421
|
-
return
|
|
7422
|
-
}, E = n.color || await d(t.data),
|
|
7423
|
-
for (const w of
|
|
7418
|
+
const h = z.getDefaultVariant(Q);
|
|
7419
|
+
return h == null ? void 0 : h.color;
|
|
7420
|
+
}, E = n.color || await d(t.data), C = t.data.regions;
|
|
7421
|
+
for (const w of C) {
|
|
7424
7422
|
const Q = g.find((u) => u.panelId === w.panelId);
|
|
7425
7423
|
if (!Q)
|
|
7426
7424
|
continue;
|
|
7427
|
-
const
|
|
7425
|
+
const h = {
|
|
7428
7426
|
stepName: e.name,
|
|
7429
7427
|
id: k(),
|
|
7430
7428
|
align: i(t.data),
|
|
@@ -7438,7 +7436,7 @@ const En = [
|
|
|
7438
7436
|
paths: t.data.paths,
|
|
7439
7437
|
rotation: w.rotation,
|
|
7440
7438
|
text: l,
|
|
7441
|
-
type:
|
|
7439
|
+
type: H.Textbox,
|
|
7442
7440
|
vertical: t.data.vertical,
|
|
7443
7441
|
verticalAlign: t.data.verticalAlign || "middle",
|
|
7444
7442
|
width: w.width,
|
|
@@ -7446,7 +7444,7 @@ const En = [
|
|
|
7446
7444
|
y: w.top
|
|
7447
7445
|
};
|
|
7448
7446
|
if (c) {
|
|
7449
|
-
const [u,
|
|
7447
|
+
const [u, f] = IA(
|
|
7450
7448
|
t.data.size || s,
|
|
7451
7449
|
c,
|
|
7452
7450
|
w,
|
|
@@ -7465,16 +7463,16 @@ const En = [
|
|
|
7465
7463
|
a.push(
|
|
7466
7464
|
new J(
|
|
7467
7465
|
{
|
|
7468
|
-
...
|
|
7466
|
+
...h,
|
|
7469
7467
|
fontSize: u,
|
|
7470
|
-
text:
|
|
7468
|
+
text: h.curved ? h.text : (f || []).join(`
|
|
7471
7469
|
`)
|
|
7472
7470
|
},
|
|
7473
7471
|
Q
|
|
7474
7472
|
)
|
|
7475
7473
|
);
|
|
7476
7474
|
} else
|
|
7477
|
-
a.push(new J(
|
|
7475
|
+
a.push(new J(h, Q));
|
|
7478
7476
|
}
|
|
7479
7477
|
return a;
|
|
7480
7478
|
}, fn = (g, A) => g.conditions ? g.conditions.every((e) => {
|
|
@@ -7678,19 +7676,19 @@ class Yn extends Xe {
|
|
|
7678
7676
|
return;
|
|
7679
7677
|
const e = A.layoutState.elements || [];
|
|
7680
7678
|
if (this.variationRecord) {
|
|
7681
|
-
const l = this.variationRecord.values.map((
|
|
7682
|
-
stepName:
|
|
7683
|
-
stepAspectType:
|
|
7684
|
-
value:
|
|
7679
|
+
const l = this.variationRecord.values.map((C) => ({
|
|
7680
|
+
stepName: C.stepName,
|
|
7681
|
+
stepAspectType: C.aspect,
|
|
7682
|
+
value: C.value
|
|
7685
7683
|
})), d = await xn(
|
|
7686
7684
|
Sn(l, this.workflow),
|
|
7687
7685
|
this.workflow,
|
|
7688
|
-
this.layouts.map((
|
|
7686
|
+
this.layouts.map((C) => C.layoutState.layout),
|
|
7689
7687
|
this.productOverlayImageUrl
|
|
7690
7688
|
), E = d == null ? void 0 : d.layouts[A.layoutState.layout.id];
|
|
7691
|
-
((E == null ? void 0 : E.elements) || []).forEach((
|
|
7692
|
-
const w = e.find((Q) => Q.stepName ===
|
|
7693
|
-
w && w.type ===
|
|
7689
|
+
((E == null ? void 0 : E.elements) || []).forEach((C) => {
|
|
7690
|
+
const w = e.find((Q) => Q.stepName === C.stepName);
|
|
7691
|
+
w && w.type === H.Textbox ? (w.text = C.text, w.fontSize = C.fontSize) : e.push(C);
|
|
7694
7692
|
}), Gt(e);
|
|
7695
7693
|
}
|
|
7696
7694
|
const t = A.layoutState.layout.width, a = A.layoutState.layout.height, n = this.getDynamicTextureResolution().width, s = this.getDynamicTextureResolution().height;
|
|
@@ -7738,7 +7736,7 @@ const Sn = (g, A) => {
|
|
|
7738
7736
|
a = new G(e.map((o) => new Ut(o))).apply(a);
|
|
7739
7737
|
const s = await Fn(g, A, e, t);
|
|
7740
7738
|
return new G(s).apply(a);
|
|
7741
|
-
}, Nn =
|
|
7739
|
+
}, Nn = y`
|
|
7742
7740
|
fragment ProductFields on Product {
|
|
7743
7741
|
id
|
|
7744
7742
|
basePrice
|
|
@@ -7773,7 +7771,7 @@ const Sn = (g, A) => {
|
|
|
7773
7771
|
name
|
|
7774
7772
|
}
|
|
7775
7773
|
}
|
|
7776
|
-
`, Rn =
|
|
7774
|
+
`, Rn = y`
|
|
7777
7775
|
${Nn}
|
|
7778
7776
|
fragment ProductCollectionProductFields on ProductCollectionProduct {
|
|
7779
7777
|
id
|
|
@@ -7783,7 +7781,7 @@ const Sn = (g, A) => {
|
|
|
7783
7781
|
...ProductFields
|
|
7784
7782
|
}
|
|
7785
7783
|
}
|
|
7786
|
-
`, dt =
|
|
7784
|
+
`, dt = y`
|
|
7787
7785
|
${Rn}
|
|
7788
7786
|
fragment ProductCollectionFields on ProductCollection {
|
|
7789
7787
|
id
|
|
@@ -7830,7 +7828,7 @@ const Sn = (g, A) => {
|
|
|
7830
7828
|
}
|
|
7831
7829
|
}
|
|
7832
7830
|
}
|
|
7833
|
-
`, Pn =
|
|
7831
|
+
`, Pn = y`
|
|
7834
7832
|
${dt}
|
|
7835
7833
|
query GetBundle($id: String!) {
|
|
7836
7834
|
bundles(ids: [$id]) {
|
|
@@ -7852,7 +7850,7 @@ const Sn = (g, A) => {
|
|
|
7852
7850
|
}
|
|
7853
7851
|
}
|
|
7854
7852
|
}
|
|
7855
|
-
`, Hn =
|
|
7853
|
+
`, Hn = y`
|
|
7856
7854
|
query GetBundleStakeholders($id: String!) {
|
|
7857
7855
|
bundles(ids: [$id]) {
|
|
7858
7856
|
id
|
|
@@ -7872,7 +7870,7 @@ const Sn = (g, A) => {
|
|
|
7872
7870
|
}
|
|
7873
7871
|
}
|
|
7874
7872
|
}
|
|
7875
|
-
`, Un =
|
|
7873
|
+
`, Un = y`
|
|
7876
7874
|
query GetBundlesForCustomer($id: String!) {
|
|
7877
7875
|
customers(ids: [$id]) {
|
|
7878
7876
|
bundleStakeholders {
|
|
@@ -7893,7 +7891,7 @@ const Sn = (g, A) => {
|
|
|
7893
7891
|
}
|
|
7894
7892
|
}
|
|
7895
7893
|
}
|
|
7896
|
-
`, Gn =
|
|
7894
|
+
`, Gn = y`
|
|
7897
7895
|
${dt}
|
|
7898
7896
|
mutation CreateBundle($collectionId: String) {
|
|
7899
7897
|
bundleCreate(collectionId: $collectionId) {
|
|
@@ -7912,25 +7910,25 @@ const Sn = (g, A) => {
|
|
|
7912
7910
|
}
|
|
7913
7911
|
}
|
|
7914
7912
|
}
|
|
7915
|
-
`, vn =
|
|
7913
|
+
`, vn = y`
|
|
7916
7914
|
mutation UpdateBundle($id: String!, $name: String, $metadata: [MetadataInput!], $bundleStateData: String) {
|
|
7917
7915
|
bundleUpdate(id: $id, name: $name, metadata: $metadata, bundleStateData: $bundleStateData) {
|
|
7918
7916
|
id
|
|
7919
7917
|
}
|
|
7920
7918
|
}
|
|
7921
|
-
`, kn =
|
|
7919
|
+
`, kn = y`
|
|
7922
7920
|
mutation BundleAddTransaction($id: String!, $transactionId: String!) {
|
|
7923
7921
|
bundleAddTransaction(id: $id, transactionId: $transactionId) {
|
|
7924
7922
|
id
|
|
7925
7923
|
}
|
|
7926
7924
|
}
|
|
7927
|
-
`,
|
|
7925
|
+
`, bn = y`
|
|
7928
7926
|
mutation BundleAddTransactions($id: String!, $transactionIds: [String!]!, $transactionOwnerIds: [String!]) {
|
|
7929
7927
|
bundleAddTransactions(id: $id, transactionIds: $transactionIds, transactionOwnerIds: $transactionOwnerIds) {
|
|
7930
7928
|
id
|
|
7931
7929
|
}
|
|
7932
7930
|
}
|
|
7933
|
-
`,
|
|
7931
|
+
`, Jn = y`
|
|
7934
7932
|
mutation BundleRemoveTransaction(
|
|
7935
7933
|
$id: String!
|
|
7936
7934
|
$transactionId: String!
|
|
@@ -7945,7 +7943,7 @@ const Sn = (g, A) => {
|
|
|
7945
7943
|
id
|
|
7946
7944
|
}
|
|
7947
7945
|
}
|
|
7948
|
-
`, Tn =
|
|
7946
|
+
`, Tn = y`
|
|
7949
7947
|
mutation BundleRemoveTransactions(
|
|
7950
7948
|
$id: String!
|
|
7951
7949
|
$transactionIds: [String!]!
|
|
@@ -7960,7 +7958,7 @@ const Sn = (g, A) => {
|
|
|
7960
7958
|
id
|
|
7961
7959
|
}
|
|
7962
7960
|
}
|
|
7963
|
-
`, Ln =
|
|
7961
|
+
`, Ln = y`
|
|
7964
7962
|
mutation BundleAddStakeholder($id: String!, $details: CustomerDetailsInput!, $type: String!) {
|
|
7965
7963
|
bundleAddStakeholder(id: $id, details: $details, type: $type) {
|
|
7966
7964
|
id
|
|
@@ -7980,7 +7978,7 @@ const Sn = (g, A) => {
|
|
|
7980
7978
|
}
|
|
7981
7979
|
}
|
|
7982
7980
|
}
|
|
7983
|
-
`, On =
|
|
7981
|
+
`, On = y`
|
|
7984
7982
|
mutation BundleUpdateStakeholders($id: String!, $input: [BundleStakeholderInput!]!) {
|
|
7985
7983
|
bundleUpdateStakeholders(id: $id, input: $input) {
|
|
7986
7984
|
id
|
|
@@ -8000,7 +7998,7 @@ const Sn = (g, A) => {
|
|
|
8000
7998
|
}
|
|
8001
7999
|
}
|
|
8002
8000
|
}
|
|
8003
|
-
`, zn =
|
|
8001
|
+
`, zn = y`
|
|
8004
8002
|
mutation BundleUpdateTransactionOrder($id: String!, $transactionIds: [String!]!) {
|
|
8005
8003
|
bundleUpdateTransactionOrder(id: $id, transactionIds: $transactionIds) {
|
|
8006
8004
|
id
|
|
@@ -8132,7 +8130,7 @@ class jn extends ge {
|
|
|
8132
8130
|
const e = this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);
|
|
8133
8131
|
if (!e)
|
|
8134
8132
|
return Promise.resolve();
|
|
8135
|
-
const t = await
|
|
8133
|
+
const t = await T.getLocalOrFromServer(e);
|
|
8136
8134
|
return t ? this.applyImageSelection(t, A) : Promise.resolve();
|
|
8137
8135
|
}
|
|
8138
8136
|
async applyImageSelection(A, e) {
|
|
@@ -8252,7 +8250,7 @@ class Wn extends wt {
|
|
|
8252
8250
|
return this.getSharedSteps()[0].getCustomColor();
|
|
8253
8251
|
}
|
|
8254
8252
|
}
|
|
8255
|
-
const Xn =
|
|
8253
|
+
const Xn = y`
|
|
8256
8254
|
mutation CreateGlobalPropertyState($bundleId: String!) {
|
|
8257
8255
|
globalPropertyStateCreate(bundleId: $bundleId) {
|
|
8258
8256
|
id
|
|
@@ -8262,7 +8260,7 @@ const Xn = M`
|
|
|
8262
8260
|
}
|
|
8263
8261
|
}
|
|
8264
8262
|
}
|
|
8265
|
-
`, qn =
|
|
8263
|
+
`, qn = y`
|
|
8266
8264
|
mutation UpdateGlobalPropertyState($id: String!, $aspects: [GlobalPropertyStateAspectInput]!) {
|
|
8267
8265
|
globalPropertyStateUpdate(id: $id, aspects: $aspects) {
|
|
8268
8266
|
id
|
|
@@ -8272,7 +8270,7 @@ const Xn = M`
|
|
|
8272
8270
|
}
|
|
8273
8271
|
}
|
|
8274
8272
|
}
|
|
8275
|
-
`, Zn =
|
|
8273
|
+
`, Zn = y`
|
|
8276
8274
|
query GetGlobalPropertyState($bundleId: String!) {
|
|
8277
8275
|
globalPropertyState(bundleId: $bundleId) {
|
|
8278
8276
|
id
|
|
@@ -8312,7 +8310,7 @@ class $n {
|
|
|
8312
8310
|
var e;
|
|
8313
8311
|
if (!this.globalPropertyState)
|
|
8314
8312
|
throw new Error("Global property state not initialized");
|
|
8315
|
-
const A = await
|
|
8313
|
+
const A = await N.getShadowGraphqlClient().mutate({
|
|
8316
8314
|
mutation: qn,
|
|
8317
8315
|
variables: {
|
|
8318
8316
|
id: this.globalPropertyState.id,
|
|
@@ -8326,7 +8324,7 @@ class $n {
|
|
|
8326
8324
|
}
|
|
8327
8325
|
async getOrCreateGlobalPropertyState() {
|
|
8328
8326
|
var t;
|
|
8329
|
-
const A = await
|
|
8327
|
+
const A = await N.getShadowGraphqlClient().query({
|
|
8330
8328
|
query: Zn,
|
|
8331
8329
|
errorPolicy: "all",
|
|
8332
8330
|
fetchPolicy: "no-cache",
|
|
@@ -8336,7 +8334,7 @@ class $n {
|
|
|
8336
8334
|
});
|
|
8337
8335
|
if (A.data.globalPropertyState && A.data.globalPropertyState.id)
|
|
8338
8336
|
return A.data.globalPropertyState;
|
|
8339
|
-
const e = await
|
|
8337
|
+
const e = await N.getShadowGraphqlClient().mutate({
|
|
8340
8338
|
mutation: Xn,
|
|
8341
8339
|
variables: {
|
|
8342
8340
|
bundleId: this.bundleId
|
|
@@ -8492,7 +8490,7 @@ class es {
|
|
|
8492
8490
|
getDefaultWorkflow() {
|
|
8493
8491
|
const A = this.product.workflows || [];
|
|
8494
8492
|
if (A.length === 0)
|
|
8495
|
-
throw new
|
|
8493
|
+
throw new P(
|
|
8496
8494
|
"No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product."
|
|
8497
8495
|
);
|
|
8498
8496
|
const e = this.productResource.workflowId;
|
|
@@ -8670,9 +8668,9 @@ class fe {
|
|
|
8670
8668
|
throw new Error(
|
|
8671
8669
|
"Unable to add transaction to bundle - Already Exists: " + t.filter((s) => !!s).map((s) => s == null ? void 0 : s.getWorkflowManager().getTransaction().id).join(", ")
|
|
8672
8670
|
);
|
|
8673
|
-
const a =
|
|
8674
|
-
await
|
|
8675
|
-
mutation:
|
|
8671
|
+
const a = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), n = e.map((s) => a.get(s));
|
|
8672
|
+
await N.getShadowGraphqlClient().mutate({
|
|
8673
|
+
mutation: bn,
|
|
8676
8674
|
variables: {
|
|
8677
8675
|
id: this.id,
|
|
8678
8676
|
transactionIds: e,
|
|
@@ -8696,8 +8694,8 @@ class fe {
|
|
|
8696
8694
|
(i) => i.getWorkflowManager().getTransaction().id === t
|
|
8697
8695
|
))
|
|
8698
8696
|
throw new Error("Unable to add transaction to bundle - Already Exists!");
|
|
8699
|
-
const s = (
|
|
8700
|
-
await
|
|
8697
|
+
const s = (x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(t);
|
|
8698
|
+
await N.getShadowGraphqlClient().mutate({
|
|
8701
8699
|
mutation: kn,
|
|
8702
8700
|
variables: {
|
|
8703
8701
|
id: this.id,
|
|
@@ -8729,8 +8727,8 @@ class fe {
|
|
|
8729
8727
|
const a = this.workflowExperiences.find(
|
|
8730
8728
|
(n) => n.getWorkflowManager().getTransaction().id === e.id
|
|
8731
8729
|
);
|
|
8732
|
-
this.previewService && a.getWorkflowManager().ejectFromPreviewService(), this.bundleStateManager.removeStateForTransaction(e.id), await
|
|
8733
|
-
mutation:
|
|
8730
|
+
this.previewService && a.getWorkflowManager().ejectFromPreviewService(), this.bundleStateManager.removeStateForTransaction(e.id), await N.getShadowGraphqlClient().mutate({
|
|
8731
|
+
mutation: Jn,
|
|
8734
8732
|
variables: {
|
|
8735
8733
|
id: this.id,
|
|
8736
8734
|
transactionId: e.id,
|
|
@@ -8756,7 +8754,7 @@ class fe {
|
|
|
8756
8754
|
1
|
|
8757
8755
|
)[0]
|
|
8758
8756
|
);
|
|
8759
|
-
this.previewService && t.forEach((a) => a.getWorkflowManager().ejectFromPreviewService()), A.forEach((a) => this.bundleStateManager.removeStateForTransaction(a.id)), await
|
|
8757
|
+
this.previewService && t.forEach((a) => a.getWorkflowManager().ejectFromPreviewService()), A.forEach((a) => this.bundleStateManager.removeStateForTransaction(a.id)), await N.getShadowGraphqlClient().mutate({
|
|
8760
8758
|
mutation: Tn,
|
|
8761
8759
|
variables: {
|
|
8762
8760
|
id: this.id,
|
|
@@ -8814,7 +8812,7 @@ class fe {
|
|
|
8814
8812
|
}
|
|
8815
8813
|
async addStakeholder(A, e) {
|
|
8816
8814
|
var n;
|
|
8817
|
-
const t = await
|
|
8815
|
+
const t = await N.getShadowGraphqlClient().mutate({
|
|
8818
8816
|
mutation: Ln,
|
|
8819
8817
|
variables: {
|
|
8820
8818
|
id: this.id,
|
|
@@ -8829,7 +8827,7 @@ class fe {
|
|
|
8829
8827
|
}
|
|
8830
8828
|
async updateStakeholders(A) {
|
|
8831
8829
|
var a;
|
|
8832
|
-
const e = await
|
|
8830
|
+
const e = await N.getShadowGraphqlClient().mutate({
|
|
8833
8831
|
mutation: On,
|
|
8834
8832
|
variables: {
|
|
8835
8833
|
id: this.id,
|
|
@@ -8842,7 +8840,7 @@ class fe {
|
|
|
8842
8840
|
this.storeStakeholderCustomers(t);
|
|
8843
8841
|
}
|
|
8844
8842
|
async getAllStakeholders() {
|
|
8845
|
-
const A = await
|
|
8843
|
+
const A = await N.getShadowGraphqlClient().query({
|
|
8846
8844
|
query: Hn,
|
|
8847
8845
|
errorPolicy: "all",
|
|
8848
8846
|
variables: {
|
|
@@ -8930,7 +8928,7 @@ class fe {
|
|
|
8930
8928
|
}
|
|
8931
8929
|
async updateBundle() {
|
|
8932
8930
|
var e;
|
|
8933
|
-
if (!((e = (await
|
|
8931
|
+
if (!((e = (await N.getShadowGraphqlClient().mutate({
|
|
8934
8932
|
mutation: vn,
|
|
8935
8933
|
variables: {
|
|
8936
8934
|
id: this.id,
|
|
@@ -8942,7 +8940,7 @@ class fe {
|
|
|
8942
8940
|
throw new Error("Bundle not found!");
|
|
8943
8941
|
}
|
|
8944
8942
|
async updateTransactionOrder() {
|
|
8945
|
-
await
|
|
8943
|
+
await N.getShadowGraphqlClient().mutate({
|
|
8946
8944
|
mutation: zn,
|
|
8947
8945
|
variables: {
|
|
8948
8946
|
id: this.id,
|
|
@@ -8973,7 +8971,7 @@ class fe {
|
|
|
8973
8971
|
);
|
|
8974
8972
|
}
|
|
8975
8973
|
}
|
|
8976
|
-
const ns =
|
|
8974
|
+
const ns = y`
|
|
8977
8975
|
mutation processFlowCreate($processFlowId: String!, $inputs: [String]!) {
|
|
8978
8976
|
processExecutionCreate(processFlowId: $processFlowId, inputs: $inputs) {
|
|
8979
8977
|
id
|
|
@@ -8990,7 +8988,7 @@ class ss {
|
|
|
8990
8988
|
*/
|
|
8991
8989
|
async execute(A, e, t) {
|
|
8992
8990
|
var B, l, d;
|
|
8993
|
-
const n = (l = (B = (await
|
|
8991
|
+
const n = (l = (B = (await N.getShadowGraphqlClient().mutate({
|
|
8994
8992
|
mutation: ns,
|
|
8995
8993
|
variables: {
|
|
8996
8994
|
processFlowId: A,
|
|
@@ -9000,14 +8998,14 @@ class ss {
|
|
|
9000
8998
|
if (!n)
|
|
9001
8999
|
throw new Error("Failed to create process execution.");
|
|
9002
9000
|
function s(E) {
|
|
9003
|
-
return new Promise((
|
|
9004
|
-
setTimeout(
|
|
9001
|
+
return new Promise((C) => {
|
|
9002
|
+
setTimeout(C, E);
|
|
9005
9003
|
});
|
|
9006
9004
|
}
|
|
9007
9005
|
let i = !1, o = 0, r, c;
|
|
9008
9006
|
for (; !i; ) {
|
|
9009
|
-
r = await
|
|
9010
|
-
query:
|
|
9007
|
+
r = await N.getShadowGraphqlClient().query({
|
|
9008
|
+
query: y`
|
|
9011
9009
|
query getProcessFlowExecution($ids: [String]!) {
|
|
9012
9010
|
processExecutions(ids: $ids) {
|
|
9013
9011
|
id
|
|
@@ -9037,8 +9035,8 @@ class ss {
|
|
|
9037
9035
|
break;
|
|
9038
9036
|
}
|
|
9039
9037
|
o += 1;
|
|
9040
|
-
const
|
|
9041
|
-
if (o >=
|
|
9038
|
+
const C = t != null && t.repeats ? t == null ? void 0 : t.repeats : 5;
|
|
9039
|
+
if (o >= C)
|
|
9042
9040
|
throw new Error("Maximum wait time exceeded for execution result.");
|
|
9043
9041
|
await s(t != null && t.sleepTime ? Math.max(t.sleepTime, 500) : 2e3);
|
|
9044
9042
|
}
|
|
@@ -9143,7 +9141,7 @@ class Et extends os {
|
|
|
9143
9141
|
return A.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i);
|
|
9144
9142
|
}
|
|
9145
9143
|
}
|
|
9146
|
-
const cs =
|
|
9144
|
+
const cs = y`
|
|
9147
9145
|
fragment RegionFields on Region {
|
|
9148
9146
|
width
|
|
9149
9147
|
top
|
|
@@ -9161,7 +9159,7 @@ const cs = M`
|
|
|
9161
9159
|
height
|
|
9162
9160
|
}
|
|
9163
9161
|
}
|
|
9164
|
-
`, gs =
|
|
9162
|
+
`, gs = y`
|
|
9165
9163
|
fragment LookAtAnimationFields on LookAtAnimation {
|
|
9166
9164
|
latDeg
|
|
9167
9165
|
lonDeg
|
|
@@ -9172,7 +9170,7 @@ const cs = M`
|
|
|
9172
9170
|
z
|
|
9173
9171
|
}
|
|
9174
9172
|
}
|
|
9175
|
-
`, ls =
|
|
9173
|
+
`, ls = y`
|
|
9176
9174
|
fragment RenderingPipelineConfigurationFields on RenderingPipelineConfiguration {
|
|
9177
9175
|
antiAliasing {
|
|
9178
9176
|
samples
|
|
@@ -9256,14 +9254,14 @@ const cs = M`
|
|
|
9256
9254
|
weight
|
|
9257
9255
|
}
|
|
9258
9256
|
}
|
|
9259
|
-
`, Bs =
|
|
9257
|
+
`, Bs = y`
|
|
9260
9258
|
fragment ModelAnimationFields on ModelAnimation {
|
|
9261
9259
|
from
|
|
9262
9260
|
to
|
|
9263
9261
|
loop
|
|
9264
9262
|
name
|
|
9265
9263
|
}
|
|
9266
|
-
`, ds = (g) =>
|
|
9264
|
+
`, ds = (g) => y`
|
|
9267
9265
|
${kA(g)}
|
|
9268
9266
|
${se}
|
|
9269
9267
|
${je}
|
|
@@ -9294,8 +9292,6 @@ const cs = M`
|
|
|
9294
9292
|
emissiveGlowIntensity
|
|
9295
9293
|
enableAR
|
|
9296
9294
|
environmentFile
|
|
9297
|
-
environmentIntensity
|
|
9298
|
-
environmentRotationY
|
|
9299
9295
|
idleTimeBeforeRotation
|
|
9300
9296
|
lowerAlphaLimitDeg
|
|
9301
9297
|
lowerBetaLimitDeg
|
|
@@ -9367,6 +9363,7 @@ const cs = M`
|
|
|
9367
9363
|
stepTitle
|
|
9368
9364
|
helpText
|
|
9369
9365
|
mandatory
|
|
9366
|
+
silent
|
|
9370
9367
|
conditions {
|
|
9371
9368
|
requiredVariantSelections
|
|
9372
9369
|
targetStepName
|
|
@@ -9660,7 +9657,7 @@ const cs = M`
|
|
|
9660
9657
|
}
|
|
9661
9658
|
}
|
|
9662
9659
|
}
|
|
9663
|
-
`, ws =
|
|
9660
|
+
`, ws = y`
|
|
9664
9661
|
query GetTransactionForPartner($id: String!) {
|
|
9665
9662
|
transactions(ids: [$id]) {
|
|
9666
9663
|
id
|
|
@@ -9677,7 +9674,7 @@ const cs = M`
|
|
|
9677
9674
|
}
|
|
9678
9675
|
}
|
|
9679
9676
|
}
|
|
9680
|
-
`, Es =
|
|
9677
|
+
`, Es = y`
|
|
9681
9678
|
${kA(!1)}
|
|
9682
9679
|
query GetWorkflowForTheme($id: String!) {
|
|
9683
9680
|
workflow(id: $id) {
|
|
@@ -9699,7 +9696,7 @@ const cs = M`
|
|
|
9699
9696
|
}
|
|
9700
9697
|
}
|
|
9701
9698
|
}
|
|
9702
|
-
`, hs =
|
|
9699
|
+
`, hs = y`
|
|
9703
9700
|
query GetCustomer($emailAddress: String!) {
|
|
9704
9701
|
customer(emailAddress: $emailAddress) {
|
|
9705
9702
|
id
|
|
@@ -9709,7 +9706,7 @@ const cs = M`
|
|
|
9709
9706
|
}
|
|
9710
9707
|
}
|
|
9711
9708
|
}
|
|
9712
|
-
`, Cs =
|
|
9709
|
+
`, Cs = y`
|
|
9713
9710
|
mutation CustomerCreate($details: CustomerDetailsInput!) {
|
|
9714
9711
|
customerCreate(details: $details) {
|
|
9715
9712
|
id
|
|
@@ -9719,7 +9716,7 @@ const cs = M`
|
|
|
9719
9716
|
}
|
|
9720
9717
|
}
|
|
9721
9718
|
}
|
|
9722
|
-
`, Qs =
|
|
9719
|
+
`, Qs = y`
|
|
9723
9720
|
mutation CustomerAuthenticate($loginToken: String!) {
|
|
9724
9721
|
customerAuthenticate(loginToken: $loginToken) {
|
|
9725
9722
|
id
|
|
@@ -9746,11 +9743,11 @@ const cs = M`
|
|
|
9746
9743
|
}
|
|
9747
9744
|
}
|
|
9748
9745
|
}
|
|
9749
|
-
`, us =
|
|
9746
|
+
`, us = y`
|
|
9750
9747
|
mutation CustomerGenerateVerificationCode($emailAddress: String!) {
|
|
9751
9748
|
customerGenerateVerificationCode(emailAddress: $emailAddress)
|
|
9752
9749
|
}
|
|
9753
|
-
`, ms =
|
|
9750
|
+
`, ms = y`
|
|
9754
9751
|
mutation CustomerVerifyCode($emailAddress: String!, $verificationCode: String!) {
|
|
9755
9752
|
customerVerifyCode(emailAddress: $emailAddress, verificationCode: $verificationCode) {
|
|
9756
9753
|
id
|
|
@@ -9782,13 +9779,13 @@ const cs = M`
|
|
|
9782
9779
|
var A;
|
|
9783
9780
|
for (const e in g.layouts) {
|
|
9784
9781
|
const t = g.layouts[e].elements.filter(
|
|
9785
|
-
(n) => n.type ===
|
|
9782
|
+
(n) => n.type === H.Illustration
|
|
9786
9783
|
);
|
|
9787
9784
|
for (let n = 0; n < t.length; ++n) {
|
|
9788
9785
|
const s = t[n];
|
|
9789
9786
|
s.src && s.svg && (s.cachedObjectURL = await FA(s.svg));
|
|
9790
9787
|
}
|
|
9791
|
-
const a = g.layouts[e].elements.filter((n) => n.type ===
|
|
9788
|
+
const a = g.layouts[e].elements.filter((n) => n.type === H.Textbox);
|
|
9792
9789
|
for (let n = 0; n < a.length; ++n) {
|
|
9793
9790
|
const s = a[n];
|
|
9794
9791
|
(A = s.fontData) != null && A.assetUrl && await te(s.fontData.assetUrl);
|
|
@@ -9796,7 +9793,7 @@ const cs = M`
|
|
|
9796
9793
|
}
|
|
9797
9794
|
}, ps = async (g, A) => {
|
|
9798
9795
|
var a;
|
|
9799
|
-
const e = await
|
|
9796
|
+
const e = await N.getShadowGraphqlClient().query({
|
|
9800
9797
|
query: ds(((a = A == null ? void 0 : A.assets) == null ? void 0 : a.metadata) || !1),
|
|
9801
9798
|
errorPolicy: "all",
|
|
9802
9799
|
fetchPolicy: "no-cache",
|
|
@@ -9809,8 +9806,8 @@ const cs = M`
|
|
|
9809
9806
|
return t.forEach((n) => {
|
|
9810
9807
|
n.steps.forEach((s) => {
|
|
9811
9808
|
var i, o, r;
|
|
9812
|
-
delete s.data.__typename, (i = s.option) != null && i.id && ((o = s.option.defaultVariant) != null && o.asset &&
|
|
9813
|
-
c.asset &&
|
|
9809
|
+
delete s.data.__typename, (i = s.option) != null && i.id && ((o = s.option.defaultVariant) != null && o.asset && T.cacheAsset(s.option.defaultVariant.asset), s.option.colorProfile && T.cacheAsset(s.option.colorProfile), (r = s.option.variants) == null || r.forEach((c) => {
|
|
9810
|
+
c.asset && T.cacheAsset(c.asset), c.displayImage && T.cacheAsset(c.displayImage), c.thumbnail && T.cacheAsset(c.thumbnail), c.material && T.cacheMaterial(c.material);
|
|
9814
9811
|
}), BA.set({ id: s.option.id }, Promise.resolve(s.option)));
|
|
9815
9812
|
});
|
|
9816
9813
|
}), t;
|
|
@@ -9848,12 +9845,12 @@ class fs {
|
|
|
9848
9845
|
constructor(A) {
|
|
9849
9846
|
this.updateTransactionState = async (e) => {
|
|
9850
9847
|
try {
|
|
9851
|
-
return
|
|
9848
|
+
return N.getShadowGraphqlClient().mutate({
|
|
9852
9849
|
...e,
|
|
9853
9850
|
mutation: la
|
|
9854
9851
|
});
|
|
9855
9852
|
} catch (t) {
|
|
9856
|
-
throw console.error(t), new
|
|
9853
|
+
throw console.error(t), new P("Critical - Unable to synchronize workflow state with server.");
|
|
9857
9854
|
}
|
|
9858
9855
|
}, this.initialized = !1, this.options = A, this.options.applicationKey && Lt(this.options.applicationKey);
|
|
9859
9856
|
}
|
|
@@ -9862,7 +9859,7 @@ class fs {
|
|
|
9862
9859
|
* and the Spiff Commerce platform.
|
|
9863
9860
|
*/
|
|
9864
9861
|
getAssetManager() {
|
|
9865
|
-
return
|
|
9862
|
+
return T;
|
|
9866
9863
|
}
|
|
9867
9864
|
getCurrencyCode() {
|
|
9868
9865
|
if (this.currencyCode === void 0)
|
|
@@ -9882,14 +9879,14 @@ class fs {
|
|
|
9882
9879
|
*/
|
|
9883
9880
|
async authenticateBundleFromLocalStorage(A) {
|
|
9884
9881
|
var a, n;
|
|
9885
|
-
const e =
|
|
9882
|
+
const e = x.getMap("bundleOwnerIds");
|
|
9886
9883
|
if (e != null && e.has(A)) {
|
|
9887
9884
|
const s = e.get(A);
|
|
9888
9885
|
return TA(s), Promise.resolve({ success: !0, stakeholderType: NA.Owner });
|
|
9889
9886
|
}
|
|
9890
|
-
const t =
|
|
9887
|
+
const t = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
9891
9888
|
if (t.has(A)) {
|
|
9892
|
-
const s = t.get(A), o = (
|
|
9889
|
+
const s = t.get(A), o = (x.getMap("partnerCustomerIds") || /* @__PURE__ */ new Map()).get(s);
|
|
9893
9890
|
if (o && await this.authenticateCustomerId(o)) {
|
|
9894
9891
|
const c = (n = (a = this.customer) == null ? void 0 : a.bundleStakeholders) == null ? void 0 : n.find(
|
|
9895
9892
|
(B) => {
|
|
@@ -9917,8 +9914,8 @@ class fs {
|
|
|
9917
9914
|
* @throws An error if the transaction is not found.
|
|
9918
9915
|
*/
|
|
9919
9916
|
async authenticateTransactionFromLocalStorage(A) {
|
|
9920
|
-
var c, B, l, d, E,
|
|
9921
|
-
const e =
|
|
9917
|
+
var c, B, l, d, E, C;
|
|
9918
|
+
const e = N.getShadowGraphqlClient(), t = await e.query({
|
|
9922
9919
|
query: ws,
|
|
9923
9920
|
errorPolicy: "all",
|
|
9924
9921
|
fetchPolicy: "no-cache",
|
|
@@ -9933,30 +9930,30 @@ class fs {
|
|
|
9933
9930
|
throw new Error(`Unable to read transaction: ${A}`);
|
|
9934
9931
|
if (a.isOrdered)
|
|
9935
9932
|
return Promise.resolve({ success: !1, transactionReadOnly: !0 });
|
|
9936
|
-
const s =
|
|
9933
|
+
const s = x.getMap("transactionOwnerIds");
|
|
9937
9934
|
if (s != null && s.has(A)) {
|
|
9938
9935
|
const w = s.get(A);
|
|
9939
9936
|
return eA(w), Promise.resolve({ success: !0, stakeholderType: NA.Owner });
|
|
9940
9937
|
}
|
|
9941
|
-
const i =
|
|
9938
|
+
const i = x.getMap("transactionCustomerIds");
|
|
9942
9939
|
if (i != null && i.has(A)) {
|
|
9943
9940
|
const w = i.get(A);
|
|
9944
9941
|
if (w && await this.authenticateCustomerId(w)) {
|
|
9945
|
-
const
|
|
9942
|
+
const h = ((d = (l = this.customer) == null ? void 0 : l.bundleStakeholders) == null ? void 0 : d.find(
|
|
9946
9943
|
(u) => {
|
|
9947
|
-
var
|
|
9948
|
-
return (p = (
|
|
9944
|
+
var f, p;
|
|
9945
|
+
return (p = (f = u.bundle) == null ? void 0 : f.transactions) == null ? void 0 : p.some((D) => D.id === A);
|
|
9949
9946
|
}
|
|
9950
|
-
)) || ((
|
|
9947
|
+
)) || ((C = (E = this.customer) == null ? void 0 : E.stakeholders) == null ? void 0 : C.find(
|
|
9951
9948
|
(u) => {
|
|
9952
|
-
var
|
|
9953
|
-
return ((
|
|
9949
|
+
var f;
|
|
9950
|
+
return ((f = u.transaction) == null ? void 0 : f.id) === A;
|
|
9954
9951
|
}
|
|
9955
9952
|
));
|
|
9956
|
-
if (
|
|
9953
|
+
if (h)
|
|
9957
9954
|
return Promise.resolve({
|
|
9958
9955
|
success: !0,
|
|
9959
|
-
stakeholderType:
|
|
9956
|
+
stakeholderType: h.type
|
|
9960
9957
|
});
|
|
9961
9958
|
}
|
|
9962
9959
|
}
|
|
@@ -9979,8 +9976,8 @@ class fs {
|
|
|
9979
9976
|
this.customer = void 0;
|
|
9980
9977
|
}
|
|
9981
9978
|
clearCustomerForTransaction(A) {
|
|
9982
|
-
const e =
|
|
9983
|
-
e != null && e.has(A) && (e.delete(A),
|
|
9979
|
+
const e = x.getMap("transactionCustomerIds");
|
|
9980
|
+
e != null && e.has(A) && (e.delete(A), x.setMap("transactionCustomerIds", e));
|
|
9984
9981
|
}
|
|
9985
9982
|
getStakeholderTypeForTransaction(A) {
|
|
9986
9983
|
var t, a;
|
|
@@ -9996,7 +9993,7 @@ class fs {
|
|
|
9996
9993
|
async getOrCreateCustomer(A) {
|
|
9997
9994
|
var s;
|
|
9998
9995
|
this.customer = void 0;
|
|
9999
|
-
const e =
|
|
9996
|
+
const e = N.getShadowGraphqlClient(), a = (await e.query({
|
|
10000
9997
|
query: hs,
|
|
10001
9998
|
errorPolicy: "all",
|
|
10002
9999
|
fetchPolicy: "no-cache",
|
|
@@ -10031,7 +10028,7 @@ class fs {
|
|
|
10031
10028
|
}
|
|
10032
10029
|
async authenticateCustomerId(A) {
|
|
10033
10030
|
var i;
|
|
10034
|
-
const e =
|
|
10031
|
+
const e = N.getShadowGraphqlClient(), t = x.getMap("customerTokens");
|
|
10035
10032
|
if (!(t != null && t.has(A)))
|
|
10036
10033
|
return !1;
|
|
10037
10034
|
const a = t.get(A);
|
|
@@ -10052,7 +10049,7 @@ class fs {
|
|
|
10052
10049
|
* @param emailAddress The email address to generate a verification code for. The user will be sent an email with the verification code.
|
|
10053
10050
|
*/
|
|
10054
10051
|
async generateVerificationCode(A) {
|
|
10055
|
-
await
|
|
10052
|
+
await N.getShadowGraphqlClient().mutate({
|
|
10056
10053
|
mutation: us,
|
|
10057
10054
|
variables: {
|
|
10058
10055
|
emailAddress: A
|
|
@@ -10067,7 +10064,7 @@ class fs {
|
|
|
10067
10064
|
*/
|
|
10068
10065
|
async verifyCode(A, e) {
|
|
10069
10066
|
var n, s;
|
|
10070
|
-
const a = (n = (await
|
|
10067
|
+
const a = (n = (await N.getShadowGraphqlClient().mutate({
|
|
10071
10068
|
mutation: ms,
|
|
10072
10069
|
errorPolicy: "all",
|
|
10073
10070
|
fetchPolicy: "no-cache",
|
|
@@ -10079,8 +10076,8 @@ class fs {
|
|
|
10079
10076
|
if (a != null && a.loginToken) {
|
|
10080
10077
|
if (!((s = a.partner) != null && s.id))
|
|
10081
10078
|
throw new Error(`Unable to find customer: ${A}`);
|
|
10082
|
-
const i =
|
|
10083
|
-
return i.set(a.id, a.loginToken),
|
|
10079
|
+
const i = x.getMap("customerTokens") || /* @__PURE__ */ new Map();
|
|
10080
|
+
return i.set(a.id, a.loginToken), x.setMap("customerTokens", i), this.storeCustomer(a), Qe(a.loginToken), this.customer = {
|
|
10084
10081
|
...a,
|
|
10085
10082
|
loginToken: void 0
|
|
10086
10083
|
}, !0;
|
|
@@ -10093,7 +10090,7 @@ class fs {
|
|
|
10093
10090
|
*/
|
|
10094
10091
|
async getNewBundle(A) {
|
|
10095
10092
|
var s;
|
|
10096
|
-
const t = (s = (await
|
|
10093
|
+
const t = (s = (await N.getShadowGraphqlClient().mutate({
|
|
10097
10094
|
mutation: Gn,
|
|
10098
10095
|
variables: {
|
|
10099
10096
|
collectionId: A
|
|
@@ -10102,10 +10099,10 @@ class fs {
|
|
|
10102
10099
|
})).data) == null ? void 0 : s.bundleCreate;
|
|
10103
10100
|
if (!(t != null && t.id))
|
|
10104
10101
|
throw new Error("Unable to create bundle");
|
|
10105
|
-
const a =
|
|
10106
|
-
a.set(t.id, t.partner.id),
|
|
10107
|
-
const n =
|
|
10108
|
-
return n.set(t.id, t.bundleOwnerId),
|
|
10102
|
+
const a = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10103
|
+
a.set(t.id, t.partner.id), x.setMap("bundlePartnerIds", a), TA(t.bundleOwnerId);
|
|
10104
|
+
const n = x.getMap("bundleOwnerIds") || /* @__PURE__ */ new Map();
|
|
10105
|
+
return n.set(t.id, t.bundleOwnerId), x.setMap("bundleOwnerIds", n), new fe(this, t);
|
|
10109
10106
|
}
|
|
10110
10107
|
/**
|
|
10111
10108
|
* Retrieves an existing bundle from the API, by id.
|
|
@@ -10116,9 +10113,9 @@ class fs {
|
|
|
10116
10113
|
*/
|
|
10117
10114
|
async getExistingBundle(A, e, t) {
|
|
10118
10115
|
var c, B, l, d;
|
|
10119
|
-
const a =
|
|
10116
|
+
const a = x.getMap("bundleOwnerIds"), n = a == null ? void 0 : a.get(A);
|
|
10120
10117
|
n && TA(n);
|
|
10121
|
-
const s = await
|
|
10118
|
+
const s = await N.getShadowGraphqlClient().query({
|
|
10122
10119
|
query: Pn,
|
|
10123
10120
|
variables: {
|
|
10124
10121
|
id: A
|
|
@@ -10127,8 +10124,8 @@ class fs {
|
|
|
10127
10124
|
});
|
|
10128
10125
|
if (!((c = s.data) != null && c.bundles) || ((B = s.data) == null ? void 0 : B.bundles.length) === 0 || !((l = s.data) != null && l.bundles[0]))
|
|
10129
10126
|
throw new Error(`Unable to find bundle: ${A}`);
|
|
10130
|
-
const i = (d = s.data) == null ? void 0 : d.bundles[0], o =
|
|
10131
|
-
o.set(i.id, i.partner.id),
|
|
10127
|
+
const i = (d = s.data) == null ? void 0 : d.bundles[0], o = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10128
|
+
o.set(i.id, i.partner.id), x.setMap("bundlePartnerIds", o);
|
|
10132
10129
|
const r = new fe(this, i, e, t);
|
|
10133
10130
|
return await r.getInitializationPromise(), r;
|
|
10134
10131
|
}
|
|
@@ -10140,7 +10137,7 @@ class fs {
|
|
|
10140
10137
|
var n;
|
|
10141
10138
|
if (!this.customer)
|
|
10142
10139
|
throw new Error("Customer not authenticated.");
|
|
10143
|
-
const A = await
|
|
10140
|
+
const A = await N.getShadowGraphqlClient().query({
|
|
10144
10141
|
query: Un,
|
|
10145
10142
|
variables: {
|
|
10146
10143
|
id: this.customer.id
|
|
@@ -10149,11 +10146,11 @@ class fs {
|
|
|
10149
10146
|
});
|
|
10150
10147
|
if (!((n = A.data) != null && n.customers) || A.data.customers.length === 0)
|
|
10151
10148
|
throw new Error("Unable to find customer.");
|
|
10152
|
-
const t = A.data.customers[0].bundleStakeholders || [], a =
|
|
10149
|
+
const t = A.data.customers[0].bundleStakeholders || [], a = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10153
10150
|
return t.forEach((s) => {
|
|
10154
10151
|
var i, o;
|
|
10155
10152
|
(i = s.bundle) != null && i.id && ((o = s.bundle.partner) != null && o.id) && a.set(s.bundle.id, s.bundle.partner.id);
|
|
10156
|
-
}),
|
|
10153
|
+
}), x.setMap("bundlePartnerIds", a), t;
|
|
10157
10154
|
}
|
|
10158
10155
|
/**
|
|
10159
10156
|
* Creates a new instance of WorkflowExperience. A high level wrapper for workflows.
|
|
@@ -10164,40 +10161,40 @@ class fs {
|
|
|
10164
10161
|
* @returns A workflow experience configured as requested.
|
|
10165
10162
|
*/
|
|
10166
10163
|
async getWorkflowExperience(A, e, t, a) {
|
|
10167
|
-
var B, l, d, E;
|
|
10164
|
+
var B, l, d, E, C;
|
|
10168
10165
|
if (!a)
|
|
10169
10166
|
return await this.getWorkflowExperienceDeprecated(A, e, t);
|
|
10170
10167
|
const n = async () => {
|
|
10171
|
-
var
|
|
10172
|
-
const
|
|
10168
|
+
var Q, h;
|
|
10169
|
+
const w = N.getShadowGraphqlClient();
|
|
10173
10170
|
if (a.type === "transaction") {
|
|
10174
|
-
const { transactionId:
|
|
10171
|
+
const { transactionId: u, readOnly: f } = a, p = await w.query({
|
|
10175
10172
|
query: EA,
|
|
10176
10173
|
variables: {
|
|
10177
|
-
ids: [
|
|
10174
|
+
ids: [u]
|
|
10178
10175
|
},
|
|
10179
10176
|
errorPolicy: "all",
|
|
10180
10177
|
fetchPolicy: "no-cache"
|
|
10181
10178
|
});
|
|
10182
|
-
if (!((
|
|
10183
|
-
throw new
|
|
10184
|
-
const
|
|
10185
|
-
if (!
|
|
10186
|
-
throw new
|
|
10187
|
-
const
|
|
10188
|
-
if (!
|
|
10189
|
-
throw new
|
|
10190
|
-
return { transaction:
|
|
10179
|
+
if (!((Q = p.data) != null && Q.transactions) || p.data.transactions.length === 0)
|
|
10180
|
+
throw new P("Existing transaction not found.");
|
|
10181
|
+
const D = (h = p.data) == null ? void 0 : h.transactions[0];
|
|
10182
|
+
if (!D.workflowId)
|
|
10183
|
+
throw new P("Existing transaction has no workflow ID.");
|
|
10184
|
+
const m = await pA(D.workflowId);
|
|
10185
|
+
if (!D.product)
|
|
10186
|
+
throw new P("Failed to load transaction, product not available.");
|
|
10187
|
+
return { transaction: D, workflow: m, readOnly: f };
|
|
10191
10188
|
}
|
|
10192
10189
|
if (a.type === "integration" || a.type === "external") {
|
|
10193
|
-
const
|
|
10194
|
-
const
|
|
10190
|
+
const u = async () => {
|
|
10191
|
+
const m = a.type === "integration" ? { integrationProductId: a.integrationProductId } : {
|
|
10195
10192
|
externalIntegrationId: a.externalIntegrationId,
|
|
10196
10193
|
externalProductId: a.externalProductId
|
|
10197
|
-
},
|
|
10194
|
+
}, M = await w.mutate({
|
|
10198
10195
|
mutation: ue,
|
|
10199
10196
|
variables: {
|
|
10200
|
-
...
|
|
10197
|
+
...m,
|
|
10201
10198
|
bulk: a.bulk,
|
|
10202
10199
|
workflowId: a.workflowId,
|
|
10203
10200
|
claim: !0
|
|
@@ -10207,37 +10204,38 @@ class fs {
|
|
|
10207
10204
|
// TODO: this should be changed to required once the API is updated. Should this also be moved to server.ts?
|
|
10208
10205
|
context: this.options.applicationKey ? { headers: { "X-Application-Key": this.options.applicationKey } } : void 0
|
|
10209
10206
|
});
|
|
10210
|
-
if (!
|
|
10211
|
-
throw new
|
|
10212
|
-
const
|
|
10213
|
-
if (!
|
|
10214
|
-
throw new
|
|
10215
|
-
return
|
|
10216
|
-
},
|
|
10217
|
-
return { transaction:
|
|
10207
|
+
if (!M.data || !M.data.transactionCreate)
|
|
10208
|
+
throw new P("Failed to create transaction!");
|
|
10209
|
+
const Y = M.data.transactionCreate;
|
|
10210
|
+
if (!Y.product)
|
|
10211
|
+
throw new P("Failed to create transaction, product not available.");
|
|
10212
|
+
return Y;
|
|
10213
|
+
}, f = pA(a.workflowId, a == null ? void 0 : a.graphql), [p, D] = await Promise.all([u(), f]);
|
|
10214
|
+
return { transaction: p, workflow: D };
|
|
10218
10215
|
}
|
|
10219
|
-
throw new
|
|
10216
|
+
throw new P("No workflow ID provided.");
|
|
10220
10217
|
}, { transaction: s, workflow: i, readOnly: o } = await n();
|
|
10221
10218
|
this.currencyCode = (B = s.product.partner) == null ? void 0 : B.currencyCode;
|
|
10222
10219
|
const r = {
|
|
10223
10220
|
product: s.product,
|
|
10224
10221
|
transaction: s,
|
|
10225
10222
|
layouts: [],
|
|
10223
|
+
singleVariantsRenderable: (l = a == null ? void 0 : a.workflowConfiguration) == null ? void 0 : l.singleVariantsRenderable,
|
|
10226
10224
|
stateMutationFunc: o ? async () => {
|
|
10227
10225
|
throw new v("State mutation is forbidden in read only mode!");
|
|
10228
|
-
} : async (
|
|
10229
|
-
const
|
|
10230
|
-
return this.updateTransactionState({ ...
|
|
10226
|
+
} : async (w) => {
|
|
10227
|
+
const h = (x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(s.id) || void 0;
|
|
10228
|
+
return this.updateTransactionState({ ...w, context: { transactionOwnerId: h } });
|
|
10231
10229
|
},
|
|
10232
10230
|
readOnly: o,
|
|
10233
10231
|
workflow: i
|
|
10234
10232
|
};
|
|
10235
10233
|
if (a.type === "transaction" && s.workflowState) {
|
|
10236
|
-
const
|
|
10237
|
-
r.layouts = Object.values(
|
|
10234
|
+
const w = JSON.parse(s.workflowState);
|
|
10235
|
+
r.layouts = Object.values(w.layouts).map((Q) => Q.layout), await AA(w), await tA(w), r.reloadedState = w;
|
|
10238
10236
|
} else if (!o && a.workflowState) {
|
|
10239
|
-
const
|
|
10240
|
-
r.layouts = Object.values(
|
|
10237
|
+
const w = JSON.parse(a.workflowState);
|
|
10238
|
+
r.layouts = Object.values(w.layouts).map((Q) => Q.layout), await AA(w), await tA(w), r.reloadedState = w;
|
|
10241
10239
|
} else
|
|
10242
10240
|
r.layouts = KA(
|
|
10243
10241
|
r.transaction,
|
|
@@ -10245,18 +10243,18 @@ class fs {
|
|
|
10245
10243
|
);
|
|
10246
10244
|
if (r.renderableContextService = new QA(
|
|
10247
10245
|
r.layouts
|
|
10248
|
-
), a.previewService ? (r.previewService = a.previewService, (
|
|
10246
|
+
), a.previewService ? (r.previewService = a.previewService, (d = r.product) != null && d.modelUrl && (r.modelContainer = r.previewService.loadModel({
|
|
10249
10247
|
model: r.product.modelUrl,
|
|
10250
10248
|
contextService: r.renderableContextService
|
|
10251
|
-
}))) : (r.previewService = t && t(i), (
|
|
10249
|
+
}))) : (r.previewService = t && t(i), (E = r.product) != null && E.modelUrl && (r.modelContainer = (C = r.previewService) == null ? void 0 : C.loadModel({
|
|
10252
10250
|
model: r.product.modelUrl,
|
|
10253
10251
|
contextService: r.renderableContextService
|
|
10254
10252
|
}))), a.type !== "transaction") {
|
|
10255
|
-
const
|
|
10256
|
-
|
|
10253
|
+
const w = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map();
|
|
10254
|
+
w.set(s.id, s.transactionOwnerId), eA(s.transactionOwnerId || ""), x.setMap("transactionOwnerIds", w);
|
|
10257
10255
|
} else {
|
|
10258
|
-
const
|
|
10259
|
-
|
|
10256
|
+
const Q = (x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(s.id);
|
|
10257
|
+
Q && eA(Q), r.isReloadedTransaction = !0;
|
|
10260
10258
|
}
|
|
10261
10259
|
this.initialized = !0, this.experienceOptions = r;
|
|
10262
10260
|
const c = new CA(this, r);
|
|
@@ -10271,39 +10269,39 @@ class fs {
|
|
|
10271
10269
|
*/
|
|
10272
10270
|
async getWorkflowExperiences(A, e) {
|
|
10273
10271
|
if (A.length === 0)
|
|
10274
|
-
throw new
|
|
10275
|
-
const t =
|
|
10276
|
-
(
|
|
10272
|
+
throw new P("No options provided!");
|
|
10273
|
+
const t = N.getShadowGraphqlClient(), a = A.map((h, u) => ({ option: h, index: u })), n = a.filter((h) => h.option.type === "transaction"), s = a.filter(
|
|
10274
|
+
(h) => h.option.type === "integration" || h.option.type === "external"
|
|
10277
10275
|
), i = async () => {
|
|
10278
|
-
var p,
|
|
10276
|
+
var p, D;
|
|
10279
10277
|
if (n.length === 0)
|
|
10280
10278
|
return [];
|
|
10281
|
-
const
|
|
10279
|
+
const h = n.map((m) => m.option.transactionId), u = await t.query({
|
|
10282
10280
|
query: EA,
|
|
10283
10281
|
variables: {
|
|
10284
|
-
ids:
|
|
10282
|
+
ids: h
|
|
10285
10283
|
},
|
|
10286
10284
|
errorPolicy: "all",
|
|
10287
10285
|
fetchPolicy: "no-cache"
|
|
10288
|
-
}),
|
|
10289
|
-
if (
|
|
10290
|
-
const m = ((
|
|
10291
|
-
throw new
|
|
10286
|
+
}), f = u.data.transactions;
|
|
10287
|
+
if (f.length !== n.length) {
|
|
10288
|
+
const m = ((D = (p = u.errors) == null ? void 0 : p[0]) == null ? void 0 : D.message) || "Unknown error";
|
|
10289
|
+
throw new P(`Not all transactions were found: ${m}`);
|
|
10292
10290
|
}
|
|
10293
|
-
return
|
|
10291
|
+
return f.map((m, M) => {
|
|
10294
10292
|
var Y;
|
|
10295
10293
|
return {
|
|
10296
10294
|
transaction: m,
|
|
10297
10295
|
workflowId: m.workflowId,
|
|
10298
10296
|
readOnly: ((Y = n.find((F) => F.option.transactionId === m.id)) == null ? void 0 : Y.option.readOnly) ?? !1,
|
|
10299
|
-
index: n[
|
|
10297
|
+
index: n[M].index
|
|
10300
10298
|
};
|
|
10301
10299
|
});
|
|
10302
10300
|
}, o = async () => {
|
|
10303
|
-
var
|
|
10301
|
+
var f, p, D;
|
|
10304
10302
|
if (s.length === 0)
|
|
10305
10303
|
return [];
|
|
10306
|
-
const
|
|
10304
|
+
const h = await t.mutate({
|
|
10307
10305
|
mutation: ca,
|
|
10308
10306
|
variables: {
|
|
10309
10307
|
inputs: s.map((m) => ({
|
|
@@ -10317,37 +10315,39 @@ class fs {
|
|
|
10317
10315
|
},
|
|
10318
10316
|
errorPolicy: "all",
|
|
10319
10317
|
fetchPolicy: "no-cache"
|
|
10320
|
-
}), u = (
|
|
10318
|
+
}), u = (f = h.data) == null ? void 0 : f.transactionCreateMany;
|
|
10321
10319
|
if (!u || u.length === 0) {
|
|
10322
|
-
const m = ((
|
|
10323
|
-
throw new
|
|
10320
|
+
const m = ((D = (p = h.errors) == null ? void 0 : p[0]) == null ? void 0 : D.message) || "Unknown error";
|
|
10321
|
+
throw new P(`Failed to create transactions: ${m}`);
|
|
10324
10322
|
}
|
|
10325
|
-
return u.map((m,
|
|
10323
|
+
return u.map((m, M) => ({
|
|
10326
10324
|
transaction: m,
|
|
10327
10325
|
workflowId: m.workflowId,
|
|
10328
10326
|
readOnly: !1,
|
|
10329
|
-
index: s[
|
|
10327
|
+
index: s[M].index
|
|
10330
10328
|
}));
|
|
10331
|
-
}, r = (await Promise.all([i(), o()])).flat(), c = [...new Set(r.map((
|
|
10332
|
-
|
|
10329
|
+
}, r = (await Promise.all([i(), o()])).flat(), c = [...new Set(r.map((h) => h.workflowId))], B = await ht(c, e), l = new Map(B.map((h) => [h.id, h])), d = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), E = r.map(async (h) => {
|
|
10330
|
+
var U;
|
|
10331
|
+
const { transaction: u, workflowId: f, readOnly: p, index: D } = h, m = l.get(f), M = A[D];
|
|
10333
10332
|
!d.get(u.id) && u.transactionOwnerId && d.set(u.id, u.transactionOwnerId);
|
|
10334
10333
|
const Y = d.get(u.id) || void 0, F = {
|
|
10335
10334
|
product: u.product,
|
|
10336
10335
|
transaction: u,
|
|
10337
10336
|
layouts: [],
|
|
10337
|
+
singleVariantsRenderable: (U = M == null ? void 0 : M.workflowConfiguration) == null ? void 0 : U.singleVariantsRenderable,
|
|
10338
10338
|
stateMutationFunc: p ? async () => {
|
|
10339
10339
|
throw new v("State mutation is forbidden in read only mode!");
|
|
10340
|
-
} : async (
|
|
10340
|
+
} : async (S) => this.updateTransactionState({ ...S, context: { transactionOwnerId: Y } }),
|
|
10341
10341
|
readOnly: p,
|
|
10342
10342
|
workflow: m,
|
|
10343
|
-
isReloadedTransaction:
|
|
10343
|
+
isReloadedTransaction: M.type === "transaction"
|
|
10344
10344
|
};
|
|
10345
|
-
if (
|
|
10346
|
-
const
|
|
10347
|
-
F.layouts = Object.values(
|
|
10348
|
-
} else if (!p &&
|
|
10349
|
-
const
|
|
10350
|
-
F.layouts = Object.values(
|
|
10345
|
+
if (M.type === "transaction" && u.workflowState) {
|
|
10346
|
+
const S = JSON.parse(u.workflowState);
|
|
10347
|
+
F.layouts = Object.values(S.layouts).map((b) => b.layout), await AA(S), await tA(S), F.reloadedState = S;
|
|
10348
|
+
} else if (!p && M.workflowState) {
|
|
10349
|
+
const S = JSON.parse(M.workflowState);
|
|
10350
|
+
F.layouts = Object.values(S.layouts).map((b) => b.layout), await AA(S), await tA(S), F.reloadedState = S;
|
|
10351
10351
|
} else
|
|
10352
10352
|
F.layouts = KA(
|
|
10353
10353
|
F.transaction,
|
|
@@ -10355,12 +10355,12 @@ class fs {
|
|
|
10355
10355
|
);
|
|
10356
10356
|
return F.renderableContextService = new QA(
|
|
10357
10357
|
F.layouts
|
|
10358
|
-
), this.initialized = !0, this.experienceOptions = F, { experienceOptions: F, index:
|
|
10358
|
+
), this.initialized = !0, this.experienceOptions = F, { experienceOptions: F, index: D, options: M };
|
|
10359
10359
|
});
|
|
10360
|
-
|
|
10361
|
-
const Q = (await Promise.all(E)).sort((
|
|
10362
|
-
const { experienceOptions: u, options:
|
|
10363
|
-
return await p.getWorkflowManager().getInitializationPromise(),
|
|
10360
|
+
x.setMap("transactionOwnerIds", d);
|
|
10361
|
+
const Q = (await Promise.all(E)).sort((h, u) => h.index - u.index).map(async (h) => {
|
|
10362
|
+
const { experienceOptions: u, options: f } = h, p = new CA(this, u);
|
|
10363
|
+
return await p.getWorkflowManager().getInitializationPromise(), f.type !== "transaction" && this.customer && await p.attachCustomerDetails({ email: this.customer.emailAddress }), p;
|
|
10364
10364
|
});
|
|
10365
10365
|
return await Promise.all(Q);
|
|
10366
10366
|
}
|
|
@@ -10372,8 +10372,8 @@ class fs {
|
|
|
10372
10372
|
async initFromIntegrationProduct(A) {
|
|
10373
10373
|
var s;
|
|
10374
10374
|
if (A === "")
|
|
10375
|
-
throw new
|
|
10376
|
-
const t = await
|
|
10375
|
+
throw new P("No integration product ID provided.");
|
|
10376
|
+
const t = await N.getShadowGraphqlClient().mutate({
|
|
10377
10377
|
mutation: ue,
|
|
10378
10378
|
variables: {
|
|
10379
10379
|
integrationProductId: A,
|
|
@@ -10386,13 +10386,13 @@ class fs {
|
|
|
10386
10386
|
context: this.options.applicationKey ? { headers: { "X-Application-Key": this.options.applicationKey } } : void 0
|
|
10387
10387
|
});
|
|
10388
10388
|
if (!t.data || !t.data.transactionCreate)
|
|
10389
|
-
throw new
|
|
10389
|
+
throw new P("Failed to create transaction!");
|
|
10390
10390
|
const a = t.data.transactionCreate;
|
|
10391
10391
|
if (!a.product)
|
|
10392
|
-
throw new
|
|
10392
|
+
throw new P("Failed to create transaction, product not available.");
|
|
10393
10393
|
this.currencyCode = (s = a.product.partner) == null ? void 0 : s.currencyCode;
|
|
10394
|
-
const n =
|
|
10395
|
-
n.set(a.id, a.transactionOwnerId), eA(a.transactionOwnerId || ""),
|
|
10394
|
+
const n = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map();
|
|
10395
|
+
n.set(a.id, a.transactionOwnerId), eA(a.transactionOwnerId || ""), x.setMap("transactionOwnerIds", n), this.experienceOptions = {
|
|
10396
10396
|
product: a.product,
|
|
10397
10397
|
transaction: a,
|
|
10398
10398
|
layouts: [],
|
|
@@ -10408,8 +10408,8 @@ class fs {
|
|
|
10408
10408
|
async initFromTransaction(A, e = !1) {
|
|
10409
10409
|
var i, o, r, c;
|
|
10410
10410
|
if (A === "")
|
|
10411
|
-
throw new
|
|
10412
|
-
const t =
|
|
10411
|
+
throw new P("No transaction ID provided.");
|
|
10412
|
+
const t = N.getShadowGraphqlClient(), a = async () => {
|
|
10413
10413
|
var d, E;
|
|
10414
10414
|
const l = (d = (await t.query({
|
|
10415
10415
|
query: EA,
|
|
@@ -10418,9 +10418,9 @@ class fs {
|
|
|
10418
10418
|
errorPolicy: "all"
|
|
10419
10419
|
})).data) == null ? void 0 : d.transactions[0];
|
|
10420
10420
|
if (!l)
|
|
10421
|
-
throw new
|
|
10421
|
+
throw new P("Failed to read transaction.");
|
|
10422
10422
|
if (!l.product)
|
|
10423
|
-
throw new
|
|
10423
|
+
throw new P("Failed to load transaction, product not available.");
|
|
10424
10424
|
this.currencyCode = (E = l.product.partner) == null ? void 0 : E.currencyCode, this.experienceOptions = {
|
|
10425
10425
|
product: l.product,
|
|
10426
10426
|
transaction: l,
|
|
@@ -10433,7 +10433,7 @@ class fs {
|
|
|
10433
10433
|
};
|
|
10434
10434
|
if (e)
|
|
10435
10435
|
return await a();
|
|
10436
|
-
const n =
|
|
10436
|
+
const n = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), s = n.get(A);
|
|
10437
10437
|
if (s) {
|
|
10438
10438
|
eA(s);
|
|
10439
10439
|
const l = (i = (await t.query({
|
|
@@ -10444,9 +10444,9 @@ class fs {
|
|
|
10444
10444
|
errorPolicy: "all"
|
|
10445
10445
|
})).data) == null ? void 0 : i.transactions[0];
|
|
10446
10446
|
if (!l)
|
|
10447
|
-
throw new
|
|
10447
|
+
throw new P("Failed to read transaction.");
|
|
10448
10448
|
if (!l.product)
|
|
10449
|
-
throw new
|
|
10449
|
+
throw new P("Failed to load transaction, product not available.");
|
|
10450
10450
|
this.currencyCode = (o = l.product.partner) == null ? void 0 : o.currencyCode, this.experienceOptions = {
|
|
10451
10451
|
product: l.product,
|
|
10452
10452
|
transaction: l,
|
|
@@ -10463,10 +10463,10 @@ class fs {
|
|
|
10463
10463
|
errorPolicy: "all"
|
|
10464
10464
|
})).data) == null ? void 0 : r.transactionClaim;
|
|
10465
10465
|
if (!l)
|
|
10466
|
-
throw new
|
|
10466
|
+
throw new P("Failed to read transaction.");
|
|
10467
10467
|
if (!l.product)
|
|
10468
|
-
throw new
|
|
10469
|
-
this.currencyCode = (c = l.product.partner) == null ? void 0 : c.currencyCode, l.transactionOwnerId && (n.set(l.id, l.transactionOwnerId), eA(l.transactionOwnerId),
|
|
10468
|
+
throw new P("Failed to load transaction, product not available.");
|
|
10469
|
+
this.currencyCode = (c = l.product.partner) == null ? void 0 : c.currencyCode, l.transactionOwnerId && (n.set(l.id, l.transactionOwnerId), eA(l.transactionOwnerId), x.setMap("transactionOwnerIds", n)), this.experienceOptions = {
|
|
10470
10470
|
product: l.product,
|
|
10471
10471
|
transaction: l,
|
|
10472
10472
|
layouts: [],
|
|
@@ -10474,7 +10474,7 @@ class fs {
|
|
|
10474
10474
|
readOnly: e
|
|
10475
10475
|
}, this.initialized = !0;
|
|
10476
10476
|
} catch {
|
|
10477
|
-
throw new
|
|
10477
|
+
throw new P("Attempted to access a transaction that isn't available.");
|
|
10478
10478
|
}
|
|
10479
10479
|
}
|
|
10480
10480
|
/**
|
|
@@ -10483,7 +10483,7 @@ class fs {
|
|
|
10483
10483
|
async getWorkflowExperienceDeprecated(A, e, t) {
|
|
10484
10484
|
var a, n, s, i;
|
|
10485
10485
|
if (!this.initialized || !this.experienceOptions)
|
|
10486
|
-
throw new
|
|
10486
|
+
throw new P("Cannot launch experience: Not initialized.");
|
|
10487
10487
|
if (this.experienceOptions.transaction.workflowId) {
|
|
10488
10488
|
const o = await pA(this.experienceOptions.transaction.workflowId);
|
|
10489
10489
|
if (this.experienceOptions.workflow = o, this.experienceOptions.transaction.workflowState) {
|
|
@@ -10498,7 +10498,7 @@ class fs {
|
|
|
10498
10498
|
return await r.getWorkflowManager().getInitializationPromise(), r;
|
|
10499
10499
|
}
|
|
10500
10500
|
if (A) {
|
|
10501
|
-
const o =
|
|
10501
|
+
const o = N.getShadowGraphqlClient().mutate({
|
|
10502
10502
|
mutation: Ba,
|
|
10503
10503
|
variables: {
|
|
10504
10504
|
workflowId: A,
|
|
@@ -10520,7 +10520,7 @@ class fs {
|
|
|
10520
10520
|
const c = new CA(this, this.experienceOptions);
|
|
10521
10521
|
return await c.getWorkflowManager().getInitializationPromise(), c;
|
|
10522
10522
|
}
|
|
10523
|
-
throw new
|
|
10523
|
+
throw new P("No workflow ID provided.");
|
|
10524
10524
|
}
|
|
10525
10525
|
/**
|
|
10526
10526
|
* @deprecated The value this returns will be changed whenever `getWorkflowExperience()` is called. Use `workflowExperience.getWorkflowManager().getPreviewService()` instead.
|
|
@@ -10536,7 +10536,7 @@ class fs {
|
|
|
10536
10536
|
*/
|
|
10537
10537
|
getProduct() {
|
|
10538
10538
|
if (!this.initialized || !this.experienceOptions)
|
|
10539
|
-
throw new
|
|
10539
|
+
throw new P("Cannot get product: Not initialized.");
|
|
10540
10540
|
return this.experienceOptions.product;
|
|
10541
10541
|
}
|
|
10542
10542
|
/**
|
|
@@ -10545,12 +10545,12 @@ class fs {
|
|
|
10545
10545
|
*/
|
|
10546
10546
|
getTransaction() {
|
|
10547
10547
|
if (!this.initialized || !this.experienceOptions)
|
|
10548
|
-
throw new
|
|
10548
|
+
throw new P("Cannot get transaction: Not initialized.");
|
|
10549
10549
|
return this.experienceOptions.transaction;
|
|
10550
10550
|
}
|
|
10551
10551
|
storeCustomer(A) {
|
|
10552
|
-
const e =
|
|
10553
|
-
e.set(A.partner.id, A.id),
|
|
10552
|
+
const e = x.getMap("partnerCustomerIds") || /* @__PURE__ */ new Map();
|
|
10553
|
+
e.set(A.partner.id, A.id), x.setMap("partnerCustomerIds", e);
|
|
10554
10554
|
}
|
|
10555
10555
|
}
|
|
10556
10556
|
class ks {
|
|
@@ -10779,7 +10779,7 @@ export {
|
|
|
10779
10779
|
nn as InformationStepHandle,
|
|
10780
10780
|
ei as LayoutElementFactory,
|
|
10781
10781
|
ti as LayoutElementType,
|
|
10782
|
-
|
|
10782
|
+
L as LayoutNotFoundError,
|
|
10783
10783
|
$a as MaterialStepHandle,
|
|
10784
10784
|
SA as MisconfigurationError,
|
|
10785
10785
|
ks as MockWorkflowManager,
|
|
@@ -10814,7 +10814,7 @@ export {
|
|
|
10814
10814
|
gi as UnitOfMeasurement,
|
|
10815
10815
|
X as Variant,
|
|
10816
10816
|
CA as WorkflowExperienceImpl,
|
|
10817
|
-
|
|
10817
|
+
T as assetService,
|
|
10818
10818
|
Bn as createDesign,
|
|
10819
10819
|
li as dataUrlFromExternalUrl,
|
|
10820
10820
|
zA as designService,
|
|
@@ -10835,7 +10835,7 @@ export {
|
|
|
10835
10835
|
mi as getSvgElement,
|
|
10836
10836
|
pA as getWorkflow,
|
|
10837
10837
|
ht as getWorkflows,
|
|
10838
|
-
|
|
10838
|
+
N as graphQlManager,
|
|
10839
10839
|
fA as illustrationStepService,
|
|
10840
10840
|
pi as loadFont,
|
|
10841
10841
|
$e as materialStepService,
|
|
@@ -10843,7 +10843,7 @@ export {
|
|
|
10843
10843
|
Ya as moduleStepService,
|
|
10844
10844
|
z as optionService,
|
|
10845
10845
|
Ii as patternImageDataCache,
|
|
10846
|
-
|
|
10846
|
+
x as persistenceService,
|
|
10847
10847
|
At as pictureStepService,
|
|
10848
10848
|
et as questionStepService,
|
|
10849
10849
|
Di as registerFetchImplementation,
|