@spiffcommerce/core 16.5.0 → 16.5.1-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +23 -0
- package/dist/index.js +625 -624
- 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");
|
|
@@ -6808,7 +6805,7 @@ class CA {
|
|
|
6808
6805
|
return this.workflowManager;
|
|
6809
6806
|
}
|
|
6810
6807
|
async updateVariationRecords(A) {
|
|
6811
|
-
await
|
|
6808
|
+
await N.getShadowGraphqlClient().mutate({
|
|
6812
6809
|
mutation: da,
|
|
6813
6810
|
variables: {
|
|
6814
6811
|
transactionId: this.workflowManager.getTransaction().id,
|
|
@@ -6824,8 +6821,8 @@ class CA {
|
|
|
6824
6821
|
});
|
|
6825
6822
|
}
|
|
6826
6823
|
async createPreviewImage(A, e) {
|
|
6827
|
-
var
|
|
6828
|
-
const t = this.workflowManager.getWorkflow(), a = (
|
|
6824
|
+
var h, u;
|
|
6825
|
+
const t = this.workflowManager.getWorkflow(), a = (h = t == null ? void 0 : t.finalizeStepConfig) == null ? void 0 : h.lookAtAnimation;
|
|
6829
6826
|
if (A) {
|
|
6830
6827
|
if (!a)
|
|
6831
6828
|
throw new Error("Failed to generate cart preview image!");
|
|
@@ -6833,9 +6830,9 @@ class CA {
|
|
|
6833
6830
|
}
|
|
6834
6831
|
let n = 2048;
|
|
6835
6832
|
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((
|
|
6833
|
+
const s = yA(n, n), i = this.commandContext.getAllLayouts(), o = t.defaultPreviewPanelIndex || 0, r = t.panels[o], c = i.find((f) => {
|
|
6837
6834
|
var p;
|
|
6838
|
-
return ((p =
|
|
6835
|
+
return ((p = f.layoutState) == null ? void 0 : p.layout.panelId) === (r == null ? void 0 : r.name);
|
|
6839
6836
|
}) || i[0], B = c.layoutState.layout.previewRegion ? {
|
|
6840
6837
|
x: c.layoutState.layout.previewRegion.left,
|
|
6841
6838
|
y: c.layoutState.layout.previewRegion.top,
|
|
@@ -6854,8 +6851,8 @@ class CA {
|
|
|
6854
6851
|
purpose: Se.Print,
|
|
6855
6852
|
region: { left: B.x, top: B.y, width: B.width, height: B.height }
|
|
6856
6853
|
}
|
|
6857
|
-
}),
|
|
6858
|
-
await (await Ge.from(d,
|
|
6854
|
+
}), C = xe(E);
|
|
6855
|
+
await (await Ge.from(d, C, {
|
|
6859
6856
|
anonymousCrossOrigin: !0,
|
|
6860
6857
|
ignoreDimensions: !1,
|
|
6861
6858
|
createCanvas: yA,
|
|
@@ -6931,7 +6928,7 @@ class CA {
|
|
|
6931
6928
|
}
|
|
6932
6929
|
async assignCustomerDetails(A) {
|
|
6933
6930
|
var a, n, s;
|
|
6934
|
-
const t = (s = (n = (a = (await
|
|
6931
|
+
const t = (s = (n = (a = (await N.getShadowGraphqlClient().mutate({
|
|
6935
6932
|
mutation: rt,
|
|
6936
6933
|
variables: {
|
|
6937
6934
|
id: this.getWorkflowManager().getTransaction().id,
|
|
@@ -6946,8 +6943,8 @@ class CA {
|
|
|
6946
6943
|
);
|
|
6947
6944
|
if (t != null && t.customer) {
|
|
6948
6945
|
this.getWorkflowManager().setTransactionCustomer(t.customer);
|
|
6949
|
-
const i =
|
|
6950
|
-
i.set(this.getWorkflowManager().getTransaction().id, t.customer.id),
|
|
6946
|
+
const i = x.getMap("transactionCustomerIds") || /* @__PURE__ */ new Map();
|
|
6947
|
+
i.set(this.getWorkflowManager().getTransaction().id, t.customer.id), x.setMap("transactionCustomerIds", i);
|
|
6951
6948
|
}
|
|
6952
6949
|
}
|
|
6953
6950
|
attachRenderableSceneListener(A) {
|
|
@@ -7046,16 +7043,16 @@ const En = [
|
|
|
7046
7043
|
], hn = async (g, A, e) => {
|
|
7047
7044
|
const t = A.data, a = e.data.baseUrl, n = t.assetUrl.replace("localhost", "localstack"), s = a.slice(0, 4) === "http" ? "" : "https://", i = new URL(s + a);
|
|
7048
7045
|
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
|
|
7046
|
+
const o = i.toString(), c = `data:image/svg+xml;base64,${he(await be(o, { type: "svg" }))}`, B = (d) => {
|
|
7050
7047
|
const E = g.find((w) => w.panelId === d.panelId);
|
|
7051
7048
|
if (!E)
|
|
7052
|
-
throw new
|
|
7053
|
-
const
|
|
7049
|
+
throw new L(d);
|
|
7050
|
+
const C = k();
|
|
7054
7051
|
return new J(
|
|
7055
7052
|
{
|
|
7056
|
-
id:
|
|
7053
|
+
id: C,
|
|
7057
7054
|
src: c,
|
|
7058
|
-
type:
|
|
7055
|
+
type: H.Image,
|
|
7059
7056
|
y: d.top,
|
|
7060
7057
|
x: d.left,
|
|
7061
7058
|
width: d.width,
|
|
@@ -7076,16 +7073,16 @@ const En = [
|
|
|
7076
7073
|
const i = Rt(a, t.option);
|
|
7077
7074
|
i && (A[t.stepName] = { selectedVariants: [i] });
|
|
7078
7075
|
const o = async (r) => {
|
|
7079
|
-
var
|
|
7076
|
+
var C;
|
|
7080
7077
|
const c = await Pt(
|
|
7081
7078
|
r || {
|
|
7082
7079
|
width: 1,
|
|
7083
7080
|
height: 1
|
|
7084
7081
|
},
|
|
7085
|
-
(
|
|
7082
|
+
(C = i == null ? void 0 : i.asset) == null ? void 0 : C.fileLink
|
|
7086
7083
|
), B = await Ae(c), l = k(), d = g.find((w) => w.panelId === r.panelId);
|
|
7087
7084
|
if (!d)
|
|
7088
|
-
throw new
|
|
7085
|
+
throw new L(r);
|
|
7089
7086
|
const E = ee(s, B, {
|
|
7090
7087
|
scale: a.scale,
|
|
7091
7088
|
left: a.x,
|
|
@@ -7098,7 +7095,7 @@ const En = [
|
|
|
7098
7095
|
path: B.path,
|
|
7099
7096
|
dataWidth: B.width,
|
|
7100
7097
|
dataHeight: B.height,
|
|
7101
|
-
type:
|
|
7098
|
+
type: H.Frame,
|
|
7102
7099
|
focalBlur: t.data.focalBlur,
|
|
7103
7100
|
focalBlurStrength: t.data.focalBlurStrength,
|
|
7104
7101
|
focalBlurRadius: t.data.focalBlurRadius,
|
|
@@ -7124,7 +7121,7 @@ const En = [
|
|
|
7124
7121
|
return console.error(i), [];
|
|
7125
7122
|
}
|
|
7126
7123
|
}, Qn = async (g, A, e, t) => {
|
|
7127
|
-
var p,
|
|
7124
|
+
var p, D;
|
|
7128
7125
|
const a = e.data, n = t.option;
|
|
7129
7126
|
if (!n)
|
|
7130
7127
|
return console.error(`No option for step ${t.stepName}.`), [];
|
|
@@ -7134,47 +7131,47 @@ const En = [
|
|
|
7134
7131
|
if (!s.asset)
|
|
7135
7132
|
return console.error(`No asset for variant with ID: ${a.illustrationVariantId}`), [];
|
|
7136
7133
|
A[t.stepName] = { selectedVariants: [s] };
|
|
7137
|
-
const i = (
|
|
7134
|
+
const i = (D = s.asset) == null ? void 0 : D.fileLink;
|
|
7138
7135
|
if (!i)
|
|
7139
7136
|
return console.error(`No asset link for variant with ID: ${a.illustrationVariantId}`), [];
|
|
7140
7137
|
const o = await Z(i, !0), r = /<svg.*?<\/svg>/s, c = o.match(r) || [], B = (c == null ? void 0 : c.length) > 0 ? c[0] : "", E = Pe().parseFromString(B, "image/svg+xml").firstElementChild;
|
|
7141
7138
|
if (!E)
|
|
7142
7139
|
return console.error("Failed to read SVG."), [];
|
|
7143
7140
|
He(E);
|
|
7144
|
-
const
|
|
7141
|
+
const C = {};
|
|
7145
7142
|
Ht(E, (m) => {
|
|
7146
7143
|
En.includes(m.tagName) && !m.attributes.getNamedItem("fill") && m.setAttribute("fill", "#000000");
|
|
7147
|
-
const
|
|
7148
|
-
if (
|
|
7149
|
-
const F =
|
|
7150
|
-
m.classList.add(
|
|
7144
|
+
const M = m.attributes.getNamedItem("fill");
|
|
7145
|
+
if (M && M.value !== "none") {
|
|
7146
|
+
const F = M.value, S = `spiff-fill-${F.replace(/\W/g, "")}`;
|
|
7147
|
+
m.classList.add(S), C[S] = { browserValue: F };
|
|
7151
7148
|
}
|
|
7152
7149
|
const Y = m.attributes.getNamedItem("stroke");
|
|
7153
7150
|
if (Y && Y.value !== "none") {
|
|
7154
|
-
const F = Y.value,
|
|
7155
|
-
m.classList.add(
|
|
7151
|
+
const F = Y.value, S = `spiff-stroke-${F.replace(/\W/g, "")}`;
|
|
7152
|
+
m.classList.add(S), C[S] = { browserValue: F };
|
|
7156
7153
|
}
|
|
7157
7154
|
});
|
|
7158
|
-
const Q = Ue().serializeToString(E),
|
|
7159
|
-
if (
|
|
7160
|
-
for (const [m,
|
|
7161
|
-
for (const Y of Object.keys(
|
|
7162
|
-
if (
|
|
7163
|
-
|
|
7155
|
+
const Q = Ue().serializeToString(E), h = a.colors;
|
|
7156
|
+
if (h) {
|
|
7157
|
+
for (const [m, M] of Object.entries(C))
|
|
7158
|
+
for (const Y of Object.keys(h))
|
|
7159
|
+
if (M.browserValue === Y) {
|
|
7160
|
+
C[m] = { browserValue: h[Y] };
|
|
7164
7161
|
break;
|
|
7165
7162
|
}
|
|
7166
7163
|
}
|
|
7167
7164
|
const u = (m) => {
|
|
7168
|
-
const
|
|
7169
|
-
if (!
|
|
7170
|
-
throw new
|
|
7165
|
+
const M = g.find((F) => F.panelId === m.panelId);
|
|
7166
|
+
if (!M)
|
|
7167
|
+
throw new L(m);
|
|
7171
7168
|
const Y = k();
|
|
7172
7169
|
return new J(
|
|
7173
7170
|
{
|
|
7174
|
-
colors:
|
|
7171
|
+
colors: C,
|
|
7175
7172
|
id: Y,
|
|
7176
7173
|
svg: Q,
|
|
7177
|
-
type:
|
|
7174
|
+
type: H.Illustration,
|
|
7178
7175
|
y: m.top,
|
|
7179
7176
|
x: m.left,
|
|
7180
7177
|
rotation: m.rotation,
|
|
@@ -7184,11 +7181,11 @@ const En = [
|
|
|
7184
7181
|
layerIndex: m.layerIndex,
|
|
7185
7182
|
immutable: m.immutable
|
|
7186
7183
|
},
|
|
7187
|
-
|
|
7184
|
+
M
|
|
7188
7185
|
);
|
|
7189
|
-
},
|
|
7186
|
+
}, f = t.data.regions;
|
|
7190
7187
|
try {
|
|
7191
|
-
return
|
|
7188
|
+
return f.map(u);
|
|
7192
7189
|
} catch (m) {
|
|
7193
7190
|
return console.error(m), [];
|
|
7194
7191
|
}
|
|
@@ -7196,14 +7193,14 @@ const En = [
|
|
|
7196
7193
|
const t = await it(e.data.module), a = A.data, n = (i, o) => {
|
|
7197
7194
|
const r = g.find((B) => B.panelId === o.panelId);
|
|
7198
7195
|
if (!r)
|
|
7199
|
-
throw new
|
|
7196
|
+
throw new L(o);
|
|
7200
7197
|
const c = k();
|
|
7201
7198
|
return new J(
|
|
7202
7199
|
{
|
|
7203
7200
|
colors: {},
|
|
7204
7201
|
id: c,
|
|
7205
7202
|
svg: i,
|
|
7206
|
-
type:
|
|
7203
|
+
type: H.Illustration,
|
|
7207
7204
|
y: o.top,
|
|
7208
7205
|
x: o.left,
|
|
7209
7206
|
rotation: o.rotation,
|
|
@@ -7237,15 +7234,15 @@ const En = [
|
|
|
7237
7234
|
if (!i)
|
|
7238
7235
|
return console.error(`No asset link for variant with ID: ${a.pictureVariantId}`), [];
|
|
7239
7236
|
const o = (l) => {
|
|
7240
|
-
const d = g.find((
|
|
7237
|
+
const d = g.find((C) => C.panelId === l.panelId);
|
|
7241
7238
|
if (!d)
|
|
7242
|
-
throw new
|
|
7239
|
+
throw new L(l);
|
|
7243
7240
|
const E = k();
|
|
7244
7241
|
return new J(
|
|
7245
7242
|
{
|
|
7246
7243
|
id: E,
|
|
7247
7244
|
src: i,
|
|
7248
|
-
type:
|
|
7245
|
+
type: H.Image,
|
|
7249
7246
|
y: l.top,
|
|
7250
7247
|
x: l.left,
|
|
7251
7248
|
rotation: l.rotation,
|
|
@@ -7276,7 +7273,7 @@ const En = [
|
|
|
7276
7273
|
const i = (c) => {
|
|
7277
7274
|
const B = g.find((w) => w.panelId === c.panelId);
|
|
7278
7275
|
if (!B)
|
|
7279
|
-
throw new
|
|
7276
|
+
throw new L(c);
|
|
7280
7277
|
const l = `
|
|
7281
7278
|
<svg
|
|
7282
7279
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -7297,13 +7294,13 @@ const En = [
|
|
|
7297
7294
|
fill="${s == null ? void 0 : s.color}"
|
|
7298
7295
|
/>
|
|
7299
7296
|
</svg>
|
|
7300
|
-
`, E = { "spiff-fill-shape": { browserValue: s.color || "#000000" } },
|
|
7297
|
+
`, E = { "spiff-fill-shape": { browserValue: s.color || "#000000" } }, C = k();
|
|
7301
7298
|
return new J(
|
|
7302
7299
|
{
|
|
7303
7300
|
colors: E,
|
|
7304
|
-
id:
|
|
7301
|
+
id: C,
|
|
7305
7302
|
svg: l,
|
|
7306
|
-
type:
|
|
7303
|
+
type: H.Illustration,
|
|
7307
7304
|
y: c.top,
|
|
7308
7305
|
x: c.left,
|
|
7309
7306
|
rotation: c.rotation,
|
|
@@ -7325,13 +7322,13 @@ const En = [
|
|
|
7325
7322
|
const t = [], n = (() => {
|
|
7326
7323
|
var r, c;
|
|
7327
7324
|
return A.type === I.ProductOverlay ? e || ((r = A.data.asset) == null ? void 0 : r.fileLink) || "" : ((c = A.data.asset) == null ? void 0 : c.fileLink) || "";
|
|
7328
|
-
})(), i = (() => n.endsWith(".jpeg") || n.endsWith(".jpg") || n.endsWith(".png") ?
|
|
7325
|
+
})(), i = (() => n.endsWith(".jpeg") || n.endsWith(".jpg") || n.endsWith(".png") ? H.Image : n.endsWith(".svg") ? H.Illustration : H.Illustration)(), o = A.data.regions;
|
|
7329
7326
|
if (i === "image")
|
|
7330
7327
|
try {
|
|
7331
7328
|
o.forEach((r) => {
|
|
7332
7329
|
const c = g.find((l) => l.panelId === r.panelId);
|
|
7333
7330
|
if (!c)
|
|
7334
|
-
throw new
|
|
7331
|
+
throw new L(r);
|
|
7335
7332
|
const B = {
|
|
7336
7333
|
id: k(),
|
|
7337
7334
|
src: n,
|
|
@@ -7364,7 +7361,7 @@ const En = [
|
|
|
7364
7361
|
o.forEach((B) => {
|
|
7365
7362
|
const l = g.find((E) => E.panelId === B.panelId);
|
|
7366
7363
|
if (!l)
|
|
7367
|
-
throw new
|
|
7364
|
+
throw new L(B);
|
|
7368
7365
|
const d = {
|
|
7369
7366
|
id: k(),
|
|
7370
7367
|
src: n,
|
|
@@ -7394,13 +7391,13 @@ const En = [
|
|
|
7394
7391
|
const w = t.option;
|
|
7395
7392
|
if (!w)
|
|
7396
7393
|
return;
|
|
7397
|
-
const Q = ((u = w.variants) == null ? void 0 : u.find((
|
|
7394
|
+
const Q = ((u = w.variants) == null ? void 0 : u.find((f) => f.id === n.fontVariantId)) || UA(w);
|
|
7398
7395
|
if (!Q || !Q.asset)
|
|
7399
7396
|
return;
|
|
7400
7397
|
A[t.stepName] = { selectedVariants: [Q] };
|
|
7401
|
-
const
|
|
7402
|
-
if (
|
|
7403
|
-
return
|
|
7398
|
+
const h = Q.asset.fileLink;
|
|
7399
|
+
if (h)
|
|
7400
|
+
return h;
|
|
7404
7401
|
}, c = await (async () => {
|
|
7405
7402
|
const w = o();
|
|
7406
7403
|
if (!w)
|
|
@@ -7417,14 +7414,14 @@ const En = [
|
|
|
7417
7414
|
const Q = w.colorOption;
|
|
7418
7415
|
if (!Q)
|
|
7419
7416
|
return;
|
|
7420
|
-
const
|
|
7421
|
-
return
|
|
7422
|
-
}, E = n.color || await d(t.data),
|
|
7423
|
-
for (const w of
|
|
7417
|
+
const h = z.getDefaultVariant(Q);
|
|
7418
|
+
return h == null ? void 0 : h.color;
|
|
7419
|
+
}, E = n.color || await d(t.data), C = t.data.regions;
|
|
7420
|
+
for (const w of C) {
|
|
7424
7421
|
const Q = g.find((u) => u.panelId === w.panelId);
|
|
7425
7422
|
if (!Q)
|
|
7426
7423
|
continue;
|
|
7427
|
-
const
|
|
7424
|
+
const h = {
|
|
7428
7425
|
stepName: e.name,
|
|
7429
7426
|
id: k(),
|
|
7430
7427
|
align: i(t.data),
|
|
@@ -7438,7 +7435,7 @@ const En = [
|
|
|
7438
7435
|
paths: t.data.paths,
|
|
7439
7436
|
rotation: w.rotation,
|
|
7440
7437
|
text: l,
|
|
7441
|
-
type:
|
|
7438
|
+
type: H.Textbox,
|
|
7442
7439
|
vertical: t.data.vertical,
|
|
7443
7440
|
verticalAlign: t.data.verticalAlign || "middle",
|
|
7444
7441
|
width: w.width,
|
|
@@ -7446,7 +7443,7 @@ const En = [
|
|
|
7446
7443
|
y: w.top
|
|
7447
7444
|
};
|
|
7448
7445
|
if (c) {
|
|
7449
|
-
const [u,
|
|
7446
|
+
const [u, f] = IA(
|
|
7450
7447
|
t.data.size || s,
|
|
7451
7448
|
c,
|
|
7452
7449
|
w,
|
|
@@ -7465,16 +7462,16 @@ const En = [
|
|
|
7465
7462
|
a.push(
|
|
7466
7463
|
new J(
|
|
7467
7464
|
{
|
|
7468
|
-
...
|
|
7465
|
+
...h,
|
|
7469
7466
|
fontSize: u,
|
|
7470
|
-
text:
|
|
7467
|
+
text: h.curved ? h.text : (f || []).join(`
|
|
7471
7468
|
`)
|
|
7472
7469
|
},
|
|
7473
7470
|
Q
|
|
7474
7471
|
)
|
|
7475
7472
|
);
|
|
7476
7473
|
} else
|
|
7477
|
-
a.push(new J(
|
|
7474
|
+
a.push(new J(h, Q));
|
|
7478
7475
|
}
|
|
7479
7476
|
return a;
|
|
7480
7477
|
}, fn = (g, A) => g.conditions ? g.conditions.every((e) => {
|
|
@@ -7678,19 +7675,19 @@ class Yn extends Xe {
|
|
|
7678
7675
|
return;
|
|
7679
7676
|
const e = A.layoutState.elements || [];
|
|
7680
7677
|
if (this.variationRecord) {
|
|
7681
|
-
const l = this.variationRecord.values.map((
|
|
7682
|
-
stepName:
|
|
7683
|
-
stepAspectType:
|
|
7684
|
-
value:
|
|
7678
|
+
const l = this.variationRecord.values.map((C) => ({
|
|
7679
|
+
stepName: C.stepName,
|
|
7680
|
+
stepAspectType: C.aspect,
|
|
7681
|
+
value: C.value
|
|
7685
7682
|
})), d = await xn(
|
|
7686
7683
|
Sn(l, this.workflow),
|
|
7687
7684
|
this.workflow,
|
|
7688
|
-
this.layouts.map((
|
|
7685
|
+
this.layouts.map((C) => C.layoutState.layout),
|
|
7689
7686
|
this.productOverlayImageUrl
|
|
7690
7687
|
), 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 ===
|
|
7688
|
+
((E == null ? void 0 : E.elements) || []).forEach((C) => {
|
|
7689
|
+
const w = e.find((Q) => Q.stepName === C.stepName);
|
|
7690
|
+
w && w.type === H.Textbox ? (w.text = C.text, w.fontSize = C.fontSize) : e.push(C);
|
|
7694
7691
|
}), Gt(e);
|
|
7695
7692
|
}
|
|
7696
7693
|
const t = A.layoutState.layout.width, a = A.layoutState.layout.height, n = this.getDynamicTextureResolution().width, s = this.getDynamicTextureResolution().height;
|
|
@@ -7738,7 +7735,7 @@ const Sn = (g, A) => {
|
|
|
7738
7735
|
a = new G(e.map((o) => new Ut(o))).apply(a);
|
|
7739
7736
|
const s = await Fn(g, A, e, t);
|
|
7740
7737
|
return new G(s).apply(a);
|
|
7741
|
-
}, Nn =
|
|
7738
|
+
}, Nn = y`
|
|
7742
7739
|
fragment ProductFields on Product {
|
|
7743
7740
|
id
|
|
7744
7741
|
basePrice
|
|
@@ -7773,7 +7770,7 @@ const Sn = (g, A) => {
|
|
|
7773
7770
|
name
|
|
7774
7771
|
}
|
|
7775
7772
|
}
|
|
7776
|
-
`, Rn =
|
|
7773
|
+
`, Rn = y`
|
|
7777
7774
|
${Nn}
|
|
7778
7775
|
fragment ProductCollectionProductFields on ProductCollectionProduct {
|
|
7779
7776
|
id
|
|
@@ -7783,7 +7780,7 @@ const Sn = (g, A) => {
|
|
|
7783
7780
|
...ProductFields
|
|
7784
7781
|
}
|
|
7785
7782
|
}
|
|
7786
|
-
`, dt =
|
|
7783
|
+
`, dt = y`
|
|
7787
7784
|
${Rn}
|
|
7788
7785
|
fragment ProductCollectionFields on ProductCollection {
|
|
7789
7786
|
id
|
|
@@ -7830,7 +7827,7 @@ const Sn = (g, A) => {
|
|
|
7830
7827
|
}
|
|
7831
7828
|
}
|
|
7832
7829
|
}
|
|
7833
|
-
`, Pn =
|
|
7830
|
+
`, Pn = y`
|
|
7834
7831
|
${dt}
|
|
7835
7832
|
query GetBundle($id: String!) {
|
|
7836
7833
|
bundles(ids: [$id]) {
|
|
@@ -7852,7 +7849,7 @@ const Sn = (g, A) => {
|
|
|
7852
7849
|
}
|
|
7853
7850
|
}
|
|
7854
7851
|
}
|
|
7855
|
-
`, Hn =
|
|
7852
|
+
`, Hn = y`
|
|
7856
7853
|
query GetBundleStakeholders($id: String!) {
|
|
7857
7854
|
bundles(ids: [$id]) {
|
|
7858
7855
|
id
|
|
@@ -7872,7 +7869,7 @@ const Sn = (g, A) => {
|
|
|
7872
7869
|
}
|
|
7873
7870
|
}
|
|
7874
7871
|
}
|
|
7875
|
-
`, Un =
|
|
7872
|
+
`, Un = y`
|
|
7876
7873
|
query GetBundlesForCustomer($id: String!) {
|
|
7877
7874
|
customers(ids: [$id]) {
|
|
7878
7875
|
bundleStakeholders {
|
|
@@ -7893,7 +7890,7 @@ const Sn = (g, A) => {
|
|
|
7893
7890
|
}
|
|
7894
7891
|
}
|
|
7895
7892
|
}
|
|
7896
|
-
`, Gn =
|
|
7893
|
+
`, Gn = y`
|
|
7897
7894
|
${dt}
|
|
7898
7895
|
mutation CreateBundle($collectionId: String) {
|
|
7899
7896
|
bundleCreate(collectionId: $collectionId) {
|
|
@@ -7912,25 +7909,25 @@ const Sn = (g, A) => {
|
|
|
7912
7909
|
}
|
|
7913
7910
|
}
|
|
7914
7911
|
}
|
|
7915
|
-
`, vn =
|
|
7912
|
+
`, vn = y`
|
|
7916
7913
|
mutation UpdateBundle($id: String!, $name: String, $metadata: [MetadataInput!], $bundleStateData: String) {
|
|
7917
7914
|
bundleUpdate(id: $id, name: $name, metadata: $metadata, bundleStateData: $bundleStateData) {
|
|
7918
7915
|
id
|
|
7919
7916
|
}
|
|
7920
7917
|
}
|
|
7921
|
-
`, kn =
|
|
7918
|
+
`, kn = y`
|
|
7922
7919
|
mutation BundleAddTransaction($id: String!, $transactionId: String!) {
|
|
7923
7920
|
bundleAddTransaction(id: $id, transactionId: $transactionId) {
|
|
7924
7921
|
id
|
|
7925
7922
|
}
|
|
7926
7923
|
}
|
|
7927
|
-
`,
|
|
7924
|
+
`, bn = y`
|
|
7928
7925
|
mutation BundleAddTransactions($id: String!, $transactionIds: [String!]!, $transactionOwnerIds: [String!]) {
|
|
7929
7926
|
bundleAddTransactions(id: $id, transactionIds: $transactionIds, transactionOwnerIds: $transactionOwnerIds) {
|
|
7930
7927
|
id
|
|
7931
7928
|
}
|
|
7932
7929
|
}
|
|
7933
|
-
`,
|
|
7930
|
+
`, Jn = y`
|
|
7934
7931
|
mutation BundleRemoveTransaction(
|
|
7935
7932
|
$id: String!
|
|
7936
7933
|
$transactionId: String!
|
|
@@ -7945,7 +7942,7 @@ const Sn = (g, A) => {
|
|
|
7945
7942
|
id
|
|
7946
7943
|
}
|
|
7947
7944
|
}
|
|
7948
|
-
`, Tn =
|
|
7945
|
+
`, Tn = y`
|
|
7949
7946
|
mutation BundleRemoveTransactions(
|
|
7950
7947
|
$id: String!
|
|
7951
7948
|
$transactionIds: [String!]!
|
|
@@ -7960,7 +7957,7 @@ const Sn = (g, A) => {
|
|
|
7960
7957
|
id
|
|
7961
7958
|
}
|
|
7962
7959
|
}
|
|
7963
|
-
`, Ln =
|
|
7960
|
+
`, Ln = y`
|
|
7964
7961
|
mutation BundleAddStakeholder($id: String!, $details: CustomerDetailsInput!, $type: String!) {
|
|
7965
7962
|
bundleAddStakeholder(id: $id, details: $details, type: $type) {
|
|
7966
7963
|
id
|
|
@@ -7980,7 +7977,7 @@ const Sn = (g, A) => {
|
|
|
7980
7977
|
}
|
|
7981
7978
|
}
|
|
7982
7979
|
}
|
|
7983
|
-
`, On =
|
|
7980
|
+
`, On = y`
|
|
7984
7981
|
mutation BundleUpdateStakeholders($id: String!, $input: [BundleStakeholderInput!]!) {
|
|
7985
7982
|
bundleUpdateStakeholders(id: $id, input: $input) {
|
|
7986
7983
|
id
|
|
@@ -8000,7 +7997,7 @@ const Sn = (g, A) => {
|
|
|
8000
7997
|
}
|
|
8001
7998
|
}
|
|
8002
7999
|
}
|
|
8003
|
-
`, zn =
|
|
8000
|
+
`, zn = y`
|
|
8004
8001
|
mutation BundleUpdateTransactionOrder($id: String!, $transactionIds: [String!]!) {
|
|
8005
8002
|
bundleUpdateTransactionOrder(id: $id, transactionIds: $transactionIds) {
|
|
8006
8003
|
id
|
|
@@ -8132,7 +8129,7 @@ class jn extends ge {
|
|
|
8132
8129
|
const e = this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name);
|
|
8133
8130
|
if (!e)
|
|
8134
8131
|
return Promise.resolve();
|
|
8135
|
-
const t = await
|
|
8132
|
+
const t = await T.getLocalOrFromServer(e);
|
|
8136
8133
|
return t ? this.applyImageSelection(t, A) : Promise.resolve();
|
|
8137
8134
|
}
|
|
8138
8135
|
async applyImageSelection(A, e) {
|
|
@@ -8252,7 +8249,7 @@ class Wn extends wt {
|
|
|
8252
8249
|
return this.getSharedSteps()[0].getCustomColor();
|
|
8253
8250
|
}
|
|
8254
8251
|
}
|
|
8255
|
-
const Xn =
|
|
8252
|
+
const Xn = y`
|
|
8256
8253
|
mutation CreateGlobalPropertyState($bundleId: String!) {
|
|
8257
8254
|
globalPropertyStateCreate(bundleId: $bundleId) {
|
|
8258
8255
|
id
|
|
@@ -8262,7 +8259,7 @@ const Xn = M`
|
|
|
8262
8259
|
}
|
|
8263
8260
|
}
|
|
8264
8261
|
}
|
|
8265
|
-
`, qn =
|
|
8262
|
+
`, qn = y`
|
|
8266
8263
|
mutation UpdateGlobalPropertyState($id: String!, $aspects: [GlobalPropertyStateAspectInput]!) {
|
|
8267
8264
|
globalPropertyStateUpdate(id: $id, aspects: $aspects) {
|
|
8268
8265
|
id
|
|
@@ -8272,7 +8269,7 @@ const Xn = M`
|
|
|
8272
8269
|
}
|
|
8273
8270
|
}
|
|
8274
8271
|
}
|
|
8275
|
-
`, Zn =
|
|
8272
|
+
`, Zn = y`
|
|
8276
8273
|
query GetGlobalPropertyState($bundleId: String!) {
|
|
8277
8274
|
globalPropertyState(bundleId: $bundleId) {
|
|
8278
8275
|
id
|
|
@@ -8312,7 +8309,7 @@ class $n {
|
|
|
8312
8309
|
var e;
|
|
8313
8310
|
if (!this.globalPropertyState)
|
|
8314
8311
|
throw new Error("Global property state not initialized");
|
|
8315
|
-
const A = await
|
|
8312
|
+
const A = await N.getShadowGraphqlClient().mutate({
|
|
8316
8313
|
mutation: qn,
|
|
8317
8314
|
variables: {
|
|
8318
8315
|
id: this.globalPropertyState.id,
|
|
@@ -8326,7 +8323,7 @@ class $n {
|
|
|
8326
8323
|
}
|
|
8327
8324
|
async getOrCreateGlobalPropertyState() {
|
|
8328
8325
|
var t;
|
|
8329
|
-
const A = await
|
|
8326
|
+
const A = await N.getShadowGraphqlClient().query({
|
|
8330
8327
|
query: Zn,
|
|
8331
8328
|
errorPolicy: "all",
|
|
8332
8329
|
fetchPolicy: "no-cache",
|
|
@@ -8336,7 +8333,7 @@ class $n {
|
|
|
8336
8333
|
});
|
|
8337
8334
|
if (A.data.globalPropertyState && A.data.globalPropertyState.id)
|
|
8338
8335
|
return A.data.globalPropertyState;
|
|
8339
|
-
const e = await
|
|
8336
|
+
const e = await N.getShadowGraphqlClient().mutate({
|
|
8340
8337
|
mutation: Xn,
|
|
8341
8338
|
variables: {
|
|
8342
8339
|
bundleId: this.bundleId
|
|
@@ -8492,7 +8489,7 @@ class es {
|
|
|
8492
8489
|
getDefaultWorkflow() {
|
|
8493
8490
|
const A = this.product.workflows || [];
|
|
8494
8491
|
if (A.length === 0)
|
|
8495
|
-
throw new
|
|
8492
|
+
throw new P(
|
|
8496
8493
|
"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
8494
|
);
|
|
8498
8495
|
const e = this.productResource.workflowId;
|
|
@@ -8670,9 +8667,9 @@ class fe {
|
|
|
8670
8667
|
throw new Error(
|
|
8671
8668
|
"Unable to add transaction to bundle - Already Exists: " + t.filter((s) => !!s).map((s) => s == null ? void 0 : s.getWorkflowManager().getTransaction().id).join(", ")
|
|
8672
8669
|
);
|
|
8673
|
-
const a =
|
|
8674
|
-
await
|
|
8675
|
-
mutation:
|
|
8670
|
+
const a = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), n = e.map((s) => a.get(s));
|
|
8671
|
+
await N.getShadowGraphqlClient().mutate({
|
|
8672
|
+
mutation: bn,
|
|
8676
8673
|
variables: {
|
|
8677
8674
|
id: this.id,
|
|
8678
8675
|
transactionIds: e,
|
|
@@ -8696,8 +8693,8 @@ class fe {
|
|
|
8696
8693
|
(i) => i.getWorkflowManager().getTransaction().id === t
|
|
8697
8694
|
))
|
|
8698
8695
|
throw new Error("Unable to add transaction to bundle - Already Exists!");
|
|
8699
|
-
const s = (
|
|
8700
|
-
await
|
|
8696
|
+
const s = (x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(t);
|
|
8697
|
+
await N.getShadowGraphqlClient().mutate({
|
|
8701
8698
|
mutation: kn,
|
|
8702
8699
|
variables: {
|
|
8703
8700
|
id: this.id,
|
|
@@ -8729,8 +8726,8 @@ class fe {
|
|
|
8729
8726
|
const a = this.workflowExperiences.find(
|
|
8730
8727
|
(n) => n.getWorkflowManager().getTransaction().id === e.id
|
|
8731
8728
|
);
|
|
8732
|
-
this.previewService && a.getWorkflowManager().ejectFromPreviewService(), this.bundleStateManager.removeStateForTransaction(e.id), await
|
|
8733
|
-
mutation:
|
|
8729
|
+
this.previewService && a.getWorkflowManager().ejectFromPreviewService(), this.bundleStateManager.removeStateForTransaction(e.id), await N.getShadowGraphqlClient().mutate({
|
|
8730
|
+
mutation: Jn,
|
|
8734
8731
|
variables: {
|
|
8735
8732
|
id: this.id,
|
|
8736
8733
|
transactionId: e.id,
|
|
@@ -8756,7 +8753,7 @@ class fe {
|
|
|
8756
8753
|
1
|
|
8757
8754
|
)[0]
|
|
8758
8755
|
);
|
|
8759
|
-
this.previewService && t.forEach((a) => a.getWorkflowManager().ejectFromPreviewService()), A.forEach((a) => this.bundleStateManager.removeStateForTransaction(a.id)), await
|
|
8756
|
+
this.previewService && t.forEach((a) => a.getWorkflowManager().ejectFromPreviewService()), A.forEach((a) => this.bundleStateManager.removeStateForTransaction(a.id)), await N.getShadowGraphqlClient().mutate({
|
|
8760
8757
|
mutation: Tn,
|
|
8761
8758
|
variables: {
|
|
8762
8759
|
id: this.id,
|
|
@@ -8814,7 +8811,7 @@ class fe {
|
|
|
8814
8811
|
}
|
|
8815
8812
|
async addStakeholder(A, e) {
|
|
8816
8813
|
var n;
|
|
8817
|
-
const t = await
|
|
8814
|
+
const t = await N.getShadowGraphqlClient().mutate({
|
|
8818
8815
|
mutation: Ln,
|
|
8819
8816
|
variables: {
|
|
8820
8817
|
id: this.id,
|
|
@@ -8829,7 +8826,7 @@ class fe {
|
|
|
8829
8826
|
}
|
|
8830
8827
|
async updateStakeholders(A) {
|
|
8831
8828
|
var a;
|
|
8832
|
-
const e = await
|
|
8829
|
+
const e = await N.getShadowGraphqlClient().mutate({
|
|
8833
8830
|
mutation: On,
|
|
8834
8831
|
variables: {
|
|
8835
8832
|
id: this.id,
|
|
@@ -8842,7 +8839,7 @@ class fe {
|
|
|
8842
8839
|
this.storeStakeholderCustomers(t);
|
|
8843
8840
|
}
|
|
8844
8841
|
async getAllStakeholders() {
|
|
8845
|
-
const A = await
|
|
8842
|
+
const A = await N.getShadowGraphqlClient().query({
|
|
8846
8843
|
query: Hn,
|
|
8847
8844
|
errorPolicy: "all",
|
|
8848
8845
|
variables: {
|
|
@@ -8930,7 +8927,7 @@ class fe {
|
|
|
8930
8927
|
}
|
|
8931
8928
|
async updateBundle() {
|
|
8932
8929
|
var e;
|
|
8933
|
-
if (!((e = (await
|
|
8930
|
+
if (!((e = (await N.getShadowGraphqlClient().mutate({
|
|
8934
8931
|
mutation: vn,
|
|
8935
8932
|
variables: {
|
|
8936
8933
|
id: this.id,
|
|
@@ -8942,7 +8939,7 @@ class fe {
|
|
|
8942
8939
|
throw new Error("Bundle not found!");
|
|
8943
8940
|
}
|
|
8944
8941
|
async updateTransactionOrder() {
|
|
8945
|
-
await
|
|
8942
|
+
await N.getShadowGraphqlClient().mutate({
|
|
8946
8943
|
mutation: zn,
|
|
8947
8944
|
variables: {
|
|
8948
8945
|
id: this.id,
|
|
@@ -8973,7 +8970,7 @@ class fe {
|
|
|
8973
8970
|
);
|
|
8974
8971
|
}
|
|
8975
8972
|
}
|
|
8976
|
-
const ns =
|
|
8973
|
+
const ns = y`
|
|
8977
8974
|
mutation processFlowCreate($processFlowId: String!, $inputs: [String]!) {
|
|
8978
8975
|
processExecutionCreate(processFlowId: $processFlowId, inputs: $inputs) {
|
|
8979
8976
|
id
|
|
@@ -8990,7 +8987,7 @@ class ss {
|
|
|
8990
8987
|
*/
|
|
8991
8988
|
async execute(A, e, t) {
|
|
8992
8989
|
var B, l, d;
|
|
8993
|
-
const n = (l = (B = (await
|
|
8990
|
+
const n = (l = (B = (await N.getShadowGraphqlClient().mutate({
|
|
8994
8991
|
mutation: ns,
|
|
8995
8992
|
variables: {
|
|
8996
8993
|
processFlowId: A,
|
|
@@ -9000,14 +8997,14 @@ class ss {
|
|
|
9000
8997
|
if (!n)
|
|
9001
8998
|
throw new Error("Failed to create process execution.");
|
|
9002
8999
|
function s(E) {
|
|
9003
|
-
return new Promise((
|
|
9004
|
-
setTimeout(
|
|
9000
|
+
return new Promise((C) => {
|
|
9001
|
+
setTimeout(C, E);
|
|
9005
9002
|
});
|
|
9006
9003
|
}
|
|
9007
9004
|
let i = !1, o = 0, r, c;
|
|
9008
9005
|
for (; !i; ) {
|
|
9009
|
-
r = await
|
|
9010
|
-
query:
|
|
9006
|
+
r = await N.getShadowGraphqlClient().query({
|
|
9007
|
+
query: y`
|
|
9011
9008
|
query getProcessFlowExecution($ids: [String]!) {
|
|
9012
9009
|
processExecutions(ids: $ids) {
|
|
9013
9010
|
id
|
|
@@ -9037,8 +9034,8 @@ class ss {
|
|
|
9037
9034
|
break;
|
|
9038
9035
|
}
|
|
9039
9036
|
o += 1;
|
|
9040
|
-
const
|
|
9041
|
-
if (o >=
|
|
9037
|
+
const C = t != null && t.repeats ? t == null ? void 0 : t.repeats : 5;
|
|
9038
|
+
if (o >= C)
|
|
9042
9039
|
throw new Error("Maximum wait time exceeded for execution result.");
|
|
9043
9040
|
await s(t != null && t.sleepTime ? Math.max(t.sleepTime, 500) : 2e3);
|
|
9044
9041
|
}
|
|
@@ -9143,7 +9140,7 @@ class Et extends os {
|
|
|
9143
9140
|
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
9141
|
}
|
|
9145
9142
|
}
|
|
9146
|
-
const cs =
|
|
9143
|
+
const cs = y`
|
|
9147
9144
|
fragment RegionFields on Region {
|
|
9148
9145
|
width
|
|
9149
9146
|
top
|
|
@@ -9161,7 +9158,7 @@ const cs = M`
|
|
|
9161
9158
|
height
|
|
9162
9159
|
}
|
|
9163
9160
|
}
|
|
9164
|
-
`, gs =
|
|
9161
|
+
`, gs = y`
|
|
9165
9162
|
fragment LookAtAnimationFields on LookAtAnimation {
|
|
9166
9163
|
latDeg
|
|
9167
9164
|
lonDeg
|
|
@@ -9172,7 +9169,7 @@ const cs = M`
|
|
|
9172
9169
|
z
|
|
9173
9170
|
}
|
|
9174
9171
|
}
|
|
9175
|
-
`, ls =
|
|
9172
|
+
`, ls = y`
|
|
9176
9173
|
fragment RenderingPipelineConfigurationFields on RenderingPipelineConfiguration {
|
|
9177
9174
|
antiAliasing {
|
|
9178
9175
|
samples
|
|
@@ -9256,14 +9253,14 @@ const cs = M`
|
|
|
9256
9253
|
weight
|
|
9257
9254
|
}
|
|
9258
9255
|
}
|
|
9259
|
-
`, Bs =
|
|
9256
|
+
`, Bs = y`
|
|
9260
9257
|
fragment ModelAnimationFields on ModelAnimation {
|
|
9261
9258
|
from
|
|
9262
9259
|
to
|
|
9263
9260
|
loop
|
|
9264
9261
|
name
|
|
9265
9262
|
}
|
|
9266
|
-
`, ds = (g) =>
|
|
9263
|
+
`, ds = (g) => y`
|
|
9267
9264
|
${kA(g)}
|
|
9268
9265
|
${se}
|
|
9269
9266
|
${je}
|
|
@@ -9365,6 +9362,7 @@ const cs = M`
|
|
|
9365
9362
|
stepTitle
|
|
9366
9363
|
helpText
|
|
9367
9364
|
mandatory
|
|
9365
|
+
silent
|
|
9368
9366
|
conditions {
|
|
9369
9367
|
requiredVariantSelections
|
|
9370
9368
|
targetStepName
|
|
@@ -9658,7 +9656,7 @@ const cs = M`
|
|
|
9658
9656
|
}
|
|
9659
9657
|
}
|
|
9660
9658
|
}
|
|
9661
|
-
`, ws =
|
|
9659
|
+
`, ws = y`
|
|
9662
9660
|
query GetTransactionForPartner($id: String!) {
|
|
9663
9661
|
transactions(ids: [$id]) {
|
|
9664
9662
|
id
|
|
@@ -9675,7 +9673,7 @@ const cs = M`
|
|
|
9675
9673
|
}
|
|
9676
9674
|
}
|
|
9677
9675
|
}
|
|
9678
|
-
`, Es =
|
|
9676
|
+
`, Es = y`
|
|
9679
9677
|
${kA(!1)}
|
|
9680
9678
|
query GetWorkflowForTheme($id: String!) {
|
|
9681
9679
|
workflow(id: $id) {
|
|
@@ -9697,7 +9695,7 @@ const cs = M`
|
|
|
9697
9695
|
}
|
|
9698
9696
|
}
|
|
9699
9697
|
}
|
|
9700
|
-
`, hs =
|
|
9698
|
+
`, hs = y`
|
|
9701
9699
|
query GetCustomer($emailAddress: String!) {
|
|
9702
9700
|
customer(emailAddress: $emailAddress) {
|
|
9703
9701
|
id
|
|
@@ -9707,7 +9705,7 @@ const cs = M`
|
|
|
9707
9705
|
}
|
|
9708
9706
|
}
|
|
9709
9707
|
}
|
|
9710
|
-
`, Cs =
|
|
9708
|
+
`, Cs = y`
|
|
9711
9709
|
mutation CustomerCreate($details: CustomerDetailsInput!) {
|
|
9712
9710
|
customerCreate(details: $details) {
|
|
9713
9711
|
id
|
|
@@ -9717,7 +9715,7 @@ const cs = M`
|
|
|
9717
9715
|
}
|
|
9718
9716
|
}
|
|
9719
9717
|
}
|
|
9720
|
-
`, Qs =
|
|
9718
|
+
`, Qs = y`
|
|
9721
9719
|
mutation CustomerAuthenticate($loginToken: String!) {
|
|
9722
9720
|
customerAuthenticate(loginToken: $loginToken) {
|
|
9723
9721
|
id
|
|
@@ -9744,11 +9742,11 @@ const cs = M`
|
|
|
9744
9742
|
}
|
|
9745
9743
|
}
|
|
9746
9744
|
}
|
|
9747
|
-
`, us =
|
|
9745
|
+
`, us = y`
|
|
9748
9746
|
mutation CustomerGenerateVerificationCode($emailAddress: String!) {
|
|
9749
9747
|
customerGenerateVerificationCode(emailAddress: $emailAddress)
|
|
9750
9748
|
}
|
|
9751
|
-
`, ms =
|
|
9749
|
+
`, ms = y`
|
|
9752
9750
|
mutation CustomerVerifyCode($emailAddress: String!, $verificationCode: String!) {
|
|
9753
9751
|
customerVerifyCode(emailAddress: $emailAddress, verificationCode: $verificationCode) {
|
|
9754
9752
|
id
|
|
@@ -9780,13 +9778,13 @@ const cs = M`
|
|
|
9780
9778
|
var A;
|
|
9781
9779
|
for (const e in g.layouts) {
|
|
9782
9780
|
const t = g.layouts[e].elements.filter(
|
|
9783
|
-
(n) => n.type ===
|
|
9781
|
+
(n) => n.type === H.Illustration
|
|
9784
9782
|
);
|
|
9785
9783
|
for (let n = 0; n < t.length; ++n) {
|
|
9786
9784
|
const s = t[n];
|
|
9787
9785
|
s.src && s.svg && (s.cachedObjectURL = await FA(s.svg));
|
|
9788
9786
|
}
|
|
9789
|
-
const a = g.layouts[e].elements.filter((n) => n.type ===
|
|
9787
|
+
const a = g.layouts[e].elements.filter((n) => n.type === H.Textbox);
|
|
9790
9788
|
for (let n = 0; n < a.length; ++n) {
|
|
9791
9789
|
const s = a[n];
|
|
9792
9790
|
(A = s.fontData) != null && A.assetUrl && await te(s.fontData.assetUrl);
|
|
@@ -9794,7 +9792,7 @@ const cs = M`
|
|
|
9794
9792
|
}
|
|
9795
9793
|
}, ps = async (g, A) => {
|
|
9796
9794
|
var a;
|
|
9797
|
-
const e = await
|
|
9795
|
+
const e = await N.getShadowGraphqlClient().query({
|
|
9798
9796
|
query: ds(((a = A == null ? void 0 : A.assets) == null ? void 0 : a.metadata) || !1),
|
|
9799
9797
|
errorPolicy: "all",
|
|
9800
9798
|
fetchPolicy: "no-cache",
|
|
@@ -9807,8 +9805,8 @@ const cs = M`
|
|
|
9807
9805
|
return t.forEach((n) => {
|
|
9808
9806
|
n.steps.forEach((s) => {
|
|
9809
9807
|
var i, o, r;
|
|
9810
|
-
delete s.data.__typename, (i = s.option) != null && i.id && ((o = s.option.defaultVariant) != null && o.asset &&
|
|
9811
|
-
c.asset &&
|
|
9808
|
+
delete s.data.__typename, (i = s.option) != null && i.id && ((o = s.option.defaultVariant) != null && o.asset && T.cacheAsset(s.option.defaultVariant.asset), s.option.colorProfile && T.cacheAsset(s.option.colorProfile), (r = s.option.variants) == null || r.forEach((c) => {
|
|
9809
|
+
c.asset && T.cacheAsset(c.asset), c.displayImage && T.cacheAsset(c.displayImage), c.thumbnail && T.cacheAsset(c.thumbnail), c.material && T.cacheMaterial(c.material);
|
|
9812
9810
|
}), BA.set({ id: s.option.id }, Promise.resolve(s.option)));
|
|
9813
9811
|
});
|
|
9814
9812
|
}), t;
|
|
@@ -9846,12 +9844,12 @@ class fs {
|
|
|
9846
9844
|
constructor(A) {
|
|
9847
9845
|
this.updateTransactionState = async (e) => {
|
|
9848
9846
|
try {
|
|
9849
|
-
return
|
|
9847
|
+
return N.getShadowGraphqlClient().mutate({
|
|
9850
9848
|
...e,
|
|
9851
9849
|
mutation: la
|
|
9852
9850
|
});
|
|
9853
9851
|
} catch (t) {
|
|
9854
|
-
throw console.error(t), new
|
|
9852
|
+
throw console.error(t), new P("Critical - Unable to synchronize workflow state with server.");
|
|
9855
9853
|
}
|
|
9856
9854
|
}, this.initialized = !1, this.options = A, this.options.applicationKey && Lt(this.options.applicationKey);
|
|
9857
9855
|
}
|
|
@@ -9860,7 +9858,7 @@ class fs {
|
|
|
9860
9858
|
* and the Spiff Commerce platform.
|
|
9861
9859
|
*/
|
|
9862
9860
|
getAssetManager() {
|
|
9863
|
-
return
|
|
9861
|
+
return T;
|
|
9864
9862
|
}
|
|
9865
9863
|
getCurrencyCode() {
|
|
9866
9864
|
if (this.currencyCode === void 0)
|
|
@@ -9880,14 +9878,14 @@ class fs {
|
|
|
9880
9878
|
*/
|
|
9881
9879
|
async authenticateBundleFromLocalStorage(A) {
|
|
9882
9880
|
var a, n;
|
|
9883
|
-
const e =
|
|
9881
|
+
const e = x.getMap("bundleOwnerIds");
|
|
9884
9882
|
if (e != null && e.has(A)) {
|
|
9885
9883
|
const s = e.get(A);
|
|
9886
9884
|
return TA(s), Promise.resolve({ success: !0, stakeholderType: NA.Owner });
|
|
9887
9885
|
}
|
|
9888
|
-
const t =
|
|
9886
|
+
const t = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
9889
9887
|
if (t.has(A)) {
|
|
9890
|
-
const s = t.get(A), o = (
|
|
9888
|
+
const s = t.get(A), o = (x.getMap("partnerCustomerIds") || /* @__PURE__ */ new Map()).get(s);
|
|
9891
9889
|
if (o && await this.authenticateCustomerId(o)) {
|
|
9892
9890
|
const c = (n = (a = this.customer) == null ? void 0 : a.bundleStakeholders) == null ? void 0 : n.find(
|
|
9893
9891
|
(B) => {
|
|
@@ -9915,8 +9913,8 @@ class fs {
|
|
|
9915
9913
|
* @throws An error if the transaction is not found.
|
|
9916
9914
|
*/
|
|
9917
9915
|
async authenticateTransactionFromLocalStorage(A) {
|
|
9918
|
-
var c, B, l, d, E,
|
|
9919
|
-
const e =
|
|
9916
|
+
var c, B, l, d, E, C;
|
|
9917
|
+
const e = N.getShadowGraphqlClient(), t = await e.query({
|
|
9920
9918
|
query: ws,
|
|
9921
9919
|
errorPolicy: "all",
|
|
9922
9920
|
fetchPolicy: "no-cache",
|
|
@@ -9931,30 +9929,30 @@ class fs {
|
|
|
9931
9929
|
throw new Error(`Unable to read transaction: ${A}`);
|
|
9932
9930
|
if (a.isOrdered)
|
|
9933
9931
|
return Promise.resolve({ success: !1, transactionReadOnly: !0 });
|
|
9934
|
-
const s =
|
|
9932
|
+
const s = x.getMap("transactionOwnerIds");
|
|
9935
9933
|
if (s != null && s.has(A)) {
|
|
9936
9934
|
const w = s.get(A);
|
|
9937
9935
|
return eA(w), Promise.resolve({ success: !0, stakeholderType: NA.Owner });
|
|
9938
9936
|
}
|
|
9939
|
-
const i =
|
|
9937
|
+
const i = x.getMap("transactionCustomerIds");
|
|
9940
9938
|
if (i != null && i.has(A)) {
|
|
9941
9939
|
const w = i.get(A);
|
|
9942
9940
|
if (w && await this.authenticateCustomerId(w)) {
|
|
9943
|
-
const
|
|
9941
|
+
const h = ((d = (l = this.customer) == null ? void 0 : l.bundleStakeholders) == null ? void 0 : d.find(
|
|
9944
9942
|
(u) => {
|
|
9945
|
-
var
|
|
9946
|
-
return (p = (
|
|
9943
|
+
var f, p;
|
|
9944
|
+
return (p = (f = u.bundle) == null ? void 0 : f.transactions) == null ? void 0 : p.some((D) => D.id === A);
|
|
9947
9945
|
}
|
|
9948
|
-
)) || ((
|
|
9946
|
+
)) || ((C = (E = this.customer) == null ? void 0 : E.stakeholders) == null ? void 0 : C.find(
|
|
9949
9947
|
(u) => {
|
|
9950
|
-
var
|
|
9951
|
-
return ((
|
|
9948
|
+
var f;
|
|
9949
|
+
return ((f = u.transaction) == null ? void 0 : f.id) === A;
|
|
9952
9950
|
}
|
|
9953
9951
|
));
|
|
9954
|
-
if (
|
|
9952
|
+
if (h)
|
|
9955
9953
|
return Promise.resolve({
|
|
9956
9954
|
success: !0,
|
|
9957
|
-
stakeholderType:
|
|
9955
|
+
stakeholderType: h.type
|
|
9958
9956
|
});
|
|
9959
9957
|
}
|
|
9960
9958
|
}
|
|
@@ -9977,8 +9975,8 @@ class fs {
|
|
|
9977
9975
|
this.customer = void 0;
|
|
9978
9976
|
}
|
|
9979
9977
|
clearCustomerForTransaction(A) {
|
|
9980
|
-
const e =
|
|
9981
|
-
e != null && e.has(A) && (e.delete(A),
|
|
9978
|
+
const e = x.getMap("transactionCustomerIds");
|
|
9979
|
+
e != null && e.has(A) && (e.delete(A), x.setMap("transactionCustomerIds", e));
|
|
9982
9980
|
}
|
|
9983
9981
|
getStakeholderTypeForTransaction(A) {
|
|
9984
9982
|
var t, a;
|
|
@@ -9994,7 +9992,7 @@ class fs {
|
|
|
9994
9992
|
async getOrCreateCustomer(A) {
|
|
9995
9993
|
var s;
|
|
9996
9994
|
this.customer = void 0;
|
|
9997
|
-
const e =
|
|
9995
|
+
const e = N.getShadowGraphqlClient(), a = (await e.query({
|
|
9998
9996
|
query: hs,
|
|
9999
9997
|
errorPolicy: "all",
|
|
10000
9998
|
fetchPolicy: "no-cache",
|
|
@@ -10029,7 +10027,7 @@ class fs {
|
|
|
10029
10027
|
}
|
|
10030
10028
|
async authenticateCustomerId(A) {
|
|
10031
10029
|
var i;
|
|
10032
|
-
const e =
|
|
10030
|
+
const e = N.getShadowGraphqlClient(), t = x.getMap("customerTokens");
|
|
10033
10031
|
if (!(t != null && t.has(A)))
|
|
10034
10032
|
return !1;
|
|
10035
10033
|
const a = t.get(A);
|
|
@@ -10050,7 +10048,7 @@ class fs {
|
|
|
10050
10048
|
* @param emailAddress The email address to generate a verification code for. The user will be sent an email with the verification code.
|
|
10051
10049
|
*/
|
|
10052
10050
|
async generateVerificationCode(A) {
|
|
10053
|
-
await
|
|
10051
|
+
await N.getShadowGraphqlClient().mutate({
|
|
10054
10052
|
mutation: us,
|
|
10055
10053
|
variables: {
|
|
10056
10054
|
emailAddress: A
|
|
@@ -10065,7 +10063,7 @@ class fs {
|
|
|
10065
10063
|
*/
|
|
10066
10064
|
async verifyCode(A, e) {
|
|
10067
10065
|
var n, s;
|
|
10068
|
-
const a = (n = (await
|
|
10066
|
+
const a = (n = (await N.getShadowGraphqlClient().mutate({
|
|
10069
10067
|
mutation: ms,
|
|
10070
10068
|
errorPolicy: "all",
|
|
10071
10069
|
fetchPolicy: "no-cache",
|
|
@@ -10077,8 +10075,8 @@ class fs {
|
|
|
10077
10075
|
if (a != null && a.loginToken) {
|
|
10078
10076
|
if (!((s = a.partner) != null && s.id))
|
|
10079
10077
|
throw new Error(`Unable to find customer: ${A}`);
|
|
10080
|
-
const i =
|
|
10081
|
-
return i.set(a.id, a.loginToken),
|
|
10078
|
+
const i = x.getMap("customerTokens") || /* @__PURE__ */ new Map();
|
|
10079
|
+
return i.set(a.id, a.loginToken), x.setMap("customerTokens", i), this.storeCustomer(a), Qe(a.loginToken), this.customer = {
|
|
10082
10080
|
...a,
|
|
10083
10081
|
loginToken: void 0
|
|
10084
10082
|
}, !0;
|
|
@@ -10091,7 +10089,7 @@ class fs {
|
|
|
10091
10089
|
*/
|
|
10092
10090
|
async getNewBundle(A) {
|
|
10093
10091
|
var s;
|
|
10094
|
-
const t = (s = (await
|
|
10092
|
+
const t = (s = (await N.getShadowGraphqlClient().mutate({
|
|
10095
10093
|
mutation: Gn,
|
|
10096
10094
|
variables: {
|
|
10097
10095
|
collectionId: A
|
|
@@ -10100,10 +10098,10 @@ class fs {
|
|
|
10100
10098
|
})).data) == null ? void 0 : s.bundleCreate;
|
|
10101
10099
|
if (!(t != null && t.id))
|
|
10102
10100
|
throw new Error("Unable to create bundle");
|
|
10103
|
-
const a =
|
|
10104
|
-
a.set(t.id, t.partner.id),
|
|
10105
|
-
const n =
|
|
10106
|
-
return n.set(t.id, t.bundleOwnerId),
|
|
10101
|
+
const a = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10102
|
+
a.set(t.id, t.partner.id), x.setMap("bundlePartnerIds", a), TA(t.bundleOwnerId);
|
|
10103
|
+
const n = x.getMap("bundleOwnerIds") || /* @__PURE__ */ new Map();
|
|
10104
|
+
return n.set(t.id, t.bundleOwnerId), x.setMap("bundleOwnerIds", n), new fe(this, t);
|
|
10107
10105
|
}
|
|
10108
10106
|
/**
|
|
10109
10107
|
* Retrieves an existing bundle from the API, by id.
|
|
@@ -10114,9 +10112,9 @@ class fs {
|
|
|
10114
10112
|
*/
|
|
10115
10113
|
async getExistingBundle(A, e, t) {
|
|
10116
10114
|
var c, B, l, d;
|
|
10117
|
-
const a =
|
|
10115
|
+
const a = x.getMap("bundleOwnerIds"), n = a == null ? void 0 : a.get(A);
|
|
10118
10116
|
n && TA(n);
|
|
10119
|
-
const s = await
|
|
10117
|
+
const s = await N.getShadowGraphqlClient().query({
|
|
10120
10118
|
query: Pn,
|
|
10121
10119
|
variables: {
|
|
10122
10120
|
id: A
|
|
@@ -10125,8 +10123,8 @@ class fs {
|
|
|
10125
10123
|
});
|
|
10126
10124
|
if (!((c = s.data) != null && c.bundles) || ((B = s.data) == null ? void 0 : B.bundles.length) === 0 || !((l = s.data) != null && l.bundles[0]))
|
|
10127
10125
|
throw new Error(`Unable to find bundle: ${A}`);
|
|
10128
|
-
const i = (d = s.data) == null ? void 0 : d.bundles[0], o =
|
|
10129
|
-
o.set(i.id, i.partner.id),
|
|
10126
|
+
const i = (d = s.data) == null ? void 0 : d.bundles[0], o = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10127
|
+
o.set(i.id, i.partner.id), x.setMap("bundlePartnerIds", o);
|
|
10130
10128
|
const r = new fe(this, i, e, t);
|
|
10131
10129
|
return await r.getInitializationPromise(), r;
|
|
10132
10130
|
}
|
|
@@ -10138,7 +10136,7 @@ class fs {
|
|
|
10138
10136
|
var n;
|
|
10139
10137
|
if (!this.customer)
|
|
10140
10138
|
throw new Error("Customer not authenticated.");
|
|
10141
|
-
const A = await
|
|
10139
|
+
const A = await N.getShadowGraphqlClient().query({
|
|
10142
10140
|
query: Un,
|
|
10143
10141
|
variables: {
|
|
10144
10142
|
id: this.customer.id
|
|
@@ -10147,11 +10145,11 @@ class fs {
|
|
|
10147
10145
|
});
|
|
10148
10146
|
if (!((n = A.data) != null && n.customers) || A.data.customers.length === 0)
|
|
10149
10147
|
throw new Error("Unable to find customer.");
|
|
10150
|
-
const t = A.data.customers[0].bundleStakeholders || [], a =
|
|
10148
|
+
const t = A.data.customers[0].bundleStakeholders || [], a = x.getMap("bundlePartnerIds") || /* @__PURE__ */ new Map();
|
|
10151
10149
|
return t.forEach((s) => {
|
|
10152
10150
|
var i, o;
|
|
10153
10151
|
(i = s.bundle) != null && i.id && ((o = s.bundle.partner) != null && o.id) && a.set(s.bundle.id, s.bundle.partner.id);
|
|
10154
|
-
}),
|
|
10152
|
+
}), x.setMap("bundlePartnerIds", a), t;
|
|
10155
10153
|
}
|
|
10156
10154
|
/**
|
|
10157
10155
|
* Creates a new instance of WorkflowExperience. A high level wrapper for workflows.
|
|
@@ -10162,40 +10160,40 @@ class fs {
|
|
|
10162
10160
|
* @returns A workflow experience configured as requested.
|
|
10163
10161
|
*/
|
|
10164
10162
|
async getWorkflowExperience(A, e, t, a) {
|
|
10165
|
-
var B, l, d, E;
|
|
10163
|
+
var B, l, d, E, C;
|
|
10166
10164
|
if (!a)
|
|
10167
10165
|
return await this.getWorkflowExperienceDeprecated(A, e, t);
|
|
10168
10166
|
const n = async () => {
|
|
10169
|
-
var
|
|
10170
|
-
const
|
|
10167
|
+
var Q, h;
|
|
10168
|
+
const w = N.getShadowGraphqlClient();
|
|
10171
10169
|
if (a.type === "transaction") {
|
|
10172
|
-
const { transactionId:
|
|
10170
|
+
const { transactionId: u, readOnly: f } = a, p = await w.query({
|
|
10173
10171
|
query: EA,
|
|
10174
10172
|
variables: {
|
|
10175
|
-
ids: [
|
|
10173
|
+
ids: [u]
|
|
10176
10174
|
},
|
|
10177
10175
|
errorPolicy: "all",
|
|
10178
10176
|
fetchPolicy: "no-cache"
|
|
10179
10177
|
});
|
|
10180
|
-
if (!((
|
|
10181
|
-
throw new
|
|
10182
|
-
const
|
|
10183
|
-
if (!
|
|
10184
|
-
throw new
|
|
10185
|
-
const
|
|
10186
|
-
if (!
|
|
10187
|
-
throw new
|
|
10188
|
-
return { transaction:
|
|
10178
|
+
if (!((Q = p.data) != null && Q.transactions) || p.data.transactions.length === 0)
|
|
10179
|
+
throw new P("Existing transaction not found.");
|
|
10180
|
+
const D = (h = p.data) == null ? void 0 : h.transactions[0];
|
|
10181
|
+
if (!D.workflowId)
|
|
10182
|
+
throw new P("Existing transaction has no workflow ID.");
|
|
10183
|
+
const m = await pA(D.workflowId);
|
|
10184
|
+
if (!D.product)
|
|
10185
|
+
throw new P("Failed to load transaction, product not available.");
|
|
10186
|
+
return { transaction: D, workflow: m, readOnly: f };
|
|
10189
10187
|
}
|
|
10190
10188
|
if (a.type === "integration" || a.type === "external") {
|
|
10191
|
-
const
|
|
10192
|
-
const
|
|
10189
|
+
const u = async () => {
|
|
10190
|
+
const m = a.type === "integration" ? { integrationProductId: a.integrationProductId } : {
|
|
10193
10191
|
externalIntegrationId: a.externalIntegrationId,
|
|
10194
10192
|
externalProductId: a.externalProductId
|
|
10195
|
-
},
|
|
10193
|
+
}, M = await w.mutate({
|
|
10196
10194
|
mutation: ue,
|
|
10197
10195
|
variables: {
|
|
10198
|
-
...
|
|
10196
|
+
...m,
|
|
10199
10197
|
bulk: a.bulk,
|
|
10200
10198
|
workflowId: a.workflowId,
|
|
10201
10199
|
claim: !0
|
|
@@ -10205,37 +10203,38 @@ class fs {
|
|
|
10205
10203
|
// TODO: this should be changed to required once the API is updated. Should this also be moved to server.ts?
|
|
10206
10204
|
context: this.options.applicationKey ? { headers: { "X-Application-Key": this.options.applicationKey } } : void 0
|
|
10207
10205
|
});
|
|
10208
|
-
if (!
|
|
10209
|
-
throw new
|
|
10210
|
-
const
|
|
10211
|
-
if (!
|
|
10212
|
-
throw new
|
|
10213
|
-
return
|
|
10214
|
-
},
|
|
10215
|
-
return { transaction:
|
|
10206
|
+
if (!M.data || !M.data.transactionCreate)
|
|
10207
|
+
throw new P("Failed to create transaction!");
|
|
10208
|
+
const Y = M.data.transactionCreate;
|
|
10209
|
+
if (!Y.product)
|
|
10210
|
+
throw new P("Failed to create transaction, product not available.");
|
|
10211
|
+
return Y;
|
|
10212
|
+
}, f = pA(a.workflowId, a == null ? void 0 : a.graphql), [p, D] = await Promise.all([u(), f]);
|
|
10213
|
+
return { transaction: p, workflow: D };
|
|
10216
10214
|
}
|
|
10217
|
-
throw new
|
|
10215
|
+
throw new P("No workflow ID provided.");
|
|
10218
10216
|
}, { transaction: s, workflow: i, readOnly: o } = await n();
|
|
10219
10217
|
this.currencyCode = (B = s.product.partner) == null ? void 0 : B.currencyCode;
|
|
10220
10218
|
const r = {
|
|
10221
10219
|
product: s.product,
|
|
10222
10220
|
transaction: s,
|
|
10223
10221
|
layouts: [],
|
|
10222
|
+
singleVariantsRenderable: (l = a == null ? void 0 : a.workflowConfiguration) == null ? void 0 : l.singleVariantsRenderable,
|
|
10224
10223
|
stateMutationFunc: o ? async () => {
|
|
10225
10224
|
throw new v("State mutation is forbidden in read only mode!");
|
|
10226
|
-
} : async (
|
|
10227
|
-
const
|
|
10228
|
-
return this.updateTransactionState({ ...
|
|
10225
|
+
} : async (w) => {
|
|
10226
|
+
const h = (x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(s.id) || void 0;
|
|
10227
|
+
return this.updateTransactionState({ ...w, context: { transactionOwnerId: h } });
|
|
10229
10228
|
},
|
|
10230
10229
|
readOnly: o,
|
|
10231
10230
|
workflow: i
|
|
10232
10231
|
};
|
|
10233
10232
|
if (a.type === "transaction" && s.workflowState) {
|
|
10234
|
-
const
|
|
10235
|
-
r.layouts = Object.values(
|
|
10233
|
+
const w = JSON.parse(s.workflowState);
|
|
10234
|
+
r.layouts = Object.values(w.layouts).map((Q) => Q.layout), await AA(w), await tA(w), r.reloadedState = w;
|
|
10236
10235
|
} else if (!o && a.workflowState) {
|
|
10237
|
-
const
|
|
10238
|
-
r.layouts = Object.values(
|
|
10236
|
+
const w = JSON.parse(a.workflowState);
|
|
10237
|
+
r.layouts = Object.values(w.layouts).map((Q) => Q.layout), await AA(w), await tA(w), r.reloadedState = w;
|
|
10239
10238
|
} else
|
|
10240
10239
|
r.layouts = KA(
|
|
10241
10240
|
r.transaction,
|
|
@@ -10243,18 +10242,18 @@ class fs {
|
|
|
10243
10242
|
);
|
|
10244
10243
|
if (r.renderableContextService = new QA(
|
|
10245
10244
|
r.layouts
|
|
10246
|
-
), a.previewService ? (r.previewService = a.previewService, (
|
|
10245
|
+
), a.previewService ? (r.previewService = a.previewService, (d = r.product) != null && d.modelUrl && (r.modelContainer = r.previewService.loadModel({
|
|
10247
10246
|
model: r.product.modelUrl,
|
|
10248
10247
|
contextService: r.renderableContextService
|
|
10249
|
-
}))) : (r.previewService = t && t(i), (
|
|
10248
|
+
}))) : (r.previewService = t && t(i), (E = r.product) != null && E.modelUrl && (r.modelContainer = (C = r.previewService) == null ? void 0 : C.loadModel({
|
|
10250
10249
|
model: r.product.modelUrl,
|
|
10251
10250
|
contextService: r.renderableContextService
|
|
10252
10251
|
}))), a.type !== "transaction") {
|
|
10253
|
-
const
|
|
10254
|
-
|
|
10252
|
+
const w = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map();
|
|
10253
|
+
w.set(s.id, s.transactionOwnerId), eA(s.transactionOwnerId || ""), x.setMap("transactionOwnerIds", w);
|
|
10255
10254
|
} else {
|
|
10256
|
-
const
|
|
10257
|
-
|
|
10255
|
+
const Q = (x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map()).get(s.id);
|
|
10256
|
+
Q && eA(Q), r.isReloadedTransaction = !0;
|
|
10258
10257
|
}
|
|
10259
10258
|
this.initialized = !0, this.experienceOptions = r;
|
|
10260
10259
|
const c = new CA(this, r);
|
|
@@ -10269,39 +10268,39 @@ class fs {
|
|
|
10269
10268
|
*/
|
|
10270
10269
|
async getWorkflowExperiences(A, e) {
|
|
10271
10270
|
if (A.length === 0)
|
|
10272
|
-
throw new
|
|
10273
|
-
const t =
|
|
10274
|
-
(
|
|
10271
|
+
throw new P("No options provided!");
|
|
10272
|
+
const t = N.getShadowGraphqlClient(), a = A.map((h, u) => ({ option: h, index: u })), n = a.filter((h) => h.option.type === "transaction"), s = a.filter(
|
|
10273
|
+
(h) => h.option.type === "integration" || h.option.type === "external"
|
|
10275
10274
|
), i = async () => {
|
|
10276
|
-
var p,
|
|
10275
|
+
var p, D;
|
|
10277
10276
|
if (n.length === 0)
|
|
10278
10277
|
return [];
|
|
10279
|
-
const
|
|
10278
|
+
const h = n.map((m) => m.option.transactionId), u = await t.query({
|
|
10280
10279
|
query: EA,
|
|
10281
10280
|
variables: {
|
|
10282
|
-
ids:
|
|
10281
|
+
ids: h
|
|
10283
10282
|
},
|
|
10284
10283
|
errorPolicy: "all",
|
|
10285
10284
|
fetchPolicy: "no-cache"
|
|
10286
|
-
}),
|
|
10287
|
-
if (
|
|
10288
|
-
const m = ((
|
|
10289
|
-
throw new
|
|
10285
|
+
}), f = u.data.transactions;
|
|
10286
|
+
if (f.length !== n.length) {
|
|
10287
|
+
const m = ((D = (p = u.errors) == null ? void 0 : p[0]) == null ? void 0 : D.message) || "Unknown error";
|
|
10288
|
+
throw new P(`Not all transactions were found: ${m}`);
|
|
10290
10289
|
}
|
|
10291
|
-
return
|
|
10290
|
+
return f.map((m, M) => {
|
|
10292
10291
|
var Y;
|
|
10293
10292
|
return {
|
|
10294
10293
|
transaction: m,
|
|
10295
10294
|
workflowId: m.workflowId,
|
|
10296
10295
|
readOnly: ((Y = n.find((F) => F.option.transactionId === m.id)) == null ? void 0 : Y.option.readOnly) ?? !1,
|
|
10297
|
-
index: n[
|
|
10296
|
+
index: n[M].index
|
|
10298
10297
|
};
|
|
10299
10298
|
});
|
|
10300
10299
|
}, o = async () => {
|
|
10301
|
-
var
|
|
10300
|
+
var f, p, D;
|
|
10302
10301
|
if (s.length === 0)
|
|
10303
10302
|
return [];
|
|
10304
|
-
const
|
|
10303
|
+
const h = await t.mutate({
|
|
10305
10304
|
mutation: ca,
|
|
10306
10305
|
variables: {
|
|
10307
10306
|
inputs: s.map((m) => ({
|
|
@@ -10315,37 +10314,39 @@ class fs {
|
|
|
10315
10314
|
},
|
|
10316
10315
|
errorPolicy: "all",
|
|
10317
10316
|
fetchPolicy: "no-cache"
|
|
10318
|
-
}), u = (
|
|
10317
|
+
}), u = (f = h.data) == null ? void 0 : f.transactionCreateMany;
|
|
10319
10318
|
if (!u || u.length === 0) {
|
|
10320
|
-
const m = ((
|
|
10321
|
-
throw new
|
|
10319
|
+
const m = ((D = (p = h.errors) == null ? void 0 : p[0]) == null ? void 0 : D.message) || "Unknown error";
|
|
10320
|
+
throw new P(`Failed to create transactions: ${m}`);
|
|
10322
10321
|
}
|
|
10323
|
-
return u.map((m,
|
|
10322
|
+
return u.map((m, M) => ({
|
|
10324
10323
|
transaction: m,
|
|
10325
10324
|
workflowId: m.workflowId,
|
|
10326
10325
|
readOnly: !1,
|
|
10327
|
-
index: s[
|
|
10326
|
+
index: s[M].index
|
|
10328
10327
|
}));
|
|
10329
|
-
}, r = (await Promise.all([i(), o()])).flat(), c = [...new Set(r.map((
|
|
10330
|
-
|
|
10328
|
+
}, r = (await Promise.all([i(), o()])).flat(), c = [...new Set(r.map((h) => h.workflowId))], B = await ht(c, e), l = new Map(B.map((h) => [h.id, h])), d = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), E = r.map(async (h) => {
|
|
10329
|
+
var U;
|
|
10330
|
+
const { transaction: u, workflowId: f, readOnly: p, index: D } = h, m = l.get(f), M = A[D];
|
|
10331
10331
|
!d.get(u.id) && u.transactionOwnerId && d.set(u.id, u.transactionOwnerId);
|
|
10332
10332
|
const Y = d.get(u.id) || void 0, F = {
|
|
10333
10333
|
product: u.product,
|
|
10334
10334
|
transaction: u,
|
|
10335
10335
|
layouts: [],
|
|
10336
|
+
singleVariantsRenderable: (U = M == null ? void 0 : M.workflowConfiguration) == null ? void 0 : U.singleVariantsRenderable,
|
|
10336
10337
|
stateMutationFunc: p ? async () => {
|
|
10337
10338
|
throw new v("State mutation is forbidden in read only mode!");
|
|
10338
|
-
} : async (
|
|
10339
|
+
} : async (S) => this.updateTransactionState({ ...S, context: { transactionOwnerId: Y } }),
|
|
10339
10340
|
readOnly: p,
|
|
10340
10341
|
workflow: m,
|
|
10341
|
-
isReloadedTransaction:
|
|
10342
|
+
isReloadedTransaction: M.type === "transaction"
|
|
10342
10343
|
};
|
|
10343
|
-
if (
|
|
10344
|
-
const
|
|
10345
|
-
F.layouts = Object.values(
|
|
10346
|
-
} else if (!p &&
|
|
10347
|
-
const
|
|
10348
|
-
F.layouts = Object.values(
|
|
10344
|
+
if (M.type === "transaction" && u.workflowState) {
|
|
10345
|
+
const S = JSON.parse(u.workflowState);
|
|
10346
|
+
F.layouts = Object.values(S.layouts).map((b) => b.layout), await AA(S), await tA(S), F.reloadedState = S;
|
|
10347
|
+
} else if (!p && M.workflowState) {
|
|
10348
|
+
const S = JSON.parse(M.workflowState);
|
|
10349
|
+
F.layouts = Object.values(S.layouts).map((b) => b.layout), await AA(S), await tA(S), F.reloadedState = S;
|
|
10349
10350
|
} else
|
|
10350
10351
|
F.layouts = KA(
|
|
10351
10352
|
F.transaction,
|
|
@@ -10353,12 +10354,12 @@ class fs {
|
|
|
10353
10354
|
);
|
|
10354
10355
|
return F.renderableContextService = new QA(
|
|
10355
10356
|
F.layouts
|
|
10356
|
-
), this.initialized = !0, this.experienceOptions = F, { experienceOptions: F, index:
|
|
10357
|
+
), this.initialized = !0, this.experienceOptions = F, { experienceOptions: F, index: D, options: M };
|
|
10357
10358
|
});
|
|
10358
|
-
|
|
10359
|
-
const Q = (await Promise.all(E)).sort((
|
|
10360
|
-
const { experienceOptions: u, options:
|
|
10361
|
-
return await p.getWorkflowManager().getInitializationPromise(),
|
|
10359
|
+
x.setMap("transactionOwnerIds", d);
|
|
10360
|
+
const Q = (await Promise.all(E)).sort((h, u) => h.index - u.index).map(async (h) => {
|
|
10361
|
+
const { experienceOptions: u, options: f } = h, p = new CA(this, u);
|
|
10362
|
+
return await p.getWorkflowManager().getInitializationPromise(), f.type !== "transaction" && this.customer && await p.attachCustomerDetails({ email: this.customer.emailAddress }), p;
|
|
10362
10363
|
});
|
|
10363
10364
|
return await Promise.all(Q);
|
|
10364
10365
|
}
|
|
@@ -10370,8 +10371,8 @@ class fs {
|
|
|
10370
10371
|
async initFromIntegrationProduct(A) {
|
|
10371
10372
|
var s;
|
|
10372
10373
|
if (A === "")
|
|
10373
|
-
throw new
|
|
10374
|
-
const t = await
|
|
10374
|
+
throw new P("No integration product ID provided.");
|
|
10375
|
+
const t = await N.getShadowGraphqlClient().mutate({
|
|
10375
10376
|
mutation: ue,
|
|
10376
10377
|
variables: {
|
|
10377
10378
|
integrationProductId: A,
|
|
@@ -10384,13 +10385,13 @@ class fs {
|
|
|
10384
10385
|
context: this.options.applicationKey ? { headers: { "X-Application-Key": this.options.applicationKey } } : void 0
|
|
10385
10386
|
});
|
|
10386
10387
|
if (!t.data || !t.data.transactionCreate)
|
|
10387
|
-
throw new
|
|
10388
|
+
throw new P("Failed to create transaction!");
|
|
10388
10389
|
const a = t.data.transactionCreate;
|
|
10389
10390
|
if (!a.product)
|
|
10390
|
-
throw new
|
|
10391
|
+
throw new P("Failed to create transaction, product not available.");
|
|
10391
10392
|
this.currencyCode = (s = a.product.partner) == null ? void 0 : s.currencyCode;
|
|
10392
|
-
const n =
|
|
10393
|
-
n.set(a.id, a.transactionOwnerId), eA(a.transactionOwnerId || ""),
|
|
10393
|
+
const n = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map();
|
|
10394
|
+
n.set(a.id, a.transactionOwnerId), eA(a.transactionOwnerId || ""), x.setMap("transactionOwnerIds", n), this.experienceOptions = {
|
|
10394
10395
|
product: a.product,
|
|
10395
10396
|
transaction: a,
|
|
10396
10397
|
layouts: [],
|
|
@@ -10406,8 +10407,8 @@ class fs {
|
|
|
10406
10407
|
async initFromTransaction(A, e = !1) {
|
|
10407
10408
|
var i, o, r, c;
|
|
10408
10409
|
if (A === "")
|
|
10409
|
-
throw new
|
|
10410
|
-
const t =
|
|
10410
|
+
throw new P("No transaction ID provided.");
|
|
10411
|
+
const t = N.getShadowGraphqlClient(), a = async () => {
|
|
10411
10412
|
var d, E;
|
|
10412
10413
|
const l = (d = (await t.query({
|
|
10413
10414
|
query: EA,
|
|
@@ -10416,9 +10417,9 @@ class fs {
|
|
|
10416
10417
|
errorPolicy: "all"
|
|
10417
10418
|
})).data) == null ? void 0 : d.transactions[0];
|
|
10418
10419
|
if (!l)
|
|
10419
|
-
throw new
|
|
10420
|
+
throw new P("Failed to read transaction.");
|
|
10420
10421
|
if (!l.product)
|
|
10421
|
-
throw new
|
|
10422
|
+
throw new P("Failed to load transaction, product not available.");
|
|
10422
10423
|
this.currencyCode = (E = l.product.partner) == null ? void 0 : E.currencyCode, this.experienceOptions = {
|
|
10423
10424
|
product: l.product,
|
|
10424
10425
|
transaction: l,
|
|
@@ -10431,7 +10432,7 @@ class fs {
|
|
|
10431
10432
|
};
|
|
10432
10433
|
if (e)
|
|
10433
10434
|
return await a();
|
|
10434
|
-
const n =
|
|
10435
|
+
const n = x.getMap("transactionOwnerIds") || /* @__PURE__ */ new Map(), s = n.get(A);
|
|
10435
10436
|
if (s) {
|
|
10436
10437
|
eA(s);
|
|
10437
10438
|
const l = (i = (await t.query({
|
|
@@ -10442,9 +10443,9 @@ class fs {
|
|
|
10442
10443
|
errorPolicy: "all"
|
|
10443
10444
|
})).data) == null ? void 0 : i.transactions[0];
|
|
10444
10445
|
if (!l)
|
|
10445
|
-
throw new
|
|
10446
|
+
throw new P("Failed to read transaction.");
|
|
10446
10447
|
if (!l.product)
|
|
10447
|
-
throw new
|
|
10448
|
+
throw new P("Failed to load transaction, product not available.");
|
|
10448
10449
|
this.currencyCode = (o = l.product.partner) == null ? void 0 : o.currencyCode, this.experienceOptions = {
|
|
10449
10450
|
product: l.product,
|
|
10450
10451
|
transaction: l,
|
|
@@ -10461,10 +10462,10 @@ class fs {
|
|
|
10461
10462
|
errorPolicy: "all"
|
|
10462
10463
|
})).data) == null ? void 0 : r.transactionClaim;
|
|
10463
10464
|
if (!l)
|
|
10464
|
-
throw new
|
|
10465
|
+
throw new P("Failed to read transaction.");
|
|
10465
10466
|
if (!l.product)
|
|
10466
|
-
throw new
|
|
10467
|
-
this.currencyCode = (c = l.product.partner) == null ? void 0 : c.currencyCode, l.transactionOwnerId && (n.set(l.id, l.transactionOwnerId), eA(l.transactionOwnerId),
|
|
10467
|
+
throw new P("Failed to load transaction, product not available.");
|
|
10468
|
+
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 = {
|
|
10468
10469
|
product: l.product,
|
|
10469
10470
|
transaction: l,
|
|
10470
10471
|
layouts: [],
|
|
@@ -10472,7 +10473,7 @@ class fs {
|
|
|
10472
10473
|
readOnly: e
|
|
10473
10474
|
}, this.initialized = !0;
|
|
10474
10475
|
} catch {
|
|
10475
|
-
throw new
|
|
10476
|
+
throw new P("Attempted to access a transaction that isn't available.");
|
|
10476
10477
|
}
|
|
10477
10478
|
}
|
|
10478
10479
|
/**
|
|
@@ -10481,7 +10482,7 @@ class fs {
|
|
|
10481
10482
|
async getWorkflowExperienceDeprecated(A, e, t) {
|
|
10482
10483
|
var a, n, s, i;
|
|
10483
10484
|
if (!this.initialized || !this.experienceOptions)
|
|
10484
|
-
throw new
|
|
10485
|
+
throw new P("Cannot launch experience: Not initialized.");
|
|
10485
10486
|
if (this.experienceOptions.transaction.workflowId) {
|
|
10486
10487
|
const o = await pA(this.experienceOptions.transaction.workflowId);
|
|
10487
10488
|
if (this.experienceOptions.workflow = o, this.experienceOptions.transaction.workflowState) {
|
|
@@ -10496,7 +10497,7 @@ class fs {
|
|
|
10496
10497
|
return await r.getWorkflowManager().getInitializationPromise(), r;
|
|
10497
10498
|
}
|
|
10498
10499
|
if (A) {
|
|
10499
|
-
const o =
|
|
10500
|
+
const o = N.getShadowGraphqlClient().mutate({
|
|
10500
10501
|
mutation: Ba,
|
|
10501
10502
|
variables: {
|
|
10502
10503
|
workflowId: A,
|
|
@@ -10518,7 +10519,7 @@ class fs {
|
|
|
10518
10519
|
const c = new CA(this, this.experienceOptions);
|
|
10519
10520
|
return await c.getWorkflowManager().getInitializationPromise(), c;
|
|
10520
10521
|
}
|
|
10521
|
-
throw new
|
|
10522
|
+
throw new P("No workflow ID provided.");
|
|
10522
10523
|
}
|
|
10523
10524
|
/**
|
|
10524
10525
|
* @deprecated The value this returns will be changed whenever `getWorkflowExperience()` is called. Use `workflowExperience.getWorkflowManager().getPreviewService()` instead.
|
|
@@ -10534,7 +10535,7 @@ class fs {
|
|
|
10534
10535
|
*/
|
|
10535
10536
|
getProduct() {
|
|
10536
10537
|
if (!this.initialized || !this.experienceOptions)
|
|
10537
|
-
throw new
|
|
10538
|
+
throw new P("Cannot get product: Not initialized.");
|
|
10538
10539
|
return this.experienceOptions.product;
|
|
10539
10540
|
}
|
|
10540
10541
|
/**
|
|
@@ -10543,12 +10544,12 @@ class fs {
|
|
|
10543
10544
|
*/
|
|
10544
10545
|
getTransaction() {
|
|
10545
10546
|
if (!this.initialized || !this.experienceOptions)
|
|
10546
|
-
throw new
|
|
10547
|
+
throw new P("Cannot get transaction: Not initialized.");
|
|
10547
10548
|
return this.experienceOptions.transaction;
|
|
10548
10549
|
}
|
|
10549
10550
|
storeCustomer(A) {
|
|
10550
|
-
const e =
|
|
10551
|
-
e.set(A.partner.id, A.id),
|
|
10551
|
+
const e = x.getMap("partnerCustomerIds") || /* @__PURE__ */ new Map();
|
|
10552
|
+
e.set(A.partner.id, A.id), x.setMap("partnerCustomerIds", e);
|
|
10552
10553
|
}
|
|
10553
10554
|
}
|
|
10554
10555
|
class ks {
|
|
@@ -10777,7 +10778,7 @@ export {
|
|
|
10777
10778
|
nn as InformationStepHandle,
|
|
10778
10779
|
ei as LayoutElementFactory,
|
|
10779
10780
|
ti as LayoutElementType,
|
|
10780
|
-
|
|
10781
|
+
L as LayoutNotFoundError,
|
|
10781
10782
|
$a as MaterialStepHandle,
|
|
10782
10783
|
SA as MisconfigurationError,
|
|
10783
10784
|
ks as MockWorkflowManager,
|
|
@@ -10812,7 +10813,7 @@ export {
|
|
|
10812
10813
|
gi as UnitOfMeasurement,
|
|
10813
10814
|
X as Variant,
|
|
10814
10815
|
CA as WorkflowExperienceImpl,
|
|
10815
|
-
|
|
10816
|
+
T as assetService,
|
|
10816
10817
|
Bn as createDesign,
|
|
10817
10818
|
li as dataUrlFromExternalUrl,
|
|
10818
10819
|
zA as designService,
|
|
@@ -10833,7 +10834,7 @@ export {
|
|
|
10833
10834
|
mi as getSvgElement,
|
|
10834
10835
|
pA as getWorkflow,
|
|
10835
10836
|
ht as getWorkflows,
|
|
10836
|
-
|
|
10837
|
+
N as graphQlManager,
|
|
10837
10838
|
fA as illustrationStepService,
|
|
10838
10839
|
pi as loadFont,
|
|
10839
10840
|
$e as materialStepService,
|
|
@@ -10841,7 +10842,7 @@ export {
|
|
|
10841
10842
|
Ya as moduleStepService,
|
|
10842
10843
|
z as optionService,
|
|
10843
10844
|
Ii as patternImageDataCache,
|
|
10844
|
-
|
|
10845
|
+
x as persistenceService,
|
|
10845
10846
|
At as pictureStepService,
|
|
10846
10847
|
et as questionStepService,
|
|
10847
10848
|
Di as registerFetchImplementation,
|