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