@spiffcommerce/core 0.10.210 → 0.10.211
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/main.js +1 -1
- package/dist/module.js +1 -1
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -235,5 +235,5 @@ var A=require("lodash.clonedeep"),t=require("react/jsx-runtime"),e=require("open
|
|
|
235
235
|
lastSyncedAt
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
|
-
`;class La extends Ja{constructor(A,t){super(A,t),Oa(this,"transaction",this.manager.getTransaction())}selectVariant(){throw new Error("Bulk step does not support variants.")}async setDesignName(A){await an.getShadowGraphqlClient().mutate({mutation:ja,variables:{transactionId:this.manager.getTransaction().id,designName:A}});const t=this.manager.getTransaction();this.manager.setTransaction({...t,designName:A})}addVariationRecord(){const A=this.manager.addVariationRecord({transactionId:this.transaction.id,values:[]});return this.manager.setCurrentVariationRecord(A),A}updateBulkIsConnected(A){this.manager.updateStorage(this.getId(),{bulkIsConnected:A})}openBulkSourceUrl(){window.open(this.transaction.bulkSourceUrl,"_blank")}async sendGoogleSheetLinkToEmail(A){await an.getShadowGraphqlClient().mutate({mutation:za,variables:{id:this.transaction.id,bulkEmailAddress:A}}),this.openBulkSourceUrl()}deleteVariationRecord(A){this.manager.removeVariationRecord(A)}getAspects(){return this.step.data.aspects}}class Ta extends Ja{constructor(A,t){super(A,t)}async selectVariant(A){if(await this.getCurrentVariant()!==A)return ma.selectVariant(this.step,A,this.manager.getRegionElements(this.step.stepName)||[],(A=>this.setUpdateState(A)),this.manager)}getColors(){const A=this.manager.getRegionElements(this.step.stepName)||[];if(0!==A.length)try{return Nt(A[0].id,this.manager.getAllLayoutData()).colors}catch(A){}}setColor(A,t){const e=new Map;return e.set(A,t),ma.changeColors(this.step,this.manager.getRegionElements(this.step.stepName),this.manager,(()=>this.manager.getCommandContext().getAllLayouts()),e)}async getColorOption(){const A=this.step.data.colourOptionId;if(!A)return;const t=await ln.getOption(nn,A);return t||void 0}getAvailableColors(){return this.step.data.colourPickerEnabled?ma.availableColors(this.step,this.manager):Promise.resolve([])}hasVaryingSelection(){return this.step.data.varySelection}hasVaryingColors(){return this.step.data.varyColors}isColorPickerEnabled(){return this.step.data.colourPickerEnabled}}class Ka extends Ja{constructor(A,t){super(A,t)}selectVariant(A){return Da.selectVariant(this.step,A,this.manager,(A=>this.setUpdateState(A)))}}class Va extends Ja{constructor(A,t){super(A,t)}selectVariant(A){return pa.selectVariant(this.step,A,this.manager,(A=>this.setUpdateState(A)))}}class Xa extends Ja{constructor(A,t){super(A,t)}selectVariant(A){return ya.selectVariant(this.step,A,this.manager,(A=>this.setUpdateState(A)))}}class Wa extends Ja{constructor(A,t){super(A,t)}async selectVariant(A){if(!A.id)throw new Error("Unable to select variant with a null ID");await Ma.selectVariant(this.step,A.id,this.manager)}getDisplayType(){return this.step.option?.data.displayType}}class Za extends Ja{constructor(A,t){super(A,t)}selectVariant(A){return Promise.resolve()}setColor(A){return Fa.selectVariant(this.step,A,this.manager.getRegionElements(this.step.stepName)||[],this.manager)}getColors(){return Fa.availableColours(this.step,this.manager)}}class qa extends Ja{constructor(A,t){super(A,t)}async selectVariant(A){Pa.selectVariant(this.step,A,this.manager,(A=>{if(A)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:"An issue has occured with test",messageType:Ha.Error,stepID:this.step.stepName}]);else{const A=this.manager.getInformationResults().filter((A=>A.stepID!==this.step.stepName));this.manager.setInformationResults(A)}}),(A=>{}))}getAvailableColors(){return this.step.data.colourPickerEnabled?Pa.availableColors(this.step,this.manager):Promise.resolve([])}async setFill(A){const t=this.manager.getRegionElements(this.step.stepName);await Pa.changeFill(this.step,A,t,this.manager)}getFill(){return this.manager.getStepStorage(this.step.stepName)?.color||"#000000"}setFullTextCustomization(A){const t=this.manager.getStepStorage(this.step.stepName)?.inputText||"",e=void 0!==this.step.data.replaceableText?this.step.data.replaceableText.replace("{{}}",t):t,n=A?e:this.step.data.defaultText;this.manager.updateStorage(this.step.stepName,{customiseAllText:A,text:n,defaultCleared:!1});return this.setText(n)}setText(A){const t={input:A},e=Pa.findLayoutElements(this.manager,this.step),n=Pa.filterUnsupportedCharacters(A,e[0]?.fontData);!!this.step.data&&!!this.step.data.maxLength&&n.length>this.step.data.maxLength||(t.input=n);const i=e.length<=0,a=i?{inputText:n,text:n}:{inputText:n};if(this.manager.updateStorage(this.step.stepName,a),this.manager.updateMetadata(this.step.stepName,{text:n}),i)return t;const{command:s,errors:r,helperText:o}=Pa.updateInputText(n,e,this.step,this.manager);s&&this.manager.getCommandDispatcher()(s);const c=this.manager.getInformationResults(),g=r[0]?.localizationKey;if(g)this.manager.setInformationResults([...c,{message:`${g} - ${this.step.stepTitle}`,messageType:Ha.Error,stepID:this.step.stepName}]);else{const A=c.filter((A=>A.stepID!==this.step.stepName));this.manager.setInformationResults(A)}return t.helperText=g||o,t.errorText=g,t}getText(){const A=this.step.data.defaultText;return this.manager.getStepStorage(this.step.stepName)?.text||A||""}isReplaceable(){return this.step.data.userCanReplaceText}clearDefaultTextIfNecessary(){if(!this.manager.getStepStorage(this.step.stepName)?.defaultCleared&&this.step.data.deleteDefaultOnFocus){const A=this.setText("");return this.manager.updateStorage(this.step.stepName,{defaultCleared:!0,inputText:""}),A}}hasVaryingText(){return this.step.data.varyText}hasVaryingColor(){return this.step.data.varyColor}hasVaryingSelection(){return this.step.data.varySelection}hasColorPicker(){return this.step.data.colourPickerEnabled}getRegions(){return this.step.data.regions}}class $a{static get(A,t){switch(t.type){case V.Question:return new Wa(A,t);case V.Text:return new qa(A,t);case V.Illustration:return new Ta(A,t);case V.Picture:return new Xa(A,t);case V.Shape:return new Za(A,t);case V.Material:return new Ka(A,t);case V.Model:return new Va(A,t);case V.Frame:return new Is(A,t);case V.Bulk:return new La(A,t);default:throw new je(`Step type ${t.type} not yet supported in Core SDK`)}}}function _a(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const As=(A,t,e)=>{const n={};return t.steps.forEach((t=>{Object.assign(n,(t=>{const n={};if("Frame"===t.type){const i=A[t.stepName],a=t.data;if(!i||a.hideImageInCart&&e)return n;n[`${t.stepTitle} image`]=i.image}if("Illustration"===t.type){const i=A[t.stepName],a=t.data;if(!i||a.hideColorsInCart&&e||!i.colors)return n;if(i.colors.length>0){const A=i.colors.join(", ").toUpperCase();n[`${t.stepTitle} colors`]=A}}if("Module"===t.type){const i=A[t.stepName],a=t.data;if(!i||a.hideTextInCart&&e)return n;n[`${t.stepTitle} text`]=i.text}if("Text"===t.type){const i=A[t.stepName];if(!i)return n;const a=t.data;a.hideTextInCart&&e||(n[`${t.stepTitle} text`]=i.text),!i.color||a.hideColorInCart&&e||(n[`${t.stepTitle} color`]=i.color)}return n})(t))})),n},ts=(A,t,e,n,i,a,s,r,o)=>{const c={event:"onComplete",lineItemImageUrl:s?s.href:"",transactionId:A.id,designProductVariantId:A.externalDesignProductVariantId,designProductId:A.externalDesignProductId,baseCost:e,weight:t.weight,optionsCost:n,exportedData:a,workflowViewerLink:A.workflowViewerLink||"",workflowViewerReadOnlyLink:A.workflowViewerReadOnlyLink||""};return i&&(c.metadata=i),r&&(c.selectedVariants=r),o&&(c.sku=o),c},es=async(A,t,e,n,i,a,s)=>{const r=(A.product?.basePrice||0)*(A.variationsCount||0),o=A.priceModifierTotal||0,c=((A,t,e,n)=>{const i={};let a;if(e){a=As(e,t,!1);for(const A of Object.keys(a))i[A]={value:a[A],priceModifier:0}}else if(n){a=n;for(const A of Object.keys(a))i[A]={value:a[A],priceModifier:0}}for(const e of Object.keys(A)){const n=A[e],a=t.steps.find((A=>A.stepTitle===e));if(1===n.length)i[`${a?.stepTitle} selection`]={value:n[0].name,priceModifier:n[0].priceModifier};else if(n.length>1)for(let A=0;A<n.length;A++)i[`${a?.stepTitle} selection ${A+1}`]={value:n[A].name,priceModifier:n[A].priceModifier}}return i})(n,e,void 0,a);return ts(A,t,r,o,a,c,s,n,i)},ns=async(A,t,e,n,i,a,s,r,o,c,g,l,B)=>{o("workflow.steps.finish.finalize.buildingLayouts"),await A.outstandingRequestsPromise();const w=an.getShadowGraphqlClient();await w.resetStore();const d=await w.query({query:ta,variables:{id:a.id},errorPolicy:"all"}),h=d.data?.transactions[0].workflowState;!d.errors&&h||(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(n())),d.errors&&d.errors.forEach((A=>{d.errors&&console.log("Server Error:",A.message)})),await A.updateStateWithServerImmediate(n),console.log("Server state is undefined @ Workflow completion"));const E=A.getPreviewService(),C=t?.finalizeStepConfig?.lookAtAnimation,Q=E&&100===E.getSceneInitializationProgress()&&t.showModelOnFinishStep&&!!C,u=B&&As(B,t,!0),I=B&&As(B,t,!1),m=async A=>{const e={};let n=0;if(Object.keys(s).length>0)for(const i of Object.keys(s)){const a=s[i],r=t.steps.find((A=>A.stepName===i));for(let t=0;t<a.selections.length;++t){const i=a.selections[t];if(r&&(!A||await ln.getOption(nn,r.optionId)&&(await ln.getOption(nn,r.optionId)).data.variants.length>1&&!r.data.hideSelectionInCart&&!r.data.hideSelectionsInCart)){const A=r.stepTitle;e[A]?e[A].push({id:i.id||"",name:i.name,priceModifier:i.priceModifier}):e[A]=[{id:i.id||"",name:i.name,priceModifier:i.priceModifier}]}n+=i.priceModifier}}return[e,n]},[D]=await m(!0),p=Object.fromEntries(Object.keys(D).map((A=>[A,D[A].map((A=>A.id))]))),[f]=await m(!1),y=Object.fromEntries(Object.keys(f).map((A=>[A,f[A].map((A=>A.id))]))),M=await l(Q);o("workflow.steps.finish.finalize.creatingDesign");const F=(await nn.execute("createDesign",{designDetails:(()=>{const A={designName:r,layouts:e.map((A=>({index:A.index,panelId:A.panelId}))),workflowId:t.id,productId:i.id,transactionId:a.id,threeDimPreview:Q,previewImage:M};return B&&(A.metadata=I),p&&(A.selectedVariants=y),A})()})).body,x=F.links.find((A=>"image"===A.rel));o("workflow.steps.finish.finalize.updatingTransaction");const Y=(await an.getShadowGraphqlClient().query({query:Aa,variables:{id:a.id}})).data.transactions[0];return a.bulk?(await c(g),((A,t,e)=>{const n=(A.product?.basePrice||0)*(A.variationsCount||0),i=A.priceModifierTotal||0,a={items:{value:A.variationsCount?`${A.variationsCount}`:"0",priceModifier:0}};return ts(A,t,n,i,void 0,a,e)})(Y,i,x)):await es(Y,i,t,D,F.data.sku,u,x)};let is;var as;(as=is||(is={})).Local="Local",as.Remote="Remote";const ss=new class{constructor(){_a(this,"localPersistenceKey","designTransactions"),_a(this,"storageMethod",is.Local),_a(this,"designSavedListeners",[])}attachSaveListener(A){this.designSavedListeners.push(A)}detachSaveListener(A){this.designSavedListeners=this.designSavedListeners.filter((t=>t!==A))}async getSavedDesigns(){return await this.getDesigns()}async getSavedDesignByTransaction(A){return(await this.getSavedDesigns()).find((t=>t.transactionId===A))}async addDesign(A){const t=(await this.getSavedDesigns()).filter((t=>t.transactionId!==A.transactionId));t.unshift(A),await this.setDesigns(t),this.notifyDesignSaved(A)}async removeDesign(A){const t=await this.getSavedDesigns();await this.setDesigns(t.filter((t=>t.transactionId!==A)))}async setDesigns(A){if(this.storageMethod!==is.Local)throw new je("Unexpected storage method requested");Ze.set(this.localPersistenceKey,JSON.stringify(A))}async getDesigns(){if(this.storageMethod===is.Local){const A=Ze.get(this.localPersistenceKey);return A?JSON.parse(A):[]}throw new je("Unexpected storage method requested")}notifyDesignSaved(A){this.designSavedListeners.forEach((t=>t(A)))}};function rs(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}class os{constructor(A,t,e){if(rs(this,"client",void 0),rs(this,"commandContext",void 0),rs(this,"workflowManager",void 0),rs(this,"isReadOnly",void 0),rs(this,"server",void 0),rs(this,"renderableScenes",[]),rs(this,"renderableSceneCallbacks",[]),rs(this,"debouncedSavedDesignUpdate",y(D)((async()=>{await ss.getSavedDesignByTransaction(this.getWorkflowManager().getTransaction().id)&&this.save()}),2500)),!t.workflow)throw new Error("No Workflow ID provided.");this.client=A,this.server=e;const n=t.layouts;this.commandContext=new Ft,this.commandContext.initialize(n,t.reloadedState),this.isReadOnly=!!t.transaction.lineItem?.id||!Ze.getMap("transactionOwnerIds")?.get(t.transaction.id)||!!t.readOnly,this.workflowManager=new Ga(t.workflow,t.product.profanities?.map((A=>A.word))||[],n,this.commandContext,(A=>{try{this.debouncedSavedDesignUpdate()}catch{console.error("Failed to update saved design details.")}return t.stateMutationFunc(A)}),t.transaction,t.product,this.server,t.previewService,t.renderableContextService,t.reloadedState,t.readOnly),this.workflowManager.addSelectionCallback((A=>{const t=A.traversableScenes.map((A=>{const t=A.renderableSteps.map((A=>A.stepName));return{id:A.name,title:A.title,renderableSteps:t}}));this.renderableScenes=t,this.renderableSceneCallbacks.forEach((A=>A(t)))}))}getClient(){return this.client}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.commandContext}getWorkflowManager(){return this.workflowManager}async updateVariationRecords(A){await an.getShadowGraphqlClient().mutate({mutation:_i,variables:{transactionId:this.workflowManager.getTransaction().id,updates:A.map((A=>({recordNumber:A.recordNumber,values:A.values.map((A=>({aspect:A.aspect,stepName:A.stepName,value:A.value})))})))}})}async createPreviewImage(A,t){const e=this.workflowManager.getWorkflow()?.finalizeStepConfig?.lookAtAnimation;if(A){if(!e)throw new Error("Failed to generate cart preview image!");return await(this.workflowManager.getPreviewService()?.renderSceneScreenshot(512,e))||""}const n=document.createElement("canvas");let i=2048;t&&t<=2048&&(i=t),n.width=i,n.height=i;const a=this.commandContext.getAllLayouts()[this.workflowManager.getWorkflow().defaultPreviewPanelIndex||0],s=a.layoutState.layout.previewRegion?{x:a.layoutState.layout.previewRegion.left,y:a.layoutState.layout.previewRegion.top,width:a.layoutState.layout.previewRegion.width,height:a.layoutState.layout.previewRegion.height}:{x:0,y:0,width:a.layoutState.layout.width,height:a.layoutState.layout.height},r=this.commandContext.getLayoutById(a.layoutState.layout.id),o=n.getContext("2d");if(!o)throw new Ke("Failed to obtain 2D context for preview image creation");const c=Yt(r.layoutState.layout,r.layoutState.elements,{renderingConfiguration:{purpose:H.Print,region:{left:s.x,top:s.y,width:s.width,height:s.height}}}),g=y(u).renderToStaticMarkup(c),B=await l.Canvg.from(o,g,{anonymousCrossOrigin:!0,ignoreDimensions:!1});await B.render();const w=await(async A=>new Promise(((t,e)=>{try{A.toBlob((A=>{if(A){const e=URL.createObjectURL(A);t(e)}}))}catch(A){e(A)}})))(n);return n.toDataURL(w)}getStepById(A){const t=this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepName===A));if(t&&this.stepHasHandle(t))return $a.get(this.getWorkflowManager(),t)}getBulkStep(){if(this.getWorkflowManager().getTransaction().bulk){const A={type:V.Bulk,stepName:"Bulk",stepTitle:"workflow.steps.bulk.title",helpText:"help:/partner/add-ons/bulk-ordering",data:{aspects:ea(this.getWorkflowManager().getWorkflow())},conditions:[]};return $a.get(this.getWorkflowManager(),A)}}getStepByName(A){const t=this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepTitle===A));if(t&&this.stepHasHandle(t))return $a.get(this.getWorkflowManager(),t)}getStepsByType(A){return this.getWorkflowManager().getWorkflow().steps.filter((t=>t.type===A)).map((A=>$a.get(this.getWorkflowManager(),A)))}getStepsByScene(A){if(!this.getWorkflowManager().getWorkflow().stepGroups.find((t=>t.name===A.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 A.stepNames.map((A=>this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepName===A)))).filter((A=>this.stepHasHandle(A))).map((A=>$a.get(this.getWorkflowManager(),A)))}async attachCustomerDetails(A){await an.getShadowGraphqlClient().mutate({mutation:za,variables:{id:this.getWorkflowManager().getTransaction().id,bulkEmailAddress:A.email}}),this.getWorkflowManager().setTransactionCustomerDetails(A)}attachRenderableSceneListener(A){this.renderableSceneCallbacks.push(A),A(this.renderableScenes)}detachRenderableSceneListener(A){this.renderableSceneCallbacks=this.renderableSceneCallbacks.filter((t=>t!==A))}async save(A){if(!this.getCommandContext().getState())throw new je("State undefined!");const t={title:await(async()=>{if(A)return A;const t=this.getWorkflowManager().getTransaction().id,e=(await ss.getSavedDesigns()).find((A=>A.transactionId===t))?.title;return e||"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 ss.addDesign(t),t}async copy(){const t=y(A)(this.getCommandContext().getState());if(!t)throw new je("Internal state is undefined! Cannot copy experience!");const e=JSON.stringify(t.transaction),n=this.getWorkflowManager().getWorkflow(),i=new ls({}),a=this.getWorkflowManager().getTransaction().integrationProduct?.id;if(!a)throw new je("Integration product id is undefined!");await i.initFromIntegrationProduct(a);return await i.getWorkflowExperience(n.id,e,void 0,this.server)}async onDesignFinished(A,t,e,n){return ns(this.workflowManager,this.workflowManager.getWorkflow(),this.workflowManager.getLayouts(),(()=>this.commandContext.getState()),A,this.workflowManager.getTransaction(),e,this.workflowManager.getWorkflow().name,t,(A=>this.updateVariationRecords(A)),this.workflowManager.getVariationRecords(),(A=>this.createPreviewImage(A)),n)}stepHasHandle(A){return A.type!==V.SilentIllustration&&A.type!==V.ProductOverlay}}function cs(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const gs=(A,t)=>{const e=A.workflowState,n=e?JSON.parse(e):void 0;return n?Object.values(n.layouts).map((A=>A.layout)):t.panels.sort(((A,t)=>A.index-t.index)).map((A=>({id:Y(),panelId:A.name,name:A.name,index:A.index,createdAt:new Date,updatedAt:new Date,transparentBackground:A.transparentBackground,height:A.height,width:A.width,previewRegion:A.previewRegion,useEditableArea:A.useEditableArea,editableArea:A.editableArea})))};class ls{constructor(A){cs(this,"options",void 0),cs(this,"initialized",void 0),cs(this,"experienceOptions",void 0),cs(this,"updateTransactionState",(async A=>{try{return an.getShadowGraphqlClient().mutate({...A,mutation:qi})}catch(A){throw console.error(A),new Te("Critical - Unable to synchronize workflow state with server.")}})),this.initialized=!1,this.options=A}getAssetManager(){return cn}async initFromIntegrationProduct(A){if(""===A)throw new Te("No integration product ID provided.");this.options.useUncachedEndpoints&&nn.setUncachedOperations(["getAssetByKeyV2","getWorkflowV2","getMaterialV2","getOptionV2"]);const t=an.getShadowGraphqlClient();await t.resetStore();const e=await t.mutate({mutation:Xi,variables:{integrationProductId:A,bulk:this.options.bulk||!1},errorPolicy:"all"});if(!e.data)throw new Te("Failed to create transaction!");const n=(await t.mutate({mutation:Wi,variables:{id:e.data.transactionCreate.id},errorPolicy:"all"})).data?.transactionClaim;if(!n)throw new Te("Failed to create transaction.");if(!e.data.transactionCreate.product)throw new Te("Failed to create transaction, product not available.");const i=Ze.getMap("transactionOwnerIds")||new Map;i.set(n.id,n.transactionOwnerId),tn(n.transactionOwnerId||""),Ze.setMap("transactionOwnerIds",i),this.experienceOptions={product:e.data.transactionCreate.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState},this.initialized=!0}async initFromTransaction(A,t=!1){if(""===A)throw new Te("No transaction ID provided.");const e=an.getShadowGraphqlClient();await e.resetStore();if(t)return await(async()=>{console.log("Readonly Mode");const n=(await e.query({query:Zi,variables:{id:A},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new Te("Failed to read transaction.");if(!n.product)throw new Te("Failed to load transaction, product not available.");this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:async()=>{throw new je("State mutation is forbidden in read only mode!")},readOnly:t},this.initialized=!0})();const n=Ze.getMap("transactionOwnerIds")||new Map,i=n.get(A);if(i){tn(i);const n=(await e.query({query:Zi,variables:{id:A},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new Te("Failed to read transaction.");if(!n.product)throw new Te("Failed to load transaction, product not available.");return this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:t},void(this.initialized=!0)}try{const i=(await e.mutate({mutation:Wi,variables:{id:A},errorPolicy:"all"})).data?.transactionClaim;if(!i)throw new Te("Failed to read transaction.");if(!i.product)throw new Te("Failed to load transaction, product not available.");i.transactionOwnerId&&(n.set(i.id,i.transactionOwnerId),tn(i.transactionOwnerId),Ze.setMap("transactionOwnerIds",n)),this.experienceOptions={product:i.product,transaction:i,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:t},this.initialized=!0}catch{throw new Te("Attempted to access a transaction that isn't available.")}}async getWorkflowExperience(A,t,e,n){if(!this.initialized||!this.experienceOptions)throw new Te("Cannot launch experience: Not initialized.");const i=async A=>{for(const t in A.layouts){const e=A.layouts[t].elements.filter((A=>A.type===P.Illustration));for(let A=0;A<e.length;++A){const t=e[A];t.src&&t.svg&&(t.cachedObjectURL=await Se(t.svg))}const n=A.layouts[t].elements.filter((A=>A.type===P.Textbox));for(let A=0;A<n.length;++A){const t=n[A];t.fontData?.assetUrl&&KA(t.fontData.assetUrl)}}},a=n||nn;if(this.experienceOptions.transaction.workflowId){const A=(await a.execute("getWorkflowV2",{workflowSlug:this.experienceOptions.transaction.workflowId})).body.data;if(this.experienceOptions.workflow=A,this.experienceOptions.transaction.workflowState){const A=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(A.layouts).map((A=>A.layout)),await Ht(A),await i(A),this.experienceOptions.reloadedState=A}this.experienceOptions.previewService=e&&e(A),this.experienceOptions.renderableContextService=new ki(this.experienceOptions.layouts,a),this.experienceOptions.product?.modelUrl&&this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService);const t=new os(this,this.experienceOptions,a);return await t.getWorkflowManager().getInitializationPromise(),t}if(A){const n=(await a.execute("getWorkflowV2",{workflowSlug:A})).body.data;if(this.experienceOptions.workflow=n,await an.getShadowGraphqlClient().mutate({mutation:$i,variables:{workflowId:A,id:this.experienceOptions.transaction.id}}),t){const A=JSON.parse(t);this.experienceOptions.layouts=Object.values(A.layouts).map((A=>A.layout)),await Ht(A),await i(A),this.experienceOptions.reloadedState=A}else this.experienceOptions.layouts=gs(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=e&&e(n),this.experienceOptions.renderableContextService=new ki(this.experienceOptions.layouts,a),this.experienceOptions.product?.modelUrl&&this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService);const s=new os(this,this.experienceOptions,a);return await s.getWorkflowManager().getInitializationPromise(),s}throw new Te("No workflow ID provided.")}getPreviewService(){return this.experienceOptions?.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new Te("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new Te("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}}function Bs(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const ws={setUncachedOperations:()=>{},execute:async()=>({body:{},headers:{"content-type":""}})};class ds{static getFrameStep(A){return{type:V.Frame,stepTitle:"My frame Step",stepName:"My Step Name",conditions:[],option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"my-new-variant",priceModifier:1,asset:{data:{key:"1",createdAt:0,licenseId:"",mimeType:"",ownerId:"",price:0,public:!0,type:T.Frame,objectVersions:[],tags:[]},links:[{href:ds.aFrame,rel:"cdn"}]}},{id:"2",name:"my-new-variant-2",priceModifier:1,asset:{data:{key:"2",createdAt:0,licenseId:"",mimeType:"",ownerId:"",price:0,public:!0,type:T.Frame,objectVersions:[],tags:[]},links:[{href:ds.bFrame,rel:"cdn"}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,layer:0,layerIndex:0,rotation:0,panelId:"p-123",immutable:!1,adjustmentBoundary:{x:0,y:0,height:0,width:0}}],...A}}}static getBulkStep(){return{type:V.Bulk,stepTitle:"Bulk",stepName:"bulk-step",data:{aspects:[]}}}static getQuestionStep(A,t){return{type:V.Question,stepTitle:"question-step",stepName:A||"question-step",conditions:t,option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"my-variant",priceModifier:1},{id:"2",name:"my-variant2",priceModifier:1}]},links:[]},data:{}}}static getMaterialStep(A,t){return{type:V.Material,stepTitle:"My Material Step",stepName:A||"material-step",conditions:t,option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"my-variant",priceModifier:1,material:{data:{id:"1",name:"mat-1",clearCoat:j.None,createdAt:(new Date).toISOString(),updatedAt:(new Date).toISOString(),albedoMapKey:ds.redRaster},links:[]}},{id:"2",name:"my-variant2",priceModifier:1,material:{data:{id:"2",name:"mat-2",clearCoat:j.None,createdAt:(new Date).toISOString(),updatedAt:(new Date).toISOString(),albedoMapKey:ds.blueRaster},links:[]}}]},links:[]},data:{targetMaterials:["panel"]}}}static getTextStep(A){return{type:V.Text,stepTitle:"s-1",stepName:"s-1",option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"font/ttf",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Font,tags:[]},links:[{rel:"cdn",href:ds.minimalFont}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],defaultText:"",font:"",maxLength:100,size:16,textAlign:"center",colour:"#000000",verticalAlign:"top",...A}}}static getIllustrationStep(A){return{type:V.Illustration,stepTitle:"s-1",stepName:"s-1",option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"image/svg+xml",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Illustration,tags:[]},links:[{rel:"cdn",href:ds.blueShape.src}]}},{id:"2",name:"",priceModifier:1,assetKey:"456",asset:{data:{key:"456",createdAt:0,mimeType:"image/svg+xml",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Illustration,tags:[]},links:[{rel:"cdn",href:ds.redShape.src}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],colourPickerEnabled:!1,...A}}}static getPictureStep(A,t){return{type:V.Picture,stepTitle:"s-1",stepName:"s-1",option:{data:{name:"test",defaultVariant:t,variants:[{id:"1",name:"a",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"image/png",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Image,tags:[]},links:[{rel:"cdn",href:ds.blueRaster}]}},{id:"2",name:"b",priceModifier:1,assetKey:"456",asset:{data:{key:"456",createdAt:0,mimeType:"image/png",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Image,tags:[]},links:[{rel:"cdn",href:ds.redRaster}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],...A}}}static getModelStep(A,t){return{type:V.Model,stepTitle:"s-1",stepName:"s-1",optionId:"om-1",option:{data:{id:"om-1",name:"test",defaultVariant:t,variants:[{id:"1",name:"a",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"application/octet-stream",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Model,tags:[]},links:[{rel:"cdn",href:ds.glbBox}]}},{id:"2",name:"b",priceModifier:1,assetKey:"456",asset:{data:{key:"456",createdAt:0,mimeType:"application/octet-stream",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Model,tags:[]},links:[{rel:"cdn",href:ds.glbVertexTest}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],...A}}}static getShapeStep(A,t=[]){return{type:V.Shape,stepTitle:"s-1",stepName:A,conditions:t,option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"a",priceModifier:1,color:"#FFFFFF"},{id:"2",name:"b",priceModifier:1,color:"#000000"}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}]}}}static getSilentIllustrationStep(A,t=[]){return{type:V.SilentIllustration,stepTitle:"s-1",stepName:A,conditions:t,data:{assetKey:ds.redRaster,regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}]}}}}Bs(ds,"minimalFont","data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTZfNAT0AAAcoAAAAHEdERUYAJQAAAAAHEAAAABhPUy8yaO1iTwAAAVgAAABgY21hcAA1CxkAAAHQAAABUmdhc3D//wADAAAHCAAAAAhnbHlmCT9XBwAAAzQAAABoaGVhZB35qu0AAADcAAAANmhoZWEEIACkAAABFAAAACRobXR4BkP/1QAAAbgAAAAYbG9jYQBgAFAAAAMkAAAADm1heHAASgALAAABOAAAACBuYW1llHqhugAAA5wAAAM5cG9zdAAwACUAAAbYAAAALgABAAAAAQAAIJ9E6V8PPPUACwPoAAAAAN68s6YAAAAA3ryzpv+tAAABtQK8AAAACAACAAAAAAAAAAEAAAK8/tQAAAHJ/60AAAG1AAEAAAAAAAAAAAAAAAAAAAAGAAEAAAAGAAgAAgAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAwE9AfQABQAAAooCuwAAAIwCigK7AAAB3wAxAQIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAWFhYWABAACAAQQK8/tQAAAK8AAAAAAABAAAAAAFeArwAAAAgAAEByQAUAAAAAAFNAAABTQAAAVQAFACM/60AAAADAAAAAwAAABwAAQAAAAAATAADAAEAAAAcAAQAMAAAAAgACAACAAAAAAAgAEH//wAAAAAAIABA//8AAP/j/8QAAQAAAAAAAAAAAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAWABYAFgAkADQAAAACABQAAAG1AqMAAwAHAAATIREhNyERIRQBof5fMAFA/sACo/1dMAJDAAAAAAEAFAAAAUACvAADAAATIREhFAEs/tQCvP1EAAAC/60AAAB4ArwAAAAEAAADEzMRI1NnZGQBPgF+/UQAAAAAIgGeAAEAAAAAAAAAAQAEAAEAAAAAAAEADAAgAAEAAAAAAAIABwA9AAEAAAAAAAMAFgBzAAEAAAAAAAQAFAC0AAEAAAAAAAUADQDlAAEAAAAAAAYAEgEZAAEAAAAAAAcAAQEwAAEAAAAAAAgAAQE2AAEAAAAAAAkAAQE8AAEAAAAAAAoAAQFCAAEAAAAAAAsAAQFIAAEAAAAAAAwAAQFOAAEAAAAAAA0AAQFUAAEAAAAAAA4AAQFaAAEAAAAAABAADAF2AAEAAAAAABEABwGTAAMAAQQJAAAAAgAAAAMAAQQJAAEAGAAGAAMAAQQJAAIADgAtAAMAAQQJAAMALABFAAMAAQQJAAQAKACKAAMAAQQJAAUAGgDJAAMAAQQJAAYAJADzAAMAAQQJAAcAAgEsAAMAAQQJAAgAAgEyAAMAAQQJAAkAAgE4AAMAAQQJAAoAAgE+AAMAAQQJAAsAAgFEAAMAAQQJAAwAAgFKAAMAAQQJAA0AAgFQAAMAAQQJAA4AAgFWAAMAAQQJABAAGAFcAAMAAQQJABEADgGDACAAACAAAE0AaQBuAGkAbQBhAGwAIABGAG8AbgB0AABNaW5pbWFsIEZvbnQAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAACAAOgBNAGkAbgBpAG0AYQBsACAARgBvAG4AdAAgAFIAZQBnAHUAbABhAHIAACA6TWluaW1hbCBGb250IFJlZ3VsYXIAAE0AaQBuAGkAbQBhAGwAIABGAG8AbgB0ACAAUgBlAGcAdQBsAGEAcgAATWluaW1hbCBGb250IFJlZ3VsYXIAAFYAZQByAHMAaQBvAG4AIAAwAC4AMAAwADEAAFZlcnNpb24gMC4wMDEAAE0AaQBuAGkAbQBhAGwARgBvAG4AdABSAGUAZwB1AGwAYQByAABNaW5pbWFsRm9udFJlZ3VsYXIAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAAE0AaQBuAGkAbQBhAGwAIABGAG8AbgB0AABNaW5pbWFsIEZvbnQAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAEAAgADACMAJAAAAAAAAf//AAIAAQAAAAwAAAAQAAAAAgAAAAQAAAACAAAAAAABAAAAANpTmfAAAAAA3ryzpgAAAADevLOm"),Bs(ds,"redShape",{src:"https://assets.spiff.com.au/public/assets/56cf72f5-a98d-487f-9e79-8129030ab99e.svg",text:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><script xmlns=""/><defs><style>.cls-1{fill:#f285b1;}</style></defs><title>Asset 4</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" width="512" height="512"/></g></g></svg>'}),Bs(ds,"blueShape",{src:"https://assets.spiff.com.au/public/assets/6b9c3b7a-a669-41be-8ba2-538588d449e0.svg",text:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><script xmlns=""/><defs><style>.cls-1{fill:#53c6d6;}</style></defs><title>Asset 3</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" width="512" height="512"/></g></g></svg>'}),Bs(ds,"aFrame","https://assets.spiff.com.au/public/assets/5bb3c003-3d30-4c98-9f07-2cfe25fbc4f7.svg"),Bs(ds,"bFrame","https://assets.spiff.com.au/public/assets/25e42f93-3f5d-43b6-9075-29164000bdf5.svg"),Bs(ds,"redRaster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg=="),Bs(ds,"blueRaster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPj/HwADBwIAMCbHYQAAAABJRU5ErkJggg=="),Bs(ds,"glbBox","data:@file/octet-stream;base64,Z2xURgIAAACABgAA3AMAAEpTT057ImFzc2V0Ijp7ImdlbmVyYXRvciI6IkNPTExBREEyR0xURiIsInZlcnNpb24iOiIyLjAifSwic2NlbmUiOjAsInNjZW5lcyI6W3sibm9kZXMiOlswXX1dLCJub2RlcyI6W3siY2hpbGRyZW4iOlsxXSwibWF0cml4IjpbMS4wLDAuMCwwLjAsMC4wLDAuMCwwLjAsLTEuMCwwLjAsMC4wLDEuMCwwLjAsMC4wLDAuMCwwLjAsMC4wLDEuMF19LHsibWVzaCI6MH1dLCJtZXNoZXMiOlt7InByaW1pdGl2ZXMiOlt7ImF0dHJpYnV0ZXMiOnsiTk9STUFMIjoxLCJQT1NJVElPTiI6Mn0sImluZGljZXMiOjAsIm1vZGUiOjQsIm1hdGVyaWFsIjowfV0sIm5hbWUiOiJNZXNoIn1dLCJhY2Nlc3NvcnMiOlt7ImJ1ZmZlclZpZXciOjAsImJ5dGVPZmZzZXQiOjAsImNvbXBvbmVudFR5cGUiOjUxMjMsImNvdW50IjozNiwibWF4IjpbMjNdLCJtaW4iOlswXSwidHlwZSI6IlNDQUxBUiJ9LHsiYnVmZmVyVmlldyI6MSwiYnl0ZU9mZnNldCI6MCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjI0LCJtYXgiOlsxLjAsMS4wLDEuMF0sIm1pbiI6Wy0xLjAsLTEuMCwtMS4wXSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjEsImJ5dGVPZmZzZXQiOjI4OCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjI0LCJtYXgiOlswLjUsMC41LDAuNV0sIm1pbiI6Wy0wLjUsLTAuNSwtMC41XSwidHlwZSI6IlZFQzMifV0sIm1hdGVyaWFscyI6W3sicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNvbG9yRmFjdG9yIjpbMC44MDAwMDAwMTE5MjA5MjksMC4wLDAuMCwxLjBdLCJtZXRhbGxpY0ZhY3RvciI6MC4wfSwibmFtZSI6IlJlZCJ9XSwiYnVmZmVyVmlld3MiOlt7ImJ1ZmZlciI6MCwiYnl0ZU9mZnNldCI6NTc2LCJieXRlTGVuZ3RoIjo3MiwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjAsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZVN0cmlkZSI6MTIsInRhcmdldCI6MzQ5NjJ9XSwiYnVmZmVycyI6W3siYnl0ZUxlbmd0aCI6NjQ4fV19iAIAAEJJTgAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAC/AAAAvwAAAD8AAAA/AAAAvwAAAD8AAAC/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAvwAAAD8AAAC/AAAAvwAAAD8AAAA/AAAAvwAAAL8AAAC/AAAAvwAAAL8AAAA/AAAAPwAAAD8AAAA/AAAAvwAAAD8AAAA/AAAAPwAAAL8AAAA/AAAAvwAAAL8AAAC/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAC/AAAAPwAAAL8AAAA/AAAAPwAAAL8AAAC/AAAAvwAAAD8AAAC/AAAAPwAAAD8AAAC/AAAAvwAAAL8AAAC/AAAAPwAAAL8AAAC/AAAAvwAAAL8AAAC/AAAAPwAAAL8AAAA/AAAAvwAAAL8AAAA/AAAAPwAAAL8AAAEAAgADAAIAAQAEAAUABgAHAAYABQAIAAkACgALAAoACQAMAA0ADgAPAA4ADQAQABEAEgATABIAEQAUABUAFgAXABYAFQA="),Bs(ds,"glbVertexTest","data:@file/octet-stream;base64,Z2xURgIAAABsZgAAxA0AAEpTT057ImFjY2Vzc29ycyI6W3siYnVmZmVyVmlldyI6MCwiY29tcG9uZW50VHlwZSI6NTEyMSwiY291bnQiOjM2LCJtYXgiOlsyM10sIm1pbiI6WzBdLCJ0eXBlIjoiU0NBTEFSIn0seyJidWZmZXJWaWV3IjoxLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjQsIm1heCI6WzAuNzU1NDc4MzgyMTEwNTk1NywtMC44NTEyNDE2NDgxOTcxNzQxLDAuOTc1MDMyODY2MDAxMTI5Ml0sIm1pbiI6Wy0wLjcwNDU2NTgyMzA3ODE1NTUsLTAuODUxMjQxNzA3ODAxODE4OCwtMC45NjExMTU0Nzk0NjkyOTkzXSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjIsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyNCwibWF4IjpbMCwxLDBdLCJtaW4iOlswLDEsMF0sInR5cGUiOiJWRUMzIn0seyJidWZmZXJWaWV3IjozLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjQsIm1heCI6WzEsNy4xMjE5Mzg5NDk2OTQ1OTVlLTgsMS41MTA1MTkyMTE5MzM1Njk3ZS03LDFdLCJtaW4iOlsxLC0xLjQzNDg4MTM2OTI3NzcxODVlLTcsLTEuMTI1NzY3NjM5MTA5NjUzOGUtNywxXSwidHlwZSI6IlZFQzQifSx7ImJ1ZmZlclZpZXciOjQsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyNCwibWF4IjpbMC45OTk5OTk4ODA3OTA3MTA0LDAuODAxMDQwOTQ3NDM3Mjg2NF0sIm1pbiI6WzAsMC4wNTUzOTcyNzIxMDk5ODUzNV0sInR5cGUiOiJWRUMyIn0seyJidWZmZXJWaWV3Ijo1LCJjb21wb25lbnRUeXBlIjo1MTIxLCJjb3VudCI6NzIsIm1heCI6WzQ3XSwibWluIjpbMF0sInR5cGUiOiJTQ0FMQVIifSx7ImJ1ZmZlclZpZXciOjYsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50Ijo0OCwibWF4IjpbMS4wMDAwMDA0NzY4MzcxNTgyLDEsMC40ODc0MjI0NjYyNzgwNzYxN10sIm1pbiI6Wy0xLjAwMDAwMDM1NzYyNzg2ODcsLTEsLTAuMTcxODY2NTM2MTQwNDQxOV0sInR5cGUiOiJWRUMzIn0seyJidWZmZXJWaWV3Ijo3LCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6NDgsIm1heCI6WzEsMSwxXSwibWluIjpbLTEsLTEsLTFdLCJ0eXBlIjoiVkVDMyJ9LHsiYnVmZmVyVmlldyI6OCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjQ4LCJtYXgiOlsxLDcuOTQwOTMzODgwNTA5MDY2ZS0yMyw0LjQ3MDM0ODM1ODE1NDI5N2UtOCwxXSwibWluIjpbMSwtNi42MTc0NDQ5MDA0MjQyMjJlLTI0LDAsMV0sInR5cGUiOiJWRUM0In0seyJidWZmZXJWaWV3Ijo5LCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6NDgsIm1heCI6WzAuODM2MTI5NjA1NzcwMTExMSwwLjc2NjYzMTkwMTI2NDE5MDddLCJtaW4iOlswLjIyNjEzMDQ1NTczMjM0NTU4LDAuMjMyMTE3NjUyODkzMDY2NF0sInR5cGUiOiJWRUMyIn0seyJidWZmZXJWaWV3IjoxMCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjQ4LCJtYXgiOlsxLDEsMSwxXSwibWluIjpbMCwwLDAsMV0sInR5cGUiOiJWRUM0In1dLCJhc3NldCI6eyJjb3B5cmlnaHQiOiJDb3B5cmlnaHQgMjAxOCBBbmFseXRpY2FsIEdyYXBoaWNzLCBJbmMuLCBDQy1CWSA0LjAgaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC8gLSBNZXNoIGFuZCB0ZXh0dXJlcyBieSBFZCBNYWNrZXkuIiwiZ2VuZXJhdG9yIjoiS2hyb25vcyBCbGVuZGVyIGdsVEYgMi4wIGV4cG9ydGVyIiwidmVyc2lvbiI6IjIuMCJ9LCJidWZmZXJWaWV3cyI6W3siYnVmZmVyIjowLCJieXRlTGVuZ3RoIjozNiwiYnl0ZU9mZnNldCI6MCwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjI4OCwiYnl0ZU9mZnNldCI6MzYsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoyODgsImJ5dGVPZmZzZXQiOjMyNCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjM4NCwiYnl0ZU9mZnNldCI6NjEyLCJ0YXJnZXQiOjM0OTYyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTkyLCJieXRlT2Zmc2V0Ijo5OTYsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjo3MiwiYnl0ZU9mZnNldCI6MTE4OCwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZU9mZnNldCI6MTI2MCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZU9mZnNldCI6MTgzNiwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjc2OCwiYnl0ZU9mZnNldCI6MjQxMiwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjM4NCwiYnl0ZU9mZnNldCI6MzE4MCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjc2OCwiYnl0ZU9mZnNldCI6MzU2NCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjQzMzIsImJ5dGVMZW5ndGgiOjk2NzR9LHsiYnVmZmVyIjowLCJieXRlT2Zmc2V0IjoxNDAwOCwiYnl0ZUxlbmd0aCI6ODY1OH1dLCJidWZmZXJzIjpbeyJieXRlTGVuZ3RoIjoyMjY2OH1dLCJpbWFnZXMiOlt7ImJ1ZmZlclZpZXciOjExLCJtaW1lVHlwZSI6ImltYWdlL3BuZyJ9LHsiYnVmZmVyVmlldyI6MTIsIm1pbWVUeXBlIjoiaW1hZ2UvcG5nIn1dLCJtYXRlcmlhbHMiOlt7ImRvdWJsZVNpZGVkIjp0cnVlLCJuYW1lIjoiTGFiZWxfTWF0IiwicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNv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AAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAP7H/fzIRGt01AACAP7H/fzIRGt01AACAP7H/fzIRGt01AACAP7H/fzIRGt01AQAAswIAALMAAIA/AQAAswIAALMAAIA/AQAAswIAALMAAIA/AQAAswIAALMAAIA/AACAvwAAELTXja61AACAvwAAELTXja61AACAvwAAELTXja61AACAvwAAELTXja61AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAwBoBAAAzAACAPwAAgD8AAMAaAQAAMwAAgD8AAIA/AADAGgEAADMAAIA/AACAPwAAwBoBAAAzAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAmQAAQDMAAIA/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");function hs(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}class Es{constructor(){hs(this,"getProduct",void 0),hs(this,"getCommandContext",void 0),hs(this,"getAllLayoutData",void 0),hs(this,"getMetadata",void 0),hs(this,"getWorkflowMetadata",void 0),hs(this,"getStepStorage",void 0),hs(this,"getUpdatesPending",void 0)}getServer(){return ws}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}getVariationRecords(){return[]}async reset(){}updateStateWithServer(A){}addVariationRecord(A){return{recordNumber:0,transactionId:"",values:[]}}getCurrentVariationRecord(){}removeVariationRecord(A){return[]}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(A){}addPoller(A){}addConfirmCallback(A){}addCurrentVariationCallback(A){}addEditedCallback(A){}addElementsCallback(A){}addInformationResultCallback(A){}addInitCallback(A){}addMakingAdjustmentsCallback(A){}addMandatoryCallback(A){}addMetadataCallback(A){}addSelectionCallback(A){}addStepSpecificStorageCallback(A,t){}addStorageCallback(A){}addVariationRecordsCallback(A){}getCommandDispatcher(){return A=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getProfanities(){return[]}getRegionElements(A){return[]}getSerializedStep(A,t){}getStepSpecificServices(A){}getTransaction(){return{id:""}}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(A){}markUpdateCompleted(A){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}setCurrentAdjustingStepId(A){}setCurrentVariationRecord(A){}setEditedStatus(A,t){}setInformationResults(A){}setMandatoryFulfilled(A,t){}async setSelectionsAndElements(A,t,e){}setVariationRecords(A){}toggleDesignConfirmed(){}updateMetadata(A,t){}async updateStorage(A,t){}}function Cs(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}let Qs;var us;(us=Qs||(Qs={})).SelectFrame="SelectFrame",us.SelectImage="SelectImage",us.Position="Position";class Is extends Ja{constructor(A,t){super(A,t),Cs(this,"frameService",this.manager.getStepSpecificServices(this.getId())?.frameService)}selectVariant(A){const t=this.manager.getRegionElements(this.step.stepName);return Ia.selectVariant(this.step,A,t,this.manager,(A=>this.setUpdateState(A)))}onFrameDataChanged(A){this.frameService&&this.frameService.onFrameDataChanged((t=>{t&&A(t)}))}selectImage(A){return Ia.selectImage(this.step,A,this.manager)}getImageData(){if(this.frameService)return this.frameService.getImageData()}getCurrentFrameStep(A,t,e,n){return n&&n.length>1&&void 0===A?Qs.SelectFrame:t||e||this.getImageData()?Qs.Position:Qs.SelectImage}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasVaryingUpload(){return this.step.data.varyUpload}hasVaryingSelection(){return this.step.data.varySelection}}const ms=A=>{const e=(0,C.useRef)(null),[n,i]=(0,C.useState)(void 0),[a,s]=(0,C.useState)(void 0),{addEvent:r,removeEvent:o,updateEvent:c,eventCache:g}=wn(),[l,B]=(0,C.useState)(!1),[w,d]=(0,C.useState)(!1),{state:h,uiDispatcher:E}=pn(),Q=(0,C.useCallback)((A=>{const t=A;E(new Dn({zoom:Math.max(.1,Math.min(t,h.maxZoom))}))}),[E,h.maxZoom]),u=(0,C.useCallback)((A=>{o(A),1===g.length&&i(void 0),2===g.length&&s(void 0);"touch"===A.pointerType&&g.length>1&&g.length-1==1&&(d(!1),B(!1))}),[e,g]),I=(0,C.useCallback)((A=>{r(A);"touch"===A.pointerType&&1===g.length&&(E(new Dn({selectedElement:void 0})),d(!0),B(!0))}),[e,w,g]),m=(0,C.useCallback)((A=>{c(A),A.isPrimary&&i({x:A.screenX,y:A.screenY});const t=1===g.length&&"touch"!==g[0].pointerType,e=2===g.length&&"touch"===g[0].pointerType;if(l&&e){const[A,t]=g,e=Math.abs(A.clientX-t.clientX),n=a;n&&Q(h.zoom-.0055*(n-e)),s(e)}if(w&&(t||e)&&A.isPrimary){const t=(n?.x||A.screenX)-A.screenX,e=(n?.y||A.screenY)-A.screenY;E(new Dn({selectedElement:void 0,xTranslation:h.xTranslation-t/h.zoom,yTranslation:h.yTranslation-e/h.zoom}))}}),[h.xTranslation,h.yTranslation,h.zoom,w,l,Q,g,n,a]),D=(0,C.useCallback)((A=>{l&&Q(h.zoom-.035*Math.sign(A.deltaY))}),[h,l]);(0,C.useEffect)((()=>{if(!e.current||0===g.length)return;const A=g[0].pointerId,t=e.current.hasPointerCapture(A);w&&!t&&e.current.setPointerCapture(A),!w&&t&&e.current.releasePointerCapture(A)}),[e,w,g]),ei([" "],(()=>{d(!0),E(new Dn({selectedElement:void 0}))}),(()=>d(!1))),ei(["Control"],(()=>B(!0)),(()=>B(!1)));const p=(0,C.useMemo)((()=>({cursor:w&&0===g.length?"grab":w&&1===g.length?"grabbing":l?"zoom-in":void 0,width:"100%",height:"100%",overflow:"clip"})),[w,l,g]);return(0,t.jsx)("div",{ref:e,className:"transform-wrapper",onWheel:D,onPointerDown:I,onPointerUp:u,onPointerCancel:u,onPointerLeave:u,onPointerMove:m,style:p,children:A.children})};
|
|
238
|
+
`;class La extends Ja{constructor(A,t){super(A,t),Oa(this,"transaction",this.manager.getTransaction())}selectVariant(){throw new Error("Bulk step does not support variants.")}async setDesignName(A){await an.getShadowGraphqlClient().mutate({mutation:ja,variables:{transactionId:this.manager.getTransaction().id,designName:A}});const t=this.manager.getTransaction();this.manager.setTransaction({...t,designName:A})}addVariationRecord(){const A=this.manager.addVariationRecord({transactionId:this.transaction.id,values:[]});return this.manager.setCurrentVariationRecord(A),A}updateBulkIsConnected(A){this.manager.updateStorage(this.getId(),{bulkIsConnected:A})}openBulkSourceUrl(){window.open(this.transaction.bulkSourceUrl,"_blank")}async sendGoogleSheetLinkToEmail(A){await an.getShadowGraphqlClient().mutate({mutation:za,variables:{id:this.transaction.id,bulkEmailAddress:A}}),this.openBulkSourceUrl()}deleteVariationRecord(A){this.manager.removeVariationRecord(A)}getAspects(){return this.step.data.aspects}}class Ta extends Ja{constructor(A,t){super(A,t)}async selectVariant(A){if(await this.getCurrentVariant()!==A)return ma.selectVariant(this.step,A,this.manager.getRegionElements(this.step.stepName)||[],(A=>this.setUpdateState(A)),this.manager)}getColors(){const A=this.manager.getRegionElements(this.step.stepName)||[];if(0!==A.length)try{return Nt(A[0].id,this.manager.getAllLayoutData()).colors}catch(A){}}setColor(A,t){const e=new Map;return e.set(A,t),ma.changeColors(this.step,this.manager.getRegionElements(this.step.stepName),this.manager,(()=>this.manager.getCommandContext().getAllLayouts()),e)}async getColorOption(){const A=this.step.data.colourOptionId;if(!A)return;const t=await ln.getOption(nn,A);return t||void 0}getAvailableColors(){return this.step.data.colourPickerEnabled?ma.availableColors(this.step,this.manager):Promise.resolve([])}hasVaryingSelection(){return this.step.data.varySelection}hasVaryingColors(){return this.step.data.varyColors}isColorPickerEnabled(){return this.step.data.colourPickerEnabled}}class Ka extends Ja{constructor(A,t){super(A,t)}selectVariant(A){return Da.selectVariant(this.step,A,this.manager,(A=>this.setUpdateState(A)))}}class Va extends Ja{constructor(A,t){super(A,t)}selectVariant(A){return pa.selectVariant(this.step,A,this.manager,(A=>this.setUpdateState(A)))}}class Xa extends Ja{constructor(A,t){super(A,t)}selectVariant(A){return ya.selectVariant(this.step,A,this.manager,(A=>this.setUpdateState(A)))}}class Wa extends Ja{constructor(A,t){super(A,t)}async selectVariant(A){if(!A.id)throw new Error("Unable to select variant with a null ID");await Ma.selectVariant(this.step,A.id,this.manager)}getDisplayType(){return this.step.option?.data.displayType}}class Za extends Ja{constructor(A,t){super(A,t)}selectVariant(A){return Promise.resolve()}setColor(A){return Fa.selectVariant(this.step,A,this.manager.getRegionElements(this.step.stepName)||[],this.manager)}getColors(){return Fa.availableColours(this.step,this.manager)}}class qa extends Ja{constructor(A,t){super(A,t)}async selectVariant(A){Pa.selectVariant(this.step,A,this.manager,(A=>{if(A)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:"An issue has occured with test",messageType:Ha.Error,stepID:this.step.stepName}]);else{const A=this.manager.getInformationResults().filter((A=>A.stepID!==this.step.stepName));this.manager.setInformationResults(A)}}),(A=>{}))}getAvailableColors(){return this.step.data.colourPickerEnabled?Pa.availableColors(this.step,this.manager):Promise.resolve([])}async setFill(A){const t=this.manager.getRegionElements(this.step.stepName);await Pa.changeFill(this.step,A,t,this.manager)}getFill(){return this.manager.getStepStorage(this.step.stepName)?.color||"#000000"}setFullTextCustomization(A){const t=this.manager.getStepStorage(this.step.stepName)?.inputText||"",e=void 0!==this.step.data.replaceableText?this.step.data.replaceableText.replace("{{}}",t):t,n=A?e:this.step.data.defaultText;this.manager.updateStorage(this.step.stepName,{customiseAllText:A,text:n,defaultCleared:!1});return this.setText(n)}setText(A){const t={input:A},e=Pa.findLayoutElements(this.manager,this.step),n=Pa.filterUnsupportedCharacters(A,e[0]?.fontData);!!this.step.data&&!!this.step.data.maxLength&&n.length>this.step.data.maxLength||(t.input=n);const i=e.length<=0,a=i?{inputText:n,text:n}:{inputText:n};if(this.manager.updateStorage(this.step.stepName,a),this.manager.updateMetadata(this.step.stepName,{text:n}),i)return t;const{command:s,errors:r,helperText:o}=Pa.updateInputText(n,e,this.step,this.manager);s&&this.manager.getCommandDispatcher()(s);const c=this.manager.getInformationResults(),g=r[0]?.localizationKey;if(g)this.manager.setInformationResults([...c,{message:`${g} - ${this.step.stepTitle}`,messageType:Ha.Error,stepID:this.step.stepName}]);else{const A=c.filter((A=>A.stepID!==this.step.stepName));this.manager.setInformationResults(A)}return t.helperText=g||o,t.errorText=g,t}getText(){const A=this.step.data.defaultText;return this.manager.getStepStorage(this.step.stepName)?.text||A||""}isReplaceable(){return this.step.data.userCanReplaceText}clearDefaultTextIfNecessary(){if(!this.manager.getStepStorage(this.step.stepName)?.defaultCleared&&this.step.data.deleteDefaultOnFocus){const A=this.setText("");return this.manager.updateStorage(this.step.stepName,{defaultCleared:!0,inputText:""}),A}}hasVaryingText(){return this.step.data.varyText}hasVaryingColor(){return this.step.data.varyColor}hasVaryingSelection(){return this.step.data.varySelection}hasColorPicker(){return this.step.data.colourPickerEnabled}getRegions(){return this.step.data.regions}}class $a{static get(A,t){switch(t.type){case V.Question:return new Wa(A,t);case V.Text:return new qa(A,t);case V.Illustration:return new Ta(A,t);case V.Picture:return new Xa(A,t);case V.Shape:return new Za(A,t);case V.Material:return new Ka(A,t);case V.Model:return new Va(A,t);case V.Frame:return new Is(A,t);case V.Bulk:return new La(A,t);default:throw new je(`Step type ${t.type} not yet supported in Core SDK`)}}}function _a(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const As=(A,t,e)=>{const n={};return t.steps.forEach((t=>{Object.assign(n,(t=>{const n={};if("Frame"===t.type){const i=A[t.stepName],a=t.data;if(!i||a.hideImageInCart&&e)return n;n[`${t.stepTitle} image`]=i.image}if("Illustration"===t.type){const i=A[t.stepName],a=t.data;if(!i||a.hideColorsInCart&&e||!i.colors)return n;if(i.colors.length>0){const A=i.colors.join(", ").toUpperCase();n[`${t.stepTitle} colors`]=A}}if("Module"===t.type){const i=A[t.stepName],a=t.data;if(!i||a.hideTextInCart&&e)return n;n[`${t.stepTitle} text`]=i.text}if("Text"===t.type){const i=A[t.stepName];if(!i)return n;const a=t.data;a.hideTextInCart&&e||(n[`${t.stepTitle} text`]=i.text),!i.color||a.hideColorInCart&&e||(n[`${t.stepTitle} color`]=i.color)}return n})(t))})),n},ts=(A,t,e,n,i,a,s,r,o)=>{const c={event:"onComplete",lineItemImageUrl:s?s.href:"",transactionId:A.id,designProductVariantId:A.externalDesignProductVariantId,designProductId:A.externalDesignProductId,baseCost:e,weight:t.weight,optionsCost:n,exportedData:a,workflowViewerLink:A.workflowViewerLink||"",workflowViewerReadOnlyLink:A.workflowViewerReadOnlyLink||""};return i&&(c.metadata=i),r&&(c.selectedVariants=r),o&&(c.sku=o),c},es=async(A,t,e,n,i,a,s)=>{const r=(A.product?.basePrice||0)*(A.variationsCount||0),o=A.priceModifierTotal||0,c=((A,t,e,n)=>{const i={};let a;if(e){a=As(e,t,!1);for(const A of Object.keys(a))i[A]={value:a[A],priceModifier:0}}else if(n){a=n;for(const A of Object.keys(a))i[A]={value:a[A],priceModifier:0}}for(const e of Object.keys(A)){const n=A[e],a=t.steps.find((A=>A.stepTitle===e));if(1===n.length)i[`${a?.stepTitle} selection`]={value:n[0].name,priceModifier:n[0].priceModifier};else if(n.length>1)for(let A=0;A<n.length;A++)i[`${a?.stepTitle} selection ${A+1}`]={value:n[A].name,priceModifier:n[A].priceModifier}}return i})(n,e,void 0,a);return ts(A,t,r,o,a,c,s,n,i)},ns=async(A,t,e,n,i,a,s,r,o,c,g,l,B)=>{o("workflow.steps.finish.finalize.buildingLayouts"),await A.outstandingRequestsPromise();const w=an.getShadowGraphqlClient();await w.resetStore();const d=await w.query({query:ta,variables:{id:a.id},errorPolicy:"all"}),h=d.data?.transactions[0].workflowState;!d.errors&&h||(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(n())),d.errors&&d.errors.forEach((A=>{d.errors&&console.log("Server Error:",A.message)})),await A.updateStateWithServerImmediate(n),console.log("Server state is undefined @ Workflow completion"));const E=A.getPreviewService(),C=t?.finalizeStepConfig?.lookAtAnimation,Q=E&&100===E.getSceneInitializationProgress()&&t.showModelOnFinishStep&&!!C,u=B&&As(B,t,!0),I=B&&As(B,t,!1),m=async A=>{const e={};let n=0;if(Object.keys(s).length>0)for(const i of Object.keys(s)){const a=s[i],r=t.steps.find((A=>A.stepName===i));for(let t=0;t<a.selections.length;++t){const i=a.selections[t];if(r&&(!A||await ln.getOption(nn,r.optionId)&&(await ln.getOption(nn,r.optionId)).data.variants.length>1&&!r.data.hideSelectionInCart&&!r.data.hideSelectionsInCart)){const A=r.stepTitle;e[A]?e[A].push({id:i.id||"",name:i.name,priceModifier:i.priceModifier}):e[A]=[{id:i.id||"",name:i.name,priceModifier:i.priceModifier}]}n+=i.priceModifier}}return[e,n]},[D]=await m(!0),p=Object.fromEntries(Object.keys(D).map((A=>[A,D[A].map((A=>A.id))]))),[f]=await m(!1),y=Object.fromEntries(Object.keys(f).map((A=>[A,f[A].map((A=>A.id))]))),M=await l(Q);o("workflow.steps.finish.finalize.creatingDesign"),a.bulk&&await c(g);const F=(await nn.execute("createDesign",{designDetails:(()=>{const A={designName:r,layouts:e.map((A=>({index:A.index,panelId:A.panelId}))),workflowId:t.id,productId:i.id,transactionId:a.id,threeDimPreview:Q,previewImage:M};return B&&(A.metadata=I),p&&(A.selectedVariants=y),A})()})).body,x=F.links.find((A=>"image"===A.rel));o("workflow.steps.finish.finalize.updatingTransaction");const Y=(await an.getShadowGraphqlClient().query({query:Aa,variables:{id:a.id}})).data.transactions[0];return a.bulk?((A,t,e)=>{const n=(A.product?.basePrice||0)*(A.variationsCount||0),i=A.priceModifierTotal||0,a={items:{value:A.variationsCount?`${A.variationsCount}`:"0",priceModifier:0}};return ts(A,t,n,i,void 0,a,e)})(Y,i,x):await es(Y,i,t,D,F.data.sku,u,x)};let is;var as;(as=is||(is={})).Local="Local",as.Remote="Remote";const ss=new class{constructor(){_a(this,"localPersistenceKey","designTransactions"),_a(this,"storageMethod",is.Local),_a(this,"designSavedListeners",[])}attachSaveListener(A){this.designSavedListeners.push(A)}detachSaveListener(A){this.designSavedListeners=this.designSavedListeners.filter((t=>t!==A))}async getSavedDesigns(){return await this.getDesigns()}async getSavedDesignByTransaction(A){return(await this.getSavedDesigns()).find((t=>t.transactionId===A))}async addDesign(A){const t=(await this.getSavedDesigns()).filter((t=>t.transactionId!==A.transactionId));t.unshift(A),await this.setDesigns(t),this.notifyDesignSaved(A)}async removeDesign(A){const t=await this.getSavedDesigns();await this.setDesigns(t.filter((t=>t.transactionId!==A)))}async setDesigns(A){if(this.storageMethod!==is.Local)throw new je("Unexpected storage method requested");Ze.set(this.localPersistenceKey,JSON.stringify(A))}async getDesigns(){if(this.storageMethod===is.Local){const A=Ze.get(this.localPersistenceKey);return A?JSON.parse(A):[]}throw new je("Unexpected storage method requested")}notifyDesignSaved(A){this.designSavedListeners.forEach((t=>t(A)))}};function rs(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}class os{constructor(A,t,e){if(rs(this,"client",void 0),rs(this,"commandContext",void 0),rs(this,"workflowManager",void 0),rs(this,"isReadOnly",void 0),rs(this,"server",void 0),rs(this,"renderableScenes",[]),rs(this,"renderableSceneCallbacks",[]),rs(this,"debouncedSavedDesignUpdate",y(D)((async()=>{await ss.getSavedDesignByTransaction(this.getWorkflowManager().getTransaction().id)&&this.save()}),2500)),!t.workflow)throw new Error("No Workflow ID provided.");this.client=A,this.server=e;const n=t.layouts;this.commandContext=new Ft,this.commandContext.initialize(n,t.reloadedState),this.isReadOnly=!!t.transaction.lineItem?.id||!Ze.getMap("transactionOwnerIds")?.get(t.transaction.id)||!!t.readOnly,this.workflowManager=new Ga(t.workflow,t.product.profanities?.map((A=>A.word))||[],n,this.commandContext,(A=>{try{this.debouncedSavedDesignUpdate()}catch{console.error("Failed to update saved design details.")}return t.stateMutationFunc(A)}),t.transaction,t.product,this.server,t.previewService,t.renderableContextService,t.reloadedState,t.readOnly),this.workflowManager.addSelectionCallback((A=>{const t=A.traversableScenes.map((A=>{const t=A.renderableSteps.map((A=>A.stepName));return{id:A.name,title:A.title,renderableSteps:t}}));this.renderableScenes=t,this.renderableSceneCallbacks.forEach((A=>A(t)))}))}getClient(){return this.client}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.commandContext}getWorkflowManager(){return this.workflowManager}async updateVariationRecords(A){await an.getShadowGraphqlClient().mutate({mutation:_i,variables:{transactionId:this.workflowManager.getTransaction().id,updates:A.map((A=>({recordNumber:A.recordNumber,values:A.values.map((A=>({aspect:A.aspect,stepName:A.stepName,value:A.value})))})))}})}async createPreviewImage(A,t){const e=this.workflowManager.getWorkflow()?.finalizeStepConfig?.lookAtAnimation;if(A){if(!e)throw new Error("Failed to generate cart preview image!");return await(this.workflowManager.getPreviewService()?.renderSceneScreenshot(512,e))||""}const n=document.createElement("canvas");let i=2048;t&&t<=2048&&(i=t),n.width=i,n.height=i;const a=this.commandContext.getAllLayouts()[this.workflowManager.getWorkflow().defaultPreviewPanelIndex||0],s=a.layoutState.layout.previewRegion?{x:a.layoutState.layout.previewRegion.left,y:a.layoutState.layout.previewRegion.top,width:a.layoutState.layout.previewRegion.width,height:a.layoutState.layout.previewRegion.height}:{x:0,y:0,width:a.layoutState.layout.width,height:a.layoutState.layout.height},r=this.commandContext.getLayoutById(a.layoutState.layout.id),o=n.getContext("2d");if(!o)throw new Ke("Failed to obtain 2D context for preview image creation");const c=Yt(r.layoutState.layout,r.layoutState.elements,{renderingConfiguration:{purpose:H.Print,region:{left:s.x,top:s.y,width:s.width,height:s.height}}}),g=y(u).renderToStaticMarkup(c),B=await l.Canvg.from(o,g,{anonymousCrossOrigin:!0,ignoreDimensions:!1});await B.render();const w=await(async A=>new Promise(((t,e)=>{try{A.toBlob((A=>{if(A){const e=URL.createObjectURL(A);t(e)}}))}catch(A){e(A)}})))(n);return n.toDataURL(w)}getStepById(A){const t=this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepName===A));if(t&&this.stepHasHandle(t))return $a.get(this.getWorkflowManager(),t)}getBulkStep(){if(this.getWorkflowManager().getTransaction().bulk){const A={type:V.Bulk,stepName:"Bulk",stepTitle:"workflow.steps.bulk.title",helpText:"help:/partner/add-ons/bulk-ordering",data:{aspects:ea(this.getWorkflowManager().getWorkflow())},conditions:[]};return $a.get(this.getWorkflowManager(),A)}}getStepByName(A){const t=this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepTitle===A));if(t&&this.stepHasHandle(t))return $a.get(this.getWorkflowManager(),t)}getStepsByType(A){return this.getWorkflowManager().getWorkflow().steps.filter((t=>t.type===A)).map((A=>$a.get(this.getWorkflowManager(),A)))}getStepsByScene(A){if(!this.getWorkflowManager().getWorkflow().stepGroups.find((t=>t.name===A.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 A.stepNames.map((A=>this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepName===A)))).filter((A=>this.stepHasHandle(A))).map((A=>$a.get(this.getWorkflowManager(),A)))}async attachCustomerDetails(A){await an.getShadowGraphqlClient().mutate({mutation:za,variables:{id:this.getWorkflowManager().getTransaction().id,bulkEmailAddress:A.email}}),this.getWorkflowManager().setTransactionCustomerDetails(A)}attachRenderableSceneListener(A){this.renderableSceneCallbacks.push(A),A(this.renderableScenes)}detachRenderableSceneListener(A){this.renderableSceneCallbacks=this.renderableSceneCallbacks.filter((t=>t!==A))}async save(A){if(!this.getCommandContext().getState())throw new je("State undefined!");const t={title:await(async()=>{if(A)return A;const t=this.getWorkflowManager().getTransaction().id,e=(await ss.getSavedDesigns()).find((A=>A.transactionId===t))?.title;return e||"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 ss.addDesign(t),t}async copy(){const t=y(A)(this.getCommandContext().getState());if(!t)throw new je("Internal state is undefined! Cannot copy experience!");const e=JSON.stringify(t.transaction),n=this.getWorkflowManager().getWorkflow(),i=new ls({}),a=this.getWorkflowManager().getTransaction().integrationProduct?.id;if(!a)throw new je("Integration product id is undefined!");await i.initFromIntegrationProduct(a);return await i.getWorkflowExperience(n.id,e,void 0,this.server)}async onDesignFinished(A,t,e,n){return ns(this.workflowManager,this.workflowManager.getWorkflow(),this.workflowManager.getLayouts(),(()=>this.commandContext.getState()),A,this.workflowManager.getTransaction(),e,this.workflowManager.getWorkflow().name,t,(A=>this.updateVariationRecords(A)),this.workflowManager.getVariationRecords(),(A=>this.createPreviewImage(A)),n)}stepHasHandle(A){return A.type!==V.SilentIllustration&&A.type!==V.ProductOverlay}}function cs(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const gs=(A,t)=>{const e=A.workflowState,n=e?JSON.parse(e):void 0;return n?Object.values(n.layouts).map((A=>A.layout)):t.panels.sort(((A,t)=>A.index-t.index)).map((A=>({id:Y(),panelId:A.name,name:A.name,index:A.index,createdAt:new Date,updatedAt:new Date,transparentBackground:A.transparentBackground,height:A.height,width:A.width,previewRegion:A.previewRegion,useEditableArea:A.useEditableArea,editableArea:A.editableArea})))};class ls{constructor(A){cs(this,"options",void 0),cs(this,"initialized",void 0),cs(this,"experienceOptions",void 0),cs(this,"updateTransactionState",(async A=>{try{return an.getShadowGraphqlClient().mutate({...A,mutation:qi})}catch(A){throw console.error(A),new Te("Critical - Unable to synchronize workflow state with server.")}})),this.initialized=!1,this.options=A}getAssetManager(){return cn}async initFromIntegrationProduct(A){if(""===A)throw new Te("No integration product ID provided.");this.options.useUncachedEndpoints&&nn.setUncachedOperations(["getAssetByKeyV2","getWorkflowV2","getMaterialV2","getOptionV2"]);const t=an.getShadowGraphqlClient();await t.resetStore();const e=await t.mutate({mutation:Xi,variables:{integrationProductId:A,bulk:this.options.bulk||!1},errorPolicy:"all"});if(!e.data)throw new Te("Failed to create transaction!");const n=(await t.mutate({mutation:Wi,variables:{id:e.data.transactionCreate.id},errorPolicy:"all"})).data?.transactionClaim;if(!n)throw new Te("Failed to create transaction.");if(!e.data.transactionCreate.product)throw new Te("Failed to create transaction, product not available.");const i=Ze.getMap("transactionOwnerIds")||new Map;i.set(n.id,n.transactionOwnerId),tn(n.transactionOwnerId||""),Ze.setMap("transactionOwnerIds",i),this.experienceOptions={product:e.data.transactionCreate.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState},this.initialized=!0}async initFromTransaction(A,t=!1){if(""===A)throw new Te("No transaction ID provided.");const e=an.getShadowGraphqlClient();await e.resetStore();if(t)return await(async()=>{console.log("Readonly Mode");const n=(await e.query({query:Zi,variables:{id:A},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new Te("Failed to read transaction.");if(!n.product)throw new Te("Failed to load transaction, product not available.");this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:async()=>{throw new je("State mutation is forbidden in read only mode!")},readOnly:t},this.initialized=!0})();const n=Ze.getMap("transactionOwnerIds")||new Map,i=n.get(A);if(i){tn(i);const n=(await e.query({query:Zi,variables:{id:A},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new Te("Failed to read transaction.");if(!n.product)throw new Te("Failed to load transaction, product not available.");return this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:t},void(this.initialized=!0)}try{const i=(await e.mutate({mutation:Wi,variables:{id:A},errorPolicy:"all"})).data?.transactionClaim;if(!i)throw new Te("Failed to read transaction.");if(!i.product)throw new Te("Failed to load transaction, product not available.");i.transactionOwnerId&&(n.set(i.id,i.transactionOwnerId),tn(i.transactionOwnerId),Ze.setMap("transactionOwnerIds",n)),this.experienceOptions={product:i.product,transaction:i,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:t},this.initialized=!0}catch{throw new Te("Attempted to access a transaction that isn't available.")}}async getWorkflowExperience(A,t,e,n){if(!this.initialized||!this.experienceOptions)throw new Te("Cannot launch experience: Not initialized.");const i=async A=>{for(const t in A.layouts){const e=A.layouts[t].elements.filter((A=>A.type===P.Illustration));for(let A=0;A<e.length;++A){const t=e[A];t.src&&t.svg&&(t.cachedObjectURL=await Se(t.svg))}const n=A.layouts[t].elements.filter((A=>A.type===P.Textbox));for(let A=0;A<n.length;++A){const t=n[A];t.fontData?.assetUrl&&KA(t.fontData.assetUrl)}}},a=n||nn;if(this.experienceOptions.transaction.workflowId){const A=(await a.execute("getWorkflowV2",{workflowSlug:this.experienceOptions.transaction.workflowId})).body.data;if(this.experienceOptions.workflow=A,this.experienceOptions.transaction.workflowState){const A=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(A.layouts).map((A=>A.layout)),await Ht(A),await i(A),this.experienceOptions.reloadedState=A}this.experienceOptions.previewService=e&&e(A),this.experienceOptions.renderableContextService=new ki(this.experienceOptions.layouts,a),this.experienceOptions.product?.modelUrl&&this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService);const t=new os(this,this.experienceOptions,a);return await t.getWorkflowManager().getInitializationPromise(),t}if(A){const n=(await a.execute("getWorkflowV2",{workflowSlug:A})).body.data;if(this.experienceOptions.workflow=n,await an.getShadowGraphqlClient().mutate({mutation:$i,variables:{workflowId:A,id:this.experienceOptions.transaction.id}}),t){const A=JSON.parse(t);this.experienceOptions.layouts=Object.values(A.layouts).map((A=>A.layout)),await Ht(A),await i(A),this.experienceOptions.reloadedState=A}else this.experienceOptions.layouts=gs(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=e&&e(n),this.experienceOptions.renderableContextService=new ki(this.experienceOptions.layouts,a),this.experienceOptions.product?.modelUrl&&this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService);const s=new os(this,this.experienceOptions,a);return await s.getWorkflowManager().getInitializationPromise(),s}throw new Te("No workflow ID provided.")}getPreviewService(){return this.experienceOptions?.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new Te("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new Te("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}}function Bs(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const ws={setUncachedOperations:()=>{},execute:async()=>({body:{},headers:{"content-type":""}})};class ds{static getFrameStep(A){return{type:V.Frame,stepTitle:"My frame Step",stepName:"My Step Name",conditions:[],option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"my-new-variant",priceModifier:1,asset:{data:{key:"1",createdAt:0,licenseId:"",mimeType:"",ownerId:"",price:0,public:!0,type:T.Frame,objectVersions:[],tags:[]},links:[{href:ds.aFrame,rel:"cdn"}]}},{id:"2",name:"my-new-variant-2",priceModifier:1,asset:{data:{key:"2",createdAt:0,licenseId:"",mimeType:"",ownerId:"",price:0,public:!0,type:T.Frame,objectVersions:[],tags:[]},links:[{href:ds.bFrame,rel:"cdn"}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,layer:0,layerIndex:0,rotation:0,panelId:"p-123",immutable:!1,adjustmentBoundary:{x:0,y:0,height:0,width:0}}],...A}}}static getBulkStep(){return{type:V.Bulk,stepTitle:"Bulk",stepName:"bulk-step",data:{aspects:[]}}}static getQuestionStep(A,t){return{type:V.Question,stepTitle:"question-step",stepName:A||"question-step",conditions:t,option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"my-variant",priceModifier:1},{id:"2",name:"my-variant2",priceModifier:1}]},links:[]},data:{}}}static getMaterialStep(A,t){return{type:V.Material,stepTitle:"My Material Step",stepName:A||"material-step",conditions:t,option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"my-variant",priceModifier:1,material:{data:{id:"1",name:"mat-1",clearCoat:j.None,createdAt:(new Date).toISOString(),updatedAt:(new Date).toISOString(),albedoMapKey:ds.redRaster},links:[]}},{id:"2",name:"my-variant2",priceModifier:1,material:{data:{id:"2",name:"mat-2",clearCoat:j.None,createdAt:(new Date).toISOString(),updatedAt:(new Date).toISOString(),albedoMapKey:ds.blueRaster},links:[]}}]},links:[]},data:{targetMaterials:["panel"]}}}static getTextStep(A){return{type:V.Text,stepTitle:"s-1",stepName:"s-1",option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"font/ttf",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Font,tags:[]},links:[{rel:"cdn",href:ds.minimalFont}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],defaultText:"",font:"",maxLength:100,size:16,textAlign:"center",colour:"#000000",verticalAlign:"top",...A}}}static getIllustrationStep(A){return{type:V.Illustration,stepTitle:"s-1",stepName:"s-1",option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"image/svg+xml",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Illustration,tags:[]},links:[{rel:"cdn",href:ds.blueShape.src}]}},{id:"2",name:"",priceModifier:1,assetKey:"456",asset:{data:{key:"456",createdAt:0,mimeType:"image/svg+xml",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Illustration,tags:[]},links:[{rel:"cdn",href:ds.redShape.src}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],colourPickerEnabled:!1,...A}}}static getPictureStep(A,t){return{type:V.Picture,stepTitle:"s-1",stepName:"s-1",option:{data:{name:"test",defaultVariant:t,variants:[{id:"1",name:"a",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"image/png",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Image,tags:[]},links:[{rel:"cdn",href:ds.blueRaster}]}},{id:"2",name:"b",priceModifier:1,assetKey:"456",asset:{data:{key:"456",createdAt:0,mimeType:"image/png",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Image,tags:[]},links:[{rel:"cdn",href:ds.redRaster}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],...A}}}static getModelStep(A,t){return{type:V.Model,stepTitle:"s-1",stepName:"s-1",optionId:"om-1",option:{data:{id:"om-1",name:"test",defaultVariant:t,variants:[{id:"1",name:"a",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"application/octet-stream",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Model,tags:[]},links:[{rel:"cdn",href:ds.glbBox}]}},{id:"2",name:"b",priceModifier:1,assetKey:"456",asset:{data:{key:"456",createdAt:0,mimeType:"application/octet-stream",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:T.Model,tags:[]},links:[{rel:"cdn",href:ds.glbVertexTest}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],...A}}}static getShapeStep(A,t=[]){return{type:V.Shape,stepTitle:"s-1",stepName:A,conditions:t,option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"a",priceModifier:1,color:"#FFFFFF"},{id:"2",name:"b",priceModifier:1,color:"#000000"}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}]}}}static getSilentIllustrationStep(A,t=[]){return{type:V.SilentIllustration,stepTitle:"s-1",stepName:A,conditions:t,data:{assetKey:ds.redRaster,regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}]}}}}Bs(ds,"minimalFont","data:font/truetype;charset=utf-8;base64,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"),Bs(ds,"redShape",{src:"https://assets.spiff.com.au/public/assets/56cf72f5-a98d-487f-9e79-8129030ab99e.svg",text:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><script xmlns=""/><defs><style>.cls-1{fill:#f285b1;}</style></defs><title>Asset 4</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" width="512" height="512"/></g></g></svg>'}),Bs(ds,"blueShape",{src:"https://assets.spiff.com.au/public/assets/6b9c3b7a-a669-41be-8ba2-538588d449e0.svg",text:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><script xmlns=""/><defs><style>.cls-1{fill:#53c6d6;}</style></defs><title>Asset 3</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" width="512" height="512"/></g></g></svg>'}),Bs(ds,"aFrame","https://assets.spiff.com.au/public/assets/5bb3c003-3d30-4c98-9f07-2cfe25fbc4f7.svg"),Bs(ds,"bFrame","https://assets.spiff.com.au/public/assets/25e42f93-3f5d-43b6-9075-29164000bdf5.svg"),Bs(ds,"redRaster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg=="),Bs(ds,"blueRaster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPj/HwADBwIAMCbHYQAAAABJRU5ErkJggg=="),Bs(ds,"glbBox","data:@file/octet-stream;base64,Z2xURgIAAACABgAA3AMAAEpTT057ImFzc2V0Ijp7ImdlbmVyYXRvciI6IkNPTExBREEyR0xURiIsInZlcnNpb24iOiIyLjAifSwic2NlbmUiOjAsInNjZW5lcyI6W3sibm9kZXMiOlswXX1dLCJub2RlcyI6W3siY2hpbGRyZW4iOlsxXSwibWF0cml4IjpbMS4wLDAuMCwwLjAsMC4wLDAuMCwwLjAsLTEuMCwwLjAsMC4wLDEuMCwwLjAsMC4wLDAuMCwwLjAsMC4wLDEuMF19LHsibWVzaCI6MH1dLCJtZXNoZXMiOlt7InByaW1pdGl2ZXMiOlt7ImF0dHJpYnV0ZXMiOnsiTk9STUFMIjoxLCJQT1NJVElPTiI6Mn0sImluZGljZXMiOjAsIm1vZGUiOjQsIm1hdGVyaWFsIjowfV0sIm5hbWUiOiJNZXNoIn1dLCJhY2Nlc3NvcnMiOlt7ImJ1ZmZlclZpZXciOjAsImJ5dGVPZmZzZXQiOjAsImNvbXBvbmVudFR5cGUiOjUxMjMsImNvdW50IjozNiwibWF4IjpbMjNdLCJtaW4iOlswXSwidHlwZSI6IlNDQUxBUiJ9LHsiYnVmZmVyVmlldyI6MSwiYnl0ZU9mZnNldCI6MCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjI0LCJtYXgiOlsxLjAsMS4wLDEuMF0sIm1pbiI6Wy0xLjAsLTEuMCwtMS4wXSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjEsImJ5dGVPZmZzZXQiOjI4OCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjI0LCJtYXgiOlswLjUsMC41LDAuNV0sIm1pbiI6Wy0wLjUsLTAuNSwtMC41XSwidHlwZSI6IlZFQzMifV0sIm1hdGVyaWFscyI6W3sicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNvbG9yRmFjdG9yIjpbMC44MDAwMDAwMTE5MjA5MjksMC4wLDAuMCwxLjBdLCJtZXRhbGxpY0ZhY3RvciI6MC4wfSwibmFtZSI6IlJlZCJ9XSwiYnVmZmVyVmlld3MiOlt7ImJ1ZmZlciI6MCwiYnl0ZU9mZnNldCI6NTc2LCJieXRlTGVuZ3RoIjo3MiwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjAsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZVN0cmlkZSI6MTIsInRhcmdldCI6MzQ5NjJ9XSwiYnVmZmVycyI6W3siYnl0ZUxlbmd0aCI6NjQ4fV19iAIAAEJJTgAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAC/AAAAvwAAAD8AAAA/AAAAvwAAAD8AAAC/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAvwAAAD8AAAC/AAAAvwAAAD8AAAA/AAAAvwAAAL8AAAC/AAAAvwAAAL8AAAA/AAAAPwAAAD8AAAA/AAAAvwAAAD8AAAA/AAAAPwAAAL8AAAA/AAAAvwAAAL8AAAC/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAC/AAAAPwAAAL8AAAA/AAAAPwAAAL8AAAC/AAAAvwAAAD8AAAC/AAAAPwAAAD8AAAC/AAAAvwAAAL8AAAC/AAAAPwAAAL8AAAC/AAAAvwAAAL8AAAC/AAAAPwAAAL8AAAA/AAAAvwAAAL8AAAA/AAAAPwAAAL8AAAEAAgADAAIAAQAEAAUABgAHAAYABQAIAAkACgALAAoACQAMAA0ADgAPAA4ADQAQABEAEgATABIAEQAUABUAFgAXABYAFQA="),Bs(ds,"glbVertexTest","data:@file/octet-stream;base64,Z2xURgIAAABsZgAAxA0AAEpTT057ImFjY2Vzc29ycyI6W3siYnVmZmVyVmlldyI6MCwiY29tcG9uZW50VHlwZSI6NTEyMSwiY291bnQiOjM2LCJtYXgiOlsyM10sIm1pbiI6WzBdLCJ0eXBlIjoiU0NBTEFSIn0seyJidWZmZXJWaWV3IjoxLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjQsIm1heCI6WzAuNzU1NDc4MzgyMTEwNTk1NywtMC44NTEyNDE2NDgxOTcxNzQxLDAuOTc1MDMyODY2MDAxMTI5Ml0sIm1pbiI6Wy0wLjcwNDU2NTgyMzA3ODE1NTUsLTAuODUxMjQxNzA3ODAxODE4OCwtMC45NjExMTU0Nzk0NjkyOTkzXSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjIsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyNCwibWF4IjpbMCwxLDBdLCJtaW4iOlswLDEsMF0sInR5cGUiOiJWRUMzIn0seyJidWZmZXJWaWV3IjozLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjQsIm1heCI6WzEsNy4xMjE5Mzg5NDk2OTQ1OTVlLTgsMS41MTA1MTkyMTE5MzM1Njk3ZS03LDFdLCJtaW4iOlsxLC0xLjQzNDg4MTM2OTI3NzcxODVlLTcsLTEuMTI1NzY3NjM5MTA5NjUzOGUtNywxXSwidHlwZSI6IlZFQzQifSx7ImJ1ZmZlclZpZXciOjQsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyNCwibWF4IjpbMC45OTk5OTk4ODA3OTA3MTA0LDAuODAxMDQwOTQ3NDM3Mjg2NF0sIm1pbiI6WzAsMC4wNTUzOTcyNzIxMDk5ODUzNV0sInR5cGUiOiJWRUMyIn0seyJidWZmZXJWaWV3Ijo1LCJjb21wb25lbnRUeXBlIjo1MTIxLCJjb3VudCI6NzIsIm1heCI6WzQ3XSwibWluIjpbMF0sInR5cGUiOiJTQ0FMQVIifSx7ImJ1ZmZlclZpZXciOjYsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50Ijo0OCwibWF4IjpbMS4wMDAwMDA0NzY4MzcxNTgyLDEsMC40ODc0MjI0NjYyNzgwNzYxN10sIm1pbiI6Wy0xLjAwMDAwMDM1NzYyNzg2ODcsLTEsLTAuMTcxODY2NTM2MTQwNDQxOV0sInR5cGUiOiJWRUMzIn0seyJidWZmZXJWaWV3Ijo3LCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6NDgsIm1heCI6WzEsMSwxXSwibWluIjpbLTEsLTEsLTFdLCJ0eXBlIjoiVkVDMyJ9LHsiYnVmZmVyVmlldyI6OCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjQ4LCJtYXgiOlsxLDcuOTQwOTMzODgwNTA5MDY2ZS0yMyw0LjQ3MDM0ODM1ODE1NDI5N2UtOCwxXSwibWluIjpbMSwtNi42MTc0NDQ5MDA0MjQyMjJlLTI0LDAsMV0sInR5cGUiOiJWRUM0In0seyJidWZmZXJWaWV3Ijo5LCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6NDgsIm1heCI6WzAuODM2MTI5NjA1NzcwMTExMSwwLjc2NjYzMTkwMTI2NDE5MDddLCJtaW4iOlswLjIyNjEzMDQ1NTczMjM0NTU4LDAuMjMyMTE3NjUyODkzMDY2NF0sInR5cGUiOiJWRUMyIn0seyJidWZmZXJWaWV3IjoxMCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjQ4LCJtYXgiOlsxLDEsMSwxXSwibWluIjpbMCwwLDAsMV0sInR5cGUiOiJWRUM0In1dLCJhc3NldCI6eyJjb3B5cmlnaHQiOiJDb3B5cmlnaHQgMjAxOCBBbmFseXRpY2FsIEdyYXBoaWNzLCBJbmMuLCBDQy1CWSA0LjAgaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC8gLSBNZXNoIGFuZCB0ZXh0dXJlcyBieSBFZCBNYWNrZXkuIiwiZ2VuZXJhdG9yIjoiS2hyb25vcyBCbGVuZGVyIGdsVEYgMi4wIGV4cG9ydGVyIiwidmVyc2lvbiI6IjIuMCJ9LCJidWZmZXJWaWV3cyI6W3siYnVmZmVyIjowLCJieXRlTGVuZ3RoIjozNiwiYnl0ZU9mZnNldCI6MCwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjI4OCwiYnl0ZU9mZnNldCI6MzYsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoyODgsImJ5dGVPZmZzZXQiOjMyNCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjM4NCwiYnl0ZU9mZnNldCI6NjEyLCJ0YXJnZXQiOjM0OTYyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTkyLCJieXRlT2Zmc2V0Ijo5OTYsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjo3MiwiYnl0ZU9mZnNldCI6MTE4OCwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZU9mZnNldCI6MTI2MCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZU9mZnNldCI6MTgzNiwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjc2OCwiYnl0ZU9mZnNldCI6MjQxMiwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjM4NCwiYnl0ZU9mZnNldCI6MzE4MCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjc2OCwiYnl0ZU9mZnNldCI6MzU2NCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjQzMzIsImJ5dGVMZW5ndGgiOjk2NzR9LHsiYnVmZmVyIjowLCJieXRlT2Zmc2V0IjoxNDAwOCwiYnl0ZUxlbmd0aCI6ODY1OH1dLCJidWZmZXJzIjpbeyJieXRlTGVuZ3RoIjoyMjY2OH1dLCJpbWFnZXMiOlt7ImJ1ZmZlclZpZXciOjExLCJtaW1lVHlwZSI6ImltYWdlL3BuZyJ9LHsiYnVmZmVyVmlldyI6MTIsIm1pbWVUeXBlIjoiaW1hZ2UvcG5nIn1dLCJtYXRlcmlhbHMiOlt7ImRvdWJsZVNpZGVkIjp0cnVlLCJuYW1lIjoiTGFiZWxfTWF0IiwicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNv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AAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAP7H/fzIRGt01AACAP7H/fzIRGt01AACAP7H/fzIRGt01AACAP7H/fzIRGt01AQAAswIAALMAAIA/AQAAswIAALMAAIA/AQAAswIAALMAAIA/AQAAswIAALMAAIA/AACAvwAAELTXja61AACAvwAAELTXja61AACAvwAAELTXja61AACAvwAAELTXja61AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAwBoBAAAzAACAPwAAgD8AAMAaAQAAMwAAgD8AAIA/AADAGgEAADMAAIA/AACAPwAAwBoBAAAzAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAmQAAQDMAAIA/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");function hs(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}class Es{constructor(){hs(this,"getProduct",void 0),hs(this,"getCommandContext",void 0),hs(this,"getAllLayoutData",void 0),hs(this,"getMetadata",void 0),hs(this,"getWorkflowMetadata",void 0),hs(this,"getStepStorage",void 0),hs(this,"getUpdatesPending",void 0)}getServer(){return ws}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}getVariationRecords(){return[]}async reset(){}updateStateWithServer(A){}addVariationRecord(A){return{recordNumber:0,transactionId:"",values:[]}}getCurrentVariationRecord(){}removeVariationRecord(A){return[]}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(A){}addPoller(A){}addConfirmCallback(A){}addCurrentVariationCallback(A){}addEditedCallback(A){}addElementsCallback(A){}addInformationResultCallback(A){}addInitCallback(A){}addMakingAdjustmentsCallback(A){}addMandatoryCallback(A){}addMetadataCallback(A){}addSelectionCallback(A){}addStepSpecificStorageCallback(A,t){}addStorageCallback(A){}addVariationRecordsCallback(A){}getCommandDispatcher(){return A=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getProfanities(){return[]}getRegionElements(A){return[]}getSerializedStep(A,t){}getStepSpecificServices(A){}getTransaction(){return{id:""}}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(A){}markUpdateCompleted(A){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}setCurrentAdjustingStepId(A){}setCurrentVariationRecord(A){}setEditedStatus(A,t){}setInformationResults(A){}setMandatoryFulfilled(A,t){}async setSelectionsAndElements(A,t,e){}setVariationRecords(A){}toggleDesignConfirmed(){}updateMetadata(A,t){}async updateStorage(A,t){}}function Cs(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}let Qs;var us;(us=Qs||(Qs={})).SelectFrame="SelectFrame",us.SelectImage="SelectImage",us.Position="Position";class Is extends Ja{constructor(A,t){super(A,t),Cs(this,"frameService",this.manager.getStepSpecificServices(this.getId())?.frameService)}selectVariant(A){const t=this.manager.getRegionElements(this.step.stepName);return Ia.selectVariant(this.step,A,t,this.manager,(A=>this.setUpdateState(A)))}onFrameDataChanged(A){this.frameService&&this.frameService.onFrameDataChanged((t=>{t&&A(t)}))}selectImage(A){return Ia.selectImage(this.step,A,this.manager)}getImageData(){if(this.frameService)return this.frameService.getImageData()}getCurrentFrameStep(A,t,e,n){return n&&n.length>1&&void 0===A?Qs.SelectFrame:t||e||this.getImageData()?Qs.Position:Qs.SelectImage}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasVaryingUpload(){return this.step.data.varyUpload}hasVaryingSelection(){return this.step.data.varySelection}}const ms=A=>{const e=(0,C.useRef)(null),[n,i]=(0,C.useState)(void 0),[a,s]=(0,C.useState)(void 0),{addEvent:r,removeEvent:o,updateEvent:c,eventCache:g}=wn(),[l,B]=(0,C.useState)(!1),[w,d]=(0,C.useState)(!1),{state:h,uiDispatcher:E}=pn(),Q=(0,C.useCallback)((A=>{const t=A;E(new Dn({zoom:Math.max(.1,Math.min(t,h.maxZoom))}))}),[E,h.maxZoom]),u=(0,C.useCallback)((A=>{o(A),1===g.length&&i(void 0),2===g.length&&s(void 0);"touch"===A.pointerType&&g.length>1&&g.length-1==1&&(d(!1),B(!1))}),[e,g]),I=(0,C.useCallback)((A=>{r(A);"touch"===A.pointerType&&1===g.length&&(E(new Dn({selectedElement:void 0})),d(!0),B(!0))}),[e,w,g]),m=(0,C.useCallback)((A=>{c(A),A.isPrimary&&i({x:A.screenX,y:A.screenY});const t=1===g.length&&"touch"!==g[0].pointerType,e=2===g.length&&"touch"===g[0].pointerType;if(l&&e){const[A,t]=g,e=Math.abs(A.clientX-t.clientX),n=a;n&&Q(h.zoom-.0055*(n-e)),s(e)}if(w&&(t||e)&&A.isPrimary){const t=(n?.x||A.screenX)-A.screenX,e=(n?.y||A.screenY)-A.screenY;E(new Dn({selectedElement:void 0,xTranslation:h.xTranslation-t/h.zoom,yTranslation:h.yTranslation-e/h.zoom}))}}),[h.xTranslation,h.yTranslation,h.zoom,w,l,Q,g,n,a]),D=(0,C.useCallback)((A=>{l&&Q(h.zoom-.035*Math.sign(A.deltaY))}),[h,l]);(0,C.useEffect)((()=>{if(!e.current||0===g.length)return;const A=g[0].pointerId,t=e.current.hasPointerCapture(A);w&&!t&&e.current.setPointerCapture(A),!w&&t&&e.current.releasePointerCapture(A)}),[e,w,g]),ei([" "],(()=>{d(!0),E(new Dn({selectedElement:void 0}))}),(()=>d(!1))),ei(["Control"],(()=>B(!0)),(()=>B(!1)));const p=(0,C.useMemo)((()=>({cursor:w&&0===g.length?"grab":w&&1===g.length?"grabbing":l?"zoom-in":void 0,width:"100%",height:"100%",overflow:"clip"})),[w,l,g]);return(0,t.jsx)("div",{ref:e,className:"transform-wrapper",onWheel:D,onPointerDown:I,onPointerUp:u,onPointerCancel:u,onPointerLeave:u,onPointerMove:m,style:p,children:A.children})};
|
|
239
239
|
//# sourceMappingURL=main.js.map
|
package/dist/module.js
CHANGED
|
@@ -235,5 +235,5 @@ import{CommandContext as A,AssetType as t,BringForwardCommand as e,BringToFrontC
|
|
|
235
235
|
lastSyncedAt
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
|
-
`;class si extends ei{constructor(A,t){super(A,t),ni(this,"transaction",this.manager.getTransaction())}selectVariant(){throw new Error("Bulk step does not support variants.")}async setDesignName(A){await Dt.getShadowGraphqlClient().mutate({mutation:ai,variables:{transactionId:this.manager.getTransaction().id,designName:A}});const t=this.manager.getTransaction();this.manager.setTransaction({...t,designName:A})}addVariationRecord(){const A=this.manager.addVariationRecord({transactionId:this.transaction.id,values:[]});return this.manager.setCurrentVariationRecord(A),A}updateBulkIsConnected(A){this.manager.updateStorage(this.getId(),{bulkIsConnected:A})}openBulkSourceUrl(){window.open(this.transaction.bulkSourceUrl,"_blank")}async sendGoogleSheetLinkToEmail(A){await Dt.getShadowGraphqlClient().mutate({mutation:ii,variables:{id:this.transaction.id,bulkEmailAddress:A}}),this.openBulkSourceUrl()}deleteVariationRecord(A){this.manager.removeVariationRecord(A)}getAspects(){return this.step.data.aspects}}class ri extends ei{constructor(A,t){super(A,t)}async selectVariant(A){if(await this.getCurrentVariant()!==A)return Gn.selectVariant(this.step,A,this.manager.getRegionElements(this.step.stepName)||[],(A=>this.setUpdateState(A)),this.manager)}getColors(){const A=this.manager.getRegionElements(this.step.stepName)||[];if(0!==A.length)try{return M(A[0].id,this.manager.getAllLayoutData()).colors}catch(A){}}setColor(A,t){const e=new Map;return e.set(A,t),Gn.changeColors(this.step,this.manager.getRegionElements(this.step.stepName),this.manager,(()=>this.manager.getCommandContext().getAllLayouts()),e)}async getColorOption(){const A=this.step.data.colourOptionId;if(!A)return;const t=await Ft.getOption(It,A);return t||void 0}getAvailableColors(){return this.step.data.colourPickerEnabled?Gn.availableColors(this.step,this.manager):Promise.resolve([])}hasVaryingSelection(){return this.step.data.varySelection}hasVaryingColors(){return this.step.data.varyColors}isColorPickerEnabled(){return this.step.data.colourPickerEnabled}}class oi extends ei{constructor(A,t){super(A,t)}selectVariant(A){return bn.selectVariant(this.step,A,this.manager,(A=>this.setUpdateState(A)))}}class ci extends ei{constructor(A,t){super(A,t)}selectVariant(A){return Jn.selectVariant(this.step,A,this.manager,(A=>this.setUpdateState(A)))}}class gi extends ei{constructor(A,t){super(A,t)}selectVariant(A){return On.selectVariant(this.step,A,this.manager,(A=>this.setUpdateState(A)))}}class Bi extends ei{constructor(A,t){super(A,t)}async selectVariant(A){if(!A.id)throw new Error("Unable to select variant with a null ID");await Ln.selectVariant(this.step,A.id,this.manager)}getDisplayType(){return this.step.option?.data.displayType}}class wi extends ei{constructor(A,t){super(A,t)}selectVariant(A){return Promise.resolve()}setColor(A){return zn.selectVariant(this.step,A,this.manager.getRegionElements(this.step.stepName)||[],this.manager)}getColors(){return zn.availableColours(this.step,this.manager)}}class li extends ei{constructor(A,t){super(A,t)}async selectVariant(A){Wn.selectVariant(this.step,A,this.manager,(A=>{if(A)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:"An issue has occured with test",messageType:qn.Error,stepID:this.step.stepName}]);else{const A=this.manager.getInformationResults().filter((A=>A.stepID!==this.step.stepName));this.manager.setInformationResults(A)}}),(A=>{}))}getAvailableColors(){return this.step.data.colourPickerEnabled?Wn.availableColors(this.step,this.manager):Promise.resolve([])}async setFill(A){const t=this.manager.getRegionElements(this.step.stepName);await Wn.changeFill(this.step,A,t,this.manager)}getFill(){return this.manager.getStepStorage(this.step.stepName)?.color||"#000000"}setFullTextCustomization(A){const t=this.manager.getStepStorage(this.step.stepName)?.inputText||"",e=void 0!==this.step.data.replaceableText?this.step.data.replaceableText.replace("{{}}",t):t,n=A?e:this.step.data.defaultText;this.manager.updateStorage(this.step.stepName,{customiseAllText:A,text:n,defaultCleared:!1});return this.setText(n)}setText(A){const t={input:A},e=Wn.findLayoutElements(this.manager,this.step),n=Wn.filterUnsupportedCharacters(A,e[0]?.fontData);!!this.step.data&&!!this.step.data.maxLength&&n.length>this.step.data.maxLength||(t.input=n);const i=e.length<=0,a=i?{inputText:n,text:n}:{inputText:n};if(this.manager.updateStorage(this.step.stepName,a),this.manager.updateMetadata(this.step.stepName,{text:n}),i)return t;const{command:s,errors:r,helperText:o}=Wn.updateInputText(n,e,this.step,this.manager);s&&this.manager.getCommandDispatcher()(s);const c=this.manager.getInformationResults(),g=r[0]?.localizationKey;if(g)this.manager.setInformationResults([...c,{message:`${g} - ${this.step.stepTitle}`,messageType:qn.Error,stepID:this.step.stepName}]);else{const A=c.filter((A=>A.stepID!==this.step.stepName));this.manager.setInformationResults(A)}return t.helperText=g||o,t.errorText=g,t}getText(){const A=this.step.data.defaultText;return this.manager.getStepStorage(this.step.stepName)?.text||A||""}isReplaceable(){return this.step.data.userCanReplaceText}clearDefaultTextIfNecessary(){if(!this.manager.getStepStorage(this.step.stepName)?.defaultCleared&&this.step.data.deleteDefaultOnFocus){const A=this.setText("");return this.manager.updateStorage(this.step.stepName,{defaultCleared:!0,inputText:""}),A}}hasVaryingText(){return this.step.data.varyText}hasVaryingColor(){return this.step.data.varyColor}hasVaryingSelection(){return this.step.data.varySelection}hasColorPicker(){return this.step.data.colourPickerEnabled}getRegions(){return this.step.data.regions}}class Ei{static get(A,t){switch(t.type){case u.Question:return new Bi(A,t);case u.Text:return new li(A,t);case u.Illustration:return new ri(A,t);case u.Picture:return new gi(A,t);case u.Shape:return new wi(A,t);case u.Material:return new oi(A,t);case u.Model:return new ci(A,t);case u.Frame:return new Hi(A,t);case u.Bulk:return new si(A,t);default:throw new at(`Step type ${t.type} not yet supported in Core SDK`)}}}function di(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const Qi=(A,t,e)=>{const n={};return t.steps.forEach((t=>{Object.assign(n,(t=>{const n={};if("Frame"===t.type){const i=A[t.stepName],a=t.data;if(!i||a.hideImageInCart&&e)return n;n[`${t.stepTitle} image`]=i.image}if("Illustration"===t.type){const i=A[t.stepName],a=t.data;if(!i||a.hideColorsInCart&&e||!i.colors)return n;if(i.colors.length>0){const A=i.colors.join(", ").toUpperCase();n[`${t.stepTitle} colors`]=A}}if("Module"===t.type){const i=A[t.stepName],a=t.data;if(!i||a.hideTextInCart&&e)return n;n[`${t.stepTitle} text`]=i.text}if("Text"===t.type){const i=A[t.stepName];if(!i)return n;const a=t.data;a.hideTextInCart&&e||(n[`${t.stepTitle} text`]=i.text),!i.color||a.hideColorInCart&&e||(n[`${t.stepTitle} color`]=i.color)}return n})(t))})),n},Ci=(A,t,e,n,i,a,s,r,o)=>{const c={event:"onComplete",lineItemImageUrl:s?s.href:"",transactionId:A.id,designProductVariantId:A.externalDesignProductVariantId,designProductId:A.externalDesignProductId,baseCost:e,weight:t.weight,optionsCost:n,exportedData:a,workflowViewerLink:A.workflowViewerLink||"",workflowViewerReadOnlyLink:A.workflowViewerReadOnlyLink||""};return i&&(c.metadata=i),r&&(c.selectedVariants=r),o&&(c.sku=o),c},hi=async(A,t,e,n,i,a,s)=>{const r=(A.product?.basePrice||0)*(A.variationsCount||0),o=A.priceModifierTotal||0,c=((A,t,e,n)=>{const i={};let a;if(e){a=Qi(e,t,!1);for(const A of Object.keys(a))i[A]={value:a[A],priceModifier:0}}else if(n){a=n;for(const A of Object.keys(a))i[A]={value:a[A],priceModifier:0}}for(const e of Object.keys(A)){const n=A[e],a=t.steps.find((A=>A.stepTitle===e));if(1===n.length)i[`${a?.stepTitle} selection`]={value:n[0].name,priceModifier:n[0].priceModifier};else if(n.length>1)for(let A=0;A<n.length;A++)i[`${a?.stepTitle} selection ${A+1}`]={value:n[A].name,priceModifier:n[A].priceModifier}}return i})(n,e,void 0,a);return Ci(A,t,r,o,a,c,s,n,i)},Ii=async(A,t,e,n,i,a,s,r,o,c,g,B,w)=>{o("workflow.steps.finish.finalize.buildingLayouts"),await A.outstandingRequestsPromise();const l=Dt.getShadowGraphqlClient();await l.resetStore();const E=await l.query({query:Cn,variables:{id:a.id},errorPolicy:"all"}),d=E.data?.transactions[0].workflowState;!E.errors&&d||(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(n())),E.errors&&E.errors.forEach((A=>{E.errors&&console.log("Server Error:",A.message)})),await A.updateStateWithServerImmediate(n),console.log("Server state is undefined @ Workflow completion"));const Q=A.getPreviewService(),C=t?.finalizeStepConfig?.lookAtAnimation,h=Q&&100===Q.getSceneInitializationProgress()&&t.showModelOnFinishStep&&!!C,I=w&&Qi(w,t,!0),D=w&&Qi(w,t,!1),u=async A=>{const e={};let n=0;if(Object.keys(s).length>0)for(const i of Object.keys(s)){const a=s[i],r=t.steps.find((A=>A.stepName===i));for(let t=0;t<a.selections.length;++t){const i=a.selections[t];if(r&&(!A||await Ft.getOption(It,r.optionId)&&(await Ft.getOption(It,r.optionId)).data.variants.length>1&&!r.data.hideSelectionInCart&&!r.data.hideSelectionsInCart)){const A=r.stepTitle;e[A]?e[A].push({id:i.id||"",name:i.name,priceModifier:i.priceModifier}):e[A]=[{id:i.id||"",name:i.name,priceModifier:i.priceModifier}]}n+=i.priceModifier}}return[e,n]},[m]=await u(!0),p=Object.fromEntries(Object.keys(m).map((A=>[A,m[A].map((A=>A.id))]))),[f]=await u(!1),M=Object.fromEntries(Object.keys(f).map((A=>[A,f[A].map((A=>A.id))]))),F=await B(h);o("workflow.steps.finish.finalize.creatingDesign");const y=(await It.execute("createDesign",{designDetails:(()=>{const A={designName:r,layouts:e.map((A=>({index:A.index,panelId:A.panelId}))),workflowId:t.id,productId:i.id,transactionId:a.id,threeDimPreview:h,previewImage:F};return w&&(A.metadata=D),p&&(A.selectedVariants=M),A})()})).body,Y=y.links.find((A=>"image"===A.rel));o("workflow.steps.finish.finalize.updatingTransaction");const N=(await Dt.getShadowGraphqlClient().query({query:Qn,variables:{id:a.id}})).data.transactions[0];return a.bulk?(await c(g),((A,t,e)=>{const n=(A.product?.basePrice||0)*(A.variationsCount||0),i=A.priceModifierTotal||0,a={items:{value:A.variationsCount?`${A.variationsCount}`:"0",priceModifier:0}};return Ci(A,t,n,i,void 0,a,e)})(N,i,Y)):await hi(N,i,t,m,y.data.sku,I,Y)};let Di;var ui;(ui=Di||(Di={})).Local="Local",ui.Remote="Remote";const mi=new class{constructor(){di(this,"localPersistenceKey","designTransactions"),di(this,"storageMethod",Di.Local),di(this,"designSavedListeners",[])}attachSaveListener(A){this.designSavedListeners.push(A)}detachSaveListener(A){this.designSavedListeners=this.designSavedListeners.filter((t=>t!==A))}async getSavedDesigns(){return await this.getDesigns()}async getSavedDesignByTransaction(A){return(await this.getSavedDesigns()).find((t=>t.transactionId===A))}async addDesign(A){const t=(await this.getSavedDesigns()).filter((t=>t.transactionId!==A.transactionId));t.unshift(A),await this.setDesigns(t),this.notifyDesignSaved(A)}async removeDesign(A){const t=await this.getSavedDesigns();await this.setDesigns(t.filter((t=>t.transactionId!==A)))}async setDesigns(A){if(this.storageMethod!==Di.Local)throw new at("Unexpected storage method requested");wt.set(this.localPersistenceKey,JSON.stringify(A))}async getDesigns(){if(this.storageMethod===Di.Local){const A=wt.get(this.localPersistenceKey);return A?JSON.parse(A):[]}throw new at("Unexpected storage method requested")}notifyDesignSaved(A){this.designSavedListeners.forEach((t=>t(A)))}};function pi(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}class fi{constructor(t,e,n){if(pi(this,"client",void 0),pi(this,"commandContext",void 0),pi(this,"workflowManager",void 0),pi(this,"isReadOnly",void 0),pi(this,"server",void 0),pi(this,"renderableScenes",[]),pi(this,"renderableSceneCallbacks",[]),pi(this,"debouncedSavedDesignUpdate",WA((async()=>{await mi.getSavedDesignByTransaction(this.getWorkflowManager().getTransaction().id)&&this.save()}),2500)),!e.workflow)throw new Error("No Workflow ID provided.");this.client=t,this.server=n;const i=e.layouts;this.commandContext=new A,this.commandContext.initialize(i,e.reloadedState),this.isReadOnly=!!e.transaction.lineItem?.id||!wt.getMap("transactionOwnerIds")?.get(e.transaction.id)||!!e.readOnly,this.workflowManager=new Ai(e.workflow,e.product.profanities?.map((A=>A.word))||[],i,this.commandContext,(A=>{try{this.debouncedSavedDesignUpdate()}catch{console.error("Failed to update saved design details.")}return e.stateMutationFunc(A)}),e.transaction,e.product,this.server,e.previewService,e.renderableContextService,e.reloadedState,e.readOnly),this.workflowManager.addSelectionCallback((A=>{const t=A.traversableScenes.map((A=>{const t=A.renderableSteps.map((A=>A.stepName));return{id:A.name,title:A.title,renderableSteps:t}}));this.renderableScenes=t,this.renderableSceneCallbacks.forEach((A=>A(t)))}))}getClient(){return this.client}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.commandContext}getWorkflowManager(){return this.workflowManager}async updateVariationRecords(A){await Dt.getShadowGraphqlClient().mutate({mutation:dn,variables:{transactionId:this.workflowManager.getTransaction().id,updates:A.map((A=>({recordNumber:A.recordNumber,values:A.values.map((A=>({aspect:A.aspect,stepName:A.stepName,value:A.value})))})))}})}async createPreviewImage(A,t){const e=this.workflowManager.getWorkflow()?.finalizeStepConfig?.lookAtAnimation;if(A){if(!e)throw new Error("Failed to generate cart preview image!");return await(this.workflowManager.getPreviewService()?.renderSceneScreenshot(512,e))||""}const n=document.createElement("canvas");let i=2048;t&&t<=2048&&(i=t),n.width=i,n.height=i;const a=this.commandContext.getAllLayouts()[this.workflowManager.getWorkflow().defaultPreviewPanelIndex||0],s=a.layoutState.layout.previewRegion?{x:a.layoutState.layout.previewRegion.left,y:a.layoutState.layout.previewRegion.top,width:a.layoutState.layout.previewRegion.width,height:a.layoutState.layout.previewRegion.height}:{x:0,y:0,width:a.layoutState.layout.width,height:a.layoutState.layout.height},r=this.commandContext.getLayoutById(a.layoutState.layout.id),o=n.getContext("2d");if(!o)throw new ot("Failed to obtain 2D context for preview image creation");const c=P(r.layoutState.layout,r.layoutState.elements,{renderingConfiguration:{purpose:X.Print,region:{left:s.x,top:s.y,width:s.width,height:s.height}}}),g=KA.renderToStaticMarkup(c),B=await jA.from(o,g,{anonymousCrossOrigin:!0,ignoreDimensions:!1});await B.render();const w=await(async A=>new Promise(((t,e)=>{try{A.toBlob((A=>{if(A){const e=URL.createObjectURL(A);t(e)}}))}catch(A){e(A)}})))(n);return n.toDataURL(w)}getStepById(A){const t=this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepName===A));if(t&&this.stepHasHandle(t))return Ei.get(this.getWorkflowManager(),t)}getBulkStep(){if(this.getWorkflowManager().getTransaction().bulk){const A={type:u.Bulk,stepName:"Bulk",stepTitle:"workflow.steps.bulk.title",helpText:"help:/partner/add-ons/bulk-ordering",data:{aspects:hn(this.getWorkflowManager().getWorkflow())},conditions:[]};return Ei.get(this.getWorkflowManager(),A)}}getStepByName(A){const t=this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepTitle===A));if(t&&this.stepHasHandle(t))return Ei.get(this.getWorkflowManager(),t)}getStepsByType(A){return this.getWorkflowManager().getWorkflow().steps.filter((t=>t.type===A)).map((A=>Ei.get(this.getWorkflowManager(),A)))}getStepsByScene(A){if(!this.getWorkflowManager().getWorkflow().stepGroups.find((t=>t.name===A.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 A.stepNames.map((A=>this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepName===A)))).filter((A=>this.stepHasHandle(A))).map((A=>Ei.get(this.getWorkflowManager(),A)))}async attachCustomerDetails(A){await Dt.getShadowGraphqlClient().mutate({mutation:ii,variables:{id:this.getWorkflowManager().getTransaction().id,bulkEmailAddress:A.email}}),this.getWorkflowManager().setTransactionCustomerDetails(A)}attachRenderableSceneListener(A){this.renderableSceneCallbacks.push(A),A(this.renderableScenes)}detachRenderableSceneListener(A){this.renderableSceneCallbacks=this.renderableSceneCallbacks.filter((t=>t!==A))}async save(A){if(!this.getCommandContext().getState())throw new at("State undefined!");const t={title:await(async()=>{if(A)return A;const t=this.getWorkflowManager().getTransaction().id,e=(await mi.getSavedDesigns()).find((A=>A.transactionId===t))?.title;return e||"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 mi.addDesign(t),t}async copy(){const A=TA(this.getCommandContext().getState());if(!A)throw new at("Internal state is undefined! Cannot copy experience!");const t=JSON.stringify(A.transaction),e=this.getWorkflowManager().getWorkflow(),n=new yi({}),i=this.getWorkflowManager().getTransaction().integrationProduct?.id;if(!i)throw new at("Integration product id is undefined!");await n.initFromIntegrationProduct(i);return await n.getWorkflowExperience(e.id,t,void 0,this.server)}async onDesignFinished(A,t,e,n){return Ii(this.workflowManager,this.workflowManager.getWorkflow(),this.workflowManager.getLayouts(),(()=>this.commandContext.getState()),A,this.workflowManager.getTransaction(),e,this.workflowManager.getWorkflow().name,t,(A=>this.updateVariationRecords(A)),this.workflowManager.getVariationRecords(),(A=>this.createPreviewImage(A)),n)}stepHasHandle(A){return A.type!==u.SilentIllustration&&A.type!==u.ProductOverlay}}function Mi(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const Fi=(A,t)=>{const e=A.workflowState,n=e?JSON.parse(e):void 0;return n?Object.values(n.layouts).map((A=>A.layout)):t.panels.sort(((A,t)=>A.index-t.index)).map((A=>({id:y(),panelId:A.name,name:A.name,index:A.index,createdAt:new Date,updatedAt:new Date,transparentBackground:A.transparentBackground,height:A.height,width:A.width,previewRegion:A.previewRegion,useEditableArea:A.useEditableArea,editableArea:A.editableArea})))};class yi{constructor(A){Mi(this,"options",void 0),Mi(this,"initialized",void 0),Mi(this,"experienceOptions",void 0),Mi(this,"updateTransactionState",(async A=>{try{return Dt.getShadowGraphqlClient().mutate({...A,mutation:ln})}catch(A){throw console.error(A),new rt("Critical - Unable to synchronize workflow state with server.")}})),this.initialized=!1,this.options=A}getAssetManager(){return ft}async initFromIntegrationProduct(A){if(""===A)throw new rt("No integration product ID provided.");this.options.useUncachedEndpoints&&It.setUncachedOperations(["getAssetByKeyV2","getWorkflowV2","getMaterialV2","getOptionV2"]);const t=Dt.getShadowGraphqlClient();await t.resetStore();const e=await t.mutate({mutation:gn,variables:{integrationProductId:A,bulk:this.options.bulk||!1},errorPolicy:"all"});if(!e.data)throw new rt("Failed to create transaction!");const n=(await t.mutate({mutation:Bn,variables:{id:e.data.transactionCreate.id},errorPolicy:"all"})).data?.transactionClaim;if(!n)throw new rt("Failed to create transaction.");if(!e.data.transactionCreate.product)throw new rt("Failed to create transaction, product not available.");const i=wt.getMap("transactionOwnerIds")||new Map;i.set(n.id,n.transactionOwnerId),Ct(n.transactionOwnerId||""),wt.setMap("transactionOwnerIds",i),this.experienceOptions={product:e.data.transactionCreate.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState},this.initialized=!0}async initFromTransaction(A,t=!1){if(""===A)throw new rt("No transaction ID provided.");const e=Dt.getShadowGraphqlClient();await e.resetStore();if(t)return await(async()=>{console.log("Readonly Mode");const n=(await e.query({query:wn,variables:{id:A},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new rt("Failed to read transaction.");if(!n.product)throw new rt("Failed to load transaction, product not available.");this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:async()=>{throw new at("State mutation is forbidden in read only mode!")},readOnly:t},this.initialized=!0})();const n=wt.getMap("transactionOwnerIds")||new Map,i=n.get(A);if(i){Ct(i);const n=(await e.query({query:wn,variables:{id:A},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new rt("Failed to read transaction.");if(!n.product)throw new rt("Failed to load transaction, product not available.");return this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:t},void(this.initialized=!0)}try{const i=(await e.mutate({mutation:Bn,variables:{id:A},errorPolicy:"all"})).data?.transactionClaim;if(!i)throw new rt("Failed to read transaction.");if(!i.product)throw new rt("Failed to load transaction, product not available.");i.transactionOwnerId&&(n.set(i.id,i.transactionOwnerId),Ct(i.transactionOwnerId),wt.setMap("transactionOwnerIds",n)),this.experienceOptions={product:i.product,transaction:i,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:t},this.initialized=!0}catch{throw new rt("Attempted to access a transaction that isn't available.")}}async getWorkflowExperience(A,t,e,n){if(!this.initialized||!this.experienceOptions)throw new rt("Cannot launch experience: Not initialized.");const i=async A=>{for(const t in A.layouts){const e=A.layouts[t].elements.filter((A=>A.type===d.Illustration));for(let A=0;A<e.length;++A){const t=e[A];t.src&&t.svg&&(t.cachedObjectURL=await EA(t.svg))}const n=A.layouts[t].elements.filter((A=>A.type===d.Textbox));for(let A=0;A<n.length;++A){const t=n[A];t.fontData?.assetUrl&&U(t.fontData.assetUrl)}}},a=n||It;if(this.experienceOptions.transaction.workflowId){const A=(await a.execute("getWorkflowV2",{workflowSlug:this.experienceOptions.transaction.workflowId})).body.data;if(this.experienceOptions.workflow=A,this.experienceOptions.transaction.workflowState){const A=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(A.layouts).map((A=>A.layout)),await v(A),await i(A),this.experienceOptions.reloadedState=A}this.experienceOptions.previewService=e&&e(A),this.experienceOptions.renderableContextService=new An(this.experienceOptions.layouts,a),this.experienceOptions.product?.modelUrl&&this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService);const t=new fi(this,this.experienceOptions,a);return await t.getWorkflowManager().getInitializationPromise(),t}if(A){const n=(await a.execute("getWorkflowV2",{workflowSlug:A})).body.data;if(this.experienceOptions.workflow=n,await Dt.getShadowGraphqlClient().mutate({mutation:En,variables:{workflowId:A,id:this.experienceOptions.transaction.id}}),t){const A=JSON.parse(t);this.experienceOptions.layouts=Object.values(A.layouts).map((A=>A.layout)),await v(A),await i(A),this.experienceOptions.reloadedState=A}else this.experienceOptions.layouts=Fi(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=e&&e(n),this.experienceOptions.renderableContextService=new An(this.experienceOptions.layouts,a),this.experienceOptions.product?.modelUrl&&this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService);const s=new fi(this,this.experienceOptions,a);return await s.getWorkflowManager().getInitializationPromise(),s}throw new rt("No workflow ID provided.")}getPreviewService(){return this.experienceOptions?.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new rt("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new rt("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}}function Yi(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const Ni={setUncachedOperations:()=>{},execute:async()=>({body:{},headers:{"content-type":""}})};class xi{static getFrameStep(A){return{type:u.Frame,stepTitle:"My frame Step",stepName:"My Step Name",conditions:[],option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"my-new-variant",priceModifier:1,asset:{data:{key:"1",createdAt:0,licenseId:"",mimeType:"",ownerId:"",price:0,public:!0,type:t.Frame,objectVersions:[],tags:[]},links:[{href:xi.aFrame,rel:"cdn"}]}},{id:"2",name:"my-new-variant-2",priceModifier:1,asset:{data:{key:"2",createdAt:0,licenseId:"",mimeType:"",ownerId:"",price:0,public:!0,type:t.Frame,objectVersions:[],tags:[]},links:[{href:xi.bFrame,rel:"cdn"}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,layer:0,layerIndex:0,rotation:0,panelId:"p-123",immutable:!1,adjustmentBoundary:{x:0,y:0,height:0,width:0}}],...A}}}static getBulkStep(){return{type:u.Bulk,stepTitle:"Bulk",stepName:"bulk-step",data:{aspects:[]}}}static getQuestionStep(A,t){return{type:u.Question,stepTitle:"question-step",stepName:A||"question-step",conditions:t,option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"my-variant",priceModifier:1},{id:"2",name:"my-variant2",priceModifier:1}]},links:[]},data:{}}}static getMaterialStep(A,t){return{type:u.Material,stepTitle:"My Material Step",stepName:A||"material-step",conditions:t,option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"my-variant",priceModifier:1,material:{data:{id:"1",name:"mat-1",clearCoat:mA.None,createdAt:(new Date).toISOString(),updatedAt:(new Date).toISOString(),albedoMapKey:xi.redRaster},links:[]}},{id:"2",name:"my-variant2",priceModifier:1,material:{data:{id:"2",name:"mat-2",clearCoat:mA.None,createdAt:(new Date).toISOString(),updatedAt:(new Date).toISOString(),albedoMapKey:xi.blueRaster},links:[]}}]},links:[]},data:{targetMaterials:["panel"]}}}static getTextStep(A){return{type:u.Text,stepTitle:"s-1",stepName:"s-1",option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"font/ttf",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Font,tags:[]},links:[{rel:"cdn",href:xi.minimalFont}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],defaultText:"",font:"",maxLength:100,size:16,textAlign:"center",colour:"#000000",verticalAlign:"top",...A}}}static getIllustrationStep(A){return{type:u.Illustration,stepTitle:"s-1",stepName:"s-1",option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"image/svg+xml",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Illustration,tags:[]},links:[{rel:"cdn",href:xi.blueShape.src}]}},{id:"2",name:"",priceModifier:1,assetKey:"456",asset:{data:{key:"456",createdAt:0,mimeType:"image/svg+xml",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Illustration,tags:[]},links:[{rel:"cdn",href:xi.redShape.src}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],colourPickerEnabled:!1,...A}}}static getPictureStep(A,e){return{type:u.Picture,stepTitle:"s-1",stepName:"s-1",option:{data:{name:"test",defaultVariant:e,variants:[{id:"1",name:"a",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"image/png",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Image,tags:[]},links:[{rel:"cdn",href:xi.blueRaster}]}},{id:"2",name:"b",priceModifier:1,assetKey:"456",asset:{data:{key:"456",createdAt:0,mimeType:"image/png",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Image,tags:[]},links:[{rel:"cdn",href:xi.redRaster}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],...A}}}static getModelStep(A,e){return{type:u.Model,stepTitle:"s-1",stepName:"s-1",optionId:"om-1",option:{data:{id:"om-1",name:"test",defaultVariant:e,variants:[{id:"1",name:"a",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"application/octet-stream",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Model,tags:[]},links:[{rel:"cdn",href:xi.glbBox}]}},{id:"2",name:"b",priceModifier:1,assetKey:"456",asset:{data:{key:"456",createdAt:0,mimeType:"application/octet-stream",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Model,tags:[]},links:[{rel:"cdn",href:xi.glbVertexTest}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],...A}}}static getShapeStep(A,t=[]){return{type:u.Shape,stepTitle:"s-1",stepName:A,conditions:t,option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"a",priceModifier:1,color:"#FFFFFF"},{id:"2",name:"b",priceModifier:1,color:"#000000"}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}]}}}static getSilentIllustrationStep(A,t=[]){return{type:u.SilentIllustration,stepTitle:"s-1",stepName:A,conditions:t,data:{assetKey:xi.redRaster,regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}]}}}}Yi(xi,"minimalFont","data:font/truetype;charset=utf-8;base64,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"),Yi(xi,"redShape",{src:"https://assets.spiff.com.au/public/assets/56cf72f5-a98d-487f-9e79-8129030ab99e.svg",text:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><script xmlns=""/><defs><style>.cls-1{fill:#f285b1;}</style></defs><title>Asset 4</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" width="512" height="512"/></g></g></svg>'}),Yi(xi,"blueShape",{src:"https://assets.spiff.com.au/public/assets/6b9c3b7a-a669-41be-8ba2-538588d449e0.svg",text:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><script xmlns=""/><defs><style>.cls-1{fill:#53c6d6;}</style></defs><title>Asset 3</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" width="512" height="512"/></g></g></svg>'}),Yi(xi,"aFrame","https://assets.spiff.com.au/public/assets/5bb3c003-3d30-4c98-9f07-2cfe25fbc4f7.svg"),Yi(xi,"bFrame","https://assets.spiff.com.au/public/assets/25e42f93-3f5d-43b6-9075-29164000bdf5.svg"),Yi(xi,"redRaster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg=="),Yi(xi,"blueRaster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPj/HwADBwIAMCbHYQAAAABJRU5ErkJggg=="),Yi(xi,"glbBox","data:@file/octet-stream;base64,Z2xURgIAAACABgAA3AMAAEpTT057ImFzc2V0Ijp7ImdlbmVyYXRvciI6IkNPTExBREEyR0xURiIsInZlcnNpb24iOiIyLjAifSwic2NlbmUiOjAsInNjZW5lcyI6W3sibm9kZXMiOlswXX1dLCJub2RlcyI6W3siY2hpbGRyZW4iOlsxXSwibWF0cml4IjpbMS4wLDAuMCwwLjAsMC4wLDAuMCwwLjAsLTEuMCwwLjAsMC4wLDEuMCwwLjAsMC4wLDAuMCwwLjAsMC4wLDEuMF19LHsibWVzaCI6MH1dLCJtZXNoZXMiOlt7InByaW1pdGl2ZXMiOlt7ImF0dHJpYnV0ZXMiOnsiTk9STUFMIjoxLCJQT1NJVElPTiI6Mn0sImluZGljZXMiOjAsIm1vZGUiOjQsIm1hdGVyaWFsIjowfV0sIm5hbWUiOiJNZXNoIn1dLCJhY2Nlc3NvcnMiOlt7ImJ1ZmZlclZpZXciOjAsImJ5dGVPZmZzZXQiOjAsImNvbXBvbmVudFR5cGUiOjUxMjMsImNvdW50IjozNiwibWF4IjpbMjNdLCJtaW4iOlswXSwidHlwZSI6IlNDQUxBUiJ9LHsiYnVmZmVyVmlldyI6MSwiYnl0ZU9mZnNldCI6MCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjI0LCJtYXgiOlsxLjAsMS4wLDEuMF0sIm1pbiI6Wy0xLjAsLTEuMCwtMS4wXSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjEsImJ5dGVPZmZzZXQiOjI4OCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjI0LCJtYXgiOlswLjUsMC41LDAuNV0sIm1pbiI6Wy0wLjUsLTAuNSwtMC41XSwidHlwZSI6IlZFQzMifV0sIm1hdGVyaWFscyI6W3sicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNvbG9yRmFjdG9yIjpbMC44MDAwMDAwMTE5MjA5MjksMC4wLDAuMCwxLjBdLCJtZXRhbGxpY0ZhY3RvciI6MC4wfSwibmFtZSI6IlJlZCJ9XSwiYnVmZmVyVmlld3MiOlt7ImJ1ZmZlciI6MCwiYnl0ZU9mZnNldCI6NTc2LCJieXRlTGVuZ3RoIjo3MiwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjAsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZVN0cmlkZSI6MTIsInRhcmdldCI6MzQ5NjJ9XSwiYnVmZmVycyI6W3siYnl0ZUxlbmd0aCI6NjQ4fV19iAIAAEJJTgAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAC/AAAAvwAAAD8AAAA/AAAAvwAAAD8AAAC/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAvwAAAD8AAAC/AAAAvwAAAD8AAAA/AAAAvwAAAL8AAAC/AAAAvwAAAL8AAAA/AAAAPwAAAD8AAAA/AAAAvwAAAD8AAAA/AAAAPwAAAL8AAAA/AAAAvwAAAL8AAAC/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAC/AAAAPwAAAL8AAAA/AAAAPwAAAL8AAAC/AAAAvwAAAD8AAAC/AAAAPwAAAD8AAAC/AAAAvwAAAL8AAAC/AAAAPwAAAL8AAAC/AAAAvwAAAL8AAAC/AAAAPwAAAL8AAAA/AAAAvwAAAL8AAAA/AAAAPwAAAL8AAAEAAgADAAIAAQAEAAUABgAHAAYABQAIAAkACgALAAoACQAMAA0ADgAPAA4ADQAQABEAEgATABIAEQAUABUAFgAXABYAFQA="),Yi(xi,"glbVertexTest","data:@file/octet-stream;base64,Z2xURgIAAABsZgAAxA0AAEpTT057ImFjY2Vzc29ycyI6W3siYnVmZmVyVmlldyI6MCwiY29tcG9uZW50VHlwZSI6NTEyMSwiY291bnQiOjM2LCJtYXgiOlsyM10sIm1pbiI6WzBdLCJ0eXBlIjoiU0NBTEFSIn0seyJidWZmZXJWaWV3IjoxLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjQsIm1heCI6WzAuNzU1NDc4MzgyMTEwNTk1NywtMC44NTEyNDE2NDgxOTcxNzQxLDAuOTc1MDMyODY2MDAxMTI5Ml0sIm1pbiI6Wy0wLjcwNDU2NTgyMzA3ODE1NTUsLTAuODUxMjQxNzA3ODAxODE4OCwtMC45NjExMTU0Nzk0NjkyOTkzXSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjIsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyNCwibWF4IjpbMCwxLDBdLCJtaW4iOlswLDEsMF0sInR5cGUiOiJWRUMzIn0seyJidWZmZXJWaWV3IjozLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjQsIm1heCI6WzEsNy4xMjE5Mzg5NDk2OTQ1OTVlLTgsMS41MTA1MTkyMTE5MzM1Njk3ZS03LDFdLCJtaW4iOlsxLC0xLjQzNDg4MTM2OTI3NzcxODVlLTcsLTEuMTI1NzY3NjM5MTA5NjUzOGUtNywxXSwidHlwZSI6IlZFQzQifSx7ImJ1ZmZlclZpZXciOjQsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyNCwibWF4IjpbMC45OTk5OTk4ODA3OTA3MTA0LDAuODAxMDQwOTQ3NDM3Mjg2NF0sIm1pbiI6WzAsMC4wNTUzOTcyNzIxMDk5ODUzNV0sInR5cGUiOiJWRUMyIn0seyJidWZmZXJWaWV3Ijo1LCJjb21wb25lbnRUeXBlIjo1MTIxLCJjb3VudCI6NzIsIm1heCI6WzQ3XSwibWluIjpbMF0sInR5cGUiOiJTQ0FMQVIifSx7ImJ1ZmZlclZpZXciOjYsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50Ijo0OCwibWF4IjpbMS4wMDAwMDA0NzY4MzcxNTgyLDEsMC40ODc0MjI0NjYyNzgwNzYxN10sIm1pbiI6Wy0xLjAwMDAwMDM1NzYyNzg2ODcsLTEsLTAuMTcxODY2NTM2MTQwNDQxOV0sInR5cGUiOiJWRUMzIn0seyJidWZmZXJWaWV3Ijo3LCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6NDgsIm1heCI6WzEsMSwxXSwibWluIjpbLTEsLTEsLTFdLCJ0eXBlIjoiVkVDMyJ9LHsiYnVmZmVyVmlldyI6OCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjQ4LCJtYXgiOlsxLDcuOTQwOTMzODgwNTA5MDY2ZS0yMyw0LjQ3MDM0ODM1ODE1NDI5N2UtOCwxXSwibWluIjpbMSwtNi42MTc0NDQ5MDA0MjQyMjJlLTI0LDAsMV0sInR5cGUiOiJWRUM0In0seyJidWZmZXJWaWV3Ijo5LCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6NDgsIm1heCI6WzAuODM2MTI5NjA1NzcwMTExMSwwLjc2NjYzMTkwMTI2NDE5MDddLCJtaW4iOlswLjIyNjEzMDQ1NTczMjM0NTU4LDAuMjMyMTE3NjUyODkzMDY2NF0sInR5cGUiOiJWRUMyIn0seyJidWZmZXJWaWV3IjoxMCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjQ4LCJtYXgiOlsxLDEsMSwxXSwibWluIjpbMCwwLDAsMV0sInR5cGUiOiJWRUM0In1dLCJhc3NldCI6eyJjb3B5cmlnaHQiOiJDb3B5cmlnaHQgMjAxOCBBbmFseXRpY2FsIEdyYXBoaWNzLCBJbmMuLCBDQy1CWSA0LjAgaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC8gLSBNZXNoIGFuZCB0ZXh0dXJlcyBieSBFZCBNYWNrZXkuIiwiZ2VuZXJhdG9yIjoiS2hyb25vcyBCbGVuZGVyIGdsVEYgMi4wIGV4cG9ydGVyIiwidmVyc2lvbiI6IjIuMCJ9LCJidWZmZXJWaWV3cyI6W3siYnVmZmVyIjowLCJieXRlTGVuZ3RoIjozNiwiYnl0ZU9mZnNldCI6MCwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjI4OCwiYnl0ZU9mZnNldCI6MzYsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoyODgsImJ5dGVPZmZzZXQiOjMyNCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjM4NCwiYnl0ZU9mZnNldCI6NjEyLCJ0YXJnZXQiOjM0OTYyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTkyLCJieXRlT2Zmc2V0Ijo5OTYsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjo3MiwiYnl0ZU9mZnNldCI6MTE4OCwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZU9mZnNldCI6MTI2MCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZU9mZnNldCI6MTgzNiwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjc2OCwiYnl0ZU9mZnNldCI6MjQxMiwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjM4NCwiYnl0ZU9mZnNldCI6MzE4MCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjc2OCwiYnl0ZU9mZnNldCI6MzU2NCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjQzMzIsImJ5dGVMZW5ndGgiOjk2NzR9LHsiYnVmZmVyIjowLCJieXRlT2Zmc2V0IjoxNDAwOCwiYnl0ZUxlbmd0aCI6ODY1OH1dLCJidWZmZXJzIjpbeyJieXRlTGVuZ3RoIjoyMjY2OH1dLCJpbWFnZXMiOlt7ImJ1ZmZlclZpZXciOjExLCJtaW1lVHlwZSI6ImltYWdlL3BuZyJ9LHsiYnVmZmVyVmlldyI6MTIsIm1pbWVUeXBlIjoiaW1hZ2UvcG5nIn1dLCJtYXRlcmlhbHMiOlt7ImRvdWJsZVNpZGVkIjp0cnVlLCJuYW1lIjoiTGFiZWxfTWF0IiwicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNv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AAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAP7H/fzIRGt01AACAP7H/fzIRGt01AACAP7H/fzIRGt01AACAP7H/fzIRGt01AQAAswIAALMAAIA/AQAAswIAALMAAIA/AQAAswIAALMAAIA/AQAAswIAALMAAIA/AACAvwAAELTXja61AACAvwAAELTXja61AACAvwAAELTXja61AACAvwAAELTXja61AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAwBoBAAAzAACAPwAAgD8AAMAaAQAAMwAAgD8AAIA/AADAGgEAADMAAIA/AACAPwAAwBoBAAAzAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAmQAAQDMAAIA/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");function vi(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}class Si{constructor(){vi(this,"getProduct",void 0),vi(this,"getCommandContext",void 0),vi(this,"getAllLayoutData",void 0),vi(this,"getMetadata",void 0),vi(this,"getWorkflowMetadata",void 0),vi(this,"getStepStorage",void 0),vi(this,"getUpdatesPending",void 0)}getServer(){return Ni}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}getVariationRecords(){return[]}async reset(){}updateStateWithServer(A){}addVariationRecord(A){return{recordNumber:0,transactionId:"",values:[]}}getCurrentVariationRecord(){}removeVariationRecord(A){return[]}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(A){}addPoller(A){}addConfirmCallback(A){}addCurrentVariationCallback(A){}addEditedCallback(A){}addElementsCallback(A){}addInformationResultCallback(A){}addInitCallback(A){}addMakingAdjustmentsCallback(A){}addMandatoryCallback(A){}addMetadataCallback(A){}addSelectionCallback(A){}addStepSpecificStorageCallback(A,t){}addStorageCallback(A){}addVariationRecordsCallback(A){}getCommandDispatcher(){return A=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getProfanities(){return[]}getRegionElements(A){return[]}getSerializedStep(A,t){}getStepSpecificServices(A){}getTransaction(){return{id:""}}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(A){}markUpdateCompleted(A){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}setCurrentAdjustingStepId(A){}setCurrentVariationRecord(A){}setEditedStatus(A,t){}setInformationResults(A){}setMandatoryFulfilled(A,t){}async setSelectionsAndElements(A,t,e){}setVariationRecords(A){}toggleDesignConfirmed(){}updateMetadata(A,t){}async updateStorage(A,t){}}function Pi(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}let Ri;var Ui;(Ui=Ri||(Ri={})).SelectFrame="SelectFrame",Ui.SelectImage="SelectImage",Ui.Position="Position";class Hi extends ei{constructor(A,t){super(A,t),Pi(this,"frameService",this.manager.getStepSpecificServices(this.getId())?.frameService)}selectVariant(A){const t=this.manager.getRegionElements(this.step.stepName);return Hn.selectVariant(this.step,A,t,this.manager,(A=>this.setUpdateState(A)))}onFrameDataChanged(A){this.frameService&&this.frameService.onFrameDataChanged((t=>{t&&A(t)}))}selectImage(A){return Hn.selectImage(this.step,A,this.manager)}getImageData(){if(this.frameService)return this.frameService.getImageData()}getCurrentFrameStep(A,t,e,n){return n&&n.length>1&&void 0===A?Ri.SelectFrame:t||e||this.getImageData()?Ri.Position:Ri.SelectImage}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasVaryingUpload(){return this.step.data.varyUpload}hasVaryingSelection(){return this.step.data.varySelection}}const Gi=A=>{const t=JA(null),[e,n]=PA(void 0),[i,a]=PA(void 0),{addEvent:s,removeEvent:r,updateEvent:o,eventCache:c}=Yt(),[g,B]=PA(!1),[w,l]=PA(!1),{state:E,uiDispatcher:d}=bt(),Q=RA((A=>{const t=A;d(new Gt({zoom:Math.max(.1,Math.min(t,E.maxZoom))}))}),[d,E.maxZoom]),C=RA((A=>{r(A),1===c.length&&n(void 0),2===c.length&&a(void 0);"touch"===A.pointerType&&c.length>1&&c.length-1==1&&(l(!1),B(!1))}),[t,c]),h=RA((A=>{s(A);"touch"===A.pointerType&&1===c.length&&(d(new Gt({selectedElement:void 0})),l(!0),B(!0))}),[t,w,c]),I=RA((A=>{o(A),A.isPrimary&&n({x:A.screenX,y:A.screenY});const t=1===c.length&&"touch"!==c[0].pointerType,s=2===c.length&&"touch"===c[0].pointerType;if(g&&s){const[A,t]=c,e=Math.abs(A.clientX-t.clientX),n=i;n&&Q(E.zoom-.0055*(n-e)),a(e)}if(w&&(t||s)&&A.isPrimary){const t=(e?.x||A.screenX)-A.screenX,n=(e?.y||A.screenY)-A.screenY;d(new Gt({selectedElement:void 0,xTranslation:E.xTranslation-t/E.zoom,yTranslation:E.yTranslation-n/E.zoom}))}}),[E.xTranslation,E.yTranslation,E.zoom,w,g,Q,c,e,i]),D=RA((A=>{g&&Q(E.zoom-.035*Math.sign(A.deltaY))}),[E,g]);HA((()=>{if(!t.current||0===c.length)return;const A=c[0].pointerId,e=t.current.hasPointerCapture(A);w&&!e&&t.current.setPointerCapture(A),!w&&e&&t.current.releasePointerCapture(A)}),[t,w,c]),Ce([" "],(()=>{l(!0),d(new Gt({selectedElement:void 0}))}),(()=>l(!1))),Ce(["Control"],(()=>B(!0)),(()=>B(!1)));const u=bA((()=>({cursor:w&&0===c.length?"grab":w&&1===c.length?"grabbing":g?"zoom-in":void 0,width:"100%",height:"100%",overflow:"clip"})),[w,g,c]);return kA("div",{ref:t,className:"transform-wrapper",onWheel:D,onPointerDown:h,onPointerUp:C,onPointerCancel:C,onPointerLeave:C,onPointerMove:I,style:u,children:A.children})};export{yi as SpiffCommerceClient,A as CommandContext,Et as spiffCoreConfiguration,ue as PromiseQueue,De as QueueablePromise,Si as MockWorkflowManager,qn as InformationMessageType,ei as StepHandle,li as TextStepHandle,Hi as FrameStepHandle,si as BulkStepHandle,wi as ShapeStepHandle,ri as IllustrationStepHandle,oi as MaterialStepHandle,ci as ModelStepHandle,gi as PictureStepHandle,Bi as QuestionStepHandle,_A as OptionNotFoundError,At as LayoutNotFoundError,tt as AssetNotFoundError,et as ResourceNotFoundError,nt as MisconfigurationError,st as ParseError,at as UnhandledBehaviorError,ft as assetService,mi as designService,Ii as createDesign,Ft as optionService,It as server,wt as persistenceService,Dt as graphQlManager,jn as toast,Yn as FrameService,Hn as frameStepService,Jn as modelStepService,bn as materialStepService,zn as shapeStepService,Ln as questionStepService,Rn as digitalContentStepService,kn as moduleStepService,On as pictureStepService,Wn as textStepService,Gn as illustrationStepService,Jt as ProductCameraRig,Ri as FrameStep,t as AssetType,e as BringForwardCommand,n as BringToFrontCommand,i as BringToBackCommand,a as CanvasCommand,s as CreateElementCommand,r as CreateLayoutCommand,o as DeleteElementCommand,c as FontAlignmentCommand,g as FontColorCommand,B as FontSizeCommand,w as FontSourceCommand,l as GroupCommand,E as LayoutElementFactory,d as LayoutElementType,Q as MoveCommand,C as ResizeCommand,h as RotateCommand,I as SendBackwardsCommand,D as StepAspectType,u as StepType,m as TextChangeCommand,p as UnitOfMeasurement,f as dataUrlFromExternalUrl,M as findElement,F as frameDataCache,y as generate,Y as getAxisAlignedBoundingBox,N as generateSVGWithUnknownColors,x as getAttributesFromArrayBuffer,v as rehydrateSerializedLayout,S as getFrameData,P as getSvgElement,R as loadFontFromDataUrl,U as loadFontFromExternalUrl,H as determineCorrectFontSizeAndLines,G as patternImageDataCache,$e as generateCommands,b as registerJSDOM,Ee as minZoom,cn as AdvancedEditor,Gi as TransformWrapper,on as EditorCore,Nt as useLayouts,bt as useEditorState,Qe as useEditorInteraction,Ce as useShortcutCombination,Rt as commandReducer,Pt as getDefaultState,yt as CommandContextContext,Ht as AdvancedEditorStateProvider,Ut as AdvancedEditorContext,Gt as UICommand,vt as EditorSubMenu,zt as ElementEventType,jt as KeyEvent,hn as gatherVaryingStepAspects};
|
|
238
|
+
`;class si extends ei{constructor(A,t){super(A,t),ni(this,"transaction",this.manager.getTransaction())}selectVariant(){throw new Error("Bulk step does not support variants.")}async setDesignName(A){await Dt.getShadowGraphqlClient().mutate({mutation:ai,variables:{transactionId:this.manager.getTransaction().id,designName:A}});const t=this.manager.getTransaction();this.manager.setTransaction({...t,designName:A})}addVariationRecord(){const A=this.manager.addVariationRecord({transactionId:this.transaction.id,values:[]});return this.manager.setCurrentVariationRecord(A),A}updateBulkIsConnected(A){this.manager.updateStorage(this.getId(),{bulkIsConnected:A})}openBulkSourceUrl(){window.open(this.transaction.bulkSourceUrl,"_blank")}async sendGoogleSheetLinkToEmail(A){await Dt.getShadowGraphqlClient().mutate({mutation:ii,variables:{id:this.transaction.id,bulkEmailAddress:A}}),this.openBulkSourceUrl()}deleteVariationRecord(A){this.manager.removeVariationRecord(A)}getAspects(){return this.step.data.aspects}}class ri extends ei{constructor(A,t){super(A,t)}async selectVariant(A){if(await this.getCurrentVariant()!==A)return Gn.selectVariant(this.step,A,this.manager.getRegionElements(this.step.stepName)||[],(A=>this.setUpdateState(A)),this.manager)}getColors(){const A=this.manager.getRegionElements(this.step.stepName)||[];if(0!==A.length)try{return M(A[0].id,this.manager.getAllLayoutData()).colors}catch(A){}}setColor(A,t){const e=new Map;return e.set(A,t),Gn.changeColors(this.step,this.manager.getRegionElements(this.step.stepName),this.manager,(()=>this.manager.getCommandContext().getAllLayouts()),e)}async getColorOption(){const A=this.step.data.colourOptionId;if(!A)return;const t=await Ft.getOption(It,A);return t||void 0}getAvailableColors(){return this.step.data.colourPickerEnabled?Gn.availableColors(this.step,this.manager):Promise.resolve([])}hasVaryingSelection(){return this.step.data.varySelection}hasVaryingColors(){return this.step.data.varyColors}isColorPickerEnabled(){return this.step.data.colourPickerEnabled}}class oi extends ei{constructor(A,t){super(A,t)}selectVariant(A){return bn.selectVariant(this.step,A,this.manager,(A=>this.setUpdateState(A)))}}class ci extends ei{constructor(A,t){super(A,t)}selectVariant(A){return Jn.selectVariant(this.step,A,this.manager,(A=>this.setUpdateState(A)))}}class gi extends ei{constructor(A,t){super(A,t)}selectVariant(A){return On.selectVariant(this.step,A,this.manager,(A=>this.setUpdateState(A)))}}class Bi extends ei{constructor(A,t){super(A,t)}async selectVariant(A){if(!A.id)throw new Error("Unable to select variant with a null ID");await Ln.selectVariant(this.step,A.id,this.manager)}getDisplayType(){return this.step.option?.data.displayType}}class wi extends ei{constructor(A,t){super(A,t)}selectVariant(A){return Promise.resolve()}setColor(A){return zn.selectVariant(this.step,A,this.manager.getRegionElements(this.step.stepName)||[],this.manager)}getColors(){return zn.availableColours(this.step,this.manager)}}class li extends ei{constructor(A,t){super(A,t)}async selectVariant(A){Wn.selectVariant(this.step,A,this.manager,(A=>{if(A)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:"An issue has occured with test",messageType:qn.Error,stepID:this.step.stepName}]);else{const A=this.manager.getInformationResults().filter((A=>A.stepID!==this.step.stepName));this.manager.setInformationResults(A)}}),(A=>{}))}getAvailableColors(){return this.step.data.colourPickerEnabled?Wn.availableColors(this.step,this.manager):Promise.resolve([])}async setFill(A){const t=this.manager.getRegionElements(this.step.stepName);await Wn.changeFill(this.step,A,t,this.manager)}getFill(){return this.manager.getStepStorage(this.step.stepName)?.color||"#000000"}setFullTextCustomization(A){const t=this.manager.getStepStorage(this.step.stepName)?.inputText||"",e=void 0!==this.step.data.replaceableText?this.step.data.replaceableText.replace("{{}}",t):t,n=A?e:this.step.data.defaultText;this.manager.updateStorage(this.step.stepName,{customiseAllText:A,text:n,defaultCleared:!1});return this.setText(n)}setText(A){const t={input:A},e=Wn.findLayoutElements(this.manager,this.step),n=Wn.filterUnsupportedCharacters(A,e[0]?.fontData);!!this.step.data&&!!this.step.data.maxLength&&n.length>this.step.data.maxLength||(t.input=n);const i=e.length<=0,a=i?{inputText:n,text:n}:{inputText:n};if(this.manager.updateStorage(this.step.stepName,a),this.manager.updateMetadata(this.step.stepName,{text:n}),i)return t;const{command:s,errors:r,helperText:o}=Wn.updateInputText(n,e,this.step,this.manager);s&&this.manager.getCommandDispatcher()(s);const c=this.manager.getInformationResults(),g=r[0]?.localizationKey;if(g)this.manager.setInformationResults([...c,{message:`${g} - ${this.step.stepTitle}`,messageType:qn.Error,stepID:this.step.stepName}]);else{const A=c.filter((A=>A.stepID!==this.step.stepName));this.manager.setInformationResults(A)}return t.helperText=g||o,t.errorText=g,t}getText(){const A=this.step.data.defaultText;return this.manager.getStepStorage(this.step.stepName)?.text||A||""}isReplaceable(){return this.step.data.userCanReplaceText}clearDefaultTextIfNecessary(){if(!this.manager.getStepStorage(this.step.stepName)?.defaultCleared&&this.step.data.deleteDefaultOnFocus){const A=this.setText("");return this.manager.updateStorage(this.step.stepName,{defaultCleared:!0,inputText:""}),A}}hasVaryingText(){return this.step.data.varyText}hasVaryingColor(){return this.step.data.varyColor}hasVaryingSelection(){return this.step.data.varySelection}hasColorPicker(){return this.step.data.colourPickerEnabled}getRegions(){return this.step.data.regions}}class Ei{static get(A,t){switch(t.type){case u.Question:return new Bi(A,t);case u.Text:return new li(A,t);case u.Illustration:return new ri(A,t);case u.Picture:return new gi(A,t);case u.Shape:return new wi(A,t);case u.Material:return new oi(A,t);case u.Model:return new ci(A,t);case u.Frame:return new Hi(A,t);case u.Bulk:return new si(A,t);default:throw new at(`Step type ${t.type} not yet supported in Core SDK`)}}}function di(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const Qi=(A,t,e)=>{const n={};return t.steps.forEach((t=>{Object.assign(n,(t=>{const n={};if("Frame"===t.type){const i=A[t.stepName],a=t.data;if(!i||a.hideImageInCart&&e)return n;n[`${t.stepTitle} image`]=i.image}if("Illustration"===t.type){const i=A[t.stepName],a=t.data;if(!i||a.hideColorsInCart&&e||!i.colors)return n;if(i.colors.length>0){const A=i.colors.join(", ").toUpperCase();n[`${t.stepTitle} colors`]=A}}if("Module"===t.type){const i=A[t.stepName],a=t.data;if(!i||a.hideTextInCart&&e)return n;n[`${t.stepTitle} text`]=i.text}if("Text"===t.type){const i=A[t.stepName];if(!i)return n;const a=t.data;a.hideTextInCart&&e||(n[`${t.stepTitle} text`]=i.text),!i.color||a.hideColorInCart&&e||(n[`${t.stepTitle} color`]=i.color)}return n})(t))})),n},Ci=(A,t,e,n,i,a,s,r,o)=>{const c={event:"onComplete",lineItemImageUrl:s?s.href:"",transactionId:A.id,designProductVariantId:A.externalDesignProductVariantId,designProductId:A.externalDesignProductId,baseCost:e,weight:t.weight,optionsCost:n,exportedData:a,workflowViewerLink:A.workflowViewerLink||"",workflowViewerReadOnlyLink:A.workflowViewerReadOnlyLink||""};return i&&(c.metadata=i),r&&(c.selectedVariants=r),o&&(c.sku=o),c},hi=async(A,t,e,n,i,a,s)=>{const r=(A.product?.basePrice||0)*(A.variationsCount||0),o=A.priceModifierTotal||0,c=((A,t,e,n)=>{const i={};let a;if(e){a=Qi(e,t,!1);for(const A of Object.keys(a))i[A]={value:a[A],priceModifier:0}}else if(n){a=n;for(const A of Object.keys(a))i[A]={value:a[A],priceModifier:0}}for(const e of Object.keys(A)){const n=A[e],a=t.steps.find((A=>A.stepTitle===e));if(1===n.length)i[`${a?.stepTitle} selection`]={value:n[0].name,priceModifier:n[0].priceModifier};else if(n.length>1)for(let A=0;A<n.length;A++)i[`${a?.stepTitle} selection ${A+1}`]={value:n[A].name,priceModifier:n[A].priceModifier}}return i})(n,e,void 0,a);return Ci(A,t,r,o,a,c,s,n,i)},Ii=async(A,t,e,n,i,a,s,r,o,c,g,B,w)=>{o("workflow.steps.finish.finalize.buildingLayouts"),await A.outstandingRequestsPromise();const l=Dt.getShadowGraphqlClient();await l.resetStore();const E=await l.query({query:Cn,variables:{id:a.id},errorPolicy:"all"}),d=E.data?.transactions[0].workflowState;!E.errors&&d||(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(n())),E.errors&&E.errors.forEach((A=>{E.errors&&console.log("Server Error:",A.message)})),await A.updateStateWithServerImmediate(n),console.log("Server state is undefined @ Workflow completion"));const Q=A.getPreviewService(),C=t?.finalizeStepConfig?.lookAtAnimation,h=Q&&100===Q.getSceneInitializationProgress()&&t.showModelOnFinishStep&&!!C,I=w&&Qi(w,t,!0),D=w&&Qi(w,t,!1),u=async A=>{const e={};let n=0;if(Object.keys(s).length>0)for(const i of Object.keys(s)){const a=s[i],r=t.steps.find((A=>A.stepName===i));for(let t=0;t<a.selections.length;++t){const i=a.selections[t];if(r&&(!A||await Ft.getOption(It,r.optionId)&&(await Ft.getOption(It,r.optionId)).data.variants.length>1&&!r.data.hideSelectionInCart&&!r.data.hideSelectionsInCart)){const A=r.stepTitle;e[A]?e[A].push({id:i.id||"",name:i.name,priceModifier:i.priceModifier}):e[A]=[{id:i.id||"",name:i.name,priceModifier:i.priceModifier}]}n+=i.priceModifier}}return[e,n]},[m]=await u(!0),p=Object.fromEntries(Object.keys(m).map((A=>[A,m[A].map((A=>A.id))]))),[f]=await u(!1),M=Object.fromEntries(Object.keys(f).map((A=>[A,f[A].map((A=>A.id))]))),F=await B(h);o("workflow.steps.finish.finalize.creatingDesign"),a.bulk&&await c(g);const y=(await It.execute("createDesign",{designDetails:(()=>{const A={designName:r,layouts:e.map((A=>({index:A.index,panelId:A.panelId}))),workflowId:t.id,productId:i.id,transactionId:a.id,threeDimPreview:h,previewImage:F};return w&&(A.metadata=D),p&&(A.selectedVariants=M),A})()})).body,Y=y.links.find((A=>"image"===A.rel));o("workflow.steps.finish.finalize.updatingTransaction");const N=(await Dt.getShadowGraphqlClient().query({query:Qn,variables:{id:a.id}})).data.transactions[0];return a.bulk?((A,t,e)=>{const n=(A.product?.basePrice||0)*(A.variationsCount||0),i=A.priceModifierTotal||0,a={items:{value:A.variationsCount?`${A.variationsCount}`:"0",priceModifier:0}};return Ci(A,t,n,i,void 0,a,e)})(N,i,Y):await hi(N,i,t,m,y.data.sku,I,Y)};let Di;var ui;(ui=Di||(Di={})).Local="Local",ui.Remote="Remote";const mi=new class{constructor(){di(this,"localPersistenceKey","designTransactions"),di(this,"storageMethod",Di.Local),di(this,"designSavedListeners",[])}attachSaveListener(A){this.designSavedListeners.push(A)}detachSaveListener(A){this.designSavedListeners=this.designSavedListeners.filter((t=>t!==A))}async getSavedDesigns(){return await this.getDesigns()}async getSavedDesignByTransaction(A){return(await this.getSavedDesigns()).find((t=>t.transactionId===A))}async addDesign(A){const t=(await this.getSavedDesigns()).filter((t=>t.transactionId!==A.transactionId));t.unshift(A),await this.setDesigns(t),this.notifyDesignSaved(A)}async removeDesign(A){const t=await this.getSavedDesigns();await this.setDesigns(t.filter((t=>t.transactionId!==A)))}async setDesigns(A){if(this.storageMethod!==Di.Local)throw new at("Unexpected storage method requested");wt.set(this.localPersistenceKey,JSON.stringify(A))}async getDesigns(){if(this.storageMethod===Di.Local){const A=wt.get(this.localPersistenceKey);return A?JSON.parse(A):[]}throw new at("Unexpected storage method requested")}notifyDesignSaved(A){this.designSavedListeners.forEach((t=>t(A)))}};function pi(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}class fi{constructor(t,e,n){if(pi(this,"client",void 0),pi(this,"commandContext",void 0),pi(this,"workflowManager",void 0),pi(this,"isReadOnly",void 0),pi(this,"server",void 0),pi(this,"renderableScenes",[]),pi(this,"renderableSceneCallbacks",[]),pi(this,"debouncedSavedDesignUpdate",WA((async()=>{await mi.getSavedDesignByTransaction(this.getWorkflowManager().getTransaction().id)&&this.save()}),2500)),!e.workflow)throw new Error("No Workflow ID provided.");this.client=t,this.server=n;const i=e.layouts;this.commandContext=new A,this.commandContext.initialize(i,e.reloadedState),this.isReadOnly=!!e.transaction.lineItem?.id||!wt.getMap("transactionOwnerIds")?.get(e.transaction.id)||!!e.readOnly,this.workflowManager=new Ai(e.workflow,e.product.profanities?.map((A=>A.word))||[],i,this.commandContext,(A=>{try{this.debouncedSavedDesignUpdate()}catch{console.error("Failed to update saved design details.")}return e.stateMutationFunc(A)}),e.transaction,e.product,this.server,e.previewService,e.renderableContextService,e.reloadedState,e.readOnly),this.workflowManager.addSelectionCallback((A=>{const t=A.traversableScenes.map((A=>{const t=A.renderableSteps.map((A=>A.stepName));return{id:A.name,title:A.title,renderableSteps:t}}));this.renderableScenes=t,this.renderableSceneCallbacks.forEach((A=>A(t)))}))}getClient(){return this.client}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.commandContext}getWorkflowManager(){return this.workflowManager}async updateVariationRecords(A){await Dt.getShadowGraphqlClient().mutate({mutation:dn,variables:{transactionId:this.workflowManager.getTransaction().id,updates:A.map((A=>({recordNumber:A.recordNumber,values:A.values.map((A=>({aspect:A.aspect,stepName:A.stepName,value:A.value})))})))}})}async createPreviewImage(A,t){const e=this.workflowManager.getWorkflow()?.finalizeStepConfig?.lookAtAnimation;if(A){if(!e)throw new Error("Failed to generate cart preview image!");return await(this.workflowManager.getPreviewService()?.renderSceneScreenshot(512,e))||""}const n=document.createElement("canvas");let i=2048;t&&t<=2048&&(i=t),n.width=i,n.height=i;const a=this.commandContext.getAllLayouts()[this.workflowManager.getWorkflow().defaultPreviewPanelIndex||0],s=a.layoutState.layout.previewRegion?{x:a.layoutState.layout.previewRegion.left,y:a.layoutState.layout.previewRegion.top,width:a.layoutState.layout.previewRegion.width,height:a.layoutState.layout.previewRegion.height}:{x:0,y:0,width:a.layoutState.layout.width,height:a.layoutState.layout.height},r=this.commandContext.getLayoutById(a.layoutState.layout.id),o=n.getContext("2d");if(!o)throw new ot("Failed to obtain 2D context for preview image creation");const c=P(r.layoutState.layout,r.layoutState.elements,{renderingConfiguration:{purpose:X.Print,region:{left:s.x,top:s.y,width:s.width,height:s.height}}}),g=KA.renderToStaticMarkup(c),B=await jA.from(o,g,{anonymousCrossOrigin:!0,ignoreDimensions:!1});await B.render();const w=await(async A=>new Promise(((t,e)=>{try{A.toBlob((A=>{if(A){const e=URL.createObjectURL(A);t(e)}}))}catch(A){e(A)}})))(n);return n.toDataURL(w)}getStepById(A){const t=this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepName===A));if(t&&this.stepHasHandle(t))return Ei.get(this.getWorkflowManager(),t)}getBulkStep(){if(this.getWorkflowManager().getTransaction().bulk){const A={type:u.Bulk,stepName:"Bulk",stepTitle:"workflow.steps.bulk.title",helpText:"help:/partner/add-ons/bulk-ordering",data:{aspects:hn(this.getWorkflowManager().getWorkflow())},conditions:[]};return Ei.get(this.getWorkflowManager(),A)}}getStepByName(A){const t=this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepTitle===A));if(t&&this.stepHasHandle(t))return Ei.get(this.getWorkflowManager(),t)}getStepsByType(A){return this.getWorkflowManager().getWorkflow().steps.filter((t=>t.type===A)).map((A=>Ei.get(this.getWorkflowManager(),A)))}getStepsByScene(A){if(!this.getWorkflowManager().getWorkflow().stepGroups.find((t=>t.name===A.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 A.stepNames.map((A=>this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepName===A)))).filter((A=>this.stepHasHandle(A))).map((A=>Ei.get(this.getWorkflowManager(),A)))}async attachCustomerDetails(A){await Dt.getShadowGraphqlClient().mutate({mutation:ii,variables:{id:this.getWorkflowManager().getTransaction().id,bulkEmailAddress:A.email}}),this.getWorkflowManager().setTransactionCustomerDetails(A)}attachRenderableSceneListener(A){this.renderableSceneCallbacks.push(A),A(this.renderableScenes)}detachRenderableSceneListener(A){this.renderableSceneCallbacks=this.renderableSceneCallbacks.filter((t=>t!==A))}async save(A){if(!this.getCommandContext().getState())throw new at("State undefined!");const t={title:await(async()=>{if(A)return A;const t=this.getWorkflowManager().getTransaction().id,e=(await mi.getSavedDesigns()).find((A=>A.transactionId===t))?.title;return e||"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 mi.addDesign(t),t}async copy(){const A=TA(this.getCommandContext().getState());if(!A)throw new at("Internal state is undefined! Cannot copy experience!");const t=JSON.stringify(A.transaction),e=this.getWorkflowManager().getWorkflow(),n=new yi({}),i=this.getWorkflowManager().getTransaction().integrationProduct?.id;if(!i)throw new at("Integration product id is undefined!");await n.initFromIntegrationProduct(i);return await n.getWorkflowExperience(e.id,t,void 0,this.server)}async onDesignFinished(A,t,e,n){return Ii(this.workflowManager,this.workflowManager.getWorkflow(),this.workflowManager.getLayouts(),(()=>this.commandContext.getState()),A,this.workflowManager.getTransaction(),e,this.workflowManager.getWorkflow().name,t,(A=>this.updateVariationRecords(A)),this.workflowManager.getVariationRecords(),(A=>this.createPreviewImage(A)),n)}stepHasHandle(A){return A.type!==u.SilentIllustration&&A.type!==u.ProductOverlay}}function Mi(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const Fi=(A,t)=>{const e=A.workflowState,n=e?JSON.parse(e):void 0;return n?Object.values(n.layouts).map((A=>A.layout)):t.panels.sort(((A,t)=>A.index-t.index)).map((A=>({id:y(),panelId:A.name,name:A.name,index:A.index,createdAt:new Date,updatedAt:new Date,transparentBackground:A.transparentBackground,height:A.height,width:A.width,previewRegion:A.previewRegion,useEditableArea:A.useEditableArea,editableArea:A.editableArea})))};class yi{constructor(A){Mi(this,"options",void 0),Mi(this,"initialized",void 0),Mi(this,"experienceOptions",void 0),Mi(this,"updateTransactionState",(async A=>{try{return Dt.getShadowGraphqlClient().mutate({...A,mutation:ln})}catch(A){throw console.error(A),new rt("Critical - Unable to synchronize workflow state with server.")}})),this.initialized=!1,this.options=A}getAssetManager(){return ft}async initFromIntegrationProduct(A){if(""===A)throw new rt("No integration product ID provided.");this.options.useUncachedEndpoints&&It.setUncachedOperations(["getAssetByKeyV2","getWorkflowV2","getMaterialV2","getOptionV2"]);const t=Dt.getShadowGraphqlClient();await t.resetStore();const e=await t.mutate({mutation:gn,variables:{integrationProductId:A,bulk:this.options.bulk||!1},errorPolicy:"all"});if(!e.data)throw new rt("Failed to create transaction!");const n=(await t.mutate({mutation:Bn,variables:{id:e.data.transactionCreate.id},errorPolicy:"all"})).data?.transactionClaim;if(!n)throw new rt("Failed to create transaction.");if(!e.data.transactionCreate.product)throw new rt("Failed to create transaction, product not available.");const i=wt.getMap("transactionOwnerIds")||new Map;i.set(n.id,n.transactionOwnerId),Ct(n.transactionOwnerId||""),wt.setMap("transactionOwnerIds",i),this.experienceOptions={product:e.data.transactionCreate.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState},this.initialized=!0}async initFromTransaction(A,t=!1){if(""===A)throw new rt("No transaction ID provided.");const e=Dt.getShadowGraphqlClient();await e.resetStore();if(t)return await(async()=>{console.log("Readonly Mode");const n=(await e.query({query:wn,variables:{id:A},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new rt("Failed to read transaction.");if(!n.product)throw new rt("Failed to load transaction, product not available.");this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:async()=>{throw new at("State mutation is forbidden in read only mode!")},readOnly:t},this.initialized=!0})();const n=wt.getMap("transactionOwnerIds")||new Map,i=n.get(A);if(i){Ct(i);const n=(await e.query({query:wn,variables:{id:A},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new rt("Failed to read transaction.");if(!n.product)throw new rt("Failed to load transaction, product not available.");return this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:t},void(this.initialized=!0)}try{const i=(await e.mutate({mutation:Bn,variables:{id:A},errorPolicy:"all"})).data?.transactionClaim;if(!i)throw new rt("Failed to read transaction.");if(!i.product)throw new rt("Failed to load transaction, product not available.");i.transactionOwnerId&&(n.set(i.id,i.transactionOwnerId),Ct(i.transactionOwnerId),wt.setMap("transactionOwnerIds",n)),this.experienceOptions={product:i.product,transaction:i,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:t},this.initialized=!0}catch{throw new rt("Attempted to access a transaction that isn't available.")}}async getWorkflowExperience(A,t,e,n){if(!this.initialized||!this.experienceOptions)throw new rt("Cannot launch experience: Not initialized.");const i=async A=>{for(const t in A.layouts){const e=A.layouts[t].elements.filter((A=>A.type===d.Illustration));for(let A=0;A<e.length;++A){const t=e[A];t.src&&t.svg&&(t.cachedObjectURL=await EA(t.svg))}const n=A.layouts[t].elements.filter((A=>A.type===d.Textbox));for(let A=0;A<n.length;++A){const t=n[A];t.fontData?.assetUrl&&U(t.fontData.assetUrl)}}},a=n||It;if(this.experienceOptions.transaction.workflowId){const A=(await a.execute("getWorkflowV2",{workflowSlug:this.experienceOptions.transaction.workflowId})).body.data;if(this.experienceOptions.workflow=A,this.experienceOptions.transaction.workflowState){const A=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(A.layouts).map((A=>A.layout)),await v(A),await i(A),this.experienceOptions.reloadedState=A}this.experienceOptions.previewService=e&&e(A),this.experienceOptions.renderableContextService=new An(this.experienceOptions.layouts,a),this.experienceOptions.product?.modelUrl&&this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService);const t=new fi(this,this.experienceOptions,a);return await t.getWorkflowManager().getInitializationPromise(),t}if(A){const n=(await a.execute("getWorkflowV2",{workflowSlug:A})).body.data;if(this.experienceOptions.workflow=n,await Dt.getShadowGraphqlClient().mutate({mutation:En,variables:{workflowId:A,id:this.experienceOptions.transaction.id}}),t){const A=JSON.parse(t);this.experienceOptions.layouts=Object.values(A.layouts).map((A=>A.layout)),await v(A),await i(A),this.experienceOptions.reloadedState=A}else this.experienceOptions.layouts=Fi(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=e&&e(n),this.experienceOptions.renderableContextService=new An(this.experienceOptions.layouts,a),this.experienceOptions.product?.modelUrl&&this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService);const s=new fi(this,this.experienceOptions,a);return await s.getWorkflowManager().getInitializationPromise(),s}throw new rt("No workflow ID provided.")}getPreviewService(){return this.experienceOptions?.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new rt("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new rt("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}}function Yi(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const Ni={setUncachedOperations:()=>{},execute:async()=>({body:{},headers:{"content-type":""}})};class xi{static getFrameStep(A){return{type:u.Frame,stepTitle:"My frame Step",stepName:"My Step Name",conditions:[],option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"my-new-variant",priceModifier:1,asset:{data:{key:"1",createdAt:0,licenseId:"",mimeType:"",ownerId:"",price:0,public:!0,type:t.Frame,objectVersions:[],tags:[]},links:[{href:xi.aFrame,rel:"cdn"}]}},{id:"2",name:"my-new-variant-2",priceModifier:1,asset:{data:{key:"2",createdAt:0,licenseId:"",mimeType:"",ownerId:"",price:0,public:!0,type:t.Frame,objectVersions:[],tags:[]},links:[{href:xi.bFrame,rel:"cdn"}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,layer:0,layerIndex:0,rotation:0,panelId:"p-123",immutable:!1,adjustmentBoundary:{x:0,y:0,height:0,width:0}}],...A}}}static getBulkStep(){return{type:u.Bulk,stepTitle:"Bulk",stepName:"bulk-step",data:{aspects:[]}}}static getQuestionStep(A,t){return{type:u.Question,stepTitle:"question-step",stepName:A||"question-step",conditions:t,option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"my-variant",priceModifier:1},{id:"2",name:"my-variant2",priceModifier:1}]},links:[]},data:{}}}static getMaterialStep(A,t){return{type:u.Material,stepTitle:"My Material Step",stepName:A||"material-step",conditions:t,option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"my-variant",priceModifier:1,material:{data:{id:"1",name:"mat-1",clearCoat:mA.None,createdAt:(new Date).toISOString(),updatedAt:(new Date).toISOString(),albedoMapKey:xi.redRaster},links:[]}},{id:"2",name:"my-variant2",priceModifier:1,material:{data:{id:"2",name:"mat-2",clearCoat:mA.None,createdAt:(new Date).toISOString(),updatedAt:(new Date).toISOString(),albedoMapKey:xi.blueRaster},links:[]}}]},links:[]},data:{targetMaterials:["panel"]}}}static getTextStep(A){return{type:u.Text,stepTitle:"s-1",stepName:"s-1",option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"font/ttf",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Font,tags:[]},links:[{rel:"cdn",href:xi.minimalFont}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],defaultText:"",font:"",maxLength:100,size:16,textAlign:"center",colour:"#000000",verticalAlign:"top",...A}}}static getIllustrationStep(A){return{type:u.Illustration,stepTitle:"s-1",stepName:"s-1",option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"image/svg+xml",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Illustration,tags:[]},links:[{rel:"cdn",href:xi.blueShape.src}]}},{id:"2",name:"",priceModifier:1,assetKey:"456",asset:{data:{key:"456",createdAt:0,mimeType:"image/svg+xml",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Illustration,tags:[]},links:[{rel:"cdn",href:xi.redShape.src}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],colourPickerEnabled:!1,...A}}}static getPictureStep(A,e){return{type:u.Picture,stepTitle:"s-1",stepName:"s-1",option:{data:{name:"test",defaultVariant:e,variants:[{id:"1",name:"a",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"image/png",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Image,tags:[]},links:[{rel:"cdn",href:xi.blueRaster}]}},{id:"2",name:"b",priceModifier:1,assetKey:"456",asset:{data:{key:"456",createdAt:0,mimeType:"image/png",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Image,tags:[]},links:[{rel:"cdn",href:xi.redRaster}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],...A}}}static getModelStep(A,e){return{type:u.Model,stepTitle:"s-1",stepName:"s-1",optionId:"om-1",option:{data:{id:"om-1",name:"test",defaultVariant:e,variants:[{id:"1",name:"a",priceModifier:1,assetKey:"123",asset:{data:{key:"123",createdAt:0,mimeType:"application/octet-stream",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Model,tags:[]},links:[{rel:"cdn",href:xi.glbBox}]}},{id:"2",name:"b",priceModifier:1,assetKey:"456",asset:{data:{key:"456",createdAt:0,mimeType:"application/octet-stream",ownerId:"",price:0,licenseId:"",public:!1,objectVersions:[],type:t.Model,tags:[]},links:[{rel:"cdn",href:xi.glbVertexTest}]}}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}],...A}}}static getShapeStep(A,t=[]){return{type:u.Shape,stepTitle:"s-1",stepName:A,conditions:t,option:{data:{name:"test",defaultVariant:"1",variants:[{id:"1",name:"a",priceModifier:1,color:"#FFFFFF"},{id:"2",name:"b",priceModifier:1,color:"#000000"}]},links:[]},data:{regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}]}}}static getSilentIllustrationStep(A,t=[]){return{type:u.SilentIllustration,stepTitle:"s-1",stepName:A,conditions:t,data:{assetKey:xi.redRaster,regions:[{top:0,left:0,width:100,height:100,rotation:0,panelId:"p-123"}]}}}}Yi(xi,"minimalFont","data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTZfNAT0AAAcoAAAAHEdERUYAJQAAAAAHEAAAABhPUy8yaO1iTwAAAVgAAABgY21hcAA1CxkAAAHQAAABUmdhc3D//wADAAAHCAAAAAhnbHlmCT9XBwAAAzQAAABoaGVhZB35qu0AAADcAAAANmhoZWEEIACkAAABFAAAACRobXR4BkP/1QAAAbgAAAAYbG9jYQBgAFAAAAMkAAAADm1heHAASgALAAABOAAAACBuYW1llHqhugAAA5wAAAM5cG9zdAAwACUAAAbYAAAALgABAAAAAQAAIJ9E6V8PPPUACwPoAAAAAN68s6YAAAAA3ryzpv+tAAABtQK8AAAACAACAAAAAAAAAAEAAAK8/tQAAAHJ/60AAAG1AAEAAAAAAAAAAAAAAAAAAAAGAAEAAAAGAAgAAgAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAwE9AfQABQAAAooCuwAAAIwCigK7AAAB3wAxAQIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAWFhYWABAACAAQQK8/tQAAAK8AAAAAAABAAAAAAFeArwAAAAgAAEByQAUAAAAAAFNAAABTQAAAVQAFACM/60AAAADAAAAAwAAABwAAQAAAAAATAADAAEAAAAcAAQAMAAAAAgACAACAAAAAAAgAEH//wAAAAAAIABA//8AAP/j/8QAAQAAAAAAAAAAAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAWABYAFgAkADQAAAACABQAAAG1AqMAAwAHAAATIREhNyERIRQBof5fMAFA/sACo/1dMAJDAAAAAAEAFAAAAUACvAADAAATIREhFAEs/tQCvP1EAAAC/60AAAB4ArwAAAAEAAADEzMRI1NnZGQBPgF+/UQAAAAAIgGeAAEAAAAAAAAAAQAEAAEAAAAAAAEADAAgAAEAAAAAAAIABwA9AAEAAAAAAAMAFgBzAAEAAAAAAAQAFAC0AAEAAAAAAAUADQDlAAEAAAAAAAYAEgEZAAEAAAAAAAcAAQEwAAEAAAAAAAgAAQE2AAEAAAAAAAkAAQE8AAEAAAAAAAoAAQFCAAEAAAAAAAsAAQFIAAEAAAAAAAwAAQFOAAEAAAAAAA0AAQFUAAEAAAAAAA4AAQFaAAEAAAAAABAADAF2AAEAAAAAABEABwGTAAMAAQQJAAAAAgAAAAMAAQQJAAEAGAAGAAMAAQQJAAIADgAtAAMAAQQJAAMALABFAAMAAQQJAAQAKACKAAMAAQQJAAUAGgDJAAMAAQQJAAYAJADzAAMAAQQJAAcAAgEsAAMAAQQJAAgAAgEyAAMAAQQJAAkAAgE4AAMAAQQJAAoAAgE+AAMAAQQJAAsAAgFEAAMAAQQJAAwAAgFKAAMAAQQJAA0AAgFQAAMAAQQJAA4AAgFWAAMAAQQJABAAGAFcAAMAAQQJABEADgGDACAAACAAAE0AaQBuAGkAbQBhAGwAIABGAG8AbgB0AABNaW5pbWFsIEZvbnQAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAACAAOgBNAGkAbgBpAG0AYQBsACAARgBvAG4AdAAgAFIAZQBnAHUAbABhAHIAACA6TWluaW1hbCBGb250IFJlZ3VsYXIAAE0AaQBuAGkAbQBhAGwAIABGAG8AbgB0ACAAUgBlAGcAdQBsAGEAcgAATWluaW1hbCBGb250IFJlZ3VsYXIAAFYAZQByAHMAaQBvAG4AIAAwAC4AMAAwADEAAFZlcnNpb24gMC4wMDEAAE0AaQBuAGkAbQBhAGwARgBvAG4AdABSAGUAZwB1AGwAYQByAABNaW5pbWFsRm9udFJlZ3VsYXIAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAACAAAE0AaQBuAGkAbQBhAGwAIABGAG8AbgB0AABNaW5pbWFsIEZvbnQAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAEAAgADACMAJAAAAAAAAf//AAIAAQAAAAwAAAAQAAAAAgAAAAQAAAACAAAAAAABAAAAANpTmfAAAAAA3ryzpgAAAADevLOm"),Yi(xi,"redShape",{src:"https://assets.spiff.com.au/public/assets/56cf72f5-a98d-487f-9e79-8129030ab99e.svg",text:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><script xmlns=""/><defs><style>.cls-1{fill:#f285b1;}</style></defs><title>Asset 4</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" width="512" height="512"/></g></g></svg>'}),Yi(xi,"blueShape",{src:"https://assets.spiff.com.au/public/assets/6b9c3b7a-a669-41be-8ba2-538588d449e0.svg",text:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><script xmlns=""/><defs><style>.cls-1{fill:#53c6d6;}</style></defs><title>Asset 3</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" width="512" height="512"/></g></g></svg>'}),Yi(xi,"aFrame","https://assets.spiff.com.au/public/assets/5bb3c003-3d30-4c98-9f07-2cfe25fbc4f7.svg"),Yi(xi,"bFrame","https://assets.spiff.com.au/public/assets/25e42f93-3f5d-43b6-9075-29164000bdf5.svg"),Yi(xi,"redRaster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg=="),Yi(xi,"blueRaster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPj/HwADBwIAMCbHYQAAAABJRU5ErkJggg=="),Yi(xi,"glbBox","data:@file/octet-stream;base64,Z2xURgIAAACABgAA3AMAAEpTT057ImFzc2V0Ijp7ImdlbmVyYXRvciI6IkNPTExBREEyR0xURiIsInZlcnNpb24iOiIyLjAifSwic2NlbmUiOjAsInNjZW5lcyI6W3sibm9kZXMiOlswXX1dLCJub2RlcyI6W3siY2hpbGRyZW4iOlsxXSwibWF0cml4IjpbMS4wLDAuMCwwLjAsMC4wLDAuMCwwLjAsLTEuMCwwLjAsMC4wLDEuMCwwLjAsMC4wLDAuMCwwLjAsMC4wLDEuMF19LHsibWVzaCI6MH1dLCJtZXNoZXMiOlt7InByaW1pdGl2ZXMiOlt7ImF0dHJpYnV0ZXMiOnsiTk9STUFMIjoxLCJQT1NJVElPTiI6Mn0sImluZGljZXMiOjAsIm1vZGUiOjQsIm1hdGVyaWFsIjowfV0sIm5hbWUiOiJNZXNoIn1dLCJhY2Nlc3NvcnMiOlt7ImJ1ZmZlclZpZXciOjAsImJ5dGVPZmZzZXQiOjAsImNvbXBvbmVudFR5cGUiOjUxMjMsImNvdW50IjozNiwibWF4IjpbMjNdLCJtaW4iOlswXSwidHlwZSI6IlNDQUxBUiJ9LHsiYnVmZmVyVmlldyI6MSwiYnl0ZU9mZnNldCI6MCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjI0LCJtYXgiOlsxLjAsMS4wLDEuMF0sIm1pbiI6Wy0xLjAsLTEuMCwtMS4wXSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjEsImJ5dGVPZmZzZXQiOjI4OCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjI0LCJtYXgiOlswLjUsMC41LDAuNV0sIm1pbiI6Wy0wLjUsLTAuNSwtMC41XSwidHlwZSI6IlZFQzMifV0sIm1hdGVyaWFscyI6W3sicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNvbG9yRmFjdG9yIjpbMC44MDAwMDAwMTE5MjA5MjksMC4wLDAuMCwxLjBdLCJtZXRhbGxpY0ZhY3RvciI6MC4wfSwibmFtZSI6IlJlZCJ9XSwiYnVmZmVyVmlld3MiOlt7ImJ1ZmZlciI6MCwiYnl0ZU9mZnNldCI6NTc2LCJieXRlTGVuZ3RoIjo3MiwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjAsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZVN0cmlkZSI6MTIsInRhcmdldCI6MzQ5NjJ9XSwiYnVmZmVycyI6W3siYnl0ZUxlbmd0aCI6NjQ4fV19iAIAAEJJTgAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAC/AAAAvwAAAD8AAAA/AAAAvwAAAD8AAAC/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAvwAAAD8AAAC/AAAAvwAAAD8AAAA/AAAAvwAAAL8AAAC/AAAAvwAAAL8AAAA/AAAAPwAAAD8AAAA/AAAAvwAAAD8AAAA/AAAAPwAAAL8AAAA/AAAAvwAAAL8AAAC/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAC/AAAAPwAAAL8AAAA/AAAAPwAAAL8AAAC/AAAAvwAAAD8AAAC/AAAAPwAAAD8AAAC/AAAAvwAAAL8AAAC/AAAAPwAAAL8AAAC/AAAAvwAAAL8AAAC/AAAAPwAAAL8AAAA/AAAAvwAAAL8AAAA/AAAAPwAAAL8AAAEAAgADAAIAAQAEAAUABgAHAAYABQAIAAkACgALAAoACQAMAA0ADgAPAA4ADQAQABEAEgATABIAEQAUABUAFgAXABYAFQA="),Yi(xi,"glbVertexTest","data:@file/octet-stream;base64,Z2xURgIAAABsZgAAxA0AAEpTT057ImFjY2Vzc29ycyI6W3siYnVmZmVyVmlldyI6MCwiY29tcG9uZW50VHlwZSI6NTEyMSwiY291bnQiOjM2LCJtYXgiOlsyM10sIm1pbiI6WzBdLCJ0eXBlIjoiU0NBTEFSIn0seyJidWZmZXJWaWV3IjoxLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjQsIm1heCI6WzAuNzU1NDc4MzgyMTEwNTk1NywtMC44NTEyNDE2NDgxOTcxNzQxLDAuOTc1MDMyODY2MDAxMTI5Ml0sIm1pbiI6Wy0wLjcwNDU2NTgyMzA3ODE1NTUsLTAuODUxMjQxNzA3ODAxODE4OCwtMC45NjExMTU0Nzk0NjkyOTkzXSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjIsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyNCwibWF4IjpbMCwxLDBdLCJtaW4iOlswLDEsMF0sInR5cGUiOiJWRUMzIn0seyJidWZmZXJWaWV3IjozLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjQsIm1heCI6WzEsNy4xMjE5Mzg5NDk2OTQ1OTVlLTgsMS41MTA1MTkyMTE5MzM1Njk3ZS03LDFdLCJtaW4iOlsxLC0xLjQzNDg4MTM2OTI3NzcxODVlLTcsLTEuMTI1NzY3NjM5MTA5NjUzOGUtNywxXSwidHlwZSI6IlZFQzQifSx7ImJ1ZmZlclZpZXciOjQsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyNCwibWF4IjpbMC45OTk5OTk4ODA3OTA3MTA0LDAuODAxMDQwOTQ3NDM3Mjg2NF0sIm1pbiI6WzAsMC4wNTUzOTcyNzIxMDk5ODUzNV0sInR5cGUiOiJWRUMyIn0seyJidWZmZXJWaWV3Ijo1LCJjb21wb25lbnRUeXBlIjo1MTIxLCJjb3VudCI6NzIsIm1heCI6WzQ3XSwibWluIjpbMF0sInR5cGUiOiJTQ0FMQVIifSx7ImJ1ZmZlclZpZXciOjYsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50Ijo0OCwibWF4IjpbMS4wMDAwMDA0NzY4MzcxNTgyLDEsMC40ODc0MjI0NjYyNzgwNzYxN10sIm1pbiI6Wy0xLjAwMDAwMDM1NzYyNzg2ODcsLTEsLTAuMTcxODY2NTM2MTQwNDQxOV0sInR5cGUiOiJWRUMzIn0seyJidWZmZXJWaWV3Ijo3LCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6NDgsIm1heCI6WzEsMSwxXSwibWluIjpbLTEsLTEsLTFdLCJ0eXBlIjoiVkVDMyJ9LHsiYnVmZmVyVmlldyI6OCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjQ4LCJtYXgiOlsxLDcuOTQwOTMzODgwNTA5MDY2ZS0yMyw0LjQ3MDM0ODM1ODE1NDI5N2UtOCwxXSwibWluIjpbMSwtNi42MTc0NDQ5MDA0MjQyMjJlLTI0LDAsMV0sInR5cGUiOiJWRUM0In0seyJidWZmZXJWaWV3Ijo5LCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6NDgsIm1heCI6WzAuODM2MTI5NjA1NzcwMTExMSwwLjc2NjYzMTkwMTI2NDE5MDddLCJtaW4iOlswLjIyNjEzMDQ1NTczMjM0NTU4LDAuMjMyMTE3NjUyODkzMDY2NF0sInR5cGUiOiJWRUMyIn0seyJidWZmZXJWaWV3IjoxMCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjQ4LCJtYXgiOlsxLDEsMSwxXSwibWluIjpbMCwwLDAsMV0sInR5cGUiOiJWRUM0In1dLCJhc3NldCI6eyJjb3B5cmlnaHQiOiJDb3B5cmlnaHQgMjAxOCBBbmFseXRpY2FsIEdyYXBoaWNzLCBJbmMuLCBDQy1CWSA0LjAgaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC8gLSBNZXNoIGFuZCB0ZXh0dXJlcyBieSBFZCBNYWNrZXkuIiwiZ2VuZXJhdG9yIjoiS2hyb25vcyBCbGVuZGVyIGdsVEYgMi4wIGV4cG9ydGVyIiwidmVyc2lvbiI6IjIuMCJ9LCJidWZmZXJWaWV3cyI6W3siYnVmZmVyIjowLCJieXRlTGVuZ3RoIjozNiwiYnl0ZU9mZnNldCI6MCwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjI4OCwiYnl0ZU9mZnNldCI6MzYsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoyODgsImJ5dGVPZmZzZXQiOjMyNCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjM4NCwiYnl0ZU9mZnNldCI6NjEyLCJ0YXJnZXQiOjM0OTYyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTkyLCJieXRlT2Zmc2V0Ijo5OTYsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjo3MiwiYnl0ZU9mZnNldCI6MTE4OCwidGFyZ2V0IjozNDk2M30seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZU9mZnNldCI6MTI2MCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjU3NiwiYnl0ZU9mZnNldCI6MTgzNiwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjc2OCwiYnl0ZU9mZnNldCI6MjQxMiwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjM4NCwiYnl0ZU9mZnNldCI6MzE4MCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjc2OCwiYnl0ZU9mZnNldCI6MzU2NCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjQzMzIsImJ5dGVMZW5ndGgiOjk2NzR9LHsiYnVmZmVyIjowLCJieXRlT2Zmc2V0IjoxNDAwOCwiYnl0ZUxlbmd0aCI6ODY1OH1dLCJidWZmZXJzIjpbeyJieXRlTGVuZ3RoIjoyMjY2OH1dLCJpbWFnZXMiOlt7ImJ1ZmZlclZpZXciOjExLCJtaW1lVHlwZSI6ImltYWdlL3BuZyJ9LHsiYnVmZmVyVmlldyI6MTIsIm1pbWVUeXBlIjoiaW1hZ2UvcG5nIn1dLCJtYXRlcmlhbHMiOlt7ImRvdWJsZVNpZGVkIjp0cnVlLCJuYW1lIjoiTGFiZWxfTWF0IiwicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNv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AAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAP7H/fzIRGt01AACAP7H/fzIRGt01AACAP7H/fzIRGt01AACAP7H/fzIRGt01AQAAswIAALMAAIA/AQAAswIAALMAAIA/AQAAswIAALMAAIA/AQAAswIAALMAAIA/AACAvwAAELTXja61AACAvwAAELTXja61AACAvwAAELTXja61AACAvwAAELTXja61AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAwBoBAAAzAACAPwAAgD8AAMAaAQAAMwAAgD8AAIA/AADAGgEAADMAAIA/AACAPwAAwBoBAAAzAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAmQAAQDMAAIA/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");function vi(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}class Si{constructor(){vi(this,"getProduct",void 0),vi(this,"getCommandContext",void 0),vi(this,"getAllLayoutData",void 0),vi(this,"getMetadata",void 0),vi(this,"getWorkflowMetadata",void 0),vi(this,"getStepStorage",void 0),vi(this,"getUpdatesPending",void 0)}getServer(){return Ni}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}getVariationRecords(){return[]}async reset(){}updateStateWithServer(A){}addVariationRecord(A){return{recordNumber:0,transactionId:"",values:[]}}getCurrentVariationRecord(){}removeVariationRecord(A){return[]}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(A){}addPoller(A){}addConfirmCallback(A){}addCurrentVariationCallback(A){}addEditedCallback(A){}addElementsCallback(A){}addInformationResultCallback(A){}addInitCallback(A){}addMakingAdjustmentsCallback(A){}addMandatoryCallback(A){}addMetadataCallback(A){}addSelectionCallback(A){}addStepSpecificStorageCallback(A,t){}addStorageCallback(A){}addVariationRecordsCallback(A){}getCommandDispatcher(){return A=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getProfanities(){return[]}getRegionElements(A){return[]}getSerializedStep(A,t){}getStepSpecificServices(A){}getTransaction(){return{id:""}}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(A){}markUpdateCompleted(A){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}setCurrentAdjustingStepId(A){}setCurrentVariationRecord(A){}setEditedStatus(A,t){}setInformationResults(A){}setMandatoryFulfilled(A,t){}async setSelectionsAndElements(A,t,e){}setVariationRecords(A){}toggleDesignConfirmed(){}updateMetadata(A,t){}async updateStorage(A,t){}}function Pi(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}let Ri;var Ui;(Ui=Ri||(Ri={})).SelectFrame="SelectFrame",Ui.SelectImage="SelectImage",Ui.Position="Position";class Hi extends ei{constructor(A,t){super(A,t),Pi(this,"frameService",this.manager.getStepSpecificServices(this.getId())?.frameService)}selectVariant(A){const t=this.manager.getRegionElements(this.step.stepName);return Hn.selectVariant(this.step,A,t,this.manager,(A=>this.setUpdateState(A)))}onFrameDataChanged(A){this.frameService&&this.frameService.onFrameDataChanged((t=>{t&&A(t)}))}selectImage(A){return Hn.selectImage(this.step,A,this.manager)}getImageData(){if(this.frameService)return this.frameService.getImageData()}getCurrentFrameStep(A,t,e,n){return n&&n.length>1&&void 0===A?Ri.SelectFrame:t||e||this.getImageData()?Ri.Position:Ri.SelectImage}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasVaryingUpload(){return this.step.data.varyUpload}hasVaryingSelection(){return this.step.data.varySelection}}const Gi=A=>{const t=JA(null),[e,n]=PA(void 0),[i,a]=PA(void 0),{addEvent:s,removeEvent:r,updateEvent:o,eventCache:c}=Yt(),[g,B]=PA(!1),[w,l]=PA(!1),{state:E,uiDispatcher:d}=bt(),Q=RA((A=>{const t=A;d(new Gt({zoom:Math.max(.1,Math.min(t,E.maxZoom))}))}),[d,E.maxZoom]),C=RA((A=>{r(A),1===c.length&&n(void 0),2===c.length&&a(void 0);"touch"===A.pointerType&&c.length>1&&c.length-1==1&&(l(!1),B(!1))}),[t,c]),h=RA((A=>{s(A);"touch"===A.pointerType&&1===c.length&&(d(new Gt({selectedElement:void 0})),l(!0),B(!0))}),[t,w,c]),I=RA((A=>{o(A),A.isPrimary&&n({x:A.screenX,y:A.screenY});const t=1===c.length&&"touch"!==c[0].pointerType,s=2===c.length&&"touch"===c[0].pointerType;if(g&&s){const[A,t]=c,e=Math.abs(A.clientX-t.clientX),n=i;n&&Q(E.zoom-.0055*(n-e)),a(e)}if(w&&(t||s)&&A.isPrimary){const t=(e?.x||A.screenX)-A.screenX,n=(e?.y||A.screenY)-A.screenY;d(new Gt({selectedElement:void 0,xTranslation:E.xTranslation-t/E.zoom,yTranslation:E.yTranslation-n/E.zoom}))}}),[E.xTranslation,E.yTranslation,E.zoom,w,g,Q,c,e,i]),D=RA((A=>{g&&Q(E.zoom-.035*Math.sign(A.deltaY))}),[E,g]);HA((()=>{if(!t.current||0===c.length)return;const A=c[0].pointerId,e=t.current.hasPointerCapture(A);w&&!e&&t.current.setPointerCapture(A),!w&&e&&t.current.releasePointerCapture(A)}),[t,w,c]),Ce([" "],(()=>{l(!0),d(new Gt({selectedElement:void 0}))}),(()=>l(!1))),Ce(["Control"],(()=>B(!0)),(()=>B(!1)));const u=bA((()=>({cursor:w&&0===c.length?"grab":w&&1===c.length?"grabbing":g?"zoom-in":void 0,width:"100%",height:"100%",overflow:"clip"})),[w,g,c]);return kA("div",{ref:t,className:"transform-wrapper",onWheel:D,onPointerDown:h,onPointerUp:C,onPointerCancel:C,onPointerLeave:C,onPointerMove:I,style:u,children:A.children})};export{yi as SpiffCommerceClient,A as CommandContext,Et as spiffCoreConfiguration,ue as PromiseQueue,De as QueueablePromise,Si as MockWorkflowManager,qn as InformationMessageType,ei as StepHandle,li as TextStepHandle,Hi as FrameStepHandle,si as BulkStepHandle,wi as ShapeStepHandle,ri as IllustrationStepHandle,oi as MaterialStepHandle,ci as ModelStepHandle,gi as PictureStepHandle,Bi as QuestionStepHandle,_A as OptionNotFoundError,At as LayoutNotFoundError,tt as AssetNotFoundError,et as ResourceNotFoundError,nt as MisconfigurationError,st as ParseError,at as UnhandledBehaviorError,ft as assetService,mi as designService,Ii as createDesign,Ft as optionService,It as server,wt as persistenceService,Dt as graphQlManager,jn as toast,Yn as FrameService,Hn as frameStepService,Jn as modelStepService,bn as materialStepService,zn as shapeStepService,Ln as questionStepService,Rn as digitalContentStepService,kn as moduleStepService,On as pictureStepService,Wn as textStepService,Gn as illustrationStepService,Jt as ProductCameraRig,Ri as FrameStep,t as AssetType,e as BringForwardCommand,n as BringToFrontCommand,i as BringToBackCommand,a as CanvasCommand,s as CreateElementCommand,r as CreateLayoutCommand,o as DeleteElementCommand,c as FontAlignmentCommand,g as FontColorCommand,B as FontSizeCommand,w as FontSourceCommand,l as GroupCommand,E as LayoutElementFactory,d as LayoutElementType,Q as MoveCommand,C as ResizeCommand,h as RotateCommand,I as SendBackwardsCommand,D as StepAspectType,u as StepType,m as TextChangeCommand,p as UnitOfMeasurement,f as dataUrlFromExternalUrl,M as findElement,F as frameDataCache,y as generate,Y as getAxisAlignedBoundingBox,N as generateSVGWithUnknownColors,x as getAttributesFromArrayBuffer,v as rehydrateSerializedLayout,S as getFrameData,P as getSvgElement,R as loadFontFromDataUrl,U as loadFontFromExternalUrl,H as determineCorrectFontSizeAndLines,G as patternImageDataCache,$e as generateCommands,b as registerJSDOM,Ee as minZoom,cn as AdvancedEditor,Gi as TransformWrapper,on as EditorCore,Nt as useLayouts,bt as useEditorState,Qe as useEditorInteraction,Ce as useShortcutCombination,Rt as commandReducer,Pt as getDefaultState,yt as CommandContextContext,Ht as AdvancedEditorStateProvider,Ut as AdvancedEditorContext,Gt as UICommand,vt as EditorSubMenu,zt as ElementEventType,jt as KeyEvent,hn as gatherVaryingStepAspects};
|
|
239
239
|
//# sourceMappingURL=module.js.map
|