@spiffcommerce/core 21.10.0-alpha.3 → 21.10.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +7 -9
- package/dist/index.umd.cjs +2 -2
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2318,7 +2318,7 @@ interface Partner {
|
|
|
2318
2318
|
activeAddons?: AddonHandle[];
|
|
2319
2319
|
}
|
|
2320
2320
|
declare enum AddonHandle {
|
|
2321
|
-
BackgroundRemover = "
|
|
2321
|
+
BackgroundRemover = "BackgroundRemover",
|
|
2322
2322
|
ConversionAccelerator = "Conversion Accelerator",
|
|
2323
2323
|
ProcessBuilder = "ProcessBuilder"
|
|
2324
2324
|
}
|
package/dist/index.js
CHANGED
|
@@ -722,7 +722,7 @@ class ra {
|
|
|
722
722
|
}
|
|
723
723
|
}
|
|
724
724
|
const j = new ra();
|
|
725
|
-
var ca = /* @__PURE__ */ ((c) => (c.Hub = "Hub", c.Shopify = "Shopify", c))(ca || {}), ot = /* @__PURE__ */ ((c) => (c.BackgroundRemover = "
|
|
725
|
+
var ca = /* @__PURE__ */ ((c) => (c.Hub = "Hub", c.Shopify = "Shopify", c))(ca || {}), ot = /* @__PURE__ */ ((c) => (c.BackgroundRemover = "BackgroundRemover", c.ConversionAccelerator = "Conversion Accelerator", c.ProcessBuilder = "ProcessBuilder", c))(ot || {}), ga = /* @__PURE__ */ ((c) => (c[c.Orbit = 0] = "Orbit", c[c.Pan = 1] = "Pan", c))(ga || {}), la = /* @__PURE__ */ ((c) => (c.Manual = "Manual", c.OnStart = "OnStart", c.OnQuit = "OnQuit", c.OnEnd = "OnEnd", c))(la || {}), Ba = /* @__PURE__ */ ((c) => (c.Email = "Email", c.FirstName = "FirstName", c.LastName = "LastName", c.Phone = "Phone", c))(Ba || {}), Ne = /* @__PURE__ */ ((c) => (c.Owner = "Owner", c.Approver = "Approver", c.Editor = "Editor", c.Viewer = "Viewer", c))(Ne || {});
|
|
726
726
|
const ne = D`
|
|
727
727
|
fragment AdditionalIntegrationProductFields on IntegrationProduct {
|
|
728
728
|
id
|
|
@@ -10276,14 +10276,12 @@ class Si {
|
|
|
10276
10276
|
if (!this.options.applicationKey)
|
|
10277
10277
|
throw new Error("Cannot get current Integration without specifying an Application Key.");
|
|
10278
10278
|
if (this.activeIntegration)
|
|
10279
|
-
return
|
|
10280
|
-
const e = async () => {
|
|
10281
|
-
|
|
10282
|
-
|
|
10283
|
-
|
|
10284
|
-
|
|
10285
|
-
return console.log("Get integration response", A), A.data.currentIntegration;
|
|
10286
|
-
};
|
|
10279
|
+
return this.activeIntegration;
|
|
10280
|
+
const e = async () => (await x.getShadowGraphqlClient().query({
|
|
10281
|
+
query: Ci,
|
|
10282
|
+
errorPolicy: "all",
|
|
10283
|
+
fetchPolicy: "no-cache"
|
|
10284
|
+
})).data.currentIntegration;
|
|
10287
10285
|
return this.activeIntegration = e(), this.activeIntegration;
|
|
10288
10286
|
}
|
|
10289
10287
|
async canUseAddon(e) {
|
package/dist/index.umd.cjs
CHANGED
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
...OptionFields
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
|
-
`,xA=async c=>{const e=await N.getShadowGraphqlClient().query({query:PA,errorPolicy:"all",fetchPolicy:"no-cache",variables:{ids:c}});return e.data.options.forEach(t=>{var A,n;(A=t.defaultVariant)!=null&&A.asset&&G.cacheAsset(t.defaultVariant.asset),t.colorProfile&&G.cacheAsset(t.colorProfile),(n=t.variants)==null||n.forEach(a=>{a.asset&&G.cacheAsset(a.asset),a.displayImage&&G.cacheAsset(a.displayImage),a.thumbnail&&G.cacheAsset(a.thumbnail),a.material&&G.cacheMaterial(a.material)})}),e.data.options},NA=async(c,e)=>(await e).find(A=>A.id===c),HA=async c=>{const e=c.map(i=>Z.get({id:i})),t=c.filter((i,o)=>e[o]===void 0);if(t.length===0)return Promise.all(e);const A=xA(t),n=t.map(i=>Z.set({id:i},NA(i,A))),a=e.filter(i=>i!==void 0);return await Promise.all(a.concat(n))};class RA{constructor(){this.getDisplayImageSource=e=>{var t;if(e){const A=(t=e.displayImage)==null?void 0:t.fileLink;if(A)return A}},this.getSelectedVariant=(e,t)=>{var A;if(!(!e||t.length===0))return(A=e.variants)==null?void 0:A.find(n=>n.id===t[0])}}async getOption(e){return(async()=>{const n=(await HA([e]))[0];if(n)return n})()}async getAssetTileImageForVariant(e){var n,a;const t=e.thumbnail;if(t){const i=(n=t.versions)==null?void 0:n.find(s=>s.name==="thumbnail"),o=t.fileLink;return(i==null?void 0:i.link)||o}const A=e.asset;if(A){const i=(a=A.versions)==null?void 0:a.find(s=>s.name==="thumbnail"),o=A.fileLink;return(i==null?void 0:i.link)||o}return e.material?e.material.id:""}getDefaultVariant(e){const t=e.variants;if(t){if(t.length===1)return t[0];if(e.defaultVariant!==void 0)return t.find(A=>{var n;return A.id===((n=e.defaultVariant)==null?void 0:n.id)})}}}const O=new RA;var wt=(c=>(c.Hub="Hub",c.Shopify="Shopify",c))(wt||{}),me=(c=>(c.BackgroundRemover="
|
|
154
|
+
`,xA=async c=>{const e=await N.getShadowGraphqlClient().query({query:PA,errorPolicy:"all",fetchPolicy:"no-cache",variables:{ids:c}});return e.data.options.forEach(t=>{var A,n;(A=t.defaultVariant)!=null&&A.asset&&G.cacheAsset(t.defaultVariant.asset),t.colorProfile&&G.cacheAsset(t.colorProfile),(n=t.variants)==null||n.forEach(a=>{a.asset&&G.cacheAsset(a.asset),a.displayImage&&G.cacheAsset(a.displayImage),a.thumbnail&&G.cacheAsset(a.thumbnail),a.material&&G.cacheMaterial(a.material)})}),e.data.options},NA=async(c,e)=>(await e).find(A=>A.id===c),HA=async c=>{const e=c.map(i=>Z.get({id:i})),t=c.filter((i,o)=>e[o]===void 0);if(t.length===0)return Promise.all(e);const A=xA(t),n=t.map(i=>Z.set({id:i},NA(i,A))),a=e.filter(i=>i!==void 0);return await Promise.all(a.concat(n))};class RA{constructor(){this.getDisplayImageSource=e=>{var t;if(e){const A=(t=e.displayImage)==null?void 0:t.fileLink;if(A)return A}},this.getSelectedVariant=(e,t)=>{var A;if(!(!e||t.length===0))return(A=e.variants)==null?void 0:A.find(n=>n.id===t[0])}}async getOption(e){return(async()=>{const n=(await HA([e]))[0];if(n)return n})()}async getAssetTileImageForVariant(e){var n,a;const t=e.thumbnail;if(t){const i=(n=t.versions)==null?void 0:n.find(s=>s.name==="thumbnail"),o=t.fileLink;return(i==null?void 0:i.link)||o}const A=e.asset;if(A){const i=(a=A.versions)==null?void 0:a.find(s=>s.name==="thumbnail"),o=A.fileLink;return(i==null?void 0:i.link)||o}return e.material?e.material.id:""}getDefaultVariant(e){const t=e.variants;if(t){if(t.length===1)return t[0];if(e.defaultVariant!==void 0)return t.find(A=>{var n;return A.id===((n=e.defaultVariant)==null?void 0:n.id)})}}}const O=new RA;var wt=(c=>(c.Hub="Hub",c.Shopify="Shopify",c))(wt||{}),me=(c=>(c.BackgroundRemover="BackgroundRemover",c.ConversionAccelerator="Conversion Accelerator",c.ProcessBuilder="ProcessBuilder",c))(me||{}),ht=(c=>(c[c.Orbit=0]="Orbit",c[c.Pan=1]="Pan",c))(ht||{}),Et=(c=>(c.Manual="Manual",c.OnStart="OnStart",c.OnQuit="OnQuit",c.OnEnd="OnEnd",c))(Et||{}),Ct=(c=>(c.Email="Email",c.FirstName="FirstName",c.LastName="LastName",c.Phone="Phone",c))(Ct||{}),ge=(c=>(c.Owner="Owner",c.Approver="Approver",c.Editor="Editor",c.Viewer="Viewer",c))(ge||{});const $=M.gql`
|
|
155
155
|
fragment AdditionalIntegrationProductFields on IntegrationProduct {
|
|
156
156
|
id
|
|
157
157
|
product {
|
|
@@ -3031,4 +3031,4 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
|
|
|
3031
3031
|
}
|
|
3032
3032
|
}
|
|
3033
3033
|
}
|
|
3034
|
-
`,ne=async c=>{var e;for(const t in c.layouts){const A=c.layouts[t].elements.filter(a=>a.type===l.LayoutElementType.Illustration);for(let a=0;a<A.length;++a){const i=A[a];i.src&&i.svg&&(i.cachedObjectURL=await l.svgObjectURL(i.svg))}const n=c.layouts[t].elements.filter(a=>a.type===l.LayoutElementType.Textbox);for(let a=0;a<n.length;++a){const i=n[a];(e=i.fontData)!=null&&e.assetUrl&&await l.loadFont(i.fontData.assetUrl)}}},pa=async(c,e)=>{var n;const t=await N.getShadowGraphqlClient().query({query:ha(((n=e==null?void 0:e.assets)==null?void 0:n.metadata)||!1),errorPolicy:"all",fetchPolicy:"no-cache",variables:{ids:c}}),A=t.data.workflows;if(A===void 0||A.length!==c.length)throw new Error(`Unable to read workflows: ${t.errors??"Length mismatch in response"}`);return A.forEach(a=>{a.steps.forEach(i=>{var o,s,r;delete i.data.__typename,(o=i.option)!=null&&o.id&&((s=i.option.defaultVariant)!=null&&s.asset&&G.cacheAsset(i.option.defaultVariant.asset),i.option.colorProfile&&G.cacheAsset(i.option.colorProfile),(r=i.option.variants)==null||r.forEach(g=>{g.asset&&G.cacheAsset(g.asset),g.displayImage&&G.cacheAsset(g.displayImage),g.thumbnail&&G.cacheAsset(g.thumbnail),g.material&&G.cacheMaterial(g.material)}),Z.set({id:i.option.id},Promise.resolve(i.option)))})}),A},Fa=async(c,e)=>{const A=(await e).find(n=>n.id===c);if(!A)throw new Error(`Workflow not found: ${c}`);return A},_e=async(c,e)=>{const t=c.map(o=>Z.get({id:o,options:e})),A=c.filter((o,s)=>t[s]===void 0);if(A.length===0)return Promise.all(t);const n=pa(A,e),a=A.map(o=>Z.set({id:o,options:e},Fa(o,n))),i=t.filter(o=>o!==void 0);return await Promise.all(i.concat(a))},Ce=async(c,e)=>(await _e([c],e))[0],Ma=c=>c.sort((e,t)=>e.index-t.index).map(e=>({id:l.generate(),panelId:e.name,name:e.name,index:e.index,createdAt:new Date,updatedAt:new Date,transparentBackground:e.transparentBackground,height:e.height,width:e.width,previewRegion:e.previewRegion,useEditableArea:e.useEditableArea,editableArea:e.editableArea})),et=(c,e)=>{const t=c.workflowState,A=t?JSON.parse(t):void 0;return A?Object.values(A.layouts).map(n=>n.layout):Ma(e.panels)};class cA{constructor(e){this.activeIntegration=void 0,this.updateTransactionState=async t=>{try{return N.getShadowGraphqlClient().mutate({...t,mutation:GA})}catch(A){throw console.error(A),new v("Critical - Unable to synchronize workflow state with server.")}},this.initialized=!1,this.options=e,this.options.applicationKey&&EA(this.options.applicationKey)}getAssetManager(){return G}getCurrencyCode(){if(this.currencyCode===void 0)throw new Error("No currency code set.");return this.currencyCode}getFlowService(){if(!CA())throw new Error("Application key required to use Flow Service.");return new oA}async getIntegration(){if(!this.options.applicationKey)throw new Error("Cannot get current Integration without specifying an Application Key.");if(this.activeIntegration)return console.log("returning current promise"),this.activeIntegration;const e=async()=>{const A=await N.getShadowGraphqlClient().query({query:Ca,errorPolicy:"all"});return console.log("Get integration response",A),A.data.currentIntegration};return this.activeIntegration=e(),this.activeIntegration}async canUseAddon(e){var t;try{return((t=(await this.getIntegration()).partner.activeAddons)==null?void 0:t.includes(e))??!1}catch(A){return console.error(A),!1}}async authenticateBundleFromLocalStorage(e){var n,a;const t=P.getMap("bundleOwnerIds");if(t!=null&&t.has(e))return Promise.resolve({success:!0,stakeholderType:ge.Owner});const A=P.getMap("bundlePartnerIds")||new Map;if(A.has(e)){const i=A.get(e),s=(P.getMap("partnerCustomerIds")||new Map).get(i);if(s&&await this.authenticateCustomerId(s)){const g=(a=(n=this.customer)==null?void 0:n.bundleStakeholders)==null?void 0:a.find(B=>{var d;return((d=B.bundle)==null?void 0:d.id)===e});if(g)return Promise.resolve({success:!0,stakeholderType:g.type})}}return Promise.resolve({success:!1})}async authenticateTransactionFromLocalStorage(e){var g,B,d,w,h,u;const t=N.getShadowGraphqlClient(),A=await t.query({query:Ea,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:e}});if(!A.data.transactions||A.data.transactions.length===0)throw new Error(`Transaction not found: ${e}`);const n=A.data.transactions[0];if(!((B=(g=n.product)==null?void 0:g.partner)==null?void 0:B.id))throw new Error(`Unable to read transaction: ${e}`);if(n.isOrdered)return Promise.resolve({success:!1,transactionReadOnly:!0});const i=P.getMap("transactionOwnerIds");if(i!=null&&i.has(e))return Promise.resolve({success:!0,stakeholderType:ge.Owner});const o=P.getMap("transactionCustomerIds");if(o!=null&&o.has(e)){const E=o.get(e);if(E&&await this.authenticateCustomerId(E)){const Q=((w=(d=this.customer)==null?void 0:d.bundleStakeholders)==null?void 0:w.find(F=>{var I,f;return(f=(I=F.bundle)==null?void 0:I.transactions)==null?void 0:f.some(D=>D.id===e)}))||((u=(h=this.customer)==null?void 0:h.stakeholders)==null?void 0:u.find(F=>{var I;return((I=F.transaction)==null?void 0:I.id)===e}));if(Q)return Promise.resolve({success:!0,stakeholderType:Q.type})}}const r=(await t.query({query:ua,errorPolicy:"all",variables:{id:n.workflowId}})).data.workflow;if(!r)throw new Error(`Unable to read workflow: ${n.workflowId}`);return Promise.resolve({success:!1,theme:r.overrideTheme,customLogoLink:n.customLogoLink})}clearCustomer(){this.customer=void 0}clearCustomerForTransaction(e){const t=P.getMap("transactionCustomerIds");t!=null&&t.has(e)&&(t.delete(e),P.setMap("transactionCustomerIds",t))}getStakeholderTypeForTransaction(e){var A,n;const t=(n=(A=this.customer)==null?void 0:A.stakeholders)==null?void 0:n.find(a=>{var i;return((i=a.transaction)==null?void 0:i.id)===e});if(t)return t.type}async getOrCreateCustomer(e){var i;this.customer=void 0;const t=N.getShadowGraphqlClient(),n=(await t.query({query:Qa,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:e}})).data.customer;if(!n.id){const s=(i=(await t.mutate({mutation:ma,errorPolicy:"all",fetchPolicy:"no-cache",variables:{details:{emailAddress:e}}})).data)==null?void 0:i.customerCreate;if(!s)throw new Error("Unable to create customer.");return this.storeCustomer(s),this.customer=s,{customer:s,isAuthenticated:!1}}this.storeCustomer(n);const a=await this.authenticateCustomerId(n.id);return{customer:this.customer||n,isAuthenticated:a}}async authenticateCustomerId(e){var o;const t=N.getShadowGraphqlClient(),A=P.getMap("customerTokens");if(!(A!=null&&A.has(e)))return!1;const n=A.get(e);if(!n)return!1;const i=(o=(await t.mutate({mutation:Ia,errorPolicy:"all",fetchPolicy:"no-cache",variables:{loginToken:n}})).data)==null?void 0:o.customerAuthenticate;return i?(this.storeCustomer(i),lt(n),this.customer=i,!0):!1}async generateVerificationCode(e){await N.getShadowGraphqlClient().mutate({mutation:fa,variables:{emailAddress:e}})}async verifyCode(e,t){var a,i;const n=(a=(await N.getShadowGraphqlClient().mutate({mutation:Da,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:e,verificationCode:t}})).data)==null?void 0:a.customerVerifyCode;if(n!=null&&n.loginToken){if(!((i=n.partner)!=null&&i.id))throw new Error(`Unable to find customer: ${e}`);const o=P.getMap("customerTokens")||new Map;return o.set(n.id,n.loginToken),P.setMap("customerTokens",o),this.storeCustomer(n),lt(n.loginToken),this.customer={...n,loginToken:void 0},!0}return!1}async getNewBundle(e,t,A){var s,r,g;const a=(g=(await N.getShadowGraphqlClient().mutate({mutation:Kn(((r=(s=A==null?void 0:A.graphql)==null?void 0:s.productCollection)==null?void 0:r.eagerFetchProducts)||!1),variables:{collectionId:e,initialMetadata:t?Object.entries(t).map((B,d)=>({key:B[0],value:B[1]})):void 0},fetchPolicy:"no-cache"})).data)==null?void 0:g.bundleCreate;if(!(a!=null&&a.id))throw new Error("Unable to create bundle");const i=P.getMap("bundlePartnerIds")||new Map;i.set(a.id,a.partner.id),P.setMap("bundlePartnerIds",i);const o=P.getMap("bundleOwnerIds")||new Map;return o.set(a.id,a.bundleOwnerId),P.setMap("bundleOwnerIds",o),new iA(this,a,void 0,void 0,a.bundleOwnerId)}async getExistingBundle(e,t,A,n){var E,m,Q,F,I,f,D,p,y;const a=P.getMap("bundleOwnerIds"),i=a==null?void 0:a.get(e),s=((E=Object.entries(localStorage).find(([S,x])=>S.startsWith("CognitoIdentityServiceProvider")&&S.endsWith("idToken")))==null?void 0:E[0])||"",r=localStorage.getItem(s),g={};r&&!Ke(r)&&(g.Authorization=`Bearer ${r}`);const B={bundleOwnerId:i,...g,...(m=n==null?void 0:n.graphql)==null?void 0:m.additionalHeaders},d=await N.getShadowGraphqlClient().query({query:On(((F=(Q=n==null?void 0:n.graphql)==null?void 0:Q.productCollection)==null?void 0:F.eagerFetchProducts)||!1),variables:{id:e},fetchPolicy:"no-cache",context:{headers:B}});if(!((I=d.data)!=null&&I.bundles)||((f=d.data)==null?void 0:f.bundles.length)===0||!((D=d.data)!=null&&D.bundles[0]))throw new Error(`Unable to find bundle: ${e}`);const w=(p=d.data)==null?void 0:p.bundles[0],h=P.getMap("bundlePartnerIds")||new Map;h.set(w.id,w.partner.id),P.setMap("bundlePartnerIds",h);const u=new iA(this,w,t,A,i,{additionalHeaders:(y=n==null?void 0:n.graphql)==null?void 0:y.additionalHeaders});return await u.getInitializationPromise(),u}async getBundleStakeholders(){var a;if(!this.customer)throw new Error("Customer not authenticated.");const e=await N.getShadowGraphqlClient().query({query:zn,variables:{id:this.customer.id},fetchPolicy:"no-cache"});if(!((a=e.data)!=null&&a.customers)||e.data.customers.length===0)throw new Error("Unable to find customer.");const A=e.data.customers[0].bundleStakeholders||[],n=P.getMap("bundlePartnerIds")||new Map;return A.forEach(i=>{var o,s;(o=i.bundle)!=null&&o.id&&((s=i.bundle.partner)!=null&&s.id)&&n.set(i.bundle.id,i.bundle.partner.id)}),P.setMap("bundlePartnerIds",n),A}async getWorkflowExperience(e,t,A,n){var B,d,w,h,u;if(!n)return await this.getWorkflowExperienceDeprecated(e,t,A);const a=async()=>{var m,Q;const E=N.getShadowGraphqlClient();if(n.type==="transaction"){const{transactionId:F,readOnly:I}=n,f=await E.query({query:Ie,variables:{ids:[F]},errorPolicy:"all",fetchPolicy:"no-cache"});if(!((m=f.data)!=null&&m.transactions)||f.data.transactions.length===0)throw new v("Existing transaction not found.");const D=(Q=f.data)==null?void 0:Q.transactions[0];if(!D.workflowId)throw new v("Existing transaction has no workflow ID.");const p=await Ce(D.workflowId);if(!D.product)throw new v("Failed to load transaction, product not available.");return{transaction:D,workflow:p,readOnly:I}}if(n.type==="integration"||n.type==="external"){const F=async()=>{const p=n.type==="integration"?{integrationProductId:n.integrationProductId}:{externalIntegrationId:n.externalIntegrationId,externalProductId:n.externalProductId},y=await E.mutate({mutation:ut,variables:{...p,workflowId:n.workflowId,claim:!0},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!y.data||!y.data.transactionCreate)throw new v("Failed to create transaction!");const S=y.data.transactionCreate;if(!S.product)throw new v("Failed to create transaction, product not available.");return S},I=Ce(n.workflowId,n==null?void 0:n.graphql),[f,D]=await Promise.all([F(),I]);return{transaction:f,workflow:D}}throw new v("No workflow ID provided.")},{transaction:i,workflow:o,readOnly:s}=await a();this.currencyCode=(B=i.product.partner)==null?void 0:B.currencyCode;const r={product:i.product,transaction:i,layouts:[],singleVariantsRenderable:(d=n==null?void 0:n.workflowConfiguration)==null?void 0:d.singleVariantsRenderable,stateMutationFunc:s?async()=>{throw new k("State mutation is forbidden in read only mode!")}:async E=>{const Q=(P.getMap("transactionOwnerIds")||new Map).get(i.id)||void 0;return this.updateTransactionState({...E,context:{transactionOwnerId:Q}})},readOnly:s,workflow:o};if(n.type==="transaction"&&i.workflowState){const E=JSON.parse(i.workflowState);r.layouts=Object.values(E.layouts).map(m=>m.layout),await l.rehydrateSerializedLayout(E),await ne(E),r.reloadedState=E}else if(!s&&n.workflowState){const E=JSON.parse(n.workflowState);r.layouts=Object.values(E.layouts).map(m=>m.layout),await l.rehydrateSerializedLayout(E),await ne(E),r.reloadedState=E}else r.layouts=et(r.transaction,r.workflow);if(r.renderableContextService=new ye(r.layouts),n.previewService?(r.previewService=n.previewService,(w=r.product)!=null&&w.modelUrl&&(r.modelContainer=r.previewService.loadModel({model:r.product.modelUrl,contextService:r.renderableContextService}))):(r.previewService=A&&A(o),(h=r.product)!=null&&h.modelUrl&&(r.modelContainer=(u=r.previewService)==null?void 0:u.loadModel({model:r.product.modelUrl,contextService:r.renderableContextService}))),n.type!=="transaction"){const E=P.getMap("transactionOwnerIds")||new Map;E.set(i.id,i.transactionOwnerId),P.setMap("transactionOwnerIds",E)}else r.isReloadedTransaction=!0;this.initialized=!0,this.experienceOptions=r;const g=new he(this,r);return await g.getWorkflowManager().getInitializationPromise(),n.type!=="transaction"&&this.customer&&await g.attachCustomerDetails({email:this.customer.emailAddress}),g}async getWorkflowExperiences(e,t){if(e.length===0)throw new v("No options provided!");const A=N.getShadowGraphqlClient(),n=async f=>{var S,x;if(f.length===0)return[];const D=f.map(Y=>Y.option.transactionId),p=await A.query({query:Ie,variables:{ids:D},errorPolicy:"all",fetchPolicy:"no-cache"}),y=p.data.transactions;if(y.length!==f.length){const Y=((x=(S=p.errors)==null?void 0:S[0])==null?void 0:x.message)||"Unknown error";throw new v(`Not all transactions were found: ${Y}`)}return y.map((Y,H)=>{var R;return{transaction:Y,workflowId:Y.workflowId,readOnly:((R=f.find(T=>T.option.transactionId===Y.id))==null?void 0:R.option.readOnly)??!1,index:f[H].index}})},a=async f=>{var y,S,x;if(f.length===0)return[];const D=await A.mutate({mutation:UA,variables:{inputs:f.map(Y=>({integrationProductId:Y.option.type==="integration"?Y.option.integrationProductId:void 0,externalIntegrationId:Y.option.type==="external"?Y.option.externalIntegrationId:void 0,externalProductId:Y.option.type==="external"?Y.option.externalProductId:void 0,workflowId:Y.option.workflowId,claim:!0}))},errorPolicy:"all",fetchPolicy:"no-cache"}),p=(y=D.data)==null?void 0:y.transactionCreateMany;if(!p||p.length===0){const Y=((x=(S=D.errors)==null?void 0:S[0])==null?void 0:x.message)||"Unknown error";throw new v(`Failed to create transactions: ${Y}`)}return p.map((Y,H)=>({transaction:Y,workflowId:Y.workflowId,readOnly:!1,index:f[H].index}))},i=e.map((f,D)=>({option:f,index:D})),o=i.filter(f=>f.option.type==="transaction"),s=i.filter(f=>f.option.type==="integration"||f.option.type==="external"),r=st(o,10),g=st(s,10),B=(await Promise.all([...r.map(n),...g.map(a)])).flat(),d=[...new Set(B.map(f=>f.workflowId))],w=await _e(d,t),h=new Map(w.map(f=>[f.id,f])),u=P.getMap("transactionOwnerIds")||new Map,E=B.map(async f=>{var T;const{transaction:D,workflowId:p,readOnly:y,index:S}=f,x=h.get(p),Y=e[S];!u.get(D.id)&&D.transactionOwnerId&&u.set(D.id,D.transactionOwnerId);const H=u.get(D.id)||void 0,R={product:D.product,transaction:D,layouts:[],singleVariantsRenderable:(T=Y==null?void 0:Y.workflowConfiguration)==null?void 0:T.singleVariantsRenderable,stateMutationFunc:y?async()=>{throw new k("State mutation is forbidden in read only mode!")}:async b=>this.updateTransactionState({...b,context:{transactionOwnerId:H}}),readOnly:y,workflow:x,isReloadedTransaction:Y.type==="transaction"};if(Y.type==="transaction"&&D.workflowState){const b=JSON.parse(D.workflowState);R.layouts=Object.values(b.layouts||{}).map(z=>z.layout),await l.rehydrateSerializedLayout(b),await ne(b),R.reloadedState=b}else if(!y&&Y.workflowState){const b=JSON.parse(Y.workflowState);R.layouts=Object.values(b.layouts||{}).map(z=>z.layout),await l.rehydrateSerializedLayout(b),await ne(b),R.reloadedState=b}else R.layouts=et(R.transaction,R.workflow);return R.renderableContextService=new ye(R.layouts),R.delayWorkflowStateSync=!0,this.initialized=!0,this.experienceOptions=R,{experienceOptions:R,index:S,options:Y}});P.setMap("transactionOwnerIds",u);const F=(await Promise.all(E)).sort((f,D)=>f.index-D.index).map(async f=>{const{experienceOptions:D,options:p}=f,y=new he(this,D);return await y.getWorkflowManager().getInitializationPromise(),p.type!=="transaction"&&this.customer&&await y.attachCustomerDetails({email:this.customer.emailAddress}),y}),I=await Promise.all(F);return I.forEach(f=>f.getWorkflowManager().setWorkflowStateSyncEnabled(!0)),I}async initFromIntegrationProduct(e){var i;if(e==="")throw new v("No integration product ID provided.");const A=await N.getShadowGraphqlClient().mutate({mutation:ut,variables:{integrationProductId:e,claim:!0},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!A.data||!A.data.transactionCreate)throw new v("Failed to create transaction!");const n=A.data.transactionCreate;if(!n.product)throw new v("Failed to create transaction, product not available.");this.currencyCode=(i=n.product.partner)==null?void 0:i.currencyCode;const a=P.getMap("transactionOwnerIds")||new Map;a.set(n.id,n.transactionOwnerId),P.setMap("transactionOwnerIds",a),this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:async o=>this.updateTransactionState({...o,context:{transactionOwnerId:n.transactionOwnerId}})},this.initialized=!0}async initFromTransaction(e,t=!1){var o,s,r,g;if(e==="")throw new v("No transaction ID provided.");const A=N.getShadowGraphqlClient(),n=async()=>{var w,h;const d=(w=(await A.query({query:Ie,variables:{ids:[e]},fetchPolicy:"no-cache",errorPolicy:"all"})).data)==null?void 0:w.transactions[0];if(!d)throw new v("Failed to read transaction.");if(!d.product)throw new v("Failed to load transaction, product not available.");this.currencyCode=(h=d.product.partner)==null?void 0:h.currencyCode,this.experienceOptions={product:d.product,transaction:d,layouts:[],stateMutationFunc:async()=>{throw new k("State mutation is forbidden in read only mode!")},readOnly:t},this.initialized=!0};if(t)return await n();const a=P.getMap("transactionOwnerIds")||new Map,i=a.get(e);if(i){const d=(o=(await A.query({query:Ie,variables:{ids:[e]},errorPolicy:"all"})).data)==null?void 0:o.transactions[0];if(!d)throw new v("Failed to read transaction.");if(!d.product)throw new v("Failed to load transaction, product not available.");this.currencyCode=(s=d.product.partner)==null?void 0:s.currencyCode,this.experienceOptions={product:d.product,transaction:d,layouts:[],stateMutationFunc:async w=>this.updateTransactionState({...w,context:{transactionOwnerId:i}}),readOnly:t},this.initialized=!0;return}try{const d=(r=(await A.mutate({mutation:vA,variables:{id:e},errorPolicy:"all"})).data)==null?void 0:r.transactionClaim;if(!d)throw new v("Failed to read transaction.");if(!d.product)throw new v("Failed to load transaction, product not available.");this.currencyCode=(g=d.product.partner)==null?void 0:g.currencyCode,d.transactionOwnerId&&(a.set(d.id,d.transactionOwnerId),P.setMap("transactionOwnerIds",a)),this.experienceOptions={product:d.product,transaction:d,layouts:[],stateMutationFunc:async w=>this.updateTransactionState({...w,context:{transactionOwnerId:d.transactionOwnerId}}),readOnly:t},this.initialized=!0}catch{throw new v("Attempted to access a transaction that isn't available.")}}async getWorkflowExperienceDeprecated(e,t,A){var n,a,i,o;if(!this.initialized||!this.experienceOptions)throw new v("Cannot launch experience: Not initialized.");if(this.experienceOptions.transaction.workflowId){const s=await Ce(this.experienceOptions.transaction.workflowId);if(this.experienceOptions.workflow=s,this.experienceOptions.transaction.workflowState){const g=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(g.layouts).map(B=>B.layout),await l.rehydrateSerializedLayout(g),await ne(g),this.experienceOptions.reloadedState=g}this.experienceOptions.previewService=A&&A(s),this.experienceOptions.renderableContextService=new ye(this.experienceOptions.layouts),(n=this.experienceOptions.product)!=null&&n.modelUrl&&(this.experienceOptions.modelContainer=(a=this.experienceOptions.previewService)==null?void 0:a.loadModel({model:this.experienceOptions.product.modelUrl,contextService:this.experienceOptions.renderableContextService}));const r=new he(this,this.experienceOptions);return await r.getWorkflowManager().getInitializationPromise(),r}if(e){const r=(P.getMap("transactionOwnerIds")||new Map).get(this.experienceOptions.transaction.id),g=N.getShadowGraphqlClient().mutate({mutation:kA,variables:{workflowId:e,id:this.experienceOptions.transaction.id},context:{transactionOwnerId:r}}),B=Ce(e);if(await Promise.all([g,B]),this.experienceOptions.workflow=await B,t){const w=JSON.parse(t);this.experienceOptions.layouts=Object.values(w.layouts).map(h=>h.layout),await l.rehydrateSerializedLayout(w),await ne(w),this.experienceOptions.reloadedState=w}else this.experienceOptions.layouts=et(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=A&&A(await B),this.experienceOptions.renderableContextService=new ye(this.experienceOptions.layouts),(i=this.experienceOptions.product)!=null&&i.modelUrl&&(this.experienceOptions.modelContainer=(o=this.experienceOptions.previewService)==null?void 0:o.loadModel({model:this.experienceOptions.product.modelUrl,contextService:this.experienceOptions.renderableContextService}));const d=new he(this,this.experienceOptions);return await d.getWorkflowManager().getInitializationPromise(),d}throw new v("No workflow ID provided.")}getPreviewService(){var e;return(e=this.experienceOptions)==null?void 0:e.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new v("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new v("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}configureUrls(e,t,A){W.setHubUrl(e),W.setServerUrl(t),W.setServicesApiUrl(A),this.getIntegration()}storeCustomer(e){const t=P.getMap("partnerCustomerIds")||new Map;t.set(e.partner.id,e.id),P.setMap("partnerCustomerIds",t)}async getIntegrationProductById(e){var a,i;const n=(a=(await N.getShadowGraphqlClient().query({query:JA,variables:{ids:[e]},fetchPolicy:"no-cache",errorPolicy:"all"})).data)==null?void 0:a.integrationProducts;if(!n||n.length===0||!((i=n[0])!=null&&i.id))throw new Error("Integration product not found.");return new $e(n[0])}async getIntegrationProductFromExternalIds(e,t){var i;const a=(i=(await N.getShadowGraphqlClient().query({query:TA,variables:{externalProductId:t,externalIntegrationId:e},fetchPolicy:"no-cache",errorPolicy:"all"})).data)==null?void 0:i.integrationProductFromExternalIds;if(!(a!=null&&a.id))throw new Error("Integration product not found.");return new $e(a)}async getIntegrationProduct(e){return e.type==="integration"?this.getIntegrationProductById(e.integrationProductId):this.getIntegrationProductFromExternalIds(e.externalIntegrationId,e.externalProductId)}}class ya{getClient(){return this.client??{}}setClient(e){this.client=e}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}async reset(){}updateStateWithServer(e){}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(e){}addPoller(e){}addConfirmCallback(e){}addEditedCallback(e){}addElementsCallback(e){}addInformationResultCallback(e){}addInitCallback(e){}addMakingAdjustmentsCallback(e){}addMandatoryCallback(e){}addMetadataCallback(e){}addSelectionCallback(e){}addStepSpecificStorageCallback(e,t){}addStorageCallback(e){}getCommandDispatcher(){return e=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getModelContainer(){}getProfanities(){return[]}getRegionElements(e){return[]}getSerializedStep(e,t){}getStepSpecificServices(e){}getTransaction(){return{id:""}}getTransactionCustomer(){}setTransactionCustomer(){}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(e){}markUpdateCompleted(e){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}setCurrentAdjustingStepId(e){}setEditedStatus(e,t){}setInformationResults(e){}setMandatoryFulfilled(e,t){}async setSelectionsAndElements(e,t,A){}toggleDesignConfirmed(){}updateMetadata(e,t){}async updateStorage(e,t){}injectIntoPreviewService(e){return Promise.resolve()}ejectFromPreviewService(){}setWorkflowStateSyncEnabled(e){}}var gA=(c=>(c.SelectFrame="SelectFrame",c.SelectImage="SelectImage",c.Position="Position",c))(gA||{});class lA extends j{constructor(e,t){var A;super(e,t),this.frameService=(A=this.manager.getStepSpecificServices(this.getId()))==null?void 0:A.frameService}selectVariant(e){const t=this.manager.getRegionElements(this.step.stepName);return de.selectVariant(this.step,e.getResource(),t,this.manager,A=>this.setUpdateState(A))}onFrameDataChanged(e){this.frameService&&this.frameService.onFrameDataChanged(t=>{t&&e(t)})}async selectImage(e,t=!0){var A;if(await de.selectImage(this.step,e,this.manager),t){const n=((A=this.manager.getStepStorage(this.step.stepName))==null?void 0:A.framePatternData)||{};this.manager.updateStorage(this.step.stepName,{framePatternData:{...n,originalAssetKey:e.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0}})}}async canUseBackgroundRemover(){return this.manager.getClient().canUseAddon(me.BackgroundRemover)}async removeBackgroundFromImageSelection(e=!0){var a;if(!await this.canUseBackgroundRemover())throw new Error("The current Integration does not have access to the Background Remover. Please call canUseBackgroundRemover to ensure you disable this feature when appropriate.");const t=await this.getOriginalImageSelection();if(!t)throw new Error("You must supply an image selection before attempting to remove the background.");const A=await G.removeBackgroundFromAsset(t);e&&await de.selectImage(this.step,A,this.manager);const n=((a=this.manager.getStepStorage(this.step.stepName))==null?void 0:a.framePatternData)||{};return this.manager.updateStorage(this.step.stepName,{framePatternData:{...n,backgroundRemovedAssetKey:A.key,useOriginalAsset:!e}}),A}getImageData(){if(this.frameService)return this.frameService.getImageData()}getCurrentFrameStep(e,t,A,n){return n&&n.length>1&&e===void 0?"SelectFrame":t||A||this.getImageData()?"Position":"SelectImage"}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasOverlayImageUrl(){return this.step.data.overlayImageUrl}async getOriginalImageSelection(){var t,A;const e=(A=(t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.framePatternData)==null?void 0:A.originalAssetKey;if(e)return G.getLocalOrFromServer(e)}async getBackgroundRemovedImageSelection(){var t,A;const e=(A=(t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.framePatternData)==null?void 0:A.backgroundRemovedAssetKey;if(e)return G.getLocalOrFromServer(e)}hasBackgroundRemovedImageSelection(){var e,t;return!!((t=(e=this.getFrameStepStorage())==null?void 0:e.framePatternData)!=null&&t.backgroundRemovedAssetKey)}getUseOriginalImageSelection(){var e,t;return((t=(e=this.getFrameStepStorage())==null?void 0:e.framePatternData)==null?void 0:t.useOriginalAsset)??!1}async setUseOriginalImageSelection(e){var n;const t=((n=this.getFrameStepStorage())==null?void 0:n.framePatternData)||{};if(t.useOriginalAsset===e)return;const A=await this.getOriginalImageSelection();if(!A)throw new Error("You must provide an image selection before calling setUseOriginalImageSelection");if(e)await this.selectImage(A,!1);else{const a=await this.getBackgroundRemovedImageSelection();if(!a)throw new Error("You must call removeBackgroundFromImageSelection before attempting to apply the image.");await this.selectImage(a,!1)}this.manager.updateStorage(this.step.stepName,{framePatternData:{...t,useOriginalAsset:e}})}getFrameStepStorage(){return this.manager.getStepStorage(this.step.stepName)}}Object.defineProperty(C,"AspectType",{enumerable:!0,get:()=>l.AspectType}),Object.defineProperty(C,"AssetType",{enumerable:!0,get:()=>l.AssetType}),Object.defineProperty(C,"BringForwardCommand",{enumerable:!0,get:()=>l.BringForwardCommand}),Object.defineProperty(C,"BringToBackCommand",{enumerable:!0,get:()=>l.BringToBackCommand}),Object.defineProperty(C,"BringToFrontCommand",{enumerable:!0,get:()=>l.BringToFrontCommand}),Object.defineProperty(C,"CanvasCommand",{enumerable:!0,get:()=>l.CanvasCommand}),Object.defineProperty(C,"CommandContext",{enumerable:!0,get:()=>l.CommandContext}),Object.defineProperty(C,"CreateElementCommand",{enumerable:!0,get:()=>l.CreateElementCommand}),Object.defineProperty(C,"CreateLayoutCommand",{enumerable:!0,get:()=>l.CreateLayoutCommand}),Object.defineProperty(C,"DeleteElementCommand",{enumerable:!0,get:()=>l.DeleteElementCommand}),Object.defineProperty(C,"FontAlignmentCommand",{enumerable:!0,get:()=>l.FontAlignmentCommand}),Object.defineProperty(C,"FontColorCommand",{enumerable:!0,get:()=>l.FontColorCommand}),Object.defineProperty(C,"FontSizeCommand",{enumerable:!0,get:()=>l.FontSizeCommand}),Object.defineProperty(C,"FontSourceCommand",{enumerable:!0,get:()=>l.FontSourceCommand}),Object.defineProperty(C,"GroupCommand",{enumerable:!0,get:()=>l.GroupCommand}),Object.defineProperty(C,"LayoutElementFactory",{enumerable:!0,get:()=>l.LayoutElementFactory}),Object.defineProperty(C,"LayoutElementType",{enumerable:!0,get:()=>l.LayoutElementType}),Object.defineProperty(C,"MoveCommand",{enumerable:!0,get:()=>l.MoveCommand}),Object.defineProperty(C,"ResizeCommand",{enumerable:!0,get:()=>l.ResizeCommand}),Object.defineProperty(C,"RotateCommand",{enumerable:!0,get:()=>l.RotateCommand}),Object.defineProperty(C,"SendBackwardsCommand",{enumerable:!0,get:()=>l.SendBackwardsCommand}),Object.defineProperty(C,"StepAspectType",{enumerable:!0,get:()=>l.StepAspectType}),Object.defineProperty(C,"StepType",{enumerable:!0,get:()=>l.StepType}),Object.defineProperty(C,"TextChangeCommand",{enumerable:!0,get:()=>l.TextChangeCommand}),Object.defineProperty(C,"UnitOfMeasurement",{enumerable:!0,get:()=>l.UnitOfMeasurement}),Object.defineProperty(C,"dataUrlFromExternalUrl",{enumerable:!0,get:()=>l.dataUrlFromExternalUrl}),Object.defineProperty(C,"determineCorrectFontSizeAndLines",{enumerable:!0,get:()=>l.determineCorrectFontSizeAndLines}),Object.defineProperty(C,"findElement",{enumerable:!0,get:()=>l.findElement}),Object.defineProperty(C,"frameDataCache",{enumerable:!0,get:()=>l.frameDataCache}),Object.defineProperty(C,"generate",{enumerable:!0,get:()=>l.generate}),Object.defineProperty(C,"generateSVGWithUnknownColors",{enumerable:!0,get:()=>l.generateSVGWithUnknownColors}),Object.defineProperty(C,"getAttributesFromArrayBuffer",{enumerable:!0,get:()=>l.getAttributesFromArrayBuffer}),Object.defineProperty(C,"getAxisAlignedBoundingBox",{enumerable:!0,get:()=>l.getAxisAlignedBoundingBox}),Object.defineProperty(C,"getFrameData",{enumerable:!0,get:()=>l.getFrameData}),Object.defineProperty(C,"getSvgElement",{enumerable:!0,get:()=>l.getSvgElement}),Object.defineProperty(C,"loadFont",{enumerable:!0,get:()=>l.loadFont}),Object.defineProperty(C,"patternImageDataCache",{enumerable:!0,get:()=>l.patternImageDataCache}),Object.defineProperty(C,"registerFetchImplementation",{enumerable:!0,get:()=>l.registerFetchImplementation}),Object.defineProperty(C,"registerWindowImplementation",{enumerable:!0,get:()=>l.registerWindowImplementation}),Object.defineProperty(C,"rehydrateSerializedLayout",{enumerable:!0,get:()=>l.rehydrateSerializedLayout}),Object.defineProperty(C,"setCanvasModule",{enumerable:!0,get:()=>l.setCanvasModule}),C.AddonHandle=me,C.ArrayInput=ga,C.AssetNotFoundError=V,C.CollectionProduct=Ye,C.ColorOptionGlobalPropertyHandle=tA,C.ConversionDataType=Ct,C.ConversionLocation=Et,C.FileUploadGlobalPropertyHandle=_t,C.FlowExecutionNodeResult=Ee,C.FlowExecutionResult=sA,C.FlowService=oA,C.FrameService=ft,C.FrameStep=gA,C.FrameStepHandle=lA,C.GlobalPropertyHandle=Se,C.IllustrationStepHandle=Gt,C.InformationMessageType=we,C.InformationStepHandle=zt,C.IntegrationProduct=$e,C.IntegrationType=wt,C.LayoutNotFoundError=J,C.MaterialStepHandle=kt,C.MisconfigurationError=se,C.MockWorkflowManager=ya,C.ModelStepHandle=bt,C.ObjectInput=Ze,C.ObjectInputType=rA,C.OptionGlobalPropertyHandle=We,C.OptionNotFoundError=oe,C.ParseError=q,C.PictureStepHandle=Jt,C.ProductCameraRig=ht,C.ProductCollection=AA,C.ProductWorkflow=Ae,C.PromiseCache=Z,C.PromiseQueue=ve,C.QuestionStepHandle=Tt,C.QueueablePromise=Ue,C.ResourceNotFoundError=X,C.ShapeStepHandle=Ot,C.SpiffCommerceClient=cA,C.StakeholderType=ge,C.StepHandle=j,C.TextGlobalPropertyHandle=eA,C.TextInput=ca,C.TextStepHandle=Lt,C.Transform=aA,C.TransformCollection=nA,C.UnhandledBehaviorError=k,C.Variant=K,C.WorkflowExperienceEventType=Xt,C.WorkflowExperienceImpl=he,C.assetService=G,C.createDesign=Wt,C.designService=Me,C.digitalContentStepService=Mt,C.frameStepService=de,C.generateCommands=qt,C.generateStateFromDesignInputSteps=Jn,C.getBoundedOffsets=It,C.getWorkflow=Ce,C.getWorkflows=_e,C.graphQlManager=N,C.illustrationStepService=Be,C.materialStepService=Ge,C.modelStepService=ke,C.moduleStepService=yt,C.optionService=O,C.persistenceService=P,C.pictureStepService=be,C.questionStepService=Je,C.shapeStepService=te,C.shortenUrl=pt,C.spiffCoreConfiguration=W,C.stepAspectValuesToDesignInputSteps=bn,C.textStepService=L,C.toast=St,Object.defineProperty(C,Symbol.toStringTag,{value:"Module"})});
|
|
3034
|
+
`,ne=async c=>{var e;for(const t in c.layouts){const A=c.layouts[t].elements.filter(a=>a.type===l.LayoutElementType.Illustration);for(let a=0;a<A.length;++a){const i=A[a];i.src&&i.svg&&(i.cachedObjectURL=await l.svgObjectURL(i.svg))}const n=c.layouts[t].elements.filter(a=>a.type===l.LayoutElementType.Textbox);for(let a=0;a<n.length;++a){const i=n[a];(e=i.fontData)!=null&&e.assetUrl&&await l.loadFont(i.fontData.assetUrl)}}},pa=async(c,e)=>{var n;const t=await N.getShadowGraphqlClient().query({query:ha(((n=e==null?void 0:e.assets)==null?void 0:n.metadata)||!1),errorPolicy:"all",fetchPolicy:"no-cache",variables:{ids:c}}),A=t.data.workflows;if(A===void 0||A.length!==c.length)throw new Error(`Unable to read workflows: ${t.errors??"Length mismatch in response"}`);return A.forEach(a=>{a.steps.forEach(i=>{var o,s,r;delete i.data.__typename,(o=i.option)!=null&&o.id&&((s=i.option.defaultVariant)!=null&&s.asset&&G.cacheAsset(i.option.defaultVariant.asset),i.option.colorProfile&&G.cacheAsset(i.option.colorProfile),(r=i.option.variants)==null||r.forEach(g=>{g.asset&&G.cacheAsset(g.asset),g.displayImage&&G.cacheAsset(g.displayImage),g.thumbnail&&G.cacheAsset(g.thumbnail),g.material&&G.cacheMaterial(g.material)}),Z.set({id:i.option.id},Promise.resolve(i.option)))})}),A},Fa=async(c,e)=>{const A=(await e).find(n=>n.id===c);if(!A)throw new Error(`Workflow not found: ${c}`);return A},_e=async(c,e)=>{const t=c.map(o=>Z.get({id:o,options:e})),A=c.filter((o,s)=>t[s]===void 0);if(A.length===0)return Promise.all(t);const n=pa(A,e),a=A.map(o=>Z.set({id:o,options:e},Fa(o,n))),i=t.filter(o=>o!==void 0);return await Promise.all(i.concat(a))},Ce=async(c,e)=>(await _e([c],e))[0],Ma=c=>c.sort((e,t)=>e.index-t.index).map(e=>({id:l.generate(),panelId:e.name,name:e.name,index:e.index,createdAt:new Date,updatedAt:new Date,transparentBackground:e.transparentBackground,height:e.height,width:e.width,previewRegion:e.previewRegion,useEditableArea:e.useEditableArea,editableArea:e.editableArea})),et=(c,e)=>{const t=c.workflowState,A=t?JSON.parse(t):void 0;return A?Object.values(A.layouts).map(n=>n.layout):Ma(e.panels)};class cA{constructor(e){this.activeIntegration=void 0,this.updateTransactionState=async t=>{try{return N.getShadowGraphqlClient().mutate({...t,mutation:GA})}catch(A){throw console.error(A),new v("Critical - Unable to synchronize workflow state with server.")}},this.initialized=!1,this.options=e,this.options.applicationKey&&EA(this.options.applicationKey)}getAssetManager(){return G}getCurrencyCode(){if(this.currencyCode===void 0)throw new Error("No currency code set.");return this.currencyCode}getFlowService(){if(!CA())throw new Error("Application key required to use Flow Service.");return new oA}async getIntegration(){if(!this.options.applicationKey)throw new Error("Cannot get current Integration without specifying an Application Key.");if(this.activeIntegration)return this.activeIntegration;const e=async()=>(await N.getShadowGraphqlClient().query({query:Ca,errorPolicy:"all",fetchPolicy:"no-cache"})).data.currentIntegration;return this.activeIntegration=e(),this.activeIntegration}async canUseAddon(e){var t;try{return((t=(await this.getIntegration()).partner.activeAddons)==null?void 0:t.includes(e))??!1}catch(A){return console.error(A),!1}}async authenticateBundleFromLocalStorage(e){var n,a;const t=P.getMap("bundleOwnerIds");if(t!=null&&t.has(e))return Promise.resolve({success:!0,stakeholderType:ge.Owner});const A=P.getMap("bundlePartnerIds")||new Map;if(A.has(e)){const i=A.get(e),s=(P.getMap("partnerCustomerIds")||new Map).get(i);if(s&&await this.authenticateCustomerId(s)){const g=(a=(n=this.customer)==null?void 0:n.bundleStakeholders)==null?void 0:a.find(B=>{var d;return((d=B.bundle)==null?void 0:d.id)===e});if(g)return Promise.resolve({success:!0,stakeholderType:g.type})}}return Promise.resolve({success:!1})}async authenticateTransactionFromLocalStorage(e){var g,B,d,w,h,u;const t=N.getShadowGraphqlClient(),A=await t.query({query:Ea,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:e}});if(!A.data.transactions||A.data.transactions.length===0)throw new Error(`Transaction not found: ${e}`);const n=A.data.transactions[0];if(!((B=(g=n.product)==null?void 0:g.partner)==null?void 0:B.id))throw new Error(`Unable to read transaction: ${e}`);if(n.isOrdered)return Promise.resolve({success:!1,transactionReadOnly:!0});const i=P.getMap("transactionOwnerIds");if(i!=null&&i.has(e))return Promise.resolve({success:!0,stakeholderType:ge.Owner});const o=P.getMap("transactionCustomerIds");if(o!=null&&o.has(e)){const E=o.get(e);if(E&&await this.authenticateCustomerId(E)){const Q=((w=(d=this.customer)==null?void 0:d.bundleStakeholders)==null?void 0:w.find(F=>{var I,f;return(f=(I=F.bundle)==null?void 0:I.transactions)==null?void 0:f.some(D=>D.id===e)}))||((u=(h=this.customer)==null?void 0:h.stakeholders)==null?void 0:u.find(F=>{var I;return((I=F.transaction)==null?void 0:I.id)===e}));if(Q)return Promise.resolve({success:!0,stakeholderType:Q.type})}}const r=(await t.query({query:ua,errorPolicy:"all",variables:{id:n.workflowId}})).data.workflow;if(!r)throw new Error(`Unable to read workflow: ${n.workflowId}`);return Promise.resolve({success:!1,theme:r.overrideTheme,customLogoLink:n.customLogoLink})}clearCustomer(){this.customer=void 0}clearCustomerForTransaction(e){const t=P.getMap("transactionCustomerIds");t!=null&&t.has(e)&&(t.delete(e),P.setMap("transactionCustomerIds",t))}getStakeholderTypeForTransaction(e){var A,n;const t=(n=(A=this.customer)==null?void 0:A.stakeholders)==null?void 0:n.find(a=>{var i;return((i=a.transaction)==null?void 0:i.id)===e});if(t)return t.type}async getOrCreateCustomer(e){var i;this.customer=void 0;const t=N.getShadowGraphqlClient(),n=(await t.query({query:Qa,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:e}})).data.customer;if(!n.id){const s=(i=(await t.mutate({mutation:ma,errorPolicy:"all",fetchPolicy:"no-cache",variables:{details:{emailAddress:e}}})).data)==null?void 0:i.customerCreate;if(!s)throw new Error("Unable to create customer.");return this.storeCustomer(s),this.customer=s,{customer:s,isAuthenticated:!1}}this.storeCustomer(n);const a=await this.authenticateCustomerId(n.id);return{customer:this.customer||n,isAuthenticated:a}}async authenticateCustomerId(e){var o;const t=N.getShadowGraphqlClient(),A=P.getMap("customerTokens");if(!(A!=null&&A.has(e)))return!1;const n=A.get(e);if(!n)return!1;const i=(o=(await t.mutate({mutation:Ia,errorPolicy:"all",fetchPolicy:"no-cache",variables:{loginToken:n}})).data)==null?void 0:o.customerAuthenticate;return i?(this.storeCustomer(i),lt(n),this.customer=i,!0):!1}async generateVerificationCode(e){await N.getShadowGraphqlClient().mutate({mutation:fa,variables:{emailAddress:e}})}async verifyCode(e,t){var a,i;const n=(a=(await N.getShadowGraphqlClient().mutate({mutation:Da,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:e,verificationCode:t}})).data)==null?void 0:a.customerVerifyCode;if(n!=null&&n.loginToken){if(!((i=n.partner)!=null&&i.id))throw new Error(`Unable to find customer: ${e}`);const o=P.getMap("customerTokens")||new Map;return o.set(n.id,n.loginToken),P.setMap("customerTokens",o),this.storeCustomer(n),lt(n.loginToken),this.customer={...n,loginToken:void 0},!0}return!1}async getNewBundle(e,t,A){var s,r,g;const a=(g=(await N.getShadowGraphqlClient().mutate({mutation:Kn(((r=(s=A==null?void 0:A.graphql)==null?void 0:s.productCollection)==null?void 0:r.eagerFetchProducts)||!1),variables:{collectionId:e,initialMetadata:t?Object.entries(t).map((B,d)=>({key:B[0],value:B[1]})):void 0},fetchPolicy:"no-cache"})).data)==null?void 0:g.bundleCreate;if(!(a!=null&&a.id))throw new Error("Unable to create bundle");const i=P.getMap("bundlePartnerIds")||new Map;i.set(a.id,a.partner.id),P.setMap("bundlePartnerIds",i);const o=P.getMap("bundleOwnerIds")||new Map;return o.set(a.id,a.bundleOwnerId),P.setMap("bundleOwnerIds",o),new iA(this,a,void 0,void 0,a.bundleOwnerId)}async getExistingBundle(e,t,A,n){var E,m,Q,F,I,f,D,p,y;const a=P.getMap("bundleOwnerIds"),i=a==null?void 0:a.get(e),s=((E=Object.entries(localStorage).find(([S,x])=>S.startsWith("CognitoIdentityServiceProvider")&&S.endsWith("idToken")))==null?void 0:E[0])||"",r=localStorage.getItem(s),g={};r&&!Ke(r)&&(g.Authorization=`Bearer ${r}`);const B={bundleOwnerId:i,...g,...(m=n==null?void 0:n.graphql)==null?void 0:m.additionalHeaders},d=await N.getShadowGraphqlClient().query({query:On(((F=(Q=n==null?void 0:n.graphql)==null?void 0:Q.productCollection)==null?void 0:F.eagerFetchProducts)||!1),variables:{id:e},fetchPolicy:"no-cache",context:{headers:B}});if(!((I=d.data)!=null&&I.bundles)||((f=d.data)==null?void 0:f.bundles.length)===0||!((D=d.data)!=null&&D.bundles[0]))throw new Error(`Unable to find bundle: ${e}`);const w=(p=d.data)==null?void 0:p.bundles[0],h=P.getMap("bundlePartnerIds")||new Map;h.set(w.id,w.partner.id),P.setMap("bundlePartnerIds",h);const u=new iA(this,w,t,A,i,{additionalHeaders:(y=n==null?void 0:n.graphql)==null?void 0:y.additionalHeaders});return await u.getInitializationPromise(),u}async getBundleStakeholders(){var a;if(!this.customer)throw new Error("Customer not authenticated.");const e=await N.getShadowGraphqlClient().query({query:zn,variables:{id:this.customer.id},fetchPolicy:"no-cache"});if(!((a=e.data)!=null&&a.customers)||e.data.customers.length===0)throw new Error("Unable to find customer.");const A=e.data.customers[0].bundleStakeholders||[],n=P.getMap("bundlePartnerIds")||new Map;return A.forEach(i=>{var o,s;(o=i.bundle)!=null&&o.id&&((s=i.bundle.partner)!=null&&s.id)&&n.set(i.bundle.id,i.bundle.partner.id)}),P.setMap("bundlePartnerIds",n),A}async getWorkflowExperience(e,t,A,n){var B,d,w,h,u;if(!n)return await this.getWorkflowExperienceDeprecated(e,t,A);const a=async()=>{var m,Q;const E=N.getShadowGraphqlClient();if(n.type==="transaction"){const{transactionId:F,readOnly:I}=n,f=await E.query({query:Ie,variables:{ids:[F]},errorPolicy:"all",fetchPolicy:"no-cache"});if(!((m=f.data)!=null&&m.transactions)||f.data.transactions.length===0)throw new v("Existing transaction not found.");const D=(Q=f.data)==null?void 0:Q.transactions[0];if(!D.workflowId)throw new v("Existing transaction has no workflow ID.");const p=await Ce(D.workflowId);if(!D.product)throw new v("Failed to load transaction, product not available.");return{transaction:D,workflow:p,readOnly:I}}if(n.type==="integration"||n.type==="external"){const F=async()=>{const p=n.type==="integration"?{integrationProductId:n.integrationProductId}:{externalIntegrationId:n.externalIntegrationId,externalProductId:n.externalProductId},y=await E.mutate({mutation:ut,variables:{...p,workflowId:n.workflowId,claim:!0},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!y.data||!y.data.transactionCreate)throw new v("Failed to create transaction!");const S=y.data.transactionCreate;if(!S.product)throw new v("Failed to create transaction, product not available.");return S},I=Ce(n.workflowId,n==null?void 0:n.graphql),[f,D]=await Promise.all([F(),I]);return{transaction:f,workflow:D}}throw new v("No workflow ID provided.")},{transaction:i,workflow:o,readOnly:s}=await a();this.currencyCode=(B=i.product.partner)==null?void 0:B.currencyCode;const r={product:i.product,transaction:i,layouts:[],singleVariantsRenderable:(d=n==null?void 0:n.workflowConfiguration)==null?void 0:d.singleVariantsRenderable,stateMutationFunc:s?async()=>{throw new k("State mutation is forbidden in read only mode!")}:async E=>{const Q=(P.getMap("transactionOwnerIds")||new Map).get(i.id)||void 0;return this.updateTransactionState({...E,context:{transactionOwnerId:Q}})},readOnly:s,workflow:o};if(n.type==="transaction"&&i.workflowState){const E=JSON.parse(i.workflowState);r.layouts=Object.values(E.layouts).map(m=>m.layout),await l.rehydrateSerializedLayout(E),await ne(E),r.reloadedState=E}else if(!s&&n.workflowState){const E=JSON.parse(n.workflowState);r.layouts=Object.values(E.layouts).map(m=>m.layout),await l.rehydrateSerializedLayout(E),await ne(E),r.reloadedState=E}else r.layouts=et(r.transaction,r.workflow);if(r.renderableContextService=new ye(r.layouts),n.previewService?(r.previewService=n.previewService,(w=r.product)!=null&&w.modelUrl&&(r.modelContainer=r.previewService.loadModel({model:r.product.modelUrl,contextService:r.renderableContextService}))):(r.previewService=A&&A(o),(h=r.product)!=null&&h.modelUrl&&(r.modelContainer=(u=r.previewService)==null?void 0:u.loadModel({model:r.product.modelUrl,contextService:r.renderableContextService}))),n.type!=="transaction"){const E=P.getMap("transactionOwnerIds")||new Map;E.set(i.id,i.transactionOwnerId),P.setMap("transactionOwnerIds",E)}else r.isReloadedTransaction=!0;this.initialized=!0,this.experienceOptions=r;const g=new he(this,r);return await g.getWorkflowManager().getInitializationPromise(),n.type!=="transaction"&&this.customer&&await g.attachCustomerDetails({email:this.customer.emailAddress}),g}async getWorkflowExperiences(e,t){if(e.length===0)throw new v("No options provided!");const A=N.getShadowGraphqlClient(),n=async f=>{var S,x;if(f.length===0)return[];const D=f.map(Y=>Y.option.transactionId),p=await A.query({query:Ie,variables:{ids:D},errorPolicy:"all",fetchPolicy:"no-cache"}),y=p.data.transactions;if(y.length!==f.length){const Y=((x=(S=p.errors)==null?void 0:S[0])==null?void 0:x.message)||"Unknown error";throw new v(`Not all transactions were found: ${Y}`)}return y.map((Y,H)=>{var R;return{transaction:Y,workflowId:Y.workflowId,readOnly:((R=f.find(T=>T.option.transactionId===Y.id))==null?void 0:R.option.readOnly)??!1,index:f[H].index}})},a=async f=>{var y,S,x;if(f.length===0)return[];const D=await A.mutate({mutation:UA,variables:{inputs:f.map(Y=>({integrationProductId:Y.option.type==="integration"?Y.option.integrationProductId:void 0,externalIntegrationId:Y.option.type==="external"?Y.option.externalIntegrationId:void 0,externalProductId:Y.option.type==="external"?Y.option.externalProductId:void 0,workflowId:Y.option.workflowId,claim:!0}))},errorPolicy:"all",fetchPolicy:"no-cache"}),p=(y=D.data)==null?void 0:y.transactionCreateMany;if(!p||p.length===0){const Y=((x=(S=D.errors)==null?void 0:S[0])==null?void 0:x.message)||"Unknown error";throw new v(`Failed to create transactions: ${Y}`)}return p.map((Y,H)=>({transaction:Y,workflowId:Y.workflowId,readOnly:!1,index:f[H].index}))},i=e.map((f,D)=>({option:f,index:D})),o=i.filter(f=>f.option.type==="transaction"),s=i.filter(f=>f.option.type==="integration"||f.option.type==="external"),r=st(o,10),g=st(s,10),B=(await Promise.all([...r.map(n),...g.map(a)])).flat(),d=[...new Set(B.map(f=>f.workflowId))],w=await _e(d,t),h=new Map(w.map(f=>[f.id,f])),u=P.getMap("transactionOwnerIds")||new Map,E=B.map(async f=>{var T;const{transaction:D,workflowId:p,readOnly:y,index:S}=f,x=h.get(p),Y=e[S];!u.get(D.id)&&D.transactionOwnerId&&u.set(D.id,D.transactionOwnerId);const H=u.get(D.id)||void 0,R={product:D.product,transaction:D,layouts:[],singleVariantsRenderable:(T=Y==null?void 0:Y.workflowConfiguration)==null?void 0:T.singleVariantsRenderable,stateMutationFunc:y?async()=>{throw new k("State mutation is forbidden in read only mode!")}:async b=>this.updateTransactionState({...b,context:{transactionOwnerId:H}}),readOnly:y,workflow:x,isReloadedTransaction:Y.type==="transaction"};if(Y.type==="transaction"&&D.workflowState){const b=JSON.parse(D.workflowState);R.layouts=Object.values(b.layouts||{}).map(z=>z.layout),await l.rehydrateSerializedLayout(b),await ne(b),R.reloadedState=b}else if(!y&&Y.workflowState){const b=JSON.parse(Y.workflowState);R.layouts=Object.values(b.layouts||{}).map(z=>z.layout),await l.rehydrateSerializedLayout(b),await ne(b),R.reloadedState=b}else R.layouts=et(R.transaction,R.workflow);return R.renderableContextService=new ye(R.layouts),R.delayWorkflowStateSync=!0,this.initialized=!0,this.experienceOptions=R,{experienceOptions:R,index:S,options:Y}});P.setMap("transactionOwnerIds",u);const F=(await Promise.all(E)).sort((f,D)=>f.index-D.index).map(async f=>{const{experienceOptions:D,options:p}=f,y=new he(this,D);return await y.getWorkflowManager().getInitializationPromise(),p.type!=="transaction"&&this.customer&&await y.attachCustomerDetails({email:this.customer.emailAddress}),y}),I=await Promise.all(F);return I.forEach(f=>f.getWorkflowManager().setWorkflowStateSyncEnabled(!0)),I}async initFromIntegrationProduct(e){var i;if(e==="")throw new v("No integration product ID provided.");const A=await N.getShadowGraphqlClient().mutate({mutation:ut,variables:{integrationProductId:e,claim:!0},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!A.data||!A.data.transactionCreate)throw new v("Failed to create transaction!");const n=A.data.transactionCreate;if(!n.product)throw new v("Failed to create transaction, product not available.");this.currencyCode=(i=n.product.partner)==null?void 0:i.currencyCode;const a=P.getMap("transactionOwnerIds")||new Map;a.set(n.id,n.transactionOwnerId),P.setMap("transactionOwnerIds",a),this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:async o=>this.updateTransactionState({...o,context:{transactionOwnerId:n.transactionOwnerId}})},this.initialized=!0}async initFromTransaction(e,t=!1){var o,s,r,g;if(e==="")throw new v("No transaction ID provided.");const A=N.getShadowGraphqlClient(),n=async()=>{var w,h;const d=(w=(await A.query({query:Ie,variables:{ids:[e]},fetchPolicy:"no-cache",errorPolicy:"all"})).data)==null?void 0:w.transactions[0];if(!d)throw new v("Failed to read transaction.");if(!d.product)throw new v("Failed to load transaction, product not available.");this.currencyCode=(h=d.product.partner)==null?void 0:h.currencyCode,this.experienceOptions={product:d.product,transaction:d,layouts:[],stateMutationFunc:async()=>{throw new k("State mutation is forbidden in read only mode!")},readOnly:t},this.initialized=!0};if(t)return await n();const a=P.getMap("transactionOwnerIds")||new Map,i=a.get(e);if(i){const d=(o=(await A.query({query:Ie,variables:{ids:[e]},errorPolicy:"all"})).data)==null?void 0:o.transactions[0];if(!d)throw new v("Failed to read transaction.");if(!d.product)throw new v("Failed to load transaction, product not available.");this.currencyCode=(s=d.product.partner)==null?void 0:s.currencyCode,this.experienceOptions={product:d.product,transaction:d,layouts:[],stateMutationFunc:async w=>this.updateTransactionState({...w,context:{transactionOwnerId:i}}),readOnly:t},this.initialized=!0;return}try{const d=(r=(await A.mutate({mutation:vA,variables:{id:e},errorPolicy:"all"})).data)==null?void 0:r.transactionClaim;if(!d)throw new v("Failed to read transaction.");if(!d.product)throw new v("Failed to load transaction, product not available.");this.currencyCode=(g=d.product.partner)==null?void 0:g.currencyCode,d.transactionOwnerId&&(a.set(d.id,d.transactionOwnerId),P.setMap("transactionOwnerIds",a)),this.experienceOptions={product:d.product,transaction:d,layouts:[],stateMutationFunc:async w=>this.updateTransactionState({...w,context:{transactionOwnerId:d.transactionOwnerId}}),readOnly:t},this.initialized=!0}catch{throw new v("Attempted to access a transaction that isn't available.")}}async getWorkflowExperienceDeprecated(e,t,A){var n,a,i,o;if(!this.initialized||!this.experienceOptions)throw new v("Cannot launch experience: Not initialized.");if(this.experienceOptions.transaction.workflowId){const s=await Ce(this.experienceOptions.transaction.workflowId);if(this.experienceOptions.workflow=s,this.experienceOptions.transaction.workflowState){const g=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(g.layouts).map(B=>B.layout),await l.rehydrateSerializedLayout(g),await ne(g),this.experienceOptions.reloadedState=g}this.experienceOptions.previewService=A&&A(s),this.experienceOptions.renderableContextService=new ye(this.experienceOptions.layouts),(n=this.experienceOptions.product)!=null&&n.modelUrl&&(this.experienceOptions.modelContainer=(a=this.experienceOptions.previewService)==null?void 0:a.loadModel({model:this.experienceOptions.product.modelUrl,contextService:this.experienceOptions.renderableContextService}));const r=new he(this,this.experienceOptions);return await r.getWorkflowManager().getInitializationPromise(),r}if(e){const r=(P.getMap("transactionOwnerIds")||new Map).get(this.experienceOptions.transaction.id),g=N.getShadowGraphqlClient().mutate({mutation:kA,variables:{workflowId:e,id:this.experienceOptions.transaction.id},context:{transactionOwnerId:r}}),B=Ce(e);if(await Promise.all([g,B]),this.experienceOptions.workflow=await B,t){const w=JSON.parse(t);this.experienceOptions.layouts=Object.values(w.layouts).map(h=>h.layout),await l.rehydrateSerializedLayout(w),await ne(w),this.experienceOptions.reloadedState=w}else this.experienceOptions.layouts=et(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=A&&A(await B),this.experienceOptions.renderableContextService=new ye(this.experienceOptions.layouts),(i=this.experienceOptions.product)!=null&&i.modelUrl&&(this.experienceOptions.modelContainer=(o=this.experienceOptions.previewService)==null?void 0:o.loadModel({model:this.experienceOptions.product.modelUrl,contextService:this.experienceOptions.renderableContextService}));const d=new he(this,this.experienceOptions);return await d.getWorkflowManager().getInitializationPromise(),d}throw new v("No workflow ID provided.")}getPreviewService(){var e;return(e=this.experienceOptions)==null?void 0:e.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new v("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new v("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}configureUrls(e,t,A){W.setHubUrl(e),W.setServerUrl(t),W.setServicesApiUrl(A),this.getIntegration()}storeCustomer(e){const t=P.getMap("partnerCustomerIds")||new Map;t.set(e.partner.id,e.id),P.setMap("partnerCustomerIds",t)}async getIntegrationProductById(e){var a,i;const n=(a=(await N.getShadowGraphqlClient().query({query:JA,variables:{ids:[e]},fetchPolicy:"no-cache",errorPolicy:"all"})).data)==null?void 0:a.integrationProducts;if(!n||n.length===0||!((i=n[0])!=null&&i.id))throw new Error("Integration product not found.");return new $e(n[0])}async getIntegrationProductFromExternalIds(e,t){var i;const a=(i=(await N.getShadowGraphqlClient().query({query:TA,variables:{externalProductId:t,externalIntegrationId:e},fetchPolicy:"no-cache",errorPolicy:"all"})).data)==null?void 0:i.integrationProductFromExternalIds;if(!(a!=null&&a.id))throw new Error("Integration product not found.");return new $e(a)}async getIntegrationProduct(e){return e.type==="integration"?this.getIntegrationProductById(e.integrationProductId):this.getIntegrationProductFromExternalIds(e.externalIntegrationId,e.externalProductId)}}class ya{getClient(){return this.client??{}}setClient(e){this.client=e}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}async reset(){}updateStateWithServer(e){}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(e){}addPoller(e){}addConfirmCallback(e){}addEditedCallback(e){}addElementsCallback(e){}addInformationResultCallback(e){}addInitCallback(e){}addMakingAdjustmentsCallback(e){}addMandatoryCallback(e){}addMetadataCallback(e){}addSelectionCallback(e){}addStepSpecificStorageCallback(e,t){}addStorageCallback(e){}getCommandDispatcher(){return e=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getModelContainer(){}getProfanities(){return[]}getRegionElements(e){return[]}getSerializedStep(e,t){}getStepSpecificServices(e){}getTransaction(){return{id:""}}getTransactionCustomer(){}setTransactionCustomer(){}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(e){}markUpdateCompleted(e){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}setCurrentAdjustingStepId(e){}setEditedStatus(e,t){}setInformationResults(e){}setMandatoryFulfilled(e,t){}async setSelectionsAndElements(e,t,A){}toggleDesignConfirmed(){}updateMetadata(e,t){}async updateStorage(e,t){}injectIntoPreviewService(e){return Promise.resolve()}ejectFromPreviewService(){}setWorkflowStateSyncEnabled(e){}}var gA=(c=>(c.SelectFrame="SelectFrame",c.SelectImage="SelectImage",c.Position="Position",c))(gA||{});class lA extends j{constructor(e,t){var A;super(e,t),this.frameService=(A=this.manager.getStepSpecificServices(this.getId()))==null?void 0:A.frameService}selectVariant(e){const t=this.manager.getRegionElements(this.step.stepName);return de.selectVariant(this.step,e.getResource(),t,this.manager,A=>this.setUpdateState(A))}onFrameDataChanged(e){this.frameService&&this.frameService.onFrameDataChanged(t=>{t&&e(t)})}async selectImage(e,t=!0){var A;if(await de.selectImage(this.step,e,this.manager),t){const n=((A=this.manager.getStepStorage(this.step.stepName))==null?void 0:A.framePatternData)||{};this.manager.updateStorage(this.step.stepName,{framePatternData:{...n,originalAssetKey:e.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0}})}}async canUseBackgroundRemover(){return this.manager.getClient().canUseAddon(me.BackgroundRemover)}async removeBackgroundFromImageSelection(e=!0){var a;if(!await this.canUseBackgroundRemover())throw new Error("The current Integration does not have access to the Background Remover. Please call canUseBackgroundRemover to ensure you disable this feature when appropriate.");const t=await this.getOriginalImageSelection();if(!t)throw new Error("You must supply an image selection before attempting to remove the background.");const A=await G.removeBackgroundFromAsset(t);e&&await de.selectImage(this.step,A,this.manager);const n=((a=this.manager.getStepStorage(this.step.stepName))==null?void 0:a.framePatternData)||{};return this.manager.updateStorage(this.step.stepName,{framePatternData:{...n,backgroundRemovedAssetKey:A.key,useOriginalAsset:!e}}),A}getImageData(){if(this.frameService)return this.frameService.getImageData()}getCurrentFrameStep(e,t,A,n){return n&&n.length>1&&e===void 0?"SelectFrame":t||A||this.getImageData()?"Position":"SelectImage"}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasOverlayImageUrl(){return this.step.data.overlayImageUrl}async getOriginalImageSelection(){var t,A;const e=(A=(t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.framePatternData)==null?void 0:A.originalAssetKey;if(e)return G.getLocalOrFromServer(e)}async getBackgroundRemovedImageSelection(){var t,A;const e=(A=(t=this.manager.getStepStorage(this.step.stepName))==null?void 0:t.framePatternData)==null?void 0:A.backgroundRemovedAssetKey;if(e)return G.getLocalOrFromServer(e)}hasBackgroundRemovedImageSelection(){var e,t;return!!((t=(e=this.getFrameStepStorage())==null?void 0:e.framePatternData)!=null&&t.backgroundRemovedAssetKey)}getUseOriginalImageSelection(){var e,t;return((t=(e=this.getFrameStepStorage())==null?void 0:e.framePatternData)==null?void 0:t.useOriginalAsset)??!1}async setUseOriginalImageSelection(e){var n;const t=((n=this.getFrameStepStorage())==null?void 0:n.framePatternData)||{};if(t.useOriginalAsset===e)return;const A=await this.getOriginalImageSelection();if(!A)throw new Error("You must provide an image selection before calling setUseOriginalImageSelection");if(e)await this.selectImage(A,!1);else{const a=await this.getBackgroundRemovedImageSelection();if(!a)throw new Error("You must call removeBackgroundFromImageSelection before attempting to apply the image.");await this.selectImage(a,!1)}this.manager.updateStorage(this.step.stepName,{framePatternData:{...t,useOriginalAsset:e}})}getFrameStepStorage(){return this.manager.getStepStorage(this.step.stepName)}}Object.defineProperty(C,"AspectType",{enumerable:!0,get:()=>l.AspectType}),Object.defineProperty(C,"AssetType",{enumerable:!0,get:()=>l.AssetType}),Object.defineProperty(C,"BringForwardCommand",{enumerable:!0,get:()=>l.BringForwardCommand}),Object.defineProperty(C,"BringToBackCommand",{enumerable:!0,get:()=>l.BringToBackCommand}),Object.defineProperty(C,"BringToFrontCommand",{enumerable:!0,get:()=>l.BringToFrontCommand}),Object.defineProperty(C,"CanvasCommand",{enumerable:!0,get:()=>l.CanvasCommand}),Object.defineProperty(C,"CommandContext",{enumerable:!0,get:()=>l.CommandContext}),Object.defineProperty(C,"CreateElementCommand",{enumerable:!0,get:()=>l.CreateElementCommand}),Object.defineProperty(C,"CreateLayoutCommand",{enumerable:!0,get:()=>l.CreateLayoutCommand}),Object.defineProperty(C,"DeleteElementCommand",{enumerable:!0,get:()=>l.DeleteElementCommand}),Object.defineProperty(C,"FontAlignmentCommand",{enumerable:!0,get:()=>l.FontAlignmentCommand}),Object.defineProperty(C,"FontColorCommand",{enumerable:!0,get:()=>l.FontColorCommand}),Object.defineProperty(C,"FontSizeCommand",{enumerable:!0,get:()=>l.FontSizeCommand}),Object.defineProperty(C,"FontSourceCommand",{enumerable:!0,get:()=>l.FontSourceCommand}),Object.defineProperty(C,"GroupCommand",{enumerable:!0,get:()=>l.GroupCommand}),Object.defineProperty(C,"LayoutElementFactory",{enumerable:!0,get:()=>l.LayoutElementFactory}),Object.defineProperty(C,"LayoutElementType",{enumerable:!0,get:()=>l.LayoutElementType}),Object.defineProperty(C,"MoveCommand",{enumerable:!0,get:()=>l.MoveCommand}),Object.defineProperty(C,"ResizeCommand",{enumerable:!0,get:()=>l.ResizeCommand}),Object.defineProperty(C,"RotateCommand",{enumerable:!0,get:()=>l.RotateCommand}),Object.defineProperty(C,"SendBackwardsCommand",{enumerable:!0,get:()=>l.SendBackwardsCommand}),Object.defineProperty(C,"StepAspectType",{enumerable:!0,get:()=>l.StepAspectType}),Object.defineProperty(C,"StepType",{enumerable:!0,get:()=>l.StepType}),Object.defineProperty(C,"TextChangeCommand",{enumerable:!0,get:()=>l.TextChangeCommand}),Object.defineProperty(C,"UnitOfMeasurement",{enumerable:!0,get:()=>l.UnitOfMeasurement}),Object.defineProperty(C,"dataUrlFromExternalUrl",{enumerable:!0,get:()=>l.dataUrlFromExternalUrl}),Object.defineProperty(C,"determineCorrectFontSizeAndLines",{enumerable:!0,get:()=>l.determineCorrectFontSizeAndLines}),Object.defineProperty(C,"findElement",{enumerable:!0,get:()=>l.findElement}),Object.defineProperty(C,"frameDataCache",{enumerable:!0,get:()=>l.frameDataCache}),Object.defineProperty(C,"generate",{enumerable:!0,get:()=>l.generate}),Object.defineProperty(C,"generateSVGWithUnknownColors",{enumerable:!0,get:()=>l.generateSVGWithUnknownColors}),Object.defineProperty(C,"getAttributesFromArrayBuffer",{enumerable:!0,get:()=>l.getAttributesFromArrayBuffer}),Object.defineProperty(C,"getAxisAlignedBoundingBox",{enumerable:!0,get:()=>l.getAxisAlignedBoundingBox}),Object.defineProperty(C,"getFrameData",{enumerable:!0,get:()=>l.getFrameData}),Object.defineProperty(C,"getSvgElement",{enumerable:!0,get:()=>l.getSvgElement}),Object.defineProperty(C,"loadFont",{enumerable:!0,get:()=>l.loadFont}),Object.defineProperty(C,"patternImageDataCache",{enumerable:!0,get:()=>l.patternImageDataCache}),Object.defineProperty(C,"registerFetchImplementation",{enumerable:!0,get:()=>l.registerFetchImplementation}),Object.defineProperty(C,"registerWindowImplementation",{enumerable:!0,get:()=>l.registerWindowImplementation}),Object.defineProperty(C,"rehydrateSerializedLayout",{enumerable:!0,get:()=>l.rehydrateSerializedLayout}),Object.defineProperty(C,"setCanvasModule",{enumerable:!0,get:()=>l.setCanvasModule}),C.AddonHandle=me,C.ArrayInput=ga,C.AssetNotFoundError=V,C.CollectionProduct=Ye,C.ColorOptionGlobalPropertyHandle=tA,C.ConversionDataType=Ct,C.ConversionLocation=Et,C.FileUploadGlobalPropertyHandle=_t,C.FlowExecutionNodeResult=Ee,C.FlowExecutionResult=sA,C.FlowService=oA,C.FrameService=ft,C.FrameStep=gA,C.FrameStepHandle=lA,C.GlobalPropertyHandle=Se,C.IllustrationStepHandle=Gt,C.InformationMessageType=we,C.InformationStepHandle=zt,C.IntegrationProduct=$e,C.IntegrationType=wt,C.LayoutNotFoundError=J,C.MaterialStepHandle=kt,C.MisconfigurationError=se,C.MockWorkflowManager=ya,C.ModelStepHandle=bt,C.ObjectInput=Ze,C.ObjectInputType=rA,C.OptionGlobalPropertyHandle=We,C.OptionNotFoundError=oe,C.ParseError=q,C.PictureStepHandle=Jt,C.ProductCameraRig=ht,C.ProductCollection=AA,C.ProductWorkflow=Ae,C.PromiseCache=Z,C.PromiseQueue=ve,C.QuestionStepHandle=Tt,C.QueueablePromise=Ue,C.ResourceNotFoundError=X,C.ShapeStepHandle=Ot,C.SpiffCommerceClient=cA,C.StakeholderType=ge,C.StepHandle=j,C.TextGlobalPropertyHandle=eA,C.TextInput=ca,C.TextStepHandle=Lt,C.Transform=aA,C.TransformCollection=nA,C.UnhandledBehaviorError=k,C.Variant=K,C.WorkflowExperienceEventType=Xt,C.WorkflowExperienceImpl=he,C.assetService=G,C.createDesign=Wt,C.designService=Me,C.digitalContentStepService=Mt,C.frameStepService=de,C.generateCommands=qt,C.generateStateFromDesignInputSteps=Jn,C.getBoundedOffsets=It,C.getWorkflow=Ce,C.getWorkflows=_e,C.graphQlManager=N,C.illustrationStepService=Be,C.materialStepService=Ge,C.modelStepService=ke,C.moduleStepService=yt,C.optionService=O,C.persistenceService=P,C.pictureStepService=be,C.questionStepService=Je,C.shapeStepService=te,C.shortenUrl=pt,C.spiffCoreConfiguration=W,C.stepAspectValuesToDesignInputSteps=bn,C.textStepService=L,C.toast=St,Object.defineProperty(C,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED