@spiffcommerce/core 22.7.1 → 22.7.2
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.js +2 -1
- package/dist/index.umd.cjs +2 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -13169,6 +13169,7 @@ const Js = f`
|
|
|
13169
13169
|
...OptionFields
|
|
13170
13170
|
}
|
|
13171
13171
|
colorPickerEnabled
|
|
13172
|
+
initialZoomLevel
|
|
13172
13173
|
disablePlaceholder
|
|
13173
13174
|
displayImageOnFinishStep
|
|
13174
13175
|
displaySelectionOnFinishStep
|
|
@@ -13617,7 +13618,7 @@ class ai {
|
|
|
13617
13618
|
} catch (A) {
|
|
13618
13619
|
throw console.error(A), new H("Critical - Unable to synchronize workflow state with server.");
|
|
13619
13620
|
}
|
|
13620
|
-
}, this.initialized = !1, this.options = e, this.options.applicationKey && ca(this.options.applicationKey), console.debug("------------------------"), console.debug("Spiff Commerce Core SDK"), console.debug("Version: 22.7.
|
|
13621
|
+
}, this.initialized = !1, this.options = e, this.options.applicationKey && ca(this.options.applicationKey), console.debug("------------------------"), console.debug("Spiff Commerce Core SDK"), console.debug("Version: 22.7.2"), console.debug(`Application Key Provided: ${!!this.options.applicationKey}`), console.debug("------------------------");
|
|
13621
13622
|
}
|
|
13622
13623
|
/** @deprecated Use `configure` instead */
|
|
13623
13624
|
configureUrls(e, t, A) {
|
package/dist/index.umd.cjs
CHANGED
|
@@ -2812,6 +2812,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
|
|
|
2812
2812
|
...OptionFields
|
|
2813
2813
|
}
|
|
2814
2814
|
colorPickerEnabled
|
|
2815
|
+
initialZoomLevel
|
|
2815
2816
|
disablePlaceholder
|
|
2816
2817
|
displayImageOnFinishStep
|
|
2817
2818
|
displaySelectionOnFinishStep
|
|
@@ -3183,4 +3184,4 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
|
|
|
3183
3184
|
...TagFields
|
|
3184
3185
|
}
|
|
3185
3186
|
}
|
|
3186
|
-
`,ce=async g=>{var e;for(const t in g.layouts){const A=g.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=g.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)}}},ei=async(g,e)=>{var n;const t=await N.getShadowGraphqlClient().query({query:za(((n=e==null?void 0:e.assets)==null?void 0:n.metadata)||!1),errorPolicy:"all",fetchPolicy:"no-cache",variables:{ids:g}}),A=t.data.workflows;if(A===void 0||A.length!==g.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&&k.cacheAsset(i.option.defaultVariant.asset),i.option.colorProfile&&k.cacheAsset(i.option.colorProfile),(r=i.option.variants)==null||r.forEach(c=>{c.asset&&k.cacheAsset(c.asset),c.thumbnail&&k.cacheAsset(c.thumbnail),c.material&&k.cacheMaterial(c.material)}),ne.set({id:i.option.id},Promise.resolve(i.option)))}),a.finalizeStepConfig||(a.finalizeStepConfig={}),a.finalizeStepConfig.termsMarkdown=a.partner.termsMarkdown}),A},ti=async(g,e)=>{const A=(await e).find(n=>n.id===g);if(!A)throw new Error(`Workflow not found: ${g}`);return A},lt=async(g,e)=>{const t=g.map(o=>ne.get({id:o,options:e})),A=g.filter((o,s)=>t[s]===void 0);if(A.length===0)return Promise.all(t);const n=ei(A,e),a=A.map(o=>ne.set({id:o,options:e},ti(o,n))),i=t.filter(o=>o!==void 0);return await Promise.all(i.concat(a))},pe=async(g,e)=>(await lt([g],e))[0],Ai=g=>g.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})),Bt=(g,e)=>{const t=g.workflowState,A=t?JSON.parse(t):void 0;return A?Object.values(A.layouts).map(n=>n.layout):Ai(e.panels)};class yA{constructor(e){this.activeIntegration=void 0,this.updateTransactionState=async t=>{try{return N.getShadowGraphqlClient().mutate({...t,mutation:an})}catch(A){throw console.error(A),new H("Critical - Unable to synchronize workflow state with server.")}},this.initialized=!1,this.options=e,this.options.applicationKey&&UA(this.options.applicationKey),console.debug("------------------------"),console.debug("Spiff Commerce Core SDK"),console.debug("Version: 22.7.1"),console.debug(`Application Key Provided: ${!!this.options.applicationKey}`),console.debug("------------------------")}configureUrls(e,t,A){V.setHubUrl(e),V.setServerUrl(t),V.setServicesApiUrl(A),this.options.applicationKey&&this.getIntegration()}configure(e){V.setHubUrl(e.hubUrl),V.setServerUrl(e.serverUrl),V.setServicesApiUrl(e.servicesApiUrl),this.marketplaceThemeInstallId=e.marketplaceThemeInstallId,this.marketplaceThemeInstallConfigurationId=e.marketplaceThemeInstallConfigurationId,e.bearerAuthenticationToken&&pt(e.bearerAuthenticationToken),this.options.applicationKey&&this.getIntegration()}getAssetManager(){return k}getCurrencyCode(){if(this.currencyCode===void 0)throw new Error("No currency code set.");return this.currencyCode}getFlowService(){if(!kA())throw new Error("Application key required to use Flow Service.");return new FA}async getIntegration(){if(this.activeIntegration)return this.activeIntegration;if(!this.options.applicationKey)throw new Error("Cannot get current Integration without specifying an Application Key.");const e=async()=>(await N.getShadowGraphqlClient().query({query:tn,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=x.getMap("bundleOwnerIds");if(t!=null&&t.has(e))return Promise.resolve({success:!0,stakeholderType:Ee.Owner});const A=x.getMap("bundlePartnerIds")||new Map;if(A.has(e)){const i=A.get(e),s=(x.getMap("partnerCustomerIds")||new Map).get(i);if(s&&await this.authenticateCustomerId(s)){const c=(a=(n=this.customer)==null?void 0:n.bundleStakeholders)==null?void 0:a.find(d=>{var B;return((B=d.bundle)==null?void 0:B.id)===e});if(c)return Promise.resolve({success:!0,stakeholderType:c.type})}}return Promise.resolve({success:!1})}async authenticateTransactionFromLocalStorage(e){var c,d,B,C,w,h;const t=N.getShadowGraphqlClient(),A=await t.query({query:Ka,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(!((d=(c=n.product)==null?void 0:c.partner)==null?void 0:d.id))throw new Error(`Unable to read transaction: ${e}`);if(n.isOrdered)return Promise.resolve({success:!1,transactionReadOnly:!0});const i=x.getMap("transactionOwnerIds");if(i!=null&&i.has(e))return Promise.resolve({success:!0,stakeholderType:Ee.Owner});const o=x.getMap("transactionCustomerIds");if(o!=null&&o.has(e)){const u=o.get(e);if(u&&await this.authenticateCustomerId(u)){const m=((C=(B=this.customer)==null?void 0:B.bundleStakeholders)==null?void 0:C.find(S=>{var I,f;return(f=(I=S.bundle)==null?void 0:I.transactions)==null?void 0:f.some(D=>D.id===e)}))||((h=(w=this.customer)==null?void 0:w.stakeholders)==null?void 0:h.find(S=>{var I;return((I=S.transaction)==null?void 0:I.id)===e}));if(m)return Promise.resolve({success:!0,stakeholderType:m.type})}}const r=(await t.query({query:ja,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=x.getMap("transactionCustomerIds");t!=null&&t.has(e)&&(t.delete(e),x.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:Va,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:e}})).data.customer;if(!n.id){const s=(i=(await t.mutate({mutation:Wa,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=x.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:Xa,errorPolicy:"all",fetchPolicy:"no-cache",variables:{loginToken:n}})).data)==null?void 0:o.customerAuthenticate;return i?(this.storeCustomer(i),ft(n),this.customer=i,!0):!1}async generateVerificationCode(e){await N.getShadowGraphqlClient().mutate({mutation:qa,variables:{emailAddress:e}})}async verifyCode(e,t){var a,i;const n=(a=(await N.getShadowGraphqlClient().mutate({mutation:Za,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=x.getMap("customerTokens")||new Map;return o.set(n.id,n.loginToken),x.setMap("customerTokens",o),this.storeCustomer(n),ft(n.loginToken),this.customer={...n,loginToken:void 0},!0}return!1}async getNewBundle(e,t,A){var r,c,d,B,C;const a=(d=(await N.getShadowGraphqlClient().mutate({mutation:Qa(((c=(r=A==null?void 0:A.graphql)==null?void 0:r.productCollection)==null?void 0:c.eagerFetchProducts)||!1),variables:{collectionId:e,initialMetadata:t?Object.entries(t).map((w,h)=>({key:w[0],value:w[1]})):void 0},fetchPolicy:"no-cache"})).data)==null?void 0:d.bundleCreate;if(!(a!=null&&a.id))throw new Error("Unable to create bundle");const i=x.getMap("bundlePartnerIds")||new Map;i.set(a.id,a.partner.id),x.setMap("bundlePartnerIds",i);const o=x.getMap("bundleOwnerIds")||new Map;o.set(a.id,a.bundleOwnerId),x.setMap("bundleOwnerIds",o);const s=new pA(this,a,void 0,void 0,a.bundleOwnerId,{eagerFetchProducts:(C=(B=A==null?void 0:A.graphql)==null?void 0:B.productCollection)==null?void 0:C.eagerFetchProducts});return await s.getInitializationPromise(),s}async getExistingBundle(e,t,A,n){var u,Q,m,S,I,f,D,p,M,y,P;const a=x.getMap("bundleOwnerIds"),i=a==null?void 0:a.get(e),s=((u=Object.entries(localStorage).find(([v,Y])=>v.startsWith("CognitoIdentityServiceProvider")&&v.endsWith("idToken")))==null?void 0:u[0])||"",r=localStorage.getItem(s),c={};r&&!At(r)&&(c.Authorization=`Bearer ${r}`);const d={bundleOwnerId:i,...c,...(Q=n==null?void 0:n.graphql)==null?void 0:Q.additionalHeaders},B=await N.getShadowGraphqlClient().query({query:Ea(((S=(m=n==null?void 0:n.graphql)==null?void 0:m.productCollection)==null?void 0:S.eagerFetchProducts)||!1),variables:{id:e},fetchPolicy:"no-cache",context:{headers:d}});if(!((I=B.data)!=null&&I.bundles)||((f=B.data)==null?void 0:f.bundles.length)===0||!((D=B.data)!=null&&D.bundles[0]))throw new Error(`Unable to find bundle: ${e}`);const C=(p=B.data)==null?void 0:p.bundles[0],w=x.getMap("bundlePartnerIds")||new Map;w.set(C.id,C.partner.id),x.setMap("bundlePartnerIds",w);const h=new pA(this,C,t,A,i,{additionalHeaders:(M=n==null?void 0:n.graphql)==null?void 0:M.additionalHeaders,eagerFetchProducts:(P=(y=n==null?void 0:n.graphql)==null?void 0:y.productCollection)==null?void 0:P.eagerFetchProducts});return await h.getInitializationPromise(),h}async getBundleStakeholders(){var a;if(!this.customer)throw new Error("Customer not authenticated.");const e=await N.getShadowGraphqlClient().query({query:ua,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=x.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)}),x.setMap("bundlePartnerIds",n),A}async getStepTags(e){const t=N.getShadowGraphqlClient();let A={};const n=e.steps.map(i=>`${e.id}_${i.stepName}`),a=await t.query({query:_a,fetchPolicy:"no-cache",variables:{entityIds:n}});for(const[i,o]of e.steps.entries()){const s=a.data.tagsMany[i];A={...A,[o.stepName]:s.map(r=>r.name)}}return A}async getWorkflowExperience(e,t,A,n){var B,C,w,h,u;if(!n)return await this.getWorkflowExperienceDeprecated(e,t,A);const a=async()=>{var m,S,I;const Q=N.getShadowGraphqlClient();if(n.type==="transaction"){const{transactionId:f,readOnly:D}=n,p=await Q.query({query:ye,variables:{ids:[f]},errorPolicy:"all",fetchPolicy:"no-cache"});if(!((m=p.data)!=null&&m.transactions)||p.data.transactions.length===0)throw new H("Existing transaction not found.");const M=(S=p.data)==null?void 0:S.transactions[0];if(!M.workflowId)throw new H("Existing transaction has no workflow ID.");const y=await pe(M.workflowId);if(!M.product)throw new H("Failed to load transaction, product not available.");!this.activeIntegration&&((I=M.integrationProduct)!=null&&I.integration)&&(this.activeIntegration=Promise.resolve(M.integrationProduct.integration));const P=await this.getStepTags(y);return{transaction:M,workflow:y,stepTags:P,readOnly:D}}if(n.type==="integration"||n.type==="external"){const f=async()=>{const P=n.type==="integration"?{integrationProductId:n.integrationProductId}:{externalIntegrationId:n.externalIntegrationId,externalProductId:n.externalProductId},v=await Q.mutate({mutation:Rt,variables:{...P,workflowId:n.workflowId,designName:n.designName,claim:!0,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!v.data||!v.data.transactionCreate)throw new H("Failed to create transaction!");const Y=v.data.transactionCreate;if(!Y.product)throw new H("Failed to create transaction, product not available.");return Y},D=pe(n.workflowId,n==null?void 0:n.graphql),[p,M]=await Promise.all([f(),D]),y=await this.getStepTags(M);return{transaction:p,workflow:M,stepTags:y}}throw new H("No workflow ID provided.")},{transaction:i,workflow:o,stepTags:s,readOnly:r}=await a();this.currencyCode=(B=i.product.partner)==null?void 0:B.currencyCode;const c={product:i.product,transaction:i,stepTags:s,layouts:[],singleVariantsRenderable:(C=n==null?void 0:n.workflowConfiguration)==null?void 0:C.singleVariantsRenderable,stateMutationFunc:r?async()=>{throw new G("State mutation is forbidden in read only mode!")}:async Q=>{const S=(x.getMap("transactionOwnerIds")||new Map).get(i.id)||void 0;return this.updateTransactionState({...Q,context:{transactionOwnerId:S}})},readOnly:r,workflow:o};if(n.type==="transaction"&&i.workflowState){const Q=JSON.parse(i.workflowState);c.layouts=Object.values(Q.layouts).map(m=>m.layout),await l.rehydrateSerializedLayout(Q),await ce(Q),c.reloadedState=Q}else if(!r&&n.workflowState){const Q=JSON.parse(n.workflowState);c.layouts=Object.values(Q.layouts).map(m=>m.layout),await l.rehydrateSerializedLayout(Q),await ce(Q),c.reloadedState=Q}else c.layouts=Bt(c.transaction,c.workflow);if(c.renderableContextService=new Re(c.layouts),n.previewService?(c.previewService=n.previewService,(w=c.product)!=null&&w.modelUrl&&(c.modelContainer=c.previewService.loadModel({model:c.product.modelUrl,contextService:c.renderableContextService}))):(c.previewService=A&&A(o),(h=c.product)!=null&&h.modelUrl&&(c.modelContainer=(u=c.previewService)==null?void 0:u.loadModel({model:c.product.modelUrl,contextService:c.renderableContextService}))),n.type!=="transaction"){const Q=x.getMap("transactionOwnerIds")||new Map;Q.set(i.id,i.transactionOwnerId),x.setMap("transactionOwnerIds",Q)}else c.isReloadedTransaction=!0;this.initialized=!0,this.experienceOptions=c;const d=new De(this,c);return await d.getWorkflowManager().getInitializationPromise(),n.type!=="transaction"&&this.customer&&await d.attachCustomerDetails({email:this.customer.emailAddress}),d}async getWorkflowExperiences(e,t){if(e.length===0)throw new H("No options provided!");const A=N.getShadowGraphqlClient(),n=async f=>{var y,P,v;if(f.length===0)return[];const D=f.map(Y=>Y.option.transactionId),p=await A.query({query:ye,variables:{ids:D},errorPolicy:"all",fetchPolicy:"no-cache"}),M=p.data.transactions;if(M.length!==f.length){const Y=((P=(y=p.errors)==null?void 0:y[0])==null?void 0:P.message)||"Unknown error";throw new H(`Not all transactions were found: ${Y}`)}return!this.activeIntegration&&((v=M[0].integrationProduct)!=null&&v.integration)&&(this.activeIntegration=Promise.resolve(M[0].integrationProduct.integration)),M.map((Y,b)=>{var U;return{transaction:Y,workflowId:Y.workflowId,readOnly:((U=f.find(j=>j.option.transactionId===Y.id))==null?void 0:U.option.readOnly)??!1,index:f[b].index}})},a=async f=>{var M,y,P;if(f.length===0)return[];const D=await A.mutate({mutation:An,variables:{inputs:f.map(v=>({integrationProductId:v.option.type==="integration"?v.option.integrationProductId:void 0,externalIntegrationId:v.option.type==="external"?v.option.externalIntegrationId:void 0,externalProductId:v.option.type==="external"?v.option.externalProductId:void 0,workflowId:v.option.workflowId,designName:v.option.designName,claim:!0})),marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},errorPolicy:"all",fetchPolicy:"no-cache"}),p=(M=D.data)==null?void 0:M.transactionCreateMany;if(!p||p.length===0){const v=((P=(y=D.errors)==null?void 0:y[0])==null?void 0:P.message)||"Unknown error";throw new H(`Failed to create transactions: ${v}`)}return p.map((v,Y)=>({transaction:v,workflowId:v.workflowId,readOnly:!1,index:f[Y].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=ut(o,10),c=ut(s,10),d=(await Promise.all([...r.map(n),...c.map(a)])).flat(),B=[...new Set(d.map(f=>f.workflowId))],C=await lt(B,t),w=new Map(C.map(f=>[f.id,f])),h=x.getMap("transactionOwnerIds")||new Map,u=d.map(async f=>{var j;const{transaction:D,workflowId:p,readOnly:M,index:y}=f,P=w.get(p),v=await this.getStepTags(P),Y=e[y];!h.get(D.id)&&D.transactionOwnerId&&h.set(D.id,D.transactionOwnerId);const b=h.get(D.id)||void 0,U={product:D.product,transaction:D,stepTags:v,layouts:[],singleVariantsRenderable:(j=Y==null?void 0:Y.workflowConfiguration)==null?void 0:j.singleVariantsRenderable,stateMutationFunc:M?async()=>{throw new G("State mutation is forbidden in read only mode!")}:async T=>this.updateTransactionState({...T,context:{transactionOwnerId:b}}),readOnly:M,workflow:P,isReloadedTransaction:Y.type==="transaction"};if(Y.type==="transaction"&&D.workflowState){const T=JSON.parse(D.workflowState);U.layouts=Object.values(T.layouts||{}).map($=>$.layout),await l.rehydrateSerializedLayout(T),await ce(T),U.reloadedState=T}else if(!M&&Y.workflowState){const T=JSON.parse(Y.workflowState);U.layouts=Object.values(T.layouts||{}).map($=>$.layout),await l.rehydrateSerializedLayout(T),await ce(T),U.reloadedState=T}else U.layouts=Bt(U.transaction,U.workflow);return U.renderableContextService=new Re(U.layouts),U.delayWorkflowStateSync=!0,this.initialized=!0,this.experienceOptions=U,{experienceOptions:U,index:y,options:Y}}),Q=await Promise.all(u);x.setMap("transactionOwnerIds",h);const S=Q.sort((f,D)=>f.index-D.index).map(async f=>{const{experienceOptions:D,options:p}=f,M=new De(this,D);return await M.getWorkflowManager().getInitializationPromise(),p.type!=="transaction"&&this.customer&&await M.attachCustomerDetails({email:this.customer.emailAddress}),M}),I=await Promise.all(S);return I.forEach(f=>f.getWorkflowManager().setWorkflowStateSyncEnabled(!0)),I}async initFromIntegrationProduct(e){var i;if(e==="")throw new H("No integration product ID provided.");const A=await N.getShadowGraphqlClient().mutate({mutation:Rt,variables:{integrationProductId:e,claim:!0,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},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 H("Failed to create transaction!");const n=A.data.transactionCreate;if(!n.product)throw new H("Failed to create transaction, product not available.");this.currencyCode=(i=n.product.partner)==null?void 0:i.currencyCode;const a=x.getMap("transactionOwnerIds")||new Map;a.set(n.id,n.transactionOwnerId),x.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,c;if(e==="")throw new H("No transaction ID provided.");const A=N.getShadowGraphqlClient(),n=async()=>{var C,w;const B=(C=(await A.query({query:ye,variables:{ids:[e]},fetchPolicy:"no-cache",errorPolicy:"all"})).data)==null?void 0:C.transactions[0];if(!B)throw new H("Failed to read transaction.");if(!B.product)throw new H("Failed to load transaction, product not available.");this.currencyCode=(w=B.product.partner)==null?void 0:w.currencyCode,this.experienceOptions={product:B.product,transaction:B,layouts:[],stateMutationFunc:async()=>{throw new G("State mutation is forbidden in read only mode!")},readOnly:t},this.initialized=!0};if(t)return await n();const a=x.getMap("transactionOwnerIds")||new Map,i=a.get(e);if(i){const B=(o=(await A.query({query:ye,variables:{ids:[e]},errorPolicy:"all"})).data)==null?void 0:o.transactions[0];if(!B)throw new H("Failed to read transaction.");if(!B.product)throw new H("Failed to load transaction, product not available.");this.currencyCode=(s=B.product.partner)==null?void 0:s.currencyCode,this.experienceOptions={product:B.product,transaction:B,layouts:[],stateMutationFunc:async C=>this.updateTransactionState({...C,context:{transactionOwnerId:i}}),readOnly:t},this.initialized=!0;return}try{const B=(r=(await A.mutate({mutation:nn,variables:{id:e},errorPolicy:"all"})).data)==null?void 0:r.transactionClaim;if(!B)throw new H("Failed to read transaction.");if(!B.product)throw new H("Failed to load transaction, product not available.");this.currencyCode=(c=B.product.partner)==null?void 0:c.currencyCode,B.transactionOwnerId&&(a.set(B.id,B.transactionOwnerId),x.setMap("transactionOwnerIds",a)),this.experienceOptions={product:B.product,transaction:B,layouts:[],stateMutationFunc:async C=>this.updateTransactionState({...C,context:{transactionOwnerId:B.transactionOwnerId}}),readOnly:t},this.initialized=!0}catch{throw new H("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 H("Cannot launch experience: Not initialized.");if(this.experienceOptions.transaction.workflowId){const s=await pe(this.experienceOptions.transaction.workflowId);if(this.experienceOptions.workflow=s,this.experienceOptions.transaction.workflowState){const c=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(c.layouts).map(d=>d.layout),await l.rehydrateSerializedLayout(c),await ce(c),this.experienceOptions.reloadedState=c}this.experienceOptions.previewService=A&&A(s),this.experienceOptions.renderableContextService=new Re(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 De(this,this.experienceOptions);return await r.getWorkflowManager().getInitializationPromise(),r}if(e){const r=(x.getMap("transactionOwnerIds")||new Map).get(this.experienceOptions.transaction.id),c=N.getShadowGraphqlClient().mutate({mutation:on,variables:{workflowId:e,id:this.experienceOptions.transaction.id},context:{transactionOwnerId:r}}),d=pe(e);if(await Promise.all([c,d]),this.experienceOptions.workflow=await d,t){const C=JSON.parse(t);this.experienceOptions.layouts=Object.values(C.layouts).map(w=>w.layout),await l.rehydrateSerializedLayout(C),await ce(C),this.experienceOptions.reloadedState=C}else this.experienceOptions.layouts=Bt(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=A&&A(await d),this.experienceOptions.renderableContextService=new Re(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 B=new De(this,this.experienceOptions);return await B.getWorkflowManager().getInitializationPromise(),B}throw new H("No workflow ID provided.")}getPreviewService(){var e;return(e=this.experienceOptions)==null?void 0:e.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new H("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new H("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}storeCustomer(e){const t=x.getMap("partnerCustomerIds")||new Map;t.set(e.partner.id,e.id),x.setMap("partnerCustomerIds",t)}async getIntegrationProductById(e){var a,i;const n=(a=(await N.getShadowGraphqlClient().query({query:cn,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 gt(n[0])}async getIntegrationProductFromExternalIds(e,t){var i;const a=(i=(await N.getShadowGraphqlClient().query({query:gn,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 gt(a)}async getIntegrationProduct(e){return e.type==="integration"?this.getIntegrationProductById(e.integrationProductId):this.getIntegrationProductFromExternalIds(e.externalIntegrationId,e.externalProductId)}async getShareActionsForTransaction(e){const A=(x.getMap("transactionOwnerIds")||new Map).get(e)||void 0,n=await N.getShadowGraphqlClient().query({query:rn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:e},context:{transactionOwnerId:A}});if(!n.data.transactions||n.data.transactions.length!==1)throw new Error(`Failed to fetch share actions for transaction: ${e}`);return n.data.transactions[0].transactionShareActions}}class ni{getClient(){return this.client??{}}getWorkflowExperience(){return{}}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{}}getStepSelections(){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){}async updateTransactionShareActions(){}addValidationCallback(e){}setStepError(e,t,A){}getStepErrors(e){}getValidationErrors(){return{steps:new Map}}async updateTransactionStakeholders(){}getStepTags(e){return[]}}var YA=(g=>(g.SelectFrame="SelectFrame",g.SelectImage="SelectImage",g.Position="Position",g))(YA||{});class PA extends K{constructor(e,t,A){var n;super(e,t,A),this.frameService=(n=this.manager.getStepSpecificServices(this.getId()))==null?void 0:n.frameService}selectVariant(e){const t=this.manager.getRegionElements(this.step.stepName);return q.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,A=!0){var n;if(await q.selectImage(this.step,e,this.manager,A),t){const a=((n=this.manager.getStepStorage(this.step.stepName))==null?void 0:n.framePatternData)||{};this.manager.updateStorage(this.step.stepName,{framePatternData:{...a,originalAssetKey:e.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0}})}}async canUseBackgroundRemover(){return this.manager.getClient().canUseAddon(Me.BackgroundRemover)}async canRemoveBackground(){var e,t,A,n;return await this.canUseBackgroundRemover()&&this.hasOriginalImageSelection()&&!!((t=(e=this.frameService)==null?void 0:e.getImageData())!=null&&t.src)&&!((n=(A=this.frameService)==null?void 0:A.getImageData())!=null&&n.svg)}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 k.removeBackgroundFromAsset(t);e&&await q.selectImage(this.step,A,this.manager,!1);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}changeColors(e){q.changeColors(this.step,this.manager,e)}getImageData(){if(this.frameService)return this.frameService.getImageData()}async getColorOption(){return this.step.data.colorOption}getAvailableColors(){return this.step.data.colorPickerEnabled?q.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}async getOriginalImageColors(){const e=this.getImageData();return e!=null&&e.svg?(await l.generateSVGWithUnknownColors(e.svg)).colors:void 0}getMaxAllowedColors(){return this.step.data.maxColors}getUniqueColorCount(){return q.getUniqueColorCount(this.step,this.manager)}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}getWhitelistedExtensions(){return[...this.step.data.whitelistedExtensions,...this.step.data.whitelistedExtensions.includes(".jpg")?[".jpeg"]:[]]}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 k.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 k.getLocalOrFromServer(e)}hasOriginalImageSelection(){var e,t;return!!((t=(e=this.manager.getStepStorage(this.step.stepName))==null?void 0:e.framePatternData)!=null&&t.originalAssetKey)}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,!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,!1)}this.manager.updateStorage(this.step.stepName,{framePatternData:{...t,useOriginalAsset:e}})}getFrameStepStorage(){return this.manager.getStepStorage(this.step.stepName)}}Object.defineProperty(E,"AspectType",{enumerable:!0,get:()=>l.AspectType}),Object.defineProperty(E,"AssetType",{enumerable:!0,get:()=>l.AssetType}),Object.defineProperty(E,"BringForwardCommand",{enumerable:!0,get:()=>l.BringForwardCommand}),Object.defineProperty(E,"BringToBackCommand",{enumerable:!0,get:()=>l.BringToBackCommand}),Object.defineProperty(E,"BringToFrontCommand",{enumerable:!0,get:()=>l.BringToFrontCommand}),Object.defineProperty(E,"CanvasCommand",{enumerable:!0,get:()=>l.CanvasCommand}),Object.defineProperty(E,"CommandContext",{enumerable:!0,get:()=>l.CommandContext}),Object.defineProperty(E,"CreateElementCommand",{enumerable:!0,get:()=>l.CreateElementCommand}),Object.defineProperty(E,"CreateLayoutCommand",{enumerable:!0,get:()=>l.CreateLayoutCommand}),Object.defineProperty(E,"DeleteElementCommand",{enumerable:!0,get:()=>l.DeleteElementCommand}),Object.defineProperty(E,"FontAlignmentCommand",{enumerable:!0,get:()=>l.FontAlignmentCommand}),Object.defineProperty(E,"FontColorCommand",{enumerable:!0,get:()=>l.FontColorCommand}),Object.defineProperty(E,"FontSizeCommand",{enumerable:!0,get:()=>l.FontSizeCommand}),Object.defineProperty(E,"FontSourceCommand",{enumerable:!0,get:()=>l.FontSourceCommand}),Object.defineProperty(E,"GroupCommand",{enumerable:!0,get:()=>l.GroupCommand}),Object.defineProperty(E,"LayoutElementFactory",{enumerable:!0,get:()=>l.LayoutElementFactory}),Object.defineProperty(E,"LayoutElementType",{enumerable:!0,get:()=>l.LayoutElementType}),Object.defineProperty(E,"MoveCommand",{enumerable:!0,get:()=>l.MoveCommand}),Object.defineProperty(E,"ResizeCommand",{enumerable:!0,get:()=>l.ResizeCommand}),Object.defineProperty(E,"RotateCommand",{enumerable:!0,get:()=>l.RotateCommand}),Object.defineProperty(E,"SendBackwardsCommand",{enumerable:!0,get:()=>l.SendBackwardsCommand}),Object.defineProperty(E,"StepAspectType",{enumerable:!0,get:()=>l.StepAspectType}),Object.defineProperty(E,"StepType",{enumerable:!0,get:()=>l.StepType}),Object.defineProperty(E,"TextChangeCommand",{enumerable:!0,get:()=>l.TextChangeCommand}),Object.defineProperty(E,"UnitOfMeasurement",{enumerable:!0,get:()=>l.UnitOfMeasurement}),Object.defineProperty(E,"UpdateImageSourceCommand",{enumerable:!0,get:()=>l.UpdateImageSourceCommand}),Object.defineProperty(E,"dataUrlFromExternalUrl",{enumerable:!0,get:()=>l.dataUrlFromExternalUrl}),Object.defineProperty(E,"determineCorrectFontSizeAndLines",{enumerable:!0,get:()=>l.determineCorrectFontSizeAndLines}),Object.defineProperty(E,"findElement",{enumerable:!0,get:()=>l.findElement}),Object.defineProperty(E,"frameDataCache",{enumerable:!0,get:()=>l.frameDataCache}),Object.defineProperty(E,"generate",{enumerable:!0,get:()=>l.generate}),Object.defineProperty(E,"generateSVGWithUnknownColors",{enumerable:!0,get:()=>l.generateSVGWithUnknownColors}),Object.defineProperty(E,"getAttributesFromArrayBuffer",{enumerable:!0,get:()=>l.getAttributesFromArrayBuffer}),Object.defineProperty(E,"getAxisAlignedBoundingBox",{enumerable:!0,get:()=>l.getAxisAlignedBoundingBox}),Object.defineProperty(E,"getFrameData",{enumerable:!0,get:()=>l.getFrameData}),Object.defineProperty(E,"getSvgElement",{enumerable:!0,get:()=>l.getSvgElement}),Object.defineProperty(E,"loadFont",{enumerable:!0,get:()=>l.loadFont}),Object.defineProperty(E,"patternImageDataCache",{enumerable:!0,get:()=>l.patternImageDataCache}),Object.defineProperty(E,"registerFetchImplementation",{enumerable:!0,get:()=>l.registerFetchImplementation}),Object.defineProperty(E,"registerWindowImplementation",{enumerable:!0,get:()=>l.registerWindowImplementation}),Object.defineProperty(E,"rehydrateSerializedLayout",{enumerable:!0,get:()=>l.rehydrateSerializedLayout}),Object.defineProperty(E,"setCanvasModule",{enumerable:!0,get:()=>l.setCanvasModule}),Object.defineProperty(E,"svgToDataUrl",{enumerable:!0,get:()=>l.svgToDataUrl}),E.AddonHandle=Me,E.ArrayInput=ba,E.AssetNotFoundError=X,E.CollectionProduct=Ue,E.ColorOptionGlobalPropertyHandle=ot,E.ConversionDataType=Nt,E.ConversionLocation=xt,E.DigitalContentStepHandle=gA,E.FileUploadGlobalPropertyHandle=mA,E.FlowExecutionNodeResult=Ie,E.FlowExecutionResult=SA,E.FlowService=FA,E.FrameService=Tt,E.FrameStep=YA,E.FrameStepHandle=PA,E.GlobalPropertyHandle=He,E.IllustrationStepHandle=AA,E.InformationMessageType=re,E.InformationStepHandle=cA,E.IntegrationProduct=gt,E.IntegrationType=Yt,E.LayoutNotFoundError=J,E.MaterialStepHandle=nA,E.MisconfigurationError=de,E.MockWorkflowManager=ni,E.ModelStepHandle=aA,E.ModuleStepHandle=lA,E.ObjectInput=ct,E.ObjectInputType=MA,E.OptionGlobalPropertyHandle=it,E.OptionNotFoundError=Be,E.ParseError=te,E.PictureStepHandle=iA,E.ProductCameraRig=Pt,E.ProductCollection=DA,E.ProductWorkflow=fe,E.PromiseCache=ne,E.PromiseQueue=Le,E.QuestionStepHandle=oA,E.QueueablePromise=Oe,E.ResourceNotFoundError=ee,E.ShapeStepHandle=sA,E.SpiffCommerceClient=yA,E.StakeholderType=Ee,E.StepHandle=K,E.TextGlobalPropertyHandle=QA,E.TextInput=Ga,E.TextStepHandle=rA,E.TransactionShareActionType=yt,E.Transform=IA,E.TransformCollection=fA,E.UnhandledBehaviorError=G,E.Variant=W,E.WorkflowExperienceEventType=EA,E.WorkflowExperienceImpl=De,E.assetService=k,E.browserColorToHex=Kt,E.createDesign=wA,E.designService=ve,E.digitalContentStepService=ze,E.findPmsColors=Dn,E.frameStepService=q,E.generateCommands=hA,E.generateStateFromDesignInputSteps=Ca,E.getBoundedOffsets=bt,E.getWorkflow=pe,E.getWorkflows=lt,E.graphQlManager=N,E.illustrationStepService=Qe,E.matchHexToPms=un,E.materialStepService=je,E.modelStepService=Ve,E.moduleStepService=We,E.optionService=z,E.persistenceService=x,E.pictureStepService=Xe,E.pmsToRgb=hn,E.questionStepService=qe,E.rgbToPms=zt,E.setBearerAuthenticationToken=pt,E.shapeStepService=se,E.shortenUrl=Ot,E.spiffCoreConfiguration=V,E.stepAspectValuesToDesignInputSteps=da,E.textStepService=L,E.toast=Vt,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"})});
|
|
3187
|
+
`,ce=async g=>{var e;for(const t in g.layouts){const A=g.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=g.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)}}},ei=async(g,e)=>{var n;const t=await N.getShadowGraphqlClient().query({query:za(((n=e==null?void 0:e.assets)==null?void 0:n.metadata)||!1),errorPolicy:"all",fetchPolicy:"no-cache",variables:{ids:g}}),A=t.data.workflows;if(A===void 0||A.length!==g.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&&k.cacheAsset(i.option.defaultVariant.asset),i.option.colorProfile&&k.cacheAsset(i.option.colorProfile),(r=i.option.variants)==null||r.forEach(c=>{c.asset&&k.cacheAsset(c.asset),c.thumbnail&&k.cacheAsset(c.thumbnail),c.material&&k.cacheMaterial(c.material)}),ne.set({id:i.option.id},Promise.resolve(i.option)))}),a.finalizeStepConfig||(a.finalizeStepConfig={}),a.finalizeStepConfig.termsMarkdown=a.partner.termsMarkdown}),A},ti=async(g,e)=>{const A=(await e).find(n=>n.id===g);if(!A)throw new Error(`Workflow not found: ${g}`);return A},lt=async(g,e)=>{const t=g.map(o=>ne.get({id:o,options:e})),A=g.filter((o,s)=>t[s]===void 0);if(A.length===0)return Promise.all(t);const n=ei(A,e),a=A.map(o=>ne.set({id:o,options:e},ti(o,n))),i=t.filter(o=>o!==void 0);return await Promise.all(i.concat(a))},pe=async(g,e)=>(await lt([g],e))[0],Ai=g=>g.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})),Bt=(g,e)=>{const t=g.workflowState,A=t?JSON.parse(t):void 0;return A?Object.values(A.layouts).map(n=>n.layout):Ai(e.panels)};class yA{constructor(e){this.activeIntegration=void 0,this.updateTransactionState=async t=>{try{return N.getShadowGraphqlClient().mutate({...t,mutation:an})}catch(A){throw console.error(A),new H("Critical - Unable to synchronize workflow state with server.")}},this.initialized=!1,this.options=e,this.options.applicationKey&&UA(this.options.applicationKey),console.debug("------------------------"),console.debug("Spiff Commerce Core SDK"),console.debug("Version: 22.7.2"),console.debug(`Application Key Provided: ${!!this.options.applicationKey}`),console.debug("------------------------")}configureUrls(e,t,A){V.setHubUrl(e),V.setServerUrl(t),V.setServicesApiUrl(A),this.options.applicationKey&&this.getIntegration()}configure(e){V.setHubUrl(e.hubUrl),V.setServerUrl(e.serverUrl),V.setServicesApiUrl(e.servicesApiUrl),this.marketplaceThemeInstallId=e.marketplaceThemeInstallId,this.marketplaceThemeInstallConfigurationId=e.marketplaceThemeInstallConfigurationId,e.bearerAuthenticationToken&&pt(e.bearerAuthenticationToken),this.options.applicationKey&&this.getIntegration()}getAssetManager(){return k}getCurrencyCode(){if(this.currencyCode===void 0)throw new Error("No currency code set.");return this.currencyCode}getFlowService(){if(!kA())throw new Error("Application key required to use Flow Service.");return new FA}async getIntegration(){if(this.activeIntegration)return this.activeIntegration;if(!this.options.applicationKey)throw new Error("Cannot get current Integration without specifying an Application Key.");const e=async()=>(await N.getShadowGraphqlClient().query({query:tn,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=x.getMap("bundleOwnerIds");if(t!=null&&t.has(e))return Promise.resolve({success:!0,stakeholderType:Ee.Owner});const A=x.getMap("bundlePartnerIds")||new Map;if(A.has(e)){const i=A.get(e),s=(x.getMap("partnerCustomerIds")||new Map).get(i);if(s&&await this.authenticateCustomerId(s)){const c=(a=(n=this.customer)==null?void 0:n.bundleStakeholders)==null?void 0:a.find(d=>{var B;return((B=d.bundle)==null?void 0:B.id)===e});if(c)return Promise.resolve({success:!0,stakeholderType:c.type})}}return Promise.resolve({success:!1})}async authenticateTransactionFromLocalStorage(e){var c,d,B,C,w,h;const t=N.getShadowGraphqlClient(),A=await t.query({query:Ka,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(!((d=(c=n.product)==null?void 0:c.partner)==null?void 0:d.id))throw new Error(`Unable to read transaction: ${e}`);if(n.isOrdered)return Promise.resolve({success:!1,transactionReadOnly:!0});const i=x.getMap("transactionOwnerIds");if(i!=null&&i.has(e))return Promise.resolve({success:!0,stakeholderType:Ee.Owner});const o=x.getMap("transactionCustomerIds");if(o!=null&&o.has(e)){const u=o.get(e);if(u&&await this.authenticateCustomerId(u)){const m=((C=(B=this.customer)==null?void 0:B.bundleStakeholders)==null?void 0:C.find(S=>{var I,f;return(f=(I=S.bundle)==null?void 0:I.transactions)==null?void 0:f.some(D=>D.id===e)}))||((h=(w=this.customer)==null?void 0:w.stakeholders)==null?void 0:h.find(S=>{var I;return((I=S.transaction)==null?void 0:I.id)===e}));if(m)return Promise.resolve({success:!0,stakeholderType:m.type})}}const r=(await t.query({query:ja,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=x.getMap("transactionCustomerIds");t!=null&&t.has(e)&&(t.delete(e),x.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:Va,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:e}})).data.customer;if(!n.id){const s=(i=(await t.mutate({mutation:Wa,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=x.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:Xa,errorPolicy:"all",fetchPolicy:"no-cache",variables:{loginToken:n}})).data)==null?void 0:o.customerAuthenticate;return i?(this.storeCustomer(i),ft(n),this.customer=i,!0):!1}async generateVerificationCode(e){await N.getShadowGraphqlClient().mutate({mutation:qa,variables:{emailAddress:e}})}async verifyCode(e,t){var a,i;const n=(a=(await N.getShadowGraphqlClient().mutate({mutation:Za,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=x.getMap("customerTokens")||new Map;return o.set(n.id,n.loginToken),x.setMap("customerTokens",o),this.storeCustomer(n),ft(n.loginToken),this.customer={...n,loginToken:void 0},!0}return!1}async getNewBundle(e,t,A){var r,c,d,B,C;const a=(d=(await N.getShadowGraphqlClient().mutate({mutation:Qa(((c=(r=A==null?void 0:A.graphql)==null?void 0:r.productCollection)==null?void 0:c.eagerFetchProducts)||!1),variables:{collectionId:e,initialMetadata:t?Object.entries(t).map((w,h)=>({key:w[0],value:w[1]})):void 0},fetchPolicy:"no-cache"})).data)==null?void 0:d.bundleCreate;if(!(a!=null&&a.id))throw new Error("Unable to create bundle");const i=x.getMap("bundlePartnerIds")||new Map;i.set(a.id,a.partner.id),x.setMap("bundlePartnerIds",i);const o=x.getMap("bundleOwnerIds")||new Map;o.set(a.id,a.bundleOwnerId),x.setMap("bundleOwnerIds",o);const s=new pA(this,a,void 0,void 0,a.bundleOwnerId,{eagerFetchProducts:(C=(B=A==null?void 0:A.graphql)==null?void 0:B.productCollection)==null?void 0:C.eagerFetchProducts});return await s.getInitializationPromise(),s}async getExistingBundle(e,t,A,n){var u,Q,m,S,I,f,D,p,M,y,P;const a=x.getMap("bundleOwnerIds"),i=a==null?void 0:a.get(e),s=((u=Object.entries(localStorage).find(([v,Y])=>v.startsWith("CognitoIdentityServiceProvider")&&v.endsWith("idToken")))==null?void 0:u[0])||"",r=localStorage.getItem(s),c={};r&&!At(r)&&(c.Authorization=`Bearer ${r}`);const d={bundleOwnerId:i,...c,...(Q=n==null?void 0:n.graphql)==null?void 0:Q.additionalHeaders},B=await N.getShadowGraphqlClient().query({query:Ea(((S=(m=n==null?void 0:n.graphql)==null?void 0:m.productCollection)==null?void 0:S.eagerFetchProducts)||!1),variables:{id:e},fetchPolicy:"no-cache",context:{headers:d}});if(!((I=B.data)!=null&&I.bundles)||((f=B.data)==null?void 0:f.bundles.length)===0||!((D=B.data)!=null&&D.bundles[0]))throw new Error(`Unable to find bundle: ${e}`);const C=(p=B.data)==null?void 0:p.bundles[0],w=x.getMap("bundlePartnerIds")||new Map;w.set(C.id,C.partner.id),x.setMap("bundlePartnerIds",w);const h=new pA(this,C,t,A,i,{additionalHeaders:(M=n==null?void 0:n.graphql)==null?void 0:M.additionalHeaders,eagerFetchProducts:(P=(y=n==null?void 0:n.graphql)==null?void 0:y.productCollection)==null?void 0:P.eagerFetchProducts});return await h.getInitializationPromise(),h}async getBundleStakeholders(){var a;if(!this.customer)throw new Error("Customer not authenticated.");const e=await N.getShadowGraphqlClient().query({query:ua,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=x.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)}),x.setMap("bundlePartnerIds",n),A}async getStepTags(e){const t=N.getShadowGraphqlClient();let A={};const n=e.steps.map(i=>`${e.id}_${i.stepName}`),a=await t.query({query:_a,fetchPolicy:"no-cache",variables:{entityIds:n}});for(const[i,o]of e.steps.entries()){const s=a.data.tagsMany[i];A={...A,[o.stepName]:s.map(r=>r.name)}}return A}async getWorkflowExperience(e,t,A,n){var B,C,w,h,u;if(!n)return await this.getWorkflowExperienceDeprecated(e,t,A);const a=async()=>{var m,S,I;const Q=N.getShadowGraphqlClient();if(n.type==="transaction"){const{transactionId:f,readOnly:D}=n,p=await Q.query({query:ye,variables:{ids:[f]},errorPolicy:"all",fetchPolicy:"no-cache"});if(!((m=p.data)!=null&&m.transactions)||p.data.transactions.length===0)throw new H("Existing transaction not found.");const M=(S=p.data)==null?void 0:S.transactions[0];if(!M.workflowId)throw new H("Existing transaction has no workflow ID.");const y=await pe(M.workflowId);if(!M.product)throw new H("Failed to load transaction, product not available.");!this.activeIntegration&&((I=M.integrationProduct)!=null&&I.integration)&&(this.activeIntegration=Promise.resolve(M.integrationProduct.integration));const P=await this.getStepTags(y);return{transaction:M,workflow:y,stepTags:P,readOnly:D}}if(n.type==="integration"||n.type==="external"){const f=async()=>{const P=n.type==="integration"?{integrationProductId:n.integrationProductId}:{externalIntegrationId:n.externalIntegrationId,externalProductId:n.externalProductId},v=await Q.mutate({mutation:Rt,variables:{...P,workflowId:n.workflowId,designName:n.designName,claim:!0,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!v.data||!v.data.transactionCreate)throw new H("Failed to create transaction!");const Y=v.data.transactionCreate;if(!Y.product)throw new H("Failed to create transaction, product not available.");return Y},D=pe(n.workflowId,n==null?void 0:n.graphql),[p,M]=await Promise.all([f(),D]),y=await this.getStepTags(M);return{transaction:p,workflow:M,stepTags:y}}throw new H("No workflow ID provided.")},{transaction:i,workflow:o,stepTags:s,readOnly:r}=await a();this.currencyCode=(B=i.product.partner)==null?void 0:B.currencyCode;const c={product:i.product,transaction:i,stepTags:s,layouts:[],singleVariantsRenderable:(C=n==null?void 0:n.workflowConfiguration)==null?void 0:C.singleVariantsRenderable,stateMutationFunc:r?async()=>{throw new G("State mutation is forbidden in read only mode!")}:async Q=>{const S=(x.getMap("transactionOwnerIds")||new Map).get(i.id)||void 0;return this.updateTransactionState({...Q,context:{transactionOwnerId:S}})},readOnly:r,workflow:o};if(n.type==="transaction"&&i.workflowState){const Q=JSON.parse(i.workflowState);c.layouts=Object.values(Q.layouts).map(m=>m.layout),await l.rehydrateSerializedLayout(Q),await ce(Q),c.reloadedState=Q}else if(!r&&n.workflowState){const Q=JSON.parse(n.workflowState);c.layouts=Object.values(Q.layouts).map(m=>m.layout),await l.rehydrateSerializedLayout(Q),await ce(Q),c.reloadedState=Q}else c.layouts=Bt(c.transaction,c.workflow);if(c.renderableContextService=new Re(c.layouts),n.previewService?(c.previewService=n.previewService,(w=c.product)!=null&&w.modelUrl&&(c.modelContainer=c.previewService.loadModel({model:c.product.modelUrl,contextService:c.renderableContextService}))):(c.previewService=A&&A(o),(h=c.product)!=null&&h.modelUrl&&(c.modelContainer=(u=c.previewService)==null?void 0:u.loadModel({model:c.product.modelUrl,contextService:c.renderableContextService}))),n.type!=="transaction"){const Q=x.getMap("transactionOwnerIds")||new Map;Q.set(i.id,i.transactionOwnerId),x.setMap("transactionOwnerIds",Q)}else c.isReloadedTransaction=!0;this.initialized=!0,this.experienceOptions=c;const d=new De(this,c);return await d.getWorkflowManager().getInitializationPromise(),n.type!=="transaction"&&this.customer&&await d.attachCustomerDetails({email:this.customer.emailAddress}),d}async getWorkflowExperiences(e,t){if(e.length===0)throw new H("No options provided!");const A=N.getShadowGraphqlClient(),n=async f=>{var y,P,v;if(f.length===0)return[];const D=f.map(Y=>Y.option.transactionId),p=await A.query({query:ye,variables:{ids:D},errorPolicy:"all",fetchPolicy:"no-cache"}),M=p.data.transactions;if(M.length!==f.length){const Y=((P=(y=p.errors)==null?void 0:y[0])==null?void 0:P.message)||"Unknown error";throw new H(`Not all transactions were found: ${Y}`)}return!this.activeIntegration&&((v=M[0].integrationProduct)!=null&&v.integration)&&(this.activeIntegration=Promise.resolve(M[0].integrationProduct.integration)),M.map((Y,b)=>{var U;return{transaction:Y,workflowId:Y.workflowId,readOnly:((U=f.find(j=>j.option.transactionId===Y.id))==null?void 0:U.option.readOnly)??!1,index:f[b].index}})},a=async f=>{var M,y,P;if(f.length===0)return[];const D=await A.mutate({mutation:An,variables:{inputs:f.map(v=>({integrationProductId:v.option.type==="integration"?v.option.integrationProductId:void 0,externalIntegrationId:v.option.type==="external"?v.option.externalIntegrationId:void 0,externalProductId:v.option.type==="external"?v.option.externalProductId:void 0,workflowId:v.option.workflowId,designName:v.option.designName,claim:!0})),marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},errorPolicy:"all",fetchPolicy:"no-cache"}),p=(M=D.data)==null?void 0:M.transactionCreateMany;if(!p||p.length===0){const v=((P=(y=D.errors)==null?void 0:y[0])==null?void 0:P.message)||"Unknown error";throw new H(`Failed to create transactions: ${v}`)}return p.map((v,Y)=>({transaction:v,workflowId:v.workflowId,readOnly:!1,index:f[Y].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=ut(o,10),c=ut(s,10),d=(await Promise.all([...r.map(n),...c.map(a)])).flat(),B=[...new Set(d.map(f=>f.workflowId))],C=await lt(B,t),w=new Map(C.map(f=>[f.id,f])),h=x.getMap("transactionOwnerIds")||new Map,u=d.map(async f=>{var j;const{transaction:D,workflowId:p,readOnly:M,index:y}=f,P=w.get(p),v=await this.getStepTags(P),Y=e[y];!h.get(D.id)&&D.transactionOwnerId&&h.set(D.id,D.transactionOwnerId);const b=h.get(D.id)||void 0,U={product:D.product,transaction:D,stepTags:v,layouts:[],singleVariantsRenderable:(j=Y==null?void 0:Y.workflowConfiguration)==null?void 0:j.singleVariantsRenderable,stateMutationFunc:M?async()=>{throw new G("State mutation is forbidden in read only mode!")}:async T=>this.updateTransactionState({...T,context:{transactionOwnerId:b}}),readOnly:M,workflow:P,isReloadedTransaction:Y.type==="transaction"};if(Y.type==="transaction"&&D.workflowState){const T=JSON.parse(D.workflowState);U.layouts=Object.values(T.layouts||{}).map($=>$.layout),await l.rehydrateSerializedLayout(T),await ce(T),U.reloadedState=T}else if(!M&&Y.workflowState){const T=JSON.parse(Y.workflowState);U.layouts=Object.values(T.layouts||{}).map($=>$.layout),await l.rehydrateSerializedLayout(T),await ce(T),U.reloadedState=T}else U.layouts=Bt(U.transaction,U.workflow);return U.renderableContextService=new Re(U.layouts),U.delayWorkflowStateSync=!0,this.initialized=!0,this.experienceOptions=U,{experienceOptions:U,index:y,options:Y}}),Q=await Promise.all(u);x.setMap("transactionOwnerIds",h);const S=Q.sort((f,D)=>f.index-D.index).map(async f=>{const{experienceOptions:D,options:p}=f,M=new De(this,D);return await M.getWorkflowManager().getInitializationPromise(),p.type!=="transaction"&&this.customer&&await M.attachCustomerDetails({email:this.customer.emailAddress}),M}),I=await Promise.all(S);return I.forEach(f=>f.getWorkflowManager().setWorkflowStateSyncEnabled(!0)),I}async initFromIntegrationProduct(e){var i;if(e==="")throw new H("No integration product ID provided.");const A=await N.getShadowGraphqlClient().mutate({mutation:Rt,variables:{integrationProductId:e,claim:!0,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},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 H("Failed to create transaction!");const n=A.data.transactionCreate;if(!n.product)throw new H("Failed to create transaction, product not available.");this.currencyCode=(i=n.product.partner)==null?void 0:i.currencyCode;const a=x.getMap("transactionOwnerIds")||new Map;a.set(n.id,n.transactionOwnerId),x.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,c;if(e==="")throw new H("No transaction ID provided.");const A=N.getShadowGraphqlClient(),n=async()=>{var C,w;const B=(C=(await A.query({query:ye,variables:{ids:[e]},fetchPolicy:"no-cache",errorPolicy:"all"})).data)==null?void 0:C.transactions[0];if(!B)throw new H("Failed to read transaction.");if(!B.product)throw new H("Failed to load transaction, product not available.");this.currencyCode=(w=B.product.partner)==null?void 0:w.currencyCode,this.experienceOptions={product:B.product,transaction:B,layouts:[],stateMutationFunc:async()=>{throw new G("State mutation is forbidden in read only mode!")},readOnly:t},this.initialized=!0};if(t)return await n();const a=x.getMap("transactionOwnerIds")||new Map,i=a.get(e);if(i){const B=(o=(await A.query({query:ye,variables:{ids:[e]},errorPolicy:"all"})).data)==null?void 0:o.transactions[0];if(!B)throw new H("Failed to read transaction.");if(!B.product)throw new H("Failed to load transaction, product not available.");this.currencyCode=(s=B.product.partner)==null?void 0:s.currencyCode,this.experienceOptions={product:B.product,transaction:B,layouts:[],stateMutationFunc:async C=>this.updateTransactionState({...C,context:{transactionOwnerId:i}}),readOnly:t},this.initialized=!0;return}try{const B=(r=(await A.mutate({mutation:nn,variables:{id:e},errorPolicy:"all"})).data)==null?void 0:r.transactionClaim;if(!B)throw new H("Failed to read transaction.");if(!B.product)throw new H("Failed to load transaction, product not available.");this.currencyCode=(c=B.product.partner)==null?void 0:c.currencyCode,B.transactionOwnerId&&(a.set(B.id,B.transactionOwnerId),x.setMap("transactionOwnerIds",a)),this.experienceOptions={product:B.product,transaction:B,layouts:[],stateMutationFunc:async C=>this.updateTransactionState({...C,context:{transactionOwnerId:B.transactionOwnerId}}),readOnly:t},this.initialized=!0}catch{throw new H("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 H("Cannot launch experience: Not initialized.");if(this.experienceOptions.transaction.workflowId){const s=await pe(this.experienceOptions.transaction.workflowId);if(this.experienceOptions.workflow=s,this.experienceOptions.transaction.workflowState){const c=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(c.layouts).map(d=>d.layout),await l.rehydrateSerializedLayout(c),await ce(c),this.experienceOptions.reloadedState=c}this.experienceOptions.previewService=A&&A(s),this.experienceOptions.renderableContextService=new Re(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 De(this,this.experienceOptions);return await r.getWorkflowManager().getInitializationPromise(),r}if(e){const r=(x.getMap("transactionOwnerIds")||new Map).get(this.experienceOptions.transaction.id),c=N.getShadowGraphqlClient().mutate({mutation:on,variables:{workflowId:e,id:this.experienceOptions.transaction.id},context:{transactionOwnerId:r}}),d=pe(e);if(await Promise.all([c,d]),this.experienceOptions.workflow=await d,t){const C=JSON.parse(t);this.experienceOptions.layouts=Object.values(C.layouts).map(w=>w.layout),await l.rehydrateSerializedLayout(C),await ce(C),this.experienceOptions.reloadedState=C}else this.experienceOptions.layouts=Bt(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=A&&A(await d),this.experienceOptions.renderableContextService=new Re(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 B=new De(this,this.experienceOptions);return await B.getWorkflowManager().getInitializationPromise(),B}throw new H("No workflow ID provided.")}getPreviewService(){var e;return(e=this.experienceOptions)==null?void 0:e.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new H("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new H("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}storeCustomer(e){const t=x.getMap("partnerCustomerIds")||new Map;t.set(e.partner.id,e.id),x.setMap("partnerCustomerIds",t)}async getIntegrationProductById(e){var a,i;const n=(a=(await N.getShadowGraphqlClient().query({query:cn,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 gt(n[0])}async getIntegrationProductFromExternalIds(e,t){var i;const a=(i=(await N.getShadowGraphqlClient().query({query:gn,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 gt(a)}async getIntegrationProduct(e){return e.type==="integration"?this.getIntegrationProductById(e.integrationProductId):this.getIntegrationProductFromExternalIds(e.externalIntegrationId,e.externalProductId)}async getShareActionsForTransaction(e){const A=(x.getMap("transactionOwnerIds")||new Map).get(e)||void 0,n=await N.getShadowGraphqlClient().query({query:rn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:e},context:{transactionOwnerId:A}});if(!n.data.transactions||n.data.transactions.length!==1)throw new Error(`Failed to fetch share actions for transaction: ${e}`);return n.data.transactions[0].transactionShareActions}}class ni{getClient(){return this.client??{}}getWorkflowExperience(){return{}}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{}}getStepSelections(){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){}async updateTransactionShareActions(){}addValidationCallback(e){}setStepError(e,t,A){}getStepErrors(e){}getValidationErrors(){return{steps:new Map}}async updateTransactionStakeholders(){}getStepTags(e){return[]}}var YA=(g=>(g.SelectFrame="SelectFrame",g.SelectImage="SelectImage",g.Position="Position",g))(YA||{});class PA extends K{constructor(e,t,A){var n;super(e,t,A),this.frameService=(n=this.manager.getStepSpecificServices(this.getId()))==null?void 0:n.frameService}selectVariant(e){const t=this.manager.getRegionElements(this.step.stepName);return q.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,A=!0){var n;if(await q.selectImage(this.step,e,this.manager,A),t){const a=((n=this.manager.getStepStorage(this.step.stepName))==null?void 0:n.framePatternData)||{};this.manager.updateStorage(this.step.stepName,{framePatternData:{...a,originalAssetKey:e.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0}})}}async canUseBackgroundRemover(){return this.manager.getClient().canUseAddon(Me.BackgroundRemover)}async canRemoveBackground(){var e,t,A,n;return await this.canUseBackgroundRemover()&&this.hasOriginalImageSelection()&&!!((t=(e=this.frameService)==null?void 0:e.getImageData())!=null&&t.src)&&!((n=(A=this.frameService)==null?void 0:A.getImageData())!=null&&n.svg)}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 k.removeBackgroundFromAsset(t);e&&await q.selectImage(this.step,A,this.manager,!1);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}changeColors(e){q.changeColors(this.step,this.manager,e)}getImageData(){if(this.frameService)return this.frameService.getImageData()}async getColorOption(){return this.step.data.colorOption}getAvailableColors(){return this.step.data.colorPickerEnabled?q.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}async getOriginalImageColors(){const e=this.getImageData();return e!=null&&e.svg?(await l.generateSVGWithUnknownColors(e.svg)).colors:void 0}getMaxAllowedColors(){return this.step.data.maxColors}getUniqueColorCount(){return q.getUniqueColorCount(this.step,this.manager)}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}getWhitelistedExtensions(){return[...this.step.data.whitelistedExtensions,...this.step.data.whitelistedExtensions.includes(".jpg")?[".jpeg"]:[]]}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 k.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 k.getLocalOrFromServer(e)}hasOriginalImageSelection(){var e,t;return!!((t=(e=this.manager.getStepStorage(this.step.stepName))==null?void 0:e.framePatternData)!=null&&t.originalAssetKey)}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,!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,!1)}this.manager.updateStorage(this.step.stepName,{framePatternData:{...t,useOriginalAsset:e}})}getFrameStepStorage(){return this.manager.getStepStorage(this.step.stepName)}}Object.defineProperty(E,"AspectType",{enumerable:!0,get:()=>l.AspectType}),Object.defineProperty(E,"AssetType",{enumerable:!0,get:()=>l.AssetType}),Object.defineProperty(E,"BringForwardCommand",{enumerable:!0,get:()=>l.BringForwardCommand}),Object.defineProperty(E,"BringToBackCommand",{enumerable:!0,get:()=>l.BringToBackCommand}),Object.defineProperty(E,"BringToFrontCommand",{enumerable:!0,get:()=>l.BringToFrontCommand}),Object.defineProperty(E,"CanvasCommand",{enumerable:!0,get:()=>l.CanvasCommand}),Object.defineProperty(E,"CommandContext",{enumerable:!0,get:()=>l.CommandContext}),Object.defineProperty(E,"CreateElementCommand",{enumerable:!0,get:()=>l.CreateElementCommand}),Object.defineProperty(E,"CreateLayoutCommand",{enumerable:!0,get:()=>l.CreateLayoutCommand}),Object.defineProperty(E,"DeleteElementCommand",{enumerable:!0,get:()=>l.DeleteElementCommand}),Object.defineProperty(E,"FontAlignmentCommand",{enumerable:!0,get:()=>l.FontAlignmentCommand}),Object.defineProperty(E,"FontColorCommand",{enumerable:!0,get:()=>l.FontColorCommand}),Object.defineProperty(E,"FontSizeCommand",{enumerable:!0,get:()=>l.FontSizeCommand}),Object.defineProperty(E,"FontSourceCommand",{enumerable:!0,get:()=>l.FontSourceCommand}),Object.defineProperty(E,"GroupCommand",{enumerable:!0,get:()=>l.GroupCommand}),Object.defineProperty(E,"LayoutElementFactory",{enumerable:!0,get:()=>l.LayoutElementFactory}),Object.defineProperty(E,"LayoutElementType",{enumerable:!0,get:()=>l.LayoutElementType}),Object.defineProperty(E,"MoveCommand",{enumerable:!0,get:()=>l.MoveCommand}),Object.defineProperty(E,"ResizeCommand",{enumerable:!0,get:()=>l.ResizeCommand}),Object.defineProperty(E,"RotateCommand",{enumerable:!0,get:()=>l.RotateCommand}),Object.defineProperty(E,"SendBackwardsCommand",{enumerable:!0,get:()=>l.SendBackwardsCommand}),Object.defineProperty(E,"StepAspectType",{enumerable:!0,get:()=>l.StepAspectType}),Object.defineProperty(E,"StepType",{enumerable:!0,get:()=>l.StepType}),Object.defineProperty(E,"TextChangeCommand",{enumerable:!0,get:()=>l.TextChangeCommand}),Object.defineProperty(E,"UnitOfMeasurement",{enumerable:!0,get:()=>l.UnitOfMeasurement}),Object.defineProperty(E,"UpdateImageSourceCommand",{enumerable:!0,get:()=>l.UpdateImageSourceCommand}),Object.defineProperty(E,"dataUrlFromExternalUrl",{enumerable:!0,get:()=>l.dataUrlFromExternalUrl}),Object.defineProperty(E,"determineCorrectFontSizeAndLines",{enumerable:!0,get:()=>l.determineCorrectFontSizeAndLines}),Object.defineProperty(E,"findElement",{enumerable:!0,get:()=>l.findElement}),Object.defineProperty(E,"frameDataCache",{enumerable:!0,get:()=>l.frameDataCache}),Object.defineProperty(E,"generate",{enumerable:!0,get:()=>l.generate}),Object.defineProperty(E,"generateSVGWithUnknownColors",{enumerable:!0,get:()=>l.generateSVGWithUnknownColors}),Object.defineProperty(E,"getAttributesFromArrayBuffer",{enumerable:!0,get:()=>l.getAttributesFromArrayBuffer}),Object.defineProperty(E,"getAxisAlignedBoundingBox",{enumerable:!0,get:()=>l.getAxisAlignedBoundingBox}),Object.defineProperty(E,"getFrameData",{enumerable:!0,get:()=>l.getFrameData}),Object.defineProperty(E,"getSvgElement",{enumerable:!0,get:()=>l.getSvgElement}),Object.defineProperty(E,"loadFont",{enumerable:!0,get:()=>l.loadFont}),Object.defineProperty(E,"patternImageDataCache",{enumerable:!0,get:()=>l.patternImageDataCache}),Object.defineProperty(E,"registerFetchImplementation",{enumerable:!0,get:()=>l.registerFetchImplementation}),Object.defineProperty(E,"registerWindowImplementation",{enumerable:!0,get:()=>l.registerWindowImplementation}),Object.defineProperty(E,"rehydrateSerializedLayout",{enumerable:!0,get:()=>l.rehydrateSerializedLayout}),Object.defineProperty(E,"setCanvasModule",{enumerable:!0,get:()=>l.setCanvasModule}),Object.defineProperty(E,"svgToDataUrl",{enumerable:!0,get:()=>l.svgToDataUrl}),E.AddonHandle=Me,E.ArrayInput=ba,E.AssetNotFoundError=X,E.CollectionProduct=Ue,E.ColorOptionGlobalPropertyHandle=ot,E.ConversionDataType=Nt,E.ConversionLocation=xt,E.DigitalContentStepHandle=gA,E.FileUploadGlobalPropertyHandle=mA,E.FlowExecutionNodeResult=Ie,E.FlowExecutionResult=SA,E.FlowService=FA,E.FrameService=Tt,E.FrameStep=YA,E.FrameStepHandle=PA,E.GlobalPropertyHandle=He,E.IllustrationStepHandle=AA,E.InformationMessageType=re,E.InformationStepHandle=cA,E.IntegrationProduct=gt,E.IntegrationType=Yt,E.LayoutNotFoundError=J,E.MaterialStepHandle=nA,E.MisconfigurationError=de,E.MockWorkflowManager=ni,E.ModelStepHandle=aA,E.ModuleStepHandle=lA,E.ObjectInput=ct,E.ObjectInputType=MA,E.OptionGlobalPropertyHandle=it,E.OptionNotFoundError=Be,E.ParseError=te,E.PictureStepHandle=iA,E.ProductCameraRig=Pt,E.ProductCollection=DA,E.ProductWorkflow=fe,E.PromiseCache=ne,E.PromiseQueue=Le,E.QuestionStepHandle=oA,E.QueueablePromise=Oe,E.ResourceNotFoundError=ee,E.ShapeStepHandle=sA,E.SpiffCommerceClient=yA,E.StakeholderType=Ee,E.StepHandle=K,E.TextGlobalPropertyHandle=QA,E.TextInput=Ga,E.TextStepHandle=rA,E.TransactionShareActionType=yt,E.Transform=IA,E.TransformCollection=fA,E.UnhandledBehaviorError=G,E.Variant=W,E.WorkflowExperienceEventType=EA,E.WorkflowExperienceImpl=De,E.assetService=k,E.browserColorToHex=Kt,E.createDesign=wA,E.designService=ve,E.digitalContentStepService=ze,E.findPmsColors=Dn,E.frameStepService=q,E.generateCommands=hA,E.generateStateFromDesignInputSteps=Ca,E.getBoundedOffsets=bt,E.getWorkflow=pe,E.getWorkflows=lt,E.graphQlManager=N,E.illustrationStepService=Qe,E.matchHexToPms=un,E.materialStepService=je,E.modelStepService=Ve,E.moduleStepService=We,E.optionService=z,E.persistenceService=x,E.pictureStepService=Xe,E.pmsToRgb=hn,E.questionStepService=qe,E.rgbToPms=zt,E.setBearerAuthenticationToken=pt,E.shapeStepService=se,E.shortenUrl=Ot,E.spiffCoreConfiguration=V,E.stepAspectValuesToDesignInputSteps=da,E.textStepService=L,E.toast=Vt,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spiffcommerce/core",
|
|
3
|
-
"version": "22.7.
|
|
3
|
+
"version": "22.7.2",
|
|
4
4
|
"description": "Core client API for interacting with the Spiff Commerce backend.",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "dist/index.umd.cjs",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@apollo/client": "^3.8.3",
|
|
60
|
-
"@spiffcommerce/papyrus": "6.10.
|
|
60
|
+
"@spiffcommerce/papyrus": "6.10.9",
|
|
61
61
|
"fuse.js": "^7.0.0",
|
|
62
62
|
"graphql": "^16.8.0",
|
|
63
63
|
"lodash.chunk": "^4.2.0",
|