@spiffcommerce/core 16.5.1-alpha.0 → 16.7.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 -625
- package/dist/index.umd.cjs +22 -21
- 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}
|
|
@@ -9367,6 +9365,7 @@ const cs = M`
|
|
|
9367
9365
|
stepTitle
|
|
9368
9366
|
helpText
|
|
9369
9367
|
mandatory
|
|
9368
|
+
silent
|
|
9370
9369
|
conditions {
|
|
9371
9370
|
requiredVariantSelections
|
|
9372
9371
|
targetStepName
|
|
@@ -9660,7 +9659,7 @@ const cs = M`
|
|
|
9660
9659
|
}
|
|
9661
9660
|
}
|
|
9662
9661
|
}
|
|
9663
|
-
`, ws =
|
|
9662
|
+
`, ws = y`
|
|
9664
9663
|
query GetTransactionForPartner($id: String!) {
|
|
9665
9664
|
transactions(ids: [$id]) {
|
|
9666
9665
|
id
|
|
@@ -9677,7 +9676,7 @@ const cs = M`
|
|
|
9677
9676
|
}
|
|
9678
9677
|
}
|
|
9679
9678
|
}
|
|
9680
|
-
`, Es =
|
|
9679
|
+
`, Es = y`
|
|
9681
9680
|
${kA(!1)}
|
|
9682
9681
|
query GetWorkflowForTheme($id: String!) {
|
|
9683
9682
|
workflow(id: $id) {
|
|
@@ -9699,7 +9698,7 @@ const cs = M`
|
|
|
9699
9698
|
}
|
|
9700
9699
|
}
|
|
9701
9700
|
}
|
|
9702
|
-
`, hs =
|
|
9701
|
+
`, hs = y`
|
|
9703
9702
|
query GetCustomer($emailAddress: String!) {
|
|
9704
9703
|
customer(emailAddress: $emailAddress) {
|
|
9705
9704
|
id
|
|
@@ -9709,7 +9708,7 @@ const cs = M`
|
|
|
9709
9708
|
}
|
|
9710
9709
|
}
|
|
9711
9710
|
}
|
|
9712
|
-
`, Cs =
|
|
9711
|
+
`, Cs = y`
|
|
9713
9712
|
mutation CustomerCreate($details: CustomerDetailsInput!) {
|
|
9714
9713
|
customerCreate(details: $details) {
|
|
9715
9714
|
id
|
|
@@ -9719,7 +9718,7 @@ const cs = M`
|
|
|
9719
9718
|
}
|
|
9720
9719
|
}
|
|
9721
9720
|
}
|
|
9722
|
-
`, Qs =
|
|
9721
|
+
`, Qs = y`
|
|
9723
9722
|
mutation CustomerAuthenticate($loginToken: String!) {
|
|
9724
9723
|
customerAuthenticate(loginToken: $loginToken) {
|
|
9725
9724
|
id
|
|
@@ -9746,11 +9745,11 @@ const cs = M`
|
|
|
9746
9745
|
}
|
|
9747
9746
|
}
|
|
9748
9747
|
}
|
|
9749
|
-
`, us =
|
|
9748
|
+
`, us = y`
|
|
9750
9749
|
mutation CustomerGenerateVerificationCode($emailAddress: String!) {
|
|
9751
9750
|
customerGenerateVerificationCode(emailAddress: $emailAddress)
|
|
9752
9751
|
}
|
|
9753
|
-
`, ms =
|
|
9752
|
+
`, ms = y`
|
|
9754
9753
|
mutation CustomerVerifyCode($emailAddress: String!, $verificationCode: String!) {
|
|
9755
9754
|
customerVerifyCode(emailAddress: $emailAddress, verificationCode: $verificationCode) {
|
|
9756
9755
|
id
|
|
@@ -9782,13 +9781,13 @@ const cs = M`
|
|
|
9782
9781
|
var A;
|
|
9783
9782
|
for (const e in g.layouts) {
|
|
9784
9783
|
const t = g.layouts[e].elements.filter(
|
|
9785
|
-
(n) => n.type ===
|
|
9784
|
+
(n) => n.type === H.Illustration
|
|
9786
9785
|
);
|
|
9787
9786
|
for (let n = 0; n < t.length; ++n) {
|
|
9788
9787
|
const s = t[n];
|
|
9789
9788
|
s.src && s.svg && (s.cachedObjectURL = await FA(s.svg));
|
|
9790
9789
|
}
|
|
9791
|
-
const a = g.layouts[e].elements.filter((n) => n.type ===
|
|
9790
|
+
const a = g.layouts[e].elements.filter((n) => n.type === H.Textbox);
|
|
9792
9791
|
for (let n = 0; n < a.length; ++n) {
|
|
9793
9792
|
const s = a[n];
|
|
9794
9793
|
(A = s.fontData) != null && A.assetUrl && await te(s.fontData.assetUrl);
|
|
@@ -9796,7 +9795,7 @@ const cs = M`
|
|
|
9796
9795
|
}
|
|
9797
9796
|
}, ps = async (g, A) => {
|
|
9798
9797
|
var a;
|
|
9799
|
-
const e = await
|
|
9798
|
+
const e = await N.getShadowGraphqlClient().query({
|
|
9800
9799
|
query: ds(((a = A == null ? void 0 : A.assets) == null ? void 0 : a.metadata) || !1),
|
|
9801
9800
|
errorPolicy: "all",
|
|
9802
9801
|
fetchPolicy: "no-cache",
|
|
@@ -9809,8 +9808,8 @@ const cs = M`
|
|
|
9809
9808
|
return t.forEach((n) => {
|
|
9810
9809
|
n.steps.forEach((s) => {
|
|
9811
9810
|
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 &&
|
|
9811
|
+
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) => {
|
|
9812
|
+
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
9813
|
}), BA.set({ id: s.option.id }, Promise.resolve(s.option)));
|
|
9815
9814
|
});
|
|
9816
9815
|
}), t;
|
|
@@ -9848,12 +9847,12 @@ class fs {
|
|
|
9848
9847
|
constructor(A) {
|
|
9849
9848
|
this.updateTransactionState = async (e) => {
|
|
9850
9849
|
try {
|
|
9851
|
-
return
|
|
9850
|
+
return N.getShadowGraphqlClient().mutate({
|
|
9852
9851
|
...e,
|
|
9853
9852
|
mutation: la
|
|
9854
9853
|
});
|
|
9855
9854
|
} catch (t) {
|
|
9856
|
-
throw console.error(t), new
|
|
9855
|
+
throw console.error(t), new P("Critical - Unable to synchronize workflow state with server.");
|
|
9857
9856
|
}
|
|
9858
9857
|
}, this.initialized = !1, this.options = A, this.options.applicationKey && Lt(this.options.applicationKey);
|
|
9859
9858
|
}
|
|
@@ -9862,7 +9861,7 @@ class fs {
|
|
|
9862
9861
|
* and the Spiff Commerce platform.
|
|
9863
9862
|
*/
|
|
9864
9863
|
getAssetManager() {
|
|
9865
|
-
return
|
|
9864
|
+
return T;
|
|
9866
9865
|
}
|
|
9867
9866
|
getCurrencyCode() {
|
|
9868
9867
|
if (this.currencyCode === void 0)
|
|
@@ -9882,14 +9881,14 @@ class fs {
|
|
|
9882
9881
|
*/
|
|
9883
9882
|
async authenticateBundleFromLocalStorage(A) {
|
|
9884
9883
|
var a, n;
|
|
9885
|
-
const e =
|
|
9884
|
+
const e = x.getMap("bundleOwnerIds");
|
|
9886
9885
|
if (e != null && e.has(A)) {
|
|
9887
9886
|
const s = e.get(A);
|
|
9888
9887
|
return TA(s), Promise.resolve({ success: !0, stakeholderType: NA.Owner });
|
|
9889
9888
|
}
|
|
9890
|
-
const t =
|
|
9889
|
+
const t = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
9891
9890
|
if (t.has(A)) {
|
|
9892
|
-
const s = t.get(A), o = (
|
|
9891
|
+
const s = t.get(A), o = (x.getMap("partnerCustomerIds") || /* @__PURE__ */ new Map()).get(s);
|
|
9893
9892
|
if (o && await this.authenticateCustomerId(o)) {
|
|
9894
9893
|
const c = (n = (a = this.customer) == null ? void 0 : a.bundleStakeholders) == null ? void 0 : n.find(
|
|
9895
9894
|
(B) => {
|
|
@@ -9917,8 +9916,8 @@ class fs {
|
|
|
9917
9916
|
* @throws An error if the transaction is not found.
|
|
9918
9917
|
*/
|
|
9919
9918
|
async authenticateTransactionFromLocalStorage(A) {
|
|
9920
|
-
var c, B, l, d, E,
|
|
9921
|
-
const e =
|
|
9919
|
+
var c, B, l, d, E, C;
|
|
9920
|
+
const e = N.getShadowGraphqlClient(), t = await e.query({
|
|
9922
9921
|
query: ws,
|
|
9923
9922
|
errorPolicy: "all",
|
|
9924
9923
|
fetchPolicy: "no-cache",
|
|
@@ -9933,30 +9932,30 @@ class fs {
|
|
|
9933
9932
|
throw new Error(`Unable to read transaction: ${A}`);
|
|
9934
9933
|
if (a.isOrdered)
|
|
9935
9934
|
return Promise.resolve({ success: !1, transactionReadOnly: !0 });
|
|
9936
|
-
const s =
|
|
9935
|
+
const s = x.getMap("transactionOwnerIds");
|
|
9937
9936
|
if (s != null && s.has(A)) {
|
|
9938
9937
|
const w = s.get(A);
|
|
9939
9938
|
return eA(w), Promise.resolve({ success: !0, stakeholderType: NA.Owner });
|
|
9940
9939
|
}
|
|
9941
|
-
const i =
|
|
9940
|
+
const i = x.getMap("transactionCustomerIds");
|
|
9942
9941
|
if (i != null && i.has(A)) {
|
|
9943
9942
|
const w = i.get(A);
|
|
9944
9943
|
if (w && await this.authenticateCustomerId(w)) {
|
|
9945
|
-
const
|
|
9944
|
+
const h = ((d = (l = this.customer) == null ? void 0 : l.bundleStakeholders) == null ? void 0 : d.find(
|
|
9946
9945
|
(u) => {
|
|
9947
|
-
var
|
|
9948
|
-
return (p = (
|
|
9946
|
+
var f, p;
|
|
9947
|
+
return (p = (f = u.bundle) == null ? void 0 : f.transactions) == null ? void 0 : p.some((D) => D.id === A);
|
|
9949
9948
|
}
|
|
9950
|
-
)) || ((
|
|
9949
|
+
)) || ((C = (E = this.customer) == null ? void 0 : E.stakeholders) == null ? void 0 : C.find(
|
|
9951
9950
|
(u) => {
|
|
9952
|
-
var
|
|
9953
|
-
return ((
|
|
9951
|
+
var f;
|
|
9952
|
+
return ((f = u.transaction) == null ? void 0 : f.id) === A;
|
|
9954
9953
|
}
|
|
9955
9954
|
));
|
|
9956
|
-
if (
|
|
9955
|
+
if (h)
|
|
9957
9956
|
return Promise.resolve({
|
|
9958
9957
|
success: !0,
|
|
9959
|
-
stakeholderType:
|
|
9958
|
+
stakeholderType: h.type
|
|
9960
9959
|
});
|
|
9961
9960
|
}
|
|
9962
9961
|
}
|
|
@@ -9979,8 +9978,8 @@ class fs {
|
|
|
9979
9978
|
this.customer = void 0;
|
|
9980
9979
|
}
|
|
9981
9980
|
clearCustomerForTransaction(A) {
|
|
9982
|
-
const e =
|
|
9983
|
-
e != null && e.has(A) && (e.delete(A),
|
|
9981
|
+
const e = x.getMap("transactionCustomerIds");
|
|
9982
|
+
e != null && e.has(A) && (e.delete(A), x.setMap("transactionCustomerIds", e));
|
|
9984
9983
|
}
|
|
9985
9984
|
getStakeholderTypeForTransaction(A) {
|
|
9986
9985
|
var t, a;
|
|
@@ -9996,7 +9995,7 @@ class fs {
|
|
|
9996
9995
|
async getOrCreateCustomer(A) {
|
|
9997
9996
|
var s;
|
|
9998
9997
|
this.customer = void 0;
|
|
9999
|
-
const e =
|
|
9998
|
+
const e = N.getShadowGraphqlClient(), a = (await e.query({
|
|
10000
9999
|
query: hs,
|
|
10001
10000
|
errorPolicy: "all",
|
|
10002
10001
|
fetchPolicy: "no-cache",
|
|
@@ -10031,7 +10030,7 @@ class fs {
|
|
|
10031
10030
|
}
|
|
10032
10031
|
async authenticateCustomerId(A) {
|
|
10033
10032
|
var i;
|
|
10034
|
-
const e =
|
|
10033
|
+
const e = N.getShadowGraphqlClient(), t = x.getMap("customerTokens");
|
|
10035
10034
|
if (!(t != null && t.has(A)))
|
|
10036
10035
|
return !1;
|
|
10037
10036
|
const a = t.get(A);
|
|
@@ -10052,7 +10051,7 @@ class fs {
|
|
|
10052
10051
|
* @param emailAddress The email address to generate a verification code for. The user will be sent an email with the verification code.
|
|
10053
10052
|
*/
|
|
10054
10053
|
async generateVerificationCode(A) {
|
|
10055
|
-
await
|
|
10054
|
+
await N.getShadowGraphqlClient().mutate({
|
|
10056
10055
|
mutation: us,
|
|
10057
10056
|
variables: {
|
|
10058
10057
|
emailAddress: A
|
|
@@ -10067,7 +10066,7 @@ class fs {
|
|
|
10067
10066
|
*/
|
|
10068
10067
|
async verifyCode(A, e) {
|
|
10069
10068
|
var n, s;
|
|
10070
|
-
const a = (n = (await
|
|
10069
|
+
const a = (n = (await N.getShadowGraphqlClient().mutate({
|
|
10071
10070
|
mutation: ms,
|
|
10072
10071
|
errorPolicy: "all",
|
|
10073
10072
|
fetchPolicy: "no-cache",
|
|
@@ -10079,8 +10078,8 @@ class fs {
|
|
|
10079
10078
|
if (a != null && a.loginToken) {
|
|
10080
10079
|
if (!((s = a.partner) != null && s.id))
|
|
10081
10080
|
throw new Error(`Unable to find customer: ${A}`);
|
|
10082
|
-
const i =
|
|
10083
|
-
return i.set(a.id, a.loginToken),
|
|
10081
|
+
const i = x.getMap("customerTokens") || /* @__PURE__ */ new Map();
|
|
10082
|
+
return i.set(a.id, a.loginToken), x.setMap("customerTokens", i), this.storeCustomer(a), Qe(a.loginToken), this.customer = {
|
|
10084
10083
|
...a,
|
|
10085
10084
|
loginToken: void 0
|
|
10086
10085
|
}, !0;
|
|
@@ -10093,7 +10092,7 @@ class fs {
|
|
|
10093
10092
|
*/
|
|
10094
10093
|
async getNewBundle(A) {
|
|
10095
10094
|
var s;
|
|
10096
|
-
const t = (s = (await
|
|
10095
|
+
const t = (s = (await N.getShadowGraphqlClient().mutate({
|
|
10097
10096
|
mutation: Gn,
|
|
10098
10097
|
variables: {
|
|
10099
10098
|
collectionId: A
|
|
@@ -10102,10 +10101,10 @@ class fs {
|
|
|
10102
10101
|
})).data) == null ? void 0 : s.bundleCreate;
|
|
10103
10102
|
if (!(t != null && t.id))
|
|
10104
10103
|
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),
|
|
10104
|
+
const a = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10105
|
+
a.set(t.id, t.partner.id), x.setMap("bundlePartnerIds", a), TA(t.bundleOwnerId);
|
|
10106
|
+
const n = x.getMap("bundleOwnerIds") || /* @__PURE__ */ new Map();
|
|
10107
|
+
return n.set(t.id, t.bundleOwnerId), x.setMap("bundleOwnerIds", n), new fe(this, t);
|
|
10109
10108
|
}
|
|
10110
10109
|
/**
|
|
10111
10110
|
* Retrieves an existing bundle from the API, by id.
|
|
@@ -10116,9 +10115,9 @@ class fs {
|
|
|
10116
10115
|
*/
|
|
10117
10116
|
async getExistingBundle(A, e, t) {
|
|
10118
10117
|
var c, B, l, d;
|
|
10119
|
-
const a =
|
|
10118
|
+
const a = x.getMap("bundleOwnerIds"), n = a == null ? void 0 : a.get(A);
|
|
10120
10119
|
n && TA(n);
|
|
10121
|
-
const s = await
|
|
10120
|
+
const s = await N.getShadowGraphqlClient().query({
|
|
10122
10121
|
query: Pn,
|
|
10123
10122
|
variables: {
|
|
10124
10123
|
id: A
|
|
@@ -10127,8 +10126,8 @@ class fs {
|
|
|
10127
10126
|
});
|
|
10128
10127
|
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
10128
|
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),
|
|
10129
|
+
const i = (d = s.data) == null ? void 0 : d.bundles[0], o = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10130
|
+
o.set(i.id, i.partner.id), x.setMap("bundlePartnerIds", o);
|
|
10132
10131
|
const r = new fe(this, i, e, t);
|
|
10133
10132
|
return await r.getInitializationPromise(), r;
|
|
10134
10133
|
}
|
|
@@ -10140,7 +10139,7 @@ class fs {
|
|
|
10140
10139
|
var n;
|
|
10141
10140
|
if (!this.customer)
|
|
10142
10141
|
throw new Error("Customer not authenticated.");
|
|
10143
|
-
const A = await
|
|
10142
|
+
const A = await N.getShadowGraphqlClient().query({
|
|
10144
10143
|
query: Un,
|
|
10145
10144
|
variables: {
|
|
10146
10145
|
id: this.customer.id
|
|
@@ -10149,11 +10148,11 @@ class fs {
|
|
|
10149
10148
|
});
|
|
10150
10149
|
if (!((n = A.data) != null && n.customers) || A.data.customers.length === 0)
|
|
10151
10150
|
throw new Error("Unable to find customer.");
|
|
10152
|
-
const t = A.data.customers[0].bundleStakeholders || [], a =
|
|
10151
|
+
const t = A.data.customers[0].bundleStakeholders || [], a = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10153
10152
|
return t.forEach((s) => {
|
|
10154
10153
|
var i, o;
|
|
10155
10154
|
(i = s.bundle) != null && i.id && ((o = s.bundle.partner) != null && o.id) && a.set(s.bundle.id, s.bundle.partner.id);
|
|
10156
|
-
}),
|
|
10155
|
+
}), x.setMap("bundlePartnerIds", a), t;
|
|
10157
10156
|
}
|
|
10158
10157
|
/**
|
|
10159
10158
|
* Creates a new instance of WorkflowExperience. A high level wrapper for workflows.
|
|
@@ -10164,40 +10163,40 @@ class fs {
|
|
|
10164
10163
|
* @returns A workflow experience configured as requested.
|
|
10165
10164
|
*/
|
|
10166
10165
|
async getWorkflowExperience(A, e, t, a) {
|
|
10167
|
-
var B, l, d, E;
|
|
10166
|
+
var B, l, d, E, C;
|
|
10168
10167
|
if (!a)
|
|
10169
10168
|
return await this.getWorkflowExperienceDeprecated(A, e, t);
|
|
10170
10169
|
const n = async () => {
|
|
10171
|
-
var
|
|
10172
|
-
const
|
|
10170
|
+
var Q, h;
|
|
10171
|
+
const w = N.getShadowGraphqlClient();
|
|
10173
10172
|
if (a.type === "transaction") {
|
|
10174
|
-
const { transactionId:
|
|
10173
|
+
const { transactionId: u, readOnly: f } = a, p = await w.query({
|
|
10175
10174
|
query: EA,
|
|
10176
10175
|
variables: {
|
|
10177
|
-
ids: [
|
|
10176
|
+
ids: [u]
|
|
10178
10177
|
},
|
|
10179
10178
|
errorPolicy: "all",
|
|
10180
10179
|
fetchPolicy: "no-cache"
|
|
10181
10180
|
});
|
|
10182
|
-
if (!((
|
|
10183
|
-
throw new
|
|
10184
|
-
const
|
|
10185
|
-
if (!
|
|
10186
|
-
throw new
|
|
10187
|
-
const
|
|
10188
|
-
if (!
|
|
10189
|
-
throw new
|
|
10190
|
-
return { transaction:
|
|
10181
|
+
if (!((Q = p.data) != null && Q.transactions) || p.data.transactions.length === 0)
|
|
10182
|
+
throw new P("Existing transaction not found.");
|
|
10183
|
+
const D = (h = p.data) == null ? void 0 : h.transactions[0];
|
|
10184
|
+
if (!D.workflowId)
|
|
10185
|
+
throw new P("Existing transaction has no workflow ID.");
|
|
10186
|
+
const m = await pA(D.workflowId);
|
|
10187
|
+
if (!D.product)
|
|
10188
|
+
throw new P("Failed to load transaction, product not available.");
|
|
10189
|
+
return { transaction: D, workflow: m, readOnly: f };
|
|
10191
10190
|
}
|
|
10192
10191
|
if (a.type === "integration" || a.type === "external") {
|
|
10193
|
-
const
|
|
10194
|
-
const
|
|
10192
|
+
const u = async () => {
|
|
10193
|
+
const m = a.type === "integration" ? { integrationProductId: a.integrationProductId } : {
|
|
10195
10194
|
externalIntegrationId: a.externalIntegrationId,
|
|
10196
10195
|
externalProductId: a.externalProductId
|
|
10197
|
-
},
|
|
10196
|
+
}, M = await w.mutate({
|
|
10198
10197
|
mutation: ue,
|
|
10199
10198
|
variables: {
|
|
10200
|
-
...
|
|
10199
|
+
...m,
|
|
10201
10200
|
bulk: a.bulk,
|
|
10202
10201
|
workflowId: a.workflowId,
|
|
10203
10202
|
claim: !0
|
|
@@ -10207,37 +10206,38 @@ class fs {
|
|
|
10207
10206
|
// TODO: this should be changed to required once the API is updated. Should this also be moved to server.ts?
|
|
10208
10207
|
context: this.options.applicationKey ? { headers: { "X-Application-Key": this.options.applicationKey } } : void 0
|
|
10209
10208
|
});
|
|
10210
|
-
if (!
|
|
10211
|
-
throw new
|
|
10212
|
-
const
|
|
10213
|
-
if (!
|
|
10214
|
-
throw new
|
|
10215
|
-
return
|
|
10216
|
-
},
|
|
10217
|
-
return { transaction:
|
|
10209
|
+
if (!M.data || !M.data.transactionCreate)
|
|
10210
|
+
throw new P("Failed to create transaction!");
|
|
10211
|
+
const Y = M.data.transactionCreate;
|
|
10212
|
+
if (!Y.product)
|
|
10213
|
+
throw new P("Failed to create transaction, product not available.");
|
|
10214
|
+
return Y;
|
|
10215
|
+
}, f = pA(a.workflowId, a == null ? void 0 : a.graphql), [p, D] = await Promise.all([u(), f]);
|
|
10216
|
+
return { transaction: p, workflow: D };
|
|
10218
10217
|
}
|
|
10219
|
-
throw new
|
|
10218
|
+
throw new P("No workflow ID provided.");
|
|
10220
10219
|
}, { transaction: s, workflow: i, readOnly: o } = await n();
|
|
10221
10220
|
this.currencyCode = (B = s.product.partner) == null ? void 0 : B.currencyCode;
|
|
10222
10221
|
const r = {
|
|
10223
10222
|
product: s.product,
|
|
10224
10223
|
transaction: s,
|
|
10225
10224
|
layouts: [],
|
|
10225
|
+
singleVariantsRenderable: (l = a == null ? void 0 : a.workflowConfiguration) == null ? void 0 : l.singleVariantsRenderable,
|
|
10226
10226
|
stateMutationFunc: o ? async () => {
|
|
10227
10227
|
throw new v("State mutation is forbidden in read only mode!");
|
|
10228
|
-
} : async (
|
|
10229
|
-
const
|
|
10230
|
-
return this.updateTransactionState({ ...
|
|
10228
|
+
} : async (w) => {
|
|
10229
|
+
const h = (x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(s.id) || void 0;
|
|
10230
|
+
return this.updateTransactionState({ ...w, context: { transactionOwnerId: h } });
|
|
10231
10231
|
},
|
|
10232
10232
|
readOnly: o,
|
|
10233
10233
|
workflow: i
|
|
10234
10234
|
};
|
|
10235
10235
|
if (a.type === "transaction" && s.workflowState) {
|
|
10236
|
-
const
|
|
10237
|
-
r.layouts = Object.values(
|
|
10236
|
+
const w = JSON.parse(s.workflowState);
|
|
10237
|
+
r.layouts = Object.values(w.layouts).map((Q) => Q.layout), await AA(w), await tA(w), r.reloadedState = w;
|
|
10238
10238
|
} else if (!o && a.workflowState) {
|
|
10239
|
-
const
|
|
10240
|
-
r.layouts = Object.values(
|
|
10239
|
+
const w = JSON.parse(a.workflowState);
|
|
10240
|
+
r.layouts = Object.values(w.layouts).map((Q) => Q.layout), await AA(w), await tA(w), r.reloadedState = w;
|
|
10241
10241
|
} else
|
|
10242
10242
|
r.layouts = KA(
|
|
10243
10243
|
r.transaction,
|
|
@@ -10245,18 +10245,18 @@ class fs {
|
|
|
10245
10245
|
);
|
|
10246
10246
|
if (r.renderableContextService = new QA(
|
|
10247
10247
|
r.layouts
|
|
10248
|
-
), a.previewService ? (r.previewService = a.previewService, (
|
|
10248
|
+
), a.previewService ? (r.previewService = a.previewService, (d = r.product) != null && d.modelUrl && (r.modelContainer = r.previewService.loadModel({
|
|
10249
10249
|
model: r.product.modelUrl,
|
|
10250
10250
|
contextService: r.renderableContextService
|
|
10251
|
-
}))) : (r.previewService = t && t(i), (
|
|
10251
|
+
}))) : (r.previewService = t && t(i), (E = r.product) != null && E.modelUrl && (r.modelContainer = (C = r.previewService) == null ? void 0 : C.loadModel({
|
|
10252
10252
|
model: r.product.modelUrl,
|
|
10253
10253
|
contextService: r.renderableContextService
|
|
10254
10254
|
}))), a.type !== "transaction") {
|
|
10255
|
-
const
|
|
10256
|
-
|
|
10255
|
+
const w = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map();
|
|
10256
|
+
w.set(s.id, s.transactionOwnerId), eA(s.transactionOwnerId || ""), x.setMap("transactionOwnerIds", w);
|
|
10257
10257
|
} else {
|
|
10258
|
-
const
|
|
10259
|
-
|
|
10258
|
+
const Q = (x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(s.id);
|
|
10259
|
+
Q && eA(Q), r.isReloadedTransaction = !0;
|
|
10260
10260
|
}
|
|
10261
10261
|
this.initialized = !0, this.experienceOptions = r;
|
|
10262
10262
|
const c = new CA(this, r);
|
|
@@ -10271,39 +10271,39 @@ class fs {
|
|
|
10271
10271
|
*/
|
|
10272
10272
|
async getWorkflowExperiences(A, e) {
|
|
10273
10273
|
if (A.length === 0)
|
|
10274
|
-
throw new
|
|
10275
|
-
const t =
|
|
10276
|
-
(
|
|
10274
|
+
throw new P("No options provided!");
|
|
10275
|
+
const t = N.getShadowGraphqlClient(), a = A.map((h, u) => ({ option: h, index: u })), n = a.filter((h) => h.option.type === "transaction"), s = a.filter(
|
|
10276
|
+
(h) => h.option.type === "integration" || h.option.type === "external"
|
|
10277
10277
|
), i = async () => {
|
|
10278
|
-
var p,
|
|
10278
|
+
var p, D;
|
|
10279
10279
|
if (n.length === 0)
|
|
10280
10280
|
return [];
|
|
10281
|
-
const
|
|
10281
|
+
const h = n.map((m) => m.option.transactionId), u = await t.query({
|
|
10282
10282
|
query: EA,
|
|
10283
10283
|
variables: {
|
|
10284
|
-
ids:
|
|
10284
|
+
ids: h
|
|
10285
10285
|
},
|
|
10286
10286
|
errorPolicy: "all",
|
|
10287
10287
|
fetchPolicy: "no-cache"
|
|
10288
|
-
}),
|
|
10289
|
-
if (
|
|
10290
|
-
const m = ((
|
|
10291
|
-
throw new
|
|
10288
|
+
}), f = u.data.transactions;
|
|
10289
|
+
if (f.length !== n.length) {
|
|
10290
|
+
const m = ((D = (p = u.errors) == null ? void 0 : p[0]) == null ? void 0 : D.message) || "Unknown error";
|
|
10291
|
+
throw new P(`Not all transactions were found: ${m}`);
|
|
10292
10292
|
}
|
|
10293
|
-
return
|
|
10293
|
+
return f.map((m, M) => {
|
|
10294
10294
|
var Y;
|
|
10295
10295
|
return {
|
|
10296
10296
|
transaction: m,
|
|
10297
10297
|
workflowId: m.workflowId,
|
|
10298
10298
|
readOnly: ((Y = n.find((F) => F.option.transactionId === m.id)) == null ? void 0 : Y.option.readOnly) ?? !1,
|
|
10299
|
-
index: n[
|
|
10299
|
+
index: n[M].index
|
|
10300
10300
|
};
|
|
10301
10301
|
});
|
|
10302
10302
|
}, o = async () => {
|
|
10303
|
-
var
|
|
10303
|
+
var f, p, D;
|
|
10304
10304
|
if (s.length === 0)
|
|
10305
10305
|
return [];
|
|
10306
|
-
const
|
|
10306
|
+
const h = await t.mutate({
|
|
10307
10307
|
mutation: ca,
|
|
10308
10308
|
variables: {
|
|
10309
10309
|
inputs: s.map((m) => ({
|
|
@@ -10317,37 +10317,39 @@ class fs {
|
|
|
10317
10317
|
},
|
|
10318
10318
|
errorPolicy: "all",
|
|
10319
10319
|
fetchPolicy: "no-cache"
|
|
10320
|
-
}), u = (
|
|
10320
|
+
}), u = (f = h.data) == null ? void 0 : f.transactionCreateMany;
|
|
10321
10321
|
if (!u || u.length === 0) {
|
|
10322
|
-
const m = ((
|
|
10323
|
-
throw new
|
|
10322
|
+
const m = ((D = (p = h.errors) == null ? void 0 : p[0]) == null ? void 0 : D.message) || "Unknown error";
|
|
10323
|
+
throw new P(`Failed to create transactions: ${m}`);
|
|
10324
10324
|
}
|
|
10325
|
-
return u.map((m,
|
|
10325
|
+
return u.map((m, M) => ({
|
|
10326
10326
|
transaction: m,
|
|
10327
10327
|
workflowId: m.workflowId,
|
|
10328
10328
|
readOnly: !1,
|
|
10329
|
-
index: s[
|
|
10329
|
+
index: s[M].index
|
|
10330
10330
|
}));
|
|
10331
|
-
}, r = (await Promise.all([i(), o()])).flat(), c = [...new Set(r.map((
|
|
10332
|
-
|
|
10331
|
+
}, 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) => {
|
|
10332
|
+
var U;
|
|
10333
|
+
const { transaction: u, workflowId: f, readOnly: p, index: D } = h, m = l.get(f), M = A[D];
|
|
10333
10334
|
!d.get(u.id) && u.transactionOwnerId && d.set(u.id, u.transactionOwnerId);
|
|
10334
10335
|
const Y = d.get(u.id) || void 0, F = {
|
|
10335
10336
|
product: u.product,
|
|
10336
10337
|
transaction: u,
|
|
10337
10338
|
layouts: [],
|
|
10339
|
+
singleVariantsRenderable: (U = M == null ? void 0 : M.workflowConfiguration) == null ? void 0 : U.singleVariantsRenderable,
|
|
10338
10340
|
stateMutationFunc: p ? async () => {
|
|
10339
10341
|
throw new v("State mutation is forbidden in read only mode!");
|
|
10340
|
-
} : async (
|
|
10342
|
+
} : async (S) => this.updateTransactionState({ ...S, context: { transactionOwnerId: Y } }),
|
|
10341
10343
|
readOnly: p,
|
|
10342
10344
|
workflow: m,
|
|
10343
|
-
isReloadedTransaction:
|
|
10345
|
+
isReloadedTransaction: M.type === "transaction"
|
|
10344
10346
|
};
|
|
10345
|
-
if (
|
|
10346
|
-
const
|
|
10347
|
-
F.layouts = Object.values(
|
|
10348
|
-
} else if (!p &&
|
|
10349
|
-
const
|
|
10350
|
-
F.layouts = Object.values(
|
|
10347
|
+
if (M.type === "transaction" && u.workflowState) {
|
|
10348
|
+
const S = JSON.parse(u.workflowState);
|
|
10349
|
+
F.layouts = Object.values(S.layouts).map((b) => b.layout), await AA(S), await tA(S), F.reloadedState = S;
|
|
10350
|
+
} else if (!p && M.workflowState) {
|
|
10351
|
+
const S = JSON.parse(M.workflowState);
|
|
10352
|
+
F.layouts = Object.values(S.layouts).map((b) => b.layout), await AA(S), await tA(S), F.reloadedState = S;
|
|
10351
10353
|
} else
|
|
10352
10354
|
F.layouts = KA(
|
|
10353
10355
|
F.transaction,
|
|
@@ -10355,12 +10357,12 @@ class fs {
|
|
|
10355
10357
|
);
|
|
10356
10358
|
return F.renderableContextService = new QA(
|
|
10357
10359
|
F.layouts
|
|
10358
|
-
), this.initialized = !0, this.experienceOptions = F, { experienceOptions: F, index:
|
|
10360
|
+
), this.initialized = !0, this.experienceOptions = F, { experienceOptions: F, index: D, options: M };
|
|
10359
10361
|
});
|
|
10360
|
-
|
|
10361
|
-
const Q = (await Promise.all(E)).sort((
|
|
10362
|
-
const { experienceOptions: u, options:
|
|
10363
|
-
return await p.getWorkflowManager().getInitializationPromise(),
|
|
10362
|
+
x.setMap("transactionOwnerIds", d);
|
|
10363
|
+
const Q = (await Promise.all(E)).sort((h, u) => h.index - u.index).map(async (h) => {
|
|
10364
|
+
const { experienceOptions: u, options: f } = h, p = new CA(this, u);
|
|
10365
|
+
return await p.getWorkflowManager().getInitializationPromise(), f.type !== "transaction" && this.customer && await p.attachCustomerDetails({ email: this.customer.emailAddress }), p;
|
|
10364
10366
|
});
|
|
10365
10367
|
return await Promise.all(Q);
|
|
10366
10368
|
}
|
|
@@ -10372,8 +10374,8 @@ class fs {
|
|
|
10372
10374
|
async initFromIntegrationProduct(A) {
|
|
10373
10375
|
var s;
|
|
10374
10376
|
if (A === "")
|
|
10375
|
-
throw new
|
|
10376
|
-
const t = await
|
|
10377
|
+
throw new P("No integration product ID provided.");
|
|
10378
|
+
const t = await N.getShadowGraphqlClient().mutate({
|
|
10377
10379
|
mutation: ue,
|
|
10378
10380
|
variables: {
|
|
10379
10381
|
integrationProductId: A,
|
|
@@ -10386,13 +10388,13 @@ class fs {
|
|
|
10386
10388
|
context: this.options.applicationKey ? { headers: { "X-Application-Key": this.options.applicationKey } } : void 0
|
|
10387
10389
|
});
|
|
10388
10390
|
if (!t.data || !t.data.transactionCreate)
|
|
10389
|
-
throw new
|
|
10391
|
+
throw new P("Failed to create transaction!");
|
|
10390
10392
|
const a = t.data.transactionCreate;
|
|
10391
10393
|
if (!a.product)
|
|
10392
|
-
throw new
|
|
10394
|
+
throw new P("Failed to create transaction, product not available.");
|
|
10393
10395
|
this.currencyCode = (s = a.product.partner) == null ? void 0 : s.currencyCode;
|
|
10394
|
-
const n =
|
|
10395
|
-
n.set(a.id, a.transactionOwnerId), eA(a.transactionOwnerId || ""),
|
|
10396
|
+
const n = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map();
|
|
10397
|
+
n.set(a.id, a.transactionOwnerId), eA(a.transactionOwnerId || ""), x.setMap("transactionOwnerIds", n), this.experienceOptions = {
|
|
10396
10398
|
product: a.product,
|
|
10397
10399
|
transaction: a,
|
|
10398
10400
|
layouts: [],
|
|
@@ -10408,8 +10410,8 @@ class fs {
|
|
|
10408
10410
|
async initFromTransaction(A, e = !1) {
|
|
10409
10411
|
var i, o, r, c;
|
|
10410
10412
|
if (A === "")
|
|
10411
|
-
throw new
|
|
10412
|
-
const t =
|
|
10413
|
+
throw new P("No transaction ID provided.");
|
|
10414
|
+
const t = N.getShadowGraphqlClient(), a = async () => {
|
|
10413
10415
|
var d, E;
|
|
10414
10416
|
const l = (d = (await t.query({
|
|
10415
10417
|
query: EA,
|
|
@@ -10418,9 +10420,9 @@ class fs {
|
|
|
10418
10420
|
errorPolicy: "all"
|
|
10419
10421
|
})).data) == null ? void 0 : d.transactions[0];
|
|
10420
10422
|
if (!l)
|
|
10421
|
-
throw new
|
|
10423
|
+
throw new P("Failed to read transaction.");
|
|
10422
10424
|
if (!l.product)
|
|
10423
|
-
throw new
|
|
10425
|
+
throw new P("Failed to load transaction, product not available.");
|
|
10424
10426
|
this.currencyCode = (E = l.product.partner) == null ? void 0 : E.currencyCode, this.experienceOptions = {
|
|
10425
10427
|
product: l.product,
|
|
10426
10428
|
transaction: l,
|
|
@@ -10433,7 +10435,7 @@ class fs {
|
|
|
10433
10435
|
};
|
|
10434
10436
|
if (e)
|
|
10435
10437
|
return await a();
|
|
10436
|
-
const n =
|
|
10438
|
+
const n = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), s = n.get(A);
|
|
10437
10439
|
if (s) {
|
|
10438
10440
|
eA(s);
|
|
10439
10441
|
const l = (i = (await t.query({
|
|
@@ -10444,9 +10446,9 @@ class fs {
|
|
|
10444
10446
|
errorPolicy: "all"
|
|
10445
10447
|
})).data) == null ? void 0 : i.transactions[0];
|
|
10446
10448
|
if (!l)
|
|
10447
|
-
throw new
|
|
10449
|
+
throw new P("Failed to read transaction.");
|
|
10448
10450
|
if (!l.product)
|
|
10449
|
-
throw new
|
|
10451
|
+
throw new P("Failed to load transaction, product not available.");
|
|
10450
10452
|
this.currencyCode = (o = l.product.partner) == null ? void 0 : o.currencyCode, this.experienceOptions = {
|
|
10451
10453
|
product: l.product,
|
|
10452
10454
|
transaction: l,
|
|
@@ -10463,10 +10465,10 @@ class fs {
|
|
|
10463
10465
|
errorPolicy: "all"
|
|
10464
10466
|
})).data) == null ? void 0 : r.transactionClaim;
|
|
10465
10467
|
if (!l)
|
|
10466
|
-
throw new
|
|
10468
|
+
throw new P("Failed to read transaction.");
|
|
10467
10469
|
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),
|
|
10470
|
+
throw new P("Failed to load transaction, product not available.");
|
|
10471
|
+
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
10472
|
product: l.product,
|
|
10471
10473
|
transaction: l,
|
|
10472
10474
|
layouts: [],
|
|
@@ -10474,7 +10476,7 @@ class fs {
|
|
|
10474
10476
|
readOnly: e
|
|
10475
10477
|
}, this.initialized = !0;
|
|
10476
10478
|
} catch {
|
|
10477
|
-
throw new
|
|
10479
|
+
throw new P("Attempted to access a transaction that isn't available.");
|
|
10478
10480
|
}
|
|
10479
10481
|
}
|
|
10480
10482
|
/**
|
|
@@ -10483,7 +10485,7 @@ class fs {
|
|
|
10483
10485
|
async getWorkflowExperienceDeprecated(A, e, t) {
|
|
10484
10486
|
var a, n, s, i;
|
|
10485
10487
|
if (!this.initialized || !this.experienceOptions)
|
|
10486
|
-
throw new
|
|
10488
|
+
throw new P("Cannot launch experience: Not initialized.");
|
|
10487
10489
|
if (this.experienceOptions.transaction.workflowId) {
|
|
10488
10490
|
const o = await pA(this.experienceOptions.transaction.workflowId);
|
|
10489
10491
|
if (this.experienceOptions.workflow = o, this.experienceOptions.transaction.workflowState) {
|
|
@@ -10498,7 +10500,7 @@ class fs {
|
|
|
10498
10500
|
return await r.getWorkflowManager().getInitializationPromise(), r;
|
|
10499
10501
|
}
|
|
10500
10502
|
if (A) {
|
|
10501
|
-
const o =
|
|
10503
|
+
const o = N.getShadowGraphqlClient().mutate({
|
|
10502
10504
|
mutation: Ba,
|
|
10503
10505
|
variables: {
|
|
10504
10506
|
workflowId: A,
|
|
@@ -10520,7 +10522,7 @@ class fs {
|
|
|
10520
10522
|
const c = new CA(this, this.experienceOptions);
|
|
10521
10523
|
return await c.getWorkflowManager().getInitializationPromise(), c;
|
|
10522
10524
|
}
|
|
10523
|
-
throw new
|
|
10525
|
+
throw new P("No workflow ID provided.");
|
|
10524
10526
|
}
|
|
10525
10527
|
/**
|
|
10526
10528
|
* @deprecated The value this returns will be changed whenever `getWorkflowExperience()` is called. Use `workflowExperience.getWorkflowManager().getPreviewService()` instead.
|
|
@@ -10536,7 +10538,7 @@ class fs {
|
|
|
10536
10538
|
*/
|
|
10537
10539
|
getProduct() {
|
|
10538
10540
|
if (!this.initialized || !this.experienceOptions)
|
|
10539
|
-
throw new
|
|
10541
|
+
throw new P("Cannot get product: Not initialized.");
|
|
10540
10542
|
return this.experienceOptions.product;
|
|
10541
10543
|
}
|
|
10542
10544
|
/**
|
|
@@ -10545,12 +10547,12 @@ class fs {
|
|
|
10545
10547
|
*/
|
|
10546
10548
|
getTransaction() {
|
|
10547
10549
|
if (!this.initialized || !this.experienceOptions)
|
|
10548
|
-
throw new
|
|
10550
|
+
throw new P("Cannot get transaction: Not initialized.");
|
|
10549
10551
|
return this.experienceOptions.transaction;
|
|
10550
10552
|
}
|
|
10551
10553
|
storeCustomer(A) {
|
|
10552
|
-
const e =
|
|
10553
|
-
e.set(A.partner.id, A.id),
|
|
10554
|
+
const e = x.getMap("partnerCustomerIds") || /* @__PURE__ */ new Map();
|
|
10555
|
+
e.set(A.partner.id, A.id), x.setMap("partnerCustomerIds", e);
|
|
10554
10556
|
}
|
|
10555
10557
|
}
|
|
10556
10558
|
class ks {
|
|
@@ -10779,7 +10781,7 @@ export {
|
|
|
10779
10781
|
nn as InformationStepHandle,
|
|
10780
10782
|
ei as LayoutElementFactory,
|
|
10781
10783
|
ti as LayoutElementType,
|
|
10782
|
-
|
|
10784
|
+
L as LayoutNotFoundError,
|
|
10783
10785
|
$a as MaterialStepHandle,
|
|
10784
10786
|
SA as MisconfigurationError,
|
|
10785
10787
|
ks as MockWorkflowManager,
|
|
@@ -10814,7 +10816,7 @@ export {
|
|
|
10814
10816
|
gi as UnitOfMeasurement,
|
|
10815
10817
|
X as Variant,
|
|
10816
10818
|
CA as WorkflowExperienceImpl,
|
|
10817
|
-
|
|
10819
|
+
T as assetService,
|
|
10818
10820
|
Bn as createDesign,
|
|
10819
10821
|
li as dataUrlFromExternalUrl,
|
|
10820
10822
|
zA as designService,
|
|
@@ -10835,7 +10837,7 @@ export {
|
|
|
10835
10837
|
mi as getSvgElement,
|
|
10836
10838
|
pA as getWorkflow,
|
|
10837
10839
|
ht as getWorkflows,
|
|
10838
|
-
|
|
10840
|
+
N as graphQlManager,
|
|
10839
10841
|
fA as illustrationStepService,
|
|
10840
10842
|
pi as loadFont,
|
|
10841
10843
|
$e as materialStepService,
|
|
@@ -10843,7 +10845,7 @@ export {
|
|
|
10843
10845
|
Ya as moduleStepService,
|
|
10844
10846
|
z as optionService,
|
|
10845
10847
|
Ii as patternImageDataCache,
|
|
10846
|
-
|
|
10848
|
+
x as persistenceService,
|
|
10847
10849
|
At as pictureStepService,
|
|
10848
10850
|
et as questionStepService,
|
|
10849
10851
|
Di as registerFetchImplementation,
|