@spiffcommerce/core 0.10.235 → 0.10.236

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 t=require("@apollo/client"),A=require("lodash.clonedeep"),e=require("react/jsx-runtime"),n=require("opentype.js"),i=require("buffer"),a=require("axios"),o=require("https"),r=require("file-type"),s=require("util"),c=require("css"),g=require("canvas"),l=require("exif"),B=require("canvg"),w=require("@apollo/client/link/context"),h=require("@apollo/client/link/error"),d=require("cross-fetch"),E=require("react"),u=require("lodash.isequal"),Q=require("react-dom/server"),C=require("qrcode"),m=require("svg-path-bbox"),p=require("lodash.debounce");function D(t,A,e,n){Object.defineProperty(t,A,{get:e,set:n,enumerable:!0,configurable:!0})}var f="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{};function I(t){return t&&t.__esModule?t.default:t}function y(t,A,e,n){Object.defineProperty(t,A,{get:e,set:n,enumerable:!0,configurable:!0})}D(module.exports,"SpiffCommerceClient",(()=>Mo)),D(module.exports,"CommandContext",(()=>MA)),D(module.exports,"spiffCoreConfiguration",(()=>Ze)),D(module.exports,"PromiseQueue",(()=>di)),D(module.exports,"QueueablePromise",(()=>hi)),D(module.exports,"MockWorkflowManager",(()=>Fo)),D(module.exports,"InformationMessageType",(()=>Ta)),D(module.exports,"StepHandle",(()=>Xa)),D(module.exports,"TextStepHandle",(()=>oo)),D(module.exports,"FrameStepHandle",(()=>No)),D(module.exports,"BulkStepHandle",(()=>_a)),D(module.exports,"ShapeStepHandle",(()=>ao)),D(module.exports,"IllustrationStepHandle",(()=>to)),D(module.exports,"MaterialStepHandle",(()=>Ao)),D(module.exports,"ModelStepHandle",(()=>eo)),D(module.exports,"PictureStepHandle",(()=>no)),D(module.exports,"QuestionStepHandle",(()=>io)),D(module.exports,"BulkPriceCalculationStrategy",(()=>vn)),D(module.exports,"OptionNotFoundError",(()=>Ue)),D(module.exports,"LayoutNotFoundError",(()=>Ge)),D(module.exports,"AssetNotFoundError",(()=>be)),D(module.exports,"ResourceNotFoundError",(()=>ke)),D(module.exports,"MisconfigurationError",(()=>Je)),D(module.exports,"ParseError",(()=>ze)),D(module.exports,"UnhandledBehaviorError",(()=>Oe)),D(module.exports,"assetService",(()=>ln)),D(module.exports,"designService",(()=>uo)),D(module.exports,"createDesign",(()=>wo)),D(module.exports,"optionService",(()=>dn)),D(module.exports,"persistenceService",(()=>Xe)),D(module.exports,"graphQlManager",(()=>An)),D(module.exports,"toast",(()=>ba)),D(module.exports,"FrameService",(()=>pa)),D(module.exports,"frameStepService",(()=>Ya)),D(module.exports,"modelStepService",(()=>Na)),D(module.exports,"materialStepService",(()=>Sa)),D(module.exports,"shapeStepService",(()=>Ua)),D(module.exports,"questionStepService",(()=>Pa)),D(module.exports,"digitalContentStepService",(()=>xa)),D(module.exports,"moduleStepService",(()=>Ha)),D(module.exports,"pictureStepService",(()=>Ra)),D(module.exports,"textStepService",(()=>Oa)),D(module.exports,"illustrationStepService",(()=>va)),D(module.exports,"ProductCameraRig",(()=>Fn)),D(module.exports,"FrameStep",(()=>vo)),D(module.exports,"ConversionLocation",(()=>Nn)),D(module.exports,"ConversionData",(()=>Rn)),D(module.exports,"AssetType",(()=>T)),D(module.exports,"BringForwardCommand",(()=>ne)),D(module.exports,"BringToFrontCommand",(()=>Ae)),D(module.exports,"BringToBackCommand",(()=>ee)),D(module.exports,"CanvasCommand",(()=>PA)),D(module.exports,"CreateElementCommand",(()=>zA)),D(module.exports,"CreateLayoutCommand",(()=>LA)),D(module.exports,"DeleteElementCommand",(()=>TA)),D(module.exports,"FontAlignmentCommand",(()=>qA)),D(module.exports,"FontColorCommand",(()=>KA)),D(module.exports,"FontSizeCommand",(()=>VA)),D(module.exports,"FontSourceCommand",(()=>XA)),D(module.exports,"GroupCommand",(()=>JA)),D(module.exports,"LayoutElementFactory",(()=>Ne)),D(module.exports,"LayoutElementType",(()=>N)),D(module.exports,"MoveCommand",(()=>GA)),D(module.exports,"ResizeCommand",(()=>kA)),D(module.exports,"RotateCommand",(()=>bA)),D(module.exports,"SendBackwardsCommand",(()=>ie)),D(module.exports,"StepAspectType",(()=>W)),D(module.exports,"StepType",(()=>K)),D(module.exports,"TextChangeCommand",(()=>$A)),D(module.exports,"UnitOfMeasurement",(()=>b)),D(module.exports,"dataUrlFromExternalUrl",(()=>Ut)),D(module.exports,"findElement",(()=>SA)),D(module.exports,"frameDataCache",(()=>he)),D(module.exports,"generate",(()=>F)),D(module.exports,"getAxisAlignedBoundingBox",(()=>$)),D(module.exports,"generateSVGWithUnknownColors",(()=>IA)),D(module.exports,"getAttributesFromArrayBuffer",(()=>le)),D(module.exports,"rehydrateSerializedLayout",(()=>RA)),D(module.exports,"getFrameData",(()=>Qe)),D(module.exports,"getSvgElement",(()=>FA)),D(module.exports,"loadFontFromDataUrl",(()=>Kt)),D(module.exports,"loadFontFromExternalUrl",(()=>jt)),D(module.exports,"determineCorrectFontSizeAndLines",(()=>ye)),D(module.exports,"patternImageDataCache",(()=>we)),D(module.exports,"generateCommands",(()=>Ki)),D(module.exports,"registerJSDOM",(()=>It)),D(module.exports,"minZoom",(()=>si)),D(module.exports,"AdvancedEditor",(()=>ea)),D(module.exports,"TransformWrapper",(()=>Ho)),D(module.exports,"EditorCore",(()=>Aa)),D(module.exports,"useLayouts",(()=>Qn)),D(module.exports,"useEditorState",(()=>xn)),D(module.exports,"useEditorInteraction",(()=>gi)),D(module.exports,"useShortcutCombination",(()=>li)),D(module.exports,"commandReducer",(()=>fn)),D(module.exports,"getDefaultState",(()=>Dn)),D(module.exports,"CommandContextContext",(()=>En)),D(module.exports,"AdvancedEditorStateProvider",(()=>yn)),D(module.exports,"AdvancedEditorContext",(()=>In)),D(module.exports,"UICommand",(()=>Mn)),D(module.exports,"EditorSubMenu",(()=>mn)),D(module.exports,"ElementEventType",(()=>Gn)),D(module.exports,"KeyEvent",(()=>kn)),D(module.exports,"gatherVaryingStepAspects",(()=>la));var M="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==f?f:{},x={};y(x,"CanvasCommand",(()=>PA)),y(x,"UpdateWorkflowStateCommand",(()=>UA)),y(x,"MoveCommand",(()=>GA)),y(x,"RotateCommand",(()=>bA)),y(x,"ResizeCommand",(()=>kA)),y(x,"GroupCommand",(()=>JA)),y(x,"CreateLayoutCommand",(()=>LA)),y(x,"ClearLayoutCommand",(()=>OA)),y(x,"CreateElementCommand",(()=>zA)),y(x,"DeleteElementCommand",(()=>TA)),y(x,"CloneElementCommand",(()=>jA)),y(x,"FontColorCommand",(()=>KA)),y(x,"FontSizeCommand",(()=>VA)),y(x,"FontAlgorithmCommand",(()=>WA)),y(x,"FontSourceCommand",(()=>XA)),y(x,"FontAlignmentCommand",(()=>qA)),y(x,"UpdateFramePattern",(()=>ZA)),y(x,"TextChangeCommand",(()=>$A)),y(x,"IllustrationColorCommand",(()=>_A)),y(x,"IllustrationCacheCommand",(()=>te)),y(x,"BringToFrontCommand",(()=>Ae)),y(x,"BringToBackCommand",(()=>ee)),y(x,"BringForwardCommand",(()=>ne)),y(x,"SendBackwardsCommand",(()=>ie)),y(x,"LayerCommand",(()=>ae)),y({},"generate",(()=>F));const F=()=>{const t=()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1);return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()};var Y={};y(Y,"ElementNotFoundError",(()=>vA)),y(Y,"findElement",(()=>SA)),y(Y,"findLayoutForElement",(()=>NA)),y(Y,"updatedLayoutForElement",(()=>HA)),y(Y,"rehydrateSerializedLayout",(()=>RA));var v={};y(v,"CommandContext",(()=>MA)),y(v,"getSvgElement",(()=>FA)),y(v,"elementFactory",(()=>xA)),y(v,"sortElementsByLayersWithIndex",(()=>YA)),y({},"SVGLayout",(()=>q));var S={};let N;var H;let R;var P;let U;var G;let b;var k;let J;var L;let O;var z;let T;var j;let K;var V;let W;var X;y(S,"LayoutElementType",(()=>N)),y(S,"LayoutRenderingPurpose",(()=>R)),y(S,"TextAlgorithm",(()=>U)),y(S,"UnitOfMeasurement",(()=>b)),y(S,"ScaleAxis",(()=>J)),y(S,"MaterialEffectMode",(()=>O)),y(S,"AssetType",(()=>T)),y(S,"StepType",(()=>K)),y(S,"StepAspectType",(()=>W)),(H=N||(N={})).Frame="frame",H.Image="image",H.Illustration="illustration",H.Textbox="textbox",(P=R||(R={}))[P.ThreeD=0]="ThreeD",P[P.FreeDesign=1]="FreeDesign",P[P.Print=2]="Print",(G=U||(U={})).Autosize="Autosize",G.Traditional="Traditional",(k=b||(b={})).Pixel="px",k.Millimeter="mm",k.Centimeter="cm",(L=J||(J={}))[L.North=0]="North",L[L.Northeast=1]="Northeast",L[L.East=2]="East",L[L.Southeast=3]="Southeast",L[L.South=4]="South",L[L.Southwest=5]="Southwest",L[L.West=6]="West",L[L.Northwest=7]="Northwest",(z=O||(O={})).None="None",z.RemoveWhenSelected="RemoveWhenSelected",z.ApplyWhenSelected="ApplyWhenSelected",(j=T||(T={})).Font="Font",j.Frame="Frame",j.Illustration="Illustration",j.Image="Image",j.Model="Model",j.Material="Material",j.Color="Color",j.QuestionnaireCollateral="QuestionnaireCollateral",j.RequestCollateral="RequestCollateral",j.SignupCollateral="SignupCollateral",j.Video="Video",j.ColorProfile="ColorProfile",(V=K||(K={})).Bulk="Bulk",V.DigitalContent="DigitalContent",V.Finish="Finish",V.Frame="Frame",V.Illustration="Illustration",V.Introduction="Introduction",V.Material="Material",V.Model="Model",V.Module="Module",V.Picture="Picture",V.Photo="Photo",V.ProductOverlay="ProductOverlay",V.Question="Question",V.Shape="Shape",V.SilentIllustration="SilentIllustration",V.Text="Text",(X=W||(W={})).Color="Color",X.Colors="Colors",X.Selection="Selection",X.Selections="Selections",X.Text="Text",X.Upload="Upload";const q=({backgroundColor:t,outlineColor:A,borderRadius:n,configuration:i,elements:a,height:o,maxHeight:r,maxWidth:s,outlineArea:c,position:g,preserveAspectRatio:l,viewBox:B,width:w})=>{const h=n||0,d=2*(c?.scale||1),E=B||{x:0,y:0,width:w,height:o},u=`${E.x} ${E.y} ${E.width} ${E.height}`,Q=F(),C=i.purpose===R.FreeDesign&&(0,e.jsx)("defs",{children:(0,e.jsx)("clipPath",{id:"viewboxClip",children:(0,e.jsx)("rect",{width:E.width,height:E.height,rx:h})})}),m=i.colorProfiles?.map(((t,A)=>(0,e.jsx)("color-profile",{name:t.name,xlinkHref:t.key,children:" "},A))),p=YA(a.map((t=>({...t,_renderingConfiguration:i,mask:c?`url(#viewmask-${Q})`:void 0}))));return(0,e.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",preserveAspectRatio:l,width:w,height:o,style:{gridColumn:1,gridRow:1,maxWidth:s,maxHeight:r,position:g},viewBox:u,children:[m,C,!!t&&(0,e.jsx)("rect",{id:"layout-background",width:E.width,height:E.height,fill:t,rx:h}),(0,e.jsx)("g",{id:"element-group",clipPath:i.purpose===R.FreeDesign?"url(#viewboxClip)":void 0,children:p.map((t=>xA(t))).filter((t=>!!t))}),c&&(0,e.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,fill:"none",stroke:c.hidden?"none":A||"#aaaaaa",strokeWidth:d/2,strokeDasharray:`${2*d} ${d}`}),c&&(0,e.jsxs)("mask",{id:`viewmask-${Q}`,children:[(0,e.jsx)("rect",{x:E.x,y:E.y,width:E.width,height:E.height,fill:"black"}),(0,e.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,fill:"white"})]})]})};y({},"Image",(()=>dt));var Z={};y(Z,"getAxisAlignedBoundingBox",(()=>$)),y(Z,"degreesToRadians",(()=>tt)),y(Z,"findAngle",(()=>_)),y(Z,"radiansToDegrees",(()=>At)),y(Z,"isCloseToValue",(()=>et)),y(Z,"getTrueCoordinates",(()=>nt)),y(Z,"getPointOfRotation",(()=>it)),y(Z,"getNWPoint",(()=>at)),y(Z,"getNEPoint",(()=>ot)),y(Z,"getSWPoint",(()=>rt)),y(Z,"getSEPoint",(()=>st)),y(Z,"turnRightClockwise",(()=>ct)),y(Z,"currentDirection",(()=>gt)),y(Z,"getElementVertices",(()=>lt)),y(Z,"rotateAroundPoint",(()=>Bt)),y(Z,"mmPerPixel",(()=>wt)),y(Z,"cmPerPixel",(()=>ht));const $=(t,A,e,n,i)=>{const a=tt(i),o=e/2,r=n/2,s=t+o,c=A+r,g=Math.sin(a),l=Math.cos(a),B=-r,w=o*l-B*g,h=o*l-r*g,d=o*g+B*l,E=o*g+r*l,u=Math.max(Math.abs(w),Math.abs(h)),Q=Math.max(Math.abs(d),Math.abs(E));return{minX:s-u,maxX:s+u,minY:c-Q,maxY:c+Q}},_=(t,A,e)=>{const n=Math.sqrt(Math.pow(A.x-t.x,2)+Math.pow(A.y-t.y,2)),i=Math.sqrt(Math.pow(A.x-e.x,2)+Math.pow(A.y-e.y,2)),a=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));return Math.acos((i*i+n*n-a*a)/(2*i*n))*(180/Math.PI)},tt=t=>t*(Math.PI/180),At=t=>t*(180/Math.PI),et=(t,A,e)=>Math.abs(t-A)<e,nt=(t,A,e)=>{const n=Math.sin(tt(e)),i=Math.cos(tt(e));return{x:(t.x-A.x)*i-(t.y-A.y)*n+A.x,y:(t.x-A.x)*n+(t.y-A.y)*i+A.y}},it=(t,A)=>({x:(t.x+A.x)/2,y:(t.y+A.y)/2}),at=(t,A,e,n)=>({x:t.x+A?.x*e,y:t.y+A?.y*n}),ot=(t,A,e,n)=>({x:t.x+(A?.x+A?.width)*e,y:t.y+A?.y*n}),rt=(t,A,e,n)=>({x:t.x+A?.x*e,y:t.y+(A?.y+A?.height)*n}),st=(t,A,e,n)=>({x:t.x+(A?.x+A?.width)*e,y:t.y+(A?.y+A?.height)*n}),ct=t=>{switch(t){case J.North:return J.East;case J.East:return J.South;case J.South:return J.West;case J.West:return J.North;case J.Northwest:return J.Northeast;case J.Northeast:return J.Southeast;case J.Southeast:return J.Southwest;case J.Southwest:return J.Northwest}},gt=(t,A)=>A>45&&A<=135?ct(t):A>135&&A<=225?ct(ct(t)):A>225&&A<=315?ct(ct(ct(t))):t,lt=(t,A={x:0,y:0},e={x:1,y:1})=>{const n=tt(t.rotation),i={x:A.x+t.x*e.x,y:A.x+t.y*e.y},a={x:t.x+t.width,y:t.y},o={x:A.x+(t.x+t.width)*e.x,y:A.y+(t.height+t.y)*e.y},r={x:A.x+t.x*e.x,y:A.y+(t.height+t.y)*e.y},s={x:(r.x+o.x)/2,y:r.y-t.height*e.y/2};return{a:Bt(i,s,n),b:Bt(a,s,n),c:Bt(o,s,n),d:Bt(r,s,n),center:s}},Bt=(t,A,e)=>{const n=Math.sin(e),i=Math.cos(e);return{x:(t.x-A.x)*i-(t.y-A.y)*n+A.x,y:(t.x-A.x)*n+(t.y-A.y)*i+A.y}},wt=.352778,ht=.035277,dt=t=>{const A=t.rotation||0,n=tt(A),i=Math.cos(n),a=-Math.sin(n);return(0,e.jsx)("g",{mask:t.stepName||t.productOverlay?void 0:t.mask,children:(0,e.jsx)("g",{transform:`\n matrix(1, 0, 0, 1, ${t.x}, ${t.y})\n matrix(1, 0, 0, 1, ${t.width/2}, ${t.height/2})\n matrix(${i}, ${-a}, ${a}, ${i}, 0, 0)\n matrix(1, 0, 0, 1, ${-t.width/2}, ${-t.height/2})\n `,children:(0,e.jsx)("image",{xlinkHref:t.src,preserveAspectRatio:t.preserveAspectRatio,width:t.width,height:t.height})})})};y({},"Frame",(()=>Et));const Et=t=>{const A=`spiff-frame-${t.id}`,n=`spiff-frame-blur-${t.id}`,i=`spiff-frame-blur-edge-${t.id}`,a=`spiff-frame-focal-mask-${t.id}`,o=!!t.focalBlur&&!!t.pattern,r=t.rotation||0,s=tt(r),c=Math.cos(s),g=-Math.sin(s);return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("defs",{children:(o=>{const r=t.pattern?.x||0,s=t.pattern?.y||0,c=t.pattern?t.pattern.width*t.pattern.scaleX+Math.abs(r):256,g=t.pattern?t.pattern.height*t.pattern.scaleY+Math.abs(s):256,l=t.pattern?t.pattern.width*t.pattern.scaleX:256,B=t.pattern?t.pattern.height*t.pattern.scaleY:256;return(0,e.jsxs)("g",{mask:t.stepName?void 0:t.mask,children:[(0,e.jsx)("pattern",{patternUnits:t.pattern?void 0:"userSpaceOnUse",x:0,y:0,width:t.pattern?1:c,height:t.pattern?1:g,"data-frame-width":t.pattern?c:void 0,"data-frame-height":t.pattern?g:void 0,id:A,children:(0,e.jsx)("image",{preserveAspectRatio:"none",x:r,y:s,width:l,height:B,xlinkHref:t.disablePlaceholder?"":t.pattern?t.pattern.src:"data:image/png;base64,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"})}),o?(0,e.jsx)(ut,{path:t.path,width:t.width,height:t.height,focalBlurStrength:t.focalBlurStrength||1,focalBlurRadius:t.focalBlurRadius||10,blurFilterId:n,focalMaskId:a,blurEdgeClipId:i}):null]})})(o)}),(0,e.jsx)("g",{mask:t.stepName?void 0:t.mask,children:(0,e.jsxs)("g",{transform:`\n matrix(1, 0, 0, 1, ${t.x}, ${t.y})\n matrix(1, 0, 0, 1, ${t.width/2}, ${t.height/2})\n matrix(${c}, ${-g}, ${g}, ${c}, 0, 0)\n matrix(1, 0, 0, 1, ${-t.width/2}, ${-t.height/2})\n matrix(${t.scaleX}, 0, 0, ${t.scaleY}, 0, 0)\n `,children:[(0,e.jsx)("path",{filter:o?`url(#${n})`:void 0,mask:o?`url(#${i})`:void 0,d:t.path,style:{fill:`url(#${A})`,opacity:t.opacity}}),o?(0,e.jsx)("path",{mask:`url(#${a})`,d:t.path,style:{fill:`url(#${A})`,opacity:t.opacity}}):void 0]})})]})},ut=t=>{const{path:A,width:n,height:i,focalBlurStrength:a,focalBlurRadius:o,blurFilterId:r,focalMaskId:s,blurEdgeClipId:c}=t;return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("filter",{id:r,children:(0,e.jsx)("feGaussianBlur",{stdDeviation:a||0})}),(0,e.jsx)("mask",{id:s,children:(0,e.jsx)("circle",{cx:n/2,cy:i/2,r:o||0,fill:"white",filter:`url(#${r})`})}),(0,e.jsx)("mask",{id:c,children:(0,e.jsx)("path",{d:A,style:{fill:"white",opacity:1}})})]})};y({},"Textbox",(()=>EA));var Qt={};y(Qt,"fontSizeStep",(()=>AA)),y(Qt,"textWidth",(()=>eA)),y(Qt,"charWidth",(()=>nA)),y(Qt,"lineWidth",(()=>iA)),y(Qt,"applyTextTransformations",(()=>oA)),y(Qt,"zip",(()=>rA)),y(Qt,"getTextAlignment",(()=>sA)),y(Qt,"getAnchor",(()=>cA)),y(Qt,"recomputeTextOnElement",(()=>gA)),y(Qt,"defaultLineHeightFactor",(()=>lA));var Ct={};y(Ct,"refitTextbox",(()=>_t)),y(Ct,"recalculateTextboxRegion",(()=>tA));var mt={};y(mt,"FontMetrics",(()=>zt)),y(mt,"loadFontFromExternalUrl",(()=>jt)),y(mt,"loadFontFromDataUrl",(()=>Kt)),y(mt,"getFontMetrics",(()=>Vt));var pt={};y(pt,"registerJSDOM",(()=>It)),y(pt,"createElement",(()=>Ft)),y(pt,"createElementNS",(()=>Yt)),y(pt,"domParser",(()=>vt)),y(pt,"fetchAsArrayBuffer",(()=>St)),y(pt,"fetchAsString",(()=>Nt)),y(pt,"loadFontFaceSet",(()=>Ht)),y(pt,"xmlSerializer",(()=>Rt)),y(pt,"toBase64",(()=>Pt)),y(pt,"dataUrlFromExternalUrl",(()=>Ut)),y(pt,"arrayBufferToDataUrl",(()=>Gt)),y(pt,"arrayBufferToBuffer",(()=>kt)),y(pt,"dataUrlToArrayBuffer",(()=>bt));var Dt=i.Buffer;let ft;function It(t){ft=t}function yt(){if(!ft)throw new Error("JSDOM is not registered. Please register it before calling this function.");return new ft}if(void 0===M.TextEncoder){const{TextEncoder:t}=s;M.TextEncoder=t}if(void 0===M.TextDecoder){const{TextDecoder:t}=s;M.TextDecoder=t}const Mt=new(I(o).Agent)({rejectUnauthorized:!0}),xt=t=>t.every((t=>"undefined"!==t)),Ft=t=>xt([typeof document])?document.createElement(t):yt().window.document.createElement(t),Yt=(t,A)=>{if(xt([typeof document]))return document.createElementNS(t,A);const e=yt().window.document.createElement(A);return e.setAttribute("xmlns",t),e},vt=()=>xt([typeof DOMParser])?new DOMParser:new(yt().window.DOMParser),St=t=>{if(xt([typeof fetch]))return new Promise(((A,e)=>{fetch(t).then((t=>{A(t.arrayBuffer())})).catch((t=>{e(t)}))}));{const A=t.replace("localhost","localstack");return new Promise(((t,e)=>{I(a).get(A,{responseType:"arraybuffer",httpsAgent:Mt}).then((A=>{t(A.data)})).catch((t=>{e(t)}))}))}},Nt=t=>{if(xt([typeof fetch]))return new Promise(((A,e)=>{fetch(t).then((t=>{A(t.text())})).catch(e)}));{const A=t.replace("localhost","localstack");return new Promise(((t,e)=>{I(a).get(A,{responseType:"text",httpsAgent:Mt}).then((A=>{t(A.data)})).catch(e)}))}},Ht=async(t,A)=>{if(xt([typeof FontFace])){const e=t.names.fullName.en,n=new FontFace(e,`url(${A})`);return document.fonts.add(n),n.load()}},Rt=()=>xt([typeof XMLSerializer])?new XMLSerializer:new(yt().window.XMLSerializer),Pt=t=>xt([typeof btoa])?btoa(t):Dt.from(t).toString("base64"),Ut=async t=>{if(xt([typeof fetch,typeof Blob,typeof FileReader])){const A=await fetch(t),e=await A.blob();return await Lt(e)}const A=(await I(a).get(t,{responseType:"arraybuffer"})).data;return Gt(A)},Gt=async t=>{const A=await(async t=>{const A=await(0,r.fromBuffer)(t);return A?A.mime:"image/svg+xml"})(t);return`data:${A};base64,${kt(t).toString("base64")}`},bt=t=>{const A=t.replace(/\r?\n/g,""),e=A.indexOf(",");if(-1===e||e<=4)throw new TypeError("malformed data: URI");const n=A.substring(5,e).split(";");let i=!1;for(let t=1;t<n.length;t++)"base64"===n[t]&&(i=!0);const a=i?"base64":"ascii",o=unescape(A.substring(e+1)),r=Dt.from(o,a);return Jt(r)},kt=t=>Dt.from(t),Jt=t=>{const A=new ArrayBuffer(t.byteLength),e=new Uint8Array(A);for(let A=0;A<t.length;++A)e[A]=t[A];return A},Lt=t=>new Promise(((A,e)=>{const n=new FileReader;n.onload=function(t){const n=t.target;n&&n.result?A(n.result.toString()):e()},n.readAsDataURL(t)})),Ot=new Map;class zt{constructor(t){this.font=t,this.glyphsFromText=new Map,this.kerningValues=new Map,this.height=this.calculateApproximateHeight()}getFont(){return this.font}getGlyphs(t){const A=this.glyphsFromText.get(t);if(A)return A;const e=this.font.stringToGlyphs(t);return this.glyphsFromText.set(t,e),e}getApproximateHeight(){return this.height}getExactHeight(t){const A=this.font.stringToGlyphs(t);let e=0,n=0;return A.forEach((t=>{const A=t.getMetrics();e=Math.max(e,A.yMax),n=Math.min(n,A.yMin)})),e-n}getKerningValue(t,A){let e=this.kerningValues.get(t.name);e||(e=new Map,this.kerningValues.set(t.name,e));let n=e.get(A.name);return n||(n=this.font.getKerningValue(t,A),e.set(A.name,n)),n}calculateApproximateHeight(){const t=this.font.stringToGlyphs("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");let A=0,e=0;return t.forEach((t=>{const n=t.getMetrics();A=Math.max(A,n.yMax),e=Math.min(e,n.yMin)})),A-e}}const Tt=t=>"data:"===t.substring(0,5).toLowerCase().trim(),jt=async t=>{const A=Tt(t)?Kt(t):Kt(await Ut(t));return Wt(A,{assetUrl:Tt(t)?t:await Ut(t),name:A.names.fullName.en}),await Ht(A,t),A},Kt=t=>{const A=bt(t),e=I(n).parse(A);return Wt(e,{assetUrl:t,name:e.names.fullName.en}),e},Vt=t=>{const A=Ot.get(t.name);if(A)return A;throw new Error("Font metrics unavailable for font")},Wt=(t,A)=>{const e=new zt(t);return Ot.set(A.name,e),e},Xt=(t,A,e,n)=>Math.max(nA(t.join("\n"),e,n),A),qt=(t,A,e,n,i,a)=>{const o=(a||lA)*i.getApproximateHeight(),r=A.split("\n");try{const A=r.flatMap((A=>Zt(A,t.width,n,i))),a=A.flatMap((t=>t.lines));return{lines:a,requiredHeight:A.flatMap((t=>t.lines)).length*(n*o),fontSize:e,requiredWidth:Xt(a,t.width,n,i)}}catch(a){const r=A.split("");return{lines:r,requiredHeight:r.length*(n*o),fontSize:e,requiredWidth:Xt(r,t.width,n,i)}}},Zt=(t,A,e,n)=>{const i=eA(t,e,n);if(i<=A)return{lines:[t],width:i};if(!(t.indexOf(" ")>-1)){if(t.length<=1)throw new Error(`Character ${t} is wider than region`);const i=Math.floor(t.length/2),a=Zt(t.slice(0,i),A,e,n),o=Zt(t.slice(i),A,e,n);return{lines:[...a.lines,...o.lines],width:Math.max(a.width,o.width)}}const a=t.split(" "),o=[];let r=-1/0,s=0;for(;s<a.length;){const t=a[s];if(eA(t,e,n)>A){const i=Zt(t,A,e,n);o.push(...i.lines),r=Math.max(r,i.width),s++}else{const i=[t];r=Math.max(r,eA(t,e,n));let c=s+1,g=!0;for(;c<a.length&&g;){const t=a[c],o=eA(`${i.join(" ")} ${t}`,e,n);o<=A?(i.push(t),r=Math.max(r,o),c++):g=!1}o.push(i.join(" ")),s=c}}if(r<0)throw new Error(`No max width calculated for text: ${o}.`);return{lines:o,width:r}},$t=(t,A,e,n,i,a)=>{const o=(a??lA)*A.getApproximateHeight(),r=1/e.unitsPerEm,s=n/iA(t,r,A),c=i/(t.length*o*r);return Math.min(c,s)},_t=(t,A,e,n)=>{const i=Vt(A.fontData),a=i.getFont(),o=A.fontSize/a.unitsPerEm;if(!e)return qt(A,t,A.fontSize,o,i,n);let r;if(r=A.text?A.text.split("\n"):A.input?.split("\n")??[""],e.input===t&&A.width===e.width&&A.height===e.height&&A.lineHeight===e.lineHeight)return{lines:r,requiredHeight:A.height,requiredWidth:Xt(r,A.width,o,i),fontSize:A.fontSize};const s=A.width!==e.width!=(A.height!==e.height);return A.lineHeight!==e.lineHeight||s||e.input!==t?qt(A,t,A.fontSize,o,i,n):{lines:r,requiredHeight:A.height,requiredWidth:Xt(r,A.width,o,i),fontSize:$t(r,i,a,A.width,A.height,n)}},tA=(t,A,e,n,i)=>{const a=Vt(A).getFont();let o={...t},r={...t},s=iA(n,e/a.unitsPerEm,Vt(A));return s&&s<o.width&&(r.width=s,"left"===i?(r.left+=Math.sin(o.rotation*Math.PI/360)*(o.width-s),r.top+=Math.sin(o.rotation*Math.PI/180)*(s-o.width)/2):r.left+="right"===i?o.width-s:(o.width-s)/2,n&&rA(n,n).every((([t,A])=>t===A))&&(o=r)),o},AA=1,eA=(t,A,e)=>{let n=0;const i=e.getGlyphs(t);return i.forEach(((t,A)=>{if(t.advanceWidth&&(n+=t.advanceWidth),A<i.length-1){const a=e.getKerningValue(t,i[A+1]);n+=a}})),n*=A,n},nA=(t,A,e)=>{let n=0;const i=e.getGlyphs(t);return i.forEach(((t,A)=>{if(t.advanceWidth&&(n=Math.max(n,t.advanceWidth)),A<i.length-1){const a=e.getKerningValue(t,i[A+1]);n=Math.max(n,a)}})),n*=A,n},iA=(t,A,e)=>{let n=0;return t.forEach((t=>{n=Math.max(n,eA(t,A,e))})),n},aA={stripControlCharacters:!0,vertical:!1,uppercase:!1},oA=(t,A=aA)=>{const e={...aA,...A};let n=t||"";return e.stripControlCharacters&&(n=n.replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,"")),e.uppercase&&(n=n.toUpperCase()),e.vertical&&(n=n.split("").join("\n")),n},rA=(t,A)=>t.map(((t,e)=>[t,A[e]])),sA=(t="center",A=!1)=>A?"center":t,cA=t=>"left"===t?"start":"right"===t?"end":"middle",gA=(t,A,e)=>t.fontData?{...t,...(()=>{if(t.algorithm===U.Traditional){const n=_t(A,t,e,t.lineHeight);return{text:n.lines.join("\n"),height:n.requiredHeight,width:n.requiredWidth,fontSize:n.fontSize,input:A}}return{text:A}})()}:t,lA=1.1;var BA={};y(BA,"colorDefinitionPrintValue",(()=>wA)),y(BA,"spotColorDefinitionString",(()=>hA)),y(BA,"svgColorValueToDefinition",(()=>dA));const wA=t=>{const A=hA(t.spotColor);return A?`${t.browserValue} ${A}`:t.browserValue},hA=t=>{if(!t)return"";if(t.profileName.includes("/")&&t.profileName.includes(".icc")){const A=t.profileName.replace(/\s/g,"-"),e=A.lastIndexOf("/");return`icc-named-color(${A.slice(e+1).slice(0,-4)}, ${t.namedColor})`}return`icc-named-color(${t.profileName}, ${t.namedColor})`},dA=t=>{const A=t.split(/[ ](?=[^)]*?(?:\(|$))/);if(0===A.length)return{browserValue:"#000000"};if(1===A.length)return{browserValue:A[0]};const e=A[1].match(/\(([^)]+)\)/gm);if(!e)throw new Error("Unhandled state of color value in SVG");const n=e[0].replace(/[() ]/g,"").split(",");return{browserValue:A[0],spotColor:{profileName:n[0],namedColor:n[1]}}},EA=t=>{const A=(t.rotation||0)*Math.PI/180,n=Math.cos(A),i=-Math.sin(A),a=`text-path-${t.id}`,o=t.x+(t.curved?0:t.width/2),r=t.y+(t.curved?0:t.height/2),s=(t.text||"").split("\n");return t.curved&&!t.paths?null:t.fontData?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("defs",{children:[(0,e.jsx)("style",{type:"text/css",dangerouslySetInnerHTML:{__html:`\n @font-face {\n font-family: '${t.fontData.name}';\n src: url('${t.fontData.assetUrl}') format('truetype');\n }\n `}}),t.curved&&t.paths?(0,e.jsx)("path",{id:a,d:t.paths[0]}):void 0]}),t._renderingConfiguration?.debug?(0,e.jsx)("rect",{stroke:"blue",fill:"none",x:t.x,y:t.y,width:t.width,height:t.height}):void 0,(0,e.jsx)("g",{mask:t.stepName?void 0:t.mask,children:(0,e.jsx)("g",{transform:`matrix(${n}, ${-i}, ${i}, ${n}, ${o}, ${r})`,children:(0,e.jsx)("text",{xmlSpace:"preserve",fontFamily:`'${t.fontData.name}'`,fontSize:t.fontSize,fontStyle:"normal",fontWeight:"normal",fill:t._renderingConfiguration?.spotColors&&t.fillSpotColorDefinition?`${t.fill} ${hA(t.fillSpotColorDefinition)}`:t.fill,style:{whiteSpace:"pre",userSelect:"none"},children:t.curved?(0,e.jsx)(QA,{text:t.text||"",curvedPathId:a,align:t.align}):s.map(((A,n)=>(0,e.jsx)(uA,{align:t.vertical?"center":t.align,fontSize:t.fontSize,thisLineIdx:n,amountLines:s.length,text:A,textboxHeight:t.height,textboxWidth:t.width,lineHeight:t.lineHeight,vertical:t.vertical,verticalAlign:t.verticalAlign},n)))})})})]}):null},uA=t=>(0,e.jsx)("tspan",{textAnchor:cA(t.align),x:"left"===t.align?-t.textboxWidth/2:"right"===t.align?t.textboxWidth/2:0,y:`${(()=>{const A=t.fontSize*(void 0!==t.lineHeight?t.lineHeight:lA),e=t.textboxHeight/2;if("top"===t.verticalAlign)return-e+3*t.fontSize/4+t.thisLineIdx*A;if("bottom"===t.verticalAlign){const n=t.amountLines-1-t.thisLineIdx;return e-t.fontSize/4-n*A}const n=(t.amountLines-1)/2;return(t.thisLineIdx-n)*A+t.fontSize/4})()}px`,children:t.text}),QA=t=>{const A=`#${t.curvedPathId}`;return(0,e.jsx)("textPath",{startOffset:"left"===t.align?"0%":"right"===t.align?"100%":"50%",textAnchor:cA(t.align),href:A,xlinkHref:A,children:t.text})};y({},"Illustration",(()=>yA));var CA={};y(CA,"traverse",(()=>pA)),y(CA,"sanitizeSvgTree",(()=>DA)),y(CA,"modifySVGWithElementProperties",(()=>fA)),y(CA,"generateSVGWithUnknownColors",(()=>IA));const mA=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],pA=(t,A)=>{A(t),t.children.length>0&&Array.from(t.children).forEach((t=>pA(t,A)))},DA=(t,A=!1)=>{!A&&t.setAttribute("preserveAspectRatio","none");const e=[];pA(t,(t=>{if("script"!==t.tagName)if("style"!==t.tagName);else try{(0,c.parse)(t.innerHTML).stylesheet?.rules.forEach((t=>{e.push(t)})),t.remove()}catch(t){console.error(t)}else t.remove()})),pA(t,(t=>{e.forEach((A=>{A.selectors?.forEach((e=>{((t,A)=>{try{return t.matches(A)}catch(e){return t.classList.contains(A.substring(1))}})(t,e)&&A.declarations?.forEach((A=>{A.property&&A.value&&t.setAttribute(A.property,A.value)}))}))}))}))},fA=(t,A,e,n,i)=>{const a=(t=>vt().parseFromString(t,"image/svg+xml").firstElementChild)(t);if(!a)throw new Error("Failed to read SVG.");return((t,A,e)=>{t.setAttribute("height",`${e}px`),t.setAttribute("width",`${A}px`)})(a,A,e),((t,A,e)=>{pA(t,(t=>{const n=t.attributes.getNamedItem("fill");n&&"none"!==n.value&&t.classList.forEach((n=>{if(n.startsWith("spiff-fill")){const i=A[n];i&&t.setAttribute("fill",e?wA(i):i.browserValue)}}));const i=t.attributes.getNamedItem("stroke");i&&"none"!==i.value&&t.classList.forEach((n=>{if(n.startsWith("spiff-stroke")){const i=A[n];i&&t.setAttribute("stroke",e?wA(i):i.browserValue)}}))}))})(a,n,i),(t=>Rt().serializeToString(t))(a)},IA=async t=>{const A=t.match(/<svg.*?<\/svg>/s)||[],e=A?.length>0?A[0]:"",n=vt().parseFromString(e,"image/svg+xml").firstElementChild;if(!n)throw new Error("Failed to read SVG.");DA(n);const i={};pA(n,(t=>{mA.includes(t.tagName)&&!t.attributes.getNamedItem("fill")&&t.setAttribute("fill","black");const A=t.attributes.getNamedItem("fill");if(A&&"none"!==A.value){const e=dA(A.value),n=`spiff-fill-${e.browserValue.replace(/\W/g,"")}`;t.setAttribute("fill",e.browserValue),t.classList.add(n),i[n]=e}const e=t.attributes.getNamedItem("stroke");if(e&&"none"!==e.value){const A=dA(e.value),n=`spiff-stroke-${A.browserValue.replace(/\W/g,"")}`;t.classList.add(n),t.setAttribute("stroke",A.browserValue),i[n]=A}}));const a=Rt().serializeToString(n);return{colors:i,svg:a}},yA=t=>{if(t.cachedObjectURL&&!t._renderingConfiguration?.omitCachedFields)return(0,e.jsx)(dt,{id:t.id,src:t.cachedObjectURL,x:t.x,y:t.y,width:t.width,height:t.height,rotation:t.rotation,preserveAspectRatio:"none",immutable:t.immutable,mask:t.stepName?void 0:t.mask});const A=t.rotation||0,n=tt(A),i=Math.cos(n),a=-Math.sin(n),o=`\n matrix(1, 0, 0, 1, ${t.x}, ${t.y})\n matrix(1, 0, 0, 1, ${t.width/2}, ${t.height/2})\n matrix(${i}, ${-a}, ${a}, ${i}, 0, 0)\n matrix(1, 0, 0, 1, ${-t.width/2}, ${-t.height/2})\n `;if(!t.svg)throw new Error(`Illustration element ${t.id} (stepName ${t.stepName}) lacked svg from src ${t.src} at render time.`);return(0,e.jsx)("g",{mask:t.stepName?void 0:t.mask,children:(0,e.jsx)("g",{transform:o,dangerouslySetInnerHTML:{__html:fA(t.svg,t.width,t.height,t.colors,t._renderingConfiguration?.spotColors)}})})};class MA{constructor(){this.id=F(),this.stateCallbacks=[],this.prevCommands=[],this.nextCommands=[]}registerStateCallback(t){this.stateCallbacks.push(t)}unregisterStateCallback(t){this.stateCallbacks.filter((A=>A!==t))}getState(){return this.state}runStateCallbacks(){this.stateCallbacks.forEach((t=>t()))}apply(t,A){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);this.state=this.commandReducer(this.state,t),this.runStateCallbacks(),this.nextCommands=[],A||this.prevCommands.push(t)}undo(){if(!this.state)return;const t=this.prevCommands.pop();if(!t)return;const A=t.undo();t.varying?this.state={...this.state,variation:A}:this.state={...this.state,transaction:A},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,A){const e=this.prevCommands.filter((A=>A.sequenceId===t)).pop();e&&(this.prevCommands=this.prevCommands.filter((A=>A.sequenceId!==t)),e?.overrideOldState(A),this.prevCommands.push(e))}getLayoutById(t){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const A=this.state.transaction?.layouts?.[t],e=this.state.variation?.layouts?.[t],n=A?.layout||e?.layout;if(!n)throw new Error(`No layout: ${t}`);const i=[...A?.elements||[],...e?.elements||[]];return this.getLayoutDataWithState(n,i)}getAllLayouts(){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const t=[...Object.keys(this.state.transaction?.layouts),...Object.keys(this.state.variation?.layouts||{})];return[...new Set(t)].map((t=>this.getLayoutById(t)))}getLayoutDataWithState(t,A){return{layoutState:{layout:t,elements:A},getComponentWithProps:e=>FA(t,A,e)}}initialize(t,A){if(A)return void(this.state={transaction:A});let e={serializableWorkflow:{steps:[]},layouts:{}};t.forEach((t=>{e=new LA(t).apply(e)})),this.runStateCallbacks(),this.state={transaction:e}}commandReducer(t,A){if(A.varying){const e={layouts:{},serializableWorkflow:{steps:[]},...t.variation};return{...t,variation:A.apply(e)}}{const e=t.transaction||{layouts:{},serializableWorkflow:{steps:[]}};return{...t,transaction:A.apply(e)}}}}const xA=t=>"image"===t.type?(0,e.jsx)(dt,{...t},t.id):"frame"===t.type?(0,e.jsx)(Et,{...t},t.id):"illustration"===t.type?(0,e.jsx)(yA,{...t},t.id):"textbox"===t.type?(0,e.jsx)(EA,{...t},t.id):null,FA=(t,A,n)=>{const i=n.renderingConfiguration,a=i?.removeExcludedElements?A.filter((t=>!t.excludeFromExport)):A;return(0,e.jsx)(q,{preserveAspectRatio:void 0,elements:a,backgroundColor:t.transparentBackground?void 0:"white",width:n.width||t.width,height:n.height||t.height,viewBox:i?.region?{x:i.region.left,y:i.region.top,width:i.region.width,height:i.region.height}:{x:0,y:0,width:t.width,height:t.height},configuration:i,outlineArea:n.outlineArea,maxHeight:n.maxHeight,maxWidth:n.maxWidth,position:n.position,borderRadius:n.borderRadius,outlineColor:n.outlineColor})};function YA(t){return t.sort(((t,A)=>{const e=t.layer||0,n=A.layer||0;if(e<n)return-1;if(e>n)return 1;const i=t.layerIndex||0,a=A.layerIndex||0;return i<a?-1:i>a?1:0}))}class vA extends Error{constructor(){super("Element not found!"),Object.setPrototypeOf(this,vA.prototype)}}const SA=(t,A)=>NA(t,A).elements.find((A=>A.id===t)),NA=(t,A)=>{const e=Object.values(A).find((A=>A.elements.some((A=>A.id===t))));if(!e)throw new vA;return e},HA=(t,A)=>{const e=YA([...A.elements.filter((A=>A.id!==t.id)),t]);return{layout:A.layout,elements:e,modificationID:F()}},RA=async(t,A)=>{const e=[...Object.keys(t.layouts),...Object.keys(A?.layouts||{})],n=[...new Set(e)];for(let e=0;e<n.length;e++){const i=n[e],a=t.layouts[i],o=A?.layouts[i],r=(a||o).elements.filter((t=>"illustration"===t.type));for(let t=0;t<r.length;++t){const A=r[t];if(A.src&&!A.svg){const t=await Nt(A.src),e=await IA(t);A.svg=fA(e.svg,A.width,A.height,A.colors)}}}};class PA{undo(){if(!this.oldState)throw new Error("Cannot undo.");return this.oldState}overrideOldState(t){this.oldState=t}}class UA extends PA{constructor(t){super(),this.serializableWorkflow=t}apply(t){return this.oldState=t,{...t,serializableWorkflow:this.serializableWorkflow}}}class GA extends PA{constructor(t,A,e){super(),this.id=t,this.x=A,this.y=e}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,x:this.x,y:this.y},n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class bA extends PA{constructor(t,A){super(),this.id=t,this.angle=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,rotation:this.angle},n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class kA extends PA{constructor(t,A,e){super(),this.id=t,this.width=Math.abs(A),this.height=Math.abs(e)}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;let e={...A,width:this.width,height:this.height};if("frame"===A.type){const t=e;t.scaleX=t.scaleX*this.width/A.width,t.scaleY=t.scaleY*this.height/A.height}else if("textbox"===A.type){const t=e,n=(t.algorithm&&t.algorithm!==U.Autosize?t.input:t.text)??"";e=gA(t,n,A)}const n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class JA extends PA{constructor(t){super(),this.commands=t}apply(t){return this.oldState=t,this.commands.reduce(((t,A)=>A.apply(t)),t)}}class LA extends PA{constructor(t){super(),this.layout=t}apply(t){return this.oldState=t,{...t,layouts:{...t.layouts,[this.layout.id]:{elements:[],layout:{...this.layout},modificationID:F()}}}}}class OA extends PA{constructor(t){super(),this.panelName=t}apply(t){this.oldState=t;const A=Object.values(t.layouts).map((t=>{const A=t.layout.panelId===this.panelName;return{...t,elements:A?[]:[...t.elements],modificationID:F()}})),e={};return A.forEach((t=>{e[t.layout.id]=t})),{...t,layouts:e}}}class zA extends PA{constructor(t,A){super(),this.element=t,this.layout=A}apply(t){this.oldState=t,t.layouts[this.layout.id]||(t.layouts[this.layout.id]={layout:this.layout,elements:[],modificationID:""});const A=t.layouts[this.layout.id].elements;if(A.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===A.length){const e=[...A,this.element];return void 0===this.element.layerIndex&&(this.element.layerIndex=this.assignIndex(this.element,e)),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:e,modificationID:F()}}}}const e=A[A.length-1],n=e.productOverlay?e:null;let i;if(n&&A.pop(),null!==this.element.layerIndex&&void 0!==this.element.layerIndex)i=[...A,this.element].sort(((t,A)=>void 0!==t.layerIndex&&void 0!==A.layerIndex?t.layerIndex-A.layerIndex:0));else{const t=this.assignIndex(this.element,A);this.element.layerIndex=void 0!==t?t:0,i=[...A,this.element]}return n&&i.push(n),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:i,modificationID:F()}}}}assignIndex(t,A){if(0===A.length)return 0;const e=A.filter((A=>(A.layer||0)===(t.layer||0))).sort(((t,A)=>(t.layerIndex||0)-(A.layerIndex||0)))[A.length-1]?.layerIndex;return void 0!==e?e+1:0}}class TA extends PA{constructor(t){super(),this.id=t}apply(t){this.oldState=t;let A=!1;const e=Object.values(t.layouts).map((t=>(t.elements.filter((t=>t.id!==this.id)).length!==t.elements.length&&(A=!0),{...t,elements:t.elements.filter((t=>t.id!==this.id)),modificationID:F()})));A||console.log(`Failed to delete element ${this.id}`);const n={};return e.forEach((t=>{n[t.layout.id]=t})),{...t,layouts:n}}}class jA extends PA{constructor(t,e){super(),this.el=I(A)(t),this.layout=e,this.el.id=F(),this.el.x+=5,this.el.y+=5}apply(t){return this.oldState=t,new zA(this.el,this.layout).apply(t)}}class KA extends PA{constructor(t,A,e){super(),this.id=t,this.color=A,this.textFillSpotColor=e}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,fill:this.color,fillSpotColorDefinition:this.textFillSpotColor},n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class VA extends PA{constructor(t,A){super(),this.id=t,this.size=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,fontSize:this.size},n=NA(A.id,Object.values(t.layouts)),i=(A.algorithm&&A.algorithm!==U.Autosize?A.input:A.text)??"",a=HA(gA(e,i),n);return{...t,layouts:{...t.layouts,[n.layout.id]:a}}}}class WA extends PA{constructor(t,A){super(),this.id=t,this.algorithm=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,algorithm:this.algorithm},n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class XA extends PA{constructor(t,A){super(),this.id=t,this.fontData=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,fontData:this.fontData},n=NA(A.id,Object.values(t.layouts)),i=(A.algorithm&&A.algorithm!==U.Autosize?A.input:A.text)??"",a=HA(gA(e,i),n);return{...t,layouts:{...t.layouts,[n.layout.id]:a}}}}class qA extends PA{constructor(t,A){super(),this.id=t,this.align=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,align:this.align},n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class ZA extends PA{constructor(t,A,e){super(),this.id=t,this.imageData=A,this.offsets=e}apply(t){this.oldState=t;const A=NA(this.id,Object.values(t.layouts)),e=A.elements.findIndex((t=>t.id===this.id)),n=A.elements[e].pattern,i=[...A.elements];i.splice(e,1,{...A.elements[e],pattern:{...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={...A,elements:i,modificationID:F()};return{...t,layouts:{...t.layouts,[A.layout.id]:a}}}}class $A extends PA{constructor(t,A){super(),this.id=t,this.text=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e=NA(A.id,Object.values(t.layouts)),n=HA(gA(A,this.text,A),e);return{...t,layouts:{...t.layouts,[e.layout.id]:n}}}}class _A extends PA{constructor(t,A,e){super(),this.id=t,this.className=A,this.fill=e}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e=A.colors||{},n=e[this.className];e[this.className]={browserValue:this.fill,spotColor:n?.spotColor};const i={...A,colors:e},a=NA(A.id,Object.values(t.layouts)),o=HA(i,a);return{...t,layouts:{...t.layouts,[a.layout.id]:o}}}}class te extends PA{constructor(t,A,e){super(),this.id=t,this.svgBody=A,this.objectURL=e}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,svg:this.svgBody,cachedObjectURL:this.objectURL},n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class Ae extends PA{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!SA(this.id,Object.values(t.layouts)).id)throw new vA;const A=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!A)throw new Error("Layout missing from state!");const e=A.elements.findIndex((t=>t.id===this.id));A.elements.push(A.elements.splice(e,1)[0]);const n=[...A.elements];return n.forEach(((t,A)=>t.layerIndex=A)),{...t,layouts:{...t.layouts,[A.layout.id]:{...t.layouts[A.layout.id],elements:n,modificationID:F()}}}}}class ee extends PA{constructor(t){super(),this.id=t}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;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 n=e.elements.findIndex((t=>t.id===this.id));e.elements.splice(n,1),e.elements.unshift(A);const i=[...e.elements],a=i.splice(n,1)[0];return i.splice(n,0,a),i.forEach(((t,A)=>t.layerIndex=A)),{...t,layouts:{...t.layouts,[e.layout.id]:{...t.layouts[e.layout.id],elements:i,modificationID:F()}}}}}class ne extends PA{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!SA(this.id,Object.values(t.layouts)).id)throw new vA;const A=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!A)throw new Error("Layout missing from state!");const e=A.elements.findIndex((t=>t.id===this.id)),n=e+1,i=[...A.elements],a=i.splice(e,1)[0];return i.splice(n,0,a),i.forEach(((t,A)=>t.layerIndex=A)),{...t,layouts:{...t.layouts,[A.layout.id]:{...t.layouts[A.layout.id],elements:i,modificationID:F()}}}}}class ie extends PA{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!SA(this.id,Object.values(t.layouts)).id)throw new vA;const A=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!A)throw new Error("Layout missing from state!");const e=A.elements.findIndex((t=>t.id===this.id)),n=e-1,i=[...A.elements],a=i.splice(e,1)[0];return i.splice(n,0,a),i.forEach(((t,A)=>t.layerIndex=A)),{...t,layouts:{...t.layouts,[A.layout.id]:{...t.layouts[A.layout.id],elements:i,modificationID:F()}}}}}class ae extends PA{constructor(t,A){super(),this.id=t,this.value=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;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!");return{...t,layouts:{...t.layouts,[e.layout.id]:HA({...A,layer:this.value},e)}}}}var oe={};y(oe,"patternImageDataCache",(()=>we)),y(oe,"frameDataCache",(()=>he)),y(oe,"generateFrameSVG",(()=>de)),y(oe,"generateDefaultRectangleFrameSvg",(()=>Ee)),y(oe,"getVariant",(()=>ue)),y(oe,"getFrameData",(()=>Qe)),y(oe,"calculateOffsets",(()=>Ce)),y(oe,"getPatternImageData",(()=>me)),y(oe,"GetSVGDimensions",(()=>pe)),y(oe,"svgStringDimensions",(()=>De));var re={};y(re,"getExifOrientation",(()=>ce)),y(re,"canvasDims",(()=>ge)),y(re,"getAttributesFromArrayBuffer",(()=>le));let se=null;const ce=t=>new Promise((A=>{const e=kt(t);(0,r.fromBuffer)(t).then((t=>{const n=t?.mime;if("image/jpeg"!==n)return A(1);(new(0,l.ExifImage)).loadImage(e,((t,e)=>A(t?1:e.image.Orientation||1)))}))})),ge=t=>{const A=8192,e=t.naturalWidth/t.naturalHeight;return t.naturalHeight<=A&&t.naturalWidth<=A?[t.naturalWidth,t.naturalHeight]:t.naturalHeight>t.naturalWidth?[e*A,A]:[A,A/e]},le=async t=>{const A=await(async t=>{const A=await Gt(t),e=await(0,g.loadImage)(A),[n,i]=ge(e),a=await(async()=>{if(null!==se)return!se;const t=await(0,g.loadImage)("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/xABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAAAAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQvoP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXwH/9k=");return se=2===t.width&&3===t.height,!se})();if(!a){const t=(0,g.createCanvas)(n,i);return t.getContext("2d").drawImage(e,0,0,n,i),t}const o=await ce(t),[r,s]=o>4?[i,n]:[n,i],c=(0,g.createCanvas)(r,s),l=c.getContext("2d");switch(o){case 2:l.translate(r,0),l.scale(-1,1);break;case 3:l.translate(r,s),l.rotate(Math.PI);break;case 4:l.translate(0,s),l.scale(1,-1);break;case 5:l.rotate(-.5*Math.PI),l.scale(-1,1);break;case 6:l.rotate(-.5*Math.PI),l.translate(-r,0);break;case 7:l.rotate(-.5*Math.PI),l.translate(-r,s),l.scale(1,-1);break;case 8:l.rotate(.5*Math.PI),l.translate(0,-s)}return l.drawImage(e,0,0,r,s),c})(t);return"image/jpeg"===(await(0,r.fromBuffer)(t))?.mime?{dataUrl:A.toDataURL("image/jpeg",1),height:A.height,width:A.width}:{dataUrl:A.toDataURL(),height:A.height,width:A.width}};y({},"getDefaultVariant",(()=>Be));const Be=t=>{const A=t.variants;return 1===A.length?A[0]:void 0!==t.defaultVariant?A.find((A=>A.id===t.defaultVariant)):void 0},we=new Map,he=new Map,de=async(t,A)=>{if(!A){if(!t)throw new Error("No region or src supplied. Cannot construct frame!");return Ee(t)}return Nt(A)},Ee=t=>{const A=t.width,e=A/t.height,n=Math.max(A,512),i=n/e;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 `},ue=(t,A)=>{if(!A)return;const e=A.variants.find((A=>A.id===t.frameVariantId))||Be(A);if(!e)throw new Error(`No variant with ID: ${t.frameVariantId}`);if(!e.asset)throw new Error(`No asset for variant with ID: ${t.frameVariantId}`);return e},Qe=async t=>{const A=vt().parseFromString(t,"image/svg+xml"),e=A.querySelector("svg");if(!e)throw new Error("Malformed frame SVG: <svg> tag not found");const n=e.getAttribute("viewBox");if(!n)throw new Error("SVG missing viewBox.");const i=n.split(" "),a=parseFloat(i[3])||1,o=parseFloat(i[2])||1,r=A.getElementById("target-path"),s=A.getElementsByClassName("st0").item(0);if(r){const t=r.getAttribute("d");if(!t)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const A={path:t,width:o,height:a};return he.set(t,A),A}if(s){const t=s.getAttribute("d");if(!t)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const A={path:t,width:o,height:a};return he.set(t,A),A}throw new Error("Malformed frame SVG")},Ce=(t,A,e)=>{const n=A.width>=A.height,i=t.width>=t.height,a=A.width/2,o=A.height/2,r=(n?A.height:A.width)/(i?t.height:t.width),s=e?.scale||r,c=a-t.width/2*s,g=e?.left||c,l=o-t.height/2*s;return{x:g,y:e?.top||l,zoom:s}},me=async t=>{if(we.has(t))return we.get(t);if(t.endsWith("svg")){const A=await pe(t),e=A.width,n=A.height,i={src:t,width:e,height:n,aspect:e/n};return we.set(t,i),i}{const A=await St(t),e=await le(A),n={src:t,width:e.width,height:e.height,aspect:e.width/e.height};return we.set(t,n),n}},pe=async t=>{const A=await fetch(t),e=await A.text();return De(e)},De=t=>{const A=(new DOMParser).parseFromString(t,"image/svg+xml").querySelector("svg");if(!A)throw new Error("No svg tag found, this svg must be malformed!");const e=A.getAttribute("viewBox"),n=A.getAttribute("width"),i=A.getAttribute("height"),a=e?e?.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]}};var fe={};y(fe,"determineCorrectFontSizeAndLines",(()=>ye)),y(fe,"determineCorrectTextboxRegion",(()=>Me));const Ie=(t,A,e,n,i)=>{let a=A.map((t=>t.split("\n"))).flat(),o=a.length,r=a.map((t=>eA(t,n,i)));const s=i.getApproximateHeight()*n;let c=!0;for(;c;){if(s+(o-1)*e>t.height)return[null,null];const A=Math.max(...r);if(A<=t.width)return[a,A];const g=r.reduce(((t,A,e,n)=>A>n[t]?e:t),0),l=a[g];let B=!1,w=l.length;for(;!B&&w>-1;){w=l.lastIndexOf(" ",w-1);const A=[l.slice(0,w),l.slice(w+1)],e=A.map((t=>eA(t,n,i)));e[0]<=t.width&&(a=[...a.slice(0,g),...A,...a.slice(g+1)],r=[...r.slice(0,g),...e,...r.slice(g+1)],o+=1,B=!0)}B||(c=!1)}return[null,null]},ye=(t,A,e,n,i)=>{let a,o;const r=Vt(A),s=r.getFont();if(i.size){const A=t/s.unitsPerEm;return[a,o]=Ie(e,n,t,A,r),[i.size,a,o]}let c=6-AA;if(n.length>0){let t=n,A=0;for(;(!i.maxSize||c<=i.maxSize)&&t;)c+=AA,A=c/s.unitsPerEm,[t,o]=Ie(e,n,c,A,r)}c>6&&(c-=AA),i.minSize&&c<i.minSize&&(c=i.minSize);const g=c/s.unitsPerEm;return[a,o]=Ie(e,n,c,g,r),[c,a,o]},Me=(t,A,e,n,i)=>{let a={...t},o={...t},[r,s,c]=ye(e,A,o,n,{size:0,minSize:e,maxSize:e});var g,l;return c&&c<a.width&&(o.width=c,"left"===i?(o.left+=Math.sin(a.rotation*Math.PI/360)*(a.width-c),o.top+=Math.sin(a.rotation*Math.PI/180)*(c-a.width)/2):o.left+="right"===i?a.width-c:(a.width-c)/2,[r,s]=ye(e,A,o,n,{size:e}),r===e&&s&&(g=n,l=s,g.map(((t,A)=>[t,l[A]]))).every((([t,A])=>t===A))&&(a=o)),a};var xe={};y(xe,"svgObjectURL",(()=>ve)),y(xe,"LayoutElementFactory",(()=>Ne));const Fe=(t,A)=>{const e=t.layoutState.elements.filter((t=>t.layer===A)),n=Math.max(...e.map((t=>t.layerIndex)).filter((t=>void 0!==t)));return Math.max(n,0)+1},Ye=async t=>new Promise((A=>{fetch(t).then((t=>{A(t.text())})).catch((t=>console.error(t)))})),ve=async t=>{const A=(new DOMParser).parseFromString(t,"image/svg+xml").firstElementChild;if(!A)throw new Error("Failed to read SVG");const e=(new XMLSerializer).serializeToString(A),n=document.createElement("canvas"),i=n.getContext("2d"),a=await B.Canvg.from(i,e,{anonymousCrossOrigin:!0,ignoreDimensions:!1}),o=A.getAttribute("width"),r=A.getAttribute("height"),s=2048;if(r&&o){const t=parseFloat(r),A=parseFloat(o)/t;A>1?a.resize(s,s/A):a.resize(s*A,s)}else a.resize(s,s);return await a.render(),await(async t=>new Promise(((A,e)=>{try{if(!URL||!URL.createObjectURL)throw new Error("Environment incapable of generating ObjectURL");t.toBlob((e=>{if(!e){if(0===t.width||0===t.height)throw new Error(`Canvas dimensions are invalid (${t.width},${t.height})`);if(t.width*t.height>=268435456)throw new Error(`Canvas dimensions exceed device limit (${t.width},${t.height})`);throw new Error("Couldn't generate object URL for Illustration, the blob was undefined!")}A(URL.createObjectURL(e))}))}catch(t){e(t)}})))(n)},Se=async(t,A,e,n)=>{const i=t.layoutState.layout.useEditableArea&&t.layoutState.layout.editableArea||{width:t.layoutState.layout.width,height:t.layoutState.layout.height,x:0,y:0},a=i.width<i.height?i.width:i.height,o=t.layoutState.layout.useEditableArea?a/1.3:a/2,r={top:i.y+i.height/2-o/2,left:i.x+i.width/2-o/2,width:o,height:o,rotation:0,panelId:t.layoutState.layout.panelId};if(e&&A===N.Illustration){const t=await IA(await Ye(e)),A=(new DOMParser).parseFromString(t.svg,"image/svg+xml").firstElementChild.getAttribute("viewBox");if(!A)throw new Error("SVG missing viewBox.");const n=r.height,i=A.split(" "),a=(parseFloat(i[2])||1)/(parseFloat(i[3])||1);r.height=r.width/a,r.top+=(n-r.height)/2}if(e&&A===N.Image){const t=r.height,A=await fetch(e),n=await A.arrayBuffer(),i=await le(n),a=i.width/i.height;r.height=r.width/a,r.top+=(t-r.height)/2}if(e&&A===N.Textbox&&n?.text&&n?.fontScale){const t={assetUrl:e,name:(await jt(e)).names.fullName.en},A=Vt(t),a=eA(n.text,n?.fontScale,A);r.width=Math.min(a,.85*i.width),r.left=i.x+i.width/2-r.width/2}return r};class Ne{static async getFrame(t,A){const e=await de(A.region,A.src),n=await Qe(e),i=A.region||await Se(t,N.Frame);return{id:F(),x:i.left,y:i.top,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||Fe(t,i.layer||0),rotation:i.rotation,scaleX:i.width/n.width,scaleY:i.height/n.height,path:n.path,type:N.Frame,disablePlaceholder:A.configuration.disablePlaceholder,focalBlur:A.configuration.focalBlur,focalBlurStrength:A.configuration.focalBlurStrength,focalBlurRadius:A.configuration.focalBlurRadius,pattern:void 0,immutable:i.immutable}}static async getImage(t,A){const e=A.region||await Se(t,N.Image,A.src);return{id:F(),src:A.src,type:N.Image,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer||0,layerIndex:e.layerIndex||Fe(t,e.layer||0),immutable:e.immutable,preserveAspectRatio:"none"}}static async getTextbox(t,A){const{configuration:e,fontSrc:n,designInputStep:i}=A,a=await jt(n),o={assetUrl:n,name:a.names.fullName.en},r=i?.text||e.defaultText||"",s=e.replaceableText?e.replaceableText.replace("{{}}",r):r,c=oA(s,{vertical:e.vertical,uppercase:e.uppercase}),g=A.region||await Se(t,N.Textbox,n,{text:c,fontScale:e.size?e.size/a.unitsPerEm:void 0}),l=gA({id:F(),type:N.Textbox,x:g.left,y:g.top,width:g.width,height:g.height,align:sA(e.textAlign,e.vertical),curved:e.curved,fill:i?.color||e.colour||"#000000",fontData:o,layer:g.layer||0,layerIndex:g.layerIndex||Fe(t,g.layer||0),paths:e.paths,rotation:g.rotation,vertical:e.vertical,verticalAlign:e.verticalAlign||"middle",algorithm:U.Traditional,fontSize:e.size||Math.max(Math.round(.025*g.height),1),text:c,input:r},c),B=tA({...g,height:l.height},o,l.fontSize,l?.text?.split("\n")||[],l.align);return{...l,x:B.left,y:B.top+(g.height-B.height)/2,width:B.width,height:B.height}}static async getShape(t,A){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="${A.color}"\n />\n </svg>\n `,n={};n["spiff-fill-shape"]={browserValue:A.color};const i=A.region||await Se(t,N.Illustration),a=F();return{stepRegion:A.region,colors:n,id:a,svg:e,type:N.Illustration,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||Fe(t,i.layer||0),immutable:i.immutable}}static async getIllustration(t,A){const e=A.region||await Se(t,N.Illustration,A.src),n=await IA(await Ye(A.src)),i=await ve(n.svg),a=F();return{cachedObjectURL:i,stepRegion:A.region,colors:n.colors,id:a,svg:n.svg,type:N.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer||0,layerIndex:e.layerIndex||Fe(t,e.layer||0),immutable:e.immutable}}}function He(t,A,e){return(A=function(t){var A=function(t,A){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,A||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===A?String:Number)(t)}(t,"string");return"symbol"==typeof A?A:String(A)}(A))in t?Object.defineProperty(t,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[A]=e,t}class Re extends Error{constructor(t){super(t),this.name=this.constructor.name}}class Pe extends Re{constructor(t){super(`ConfigurationError - ${t}`)}}class Ue extends Pe{constructor(t){super(`Option not Configured: ${t.stepTitle}`),He(this,"optionId",void 0),this.optionId=t?.optionId||"N/A"}}class Ge extends Pe{constructor(t){super(`Panel not Found: ${t.panelId}`),He(this,"panelId",void 0),this.panelId=t?.panelId||"N/A"}}class be extends Pe{constructor(t){super(`Asset not found for variant: ${t.name}`),He(this,"variant",void 0),this.variant=t}}class ke extends Pe{constructor(t){super(`Resource not found for asset: ${t.name}`),He(this,"asset",void 0),this.asset=t}}class Je extends Pe{constructor(t,A){super(`Workflow Misconfiguration: ${t.stepName} - ${A}`),He(this,"step",void 0),this.step=t}}class Le extends Re{constructor(t){super(`ImplementationError - ${t}`)}}class Oe extends Le{constructor(t){super(`Unhandled Behavior Encountered: ${t}`)}}class ze extends Le{constructor(t){super(`Parsing Error: ${t}`)}}class Te extends Le{constructor(t){super(`Client Error: ${t}`)}}class je extends Le{constructor(t){super(`Resource Generation Failed: ${t}`)}}function Ke(t,A,e){return(A=function(t){var A=function(t,A){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,A||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===A?String:Number)(t)}(t,"string");return"symbol"==typeof A?A:String(A)}(A))in t?Object.defineProperty(t,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[A]=e,t}class Ve{get(t){return localStorage.getItem(t)||void 0}set(t,A){localStorage.setItem(t,A)}remove(t){localStorage.removeItem(t)}getMap(t){const A=this.get(t);if(A)return new Map(JSON.parse(A))}setMap(t,A){const e=JSON.stringify([...A.entries()]);this.set(t,e)}}class We{constructor(){Ke(this,"storage",new Map)}get(t){return this.storage.get(t)||void 0}set(t,A){this.storage.set(t,A)}remove(t){this.storage.delete(t)}getMap(t){const A=this.get(t);if(A)return new Map(JSON.parse(A))}setMap(t,A){const e=JSON.stringify([...A.entries()]);this.set(t,e)}}const Xe=(()=>{try{return localStorage?new Ve:new We}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new We}})();function qe(t,A,e){return(A=function(t){var A=function(t,A){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,A||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===A?String:Number)(t)}(t,"string");return"symbol"==typeof A?A:String(A)}(A))in t?Object.defineProperty(t,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[A]=e,t}const Ze=new class{constructor(){qe(this,"defaultServerUrl","https://api.spiff.com.au"),qe(this,"defaultServicesApiUrl","https://services.spiff.com.au"),qe(this,"defaultHubUrl","https://hub.spiff.com.au"),qe(this,"serverUrl",void 0),qe(this,"servicesApiUrl",void 0),qe(this,"hubUrl",void 0),qe(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 $e(t,A,e){return(A=function(t){var A=function(t,A){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,A||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===A?String:Number)(t)}(t,"string");return"symbol"==typeof A?A:String(A)}(A))in t?Object.defineProperty(t,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[A]=e,t}let _e;const tn=t=>{_e=t};const An=new class{constructor(){$e(this,"shadowGraphqlClient",void 0),this.shadowGraphqlClient=this.constructShadowGraphqlClient(),Ze.addServerUrlCallback((()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()}))}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const A=(0,t.createHttpLink)({uri:`${Ze.getServerUrl()}/graphql`,fetch:d.fetch}),e=(0,w.setContext)((async(t,{headers:A})=>{const e=A||{},n=await(async()=>{const t={transactionOwnerId:_e};return"undefined"!=typeof window&&window.location.href.includes("/workflows/product/")?{...await new Promise((t=>{const A=Ze.getHubUrl();if(window.location.href.includes("localhost")||window.location.href.includes("ngrok"))return void t({});const e=n=>{n.origin===A&&(window.removeEventListener("message",e),t(n.data))};window.parent!==window&&(window.addEventListener("message",e,!1),window.parent.postMessage("ready",A))})),...t}:t})();return n.bearer&&(e.Authorization=`Bearer ${n.bearer}`),n.partnerId&&(e.partnerId=n.partnerId),n.activeIntegration&&(e.activeIntegration=n.activeIntegration),n.transactionOwnerId&&(e.transactionOwnerId=n.transactionOwnerId),{headers:e}})),n=(0,h.onError)((({operation:t,graphQLErrors:A,networkError:e})=>{(A||[]).forEach((({message:A,locations:e,path:n})=>{console.log("[GraphQL Operation Error]"),console.log("Name:"+t.operationName),console.log("Query:"+JSON.stringify(t.query)),console.log(`Message: ${A}, Location: ${JSON.stringify(e,null,2)}, Path: ${n}`),console.log("Variables:"+JSON.stringify(t.variables))})),e&&console.log("GraphQL Network error")}));const i=new(0,t.InMemoryCache)({addTypename:!1,typePolicies:{Transaction:{fields:{bulkEmailAddress:{read:(t=null)=>t,merge:(t,A)=>A||t||null},transactionOwnerId:{read:(t=null)=>t,merge:(t,A)=>A||t||null},customLogoLink:{read:(t=null)=>t,merge:(t,A)=>A||t||null},workflowFooterLogoLink:{read:(t=null)=>t,merge:(t,A)=>A||t||null},workflowState:{read:(t=null)=>t,merge:(t,A)=>A||t||null},bulkSourceUrl:{read:(t=null)=>t,merge:(t,A)=>A||t||null},externalDesignProductId:{read:(t=null)=>t,merge:(t,A)=>A||t||null},externalDesignProductVariantId:{read:(t=null)=>t,merge:(t,A)=>A||t||null},externalCartProductId:{read:(t=null)=>t,merge:(t,A)=>A||t||null},externalCartProductVariantId:{read:(t=null)=>t,merge:(t,A)=>A||t||null},lastSyncedAt:{read:(t=null)=>t,merge:(t,A)=>A||t||null}}},WorkflowProduct:{fields:{isPresent:{read:(t=null)=>t,merge:(t,A)=>A||t||null}}},Product:{fields:{imageUrl:{read:(t=null)=>t,merge:(t,A)=>A||t||null},overlayImageUrl:{read:(t=null)=>t,merge:(t,A)=>A||t||null},preloadImageUrl:{read:(t=null)=>t,merge:(t,A)=>A||t||null},weight:{read:(t=null)=>t,merge:(t,A)=>A||t||null}}}}});return new(0,t.ApolloClient)({link:(0,t.from)([n,e,A]),cache:i,name:"Core"})}};function en(t,A,e){return(A=function(t){var A=function(t,A){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,A||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===A?String:Number)(t)}(t,"string");return"symbol"==typeof A?A:String(A)}(A))in t?Object.defineProperty(t,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[A]=e,t}const nn=t.gql`
1
+ var t=require("@apollo/client"),A=require("lodash.clonedeep"),e=require("react/jsx-runtime"),n=require("opentype.js"),i=require("buffer"),a=require("axios"),o=require("https"),r=require("file-type"),s=require("util"),c=require("css"),g=require("canvas"),l=require("exif"),B=require("canvg"),w=require("@apollo/client/link/context"),h=require("@apollo/client/link/error"),d=require("cross-fetch"),E=require("react"),u=require("lodash.isequal"),Q=require("react-dom/server"),C=require("qrcode"),m=require("svg-path-bbox"),p=require("lodash.debounce");function D(t,A,e,n){Object.defineProperty(t,A,{get:e,set:n,enumerable:!0,configurable:!0})}var f="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{};function I(t){return t&&t.__esModule?t.default:t}function y(t,A,e,n){Object.defineProperty(t,A,{get:e,set:n,enumerable:!0,configurable:!0})}D(module.exports,"SpiffCommerceClient",(()=>Mo)),D(module.exports,"CommandContext",(()=>MA)),D(module.exports,"spiffCoreConfiguration",(()=>Ze)),D(module.exports,"PromiseQueue",(()=>di)),D(module.exports,"QueueablePromise",(()=>hi)),D(module.exports,"MockWorkflowManager",(()=>Fo)),D(module.exports,"InformationMessageType",(()=>Ta)),D(module.exports,"StepHandle",(()=>Xa)),D(module.exports,"TextStepHandle",(()=>oo)),D(module.exports,"FrameStepHandle",(()=>No)),D(module.exports,"BulkStepHandle",(()=>_a)),D(module.exports,"ShapeStepHandle",(()=>ao)),D(module.exports,"IllustrationStepHandle",(()=>to)),D(module.exports,"MaterialStepHandle",(()=>Ao)),D(module.exports,"ModelStepHandle",(()=>eo)),D(module.exports,"PictureStepHandle",(()=>no)),D(module.exports,"QuestionStepHandle",(()=>io)),D(module.exports,"BulkPriceCalculationStrategy",(()=>vn)),D(module.exports,"OptionNotFoundError",(()=>Ue)),D(module.exports,"LayoutNotFoundError",(()=>Ge)),D(module.exports,"AssetNotFoundError",(()=>be)),D(module.exports,"ResourceNotFoundError",(()=>ke)),D(module.exports,"MisconfigurationError",(()=>Je)),D(module.exports,"ParseError",(()=>ze)),D(module.exports,"UnhandledBehaviorError",(()=>Oe)),D(module.exports,"assetService",(()=>ln)),D(module.exports,"designService",(()=>uo)),D(module.exports,"createDesign",(()=>wo)),D(module.exports,"optionService",(()=>dn)),D(module.exports,"persistenceService",(()=>Xe)),D(module.exports,"graphQlManager",(()=>An)),D(module.exports,"toast",(()=>ba)),D(module.exports,"FrameService",(()=>pa)),D(module.exports,"frameStepService",(()=>Ya)),D(module.exports,"modelStepService",(()=>Na)),D(module.exports,"materialStepService",(()=>Sa)),D(module.exports,"shapeStepService",(()=>Ua)),D(module.exports,"questionStepService",(()=>Pa)),D(module.exports,"digitalContentStepService",(()=>xa)),D(module.exports,"moduleStepService",(()=>Ha)),D(module.exports,"pictureStepService",(()=>Ra)),D(module.exports,"textStepService",(()=>Oa)),D(module.exports,"illustrationStepService",(()=>va)),D(module.exports,"ProductCameraRig",(()=>Fn)),D(module.exports,"FrameStep",(()=>vo)),D(module.exports,"ConversionLocation",(()=>Nn)),D(module.exports,"ConversionData",(()=>Rn)),D(module.exports,"AssetType",(()=>T)),D(module.exports,"BringForwardCommand",(()=>ne)),D(module.exports,"BringToFrontCommand",(()=>Ae)),D(module.exports,"BringToBackCommand",(()=>ee)),D(module.exports,"CanvasCommand",(()=>PA)),D(module.exports,"CreateElementCommand",(()=>zA)),D(module.exports,"CreateLayoutCommand",(()=>LA)),D(module.exports,"DeleteElementCommand",(()=>TA)),D(module.exports,"FontAlignmentCommand",(()=>qA)),D(module.exports,"FontColorCommand",(()=>KA)),D(module.exports,"FontSizeCommand",(()=>VA)),D(module.exports,"FontSourceCommand",(()=>XA)),D(module.exports,"GroupCommand",(()=>JA)),D(module.exports,"LayoutElementFactory",(()=>Ne)),D(module.exports,"LayoutElementType",(()=>N)),D(module.exports,"MoveCommand",(()=>GA)),D(module.exports,"ResizeCommand",(()=>kA)),D(module.exports,"RotateCommand",(()=>bA)),D(module.exports,"SendBackwardsCommand",(()=>ie)),D(module.exports,"StepAspectType",(()=>W)),D(module.exports,"StepType",(()=>K)),D(module.exports,"TextChangeCommand",(()=>$A)),D(module.exports,"UnitOfMeasurement",(()=>b)),D(module.exports,"dataUrlFromExternalUrl",(()=>Ut)),D(module.exports,"findElement",(()=>SA)),D(module.exports,"frameDataCache",(()=>he)),D(module.exports,"generate",(()=>F)),D(module.exports,"getAxisAlignedBoundingBox",(()=>$)),D(module.exports,"generateSVGWithUnknownColors",(()=>IA)),D(module.exports,"getAttributesFromArrayBuffer",(()=>le)),D(module.exports,"rehydrateSerializedLayout",(()=>RA)),D(module.exports,"getFrameData",(()=>Qe)),D(module.exports,"getSvgElement",(()=>FA)),D(module.exports,"loadFontFromDataUrl",(()=>Kt)),D(module.exports,"loadFontFromExternalUrl",(()=>jt)),D(module.exports,"determineCorrectFontSizeAndLines",(()=>ye)),D(module.exports,"patternImageDataCache",(()=>we)),D(module.exports,"generateCommands",(()=>Ki)),D(module.exports,"registerJSDOM",(()=>It)),D(module.exports,"minZoom",(()=>si)),D(module.exports,"AdvancedEditor",(()=>ea)),D(module.exports,"TransformWrapper",(()=>Ho)),D(module.exports,"EditorCore",(()=>Aa)),D(module.exports,"useLayouts",(()=>Qn)),D(module.exports,"useEditorState",(()=>xn)),D(module.exports,"useEditorInteraction",(()=>gi)),D(module.exports,"useShortcutCombination",(()=>li)),D(module.exports,"commandReducer",(()=>fn)),D(module.exports,"getDefaultState",(()=>Dn)),D(module.exports,"CommandContextContext",(()=>En)),D(module.exports,"AdvancedEditorStateProvider",(()=>yn)),D(module.exports,"AdvancedEditorContext",(()=>In)),D(module.exports,"UICommand",(()=>Mn)),D(module.exports,"EditorSubMenu",(()=>mn)),D(module.exports,"ElementEventType",(()=>Gn)),D(module.exports,"KeyEvent",(()=>kn)),D(module.exports,"gatherVaryingStepAspects",(()=>la));var M="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==f?f:{},x={};y(x,"CanvasCommand",(()=>PA)),y(x,"UpdateWorkflowStateCommand",(()=>UA)),y(x,"MoveCommand",(()=>GA)),y(x,"RotateCommand",(()=>bA)),y(x,"ResizeCommand",(()=>kA)),y(x,"GroupCommand",(()=>JA)),y(x,"CreateLayoutCommand",(()=>LA)),y(x,"ClearLayoutCommand",(()=>OA)),y(x,"CreateElementCommand",(()=>zA)),y(x,"DeleteElementCommand",(()=>TA)),y(x,"CloneElementCommand",(()=>jA)),y(x,"FontColorCommand",(()=>KA)),y(x,"FontSizeCommand",(()=>VA)),y(x,"FontAlgorithmCommand",(()=>WA)),y(x,"FontSourceCommand",(()=>XA)),y(x,"FontAlignmentCommand",(()=>qA)),y(x,"UpdateFramePattern",(()=>ZA)),y(x,"TextChangeCommand",(()=>$A)),y(x,"IllustrationColorCommand",(()=>_A)),y(x,"IllustrationCacheCommand",(()=>te)),y(x,"BringToFrontCommand",(()=>Ae)),y(x,"BringToBackCommand",(()=>ee)),y(x,"BringForwardCommand",(()=>ne)),y(x,"SendBackwardsCommand",(()=>ie)),y(x,"LayerCommand",(()=>ae)),y({},"generate",(()=>F));const F=()=>{const t=()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1);return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()};var Y={};y(Y,"ElementNotFoundError",(()=>vA)),y(Y,"findElement",(()=>SA)),y(Y,"findLayoutForElement",(()=>NA)),y(Y,"updatedLayoutForElement",(()=>HA)),y(Y,"rehydrateSerializedLayout",(()=>RA));var v={};y(v,"CommandContext",(()=>MA)),y(v,"getSvgElement",(()=>FA)),y(v,"elementFactory",(()=>xA)),y(v,"sortElementsByLayersWithIndex",(()=>YA)),y({},"SVGLayout",(()=>q));var S={};let N;var H;let R;var P;let U;var G;let b;var k;let J;var L;let O;var z;let T;var j;let K;var V;let W;var X;y(S,"LayoutElementType",(()=>N)),y(S,"LayoutRenderingPurpose",(()=>R)),y(S,"TextAlgorithm",(()=>U)),y(S,"UnitOfMeasurement",(()=>b)),y(S,"ScaleAxis",(()=>J)),y(S,"MaterialEffectMode",(()=>O)),y(S,"AssetType",(()=>T)),y(S,"StepType",(()=>K)),y(S,"StepAspectType",(()=>W)),(H=N||(N={})).Frame="frame",H.Image="image",H.Illustration="illustration",H.Textbox="textbox",(P=R||(R={}))[P.ThreeD=0]="ThreeD",P[P.FreeDesign=1]="FreeDesign",P[P.Print=2]="Print",(G=U||(U={})).Autosize="Autosize",G.Traditional="Traditional",(k=b||(b={})).Pixel="px",k.Millimeter="mm",k.Centimeter="cm",(L=J||(J={}))[L.North=0]="North",L[L.Northeast=1]="Northeast",L[L.East=2]="East",L[L.Southeast=3]="Southeast",L[L.South=4]="South",L[L.Southwest=5]="Southwest",L[L.West=6]="West",L[L.Northwest=7]="Northwest",(z=O||(O={})).None="None",z.RemoveWhenSelected="RemoveWhenSelected",z.ApplyWhenSelected="ApplyWhenSelected",(j=T||(T={})).Font="Font",j.Frame="Frame",j.Illustration="Illustration",j.Image="Image",j.Model="Model",j.Material="Material",j.Color="Color",j.QuestionnaireCollateral="QuestionnaireCollateral",j.RequestCollateral="RequestCollateral",j.SignupCollateral="SignupCollateral",j.Video="Video",j.ColorProfile="ColorProfile",(V=K||(K={})).Bulk="Bulk",V.DigitalContent="DigitalContent",V.Finish="Finish",V.Frame="Frame",V.Illustration="Illustration",V.Introduction="Introduction",V.Material="Material",V.Model="Model",V.Module="Module",V.Picture="Picture",V.Photo="Photo",V.ProductOverlay="ProductOverlay",V.Question="Question",V.Shape="Shape",V.SilentIllustration="SilentIllustration",V.Text="Text",(X=W||(W={})).Color="Color",X.Colors="Colors",X.Selection="Selection",X.Selections="Selections",X.Text="Text",X.Upload="Upload";const q=({backgroundColor:t,outlineColor:A,borderRadius:n,configuration:i,elements:a,height:o,maxHeight:r,maxWidth:s,outlineArea:c,position:g,preserveAspectRatio:l,viewBox:B,width:w})=>{const h=n||0,d=2*(c?.scale||1),E=B||{x:0,y:0,width:w,height:o},u=`${E.x} ${E.y} ${E.width} ${E.height}`,Q=F(),C=i.purpose===R.FreeDesign&&(0,e.jsx)("defs",{children:(0,e.jsx)("clipPath",{id:"viewboxClip",children:(0,e.jsx)("rect",{width:E.width,height:E.height,rx:h})})}),m=i.colorProfiles?.map(((t,A)=>(0,e.jsx)("color-profile",{name:t.name,xlinkHref:t.key,children:" "},A))),p=YA(a.map((t=>({...t,_renderingConfiguration:i,mask:c?`url(#viewmask-${Q})`:void 0}))));return(0,e.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",preserveAspectRatio:l,width:w,height:o,style:{gridColumn:1,gridRow:1,maxWidth:s,maxHeight:r,position:g},viewBox:u,children:[m,C,!!t&&(0,e.jsx)("rect",{id:"layout-background",width:E.width,height:E.height,fill:t,rx:h}),(0,e.jsx)("g",{id:"element-group",clipPath:i.purpose===R.FreeDesign?"url(#viewboxClip)":void 0,children:p.map((t=>xA(t))).filter((t=>!!t))}),c&&(0,e.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,fill:"none",stroke:c.hidden?"none":A||"#aaaaaa",strokeWidth:d/2,strokeDasharray:`${2*d} ${d}`}),c&&(0,e.jsxs)("mask",{id:`viewmask-${Q}`,children:[(0,e.jsx)("rect",{x:E.x,y:E.y,width:E.width,height:E.height,fill:"black"}),(0,e.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,fill:"white"})]})]})};y({},"Image",(()=>dt));var Z={};y(Z,"getAxisAlignedBoundingBox",(()=>$)),y(Z,"degreesToRadians",(()=>tt)),y(Z,"findAngle",(()=>_)),y(Z,"radiansToDegrees",(()=>At)),y(Z,"isCloseToValue",(()=>et)),y(Z,"getTrueCoordinates",(()=>nt)),y(Z,"getPointOfRotation",(()=>it)),y(Z,"getNWPoint",(()=>at)),y(Z,"getNEPoint",(()=>ot)),y(Z,"getSWPoint",(()=>rt)),y(Z,"getSEPoint",(()=>st)),y(Z,"turnRightClockwise",(()=>ct)),y(Z,"currentDirection",(()=>gt)),y(Z,"getElementVertices",(()=>lt)),y(Z,"rotateAroundPoint",(()=>Bt)),y(Z,"mmPerPixel",(()=>wt)),y(Z,"cmPerPixel",(()=>ht));const $=(t,A,e,n,i)=>{const a=tt(i),o=e/2,r=n/2,s=t+o,c=A+r,g=Math.sin(a),l=Math.cos(a),B=-r,w=o*l-B*g,h=o*l-r*g,d=o*g+B*l,E=o*g+r*l,u=Math.max(Math.abs(w),Math.abs(h)),Q=Math.max(Math.abs(d),Math.abs(E));return{minX:s-u,maxX:s+u,minY:c-Q,maxY:c+Q}},_=(t,A,e)=>{const n=Math.sqrt(Math.pow(A.x-t.x,2)+Math.pow(A.y-t.y,2)),i=Math.sqrt(Math.pow(A.x-e.x,2)+Math.pow(A.y-e.y,2)),a=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));return Math.acos((i*i+n*n-a*a)/(2*i*n))*(180/Math.PI)},tt=t=>t*(Math.PI/180),At=t=>t*(180/Math.PI),et=(t,A,e)=>Math.abs(t-A)<e,nt=(t,A,e)=>{const n=Math.sin(tt(e)),i=Math.cos(tt(e));return{x:(t.x-A.x)*i-(t.y-A.y)*n+A.x,y:(t.x-A.x)*n+(t.y-A.y)*i+A.y}},it=(t,A)=>({x:(t.x+A.x)/2,y:(t.y+A.y)/2}),at=(t,A,e,n)=>({x:t.x+A?.x*e,y:t.y+A?.y*n}),ot=(t,A,e,n)=>({x:t.x+(A?.x+A?.width)*e,y:t.y+A?.y*n}),rt=(t,A,e,n)=>({x:t.x+A?.x*e,y:t.y+(A?.y+A?.height)*n}),st=(t,A,e,n)=>({x:t.x+(A?.x+A?.width)*e,y:t.y+(A?.y+A?.height)*n}),ct=t=>{switch(t){case J.North:return J.East;case J.East:return J.South;case J.South:return J.West;case J.West:return J.North;case J.Northwest:return J.Northeast;case J.Northeast:return J.Southeast;case J.Southeast:return J.Southwest;case J.Southwest:return J.Northwest}},gt=(t,A)=>A>45&&A<=135?ct(t):A>135&&A<=225?ct(ct(t)):A>225&&A<=315?ct(ct(ct(t))):t,lt=(t,A={x:0,y:0},e={x:1,y:1})=>{const n=tt(t.rotation),i={x:A.x+t.x*e.x,y:A.x+t.y*e.y},a={x:t.x+t.width,y:t.y},o={x:A.x+(t.x+t.width)*e.x,y:A.y+(t.height+t.y)*e.y},r={x:A.x+t.x*e.x,y:A.y+(t.height+t.y)*e.y},s={x:(r.x+o.x)/2,y:r.y-t.height*e.y/2};return{a:Bt(i,s,n),b:Bt(a,s,n),c:Bt(o,s,n),d:Bt(r,s,n),center:s}},Bt=(t,A,e)=>{const n=Math.sin(e),i=Math.cos(e);return{x:(t.x-A.x)*i-(t.y-A.y)*n+A.x,y:(t.x-A.x)*n+(t.y-A.y)*i+A.y}},wt=.352778,ht=.035277,dt=t=>{const A=t.rotation||0,n=tt(A),i=Math.cos(n),a=-Math.sin(n);return(0,e.jsx)("g",{mask:t.stepName||t.productOverlay?void 0:t.mask,children:(0,e.jsx)("g",{transform:`\n matrix(1, 0, 0, 1, ${t.x}, ${t.y})\n matrix(1, 0, 0, 1, ${t.width/2}, ${t.height/2})\n matrix(${i}, ${-a}, ${a}, ${i}, 0, 0)\n matrix(1, 0, 0, 1, ${-t.width/2}, ${-t.height/2})\n `,children:(0,e.jsx)("image",{xlinkHref:t.src,preserveAspectRatio:t.preserveAspectRatio,width:t.width,height:t.height})})})};y({},"Frame",(()=>Et));const Et=t=>{const A=`spiff-frame-${t.id}`,n=`spiff-frame-blur-${t.id}`,i=`spiff-frame-blur-edge-${t.id}`,a=`spiff-frame-focal-mask-${t.id}`,o=!!t.focalBlur&&!!t.pattern,r=t.rotation||0,s=tt(r),c=Math.cos(s),g=-Math.sin(s);return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("defs",{children:(o=>{const r=t.pattern?.x||0,s=t.pattern?.y||0,c=t.pattern?t.pattern.width*t.pattern.scaleX+Math.abs(r):256,g=t.pattern?t.pattern.height*t.pattern.scaleY+Math.abs(s):256,l=t.pattern?t.pattern.width*t.pattern.scaleX:256,B=t.pattern?t.pattern.height*t.pattern.scaleY:256;return(0,e.jsxs)("g",{mask:t.stepName?void 0:t.mask,children:[(0,e.jsx)("pattern",{patternUnits:t.pattern?void 0:"userSpaceOnUse",x:0,y:0,width:t.pattern?1:c,height:t.pattern?1:g,"data-frame-width":t.pattern?c:void 0,"data-frame-height":t.pattern?g:void 0,id:A,children:(0,e.jsx)("image",{preserveAspectRatio:"none",x:r,y:s,width:l,height:B,xlinkHref:t.disablePlaceholder?"":t.pattern?t.pattern.src:"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"})}),o?(0,e.jsx)(ut,{path:t.path,width:t.width,height:t.height,focalBlurStrength:t.focalBlurStrength||1,focalBlurRadius:t.focalBlurRadius||10,blurFilterId:n,focalMaskId:a,blurEdgeClipId:i}):null]})})(o)}),(0,e.jsx)("g",{mask:t.stepName?void 0:t.mask,children:(0,e.jsxs)("g",{transform:`\n matrix(1, 0, 0, 1, ${t.x}, ${t.y})\n matrix(1, 0, 0, 1, ${t.width/2}, ${t.height/2})\n matrix(${c}, ${-g}, ${g}, ${c}, 0, 0)\n matrix(1, 0, 0, 1, ${-t.width/2}, ${-t.height/2})\n matrix(${t.scaleX}, 0, 0, ${t.scaleY}, 0, 0)\n `,children:[(0,e.jsx)("path",{filter:o?`url(#${n})`:void 0,mask:o?`url(#${i})`:void 0,d:t.path,style:{fill:`url(#${A})`,opacity:t.opacity}}),o?(0,e.jsx)("path",{mask:`url(#${a})`,d:t.path,style:{fill:`url(#${A})`,opacity:t.opacity}}):void 0]})})]})},ut=t=>{const{path:A,width:n,height:i,focalBlurStrength:a,focalBlurRadius:o,blurFilterId:r,focalMaskId:s,blurEdgeClipId:c}=t;return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("filter",{id:r,children:(0,e.jsx)("feGaussianBlur",{stdDeviation:a||0})}),(0,e.jsx)("mask",{id:s,children:(0,e.jsx)("circle",{cx:n/2,cy:i/2,r:o||0,fill:"white",filter:`url(#${r})`})}),(0,e.jsx)("mask",{id:c,children:(0,e.jsx)("path",{d:A,style:{fill:"white",opacity:1}})})]})};y({},"Textbox",(()=>EA));var Qt={};y(Qt,"fontSizeStep",(()=>AA)),y(Qt,"textWidth",(()=>eA)),y(Qt,"charWidth",(()=>nA)),y(Qt,"lineWidth",(()=>iA)),y(Qt,"applyTextTransformations",(()=>oA)),y(Qt,"zip",(()=>rA)),y(Qt,"getTextAlignment",(()=>sA)),y(Qt,"getAnchor",(()=>cA)),y(Qt,"recomputeTextOnElement",(()=>gA)),y(Qt,"defaultLineHeightFactor",(()=>lA));var Ct={};y(Ct,"refitTextbox",(()=>_t)),y(Ct,"recalculateTextboxRegion",(()=>tA));var mt={};y(mt,"FontMetrics",(()=>zt)),y(mt,"loadFontFromExternalUrl",(()=>jt)),y(mt,"loadFontFromDataUrl",(()=>Kt)),y(mt,"getFontMetrics",(()=>Vt));var pt={};y(pt,"registerJSDOM",(()=>It)),y(pt,"createElement",(()=>Ft)),y(pt,"createElementNS",(()=>Yt)),y(pt,"domParser",(()=>vt)),y(pt,"fetchAsArrayBuffer",(()=>St)),y(pt,"fetchAsString",(()=>Nt)),y(pt,"loadFontFaceSet",(()=>Ht)),y(pt,"xmlSerializer",(()=>Rt)),y(pt,"toBase64",(()=>Pt)),y(pt,"dataUrlFromExternalUrl",(()=>Ut)),y(pt,"arrayBufferToDataUrl",(()=>Gt)),y(pt,"arrayBufferToBuffer",(()=>kt)),y(pt,"dataUrlToArrayBuffer",(()=>bt));var Dt=i.Buffer;let ft;function It(t){ft=t}function yt(){if(!ft)throw new Error("JSDOM is not registered. Please register it before calling this function.");return new ft}if(void 0===M.TextEncoder){const{TextEncoder:t}=s;M.TextEncoder=t}if(void 0===M.TextDecoder){const{TextDecoder:t}=s;M.TextDecoder=t}const Mt=new(I(o).Agent)({rejectUnauthorized:!0}),xt=t=>t.every((t=>"undefined"!==t)),Ft=t=>xt([typeof document])?document.createElement(t):yt().window.document.createElement(t),Yt=(t,A)=>{if(xt([typeof document]))return document.createElementNS(t,A);const e=yt().window.document.createElement(A);return e.setAttribute("xmlns",t),e},vt=()=>xt([typeof DOMParser])?new DOMParser:new(yt().window.DOMParser),St=t=>{if(xt([typeof fetch]))return new Promise(((A,e)=>{fetch(t).then((t=>{A(t.arrayBuffer())})).catch((t=>{e(t)}))}));{const A=t.replace("localhost","localstack");return new Promise(((t,e)=>{I(a).get(A,{responseType:"arraybuffer",httpsAgent:Mt}).then((A=>{t(A.data)})).catch((t=>{e(t)}))}))}},Nt=t=>{if(xt([typeof fetch]))return new Promise(((A,e)=>{fetch(t).then((t=>{A(t.text())})).catch(e)}));{const A=t.replace("localhost","localstack");return new Promise(((t,e)=>{I(a).get(A,{responseType:"text",httpsAgent:Mt}).then((A=>{t(A.data)})).catch(e)}))}},Ht=async(t,A)=>{if(xt([typeof FontFace])){const e=t.names.fullName.en,n=new FontFace(e,`url(${A})`);return document.fonts.add(n),n.load()}},Rt=()=>xt([typeof XMLSerializer])?new XMLSerializer:new(yt().window.XMLSerializer),Pt=t=>xt([typeof btoa])?btoa(t):Dt.from(t).toString("base64"),Ut=async t=>{if(xt([typeof fetch,typeof Blob,typeof FileReader])){const A=await fetch(t),e=await A.blob();return await Lt(e)}const A=(await I(a).get(t,{responseType:"arraybuffer"})).data;return Gt(A)},Gt=async t=>{const A=await(async t=>{const A=await(0,r.fromBuffer)(t);return A?A.mime:"image/svg+xml"})(t);return`data:${A};base64,${kt(t).toString("base64")}`},bt=t=>{const A=t.replace(/\r?\n/g,""),e=A.indexOf(",");if(-1===e||e<=4)throw new TypeError("malformed data: URI");const n=A.substring(5,e).split(";");let i=!1;for(let t=1;t<n.length;t++)"base64"===n[t]&&(i=!0);const a=i?"base64":"ascii",o=unescape(A.substring(e+1)),r=Dt.from(o,a);return Jt(r)},kt=t=>Dt.from(t),Jt=t=>{const A=new ArrayBuffer(t.byteLength),e=new Uint8Array(A);for(let A=0;A<t.length;++A)e[A]=t[A];return A},Lt=t=>new Promise(((A,e)=>{const n=new FileReader;n.onload=function(t){const n=t.target;n&&n.result?A(n.result.toString()):e()},n.readAsDataURL(t)})),Ot=new Map;class zt{constructor(t){this.font=t,this.glyphsFromText=new Map,this.kerningValues=new Map,this.height=this.calculateApproximateHeight()}getFont(){return this.font}getGlyphs(t){const A=this.glyphsFromText.get(t);if(A)return A;const e=this.font.stringToGlyphs(t);return this.glyphsFromText.set(t,e),e}getApproximateHeight(){return this.height}getExactHeight(t){const A=this.font.stringToGlyphs(t);let e=0,n=0;return A.forEach((t=>{const A=t.getMetrics();e=Math.max(e,A.yMax),n=Math.min(n,A.yMin)})),e-n}getKerningValue(t,A){let e=this.kerningValues.get(t.name);e||(e=new Map,this.kerningValues.set(t.name,e));let n=e.get(A.name);return n||(n=this.font.getKerningValue(t,A),e.set(A.name,n)),n}calculateApproximateHeight(){const t=this.font.stringToGlyphs("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");let A=0,e=0;return t.forEach((t=>{const n=t.getMetrics();A=Math.max(A,n.yMax),e=Math.min(e,n.yMin)})),A-e}}const Tt=t=>"data:"===t.substring(0,5).toLowerCase().trim(),jt=async t=>{const A=Tt(t)?Kt(t):Kt(await Ut(t));return Wt(A,{assetUrl:Tt(t)?t:await Ut(t),name:A.names.fullName.en}),await Ht(A,t),A},Kt=t=>{const A=bt(t),e=I(n).parse(A);return Wt(e,{assetUrl:t,name:e.names.fullName.en}),e},Vt=t=>{const A=Ot.get(t.name);if(A)return A;throw new Error("Font metrics unavailable for font")},Wt=(t,A)=>{const e=new zt(t);return Ot.set(A.name,e),e},Xt=(t,A,e,n)=>Math.max(nA(t.join("\n"),e,n),A),qt=(t,A,e,n,i,a)=>{const o=(a||lA)*i.getApproximateHeight(),r=A.split("\n");try{const A=r.flatMap((A=>Zt(A,t.width,n,i))),a=A.flatMap((t=>t.lines));return{lines:a,requiredHeight:A.flatMap((t=>t.lines)).length*(n*o),fontSize:e,requiredWidth:Xt(a,t.width,n,i)}}catch(a){const r=A.split("");return{lines:r,requiredHeight:r.length*(n*o),fontSize:e,requiredWidth:Xt(r,t.width,n,i)}}},Zt=(t,A,e,n)=>{const i=eA(t,e,n);if(i<=A)return{lines:[t],width:i};if(!(t.indexOf(" ")>-1)){if(t.length<=1)throw new Error(`Character ${t} is wider than region`);const i=Math.floor(t.length/2),a=Zt(t.slice(0,i),A,e,n),o=Zt(t.slice(i),A,e,n);return{lines:[...a.lines,...o.lines],width:Math.max(a.width,o.width)}}const a=t.split(" "),o=[];let r=-1/0,s=0;for(;s<a.length;){const t=a[s];if(eA(t,e,n)>A){const i=Zt(t,A,e,n);o.push(...i.lines),r=Math.max(r,i.width),s++}else{const i=[t];r=Math.max(r,eA(t,e,n));let c=s+1,g=!0;for(;c<a.length&&g;){const t=a[c],o=eA(`${i.join(" ")} ${t}`,e,n);o<=A?(i.push(t),r=Math.max(r,o),c++):g=!1}o.push(i.join(" ")),s=c}}if(r<0)throw new Error(`No max width calculated for text: ${o}.`);return{lines:o,width:r}},$t=(t,A,e,n,i,a)=>{const o=(a??lA)*A.getApproximateHeight(),r=1/e.unitsPerEm,s=n/iA(t,r,A),c=i/(t.length*o*r);return Math.min(c,s)},_t=(t,A,e,n)=>{const i=Vt(A.fontData),a=i.getFont(),o=A.fontSize/a.unitsPerEm;if(!e)return qt(A,t,A.fontSize,o,i,n);let r;if(r=A.text?A.text.split("\n"):A.input?.split("\n")??[""],e.input===t&&A.width===e.width&&A.height===e.height&&A.lineHeight===e.lineHeight)return{lines:r,requiredHeight:A.height,requiredWidth:Xt(r,A.width,o,i),fontSize:A.fontSize};const s=A.width!==e.width!=(A.height!==e.height);return A.lineHeight!==e.lineHeight||s||e.input!==t?qt(A,t,A.fontSize,o,i,n):{lines:r,requiredHeight:A.height,requiredWidth:Xt(r,A.width,o,i),fontSize:$t(r,i,a,A.width,A.height,n)}},tA=(t,A,e,n,i)=>{const a=Vt(A).getFont();let o={...t},r={...t},s=iA(n,e/a.unitsPerEm,Vt(A));return s&&s<o.width&&(r.width=s,"left"===i?(r.left+=Math.sin(o.rotation*Math.PI/360)*(o.width-s),r.top+=Math.sin(o.rotation*Math.PI/180)*(s-o.width)/2):r.left+="right"===i?o.width-s:(o.width-s)/2,n&&rA(n,n).every((([t,A])=>t===A))&&(o=r)),o},AA=1,eA=(t,A,e)=>{let n=0;const i=e.getGlyphs(t);return i.forEach(((t,A)=>{if(t.advanceWidth&&(n+=t.advanceWidth),A<i.length-1){const a=e.getKerningValue(t,i[A+1]);n+=a}})),n*=A,n},nA=(t,A,e)=>{let n=0;const i=e.getGlyphs(t);return i.forEach(((t,A)=>{if(t.advanceWidth&&(n=Math.max(n,t.advanceWidth)),A<i.length-1){const a=e.getKerningValue(t,i[A+1]);n=Math.max(n,a)}})),n*=A,n},iA=(t,A,e)=>{let n=0;return t.forEach((t=>{n=Math.max(n,eA(t,A,e))})),n},aA={stripControlCharacters:!0,vertical:!1,uppercase:!1},oA=(t,A=aA)=>{const e={...aA,...A};let n=t||"";return e.stripControlCharacters&&(n=n.replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,"")),e.uppercase&&(n=n.toUpperCase()),e.vertical&&(n=n.split("").join("\n")),n},rA=(t,A)=>t.map(((t,e)=>[t,A[e]])),sA=(t="center",A=!1)=>A?"center":t,cA=t=>"left"===t?"start":"right"===t?"end":"middle",gA=(t,A,e)=>t.fontData?{...t,...(()=>{if(t.algorithm===U.Traditional){const n=_t(A,t,e,t.lineHeight);return{text:n.lines.join("\n"),height:n.requiredHeight,width:n.requiredWidth,fontSize:n.fontSize,input:A}}return{text:A}})()}:t,lA=1.1;var BA={};y(BA,"colorDefinitionPrintValue",(()=>wA)),y(BA,"spotColorDefinitionString",(()=>hA)),y(BA,"svgColorValueToDefinition",(()=>dA));const wA=t=>{const A=hA(t.spotColor);return A?`${t.browserValue} ${A}`:t.browserValue},hA=t=>{if(!t)return"";if(t.profileName.includes("/")&&t.profileName.includes(".icc")){const A=t.profileName.replace(/\s/g,"-"),e=A.lastIndexOf("/");return`icc-named-color(${A.slice(e+1).slice(0,-4)}, ${t.namedColor})`}return`icc-named-color(${t.profileName}, ${t.namedColor})`},dA=t=>{const A=t.split(/[ ](?=[^)]*?(?:\(|$))/);if(0===A.length)return{browserValue:"#000000"};if(1===A.length)return{browserValue:A[0]};const e=A[1].match(/\(([^)]+)\)/gm);if(!e)throw new Error("Unhandled state of color value in SVG");const n=e[0].replace(/[() ]/g,"").split(",");return{browserValue:A[0],spotColor:{profileName:n[0],namedColor:n[1]}}},EA=t=>{const A=(t.rotation||0)*Math.PI/180,n=Math.cos(A),i=-Math.sin(A),a=`text-path-${t.id}`,o=t.x+(t.curved?0:t.width/2),r=t.y+(t.curved?0:t.height/2),s=(t.text||"").split("\n");return t.curved&&!t.paths?null:t.fontData?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("defs",{children:[(0,e.jsx)("style",{type:"text/css",dangerouslySetInnerHTML:{__html:`\n @font-face {\n font-family: '${t.fontData.name}';\n src: url('${t.fontData.assetUrl}') format('truetype');\n }\n `}}),t.curved&&t.paths?(0,e.jsx)("path",{id:a,d:t.paths[0]}):void 0]}),t._renderingConfiguration?.debug?(0,e.jsx)("rect",{stroke:"blue",fill:"none",x:t.x,y:t.y,width:t.width,height:t.height}):void 0,(0,e.jsx)("g",{mask:t.stepName?void 0:t.mask,children:(0,e.jsx)("g",{transform:`matrix(${n}, ${-i}, ${i}, ${n}, ${o}, ${r})`,children:(0,e.jsx)("text",{xmlSpace:"preserve",fontFamily:`'${t.fontData.name}'`,fontSize:t.fontSize,fontStyle:"normal",fontWeight:"normal",fill:t._renderingConfiguration?.spotColors&&t.fillSpotColorDefinition?`${t.fill} ${hA(t.fillSpotColorDefinition)}`:t.fill,style:{whiteSpace:"pre",userSelect:"none"},children:t.curved?(0,e.jsx)(QA,{text:t.text||"",curvedPathId:a,align:t.align}):s.map(((A,n)=>(0,e.jsx)(uA,{align:t.vertical?"center":t.align,fontSize:t.fontSize,thisLineIdx:n,amountLines:s.length,text:A,textboxHeight:t.height,textboxWidth:t.width,lineHeight:t.lineHeight,vertical:t.vertical,verticalAlign:t.verticalAlign},n)))})})})]}):null},uA=t=>(0,e.jsx)("tspan",{textAnchor:cA(t.align),x:"left"===t.align?-t.textboxWidth/2:"right"===t.align?t.textboxWidth/2:0,y:`${(()=>{const A=t.fontSize*(void 0!==t.lineHeight?t.lineHeight:lA),e=t.textboxHeight/2;if("top"===t.verticalAlign)return-e+3*t.fontSize/4+t.thisLineIdx*A;if("bottom"===t.verticalAlign){const n=t.amountLines-1-t.thisLineIdx;return e-t.fontSize/4-n*A}const n=(t.amountLines-1)/2;return(t.thisLineIdx-n)*A+t.fontSize/4})()}px`,children:t.text}),QA=t=>{const A=`#${t.curvedPathId}`;return(0,e.jsx)("textPath",{startOffset:"left"===t.align?"0%":"right"===t.align?"100%":"50%",textAnchor:cA(t.align),href:A,xlinkHref:A,children:t.text})};y({},"Illustration",(()=>yA));var CA={};y(CA,"traverse",(()=>pA)),y(CA,"sanitizeSvgTree",(()=>DA)),y(CA,"modifySVGWithElementProperties",(()=>fA)),y(CA,"generateSVGWithUnknownColors",(()=>IA));const mA=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],pA=(t,A)=>{A(t),t.children.length>0&&Array.from(t.children).forEach((t=>pA(t,A)))},DA=(t,A=!1)=>{!A&&t.setAttribute("preserveAspectRatio","none");const e=[];pA(t,(t=>{if("script"!==t.tagName)if("style"!==t.tagName);else try{(0,c.parse)(t.innerHTML).stylesheet?.rules.forEach((t=>{e.push(t)})),t.remove()}catch(t){console.error(t)}else t.remove()})),pA(t,(t=>{e.forEach((A=>{A.selectors?.forEach((e=>{((t,A)=>{try{return t.matches(A)}catch(e){return t.classList.contains(A.substring(1))}})(t,e)&&A.declarations?.forEach((A=>{A.property&&A.value&&t.setAttribute(A.property,A.value)}))}))}))}))},fA=(t,A,e,n,i)=>{const a=(t=>vt().parseFromString(t,"image/svg+xml").firstElementChild)(t);if(!a)throw new Error("Failed to read SVG.");return((t,A,e)=>{t.setAttribute("height",`${e}px`),t.setAttribute("width",`${A}px`)})(a,A,e),((t,A,e)=>{pA(t,(t=>{const n=t.attributes.getNamedItem("fill");n&&"none"!==n.value&&t.classList.forEach((n=>{if(n.startsWith("spiff-fill")){const i=A[n];i&&t.setAttribute("fill",e?wA(i):i.browserValue)}}));const i=t.attributes.getNamedItem("stroke");i&&"none"!==i.value&&t.classList.forEach((n=>{if(n.startsWith("spiff-stroke")){const i=A[n];i&&t.setAttribute("stroke",e?wA(i):i.browserValue)}}))}))})(a,n,i),(t=>Rt().serializeToString(t))(a)},IA=async t=>{const A=t.match(/<svg.*?<\/svg>/s)||[],e=A?.length>0?A[0]:"",n=vt().parseFromString(e,"image/svg+xml").firstElementChild;if(!n)throw new Error("Failed to read SVG.");DA(n);const i={};pA(n,(t=>{mA.includes(t.tagName)&&!t.attributes.getNamedItem("fill")&&t.setAttribute("fill","black");const A=t.attributes.getNamedItem("fill");if(A&&"none"!==A.value){const e=dA(A.value),n=`spiff-fill-${e.browserValue.replace(/\W/g,"")}`;t.setAttribute("fill",e.browserValue),t.classList.add(n),i[n]=e}const e=t.attributes.getNamedItem("stroke");if(e&&"none"!==e.value){const A=dA(e.value),n=`spiff-stroke-${A.browserValue.replace(/\W/g,"")}`;t.classList.add(n),t.setAttribute("stroke",A.browserValue),i[n]=A}}));const a=Rt().serializeToString(n);return{colors:i,svg:a}},yA=t=>{if(t.cachedObjectURL&&!t._renderingConfiguration?.omitCachedFields)return(0,e.jsx)(dt,{id:t.id,src:t.cachedObjectURL,x:t.x,y:t.y,width:t.width,height:t.height,rotation:t.rotation,preserveAspectRatio:"none",immutable:t.immutable,mask:t.stepName?void 0:t.mask});const A=t.rotation||0,n=tt(A),i=Math.cos(n),a=-Math.sin(n),o=`\n matrix(1, 0, 0, 1, ${t.x}, ${t.y})\n matrix(1, 0, 0, 1, ${t.width/2}, ${t.height/2})\n matrix(${i}, ${-a}, ${a}, ${i}, 0, 0)\n matrix(1, 0, 0, 1, ${-t.width/2}, ${-t.height/2})\n `;if(!t.svg)throw new Error(`Illustration element ${t.id} (stepName ${t.stepName}) lacked svg from src ${t.src} at render time.`);return(0,e.jsx)("g",{mask:t.stepName?void 0:t.mask,children:(0,e.jsx)("g",{transform:o,dangerouslySetInnerHTML:{__html:fA(t.svg,t.width,t.height,t.colors,t._renderingConfiguration?.spotColors)}})})};class MA{constructor(){this.id=F(),this.stateCallbacks=[],this.prevCommands=[],this.nextCommands=[]}registerStateCallback(t){this.stateCallbacks.push(t)}unregisterStateCallback(t){this.stateCallbacks.filter((A=>A!==t))}getState(){return this.state}runStateCallbacks(){this.stateCallbacks.forEach((t=>t()))}apply(t,A){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);this.state=this.commandReducer(this.state,t),this.runStateCallbacks(),this.nextCommands=[],A||this.prevCommands.push(t)}undo(){if(!this.state)return;const t=this.prevCommands.pop();if(!t)return;const A=t.undo();t.varying?this.state={...this.state,variation:A}:this.state={...this.state,transaction:A},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,A){const e=this.prevCommands.filter((A=>A.sequenceId===t)).pop();e&&(this.prevCommands=this.prevCommands.filter((A=>A.sequenceId!==t)),e?.overrideOldState(A),this.prevCommands.push(e))}getLayoutById(t){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const A=this.state.transaction?.layouts?.[t],e=this.state.variation?.layouts?.[t],n=A?.layout||e?.layout;if(!n)throw new Error(`No layout: ${t}`);const i=[...A?.elements||[],...e?.elements||[]];return this.getLayoutDataWithState(n,i)}getAllLayouts(){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const t=[...Object.keys(this.state.transaction?.layouts),...Object.keys(this.state.variation?.layouts||{})];return[...new Set(t)].map((t=>this.getLayoutById(t)))}getLayoutDataWithState(t,A){return{layoutState:{layout:t,elements:A},getComponentWithProps:e=>FA(t,A,e)}}initialize(t,A){if(A)return void(this.state={transaction:A});let e={serializableWorkflow:{steps:[]},layouts:{}};t.forEach((t=>{e=new LA(t).apply(e)})),this.runStateCallbacks(),this.state={transaction:e}}commandReducer(t,A){if(A.varying){const e={layouts:{},serializableWorkflow:{steps:[]},...t.variation};return{...t,variation:A.apply(e)}}{const e=t.transaction||{layouts:{},serializableWorkflow:{steps:[]}};return{...t,transaction:A.apply(e)}}}}const xA=t=>"image"===t.type?(0,e.jsx)(dt,{...t},t.id):"frame"===t.type?(0,e.jsx)(Et,{...t},t.id):"illustration"===t.type?(0,e.jsx)(yA,{...t},t.id):"textbox"===t.type?(0,e.jsx)(EA,{...t},t.id):null,FA=(t,A,n)=>{const i=n.renderingConfiguration,a=i?.removeExcludedElements?A.filter((t=>!t.excludeFromExport)):A;return(0,e.jsx)(q,{preserveAspectRatio:void 0,elements:a,backgroundColor:t.transparentBackground?void 0:"white",width:n.width||t.width,height:n.height||t.height,viewBox:i?.region?{x:i.region.left,y:i.region.top,width:i.region.width,height:i.region.height}:{x:0,y:0,width:t.width,height:t.height},configuration:i,outlineArea:n.outlineArea,maxHeight:n.maxHeight,maxWidth:n.maxWidth,position:n.position,borderRadius:n.borderRadius,outlineColor:n.outlineColor})};function YA(t){return t.sort(((t,A)=>{const e=t.layer||0,n=A.layer||0;if(e<n)return-1;if(e>n)return 1;const i=t.layerIndex||0,a=A.layerIndex||0;return i<a?-1:i>a?1:0}))}class vA extends Error{constructor(){super("Element not found!"),Object.setPrototypeOf(this,vA.prototype)}}const SA=(t,A)=>NA(t,A).elements.find((A=>A.id===t)),NA=(t,A)=>{const e=Object.values(A).find((A=>A.elements.some((A=>A.id===t))));if(!e)throw new vA;return e},HA=(t,A)=>{const e=YA([...A.elements.filter((A=>A.id!==t.id)),t]);return{layout:A.layout,elements:e,modificationID:F()}},RA=async(t,A)=>{const e=[...Object.keys(t.layouts),...Object.keys(A?.layouts||{})],n=[...new Set(e)];for(let e=0;e<n.length;e++){const i=n[e],a=t.layouts[i],o=A?.layouts[i],r=(a||o).elements.filter((t=>"illustration"===t.type));for(let t=0;t<r.length;++t){const A=r[t];if(A.src&&!A.svg){const t=await Nt(A.src),e=await IA(t);A.svg=fA(e.svg,A.width,A.height,A.colors)}}}};class PA{undo(){if(!this.oldState)throw new Error("Cannot undo.");return this.oldState}overrideOldState(t){this.oldState=t}}class UA extends PA{constructor(t){super(),this.serializableWorkflow=t}apply(t){return this.oldState=t,{...t,serializableWorkflow:this.serializableWorkflow}}}class GA extends PA{constructor(t,A,e){super(),this.id=t,this.x=A,this.y=e}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,x:this.x,y:this.y},n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class bA extends PA{constructor(t,A){super(),this.id=t,this.angle=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,rotation:this.angle},n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class kA extends PA{constructor(t,A,e){super(),this.id=t,this.width=Math.abs(A),this.height=Math.abs(e)}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;let e={...A,width:this.width,height:this.height};if("frame"===A.type){const t=e;t.scaleX=t.scaleX*this.width/A.width,t.scaleY=t.scaleY*this.height/A.height}else if("textbox"===A.type){const t=e,n=(t.algorithm&&t.algorithm!==U.Autosize?t.input:t.text)??"";e=gA(t,n,A)}const n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class JA extends PA{constructor(t){super(),this.commands=t}apply(t){return this.oldState=t,this.commands.reduce(((t,A)=>A.apply(t)),t)}}class LA extends PA{constructor(t){super(),this.layout=t}apply(t){return this.oldState=t,{...t,layouts:{...t.layouts,[this.layout.id]:{elements:[],layout:{...this.layout},modificationID:F()}}}}}class OA extends PA{constructor(t){super(),this.panelName=t}apply(t){this.oldState=t;const A=Object.values(t.layouts).map((t=>{const A=t.layout.panelId===this.panelName;return{...t,elements:A?[]:[...t.elements],modificationID:F()}})),e={};return A.forEach((t=>{e[t.layout.id]=t})),{...t,layouts:e}}}class zA extends PA{constructor(t,A){super(),this.element=t,this.layout=A}apply(t){this.oldState=t,t.layouts[this.layout.id]||(t.layouts[this.layout.id]={layout:this.layout,elements:[],modificationID:""});const A=t.layouts[this.layout.id].elements;if(A.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===A.length){const e=[...A,this.element];return void 0===this.element.layerIndex&&(this.element.layerIndex=this.assignIndex(this.element,e)),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:e,modificationID:F()}}}}const e=A[A.length-1],n=e.productOverlay?e:null;let i;if(n&&A.pop(),null!==this.element.layerIndex&&void 0!==this.element.layerIndex)i=[...A,this.element].sort(((t,A)=>void 0!==t.layerIndex&&void 0!==A.layerIndex?t.layerIndex-A.layerIndex:0));else{const t=this.assignIndex(this.element,A);this.element.layerIndex=void 0!==t?t:0,i=[...A,this.element]}return n&&i.push(n),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:i,modificationID:F()}}}}assignIndex(t,A){if(0===A.length)return 0;const e=A.filter((A=>(A.layer||0)===(t.layer||0))).sort(((t,A)=>(t.layerIndex||0)-(A.layerIndex||0)))[A.length-1]?.layerIndex;return void 0!==e?e+1:0}}class TA extends PA{constructor(t){super(),this.id=t}apply(t){this.oldState=t;let A=!1;const e=Object.values(t.layouts).map((t=>(t.elements.filter((t=>t.id!==this.id)).length!==t.elements.length&&(A=!0),{...t,elements:t.elements.filter((t=>t.id!==this.id)),modificationID:F()})));A||console.log(`Failed to delete element ${this.id}`);const n={};return e.forEach((t=>{n[t.layout.id]=t})),{...t,layouts:n}}}class jA extends PA{constructor(t,e){super(),this.el=I(A)(t),this.layout=e,this.el.id=F(),this.el.x+=5,this.el.y+=5}apply(t){return this.oldState=t,new zA(this.el,this.layout).apply(t)}}class KA extends PA{constructor(t,A,e){super(),this.id=t,this.color=A,this.textFillSpotColor=e}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,fill:this.color,fillSpotColorDefinition:this.textFillSpotColor},n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class VA extends PA{constructor(t,A){super(),this.id=t,this.size=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,fontSize:this.size},n=NA(A.id,Object.values(t.layouts)),i=(A.algorithm&&A.algorithm!==U.Autosize?A.input:A.text)??"",a=HA(gA(e,i),n);return{...t,layouts:{...t.layouts,[n.layout.id]:a}}}}class WA extends PA{constructor(t,A){super(),this.id=t,this.algorithm=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,algorithm:this.algorithm},n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class XA extends PA{constructor(t,A){super(),this.id=t,this.fontData=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,fontData:this.fontData},n=NA(A.id,Object.values(t.layouts)),i=(A.algorithm&&A.algorithm!==U.Autosize?A.input:A.text)??"",a=HA(gA(e,i),n);return{...t,layouts:{...t.layouts,[n.layout.id]:a}}}}class qA extends PA{constructor(t,A){super(),this.id=t,this.align=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,align:this.align},n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class ZA extends PA{constructor(t,A,e){super(),this.id=t,this.imageData=A,this.offsets=e}apply(t){this.oldState=t;const A=NA(this.id,Object.values(t.layouts)),e=A.elements.findIndex((t=>t.id===this.id)),n=A.elements[e].pattern,i=[...A.elements];i.splice(e,1,{...A.elements[e],pattern:{...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={...A,elements:i,modificationID:F()};return{...t,layouts:{...t.layouts,[A.layout.id]:a}}}}class $A extends PA{constructor(t,A){super(),this.id=t,this.text=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e=NA(A.id,Object.values(t.layouts)),n=HA(gA(A,this.text,A),e);return{...t,layouts:{...t.layouts,[e.layout.id]:n}}}}class _A extends PA{constructor(t,A,e){super(),this.id=t,this.className=A,this.fill=e}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e=A.colors||{},n=e[this.className];e[this.className]={browserValue:this.fill,spotColor:n?.spotColor};const i={...A,colors:e},a=NA(A.id,Object.values(t.layouts)),o=HA(i,a);return{...t,layouts:{...t.layouts,[a.layout.id]:o}}}}class te extends PA{constructor(t,A,e){super(),this.id=t,this.svgBody=A,this.objectURL=e}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;const e={...A,svg:this.svgBody,cachedObjectURL:this.objectURL},n=NA(A.id,Object.values(t.layouts)),i=HA(e,n);return{...t,layouts:{...t.layouts,[n.layout.id]:i}}}}class Ae extends PA{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!SA(this.id,Object.values(t.layouts)).id)throw new vA;const A=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!A)throw new Error("Layout missing from state!");const e=A.elements.findIndex((t=>t.id===this.id));A.elements.push(A.elements.splice(e,1)[0]);const n=[...A.elements];return n.forEach(((t,A)=>t.layerIndex=A)),{...t,layouts:{...t.layouts,[A.layout.id]:{...t.layouts[A.layout.id],elements:n,modificationID:F()}}}}}class ee extends PA{constructor(t){super(),this.id=t}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;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 n=e.elements.findIndex((t=>t.id===this.id));e.elements.splice(n,1),e.elements.unshift(A);const i=[...e.elements],a=i.splice(n,1)[0];return i.splice(n,0,a),i.forEach(((t,A)=>t.layerIndex=A)),{...t,layouts:{...t.layouts,[e.layout.id]:{...t.layouts[e.layout.id],elements:i,modificationID:F()}}}}}class ne extends PA{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!SA(this.id,Object.values(t.layouts)).id)throw new vA;const A=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!A)throw new Error("Layout missing from state!");const e=A.elements.findIndex((t=>t.id===this.id)),n=e+1,i=[...A.elements],a=i.splice(e,1)[0];return i.splice(n,0,a),i.forEach(((t,A)=>t.layerIndex=A)),{...t,layouts:{...t.layouts,[A.layout.id]:{...t.layouts[A.layout.id],elements:i,modificationID:F()}}}}}class ie extends PA{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!SA(this.id,Object.values(t.layouts)).id)throw new vA;const A=Object.values(t.layouts).find((t=>t.elements.find((t=>t.id===this.id))));if(!A)throw new Error("Layout missing from state!");const e=A.elements.findIndex((t=>t.id===this.id)),n=e-1,i=[...A.elements],a=i.splice(e,1)[0];return i.splice(n,0,a),i.forEach(((t,A)=>t.layerIndex=A)),{...t,layouts:{...t.layouts,[A.layout.id]:{...t.layouts[A.layout.id],elements:i,modificationID:F()}}}}}class ae extends PA{constructor(t,A){super(),this.id=t,this.value=A}apply(t){this.oldState=t;const A=SA(this.id,Object.values(t.layouts));if(!A.id)throw new vA;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!");return{...t,layouts:{...t.layouts,[e.layout.id]:HA({...A,layer:this.value},e)}}}}var oe={};y(oe,"patternImageDataCache",(()=>we)),y(oe,"frameDataCache",(()=>he)),y(oe,"generateFrameSVG",(()=>de)),y(oe,"generateDefaultRectangleFrameSvg",(()=>Ee)),y(oe,"getVariant",(()=>ue)),y(oe,"getFrameData",(()=>Qe)),y(oe,"calculateOffsets",(()=>Ce)),y(oe,"getPatternImageData",(()=>me)),y(oe,"GetSVGDimensions",(()=>pe)),y(oe,"svgStringDimensions",(()=>De));var re={};y(re,"getExifOrientation",(()=>ce)),y(re,"canvasDims",(()=>ge)),y(re,"getAttributesFromArrayBuffer",(()=>le));let se=null;const ce=t=>new Promise((A=>{const e=kt(t);(0,r.fromBuffer)(t).then((t=>{const n=t?.mime;if("image/jpeg"!==n)return A(1);(new(0,l.ExifImage)).loadImage(e,((t,e)=>A(t?1:e.image.Orientation||1)))}))})),ge=t=>{const A=8192,e=t.naturalWidth/t.naturalHeight;return t.naturalHeight<=A&&t.naturalWidth<=A?[t.naturalWidth,t.naturalHeight]:t.naturalHeight>t.naturalWidth?[e*A,A]:[A,A/e]},le=async t=>{const A=await(async t=>{const A=await Gt(t),e=await(0,g.loadImage)(A),[n,i]=ge(e),a=await(async()=>{if(null!==se)return!se;const t=await(0,g.loadImage)("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/xABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAAAAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQvoP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXwH/9k=");return se=2===t.width&&3===t.height,!se})();if(!a){const t=(0,g.createCanvas)(n,i);return t.getContext("2d").drawImage(e,0,0,n,i),t}const o=await ce(t),[r,s]=o>4?[i,n]:[n,i],c=(0,g.createCanvas)(r,s),l=c.getContext("2d");switch(o){case 2:l.translate(r,0),l.scale(-1,1);break;case 3:l.translate(r,s),l.rotate(Math.PI);break;case 4:l.translate(0,s),l.scale(1,-1);break;case 5:l.rotate(-.5*Math.PI),l.scale(-1,1);break;case 6:l.rotate(-.5*Math.PI),l.translate(-r,0);break;case 7:l.rotate(-.5*Math.PI),l.translate(-r,s),l.scale(1,-1);break;case 8:l.rotate(.5*Math.PI),l.translate(0,-s)}return l.drawImage(e,0,0,r,s),c})(t);return"image/jpeg"===(await(0,r.fromBuffer)(t))?.mime?{dataUrl:A.toDataURL("image/jpeg",1),height:A.height,width:A.width}:{dataUrl:A.toDataURL(),height:A.height,width:A.width}};y({},"getDefaultVariant",(()=>Be));const Be=t=>{const A=t.variants;return 1===A.length?A[0]:void 0!==t.defaultVariant?A.find((A=>A.id===t.defaultVariant)):void 0},we=new Map,he=new Map,de=async(t,A)=>{if(!A){if(!t)throw new Error("No region or src supplied. Cannot construct frame!");return Ee(t)}return Nt(A)},Ee=t=>{const A=t.width,e=A/t.height,n=Math.max(A,512),i=n/e;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 `},ue=(t,A)=>{if(!A)return;const e=A.variants.find((A=>A.id===t.frameVariantId))||Be(A);if(!e)throw new Error(`No variant with ID: ${t.frameVariantId}`);if(!e.asset)throw new Error(`No asset for variant with ID: ${t.frameVariantId}`);return e},Qe=async t=>{const A=vt().parseFromString(t,"image/svg+xml"),e=A.querySelector("svg");if(!e)throw new Error("Malformed frame SVG: <svg> tag not found");const n=e.getAttribute("viewBox");if(!n)throw new Error("SVG missing viewBox.");const i=n.split(" "),a=parseFloat(i[3])||1,o=parseFloat(i[2])||1,r=A.getElementById("target-path"),s=A.getElementsByClassName("st0").item(0);if(r){const t=r.getAttribute("d");if(!t)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const A={path:t,width:o,height:a};return he.set(t,A),A}if(s){const t=s.getAttribute("d");if(!t)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const A={path:t,width:o,height:a};return he.set(t,A),A}throw new Error("Malformed frame SVG")},Ce=(t,A,e)=>{const n=A.width>=A.height,i=t.width>=t.height,a=A.width/2,o=A.height/2,r=(n?A.height:A.width)/(i?t.height:t.width),s=e?.scale||r,c=a-t.width/2*s,g=e?.left||c,l=o-t.height/2*s;return{x:g,y:e?.top||l,zoom:s}},me=async t=>{if(we.has(t))return we.get(t);if(t.endsWith("svg")){const A=await pe(t),e=A.width,n=A.height,i={src:t,width:e,height:n,aspect:e/n};return we.set(t,i),i}{const A=await St(t),e=await le(A),n={src:t,width:e.width,height:e.height,aspect:e.width/e.height};return we.set(t,n),n}},pe=async t=>{const A=await fetch(t),e=await A.text();return De(e)},De=t=>{const A=(new DOMParser).parseFromString(t,"image/svg+xml").querySelector("svg");if(!A)throw new Error("No svg tag found, this svg must be malformed!");const e=A.getAttribute("viewBox"),n=A.getAttribute("width"),i=A.getAttribute("height"),a=e?e?.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]}};var fe={};y(fe,"determineCorrectFontSizeAndLines",(()=>ye)),y(fe,"determineCorrectTextboxRegion",(()=>Me));const Ie=(t,A,e,n,i)=>{let a=A.map((t=>t.split("\n"))).flat(),o=a.length,r=a.map((t=>eA(t,n,i)));const s=i.getApproximateHeight()*n;let c=!0;for(;c;){if(s+(o-1)*e>t.height)return[null,null];const A=Math.max(...r);if(A<=t.width)return[a,A];const g=r.reduce(((t,A,e,n)=>A>n[t]?e:t),0),l=a[g];let B=!1,w=l.length;for(;!B&&w>-1;){w=l.lastIndexOf(" ",w-1);const A=[l.slice(0,w),l.slice(w+1)],e=A.map((t=>eA(t,n,i)));e[0]<=t.width&&(a=[...a.slice(0,g),...A,...a.slice(g+1)],r=[...r.slice(0,g),...e,...r.slice(g+1)],o+=1,B=!0)}B||(c=!1)}return[null,null]},ye=(t,A,e,n,i)=>{let a,o;const r=Vt(A),s=r.getFont();if(i.size){const A=t/s.unitsPerEm;return[a,o]=Ie(e,n,t,A,r),[i.size,a,o]}let c=6-AA;if(n.length>0){let t=n,A=0;for(;(!i.maxSize||c<=i.maxSize)&&t;)c+=AA,A=c/s.unitsPerEm,[t,o]=Ie(e,n,c,A,r)}c>6&&(c-=AA),i.minSize&&c<i.minSize&&(c=i.minSize);const g=c/s.unitsPerEm;return[a,o]=Ie(e,n,c,g,r),[c,a,o]},Me=(t,A,e,n,i)=>{let a={...t},o={...t},[r,s,c]=ye(e,A,o,n,{size:0,minSize:e,maxSize:e});var g,l;return c&&c<a.width&&(o.width=c,"left"===i?(o.left+=Math.sin(a.rotation*Math.PI/360)*(a.width-c),o.top+=Math.sin(a.rotation*Math.PI/180)*(c-a.width)/2):o.left+="right"===i?a.width-c:(a.width-c)/2,[r,s]=ye(e,A,o,n,{size:e}),r===e&&s&&(g=n,l=s,g.map(((t,A)=>[t,l[A]]))).every((([t,A])=>t===A))&&(a=o)),a};var xe={};y(xe,"svgObjectURL",(()=>ve)),y(xe,"LayoutElementFactory",(()=>Ne));const Fe=(t,A)=>{const e=t.layoutState.elements.filter((t=>t.layer===A)),n=Math.max(...e.map((t=>t.layerIndex)).filter((t=>void 0!==t)));return Math.max(n,0)+1},Ye=async t=>new Promise((A=>{fetch(t).then((t=>{A(t.text())})).catch((t=>console.error(t)))})),ve=async t=>{const A=(new DOMParser).parseFromString(t,"image/svg+xml").firstElementChild;if(!A)throw new Error("Failed to read SVG");const e=(new XMLSerializer).serializeToString(A),n=document.createElement("canvas"),i=n.getContext("2d"),a=await B.Canvg.from(i,e,{anonymousCrossOrigin:!0,ignoreDimensions:!1}),o=A.getAttribute("width"),r=A.getAttribute("height"),s=2048;if(r&&o){const t=parseFloat(r),A=parseFloat(o)/t;A>1?a.resize(s,s/A):a.resize(s*A,s)}else a.resize(s,s);return await a.render(),await(async t=>new Promise(((A,e)=>{try{if(!URL||!URL.createObjectURL)throw new Error("Environment incapable of generating ObjectURL");t.toBlob((e=>{if(!e){if(0===t.width||0===t.height)throw new Error(`Canvas dimensions are invalid (${t.width},${t.height})`);if(t.width*t.height>=268435456)throw new Error(`Canvas dimensions exceed device limit (${t.width},${t.height})`);throw new Error("Couldn't generate object URL for Illustration, the blob was undefined!")}A(URL.createObjectURL(e))}))}catch(t){e(t)}})))(n)},Se=async(t,A,e,n)=>{const i=t.layoutState.layout.useEditableArea&&t.layoutState.layout.editableArea||{width:t.layoutState.layout.width,height:t.layoutState.layout.height,x:0,y:0},a=i.width<i.height?i.width:i.height,o=t.layoutState.layout.useEditableArea?a/1.3:a/2,r={top:i.y+i.height/2-o/2,left:i.x+i.width/2-o/2,width:o,height:o,rotation:0,panelId:t.layoutState.layout.panelId};if(e&&A===N.Illustration){const t=await IA(await Ye(e)),A=(new DOMParser).parseFromString(t.svg,"image/svg+xml").firstElementChild.getAttribute("viewBox");if(!A)throw new Error("SVG missing viewBox.");const n=r.height,i=A.split(" "),a=(parseFloat(i[2])||1)/(parseFloat(i[3])||1);r.height=r.width/a,r.top+=(n-r.height)/2}if(e&&A===N.Image){const t=r.height,A=await fetch(e),n=await A.arrayBuffer(),i=await le(n),a=i.width/i.height;r.height=r.width/a,r.top+=(t-r.height)/2}if(e&&A===N.Textbox&&n?.text&&n?.fontScale){const t={assetUrl:e,name:(await jt(e)).names.fullName.en},A=Vt(t),a=eA(n.text,n?.fontScale,A);r.width=Math.min(a,.85*i.width),r.left=i.x+i.width/2-r.width/2}return r};class Ne{static async getFrame(t,A){const e=await de(A.region,A.src),n=await Qe(e),i=A.region||await Se(t,N.Frame);return{id:F(),x:i.left,y:i.top,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||Fe(t,i.layer||0),rotation:i.rotation,scaleX:i.width/n.width,scaleY:i.height/n.height,path:n.path,type:N.Frame,disablePlaceholder:A.configuration.disablePlaceholder,focalBlur:A.configuration.focalBlur,focalBlurStrength:A.configuration.focalBlurStrength,focalBlurRadius:A.configuration.focalBlurRadius,pattern:void 0,immutable:i.immutable}}static async getImage(t,A){const e=A.region||await Se(t,N.Image,A.src);return{id:F(),src:A.src,type:N.Image,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer||0,layerIndex:e.layerIndex||Fe(t,e.layer||0),immutable:e.immutable,preserveAspectRatio:"none"}}static async getTextbox(t,A){const{configuration:e,fontSrc:n,designInputStep:i}=A,a=await jt(n),o={assetUrl:n,name:a.names.fullName.en},r=i?.text||e.defaultText||"",s=e.replaceableText?e.replaceableText.replace("{{}}",r):r,c=oA(s,{vertical:e.vertical,uppercase:e.uppercase}),g=A.region||await Se(t,N.Textbox,n,{text:c,fontScale:e.size?e.size/a.unitsPerEm:void 0}),l=gA({id:F(),type:N.Textbox,x:g.left,y:g.top,width:g.width,height:g.height,align:sA(e.textAlign,e.vertical),curved:e.curved,fill:i?.color||e.colour||"#000000",fontData:o,layer:g.layer||0,layerIndex:g.layerIndex||Fe(t,g.layer||0),paths:e.paths,rotation:g.rotation,vertical:e.vertical,verticalAlign:e.verticalAlign||"middle",algorithm:U.Traditional,fontSize:e.size||Math.max(Math.round(.025*g.height),1),text:c,input:r},c),B=tA({...g,height:l.height},o,l.fontSize,l?.text?.split("\n")||[],l.align);return{...l,x:B.left,y:B.top+(g.height-B.height)/2,width:B.width,height:B.height}}static async getShape(t,A){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="${A.color}"\n />\n </svg>\n `,n={};n["spiff-fill-shape"]={browserValue:A.color};const i=A.region||await Se(t,N.Illustration),a=F();return{stepRegion:A.region,colors:n,id:a,svg:e,type:N.Illustration,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||Fe(t,i.layer||0),immutable:i.immutable}}static async getIllustration(t,A){const e=A.region||await Se(t,N.Illustration,A.src),n=await IA(await Ye(A.src)),i=await ve(n.svg),a=F();return{cachedObjectURL:i,stepRegion:A.region,colors:n.colors,id:a,svg:n.svg,type:N.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer||0,layerIndex:e.layerIndex||Fe(t,e.layer||0),immutable:e.immutable}}}function He(t,A,e){return(A=function(t){var A=function(t,A){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,A||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===A?String:Number)(t)}(t,"string");return"symbol"==typeof A?A:String(A)}(A))in t?Object.defineProperty(t,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[A]=e,t}class Re extends Error{constructor(t){super(t),this.name=this.constructor.name}}class Pe extends Re{constructor(t){super(`ConfigurationError - ${t}`)}}class Ue extends Pe{constructor(t){super(`Option not Configured: ${t.stepTitle}`),He(this,"optionId",void 0),this.optionId=t?.optionId||"N/A"}}class Ge extends Pe{constructor(t){super(`Panel not Found: ${t.panelId}`),He(this,"panelId",void 0),this.panelId=t?.panelId||"N/A"}}class be extends Pe{constructor(t){super(`Asset not found for variant: ${t.name}`),He(this,"variant",void 0),this.variant=t}}class ke extends Pe{constructor(t){super(`Resource not found for asset: ${t.name}`),He(this,"asset",void 0),this.asset=t}}class Je extends Pe{constructor(t,A){super(`Workflow Misconfiguration: ${t.stepName} - ${A}`),He(this,"step",void 0),this.step=t}}class Le extends Re{constructor(t){super(`ImplementationError - ${t}`)}}class Oe extends Le{constructor(t){super(`Unhandled Behavior Encountered: ${t}`)}}class ze extends Le{constructor(t){super(`Parsing Error: ${t}`)}}class Te extends Le{constructor(t){super(`Client Error: ${t}`)}}class je extends Le{constructor(t){super(`Resource Generation Failed: ${t}`)}}function Ke(t,A,e){return(A=function(t){var A=function(t,A){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,A||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===A?String:Number)(t)}(t,"string");return"symbol"==typeof A?A:String(A)}(A))in t?Object.defineProperty(t,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[A]=e,t}class Ve{get(t){return localStorage.getItem(t)||void 0}set(t,A){localStorage.setItem(t,A)}remove(t){localStorage.removeItem(t)}getMap(t){const A=this.get(t);if(A)return new Map(JSON.parse(A))}setMap(t,A){const e=JSON.stringify([...A.entries()]);this.set(t,e)}}class We{constructor(){Ke(this,"storage",new Map)}get(t){return this.storage.get(t)||void 0}set(t,A){this.storage.set(t,A)}remove(t){this.storage.delete(t)}getMap(t){const A=this.get(t);if(A)return new Map(JSON.parse(A))}setMap(t,A){const e=JSON.stringify([...A.entries()]);this.set(t,e)}}const Xe=(()=>{try{return localStorage?new Ve:new We}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new We}})();function qe(t,A,e){return(A=function(t){var A=function(t,A){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,A||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===A?String:Number)(t)}(t,"string");return"symbol"==typeof A?A:String(A)}(A))in t?Object.defineProperty(t,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[A]=e,t}const Ze=new class{constructor(){qe(this,"defaultServerUrl","https://api.spiff.com.au"),qe(this,"defaultServicesApiUrl","https://services.spiff.com.au"),qe(this,"defaultHubUrl","https://hub.spiff.com.au"),qe(this,"serverUrl",void 0),qe(this,"servicesApiUrl",void 0),qe(this,"hubUrl",void 0),qe(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 $e(t,A,e){return(A=function(t){var A=function(t,A){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,A||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===A?String:Number)(t)}(t,"string");return"symbol"==typeof A?A:String(A)}(A))in t?Object.defineProperty(t,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[A]=e,t}let _e;const tn=t=>{_e=t};const An=new class{constructor(){$e(this,"shadowGraphqlClient",void 0),this.shadowGraphqlClient=this.constructShadowGraphqlClient(),Ze.addServerUrlCallback((()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()}))}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const A=(0,t.createHttpLink)({uri:`${Ze.getServerUrl()}/graphql`,fetch:d.fetch}),e=(0,w.setContext)((async(t,{headers:A})=>{const e=A||{},n=await(async()=>{const t={transactionOwnerId:_e};return"undefined"!=typeof window&&window.location.href.includes("/workflows/product/")?{...await new Promise((t=>{const A=Ze.getHubUrl();if(window.location.href.includes("localhost")||window.location.href.includes("ngrok"))return void t({});const e=n=>{n.origin===A&&(window.removeEventListener("message",e),t(n.data))};window.parent!==window&&(window.addEventListener("message",e,!1),window.parent.postMessage("ready",A))})),...t}:t})();return n.bearer&&(e.Authorization=`Bearer ${n.bearer}`),n.partnerId&&(e.partnerId=n.partnerId),n.activeIntegration&&(e.activeIntegration=n.activeIntegration),n.transactionOwnerId&&(e.transactionOwnerId=n.transactionOwnerId),{headers:e}})),n=(0,h.onError)((({operation:t,graphQLErrors:A,networkError:e})=>{(A||[]).forEach((({message:A,locations:e,path:n})=>{console.log("[GraphQL Operation Error]"),console.log("Name:"+t.operationName),console.log("Query:"+JSON.stringify(t.query)),console.log(`Message: ${A}, Location: ${JSON.stringify(e,null,2)}, Path: ${n}`),console.log("Variables:"+JSON.stringify(t.variables))})),e&&console.log("GraphQL Network error")}));const i=new(0,t.InMemoryCache)({addTypename:!1,typePolicies:{Transaction:{fields:{bulkEmailAddress:{read:(t=null)=>t,merge:(t,A)=>A||t||null},transactionOwnerId:{read:(t=null)=>t,merge:(t,A)=>A||t||null},customLogoLink:{read:(t=null)=>t,merge:(t,A)=>A||t||null},workflowFooterLogoLink:{read:(t=null)=>t,merge:(t,A)=>A||t||null},workflowState:{read:(t=null)=>t,merge:(t,A)=>A||t||null},bulkSourceUrl:{read:(t=null)=>t,merge:(t,A)=>A||t||null},externalDesignProductId:{read:(t=null)=>t,merge:(t,A)=>A||t||null},externalDesignProductVariantId:{read:(t=null)=>t,merge:(t,A)=>A||t||null},externalCartProductId:{read:(t=null)=>t,merge:(t,A)=>A||t||null},externalCartProductVariantId:{read:(t=null)=>t,merge:(t,A)=>A||t||null},lastSyncedAt:{read:(t=null)=>t,merge:(t,A)=>A||t||null}}},WorkflowProduct:{fields:{isPresent:{read:(t=null)=>t,merge:(t,A)=>A||t||null}}},Product:{fields:{imageUrl:{read:(t=null)=>t,merge:(t,A)=>A||t||null},overlayImageUrl:{read:(t=null)=>t,merge:(t,A)=>A||t||null},preloadImageUrl:{read:(t=null)=>t,merge:(t,A)=>A||t||null},weight:{read:(t=null)=>t,merge:(t,A)=>A||t||null},conversionConfiguration:{read:(t=null)=>t,merge:(t,A)=>A||t||null},bulkConfiguration:{read:(t=null)=>t,merge:(t,A)=>A||t||null}}}}});return new(0,t.ApolloClient)({link:(0,t.from)([n,e,A]),cache:i,name:"Core"})}};function en(t,A,e){return(A=function(t){var A=function(t,A){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,A||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===A?String:Number)(t)}(t,"string");return"symbol"==typeof A?A:String(A)}(A))in t?Object.defineProperty(t,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[A]=e,t}const nn=t.gql`
2
2
  fragment AssetFields on Asset {
3
3
  name
4
4
  key
package/dist/module.js CHANGED
@@ -1,4 +1,4 @@
1
- import{CommandContext as A,AssetType as t,BringForwardCommand as e,BringToFrontCommand as n,BringToBackCommand as i,CanvasCommand as a,CreateElementCommand as o,CreateLayoutCommand as r,DeleteElementCommand as s,FontAlignmentCommand as c,FontColorCommand as g,FontSizeCommand as B,FontSourceCommand as l,GroupCommand as w,LayoutElementFactory as E,LayoutElementType as d,MoveCommand as h,ResizeCommand as Q,RotateCommand as C,SendBackwardsCommand as u,StepAspectType as D,StepType as m,TextChangeCommand as I,UnitOfMeasurement as p,dataUrlFromExternalUrl as f,findElement as M,frameDataCache as y,generate as F,getAxisAlignedBoundingBox as Y,generateSVGWithUnknownColors as x,getAttributesFromArrayBuffer as S,rehydrateSerializedLayout as N,getFrameData as v,getSvgElement as H,loadFontFromDataUrl as R,loadFontFromExternalUrl as U,determineCorrectFontSizeAndLines as P,patternImageDataCache as G,registerJSDOM as k,isCloseToValue as J,mmPerPixel as b,cmPerPixel as L,getElementVertices as O,rotateAroundPoint as T,ScaleAxis as z,findAngle as j,currentDirection as K,sortElementsByLayersWithIndex as V,LayoutRenderingPurpose as W,TextAlgorithm as X,toBase64 as q,getPatternImageData as Z,getVariant as $,generateFrameSVG as _,calculateOffsets as AA,UpdateFramePattern as tA,getDefaultVariant as eA,fetchAsString as nA,domParser as iA,sanitizeSvgTree as aA,traverse as oA,xmlSerializer as rA,fetchAsArrayBuffer as sA,arrayBufferToDataUrl as cA,loadFontFaceSet as gA,applyTextTransformations as BA,createElementNS as lA,createElement as wA,svgObjectURL as EA,UpdateWorkflowStateCommand as dA,generateDefaultRectangleFrameSvg as hA,GetSVGDimensions as QA,modifySVGWithElementProperties as CA,IllustrationColorCommand as uA,IllustrationCacheCommand as DA,getFontMetrics as mA}from"@spiffcommerce/papyrus";import{gql as IA,createHttpLink as pA,InMemoryCache as fA,ApolloClient as MA,from as yA}from"@apollo/client";import{setContext as FA}from"@apollo/client/link/context";import{onError as YA}from"@apollo/client/link/error";import{fetch as xA}from"cross-fetch";import{createContext as SA,useState as NA,useCallback as vA,useContext as HA,useEffect as RA,useReducer as UA,useMemo as PA,useRef as GA}from"react";import{jsx as kA,jsxs as JA,Fragment as bA}from"react/jsx-runtime";import LA from"lodash.isequal";import OA from"lodash.clonedeep";import{Canvg as TA}from"canvg";import zA from"react-dom/server";import{toString as jA}from"qrcode";import KA from"svg-path-bbox";import VA from"lodash.debounce";function WA(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}class XA extends Error{constructor(A){super(A),this.name=this.constructor.name}}class qA extends XA{constructor(A){super(`ConfigurationError - ${A}`)}}class ZA extends qA{constructor(A){super(`Option not Configured: ${A.stepTitle}`),WA(this,"optionId",void 0),this.optionId=A?.optionId||"N/A"}}class $A extends qA{constructor(A){super(`Panel not Found: ${A.panelId}`),WA(this,"panelId",void 0),this.panelId=A?.panelId||"N/A"}}class _A extends qA{constructor(A){super(`Asset not found for variant: ${A.name}`),WA(this,"variant",void 0),this.variant=A}}class At extends qA{constructor(A){super(`Resource not found for asset: ${A.name}`),WA(this,"asset",void 0),this.asset=A}}class tt extends qA{constructor(A,t){super(`Workflow Misconfiguration: ${A.stepName} - ${t}`),WA(this,"step",void 0),this.step=A}}class et extends XA{constructor(A){super(`ImplementationError - ${A}`)}}class nt extends et{constructor(A){super(`Unhandled Behavior Encountered: ${A}`)}}class it extends et{constructor(A){super(`Parsing Error: ${A}`)}}class at extends et{constructor(A){super(`Client Error: ${A}`)}}class ot extends et{constructor(A){super(`Resource Generation Failed: ${A}`)}}function rt(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}class st{get(A){return localStorage.getItem(A)||void 0}set(A,t){localStorage.setItem(A,t)}remove(A){localStorage.removeItem(A)}getMap(A){const t=this.get(A);if(t)return new Map(JSON.parse(t))}setMap(A,t){const e=JSON.stringify([...t.entries()]);this.set(A,e)}}class ct{constructor(){rt(this,"storage",new Map)}get(A){return this.storage.get(A)||void 0}set(A,t){this.storage.set(A,t)}remove(A){this.storage.delete(A)}getMap(A){const t=this.get(A);if(t)return new Map(JSON.parse(t))}setMap(A,t){const e=JSON.stringify([...t.entries()]);this.set(A,e)}}const gt=(()=>{try{return localStorage?new st:new ct}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new ct}})();function Bt(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const lt=new class{constructor(){Bt(this,"defaultServerUrl","https://api.spiff.com.au"),Bt(this,"defaultServicesApiUrl","https://services.spiff.com.au"),Bt(this,"defaultHubUrl","https://hub.spiff.com.au"),Bt(this,"serverUrl",void 0),Bt(this,"servicesApiUrl",void 0),Bt(this,"hubUrl",void 0),Bt(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(A){this.serverUrl=A,this.serverUrlCallbacks.forEach((A=>A()))}setServicesApiUrl(A){this.servicesApiUrl=A}setHubUrl(A){this.hubUrl=A}addServerUrlCallback(A){this.serverUrlCallbacks.push(A)}};function wt(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}let Et;const dt=A=>{Et=A};const ht=new class{constructor(){wt(this,"shadowGraphqlClient",void 0),this.shadowGraphqlClient=this.constructShadowGraphqlClient(),lt.addServerUrlCallback((()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()}))}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const A=pA({uri:`${lt.getServerUrl()}/graphql`,fetch:xA}),t=FA((async(A,{headers:t})=>{const e=t||{},n=await(async()=>{const A={transactionOwnerId:Et};return"undefined"!=typeof window&&window.location.href.includes("/workflows/product/")?{...await new Promise((A=>{const t=lt.getHubUrl();if(window.location.href.includes("localhost")||window.location.href.includes("ngrok"))return void A({});const e=n=>{n.origin===t&&(window.removeEventListener("message",e),A(n.data))};window.parent!==window&&(window.addEventListener("message",e,!1),window.parent.postMessage("ready",t))})),...A}:A})();return n.bearer&&(e.Authorization=`Bearer ${n.bearer}`),n.partnerId&&(e.partnerId=n.partnerId),n.activeIntegration&&(e.activeIntegration=n.activeIntegration),n.transactionOwnerId&&(e.transactionOwnerId=n.transactionOwnerId),{headers:e}})),e=YA((({operation:A,graphQLErrors:t,networkError:e})=>{(t||[]).forEach((({message:t,locations:e,path:n})=>{console.log("[GraphQL Operation Error]"),console.log("Name:"+A.operationName),console.log("Query:"+JSON.stringify(A.query)),console.log(`Message: ${t}, Location: ${JSON.stringify(e,null,2)}, Path: ${n}`),console.log("Variables:"+JSON.stringify(A.variables))})),e&&console.log("GraphQL Network error")}));const n=new fA({addTypename:!1,typePolicies:{Transaction:{fields:{bulkEmailAddress:{read:(A=null)=>A,merge:(A,t)=>t||A||null},transactionOwnerId:{read:(A=null)=>A,merge:(A,t)=>t||A||null},customLogoLink:{read:(A=null)=>A,merge:(A,t)=>t||A||null},workflowFooterLogoLink:{read:(A=null)=>A,merge:(A,t)=>t||A||null},workflowState:{read:(A=null)=>A,merge:(A,t)=>t||A||null},bulkSourceUrl:{read:(A=null)=>A,merge:(A,t)=>t||A||null},externalDesignProductId:{read:(A=null)=>A,merge:(A,t)=>t||A||null},externalDesignProductVariantId:{read:(A=null)=>A,merge:(A,t)=>t||A||null},externalCartProductId:{read:(A=null)=>A,merge:(A,t)=>t||A||null},externalCartProductVariantId:{read:(A=null)=>A,merge:(A,t)=>t||A||null},lastSyncedAt:{read:(A=null)=>A,merge:(A,t)=>t||A||null}}},WorkflowProduct:{fields:{isPresent:{read:(A=null)=>A,merge:(A,t)=>t||A||null}}},Product:{fields:{imageUrl:{read:(A=null)=>A,merge:(A,t)=>t||A||null},overlayImageUrl:{read:(A=null)=>A,merge:(A,t)=>t||A||null},preloadImageUrl:{read:(A=null)=>A,merge:(A,t)=>t||A||null},weight:{read:(A=null)=>A,merge:(A,t)=>t||A||null}}}}});return new MA({link:yA([e,t,A]),cache:n,name:"Core"})}};function Qt(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const Ct=IA`
1
+ import{CommandContext as A,AssetType as t,BringForwardCommand as e,BringToFrontCommand as n,BringToBackCommand as i,CanvasCommand as a,CreateElementCommand as o,CreateLayoutCommand as r,DeleteElementCommand as s,FontAlignmentCommand as c,FontColorCommand as g,FontSizeCommand as B,FontSourceCommand as l,GroupCommand as w,LayoutElementFactory as E,LayoutElementType as d,MoveCommand as h,ResizeCommand as Q,RotateCommand as C,SendBackwardsCommand as u,StepAspectType as D,StepType as m,TextChangeCommand as I,UnitOfMeasurement as p,dataUrlFromExternalUrl as f,findElement as M,frameDataCache as y,generate as F,getAxisAlignedBoundingBox as Y,generateSVGWithUnknownColors as x,getAttributesFromArrayBuffer as S,rehydrateSerializedLayout as N,getFrameData as v,getSvgElement as H,loadFontFromDataUrl as R,loadFontFromExternalUrl as U,determineCorrectFontSizeAndLines as P,patternImageDataCache as G,registerJSDOM as k,isCloseToValue as J,mmPerPixel as b,cmPerPixel as L,getElementVertices as O,rotateAroundPoint as T,ScaleAxis as z,findAngle as j,currentDirection as K,sortElementsByLayersWithIndex as V,LayoutRenderingPurpose as W,TextAlgorithm as X,toBase64 as q,getPatternImageData as Z,getVariant as $,generateFrameSVG as _,calculateOffsets as AA,UpdateFramePattern as tA,getDefaultVariant as eA,fetchAsString as nA,domParser as iA,sanitizeSvgTree as aA,traverse as oA,xmlSerializer as rA,fetchAsArrayBuffer as sA,arrayBufferToDataUrl as cA,loadFontFaceSet as gA,applyTextTransformations as BA,createElementNS as lA,createElement as wA,svgObjectURL as EA,UpdateWorkflowStateCommand as dA,generateDefaultRectangleFrameSvg as hA,GetSVGDimensions as QA,modifySVGWithElementProperties as CA,IllustrationColorCommand as uA,IllustrationCacheCommand as DA,getFontMetrics as mA}from"@spiffcommerce/papyrus";import{gql as IA,createHttpLink as pA,InMemoryCache as fA,ApolloClient as MA,from as yA}from"@apollo/client";import{setContext as FA}from"@apollo/client/link/context";import{onError as YA}from"@apollo/client/link/error";import{fetch as xA}from"cross-fetch";import{createContext as SA,useState as NA,useCallback as vA,useContext as HA,useEffect as RA,useReducer as UA,useMemo as PA,useRef as GA}from"react";import{jsx as kA,jsxs as JA,Fragment as bA}from"react/jsx-runtime";import LA from"lodash.isequal";import OA from"lodash.clonedeep";import{Canvg as TA}from"canvg";import zA from"react-dom/server";import{toString as jA}from"qrcode";import KA from"svg-path-bbox";import VA from"lodash.debounce";function WA(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}class XA extends Error{constructor(A){super(A),this.name=this.constructor.name}}class qA extends XA{constructor(A){super(`ConfigurationError - ${A}`)}}class ZA extends qA{constructor(A){super(`Option not Configured: ${A.stepTitle}`),WA(this,"optionId",void 0),this.optionId=A?.optionId||"N/A"}}class $A extends qA{constructor(A){super(`Panel not Found: ${A.panelId}`),WA(this,"panelId",void 0),this.panelId=A?.panelId||"N/A"}}class _A extends qA{constructor(A){super(`Asset not found for variant: ${A.name}`),WA(this,"variant",void 0),this.variant=A}}class At extends qA{constructor(A){super(`Resource not found for asset: ${A.name}`),WA(this,"asset",void 0),this.asset=A}}class tt extends qA{constructor(A,t){super(`Workflow Misconfiguration: ${A.stepName} - ${t}`),WA(this,"step",void 0),this.step=A}}class et extends XA{constructor(A){super(`ImplementationError - ${A}`)}}class nt extends et{constructor(A){super(`Unhandled Behavior Encountered: ${A}`)}}class it extends et{constructor(A){super(`Parsing Error: ${A}`)}}class at extends et{constructor(A){super(`Client Error: ${A}`)}}class ot extends et{constructor(A){super(`Resource Generation Failed: ${A}`)}}function rt(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}class st{get(A){return localStorage.getItem(A)||void 0}set(A,t){localStorage.setItem(A,t)}remove(A){localStorage.removeItem(A)}getMap(A){const t=this.get(A);if(t)return new Map(JSON.parse(t))}setMap(A,t){const e=JSON.stringify([...t.entries()]);this.set(A,e)}}class ct{constructor(){rt(this,"storage",new Map)}get(A){return this.storage.get(A)||void 0}set(A,t){this.storage.set(A,t)}remove(A){this.storage.delete(A)}getMap(A){const t=this.get(A);if(t)return new Map(JSON.parse(t))}setMap(A,t){const e=JSON.stringify([...t.entries()]);this.set(A,e)}}const gt=(()=>{try{return localStorage?new st:new ct}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new ct}})();function Bt(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const lt=new class{constructor(){Bt(this,"defaultServerUrl","https://api.spiff.com.au"),Bt(this,"defaultServicesApiUrl","https://services.spiff.com.au"),Bt(this,"defaultHubUrl","https://hub.spiff.com.au"),Bt(this,"serverUrl",void 0),Bt(this,"servicesApiUrl",void 0),Bt(this,"hubUrl",void 0),Bt(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(A){this.serverUrl=A,this.serverUrlCallbacks.forEach((A=>A()))}setServicesApiUrl(A){this.servicesApiUrl=A}setHubUrl(A){this.hubUrl=A}addServerUrlCallback(A){this.serverUrlCallbacks.push(A)}};function wt(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}let Et;const dt=A=>{Et=A};const ht=new class{constructor(){wt(this,"shadowGraphqlClient",void 0),this.shadowGraphqlClient=this.constructShadowGraphqlClient(),lt.addServerUrlCallback((()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()}))}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const A=pA({uri:`${lt.getServerUrl()}/graphql`,fetch:xA}),t=FA((async(A,{headers:t})=>{const e=t||{},n=await(async()=>{const A={transactionOwnerId:Et};return"undefined"!=typeof window&&window.location.href.includes("/workflows/product/")?{...await new Promise((A=>{const t=lt.getHubUrl();if(window.location.href.includes("localhost")||window.location.href.includes("ngrok"))return void A({});const e=n=>{n.origin===t&&(window.removeEventListener("message",e),A(n.data))};window.parent!==window&&(window.addEventListener("message",e,!1),window.parent.postMessage("ready",t))})),...A}:A})();return n.bearer&&(e.Authorization=`Bearer ${n.bearer}`),n.partnerId&&(e.partnerId=n.partnerId),n.activeIntegration&&(e.activeIntegration=n.activeIntegration),n.transactionOwnerId&&(e.transactionOwnerId=n.transactionOwnerId),{headers:e}})),e=YA((({operation:A,graphQLErrors:t,networkError:e})=>{(t||[]).forEach((({message:t,locations:e,path:n})=>{console.log("[GraphQL Operation Error]"),console.log("Name:"+A.operationName),console.log("Query:"+JSON.stringify(A.query)),console.log(`Message: ${t}, Location: ${JSON.stringify(e,null,2)}, Path: ${n}`),console.log("Variables:"+JSON.stringify(A.variables))})),e&&console.log("GraphQL Network error")}));const n=new fA({addTypename:!1,typePolicies:{Transaction:{fields:{bulkEmailAddress:{read:(A=null)=>A,merge:(A,t)=>t||A||null},transactionOwnerId:{read:(A=null)=>A,merge:(A,t)=>t||A||null},customLogoLink:{read:(A=null)=>A,merge:(A,t)=>t||A||null},workflowFooterLogoLink:{read:(A=null)=>A,merge:(A,t)=>t||A||null},workflowState:{read:(A=null)=>A,merge:(A,t)=>t||A||null},bulkSourceUrl:{read:(A=null)=>A,merge:(A,t)=>t||A||null},externalDesignProductId:{read:(A=null)=>A,merge:(A,t)=>t||A||null},externalDesignProductVariantId:{read:(A=null)=>A,merge:(A,t)=>t||A||null},externalCartProductId:{read:(A=null)=>A,merge:(A,t)=>t||A||null},externalCartProductVariantId:{read:(A=null)=>A,merge:(A,t)=>t||A||null},lastSyncedAt:{read:(A=null)=>A,merge:(A,t)=>t||A||null}}},WorkflowProduct:{fields:{isPresent:{read:(A=null)=>A,merge:(A,t)=>t||A||null}}},Product:{fields:{imageUrl:{read:(A=null)=>A,merge:(A,t)=>t||A||null},overlayImageUrl:{read:(A=null)=>A,merge:(A,t)=>t||A||null},preloadImageUrl:{read:(A=null)=>A,merge:(A,t)=>t||A||null},weight:{read:(A=null)=>A,merge:(A,t)=>t||A||null},conversionConfiguration:{read:(A=null)=>A,merge:(A,t)=>t||A||null},bulkConfiguration:{read:(A=null)=>A,merge:(A,t)=>t||A||null}}}}});return new MA({link:yA([e,t,A]),cache:n,name:"Core"})}};function Qt(A,t,e){return(t=function(A){var t=function(A,t){if("object"!=typeof A||null===A)return A;var e=A[Symbol.toPrimitive];if(void 0!==e){var n=e.call(A,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(A)}(A,"string");return"symbol"==typeof t?t:String(t)}(t))in A?Object.defineProperty(A,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):A[t]=e,A}const Ct=IA`
2
2
  fragment AssetFields on Asset {
3
3
  name
4
4
  key
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spiffcommerce/core",
3
- "version": "0.10.235",
3
+ "version": "0.10.236",
4
4
  "description": "Core client API for interacting with the Spiff Commerce backend.",
5
5
  "source": "src/index.ts",
6
6
  "main": "dist/main.js",