@spiffcommerce/core 18.3.0-beta.0 → 18.4.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +8 -2
- package/dist/index.js +735 -724
- package/dist/index.umd.cjs +1 -1
- package/package.json +1 -1
package/dist/index.umd.cjs
CHANGED
|
@@ -1906,7 +1906,7 @@ IfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 1
|
|
|
1906
1906
|
}
|
|
1907
1907
|
}
|
|
1908
1908
|
}
|
|
1909
|
-
`;class le{constructor(e,A){var n;if(this.renderableScenes=[],this.renderableSceneCallbacks=[],this.debouncedSavedDesignUpdate=qe(async()=>{await pe.getSavedDesignByTransaction(this.getWorkflowManager().getTransaction().id)&&this.save()},2500),this.getCanvasObjectURLAsync=async a=>new Promise((i,o)=>{try{a.toBlob(s=>{if(s){const r=URL.createObjectURL(s);i(r)}})}catch(s){o(s)}}),!A.workflow)throw new Error("No Workflow ID provided.");this.client=e;const t=A.layouts;this.commandContext=new c.CommandContext,this.commandContext.initialize(t,A.reloadedState),this.isReadOnly=A.transaction.isOrdered||!!A.readOnly,this.workflowManager=new _t(A.workflow,((n=A.product.profanities)==null?void 0:n.map(a=>a.word))||[],t,this.commandContext,a=>{try{this.debouncedSavedDesignUpdate()}catch{console.error("Failed to update saved design details.")}return A.stateMutationFunc(a)},A.transaction,A.product,A.previewService,A.renderableContextService,A.reloadedState,A.readOnly,A.modelContainer,A.isReloadedTransaction,A.singleVariantsRenderable),this.workflowManager.addSelectionCallback(a=>{const i=a.traversableScenes.map(o=>{const s=o.renderableSteps.map(r=>r.stepName);return{id:o.name,title:o.title,renderableSteps:s}});this.renderableScenes=i,this.renderableSceneCallbacks.forEach(o=>o(i))})}getClient(){return this.client}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.commandContext}getWorkflowManager(){return this.workflowManager}async createPreviewImage(e,A){var C,f;const t=this.workflowManager.getWorkflow(),n=(C=t==null?void 0:t.finalizeStepConfig)==null?void 0:C.lookAtAnimation;if(e){if(!n)throw new Error("Failed to generate cart preview image!");return await((f=this.workflowManager.getPreviewService())==null?void 0:f.renderSceneScreenshot(A??512,n))||""}let a=2048;A&&A<=2048&&(a=A);const i=c.createCanvas(a,a),o=this.commandContext.getAllLayouts(),s=t.defaultPreviewPanelIndex||0,r=t.panels[s],l=o.find(I=>{var F;return((F=I.layoutState)==null?void 0:F.layout.panelId)===(r==null?void 0:r.name)})||o[0],d=l.layoutState.layout.previewRegion?{x:l.layoutState.layout.previewRegion.left,y:l.layoutState.layout.previewRegion.top,width:l.layoutState.layout.previewRegion.width,height:l.layoutState.layout.previewRegion.height}:{x:0,y:0,width:l.layoutState.layout.width,height:l.layoutState.layout.height},B=this.commandContext.getLayoutById(l.layoutState.layout.id),w=i.getContext("2d");if(!w)throw new he("Failed to obtain 2D context for preview image creation");const E=c.getSvgElement(B.layoutState.layout,B.layoutState.elements,{renderingConfiguration:{purpose:c.LayoutRenderingPurpose.Print,region:{left:d.x,top:d.y,width:d.width,height:d.height}}}),Q=c.renderPapyrusComponentAsString(E);await(await Xe.Pith.from(w,Q,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:c.createCanvas,createImage:c.loadImage,DOMParser:c.getDomParser(),fetch:c.fetch})).render();const u=await this.getCanvasObjectURLAsync(i);return i.toDataURL(u)}getStepById(e){const A=this.getWorkflowManager().getWorkflow().steps.find(t=>t.stepName===e);if(!(!A||!this.stepHasHandle(A)))return De.get(this.getWorkflowManager(),A)}getSteps(){return this.getScenes().flatMap(e=>this.getStepsByScene(e))}getScenes(){return this.getWorkflowManager().getWorkflow().stepGroups.map(A=>({id:A.id,name:A.name,stepIds:A.stepNames}))}getSelectionPriceSubunits(){const e=this.getWorkflowManager().getWorkflowSelections();let A=0;return Object.values(e).forEach(t=>{A+=t.selections.map(n=>n.priceModifier).reduce((n,a)=>n+a)}),A}getBasePriceSubunits(){return this.getWorkflowManager().getProduct().basePrice||0}getTotalPriceSubunits(){return this.getBasePriceSubunits()+this.getSelectionPriceSubunits()}async copySelectionsViaGlobalConfiguration(e,A,t){const n=await e.getGlobalProperties(),a=t==null?void 0:t.map(r=>r.getId()),i=this.getSteps().filter(r=>a===void 0||a.includes(r.getId())),o=A.getSteps(),s=r=>n.find(l=>l.getRawProperty().name===r.aspectName);i.forEach(r=>{const l=new Set,d=r.getRaw().globalPropertyAspectConfigurations;d!==void 0&&(d.forEach(B=>l.add(JSON.stringify(B))),o.forEach(B=>{const w=B.getRaw().globalPropertyAspectConfigurations;w!==void 0&&w.forEach(E=>{const Q=s(E),h=l.has(JSON.stringify(E));if(h&&(Q==null?void 0:Q.getType())==="Option"){const u=B.getCurrentVariant();if(!u)return;r.selectVariant(u),l.delete(JSON.stringify(E))}else if(h&&(Q==null?void 0:Q.getType())==="Text"){const u=B.getText();r.setText(u),l.delete(JSON.stringify(E))}})}))})}getStepByName(e){const A=this.getWorkflowManager().getWorkflow().steps.find(t=>t.stepTitle===e);if(!(!A||!this.stepHasHandle(A)))return De.get(this.getWorkflowManager(),A)}getStepsByType(e){return this.getWorkflowManager().getWorkflow().steps.filter(A=>A.type===e).map(A=>De.get(this.getWorkflowManager(),A))}getStepsByScene(e){if(!this.getWorkflowManager().getWorkflow().stepGroups.find(t=>t.name===e.name))throw new Error("Given scene is not present on workflow! Be careful when persisting scenes that you only use them with the relevant workflow.");return e.stepIds.map(t=>this.getWorkflowManager().getWorkflow().steps.find(n=>n.stepName===t)).filter(t=>this.stepHasHandle(t)).map(t=>De.get(this.getWorkflowManager(),t))}async attachCustomerDetails(e){return this.assignCustomerDetails({emailAddress:e.email})}async assignCustomerDetails(e){var i,o,s;const t=(P.getMap("transactionOwnerIds")||new Map).get(this.getWorkflowManager().getTransaction().id),a=(s=(o=(i=(await x.getShadowGraphqlClient().mutate({mutation:rn,variables:{id:this.getWorkflowManager().getTransaction().id,details:e,type:"Owner"},context:{transactionOwnerId:t}})).data)==null?void 0:i.transactionAddStakeholder)==null?void 0:o.stakeholders)==null?void 0:s.find(r=>{var l;return((l=r.customer)==null?void 0:l.emailAddress)===e.emailAddress});if(a!=null&&a.customer){this.getWorkflowManager().setTransactionCustomer(a.customer);const r=P.getMap("transactionCustomerIds")||new Map;r.set(this.getWorkflowManager().getTransaction().id,a.customer.id),P.setMap("transactionCustomerIds",r)}}attachRenderableSceneListener(e){this.renderableSceneCallbacks.push(e),e(this.renderableScenes)}detachRenderableSceneListener(e){this.renderableSceneCallbacks=this.renderableSceneCallbacks.filter(A=>A!==e)}async save(e){if(!this.getCommandContext().getState())throw new U("State undefined!");const n={title:await(async()=>{var s;if(e)return e;const a=this.getWorkflowManager().getTransaction().id,o=(s=(await pe.getSavedDesigns()).find(r=>r.transactionId===a))==null?void 0:s.title;return o||"My design"})(),thumbnail:await this.createPreviewImage(!1,256),transactionId:this.getWorkflowManager().getTransaction().id,productId:this.getWorkflowManager().getProduct().id,integrationProductId:this.getWorkflowManager().getTransaction().integrationProduct.id,workflowName:this.getWorkflowManager().getWorkflow().name,workflowId:this.getWorkflowManager().getWorkflow().id,lastEdited:new Date};return await pe.addDesign(n),n}async copy(){var o;const e=we(this.getCommandContext().getState());if(!e)throw new U("Internal state is undefined! Cannot copy experience!");const A=JSON.stringify(e.transaction),t=this.getWorkflowManager().getWorkflow(),n=new ZA({}),a=(o=this.getWorkflowManager().getTransaction().integrationProduct)==null?void 0:o.id;if(!a)throw new U("Integration product id is undefined!");return await n.initFromIntegrationProduct(a),await n.getWorkflowExperience(t.id,A,void 0)}async onDesignFinished(e,A=!0){return bA(this.workflowManager,this.workflowManager.getWorkflow(),this.workflowManager.getLayouts(),()=>this.commandContext.getState(),this.workflowManager.getProduct(),this.workflowManager.getTransaction(),this.workflowManager.getWorkflowSelections(),this.workflowManager.getWorkflow().name,e||(()=>{}),t=>A?this.createPreviewImage(t,1024):Promise.resolve(void 0),this.workflowManager.getWorkflowMetadata())}stepHasHandle(e){return e.type!==c.StepType.SilentIllustration&&e.type!==c.StepType.ProductOverlay}getExportedData(){var n;const e=new Map,A=this.getWorkflowManager().getWorkflowMetadata(),t=this.getWorkflowManager().getWorkflowSelections();return Object.keys(A).forEach(a=>{const i=this.workflowManager.getWorkflow().steps.find(s=>s.stepName===a);if(!i)return;e.has(i.stepTitle)||e.set(i.stepTitle,{});const o=A[a];Object.keys(o).forEach(s=>{e.get(i.stepTitle)[s]=o[s]})}),(n=Object.keys(t))==null||n.forEach(a=>{const i=this.workflowManager.getWorkflow().steps.find(o=>o.stepName===a);i&&(e.has(i.stepTitle)||e.set(i.stepTitle,{}),e.get(i.stepTitle).selection=t[a].selections[0].name)}),e}}const cn=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],gn=async(g,e,A)=>{const t=e.data,n=A.data.baseUrl,a=t.assetUrl.replace("localhost","localstack"),i=n.slice(0,4)==="http"?"":"https://",o=new URL(i+n);o.searchParams.append("video",c.toBase64(JSON.stringify([{href:a}]))),o.pathname=o.pathname+(o.pathname.slice(-1)==="/"?"":"/");const s=o.toString(),l=`data:image/svg+xml;base64,${c.toBase64(await $e.toString(s,{type:"svg"}))}`,d=w=>{const E=g.find(h=>h.panelId===w.panelId);if(!E)throw new k(w);const Q=c.generate();return new c.CreateElementCommand({id:Q,src:l,type:c.LayoutElementType.Image,y:w.top,x:w.left,width:w.width,height:w.height,rotation:0},E)},B=A.data.regions;try{return B.map(d)}catch(w){return console.error(w),[]}},ln=async(g,e,A,t)=>{const n=A.data,a=n.assetUrl,i=await c.getPatternImageData(a);try{const o=c.getVariant(n,t.option);o&&(e[t.stepName]={selectedVariants:[o]});const s=async r=>{var Q;const l=await c.generateFrameSVG(r||{width:1,height:1},(Q=o==null?void 0:o.asset)==null?void 0:Q.fileLink),d=await c.getFrameData(l),B=c.generate(),w=g.find(h=>h.panelId===r.panelId);if(!w)throw new k(r);const E=c.calculateOffsets(i,d,{scale:n.scale,left:n.x,top:n.y});return[new c.CreateElementCommand({id:B,path:d.path,dataWidth:d.width,dataHeight:d.height,type:c.LayoutElementType.Frame,focalBlur:t.data.focalBlur,focalBlurStrength:t.data.focalBlurStrength,focalBlurRadius:t.data.focalBlurRadius,forceImageCover:t.data.forceImageCover,x:r.left,y:r.top,width:r.width,height:r.height,layer:r.layer,layerIndex:r.layerIndex,rotation:r.rotation,scaleX:r.width/d.width,scaleY:r.height/d.height,pattern:void 0},w),new c.UpdateFramePattern(B,i,E)]};return(await Promise.all(t.data.regions.map(r=>s(r)))).flat()}catch(o){return console.error(o),[]}},Bn=async(g,e,A,t)=>{var F,p;const n=A.data,a=t.option;if(!a)return console.error(`No option for step ${t.stepName}.`),[];const i=((F=a.variants)==null?void 0:F.find(D=>D.id===n.illustrationVariantId))||c.getDefaultVariant(a);if(!i)return console.error(`No variant with ID: ${n.illustrationVariantId}`),[];if(!i.asset)return console.error(`No asset for variant with ID: ${n.illustrationVariantId}`),[];e[t.stepName]={selectedVariants:[i]};const o=(p=i.asset)==null?void 0:p.fileLink;if(!o)return console.error(`No asset link for variant with ID: ${n.illustrationVariantId}`),[];const s=await c.fetchAsString(o,!0),r=/<svg.*?<\/svg>/s,l=s.match(r)||[],d=(l==null?void 0:l.length)>0?l[0]:"",E=c.domParser().parseFromString(d,"image/svg+xml").firstElementChild;if(!E)return console.error("Failed to read SVG."),[];c.sanitizeSvgTree(E);const Q={};c.traverse(E,D=>{cn.includes(D.tagName)&&!D.attributes.getNamedItem("fill")&&D.setAttribute("fill","#000000");const S=D.attributes.getNamedItem("fill");if(S&&S.value!=="none"){const Y=S.value,N=`spiff-fill-${Y.replace(/\W/g,"")}`;D.classList.add(N),Q[N]={browserValue:Y}}const y=D.attributes.getNamedItem("stroke");if(y&&y.value!=="none"){const Y=y.value,N=`spiff-stroke-${Y.replace(/\W/g,"")}`;D.classList.add(N),Q[N]={browserValue:Y}}});const u=c.xmlSerializer().serializeToString(E),C=n.colors;if(C){for(const[D,S]of Object.entries(Q))for(const y of Object.keys(C))if(S.browserValue===y){Q[D]={browserValue:C[y]};break}}const f=D=>{const S=g.find(Y=>Y.panelId===D.panelId);if(!S)throw new k(D);const y=c.generate();return new c.CreateElementCommand({colors:Q,id:y,svg:u,type:c.LayoutElementType.Illustration,y:D.top,x:D.left,rotation:D.rotation,width:D.width,height:D.height,layer:D.layer,layerIndex:D.layerIndex,immutable:D.immutable},S)},I=t.data.regions;try{return I.map(f)}catch(D){return console.error(D),[]}},dn=async(g,e,A)=>{const t=await FA(A.data.module),n=e.data,a=(o,s)=>{const r=g.find(d=>d.panelId===s.panelId);if(!r)throw new k(s);const l=c.generate();return new c.CreateElementCommand({colors:{},id:l,svg:o,type:c.LayoutElementType.Illustration,y:s.top,x:s.left,rotation:s.rotation,width:s.width,height:s.height,layer:s.layer,layerIndex:s.layerIndex},r)},i=A.data.regions;try{return i.map(o=>a(t.svgPrint(n.text,o),o))}catch(o){return console.error(o),[]}},wn=async(g,e,A,t)=>{var l,d;const n=A.data,a=t.option;if(!a)return console.error(`No option for step ${t.stepName}.`),[];const i=((l=a.variants)==null?void 0:l.find(B=>B.id===n.pictureVariantId))||c.getDefaultVariant(a);if(!i)return console.error(`No variant with ID: ${n.pictureVariantId}`),[];if(!i.asset)return console.error(`No asset for variant with ID: ${n.pictureVariantId}`),[];e[t.stepName]={selectedVariants:[i]};const o=(d=i.asset)==null?void 0:d.fileLink;if(!o)return console.error(`No asset link for variant with ID: ${n.pictureVariantId}`),[];const s=B=>{const w=g.find(Q=>Q.panelId===B.panelId);if(!w)throw new k(B);const E=c.generate();return new c.CreateElementCommand({id:E,src:o,type:c.LayoutElementType.Image,y:B.top,x:B.left,rotation:B.rotation,width:B.width,height:B.height,layer:B.layer,layerIndex:B.layerIndex,immutable:B.immutable,preserveAspectRatio:"none"},w)},r=t.data.regions;try{return r.map(s)}catch(B){return console.error(B),[]}},En=async(g,e,A,t)=>{var r;const n=A.data,a=t.option;if(!a)return console.error(`No option for step ${t.stepName}.`),[];const i=((r=a.variants)==null?void 0:r.find(l=>l.id===n.colorVariantId))||c.getDefaultVariant(a);if(!i)return console.error(`No variant with ID: ${n.colorVariantId}`),[];e[t.stepName]={selectedVariants:[i]};const o=l=>{const d=g.find(h=>h.panelId===l.panelId);if(!d)throw new k(l);const B=`
|
|
1909
|
+
`;class le{constructor(e,A){var n;if(this.renderableScenes=[],this.renderableSceneCallbacks=[],this.debouncedSavedDesignUpdate=qe(async()=>{await pe.getSavedDesignByTransaction(this.getWorkflowManager().getTransaction().id)&&this.save()},2500),this.getCanvasObjectURLAsync=async a=>new Promise((i,o)=>{try{a.toBlob(s=>{if(s){const r=URL.createObjectURL(s);i(r)}})}catch(s){o(s)}}),!A.workflow)throw new Error("No Workflow ID provided.");this.client=e;const t=A.layouts;this.commandContext=new c.CommandContext,this.commandContext.initialize(t,A.reloadedState),this.isReadOnly=A.transaction.isOrdered||!!A.readOnly,this.workflowManager=new _t(A.workflow,((n=A.product.profanities)==null?void 0:n.map(a=>a.word))||[],t,this.commandContext,a=>{try{this.debouncedSavedDesignUpdate()}catch{console.error("Failed to update saved design details.")}return A.stateMutationFunc(a)},A.transaction,A.product,A.previewService,A.renderableContextService,A.reloadedState,A.readOnly,A.modelContainer,A.isReloadedTransaction,A.singleVariantsRenderable),this.workflowManager.addSelectionCallback(a=>{const i=a.traversableScenes.map(o=>{const s=o.renderableSteps.map(r=>r.stepName);return{id:o.name,title:o.title,renderableSteps:s}});this.renderableScenes=i,this.renderableSceneCallbacks.forEach(o=>o(i))})}getClient(){return this.client}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.commandContext}getWorkflowManager(){return this.workflowManager}async createPreviewImage(e,A){var C,f;const t=this.workflowManager.getWorkflow(),n=(C=t==null?void 0:t.finalizeStepConfig)==null?void 0:C.lookAtAnimation;if(e){if(!n)throw new Error("Failed to generate cart preview image!");return await((f=this.workflowManager.getPreviewService())==null?void 0:f.renderSceneScreenshot(A??512,n))||""}let a=2048;A&&A<=2048&&(a=A);const i=c.createCanvas(a,a),o=this.commandContext.getAllLayouts(),s=t.defaultPreviewPanelIndex||0,r=t.panels[s],l=o.find(I=>{var F;return((F=I.layoutState)==null?void 0:F.layout.panelId)===(r==null?void 0:r.name)})||o[0],d=l.layoutState.layout.previewRegion?{x:l.layoutState.layout.previewRegion.left,y:l.layoutState.layout.previewRegion.top,width:l.layoutState.layout.previewRegion.width,height:l.layoutState.layout.previewRegion.height}:{x:0,y:0,width:l.layoutState.layout.width,height:l.layoutState.layout.height},B=this.commandContext.getLayoutById(l.layoutState.layout.id),w=i.getContext("2d");if(!w)throw new he("Failed to obtain 2D context for preview image creation");const E=c.getSvgElement(B.layoutState.layout,B.layoutState.elements,{renderingConfiguration:{purpose:c.LayoutRenderingPurpose.Print,region:{left:d.x,top:d.y,width:d.width,height:d.height}}}),Q=c.renderPapyrusComponentAsString(E);await(await Xe.Pith.from(w,Q,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:c.createCanvas,createImage:c.loadImage,DOMParser:c.getDomParser(),fetch:c.fetch})).render();const u=await this.getCanvasObjectURLAsync(i);return i.toDataURL(u)}getStepById(e){const A=this.getWorkflowManager().getWorkflow().steps.find(t=>t.stepName===e);if(!(!A||!this.stepHasHandle(A)))return De.get(this.getWorkflowManager(),A)}getSteps(){return this.getScenes().flatMap(e=>this.getStepsByScene(e))}getScenes(){return this.getWorkflowManager().getWorkflow().stepGroups.map(A=>({id:A.id,name:A.name,stepIds:A.stepNames}))}getSelectionPriceSubunits(){const e=this.getWorkflowManager().getWorkflowSelections();let A=0;return Object.values(e).forEach(t=>{A+=t.selections.map(n=>n.priceModifier).reduce((n,a)=>n+a)}),A}getBasePriceSubunits(e){const A=this.getWorkflowManager().getProduct().basePrice||0;if(e){const t=this.getAdditionalProductPriceSubunits()||0;return A+t}return A}getAdditionalProductPriceSubunits(){var A;const e=this.getWorkflowManager().getTransaction().integrationProduct;if((A=e==null?void 0:e.additionalIntegrationProduct)!=null&&A.product)return e.additionalIntegrationProduct.product.basePrice||0}getTotalPriceSubunits(){return this.getBasePriceSubunits()+this.getSelectionPriceSubunits()}async copySelectionsViaGlobalConfiguration(e,A,t){const n=await e.getGlobalProperties(),a=t==null?void 0:t.map(r=>r.getId()),i=this.getSteps().filter(r=>a===void 0||a.includes(r.getId())),o=A.getSteps(),s=r=>n.find(l=>l.getRawProperty().name===r.aspectName);i.forEach(r=>{const l=new Set,d=r.getRaw().globalPropertyAspectConfigurations;d!==void 0&&(d.forEach(B=>l.add(JSON.stringify(B))),o.forEach(B=>{const w=B.getRaw().globalPropertyAspectConfigurations;w!==void 0&&w.forEach(E=>{const Q=s(E),h=l.has(JSON.stringify(E));if(h&&(Q==null?void 0:Q.getType())==="Option"){const u=B.getCurrentVariant();if(!u)return;r.selectVariant(u),l.delete(JSON.stringify(E))}else if(h&&(Q==null?void 0:Q.getType())==="Text"){const u=B.getText();r.setText(u),l.delete(JSON.stringify(E))}})}))})}getStepByName(e){const A=this.getWorkflowManager().getWorkflow().steps.find(t=>t.stepTitle===e);if(!(!A||!this.stepHasHandle(A)))return De.get(this.getWorkflowManager(),A)}getStepsByType(e){return this.getWorkflowManager().getWorkflow().steps.filter(A=>A.type===e).map(A=>De.get(this.getWorkflowManager(),A))}getStepsByScene(e){if(!this.getWorkflowManager().getWorkflow().stepGroups.find(t=>t.name===e.name))throw new Error("Given scene is not present on workflow! Be careful when persisting scenes that you only use them with the relevant workflow.");return e.stepIds.map(t=>this.getWorkflowManager().getWorkflow().steps.find(n=>n.stepName===t)).filter(t=>this.stepHasHandle(t)).map(t=>De.get(this.getWorkflowManager(),t))}async attachCustomerDetails(e){return this.assignCustomerDetails({emailAddress:e.email})}async assignCustomerDetails(e){var i,o,s;const t=(P.getMap("transactionOwnerIds")||new Map).get(this.getWorkflowManager().getTransaction().id),a=(s=(o=(i=(await x.getShadowGraphqlClient().mutate({mutation:rn,variables:{id:this.getWorkflowManager().getTransaction().id,details:e,type:"Owner"},context:{transactionOwnerId:t}})).data)==null?void 0:i.transactionAddStakeholder)==null?void 0:o.stakeholders)==null?void 0:s.find(r=>{var l;return((l=r.customer)==null?void 0:l.emailAddress)===e.emailAddress});if(a!=null&&a.customer){this.getWorkflowManager().setTransactionCustomer(a.customer);const r=P.getMap("transactionCustomerIds")||new Map;r.set(this.getWorkflowManager().getTransaction().id,a.customer.id),P.setMap("transactionCustomerIds",r)}}attachRenderableSceneListener(e){this.renderableSceneCallbacks.push(e),e(this.renderableScenes)}detachRenderableSceneListener(e){this.renderableSceneCallbacks=this.renderableSceneCallbacks.filter(A=>A!==e)}async save(e){if(!this.getCommandContext().getState())throw new U("State undefined!");const n={title:await(async()=>{var s;if(e)return e;const a=this.getWorkflowManager().getTransaction().id,o=(s=(await pe.getSavedDesigns()).find(r=>r.transactionId===a))==null?void 0:s.title;return o||"My design"})(),thumbnail:await this.createPreviewImage(!1,256),transactionId:this.getWorkflowManager().getTransaction().id,productId:this.getWorkflowManager().getProduct().id,integrationProductId:this.getWorkflowManager().getTransaction().integrationProduct.id,workflowName:this.getWorkflowManager().getWorkflow().name,workflowId:this.getWorkflowManager().getWorkflow().id,lastEdited:new Date};return await pe.addDesign(n),n}async copy(){var o;const e=we(this.getCommandContext().getState());if(!e)throw new U("Internal state is undefined! Cannot copy experience!");const A=JSON.stringify(e.transaction),t=this.getWorkflowManager().getWorkflow(),n=new ZA({}),a=(o=this.getWorkflowManager().getTransaction().integrationProduct)==null?void 0:o.id;if(!a)throw new U("Integration product id is undefined!");return await n.initFromIntegrationProduct(a),await n.getWorkflowExperience(t.id,A,void 0)}async onDesignFinished(e,A=!0){return bA(this.workflowManager,this.workflowManager.getWorkflow(),this.workflowManager.getLayouts(),()=>this.commandContext.getState(),this.workflowManager.getProduct(),this.workflowManager.getTransaction(),this.workflowManager.getWorkflowSelections(),this.workflowManager.getWorkflow().name,e||(()=>{}),t=>A?this.createPreviewImage(t,1024):Promise.resolve(void 0),this.workflowManager.getWorkflowMetadata())}stepHasHandle(e){return e.type!==c.StepType.SilentIllustration&&e.type!==c.StepType.ProductOverlay}getExportedData(){var n;const e=new Map,A=this.getWorkflowManager().getWorkflowMetadata(),t=this.getWorkflowManager().getWorkflowSelections();return Object.keys(A).forEach(a=>{const i=this.workflowManager.getWorkflow().steps.find(s=>s.stepName===a);if(!i)return;e.has(i.stepTitle)||e.set(i.stepTitle,{});const o=A[a];Object.keys(o).forEach(s=>{e.get(i.stepTitle)[s]=o[s]})}),(n=Object.keys(t))==null||n.forEach(a=>{const i=this.workflowManager.getWorkflow().steps.find(o=>o.stepName===a);i&&(e.has(i.stepTitle)||e.set(i.stepTitle,{}),e.get(i.stepTitle).selection=t[a].selections[0].name)}),e}}const cn=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],gn=async(g,e,A)=>{const t=e.data,n=A.data.baseUrl,a=t.assetUrl.replace("localhost","localstack"),i=n.slice(0,4)==="http"?"":"https://",o=new URL(i+n);o.searchParams.append("video",c.toBase64(JSON.stringify([{href:a}]))),o.pathname=o.pathname+(o.pathname.slice(-1)==="/"?"":"/");const s=o.toString(),l=`data:image/svg+xml;base64,${c.toBase64(await $e.toString(s,{type:"svg"}))}`,d=w=>{const E=g.find(h=>h.panelId===w.panelId);if(!E)throw new k(w);const Q=c.generate();return new c.CreateElementCommand({id:Q,src:l,type:c.LayoutElementType.Image,y:w.top,x:w.left,width:w.width,height:w.height,rotation:0},E)},B=A.data.regions;try{return B.map(d)}catch(w){return console.error(w),[]}},ln=async(g,e,A,t)=>{const n=A.data,a=n.assetUrl,i=await c.getPatternImageData(a);try{const o=c.getVariant(n,t.option);o&&(e[t.stepName]={selectedVariants:[o]});const s=async r=>{var Q;const l=await c.generateFrameSVG(r||{width:1,height:1},(Q=o==null?void 0:o.asset)==null?void 0:Q.fileLink),d=await c.getFrameData(l),B=c.generate(),w=g.find(h=>h.panelId===r.panelId);if(!w)throw new k(r);const E=c.calculateOffsets(i,d,{scale:n.scale,left:n.x,top:n.y});return[new c.CreateElementCommand({id:B,path:d.path,dataWidth:d.width,dataHeight:d.height,type:c.LayoutElementType.Frame,focalBlur:t.data.focalBlur,focalBlurStrength:t.data.focalBlurStrength,focalBlurRadius:t.data.focalBlurRadius,forceImageCover:t.data.forceImageCover,x:r.left,y:r.top,width:r.width,height:r.height,layer:r.layer,layerIndex:r.layerIndex,rotation:r.rotation,scaleX:r.width/d.width,scaleY:r.height/d.height,pattern:void 0},w),new c.UpdateFramePattern(B,i,E)]};return(await Promise.all(t.data.regions.map(r=>s(r)))).flat()}catch(o){return console.error(o),[]}},Bn=async(g,e,A,t)=>{var F,p;const n=A.data,a=t.option;if(!a)return console.error(`No option for step ${t.stepName}.`),[];const i=((F=a.variants)==null?void 0:F.find(D=>D.id===n.illustrationVariantId))||c.getDefaultVariant(a);if(!i)return console.error(`No variant with ID: ${n.illustrationVariantId}`),[];if(!i.asset)return console.error(`No asset for variant with ID: ${n.illustrationVariantId}`),[];e[t.stepName]={selectedVariants:[i]};const o=(p=i.asset)==null?void 0:p.fileLink;if(!o)return console.error(`No asset link for variant with ID: ${n.illustrationVariantId}`),[];const s=await c.fetchAsString(o,!0),r=/<svg.*?<\/svg>/s,l=s.match(r)||[],d=(l==null?void 0:l.length)>0?l[0]:"",E=c.domParser().parseFromString(d,"image/svg+xml").firstElementChild;if(!E)return console.error("Failed to read SVG."),[];c.sanitizeSvgTree(E);const Q={};c.traverse(E,D=>{cn.includes(D.tagName)&&!D.attributes.getNamedItem("fill")&&D.setAttribute("fill","#000000");const S=D.attributes.getNamedItem("fill");if(S&&S.value!=="none"){const Y=S.value,N=`spiff-fill-${Y.replace(/\W/g,"")}`;D.classList.add(N),Q[N]={browserValue:Y}}const y=D.attributes.getNamedItem("stroke");if(y&&y.value!=="none"){const Y=y.value,N=`spiff-stroke-${Y.replace(/\W/g,"")}`;D.classList.add(N),Q[N]={browserValue:Y}}});const u=c.xmlSerializer().serializeToString(E),C=n.colors;if(C){for(const[D,S]of Object.entries(Q))for(const y of Object.keys(C))if(S.browserValue===y){Q[D]={browserValue:C[y]};break}}const f=D=>{const S=g.find(Y=>Y.panelId===D.panelId);if(!S)throw new k(D);const y=c.generate();return new c.CreateElementCommand({colors:Q,id:y,svg:u,type:c.LayoutElementType.Illustration,y:D.top,x:D.left,rotation:D.rotation,width:D.width,height:D.height,layer:D.layer,layerIndex:D.layerIndex,immutable:D.immutable},S)},I=t.data.regions;try{return I.map(f)}catch(D){return console.error(D),[]}},dn=async(g,e,A)=>{const t=await FA(A.data.module),n=e.data,a=(o,s)=>{const r=g.find(d=>d.panelId===s.panelId);if(!r)throw new k(s);const l=c.generate();return new c.CreateElementCommand({colors:{},id:l,svg:o,type:c.LayoutElementType.Illustration,y:s.top,x:s.left,rotation:s.rotation,width:s.width,height:s.height,layer:s.layer,layerIndex:s.layerIndex},r)},i=A.data.regions;try{return i.map(o=>a(t.svgPrint(n.text,o),o))}catch(o){return console.error(o),[]}},wn=async(g,e,A,t)=>{var l,d;const n=A.data,a=t.option;if(!a)return console.error(`No option for step ${t.stepName}.`),[];const i=((l=a.variants)==null?void 0:l.find(B=>B.id===n.pictureVariantId))||c.getDefaultVariant(a);if(!i)return console.error(`No variant with ID: ${n.pictureVariantId}`),[];if(!i.asset)return console.error(`No asset for variant with ID: ${n.pictureVariantId}`),[];e[t.stepName]={selectedVariants:[i]};const o=(d=i.asset)==null?void 0:d.fileLink;if(!o)return console.error(`No asset link for variant with ID: ${n.pictureVariantId}`),[];const s=B=>{const w=g.find(Q=>Q.panelId===B.panelId);if(!w)throw new k(B);const E=c.generate();return new c.CreateElementCommand({id:E,src:o,type:c.LayoutElementType.Image,y:B.top,x:B.left,rotation:B.rotation,width:B.width,height:B.height,layer:B.layer,layerIndex:B.layerIndex,immutable:B.immutable,preserveAspectRatio:"none"},w)},r=t.data.regions;try{return r.map(s)}catch(B){return console.error(B),[]}},En=async(g,e,A,t)=>{var r;const n=A.data,a=t.option;if(!a)return console.error(`No option for step ${t.stepName}.`),[];const i=((r=a.variants)==null?void 0:r.find(l=>l.id===n.colorVariantId))||c.getDefaultVariant(a);if(!i)return console.error(`No variant with ID: ${n.colorVariantId}`),[];e[t.stepName]={selectedVariants:[i]};const o=l=>{const d=g.find(h=>h.panelId===l.panelId);if(!d)throw new k(l);const B=`
|
|
1910
1910
|
<svg
|
|
1911
1911
|
xmlns="http://www.w3.org/2000/svg"
|
|
1912
1912
|
xmlnsXlink="http://www.w3.org/1999/xlink"
|
package/package.json
CHANGED