@spiffcommerce/core 7.3.1 → 7.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -883,5 +883,5 @@ var t=require("@apollo/client"),e=require("lodash.clonedeep"),A=require("react/j
883
883
  }
884
884
  }
885
885
  }
886
- `,So=async t=>{const e=(await en.getShadowGraphqlClient().query({query:vo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t}})).data.workflow;return e.steps.forEach((t=>{delete t.data.__typename})),e},No=(t,e)=>{const A=t.workflowState,n=A?JSON.parse(A):void 0;return n?Object.values(n.layouts).map((t=>t.layout)):e.panels.sort(((t,e)=>t.index-e.index)).map((t=>({id:F(),panelId:t.name,name:t.name,index:t.index,createdAt:new Date,updatedAt:new Date,transparentBackground:t.transparentBackground,height:t.height,width:t.width,previewRegion:t.previewRegion,useEditableArea:t.useEditableArea,editableArea:t.editableArea})))};class Ro{constructor(t){xo(this,"options",void 0),xo(this,"initialized",void 0),xo(this,"experienceOptions",void 0),xo(this,"currencyCode",void 0),xo(this,"updateTransactionState",(async t=>{try{return en.getShadowGraphqlClient().mutate({...t,mutation:ga})}catch(t){throw console.error(t),new zA("Critical - Unable to synchronize workflow state with server.")}})),this.initialized=!1,this.options=t}getAssetManager(){return Bn}getCurrencyCode(){if(void 0===this.currencyCode)throw new Error("No currency code set.");return this.currencyCode}async initFromIntegrationProduct(t){if(""===t)throw new zA("No integration product ID provided.");const e=en.getShadowGraphqlClient();await e.resetStore();const A=await e.mutate({mutation:ra,variables:{integrationProductId:t,bulk:this.options.bulk||!1},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!A.data)throw new zA("Failed to create transaction!");this.currencyCode=A.data.transactionCreate.product?.partner?.currencyCode;const n=(await e.mutate({mutation:sa,variables:{id:A.data.transactionCreate.id},errorPolicy:"all",fetchPolicy:"no-cache"})).data?.transactionClaim;if(!n)throw new zA("Failed to create transaction.");if(!A.data.transactionCreate.product)throw new zA("Failed to create transaction, product not available.");const i=XA.getMap("transactionOwnerIds")||new Map;i.set(n.id,n.transactionOwnerId),tn(n.transactionOwnerId||""),XA.setMap("transactionOwnerIds",i),this.experienceOptions={product:A.data.transactionCreate.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState},this.initialized=!0}async initFromTransaction(t,e=!1){if(""===t)throw new zA("No transaction ID provided.");const A=en.getShadowGraphqlClient();await A.resetStore();if(e)return await(async()=>{const n=(await A.query({query:ca,variables:{id:t},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new zA("Failed to read transaction.");if(!n.product)throw new zA("Failed to load transaction, product not available.");this.currencyCode=n.product.partner?.currencyCode,this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:async()=>{throw new OA("State mutation is forbidden in read only mode!")},readOnly:e},this.initialized=!0})();const n=XA.getMap("transactionOwnerIds")||new Map,i=n.get(t);if(i){tn(i);const n=(await A.query({query:ca,variables:{id:t},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new zA("Failed to read transaction.");if(!n.product)throw new zA("Failed to load transaction, product not available.");return this.currencyCode=n.product.partner?.currencyCode,this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:e},void(this.initialized=!0)}try{const i=(await A.mutate({mutation:sa,variables:{id:t},errorPolicy:"all"})).data?.transactionClaim;if(!i)throw new zA("Failed to read transaction.");if(!i.product)throw new zA("Failed to load transaction, product not available.");this.currencyCode=i.product.partner?.currencyCode,i.transactionOwnerId&&(n.set(i.id,i.transactionOwnerId),tn(i.transactionOwnerId),XA.setMap("transactionOwnerIds",n)),this.experienceOptions={product:i.product,transaction:i,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:e},this.initialized=!0}catch{throw new zA("Attempted to access a transaction that isn't available.")}}async getWorkflowExperience(t,e,A){if(!this.initialized||!this.experienceOptions)throw new zA("Cannot launch experience: Not initialized.");const n=async t=>{for(const e in t.layouts){const A=t.layouts[e].elements.filter((t=>t.type===N.Illustration));for(let t=0;t<A.length;++t){const e=A[t];e.src&&e.svg&&(e.cachedObjectURL=await vA(e.svg))}const n=t.layouts[e].elements.filter((t=>t.type===N.Textbox));for(let t=0;t<n.length;++t){const e=n[t];e.fontData?.assetUrl&&jt(e.fontData.assetUrl)}}};if(this.experienceOptions.transaction.workflowId){const t=await So(this.experienceOptions.transaction.workflowId);if(this.experienceOptions.workflow=t,this.experienceOptions.transaction.workflowState){const t=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(t.layouts).map((t=>t.layout)),await He(t),await n(t),this.experienceOptions.reloadedState=t}this.experienceOptions.previewService=A&&A(t),this.experienceOptions.renderableContextService=new $i(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService);const e=new Mo(this,this.experienceOptions);return await e.getWorkflowManager().getInitializationPromise(),e}if(t){const i=await So(t);if(this.experienceOptions.workflow=i,await en.getShadowGraphqlClient().mutate({mutation:la,variables:{workflowId:t,id:this.experienceOptions.transaction.id}}),e){const t=JSON.parse(e);this.experienceOptions.layouts=Object.values(t.layouts).map((t=>t.layout)),await He(t),await n(t),this.experienceOptions.reloadedState=t}else this.experienceOptions.layouts=No(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=A&&A(i),this.experienceOptions.renderableContextService=new $i(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&await(this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService));const a=new Mo(this,this.experienceOptions);return await a.getWorkflowManager().getInitializationPromise(),a}throw new zA("No workflow ID provided.")}getPreviewService(){return this.experienceOptions?.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new zA("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new zA("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}}function Ho(t,e,A){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var A=t[Symbol.toPrimitive];if(void 0!==A){var n=A.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}class Po{constructor(){Ho(this,"getProduct",void 0),Ho(this,"getCommandContext",void 0),Ho(this,"getAllLayoutData",void 0),Ho(this,"getMetadata",void 0),Ho(this,"getWorkflowMetadata",void 0),Ho(this,"getStepStorage",void 0),Ho(this,"getUpdatesPending",void 0)}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}getVariationRecords(){return[]}async reset(){}updateStateWithServer(t){}addVariationRecord(t){return{recordNumber:0,transactionId:"",values:[]}}getCurrentVariationRecord(){}removeVariationRecord(t){return[]}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(t){}addPoller(t){}addConfirmCallback(t){}addCurrentVariationCallback(t){}addEditedCallback(t){}addElementsCallback(t){}addInformationResultCallback(t){}addInitCallback(t){}addMakingAdjustmentsCallback(t){}addMandatoryCallback(t){}addMetadataCallback(t){}addSelectionCallback(t){}addStepSpecificStorageCallback(t,e){}addStorageCallback(t){}addVariationRecordsCallback(t){}getCommandDispatcher(){return t=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getProfanities(){return[]}getRegionElements(t){return[]}getSerializedStep(t,e){}getStepSpecificServices(t){}getTransaction(){return{id:""}}getTransactionCustomer(){}setTransactionCustomer(){}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(t){}markUpdateCompleted(t){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}setCurrentAdjustingStepId(t){}setCurrentVariationRecord(t){}setEditedStatus(t,e){}setInformationResults(t){}setMandatoryFulfilled(t,e){}async setSelectionsAndElements(t,e,A){}setVariationRecords(t){}toggleDesignConfirmed(){}updateMetadata(t,e){}async updateStorage(t,e){}}function Uo(t,e,A){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var A=t[Symbol.toPrimitive];if(void 0!==A){var n=A.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}let Go;var bo;(bo=Go||(Go={})).SelectFrame="SelectFrame",bo.SelectImage="SelectImage",bo.Position="Position";class ko extends Ao{constructor(t,e){super(t,e),Uo(this,"frameService",this.manager.getStepSpecificServices(this.getId())?.frameService)}selectVariant(t){const e=this.manager.getRegionElements(this.step.stepName);return Ra.selectVariant(this.step,t.getResource(),e,this.manager,(t=>this.setUpdateState(t)))}onFrameDataChanged(t){this.frameService&&this.frameService.onFrameDataChanged((e=>{e&&t(e)}))}selectImage(t){return Ra.selectImage(this.step,t,this.manager)}getImageData(){if(this.frameService)return this.frameService.getImageData()}getCurrentFrameStep(t,e,A,n){return n&&n.length>1&&void 0===t?Go.SelectFrame:e||A||this.getImageData()?Go.Position:Go.SelectImage}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasOverlayImageUrl(){return this.step.data.overlayImageUrl}hasVaryingUpload(){return this.step.data.varyUpload}hasVaryingSelection(){return this.step.data.varySelection}}const Jo=t=>{const e=(0,E.useRef)(null),[n,i]=(0,E.useState)(void 0),[a,o]=(0,E.useState)(void 0),{addEvent:r,removeEvent:s,updateEvent:c,eventCache:g}=Qn(),[l,B]=(0,E.useState)(!1),[w,h]=(0,E.useState)(!1),{state:d,uiDispatcher:u}=Fn(),Q=(0,E.useCallback)((t=>{const e=t;u(new xn({zoom:Math.max(.1,Math.min(e,d.maxZoom))}))}),[u,d.maxZoom]),C=(0,E.useCallback)((t=>{s(t),1===g.length&&i(void 0),2===g.length&&o(void 0);"touch"===t.pointerType&&g.length>1&&g.length-1==1&&(h(!1),B(!1))}),[e,g]),m=(0,E.useCallback)((t=>{r(t);"touch"===t.pointerType&&1===g.length&&(u(new xn({selectedElement:void 0})),h(!0),B(!0))}),[e,w,g]),p=(0,E.useCallback)((t=>{c(t),t.isPrimary&&i({x:t.screenX,y:t.screenY});const e=1===g.length&&"touch"!==g[0].pointerType,A=2===g.length&&"touch"===g[0].pointerType;if(l&&A){const[t,e]=g,A=Math.abs(t.clientX-e.clientX),n=a;n&&Q(d.zoom-.0055*(n-A)),o(A)}if(w&&(e||A)&&t.isPrimary){const e=(n?.x||t.screenX)-t.screenX,A=(n?.y||t.screenY)-t.screenY;u(new xn({selectedElement:void 0,xTranslation:d.xTranslation-e/d.zoom,yTranslation:d.yTranslation-A/d.zoom}))}}),[d.xTranslation,d.yTranslation,d.zoom,w,l,Q,g,n,a]),f=(0,E.useCallback)((t=>{l&&Q(d.zoom-.035*Math.sign(t.deltaY))}),[d,l]);(0,E.useEffect)((()=>{if(!e.current||0===g.length)return;const t=g[0].pointerId,A=e.current.hasPointerCapture(t);w&&!A&&e.current.setPointerCapture(t),!w&&A&&e.current.releasePointerCapture(t)}),[e,w,g]),di([" "],(()=>{h(!0),u(new xn({selectedElement:void 0}))}),(()=>h(!1))),di(["Control"],(()=>B(!0)),(()=>B(!1)));const D=(0,E.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,A.jsx)("div",{ref:e,className:"transform-wrapper",onWheel:f,onPointerDown:m,onPointerUp:C,onPointerCancel:C,onPointerLeave:C,onPointerMove:p,style:D,children:t.children})};
886
+ `,So=async t=>{const e=(await en.getShadowGraphqlClient().query({query:vo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t}})).data.workflow;return e.steps.forEach((t=>{delete t.data.__typename})),e},No=(t,e)=>{const A=t.workflowState,n=A?JSON.parse(A):void 0;return n?Object.values(n.layouts).map((t=>t.layout)):e.panels.sort(((t,e)=>t.index-e.index)).map((t=>({id:F(),panelId:t.name,name:t.name,index:t.index,createdAt:new Date,updatedAt:new Date,transparentBackground:t.transparentBackground,height:t.height,width:t.width,previewRegion:t.previewRegion,useEditableArea:t.useEditableArea,editableArea:t.editableArea})))};class Ro{constructor(t){xo(this,"options",void 0),xo(this,"initialized",void 0),xo(this,"experienceOptions",void 0),xo(this,"currencyCode",void 0),xo(this,"updateTransactionState",(async t=>{try{return en.getShadowGraphqlClient().mutate({...t,mutation:ga})}catch(t){throw console.error(t),new zA("Critical - Unable to synchronize workflow state with server.")}})),this.initialized=!1,this.options=t}getAssetManager(){return Bn}getCurrencyCode(){if(void 0===this.currencyCode)throw new Error("No currency code set.");return this.currencyCode}async initFromIntegrationProduct(t){if(""===t)throw new zA("No integration product ID provided.");const e=en.getShadowGraphqlClient();await e.resetStore();const A=await e.mutate({mutation:ra,variables:{integrationProductId:t,bulk:this.options.bulk||!1},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!A.data)throw new zA("Failed to create transaction!");this.currencyCode=A.data.transactionCreate.product?.partner?.currencyCode;const n=(await e.mutate({mutation:sa,variables:{id:A.data.transactionCreate.id},errorPolicy:"all",fetchPolicy:"no-cache"})).data?.transactionClaim;if(!n)throw new zA("Failed to create transaction.");if(!A.data.transactionCreate.product)throw new zA("Failed to create transaction, product not available.");const i=XA.getMap("transactionOwnerIds")||new Map;i.set(n.id,n.transactionOwnerId),tn(n.transactionOwnerId||""),XA.setMap("transactionOwnerIds",i),this.experienceOptions={product:A.data.transactionCreate.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState},this.initialized=!0}async initFromTransaction(t,e=!1){if(""===t)throw new zA("No transaction ID provided.");const A=en.getShadowGraphqlClient();await A.resetStore();if(e)return await(async()=>{const n=(await A.query({query:ca,variables:{id:t},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new zA("Failed to read transaction.");if(!n.product)throw new zA("Failed to load transaction, product not available.");this.currencyCode=n.product.partner?.currencyCode,this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:async()=>{throw new OA("State mutation is forbidden in read only mode!")},readOnly:e},this.initialized=!0})();const n=XA.getMap("transactionOwnerIds")||new Map,i=n.get(t);if(i){tn(i);const n=(await A.query({query:ca,variables:{id:t},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new zA("Failed to read transaction.");if(!n.product)throw new zA("Failed to load transaction, product not available.");return this.currencyCode=n.product.partner?.currencyCode,this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:e},void(this.initialized=!0)}try{const i=(await A.mutate({mutation:sa,variables:{id:t},errorPolicy:"all"})).data?.transactionClaim;if(!i)throw new zA("Failed to read transaction.");if(!i.product)throw new zA("Failed to load transaction, product not available.");this.currencyCode=i.product.partner?.currencyCode,i.transactionOwnerId&&(n.set(i.id,i.transactionOwnerId),tn(i.transactionOwnerId),XA.setMap("transactionOwnerIds",n)),this.experienceOptions={product:i.product,transaction:i,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:e},this.initialized=!0}catch{throw new zA("Attempted to access a transaction that isn't available.")}}async getWorkflowExperience(t,e,A){if(!this.initialized||!this.experienceOptions)throw new zA("Cannot launch experience: Not initialized.");const n=async t=>{for(const e in t.layouts){const A=t.layouts[e].elements.filter((t=>t.type===N.Illustration));for(let t=0;t<A.length;++t){const e=A[t];e.src&&e.svg&&(e.cachedObjectURL=await vA(e.svg))}const n=t.layouts[e].elements.filter((t=>t.type===N.Textbox));for(let t=0;t<n.length;++t){const e=n[t];e.fontData?.assetUrl&&jt(e.fontData.assetUrl)}}};if(this.experienceOptions.transaction.workflowId){const t=await So(this.experienceOptions.transaction.workflowId);if(this.experienceOptions.workflow=t,this.experienceOptions.transaction.workflowState){const t=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(t.layouts).map((t=>t.layout)),await He(t),await n(t),this.experienceOptions.reloadedState=t}this.experienceOptions.previewService=A&&A(t),this.experienceOptions.renderableContextService=new $i(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService);const e=new Mo(this,this.experienceOptions);return await e.getWorkflowManager().getInitializationPromise(),e}if(t){const i=en.getShadowGraphqlClient().mutate({mutation:la,variables:{workflowId:t,id:this.experienceOptions.transaction.id}}),a=So(t);if(await Promise.all([i,a]),this.experienceOptions.workflow=await a,e){const t=JSON.parse(e);this.experienceOptions.layouts=Object.values(t.layouts).map((t=>t.layout)),await He(t),await n(t),this.experienceOptions.reloadedState=t}else this.experienceOptions.layouts=No(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=A&&A(await a),this.experienceOptions.renderableContextService=new $i(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&await(this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService));const o=new Mo(this,this.experienceOptions);return await o.getWorkflowManager().getInitializationPromise(),o}throw new zA("No workflow ID provided.")}getPreviewService(){return this.experienceOptions?.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new zA("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new zA("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}}function Ho(t,e,A){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var A=t[Symbol.toPrimitive];if(void 0!==A){var n=A.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}class Po{constructor(){Ho(this,"getProduct",void 0),Ho(this,"getCommandContext",void 0),Ho(this,"getAllLayoutData",void 0),Ho(this,"getMetadata",void 0),Ho(this,"getWorkflowMetadata",void 0),Ho(this,"getStepStorage",void 0),Ho(this,"getUpdatesPending",void 0)}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}getVariationRecords(){return[]}async reset(){}updateStateWithServer(t){}addVariationRecord(t){return{recordNumber:0,transactionId:"",values:[]}}getCurrentVariationRecord(){}removeVariationRecord(t){return[]}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(t){}addPoller(t){}addConfirmCallback(t){}addCurrentVariationCallback(t){}addEditedCallback(t){}addElementsCallback(t){}addInformationResultCallback(t){}addInitCallback(t){}addMakingAdjustmentsCallback(t){}addMandatoryCallback(t){}addMetadataCallback(t){}addSelectionCallback(t){}addStepSpecificStorageCallback(t,e){}addStorageCallback(t){}addVariationRecordsCallback(t){}getCommandDispatcher(){return t=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getProfanities(){return[]}getRegionElements(t){return[]}getSerializedStep(t,e){}getStepSpecificServices(t){}getTransaction(){return{id:""}}getTransactionCustomer(){}setTransactionCustomer(){}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(t){}markUpdateCompleted(t){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}setCurrentAdjustingStepId(t){}setCurrentVariationRecord(t){}setEditedStatus(t,e){}setInformationResults(t){}setMandatoryFulfilled(t,e){}async setSelectionsAndElements(t,e,A){}setVariationRecords(t){}toggleDesignConfirmed(){}updateMetadata(t,e){}async updateStorage(t,e){}}function Uo(t,e,A){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var A=t[Symbol.toPrimitive];if(void 0!==A){var n=A.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}let Go;var bo;(bo=Go||(Go={})).SelectFrame="SelectFrame",bo.SelectImage="SelectImage",bo.Position="Position";class ko extends Ao{constructor(t,e){super(t,e),Uo(this,"frameService",this.manager.getStepSpecificServices(this.getId())?.frameService)}selectVariant(t){const e=this.manager.getRegionElements(this.step.stepName);return Ra.selectVariant(this.step,t.getResource(),e,this.manager,(t=>this.setUpdateState(t)))}onFrameDataChanged(t){this.frameService&&this.frameService.onFrameDataChanged((e=>{e&&t(e)}))}selectImage(t){return Ra.selectImage(this.step,t,this.manager)}getImageData(){if(this.frameService)return this.frameService.getImageData()}getCurrentFrameStep(t,e,A,n){return n&&n.length>1&&void 0===t?Go.SelectFrame:e||A||this.getImageData()?Go.Position:Go.SelectImage}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasOverlayImageUrl(){return this.step.data.overlayImageUrl}hasVaryingUpload(){return this.step.data.varyUpload}hasVaryingSelection(){return this.step.data.varySelection}}const Jo=t=>{const e=(0,E.useRef)(null),[n,i]=(0,E.useState)(void 0),[a,o]=(0,E.useState)(void 0),{addEvent:r,removeEvent:s,updateEvent:c,eventCache:g}=Qn(),[l,B]=(0,E.useState)(!1),[w,h]=(0,E.useState)(!1),{state:d,uiDispatcher:u}=Fn(),Q=(0,E.useCallback)((t=>{const e=t;u(new xn({zoom:Math.max(.1,Math.min(e,d.maxZoom))}))}),[u,d.maxZoom]),C=(0,E.useCallback)((t=>{s(t),1===g.length&&i(void 0),2===g.length&&o(void 0);"touch"===t.pointerType&&g.length>1&&g.length-1==1&&(h(!1),B(!1))}),[e,g]),m=(0,E.useCallback)((t=>{r(t);"touch"===t.pointerType&&1===g.length&&(u(new xn({selectedElement:void 0})),h(!0),B(!0))}),[e,w,g]),p=(0,E.useCallback)((t=>{c(t),t.isPrimary&&i({x:t.screenX,y:t.screenY});const e=1===g.length&&"touch"!==g[0].pointerType,A=2===g.length&&"touch"===g[0].pointerType;if(l&&A){const[t,e]=g,A=Math.abs(t.clientX-e.clientX),n=a;n&&Q(d.zoom-.0055*(n-A)),o(A)}if(w&&(e||A)&&t.isPrimary){const e=(n?.x||t.screenX)-t.screenX,A=(n?.y||t.screenY)-t.screenY;u(new xn({selectedElement:void 0,xTranslation:d.xTranslation-e/d.zoom,yTranslation:d.yTranslation-A/d.zoom}))}}),[d.xTranslation,d.yTranslation,d.zoom,w,l,Q,g,n,a]),f=(0,E.useCallback)((t=>{l&&Q(d.zoom-.035*Math.sign(t.deltaY))}),[d,l]);(0,E.useEffect)((()=>{if(!e.current||0===g.length)return;const t=g[0].pointerId,A=e.current.hasPointerCapture(t);w&&!A&&e.current.setPointerCapture(t),!w&&A&&e.current.releasePointerCapture(t)}),[e,w,g]),di([" "],(()=>{h(!0),u(new xn({selectedElement:void 0}))}),(()=>h(!1))),di(["Control"],(()=>B(!0)),(()=>B(!1)));const D=(0,E.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,A.jsx)("div",{ref:e,className:"transform-wrapper",onWheel:f,onPointerDown:m,onPointerUp:C,onPointerCancel:C,onPointerLeave:C,onPointerMove:p,style:D,children:t.children})};
887
887
  //# sourceMappingURL=main.js.map
package/dist/module.js CHANGED
@@ -883,5 +883,5 @@ import{CommandContext as A,AssetType as t,BringForwardCommand as e,BringToFrontC
883
883
  }
884
884
  }
885
885
  }
886
- `,Oi=async A=>{const t=(await ht.getShadowGraphqlClient().query({query:Ti,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:A}})).data.workflow;return t.steps.forEach((A=>{delete A.data.__typename})),t},zi=(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:F(),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 ji{constructor(A){Li(this,"options",void 0),Li(this,"initialized",void 0),Li(this,"experienceOptions",void 0),Li(this,"currencyCode",void 0),Li(this,"updateTransactionState",(async A=>{try{return ht.getShadowGraphqlClient().mutate({...A,mutation:Mn})}catch(A){throw console.error(A),new at("Critical - Unable to synchronize workflow state with server.")}})),this.initialized=!1,this.options=A}getAssetManager(){return yt}getCurrencyCode(){if(void 0===this.currencyCode)throw new Error("No currency code set.");return this.currencyCode}async initFromIntegrationProduct(A){if(""===A)throw new at("No integration product ID provided.");const t=ht.getShadowGraphqlClient();await t.resetStore();const e=await t.mutate({mutation:pn,variables:{integrationProductId:A,bulk:this.options.bulk||!1},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!e.data)throw new at("Failed to create transaction!");this.currencyCode=e.data.transactionCreate.product?.partner?.currencyCode;const n=(await t.mutate({mutation:In,variables:{id:e.data.transactionCreate.id},errorPolicy:"all",fetchPolicy:"no-cache"})).data?.transactionClaim;if(!n)throw new at("Failed to create transaction.");if(!e.data.transactionCreate.product)throw new at("Failed to create transaction, product not available.");const i=gt.getMap("transactionOwnerIds")||new Map;i.set(n.id,n.transactionOwnerId),dt(n.transactionOwnerId||""),gt.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 at("No transaction ID provided.");const e=ht.getShadowGraphqlClient();await e.resetStore();if(t)return await(async()=>{const n=(await e.query({query:fn,variables:{id:A},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new at("Failed to read transaction.");if(!n.product)throw new at("Failed to load transaction, product not available.");this.currencyCode=n.product.partner?.currencyCode,this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:async()=>{throw new nt("State mutation is forbidden in read only mode!")},readOnly:t},this.initialized=!0})();const n=gt.getMap("transactionOwnerIds")||new Map,i=n.get(A);if(i){dt(i);const n=(await e.query({query:fn,variables:{id:A},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new at("Failed to read transaction.");if(!n.product)throw new at("Failed to load transaction, product not available.");return this.currencyCode=n.product.partner?.currencyCode,this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:t},void(this.initialized=!0)}try{const i=(await e.mutate({mutation:In,variables:{id:A},errorPolicy:"all"})).data?.transactionClaim;if(!i)throw new at("Failed to read transaction.");if(!i.product)throw new at("Failed to load transaction, product not available.");this.currencyCode=i.product.partner?.currencyCode,i.transactionOwnerId&&(n.set(i.id,i.transactionOwnerId),dt(i.transactionOwnerId),gt.setMap("transactionOwnerIds",n)),this.experienceOptions={product:i.product,transaction:i,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:t},this.initialized=!0}catch{throw new at("Attempted to access a transaction that isn't available.")}}async getWorkflowExperience(A,t,e){if(!this.initialized||!this.experienceOptions)throw new at("Cannot launch experience: Not initialized.");const n=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)}}};if(this.experienceOptions.transaction.workflowId){const A=await Oi(this.experienceOptions.transaction.workflowId);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 n(A),this.experienceOptions.reloadedState=A}this.experienceOptions.previewService=e&&e(A),this.experienceOptions.renderableContextService=new wn(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService);const t=new bi(this,this.experienceOptions);return await t.getWorkflowManager().getInitializationPromise(),t}if(A){const i=await Oi(A);if(this.experienceOptions.workflow=i,await ht.getShadowGraphqlClient().mutate({mutation:yn,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 n(A),this.experienceOptions.reloadedState=A}else this.experienceOptions.layouts=zi(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=e&&e(i),this.experienceOptions.renderableContextService=new wn(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&await(this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService));const a=new bi(this,this.experienceOptions);return await a.getWorkflowManager().getInitializationPromise(),a}throw new at("No workflow ID provided.")}getPreviewService(){return this.experienceOptions?.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new at("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new at("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}}function Ki(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 Vi{constructor(){Ki(this,"getProduct",void 0),Ki(this,"getCommandContext",void 0),Ki(this,"getAllLayoutData",void 0),Ki(this,"getMetadata",void 0),Ki(this,"getWorkflowMetadata",void 0),Ki(this,"getStepStorage",void 0),Ki(this,"getUpdatesPending",void 0)}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:""}}getTransactionCustomer(){}setTransactionCustomer(){}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 Wi(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 Xi;var qi;(qi=Xi||(Xi={})).SelectFrame="SelectFrame",qi.SelectImage="SelectImage",qi.Position="Position";class Zi extends Qi{constructor(A,t){super(A,t),Wi(this,"frameService",this.manager.getStepSpecificServices(this.getId())?.frameService)}selectVariant(A){const t=this.manager.getRegionElements(this.step.stepName);return Wn.selectVariant(this.step,A.getResource(),t,this.manager,(A=>this.setUpdateState(A)))}onFrameDataChanged(A){this.frameService&&this.frameService.onFrameDataChanged((t=>{t&&A(t)}))}selectImage(A){return Wn.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?Xi.SelectFrame:t||e||this.getImageData()?Xi.Position:Xi.SelectImage}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasOverlayImageUrl(){return this.step.data.overlayImageUrl}hasVaryingUpload(){return this.step.data.varyUpload}hasVaryingSelection(){return this.step.data.varySelection}}const $i=A=>{const t=GA(null),[e,n]=vA(void 0),[i,a]=vA(void 0),{addEvent:o,removeEvent:r,updateEvent:s,eventCache:c}=Nt(),[g,B]=vA(!1),[l,w]=vA(!1),{state:E,uiDispatcher:d}=Tt(),h=NA((A=>{const t=A;d(new Lt({zoom:Math.max(.1,Math.min(t,E.maxZoom))}))}),[d,E.maxZoom]),Q=NA((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&&(w(!1),B(!1))}),[t,c]),C=NA((A=>{o(A);"touch"===A.pointerType&&1===c.length&&(d(new Lt({selectedElement:void 0})),w(!0),B(!0))}),[t,l,c]),u=NA((A=>{s(A),A.isPrimary&&n({x:A.screenX,y:A.screenY});const t=1===c.length&&"touch"!==c[0].pointerType,o=2===c.length&&"touch"===c[0].pointerType;if(g&&o){const[A,t]=c,e=Math.abs(A.clientX-t.clientX),n=i;n&&h(E.zoom-.0055*(n-e)),a(e)}if(l&&(t||o)&&A.isPrimary){const t=(e?.x||A.screenX)-A.screenX,n=(e?.y||A.screenY)-A.screenY;d(new Lt({selectedElement:void 0,xTranslation:E.xTranslation-t/E.zoom,yTranslation:E.yTranslation-n/E.zoom}))}}),[E.xTranslation,E.yTranslation,E.zoom,l,g,h,c,e,i]),D=NA((A=>{g&&h(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);l&&!e&&t.current.setPointerCapture(A),!l&&e&&t.current.releasePointerCapture(A)}),[t,l,c]),xe([" "],(()=>{w(!0),d(new Lt({selectedElement:void 0}))}),(()=>w(!1))),xe(["Control"],(()=>B(!0)),(()=>B(!1)));const m=PA((()=>({cursor:l&&0===c.length?"grab":l&&1===c.length?"grabbing":g?"zoom-in":void 0,width:"100%",height:"100%",overflow:"clip"})),[l,g,c]);return kA("div",{ref:t,className:"transform-wrapper",onWheel:D,onPointerDown:C,onPointerUp:Q,onPointerCancel:Q,onPointerLeave:Q,onPointerMove:u,style:m,children:A.children})};export{ji as SpiffCommerceClient,A as CommandContext,lt as spiffCoreConfiguration,Re as PromiseQueue,Ne as QueueablePromise,Vi as MockWorkflowManager,gi as InformationMessageType,Qi as StepHandle,Yi as TextStepHandle,Zi as FrameStepHandle,mi as BulkStepHandle,Fi as ShapeStepHandle,pi as IllustrationStepHandle,Ii as MaterialStepHandle,fi as ModelStepHandle,Mi as PictureStepHandle,yi as QuestionStepHandle,jt as BulkPriceCalculationStrategy,di as Variant,ZA as OptionNotFoundError,$A as LayoutNotFoundError,_A as AssetNotFoundError,At as ResourceNotFoundError,tt as MisconfigurationError,it as ParseError,nt as UnhandledBehaviorError,yt as assetService,ki as designService,Ui as createDesign,St as optionService,gt as persistenceService,ht as graphQlManager,ni as toast,bn as FrameService,kn as getBoundedOffsets,Wn as frameStepService,Zn as modelStepService,qn as materialStepService,ti as shapeStepService,Ai as questionStepService,Kn as digitalContentStepService,$n as moduleStepService,_n as pictureStepService,si as textStepService,Xn as illustrationStepService,Ot as ProductCameraRig,Xi as FrameStep,Vt as ConversionLocation,Xt as ConversionDataType,Oi as getWorkflow,t as AssetType,e as BringForwardCommand,n as BringToFrontCommand,i as BringToBackCommand,a as CanvasCommand,o as CreateElementCommand,r as CreateLayoutCommand,s as DeleteElementCommand,c as FontAlignmentCommand,g as FontColorCommand,B as FontSizeCommand,l as FontSourceCommand,w as GroupCommand,E as LayoutElementFactory,d as LayoutElementType,h as MoveCommand,Q as ResizeCommand,C as RotateCommand,u as SendBackwardsCommand,D as StepAspectType,m as StepType,p as TextChangeCommand,I as UnitOfMeasurement,f as dataUrlFromExternalUrl,M as findElement,y as frameDataCache,F as generate,Y as getAxisAlignedBoundingBox,x as generateSVGWithUnknownColors,S as getAttributesFromArrayBuffer,v as rehydrateSerializedLayout,N as getFrameData,R as getSvgElement,H as loadFontFromDataUrl,U as loadFontFromExternalUrl,P as determineCorrectFontSizeAndLines,G as patternImageDataCache,Bn as generateCommands,k as registerJSDOM,ye as minZoom,mn as AdvancedEditor,$i as TransformWrapper,Dn as EditorCore,Rt as useLayouts,Tt as useEditorState,Ye as useEditorInteraction,xe as useShortcutCombination,kt as commandReducer,Gt as getDefaultState,vt as CommandContextContext,bt as AdvancedEditorStateProvider,Jt as AdvancedEditorContext,Lt as UICommand,Ut as EditorSubMenu,te as ElementEventType,ne as KeyEvent,Sn as gatherVaryingStepAspects};
886
+ `,Oi=async A=>{const t=(await ht.getShadowGraphqlClient().query({query:Ti,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:A}})).data.workflow;return t.steps.forEach((A=>{delete A.data.__typename})),t},zi=(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:F(),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 ji{constructor(A){Li(this,"options",void 0),Li(this,"initialized",void 0),Li(this,"experienceOptions",void 0),Li(this,"currencyCode",void 0),Li(this,"updateTransactionState",(async A=>{try{return ht.getShadowGraphqlClient().mutate({...A,mutation:Mn})}catch(A){throw console.error(A),new at("Critical - Unable to synchronize workflow state with server.")}})),this.initialized=!1,this.options=A}getAssetManager(){return yt}getCurrencyCode(){if(void 0===this.currencyCode)throw new Error("No currency code set.");return this.currencyCode}async initFromIntegrationProduct(A){if(""===A)throw new at("No integration product ID provided.");const t=ht.getShadowGraphqlClient();await t.resetStore();const e=await t.mutate({mutation:pn,variables:{integrationProductId:A,bulk:this.options.bulk||!1},errorPolicy:"all",fetchPolicy:"no-cache",context:this.options.applicationKey?{headers:{"X-Application-Key":this.options.applicationKey}}:void 0});if(!e.data)throw new at("Failed to create transaction!");this.currencyCode=e.data.transactionCreate.product?.partner?.currencyCode;const n=(await t.mutate({mutation:In,variables:{id:e.data.transactionCreate.id},errorPolicy:"all",fetchPolicy:"no-cache"})).data?.transactionClaim;if(!n)throw new at("Failed to create transaction.");if(!e.data.transactionCreate.product)throw new at("Failed to create transaction, product not available.");const i=gt.getMap("transactionOwnerIds")||new Map;i.set(n.id,n.transactionOwnerId),dt(n.transactionOwnerId||""),gt.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 at("No transaction ID provided.");const e=ht.getShadowGraphqlClient();await e.resetStore();if(t)return await(async()=>{const n=(await e.query({query:fn,variables:{id:A},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new at("Failed to read transaction.");if(!n.product)throw new at("Failed to load transaction, product not available.");this.currencyCode=n.product.partner?.currencyCode,this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:async()=>{throw new nt("State mutation is forbidden in read only mode!")},readOnly:t},this.initialized=!0})();const n=gt.getMap("transactionOwnerIds")||new Map,i=n.get(A);if(i){dt(i);const n=(await e.query({query:fn,variables:{id:A},errorPolicy:"all"})).data?.transactions[0];if(!n)throw new at("Failed to read transaction.");if(!n.product)throw new at("Failed to load transaction, product not available.");return this.currencyCode=n.product.partner?.currencyCode,this.experienceOptions={product:n.product,transaction:n,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:t},void(this.initialized=!0)}try{const i=(await e.mutate({mutation:In,variables:{id:A},errorPolicy:"all"})).data?.transactionClaim;if(!i)throw new at("Failed to read transaction.");if(!i.product)throw new at("Failed to load transaction, product not available.");this.currencyCode=i.product.partner?.currencyCode,i.transactionOwnerId&&(n.set(i.id,i.transactionOwnerId),dt(i.transactionOwnerId),gt.setMap("transactionOwnerIds",n)),this.experienceOptions={product:i.product,transaction:i,layouts:[],stateMutationFunc:this.updateTransactionState,readOnly:t},this.initialized=!0}catch{throw new at("Attempted to access a transaction that isn't available.")}}async getWorkflowExperience(A,t,e){if(!this.initialized||!this.experienceOptions)throw new at("Cannot launch experience: Not initialized.");const n=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)}}};if(this.experienceOptions.transaction.workflowId){const A=await Oi(this.experienceOptions.transaction.workflowId);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 n(A),this.experienceOptions.reloadedState=A}this.experienceOptions.previewService=e&&e(A),this.experienceOptions.renderableContextService=new wn(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService);const t=new bi(this,this.experienceOptions);return await t.getWorkflowManager().getInitializationPromise(),t}if(A){const i=ht.getShadowGraphqlClient().mutate({mutation:yn,variables:{workflowId:A,id:this.experienceOptions.transaction.id}}),a=Oi(A);if(await Promise.all([i,a]),this.experienceOptions.workflow=await a,t){const A=JSON.parse(t);this.experienceOptions.layouts=Object.values(A.layouts).map((A=>A.layout)),await v(A),await n(A),this.experienceOptions.reloadedState=A}else this.experienceOptions.layouts=zi(this.experienceOptions.transaction,this.experienceOptions.workflow);this.experienceOptions.previewService=e&&e(await a),this.experienceOptions.renderableContextService=new wn(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&await(this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService));const o=new bi(this,this.experienceOptions);return await o.getWorkflowManager().getInitializationPromise(),o}throw new at("No workflow ID provided.")}getPreviewService(){return this.experienceOptions?.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new at("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new at("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}}function Ki(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 Vi{constructor(){Ki(this,"getProduct",void 0),Ki(this,"getCommandContext",void 0),Ki(this,"getAllLayoutData",void 0),Ki(this,"getMetadata",void 0),Ki(this,"getWorkflowMetadata",void 0),Ki(this,"getStepStorage",void 0),Ki(this,"getUpdatesPending",void 0)}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:""}}getTransactionCustomer(){}setTransactionCustomer(){}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 Wi(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 Xi;var qi;(qi=Xi||(Xi={})).SelectFrame="SelectFrame",qi.SelectImage="SelectImage",qi.Position="Position";class Zi extends Qi{constructor(A,t){super(A,t),Wi(this,"frameService",this.manager.getStepSpecificServices(this.getId())?.frameService)}selectVariant(A){const t=this.manager.getRegionElements(this.step.stepName);return Wn.selectVariant(this.step,A.getResource(),t,this.manager,(A=>this.setUpdateState(A)))}onFrameDataChanged(A){this.frameService&&this.frameService.onFrameDataChanged((t=>{t&&A(t)}))}selectImage(A){return Wn.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?Xi.SelectFrame:t||e||this.getImageData()?Xi.Position:Xi.SelectImage}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasOverlayImageUrl(){return this.step.data.overlayImageUrl}hasVaryingUpload(){return this.step.data.varyUpload}hasVaryingSelection(){return this.step.data.varySelection}}const $i=A=>{const t=GA(null),[e,n]=vA(void 0),[i,a]=vA(void 0),{addEvent:o,removeEvent:r,updateEvent:s,eventCache:c}=Nt(),[g,B]=vA(!1),[l,w]=vA(!1),{state:E,uiDispatcher:d}=Tt(),h=NA((A=>{const t=A;d(new Lt({zoom:Math.max(.1,Math.min(t,E.maxZoom))}))}),[d,E.maxZoom]),Q=NA((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&&(w(!1),B(!1))}),[t,c]),C=NA((A=>{o(A);"touch"===A.pointerType&&1===c.length&&(d(new Lt({selectedElement:void 0})),w(!0),B(!0))}),[t,l,c]),u=NA((A=>{s(A),A.isPrimary&&n({x:A.screenX,y:A.screenY});const t=1===c.length&&"touch"!==c[0].pointerType,o=2===c.length&&"touch"===c[0].pointerType;if(g&&o){const[A,t]=c,e=Math.abs(A.clientX-t.clientX),n=i;n&&h(E.zoom-.0055*(n-e)),a(e)}if(l&&(t||o)&&A.isPrimary){const t=(e?.x||A.screenX)-A.screenX,n=(e?.y||A.screenY)-A.screenY;d(new Lt({selectedElement:void 0,xTranslation:E.xTranslation-t/E.zoom,yTranslation:E.yTranslation-n/E.zoom}))}}),[E.xTranslation,E.yTranslation,E.zoom,l,g,h,c,e,i]),D=NA((A=>{g&&h(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);l&&!e&&t.current.setPointerCapture(A),!l&&e&&t.current.releasePointerCapture(A)}),[t,l,c]),xe([" "],(()=>{w(!0),d(new Lt({selectedElement:void 0}))}),(()=>w(!1))),xe(["Control"],(()=>B(!0)),(()=>B(!1)));const m=PA((()=>({cursor:l&&0===c.length?"grab":l&&1===c.length?"grabbing":g?"zoom-in":void 0,width:"100%",height:"100%",overflow:"clip"})),[l,g,c]);return kA("div",{ref:t,className:"transform-wrapper",onWheel:D,onPointerDown:C,onPointerUp:Q,onPointerCancel:Q,onPointerLeave:Q,onPointerMove:u,style:m,children:A.children})};export{ji as SpiffCommerceClient,A as CommandContext,lt as spiffCoreConfiguration,Re as PromiseQueue,Ne as QueueablePromise,Vi as MockWorkflowManager,gi as InformationMessageType,Qi as StepHandle,Yi as TextStepHandle,Zi as FrameStepHandle,mi as BulkStepHandle,Fi as ShapeStepHandle,pi as IllustrationStepHandle,Ii as MaterialStepHandle,fi as ModelStepHandle,Mi as PictureStepHandle,yi as QuestionStepHandle,jt as BulkPriceCalculationStrategy,di as Variant,ZA as OptionNotFoundError,$A as LayoutNotFoundError,_A as AssetNotFoundError,At as ResourceNotFoundError,tt as MisconfigurationError,it as ParseError,nt as UnhandledBehaviorError,yt as assetService,ki as designService,Ui as createDesign,St as optionService,gt as persistenceService,ht as graphQlManager,ni as toast,bn as FrameService,kn as getBoundedOffsets,Wn as frameStepService,Zn as modelStepService,qn as materialStepService,ti as shapeStepService,Ai as questionStepService,Kn as digitalContentStepService,$n as moduleStepService,_n as pictureStepService,si as textStepService,Xn as illustrationStepService,Ot as ProductCameraRig,Xi as FrameStep,Vt as ConversionLocation,Xt as ConversionDataType,Oi as getWorkflow,t as AssetType,e as BringForwardCommand,n as BringToFrontCommand,i as BringToBackCommand,a as CanvasCommand,o as CreateElementCommand,r as CreateLayoutCommand,s as DeleteElementCommand,c as FontAlignmentCommand,g as FontColorCommand,B as FontSizeCommand,l as FontSourceCommand,w as GroupCommand,E as LayoutElementFactory,d as LayoutElementType,h as MoveCommand,Q as ResizeCommand,C as RotateCommand,u as SendBackwardsCommand,D as StepAspectType,m as StepType,p as TextChangeCommand,I as UnitOfMeasurement,f as dataUrlFromExternalUrl,M as findElement,y as frameDataCache,F as generate,Y as getAxisAlignedBoundingBox,x as generateSVGWithUnknownColors,S as getAttributesFromArrayBuffer,v as rehydrateSerializedLayout,N as getFrameData,R as getSvgElement,H as loadFontFromDataUrl,U as loadFontFromExternalUrl,P as determineCorrectFontSizeAndLines,G as patternImageDataCache,Bn as generateCommands,k as registerJSDOM,ye as minZoom,mn as AdvancedEditor,$i as TransformWrapper,Dn as EditorCore,Rt as useLayouts,Tt as useEditorState,Ye as useEditorInteraction,xe as useShortcutCombination,kt as commandReducer,Gt as getDefaultState,vt as CommandContextContext,bt as AdvancedEditorStateProvider,Jt as AdvancedEditorContext,Lt as UICommand,Ut as EditorSubMenu,te as ElementEventType,ne as KeyEvent,Sn as gatherVaryingStepAspects};
887
887
  //# sourceMappingURL=module.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spiffcommerce/core",
3
- "version": "7.3.1",
3
+ "version": "7.3.2",
4
4
  "description": "Core client API for interacting with the Spiff Commerce backend.",
5
5
  "source": "src/index.ts",
6
6
  "main": "dist/main.js",