@spiffcommerce/core 0.5.7 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -1,4 +1,4 @@
1
- var e=require("papyrus/build/main/CommandContext"),t=require("papyrus/build/main/command"),a=(require("papyrus/build/main/Elements/factory"),require("spiff-preview"),require("papyrus/build/main/font")),i=require("swagger-client"),n=require("@apollo/client"),o=require("@apollo/client/link/context"),r=require("@apollo/client/link/error"),s=require("cross-fetch"),l=require("react"),c=require("react/jsx-runtime"),d=require("papyrus/build/main/types"),h=require("lodash.isequal"),p=require("papyrus/build/main/LayoutsState/types"),u=require("papyrus/build/main/math"),m=require("papyrus/build/main/text/algorithm/traditional"),f=require("papyrus/build/main/text/shared"),g=require("papyrus/build/main/image"),w=require("papyrus/build/main/LayoutsState"),y=require("papyrus/build/main/illustration"),S=require("canvg"),v=require("papyrus/build/main/generation/Workflow"),x=require("lodash.clonedeep"),C=require("papyrus/build/main/module/resolver"),b=require("lodash.debounce"),k=require("papyrus/build/main/frame"),E=require("qrcode"),I=require("papyrus/build/main/crossplatform"),N=require("react-dom/server"),R=require("papyrus/build/main/Elements/Patchwork"),O=require("papyrus/build/main/text/algorithm/autosize"),M=require("papyrus/build/main/generation");function T(e,t,a,i){Object.defineProperty(e,t,{get:a,set:i,enumerable:!0,configurable:!0})}function A(e){return e&&e.__esModule?e.default:e}function L(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}T(module.exports,"Client",(()=>Ut)),T(module.exports,"CommandContext",(()=>$eb7869949b641a40$re_export$CommandContext)),T(module.exports,"spiffCoreConfiguration",(()=>V)),T(module.exports,"PromiseQueue",(()=>_e)),T(module.exports,"QueueablePromise",(()=>Xe)),T(module.exports,"MockWorkflowManager",(()=>Ft)),T(module.exports,"InformationMessageType",(()=>Ct)),T(module.exports,"assetService",(()=>Ce)),T(module.exports,"optionService",(()=>P)),T(module.exports,"server",(()=>q)),T(module.exports,"persistenceService",(()=>Ee)),T(module.exports,"graphQlManager",(()=>W)),T(module.exports,"toast",(()=>gt)),T(module.exports,"FrameService",(()=>Je)),T(module.exports,"frameStepService",(()=>rt)),T(module.exports,"modelStepService",(()=>lt)),T(module.exports,"materialStepService",(()=>st)),T(module.exports,"patchworkStepService",(()=>pt)),T(module.exports,"shapeStepService",(()=>mt)),T(module.exports,"questionStepService",(()=>Ve)),T(module.exports,"digitalContentStepService",(()=>ot)),T(module.exports,"moduleStepService",(()=>ct)),T(module.exports,"pictureStepService",(()=>ut)),T(module.exports,"textStepService",(()=>vt)),T(module.exports,"illustrationStepService",(()=>De)),T(module.exports,"svgObjectURL",(()=>Pe)),T(module.exports,"generate",(()=>de)),T(module.exports,"CreateElementCommand",(()=>$eb7869949b641a40$re_export$CreateElementCommand)),T(module.exports,"TextChangeCommand",(()=>$eb7869949b641a40$re_export$TextChangeCommand)),T(module.exports,"FontAlignmentCommand",(()=>$eb7869949b641a40$re_export$FontAlignmentCommand)),T(module.exports,"FontColorCommand",(()=>$eb7869949b641a40$re_export$FontColorCommand)),T(module.exports,"LayoutElementFactory",(()=>$eb7869949b641a40$re_export$LayoutElementFactory)),T(module.exports,"minZoom",(()=>he)),T(module.exports,"AdvancedEditor",(()=>ve)),T(module.exports,"EditorCore",(()=>Se)),T(module.exports,"useLayouts",(()=>B)),T(module.exports,"useEditorState",(()=>Q)),T(module.exports,"useEditorInteraction",(()=>pe)),T(module.exports,"commandReducer",(()=>X)),T(module.exports,"getDefaultState",(()=>H)),T(module.exports,"CommandContextContext",(()=>$)),T(module.exports,"AdvancedEditorStateProvider",(()=>Y)),T(module.exports,"AdvancedEditorContext",(()=>_)),T(module.exports,"UICommand",(()=>Z)),T(module.exports,"EditorSubMenu",(()=>K)),T(module.exports,"ElementEventType",(()=>te)),T(module.exports,"KeyEvent",(()=>ie)),T(module.exports,"gatherVaryingStepAspects",(()=>Fe)),T(module.exports,"SpiffCommerce3DPreviewService",(()=>$eb7869949b641a40$re_export$SpiffCommerce3DPreviewService)),T(module.exports,"ProductCameraRig",(()=>$eb7869949b641a40$re_export$ProductCameraRig));const P=new class{constructor(){L(this,"cache",new Map),L(this,"getDisplayImageSource",(e=>{if(e){const t=e.displayImage?.links.find((e=>"cdn"===e.rel));if(t)return t.href}})),L(this,"getSelectedVariant",((e,t)=>{if(e&&0!==t.length)return e.variants.find((e=>e.id===t[0]))})),L(this,"getSelectedVariants",((e,t)=>e?.variants.filter((e=>t.includes(e.id)))||[]))}async cacheRequiredOptions(e){const t=e.steps.map((e=>e.optionId)).filter((e=>void 0!==e)),i=e.steps.map((e=>e.data.colourOptionId)).filter((e=>void 0!==e)),n=[...new Set([...t,...i])].map((async e=>{const t=await P.getLocalOrFromServer(q,e);"Font"===t.data.type&&t.data.variants.forEach((async e=>{if(e.assetKey){const t=(await Ce.getLocalOrFromServer(e.assetKey)).links.find((e=>"cdn"===e.rel))?.href;t&&await(0,a.loadFontFromExternalUrl)(t)}}))}));await Promise.allSettled([...n])}async getLocalOrFromServer(e,t){if(this.cache.has(t))return this.cache.get(t);const a=(await e.execute("getOptionV2",{id:t})).body;return this.cache.set(t,a),a}getLocalOrUndefined(e){if(e)return this.cache.get(e)}async getAssetTileImageForVariant(e){if(e.thumbnailKey){const t=await Ce.getLocalOrFromServer(e.thumbnailKey),a=t.links.find((e=>"thumbnail"===e.rel)),i=t.links.find((e=>"cdn"===e.rel));return a?.href||i?.href}const t=e.assetKey;if(t){const e=await Ce.getLocalOrFromServer(t),a=e.links.find((e=>"thumbnail"===e.rel)),i=e.links.find((e=>"cdn"===e.rel));return a?.href||i?.href}return e.materialId?e.materialId:""}getDefaultVariant(e){const t=e.variants;return 1===t.length?t[0]:void 0!==e.defaultVariant?t.find((t=>t.id===e.defaultVariant)):void 0}};function D(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const V=new class{constructor(){D(this,"defaultServerUrl","https://api.spiff.com.au"),D(this,"defaultServicesApiUrl","https://services.spiff.com.au"),D(this,"defaultHubUrl","https://hub.spiff.com.au"),D(this,"serverUrl",void 0),D(this,"servicesApiUrl",void 0),D(this,"hubUrl",void 0),D(this,"serverUrlCallbacks",void 0),this.serverUrl=this.defaultServerUrl,this.servicesApiUrl=this.defaultServicesApiUrl,this.hubUrl=this.defaultHubUrl,this.serverUrlCallbacks=[]}getServerUrl(){return this.serverUrl}getServicesApiUrl(){return this.servicesApiUrl}getHubUrl(){return this.hubUrl}setServerUrl(e){this.serverUrl=e,this.serverUrlCallbacks.forEach((e=>e()))}setServicesApiUrl(e){this.servicesApiUrl=e}setHubUrl(e){this.hubUrl=e}addServerUrlCallback(e){this.serverUrlCallbacks.push(e)}};function z(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}let U;const F=e=>{U=e},j=async()=>{const e={transactionOwnerId:U};return window.location.href.includes("/workflows/product/")?{...await new Promise((e=>{const t=V.getHubUrl();if(window.location.href.includes("localhost")||window.location.href.includes("ngrok"))return void e({});const a=i=>{i.origin===t&&(window.removeEventListener("message",a),e(i.data))};window.parent!==window&&(window.addEventListener("message",a,!1),window.parent.postMessage("ready",t))})),...e}:e};const q=new class{constructor(){z(this,"client",void 0),z(this,"uncachedOperations",[]),V.addServerUrlCallback((async()=>{this.client=void 0,this.client=await this.constructClient()}))}setUncachedOperations(e){this.uncachedOperations=e}async execute(e,t){const a=this.uncachedOperations.includes(e)?e+"_private":e;return new Promise(((e,i)=>{this.getClient().then((n=>{n.execute({operationId:a,parameters:t}).then((t=>e(t))).catch((e=>{e.response&&e.response.status&&e.response.status>=500||(!e.response&&i(new Error(e)),e.response&&i(new Error(`${e.response.status} ${e.response.url}`)))}))})).catch((e=>{i(e)}))}))}async syncAuth(e){const t=await j();if(t.bearer?e.authorizations={...e.authorizations,OAuth2:{token:{access_token:t.bearer,token_type:"Bearer"}}}:e.authorizations={...e.authorizations,OAuth2:{token:{access_token:"",token_type:"Bearer"}}},t.activeIntegration)e.authorizations={...e.authorizations,ActiveIntegration:t.activeIntegration};else{const t={...e.authorizations};delete t.ActiveIntegration,e.authorizations=t}if(t.partnerId)e.authorizations={...e.authorizations,PartnerId:t.partnerId};else{const t={...e.authorizations};delete t.PartnerId,e.authorizations=t}}async getClient(){return this.client||(this.client=await this.constructClient()),this.syncAuth(this.client),Promise.resolve(this.client)}async constructClient(){const e=await j(),t=V.getServerUrl()+"/v2/api-docs";return await A(i)(t,{authorizations:{OAuth2:{token:{access_token:e.bearer,token_type:"Bearer"}},PartnerId:e.partnerId}})}};const W=new class{constructor(){z(this,"shadowGraphqlClient",void 0),this.shadowGraphqlClient=this.constructShadowGraphqlClient(),V.addServerUrlCallback((()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()}))}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const e=(0,n.createHttpLink)({uri:`${V.getServerUrl()}/graphql`,fetch:A(s)}),t=(0,o.setContext)((async(e,{headers:t})=>{const a=t||{},i=await j();return i.bearer&&(a.Authorization=`Bearer ${i.bearer}`),i.partnerId&&(a.partnerId=i.partnerId),i.activeIntegration&&(a.activeIntegration=i.activeIntegration),i.transactionOwnerId&&(a.transactionOwnerId=i.transactionOwnerId),{headers:a}})),a=(0,r.onError)((({operation:e,graphQLErrors:t,networkError:a})=>{(t||[]).forEach((({message:t,locations:a,path:i})=>{console.log("[GraphQL Operation Error]"),console.log("Name:"+e.operationName),console.log("Query:"+JSON.stringify(e.query)),console.log(`Message: ${t}, Location: ${JSON.stringify(a,null,2)}, Path: ${i}`),console.log("Variables:"+JSON.stringify(e.variables))})),a&&console.log("GraphQL Network error")}));const i=new(0,n.InMemoryCache)({typePolicies:{Transaction:{fields:{transactionOwnerId:{read:(e=null)=>e},customLogoLink:{read:(e=null)=>e},workflowFooterLogoLink:{read:(e=null)=>e},workflowState:{read:(e=null)=>e},bulkSourceUrl:{read:(e=null)=>e}}}}});return new(0,n.ApolloClient)({link:(0,n.from)([a,t,e]),cache:i,name:"Core"})}},$=(0,l.createContext)(new(0,e.CommandContext)),B=()=>{const e=(0,l.useContext)($);(0,l.useEffect)((()=>{e.registerStateCallback((()=>{a(new Date)}))}),[e]);const[t,a]=(0,l.useState)(new Date);return{commandDispatcher:t=>{e.apply(t)},getLayoutById:t=>e.getLayoutById(t),getAllLayouts:()=>e.getAllLayouts(),getReducerState:()=>{const t=e.getState();return t||{transaction:{layouts:{},serializableWorkflow:{steps:[]}}}},lastUpdated:t,flattenSequence:(t,a)=>{e.flattenSequence(t,a)}}};let K;var G;(G=K||(K={})).None="None",G.FrameAdjustment="FrameAdjustment",G.FinalizeDesign="FinalizeDesign";const H=(e,t)=>({layoutId:e()[0].layoutState.layout.id,selectedElement:void 0,zoom:t,maxZoom:5,units:d.UnitOfMeasurement.Pixel,subMenu:K.None,activeModifierKeys:[],metaPressed:!1,elementEvent:void 0,scrolledMovement:!1}),X=(e,t)=>A(h)(e,t.apply(e))?e:t.apply(e),_=(0,l.createContext)({}),Y=e=>{const{getAllLayouts:t}=B(),[a,i]=(0,l.useReducer)(X,H(t,e.defaultZoom||1)),n=(0,l.useMemo)((()=>({state:a,uiDispatcher:i})),[a,i]);return(0,c.jsx)(_.Provider,{value:n,children:e.children})};class Z{constructor(e){var t,a,i;i=void 0,(a="changes")in(t=this)?Object.defineProperty(t,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[a]=i,this.changes=e}apply(e){return{...e,...this.changes}}}const Q=()=>(0,l.useContext)(_),J=7*window.devicePixelRatio,ee=(e,t,a,i)=>{const n=t.layout.width,o=t.layout.height,r=t.elements.filter((t=>t.id!==e.id&&!t.immutable&&!t.productOverlay)),s=r.map((e=>(0,u.getAxisAlignedBoundingBox)(e.x,e.y,e.width,e.height,e.rotation))),l=[],d=new Set;s.forEach((e=>d.add(e.minX))),s.forEach((e=>d.add(e.maxX))),[0,n/2,n].forEach((e=>d.add(e)));const h=new Set;s.forEach((e=>h.add(e.minY))),s.forEach((e=>h.add(e.maxY))),[0,o/2,o].forEach((e=>h.add(e)));const p=r.map((e=>e.y));for(let e=-315;e<=315;e+=45)p.push(e);const m=(0,u.getAxisAlignedBoundingBox)(e.x,e.y,e.width,e.height,e.rotation),f=[{value:m.minX,anchor:-1},{value:m.minX+(m.maxX-m.minX)/2,anchor:0},{value:m.minX+(m.maxX-m.minX),anchor:1}],g=[{value:m.minY,anchor:-1},{value:m.minY+(m.maxY-m.minY)/2,anchor:0},{value:m.minY+(m.maxY-m.minY),anchor:1}],w=[{value:e.rotation,anchor:0}],y=(e,t,i,r)=>{const s=[];return t.forEach((t=>{const l=i.find((e=>(0,u.isCloseToValue)(t,e.value,2*a))),[d,h]=((e,t)=>[{x:"x"===e?t:0,y:"x"===e?0:t},{x:"x"===e?t:n,y:"x"===e?o:t}])(e,t),p="rotation"===e?null:(0,c.jsx)("line",{x1:d.x,y1:d.y,x2:h.x,y2:h.y,stroke:r||"#D61B5C",strokeDasharray:5*a,strokeWidth:1.2*a,overflow:"overlay"},`${e}-${t}-${d.x}-${d.y}-${h.x}-${h.y}`);void 0!==l&&s.push({type:e,value:t,anchorPoint:l.anchor,svgNode:p,guidelineCoordinates:[d,h]})})),s};return l.push(...y("x",Array.from(d),f,i)),l.push(...y("y",Array.from(h),g,i)),l.push(...y("rotation",p,w,i)),l};let te;var ae;let ie;var ne;(ae=te||(te={})).Translate="Translate",ae.Rotate="Rotate",ae.Resize="Resize",(ne=ie||(ie={})).ControlLeft="ControlLeft",ne.ControlRight="ControlRight",ne.Equal="Equal",ne.MetaLeft="MetaLeft",ne.MetaRight="MetaRight",ne.Minus="Minus",ne.ArrowLeft="ArrowLeft",ne.ArrowRight="ArrowRight",ne.ArrowUp="ArrowUp",ne.ArrowDown="ArrowDown",ne.AltLeft="AltLeft",ne.AltRight="AltRight",ne.Delete="Delete",ne.Backspace="Backspace";const oe=(e,a,i,n)=>{const o=()=>{switch(i){case d.UnitOfMeasurement.Pixel:return 1;case d.UnitOfMeasurement.Millimeter:return u.mmPerPixel;case d.UnitOfMeasurement.Centimeter:return u.cmPerPixel;default:throw new Error("Unknown unit of measurement")}};let r=a.x,s=a.y,l=a.x,c=a.y;switch(e){case ie.ArrowLeft:l=a.x-1/o();break;case ie.ArrowUp:c=a.y-1/o();break;case ie.ArrowRight:l=a.x+1/o();break;case ie.ArrowDown:c=a.y+1/o();break;default:throw new Error("Unhandled element interaction!")}const h=(0,u.getAxisAlignedBoundingBox)(l,c,a.width,a.height,a.rotation);return(!n||h.minX>=n.left&&h.maxX<=n.left+n.width&&h.minY>=n.top&&h.maxY<=n.top+n.height)&&(r=l,s=c),new(0,t.MoveCommand)(a.id,r,s)};var re=0,se=0,le=0;const ce=(e,a,i,n,o,r,s)=>{const l=((e,t,a,i,n,o,r)=>{const s=i.width/t.width,l=i.height/t.height,c=e.movementX/s,h=e.movementY/l,g=a.rotation*Math.PI/180,w=Math.sin(g),y=Math.cos(g);let S;switch(n.type){case te.Resize:let t={top:a.y,left:a.x,width:a.width,height:a.height,rotation:a.rotation,fontSize:a.fontSize},v=t;switch(n.screenAxis){case d.ScaleAxis.North:{const e=-c*w+h*y,i=a.y+e,n=a.height-e,o=(0,u.getElementVertices)({...a}).center,r=(0,u.getElementVertices)({...a,y:i,height:n}).center,s=(0,u.rotateAroundPoint)(r,o,g),l=s.x-a.width/2,d=s.y-n/2;v={...t,left:l,top:d,height:n}}break;case d.ScaleAxis.East:{const e=c*y+h*w,i=a.width+e;let n=a.height;if(a.type===p.LayoutElementType.Textbox){const e=a;n=(0,m.calculateTextboxLines)(e.fontSize,e.fontData,e,e.input||e.text||"",e.lineHeight).requiredHeight}const o=(0,u.getElementVertices)({...a}).center,r=(0,u.getElementVertices)({...a,width:i,height:n}).center,s=(0,u.rotateAroundPoint)(r,o,g),l=s.x-i/2,d=s.y-n/2;v={...t,left:l,top:d,width:i,height:n}}break;case d.ScaleAxis.West:{const e=c*y+h*w,i=a.x+e,n=a.width-e;let o=a.height;if(a.type===p.LayoutElementType.Textbox){const e=a;o=(0,m.calculateTextboxLines)(e.fontSize,e.fontData,e,e.input||e.text||"",e.lineHeight).requiredHeight}const r=(0,u.getElementVertices)({...a}).center,s=(0,u.getElementVertices)({...a,width:n,height:o,x:i}).center,l=(0,u.rotateAroundPoint)(s,r,g),d=l.x-n/2,f=l.y-o/2;v={...t,left:d,top:f,width:n,height:o}}break;case d.ScaleAxis.South:{const e=-c*w+h*y,i=a.height+e,n=(0,u.getElementVertices)({...a}).center,o=(0,u.getElementVertices)({...a,height:i}).center,r=(0,u.rotateAroundPoint)(o,n,g),s=r.x-a.width/2,l=r.y-i/2;v={...t,left:s,top:l,height:i}}break;case d.ScaleAxis.Northeast:{const e=c*y+h*w,i=a.width+e;let n=a.height+e,o=a.y-e,r=a.fontSize;if(a.type===p.LayoutElementType.Textbox){const t=a;r=t.fontSize+e/8,n=(0,m.calculateTextboxLines)(r,t.fontData,t,t.input||t.text||"",t.lineHeight).requiredHeight;const i=t.lineHeight||f.defaultLineHeightFactor;o=a.y-e*i/8}const s=(0,u.getElementVertices)({...a}).center,l=(0,u.getElementVertices)({...a,width:i,height:n,y:o}).center,d=(0,u.rotateAroundPoint)(l,s,g),S=d.x-i/2,x=d.y-n/2;v={...t,left:S,top:x,width:i,height:n,fontSize:r}}break;case d.ScaleAxis.Northwest:{const e=-c*y+-h*w,i=a.x-e,n=a.width+e;let o=a.y-e,r=a.height+e,s=a.fontSize;if(a.type===p.LayoutElementType.Textbox){const t=a;s=t.fontSize+e/8,r=(0,m.calculateTextboxLines)(s,t.fontData,t,t.input||t.text||"",t.lineHeight).requiredHeight;const i=t.lineHeight||f.defaultLineHeightFactor;o=a.y-e*i/8}const l=(0,u.getElementVertices)({...a}).center,d=(0,u.getElementVertices)({...a,x:i,y:o,width:n,height:r}).center,S=(0,u.rotateAroundPoint)(d,l,g),x=S.x-n/2,C=S.y-r/2;v={...t,left:x,top:C,width:n,height:r,fontSize:s}}break;case d.ScaleAxis.Southeast:{const e=c*y+h*w,i=a.width+e;let n=a.height+e,o=a.fontSize;if(a.type===p.LayoutElementType.Textbox){const t=a;o=t.fontSize+e/8,n=(0,m.calculateTextboxLines)(o,t.fontData,t,t.input||t.text||"",t.lineHeight).requiredHeight}const r=(0,u.getElementVertices)({...a}).center,s=(0,u.getElementVertices)({...a,width:i,height:n}).center,l=(0,u.rotateAroundPoint)(s,r,g),d=l.x-i/2,f=l.y-n/2;v={...t,left:d,top:f,width:i,height:n,fontSize:o}}break;case d.ScaleAxis.Southwest:{const e=-c*y+-h*w,i=a.width+e;let n=a.x-e,o=a.height+e,r=a.fontSize;if(a.type===p.LayoutElementType.Textbox){const t=a;r=t.fontSize+e/8,o=(0,m.calculateTextboxLines)(r,t.fontData,t,t.input||t.text||"",t.lineHeight).requiredHeight}const s=(0,u.getElementVertices)({...a}).center,l=(0,u.getElementVertices)({...a,width:i,height:o,x:n}).center,d=(0,u.rotateAroundPoint)(l,s,g),f=d.x-i/2,S=d.y-o/2;v={...t,left:f,top:S,width:i,height:o,fontSize:r}}}return S=(0,u.getAxisAlignedBoundingBox)(v.left,v.top,v.width,v.height,v.rotation),(!r||S.minX>=r.left&&S.maxX<=r.left+r.width&&S.minY>=r.top&&S.maxY<=r.top+r.height)&&(t=v),t;case te.Rotate:const x={x:e.clientX,y:e.clientY};let C,b=a.rotation;const k=(0,u.getElementVertices)(a,i,{x:s,y:l}),E=(0,u.findAngle)(x,k.c,k.d),I=(0,u.findAngle)(x,k.d,k.c);if(0===o.filter((e=>"rotation"===e.type)).length)le=0,C=(a.rotation+E-I)%360;else{le+=Math.sqrt(c**2+h**2);const e=Math.abs(le)>J/s;C=e?(a.rotation+E-I)%360:o.find((e=>"rotation"===e.type))?.value||0,e&&(le=0)}return S=(0,u.getAxisAlignedBoundingBox)(a.x,a.y,a.width,a.height,C),(!r||S.minX>=r.left&&S.maxX<=r.left+r.width&&S.minY>=r.top&&S.maxY<=r.top+r.height)&&(b=C),{top:a.y,left:a.x,width:a.width,height:a.height,rotation:b};case te.Translate:let N,R,O=a.x,M=a.y;if(0===o.filter((e=>"rotation"!==e.type)).length)re=0,se=0,N=a.x+c,R=a.y+h;else{const e=o.find((e=>"x"===e.type)),t=o.find((e=>"y"===e.type));e||(re=0),t||(se=0);const i=Math.abs(re)>J/s,n=Math.abs(se)>J/l;N=e?i?a.x+re:a.x:a.x+c,R=t?n?a.y+se:a.y:a.y+h,re=i?0:re+c,se=n?0:se+h}return S=(0,u.getAxisAlignedBoundingBox)(N,R,a.width,a.height,a.rotation),(!r||S.minX>=r.left&&S.maxX<=r.left+r.width&&S.minY>=r.top&&S.maxY<=r.top+r.height)&&(O=N,M=R),{top:M,left:O,width:a.width,height:a.height,rotation:a.rotation}}})(e,a,i,n,o,r,s),c=[];if(i.type===p.LayoutElementType.Textbox){const e=i;c.push(new(0,t.TextChangeCommand)(e.id,e.text||e.input||""))}if(c.push(new(0,t.MoveCommand)(i.id,l.left,l.top),new(0,t.ResizeCommand)(i.id,l.width,l.height),new(0,t.RotateCommand)(i.id,l.rotation)),i.type===p.LayoutElementType.Textbox){const e=i;l.fontSize&&e.fontSize!==l.fontSize&&c.push(new(0,t.FontSizeCommand)(e.id,l.fontSize))}return c},de=()=>{const e=()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1);return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()},he=.5,pe=(e,a,i,n,o,r,s)=>{const{state:c,uiDispatcher:d}=(0,l.useContext)(_),{getLayoutById:h,getReducerState:p,flattenSequence:u}=B(),[m,f]=(0,l.useState)(void 0),[g,w]=(0,l.useState)(void 0),y=h(c.layoutId);(0,l.useEffect)((()=>{if("adjustment"===o&&e?.current&&n){if(n<he)return void d(new Z({zoom:he}));if(n>c.maxZoom)return void d(new Z({zoom:c.maxZoom}));d(new Z({zoom:n}))}}),[n,d,e,o,c.maxZoom]);const S=(0,l.useCallback)(((e,t)=>{d(new Z({zoom:t}));const n=a?.current?.scrollWidth-a?.current?.clientWidth!=0,r=a?.current?.scrollHeight-a?.current?.clientHeight!=0;a.current&&i.current&&!c.scrolledMovement&&"advanced"===o&&(r&&(a.current.scrollTop=i.current.offsetTop+(a.current.scrollHeight-a.current.clientHeight)/2),n&&(a.current.scrollLeft=(i.current.offsetLeft+a.current.scrollWidth-a.current.clientWidth)/2))}),[d,a,i,c.scrolledMovement,o]);(0,l.useEffect)((()=>{c.zoom<=1&&d(new Z({scrolledMovement:!1}))}),[d,c.zoom]);const v=a?.current?.getBoundingClientRect(),x=((v?.width||1)+(v?.height||1))/2,C=(y.layoutState.layout.width+y.layoutState.layout.height)/2/x/c.zoom,b=(0,l.useMemo)((()=>{const e=c.activeModifierKeys,t=c.elementEvent,a=e.includes(ie.ControlLeft)||e.includes(ie.MetaLeft)||e.includes(ie.ControlRight)||e.includes(ie.MetaRight);if(!c.selectedElement||!t||a)return[];const i=t&&t.type===te.Translate,n=t&&t.type===te.Rotate,o=y.layoutState.elements.find((e=>e.id===c.selectedElement));return(i||n)&&o?ee(o,y.layoutState,C,s):[]}),[c.selectedElement,c.elementEvent,c.activeModifierKeys,y.layoutState,C]),k=(0,l.useCallback)((()=>{const e=de();f(e),w(p().transaction)}),[p]),E=(0,l.useCallback)((()=>{d(new Z({selectedElement:void 0}))}),[d]),I=(0,l.useCallback)((()=>{d(new Z({scrolledMovement:!0}))}),[d]),N=(0,l.useCallback)(((i,n)=>{const o=y.layoutState.elements.find((e=>e.id===c.selectedElement));if(!(c.elementEvent&&e.current&&a.current&&c.selectedElement&&o))return;a.current.hasPointerCapture(i.pointerId)||a.current.setPointerCapture(i.pointerId);const s=e.current.getBoundingClientRect(),l=new(0,t.GroupCommand)(ce(i,y.layoutState.layout,o,s,c.elementEvent,b,n));l.sequenceId=m,r(l)}),[y.layoutState.elements,y.layoutState.layout,c.elementEvent,e,c.selectedElement,a,b,r]),R=(0,l.useCallback)((e=>{d(new Z({elementEvent:e}))}),[d]),O=(0,l.useCallback)((()=>{d(new Z({elementEvent:void 0})),m&&g&&(u(m,g),f(void 0),w(void 0))}),[d,m,g,u]),M=(0,l.useCallback)(((e,a)=>{let i=c.zoom;const n=c.maxZoom,s=c.selectedElement,l=c.activeModifierKeys;if((l.includes(ie.AltLeft)||l.includes(ie.AltRight))&&(e.code===ie.Equal||e.code===ie.Minus)){const t=.05*n;e.code===ie.Equal?d(new Z({zoom:i+t<=n?i+=t:i})):d(new Z({zoom:i-t>=he?i-t:i}))}const h=y.layoutState.elements.find((e=>e.id===s));if(s&&h){if(e.code===ie.MetaLeft||e.code===ie.ControlLeft||e.code===ie.MetaRight||e.code===ie.ControlRight){const t=e.code,a=c.activeModifierKeys;if(!a.includes(t))return d(new Z({activeModifierKeys:a.concat(t)}))}if(e.code===ie.ArrowDown||e.code===ie.ArrowUp||e.code===ie.ArrowLeft||e.code===ie.ArrowRight){d(new Z({elementEvent:{type:te.Translate}}));const t=oe(e.code,h,c.units,a);r(t),d(new Z({elementEvent:void 0}))}e.code!==ie.Delete&&e.code!==ie.Backspace||"advanced"!==o||(d(new Z({selectedElement:void 0})),r(new(0,t.DeleteElementCommand)(h.id)))}}),[r,d,y.layoutState.elements,o,c.activeModifierKeys,c.maxZoom,c.selectedElement,c.units,c.zoom]),T=(0,l.useCallback)((e=>{if(e.code===ie.MetaLeft||e.code===ie.ControlLeft||e.code===ie.MetaRight||e.code===ie.ControlRight){const t=c.activeModifierKeys,a=e.code;d(new Z({activeModifierKeys:t.filter((e=>e!==a))}))}}),[d,c.activeModifierKeys]);return{guidelines:b,scale:C,zoomableElementRef:i,setElementEvent:R,handleZoom:S,handleKeyDown:M,handleKeyUp:T,handlePointerPressedBackground:E,handlePointerReleased:O,handlePointerMove:N,handleScroll:I,handleSequenceStart:k}},ue=e=>{const{x:t,y:a,cursorStyle:i,onPointerDown:n,handleClass:o,cornerRadius:r,color:s,strokeWidth:l}=e;return(0,c.jsx)("circle",{className:o,cx:t,cy:a,r:r,fill:"#ffffff",style:{cursor:i},stroke:s,strokeWidth:l,onPointerDown:n})},me=e=>{const{x:t,y:a,width:i,height:n,cursorStyle:o,onPointerDown:r,edgeHandleRadius:s,color:l,strokeWidth:d}=e;return(0,c.jsx)("rect",{x:t,y:a,width:i,height:n,rx:s,fill:"#ffffff",style:{cursor:o},stroke:l,strokeWidth:d,onPointerDown:r})},fe=e=>{const{color:t,elementHeight:a,elementWidth:i,onBeginResize:n,rotation:o,scaleFactor:r,disableX:s,disableY:h}=e,p=7.5*r,m=3*r,f=28*r,g=6*r,w=1.2*r,y=a-2*p,S=(0,l.useCallback)(((e,t,a)=>{e.stopPropagation(),n(t,a)}),[n]),v=(0,l.useCallback)((e=>S(e,(0,u.currentDirection)(d.ScaleAxis.West,360-o),d.ScaleAxis.West)),[S,o]),x=(0,l.useCallback)((e=>S(e,(0,u.currentDirection)(d.ScaleAxis.East,360-o),d.ScaleAxis.East)),[S,o]),C=(0,l.useCallback)((e=>S(e,(0,u.currentDirection)(d.ScaleAxis.North,360-o),d.ScaleAxis.North)),[S,o]),b=(0,l.useCallback)((e=>S(e,(0,u.currentDirection)(d.ScaleAxis.South,360-o),d.ScaleAxis.South)),[S,o]),k=(0,l.useCallback)((e=>S(e,d.ScaleAxis.Northwest,d.ScaleAxis.Northwest)),[S]),E=(0,l.useCallback)((e=>S(e,d.ScaleAxis.Northeast,d.ScaleAxis.Northeast)),[S]),I=(0,l.useCallback)((e=>S(e,d.ScaleAxis.Southwest,d.ScaleAxis.Southwest)),[S]),N=(0,l.useCallback)((e=>S(e,d.ScaleAxis.Northeast,d.ScaleAxis.Southeast)),[S]),R=f<=y;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ue,{x:0,y:0,cursorStyle:"nwse-resize",onPointerDown:k,handleClass:"cornerNorthWest",cornerRadius:p,color:t,strokeWidth:w}),R?(0,c.jsx)(ue,{x:i,y:0,cursorStyle:"nesw-resize",onPointerDown:E,handleClass:"cornerNorthEast",cornerRadius:p,color:t,strokeWidth:w}):void 0,R?(0,c.jsx)(ue,{x:i,y:a,cursorStyle:"nwse-resize",onPointerDown:N,handleClass:"cornerSouthEast",cornerRadius:p,color:t,strokeWidth:w}):void 0,R?(0,c.jsx)(ue,{x:0,y:a,cursorStyle:"nesw-resize",onPointerDown:I,handleClass:"cornerSouthWest",cornerRadius:p,color:t,strokeWidth:w}):void 0,R&&!s?(0,c.jsx)(me,{x:-g/2,y:a/2-f/2,width:g,height:f,onPointerDown:v,edgeHandleRadius:m,cursorStyle:"ew-resize",color:t,strokeWidth:w}):void 0,R&&!h?(0,c.jsx)(me,{x:i/2-f/2,y:a-g/2,width:f,height:g,onPointerDown:b,edgeHandleRadius:m,cursorStyle:"ns-resize",color:t,strokeWidth:w}):void 0,s?void 0:(0,c.jsx)(me,{x:i-g/2,y:a/2-Math.min(f,.8*a)/2,width:g,height:Math.min(f,.8*a),onPointerDown:x,edgeHandleRadius:m,cursorStyle:"ew-resize",color:t,strokeWidth:w}),R&&!h?(0,c.jsx)(me,{x:i/2-f/2,y:-g/2,width:f,height:g,onPointerDown:C,edgeHandleRadius:m,cursorStyle:"ns-resize",color:t,strokeWidth:w}):void 0]})},ge=e=>{const{color:t,elementWidth:a,onBeginRotate:i,scaleFactor:n}=e,o=(0,l.useCallback)((e=>{e.stopPropagation(),i()}),[i]),r=10*n,s=1.2*n;return(0,c.jsxs)("g",{children:[(0,c.jsx)("circle",{cx:a/2,cy:-2.5*r,r:1.3*r,fill:"rgba(0, 0, 0, 0.5)",opacity:.4,style:{cursor:"ew-resize"},onPointerDown:o}),(0,c.jsx)("circle",{cx:a/2,cy:-2.5*r,r:r,fill:"#fff",style:{cursor:"ew-resize"},stroke:t,strokeWidth:s,onPointerDown:o}),(0,c.jsxs)("svg",{x:a/2-r,y:-2.5*r-r,xmlns:"http://www.w3.org/2000/svg",style:{cursor:"ew-resize"},height:2*r,viewBox:"0 0 24 24",width:2*r,fill:t,onPointerDown:o,children:[(0,c.jsx)("path",{d:"M0 0h24v24H0z",fill:"none"}),(0,c.jsx)("path",{d:"M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z"})]})]})},we=e=>{const{color:t,height:a,highlighted:i,id:n,immutable:o,onBeginMove:r,onBeginResize:s,onBeginRotate:d,onPointerEnter:h,onPointerLeave:p,onSelected:u,pressed:m,rotation:f,scaleFactor:g,selected:w,width:y,x:S,y:v,disableX:x,disableY:C}=e,b=1.2*g,k=(0,l.useCallback)((e=>{2===e.button&&(e.stopPropagation(),u(n,e)),0===e.button&&(e.stopPropagation(),!w&&u(n,e),r())}),[n,w,u,r]),E=(0,l.useCallback)((()=>{h(n)}),[n,h]),I=(0,l.useCallback)((()=>{p(n)}),[n,p]),N=o?void 0:w?m?"grabbing":"grab":"pointer",R=o?"none":"visibleFill";return(0,c.jsxs)("g",{transform:`translate(${S}, ${v}) rotate(${f} ${y/2} ${a/2})`,children:[(0,c.jsx)("rect",{className:"interactableInnerRect",width:y,height:a,stroke:w||i?t:"none",pointerEvents:R,fill:"none",strokeWidth:b,style:{cursor:N},onPointerDown:o?void 0:k,onPointerEnter:o?void 0:E,onPointerLeave:o?void 0:I}),w&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ge,{color:t,elementWidth:y,onBeginRotate:d,scaleFactor:g}),(0,c.jsx)(fe,{color:t,elementHeight:a,elementWidth:y,rotation:f,scaleFactor:g,onBeginResize:s,disableX:x,disableY:C})]})]})},ye=({primaryColor:e,containerHeight:t,containerWidth:a,customViewbox:i,editorRef:n,elementEvent:o,guidelines:r,layoutHeight:s,layoutWidth:d,targetedElements:h,scale:u,selectedElement:m,onElementEvent:f,onElementSelected:g,onSequenceStart:w})=>{const{state:y}=Q(),{getLayoutById:S}=B(),v=S(y.layoutId),[x,C]=(0,l.useState)(void 0),b=(0,l.useCallback)((e=>{C(e)}),[]),k=(0,l.useCallback)((e=>{x===e&&C(void 0)}),[x]),E=(0,l.useCallback)((()=>{w(),f({type:te.Translate})}),[f]),I=(0,l.useCallback)(((e,t)=>{w(),f({type:te.Resize,relativeAxis:e,screenAxis:t})}),[f]),N=(0,l.useCallback)((()=>{w(),f({type:te.Rotate})}),[f]),R=i||{x:0,y:0,width:d,height:s},O=u*(Math.sqrt(R.width*R.height)/1e3)*(100/Math.sqrt(t*a))*Math.sqrt((M=a/t,Math.exp(Math.abs(Math.log(M)))));var M;const T=v.layoutState.elements.findIndex((({id:e})=>e===m)),A=[...v.layoutState.elements];return T>=0&&A.push(A.splice(T,1)[0]),(0,c.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",style:{touchAction:"none",position:"absolute",maxWidth:"100%",maxHeight:"100%"},width:"100%",height:"100%",viewBox:`${R.x} ${R.y} ${R.width} ${R.height}`,overflow:"overlay",children:[(0,c.jsx)("rect",{fill:"none",stroke:"none",ref:n,width:d,height:s}),r.map((e=>e.svgNode)),A.map((t=>{const a=void 0!==m&&t.id===m,i=a&&void 0!==o,n=void 0!==x&&t.id===x;return(0,c.jsx)(we,{color:e,id:t.id,selected:a,highlighted:n,pressed:i,x:t.x,y:t.y,disableX:t.type===p.LayoutElementType.Frame,disableY:t.type===p.LayoutElementType.Textbox||t.type===p.LayoutElementType.Frame,width:t.width,height:t.height,rotation:t.rotation,immutable:t.immutable||h&&!h.includes(t.id),onSelected:g,onBeginMove:E,onBeginResize:I,onBeginRotate:N,onPointerEnter:b,onPointerLeave:k,scaleFactor:O},t.id)}))]})},Se=e=>{const{color:t,editorRef:a,zoomableElementRef:i,interactionElementRef:n,guidelines:o,isMakingAdjustments:r,viewmask:s,visibleLayoutId:d,xTranslation:h,yTranslation:p,targetedElements:u,borderRadius:m,handleContextMenu:f,handleKeyDown:g,handleKeyUp:w,handlePointerMove:y,handlePointerPressedBackground:S,handlePointerReleased:v,handleScroll:x,onSequenceStart:C,setElementEvent:b,onElementSelected:k}=e,{getLayoutById:E}=B(),I=E(d),N=I.layoutState,{state:R}=Q(),O=(0,l.useCallback)((e=>{if(s){const t={left:s.x,top:s.y,width:s.width,height:s.height,panelId:"",rotation:0};return g(e,t)}return g(e)}),[g,s]),M=(0,l.useCallback)((e=>{if(s){const t={left:s.x,top:s.y,width:s.width,height:s.height,panelId:"",rotation:0};return y(e,t)}return y(e)}),[y,s]);return(0,c.jsx)("div",{style:{justifyContent:"center",position:"relative",height:"100%",width:"100%",scrollbarWidth:"none",outline:"none"},onContextMenu:f,onKeyDown:O,onKeyUp:w,onPointerDown:S,onPointerMoveCapture:M,onPointerUp:v,onWheelCapture:x,ref:n,tabIndex:-1,children:(0,c.jsxs)("div",{ref:i,style:{height:"100%",transform:`scale(${R.zoom}) translate(${h}px, ${p}px)`,display:"grid",filter:"drop-shadow(rgba(0, 0, 0, 0.2) 0px 0px 6px)"},children:[e.children,I.getComponentWithProps({height:r?"100%":"auto",maxHeight:"100%",maxWidth:"100%",position:"absolute",viewmask:s,width:r?"100%":"auto",borderRadius:m}),(0,c.jsx)(ye,{primaryColor:t,containerHeight:i.current?.offsetHeight||1024,containerWidth:i.current?.offsetWidth||1024,editorRef:a,elementEvent:R.elementEvent,guidelines:o,layoutHeight:N.layout.height,layoutWidth:N.layout.width,onElementEvent:b,onSequenceStart:C,onElementSelected:k,scale:10/R.zoom,selectedElement:R.selectedElement,targetedElements:u})]})})},ve=({color:e,borderRadius:a,guidelineColor:i,handleContextMenu:n,onElementSelected:o})=>{const{commandDispatcher:r,getLayoutById:s}=B(),{state:d,uiDispatcher:h}=Q(),u=(0,l.useRef)(null),m=(0,l.useRef)(null),f=(0,l.useRef)(null),{guidelines:g,handleKeyDown:w,handleKeyUp:y,handlePointerMove:S,handlePointerPressedBackground:v,handlePointerReleased:x,handleScroll:C,handleSequenceStart:b,setElementEvent:k}=pe(u,m,f,void 0,"advanced",r,i),E=(0,l.useCallback)(((e,a)=>{const i=s(d.layoutId).layoutState.elements.find((t=>t.id===e));if(e&&i&&i.type===p.LayoutElementType.Textbox){const a=i.algorithm;(!a||a===p.TextAlgorithm.Autosize)&&r(new(0,t.FontAlgorithmCommand)(e,p.TextAlgorithm.Traditional))}o&&o(e,a),h(new Z({selectedElement:e}))}),[r,s,d.layoutId,h]);return(0,c.jsx)(Se,{color:e,editorRef:u,interactionElementRef:m,zoomableElementRef:f,guidelines:g,visibleLayoutId:d.layoutId,xTranslation:0,yTranslation:0,borderRadius:a,handleContextMenu:n,handleKeyDown:w,handleKeyUp:y,handlePointerMove:S,handlePointerPressedBackground:v,handlePointerReleased:x,handleScroll:C,onSequenceStart:b,setElementEvent:k,onElementSelected:E})};function xe(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const Ce=new class{constructor(){xe(this,"server",void 0),xe(this,"cache",new Map),xe(this,"materialCache",new Map),xe(this,"loadImageAsFileInfo",(async e=>{const t=await e.arrayBuffer(),a=await(0,g.getAttributesFromArrayBuffer)(t);return{name:e.name.substring(e.name.lastIndexOf("/")+1),blob:((e,t)=>{let a=atob(e.split(",")[1]),i=[];for(let e=0;e<a.length;e++)i.push(a.charCodeAt(e));return new Blob([new Uint8Array(i)],{type:t})})(a.dataUrl,e.type)}})),this.server=q}async getLocalOrFromServer(e){if(this.cache.has(e))return this.cache.get(e);const t=(async()=>(await q.execute("getAssetByKeyV2",{assetKey:e.replace(/\//g,"_")})).body)();return this.cache.set(e,t),t}async getMaterialLocalOrFromServer(e){if(this.materialCache.has(e))return this.materialCache.get(e);const t=(async()=>(await q.execute("getMaterialV2",{id:e})).body)();return this.materialCache.set(e,t),t}async uploadAssetWithProgress(e,t,a,i,n,o){const r=await this.dispatchCreateAssetRequest(e,t,n,o);var s=new XMLHttpRequest;return s.open("PUT",r.assetResponse.uploadUrl,!0),s.setRequestHeader("Content-Type",r.mimeType),s.setRequestHeader("Cache-Control","public,max-age=31536000,immutable"),s.upload.onprogress=e=>{e.lengthComputable&&a(100*e.loaded/e.total)},s.onload=()=>{const e=r.assetResponse.asset;i(e)},s.onerror=()=>{console.warn("Asset upload failed")},s.send(e.blob),r.assetResponse.asset}async dispatchCreateAssetRequest(e,t,a,i){const n=e.blob.type?e.blob.type:this.guessMIME(e.name);return{assetResponse:(await this.server.execute("createAsset",{assetDetails:{name:e.name,type:t,mimeType:n,storageOwnerId:i,userAnonymous:!0}},a)).body,mimeType:n}}guessMIME(e){const t=e.split(".").pop();switch(t){case"glb":return"model/gltf-binary";case"ttf":return"font/ttf";case"mkv":return"video/x-matroska";default:throw new Error("Unexpected mimetype: "+t)}}};class be{get(e){return localStorage.getItem(e)||void 0}set(e,t){localStorage.setItem(e,t)}remove(e){localStorage.removeItem(e)}getMap(e){const t=this.get(e);if(t)return new Map(JSON.parse(t))}setMap(e,t){const a=JSON.stringify([...t.entries()]);this.set(e,a)}}class ke{constructor(){var e,t,a;e=this,t="storage",a=new Map,t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}get(e){return this.storage.get(e)||void 0}set(e,t){this.storage.set(e,t)}remove(e){this.storage.delete(e)}getMap(e){const t=this.get(e);if(t)return new Map(JSON.parse(t))}setMap(e,t){const a=JSON.stringify([...t.entries()]);this.set(e,a)}}const Ee=(()=>{try{return localStorage?new be:new ke}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new ke}})(),Ie=n.gql`
1
+ var t=require("react/jsx-runtime"),e=require("opentype.js"),A=require("buffer"),n=require("axios"),i=require("https"),a=require("file-type"),o=require("util"),s=require("css"),r=require("svg-path-bbox"),c=require("react-dom/server"),g=require("lodash.clonedeep"),l=require("canvas"),B=require("exif"),d=require("swagger-client"),h=require("@apollo/client"),w=require("@apollo/client/link/context"),E=require("@apollo/client/link/error"),u=require("cross-fetch"),C=require("react"),Q=require("lodash.isequal");require("@babylonjs/core/Engines/Extensions/engine.views"),require("@babylonjs/core/Materials/Textures/Loaders/ddsTextureLoader"),require("@babylonjs/core/Materials/Textures/Loaders/envTextureLoader"),require("@babylonjs/core/Materials/Textures/Loaders/ktxTextureLoader"),require("@babylonjs/core/Misc/screenshotTools"),require("@babylonjs/core/Rendering/boundingBoxRenderer"),require("@babylonjs/loaders/glTF/2.0"),require("@babylonjs/core/Debug/debugLayer"),require("@babylonjs/core/Helpers/sceneHelpers");var p=require("@babylonjs/core/Loading/sceneLoader"),m=require("@babylonjs/core/Materials/PBR/pbrMaterial"),f=require("@babylonjs/core/Materials/Textures/mirrorTexture"),D=require("@babylonjs/core/Maths/math"),I=require("@babylonjs/core/Probes/reflectionProbe"),x=require("@babylonjs/loaders/glTF"),y=require("@babylonjs/core/Actions/actionManager"),M=require("@babylonjs/core/Actions/directActions"),F=require("@babylonjs/core/Engines/engine"),v=require("@babylonjs/core/Engines/nullEngine"),Y=require("@babylonjs/core/Layers/glowLayer"),S=require("@babylonjs/core/Layers/highlightLayer"),N=require("@babylonjs/core/Materials/Textures/cubeTexture"),R=require("@babylonjs/core/Materials/Textures/dynamicTexture"),H=require("@babylonjs/core/Maths/math.color"),U=require("@babylonjs/core/Maths/math.vector"),b=require("@babylonjs/core/Meshes/Compression/dracoCompression"),P=require("@babylonjs/core/Misc/observable"),G=require("@babylonjs/core/Misc/tools"),O=require("@babylonjs/core/scene"),k=require("@babylonjs/core/Materials/Textures/texture"),J=require("@babylonjs/core/Animations/animation"),L=require("@babylonjs/core/Animations/easing"),T=require("@babylonjs/core/Cameras/arcRotateCamera"),j=require("@babylonjs/core/Misc/assetsManager"),z=require("@babylonjs/core/XR/features/WebXRHitTest"),K=require("@babylonjs/core/XR/webXRTypes"),V=require("canvg"),W=require("lodash.debounce"),X=require("qrcode"),q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{};function Z(t,e,A,n){Object.defineProperty(t,e,{get:A,set:n,enumerable:!0,configurable:!0})}function _(t){return t&&t.__esModule?t.default:t}var $={},tt={},et=q.parcelRequireb544;null==et&&((et=function(t){if(t in $)return $[t].exports;if(t in tt){var e=tt[t];delete tt[t];var A={id:t,exports:{}};return $[t]=A,e.call(A.exports,A,A.exports),A.exports}var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}).register=function(t,e){tt[t]=e},q.parcelRequireb544=et),et.register("kxTKR",(function(e,A){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0});var n=et("2RTUs");e.exports.default=({viewmask:e,viewBox:A,width:i,height:a,position:o,maxWidth:s,maxHeight:r,elements:c,preserveAspectRatio:g,backgroundColor:l,omitBoundClipping:B,borderRadius:d})=>{const h=(0,n.generate)(),w=e?`url(#viewmask-${h})`:void 0,E=A||{x:0,y:0,width:i,height:a},u=`${E.x} ${E.y} ${E.width} ${E.height}`,C=d||0,Q=B?void 0:(0,t.jsxs)("defs",{children:[(0,t.jsx)("clipPath",Object.assign({id:"viewboxClip"},{children:(0,t.jsx)("rect",{width:E.width,height:E.height,rx:C},void 0)}),void 0),e&&(0,t.jsxs)("mask",Object.assign({id:`viewmask-${h}`},{children:[(0,t.jsx)("rect",{x:E.x,y:E.y,width:E.width,height:E.height,fill:"black"},void 0),(0,t.jsx)("rect",{x:e.x,y:e.y,width:e.width,height:e.height,fill:"white"},void 0)]}),void 0)]},void 0);return(0,t.jsxs)("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",preserveAspectRatio:g,width:i,height:a,style:{gridColumn:1,gridRow:1,maxWidth:s,maxHeight:r,position:o},viewBox:u},{children:[Q,!!l&&(0,t.jsx)("rect",{id:"layout-background",width:E.width,height:E.height,fill:l,mask:w,rx:C},void 0),(0,t.jsx)("g",Object.assign({id:"element-group",clipPath:B?void 0:"url(#viewboxClip)",mask:w},{children:c}),void 0)]}),void 0)}})),et.register("2RTUs",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.generate=void 0;t.exports.generate=()=>{const t=()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1);return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()}})),et.register("8bSlr",(function(e,A){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0});var n=et("aIqAQ");e.exports.default=e=>{const A=e.rotation||0,i=(0,n.degreesToRadians)(A),a=Math.cos(i),o=-Math.sin(i);return(0,t.jsx)("g",Object.assign({transform:`\n matrix(1, 0, 0, 1, ${e.x}, ${e.y})\n matrix(1, 0, 0, 1, ${e.width/2}, ${e.height/2})\n matrix(${a}, ${-o}, ${o}, ${a}, 0, 0)\n matrix(1, 0, 0, 1, ${-e.width/2}, ${-e.height/2})\n `},{children:(0,t.jsx)("image",{xlinkHref:e.src,preserveAspectRatio:e.preserveAspectRatio,width:e.width,height:e.height},void 0)}),void 0)}})),et.register("aIqAQ",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.cmPerPixel=t.exports.mmPerPixel=t.exports.rotateAroundPoint=t.exports.getElementVertices=t.exports.turnRightClockwise=t.exports.radiansToDegrees=t.exports.isCloseToValue=t.exports.getTrueCoordinates=t.exports.getSWPoint=t.exports.getSEPoint=t.exports.getPointOfRotation=t.exports.getNWPoint=t.exports.getNEPoint=t.exports.getAxisAlignedBoundingBox=t.exports.findAngle=t.exports.degreesToRadians=t.exports.currentDirection=void 0;var A=et("aATGG");t.exports.getAxisAlignedBoundingBox=(t,e,A,i,a)=>{const o=n(a),s=A/2,r=i/2,c=t+s,g=e+r,l=Math.sin(o),B=Math.cos(o),d=-r,h=s*B-d*l,w=s*B-r*l,E=s*l+d*B,u=s*l+r*B,C=Math.max(Math.abs(h),Math.abs(w)),Q=Math.max(Math.abs(E),Math.abs(u));return{minX:c-C,maxX:c+C,minY:g-Q,maxY:g+Q}};t.exports.findAngle=(t,e,A)=>{const n=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),i=Math.sqrt(Math.pow(e.x-A.x,2)+Math.pow(e.y-A.y,2)),a=Math.sqrt(Math.pow(A.x-t.x,2)+Math.pow(A.y-t.y,2));return Math.acos((i*i+n*n-a*a)/(2*i*n))*(180/Math.PI)};const n=t=>t*(Math.PI/180);t.exports.degreesToRadians=n;t.exports.radiansToDegrees=t=>t*(180/Math.PI);t.exports.isCloseToValue=(t,e,A)=>Math.abs(t-e)<A;t.exports.getTrueCoordinates=(t,e,A)=>{const i=Math.sin(n(A)),a=Math.cos(n(A));return{x:(t.x-e.x)*a-(t.y-e.y)*i+e.x,y:(t.x-e.x)*i+(t.y-e.y)*a+e.y}};t.exports.getPointOfRotation=(t,e)=>({x:(t.x+e.x)/2,y:(t.y+e.y)/2});t.exports.getNWPoint=(t,e,A,n)=>({x:t.x+(null==e?void 0:e.x)*A,y:t.y+(null==e?void 0:e.y)*n});t.exports.getNEPoint=(t,e,A,n)=>({x:t.x+((null==e?void 0:e.x)+(null==e?void 0:e.width))*A,y:t.y+(null==e?void 0:e.y)*n});t.exports.getSWPoint=(t,e,A,n)=>({x:t.x+(null==e?void 0:e.x)*A,y:t.y+((null==e?void 0:e.y)+(null==e?void 0:e.height))*n});t.exports.getSEPoint=(t,e,A,n)=>({x:t.x+((null==e?void 0:e.x)+(null==e?void 0:e.width))*A,y:t.y+((null==e?void 0:e.y)+(null==e?void 0:e.height))*n});const i=t=>{switch(t){case A.ScaleAxis.North:return A.ScaleAxis.East;case A.ScaleAxis.East:return A.ScaleAxis.South;case A.ScaleAxis.South:return A.ScaleAxis.West;case A.ScaleAxis.West:return A.ScaleAxis.North;case A.ScaleAxis.Northwest:return A.ScaleAxis.Northeast;case A.ScaleAxis.Northeast:return A.ScaleAxis.Southeast;case A.ScaleAxis.Southeast:return A.ScaleAxis.Southwest;case A.ScaleAxis.Southwest:return A.ScaleAxis.Northwest}};t.exports.turnRightClockwise=i;t.exports.currentDirection=(t,e)=>e>45&&e<=135?i(t):e>135&&e<=225?i(i(t)):e>225&&e<=315?i(i(i(t))):t;t.exports.getElementVertices=(t,e={x:0,y:0},A={x:1,y:1})=>{const i=n(t.rotation),o={x:e.x+t.x*A.x,y:e.x+t.y*A.y},s={x:t.x+t.width,y:t.y},r={x:e.x+(t.x+t.width)*A.x,y:e.y+(t.height+t.y)*A.y},c={x:e.x+t.x*A.x,y:e.y+(t.height+t.y)*A.y},g={x:(c.x+r.x)/2,y:c.y-t.height*A.y/2};return{a:a(o,g,i),b:a(s,g,i),c:a(r,g,i),d:a(c,g,i),center:g}};const a=(t,e,A)=>{const n=Math.sin(A),i=Math.cos(A);return{x:(t.x-e.x)*i-(t.y-e.y)*n+e.x,y:(t.x-e.x)*n+(t.y-e.y)*i+e.y}};t.exports.rotateAroundPoint=a,t.exports.mmPerPixel=.352778,t.exports.cmPerPixel=.035277})),et.register("aATGG",(function(t,e){"use strict";var A,n;Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.ScaleAxis=t.exports.UnitOfMeasurement=void 0,(A=t.exports.UnitOfMeasurement||(t.exports.UnitOfMeasurement={})).Pixel="px",A.Millimeter="mm",A.Centimeter="cm",(n=t.exports.ScaleAxis||(t.exports.ScaleAxis={}))[n.North=0]="North",n[n.Northeast=1]="Northeast",n[n.East=2]="East",n[n.Southeast=3]="Southeast",n[n.South=4]="South",n[n.Southwest=5]="Southwest",n[n.West=6]="West",n[n.Northwest=7]="Northwest"})),et.register("lg0Le",(function(e,A){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0});var n=et("aIqAQ"),i=et("aMTB6");const a=e=>{const{path:A,width:n,height:i,focalBlurStrength:a,focalBlurRadius:o,blurFilterId:s,focalMaskId:r,blurEdgeClipId:c}=e;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("filter",Object.assign({id:s},{children:(0,t.jsx)("feGaussianBlur",{stdDeviation:a||0},void 0)}),void 0),(0,t.jsx)("mask",Object.assign({id:r},{children:(0,t.jsx)("circle",{cx:n/2,cy:i/2,r:o||0,fill:"white",filter:`url(#${s})`},void 0)}),void 0),(0,t.jsx)("mask",Object.assign({id:c},{children:(0,t.jsx)("path",{d:A,style:{fill:"white",opacity:1}},void 0)}),void 0)]},void 0)};e.exports.default=e=>{const A=`spiff-frame-${e.id}`,o=`spiff-frame-blur-${e.id}`,s=`spiff-frame-blur-edge-${e.id}`,r=`spiff-frame-focal-mask-${e.id}`,c=!!e.focalBlur&&!!e.pattern,g=e.rotation||0,l=(0,n.degreesToRadians)(g),B=Math.cos(l),d=-Math.sin(l);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("defs",{children:(n=>{var c,g;const l=(null===(c=e.pattern)||void 0===c?void 0:c.x)||0,B=(null===(g=e.pattern)||void 0===g?void 0:g.y)||0,d=e.pattern?e.pattern.width*e.pattern.scaleX+Math.abs(l):256,h=e.pattern?e.pattern.height*e.pattern.scaleY+Math.abs(B):256,w=e.pattern?e.pattern.width*e.pattern.scaleX:256,E=e.pattern?e.pattern.height*e.pattern.scaleY:256;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("pattern",Object.assign({patternUnits:e.pattern?void 0:"userSpaceOnUse",x:0,y:0,width:e.pattern?1:d,height:e.pattern?1:h,"data-frame-width":e.pattern?d:void 0,"data-frame-height":e.pattern?h:void 0,id:A},{children:(0,t.jsx)("image",{preserveAspectRatio:"none",x:l,y:B,width:w,height:E,xlinkHref:e.disablePlaceholder?"":e.pattern?e.pattern.src:i.emptyFill},void 0)}),void 0),n?(0,t.jsx)(a,{path:e.path,width:e.width,height:e.height,focalBlurStrength:e.focalBlurStrength||1,focalBlurRadius:e.focalBlurRadius||10,blurFilterId:o,focalMaskId:r,blurEdgeClipId:s},void 0):null]},void 0)})(c)},void 0),(0,t.jsxs)("g",Object.assign({transform:`\n matrix(1, 0, 0, 1, ${e.x}, ${e.y})\n matrix(1, 0, 0, 1, ${e.width/2}, ${e.height/2})\n matrix(${B}, ${-d}, ${d}, ${B}, 0, 0)\n matrix(1, 0, 0, 1, ${-e.width/2}, ${-e.height/2})\n matrix(${e.scaleX}, 0, 0, ${e.scaleY}, 0, 0)\n `},{children:[(0,t.jsx)("path",{filter:c?`url(#${o})`:void 0,mask:c?`url(#${s})`:void 0,d:e.path,style:{fill:`url(#${A})`,opacity:e.opacity}},void 0),c?(0,t.jsx)("path",{mask:`url(#${r})`,d:e.path,style:{fill:`url(#${A})`,opacity:e.opacity}},void 0):void 0]}),void 0)]},void 0)}})),et.register("aMTB6",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.emptyFill=void 0,t.exports.emptyFill="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAACXBIWXMAAAsSAAALEgHS3X78AAAZL0lEQVR4nO2diVIbSRZFq/GCsZBZjRea6fn/r+oZGrMYBBhkLGwzE1cmTSqVWXuqVFXnRHREG6OlpX43X771j5O/7/+XAEAvWeFrB+gvCABAj0EAAHoMAgDQYxAAgB6DAAD0GAQAoMcgAAA9BgEA6DEIAECPQQAAGuLnz5+Nf/QIAEADyPhHl+fJ5/PTRj/+53z5AItFxn9y+in5Nvn2+3Xf7r5r5FvAAwBYID7jH4/Hyfcf3xv5GhAAgAXhM/5nK8+SD+8/Ji+ev2jka0AAABZAmvGvrr5q7CsgBgAQGZ/x68R/t/e+UeNPEACAuPiM/9Xqq+T9u4/Js2fPGv/0uQIARGLZjT/BAwCIw2TyLTk9O5mJ7i+b8ScIAED9yPiPTz4lPx+eKv2W0fgTrgAA9VKn8esKcXx8NH3OWCAAADUhd981frG9tVPK+BU/+Prt6/Q5Y4kAAgBQE0rtDQaDuSdTLKCIAbvBQwnKaHQR5WtCAABqRDX9b4ZvZp5QBpz3FA9lDvb23kf5mhAAgJpJE4G0mv8m0oYIAEAEQiJwdnbinQPQVM0AAgAQCZ8IyMBl6LYIyCtoqmAIAQAoyZeb68w2XonAK6fe3xYBxQWOjg4bqxZkOzBAQW7HN9OovIxfJ3zWMA+fe588Gvr3798bLRjCAwDIiQz59Ox4psT3y82XTC9Axiyj9nkCdRq/3l/ROYMIAEAOpq76p8Pkdnw788vq6R/f3mQ+QUgEDPIk9j8eVDJ+eRnnF2eFHkcvAEAGvvJesbO1kwyHG7mN1oiA7zpQhZkrxiRJVs5Pc88YxAMASCFU2//nx4Nkc3O78Ikd8gR0lSgzIdgXX7i/v899FUAAAAL4jF+uugy4yiQfiYAq+3R9sCkqAnXUDiAAAB5kXOcXn+eMX651HRF69Q1oHmBZETAxiarpQwQAwMP19eWMceVJ9xVFXkQZETCeSR3DRhAAAIe7u6/J5fXl7x/KuLa3dit9TKE7eVERqHvYCAIA4HB1dTnzg92dt5XcflUMHv7zn2A3YJoI6LGGGJOGEAAACxmZhnAY5PpXCfjJgD+fn02NdhpTKOgJ6LF6jlhjxhAAAIuxU+jzZrhR+uMxxm/wNQLZSATeefr+9Ryu8a8P1mspGUYAACzsSj9F6sue/q7xG7JEYG3tdfJ2d2/u52424t3eh1qyEQgAwCOKqtuR9bW1tVIfzdXVyGv8hiwRkNfhE4EkQjYCAQB45Mf32aaeMgs7Fbm/uHya36c7vaoG88wFsPGJQIxUJAIA8Ihb618UGb8i9wZ7+acM9/Wr1zPPWEQEYhh/ggAAPOF6AEVwjdi3+Vflv76W4NHlefCVJAIf3+9HMf4EAQB4wg34PTw85P50FJAzI8BCa7/LNgIpMBgLBAAgwN23u8IfjSoG03b+190NWBUEAOAR96SVe5417cdFBp6VOkwTgdEofB2IAQIAYOEG6pTSi4ERATfTsLKyWJNEAAAs3Nx/npl/ZXn438PMc0sMhhUqD8uAAABYTEd8OfX4WuYRA9fd394uvkS0KggAgIUMcHNjc+ZnigXUHaDT1cIuO1Zt//pguPCvAgGATqA8vN06WwWfF+C25lZBz2NXC8r1393xl/7GBgGA1mNm46n+/r+Hf1c2VHkBoa68qkFBt0lIQqPXWrTrb2AzELSa0NYdnaq6U1dxq2Xs9kltkLuuE7uI0ep9quLPLhVOpqvD9iq1HFcFAYDWEjJ+G6X1Nje3SlfTufX9Bp3cihXk2QugU19ThtxsQtPGnyAA0GYkABq1ZZp4ZJShhp4qQhASAfOag8FgWvwjr+P5ixfTngK9j/vJZBro86URl8H4EwQA2o5rnDKsm5svQa+grBCErgNFkUjozl9lzFidIADQanS6KvBnkIF/+LA/Ndir66tUj2D37V6hnn/N5dNcv7JrvdQopF6BpgJ+PhAAaD2uF6D2WZ3wuiLcOCk3FxmlVnwVEYLQnT6EgoZy92N29ZUFAYDWE/ICDPp7eQShe3xSUgjkEWiI6GQySSb3k9/exq9ZgqvJ6svVZLA+LDVZaFEgANAJjo+PZsZ5Gy/AJpYQtBkEADqBtvl8Ojn6/Z+iVlvt2/eRRwiKrv5uKwgAdIY8XoCNREN3efsxNkVy/W2FUmDoDErv2bgrvlwkDooVuDMADLrTK4CoWgN5DHl37rcJBAA6gwzavrvrZNcpn4YyCCEPwNBlIUAAoFO4XkBaY5CbPlTc4F8H/062Nra8v28LQV2dgU2DAMBSYRZhlkX5dtsLCJXi+ozfjOja3t6dCoG7zMMgITCdh7fjm1b/D4QAwNJgWmW1CDPLdU9jPhbw1MIr9/3o06HX+O1An4RAY77ThEBjw9ueLkQAYCnQiWz65HXCKqVX1s0evF6fGehh5vr5ugezVmyHhCA0+79tkAaExknrtivbNec278h47+/vZ4y/TF+/PBMJ0+bGVuuNXzxfgvcAEERewcPPn9PqvCIod283A7kCU3bXnjINy1jTXxauANA4rnG7CzN0khcdyqlTPXR3j7Vos40gANA4umfbxTgrf6zMGW+Z1VnDN/NXB7n9GP8TCAAsBcM3TwavwhzN8vOJwOnZce5CHAlLyAuAXyAAsBTI4O2Umsp4zbZdG+X103bqu7jXi1BdQF9BAGBpsPP38gJUEOQTAUXy84qAREVuv02sfX9tBAGApWE+f/+rDiBNBPJUDbppxJj7/toGAgBLgxu5tw01JAKqGswSAaXtFrX1t20gALBUuJF721B9IqA8fx4RmG8SwgtIEABYNtzIvWuoEgFN67ExIpBWOiwvwK0vuPnSjY6+KiAAsHS467zGt7Mdd4rsq0TYxnTopYnA0JNW7OKQjyIgALB0uKf1tKTXMVQF9lwRSB5Lh0Mi4LYKSzRuOtLXXxYEAGpDRqpqvSqtvAb7tA4ZqhEBd5W3RGA0Ovc+rxsLUEtvn0EAoBYUhDN99mrl1YDOKkLgntahbkH9ntpyXRG4vL70lg6/sXb/Tzf1bO/2+n8ABAAqM3lMx9nBOhXyVBUCOxio5w659mrL9YlAqH9Ak35pCPoF8wCgEjLMo6PD4A4+Q5mlnO72X3fjj4sRIve96HF7e+9/9/3rebs+7z8veABQCbnpa2trM0+hk9gdlVXGI5CRavW2/Rxp+X55Agd//jWX7tPj7NJhjP8JBAAqo6k6ttHpBJYouPn6pIQQuM08WWPCZNwa8eWKQJH+gT6BAEBlZHRTF9uZw6cIu2bp+RZv5BWCrMIgHyERUGaB038WBABqQYaqQJyNIvEybt3btabLN0E3jxC4XoBbGOTDiIDEQ8Kk1y8zW7DrEASEWjGjvW3swZ76+9HoIhg0lLew+3ZvTizswaEyaN31857miht0YYBnDPAAIBd5784ydHezjgzeBO/09zJexQfctF3y6BFo4YYM3nb1bS9A4jH+epv7i8P4wyAAkIkp8sm7sUfFNfYQDrdjTye3DDpNCHTaK71odvG5sYCsxZ+QDwQAUrGLfPK03Rp8mYHzi88znoQRgv39A+/sPrOLT+KjFVy2F6D30/a1XMsAMQAI4ivyKbIRx/d4icL+x4Pg7+vED5X9Kj6w8mxlOtcvyVEYBNngAUAQud12IU5SYABHEsgMKB8fGu+dtY9P8QFj/EmOwiDIBgGAVKpM4UkeA3Bu265O+FC3XmIJwZ8fD7w1BLPPxVCPKiAAkEmaCOQZq+XLDKhGIMt4p00+jzUEISFgqEc1EADIRUgEzs5OchmgmxlIHvv283gRaiAKCcEbqvsqQRAQCuHb5Ju1YtvgW89dZs22KgZHlxfJy5cvaemtCAIAhVFa7ptzcucVgVBmIM9joX64AkBhqnTbhTIDukrA4kEAoDBVW259mQGl9Ipu/4XqIABQiqoi4MsMKLbAxp7FggBAadJEYHQZzvMbfJkBlf5S4rs4EACoREgEQgM5XdyeAXF+/pkKvwWBAEBlfBOBkpwi4HusKTKiwCc+CADUgonulxEBX2aArT2LAQGA2ig6n9/GzQyows8dBQb1QyEQ1E5oPn+eZRxqEtLjqPBbDAgARCEkAvZ8QGgeBKDjKJB2fz+Zi6o/f/EiWXv1Omr5LSKw/CAAHUW59PH4dmaAhg911w3W16MZpBp3NPbbBRFYDhCAjmE65dxmnSyUi9/deRtlgq5vVHiCCCwFCEBHkKt/fX05HbRRBU3pjRF9D4mAevyLLAyFennO59l+1GKrbjrfqa+TffB6dq7f5H6S3N3deZdzqBRXz1d3FN6c9LYIKCuA8TcLAtByfIE25eG1A3+wPvSu4zLoVNZ8fXeslxn4EVME2M+/HHAFaDE+4w+t1gqhq4Mad3yjuGMZqeIUnPzLAQLQUnzGX+X+TqCun1AK3EJ8xi9DrRK8k5G7QzqSx71+eSb/QjtBAFpGyPjrOKV9IjBd6fV53jOAboAAtAjd12MZv0HP5Y7/1riu0O5+aDcIQEswI7Vt45ehxrifb2/tzgUR2cbbTRCAlqBIvZvnXx8Mo7z5X1t7Z+f1yQsgFtA9EIAWc3p2Em10ljwL1wsY3zKrr2sgAC2h6pLOMrivpwpC6BYIQIuouqSzKG6xzo8fP/r3oXccBKBlVF3SWQS3M7BohyEsPwhAC/GJQN6FHEXJW1IM7QQBaCkSgbJbeYrw8PDw+7fdYZ/QfhCAFlNlNVde7LqD1Zerff/IOwcC0GKq7ufLws0urK2t9f0j7xwIQMuJKQJu+S8tvN0DAWgAGeWXGrfeVF3SGcKeEaBgYIx5gdAsCMCCMTX96r3/7+HftQlB1SWdLnpfdm2BWxoM3QABWCDG+E0+XQZmhKCOldhVlnTaTKcEjS5+/0SnP0NBugkCsCBc47eREKiu//j4qHLbbZUlnYbzi7O5lmPoJgjAAvn+/cml9uXU1XGnJRpVhaDKkk79vb1MZGtji+Bfh0EAFoTc88HgaTz3rwWYe3N39qQmISgjArr324E/vbeNDe7+XQYBWCDuzL7x7W2y//FgOswzyyMo0+yTJgJu8FFbee2hoHrMNJ4QcXcgNA9TgReMTl/7lDWbcRQjuLm5ni7mCGF25hetz89a0um+Jxm/hIO0X/dBABaMTnJF/Q2a4//hw/7vP+vvr65G3jn9hjJCEFrSqeewvQuMv18gAA0gl17uvcG3Hy+GEIRm/xsw/v6BADSAexor2KZYgI88QqAYwnC4keu+HhKBmNuBYXlBABoijxdgI9HQZF77MTZmH2AeIXBFQMavKkICfv2DLEBDuKW1WWO3JQ6KFShm4EMBPgUQD//5z9RjSGsCsheA6BqB8fcXtgM3hAzaDsCZ5RtpXoCi9SEPwGCE4Or6KtUjMFN/KfLpN3gADeJ6AWmNQW6qTm77vw7+Pa3U82F7BKHnxfiBGEDDKCVop+Fk1G5U32f8ttueJ1Co59ze3om2TATaCR5Aw8zHAka//133+KNPh6nGnzwat2YESjzcYaEGzfZjwCe4IAANM3i9PlOqK2PXie7rHsyK1oeEgPw+hOAKsATo1LdLgGW89/f3M8a/PlhPdnf2CkXrFVTU/X9zYwvjBy8IQAl0Qqu+/sf32Qad5y9eJGuvXhdOqem0V7DOrdU3SBB0sgPUDWnAAug0VQdfVipOrvqwwOpuCYaM/PJ6vhYA44eYIAA50Gl/fvE592os/Z7+UXGPgnx5hGD4ZmNOAOT2Y/wQE4KAGejU/+fTYam9eGbm3+nZceZ47l9z9/wRfIBY4AGk4ObfDSrHdZdk3N3dBa8GGrGlv8+KxKuzz349PW77x3fSdxANgoAB3Mh8kqP91gz1MKk8lzzpOHkL9kw+YgAQE64AHpQ+s41fhvtu7/3UENNOYwXzJBBmzJeL2eXvrtyyceMFITEBqAMEwEGnuDsbT6d2kRJaIwRq8XXn8RkRCBm16vPdjj+7OhCgThAAhxt3I87GZukiGhnzwZ9/zU3+lQicnZ0EHzffJIQXAHFAABzcunt3km9R0vb2hU52CYf7+zdf6tslCGBAACy0nss+aYc1peVCK7sUZwid7O5rS5jq2vkPYEAALNzSXjXq1IWCh7u7b+eeLeQFmIEdBl0bbmrcKAyQIACzKFdvU/eYLAUS3WKftPu9GwtQSy9AnSAAAUKz96riiymMb/2bgeUFmGuDhGN7ezfmfzL0EATAwq7ky2r4KYuv5Hf8dRx8NmUhKAaCWCAAFnPpukhBN7fYJ63PYDid4IvxQxwQAIuVP2Y/jrtIXoDqCtyKwlB1IOO6ISYIgMXq6urMn6vs6M/CFQACfNAECIDFS0cAYube3W5CgCZAACzWPJF/cu/QZRAACzOay0bVemnde2WZ3E9mHsmSDmgCBMDBl6fXOLC6rwKTyZMAuNkHgEWBADj48vRK040uz2t7DXkUdvXf2iviAdAMCICH7a3ducYdBQQ1IqwO3F19GggK0ASdEYA6XXTFAnyNO3WIwK9lHU8tx/I2mPkHTdEJAZBLrR16dQbr1Ljj27wr480z5deH3t+pNQhEXkbVeQMAVWi9AMiozIitrHl7RVHzjW9Ut4Z2pq3d9qFZA3p/9vYfbevl9IcmafVUYBn90dHhjFHFWIQZGg+eWEHDwfrQa8wy/JsvX+aai2jwgWWg9WPBfcYZQwR8Y8JdJAC2CCjX79v3h/HDstCJvQCLEgEF8DQxuOyATr0nuf15dwYCxKYzi0FCIrC/f1D7PVvewNX1VXCbrw8NGNl9u8edH5aKTm0G8omAquw0lbfutlplAcZfb6degUaJ+cRAxq4Fn4PBOvv5YSnp3GqwRYqAja4F9lDRly9X6eWHpaeTuwGPPNt8FyECAG2jNXUAcrnlbucJwIUWcZycfmK2PoDFUnsAMnZtxFHhjW34Cu4NBoPMTb0y+JiegF4DjwLazFIKgAzr+voyuby+zPxdleuGxmXHFAHz3NrgQ1oP2srSXQEmj656HuMX+r1Qg07aXr4q7b22sKguoEhJMMAysVQCYOr63RNbbr7y6PrHbdNNMrr0QiJQtrPP51XcsLcPWsrSXAF0itp7+ZPH4hmtx3LHZel3R6OLudz7u733wT3+vr6BpGBZrs/4yS5Am1kKD0ANM67x72ztJB8+7Htn5enOrTJf1xuQKISQF+F7TF5PwLQcY/zQJRoXABnW+fnnmZ+93d3L7JNXZZ0M2kanfNp93DymqAjYLccGjB+6QKMCYAzLdstl/Hmj6jJot18/ax5AURHwvUeMH7pCYwKg+/R02q5lWHL7i6bU3N//8f1H5mPSRMD2IDB+6DqNCcD5xdlctL/MbPyyTTYhETBpPYwf+kBjArCyMv/SdY/0ykIioMyBi0TANX519WH80DUaEwCl3tz7uwyuqAi4vQFFd+7J61DcwcU2fr3Pd3sfMH7oHI0GAdNEIO/UHXeDb5krwZvpDv55EUgY3wUdp/E0YEgEzs5OMqvr9PdXV08lw8r1l92x5xMBjB+6TnQByLNj3ycCedp3Vc9vewqqGqyCLQIYP/SBqAKgvPqnk6NczTIytiI9/HpOe/KPyobr6MrTc3x8v4/xQy+IJgD2aK68HXN5B3m4fQNK5WngZl2wqhv6QhQBcPffJY8ikHUdSGvflQjI3ZewuMavfD7TdgGKE60bcDQ6n+vpzzurPzTIwyXG7H+APhHtCuDbq5c3zx/yBGZ+B+MHqEzUIGCVYp80EZDxH/z5F8YPUJHoacCqIrC3936uXl+PrzLSCwB+sZBCoCoiUHWQBwCEWVglYJoIZFX8lR3kAQDpLLQU2FfsIxHIs7ADEQCon4X3AlTZ2pN3kAcA5GPhApBV7FNWBJjPD1Cc3AJQ59z7OkQgNMgDEQDITy4BMCOx65zWkyYCagXOIjTIAxEAyE+mANgjsese2RUSga/fvuYK7IUGeeTpOwCADAEwRm/GY5UZ2ZVFqNhHgT0tDMkiNMiDjj6AbFIFQEU4WsNtE0MEQsU+WhiSJ/bAIA+AcuTqBrR7+w0xmnHktmuAiE3a+m/f4zn5AfKTKwhYx/DOPMh4tRzERi3FeTMQGD9AMXKnASUCmo1vk3d4ZxGGw4254R7jr7d8rQARKFQItLuzVzp3nxcFBV1vg4g+QBwKCUDVAp68DJ3hnpPJhK8fIAKFS4EXIQJ6DfsaUGecAQCeKNULsAgRYMgnQHxKNwPFFgH71NfMfwCon0rdgEYE3NNaIlBlZJeM3xaA1dXV2v/DAaCGdmCJwLtAKW/ZQR1XV6OZPw+c9CMA1EMt8wDSBnWcnh0Xug64S0Xk/jP9FyAOtQ0ECYnA7fj291afLNRfcOq0Am9v72Q+DgDKUftmINM+bDoIbVTmqxy/rg0ucvsvLi9mfqoGnzoWfgKAnyirwdJEIHl069fW1qb/Ls/g7u5uzkOgqw8gPtF2A+bd7+ejSAcgAJQnmgAYfK59iOma7923yfpgyFcKsACiC0Dy6OZLCMbjsfdaIMPf3NgMxgcAIA4LEQAbpfkkCA8/fyYrjzX/9PEDNMPzRb+qjH2NLxtgKVj4YhAAWB4QAIAegwAA9BgEAKDHIAAAPQYBAOgxCABAj0EAAHoMAgDQYxAAgB6DAAD0GAQAoMcgAAA9BgEA6DEIAEBfSZLk/xjo1hVZWiK0AAAAAElFTkSuQmCC"})),et.register("jIKCJ",(function(e,A){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0});var n=et("9SSHp");const i=e=>(0,t.jsx)("tspan",Object.assign({textAnchor:(0,n.getAnchor)(e.align),x:"left"===e.align?-e.textboxWidth/2:"right"===e.align?e.textboxWidth/2:0,y:`${(()=>{const t=e.fontSize*(void 0!==e.lineHeight?e.lineHeight:n.defaultLineHeightFactor),A=e.textboxHeight/2;if("top"===e.verticalAlign)return-A+3*e.fontSize/4+e.thisLineIdx*t;if("bottom"===e.verticalAlign){const n=e.amountLines-1-e.thisLineIdx;return A-e.fontSize/4-n*t}const i=(e.amountLines-1)/2;return(e.thisLineIdx-i)*t+e.fontSize/4})()}px`},{children:e.text}),void 0),a=e=>{const A=`#${e.curvedPathId}`;return(0,t.jsx)("textPath",Object.assign({startOffset:"left"===e.align?"0%":"right"===e.align?"100%":"50%",textAnchor:(0,n.getAnchor)(e.align),href:A,xlinkHref:A},{children:e.text}),void 0)};e.exports.default=e=>{var A;const n=(e.rotation||0)*Math.PI/180,o=Math.cos(n),s=-Math.sin(n),r=`text-path-${e.id}`,c=e.x+(e.curved?0:e.width/2),g=e.y+(e.curved?0:e.height/2),l=(e.text||"").split("\n");return e.curved&&!e.paths?null:e.fontData?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("defs",{children:[(0,t.jsx)("style",{type:"text/css",dangerouslySetInnerHTML:{__html:`\n @font-face {\n font-family: '${e.fontData.name}';\n src: url('${e.fontData.assetUrl}') format('truetype');\n }\n `}},void 0),e.curved&&e.paths?(0,t.jsx)("path",{id:r,d:e.paths[0]},void 0):void 0]},void 0),(null===(A=e._renderingConfiguration)||void 0===A?void 0:A.debug)?(0,t.jsx)("rect",{stroke:"blue",fill:"none",x:e.x,y:e.y,width:e.width,height:e.height},void 0):void 0,(0,t.jsx)("g",Object.assign({transform:`matrix(${o}, ${-s}, ${s}, ${o}, ${c}, ${g})`},{children:(0,t.jsx)("text",Object.assign({xmlSpace:"preserve",fontFamily:`'${e.fontData.name}'`,fontSize:e.fontSize,fontStyle:"normal",fontWeight:"normal",style:{fill:e.fill,whiteSpace:"pre",userSelect:"none"}},{children:e.curved?(0,t.jsx)(a,{text:e.text||"",curvedPathId:r,align:e.align},void 0):l.map(((A,n)=>(0,t.jsx)(i,{align:e.vertical?"center":e.align,fontSize:e.fontSize,thisLineIdx:n,amountLines:l.length,text:A,textboxHeight:e.height,textboxWidth:e.width,lineHeight:e.lineHeight,vertical:e.vertical,verticalAlign:e.verticalAlign},n)))}),void 0)}),void 0)]},void 0):null}})),et.register("9SSHp",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.defaultLineHeightFactor=t.exports.recomputeTextOnElement=t.exports.getAnchor=t.exports.getTextAlignment=t.exports.zip=t.exports.applyTextTransformations=t.exports.textWidth=t.exports.fontSizeStep=void 0;var A=et("gxilN"),n=et("llowX");t.exports.fontSizeStep=1;t.exports.textWidth=(t,e,A)=>{let n=0;const i=A.getGlyphs(t);return i.forEach(((t,e)=>{if(t.advanceWidth&&(n+=t.advanceWidth),e<i.length-1){const a=A.getKerningValue(t,i[e+1]);n+=a}})),n*=e,n};const i={stripControlCharacters:!0,vertical:!1,uppercase:!1};t.exports.applyTextTransformations=(t,e=i)=>{const A=Object.assign(Object.assign({},i),e);let n=t;return A.stripControlCharacters&&(n=n.replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,"")),A.uppercase&&(n=n.toUpperCase()),A.vertical&&(n=n.split("").join("\n")),n};t.exports.zip=(t,e)=>t.map(((t,A)=>[t,e[A]]));t.exports.getTextAlignment=(t="center",e=!1)=>e?"center":t;t.exports.getAnchor=t=>"left"===t?"start":"right"===t?"end":"middle";t.exports.recomputeTextOnElement=(t,e)=>{if(!t.fontData)return t;return Object.assign(Object.assign({},t),(()=>{if(t.algorithm===A.TextAlgorithm.Traditional){const A=(0,n.calculateTextboxLines)(t.fontSize,t.fontData,t,e,t.lineHeight);return{text:A.lines.join("\n"),height:A.requiredHeight,input:e}}return{text:e}})())},t.exports.defaultLineHeightFactor=1.1})),et.register("gxilN",(function(t,e){"use strict";var A,n;Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.TextAlgorithm=t.exports.LayoutElementType=void 0,(A=t.exports.LayoutElementType||(t.exports.LayoutElementType={})).Frame="frame",A.Image="image",A.Illustration="illustration",A.Textbox="textbox",A.Patchwork="patchwork",(n=t.exports.TextAlgorithm||(t.exports.TextAlgorithm={})).Autosize="Autosize",n.Traditional="Traditional"})),et.register("llowX",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.calculateTextboxLines=void 0;var A=et("22zA1"),n=et("9SSHp");t.exports.calculateTextboxLines=(t,e,i,a,o)=>{const s=(0,A.getFontMetrics)(e),r=s.getFont();return((t,e,A,i,a,o)=>{const s=o||n.defaultLineHeightFactor;let r=e.split("\n"),c=r.length,g=r.map((t=>(0,n.textWidth)(t,i,a))),l=!0;for(;l;){const e=c*(A*s);if(Math.max(...g)<=t.width)return{lines:r,requiredHeight:e};const o=g.reduce(((t,e,A,n)=>e>n[t]?A:t),0),B=r[o];let d=!1,h=B.length;for(;!d&&h>-1;){if(h=B.lastIndexOf(" ",h-1),-1===h){l=!1;break}const e=[B.slice(0,h),B.slice(h+1)],A=e.map((t=>(0,n.textWidth)(t,i,a)));A[0]<=t.width&&(r=[...r.slice(0,o),...e,...r.slice(o+1)],g=[...g.slice(0,o),...A,...g.slice(o+1)],c+=1,d=!0)}d||(l=!1)}return{lines:r,requiredHeight:c*(A*s)}})(i,(0,n.applyTextTransformations)(a),t,t/r.unitsPerEm,s,o)}})),et.register("22zA1",(function(t,A){"use strict";var n=t.exports&&t.exports.__awaiter||function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))},i=t.exports&&t.exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.getFontMetrics=t.exports.loadFontFromDataUrl=t.exports.loadFontFromExternalUrl=t.exports.FontMetrics=void 0;const a=i(e);var o=et("98viV");const s=new Map;class r{constructor(t){this.font=t,this.glyphsFromText=new Map,this.kerningValues=new Map,this.height=this.calculateApproximateHeight()}getFont(){return this.font}getGlyphs(t){const e=this.glyphsFromText.get(t);if(e)return e;const A=this.font.stringToGlyphs(t);return this.glyphsFromText.set(t,A),A}getApproximateHeight(){return this.height}getExactHeight(t){const e=this.font.stringToGlyphs(t);let A=0,n=0;return e.forEach((t=>{const e=t.getMetrics();A=Math.max(A,e.yMax),n=Math.min(n,e.yMin)})),A-n}getKerningValue(t,e){let A=this.kerningValues.get(t.name);A||(A=new Map,this.kerningValues.set(t.name,A));let n=A.get(e.name);return n||(n=this.font.getKerningValue(t,e),A.set(e.name,n)),n}calculateApproximateHeight(){const t=this.font.stringToGlyphs("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");let e=0,A=0;return t.forEach((t=>{const n=t.getMetrics();e=Math.max(e,n.yMax),A=Math.min(A,n.yMin)})),e-A}}t.exports.FontMetrics=r;t.exports.loadFontFromExternalUrl=e=>n(void 0,void 0,void 0,(function*(){const A=yield(0,o.dataUrlFromExternalUrl)(e),n=(0,t.exports.loadFontFromDataUrl)(A);return c(n,{assetUrl:A,name:n.names.fullName.en}),yield(0,o.loadFontFaceSet)(n,e),n}));t.exports.loadFontFromDataUrl=t=>{const e=(0,o.dataUrlToArrayBuffer)(t),A=a.default.parse(e);return c(A,{assetUrl:t,name:A.names.fullName.en}),A};t.exports.getFontMetrics=t=>{const e=s.get(t.name);if(e)return e;throw new Error("Font metrics unavailable for font")};const c=(t,e)=>{const A=new r(t);return s.set(e.name,A),A}})),et.register("98viV",(function(t,e){"use strict";var s=A.Buffer,r=t.exports&&t.exports.__awaiter||function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))},c=t.exports&&t.exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.arrayBufferToBuffer=t.exports.dataUrlToArrayBuffer=t.exports.arrayBufferToDataUrl=t.exports.dataUrlFromExternalUrl=t.exports.toBase64=t.exports.xmlSerializer=t.exports.loadFontFaceSet=t.exports.fetchAsString=t.exports.fetchAsArrayBuffer=t.exports.domParser=t.exports.createElementNS=t.exports.createElement=t.exports.registerJSDOM=void 0;const g=c(n),l=c(i);let B;function d(){if(!B)throw new Error("JSDOM is not registered. Please register it before calling this function.");return new B}if(t.exports.registerJSDOM=function(t){B=t},void 0===q.TextEncoder){const{TextEncoder:t}=o;q.TextEncoder=t}if(void 0===q.TextDecoder){const{TextDecoder:t}=o;q.TextDecoder=t}const h=new l.default.Agent({rejectUnauthorized:!0}),w=t=>t.every((t=>"undefined"!==t));t.exports.createElement=t=>{if(w([typeof document]))return document.createElement(t);return d().window.document.createElement(t)};t.exports.createElementNS=(t,e)=>{if(w([typeof document]))return document.createElementNS(t,e);const A=d().window.document.createElement(e);return A.setAttribute("xmlns",t),A};t.exports.domParser=()=>{if(w([typeof DOMParser]))return new DOMParser;return new(d().window.DOMParser)};t.exports.fetchAsArrayBuffer=t=>{if(w([typeof fetch]))return new Promise(((e,A)=>{fetch(t).then((t=>{e(t.arrayBuffer())})).catch((t=>{A(t)}))}));{const e=t.replace("localhost","localstack");return new Promise(((t,A)=>{g.default.get(e,{responseType:"arraybuffer",httpsAgent:h}).then((e=>{t(e.data)})).catch((t=>{A(t)}))}))}};t.exports.fetchAsString=t=>{if(w([typeof fetch]))return new Promise(((e,A)=>{fetch(t).then((t=>{e(t.text())})).catch(A)}));{const e=t.replace("localhost","localstack");return new Promise(((t,A)=>{g.default.get(e,{responseType:"text",httpsAgent:h}).then((e=>{t(e.data)})).catch(A)}))}};t.exports.loadFontFaceSet=(t,e)=>r(void 0,void 0,void 0,(function*(){if(w([typeof FontFace])){const A=t.names.fullName.en,n=new FontFace(A,`url(${e})`);return document.fonts.add(n),n.load()}}));t.exports.xmlSerializer=()=>{if(w([typeof XMLSerializer]))return new XMLSerializer;return new(d().window.XMLSerializer)};t.exports.toBase64=t=>w([typeof btoa])?btoa(t):s.from(t).toString("base64");t.exports.dataUrlFromExternalUrl=e=>r(void 0,void 0,void 0,(function*(){if(w([typeof fetch,typeof Blob,typeof FileReader])){const t=yield fetch(e),A=yield t.blob();return yield u(A)}const A=(yield g.default.get(e,{responseType:"arraybuffer"})).data;return(0,t.exports.arrayBufferToDataUrl)(A)}));t.exports.arrayBufferToDataUrl=e=>r(void 0,void 0,void 0,(function*(){const A=yield(t=>r(void 0,void 0,void 0,(function*(){const e=yield(0,a.fromBuffer)(t);return e?e.mime:"image/svg+xml"})))(e);return`data:${A};base64,${(0,t.exports.arrayBufferToBuffer)(e).toString("base64")}`}));t.exports.dataUrlToArrayBuffer=t=>{const e=t.replace(/\r?\n/g,""),A=e.indexOf(",");if(-1===A||A<=4)throw new TypeError("malformed data: URI");const n=e.substring(5,A).split(";");let i=!1;for(let t=1;t<n.length;t++)"base64"===n[t]&&(i=!0);const a=i?"base64":"ascii",o=unescape(e.substring(A+1)),r=s.from(o,a);return E(r)};t.exports.arrayBufferToBuffer=t=>s.from(t);const E=t=>{const e=new ArrayBuffer(t.byteLength),A=new Uint8Array(e);for(let e=0;e<t.length;++e)A[e]=t[e];return e},u=t=>new Promise(((e,A)=>{const n=new FileReader;n.onload=function(t){const n=t.target;n&&n.result?e(n.result.toString()):A()},n.readAsDataURL(t)}))})),et.register("S1A06",(function(e,A){"use strict";var n=e.exports&&e.exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e.exports,"__esModule",{value:!0});const i=n(et("8bSlr"));var a=et("daQXa"),o=et("aIqAQ");e.exports.default=e=>{var A,n;if(e.cachedObjectURL&&!(null===(A=e._renderingConfiguration)||void 0===A?void 0:A.omitCachedFields))return(0,t.jsx)(i.default,{id:e.id,src:e.cachedObjectURL,x:e.x,y:e.y,width:e.width,height:e.height,rotation:e.rotation,preserveAspectRatio:"none",immutable:e.immutable},void 0);const s=e.rotation||0,r=(0,o.degreesToRadians)(s),c=Math.cos(r),g=-Math.sin(r),l=`\n matrix(1, 0, 0, 1, ${e.x}, ${e.y})\n matrix(1, 0, 0, 1, ${e.width/2}, ${e.height/2})\n matrix(${c}, ${-g}, ${g}, ${c}, 0, 0)\n matrix(1, 0, 0, 1, ${-e.width/2}, ${-e.height/2})\n `;if(!e.svg)throw new Error(`Illustration element ${e.id} (stepName ${e.stepName}) lacked svg from src ${e.src} at render time.`);return(0,t.jsx)("g",{transform:l,dangerouslySetInnerHTML:{__html:(0,a.modifySVGWithElementProperties)(e.svg,e.width,e.height,e.colors,null===(n=e._renderingConfiguration)||void 0===n?void 0:n.spotColors)}},void 0)}})),et.register("daQXa",(function(t,e){"use strict";var A=t.exports&&t.exports.__awaiter||function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))};Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.generateSVGWithUnknownColors=t.exports.modifySVGWithElementProperties=t.exports.traverse=t.exports.sanitizeSvgTree=void 0;var n=et("8uekZ"),i=et("98viV");const a=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],o=(t,e)=>{e(t),t.children.length>0&&Array.from(t.children).forEach((t=>o(t,e)))};t.exports.traverse=o;const r=(t,e=!1)=>{!e&&t.setAttribute("preserveAspectRatio","none");const A=[];o(t,(t=>{var e;if("script"!==t.tagName)if("style"!==t.tagName);else try{null===(e=(0,s.parse)(t.innerHTML).stylesheet)||void 0===e||e.rules.forEach((t=>{A.push(t)})),t.remove()}catch(t){console.error(t)}else t.remove()})),o(t,(t=>{A.forEach((e=>{var A;null===(A=e.selectors)||void 0===A||A.forEach((A=>{var n;((t,e)=>{try{return t.matches(e)}catch(A){return t.classList.contains(e.substring(1))}})(t,A)&&(null===(n=e.declarations)||void 0===n||n.forEach((e=>{e.property&&e.value&&t.setAttribute(e.property,e.value)})))}))}))}))};t.exports.sanitizeSvgTree=r;t.exports.modifySVGWithElementProperties=(t,e,A,a,s)=>{const r=(t=>(0,i.domParser)().parseFromString(t,"image/svg+xml").firstElementChild)(t);if(!r)throw new Error("Failed to read SVG.");return((t,e,A)=>{t.setAttribute("height",`${A}px`),t.setAttribute("width",`${e}px`)})(r,e,A),((t,e,A)=>{o(t,(t=>{const i=t.attributes.getNamedItem("fill");i&&"none"!==i.value&&t.classList.forEach((i=>{if(i.startsWith("spiff-fill")){const a=e[i];a&&t.setAttribute("fill",A?(0,n.colorDefinitionPrintValue)(a):a.browserValue)}}));const a=t.attributes.getNamedItem("stroke");a&&"none"!==a.value&&t.classList.forEach((i=>{if(i.startsWith("spiff-stroke")){const a=e[i];a&&t.setAttribute("stroke",A?(0,n.colorDefinitionPrintValue)(a):a.browserValue)}}))}))})(r,a,s),(t=>(0,i.xmlSerializer)().serializeToString(t))(r)};t.exports.generateSVGWithUnknownColors=t=>A(void 0,void 0,void 0,(function*(){const e=t.match(/<svg.*?<\/svg>/s)||[],A=(null==e?void 0:e.length)>0?e[0]:"",s=(0,i.domParser)().parseFromString(A,"image/svg+xml").firstElementChild;if(!s)throw new Error("Failed to read SVG.");r(s);const c={};o(s,(t=>{a.includes(t.tagName)&&!t.attributes.getNamedItem("fill")&&t.setAttribute("fill","black");const e=t.attributes.getNamedItem("fill");if(e&&"none"!==e.value){const A=(0,n.svgColorValueToDefinition)(e.value),i=`spiff-fill-${A.browserValue.replace(/\W/g,"")}`;t.setAttribute("fill",A.browserValue),t.classList.add(i),c[i]=A}const A=t.attributes.getNamedItem("stroke");if(A&&"none"!==A.value){const e=(0,n.svgColorValueToDefinition)(A.value),i=`spiff-stroke-${e.browserValue.replace(/\W/g,"")}`;t.classList.add(i),t.setAttribute("stroke",e.browserValue),c[i]=e}}));const g=(0,i.xmlSerializer)().serializeToString(s);return{colors:c,svg:g}}))})),et.register("8uekZ",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.svgColorValueToDefinition=t.exports.spotColorDefinitionString=t.exports.colorDefinitionPrintValue=void 0;t.exports.colorDefinitionPrintValue=e=>`${e.browserValue} ${(0,t.exports.spotColorDefinitionString)(e.spotColor)}`;t.exports.spotColorDefinitionString=t=>t?`icc-named-color(${t.profileName}, ${t.namedColor})`:"";t.exports.svgColorValueToDefinition=t=>{const e=t.split(/[ ](?=[^)]*?(?:\(|$))/);if(0===e.length)return{browserValue:"#000000"};if(1===e.length)return{browserValue:e[0]};const A=e[1].match(/\(([^)]+)\)/gm);if(!A)throw new Error("Unhandled state of color value in SVG");const n=A[0].replace(/[() ]/g,"").split(",");return{browserValue:e[0],spotColor:{profileName:n[0],namedColor:n[1]}}}})),et.register("lx5Wl",(function(e,A){"use strict";Object.defineProperty(e.exports,"__esModule",{value:!0});e.exports.default=e=>{const{id:A,x:n,y:i,width:a,height:o,rotation:s,patchX:r,patchY:c,patchScale:g}=e,l=`patchwork-clip-${A}`;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("defs",{children:(0,t.jsx)("clipPath",Object.assign({id:l},{children:(0,t.jsx)("rect",{x:0,y:0,height:o,width:a},void 0)}),void 0)},void 0),(0,t.jsx)("g",Object.assign({className:`region-${A}`,transform:`\n translate(${n}, ${i})\n rotate(${s})\n `,clipPath:`url(#${l})`},{children:(0,t.jsx)("image",{className:`patchwork-slice-${A}`,width:a,height:o,transform:`\n translate(${r}, ${c})\n scale(${g})\n `,xlinkHref:`data:image/svg+xml;utf8,${encodeURIComponent(e.svg)}`},void 0)}),void 0)]},void 0)}})),et.register("l84WR",(function(t,e){"use strict";var A=t.exports&&t.exports.__awaiter||function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))};Object.defineProperty(t.exports,"__esModule",{value:!0});var n=et("98viV"),i=et("3zDFT"),a=et("e8mVx"),o=et("h6vGx");t.exports.default=function(t){return A(this,void 0,void 0,(function*(){if("Favourites"===t)return new i.Favourites;if("Maltesers"===t){const t=(0,n.fetchAsString)("https://assets.spiff.com.au/public/modules/img/MaltesersBackground.svg"),e=(0,n.fetchAsString)("https://assets.spiff.com.au/public/modules/img/MaltesersBackgroundShort.svg"),A=yield Promise.all([t,e]);return new a.Maltesers(A[0],A[1])}if("Vegemite"===t)return new o.Vegemite;throw new Error(`Failed to resolve Module, Module ${t} not found`)}))}})),et.register("3zDFT",(function(t,e){"use strict";var A=t.exports&&t.exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.Favourites=void 0;var n=et("9AnIb"),i=et("1M5UK"),a=et("bA8E4"),o=et("bptyb"),s=et("9Ipue");const c=A(r),g=A(et("b1jGN"));var l=et("22zA1");class B extends n.ModuleProduct{constructor(){super(...arguments),this.moduleName="Favourites"}svgPreview(t){return this.svg(t)}svgPrint(t){return this.svg(t)}svg(t){const e=(0,l.loadFontFromDataUrl)(o.fontWoffDataUrl),A=""!==t?(n=t).charAt(0).toUpperCase()+n.substr(1).toLowerCase():"";var n;const i=e.getPath(A,0,72,72);return this.brandSvg(i,s.backgroundSvg)}brandSvg(t,e){const A=t.toSVG(2),n=t.getBoundingBox(),o=n.x2-n.x1,s=t.toPathData(3),[r,l,B]=(0,i.initSvgFromBackground)(e);if(!r)return"";const d=(0,i.svgElem)("defs");r.appendChild(d),(0,i.addBackground)(r,d,e);const h=.23*l,w=.94*B,E=.04*B,u=.53*l,C=(0,i.svgElem)("g");r.appendChild(C),C.setAttribute("transform",`translate(${E} ${u}) rotate(-21)`);const Q=(0,i.svgRect)(h,w);Q.setAttribute("opacity","0"),C.appendChild(Q);const p=(0,i.svgElem)("g");C.appendChild(p);const m=(()=>{const t=(0,i.svgElem)("g"),e=(0,i.svgElem)("defs");t.appendChild(e),e.appendChild((0,i.dropShadow)(3,7,4,"shadow"));const n=(0,i.svgElem)("g");t.appendChild(n),n.setAttribute("filter","url(#shadow)"),n.innerHTML=A;const a=(0,i.svgElem)("g");t.appendChild(a),a.setAttribute("fill","red"),a.setAttribute("stroke","red"),a.setAttribute("stroke-width","9"),a.innerHTML=A;const s=(0,i.svgElem)("g");t.appendChild(s),s.setAttribute("fill","#9d2621"),s.setAttribute("transform","translate(1,1)"),s.innerHTML=A;const r=(0,i.svgElem)("g");t.appendChild(r),r.setAttribute("fill","yellow"),r.innerHTML=A;return new g.default(t).transform((([t,e])=>[t,e+Math.pow(o/2-t,2)/(2.9*o)])),t})();p.appendChild(m);const f=(0,c.default)(s);return(0,a.transformTextEnclosure)(p,f,h,w),(0,a.fixCase)(r.outerHTML)}}t.exports.Favourites=B})),et.register("9AnIb",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.ModuleProduct=void 0;t.exports.ModuleProduct=class{}})),et.register("1M5UK",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.dropShadow=t.exports.addBackground=t.exports.addDef=t.exports.initSvgFromDimensions=t.exports.initSvgFromBackground=t.exports.svgUse=t.exports.svgRoot=t.exports.svgRect=t.exports.svgElem=void 0;var A=et("98viV"),n=et("2RTUs");t.exports.svgElem=t=>(0,A.createElementNS)("http://www.w3.org/2000/svg",t);t.exports.svgRect=(e,A)=>{const n=(0,t.exports.svgElem)("rect");return n.setAttribute("height",`${e}`),n.setAttribute("width",`${A}`),n};t.exports.svgRoot=()=>{const e=(0,t.exports.svgElem)("svg");return e.setAttribute("xmlns","http://www.w3.org/2000/svg"),e.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),e.setAttribute("version","1.1"),e};t.exports.svgUse=e=>{const A=(0,t.exports.svgElem)("use");return A.setAttribute("xlink:href",e),A.setAttribute("href",e),A},t.exports.initSvgFromBackground=function(e){const A=(0,t.exports.svgRoot)(),n=/viewBox="0 0 (.+?) (.+?)"/.exec(e)||["0","0"],i=parseFloat(n[1]),a=parseFloat(n[2]);return A.setAttribute("height",`${a}`),A.setAttribute("width",`${i}`),[A,a,i]},t.exports.initSvgFromDimensions=function(e,A){const n=(0,t.exports.svgRoot)();return n.setAttribute("height",`${e}`),n.setAttribute("width",`${A}`),n};t.exports.addDef=(e,A,n)=>{const i=(0,t.exports.svgElem)("g");e.appendChild(i),i.setAttribute("id",n),i.innerHTML=A},t.exports.addBackground=function(e,A,i){const a=(0,n.generate)();(0,t.exports.addDef)(A,i,`bgdef-${a}`),e.appendChild((0,t.exports.svgUse)(`#bgdef-${a}`))};t.exports.dropShadow=(t,e,n,i)=>{const a=(0,A.createElement)("filter");a.setAttribute("id",i),a.setAttribute("height","200%"),a.setAttribute("width","200%"),a.setAttribute("x","-50%"),a.setAttribute("y","-50%");const o=(0,A.createElement)("feOffset");a.appendChild(o),o.setAttribute("result","offOut"),o.setAttribute("in","SourceAlpha"),o.setAttribute("dx",`${t}`),o.setAttribute("dy",`${e}`);const s=(0,A.createElement)("feGaussianBlur");a.appendChild(s),s.setAttribute("result","blurOut"),s.setAttribute("in","offOut"),s.setAttribute("stdDeviation",`${n}`);const r=(0,A.createElement)("feBlend");return a.appendChild(r),r.setAttribute("in","SourceGraphic"),r.setAttribute("in2","blurOut"),r.setAttribute("mode","normal"),a}})),et.register("bA8E4",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.transformTextEnclosure=t.exports.fixCase=void 0;t.exports.fixCase=t=>{let e=t;return e=e.replace(/feoffset/gi,"feOffset"),e=e.replace(/fegaussianblur/gi,"feGaussianBlur"),e=e.replace(/feblend/gi,"feBlend"),e=e.replace(/lineargradient/gi,"linearGradient"),e=e.replace(/stddeviation/gi,"stdDeviation"),e},t.exports.transformTextEnclosure=function(t,e,A,n){const i={x:e[0],y:e[1],width:e[2]-e[0],height:e[3]-e[1]};if(i.width<=0)return;const a=function(t,e,A,n){const i=A/t,a=n/e;if(i>1&&a>1)return Math.min(i,a);if(i>1&&a<1)return a;if(i<1&&a>1)return i;return Math.min(i,a)}(i.height,i.width,A,n),o=n/2-a*i.width/2-a*i.x,s=A/2-a*i.height/2-a*i.y;t.setAttribute("transform",`translate(${o} ${s}) scale(${a} ${a})`)}})),et.register("bptyb",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.fontWoffDataUrl=void 0,t.exports.fontWoffDataUrl="data:application/font-woff;base64,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"})),et.register("9Ipue",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.backgroundSvg=void 0,t.exports.backgroundSvg='<?xml version="1.0" encoding="iso-8859-1"?>\n\x3c!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n\t width="289.691px" height="204.059px" viewBox="0 0 289.691 204.059" enable-background="new 0 0 289.691 204.059"\n\t xml:space="preserve">\n<g id="Layer_3">\n\t<g>\n\t\t<g>\n\t\t\t<defs>\n\t\t\t\t<path id="SVGID_1_" d="M132.799,0L132.799,0c-2.85,0-5.611,0.376-8.204,1.119c-6.512,1.865-14.407,8.455-17.575,17.447\n\t\t\t\t\tc-5.374,1.759-16.263,6.039-18.474,16.876c-12.301,4.695-59.215,23.718-76.41,46.864c-1.783,2.067-14.076,17.86-11.873,42.198\n\t\t\t\t\tc2.083,23.017,14.66,39.637,20.03,46.733c0.496,0.655,0.925,1.223,1.271,1.697c3.272,4.502,16.448,20.198,29.967,27.96\n\t\t\t\t\tc0.985,0.565,2.526,1.337,3.598,1.671c9.286,2.898,13.053,0.684,13.053,0.684l-5.734-6.704\n\t\t\t\t\tc-0.113-0.047-1.555-2.104-2.024-3.528c-0.401-1.1-0.683-3.708,1.941-8.822c1.92-3.74,8.466-11.905,30.74-24.556\n\t\t\t\t\tc19.286-10.953,45.665-22.672,78.404-34.831c0.384-0.138,43.36-15.521,71.448-17.843l0.084-0.007l0.084-0.01\n\t\t\t\t\tc0.056-0.006,5.722-0.659,11.761-0.659c7.122,0,10.06,0.898,11.094,1.355l0.378,9.638c0,0,5.87-4.852,7.88-7.117\n\t\t\t\t\tc2.01-2.264,12.031-11.822,14.79-47.407c0.084-0.941,1.244-14.374,0.202-25.831c-0.428-4.706-2.167-9.042-5.03-12.54\n\t\t\t\t\tc-4.914-6.004-15.065-13.686-35.521-16.2c-0.84-0.118-8.692-1.176-21.503-1.176c-14.431,0-29.204,1.305-43.952,3.882\n\t\t\t\t\tc-1.858-1.395-4.78-2.782-9.053-2.782c-0.427,0-0.861,0.014-1.303,0.043c-1.604-2.318-4.231-4.531-8.237-5.259\n\t\t\t\t\tc-0.396-0.076-1.797-0.315-3.752-0.315c-0.897,0-1.798,0.051-2.676,0.152h-0.001c-0.244,0.007-1.149-0.008-2.428-0.517\n\t\t\t\t\tc-0.623-0.317-2.157-1.062-3.567-1.46c-0.945-0.267-2.142-0.54-3.842-0.54c-1.387,0-2.951,0.186-4.78,0.569l-0.214,0.045\n\t\t\t\t\tl-0.073,0.023c-0.141,0.032-0.727,0.154-1.455,0.154c-0.378,0-0.727-0.033-1.036-0.098C139.516,0.637,136.489,0,132.799,0z"/>\n\t\t\t</defs>\n\t\t\t<clipPath id="SVGID_2_">\n\t\t\t\t<use xlink:href="#SVGID_1_" overflow="visible"/>\n\t\t\t</clipPath>\n\t\t\t\n\t\t\t\t<radialGradient id="SVGID_3_" cx="0.6661" cy="211.1478" r="1" gradientTransform="matrix(196.7466 -33.1074 59.2188 355.3871 -12531.9229 -75128.1562)" gradientUnits="userSpaceOnUse">\n\t\t\t\t<stop offset="0" style="stop-color:#31006F"/>\n\t\t\t\t<stop offset="0.7044" style="stop-color:#31006F"/>\n\t\t\t\t<stop offset="0.9025" style="stop-color:#8663A8"/>\n\t\t\t\t<stop offset="0.9837" style="stop-color:#380874"/>\n\t\t\t</radialGradient>\n\t\t\t<path clip-path="url(#SVGID_2_)" fill="url(#SVGID_3_)" d="M289.231,36.928c0-15.893-21.025-34.603-52.712-35.045\n\t\t\t\tc-15.771-0.22-99.017-1.969-102.404-3.731C132.43-2.669,102,8.514,99.071,14.978c-1.352,2.989-12.46,12.774-12.087,16.225\n\t\t\t\tC43.908,47.213,14.509,73.752,3.19,93.894c-4.256,7.574-5.912,24.772,1.863,48.426c7.171,21.815,39.719,65.369,55.762,70.653\n\t\t\t\tc34.873-19.08-3.701-15.168,25.189-33.173c37.467-23.352,96.365-43.82,128.896-51.007c51.454-11.366,72.09-9.938,70.905-8.055\n\t\t\t\tC293.781,108.06,291.07,57.024,289.231,36.928z"/>\n\t\t</g>\n\t\t<path fill="#F4F5F5" d="M273.502,102.985c0,0-0.484,7.046-0.92,8.889l-0.856,0.768l-1.487,1.343c0,0,0.746-3.28,0.676-7.538\n\t\t\tL273.502,102.985z"/>\n\t\t<g>\n\t\t\t<defs>\n\t\t\t\t<path id="SVGID_4_" d="M273.495,103.048l-0.914,8.826l-6.223,5.407l-0.378-9.638c-3.51-1.84-20.124-1.91-40.523,1.965\n\t\t\t\t\tc-20.398,3.875-55.726,13.5-108.591,37.875c-52.865,24.375-56.042,40.035-56.3,41.165c-0.258,1.129-0.609,2.871-0.246,4.106\n\t\t\t\t\tc0.363,1.234,1.566,3.062,1.566,3.062c0.622,0.875,6.294,7.434,6.294,7.434c-0.243,0.139-0.713,0.296-0.713,0.296\n\t\t\t\t\tc-3.776-1.363-10.024-5.048-12.507-6.55c-0.105-0.059-0.211-0.109-0.316-0.168c-0.213-0.126-0.425-0.267-0.634-0.411\n\t\t\t\t\tl-0.127-0.079l-0.016-0.022c-4.346-3.133-7.493-10.523,1.153-21.838c7.623-9.975,16.641-15.494,27.199-21.737\n\t\t\t\t\tc35.97-21.271,88.653-41.928,128.445-51.065c20.468-4.7,37.871-6.713,47.404-5.994\n\t\t\t\t\tC270.766,96.641,274.312,100.216,273.495,103.048z M103.152,50.182c-0.754,0.298-4.411,1.78-5.162,2.081\n\t\t\t\t\tc-46.711,18.73-75.543,39.262-85.429,55.22c-4.89,7.894-6.183,14.713-7.333,23.376c-0.528,3.979-0.264,9.917,0.182,13.905\n\t\t\t\t\tc0.098,0.872,0.196,1.558,0.285,1.837c-6.447-20.414-0.184-36.278,3.696-43.319c10.903-19.787,49.756-42.606,92.09-58.743\n\t\t\t\t\tC101.625,47.168,102.123,48.443,103.152,50.182z M289.642,46.027c0,0-1.68-8.208-8.18-16.932\n\t\t\t\t\tC281.44,29.064,260.598,16,235.788,15.96c-15.584-0.025-35.217,2.462-56.404,6.836c0.858,0.69,2.004,2.132,1.76,4.812\n\t\t\t\t\tc21.139-4.514,40.632-7.022,56.269-6.997c16.325,0.026,32.385,3.661,38.959,8.397c2.862,2.062,6.187,5.337,8.039,8.968\n\t\t\t\t\tc0.562,1.011,3.167,5.866,5.214,12.307C289.626,50.282,289.762,47.693,289.642,46.027z"/>\n\t\t\t</defs>\n\t\t\t<clipPath id="SVGID_5_">\n\t\t\t\t<use xlink:href="#SVGID_4_" overflow="visible"/>\n\t\t\t</clipPath>\n\t\t\t<rect x="282.522" y="30.129" clip-path="url(#SVGID_5_)" fill="#95979A" width="7.146" height="21.322"/>\n\t\t\t\n\t\t\t\t<radialGradient id="SVGID_6_" cx="0.6661" cy="211.1478" r="1" gradientTransform="matrix(270.0389 19.3946 -19.0497 267.9429 3989.5959 -56677.875)" gradientUnits="userSpaceOnUse">\n\t\t\t\t<stop offset="0" style="stop-color:#000000"/>\n\t\t\t\t<stop offset="0.0996" style="stop-color:#242425"/>\n\t\t\t\t<stop offset="0.2741" style="stop-color:#4E4F51"/>\n\t\t\t\t<stop offset="0.5029" style="stop-color:#757779"/>\n\t\t\t\t<stop offset="0.7746" style="stop-color:#A6A8AB"/>\n\t\t\t\t<stop offset="0.8165" style="stop-color:#E2E3E4"/>\n\t\t\t\t<stop offset="0.8338" style="stop-color:#ECEDED"/>\n\t\t\t\t<stop offset="0.8581" style="stop-color:#F2F2F3"/>\n\t\t\t\t<stop offset="0.9255" style="stop-color:#F3F4F4"/>\n\t\t\t\t<stop offset="0.9497" style="stop-color:#85878A"/>\n\t\t\t\t<stop offset="0.9601" style="stop-color:#77787B"/>\n\t\t\t\t<stop offset="0.9911" style="stop-color:#C8CACC"/>\n\t\t\t</radialGradient>\n\t\t\t<path clip-path="url(#SVGID_5_)" fill="url(#SVGID_6_)" d="M274.97,104.208c-1.015,1.477-1.895,7.095-2.389,7.667\n\t\t\t\tc0.266-0.396-6.223,5.407-6.223,5.407S53.633,196.961,60.248,199.321c-1.672-0.501-3.655-1.4-5.602-2.491\n\t\t\t\tc-4.713-2.786-8.78-10.369,0.376-22.35c7.623-9.975,16.641-15.494,27.199-21.736c35.97-21.271,88.653-41.929,128.445-51.066\n\t\t\t\tc20.468-4.7,37.871-6.713,47.404-5.994C271.591,96.703,276.421,101.309,274.97,104.208z M101.481,44.54\n\t\t\t\tc-42.334,16.137-81.187,38.956-92.09,58.743c-3.88,7.042-10.143,22.905-3.696,43.319c-0.089-0.279-0.188-0.965-0.285-1.837\n\t\t\t\tc-0.446-3.989-0.711-9.927-0.182-13.905c1.15-8.662,2.444-15.482,7.333-23.376c9.886-15.959,38.718-36.49,85.429-55.219\n\t\t\t\tc0.752-0.301,4.408-1.784,5.162-2.081C102.123,48.443,101.625,47.168,101.481,44.54z M235.789,15.959\n\t\t\t\tc-15.583-0.025-35.217,2.462-56.404,6.835c0.858,0.69,2.004,2.132,1.76,4.812c21.139-4.514,40.632-7.022,56.269-6.997\n\t\t\t\tc16.325,0.026,32.385,3.661,38.959,8.397c2.862,2.062,7.305,5.886,8.059,9.237c-0.04-1.016-0.352-2.27-0.408-2.911\n\t\t\t\tC283.11,25.107,267.1,16.009,235.789,15.959z"/>\n\t\t</g>\n\t\t<path fill="#DCDDDE" d="M60.273,199.427l7.908,3.825l-5.24-6.101C62.941,197.152,58.272,198.786,60.273,199.427"/>\n\t\t\n\t\t\t<radialGradient id="SVGID_7_" cx="0.6661" cy="211.1478" r="1" gradientTransform="matrix(270.0424 19.3949 -19.05 267.9464 3989.6995 -56678.5859)" gradientUnits="userSpaceOnUse">\n\t\t\t<stop offset="0" style="stop-color:#000000"/>\n\t\t\t<stop offset="0.0996" style="stop-color:#242425"/>\n\t\t\t<stop offset="0.2741" style="stop-color:#4E4F51"/>\n\t\t\t<stop offset="0.5029" style="stop-color:#757779"/>\n\t\t\t<stop offset="0.7746" style="stop-color:#A6A8AB"/>\n\t\t\t<stop offset="0.8338" style="stop-color:#ECEDED"/>\n\t\t\t<stop offset="0.8581" style="stop-color:#F2F2F3"/>\n\t\t\t<stop offset="0.9255" style="stop-color:#F3F4F4"/>\n\t\t\t<stop offset="0.9601" style="stop-color:#77787B"/>\n\t\t\t<stop offset="0.9911" style="stop-color:#C8CACC"/>\n\t\t</radialGradient>\n\t\t<path fill="url(#SVGID_7_)" d="M273.283,103.591c-1.014,1.477-1.926,2.342-2.419,2.914c1.213-1.808-4.269-10.909-55.135-0.044\n\t\t\tc-20.898,4.464-58.364,17.017-91.77,32.224c-14.657,6.627-44.582,21.095-57.613,32.959c-12.456,11.341-14.277,24.658-5.817,27.676\n\t\t\tc-1.672-0.501-3.937-1.4-5.884-2.491c-4.713-2.786-8.78-10.369,0.376-22.35c7.623-9.975,16.641-15.494,27.199-21.737\n\t\t\tc35.97-21.271,88.653-41.928,128.445-51.065c20.468-4.7,37.871-6.713,47.404-5.994\n\t\t\tC271.591,96.703,274.735,100.692,273.283,103.591z M101.481,44.54c-42.334,16.137-81.187,38.956-92.09,58.743\n\t\t\tc-3.88,7.042-10.143,22.905-3.696,43.319c-0.089-0.279-0.188-0.965-0.285-1.837c-0.446-3.989-0.711-9.927-0.182-13.905\n\t\t\tc1.15-8.662,2.444-15.482,7.333-23.376c9.886-15.959,38.718-36.49,85.429-55.219c0.752-0.301,4.408-1.784,5.162-2.081\n\t\t\tC102.123,48.443,101.625,47.168,101.481,44.54z M235.789,15.959c-15.583-0.025-35.217,2.462-56.404,6.835\n\t\t\tc0.858,0.69,2.004,2.132,1.76,4.812c21.139-4.514,40.632-7.022,56.269-6.997c16.325,0.026,32.385,3.661,38.959,8.397\n\t\t\tc2.862,2.062,6.771,6.064,8.179,9.197c-0.546-1.213-0.441-2.314-0.498-2.954C283.141,25.023,267.1,16.009,235.789,15.959z"/>\n\t</g>\n</g>\n<g id="Layer_2">\n\t<g opacity="0.7">\n\t\t<defs>\n\t\t\t\n\t\t\t\t<rect id="SVGID_8_" x="112.559" y="3.607" transform="matrix(0.1079 -0.9942 0.9942 0.1079 82.6225 182.4761)" opacity="0.7" width="60.856" height="83.188"/>\n\t\t</defs>\n\t\t<clipPath id="SVGID_9_">\n\t\t\t<use xlink:href="#SVGID_8_" overflow="visible"/>\n\t\t</clipPath>\n\t\t<g clip-path="url(#SVGID_9_)">\n\t\t\t<g>\n\t\t\t\t<defs>\n\t\t\t\t\t\n\t\t\t\t\t\t<rect id="SVGID_10_" x="112.559" y="3.607" transform="matrix(0.1079 -0.9942 0.9942 0.1079 82.6225 182.4761)" width="60.856" height="83.188"/>\n\t\t\t\t</defs>\n\t\t\t\t<clipPath id="SVGID_11_">\n\t\t\t\t\t<use xlink:href="#SVGID_10_" overflow="visible"/>\n\t\t\t\t</clipPath>\n\t\t\t\t<g transform="matrix(1 0 7.450581e-09 1 -7.629395e-06 0)" clip-path="url(#SVGID_11_)">\n\t\t\t\t\t\n\t\t\t\t\t\t<image overflow="visible" enable-background="new " width="636" height="465" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnwAAAHRCAYAAADwh2T7AAAACXBIWXMAAAsSAAALEgHS3X78AAAA\nGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAyOdJREFUeNrsvQmYJddVJnhuRLwt\nX26VSlWpnC4ttiTLwrIMwiC7PcYG3MYbiw0NxgZ6eub7hvVjuoH5mOlvtp6mu5mmm8GAaRpk424w\ntpFNgxdZNjZehCRbaClbaLNcUqmcVapSKisrt5dviYiJGxXnvT/OuxEvsyqztjz/p9B7GW+tFxH3\n/vc/5/yHSKFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKh\nUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQ\nKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAo\nFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgU\nCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQK\nhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqF\nQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVC\noVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKh\nUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQ\nKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUik0gjmNj\nt628ZmJi0ktuvEaj4We77OvtPj/bvGzfdnw/n7dOp+u1Ox0vDENvs9/bPqfX6xl4ncfvF0WRr2eA\nQqFQKBSKSx4JiTJ228RTzf79+71rr72OiV0QBJWA7ydbJdmq2VbJ9vmOLSWLb33rD3o/+3O/4I36\n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\nX4m2Sibqakbo8W26c7doKZ0/f3/pF3/pV0ovv/Kqn7wev9/vexx1nFKIAgAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCz+fwEGABq0\nIfnI8vaNAAAAAElFTkSuQmCC" transform="matrix(0.13 0.0141 -0.0141 0.1301 104.926 10.4696)">\n\t\t\t\t\t</image>\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t</g>\n\t</g>\n\t<g>\n\t\t<path fill="#ED1C24" d="M174.957,30.203c-0.284-0.646-1.032-1.349-2.281-1.388c-0.213-0.007-0.435,0.007-0.667,0.04\n\t\t\tc-0.904,0.135-1.788,0.676-2.397,1.515c-0.402-0.719-1.081-1.196-1.905-1.321c-0.113-0.015-0.225-0.023-0.335-0.027\n\t\t\tc-0.035-0.001-0.07-0.002-0.105-0.002c0.172-0.292,0.28-0.589,0.333-0.87c0.131-0.693-0.072-1.291-0.545-1.601\n\t\t\tc-0.191-0.125-0.416-0.196-0.65-0.203c-0.414-0.013-0.742,0.159-1.09,0.342c-0.158,0.083-0.322,0.169-0.491,0.236\n\t\t\tc-0.302,0.121-0.62,0.221-0.948,0.31c-0.029-0.454-0.146-0.885-0.436-1.223c-0.197-0.229-0.553-0.506-1.131-0.524\n\t\t\tc-0.063-0.002-0.128-0.001-0.194,0.004c-0.966,0.063-1.745,0.958-2.372,2.727c-0.002-0.19-0.031-0.381-0.09-0.567\n\t\t\tc-0.244-0.763-0.938-1.273-1.766-1.299c-0.319-0.01-0.649,0.055-0.953,0.188c-1.049,0.458-1.616,1.61-1.291,2.623\n\t\t\tc0.025,0.077,0.057,0.15,0.091,0.222c-1.238,0.182-2.105,1.065-2.674,1.944c-0.238-0.137-0.515-0.227-0.835-0.237\n\t\t\tc-0.169-0.005-0.339,0.014-0.506,0.058c-0.744,0.195-1.028,0.664-1.142,1.25c-0.255-0.728-0.738-1.205-1.626-1.278\n\t\t\tc-0.04-0.003-0.08-0.006-0.119-0.007c-0.921-0.029-2.08,0.433-2.367,2.796c-0.036,0.299-0.063,0.607-0.082,0.909\n\t\t\tc-0.185-0.607-0.511-1.198-1.091-1.689c-0.646-0.547-1.254-0.676-1.651-0.689c-0.637-0.02-1.129,0.236-1.377,0.481\n\t\t\tc-0.597,0.589-0.39,1.317-0.29,1.724c0.101,0.407,0.175,0.841,0.148,1.094c-0.193-0.645-0.454-1.168-0.971-1.624\n\t\t\tc-0.483-0.427-1.119-0.664-1.84-0.686c-0.187-0.006-0.378,0.003-0.569,0.027c-1.897,0.236-3.379,1.794-4.103,4.067\n\t\t\tc-0.137-0.23-0.291-0.438-0.46-0.621c-0.752-0.814-1.642-1.242-2.643-1.273c-0.282-0.009-0.576,0.014-0.874,0.068l-0.035,0.007\n\t\t\tc-0.416,0.089-1.162,0.321-1.482,0.869c-0.247,0.423-0.376,1.01,0.169,1.614c-0.218-0.108-0.428-0.184-0.624-0.236\n\t\t\tc-0.283-0.076-0.568-0.119-0.846-0.128c-0.847-0.026-1.578,0.258-1.956,0.761c-0.202,0.269-0.366,0.639-0.279,1.093\n\t\t\tc-0.423-0.205-0.899-0.324-1.389-0.34c-0.248-0.008-0.501,0.011-0.752,0.055c-1.608,0.242-2.789,1.427-3.544,3.038\n\t\t\tc-0.073-0.026-0.149-0.046-0.227-0.059l-0.102-0.013l-0.051-0.002c-0.585-0.018-0.94,0.353-1.176,0.599\n\t\t\tc-0.035,0.036-0.07,0.073-0.108,0.111c-0.072-0.797-0.11-1.449-0.109-2.219c0.002-1.13,0.277-1.776,0.46-2.081l0.108-0.037\n\t\t\tc0.742-0.252,1.458-0.494,2.075-0.713c1.449-0.513,2.455-0.881,3.21-1.315c1.468-0.844,2.565-2.057,2.934-3.245\n\t\t\tc0.274-0.882,0.244-1.625-0.086-2.15c-0.22-0.35-0.557-0.574-0.947-0.631l-0.09-0.012l-0.063-0.002\n\t\t\tc-0.458-0.014-0.795,0.195-1.15,0.417c-0.257,0.16-0.576,0.359-1.07,0.584c-1.027,0.468-2.291,0.943-4.226,1.588\n\t\t\tc-2.061,0.687-4.653,1.655-6.419,3.049c-1.906,1.505-2.48,3.077-2.625,4.121c-0.222,1.504,0.493,1.941,0.939,2.068\n\t\t\tc0.108,0.03,0.218,0.048,0.329,0.051c0.725,0.023,1.146-0.487,1.453-0.86l0.116-0.139c0.058-0.068,0.217-0.242,0.521-0.483\n\t\t\tc-0.311,1.478-0.287,3.07-0.178,4.325c-0.914,0.725-1.319,1.77-1.384,2.545c-0.083,1.003,0.31,1.736,1.028,1.915l0.123,0.029\n\t\t\tl0.115,0.004c0.321,0.01,0.567-0.108,0.757-0.244c0.609,4.554,0.717,8.077,0.29,9.801l-0.016,0.064\n\t\t\tc-0.387,1.52,0.233,2.055,0.822,2.236l0.046,0.014l0.047,0.01c0.123,0.026,0.251,0.042,0.379,0.046\n\t\t\tc1.267,0.04,2.568-0.992,3.313-2.627c0.805-1.768,0.616-5.234,0.038-9.882c0.532,3.639,2.059,5.666,4.39,5.738\n\t\t\tc0.124,0.004,0.251,0.001,0.368-0.009c0.849-0.062,1.602-0.463,2.178-1.159c0.355-0.43,0.617-0.941,0.809-1.457\n\t\t\tc0.11,0.087,0.225,0.168,0.344,0.243c0.554,0.365,1.192,0.568,1.845,0.588c1.091,0.034,2.317-0.442,2.439-1.389\n\t\t\tc0.013-0.096,0.022-0.263-0.018-0.454c1.075-0.184,2.154-1.507,2.94-3.632c0.244-0.61,0.524-1.38,0.754-2.37\n\t\t\tc0.905,1.882,2.357,2.659,3.709,2.702c0.195,0.006,0.395-0.002,0.594-0.025c1.006-0.116,1.957-0.705,2.679-1.659\n\t\t\tc0.437-0.578,0.776-1.268,1.008-2.029c0.451,0.709,1.149,1.203,2.224,1.267l0.046,0.002c1.327,0.023,2.306-0.963,2.955-2.236\n\t\t\tc0.959,1.074,1.995,1.336,2.721,1.359c0.829,0.026,1.462-0.254,1.695-0.376c0.59-0.307,0.946-0.813,0.963-1.342\n\t\t\tc1.498-0.553,1.303-2.42,1.236-3.064c-0.027-0.256-0.048-0.613-0.06-1.022c0.391,3.088,2.039,3.501,2.788,3.524l0,0\n\t\t\tc0.15,0.005,0.304-0.004,0.458-0.026c1.034-0.145,1.704-0.783,1.915-1.46c0.426,0.451,0.991,0.741,1.74,0.764\n\t\t\tc0.067,0.002,0.133,0.002,0.199-0.001c0.842-0.031,1.792-0.53,2.195-1.222c0.463,0.425,1.031,0.713,1.71,0.813\n\t\t\tc0.143,0.021,0.287,0.034,0.429,0.039c1.101,0.034,1.976-0.421,2.642-1.037c0.006,0.012,0.012,0.024,0.018,0.035\n\t\t\tc0.269,0.491,0.752,0.65,0.988,0.699c0.12,0.028,0.256,0.044,0.408,0.049c1.154,0.036,2.81-0.562,3.673-2.358\n\t\t\tc0.97-1.986,0.067-3.915-0.472-5.068c-0.1-0.213-0.194-0.414-0.246-0.554c-0.098-0.265-0.126-0.473-0.126-0.618\n\t\t\tc0.146,0.07,0.336,0.137,0.569,0.144l0,0c0.134,0.004,0.268-0.012,0.4-0.05c0.389-0.113,0.702-0.386,0.881-0.77\n\t\t\tC175.21,31.395,175.199,30.754,174.957,30.203z"/>\n\t\t<g opacity="0.5">\n\t\t\t<g>\n\t\t\t\t<g>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t<rect id="SVGID_12_" x="122.62" y="13.483" transform="matrix(0.1079 -0.9942 0.9942 0.1079 82.8799 180.6859)" width="38.995" height="61.358"/>\n\t\t\t\t\t</defs>\n\t\t\t\t\t<clipPath id="SVGID_13_">\n\t\t\t\t\t\t<use xlink:href="#SVGID_12_" overflow="visible"/>\n\t\t\t\t\t</clipPath>\n\t\t\t\t\t<path clip-path="url(#SVGID_13_)" fill="#595959" d="M157.669,27.744c0.539-0.235,1.102-0.034,1.257,0.45\n\t\t\t\t\t\tc0.155,0.484-0.156,1.067-0.695,1.302s-1.102,0.034-1.257-0.45C156.819,28.563,157.13,27.98,157.669,27.744z M119.826,43.655\n\t\t\t\t\t\tc-0.307-0.039-0.601,0.927-2.176,1.357c-0.184-1.752-0.28-2.686-0.278-3.95c0.003-1.842,0.643-2.734,0.871-2.994\n\t\t\t\t\t\tc0.889-0.302,1.761-0.595,2.492-0.854c1.426-0.504,2.373-0.855,3.031-1.233c1.285-0.739,2.168-1.752,2.44-2.628\n\t\t\t\t\t\tc0.263-0.848,0.108-1.352-0.159-1.391c-0.268-0.04-0.628,0.384-1.766,0.903c-1.137,0.518-2.508,1.022-4.332,1.63\n\t\t\t\t\t\tc-1.822,0.608-4.417,1.551-6.091,2.872c-1.67,1.319-2.117,2.651-2.225,3.43c-0.095,0.645,0.021,0.83,0.164,0.871\n\t\t\t\t\t\tc0.261,0.074,0.47-0.245,0.779-0.608c0.34-0.4,1.422-1.42,3.907-2.374c-2.038,1.607-1.804,5.732-1.598,7.467\n\t\t\t\t\t\tc-1.159,0.567-1.417,1.691-1.45,2.084c-0.032,0.393,0.058,0.739,0.21,0.777c0.161,0.04,0.533-0.636,1.571-0.962\n\t\t\t\t\t\tc0.69,4.555,1.107,9.428,0.505,11.861c-0.075,0.302-0.256,0.905,0.074,1.007c0.727,0.155,1.8-0.473,2.483-1.972\n\t\t\t\t\t\tc0.704-1.547,0.439-5.103-0.081-9.294c-0.117-0.94-0.224-1.812-0.321-2.628c1.211-0.291,1.874-1.491,2.028-1.952\n\t\t\t\t\t\tC120.088,44.523,120.118,43.702,119.826,43.655z M130.074,51.611c-0.265-0.039-0.868-0.51-1.296-1.466\n\t\t\t\t\t\tc-0.428-0.956-0.667-2.03-0.996-4.399c-0.33-2.376-0.494-2.793-1.161-2.785c-1.585,0.11-1.332,3.047-1.225,4.474\n\t\t\t\t\t\tc-0.121,2.203-0.473,3.913-1.194,3.923c-0.693,0.009-1.276-0.779-1.295-4.642c0.132-5.085,2.759-4.477,3.032-4.377\n\t\t\t\t\t\tc0.26,0.095,0.382,0.213,0.49,0.129c0.164-0.13-0.002-0.695-0.34-1.104s-1.109-0.875-2.144-0.688\n\t\t\t\t\t\tc-2.001,0.292-3.796,3.05-3.633,7.367c0.164,4.356,1.895,6.263,3.668,6.12c2.348-0.172,2.497-4.137,2.494-4.163\n\t\t\t\t\t\tc0.1,0.365,0.627,1.421,1.498,1.957c1.252,0.833,2.599,0.21,2.629-0.029C130.633,51.688,130.339,51.65,130.074,51.611z\n\t\t\t\t\t\t M131.157,36.977c-0.397,0.085-0.709,0.243-0.775,0.358c-0.29,0.497,0.606,0.526,1.43,1.498\n\t\t\t\t\t\tc0.597,0.704,1.088,1.814,1.094,4.28c0.007,2.777-0.854,4.389-0.854,4.389s-0.213-3.202-0.935-5.373\n\t\t\t\t\t\tc-0.606-1.823-1.491-2.673-2.404-2.919c-0.85-0.228-1.487,0.01-1.658,0.238s-0.076,0.389,0.168,0.665\n\t\t\t\t\t\tc0.244,0.276,1.377,1.501,2.216,4.524c0.789,2.842,0.893,3.765,1.024,4.472s0.258,1.386,0.905,1.443\n\t\t\t\t\t\tc0.46,0.04,1.424-0.8,2.219-2.96c0.423-1.054,0.808-2.278,1.011-3.944c0.381-3.08-0.149-4.973-0.91-5.796\n\t\t\t\t\t\tC133.158,37.278,132.392,36.753,131.157,36.977z M139.529,47.213c1.948-0.224,3.569-3.052,2.982-6.673\n\t\t\t\t\t\tc-0.106-0.653-0.375-1.867-0.943-2.583c-0.426-0.538-0.973-0.891-1.403-0.615c-0.26,0.236-0.128,0.378,0.164,1.215\n\t\t\t\t\t\tc0.292,0.836,0.412,1.987,0.38,3.117c-0.039,1.394-0.291,2.961-1.279,2.961c-1.021,0-1.49-1.887-1.492-3.975\n\t\t\t\t\t\tc-0.002-2.093,0.829-4.31,2.061-4.3c0.628,0.012,0.855,0.441,1.052,0.375c0.272-0.091,0.413-0.952-0.313-1.592\n\t\t\t\t\t\tc-0.413-0.365-1.001-0.466-1.56-0.397c-2.419,0.301-3.811,3.434-3.624,6.951C135.752,45.425,137.38,47.46,139.529,47.213z\n\t\t\t\t\t\t M145.628,44.787c1.515,0.026,2.403-2.327,2.68-3.779c0.203,0.594,0.482,1.172,0.864,1.664c1.306,1.69,2.804,1.247,3.31,0.984\n\t\t\t\t\t\tc0.268-0.139,0.403-0.329,0.379-0.45c-0.014-0.073-0.086-0.121-0.221-0.12c-0.761-0.005-1.35-0.307-1.926-1.249\n\t\t\t\t\t\tc-0.545-0.911-0.744-3.102-0.662-6.233c0.076-2.898-0.336-3.145-0.888-3.191c-0.947-0.078-1.215,0.941-1.324,1.842\n\t\t\t\t\t\tc-0.15,1.235-0.122,2.681-0.105,3.1c0.01,0.243,0.023,0.688,0.077,1.236c-0.174,1.228-0.597,3.492-1.341,3.448\n\t\t\t\t\t\tc-0.899-0.054-0.589-3.584-0.614-4.841c-0.02-1.043-0.045-2.252-0.962-3.028c-0.822-0.696-1.46-0.372-1.57-0.263\n\t\t\t\t\t\tc-0.175,0.173-0.065,0.431,0.043,0.857c0.12,0.474,0.2,2.01,0.238,4.057C143.646,40.891,143.24,44.643,145.628,44.787z\n\t\t\t\t\t\t M157.653,33.034c-1.42-0.098-1.575,2.98-1.534,4.971c0.052,2.5,0.824,3.789,2.097,3.61c0.758-0.106,1.073-0.619,1.056-0.869\n\t\t\t\t\t\tc-0.025-0.362-0.44-0.311-0.717-1.207c-0.34-1.504-0.41-2.85-0.249-4.672C158.452,33.225,158.059,33.062,157.653,33.034z\n\t\t\t\t\t\t M159.146,31.495c0.26,0.093,0.283-0.215,1.269-0.659c0.037-0.016,0.075-0.029,0.111-0.043\n\t\t\t\t\t\tc-0.167,0.823-0.362,2.163-0.43,4.646c-0.122,4.802,1.093,5.506,2.084,5.469c0.708-0.026,1.348-0.566,1.35-0.83\n\t\t\t\t\t\tc0.003-0.321-0.308-0.301-0.523-0.704c-0.487-0.802-0.629-2.096-0.625-4.917c0.044-1.726,0.21-3.044,0.374-4.116\n\t\t\t\t\t\tc0.462-0.075,1.018-0.172,1.714-0.317c2.379-0.495,2.569-2.178,2.294-2.358c-0.195-0.128-0.631,0.233-1.238,0.475\n\t\t\t\t\t\tc-0.829,0.331-1.742,0.524-2.532,0.685c0.024-0.163,0.046-0.321,0.064-0.473c0.165-1.38-0.145-1.597-0.572-1.57\n\t\t\t\t\t\tc-0.738,0.048-1.35,1.713-1.615,2.592c-0.501,0.186-0.913,0.419-1.261,0.725C159.065,30.582,158.878,31.4,159.146,31.495z\n\t\t\t\t\t\t M169.767,37.669c-0.163,0.581-1.266,3.171-3.484,2.843c-2.028-0.3-2.627-3.201-2.293-5.576\n\t\t\t\t\t\tc0.252-1.79,1.569-4.898,3.883-4.603c1.266,0.193,1.987,1.876,0.644,4.281c-0.739,1.323-1.79,2.002-2.322,2.279\n\t\t\t\t\t\tc0.213,0.858,0.64,1.375,1.301,1.421c0.713,0.049,1.354-0.274,1.843-0.843c0.154-0.18,0.277-0.33,0.393-0.312\n\t\t\t\t\t\tC169.872,37.181,169.841,37.405,169.767,37.669z M166.053,35.928c0.386-0.343,1.023-1.013,1.459-2.014\n\t\t\t\t\t\tc0.637-1.461,0.445-2.312,0.018-2.358c-0.569-0.061-1.407,1.512-1.485,3.318C166.029,35.25,166.031,35.602,166.053,35.928z\n\t\t\t\t\t\t M174.271,30.85c-0.17-0.386-0.72-0.87-1.799-0.714c-1.189,0.178-2.432,1.418-2.263,3.34c0.164,1.861,0.986,2.894,1.051,4.055\n\t\t\t\t\t\tc0.06,1.08-0.326,1.672-0.87,2.138c-0.257,0.219-0.283,0.328-0.229,0.428c0.054,0.099,0.193,0.148,0.274,0.163\n\t\t\t\t\t\tc0.317,0.085,2.019,0.054,2.875-1.728c0.914-1.871-0.402-3.806-0.759-4.771c-0.391-1.049-0.161-1.942,0.416-2.143\n\t\t\t\t\t\tc0.642-0.224,0.869,0.281,1.138,0.203C174.391,31.739,174.445,31.245,174.271,30.85z M153.379,42.311\n\t\t\t\t\t\tc0.913-0.181,0.801-1.27,0.726-1.99c-0.097-0.932-0.125-3.023,0.072-4.446c0.223-1.611,0.891-3.178,2.191-3.604\n\t\t\t\t\t\tc1.146-0.376,1.619,0.165,1.894-0.117c0.232-0.238-0.183-1.484-1.721-1.509c-1.773-0.029-2.703,2.153-2.97,2.93\n\t\t\t\t\t\tc0,0-0.437-1.385-1.277-1.166c-0.465,0.122-0.385,0.411-0.432,2.009c-0.047,1.596-0.18,3.627,0.031,5.384\n\t\t\t\t\t\tC152.104,41.557,152.467,42.492,153.379,42.311z"/>\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t</g>\n\t\t<path fill="#FFF200" d="M157.366,27.533c0.539-0.235,1.102-0.034,1.257,0.45c0.155,0.484-0.156,1.067-0.695,1.302\n\t\t\tc-0.539,0.236-1.102,0.034-1.257-0.45C156.515,28.351,156.827,27.768,157.366,27.533z M119.523,43.443\n\t\t\tc-0.307-0.039-0.601,0.927-2.176,1.357c-0.184-1.752-0.28-2.686-0.278-3.95c0.003-1.842,0.643-2.734,0.871-2.994\n\t\t\tc0.889-0.302,1.761-0.595,2.492-0.854c1.426-0.504,2.373-0.854,3.031-1.233c1.285-0.739,2.168-1.752,2.44-2.628\n\t\t\tc0.263-0.848,0.108-1.352-0.159-1.391c-0.268-0.04-0.628,0.384-1.766,0.902c-1.137,0.518-2.508,1.022-4.332,1.63\n\t\t\tc-1.822,0.608-4.417,1.551-6.091,2.872c-1.67,1.319-2.117,2.651-2.225,3.43c-0.095,0.645,0.021,0.83,0.164,0.871\n\t\t\tc0.261,0.074,0.47-0.245,0.779-0.608c0.34-0.4,1.422-1.42,3.907-2.374c-2.038,1.607-1.804,5.732-1.598,7.467\n\t\t\tc-1.159,0.567-1.417,1.691-1.45,2.084c-0.032,0.393,0.058,0.739,0.21,0.777c0.161,0.04,0.533-0.636,1.571-0.962\n\t\t\tc0.69,4.555,1.107,9.428,0.505,11.861c-0.075,0.302-0.256,0.905,0.074,1.007c0.727,0.155,1.8-0.473,2.483-1.972\n\t\t\tc0.704-1.547,0.439-5.103-0.081-9.294c-0.117-0.94-0.224-1.812-0.321-2.628c1.211-0.291,1.874-1.491,2.028-1.952\n\t\t\tC119.785,44.311,119.815,43.491,119.523,43.443z M129.771,51.4c-0.265-0.039-0.868-0.51-1.296-1.466\n\t\t\tc-0.428-0.956-0.666-2.03-0.996-4.399c-0.33-2.376-0.494-2.793-1.161-2.785c-1.585,0.11-1.332,3.047-1.225,4.474\n\t\t\tc-0.121,2.203-0.473,3.913-1.194,3.923c-0.693,0.009-1.276-0.779-1.295-4.642c0.132-5.085,2.759-4.477,3.032-4.377\n\t\t\tc0.26,0.094,0.382,0.213,0.49,0.129c0.164-0.13-0.002-0.695-0.34-1.104s-1.109-0.875-2.144-0.688\n\t\t\tc-2.001,0.292-3.796,3.05-3.633,7.367c0.164,4.356,1.895,6.263,3.668,6.12c2.348-0.172,2.497-4.137,2.494-4.163\n\t\t\tc0.1,0.365,0.627,1.421,1.498,1.957c1.252,0.833,2.599,0.21,2.629-0.029C130.33,51.477,130.036,51.439,129.771,51.4z\n\t\t\t M130.853,36.765c-0.397,0.085-0.709,0.243-0.775,0.358c-0.29,0.497,0.606,0.526,1.43,1.498c0.597,0.704,1.088,1.814,1.094,4.28\n\t\t\tc0.007,2.777-0.854,4.389-0.854,4.389s-0.213-3.202-0.935-5.373c-0.606-1.823-1.491-2.673-2.404-2.919\n\t\t\tc-0.85-0.228-1.487,0.01-1.658,0.238s-0.076,0.389,0.168,0.665c0.244,0.276,1.377,1.501,2.216,4.524\n\t\t\tc0.789,2.842,0.893,3.765,1.024,4.472c0.131,0.706,0.258,1.386,0.905,1.443c0.46,0.04,1.424-0.8,2.219-2.96\n\t\t\tc0.423-1.054,0.808-2.278,1.011-3.944c0.381-3.08-0.149-4.973-0.91-5.796C132.854,37.066,132.088,36.542,130.853,36.765z\n\t\t\t M139.225,47.001c1.948-0.224,3.569-3.052,2.982-6.673c-0.106-0.653-0.375-1.867-0.943-2.583\n\t\t\tc-0.426-0.538-0.973-0.891-1.403-0.615c-0.26,0.236-0.128,0.378,0.164,1.215c0.292,0.836,0.412,1.987,0.38,3.117\n\t\t\tc-0.039,1.394-0.291,2.961-1.279,2.961c-1.021,0-1.49-1.887-1.492-3.975c-0.002-2.093,0.829-4.31,2.061-4.3\n\t\t\tc0.628,0.012,0.855,0.441,1.052,0.375c0.272-0.091,0.412-0.951-0.313-1.592c-0.413-0.365-1.001-0.466-1.56-0.397\n\t\t\tc-2.419,0.301-3.811,3.434-3.624,6.951C135.449,45.214,137.077,47.248,139.225,47.001z M145.325,44.575\n\t\t\tc1.515,0.026,2.403-2.327,2.68-3.779c0.203,0.594,0.482,1.172,0.864,1.664c1.306,1.69,2.804,1.247,3.31,0.984\n\t\t\tc0.268-0.139,0.403-0.329,0.379-0.451c-0.014-0.073-0.086-0.121-0.221-0.12c-0.761-0.005-1.35-0.307-1.926-1.249\n\t\t\tc-0.545-0.911-0.744-3.102-0.662-6.232c0.076-2.898-0.336-3.145-0.888-3.191c-0.947-0.078-1.215,0.941-1.324,1.842\n\t\t\tc-0.15,1.235-0.122,2.68-0.105,3.1c0.01,0.243,0.023,0.688,0.077,1.236c-0.174,1.228-0.597,3.492-1.341,3.448\n\t\t\tc-0.899-0.053-0.589-3.584-0.614-4.841c-0.02-1.043-0.045-2.252-0.962-3.028c-0.822-0.696-1.46-0.372-1.57-0.263\n\t\t\tc-0.175,0.173-0.065,0.431,0.043,0.857c0.12,0.474,0.2,2.01,0.238,4.057C143.342,40.679,142.937,44.431,145.325,44.575z\n\t\t\t M157.349,32.822c-1.42-0.098-1.575,2.98-1.534,4.971c0.052,2.5,0.824,3.789,2.097,3.61c0.757-0.106,1.073-0.619,1.056-0.869\n\t\t\tc-0.025-0.362-0.44-0.311-0.717-1.207c-0.34-1.504-0.41-2.85-0.249-4.672C158.149,33.014,157.756,32.85,157.349,32.822z\n\t\t\t M158.843,31.284c0.26,0.093,0.283-0.215,1.269-0.659c0.037-0.016,0.074-0.029,0.111-0.043c-0.167,0.823-0.362,2.163-0.43,4.646\n\t\t\tc-0.122,4.802,1.093,5.506,2.084,5.469c0.708-0.026,1.348-0.566,1.35-0.83c0.003-0.321-0.308-0.301-0.523-0.704\n\t\t\tc-0.487-0.802-0.629-2.096-0.625-4.917c0.044-1.726,0.21-3.044,0.374-4.116c0.462-0.075,1.018-0.172,1.715-0.317\n\t\t\tc2.379-0.495,2.569-2.178,2.294-2.358c-0.195-0.128-0.631,0.233-1.238,0.475c-0.829,0.331-1.742,0.524-2.532,0.685\n\t\t\tc0.024-0.163,0.046-0.321,0.064-0.473c0.165-1.38-0.145-1.597-0.572-1.57c-0.738,0.048-1.35,1.713-1.615,2.592\n\t\t\tc-0.501,0.186-0.914,0.419-1.261,0.725C158.762,30.371,158.575,31.188,158.843,31.284z M169.464,37.457\n\t\t\tc-0.163,0.581-1.266,3.171-3.484,2.843c-2.028-0.3-2.627-3.201-2.293-5.576c0.252-1.79,1.569-4.898,3.883-4.603\n\t\t\tc1.266,0.193,1.987,1.876,0.644,4.281c-0.739,1.323-1.79,2.002-2.322,2.279c0.213,0.858,0.64,1.375,1.301,1.421\n\t\t\tc0.713,0.049,1.354-0.274,1.843-0.843c0.154-0.18,0.277-0.33,0.393-0.312C169.569,36.97,169.538,37.194,169.464,37.457z\n\t\t\t M165.75,35.716c0.386-0.343,1.023-1.013,1.459-2.014c0.637-1.461,0.445-2.312,0.018-2.358c-0.569-0.061-1.407,1.512-1.485,3.318\n\t\t\tC165.725,35.038,165.728,35.391,165.75,35.716z M173.968,30.638c-0.17-0.386-0.72-0.87-1.799-0.714\n\t\t\tc-1.189,0.178-2.432,1.418-2.263,3.34c0.164,1.861,0.986,2.894,1.051,4.055c0.06,1.08-0.326,1.672-0.87,2.138\n\t\t\tc-0.257,0.219-0.283,0.328-0.228,0.428c0.054,0.099,0.193,0.148,0.274,0.163c0.317,0.085,2.019,0.054,2.875-1.728\n\t\t\tc0.914-1.871-0.402-3.805-0.759-4.77c-0.391-1.049-0.161-1.943,0.416-2.143c0.642-0.224,0.869,0.281,1.138,0.203\n\t\t\tC174.087,31.527,174.141,31.033,173.968,30.638z M153.075,42.099c0.913-0.181,0.801-1.27,0.726-1.99\n\t\t\tc-0.097-0.932-0.125-3.023,0.072-4.446c0.223-1.611,0.891-3.178,2.191-3.604c1.146-0.376,1.619,0.165,1.894-0.117\n\t\t\tc0.232-0.238-0.183-1.484-1.721-1.509c-1.773-0.029-2.703,2.153-2.97,2.93c0,0-0.437-1.385-1.277-1.166\n\t\t\tc-0.465,0.122-0.385,0.411-0.432,2.009c-0.047,1.596-0.18,3.627,0.031,5.384C151.801,41.345,152.163,42.28,153.075,42.099z"/>\n\t</g>\n\t\n\t\t<linearGradient id="cadbury_logo_2_" gradientUnits="userSpaceOnUse" x1="151.1472" y1="251.8356" x2="178.1811" y2="232.0889" gradientTransform="matrix(0.99 0.1407 0.1407 -0.99 -56.0405 236.3141)">\n\t\t<stop offset="0" style="stop-color:#986E3A"/>\n\t\t<stop offset="0.511" style="stop-color:#D6B37C"/>\n\t\t<stop offset="1" style="stop-color:#9A673B"/>\n\t</linearGradient>\n\t<path id="cadbury_logo_1_" fill="url(#cadbury_logo_2_)" d="M160.872,15.197c0.086-0.372,0.157-0.937-0.174-1.216\n\t\tc-0.116-0.072-0.243-0.08-0.381-0.036c-0.196,0.076-0.326,0.259-0.39,0.459c-0.353,0.937-0.622,1.924-1.184,2.793\n\t\tc-0.168,0.259-0.395,0.583-0.658,0.576c-0.065-0.004-0.117-0.039-0.155-0.17c-0.175-0.763,0.2-1.636,0.454-2.383\n\t\tc0.091-0.22,0.15-0.53,0.046-0.738c-0.059-0.109-0.167-0.174-0.284-0.184c-0.334-0.017-0.534,0.258-0.7,0.522\n\t\tc-0.606,1.125-1.099,2.418-1.915,3.445c-0.122,0.126-0.242,0.298-0.432,0.28c-0.082-0.012-0.148-0.077-0.178-0.183\n\t\tc-0.106-0.462,0.035-1.152,0.243-1.692c0.152-0.393,0.327-0.638,0.402-1.033c0.03-0.212-0.035-0.402-0.231-0.509\n\t\tc-0.105-0.045-0.209-0.066-0.358,0.006c-0.282,0.153-0.53,0.382-0.862,0.444c0.066-0.236,0.151-0.459,0.136-0.708\n\t\tc-0.02-0.211-0.089-0.449-0.284-0.531c-0.189-0.069-0.423-0.018-0.597,0.134c-0.499,0.5-0.529,1.315-0.303,1.961\n\t\tc-0.157,0.821-0.547,1.604-0.992,2.3c-0.166,0.224-0.328,0.479-0.608,0.514c-0.188,0.001-0.279-0.133-0.327-0.364\n\t\tc0.275-0.536,0.607-1.127,0.758-1.694c0.119-0.441,0.282-1.121,0.01-1.539c-0.058-0.102-0.194-0.172-0.338-0.161\n\t\tc-0.27,0.011-0.47,0.209-0.628,0.407c-0.595,0.865-0.739,1.875-0.754,2.904c-0.107,0.328-0.283,0.666-0.545,0.914\n\t\tc-0.124,0.123-0.334,0.24-0.5,0.161c-0.094-0.062-0.15-0.161-0.169-0.275c-0.096-0.637,0.147-1.258,0.35-1.852\n\t\tc0.362-1.059,0.739-1.311,0.551-1.759c-0.073-0.165-0.239-0.27-0.407-0.277c-0.219-0.021-0.469,0.105-0.604,0.312\n\t\tc-0.295,0.49-0.602,1.004-1.025,1.409c-0.249,0.222-0.459,0.429-0.829,0.589c-0.023-0.205-0.069-0.415-0.131-0.603\n\t\tc-0.197-0.605-0.578-1.196-1.284-1.15c-0.245,0.015-0.485,0.143-0.651,0.244c0.09-0.875,0.321-1.735,0.74-2.5\n\t\tc0.255-0.467,0.664-0.939,0.713-1.334c0.026-0.212-0.065-0.419-0.243-0.524c-0.186-0.096-0.374-0.096-0.583,0.004\n\t\tc-0.423,0.242-0.674,0.708-0.888,1.135c-0.402,0.443-1.005,0.643-1.614,0.777c-0.808,0.21-1.324-0.023-1.864-0.518\n\t\tc-0.147-0.116-0.328-0.243-0.541-0.226c-0.222-0.002-0.444,0.199-0.531,0.354c-0.114,0.182-0.118,0.435-0.006,0.61\n\t\tc0.457,0.663,1.038,1.173,1.296,2.062c0.059,0.206,0.106,0.411,0.107,0.626c-1.579,0.918-2.489,2.841-2.42,4.606\n\t\tc-0.157,0.514-0.311,1.399-0.913,1.365c-0.304-0.063-0.729-1.071,0.118-4.043c0.044-0.447,0.176-0.92-0.058-1.35\n\t\tc-0.134-0.242-0.449-0.288-0.698-0.28c-1.978,0.201-3.175,2.511-4.069,4.116c-1.125,1.8-2.473,2.883-3.843,3.561\n\t\tc-3.361,1.665-7.159,1.041-7.425-2.664c-0.255-3.531,1.91-7.598,6.584-9.522c3.61-1.485,5.994-0.295,5.953,1.836\n\t\tc-0.02,1.037-0.719,4.227-5.229,5.846c-0.775,0.278-2.187,0.391-2.762-0.277c-0.902-1.064-0.583-2.368-0.007-3.289\n\t\tc1.005-1.489,2.717-2.402,4.498-2.85c0.146-0.029,0.267-0.096,0.342-0.259c0.044-0.111,0.042-0.214-0.014-0.355\n\t\tc-0.096-0.19-0.278-0.234-0.459-0.215c-1.623,0.229-3.108,0.916-4.264,1.891c-1.366,1.243-2.38,2.854-2.253,4.68\n\t\tc0.092,1.191,0.898,2.265,2.078,2.571c1.308,0.292,3.093-0.317,4.279-0.927c2.478-1.401,4.552-3.835,4.883-6.584\n\t\tc0.121-1.23-0.477-2.475-1.557-3.129c-1.735-0.995-5.294-0.958-8.865,1.322c-1.286,0.823-3.225,2.255-4.59,4.855\n\t\tc-1.364,2.601-1.449,6.171,0.654,8.159c1.531,1.447,4.03,1.905,6.552,1.207c1.826-0.506,3.653-1.959,5.125-3.85\n\t\tc-0.081,1.148,0.661,1.663,1.375,1.677c1.581,0.02,2.267-1.975,2.267-1.975c0.19,0.575,0.264,0.837,0.872,0.994\n\t\tc1.026,0.261,1.476-0.572,1.657-1.215c0.175,0.408,0.636,0.79,1.117,0.739c0.759-0.073,1.291-0.769,1.577-1.373\n\t\tc1.009-2.136,1.002-4.585,0.396-6.807c0.431-0.025,0.712-0.134,1.084-0.257c0.21-0.068,0.373-0.122,0.579-0.205\n\t\tc-0.345,1.389-0.567,2.831-0.558,4.315c0.044,0.98,0.096,2.118,0.788,2.783c0.298,0.306,0.729,0.407,1.152,0.268\n\t\tc0.539-0.158,0.988-0.897,1.171-1.439c0.132-0.331,0.325-1.121,0.373-1.659c0.214-0.151,0.435-0.286,0.641-0.451\n\t\tc0.085-0.069,0.13-0.101,0.212-0.169c-0.101,0.607-0.207,1.302-0.064,1.912c0.091,0.424,0.355,0.799,0.773,0.9\n\t\tc0.688,0.142,1.395-0.759,1.801-1.273c0.137,0.243,0.307,0.499,0.589,0.593c0.332,0.109,0.784-0.029,1.067-0.36\n\t\tc0.826-0.967,1.176-2.288,1.596-3.486l0.045-0.125c0.215-0.056,0.397-0.136,0.595-0.257c-0.181,0.503-0.33,1.025-0.396,1.563\n\t\tc-0.089,0.655,0.013,1.49,0.571,1.83c0.286,0.15,0.666-0.028,0.87-0.193c0.658-0.565,1.088-1.383,1.492-2.119l0.031-0.05\n\t\tc-0.014,0.404,0.055,0.946,0.254,1.288c0.114,0.201,0.361,0.368,0.583,0.35c0.677-0.078,1.008-0.707,1.391-1.23\n\t\tc0.066-0.09,0.136-0.209,0.177-0.266c-0.169,0.857-0.485,1.799-0.675,2.663c-0.049,0.22-0.204,0.705-0.125,0.998\n\t\tc0.089,0.332,0.34,0.563,0.83,0.614c0.091,0.008,0.139-0.037,0.148-0.106c-0.116-0.546,0.002-0.992,0.22-1.791\n\t\tC160.065,18.438,160.489,16.803,160.872,15.197z M137.211,19.107c-0.455,1.511-1.221,3.579-1.733,4.151\n\t\tc-0.694,0.776-1.06-0.081-0.88-0.598c0.272-1.31,0.914-3.001,1.948-3.999c0.137-0.115,0.473-0.4,0.664-0.182\n\t\tC137.279,18.616,137.261,18.942,137.211,19.107z M141.501,20.641c-0.125,0.378-0.278,0.806-0.557,1.127\n\t\tc-0.081,0.099-0.235,0.216-0.368,0.117c-0.328-0.263-0.291-0.978-0.222-1.421c0.131-0.847,0.558-1.744,1.347-2.201l0.043-0.022\n\t\tC141.852,19.053,141.705,19.865,141.501,20.641z M145.322,20.76c-0.086,0.025-0.165,0.006-0.233-0.034\n\t\tc-0.314-0.245-0.397-0.973-0.422-1.517c-0.02-0.431,0.041-1.236,0.425-1.577c0.242-0.179,0.531-0.126,0.629,0.136\n\t\tc0.209,0.505,0.213,1.379,0.116,1.958C145.779,20.072,145.676,20.676,145.322,20.76z"/>\n</g>\n</svg>\n\n'})),et.register("b1jGN",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0});const A={m:["x","y"],z:[],l:["x","y"],h:["x"],v:["y"],c:["x1","y1","x2","y2","x","y"],s:["x2","y2","x","y"],q:["x1","y1","x","y"],t:["x","y"],a:["rx","ry","xRotation","largeArc","sweep","x","y"]};t.exports.default=class{constructor(t){const e=Array.from(t.querySelectorAll("path"));this.paths=e.map((t=>{const e=t.getAttribute("d")||"";return{pathElement:t,pathData:this.parsePath(e)}}))}transform(t){for(const e of this.paths)e.pathData=this.runTransformer(e.pathData,t);this.update()}encodePath(t){let e="";const n=Math.pow(10,2);return t.map((t=>{const i=[],a=t.relative?t.type:t.type.toUpperCase();let o=e!==a;const s=A[t.type];o&&(i.push(a),e=a);for(const e of s){const A=t[e];let a;switch(typeof A){case"boolean":a=0|A;break;case"number":a=(A*n|0)/n;break;default:throw new Error("Failed to encode path.")}o||i.push(" "),i.push(a),o=!1}return i.join("")})).join("")}parsePath(t){const e=/([mzlhvcsqta])([^mzlhvcsqta]*)/gi,n=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi,i=[];let a;for(e.lastIndex=0;a=e.exec(t);){const t=a[1].toLowerCase(),e=(a[2].match(n)||[]).map(parseFloat),o=t===a[1],s=A[t];if(e.length<s.length)throw new Error(`Path type "${t}" given ${e.length} arguments, expected ${s.length}.`);if(s.length>0){if(e.length%s.length!=0)throw new Error(`Path type "${t}" given ${e.length} arguments, not divisible by ${s.length}`);for(let A=0;A<e.length/s.length;A++){const n={type:t,relative:o};for(let t=0;t<s.length;t++)n[s[t]]=e[A*s.length+t];i.push(n)}}else i.push({type:t,relative:o})}return i}runTransformer(t,e){const A=[["x1","y1"],["x2","y2"],["x","y"]];return this.transformPath(t,(t=>{for(let n=0;n<A.length;n++){const[i,a]=A[n];if(i in t&&a in t){const A=[t[i],t[a]],n=e(A);if(n.length<2)throw new Error("Transformer must return at least 2 points.");t[i]=n[0],t[a]=n[1]}}return t}))}transformPath(t,e){const A=[];for(let n=0;n<t.length;n++){const i=e(JSON.parse(JSON.stringify(t[n])));Array.isArray(i)?A.push(...i):i&&A.push(i)}return A}update(){for(const{pathElement:t,pathData:e}of this.paths){const A=this.encodePath(e);t.setAttribute("d",A)}}}})),et.register("e8mVx",(function(t,e){"use strict";var A=t.exports&&t.exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.Maltesers=void 0;var n=et("9AnIb"),i=et("1M5UK"),a=et("bA8E4"),o=et("f6yx4");const s=A(r),c=A(et("b1jGN"));var g=et("22zA1");class l extends n.ModuleProduct{constructor(t,e){super(),this.moduleName="Maltesers",this.shortLength=5,this.indicator=t=>t?1:0,this.backgroundSvg=t,this.backgroundShortSvg=e}svgPreview(t){return this.svg(t)}svgPrint(t){return this.svg(t)}svg(t){const e=(0,g.loadFontFromDataUrl)(o.fontTtfDataUrl),A=""!==t?(n=t).charAt(0).toUpperCase()+n.substr(1).toLowerCase():"";var n;const i=e.getPath(A,0,72,72),a=t.length<this.shortLength,s=a?this.backgroundShortSvg:this.backgroundSvg;return this.brandSvg(i,s,a)}brandSvg(t,e,A){const n=t.toSVG(2),o=t.getBoundingBox(),r=o.y2-o.y1,g=o.x2-o.x1,l=t.toPathData(3),[B,d,h]=(0,i.initSvgFromBackground)(e);if(!B)return"";const w=(0,i.svgElem)("defs");let E,u,C,Q;B.appendChild(w),(0,i.addBackground)(B,w,e),A?(E=.275*d,u=h/2*1.1,C=.22*h,Q=.32*d):(E=.22*d*1.1,u=.8*h,C=.067*h,Q=.33*d);const p=(0,i.svgElem)("g");B.appendChild(p),p.setAttribute("transform",`translate(${C} ${Q}) rotate(-10)`);const m=(0,i.svgRect)(E,u);m.setAttribute("opacity","0"),p.appendChild(m);const f=(0,i.svgElem)("g");p.appendChild(f);const D=(()=>{const t=(0,i.svgElem)("g"),e=(0,i.svgElem)("g");t.appendChild(e),e.setAttribute("stroke","#5C1A0D"),e.setAttribute("stroke-width","4"),e.setAttribute("transform","translate(1,1)"),e.innerHTML=n;const A=(0,i.svgElem)("g");t.appendChild(A),A.setAttribute("fill","#FFE386"),A.setAttribute("transform","translate(1,1)"),A.innerHTML=n;const a=(0,i.svgElem)("g");t.appendChild(a),a.setAttribute("fill","white"),a.innerHTML=n;const o=new c.default(t);return o.transform((([t,e])=>[t,e+Math.pow((g-t)*e,2)/(5e4*g)])),o.transform((([t,e])=>[t,e+Math.pow(g/3-t,2)/g*this.indicator(t<g/3)])),o.transform((([t,e])=>[t-(r-e)*(g-t)/800,e])),t})();f.appendChild(D);const I=(0,s.default)(l);return(0,a.transformTextEnclosure)(f,I,E,u),B.outerHTML}}t.exports.Maltesers=l})),et.register("f6yx4",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.fontTtfDataUrl=void 0,t.exports.fontTtfDataUrl="data:application/octet-stream;base64,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ZWxmIE1ha2VyIDIuMy41AABNAGEAbAB0AGUAcwBlAHIAcwBSAGUAZwB1AGwAYQByAABNYWx0ZXNlcnNSZWd1bGFyAABNAGEAbAB0AGUAcwBlAHIAcwAATWFsdGVzZXJzAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAAAAAAACAAAAAAAA/4MAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAABAAIBAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCsAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAljb250cm9sTEYJY29udHJvbENSB0FwLmxpZ2EHQWoubGlnYQdFdC5saWdhB0VmLmxpZ2EHRWoubGlnYQdFay5saWdhB0VsLmxpZ2EHRWIubGlnYQdGdC5saWdhB0ZoLmxpZ2EHRmsubGlnYQdGbC5saWdhB0ZiLmxpZ2EHSHQubGlnYQdIZi5saWdhB0l0LmxpZ2EHSXAubGlnYQdJZi5saWdhB0lqLmxpZ2EHSWwubGlnYQdJYi5saWdhB0p0LmxpZ2EHSmYubGlnYQdKaC5saWdhB0prLmxpZ2EHSmwubGlnYQdKYi5saWdhB0t0LmxpZ2EHS3AubGlnYQdLeS5saWdhB0xqLmxpZ2EHTWoubGlnYQdNaC5saWdhB01mLmxpZ2EHTnQubGlnYQdOZi5saWdhB09mLmxpZ2EHT3oubGlnYQdQcS5saWdhB1B3LmxpZ2EHUHIubGlnYQdQdC5saWdhB1B5LmxpZ2EHUHUubGlnYQdQaS5saWdhB1BmLmxpZ2EHUGgubGlnYQdQai5saWdhB1BrLmxpZ2EHUGwubGlnYQdQei5saWdhB1B4LmxpZ2EHUHYubGlnYQdQYi5saWdhB1BuLmxpZ2EHUG0ubGlnYQdScC5saWdhB1JmLmxpZ2EHUmoubGlnYQdUdC5saWdhB1RmLmxpZ2EHVGgubGlnYQdUay5saWdhB1RsLmxpZ2EHVGIubGlnYQdVdC5saWdhB1VzLmxpZ2EHVWYubGlnYQdWdC5saWdhB1ZzLmxpZ2EHVmYubGlnYQdWbC5saWdhB1d0LmxpZ2EHV2YubGlnYQdYcC5saWdhB1l0LmxpZ2EHWWkubGlnYQdZZi5saWdhB1loLmxpZ2EHWWwubGlnYQdZay5saWdhB1liLmxpZ2EHQWYubGlnYQdDeS5saWdhB0VoLmxpZ2EHR3IubGlnYQdPcC5saWdhB2J0LmxpZ2EHYnIubGlnYQdiZi5saWdhB2JqLmxpZ2EHYnoubGlnYQdkdC5saWdhB2VmLmxpZ2EHZnQubGlnYQdmaC5saWdhB2ZiLmxpZ2EHZmsubGlnYQdnai5saWdhB2pqLmxpZ2EHeWoubGlnYQd0dC5saWdhB3RmLmxpZ2EHdGgubGlnYQd0aS5saWdhB3RrLmxpZ2EHdGwubGlnYQh0dGgubGlnYQhlZmYubGlnYQhlZmIubGlnYQdmZi5saWdhB2ZpLmxpZ2EHZmwubGlnYQAAAAAAAAH//wACAAEAAAAMAAAAHAAAAAIAAgADADoAAQA7AKsAAgAEAAAAAgAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQQIAB0AQABaAGQAngDIANIA5AEWAUgBYgFsAYYBmAGyAkQCXgKQAqoCzALeAugDIgNMA1YDdAOuA7gDwgP+AAMACAAOABQAjQACACUAPAACACkAOwACAC8AAQAEAI4AAgA4AAcAEAAWABwAIgAoAC4ANACPAAIAJwBCAAIAIQBBAAIAKwBAAAIAKgA/AAIAKQA+AAIAJQA9AAIAMwAFAAwAEgAYAB4AJABHAAIAIQBGAAIAKwBFAAIAKgBEAAIAJwBDAAIAMwABAAQAkAACADEAAgAGAAwASQACACUASAACADMABgAOABQAGgAgACYALABPAAIAIQBOAAIAKwBNAAIAKQBMAAIAJQBLAAIALwBKAAIAMwAGAA4AFAAaACAAJgAsAFUAAgAhAFQAAgArAFMAAgAqAFIAAgAnAFEAAgAlAFAAAgAzAAMACAAOABQAWAACADgAVwACAC8AVgACADMAAQAEAFkAAgApAAMACAAOABQAXAACACUAWwACACcAWgACACkAAgAGAAwAXgACACUAXQACADMAAwAIAA4AFACRAAIALwBgAAIAOQBfAAIAJQASACYALAAyADgAPgBEAEoAUABWAFwAYgBoAG4AdAB6AIAAhgCMAHIAAgAsAHEAAgAtAHAAAgAhAG8AAgA1AG4AAgA3AG0AAgA5AGwAAgArAGsAAgAqAGoAAgApAGkAAgAnAGgAAgAlAGcAAgAoAGYAAgA0AGUAAgA4AGQAAgAzAGMAAgAxAGIAAgA2AGEAAgAwAAMACAAOABQAdQACACkAdAACACUAcwACAC8ABgAOABQAGgAgACYALAB7AAIAIQB6AAIAKwB5AAIAKgB4AAIAJwB3AAIAJQB2AAIAMwADAAgADgAUAH4AAgAlAH0AAgAyAHwAAgAzAAQACgAQABYAHACCAAIAKwCBAAIAJQCAAAIAMgB/AAIAMwACAAYADACEAAIAJQCDAAIAMwABAAQAhQACAC8ABwAQABYAHAAiACgALgA0AIwAAgAhAIsAAgAqAIoAAgArAIkAAgAnAIgAAgAlAIcAAgAoAIYAAgAzAAUADAASABgAHgAkAJYAAgA5AJUAAgApAJQAAgAlAJMAAgAxAJIAAgAzAAEABACXAAIAMwADAAgAEAAYAKgAAwAlACEApwADACUAJQCYAAIAJQAHABAAFgAcACIAKAAuADQAqwACACsAqgACACgAqQACACUAnAACACoAmwACACEAmgACACcAmQACADMAAQAEAJ0AAgApAAEABACeAAIAKQAHABAAGAAeACQAKgAwADYApgADADMAJwClAAIAKwCkAAIAKgCjAAIAKACiAAIAJwChAAIAJQCgAAIAMwABAAQAnwACACkAAQAdAAYACAAKAAsADAANAA4ADwAQABEAEgATABQAFQAXABkAGgAbABwAHQAeACEAIwAkACUAJgApADMAOAAAAAEAAAAKAB4ALAABbGF0bgAIAAQAAAAA//8AAQAAAAFrZXJuAAgAAAABAAAAAQAEAAIAAAABAAgAAQPGAAQAAABEAJIAnADSAOABIgEoATYBPAFKAVABXgFkAW4BfAGKAawBsgHAAcYB1AHiAewB/gIIAhYCSAJiAnAChgKcAqoCvALKAtAC6gL0AvoDAAMKAxADGgMgAyYDLAMyAzgDOAMyAz4DRANOAz4DVANaA2ADIANmA2wDcgN4A34DiAOOA5gDngOkA7IDvAACAC7//AA3//IADQAl/+oAKP/8ACn/9AAq//AAK//6ACz//gAt//4AMf/qADP//AA0//wANf/+ADb/+AA5//QAAwAt//wALv/8ADb//AAQACT//AAl/+wAJv/6ACf//AAp/+wAKv/0ACv/+gAs//gALf/8AC//7gAx//gAMv/0ADT/9gA3/+oAOP/6ADn/5AABADf/+gADADX//AA3/+gAOf/6AAEALv/2AAMAKP/8ACn/6AAy/+QAAQAu//IAAwAo/+4AL//2ADX/5gABACT/8AACABgAAgAoAAQAAwAo//4ALv/wADL/+AADACf/9gAv/+4Ao//sAAgAKf/qACv/9AAu//wAL//uADH/7gAy//IAN//mAJX/9AABADYADgADACAABAAjAAQAM//4AAEAMv/8AAMAJv/+ACr/+AA3//4AAwAo//gALv/0AJn/7AACACMAAgAl/+wABAAk//wAL//8ADT/9AA4//4AAgAt//IAq//iAAMAJf/sACb/+AA3//wADAAk//wAJv/+ACj/+gAp/+AAK//+ACz/9gAt//wAL//qADH/7AAy//IAN//cAKP/4gAGACQAAgAl/9oAK//yAC//4gAx/+gAMv/8AAMAKQB+ADL/7ACeAIgABQAg//wAIv/4ACb//AAu//YANQAEAAUAKf/0ACr/+AAv//QAM//mAKP/3gADACEAHAAkAAIALv/4AAQAJf/0AC3//gAv//wAmf/8AAMAJP/wACf/+AAp/+4AAQAk//oABgAg//QAIf/wACj/9gAu/+wAL//0ADP/9AACACH//gA3//IAAQApAEIAAQAnACgAAgAzADQAqgAoAAEAMwA0AAIAMwAyAKEARgABADL/6gABADMALAABACkANAABAJoAGAABADMAMgABACkAOAABADMAMAACACUAEgAzAC4AAQApAHgAAQApADYAAQAzAC4AAQAzADgAAQAzAEIAAQAzAEwAAQAz//IAAQAnAEgAAgAl/+4Amv/oAAEAKQBiAAIAKQBaAJ4AUAABACkAVgABAKEARAADADMANgCaABIAogBKAAIAJwAsAKEARgACAC3/8gA3/+oAAQBEAAYABwAIAAkACgAMABEAFAAVABgAHQAgACEAIgAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOQA8AD0APgBIAEkASwBMAE0AUABRAFkAWgBcAF4AXwBhAGgAagB+AIEAhACIAI0AkQCYAJoAnQCeAJ8AoAChAKkAqgAAAAAAAQAAAADUGBYRAAAAANfpcqUAAAAA1+lypQ=="})),et.register("h6vGx",(function(t,e){"use strict";var A=t.exports&&t.exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.Vegemite=void 0;var n=et("9AnIb"),i=et("1M5UK"),a=et("bA8E4"),o=et("mewms"),s=et("d5slf");const c=A(r),g=A(et("b1jGN"));var l=et("22zA1");class B extends n.ModuleProduct{constructor(){super(...arguments),this.moduleName="Vegemite"}svgPreview(t){return this.svg(t)}svgPrint(t){return this.svg(t)}svg(t){const e=(0,l.loadFontFromDataUrl)(o.fontTtfDataUrl),A=""!==t?(n=t).charAt(0).toUpperCase()+n.substr(1).toLowerCase():"";var n;const i=e.getPath(A,0,72,72);return this.brandSvg(i,s.backgroundSvg)}brandSvg(t,e){const A=t.toSVG(2),n=t.getBoundingBox(),o=n.x2-n.x1,s=t.toPathData(3),[r,l,B]=(0,i.initSvgFromBackground)(e);if(!r)return"";const d=(0,i.svgElem)("defs");r.appendChild(d),(0,i.addBackground)(r,d,e);const h=.3*l,w=.7*B,E=.15*B,u=.28*l,C=(0,i.svgElem)("g");r.appendChild(C),C.setAttribute("transform",`translate(${E} ${u})`);const Q=(0,i.svgRect)(h,w);Q.setAttribute("opacity","0"),C.appendChild(Q);const p=(0,i.svgElem)("g");C.appendChild(p),p.setAttribute("transform","translate(100 0)");const m=(()=>{const t=(0,i.svgElem)("g"),e=(0,i.svgElem)("defs");t.appendChild(e),e.appendChild((0,i.dropShadow)(0,2,2,"shadow"));const n=(0,i.svgElem)("path");n.setAttribute("d",s),n.setAttribute("stroke","black"),n.setAttribute("stroke-width","3"),e.appendChild(n);const a=(0,i.svgElem)("g");t.appendChild(a),a.setAttribute("filter","url(#shadow)"),a.innerHTML=n.outerHTML;const r=(0,i.svgElem)("g");t.appendChild(r),r.setAttribute("stroke-width","3"),r.setAttribute("stroke","rgb(45,41,38)"),r.setAttribute("fill","rgb(45,41,38)"),r.setAttribute("transform","translate(0.5,0)"),r.innerHTML=A;const c=(0,i.svgElem)("g");t.appendChild(c),c.setAttribute("fill","rgb(255,209,0)"),c.setAttribute("transform","translate(1,-0.1)"),c.innerHTML=A;const l=(0,i.svgElem)("g");t.appendChild(l),l.setAttribute("fill","white"),l.innerHTML=A;return new g.default(t).transform((([t,e])=>[t,e+Math.pow(o/2-t,2)/(6*o)])),t})();p.appendChild(m);const f=(0,c.default)(s);return(0,a.transformTextEnclosure)(p,f,h,w),(0,a.fixCase)(r.outerHTML)}}t.exports.Vegemite=B})),et.register("mewms",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.fontTtfDataUrl=void 0,t.exports.fontTtfDataUrl="data:application/octet-stream;base64,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DOYNZA3mDlQOyg88D54QEBCGEQARchHsEmIS1BOWFAwUghTwFWIV1BaiFxQXkhgEGMYZdBomGtQbfhwYHL4dYB3+HpgfPh/oIJYhPCHmIpQjRiPsJJolSCXuJpQnQifoKJIpRAAmAAn/8QAK//sADP/7AA3/+wAO//sAD//7ABD/+wAR//sAEv/7ABP/+wAU//sAFf/xABb/8QAZ//sAHf/2AB7/+wAf//sAIP/xACH/+wAi//sAI//7ACT/+wAl//EAJv/2ACf/8QAo//sAKf/2ACr/+wAr//sALP/sAC3/7AAu/+IAL//dADD/9gAx/+wAMv/7ADP/+wA0//YAKwAG//EACP/nAAn/4gAK/9MAC//iAAz/9gAN/+IADv/sAA//4gAQ/9gAEf/iABL/1QAT//EAFP/nABX/8QAW/9gAMf/TADL/pgAz//MANP/nADX/8QA2//EAN//7ADj/7gA5//YAOv/7ADv/2AA8//EAPf/2AD7/9gA///EAQP/sAEH/+wBC/+wAQ//xAET/7ABF/+wARv/2AEf/3QBI/90ASf/EAEr/zgBL//YAKwAG//YAB//2AAn/3QAL/+wADP/sAA3/8QAO//YAD//sABD/8QAR/+wAEv/iABP/5wAU/+wAFf/dABb/7AAX/78AMf/YADL/sAAz/+IANP/iADX/8QA2/+cAN//xADj/3QA5/+wAOv/2ADv/4gA8//EAPf/xAD7/8QA///YAQP/YAEH/9gBC/+cAQ//sAET/7ABF/+wARv/xAEf/zgBI/9MASf/OAEr/zgBL/+wAKgAG//YAB//iAAj/4gAK/+IADP/dAA3/ugAO/+IAD//iABD/5wAR/+IAEv/dABP/yQAU/90AFf+mABb/0wAx/5gAMv/YADP/4gA0/9MANf/xADb/7AA3/+wAOP/iADn/7AA6//EAO//dADz/5wA9/+wAPv/sAD//5wBA/9gAQf/sAEL/zgBD/+wARP/YAEX/tQBG/90AR/+hAEj/oQBJ/8QASv+DAEv/7AAqAAb/8QAH/90ACP/YAAn/oQAL/8kADP/iAA3/sAAO/+cAD//YABD/4gAR/90AEv/bABP/4gAU/+IAFf/TABb/5wAg/+QAMf/nADL/3AAz//QANP/rADX/9AA2//IAN//4ADj/8AA5//QAOv/1ADv/7AA8/+oAPf/7AD7/9wA///IAQP/tAEH/+wBC/+IAQ//2AET/4wBF/7YARv/vAEf/pgBK/6MAS//yACYAB//TAAj/8QAK/84ADP/dAA3/9gAO//EAD//dABD/pgAR/8kAEv+6ABP/7AAU/90AFf/OADH/xAAy/5IAM//sADT/3QA1/+cANv/xADf/9gA4/90AO/9WADz/5wA9//EAPv/sAD//5wBA/84AQf/dAEL/0wBD/+cARP/nAEX/5wBG/+cAR//dAEj/2ABJ/7oASv/JAEv/4gAsAAb/+wAH//sACP/xAAn/zgAK/+cAC//dAAz/9gAN/9gADv/tAA//7AAQ/+kAEf/rABL/3QAT/90AFP/hABX/3QAW/90AMf/nADL/vwAz/+cANP/nADX/8QA2//EAN//sADj/5wA5//YAOv/2ADv/4gA8//EAPf/2AD7/+wA///sAQP/2AEH/+wBC/+wAQ//7AET/7ABF/9MARv/7AEf/yQBI/84ASf+wAEr/xABL/+cADgAG//sACf/xAAv/7AAN//sADv/7AA8AAAAR//EAEv/0ABP/9gAU//EAFf/xABb/7AAx//YAQP/2ACkABv/7AAf/9gAI//sACf/iAAr/5wAL/+wADP/vAA3/3QAO//sAD//qABD/8QAR/+wAEv/nABP/8QAU/+cAFf/iABb/7AAx/+cAMv/vADP//AA0/+cANf/7ADb//gA4//EAOf/8ADr//AA7/+kAPP/6AD3//QA+//4AP//7AEL/6gBD//0ARP/2AEX/7ABG//EAR//YAEj/4gBJ/+wASv/LAEv//AAsAAb/+wAH//EACP/2AAn/0wAK/+IAC//JAAz/5wAN/90ADv/iAA//7AAQ/+cAEf/sABL/3QAT/9MAFP/iABX/zgAW/+cAMf/YADL/xAAz/+wANP/dADX/6AA2//EAN//xADj/4wA5//EAOv/2ADv/7AA8/+wAPf/sAD7/9gA//+wAQP/iAEH/8QBC/90AQ//nAET/5wBF/8QARv/mAEf/xABI/8kASf+1AEr/rQBL/+IALAAG//sAB//7AAj/9gAJ/9MACv/2AAv/ugAM/+kADf/dAA7/9gAP/+wAEP/2ABH/8AAS//EAE//2ABT/5wAV/9gAFv/sADH/vwAy/9UAM//eADT/3wA1//EANv/xADf/9gA4/+IAOf/xADr/9gA7/+wAPP/xAD3/9gA+//EAP//2AED/2ABB//EAQv/nAEP/9gBE/+cARf/TAEb/8QBH/9gASP/YAEn/xgBK/78AS//xACsABv/7AAf/9gAI/+wACf/TAAr/5wAL/90ADP/lAA3/zgAO/90AD//dABD/7AAR/+IAEv/iABP/2AAU/+IAFf/JABb/5wAx/90AMv/EADP/6wA0/+EANf/wADb/8AA4/9wAOf/dADr/7AA7/9gAPP/sAD3/5wA+/+wAP//iAED/0wBB/+IAQv/YAEP/4gBE/84ARf/JAEb/4gBH/8kASP/OAEn/vwBK/8kAS//TACwABv/7AAf/3wAI/+cACf+wAAr/4wAL/8kADP/dAA3/xwAO/+cAD//dABD/7AAR/+cAEv/iABP/yQAU/9cAFf+/ABb/4gAa/+kAMf/YADL/uwAz/+EANP/dADb/6wA3//MAOP/lADn/8QA6//IAO//eADz/5wA9/+4APv/zAD//8ABA/+IAQf/2AEL/6gBD//YARP/kAEX/zABG/+8AR/+0AEj/uwBJ/64ASv+vAEv/5QAsAAb/+wAH/90ACP/nAAn/4gAK/9MAC//nAAz/3QAN//YADv/eAA//3QAQ/7AAEf/OABL/sAAT//sAFP/dABX/0wAW/9MAMf/iADL/iAAz//YANP/OADX/9gA2//EAN//xADj/0wA5//YAOv/zADv/gAA8//EAPf/7AD7/+wA///YAQP/OAEH/7gBC/84AQ//2AET/2ABF//sARv/2AEf/5wBI/+cASf/TAEr/4gBL/+wALAAG//sAB//2AAj/8QAJ/9gACv/nAAv/3QAM/+IADf/dAA7/4gAP/+IAEP/nABH/5wAS/9gAE//YABT/3QAV/84AFv/sADH/5wAy/78AM//nADT/2AA1/+cANv/nADf/7AA4/90AOf/sADr/7AA7/+cAPP/sAD3/8QA+/+wAP//xAED/4gBB//EAQv/dAEP/5wBE/+IARf/YAEb/5wBH/78ASP/HAEn/sABK/7UAS//dACsABv/xAAf/8QAI/+IACf/dAAr/0wAL/+IADP/iAA3/3QAO/+cAD//dABD/zgAR/9MAEv/EABP/0wAU/84AFv/dADH/4gAy/6EAM//jADT/3QA1/+wANv/sADf/5wA4/90AOf/nADr/8QA7/78APP/xAD3/9gA+/+wAP//nAED/3QBB/+cAQv/nAEP/5wBE/+IARf/OAEb/3QBH/8QASP/JAEn/lwBK/7oAS//YACkABv/sAAf/0wAI/90ACf/OAAr/3QAM/90ADf/EAA7/5wAP/9gAEP/YABH/3QAS/9MAE//YABT/4gAV/90AMf/sADL/wAAz/+8ANP/kADX/6wA2//AAN//2ADj/5AA5//EAOv/uADv/1gA8//QAPf/2AD7/8QA///AAQP/dAEH/7ABD/+gARP/YAEX/1QBG/+wAR/+3AEj/wwBJ/7UASv+wAEv/5gAeAAf/zgAi/+4AI//5ACT/7wAy/9AAM//pADT/sQA1/+sANv/nADf/5gA4/7oAOf/vADr/9wA7/9AAPP/sAD3/6wA+/+YAP//sAED/uwBB/+kAQv+7AEP/5ABE/9QARf+6AEb/0ABH/34ASP+SAEn/zQBK/5sAS//nABwAF//RACT//wAy/9EAM//uADT/5wA1/+8ANv/3ADf/7gA4/+gAOf/3ADr/+wA7/9oAPP/vAD3/9wA+/+4AP//vAED/4QBB//cAQv/nAEP/7wBE/+4ARf/QAEb/9wBH/8EASP/MAEn/wwBK/7sAS//nABwAF//QABv/+QAy/8EAM//zADT/6wA1//sANv/zADf/+wA4/+8AOf/zADr//gA7/+EAPP/vAD3/9wA+//kAP//3AED/4gBB//kAQv/jAEP/8wBE/+YARf/VAEb/+QBH/84ASP/JAEn/twBK/8EAS//rAB8ABv/7ABL/3wAX/8kAJf/5ACv/7wAy/7oAM//zADT/6wA1/+8ANv/uADf/8wA4/+oAOf/vADr/7wA7/9QAPP/5AD3//gA+//EAP//vAED/4wBB//MAQv/mAEP/7gBE/+cARf/XAEb/6wBH/8kASP/JAEn/twBK/7cAS//nACAABv/7ACQAAgAl/+8AJ//5AC3//gAv//4AMv/oADP//QA0/+sANf/7ADb/+gA3//sAOP/jADn/9wA6//oAO//kADz//wA9//0APv/+AD8AAABA/+gAQf/7AEL/6ABD//sARP/sAEX/8QBG//sAR//qAEj/6wBJ/+cASv/qAEv/+QAbAAb/+wAl/+8AMv+5ADP/+wA0/+8ANf/7ADb/+wA3//0AOP/vADn/+wA6AAAAO/+7ADz//gA9//4APv/7AED/7ABB//4AQv/nAEP/+QBE//kARf/7AEb/+QBH//MASP/rAEn/4gBK/+8AS//7AB0ABv/2ABf/zgAl/+8AMv+3ADP/9wA0/+sANf/3ADb/8QA3//kAOP/uADn/8wA6//sAO//YADz/8wA9/+4APv/3AD//8wBA/+MAQf/3AEL/6QBD/+8ARP/nAEX/1ABG/+8AR//JAEj/zABJ/6YASv/JAEv/3AAcAAb/+wAX//MAJf/7ADL/6wAz//4ANP/uADX/+wA2//4AN//+ADj/8wA5//0AOv/+ADv/7gA8//4APf/+AD7/+wA///4AQP/uAEL/9wBD//4ARP/+AEX/+QBG//4AR//uAEj/9wBJ/+4ASv/zAEv//gAYAAb/+wAx//YAMv/rADP//wA0//MANf//ADYAAQA3//8AOP/zADv/6AA8//4APf/+AD4AAQBA/+4AQf//AEL/8wBD//4ARP/4AEX//QBH/+wASP/3AEn/7ABK//EASwABABwABv/2ABf/4QAy/8oAM//9ADT/+QA1//4ANv/7ADf//gA4//MAOf/+ADr//wA7/+EAPP/7AD3//gA+//4AP//+AED/7wBB//4AQv/zAEP//gBE//sARf/7AEb//gBH/+8ASP/5AEn/2gBK//oAS//+AB0ABv/nABf/5wAx/7AAMv/hADP/7gA0/7QANf/rADb/5wA3/+4AOP+sADn/6wA6//kAO/+3ADz/6gA9/+8APv/nAD//5wBA/6wAQf/uAEL/rgBD/+cARP+8AEX/3ABG/9oAR//cAEj/0QBJ/9oASv/RAEv/7wAeAAb/9gAX//cAI//9ADH/vwAy/+4AM//5ADT/2gA1//4ANv/3ADf/+wA4/9oAOf/3ADr/+wA7/+cAPP/7AD3/+QA+//cAP//5AED/1ABB//sAQv/cAEP/9wBE/+8ARf/JAEb/6wBH/8QASP++AEn/5wBK/8EAS//+ABwAF//7ADH/7AAy/+QAM//+ADT/7gA1//4ANgAAADf//QA4//cAOf/7ADr//gA7/+4APP/+AD3//gA+//0AP//7AED/7wBB//4AQv/uAEP//gBE//cARf/7AEb/+QBH/+gASP/vAEn/6wBK/+gAS//+AB4ABv/7ABf/8wAa//4AHf/3ACX/9wAq//4AMf/2ADL/5AAz//0ANP/zADX/+wA2//4AN//+ADj/+QA7/+4APf/+AD7/+wA///4AQP/2AEH/+gBC/+4AQ//7AET/+QBF//sARv/+AEf/8wBI/+8ASf/zAEr/6wBL//4AHQAG//EAJP/3ADH/7AAy/7sAM//sADT/4wA1/+8ANv/vADf/9wA4/+QAOf/qADr/9wA7/98APP/vAD3/9wA+/+sAP//uAED/4wBB/+4AQv/mAEP/7wBE/+IARf/VAEb/7gBH/8MASP/GAEn/uwBK/7oAS//fABwABv/sACT//gAy/54AM//rADT/6gA1//EANv/rADf/9wA4/+MAOf/oADr/9wA7/64APP/sAD3/8QA+/+wAP//sAED/4QBB//MAQv/oAEP/5ABE/9gARf/kAEb/7gBH/9EASP/QAEn/uwBK/8QAS//zADAAF//3ABj//wAZ/+kAGv//ABv//QAc//4AHf/pAB7/+wAf//8AIP/iACH//gAi//8AI//+ACT//wAl/+IAJ//uACj//gAp/+cAKv/hACv/+QAs/8MALf/QAC7/5AAv/8wAMP//ADL/4QAz//4ANP/jADX/9wA3//kAOP/fADn/9wA7/+IAPP/5AD3/+gA+//EAP//6AED/2gBB/+8AQv/aAET/7wBF/9cARv/qAEf/xgBI/7sASf/qAEr/tABL//sAHQAG/+cAF//oACT/+gAy/+IAM//xADT/zAA1/+8ANv/sADf/+gA4/8wAOf/3ADr/8wA7/8kAPP/uAD3/7wA+/+wAP//rAED/yQBB//cAQv/MAEP/+ABE/9QARf/KAEb/2gBH/8EASP/EAEn/4gBK/7cAS//vAB0ABv/xABv/+QAl/+4AMv+8ADP/7wA0/9wANf/zADb/6AA3//cAOP/hADn/5gA6//MAO//aADz/6QA9//MAPv/pAD//6wBA/+MAQf/3AEL/2gBD/+kARP/rAEX/1ABG/+kAR//JAEj/zABJ/7QASv+7AEv/5wAbAAb/9gAy/6YAM//9ADT/0wA1//oANv/+ADf//QA4/9UAOf/3ADr//wA7/7kAPP/6AD3//gA+//sAP//7AED/0ABB//oAQv/XAEP/+QBE/+IARf/zAEb/9wBH/+8ASP/vAEn/6gBK/+cAS//6ABwABv/7ACQAAgAy/9UAM//7ADT/7wA1//cANv/9ADf//wA4/+4AOf/7ADr//wA7/+sAPP/+AD3//gA+//0AP//6AED/7gBB//sAQv/sAEP/+wBE/+8ARf/7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ABX/3QAx//YAMv+5ADP/+AA0/+MANf/3ADb/+AA3//kAOP/iADn/+gA6//0AO//OADz//QA9//4APv/5AD///ABA/+YAQv/jAEP/9wBE/+YARf/vAEb//gBH/+cASP/vAEn/0QBK/+YAS//9ACgAB//2AAj/4gAJ/90ACv/sAAv/4gAM/+gADf/iAA7/9QAP/+gAEP/dABH/4AAS/+YAE//OABT/4gAV/90AJP/7ADH/9gAy/8EAM//vADT/3wA2//QAN//4ADj/4wA5/+kAOv/6ADv/0QA8/+YAPf/zAD7/6QA///EAQP/qAEL/3ABD/+gARP/fAEb/+ABH/7sASP+7AEn/rwBK/68AS//jACcACP/xAAn/7AAK//gADP/2AA7/9wAP//YAEP/xABH/5wAS/+cAE//xABT/7AAV/+UAMf/2ADL/6AAz//kANP/qADX/+wA2//oAN//7ADj/6wA5//cAOv//ADv/4wA8//sAPf/+AD7/+wA///oAQP/sAEH/+gBC/+MAQ//5AET/7wBF/+oARv/7AEf/4wBI/+wASf/jAEr/6gBL//4AJgAH//sACP/7AAn/5wAK//oADP/2AA7/9gAP//YAEP/xABH/8QAS//IAE//xABT/5wAV//EAMv/nADP/+wA0//EANf/9ADb//gA3//4AOP/uADn/+wA6//4AO//oAD0AAAA+//sAP//+AED/7wBB//4AQv/qAEP//wBE//EARf/3AEb/+wBH/+YASP/3AEn/2gBK/+QAS//7ACkAB//2AAj/9gAJ/90ACv/yAAz/8QAO//EAD//wABD/6gAR/+wAEv/mABP/9AAU/+wAFf/rABf/zgAx//YAMv/OADP/7wA0/+oANf/5ADb//gA3//0AOP/oADn/+QA6//0AO//YADz//gA9//8APv/6AD//+QBA/+4AQf/5AEL/4wBD//gARP/qAEX/+QBG//oAR//pAEj/6QBJ/9UASv/rAEv/+gAqAAf/sgAI/8kACf+wAAr/ugAL/7UADP+1AA3/3QAO/+QAD/+6ABD/sgAR/7UAEv+xABP/4gAU/6sAFf+mADH/lwAy/9oAM//jADT/qwA1/+IANv/iADf/4wA4/5oAOf/XADr/7gA7/7QAPP/kAD3/6wA+/+4AP//mAED/rQBB/+8AQv+qAEP/6gBE/74ARf/XAEb/2gBH/9AASP/SAEn/1QBK/80AS//qACsAB//nAAj/8QAJ/6YACv/sAAv/nAAM/90ADf+6AA7/9gAP/+IAEP/sABH/3QAS/9oAE//sABT/3QAV/8QAJP/+ADH/pgAy/+sAM//vADT/ygA1//0ANv/zADf/+wA4/9MAOf/vADr/+wA7/9gAPP/3AD3/9wA+//EAP//7AED/1QBB//cAQv/PAEP/8wBE/+YARf+7AEb/5wBH/7UASP/JAEn/2gBK/6UAS//zACkAB//2AAn/7AAK//kAC//sAAz/9gAO//oAD//2ABD/7AAR/+cAEv/vABP/9gAU//EAFf/sABcAAQAx/+YAMv/pADP/+QA0/+oANf/zADb/+wA3//oAOP/nADn/9wA6//4AO//uADz/+QA9//oAPv/7AD//+QBA/+8AQf/3AEL/6QBD//oARP/sAEX/8wBG//gAR//pAEj/6QBJ/+MASv/nAEv//QAqAAf/9gAI//sACf/sAAr/9wAL/+wADP/7AA7/+gAP//EAEP/2ABH/7AAS//EAE//2ABT/9gAV/+QAFwABADH/8QAy/+kAM//3ADT/6QA1//kANv/5ADf/+QA4/+8AOf/6ADr//gA7/+8APP/7AD3/+gA+//oAP//4AED/7wBB//sAQv/rAEP//QBE/+8ARf/3AEb/+gBH/+4ASP/rAEn/4QBK/+wAS//5ACsAB//xAAj/4gAJ/9gACv/sAAv/2AAM//YADf/iAA7/8QAP/90AEP/iABH/0wAS/+IAE//JABT/4gAV/94AJP/7ADH/3QAy/7QAM//pADT/4QA1/+wANv/vADf/6gA4/+IAOf/qADr/+gA7/9oAPP/pAD3/6wA+/+wAP//pAED/4QBB/+sAQv/cAEP/6wBE/+IARf/JAEb/7gBH/7wASP/BAEn/pgBK/7UAS//kACwAB//iAAj/5wAJ/+IACv/OAAv/2AAM/+cADf/nAA7/8AAP/90AEP+6ABH/xAAS/9cAE//XABT/2AAV/9gAG//3ACT/+wAx/+IAMv+gADP/6QA0/+MANf/mADb/7wA3/+sAOP/aADn/6AA6//YAO/+xADz/6wA9/+4APv/oAD//7wBA/9oAQf/oAEL/1wBD/+MARP/aAEX/2ABG/+cAR//PAEj/yQBJ/7kASv/BAEv/6AApAAf/8QAI/+wACf/OAAr/6gAL/84ADP/nAA3/2AAO//YAD//fABD/4gAR/9gAEv/lABP/5wAU/+IAFf/YADH/4gAy/+cAM//3ADT/2gA1//gANv/5ADf/+wA4/9wAOf/3ADr//gA7/+MAPP/3AD3//QA+//cAP//3AED/1QBC/9UAQ//9AET/6QBF/+EARv/pAEf/ugBI/8QASf/aAEr/wgBL//sAKwAH/8kACP/YAAn/xAAK/9MAC/+/AAz/yQAN/9gADv/nAA//xAAQ/7oAEf+1ABL/wQAT/9gAFP+6ABX/vwAk//sAMf+/ADL/2gAz/+gANP/KADX/6QA2/+kAN//oADj/xgA5/+QAOv/nADv/uQA8/+wAPf/uAD7/6QA//+cAQP/GAEH/7ABC/8kAQ//mAET/2ABF/84ARv/VAEf/wQBI/7wASf/GAEr/tABL/+8AKwAH//EACP/2AAn/yQAK/+oAC//TAAz/3QAN/+cADv/sAA//4gAQ/+IAEf/YABL/3wAT/90AFP/dABX/2AAk//sAMf/nADL/xgAz//MANP/iADX/7wA2/+4AN//3ADj/4wA5/+kAOv/vADv/1wA8/+4APf/zAD7/6gA//+0AQP/kAEH/9wBC/98AQ//qAET/5wBF/9AARv/vAEf/yQBI/9AASf/PAEr/xABL/+8AKQAH/+cACP/sAAn/5wAK/+kAC//dAAz/2AAO/+wAD//XABD/qwAR/8kAEv/AABP/9gAU/9MAFf/OADH/2AAy/7AAM//5ADT/2gA1//0ANv/6ADf//gA4/98AOf/3ADr//QA7/8YAPP/7AD3//gA+//gAP//4AED/1QBB//0AQv/VAEP/+ABE/+MARf/zAEb/+QBH/+4ASP/zAEn/4gBK/+cAS//zACkACP/2AAn/5wAK//QAC//sAAz/+wAN//4ADv/2AA//5QAQ/+wAEf/nABL/8wAT//EAFP/nABX/3QAx/+QAMv/KADP/+QA0/+wANf/6ADb/+gA3//sAOP/vADn/+gA6AAAAO//hADz//wA9//0APv/5AD///gBA/+wAQf/7AEL/7ABD//sARP/vAEX/9wBG//sAR//zAEj/6gBJ/+EASv/jAEv/+wArAAf/zgAI/84ACf/YAAr/ygAL/9gADP/JAA3/+wAO/9kAD//JABD/ogAR/7oAEv+5ABP/5wAU/8QAFf+9ACT/+wAx/7oAMv+FADP/+wA0/7sANf/qADb/6wA3/+wAOP++ADn/5gA6/+8AO/+iADz/6AA9/+oAPv/sAD//7wBA/8MAQf/mAEL/uwBD/+YARP/KAEX/6QBG/+8AR//jAEj/3wBJ/9MASv/hAEv/6wApAAf/zgAI/84ACf/TAAv/2AAM/84ADv/eAA//xAAQ/7AAEf/TABL/sQAT/+wAFP/FABX/yQAk//sAMf/JADL/lQAz//MANP/BADX/+QA2//MAN//3ADj/xgA5//sAOv/3ADv/pQA8/+8APf/+AD7/7gA//+oAQP/DAEH/7gBC/8QAQ//vAET/0ABF/+4ARv/uAEf/6QBI/+QASf/aAEr/5gBL//cAKgAH/8QACP/OAAn/pgAL/7oADP+rAA3/3QAO/+cAD/+5ABD/twAR/8QAEv+zABP/0wAU/7AAFf+cACT/+wAx/6EAMv/aADP/4wA0/7cANf/4ADb/4wA3//0AOP+3ADn/7gA6/+8AO/+7ADz/7gA9//EAPv/jAD//6ABA/7oAQf/zAEL/uQBD/+sARP/OAEX/3wBG/+EAR//aAEj/2ABJ/9gASv/MAEv/7gAsAAf/yQAI/84ACf/JAAr/wgAL/8kADP/JAA3//gAO/8kAD/+6ABD/jQAR/7oAEv+gABP/4gAU/7UAFf+6AB7/8QAk//sAMf+1ADL/lwAz/+8ANP+7ADX/5gA2/+4AN//uADj/uQA5/+gAOv/3ADv/hAA8/+8APf/sAD7/7AA//+oAQP+6AEH/7ABC/7kAQ//pAET/ygBF/+8ARv/vAEf/6ABI/+kASf/fAEr/5ABL//EAJgAH//YACf/iAAr/7AAL/+cADP/iAA3//wAO//UAD//nABD/7AAR/+IAEv/gABP/7AAU/90AFf/TADH/4gAy/+sAM//+ADT/6AA1//4ANgAEADf//wA4/9wAOf/6ADv/5gA8//8APf//AD///QBA/+MAQf//AEMAAABE/+8ARf/4AEb/+wBH//cASP/rAEn/6QBK/+kAS//9AAIAAQAGAEsAAAAAAAAAAQAAAADUGBYRAAAAANmXsTQAAAAA2ZexNA=="})),et.register("d5slf",(function(t,e){"use strict";Object.defineProperty(t.exports,"__esModule",{value:!0}),t.exports.backgroundSvg=void 0,t.exports.backgroundSvg='<?xml version="1.0" encoding="utf-8"?>\n<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\n\t viewBox="0 0 214.8 127.8" style="enable-background:new 0 0 214.8 127.8;" xml:space="preserve">\n<style type="text/css">\n\t.st0{fill:#E1251B;stroke:#E1251B;stroke-width:12;}\n</style>\n<g>\n\t<path class="st0" d="M107.4,121.8c-4.7,0-9.3-0.9-13.7-2.6L19.2,82C11.2,78.4,6,70.4,6,61.6s5.2-16.8,13.2-20.4l72-31.5\n\t\tc5-2.4,10.5-3.7,16.2-3.7s11.2,1.3,16.3,3.8l71.9,31.4c8,3.6,13.2,11.6,13.2,20.4s-5.2,16.8-13.2,20.4l-74.5,37.1\n\t\tC116.7,120.9,112.1,121.8,107.4,121.8"/>\n</g>\n</svg>\n'})),Z(module.exports,"Client",(()=>Vn)),Z(module.exports,"CommandContext",(()=>At.CommandContext)),Z(module.exports,"spiffCoreConfiguration",(()=>kt)),Z(module.exports,"PromiseQueue",(()=>OA)),Z(module.exports,"QueueablePromise",(()=>GA)),Z(module.exports,"MockWorkflowManager",(()=>Wn)),Z(module.exports,"InformationMessageType",(()=>un)),Z(module.exports,"assetService",(()=>ve)),Z(module.exports,"optionService",(()=>Gt)),Z(module.exports,"server",(()=>zt)),Z(module.exports,"persistenceService",(()=>Ne)),Z(module.exports,"graphQlManager",(()=>Kt)),Z(module.exports,"toast",(()=>ln)),Z(module.exports,"FrameService",(()=>TA)),Z(module.exports,"frameStepService",(()=>ZA)),Z(module.exports,"modelStepService",(()=>$A)),Z(module.exports,"materialStepService",(()=>_A)),Z(module.exports,"patchworkStepService",(()=>an)),Z(module.exports,"shapeStepService",(()=>sn)),Z(module.exports,"questionStepService",(()=>yA)),Z(module.exports,"digitalContentStepService",(()=>qA)),Z(module.exports,"moduleStepService",(()=>tn)),Z(module.exports,"pictureStepService",(()=>on)),Z(module.exports,"textStepService",(()=>wn)),Z(module.exports,"illustrationStepService",(()=>mA)),Z(module.exports,"svgObjectURL",(()=>pA)),Z(module.exports,"generate",(()=>ue)),Z(module.exports,"CreateElementCommand",(()=>at.CreateElementCommand)),Z(module.exports,"TextChangeCommand",(()=>at.TextChangeCommand)),Z(module.exports,"FontAlignmentCommand",(()=>at.FontAlignmentCommand)),Z(module.exports,"FontColorCommand",(()=>at.FontColorCommand)),Z(module.exports,"LayoutElementFactory",(()=>yt.LayoutElementFactory)),Z(module.exports,"minZoom",(()=>Ce)),Z(module.exports,"AdvancedEditor",(()=>Me)),Z(module.exports,"EditorCore",(()=>ye)),Z(module.exports,"useLayouts",(()=>Wt)),Z(module.exports,"useEditorState",(()=>ne)),Z(module.exports,"useEditorInteraction",(()=>Qe)),Z(module.exports,"commandReducer",(()=>$t)),Z(module.exports,"getDefaultState",(()=>_t)),Z(module.exports,"CommandContextContext",(()=>Vt)),Z(module.exports,"AdvancedEditorStateProvider",(()=>ee)),Z(module.exports,"AdvancedEditorContext",(()=>te)),Z(module.exports,"UICommand",(()=>Ae)),Z(module.exports,"EditorSubMenu",(()=>qt)),Z(module.exports,"ElementEventType",(()=>re)),Z(module.exports,"KeyEvent",(()=>ge)),Z(module.exports,"gatherVaryingStepAspects",(()=>vA)),Z(module.exports,"SpiffCommerce3DPreviewService",(()=>Oe.SpiffCommerce3DPreviewService)),Z(module.exports,"ProductCameraRig",(()=>Ue));var At={},nt=At&&At.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(At,"__esModule",{value:!0}),At.getSvgString=At.CommandContext=void 0;const it=nt(et("kxTKR"));var at={},ot=at&&at.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(at,"__esModule",{value:!0}),at.SendBackwardsCommand=at.BringForwardCommand=at.ShiftPatchworkCommand=at.IllustrationCacheCommand=at.IllustrationColorCommand=at.TextChangeCommand=at.UpdateFramePattern=at.FontAlignmentCommand=at.FontSourceCommand=at.FontAlgorithmCommand=at.FontSizeCommand=at.FontColorCommand=at.CloneElementCommand=at.DeleteElementCommand=at.CreateElementCommand=at.ClearLayoutCommand=at.CreateLayoutCommand=at.GroupCommand=at.ResizeCommand=at.RotateCommand=at.MoveCommand=at.UpdateWorkflowStateCommand=at.CanvasCommand=void 0;const st=ot(g);var rt=et("2RTUs"),ct={},gt=ct&&ct.__awaiter||function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))};Object.defineProperty(ct,"__esModule",{value:!0}),ct.rehydrateSerializedLayout=ct.updatedLayoutForElement=ct.findLayoutForElement=ct.findElement=ct.ElementNotFoundError=void 0;var lt=et("98viV"),Bt=(rt=et("2RTUs"),et("daQXa"));class dt extends Error{constructor(t){super("No element found with ID: "+t),Object.setPrototypeOf(this,dt.prototype)}}ct.ElementNotFoundError=dt;ct.findElement=(t,e)=>ht(t,e).elements.find((e=>e.id===t));const ht=(t,e)=>{const A=Object.values(e).find((e=>e.elements.some((e=>e.id===t))));if(!A)throw new dt(t);return A};ct.findLayoutForElement=ht;ct.updatedLayoutForElement=(t,e)=>{const A=[...e.elements.filter((e=>e.id!==t.id)),t].sort(((t,e)=>(t.layerIndex||0)-(e.layerIndex||0)));return{layout:e.layout,elements:A,modificationID:(0,rt.generate)()}};ct.rehydrateSerializedLayout=(t,e)=>gt(void 0,void 0,void 0,(function*(){const A=[...Object.keys(t.layouts),...Object.keys((null==e?void 0:e.layouts)||{})],n=[...new Set(A)];for(let A=0;A<n.length;A++){const i=n[A],a=t.layouts[i],o=null==e?void 0:e.layouts[i],s=(a||o).elements.filter((t=>"illustration"===t.type));for(let t=0;t<s.length;++t){const e=s[t];if(e.src&&!e.svg){const t=yield(0,lt.fetchAsString)(e.src),A=yield(0,Bt.generateSVGWithUnknownColors)(t);e.svg=(0,Bt.modifySVGWithElementProperties)(A.svg,e.width,e.height,e.colors)}}}}));var wt=et("gxilN"),Et=et("9SSHp");class ut{undo(){if(!this.oldState)throw new Error("Cannot undo.");return this.oldState}overrideOldState(t){this.oldState=t}}at.CanvasCommand=ut;at.UpdateWorkflowStateCommand=class extends ut{constructor(t){super(),this.serializableWorkflow=t}apply(t){return this.oldState=t,Object.assign(Object.assign({},t),{serializableWorkflow:this.serializableWorkflow})}};at.MoveCommand=class extends ut{constructor(t,e,A){super(),this.id=t,this.x=e,this.y=A}apply(t){this.oldState=t;const e=(0,ct.findElement)(this.id,Object.values(t.layouts));if(!e.id)throw new ct.ElementNotFoundError(this.id);const A=Object.assign(Object.assign({},e),{x:this.x,y:this.y}),n=(0,ct.findLayoutForElement)(e.id,Object.values(t.layouts)),i=(0,ct.updatedLayoutForElement)(A,n);return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[n.layout.id]:i})})}};at.RotateCommand=class extends ut{constructor(t,e){super(),this.id=t,this.angle=e}apply(t){this.oldState=t;const e=(0,ct.findElement)(this.id,Object.values(t.layouts));if(!e.id)throw new ct.ElementNotFoundError(this.id);const A=Object.assign(Object.assign({},e),{rotation:this.angle}),n=(0,ct.findLayoutForElement)(e.id,Object.values(t.layouts)),i=(0,ct.updatedLayoutForElement)(A,n);return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[n.layout.id]:i})})}};at.ResizeCommand=class extends ut{constructor(t,e,A){super(),this.id=t,this.width=Math.abs(e),this.height=Math.abs(A)}apply(t){this.oldState=t;const e=(0,ct.findElement)(this.id,Object.values(t.layouts));if(!e.id)throw new ct.ElementNotFoundError(this.id);const A=Object.assign(Object.assign({},e),{width:this.width,height:this.height});if("frame"===e.type){const t=A;t.scaleX=t.scaleX*this.width/e.width,t.scaleY=t.scaleY*this.height/e.height}const n=(0,ct.findLayoutForElement)(e.id,Object.values(t.layouts)),i=(0,ct.updatedLayoutForElement)(A,n);return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[n.layout.id]:i})})}};at.GroupCommand=class extends ut{constructor(t){super(),this.commands=t}apply(t){return this.oldState=t,this.commands.reduce(((t,e)=>e.apply(t)),t)}};at.CreateLayoutCommand=class extends ut{constructor(t){super(),this.layout=t}apply(t){return this.oldState=t,Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[this.layout.id]:{elements:[],layout:Object.assign({},this.layout),modificationID:(0,rt.generate)()}})})}};at.ClearLayoutCommand=class extends ut{constructor(t){super(),this.panelName=t}apply(t){this.oldState=t;const e=Object.values(t.layouts).map((t=>{const e=t.layout.panelId===this.panelName;return Object.assign(Object.assign({},t),{elements:e?[]:[...t.elements],modificationID:(0,rt.generate)()})})),A={};return e.forEach((t=>{A[t.layout.id]=t})),Object.assign(Object.assign({},t),{layouts:A})}};class Ct extends ut{constructor(t,e){super(),this.element=t,this.layout=e}apply(t){this.oldState=t,t.layouts[this.layout.id]||(t.layouts[this.layout.id]={layout:this.layout,elements:[],modificationID:""});const e=t.layouts[this.layout.id].elements;if(e.find((t=>t.id===this.element.id)))throw new Error(`Failed to apply new ${this.element.type} element because ID ${this.element.id} already taken`);if(this.element.productOverlay||0===e.length){const A=[...e,this.element];return void 0===this.element.layerIndex&&(this.element.layerIndex=this.assignIndex(A)),Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[this.layout.id]:Object.assign(Object.assign({},t.layouts[this.layout.id]),{elements:A,modificationID:(0,rt.generate)()})})})}const A=e[e.length-1],n=A.productOverlay?A:null;let i;if(n&&e.pop(),null!==this.element.layerIndex&&void 0!==this.element.layerIndex)i=[...e,this.element].sort(((t,e)=>void 0!==t.layerIndex&&void 0!==e.layerIndex?t.layerIndex-e.layerIndex:0));else{const t=this.assignIndex(e);this.element.layerIndex=void 0!==t?t:0,i=[...e,this.element]}return n&&i.push(n),Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[this.layout.id]:Object.assign(Object.assign({},t.layouts[this.layout.id]),{elements:i,modificationID:(0,rt.generate)()})})})}assignIndex(t){var e;if(0===t.length)return;const A=null===(e=t[t.length-1])||void 0===e?void 0:e.layerIndex;return void 0!==A?A+1:this.assignIndex(t.slice(0,t.length-1))}}at.CreateElementCommand=Ct;at.DeleteElementCommand=class extends ut{constructor(t){super(),this.id=t}apply(t){this.oldState=t;let e=!1;const A=Object.values(t.layouts).map((t=>(t.elements.filter((t=>t.id!==this.id)).length!==t.elements.length&&(e=!0),Object.assign(Object.assign({},t),{elements:t.elements.filter((t=>{const e=t.cachedObjectURL;return t.id===this.id&&e&&URL.revokeObjectURL(e),t.id!==this.id})),modificationID:(0,rt.generate)()}))));e||console.log(`Failed to delete element ${this.id}`);const n={};return A.forEach((t=>{n[t.layout.id]=t})),Object.assign(Object.assign({},t),{layouts:n})}};at.CloneElementCommand=class extends ut{constructor(t,e){super(),this.el=(0,st.default)(t),this.layout=e,this.el.id=(0,rt.generate)(),this.el.x+=5,this.el.y+=5}apply(t){return this.oldState=t,new Ct(this.el,this.layout).apply(t)}};at.FontColorCommand=class extends ut{constructor(t,e){super(),this.id=t,this.color=e}apply(t){this.oldState=t;const e=(0,ct.findElement)(this.id,Object.values(t.layouts));if(!e.id)throw new ct.ElementNotFoundError(this.id);const A=Object.assign(Object.assign({},e),{fill:this.color}),n=(0,ct.findLayoutForElement)(e.id,Object.values(t.layouts)),i=(0,ct.updatedLayoutForElement)(A,n);return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[n.layout.id]:i})})}};at.FontSizeCommand=class extends ut{constructor(t,e){super(),this.id=t,this.size=e}apply(t){this.oldState=t;const e=(0,ct.findElement)(this.id,Object.values(t.layouts));if(!e.id)throw new ct.ElementNotFoundError(this.id);const A=Object.assign(Object.assign({},e),{fontSize:this.size}),n=(0,ct.findLayoutForElement)(e.id,Object.values(t.layouts)),i=A.algorithm&&A.algorithm!==wt.TextAlgorithm.Autosize?A.input||"":A.text||"",a=(0,ct.updatedLayoutForElement)((0,Et.recomputeTextOnElement)(A,i),n);return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[n.layout.id]:a})})}};at.FontAlgorithmCommand=class extends ut{constructor(t,e){super(),this.id=t,this.algorithm=e}apply(t){this.oldState=t;const e=(0,ct.findElement)(this.id,Object.values(t.layouts));if(!e.id)throw new ct.ElementNotFoundError(this.id);const A=Object.assign(Object.assign({},e),{algorithm:this.algorithm}),n=(0,ct.findLayoutForElement)(e.id,Object.values(t.layouts)),i=(0,ct.updatedLayoutForElement)(A,n);return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[n.layout.id]:i})})}};at.FontSourceCommand=class extends ut{constructor(t,e){super(),this.id=t,this.fontData=e}apply(t){this.oldState=t;const e=(0,ct.findElement)(this.id,Object.values(t.layouts));if(!e.id)throw new ct.ElementNotFoundError(this.id);const A=Object.assign(Object.assign({},e),{fontData:this.fontData}),n=(0,ct.findLayoutForElement)(e.id,Object.values(t.layouts)),i=(0,ct.updatedLayoutForElement)((0,Et.recomputeTextOnElement)(A,A.text||""),n);return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[n.layout.id]:i})})}};at.FontAlignmentCommand=class extends ut{constructor(t,e){super(),this.id=t,this.align=e}apply(t){this.oldState=t;const e=(0,ct.findElement)(this.id,Object.values(t.layouts));if(!e.id)throw new ct.ElementNotFoundError(this.id);const A=Object.assign(Object.assign({},e),{align:this.align}),n=(0,ct.findLayoutForElement)(e.id,Object.values(t.layouts)),i=(0,ct.updatedLayoutForElement)(A,n);return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[n.layout.id]:i})})}};at.UpdateFramePattern=class extends ut{constructor(t,e,A){super(),this.id=t,this.imageData=e,this.offsets=A}apply(t){this.oldState=t;const e=(0,ct.findLayoutForElement)(this.id,Object.values(t.layouts)),A=e.elements.findIndex((t=>t.id===this.id)),n=e.elements[A].pattern,i=[...e.elements];i.splice(A,1,Object.assign(Object.assign({},e.elements[A]),{pattern:Object.assign(Object.assign({},n),{src:this.imageData.src,x:this.offsets.x,y:this.offsets.y,width:this.imageData.width,height:this.imageData.height,scaleX:this.offsets.zoom,scaleY:this.offsets.zoom})}));const a=Object.assign(Object.assign({},e),{elements:i,modificationID:(0,rt.generate)()});return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[e.layout.id]:a})})}};at.TextChangeCommand=class extends ut{constructor(t,e){super(),this.id=t,this.text=e}apply(t){this.oldState=t;const e=(0,ct.findElement)(this.id,Object.values(t.layouts));if(!e.id)throw new ct.ElementNotFoundError(this.id);const A=(0,ct.findLayoutForElement)(e.id,Object.values(t.layouts)),n=(0,ct.updatedLayoutForElement)((0,Et.recomputeTextOnElement)(e,this.text),A);return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[A.layout.id]:n})})}};at.IllustrationColorCommand=class extends ut{constructor(t,e,A){super(),this.id=t,this.className=e,this.fill=A}apply(t){this.oldState=t;const e=(0,ct.findElement)(this.id,Object.values(t.layouts));if(!e.id)throw new ct.ElementNotFoundError(this.id);const A=e.colors||{},n=A[this.className];A[this.className]={browserValue:this.fill,spotColor:null==n?void 0:n.spotColor};const i=Object.assign(Object.assign({},e),{colors:A}),a=(0,ct.findLayoutForElement)(e.id,Object.values(t.layouts)),o=(0,ct.updatedLayoutForElement)(i,a);return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[a.layout.id]:o})})}};at.IllustrationCacheCommand=class extends ut{constructor(t,e,A){super(),this.id=t,this.svgBody=e,this.objectURL=A}apply(t){this.oldState=t;const e=(0,ct.findElement)(this.id,Object.values(t.layouts));if(!e.id)throw new ct.ElementNotFoundError(this.id);const A=Object.assign(Object.assign({},e),{svg:this.svgBody,cachedObjectURL:this.objectURL}),n=(0,ct.findLayoutForElement)(e.id,Object.values(t.layouts)),i=(0,ct.updatedLayoutForElement)(A,n);return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[n.layout.id]:i})})}};at.ShiftPatchworkCommand=class extends ut{constructor(t,e,A,n){super(),this.id=t,this.scale=e,this.leftOffset=A,this.topOffset=n}apply(t){this.oldState=t;const e=(0,ct.findElement)(this.id,Object.values(t.layouts));if(!e.id)throw new ct.ElementNotFoundError(this.id);const A=Object.assign(Object.assign({},e),{patchX:this.leftOffset,patchY:this.topOffset,patchScale:this.scale}),n=(0,ct.findLayoutForElement)(e.id,Object.values(t.layouts)),i=(0,ct.updatedLayoutForElement)(A,n);return Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[n.layout.id]:i})})}};at.BringForwardCommand=class extends ut{constructor(t){super(),this.id=t}apply(t){this.oldState=t;if(!(0,ct.findElement)(this.id,Object.values(t.layouts)).id)throw new ct.ElementNotFoundError(this.id);const e=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!e)throw new Error("Layout missing from state!");const A=e.elements.findIndex((t=>t.id===this.id)),n=A+1,i=[...e.elements],a=i.splice(A,1)[0];return i.splice(n,0,a),i.forEach(((t,e)=>t.layerIndex=e)),Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[e.layout.id]:Object.assign(Object.assign({},t.layouts[e.layout.id]),{elements:i,modificationID:(0,rt.generate)()})})})}};at.SendBackwardsCommand=class extends ut{constructor(t){super(),this.id=t}apply(t){this.oldState=t;if(!(0,ct.findElement)(this.id,Object.values(t.layouts)).id)throw new ct.ElementNotFoundError(this.id);const e=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!e)throw new Error("Layout missing from state!");const A=e.elements.findIndex((t=>t.id===this.id)),n=A-1,i=[...e.elements],a=i.splice(A,1)[0];return i.splice(n,0,a),i.forEach(((t,e)=>t.layerIndex=e)),Object.assign(Object.assign({},t),{layouts:Object.assign(Object.assign({},t.layouts),{[e.layout.id]:Object.assign(Object.assign({},t.layouts[e.layout.id]),{elements:i,modificationID:(0,rt.generate)()})})})}};const Qt=nt(et("8bSlr")),pt=nt(c),mt=nt(et("lg0Le")),ft=nt(et("jIKCJ")),Dt=nt(et("S1A06")),It=nt(et("lx5Wl"));rt=et("2RTUs");At.CommandContext=class{constructor(){this.id=(0,rt.generate)(),this.stateCallbacks=[],this.prevCommands=[],this.nextCommands=[]}registerStateCallback(t){t(),this.stateCallbacks.push(t)}getState(){return this.state}runStateCallbacks(){this.stateCallbacks.forEach((t=>t()))}apply(t){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);this.state=this.commandReducer(this.state,t),this.runStateCallbacks(),this.nextCommands=[],this.prevCommands.push(t)}undo(){if(!this.state)return;const t=this.prevCommands.pop();if(!t)return;const e=t.undo();t.varying?this.state=Object.assign(Object.assign({},this.state),{variation:e}):this.state=Object.assign(Object.assign({},this.state),{transaction:e}),this.nextCommands.push(t),this.runStateCallbacks()}redo(){if(!this.state)return;const t=this.nextCommands.pop();t&&(this.state=this.commandReducer(this.state,t),this.runStateCallbacks(),this.prevCommands.push(t))}flattenSequence(t,e){const A=this.prevCommands.filter((e=>e.sequenceId===t)).pop();A&&(this.prevCommands=this.prevCommands.filter((e=>e.sequenceId!==t)),null==A||A.overrideOldState(e),this.prevCommands.push(A))}getLayoutById(t){var e,A,n,i;if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const a=null===(A=null===(e=this.state.transaction)||void 0===e?void 0:e.layouts)||void 0===A?void 0:A[t],o=null===(i=null===(n=this.state.variation)||void 0===n?void 0:n.layouts)||void 0===i?void 0:i[t],s=(null==a?void 0:a.layout)||(null==o?void 0:o.layout);if(!s)throw new Error(`No layout: ${t}`);const r=[...(null==a?void 0:a.elements)||[],...(null==o?void 0:o.elements)||[]];return this.getLayoutDataWithState(s,r)}getAllLayouts(){var t,e;if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const A=[...Object.keys(null===(t=this.state.transaction)||void 0===t?void 0:t.layouts),...Object.keys((null===(e=this.state.variation)||void 0===e?void 0:e.layouts)||{})];return[...new Set(A)].map((t=>this.getLayoutById(t)))}getLayoutDataWithState(e,A){const n=A.map((t=>xt(t))),i={width:e.width,height:e.height,viewBox:{x:0,y:0,width:e.width,height:e.height}},a={backgroundColor:e.transparentBackground?void 0:"white",elements:n};return{layoutState:{layout:e,elements:A},Component:(0,t.jsx)(it.default,Object.assign({},a,i),void 0),getComponentWithProps:e=>(0,t.jsx)(it.default,Object.assign({},a,i,e),void 0)}}initialize(t,e){if(e)return void(this.state={transaction:e});let A={serializableWorkflow:{steps:[]},layouts:{}};t.forEach((t=>{A=new at.CreateLayoutCommand(t).apply(A)})),this.runStateCallbacks(),this.state={transaction:A}}commandReducer(t,e){if(e.varying){const A=Object.assign({layouts:{},serializableWorkflow:{steps:[]}},t.variation);return Object.assign(Object.assign({},t),{variation:e.apply(A)})}{const A=t.transaction||{layouts:{},serializableWorkflow:{steps:[]}};return Object.assign(Object.assign({},t),{transaction:e.apply(A)})}}};const xt=e=>"image"===e.type?(0,t.jsx)(Qt.default,Object.assign({},e),e.id):"frame"===e.type?(0,t.jsx)(mt.default,Object.assign({},e),e.id):"illustration"===e.type?(0,t.jsx)(Dt.default,Object.assign({},e),e.id):"patchwork"===e.type?(0,t.jsx)(It.default,Object.assign({},e),e.id):"textbox"===e.type?(0,t.jsx)(ft.default,Object.assign({},e),e.id):null;At.getSvgString=(e,A,n)=>{const i={backgroundColor:e.transparentBackground?void 0:"white"},a={width:(null==n?void 0:n.region)?n.region.width:e.width,height:(null==n?void 0:n.region)?n.region.height:e.height,viewBox:(null==n?void 0:n.region)?n.region:{x:0,y:0,width:e.width,height:e.height}},o=((null==n?void 0:n.removeExcludedElements)?A.filter((t=>!t.excludeFromExport)):A).map((t=>Object.assign(Object.assign({},t),{_renderingConfiguration:n})));try{return pt.default.renderToStaticMarkup((0,t.jsx)(it.default,Object.assign({preserveAspectRatio:"none"},i,a,{elements:o.map((t=>xt(t))).filter((t=>!!t)),omitBoundClipping:null==n?void 0:n.omitClipMask}),void 0))}catch(t){return console.error("Error rendering to static markup"),console.error(t),""}};var yt={},Mt=yt&&yt.__awaiter||function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))};Object.defineProperty(yt,"__esModule",{value:!0}),yt.LayoutElementFactory=void 0;rt=et("2RTUs"),wt=et("gxilN");var Ft=et("22zA1"),vt={},Yt=vt&&vt.__awaiter||function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))};Object.defineProperty(vt,"__esModule",{value:!0}),vt.svgStringDimensions=vt.GetSVGDimensions=vt.getPatternImageData=vt.calculateOffsets=vt.getFrameData=vt.getVariant=vt.generateDefaultRectangleFrameSvg=vt.generateFrameSVG=vt.frameDataCache=vt.patternImageDataCache=void 0;lt=et("98viV");var St={};Object.defineProperty(St,"__esModule",{value:!0}),St.getDefaultVariant=void 0;St.getDefaultVariant=t=>{const e=t.variants;return 1===e.length?e[0]:void 0!==t.defaultVariant?e.find((e=>e.id===t.defaultVariant)):void 0};var Nt={},Rt=Nt&&Nt.__awaiter||function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))};Object.defineProperty(Nt,"__esModule",{value:!0}),Nt.getAttributesFromArrayBuffer=Nt.canvasDims=Nt.getExifOrientation=void 0;lt=et("98viV");let Ht=null;Nt.getExifOrientation=t=>new Promise((e=>{const A=(0,lt.arrayBufferToBuffer)(t);(0,a.fromBuffer)(t).then((t=>{if("image/jpeg"!==(null==t?void 0:t.mime))return e(1);(new B.ExifImage).loadImage(A,((t,A)=>e(t?1:A.image.Orientation||1)))}))}));Nt.canvasDims=t=>{const e=8192,A=t.naturalWidth/t.naturalHeight;return t.naturalHeight<=e&&t.naturalWidth<=e?[t.naturalWidth,t.naturalHeight]:t.naturalHeight>t.naturalWidth?[A*e,e]:[e,e/A]};const Ut=t=>Rt(void 0,void 0,void 0,(function*(){const e=yield(0,lt.arrayBufferToDataUrl)(t),A=yield(0,l.loadImage)(e),[n,i]=(0,Nt.canvasDims)(A),a=yield Rt(void 0,void 0,void 0,(function*(){if(null!==Ht)return!Ht;const t=yield(0,l.loadImage)("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/xABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAAAAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQvoP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXwH/9k=");return Ht=2===t.width&&3===t.height,!Ht}));if(!a){const t=(0,l.createCanvas)(n,i);return t.getContext("2d").drawImage(A,0,0,n,i),t}const o=yield(0,Nt.getExifOrientation)(t),[s,r]=o>4?[i,n]:[n,i],c=(0,l.createCanvas)(s,r),g=c.getContext("2d");switch(o){case 2:g.translate(s,0),g.scale(-1,1);break;case 3:g.translate(s,r),g.rotate(Math.PI);break;case 4:g.translate(0,r),g.scale(1,-1);break;case 5:g.rotate(-.5*Math.PI),g.scale(-1,1);break;case 6:g.rotate(-.5*Math.PI),g.translate(-s,0);break;case 7:g.rotate(-.5*Math.PI),g.translate(-s,r),g.scale(1,-1);break;case 8:g.rotate(.5*Math.PI),g.translate(0,-r)}return g.drawImage(A,0,0,s,r),c}));Nt.getAttributesFromArrayBuffer=t=>Rt(void 0,void 0,void 0,(function*(){const e=yield Ut(t),A=yield(0,a.fromBuffer)(t);return"image/jpeg"===(null==A?void 0:A.mime)?{dataUrl:e.toDataURL("image/jpeg",1),height:e.height,width:e.width}:{dataUrl:e.toDataURL(),height:e.height,width:e.width}})),vt.patternImageDataCache=new Map,vt.frameDataCache=new Map;vt.generateFrameSVG=(t,e)=>Yt(void 0,void 0,void 0,(function*(){if(!e){if(!t)throw new Error("No region or src supplied. Cannot construct frame!");return(0,vt.generateDefaultRectangleFrameSvg)(t)}return(0,lt.fetchAsString)(e)}));vt.generateDefaultRectangleFrameSvg=t=>{const e=t.width,A=e/t.height,n=Math.max(e,512),i=n/A;return`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 ${n} ${i}'>\n <path id="target-path" d='M0 0 h ${n} v ${i} h ${-n} Z' />\n </svg>\n `};vt.getVariant=(t,e)=>{if(!e)return;const A=e.data.variants.find((e=>e.id===t.frameVariantId))||(0,St.getDefaultVariant)(e.data);if(!A)throw new Error(`No variant with ID: ${t.frameVariantId}`);if(!A.asset)throw new Error(`No asset for variant with ID: ${t.frameVariantId}`);return A};vt.getFrameData=t=>Yt(void 0,void 0,void 0,(function*(){const e=(0,lt.domParser)().parseFromString(t,"image/svg+xml"),A=e.querySelector("svg");if(!A)throw new Error("Malformed frame SVG: <svg> tag not found");const n=A.getAttribute("viewBox");if(!n)throw new Error("SVG missing viewBox.");const i=n.split(" "),a=parseFloat(i[3])||1,o=parseFloat(i[2])||1,s=e.getElementById("target-path"),r=e.getElementsByClassName("st0").item(0);if(s){const t=s.getAttribute("d");if(!t)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const e={path:t,width:o,height:a};return vt.frameDataCache.set(t,e),e}if(r){const t=r.getAttribute("d");if(!t)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const e={path:t,width:o,height:a};return vt.frameDataCache.set(t,e),e}throw new Error("Malformed frame SVG")}));vt.calculateOffsets=(t,e,A)=>{const n=e.width>=e.height,i=t.width>=t.height,a=e.width/2,o=e.height/2,s=(n?e.height:e.width)/(i?t.height:t.width),r=(null==A?void 0:A.scale)||s,c=a-t.width/2*r,g=(null==A?void 0:A.left)||c,l=o-t.height/2*r;return{x:g,y:(null==A?void 0:A.top)||l,zoom:r}};vt.getPatternImageData=t=>Yt(void 0,void 0,void 0,(function*(){if(vt.patternImageDataCache.has(t))return vt.patternImageDataCache.get(t);if(t.endsWith("svg")){const e=yield(0,vt.GetSVGDimensions)(t),A=e.width,n=e.height,i={src:t,width:A,height:n,aspect:A/n};return vt.patternImageDataCache.set(t,i),i}{const e=yield(0,lt.fetchAsArrayBuffer)(t),A=yield(0,Nt.getAttributesFromArrayBuffer)(e),n={src:t,width:A.width,height:A.height,aspect:A.width/A.height};return vt.patternImageDataCache.set(t,n),n}}));vt.GetSVGDimensions=t=>Yt(void 0,void 0,void 0,(function*(){const e=yield fetch(t),A=yield e.text();return(0,vt.svgStringDimensions)(A)}));vt.svgStringDimensions=t=>{const e=(new DOMParser).parseFromString(t,"image/svg+xml").querySelector("svg");if(!e)throw new Error("No svg tag found, this svg must be malformed!");const A=e.getAttribute("viewBox"),n=e.getAttribute("width"),i=e.getAttribute("height"),a=A?null==A?void 0:A.split(" ").map((t=>Number(t))):[0,0,Number(n),Number(i)];if(!a)throw new Error("No viewbox or width/height values detected on SVG file!");return{width:a[2],height:a[3]}};Et=et("9SSHp");yt.LayoutElementFactory=class{static getFrame(t){return Mt(this,void 0,void 0,(function*(){const e=yield(0,vt.generateFrameSVG)(t.region,t.src),A=yield(0,vt.getFrameData)(e);return{id:(0,rt.generate)(),x:t.region.left,y:t.region.top,width:t.region.width,height:t.region.height,layerIndex:t.region.layerIndex,rotation:t.region.rotation,scaleX:t.region.width/A.width,scaleY:t.region.height/A.height,path:A.path,type:wt.LayoutElementType.Frame,disablePlaceholder:t.configuration.disablePlaceholder,focalBlur:t.configuration.focalBlur,focalBlurStrength:t.configuration.focalBlurStrength,focalBlurRadius:t.configuration.focalBlurRadius,pattern:void 0,immutable:t.region.immutable}}))}static getImage(t){return Mt(this,void 0,void 0,(function*(){let e;if(t.layout){const A=bt(t.layout),n=A.height,i=yield fetch(t.src),a=yield i.arrayBuffer(),o=yield(0,Nt.getAttributesFromArrayBuffer)(a),s=o.width/o.height;A.height=A.width/s,A.top+=(n-A.height)/2,e=A}else e=t.region;return e||(e={left:0,top:0,width:100,height:100,layerIndex:1,rotation:0,panelId:"",immutable:!1}),{id:(0,rt.generate)(),src:t.src,type:wt.LayoutElementType.Image,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layerIndex:e.layerIndex,immutable:e.immutable,preserveAspectRatio:"none"}}))}static getTextbox(t){return Mt(this,void 0,void 0,(function*(){const{region:e,configuration:A,fontSrc:n,designInputStep:i}=t,a={assetUrl:n,name:(yield(0,Ft.loadFontFromExternalUrl)(n)).names.fullName.en},o=(null==i?void 0:i.text)||A.defaultText||"",s=A.replaceableText?A.replaceableText.replace("{{}}",o):o,r=(0,Et.applyTextTransformations)(s,{vertical:A.vertical,uppercase:A.uppercase});return(0,Et.recomputeTextOnElement)({id:(0,rt.generate)(),type:wt.LayoutElementType.Textbox,x:e.left,y:e.top,width:e.width,height:e.height,align:(0,Et.getTextAlignment)(A.textAlign,A.vertical),curved:A.curved,fill:(null==i?void 0:i.color)||A.colour||"#000000",fontData:a,layerIndex:e.layerIndex,paths:A.paths,rotation:e.rotation,vertical:A.vertical,verticalAlign:A.verticalAlign||"middle",algorithm:wt.TextAlgorithm.Traditional,fontSize:A.size||18,text:r,input:o},r)}))}static getShape(t){return Mt(this,void 0,void 0,(function*(){const e=`\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xmlnsXlink="http://www.w3.org/1999/xlink"\n xmlSpace="preserve"\n preserveAspectRatio="none"\n version="1.1"\n width="1"\n height="1"\n viewBox="0 0 1 1"\n >\n <rect\n x="0"\n y="0"\n width="1"\n height="1"\n class="spiff-fill-shape"\n fill="${t.color}"\n />\n </svg>\n `,A={};A["spiff-fill-shape"]={browserValue:t.color};const n=(0,rt.generate)();return{stepRegion:t.region,colors:A,id:n,svg:e,type:"illustration",y:t.region.top,x:t.region.left,rotation:t.region.rotation,width:t.region.width,height:t.region.height,layerIndex:t.region.layerIndex,immutable:t.region.immutable}}))}};const bt=t=>{const e=(t.layoutState.layout.width<t.layoutState.layout.height?t.layoutState.layout.width:t.layoutState.layout.height)/2;return{top:t.layoutState.layout.height/2-e/2,left:t.layoutState.layout.width/2-e/2,width:e,height:e,rotation:0,panelId:t.layoutState.layout.panelId}};Ft=et("22zA1");function Pt(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}const Gt=new class{constructor(){Pt(this,"cache",new Map),Pt(this,"getDisplayImageSource",(t=>{if(t){const e=t.displayImage?.links.find((t=>"cdn"===t.rel));if(e)return e.href}})),Pt(this,"getSelectedVariant",((t,e)=>{if(t&&0!==e.length)return t.variants.find((t=>t.id===e[0]))})),Pt(this,"getSelectedVariants",((t,e)=>t?.variants.filter((t=>e.includes(t.id)))||[]))}async cacheRequiredOptions(t){const e=t.steps.map((t=>t.optionId)).filter((t=>void 0!==t)),A=t.steps.map((t=>t.data.colourOptionId)).filter((t=>void 0!==t)),n=[...new Set([...e,...A])].map((async t=>{const e=await Gt.getLocalOrFromServer(zt,t);"Font"===e.data.type&&e.data.variants.forEach((async t=>{if(t.assetKey){const e=(await ve.getLocalOrFromServer(t.assetKey)).links.find((t=>"cdn"===t.rel))?.href;e&&await(0,Ft.loadFontFromExternalUrl)(e)}}))}));await Promise.allSettled([...n])}async getLocalOrFromServer(t,e){if(this.cache.has(e))return this.cache.get(e);const A=(await t.execute("getOptionV2",{id:e})).body;return this.cache.set(e,A),A}getLocalOrUndefined(t){if(t)return this.cache.get(t)}async getAssetTileImageForVariant(t){if(t.thumbnailKey){const e=await ve.getLocalOrFromServer(t.thumbnailKey),A=e.links.find((t=>"thumbnail"===t.rel)),n=e.links.find((t=>"cdn"===t.rel));return A?.href||n?.href}const e=t.assetKey;if(e){const t=await ve.getLocalOrFromServer(e),A=t.links.find((t=>"thumbnail"===t.rel)),n=t.links.find((t=>"cdn"===t.rel));return A?.href||n?.href}return t.materialId?t.materialId:""}getDefaultVariant(t){const e=t.variants;return 1===e.length?e[0]:void 0!==t.defaultVariant?e.find((e=>e.id===t.defaultVariant)):void 0}};function Ot(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}const kt=new class{constructor(){Ot(this,"defaultServerUrl","https://api.spiff.com.au"),Ot(this,"defaultServicesApiUrl","https://services.spiff.com.au"),Ot(this,"defaultHubUrl","https://hub.spiff.com.au"),Ot(this,"serverUrl",void 0),Ot(this,"servicesApiUrl",void 0),Ot(this,"hubUrl",void 0),Ot(this,"serverUrlCallbacks",void 0),this.serverUrl=this.defaultServerUrl,this.servicesApiUrl=this.defaultServicesApiUrl,this.hubUrl=this.defaultHubUrl,this.serverUrlCallbacks=[]}getServerUrl(){return this.serverUrl}getServicesApiUrl(){return this.servicesApiUrl}getHubUrl(){return this.hubUrl}setServerUrl(t){this.serverUrl=t,this.serverUrlCallbacks.forEach((t=>t()))}setServicesApiUrl(t){this.servicesApiUrl=t}setHubUrl(t){this.hubUrl=t}addServerUrlCallback(t){this.serverUrlCallbacks.push(t)}};function Jt(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}let Lt;const Tt=t=>{Lt=t},jt=async()=>{const t={transactionOwnerId:Lt};return window.location.href.includes("/workflows/product/")?{...await new Promise((t=>{const e=kt.getHubUrl();if(window.location.href.includes("localhost")||window.location.href.includes("ngrok"))return void t({});const A=n=>{n.origin===e&&(window.removeEventListener("message",A),t(n.data))};window.parent!==window&&(window.addEventListener("message",A,!1),window.parent.postMessage("ready",e))})),...t}:t};const zt=new class{constructor(){Jt(this,"client",void 0),Jt(this,"uncachedOperations",[]),kt.addServerUrlCallback((async()=>{this.client=void 0,this.client=await this.constructClient()}))}setUncachedOperations(t){this.uncachedOperations=t}async execute(t,e){const A=this.uncachedOperations.includes(t)?t+"_private":t;return new Promise(((t,n)=>{this.getClient().then((i=>{i.execute({operationId:A,parameters:e}).then((e=>t(e))).catch((t=>{t.response&&t.response.status&&t.response.status>=500||(!t.response&&n(new Error(t)),t.response&&n(new Error(`${t.response.status} ${t.response.url}`)))}))})).catch((t=>{n(t)}))}))}async syncAuth(t){const e=await jt();if(e.bearer?t.authorizations={...t.authorizations,OAuth2:{token:{access_token:e.bearer,token_type:"Bearer"}}}:t.authorizations={...t.authorizations,OAuth2:{token:{access_token:"",token_type:"Bearer"}}},e.activeIntegration)t.authorizations={...t.authorizations,ActiveIntegration:e.activeIntegration};else{const e={...t.authorizations};delete e.ActiveIntegration,t.authorizations=e}if(e.partnerId)t.authorizations={...t.authorizations,PartnerId:e.partnerId};else{const e={...t.authorizations};delete e.PartnerId,t.authorizations=e}}async getClient(){return this.client||(this.client=await this.constructClient()),this.syncAuth(this.client),Promise.resolve(this.client)}async constructClient(){const t=await jt(),e=kt.getServerUrl()+"/v2/api-docs";return await _(d)(e,{authorizations:{OAuth2:{token:{access_token:t.bearer,token_type:"Bearer"}},PartnerId:t.partnerId}})}};const Kt=new class{constructor(){Jt(this,"shadowGraphqlClient",void 0),this.shadowGraphqlClient=this.constructShadowGraphqlClient(),kt.addServerUrlCallback((()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()}))}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const t=(0,h.createHttpLink)({uri:`${kt.getServerUrl()}/graphql`,fetch:_(u)}),e=(0,w.setContext)((async(t,{headers:e})=>{const A=e||{},n=await jt();return n.bearer&&(A.Authorization=`Bearer ${n.bearer}`),n.partnerId&&(A.partnerId=n.partnerId),n.activeIntegration&&(A.activeIntegration=n.activeIntegration),n.transactionOwnerId&&(A.transactionOwnerId=n.transactionOwnerId),{headers:A}})),A=(0,E.onError)((({operation:t,graphQLErrors:e,networkError:A})=>{(e||[]).forEach((({message:e,locations:A,path:n})=>{console.log("[GraphQL Operation Error]"),console.log("Name:"+t.operationName),console.log("Query:"+JSON.stringify(t.query)),console.log(`Message: ${e}, Location: ${JSON.stringify(A,null,2)}, Path: ${n}`),console.log("Variables:"+JSON.stringify(t.variables))})),A&&console.log("GraphQL Network error")}));const n=new(0,h.InMemoryCache)({typePolicies:{Transaction:{fields:{transactionOwnerId:{read:(t=null)=>t},customLogoLink:{read:(t=null)=>t},workflowFooterLogoLink:{read:(t=null)=>t},workflowState:{read:(t=null)=>t},bulkSourceUrl:{read:(t=null)=>t}}}}});return new(0,h.ApolloClient)({link:(0,h.from)([A,e,t]),cache:n,name:"Core"})}},Vt=(0,C.createContext)(new(0,At.CommandContext)),Wt=()=>{const t=(0,C.useContext)(Vt);(0,C.useEffect)((()=>{t.registerStateCallback((()=>{A(new Date)}))}),[t]);const[e,A]=(0,C.useState)(new Date);return{commandDispatcher:e=>{t.apply(e)},getLayoutById:e=>t.getLayoutById(e),getAllLayouts:()=>t.getAllLayouts(),getReducerState:()=>{const e=t.getState();return e||{transaction:{layouts:{},serializableWorkflow:{steps:[]}}}},lastUpdated:e,flattenSequence:(e,A)=>{t.flattenSequence(e,A)}}};var Xt=et("aATGG");let qt;var Zt;(Zt=qt||(qt={})).None="None",Zt.FrameAdjustment="FrameAdjustment",Zt.FinalizeDesign="FinalizeDesign";const _t=(t,e)=>({layoutId:t()[0].layoutState.layout.id,selectedElement:void 0,zoom:e,maxZoom:5,units:Xt.UnitOfMeasurement.Pixel,subMenu:qt.None,activeModifierKeys:[],metaPressed:!1,elementEvent:void 0,scrolledMovement:!1}),$t=(t,e)=>_(Q)(t,e.apply(t))?t:e.apply(t),te=(0,C.createContext)({}),ee=e=>{const{getAllLayouts:A}=Wt(),[n,i]=(0,C.useReducer)($t,_t(A,e.defaultZoom||1)),a=(0,C.useMemo)((()=>({state:n,uiDispatcher:i})),[n,i]);return(0,t.jsx)(te.Provider,{value:a,children:e.children})};class Ae{constructor(t){var e,A,n;n=void 0,(A="changes")in(e=this)?Object.defineProperty(e,A,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[A]=n,this.changes=t}apply(t){return{...t,...this.changes}}}const ne=()=>(0,C.useContext)(te);var ie=et("aIqAQ");const ae=7*window.devicePixelRatio,oe=(e,A,n,i)=>{const a=A.layout.width,o=A.layout.height,s=A.elements.filter((t=>t.id!==e.id&&!t.immutable&&!t.productOverlay)),r=s.map((t=>(0,ie.getAxisAlignedBoundingBox)(t.x,t.y,t.width,t.height,t.rotation))),c=[],g=new Set;r.forEach((t=>g.add(t.minX))),r.forEach((t=>g.add(t.maxX))),[0,a/2,a].forEach((t=>g.add(t)));const l=new Set;r.forEach((t=>l.add(t.minY))),r.forEach((t=>l.add(t.maxY))),[0,o/2,o].forEach((t=>l.add(t)));const B=s.map((t=>t.y));for(let t=-315;t<=315;t+=45)B.push(t);const d=(0,ie.getAxisAlignedBoundingBox)(e.x,e.y,e.width,e.height,e.rotation),h=[{value:d.minX,anchor:-1},{value:d.minX+(d.maxX-d.minX)/2,anchor:0},{value:d.minX+(d.maxX-d.minX),anchor:1}],w=[{value:d.minY,anchor:-1},{value:d.minY+(d.maxY-d.minY)/2,anchor:0},{value:d.minY+(d.maxY-d.minY),anchor:1}],E=[{value:e.rotation,anchor:0}],u=(e,A,i,s)=>{const r=[];return A.forEach((A=>{const c=i.find((t=>(0,ie.isCloseToValue)(A,t.value,2*n))),[g,l]=((t,e)=>[{x:"x"===t?e:0,y:"x"===t?0:e},{x:"x"===t?e:a,y:"x"===t?o:e}])(e,A),B="rotation"===e?null:(0,t.jsx)("line",{x1:g.x,y1:g.y,x2:l.x,y2:l.y,stroke:s||"#D61B5C",strokeDasharray:5*n,strokeWidth:1.2*n,overflow:"overlay"},`${e}-${A}-${g.x}-${g.y}-${l.x}-${l.y}`);void 0!==c&&r.push({type:e,value:A,anchorPoint:c.anchor,svgNode:B,guidelineCoordinates:[g,l]})})),r};return c.push(...u("x",Array.from(g),h,i)),c.push(...u("y",Array.from(l),w,i)),c.push(...u("rotation",B,E,i)),c};Xt=et("aATGG");var se=et("llowX");ie=et("aIqAQ"),wt=et("gxilN"),Et=et("9SSHp");let re;var ce;let ge;var le;(ce=re||(re={})).Translate="Translate",ce.Rotate="Rotate",ce.Resize="Resize",(le=ge||(ge={})).ControlLeft="ControlLeft",le.ControlRight="ControlRight",le.Equal="Equal",le.MetaLeft="MetaLeft",le.MetaRight="MetaRight",le.Minus="Minus",le.ArrowLeft="ArrowLeft",le.ArrowRight="ArrowRight",le.ArrowUp="ArrowUp",le.ArrowDown="ArrowDown",le.AltLeft="AltLeft",le.AltRight="AltRight",le.Delete="Delete",le.Backspace="Backspace";const Be=(t,e,A,n)=>{const i=()=>{switch(A){case Xt.UnitOfMeasurement.Pixel:return 1;case Xt.UnitOfMeasurement.Millimeter:return ie.mmPerPixel;case Xt.UnitOfMeasurement.Centimeter:return ie.cmPerPixel;default:throw new Error("Unknown unit of measurement")}};let a=e.x,o=e.y,s=e.x,r=e.y;switch(t){case ge.ArrowLeft:s=e.x-1/i();break;case ge.ArrowUp:r=e.y-1/i();break;case ge.ArrowRight:s=e.x+1/i();break;case ge.ArrowDown:r=e.y+1/i();break;default:throw new Error("Unhandled element interaction!")}const c=(0,ie.getAxisAlignedBoundingBox)(s,r,e.width,e.height,e.rotation);return(!n||c.minX>=n.left&&c.maxX<=n.left+n.width&&c.minY>=n.top&&c.maxY<=n.top+n.height)&&(a=s,o=r),new(0,at.MoveCommand)(e.id,a,o)};var de=0,he=0,we=0;const Ee=(t,e,A,n,i,a,o)=>{const s=((t,e,A,n,i,a,o)=>{const s=n.width/e.width,r=n.height/e.height,c=t.movementX/s,g=t.movementY/r,l=A.rotation*Math.PI/180,B=Math.sin(l),d=Math.cos(l);let h;switch(i.type){case re.Resize:let e={top:A.y,left:A.x,width:A.width,height:A.height,rotation:A.rotation,fontSize:A.fontSize},w=e;switch(i.screenAxis){case Xt.ScaleAxis.North:{const t=-c*B+g*d,n=A.y+t,i=A.height-t,a=(0,ie.getElementVertices)({...A}).center,o=(0,ie.getElementVertices)({...A,y:n,height:i}).center,s=(0,ie.rotateAroundPoint)(o,a,l),r=s.x-A.width/2,h=s.y-i/2;w={...e,left:r,top:h,height:i}}break;case Xt.ScaleAxis.East:{const t=c*d+g*B,n=A.width+t;let i=A.height;if(A.type===wt.LayoutElementType.Textbox){const t=A;i=(0,se.calculateTextboxLines)(t.fontSize,t.fontData,t,t.input||t.text||"",t.lineHeight).requiredHeight}const a=(0,ie.getElementVertices)({...A}).center,o=(0,ie.getElementVertices)({...A,width:n,height:i}).center,s=(0,ie.rotateAroundPoint)(o,a,l),r=s.x-n/2,h=s.y-i/2;w={...e,left:r,top:h,width:n,height:i}}break;case Xt.ScaleAxis.West:{const t=c*d+g*B,n=A.x+t,i=A.width-t;let a=A.height;if(A.type===wt.LayoutElementType.Textbox){const t=A;a=(0,se.calculateTextboxLines)(t.fontSize,t.fontData,t,t.input||t.text||"",t.lineHeight).requiredHeight}const o=(0,ie.getElementVertices)({...A}).center,s=(0,ie.getElementVertices)({...A,width:i,height:a,x:n}).center,r=(0,ie.rotateAroundPoint)(s,o,l),h=r.x-i/2,E=r.y-a/2;w={...e,left:h,top:E,width:i,height:a}}break;case Xt.ScaleAxis.South:{const t=-c*B+g*d,n=A.height+t,i=(0,ie.getElementVertices)({...A}).center,a=(0,ie.getElementVertices)({...A,height:n}).center,o=(0,ie.rotateAroundPoint)(a,i,l),s=o.x-A.width/2,r=o.y-n/2;w={...e,left:s,top:r,height:n}}break;case Xt.ScaleAxis.Northeast:{const t=c*d+g*B,n=A.width+t;let i=A.height+t,a=A.y-t,o=A.fontSize;if(A.type===wt.LayoutElementType.Textbox){const e=A;o=e.fontSize+t/8,i=(0,se.calculateTextboxLines)(o,e.fontData,e,e.input||e.text||"",e.lineHeight).requiredHeight;const n=e.lineHeight||Et.defaultLineHeightFactor;a=A.y-t*n/8}const s=(0,ie.getElementVertices)({...A}).center,r=(0,ie.getElementVertices)({...A,width:n,height:i,y:a}).center,h=(0,ie.rotateAroundPoint)(r,s,l),E=h.x-n/2,u=h.y-i/2;w={...e,left:E,top:u,width:n,height:i,fontSize:o}}break;case Xt.ScaleAxis.Northwest:{const t=-c*d+-g*B,n=A.x-t,i=A.width+t;let a=A.y-t,o=A.height+t,s=A.fontSize;if(A.type===wt.LayoutElementType.Textbox){const e=A;s=e.fontSize+t/8,o=(0,se.calculateTextboxLines)(s,e.fontData,e,e.input||e.text||"",e.lineHeight).requiredHeight;const n=e.lineHeight||Et.defaultLineHeightFactor;a=A.y-t*n/8}const r=(0,ie.getElementVertices)({...A}).center,h=(0,ie.getElementVertices)({...A,x:n,y:a,width:i,height:o}).center,E=(0,ie.rotateAroundPoint)(h,r,l),u=E.x-i/2,C=E.y-o/2;w={...e,left:u,top:C,width:i,height:o,fontSize:s}}break;case Xt.ScaleAxis.Southeast:{const t=c*d+g*B,n=A.width+t;let i=A.height+t,a=A.fontSize;if(A.type===wt.LayoutElementType.Textbox){const e=A;a=e.fontSize+t/8,i=(0,se.calculateTextboxLines)(a,e.fontData,e,e.input||e.text||"",e.lineHeight).requiredHeight}const o=(0,ie.getElementVertices)({...A}).center,s=(0,ie.getElementVertices)({...A,width:n,height:i}).center,r=(0,ie.rotateAroundPoint)(s,o,l),h=r.x-n/2,E=r.y-i/2;w={...e,left:h,top:E,width:n,height:i,fontSize:a}}break;case Xt.ScaleAxis.Southwest:{const t=-c*d+-g*B,n=A.width+t;let i=A.x-t,a=A.height+t,o=A.fontSize;if(A.type===wt.LayoutElementType.Textbox){const e=A;o=e.fontSize+t/8,a=(0,se.calculateTextboxLines)(o,e.fontData,e,e.input||e.text||"",e.lineHeight).requiredHeight}const s=(0,ie.getElementVertices)({...A}).center,r=(0,ie.getElementVertices)({...A,width:n,height:a,x:i}).center,h=(0,ie.rotateAroundPoint)(r,s,l),E=h.x-n/2,u=h.y-a/2;w={...e,left:E,top:u,width:n,height:a,fontSize:o}}}return h=(0,ie.getAxisAlignedBoundingBox)(w.left,w.top,w.width,w.height,w.rotation),(!o||h.minX>=o.left&&h.maxX<=o.left+o.width&&h.minY>=o.top&&h.maxY<=o.top+o.height)&&(e=w),e;case re.Rotate:const E={x:t.clientX,y:t.clientY};let u,C=A.rotation;const Q=(0,ie.getElementVertices)(A,n,{x:s,y:r}),p=(0,ie.findAngle)(E,Q.c,Q.d),m=(0,ie.findAngle)(E,Q.d,Q.c);if(0===a.filter((t=>"rotation"===t.type)).length)we=0,u=(A.rotation+p-m)%360;else{we+=Math.sqrt(c**2+g**2);const t=Math.abs(we)>ae/s;u=t?(A.rotation+p-m)%360:a.find((t=>"rotation"===t.type))?.value||0,t&&(we=0)}return h=(0,ie.getAxisAlignedBoundingBox)(A.x,A.y,A.width,A.height,u),(!o||h.minX>=o.left&&h.maxX<=o.left+o.width&&h.minY>=o.top&&h.maxY<=o.top+o.height)&&(C=u),{top:A.y,left:A.x,width:A.width,height:A.height,rotation:C};case re.Translate:let f,D,I=A.x,x=A.y;if(0===a.filter((t=>"rotation"!==t.type)).length)de=0,he=0,f=A.x+c,D=A.y+g;else{const t=a.find((t=>"x"===t.type)),e=a.find((t=>"y"===t.type));t||(de=0),e||(he=0);const n=Math.abs(de)>ae/s,i=Math.abs(he)>ae/r;f=t?n?A.x+de:A.x:A.x+c,D=e?i?A.y+he:A.y:A.y+g,de=n?0:de+c,he=i?0:he+g}return h=(0,ie.getAxisAlignedBoundingBox)(f,D,A.width,A.height,A.rotation),(!o||h.minX>=o.left&&h.maxX<=o.left+o.width&&h.minY>=o.top&&h.maxY<=o.top+o.height)&&(I=f,x=D),{top:x,left:I,width:A.width,height:A.height,rotation:A.rotation}}})(t,e,A,n,i,a,o),r=[];if(A.type===wt.LayoutElementType.Textbox){const t=A;r.push(new(0,at.TextChangeCommand)(t.id,t.text||t.input||""))}if(r.push(new(0,at.MoveCommand)(A.id,s.left,s.top),new(0,at.ResizeCommand)(A.id,s.width,s.height),new(0,at.RotateCommand)(A.id,s.rotation)),A.type===wt.LayoutElementType.Textbox){const t=A;s.fontSize&&t.fontSize!==s.fontSize&&r.push(new(0,at.FontSizeCommand)(t.id,s.fontSize))}return r},ue=()=>{const t=()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1);return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},Ce=.5,Qe=(t,e,A,n,i,a,o)=>{const{state:s,uiDispatcher:r}=(0,C.useContext)(te),{getLayoutById:c,getReducerState:g,flattenSequence:l}=Wt(),[B,d]=(0,C.useState)(void 0),[h,w]=(0,C.useState)(void 0),E=c(s.layoutId);(0,C.useEffect)((()=>{if("adjustment"===i&&t?.current&&n){if(n<Ce)return void r(new Ae({zoom:Ce}));if(n>s.maxZoom)return void r(new Ae({zoom:s.maxZoom}));r(new Ae({zoom:n}))}}),[n,r,t,i,s.maxZoom]);const u=(0,C.useCallback)(((t,n)=>{r(new Ae({zoom:n}));const a=e?.current?.scrollWidth-e?.current?.clientWidth!=0,o=e?.current?.scrollHeight-e?.current?.clientHeight!=0;e.current&&A.current&&!s.scrolledMovement&&"advanced"===i&&(o&&(e.current.scrollTop=A.current.offsetTop+(e.current.scrollHeight-e.current.clientHeight)/2),a&&(e.current.scrollLeft=(A.current.offsetLeft+e.current.scrollWidth-e.current.clientWidth)/2))}),[r,e,A,s.scrolledMovement,i]);(0,C.useEffect)((()=>{s.zoom<=1&&r(new Ae({scrolledMovement:!1}))}),[r,s.zoom]);const Q=e?.current?.getBoundingClientRect(),p=((Q?.width||1)+(Q?.height||1))/2,m=(E.layoutState.layout.width+E.layoutState.layout.height)/2/p/s.zoom,f=(0,C.useMemo)((()=>{const t=s.activeModifierKeys,e=s.elementEvent,A=t.includes(ge.ControlLeft)||t.includes(ge.MetaLeft)||t.includes(ge.ControlRight)||t.includes(ge.MetaRight);if(!s.selectedElement||!e||A)return[];const n=e&&e.type===re.Translate,i=e&&e.type===re.Rotate,a=E.layoutState.elements.find((t=>t.id===s.selectedElement));return(n||i)&&a?oe(a,E.layoutState,m,o):[]}),[s.selectedElement,s.elementEvent,s.activeModifierKeys,E.layoutState,m]),D=(0,C.useCallback)((()=>{const t=ue();d(t),w(g().transaction)}),[g]),I=(0,C.useCallback)((()=>{r(new Ae({selectedElement:void 0}))}),[r]),x=(0,C.useCallback)((()=>{r(new Ae({scrolledMovement:!0}))}),[r]),y=(0,C.useCallback)(((A,n)=>{const i=E.layoutState.elements.find((t=>t.id===s.selectedElement));if(!(s.elementEvent&&t.current&&e.current&&s.selectedElement&&i))return;e.current.hasPointerCapture(A.pointerId)||e.current.setPointerCapture(A.pointerId);const o=t.current.getBoundingClientRect(),r=new(0,at.GroupCommand)(Ee(A,E.layoutState.layout,i,o,s.elementEvent,f,n));r.sequenceId=B,a(r)}),[E.layoutState.elements,E.layoutState.layout,s.elementEvent,t,s.selectedElement,e,f,a]),M=(0,C.useCallback)((t=>{r(new Ae({elementEvent:t}))}),[r]),F=(0,C.useCallback)((()=>{r(new Ae({elementEvent:void 0})),B&&h&&(l(B,h),d(void 0),w(void 0))}),[r,B,h,l]),v=(0,C.useCallback)(((t,e)=>{let A=s.zoom;const n=s.maxZoom,o=s.selectedElement,c=s.activeModifierKeys;if((c.includes(ge.AltLeft)||c.includes(ge.AltRight))&&(t.code===ge.Equal||t.code===ge.Minus)){const e=.05*n;t.code===ge.Equal?r(new Ae({zoom:A+e<=n?A+=e:A})):r(new Ae({zoom:A-e>=Ce?A-e:A}))}const g=E.layoutState.elements.find((t=>t.id===o));if(o&&g){if(t.code===ge.MetaLeft||t.code===ge.ControlLeft||t.code===ge.MetaRight||t.code===ge.ControlRight){const e=t.code,A=s.activeModifierKeys;if(!A.includes(e))return r(new Ae({activeModifierKeys:A.concat(e)}))}if(t.code===ge.ArrowDown||t.code===ge.ArrowUp||t.code===ge.ArrowLeft||t.code===ge.ArrowRight){r(new Ae({elementEvent:{type:re.Translate}}));const A=Be(t.code,g,s.units,e);a(A),r(new Ae({elementEvent:void 0}))}t.code!==ge.Delete&&t.code!==ge.Backspace||"advanced"!==i||(r(new Ae({selectedElement:void 0})),a(new(0,at.DeleteElementCommand)(g.id)))}}),[a,r,E.layoutState.elements,i,s.activeModifierKeys,s.maxZoom,s.selectedElement,s.units,s.zoom]),Y=(0,C.useCallback)((t=>{if(t.code===ge.MetaLeft||t.code===ge.ControlLeft||t.code===ge.MetaRight||t.code===ge.ControlRight){const e=s.activeModifierKeys,A=t.code;r(new Ae({activeModifierKeys:e.filter((t=>t!==A))}))}}),[r,s.activeModifierKeys]);return{guidelines:f,scale:m,zoomableElementRef:A,setElementEvent:M,handleZoom:u,handleKeyDown:v,handleKeyUp:Y,handlePointerPressedBackground:I,handlePointerReleased:F,handlePointerMove:y,handleScroll:x,handleSequenceStart:D}};wt=et("gxilN"),ie=et("aIqAQ"),Xt=et("aATGG");const pe=e=>{const{x:A,y:n,cursorStyle:i,onPointerDown:a,handleClass:o,cornerRadius:s,color:r,strokeWidth:c}=e;return(0,t.jsx)("circle",{className:o,cx:A,cy:n,r:s,fill:"#ffffff",style:{cursor:i},stroke:r,strokeWidth:c,onPointerDown:a})},me=e=>{const{x:A,y:n,width:i,height:a,cursorStyle:o,onPointerDown:s,edgeHandleRadius:r,color:c,strokeWidth:g}=e;return(0,t.jsx)("rect",{x:A,y:n,width:i,height:a,rx:r,fill:"#ffffff",style:{cursor:o},stroke:c,strokeWidth:g,onPointerDown:s})},fe=e=>{const{color:A,elementHeight:n,elementWidth:i,onBeginResize:a,rotation:o,scaleFactor:s,disableX:r,disableY:c}=e,g=7.5*s,l=3*s,B=28*s,d=6*s,h=1.2*s,w=n-2*g,E=(0,C.useCallback)(((t,e,A)=>{t.stopPropagation(),a(e,A)}),[a]),u=(0,C.useCallback)((t=>E(t,(0,ie.currentDirection)(Xt.ScaleAxis.West,360-o),Xt.ScaleAxis.West)),[E,o]),Q=(0,C.useCallback)((t=>E(t,(0,ie.currentDirection)(Xt.ScaleAxis.East,360-o),Xt.ScaleAxis.East)),[E,o]),p=(0,C.useCallback)((t=>E(t,(0,ie.currentDirection)(Xt.ScaleAxis.North,360-o),Xt.ScaleAxis.North)),[E,o]),m=(0,C.useCallback)((t=>E(t,(0,ie.currentDirection)(Xt.ScaleAxis.South,360-o),Xt.ScaleAxis.South)),[E,o]),f=(0,C.useCallback)((t=>E(t,Xt.ScaleAxis.Northwest,Xt.ScaleAxis.Northwest)),[E]),D=(0,C.useCallback)((t=>E(t,Xt.ScaleAxis.Northeast,Xt.ScaleAxis.Northeast)),[E]),I=(0,C.useCallback)((t=>E(t,Xt.ScaleAxis.Southwest,Xt.ScaleAxis.Southwest)),[E]),x=(0,C.useCallback)((t=>E(t,Xt.ScaleAxis.Northeast,Xt.ScaleAxis.Southeast)),[E]),y=B<=w;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(pe,{x:0,y:0,cursorStyle:"nwse-resize",onPointerDown:f,handleClass:"cornerNorthWest",cornerRadius:g,color:A,strokeWidth:h}),y?(0,t.jsx)(pe,{x:i,y:0,cursorStyle:"nesw-resize",onPointerDown:D,handleClass:"cornerNorthEast",cornerRadius:g,color:A,strokeWidth:h}):void 0,y?(0,t.jsx)(pe,{x:i,y:n,cursorStyle:"nwse-resize",onPointerDown:x,handleClass:"cornerSouthEast",cornerRadius:g,color:A,strokeWidth:h}):void 0,y?(0,t.jsx)(pe,{x:0,y:n,cursorStyle:"nesw-resize",onPointerDown:I,handleClass:"cornerSouthWest",cornerRadius:g,color:A,strokeWidth:h}):void 0,y&&!r?(0,t.jsx)(me,{x:-d/2,y:n/2-B/2,width:d,height:B,onPointerDown:u,edgeHandleRadius:l,cursorStyle:"ew-resize",color:A,strokeWidth:h}):void 0,y&&!c?(0,t.jsx)(me,{x:i/2-B/2,y:n-d/2,width:B,height:d,onPointerDown:m,edgeHandleRadius:l,cursorStyle:"ns-resize",color:A,strokeWidth:h}):void 0,r?void 0:(0,t.jsx)(me,{x:i-d/2,y:n/2-Math.min(B,.8*n)/2,width:d,height:Math.min(B,.8*n),onPointerDown:Q,edgeHandleRadius:l,cursorStyle:"ew-resize",color:A,strokeWidth:h}),y&&!c?(0,t.jsx)(me,{x:i/2-B/2,y:-d/2,width:B,height:d,onPointerDown:p,edgeHandleRadius:l,cursorStyle:"ns-resize",color:A,strokeWidth:h}):void 0]})},De=e=>{const{color:A,elementWidth:n,onBeginRotate:i,scaleFactor:a}=e,o=(0,C.useCallback)((t=>{t.stopPropagation(),i()}),[i]),s=10*a,r=1.2*a;return(0,t.jsxs)("g",{children:[(0,t.jsx)("circle",{cx:n/2,cy:-2.5*s,r:1.3*s,fill:"rgba(0, 0, 0, 0.5)",opacity:.4,style:{cursor:"ew-resize"},onPointerDown:o}),(0,t.jsx)("circle",{cx:n/2,cy:-2.5*s,r:s,fill:"#fff",style:{cursor:"ew-resize"},stroke:A,strokeWidth:r,onPointerDown:o}),(0,t.jsxs)("svg",{x:n/2-s,y:-2.5*s-s,xmlns:"http://www.w3.org/2000/svg",style:{cursor:"ew-resize"},height:2*s,viewBox:"0 0 24 24",width:2*s,fill:A,onPointerDown:o,children:[(0,t.jsx)("path",{d:"M0 0h24v24H0z",fill:"none"}),(0,t.jsx)("path",{d:"M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z"})]})]})},Ie=e=>{const{color:A,height:n,highlighted:i,id:a,immutable:o,onBeginMove:s,onBeginResize:r,onBeginRotate:c,onPointerEnter:g,onPointerLeave:l,onSelected:B,pressed:d,rotation:h,scaleFactor:w,selected:E,width:u,x:Q,y:p,disableX:m,disableY:f}=e,D=1.2*w,I=(0,C.useCallback)((t=>{2===t.button&&(t.stopPropagation(),B(a,t)),0===t.button&&(t.stopPropagation(),!E&&B(a,t),s())}),[a,E,B,s]),x=(0,C.useCallback)((()=>{g(a)}),[a,g]),y=(0,C.useCallback)((()=>{l(a)}),[a,l]),M=o?void 0:E?d?"grabbing":"grab":"pointer",F=o?"none":"visibleFill";return(0,t.jsxs)("g",{transform:`translate(${Q}, ${p}) rotate(${h} ${u/2} ${n/2})`,children:[(0,t.jsx)("rect",{className:"interactableInnerRect",width:u,height:n,stroke:E||i?A:"none",pointerEvents:F,fill:"none",strokeWidth:D,style:{cursor:M},onPointerDown:o?void 0:I,onPointerEnter:o?void 0:x,onPointerLeave:o?void 0:y}),E&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(De,{color:A,elementWidth:u,onBeginRotate:c,scaleFactor:w}),(0,t.jsx)(fe,{color:A,elementHeight:n,elementWidth:u,rotation:h,scaleFactor:w,onBeginResize:r,disableX:m,disableY:f})]})]})},xe=({primaryColor:e,containerHeight:A,containerWidth:n,customViewbox:i,editorRef:a,elementEvent:o,guidelines:s,layoutHeight:r,layoutWidth:c,targetedElements:g,scale:l,selectedElement:B,onElementEvent:d,onElementSelected:h,onSequenceStart:w})=>{const{state:E}=ne(),{getLayoutById:u}=Wt(),Q=u(E.layoutId),[p,m]=(0,C.useState)(void 0),f=(0,C.useCallback)((t=>{m(t)}),[]),D=(0,C.useCallback)((t=>{p===t&&m(void 0)}),[p]),I=(0,C.useCallback)((()=>{w(),d({type:re.Translate})}),[d]),x=(0,C.useCallback)(((t,e)=>{w(),d({type:re.Resize,relativeAxis:t,screenAxis:e})}),[d]),y=(0,C.useCallback)((()=>{w(),d({type:re.Rotate})}),[d]),M=i||{x:0,y:0,width:c,height:r},F=l*(Math.sqrt(M.width*M.height)/1e3)*(100/Math.sqrt(A*n))*Math.sqrt((v=n/A,Math.exp(Math.abs(Math.log(v)))));var v;const Y=Q.layoutState.elements.findIndex((({id:t})=>t===B)),S=[...Q.layoutState.elements];return Y>=0&&S.push(S.splice(Y,1)[0]),(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",style:{touchAction:"none",position:"absolute",maxWidth:"100%",maxHeight:"100%"},width:"100%",height:"100%",viewBox:`${M.x} ${M.y} ${M.width} ${M.height}`,overflow:"overlay",children:[(0,t.jsx)("rect",{fill:"none",stroke:"none",ref:a,width:c,height:r}),s.map((t=>t.svgNode)),S.map((A=>{const n=void 0!==B&&A.id===B,i=n&&void 0!==o,a=void 0!==p&&A.id===p;return(0,t.jsx)(Ie,{color:e,id:A.id,selected:n,highlighted:a,pressed:i,x:A.x,y:A.y,disableX:A.type===wt.LayoutElementType.Frame,disableY:A.type===wt.LayoutElementType.Textbox||A.type===wt.LayoutElementType.Frame,width:A.width,height:A.height,rotation:A.rotation,immutable:A.immutable||g&&!g.includes(A.id),onSelected:h,onBeginMove:I,onBeginResize:x,onBeginRotate:y,onPointerEnter:f,onPointerLeave:D,scaleFactor:F},A.id)}))]})},ye=e=>{const{color:A,editorRef:n,zoomableElementRef:i,interactionElementRef:a,guidelines:o,isMakingAdjustments:s,viewmask:r,visibleLayoutId:c,xTranslation:g,yTranslation:l,targetedElements:B,borderRadius:d,handleContextMenu:h,handleKeyDown:w,handleKeyUp:E,handlePointerMove:u,handlePointerPressedBackground:Q,handlePointerReleased:p,handleScroll:m,onSequenceStart:f,setElementEvent:D,onElementSelected:I}=e,{getLayoutById:x}=Wt(),y=x(c),M=y.layoutState,{state:F}=ne(),v=(0,C.useCallback)((t=>{if(r){const e={left:r.x,top:r.y,width:r.width,height:r.height,panelId:"",rotation:0};return w(t,e)}return w(t)}),[w,r]),Y=(0,C.useCallback)((t=>{if(r){const e={left:r.x,top:r.y,width:r.width,height:r.height,panelId:"",rotation:0};return u(t,e)}return u(t)}),[u,r]);return(0,t.jsx)("div",{style:{justifyContent:"center",position:"relative",height:"100%",width:"100%",scrollbarWidth:"none",outline:"none"},onContextMenu:h,onKeyDown:v,onKeyUp:E,onPointerDown:Q,onPointerMoveCapture:Y,onPointerUp:p,onWheelCapture:m,ref:a,tabIndex:-1,children:(0,t.jsxs)("div",{ref:i,style:{height:"100%",transform:`scale(${F.zoom}) translate(${g}px, ${l}px)`,display:"grid",filter:"drop-shadow(rgba(0, 0, 0, 0.2) 0px 0px 6px)"},children:[e.children,y.getComponentWithProps({height:s?"100%":"auto",maxHeight:"100%",maxWidth:"100%",position:"absolute",viewmask:r,width:s?"100%":"auto",borderRadius:d}),(0,t.jsx)(xe,{primaryColor:A,containerHeight:i.current?.offsetHeight||1024,containerWidth:i.current?.offsetWidth||1024,editorRef:n,elementEvent:F.elementEvent,guidelines:o,layoutHeight:M.layout.height,layoutWidth:M.layout.width,onElementEvent:D,onSequenceStart:f,onElementSelected:I,scale:10/F.zoom,selectedElement:F.selectedElement,targetedElements:B})]})})};wt=et("gxilN");const Me=({color:e,borderRadius:A,guidelineColor:n,handleContextMenu:i,onElementSelected:a})=>{const{commandDispatcher:o,getLayoutById:s}=Wt(),{state:r,uiDispatcher:c}=ne(),g=(0,C.useRef)(null),l=(0,C.useRef)(null),B=(0,C.useRef)(null),{guidelines:d,handleKeyDown:h,handleKeyUp:w,handlePointerMove:E,handlePointerPressedBackground:u,handlePointerReleased:Q,handleScroll:p,handleSequenceStart:m,setElementEvent:f}=Qe(g,l,B,void 0,"advanced",o,n),D=(0,C.useCallback)(((t,e)=>{const A=s(r.layoutId).layoutState.elements.find((e=>e.id===t));if(t&&A&&A.type===wt.LayoutElementType.Textbox){const e=A.algorithm;(!e||e===wt.TextAlgorithm.Autosize)&&o(new(0,at.FontAlgorithmCommand)(t,wt.TextAlgorithm.Traditional))}a&&a(t,e),c(new Ae({selectedElement:t}))}),[o,s,r.layoutId,c]);return(0,t.jsx)(ye,{color:e,editorRef:g,interactionElementRef:l,zoomableElementRef:B,guidelines:d,visibleLayoutId:r.layoutId,xTranslation:0,yTranslation:0,borderRadius:A,handleContextMenu:i,handleKeyDown:h,handleKeyUp:w,handlePointerMove:E,handlePointerPressedBackground:u,handlePointerReleased:Q,handleScroll:p,onSequenceStart:m,setElementEvent:f,onElementSelected:D})};function Fe(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}const ve=new class{constructor(){Fe(this,"server",void 0),Fe(this,"cache",new Map),Fe(this,"materialCache",new Map),Fe(this,"loadImageAsFileInfo",(async t=>{const e=await t.arrayBuffer(),A=await(0,Nt.getAttributesFromArrayBuffer)(e);return{name:t.name.substring(t.name.lastIndexOf("/")+1),blob:((t,e)=>{let A=atob(t.split(",")[1]),n=[];for(let t=0;t<A.length;t++)n.push(A.charCodeAt(t));return new Blob([new Uint8Array(n)],{type:e})})(A.dataUrl,t.type)}})),this.server=zt}async getLocalOrFromServer(t){if(this.cache.has(t))return this.cache.get(t);const e=(async()=>(await zt.execute("getAssetByKeyV2",{assetKey:t.replace(/\//g,"_")})).body)();return this.cache.set(t,e),e}async getMaterialLocalOrFromServer(t){if(this.materialCache.has(t))return this.materialCache.get(t);const e=(async()=>(await zt.execute("getMaterialV2",{id:t})).body)();return this.materialCache.set(t,e),e}async uploadAssetWithProgress(t,e,A,n,i,a){const o=await this.dispatchCreateAssetRequest(t,e,i,a);var s=new XMLHttpRequest;return s.open("PUT",o.assetResponse.uploadUrl,!0),s.setRequestHeader("Content-Type",o.mimeType),s.setRequestHeader("Cache-Control","public,max-age=31536000,immutable"),s.upload.onprogress=t=>{t.lengthComputable&&A(100*t.loaded/t.total)},s.onload=()=>{const t=o.assetResponse.asset;n(t)},s.onerror=()=>{console.warn("Asset upload failed")},s.send(t.blob),o.assetResponse.asset}async dispatchCreateAssetRequest(t,e,A,n){const i=t.blob.type?t.blob.type:this.guessMIME(t.name);return{assetResponse:(await this.server.execute("createAsset",{assetDetails:{name:t.name,type:e,mimeType:i,storageOwnerId:n,userAnonymous:!0}},A)).body,mimeType:i}}guessMIME(t){const e=t.split(".").pop();switch(e){case"glb":return"model/gltf-binary";case"ttf":return"font/ttf";case"mkv":return"video/x-matroska";default:throw new Error("Unexpected mimetype: "+e)}}};class Ye{get(t){return localStorage.getItem(t)||void 0}set(t,e){localStorage.setItem(t,e)}remove(t){localStorage.removeItem(t)}getMap(t){const e=this.get(t);if(e)return new Map(JSON.parse(e))}setMap(t,e){const A=JSON.stringify([...e.entries()]);this.set(t,A)}}class Se{constructor(){var t,e,A;t=this,e="storage",A=new Map,e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A}get(t){return this.storage.get(t)||void 0}set(t,e){this.storage.set(t,e)}remove(t){this.storage.delete(t)}getMap(t){const e=this.get(t);if(e)return new Map(JSON.parse(e))}setMap(t,e){const A=JSON.stringify([...e.entries()]);this.set(t,A)}}const Ne=(()=>{try{return localStorage?new Ye:new Se}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new Se}})();class Re{static getDynamicTextureResolution(){return this.getIsMobile()||!Re.offscreenRenderingSupported()?{width:1024,height:1024}:{width:2048,height:2048}}static shouldMipMap(){return!0}static offscreenRenderingSupported(){return!navigator.userAgent.includes("SamsungBrowser")&&(!!window.Worker&&!!window.OffscreenCanvas)}static getMirrorTextureResolution(){return this.getIsMobile()?512:1024}static getIsMobile(){return window.innerWidth<=480}}x.GLTF2.GLTFLoader.RegisterExtension("glbPostProcessor",(function(t){return new He(t)})),p.SceneLoader.OnPluginActivatedObservable.add((t=>{if("gltf"===t.name){const e=t;e.useRangeRequests=!0,e.transparencyAsCoverage=!0}}));class He{constructor(t){this.name="glbPostProcessor",this.enabled=!0,this.loader=t}onReady(){this.applyReflections(this.loader.babylonScene)}loadNodeAsync(t,e,A){return this.loader.loadNodeAsync(t,e,(function(t){e.extras&&Object.keys(e.extras).forEach((A=>{const n=e.extras[A];t.metadata[A]=n})),A(t)}))}loadMaterialPropertiesAsync(t,e,A){return this.enableMaterialExtrasIfRequired(e,A),this.loader.loadMaterialPropertiesAsync(t,e,A)}dispose(){}enableMaterialExtrasIfRequired(t,e){if(t.extras&&e instanceof m.PBRMaterial){if(t.extras.sheen){const A=e;A.sheen.isEnabled=!0,A.sheen.intensity=t.extras.sheen}if(t.extras.translucency){const A=e;A.subSurface.isTranslucencyEnabled=!0,A.subSurface.translucencyIntensity=t.extras.translucency,t.extras.translucencyR&&t.extras.translucencyG&&t.extras.translucencyB&&(A.subSurface.tintColor=new(0,D.Color3)(t.extras.translucencyR,t.extras.translucencyG,t.extras.translucencyB))}if(t.extras.useDepthPrePass){const t=e;t.needDepthPrePass=!0,t.forceIrradianceInFragment=!0}if(t.extras.useParallax){const A=e;A.useParallax=!0,A.useParallaxOcclusion=!0,A.parallaxScaleBias=t.extras.useParallax}}}applyReflections(t){function e(t){const e=[];return t.transformNodes.forEach((t=>{t.metadata&&t.metadata.reflective&&e.push(...t.getChildMeshes())})),t.meshes.forEach((t=>{t.metadata&&t.metadata.reflective&&!e.includes(t)&&e.push(t)})),e}t.meshes.forEach((A=>{const n=A.metadata;n&&(n.mirrorTexture&&function(A,n=1){const i=A.material;if(!i)return;const a=new(0,f.MirrorTexture)("mirror",Re.getMirrorTextureResolution(),t,!0);a.renderList=e(t);const o=A.getVerticesData("normal");if(!o)throw new Error("Mirror attribute specified on: "+A.name+"But no normals exist to generate a mirror from!");A.computeWorldMatrix(!0);const s=A.getWorldMatrix(),r=D.Vector3.TransformNormal(new(0,D.Vector3)(o[0],o[1],o[2]),s).normalize(),c=D.Plane.FromPositionAndNormal(A.position,r.scale(-1));a.mirrorPlane=c,a.level=n,i.reflectionTexture=a}(A,n.mirrorTexture),n.reflectionProbe&&function(A){const n=A.material,i=new(0,I.ReflectionProbe)("probe-"+n.name,128,t);i.attachToMesh(A),i.renderList&&i.renderList.push(...e(t)),n.reflectionTexture=i.cubeTexture}(A))}))}}var Ue,be,Pe,Ge;(be=Ue||(Ue={}))[be.Orbit=0]="Orbit",be[be.Pan=1]="Pan",(Ge=Pe||(Pe={})).None="None",Ge.RemoveWhenSelected="RemoveWhenSelected",Ge.ApplyWhenSelected="ApplyWhenSelected";var Oe={};Z(Oe,"SpiffCommerce3DPreviewService",(()=>gA),(t=>gA=t)),Z(Oe,"createBaseModel",(()=>lA),(t=>lA=t));var ke={};Z(ke,"getAssetContainer",(()=>Te),(t=>Te=t));var Je=function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))};const Le=new Map;function Te(t,e,A){return Je(this,void 0,void 0,(function*(){return new Promise(((n,i)=>{const a=Le.get(t);if(a&&a.scene.uid===e.uid)return n(a);p.SceneLoader.LoadAssetContainerAsync(t,void 0,e,A).then((e=>{Le.set(t,e),n(e)})).catch(i)}))}))}class je{constructor(t){this.getSceneClearColor=()=>{var t;const e=(null===(t=this.customOptions)||void 0===t?void 0:t.backgroundImage)?0:1;if(this.customOptions&&this.customOptions.backgroundImage)return new(0,H.Color4)(0,0,0,e).toLinearSpace();if(this.customOptions&&this.customOptions.backgroundColor){const t=H.Color3.FromHexString(this.customOptions.backgroundColor);return new(0,H.Color4)(t.r,t.g,t.b,e).toLinearSpace()}return new(0,H.Color4)(.98,.98,.98,e).toLinearSpace()},this.highlightColorFromConfig=()=>this.customOptions&&this.customOptions.highlightColor?this.hexToColor4(this.customOptions.highlightColor):new(0,H.Color4)(.98,.98,.98,1).toLinearSpace(),this.hexToColor4=(t,e=1)=>{const A=H.Color3.FromHexString(t);return new(0,H.Color4)(A.r,A.g,A.b,e).toLinearSpace()},this.customOptions=t}get options(){return this.customOptions}get scene(){var t,e,A;return{clearColor:this.getSceneClearColor(),transparentBackground:null===(t=this.customOptions)||void 0===t?void 0:t.backgroundImage,environmentFile:null!==(A=null===(e=this.customOptions)||void 0===e?void 0:e.environmentFile)&&void 0!==A?A:"assets/model-viewer/default.env"}}get camera(){var t,e,A,n,i,a,o,s,r,c,g,l,B,d,h,w;return{autoOrientation:null===(e=null===(t=this.customOptions)||void 0===t?void 0:t.disableAutomaticOrientation)||void 0===e||e,autoRotation:{enabled:null!==(n=null===(A=this.customOptions)||void 0===A?void 0:A.autoRotation)&&void 0!==n&&n,idleTimeMs:null!==(a=null===(i=this.customOptions)||void 0===i?void 0:i.idleTimeBeforeRotation)&&void 0!==a?a:5e3},limits:{min:{alpha:(null===(o=this.customOptions)||void 0===o?void 0:o.lowerAlphaLimitDeg)?(null===(s=this.customOptions)||void 0===s?void 0:s.lowerAlphaLimitDeg)*Math.PI/180:void 0,beta:(null===(r=this.customOptions)||void 0===r?void 0:r.lowerBetaLimitDeg)?(null===(c=this.customOptions)||void 0===c?void 0:c.lowerBetaLimitDeg)*Math.PI/180:void 0,radius:null===(g=this.customOptions)||void 0===g?void 0:g.minZoomOverride},max:{alpha:(null===(l=this.customOptions)||void 0===l?void 0:l.upperAlphaLimitDeg)?(null===(B=this.customOptions)||void 0===B?void 0:B.upperAlphaLimitDeg)*Math.PI/180:void 0,beta:(null===(d=this.customOptions)||void 0===d?void 0:d.upperBetaLimitDeg)?(null===(h=this.customOptions)||void 0===h?void 0:h.upperBetaLimitDeg)*Math.PI/180:void 0,radius:null===(w=this.customOptions)||void 0===w?void 0:w.maxZoomOverride}}}}get highlights(){var t,e;return{enabled:null!==(e=null===(t=this.customOptions)||void 0===t?void 0:t.highlightOnMaterialHover)&&void 0!==e&&e,color:this.highlightColorFromConfig()}}}function ze(t,e,A){e.forEach((e=>{const n=e.getID(),i=e.getName(),a=Re.getDynamicTextureResolution();t.materials.filter((t=>t.name===i)).forEach((o=>{const s=A.get(n);if(s)Ke(o,s),s.update(false);else{const s=function(t,e,A,n){const i=new(0,R.DynamicTexture)(t,{width:A,height:n},e,Re.shouldMipMap(),k.Texture.TRILINEAR_SAMPLINGMODE,F.Engine.TEXTUREFORMAT_RGBA),a=i.getContext();a&&(a.fillStyle="#f5f5f5",a.fillRect(0,0,A,n),i.update());return i}(i,t,a.width,a.height);A.set(n,s),e.setStaticContext(s.getContext()),Ke(o,s),s.onLoadObservable.addOnce((()=>{s.update(false)}))}}))}))}function Ke(t,e){if(t instanceof m.PBRMaterial){const A=t,n=A.albedoTexture;n?(e.wrapU=n.wrapU,e.wrapV=n.wrapV):(e.wrapU=1,e.wrapV=1),A.albedoTexture=e}else{const A=t,n=A.diffuseTexture;n&&(e.wrapU=n.wrapU,e.wrapV=n.wrapV),A.diffuseTexture=e}}function Ve(t,e,A,n){const i=t.animationGroups,a=t=>t.targetedAnimations.map((t=>t.animation.framePerSecond)).reduce(((t,e)=>t+e),0)/t.targetedAnimations.length||0;void 0===n||void 0===A||n!==A?i.forEach((t=>{t.stop();const i=a(t);t.start(e,1,n*i,A*i)})):i.forEach((t=>{t.stop();const A=a(t),i=n*A;t.start(e,1,i,i)}))}function We(t){t.animationGroups.forEach((t=>{t.stop()}))}function Xe(t,e,A){var n,i,a;t.stopAnimation(e),e.animations=[],Math.abs(e.alpha)>2*Math.PI&&(e.alpha=(n=e.alpha,i=0,a=2*Math.PI,n<i?a-(i-n)%(a-i):i+(n-i)%(a-i)));const o=[],s=A.target,r=s?1:0;if(A.target&&o.push(Ze("cameraTargetLerp","target",(new(0,U.Vector3)).copyFrom(e.target),new(0,U.Vector3)(A.target.x,A.target.y,A.target.z),J.Animation.ANIMATIONTYPE_VECTOR3,0)),o.push(Ze("cameraAlphaLerp","alpha",e.alpha,qe(A.lonDeg),J.Animation.ANIMATIONTYPE_FLOAT,r)),o.push(Ze("cameraBetaLerp","beta",e.beta,qe(A.latDeg),J.Animation.ANIMATIONTYPE_FLOAT,r)),void 0!==A.radius){const t=Math.max(.01,A.radius);o.push(Ze("cameraRadiusLerp","radius",e.radius,t,J.Animation.ANIMATIONTYPE_FLOAT,r))}e.animations.push(...o);const c=e.useAutoRotationBehavior;e.disableAutoRotationBehavior(),t.beginAnimation(e,0,s?120:60,!1,1,(()=>{e.animations=[],c&&e.enableAutoRotationBehavior()}))}function qe(t){return t*Math.PI/180}function Ze(t,e,A,n,i,a=0,o=J.Animation.ANIMATIONLOOPMODE_CONSTANT){const s=new(0,L.QuadraticEase);s.setEasingMode(L.EasingFunction.EASINGMODE_EASEINOUT);const r=new(0,J.Animation)(t,e,60,i,o),c=[];return a>0&&c.push({frame:0,value:A}),c.push({frame:60*a,value:A}),c.push({frame:60*(a+1),value:n}),r.setKeys(c),r.setEasingFunction(s),r}class _e extends T.ArcRotateCamera{constructor(t,e,A,n,i,a,o,s){super(t,e,A,n,i,a,s),this.lastFocus=new(0,U.Vector3)(0,0,0),this.minZ=.01,this.maxZ=1e3*this.radius,this.lowerRadiusLimit=.01*this.radius,this.enableFramingBehavior(),this.upperRadiusLimit=1.5*this.radius,this.wheelPrecision=100/this.radius,this.pinchPrecision=300/this.radius,this.wheelDeltaPercentage=.01,this.pinchDeltaPercentage=.005,this.useNaturalPinchZoom=!0,o.camera.autoOrientation&&(this.alpha+=Math.PI),o&&(o.camera.limits.min.beta&&(this.lowerBetaLimit=o.camera.limits.min.beta),o.camera.limits.max.beta&&(this.upperBetaLimit=o.camera.limits.max.beta),o.camera.limits.min.alpha&&(this.lowerAlphaLimit=o.camera.limits.min.alpha),o.camera.limits.max.alpha&&(this.upperAlphaLimit=o.camera.limits.max.alpha),o.camera.limits.min.radius&&(this.lowerRadiusLimit=o.camera.limits.min.radius),o.camera.limits.max.radius&&(this.upperRadiusLimit=o.camera.limits.max.radius),o.camera.autoRotation.enabled&&this.enableAutoRotationBehavior(o.camera.autoRotation.idleTimeMs))}getFramingBehavior(){return this.getBehaviorByName("Framing")}getAutoRotationBehavior(){const t=this.getBehaviorByName("AutoRotation");return t||void 0}enableFramingBehavior(){this.useFramingBehavior=!0;const t=this.getFramingBehavior();t.attach(this),t.framingTime=0,t.elevationReturnTime=-1,t.zoomStopsAnimation=!1,this.lowerRadiusLimit=null;const e=$e(this._scene);return t.zoomOnBoundingInfo(e.min,e.max),this.wheelPrecision=100/this.radius,null===this.lowerRadiusLimit&&(this.lowerRadiusLimit=.1),this.lastFocus.copyFrom(this.target),t}rerunFramingBehavior(t){const e=this.getFramingBehavior();e.framingTime=800;const A=$e(this._scene);e.zoomOnBoundingInfo(A.min,A.max,void 0,(()=>{t()})),e.framingTime=0}enableAutoRotationBehavior(t=5e3){this.useAutoRotationBehavior=!0;const e=this.getAutoRotationBehavior();e&&(e.idleRotationWaitTime=t)}disableAutoRotationBehavior(){this.useAutoRotationBehavior=!1}static create(t,e){t.activeCamera&&(t.activeCamera.dispose(),t.activeCamera=null);const A=$e(t),n=A.max.subtract(A.min),i=A.min.add(n.scale(.5)),a=new _e("ProductCamera",-Math.PI/2,Math.PI/2,1.5*n.length(),i,t,e);return a.panningInertia=0,a.panningOriginTarget.copyFrom(i),a.onAfterCheckInputsObservable.add((()=>{a.panningSensibility=1e3/n.length()})),t.activeCamera=a,a}}function $e(t){const e=t.meshes.filter((t=>t.name.toLowerCase().endsWith("_t")||t.name.toLowerCase().includes("_t_")));return t.getWorldExtends((t=>t.isVisible&&t.isEnabled()&&(0===e.length||e.includes(t))))}var tA={};Z(tA,"default",(()=>aA),(t=>aA=t));const eA={albedoTexture:"albedoMapKey",bumpTexture:"normalMapKey",ambientTexture:"ambientMapKey",emissiveTexture:"emissionMapKey",opacityTexture:"alphaMapKey",metallicTexture:"metallicMapKey",refractionTexture:"refractionMapKey"};function AA(t,e,A,n){["albedoTexture","bumpTexture","ambientTexture","emissiveTexture","opacityTexture","metallicTexture","refractionTexture"].forEach((i=>{!function(t,e,A,n,i){const a=eA[t];if(!a)throw new Error("Unexpected texture name encountered.");const o=e[a];o?n.addTextureTask(t,o,!1,!1):i&&A[t]&&(A[t]&&A[t].dispose(),A[t]=null,function(t,e){"opacityTexture"===t&&(e.useAlphaFromAlbedoTexture=!0);"metallicTexture"===t&&(e.useRoughnessFromMetallicTextureAlpha=!1,e.useRoughnessFromMetallicTextureGreen=!1,e.useMetallnessFromMetallicTextureBlue=!1);"refractionTexture"===t&&(e.subSurface.isRefractionEnabled=!1,e.subSurface.refractionIntensity=1)}(t,A))}(i,t,e,A,n)})),function(t,e){if(!t.clearCoat)return;t.clearCoat===Pe.RemoveWhenSelected?(e.clearCoat.isEnabled=!1,e.clearCoat.indexOfRefraction=1.5):t.clearCoat===Pe.ApplyWhenSelected&&(e.clearCoat.isEnabled=!0,e.clearCoat.indexOfRefraction=t.clearCoatIOR||e.clearCoat.indexOfRefraction)}(t,e)}function nA(t,e,A,n){"opacityTexture"===t&&(e.useAlphaFromAlbedoTexture=!1),"metallicTexture"===t&&(e.useRoughnessFromMetallicTextureAlpha=!1,e.useRoughnessFromMetallicTextureGreen=!0,e.useMetallnessFromMetallicTextureBlue=!0),"refractionTexture"===t&&(e.subSurface.isRefractionEnabled=!0,e.subSurface.refractionIntensity=A.refractionIntensity||1),e[t]=n}var iA=function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))};class aA{constructor(){this.materialVariantMap=new Map,this.keysThatRemovedBaseModel=[],this.loadedContainerForKey=new Map}applyMaterial(t,e,A,n,i){return iA(this,void 0,void 0,(function*(){return new Promise((a=>{const o=t.materials.filter((t=>t.name===e)),s=this.materialVariantMap.get(e);if(this.materialVariantMap.set(e,Object.assign(Object.assign({},s),A)),0===o.length)return void a(void 0);const r=new(0,j.AssetsManager)(t);r.useDefaultLoadingScreen=!1,o.forEach((t=>AA(A,t,r,i))),r.onProgress=(t,e,A)=>{n&&n(t/e*100,100,A.name)},r.onFinish=t=>{t.forEach((t=>{const e=t;n&&n(100,100,t.name),o.forEach((n=>nA(t.name,n,A,e.texture)))})),a(void 0)},r.loadAsync()}))}))}applyModel(t,e,A,n,i){var a,o;return iA(this,void 0,void 0,(function*(){if(n&&A&&!this.keysThatRemovedBaseModel.includes(e)&&this.keysThatRemovedBaseModel.push(e),!n){const A=this.keysThatRemovedBaseModel.includes(e);return null===(a=this.loadedContainerForKey.get(e))||void 0===a||a.removeAllFromScene(),t&&A&&(yield(0,Oe.createBaseModel)(t.metadata.baseModel,t)),Promise.resolve()}const s=yield(0,ke.getAssetContainer)(n,t,i);if(this.loadedContainerForKey.has(e)&&(null===(o=this.loadedContainerForKey.get(e))||void 0===o||o.removeAllFromScene()),A){(yield(0,ke.getAssetContainer)(t.metadata.baseModel,t)).removeAllFromScene()}s.addAllToScene(),this.loadedContainerForKey.set(e,s);const r=[];this.materialVariantMap.forEach(((e,A)=>iA(this,void 0,void 0,(function*(){r.push(this.applyMaterial(t,A,e))})))),yield Promise.all(r)}))}}var oA={};Z(oA,"default",(()=>rA),(t=>rA=t));var sA=function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))};var rA=(t,e)=>sA(void 0,void 0,void 0,(function*(){const t=yield e.createDefaultXRExperienceAsync({uiOptions:{sessionMode:"immersive-ar",referenceSpaceType:"local-floor",onError:t=>{console.log(t)}}}),A=t.baseExperience.featuresManager.enableFeature(z.WebXRHitTest.Name,"latest",{disablePermanentHitTest:!0,enableTransientHitTest:!0,useReferenceSpace:!0});let n=null;A.onHitTestResultObservable.add((t=>{n=t.length?t[0]:void 0})),e.onPointerDown=()=>{if(n&&t.baseExperience.state===K.WebXRState.IN_XR){const t=e.getNodeByName("__root__");n.transformationMatrix.decompose(void 0,t.rotationQuaternion,t.position)}}})),cA=function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))};class gA{constructor(t,e){this.loadProgress=new Map([["initialScene",0]]),this.materialReadyToLoadCallbacks=new Map,this.modelReadyToLoadCallbacks=new Map,this.focusLostNotified=!1,this.loadObservable=new(0,P.Observable),this.focusLostObservable=new(0,P.Observable),this.dynamicTextures=new Map,this.variantManager=new(0,tA.default),this.configuration=new je(e);b.DracoCompression.Configuration={decoder:{wasmUrl:"https://www.gstatic.com/draco/versioned/decoders/1.5.3/draco_wasm_wrapper_gltf.js",wasmBinaryUrl:"https://www.gstatic.com/draco/versioned/decoders/1.5.3/draco_decoder_gltf.wasm",fallbackUrl:"https://www.gstatic.com/draco/versioned/decoders/1.5.3/draco_decoder_gltf.js"}},t&&(t.getContext("webgl2")||t.getContext("webgl"));const A=console.log;console.log=()=>{};const n=t?new(0,F.Engine)(t,!0,{premultipliedAlpha:!1,preserveDrawingBuffer:!!(null==e?void 0:e.backgroundImage),audioEngine:!1,stencil:this.configuration.highlights.enabled,forceSRGBBufferSupportState:!0}):new(0,v.NullEngine);console.log=A,n.hideLoadingUI(),window.addEventListener("resize",this.fireResizeEvent.bind(this)),this.engine=n,this.scene=new(0,O.Scene)(n)}registerFocusLostListener(t){this.focusLostObservable.add(t)}unregisterFocusLostListener(t){this.focusLostObservable.removeCallback(t)}registerLoadProgressListener(t){this.loadObservable.add(t),t(this.getLoadListenerEvent())}unregisterLoadProgressListener(t){this.loadObservable.removeCallback(t)}registerView(t){const e=t.height,A=t.width;this.engine.registerView(t),t.setAttribute("height",e.toString()),t.setAttribute("width",A.toString()),this.orbitEnabled()||this.setCameraState(Ue.Pan)}getNumViewports(){var t;return(null===(t=this.engine.views)||void 0===t?void 0:t.length)||0}unregisterView(t){this.engine.unRegisterView(t),this.engine.inputElement=null}shutdown(){this.engine&&this.engine.dispose(),window.removeEventListener("resize",this.fireResizeEvent)}getSceneInitializationProgress(){return this.loadProgress.get("initialScene")}initialize(t,e){return cA(this,void 0,void 0,(function*(){if(this.scene.clearColor=this.configuration.scene.clearColor,this.scene.metadata={baseModel:t},this.scene.environmentTexture=N.CubeTexture.CreateFromPrefilteredData(this.configuration.scene.environmentFile,this.scene),t){const e=99;yield lA(t,this.scene,(t=>{this.loadProgress.set("initialScene",t.loaded*e/t.total),this.notifyLoadHandlers()}))}this.configuration.highlights.enabled&&this.scene.meshes.forEach((t=>{"targetcube_t"!==t.name&&"backgroundShell"!==t.name&&(t.isPickable=!0,t.actionManager||(t.actionManager=new(0,y.ActionManager)(this.scene)),t.actionManager.registerAction(new(0,M.ExecuteCodeAction)(y.ActionManager.OnPointerOutTrigger,(()=>{this.setHighlights([])}))),t.actionManager.registerAction(new(0,M.ExecuteCodeAction)(y.ActionManager.OnPointerOverTrigger,(t=>{if(t.meshUnderPointer){const e=t.meshUnderPointer.material;e&&this.setHighlights([e])}}))))}));const A=_e.create(this.scene,this.configuration),n=(null==e?void 0:e.getAll())||new Map;ze(this.scene,n,this.dynamicTextures);if(this.scene.materials.some((t=>"emissiveTexture"in t&&null!==t.emissiveTexture))){new(0,Y.GlowLayer)("GlowLayer",this.scene).intensity=.5}We(this.scene),this.engine.runRenderLoop((()=>{if(!this.engine.views)return;const t=this.engine.views[0],e=this.engine.inputElement;(!e||t&&e&&e.id!==t.target.id)&&this.reattachControls(t.target),n.forEach(((t,e)=>{const A=this.dynamicTextures.get(e);A&&t.getStaticContextDirty()&&A.isReady()&&(A.update(!1),t.setStaticContextDirty(!1))})),this.configuration.scene.transparentBackground&&this.engine.views.forEach((t=>{const e=this.engine.getRenderingCanvas();t.target.getContext("2d").clearRect(0,0,e.width,e.height)})),this.scene.render(),100!==this.getSceneInitializationProgress()&&(this.loadProgress.set("initialScene",100),this.materialReadyToLoadCallbacks.forEach(((t,e)=>{t.forEach(((t,A)=>{this.applyMaterialVariant(e,A,t)}))})),this.materialReadyToLoadCallbacks.clear(),this.modelReadyToLoadCallbacks.forEach((t=>{t(this.scene)})),this.modelReadyToLoadCallbacks.clear(),this.queuedModelAnimation&&(this.executeModelAnimation(this.queuedModelAnimation),this.queuedModelAnimation=void 0),this.queuedCameraAnimation&&(this.executeCameraAnimation(this.queuedCameraAnimation),this.queuedCameraAnimation=void 0),this.notifyLoadHandlers()),A.target.equalsWithEpsilon(A.lastFocus,.1)||this.focusLostNotified||(this.focusLostObservable.notifyObservers(void 0),this.focusLostNotified=!0)}))}))}executeModelAnimation(t){100===this.getSceneInitializationProgress()?Ve(this.scene,t.loop,t.to,t.from):this.queuedModelAnimation=t}executeCameraAnimation(t){100===this.getSceneInitializationProgress()&&this.scene.activeCamera?Xe(this.scene,this.scene.activeCamera,t):this.queuedCameraAnimation=t}getCameraPose(){if(this.scene){const t=this.scene.activeCamera;if(t)return{lonDeg:Math.round(180*t.alpha/Math.PI),latDeg:Math.round(180*t.beta/Math.PI),radius:Math.round(1e4*(t.radius+Number.EPSILON))/1e4,target:{x:t.target.x,y:t.target.y,z:t.target.z}}}}setCameraPose(t){if(this.scene){const e=this.scene.activeCamera;e&&(e.target=new(0,U.Vector3)(t.target.x,t.target.y,t.target.z),e.radius=t.radius,e.alpha=t.latDeg,e.beta=t.lonDeg)}}applyMaterialVariant(t,e,A,n){return cA(this,void 0,void 0,(function*(){if(100===this.getSceneInitializationProgress())yield this.variantManager.applyMaterial(this.scene,t,A,((t,e,A)=>{this.loadProgress.set(`key_${A}`,t/e*100),this.notifyLoadHandlers()}),n);else if(this.materialReadyToLoadCallbacks.has(t)){const n=this.materialReadyToLoadCallbacks.get(t);null==n||n.set(e,A)}else{this.materialReadyToLoadCallbacks.set(t,new Map);const n=this.materialReadyToLoadCallbacks.get(t);null==n||n.set(e,A)}}))}applyModelVariant(t,e,A){return cA(this,void 0,void 0,(function*(){100===this.getSceneInitializationProgress()?(yield this.variantManager.applyModel(this.scene,t,A||!1,e.model,(e=>{this.loadProgress.set(t,100*e.loaded/e.total),this.notifyLoadHandlers()})),this.scene.materials.forEach((t=>{if(t&&0===t.getBindedMeshes().length){const e=t instanceof m.PBRMaterial&&!(t.albedoTexture instanceof R.DynamicTexture);t.dispose(!1,e)}})),ze(this.scene,e.contextService.getAll(),this.dynamicTextures),We(this.scene)):this.modelReadyToLoadCallbacks.set(t,(()=>{this.applyModelVariant(t,e,A)}))}))}setCameraState(t){var e,A;if(!(null===(e=this.engine)||void 0===e?void 0:e.views)||!(null===(A=this.engine)||void 0===A?void 0:A.views[0]))throw new Error("No views attached, camera state requires a view to attach controls onto.");t===Ue.Orbit?this.reattachControls(this.engine.views[0].target,2):this.reattachControls(this.engine.views[0].target,0)}animateToLastCameraFocus(){return new Promise((t=>{const e=this.scene.activeCamera,A=this.configuration;e.rerunFramingBehavior((()=>{this.focusLostNotified=!1,A.camera.limits.min.radius&&(e.lowerRadiusLimit=A.camera.limits.min.radius),A.camera.limits.max.radius&&(e.upperRadiusLimit=A.camera.limits.max.radius),t()}))}))}setAutoRotation(t){const e=this.scene.activeCamera;this.configuration.camera.autoRotation.enabled&&e&&(t?e.enableAutoRotationBehavior(this.configuration.camera.autoRotation.idleTimeMs):e.disableAutoRotationBehavior())}getCurrentConfiguration(){return this.configuration.options}renderSceneScreenshot(t,e){return cA(this,void 0,void 0,(function*(){const A=this.scene.activeCamera;if(!A)throw new Error("Missing product camera, cannot render screenshot!");var n;(n=A).getScene().stopAnimation(n),n.animations=[];const i=A.alpha,a=A.beta,o=A.radius,s=e.latDeg*Math.PI/180,r=e.lonDeg*Math.PI/180;A.alpha=r,A.beta=s,A.radius=e.radius||A.radius;const c=yield G.Tools.CreateScreenshotUsingRenderTargetAsync(this.engine,A,t,"image/png",2,!0);return A.alpha=i,A.beta=a,A.radius=o,c}))}orbitEnabled(){const t=this.configuration;if(!t)return!0;const e=t.camera.limits.min.alpha,A=t.camera.limits.max.alpha,n=t.camera.limits.min.beta,i=t.camera.limits.max.beta;if(void 0===e||void 0===A||void 0===n||void 0===i)return!0;const a=[n,i],o=[e,A].every((t=>t===e)),s=a.every((t=>t===n));return!o&&!s}fireResizeEvent(){this.getNumViewports()>0&&this.engine.resize()}onMaterialSelected(t){this.scene.meshes.forEach((e=>{"targetcube_t"!==e.name&&"backgroundShell"!==e.name&&(e.actionManager||(e.actionManager=new(0,y.ActionManager)(this.scene)),e.actionManager.registerAction(new(0,M.ExecuteCodeAction)(y.ActionManager.OnPickDownTrigger,(e=>{if(e.meshUnderPointer){const A=e.meshUnderPointer.material;A&&t({id:A.id,name:A.name})}}))))}))}listMaterials(){var t;const e=null===(t=this.scene)||void 0===t?void 0:t.materials;return e?e.map((t=>({id:t.id,name:t.name}))):[]}setHighlights(t,e){var A;0===t.length&&(null===(A=this.highlightLayer)||void 0===A||A.dispose(),this.highlightLayer=void 0),this.highlightLayer||(this.highlightLayer=new(0,S.HighlightLayer)("highlights",this.scene,{isStroke:!0,blurVerticalSize:.85,blurHorizontalSize:.85}),this.highlightLayer.innerGlow=!0,this.highlightLayer.outerGlow=!1),this.highlightLayer.removeAllMeshes();const n=e?new(0,H.Color3)(e[0],e[1],e[2]).toLinearSpace():void 0;t.forEach((t=>{const e=this.scene.materials.find((e=>e.name===t.name&&e.id===t.id));e&&e.getBindedMeshes().forEach((t=>{var e;return null===(e=this.highlightLayer)||void 0===e?void 0:e.addMesh(t,n||H.Color3.FromHexString("#fcba03"))}))}))}initXRExperience(t){(0,oA.default)(t,this.scene)}reattachControls(t,e=2){this.scene.detachControl(),this.engine.inputElement=t;const A=this.scene.activeCamera;if(A){A.attachControl(!0,!1,e);A.inputs.attached.pointers.multiTouchPanning=!1}this.scene.attachControl(!0,!0,!0)}getLoadListenerEvent(){const t=Array.from(this.loadProgress.values()).filter((t=>t<100)),e=t.reduce(((t,e)=>t+e),0)/t.length||0;return{loadValue:0===t.length?100:e,sceneInitialized:100===this.getSceneInitializationProgress()}}notifyLoadHandlers(){this.loadObservable.notifyObservers(this.getLoadListenerEvent())}}function lA(t,e,A){return cA(this,void 0,void 0,(function*(){(yield(0,ke.getAssetContainer)(t,e,A)).addAllToScene()}))}const BA=h.gql`
2
2
  mutation CreateTransaction($integrationProductId: String!, $bulk: Boolean) {
3
3
  transactionCreate(integrationProductId: $integrationProductId, bulk: $bulk) {
4
4
  id
@@ -14,7 +14,7 @@ var e=require("papyrus/build/main/CommandContext"),t=require("papyrus/build/main
14
14
  bulkSourceUrl
15
15
  }
16
16
  }
17
- `,Ne=n.gql`
17
+ `,dA=h.gql`
18
18
  mutation ClaimTransaction($id: String!) {
19
19
  transactionClaim(id: $id) {
20
20
  id
@@ -33,7 +33,7 @@ var e=require("papyrus/build/main/CommandContext"),t=require("papyrus/build/main
33
33
  }
34
34
  }
35
35
  }
36
- `,Re=n.gql`
36
+ `,hA=h.gql`
37
37
  query ReadTransaction($id: String!) {
38
38
  transactions(ids: [$id]) {
39
39
  id
@@ -54,25 +54,25 @@ var e=require("papyrus/build/main/CommandContext"),t=require("papyrus/build/main
54
54
  bulkSourceUrl
55
55
  }
56
56
  }
57
- `,Oe=n.gql`
57
+ `,wA=h.gql`
58
58
  mutation UpdateTransactionWorkflowState($id: String!, $workflowState: String!) {
59
59
  transactionUpdate(id: $id, workflowState: $workflowState) {
60
60
  id
61
61
  }
62
62
  }
63
- `,Me=n.gql`
63
+ `,EA=h.gql`
64
64
  mutation UpdateTransactionWorkflowId($id: String!, $workflowId: String!) {
65
65
  transactionUpdate(id: $id, workflowId: $workflowId) {
66
66
  id
67
67
  }
68
68
  }
69
- `,Te=n.gql`
69
+ `,uA=h.gql`
70
70
  mutation UpdateVariationRecords($transactionId: String!, $updates: [VariationRecordUpdateInput]!) {
71
71
  variationRecordsUpdate(transactionId: $transactionId, updates: $updates) {
72
72
  recordNumber
73
73
  }
74
74
  }
75
- `,Ae=n.gql`
75
+ `,CA=h.gql`
76
76
  query ReadTransactionForDesignCreation($id: String!) {
77
77
  transactions(ids: [$id]) {
78
78
  id
@@ -87,12 +87,12 @@ var e=require("papyrus/build/main/CommandContext"),t=require("papyrus/build/main
87
87
  workflowViewerLink
88
88
  }
89
89
  }
90
- `,Le=n.gql`
90
+ `,QA=h.gql`
91
91
  query ReadWorkflowState($id: String!) {
92
92
  transactions(ids: [$id]) {
93
93
  id
94
94
  workflowState
95
95
  }
96
96
  }
97
- `;const Pe=async e=>{const t=(new DOMParser).parseFromString(e,"image/svg+xml").firstElementChild;if(!t)throw new Error("Failed to read SVG");const a=(new XMLSerializer).serializeToString(t),i=document.createElement("canvas"),n=i.getContext("2d"),o=await S.Canvg.from(n,a,{anonymousCrossOrigin:!0,ignoreDimensions:!1}),r=t.getAttribute("width"),s=t.getAttribute("height");if(s&&r){const e=parseFloat(s),t=parseFloat(r)/e;t>1?o.resize(2048,2048/t):o.resize(2048*t,2048)}else o.resize(2048,2048);return await o.render(),await(async e=>new Promise(((t,a)=>{try{e.toBlob((e=>{if(e){const a=URL.createObjectURL(e);t(a)}else a("Failed to generate canvas object URL")}))}catch(e){a(e)}})))(i)},De=new class{async getIllustrationBody(e){return new Promise((t=>{fetch(e).then((e=>{t(e.text())})).catch((e=>console.error(e)))}))}getCreateElementCommand(e,a,i,n){return new(0,t.CreateElementCommand)({stepRegion:a,stepName:n.stepName,colors:n.svg.colors,id:e,src:n.src,svg:n.svg.svg,cachedObjectURL:n.objectURL,type:p.LayoutElementType.Illustration,y:a.top,x:a.left,rotation:a.rotation,width:a.width,height:a.height,layerIndex:a.layerIndex,immutable:a.immutable},i)}async init(e,t,a){const i=P.getLocalOrUndefined(e.optionId);if(!i)return null;if(a)return this.reload(e,t,a);{t.updateMetadata(e.stepName,{colors:[]});const a=P.getDefaultVariant(i.data);if(a)return this.selectVariantCommand(e,a,[],(()=>{}),t)}return null}async reload(e,t,a){const i=t.getSerializedStep(e.stepName,a.serializableWorkflow.steps),n=Object.values(a.layouts).map((e=>e.elements)).flat().filter((t=>t.stepName===e.stepName)),o=P.getLocalOrUndefined(e.optionId)?.data;if(i?.selectedVariants){const a=i.selectedVariants[0].id;if(!o||!a)throw new Error("Required illustration variant no longer available");{const r=o.variants.find((e=>e.id===a));if(r){const a=n.map((e=>({id:e.id,region:e.stepRegion})));await t.setSelectionsAndElements(e.stepName,[r],a),t.updateMetadata(e.stepName,{colors:i.storage?.colors}),t.setMandatoryFulfilled(e.stepName,!0)}}}return null}availableColors(e){return P.getLocalOrUndefined(e.data.colourOptionId)?P.getLocalOrUndefined(e.data.colourOptionId).data.variants.map((e=>({fill:e.color,stroke:e.color,variant:e}))):(e.data.colours||[]).map((e=>({fill:e,stroke:e})))}async changeColorsCommand(e,a,i,n,o){const r={};for(const[e,t]of o.entries())r[e]={browserValue:t,spotColor:r[e]?.spotColor};const s=(0,y.modifySVGWithElementProperties)(e,a,i,r),l=await Pe(s),c=[];for(const e of n){for(const[a,i]of o.entries())c.push(new(0,t.IllustrationColorCommand)(e,a,i));c.push(new(0,t.IllustrationCacheCommand)(e,s,l))}return new(0,t.GroupCommand)(c)}async changeColors(e,t,a,i,n){if(0===t.length)return;const o=(0,w.findElement)(t[0].id,i().map((e=>e.layoutState))),r={...o.colors},s={};Object.entries(r).forEach((([e,t])=>{const a={browserValue:t.browserValue},i=t.spotColor;i&&(a.spotColor={profileName:i.profileName,namedColor:i.namedColor}),s[e]=a}));for(const[e,t]of n.entries())r[e]={browserValue:t,spotColor:r[e]?.spotColor},s[e]={browserValue:t};a.updateStorage(e.stepName,{colors:s});let l=Array.from(Object.values(r)).map((e=>e.browserValue));P.getLocalOrUndefined(e.data.colourOptionId)&&P.getLocalOrUndefined(e.data.colourOptionId).data.variants.forEach((e=>{l=l.map((t=>t.toLowerCase()===e.color?.toLowerCase()?e.name:t))})),a.updateMetadata(e.stepName,{colors:l});const c=new Map;if(Object.entries(r).forEach((([e,t])=>{c.set(e,t.browserValue)})),!o.svg)throw new Error("Colors changed before SVG loaded. This should never happen!");const d=await this.changeColorsCommand(o.svg,o.width,o.height,t.map((e=>e.id)),c);a.getCommandDispatcher()(d)}selectVariant(e,t,a,i,n){this.selectVariantCommand(e,t,a,i,n).then((e=>{n.getCommandDispatcher()(e.command),e.followup()}))}selectVariantCommand(e,a,i,n,o){if(!e.data||!e.data.regions)throw new Error("Missing config data.");n(!0);const r=i.map((e=>new(0,t.DeleteElementCommand)(e.id)));return o.setMandatoryFulfilled(e.stepName,!1),new Promise((async i=>{if(!a.assetKey)throw new Error("No Asset for Variant");const s=(await Ce.getLocalOrFromServer(a.assetKey)).links.find((e=>"cdn"===e.rel));if(!s)throw new Error("CDN Link not found on SVG Asset entity!");const l=await(0,y.generateSVGWithUnknownColors)(await this.getIllustrationBody(s.href)),c=await Pe(l.svg),d=e.data.regions.map((t=>{const a=o.getLayouts().find((e=>e.panelId===t.panelId));if(!a)throw new Error("Tried to create illustration but no layout.");const i=de();return{regionElement:{id:i,region:t},command:this.getCreateElementCommand(i,t,a,{stepName:e.stepName,src:s.href,objectURL:c,svg:l})}})),h=[...d.map((e=>e.command)),...r];i({command:new(0,t.GroupCommand)(h),followup:async()=>{await o.setSelectionsAndElements(e.stepName,[a],d.map((e=>e.regionElement))),o.setMandatoryFulfilled(e.stepName,!0),n(!1)}})}))}};const Ve=new class{async init(e,t,a){const i=P.getLocalOrUndefined(e.optionId);if(!i)return null;if(a)await this.reload(e,t,a);else{const a=i.data.variants,n=P.getDefaultVariant(i.data);if(!e.data.allowMultipleSelections&&n){const n=a.find((e=>e.id===i.data.defaultVariant));return this.selectVariantLambda(e,n?.id||"",t)}}return null}async reload(e,t,a){const i=t.getSerializedStep(e.stepName,a.serializableWorkflow.steps),n=P.getLocalOrUndefined(e.optionId)?.data;if(i?.selectedVariants){const a=i.selectedVariants[0].id;if(n&&a){const i=n.variants.find((e=>e.id===a));i&&await t.setSelectionsAndElements(e.stepName,[i],[])}}}selectVariant(e,t,a){this.selectVariantLambda(e,t,a).then((e=>e&&e()))}async selectVariantLambda(e,t,a){const i=P.getLocalOrUndefined(e.optionId);if(!i)return null;const n=i.data.variants,o=n.length>1?n.find((e=>e.id===t)):n[0];if(!o)throw new Error("Failed to find selected variant in step variants, this should never happen!");return async()=>{await a.setSelectionsAndElements(e.stepName,[o],[]),a.setMandatoryFulfilled(e.stepName,!0)}}};function ze(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Ue{constructor(e,t){ze(this,"manager",void 0),ze(this,"stepConfiguration",void 0),this.manager=e,this.stepConfiguration=t}getCurrentVariant(){return this.manager.getWorkflowSelections()[this.stepConfiguration.stepName].selections}async getAvailableVariants(){const e=this.stepConfiguration.optionId;return(await P.getLocalOrFromServer(q,e)).data.variants}selectVariant(e){if(this.stepConfiguration.type!==v.StepType.Question)throw new Error(`Step type ${this.stepConfiguration.type} not yet supported in Core SDK`);Ve.selectVariant(this.stepConfiguration,e.id,this.manager)}}const Fe=e=>{const t=[];for(const a of e.steps)switch(a.type){case v.StepType.DigitalContent:a.data.varyUpload&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Upload});break;case v.StepType.Frame:const e=a.data;e.varySelection&&a.optionId&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Selection}),e.varyUpload&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Upload});break;case v.StepType.Illustration:const i=a.data;i.varySelection&&a.optionId&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Selection}),i.varyColors&&i.colourPickerEnabled&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Colors});break;case v.StepType.Material:a.data.varySelection&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Selection});break;case v.StepType.Model:a.data.varySelection&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Selection});break;case v.StepType.Picture:a.data.varySelection&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Selection});break;case v.StepType.Question:a.data.varySelections&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Selections});break;case v.StepType.Shape:a.data.varySelection&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Selection});break;case v.StepType.Text:const n=a.data;n.varyText&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Text}),n.varySelection&&a.optionId&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Selection}),n.varyColor&&n.colourPickerEnabled&&t.push({stepName:a.stepName,stepType:a.type,aspectType:v.StepAspectType.Color})}return t},je=[v.StepType.SilentIllustration,"ProductOverlay"],qe=(e,t)=>{const a=[];e.introduction&&a.push({name:"Introduction",title:e.name,renderableSteps:[{type:v.StepType.Introduction,stepName:"Introduction",stepTitle:e.name,helpText:e.introduction,data:{},conditions:[]}],silentSteps:[]});for(const i of e.steps){if(t.bulkScene){let e=!1;switch(i.type){case v.StepType.DigitalContent:i.data.varyUpload&&(e=!0);break;case v.StepType.Frame:const t=i.data;!t.varyUpload||!t.varySelection&&i.optionId||(e=!0);break;case v.StepType.Illustration:const a=i.data;!a.varySelection&&i.optionId&&1!==P.getLocalOrUndefined(i.optionId)?.data.variants.length||!a.varyColors&&a.colourPickerEnabled||(e=!0);break;case v.StepType.Material:i.data.varySelection&&(e=!0);break;case v.StepType.Model:i.data.varySelection&&(e=!0);break;case v.StepType.Picture:i.data.varySelection&&(e=!0);break;case v.StepType.Question:i.data.varySelections&&(e=!0);break;case v.StepType.Shape:i.data.varySelection&&(e=!0);break;case v.StepType.Text:const n=i.data;!n.varySelection&&i.optionId&&1!==P.getLocalOrUndefined(i.optionId)?.data.variants.length||!n.varyColor&&n.colourPickerEnabled&&n.colourOptionId||!n.varyText||(e=!0)}if(e)continue}const n=We(i.stepName,e.stepGroups);if(n){const e=a.find((e=>e.name===n.name));e?je.includes(i.type)?e.silentSteps.push(i):e.renderableSteps.push(i):a.push({name:n.name,title:n.name,renderableSteps:je.includes(i.type)?[]:[i],silentSteps:je.includes(i.type)?[i]:[]})}else a.push({name:i.stepName,title:i.stepTitle,renderableSteps:je.includes(i.type)?[]:[i],silentSteps:je.includes(i.type)?[i]:[]})}return t.bulkScene&&a.push({name:"Bulk",title:t.bulkSceneTitle,renderableSteps:[{type:v.StepType.Bulk,stepName:"Bulk",stepTitle:t.bulkSceneTitle,helpText:"help:/billing/bulk-ordering.md",data:{aspects:Fe(e)},conditions:[]}],silentSteps:[]}),t.finishScene&&a.push({name:"Finish",title:t.finishSceneTitle,renderableSteps:[{type:v.StepType.Finish,stepName:"Finish",stepTitle:t.finishSceneTitle,helpText:"",data:{modelAnimation:e.finalizeStepConfig?e.finalizeStepConfig.modelAnimation:void 0,lookAtAnimation:e.finalizeStepConfig?e.finalizeStepConfig.lookAtAnimation:void 0},conditions:[]}],silentSteps:[]}),a},We=(e,t)=>t.find((t=>t.stepNames.includes(e))),$e=(e,t)=>(e.conditions||[]).every((e=>{const a=t[e.targetStepName];if(a&&a.selectedVariants){const t=a.selectedVariants;return e.requiredVariantSelections.some((e=>void 0!==t.find((t=>t.id===e))))}return!1})),Be=(e,t)=>e.map((e=>((e,t)=>{const a={name:e.name,title:e.title,renderableSteps:e.renderableSteps.filter((e=>$e(e,t))),silentSteps:e.silentSteps.filter((e=>$e(e,t)))};return 0===a.silentSteps.length&&0===a.renderableSteps.length?null:a})(e,t))).filter((e=>null!==e)),Ke=(e,t)=>Be(e,t).filter((e=>e.renderableSteps.filter(((e,t,a)=>e.type===v.StepType.Model||e.type===v.StepType.Material||e.type===v.StepType.Picture||e.type===v.StepType.Shape?P.getLocalOrUndefined(e.optionId)?.data.variants&&P.getLocalOrUndefined(e.optionId).data.variants.length>1?e:null:e)).length>0)),Ge=(e,t)=>Be(e,t).filter((e=>e.renderableSteps.filter((e=>e)).length>0));function He(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Xe{constructor(){He(this,"timestamp",Date.now())}}class _e{constructor(e){He(this,"queue",[]),He(this,"activePromise",void 0),He(this,"queueMaxSize",void 0),this.queueMaxSize=e}enqueue(e){if(this.queue.push(e),void 0!==this.queueMaxSize&&this.queue.length>this.queueMaxSize){const e=this.queue.length-1;for(let t=0;t<e;++t)this.queue.shift()}return this.process()}hasActivePromise(){return!!this.activePromise}getRemainingQueueSize(){return this.queue.length}async finalize(){return this.activePromise?this.activePromise:Promise.resolve()}async process(){return this.activePromise||(this.activePromise=this.dequeue(),this.activePromise.then((()=>{this.activePromise=void 0}))),this.activePromise}async dequeue(){const e=this.queue.shift();if(e)try{await e.execute(),await this.dequeue()}catch(e){await this.dequeue()}}}function Ye(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function Ze(e,t,a,i){const n=a.width*e.zoom,o=a.height*e.zoom;if(i){const i=e,n=Math.max(t.width/a.width,t.height/a.height);i.zoom=Math.max(n,e.zoom);const o=a.width*i.zoom,r=a.height*i.zoom;return i.x=Qe(e.x,t.width-o,0),i.y=Qe(e.y,t.height-r,0),i}const r=e;return r.x=Qe(r.x,-n,t.width),r.y=Qe(r.y,-o,t.height),r}function Qe(e,t,a){return Math.min(Math.max(e,t),a)}class Je{constructor(e){Ye(this,"offsets",void 0),Ye(this,"forceImageCover",void 0),Ye(this,"targetElements",void 0),Ye(this,"imageData",void 0),Ye(this,"frameData",void 0),Ye(this,"_debouncedUpdateFrameOffsets",void 0),Ye(this,"minZoomScale",.03),Ye(this,"maxZoomScale",20),Ye(this,"onFrameDataChangeListeners",void 0),Ye(this,"onZoomChangeListeners",void 0),Ye(this,"workflowManager",void 0),Ye(this,"stepName",void 0),this._debouncedUpdateFrameOffsets=A(b)(this.updateFrameOffsets,200),this.targetElements=[],this.onFrameDataChangeListeners=[],this.onZoomChangeListeners=[],this.forceImageCover=e}connectWorkflowManager(e,t){t&&e.addStepSpecificStorageCallback((async e=>{if(e){const t=e;if(t.currentFrameSource){const e=await(0,k.getFrameData)(t.currentFrameSource);A(h)(e,this.frameData)||(this.frameData=e,this.onFrameDataChangeListeners.forEach((e=>e(this.frameData))),this.frameData&&this.imageData&&(this.offsets=(0,k.calculateOffsets)(this.imageData,this.frameData),this._debouncedUpdateFrameOffsets(this.offsets,this.imageData,this.frameData,this.targetElements),this.recalculateZoomLimits(this.imageData,this.frameData)))}}}),t),this.workflowManager=e,this.stepName=t}setTargetElements(e){this.targetElements=e}getFrameData(){return this.frameData}async setFrameData(e){const t=k.frameDataCache.get(e);this.frameData=t}getImageData(){return this.imageData}getOffsets(){return this.offsets}setOffsets(e){this.offsets=e}setZoom(e,t,a,i){if(this.imageData&&this.offsets&&this.frameData){const n=(t-this.offsets.x)/this.offsets.zoom,o=(a-this.offsets.y)/this.offsets.zoom,r={x:t-n*e,y:a-o*e,zoom:this.imageData.width*e/this.imageData.width};this.updateOffsets(Ze(r,this.frameData,this.imageData,this.forceImageCover),i),this.onZoomChangeListeners.forEach((t=>t(e)))}}setPatternData(e){(e&&this.frameData||e&&this.frameData&&!this.imageData)&&(this.offsets=(0,k.calculateOffsets)(e,this.frameData),this._debouncedUpdateFrameOffsets(this.offsets,e,this.frameData,this.targetElements),this.updateOffsets(Ze(this.offsets,this.frameData,e,this.forceImageCover))),this.imageData=e,this.imageData&&this.frameData&&this.recalculateZoomLimits(this.imageData,this.frameData)}updateOffsets(e,t){const a=this.imageData;a&&this.frameData&&(this.offsets&&e.x===this.offsets.x&&e.y===this.offsets.y&&e.zoom===this.offsets.zoom?t&&t():(this.offsets=Ze(e,this.frameData,a,this.forceImageCover),this._debouncedUpdateFrameOffsets(e,a,this.frameData,this.targetElements,t)))}onFrameDataChanged(e){e(this.frameData),this.onFrameDataChangeListeners.push(e)}onZoom(e){this.onZoomChangeListeners.push(e)}updateFrameOffsets(e,a,i,n,o){if(!i)throw new Error("Frame data not set. This is a bug");if(!this.workflowManager)throw new Error("No workflow manager set, cannot update offsets.");const r=this.workflowManager.getCommandDispatcher();n.forEach((i=>{r(new(0,t.UpdateFramePattern)(i,a,e))})),this.stepName&&this.workflowManager.updateStorage(this.stepName,{frameOffsets:e}),o&&o()}recalculateZoomLimits(e,t){const a=Math.max(t.width/e.width,t.height/e.height);this.forceImageCover?(this.minZoomScale=a,this.maxZoomScale=2.5*a):(this.minZoomScale=a/10,this.maxZoomScale=2.5*a)}}function et(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class tt{constructor(e,a,i){et(this,"configuration",void 0),et(this,"layouts",void 0),et(this,"product",void 0),et(this,"processRegion",(async e=>{const a=this.layouts.find((t=>t.panelId===e.panelId));if(!a)throw new Error(`Can not find layout for region: ${e.panelId}`);let i="";if("ProductOverlay"===this.configuration.type){let e="";if(this.product?.overlayImageUrl&&(e=this.product.overlayImageUrl),i=e,!e)throw new Error("Couldn't find an asset for product overlay step")}const n=this.evaluateAssetType();if("image"===n){const i="SilentIllustration"===this.configuration.type?this.configuration.data.assetKey:this.product?.overlayImageUrl,o={id:de(),src:i,type:n,y:e.top,x:e.left,width:e.width,height:e.height,layerIndex:e.layerIndex,immutable:e.immutable,productOverlay:"ProductOverlay"===this.configuration.type||void 0,rotation:e.rotation,excludeFromExport:this.configuration.data.excludeFromPrint,preserveAspectRatio:"none"};return{regionElement:{id:o.id,region:e},command:new(0,t.CreateElementCommand)(o,a)}}{const o="SilentIllustration"===this.configuration.type?this.configuration.data.assetKey:i,r=async()=>new Promise((e=>{fetch(o).then((t=>{e(t.text())})).catch((e=>console.error(e)))})),s=await(0,y.generateSVGWithUnknownColors)(await r()),l={id:de(),cachedObjectURL:await Pe(s.svg),src:o,svg:s.svg,colors:s.colors,type:n,y:e.top,x:e.left,width:e.width,height:e.height,layerIndex:e.layerIndex,rotation:e.rotation,immutable:e.immutable,productOverlay:"ProductOverlay"===this.configuration.type||void 0,excludeFromExport:this.configuration.data.excludeFromPrint};return{regionElement:{id:l.id,region:e},command:new(0,t.CreateElementCommand)(l,a)}}})),this.configuration=e,this.layouts=a,this.product=i||void 0}async trigger(){if(!this.configuration.data.regions)throw new Error("Missing regions.");if("SilentIllustration"===this.configuration.type){const e=this.configuration.data.regions.map(this.processRegion);return Promise.all(e)}return"ProductOverlay"===this.configuration.type?Promise.all(this.configuration.data.regions.map((e=>{if(!this.layouts.find((t=>e.panelId===t.panelId)))throw new Error("Can't find layout from region. This is a bug");return this.processRegion(e)}))):Promise.reject("Unknown silent step. This is a bug")}evaluateAssetType(){const e="ProductOverlay"===this.configuration.type&&this.product?.overlayImageUrl?this.product.overlayImageUrl.toLowerCase():this.configuration.data.assetKey?.toLowerCase().split("?")[0];return e?.endsWith(".jpeg")||e?.endsWith(".jpg")||e?.endsWith(".png")?p.LayoutElementType.Image:(e?.endsWith(".svg"),p.LayoutElementType.Illustration)}}const at=async e=>{const t=`${V.getServicesApiUrl()}/shortener`;try{const a=await fetch(t,{method:"POST",body:JSON.stringify({longUrl:e}),headers:{"Content-Type":"application/json"}});return(await a.json()).shortUrl}catch(e){throw console.error(e),new Error("Failed to shorten URL.")}};function it(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class nt{async poll(){if(await this.predicate())return this.onSuccess(),void(this.pollingId>-1&&window.clearInterval(this.pollingId));this.attempts+=1,this.attempts<this.maxAttempts?this.pollingId=window.setTimeout(this.poll.bind(this),this.interval):this.onFailure()}constructor(e,t,a,i=3e3,n=10){it(this,"pollingId",void 0),it(this,"attempts",void 0),it(this,"interval",void 0),it(this,"maxAttempts",void 0),it(this,"predicate",void 0),it(this,"onSuccess",void 0),it(this,"onFailure",void 0),this.onSuccess=t,this.onFailure=a,this.predicate=e,this.attempts=0,this.pollingId=-1,this.interval=i,this.maxAttempts=n,this.poll()}}const ot=new class{async init(e,t,a){return a&&await this.reload(e,t,a),null}async reload(e,t,a){const i=t.getSerializedStep(e.stepName,a.serializableWorkflow.steps),n=Object.values(a.layouts).map((e=>e.elements)).flat().filter((t=>t.stepName===e.stepName)).map((e=>({id:e.id,region:e.stepRegion})));await t.setSelectionsAndElements(e.stepName,[],n);const o=i?.storage?.videoShortUrl,r=i?.storage?.videoUrl;t.updateStorage(e.stepName,{videoShortUrl:o,videoUrl:r})}async regenerateQRCode(e,a,i,n,o,r,s,l,c){if(!a&&""!==i&&""===n){const a=async()=>(await q.execute("getAssetByKeyV2_private",{assetKey:i.replace(/\//g,"_")})).body.links.find((e=>"mpeg4"===e.rel)),c=await new Promise(((e,t)=>{new nt((async()=>!!await a()),(async()=>{const t=await a();if(!t||!t.href)throw new Error("Poller succeeded but no mpeg link found");e(t)}),(()=>{t("Poller timed out with 40 attempts @ 3 second interval")}),3e3,40)}));e.forEach((e=>l(new(0,t.DeleteElementCommand)(e.id))));const d="http"===r.data.baseUrl.slice(0,4)?"":"https://",h=new URL(d+r.data.baseUrl);h.searchParams.append("video",btoa(JSON.stringify([c]))),h.pathname=h.pathname+("/"===h.pathname.slice(-1)?"":"/");const p=h.toString();if(p.length>=2e3)throw new Error("Cannot create QR code, URL too long.");const u=await at(p);if(s(u),!r.data||!r.data.regions)throw new Error("Missing config data.");const m=await this.regionElements(r),f=await this.command(u,m,o,r.stepName);f&&l(f.command),await o.setSelectionsAndElements(r.stepName,[],m),o.updateStorage(r.stepName,{videoShortUrl:u,videoUrl:n})}c(!1)}async regionElements(e){return e.data.regions.map((e=>({id:de(),region:e})))}async command(e,a,i,n){const o=i.getLayouts(),r=`data:image/svg+xml;base64,${btoa(await(0,E.toString)(e,{type:"svg"}))}`,s=a.map((e=>{const a=e.region,i=o.find((e=>e.panelId===a?.panelId));if(!i||!a)throw new Error(`Can not find layout for region: ${a?.panelId}`);return new(0,t.CreateElementCommand)({stepRegion:a,stepName:n,id:e.id,src:r,type:p.LayoutElementType.Image,y:a.top,x:a.left,width:a.width,height:a.height,rotation:0},i)}));return{command:new(0,t.GroupCommand)(s),followup:async()=>{}}}};const rt=new class{constructor(){var e,t,a;a=async(e,t)=>{if(!e)return(0,k.generateDefaultRectangleFrameSvg)(t.data.regions[0]);if(!e.assetKey)throw new Error("No Asset for Variant");const a=(await Ce.getLocalOrFromServer(e.assetKey)).links.find((e=>"cdn"===e.rel));if(a)return(0,I.fetchAsString)(a.href);throw new Error("No URL for frame!")},(t="frameSourceSvg")in(e=this)?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}async init(e,t,a){const i=P.getLocalOrUndefined(e.optionId);if(a)await this.reload(e,t,a);else{if(t.setMandatoryFulfilled(e.stepName,!1),t.markStepsAsInitialised([e.stepName]),!i||0===i.data.variants.length)return this.selectVariantCommand(e,void 0,[],t,void 0,e.data.placeholderImageKey);{const a=P.getDefaultVariant(i.data);if(a)return this.selectVariantCommand(e,a,[],t,void 0,e.data.placeholderImageKey)}}return null}async reload(e,t,a){const i=t.getSerializedStep(e.stepName,a.serializableWorkflow.steps),n=Object.values(a.layouts).map((e=>e.elements)).flat().filter((t=>t.stepName===e.stepName)).map((e=>({id:e.id,region:e.stepRegion}))),o=P.getLocalOrUndefined(e.optionId)?.data;if(!o||0===o.variants.length){const a=(0,k.generateDefaultRectangleFrameSvg)(e.data.regions[0]);t.updateStorage(e.stepName,{currentFrameSource:a})}if(i){if(i.selectedVariants&&i.selectedVariants.length>0){const a=i.selectedVariants[0].id;if(o&&a){const i=o.variants.find((e=>e.id===a));if(i){await t.setSelectionsAndElements(e.stepName,[i],n);const a=await this.frameSourceSvg(i,e);t.updateStorage(e.stepName,{currentFrameSource:a})}}}else await t.setSelectionsAndElements(e.stepName,[],n);const a=i.storage?.framePatternSrc,r=i.storage?.frameOffsets;if(t.updateMetadata(e.stepName,{frameOffsets:r,framePatternSrc:a}),a){const i=t.getStepSpecificServices(e.stepName)?.frameService;await this.loadPatternFromString(a,i),t.updateMetadata(e.stepName,{image:a}),t.updateStorage(e.stepName,{framePatternSrc:a})}if(r?.zoom){const a=t.getStepSpecificServices(e.stepName)?.frameService;a.updateOffsets(r)}t.setMandatoryFulfilled(e.stepName,!0)}}selectImage(e,t,a){a.setEditedStatus(e.stepName,!0);t.links.find((e=>"cdn"===e.rel)).href.endsWith("pdf")?a.addPoller(new nt((async()=>{const e=(await q.execute("getAssetByKeyV2_private",{assetKey:t.data.key.replace(/\//g,"_")})).body.links.find((e=>"svg"===e.rel));if(!e)return!1;return 200===(await fetch(e.href)).status}),(()=>{q.execute("getAssetByKeyV2_private",{assetKey:t.data.key.replace(/\//g,"_")}).then((t=>{const i=t.body;this.loadPatternFromAsset(i,e,a)}))}),(()=>{throw new Error("Failed to resolve transcoded PDF")}))):this.loadPatternFromAsset(t,e,a)}selectVariant(e,t,a,i,n){this.selectVariantCommand(e,t,a,i,n).then((e=>{i.getCommandDispatcher()(e.command),e.followup()}))}getCreateElementCommand(e,a,i,n){return new(0,t.CreateElementCommand)({id:e,type:p.LayoutElementType.Frame,x:a.left,y:a.top,width:a.width,height:a.height,layerIndex:a.layerIndex,rotation:a.rotation,scaleX:a.width/n.frameData.width,scaleY:a.height/n.frameData.height,path:n.frameData.path,stepRegion:a,stepName:n.stepName,disablePlaceholder:n.disablePlaceholder,focalBlur:n.focalBlur,focalBlurStrength:n.focalBlurStrength,focalBlurRadius:n.focalBlurRadius,pattern:n.pattern,immutable:a.immutable},i)}async loadPatternFromString(e,t){if(e.endsWith("svg")){const a=await(0,k.GetSVGDimensions)(e),i=a.width,n=a.height,o={src:e,width:i,height:n,aspect:i/n};k.patternImageDataCache.set(e,o),t.setPatternData(o)}else{const a=await fetch(e),i=await a.arrayBuffer(),n=await(0,g.getAttributesFromArrayBuffer)(i),o={src:e,width:n.width,height:n.height,aspect:n.width/n.height};k.patternImageDataCache.set(e,o),t.setPatternData(o)}}async selectVariantCommand(e,a,i,n,o,r){const s=n.getStepSpecificServices(e.stepName)?.frameService,l=await this.frameSourceSvg(a,e),c=await(0,k.getFrameData)(l),d=s.getImageData(),h=i.map((e=>new(0,t.DeleteElementCommand)(e.id))),p=d?(0,k.calculateOffsets)(d,c):void 0,u=d?{id:de(),src:d.src,x:p?.x||0,y:p?.y||0,width:d.width,height:d.height,scaleX:p?.zoom||1,scaleY:p?.zoom||1,rotation:0}:void 0;o&&o(!0);const m=e.data.regions.map((t=>{const a=de(),i=n.getLayouts().find((e=>e.panelId===t.panelId));if(!i)throw new Error(`Can not find layout for region: ${t.panelId}`);return{command:this.getCreateElementCommand(a,t,i,{frameData:c,pattern:u,disablePlaceholder:e.data.disablePlaceholder,focalBlur:e.data.focalBlur,focalBlurStrength:e.data.focalBlurStrength,focalBlurRadius:e.data.focalBlurRadius,stepName:e.stepName}),regionEl:{id:a,region:t}}})),f=m.map((e=>e.command));return{command:new(0,t.GroupCommand)([...f,...h]),followup:async()=>{if(o&&o(!1),await n.setSelectionsAndElements(e.stepName,a?[a]:[],[...m.map((e=>e.regionEl))]),n.updateStorage(e.stepName,{currentFrameSource:l}),r){const t=n.getStepSpecificServices(e.stepName)?.frameService;await this.loadPatternFromString(r,t)}}}}patternSource(e){const t=e.links.find((e=>"svg"===e.rel));if(t)return t.href;const a=e.links.find((e=>"cdn"===e.rel));if(a)return a.href;throw new Error("Frame pattern source file could not be find, neither svg or cdn assets existed on requested variant!")}async loadPatternFromAsset(e,t,a){const i=this.patternSource(e),n=de();a.markUpdatePending(n);const o=a.getStepSpecificServices(t.stepName)?.frameService;await this.loadPatternFromString(i,o),a.updateMetadata(t.stepName,{image:i}),a.updateStorage(t.stepName,{framePatternSrc:i}),a.markUpdateCompleted(n)}};const st=new class{async init(e,t,a){const i=P.getLocalOrUndefined(e.optionId);if(!i)return null;if(a)await this.reload(e,t,a);else{const a=P.getDefaultVariant(i.data);if(a)return this.selectVariantLambda(e,a,t,(()=>{}))}return null}async reload(e,t,a){const i=t.getSerializedStep(e.stepName,a.serializableWorkflow.steps),n=Object.values(a.layouts).map((e=>e.elements)).flat().filter((t=>t.stepName===e.stepName)),o=P.getLocalOrUndefined(e.optionId)?.data;if(i?.selectedVariants){const a=i.selectedVariants[0].id;if(o&&a){const i=o.variants.find((e=>e.id===a));if(i){const a=await Ce.getMaterialLocalOrFromServer(i.materialId),o=n.map((e=>({id:e.id,region:e.stepRegion})));await t.setSelectionsAndElements(e.stepName,[i],o);const r=t.getPreviewService();if(r){const i=e.data.targetMaterials.map((t=>r.applyMaterialVariant(t,e.optionId,a.data)));Promise.all(i).then((()=>t.setMandatoryFulfilled(e.stepName,!0)))}}}}}selectVariant(e,t,a,i){this.selectVariantLambda(e,t,a,i).then((e=>e&&e()))}async selectVariantLambda(e,t,a,i){const n=a.getPreviewService();if(!n)return null;i(!0);const o=await Ce.getMaterialLocalOrFromServer(t.materialId);if(!o)throw i(!1),new Error("No material set on variant");return async()=>{await a.setSelectionsAndElements(e.stepName,[t],[]);const r=e.data.targetMaterials.map((t=>n.applyMaterialVariant(t,e.optionId,o.data)));Promise.all(r).then((()=>a.setMandatoryFulfilled(e.stepName,!0))).finally((()=>i(!1)))}}};const lt=new class{async init(e,t,a){const i=P.getLocalOrUndefined(e.optionId);if(!i)return null;if(a)await this.reload(e,t,a);else{const a=P.getDefaultVariant(i.data);if(a)return this.selectVariantLambda(e,a,t,(()=>{}))}return null}async reload(e,t,a){const i=t.getSerializedStep(e.stepName,a.serializableWorkflow.steps),n=Object.values(a.layouts).map((e=>e.elements)).flat().filter((t=>t.stepName===e.stepName)),o=P.getLocalOrUndefined(e.optionId)?.data;if(i?.selectedVariants){const a=i.selectedVariants[0].id;if(o&&a){const i=o.variants.find((e=>e.id===a));if(i){const a=n.map((e=>({id:e.id,region:e.stepRegion})));await t.setSelectionsAndElements(e.stepName,[i],a);const o=t.getPreviewService();if(o){if(!i.assetKey)throw new Error("No Asset for Variant");const a=(await Ce.getLocalOrFromServer(i.assetKey)).links.find((e=>"cdn"===e.rel));o.applyModelVariant(e.optionId,{model:a.href,contextService:t.getLayoutPreviewService()},e.data.replaceProductModel||!1).then((()=>{t.setMandatoryFulfilled(e.stepName,!0)}))}}}}}selectVariant(e,t,a,i){this.selectVariantLambda(e,t,a,i).then((e=>e&&e()))}async selectVariantLambda(e,t,a,i){const n=a.getPreviewService();if(!n)return null;if(i(!0),!t.assetKey)throw new Error("No Asset for Variant");const o=(await Ce.getLocalOrFromServer(t.assetKey)).links.find((e=>"cdn"===e.rel));return async()=>{if(await a.setSelectionsAndElements(e.stepName,[t],[]),!o)throw new Error("Asset not found:"+t.assetKey);n.applyModelVariant(e.optionId,{model:o.href,contextService:a.getLayoutPreviewService()},e.data.replaceProductModel||!1).then((()=>{a.setMandatoryFulfilled(e.stepName,!0)})).finally((()=>i(!1)))}}};const ct=new class{async init(e,t,a){return a?(await this.reload(e,t,a),null):(t.updateMetadata(e.stepName,{text:""}),this.changeTextCommand(e,"",t,"",(()=>{})))}async reload(e,t,a){const i=t.getSerializedStep(e.stepName,a.serializableWorkflow.steps),n=Object.values(a.layouts).map((e=>e.elements)).flat().filter((t=>t.stepName===e.stepName)).map((e=>({id:e.id,region:e.stepRegion})));await t.setSelectionsAndElements(e.stepName,[],n),t.updateStorage(e.stepName,{text:i?.storage?.text}),t.setMandatoryFulfilled(e.stepName,""!==i?.storage?.text)}changeText(e,t,a,i,n){this.changeTextCommand(e,t,a,i,n).then((e=>{e&&(a.getCommandDispatcher()(e.command),e.followup())}))}async changeTextCommand(e,a,i,n,o){const r=i.getRegionElements(e.stepName),s=i.getStepSpecificServices(e.stepName)?.module;if(!s)return console.error("Missing module."),null;const l=i.getProfanities();if(!this.validateInput(e,a,l,o))return i.setMandatoryFulfilled(e.stepName,!1),console.error(n),null;if(i.setMandatoryFulfilled(e.stepName,""!==a),!e.data||!e.data.regions||e.data.regions.length<=0)return console.error("Missing configuration."),null;i.updateStorage(e.stepName,{text:a});const c=(a,n,o)=>{const r=o||de(),s=i.getLayouts().find((e=>e.panelId===n.panelId));if(!s)return console.error(`Can not find layout for region: ${n.panelId}`),null;const l=[];return o&&l.push(new(0,t.DeleteElementCommand)(r)),l.push(new(0,t.CreateElementCommand)({stepRegion:n,stepName:e.stepName,colors:{},id:r,svg:a,type:p.LayoutElementType.Illustration,y:n.top,x:n.left,rotation:n.rotation,width:n.width,height:n.height,layerIndex:n.layerIndex,immutable:n.immutable},s)),{id:r,region:n,command:new(0,t.GroupCommand)(l)}},d=s.svgPrint(a);if(r.length>0){const e=r.map((e=>e.region?c(d,e.region,e.id):null)).filter((e=>!!e)).filter((e=>!!e)).map((e=>e&&e.command));return{command:new(0,t.GroupCommand)(e),followup:async()=>{}}}{const a=e.data.regions.map((e=>c(d,e))),n=a.filter((e=>!!e)).map((e=>e&&e.command));return{command:new(0,t.GroupCommand)(n),followup:async()=>{const t=a.filter((e=>e)).map((e=>e&&{id:e.id,region:e.region}));await i.setSelectionsAndElements(e.stepName,[],t)}}}}validateInput(e,t,a,i){if(e.data&&e.data.maxLength){const a=e.data.maxLength;if(t.length>a)return i("Too many characters."),!1}if(!/^$|^[a-zA-Z0-9 ]+$/.test(t))return i("Unsupported characters."),!1;const n=t.toLowerCase();for(const e in a)if(n===a[e].toLowerCase().trim()&&""!==n)return i("Blocked profanity."),!1;return i(""),!0}};const dt=e=>new Promise((t=>{fetch(e).then((e=>e.text())).then((e=>{t(e)})).catch((e=>console.error(e)))})),ht=e=>{const t=e.match(/<svg.*?<\/svg>/s)||[],a=t?.length>0?t[0]:"",i=(new DOMParser).parseFromString(a,"image/svg+xml").firstElementChild;if(!i)throw new Error("Failed to read SVG.");(0,y.sanitizeSvgTree)(i,!0);return(new XMLSerializer).serializeToString(i)},pt=new class{async init(e,t,a){const i=P.getLocalOrUndefined(e.optionId);if(!i)return console.error(`Patchwork step ${e.stepName} is missing option.`),null;if(a)await this.reload(e,t,a);else{const a=P.getDefaultVariant(i.data);if(a&&a.assetKey)return this.selectVariantCommand(e,a,[],t,(()=>{}))}return null}async reload(e,t,a){const i=t.getSerializedStep(e.stepName,a.serializableWorkflow.steps),n=Object.values(a.layouts).map((e=>e.elements)).flat().filter((t=>t.stepName===e.stepName)),o=P.getLocalOrUndefined(e.optionId)?.data;if(i?.selectedVariants){const a=i.selectedVariants[0].id;if(o&&a){const r=o.variants.find((e=>e.id===a));if(r){const a=n.map((e=>({id:e.id,region:e.stepRegion})));await t.setSelectionsAndElements(e.stepName,[r],a),t.updateStorage(e.stepName,{patchworkOffsets:i.storage?.patchworkOffsets}),t.setMandatoryFulfilled(e.stepName,!0)}}}}recalculate(e,a,i,n){const o=i.getCommandDispatcher();var r;n(!0);const s=a.map((e=>e.region?this.getRandomPosition(e.region):null)).filter((e=>!!e));o(new(0,t.GroupCommand)(a.map(((e,a)=>{const i=s[a];return 0===a&&(r=i),new(0,t.ShiftPatchworkCommand)(e.id,i.scale,-i.xOffset,-i.yOffset)})))),r&&i.updateStorage(e.stepName,{patchworkOffsets:s}),n(!1)}selectVariant(e,t,a,i,n){this.selectVariantCommand(e,t,a,i,n).then((e=>{e&&(i.getCommandDispatcher()(e.command),e.followup())}))}async selectVariantCommand(e,a,i,n,o){if(!a.assetKey)throw new Error("No Asset for Variant");const r=(await Ce.getLocalOrFromServer(a.assetKey)).links.find((e=>"cdn"===e.rel));if(!r)throw new Error("Could not find CDN link for patchwork.");if(!e.data||!e.data.regions)return console.error("Trying to update patchwork in design with no region data"),null;o(!0);const s=r.href,l=n.getLayouts();var c;const d=e.data.regions.map((e=>this.getRandomPosition(e))),h=await dt(s),u=ht(h),m=e.data.regions.map(((a,i)=>((a,i,n)=>{const o=l.find((e=>e.panelId===a.panelId));if(!o)throw new Error("Can't find layout");const r=d[i],s=de();return 0===i&&(c=r),{regionElement:{id:s,region:a},command:new(0,t.CreateElementCommand)({stepRegion:a,stepName:e.stepName,id:s,svg:n,type:p.LayoutElementType.Patchwork,y:a.top,x:a.left,rotation:a.rotation,width:a.width,height:a.height,layerIndex:a.layerIndex,immutable:a.immutable,patchX:-r.xOffset,patchY:-r.yOffset,patchScale:r.scale},o)}})(a,i,u))),f=i.map((e=>new(0,t.DeleteElementCommand)(e.id))),g=m.map((e=>e.command));return{command:new(0,t.GroupCommand)([...f,...g]),followup:async()=>{await n.setSelectionsAndElements(e.stepName,[a],m.map((e=>e.regionElement))),c&&n.updateStorage(e.stepName,{patchworkOffsets:d}),o(!1)}}}getRandomPosition(e){const t=Math.random()*(.7-.25)+.25,a=1/t,i=1-t;return{scale:a,xOffset:Math.random()*i*a*e.width,yOffset:Math.random()*i*a*e.height}}constructPreviewSvg(e,t,a,i){if(!i||0===t.length)return null;try{const n=(0,w.findElement)(t[0].id,a().map((e=>e.layoutState))).svg,o=e.data.regions[0],r={x:0,y:0,width:o.width,height:o.height,rotation:0,id:"patchwork-preview",svg:n,patchX:-i.xOffset,patchY:-i.yOffset,patchScale:i.scale},s=(0,c.jsx)(A(R),{...r}),l=A(N).renderToStaticMarkup(s);return`\n <svg\n version="1.1"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:xlink="http://www.w3.org/1999/xlink"\n width="${r.width}px"\n height="${r.height}px"\n viewBox="0 0 ${r.width} ${r.height}"\n >\n ${l}\n </svg>\n `}catch(e){return null}}};const ut=new class{async init(e,t,a){const i=P.getLocalOrUndefined(e.optionId)?.data;if(!i)return null;if(a)await this.reload(e,t,a);else if(i.defaultVariant){const a=i.defaultVariant,n=i.variants.find((e=>!!e.assetKey&&e.id===a));if(n)return t.markStepsAsInitialised([e.stepName]),this.selectVariantCommand(e,n,t,(()=>{}))}return t.markStepsAsInitialised([e.stepName]),null}async reload(e,t,a){const i=t.getSerializedStep(e.stepName,a.serializableWorkflow.steps),n=Object.values(a.layouts).map((e=>e.elements)).flat().filter((t=>t.stepName===e.stepName)),o=P.getLocalOrUndefined(e.optionId)?.data;if(i?.selectedVariants){const a=i.selectedVariants[0].id;if(o&&a){const i=o.variants.find((e=>e.id===a));if(i){const a=n.map((e=>({id:e.id,region:e.stepRegion})));await t.setSelectionsAndElements(e.stepName,[i],a),t.setMandatoryFulfilled(e.stepName,!0)}}}}selectVariant(e,t,a,i){this.selectVariantCommand(e,t,a,i).then((e=>{e&&(a.getCommandDispatcher()(e.command),e.followup())}))}async selectVariantCommand(e,a,i,n){if(!a.assetKey)throw new Error("No Asset for Variant");const o=(await Ce.getLocalOrFromServer(a.assetKey)).links.find((e=>"cdn"===e.rel));if(!o)return console.error("No URL for picture!"),null;const r=o.href;n(!0),i.setMandatoryFulfilled(e.stepName,!1);const s=i.getRegionElements(e.stepName).map((e=>new(0,t.DeleteElementCommand)(e.id))),l=e.data.regions.map((a=>{const n=i.getLayouts().find((e=>e.panelId===a.panelId));if(!n)throw new Error(`Can not find layout for region: ${a.panelId}`);const o=de();return{regionElement:{id:o,region:a},command:new(0,t.CreateElementCommand)({stepName:e.stepName,stepRegion:a,id:o,src:r,type:p.LayoutElementType.Image,y:a.top,x:a.left,rotation:a.rotation,width:a.width,height:a.height,layerIndex:a.layerIndex,immutable:a.immutable,preserveAspectRatio:"none"},n)}}));return{command:new(0,t.GroupCommand)([...s,...l.map((e=>e.command))]),followup:async()=>{await i.setSelectionsAndElements(e.stepName,[a],l.map((e=>e.regionElement))),i.setMandatoryFulfilled(e.stepName,!0),n(!1)}}}};const mt=new class{colourOptions(e){return P.getLocalOrUndefined(e.optionId)?P.getLocalOrUndefined(e.optionId).data.variants.map((e=>({fill:e.color,stroke:e.color,variant:e}))):e.data.colours.length>0?e.data.colours.map((e=>({fill:e,stroke:e}))):[]}async init(e,t,a){const i=P.getLocalOrUndefined(e.optionId);if(!i)return null;if(!a){const a=P.getDefaultVariant(i.data);if(!a)return null;const n={fill:a.color,stroke:a.color,variant:a};return this.selectVariantCommand(e,n,[],t)}return await this.reload(e,t,a),null}async reload(e,t,a){const i=t.getSerializedStep(e.stepName,a.serializableWorkflow.steps),n=Object.values(a.layouts).map((e=>e.elements)).flat().filter((t=>t.stepName===e.stepName)),o=P.getLocalOrUndefined(e.optionId)?.data;if(i?.selectedVariants){const a=i.selectedVariants[0].id;if(o&&a){const i=o.variants.find((e=>e.id===a));if(i){const a=n.map((e=>({id:e.id,region:e.stepRegion})));await t.setSelectionsAndElements(e.stepName,[i],a),t.updateStorage(e.stepName,{colour:i.color||""}),t.setMandatoryFulfilled(e.stepName,!0)}}}}selectVariant(e,t,a,i){this.selectVariantCommand(e,t,a,i).then((e=>{e&&(i.getCommandDispatcher()(e.command),e.followup())}))}async selectVariantCommand(e,a,i,n){const o=n.getLayouts();if(i.length>0){const r=i=>{const n=i.region;if(!o.find((e=>e.panelId===n?.panelId)))return console.error(`Step ${e.stepName} missing layout for panel: ${n?.panelId}.`),null;const r=a.variant?.color;return r?new(0,t.IllustrationColorCommand)(i.id,"spiff-fill-shape",r):(console.error("Failed to change color."),null)},s=i.map(r).filter((e=>!!e));return{command:new(0,t.GroupCommand)(s),followup:async()=>{n.setSelectionsAndElements(e.stepName,a.variant?[a.variant]:[],i),n.updateStorage(e.stepName,{colour:a.fill||""})}}}{const i=i=>{const n=o.find((e=>e.panelId===i.panelId));if(!n)return console.error(`Step ${e.stepName} missing layout for panel: ${i.panelId}.`),null;const r=`\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xmlnsXlink="http://www.w3.org/1999/xlink"\n xmlSpace="preserve"\n preserveAspectRatio="none"\n version="1.1"\n width="1"\n height="1"\n viewBox="0 0 1 1"\n >\n <rect\n x="0"\n y="0"\n width="1"\n height="1"\n class="spiff-fill-shape"\n fill="${a.variant?.color}"\n />\n </svg>\n `,s={};s["spiff-fill-shape"]={browserValue:a.variant.color};const l=de();return{id:l,region:i,command:new(0,t.CreateElementCommand)({stepRegion:i,stepName:e.stepName,colors:s,id:l,svg:r,type:p.LayoutElementType.Illustration,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layerIndex:i.layerIndex,immutable:i.immutable,excludeFromExport:e.data.excludeFromPrint},n)}},r=e.data.regions.map(i),s=r.filter((e=>!!e)).map((e=>e?.command)),l=r.filter((e=>!!e)).map((e=>({id:e.id,region:e.region})));return{command:new(0,t.GroupCommand)(s),followup:async()=>{await n.setSelectionsAndElements(e.stepName,a.variant?[a.variant]:[],l),n.updateStorage(e.stepName,{colour:a.fill||""})}}}}};function ft(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const gt=new class{constructor(){ft(this,"latestToast",void 0),ft(this,"toastType",void 0),ft(this,"toastCallbacks",void 0),this.latestToast=null,this.toastType=null,this.toastCallbacks=[]}addToastCallback(e){e({toastMessage:this.latestToast,toastType:this.toastType}),this.toastCallbacks.push(e)}setLatestToast(e,t){this.latestToast=e,this.toastType=t,this.onToastChange()}onToastChange(){this.toastCallbacks.forEach((e=>e({toastMessage:this.latestToast,toastType:this.toastType})))}};function wt(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class yt extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target.prototype),this.name=yt.name}}class St extends Error{constructor(e){super(e),Object.setPrototypeOf(this,new.target.prototype),this.name=St.name}}const vt=new class{constructor(){wt(this,"cachedColors",new Map),wt(this,"filterUnsupportedCharacters",((e,t)=>{let i=t.replace(/(\r\n|\r|(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]))/gm,"");const n=[],o=e?.fontData?(0,a.getFontMetrics)(e?.fontData):void 0;if(o){const e=i.split("").map((e=>o.getFont().charToGlyph(e)));for(let t=0;t<e.length;t++){const a=".notdef"===e[t].name;"\n"===i.charAt(t)||a&&n.push(String.fromCharCode(i.charCodeAt(t)))}}for(let e=0;e<n.length;e++)i=i.replaceAll(n[e],"");return i})),wt(this,"getErrorsForText",((e,t,a)=>{const i=[];t.data&&t.data.maxLength&&e.length>t.data.maxLength&&i.push({localizationKey:"workflow.steps.text.characterLimit"});const n=a.getProfanities(),o=e.toLowerCase();if(""!==o)for(const e in n){if(o===n[e].toLowerCase().trim()){i.push({localizationKey:"workflow.steps.text.blockedProfanity"});break}}return!t.data.allowNewlines&&(e.includes("\n")||e.includes("\r"))&&i.push({localizationKey:"workflow.steps.text.multipleLines"}),i})),wt(this,"textAlign",(e=>e.vertical?"center":e.textAlign||"center"))}async init(e,t,a){const i=P.getLocalOrUndefined(e.optionId);if(!i)return null;if(a)await this.reload(e,t,a);else{const a=e.data.defaultText||"";t.updateStorage(e.stepName,{inputText:a});this.getDefaultColor(e.data)&&t.updateMetadata(e.stepName,{color:e.data.colour});const n=P.getDefaultVariant(i.data);if(n)return this.selectVariantCommand(e,n,{},[],t,!1,(()=>{}),(()=>{}))}return null}async reload(e,a,i){const n=a.getSerializedStep(e.stepName,i.serializableWorkflow.steps),o=Object.values(i.layouts).map((e=>e.elements)).flat().filter((t=>t.stepName===e.stepName)),r=(await P.getLocalOrFromServer(q,e.optionId))?.data;if(n?.selectedVariants){const i=n.selectedVariants[0].id;if(r&&i){const s=r.variants.find((e=>e.id===i));if(s){const i=await this.fontDataFromVariant(s),r=o.map((e=>({id:e.id,region:e.stepRegion})));await a.setSelectionsAndElements(e.stepName,[s],r),a.updateMetadata(e.stepName,{color:n.storage?.color,text:n.storage?.text}),a.updateStorage(e.stepName,{text:n.storage?.text});const l=o.map((e=>new(0,t.FontSourceCommand)(e.id,i))),c=new(0,t.GroupCommand)(l);a.getCommandDispatcher()(c),a.setMandatoryFulfilled(e.stepName,!0)}}}}getDefaultColor(e){if(P.getLocalOrUndefined(e.colourOptionId)){const t=P.getDefaultVariant(P.getLocalOrUndefined(e.colourOptionId).data);if(t)return t.color}if(e.colour)return e.colour}findLayoutElement(e,t,a){const i=e.getRegionElements(t.stepName);if(i[0])return(0,w.findElement)(i[0].id,a().map((e=>e.layoutState)))}findLayoutElements(e,t,a){return e.getRegionElements(t.stepName).map((e=>(0,w.findElement)(e.id,a().map((e=>e.layoutState)))))}availableColors(e){const t=this.cachedColors.get(e.stepName);if(t)return t;if(P.getLocalOrUndefined(e.data.colourOptionId)){const t=P.getLocalOrUndefined(e.data.colourOptionId).data.variants.map((e=>({fill:e.color,stroke:e.color,variant:e})));return this.cachedColors.set(e.stepName,t),t}if(e.data.colours&&e.data.colours.length>0){const t=e.data.colours.map((e=>({fill:e,stroke:e})));return this.cachedColors.set(e.stepName,t),t}return[]}changeColor(e,a,i,n){if(!e.data||!e.data.regions)return;const o=n.getCommandDispatcher();n.updateStorage(e.stepName,{color:a.fill}),a.variant?n.updateMetadata(e.stepName,{color:a.variant.name}):n.updateMetadata(e.stepName,{color:a.fill});for(const e of i){if(!a.fill)throw new Error("Fill not set on new color selection!");o(new(0,t.FontColorCommand)(e.id,a.fill))}}updateInputText(e,a,i,n,o,r){const s=a?e:this.injectReplaceableText(e,n.data),l=(0,f.applyTextTransformations)(s,{vertical:n.data.vertical,uppercase:n.data.uppercase});let c={command:void 0,helperText:"",errors:this.getErrorsForText(e,n,r)};if(c.errors.length>0)return c.helperText=c.errors[0].localizationKey,c;const d=(n.data.maxLength-s.length).toString();c.helperText=`${d} characters remaining`,r.updateStorage(n.stepName,{text:e}),r.updateMetadata(n.stepName,{text:l}),o.defaultCleared&&r.setMandatoryFulfilled(n.stepName,!0);const h=r.getTransaction().bulk&&n.data.varyText||!1,p=[],u=new Map,m=new Map;for(const e of i){if(!e.fontData)throw new Error("Failed to resolve font data for text.");const[t,a]=(0,O.determineCorrectFontSizeAndLines)(e.fontSize,e.fontData,{left:e.x,top:e.y,width:e.width,height:e.height,rotation:e.rotation,panelId:""},l,{size:n.data.size,minSize:n.data.minSize,maxSize:n.data.maxSize});u.set(e.id,t),m.set(e.id,a);const i=n.data.curved?l:(a||[]).join("\n");p.push(this.generateTextChangeCommandsForRegion(t,n.data,e.id,i,h))}if(!n.data.curved&&i.length>0){if(!Array.from(m.values()).every((e=>e)))return c.errors.push({localizationKey:"workflow.steps.text.doesNotFit"}),c}return c.command=new(0,t.GroupCommand)(p),c.command.varying=h,c}async changeInputTextWithRegion(e,a,i,n,o,r,s,l,c,d){const h=n.replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,""),p=s?h:this.injectReplaceableText(h,e.data),u=r.getRegionElements(e.stepName),m=new Map,f=new Map;for(const t of u)if(t.region){const[n,o]=(0,O.determineCorrectFontSizeAndLines)(a,i,t.region,p,{size:e.data.size,minSize:e.data.minSize,maxSize:e.data.maxSize});m.set(t.id,n),f.set(t.id,o)}const g=(()=>{if(e.data&&e.data.maxLength&&p.length>e.data.maxLength)return d&&d(!0),{info:"0"};var t=p.toLowerCase();const a=r.getProfanities();for(const e in a)if(t===a[e].toLowerCase().trim()&&""!==t)return l(!0),{error:"Blocked profanity."};if(!e.data.allowNewlines&&(p.includes("\n")||p.includes("\r")))return l(!0),{error:"Cannot span multiple lines."};if(!e.data.curved){if(!Array.from(f.values()).every((e=>e)))return l(!0),{error:"Does not fit."}}return l(!1),{info:(e.data.maxLength-p.length).toString()}})();if(g.error)return void c(g.error);if(c(`${g.info} characters remaining`||""),d)return;r.updateStorage(e.stepName,{text:h}),r.updateMetadata(e.stepName,{text:this.injectReplaceableText(h,e.data)});const w=r.getTransaction().bulk&&e.data.varyText||!1;o.defaultCleared&&r.setMandatoryFulfilled(e.stepName,!0);const y=[];for(const t of u){const a=e.data.curved?p:(f.get(t.id)||[]).join("\n");y.push(this.generateTextChangeCommandsForRegion(m.get(t.id)||1,e.data,t.id,a,w))}const S=new(0,t.GroupCommand)(y);return S.varying=w,S}selectVariant(e,t,a,i,n,o,r,s){this.selectVariantCommand(e,t,a,i,n,o,r,s).then((e=>{n.getCommandDispatcher()(e.command),e.followup()}))}async fontDataFromVariant(e){if(!e.assetKey)throw new Error("No Asset for Variant");const t=(await Ce.getLocalOrFromServer(e.assetKey)).links.find((e=>"cdn"===e.rel))?.href;if(!t)throw new Error("Failed to find resource link for font in text step.");return{assetUrl:t,name:(await(0,a.loadFontFromExternalUrl)(t)).names.fullName.en}}async findOrCreateElements(e,a,i){const n=e.getTransaction().bulk&&a.data.varyText||!1,o=this.findLayoutElements(e,a,i);if(o.length>0)return o;const r=P.getLocalOrUndefined(a.optionId);if(!r)throw new Error(`No option for step ${a.stepName}`);const s=P.getDefaultVariant(r.data);if(!s)throw new Error(`No default variant for step ${a.stepName}`);const l=await this.fontDataFromVariant(s),c=await this.createTextboxRegions(a.stepName,s,a.data,l,{},e),d=c.map((e=>e.commands)),h=new(0,t.GroupCommand)(d.flat());return h.varying=n,e.getCommandDispatcher()(h),c.map((e=>e.newElement))}async selectVariantCommand(e,a,i,n,o,r,s,l){const c=de();o.markUpdatePending(c);const d=await this.fontDataFromVariant(a);if(n.length>0){const h=n.map((e=>new(0,t.FontSourceCommand)(e.id,d))),p=await this.changeInputTextWithRegion(e,e.data.size||30,d,i.text||"",i,o,r,s,l);p&&h.push(p);return{command:new(0,t.GroupCommand)(h),followup:async()=>{o.markUpdateCompleted(c),await o.setSelectionsAndElements(e.stepName,[a],n)}}}{const n=await this.createTextboxRegions(e.stepName,a,e.data,d,i,o),h=await this.changeInputTextWithRegion(e,e.data.size||30,d,n[0]?.newElement.text||i.text||"",i,o,r,s,l),p=n.flatMap((e=>e.commands));h&&p.push(h);return{command:new(0,t.GroupCommand)(p),followup:async()=>{o.markUpdateCompleted(c)}}}}injectReplaceableText(e,t){return t.replaceableText?t.replaceableText.replace("{{}}",e):e}async createTextboxRegions(e,a,i,n,o,r){if(!i||!i.regions)throw new Error("Step data not supplied");const s=r.getTransaction().bulk&&i.varyText||!1,l=s?"":o.text||i.defaultText||"",c=await Promise.all(i.regions.map((a=>{const c=r.getLayouts().find((e=>e.panelId===a.panelId)),d=de();try{const r=this.getDefaultColor(i),h=r||"#000000";if(!c)throw new St("Failed to find layout for region: "+a.panelId);const u={stepRegion:a,stepName:e,align:this.textAlign(i),fill:o.color?o.color:h,fontSize:i.size||30,fontData:n,id:d,layerIndex:a.layerIndex,rotation:a.rotation,text:(0,f.applyTextTransformations)(l,{vertical:i.vertical,uppercase:i.uppercase}),input:l,type:p.LayoutElementType.Textbox,vertical:i.vertical,x:a.left,y:a.top,height:a.height,width:a.width,immutable:a.immutable,verticalAlign:i.verticalAlign||"middle",curved:i.curved,paths:i.paths},m=[];if(!i.curved){if(!u.fontData)throw new Error("Failed to resolve font data for text.");const e=new Map,t=new Map,[n,o]=(0,O.determineCorrectFontSizeAndLines)(u.fontSize,u.fontData,a,l,{size:i.size,minSize:i.minSize,maxSize:i.maxSize});e.set(d,n),t.set(d,o);const r=(t.get(d)||[]).join("\n");m.push(this.generateTextChangeCommandsForRegion(e.get(d)||1,i,d,r,s))}const g=new(0,t.CreateElementCommand)(u,c);return g.varying=s,{regionElement:{id:d,region:a},commands:[g,...m],newElement:u,fontData:n}}catch(e){throw console.log(e),new yt("Error adding font to region")}}))).catch((e=>{throw e instanceof yt?(gt.setLatestToast("Failed to load font.",Ct.Error),e):e instanceof St?e:new Error(e)}));return await r.setSelectionsAndElements(e,[a],c.map((e=>e.regionElement))),r.updateMetadata(e,{text:l}),r.updateStorage(e,{text:l}),c}generateTextChangeCommandsForRegion(e,a,i,n,o){const r=[],s=new(0,t.TextChangeCommand)(i,n);if(s.varying=o,r.push(s),!a.size){const a=new(0,t.FontSizeCommand)(i,e);a.varying=o,r.push(a)}const l=new(0,t.GroupCommand)(r);return l.varying=o,l}};function xt(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}let Ct;var bt;(bt=Ct||(Ct={})).Error="Error",bt.Warning="Warning";class kt extends Xe{constructor(e){super(),xt(this,"update",void 0),xt(this,"createdAt",new Date),this.update=e}async execute(){await this.update(),await new Promise((e=>{window.setTimeout((()=>{e()}),1e3)}))}}class Et{constructor(e,t,a,i,n,o,r,s,l){xt(this,"initialReducerState",void 0),xt(this,"transaction",void 0),xt(this,"updateTransaction",void 0),xt(this,"ensuredInitialised",void 0),xt(this,"confirmedDesign",void 0),xt(this,"editedSteps",void 0),xt(this,"informationResults",void 0),xt(this,"layouts",void 0),xt(this,"mandatorySteps",void 0),xt(this,"pendingUpdates",void 0),xt(this,"selectionCost",void 0),xt(this,"workflow",void 0),xt(this,"stepSpecificServices",void 0),xt(this,"previewService",void 0),xt(this,"profanityFilter",void 0),xt(this,"pollers",void 0),xt(this,"commandContext",void 0),xt(this,"stepElements",void 0),xt(this,"stepInitialised",void 0),xt(this,"stepMetadata",void 0),xt(this,"stepSelections",void 0),xt(this,"storage",void 0),xt(this,"confirmCallbacks",void 0),xt(this,"editedCallbacks",void 0),xt(this,"elementsCallbacks",void 0),xt(this,"ensuredInitialisedCallbacks",void 0),xt(this,"informationResultCallbacks",void 0),xt(this,"initCallbacks",void 0),xt(this,"makingAdjustmentsCallback",void 0),xt(this,"mandatoryCallbacks",void 0),xt(this,"metadataCallbacks",void 0),xt(this,"selectionCallbacks",void 0),xt(this,"stepSpecificStorageCallbacks",void 0),xt(this,"storageCallbacks",void 0),xt(this,"updateCallbacks",void 0),xt(this,"currentVariationRecordCallbacks",void 0),xt(this,"variationRecordCallbacks",void 0),xt(this,"processingStepInitialisation",void 0),xt(this,"allScenes",void 0),xt(this,"product",void 0),xt(this,"invalidModelVariants",void 0),xt(this,"currentAdjustingStepId",void 0),xt(this,"renderableContextService",void 0),xt(this,"workflowStatePromiseQueue",new _e(1)),xt(this,"variationRecords",[]),xt(this,"currentVariationRecord",void 0),this.updateTransaction=n,this.commandContext=i,this.initialReducerState=o.workflowState,this.transaction=o,this.ensuredInitialised=!1,this.confirmedDesign=!1,this.editedSteps={},this.informationResults=[],this.mandatorySteps={},this.pendingUpdates=[],this.selectionCost=0,this.workflow=e,this.stepSpecificServices={},this.profanityFilter=t,this.pollers=[],this.allScenes=[],this.processingStepInitialisation=!1,this.layouts=a,this.product=l,this.previewService=r,this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.confirmCallbacks=[],this.editedCallbacks=[],this.elementsCallbacks=[],this.ensuredInitialisedCallbacks=[],this.informationResultCallbacks=[],this.initCallbacks=[],this.mandatoryCallbacks=[],this.makingAdjustmentsCallback=[],this.metadataCallbacks=[],this.selectionCallbacks=[],this.stepSpecificStorageCallbacks={},this.storageCallbacks=[],this.updateCallbacks=[],this.currentVariationRecordCallbacks=[],this.variationRecordCallbacks=[],this.invalidModelVariants=[],this.currentAdjustingStepId="",this.renderableContextService=s,this.currentVariationRecord=null,this.ensureStepsAreLoaded(),this.fireReloadAnimation()}addVariationRecord(e){const t={...e,recordNumber:this.variationRecords.reduce(((e,t)=>t.recordNumber>e?t.recordNumber:e),0)+1};return this.variationRecords.push(t),this.onVariationRecordsChange(),t}removeVariationRecord(e){if(this.variationRecords=this.variationRecords.filter((t=>t.recordNumber!==e)),this.variationRecords.forEach(((e,t)=>{e.recordNumber=t+1})),this.currentVariationRecord&&this.currentVariationRecord.recordNumber===e){const e=this.currentVariationRecord.recordNumber,t=e>1?this.variationRecords[e-2]:this.variationRecords[0];this.setCurrentVariationRecord(t||null)}return this.onVariationRecordsChange(),this.variationRecords}setVariationRecords(e){this.variationRecords=e,this.onVariationRecordsChange(),0===e.length?this.setCurrentVariationRecord(null):this.setCurrentVariationRecord(e[0])}setCurrentVariationRecord(e){this.currentVariationRecord=e,this.onCurrentVariationRecordChange()}fireReloadAnimation(){if(!this.initialReducerState)return;const e=this.workflow.finalizeStepConfig;e&&(e.lookAtAnimation&&this.previewService?.executeCameraAnimation(e.lookAtAnimation),e.modelAnimation&&this.previewService?.executeModelAnimation(e.modelAnimation))}addConfirmCallback(e){e(this.confirmedDesign),this.confirmCallbacks.push(e)}addEditedCallback(e){e(this.editedSteps),this.editedCallbacks.push(e)}addElementsCallback(e){e(this.stepElements),this.elementsCallbacks.push(e)}addEnsuredInitialisedCallback(e){e(this.ensuredInitialised),this.ensuredInitialisedCallbacks.push(e)}addInformationResultCallback(e){e(this.informationResults),this.informationResultCallbacks.push(e)}addInitCallback(e){e(this.stepInitialised),this.initCallbacks.push(e)}addMandatoryCallback(e){e(this.mandatorySteps),this.mandatoryCallbacks.push(e)}addMetadataCallback(e){e(this.stepMetadata),this.metadataCallbacks.push(e)}addSelectionCallback(e){e({invalidModelVariants:this.invalidModelVariants,selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:this.traversableScenes()}),this.selectionCallbacks.push(e)}addStepSpecificStorageCallback(e,t){Object.keys(this.storage).includes(t)||(this.storage[t]={}),e(this.storage[t]),Object.keys(this.stepSpecificStorageCallbacks).includes(t)||(this.stepSpecificStorageCallbacks[t]=[]),this.stepSpecificStorageCallbacks[t].push(e)}addStorageCallback(e){e(this.storage),this.storageCallbacks.push(e)}addUpdateCallback(e){e(this.pendingUpdates.length>0),this.updateCallbacks.push(e)}addMakingAdjustmentsCallback(e){e(this.currentAdjustingStepId),this.makingAdjustmentsCallback.push(e)}addCurrentVariationCallback(e){e(this.currentVariationRecord),this.currentVariationRecordCallbacks.push(e)}addVariationRecordsCallback(e){e(this.variationRecords),this.variationRecordCallbacks.push(e)}addPoller(e){this.pollers.push(e)}getLayouts(){return this.layouts}getLayoutPreviewService(){return this.renderableContextService}getPreviewService(){return this.previewService}getProductName(){return this.product?.name}getProfanities(){return this.profanityFilter}getRegionElements(e){return this.stepElements[e]||[]}getStepSpecificServices(e){return this.stepSpecificServices[e]}getTransaction(){return this.transaction}getWorkflow(){return this.workflow}getCommandDispatcher(){return e=>this.commandContext.apply(e)}getWorkflowSelections(){const e={};return this.workflow.steps.forEach((t=>{const a=this.stepSelections[t.stepName];if(a&&a.selectedVariants&&a.selectedVariants.length>0){const i=this.workflow.stepGroups.find((e=>e.stepNames.includes(t.stepName)));P.getLocalOrUndefined(t.optionId)&&(e[t.stepName]={groupName:i?i.name:void 0,optionName:P.getLocalOrUndefined(t.optionId).data.name,selections:a.selectedVariants})}})),e}markStepsAsInitialised(e){const t={...this.stepInitialised};e.forEach((e=>{t[e]=!0})),this.stepInitialised=t,this.onInitChange()}markUpdateCompleted(e){this.pendingUpdates=this.pendingUpdates.filter((t=>t!==e)),this.onUpdateChange()}markUpdatePending(e){this.pendingUpdates=[...this.pendingUpdates,e],this.onUpdateChange()}setAllScenes(e){const t=this.allScenes;this.allScenes=qe(this.workflow,e),A(h)(t,this.allScenes)||this.ensureStepsAreLoaded()}setEditedStatus(e,t){this.editedSteps={...this.editedSteps,[e]:t},this.onEditedChange()}setInformationResults(e){this.informationResults=[...e],this.onInformationResultChange()}setCurrentAdjustingStepId(e){this.currentAdjustingStepId=e,this.onMakingAdjustmentsChange()}setMandatoryFulfilled(e,t){this.mandatorySteps[e]!==t&&(this.mandatorySteps={...this.mandatorySteps,[e]:t},this.onMandatoryChange())}async setSelectionsAndElements(e,a,i){const n=this.stepSelections;this.stepSelections={...this.stepSelections,[e]:{selectedVariants:a}},this.selectionCost=Object.values(this.stepSelections).reduce(((e,t)=>e+t.selectedVariants.map((e=>e.priceModifier)).reduce(((e,t)=>e+t),0)),0),this.workflow.steps.forEach((e=>{$e(e,this.stepSelections)||(this.stepInitialised[e.stepName]=!1,delete this.stepMetadata[e.stepName],delete this.stepSelections[e.stepName],delete this.storage[e.stepName])}));const o=this.allScenes,r=Be(o,n),s=Be(o,this.stepSelections),l=r.map((e=>e.silentSteps)).flat(),c=s.map((e=>e.silentSteps)).flat().filter((e=>!l.some((t=>t.stepName===e.stepName))));l.forEach((e=>{$e(e,this.stepSelections)||(this.stepInitialised[e.stepName]=!1)})),this.invalidModelVariants=this.getInvalidModelVariants();const d=this.getInvalidCanvasRegions(),{stepElements:h,commands:p}=await this.stepElementsForIntroducedSilentSteps(c);this.processingStepInitialisation||this.ensureStepsAreLoaded(),this.stepElements={...this.stepElements,...h,[e]:i},this.removeElements(d),this.onElementsChange();if(this.workflow.steps.find((t=>t.stepName===e))?.type===v.StepType.Frame){this.getStepSpecificServices(e)?.frameService?.setTargetElements(i.map((e=>e.id)))}const u=[...d.map((e=>new(0,t.DeleteElementCommand)(e.id))),...p,new(0,t.UpdateWorkflowStateCommand)(this.constructSerializableWorkflow())];u.length>0&&this.commandContext.apply(new(0,t.GroupCommand)(u)),this.onSelectionChange()}toggleDesignConfirmed(){this.confirmedDesign=!this.confirmedDesign,this.onConfirmChange()}toggleMakingAdjustmentsCallback(e){e(this.mandatorySteps),this.mandatoryCallbacks.push(e)}async updateStorage(e,a){const i={...this.storage,[e]:{...this.storage[e],...a}};if(!A(h)(i,this.storage)){this.storage=i;const a=new(0,t.UpdateWorkflowStateCommand)(this.constructSerializableWorkflow());this.commandContext.apply(a),this.onStepSpecificStorageChange(e),this.onStorageChange()}}constructSerializableWorkflow(){const e=[];return this.allScenes.forEach((t=>{t.renderableSteps.forEach((t=>{const a={stepName:t.stepName};a.storage=this.storage[t.stepName],a.selectedVariants=this.stepSelections[t.stepName]?.selectedVariants?.map((e=>({id:e.id,priceModifier:e.priceModifier}))),e.push(a)}))})),{steps:e}}updateStateWithServer(e){const t=this.serialize(e);this.workflowStatePromiseQueue.enqueue(new kt((async()=>{await this.updateTransaction({variables:{id:this.transaction.id,workflowState:t.transaction}})})))}async updateStateWithServerImmediate(e){const t=this.serialize(e);return new kt((async()=>{await this.updateTransaction({variables:{id:this.transaction.id,workflowState:t.transaction}})})).execute()}serialize(e){const t=JSON.stringify(this.dehydrateState(A(x)(e().transaction))),a=e().variation;if(!a)return{transaction:t};const i={layouts:{},serializableWorkflow:{steps:[]},...A(x)(a)||{}};return{transaction:t,variation:JSON.stringify(this.dehydrateState(i))}}dehydrateState(e){for(const t of Object.values(e.layouts).map((e=>e.elements)).flat())"illustration"===t.type&&(delete t.cachedObjectURL,t.src&&delete t.svg);return e}async outstandingRequestsPromise(){return this.workflowStatePromiseQueue.finalize()}updateMetadata(e,t){this.stepMetadata={...this.stepMetadata,[e]:{...this.stepMetadata[e],...t}},this.onMetadataChange()}removeElements(e){this.stepElements=((e,t)=>Object.keys(e).reduce(((a,i)=>{const n=[...e[i]||[]];return t.forEach((e=>{const t=n.findIndex((t=>t.id===e.id));t>-1&&n.splice(t,1)})),a[i]=n,a}),{}))(this.stepElements,e)}getInvalidCanvasRegions(){return this.workflow.steps.reduce(((e,t)=>($e(t,this.stepSelections)||this.stepElements[t.stepName]&&this.stepElements[t.stepName].forEach((t=>e.push(t))),e)),[])}getInvalidModelVariants(){return this.workflow.steps.reduce(((e,t)=>(!$e(t,this.stepSelections)&&P.getLocalOrUndefined(t.optionId)&&"Model"===t.type&&e.push(P.getLocalOrUndefined(t.optionId).data.id),e)),[])}async stepElementsForIntroducedSilentSteps(e){const t=this.product;if(!t)return Promise.resolve({stepElements:{},commands:[]});const a=(e,t,a)=>"SilentIllustration"===e.type?new tt(e,t).trigger():"ProductOverlay"===e.type?new tt(e,t,a).trigger():Promise.reject("Unknown silent step. This is a bug"),i=e.filter((e=>!this.stepInitialised[e.stepName]));let n={stepElements:{},commands:[]};for(const e of i){this.markStepsAsInitialised([e.stepName]);const i=await a(e,this.layouts,t);n.stepElements[e.stepName]=i.map((e=>e.regionElement)),n.commands=[...n.commands,...i.map((e=>e.command))]}return n}getSerializedStep(e,t){return t.find((t=>t.stepName===e))}getCurrentVariationRecord(){return this.currentVariationRecord||void 0}getVariationRecords(){return this.variationRecords}stepNotReadyForInitialization(e){return("Model"===e.type||"Material"===e.type)&&!this.previewService}async reset(){this.commandContext.getAllLayouts().forEach((e=>e.layoutState.elements.forEach((e=>{this.getCommandDispatcher()(new(0,t.DeleteElementCommand)(e.id))})))),this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.currentVariationRecord=null,await this.ensureStepsAreLoaded()}async ensureStepsAreLoaded(){const e=this.initialReducerState?JSON.parse(this.initialReducerState):void 0;this.processingStepInitialisation=!0,await P.cacheRequiredOptions(this.workflow);const t=this.allScenes,a=Be(t,this.stepSelections).map((e=>e.silentSteps)).flat(),{stepElements:i,commands:n}=await this.stepElementsForIntroducedSilentSteps(a);this.stepElements={...this.stepElements,...i};const o=Ge(this.allScenes,this.stepSelections).map((e=>e.renderableSteps)),r=[],s=[];n.forEach((e=>r.push({command:e,followup:async()=>{}})));const l=o.flat();for(const t of l)if(!this.stepInitialised[t.stepName]&&!this.stepNotReadyForInitialization(t))switch(this.stepInitialised[t.stepName]=!0,t.type){case"Bulk":this.updateStorage("Bulk",e?.serializableWorkflow.steps.find((e=>"Bulk"===e.stepName))?.storage||{});break;case"DigitalContent":r.push(await ot.init(t,this,e));break;case"Finish":case"Introduction":default:break;case"Frame":case"Photo":const a=new Je(t.data.forceImageCover);a.connectWorkflowManager(this,t.stepName),this.stepSpecificServices[t.stepName]={frameService:a},r.push(await rt.init(t,this,e));break;case"Illustration":r.push(await De.init(t,this,e));break;case"Material":s.push(await st.init(t,this,e));break;case"Model":s.push(await lt.init(t,this,e));break;case"Module":const i=t.data.module;this.stepSpecificServices[t.stepName]={module:await A(C)(i)},r.push(await ct.init(t,this,e));break;case"Patchwork":r.push(await pt.init(t,this,e));break;case"Picture":r.push(await ut.init(t,this,e));break;case"Question":s.push(await Ve.init(t,this,e));break;case"Shape":r.push(await mt.init(t,this,e));break;case"Text":r.push(await vt.init(t,this,e))}const c=r.filter((e=>!!e));for(const e of c)this.commandContext.apply(e.command),await e.followup();const d=s.filter((e=>!!e));if(d.length>0)for(const e of d)await e();(c.length>0||d.length>0)&&await this.ensureStepsAreLoaded();const h=l.map((e=>{if(P.getLocalOrUndefined(e.optionId))return P.getDefaultVariant(P.getLocalOrUndefined(e.optionId).data)}));(e||l.length>0&&!h.some((e=>!!e))||c.length>0||d.length>0)&&(this.ensuredInitialised=!0,this.onEnsuredInitialisedChange()),this.processingStepInitialisation=!1,this.onSelectionChange(),this.onInitChange()}onConfirmChange(){this.confirmCallbacks.forEach((e=>e(this.confirmedDesign)))}onEditedChange(){this.editedCallbacks.forEach((e=>e(this.editedSteps)))}onEnsuredInitialisedChange(){this.ensuredInitialisedCallbacks.forEach((e=>e(this.ensuredInitialised)))}onElementsChange(){this.elementsCallbacks.forEach((e=>e(this.stepElements)))}onInformationResultChange(){this.informationResultCallbacks.forEach((e=>e(this.informationResults)))}onInitChange(){this.initCallbacks.forEach((e=>e(this.stepInitialised)))}onMakingAdjustmentsChange(){this.makingAdjustmentsCallback.forEach((e=>{e(this.currentAdjustingStepId)}))}onMandatoryChange(){this.mandatoryCallbacks.forEach((e=>e(this.mandatorySteps)))}onMetadataChange(){this.metadataCallbacks.forEach((e=>{e(this.stepMetadata)}))}onSelectionChange(){this.selectionCallbacks.forEach((e=>e({invalidModelVariants:this.invalidModelVariants,selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:this.traversableScenes()})))}onStepSpecificStorageChange(e){Object.keys(this.stepSpecificStorageCallbacks).includes(e)||(this.stepSpecificStorageCallbacks[e]=[]),this.stepSpecificStorageCallbacks[e].forEach((t=>t(this.storage[e])))}onStorageChange(){this.storageCallbacks.forEach((e=>e(this.storage)))}onUpdateChange(){this.updateCallbacks.forEach((e=>{e(this.pendingUpdates.length>0)}))}onCurrentVariationRecordChange(){this.currentVariationRecordCallbacks.forEach((e=>{e(this.currentVariationRecord)}))}onVariationRecordsChange(){this.variationRecordCallbacks.forEach((e=>{e(this.variationRecords)}))}traversableScenes(){const e=this.allScenes;return Ke(e,this.stepSelections)}}function It(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Nt{constructor(e){if(It(this,"commandContext",void 0),It(this,"workflowManager",void 0),It(this,"isReadOnly",void 0),!e.workflow)throw new Error("No Workflow ID provided.");const t=e.layouts;this.commandContext=new $eb7869949b641a40$re_export$CommandContext;const a=e.transaction.workflowState?JSON.parse(e.transaction.workflowState):void 0;this.commandContext.initialize(t,a),this.isReadOnly=!!e.transaction.lineItem?.id||!Ee.getMap("transactionOwnerIds")?.get(e.transaction.id);this.workflowManager=new Et(e.workflow,e.product.profanities?.map((e=>e.word))||[],t,this.commandContext,(async e=>{this.isReadOnly||W.getShadowGraphqlClient().mutate({...e,mutation:Oe})}),e.transaction,e.previewService,e.renderableContextService,e.product)}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.commandContext}getWorkflowManager(){return this.workflowManager}async updateVariationRecords(e){await W.getShadowGraphqlClient().mutate({mutation:Te,variables:{transactionId:this.workflowManager.getTransaction().id,updates:e.map((e=>({recordNumber:e.recordNumber,values:e.values.map((e=>({aspect:e.aspect,stepName:e.stepName,value:e.value})))})))}})}async createPreviewImage(){const t=document.createElement("canvas");t.width=1024,t.height=1024;const a=this.commandContext.getAllLayouts()[this.workflowManager.getWorkflow().defaultPreviewPanelIndex||0],i=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},n=this.commandContext.getLayoutById(a.layoutState.layout.id),o=t.getContext("2d");if(!o)throw new Error("Failed to build 2D context for preview image creation.");const r=(0,e.getSvgString)(n.layoutState.layout,n.layoutState.elements,{region:i}),s=await A(S).from(o,r,{anonymousCrossOrigin:!0,ignoreDimensions:!1});await s.render();const l=await(async e=>new Promise(((t,a)=>{try{e.toBlob((e=>{if(e){const a=URL.createObjectURL(e);t(a)}}))}catch(e){a(e)}})))(t);return t.toDataURL(l)}getStepById(e){const t=this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepName===e));if(t)return new Ue(this.getWorkflowManager(),t)}getStepByName(e){const t=this.getWorkflowManager().getWorkflow().steps.find((t=>t.stepTitle===e));if(t)return new Ue(this.getWorkflowManager(),t)}getStepsByType(e){return this.getWorkflowManager().getWorkflow().steps.filter((t=>t.type===e)).map((e=>new Ue(this.getWorkflowManager(),e)))}async onDesignFinished(e,t,a,i){const n=(e,t,a)=>{const i={};return t.steps.forEach((t=>{Object.assign(i,(t=>{const i={};if("Frame"===t.type){const n=e[t.stepName],o=t.data;if(!n||o.hideImageInCart&&a)return i;i[`${t.stepTitle} exportedData.image`]=n.image}if("Illustration"===t.type){const n=e[t.stepName],o=t.data;if(!n||o.hideColorsInCart&&a||!n.colors)return i;if(n.colors.length>0){const e=n.colors.join(", ").toUpperCase();i[`${t.stepTitle} exportedData.colors`]=e}}if("Module"===t.type){const n=e[t.stepName],o=t.data;if(!n||o.hideTextInCart&&a)return i;i[`${t.stepTitle} exportedData.text`]=n.text}if("Text"===t.type){const n=e[t.stepName];if(!n)return i;const o=t.data;o.hideTextInCart&&a||(i[`${t.stepTitle} exportedData.text`]=n.text),!n.color||o.hideColorInCart&&a||(i[`${t.stepTitle} exportedData.color`]=n.color)}return i})(t))})),i},o=(e,t,a,i,n,o,r,s,l)=>({event:"onComplete",lineItemImageUrl:r?r.href:"",transactionId:e.id,metadata:n,selectedVariants:s,designProductVariantId:e.externalDesignProductVariantId,designProductId:e.externalDesignProductId,baseCost:a,weight:t.weight,optionsCost:i,exportedData:o,sku:l,workflowViewerLink:e.workflowViewerLink||""}),r=async(e,t,a,i,r,s,l)=>{const c=(e.product?.basePrice||0)*(e.variationsCount||0),d=e.priceModifierTotal||0,h=((e,t,a,i)=>{const o={};let r;if(a){r=n(a,t,!1);for(const e of Object.keys(r))o[e]={value:r[e],priceModifier:0}}else if(i){r=i;for(const e of Object.keys(r))o[e]={value:r[e],priceModifier:0}}for(const a of Object.keys(e)){const i=e[a],n=t.steps.find((e=>e.stepTitle===a));if(1===i.length)o[`${n?.stepTitle} exportedData.selection`]={value:i[0].name,priceModifier:i[0].priceModifier};else if(i.length>1)for(let e=0;e<i.length;e++)o[`${n?.stepTitle} exportedData.selection ${e+1}`]={value:i[e].name,priceModifier:i[e].priceModifier}}return o})(i,a,void 0,s);return o(e,t,c,d,s,h,l,i,r)};return(async(e,t,a,i,s,l,c,d,h,p,u,m)=>{h("workflow.steps.finish.finalize.buildingLayouts"),await e.outstandingRequestsPromise();const f=W.getShadowGraphqlClient();await f.resetStore();const g=await f.mutate({mutation:Le,variables:{id:l.id}}),w=g.data?.transactions[0].workflowState;!g.errors&&w||(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(i())),g.errors&&g.errors.forEach((e=>{g.errors&&console.log("Server Error:",e.message)})),await e.updateStateWithServerImmediate(i),console.log("Server state is undefined @ Workflow completion"));const y=e.getPreviewService(),S=t?.finalizeStepConfig?.lookAtAnimation,v=y&&100===y.getSceneInitializationProgress()&&t.showModelOnFinishStep&&S,x=m&&n(m,t,!0),C=m&&n(m,t,!1),b=e=>{const a={};let i=0;if(Object.keys(c).length>0)for(const n of Object.keys(c)){const o=c[n],r=t.steps.find((e=>e.stepName===n));for(let t=0;t<o.selections.length;++t){const n=o.selections[t];if(r&&(!e||P.getLocalOrUndefined(r.optionId)&&P.getLocalOrUndefined(r.optionId).data.variants.length>1&&!r.data.hideSelectionInCart&&!r.data.hideSelectionsInCart)){const e=r.stepTitle;a[e]?a[e].push({id:n.id||"",name:n.name,priceModifier:n.priceModifier}):a[e]=[{id:n.id||"",name:n.name,priceModifier:n.priceModifier}]}i+=n.priceModifier}}return[a,i]},[k]=b(!0),E=Object.fromEntries(Object.keys(k).map((e=>[e,k[e].map((e=>e.id))]))),[I]=b(!1),N=Object.fromEntries(Object.keys(I).map((e=>[e,I[e].map((e=>e.id))]))),R=await this.createPreviewImage();h("workflow.steps.finish.finalize.creatingDesign");const O=(await q.execute("createDesign",{designDetails:(()=>{const e={designName:d,layouts:a.map((e=>({index:e.index,panelId:e.panelId}))),workflowId:t.id,productId:s.id,transactionId:l.id,threeDimPreview:!!v,previewImage:R};return m&&(e.metadata=C),E&&(e.selectedVariants=N),e})()})).body,M=O.links.find((e=>"image"===e.rel));h("workflow.steps.finish.finalize.updatingTransaction");const T=(await W.getShadowGraphqlClient().query({query:Ae,variables:{id:l.id}})).data.transactions[0];return l.bulk?(await p(u),((e,t,a)=>{const i=(e.product?.basePrice||0)*(e.variationsCount||0),n=e.priceModifierTotal||0,r={items:{value:e.variationsCount?`${e.variationsCount}`:"0",priceModifier:0}};return o(e,t,i,n,void 0,r,a)})(T,s,M)):await r(T,s,t,k,O.data.sku,x,M)})(this.workflowManager,this.workflowManager.getWorkflow(),this.workflowManager.getLayouts(),(()=>this.commandContext.getState()),e,this.workflowManager.getTransaction(),a,this.workflowManager.getWorkflow().name,t,(e=>this.updateVariationRecords(e)),this.workflowManager.getVariationRecords(),i)}}function Rt(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class Ot{constructor(e){Rt(this,"layouts",void 0),Rt(this,"handleCompleteRender",void 0),this.handleCompleteRender=null;const t=new Map;e.forEach((e=>t.set(e.id,new Tt(e.id,e.name,this)))),this.layouts=t}setCompleteRenderCallback(e){this.handleCompleteRender=e,e(Array.from(this.layouts.values()))}onCompleteRender(){this.handleCompleteRender&&this.handleCompleteRender(Array.from(this.layouts.values()))}getAll(){return this.layouts}}let Mt;class Tt{constructor(e,t,a){Rt(this,"hasSetStaticContext",!1),Rt(this,"id",void 0),Rt(this,"name",void 0),Rt(this,"service",void 0),Rt(this,"interactiveDirty",!1),Rt(this,"textureCtx",void 0),Rt(this,"staticCtxDirty",!1),Rt(this,"lastRequestedRenderArguments",void 0),Rt(this,"lastCompletedStaticRender",void 0),Rt(this,"lastModificationID",void 0),Rt(this,"renderQueue",new _e(2)),this.id=e,this.name=t,this.service=a}getID(){return this.id}getName(){return this.name}getStaticContext(){return this.textureCtx}setStaticContext(e){if(this.textureCtx=e,this.lastRequestedRenderArguments){const{workflow:e,layouts:t,variationRecord:a,productOverlayImageUrl:i}=this.lastRequestedRenderArguments;this.render(e,t,a,i)}}getStaticContextDirty(){return this.staticCtxDirty}setStaticContextDirty(e){this.staticCtxDirty=e}getInteractiveCanvasDirty(){return this.interactiveDirty}setInteractiveCanvasDirty(e){this.interactiveDirty=e}markLastCompletedStaticRender(){this.lastCompletedStaticRender=Date.now(),this.service.onCompleteRender()}getLastCompletedStaticRender(){return this.lastCompletedStaticRender}getLastModificationID(){return this.lastModificationID}async render(e,t,a,i){const n=A(x)(t);this.lastRequestedRenderArguments={workflow:e,layouts:n,variationRecord:a,productOverlayImageUrl:i};const o=this.getStaticContext();if(!o)return this.markLastCompletedStaticRender(),void this.setStaticContextDirty(!1);this.renderQueue.enqueue(new At(this.getID(),o,(()=>{if(void 0!==Mt)return Mt;const e=document.createElement("canvas").getContext("webgl2");return Mt=!!e,Mt})(),(()=>{this.markLastCompletedStaticRender(),this.setStaticContextDirty(!0)}),e,n,a,i))}}class At extends Xe{constructor(e,t,a,i,n,o,r,s){super(),Rt(this,"layoutId",void 0),Rt(this,"ctx",void 0),Rt(this,"nonPOTSupport",void 0),Rt(this,"onRender",void 0),Rt(this,"workflow",void 0),Rt(this,"layouts",void 0),Rt(this,"variationRecord",void 0),Rt(this,"productOverlayImageUrl",void 0),this.layoutId=e,this.ctx=t,this.nonPOTSupport=a,this.onRender=i,this.workflow=n,this.layouts=o,this.variationRecord=r,this.productOverlayImageUrl=s}getDynamicTextureResolution(){return this.getIsMobile()||!this.offscreenRenderingSupported()?{width:1024,height:1024}:{width:2048,height:2048}}getIsMobile(){return window.innerWidth<=480}offscreenRenderingSupported(){return!navigator.userAgent.includes("SamsungBrowser")&&(!!window.Worker&&!!window.OffscreenCanvas)}async execute(){const t=this.layouts.find((e=>e.layoutState.layout.id===this.layoutId));if(!t)return;const a=t.layoutState.elements||[];if(this.variationRecord){const e=this.variationRecord.values.map((e=>({stepName:e.stepName,stepAspectType:e.aspect,value:e.value})));for(const e of this.workflow.steps)if(e.optionId&&!e.option){e.option=await P.getLocalOrFromServer(q,e.optionId);for(const t of e.option.data.variants)t.assetKey&&!t.asset&&(t.asset=await Ce.getLocalOrFromServer(t.assetKey))}const i=await Pt(Lt(e,this.workflow),this.workflow,this.layouts.map((e=>e.layoutState.layout)),this.productOverlayImageUrl),n=i?.layouts[t.layoutState.layout.id];(n?.elements||[]).forEach((e=>{const t=a.find((t=>t.stepName===e.stepName));t&&t.type===p.LayoutElementType.Textbox?(t.text=e.text,t.fontSize=e.fontSize):a.push(e)})),a.sort(((e,t)=>void 0!==e.layerIndex&&void 0!==t.layerIndex?e.layerIndex-t.layerIndex:0))}const i=t.layoutState.layout.width,n=t.layoutState.layout.height,o=this.getDynamicTextureResolution().width,r=this.getDynamicTextureResolution().height;let s,l;if(this.nonPOTSupport){i/n<o/r?(s=o,l=n*(o/i)):(s=i*(r/n),l=r)}else s=this.getDynamicTextureResolution().width,l=this.getDynamicTextureResolution().height;const c=(0,e.getSvgString)(t.layoutState.layout,a),d=await S.Canvg.from(this.ctx,c,{anonymousCrossOrigin:!0,ignoreDimensions:!this.nonPOTSupport,ignoreAnimation:!0,ignoreClear:!0,ignoreMouse:!0,enableRedraw:!1});d.resize(s,l),await d.render(),this.onRender()}}const Lt=(e,t)=>{const a=[];return e.forEach((e=>{const i=t.steps.find((t=>t.stepName===e.stepName));i?.type===v.StepType.Text&&"Text"===e.stepAspectType&&a.push({name:i.stepName,data:{text:e.value}})})),a},Pt=async(e,a,i,n)=>{let o={serializableWorkflow:{steps:[]},layouts:{}};i.forEach((e=>{o=new(0,t.CreateLayoutCommand)(e).apply(o)}));return(await(0,M.generateCommands)(e,a,i,n)).forEach((e=>{o=e.apply(o)})),o};function Dt(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}const Vt=async e=>(await q.execute("getProductById",{productId:e})).body,zt=(e,t)=>{const a=e.workflowState,i=a?JSON.parse(a):void 0;return i?Object.values(i.layouts).map((e=>e.layout)):t.panels.sort(((e,t)=>e.index-t.index)).map((e=>({id:de(),panelId:e.name,name:e.name,index:e.index,createdAt:new Date,updatedAt:new Date,transparentBackground:e.transparentBackground,height:e.height,width:e.width,previewRegion:e.previewRegion})))};class Ut{constructor(e){Dt(this,"options",void 0),Dt(this,"initialized",void 0),Dt(this,"experienceOptions",void 0),this.initialized=!1,this.options=e}async initFromIntegrationProduct(e){if(""===e)throw new Error("No integration product ID provided.");this.options.useUncachedEndpoints&&q.setUncachedOperations(["getAssetByKeyV2","getWorkflowV2","getMaterialV2","getOptionV2"]);const t=W.getShadowGraphqlClient();await t.resetStore();const a=await t.mutate({mutation:Ie,variables:{integrationProductId:e,bulk:this.options.bulk||!1}}),i=(await t.mutate({mutation:Ne,variables:{id:a.data?.transactionCreate.id}})).data?.transactionClaim;if(!i)throw new Error("Failed to create transaction.");const n=Ee.getMap("transactionOwnerIds")||new Map;n.set(i.id,i.transactionOwnerId),F(i.transactionOwnerId||""),Ee.setMap("transactionOwnerIds",n);const o=await Vt(i.product?.id||"");this.experienceOptions={product:o.data,transaction:i,layouts:[]},this.initialized=!0}async initFromTransaction(e){if(""===e)throw new Error("No transaction ID provided.");const t=W.getShadowGraphqlClient();await t.resetStore();const a=Ee.getMap("transactionOwnerIds")||new Map,i=a.get(e);if(i){F(i);const a=(await t.query({query:Re,variables:{id:e}})).data?.transactions[0];if(!a)throw new Error("Failed to read transaction.");const n=await Vt(a.product?.id||"");return this.experienceOptions={product:n.data,transaction:a,layouts:[]},void(this.initialized=!0)}try{const i=(await t.mutate({mutation:Ne,variables:{id:e}})).data?.transactionClaim;if(!i)throw new Error("Failed to read transaction.");i.transactionOwnerId&&(a.set(i.id,i.transactionOwnerId),F(i.transactionOwnerId),Ee.setMap("transactionOwnerIds",a));const n=await Vt(i.product?.id||"");this.experienceOptions={product:n.data,transaction:i,layouts:[]},this.initialized=!0}catch{console.log("Readonly Mode");const a=(await t.query({query:Re,variables:{id:e}})).data?.transactions[0];if(!a)throw new Error("Failed to read transaction.");if(!a.lineItem?.id)throw new Error("Attempted to open an unordered transaction with no line item!");const i=await Vt(a.product?.id||"");this.experienceOptions={product:i.data,transaction:a,layouts:[]},this.initialized=!0}}async getWorkflowExperience(e,t,a){if(!this.initialized||!this.experienceOptions)throw new Error("Cannot launch experience: Not initialized.");const i=async e=>{for(const t in e.layouts){const a=e.layouts[t].elements.filter((e=>"illustration"===e.type));for(let e=0;e<a.length;++e){const t=a[e];t.src&&t.svg&&(t.cachedObjectURL=await Pe(t.svg))}}};if(this.experienceOptions.transaction.workflowId){const e=(await q.execute("getWorkflowV2",{workflowSlug:this.experienceOptions.transaction.workflowId})).body.data;if(this.experienceOptions.workflow=e,this.experienceOptions.transaction.workflowState){const e=JSON.parse(this.experienceOptions.transaction.workflowState);await(0,w.rehydrateSerializedLayout)(e),await i(e),this.experienceOptions.layouts=Object.values(e.layouts).map((e=>e.layout)),console.log(this.experienceOptions.layouts)}return this.experienceOptions.previewService=a&&a(e),this.experienceOptions.renderableContextService=new Ot(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&await(this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService)),new Nt(this.experienceOptions)}if(e){const n=(await q.execute("getWorkflowV2",{workflowSlug:e})).body.data;if(this.experienceOptions.workflow=n,await W.getShadowGraphqlClient().mutate({mutation:Me,variables:{workflowId:e,id:this.experienceOptions.transaction.id}}),t){this.experienceOptions.transaction.workflowState=t;const e=JSON.parse(this.experienceOptions.transaction.workflowState);await(0,w.rehydrateSerializedLayout)(e),await i(e),this.experienceOptions.layouts=Object.values(e.layouts).map((e=>e.layout))}else this.experienceOptions.layouts=zt(this.experienceOptions.transaction,this.experienceOptions.workflow);return this.experienceOptions.previewService=a&&a(n),this.experienceOptions.renderableContextService=new Ot(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&await(this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService)),new Nt(this.experienceOptions)}throw new Error("No workflow ID provided.")}getPreviewService(){return this.experienceOptions?.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new Error("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new Error("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}}class Ft{getVariationRecords(){return[]}async reset(){}updateStateWithServer(e){}addVariationRecord(e){return{recordNumber:0,transactionId:"",values:[]}}getCurrentVariationRecord(){}removeVariationRecord(e){return[]}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(e){}addPoller(e){}addConfirmCallback(e){}addCurrentVariationCallback(e){}addEditedCallback(e){}addElementsCallback(e){}addInformationResultCallback(e){}addInitCallback(e){}addMakingAdjustmentsCallback(e){}addMandatoryCallback(e){}addMetadataCallback(e){}addSelectionCallback(e){}addStepSpecificStorageCallback(e,t){}addStorageCallback(e){}addUpdateCallback(e){}addVariationRecordsCallback(e){}getCommandDispatcher(){return e=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getProductName(){return""}getProfanities(){return[]}getRegionElements(e){return[]}getSerializedStep(e,t){}getStepSpecificServices(e){}getTransaction(){return{id:""}}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(e){}markUpdateCompleted(e){}markUpdatePending(e){}getWorkflowSelections(){return{}}setCurrentAdjustingStepId(e){}setAllScenes(e){}setCurrentVariationRecord(e){}setEditedStatus(e,t){}setInformationResults(e){}setMandatoryFulfilled(e,t){}async setSelectionsAndElements(e,t,a){}setVariationRecords(e){}toggleDesignConfirmed(){}updateMetadata(e,t){}async updateStorage(e,t){}}
97
+ `;Bt=et("daQXa"),wt=et("gxilN");const pA=async t=>{const e=(new DOMParser).parseFromString(t,"image/svg+xml").firstElementChild;if(!e)throw new Error("Failed to read SVG");const A=(new XMLSerializer).serializeToString(e),n=document.createElement("canvas"),i=n.getContext("2d"),a=await V.Canvg.from(i,A,{anonymousCrossOrigin:!0,ignoreDimensions:!1}),o=e.getAttribute("width"),s=e.getAttribute("height");if(s&&o){const t=parseFloat(s),e=parseFloat(o)/t;e>1?a.resize(2048,2048/e):a.resize(2048*e,2048)}else a.resize(2048,2048);return await a.render(),await(async t=>new Promise(((e,A)=>{try{t.toBlob((t=>{if(t){const A=URL.createObjectURL(t);e(A)}else A("Failed to generate canvas object URL")}))}catch(t){A(t)}})))(n)},mA=new class{async getIllustrationBody(t){return new Promise((e=>{fetch(t).then((t=>{e(t.text())})).catch((t=>console.error(t)))}))}getCreateElementCommand(t,e,A,n){return new(0,at.CreateElementCommand)({stepRegion:e,stepName:n.stepName,colors:n.svg.colors,id:t,src:n.src,svg:n.svg.svg,cachedObjectURL:n.objectURL,type:wt.LayoutElementType.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layerIndex:e.layerIndex,immutable:e.immutable},A)}async init(t,e,A){const n=Gt.getLocalOrUndefined(t.optionId);if(!n)return null;if(A)return this.reload(t,e,A);{e.updateMetadata(t.stepName,{colors:[]});const A=Gt.getDefaultVariant(n.data);if(A)return this.selectVariantCommand(t,A,[],(()=>{}),e)}return null}async reload(t,e,A){const n=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),i=Object.values(A.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=Gt.getLocalOrUndefined(t.optionId)?.data;if(n?.selectedVariants){const A=n.selectedVariants[0].id;if(!a||!A)throw new Error("Required illustration variant no longer available");{const o=a.variants.find((t=>t.id===A));if(o){const A=i.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[o],A),e.updateMetadata(t.stepName,{colors:n.storage?.colors}),e.setMandatoryFulfilled(t.stepName,!0)}}}return null}availableColors(t){return Gt.getLocalOrUndefined(t.data.colourOptionId)?Gt.getLocalOrUndefined(t.data.colourOptionId).data.variants.map((t=>({fill:t.color,stroke:t.color,variant:t}))):(t.data.colours||[]).map((t=>({fill:t,stroke:t})))}async changeColorsCommand(t,e,A,n,i){const a={};for(const[t,e]of i.entries())a[t]={browserValue:e,spotColor:a[t]?.spotColor};const o=(0,Bt.modifySVGWithElementProperties)(t,e,A,a),s=await pA(o),r=[];for(const t of n){for(const[e,A]of i.entries())r.push(new(0,at.IllustrationColorCommand)(t,e,A));r.push(new(0,at.IllustrationCacheCommand)(t,o,s))}return new(0,at.GroupCommand)(r)}async changeColors(t,e,A,n,i){if(0===e.length)return;const a=(0,ct.findElement)(e[0].id,n().map((t=>t.layoutState))),o={...a.colors},s={};Object.entries(o).forEach((([t,e])=>{const A={browserValue:e.browserValue},n=e.spotColor;n&&(A.spotColor={profileName:n.profileName,namedColor:n.namedColor}),s[t]=A}));for(const[t,e]of i.entries())o[t]={browserValue:e,spotColor:o[t]?.spotColor},s[t]={browserValue:e};A.updateStorage(t.stepName,{colors:s});let r=Array.from(Object.values(o)).map((t=>t.browserValue));Gt.getLocalOrUndefined(t.data.colourOptionId)&&Gt.getLocalOrUndefined(t.data.colourOptionId).data.variants.forEach((t=>{r=r.map((e=>e.toLowerCase()===t.color?.toLowerCase()?t.name:e))})),A.updateMetadata(t.stepName,{colors:r});const c=new Map;if(Object.entries(o).forEach((([t,e])=>{c.set(t,e.browserValue)})),!a.svg)throw new Error("Colors changed before SVG loaded. This should never happen!");const g=await this.changeColorsCommand(a.svg,a.width,a.height,e.map((t=>t.id)),c);A.getCommandDispatcher()(g)}selectVariant(t,e,A,n,i){this.selectVariantCommand(t,e,A,n,i).then((t=>{i.getCommandDispatcher()(t.command),t.followup()}))}selectVariantCommand(t,e,A,n,i){if(!t.data||!t.data.regions)throw new Error("Missing config data.");n(!0);const a=A.map((t=>new(0,at.DeleteElementCommand)(t.id)));return i.setMandatoryFulfilled(t.stepName,!1),new Promise((async A=>{if(!e.assetKey)throw new Error("No Asset for Variant");const o=(await ve.getLocalOrFromServer(e.assetKey)).links.find((t=>"cdn"===t.rel));if(!o)throw new Error("CDN Link not found on SVG Asset entity!");const s=await(0,Bt.generateSVGWithUnknownColors)(await this.getIllustrationBody(o.href)),r=await pA(s.svg),c=t.data.regions.map((e=>{const A=i.getLayouts().find((t=>t.panelId===e.panelId));if(!A)throw new Error("Tried to create illustration but no layout.");const n=ue();return{regionElement:{id:n,region:e},command:this.getCreateElementCommand(n,e,A,{stepName:t.stepName,src:o.href,objectURL:r,svg:s})}})),g=[...c.map((t=>t.command)),...a];A({command:new(0,at.GroupCommand)(g),followup:async()=>{await i.setSelectionsAndElements(t.stepName,[e],c.map((t=>t.regionElement))),i.setMandatoryFulfilled(t.stepName,!0),n(!1)}})}))}};var fA,DA,IA,xA={};Object.defineProperty(xA,"__esModule",{value:!0}),xA.StepAspectType=xA.StepType=xA.AssetType=xA.MaterialEffectMode=void 0,function(t){t.None="None",t.RemoveWhenSelected="RemoveWhenSelected",t.ApplyWhenSelected="ApplyWhenSelected"}(xA.MaterialEffectMode||(xA.MaterialEffectMode={})),(fA=xA.AssetType||(xA.AssetType={})).Font="Font",fA.Frame="Frame",fA.Illustration="Illustration",fA.Image="Image",fA.Model="Model",fA.Material="Material",fA.Patchwork="Patchwork",fA.Color="Color",fA.QuestionnaireCollateral="QuestionnaireCollateral",fA.RequestCollateral="RequestCollateral",fA.SignupCollateral="SignupCollateral",fA.Video="Video",fA.ColorProfile="ColorProfile",(DA=xA.StepType||(xA.StepType={})).Bulk="Bulk",DA.DigitalContent="DigitalContent",DA.Finish="Finish",DA.Frame="Frame",DA.Illustration="Illustration",DA.Introduction="Introduction",DA.Material="Material",DA.Model="Model",DA.Module="Module",DA.Patchwork="Patchwork",DA.Picture="Picture",DA.Photo="Photo",DA.ProductOverlay="ProductOverlay",DA.Question="Question",DA.Shape="Shape",DA.SilentIllustration="SilentIllustration",DA.Text="Text",(IA=xA.StepAspectType||(xA.StepAspectType={})).Color="Color",IA.Colors="Colors",IA.Selection="Selection",IA.Selections="Selections",IA.Text="Text",IA.Upload="Upload";const yA=new class{async init(t,e,A){const n=Gt.getLocalOrUndefined(t.optionId);if(!n)return null;if(A)await this.reload(t,e,A);else{const A=n.data.variants,i=Gt.getDefaultVariant(n.data);if(!t.data.allowMultipleSelections&&i){const i=A.find((t=>t.id===n.data.defaultVariant));return this.selectVariantLambda(t,i?.id||"",e)}}return null}async reload(t,e,A){const n=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),i=Gt.getLocalOrUndefined(t.optionId)?.data;if(n?.selectedVariants){const A=n.selectedVariants[0].id;if(i&&A){const n=i.variants.find((t=>t.id===A));n&&await e.setSelectionsAndElements(t.stepName,[n],[])}}}selectVariant(t,e,A){this.selectVariantLambda(t,e,A).then((t=>t&&t()))}async selectVariantLambda(t,e,A){const n=Gt.getLocalOrUndefined(t.optionId);if(!n)return null;const i=n.data.variants,a=i.length>1?i.find((t=>t.id===e)):i[0];if(!a)throw new Error("Failed to find selected variant in step variants, this should never happen!");return async()=>{await A.setSelectionsAndElements(t.stepName,[a],[]),A.setMandatoryFulfilled(t.stepName,!0)}}};function MA(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}class FA{constructor(t,e){MA(this,"manager",void 0),MA(this,"stepConfiguration",void 0),this.manager=t,this.stepConfiguration=e}getCurrentVariant(){return this.manager.getWorkflowSelections()[this.stepConfiguration.stepName].selections}async getAvailableVariants(){const t=this.stepConfiguration.optionId;return(await Gt.getLocalOrFromServer(zt,t)).data.variants}selectVariant(t){if(this.stepConfiguration.type!==xA.StepType.Question)throw new Error(`Step type ${this.stepConfiguration.type} not yet supported in Core SDK`);yA.selectVariant(this.stepConfiguration,t.id,this.manager)}}const vA=t=>{const e=[];for(const A of t.steps)switch(A.type){case xA.StepType.DigitalContent:A.data.varyUpload&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Upload});break;case xA.StepType.Frame:const t=A.data;t.varySelection&&A.optionId&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Selection}),t.varyUpload&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Upload});break;case xA.StepType.Illustration:const n=A.data;n.varySelection&&A.optionId&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Selection}),n.varyColors&&n.colourPickerEnabled&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Colors});break;case xA.StepType.Material:A.data.varySelection&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Selection});break;case xA.StepType.Model:A.data.varySelection&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Selection});break;case xA.StepType.Picture:A.data.varySelection&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Selection});break;case xA.StepType.Question:A.data.varySelections&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Selections});break;case xA.StepType.Shape:A.data.varySelection&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Selection});break;case xA.StepType.Text:const i=A.data;i.varyText&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Text}),i.varySelection&&A.optionId&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Selection}),i.varyColor&&i.colourPickerEnabled&&e.push({stepName:A.stepName,stepType:A.type,aspectType:xA.StepAspectType.Color})}return e},YA=[xA.StepType.SilentIllustration,"ProductOverlay"],SA=(t,e)=>{const A=[];t.introduction&&A.push({name:"Introduction",title:t.name,renderableSteps:[{type:xA.StepType.Introduction,stepName:"Introduction",stepTitle:t.name,helpText:t.introduction,data:{},conditions:[]}],silentSteps:[]});for(const n of t.steps){if(e.bulkScene){let t=!1;switch(n.type){case xA.StepType.DigitalContent:n.data.varyUpload&&(t=!0);break;case xA.StepType.Frame:const e=n.data;!e.varyUpload||!e.varySelection&&n.optionId||(t=!0);break;case xA.StepType.Illustration:const A=n.data;!A.varySelection&&n.optionId&&1!==Gt.getLocalOrUndefined(n.optionId)?.data.variants.length||!A.varyColors&&A.colourPickerEnabled||(t=!0);break;case xA.StepType.Material:n.data.varySelection&&(t=!0);break;case xA.StepType.Model:n.data.varySelection&&(t=!0);break;case xA.StepType.Picture:n.data.varySelection&&(t=!0);break;case xA.StepType.Question:n.data.varySelections&&(t=!0);break;case xA.StepType.Shape:n.data.varySelection&&(t=!0);break;case xA.StepType.Text:const i=n.data;!i.varySelection&&n.optionId&&1!==Gt.getLocalOrUndefined(n.optionId)?.data.variants.length||!i.varyColor&&i.colourPickerEnabled&&i.colourOptionId||!i.varyText||(t=!0)}if(t)continue}const i=NA(n.stepName,t.stepGroups);if(i){const t=A.find((t=>t.name===i.name));t?YA.includes(n.type)?t.silentSteps.push(n):t.renderableSteps.push(n):A.push({name:i.name,title:i.name,renderableSteps:YA.includes(n.type)?[]:[n],silentSteps:YA.includes(n.type)?[n]:[]})}else A.push({name:n.stepName,title:n.stepTitle,renderableSteps:YA.includes(n.type)?[]:[n],silentSteps:YA.includes(n.type)?[n]:[]})}return e.bulkScene&&A.push({name:"Bulk",title:e.bulkSceneTitle,renderableSteps:[{type:xA.StepType.Bulk,stepName:"Bulk",stepTitle:e.bulkSceneTitle,helpText:"help:/billing/bulk-ordering.md",data:{aspects:vA(t)},conditions:[]}],silentSteps:[]}),e.finishScene&&A.push({name:"Finish",title:e.finishSceneTitle,renderableSteps:[{type:xA.StepType.Finish,stepName:"Finish",stepTitle:e.finishSceneTitle,helpText:"",data:{modelAnimation:t.finalizeStepConfig?t.finalizeStepConfig.modelAnimation:void 0,lookAtAnimation:t.finalizeStepConfig?t.finalizeStepConfig.lookAtAnimation:void 0},conditions:[]}],silentSteps:[]}),A},NA=(t,e)=>e.find((e=>e.stepNames.includes(t))),RA=(t,e)=>(t.conditions||[]).every((t=>{const A=e[t.targetStepName];if(A&&A.selectedVariants){const e=A.selectedVariants;return t.requiredVariantSelections.some((t=>void 0!==e.find((e=>e.id===t))))}return!1})),HA=(t,e)=>t.map((t=>((t,e)=>{const A={name:t.name,title:t.title,renderableSteps:t.renderableSteps.filter((t=>RA(t,e))),silentSteps:t.silentSteps.filter((t=>RA(t,e)))};return 0===A.silentSteps.length&&0===A.renderableSteps.length?null:A})(t,e))).filter((t=>null!==t)),UA=(t,e)=>HA(t,e).filter((t=>t.renderableSteps.filter(((t,e,A)=>t.type===xA.StepType.Model||t.type===xA.StepType.Material||t.type===xA.StepType.Picture||t.type===xA.StepType.Shape?Gt.getLocalOrUndefined(t.optionId)?.data.variants&&Gt.getLocalOrUndefined(t.optionId).data.variants.length>1?t:null:t)).length>0)),bA=(t,e)=>HA(t,e).filter((t=>t.renderableSteps.filter((t=>t)).length>0));function PA(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}class GA{constructor(){PA(this,"timestamp",Date.now())}}class OA{constructor(t){PA(this,"queue",[]),PA(this,"activePromise",void 0),PA(this,"queueMaxSize",void 0),this.queueMaxSize=t}enqueue(t){if(this.queue.push(t),void 0!==this.queueMaxSize&&this.queue.length>this.queueMaxSize){const t=this.queue.length-1;for(let e=0;e<t;++e)this.queue.shift()}return this.process()}hasActivePromise(){return!!this.activePromise}getRemainingQueueSize(){return this.queue.length}async finalize(){return this.activePromise?this.activePromise:Promise.resolve()}async process(){return this.activePromise||(this.activePromise=this.dequeue(),this.activePromise.then((()=>{this.activePromise=void 0}))),this.activePromise}async dequeue(){const t=this.queue.shift();if(t)try{await t.execute(),await this.dequeue()}catch(t){await this.dequeue()}}}function kA(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}function JA(t,e,A,n){const i=A.width*t.zoom,a=A.height*t.zoom;if(n){const n=t,i=Math.max(e.width/A.width,e.height/A.height);n.zoom=Math.max(i,t.zoom);const a=A.width*n.zoom,o=A.height*n.zoom;return n.x=LA(t.x,e.width-a,0),n.y=LA(t.y,e.height-o,0),n}const o=t;return o.x=LA(o.x,-i,e.width),o.y=LA(o.y,-a,e.height),o}function LA(t,e,A){return Math.min(Math.max(t,e),A)}class TA{constructor(t){kA(this,"offsets",void 0),kA(this,"forceImageCover",void 0),kA(this,"targetElements",void 0),kA(this,"imageData",void 0),kA(this,"frameData",void 0),kA(this,"_debouncedUpdateFrameOffsets",void 0),kA(this,"minZoomScale",.03),kA(this,"maxZoomScale",20),kA(this,"onFrameDataChangeListeners",void 0),kA(this,"onZoomChangeListeners",void 0),kA(this,"workflowManager",void 0),kA(this,"stepName",void 0),this._debouncedUpdateFrameOffsets=_(W)(this.updateFrameOffsets,200),this.targetElements=[],this.onFrameDataChangeListeners=[],this.onZoomChangeListeners=[],this.forceImageCover=t}connectWorkflowManager(t,e){e&&t.addStepSpecificStorageCallback((async t=>{if(t){const e=t;if(e.currentFrameSource){const t=await(0,vt.getFrameData)(e.currentFrameSource);_(Q)(t,this.frameData)||(this.frameData=t,this.onFrameDataChangeListeners.forEach((t=>t(this.frameData))),this.frameData&&this.imageData&&(this.offsets=(0,vt.calculateOffsets)(this.imageData,this.frameData),this._debouncedUpdateFrameOffsets(this.offsets,this.imageData,this.frameData,this.targetElements),this.recalculateZoomLimits(this.imageData,this.frameData)))}}}),e),this.workflowManager=t,this.stepName=e}setTargetElements(t){this.targetElements=t}getFrameData(){return this.frameData}async setFrameData(t){const e=vt.frameDataCache.get(t);this.frameData=e}getImageData(){return this.imageData}getOffsets(){return this.offsets}setOffsets(t){this.offsets=t}setZoom(t,e,A,n){if(this.imageData&&this.offsets&&this.frameData){const i=(e-this.offsets.x)/this.offsets.zoom,a=(A-this.offsets.y)/this.offsets.zoom,o={x:e-i*t,y:A-a*t,zoom:this.imageData.width*t/this.imageData.width};this.updateOffsets(JA(o,this.frameData,this.imageData,this.forceImageCover),n),this.onZoomChangeListeners.forEach((e=>e(t)))}}setPatternData(t){(t&&this.frameData||t&&this.frameData&&!this.imageData)&&(this.offsets=(0,vt.calculateOffsets)(t,this.frameData),this._debouncedUpdateFrameOffsets(this.offsets,t,this.frameData,this.targetElements),this.updateOffsets(JA(this.offsets,this.frameData,t,this.forceImageCover))),this.imageData=t,this.imageData&&this.frameData&&this.recalculateZoomLimits(this.imageData,this.frameData)}updateOffsets(t,e){const A=this.imageData;A&&this.frameData&&(this.offsets&&t.x===this.offsets.x&&t.y===this.offsets.y&&t.zoom===this.offsets.zoom?e&&e():(this.offsets=JA(t,this.frameData,A,this.forceImageCover),this._debouncedUpdateFrameOffsets(t,A,this.frameData,this.targetElements,e)))}onFrameDataChanged(t){t(this.frameData),this.onFrameDataChangeListeners.push(t)}onZoom(t){this.onZoomChangeListeners.push(t)}updateFrameOffsets(t,e,A,n,i){if(!A)throw new Error("Frame data not set. This is a bug");if(!this.workflowManager)throw new Error("No workflow manager set, cannot update offsets.");const a=this.workflowManager.getCommandDispatcher();n.forEach((A=>{a(new(0,at.UpdateFramePattern)(A,e,t))})),this.stepName&&this.workflowManager.updateStorage(this.stepName,{frameOffsets:t}),i&&i()}recalculateZoomLimits(t,e){const A=Math.max(e.width/t.width,e.height/t.height);this.forceImageCover?(this.minZoomScale=A,this.maxZoomScale=2.5*A):(this.minZoomScale=A/10,this.maxZoomScale=2.5*A)}}var jA=et("l84WR");wt=et("gxilN"),Bt=et("daQXa");function zA(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}class KA{constructor(t,e,A){zA(this,"configuration",void 0),zA(this,"layouts",void 0),zA(this,"product",void 0),zA(this,"processRegion",(async t=>{const e=this.layouts.find((e=>e.panelId===t.panelId));if(!e)throw new Error(`Can not find layout for region: ${t.panelId}`);let A="";if("ProductOverlay"===this.configuration.type){let t="";if(this.product?.overlayImageUrl&&(t=this.product.overlayImageUrl),A=t,!t)throw new Error("Couldn't find an asset for product overlay step")}const n=this.evaluateAssetType();if("image"===n){const A="SilentIllustration"===this.configuration.type?this.configuration.data.assetKey:this.product?.overlayImageUrl,i={id:ue(),src:A,type:n,y:t.top,x:t.left,width:t.width,height:t.height,layerIndex:t.layerIndex,immutable:t.immutable,productOverlay:"ProductOverlay"===this.configuration.type||void 0,rotation:t.rotation,excludeFromExport:this.configuration.data.excludeFromPrint,preserveAspectRatio:"none"};return{regionElement:{id:i.id,region:t},command:new(0,at.CreateElementCommand)(i,e)}}{const i="SilentIllustration"===this.configuration.type?this.configuration.data.assetKey:A,a=async()=>new Promise((t=>{fetch(i).then((e=>{t(e.text())})).catch((t=>console.error(t)))})),o=await(0,Bt.generateSVGWithUnknownColors)(await a()),s={id:ue(),cachedObjectURL:await pA(o.svg),src:i,svg:o.svg,colors:o.colors,type:n,y:t.top,x:t.left,width:t.width,height:t.height,layerIndex:t.layerIndex,rotation:t.rotation,immutable:t.immutable,productOverlay:"ProductOverlay"===this.configuration.type||void 0,excludeFromExport:this.configuration.data.excludeFromPrint};return{regionElement:{id:s.id,region:t},command:new(0,at.CreateElementCommand)(s,e)}}})),this.configuration=t,this.layouts=e,this.product=A||void 0}async trigger(){if(!this.configuration.data.regions)throw new Error("Missing regions.");if("SilentIllustration"===this.configuration.type){const t=this.configuration.data.regions.map(this.processRegion);return Promise.all(t)}return"ProductOverlay"===this.configuration.type?Promise.all(this.configuration.data.regions.map((t=>{if(!this.layouts.find((e=>t.panelId===e.panelId)))throw new Error("Can't find layout from region. This is a bug");return this.processRegion(t)}))):Promise.reject("Unknown silent step. This is a bug")}evaluateAssetType(){const t="ProductOverlay"===this.configuration.type&&this.product?.overlayImageUrl?this.product.overlayImageUrl.toLowerCase():this.configuration.data.assetKey?.toLowerCase().split("?")[0];return t?.endsWith(".jpeg")||t?.endsWith(".jpg")||t?.endsWith(".png")?wt.LayoutElementType.Image:(t?.endsWith(".svg"),wt.LayoutElementType.Illustration)}}wt=et("gxilN");const VA=async t=>{const e=`${kt.getServicesApiUrl()}/shortener`;try{const A=await fetch(e,{method:"POST",body:JSON.stringify({longUrl:t}),headers:{"Content-Type":"application/json"}});return(await A.json()).shortUrl}catch(t){throw console.error(t),new Error("Failed to shorten URL.")}};function WA(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}class XA{async poll(){if(await this.predicate())return this.onSuccess(),void(this.pollingId>-1&&window.clearInterval(this.pollingId));this.attempts+=1,this.attempts<this.maxAttempts?this.pollingId=window.setTimeout(this.poll.bind(this),this.interval):this.onFailure()}constructor(t,e,A,n=3e3,i=10){WA(this,"pollingId",void 0),WA(this,"attempts",void 0),WA(this,"interval",void 0),WA(this,"maxAttempts",void 0),WA(this,"predicate",void 0),WA(this,"onSuccess",void 0),WA(this,"onFailure",void 0),this.onSuccess=e,this.onFailure=A,this.predicate=t,this.attempts=0,this.pollingId=-1,this.interval=n,this.maxAttempts=i,this.poll()}}const qA=new class{async init(t,e,A){return A&&await this.reload(t,e,A),null}async reload(t,e,A){const n=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),i=Object.values(A.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)).map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[],i);const a=n?.storage?.videoShortUrl,o=n?.storage?.videoUrl;e.updateStorage(t.stepName,{videoShortUrl:a,videoUrl:o})}async regenerateQRCode(t,e,A,n,i,a,o,s,r){if(!e&&""!==A&&""===n){const e=async()=>(await zt.execute("getAssetByKeyV2_private",{assetKey:A.replace(/\//g,"_")})).body.links.find((t=>"mpeg4"===t.rel)),r=await new Promise(((t,A)=>{new XA((async()=>!!await e()),(async()=>{const A=await e();if(!A||!A.href)throw new Error("Poller succeeded but no mpeg link found");t(A)}),(()=>{A("Poller timed out with 40 attempts @ 3 second interval")}),3e3,40)}));t.forEach((t=>s(new(0,at.DeleteElementCommand)(t.id))));const c="http"===a.data.baseUrl.slice(0,4)?"":"https://",g=new URL(c+a.data.baseUrl);g.searchParams.append("video",btoa(JSON.stringify([r]))),g.pathname=g.pathname+("/"===g.pathname.slice(-1)?"":"/");const l=g.toString();if(l.length>=2e3)throw new Error("Cannot create QR code, URL too long.");const B=await VA(l);if(o(B),!a.data||!a.data.regions)throw new Error("Missing config data.");const d=await this.regionElements(a),h=await this.command(B,d,i,a.stepName);h&&s(h.command),await i.setSelectionsAndElements(a.stepName,[],d),i.updateStorage(a.stepName,{videoShortUrl:B,videoUrl:n})}r(!1)}async regionElements(t){return t.data.regions.map((t=>({id:ue(),region:t})))}async command(t,e,A,n){const i=A.getLayouts(),a=`data:image/svg+xml;base64,${btoa(await(0,X.toString)(t,{type:"svg"}))}`,o=e.map((t=>{const e=t.region,A=i.find((t=>t.panelId===e?.panelId));if(!A||!e)throw new Error(`Can not find layout for region: ${e?.panelId}`);return new(0,at.CreateElementCommand)({stepRegion:e,stepName:n,id:t.id,src:a,type:wt.LayoutElementType.Image,y:e.top,x:e.left,width:e.width,height:e.height,rotation:0},A)}));return{command:new(0,at.GroupCommand)(o),followup:async()=>{}}}};wt=et("gxilN"),lt=et("98viV");const ZA=new class{constructor(){var t,e,A;A=async(t,e)=>{if(!t)return(0,vt.generateDefaultRectangleFrameSvg)(e.data.regions[0]);if(!t.assetKey)throw new Error("No Asset for Variant");const A=(await ve.getLocalOrFromServer(t.assetKey)).links.find((t=>"cdn"===t.rel));if(A)return(0,lt.fetchAsString)(A.href);throw new Error("No URL for frame!")},(e="frameSourceSvg")in(t=this)?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A}async init(t,e,A){const n=Gt.getLocalOrUndefined(t.optionId);if(A)await this.reload(t,e,A);else{if(e.setMandatoryFulfilled(t.stepName,!1),e.markStepsAsInitialised([t.stepName]),!n||0===n.data.variants.length)return this.selectVariantCommand(t,void 0,[],e,void 0,t.data.placeholderImageKey);{const A=Gt.getDefaultVariant(n.data);if(A)return this.selectVariantCommand(t,A,[],e,void 0,t.data.placeholderImageKey)}}return null}async reload(t,e,A){const n=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),i=Object.values(A.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)).map((t=>({id:t.id,region:t.stepRegion}))),a=Gt.getLocalOrUndefined(t.optionId)?.data;if(!a||0===a.variants.length){const A=(0,vt.generateDefaultRectangleFrameSvg)(t.data.regions[0]);e.updateStorage(t.stepName,{currentFrameSource:A})}if(n){if(n.selectedVariants&&n.selectedVariants.length>0){const A=n.selectedVariants[0].id;if(a&&A){const n=a.variants.find((t=>t.id===A));if(n){await e.setSelectionsAndElements(t.stepName,[n],i);const A=await this.frameSourceSvg(n,t);e.updateStorage(t.stepName,{currentFrameSource:A})}}}else await e.setSelectionsAndElements(t.stepName,[],i);const A=n.storage?.framePatternSrc,o=n.storage?.frameOffsets;if(e.updateMetadata(t.stepName,{frameOffsets:o,framePatternSrc:A}),A){const n=e.getStepSpecificServices(t.stepName)?.frameService;await this.loadPatternFromString(A,n),e.updateMetadata(t.stepName,{image:A}),e.updateStorage(t.stepName,{framePatternSrc:A})}if(o?.zoom){const A=e.getStepSpecificServices(t.stepName)?.frameService;A.updateOffsets(o)}e.setMandatoryFulfilled(t.stepName,!0)}}selectImage(t,e,A){A.setEditedStatus(t.stepName,!0);e.links.find((t=>"cdn"===t.rel)).href.endsWith("pdf")?A.addPoller(new XA((async()=>{const t=(await zt.execute("getAssetByKeyV2_private",{assetKey:e.data.key.replace(/\//g,"_")})).body.links.find((t=>"svg"===t.rel));if(!t)return!1;return 200===(await fetch(t.href)).status}),(()=>{zt.execute("getAssetByKeyV2_private",{assetKey:e.data.key.replace(/\//g,"_")}).then((e=>{const n=e.body;this.loadPatternFromAsset(n,t,A)}))}),(()=>{throw new Error("Failed to resolve transcoded PDF")}))):this.loadPatternFromAsset(e,t,A)}selectVariant(t,e,A,n,i){this.selectVariantCommand(t,e,A,n,i).then((t=>{n.getCommandDispatcher()(t.command),t.followup()}))}getCreateElementCommand(t,e,A,n){return new(0,at.CreateElementCommand)({id:t,type:wt.LayoutElementType.Frame,x:e.left,y:e.top,width:e.width,height:e.height,layerIndex:e.layerIndex,rotation:e.rotation,scaleX:e.width/n.frameData.width,scaleY:e.height/n.frameData.height,path:n.frameData.path,stepRegion:e,stepName:n.stepName,disablePlaceholder:n.disablePlaceholder,focalBlur:n.focalBlur,focalBlurStrength:n.focalBlurStrength,focalBlurRadius:n.focalBlurRadius,pattern:n.pattern,immutable:e.immutable},A)}async loadPatternFromString(t,e){if(t.endsWith("svg")){const A=await(0,vt.GetSVGDimensions)(t),n=A.width,i=A.height,a={src:t,width:n,height:i,aspect:n/i};vt.patternImageDataCache.set(t,a),e.setPatternData(a)}else{const A=await fetch(t),n=await A.arrayBuffer(),i=await(0,Nt.getAttributesFromArrayBuffer)(n),a={src:t,width:i.width,height:i.height,aspect:i.width/i.height};vt.patternImageDataCache.set(t,a),e.setPatternData(a)}}async selectVariantCommand(t,e,A,n,i,a){const o=n.getStepSpecificServices(t.stepName)?.frameService,s=await this.frameSourceSvg(e,t),r=await(0,vt.getFrameData)(s),c=o.getImageData(),g=A.map((t=>new(0,at.DeleteElementCommand)(t.id))),l=c?(0,vt.calculateOffsets)(c,r):void 0,B=c?{id:ue(),src:c.src,x:l?.x||0,y:l?.y||0,width:c.width,height:c.height,scaleX:l?.zoom||1,scaleY:l?.zoom||1,rotation:0}:void 0;i&&i(!0);const d=t.data.regions.map((e=>{const A=ue(),i=n.getLayouts().find((t=>t.panelId===e.panelId));if(!i)throw new Error(`Can not find layout for region: ${e.panelId}`);return{command:this.getCreateElementCommand(A,e,i,{frameData:r,pattern:B,disablePlaceholder:t.data.disablePlaceholder,focalBlur:t.data.focalBlur,focalBlurStrength:t.data.focalBlurStrength,focalBlurRadius:t.data.focalBlurRadius,stepName:t.stepName}),regionEl:{id:A,region:e}}})),h=d.map((t=>t.command));return{command:new(0,at.GroupCommand)([...h,...g]),followup:async()=>{if(i&&i(!1),await n.setSelectionsAndElements(t.stepName,e?[e]:[],[...d.map((t=>t.regionEl))]),n.updateStorage(t.stepName,{currentFrameSource:s}),a){const e=n.getStepSpecificServices(t.stepName)?.frameService;await this.loadPatternFromString(a,e)}}}}patternSource(t){const e=t.links.find((t=>"svg"===t.rel));if(e)return e.href;const A=t.links.find((t=>"cdn"===t.rel));if(A)return A.href;throw new Error("Frame pattern source file could not be find, neither svg or cdn assets existed on requested variant!")}async loadPatternFromAsset(t,e,A){const n=this.patternSource(t),i=ue();A.markUpdatePending(i);const a=A.getStepSpecificServices(e.stepName)?.frameService;await this.loadPatternFromString(n,a),A.updateMetadata(e.stepName,{image:n}),A.updateStorage(e.stepName,{framePatternSrc:n}),A.markUpdateCompleted(i)}};const _A=new class{async init(t,e,A){const n=Gt.getLocalOrUndefined(t.optionId);if(!n)return null;if(A)await this.reload(t,e,A);else{const A=Gt.getDefaultVariant(n.data);if(A)return this.selectVariantLambda(t,A,e,(()=>{}))}return null}async reload(t,e,A){const n=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),i=Object.values(A.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=Gt.getLocalOrUndefined(t.optionId)?.data;if(n?.selectedVariants){const A=n.selectedVariants[0].id;if(a&&A){const n=a.variants.find((t=>t.id===A));if(n){const A=await ve.getMaterialLocalOrFromServer(n.materialId),a=i.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[n],a);const o=e.getPreviewService();if(o){const n=t.data.targetMaterials.map((e=>o.applyMaterialVariant(e,t.optionId,A.data)));Promise.all(n).then((()=>e.setMandatoryFulfilled(t.stepName,!0)))}}}}}selectVariant(t,e,A,n){this.selectVariantLambda(t,e,A,n).then((t=>t&&t()))}async selectVariantLambda(t,e,A,n){const i=A.getPreviewService();if(!i)return null;n(!0);const a=await ve.getMaterialLocalOrFromServer(e.materialId);if(!a)throw n(!1),new Error("No material set on variant");return async()=>{await A.setSelectionsAndElements(t.stepName,[e],[]);const o=t.data.targetMaterials.map((e=>i.applyMaterialVariant(e,t.optionId,a.data)));Promise.all(o).then((()=>A.setMandatoryFulfilled(t.stepName,!0))).finally((()=>n(!1)))}}};const $A=new class{async init(t,e,A){const n=Gt.getLocalOrUndefined(t.optionId);if(!n)return null;if(A)await this.reload(t,e,A);else{const A=Gt.getDefaultVariant(n.data);if(A)return this.selectVariantLambda(t,A,e,(()=>{}))}return null}async reload(t,e,A){const n=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),i=Object.values(A.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=Gt.getLocalOrUndefined(t.optionId)?.data;if(n?.selectedVariants){const A=n.selectedVariants[0].id;if(a&&A){const n=a.variants.find((t=>t.id===A));if(n){const A=i.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[n],A);const a=e.getPreviewService();if(a){if(!n.assetKey)throw new Error("No Asset for Variant");const A=(await ve.getLocalOrFromServer(n.assetKey)).links.find((t=>"cdn"===t.rel));a.applyModelVariant(t.optionId,{model:A.href,contextService:e.getLayoutPreviewService()},t.data.replaceProductModel||!1).then((()=>{e.setMandatoryFulfilled(t.stepName,!0)}))}}}}}selectVariant(t,e,A,n){this.selectVariantLambda(t,e,A,n).then((t=>t&&t()))}async selectVariantLambda(t,e,A,n){const i=A.getPreviewService();if(!i)return null;if(n(!0),!e.assetKey)throw new Error("No Asset for Variant");const a=(await ve.getLocalOrFromServer(e.assetKey)).links.find((t=>"cdn"===t.rel));return async()=>{if(await A.setSelectionsAndElements(t.stepName,[e],[]),!a)throw new Error("Asset not found:"+e.assetKey);i.applyModelVariant(t.optionId,{model:a.href,contextService:A.getLayoutPreviewService()},t.data.replaceProductModel||!1).then((()=>{A.setMandatoryFulfilled(t.stepName,!0)})).finally((()=>n(!1)))}}};wt=et("gxilN");const tn=new class{async init(t,e,A){return A?(await this.reload(t,e,A),null):(e.updateMetadata(t.stepName,{text:""}),this.changeTextCommand(t,"",e,"",(()=>{})))}async reload(t,e,A){const n=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),i=Object.values(A.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)).map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[],i),e.updateStorage(t.stepName,{text:n?.storage?.text}),e.setMandatoryFulfilled(t.stepName,""!==n?.storage?.text)}changeText(t,e,A,n,i){this.changeTextCommand(t,e,A,n,i).then((t=>{t&&(A.getCommandDispatcher()(t.command),t.followup())}))}async changeTextCommand(t,e,A,n,i){const a=A.getRegionElements(t.stepName),o=A.getStepSpecificServices(t.stepName)?.module;if(!o)return console.error("Missing module."),null;const s=A.getProfanities();if(!this.validateInput(t,e,s,i))return A.setMandatoryFulfilled(t.stepName,!1),console.error(n),null;if(A.setMandatoryFulfilled(t.stepName,""!==e),!t.data||!t.data.regions||t.data.regions.length<=0)return console.error("Missing configuration."),null;A.updateStorage(t.stepName,{text:e});const r=(e,n,i)=>{const a=i||ue(),o=A.getLayouts().find((t=>t.panelId===n.panelId));if(!o)return console.error(`Can not find layout for region: ${n.panelId}`),null;const s=[];return i&&s.push(new(0,at.DeleteElementCommand)(a)),s.push(new(0,at.CreateElementCommand)({stepRegion:n,stepName:t.stepName,colors:{},id:a,svg:e,type:wt.LayoutElementType.Illustration,y:n.top,x:n.left,rotation:n.rotation,width:n.width,height:n.height,layerIndex:n.layerIndex,immutable:n.immutable},o)),{id:a,region:n,command:new(0,at.GroupCommand)(s)}},c=o.svgPrint(e);if(a.length>0){const t=a.map((t=>t.region?r(c,t.region,t.id):null)).filter((t=>!!t)).filter((t=>!!t)).map((t=>t&&t.command));return{command:new(0,at.GroupCommand)(t),followup:async()=>{}}}{const e=t.data.regions.map((t=>r(c,t))),n=e.filter((t=>!!t)).map((t=>t&&t.command));return{command:new(0,at.GroupCommand)(n),followup:async()=>{const n=e.filter((t=>t)).map((t=>t&&{id:t.id,region:t.region}));await A.setSelectionsAndElements(t.stepName,[],n)}}}}validateInput(t,e,A,n){if(t.data&&t.data.maxLength){const A=t.data.maxLength;if(e.length>A)return n("Too many characters."),!1}if(!/^$|^[a-zA-Z0-9 ]+$/.test(e))return n("Unsupported characters."),!1;const i=e.toLowerCase();for(const t in A)if(i===A[t].toLowerCase().trim()&&""!==i)return n("Blocked profanity."),!1;return n(""),!0}};Bt=et("daQXa"),wt=et("gxilN");var en=et("lx5Wl");const An=t=>new Promise((e=>{fetch(t).then((t=>t.text())).then((t=>{e(t)})).catch((t=>console.error(t)))})),nn=t=>{const e=t.match(/<svg.*?<\/svg>/s)||[],A=e?.length>0?e[0]:"",n=(new DOMParser).parseFromString(A,"image/svg+xml").firstElementChild;if(!n)throw new Error("Failed to read SVG.");(0,Bt.sanitizeSvgTree)(n,!0);return(new XMLSerializer).serializeToString(n)},an=new class{async init(t,e,A){const n=Gt.getLocalOrUndefined(t.optionId);if(!n)return console.error(`Patchwork step ${t.stepName} is missing option.`),null;if(A)await this.reload(t,e,A);else{const A=Gt.getDefaultVariant(n.data);if(A&&A.assetKey)return this.selectVariantCommand(t,A,[],e,(()=>{}))}return null}async reload(t,e,A){const n=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),i=Object.values(A.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=Gt.getLocalOrUndefined(t.optionId)?.data;if(n?.selectedVariants){const A=n.selectedVariants[0].id;if(a&&A){const o=a.variants.find((t=>t.id===A));if(o){const A=i.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[o],A),e.updateStorage(t.stepName,{patchworkOffsets:n.storage?.patchworkOffsets}),e.setMandatoryFulfilled(t.stepName,!0)}}}}recalculate(t,e,A,n){const i=A.getCommandDispatcher();var a;n(!0);const o=e.map((t=>t.region?this.getRandomPosition(t.region):null)).filter((t=>!!t));i(new(0,at.GroupCommand)(e.map(((t,e)=>{const A=o[e];return 0===e&&(a=A),new(0,at.ShiftPatchworkCommand)(t.id,A.scale,-A.xOffset,-A.yOffset)})))),a&&A.updateStorage(t.stepName,{patchworkOffsets:o}),n(!1)}selectVariant(t,e,A,n,i){this.selectVariantCommand(t,e,A,n,i).then((t=>{t&&(n.getCommandDispatcher()(t.command),t.followup())}))}async selectVariantCommand(t,e,A,n,i){if(!e.assetKey)throw new Error("No Asset for Variant");const a=(await ve.getLocalOrFromServer(e.assetKey)).links.find((t=>"cdn"===t.rel));if(!a)throw new Error("Could not find CDN link for patchwork.");if(!t.data||!t.data.regions)return console.error("Trying to update patchwork in design with no region data"),null;i(!0);const o=a.href,s=n.getLayouts();var r;const c=t.data.regions.map((t=>this.getRandomPosition(t))),g=await An(o),l=nn(g),B=t.data.regions.map(((e,A)=>((e,A,n)=>{const i=s.find((t=>t.panelId===e.panelId));if(!i)throw new Error("Can't find layout");const a=c[A],o=ue();return 0===A&&(r=a),{regionElement:{id:o,region:e},command:new(0,at.CreateElementCommand)({stepRegion:e,stepName:t.stepName,id:o,svg:n,type:wt.LayoutElementType.Patchwork,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layerIndex:e.layerIndex,immutable:e.immutable,patchX:-a.xOffset,patchY:-a.yOffset,patchScale:a.scale},i)}})(e,A,l))),d=A.map((t=>new(0,at.DeleteElementCommand)(t.id))),h=B.map((t=>t.command));return{command:new(0,at.GroupCommand)([...d,...h]),followup:async()=>{await n.setSelectionsAndElements(t.stepName,[e],B.map((t=>t.regionElement))),r&&n.updateStorage(t.stepName,{patchworkOffsets:c}),i(!1)}}}getRandomPosition(t){const e=Math.random()*(.7-.25)+.25,A=1/e,n=1-e;return{scale:A,xOffset:Math.random()*n*A*t.width,yOffset:Math.random()*n*A*t.height}}constructPreviewSvg(e,A,n,i){if(!i||0===A.length)return null;try{const a=(0,ct.findElement)(A[0].id,n().map((t=>t.layoutState))).svg,o=e.data.regions[0],s={x:0,y:0,width:o.width,height:o.height,rotation:0,id:"patchwork-preview",svg:a,patchX:-i.xOffset,patchY:-i.yOffset,patchScale:i.scale},r=(0,t.jsx)(_(en),{...s}),g=_(c).renderToStaticMarkup(r);return`\n <svg\n version="1.1"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:xlink="http://www.w3.org/1999/xlink"\n width="${s.width}px"\n height="${s.height}px"\n viewBox="0 0 ${s.width} ${s.height}"\n >\n ${g}\n </svg>\n `}catch(t){return null}}};wt=et("gxilN");const on=new class{async init(t,e,A){const n=Gt.getLocalOrUndefined(t.optionId)?.data;if(!n)return null;if(A)await this.reload(t,e,A);else if(n.defaultVariant){const A=n.defaultVariant,i=n.variants.find((t=>!!t.assetKey&&t.id===A));if(i)return e.markStepsAsInitialised([t.stepName]),this.selectVariantCommand(t,i,e,(()=>{}))}return e.markStepsAsInitialised([t.stepName]),null}async reload(t,e,A){const n=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),i=Object.values(A.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=Gt.getLocalOrUndefined(t.optionId)?.data;if(n?.selectedVariants){const A=n.selectedVariants[0].id;if(a&&A){const n=a.variants.find((t=>t.id===A));if(n){const A=i.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[n],A),e.setMandatoryFulfilled(t.stepName,!0)}}}}selectVariant(t,e,A,n){this.selectVariantCommand(t,e,A,n).then((t=>{t&&(A.getCommandDispatcher()(t.command),t.followup())}))}async selectVariantCommand(t,e,A,n){if(!e.assetKey)throw new Error("No Asset for Variant");const i=(await ve.getLocalOrFromServer(e.assetKey)).links.find((t=>"cdn"===t.rel));if(!i)return console.error("No URL for picture!"),null;const a=i.href;n(!0),A.setMandatoryFulfilled(t.stepName,!1);const o=A.getRegionElements(t.stepName).map((t=>new(0,at.DeleteElementCommand)(t.id))),s=t.data.regions.map((e=>{const n=A.getLayouts().find((t=>t.panelId===e.panelId));if(!n)throw new Error(`Can not find layout for region: ${e.panelId}`);const i=ue();return{regionElement:{id:i,region:e},command:new(0,at.CreateElementCommand)({stepName:t.stepName,stepRegion:e,id:i,src:a,type:wt.LayoutElementType.Image,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layerIndex:e.layerIndex,immutable:e.immutable,preserveAspectRatio:"none"},n)}}));return{command:new(0,at.GroupCommand)([...o,...s.map((t=>t.command))]),followup:async()=>{await A.setSelectionsAndElements(t.stepName,[e],s.map((t=>t.regionElement))),A.setMandatoryFulfilled(t.stepName,!0),n(!1)}}}};wt=et("gxilN");const sn=new class{colourOptions(t){return Gt.getLocalOrUndefined(t.optionId)?Gt.getLocalOrUndefined(t.optionId).data.variants.map((t=>({fill:t.color,stroke:t.color,variant:t}))):t.data.colours.length>0?t.data.colours.map((t=>({fill:t,stroke:t}))):[]}async init(t,e,A){const n=Gt.getLocalOrUndefined(t.optionId);if(!n)return null;if(!A){const A=Gt.getDefaultVariant(n.data);if(!A)return null;const i={fill:A.color,stroke:A.color,variant:A};return this.selectVariantCommand(t,i,[],e)}return await this.reload(t,e,A),null}async reload(t,e,A){const n=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),i=Object.values(A.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=Gt.getLocalOrUndefined(t.optionId)?.data;if(n?.selectedVariants){const A=n.selectedVariants[0].id;if(a&&A){const n=a.variants.find((t=>t.id===A));if(n){const A=i.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[n],A),e.updateStorage(t.stepName,{colour:n.color||""}),e.setMandatoryFulfilled(t.stepName,!0)}}}}selectVariant(t,e,A,n){this.selectVariantCommand(t,e,A,n).then((t=>{t&&(n.getCommandDispatcher()(t.command),t.followup())}))}async selectVariantCommand(t,e,A,n){const i=n.getLayouts();if(A.length>0){const a=A=>{const n=A.region;if(!i.find((t=>t.panelId===n?.panelId)))return console.error(`Step ${t.stepName} missing layout for panel: ${n?.panelId}.`),null;const a=e.variant?.color;return a?new(0,at.IllustrationColorCommand)(A.id,"spiff-fill-shape",a):(console.error("Failed to change color."),null)},o=A.map(a).filter((t=>!!t));return{command:new(0,at.GroupCommand)(o),followup:async()=>{n.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],A),n.updateStorage(t.stepName,{colour:e.fill||""})}}}{const A=A=>{const n=i.find((t=>t.panelId===A.panelId));if(!n)return console.error(`Step ${t.stepName} missing layout for panel: ${A.panelId}.`),null;const a=`\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xmlnsXlink="http://www.w3.org/1999/xlink"\n xmlSpace="preserve"\n preserveAspectRatio="none"\n version="1.1"\n width="1"\n height="1"\n viewBox="0 0 1 1"\n >\n <rect\n x="0"\n y="0"\n width="1"\n height="1"\n class="spiff-fill-shape"\n fill="${e.variant?.color}"\n />\n </svg>\n `,o={};o["spiff-fill-shape"]={browserValue:e.variant.color};const s=ue();return{id:s,region:A,command:new(0,at.CreateElementCommand)({stepRegion:A,stepName:t.stepName,colors:o,id:s,svg:a,type:wt.LayoutElementType.Illustration,y:A.top,x:A.left,rotation:A.rotation,width:A.width,height:A.height,layerIndex:A.layerIndex,immutable:A.immutable,excludeFromExport:t.data.excludeFromPrint},n)}},a=t.data.regions.map(A),o=a.filter((t=>!!t)).map((t=>t?.command)),s=a.filter((t=>!!t)).map((t=>({id:t.id,region:t.region})));return{command:new(0,at.GroupCommand)(o),followup:async()=>{await n.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],s),n.updateStorage(t.stepName,{colour:e.fill||""})}}}}};var rn={};Object.defineProperty(rn,"__esModule",{value:!0}),rn.determineCorrectTextboxRegion=rn.determineCorrectFontSizeAndLines=void 0;Ft=et("22zA1"),Et=et("9SSHp");const cn=(t,e,A,n,i)=>{let a=e.split("\n"),o=a.length,s=a.map((t=>(0,Et.textWidth)(t,n,i)));const r=i.getApproximateHeight()*n;let c=!0;for(;c;){if(r+(o-1)*A>t.height)return[null,null];const e=Math.max(...s);if(e<=t.width)return[a,e];const g=s.reduce(((t,e,A,n)=>e>n[t]?A:t),0),l=a[g];let B=!1,d=l.length;for(;!B&&d>-1;){d=l.lastIndexOf(" ",d-1);const e=[l.slice(0,d),l.slice(d+1)],A=e.map((t=>(0,Et.textWidth)(t,n,i)));A[0]<=t.width&&(a=[...a.slice(0,g),...e,...a.slice(g+1)],s=[...s.slice(0,g),...A,...s.slice(g+1)],o+=1,B=!0)}B||(c=!1)}return[null,null]};rn.determineCorrectFontSizeAndLines=(t,e,A,n,i)=>{let a,o;const s=(0,Ft.getFontMetrics)(e),r=s.getFont();if(i.size){const e=t/r.unitsPerEm;return[a,o]=cn(A,n,t,e,s),[i.size,a,o]}let c=6-Et.fontSizeStep;if(""!==n){let t=[n],e=0;for(;(!i.maxSize||c<=i.maxSize)&&t;)c+=Et.fontSizeStep,e=c/r.unitsPerEm,[t,o]=cn(A,n,c,e,s)}c>6&&(c-=Et.fontSizeStep),i.minSize&&c<i.minSize&&(c=i.minSize);const g=c/r.unitsPerEm;return[a,o]=cn(A,n,c,g,s),[c,a,o]};rn.determineCorrectTextboxRegion=(t,e,A,n,i)=>{let a=Object.assign({},t),o=Object.assign({},t);const s=n.join(" ");let[r,c,g]=(0,rn.determineCorrectFontSizeAndLines)(A,e,o,s,{size:0,minSize:A,maxSize:A});var l,B;return g&&g<a.width&&(o.width=g,"left"===i?(o.left+=Math.sin(a.rotation*Math.PI/360)*(a.width-g),o.top+=Math.sin(a.rotation*Math.PI/180)*(g-a.width)/2):o.left+="right"===i?a.width-g:(a.width-g)/2,[r,c]=(0,rn.determineCorrectFontSizeAndLines)(A,e,o,s,{size:A}),r===A&&c&&(l=n,B=c,l.map(((t,e)=>[t,B[e]]))).every((([t,e])=>t===e))&&(a=o)),a};Et=et("9SSHp"),wt=et("gxilN"),Ft=et("22zA1");function gn(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}const ln=new class{constructor(){gn(this,"latestToast",void 0),gn(this,"toastType",void 0),gn(this,"toastCallbacks",void 0),this.latestToast=null,this.toastType=null,this.toastCallbacks=[]}addToastCallback(t){t({toastMessage:this.latestToast,toastType:this.toastType}),this.toastCallbacks.push(t)}setLatestToast(t,e){this.latestToast=t,this.toastType=e,this.onToastChange()}onToastChange(){this.toastCallbacks.forEach((t=>t({toastMessage:this.latestToast,toastType:this.toastType})))}};function Bn(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}class dn extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=dn.name}}class hn extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=hn.name}}const wn=new class{constructor(){Bn(this,"cachedColors",new Map),Bn(this,"filterUnsupportedCharacters",((t,e)=>{let A=e.replace(/(\r\n|\r|(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]))/gm,"");const n=[],i=t?.fontData?(0,Ft.getFontMetrics)(t?.fontData):void 0;if(i){const t=A.split("").map((t=>i.getFont().charToGlyph(t)));for(let e=0;e<t.length;e++){const i=".notdef"===t[e].name;"\n"===A.charAt(e)||i&&n.push(String.fromCharCode(A.charCodeAt(e)))}}for(let t=0;t<n.length;t++)A=A.replaceAll(n[t],"");return A})),Bn(this,"getErrorsForText",((t,e,A)=>{const n=[];e.data&&e.data.maxLength&&t.length>e.data.maxLength&&n.push({localizationKey:"workflow.steps.text.characterLimit"});const i=A.getProfanities(),a=t.toLowerCase();if(""!==a)for(const t in i){if(a===i[t].toLowerCase().trim()){n.push({localizationKey:"workflow.steps.text.blockedProfanity"});break}}return!e.data.allowNewlines&&(t.includes("\n")||t.includes("\r"))&&n.push({localizationKey:"workflow.steps.text.multipleLines"}),n})),Bn(this,"textAlign",(t=>t.vertical?"center":t.textAlign||"center"))}async init(t,e,A){const n=Gt.getLocalOrUndefined(t.optionId);if(!n)return null;if(A)await this.reload(t,e,A);else{const A=t.data.defaultText||"";e.updateStorage(t.stepName,{inputText:A});this.getDefaultColor(t.data)&&e.updateMetadata(t.stepName,{color:t.data.colour});const i=Gt.getDefaultVariant(n.data);if(i)return this.selectVariantCommand(t,i,{},[],e,!1,(()=>{}),(()=>{}))}return null}async reload(t,e,A){const n=e.getSerializedStep(t.stepName,A.serializableWorkflow.steps),i=Object.values(A.layouts).map((t=>t.elements)).flat().filter((e=>e.stepName===t.stepName)),a=(await Gt.getLocalOrFromServer(zt,t.optionId))?.data;if(n?.selectedVariants){const A=n.selectedVariants[0].id;if(a&&A){const o=a.variants.find((t=>t.id===A));if(o){const A=await this.fontDataFromVariant(o),a=i.map((t=>({id:t.id,region:t.stepRegion})));await e.setSelectionsAndElements(t.stepName,[o],a),e.updateMetadata(t.stepName,{color:n.storage?.color,text:n.storage?.text}),e.updateStorage(t.stepName,{text:n.storage?.text});const s=i.map((t=>new(0,at.FontSourceCommand)(t.id,A))),r=new(0,at.GroupCommand)(s);e.getCommandDispatcher()(r),e.setMandatoryFulfilled(t.stepName,!0)}}}}getDefaultColor(t){if(Gt.getLocalOrUndefined(t.colourOptionId)){const e=Gt.getDefaultVariant(Gt.getLocalOrUndefined(t.colourOptionId).data);if(e)return e.color}if(t.colour)return t.colour}findLayoutElement(t,e,A){const n=t.getRegionElements(e.stepName);if(n[0])return(0,ct.findElement)(n[0].id,A().map((t=>t.layoutState)))}findLayoutElements(t,e,A){return t.getRegionElements(e.stepName).map((t=>(0,ct.findElement)(t.id,A().map((t=>t.layoutState)))))}availableColors(t){const e=this.cachedColors.get(t.stepName);if(e)return e;if(Gt.getLocalOrUndefined(t.data.colourOptionId)){const e=Gt.getLocalOrUndefined(t.data.colourOptionId).data.variants.map((t=>({fill:t.color,stroke:t.color,variant:t})));return this.cachedColors.set(t.stepName,e),e}if(t.data.colours&&t.data.colours.length>0){const e=t.data.colours.map((t=>({fill:t,stroke:t})));return this.cachedColors.set(t.stepName,e),e}return[]}changeColor(t,e,A,n){if(!t.data||!t.data.regions)return;const i=n.getCommandDispatcher();n.updateStorage(t.stepName,{color:e.fill}),e.variant?n.updateMetadata(t.stepName,{color:e.variant.name}):n.updateMetadata(t.stepName,{color:e.fill});for(const t of A){if(!e.fill)throw new Error("Fill not set on new color selection!");i(new(0,at.FontColorCommand)(t.id,e.fill))}}updateInputText(t,e,A,n,i,a){const o=e?t:this.injectReplaceableText(t,n.data),s=(0,Et.applyTextTransformations)(o,{vertical:n.data.vertical,uppercase:n.data.uppercase});let r={command:void 0,helperText:"",errors:this.getErrorsForText(t,n,a)};if(r.errors.length>0)return r.helperText=r.errors[0].localizationKey,r;const c=(n.data.maxLength-o.length).toString();r.helperText=`${c} characters remaining`,a.updateStorage(n.stepName,{text:t}),a.updateMetadata(n.stepName,{text:s}),i.defaultCleared&&a.setMandatoryFulfilled(n.stepName,!0);const g=a.getTransaction().bulk&&n.data.varyText||!1,l=[],B=new Map,d=new Map;for(const t of A){if(!t.fontData)throw new Error("Failed to resolve font data for text.");const[e,A]=(0,rn.determineCorrectFontSizeAndLines)(t.fontSize,t.fontData,{left:t.x,top:t.y,width:t.width,height:t.height,rotation:t.rotation,panelId:""},s,{size:n.data.size,minSize:n.data.minSize,maxSize:n.data.maxSize});B.set(t.id,e),d.set(t.id,A);const i=n.data.curved?s:(A||[]).join("\n");l.push(this.generateTextChangeCommandsForRegion(e,n.data,t.id,i,g))}if(!n.data.curved&&A.length>0){if(!Array.from(d.values()).every((t=>t)))return r.errors.push({localizationKey:"workflow.steps.text.doesNotFit"}),r}return r.command=new(0,at.GroupCommand)(l),r.command.varying=g,r}async changeInputTextWithRegion(t,e,A,n,i,a,o,s,r,c){const g=n.replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,""),l=o?g:this.injectReplaceableText(g,t.data),B=a.getRegionElements(t.stepName),d=new Map,h=new Map;for(const n of B)if(n.region){const[i,a]=(0,rn.determineCorrectFontSizeAndLines)(e,A,n.region,l,{size:t.data.size,minSize:t.data.minSize,maxSize:t.data.maxSize});d.set(n.id,i),h.set(n.id,a)}const w=(()=>{if(t.data&&t.data.maxLength&&l.length>t.data.maxLength)return c&&c(!0),{info:"0"};var e=l.toLowerCase();const A=a.getProfanities();for(const t in A)if(e===A[t].toLowerCase().trim()&&""!==e)return s(!0),{error:"Blocked profanity."};if(!t.data.allowNewlines&&(l.includes("\n")||l.includes("\r")))return s(!0),{error:"Cannot span multiple lines."};if(!t.data.curved){if(!Array.from(h.values()).every((t=>t)))return s(!0),{error:"Does not fit."}}return s(!1),{info:(t.data.maxLength-l.length).toString()}})();if(w.error)return void r(w.error);if(r(`${w.info} characters remaining`||""),c)return;a.updateStorage(t.stepName,{text:g}),a.updateMetadata(t.stepName,{text:this.injectReplaceableText(g,t.data)});const E=a.getTransaction().bulk&&t.data.varyText||!1;i.defaultCleared&&a.setMandatoryFulfilled(t.stepName,!0);const u=[];for(const e of B){const A=t.data.curved?l:(h.get(e.id)||[]).join("\n");u.push(this.generateTextChangeCommandsForRegion(d.get(e.id)||1,t.data,e.id,A,E))}const C=new(0,at.GroupCommand)(u);return C.varying=E,C}selectVariant(t,e,A,n,i,a,o,s){this.selectVariantCommand(t,e,A,n,i,a,o,s).then((t=>{i.getCommandDispatcher()(t.command),t.followup()}))}async fontDataFromVariant(t){if(!t.assetKey)throw new Error("No Asset for Variant");const e=(await ve.getLocalOrFromServer(t.assetKey)).links.find((t=>"cdn"===t.rel))?.href;if(!e)throw new Error("Failed to find resource link for font in text step.");return{assetUrl:e,name:(await(0,Ft.loadFontFromExternalUrl)(e)).names.fullName.en}}async findOrCreateElements(t,e,A){const n=t.getTransaction().bulk&&e.data.varyText||!1,i=this.findLayoutElements(t,e,A);if(i.length>0)return i;const a=Gt.getLocalOrUndefined(e.optionId);if(!a)throw new Error(`No option for step ${e.stepName}`);const o=Gt.getDefaultVariant(a.data);if(!o)throw new Error(`No default variant for step ${e.stepName}`);const s=await this.fontDataFromVariant(o),r=await this.createTextboxRegions(e.stepName,o,e.data,s,{},t),c=r.map((t=>t.commands)),g=new(0,at.GroupCommand)(c.flat());return g.varying=n,t.getCommandDispatcher()(g),r.map((t=>t.newElement))}async selectVariantCommand(t,e,A,n,i,a,o,s){const r=ue();i.markUpdatePending(r);const c=await this.fontDataFromVariant(e);if(n.length>0){const g=n.map((t=>new(0,at.FontSourceCommand)(t.id,c))),l=await this.changeInputTextWithRegion(t,t.data.size||30,c,A.text||"",A,i,a,o,s);l&&g.push(l);return{command:new(0,at.GroupCommand)(g),followup:async()=>{i.markUpdateCompleted(r),await i.setSelectionsAndElements(t.stepName,[e],n)}}}{const n=await this.createTextboxRegions(t.stepName,e,t.data,c,A,i),g=await this.changeInputTextWithRegion(t,t.data.size||30,c,n[0]?.newElement.text||A.text||"",A,i,a,o,s),l=n.flatMap((t=>t.commands));g&&l.push(g);return{command:new(0,at.GroupCommand)(l),followup:async()=>{i.markUpdateCompleted(r)}}}}injectReplaceableText(t,e){return e.replaceableText?e.replaceableText.replace("{{}}",t):t}async createTextboxRegions(t,e,A,n,i,a){if(!A||!A.regions)throw new Error("Step data not supplied");const o=a.getTransaction().bulk&&A.varyText||!1,s=o?"":i.text||A.defaultText||"",r=await Promise.all(A.regions.map((e=>{const r=a.getLayouts().find((t=>t.panelId===e.panelId)),c=ue();try{const a=this.getDefaultColor(A),g=a||"#000000";if(!r)throw new hn("Failed to find layout for region: "+e.panelId);const l={stepRegion:e,stepName:t,align:this.textAlign(A),fill:i.color?i.color:g,fontSize:A.size||30,fontData:n,id:c,layerIndex:e.layerIndex,rotation:e.rotation,text:(0,Et.applyTextTransformations)(s,{vertical:A.vertical,uppercase:A.uppercase}),input:s,type:wt.LayoutElementType.Textbox,vertical:A.vertical,x:e.left,y:e.top,height:e.height,width:e.width,immutable:e.immutable,verticalAlign:A.verticalAlign||"middle",curved:A.curved,paths:A.paths},B=[];if(!A.curved){if(!l.fontData)throw new Error("Failed to resolve font data for text.");const t=new Map,n=new Map,[i,a]=(0,rn.determineCorrectFontSizeAndLines)(l.fontSize,l.fontData,e,s,{size:A.size,minSize:A.minSize,maxSize:A.maxSize});t.set(c,i),n.set(c,a);const r=(n.get(c)||[]).join("\n");B.push(this.generateTextChangeCommandsForRegion(t.get(c)||1,A,c,r,o))}const d=new(0,at.CreateElementCommand)(l,r);return d.varying=o,{regionElement:{id:c,region:e},commands:[d,...B],newElement:l,fontData:n}}catch(t){throw console.log(t),new dn("Error adding font to region")}}))).catch((t=>{throw t instanceof dn?(ln.setLatestToast("Failed to load font.",un.Error),t):t instanceof hn?t:new Error(t)}));return await a.setSelectionsAndElements(t,[e],r.map((t=>t.regionElement))),a.updateMetadata(t,{text:s}),a.updateStorage(t,{text:s}),r}generateTextChangeCommandsForRegion(t,e,A,n,i){const a=[],o=new(0,at.TextChangeCommand)(A,n);if(o.varying=i,a.push(o),!e.size){const e=new(0,at.FontSizeCommand)(A,t);e.varying=i,a.push(e)}const s=new(0,at.GroupCommand)(a);return s.varying=i,s}};function En(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}let un;var Cn;(Cn=un||(un={})).Error="Error",Cn.Warning="Warning";class Qn extends GA{constructor(t){super(),En(this,"update",void 0),En(this,"createdAt",new Date),this.update=t}async execute(){await this.update(),await new Promise((t=>{window.setTimeout((()=>{t()}),1e3)}))}}class pn{constructor(t,e,A,n,i,a,o,s,r){En(this,"initialReducerState",void 0),En(this,"transaction",void 0),En(this,"updateTransaction",void 0),En(this,"ensuredInitialised",void 0),En(this,"confirmedDesign",void 0),En(this,"editedSteps",void 0),En(this,"informationResults",void 0),En(this,"layouts",void 0),En(this,"mandatorySteps",void 0),En(this,"pendingUpdates",void 0),En(this,"selectionCost",void 0),En(this,"workflow",void 0),En(this,"stepSpecificServices",void 0),En(this,"previewService",void 0),En(this,"profanityFilter",void 0),En(this,"pollers",void 0),En(this,"commandContext",void 0),En(this,"stepElements",void 0),En(this,"stepInitialised",void 0),En(this,"stepMetadata",void 0),En(this,"stepSelections",void 0),En(this,"storage",void 0),En(this,"confirmCallbacks",void 0),En(this,"editedCallbacks",void 0),En(this,"elementsCallbacks",void 0),En(this,"ensuredInitialisedCallbacks",void 0),En(this,"informationResultCallbacks",void 0),En(this,"initCallbacks",void 0),En(this,"makingAdjustmentsCallback",void 0),En(this,"mandatoryCallbacks",void 0),En(this,"metadataCallbacks",void 0),En(this,"selectionCallbacks",void 0),En(this,"stepSpecificStorageCallbacks",void 0),En(this,"storageCallbacks",void 0),En(this,"updateCallbacks",void 0),En(this,"currentVariationRecordCallbacks",void 0),En(this,"variationRecordCallbacks",void 0),En(this,"processingStepInitialisation",void 0),En(this,"allScenes",void 0),En(this,"product",void 0),En(this,"invalidModelVariants",void 0),En(this,"currentAdjustingStepId",void 0),En(this,"renderableContextService",void 0),En(this,"workflowStatePromiseQueue",new OA(1)),En(this,"variationRecords",[]),En(this,"currentVariationRecord",void 0),this.updateTransaction=i,this.commandContext=n,this.initialReducerState=a.workflowState,this.transaction=a,this.ensuredInitialised=!1,this.confirmedDesign=!1,this.editedSteps={},this.informationResults=[],this.mandatorySteps={},this.pendingUpdates=[],this.selectionCost=0,this.workflow=t,this.stepSpecificServices={},this.profanityFilter=e,this.pollers=[],this.allScenes=[],this.processingStepInitialisation=!1,this.layouts=A,this.product=r,this.previewService=o,this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.confirmCallbacks=[],this.editedCallbacks=[],this.elementsCallbacks=[],this.ensuredInitialisedCallbacks=[],this.informationResultCallbacks=[],this.initCallbacks=[],this.mandatoryCallbacks=[],this.makingAdjustmentsCallback=[],this.metadataCallbacks=[],this.selectionCallbacks=[],this.stepSpecificStorageCallbacks={},this.storageCallbacks=[],this.updateCallbacks=[],this.currentVariationRecordCallbacks=[],this.variationRecordCallbacks=[],this.invalidModelVariants=[],this.currentAdjustingStepId="",this.renderableContextService=s,this.currentVariationRecord=null,this.ensureStepsAreLoaded(),this.fireReloadAnimation()}addVariationRecord(t){const e={...t,recordNumber:this.variationRecords.reduce(((t,e)=>e.recordNumber>t?e.recordNumber:t),0)+1};return this.variationRecords.push(e),this.onVariationRecordsChange(),e}removeVariationRecord(t){if(this.variationRecords=this.variationRecords.filter((e=>e.recordNumber!==t)),this.variationRecords.forEach(((t,e)=>{t.recordNumber=e+1})),this.currentVariationRecord&&this.currentVariationRecord.recordNumber===t){const t=this.currentVariationRecord.recordNumber,e=t>1?this.variationRecords[t-2]:this.variationRecords[0];this.setCurrentVariationRecord(e||null)}return this.onVariationRecordsChange(),this.variationRecords}setVariationRecords(t){this.variationRecords=t,this.onVariationRecordsChange(),0===t.length?this.setCurrentVariationRecord(null):this.setCurrentVariationRecord(t[0])}setCurrentVariationRecord(t){this.currentVariationRecord=t,this.onCurrentVariationRecordChange()}fireReloadAnimation(){if(!this.initialReducerState)return;const t=this.workflow.finalizeStepConfig;t&&(t.lookAtAnimation&&this.previewService?.executeCameraAnimation(t.lookAtAnimation),t.modelAnimation&&this.previewService?.executeModelAnimation(t.modelAnimation))}addConfirmCallback(t){t(this.confirmedDesign),this.confirmCallbacks.push(t)}addEditedCallback(t){t(this.editedSteps),this.editedCallbacks.push(t)}addElementsCallback(t){t(this.stepElements),this.elementsCallbacks.push(t)}addEnsuredInitialisedCallback(t){t(this.ensuredInitialised),this.ensuredInitialisedCallbacks.push(t)}addInformationResultCallback(t){t(this.informationResults),this.informationResultCallbacks.push(t)}addInitCallback(t){t(this.stepInitialised),this.initCallbacks.push(t)}addMandatoryCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}addMetadataCallback(t){t(this.stepMetadata),this.metadataCallbacks.push(t)}addSelectionCallback(t){t({invalidModelVariants:this.invalidModelVariants,selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:this.traversableScenes()}),this.selectionCallbacks.push(t)}addStepSpecificStorageCallback(t,e){Object.keys(this.storage).includes(e)||(this.storage[e]={}),t(this.storage[e]),Object.keys(this.stepSpecificStorageCallbacks).includes(e)||(this.stepSpecificStorageCallbacks[e]=[]),this.stepSpecificStorageCallbacks[e].push(t)}addStorageCallback(t){t(this.storage),this.storageCallbacks.push(t)}addUpdateCallback(t){t(this.pendingUpdates.length>0),this.updateCallbacks.push(t)}addMakingAdjustmentsCallback(t){t(this.currentAdjustingStepId),this.makingAdjustmentsCallback.push(t)}addCurrentVariationCallback(t){t(this.currentVariationRecord),this.currentVariationRecordCallbacks.push(t)}addVariationRecordsCallback(t){t(this.variationRecords),this.variationRecordCallbacks.push(t)}addPoller(t){this.pollers.push(t)}getLayouts(){return this.layouts}getLayoutPreviewService(){return this.renderableContextService}getPreviewService(){return this.previewService}getProductName(){return this.product?.name}getProfanities(){return this.profanityFilter}getRegionElements(t){return this.stepElements[t]||[]}getStepSpecificServices(t){return this.stepSpecificServices[t]}getTransaction(){return this.transaction}getWorkflow(){return this.workflow}getCommandDispatcher(){return t=>this.commandContext.apply(t)}getWorkflowSelections(){const t={};return this.workflow.steps.forEach((e=>{const A=this.stepSelections[e.stepName];if(A&&A.selectedVariants&&A.selectedVariants.length>0){const n=this.workflow.stepGroups.find((t=>t.stepNames.includes(e.stepName)));Gt.getLocalOrUndefined(e.optionId)&&(t[e.stepName]={groupName:n?n.name:void 0,optionName:Gt.getLocalOrUndefined(e.optionId).data.name,selections:A.selectedVariants})}})),t}markStepsAsInitialised(t){const e={...this.stepInitialised};t.forEach((t=>{e[t]=!0})),this.stepInitialised=e,this.onInitChange()}markUpdateCompleted(t){this.pendingUpdates=this.pendingUpdates.filter((e=>e!==t)),this.onUpdateChange()}markUpdatePending(t){this.pendingUpdates=[...this.pendingUpdates,t],this.onUpdateChange()}setAllScenes(t){const e=this.allScenes;this.allScenes=SA(this.workflow,t),_(Q)(e,this.allScenes)||this.ensureStepsAreLoaded()}setEditedStatus(t,e){this.editedSteps={...this.editedSteps,[t]:e},this.onEditedChange()}setInformationResults(t){this.informationResults=[...t],this.onInformationResultChange()}setCurrentAdjustingStepId(t){this.currentAdjustingStepId=t,this.onMakingAdjustmentsChange()}setMandatoryFulfilled(t,e){this.mandatorySteps[t]!==e&&(this.mandatorySteps={...this.mandatorySteps,[t]:e},this.onMandatoryChange())}async setSelectionsAndElements(t,e,A){const n=this.stepSelections;this.stepSelections={...this.stepSelections,[t]:{selectedVariants:e}},this.selectionCost=Object.values(this.stepSelections).reduce(((t,e)=>t+e.selectedVariants.map((t=>t.priceModifier)).reduce(((t,e)=>t+e),0)),0),this.workflow.steps.forEach((t=>{RA(t,this.stepSelections)||(this.stepInitialised[t.stepName]=!1,delete this.stepMetadata[t.stepName],delete this.stepSelections[t.stepName],delete this.storage[t.stepName])}));const i=this.allScenes,a=HA(i,n),o=HA(i,this.stepSelections),s=a.map((t=>t.silentSteps)).flat(),r=o.map((t=>t.silentSteps)).flat().filter((t=>!s.some((e=>e.stepName===t.stepName))));s.forEach((t=>{RA(t,this.stepSelections)||(this.stepInitialised[t.stepName]=!1)})),this.invalidModelVariants=this.getInvalidModelVariants();const c=this.getInvalidCanvasRegions(),{stepElements:g,commands:l}=await this.stepElementsForIntroducedSilentSteps(r);this.processingStepInitialisation||this.ensureStepsAreLoaded(),this.stepElements={...this.stepElements,...g,[t]:A},this.removeElements(c),this.onElementsChange();if(this.workflow.steps.find((e=>e.stepName===t))?.type===xA.StepType.Frame){this.getStepSpecificServices(t)?.frameService?.setTargetElements(A.map((t=>t.id)))}const B=[...c.map((t=>new(0,at.DeleteElementCommand)(t.id))),...l,new(0,at.UpdateWorkflowStateCommand)(this.constructSerializableWorkflow())];B.length>0&&this.commandContext.apply(new(0,at.GroupCommand)(B)),this.onSelectionChange()}toggleDesignConfirmed(){this.confirmedDesign=!this.confirmedDesign,this.onConfirmChange()}toggleMakingAdjustmentsCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}async updateStorage(t,e){const A={...this.storage,[t]:{...this.storage[t],...e}};if(!_(Q)(A,this.storage)){this.storage=A;const e=new(0,at.UpdateWorkflowStateCommand)(this.constructSerializableWorkflow());this.commandContext.apply(e),this.onStepSpecificStorageChange(t),this.onStorageChange()}}constructSerializableWorkflow(){const t=[];return this.allScenes.forEach((e=>{e.renderableSteps.forEach((e=>{const A={stepName:e.stepName};A.storage=this.storage[e.stepName],A.selectedVariants=this.stepSelections[e.stepName]?.selectedVariants?.map((t=>({id:t.id,priceModifier:t.priceModifier}))),t.push(A)}))})),{steps:t}}updateStateWithServer(t){const e=this.serialize(t);this.workflowStatePromiseQueue.enqueue(new Qn((async()=>{await this.updateTransaction({variables:{id:this.transaction.id,workflowState:e.transaction}})})))}async updateStateWithServerImmediate(t){const e=this.serialize(t);return new Qn((async()=>{await this.updateTransaction({variables:{id:this.transaction.id,workflowState:e.transaction}})})).execute()}serialize(t){const e=JSON.stringify(this.dehydrateState(_(g)(t().transaction))),A=t().variation;if(!A)return{transaction:e};const n={layouts:{},serializableWorkflow:{steps:[]},..._(g)(A)||{}};return{transaction:e,variation:JSON.stringify(this.dehydrateState(n))}}dehydrateState(t){for(const e of Object.values(t.layouts).map((t=>t.elements)).flat())"illustration"===e.type&&(delete e.cachedObjectURL,e.src&&delete e.svg);return t}async outstandingRequestsPromise(){return this.workflowStatePromiseQueue.finalize()}updateMetadata(t,e){this.stepMetadata={...this.stepMetadata,[t]:{...this.stepMetadata[t],...e}},this.onMetadataChange()}removeElements(t){this.stepElements=((t,e)=>Object.keys(t).reduce(((A,n)=>{const i=[...t[n]||[]];return e.forEach((t=>{const e=i.findIndex((e=>e.id===t.id));e>-1&&i.splice(e,1)})),A[n]=i,A}),{}))(this.stepElements,t)}getInvalidCanvasRegions(){return this.workflow.steps.reduce(((t,e)=>(RA(e,this.stepSelections)||this.stepElements[e.stepName]&&this.stepElements[e.stepName].forEach((e=>t.push(e))),t)),[])}getInvalidModelVariants(){return this.workflow.steps.reduce(((t,e)=>(!RA(e,this.stepSelections)&&Gt.getLocalOrUndefined(e.optionId)&&"Model"===e.type&&t.push(Gt.getLocalOrUndefined(e.optionId).data.id),t)),[])}async stepElementsForIntroducedSilentSteps(t){const e=this.product;if(!e)return Promise.resolve({stepElements:{},commands:[]});const A=(t,e,A)=>"SilentIllustration"===t.type?new KA(t,e).trigger():"ProductOverlay"===t.type?new KA(t,e,A).trigger():Promise.reject("Unknown silent step. This is a bug"),n=t.filter((t=>!this.stepInitialised[t.stepName]));let i={stepElements:{},commands:[]};for(const t of n){this.markStepsAsInitialised([t.stepName]);const n=await A(t,this.layouts,e);i.stepElements[t.stepName]=n.map((t=>t.regionElement)),i.commands=[...i.commands,...n.map((t=>t.command))]}return i}getSerializedStep(t,e){return e.find((e=>e.stepName===t))}getCurrentVariationRecord(){return this.currentVariationRecord||void 0}getVariationRecords(){return this.variationRecords}stepNotReadyForInitialization(t){return("Model"===t.type||"Material"===t.type)&&!this.previewService}async reset(){this.commandContext.getAllLayouts().forEach((t=>t.layoutState.elements.forEach((t=>{this.getCommandDispatcher()(new(0,at.DeleteElementCommand)(t.id))})))),this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.currentVariationRecord=null,await this.ensureStepsAreLoaded()}async ensureStepsAreLoaded(){const t=this.initialReducerState?JSON.parse(this.initialReducerState):void 0;this.processingStepInitialisation=!0,await Gt.cacheRequiredOptions(this.workflow);const e=this.allScenes,A=HA(e,this.stepSelections).map((t=>t.silentSteps)).flat(),{stepElements:n,commands:i}=await this.stepElementsForIntroducedSilentSteps(A);this.stepElements={...this.stepElements,...n};const a=bA(this.allScenes,this.stepSelections).map((t=>t.renderableSteps)),o=[],s=[];i.forEach((t=>o.push({command:t,followup:async()=>{}})));const r=a.flat();for(const e of r)if(!this.stepInitialised[e.stepName]&&!this.stepNotReadyForInitialization(e))switch(this.stepInitialised[e.stepName]=!0,e.type){case"Bulk":this.updateStorage("Bulk",t?.serializableWorkflow.steps.find((t=>"Bulk"===t.stepName))?.storage||{});break;case"DigitalContent":o.push(await qA.init(e,this,t));break;case"Finish":case"Introduction":default:break;case"Frame":case"Photo":const A=new TA(e.data.forceImageCover);A.connectWorkflowManager(this,e.stepName),this.stepSpecificServices[e.stepName]={frameService:A},o.push(await ZA.init(e,this,t));break;case"Illustration":o.push(await mA.init(e,this,t));break;case"Material":s.push(await _A.init(e,this,t));break;case"Model":s.push(await $A.init(e,this,t));break;case"Module":const n=e.data.module;this.stepSpecificServices[e.stepName]={module:await _(jA)(n)},o.push(await tn.init(e,this,t));break;case"Patchwork":o.push(await an.init(e,this,t));break;case"Picture":o.push(await on.init(e,this,t));break;case"Question":s.push(await yA.init(e,this,t));break;case"Shape":o.push(await sn.init(e,this,t));break;case"Text":o.push(await wn.init(e,this,t))}const c=o.filter((t=>!!t));for(const t of c)this.commandContext.apply(t.command),await t.followup();const g=s.filter((t=>!!t));if(g.length>0)for(const t of g)await t();(c.length>0||g.length>0)&&await this.ensureStepsAreLoaded();const l=r.map((t=>{if(Gt.getLocalOrUndefined(t.optionId))return Gt.getDefaultVariant(Gt.getLocalOrUndefined(t.optionId).data)}));(t||r.length>0&&!l.some((t=>!!t))||c.length>0||g.length>0)&&(this.ensuredInitialised=!0,this.onEnsuredInitialisedChange()),this.processingStepInitialisation=!1,this.onSelectionChange(),this.onInitChange()}onConfirmChange(){this.confirmCallbacks.forEach((t=>t(this.confirmedDesign)))}onEditedChange(){this.editedCallbacks.forEach((t=>t(this.editedSteps)))}onEnsuredInitialisedChange(){this.ensuredInitialisedCallbacks.forEach((t=>t(this.ensuredInitialised)))}onElementsChange(){this.elementsCallbacks.forEach((t=>t(this.stepElements)))}onInformationResultChange(){this.informationResultCallbacks.forEach((t=>t(this.informationResults)))}onInitChange(){this.initCallbacks.forEach((t=>t(this.stepInitialised)))}onMakingAdjustmentsChange(){this.makingAdjustmentsCallback.forEach((t=>{t(this.currentAdjustingStepId)}))}onMandatoryChange(){this.mandatoryCallbacks.forEach((t=>t(this.mandatorySteps)))}onMetadataChange(){this.metadataCallbacks.forEach((t=>{t(this.stepMetadata)}))}onSelectionChange(){this.selectionCallbacks.forEach((t=>t({invalidModelVariants:this.invalidModelVariants,selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:this.traversableScenes()})))}onStepSpecificStorageChange(t){Object.keys(this.stepSpecificStorageCallbacks).includes(t)||(this.stepSpecificStorageCallbacks[t]=[]),this.stepSpecificStorageCallbacks[t].forEach((e=>e(this.storage[t])))}onStorageChange(){this.storageCallbacks.forEach((t=>t(this.storage)))}onUpdateChange(){this.updateCallbacks.forEach((t=>{t(this.pendingUpdates.length>0)}))}onCurrentVariationRecordChange(){this.currentVariationRecordCallbacks.forEach((t=>{t(this.currentVariationRecord)}))}onVariationRecordsChange(){this.variationRecordCallbacks.forEach((t=>{t(this.variationRecords)}))}traversableScenes(){const t=this.allScenes;return UA(t,this.stepSelections)}}function mn(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}class fn{constructor(t){if(mn(this,"commandContext",void 0),mn(this,"workflowManager",void 0),mn(this,"isReadOnly",void 0),!t.workflow)throw new Error("No Workflow ID provided.");const e=t.layouts;this.commandContext=new(0,At.CommandContext),this.commandContext.initialize(e,t.reloadedState),this.isReadOnly=!!t.transaction.lineItem?.id||!Ne.getMap("transactionOwnerIds")?.get(t.transaction.id);this.workflowManager=new pn(t.workflow,t.product.profanities?.map((t=>t.word))||[],e,this.commandContext,(async t=>{this.isReadOnly||Kt.getShadowGraphqlClient().mutate({...t,mutation:wA})}),t.transaction,t.previewService,t.renderableContextService,t.product)}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.commandContext}getWorkflowManager(){return this.workflowManager}async updateVariationRecords(t){await Kt.getShadowGraphqlClient().mutate({mutation:uA,variables:{transactionId:this.workflowManager.getTransaction().id,updates:t.map((t=>({recordNumber:t.recordNumber,values:t.values.map((t=>({aspect:t.aspect,stepName:t.stepName,value:t.value})))})))}})}async createPreviewImage(){const t=document.createElement("canvas");t.width=1024,t.height=1024;const e=this.commandContext.getAllLayouts()[this.workflowManager.getWorkflow().defaultPreviewPanelIndex||0],A=e.layoutState.layout.previewRegion?{x:e.layoutState.layout.previewRegion.left,y:e.layoutState.layout.previewRegion.top,width:e.layoutState.layout.previewRegion.width,height:e.layoutState.layout.previewRegion.height}:{x:0,y:0,width:e.layoutState.layout.width,height:e.layoutState.layout.height},n=this.commandContext.getLayoutById(e.layoutState.layout.id),i=t.getContext("2d");if(!i)throw new Error("Failed to build 2D context for preview image creation.");const a=(0,At.getSvgString)(n.layoutState.layout,n.layoutState.elements,{region:A}),o=await _(V).from(i,a,{anonymousCrossOrigin:!0,ignoreDimensions:!1});await o.render();const s=await(async t=>new Promise(((e,A)=>{try{t.toBlob((t=>{if(t){const A=URL.createObjectURL(t);e(A)}}))}catch(t){A(t)}})))(t);return t.toDataURL(s)}getStepById(t){const e=this.getWorkflowManager().getWorkflow().steps.find((e=>e.stepName===t));if(e)return new FA(this.getWorkflowManager(),e)}getStepByName(t){const e=this.getWorkflowManager().getWorkflow().steps.find((e=>e.stepTitle===t));if(e)return new FA(this.getWorkflowManager(),e)}getStepsByType(t){return this.getWorkflowManager().getWorkflow().steps.filter((e=>e.type===t)).map((t=>new FA(this.getWorkflowManager(),t)))}async onDesignFinished(t,e,A,n){const i=(t,e,A)=>{const n={};return e.steps.forEach((e=>{Object.assign(n,(e=>{const n={};if("Frame"===e.type){const i=t[e.stepName],a=e.data;if(!i||a.hideImageInCart&&A)return n;n[`${e.stepTitle} exportedData.image`]=i.image}if("Illustration"===e.type){const i=t[e.stepName],a=e.data;if(!i||a.hideColorsInCart&&A||!i.colors)return n;if(i.colors.length>0){const t=i.colors.join(", ").toUpperCase();n[`${e.stepTitle} exportedData.colors`]=t}}if("Module"===e.type){const i=t[e.stepName],a=e.data;if(!i||a.hideTextInCart&&A)return n;n[`${e.stepTitle} exportedData.text`]=i.text}if("Text"===e.type){const i=t[e.stepName];if(!i)return n;const a=e.data;a.hideTextInCart&&A||(n[`${e.stepTitle} exportedData.text`]=i.text),!i.color||a.hideColorInCart&&A||(n[`${e.stepTitle} exportedData.color`]=i.color)}return n})(e))})),n},a=(t,e,A,n,i,a,o,s,r)=>({event:"onComplete",lineItemImageUrl:o?o.href:"",transactionId:t.id,metadata:i,selectedVariants:s,designProductVariantId:t.externalDesignProductVariantId,designProductId:t.externalDesignProductId,baseCost:A,weight:e.weight,optionsCost:n,exportedData:a,sku:r,workflowViewerLink:t.workflowViewerLink||""}),o=async(t,e,A,n,o,s,r)=>{const c=(t.product?.basePrice||0)*(t.variationsCount||0),g=t.priceModifierTotal||0,l=((t,e,A,n)=>{const a={};let o;if(A){o=i(A,e,!1);for(const t of Object.keys(o))a[t]={value:o[t],priceModifier:0}}else if(n){o=n;for(const t of Object.keys(o))a[t]={value:o[t],priceModifier:0}}for(const A of Object.keys(t)){const n=t[A],i=e.steps.find((t=>t.stepTitle===A));if(1===n.length)a[`${i?.stepTitle} exportedData.selection`]={value:n[0].name,priceModifier:n[0].priceModifier};else if(n.length>1)for(let t=0;t<n.length;t++)a[`${i?.stepTitle} exportedData.selection ${t+1}`]={value:n[t].name,priceModifier:n[t].priceModifier}}return a})(n,A,void 0,s);return a(t,e,c,g,s,l,r,n,o)};return(async(t,e,A,n,s,r,c,g,l,B,d,h)=>{l("workflow.steps.finish.finalize.buildingLayouts"),await t.outstandingRequestsPromise();const w=Kt.getShadowGraphqlClient();await w.resetStore();const E=await w.mutate({mutation:QA,variables:{id:r.id}}),u=E.data?.transactions[0].workflowState;!E.errors&&u||(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(n())),E.errors&&E.errors.forEach((t=>{E.errors&&console.log("Server Error:",t.message)})),await t.updateStateWithServerImmediate(n),console.log("Server state is undefined @ Workflow completion"));const C=t.getPreviewService(),Q=e?.finalizeStepConfig?.lookAtAnimation,p=C&&100===C.getSceneInitializationProgress()&&e.showModelOnFinishStep&&Q,m=h&&i(h,e,!0),f=h&&i(h,e,!1),D=t=>{const A={};let n=0;if(Object.keys(c).length>0)for(const i of Object.keys(c)){const a=c[i],o=e.steps.find((t=>t.stepName===i));for(let e=0;e<a.selections.length;++e){const i=a.selections[e];if(o&&(!t||Gt.getLocalOrUndefined(o.optionId)&&Gt.getLocalOrUndefined(o.optionId).data.variants.length>1&&!o.data.hideSelectionInCart&&!o.data.hideSelectionsInCart)){const t=o.stepTitle;A[t]?A[t].push({id:i.id||"",name:i.name,priceModifier:i.priceModifier}):A[t]=[{id:i.id||"",name:i.name,priceModifier:i.priceModifier}]}n+=i.priceModifier}}return[A,n]},[I]=D(!0),x=Object.fromEntries(Object.keys(I).map((t=>[t,I[t].map((t=>t.id))]))),[y]=D(!1),M=Object.fromEntries(Object.keys(y).map((t=>[t,y[t].map((t=>t.id))]))),F=await this.createPreviewImage();l("workflow.steps.finish.finalize.creatingDesign");const v=(await zt.execute("createDesign",{designDetails:(()=>{const t={designName:g,layouts:A.map((t=>({index:t.index,panelId:t.panelId}))),workflowId:e.id,productId:s.id,transactionId:r.id,threeDimPreview:!!p,previewImage:F};return h&&(t.metadata=f),x&&(t.selectedVariants=M),t})()})).body,Y=v.links.find((t=>"image"===t.rel));l("workflow.steps.finish.finalize.updatingTransaction");const S=(await Kt.getShadowGraphqlClient().query({query:CA,variables:{id:r.id}})).data.transactions[0];return r.bulk?(await B(d),((t,e,A)=>{const n=(t.product?.basePrice||0)*(t.variationsCount||0),i=t.priceModifierTotal||0,o={items:{value:t.variationsCount?`${t.variationsCount}`:"0",priceModifier:0}};return a(t,e,n,i,void 0,o,A)})(S,s,Y)):await o(S,s,e,I,v.data.sku,m,Y)})(this.workflowManager,this.workflowManager.getWorkflow(),this.workflowManager.getLayouts(),(()=>this.commandContext.getState()),t,this.workflowManager.getTransaction(),A,this.workflowManager.getWorkflow().name,e,(t=>this.updateVariationRecords(t)),this.workflowManager.getVariationRecords(),n)}}wt=et("gxilN");var Dn={},In=Dn&&Dn.__awaiter||function(t,e,A,n){return new(A||(A=Promise))((function(i,a){function o(t){try{r(n.next(t))}catch(t){a(t)}}function s(t){try{r(n.throw(t))}catch(t){a(t)}}function r(t){var e;t.done?i(t.value):(e=t.value,e instanceof A?e:new A((function(t){t(e)}))).then(o,s)}r((n=n.apply(t,e||[])).next())}))},xn=Dn&&Dn.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Dn,"__esModule",{value:!0}),Dn.generateCommands=void 0;Bt=et("daQXa"),lt=et("98viV"),rt=et("2RTUs");const yn=xn(et("l84WR"));wt=et("gxilN"),Ft=et("22zA1"),Et=et("9SSHp");const Mn=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],Fn=(t,e,A)=>In(void 0,void 0,void 0,(function*(){const n=e.data,i=A.data.baseUrl,a=n.assetUrl.replace("localhost","localstack"),o="http"===i.slice(0,4)?"":"https://",s=new URL(o+i);s.searchParams.append("video",(0,lt.toBase64)(JSON.stringify([{href:a}]))),s.pathname=s.pathname+("/"===s.pathname.slice(-1)?"":"/");const r=s.toString(),c=`data:image/svg+xml;base64,${(0,lt.toBase64)(yield(0,X.toString)(r,{type:"svg"}))}`,g=e=>{const A=t.find((t=>t.panelId===e.panelId));if(!A)throw new Error(`Can not find layout for region: ${e.panelId}`);const n=(0,rt.generate)();return new at.CreateElementCommand({id:n,src:c,type:wt.LayoutElementType.Image,y:e.top,x:e.left,width:e.width,height:e.height,rotation:0},A)},l=A.data.regions;try{return l.map(g)}catch(t){return console.error(t),[]}})),vn=(t,e,A,n)=>In(void 0,void 0,void 0,(function*(){var i,a;const o=A.data,s=o.assetUrl,r=yield(0,vt.getPatternImageData)(s);try{const A=(0,vt.getVariant)(o,n.option);A&&(e[n.stepName]={selectedVariants:[A]});const s=yield(0,vt.generateFrameSVG)(n.data.regions[0]||{width:1,height:1},null===(a=null===(i=null==A?void 0:A.asset)||void 0===i?void 0:i.links.find((t=>"cdn"===t.rel)))||void 0===a?void 0:a.href),c=yield(0,vt.getFrameData)(s),g=e=>{const A=(0,rt.generate)(),i=t.find((t=>t.panelId===e.panelId));if(!i)throw new Error(`Can not find layout for region: ${e.panelId}`);const a=(0,vt.calculateOffsets)(r,c,{scale:o.scale,left:o.x,top:o.y});return[new at.CreateElementCommand({id:A,path:c.path,type:wt.LayoutElementType.Frame,focalBlur:n.data.focalBlur,focalBlurStrength:n.data.focalBlurStrength,focalBlurRadius:n.data.focalBlurRadius,x:e.left,y:e.top,width:e.width,height:e.height,layerIndex:e.layerIndex,rotation:e.rotation,scaleX:e.width/c.width,scaleY:e.height/c.height,pattern:void 0},i),new at.UpdateFramePattern(A,r,a)]};return n.data.regions.flatMap((t=>g(t)))}catch(t){return console.error(t),[]}})),Yn=(t,e,A,n)=>In(void 0,void 0,void 0,(function*(){var i;const a=A.data,o=n.option;if(!o)return console.error(`No option for step ${n.stepName}.`),[];const s=o.data.variants.find((t=>t.id===a.illustrationVariantId))||(0,St.getDefaultVariant)(o.data);if(!s)return console.error(`No variant with ID: ${a.illustrationVariantId}`),[];if(!s.asset)return console.error(`No asset for variant with ID: ${a.illustrationVariantId}`),[];e[n.stepName]={selectedVariants:[s]};const r=null===(i=s.asset)||void 0===i?void 0:i.links.find((t=>"cdn"===t.rel));if(!r)return console.error(`No asset link for variant with ID: ${a.illustrationVariantId}`),[];const c=(yield(0,lt.fetchAsString)(r.href)).match(/<svg.*?<\/svg>/s)||[],g=(null==c?void 0:c.length)>0?c[0]:"",l=(0,lt.domParser)().parseFromString(g,"image/svg+xml").firstElementChild;if(!l)return console.error("Failed to read SVG."),[];(0,Bt.sanitizeSvgTree)(l);const B={};(0,Bt.traverse)(l,(t=>{Mn.includes(t.tagName)&&!t.attributes.getNamedItem("fill")&&t.setAttribute("fill","#000000");const e=t.attributes.getNamedItem("fill");if(e&&"none"!==e.value){const A=e.value,n=`spiff-fill-${A.replace(/\W/g,"")}`;t.classList.add(n),B[n]={browserValue:A}}const A=t.attributes.getNamedItem("stroke");if(A&&"none"!==A.value){const e=A.value,n=`spiff-stroke-${e.replace(/\W/g,"")}`;t.classList.add(n),B[n]={browserValue:e}}}));const d=(0,lt.xmlSerializer)().serializeToString(l),h=a.colors;if(h)for(const[t,e]of Object.entries(B))for(const A of Object.keys(h))if(e.browserValue===A){B[t]={browserValue:h[A]};break}const w=e=>{const A=t.find((t=>t.panelId===e.panelId));if(!A)throw new Error(`Tried to create illustration but no layout for panel ID: ${e.panelId}`);const n=(0,rt.generate)();return new at.CreateElementCommand({colors:B,id:n,svg:d,type:wt.LayoutElementType.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layerIndex:e.layerIndex,immutable:e.immutable},A)},E=n.data.regions;try{return E.map(w)}catch(t){return console.error(t),[]}})),Sn=(t,e,A)=>In(void 0,void 0,void 0,(function*(){const n=yield(0,yn.default)(A.data.module),i=e.data,a=A.data.regions,o=n.svgPrint(i.text);try{return a.map((e=>((e,A)=>{const n=t.find((t=>t.panelId===A.panelId));if(!n)throw new Error(`Can not find layout for region: ${A.panelId}`);const i=(0,rt.generate)();return new at.CreateElementCommand({colors:{},id:i,svg:e,type:wt.LayoutElementType.Illustration,y:A.top,x:A.left,rotation:A.rotation,width:A.width,height:A.height,layerIndex:A.layerIndex},n)})(o,e)))}catch(t){return console.error(t),[]}})),Nn=(t,e,A,n)=>In(void 0,void 0,void 0,(function*(){var i;const a=A.data,o=n.option;if(!o)return console.error(`No option for step ${n.stepName}.`),[];const s=o.data.variants.find((t=>t.id===a.pictureVariantId))||(0,St.getDefaultVariant)(o.data);if(!s)return console.error(`No variant with ID: ${a.pictureVariantId}`),[];if(!s.asset)return console.error(`No asset for variant with ID: ${a.pictureVariantId}`),[];e[n.stepName]={selectedVariants:[s]};const r=null===(i=s.asset)||void 0===i?void 0:i.links.find((t=>"cdn"===t.rel));if(!r)return console.error(`No asset link for variant with ID: ${a.pictureVariantId}`),[];const c=e=>{const A=t.find((t=>t.panelId===e.panelId));if(!A)throw new Error(`Can not find layout for region: ${e.panelId}`);const n=(0,rt.generate)();return new at.CreateElementCommand({id:n,src:r.href,type:wt.LayoutElementType.Image,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layerIndex:e.layerIndex,immutable:e.immutable,preserveAspectRatio:"none"},A)},g=n.data.regions;try{return g.map(c)}catch(t){return console.error(t),[]}})),Rn=(t,e,A,n)=>In(void 0,void 0,void 0,(function*(){const i=A.data,a=n.option;if(!a)return console.error(`No option for step ${n.stepName}.`),[];const o=a.data.variants.find((t=>t.id===i.colorVariantId))||(0,St.getDefaultVariant)(a.data);if(!o)return console.error(`No variant with ID: ${i.colorVariantId}`),[];e[n.stepName]={selectedVariants:[o]};const s=e=>{const A=t.find((t=>t.panelId===e.panelId));if(!A)throw new Error(`Step ${n.stepName} missing layout for panel: ${e.panelId}.`);const i=`\n <svg\n xmlns="http://www.w3.org/2000/svg"\n xmlnsXlink="http://www.w3.org/1999/xlink"\n xmlSpace="preserve"\n preserveAspectRatio="none"\n version="1.1"\n width="1"\n height="1"\n viewBox="0 0 1 1"\n >\n <rect\n x="0"\n y="0"\n width="1"\n height="1"\n class="spiff-fill-shape"\n fill="${null==o?void 0:o.color}"\n />\n </svg>\n `,a={"spiff-fill-shape":{browserValue:o.color||"#000000"}},s=(0,rt.generate)();return new at.CreateElementCommand({colors:a,id:s,svg:i,type:wt.LayoutElementType.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layerIndex:e.layerIndex,immutable:e.immutable},A)},r=n.data.regions;try{return r.map(s)}catch(t){return console.error(t),[]}})),Hn=(t,e,A)=>In(void 0,void 0,void 0,(function*(){const n=[],i=e.type===xA.StepType.ProductOverlay?A||e.data.assetKey||"":e.data.assetKey||"",a=i.endsWith(".jpeg")||i.endsWith(".jpg")||i.endsWith(".png")?wt.LayoutElementType.Image:(i.endsWith(".svg"),wt.LayoutElementType.Illustration),o=e.data.regions;if("image"===a)try{o.forEach((A=>{const o=t.find((t=>t.panelId===A.panelId));if(!o)throw new Error(`Can not find layout for region: ${A.panelId}`);const s={id:(0,rt.generate)(),src:i,type:a,y:A.top,x:A.left,width:A.width,height:A.height,layerIndex:A.layerIndex,productOverlay:"ProductOverlay"===e.type||void 0,scaleX:1,scaleY:1,rotation:A.rotation,excludeFromExport:e.data.excludeFromPrint,preserveAspectRatio:"none"};n.push(new at.CreateElementCommand(s,o))}))}catch(t){console.error(t)}else{const A=yield(0,lt.fetchAsString)(i),s=t=>{const e=t.match(/<svg.*?<\/svg>/s)||[],A=(null==e?void 0:e.length)>0?e[0]:"",n=(0,lt.domParser)().parseFromString(A,"image/svg+xml").firstElementChild;if(!n)throw new Error("Failed to read SVG.");(0,Bt.sanitizeSvgTree)(n);return(0,lt.xmlSerializer)().serializeToString(n)};o.forEach((o=>{const r=t.find((t=>t.panelId===o.panelId));if(!r)throw new Error(`Can not find layout for region: ${o.panelId}`);const c={id:(0,rt.generate)(),src:i,asset_key:i,svg:s(A),colors:{},type:a,y:o.top,x:o.left,width:o.width,height:o.height,layerIndex:o.layerIndex,scaleX:1,scaleY:1,rotation:o.rotation,productOverlay:"ProductOverlay"===e.type||void 0,excludeFromExport:e.data.excludeFromPrint};n.push(new at.CreateElementCommand(c,r))}))}return n})),Un=(t,e,A,n)=>In(void 0,void 0,void 0,(function*(){const i=[],a=A.data,o=yield In(void 0,void 0,void 0,(function*(){const t=(()=>{const t=n.option;if(!t)return;const A=t.data.variants.find((t=>t.id===a.fontVariantId))||(0,St.getDefaultVariant)(t.data);if(!A)return;if(!A.asset)return;e[n.stepName]={selectedVariants:[A]};const i=A.asset.links.find((t=>"cdn"===t.rel));return i?i.href:void 0})();if(!t)return;const A=yield(0,lt.fetchAsArrayBuffer)(t),i=yield(0,lt.arrayBufferToDataUrl)(A),o=(0,Ft.loadFontFromDataUrl)(i);return yield(0,lt.loadFontFaceSet)(o,t),{assetUrl:t,name:o.names.fullName.en}})),s=n.data.replaceableText?n.data.replaceableText.replace("{{}}",a.text):a.text,r=(0,Et.applyTextTransformations)(s,{vertical:n.data.vertical,uppercase:n.data.uppercase}),c=n.data.regions;for(const e of c){const s=t.find((t=>t.panelId===e.panelId));if(!s)continue;const c={stepName:A.name,id:(0,rt.generate)(),align:(g=n.data,g.vertical?"center":g.textAlign||"center"),curved:n.data.curved,fill:a.color||n.data.colour||"#000000",fontData:o,fontSize:n.data.size||30,height:e.height,layerIndex:e.layerIndex,paths:n.data.paths,rotation:e.rotation,text:r,type:wt.LayoutElementType.Textbox,vertical:n.data.vertical,verticalAlign:n.data.verticalAlign||"middle",width:e.width,x:e.left,y:e.top};if(o){const[t,A]=(0,rn.determineCorrectFontSizeAndLines)(n.data.size||30,o,e,(0,Et.applyTextTransformations)(r,{vertical:n.data.vertical,uppercase:n.data.uppercase}),{size:n.data.size,minSize:n.data.minSize,maxSize:n.data.maxSize});i.push(new at.CreateElementCommand(Object.assign(Object.assign({},c),{fontSize:t,text:c.curved?c.text:(A||[]).join("\n")}),s))}else i.push(new at.CreateElementCommand(c,s))}var g;return i})),bn=(t,e)=>!t.conditions||t.conditions.every((t=>{const A=e[t.targetStepName];if(A&&A.selectedVariants){const e=A.selectedVariants;return t.requiredVariantSelections.some((t=>void 0!==e.find((e=>e.id===t))))}return!1}));function Pn(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}Dn.generateCommands=(t,e,A,n)=>In(void 0,void 0,void 0,(function*(){const i=[],a={};for(const n of t){const t=e.steps.find((t=>t.stepName===n.name));if(t)switch(t.type){case xA.StepType.DigitalContent:i.push(...yield Fn(A,n,t));break;case xA.StepType.Frame:case xA.StepType.Photo:i.push(...yield vn(A,a,n,t));break;case xA.StepType.Illustration:i.push(...yield Yn(A,a,n,t));break;case xA.StepType.Module:i.push(...yield Sn(A,n,t));break;case xA.StepType.Picture:i.push(...yield Nn(A,a,n,t));break;case xA.StepType.Shape:i.push(...yield Rn(A,a,n,t));break;case xA.StepType.Text:i.push(...yield Un(A,a,n,t))}}for(const t of e.steps)t.type!==xA.StepType.SilentIllustration&&t.type!==xA.StepType.ProductOverlay||bn(t,a)&&i.push(...yield Hn(A,t,n));return i}));class Gn{constructor(t){Pn(this,"layouts",void 0),Pn(this,"handleCompleteRender",void 0),this.handleCompleteRender=null;const e=new Map;t.forEach((t=>e.set(t.id,new kn(t.id,t.name,this)))),this.layouts=e}setCompleteRenderCallback(t){this.handleCompleteRender=t,t(Array.from(this.layouts.values()))}onCompleteRender(){this.handleCompleteRender&&this.handleCompleteRender(Array.from(this.layouts.values()))}getAll(){return this.layouts}}let On;class kn{constructor(t,e,A){Pn(this,"hasSetStaticContext",!1),Pn(this,"id",void 0),Pn(this,"name",void 0),Pn(this,"service",void 0),Pn(this,"interactiveDirty",!1),Pn(this,"textureCtx",void 0),Pn(this,"staticCtxDirty",!1),Pn(this,"lastRequestedRenderArguments",void 0),Pn(this,"lastCompletedStaticRender",void 0),Pn(this,"lastModificationID",void 0),Pn(this,"renderQueue",new OA(2)),this.id=t,this.name=e,this.service=A}getID(){return this.id}getName(){return this.name}getStaticContext(){return this.textureCtx}setStaticContext(t){if(this.textureCtx=t,this.lastRequestedRenderArguments){const{workflow:t,layouts:e,variationRecord:A,productOverlayImageUrl:n}=this.lastRequestedRenderArguments;this.render(t,e,A,n)}}getStaticContextDirty(){return this.staticCtxDirty}setStaticContextDirty(t){this.staticCtxDirty=t}getInteractiveCanvasDirty(){return this.interactiveDirty}setInteractiveCanvasDirty(t){this.interactiveDirty=t}markLastCompletedStaticRender(){this.lastCompletedStaticRender=Date.now(),this.service.onCompleteRender()}getLastCompletedStaticRender(){return this.lastCompletedStaticRender}getLastModificationID(){return this.lastModificationID}async render(t,e,A,n){const i=_(g)(e);this.lastRequestedRenderArguments={workflow:t,layouts:i,variationRecord:A,productOverlayImageUrl:n};const a=this.getStaticContext();if(!a)return this.markLastCompletedStaticRender(),void this.setStaticContextDirty(!1);this.renderQueue.enqueue(new Jn(this.getID(),a,(()=>{if(void 0!==On)return On;const t=document.createElement("canvas").getContext("webgl2");return On=!!t,On})(),(()=>{this.markLastCompletedStaticRender(),this.setStaticContextDirty(!0)}),t,i,A,n))}}class Jn extends GA{constructor(t,e,A,n,i,a,o,s){super(),Pn(this,"layoutId",void 0),Pn(this,"ctx",void 0),Pn(this,"nonPOTSupport",void 0),Pn(this,"onRender",void 0),Pn(this,"workflow",void 0),Pn(this,"layouts",void 0),Pn(this,"variationRecord",void 0),Pn(this,"productOverlayImageUrl",void 0),this.layoutId=t,this.ctx=e,this.nonPOTSupport=A,this.onRender=n,this.workflow=i,this.layouts=a,this.variationRecord=o,this.productOverlayImageUrl=s}getDynamicTextureResolution(){return this.getIsMobile()||!this.offscreenRenderingSupported()?{width:1024,height:1024}:{width:2048,height:2048}}getIsMobile(){return window.innerWidth<=480}offscreenRenderingSupported(){return!navigator.userAgent.includes("SamsungBrowser")&&(!!window.Worker&&!!window.OffscreenCanvas)}async execute(){const t=this.layouts.find((t=>t.layoutState.layout.id===this.layoutId));if(!t)return;const e=t.layoutState.elements||[];if(this.variationRecord){const A=this.variationRecord.values.map((t=>({stepName:t.stepName,stepAspectType:t.aspect,value:t.value})));for(const t of this.workflow.steps)if(t.optionId&&!t.option){t.option=await Gt.getLocalOrFromServer(zt,t.optionId);for(const e of t.option.data.variants)e.assetKey&&!e.asset&&(e.asset=await ve.getLocalOrFromServer(e.assetKey))}const n=await Tn(Ln(A,this.workflow),this.workflow,this.layouts.map((t=>t.layoutState.layout)),this.productOverlayImageUrl),i=n?.layouts[t.layoutState.layout.id];(i?.elements||[]).forEach((t=>{const A=e.find((e=>e.stepName===t.stepName));A&&A.type===wt.LayoutElementType.Textbox?(A.text=t.text,A.fontSize=t.fontSize):e.push(t)})),e.sort(((t,e)=>void 0!==t.layerIndex&&void 0!==e.layerIndex?t.layerIndex-e.layerIndex:0))}const A=t.layoutState.layout.width,n=t.layoutState.layout.height,i=this.getDynamicTextureResolution().width,a=this.getDynamicTextureResolution().height;let o,s;if(this.nonPOTSupport){A/n<i/a?(o=i,s=n*(i/A)):(o=A*(a/n),s=a)}else o=this.getDynamicTextureResolution().width,s=this.getDynamicTextureResolution().height;const r=(0,At.getSvgString)(t.layoutState.layout,e),c=await V.Canvg.from(this.ctx,r,{anonymousCrossOrigin:!0,ignoreDimensions:!this.nonPOTSupport,ignoreAnimation:!0,ignoreClear:!0,ignoreMouse:!0,enableRedraw:!1});c.resize(o,s),await c.render(),this.onRender()}}const Ln=(t,e)=>{const A=[];return t.forEach((t=>{const n=e.steps.find((e=>e.stepName===t.stepName));n?.type===xA.StepType.Text&&"Text"===t.stepAspectType&&A.push({name:n.stepName,data:{text:t.value}})})),A},Tn=async(t,e,A,n)=>{let i={serializableWorkflow:{steps:[]},layouts:{}};A.forEach((t=>{i=new(0,at.CreateLayoutCommand)(t).apply(i)}));return(await(0,Dn.generateCommands)(t,e,A,n)).forEach((t=>{i=t.apply(i)})),i};function jn(t,e,A){return e in t?Object.defineProperty(t,e,{value:A,enumerable:!0,configurable:!0,writable:!0}):t[e]=A,t}const zn=async t=>(await zt.execute("getProductById",{productId:t})).body,Kn=(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:ue(),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})))};class Vn{constructor(t){jn(this,"options",void 0),jn(this,"initialized",void 0),jn(this,"experienceOptions",void 0),this.initialized=!1,this.options=t}async initFromIntegrationProduct(t){if(""===t)throw new Error("No integration product ID provided.");this.options.useUncachedEndpoints&&zt.setUncachedOperations(["getAssetByKeyV2","getWorkflowV2","getMaterialV2","getOptionV2"]);const e=Kt.getShadowGraphqlClient();await e.resetStore();const A=await e.mutate({mutation:BA,variables:{integrationProductId:t,bulk:this.options.bulk||!1}}),n=(await e.mutate({mutation:dA,variables:{id:A.data?.transactionCreate.id}})).data?.transactionClaim;if(!n)throw new Error("Failed to create transaction.");const i=Ne.getMap("transactionOwnerIds")||new Map;i.set(n.id,n.transactionOwnerId),Tt(n.transactionOwnerId||""),Ne.setMap("transactionOwnerIds",i);const a=await zn(n.product?.id||"");this.experienceOptions={product:a.data,transaction:n,layouts:[]},this.initialized=!0}async initFromTransaction(t){if(""===t)throw new Error("No transaction ID provided.");const e=Kt.getShadowGraphqlClient();await e.resetStore();const A=Ne.getMap("transactionOwnerIds")||new Map,n=A.get(t);if(n){Tt(n);const A=(await e.query({query:hA,variables:{id:t}})).data?.transactions[0];if(!A)throw new Error("Failed to read transaction.");const i=await zn(A.product?.id||"");return this.experienceOptions={product:i.data,transaction:A,layouts:[]},void(this.initialized=!0)}try{const n=(await e.mutate({mutation:dA,variables:{id:t}})).data?.transactionClaim;if(!n)throw new Error("Failed to read transaction.");n.transactionOwnerId&&(A.set(n.id,n.transactionOwnerId),Tt(n.transactionOwnerId),Ne.setMap("transactionOwnerIds",A));const i=await zn(n.product?.id||"");this.experienceOptions={product:i.data,transaction:n,layouts:[]},this.initialized=!0}catch{console.log("Readonly Mode");const A=(await e.query({query:hA,variables:{id:t}})).data?.transactions[0];if(!A)throw new Error("Failed to read transaction.");if(!A.lineItem?.id)throw new Error("Attempted to open an unordered transaction with no line item!");const n=await zn(A.product?.id||"");this.experienceOptions={product:n.data,transaction:A,layouts:[]},this.initialized=!0}}async getWorkflowExperience(t,e,A){if(!this.initialized||!this.experienceOptions)throw new Error("Cannot launch experience: Not initialized.");if(this.experienceOptions.transaction.workflowId){const t=(await zt.execute("getWorkflowV2",{workflowSlug:this.experienceOptions.transaction.workflowId})).body.data;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))}this.experienceOptions.previewService=A&&A(t),this.experienceOptions.renderableContextService=new Gn(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&await(this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService));const e=this.experienceOptions.transaction.workflowState?JSON.parse(this.experienceOptions.transaction.workflowState):void 0;return e&&(await(0,ct.rehydrateSerializedLayout)(e),await(async t=>{for(const e in t.layouts){const A=t.layouts[e].elements.filter((t=>"illustration"===t.type));for(let t=0;t<A.length;++t){const e=A[t];e.src&&e.svg&&(e.cachedObjectURL=await pA(e.svg))}}})(e),this.experienceOptions.reloadedState=e),new fn(this.experienceOptions)}if(t){const n=(await zt.execute("getWorkflowV2",{workflowSlug:t})).body.data;if(this.experienceOptions.workflow=n,await Kt.getShadowGraphqlClient().mutate({mutation:EA,variables:{workflowId:t,id:this.experienceOptions.transaction.id}}),e){this.experienceOptions.transaction.workflowState=e;const t=JSON.parse(this.experienceOptions.transaction.workflowState);this.experienceOptions.layouts=Object.values(t.layouts).map((t=>t.layout))}else this.experienceOptions.layouts=Kn(this.experienceOptions.transaction,this.experienceOptions.workflow);return this.experienceOptions.previewService=A&&A(n),this.experienceOptions.renderableContextService=new Gn(this.experienceOptions.layouts),this.experienceOptions.product?.modelUrl&&await(this.experienceOptions.previewService?.initialize(this.experienceOptions.product.modelUrl,this.experienceOptions.renderableContextService)),new fn(this.experienceOptions)}throw new Error("No workflow ID provided.")}getPreviewService(){return this.experienceOptions?.previewService}getProduct(){if(!this.initialized||!this.experienceOptions)throw new Error("Cannot get product: Not initialized.");return this.experienceOptions.product}getTransaction(){if(!this.initialized||!this.experienceOptions)throw new Error("Cannot get transaction: Not initialized.");return this.experienceOptions.transaction}}class Wn{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){}addUpdateCallback(t){}addVariationRecordsCallback(t){}getCommandDispatcher(){return t=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getProductName(){return""}getProfanities(){return[]}getRegionElements(t){return[]}getSerializedStep(t,e){}getStepSpecificServices(t){}getTransaction(){return{id:""}}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(t){}markUpdateCompleted(t){}markUpdatePending(t){}getWorkflowSelections(){return{}}setCurrentAdjustingStepId(t){}setAllScenes(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){}}
98
98
  //# sourceMappingURL=main.js.map