@spiffcommerce/core 33.8.4-beta.ca264159-d680-5f73-a327-2eef32dff950 → 33.8.5-beta.07dfe7ff-934b-5aa4-aac1-5ea1130fb45b

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/index.js CHANGED
@@ -1,12 +1,12 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("@apollo/client/core"),hi=require("@apollo/client/link/context"),gi=require("@apollo/client/link/error"),mi=require("preact-render-to-string"),pi=require("@apollo/client/link/remove-typename"),fi=require("exifr/dist/mini.umd.cjs"),Dn=require("css"),Ci=require("fuse.js"),xa=require("pith"),Bt=require("lodash.clonedeep"),ee=require("lodash.isequal"),P=require("preact/jsx-runtime"),da=require("opentype.js"),wi=require("handlebars"),yi=require("data-uri-to-buffer"),kn=require("qrcode"),ua=require("unicode-default-word-boundary"),Si=require("svg-path-bbox"),an=require("lodash.chunk"),Se=require("@aws-sdk/client-cognito-identity-provider"),vi=require("dinero.js"),Ei=require("currency-codes"),Mn=require("lodash.debounce");require("fs");require("path");const bi=require("lodash.omit");function Bi(n){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const a=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(t,e,a.get?a:{enumerable:!0,get:()=>n[e]})}}return t.default=n,Object.freeze(t)}const nn=Bi(Ei);var ae=(n=>(n.Data="Data",n.Font="Font",n.Frame="Frame",n.Illustration="Illustration",n.Image="Image",n.Model="Model",n.Material="Material",n.Color="Color",n.QuestionnaireCollateral="QuestionnaireCollateral",n.RequestCollateral="RequestCollateral",n.SignupCollateral="SignupCollateral",n.Video="Video",n.ColorProfile="ColorProfile",n.Environment="Environment",n))(ae||{}),Tn=(n=>(n.AND="AND",n.OR="OR",n))(Tn||{}),U=(n=>(n.FileUpload="FileUpload",n.Option="Option",n.ColorOption="ColorOption",n.Text="Text",n))(U||{}),v=(n=>(n.Information="Information",n.Bulk="Bulk",n.DigitalContent="DigitalContent",n.Finish="Finish",n.Frame="Frame",n.Illustration="Illustration",n.Introduction="Introduction",n.Material="Material",n.Model="Model",n.Module="Module",n.Picture="Picture",n.Photo="Photo",n.ProductOverlay="ProductOverlay",n.Question="Question",n.Shape="Shape",n.SilentIllustration="SilentIllustration",n.Text="Text",n))(v||{}),Nn=(n=>(n.Color="Color",n.Colors="Colors",n.Selection="Selection",n.Selections="Selections",n.Text="Text",n.Upload="Upload",n))(Nn||{}),Nt=(n=>(n.ThreeD="ThreeD",n.FreeDesign="FreeDesign",n.Print="Print",n))(Nt||{}),D=(n=>(n.Frame="frame",n.Group="group",n.Image="image",n.Pattern="pattern",n.Illustration="illustration",n.Textbox="textbox",n))(D||{}),Qn=(n=>(n.Default="Default",n.FirstTransaction="FirstTransaction",n.OneToOne="OneToOne",n))(Qn||{}),Fa=(n=>(n.Pending="Pending",n.Failed="Failed",n.Validated="Validated",n.Overridden="Overridden",n))(Fa||{}),Rn=(n=>(n.Hyperlink="Hyperlink",n.Edit="Edit",n.Approve="Approve",n))(Rn||{}),On=(n=>(n.Hub="Hub",n.Shopify="Shopify",n))(On||{}),Ue=(n=>(n.BackgroundRemover="BackgroundRemover",n.ConversionAccelerator="Conversion Accelerator",n.ProcessBuilder="ProcessBuilder",n))(Ue||{}),$n=(n=>(n[n.Orbit=0]="Orbit",n[n.Pan=1]="Pan",n))($n||{}),ne=(n=>(n.Owner="Owner",n.Approver="Approver",n.Editor="Editor",n.Viewer="Viewer",n))(ne||{}),It=(n=>(n.Autosize="Autosize",n.Traditional="Traditional",n))(It||{}),G=(n=>(n[n.North=0]="North",n[n.Northeast=1]="Northeast",n[n.East=2]="East",n[n.Southeast=3]="Southeast",n[n.South=4]="South",n[n.Southwest=5]="Southwest",n[n.West=6]="West",n[n.Northwest=7]="Northwest",n))(G||{}),Un=(n=>(n.Pixel="px",n.Millimeter="mm",n.Centimeter="cm",n))(Un||{});class Ln extends Error{constructor(t){super(t),this.name=this.constructor.name}}class ce extends Ln{constructor(t){super(`ConfigurationError - ${t}`)}}class re extends ce{constructor(t){super(`Option not Configured: ${t.stepTitle}`),this.optionId=t?.optionId||"N/A"}}class W extends ce{constructor(t){super(`Panel not Found: ${t.panelId}`),this.panelId=t?.panelId||"N/A"}}class pt extends ce{constructor(t){super(`Asset not found for variant: ${t.name}`),this.variant=t}}class Qt extends ce{constructor(t){super(`Resource not found for asset: ${t.name}`),this.asset=t}}class ie extends ce{constructor(t,e){super(`Workflow Misconfiguration: ${t.stepName} - ${e}`),this.step=t}}class Le extends Ln{constructor(t){super(`ImplementationError - ${t}`)}}class N extends Le{constructor(t){super(`Unhandled Behavior Encountered: ${t}`)}}class Et extends Le{constructor(t){super(`Parsing Error: ${t}`)}}class gt extends Le{constructor(t){super(`Client Error: ${t}`)}}class Ve extends Le{constructor(t){super(`Resource Generation Failed: ${t}`)}}class Ii{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 rn{constructor(){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 Pi=()=>{try{return localStorage?new Ii:new rn}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new rn}},k=Pi();class xi{constructor(){this.defaultServerUrl="https://api.au.spiffcommerce.com",this.defaultServicesApiUrl="https://services.au.spiffcommerce.com",this.defaultHubUrl="https://hub.au.spiffcommerce.com",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(e=>e())}setServicesApiUrl(t){this.servicesApiUrl=t}setHubUrl(t){this.hubUrl=t}addServerUrlCallback(t){this.serverUrlCallbacks.push(t)}}const ut=new xi;let Aa,ha;function Fi(n){Aa=n}function Di(n){ha=n}function de(){return Aa?new Aa().window:(console.log("DOM constructor is not registered. Assuming browser environment. If not, please register DOM constructor before calling this function."),window)}function it(n,t){if(!ha){if(typeof window<"u"&&window.fetch)return window.fetch(n,t);if(typeof global<"u"&&global.fetch)return global.fetch(n,t);throw new Error("Fetch implementation is not registered. Please register it before calling this function.")}return ha(n,t)}const Vn=new Map,on=new Map,sn=new Map,zn=async n=>{const t=on.get(n);if(t)return t;const a=(async()=>{const r=await it(n);return Vn.set(n,r.headers?.get("content-type")||""),await r.arrayBuffer()})();return on.set(n,a),a},ki=async n=>{const t=sn.get(n);if(t)return t;const a=(async()=>await(await it(n)).text())();return sn.set(n,a),a},Ut=n=>n.every(t=>t!=="undefined"),ve=n=>Ut([typeof document])?document.createElement(n):de().document.createElement(n),Mi=(n,t)=>{if(Ut([typeof document]))return document.createElementNS(n,t);const a=de().document.createElement(t);return a.setAttribute("xmlns",n),a},lt=()=>{if(Ut([typeof DOMParser]))return new DOMParser;const n=de();return new n.DOMParser},Ti=()=>Ut([typeof DOMParser])?DOMParser:de().DOMParser,ze=(n,t)=>new Promise((e,a)=>{t?zn(n).then(e).catch(a):it(n).then(r=>{r.arrayBuffer().then(e).catch(a)}).catch(r=>{a(r)})}),tt=(n,t)=>new Promise((e,a)=>{t?ki(n).then(e).catch(a):it(n).then(r=>{r.text().then(e).catch(a)}).catch(a)}),qn=n=>mi.renderToStaticMarkup(n),Ke=new Map,Ni=async(n,t)=>{if(Ut([typeof FontFace])){if(Ke.has(t))return Ke.get(t);const e=n.names.fullName.en,a=new FontFace(e,`url(${t})`);document.fonts.add(a);const r=a.load();return Ke.set(t,r),r}},yt=()=>{if(Ut([typeof XMLSerializer]))return new XMLSerializer;const n=de();return new n.XMLSerializer},ln=n=>btoa(n),qe=n=>{function t(){const a=new Uint8Array(n),r=4;if(a.length>=r){const i=new Array(r);for(let l=0;l<r;l++)i[l]=new Uint8Array(n)[l].toString(16);const o=i.join("").toUpperCase();switch(o){case"89504E47":return"image/png";case"47494638":return"image/gif";case"25504446":return"application/pdf";case"504B0304":return"application/zip"}switch(o.slice(0,4)){case"FFD8":return"image/jpeg"}}return null}const e=t();return e||"image/svg+xml"},Qi=async n=>{const t=await zn(n),e=Vn.get(n)||qe(t);return await $i(new Blob([t],{type:e}))},Ri=n=>{let t="";const e=n.byteLength;for(let a=0;a<e;a++)t+=String.fromCharCode(n[a]);return t},Oi=async n=>{const t=qe(n),e=new Uint8Array(n),a=Ri(e),r=btoa(a);return`data:${t};base64,${r}`},Ge=n=>`data:image/svg+xml;base64,${btoa(n)}`,Gn=n=>{const t=n.replace(/\r?\n/g,""),e=t.indexOf(",");if(e===-1||e<=4)throw new TypeError("malformed data: URI");const a=t.substring(5,e).split(";");let r=!1;for(let o=1;o<a.length;o++)a[o]==="base64"&&(r=!0);const i=decodeURI(t.substring(e+1));return r?new Uint8Array(atob(i).split("").map(s=>s.charCodeAt(0))).buffer:new Uint8Array(i.split("").map(s=>s.charCodeAt(0))).buffer},$i=n=>new Promise((t,e)=>{const a=new FileReader;a.onload=function(r){const i=r.target;!i||!i.result?e():t(i.result.toString())},a.readAsDataURL(n)});let Ui,Da;const Li=n=>{Da=n},Vi=()=>Da;let jn;const Wn=n=>{jn=n},zi=()=>new Promise(n=>{const t=ut.getHubUrl(),e=a=>{a.origin===t&&(window.removeEventListener("message",e),n(a.data))};window.parent!==window&&(window.addEventListener("message",e,!1),window.parent.postMessage("ready",t))}),qi=async()=>{const n={applicationKey:Da,customerToken:Ui,bearer:jn};return typeof window<"u"&&(window.location.href.includes("/workflows/product/")||window.location.href.includes("hub=true"))?{...await zi(),...n}:n};async function Gi(n,t){const e=ut.getServerUrl(),a=e.includes(".aumelbdev.spiffcommerce.com")?"https://moonlight.aumelbdev.spiffcommerce.com":e.includes(".us.spiffcommerce.com")?"https://moonlight.us.spiffcommerce.com":"https://moonlight.au.spiffcommerce.com";let r=await it(n,{...t,redirect:"manual"});return r.type==="opaqueredirect"&&(typeof n!="string"&&"url"in n?r=await it({...n,url:`${a}/graphql`},t):r=await it(`${a}/graphql`,t)),r}class ji{constructor(){this.shadowGraphqlClient=this.constructShadowGraphqlClient(),ut.addServerUrlCallback(()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()})}setSpiffCommerceClient(t){this.spiffClient=t,this.shadowGraphqlClient=this.constructShadowGraphqlClient()}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const t=C.createHttpLink({uri:`${ut.getServerUrl()}/graphql`,fetch:Gi}),e=hi.setContext(async(i,o)=>{const{headers:s}=o,l=s||{},c=await qi();let d=o.bearer??c.bearer;if(this.spiffClient)try{d=await this.spiffClient.loggedInBearerToken()}catch{}const u=o.partnerId??c.partnerId,A=o.activeIntegration??c.activeIntegration,h=o.transactionOwnerId,g=o.customerToken??c.customerToken,p=o.applicationKey??c.applicationKey,m=o.bundleOwnerId;try{if(window&&window.__SENTRY__){const f=window.__SENTRY__.hub;if(f){const w=f.traceHeaders();Object.entries(w).forEach(([b,F])=>{l[b]=F})}}}catch{}return d&&(l.Authorization=`Bearer ${d}`),u&&(l.partnerId=u),A&&(l.activeIntegration=A),h&&(l.transactionOwnerId=h),g&&(l.customerToken=g),p&&(l["X-Application-Key"]=p),m&&(l.bundleOwnerId=m),l["Allow-Moonlight-Redirect"]="true",{headers:l}}),a=gi.onError(({operation:i,graphQLErrors:o,networkError:s})=>{const l=o||[],c=i.getContext();s&&!c?.fetchOptions?.signal?.aborted&&console.log("GraphQL Network error"),l.forEach(()=>console.log("GraphQL Error: "+i.operationName))}),r=pi.removeTypenameFromVariables();return new C.ApolloClient({link:C.from([r,a,e,t]),cache:new C.InMemoryCache,name:"Core"})}}const S=new ji;let ga,ma;const ft=(n,t,e)=>{if(ga!==void 0)return ga(n,t,e);try{const a=Hn(!0);return ka(a),a.createCanvas(n,t,e)}catch{throw new Error("Canvas module not set")}},ue=(n,t)=>{if(ma!==void 0)return ma(n,t);try{const e=Hn(!0);return ka(e),e.loadImage(n,t)}catch{throw new Error("Canvas module not set")}};function ka(n){ga=n?.createCanvas,ma=n?.loadImage}function Hn(n){try{if(document.createElement("canvas").getContext("2d"))return{createCanvas:(e,a,r)=>{const i=document.createElement("canvas");return e!=null&&(i.width=e),a!=null&&(i.height=a),i},loadImage:(e,a)=>new Promise((r,i)=>{const o=document.createElement("img");a!==!1&&(o.crossOrigin="Anonymous"),o.onload=()=>{r(o)},o.onerror=i,o.src=e})}}catch(t){throw t}}let _e;function Ma(){return _e===void 0&&(_e=Ti()),_e}let Ee=null;const Wi=n=>new Promise(t=>{if(qe(n)!=="image/jpeg")return t(1);fi.orientation(n).then(a=>t(a||1)).catch(()=>t(1))}),Hi=async()=>{if(Ee!==null)return!Ee;const t=await ue("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/xABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAAAAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQvoP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXwH/9k=");return Ee=t.width===2&&t.height===3,!Ee},Yi=n=>{const e=n.naturalWidth/n.naturalHeight;return n.naturalHeight<=8192&&n.naturalWidth<=8192?[n.naturalWidth,n.naturalHeight]:n.naturalHeight>n.naturalWidth?[e*8192,8192]:[8192,8192/e]},Ji=async n=>{const t=await Oi(n),e=await ue(t),[a,r]=Yi(e);if(!await Hi()){const u=ft(a,r);return u.getContext("2d")?.drawImage(e,0,0,a,r),u}const o=await Wi(n),[s,l]=o>4?[r,a]:[a,r],c=ft(s,l),d=c.getContext("2d");switch(o){case 2:d.translate(s,0),d.scale(-1,1);break;case 3:d.translate(s,l),d.rotate(Math.PI);break;case 4:d.translate(0,l),d.scale(1,-1);break;case 5:d.rotate(-.5*Math.PI),d.scale(-1,1);break;case 6:d.rotate(-.5*Math.PI),d.translate(-s,0);break;case 7:d.rotate(-.5*Math.PI),d.translate(-s,l),d.scale(1,-1);break;case 8:d.rotate(.5*Math.PI),d.translate(0,-l);break}return d.drawImage(e,0,0,s,l),c},Ae=async n=>{const t=await Ji(n);return qe(n)==="image/jpeg"?{dataUrl:t.toDataURL("image/jpeg",1),height:t.height,width:t.width}:{dataUrl:t.toDataURL(),height:t.height,width:t.width}},oe=["Yellow C","Yellow 012 C","Orange 021 C","Warm Red C","Red 032 C","Rubine Red C","Rhodamine Red C","Purple C","Violet C","Blue 072 C","Reflex Blue C","Process Blue C","Green C","Black C","Yellow 0131 C","Red 0331 C","Magenta 0521 C","Violet 0631 C","Blue 0821 C","Green 0921 C","Black 0961 C","801 C","802 C","803 C","804 C","805 C","806 C","807 C","871 C","872 C","873 C","874 C","875 C","876 C","877 C","Medium Yellow C","Bright Orange C","Bright Red C","Strong Red C","Pink C","Medium Purple C","Dark Blue C","Medium Blue C","Bright Green C","Neutral Black C","100 C","101 C","102 C","103 C","104 C","105 C","7401 C","7402 C","7403 C","7404 C","7405 C","7406 C","7407 C","106 C","107 C","108 C","109 C","110 C","111 C","112 C","113 C","114 C","115 C","116 C","117 C","118 C","119 C","127 C","128 C","129 C","130 C","131 C","132 C","133 C","1205 C","1215 C","1225 C","1235 C","1245 C","1255 C","1265 C","120 C","121 C","122 C","123 C","124 C","125 C","126 C","7548 C","7549 C","7550 C","7551 C","7552 C","7553 C","7554 C","7555 C","7556 C","7557 C","7558 C","7559 C","7560 C","7561 C","134 C","135 C","136 C","137 C","138 C","139 C","140 C","1345 C","1355 C","1365 C","1375 C","1385 C","1395 C","1405 C","141 C","142 C","143 C","144 C","145 C","146 C","147 C","7408 C","7409 C","7410 C","7411 C","7412 C","7413 C","7414 C","7562 C","7563 C","7564 C","7565 C","7566 C","7567 C","7568 C","7569 C","7570 C","7571 C","7572 C","7573 C","7574 C","7575 C","712 C","713 C","714 C","715 C","716 C","717 C","718 C","148 C","149 C","150 C","151 C","152 C","153 C","154 C","155 C","156 C","157 C","158 C","159 C","160 C","161 C","1485 C","1495 C","1505 C","1525 C","1535 C","1545 C","1555 C","1565 C","1575 C","1585 C","1595 C","1605 C","1615 C","162 C","163 C","164 C","165 C","166 C","167 C","168 C","7576 C","7577 C","7578 C","7579 C","7580 C","7581 C","7582 C","1625 C","1635 C","1645 C","1655 C","1665 C","1675 C","1685 C","169 C","170 C","171 C","172 C","173 C","174 C","175 C","7583 C","7584 C","7585 C","7586 C","7587 C","7588 C","7589 C","7590 C","7591 C","7592 C","7593 C","7594 C","7595 C","7596 C","7597 C","7598 C","7599 C","7600 C","7601 C","7602 C","7603 C","7604 C","7605 C","7606 C","7607 C","7608 C","7609 C","7610 C","7611 C","7612 C","7613 C","7614 C","7615 C","7616 C","7617 C","7520 C","7521 C","7522 C","7523 C","7524 C","7525 C","7526 C","489 C","488 C","487 C","486 C","485 C","484 C","483 C","176 C","177 C","178 C","179 C","180 C","181 C","1765 C","1775 C","1785 C","1788 C","1795 C","1805 C","1815 C","1767 C","1777 C","1787 C","1797 C","1807 C","1817 C","7618 C","7619 C","7620 C","7621 C","7622 C","7623 C","7624 C","7625 C","7626 C","7627 C","7628 C","7629 C","7630 C","7631 C","7415 C","7416 C","7417 C","7418 C","7419 C","7420 C","7421 C","182 C","183 C","184 C","185 C","186 C","187 C","188 C","196 C","197 C","198 C","199 C","200 C","201 C","202 C","189 C","190 C","191 C","192 C","193 C","194 C","195 C","1895 C","1905 C","1915 C","1925 C","1935 C","1945 C","1955 C","705 C","706 C","707 C","708 C","709 C","710 C","711 C","698 C","699 C","700 C","701 C","702 C","703 C","704 C","203 C","204 C","205 C","206 C","207 C","208 C","209 C","210 C","211 C","212 C","213 C","214 C","215 C","216 C","7422 C","7423 C","7424 C","7425 C","7426 C","7427 C","7428 C","7632 C","7633 C","7634 C","7635 C","7636 C","7637 C","7638 C","217 C","218 C","219 C","220 C","221 C","222 C","7639 C","7640 C","7641 C","7642 C","7643 C","7644 C","7645 C","223 C","224 C","225 C","226 C","227 C","228 C","229 C","230 C","231 C","232 C","233 C","234 C","235 C","670 C","671 C","672 C","673 C","674 C","675 C","676 C","677 C","678 C","679 C","680 C","681 C","682 C","683 C","684 C","685 C","686 C","687 C","688 C","689 C","690 C","510 C","509 C","508 C","507 C","506 C","505 C","504 C","7429 C","7430 C","7431 C","7432 C","7433 C","7434 C","7435 C","691 C","692 C","693 C","694 C","695 C","696 C","697 C","496 C","495 C","494 C","493 C","492 C","491 C","490 C","503 C","502 C","501 C","500 C","499 C","498 C","497 C","5035 C","5025 C","5015 C","5005 C","4995 C","4985 C","4975 C","236 C","237 C","238 C","239 C","240 C","241 C","242 C","2365 C","2375 C","2385 C","2395 C","2405 C","2415 C","2425 C","243 C","244 C","245 C","246 C","247 C","248 C","249 C","7646 C","7647 C","7648 C","7649 C","7650 C","7651 C","7652 C","250 C","251 C","252 C","253 C","254 C","255 C","517 C","516 C","515 C","514 C","513 C","512 C","511 C","7436 C","7437 C","7438 C","7439 C","7440 C","7441 C","7442 C","2562 C","2572 C","2582 C","2592 C","2602 C","2612 C","2622 C","7653 C","7654 C","7655 C","7656 C","7657 C","7658 C","7659 C","524 C","523 C","522 C","521 C","520 C","519 C","518 C","5245 C","5235 C","5225 C","5215 C","5205 C","5195 C","5185 C","5175 C","5165 C","5155 C","5145 C","5135 C","5125 C","5115 C","531 C","530 C","529 C","528 C","527 C","526 C","525 C","256 C","257 C","258 C","259 C","260 C","261 C","262 C","2563 C","2573 C","2583 C","2593 C","2603 C","2613 C","2623 C","7660 C","7661 C","7662 C","7663 C","7664 C","7665 C","7666 C","2567 C","2577 C","2587 C","2597 C","2607 C","2617 C","2627 C","263 C","264 C","265 C","266 C","267 C","268 C","269 C","2635 C","2645 C","2655 C","2665 C","2685 C","2695 C","270 C","271 C","272 C","273 C","274 C","275 C","276 C","2705 C","2715 C","2725 C","2735 C","2745 C","2755 C","2765 C","7667 C","7668 C","7669 C","7670 C","7671 C","7672 C","7673 C","7443 C","7444 C","7445 C","7446 C","7447 C","7448 C","7449 C","7674 C","7675 C","7676 C","7677 C","7678 C","7679 C","7680 C","663 C","664 C","665 C","666 C","667 C","668 C","669 C","5315 C","5305 C","5295 C","5285 C","5275 C","5265 C","5255 C","538 C","537 C","536 C","535 C","534 C","533 C","532 C","7541 C","7542 C","7543 C","7544 C","7545 C","7546 C","7547 C","552 C","551 C","550 C","549 C","548 C","547 C","546 C","5455 C","5445 C","5435 C","5425 C","5415 C","5405 C","5395 C","642 C","643 C","644 C","645 C","646 C","647 C","648 C","649 C","650 C","651 C","652 C","653 C","654 C","655 C","656 C","657 C","658 C","659 C","660 C","661 C","662 C","7450 C","7451 C","7452 C","7453 C","7454 C","7455 C","7456 C","2706 C","2716 C","2726 C","2736 C","2746 C","2756 C","2766 C","2708 C","2718 C","2728 C","2738 C","2748 C","2758 C","2768 C","2707 C","2717 C","2727 C","2747 C","2757 C","2767 C","277 C","278 C","279 C","280 C","281 C","282 C","283 C","284 C","285 C","286 C","287 C","288 C","289 C","7681 C","7682 C","7683 C","7684 C","7685 C","7686 C","7687 C","545 C","544 C","543 C","542 C","541 C","540 C","539 C","290 C","291 C","292 C","293 C","294 C","295 C","296 C","2905 C","2915 C","2925 C","2935 C","2945 C","2955 C","2965 C","297 C","298 C","299 C","300 C","301 C","302 C","303 C","7688 C","7689 C","7690 C","7691 C","7692 C","7693 C","7694 C","2975 C","2985 C","2995 C","3005 C","3015 C","3025 C","3035 C","7695 C","7696 C","7697 C","7698 C","7699 C","7700 C","7701 C","7457 C","7458 C","7459 C","7460 C","7461 C","7462 C","7463 C","304 C","305 C","306 C","307 C","308 C","309 C","635 C","636 C","637 C","638 C","639 C","640 C","641 C","7702 C","7703 C","7704 C","7705 C","7706 C","7707 C","7708 C","628 C","629 C","630 C","631 C","632 C","633 C","634 C","310 C","311 C","312 C","313 C","314 C","315 C","316 C","3105 C","3115 C","3125 C","3135 C","3145 C","3155 C","3165 C","7709 C","7710 C","7711 C","7712 C","7713 C","7714 C","7715 C","317 C","318 C","319 C","320 C","321 C","322 C","323 C","7464 C","7465 C","7466 C","7467 C","7468 C","7469 C","7470 C","7471 C","7472 C","7473 C","7474 C","7475 C","7476 C","7477 C","5523 C","5513 C","5503 C","5493 C","5483 C","5473 C","5463 C","7716 C","7717 C","7718 C","7719 C","7720 C","7721 C","7722 C","324 C","325 C","326 C","327 C","328 C","329 C","330 C","3242 C","3252 C","3262 C","3272 C","3282 C","3292 C","3302 C","3245 C","3255 C","3265 C","3275 C","3285 C","3295 C","3305 C","3248 C","3258 C","3268 C","3278 C","3288 C","3298 C","3308 C","566 C","565 C","564 C","563 C","562 C","561 C","560 C","573 C","572 C","571 C","570 C","569 C","568 C","567 C","559 C","558 C","557 C","556 C","555 C","554 C","553 C","5595 C","5585 C","5575 C","5565 C","5555 C","5545 C","5535 C","5665 C","5655 C","5645 C","5635 C","5625 C","5615 C","5605 C","5527 C","5517 C","5507 C","5497 C","5487 C","5477 C","5467 C","621 C","622 C","623 C","624 C","625 C","626 C","627 C","331 C","332 C","333 C","334 C","335 C","336 C","337 C","338 C","339 C","340 C","341 C","342 C","343 C","7723 C","7724 C","7725 C","7726 C","7727 C","7728 C","7729 C","3375 C","3385 C","3395 C","3405 C","3415 C","3425 C","3435 C","344 C","345 C","346 C","347 C","348 C","349 C","350 C","351 C","352 C","353 C","354 C","355 C","356 C","357 C","7478 C","7479 C","7480 C","7481 C","7482 C","7483 C","7484 C","7730 C","7731 C","7732 C","7733 C","7734 C","7735 C","7736 C","7737 C","7738 C","7739 C","7740 C","7741 C","7742 C","7743 C","358 C","359 C","360 C","361 C","362 C","363 C","364 C","7485 C","7486 C","7487 C","7488 C","7489 C","7490 C","7491 C","365 C","366 C","367 C","368 C","369 C","370 C","371 C","372 C","373 C","374 C","375 C","376 C","377 C","378 C","580 C","579 C","578 C","577 C","576 C","575 C","574 C","5807 C","5797 C","5787 C","5777 C","5767 C","5757 C","5747 C","5875 C","5865 C","5855 C","5845 C","5835 C","5825 C","5815 C","5803 C","5793 C","5783 C","5773 C","5763 C","5753 C","5743 C","7492 C","7493 C","7494 C","7495 C","7496 C","7497 C","7498 C","7744 C","7745 C","7746 C","7747 C","7748 C","7749 C","7750 C","379 C","380 C","381 C","382 C","383 C","384 C","385 C","386 C","387 C","388 C","389 C","390 C","391 C","392 C","587 C","586 C","585 C","584 C","583 C","582 C","581 C","393 C","394 C","395 C","396 C","397 C","398 C","399 C","3935 C","3945 C","3955 C","3965 C","3975 C","3985 C","3995 C","600 C","601 C","602 C","603 C","604 C","605 C","606 C","607 C","608 C","609 C","610 C","611 C","612 C","613 C","461 C","460 C","459 C","458 C","457 C","456 C","455 C","614 C","615 C","616 C","617 C","618 C","619 C","620 C","7751 C","7752 C","7753 C","7754 C","7755 C","7756 C","7757 C","7758 C","7759 C","7760 C","7761 C","7762 C","7763 C","7764 C","7765 C","7766 C","7767 C","7768 C","7769 C","7770 C","7771 C","4545 C","4535 C","4525 C","4515 C","4505 C","4495 C","4485 C","454 C","453 C","452 C","451 C","450 C","449 C","448 C","7499 C","7500 C","7501 C","7502 C","7503 C","7504 C","7505 C","468 C","467 C","466 C","465 C","464 C","463 C","462 C","7506 C","7507 C","7508 C","7509 C","7510 C","7511 C","7512 C","719 C","720 C","721 C","722 C","723 C","724 C","725 C","475 C","474 C","473 C","472 C","471 C","470 C","469 C","726 C","727 C","728 C","729 C","730 C","731 C","732 C","4685 C","4675 C","4665 C","4655 C","4645 C","4635 C","4625 C","7513 C","7514 C","7515 C","7516 C","7517 C","7518 C","7519 C","4755 C","4745 C","4735 C","4725 C","4715 C","4705 C","4695 C","482 C","481 C","480 C","479 C","478 C","477 C","476 C","7527 C","7528 C","7529 C","7530 C","7531 C","7532 C","7533 C","7534 C","7535 C","7536 C","7537 C","7538 C","7539 C","7540 C","427 C","428 C","429 C","430 C","431 C","432 C","433 C","420 C","421 C","422 C","423 C","424 C","425 C","426 C","441 C","442 C","443 C","444 C","445 C","446 C","447 C","413 C","414 C","415 C","416 C","417 C","418 C","419 C","400 C","401 C","402 C","403 C","404 C","405 C","406 C","407 C","408 C","409 C","410 C","411 C","412 C","434 C","435 C","436 C","437 C","438 C","439 C","440 C","Warm Gray 1 C","Warm Gray 2 C","Warm Gray 3 C","Warm Gray 4 C","Warm Gray 5 C","Warm Gray 6 C","Warm Gray 7 C","Warm Gray 8 C","Warm Gray 9 C","Warm Gray 10 C","Warm Gray 11 C","Cool Gray 1 C","Cool Gray 2 C","Cool Gray 3 C","Cool Gray 4 C","Cool Gray 5 C","Cool Gray 6 C","Cool Gray 7 C","Cool Gray 8 C","Cool Gray 9 C","Cool Gray 10 C","Cool Gray 11 C","Black 2 C","Black 3 C","Black 4 C","Black 5 C","Black 6 C","Black 7 C"],Rt=["FEDD00","FFD700","FE5000","F9423A","EF3340","CE0058","E10098","BB29BB","440099","10069F","001489","0085CA","00AB84","2D2926","F2F0A1","FCAEBB","F1B2DC","BF9BDE","74D1EA","9DE7D7","9E978E","009ACE","44D62C","FFE900","FFAA4D","FF7276","FF3EB5","EA27C2","84754E","85714D","866D4B","8B6F4E","87674F","8B634B","8A8D8F","FFD900","FF5E00","F93822","CE0056","D62598","4E008E","00239C","0084CA","00B08B","222223","F6EB61","F7EA48","FCE300","C5A900","AF9800","897A27","F5E1A4","ECD898","EED484","F4DA40","F2CD00","F1C400","CBA052","F9E547","FBE122","FEDB00","FFD100","DAAA00","AA8A00","9C8412","FAE053","FBDD40","FDDA24","FFCD00","C99700","AC8400","897322","F3DD6D","F3D54E","F3D03E","F2A900","CC8A00","A07400","6C571B","F8E08E","FBD872","FFC845","FFB81C","C69214","AD841F","886B25","FBDB65","FDD757","FED141","FFC72C","EAAA00","B58500","9A7611","FFC600","FFB500","D19000","B47E00","73531D","5A4522","4B3D2A","D29F13","B78B20","9F7D23","967126","8F6A2A","7D622E","6C5D34","FDD26E","FFC658","FFBF3F","FFA300","DE7C00","AF6D04","74531C","FDD086","FFC56E","FFB549","FF9E1B","D57800","996017","6E4C1E","F2C75C","F1BE48","F1B434","ED8B00","CF7F00","A76D11","715C2A","F6BE00","F0B323","FEAD77","E6A65D","D38235","DC8633","C16C18","BD9B60","D69A2D","DB8A06","CD7925","AD6433","89532F","775135","D78825","D3832B","C67D30","B67233","A7662B","9E6A38","835D32","FCC89B","FDBE87","FDAA63","F68D2E","EA7600","D45D00","BE4D00","FECB8B","FFC27B","FFB25B","FF8200","E57200","BE6A14","9B5A1A","EFD19F","EFBE7D","ECA154","E87722","CB6015","A1561C","603D20","FFAE62","FF8F1C","FF6900","B94700","94450B","653819","FFB990","FFA06A","FF7F32","FF6A13","D86018","A65523","8B4720","FFBE9F","FF9D6E","FF7F41","FF671F","E35205","BE531C","73381D","DB864E","E07E3C","DC6B2F","DC582A","C05131","864A33","674736","FFA38B","FF8D6D","FF6A39","FC4C02","DC4405","A9431E","833921","FFB3AB","FF8674","FF5C39","FA4616","CF4520","963821","6B3529","C4622D","BA5826","AF5C37","9E5330","924C2E","7B4D35","5C4738","D4B59E","C07D59","B15533","9D432C","7C3A2D","6B3D2E","5C3D31","D14124","BD472A","B33D26","8D3F2B","83412C","7B4931","674230","E4D5D3","E1BBB4","D6938A","C26E60","A4493D","823B34","683431","DDBCB0","CA9A8E","BC8A7E","A37F74","866761","6B4C4C","583D3E","EABEB0","C09C83","B46A55","AB5C57","A45248","9A6A4F","8A391B","ECC3B2","ECBAA8","EAA794","E8927C","DA291C","9A3324","653024","FFB1BB","FF808B","FF585D","E03C31","BE3A34","81312F","FFA3B5","FF8DA1","F8485E","EE2737","D22630","AF272F","7C2529","FCAFC0","FB637E","F4364C","CB333B","A4343A","643335","C66E4E","C04C36","B7312C","AB2328","93272C","8A2A2B","802F2D","E1523D","C63527","A72B2A","9E2A2B","6D3332","633231","572D2D","E6BAA8","E56A54","E04E39","CD545B","B04A5A","9B2242","651D32","FABBCB","FC9BB3","F65275","E4002B","C8102E","A6192E","76232F","ECC7CD","E89CAE","DF4661","D50032","BA0C2F","9D2235","862633","F8A3BC","F67599","EF426F","E40046","BF0D3E","9B2743","782F40","F5B6CD","F59BBB","EF4A81","E0004D","C5003E","A6093D","8A1538","F5DADF","F7CED7","F9B5C4","F890A5","EF6079","E03E52","CB2C30","F2D4D7","F4C3CC","F2ACB9","E68699","D25B73","B83A4B","9E2A2F","ECB3CB","E782A9","E0457B","CE0037","A50034","861F41","6F263D","F99FC9","F57EB6","F04E98","E31C79","CE0F69","AC145A","7D2248","F4CDD4","E06287","E24585","B52555","A4123F","971B2F","6A2C3E","D6C9CA","C4A4A7","C16784","C63663","BC204B","912F46","7E2D40","EABEDB","E56DB1","DA1884","A50050","910048","6C1D45","936D73","934054","8E2C48","732E4A","672E45","582D40","502B3A","EF95CF","EB6FBD","DF1995","D0006F","AA0061","890C58","672146","F4A6D7","F277C6","E93CAC","C6007E","A20067","840B55","EAD3E2","E6BCD8","DFA0C9","D986BA","C6579A","AE2573","960051","E5CEDB","E3C8D8","DEBED2","C996B6","B06C96","994878","7C2855","E4C6D4","DCB6C9","D0A1BA","BE84A3","A76389","893B67","612141","EBBECB","E8B3C3","E4A9BB","D592AA","84344E","6F2C3F","572932","E2BCCB","DCA9BF","C9809E","B55C80","A73A64","9B3259","872651","E9CDD0","E4BEC3","D7A3AB","C48490","B46B7A","984856","893C47","F2C6CF","F1BDC8","E9A2B2","DC8699","8F3237","7F3035","5D2A2C","E9C4C7","E5BAC1","DAA5AD","C6858F","7A3E3A","6A3735","512F2E","DFC2C3","DBB7BB","CCA1A6","B07C83","9C6169","874B52","3F2021","F1A7DC","EC86D0","E45DBF","DB3EB1","C5299B","AF1685","80225F","EFBAE1","E277CD","D539B5","C800A1","B0008E","9E007E","830065","EAB8E4","E59BDC","DD7FD3","C724B1","BB16A3","A51890","80276C","A56E87","A83D72","991E66","8A1B61","722257","6A2A5B","5E2751","E7BAE4","DD9CDF","C964CF","AD1AAC","981D97","72246C","EBC6DF","E6BEDD","E2ACD7","D48BC8","93328E","833177","612C51","EEDAEA","CCAED0","D59ED7","B288B9","A277A6","9F5CC0","963CBD","D7A9E3","C98BDB","AC4FC6","9B26B6","87189D","772583","653165","948794","A2789C","A15A95","8E3A80","6E2B62","6A3460","5D3754","D5C2D8","C9B1D0","BA9CC5","A57FB2","642F6C","59315F","4B3048","DBCDD3","D0BEC7","C6B0BC","AF95A6","86647A","66435A","4A3041","D8C8D1","D3C0CD","BFA5B8","9B7793","7E5475","693C5E","512A44","DFC8E7","D7B9E4","CAA2DD","B580D1","8031A7","702F8A","572C5F","D6BFDD","C6A1CF","8C4799","6D2077","642667","5D285F","51284F","CBA3D8","B884CB","A05EB5","84329B","702082","671E75","5F2167","9991A4","8D6E97","7A4183","6B3077","653279","5E366E","5C4E63","C1A0DA","A77BCA","8246AF","5C068C","500778","470A68","3C1053","D7C6E6","C1A7E2","9063CD","753BBD","5F259F","582C83","512D6D","C5B4E3","AD96DC","9678D3","7D55C7","330072","2E1A47","B4B5DF","9595D2","7474C1","24135F","211551","201747","221C35","A7A4E0","8B84D7","685BC7","2E008B","280071","250E62","201547","6E7CA0","686E9F","615E9B","565294","514689","4C4184","535486","DDDAE8","B6B8DC","A7A2C3","8986CA","5D4777","4B384C","41273B","878CB4","7C7FAB","7566A0","6F5091","68478D","563D82","523178","E5E1E6","E0DBE3","C6BCD0","A192B2","7C6992","614B79","3F2A56","D8D7DF","C6C4D2","B3B0C4","8D89A5","595478","403A60","1E1A34","C5CFDA","BBC7D6","A2B2C8","8E9FBC","1B365D","1F2A44","1C1F2A","D9E1E2","A4BCC2","98A4AE","768692","425563","253746","131E29","B9D3DC","A3C7D2","8DB9CA","6BA4B8","003D4C","00313C","072B31","BFCED6","B7C9D3","A6BBC8","7A99AC","5B7F95","4F758B","081F2C","D1DDE6","C6D6E3","9BB8D3","7DA1C4","5E8AB4","236192","002E5D","DBE2E9","CED9E5","A7BCD6","7D9BC1","326295","003A70","002554","DDE5ED","C8D8EB","B1C9E8","7BA4DB","407EC9","003594","001A70","BDC5DB","89ABE3","8094DD","7BA6DE","5F8FB4","3A5DAE","606EB2","CBD3EB","9FAEE5","485CC7","1E22AA","171C8F","151F6D","141B4D","B8CCEA","5C88DA","0047BB","06038D","001871","001E62","071D49","C3D7EE","A7C6ED","307FE2","001A72","001E60","13294B","ABCAE9","8BB8E8","418FDE","012169","00205B","041E42","92C1E9","6CACE4","0072CE","0033A0","003087","002D72","0C2340","94A9CB","6787B7","426DA9","385E9D","2C5697","1D4F91","1D428A","C6DAE7","BDD6E6","A4C8E1","7BAFD4","003C71","003057","00263A","B9D9EB","9BCBEB","69B3E7","003DA5","002F6C","002855","041C2C","8DC8E8","62B5E5","009CDE","0057B8","004C97","003865","00263E","71C5E8","41B6E6","00A3E0","005EB8","004B87","003B5C","002A3A","4698CB","298FC2","0076A8","006298","005587","004976","01426A","99D6EA","5BC2E7","00A9E0","0077C8","00629B","004F71","003E51","7BA7BC","6399AE","4E87A0","41748D","34657F","165C7D","005776","BBDDE6","71B2C9","4298B5","0086BF","007DBA","00558C","002B49","9ADBE8","59CBE8","00B5E2","006BA6","00587C","003B49","A4DBE8","8BD3E6","4EC3E0","00AFD7","0095C8","0082BA","0067A0","48A9C5","009CBD","0085AD","007096","006A8E","00617F","005670","B8DDE1","9BD3DD","77C5D5","3EB1C8","0093B2","007396","005F83","6AD1E3","05C3DE","00A9CE","0092BC","007FA3","00677F","004851","68D2DF","00C1D5","00AEC7","008EAA","00778B","006272","004F59","63B1BC","00A7B5","0097A9","00859B","007D8A","007680","006269","B1E4E3","88DBDF","2DCCD3","009CA6","008C95","007377","005F61","A0D1CA","40C1AC","00B0B9","00A3AD","007398","005F86","005A70","7EDDD3","5CB8B2","279989","007681","487A7B","0D5257","244C5A","B6CFD0","ABC7CA","94B7BB","7FA9AE","4F868E","115E67","07272D","00968F","00857D","007672","006D68","00635B","005E5D","005151","9CDBD9","64CCC9","00B2A9","008675","007367","00685E","00534C","71DBD4","2AD2C9","00BFB3","00A499","008578","00594F","004C45","7CE0D3","2CD5C4","00C7B1","00B398","009681","007864","004E42","6DCDB8","49C5B1","00AB8E","009B77","008264","006A52","034638","B9DCD2","A1D6CA","86C8BC","6BBBAE","006F62","00594C","1D3C34","B5E3D8","A5DFD3","98DBCE","6BCABA","00816D","006C5B","173F35","ADCAB8","9ABEAA","85B09A","6FA287","28724F","205C40","284734","BFCEC2","A7BDB1","92ACA0","7F9C90","5C7F71","43695B","183028","BAC5B9","B0BDB0","A3B2A4","94A596","708573","5E7461","22372B","BCC9C5","B1C0BC","9DB0AC","829995","5D7975","3E5D58","18332F","D1E0D7","B7CDC2","9AB9AD","789F90","507F70","285C4D","13322B","A7E6D7","8CE2D0","3CDBC0","009775","007B5F","00664F","8FD6BD","6ECEB2","00B388","00965E","007A53","006747","115740","50A684","00966C","008755","007B4B","006F44","006845","005844","7AE1BF","47D7AC","00C389","00AF66","007749","006341","154734","A0DAB3","91D6AC","71CC98","009A44","00843D","046A38","2C5234","A2E4B8","8FE2B0","80E0A7","00B140","009639","007A33","215732","9BE3BF","26D07C","00BF6F","00B74F","009F4D","275D38","00573F","4B9560","228848","007A3E","007041","286140","36573B","395542","6BA539","48A23F","319B42","3A913F","44883E","4A773C","44693D","ADDC91","A1D884","6CC24A","43B02A","509E2F","4C8C2B","4A7729","D0DEBB","BCE194","8EDD65","78D64B","74AA50","719949","79863C","C2E189","B7DD79","A4D65E","78BE20","64A70B","658D1B","546223","D4EB8E","CDEA80","C5E86C","97D700","84BD00","7A9A01","59621D","C4D6A4","BCD19B","B7CE95","A9C47F","789D4A","67823A","4E5B31","D0D1AB","C6C89B","BABD8B","A2A569","8A8D4A","6D712E","3D441E","D2CE9E","CBC793","C0BB87","AFA96E","A09958","89813D","555025","C3C6A8","B3B995","A3AA83","899064","737B4C","5E6738","3E4827","BFCC80","BBC592","9CAF88","8F993E","76881D","7A7256","5B6236","BABC16","ABAD23","999B30","888D30","7C8034","727337","656635","E2E868","DBE442","CEDC00","C4D600","A8AD00","949300","787121","E9EC6B","E3E935","E0E721","D0DF00","B5BD00","9A9500","827A04","E3E48D","E0E27C","DBDE70","D2D755","B7BF10","8E8C13","625D20","F0EC74","EDE939","ECE81A","E1E000","BFB800","ADA400","A09200","F3EA5D","F3E500","EFDF00","EEDC00","BBA600","9A8700","685C20","F1EB9C","F0E991","F0E87B","EDE04B","EADA24","E1CD00","CFB500","EBE49A","E9E186","E6DE77","E1D555","D7C826","C4B000","B39B00","E9DF97","E4D77E","DECD63","D9C756","B89D18","A28E2A","695B24","DCD59A","D6CF8D","D0C883","C0B561","AC9F3C","9F912A","8A7B19","CAB64B","CFB023","C1A01E","A08629","897630","736635","675E33","D4C304","C4B200","91852C","747136","5D6439","585C3B","535435","BBB323","B4A91F","AA9D2E","8F7E35","716135","635939","4E4934","D5CB9F","CFC493","C5B783","B3A369","998542","8C7732","614F25","CAC7A7","BFBB98","B0AA7E","9B945F","594A25","524727","4A412A","F1E6B2","DFD1A7","D9C89E","CEB888","A89968","94795D","816040","DDCBA4","D3BC8D","C6AA76","B9975B","8B5B29","744F28","5C462B","EFDBB2","FCD299","E1B87F","D6A461","C6893F","B77729","A6631B","EDC8A3","E7B78A","DDA46F","C88242","B36924","934D11","7D3F16","F3CFB3","F1C6A7","F0BF9B","E59E6D","B86125","A45A2A","693F23","E0C09F","D9B48F","CDA077","B58150","9E652E","774212","623412","E0C6AD","DCBFA6","CDA788","BF9474","AD7C59","946037","4F2C1D","E1B7A7","D5A286","C58B68","99552B","85431E","6D4F47","5E4B3C","D7C4B7","CDB5A7","C0A392","AE8A79","956C58","7C4D3A","5B3427","DBC8B6","D3BBA8","C6A992","AA8066","703F2A","623B2A","4E3629","D6D2C4","C5B9AC","B7A99A","A39382","7A6855","63513D","473729","D1CCBD","B7B09C","A69F88","A7ACA2","949A90","8E9089","4B4F54","D0D3D4","C1C6C8","A2AAAD","7C878E","5B6770","333F48","1D252D","C7C9C7","B2B4B2","9EA2A2","898D8D","707372","54585A","25282A","BEC6C4","A2ACAB","919D9D","717C7D","505759","3F4444","373A36","BABBB1","A8A99E","919388","7E7F74","65665C","51534A","212322","C4BFB6","AFA9A0","9D968D","8C857B","776E64","696158","C4BCB7","B2A8A2","978C87","857874","746661","5E514D","382F2D","D0C4C5","C1B2B6","AB989D","7B6469","584446","453536","382E2C","D7D2CB","CBC4BC","BFB8AF","B6ADA5","ACA39A","A59C94","968C83","8C8279","83786F","796E65","6E6259","D9D9D6","D0D0CE","C8C9C7","BBBCBC","B1B3B3","A7A8AA","97999B","888B8D","75787B","63666A","53565A","332F21","212721","31261D","3E2B2E","101820","3D3935"],Xe=Rt.map(n=>[parseInt(n.substring(0,2),16),parseInt(n.substring(2,4),16),parseInt(n.substring(4,6),16)]);function Ki(n){const t=oe.indexOf(n);return t>=0?Rt[t]:""}function Yn(n){const t=Rt.indexOf(n);return t>=0?oe[t]:""}function _i(n,t=64){const e=[],a=[],r=Yn(n);r&&e.push({pms:r,hex:n,distance:0});const i=parseInt(n.substring(0,2),16),o=parseInt(n.substring(2,4),16),s=parseInt(n.substring(4,6),16);let l,c,d;for(let u=0;u<Rt.length;u++){l=Xe[u][0],c=Xe[u][1],d=Xe[u][2];const A=Math.sqrt(Math.pow(i-l,2)+Math.pow(o-c,2)+Math.pow(s-d,2));a.push(A)}for(let u=0;u<a.length;u++)a[u]<=t&&!e.some(A=>A.pms===oe[u])&&e.push({pms:oe[u],hex:Rt[u],distance:a[u]});return e.sort((u,A)=>u.distance-A.distance)}const Xi=oe.map((n,t)=>({pms:n,hex:Rt[t]})),Zi=new Ci(Xi,{keys:["pms"]});function to(n,t){return Zi.search(n,t?{limit:t}:void 0)}let Vt=null;function Jn(n){if(n.startsWith("#"))return cn(n);if(!document)throw new Error("browserColorToHex is only supported on browsers");if(Vt||(Vt=document.createElement("canvas").getContext("2d")),!Vt)throw new Error("Failed to create canvas context required to convert colors");Vt.fillStyle=n;const t=cn(Vt.fillStyle);return t||console.error(`Unknown browser color ${n}`),t}function cn(n){const t=n.substring(1).toUpperCase();return t.length===6?t:t.length===3?`${t[0]}${t[0]}${t[1]}${t[1]}${t[2]}${t[2]}`:""}const be=n=>{const t=Kn(n.spotColor);return t?`${n.browserValue} ${t}`:n.browserValue},Kn=n=>{if(!n)return"";if(n.profileName.includes("/")&&n.profileName.includes(".icc")){const t=n.profileName.replace(/\s/g,"-"),e=t.lastIndexOf("/");return`icc-named-color(${t.slice(e+1).slice(0,-4)}, ${n.namedColor})`}return`icc-named-color(${n.profileName}, ${n.namedColor})`},pa=n=>{const t=n.split(/[ ](?=[^)]*?(?:\(|$))/);if(t.length===0)return{browserValue:"#000000"};if(t.length===1)return{browserValue:t[0]};const e=t[1].match(/\(([^)]+)\)/gm);if(!e)throw new Error("Unhandled state of color value in SVG");const a=e[0].replace(/[() ]/g,"").split(",");return{browserValue:t[0],spotColor:{profileName:a[0],namedColor:a[1]}}},eo=["fill","stroke"],Ot=(n,t)=>{t(n),n.children.length>0&&Array.from(n.children).forEach(e=>Ot(e,t))},ao=(n,t)=>{try{return n.matches(t)}catch{return n.classList.contains(t.substring(1))}},je=(n,t=!1)=>{!t&&n.setAttribute("preserveAspectRatio","none");const e=[];Ot(n,a=>{if(a.tagName==="script"){a.remove();return}if(a.tagName==="style"){try{Dn.parse(a.innerHTML).stylesheet?.rules.forEach(o=>{e.push(o)}),a.remove()}catch(i){console.error(i)}return}const r=a.attributes.getNamedItem("style")?.value?.trim();if(r){const i=[];r.split(";").forEach(s=>{const l=s.trim();if(l){const[c,d]=l.split(":"),u=c.toLowerCase();eo.indexOf(u)>-1?a.setAttribute(u,d.trim()):i.push(l)}}),i.length>0?a.setAttribute("style",i.join(";")):a.removeAttribute("style")}}),Ot(n,a=>{e.forEach(r=>{r.selectors?.forEach(i=>{ao(a,i)&&r.declarations?.forEach(o=>{o.property&&o.value&&a.setAttribute(o.property,o.value)})})})})},no=n=>{const t=/pt|pc|mm|cm|in/gm,e=n.getAttribute("viewBox"),a=n.getAttribute("width"),r=n.getAttribute("height");if(!e)throw new Error("viewBox not specified on SVG!");a&&n.setAttribute("width",a.replace(t,"")),r&&n.setAttribute("height",r.replace(t,""))},_n=n=>lt().parseFromString(n,"image/svg+xml").firstElementChild,ro=(n,t,e)=>{n.setAttribute("height",`${e}px`),n.setAttribute("width",`${t}px`)},Xn=(n,t,e)=>{Ot(n,a=>{const r=a.attributes.getNamedItem("fill");r&&r.value!=="none"&&a.classList.forEach(o=>{if(o.startsWith("spiff-fill")){const s=t[o.replace("spiff-fill-","")];if(s)a.setAttribute("fill",e?be(s):s.browserValue);else{const l=t[o];l&&a.setAttribute("fill",e?be(l):l.browserValue)}}});const i=a.attributes.getNamedItem("stroke");i&&i.value!=="none"&&a.classList.forEach(o=>{if(o.startsWith("spiff-stroke")){const s=t[o.replace("spiff-stroke-","")];if(s)a.setAttribute("stroke",e?be(s):s.browserValue);else{const l=t[o];l&&a.setAttribute("fill",e?be(l):l.browserValue)}}})})},Zn=n=>yt().serializeToString(n),Ta=(n,t,e,a,r)=>{const i=_n(n);if(!i)throw new Error("Failed to read SVG.");return ro(i,t,e),Xn(i,a,r),Zn(i)},We=(n,t,e)=>{const a=_n(n);if(!a)throw new Error("Failed to read SVG.");return Xn(a,t,e),Zn(a)},io=n=>{const t=/<svg.*<\/svg>/s,e=n.match(t)||[],a=e?.length>0?e[0]:"";return lt().parseFromString(a,"image/svg+xml")},ot=async n=>{const e=io(n).firstElementChild;if(!e)throw new Error("Failed to read SVG.");je(e);const a={};Ot(e,o=>{const s=o.attributes.getNamedItem("fill");if(s&&s.value!=="none"&&!s.value.startsWith("url(")){const c=pa(s.value),d=c.browserValue.replace(/\W/g,""),u=`spiff-fill-${d}`;o.setAttribute("fill",c.browserValue),o.classList.add(u),a[d]=c}const l=o.attributes.getNamedItem("stroke");if(l&&l.value!=="none"&&!l.value.startsWith("url(")){const c=pa(l.value),d=c.browserValue.replace(/\W/g,""),u=`spiff-stroke-${d}`;o.classList.add(u),o.setAttribute("stroke",c.browserValue),a[d]=c}});const i=yt().serializeToString(e);return{colors:a,svg:i}},oo=C.gql`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("@apollo/client/core"),gi=require("@apollo/client/link/context"),mi=require("@apollo/client/link/error"),pi=require("preact-render-to-string"),fi=require("@apollo/client/link/remove-typename"),Ci=require("exifr/dist/mini.umd.cjs"),kn=require("css"),wi=require("fuse.js"),Fa=require("pith"),It=require("lodash.clonedeep"),ne=require("lodash.isequal"),P=require("preact/jsx-runtime"),ua=require("opentype.js"),yi=require("handlebars"),Si=require("data-uri-to-buffer"),Mn=require("qrcode"),Aa=require("unicode-default-word-boundary"),vi=require("svg-path-bbox"),nn=require("lodash.chunk"),ve=require("@aws-sdk/client-cognito-identity-provider"),Ei=require("dinero.js"),bi=require("currency-codes"),Tn=require("lodash.debounce");require("fs");require("path");const Bi=require("lodash.omit");function Ii(n){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const a=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(t,e,a.get?a:{enumerable:!0,get:()=>n[e]})}}return t.default=n,Object.freeze(t)}const rn=Ii(bi);var re=(n=>(n.Data="Data",n.Font="Font",n.Frame="Frame",n.Illustration="Illustration",n.Image="Image",n.Model="Model",n.Material="Material",n.Color="Color",n.QuestionnaireCollateral="QuestionnaireCollateral",n.RequestCollateral="RequestCollateral",n.SignupCollateral="SignupCollateral",n.Video="Video",n.ColorProfile="ColorProfile",n.Environment="Environment",n))(re||{}),Nn=(n=>(n.AND="AND",n.OR="OR",n))(Nn||{}),L=(n=>(n.FileUpload="FileUpload",n.Option="Option",n.ColorOption="ColorOption",n.Text="Text",n))(L||{}),v=(n=>(n.Information="Information",n.Bulk="Bulk",n.DigitalContent="DigitalContent",n.Finish="Finish",n.Frame="Frame",n.Illustration="Illustration",n.Introduction="Introduction",n.Material="Material",n.Model="Model",n.Module="Module",n.Picture="Picture",n.Photo="Photo",n.ProductOverlay="ProductOverlay",n.Question="Question",n.Shape="Shape",n.SilentIllustration="SilentIllustration",n.Text="Text",n))(v||{}),Qn=(n=>(n.Color="Color",n.Colors="Colors",n.Selection="Selection",n.Selections="Selections",n.Text="Text",n.Upload="Upload",n))(Qn||{}),Qt=(n=>(n.ThreeD="ThreeD",n.FreeDesign="FreeDesign",n.Print="Print",n))(Qt||{}),k=(n=>(n.Frame="frame",n.Group="group",n.Image="image",n.Pattern="pattern",n.Illustration="illustration",n.Textbox="textbox",n))(k||{}),Rn=(n=>(n.Default="Default",n.FirstTransaction="FirstTransaction",n.OneToOne="OneToOne",n))(Rn||{}),Da=(n=>(n.Pending="Pending",n.Failed="Failed",n.Validated="Validated",n.Overridden="Overridden",n))(Da||{}),On=(n=>(n.Hyperlink="Hyperlink",n.Edit="Edit",n.Approve="Approve",n))(On||{}),$n=(n=>(n.Hub="Hub",n.Shopify="Shopify",n))($n||{}),Le=(n=>(n.BackgroundRemover="BackgroundRemover",n.ConversionAccelerator="Conversion Accelerator",n.ProcessBuilder="ProcessBuilder",n))(Le||{}),Un=(n=>(n[n.Orbit=0]="Orbit",n[n.Pan=1]="Pan",n))(Un||{}),ie=(n=>(n.Owner="Owner",n.Approver="Approver",n.Editor="Editor",n.Viewer="Viewer",n))(ie||{}),Pt=(n=>(n.Autosize="Autosize",n.Traditional="Traditional",n))(Pt||{}),j=(n=>(n[n.North=0]="North",n[n.Northeast=1]="Northeast",n[n.East=2]="East",n[n.Southeast=3]="Southeast",n[n.South=4]="South",n[n.Southwest=5]="Southwest",n[n.West=6]="West",n[n.Northwest=7]="Northwest",n))(j||{}),Ln=(n=>(n.Pixel="px",n.Millimeter="mm",n.Centimeter="cm",n))(Ln||{});class Vn extends Error{constructor(t){super(t),this.name=this.constructor.name}}class ue extends Vn{constructor(t){super(`ConfigurationError - ${t}`)}}class oe extends ue{constructor(t){super(`Option not Configured: ${t.stepTitle}`),this.optionId=t?.optionId||"N/A"}}class H extends ue{constructor(t){super(`Panel not Found: ${t.panelId}`),this.panelId=t?.panelId||"N/A"}}class ft extends ue{constructor(t){super(`Asset not found for variant: ${t.name}`),this.variant=t}}class Rt extends ue{constructor(t){super(`Resource not found for asset: ${t.name}`),this.asset=t}}class se extends ue{constructor(t,e){super(`Workflow Misconfiguration: ${t.stepName} - ${e}`),this.step=t}}class Ve extends Vn{constructor(t){super(`ImplementationError - ${t}`)}}class Q extends Ve{constructor(t){super(`Unhandled Behavior Encountered: ${t}`)}}class bt extends Ve{constructor(t){super(`Parsing Error: ${t}`)}}class mt extends Ve{constructor(t){super(`Client Error: ${t}`)}}class ze extends Ve{constructor(t){super(`Resource Generation Failed: ${t}`)}}class Pi{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 on{constructor(){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 xi=()=>{try{return localStorage?new Pi:new on}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new on}},M=xi();class Fi{constructor(){this.defaultServerUrl="https://api.au.spiffcommerce.com",this.defaultServicesApiUrl="https://services.au.spiffcommerce.com",this.defaultHubUrl="https://hub.au.spiffcommerce.com",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(e=>e())}setServicesApiUrl(t){this.servicesApiUrl=t}setHubUrl(t){this.hubUrl=t}addServerUrlCallback(t){this.serverUrlCallbacks.push(t)}}const ut=new Fi;let ha,ga;function Di(n){ha=n}function ki(n){ga=n}function Ae(){return ha?new ha().window:(console.log("DOM constructor is not registered. Assuming browser environment. If not, please register DOM constructor before calling this function."),window)}function nt(n,t){if(!ga){if(typeof window<"u"&&window.fetch)return window.fetch(n,t);if(typeof global<"u"&&global.fetch)return global.fetch(n,t);throw new Error("Fetch implementation is not registered. Please register it before calling this function.")}return ga(n,t)}const zn=new Map,sn=new Map,ln=new Map,qn=async n=>{const t=sn.get(n);if(t)return t;const a=(async()=>{const r=await nt(n);return zn.set(n,r.headers?.get("content-type")||""),await r.arrayBuffer()})();return sn.set(n,a),a},Mi=async n=>{const t=ln.get(n);if(t)return t;const a=(async()=>await(await nt(n)).text())();return ln.set(n,a),a},Lt=n=>n.every(t=>t!=="undefined"),Ee=n=>Lt([typeof document])?document.createElement(n):Ae().document.createElement(n),Ti=(n,t)=>{if(Lt([typeof document]))return document.createElementNS(n,t);const a=Ae().document.createElement(t);return a.setAttribute("xmlns",n),a},ot=()=>{if(Lt([typeof DOMParser]))return new DOMParser;const n=Ae();return new n.DOMParser},Ni=()=>Lt([typeof DOMParser])?DOMParser:Ae().DOMParser,qe=(n,t)=>new Promise((e,a)=>{t?qn(n).then(e).catch(a):nt(n).then(r=>{r.arrayBuffer().then(e).catch(a)}).catch(r=>{a(r)})}),Z=(n,t)=>new Promise((e,a)=>{t?Mi(n).then(e).catch(a):nt(n).then(r=>{r.text().then(e).catch(a)}).catch(a)}),Gn=n=>pi.renderToStaticMarkup(n),_e=new Map,Qi=async(n,t)=>{if(Lt([typeof FontFace])){if(_e.has(t))return _e.get(t);const e=n.names.fullName.en,a=new FontFace(e,`url(${t})`);document.fonts.add(a);const r=a.load();return _e.set(t,r),r}},St=()=>{if(Lt([typeof XMLSerializer]))return new XMLSerializer;const n=Ae();return new n.XMLSerializer},cn=n=>btoa(n),Ge=n=>{function t(){const a=new Uint8Array(n),r=4;if(a.length>=r){const i=new Array(r);for(let l=0;l<r;l++)i[l]=new Uint8Array(n)[l].toString(16);const o=i.join("").toUpperCase();switch(o){case"89504E47":return"image/png";case"47494638":return"image/gif";case"25504446":return"application/pdf";case"504B0304":return"application/zip"}switch(o.slice(0,4)){case"FFD8":return"image/jpeg"}}return null}const e=t();return e||"image/svg+xml"},Ri=async n=>{const t=await qn(n),e=zn.get(n)||Ge(t);return await Ui(new Blob([t],{type:e}))},Oi=n=>{let t="";const e=n.byteLength;for(let a=0;a<e;a++)t+=String.fromCharCode(n[a]);return t},$i=async n=>{const t=Ge(n),e=new Uint8Array(n),a=Oi(e),r=btoa(a);return`data:${t};base64,${r}`},je=n=>`data:image/svg+xml;base64,${btoa(n)}`,jn=n=>{const t=n.replace(/\r?\n/g,""),e=t.indexOf(",");if(e===-1||e<=4)throw new TypeError("malformed data: URI");const a=t.substring(5,e).split(";");let r=!1;for(let o=1;o<a.length;o++)a[o]==="base64"&&(r=!0);const i=decodeURI(t.substring(e+1));return r?new Uint8Array(atob(i).split("").map(s=>s.charCodeAt(0))).buffer:new Uint8Array(i.split("").map(s=>s.charCodeAt(0))).buffer},Ui=n=>new Promise((t,e)=>{const a=new FileReader;a.onload=function(r){const i=r.target;!i||!i.result?e():t(i.result.toString())},a.readAsDataURL(n)});let Li,ka;const Vi=n=>{ka=n},zi=()=>ka;let Wn;const Hn=n=>{Wn=n},qi=()=>new Promise(n=>{const t=ut.getHubUrl(),e=a=>{a.origin===t&&(window.removeEventListener("message",e),n(a.data))};window.parent!==window&&(window.addEventListener("message",e,!1),window.parent.postMessage("ready",t))}),Gi=async()=>{const n={applicationKey:ka,customerToken:Li,bearer:Wn};return typeof window<"u"&&(window.location.href.includes("/workflows/product/")||window.location.href.includes("hub=true"))?{...await qi(),...n}:n};async function ji(n,t){const e=ut.getServerUrl(),a=e.includes(".aumelbdev.spiffcommerce.com")?"https://moonlight.aumelbdev.spiffcommerce.com":e.includes(".us.spiffcommerce.com")?"https://moonlight.us.spiffcommerce.com":"https://moonlight.au.spiffcommerce.com";let r=await nt(n,{...t,redirect:"manual"});return r.type==="opaqueredirect"&&(typeof n!="string"&&"url"in n?r=await nt({...n,url:`${a}/graphql`},t):r=await nt(`${a}/graphql`,t)),r}class Wi{constructor(){this.shadowGraphqlClient=this.constructShadowGraphqlClient(),ut.addServerUrlCallback(()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()})}setSpiffCommerceClient(t){this.spiffClient=t,this.shadowGraphqlClient=this.constructShadowGraphqlClient()}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const t=f.createHttpLink({uri:`${ut.getServerUrl()}/graphql`,fetch:ji}),e=gi.setContext(async(i,o)=>{const{headers:s}=o,l=s||{},c=await Gi();let d=o.bearer??c.bearer;if(this.spiffClient)try{d=await this.spiffClient.loggedInBearerToken()}catch{}const u=o.partnerId??c.partnerId,A=o.activeIntegration??c.activeIntegration,h=o.transactionOwnerId,g=o.customerToken??c.customerToken,p=o.applicationKey??c.applicationKey,m=o.bundleOwnerId;try{if(window&&window.__SENTRY__){const C=window.__SENTRY__.hub;if(C){const w=C.traceHeaders();Object.entries(w).forEach(([I,x])=>{l[I]=x})}}}catch{}return d&&(l.Authorization=`Bearer ${d}`),u&&(l.partnerId=u),A&&(l.activeIntegration=A),h&&(l.transactionOwnerId=h),g&&(l.customerToken=g),p&&(l["X-Application-Key"]=p),m&&(l.bundleOwnerId=m),l["Allow-Moonlight-Redirect"]="true",{headers:l}}),a=mi.onError(({operation:i,graphQLErrors:o,networkError:s})=>{const l=o||[],c=i.getContext();s&&!c?.fetchOptions?.signal?.aborted&&console.log("GraphQL Network error"),l.forEach(()=>console.log("GraphQL Error: "+i.operationName))}),r=fi.removeTypenameFromVariables();return new f.ApolloClient({link:f.from([r,a,e,t]),cache:new f.InMemoryCache,name:"Core"})}}const y=new Wi;let ma,pa;const Ct=(n,t,e)=>{if(ma!==void 0)return ma(n,t,e);try{const a=Yn(!0);return Ma(a),a.createCanvas(n,t,e)}catch{throw new Error("Canvas module not set")}},he=(n,t)=>{if(pa!==void 0)return pa(n,t);try{const e=Yn(!0);return Ma(e),e.loadImage(n,t)}catch{throw new Error("Canvas module not set")}};function Ma(n){ma=n?.createCanvas,pa=n?.loadImage}function Yn(n){try{if(document.createElement("canvas").getContext("2d"))return{createCanvas:(e,a,r)=>{const i=document.createElement("canvas");return e!=null&&(i.width=e),a!=null&&(i.height=a),i},loadImage:(e,a)=>new Promise((r,i)=>{const o=document.createElement("img");a!==!1&&(o.crossOrigin="Anonymous"),o.onload=()=>{r(o)},o.onerror=i,o.src=e})}}catch(t){throw t}}let Xe;function Ta(){return Xe===void 0&&(Xe=Ni()),Xe}let be=null;const Hi=n=>new Promise(t=>{if(Ge(n)!=="image/jpeg")return t(1);Ci.orientation(n).then(a=>t(a||1)).catch(()=>t(1))}),Yi=async()=>{if(be!==null)return!be;const t=await he("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/xABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAAAAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQvoP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXwH/9k=");return be=t.width===2&&t.height===3,!be},Ji=n=>{const e=n.naturalWidth/n.naturalHeight;return n.naturalHeight<=8192&&n.naturalWidth<=8192?[n.naturalWidth,n.naturalHeight]:n.naturalHeight>n.naturalWidth?[e*8192,8192]:[8192,8192/e]},Ki=async n=>{const t=await $i(n),e=await he(t),[a,r]=Ji(e);if(!await Yi()){const u=Ct(a,r);return u.getContext("2d")?.drawImage(e,0,0,a,r),u}const o=await Hi(n),[s,l]=o>4?[r,a]:[a,r],c=Ct(s,l),d=c.getContext("2d");switch(o){case 2:d.translate(s,0),d.scale(-1,1);break;case 3:d.translate(s,l),d.rotate(Math.PI);break;case 4:d.translate(0,l),d.scale(1,-1);break;case 5:d.rotate(-.5*Math.PI),d.scale(-1,1);break;case 6:d.rotate(-.5*Math.PI),d.translate(-s,0);break;case 7:d.rotate(-.5*Math.PI),d.translate(-s,l),d.scale(1,-1);break;case 8:d.rotate(.5*Math.PI),d.translate(0,-l);break}return d.drawImage(e,0,0,s,l),c},ge=async n=>{const t=await Ki(n);return Ge(n)==="image/jpeg"?{dataUrl:t.toDataURL("image/jpeg",1),height:t.height,width:t.width}:{dataUrl:t.toDataURL(),height:t.height,width:t.width}},le=["Yellow C","Yellow 012 C","Orange 021 C","Warm Red C","Red 032 C","Rubine Red C","Rhodamine Red C","Purple C","Violet C","Blue 072 C","Reflex Blue C","Process Blue C","Green C","Black C","Yellow 0131 C","Red 0331 C","Magenta 0521 C","Violet 0631 C","Blue 0821 C","Green 0921 C","Black 0961 C","801 C","802 C","803 C","804 C","805 C","806 C","807 C","871 C","872 C","873 C","874 C","875 C","876 C","877 C","Medium Yellow C","Bright Orange C","Bright Red C","Strong Red C","Pink C","Medium Purple C","Dark Blue C","Medium Blue C","Bright Green C","Neutral Black C","100 C","101 C","102 C","103 C","104 C","105 C","7401 C","7402 C","7403 C","7404 C","7405 C","7406 C","7407 C","106 C","107 C","108 C","109 C","110 C","111 C","112 C","113 C","114 C","115 C","116 C","117 C","118 C","119 C","127 C","128 C","129 C","130 C","131 C","132 C","133 C","1205 C","1215 C","1225 C","1235 C","1245 C","1255 C","1265 C","120 C","121 C","122 C","123 C","124 C","125 C","126 C","7548 C","7549 C","7550 C","7551 C","7552 C","7553 C","7554 C","7555 C","7556 C","7557 C","7558 C","7559 C","7560 C","7561 C","134 C","135 C","136 C","137 C","138 C","139 C","140 C","1345 C","1355 C","1365 C","1375 C","1385 C","1395 C","1405 C","141 C","142 C","143 C","144 C","145 C","146 C","147 C","7408 C","7409 C","7410 C","7411 C","7412 C","7413 C","7414 C","7562 C","7563 C","7564 C","7565 C","7566 C","7567 C","7568 C","7569 C","7570 C","7571 C","7572 C","7573 C","7574 C","7575 C","712 C","713 C","714 C","715 C","716 C","717 C","718 C","148 C","149 C","150 C","151 C","152 C","153 C","154 C","155 C","156 C","157 C","158 C","159 C","160 C","161 C","1485 C","1495 C","1505 C","1525 C","1535 C","1545 C","1555 C","1565 C","1575 C","1585 C","1595 C","1605 C","1615 C","162 C","163 C","164 C","165 C","166 C","167 C","168 C","7576 C","7577 C","7578 C","7579 C","7580 C","7581 C","7582 C","1625 C","1635 C","1645 C","1655 C","1665 C","1675 C","1685 C","169 C","170 C","171 C","172 C","173 C","174 C","175 C","7583 C","7584 C","7585 C","7586 C","7587 C","7588 C","7589 C","7590 C","7591 C","7592 C","7593 C","7594 C","7595 C","7596 C","7597 C","7598 C","7599 C","7600 C","7601 C","7602 C","7603 C","7604 C","7605 C","7606 C","7607 C","7608 C","7609 C","7610 C","7611 C","7612 C","7613 C","7614 C","7615 C","7616 C","7617 C","7520 C","7521 C","7522 C","7523 C","7524 C","7525 C","7526 C","489 C","488 C","487 C","486 C","485 C","484 C","483 C","176 C","177 C","178 C","179 C","180 C","181 C","1765 C","1775 C","1785 C","1788 C","1795 C","1805 C","1815 C","1767 C","1777 C","1787 C","1797 C","1807 C","1817 C","7618 C","7619 C","7620 C","7621 C","7622 C","7623 C","7624 C","7625 C","7626 C","7627 C","7628 C","7629 C","7630 C","7631 C","7415 C","7416 C","7417 C","7418 C","7419 C","7420 C","7421 C","182 C","183 C","184 C","185 C","186 C","187 C","188 C","196 C","197 C","198 C","199 C","200 C","201 C","202 C","189 C","190 C","191 C","192 C","193 C","194 C","195 C","1895 C","1905 C","1915 C","1925 C","1935 C","1945 C","1955 C","705 C","706 C","707 C","708 C","709 C","710 C","711 C","698 C","699 C","700 C","701 C","702 C","703 C","704 C","203 C","204 C","205 C","206 C","207 C","208 C","209 C","210 C","211 C","212 C","213 C","214 C","215 C","216 C","7422 C","7423 C","7424 C","7425 C","7426 C","7427 C","7428 C","7632 C","7633 C","7634 C","7635 C","7636 C","7637 C","7638 C","217 C","218 C","219 C","220 C","221 C","222 C","7639 C","7640 C","7641 C","7642 C","7643 C","7644 C","7645 C","223 C","224 C","225 C","226 C","227 C","228 C","229 C","230 C","231 C","232 C","233 C","234 C","235 C","670 C","671 C","672 C","673 C","674 C","675 C","676 C","677 C","678 C","679 C","680 C","681 C","682 C","683 C","684 C","685 C","686 C","687 C","688 C","689 C","690 C","510 C","509 C","508 C","507 C","506 C","505 C","504 C","7429 C","7430 C","7431 C","7432 C","7433 C","7434 C","7435 C","691 C","692 C","693 C","694 C","695 C","696 C","697 C","496 C","495 C","494 C","493 C","492 C","491 C","490 C","503 C","502 C","501 C","500 C","499 C","498 C","497 C","5035 C","5025 C","5015 C","5005 C","4995 C","4985 C","4975 C","236 C","237 C","238 C","239 C","240 C","241 C","242 C","2365 C","2375 C","2385 C","2395 C","2405 C","2415 C","2425 C","243 C","244 C","245 C","246 C","247 C","248 C","249 C","7646 C","7647 C","7648 C","7649 C","7650 C","7651 C","7652 C","250 C","251 C","252 C","253 C","254 C","255 C","517 C","516 C","515 C","514 C","513 C","512 C","511 C","7436 C","7437 C","7438 C","7439 C","7440 C","7441 C","7442 C","2562 C","2572 C","2582 C","2592 C","2602 C","2612 C","2622 C","7653 C","7654 C","7655 C","7656 C","7657 C","7658 C","7659 C","524 C","523 C","522 C","521 C","520 C","519 C","518 C","5245 C","5235 C","5225 C","5215 C","5205 C","5195 C","5185 C","5175 C","5165 C","5155 C","5145 C","5135 C","5125 C","5115 C","531 C","530 C","529 C","528 C","527 C","526 C","525 C","256 C","257 C","258 C","259 C","260 C","261 C","262 C","2563 C","2573 C","2583 C","2593 C","2603 C","2613 C","2623 C","7660 C","7661 C","7662 C","7663 C","7664 C","7665 C","7666 C","2567 C","2577 C","2587 C","2597 C","2607 C","2617 C","2627 C","263 C","264 C","265 C","266 C","267 C","268 C","269 C","2635 C","2645 C","2655 C","2665 C","2685 C","2695 C","270 C","271 C","272 C","273 C","274 C","275 C","276 C","2705 C","2715 C","2725 C","2735 C","2745 C","2755 C","2765 C","7667 C","7668 C","7669 C","7670 C","7671 C","7672 C","7673 C","7443 C","7444 C","7445 C","7446 C","7447 C","7448 C","7449 C","7674 C","7675 C","7676 C","7677 C","7678 C","7679 C","7680 C","663 C","664 C","665 C","666 C","667 C","668 C","669 C","5315 C","5305 C","5295 C","5285 C","5275 C","5265 C","5255 C","538 C","537 C","536 C","535 C","534 C","533 C","532 C","7541 C","7542 C","7543 C","7544 C","7545 C","7546 C","7547 C","552 C","551 C","550 C","549 C","548 C","547 C","546 C","5455 C","5445 C","5435 C","5425 C","5415 C","5405 C","5395 C","642 C","643 C","644 C","645 C","646 C","647 C","648 C","649 C","650 C","651 C","652 C","653 C","654 C","655 C","656 C","657 C","658 C","659 C","660 C","661 C","662 C","7450 C","7451 C","7452 C","7453 C","7454 C","7455 C","7456 C","2706 C","2716 C","2726 C","2736 C","2746 C","2756 C","2766 C","2708 C","2718 C","2728 C","2738 C","2748 C","2758 C","2768 C","2707 C","2717 C","2727 C","2747 C","2757 C","2767 C","277 C","278 C","279 C","280 C","281 C","282 C","283 C","284 C","285 C","286 C","287 C","288 C","289 C","7681 C","7682 C","7683 C","7684 C","7685 C","7686 C","7687 C","545 C","544 C","543 C","542 C","541 C","540 C","539 C","290 C","291 C","292 C","293 C","294 C","295 C","296 C","2905 C","2915 C","2925 C","2935 C","2945 C","2955 C","2965 C","297 C","298 C","299 C","300 C","301 C","302 C","303 C","7688 C","7689 C","7690 C","7691 C","7692 C","7693 C","7694 C","2975 C","2985 C","2995 C","3005 C","3015 C","3025 C","3035 C","7695 C","7696 C","7697 C","7698 C","7699 C","7700 C","7701 C","7457 C","7458 C","7459 C","7460 C","7461 C","7462 C","7463 C","304 C","305 C","306 C","307 C","308 C","309 C","635 C","636 C","637 C","638 C","639 C","640 C","641 C","7702 C","7703 C","7704 C","7705 C","7706 C","7707 C","7708 C","628 C","629 C","630 C","631 C","632 C","633 C","634 C","310 C","311 C","312 C","313 C","314 C","315 C","316 C","3105 C","3115 C","3125 C","3135 C","3145 C","3155 C","3165 C","7709 C","7710 C","7711 C","7712 C","7713 C","7714 C","7715 C","317 C","318 C","319 C","320 C","321 C","322 C","323 C","7464 C","7465 C","7466 C","7467 C","7468 C","7469 C","7470 C","7471 C","7472 C","7473 C","7474 C","7475 C","7476 C","7477 C","5523 C","5513 C","5503 C","5493 C","5483 C","5473 C","5463 C","7716 C","7717 C","7718 C","7719 C","7720 C","7721 C","7722 C","324 C","325 C","326 C","327 C","328 C","329 C","330 C","3242 C","3252 C","3262 C","3272 C","3282 C","3292 C","3302 C","3245 C","3255 C","3265 C","3275 C","3285 C","3295 C","3305 C","3248 C","3258 C","3268 C","3278 C","3288 C","3298 C","3308 C","566 C","565 C","564 C","563 C","562 C","561 C","560 C","573 C","572 C","571 C","570 C","569 C","568 C","567 C","559 C","558 C","557 C","556 C","555 C","554 C","553 C","5595 C","5585 C","5575 C","5565 C","5555 C","5545 C","5535 C","5665 C","5655 C","5645 C","5635 C","5625 C","5615 C","5605 C","5527 C","5517 C","5507 C","5497 C","5487 C","5477 C","5467 C","621 C","622 C","623 C","624 C","625 C","626 C","627 C","331 C","332 C","333 C","334 C","335 C","336 C","337 C","338 C","339 C","340 C","341 C","342 C","343 C","7723 C","7724 C","7725 C","7726 C","7727 C","7728 C","7729 C","3375 C","3385 C","3395 C","3405 C","3415 C","3425 C","3435 C","344 C","345 C","346 C","347 C","348 C","349 C","350 C","351 C","352 C","353 C","354 C","355 C","356 C","357 C","7478 C","7479 C","7480 C","7481 C","7482 C","7483 C","7484 C","7730 C","7731 C","7732 C","7733 C","7734 C","7735 C","7736 C","7737 C","7738 C","7739 C","7740 C","7741 C","7742 C","7743 C","358 C","359 C","360 C","361 C","362 C","363 C","364 C","7485 C","7486 C","7487 C","7488 C","7489 C","7490 C","7491 C","365 C","366 C","367 C","368 C","369 C","370 C","371 C","372 C","373 C","374 C","375 C","376 C","377 C","378 C","580 C","579 C","578 C","577 C","576 C","575 C","574 C","5807 C","5797 C","5787 C","5777 C","5767 C","5757 C","5747 C","5875 C","5865 C","5855 C","5845 C","5835 C","5825 C","5815 C","5803 C","5793 C","5783 C","5773 C","5763 C","5753 C","5743 C","7492 C","7493 C","7494 C","7495 C","7496 C","7497 C","7498 C","7744 C","7745 C","7746 C","7747 C","7748 C","7749 C","7750 C","379 C","380 C","381 C","382 C","383 C","384 C","385 C","386 C","387 C","388 C","389 C","390 C","391 C","392 C","587 C","586 C","585 C","584 C","583 C","582 C","581 C","393 C","394 C","395 C","396 C","397 C","398 C","399 C","3935 C","3945 C","3955 C","3965 C","3975 C","3985 C","3995 C","600 C","601 C","602 C","603 C","604 C","605 C","606 C","607 C","608 C","609 C","610 C","611 C","612 C","613 C","461 C","460 C","459 C","458 C","457 C","456 C","455 C","614 C","615 C","616 C","617 C","618 C","619 C","620 C","7751 C","7752 C","7753 C","7754 C","7755 C","7756 C","7757 C","7758 C","7759 C","7760 C","7761 C","7762 C","7763 C","7764 C","7765 C","7766 C","7767 C","7768 C","7769 C","7770 C","7771 C","4545 C","4535 C","4525 C","4515 C","4505 C","4495 C","4485 C","454 C","453 C","452 C","451 C","450 C","449 C","448 C","7499 C","7500 C","7501 C","7502 C","7503 C","7504 C","7505 C","468 C","467 C","466 C","465 C","464 C","463 C","462 C","7506 C","7507 C","7508 C","7509 C","7510 C","7511 C","7512 C","719 C","720 C","721 C","722 C","723 C","724 C","725 C","475 C","474 C","473 C","472 C","471 C","470 C","469 C","726 C","727 C","728 C","729 C","730 C","731 C","732 C","4685 C","4675 C","4665 C","4655 C","4645 C","4635 C","4625 C","7513 C","7514 C","7515 C","7516 C","7517 C","7518 C","7519 C","4755 C","4745 C","4735 C","4725 C","4715 C","4705 C","4695 C","482 C","481 C","480 C","479 C","478 C","477 C","476 C","7527 C","7528 C","7529 C","7530 C","7531 C","7532 C","7533 C","7534 C","7535 C","7536 C","7537 C","7538 C","7539 C","7540 C","427 C","428 C","429 C","430 C","431 C","432 C","433 C","420 C","421 C","422 C","423 C","424 C","425 C","426 C","441 C","442 C","443 C","444 C","445 C","446 C","447 C","413 C","414 C","415 C","416 C","417 C","418 C","419 C","400 C","401 C","402 C","403 C","404 C","405 C","406 C","407 C","408 C","409 C","410 C","411 C","412 C","434 C","435 C","436 C","437 C","438 C","439 C","440 C","Warm Gray 1 C","Warm Gray 2 C","Warm Gray 3 C","Warm Gray 4 C","Warm Gray 5 C","Warm Gray 6 C","Warm Gray 7 C","Warm Gray 8 C","Warm Gray 9 C","Warm Gray 10 C","Warm Gray 11 C","Cool Gray 1 C","Cool Gray 2 C","Cool Gray 3 C","Cool Gray 4 C","Cool Gray 5 C","Cool Gray 6 C","Cool Gray 7 C","Cool Gray 8 C","Cool Gray 9 C","Cool Gray 10 C","Cool Gray 11 C","Black 2 C","Black 3 C","Black 4 C","Black 5 C","Black 6 C","Black 7 C"],Ot=["FEDD00","FFD700","FE5000","F9423A","EF3340","CE0058","E10098","BB29BB","440099","10069F","001489","0085CA","00AB84","2D2926","F2F0A1","FCAEBB","F1B2DC","BF9BDE","74D1EA","9DE7D7","9E978E","009ACE","44D62C","FFE900","FFAA4D","FF7276","FF3EB5","EA27C2","84754E","85714D","866D4B","8B6F4E","87674F","8B634B","8A8D8F","FFD900","FF5E00","F93822","CE0056","D62598","4E008E","00239C","0084CA","00B08B","222223","F6EB61","F7EA48","FCE300","C5A900","AF9800","897A27","F5E1A4","ECD898","EED484","F4DA40","F2CD00","F1C400","CBA052","F9E547","FBE122","FEDB00","FFD100","DAAA00","AA8A00","9C8412","FAE053","FBDD40","FDDA24","FFCD00","C99700","AC8400","897322","F3DD6D","F3D54E","F3D03E","F2A900","CC8A00","A07400","6C571B","F8E08E","FBD872","FFC845","FFB81C","C69214","AD841F","886B25","FBDB65","FDD757","FED141","FFC72C","EAAA00","B58500","9A7611","FFC600","FFB500","D19000","B47E00","73531D","5A4522","4B3D2A","D29F13","B78B20","9F7D23","967126","8F6A2A","7D622E","6C5D34","FDD26E","FFC658","FFBF3F","FFA300","DE7C00","AF6D04","74531C","FDD086","FFC56E","FFB549","FF9E1B","D57800","996017","6E4C1E","F2C75C","F1BE48","F1B434","ED8B00","CF7F00","A76D11","715C2A","F6BE00","F0B323","FEAD77","E6A65D","D38235","DC8633","C16C18","BD9B60","D69A2D","DB8A06","CD7925","AD6433","89532F","775135","D78825","D3832B","C67D30","B67233","A7662B","9E6A38","835D32","FCC89B","FDBE87","FDAA63","F68D2E","EA7600","D45D00","BE4D00","FECB8B","FFC27B","FFB25B","FF8200","E57200","BE6A14","9B5A1A","EFD19F","EFBE7D","ECA154","E87722","CB6015","A1561C","603D20","FFAE62","FF8F1C","FF6900","B94700","94450B","653819","FFB990","FFA06A","FF7F32","FF6A13","D86018","A65523","8B4720","FFBE9F","FF9D6E","FF7F41","FF671F","E35205","BE531C","73381D","DB864E","E07E3C","DC6B2F","DC582A","C05131","864A33","674736","FFA38B","FF8D6D","FF6A39","FC4C02","DC4405","A9431E","833921","FFB3AB","FF8674","FF5C39","FA4616","CF4520","963821","6B3529","C4622D","BA5826","AF5C37","9E5330","924C2E","7B4D35","5C4738","D4B59E","C07D59","B15533","9D432C","7C3A2D","6B3D2E","5C3D31","D14124","BD472A","B33D26","8D3F2B","83412C","7B4931","674230","E4D5D3","E1BBB4","D6938A","C26E60","A4493D","823B34","683431","DDBCB0","CA9A8E","BC8A7E","A37F74","866761","6B4C4C","583D3E","EABEB0","C09C83","B46A55","AB5C57","A45248","9A6A4F","8A391B","ECC3B2","ECBAA8","EAA794","E8927C","DA291C","9A3324","653024","FFB1BB","FF808B","FF585D","E03C31","BE3A34","81312F","FFA3B5","FF8DA1","F8485E","EE2737","D22630","AF272F","7C2529","FCAFC0","FB637E","F4364C","CB333B","A4343A","643335","C66E4E","C04C36","B7312C","AB2328","93272C","8A2A2B","802F2D","E1523D","C63527","A72B2A","9E2A2B","6D3332","633231","572D2D","E6BAA8","E56A54","E04E39","CD545B","B04A5A","9B2242","651D32","FABBCB","FC9BB3","F65275","E4002B","C8102E","A6192E","76232F","ECC7CD","E89CAE","DF4661","D50032","BA0C2F","9D2235","862633","F8A3BC","F67599","EF426F","E40046","BF0D3E","9B2743","782F40","F5B6CD","F59BBB","EF4A81","E0004D","C5003E","A6093D","8A1538","F5DADF","F7CED7","F9B5C4","F890A5","EF6079","E03E52","CB2C30","F2D4D7","F4C3CC","F2ACB9","E68699","D25B73","B83A4B","9E2A2F","ECB3CB","E782A9","E0457B","CE0037","A50034","861F41","6F263D","F99FC9","F57EB6","F04E98","E31C79","CE0F69","AC145A","7D2248","F4CDD4","E06287","E24585","B52555","A4123F","971B2F","6A2C3E","D6C9CA","C4A4A7","C16784","C63663","BC204B","912F46","7E2D40","EABEDB","E56DB1","DA1884","A50050","910048","6C1D45","936D73","934054","8E2C48","732E4A","672E45","582D40","502B3A","EF95CF","EB6FBD","DF1995","D0006F","AA0061","890C58","672146","F4A6D7","F277C6","E93CAC","C6007E","A20067","840B55","EAD3E2","E6BCD8","DFA0C9","D986BA","C6579A","AE2573","960051","E5CEDB","E3C8D8","DEBED2","C996B6","B06C96","994878","7C2855","E4C6D4","DCB6C9","D0A1BA","BE84A3","A76389","893B67","612141","EBBECB","E8B3C3","E4A9BB","D592AA","84344E","6F2C3F","572932","E2BCCB","DCA9BF","C9809E","B55C80","A73A64","9B3259","872651","E9CDD0","E4BEC3","D7A3AB","C48490","B46B7A","984856","893C47","F2C6CF","F1BDC8","E9A2B2","DC8699","8F3237","7F3035","5D2A2C","E9C4C7","E5BAC1","DAA5AD","C6858F","7A3E3A","6A3735","512F2E","DFC2C3","DBB7BB","CCA1A6","B07C83","9C6169","874B52","3F2021","F1A7DC","EC86D0","E45DBF","DB3EB1","C5299B","AF1685","80225F","EFBAE1","E277CD","D539B5","C800A1","B0008E","9E007E","830065","EAB8E4","E59BDC","DD7FD3","C724B1","BB16A3","A51890","80276C","A56E87","A83D72","991E66","8A1B61","722257","6A2A5B","5E2751","E7BAE4","DD9CDF","C964CF","AD1AAC","981D97","72246C","EBC6DF","E6BEDD","E2ACD7","D48BC8","93328E","833177","612C51","EEDAEA","CCAED0","D59ED7","B288B9","A277A6","9F5CC0","963CBD","D7A9E3","C98BDB","AC4FC6","9B26B6","87189D","772583","653165","948794","A2789C","A15A95","8E3A80","6E2B62","6A3460","5D3754","D5C2D8","C9B1D0","BA9CC5","A57FB2","642F6C","59315F","4B3048","DBCDD3","D0BEC7","C6B0BC","AF95A6","86647A","66435A","4A3041","D8C8D1","D3C0CD","BFA5B8","9B7793","7E5475","693C5E","512A44","DFC8E7","D7B9E4","CAA2DD","B580D1","8031A7","702F8A","572C5F","D6BFDD","C6A1CF","8C4799","6D2077","642667","5D285F","51284F","CBA3D8","B884CB","A05EB5","84329B","702082","671E75","5F2167","9991A4","8D6E97","7A4183","6B3077","653279","5E366E","5C4E63","C1A0DA","A77BCA","8246AF","5C068C","500778","470A68","3C1053","D7C6E6","C1A7E2","9063CD","753BBD","5F259F","582C83","512D6D","C5B4E3","AD96DC","9678D3","7D55C7","330072","2E1A47","B4B5DF","9595D2","7474C1","24135F","211551","201747","221C35","A7A4E0","8B84D7","685BC7","2E008B","280071","250E62","201547","6E7CA0","686E9F","615E9B","565294","514689","4C4184","535486","DDDAE8","B6B8DC","A7A2C3","8986CA","5D4777","4B384C","41273B","878CB4","7C7FAB","7566A0","6F5091","68478D","563D82","523178","E5E1E6","E0DBE3","C6BCD0","A192B2","7C6992","614B79","3F2A56","D8D7DF","C6C4D2","B3B0C4","8D89A5","595478","403A60","1E1A34","C5CFDA","BBC7D6","A2B2C8","8E9FBC","1B365D","1F2A44","1C1F2A","D9E1E2","A4BCC2","98A4AE","768692","425563","253746","131E29","B9D3DC","A3C7D2","8DB9CA","6BA4B8","003D4C","00313C","072B31","BFCED6","B7C9D3","A6BBC8","7A99AC","5B7F95","4F758B","081F2C","D1DDE6","C6D6E3","9BB8D3","7DA1C4","5E8AB4","236192","002E5D","DBE2E9","CED9E5","A7BCD6","7D9BC1","326295","003A70","002554","DDE5ED","C8D8EB","B1C9E8","7BA4DB","407EC9","003594","001A70","BDC5DB","89ABE3","8094DD","7BA6DE","5F8FB4","3A5DAE","606EB2","CBD3EB","9FAEE5","485CC7","1E22AA","171C8F","151F6D","141B4D","B8CCEA","5C88DA","0047BB","06038D","001871","001E62","071D49","C3D7EE","A7C6ED","307FE2","001A72","001E60","13294B","ABCAE9","8BB8E8","418FDE","012169","00205B","041E42","92C1E9","6CACE4","0072CE","0033A0","003087","002D72","0C2340","94A9CB","6787B7","426DA9","385E9D","2C5697","1D4F91","1D428A","C6DAE7","BDD6E6","A4C8E1","7BAFD4","003C71","003057","00263A","B9D9EB","9BCBEB","69B3E7","003DA5","002F6C","002855","041C2C","8DC8E8","62B5E5","009CDE","0057B8","004C97","003865","00263E","71C5E8","41B6E6","00A3E0","005EB8","004B87","003B5C","002A3A","4698CB","298FC2","0076A8","006298","005587","004976","01426A","99D6EA","5BC2E7","00A9E0","0077C8","00629B","004F71","003E51","7BA7BC","6399AE","4E87A0","41748D","34657F","165C7D","005776","BBDDE6","71B2C9","4298B5","0086BF","007DBA","00558C","002B49","9ADBE8","59CBE8","00B5E2","006BA6","00587C","003B49","A4DBE8","8BD3E6","4EC3E0","00AFD7","0095C8","0082BA","0067A0","48A9C5","009CBD","0085AD","007096","006A8E","00617F","005670","B8DDE1","9BD3DD","77C5D5","3EB1C8","0093B2","007396","005F83","6AD1E3","05C3DE","00A9CE","0092BC","007FA3","00677F","004851","68D2DF","00C1D5","00AEC7","008EAA","00778B","006272","004F59","63B1BC","00A7B5","0097A9","00859B","007D8A","007680","006269","B1E4E3","88DBDF","2DCCD3","009CA6","008C95","007377","005F61","A0D1CA","40C1AC","00B0B9","00A3AD","007398","005F86","005A70","7EDDD3","5CB8B2","279989","007681","487A7B","0D5257","244C5A","B6CFD0","ABC7CA","94B7BB","7FA9AE","4F868E","115E67","07272D","00968F","00857D","007672","006D68","00635B","005E5D","005151","9CDBD9","64CCC9","00B2A9","008675","007367","00685E","00534C","71DBD4","2AD2C9","00BFB3","00A499","008578","00594F","004C45","7CE0D3","2CD5C4","00C7B1","00B398","009681","007864","004E42","6DCDB8","49C5B1","00AB8E","009B77","008264","006A52","034638","B9DCD2","A1D6CA","86C8BC","6BBBAE","006F62","00594C","1D3C34","B5E3D8","A5DFD3","98DBCE","6BCABA","00816D","006C5B","173F35","ADCAB8","9ABEAA","85B09A","6FA287","28724F","205C40","284734","BFCEC2","A7BDB1","92ACA0","7F9C90","5C7F71","43695B","183028","BAC5B9","B0BDB0","A3B2A4","94A596","708573","5E7461","22372B","BCC9C5","B1C0BC","9DB0AC","829995","5D7975","3E5D58","18332F","D1E0D7","B7CDC2","9AB9AD","789F90","507F70","285C4D","13322B","A7E6D7","8CE2D0","3CDBC0","009775","007B5F","00664F","8FD6BD","6ECEB2","00B388","00965E","007A53","006747","115740","50A684","00966C","008755","007B4B","006F44","006845","005844","7AE1BF","47D7AC","00C389","00AF66","007749","006341","154734","A0DAB3","91D6AC","71CC98","009A44","00843D","046A38","2C5234","A2E4B8","8FE2B0","80E0A7","00B140","009639","007A33","215732","9BE3BF","26D07C","00BF6F","00B74F","009F4D","275D38","00573F","4B9560","228848","007A3E","007041","286140","36573B","395542","6BA539","48A23F","319B42","3A913F","44883E","4A773C","44693D","ADDC91","A1D884","6CC24A","43B02A","509E2F","4C8C2B","4A7729","D0DEBB","BCE194","8EDD65","78D64B","74AA50","719949","79863C","C2E189","B7DD79","A4D65E","78BE20","64A70B","658D1B","546223","D4EB8E","CDEA80","C5E86C","97D700","84BD00","7A9A01","59621D","C4D6A4","BCD19B","B7CE95","A9C47F","789D4A","67823A","4E5B31","D0D1AB","C6C89B","BABD8B","A2A569","8A8D4A","6D712E","3D441E","D2CE9E","CBC793","C0BB87","AFA96E","A09958","89813D","555025","C3C6A8","B3B995","A3AA83","899064","737B4C","5E6738","3E4827","BFCC80","BBC592","9CAF88","8F993E","76881D","7A7256","5B6236","BABC16","ABAD23","999B30","888D30","7C8034","727337","656635","E2E868","DBE442","CEDC00","C4D600","A8AD00","949300","787121","E9EC6B","E3E935","E0E721","D0DF00","B5BD00","9A9500","827A04","E3E48D","E0E27C","DBDE70","D2D755","B7BF10","8E8C13","625D20","F0EC74","EDE939","ECE81A","E1E000","BFB800","ADA400","A09200","F3EA5D","F3E500","EFDF00","EEDC00","BBA600","9A8700","685C20","F1EB9C","F0E991","F0E87B","EDE04B","EADA24","E1CD00","CFB500","EBE49A","E9E186","E6DE77","E1D555","D7C826","C4B000","B39B00","E9DF97","E4D77E","DECD63","D9C756","B89D18","A28E2A","695B24","DCD59A","D6CF8D","D0C883","C0B561","AC9F3C","9F912A","8A7B19","CAB64B","CFB023","C1A01E","A08629","897630","736635","675E33","D4C304","C4B200","91852C","747136","5D6439","585C3B","535435","BBB323","B4A91F","AA9D2E","8F7E35","716135","635939","4E4934","D5CB9F","CFC493","C5B783","B3A369","998542","8C7732","614F25","CAC7A7","BFBB98","B0AA7E","9B945F","594A25","524727","4A412A","F1E6B2","DFD1A7","D9C89E","CEB888","A89968","94795D","816040","DDCBA4","D3BC8D","C6AA76","B9975B","8B5B29","744F28","5C462B","EFDBB2","FCD299","E1B87F","D6A461","C6893F","B77729","A6631B","EDC8A3","E7B78A","DDA46F","C88242","B36924","934D11","7D3F16","F3CFB3","F1C6A7","F0BF9B","E59E6D","B86125","A45A2A","693F23","E0C09F","D9B48F","CDA077","B58150","9E652E","774212","623412","E0C6AD","DCBFA6","CDA788","BF9474","AD7C59","946037","4F2C1D","E1B7A7","D5A286","C58B68","99552B","85431E","6D4F47","5E4B3C","D7C4B7","CDB5A7","C0A392","AE8A79","956C58","7C4D3A","5B3427","DBC8B6","D3BBA8","C6A992","AA8066","703F2A","623B2A","4E3629","D6D2C4","C5B9AC","B7A99A","A39382","7A6855","63513D","473729","D1CCBD","B7B09C","A69F88","A7ACA2","949A90","8E9089","4B4F54","D0D3D4","C1C6C8","A2AAAD","7C878E","5B6770","333F48","1D252D","C7C9C7","B2B4B2","9EA2A2","898D8D","707372","54585A","25282A","BEC6C4","A2ACAB","919D9D","717C7D","505759","3F4444","373A36","BABBB1","A8A99E","919388","7E7F74","65665C","51534A","212322","C4BFB6","AFA9A0","9D968D","8C857B","776E64","696158","C4BCB7","B2A8A2","978C87","857874","746661","5E514D","382F2D","D0C4C5","C1B2B6","AB989D","7B6469","584446","453536","382E2C","D7D2CB","CBC4BC","BFB8AF","B6ADA5","ACA39A","A59C94","968C83","8C8279","83786F","796E65","6E6259","D9D9D6","D0D0CE","C8C9C7","BBBCBC","B1B3B3","A7A8AA","97999B","888B8D","75787B","63666A","53565A","332F21","212721","31261D","3E2B2E","101820","3D3935"],Ze=Ot.map(n=>[parseInt(n.substring(0,2),16),parseInt(n.substring(2,4),16),parseInt(n.substring(4,6),16)]);function _i(n){const t=le.indexOf(n);return t>=0?Ot[t]:""}function Jn(n){const t=Ot.indexOf(n);return t>=0?le[t]:""}function Xi(n,t=64){const e=[],a=[],r=Jn(n);r&&e.push({pms:r,hex:n,distance:0});const i=parseInt(n.substring(0,2),16),o=parseInt(n.substring(2,4),16),s=parseInt(n.substring(4,6),16);let l,c,d;for(let u=0;u<Ot.length;u++){l=Ze[u][0],c=Ze[u][1],d=Ze[u][2];const A=Math.sqrt(Math.pow(i-l,2)+Math.pow(o-c,2)+Math.pow(s-d,2));a.push(A)}for(let u=0;u<a.length;u++)a[u]<=t&&!e.some(A=>A.pms===le[u])&&e.push({pms:le[u],hex:Ot[u],distance:a[u]});return e.sort((u,A)=>u.distance-A.distance)}const Zi=le.map((n,t)=>({pms:n,hex:Ot[t]})),to=new wi(Zi,{keys:["pms"]});function eo(n,t){return to.search(n,t?{limit:t}:void 0)}let qt=null;function Kn(n){if(n.startsWith("#"))return dn(n);if(!document)throw new Error("browserColorToHex is only supported on browsers");if(qt||(qt=document.createElement("canvas").getContext("2d")),!qt)throw new Error("Failed to create canvas context required to convert colors");qt.fillStyle=n;const t=dn(qt.fillStyle);return t||console.error(`Unknown browser color ${n}`),t}function dn(n){const t=n.substring(1).toUpperCase();return t.length===6?t:t.length===3?`${t[0]}${t[0]}${t[1]}${t[1]}${t[2]}${t[2]}`:""}const Be=n=>{const t=_n(n.spotColor);return t?`${n.browserValue} ${t}`:n.browserValue},_n=n=>{if(!n)return"";if(n.profileName.includes("/")&&n.profileName.includes(".icc")){const t=n.profileName.replace(/\s/g,"-"),e=t.lastIndexOf("/");return`icc-named-color(${t.slice(e+1).slice(0,-4)}, ${n.namedColor})`}return`icc-named-color(${n.profileName}, ${n.namedColor})`},fa=n=>{const t=n.split(/[ ](?=[^)]*?(?:\(|$))/);if(t.length===0)return{browserValue:"#000000"};if(t.length===1)return{browserValue:t[0]};const e=t[1].match(/\(([^)]+)\)/gm);if(!e)throw new Error("Unhandled state of color value in SVG");const a=e[0].replace(/[() ]/g,"").split(",");return{browserValue:t[0],spotColor:{profileName:a[0],namedColor:a[1]}}},ao=["fill","stroke"],$t=(n,t)=>{t(n),n.children.length>0&&Array.from(n.children).forEach(e=>$t(e,t))},no=(n,t)=>{try{return n.matches(t)}catch{return n.classList.contains(t.substring(1))}},We=(n,t=!1)=>{!t&&n.setAttribute("preserveAspectRatio","none");const e=[];$t(n,a=>{if(a.tagName==="script"){a.remove();return}if(a.tagName==="style"){try{kn.parse(a.innerHTML).stylesheet?.rules.forEach(o=>{e.push(o)}),a.remove()}catch(i){console.error(i)}return}const r=a.attributes.getNamedItem("style")?.value?.trim();if(r){const i=[];r.split(";").forEach(s=>{const l=s.trim();if(l){const[c,d]=l.split(":"),u=c.toLowerCase();ao.indexOf(u)>-1?a.setAttribute(u,d.trim()):i.push(l)}}),i.length>0?a.setAttribute("style",i.join(";")):a.removeAttribute("style")}}),$t(n,a=>{e.forEach(r=>{r.selectors?.forEach(i=>{no(a,i)&&r.declarations?.forEach(o=>{o.property&&o.value&&a.setAttribute(o.property,o.value)})})})})},ro=n=>{const t=/pt|pc|mm|cm|in/gm,e=n.getAttribute("viewBox"),a=n.getAttribute("width"),r=n.getAttribute("height");if(!e)throw new Error("viewBox not specified on SVG!");a&&n.setAttribute("width",a.replace(t,"")),r&&n.setAttribute("height",r.replace(t,""))},Xn=n=>ot().parseFromString(n,"image/svg+xml").firstElementChild,io=(n,t,e)=>{n.setAttribute("height",`${e}px`),n.setAttribute("width",`${t}px`)},Zn=(n,t,e)=>{$t(n,a=>{const r=a.attributes.getNamedItem("fill");r&&r.value!=="none"&&a.classList.forEach(o=>{if(o.startsWith("spiff-fill")){const s=t[o.replace("spiff-fill-","")];if(s)a.setAttribute("fill",e?Be(s):s.browserValue);else{const l=t[o];l&&a.setAttribute("fill",e?Be(l):l.browserValue)}}});const i=a.attributes.getNamedItem("stroke");i&&i.value!=="none"&&a.classList.forEach(o=>{if(o.startsWith("spiff-stroke")){const s=t[o.replace("spiff-stroke-","")];if(s)a.setAttribute("stroke",e?Be(s):s.browserValue);else{const l=t[o];l&&a.setAttribute("fill",e?Be(l):l.browserValue)}}})})},tr=n=>St().serializeToString(n),Na=(n,t,e,a,r)=>{const i=Xn(n);if(!i)throw new Error("Failed to read SVG.");return io(i,t,e),Zn(i,a,r),tr(i)},He=(n,t,e)=>{const a=Xn(n);if(!a)throw new Error("Failed to read SVG.");return Zn(a,t,e),tr(a)},oo=n=>{const t=/<svg.*<\/svg>/s,e=n.match(t)||[],a=e?.length>0?e[0]:"";return ot().parseFromString(a,"image/svg+xml")},rt=async n=>{const e=oo(n).firstElementChild;if(!e)throw new Error("Failed to read SVG.");We(e);const a={};$t(e,o=>{const s=o.attributes.getNamedItem("fill");if(s&&s.value!=="none"&&!s.value.startsWith("url(")){const c=fa(s.value),d=c.browserValue.replace(/\W/g,""),u=`spiff-fill-${d}`;o.setAttribute("fill",c.browserValue),o.classList.add(u),a[d]=c}const l=o.attributes.getNamedItem("stroke");if(l&&l.value!=="none"&&!l.value.startsWith("url(")){const c=fa(l.value),d=c.browserValue.replace(/\W/g,""),u=`spiff-stroke-${d}`;o.classList.add(u),o.setAttribute("stroke",c.browserValue),a[d]=c}});const i=St().serializeToString(e);return{colors:a,svg:i}},so=f.gql`
2
2
  fragment AssetMetadataFields on Asset {
3
3
  metadata {
4
4
  key
5
5
  value
6
6
  }
7
7
  }
8
- `,he=n=>C.gql`
9
- ${n&&oo||""}
8
+ `,me=n=>f.gql`
9
+ ${n&&so||""}
10
10
  fragment AssetFields on Asset {
11
11
  name
12
12
  key
@@ -48,14 +48,14 @@
48
48
  }
49
49
  ${n&&"...AssetMetadataFields"||""}
50
50
  }
51
- `,so=C.gql`
52
- ${he(!1)}
51
+ `,lo=f.gql`
52
+ ${me(!1)}
53
53
  query GetAssets($keys: [String]!) {
54
54
  assets(keys: $keys) {
55
55
  ...AssetFields
56
56
  }
57
57
  }
58
- `,Na=C.gql`
58
+ `,Qa=f.gql`
59
59
  fragment MaterialFields on Material {
60
60
  id
61
61
  name
@@ -102,14 +102,14 @@
102
102
  fileLink
103
103
  }
104
104
  }
105
- `,lo=C.gql`
106
- ${Na}
105
+ `,co=f.gql`
106
+ ${Qa}
107
107
  query GetMaterials($ids: [String]) {
108
108
  materials(id: $ids) {
109
109
  ...MaterialFields
110
110
  }
111
111
  }
112
- `,co=C.gql`
112
+ `,uo=f.gql`
113
113
  mutation CreateAsset($name: String!, $type: String!, $mimeType: String!, $anonymous: Boolean, $temporary: Boolean) {
114
114
  assetCreate(name: $name, type: $type, mimeType: $mimeType, anonymous: $anonymous, temporary: $temporary) {
115
115
  uploadUrl
@@ -123,14 +123,14 @@
123
123
  }
124
124
  }
125
125
  }
126
- `,uo=C.gql`
127
- ${he(!1)}
126
+ `,Ao=f.gql`
127
+ ${me(!1)}
128
128
  mutation RemoveBackgroundFromAsset($key: String!) {
129
129
  assetRemoveBackground(key: $key) {
130
130
  ...AssetFields
131
131
  }
132
132
  }
133
- `,Me=async n=>(await S.getShadowGraphqlClient().query({query:so,errorPolicy:"all",fetchPolicy:"no-cache",variables:{keys:n}})).data.assets,Ao=async n=>(await S.getShadowGraphqlClient().query({query:lo,errorPolicy:"all",variables:{ids:n}})).data.materials,ho=async(n,t,e,a,r)=>(await S.getShadowGraphqlClient().mutate({mutation:co,errorPolicy:"all",fetchPolicy:"no-cache",variables:{name:n,type:t,mimeType:e,anonymous:a,temporary:r}})).data?.assetCreate;class go{constructor(){this.cache=new Map,this.bgrmProcessCache=new Map,this.materialCache=new Map,this.loadImageAsFileInfo=async t=>{const e=await t.arrayBuffer(),a=await Ae(e),r=(i,o)=>{const s=atob(i.split(",")[1]),l=[];for(let c=0;c<s.length;c++)l.push(s.charCodeAt(c));return new Blob([new Uint8Array(l)],{type:o})};return{name:t.name.substring(t.name.lastIndexOf("/")+1),blob:r(a.dataUrl,t.type)}}}async getLocalOrFromServer(t){if(this.cache.has(t)){const r=this.cache.get(t);if(!r)throw new N("Failed to get asset from cache!");return r}const a=(async()=>(await Me([t]))[0])();return this.cache.set(t,a),a}async getFromServer(t){const a=(async()=>(await Me([t]))[0])();return this.cache.set(t,a),a}keyFromURL(t){let e;try{e=new URL(t).pathname}catch{e=void 0}return e!==void 0&&e.startsWith("/")&&(e=e.replace("/","")),e?.split("?")[0]}cacheAsset(t){if(!t.key)throw new N("Asset has no key!");this.cache.has(t.key)||this.cache.set(t.key,Promise.resolve(t))}cacheMaterial(t){if(!t.id)throw new N("Material has no id!");this.materialCache.has(t.id)||this.materialCache.set(t.id,Promise.resolve(t))}async getMaterialLocalOrFromServer(t){if(this.materialCache.has(t))return this.materialCache.get(t);const a=(async()=>(await Ao([t]))[0])();return this.materialCache.set(t,a),a}async uploadAssetWithProgress(t,e,a,r,i){const o=await this.dispatchCreateAssetRequest(t,e,r,i);if(!o)throw new Error("Failed to create asset.");return await new Promise((s,l)=>{const c=new XMLHttpRequest;c.open("PUT",o.assetResponse.uploadUrl,!0),c.setRequestHeader("Content-Type",o.mimeType),c.setRequestHeader("Cache-Control","public,max-age=31536000,immutable"),c.upload.onprogress=d=>{d.lengthComputable&&a(d.loaded*100/d.total)},c.onload=()=>{const d=o.assetResponse.asset;At.add(o.assetResponse.asset),s(d)},c.onerror=l,this.postProcessFileUpload(t,o.mimeType).then(d=>c.send(d.blob)).catch(l)}),this.cacheAsset(o.assetResponse.asset),o.assetResponse.asset}async uploadAsset(t,e,a,r){return this.uploadAssetWithProgress(t,e,()=>{},a,r)}async uploadFile(t,e){const r=this.isRaster(t)?ae.Image:ae.Illustration,i=await this.loadImageAsFileInfo(t);return await this.uploadAssetWithProgress(i,r,e,!0)}async removeBackgroundFromAsset(t){const e=t.key;if(this.bgrmProcessCache.has(e))return this.bgrmProcessCache.get(e);if(Y.has(e)){const i=this.getLocalOrFromServer(Y.get(e));return this.bgrmProcessCache.set(e,i),i}const r=(async()=>{const i=await S.getShadowGraphqlClient().mutate({mutation:uo,fetchPolicy:"no-cache",errorPolicy:"all",variables:{key:e}});if(this.bgrmProcessCache.delete(e),!i.data?.assetRemoveBackground?.key)throw new Error("Failed to remove background from image");return At.add(i.data.assetRemoveBackground),Y.add(e,i.data.assetRemoveBackground.key),this.cache.set(i.data.assetRemoveBackground.key,Promise.resolve(i.data.assetRemoveBackground)),i.data.assetRemoveBackground})();return this.bgrmProcessCache.set(e,r),r}removePersistedAsset(t){At.remove(t),Y.delete(t),Y.deleteForBgRemovedKey(t)}getPersistedAssets(){return At.list()}registerPersistedAssetListener(t){At.addCallback(t)}unRegisterPersistedAssetListener(t){At.removeCallback(t)}isRaster(t){return!(t.type==="image/svg+xml"||t.type==="application/pdf"||t.type==="application/postscript")}async postProcessFileUpload(t,e){if(e==="image/svg+xml"){const a=await t.blob.text(),o=new window.DOMParser().parseFromString(a,"image/svg+xml").documentElement;if(!o)throw new Et("Failed to read SVG.");no(o);const l=yt().serializeToString(o);return{name:t.name,blob:new Blob([l],{type:"image/svg+xml"})}}return t}async dispatchCreateAssetRequest(t,e,a,r){const i=t.blob.type?t.blob.type:this.guessMIME(t.name),o=await ho(t.name,e,i,a,r);if(o)return{assetResponse:o,mimeType:i}}guessMIME(t){const e=t.split(".").pop();switch(e){case"glb":return"model/gltf-binary";case"ttf":return"font/ttf";case"mkv":return"video/x-matroska";default:throw new N("Unexpected mimetype: "+e)}}}const zt="persistentAssets",ct=class ct{static add(t){if(!t.fileLink){console.error("Failed to find cdn link on asset, cannot persist!");return}const e=new Map;e.set(t.key||"",t.fileLink);const a=k.getMap(zt);a&&a.forEach((r,i)=>{e.set(i,r)}),k.setMap(zt,e),ct.executeCallbacks()}static remove(t){const e=k.getMap(zt);if(!e)return;const a=Array.from(e.entries()).find(r=>r[0]===t);a&&(e.delete(a[0]),k.setMap(zt,e),ct.executeCallbacks())}static list(){const t=k.getMap(zt);return t?Array.from(t.entries()).map(e=>({assetKey:e[0],src:e[1]})):[]}static addCallback(t){ct.callbacks.push(t)}static removeCallback(t){ct.callbacks=ct.callbacks.filter(e=>e!==t)}static executeCallbacks(){ct.callbacks.forEach(t=>t())}};ct.callbacks=[];let At=ct;const dn="bgrmPersistentAssets";class Y{static has(t){return Y.getMap().has(t)}static get(t){return Y.getMap().get(t)}static keys(){return Y.getMap().keys()}static values(){return Y.getMap().values()}static add(t,e){const a=Y.getMap();a.set(t,e),Y.setMap(a)}static delete(t){const e=Y.getMap();e.delete(t),Y.setMap(e)}static deleteForBgRemovedKey(t){const e=Y.getMap(),a=Array.from(e.keys()).find(r=>e.get(r)===t);a&&(e.delete(a),Y.setMap(e))}static getMap(){return k.getMap(dn)||new Map}static setMap(t){k.setMap(dn,t)}}const O=new go;class mo{constructor(){this.cache={},this.disabled=!1}get(t){if(this.disabled)return;const e=JSON.stringify(t);return this.cache[e]}set(t,e){if(this.disabled)return e;const a=JSON.stringify(t);return this.cache[a]=e,e}disable(t){this.disabled=t}}const $t=new mo,tr=C.gql`
133
+ `,Te=async n=>(await y.getShadowGraphqlClient().query({query:lo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{keys:n}})).data.assets,ho=async n=>(await y.getShadowGraphqlClient().query({query:co,errorPolicy:"all",variables:{ids:n}})).data.materials,go=async(n,t,e,a,r)=>(await y.getShadowGraphqlClient().mutate({mutation:uo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{name:n,type:t,mimeType:e,anonymous:a,temporary:r}})).data?.assetCreate;class mo{constructor(){this.cache=new Map,this.bgrmProcessCache=new Map,this.materialCache=new Map,this.loadImageAsFileInfo=async t=>{const e=await t.arrayBuffer(),a=await ge(e),r=(i,o)=>{const s=atob(i.split(",")[1]),l=[];for(let c=0;c<s.length;c++)l.push(s.charCodeAt(c));return new Blob([new Uint8Array(l)],{type:o})};return{name:t.name.substring(t.name.lastIndexOf("/")+1),blob:r(a.dataUrl,t.type)}}}async getLocalOrFromServer(t){if(this.cache.has(t)){const r=this.cache.get(t);if(!r)throw new Q("Failed to get asset from cache!");return r}const a=(async()=>(await Te([t]))[0])();return this.cache.set(t,a),a}async getFromServer(t){const a=(async()=>(await Te([t]))[0])();return this.cache.set(t,a),a}keyFromURL(t){let e;try{e=new URL(t).pathname}catch{e=void 0}return e!==void 0&&e.startsWith("/")&&(e=e.replace("/","")),e?.split("?")[0]}cacheAsset(t){if(!t.key)throw new Q("Asset has no key!");this.cache.has(t.key)||this.cache.set(t.key,Promise.resolve(t))}cacheMaterial(t){if(!t.id)throw new Q("Material has no id!");this.materialCache.has(t.id)||this.materialCache.set(t.id,Promise.resolve(t))}async getMaterialLocalOrFromServer(t){if(this.materialCache.has(t))return this.materialCache.get(t);const a=(async()=>(await ho([t]))[0])();return this.materialCache.set(t,a),a}async uploadAssetWithProgress(t,e,a,r,i){const o=await this.dispatchCreateAssetRequest(t,e,r,i);if(!o)throw new Error("Failed to create asset.");return await new Promise((s,l)=>{const c=new XMLHttpRequest;c.open("PUT",o.assetResponse.uploadUrl,!0),c.setRequestHeader("Content-Type",o.mimeType),c.setRequestHeader("Cache-Control","public,max-age=31536000,immutable"),c.upload.onprogress=d=>{d.lengthComputable&&a(d.loaded*100/d.total)},c.onload=()=>{const d=o.assetResponse.asset;ht.add(o.assetResponse.asset),s(d)},c.onerror=l,this.postProcessFileUpload(t,o.mimeType).then(d=>c.send(d.blob)).catch(l)}),this.cacheAsset(o.assetResponse.asset),o.assetResponse.asset}async uploadAsset(t,e,a,r){return this.uploadAssetWithProgress(t,e,()=>{},a,r)}async uploadFile(t,e){const r=this.isRaster(t)?re.Image:re.Illustration,i=await this.loadImageAsFileInfo(t);return await this.uploadAssetWithProgress(i,r,e,!0)}async removeBackgroundFromAsset(t){const e=t.key;if(this.bgrmProcessCache.has(e))return this.bgrmProcessCache.get(e);if(Y.has(e)){const i=this.getLocalOrFromServer(Y.get(e));return this.bgrmProcessCache.set(e,i),i}const r=(async()=>{const i=await y.getShadowGraphqlClient().mutate({mutation:Ao,fetchPolicy:"no-cache",errorPolicy:"all",variables:{key:e}});if(this.bgrmProcessCache.delete(e),!i.data?.assetRemoveBackground?.key)throw new Error("Failed to remove background from image");return ht.add(i.data.assetRemoveBackground),Y.add(e,i.data.assetRemoveBackground.key),this.cache.set(i.data.assetRemoveBackground.key,Promise.resolve(i.data.assetRemoveBackground)),i.data.assetRemoveBackground})();return this.bgrmProcessCache.set(e,r),r}removePersistedAsset(t){ht.remove(t),Y.delete(t),Y.deleteForBgRemovedKey(t)}getPersistedAssets(){return ht.list()}registerPersistedAssetListener(t){ht.addCallback(t)}unRegisterPersistedAssetListener(t){ht.removeCallback(t)}isRaster(t){return!(t.type==="image/svg+xml"||t.type==="application/pdf"||t.type==="application/postscript")}async postProcessFileUpload(t,e){if(e==="image/svg+xml"){const a=await t.blob.text(),o=new window.DOMParser().parseFromString(a,"image/svg+xml").documentElement;if(!o)throw new bt("Failed to read SVG.");ro(o);const l=St().serializeToString(o);return{name:t.name,blob:new Blob([l],{type:"image/svg+xml"})}}return t}async dispatchCreateAssetRequest(t,e,a,r){const i=t.blob.type?t.blob.type:this.guessMIME(t.name),o=await go(t.name,e,i,a,r);if(o)return{assetResponse:o,mimeType:i}}guessMIME(t){const e=t.split(".").pop();switch(e){case"glb":return"model/gltf-binary";case"ttf":return"font/ttf";case"mkv":return"video/x-matroska";default:throw new Q("Unexpected mimetype: "+e)}}}const Gt="persistentAssets",ct=class ct{static add(t){if(!t.fileLink){console.error("Failed to find cdn link on asset, cannot persist!");return}const e=new Map;e.set(t.key||"",t.fileLink);const a=M.getMap(Gt);a&&a.forEach((r,i)=>{e.set(i,r)}),M.setMap(Gt,e),ct.executeCallbacks()}static remove(t){const e=M.getMap(Gt);if(!e)return;const a=Array.from(e.entries()).find(r=>r[0]===t);a&&(e.delete(a[0]),M.setMap(Gt,e),ct.executeCallbacks())}static list(){const t=M.getMap(Gt);return t?Array.from(t.entries()).map(e=>({assetKey:e[0],src:e[1]})):[]}static addCallback(t){ct.callbacks.push(t)}static removeCallback(t){ct.callbacks=ct.callbacks.filter(e=>e!==t)}static executeCallbacks(){ct.callbacks.forEach(t=>t())}};ct.callbacks=[];let ht=ct;const un="bgrmPersistentAssets";class Y{static has(t){return Y.getMap().has(t)}static get(t){return Y.getMap().get(t)}static keys(){return Y.getMap().keys()}static values(){return Y.getMap().values()}static add(t,e){const a=Y.getMap();a.set(t,e),Y.setMap(a)}static delete(t){const e=Y.getMap();e.delete(t),Y.setMap(e)}static deleteForBgRemovedKey(t){const e=Y.getMap(),a=Array.from(e.keys()).find(r=>e.get(r)===t);a&&(e.delete(a),Y.setMap(e))}static getMap(){return M.getMap(un)||new Map}static setMap(t){M.setMap(un,t)}}const $=new mo;class po{constructor(){this.cache={},this.disabled=!1}get(t){if(this.disabled)return;const e=JSON.stringify(t);return this.cache[e]}set(t,e){if(this.disabled)return e;const a=JSON.stringify(t);return this.cache[a]=e,e}disable(t){this.disabled=t}}const Ut=new po,er=f.gql`
134
134
  fragment OptionFields on Option {
135
135
  id
136
136
  name
@@ -171,16 +171,16 @@
171
171
  ...AssetFields
172
172
  }
173
173
  }
174
- `,po=C.gql`
175
- ${he(!1)}
176
- ${Na}
177
- ${tr}
174
+ `,fo=f.gql`
175
+ ${me(!1)}
176
+ ${Qa}
177
+ ${er}
178
178
  query GetOptions($ids: [String]!) {
179
179
  options(ids: $ids) {
180
180
  ...OptionFields
181
181
  }
182
182
  }
183
- `,fo=async n=>{const t=await S.getShadowGraphqlClient().query({query:po,errorPolicy:"all",variables:{ids:n}});return t.data.options.forEach(e=>{e.defaultVariant?.asset&&O.cacheAsset(e.defaultVariant.asset),e.colorProfile&&O.cacheAsset(e.colorProfile),e.variants?.forEach(a=>{a.asset&&O.cacheAsset(a.asset),a.thumbnail&&O.cacheAsset(a.thumbnail),a.material&&O.cacheMaterial(a.material)})}),t.data.options},Co=async(n,t)=>(await t).find(a=>a.id===n),wo=async n=>{const t=n.map(o=>$t.get({id:o})),e=n.filter((o,s)=>t[s]===void 0);if(e.length===0)return Promise.all(t);const a=fo(e),r=e.map(o=>$t.set({id:o},Co(o,a))),i=t.filter(o=>o!==void 0);return await Promise.all(i.concat(r))};class yo{constructor(){this.getSelectedVariant=(t,e)=>{if(!(!t||e.length===0))return t.variants?.find(a=>a.id===e[0])}}async getOption(t){return(async()=>{const r=(await wo([t]))[0];if(r)return r})()}async getAssetTileImageForVariant(t){const e=t.thumbnail;if(e){const r=e.versions?.find(o=>o.name==="thumbnail"),i=e.fileLink;return r?.link||i}const a=t.asset;if(a){const r=a.versions?.find(o=>o.name==="thumbnail"),i=a.fileLink;return r?.link||i}return t.material?t.material.id:""}getDefaultVariant(t){const e=t.variants;if(e){if(e.length===1)return e[0];if(t.defaultVariant!==void 0)return e.find(a=>a.id===t.defaultVariant?.id)}}}const j=new yo,er=C.gql`
183
+ `,Co=async n=>{const t=await y.getShadowGraphqlClient().query({query:fo,errorPolicy:"all",variables:{ids:n}});return t.data.options.forEach(e=>{e.defaultVariant?.asset&&$.cacheAsset(e.defaultVariant.asset),e.colorProfile&&$.cacheAsset(e.colorProfile),e.variants?.forEach(a=>{a.asset&&$.cacheAsset(a.asset),a.thumbnail&&$.cacheAsset(a.thumbnail),a.material&&$.cacheMaterial(a.material)})}),t.data.options},wo=async(n,t)=>(await t).find(a=>a.id===n),yo=async n=>{const t=n.map(o=>Ut.get({id:o})),e=n.filter((o,s)=>t[s]===void 0);if(e.length===0)return Promise.all(t);const a=Co(e),r=e.map(o=>Ut.set({id:o},wo(o,a))),i=t.filter(o=>o!==void 0);return await Promise.all(i.concat(r))};class So{constructor(){this.getSelectedVariant=(t,e)=>{if(!(!t||e.length===0))return t.variants?.find(a=>a.id===e[0])}}async getOption(t){return(async()=>{const r=(await yo([t]))[0];if(r)return r})()}async getAssetTileImageForVariant(t){const e=t.thumbnail;if(e){const r=e.versions?.find(o=>o.name==="thumbnail"),i=e.fileLink;return r?.link||i}const a=t.asset;if(a){const r=a.versions?.find(o=>o.name==="thumbnail"),i=a.fileLink;return r?.link||i}return t.material?t.material.id:""}getDefaultVariant(t){const e=t.variants;if(e){if(e.length===1)return e[0];if(t.defaultVariant!==void 0)return e.find(a=>a.id===t.defaultVariant?.id)}}}const W=new So,ar=f.gql`
184
184
  fragment ActiveIntegrationFields on Integration {
185
185
  id
186
186
  logo
@@ -199,7 +199,7 @@
199
199
  currencyCode
200
200
  }
201
201
  }
202
- `,ge=C.gql`
202
+ `,Vt=f.gql`
203
203
  fragment AdditionalIntegrationProductFields on IntegrationProduct {
204
204
  id
205
205
  product {
@@ -217,7 +217,7 @@
217
217
  preloadImageUrl
218
218
  }
219
219
  }
220
- `,ar=C.gql`
220
+ `,nr=f.gql`
221
221
  fragment RecipientFields on Recipient {
222
222
  id
223
223
  firstName
@@ -238,7 +238,7 @@
238
238
  customField5
239
239
  conversionConfigurationId
240
240
  }
241
- `,Lt=C.gql`
241
+ `,zt=f.gql`
242
242
  fragment ConversionConfigurationFields on ConversionConfiguration {
243
243
  id
244
244
  partnerId
@@ -267,10 +267,10 @@
267
267
  }
268
268
  }
269
269
  }
270
- `,So=C.gql`
271
- ${ge}
272
- ${ar}
273
- ${Lt}
270
+ `,vo=f.gql`
271
+ ${Vt}
272
+ ${nr}
273
+ ${zt}
274
274
  mutation CreateTransactions(
275
275
  $inputs: [TransactionCreateInput]!
276
276
  $marketplaceThemeInstallId: String
@@ -352,7 +352,7 @@
352
352
  }
353
353
  }
354
354
  }
355
- `,nr=C.gql`
355
+ `,rr=f.gql`
356
356
  fragment StakeholderFields on Stakeholder {
357
357
  id
358
358
  type
@@ -360,7 +360,7 @@
360
360
  authorizationNote
361
361
  authorizationStatus
362
362
  }
363
- `,rr=C.gql`
363
+ `,ir=f.gql`
364
364
  fragment TransactionShareActionFields on TransactionShareAction {
365
365
  id
366
366
  title
@@ -369,13 +369,90 @@
369
369
  precedence
370
370
  url
371
371
  }
372
- `,vo=C.gql`
373
- ${ge}
374
- ${nr}
372
+ `,Eo=f.gql`
373
+ ${Vt}
374
+ ${zt}
375
+ query ReadProducts($ids: [String!]!) {
376
+ products(ids: $ids) {
377
+ id
378
+ basePrice
379
+ enabled
380
+ minimumOrderQuantity
381
+ name
382
+ description
383
+ partner {
384
+ id
385
+ name
386
+ currencyCode
387
+ customerDetailsPromptMarkdown
388
+ }
389
+ productImages {
390
+ id
391
+ precedence
392
+ asset {
393
+ key
394
+ fileLink
395
+ name
396
+ type
397
+ versions {
398
+ name
399
+ link
400
+ }
401
+ }
402
+ }
403
+ integrationProducts {
404
+ id
405
+ integration {
406
+ id
407
+ type
408
+ }
409
+ externalProductId
410
+ externalVariantId
411
+ additionalExternalProductId
412
+ additionalExternalVariantId
413
+ additionalIntegrationProduct {
414
+ ...AdditionalIntegrationProductFields
415
+ }
416
+ }
417
+ profanities {
418
+ id
419
+ word
420
+ }
421
+ sku
422
+ skuCode
423
+ weight
424
+ workflows {
425
+ id
426
+ friendlyName
427
+ isPresent
428
+ workflowName
429
+ imageUrl
430
+ }
431
+ imageUrl
432
+ modelUrl
433
+ overlayImageUrl
434
+ preloadImageUrl
435
+ promptForCustomerDetails
436
+ conversionConfiguration {
437
+ ...ConversionConfigurationFields
438
+ }
439
+ productTags {
440
+ id
441
+ name
442
+ }
443
+ priceBreaks {
444
+ id
445
+ minQty
446
+ percentage
447
+ }
448
+ }
449
+ }
450
+ `,bo=f.gql`
451
+ ${Vt}
375
452
  ${rr}
376
- ${er}
453
+ ${ir}
377
454
  ${ar}
378
- ${Lt}
455
+ ${nr}
379
456
  query ReadTransactions($ids: [String]!) {
380
457
  transactions(ids: $ids) {
381
458
  customLogoLink
@@ -421,78 +498,9 @@
421
498
  recipient {
422
499
  ...RecipientFields
423
500
  }
501
+ # productId
424
502
  product {
425
503
  id
426
- basePrice
427
- enabled
428
- minimumOrderQuantity
429
- name
430
- description
431
- partner {
432
- id
433
- name
434
- currencyCode
435
- customerDetailsPromptMarkdown
436
- }
437
- productImages {
438
- id
439
- precedence
440
- asset {
441
- key
442
- fileLink
443
- name
444
- type
445
- versions {
446
- name
447
- link
448
- }
449
- }
450
- }
451
- integrationProducts {
452
- id
453
- integration {
454
- id
455
- type
456
- }
457
- externalProductId
458
- externalVariantId
459
- additionalExternalProductId
460
- additionalExternalVariantId
461
- additionalIntegrationProduct {
462
- ...AdditionalIntegrationProductFields
463
- }
464
- }
465
- profanities {
466
- id
467
- word
468
- }
469
- sku
470
- skuCode
471
- weight
472
- workflows {
473
- id
474
- friendlyName
475
- isPresent
476
- workflowName
477
- imageUrl
478
- }
479
- imageUrl
480
- modelUrl
481
- overlayImageUrl
482
- preloadImageUrl
483
- promptForCustomerDetails
484
- conversionConfiguration {
485
- ...ConversionConfigurationFields
486
- }
487
- productTags {
488
- id
489
- name
490
- }
491
- priceBreaks {
492
- id
493
- minQty
494
- percentage
495
- }
496
504
  }
497
505
  integrationProduct {
498
506
  id
@@ -509,33 +517,33 @@
509
517
  }
510
518
  }
511
519
  }
512
- `,Eo=C.gql`
520
+ `,Bo=f.gql`
513
521
  mutation UpdateTransactionWorkflowState($id: String!, $workflowState: String!) {
514
522
  transactionUpdate(id: $id, workflowState: $workflowState) {
515
523
  id
516
524
  }
517
525
  }
518
- `,bo=C.gql`
526
+ `,Io=f.gql`
519
527
  mutation UpdateTransactionQuantity($id: String!, $quantity: Int) {
520
528
  transactionUpdate(id: $id, quantity: $quantity) {
521
529
  id
522
530
  }
523
531
  }
524
- `,Bo=C.gql`
532
+ `,Po=f.gql`
525
533
  mutation UpdateTransactionWorkflow($id: String!, $workflowId: String!) {
526
534
  transactionUpdate(id: $id, workflowId: $workflowId) {
527
535
  id
528
536
  }
529
537
  }
530
- `,Io=C.gql`
531
- ${Lt}
538
+ `,xo=f.gql`
539
+ ${zt}
532
540
  query ReadConversionConfigurationQuery($id: String!) {
533
541
  conversionConfiguration(id: $id) {
534
542
  ...ConversionConfigurationFields
535
543
  }
536
544
  }
537
- `,Po=C.gql`
538
- ${Lt}
545
+ `,Fo=f.gql`
546
+ ${zt}
539
547
  query ReadTransactionForDesignCreation($id: String!) {
540
548
  transactions(ids: [$id]) {
541
549
  id
@@ -593,8 +601,8 @@
593
601
  workflowViewerReadOnlyLink
594
602
  }
595
603
  }
596
- `,xo=C.gql`
597
- ${rr}
604
+ `,Do=f.gql`
605
+ ${ir}
598
606
  query ReadTransactionForShareActions($id: String!) {
599
607
  transactions(ids: [$id]) {
600
608
  id
@@ -604,15 +612,15 @@
604
612
  }
605
613
  }
606
614
  }
607
- `,ir=C.gql`
615
+ `,or=f.gql`
608
616
  query ReadWorkflowStates($ids: [String]!) {
609
617
  transactions(ids: $ids) {
610
618
  id
611
619
  workflowState
612
620
  }
613
621
  }
614
- `,or=n=>C.gql`
615
- ${ge}
622
+ `,sr=n=>f.gql`
623
+ ${Vt}
616
624
  fragment IntegrationProductFields on IntegrationProduct {
617
625
  id
618
626
  externalProductId
@@ -694,15 +702,15 @@
694
702
  `:""}
695
703
  }
696
704
  }
697
- `,Fo=n=>C.gql`
698
- ${or(n)}
705
+ `,ko=n=>f.gql`
706
+ ${sr(n)}
699
707
  query GetIntegrationProducts($ids: [String!]!) {
700
708
  integrationProducts(ids: $ids) {
701
709
  ...IntegrationProductFields
702
710
  }
703
711
  }
704
- `,Do=n=>C.gql`
705
- ${or(n)}
712
+ `,Mo=n=>f.gql`
713
+ ${sr(n)}
706
714
  query GetIntegrationProductFromExternalIds($externalIntegrationId: String!, $externalProductId: String!) {
707
715
  integrationProductFromExternalIds(
708
716
  externalIntegrationId: $externalIntegrationId
@@ -711,8 +719,8 @@
711
719
  ...IntegrationProductFields
712
720
  }
713
721
  }
714
- `,ko=C.gql`
715
- ${nr}
722
+ `,To=f.gql`
723
+ ${rr}
716
724
  query ReadTransactionForStakeholders($id: String!) {
717
725
  transactions(ids: [$id]) {
718
726
  stakeholders {
@@ -723,11 +731,11 @@
723
731
  }
724
732
  }
725
733
  }
726
- `,Mo=C.gql`
734
+ `,No=f.gql`
727
735
  mutation FinalizeUpdateTransaction($transactionId: String!) {
728
736
  transactionFinalizeUpdate(transactionId: $transactionId)
729
737
  }
730
- `,To=C.gql`
738
+ `,Qo=f.gql`
731
739
  fragment RegionFields on Region {
732
740
  width
733
741
  top
@@ -745,7 +753,7 @@
745
753
  height
746
754
  }
747
755
  }
748
- `,No=C.gql`
756
+ `,Ro=f.gql`
749
757
  fragment LookAtAnimationFields on LookAtAnimation {
750
758
  latDeg
751
759
  lonDeg
@@ -756,7 +764,7 @@
756
764
  z
757
765
  }
758
766
  }
759
- `,Qo=C.gql`
767
+ `,Oo=f.gql`
760
768
  fragment RenderingPipelineConfigurationFields on RenderingPipelineConfiguration {
761
769
  antiAliasing {
762
770
  samples
@@ -840,21 +848,21 @@
840
848
  weight
841
849
  }
842
850
  }
843
- `,Ro=C.gql`
851
+ `,$o=f.gql`
844
852
  fragment ModelAnimationFields on ModelAnimation {
845
853
  from
846
854
  to
847
855
  loop
848
856
  name
849
857
  }
850
- `,Oo=n=>C.gql`
851
- ${he(n)}
852
- ${Na}
853
- ${tr}
854
- ${To}
855
- ${No}
858
+ `,Uo=n=>f.gql`
859
+ ${me(n)}
860
+ ${Qa}
861
+ ${er}
856
862
  ${Qo}
857
863
  ${Ro}
864
+ ${Oo}
865
+ ${$o}
858
866
  query GetWorkflows($ids: [String!]!) {
859
867
  workflows(ids: $ids) {
860
868
  partner {
@@ -1253,7 +1261,7 @@
1253
1261
  }
1254
1262
  }
1255
1263
  }
1256
- `,$o=C.gql`
1264
+ `,Lo=f.gql`
1257
1265
  query GetTransactionForPartner($id: String!) {
1258
1266
  transactions(ids: [$id]) {
1259
1267
  id
@@ -1271,8 +1279,8 @@
1271
1279
  }
1272
1280
  }
1273
1281
  }
1274
- `,Uo=C.gql`
1275
- ${he(!1)}
1282
+ `,Vo=f.gql`
1283
+ ${me(!1)}
1276
1284
  query GetWorkflowForTheme($id: String!) {
1277
1285
  workflow(id: $id) {
1278
1286
  id
@@ -1293,8 +1301,8 @@
1293
1301
  }
1294
1302
  }
1295
1303
  }
1296
- `,He=C.gql`
1297
- ${Lt}
1304
+ `,Ye=f.gql`
1305
+ ${zt}
1298
1306
  fragment MarketplaceThemeInstallConfigurationFields on MarketplaceThemeInstallConfiguration {
1299
1307
  id
1300
1308
  themeInstallId
@@ -1361,16 +1369,16 @@
1361
1369
  }
1362
1370
  }
1363
1371
  }
1364
- `,Lo=C.gql`
1365
- ${He}
1372
+ `,zo=f.gql`
1373
+ ${Ye}
1366
1374
  query GetMarketplaceThemeInstallConfiguration($themeConfigurationId: String!, $themeInstallId: String!) {
1367
1375
  marketplaceThemeInstallConfiguration(id: $themeConfigurationId, themeInstallId: $themeInstallId, raw: false) {
1368
1376
  ...MarketplaceThemeInstallConfigurationFields
1369
1377
  }
1370
1378
  }
1371
- `,Vo=C.gql`
1372
- ${er}
1373
- ${He}
1379
+ `,qo=f.gql`
1380
+ ${ar}
1381
+ ${Ye}
1374
1382
  query GetCurrentIntegration($themeConfigurationId: String) {
1375
1383
  currentIntegration {
1376
1384
  id
@@ -1381,8 +1389,8 @@
1381
1389
  ...ActiveIntegrationFields
1382
1390
  }
1383
1391
  }
1384
- `,zo=C.gql`
1385
- ${He}
1392
+ `,Go=f.gql`
1393
+ ${Ye}
1386
1394
  query ReadTransactionForMarketplaceTheme($id: String!) {
1387
1395
  transactions(ids: [$id]) {
1388
1396
  marketplaceThemeInstallConfiguration(raw: false) {
@@ -1390,8 +1398,8 @@
1390
1398
  }
1391
1399
  }
1392
1400
  }
1393
- `,qo=C.gql`
1394
- ${He}
1401
+ `,jo=f.gql`
1402
+ ${Ye}
1395
1403
  query ReadBundleForMarketplaceTheme($id: String!) {
1396
1404
  bundles(ids: [$id]) {
1397
1405
  marketplaceThemeInstallConfiguration(raw: false) {
@@ -1399,14 +1407,14 @@
1399
1407
  }
1400
1408
  }
1401
1409
  }
1402
- `,Go=C.gql`
1410
+ `,Wo=f.gql`
1403
1411
  mutation CreateOrder($orderItems: [OrderItemInput]!) {
1404
1412
  orderCreate(orderItems: $orderItems, paid: false, generateInternalId: true) {
1405
1413
  id
1406
1414
  internalId
1407
1415
  }
1408
1416
  }
1409
- `,jo=C.gql`
1417
+ `,Ho=f.gql`
1410
1418
  query CurrencyConversion($from: String!, $to: String!) {
1411
1419
  currencyConversion(from: $from, to: $to) {
1412
1420
  rateFrom
@@ -1414,48 +1422,48 @@
1414
1422
  timestamp
1415
1423
  }
1416
1424
  }
1417
- `,qt=[v.SilentIllustration,v.ProductOverlay],Wo=async n=>{const t=[];n.introduction&&t.push({name:"Introduction",title:n.name,renderableSteps:[{type:v.Introduction,stepName:"Introduction",stepTitle:n.name,helpText:n.introduction,data:{},conditions:[]}],silentSteps:[]});for(const a of n.steps){const r=Ho(a.stepName,n.stepGroups);if(!r)t.push({name:a.stepName,title:a.stepTitle,renderableSteps:qt.includes(a.type)?[]:[a],silentSteps:qt.includes(a.type)?[a]:[]});else{const i=t.find(o=>o.name===r.name);i?qt.includes(a.type)?i.silentSteps.push(a):i.renderableSteps.push(a):t.push({name:r.name,title:r.name,renderableSteps:qt.includes(a.type)?[]:[a],silentSteps:qt.includes(a.type)?[a]:[]})}}const e="workflow.steps.finish.confirmDesign";return t.push({name:"Finish",title:e,renderableSteps:[{type:v.Finish,stepName:"Finish",stepTitle:e,helpText:"",data:{modelAnimation:n.finalizeStepConfig?n.finalizeStepConfig.modelAnimation:void 0,lookAtAnimation:n.finalizeStepConfig?n.finalizeStepConfig.lookAtAnimation:void 0},conditions:[]}],silentSteps:[]}),t},Ho=(n,t)=>t.find(e=>e.stepNames.includes(n)),bt=(n,t)=>(n.conditions||[]).every(e=>{const a=t[e.targetStepName];if(a&&a.selectedVariants){const r=a.selectedVariants;return e.requiredVariantSelections.some(i=>r.find(o=>o.id===i)!==void 0)}return!1}),Yo=(n,t)=>{const e={name:n.name,title:n.title,renderableSteps:n.renderableSteps.filter(a=>bt(a,t)),silentSteps:n.silentSteps.filter(a=>bt(a,t))};return e.silentSteps.length===0&&e.renderableSteps.length===0?null:e},vt=(n,t)=>n.map(e=>Yo(e,t)).filter(e=>e!==null),Jo=async(n,t,e=!1)=>{const a=vt(n,t),r=[];for(const o of a)for(const s of o.renderableSteps){const l=(s.option?.variants||[]).length;s.silent||(s.type===v.Model||s.type===v.Material||s.type===v.Picture||s.type===v.Shape?(l>1||e)&&r.push(s.stepName):r.push(s.stepName))}const i=a.filter(o=>o.renderableSteps.filter(l=>r.includes(l.stepName)).length>0);for(const o of i)o.renderableSteps=o.renderableSteps.filter(s=>r.includes(s.stepName));return i};class Qa{constructor(){this.timestamp=Date.now()}}class Ra{constructor(t,e=!0){this.queue=[],this.activePromise=void 0,this.queueMaxSize=void 0,this.queueMaxSize=t,this.isEnabled=e}enqueue(t){if(this.queue.push(t),this.queueMaxSize!==void 0&&this.queue.length>this.queueMaxSize){const e=this.queue.length-1;for(let a=0;a<e;++a)this.queue.shift()}this.isEnabled&&(this.activePromise||(this.activePromise=this.dequeue()))}get enabled(){return this.isEnabled}set enabled(t){!this.isEnabled&&t&&!this.activePromise&&this.getRemainingQueueSize()>0&&(this.activePromise=this.dequeue()),this.isEnabled=t}hasActivePromise(){return!!this.activePromise}getRemainingQueueSize(){return this.queue.length}async finalize(){return this.activePromise?this.activePromise:Promise.resolve()}async dequeue(){const t=this.queue.shift();if(!t){this.activePromise=void 0;return}try{await t.execute()}catch(e){console.log(e)}finally{await this.dequeue()}}}const M=()=>{const n=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return n()+n()+"-"+n()+"-"+n()+"-"+n()+"-"+n()+n()+n()},Ko=({backgroundColor:n,outlineColor:t,borderRadius:e,configuration:a,elements:r,height:i,maxHeight:o,maxWidth:s,outlineArea:l,position:c,preserveAspectRatio:d,viewBox:u,width:A})=>{const h=e||0,g=2*(l?.scale||1),p=u||{x:0,y:0,width:A,height:i},m=`${p.x} ${p.y} ${p.width} ${p.height}`,f=M(),w=a.purpose===Nt.FreeDesign&&P.jsx("defs",{children:P.jsx("clipPath",{id:"viewboxClip",children:P.jsx("rect",{width:p.width,height:p.height,rx:h})})}),b=a.colorProfiles?.map((y,B)=>P.jsx("color-profile",{name:y.name,xlinkHref:y.key,children:" "},B)),F=r.map(y=>({...y,_renderingConfiguration:a,mask:l?`url(#viewmask-${f})`:void 0})),E=Oa(F);return P.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",preserveAspectRatio:d,width:A,height:i,style:{gridColumn:1,gridRow:1,maxWidth:s,maxHeight:o,position:c},viewBox:m,children:[b,w,!!n&&P.jsx("rect",{id:"layout-background",width:p.width,height:p.height,fill:n,rx:h}),P.jsx("g",{id:"element-group",clipPath:a.purpose===Nt.FreeDesign?"url(#viewboxClip)":void 0,children:E.map(y=>mr(y)).filter(y=>!!y)}),l&&P.jsx("rect",{x:l.x,y:l.y,width:l.width,height:l.height,fill:"none",stroke:l.hidden?"none":t||"#aaaaaa",strokeWidth:g/2,strokeDasharray:`${g*2} ${g}`}),l&&P.jsxs("mask",{id:`viewmask-${f}`,children:[P.jsx("rect",{x:p.x,y:p.y,width:p.width,height:p.height,fill:"black"}),P.jsx("rect",{x:l.x,y:l.y,width:l.width,height:l.height,fill:"white"})]})]})},_o=(n,t,e,a,r)=>{const i=Ct(r),o=e/2,s=a/2,l=n+o,c=t+s,d=Math.sin(i),u=Math.cos(i),A=o,h=o,g=-s,p=s,m=A*u-g*d,f=h*u-p*d,w=A*d+g*u,b=h*d+p*u,F=Math.max(Math.abs(m),Math.abs(f)),E=Math.max(Math.abs(w),Math.abs(b));return{minX:l-F,maxX:l+F,minY:c-E,maxY:c+E}},Xo=(n,t,e)=>{const a=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),r=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((r*r+a*a-i*i)/(2*r*a))*(180/Math.PI)},Ct=n=>n*(Math.PI/180),Zo=(n,t,e)=>Math.abs(n-t)<e,ts=(n,t,e)=>{const a=Math.sin(Ct(e)),r=Math.cos(Ct(e));return{x:(n.x-t.x)*r-(n.y-t.y)*a+t.x,y:(n.x-t.x)*a+(n.y-t.y)*r+t.y}},es=(n,t)=>({x:(n.x+t.x)/2,y:(n.y+t.y)/2}),as=(n,t,e,a)=>({x:n.x+t?.x*e,y:n.y+t?.y*a}),ns=(n,t,e,a)=>({x:n.x+(t?.x+t?.width)*e,y:n.y+t?.y*a}),rs=(n,t,e,a)=>({x:n.x+(t?.x+t?.width)*e,y:n.y+(t?.y+t?.height)*a}),Ft=n=>{switch(n){case G.North:return G.East;case G.East:return G.South;case G.South:return G.West;case G.West:return G.North;case G.Northwest:return G.Northeast;case G.Northeast:return G.Southeast;case G.Southeast:return G.Southwest;case G.Southwest:return G.Northwest}},is=(n,t)=>t>45&&t<=135?Ft(n):t>135&&t<=225?Ft(Ft(n)):t>225&&t<=315?Ft(Ft(Ft(n))):n,os=(n,t={x:0,y:0},e={x:1,y:1})=>{const a=Ct(n.rotation),r={x:t.x+n.x*e.x,y:t.x+n.y*e.y},i={x:n.x+n.width,y:n.y},o={x:t.x+(n.x+n.width)*e.x,y:t.y+(n.height+n.y)*e.y},s={x:t.x+n.x*e.x,y:t.y+(n.height+n.y)*e.y},l={x:(s.x+o.x)/2,y:s.y-n.height*e.y/2};return{a:Ht(r,l,a),b:Ht(i,l,a),c:Ht(o,l,a),d:Ht(s,l,a),center:l}},Ht=(n,t,e)=>{const a=Math.sin(e),r=Math.cos(e);return{x:(n.x-t.x)*r-(n.y-t.y)*a+t.x,y:(n.x-t.x)*a+(n.y-t.y)*r+t.y}},ss=.352778,ls=.035277,sr=n=>{const t=n.rotation||0,e=Ct(t),a=Math.cos(e),r=-Math.sin(e);return P.jsx("g",{mask:n.stepName||n.productOverlay?void 0:n.mask,children:P.jsx("g",{transform:`
1425
+ `,jt=[v.SilentIllustration,v.ProductOverlay],Yo=async n=>{const t=[];n.introduction&&t.push({name:"Introduction",title:n.name,renderableSteps:[{type:v.Introduction,stepName:"Introduction",stepTitle:n.name,helpText:n.introduction,data:{},conditions:[]}],silentSteps:[]});for(const a of n.steps){const r=Jo(a.stepName,n.stepGroups);if(!r)t.push({name:a.stepName,title:a.stepTitle,renderableSteps:jt.includes(a.type)?[]:[a],silentSteps:jt.includes(a.type)?[a]:[]});else{const i=t.find(o=>o.name===r.name);i?jt.includes(a.type)?i.silentSteps.push(a):i.renderableSteps.push(a):t.push({name:r.name,title:r.name,renderableSteps:jt.includes(a.type)?[]:[a],silentSteps:jt.includes(a.type)?[a]:[]})}}const e="workflow.steps.finish.confirmDesign";return t.push({name:"Finish",title:e,renderableSteps:[{type:v.Finish,stepName:"Finish",stepTitle:e,helpText:"",data:{modelAnimation:n.finalizeStepConfig?n.finalizeStepConfig.modelAnimation:void 0,lookAtAnimation:n.finalizeStepConfig?n.finalizeStepConfig.lookAtAnimation:void 0},conditions:[]}],silentSteps:[]}),t},Jo=(n,t)=>t.find(e=>e.stepNames.includes(n)),Bt=(n,t)=>(n.conditions||[]).every(e=>{const a=t[e.targetStepName];if(a&&a.selectedVariants){const r=a.selectedVariants;return e.requiredVariantSelections.some(i=>r.find(o=>o.id===i)!==void 0)}return!1}),Ko=(n,t)=>{const e={name:n.name,title:n.title,renderableSteps:n.renderableSteps.filter(a=>Bt(a,t)),silentSteps:n.silentSteps.filter(a=>Bt(a,t))};return e.silentSteps.length===0&&e.renderableSteps.length===0?null:e},Et=(n,t)=>n.map(e=>Ko(e,t)).filter(e=>e!==null),_o=async(n,t,e=!1)=>{const a=Et(n,t),r=[];for(const o of a)for(const s of o.renderableSteps){const l=(s.option?.variants||[]).length;s.silent||(s.type===v.Model||s.type===v.Material||s.type===v.Picture||s.type===v.Shape?(l>1||e)&&r.push(s.stepName):r.push(s.stepName))}const i=a.filter(o=>o.renderableSteps.filter(l=>r.includes(l.stepName)).length>0);for(const o of i)o.renderableSteps=o.renderableSteps.filter(s=>r.includes(s.stepName));return i};class Ra{constructor(){this.timestamp=Date.now()}}class Oa{constructor(t,e=!0){this.queue=[],this.activePromise=void 0,this.queueMaxSize=void 0,this.queueMaxSize=t,this.isEnabled=e}enqueue(t){if(this.queue.push(t),this.queueMaxSize!==void 0&&this.queue.length>this.queueMaxSize){const e=this.queue.length-1;for(let a=0;a<e;++a)this.queue.shift()}this.isEnabled&&(this.activePromise||(this.activePromise=this.dequeue()))}get enabled(){return this.isEnabled}set enabled(t){!this.isEnabled&&t&&!this.activePromise&&this.getRemainingQueueSize()>0&&(this.activePromise=this.dequeue()),this.isEnabled=t}hasActivePromise(){return!!this.activePromise}getRemainingQueueSize(){return this.queue.length}async finalize(){return this.activePromise?this.activePromise:Promise.resolve()}async dequeue(){const t=this.queue.shift();if(!t){this.activePromise=void 0;return}try{await t.execute()}catch(e){console.log(e)}finally{await this.dequeue()}}}const T=()=>{const n=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return n()+n()+"-"+n()+"-"+n()+"-"+n()+"-"+n()+n()+n()},Xo=({backgroundColor:n,outlineColor:t,borderRadius:e,configuration:a,elements:r,height:i,maxHeight:o,maxWidth:s,outlineArea:l,position:c,preserveAspectRatio:d,viewBox:u,width:A})=>{const h=e||0,g=2*(l?.scale||1),p=u||{x:0,y:0,width:A,height:i},m=`${p.x} ${p.y} ${p.width} ${p.height}`,C=T(),w=a.purpose===Qt.FreeDesign&&P.jsx("defs",{children:P.jsx("clipPath",{id:"viewboxClip",children:P.jsx("rect",{width:p.width,height:p.height,rx:h})})}),I=a.colorProfiles?.map((E,S)=>P.jsx("color-profile",{name:E.name,xlinkHref:E.key,children:" "},S)),x=r.map(E=>({...E,_renderingConfiguration:a,mask:l?`url(#viewmask-${C})`:void 0})),b=$a(x);return P.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",preserveAspectRatio:d,width:A,height:i,style:{gridColumn:1,gridRow:1,maxWidth:s,maxHeight:o,position:c},viewBox:m,children:[I,w,!!n&&P.jsx("rect",{id:"layout-background",width:p.width,height:p.height,fill:n,rx:h}),P.jsx("g",{id:"element-group",clipPath:a.purpose===Qt.FreeDesign?"url(#viewboxClip)":void 0,children:b.map(E=>pr(E)).filter(E=>!!E)}),l&&P.jsx("rect",{x:l.x,y:l.y,width:l.width,height:l.height,fill:"none",stroke:l.hidden?"none":t||"#aaaaaa",strokeWidth:g/2,strokeDasharray:`${g*2} ${g}`}),l&&P.jsxs("mask",{id:`viewmask-${C}`,children:[P.jsx("rect",{x:p.x,y:p.y,width:p.width,height:p.height,fill:"black"}),P.jsx("rect",{x:l.x,y:l.y,width:l.width,height:l.height,fill:"white"})]})]})},Zo=(n,t,e,a,r)=>{const i=wt(r),o=e/2,s=a/2,l=n+o,c=t+s,d=Math.sin(i),u=Math.cos(i),A=o,h=o,g=-s,p=s,m=A*u-g*d,C=h*u-p*d,w=A*d+g*u,I=h*d+p*u,x=Math.max(Math.abs(m),Math.abs(C)),b=Math.max(Math.abs(w),Math.abs(I));return{minX:l-x,maxX:l+x,minY:c-b,maxY:c+b}},ts=(n,t,e)=>{const a=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),r=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((r*r+a*a-i*i)/(2*r*a))*(180/Math.PI)},wt=n=>n*(Math.PI/180),es=(n,t,e)=>Math.abs(n-t)<e,as=(n,t,e)=>{const a=Math.sin(wt(e)),r=Math.cos(wt(e));return{x:(n.x-t.x)*r-(n.y-t.y)*a+t.x,y:(n.x-t.x)*a+(n.y-t.y)*r+t.y}},ns=(n,t)=>({x:(n.x+t.x)/2,y:(n.y+t.y)/2}),rs=(n,t,e,a)=>({x:n.x+t?.x*e,y:n.y+t?.y*a}),is=(n,t,e,a)=>({x:n.x+(t?.x+t?.width)*e,y:n.y+t?.y*a}),os=(n,t,e,a)=>({x:n.x+(t?.x+t?.width)*e,y:n.y+(t?.y+t?.height)*a}),Dt=n=>{switch(n){case j.North:return j.East;case j.East:return j.South;case j.South:return j.West;case j.West:return j.North;case j.Northwest:return j.Northeast;case j.Northeast:return j.Southeast;case j.Southeast:return j.Southwest;case j.Southwest:return j.Northwest}},ss=(n,t)=>t>45&&t<=135?Dt(n):t>135&&t<=225?Dt(Dt(n)):t>225&&t<=315?Dt(Dt(Dt(n))):n,ls=(n,t={x:0,y:0},e={x:1,y:1})=>{const a=wt(n.rotation),r={x:t.x+n.x*e.x,y:t.x+n.y*e.y},i={x:n.x+n.width,y:n.y},o={x:t.x+(n.x+n.width)*e.x,y:t.y+(n.height+n.y)*e.y},s={x:t.x+n.x*e.x,y:t.y+(n.height+n.y)*e.y},l={x:(s.x+o.x)/2,y:s.y-n.height*e.y/2};return{a:Jt(r,l,a),b:Jt(i,l,a),c:Jt(o,l,a),d:Jt(s,l,a),center:l}},Jt=(n,t,e)=>{const a=Math.sin(e),r=Math.cos(e);return{x:(n.x-t.x)*r-(n.y-t.y)*a+t.x,y:(n.x-t.x)*a+(n.y-t.y)*r+t.y}},cs=.352778,ds=.035277,lr=n=>{const t=n.rotation||0,e=wt(t),a=Math.cos(e),r=-Math.sin(e);return P.jsx("g",{mask:n.stepName||n.productOverlay?void 0:n.mask,children:P.jsx("g",{transform:`
1418
1426
  matrix(1, 0, 0, 1, ${n.x}, ${n.y})
1419
1427
  matrix(1, 0, 0, 1, ${n.width/2}, ${n.height/2})
1420
1428
  matrix(${a}, ${-r}, ${r}, ${a}, 0, 0)
1421
1429
  matrix(1, 0, 0, 1, ${-n.width/2}, ${-n.height/2})
1422
- `,children:P.jsx("image",{xlinkHref:n.src,preserveAspectRatio:n.preserveAspectRatio,width:n.width,height:n.height})})})},lr=n=>{const t=`spiff-group-clip-${n.id}`,e=n.rotation||0,a=Ct(e),r=Math.cos(a),i=-Math.sin(a),o=Oa(n.children),s=()=>P.jsx("clipPath",{id:t,preserveAspectRatio:"none",children:n.clipPath?P.jsx("path",{d:n.clipPath}):P.jsx("rect",{x:0,y:0,width:n.width,height:n.height})});return P.jsxs(P.Fragment,{children:[P.jsx("defs",{children:s()}),P.jsxs("g",{transform:`
1430
+ `,children:P.jsx("image",{xlinkHref:n.src,preserveAspectRatio:n.preserveAspectRatio,width:n.width,height:n.height})})})},cr=n=>{const t=`spiff-group-clip-${n.id}`,e=n.rotation||0,a=wt(e),r=Math.cos(a),i=-Math.sin(a),o=$a(n.children),s=()=>P.jsx("clipPath",{id:t,preserveAspectRatio:"none",children:n.clipPath?P.jsx("path",{d:n.clipPath}):P.jsx("rect",{x:0,y:0,width:n.width,height:n.height})});return P.jsxs(P.Fragment,{children:[P.jsx("defs",{children:s()}),P.jsxs("g",{transform:`
1423
1431
  matrix(1, 0, 0, 1, ${n.x}, ${n.y})
1424
1432
  matrix(1, 0, 0, 1, ${n.width/2}, ${n.height/2})
1425
1433
  matrix(${r}, ${-i}, ${i}, ${r}, 0, 0)
1426
1434
  matrix(1, 0, 0, 1, ${-n.width/2}, ${-n.height/2})
1427
- `,children:[n._renderingConfiguration?.debug?P.jsx("rect",{stroke:"red",opacity:.3,fill:"none",x:0,y:0,width:n.width,height:n.height}):void 0,o.map(l=>mr(l)).filter(l=>!!l).map(l=>P.jsx("g",{clipPath:`url(#${t})`,children:l}))]})]})},cs=n=>{const t=`spiff-frame-${n.id}`,e=`spiff-frame-threshold-${n.id}`,a=()=>{if(!n.pattern)return"";if(n.pattern.svg){const u=We(n.pattern.svg,n.pattern.colors||{},!1);return Ge(u)}return n.pattern.src};if(!a())return P.jsx(P.Fragment,{});const r=()=>n.threshold?n.invertThreshold?"1 ".repeat(n.threshold)+"0 ".repeat(256-n.threshold):"0 ".repeat(n.threshold)+"1 ".repeat(256-n.threshold):"",i=()=>P.jsx(P.Fragment,{children:n.useThreshold&&P.jsx("defs",{children:P.jsxs("filter",{id:e,"color-interpolation-filters":"sRGB",children:[P.jsx("feColorMatrix",{type:"matrix",values:`
1435
+ `,children:[n._renderingConfiguration?.debug?P.jsx("rect",{stroke:"red",opacity:.3,fill:"none",x:0,y:0,width:n.width,height:n.height}):void 0,o.map(l=>pr(l)).filter(l=>!!l).map(l=>P.jsx("g",{clipPath:`url(#${t})`,children:l}))]})]})},us=n=>{const t=`spiff-frame-${n.id}`,e=`spiff-frame-threshold-${n.id}`,a=()=>{if(!n.pattern)return"";if(n.pattern.svg){const u=He(n.pattern.svg,n.pattern.colors||{},!1);return je(u)}return n.pattern.src};if(!a())return P.jsx(P.Fragment,{});const r=()=>n.threshold?n.invertThreshold?"1 ".repeat(n.threshold)+"0 ".repeat(256-n.threshold):"0 ".repeat(n.threshold)+"1 ".repeat(256-n.threshold):"",i=()=>P.jsx(P.Fragment,{children:n.useThreshold&&P.jsx("defs",{children:P.jsxs("filter",{id:e,"color-interpolation-filters":"sRGB",children:[P.jsx("feColorMatrix",{type:"matrix",values:`
1428
1436
  ${n.thresholdSaturation} ${n.thresholdSaturation} ${n.thresholdSaturation} 0 0
1429
1437
  ${n.thresholdSaturation} ${n.thresholdSaturation} ${n.thresholdSaturation} 0 0
1430
1438
  ${n.thresholdSaturation} ${n.thresholdSaturation} ${n.thresholdSaturation} 0 0
1431
1439
  0 0 0 1 0
1432
- `,result:"greyscale"}),P.jsxs("feComponentTransfer",{in:"greyscale",children:[P.jsx("feFuncR",{type:"discrete",tableValues:r()}),P.jsx("feFuncG",{type:"discrete",tableValues:r()}),P.jsx("feFuncB",{type:"discrete",tableValues:r()})]})]})})}),o=n.rotation||0,s=Ct(o),l=Math.cos(s),c=-Math.sin(s),d=()=>{const u=n.pattern?.x||0,A=n.pattern?.y||0,h=n.pattern?.width||0,g=n.pattern?.height||0,p=n.pattern?.scaleX||1,m=n.pattern?.scaleY||1,f=n.pattern?.rotation||0;return[n.pattern?.svg?{id:`${t}-contents`,type:D.Illustration,x:u,y:A,rotation:f,width:h*p,height:g*m,src:a(),svg:n.pattern?.svg,colors:n.pattern?.colors}:{id:`${t}-contents`,type:D.Image,x:u,y:A,rotation:f,width:h*p,height:g*m,src:a()}]};return P.jsxs(P.Fragment,{children:[i(),P.jsx("g",{opacity:n.opacity,mask:n.stepName?void 0:n.mask,filter:n.useThreshold?`url(#${e})`:void 0,children:P.jsx("g",{transform:`
1440
+ `,result:"greyscale"}),P.jsxs("feComponentTransfer",{in:"greyscale",children:[P.jsx("feFuncR",{type:"discrete",tableValues:r()}),P.jsx("feFuncG",{type:"discrete",tableValues:r()}),P.jsx("feFuncB",{type:"discrete",tableValues:r()})]})]})})}),o=n.rotation||0,s=wt(o),l=Math.cos(s),c=-Math.sin(s),d=()=>{const u=n.pattern?.x||0,A=n.pattern?.y||0,h=n.pattern?.width||0,g=n.pattern?.height||0,p=n.pattern?.scaleX||1,m=n.pattern?.scaleY||1,C=n.pattern?.rotation||0;return[n.pattern?.svg?{id:`${t}-contents`,type:k.Illustration,x:u,y:A,rotation:C,width:h*p,height:g*m,src:a(),svg:n.pattern?.svg,colors:n.pattern?.colors}:{id:`${t}-contents`,type:k.Image,x:u,y:A,rotation:C,width:h*p,height:g*m,src:a()}]};return P.jsxs(P.Fragment,{children:[i(),P.jsx("g",{opacity:n.opacity,mask:n.stepName?void 0:n.mask,filter:n.useThreshold?`url(#${e})`:void 0,children:P.jsx("g",{transform:`
1433
1441
  matrix(1, 0, 0, 1, ${n.x}, ${n.y})
1434
1442
  matrix(1, 0, 0, 1, ${n.width/2}, ${n.height/2})
1435
1443
  matrix(${l}, ${-c}, ${c}, ${l}, 0, 0)
1436
1444
  matrix(1, 0, 0, 1, ${-n.width/2}, ${-n.height/2})
1437
1445
  matrix(${n.scaleX}, 0, 0, ${n.scaleY}, 0, 0)
1438
- `,children:P.jsx(lr,{id:t,x:0,y:0,rotation:0,width:n.width,height:n.height,clipPath:n.path,children:d()})})})]})},cr=new Map;class ds{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,r=0;return e.forEach(i=>{const o=i.getMetrics();a=Math.max(a,o.yMax),r=Math.min(r,o.yMin)}),a-r}getKerningValue(t,e){if(!t.name||!e.name)return;let a=this.kerningValues.get(t.name);a||(a=new Map,this.kerningValues.set(t.name,a));let r=a.get(e.name);return r||(r=this.font.getKerningValue(t,e),a.set(e.name,r)),r}calculateApproximateHeight(){const e=this.font.stringToGlyphs("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");let a=0,r=0;return e.forEach(i=>{const o=i.getMetrics();a=Math.max(a,o.yMax),r=Math.min(r,o.yMin)}),a-r}}const us=n=>n.substring(0,5).toLowerCase().trim()==="data:",Ze=new Map,Pt=async n=>{if(Ze.has(n))return Ze.get(n);const e=(async()=>{try{return wt(n).getFont()}catch{if(us(n)){const a=Gn(n),r=da.parse(a);return fa(n,r),r}else{const a=await ze(n,!0),r=da.parse(a);return fa(n,r),await Ni(r,n),r}}})();return Ze.set(n,e),e},As=n=>{const t=Gn(n),e=da.parse(t);return fa(n,e),e},wt=n=>{const t=cr.get(n);if(t)return t;throw new Error("Font metrics unavailable for font")},fa=(n,t)=>{const e=new ds(t);return cr.set(n,e),e},hs=async n=>{const t=lt(),e=t.parseFromString(n,"image/svg+xml"),a=e.firstElementChild,r=new Map;a.querySelectorAll("style").forEach(d=>{Dn.parse(d.innerHTML).stylesheet?.rules.forEach(A=>{if(A.type==="font-face"&&A.declarations){const h=A.declarations.find(m=>m.property==="font-family")?.value,p=A.declarations.find(m=>m.property==="src")?.value?.match(/'(https.*?)'/)?.[1];h&&p&&r.set(h,p)}})});const o=e.querySelectorAll("tspan");for(let d=0;d<o.length;d++){const u=o.item(d),A=u.closest("text"),h=u.closest("g"),g=A.getAttribute("font-family"),p=await Pt(r.get(g)),m=A.getAttribute("fill"),f=A.getAttribute("stroke"),w=A.getAttribute("stroke-width"),b=p.getPath(u.innerHTML,0,0,parseInt(A.getAttribute("font-size")??"72")),F=b.getBoundingBox().x2-b.getBoundingBox().x1;let E=0;const y=u.getAttribute("text-anchor");y==="middle"?E=F/2:y==="end"&&(E=F);const B=p.getPath(u.innerHTML,parseFloat(u.getAttribute("x")??"0")-E,parseFloat(u.getAttribute("y")??"0"),parseInt(A.getAttribute("font-size")??"72"));B.fill=m,B.stroke=f,B.strokeWidth=parseFloat(w??"0");const x=B.toSVG(2),T=t.parseFromString(x,"image/svg+xml").firstElementChild;h.appendChild(T)}return e.querySelectorAll("text").forEach(d=>d.remove()),yt().serializeToString(a)},Te=(n,t,e,a)=>Math.max(fs(n.join(`
1439
- `),e,a),t),un=(n,t,e,a,r,i)=>{const o=(i||Ar)*r.getApproximateHeight(),s=t.split(`
1440
- `);try{const l=s.flatMap(d=>Fe(d,n.width,a,r)),c=l.flatMap(d=>d.lines);return{lines:c,requiredHeight:l.flatMap(d=>d.lines).length*(a*o),fontSize:e,requiredWidth:Te(c,n.width,a,r)}}catch{const c=t.split("");return{lines:c,requiredHeight:c.length*(a*o),fontSize:e,requiredWidth:Te(c,n.width,a,r)}}},Fe=(n,t,e,a)=>{const r=mt(n,e,a);if(r<=t)return{lines:[n],width:r};if(!(n.indexOf(" ")>-1)){if(n.length<=1)throw new Error(`Character ${n} is wider than region`);const d=Math.floor(n.length/2),u=Fe(n.slice(0,d),t,e,a),A=Fe(n.slice(d),t,e,a);return{lines:[...u.lines,...A.lines],width:Math.max(u.width,A.width)}}const o=n.split(" "),s=[];let l=-1/0,c=0;for(;c<o.length;){const d=o[c];if(mt(d,e,a)>t){const u=Fe(d,t,e,a);s.push(...u.lines),l=Math.max(l,u.width),c++}else{const u=[d];l=Math.max(l,mt(d,e,a));let A=c+1,h=!0;for(;A<o.length&&h;){const g=o[A],p=mt(`${u.join(" ")} ${g}`,e,a);p<=t?(u.push(g),l=Math.max(l,p),A++):h=!1}s.push(u.join(" ")),c=A}}if(l<0)throw new Error(`No max width calculated for text: ${s}.`);return{lines:s,width:l}},gs=(n,t,e,a,r,i)=>{const o=(i??Ar)*t.getApproximateHeight(),s=1/e.unitsPerEm,l=dr(n,s,t),c=n.length*o*s,d=a/l,u=r/c;return Math.min(u,d)},ms=(n,t,e,a)=>{const r=wt(t.fontData.assetUrl),i=r.getFont(),o=t.fontSize/i.unitsPerEm;if(!e)return un(t,n,t.fontSize,o,r,a);let s;if(t.text?s=t.text.split(`
1446
+ `,children:P.jsx(cr,{id:t,x:0,y:0,rotation:0,width:n.width,height:n.height,clipPath:n.path,children:d()})})})]})},dr=new Map;class As{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,r=0;return e.forEach(i=>{const o=i.getMetrics();a=Math.max(a,o.yMax),r=Math.min(r,o.yMin)}),a-r}getKerningValue(t,e){if(!t.name||!e.name)return;let a=this.kerningValues.get(t.name);a||(a=new Map,this.kerningValues.set(t.name,a));let r=a.get(e.name);return r||(r=this.font.getKerningValue(t,e),a.set(e.name,r)),r}calculateApproximateHeight(){const e=this.font.stringToGlyphs("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");let a=0,r=0;return e.forEach(i=>{const o=i.getMetrics();a=Math.max(a,o.yMax),r=Math.min(r,o.yMin)}),a-r}}const hs=n=>n.substring(0,5).toLowerCase().trim()==="data:",ta=new Map,xt=async n=>{if(ta.has(n))return ta.get(n);const e=(async()=>{try{return yt(n).getFont()}catch{if(hs(n)){const a=jn(n),r=ua.parse(a);return Ca(n,r),r}else{const a=await qe(n,!0),r=ua.parse(a);return Ca(n,r),await Qi(r,n),r}}})();return ta.set(n,e),e},gs=n=>{const t=jn(n),e=ua.parse(t);return Ca(n,e),e},yt=n=>{const t=dr.get(n);if(t)return t;throw new Error("Font metrics unavailable for font")},Ca=(n,t)=>{const e=new As(t);return dr.set(n,e),e},ms=async n=>{const t=ot(),e=t.parseFromString(n,"image/svg+xml"),a=e.firstElementChild,r=new Map;a.querySelectorAll("style").forEach(d=>{kn.parse(d.innerHTML).stylesheet?.rules.forEach(A=>{if(A.type==="font-face"&&A.declarations){const h=A.declarations.find(m=>m.property==="font-family")?.value,p=A.declarations.find(m=>m.property==="src")?.value?.match(/'(https.*?)'/)?.[1];h&&p&&r.set(h,p)}})});const o=e.querySelectorAll("tspan");for(let d=0;d<o.length;d++){const u=o.item(d),A=u.closest("text"),h=u.closest("g"),g=A.getAttribute("font-family"),p=await xt(r.get(g)),m=A.getAttribute("fill"),C=A.getAttribute("stroke"),w=A.getAttribute("stroke-width"),I=p.getPath(u.innerHTML,0,0,parseInt(A.getAttribute("font-size")??"72")),x=I.getBoundingBox().x2-I.getBoundingBox().x1;let b=0;const E=u.getAttribute("text-anchor");E==="middle"?b=x/2:E==="end"&&(b=x);const S=p.getPath(u.innerHTML,parseFloat(u.getAttribute("x")??"0")-b,parseFloat(u.getAttribute("y")??"0"),parseInt(A.getAttribute("font-size")??"72"));S.fill=m,S.stroke=C,S.strokeWidth=parseFloat(w??"0");const B=S.toSVG(2),F=t.parseFromString(B,"image/svg+xml").firstElementChild;h.appendChild(F)}return e.querySelectorAll("text").forEach(d=>d.remove()),St().serializeToString(a)},Ne=(n,t,e,a)=>Math.max(ws(n.join(`
1447
+ `),e,a),t),An=(n,t,e,a,r,i)=>{const o=(i||hr)*r.getApproximateHeight(),s=t.split(`
1448
+ `);try{const l=s.flatMap(d=>De(d,n.width,a,r)),c=l.flatMap(d=>d.lines);return{lines:c,requiredHeight:l.flatMap(d=>d.lines).length*(a*o),fontSize:e,requiredWidth:Ne(c,n.width,a,r)}}catch{const c=t.split("");return{lines:c,requiredHeight:c.length*(a*o),fontSize:e,requiredWidth:Ne(c,n.width,a,r)}}},De=(n,t,e,a)=>{const r=pt(n,e,a);if(r<=t)return{lines:[n],width:r};if(!(n.indexOf(" ")>-1)){if(n.length<=1)throw new Error(`Character ${n} is wider than region`);const d=Math.floor(n.length/2),u=De(n.slice(0,d),t,e,a),A=De(n.slice(d),t,e,a);return{lines:[...u.lines,...A.lines],width:Math.max(u.width,A.width)}}const o=n.split(" "),s=[];let l=-1/0,c=0;for(;c<o.length;){const d=o[c];if(pt(d,e,a)>t){const u=De(d,t,e,a);s.push(...u.lines),l=Math.max(l,u.width),c++}else{const u=[d];l=Math.max(l,pt(d,e,a));let A=c+1,h=!0;for(;A<o.length&&h;){const g=o[A],p=pt(`${u.join(" ")} ${g}`,e,a);p<=t?(u.push(g),l=Math.max(l,p),A++):h=!1}s.push(u.join(" ")),c=A}}if(l<0)throw new Error(`No max width calculated for text: ${s}.`);return{lines:s,width:l}},ps=(n,t,e,a,r,i)=>{const o=(i??hr)*t.getApproximateHeight(),s=1/e.unitsPerEm,l=ur(n,s,t),c=n.length*o*s,d=a/l,u=r/c;return Math.min(u,d)},fs=(n,t,e,a)=>{const r=yt(t.fontData.assetUrl),i=r.getFont(),o=t.fontSize/i.unitsPerEm;if(!e)return An(t,n,t.fontSize,o,r,a);let s;if(t.text?s=t.text.split(`
1441
1449
  `):s=t.input?.split(`
1442
- `)??[""],e.input===n&&t.width===e.width&&t.height===e.height&&t.lineHeight===e.lineHeight)return{lines:s,requiredHeight:t.height,requiredWidth:Te(s,t.width,o,r),fontSize:t.fontSize};const l=t.width!==e.width!=(t.height!==e.height);return t.lineHeight===e.lineHeight&&!l&&e.input===n?{lines:s,requiredHeight:t.height,requiredWidth:Te(s,t.width,o,r),fontSize:gs(s,r,i,t.width,t.height,a)}:un(t,n,t.fontSize,o,r,a)},ps=(n,t,e,a,r)=>{const o=wt(t.assetUrl).getFont();let s={...n};const l={...n},c=dr(a,e/o.unitsPerEm,wt(t.assetUrl));return c&&c<s.width&&(l.width=c,r==="left"?(l.left+=Math.sin(s.rotation*Math.PI/360)*(s.width-c),l.top+=Math.sin(s.rotation*Math.PI/180)*(c-s.width)/2):r==="right"?l.left+=s.width-c:l.left+=(s.width-c)/2,a&&Cs(a,a).every(([d,u])=>d===u)&&(s=l)),s},ta=1,mt=(n,t,e)=>{let a=0;const r=e.getGlyphs(n);return r.forEach((i,o)=>{if(i.advanceWidth&&(a+=i.advanceWidth),o<r.length-1){const s=e.getKerningValue(i,r[o+1]);a+=s||0}}),a*=t,a},fs=(n,t,e)=>{let a=0;const r=e.getGlyphs(n);return r.forEach((i,o)=>{if(i.advanceWidth&&(a=Math.max(a,i.advanceWidth)),o<r.length-1){const s=e.getKerningValue(i,r[o+1]);a=Math.max(a,s||0)}}),a*=t,a},dr=(n,t,e)=>{let a=0;return n.forEach(r=>{a=Math.max(a,mt(r,t,e))}),a},An={stripControlCharacters:!0,vertical:!1,uppercase:!1},Ne=(n,t=An)=>{const e={...An,...t};let a=n||"";return e.stripControlCharacters&&(a=a.replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,"")),e.uppercase&&(a=a.toUpperCase()),e.vertical&&(a=a.split("").join(`
1443
- `)),a},Cs=(n,t)=>n.map((e,a)=>[e,t[a]]),ws=(n="center",t=!1)=>t?"center":n,ur=n=>n==="left"?"start":n==="right"?"end":"middle",me=(n,t,e)=>n.fontData?{...n,...(()=>{if(n.algorithm===It.Traditional){const r=ms(t,n,e,n.lineHeight);return{text:r.lines.join(`
1444
- `),height:r.requiredHeight,width:r.requiredWidth,fontSize:r.fontSize,input:t}}else return{text:t}})()}:n,Ar=1.1;function Mt(n,t){return hr(n,t.getTemplatingContext())}function hr(n,t){try{n=wi.compile(n)(t)}catch(e){console.error("failed to render templated text",e)}return n}const ys=n=>{const e=(n.rotation||0)*Math.PI/180,a=Math.cos(e),r=-Math.sin(e),i=`text-path-${n.id}`,o=`text-fill-${n.id}`,s=n.x+(n.curved?0:n.width/2),l=n.y+(n.curved?0:n.height/2),c=hr(n.text||"",n._renderingConfiguration?.templatingContext),d=c.split(`
1445
- `),u=n.strokeColor?.browserValue&&n.strokeThickness?n.strokeColor?.browserValue:void 0,A=n.strokeColor?.browserValue&&n.strokeThickness?n.strokeThickness:void 0;if(n.curved&&!n.paths||!n.fontData)return null;const h=()=>n.textFillImage?`url("#${o}")`:n._renderingConfiguration?.spotColors&&n.fillSpotColorDefinition?`${n.fill} ${Kn(n.fillSpotColorDefinition)}`:n.fill;return P.jsxs(P.Fragment,{children:[P.jsxs("defs",{children:[n.textFillImage&&P.jsx("pattern",{id:o,patternUnits:"userSpaceOnUse",width:n.textFillImage.scale*n.textFillImage.width,height:n.textFillImage.scale*n.textFillImage.height,x:0,y:0,children:P.jsx("image",{href:n.textFillImage.src,xlinkHref:n.textFillImage.src,width:n.textFillImage.scale*n.textFillImage.width,height:n.textFillImage.scale*n.textFillImage.height})}),P.jsx("style",{type:"text/css",dangerouslySetInnerHTML:{__html:`
1450
+ `)??[""],e.input===n&&t.width===e.width&&t.height===e.height&&t.lineHeight===e.lineHeight)return{lines:s,requiredHeight:t.height,requiredWidth:Ne(s,t.width,o,r),fontSize:t.fontSize};const l=t.width!==e.width!=(t.height!==e.height);return t.lineHeight===e.lineHeight&&!l&&e.input===n?{lines:s,requiredHeight:t.height,requiredWidth:Ne(s,t.width,o,r),fontSize:ps(s,r,i,t.width,t.height,a)}:An(t,n,t.fontSize,o,r,a)},Cs=(n,t,e,a,r)=>{const o=yt(t.assetUrl).getFont();let s={...n};const l={...n},c=ur(a,e/o.unitsPerEm,yt(t.assetUrl));return c&&c<s.width&&(l.width=c,r==="left"?(l.left+=Math.sin(s.rotation*Math.PI/360)*(s.width-c),l.top+=Math.sin(s.rotation*Math.PI/180)*(c-s.width)/2):r==="right"?l.left+=s.width-c:l.left+=(s.width-c)/2,a&&ys(a,a).every(([d,u])=>d===u)&&(s=l)),s},ea=1,pt=(n,t,e)=>{let a=0;const r=e.getGlyphs(n);return r.forEach((i,o)=>{if(i.advanceWidth&&(a+=i.advanceWidth),o<r.length-1){const s=e.getKerningValue(i,r[o+1]);a+=s||0}}),a*=t,a},ws=(n,t,e)=>{let a=0;const r=e.getGlyphs(n);return r.forEach((i,o)=>{if(i.advanceWidth&&(a=Math.max(a,i.advanceWidth)),o<r.length-1){const s=e.getKerningValue(i,r[o+1]);a=Math.max(a,s||0)}}),a*=t,a},ur=(n,t,e)=>{let a=0;return n.forEach(r=>{a=Math.max(a,pt(r,t,e))}),a},hn={stripControlCharacters:!0,vertical:!1,uppercase:!1},Qe=(n,t=hn)=>{const e={...hn,...t};let a=n||"";return e.stripControlCharacters&&(a=a.replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,"")),e.uppercase&&(a=a.toUpperCase()),e.vertical&&(a=a.split("").join(`
1451
+ `)),a},ys=(n,t)=>n.map((e,a)=>[e,t[a]]),Ss=(n="center",t=!1)=>t?"center":n,Ar=n=>n==="left"?"start":n==="right"?"end":"middle",pe=(n,t,e)=>n.fontData?{...n,...(()=>{if(n.algorithm===Pt.Traditional){const r=fs(t,n,e,n.lineHeight);return{text:r.lines.join(`
1452
+ `),height:r.requiredHeight,width:r.requiredWidth,fontSize:r.fontSize,input:t}}else return{text:t}})()}:n,hr=1.1;function Tt(n,t){return gr(n,t.getTemplatingContext())}function gr(n,t){try{n=yi.compile(n)(t)}catch(e){console.error("failed to render templated text",e)}return n}const vs=n=>{const e=(n.rotation||0)*Math.PI/180,a=Math.cos(e),r=-Math.sin(e),i=`text-path-${n.id}`,o=`text-fill-${n.id}`,s=n.x+(n.curved?0:n.width/2),l=n.y+(n.curved?0:n.height/2),c=gr(n.text||"",n._renderingConfiguration?.templatingContext),d=c.split(`
1453
+ `),u=n.strokeColor?.browserValue&&n.strokeThickness?n.strokeColor?.browserValue:void 0,A=n.strokeColor?.browserValue&&n.strokeThickness?n.strokeThickness:void 0;if(n.curved&&!n.paths||!n.fontData)return null;const h=()=>n.textFillImage?`url("#${o}")`:n._renderingConfiguration?.spotColors&&n.fillSpotColorDefinition?`${n.fill} ${_n(n.fillSpotColorDefinition)}`:n.fill;return P.jsxs(P.Fragment,{children:[P.jsxs("defs",{children:[n.textFillImage&&P.jsx("pattern",{id:o,patternUnits:"userSpaceOnUse",width:n.textFillImage.scale*n.textFillImage.width,height:n.textFillImage.scale*n.textFillImage.height,x:0,y:0,children:P.jsx("image",{href:n.textFillImage.src,xlinkHref:n.textFillImage.src,width:n.textFillImage.scale*n.textFillImage.width,height:n.textFillImage.scale*n.textFillImage.height})}),P.jsx("style",{type:"text/css",dangerouslySetInnerHTML:{__html:`
1446
1454
  @font-face {
1447
1455
  font-family: '${n.fontData.name}';
1448
1456
  src: url('${n.fontData.assetUrl}') format('truetype');
1449
1457
  }
1450
- `}}),n.curved&&n.paths?P.jsx("path",{id:i,d:n.paths[0]}):void 0]}),n._renderingConfiguration?.debug?P.jsx("rect",{stroke:"blue",fill:"none",x:n.x,y:n.y,width:n.width,height:n.height}):void 0,P.jsx("g",{mask:n.stepName?void 0:n.mask,children:P.jsx("g",{transform:`matrix(${a}, ${-r}, ${r}, ${a}, ${s}, ${l})`,children:P.jsx("text",{xmlSpace:"preserve",fontFamily:`'${n.fontData.name}'`,fontSize:n.fontSize,fontStyle:"normal",fontWeight:"normal",fill:h(),style:{whiteSpace:"pre",userSelect:"none"},stroke:u,strokeWidth:A,children:n.curved?P.jsx(vs,{text:c,curvedPathId:i,align:n.align}):d.map((g,p)=>P.jsx(Ss,{align:n.vertical?"center":n.align,fontSize:n.fontSize,thisLineIdx:p,amountLines:d.length,text:g,textboxHeight:n.height,textboxWidth:n.width,lineHeight:n.lineHeight,vertical:n.vertical,verticalAlign:n.verticalAlign,fontData:n.fontData},p))})})})]})},Ss=n=>{const t=()=>{if(n.lineHeight!==void 0)return n.lineHeight*n.fontSize;const r=wt(n.fontData.assetUrl),i=r.getFont(),o=n.fontSize/i.unitsPerEm;return r.getApproximateHeight()*o},e=()=>n.align==="left"?-n.textboxWidth/2:n.align==="right"?n.textboxWidth/2:0,a=()=>{const r=t(),i=n.textboxHeight/2;if(n.verticalAlign==="top")return-i+n.fontSize*3/4+n.thisLineIdx*r;if(n.verticalAlign==="bottom"){const s=n.amountLines-1-n.thisLineIdx;return i-n.fontSize/4-s*r}const o=(n.amountLines-1)/2;return(n.thisLineIdx-o)*r+n.fontSize/4};return P.jsx("tspan",{textAnchor:ur(n.align),x:e(),y:`${a()}px`,children:n.text})},vs=n=>{const t=`#${n.curvedPathId}`,e=()=>n.align==="left"?"0%":n.align==="right"?"100%":"50%";return P.jsx("textPath",{startOffset:e(),textAnchor:ur(n.align),href:t,xlinkHref:t,children:n.text})},Es=n=>{if(n.cachedObjectURL&&!n._renderingConfiguration?.omitCachedFields)return P.jsx(sr,{id:n.id,src:n.cachedObjectURL,x:n.x,y:n.y,width:n.width,height:n.height,rotation:n.rotation,preserveAspectRatio:"none",immutable:n.immutable,mask:n.stepName?void 0:n.mask});const t=n.rotation||0,e=Ct(t),a=Math.cos(e),r=-Math.sin(e),i=`
1458
+ `}}),n.curved&&n.paths?P.jsx("path",{id:i,d:n.paths[0]}):void 0]}),n._renderingConfiguration?.debug?P.jsx("rect",{stroke:"blue",fill:"none",x:n.x,y:n.y,width:n.width,height:n.height}):void 0,P.jsx("g",{mask:n.stepName?void 0:n.mask,children:P.jsx("g",{transform:`matrix(${a}, ${-r}, ${r}, ${a}, ${s}, ${l})`,children:P.jsx("text",{xmlSpace:"preserve",fontFamily:`'${n.fontData.name}'`,fontSize:n.fontSize,fontStyle:"normal",fontWeight:"normal",fill:h(),style:{whiteSpace:"pre",userSelect:"none"},stroke:u,strokeWidth:A,children:n.curved?P.jsx(bs,{text:c,curvedPathId:i,align:n.align}):d.map((g,p)=>P.jsx(Es,{align:n.vertical?"center":n.align,fontSize:n.fontSize,thisLineIdx:p,amountLines:d.length,text:g,textboxHeight:n.height,textboxWidth:n.width,lineHeight:n.lineHeight,vertical:n.vertical,verticalAlign:n.verticalAlign,fontData:n.fontData},p))})})})]})},Es=n=>{const t=()=>{if(n.lineHeight!==void 0)return n.lineHeight*n.fontSize;const r=yt(n.fontData.assetUrl),i=r.getFont(),o=n.fontSize/i.unitsPerEm;return r.getApproximateHeight()*o},e=()=>n.align==="left"?-n.textboxWidth/2:n.align==="right"?n.textboxWidth/2:0,a=()=>{const r=t(),i=n.textboxHeight/2;if(n.verticalAlign==="top")return-i+n.fontSize*3/4+n.thisLineIdx*r;if(n.verticalAlign==="bottom"){const s=n.amountLines-1-n.thisLineIdx;return i-n.fontSize/4-s*r}const o=(n.amountLines-1)/2;return(n.thisLineIdx-o)*r+n.fontSize/4};return P.jsx("tspan",{textAnchor:Ar(n.align),x:e(),y:`${a()}px`,children:n.text})},bs=n=>{const t=`#${n.curvedPathId}`,e=()=>n.align==="left"?"0%":n.align==="right"?"100%":"50%";return P.jsx("textPath",{startOffset:e(),textAnchor:Ar(n.align),href:t,xlinkHref:t,children:n.text})},Bs=n=>{if(n.cachedObjectURL&&!n._renderingConfiguration?.omitCachedFields)return P.jsx(lr,{id:n.id,src:n.cachedObjectURL,x:n.x,y:n.y,width:n.width,height:n.height,rotation:n.rotation,preserveAspectRatio:"none",immutable:n.immutable,mask:n.stepName?void 0:n.mask});const t=n.rotation||0,e=wt(t),a=Math.cos(e),r=-Math.sin(e),i=`
1451
1459
  matrix(1, 0, 0, 1, ${n.x}, ${n.y})
1452
1460
  matrix(1, 0, 0, 1, ${n.width/2}, ${n.height/2})
1453
1461
  matrix(${a}, ${-r}, ${r}, ${a}, 0, 0)
1454
1462
  matrix(1, 0, 0, 1, ${-n.width/2}, ${-n.height/2})
1455
- `;if(!n.svg)throw new Error(`Illustration element ${n.id} (stepName ${n.stepName}) lacked svg from src ${n.src} at render time.`);return P.jsx("g",{mask:n.stepName?void 0:n.mask,children:P.jsx("g",{transform:i,dangerouslySetInnerHTML:{__html:Ta(n.svg,n.width,n.height,n.colors,n._renderingConfiguration?.spotColors)}})})};class gr{constructor(){this.id=M(),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();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 r=this.prevCommands.filter(i=>i.sequenceId===t).pop();r&&(this.prevCommands=this.prevCommands.filter(i=>i.sequenceId!==t),r?.overrideOldState(e),this.prevCommands.push(r))}getLayoutById(t){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const e=this.state.transaction?.layouts?.[t],a=e?.layout;if(!a)throw new Error(`No layout: ${t}`);const r=[...e?.elements||[]];return this.getLayoutDataWithState(a,r)}getAllLayouts(){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const t=[...Object.keys(this.state.transaction?.layouts)];return[...new Set(t)].map(a=>this.getLayoutById(a))}getLayoutDataWithState(t,e){return{layoutState:{layout:t,elements:e},getComponentWithProps:a=>Ye(t,e,a)}}initialize(t,e){if(e){this.state={transaction:e};return}let a={serializableWorkflow:{steps:[]},layouts:{}};t.forEach(r=>{a=new Va(r).apply(a)}),this.runStateCallbacks(),this.state={transaction:a}}commandReducer(t,e){const a=t.transaction||{layouts:{},serializableWorkflow:{steps:[]}};return{...t,transaction:e.apply(a)}}}const mr=n=>n.type===D.Image?P.jsx(sr,{...n},n.id):n.type===D.Frame?P.jsx(cs,{...n},n.id):n.type===D.Illustration?P.jsx(Es,{...n},n.id):n.type===D.Textbox?P.jsx(ys,{...n},n.id):n.type===D.Group?P.jsx(lr,{...n},n.id):null,Ye=(n,t,e)=>{const a=e.renderingConfiguration,r=a?.removeExcludedElements?t.filter(i=>!i.excludeFromExport):t;return P.jsx(Ko,{preserveAspectRatio:void 0,elements:r,backgroundColor:n.transparentBackground?void 0:e.backgroundColor?e.backgroundColor:"white",width:e.width||n.width,height:e.height||n.height,viewBox:a?.region?{x:a.region.left,y:a.region.top,width:a.region.width,height:a.region.height}:{x:0,y:0,width:n.width,height:n.height},configuration:a,outlineArea:e.outlineArea,maxHeight:e.maxHeight,maxWidth:e.maxWidth,position:e.position,borderRadius:e.borderRadius,outlineColor:e.outlineColor})};function Oa(n){return n.sort((t,e)=>{const a=t.layer||0,r=e.layer||0;if(a<r)return-1;if(a>r)return 1;const i=t.layerIndex||0,o=e.layerIndex||0;return i<o?-1:i>o?1:0})}const pe=n=>{const t=n.variants;if(t){if(t.length===1)return t[0];if(n.defaultVariant!==void 0)return t.find(e=>e.id===n.defaultVariant)}},dt=new Map,Dt=new Map,ea=new Map,pr=async(n,t)=>{if(!t){if(!n)throw new Error("No region or src supplied. Cannot construct frame!");return Ca(n)}return tt(t)},Ca=n=>{const t=n.width,e=n.height;return`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 ${t} ${e}'>
1463
+ `;if(!n.svg)throw new Error(`Illustration element ${n.id} (stepName ${n.stepName}) lacked svg from src ${n.src} at render time.`);return P.jsx("g",{mask:n.stepName?void 0:n.mask,children:P.jsx("g",{transform:i,dangerouslySetInnerHTML:{__html:Na(n.svg,n.width,n.height,n.colors,n._renderingConfiguration?.spotColors)}})})};class mr{constructor(){this.id=T(),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();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 r=this.prevCommands.filter(i=>i.sequenceId===t).pop();r&&(this.prevCommands=this.prevCommands.filter(i=>i.sequenceId!==t),r?.overrideOldState(e),this.prevCommands.push(r))}getLayoutById(t){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const e=this.state.transaction?.layouts?.[t],a=e?.layout;if(!a)throw new Error(`No layout: ${t}`);const r=[...e?.elements||[]];return this.getLayoutDataWithState(a,r)}getAllLayouts(){if(!this.state)throw new Error(`State not initialized for cc ${this.id}!`);const t=[...Object.keys(this.state.transaction?.layouts)];return[...new Set(t)].map(a=>this.getLayoutById(a))}getLayoutDataWithState(t,e){return{layoutState:{layout:t,elements:e},getComponentWithProps:a=>Je(t,e,a)}}initialize(t,e){if(e){this.state={transaction:e};return}let a={serializableWorkflow:{steps:[]},layouts:{}};t.forEach(r=>{a=new za(r).apply(a)}),this.runStateCallbacks(),this.state={transaction:a}}commandReducer(t,e){const a=t.transaction||{layouts:{},serializableWorkflow:{steps:[]}};return{...t,transaction:e.apply(a)}}}const pr=n=>n.type===k.Image?P.jsx(lr,{...n},n.id):n.type===k.Frame?P.jsx(us,{...n},n.id):n.type===k.Illustration?P.jsx(Bs,{...n},n.id):n.type===k.Textbox?P.jsx(vs,{...n},n.id):n.type===k.Group?P.jsx(cr,{...n},n.id):null,Je=(n,t,e)=>{const a=e.renderingConfiguration,r=a?.removeExcludedElements?t.filter(i=>!i.excludeFromExport):t;return P.jsx(Xo,{preserveAspectRatio:void 0,elements:r,backgroundColor:n.transparentBackground?void 0:e.backgroundColor?e.backgroundColor:"white",width:e.width||n.width,height:e.height||n.height,viewBox:a?.region?{x:a.region.left,y:a.region.top,width:a.region.width,height:a.region.height}:{x:0,y:0,width:n.width,height:n.height},configuration:a,outlineArea:e.outlineArea,maxHeight:e.maxHeight,maxWidth:e.maxWidth,position:e.position,borderRadius:e.borderRadius,outlineColor:e.outlineColor})};function $a(n){return n.sort((t,e)=>{const a=t.layer||0,r=e.layer||0;if(a<r)return-1;if(a>r)return 1;const i=t.layerIndex||0,o=e.layerIndex||0;return i<o?-1:i>o?1:0})}const fe=n=>{const t=n.variants;if(t){if(t.length===1)return t[0];if(n.defaultVariant!==void 0)return t.find(e=>e.id===n.defaultVariant)}},dt=new Map,kt=new Map,aa=new Map,fr=async(n,t)=>{if(!t){if(!n)throw new Error("No region or src supplied. Cannot construct frame!");return wa(n)}return Z(t)},wa=n=>{const t=n.width,e=n.height;return`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 ${t} ${e}'>
1456
1464
  <path id="target-path" d='M0 0 h ${t} v ${e} h ${-t} Z' />
1457
1465
  </svg>
1458
- `},bs=(n,t)=>{if(!t)return;const e=t.variants?.find(a=>a.id===n.frameVariantId)||pe(t);if(!e)throw new Error(`No variant with ID: ${n.frameVariantId}`);if(!e.asset)throw new Error(`No asset for variant with ID: ${n.frameVariantId}`);return e},fe=async n=>{if(ea.has(n))return ea.get(n);const e=(async()=>{if(Dt.has(n))return Dt.get(n);await new Promise(A=>setTimeout(A,0));const r=lt().parseFromString(n,"image/svg+xml"),i=r.querySelector("svg");if(!i)throw new Error("Malformed frame SVG: <svg> tag not found");const o=i.getAttribute("viewBox");if(!o)throw new Error("SVG missing viewBox.");const s=o.split(" "),l=parseFloat(s[3])||1,c=parseFloat(s[2])||1,d=r.getElementById("target-path"),u=r.getElementsByClassName("st0").item(0);if(d){const A=d.getAttribute("d");if(!A)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const h={path:A,width:c,height:l};return Dt.set(A,h),h}if(u){const A=u.getAttribute("d");if(!A)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const h={path:A,width:c,height:l};return Dt.set(A,h),h}throw new Error("Malformed frame SVG")})();return ea.set(n,e),e},$a=(n,t,e,a)=>{const r=t.width/t.height,i=n.width/n.height;let o;a?i>r?o=t.height/n.height:o=t.width/n.width:i>r?o=t.width/n.width:o=t.height/n.height,e?.scale!==void 0&&(o*=e?.scale);const s=t.width/2,l=t.height/2,c=s-n.width/2*o,d=e?.left||c,u=l-n.height/2*o,A=e?.top||u;return{x:d,y:A,zoom:o}},wa=async n=>{if(dt.has(n))return dt.get(n);if(n.startsWith("data:image/svg+xml")){const e=yi.dataUriToBuffer(n),a=new TextDecoder().decode(e.buffer),r=La(a),i={src:n,width:r.width,height:r.height,aspect:r.width/r.height};return dt.set(n,i),i}if((n.split(".").pop()?.toLowerCase()??"")==="svg"){const e=await Ua(n),a=e.width,r=e.height,i={src:n,width:a,height:r,aspect:a/r};return dt.set(n,i),i}else{const e=await ze(n,!0),a=await Ae(e),r={src:n,width:a.width,height:a.height,aspect:a.width/a.height};return dt.set(n,r),r}},Ua=async n=>{const t=await tt(n);return La(t)},hn=n=>n.endsWith("mm")?Number(n.replace("mm",""))*3.7795275591:n.endsWith("px")?Number(n.replace("px","")):Number(n),La=n=>{const a=lt().parseFromString(n,"image/svg+xml").querySelector("svg");if(!a)throw new Error("No svg tag found, this svg must be malformed!");const r=a.getAttribute("viewBox"),i=a.getAttribute("width"),o=a.getAttribute("height"),s=o&&i?[0,0,hn(i),hn(o)]:r?.split(" ").map(l=>Number(l));if(!s)throw new Error("No viewbox or width/height values detected on SVG file!");return{width:s[2],height:s[3]}},Gt=(n,t)=>{const e=n.layoutState.elements.filter(r=>r.layer===t),a=Math.max(...e.map(r=>r.layerIndex).filter(r=>r!==void 0));return Math.max(a,0)+1},fr=async n=>new Promise(t=>{tt(n).then(e=>{t(e)}).catch(e=>console.error(e))}),aa=new Map,se=async n=>{if(aa.has(n))return aa.get(n);const t=async r=>new Promise((i,o)=>{try{if(!(!!URL&&!!URL.createObjectURL))throw new Error("Environment incapable of generating ObjectURL");r.toBlob(l=>{if(!l)throw r.width===0||r.height===0?new Error(`Canvas dimensions are invalid (${r.width},${r.height})`):r.width*r.height>=268435456?new Error(`Canvas dimensions exceed device limit (${r.width},${r.height})`):new Error("Couldn't generate object URL for Illustration, the blob was undefined!");i(URL.createObjectURL(l))})}catch(s){o(s)}}),a=(async()=>{const o=lt().parseFromString(n,"image/svg+xml").firstElementChild;if(!o)throw new Error("Failed to read SVG");const l=yt().serializeToString(o),c=ft(),d=c.getContext("2d"),u=await xa.Pith.from(d,l,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:ft,createImage:ue,DOMParser:Ma(),fetch:it}),A=o.getAttribute("width"),h=o.getAttribute("height"),g=2048;if(h&&A){const p=parseFloat(h),f=parseFloat(A)/p;f>1?u.resize(g,g/f):u.resize(g*f,g)}else u.resize(g,g);return await u.render(),await t(c)})();return aa.set(n,a),a},jt=async(n,t,e,a)=>{const r=n.layoutState.layout.useEditableArea&&n.layoutState.layout.editableArea||{width:n.layoutState.layout.width,height:n.layoutState.layout.height,x:0,y:0},i=r.width<r.height?r.width:r.height,o=n.layoutState.layout.useEditableArea?i/1.3:i/2,s={top:r.y+r.height/2-o/2,left:r.x+r.width/2-o/2,width:o,height:o,rotation:0,panelId:n.layoutState.layout.panelId};if(e&&t===D.Illustration){const l=await ot(await fr(e)),A=lt().parseFromString(l.svg,"image/svg+xml").firstElementChild.getAttribute("viewBox");if(!A)throw new Error("SVG missing viewBox.");const h=s.height,g=A.split(" "),p=parseFloat(g[2])||1,m=parseFloat(g[3])||1,f=p/m;s.height=s.width/f,s.top+=(h-s.height)/2}if(e&&t===D.Image){const l=s.height,c=await ze(e),d=await Ae(c),u=d.width/d.height;s.height=s.width/u,s.top+=(l-s.height)/2}if(e&&t===D.Textbox&&a?.text&&a?.fontScale){await Pt(e);const l=wt(e),c=mt(a.text,a?.fontScale,l);s.width=Math.min(c,r.width*.85),s.left=r.x+r.width/2-s.width/2}return s};class Bs{static async getFrame(t,e){const a=await pr(e.region,e.src),r=await fe(a),i=e.region||await jt(t,D.Frame);return{id:M(),x:i.left,y:i.top,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||Gt(t,i.layer||0),rotation:i.rotation,scaleX:i.width/r.width,scaleY:i.height/r.height,path:r.path,dataWidth:r.width,dataHeight:r.height,type:D.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 jt(t,D.Image,e.src);return{id:M(),src:e.src,type:D.Image,y:a.top,x:a.left,rotation:a.rotation,width:a.width,height:a.height,layer:a.layer||0,layerIndex:a.layerIndex||Gt(t,a.layer||0),immutable:a.immutable,preserveAspectRatio:"none"}}static async getTextbox(t,e){const{configuration:a,fontSrc:r,designInputStep:i}=e,o=await Pt(r),s={assetUrl:r,name:o.names.fullName.en},l=i?.text||a.defaultText||"",c=a.replaceableText?a.replaceableText.replace("{{}}",l):l,d=Ne(c,{vertical:a.vertical,uppercase:a.uppercase}),u=e.region||await jt(t,D.Textbox,r,{text:d,fontScale:a.size?a.size/o.unitsPerEm:void 0}),A=me({id:M(),type:D.Textbox,x:u.left,y:u.top,width:u.width,height:u.height,align:ws(a.textAlign,a.vertical),curved:a.curved,fill:i?.color||a.colour||"#000000",fontData:s,layer:u.layer||0,layerIndex:u.layerIndex||Gt(t,u.layer||0),paths:a.paths,rotation:u.rotation,vertical:a.vertical,verticalAlign:a.verticalAlign||"middle",algorithm:It.Traditional,fontSize:a.size||Math.max(Math.round(u.height*.025),1),text:d,input:l},d),h=ps({...u,height:A.height},s,A.fontSize,A?.text?.split(`
1466
+ `},Is=(n,t)=>{if(!t)return;const e=t.variants?.find(a=>a.id===n.frameVariantId)||fe(t);if(!e)throw new Error(`No variant with ID: ${n.frameVariantId}`);if(!e.asset)throw new Error(`No asset for variant with ID: ${n.frameVariantId}`);return e},Ce=async n=>{if(aa.has(n))return aa.get(n);const e=(async()=>{if(kt.has(n))return kt.get(n);await new Promise(A=>setTimeout(A,0));const r=ot().parseFromString(n,"image/svg+xml"),i=r.querySelector("svg");if(!i)throw new Error("Malformed frame SVG: <svg> tag not found");const o=i.getAttribute("viewBox");if(!o)throw new Error("SVG missing viewBox.");const s=o.split(" "),l=parseFloat(s[3])||1,c=parseFloat(s[2])||1,d=r.getElementById("target-path"),u=r.getElementsByClassName("st0").item(0);if(d){const A=d.getAttribute("d");if(!A)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const h={path:A,width:c,height:l};return kt.set(A,h),h}if(u){const A=u.getAttribute("d");if(!A)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const h={path:A,width:c,height:l};return kt.set(A,h),h}throw new Error("Malformed frame SVG")})();return aa.set(n,e),e},Ua=(n,t,e,a)=>{const r=t.width/t.height,i=n.width/n.height;let o;a?i>r?o=t.height/n.height:o=t.width/n.width:i>r?o=t.width/n.width:o=t.height/n.height,e?.scale!==void 0&&(o*=e?.scale);const s=t.width/2,l=t.height/2,c=s-n.width/2*o,d=e?.left||c,u=l-n.height/2*o,A=e?.top||u;return{x:d,y:A,zoom:o}},ya=async n=>{if(dt.has(n))return dt.get(n);if(n.startsWith("data:image/svg+xml")){const e=Si.dataUriToBuffer(n),a=new TextDecoder().decode(e.buffer),r=Va(a),i={src:n,width:r.width,height:r.height,aspect:r.width/r.height};return dt.set(n,i),i}if((n.split(".").pop()?.toLowerCase()??"")==="svg"){const e=await La(n),a=e.width,r=e.height,i={src:n,width:a,height:r,aspect:a/r};return dt.set(n,i),i}else{const e=await qe(n,!0),a=await ge(e),r={src:n,width:a.width,height:a.height,aspect:a.width/a.height};return dt.set(n,r),r}},La=async n=>{const t=await Z(n);return Va(t)},gn=n=>n.endsWith("mm")?Number(n.replace("mm",""))*3.7795275591:n.endsWith("px")?Number(n.replace("px","")):Number(n),Va=n=>{const a=ot().parseFromString(n,"image/svg+xml").querySelector("svg");if(!a)throw new Error("No svg tag found, this svg must be malformed!");const r=a.getAttribute("viewBox"),i=a.getAttribute("width"),o=a.getAttribute("height"),s=o&&i?[0,0,gn(i),gn(o)]:r?.split(" ").map(l=>Number(l));if(!s)throw new Error("No viewbox or width/height values detected on SVG file!");return{width:s[2],height:s[3]}},Wt=(n,t)=>{const e=n.layoutState.elements.filter(r=>r.layer===t),a=Math.max(...e.map(r=>r.layerIndex).filter(r=>r!==void 0));return Math.max(a,0)+1},Cr=async n=>new Promise(t=>{Z(n).then(e=>{t(e)}).catch(e=>console.error(e))}),na=new Map,ce=async n=>{if(na.has(n))return na.get(n);const t=async r=>new Promise((i,o)=>{try{if(!(!!URL&&!!URL.createObjectURL))throw new Error("Environment incapable of generating ObjectURL");r.toBlob(l=>{if(!l)throw r.width===0||r.height===0?new Error(`Canvas dimensions are invalid (${r.width},${r.height})`):r.width*r.height>=268435456?new Error(`Canvas dimensions exceed device limit (${r.width},${r.height})`):new Error("Couldn't generate object URL for Illustration, the blob was undefined!");i(URL.createObjectURL(l))})}catch(s){o(s)}}),a=(async()=>{const o=ot().parseFromString(n,"image/svg+xml").firstElementChild;if(!o)throw new Error("Failed to read SVG");const l=St().serializeToString(o),c=Ct(),d=c.getContext("2d"),u=await Fa.Pith.from(d,l,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:Ct,createImage:he,DOMParser:Ta(),fetch:nt}),A=o.getAttribute("width"),h=o.getAttribute("height"),g=2048;if(h&&A){const p=parseFloat(h),C=parseFloat(A)/p;C>1?u.resize(g,g/C):u.resize(g*C,g)}else u.resize(g,g);return await u.render(),await t(c)})();return na.set(n,a),a},Ht=async(n,t,e,a)=>{const r=n.layoutState.layout.useEditableArea&&n.layoutState.layout.editableArea||{width:n.layoutState.layout.width,height:n.layoutState.layout.height,x:0,y:0},i=r.width<r.height?r.width:r.height,o=n.layoutState.layout.useEditableArea?i/1.3:i/2,s={top:r.y+r.height/2-o/2,left:r.x+r.width/2-o/2,width:o,height:o,rotation:0,panelId:n.layoutState.layout.panelId};if(e&&t===k.Illustration){const l=await rt(await Cr(e)),A=ot().parseFromString(l.svg,"image/svg+xml").firstElementChild.getAttribute("viewBox");if(!A)throw new Error("SVG missing viewBox.");const h=s.height,g=A.split(" "),p=parseFloat(g[2])||1,m=parseFloat(g[3])||1,C=p/m;s.height=s.width/C,s.top+=(h-s.height)/2}if(e&&t===k.Image){const l=s.height,c=await qe(e),d=await ge(c),u=d.width/d.height;s.height=s.width/u,s.top+=(l-s.height)/2}if(e&&t===k.Textbox&&a?.text&&a?.fontScale){await xt(e);const l=yt(e),c=pt(a.text,a?.fontScale,l);s.width=Math.min(c,r.width*.85),s.left=r.x+r.width/2-s.width/2}return s};class Ps{static async getFrame(t,e){const a=await fr(e.region,e.src),r=await Ce(a),i=e.region||await Ht(t,k.Frame);return{id:T(),x:i.left,y:i.top,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||Wt(t,i.layer||0),rotation:i.rotation,scaleX:i.width/r.width,scaleY:i.height/r.height,path:r.path,dataWidth:r.width,dataHeight:r.height,type:k.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 Ht(t,k.Image,e.src);return{id:T(),src:e.src,type:k.Image,y:a.top,x:a.left,rotation:a.rotation,width:a.width,height:a.height,layer:a.layer||0,layerIndex:a.layerIndex||Wt(t,a.layer||0),immutable:a.immutable,preserveAspectRatio:"none"}}static async getTextbox(t,e){const{configuration:a,fontSrc:r,designInputStep:i}=e,o=await xt(r),s={assetUrl:r,name:o.names.fullName.en},l=i?.text||a.defaultText||"",c=a.replaceableText?a.replaceableText.replace("{{}}",l):l,d=Qe(c,{vertical:a.vertical,uppercase:a.uppercase}),u=e.region||await Ht(t,k.Textbox,r,{text:d,fontScale:a.size?a.size/o.unitsPerEm:void 0}),A=pe({id:T(),type:k.Textbox,x:u.left,y:u.top,width:u.width,height:u.height,align:Ss(a.textAlign,a.vertical),curved:a.curved,fill:i?.color||a.colour||"#000000",fontData:s,layer:u.layer||0,layerIndex:u.layerIndex||Wt(t,u.layer||0),paths:a.paths,rotation:u.rotation,vertical:a.vertical,verticalAlign:a.verticalAlign||"middle",algorithm:Pt.Traditional,fontSize:a.size||Math.max(Math.round(u.height*.025),1),text:d,input:l},d),h=Cs({...u,height:A.height},s,A.fontSize,A?.text?.split(`
1459
1467
  `)||[],A.align);return{...A,x:h.left,y:h.top+(u.height-h.height)/2,width:h.width,height:h.height}}static async getShape(t,e){const a=`
1460
1468
  <svg
1461
1469
  xmlns="http://www.w3.org/2000/svg"
@@ -1476,7 +1484,7 @@
1476
1484
  fill="${e.color}"
1477
1485
  />
1478
1486
  </svg>
1479
- `,r={};r["spiff-fill-shape"]={browserValue:e.color};const i=e.region||await jt(t,D.Illustration),o=M();return{stepRegion:e.region,colors:r,id:o,svg:a,type:D.Illustration,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||Gt(t,i.layer||0),immutable:i.immutable}}static async getIllustration(t,e){const a=e.region||await jt(t,D.Illustration,e.src),r=await ot(await fr(e.src)),i=await se(r.svg),o=M();return{cachedObjectURL:i,stepRegion:e.region,colors:r.colors,id:o,src:e.src,svg:r.svg,type:D.Illustration,y:a.top,x:a.left,rotation:a.rotation,width:a.width,height:a.height,layer:a.layer||0,layerIndex:a.layerIndex||Gt(t,a.layer||0),immutable:a.immutable}}}class L extends Error{constructor(){super("Element not found!"),Object.setPrototypeOf(this,L.prototype)}}const $=(n,t)=>K(n,t).elements.find(r=>r.id===n),K=(n,t)=>{const e=Object.values(t).find(a=>a.elements.some(r=>r.id===n));if(!e)throw new L;return e},Z=(n,t)=>{const e=[...t.elements.filter(r=>r.id!==n.id),n],a=Oa(e);return{layout:t.layout,elements:a,modificationID:M()}},ya=async n=>{const t=[...Object.keys(n.layouts)],e=[...new Set(t)];for(let a=0;a<e.length;a++){const r=e[a],i=n.layouts[r];await Promise.all(i.elements.map(async o=>{if(o.type==="illustration"){const s=o;if(s.src&&!s.svg){const l=await tt(s.src),c=await ot(l);s.svg=Ta(c.svg,s.width,s.height,s.colors)}}else if(o.type==="frame"){const s=o;if(s.pattern?.colors&&s.pattern?.src){const l=await tt(s.pattern?.src),c=await ot(l);s.pattern.svg=c.svg}}isNaN(o.x)&&(o.x=0),isNaN(o.y)&&(o.y=0),isNaN(o.width)&&(o.width=0),isNaN(o.height)&&(o.height=0),isNaN(o.rotation)&&(o.rotation=0)}))}for(const a in n.layouts){const r=n.layouts[a].elements.filter(o=>o.type===D.Illustration);for(let o=0;o<r.length;++o){const s=r[o];if(s.src&&s.svg)try{s.cachedObjectURL=await se(s.svg)}catch(l){console.log(l)}}const i=n.layouts[a].elements.filter(o=>o.type===D.Textbox);for(let o=0;o<i.length;++o){const s=i[o];s.fontData?.assetUrl&&await Pt(s.fontData.assetUrl)}}};class Q{undo(){if(!this.oldState)throw new Error("Cannot undo.");return this.oldState}overrideOldState(t){this.oldState=t}}class gn extends Q{constructor(t){super(),this.serializableWorkflow=t}apply(t){return this.oldState=t,{...t,serializableWorkflow:this.serializableWorkflow}}}class Is extends Q{constructor(t,e,a){super(),this.id=t,this.x=e,this.y=a}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a={...e,x:this.x,y:this.y},r=K(e.id,Object.values(t.layouts)),i=Z(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class Ps extends Q{constructor(t,e){super(),this.id=t,this.angle=e}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a={...e,rotation:this.angle},r=K(e.id,Object.values(t.layouts)),i=Z(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class xs extends Q{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=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;let a={...e,width:this.width,height:this.height};if(e.type==="frame"){const o=a;o.scaleX=o.scaleX*this.width/e.width,o.scaleY=o.scaleY*this.height/e.height}else if(e.type==="textbox"){const o=a,s=(!o.algorithm||o.algorithm===It.Autosize?o.text:o.input)??"";a=me(o,s,e)}const r=K(e.id,Object.values(t.layouts)),i=Z(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class R extends Q{constructor(t){super(),this.commands=t}apply(t){return this.oldState=t,this.commands.reduce((e,a)=>a.apply(e),t)}}class Va extends Q{constructor(t){super(),this.layout=t}apply(t){return this.oldState=t,{...t,layouts:{...t.layouts,[this.layout.id]:{elements:[],layout:{...this.layout},modificationID:M()}}}}}class z extends Q{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(s=>s.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||e.length===0){const s=[...e,this.element];return this.element.layerIndex===void 0&&(this.element.layerIndex=this.assignIndex(this.element,s)),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:s,modificationID:M()}}}}const r=e[e.length-1],i=r.productOverlay?r:null;i&&e.pop();let o;if(this.element.layerIndex!==null&&this.element.layerIndex!==void 0)o=[...e,this.element].sort((s,l)=>s.layerIndex!==void 0&&l.layerIndex!==void 0?s.layerIndex-l.layerIndex:0);else{const s=this.assignIndex(this.element,e);this.element.layerIndex=s!==void 0?s:0,o=[...e,this.element]}return i&&o.push(i),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:o,modificationID:M()}}}}assignIndex(t,e){if(e.length===0)return 0;const a=e.filter(r=>(r.layer||0)===(t.layer||0)).sort((r,i)=>(r.layerIndex||0)-(i.layerIndex||0))[e.length-1]?.layerIndex;return a!==void 0?a+1:0}}class xt extends Q{constructor(t){super(),this.id=t}apply(t){this.oldState=t;let e=!1;const a=Object.values(t.layouts).map(i=>(i.elements.filter(s=>s.id!==this.id).length!==i.elements.length&&(e=!0),{...i,elements:i.elements.filter(s=>s.id!==this.id),modificationID:M()}));e||console.log(`Failed to delete element ${this.id}`);const r={};return a.forEach(i=>{r[i.layout.id]=i}),{...t,layouts:r}}}class Cr extends Q{constructor(t,e,a){super(),this.id=t,this.color=e,this.textFillSpotColor=a}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a={...e,fill:this.color,fillSpotColorDefinition:this.textFillSpotColor,textFillImage:void 0},r=K(e.id,Object.values(t.layouts)),i=Z(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class na extends Q{constructor(t,e){super(),this.id=t,this.imageFill=e}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a={...e,textFillImage:this.imageFill},r=K(e.id,Object.values(t.layouts)),i=Z(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class wr extends Q{constructor(t,e){super(),this.id=t,this.size=e}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a={...e,fontSize:this.size},r=K(e.id,Object.values(t.layouts)),i=(!e.algorithm||e.algorithm===It.Autosize?e.text:e.input)??"",o=Z(me(a,i),r);return{...t,layouts:{...t.layouts,[r.layout.id]:o}}}}class Sa extends Q{constructor(t,e){super(),this.id=t,this.fontData=e}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a={...e,fontData:this.fontData},r=K(e.id,Object.values(t.layouts)),i=(!e.algorithm||e.algorithm===It.Autosize?e.text:e.input)??"",o=Z(me(a,i),r);return{...t,layouts:{...t.layouts,[r.layout.id]:o}}}}class yr extends Q{constructor(t,e){super(),this.id=t,this.align=e}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a={...e,align:this.align},r=K(e.id,Object.values(t.layouts)),i=Z(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class Fs extends Q{constructor(t,e,a){super(),this.id=t,this.imageData=e,this.offsets=a}apply(t){this.oldState=t;const e=K(this.id,Object.values(t.layouts)),a=e.elements.findIndex(s=>s.id===this.id),r=e.elements[a].pattern,i=[...e.elements];i.splice(a,1,{...e.elements[a],pattern:{...r,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,svg:this.imageData.svg,colors:this.imageData.colors}});const o={...e,elements:i,modificationID:M()};return{...t,layouts:{...t.layouts,[e.layout.id]:o}}}}class Ds extends Q{constructor(t,e,a,r,i){super(),this.id=t,this.useThreshold=e,this.invertThreshold=a,this.threshold=r,this.thresholdSaturation=i}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a={...e,useThreshold:this.useThreshold,invertThreshold:this.invertThreshold,threshold:this.threshold,thresholdSaturation:this.thresholdSaturation},r=K(e.id,Object.values(t.layouts)),i=Z(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class ks extends Q{constructor(t,e){super(),this.id=t,this.src=e}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a={...e,src:this.src},r=K(e.id,Object.values(t.layouts)),i=Z(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class Sr extends Q{constructor(t,e){super(),this.id=t,this.text=e}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a=K(e.id,Object.values(t.layouts)),r=Z(me(e,this.text,e),a);return{...t,layouts:{...t.layouts,[a.layout.id]:r}}}}class ra extends Q{constructor(t,e,a){super(),this.id=t,this.strokeColor=e,this.strokeThickness=a}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a={...e,strokeColor:this.strokeColor,strokeThickness:this.strokeThickness},r=K(e.id,Object.values(t.layouts)),i=Z(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class va extends Q{constructor(t,e,a){super(),this.id=t,this.className=e,this.fill=a}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a=e.colors||{},r=a[this.className];typeof this.fill=="string"?a[this.className]={browserValue:this.fill,spotColor:r?.spotColor,pmsValue:r?.pmsValue}:a[this.className]={browserValue:this.fill.browserValue,spotColor:r?.spotColor,pmsValue:this.fill.pmsValue};const i={...e,colors:a},o=K(e.id,Object.values(t.layouts)),s=Z(i,o);return{...t,layouts:{...t.layouts,[o.layout.id]:s}}}}class Ms extends Q{constructor(t,e,a){super(),this.id=t,this.svgBody=e,this.objectURL=a}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a={...e,svg:this.svgBody,cachedObjectURL:this.objectURL},r=K(e.id,Object.values(t.layouts)),i=Z(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class Ts extends Q{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!$(this.id,Object.values(t.layouts)).id)throw new L;const a=Object.values(t.layouts).find(o=>o.elements.find(s=>s.id===this.id));if(!a)throw new Error("Layout missing from state!");const r=a.elements.findIndex(o=>o.id===this.id);a.elements.push(a.elements.splice(r,1)[0]);const i=[...a.elements];return i.forEach((o,s)=>o.layerIndex=s),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:i,modificationID:M()}}}}}class Ns extends Q{constructor(t){super(),this.id=t}apply(t){this.oldState=t;const e=$(this.id,Object.values(t.layouts));if(!e.id)throw new L;const a=Object.values(t.layouts).find(s=>s.elements.find(l=>l.id===this.id));if(!a)throw new Error("Layout missing from state!");const r=a.elements.findIndex(s=>s.id===this.id);a.elements.splice(r,1),a.elements.unshift(e);const i=[...a.elements],o=i.splice(r,1)[0];return i.splice(r,0,o),i.forEach((s,l)=>s.layerIndex=l),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:i,modificationID:M()}}}}}class Qs extends Q{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!$(this.id,Object.values(t.layouts)).id)throw new L;const a=Object.values(t.layouts).find(l=>l.elements.find(c=>c.id===this.id));if(!a)throw new Error("Layout missing from state!");const r=a.elements.findIndex(l=>l.id===this.id),i=r+1,o=[...a.elements],s=o.splice(r,1)[0];return o.splice(i,0,s),o.forEach((l,c)=>l.layerIndex=c),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:o,modificationID:M()}}}}}class Rs extends Q{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!$(this.id,Object.values(t.layouts)).id)throw new L;const a=Object.values(t.layouts).find(l=>l.elements.find(c=>c.id===this.id));if(!a)throw new Error("Layout missing from state!");const r=a.elements.findIndex(l=>l.id===this.id),i=r-1,o=[...a.elements],s=o.splice(r,1)[0];return o.splice(i,0,s),o.forEach((l,c)=>l.layerIndex=c),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:o,modificationID:M()}}}}}class mn{constructor(t,e,a){this.processRegion=async r=>{const i=this.layouts.find(l=>l.panelId===r.panelId);if(!i)throw new W(r);let o="";if(this.configuration.type===v.ProductOverlay){let l="";if(this.product?.overlayImageUrl&&(l=this.product.overlayImageUrl),o=l,!l)throw new ie(this.configuration,"Couldn't find an asset for product overlay step")}const s=this.evaluateAssetType();if(s===D.Image){const l=this.configuration.type===v.SilentIllustration?this.configuration.data.asset?.fileLink:this.product?.overlayImageUrl;if(!l)throw new Error("Undefined raster silent step source");const c={stepName:this.configuration.stepName,id:M(),src:l,type:s,y:r.top,x:r.left,width:r.width,height:r.height,layer:r.layer,layerIndex:r.layerIndex,immutable:r.immutable,productOverlay:this.configuration.type===v.ProductOverlay?!0:void 0,rotation:r.rotation,excludeFromExport:this.configuration.data.excludeFromPrint,preserveAspectRatio:"none"};return{regionElement:{id:c.id,region:r},command:new z(c,i)}}else{const l=this.configuration.type===v.SilentIllustration?this.configuration.data.asset?.fileLink:o,d=await ot(await(async()=>new Promise((A,h)=>{if(!l){h("Undefined vector silent step source");return}tt(l,!0).then(g=>{A(g)}).catch(g=>console.error(g))}))()),u={stepName:this.configuration.stepName,id:M(),cachedObjectURL:await se(d.svg),src:l,svg:d.svg,colors:d.colors,type:s,y:r.top,x:r.left,width:r.width,height:r.height,layer:r.layer,layerIndex:r.layerIndex,rotation:r.rotation,immutable:r.immutable,productOverlay:this.configuration.type===v.ProductOverlay?!0:void 0,excludeFromExport:this.configuration.data.excludeFromPrint};return{regionElement:{id:u.id,region:r},command:new z(u,i)}}},this.configuration=t,this.layouts=e,this.product=a||void 0}async trigger(){if(!this.configuration.data.regions)throw new ie(this.configuration,"Missing regions.");if(this.configuration.type===v.SilentIllustration){const t=this.configuration.data.regions.map(this.processRegion);return Promise.all(t)}else return this.configuration.type===v.ProductOverlay?Promise.all(this.configuration.data.regions.map(t=>{if(!this.layouts.find(a=>t.panelId===a.panelId))throw new W(t);return this.processRegion(t)})):Promise.reject("Unknown silent step. This is a bug")}evaluateAssetType(){const t=this.configuration.type===v.ProductOverlay&&this.product?.overlayImageUrl?this.product.overlayImageUrl.toLowerCase():this.configuration.data.asset?.fileLink?.toLowerCase().split("?")[0];return t?.startsWith("data:image/png")||t?.endsWith(".jpeg")||t?.endsWith(".jpg")||t?.endsWith(".png")?D.Image:(t?.endsWith(".svg")||t?.startsWith("image/svg+xml"),D.Illustration)}}const vr=async n=>{const t=`${ut.getServicesApiUrl()}/shortener`;try{return(await(await it(t,{method:"POST",body:JSON.stringify({longUrl:n}),headers:{"Content-Type":"application/json"}})).json()).shortUrl}catch(e){throw console.error(e),new Ve("Failed to shorten URL, see console.")}};class Er{async poll(){try{if(await this.predicate()){this.onSuccess(),this.pollingId>-1&&window.clearInterval(this.pollingId);return}}catch{}this.attempts+=1,this.attempts<this.maxAttempts?this.pollingId=window.setTimeout(this.poll.bind(this),this.interval):this.onFailure()}constructor(t,e,a,r=3e3,i=10){this.onSuccess=e,this.onFailure=a,this.predicate=t,this.attempts=0,this.pollingId=-1,this.interval=r,this.maxAttempts=i,this.poll()}}class Os{async init(t,e,a){return a&&await this.reload(t,e,a),null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),l=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName).map(c=>({id:c.id,region:c.stepRegion}));await e.setSelectionsAndElements(t.stepName,[],l,async()=>{const c=r?.storage?.videoShortUrl,d=r?.storage?.videoUrl;e.updateStorage(t.stepName,{videoShortUrl:c,videoUrl:d})})}async regenerateQRCode(t,e,a,r){const i=async()=>{const h=(await Me([e]))[0],g=h?.versions?.find(p=>p.name==="mpeg4")?.link;return{asset:h,link:g}},o=await new Promise((h,g)=>{new Er(async()=>!!(await i()).link,async()=>{const p=await i();if(!p.link||!p.link)throw new Qt(p.asset);h({rel:"mpeg4",href:p.link})},()=>{g("Poller timed out with 40 attempts @ 3 second interval")},3e3,40)});t.forEach(h=>a.getCommandDispatcher()(new xt(h.id)));const s=r.data.baseUrl.slice(0,4)==="http"?"":"https://",l=new URL(s+r.data.baseUrl);l.searchParams.append("video",btoa(JSON.stringify([o]))),l.pathname=l.pathname+(l.pathname.slice(-1)==="/"?"":"/");const c=l.toString();if(c.length>=2e3)throw new Ve("Cannot create QR code, URL too long.");const d=await vr(c);if(!r.data||!r.data.regions)throw new ie(r,"Missing regions.");const u=await this.regionElements(r),A=await this.command(d,u,a,r.stepName);return A&&(A.command&&a.getCommandDispatcher()(A.command),A.followup&&await A.followup()),await a.setSelectionsAndElements(r.stepName,[],u,async()=>{a.updateStorage(r.stepName,{videoShortUrl:d,videoUrl:o.href})}),d}async regionElements(t){const e=a=>({id:M(),region:a});return t.data.regions.map(e)}async command(t,e,a,r){const i=a.getLayouts(),s=`data:image/svg+xml;base64,${btoa(await kn.toString(t,{type:"svg"}))}`,l=e.map(c=>{const d=c.region,u=i.find(A=>A.panelId===d?.panelId);if(!u&&d)throw new W(d);if(u&&!d)throw new Error("Region not found");if(!u||!d)throw new Error("Neither a region or layout found!");return new z({stepRegion:d,stepName:r,id:c.id,src:s,type:D.Image,y:d.top,x:d.left,width:d.width,height:d.height,rotation:0},u)});return{command:new R(l),followup:async()=>{}}}}const za=new Os;class Qe{constructor(){this.frameSourceSvg=async(t,e)=>{if(!t)return Ca(e);const a=t.asset;if(!a)throw new pt(t);const r=a.fileLink;if(r)return tt(r,!0);throw new Qt(a)}}async init(t,e,a){const r=a?.serializableWorkflow.steps.find(s=>s.stepName===t.stepName);if(r?.storage&&Object.keys(r.storage).length!==0||r?.selectedVariants&&r.selectedVariants.length!==0)return await this.reload(t,e,a),null;t.mandatory&&e.setMandatoryFulfilled(t.stepName,!1),e.markStepsAsInitialised([t.stepName]);let i;const o=e.getWorkflowExperience().getBundle();if(o&&t.globalPropertyAspectConfigurations){const s=o.getGlobalPropertyStateManager(),l=t.globalPropertyAspectConfigurations[0],c=s.getAspectStorage(l.aspectName);c&&c.originalAssetKey&&(i=(await O.getLocalOrFromServer(c.originalAssetKey)).fileLink)}if(t.option&&t.option.variants&&t.option.variants.length>0){const s=t.option,l=j.getDefaultVariant(s);return l?this.selectVariantCommand(t,l,[],e,void 0,i||t.data.placeholderImageUrl):null}return this.selectVariantCommand(t,void 0,[],e,void 0,i||t.data.placeholderImageUrl)}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),l=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName).map(c=>({id:c.id,region:c.stepRegion}));if(!t.option||(t.option.variants||[]).length===0){const c=t.data.regions.map(d=>Ca(d));e.updateStorage(t.stepName,{currentFrameSources:c})}if(r){const c=async()=>{const d=r.storage?.colors,u=r.storage?.framePatternSrc,A=r.storage?.frameOffsetsList;if(e.updateMetadata(t.stepName,{frameOffsetsList:A,framePatternSrc:u}),u){const h=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!h)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(u,h,!0,d),e.updateMetadata(t.stepName,{image:u}),e.updateStorage(t.stepName,{framePatternSrc:u}),this.validateColorCount(t,e)}if(A?.some(h=>h.zoom)){const h=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!h)throw new Error("Frame service unavailable, cannot load pattern!");h.updateOffsets(A)}e.setMandatoryFulfilled(t.stepName,!0)};if(r.selectedVariants&&r.selectedVariants.length>0){const d=r.selectedVariants[0].id;if(t.option&&d){const u=t.option.variants?.find(A=>A.id===d);u&&await e.setSelectionsAndElements(t.stepName,[u],l,async()=>{const A=await Promise.all(t.data.regions.map(h=>this.frameSourceSvg(u,h)));e.updateStorage(t.stepName,{currentFrameSources:A}),await c()})}}else await e.setSelectionsAndElements(t.stepName,[],l,c)}}async availableColors(t,e){return t.data.colorOption?.variants?.map(r=>({fill:r.color,stroke:r.color,variant:r,pmsValue:r.name}))??[]}selectImage(t,e,a,r=!0){const i=Qe.patternSource(e),o=a.getStepStorage(t.stepName)?.framePatternSrc;if(o&&o===i)return Promise.resolve();a.setEditedStatus(t.stepName,!0);const s=e.fileLink||"";return s.endsWith(".pdf")||s.endsWith(".eps")||s.endsWith(".ai")?new Promise(l=>{a.addPoller(new Er(async()=>{const d=(await O.getFromServer(e.key||"")).versions?.find(A=>A.name==="svg");return d?(await it(d.link)).status===200:!1},()=>{O.getLocalOrFromServer(e.key||"").then(c=>{this.loadPatternFromAsset(c,t,a,r).then(l)})},()=>{throw new Ve("Failed to resolve transcoded PDF")}))}):this.loadPatternFromAsset(e,t,a,r)}async selectVariant(t,e,a,r,i){const o=await this.selectVariantCommand(t,e,a,r,i);o&&(o.command&&r.getCommandDispatcher()(o.command),o.followup&&await o.followup())}getCreateElementCommand(t,e,a,r){return new z({id:t,type:D.Frame,x:e.left,y:e.top,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,rotation:e.rotation,scaleX:e.width/r.frameData.width,scaleY:e.height/r.frameData.height,path:r.frameData.path,dataWidth:r.frameData.width,dataHeight:r.frameData.height,stepRegion:e,stepName:r.stepName,disablePlaceholder:r.disablePlaceholder,pattern:r.pattern,immutable:e.immutable},a)}async loadPatternFromString(t,e,a=!0,r=void 0,i){if(t.endsWith("svg")){const o=await Ua(t),s=o.width,l=o.height,c=await tt(t);if(i){const A=c.match(/<(image|linearGradient|radialGradient)(\s|>|\/>)/gim);if(A&&A.length>0)throw new Error("Vector files may not include images or gradients when a color limit is specified.")}const d=await ot(c),u={src:t,width:s,height:l,aspect:s/l,svg:d.svg,colors:r??d.colors};dt.set(t,u),e.setPatternData(u,a)}else{const o=await ze(t,!0),s=await Ae(o),l={src:t,width:s.width,height:s.height,aspect:s.width/s.height,svg:void 0,colors:void 0};dt.set(t,l),e.setPatternData(l,a)}}changeColors(t,e,a){const r=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!r||!r.getImageData()?.svg){console.warn("changeColors was called without an SVG being assigned to a frame step");return}const i=this.calculateColorMetadata(r,t,a);e.updateMetadata(t.stepName,{colors:i.metadataColors}),e.updateStorage(t.stepName,{colors:i.storageColors}),r.setPatternData({...r.getImageData(),colors:i.newColors},!1),this.validateColorCount(t,e)}getUniqueColorCount(t,e){const a=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!a)return 0;const r=a.getImageData()?.colors??{},i=[];for(const o in r){const s=r[o];if(s.pmsValue){const l=s.pmsValue.trim().toLocaleLowerCase();i.includes(l)||i.push(l)}else if(s.browserValue){const l=Jn(s.browserValue);i.includes(l)||i.push(l)}}return i.length}calculateColorMetadata(t,e,a){if(!t.getImageData()?.svg)return{newColors:void 0,metadataColors:void 0,storageColors:void 0};const r={...t.getImageData().colors??{}},i={};Object.entries(r).forEach(([l,c])=>{const d={browserValue:c.browserValue};i[l]=d});for(const[l,c]of a.entries())r[l]={browserValue:c.browserValue,pmsValue:c.pmsValue},i[l]=c;let o=Array.from(Object.values(r)).map(l=>l.browserValue);const s=e.data.colorOption;return s&&s.variants?.forEach(l=>{o=o.map(c=>c.toLowerCase()===l.color?.toLowerCase()?l.name:c)}),{newColors:r,metadataColors:o,storageColors:i}}validateColorCount(t,e){const a=t.data.colorPickerEnabled?t.data.maxColors??0:0;e.setStepError(t.stepName,"colors",a>0&&this.getUniqueColorCount(t,e)>a?"workflow.steps.frame.tooManyColors":void 0)}async selectVariantCommand(t,e,a,r,i,o){const s=r.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!s)throw new Error("Frame service unavailable, cannot load pattern!");const l=await Promise.all(t.data.regions.map(h=>this.frameSourceSvg(e,h)));i&&i(!0);const c=t.data.initialZoomLevel,d=await Promise.all(t.data.regions.map(async(h,g)=>{const p=await fe(l[g]),m=s.getImageData(),f=a.map(B=>new xt(B.id)),w=m?$a(m,p,c&&!t.data.forceImageCover?{scale:c}:void 0,t.data.forceImageCover):void 0,b=m?{id:M(),src:m.src,x:w?.x||0,y:w?.y||0,width:m.width,height:m.height,scaleX:w?.zoom||1,scaleY:w?.zoom||1,rotation:0}:void 0,F=M(),y=r.getLayouts().find(B=>B.panelId===h.panelId);if(!y)throw new W(h);return{command:this.getCreateElementCommand(F,h,y,{frameData:p,pattern:b,disablePlaceholder:t.data.disablePlaceholder,stepName:t.stepName}),regionEl:{id:F,region:h},removeExistingCommands:f}})),u=d.map(h=>h.command),A=d.map(h=>h.removeExistingCommands).flat();return{command:new R([...u,...A]),followup:async()=>{i&&i(!1),await r.setSelectionsAndElements(t.stepName,e?[e]:[],[...d.map(h=>h.regionEl)],async()=>{if(r.updateStorage(t.stepName,{currentFrameSources:l}),o){const h=r.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!h)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(o,h,!0)}})}}}static patternSource(t){const e=t.versions?.find(r=>r.name==="svg");if(e?.link)return e.link;const a=t.fileLink;if(a)return a;throw new Qt(t)}async loadPatternFromAsset(t,e,a,r){const i=Qe.patternSource(t),o=a.markUpdatePending(),s=a.getWorkflowExperience().getStepById(e.stepName)?.frameService;if(!s)throw a.markUpdateCompleted(o),new Error("Frame service unavailable, cannot load pattern!");try{await this.loadPatternFromString(i,s,r,void 0,e.data.colorPickerEnabled&&!!e.data.maxColors&&e.data.maxColors>0)}catch(c){throw a.markUpdateCompleted(o),c}const l=this.calculateColorMetadata(s,e,new Map(Object.entries(s.getImageData()?.colors??{})));a.updateMetadata(e.stepName,{image:i,colors:l.metadataColors}),a.updateStorage(e.stepName,{framePatternSrc:i,colors:l.storageColors}),a.markUpdateCompleted(o),a.setMandatoryFulfilled(e.stepName,!0),a.setInformationResults(a.getInformationResults().filter(c=>c.stepID===e.stepName)),this.validateColorCount(e,a)}}const ht=new Qe;class $s{async getIllustrationBody(t){return new Promise(e=>{tt(t,!0).then(a=>{e(a)}).catch(a=>console.error(a))})}getCreateElementCommand(t,e,a,r){return new z({stepRegion:e,stepName:r.stepName,colors:r.svg.colors,id:t,src:r.src,svg:r.svg.svg,cachedObjectURL:r.objectURL,type:D.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable},a)}getColors(t,e){const a=e.getRegionElements(t.stepName)||[];if(a.length===0)return[];try{return $(a[0].id,e.getAllLayoutData()).colors}catch{return[]}}async init(t,e,a){const r=t.option;if(!r)return null;if(a)return this.reload(t,e,a);{const i=j.getDefaultVariant(r);if(i)return await this.selectVariantCommand(t,i,[],()=>{},e)}return null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=t.option;if(r?.selectedVariants){const c=r.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=s.map(A=>({id:A.id,region:A.stepRegion}));await e.setSelectionsAndElements(t.stepName,[d],u,async()=>{e.updateMetadata(t.stepName,{colors:r.storage?.colors}),e.setMandatoryFulfilled(t.stepName,!0)})}}else throw new Error("Required illustration variant no longer available")}return null}async availableColors(t,e){const a=t.data.colorOption;return a?a?a.variants?.map(r=>({fill:r.color,stroke:r.color,variant:r,pmsValue:r.name})):[]:[]}async changeColorsCommand(t,e,a,r,i){const o={};for(const[d,u]of i.entries())typeof u=="string"?o[d]={browserValue:u,spotColor:void 0,pmsValue:void 0}:o[d]={browserValue:u.browserValue,spotColor:u.spotColor,pmsValue:u.pmsValue};const s=Ta(t,e,a,o),l=await se(s),c=[];for(const d of r){for(const[u,A]of i.entries())c.push(new va(d,u,A));c.push(new Ms(d,s,l))}return new R(c)}async changeColors(t,e,a,r,i){if(e.length===0)return;const o=$(e[0].id,r().map(h=>h.layoutState)),s={...o.colors},l={};Object.entries(s).forEach(([h,g])=>{const p={browserValue:g.browserValue,pmsValue:g.pmsValue},m=g.spotColor;m&&(p.spotColor={profileName:m.profileName,namedColor:m.namedColor}),l[h]=p});for(const[h,g]of i.entries()){const p=typeof g=="string"?g:g.browserValue,m=typeof g=="string"?void 0:g.pmsValue;s[h]={browserValue:p,spotColor:s[h]?.spotColor,pmsValue:m},l[h]={browserValue:p}}let c=Array.from(Object.values(s)).map(h=>h.browserValue);const d=t.data.colorOption;d&&d.variants?.forEach(h=>{c=c.map(g=>g.toLowerCase()===h.color?.toLowerCase()?h.name:g)}),a.updateMetadata(t.stepName,{colors:c});const u=new Map;if(Object.entries(s).forEach(([h,g])=>{u.set(h,g)}),!o.svg)throw new Error("Colors changed before SVG loaded. This should never happen!");const A=await this.changeColorsCommand(o.svg,o.width,o.height,e.map(h=>h.id),u);a.updateStorage(t.stepName,{colors:l}),a.getCommandDispatcher()(A)}async selectVariant(t,e,a,r,i){const o=await this.selectVariantCommand(t,e,a,r,i);o&&(o.command&&i.getCommandDispatcher()(o.command),o.followup&&await o.followup())}async selectVariantCommand(t,e,a,r,i){if(!t.data||!t.data.regions)throw new ie(t,"Missing regions.");r(!0);const o=a.map(f=>new xt(f.id));t.mandatory&&i.setMandatoryFulfilled(t.stepName,!1);const s=e.asset;if(!s)throw new pt(e);const l=s.fileLink;if(!l)throw new Qt(s);const c=await ot(await this.getIllustrationBody(l)),d=await se(c.svg),u=f=>{const w=i.getLayouts().find(F=>F.panelId===f.panelId);if(!w)throw new W(f);const b=M();return{regionElement:{id:b,region:f},command:this.getCreateElementCommand(b,f,w,{stepName:t.stepName,src:l,objectURL:d,svg:c})}},A=t.data.regions.map(u),g=[...A.map(f=>f.command),...o];let p=Array.from(Object.values(c.colors)).map(f=>f.browserValue);const m=t.data.colorOption;return m&&m.variants?.forEach(f=>{p=p.map(w=>w.toLowerCase()===f.color?.toLowerCase()?f.name:w)}),i.updateMetadata(t.stepName,{colors:p}),{command:new R(g),followup:async()=>{await i.setSelectionsAndElements(t.stepName,[e],A.map(w=>w.regionElement),async()=>{i.setMandatoryFulfilled(t.stepName,!0),r(!1)});const f=s.assetConfiguration?.defaultColorVariants||[];if(f.length!==0){const w={};(s.assetConfiguration?.channelNumbers||[]).forEach(F=>{const E=f.find(y=>y.channelNumber===F.number);E&&(w[`${F.id.replace(/\W/g,"")}`]={browserValue:E?.variant?.color||""})}),await this.changeColors(t,A.map(F=>F.regionElement),i,()=>i.getCommandContext().getAllLayouts(),new Map(Object.entries(w)))}if(t.data.colorPickerEnabled){const w=await this.availableColors(t,i)||[],b=Object.keys(c.colors),F=w.length===1&&b.length===1;if(F){const E=w[0],y=b[0];await this.changeColors(t,A.map(B=>B.regionElement),i,()=>i.getCommandContext().getAllLayouts(),new Map([[y,E.variant.color]]))}!F&&f.length===0&&await this.changeColors(t,A.map(E=>E.regionElement),i,()=>i.getCommandContext().getAllLayouts(),new Map)}}}}}const Kt=new $s;class Us{async init(t,e,a){const r=t.option;if(!r)throw new re(t);if(a)await this.reload(t,e,a);else{const i=j.getDefaultVariant(r);if(i)return await this.selectVariantLambda(t,i,e,()=>{})}return null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=t.option;if(!l)throw new re(t);if(r?.selectedVariants){const c=r.selectedVariants[0].id;if(c){const d=l.variants?.find(u=>u.id===c);if(d){const u=d.material,A=s.map(h=>({id:h.id,region:h.stepRegion}));await e.setSelectionsAndElements(t.stepName,[d],A,async()=>{const h=e.getModelContainer();if(h){const g=t.data.targetMaterials.map(p=>h.applyMaterialVariant(p,l.id||"",u||{}));Promise.all(g).then(()=>e.setMandatoryFulfilled(t.stepName,!0))}})}}}}async selectVariant(t,e,a,r){const i=await this.selectVariantLambda(t,e,a,r);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantLambda(t,e,a,r){const i=a.getModelContainer();r(!0);const o=e.material;if(!o)throw r(!1),new pt(e);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[e],[],async()=>{try{i&&t.data.targetMaterials.forEach(s=>{t.option&&i.applyMaterialVariant(s,t.option.id||"",o)}),a.setMandatoryFulfilled(t.stepName,!0)}finally{r(!1)}})}}}}const qa=new Us;class Ls{async init(t,e,a){const r=t.option;if(!r)throw new re(t);if(a)await this.reload(t,e,a);else{const i=j.getDefaultVariant(r);if(i)return await this.selectVariantLambda(t,i,e,()=>{})}return null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=t.option;if(r?.selectedVariants){const c=r.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=s.map(A=>({id:A.id,region:A.stepRegion}));await e.setSelectionsAndElements(t.stepName,[d],u,async()=>{const A=e.getModelContainer();if(A&&t.option){const h=d.asset?.fileLink;if(!h)throw new pt(d);await A.applyModelVariant(t.stepName||"",{model:h,contextService:e.getLayoutPreviewService()},t.data.replaceProductModel||!1),e.setMandatoryFulfilled(t.stepName,!0)}})}}}}async selectVariant(t,e,a,r){const i=await this.selectVariantLambda(t,e,a,r);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantLambda(t,e,a,r){r(!0);const i=e.asset?.fileLink;if(!i)throw new pt(e);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[e],[],async()=>{try{const o=a.getModelContainer();o&&await o.applyModelVariant(t.stepName,{model:i,contextService:a.getLayoutPreviewService()},t.data.replaceProductModel||!1),a.setMandatoryFulfilled(t.stepName,!0)}finally{r(!1)}})}}}}const Ga=new Ls;class Vs{async init(t,e,a){if(a)await this.reload(t,e,a);else return e.updateMetadata(t.stepName,{text:""}),this.changeTextCommand(t,"",e,()=>{});return null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),l=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName).map(c=>({id:c.id,region:c.stepRegion}));await e.setSelectionsAndElements(t.stepName,[],l,async()=>{e.updateStorage(t.stepName,{text:r?.storage?.text}),e.setMandatoryFulfilled(t.stepName,r?.storage?.text!=="")})}async changeText(t,e,a,r){const i=await this.changeTextCommand(t,e,a,r);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async changeTextCommand(t,e,a,r){const i=a.getRegionElements(t.stepName),o=a.getStepSpecificServices(t.stepName)?.module;if(!o)return console.error("Missing module."),null;const s=a.getWorkflowExperience().getProfanityList(),l=this.validateInput(t,e,s,r);if(l.errorData)return a.setMandatoryFulfilled(t.stepName,!1),l.errorData.blockedProfanity?console.error("Blocked profanity."):l.errorData.hitCharacterLimit?console.error("Too many characters."):l.errorData.unsupportedCharacters&&console.error("Unsupported characters."),null;if(a.setMandatoryFulfilled(t.stepName,e!==""),!t.data||!t.data.regions||t.data.regions.length<=0)return console.error("Missing configuration."),null;a.updateStorage(t.stepName,{text:e}),a.updateMetadata(t.stepName,{text:e});const c=(d,u,A)=>{const h=A||M(),p=a.getLayouts().find(f=>f.panelId===u.panelId);if(!p)return console.error(`Can not find layout for region: ${u.panelId}`),null;const m=[];return A&&m.push(new xt(h)),m.push(new z({stepRegion:u,stepName:t.stepName,colors:{},id:h,svg:d,type:D.Illustration,y:u.top,x:u.left,rotation:u.rotation,width:u.width,height:u.height,layer:u.layer,layerIndex:u.layerIndex,immutable:u.immutable},p)),{id:h,region:u,command:new R(m)}};if(i.length>0){const u=i.map(A=>{if(!A.region)return null;const h=o.svgPrint(e,A.region);return c(h,A.region,A.id)}).filter(A=>!!A).filter(A=>!!A).map(A=>A&&A.command);return{command:new R(u),followup:async()=>{}}}else{const d=t.data.regions.map(A=>c(o.svgPrint(e,A),A)),u=d.filter(A=>!!A).map(A=>A&&A.command);return{command:new R(u),followup:async()=>{const A=d.filter(h=>h).map(h=>h&&{id:h.id,region:h.region});await a.setSelectionsAndElements(t.stepName,[],A)}}}}validateInput(t,e,a,r){if(t.data&&t.data.maxLength){const o=t.data.maxLength;if(e.length>o)return r("Too many characters."),{input:e,helperData:{},errorData:{hitCharacterLimit:!0}}}if(!/^$|^[a-zA-Z0-9 ]+$/.test(e))return r("Unsupported characters."),{input:e,helperData:{},errorData:{unsupportedCharacters:!0}};const i=ua.split(e.toLowerCase());for(const o of i)for(const s in a){const l=a[s].toLowerCase().replace(/\s/g,"");if(o===l)return r("Blocked profanity."),{input:e,helperData:{},errorData:{blockedProfanity:!0}}}return r(""),{input:e,helperData:{}}}}const ja=new Vs;class zs{async init(t,e,a){const r=t.option;if(!r)return null;if(a)await this.reload(t,e,a);else if(r.defaultVariant)return e.markStepsAsInitialised([t.stepName]),this.selectVariantCommand(t,r.defaultVariant,e,()=>{});return e.markStepsAsInitialised([t.stepName]),null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=t.option;if(r?.selectedVariants){const c=r.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=s.map(A=>({id:A.id,region:A.stepRegion}));await e.setSelectionsAndElements(t.stepName,[d],u,async()=>{e.setMandatoryFulfilled(t.stepName,!0)})}}}}async selectVariant(t,e,a,r){const i=await this.selectVariantCommand(t,e,a,r);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantCommand(t,e,a,r){const i=e.asset;if(!i)throw new pt(e);const o=i?.fileLink;if(!o)return console.error("No URL for picture!"),null;r(!0),t.mandatory&&a.setMandatoryFulfilled(t.stepName,!1);const l=a.getRegionElements(t.stepName).map(u=>new xt(u.id)),c=u=>{const h=a.getLayouts().find(p=>p.panelId===u.panelId);if(!h)throw new W(u);const g=M();return{regionElement:{id:g,region:u},command:new z({stepName:t.stepName,stepRegion:u,id:g,src:o,type:D.Image,y:u.top,x:u.left,rotation:u.rotation,width:u.width,height:u.height,layer:u.layer,layerIndex:u.layerIndex,immutable:u.immutable,preserveAspectRatio:"none"},h)}},d=t.data.regions.map(c);return{command:new R([...l,...d.map(u=>u.command)]),followup:async()=>{await a.setSelectionsAndElements(t.stepName,[e],d.map(u=>u.regionElement),async()=>{a.setMandatoryFulfilled(t.stepName,!0),r(!1)})}}}}const Wa=new zs;class qs{async init(t,e,a){const r=t.option;if(!r)return null;if(a)await this.reload(t,e,a);else{const i=r.variants;if(j.getDefaultVariant(r)){const s=i?.find(l=>l.id===r.defaultVariant?.id);return this.selectVariantLambda(t,s?.id||"",e)}}return null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),i=t.option;if(r?.selectedVariants){const o=r.selectedVariants[0].id;if(i&&o){const s=i.variants?.find(l=>l.id===o);s&&await e.setSelectionsAndElements(t.stepName,[s],[])}}}async selectVariant(t,e,a){await a.getInitializationPromise();const r=await this.selectVariantLambda(t,e,a);r&&(r.command&&a.getCommandDispatcher()(r.command),r.followup&&await r.followup())}async selectVariantLambda(t,e,a){const r=t.option;if(!r)return null;const i=r.variants;if(!i)return null;const o=i.length>1?i.find(s=>s.id===e):i[0];if(!o)throw new Error(`Failed to find selected variant ${e} in option ${r.id} of step ${t.stepName} (${t.stepTitle})`);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[o],[],async()=>{a.setMandatoryFulfilled(t.stepName,!0)})}}}}const Ha=new qs;class Gs{constructor(){this.shapeFillId="spiff-fill-shape"}async availableColours(t){const e=t.option;return e?e.variants?.map(a=>({fill:a.color,stroke:a.color,variant:a}))||[]:[]}setCustomColor(t,e,a){const r=a.getLayouts(),o=(a.getRegionElements(e.stepName)||[]).map(s=>{const l=s.region;if(!r.find(d=>d.panelId===l?.panelId))throw new W(l);return new va(s.id,this.shapeFillId,t)}).filter(s=>!!s);a.getCommandDispatcher()(new R(o)),a.updateStorage(e.stepName,{colour:t})}async init(t,e,a){const r=t.option;if(!r)throw new re(t);if(a)await this.reload(t,e,a);else{const i=j.getDefaultVariant(r);return i?this.selectVariantCommand(t,{fill:i.color,stroke:i.color,variant:i},[],e):null}return null}async selectVariant(t,e,a,r){const i=await this.selectVariantCommand(t,e,a,r);i&&(i.command&&r.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=t.option;if(r?.selectedVariants){const c=r.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=s.map(A=>({id:A.id,region:A.stepRegion}));await e.setSelectionsAndElements(t.stepName,[d],u,async()=>{e.updateStorage(t.stepName,{colour:r?.storage?.colour||""}),e.setMandatoryFulfilled(t.stepName,!0)})}}}}async selectVariantCommand(t,e,a,r){const i=r.getLayouts(),o=r.getStepStorage(t.stepName)?.colour,s=()=>{if(e.variant?.color==="#custom")return o||"#FFFFFF";if(e.variant?.color)return e.variant.color;throw new Error("Failed to resolve color for shape step.")};if(a.length>0){const l=d=>{const u=d.region;if(!i.find(g=>g.panelId===u?.panelId))throw new W(u);const h=s();return new va(d.id,this.shapeFillId,h)},c=a.map(l).filter(d=>!!d);return{command:new R(c),followup:async()=>{await r.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],a),r.updateStorage(t.stepName,{colour:s()})}}}else{const l=A=>{const h=i.find(w=>w.panelId===A.panelId);if(!h)throw new W(A);const g=s(),p=`
1487
+ `,r={};r["spiff-fill-shape"]={browserValue:e.color};const i=e.region||await Ht(t,k.Illustration),o=T();return{stepRegion:e.region,colors:r,id:o,svg:a,type:k.Illustration,y:i.top,x:i.left,rotation:i.rotation,width:i.width,height:i.height,layer:i.layer||0,layerIndex:i.layerIndex||Wt(t,i.layer||0),immutable:i.immutable}}static async getIllustration(t,e){const a=e.region||await Ht(t,k.Illustration,e.src),r=await rt(await Cr(e.src)),i=await ce(r.svg),o=T();return{cachedObjectURL:i,stepRegion:e.region,colors:r.colors,id:o,src:e.src,svg:r.svg,type:k.Illustration,y:a.top,x:a.left,rotation:a.rotation,width:a.width,height:a.height,layer:a.layer||0,layerIndex:a.layerIndex||Wt(t,a.layer||0),immutable:a.immutable}}}class V extends Error{constructor(){super("Element not found!"),Object.setPrototypeOf(this,V.prototype)}}const U=(n,t)=>K(n,t).elements.find(r=>r.id===n),K=(n,t)=>{const e=Object.values(t).find(a=>a.elements.some(r=>r.id===n));if(!e)throw new V;return e},X=(n,t)=>{const e=[...t.elements.filter(r=>r.id!==n.id),n],a=$a(e);return{layout:t.layout,elements:a,modificationID:T()}},Sa=async n=>{const t=[...Object.keys(n.layouts)],e=[...new Set(t)];for(let a=0;a<e.length;a++){const r=e[a],i=n.layouts[r];await Promise.all(i.elements.map(async o=>{if(o.type==="illustration"){const s=o;if(s.src&&!s.svg){const l=await Z(s.src),c=await rt(l);s.svg=Na(c.svg,s.width,s.height,s.colors)}}else if(o.type==="frame"){const s=o;if(s.pattern?.colors&&s.pattern?.src){const l=await Z(s.pattern?.src),c=await rt(l);s.pattern.svg=c.svg}}isNaN(o.x)&&(o.x=0),isNaN(o.y)&&(o.y=0),isNaN(o.width)&&(o.width=0),isNaN(o.height)&&(o.height=0),isNaN(o.rotation)&&(o.rotation=0)}))}for(const a in n.layouts){const r=n.layouts[a].elements.filter(o=>o.type===k.Illustration);for(let o=0;o<r.length;++o){const s=r[o];if(s.src&&s.svg)try{s.cachedObjectURL=await ce(s.svg)}catch(l){console.log(l)}}const i=n.layouts[a].elements.filter(o=>o.type===k.Textbox);for(let o=0;o<i.length;++o){const s=i[o];s.fontData?.assetUrl&&await xt(s.fontData.assetUrl)}}};class R{undo(){if(!this.oldState)throw new Error("Cannot undo.");return this.oldState}overrideOldState(t){this.oldState=t}}class mn extends R{constructor(t){super(),this.serializableWorkflow=t}apply(t){return this.oldState=t,{...t,serializableWorkflow:this.serializableWorkflow}}}class xs extends R{constructor(t,e,a){super(),this.id=t,this.x=e,this.y=a}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,x:this.x,y:this.y},r=K(e.id,Object.values(t.layouts)),i=X(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class Fs extends R{constructor(t,e){super(),this.id=t,this.angle=e}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,rotation:this.angle},r=K(e.id,Object.values(t.layouts)),i=X(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class Ds extends R{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=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;let a={...e,width:this.width,height:this.height};if(e.type==="frame"){const o=a;o.scaleX=o.scaleX*this.width/e.width,o.scaleY=o.scaleY*this.height/e.height}else if(e.type==="textbox"){const o=a,s=(!o.algorithm||o.algorithm===Pt.Autosize?o.text:o.input)??"";a=pe(o,s,e)}const r=K(e.id,Object.values(t.layouts)),i=X(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class O extends R{constructor(t){super(),this.commands=t}apply(t){return this.oldState=t,this.commands.reduce((e,a)=>a.apply(e),t)}}class za extends R{constructor(t){super(),this.layout=t}apply(t){return this.oldState=t,{...t,layouts:{...t.layouts,[this.layout.id]:{elements:[],layout:{...this.layout},modificationID:T()}}}}}class z extends R{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(s=>s.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||e.length===0){const s=[...e,this.element];return this.element.layerIndex===void 0&&(this.element.layerIndex=this.assignIndex(this.element,s)),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:s,modificationID:T()}}}}const r=e[e.length-1],i=r.productOverlay?r:null;i&&e.pop();let o;if(this.element.layerIndex!==null&&this.element.layerIndex!==void 0)o=[...e,this.element].sort((s,l)=>s.layerIndex!==void 0&&l.layerIndex!==void 0?s.layerIndex-l.layerIndex:0);else{const s=this.assignIndex(this.element,e);this.element.layerIndex=s!==void 0?s:0,o=[...e,this.element]}return i&&o.push(i),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:o,modificationID:T()}}}}assignIndex(t,e){if(e.length===0)return 0;const a=e.filter(r=>(r.layer||0)===(t.layer||0)).sort((r,i)=>(r.layerIndex||0)-(i.layerIndex||0))[e.length-1]?.layerIndex;return a!==void 0?a+1:0}}class Ft extends R{constructor(t){super(),this.id=t}apply(t){this.oldState=t;let e=!1;const a=Object.values(t.layouts).map(i=>(i.elements.filter(s=>s.id!==this.id).length!==i.elements.length&&(e=!0),{...i,elements:i.elements.filter(s=>s.id!==this.id),modificationID:T()}));e||console.log(`Failed to delete element ${this.id}`);const r={};return a.forEach(i=>{r[i.layout.id]=i}),{...t,layouts:r}}}class wr extends R{constructor(t,e,a){super(),this.id=t,this.color=e,this.textFillSpotColor=a}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,fill:this.color,fillSpotColorDefinition:this.textFillSpotColor,textFillImage:void 0},r=K(e.id,Object.values(t.layouts)),i=X(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class ra extends R{constructor(t,e){super(),this.id=t,this.imageFill=e}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,textFillImage:this.imageFill},r=K(e.id,Object.values(t.layouts)),i=X(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class yr extends R{constructor(t,e){super(),this.id=t,this.size=e}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,fontSize:this.size},r=K(e.id,Object.values(t.layouts)),i=(!e.algorithm||e.algorithm===Pt.Autosize?e.text:e.input)??"",o=X(pe(a,i),r);return{...t,layouts:{...t.layouts,[r.layout.id]:o}}}}class va extends R{constructor(t,e){super(),this.id=t,this.fontData=e}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,fontData:this.fontData},r=K(e.id,Object.values(t.layouts)),i=(!e.algorithm||e.algorithm===Pt.Autosize?e.text:e.input)??"",o=X(pe(a,i),r);return{...t,layouts:{...t.layouts,[r.layout.id]:o}}}}class Sr extends R{constructor(t,e){super(),this.id=t,this.align=e}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,align:this.align},r=K(e.id,Object.values(t.layouts)),i=X(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class ks extends R{constructor(t,e,a){super(),this.id=t,this.imageData=e,this.offsets=a}apply(t){this.oldState=t;const e=K(this.id,Object.values(t.layouts)),a=e.elements.findIndex(s=>s.id===this.id),r=e.elements[a].pattern,i=[...e.elements];i.splice(a,1,{...e.elements[a],pattern:{...r,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,svg:this.imageData.svg,colors:this.imageData.colors}});const o={...e,elements:i,modificationID:T()};return{...t,layouts:{...t.layouts,[e.layout.id]:o}}}}class Ms extends R{constructor(t,e,a,r,i){super(),this.id=t,this.useThreshold=e,this.invertThreshold=a,this.threshold=r,this.thresholdSaturation=i}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,useThreshold:this.useThreshold,invertThreshold:this.invertThreshold,threshold:this.threshold,thresholdSaturation:this.thresholdSaturation},r=K(e.id,Object.values(t.layouts)),i=X(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class Ts extends R{constructor(t,e){super(),this.id=t,this.src=e}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,src:this.src},r=K(e.id,Object.values(t.layouts)),i=X(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class vr extends R{constructor(t,e){super(),this.id=t,this.text=e}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a=K(e.id,Object.values(t.layouts)),r=X(pe(e,this.text,e),a);return{...t,layouts:{...t.layouts,[a.layout.id]:r}}}}class ia extends R{constructor(t,e,a){super(),this.id=t,this.strokeColor=e,this.strokeThickness=a}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,strokeColor:this.strokeColor,strokeThickness:this.strokeThickness},r=K(e.id,Object.values(t.layouts)),i=X(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class Ea extends R{constructor(t,e,a){super(),this.id=t,this.className=e,this.fill=a}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a=e.colors||{},r=a[this.className];typeof this.fill=="string"?a[this.className]={browserValue:this.fill,spotColor:r?.spotColor,pmsValue:r?.pmsValue}:a[this.className]={browserValue:this.fill.browserValue,spotColor:r?.spotColor,pmsValue:this.fill.pmsValue};const i={...e,colors:a},o=K(e.id,Object.values(t.layouts)),s=X(i,o);return{...t,layouts:{...t.layouts,[o.layout.id]:s}}}}class Ns extends R{constructor(t,e,a){super(),this.id=t,this.svgBody=e,this.objectURL=a}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a={...e,svg:this.svgBody,cachedObjectURL:this.objectURL},r=K(e.id,Object.values(t.layouts)),i=X(a,r);return{...t,layouts:{...t.layouts,[r.layout.id]:i}}}}class Qs extends R{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!U(this.id,Object.values(t.layouts)).id)throw new V;const a=Object.values(t.layouts).find(o=>o.elements.find(s=>s.id===this.id));if(!a)throw new Error("Layout missing from state!");const r=a.elements.findIndex(o=>o.id===this.id);a.elements.push(a.elements.splice(r,1)[0]);const i=[...a.elements];return i.forEach((o,s)=>o.layerIndex=s),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:i,modificationID:T()}}}}}class Rs extends R{constructor(t){super(),this.id=t}apply(t){this.oldState=t;const e=U(this.id,Object.values(t.layouts));if(!e.id)throw new V;const a=Object.values(t.layouts).find(s=>s.elements.find(l=>l.id===this.id));if(!a)throw new Error("Layout missing from state!");const r=a.elements.findIndex(s=>s.id===this.id);a.elements.splice(r,1),a.elements.unshift(e);const i=[...a.elements],o=i.splice(r,1)[0];return i.splice(r,0,o),i.forEach((s,l)=>s.layerIndex=l),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:i,modificationID:T()}}}}}class Os extends R{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!U(this.id,Object.values(t.layouts)).id)throw new V;const a=Object.values(t.layouts).find(l=>l.elements.find(c=>c.id===this.id));if(!a)throw new Error("Layout missing from state!");const r=a.elements.findIndex(l=>l.id===this.id),i=r+1,o=[...a.elements],s=o.splice(r,1)[0];return o.splice(i,0,s),o.forEach((l,c)=>l.layerIndex=c),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:o,modificationID:T()}}}}}class $s extends R{constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!U(this.id,Object.values(t.layouts)).id)throw new V;const a=Object.values(t.layouts).find(l=>l.elements.find(c=>c.id===this.id));if(!a)throw new Error("Layout missing from state!");const r=a.elements.findIndex(l=>l.id===this.id),i=r-1,o=[...a.elements],s=o.splice(r,1)[0];return o.splice(i,0,s),o.forEach((l,c)=>l.layerIndex=c),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:o,modificationID:T()}}}}}class pn{constructor(t,e,a){this.processRegion=async r=>{const i=this.layouts.find(l=>l.panelId===r.panelId);if(!i)throw new H(r);let o="";if(this.configuration.type===v.ProductOverlay){let l="";if(this.product?.overlayImageUrl&&(l=this.product.overlayImageUrl),o=l,!l)throw new se(this.configuration,"Couldn't find an asset for product overlay step")}const s=this.evaluateAssetType();if(s===k.Image){const l=this.configuration.type===v.SilentIllustration?this.configuration.data.asset?.fileLink:this.product?.overlayImageUrl;if(!l)throw new Error("Undefined raster silent step source");const c={stepName:this.configuration.stepName,id:T(),src:l,type:s,y:r.top,x:r.left,width:r.width,height:r.height,layer:r.layer,layerIndex:r.layerIndex,immutable:r.immutable,productOverlay:this.configuration.type===v.ProductOverlay?!0:void 0,rotation:r.rotation,excludeFromExport:this.configuration.data.excludeFromPrint,preserveAspectRatio:"none"};return{regionElement:{id:c.id,region:r},command:new z(c,i)}}else{const l=this.configuration.type===v.SilentIllustration?this.configuration.data.asset?.fileLink:o,d=await rt(await(async()=>new Promise((A,h)=>{if(!l){h("Undefined vector silent step source");return}Z(l,!0).then(g=>{A(g)}).catch(g=>console.error(g))}))()),u={stepName:this.configuration.stepName,id:T(),cachedObjectURL:await ce(d.svg),src:l,svg:d.svg,colors:d.colors,type:s,y:r.top,x:r.left,width:r.width,height:r.height,layer:r.layer,layerIndex:r.layerIndex,rotation:r.rotation,immutable:r.immutable,productOverlay:this.configuration.type===v.ProductOverlay?!0:void 0,excludeFromExport:this.configuration.data.excludeFromPrint};return{regionElement:{id:u.id,region:r},command:new z(u,i)}}},this.configuration=t,this.layouts=e,this.product=a||void 0}async trigger(){if(!this.configuration.data.regions)throw new se(this.configuration,"Missing regions.");if(this.configuration.type===v.SilentIllustration){const t=this.configuration.data.regions.map(this.processRegion);return Promise.all(t)}else return this.configuration.type===v.ProductOverlay?Promise.all(this.configuration.data.regions.map(t=>{if(!this.layouts.find(a=>t.panelId===a.panelId))throw new H(t);return this.processRegion(t)})):Promise.reject("Unknown silent step. This is a bug")}evaluateAssetType(){const t=this.configuration.type===v.ProductOverlay&&this.product?.overlayImageUrl?this.product.overlayImageUrl.toLowerCase():this.configuration.data.asset?.fileLink?.toLowerCase().split("?")[0];return t?.startsWith("data:image/png")||t?.endsWith(".jpeg")||t?.endsWith(".jpg")||t?.endsWith(".png")?k.Image:(t?.endsWith(".svg")||t?.startsWith("image/svg+xml"),k.Illustration)}}const Er=async n=>{const t=`${ut.getServicesApiUrl()}/shortener`;try{return(await(await nt(t,{method:"POST",body:JSON.stringify({longUrl:n}),headers:{"Content-Type":"application/json"}})).json()).shortUrl}catch(e){throw console.error(e),new ze("Failed to shorten URL, see console.")}};class br{async poll(){try{if(await this.predicate()){this.onSuccess(),this.pollingId>-1&&window.clearInterval(this.pollingId);return}}catch{}this.attempts+=1,this.attempts<this.maxAttempts?this.pollingId=window.setTimeout(this.poll.bind(this),this.interval):this.onFailure()}constructor(t,e,a,r=3e3,i=10){this.onSuccess=e,this.onFailure=a,this.predicate=t,this.attempts=0,this.pollingId=-1,this.interval=r,this.maxAttempts=i,this.poll()}}class Us{async init(t,e,a){return a&&await this.reload(t,e,a),null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),l=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName).map(c=>({id:c.id,region:c.stepRegion}));await e.setSelectionsAndElements(t.stepName,[],l,async()=>{const c=r?.storage?.videoShortUrl,d=r?.storage?.videoUrl;e.updateStorage(t.stepName,{videoShortUrl:c,videoUrl:d})})}async regenerateQRCode(t,e,a,r){const i=async()=>{const h=(await Te([e]))[0],g=h?.versions?.find(p=>p.name==="mpeg4")?.link;return{asset:h,link:g}},o=await new Promise((h,g)=>{new br(async()=>!!(await i()).link,async()=>{const p=await i();if(!p.link||!p.link)throw new Rt(p.asset);h({rel:"mpeg4",href:p.link})},()=>{g("Poller timed out with 40 attempts @ 3 second interval")},3e3,40)});t.forEach(h=>a.getCommandDispatcher()(new Ft(h.id)));const s=r.data.baseUrl.slice(0,4)==="http"?"":"https://",l=new URL(s+r.data.baseUrl);l.searchParams.append("video",btoa(JSON.stringify([o]))),l.pathname=l.pathname+(l.pathname.slice(-1)==="/"?"":"/");const c=l.toString();if(c.length>=2e3)throw new ze("Cannot create QR code, URL too long.");const d=await Er(c);if(!r.data||!r.data.regions)throw new se(r,"Missing regions.");const u=await this.regionElements(r),A=await this.command(d,u,a,r.stepName);return A&&(A.command&&a.getCommandDispatcher()(A.command),A.followup&&await A.followup()),await a.setSelectionsAndElements(r.stepName,[],u,async()=>{a.updateStorage(r.stepName,{videoShortUrl:d,videoUrl:o.href})}),d}async regionElements(t){const e=a=>({id:T(),region:a});return t.data.regions.map(e)}async command(t,e,a,r){const i=a.getLayouts(),s=`data:image/svg+xml;base64,${btoa(await Mn.toString(t,{type:"svg"}))}`,l=e.map(c=>{const d=c.region,u=i.find(A=>A.panelId===d?.panelId);if(!u&&d)throw new H(d);if(u&&!d)throw new Error("Region not found");if(!u||!d)throw new Error("Neither a region or layout found!");return new z({stepRegion:d,stepName:r,id:c.id,src:s,type:k.Image,y:d.top,x:d.left,width:d.width,height:d.height,rotation:0},u)});return{command:new O(l),followup:async()=>{}}}}const qa=new Us;class Re{constructor(){this.frameSourceSvg=async(t,e)=>{if(!t)return wa(e);const a=t.asset;if(!a)throw new ft(t);const r=a.fileLink;if(r)return Z(r,!0);throw new Rt(a)}}async init(t,e,a){const r=a?.serializableWorkflow.steps.find(s=>s.stepName===t.stepName);if(r?.storage&&Object.keys(r.storage).length!==0||r?.selectedVariants&&r.selectedVariants.length!==0)return await this.reload(t,e,a),null;t.mandatory&&e.setMandatoryFulfilled(t.stepName,!1),e.markStepsAsInitialised([t.stepName]);let i;const o=e.getWorkflowExperience().getBundle();if(o&&t.globalPropertyAspectConfigurations){const s=o.getGlobalPropertyStateManager(),l=t.globalPropertyAspectConfigurations[0],c=s.getAspectStorage(l.aspectName);c&&c.originalAssetKey&&(i=(await $.getLocalOrFromServer(c.originalAssetKey)).fileLink)}if(t.option&&t.option.variants&&t.option.variants.length>0){const s=t.option,l=W.getDefaultVariant(s);return l?this.selectVariantCommand(t,l,[],e,void 0,i||t.data.placeholderImageUrl):null}return this.selectVariantCommand(t,void 0,[],e,void 0,i||t.data.placeholderImageUrl)}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),l=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName).map(c=>({id:c.id,region:c.stepRegion}));if(!t.option||(t.option.variants||[]).length===0){const c=t.data.regions.map(d=>wa(d));e.updateStorage(t.stepName,{currentFrameSources:c})}if(r){const c=async()=>{const d=r.storage?.colors,u=r.storage?.framePatternSrc,A=r.storage?.frameOffsetsList;if(e.updateMetadata(t.stepName,{frameOffsetsList:A,framePatternSrc:u}),u){const h=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!h)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(u,h,!0,d),e.updateMetadata(t.stepName,{image:u}),e.updateStorage(t.stepName,{framePatternSrc:u}),this.validateColorCount(t,e)}if(A?.some(h=>h.zoom)){const h=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!h)throw new Error("Frame service unavailable, cannot load pattern!");h.updateOffsets(A)}e.setMandatoryFulfilled(t.stepName,!0)};if(r.selectedVariants&&r.selectedVariants.length>0){const d=r.selectedVariants[0].id;if(t.option&&d){const u=t.option.variants?.find(A=>A.id===d);u&&await e.setSelectionsAndElements(t.stepName,[u],l,async()=>{const A=await Promise.all(t.data.regions.map(h=>this.frameSourceSvg(u,h)));e.updateStorage(t.stepName,{currentFrameSources:A}),await c()})}}else await e.setSelectionsAndElements(t.stepName,[],l,c)}}async availableColors(t,e){return t.data.colorOption?.variants?.map(r=>({fill:r.color,stroke:r.color,variant:r,pmsValue:r.name}))??[]}selectImage(t,e,a,r=!0){const i=Re.patternSource(e),o=a.getStepStorage(t.stepName)?.framePatternSrc;if(o&&o===i)return Promise.resolve();a.setEditedStatus(t.stepName,!0);const s=e.fileLink||"";return s.endsWith(".pdf")||s.endsWith(".eps")||s.endsWith(".ai")?new Promise(l=>{a.addPoller(new br(async()=>{const d=(await $.getFromServer(e.key||"")).versions?.find(A=>A.name==="svg");return d?(await nt(d.link)).status===200:!1},()=>{$.getLocalOrFromServer(e.key||"").then(c=>{this.loadPatternFromAsset(c,t,a,r).then(l)})},()=>{throw new ze("Failed to resolve transcoded PDF")}))}):this.loadPatternFromAsset(e,t,a,r)}async selectVariant(t,e,a,r,i){const o=await this.selectVariantCommand(t,e,a,r,i);o&&(o.command&&r.getCommandDispatcher()(o.command),o.followup&&await o.followup())}getCreateElementCommand(t,e,a,r){return new z({id:t,type:k.Frame,x:e.left,y:e.top,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,rotation:e.rotation,scaleX:e.width/r.frameData.width,scaleY:e.height/r.frameData.height,path:r.frameData.path,dataWidth:r.frameData.width,dataHeight:r.frameData.height,stepRegion:e,stepName:r.stepName,disablePlaceholder:r.disablePlaceholder,pattern:r.pattern,immutable:e.immutable},a)}async loadPatternFromString(t,e,a=!0,r=void 0,i){if(t.endsWith("svg")){const o=await La(t),s=o.width,l=o.height,c=await Z(t);if(i){const A=c.match(/<(image|linearGradient|radialGradient)(\s|>|\/>)/gim);if(A&&A.length>0)throw new Error("Vector files may not include images or gradients when a color limit is specified.")}const d=await rt(c),u={src:t,width:s,height:l,aspect:s/l,svg:d.svg,colors:r??d.colors};dt.set(t,u),e.setPatternData(u,a)}else{const o=await qe(t,!0),s=await ge(o),l={src:t,width:s.width,height:s.height,aspect:s.width/s.height,svg:void 0,colors:void 0};dt.set(t,l),e.setPatternData(l,a)}}changeColors(t,e,a){const r=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!r||!r.getImageData()?.svg){console.warn("changeColors was called without an SVG being assigned to a frame step");return}const i=this.calculateColorMetadata(r,t,a);e.updateMetadata(t.stepName,{colors:i.metadataColors}),e.updateStorage(t.stepName,{colors:i.storageColors}),r.setPatternData({...r.getImageData(),colors:i.newColors},!1),this.validateColorCount(t,e)}getUniqueColorCount(t,e){const a=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!a)return 0;const r=a.getImageData()?.colors??{},i=[];for(const o in r){const s=r[o];if(s.pmsValue){const l=s.pmsValue.trim().toLocaleLowerCase();i.includes(l)||i.push(l)}else if(s.browserValue){const l=Kn(s.browserValue);i.includes(l)||i.push(l)}}return i.length}calculateColorMetadata(t,e,a){if(!t.getImageData()?.svg)return{newColors:void 0,metadataColors:void 0,storageColors:void 0};const r={...t.getImageData().colors??{}},i={};Object.entries(r).forEach(([l,c])=>{const d={browserValue:c.browserValue};i[l]=d});for(const[l,c]of a.entries())r[l]={browserValue:c.browserValue,pmsValue:c.pmsValue},i[l]=c;let o=Array.from(Object.values(r)).map(l=>l.browserValue);const s=e.data.colorOption;return s&&s.variants?.forEach(l=>{o=o.map(c=>c.toLowerCase()===l.color?.toLowerCase()?l.name:c)}),{newColors:r,metadataColors:o,storageColors:i}}validateColorCount(t,e){const a=t.data.colorPickerEnabled?t.data.maxColors??0:0;e.setStepError(t.stepName,"colors",a>0&&this.getUniqueColorCount(t,e)>a?"workflow.steps.frame.tooManyColors":void 0)}async selectVariantCommand(t,e,a,r,i,o){const s=r.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!s)throw new Error("Frame service unavailable, cannot load pattern!");const l=await Promise.all(t.data.regions.map(h=>this.frameSourceSvg(e,h)));i&&i(!0);const c=t.data.initialZoomLevel,d=await Promise.all(t.data.regions.map(async(h,g)=>{const p=await Ce(l[g]),m=s.getImageData(),C=a.map(S=>new Ft(S.id)),w=m?Ua(m,p,c&&!t.data.forceImageCover?{scale:c}:void 0,t.data.forceImageCover):void 0,I=m?{id:T(),src:m.src,x:w?.x||0,y:w?.y||0,width:m.width,height:m.height,scaleX:w?.zoom||1,scaleY:w?.zoom||1,rotation:0}:void 0,x=T(),E=r.getLayouts().find(S=>S.panelId===h.panelId);if(!E)throw new H(h);return{command:this.getCreateElementCommand(x,h,E,{frameData:p,pattern:I,disablePlaceholder:t.data.disablePlaceholder,stepName:t.stepName}),regionEl:{id:x,region:h},removeExistingCommands:C}})),u=d.map(h=>h.command),A=d.map(h=>h.removeExistingCommands).flat();return{command:new O([...u,...A]),followup:async()=>{i&&i(!1),await r.setSelectionsAndElements(t.stepName,e?[e]:[],[...d.map(h=>h.regionEl)],async()=>{if(r.updateStorage(t.stepName,{currentFrameSources:l}),o){const h=r.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!h)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(o,h,!0)}})}}}static patternSource(t){const e=t.versions?.find(r=>r.name==="svg");if(e?.link)return e.link;const a=t.fileLink;if(a)return a;throw new Rt(t)}async loadPatternFromAsset(t,e,a,r){const i=Re.patternSource(t),o=a.markUpdatePending(),s=a.getWorkflowExperience().getStepById(e.stepName)?.frameService;if(!s)throw a.markUpdateCompleted(o),new Error("Frame service unavailable, cannot load pattern!");try{await this.loadPatternFromString(i,s,r,void 0,e.data.colorPickerEnabled&&!!e.data.maxColors&&e.data.maxColors>0)}catch(c){throw a.markUpdateCompleted(o),c}const l=this.calculateColorMetadata(s,e,new Map(Object.entries(s.getImageData()?.colors??{})));a.updateMetadata(e.stepName,{image:i,colors:l.metadataColors}),a.updateStorage(e.stepName,{framePatternSrc:i,colors:l.storageColors}),a.markUpdateCompleted(o),a.setMandatoryFulfilled(e.stepName,!0),a.setInformationResults(a.getInformationResults().filter(c=>c.stepID===e.stepName)),this.validateColorCount(e,a)}}const gt=new Re;class Ls{async getIllustrationBody(t){return new Promise(e=>{Z(t,!0).then(a=>{e(a)}).catch(a=>console.error(a))})}getCreateElementCommand(t,e,a,r){return new z({stepRegion:e,stepName:r.stepName,colors:r.svg.colors,id:t,src:r.src,svg:r.svg.svg,cachedObjectURL:r.objectURL,type:k.Illustration,y:e.top,x:e.left,rotation:e.rotation,width:e.width,height:e.height,layer:e.layer,layerIndex:e.layerIndex,immutable:e.immutable},a)}getColors(t,e){const a=e.getRegionElements(t.stepName)||[];if(a.length===0)return[];try{return U(a[0].id,e.getAllLayoutData()).colors}catch{return[]}}async init(t,e,a){const r=t.option;if(!r)return null;if(a)return this.reload(t,e,a);{const i=W.getDefaultVariant(r);if(i)return await this.selectVariantCommand(t,i,[],()=>{},e)}return null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=t.option;if(r?.selectedVariants){const c=r.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=s.map(A=>({id:A.id,region:A.stepRegion}));await e.setSelectionsAndElements(t.stepName,[d],u,async()=>{e.updateMetadata(t.stepName,{colors:r.storage?.colors}),e.setMandatoryFulfilled(t.stepName,!0)})}}else throw new Error("Required illustration variant no longer available")}return null}async availableColors(t,e){const a=t.data.colorOption;return a?a?a.variants?.map(r=>({fill:r.color,stroke:r.color,variant:r,pmsValue:r.name})):[]:[]}async changeColorsCommand(t,e,a,r,i){const o={};for(const[d,u]of i.entries())typeof u=="string"?o[d]={browserValue:u,spotColor:void 0,pmsValue:void 0}:o[d]={browserValue:u.browserValue,spotColor:u.spotColor,pmsValue:u.pmsValue};const s=Na(t,e,a,o),l=await ce(s),c=[];for(const d of r){for(const[u,A]of i.entries())c.push(new Ea(d,u,A));c.push(new Ns(d,s,l))}return new O(c)}async changeColors(t,e,a,r,i){if(e.length===0)return;const o=U(e[0].id,r().map(h=>h.layoutState)),s={...o.colors},l={};Object.entries(s).forEach(([h,g])=>{const p={browserValue:g.browserValue,pmsValue:g.pmsValue},m=g.spotColor;m&&(p.spotColor={profileName:m.profileName,namedColor:m.namedColor}),l[h]=p});for(const[h,g]of i.entries()){const p=typeof g=="string"?g:g.browserValue,m=typeof g=="string"?void 0:g.pmsValue;s[h]={browserValue:p,spotColor:s[h]?.spotColor,pmsValue:m},l[h]={browserValue:p}}let c=Array.from(Object.values(s)).map(h=>h.browserValue);const d=t.data.colorOption;d&&d.variants?.forEach(h=>{c=c.map(g=>g.toLowerCase()===h.color?.toLowerCase()?h.name:g)}),a.updateMetadata(t.stepName,{colors:c});const u=new Map;if(Object.entries(s).forEach(([h,g])=>{u.set(h,g)}),!o.svg)throw new Error("Colors changed before SVG loaded. This should never happen!");const A=await this.changeColorsCommand(o.svg,o.width,o.height,e.map(h=>h.id),u);a.updateStorage(t.stepName,{colors:l}),a.getCommandDispatcher()(A)}async selectVariant(t,e,a,r,i){const o=await this.selectVariantCommand(t,e,a,r,i);o&&(o.command&&i.getCommandDispatcher()(o.command),o.followup&&await o.followup())}async selectVariantCommand(t,e,a,r,i){if(!t.data||!t.data.regions)throw new se(t,"Missing regions.");r(!0);const o=a.map(C=>new Ft(C.id));t.mandatory&&i.setMandatoryFulfilled(t.stepName,!1);const s=e.asset;if(!s)throw new ft(e);const l=s.fileLink;if(!l)throw new Rt(s);const c=await rt(await this.getIllustrationBody(l)),d=await ce(c.svg),u=C=>{const w=i.getLayouts().find(x=>x.panelId===C.panelId);if(!w)throw new H(C);const I=T();return{regionElement:{id:I,region:C},command:this.getCreateElementCommand(I,C,w,{stepName:t.stepName,src:l,objectURL:d,svg:c})}},A=t.data.regions.map(u),g=[...A.map(C=>C.command),...o];let p=Array.from(Object.values(c.colors)).map(C=>C.browserValue);const m=t.data.colorOption;return m&&m.variants?.forEach(C=>{p=p.map(w=>w.toLowerCase()===C.color?.toLowerCase()?C.name:w)}),i.updateMetadata(t.stepName,{colors:p}),{command:new O(g),followup:async()=>{await i.setSelectionsAndElements(t.stepName,[e],A.map(w=>w.regionElement),async()=>{i.setMandatoryFulfilled(t.stepName,!0),r(!1)});const C=s.assetConfiguration?.defaultColorVariants||[];if(C.length!==0){const w={};(s.assetConfiguration?.channelNumbers||[]).forEach(x=>{const b=C.find(E=>E.channelNumber===x.number);b&&(w[`${x.id.replace(/\W/g,"")}`]={browserValue:b?.variant?.color||""})}),await this.changeColors(t,A.map(x=>x.regionElement),i,()=>i.getCommandContext().getAllLayouts(),new Map(Object.entries(w)))}if(t.data.colorPickerEnabled){const w=await this.availableColors(t,i)||[],I=Object.keys(c.colors),x=w.length===1&&I.length===1;if(x){const b=w[0],E=I[0];await this.changeColors(t,A.map(S=>S.regionElement),i,()=>i.getCommandContext().getAllLayouts(),new Map([[E,b.variant.color]]))}!x&&C.length===0&&await this.changeColors(t,A.map(b=>b.regionElement),i,()=>i.getCommandContext().getAllLayouts(),new Map)}}}}}const Xt=new Ls;class Vs{async init(t,e,a){const r=t.option;if(!r)throw new oe(t);if(a)await this.reload(t,e,a);else{const i=W.getDefaultVariant(r);if(i)return await this.selectVariantLambda(t,i,e,()=>{})}return null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=t.option;if(!l)throw new oe(t);if(r?.selectedVariants){const c=r.selectedVariants[0].id;if(c){const d=l.variants?.find(u=>u.id===c);if(d){const u=d.material,A=s.map(h=>({id:h.id,region:h.stepRegion}));await e.setSelectionsAndElements(t.stepName,[d],A,async()=>{const h=e.getModelContainer();if(h){const g=t.data.targetMaterials.map(p=>h.applyMaterialVariant(p,l.id||"",u||{}));Promise.all(g).then(()=>e.setMandatoryFulfilled(t.stepName,!0))}})}}}}async selectVariant(t,e,a,r){const i=await this.selectVariantLambda(t,e,a,r);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantLambda(t,e,a,r){const i=a.getModelContainer();r(!0);const o=e.material;if(!o)throw r(!1),new ft(e);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[e],[],async()=>{try{i&&t.data.targetMaterials.forEach(s=>{t.option&&i.applyMaterialVariant(s,t.option.id||"",o)}),a.setMandatoryFulfilled(t.stepName,!0)}finally{r(!1)}})}}}}const Ga=new Vs;class zs{async init(t,e,a){const r=t.option;if(!r)throw new oe(t);if(a)await this.reload(t,e,a);else{const i=W.getDefaultVariant(r);if(i)return await this.selectVariantLambda(t,i,e,()=>{})}return null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=t.option;if(r?.selectedVariants){const c=r.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=s.map(A=>({id:A.id,region:A.stepRegion}));await e.setSelectionsAndElements(t.stepName,[d],u,async()=>{const A=e.getModelContainer();if(A&&t.option){const h=d.asset?.fileLink;if(!h)throw new ft(d);await A.applyModelVariant(t.stepName||"",{model:h,contextService:e.getLayoutPreviewService()},t.data.replaceProductModel||!1),e.setMandatoryFulfilled(t.stepName,!0)}})}}}}async selectVariant(t,e,a,r){const i=await this.selectVariantLambda(t,e,a,r);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantLambda(t,e,a,r){r(!0);const i=e.asset?.fileLink;if(!i)throw new ft(e);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[e],[],async()=>{try{const o=a.getModelContainer();o&&await o.applyModelVariant(t.stepName,{model:i,contextService:a.getLayoutPreviewService()},t.data.replaceProductModel||!1),a.setMandatoryFulfilled(t.stepName,!0)}finally{r(!1)}})}}}}const ja=new zs;class qs{async init(t,e,a){if(a)await this.reload(t,e,a);else return e.updateMetadata(t.stepName,{text:""}),this.changeTextCommand(t,"",e,()=>{});return null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),l=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName).map(c=>({id:c.id,region:c.stepRegion}));await e.setSelectionsAndElements(t.stepName,[],l,async()=>{e.updateStorage(t.stepName,{text:r?.storage?.text}),e.setMandatoryFulfilled(t.stepName,r?.storage?.text!=="")})}async changeText(t,e,a,r){const i=await this.changeTextCommand(t,e,a,r);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async changeTextCommand(t,e,a,r){const i=a.getRegionElements(t.stepName),o=a.getStepSpecificServices(t.stepName)?.module;if(!o)return console.error("Missing module."),null;const s=a.getWorkflowExperience().getProfanityList(),l=this.validateInput(t,e,s,r);if(l.errorData)return a.setMandatoryFulfilled(t.stepName,!1),l.errorData.blockedProfanity?console.error("Blocked profanity."):l.errorData.hitCharacterLimit?console.error("Too many characters."):l.errorData.unsupportedCharacters&&console.error("Unsupported characters."),null;if(a.setMandatoryFulfilled(t.stepName,e!==""),!t.data||!t.data.regions||t.data.regions.length<=0)return console.error("Missing configuration."),null;a.updateStorage(t.stepName,{text:e}),a.updateMetadata(t.stepName,{text:e});const c=(d,u,A)=>{const h=A||T(),p=a.getLayouts().find(C=>C.panelId===u.panelId);if(!p)return console.error(`Can not find layout for region: ${u.panelId}`),null;const m=[];return A&&m.push(new Ft(h)),m.push(new z({stepRegion:u,stepName:t.stepName,colors:{},id:h,svg:d,type:k.Illustration,y:u.top,x:u.left,rotation:u.rotation,width:u.width,height:u.height,layer:u.layer,layerIndex:u.layerIndex,immutable:u.immutable},p)),{id:h,region:u,command:new O(m)}};if(i.length>0){const u=i.map(A=>{if(!A.region)return null;const h=o.svgPrint(e,A.region);return c(h,A.region,A.id)}).filter(A=>!!A).filter(A=>!!A).map(A=>A&&A.command);return{command:new O(u),followup:async()=>{}}}else{const d=t.data.regions.map(A=>c(o.svgPrint(e,A),A)),u=d.filter(A=>!!A).map(A=>A&&A.command);return{command:new O(u),followup:async()=>{const A=d.filter(h=>h).map(h=>h&&{id:h.id,region:h.region});await a.setSelectionsAndElements(t.stepName,[],A)}}}}validateInput(t,e,a,r){if(t.data&&t.data.maxLength){const o=t.data.maxLength;if(e.length>o)return r("Too many characters."),{input:e,helperData:{},errorData:{hitCharacterLimit:!0}}}if(!/^$|^[a-zA-Z0-9 ]+$/.test(e))return r("Unsupported characters."),{input:e,helperData:{},errorData:{unsupportedCharacters:!0}};const i=Aa.split(e.toLowerCase());for(const o of i)for(const s in a){const l=a[s].toLowerCase().replace(/\s/g,"");if(o===l)return r("Blocked profanity."),{input:e,helperData:{},errorData:{blockedProfanity:!0}}}return r(""),{input:e,helperData:{}}}}const Wa=new qs;class Gs{async init(t,e,a){const r=t.option;if(!r)return null;if(a)await this.reload(t,e,a);else if(r.defaultVariant)return e.markStepsAsInitialised([t.stepName]),this.selectVariantCommand(t,r.defaultVariant,e,()=>{});return e.markStepsAsInitialised([t.stepName]),null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=t.option;if(r?.selectedVariants){const c=r.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=s.map(A=>({id:A.id,region:A.stepRegion}));await e.setSelectionsAndElements(t.stepName,[d],u,async()=>{e.setMandatoryFulfilled(t.stepName,!0)})}}}}async selectVariant(t,e,a,r){const i=await this.selectVariantCommand(t,e,a,r);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantCommand(t,e,a,r){const i=e.asset;if(!i)throw new ft(e);const o=i?.fileLink;if(!o)return console.error("No URL for picture!"),null;r(!0),t.mandatory&&a.setMandatoryFulfilled(t.stepName,!1);const l=a.getRegionElements(t.stepName).map(u=>new Ft(u.id)),c=u=>{const h=a.getLayouts().find(p=>p.panelId===u.panelId);if(!h)throw new H(u);const g=T();return{regionElement:{id:g,region:u},command:new z({stepName:t.stepName,stepRegion:u,id:g,src:o,type:k.Image,y:u.top,x:u.left,rotation:u.rotation,width:u.width,height:u.height,layer:u.layer,layerIndex:u.layerIndex,immutable:u.immutable,preserveAspectRatio:"none"},h)}},d=t.data.regions.map(c);return{command:new O([...l,...d.map(u=>u.command)]),followup:async()=>{await a.setSelectionsAndElements(t.stepName,[e],d.map(u=>u.regionElement),async()=>{a.setMandatoryFulfilled(t.stepName,!0),r(!1)})}}}}const Ha=new Gs;class js{async init(t,e,a){const r=t.option;if(!r)return null;if(a)await this.reload(t,e,a);else{const i=r.variants;if(W.getDefaultVariant(r)){const s=i?.find(l=>l.id===r.defaultVariant?.id);return this.selectVariantLambda(t,s?.id||"",e)}}return null}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),i=t.option;if(r?.selectedVariants){const o=r.selectedVariants[0].id;if(i&&o){const s=i.variants?.find(l=>l.id===o);s&&await e.setSelectionsAndElements(t.stepName,[s],[])}}}async selectVariant(t,e,a){await a.getInitializationPromise();const r=await this.selectVariantLambda(t,e,a);r&&(r.command&&a.getCommandDispatcher()(r.command),r.followup&&await r.followup())}async selectVariantLambda(t,e,a){const r=t.option;if(!r)return null;const i=r.variants;if(!i)return null;const o=i.length>1?i.find(s=>s.id===e):i[0];if(!o)throw new Error(`Failed to find selected variant ${e} in option ${r.id} of step ${t.stepName} (${t.stepTitle})`);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[o],[],async()=>{a.setMandatoryFulfilled(t.stepName,!0)})}}}}const Ya=new js;class Ws{constructor(){this.shapeFillId="spiff-fill-shape"}async availableColours(t){const e=t.option;return e?e.variants?.map(a=>({fill:a.color,stroke:a.color,variant:a}))||[]:[]}setCustomColor(t,e,a){const r=a.getLayouts(),o=(a.getRegionElements(e.stepName)||[]).map(s=>{const l=s.region;if(!r.find(d=>d.panelId===l?.panelId))throw new H(l);return new Ea(s.id,this.shapeFillId,t)}).filter(s=>!!s);a.getCommandDispatcher()(new O(o)),a.updateStorage(e.stepName,{colour:t})}async init(t,e,a){const r=t.option;if(!r)throw new oe(t);if(a)await this.reload(t,e,a);else{const i=W.getDefaultVariant(r);return i?this.selectVariantCommand(t,{fill:i.color,stroke:i.color,variant:i},[],e):null}return null}async selectVariant(t,e,a,r){const i=await this.selectVariantCommand(t,e,a,r);i&&(i.command&&r.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=t.option;if(r?.selectedVariants){const c=r.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=s.map(A=>({id:A.id,region:A.stepRegion}));await e.setSelectionsAndElements(t.stepName,[d],u,async()=>{e.updateStorage(t.stepName,{colour:r?.storage?.colour||""}),e.setMandatoryFulfilled(t.stepName,!0)})}}}}async selectVariantCommand(t,e,a,r){const i=r.getLayouts(),o=r.getStepStorage(t.stepName)?.colour,s=()=>{if(e.variant?.color==="#custom")return o||"#FFFFFF";if(e.variant?.color)return e.variant.color;throw new Error("Failed to resolve color for shape step.")};if(a.length>0){const l=d=>{const u=d.region;if(!i.find(g=>g.panelId===u?.panelId))throw new H(u);const h=s();return new Ea(d.id,this.shapeFillId,h)},c=a.map(l).filter(d=>!!d);return{command:new O(c),followup:async()=>{await r.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],a),r.updateStorage(t.stepName,{colour:s()})}}}else{const l=A=>{const h=i.find(w=>w.panelId===A.panelId);if(!h)throw new H(A);const g=s(),p=`
1480
1488
  <svg
1481
1489
  xmlns="http://www.w3.org/2000/svg"
1482
1490
  xmlnsXlink="http://www.w3.org/1999/xlink"
@@ -1496,14 +1504,14 @@
1496
1504
  fill="${g}"
1497
1505
  />
1498
1506
  </svg>
1499
- `,m={};m[this.shapeFillId]={browserValue:g};const f=M();return{id:f,region:A,command:new z({stepRegion:A,stepName:t.stepName,colors:m,id:f,svg:p,type:D.Illustration,y:A.top,x:A.left,rotation:A.rotation,width:A.width,height:A.height,layer:A.layer,layerIndex:A.layerIndex,immutable:A.immutable,excludeFromExport:t.data.excludeFromPrint},h)}},c=t.data.regions.map(l),d=c.filter(A=>!!A).map(A=>A?.command),u=c.filter(A=>!!A).map(A=>({id:A.id,region:A.region}));return{command:new R(d),followup:async()=>{await r.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],u,async()=>{r.updateStorage(t.stepName,{colour:s()})})}}}}}const kt=new Gs;class js{constructor(){this.latestToast=null,this.toastType=null,this.toastCallbacks=[]}addToastCallback(t){t({toastMessage:this.latestToast,toastType:this.toastType}),this.toastCallbacks.push(t)}removeToastCallback(t){this.toastCallbacks=this.toastCallbacks.filter(e=>e!==t)}setLatestToast(t,e){this.latestToast=t,this.toastType=e,this.onToastChange()}onToastChange(){this.toastCallbacks.forEach(t=>t({toastMessage:this.latestToast,toastType:this.toastType}))}}const br=new js,ia=(n,t,e,a,r)=>{if(t.some(d=>d==null))throw new Error(`Failed to autosize lines: ${t.join(", ")}`);let i=t.map(d=>d.split(`
1500
- `)).flat(),o=i.length,s=i.map(d=>mt(d,a,r));const l=r.getApproximateHeight()*a;let c=!0;for(;c;){if(l+(o-1)*e>n.height)return[null,null];const u=Math.max(...s);if(u<=n.width)return[i,u];const A=s.reduce((m,f,w,b)=>f>b[m]?w:m,0),h=i[A];let g=!1,p=h.length;for(;!g&&p>-1;){p=h.lastIndexOf(" ",p-1);const m=[h.slice(0,p),h.slice(p+1)],f=m.map(b=>mt(b,a,r));f[0]<=n.width&&(i=[...i.slice(0,A),...m,...i.slice(A+1)],s=[...s.slice(0,A),...f,...s.slice(A+1)],o+=1,g=!0)}g||(c=!1)}return[null,null]},_t=(n,t,e,a,r)=>{let i,o;const s=wt(t.assetUrl),l=s.getFont();if(r.size){const A=n/l.unitsPerEm;return[i,o]=ia(e,a,n,A,s),[r.size,i,o]}const c=6;let d=c-ta;if(a.length>0){let A=a,h=0;for(;(!r.maxSize||d<=r.maxSize)&&A;)d+=ta,h=d/l.unitsPerEm,[A,o]=ia(e,a,d,h,s)}d>c&&(d-=ta),r.minSize&&d<r.minSize&&(d=r.minSize);const u=d/l.unitsPerEm;return[i,o]=ia(e,a,d,u,s),[d,i,o]},oa=30;class Re extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=Re.name}}const Ws=["‘","’","“","”",`
1501
- `];class Oe extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=Oe.name}}class Hs{constructor(){this.cachedColors=new Map,this.cachedStrokeColors=new Map,this.filterUnsupportedCharacters=(t,e)=>{let a=t.replace(/(\r\n|\r|(\u2665|\u00a9|\u00ae|[\u2000-\u2017]|[\u201E-\u3300]]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]))/gm,"");const r=[],i=e?wt(e.assetUrl):void 0;if(i){const o=a.split("").filter(l=>!Ws.includes(l)).join(""),s=o.split("").map(l=>i.getFont().charToGlyph(l));for(let l=0;l<s.length;l++)s[l].name===".notdef"&&r.push(String.fromCharCode(o.charCodeAt(l)))}for(let o=0;o<r.length;o++)a=a.replaceAll(r[o],"");return a},this.textAlign=t=>t.vertical?"center":t.textAlign||"center",this.getErrorsForText=(t,e,a,r)=>{let i;a.data&&a.data.maxLength&&e.length>a.data.maxLength&&(i||(i={}),i.hitCharacterLimit=!0);const o=r.getWorkflowExperience().getProfanityList(),s=ua.split(t.toLowerCase());for(const c of s)for(const d in o){const u=o[d].toLowerCase().replace(/\s/g,"");if(c===u){i||(i={}),i.blockedProfanity=!0;break}}return!a.data.allowNewlines&&(t.includes(`
1502
- `)||t.includes("\r"))&&(i||(i={}),i.illegalMultipleLines=!0),i}}async init(t,e,a){const r=t.option;if(!r)return null;if(a)await this.reload(t,e,a);else{const i=this.getDefaultImageFillVariant(t.data),o=i?.asset?.fileLink,s=o?await wa(o):void 0,l=s?{src:s.src,height:s.height,width:s.width,scale:t.data.imageFillScale||1}:void 0,c=this.getDefaultStrokeColorVariant(t.data),d=t.data.strokeEnabled&&c?.color?{browserValue:c.color,pmsValue:c.name}:void 0;let u=t.data.defaultText||"";const A=e.getWorkflowExperience().getBundle();if(A&&t.globalPropertyAspectConfigurations){const p=A.getGlobalPropertyConfiguration()?.aspects?.find(m=>m.type===U.Text&&t.globalPropertyAspectConfigurations?.map(f=>f.aspectName).includes(m.name));if(p){const f=A.getGlobalPropertyStateManager().getAspect(p.name);f&&(u=f)}}e.updateStorage(t.stepName,{text:u,inputText:t.data.defaultText||"",color:this.getDefaultColorVariant(t.data)?.color||this.getDefaultColor(t.data),fillImage:l,strokeColor:d}),e.updateMetadata(t.stepName,{text:u,color:this.getDefaultColorVariant(t.data)?.name||this.getDefaultColor(t.data),fillImage:i?.name,strokeColor:t.data.strokeEnabled?c?.color:void 0});const h=j.getDefaultVariant(r);if(h)return this.selectVariantCommand(t,h,{text:u},[],e,()=>{},()=>{},l,d)}return null}findLayoutElements(t,e){return t.getRegionElements(e.stepName).map(i=>$(i.id,t.getAllLayoutData()))}availableFillColors(t){const e=this.cachedColors.get(t.stepName);if(e)return e;const a=t.data.colorOption;if(a){const r=a.variants?.map(i=>({fill:i.color,stroke:i.color,variant:i}))||[];return this.cachedColors.set(t.stepName,r),r}return[]}changeAlignment(t,e,a,r){if(!t.data||!t.data.regions)return;const i=r.getCommandDispatcher();for(const o of a){const s=new yr(o.id,e);i(s)}}async changeFillColor(t,e,a,r){if(!t.data||!t.data.regions)return;const i=r.getCommandDispatcher();e.variant?r.updateMetadata(t.stepName,{color:e.variant.name}):r.updateMetadata(t.stepName,{color:e.fill});const o=t.data.colorOption,s=o?this.createTextFillSpotColor(o,e.variant):void 0;o?r.updateStorage(t.stepName,{color:e.fill,colorProfileAssetKey:o.colorProfile?.key}):r.updateStorage(t.stepName,{color:e.fill});for(const l of a){if(!e.fill)throw new Error("Fill not set on new color selection!");const c=new Cr(l.id,e.fill,s);i(c)}}async availableFillImages(t){const e=t.data.imageFillOption;if(e){const a=e.variants?.map(r=>r.asset?.fileLink)?.filter(r=>!!r)||[];return Promise.all(a.map(async r=>{const i=await wa(r);return{src:r,width:i.width,height:i.height,scale:t.data.imageFillScale||1}}))}return Promise.resolve([])}async changeFillImage(t,e,a,r){if(!t.data||!t.data.regions)return;const i=r.getCommandDispatcher(),o=t.option?.variants?.find(s=>s.asset?.fileLink===e.src);r.updateMetadata(t.stepName,{fillImage:o?.name}),r.updateStorage(t.stepName,{fillImage:e});for(const s of a){const l=new na(s.id,e);i(l)}}availableStrokeColors(t){const e=this.cachedStrokeColors.get(t.stepName);if(e)return e;const a=t.data.strokeOption;if(a){const r=a.variants?.map(i=>({fill:i.color,stroke:i.color,variant:i}))||[];return this.cachedStrokeColors.set(t.stepName,r),r}return[]}async changeStrokeColor(t,e,a,r){if(!t.data||!t.data.regions)return;const i=r.getCommandDispatcher();e?.variant?r.updateMetadata(t.stepName,{strokeColor:e.variant.name}):r.updateMetadata(t.stepName,{strokeColor:e?.fill});const o=e?{browserValue:e.fill,pmsValue:e.pmsValue}:void 0;r.updateStorage(t.stepName,{strokeColor:o});for(const s of a){const l=new ra(s.id,o,t.data?.strokeThickness);i(l)}}getProcessedInput(t,e,a){const r=a?t:this.injectReplaceableText(t,e);return Ne(r,{vertical:e.vertical,uppercase:e.uppercase})}updateInputText(t,e,a,r){const i=r.getStepStorage(a.stepName),o=Mt(t,r),s=this.getProcessedInput(o,a.data,i?.customiseAllText??!1),l={command:void 0,helperData:{},errorData:this.getErrorsForText(t,s,a,r)};if(l.errorData)return l;l.helperData.charactersRemaining=a.data.maxLength-s.length;const c=[],d=new Map,u=new Map;for(const A of e){if(!A.fontData)throw new N("Failed to resolve font data for text.");const[h,g]=_t(A.fontSize,A.fontData,{left:A.x,top:A.y,width:A.width,height:A.height,rotation:A.rotation},[s],{size:a.data.size,minSize:a.data.minSize,maxSize:a.data.maxSize});d.set(A.id,h),u.set(A.id,g);const p=a.data.curved?s:(g||[]).join(`
1503
- `);c.push(this.generateTextChangeCommandsForRegion(h,a.data,A.id,p))}return!a.data.curved&&e.length>0&&!Array.from(u.values()).every(h=>h)?(l.errorData||(l.errorData={}),l.errorData.doesNotFit=!0,l):(r.updateStorage(a.stepName,{text:t}),r.updateMetadata(a.stepName,{text:s}),(i?.defaultCleared||!a.data.deleteDefaultOnFocus)&&s.trim()!==""&&r.setMandatoryFulfilled(a.stepName,!0),l.command=new R(c),l)}async selectVariant(t,e,a,r,i){const o=await this.selectVariantCommand(t,e,a.getStepStorage(t.stepName)||{},a.getRegionElements(t.stepName),a,r,i);o&&(o.command&&a.getCommandDispatcher()(o.command),o.followup&&await o.followup())}createTextFillSpotColor(t,e){const a=t.colorProfile;if(a){const r=(a.name||"").replace(/\s/g,"-"),i=r.lastIndexOf("/"),s=r.slice(i+1).slice(0,-4);if(!e.namedColor)throw new Error("variant named color not set!");return{profileName:s,namedColor:e.namedColor}}}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=t.option;if(r?.selectedVariants){const c=r.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=await this.fontDataFromVariant(d),A=s.map(m=>({id:m.id,region:m.stepRegion})),h=r.storage?.color;let g=r.storage?.text;const p=e.getWorkflowExperience().getBundle();if(p&&t.globalPropertyAspectConfigurations){const f=p.getGlobalPropertyConfiguration()?.aspects?.find(w=>w.type===U.Text&&t.globalPropertyAspectConfigurations?.map(b=>b.aspectName).includes(w.name));if(f){const b=p.getGlobalPropertyStateManager().getAspect(f.name);b&&(g=b)}}if(await e.setSelectionsAndElements(t.stepName,[d],A,async()=>{e.updateMetadata(t.stepName,{color:h,text:g}),e.updateStorage(t.stepName,{text:g,inputText:g});const m=s.map(w=>new Sa(w.id,u)),f=new R(m);e.getCommandDispatcher()(f)}),s.length===0&&l){const m=j.getDefaultVariant(l);if(m){const f=await this.selectVariantCommand(t,m,{text:g},[],e,()=>{},()=>{});e.getCommandDispatcher()(f.command)}}else{const{command:m}=q.updateInputText(g||"",s,t,e);m&&e.getCommandDispatcher()(m)}}}}else{const c=e.getWorkflowExperience().getBundle();if(c&&t.globalPropertyAspectConfigurations){const u=c.getGlobalPropertyConfiguration()?.aspects?.find(A=>A.type===U.Text&&t.globalPropertyAspectConfigurations?.map(h=>h.aspectName).includes(A.name));if(u){const h=c.getGlobalPropertyStateManager().getAspect(u.name);if(h)if(s.length===0&&l){const g=j.getDefaultVariant(l);if(g){const p=await this.selectVariantCommand(t,g,{text:h},[],e,()=>{},()=>{});e.getCommandDispatcher()(p.command)}}else{const{command:g}=q.updateInputText(h,s,t,e);g&&e.getCommandDispatcher()(g)}}}}}getDefaultColorVariant(t){const e=t.colorOption;if(e)return j.getDefaultVariant(e)}getDefaultColor(t){const e=t.colorOption;return e?j.getDefaultVariant(e)?.color:void 0}getDefaultImageFillVariant(t){const e=t.imageFillOption;if(e)return j.getDefaultVariant(e)}getDefaultStrokeColorVariant(t){const e=t.strokeOption;if(e)return j.getDefaultVariant(e)}async fontDataFromVariant(t){const e=t.asset;if(!e)throw new pt(t);const a=e.fileLink;if(!a)throw new Qt(e);const r=await Pt(a);return{assetUrl:a,name:r.names.fullName.en}}async selectVariantCommand(t,e,a,r,i,o,s,l,c){const d=i.markUpdatePending(),u=await this.fontDataFromVariant(e);if(r.length>0){const A=r.map(p=>new Sa(p.id,u));if(l){const p=r.map(m=>new na(m.id,l));A.push(...p)}if(c){const p=r.map(m=>new ra(m.id,c,t.data.strokeThickness));A.push(...p)}const h=await this.changeInputTextWithRegion(t,t.data.size||oa,u,a.text||"",a,i,a?.customiseAllText??!1,o,s);return h&&A.push(h),{command:new R(A),followup:async()=>{i.markUpdateCompleted(d),await i.setSelectionsAndElements(t.stepName,[e],r)}}}else{const A=await this.createTextboxRegions(t.stepName,e,t.data,u,a,i),h=await this.changeInputTextWithRegion(t,t.data.size||oa,u,A[0]?.newElement.input||a.text||t.data.defaultText||"",a,i,a?.customiseAllText??!1,o,s),g=A.flatMap(m=>m.commands);if(l){const m=A.map(f=>new na(f.regionElement.id,l));g.push(...m)}if(c){const m=r.map(f=>new ra(f.id,c,t.data.strokeThickness));g.push(...m)}return h&&g.push(h),{command:new R(g),followup:async()=>{i.markUpdateCompleted(d)}}}}injectReplaceableText(t,e){return e.replaceableText?e.replaceableText.replace("{{}}",t):t}async createTextboxRegions(t,e,a,r,i,o){if(!a||!a.regions)throw new Error("Step data not supplied");const s=i.text||a.defaultText||"",l=Mt(s,o),c=this.getProcessedInput(l,a,!1),d=async A=>{const g=o.getLayouts().find(m=>m.panelId===A.panelId),p=M();try{if(!g)throw new Oe("Failed to find layout for region: "+A.panelId);const m=a.colorOption;let f;if(m&&m.variants){const H=m.variants.find(_=>_.id===m.defaultVariant?.id)||m.variants[0];f=this.createTextFillSpotColor(m,H),o.updateStorage(t,{colorProfileAssetKey:m.colorProfile?.key})}const w=await this.getDefaultColor(a),b=w||"#000000",F={stepRegion:A,stepName:t,align:this.textAlign(a),fill:i.color?i.color:b,fontSize:a.size||oa,fontData:r,id:p,layer:A.layer,layerIndex:A.layerIndex,rotation:A.rotation,text:c,input:s,type:D.Textbox,vertical:a.vertical,x:A.left,y:A.top,height:A.height,width:A.width,immutable:A.immutable,verticalAlign:a.verticalAlign||"middle",curved:a.curved,paths:a.paths,fillSpotColorDefinition:f},E=[],y=new Map,B=new Map;if(!F.fontData)throw new N("Failed to resolve font data for text.");const[x,I]=_t(F.fontSize,F.fontData,{left:F.x,top:F.y,width:F.width,height:F.height,rotation:F.rotation,panelId:""},[c],{size:a.size,minSize:a.minSize,maxSize:a.maxSize});y.set(F.id,x),B.set(F.id,I);const T=a.curved||a.vertical?c:(I||[]).join(`
1504
- `);E.push(this.generateTextChangeCommandsForRegion(x,a,F.id,T));const V=new z(F,g);return{regionElement:{id:p,region:A},commands:[V,...E],newElement:F,fontData:r}}catch(m){throw console.log(m),new Re("Error adding font to region")}},u=await Promise.all(a.regions.map(d)).catch(A=>{throw A instanceof Re?(br.setLatestToast("Failed to load font.",ye.Error),A):A instanceof Oe?A:new Error(A)});return await o.setSelectionsAndElements(t,[e],u.map(A=>A.regionElement),async()=>{o.updateMetadata(t,{text:s}),o.updateStorage(t,{text:s})}),u}generateTextChangeCommandsForRegion(t,e,a,r){const i=[],o=new Sr(a,r);if(i.push(o),!e.size){const l=new wr(a,t);i.push(l)}return new R(i)}async changeInputTextWithRegion(t,e,a,r,i,o,s,l,c,d){const u=(r||"").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,""),A=Mt(u,o),h=this.getProcessedInput(A,t.data,s),g=o.getRegionElements(t.stepName),p=new Map,m=new Map;for(const E of g)if(E.region){const[y,B]=_t(e,a,E.region,[h],{size:t.data.size,minSize:t.data.minSize,maxSize:t.data.maxSize});p.set(E.id,y),m.set(E.id,B)}const w=(()=>{if(t.data&&t.data.maxLength&&h.length>t.data.maxLength)return d&&d(!0),{info:"0"};const E=o.getWorkflowExperience().getProfanityList(),y=ua.split(h.toLowerCase());for(const B of y)for(const x in E){const I=E[x].toLowerCase().replace(/\s/g,"");if(B===I)return l(!0),{error:"Blocked profanity."}}return!t.data.vertical&&!t.data.allowNewlines&&(h.includes(`
1505
- `)||h.includes("\r"))?(l(!0),{error:"Cannot span multiple lines."}):!t.data.curved&&!Array.from(m.values()).every(x=>x)?(l(!0),{error:"Does not fit."}):(l(!1),{info:(t.data.maxLength-h.length).toString()})})();if(w.error){c(w.error);return}if(c(`${w.info} characters remaining`||""),d)return;o.updateStorage(t.stepName,{text:u}),o.updateMetadata(t.stepName,{text:this.injectReplaceableText(u,t.data)}),(i.defaultCleared||!t.data.deleteDefaultOnFocus)&&u.trim()!==""&&o.setMandatoryFulfilled(t.stepName,!0);const b=[];for(const E of g){const y=t.data.curved?h:(m.get(E.id)||[]).join(`
1506
- `);b.push(this.generateTextChangeCommandsForRegion(p.get(E.id)||1,t.data,E.id,y))}return new R(b)}}const q=new Hs;class Ys{}const Js="data:application/octet-stream;base64,AAEAAAAPAIAAAwBwRkZUTYdHeHoAAElcAAAAHEdERUYAJwBUAAAe2AAAAB5HUE9TkNtcVAAAHygAACoyR1NVQrj/uP4AAB74AAAAME9TLzJoWmUcAAABeAAAAGBjbWFwtkIacAAAAxAAAAJWZ2FzcP//AAMAAB7QAAAACGdseWY27KOUAAAGCAAAFcRoZWFkFPal0gAAAPwAAAA2aGhlYQU0Ar0AAAE0AAAAJGhtdHiADw6qAAAB2AAAAThsb2Nh5CzfJAAABWgAAACebWF4cACVAEwAAAFYAAAAIG5hbWXeIPPyAAAbzAAAAiJwb3N0ABeZTwAAHfAAAADdAAEAAAABAAAZ9vREXw889QALA+gAAAAA2ZexNAAAAADZl7E0ADL/yQJ2ArwAAAAIAAIAAAAAAAAAAQAAArz/wwAAAqsAAAAAAnYAAQAAAAAAAAAAAAAAAAAAAE4AAQAAAE4ASQAFAAAAAAACAAAAAQABAAAAQAAAAAAAAAAEAbsBkAAFAAACigK7AAAAjAKKArsAAAHfADEBAgAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAABYWFhYAEAACgCtArz/wwAAAqkANgAAAAMAAAAAAmQCZAAAACAAAgIPADIAAAAAAU0AAAAAAAAAAAAAALQAAAD3ADUCfQA1AcoANQKrADUCDQA1AX4ANQHYADUBNQA1AcgANQHUADUB8AA1AeEANQHpADUBqQA1AdAANQHpADUCqgA1Af8ANQGaADUB3wA1AbgANQFtADUBbQA1AekANQG8ADUA1QA1AYcANQHBADUBUAA1AhsANQHBADUB4QA1AZYANQH0ADUBxQA1AcUAMgGJADUBwwA1Ad0ANQJ1ADUB9wA1AcoANQF6ADUB3AA1Af8ANQGaADUB3wA1AbgANQFtADUBbQA1AekANQG8ADUA1QA1AYcANQHBADUBUAA1AhsANQHBADUB4QA1AZYANQH0ADUBxQA1AcUAMgGJADUBwwA1Ad0ANQJ1ADUB9wA1AcoANQF6ADUAtAAAAAAAAAAAAAMAAAADAAAAHAABAAAAAAFQAAMAAQAAABwABAE0AAAALgAgAAQADgAAAAoADQAhACYAKgA5AFoAXgB6AKAArQDFAM8A1gDdAOUA7wD2AP0A/wF4//8AAAAAAAoADQAgACMAKgAwAEAAXgBhAKAArQDAAMcA0QDYAOAA5wDxAPgA/wF4//8AAf/5//f/5f/k/+H/3P/W/9P/0f+s/6AAAAAAAAAAAAAAAAAAAAAA/0v+twABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAIAAwADoARABOAF4AaAAAAAAAAAAXABcAFwAXABcAFwAZABsAGwAbABsAHwAfAB8AHwAkACUAJQAlACUAJQAlACsAKwArACsALwAyADIAMgAyADIAMgA0ADYANgA2ADYAOgA6ADoAOgA/AEAAQABAAEAAQABAAEYARgBGAEYASgAAAQYAAAEAAAAAAAAAAQIDAAAEAAAAAAAAAAAAAAAAAAAAAQAABQYABwgJCgAAAAsAAAAAAAwNDg8QERITFBUAAAAAAAAWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAAAAAxAAAyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKSwAAAAAAFxcZGyQlKzIyMjIyMjQ2NjY2Ojo6Oj9AQEBAQEZGRkYAAAAAAAAAAAAAAAAAAAAlAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABMFxclAAAAAAAAAAAAAEovAAAAAAAAAAAAAAAXGxcbGx8fHx8lJQAlKysrAAAAAAAAAAAAAAAAAAAAACgAKAAoACgAKAAoADwAbgC0AQgBbgGQAcYB1AIGAkYCYAKSAtAC4gMoA2ADyAPgBBoEUAR4BI4EogTWBOoE9gUiBToFSAViBXoFqgXWBjAGWgaaBqwG2AbqBwYHIAc2B0wHXgd2B7AH5ggOCCQIOAhsCIAIjAi4CNAI3gj4CRAJQAlsCcYJ8AowCkIKbgqACpwKtgrMCuIK4griAAAABQAyAAAB3QK8AAMABgAJAAwADwAAEyERIRsCCwEREwMhAxMRMgGr/lUcubrGtMG5AXKttQK8/UQCqP7LATX+tgEs/acBGP7MAUn+0QJdAAACADUABQDCAmoAAwAHAAATESMRExUjNcGLi4sCaf5mAZr+KY2NAAAAAgA1AAACSAJkABsAHwAAJQcjNyMHIzcjNzM3IzczNzMHMzczBzMHIwczByc3IwcBthdrFkoXbBdeDl8KYA9fFWwVShVtFWoPagpqDscJSgqqqqqqqmxHbJqamppsR2xsR0cAAAEANf/JAZUCqgAwAAABFR4BByM0LgEjIgYVFBYXHgMVFA4BBxUjNS4BNTMUFjMyNjU0LgInJjU0Njc1ARwwPAF3CBQOExcsPCEwFgkZNyhnPkGDGRQTGBElHBprRzQCqkQNV0INGBIdFB8hGw4tMCkUJkU7EENDCmk8GiUgFBIeGA4LKXpKVxBEAAAABQA1/+8CdgJrAAwAGAAcACkAOAAAEzQ2MzIeARUUBiMiJjcVFBYzMjY1NCYiBiUDIxMDNTQ+ATMyFhQGIyImNxUUHgEzMjY1NC4BIyIGNk02JD0jTTc2TVEeFBUeHiodAWjhVeEtIz0kN01ONjZOUQ4YDRUeDhcOFR4B1j5XKEUoPldXPgEXISEYGCEhcf2dAmP+JgEoRChXfFdWPwEPGhAiGBAbDyIAAwA1AAAB2AJnACQAOQBIAAAlFwcnDgEjIiY1ND4CNyY1NDYzMhYVFA4IBxc3MyciBhUUHgQXPgU1NCYjAxY+ATcnDgUVFBYBmT8qQgdUMk1cDyETFDVTNzdPAwUJBw0HDgUMATUabPULGQQFCgUKAQENBAsEBBYNAQ8bEQRRAQ4ECwUEIbFNZEERMGJKHzMqEhFDQD9ZVjsLFxITDRAJDgULAUFBtRgSBw4LDwcOAQEQBg8LDwcPGf58AQsOB2IBDQUOCg8IGyQAAAAAAQA1ATwBSQJtABEAABMHNxcHFwcnFyM3Byc3JzcXJ+YXVSVnZyhTGE0WUShnZyVWGAJselJLJSVOVXp7Vk4nI0tReQACADUAAAGjAmQAFwAmAAA3NTQ+AzMyHgMdARQOAiMiLgI3FRQeATMyPQE0IyIOAjYZJzIvFxQtMicaIjc9Hh09OiR8CBsXOTkSGAsF4KQxTzEhDQwhMFAypDtaMhkYMlvjrBUkH1isVxEeGgABADUAAAEAAmEABQAAMxEjNTMRhE7KAd6D/Z8AAQA1AAMBkwJmACEAADc1Njc+AzU0JiMiByM+Ajc+AzMyFhUUBgcGBzMVOi5WFxkaCx0XMQJ2AQINDQ4qLCIQTlkjLkAargN3L1kYHCcoFyIhXhsgNxccJxIHbU04WDRHHYEAAAEANQAAAZ8CZAAtAAATNjc2MzIWFRQOAwcWFRQGIyImJyYnMxYXMjY1NC4DKwE1MzI1NCYjIgdDAjktP0RVCw0VCwlca0otVRYVBn4KLhobCg8UDQcsFT0RESQCAaxgMCdfQRcoGBcIBiVpTWwrKCRENgElHRAYCwcCbzsVHjMAAgA1//8BuwJjAAoADQAAITUjNRMzETMVIxUnMzUBDdfadDY20WJrcgGF/oN6a+XAAAAAAAEANf//AawCYwAgAAABFSMHNjMyHgIVFA4CIyIuASczFjMyNjU0JiMiBycTAX+uCxsnKUIlExYrSy8zUS8HfRYjGygkHy4SZSoCYoBSEic+QyEkSkIqL00xJi8hHy80HwFTAAACADUAAAG0AmIAFgAoAAABMhYVFAYjIiYnJjU0PwEzBw4BBzAyNgMyPgE1NC4EIyIGFRQeAQEaO19vTy9QGCksepBYAw4CCA0kEx8TBAgLDxQLHSUVHQGvbF9kgConOV1LVdqUBRYFAv7XFCYXChMSEAwHLyEaJxIAAAAAAQA1//8BdAJjAAYAABMhFQMjEyM2AT6sibS9AmJ3/hUB3wAAAwA1AAABmwJkABkAJAAuAAATNTQ2MhYVFA4BBxYVFA4BIi4BNTQ3LgMXFRQWMjY1NCYiBjcVFBYyNjQmIgZCVqBWFBAMPC1RaFEtPAkLEgpwHjAdHTAeCRskGxskGwG/AUJhYkIeMxINJGU5WjMzWjllJAkNHSbhARgqKhkaKirTARcfHy8fHwAAAAACADUAAAG0AmQAFgAkAAA/AT4BNyYOASMiJjU0NjMyFhcWFRQPARM1NC4BIyIGFRQWMzI2fVgDDQQBCA0EO15uTy9QGCoteSsVHhAcKCUfHiUBlAQWBgEBAWxfZIAqJzldTFXaAYkBGiYSLiIgMi4AAgA1/8wCdQJtADgASAAAAQcGBwYzMjY1NCYjIgYHBh4DFxY3FQYnLgQ3ND4CMzIWFRQGIyInBicuATU0NjMyFhc3BzY1NC4CJyYGHQEUFjc2AfscBAIBFhYmbFVhdgcBBhwtVThNX01cQGlGMBUBLExzQniZWjs3FB07NT1PQBwoBwgqCQIHEg0gKCAUIQG2ux0NGVo8Wm2Laxg2RTcpBAUfWxsCASlBVlsvQHpfOqF8XZBBNwEBWkRIcyAWKMkaIgcQGBEBAz8rAyYjAQIAAAIANQAAAcgCZQAHAAoAADcHIxMzEyMvAge8GG6bYJdvGhknK3JyAmT9nHJz1tYAAAMANQABAWQCaAAPABoAJQAANxEzMhcWFRQHFhUUBw4BIwMzMjc2NTQnJisBFxUzMjc2NTQnJiM2lEAiJC9DJhszNx0mEgkQEAgUJQExFAsVFAoWAgJlKShQUygka1cuIhMBfAYLIB4LBuNwCA4mIgwGAAAAAQA1AAABqQJnACUAACUzDgEjIi4CNTQ+AjMyHgMXIy4DIyIOARUUFjMyPgIBSWAQX0cxSiwWFStLMSM7KB4QA2AFDhQfER4pEi8qFCEUCulrfjNXbD47alk0HzJAPR0SISATNEwsSWcXJxkAAgA1AAABgwJlAA8AGAAAMxEzMh4DFxYVFA4CIwMRMzI1NCcmIzZ/EhcsICYOJBUtTzUiKF4TFzMCZAEMFi4hT29BbFcwAdr+r6dDLjkAAAABADUAAAE3AmUACwAAEyEVIxUzFSMVMxUhNgEBlpGSlv8AAmR4cHmKeQAAAAEANQAAATcCZQAJAAAzESEVIxUzFSMRNgEBmJOTAmR5b3r+/gAAAAABADUAAAG3AmYAIQAAARUmBw4CFRQeAjMyNzY3IzUzFgcGIyIuATU0NjMyFhcBQBQ3FygbEBkgESEWGQVr0wUTMH89WCpiX0haEAGbAUgCASNPOC1FKhUaHDlpZkOyVYlXiaZvWwAAAAEANQAAAYYCZQALAAAzIxEzFTM1MxEjNSOcZmaDZ2eDAmTm5v2c9QABADUAAACgAmUAAwAAMxEzETZpAmT9nAABADUAAAFRAmUAGgAAAREUBwYHBiMiLgMnJjUzFBYVFjMyNzY1EQFQDQ8fJi4IESsgIAUCcQEEGxUHBAJk/pZkLCscIwIRHkEsFxcCDAQzGxAhAZEAAAAAAQA1//8BiwJmAAoAABcRMxETMwMTIwMRNmdzbISTfnABAmb+7AEU/s/+zAEJ/vYAAQA1AAABGgJlAAUAADMRMxEzFTZpewJk/iaKAAEANQAAAeUCZQAMAAAzIxEzGwEzESMTAyMDlmCLTEuMYARZRVgCZP52AYr9nAHK/jYBygABADUAAAGMAmUACQAAGwEDMxEjAxMjEZ2NAWNikwJjAmT+lAFs/ZwBaf6XAmQAAAACADUAAAGsAmUADAAfAAATNDYzMhYVFA4BIyImNxQWMzI+BDU0LgIjIg4BNmRWUWs0VDRWZGgqKg8aEQ0IAwgSIhceJw4BLKGXmJpfjUaelUtjDxohKCcUHzo1IDVKAAACADUAAAFgAmYAEAAbAAATMzIeARcWFRQGBw4BKwEVIxMVMzI3NjU0JyYjNoEjMRoMLhcSFjEtKGRkJRoNGBkOHAJlCxMPO2cvWRkdGMAB3ZMJEi8uEQoAAwA1//8BvwJmABsALgA8AAAlFwYiLgInDgIjIi4BNTQ+ATMyFhUUBx4CAyIOBAc2MzIXFhc2NTQuAQMeAzsBMjcmJyYjIgG9AQINGRgcChMsFBM+VycmWD1Uah0GDQzAERwSDQcCARgVKCIbHQkbLGgGFRUTBgYWDhEOGSAPenkBAggSDRMTAlaGU1GIXK5/ZUkIBwEBZxIgHScLCBEoHzQeLTJOKP7/HCgQCQwiFSMAAAAAAgA1//8BjwJmAA0AGgAAJRcjJxUjETMXFhcWFRQnNjU0LgInKwEVMzIBDYF+cGpqOi4UW4QYCxARBQY1Lhb7++vqAmQBBQosgohEFyoVHg4IAZkAAQAyAAABjwJnACsAADczFBY3NjU0JicuAycmPgEzMhYXIy4DIyIGFRQWFx4BFRQOAiMiJjZ2JBIyJjwRICobAQE0TSs5WQp0AQMJEg0RHCdBQTEUJkQsXFbFKx8BBDgWIB4JFyg7ITlVKFRbCwwTCh0UFSIkJEc2JUE3IGkAAAABADUAAAFTAmUABwAAMxEjNSEVIxGLVQEdVQHseHj+FAAAAAABADUAAAGNAmUAGgAAEzMRFBceATI2NzY1ETMRFA4BBwYjIiYnLgE1NmsIBR8qHgUIagcQDjBUIk0ZGQwCZP6WLhsSGBYQFzUBa/6WM0MvFEEcJCZISwAAAQA1AAABpwJlAAYAADMDMxsBMwO2gGdQUWmAAmT+UwGt/ZwAAQA1AAACQAJkAAwAADMDMxsBMxsBMwMjCwGfaWk4PFA8OGhrWz4+AmP+cwGN/nEBj/2dAYz+dAABADUAAAHBAmUACwAAMxMDMxc3MwMTIycHNop6c0NCcnmJc1VRAUYBHq6u/t/+vdnZAAAAAQA1AAABlAJlAAkAADczAzMXNzMDFSOsAXdvQUFtd3HrAXn29v6H6wAAAAABADUAAAFDAmYACQAAAQMzFSE1EyM1IQFDiIj+85OTAQ0B5v6kimcBdYkAAAEANQFFAaYCagAGAAAbATMTIycHNnx3fYE4NwFFAST+3LOzAAIANQAAAcgCZQAHAAoAADcHIxMzEyMvAge8GG6bYJdvGhknK3JyAmT9nHJz1tYAAAMANQABAWQCaAAPABoAJQAANxEzMhcWFRQHFhUUBw4BIwMzMjc2NTQnJisBFxUzMjc2NTQnJiM2lEAiJC9DJhszNx0mEgkQEAgUJQExFAsVFAoWAgJlKShQUygka1cuIhMBfAYLIB4LBuNwCA4mIgwGAAAAAQA1AAABqQJnACUAACUzDgEjIi4CNTQ+AjMyHgMXIy4DIyIOARUUFjMyPgIBSWAQX0cxSiwWFStLMSM7KB4QA2AFDhQfER4pEi8qFCEUCulrfjNXbD47alk0HzJAPR0SISATNEwsSWcXJxkAAgA1AAABgwJlAA8AGAAAMxEzMh4DFxYVFA4CIwMRMzI1NCcmIzZ/EhcsICYOJBUtTzUiKF4TFzMCZAEMFi4hT29BbFcwAdr+r6dDLjkAAAABADUAAAE3AmUACwAAEyEVIxUzFSMVMxUhNgEBlpGSlv8AAmR4cHmKeQAAAAEANQAAATcCZQAJAAAzESEVIxUzFSMRNgEBmJOTAmR5b3r+/gAAAAABADUAAAG3AmYAIQAAARUmBw4CFRQeAjMyNzY3IzUzFgcGIyIuATU0NjMyFhcBQBQ3FygbEBkgESEWGQVr0wUTMH89WCpiX0haEAGbAUgCASNPOC1FKhUaHDlpZkOyVYlXiaZvWwAAAAEANQAAAYYCZQALAAAzIxEzFTM1MxEjNSOcZmaDZ2eDAmTm5v2c9QABADUAAACgAmUAAwAAMxEzETZpAmT9nAABADUAAAFRAmUAGgAAAREUBwYHBiMiLgMnJjUzFBYVFjMyNzY1EQFQDQ8fJi4IESsgIAUCcQEEGxUHBAJk/pZkLCscIwIRHkEsFxcCDAQzGxAhAZEAAAAAAQA1//8BiwJmAAoAABcRMxETMwMTIwMRNmdzbISTfnABAmb+7AEU/s/+zAEJ/vYAAQA1AAABGgJlAAUAADMRMxEzFTZpewJk/iaKAAEANQAAAeUCZQAMAAAzIxEzGwEzESMTAyMDlmCLTEuMYARZRVgCZP52AYr9nAHK/jYBygABADUAAAGMAmUACQAAGwEDMxEjAxMjEZ2NAWNikwJjAmT+lAFs/ZwBaf6XAmQAAAACADUAAAGsAmUADAAfAAATNDYzMhYVFA4BIyImNxQWMzI+BDU0LgIjIg4BNmRWUWs0VDRWZGgqKg8aEQ0IAwgSIhceJw4BLKGXmJpfjUaelUtjDxohKCcUHzo1IDVKAAACADUAAAFgAmYAEAAbAAATMzIeARcWFRQGBw4BKwEVIxMVMzI3NjU0JyYjNoEjMRoMLhcSFjEtKGRkJRoNGBkOHAJlCxMPO2cvWRkdGMAB3ZMJEi8uEQoAAwA1//8BvwJmABsALgA8AAAlFwYiLgInDgIjIi4BNTQ+ATMyFhUUBx4CAyIOBAc2MzIXFhc2NTQuAQMeAzsBMjcmJyYjIgG9AQINGRgcChMsFBM+VycmWD1Uah0GDQzAERwSDQcCARgVKCIbHQkbLGgGFRUTBgYWDhEOGSAPenkBAggSDRMTAlaGU1GIXK5/ZUkIBwEBZxIgHScLCBEoHzQeLTJOKP7/HCgQCQwiFSMAAAAAAgA1//8BjwJmAA0AGgAAJRcjJxUjETMXFhcWFRQnNjU0LgInKwEVMzIBDYF+cGpqOi4UW4QYCxARBQY1Lhb7++vqAmQBBQosgohEFyoVHg4IAZkAAQAyAAABjwJnACsAADczFBY3NjU0JicuAycmPgEzMhYXIy4DIyIGFRQWFx4BFRQOAiMiJjZ2JBIyJjwRICobAQE0TSs5WQp0AQMJEg0RHCdBQTEUJkQsXFbFKx8BBDgWIB4JFyg7ITlVKFRbCwwTCh0UFSIkJEc2JUE3IGkAAAABADUAAAFTAmUABwAAMxEjNSEVIxGLVQEdVQHseHj+FAAAAAABADUAAAGNAmUAGgAAEzMRFBceATI2NzY1ETMRFA4BBwYjIiYnLgE1NmsIBR8qHgUIagcQDjBUIk0ZGQwCZP6WLhsSGBYQFzUBa/6WM0MvFEEcJCZISwAAAQA1AAABpwJlAAYAADMDMxsBMwO2gGdQUWmAAmT+UwGt/ZwAAQA1AAACQAJkAAwAADMDMxsBMxsBMwMjCwGfaWk4PFA8OGhrWz4+AmP+cwGN/nEBj/2dAYz+dAABADUAAAHBAmUACwAAMxMDMxc3MwMTIycHNop6c0NCcnmJc1VRAUYBHq6u/t/+vdnZAAAAAQA1AAABlAJlAAkAADczAzMXNzMDFSOsAXdvQUFtd3HrAXn29v6H6wAAAAABADUAAAFDAmYACQAAAQMzFSE1EyM1IQFDiIj+85OTAQ0B5v6kimcBdYkAAAAAEADGAAEAAAAAAAEACAASAAEAAAAAAAIABwArAAEAAAAAAAMAFQBfAAEAAAAAAAQACACHAAEAAAAAAAUAIgDWAAEAAAAAAAYADwEZAAEAAAAAABAACAE7AAEAAAAAABEABwFUAAMAAQQJAAEAEAAAAAMAAQQJAAIADgAbAAMAAQQJAAMAKgAzAAMAAQQJAAQAEAB1AAMAAQQJAAUARACQAAMAAQQJAAYAHgD5AAMAAQQJABAAEAEpAAMAAQQJABEADgFEAFYAZQBnAGUAbQBpAHQAZQAAVmVnZW1pdGUAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAADEALgAwADAAMgA7AFYAZQBnAGUAbQBpAHQAZQBSAGUAZwB1AGwAYQByAAAxLjAwMjtWZWdlbWl0ZVJlZ3VsYXIAAFYAZQBnAGUAbQBpAHQAZQAAVmVnZW1pdGUAAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADIAOwBGAG8AbgB0AHMAZQBsAGYAIABNAGEAawBlAHIAIAAzAC4AMwAuADAAAFZlcnNpb24gMS4wMDI7Rm9udHNlbGYgTWFrZXIgMy4zLjAAAFYAZQBnAGUAbQBpAHQAZQBSAGUAZwB1AGwAYQByAABWZWdlbWl0ZVJlZ3VsYXIAAFYAZQBnAGUAbQBpAHQAZQAAVmVnZW1pdGUAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAAAAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAABOAAAAAQACAQIBAwADAAQABgAHAAgACQANABMAFAAVABYAFwAYABkAGgAbABwAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0AQQBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0ArAEECWNvbnRyb2xMRgljb250cm9sQ1IKc29mdGh5cGhlbgAAAAAAAAH//wACAAEAAAAMAAAAFgAAAAIAAQABAE0AAQAEAAAAAgAAAAAAAQAAAAoALAAuAAJERkxUAA5sYXRuABgABAAAAAD//wAAAAQAAAAA//8AAAAAAAAAAQAAAAoAMAA+AAJERkxUAA5sYXRuABoABAAAAAD//wABAAAABAAAAAD//wABAAAAAWtlcm4ACAAAAAEAAAABAAQAAgAAAAEACAABKd4ABAAAAEYAlgEwAd4CjAM2A+AEegUsBWYGDAa+B3AIHgjQCYIKNAriC4gMAgx0DOYNZA3mDlQOyg88D54QEBCGEQARchHsEmIS1BOWFAwUghTwFWIV1BaiFxQXkhgEGMYZdBomGtQbfhwYHL4dYB3+HpgfPh/oIJYhPCHmIpQjRiPsJJolSCXuJpQnQifoKJIpRAAmAAn/8QAK//sADP/7AA3/+wAO//sAD//7ABD/+wAR//sAEv/7ABP/+wAU//sAFf/xABb/8QAZ//sAHf/2AB7/+wAf//sAIP/xACH/+wAi//sAI//7ACT/+wAl//EAJv/2ACf/8QAo//sAKf/2ACr/+wAr//sALP/sAC3/7AAu/+IAL//dADD/9gAx/+wAMv/7ADP/+wA0//YAKwAG//EACP/nAAn/4gAK/9MAC//iAAz/9gAN/+IADv/sAA//4gAQ/9gAEf/iABL/1QAT//EAFP/nABX/8QAW/9gAMf/TADL/pgAz//MANP/nADX/8QA2//EAN//7ADj/7gA5//YAOv/7ADv/2AA8//EAPf/2AD7/9gA///EAQP/sAEH/+wBC/+wAQ//xAET/7ABF/+wARv/2AEf/3QBI/90ASf/EAEr/zgBL//YAKwAG//YAB//2AAn/3QAL/+wADP/sAA3/8QAO//YAD//sABD/8QAR/+wAEv/iABP/5wAU/+wAFf/dABb/7AAX/78AMf/YADL/sAAz/+IANP/iADX/8QA2/+cAN//xADj/3QA5/+wAOv/2ADv/4gA8//EAPf/xAD7/8QA///YAQP/YAEH/9gBC/+cAQ//sAET/7ABF/+wARv/xAEf/zgBI/9MASf/OAEr/zgBL/+wAKgAG//YAB//iAAj/4gAK/+IADP/dAA3/ugAO/+IAD//iABD/5wAR/+IAEv/dABP/yQAU/90AFf+mABb/0wAx/5gAMv/YADP/4gA0/9MANf/xADb/7AA3/+wAOP/iADn/7AA6//EAO//dADz/5wA9/+wAPv/sAD//5wBA/9gAQf/sAEL/zgBD/+wARP/YAEX/tQBG/90AR/+hAEj/oQBJ/8QASv+DAEv/7AAqAAb/8QAH/90ACP/YAAn/oQAL/8kADP/iAA3/sAAO/+cAD//YABD/4gAR/90AEv/bABP/4gAU/+IAFf/TABb/5wAg/+QAMf/nADL/3AAz//QANP/rADX/9AA2//IAN//4ADj/8AA5//QAOv/1ADv/7AA8/+oAPf/7AD7/9wA///IAQP/tAEH/+wBC/+IAQ//2AET/4wBF/7YARv/vAEf/pgBK/6MAS//yACYAB//TAAj/8QAK/84ADP/dAA3/9gAO//EAD//dABD/pgAR/8kAEv+6ABP/7AAU/90AFf/OADH/xAAy/5IAM//sADT/3QA1/+cANv/xADf/9gA4/90AO/9WADz/5wA9//EAPv/sAD//5wBA/84AQf/dAEL/0wBD/+cARP/nAEX/5wBG/+cAR//dAEj/2ABJ/7oASv/JAEv/4gAsAAb/+wAH//sACP/xAAn/zgAK/+cAC//dAAz/9gAN/9gADv/tAA//7AAQ/+kAEf/rABL/3QAT/90AFP/hABX/3QAW/90AMf/nADL/vwAz/+cANP/nADX/8QA2//EAN//sADj/5wA5//YAOv/2ADv/4gA8//EAPf/2AD7/+wA///sAQP/2AEH/+wBC/+wAQ//7AET/7ABF/9MARv/7AEf/yQBI/84ASf+wAEr/xABL/+cADgAG//sACf/xAAv/7AAN//sADv/7AA8AAAAR//EAEv/0ABP/9gAU//EAFf/xABb/7AAx//YAQP/2ACkABv/7AAf/9gAI//sACf/iAAr/5wAL/+wADP/vAA3/3QAO//sAD//qABD/8QAR/+wAEv/nABP/8QAU/+cAFf/iABb/7AAx/+cAMv/vADP//AA0/+cANf/7ADb//gA4//EAOf/8ADr//AA7/+kAPP/6AD3//QA+//4AP//7AEL/6gBD//0ARP/2AEX/7ABG//EAR//YAEj/4gBJ/+wASv/LAEv//AAsAAb/+wAH//EACP/2AAn/0wAK/+IAC//JAAz/5wAN/90ADv/iAA//7AAQ/+cAEf/sABL/3QAT/9MAFP/iABX/zgAW/+cAMf/YADL/xAAz/+wANP/dADX/6AA2//EAN//xADj/4wA5//EAOv/2ADv/7AA8/+wAPf/sAD7/9gA//+wAQP/iAEH/8QBC/90AQ//nAET/5wBF/8QARv/mAEf/xABI/8kASf+1AEr/rQBL/+IALAAG//sAB//7AAj/9gAJ/9MACv/2AAv/ugAM/+kADf/dAA7/9gAP/+wAEP/2ABH/8AAS//EAE//2ABT/5wAV/9gAFv/sADH/vwAy/9UAM//eADT/3wA1//EANv/xADf/9gA4/+IAOf/xADr/9gA7/+wAPP/xAD3/9gA+//EAP//2AED/2ABB//EAQv/nAEP/9gBE/+cARf/TAEb/8QBH/9gASP/YAEn/xgBK/78AS//xACsABv/7AAf/9gAI/+wACf/TAAr/5wAL/90ADP/lAA3/zgAO/90AD//dABD/7AAR/+IAEv/iABP/2AAU/+IAFf/JABb/5wAx/90AMv/EADP/6wA0/+EANf/wADb/8AA4/9wAOf/dADr/7AA7/9gAPP/sAD3/5wA+/+wAP//iAED/0wBB/+IAQv/YAEP/4gBE/84ARf/JAEb/4gBH/8kASP/OAEn/vwBK/8kAS//TACwABv/7AAf/3wAI/+cACf+wAAr/4wAL/8kADP/dAA3/xwAO/+cAD//dABD/7AAR/+cAEv/iABP/yQAU/9cAFf+/ABb/4gAa/+kAMf/YADL/uwAz/+EANP/dADb/6wA3//MAOP/lADn/8QA6//IAO//eADz/5wA9/+4APv/zAD//8ABA/+IAQf/2AEL/6gBD//YARP/kAEX/zABG/+8AR/+0AEj/uwBJ/64ASv+vAEv/5QAsAAb/+wAH/90ACP/nAAn/4gAK/9MAC//nAAz/3QAN//YADv/eAA//3QAQ/7AAEf/OABL/sAAT//sAFP/dABX/0wAW/9MAMf/iADL/iAAz//YANP/OADX/9gA2//EAN//xADj/0wA5//YAOv/zADv/gAA8//EAPf/7AD7/+wA///YAQP/OAEH/7gBC/84AQ//2AET/2ABF//sARv/2AEf/5wBI/+cASf/TAEr/4gBL/+wALAAG//sAB//2AAj/8QAJ/9gACv/nAAv/3QAM/+IADf/dAA7/4gAP/+IAEP/nABH/5wAS/9gAE//YABT/3QAV/84AFv/sADH/5wAy/78AM//nADT/2AA1/+cANv/nADf/7AA4/90AOf/sADr/7AA7/+cAPP/sAD3/8QA+/+wAP//xAED/4gBB//EAQv/dAEP/5wBE/+IARf/YAEb/5wBH/78ASP/HAEn/sABK/7UAS//dACsABv/xAAf/8QAI/+IACf/dAAr/0wAL/+IADP/iAA3/3QAO/+cAD//dABD/zgAR/9MAEv/EABP/0wAU/84AFv/dADH/4gAy/6EAM//jADT/3QA1/+wANv/sADf/5wA4/90AOf/nADr/8QA7/78APP/xAD3/9gA+/+wAP//nAED/3QBB/+cAQv/nAEP/5wBE/+IARf/OAEb/3QBH/8QASP/JAEn/lwBK/7oAS//YACkABv/sAAf/0wAI/90ACf/OAAr/3QAM/90ADf/EAA7/5wAP/9gAEP/YABH/3QAS/9MAE//YABT/4gAV/90AMf/sADL/wAAz/+8ANP/kADX/6wA2//AAN//2ADj/5AA5//EAOv/uADv/1gA8//QAPf/2AD7/8QA///AAQP/dAEH/7ABD/+gARP/YAEX/1QBG/+wAR/+3AEj/wwBJ/7UASv+wAEv/5gAeAAf/zgAi/+4AI//5ACT/7wAy/9AAM//pADT/sQA1/+sANv/nADf/5gA4/7oAOf/vADr/9wA7/9AAPP/sAD3/6wA+/+YAP//sAED/uwBB/+kAQv+7AEP/5ABE/9QARf+6AEb/0ABH/34ASP+SAEn/zQBK/5sAS//nABwAF//RACT//wAy/9EAM//uADT/5wA1/+8ANv/3ADf/7gA4/+gAOf/3ADr/+wA7/9oAPP/vAD3/9wA+/+4AP//vAED/4QBB//cAQv/nAEP/7wBE/+4ARf/QAEb/9wBH/8EASP/MAEn/wwBK/7sAS//nABwAF//QABv/+QAy/8EAM//zADT/6wA1//sANv/zADf/+wA4/+8AOf/zADr//gA7/+EAPP/vAD3/9wA+//kAP//3AED/4gBB//kAQv/jAEP/8wBE/+YARf/VAEb/+QBH/84ASP/JAEn/twBK/8EAS//rAB8ABv/7ABL/3wAX/8kAJf/5ACv/7wAy/7oAM//zADT/6wA1/+8ANv/uADf/8wA4/+oAOf/vADr/7wA7/9QAPP/5AD3//gA+//EAP//vAED/4wBB//MAQv/mAEP/7gBE/+cARf/XAEb/6wBH/8kASP/JAEn/twBK/7cAS//nACAABv/7ACQAAgAl/+8AJ//5AC3//gAv//4AMv/oADP//QA0/+sANf/7ADb/+gA3//sAOP/jADn/9wA6//oAO//kADz//wA9//0APv/+AD8AAABA/+gAQf/7AEL/6ABD//sARP/sAEX/8QBG//sAR//qAEj/6wBJ/+cASv/qAEv/+QAbAAb/+wAl/+8AMv+5ADP/+wA0/+8ANf/7ADb/+wA3//0AOP/vADn/+wA6AAAAO/+7ADz//gA9//4APv/7AED/7ABB//4AQv/nAEP/+QBE//kARf/7AEb/+QBH//MASP/rAEn/4gBK/+8AS//7AB0ABv/2ABf/zgAl/+8AMv+3ADP/9wA0/+sANf/3ADb/8QA3//kAOP/uADn/8wA6//sAO//YADz/8wA9/+4APv/3AD//8wBA/+MAQf/3AEL/6QBD/+8ARP/nAEX/1ABG/+8AR//JAEj/zABJ/6YASv/JAEv/3AAcAAb/+wAX//MAJf/7ADL/6wAz//4ANP/uADX/+wA2//4AN//+ADj/8wA5//0AOv/+ADv/7gA8//4APf/+AD7/+wA///4AQP/uAEL/9wBD//4ARP/+AEX/+QBG//4AR//uAEj/9wBJ/+4ASv/zAEv//gAYAAb/+wAx//YAMv/rADP//wA0//MANf//ADYAAQA3//8AOP/zADv/6AA8//4APf/+AD4AAQBA/+4AQf//AEL/8wBD//4ARP/4AEX//QBH/+wASP/3AEn/7ABK//EASwABABwABv/2ABf/4QAy/8oAM//9ADT/+QA1//4ANv/7ADf//gA4//MAOf/+ADr//wA7/+EAPP/7AD3//gA+//4AP//+AED/7wBB//4AQv/zAEP//gBE//sARf/7AEb//gBH/+8ASP/5AEn/2gBK//oAS//+AB0ABv/nABf/5wAx/7AAMv/hADP/7gA0/7QANf/rADb/5wA3/+4AOP+sADn/6wA6//kAO/+3ADz/6gA9/+8APv/nAD//5wBA/6wAQf/uAEL/rgBD/+cARP+8AEX/3ABG/9oAR//cAEj/0QBJ/9oASv/RAEv/7wAeAAb/9gAX//cAI//9ADH/vwAy/+4AM//5ADT/2gA1//4ANv/3ADf/+wA4/9oAOf/3ADr/+wA7/+cAPP/7AD3/+QA+//cAP//5AED/1ABB//sAQv/cAEP/9wBE/+8ARf/JAEb/6wBH/8QASP++AEn/5wBK/8EAS//+ABwAF//7ADH/7AAy/+QAM//+ADT/7gA1//4ANgAAADf//QA4//cAOf/7ADr//gA7/+4APP/+AD3//gA+//0AP//7AED/7wBB//4AQv/uAEP//gBE//cARf/7AEb/+QBH/+gASP/vAEn/6wBK/+gAS//+AB4ABv/7ABf/8wAa//4AHf/3ACX/9wAq//4AMf/2ADL/5AAz//0ANP/zADX/+wA2//4AN//+ADj/+QA7/+4APf/+AD7/+wA///4AQP/2AEH/+gBC/+4AQ//7AET/+QBF//sARv/+AEf/8wBI/+8ASf/zAEr/6wBL//4AHQAG//EAJP/3ADH/7AAy/7sAM//sADT/4wA1/+8ANv/vADf/9wA4/+QAOf/qADr/9wA7/98APP/vAD3/9wA+/+sAP//uAED/4wBB/+4AQv/mAEP/7wBE/+IARf/VAEb/7gBH/8MASP/GAEn/uwBK/7oAS//fABwABv/sACT//gAy/54AM//rADT/6gA1//EANv/rADf/9wA4/+MAOf/oADr/9wA7/64APP/sAD3/8QA+/+wAP//sAED/4QBB//MAQv/oAEP/5ABE/9gARf/kAEb/7gBH/9EASP/QAEn/uwBK/8QAS//zADAAF//3ABj//wAZ/+kAGv//ABv//QAc//4AHf/pAB7/+wAf//8AIP/iACH//gAi//8AI//+ACT//wAl/+IAJ//uACj//gAp/+cAKv/hACv/+QAs/8MALf/QAC7/5AAv/8wAMP//ADL/4QAz//4ANP/jADX/9wA3//kAOP/fADn/9wA7/+IAPP/5AD3/+gA+//EAP//6AED/2gBB/+8AQv/aAET/7wBF/9cARv/qAEf/xgBI/7sASf/qAEr/tABL//sAHQAG/+cAF//oACT/+gAy/+IAM//xADT/zAA1/+8ANv/sADf/+gA4/8wAOf/3ADr/8wA7/8kAPP/uAD3/7wA+/+wAP//rAED/yQBB//cAQv/MAEP/+ABE/9QARf/KAEb/2gBH/8EASP/EAEn/4gBK/7cAS//vAB0ABv/xABv/+QAl/+4AMv+8ADP/7wA0/9wANf/zADb/6AA3//cAOP/hADn/5gA6//MAO//aADz/6QA9//MAPv/pAD//6wBA/+MAQf/3AEL/2gBD/+kARP/rAEX/1ABG/+kAR//JAEj/zABJ/7QASv+7AEv/5wAbAAb/9gAy/6YAM//9ADT/0wA1//oANv/+ADf//QA4/9UAOf/3ADr//wA7/7kAPP/6AD3//gA+//sAP//7AED/0ABB//oAQv/XAEP/+QBE/+IARf/zAEb/9wBH/+8ASP/vAEn/6gBK/+cAS//6ABwABv/7ACQAAgAy/9UAM//7ADT/7wA1//cANv/9ADf//wA4/+4AOf/7ADr//wA7/+sAPP/+AD3//gA+//0AP//6AED/7gBB//sAQv/sAEP/+wBE/+8ARf/7AEb//QBH/+8ASP/qAEn/3wBK//gAS//+ABwABv/nABf/lQAy/4IAM//3ADT/wQA1/+kANv/nADf/+gA4/8QAOf/oADr/6wA7/5UAPP/uAD3/+wA+//cAP//vAED/wQBB/+8AQv/DAEP/5wBE/84ARf/uAEb/7gBH/+kASP/pAEn/zgBK/+4AS//7ADMABv/sABf/owAY//kAGf/XABr//gAb//4AHP/5AB3/0AAe//gAIP+tACH/8wAi//4AJP/+ACX/0AAm//kAJ//MACj//gAp/9oAKv/+ACv//gAs/+MALf/zAC7/3AAv//cAMP/7ADL/jwAz/+oANP/CADX/7wA2/+oAN//3ADj/xgA5/+sAOv/6ADv/qgA8/+sAPf/7AD7/7wA//+8AQP++AEH/7gBC/8MAQ//qAET/1QBF/+sARv/pAEf/6ABI/+cASf/iAEr/2gBL/+4AHAAG/+cAF//hADL/1AAz/+sANP+wADX/6wA2/+QAN//jADj/qgA5/+cAOv/jADv/ugA8/+cAPf/vAD7/2gA//+kAQP+uAEH/7wBC/64AQ//kAET/uwBF/9oARv/aAEf/zABI/84ASf/TAEr/zQBL/+sAHwAG/+IAF/+lACP//gAk//sAL//uADL/hwAz/+8ANP+sADX/+AA2/9wAN//6ADj/uQA5/+4AOv/vADv/hAA8/+gAPf/pAD7/5wA//+YAQP+wAEH/6QBC/7oAQ//vAET/zgBF/+gARv/oAEf/2gBI/+YASf/QAEr/4gBL/+kAHAAG//sAF//+ADL/5wAz//sANP/kADX/+wA2//8AN//7ADj/4QA5//4AOv//ADv/6wA8//sAPf/+AD7//gA///sAQP/hAEH/+wBC/9oAQ//+AET/7wBF//sARv/6AEf/6QBI//kASf/rAEr/6QBL//sAMAAG/+wAB//YAAj/3QAJ/9MACv+/AAv/yQAM/+IADf/YAA7/7AAP/9MAEP/JABH/5wAS/+IAE//OABT/4gAV/+wAFv/nACD/WwAh/+wAIv/xACP/8QAk//YAJf/xADL/oQAz/+wANP/nADX/7AA2//sAN//2ADj/9gA5//sAO/+PADz/7AA9//YAPv/sAD//8QBA/+IAQf/nAEL/7ABD/+IARP/JAEX/zgBG/+cAR/+/AEj/xABJ/5IASv+/AEv/4gArAAb/9gAI/8QACf+cAAr/zAAL/5QADP+6AA3/xAAO/+oAD//BABD/zgAR/78AEv+7ABP/2AAU/78AFf+mABcAAgAk/+cAMf+mADL/2AAz/+cANP+7ADX/5gA2//MAN//zADj/sQA5/+oAOv/rADz/6AA9/+gAPv/mAD//5wBA/7oAQf/4AEL/twBD/+gARP/OAEX/sQBG/88AR/+EAEj/lwBJ/9AASv+NAEv/9wAsAAb/9gAH/+oACP/nAAn/xAAK/+gAC//TAAz/3QAN/9gADv/lAA//5wAQ/+IAEf/aABL/3AAT/9MAFP/bABX/xAAk//EAMf/YADL/zQAz/+wANP/kADX/9wA2//MAN//9ADj/4wA5//cAOv/3ADv/5gA8//4APf/9AD7/7gA//+4AQP/kAEH/+QBC/+YAQ//vAET/6QBF/9oARv/vAEf/zgBI/88ASf/QAEr/uQBL//kAKwAG//YAB//qAAj/7AAJ/9gACv/uAAv/4gAM/+IADf/dAA7/9AAP/+IAEP/eABH/5gAS/+IAE//TABT/3QAV/90AJP/2ADH/7AAy/74AM//uADT/3wA1//oANv/xADj/5wA5/+8AOv/5ADv/2AA8/+0APf/9AD7/8wA///EAQP/rAEH/+ABC/+QAQ//3AET/5gBF/9AARv/zAEf/xgBI/80ASf++AEr/twBL/+gAKgAH//EACP/xAAn/0wAK/+YAC//YAAz/5wAN/9gADv/oAA//5wAQ/+IAEf/iABP/2AAU/90AFf/dACT/+wAx/+wAMv+7ADP/9wA0/+QANf/rADb/5wA3//EAOP/kADn/+QA6//YAO//aADz/9wA9//4APv/uAD//8QBA/+cAQf/vAEL/4wBD/+sARP/cAEX/0ABG/+sAR//CAEj/xABJ/7QASv+6AEv/6AAmAAf/9gAI//EACf/sAAr/9gAM/+cADv/6AA//8QAQ//EAEf/vABL/4QAT//EAFP/iABX/5wAy/+kAM//9ADT/5wA1//sANv/9ADf//gA4/+sAOf/+ADoAAQA7/+gAPP/9AD3/9wA+//0AP//9AED/6wBBAAEAQv/pAEP/+QBE/+wARgACAEf/6QBI/+8ASf/nAEr/6wBL//sAKQAH//sACP/xAAn/5wAK/+4AC//2AAz/4gAN//sADv/1AA//8QAQ/90AEf/kABL/4gAT/+wAFP/YABX/3QAx//YAMv+5ADP/+AA0/+MANf/3ADb/+AA3//kAOP/iADn/+gA6//0AO//OADz//QA9//4APv/5AD///ABA/+YAQv/jAEP/9wBE/+YARf/vAEb//gBH/+cASP/vAEn/0QBK/+YAS//9ACgAB//2AAj/4gAJ/90ACv/sAAv/4gAM/+gADf/iAA7/9QAP/+gAEP/dABH/4AAS/+YAE//OABT/4gAV/90AJP/7ADH/9gAy/8EAM//vADT/3wA2//QAN//4ADj/4wA5/+kAOv/6ADv/0QA8/+YAPf/zAD7/6QA///EAQP/qAEL/3ABD/+gARP/fAEb/+ABH/7sASP+7AEn/rwBK/68AS//jACcACP/xAAn/7AAK//gADP/2AA7/9wAP//YAEP/xABH/5wAS/+cAE//xABT/7AAV/+UAMf/2ADL/6AAz//kANP/qADX/+wA2//oAN//7ADj/6wA5//cAOv//ADv/4wA8//sAPf/+AD7/+wA///oAQP/sAEH/+gBC/+MAQ//5AET/7wBF/+oARv/7AEf/4wBI/+wASf/jAEr/6gBL//4AJgAH//sACP/7AAn/5wAK//oADP/2AA7/9gAP//YAEP/xABH/8QAS//IAE//xABT/5wAV//EAMv/nADP/+wA0//EANf/9ADb//gA3//4AOP/uADn/+wA6//4AO//oAD0AAAA+//sAP//+AED/7wBB//4AQv/qAEP//wBE//EARf/3AEb/+wBH/+YASP/3AEn/2gBK/+QAS//7ACkAB//2AAj/9gAJ/90ACv/yAAz/8QAO//EAD//wABD/6gAR/+wAEv/mABP/9AAU/+wAFf/rABf/zgAx//YAMv/OADP/7wA0/+oANf/5ADb//gA3//0AOP/oADn/+QA6//0AO//YADz//gA9//8APv/6AD//+QBA/+4AQf/5AEL/4wBD//gARP/qAEX/+QBG//oAR//pAEj/6QBJ/9UASv/rAEv/+gAqAAf/sgAI/8kACf+wAAr/ugAL/7UADP+1AA3/3QAO/+QAD/+6ABD/sgAR/7UAEv+xABP/4gAU/6sAFf+mADH/lwAy/9oAM//jADT/qwA1/+IANv/iADf/4wA4/5oAOf/XADr/7gA7/7QAPP/kAD3/6wA+/+4AP//mAED/rQBB/+8AQv+qAEP/6gBE/74ARf/XAEb/2gBH/9AASP/SAEn/1QBK/80AS//qACsAB//nAAj/8QAJ/6YACv/sAAv/nAAM/90ADf+6AA7/9gAP/+IAEP/sABH/3QAS/9oAE//sABT/3QAV/8QAJP/+ADH/pgAy/+sAM//vADT/ygA1//0ANv/zADf/+wA4/9MAOf/vADr/+wA7/9gAPP/3AD3/9wA+//EAP//7AED/1QBB//cAQv/PAEP/8wBE/+YARf+7AEb/5wBH/7UASP/JAEn/2gBK/6UAS//zACkAB//2AAn/7AAK//kAC//sAAz/9gAO//oAD//2ABD/7AAR/+cAEv/vABP/9gAU//EAFf/sABcAAQAx/+YAMv/pADP/+QA0/+oANf/zADb/+wA3//oAOP/nADn/9wA6//4AO//uADz/+QA9//oAPv/7AD//+QBA/+8AQf/3AEL/6QBD//oARP/sAEX/8wBG//gAR//pAEj/6QBJ/+MASv/nAEv//QAqAAf/9gAI//sACf/sAAr/9wAL/+wADP/7AA7/+gAP//EAEP/2ABH/7AAS//EAE//2ABT/9gAV/+QAFwABADH/8QAy/+kAM//3ADT/6QA1//kANv/5ADf/+QA4/+8AOf/6ADr//gA7/+8APP/7AD3/+gA+//oAP//4AED/7wBB//sAQv/rAEP//QBE/+8ARf/3AEb/+gBH/+4ASP/rAEn/4QBK/+wAS//5ACsAB//xAAj/4gAJ/9gACv/sAAv/2AAM//YADf/iAA7/8QAP/90AEP/iABH/0wAS/+IAE//JABT/4gAV/94AJP/7ADH/3QAy/7QAM//pADT/4QA1/+wANv/vADf/6gA4/+IAOf/qADr/+gA7/9oAPP/pAD3/6wA+/+wAP//pAED/4QBB/+sAQv/cAEP/6wBE/+IARf/JAEb/7gBH/7wASP/BAEn/pgBK/7UAS//kACwAB//iAAj/5wAJ/+IACv/OAAv/2AAM/+cADf/nAA7/8AAP/90AEP+6ABH/xAAS/9cAE//XABT/2AAV/9gAG//3ACT/+wAx/+IAMv+gADP/6QA0/+MANf/mADb/7wA3/+sAOP/aADn/6AA6//YAO/+xADz/6wA9/+4APv/oAD//7wBA/9oAQf/oAEL/1wBD/+MARP/aAEX/2ABG/+cAR//PAEj/yQBJ/7kASv/BAEv/6AApAAf/8QAI/+wACf/OAAr/6gAL/84ADP/nAA3/2AAO//YAD//fABD/4gAR/9gAEv/lABP/5wAU/+IAFf/YADH/4gAy/+cAM//3ADT/2gA1//gANv/5ADf/+wA4/9wAOf/3ADr//gA7/+MAPP/3AD3//QA+//cAP//3AED/1QBC/9UAQ//9AET/6QBF/+EARv/pAEf/ugBI/8QASf/aAEr/wgBL//sAKwAH/8kACP/YAAn/xAAK/9MAC/+/AAz/yQAN/9gADv/nAA//xAAQ/7oAEf+1ABL/wQAT/9gAFP+6ABX/vwAk//sAMf+/ADL/2gAz/+gANP/KADX/6QA2/+kAN//oADj/xgA5/+QAOv/nADv/uQA8/+wAPf/uAD7/6QA//+cAQP/GAEH/7ABC/8kAQ//mAET/2ABF/84ARv/VAEf/wQBI/7wASf/GAEr/tABL/+8AKwAH//EACP/2AAn/yQAK/+oAC//TAAz/3QAN/+cADv/sAA//4gAQ/+IAEf/YABL/3wAT/90AFP/dABX/2AAk//sAMf/nADL/xgAz//MANP/iADX/7wA2/+4AN//3ADj/4wA5/+kAOv/vADv/1wA8/+4APf/zAD7/6gA//+0AQP/kAEH/9wBC/98AQ//qAET/5wBF/9AARv/vAEf/yQBI/9AASf/PAEr/xABL/+8AKQAH/+cACP/sAAn/5wAK/+kAC//dAAz/2AAO/+wAD//XABD/qwAR/8kAEv/AABP/9gAU/9MAFf/OADH/2AAy/7AAM//5ADT/2gA1//0ANv/6ADf//gA4/98AOf/3ADr//QA7/8YAPP/7AD3//gA+//gAP//4AED/1QBB//0AQv/VAEP/+ABE/+MARf/zAEb/+QBH/+4ASP/zAEn/4gBK/+cAS//zACkACP/2AAn/5wAK//QAC//sAAz/+wAN//4ADv/2AA//5QAQ/+wAEf/nABL/8wAT//EAFP/nABX/3QAx/+QAMv/KADP/+QA0/+wANf/6ADb/+gA3//sAOP/vADn/+gA6AAAAO//hADz//wA9//0APv/5AD///gBA/+wAQf/7AEL/7ABD//sARP/vAEX/9wBG//sAR//zAEj/6gBJ/+EASv/jAEv/+wArAAf/zgAI/84ACf/YAAr/ygAL/9gADP/JAA3/+wAO/9kAD//JABD/ogAR/7oAEv+5ABP/5wAU/8QAFf+9ACT/+wAx/7oAMv+FADP/+wA0/7sANf/qADb/6wA3/+wAOP++ADn/5gA6/+8AO/+iADz/6AA9/+oAPv/sAD//7wBA/8MAQf/mAEL/uwBD/+YARP/KAEX/6QBG/+8AR//jAEj/3wBJ/9MASv/hAEv/6wApAAf/zgAI/84ACf/TAAv/2AAM/84ADv/eAA//xAAQ/7AAEf/TABL/sQAT/+wAFP/FABX/yQAk//sAMf/JADL/lQAz//MANP/BADX/+QA2//MAN//3ADj/xgA5//sAOv/3ADv/pQA8/+8APf/+AD7/7gA//+oAQP/DAEH/7gBC/8QAQ//vAET/0ABF/+4ARv/uAEf/6QBI/+QASf/aAEr/5gBL//cAKgAH/8QACP/OAAn/pgAL/7oADP+rAA3/3QAO/+cAD/+5ABD/twAR/8QAEv+zABP/0wAU/7AAFf+cACT/+wAx/6EAMv/aADP/4wA0/7cANf/4ADb/4wA3//0AOP+3ADn/7gA6/+8AO/+7ADz/7gA9//EAPv/jAD//6ABA/7oAQf/zAEL/uQBD/+sARP/OAEX/3wBG/+EAR//aAEj/2ABJ/9gASv/MAEv/7gAsAAf/yQAI/84ACf/JAAr/wgAL/8kADP/JAA3//gAO/8kAD/+6ABD/jQAR/7oAEv+gABP/4gAU/7UAFf+6AB7/8QAk//sAMf+1ADL/lwAz/+8ANP+7ADX/5gA2/+4AN//uADj/uQA5/+gAOv/3ADv/hAA8/+8APf/sAD7/7AA//+oAQP+6AEH/7ABC/7kAQ//pAET/ygBF/+8ARv/vAEf/6ABI/+kASf/fAEr/5ABL//EAJgAH//YACf/iAAr/7AAL/+cADP/iAA3//wAO//UAD//nABD/7AAR/+IAEv/gABP/7AAU/90AFf/TADH/4gAy/+sAM//+ADT/6AA1//4ANgAEADf//wA4/9wAOf/6ADv/5gA8//8APf//AD///QBA/+MAQf//AEMAAABE/+8ARf/4AEb/+wBH//cASP/rAEn/6QBK/+kAS//9AAIAAQAGAEsAAAAAAAAAAQAAAADUGBYRAAAAANmXsTQAAAAA2ZexNA==",at=n=>Mi("http://www.w3.org/2000/svg",n),Ks=(n,t)=>{const e=at("rect");return e.setAttribute("height",`${n}`),e.setAttribute("width",`${t}`),e},_s=(n,t,e,a)=>{const r=ve("filter");r.setAttribute("id",a),r.setAttribute("height","200%"),r.setAttribute("width","200%"),r.setAttribute("x","-50%"),r.setAttribute("y","-50%");const i=ve("feOffset");r.appendChild(i),i.setAttribute("result","offOut"),i.setAttribute("in","SourceAlpha"),i.setAttribute("dx",`${n}`),i.setAttribute("dy",`${t}`);const o=ve("feGaussianBlur");r.appendChild(o),o.setAttribute("result","blurOut"),o.setAttribute("in","offOut"),o.setAttribute("stdDeviation",`${e}`);const s=ve("feBlend");return r.appendChild(s),s.setAttribute("in","SourceGraphic"),s.setAttribute("in2","blurOut"),s.setAttribute("mode","normal"),r},Xs=n=>{let t=n;return t=t.replace(/feoffset/gi,"feOffset"),t=t.replace(/fegaussianblur/gi,"feGaussianBlur"),t=t.replace(/feblend/gi,"feBlend"),t=t.replace(/lineargradient/gi,"linearGradient"),t=t.replace(/stddeviation/gi,"stdDeviation"),t};function Zs(n,t,e,a,r,i){const o=r,s=i,l={x:t[0],y:t[1],width:t[2]-t[0],height:t[3]-t[1]};if(l.width<=0)return;const c=tl(l.height,l.width,e*o,a*s),d=(a-c*l.width)/2-c*l.x,u=(e-c*l.height)/2-c*l.y;n.setAttribute("transform",`translate(${d} ${u}) scale(${c} ${c})`)}function tl(n,t,e,a){const r=e/n,i=a/t;return r>1&&i>1?Math.min(r,i):r>1&&i<1?i:r<1&&i>1?r:Math.min(r,i)}const pn={m:["x","y"],z:[],l:["x","y"],h:["x"],v:["y"],c:["x1","y1","x2","y2","x","y"],s:["x2","y2","x","y"],q:["x1","y1","x","y"],t:["x","y"],a:["rx","ry","xRotation","largeArc","sweep","x","y"]};class el{constructor(t){const e=Array.from(t.querySelectorAll("path"));this.paths=e.map(a=>{const r=a.getAttribute("d")||"",i=this.parsePath(r);return{pathElement:a,pathData:i}})}transform(t){for(const e of this.paths)e.pathData=this.runTransformer(e.pathData,t);this.update()}encodePath(t){let e="";const r=i=>{const o=[],s=i.relative?i.type:i.type.toUpperCase();let l=e!==s;const c=pn[i.type];l&&(o.push(s),e=s);for(const d of c){const u=i[d];let A;switch(typeof u){case"boolean":A=u|0;break;case"number":A=(u*100|0)/100;break;default:throw new Et("Failed to encode path.")}l||o.push(" "),o.push(A),l=!1}return o.join("")};return t.map(r).join("")}parsePath(t){const e=/([mzlhvcsqta])([^mzlhvcsqta]*)/gi,a=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi,r=[];let i;for(e.lastIndex=0;i=e.exec(t);){const o=i[1].toLowerCase(),s=(i[2].match(a)||[]).map(parseFloat),l=o===i[1],c=pn[o];if(s.length<c.length)throw new Et(`Path type "${o}" given ${s.length} arguments, expected ${c.length}.`);if(c.length>0){if(s.length%c.length!==0)throw new Et(`Path type "${o}" given ${s.length} arguments, not divisible by ${c.length}`);for(let d=0;d<s.length/c.length;d++){const u={type:o,relative:l};for(let A=0;A<c.length;A++)u[c[A]]=s[d*c.length+A];r.push(u)}}else r.push({type:o,relative:l})}return r}runTransformer(t,e){const a=[["x1","y1"],["x2","y2"],["x","y"]],r=i=>{for(let o=0;o<a.length;o++){const[s,l]=a[o];if(s in i&&l in i){const c=[i[s],i[l]],d=e(c);if(d.length<2)throw new Et("Transformer must return at least 2 points.");i[s]=d[0],i[l]=d[1]}}return i};return this.transformPath(t,r)}transformPath(t,e){const a=[];for(let r=0;r<t.length;r++){const i=JSON.parse(JSON.stringify(t[r])),o=e(i);Array.isArray(o)?a.push(...o):o&&a.push(o)}return a}update(){for(const{pathElement:t,pathData:e}of this.paths){const a=this.encodePath(e);t.setAttribute("d",a)}}}class al extends Ys{constructor(){super(...arguments),this.moduleName="Vegemite"}svgPreview(t,e){return this.svgElement(t,e)}svgPrint(t,e){return this.svgElement(t,e)}svgElement(t,e){const a=As(Js),i=t!==""?(b=>b.charAt(0).toUpperCase()+b.substr(1).toLowerCase())(t):"",o=a.getPath(i,0,72,72),s=o.toSVG(2),l=o.getBoundingBox(),c=l.x2-l.x1,d=o.toPathData(3),u=()=>{const b=at("g");b.classList.add("module-text-group");const F=at("defs");b.appendChild(F),F.appendChild(_s(0,2,2,"shadow"));const E=at("path");E.setAttribute("d",d),E.setAttribute("stroke","black"),E.setAttribute("stroke-width","3"),F.appendChild(E);const y=at("g");y.classList.add("module-layer0"),b.appendChild(y),y.setAttribute("filter","url(#shadow)"),y.innerHTML=E.outerHTML;const B=at("g");B.classList.add("module-layer1"),b.appendChild(B),B.setAttribute("stroke-width","3"),B.setAttribute("stroke","rgb(45,41,38)"),B.setAttribute("fill","rgb(45,41,38)"),B.setAttribute("transform","translate(0.5,0)"),B.innerHTML=s;const x=at("g");x.classList.add("module-layer2"),b.appendChild(x),x.setAttribute("fill","rgb(255,209,0)"),x.setAttribute("transform","translate(1,-0.1)"),x.innerHTML=s;const I=at("g");return I.classList.add("module-layer3"),b.appendChild(I),I.setAttribute("fill","white"),I.innerHTML=s,new el(b).transform(([V,H])=>[V,H+(c/2-V)**2/(c*6)]),b},A=at("g");A.classList.add("module-root");const h=at("defs");A.appendChild(h);const g=at("g");g.classList.add("module-bounds"),A.appendChild(g);const p=Ks(e.height,e.width);p.setAttribute("opacity","0"),g.appendChild(p);const m=at("g");m.classList.add("module-text-enclosure"),A.appendChild(m);const f=u();m.appendChild(f);const w=Si(d);return Zs(m,w,e.height,e.width,.35,.65),Xs(A.outerHTML)}}async function Br(n){if(n==="Vegemite")return new al;throw new N(`Failed to resolve Module, Module ${n} not found`)}const nl=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],rl=async(n,t,e)=>{const a=t.data,r=e.data.baseUrl,i=a.assetUrl.replace("localhost","localstack"),o=r.slice(0,4)==="http"?"":"https://",s=new URL(o+r);s.searchParams.append("video",ln(JSON.stringify([{href:i}]))),s.pathname=s.pathname+(s.pathname.slice(-1)==="/"?"":"/");const l=s.toString(),d=`data:image/svg+xml;base64,${ln(await kn.toString(l,{type:"svg"}))}`,u=h=>{const g=n.find(m=>m.panelId===h.panelId);if(!g)throw new W(h);const p=M();return new z({id:p,src:d,type:D.Image,y:h.top,x:h.left,width:h.width,height:h.height,rotation:0},g)},A=e.data.regions;try{return A.map(u)}catch(h){return console.error(h),[]}},il=async(n,t,e,a)=>{const r=e.data,i=r.assetUrl,o=await wa(i);try{const s=bs(r,a.option);s&&(t[a.stepName]={selectedVariants:[s]});const l=async c=>{const d=await pr(c,s?.asset?.fileLink),u=await fe(d),A=M(),h=n.find(p=>p.panelId===c.panelId);if(!h)throw new W(c);const g=$a(o,u,{scale:r.scale,left:r.x,top:r.y},a.data.forceImageCover);return[new z({id:A,path:u.path,type:D.Frame,forceImageCover:a.data.forceImageCover,x:c.left,y:c.top,width:c.width,height:c.height,layer:c.layer,layerIndex:c.layerIndex,rotation:c.rotation,scaleX:c.width/u.width,scaleY:c.height/u.height,pattern:{id:`${A}-pattern`,src:o.src,x:g.x,y:g.y,width:o.width,height:o.height,rotation:0,scaleX:g.zoom,scaleY:g.zoom,svg:o.svg,colors:o.colors}},h)]};return(await Promise.all(a.data.regions.map(c=>l(c)))).flat()}catch(s){return console.error(s),[]}},ol=async(n,t,e,a)=>{const r=e.data,i=a.option;if(!i)return console.error(`No option for step ${a.stepName}.`),[];const o=i.variants?.find(E=>E.id===r.illustrationVariantId)||pe(i);if(!o)return console.error(`No variant with ID: ${r.illustrationVariantId}`),[];if(!o.asset)return console.error(`No asset for variant with ID: ${r.illustrationVariantId}`),[];t[a.stepName]={selectedVariants:[o]};const s=o.asset?.fileLink;if(!s)return console.error(`No asset link for variant with ID: ${r.illustrationVariantId}`),[];const l=await tt(s,!0),c=/<svg.*?<\/svg>/s,d=l.match(c)||[],u=d?.length>0?d[0]:"",g=lt().parseFromString(u,"image/svg+xml").firstElementChild;if(!g)return console.error("Failed to read SVG."),[];je(g);const p={};Ot(g,E=>{nl.includes(E.tagName)&&!E.attributes.getNamedItem("fill")&&E.setAttribute("fill","#000000");const y=E.attributes.getNamedItem("fill");if(y&&y.value!=="none"){const x=y.value,T=`spiff-fill-${x.replace(/\W/g,"")}`;E.classList.add(T),p[T]={browserValue:x}}const B=E.attributes.getNamedItem("stroke");if(B&&B.value!=="none"){const x=B.value,T=`spiff-stroke-${x.replace(/\W/g,"")}`;E.classList.add(T),p[T]={browserValue:x}}});const f=yt().serializeToString(g),w=r.colors;if(w){for(const[E,y]of Object.entries(p))for(const B of Object.keys(w))if(y.browserValue===B){p[E]={browserValue:w[B]};break}}const b=E=>{const y=n.find(x=>x.panelId===E.panelId);if(!y)throw new W(E);const B=M();return new z({colors:p,id:B,svg:f,type:D.Illustration,y:E.top,x:E.left,rotation:E.rotation,width:E.width,height:E.height,layer:E.layer,layerIndex:E.layerIndex,immutable:E.immutable},y)},F=a.data.regions;try{return F.map(b)}catch(E){return console.error(E),[]}},sl=async(n,t,e)=>{const a=await Br(e.data.module),r=t.data,i=(s,l)=>{const c=n.find(u=>u.panelId===l.panelId);if(!c)throw new W(l);const d=M();return new z({colors:{},id:d,svg:s,type:D.Illustration,y:l.top,x:l.left,rotation:l.rotation,width:l.width,height:l.height,layer:l.layer,layerIndex:l.layerIndex},c)},o=e.data.regions;try{return o.map(s=>i(a.svgPrint(r.text,s),s))}catch(s){return console.error(s),[]}},ll=async(n,t,e,a)=>{const r=e.data,i=a.option;if(!i)return console.error(`No option for step ${a.stepName}.`),[];const o=i.variants?.find(d=>d.id===r.pictureVariantId)||pe(i);if(!o)return console.error(`No variant with ID: ${r.pictureVariantId}`),[];if(!o.asset)return console.error(`No asset for variant with ID: ${r.pictureVariantId}`),[];t[a.stepName]={selectedVariants:[o]};const s=o.asset?.fileLink;if(!s)return console.error(`No asset link for variant with ID: ${r.pictureVariantId}`),[];const l=d=>{const u=n.find(h=>h.panelId===d.panelId);if(!u)throw new W(d);const A=M();return new z({id:A,src:s,type:D.Image,y:d.top,x:d.left,rotation:d.rotation,width:d.width,height:d.height,layer:d.layer,layerIndex:d.layerIndex,immutable:d.immutable,preserveAspectRatio:"none"},u)},c=a.data.regions;try{return c.map(l)}catch(d){return console.error(d),[]}},cl=async(n,t,e,a)=>{const r=e.data,i=a.option;if(!i)return console.error(`No option for step ${a.stepName}.`),[];const o=i.variants?.find(c=>c.id===r.colorVariantId)||pe(i);if(!o)return console.error(`No variant with ID: ${r.colorVariantId}`),[];t[a.stepName]={selectedVariants:[o]};const s=c=>{const d=n.find(p=>p.panelId===c.panelId);if(!d)throw new W(c);const u=`
1507
+ `,m={};m[this.shapeFillId]={browserValue:g};const C=T();return{id:C,region:A,command:new z({stepRegion:A,stepName:t.stepName,colors:m,id:C,svg:p,type:k.Illustration,y:A.top,x:A.left,rotation:A.rotation,width:A.width,height:A.height,layer:A.layer,layerIndex:A.layerIndex,immutable:A.immutable,excludeFromExport:t.data.excludeFromPrint},h)}},c=t.data.regions.map(l),d=c.filter(A=>!!A).map(A=>A?.command),u=c.filter(A=>!!A).map(A=>({id:A.id,region:A.region}));return{command:new O(d),followup:async()=>{await r.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],u,async()=>{r.updateStorage(t.stepName,{colour:s()})})}}}}}const Mt=new Ws;class Hs{constructor(){this.latestToast=null,this.toastType=null,this.toastCallbacks=[]}addToastCallback(t){t({toastMessage:this.latestToast,toastType:this.toastType}),this.toastCallbacks.push(t)}removeToastCallback(t){this.toastCallbacks=this.toastCallbacks.filter(e=>e!==t)}setLatestToast(t,e){this.latestToast=t,this.toastType=e,this.onToastChange()}onToastChange(){this.toastCallbacks.forEach(t=>t({toastMessage:this.latestToast,toastType:this.toastType}))}}const Br=new Hs,oa=(n,t,e,a,r)=>{if(t.some(d=>d==null))throw new Error(`Failed to autosize lines: ${t.join(", ")}`);let i=t.map(d=>d.split(`
1508
+ `)).flat(),o=i.length,s=i.map(d=>pt(d,a,r));const l=r.getApproximateHeight()*a;let c=!0;for(;c;){if(l+(o-1)*e>n.height)return[null,null];const u=Math.max(...s);if(u<=n.width)return[i,u];const A=s.reduce((m,C,w,I)=>C>I[m]?w:m,0),h=i[A];let g=!1,p=h.length;for(;!g&&p>-1;){p=h.lastIndexOf(" ",p-1);const m=[h.slice(0,p),h.slice(p+1)],C=m.map(I=>pt(I,a,r));C[0]<=n.width&&(i=[...i.slice(0,A),...m,...i.slice(A+1)],s=[...s.slice(0,A),...C,...s.slice(A+1)],o+=1,g=!0)}g||(c=!1)}return[null,null]},Zt=(n,t,e,a,r)=>{let i,o;const s=yt(t.assetUrl),l=s.getFont();if(r.size){const A=n/l.unitsPerEm;return[i,o]=oa(e,a,n,A,s),[r.size,i,o]}const c=6;let d=c-ea;if(a.length>0){let A=a,h=0;for(;(!r.maxSize||d<=r.maxSize)&&A;)d+=ea,h=d/l.unitsPerEm,[A,o]=oa(e,a,d,h,s)}d>c&&(d-=ea),r.minSize&&d<r.minSize&&(d=r.minSize);const u=d/l.unitsPerEm;return[i,o]=oa(e,a,d,u,s),[d,i,o]},sa=30;class Oe extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=Oe.name}}const Ys=["‘","’","“","”",`
1509
+ `];class $e extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=$e.name}}class Js{constructor(){this.cachedColors=new Map,this.cachedStrokeColors=new Map,this.filterUnsupportedCharacters=(t,e)=>{let a=t.replace(/(\r\n|\r|(\u2665|\u00a9|\u00ae|[\u2000-\u2017]|[\u201E-\u3300]]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]))/gm,"");const r=[],i=e?yt(e.assetUrl):void 0;if(i){const o=a.split("").filter(l=>!Ys.includes(l)).join(""),s=o.split("").map(l=>i.getFont().charToGlyph(l));for(let l=0;l<s.length;l++)s[l].name===".notdef"&&r.push(String.fromCharCode(o.charCodeAt(l)))}for(let o=0;o<r.length;o++)a=a.replaceAll(r[o],"");return a},this.textAlign=t=>t.vertical?"center":t.textAlign||"center",this.getErrorsForText=(t,e,a,r)=>{let i;a.data&&a.data.maxLength&&e.length>a.data.maxLength&&(i||(i={}),i.hitCharacterLimit=!0);const o=r.getWorkflowExperience().getProfanityList(),s=Aa.split(t.toLowerCase());for(const c of s)for(const d in o){const u=o[d].toLowerCase().replace(/\s/g,"");if(c===u){i||(i={}),i.blockedProfanity=!0;break}}return!a.data.allowNewlines&&(t.includes(`
1510
+ `)||t.includes("\r"))&&(i||(i={}),i.illegalMultipleLines=!0),i}}async init(t,e,a){const r=t.option;if(!r)return null;if(a)await this.reload(t,e,a);else{const i=this.getDefaultImageFillVariant(t.data),o=i?.asset?.fileLink,s=o?await ya(o):void 0,l=s?{src:s.src,height:s.height,width:s.width,scale:t.data.imageFillScale||1}:void 0,c=this.getDefaultStrokeColorVariant(t.data),d=t.data.strokeEnabled&&c?.color?{browserValue:c.color,pmsValue:c.name}:void 0;let u=t.data.defaultText||"";const A=e.getWorkflowExperience().getBundle();if(A&&t.globalPropertyAspectConfigurations){const p=A.getGlobalPropertyConfiguration()?.aspects?.find(m=>m.type===L.Text&&t.globalPropertyAspectConfigurations?.map(C=>C.aspectName).includes(m.name));if(p){const C=A.getGlobalPropertyStateManager().getAspect(p.name);C&&(u=C)}}e.updateStorage(t.stepName,{text:u,inputText:t.data.defaultText||"",color:this.getDefaultColorVariant(t.data)?.color||this.getDefaultColor(t.data),fillImage:l,strokeColor:d}),e.updateMetadata(t.stepName,{text:u,color:this.getDefaultColorVariant(t.data)?.name||this.getDefaultColor(t.data),fillImage:i?.name,strokeColor:t.data.strokeEnabled?c?.color:void 0});const h=W.getDefaultVariant(r);if(h)return this.selectVariantCommand(t,h,{text:u},[],e,()=>{},()=>{},l,d)}return null}findLayoutElements(t,e){return t.getRegionElements(e.stepName).map(i=>U(i.id,t.getAllLayoutData()))}availableFillColors(t){const e=this.cachedColors.get(t.stepName);if(e)return e;const a=t.data.colorOption;if(a){const r=a.variants?.map(i=>({fill:i.color,stroke:i.color,variant:i}))||[];return this.cachedColors.set(t.stepName,r),r}return[]}changeAlignment(t,e,a,r){if(!t.data||!t.data.regions)return;const i=r.getCommandDispatcher();for(const o of a){const s=new Sr(o.id,e);i(s)}}async changeFillColor(t,e,a,r){if(!t.data||!t.data.regions)return;const i=r.getCommandDispatcher();e.variant?r.updateMetadata(t.stepName,{color:e.variant.name}):r.updateMetadata(t.stepName,{color:e.fill});const o=t.data.colorOption,s=o?this.createTextFillSpotColor(o,e.variant):void 0;o?r.updateStorage(t.stepName,{color:e.fill,colorProfileAssetKey:o.colorProfile?.key}):r.updateStorage(t.stepName,{color:e.fill});for(const l of a){if(!e.fill)throw new Error("Fill not set on new color selection!");const c=new wr(l.id,e.fill,s);i(c)}}async availableFillImages(t){const e=t.data.imageFillOption;if(e){const a=e.variants?.map(r=>r.asset?.fileLink)?.filter(r=>!!r)||[];return Promise.all(a.map(async r=>{const i=await ya(r);return{src:r,width:i.width,height:i.height,scale:t.data.imageFillScale||1}}))}return Promise.resolve([])}async changeFillImage(t,e,a,r){if(!t.data||!t.data.regions)return;const i=r.getCommandDispatcher(),o=t.option?.variants?.find(s=>s.asset?.fileLink===e.src);r.updateMetadata(t.stepName,{fillImage:o?.name}),r.updateStorage(t.stepName,{fillImage:e});for(const s of a){const l=new ra(s.id,e);i(l)}}availableStrokeColors(t){const e=this.cachedStrokeColors.get(t.stepName);if(e)return e;const a=t.data.strokeOption;if(a){const r=a.variants?.map(i=>({fill:i.color,stroke:i.color,variant:i}))||[];return this.cachedStrokeColors.set(t.stepName,r),r}return[]}async changeStrokeColor(t,e,a,r){if(!t.data||!t.data.regions)return;const i=r.getCommandDispatcher();e?.variant?r.updateMetadata(t.stepName,{strokeColor:e.variant.name}):r.updateMetadata(t.stepName,{strokeColor:e?.fill});const o=e?{browserValue:e.fill,pmsValue:e.pmsValue}:void 0;r.updateStorage(t.stepName,{strokeColor:o});for(const s of a){const l=new ia(s.id,o,t.data?.strokeThickness);i(l)}}getProcessedInput(t,e,a){const r=a?t:this.injectReplaceableText(t,e);return Qe(r,{vertical:e.vertical,uppercase:e.uppercase})}updateInputText(t,e,a,r){const i=r.getStepStorage(a.stepName),o=Tt(t,r),s=this.getProcessedInput(o,a.data,i?.customiseAllText??!1),l={command:void 0,helperData:{},errorData:this.getErrorsForText(t,s,a,r)};if(l.errorData)return l;l.helperData.charactersRemaining=a.data.maxLength-s.length;const c=[],d=new Map,u=new Map;for(const A of e){if(!A.fontData)throw new Q("Failed to resolve font data for text.");const[h,g]=Zt(A.fontSize,A.fontData,{left:A.x,top:A.y,width:A.width,height:A.height,rotation:A.rotation},[s],{size:a.data.size,minSize:a.data.minSize,maxSize:a.data.maxSize});d.set(A.id,h),u.set(A.id,g);const p=a.data.curved?s:(g||[]).join(`
1511
+ `);c.push(this.generateTextChangeCommandsForRegion(h,a.data,A.id,p))}return!a.data.curved&&e.length>0&&!Array.from(u.values()).every(h=>h)?(l.errorData||(l.errorData={}),l.errorData.doesNotFit=!0,l):(r.updateStorage(a.stepName,{text:t}),r.updateMetadata(a.stepName,{text:s}),(i?.defaultCleared||!a.data.deleteDefaultOnFocus)&&s.trim()!==""&&r.setMandatoryFulfilled(a.stepName,!0),l.command=new O(c),l)}async selectVariant(t,e,a,r,i){const o=await this.selectVariantCommand(t,e,a.getStepStorage(t.stepName)||{},a.getRegionElements(t.stepName),a,r,i);o&&(o.command&&a.getCommandDispatcher()(o.command),o.followup&&await o.followup())}createTextFillSpotColor(t,e){const a=t.colorProfile;if(a){const r=(a.name||"").replace(/\s/g,"-"),i=r.lastIndexOf("/"),s=r.slice(i+1).slice(0,-4);if(!e.namedColor)throw new Error("variant named color not set!");return{profileName:s,namedColor:e.namedColor}}}async reload(t,e,a){const r=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=t.option;if(r?.selectedVariants){const c=r.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=await this.fontDataFromVariant(d),A=s.map(m=>({id:m.id,region:m.stepRegion})),h=r.storage?.color;let g=r.storage?.text;const p=e.getWorkflowExperience().getBundle();if(p&&t.globalPropertyAspectConfigurations){const C=p.getGlobalPropertyConfiguration()?.aspects?.find(w=>w.type===L.Text&&t.globalPropertyAspectConfigurations?.map(I=>I.aspectName).includes(w.name));if(C){const I=p.getGlobalPropertyStateManager().getAspect(C.name);I&&(g=I)}}if(await e.setSelectionsAndElements(t.stepName,[d],A,async()=>{e.updateMetadata(t.stepName,{color:h,text:g}),e.updateStorage(t.stepName,{text:g,inputText:g});const m=s.map(w=>new va(w.id,u)),C=new O(m);e.getCommandDispatcher()(C)}),s.length===0&&l){const m=W.getDefaultVariant(l);if(m){const C=await this.selectVariantCommand(t,m,{text:g},[],e,()=>{},()=>{});e.getCommandDispatcher()(C.command)}}else{const{command:m}=G.updateInputText(g||"",s,t,e);m&&e.getCommandDispatcher()(m)}}}}else{const c=e.getWorkflowExperience().getBundle();if(c&&t.globalPropertyAspectConfigurations){const u=c.getGlobalPropertyConfiguration()?.aspects?.find(A=>A.type===L.Text&&t.globalPropertyAspectConfigurations?.map(h=>h.aspectName).includes(A.name));if(u){const h=c.getGlobalPropertyStateManager().getAspect(u.name);if(h)if(s.length===0&&l){const g=W.getDefaultVariant(l);if(g){const p=await this.selectVariantCommand(t,g,{text:h},[],e,()=>{},()=>{});e.getCommandDispatcher()(p.command)}}else{const{command:g}=G.updateInputText(h,s,t,e);g&&e.getCommandDispatcher()(g)}}}}}getDefaultColorVariant(t){const e=t.colorOption;if(e)return W.getDefaultVariant(e)}getDefaultColor(t){const e=t.colorOption;return e?W.getDefaultVariant(e)?.color:void 0}getDefaultImageFillVariant(t){const e=t.imageFillOption;if(e)return W.getDefaultVariant(e)}getDefaultStrokeColorVariant(t){const e=t.strokeOption;if(e)return W.getDefaultVariant(e)}async fontDataFromVariant(t){const e=t.asset;if(!e)throw new ft(t);const a=e.fileLink;if(!a)throw new Rt(e);const r=await xt(a);return{assetUrl:a,name:r.names.fullName.en}}async selectVariantCommand(t,e,a,r,i,o,s,l,c){const d=i.markUpdatePending(),u=await this.fontDataFromVariant(e);if(r.length>0){const A=r.map(p=>new va(p.id,u));if(l){const p=r.map(m=>new ra(m.id,l));A.push(...p)}if(c){const p=r.map(m=>new ia(m.id,c,t.data.strokeThickness));A.push(...p)}const h=await this.changeInputTextWithRegion(t,t.data.size||sa,u,a.text||"",a,i,a?.customiseAllText??!1,o,s);return h&&A.push(h),{command:new O(A),followup:async()=>{i.markUpdateCompleted(d),await i.setSelectionsAndElements(t.stepName,[e],r)}}}else{const A=await this.createTextboxRegions(t.stepName,e,t.data,u,a,i),h=await this.changeInputTextWithRegion(t,t.data.size||sa,u,A[0]?.newElement.input||a.text||t.data.defaultText||"",a,i,a?.customiseAllText??!1,o,s),g=A.flatMap(m=>m.commands);if(l){const m=A.map(C=>new ra(C.regionElement.id,l));g.push(...m)}if(c){const m=r.map(C=>new ia(C.id,c,t.data.strokeThickness));g.push(...m)}return h&&g.push(h),{command:new O(g),followup:async()=>{i.markUpdateCompleted(d)}}}}injectReplaceableText(t,e){return e.replaceableText?e.replaceableText.replace("{{}}",t):t}async createTextboxRegions(t,e,a,r,i,o){if(!a||!a.regions)throw new Error("Step data not supplied");const s=i.text||a.defaultText||"",l=Tt(s,o),c=this.getProcessedInput(l,a,!1),d=async A=>{const g=o.getLayouts().find(m=>m.panelId===A.panelId),p=T();try{if(!g)throw new $e("Failed to find layout for region: "+A.panelId);const m=a.colorOption;let C;if(m&&m.variants){const tt=m.variants.find(q=>q.id===m.defaultVariant?.id)||m.variants[0];C=this.createTextFillSpotColor(m,tt),o.updateStorage(t,{colorProfileAssetKey:m.colorProfile?.key})}const w=await this.getDefaultColor(a),I=w||"#000000",x={stepRegion:A,stepName:t,align:this.textAlign(a),fill:i.color?i.color:I,fontSize:a.size||sa,fontData:r,id:p,layer:A.layer,layerIndex:A.layerIndex,rotation:A.rotation,text:c,input:s,type:k.Textbox,vertical:a.vertical,x:A.left,y:A.top,height:A.height,width:A.width,immutable:A.immutable,verticalAlign:a.verticalAlign||"middle",curved:a.curved,paths:a.paths,fillSpotColorDefinition:C},b=[],E=new Map,S=new Map;if(!x.fontData)throw new Q("Failed to resolve font data for text.");const[B,D]=Zt(x.fontSize,x.fontData,{left:x.x,top:x.y,width:x.width,height:x.height,rotation:x.rotation,panelId:""},[c],{size:a.size,minSize:a.minSize,maxSize:a.maxSize});E.set(x.id,B),S.set(x.id,D);const F=a.curved||a.vertical?c:(D||[]).join(`
1512
+ `);b.push(this.generateTextChangeCommandsForRegion(B,a,x.id,F));const N=new z(x,g);return{regionElement:{id:p,region:A},commands:[N,...b],newElement:x,fontData:r}}catch(m){throw console.log(m),new Oe("Error adding font to region")}},u=await Promise.all(a.regions.map(d)).catch(A=>{throw A instanceof Oe?(Br.setLatestToast("Failed to load font.",Se.Error),A):A instanceof $e?A:new Error(A)});return await o.setSelectionsAndElements(t,[e],u.map(A=>A.regionElement),async()=>{o.updateMetadata(t,{text:s}),o.updateStorage(t,{text:s})}),u}generateTextChangeCommandsForRegion(t,e,a,r){const i=[],o=new vr(a,r);if(i.push(o),!e.size){const l=new yr(a,t);i.push(l)}return new O(i)}async changeInputTextWithRegion(t,e,a,r,i,o,s,l,c,d){const u=(r||"").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,""),A=Tt(u,o),h=this.getProcessedInput(A,t.data,s),g=o.getRegionElements(t.stepName),p=new Map,m=new Map;for(const b of g)if(b.region){const[E,S]=Zt(e,a,b.region,[h],{size:t.data.size,minSize:t.data.minSize,maxSize:t.data.maxSize});p.set(b.id,E),m.set(b.id,S)}const w=(()=>{if(t.data&&t.data.maxLength&&h.length>t.data.maxLength)return d&&d(!0),{info:"0"};const b=o.getWorkflowExperience().getProfanityList(),E=Aa.split(h.toLowerCase());for(const S of E)for(const B in b){const D=b[B].toLowerCase().replace(/\s/g,"");if(S===D)return l(!0),{error:"Blocked profanity."}}return!t.data.vertical&&!t.data.allowNewlines&&(h.includes(`
1513
+ `)||h.includes("\r"))?(l(!0),{error:"Cannot span multiple lines."}):!t.data.curved&&!Array.from(m.values()).every(B=>B)?(l(!0),{error:"Does not fit."}):(l(!1),{info:(t.data.maxLength-h.length).toString()})})();if(w.error){c(w.error);return}if(c(`${w.info} characters remaining`||""),d)return;o.updateStorage(t.stepName,{text:u}),o.updateMetadata(t.stepName,{text:this.injectReplaceableText(u,t.data)}),(i.defaultCleared||!t.data.deleteDefaultOnFocus)&&u.trim()!==""&&o.setMandatoryFulfilled(t.stepName,!0);const I=[];for(const b of g){const E=t.data.curved?h:(m.get(b.id)||[]).join(`
1514
+ `);I.push(this.generateTextChangeCommandsForRegion(p.get(b.id)||1,t.data,b.id,E))}return new O(I)}}const G=new Js;class Ks{}const _s="data:application/octet-stream;base64,AAEAAAAPAIAAAwBwRkZUTYdHeHoAAElcAAAAHEdERUYAJwBUAAAe2AAAAB5HUE9TkNtcVAAAHygAACoyR1NVQrj/uP4AAB74AAAAME9TLzJoWmUcAAABeAAAAGBjbWFwtkIacAAAAxAAAAJWZ2FzcP//AAMAAB7QAAAACGdseWY27KOUAAAGCAAAFcRoZWFkFPal0gAAAPwAAAA2aGhlYQU0Ar0AAAE0AAAAJGhtdHiADw6qAAAB2AAAAThsb2Nh5CzfJAAABWgAAACebWF4cACVAEwAAAFYAAAAIG5hbWXeIPPyAAAbzAAAAiJwb3N0ABeZTwAAHfAAAADdAAEAAAABAAAZ9vREXw889QALA+gAAAAA2ZexNAAAAADZl7E0ADL/yQJ2ArwAAAAIAAIAAAAAAAAAAQAAArz/wwAAAqsAAAAAAnYAAQAAAAAAAAAAAAAAAAAAAE4AAQAAAE4ASQAFAAAAAAACAAAAAQABAAAAQAAAAAAAAAAEAbsBkAAFAAACigK7AAAAjAKKArsAAAHfADEBAgAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAABYWFhYAEAACgCtArz/wwAAAqkANgAAAAMAAAAAAmQCZAAAACAAAgIPADIAAAAAAU0AAAAAAAAAAAAAALQAAAD3ADUCfQA1AcoANQKrADUCDQA1AX4ANQHYADUBNQA1AcgANQHUADUB8AA1AeEANQHpADUBqQA1AdAANQHpADUCqgA1Af8ANQGaADUB3wA1AbgANQFtADUBbQA1AekANQG8ADUA1QA1AYcANQHBADUBUAA1AhsANQHBADUB4QA1AZYANQH0ADUBxQA1AcUAMgGJADUBwwA1Ad0ANQJ1ADUB9wA1AcoANQF6ADUB3AA1Af8ANQGaADUB3wA1AbgANQFtADUBbQA1AekANQG8ADUA1QA1AYcANQHBADUBUAA1AhsANQHBADUB4QA1AZYANQH0ADUBxQA1AcUAMgGJADUBwwA1Ad0ANQJ1ADUB9wA1AcoANQF6ADUAtAAAAAAAAAAAAAMAAAADAAAAHAABAAAAAAFQAAMAAQAAABwABAE0AAAALgAgAAQADgAAAAoADQAhACYAKgA5AFoAXgB6AKAArQDFAM8A1gDdAOUA7wD2AP0A/wF4//8AAAAAAAoADQAgACMAKgAwAEAAXgBhAKAArQDAAMcA0QDYAOAA5wDxAPgA/wF4//8AAf/5//f/5f/k/+H/3P/W/9P/0f+s/6AAAAAAAAAAAAAAAAAAAAAA/0v+twABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAIAAwADoARABOAF4AaAAAAAAAAAAXABcAFwAXABcAFwAZABsAGwAbABsAHwAfAB8AHwAkACUAJQAlACUAJQAlACsAKwArACsALwAyADIAMgAyADIAMgA0ADYANgA2ADYAOgA6ADoAOgA/AEAAQABAAEAAQABAAEYARgBGAEYASgAAAQYAAAEAAAAAAAAAAQIDAAAEAAAAAAAAAAAAAAAAAAAAAQAABQYABwgJCgAAAAsAAAAAAAwNDg8QERITFBUAAAAAAAAWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAAAAAxAAAyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKSwAAAAAAFxcZGyQlKzIyMjIyMjQ2NjY2Ojo6Oj9AQEBAQEZGRkYAAAAAAAAAAAAAAAAAAAAlAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABMFxclAAAAAAAAAAAAAEovAAAAAAAAAAAAAAAXGxcbGx8fHx8lJQAlKysrAAAAAAAAAAAAAAAAAAAAACgAKAAoACgAKAAoADwAbgC0AQgBbgGQAcYB1AIGAkYCYAKSAtAC4gMoA2ADyAPgBBoEUAR4BI4EogTWBOoE9gUiBToFSAViBXoFqgXWBjAGWgaaBqwG2AbqBwYHIAc2B0wHXgd2B7AH5ggOCCQIOAhsCIAIjAi4CNAI3gj4CRAJQAlsCcYJ8AowCkIKbgqACpwKtgrMCuIK4griAAAABQAyAAAB3QK8AAMABgAJAAwADwAAEyERIRsCCwEREwMhAxMRMgGr/lUcubrGtMG5AXKttQK8/UQCqP7LATX+tgEs/acBGP7MAUn+0QJdAAACADUABQDCAmoAAwAHAAATESMRExUjNcGLi4sCaf5mAZr+KY2NAAAAAgA1AAACSAJkABsAHwAAJQcjNyMHIzcjNzM3IzczNzMHMzczBzMHIwczByc3IwcBthdrFkoXbBdeDl8KYA9fFWwVShVtFWoPagpqDscJSgqqqqqqqmxHbJqamppsR2xsR0cAAAEANf/JAZUCqgAwAAABFR4BByM0LgEjIgYVFBYXHgMVFA4BBxUjNS4BNTMUFjMyNjU0LgInJjU0Njc1ARwwPAF3CBQOExcsPCEwFgkZNyhnPkGDGRQTGBElHBprRzQCqkQNV0INGBIdFB8hGw4tMCkUJkU7EENDCmk8GiUgFBIeGA4LKXpKVxBEAAAABQA1/+8CdgJrAAwAGAAcACkAOAAAEzQ2MzIeARUUBiMiJjcVFBYzMjY1NCYiBiUDIxMDNTQ+ATMyFhQGIyImNxUUHgEzMjY1NC4BIyIGNk02JD0jTTc2TVEeFBUeHiodAWjhVeEtIz0kN01ONjZOUQ4YDRUeDhcOFR4B1j5XKEUoPldXPgEXISEYGCEhcf2dAmP+JgEoRChXfFdWPwEPGhAiGBAbDyIAAwA1AAAB2AJnACQAOQBIAAAlFwcnDgEjIiY1ND4CNyY1NDYzMhYVFA4IBxc3MyciBhUUHgQXPgU1NCYjAxY+ATcnDgUVFBYBmT8qQgdUMk1cDyETFDVTNzdPAwUJBw0HDgUMATUabPULGQQFCgUKAQENBAsEBBYNAQ8bEQRRAQ4ECwUEIbFNZEERMGJKHzMqEhFDQD9ZVjsLFxITDRAJDgULAUFBtRgSBw4LDwcOAQEQBg8LDwcPGf58AQsOB2IBDQUOCg8IGyQAAAAAAQA1ATwBSQJtABEAABMHNxcHFwcnFyM3Byc3JzcXJ+YXVSVnZyhTGE0WUShnZyVWGAJselJLJSVOVXp7Vk4nI0tReQACADUAAAGjAmQAFwAmAAA3NTQ+AzMyHgMdARQOAiMiLgI3FRQeATMyPQE0IyIOAjYZJzIvFxQtMicaIjc9Hh09OiR8CBsXOTkSGAsF4KQxTzEhDQwhMFAypDtaMhkYMlvjrBUkH1isVxEeGgABADUAAAEAAmEABQAAMxEjNTMRhE7KAd6D/Z8AAQA1AAMBkwJmACEAADc1Njc+AzU0JiMiByM+Ajc+AzMyFhUUBgcGBzMVOi5WFxkaCx0XMQJ2AQINDQ4qLCIQTlkjLkAargN3L1kYHCcoFyIhXhsgNxccJxIHbU04WDRHHYEAAAEANQAAAZ8CZAAtAAATNjc2MzIWFRQOAwcWFRQGIyImJyYnMxYXMjY1NC4DKwE1MzI1NCYjIgdDAjktP0RVCw0VCwlca0otVRYVBn4KLhobCg8UDQcsFT0RESQCAaxgMCdfQRcoGBcIBiVpTWwrKCRENgElHRAYCwcCbzsVHjMAAgA1//8BuwJjAAoADQAAITUjNRMzETMVIxUnMzUBDdfadDY20WJrcgGF/oN6a+XAAAAAAAEANf//AawCYwAgAAABFSMHNjMyHgIVFA4CIyIuASczFjMyNjU0JiMiBycTAX+uCxsnKUIlExYrSy8zUS8HfRYjGygkHy4SZSoCYoBSEic+QyEkSkIqL00xJi8hHy80HwFTAAACADUAAAG0AmIAFgAoAAABMhYVFAYjIiYnJjU0PwEzBw4BBzAyNgMyPgE1NC4EIyIGFRQeAQEaO19vTy9QGCksepBYAw4CCA0kEx8TBAgLDxQLHSUVHQGvbF9kgConOV1LVdqUBRYFAv7XFCYXChMSEAwHLyEaJxIAAAAAAQA1//8BdAJjAAYAABMhFQMjEyM2AT6sibS9AmJ3/hUB3wAAAwA1AAABmwJkABkAJAAuAAATNTQ2MhYVFA4BBxYVFA4BIi4BNTQ3LgMXFRQWMjY1NCYiBjcVFBYyNjQmIgZCVqBWFBAMPC1RaFEtPAkLEgpwHjAdHTAeCRskGxskGwG/AUJhYkIeMxINJGU5WjMzWjllJAkNHSbhARgqKhkaKirTARcfHy8fHwAAAAACADUAAAG0AmQAFgAkAAA/AT4BNyYOASMiJjU0NjMyFhcWFRQPARM1NC4BIyIGFRQWMzI2fVgDDQQBCA0EO15uTy9QGCoteSsVHhAcKCUfHiUBlAQWBgEBAWxfZIAqJzldTFXaAYkBGiYSLiIgMi4AAgA1/8wCdQJtADgASAAAAQcGBwYzMjY1NCYjIgYHBh4DFxY3FQYnLgQ3ND4CMzIWFRQGIyInBicuATU0NjMyFhc3BzY1NC4CJyYGHQEUFjc2AfscBAIBFhYmbFVhdgcBBhwtVThNX01cQGlGMBUBLExzQniZWjs3FB07NT1PQBwoBwgqCQIHEg0gKCAUIQG2ux0NGVo8Wm2Laxg2RTcpBAUfWxsCASlBVlsvQHpfOqF8XZBBNwEBWkRIcyAWKMkaIgcQGBEBAz8rAyYjAQIAAAIANQAAAcgCZQAHAAoAADcHIxMzEyMvAge8GG6bYJdvGhknK3JyAmT9nHJz1tYAAAMANQABAWQCaAAPABoAJQAANxEzMhcWFRQHFhUUBw4BIwMzMjc2NTQnJisBFxUzMjc2NTQnJiM2lEAiJC9DJhszNx0mEgkQEAgUJQExFAsVFAoWAgJlKShQUygka1cuIhMBfAYLIB4LBuNwCA4mIgwGAAAAAQA1AAABqQJnACUAACUzDgEjIi4CNTQ+AjMyHgMXIy4DIyIOARUUFjMyPgIBSWAQX0cxSiwWFStLMSM7KB4QA2AFDhQfER4pEi8qFCEUCulrfjNXbD47alk0HzJAPR0SISATNEwsSWcXJxkAAgA1AAABgwJlAA8AGAAAMxEzMh4DFxYVFA4CIwMRMzI1NCcmIzZ/EhcsICYOJBUtTzUiKF4TFzMCZAEMFi4hT29BbFcwAdr+r6dDLjkAAAABADUAAAE3AmUACwAAEyEVIxUzFSMVMxUhNgEBlpGSlv8AAmR4cHmKeQAAAAEANQAAATcCZQAJAAAzESEVIxUzFSMRNgEBmJOTAmR5b3r+/gAAAAABADUAAAG3AmYAIQAAARUmBw4CFRQeAjMyNzY3IzUzFgcGIyIuATU0NjMyFhcBQBQ3FygbEBkgESEWGQVr0wUTMH89WCpiX0haEAGbAUgCASNPOC1FKhUaHDlpZkOyVYlXiaZvWwAAAAEANQAAAYYCZQALAAAzIxEzFTM1MxEjNSOcZmaDZ2eDAmTm5v2c9QABADUAAACgAmUAAwAAMxEzETZpAmT9nAABADUAAAFRAmUAGgAAAREUBwYHBiMiLgMnJjUzFBYVFjMyNzY1EQFQDQ8fJi4IESsgIAUCcQEEGxUHBAJk/pZkLCscIwIRHkEsFxcCDAQzGxAhAZEAAAAAAQA1//8BiwJmAAoAABcRMxETMwMTIwMRNmdzbISTfnABAmb+7AEU/s/+zAEJ/vYAAQA1AAABGgJlAAUAADMRMxEzFTZpewJk/iaKAAEANQAAAeUCZQAMAAAzIxEzGwEzESMTAyMDlmCLTEuMYARZRVgCZP52AYr9nAHK/jYBygABADUAAAGMAmUACQAAGwEDMxEjAxMjEZ2NAWNikwJjAmT+lAFs/ZwBaf6XAmQAAAACADUAAAGsAmUADAAfAAATNDYzMhYVFA4BIyImNxQWMzI+BDU0LgIjIg4BNmRWUWs0VDRWZGgqKg8aEQ0IAwgSIhceJw4BLKGXmJpfjUaelUtjDxohKCcUHzo1IDVKAAACADUAAAFgAmYAEAAbAAATMzIeARcWFRQGBw4BKwEVIxMVMzI3NjU0JyYjNoEjMRoMLhcSFjEtKGRkJRoNGBkOHAJlCxMPO2cvWRkdGMAB3ZMJEi8uEQoAAwA1//8BvwJmABsALgA8AAAlFwYiLgInDgIjIi4BNTQ+ATMyFhUUBx4CAyIOBAc2MzIXFhc2NTQuAQMeAzsBMjcmJyYjIgG9AQINGRgcChMsFBM+VycmWD1Uah0GDQzAERwSDQcCARgVKCIbHQkbLGgGFRUTBgYWDhEOGSAPenkBAggSDRMTAlaGU1GIXK5/ZUkIBwEBZxIgHScLCBEoHzQeLTJOKP7/HCgQCQwiFSMAAAAAAgA1//8BjwJmAA0AGgAAJRcjJxUjETMXFhcWFRQnNjU0LgInKwEVMzIBDYF+cGpqOi4UW4QYCxARBQY1Lhb7++vqAmQBBQosgohEFyoVHg4IAZkAAQAyAAABjwJnACsAADczFBY3NjU0JicuAycmPgEzMhYXIy4DIyIGFRQWFx4BFRQOAiMiJjZ2JBIyJjwRICobAQE0TSs5WQp0AQMJEg0RHCdBQTEUJkQsXFbFKx8BBDgWIB4JFyg7ITlVKFRbCwwTCh0UFSIkJEc2JUE3IGkAAAABADUAAAFTAmUABwAAMxEjNSEVIxGLVQEdVQHseHj+FAAAAAABADUAAAGNAmUAGgAAEzMRFBceATI2NzY1ETMRFA4BBwYjIiYnLgE1NmsIBR8qHgUIagcQDjBUIk0ZGQwCZP6WLhsSGBYQFzUBa/6WM0MvFEEcJCZISwAAAQA1AAABpwJlAAYAADMDMxsBMwO2gGdQUWmAAmT+UwGt/ZwAAQA1AAACQAJkAAwAADMDMxsBMxsBMwMjCwGfaWk4PFA8OGhrWz4+AmP+cwGN/nEBj/2dAYz+dAABADUAAAHBAmUACwAAMxMDMxc3MwMTIycHNop6c0NCcnmJc1VRAUYBHq6u/t/+vdnZAAAAAQA1AAABlAJlAAkAADczAzMXNzMDFSOsAXdvQUFtd3HrAXn29v6H6wAAAAABADUAAAFDAmYACQAAAQMzFSE1EyM1IQFDiIj+85OTAQ0B5v6kimcBdYkAAAEANQFFAaYCagAGAAAbATMTIycHNnx3fYE4NwFFAST+3LOzAAIANQAAAcgCZQAHAAoAADcHIxMzEyMvAge8GG6bYJdvGhknK3JyAmT9nHJz1tYAAAMANQABAWQCaAAPABoAJQAANxEzMhcWFRQHFhUUBw4BIwMzMjc2NTQnJisBFxUzMjc2NTQnJiM2lEAiJC9DJhszNx0mEgkQEAgUJQExFAsVFAoWAgJlKShQUygka1cuIhMBfAYLIB4LBuNwCA4mIgwGAAAAAQA1AAABqQJnACUAACUzDgEjIi4CNTQ+AjMyHgMXIy4DIyIOARUUFjMyPgIBSWAQX0cxSiwWFStLMSM7KB4QA2AFDhQfER4pEi8qFCEUCulrfjNXbD47alk0HzJAPR0SISATNEwsSWcXJxkAAgA1AAABgwJlAA8AGAAAMxEzMh4DFxYVFA4CIwMRMzI1NCcmIzZ/EhcsICYOJBUtTzUiKF4TFzMCZAEMFi4hT29BbFcwAdr+r6dDLjkAAAABADUAAAE3AmUACwAAEyEVIxUzFSMVMxUhNgEBlpGSlv8AAmR4cHmKeQAAAAEANQAAATcCZQAJAAAzESEVIxUzFSMRNgEBmJOTAmR5b3r+/gAAAAABADUAAAG3AmYAIQAAARUmBw4CFRQeAjMyNzY3IzUzFgcGIyIuATU0NjMyFhcBQBQ3FygbEBkgESEWGQVr0wUTMH89WCpiX0haEAGbAUgCASNPOC1FKhUaHDlpZkOyVYlXiaZvWwAAAAEANQAAAYYCZQALAAAzIxEzFTM1MxEjNSOcZmaDZ2eDAmTm5v2c9QABADUAAACgAmUAAwAAMxEzETZpAmT9nAABADUAAAFRAmUAGgAAAREUBwYHBiMiLgMnJjUzFBYVFjMyNzY1EQFQDQ8fJi4IESsgIAUCcQEEGxUHBAJk/pZkLCscIwIRHkEsFxcCDAQzGxAhAZEAAAAAAQA1//8BiwJmAAoAABcRMxETMwMTIwMRNmdzbISTfnABAmb+7AEU/s/+zAEJ/vYAAQA1AAABGgJlAAUAADMRMxEzFTZpewJk/iaKAAEANQAAAeUCZQAMAAAzIxEzGwEzESMTAyMDlmCLTEuMYARZRVgCZP52AYr9nAHK/jYBygABADUAAAGMAmUACQAAGwEDMxEjAxMjEZ2NAWNikwJjAmT+lAFs/ZwBaf6XAmQAAAACADUAAAGsAmUADAAfAAATNDYzMhYVFA4BIyImNxQWMzI+BDU0LgIjIg4BNmRWUWs0VDRWZGgqKg8aEQ0IAwgSIhceJw4BLKGXmJpfjUaelUtjDxohKCcUHzo1IDVKAAACADUAAAFgAmYAEAAbAAATMzIeARcWFRQGBw4BKwEVIxMVMzI3NjU0JyYjNoEjMRoMLhcSFjEtKGRkJRoNGBkOHAJlCxMPO2cvWRkdGMAB3ZMJEi8uEQoAAwA1//8BvwJmABsALgA8AAAlFwYiLgInDgIjIi4BNTQ+ATMyFhUUBx4CAyIOBAc2MzIXFhc2NTQuAQMeAzsBMjcmJyYjIgG9AQINGRgcChMsFBM+VycmWD1Uah0GDQzAERwSDQcCARgVKCIbHQkbLGgGFRUTBgYWDhEOGSAPenkBAggSDRMTAlaGU1GIXK5/ZUkIBwEBZxIgHScLCBEoHzQeLTJOKP7/HCgQCQwiFSMAAAAAAgA1//8BjwJmAA0AGgAAJRcjJxUjETMXFhcWFRQnNjU0LgInKwEVMzIBDYF+cGpqOi4UW4QYCxARBQY1Lhb7++vqAmQBBQosgohEFyoVHg4IAZkAAQAyAAABjwJnACsAADczFBY3NjU0JicuAycmPgEzMhYXIy4DIyIGFRQWFx4BFRQOAiMiJjZ2JBIyJjwRICobAQE0TSs5WQp0AQMJEg0RHCdBQTEUJkQsXFbFKx8BBDgWIB4JFyg7ITlVKFRbCwwTCh0UFSIkJEc2JUE3IGkAAAABADUAAAFTAmUABwAAMxEjNSEVIxGLVQEdVQHseHj+FAAAAAABADUAAAGNAmUAGgAAEzMRFBceATI2NzY1ETMRFA4BBwYjIiYnLgE1NmsIBR8qHgUIagcQDjBUIk0ZGQwCZP6WLhsSGBYQFzUBa/6WM0MvFEEcJCZISwAAAQA1AAABpwJlAAYAADMDMxsBMwO2gGdQUWmAAmT+UwGt/ZwAAQA1AAACQAJkAAwAADMDMxsBMxsBMwMjCwGfaWk4PFA8OGhrWz4+AmP+cwGN/nEBj/2dAYz+dAABADUAAAHBAmUACwAAMxMDMxc3MwMTIycHNop6c0NCcnmJc1VRAUYBHq6u/t/+vdnZAAAAAQA1AAABlAJlAAkAADczAzMXNzMDFSOsAXdvQUFtd3HrAXn29v6H6wAAAAABADUAAAFDAmYACQAAAQMzFSE1EyM1IQFDiIj+85OTAQ0B5v6kimcBdYkAAAAAEADGAAEAAAAAAAEACAASAAEAAAAAAAIABwArAAEAAAAAAAMAFQBfAAEAAAAAAAQACACHAAEAAAAAAAUAIgDWAAEAAAAAAAYADwEZAAEAAAAAABAACAE7AAEAAAAAABEABwFUAAMAAQQJAAEAEAAAAAMAAQQJAAIADgAbAAMAAQQJAAMAKgAzAAMAAQQJAAQAEAB1AAMAAQQJAAUARACQAAMAAQQJAAYAHgD5AAMAAQQJABAAEAEpAAMAAQQJABEADgFEAFYAZQBnAGUAbQBpAHQAZQAAVmVnZW1pdGUAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAADEALgAwADAAMgA7AFYAZQBnAGUAbQBpAHQAZQBSAGUAZwB1AGwAYQByAAAxLjAwMjtWZWdlbWl0ZVJlZ3VsYXIAAFYAZQBnAGUAbQBpAHQAZQAAVmVnZW1pdGUAAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADIAOwBGAG8AbgB0AHMAZQBsAGYAIABNAGEAawBlAHIAIAAzAC4AMwAuADAAAFZlcnNpb24gMS4wMDI7Rm9udHNlbGYgTWFrZXIgMy4zLjAAAFYAZQBnAGUAbQBpAHQAZQBSAGUAZwB1AGwAYQByAABWZWdlbWl0ZVJlZ3VsYXIAAFYAZQBnAGUAbQBpAHQAZQAAVmVnZW1pdGUAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAAAAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAABOAAAAAQACAQIBAwADAAQABgAHAAgACQANABMAFAAVABYAFwAYABkAGgAbABwAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0AQQBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0ArAEECWNvbnRyb2xMRgljb250cm9sQ1IKc29mdGh5cGhlbgAAAAAAAAH//wACAAEAAAAMAAAAFgAAAAIAAQABAE0AAQAEAAAAAgAAAAAAAQAAAAoALAAuAAJERkxUAA5sYXRuABgABAAAAAD//wAAAAQAAAAA//8AAAAAAAAAAQAAAAoAMAA+AAJERkxUAA5sYXRuABoABAAAAAD//wABAAAABAAAAAD//wABAAAAAWtlcm4ACAAAAAEAAAABAAQAAgAAAAEACAABKd4ABAAAAEYAlgEwAd4CjAM2A+AEegUsBWYGDAa+B3AIHgjQCYIKNAriC4gMAgx0DOYNZA3mDlQOyg88D54QEBCGEQARchHsEmIS1BOWFAwUghTwFWIV1BaiFxQXkhgEGMYZdBomGtQbfhwYHL4dYB3+HpgfPh/oIJYhPCHmIpQjRiPsJJolSCXuJpQnQifoKJIpRAAmAAn/8QAK//sADP/7AA3/+wAO//sAD//7ABD/+wAR//sAEv/7ABP/+wAU//sAFf/xABb/8QAZ//sAHf/2AB7/+wAf//sAIP/xACH/+wAi//sAI//7ACT/+wAl//EAJv/2ACf/8QAo//sAKf/2ACr/+wAr//sALP/sAC3/7AAu/+IAL//dADD/9gAx/+wAMv/7ADP/+wA0//YAKwAG//EACP/nAAn/4gAK/9MAC//iAAz/9gAN/+IADv/sAA//4gAQ/9gAEf/iABL/1QAT//EAFP/nABX/8QAW/9gAMf/TADL/pgAz//MANP/nADX/8QA2//EAN//7ADj/7gA5//YAOv/7ADv/2AA8//EAPf/2AD7/9gA///EAQP/sAEH/+wBC/+wAQ//xAET/7ABF/+wARv/2AEf/3QBI/90ASf/EAEr/zgBL//YAKwAG//YAB//2AAn/3QAL/+wADP/sAA3/8QAO//YAD//sABD/8QAR/+wAEv/iABP/5wAU/+wAFf/dABb/7AAX/78AMf/YADL/sAAz/+IANP/iADX/8QA2/+cAN//xADj/3QA5/+wAOv/2ADv/4gA8//EAPf/xAD7/8QA///YAQP/YAEH/9gBC/+cAQ//sAET/7ABF/+wARv/xAEf/zgBI/9MASf/OAEr/zgBL/+wAKgAG//YAB//iAAj/4gAK/+IADP/dAA3/ugAO/+IAD//iABD/5wAR/+IAEv/dABP/yQAU/90AFf+mABb/0wAx/5gAMv/YADP/4gA0/9MANf/xADb/7AA3/+wAOP/iADn/7AA6//EAO//dADz/5wA9/+wAPv/sAD//5wBA/9gAQf/sAEL/zgBD/+wARP/YAEX/tQBG/90AR/+hAEj/oQBJ/8QASv+DAEv/7AAqAAb/8QAH/90ACP/YAAn/oQAL/8kADP/iAA3/sAAO/+cAD//YABD/4gAR/90AEv/bABP/4gAU/+IAFf/TABb/5wAg/+QAMf/nADL/3AAz//QANP/rADX/9AA2//IAN//4ADj/8AA5//QAOv/1ADv/7AA8/+oAPf/7AD7/9wA///IAQP/tAEH/+wBC/+IAQ//2AET/4wBF/7YARv/vAEf/pgBK/6MAS//yACYAB//TAAj/8QAK/84ADP/dAA3/9gAO//EAD//dABD/pgAR/8kAEv+6ABP/7AAU/90AFf/OADH/xAAy/5IAM//sADT/3QA1/+cANv/xADf/9gA4/90AO/9WADz/5wA9//EAPv/sAD//5wBA/84AQf/dAEL/0wBD/+cARP/nAEX/5wBG/+cAR//dAEj/2ABJ/7oASv/JAEv/4gAsAAb/+wAH//sACP/xAAn/zgAK/+cAC//dAAz/9gAN/9gADv/tAA//7AAQ/+kAEf/rABL/3QAT/90AFP/hABX/3QAW/90AMf/nADL/vwAz/+cANP/nADX/8QA2//EAN//sADj/5wA5//YAOv/2ADv/4gA8//EAPf/2AD7/+wA///sAQP/2AEH/+wBC/+wAQ//7AET/7ABF/9MARv/7AEf/yQBI/84ASf+wAEr/xABL/+cADgAG//sACf/xAAv/7AAN//sADv/7AA8AAAAR//EAEv/0ABP/9gAU//EAFf/xABb/7AAx//YAQP/2ACkABv/7AAf/9gAI//sACf/iAAr/5wAL/+wADP/vAA3/3QAO//sAD//qABD/8QAR/+wAEv/nABP/8QAU/+cAFf/iABb/7AAx/+cAMv/vADP//AA0/+cANf/7ADb//gA4//EAOf/8ADr//AA7/+kAPP/6AD3//QA+//4AP//7AEL/6gBD//0ARP/2AEX/7ABG//EAR//YAEj/4gBJ/+wASv/LAEv//AAsAAb/+wAH//EACP/2AAn/0wAK/+IAC//JAAz/5wAN/90ADv/iAA//7AAQ/+cAEf/sABL/3QAT/9MAFP/iABX/zgAW/+cAMf/YADL/xAAz/+wANP/dADX/6AA2//EAN//xADj/4wA5//EAOv/2ADv/7AA8/+wAPf/sAD7/9gA//+wAQP/iAEH/8QBC/90AQ//nAET/5wBF/8QARv/mAEf/xABI/8kASf+1AEr/rQBL/+IALAAG//sAB//7AAj/9gAJ/9MACv/2AAv/ugAM/+kADf/dAA7/9gAP/+wAEP/2ABH/8AAS//EAE//2ABT/5wAV/9gAFv/sADH/vwAy/9UAM//eADT/3wA1//EANv/xADf/9gA4/+IAOf/xADr/9gA7/+wAPP/xAD3/9gA+//EAP//2AED/2ABB//EAQv/nAEP/9gBE/+cARf/TAEb/8QBH/9gASP/YAEn/xgBK/78AS//xACsABv/7AAf/9gAI/+wACf/TAAr/5wAL/90ADP/lAA3/zgAO/90AD//dABD/7AAR/+IAEv/iABP/2AAU/+IAFf/JABb/5wAx/90AMv/EADP/6wA0/+EANf/wADb/8AA4/9wAOf/dADr/7AA7/9gAPP/sAD3/5wA+/+wAP//iAED/0wBB/+IAQv/YAEP/4gBE/84ARf/JAEb/4gBH/8kASP/OAEn/vwBK/8kAS//TACwABv/7AAf/3wAI/+cACf+wAAr/4wAL/8kADP/dAA3/xwAO/+cAD//dABD/7AAR/+cAEv/iABP/yQAU/9cAFf+/ABb/4gAa/+kAMf/YADL/uwAz/+EANP/dADb/6wA3//MAOP/lADn/8QA6//IAO//eADz/5wA9/+4APv/zAD//8ABA/+IAQf/2AEL/6gBD//YARP/kAEX/zABG/+8AR/+0AEj/uwBJ/64ASv+vAEv/5QAsAAb/+wAH/90ACP/nAAn/4gAK/9MAC//nAAz/3QAN//YADv/eAA//3QAQ/7AAEf/OABL/sAAT//sAFP/dABX/0wAW/9MAMf/iADL/iAAz//YANP/OADX/9gA2//EAN//xADj/0wA5//YAOv/zADv/gAA8//EAPf/7AD7/+wA///YAQP/OAEH/7gBC/84AQ//2AET/2ABF//sARv/2AEf/5wBI/+cASf/TAEr/4gBL/+wALAAG//sAB//2AAj/8QAJ/9gACv/nAAv/3QAM/+IADf/dAA7/4gAP/+IAEP/nABH/5wAS/9gAE//YABT/3QAV/84AFv/sADH/5wAy/78AM//nADT/2AA1/+cANv/nADf/7AA4/90AOf/sADr/7AA7/+cAPP/sAD3/8QA+/+wAP//xAED/4gBB//EAQv/dAEP/5wBE/+IARf/YAEb/5wBH/78ASP/HAEn/sABK/7UAS//dACsABv/xAAf/8QAI/+IACf/dAAr/0wAL/+IADP/iAA3/3QAO/+cAD//dABD/zgAR/9MAEv/EABP/0wAU/84AFv/dADH/4gAy/6EAM//jADT/3QA1/+wANv/sADf/5wA4/90AOf/nADr/8QA7/78APP/xAD3/9gA+/+wAP//nAED/3QBB/+cAQv/nAEP/5wBE/+IARf/OAEb/3QBH/8QASP/JAEn/lwBK/7oAS//YACkABv/sAAf/0wAI/90ACf/OAAr/3QAM/90ADf/EAA7/5wAP/9gAEP/YABH/3QAS/9MAE//YABT/4gAV/90AMf/sADL/wAAz/+8ANP/kADX/6wA2//AAN//2ADj/5AA5//EAOv/uADv/1gA8//QAPf/2AD7/8QA///AAQP/dAEH/7ABD/+gARP/YAEX/1QBG/+wAR/+3AEj/wwBJ/7UASv+wAEv/5gAeAAf/zgAi/+4AI//5ACT/7wAy/9AAM//pADT/sQA1/+sANv/nADf/5gA4/7oAOf/vADr/9wA7/9AAPP/sAD3/6wA+/+YAP//sAED/uwBB/+kAQv+7AEP/5ABE/9QARf+6AEb/0ABH/34ASP+SAEn/zQBK/5sAS//nABwAF//RACT//wAy/9EAM//uADT/5wA1/+8ANv/3ADf/7gA4/+gAOf/3ADr/+wA7/9oAPP/vAD3/9wA+/+4AP//vAED/4QBB//cAQv/nAEP/7wBE/+4ARf/QAEb/9wBH/8EASP/MAEn/wwBK/7sAS//nABwAF//QABv/+QAy/8EAM//zADT/6wA1//sANv/zADf/+wA4/+8AOf/zADr//gA7/+EAPP/vAD3/9wA+//kAP//3AED/4gBB//kAQv/jAEP/8wBE/+YARf/VAEb/+QBH/84ASP/JAEn/twBK/8EAS//rAB8ABv/7ABL/3wAX/8kAJf/5ACv/7wAy/7oAM//zADT/6wA1/+8ANv/uADf/8wA4/+oAOf/vADr/7wA7/9QAPP/5AD3//gA+//EAP//vAED/4wBB//MAQv/mAEP/7gBE/+cARf/XAEb/6wBH/8kASP/JAEn/twBK/7cAS//nACAABv/7ACQAAgAl/+8AJ//5AC3//gAv//4AMv/oADP//QA0/+sANf/7ADb/+gA3//sAOP/jADn/9wA6//oAO//kADz//wA9//0APv/+AD8AAABA/+gAQf/7AEL/6ABD//sARP/sAEX/8QBG//sAR//qAEj/6wBJ/+cASv/qAEv/+QAbAAb/+wAl/+8AMv+5ADP/+wA0/+8ANf/7ADb/+wA3//0AOP/vADn/+wA6AAAAO/+7ADz//gA9//4APv/7AED/7ABB//4AQv/nAEP/+QBE//kARf/7AEb/+QBH//MASP/rAEn/4gBK/+8AS//7AB0ABv/2ABf/zgAl/+8AMv+3ADP/9wA0/+sANf/3ADb/8QA3//kAOP/uADn/8wA6//sAO//YADz/8wA9/+4APv/3AD//8wBA/+MAQf/3AEL/6QBD/+8ARP/nAEX/1ABG/+8AR//JAEj/zABJ/6YASv/JAEv/3AAcAAb/+wAX//MAJf/7ADL/6wAz//4ANP/uADX/+wA2//4AN//+ADj/8wA5//0AOv/+ADv/7gA8//4APf/+AD7/+wA///4AQP/uAEL/9wBD//4ARP/+AEX/+QBG//4AR//uAEj/9wBJ/+4ASv/zAEv//gAYAAb/+wAx//YAMv/rADP//wA0//MANf//ADYAAQA3//8AOP/zADv/6AA8//4APf/+AD4AAQBA/+4AQf//AEL/8wBD//4ARP/4AEX//QBH/+wASP/3AEn/7ABK//EASwABABwABv/2ABf/4QAy/8oAM//9ADT/+QA1//4ANv/7ADf//gA4//MAOf/+ADr//wA7/+EAPP/7AD3//gA+//4AP//+AED/7wBB//4AQv/zAEP//gBE//sARf/7AEb//gBH/+8ASP/5AEn/2gBK//oAS//+AB0ABv/nABf/5wAx/7AAMv/hADP/7gA0/7QANf/rADb/5wA3/+4AOP+sADn/6wA6//kAO/+3ADz/6gA9/+8APv/nAD//5wBA/6wAQf/uAEL/rgBD/+cARP+8AEX/3ABG/9oAR//cAEj/0QBJ/9oASv/RAEv/7wAeAAb/9gAX//cAI//9ADH/vwAy/+4AM//5ADT/2gA1//4ANv/3ADf/+wA4/9oAOf/3ADr/+wA7/+cAPP/7AD3/+QA+//cAP//5AED/1ABB//sAQv/cAEP/9wBE/+8ARf/JAEb/6wBH/8QASP++AEn/5wBK/8EAS//+ABwAF//7ADH/7AAy/+QAM//+ADT/7gA1//4ANgAAADf//QA4//cAOf/7ADr//gA7/+4APP/+AD3//gA+//0AP//7AED/7wBB//4AQv/uAEP//gBE//cARf/7AEb/+QBH/+gASP/vAEn/6wBK/+gAS//+AB4ABv/7ABf/8wAa//4AHf/3ACX/9wAq//4AMf/2ADL/5AAz//0ANP/zADX/+wA2//4AN//+ADj/+QA7/+4APf/+AD7/+wA///4AQP/2AEH/+gBC/+4AQ//7AET/+QBF//sARv/+AEf/8wBI/+8ASf/zAEr/6wBL//4AHQAG//EAJP/3ADH/7AAy/7sAM//sADT/4wA1/+8ANv/vADf/9wA4/+QAOf/qADr/9wA7/98APP/vAD3/9wA+/+sAP//uAED/4wBB/+4AQv/mAEP/7wBE/+IARf/VAEb/7gBH/8MASP/GAEn/uwBK/7oAS//fABwABv/sACT//gAy/54AM//rADT/6gA1//EANv/rADf/9wA4/+MAOf/oADr/9wA7/64APP/sAD3/8QA+/+wAP//sAED/4QBB//MAQv/oAEP/5ABE/9gARf/kAEb/7gBH/9EASP/QAEn/uwBK/8QAS//zADAAF//3ABj//wAZ/+kAGv//ABv//QAc//4AHf/pAB7/+wAf//8AIP/iACH//gAi//8AI//+ACT//wAl/+IAJ//uACj//gAp/+cAKv/hACv/+QAs/8MALf/QAC7/5AAv/8wAMP//ADL/4QAz//4ANP/jADX/9wA3//kAOP/fADn/9wA7/+IAPP/5AD3/+gA+//EAP//6AED/2gBB/+8AQv/aAET/7wBF/9cARv/qAEf/xgBI/7sASf/qAEr/tABL//sAHQAG/+cAF//oACT/+gAy/+IAM//xADT/zAA1/+8ANv/sADf/+gA4/8wAOf/3ADr/8wA7/8kAPP/uAD3/7wA+/+wAP//rAED/yQBB//cAQv/MAEP/+ABE/9QARf/KAEb/2gBH/8EASP/EAEn/4gBK/7cAS//vAB0ABv/xABv/+QAl/+4AMv+8ADP/7wA0/9wANf/zADb/6AA3//cAOP/hADn/5gA6//MAO//aADz/6QA9//MAPv/pAD//6wBA/+MAQf/3AEL/2gBD/+kARP/rAEX/1ABG/+kAR//JAEj/zABJ/7QASv+7AEv/5wAbAAb/9gAy/6YAM//9ADT/0wA1//oANv/+ADf//QA4/9UAOf/3ADr//wA7/7kAPP/6AD3//gA+//sAP//7AED/0ABB//oAQv/XAEP/+QBE/+IARf/zAEb/9wBH/+8ASP/vAEn/6gBK/+cAS//6ABwABv/7ACQAAgAy/9UAM//7ADT/7wA1//cANv/9ADf//wA4/+4AOf/7ADr//wA7/+sAPP/+AD3//gA+//0AP//6AED/7gBB//sAQv/sAEP/+wBE/+8ARf/7AEb//QBH/+8ASP/qAEn/3wBK//gAS//+ABwABv/nABf/lQAy/4IAM//3ADT/wQA1/+kANv/nADf/+gA4/8QAOf/oADr/6wA7/5UAPP/uAD3/+wA+//cAP//vAED/wQBB/+8AQv/DAEP/5wBE/84ARf/uAEb/7gBH/+kASP/pAEn/zgBK/+4AS//7ADMABv/sABf/owAY//kAGf/XABr//gAb//4AHP/5AB3/0AAe//gAIP+tACH/8wAi//4AJP/+ACX/0AAm//kAJ//MACj//gAp/9oAKv/+ACv//gAs/+MALf/zAC7/3AAv//cAMP/7ADL/jwAz/+oANP/CADX/7wA2/+oAN//3ADj/xgA5/+sAOv/6ADv/qgA8/+sAPf/7AD7/7wA//+8AQP++AEH/7gBC/8MAQ//qAET/1QBF/+sARv/pAEf/6ABI/+cASf/iAEr/2gBL/+4AHAAG/+cAF//hADL/1AAz/+sANP+wADX/6wA2/+QAN//jADj/qgA5/+cAOv/jADv/ugA8/+cAPf/vAD7/2gA//+kAQP+uAEH/7wBC/64AQ//kAET/uwBF/9oARv/aAEf/zABI/84ASf/TAEr/zQBL/+sAHwAG/+IAF/+lACP//gAk//sAL//uADL/hwAz/+8ANP+sADX/+AA2/9wAN//6ADj/uQA5/+4AOv/vADv/hAA8/+gAPf/pAD7/5wA//+YAQP+wAEH/6QBC/7oAQ//vAET/zgBF/+gARv/oAEf/2gBI/+YASf/QAEr/4gBL/+kAHAAG//sAF//+ADL/5wAz//sANP/kADX/+wA2//8AN//7ADj/4QA5//4AOv//ADv/6wA8//sAPf/+AD7//gA///sAQP/hAEH/+wBC/9oAQ//+AET/7wBF//sARv/6AEf/6QBI//kASf/rAEr/6QBL//sAMAAG/+wAB//YAAj/3QAJ/9MACv+/AAv/yQAM/+IADf/YAA7/7AAP/9MAEP/JABH/5wAS/+IAE//OABT/4gAV/+wAFv/nACD/WwAh/+wAIv/xACP/8QAk//YAJf/xADL/oQAz/+wANP/nADX/7AA2//sAN//2ADj/9gA5//sAO/+PADz/7AA9//YAPv/sAD//8QBA/+IAQf/nAEL/7ABD/+IARP/JAEX/zgBG/+cAR/+/AEj/xABJ/5IASv+/AEv/4gArAAb/9gAI/8QACf+cAAr/zAAL/5QADP+6AA3/xAAO/+oAD//BABD/zgAR/78AEv+7ABP/2AAU/78AFf+mABcAAgAk/+cAMf+mADL/2AAz/+cANP+7ADX/5gA2//MAN//zADj/sQA5/+oAOv/rADz/6AA9/+gAPv/mAD//5wBA/7oAQf/4AEL/twBD/+gARP/OAEX/sQBG/88AR/+EAEj/lwBJ/9AASv+NAEv/9wAsAAb/9gAH/+oACP/nAAn/xAAK/+gAC//TAAz/3QAN/9gADv/lAA//5wAQ/+IAEf/aABL/3AAT/9MAFP/bABX/xAAk//EAMf/YADL/zQAz/+wANP/kADX/9wA2//MAN//9ADj/4wA5//cAOv/3ADv/5gA8//4APf/9AD7/7gA//+4AQP/kAEH/+QBC/+YAQ//vAET/6QBF/9oARv/vAEf/zgBI/88ASf/QAEr/uQBL//kAKwAG//YAB//qAAj/7AAJ/9gACv/uAAv/4gAM/+IADf/dAA7/9AAP/+IAEP/eABH/5gAS/+IAE//TABT/3QAV/90AJP/2ADH/7AAy/74AM//uADT/3wA1//oANv/xADj/5wA5/+8AOv/5ADv/2AA8/+0APf/9AD7/8wA///EAQP/rAEH/+ABC/+QAQ//3AET/5gBF/9AARv/zAEf/xgBI/80ASf++AEr/twBL/+gAKgAH//EACP/xAAn/0wAK/+YAC//YAAz/5wAN/9gADv/oAA//5wAQ/+IAEf/iABP/2AAU/90AFf/dACT/+wAx/+wAMv+7ADP/9wA0/+QANf/rADb/5wA3//EAOP/kADn/+QA6//YAO//aADz/9wA9//4APv/uAD//8QBA/+cAQf/vAEL/4wBD/+sARP/cAEX/0ABG/+sAR//CAEj/xABJ/7QASv+6AEv/6AAmAAf/9gAI//EACf/sAAr/9gAM/+cADv/6AA//8QAQ//EAEf/vABL/4QAT//EAFP/iABX/5wAy/+kAM//9ADT/5wA1//sANv/9ADf//gA4/+sAOf/+ADoAAQA7/+gAPP/9AD3/9wA+//0AP//9AED/6wBBAAEAQv/pAEP/+QBE/+wARgACAEf/6QBI/+8ASf/nAEr/6wBL//sAKQAH//sACP/xAAn/5wAK/+4AC//2AAz/4gAN//sADv/1AA//8QAQ/90AEf/kABL/4gAT/+wAFP/YABX/3QAx//YAMv+5ADP/+AA0/+MANf/3ADb/+AA3//kAOP/iADn/+gA6//0AO//OADz//QA9//4APv/5AD///ABA/+YAQv/jAEP/9wBE/+YARf/vAEb//gBH/+cASP/vAEn/0QBK/+YAS//9ACgAB//2AAj/4gAJ/90ACv/sAAv/4gAM/+gADf/iAA7/9QAP/+gAEP/dABH/4AAS/+YAE//OABT/4gAV/90AJP/7ADH/9gAy/8EAM//vADT/3wA2//QAN//4ADj/4wA5/+kAOv/6ADv/0QA8/+YAPf/zAD7/6QA///EAQP/qAEL/3ABD/+gARP/fAEb/+ABH/7sASP+7AEn/rwBK/68AS//jACcACP/xAAn/7AAK//gADP/2AA7/9wAP//YAEP/xABH/5wAS/+cAE//xABT/7AAV/+UAMf/2ADL/6AAz//kANP/qADX/+wA2//oAN//7ADj/6wA5//cAOv//ADv/4wA8//sAPf/+AD7/+wA///oAQP/sAEH/+gBC/+MAQ//5AET/7wBF/+oARv/7AEf/4wBI/+wASf/jAEr/6gBL//4AJgAH//sACP/7AAn/5wAK//oADP/2AA7/9gAP//YAEP/xABH/8QAS//IAE//xABT/5wAV//EAMv/nADP/+wA0//EANf/9ADb//gA3//4AOP/uADn/+wA6//4AO//oAD0AAAA+//sAP//+AED/7wBB//4AQv/qAEP//wBE//EARf/3AEb/+wBH/+YASP/3AEn/2gBK/+QAS//7ACkAB//2AAj/9gAJ/90ACv/yAAz/8QAO//EAD//wABD/6gAR/+wAEv/mABP/9AAU/+wAFf/rABf/zgAx//YAMv/OADP/7wA0/+oANf/5ADb//gA3//0AOP/oADn/+QA6//0AO//YADz//gA9//8APv/6AD//+QBA/+4AQf/5AEL/4wBD//gARP/qAEX/+QBG//oAR//pAEj/6QBJ/9UASv/rAEv/+gAqAAf/sgAI/8kACf+wAAr/ugAL/7UADP+1AA3/3QAO/+QAD/+6ABD/sgAR/7UAEv+xABP/4gAU/6sAFf+mADH/lwAy/9oAM//jADT/qwA1/+IANv/iADf/4wA4/5oAOf/XADr/7gA7/7QAPP/kAD3/6wA+/+4AP//mAED/rQBB/+8AQv+qAEP/6gBE/74ARf/XAEb/2gBH/9AASP/SAEn/1QBK/80AS//qACsAB//nAAj/8QAJ/6YACv/sAAv/nAAM/90ADf+6AA7/9gAP/+IAEP/sABH/3QAS/9oAE//sABT/3QAV/8QAJP/+ADH/pgAy/+sAM//vADT/ygA1//0ANv/zADf/+wA4/9MAOf/vADr/+wA7/9gAPP/3AD3/9wA+//EAP//7AED/1QBB//cAQv/PAEP/8wBE/+YARf+7AEb/5wBH/7UASP/JAEn/2gBK/6UAS//zACkAB//2AAn/7AAK//kAC//sAAz/9gAO//oAD//2ABD/7AAR/+cAEv/vABP/9gAU//EAFf/sABcAAQAx/+YAMv/pADP/+QA0/+oANf/zADb/+wA3//oAOP/nADn/9wA6//4AO//uADz/+QA9//oAPv/7AD//+QBA/+8AQf/3AEL/6QBD//oARP/sAEX/8wBG//gAR//pAEj/6QBJ/+MASv/nAEv//QAqAAf/9gAI//sACf/sAAr/9wAL/+wADP/7AA7/+gAP//EAEP/2ABH/7AAS//EAE//2ABT/9gAV/+QAFwABADH/8QAy/+kAM//3ADT/6QA1//kANv/5ADf/+QA4/+8AOf/6ADr//gA7/+8APP/7AD3/+gA+//oAP//4AED/7wBB//sAQv/rAEP//QBE/+8ARf/3AEb/+gBH/+4ASP/rAEn/4QBK/+wAS//5ACsAB//xAAj/4gAJ/9gACv/sAAv/2AAM//YADf/iAA7/8QAP/90AEP/iABH/0wAS/+IAE//JABT/4gAV/94AJP/7ADH/3QAy/7QAM//pADT/4QA1/+wANv/vADf/6gA4/+IAOf/qADr/+gA7/9oAPP/pAD3/6wA+/+wAP//pAED/4QBB/+sAQv/cAEP/6wBE/+IARf/JAEb/7gBH/7wASP/BAEn/pgBK/7UAS//kACwAB//iAAj/5wAJ/+IACv/OAAv/2AAM/+cADf/nAA7/8AAP/90AEP+6ABH/xAAS/9cAE//XABT/2AAV/9gAG//3ACT/+wAx/+IAMv+gADP/6QA0/+MANf/mADb/7wA3/+sAOP/aADn/6AA6//YAO/+xADz/6wA9/+4APv/oAD//7wBA/9oAQf/oAEL/1wBD/+MARP/aAEX/2ABG/+cAR//PAEj/yQBJ/7kASv/BAEv/6AApAAf/8QAI/+wACf/OAAr/6gAL/84ADP/nAA3/2AAO//YAD//fABD/4gAR/9gAEv/lABP/5wAU/+IAFf/YADH/4gAy/+cAM//3ADT/2gA1//gANv/5ADf/+wA4/9wAOf/3ADr//gA7/+MAPP/3AD3//QA+//cAP//3AED/1QBC/9UAQ//9AET/6QBF/+EARv/pAEf/ugBI/8QASf/aAEr/wgBL//sAKwAH/8kACP/YAAn/xAAK/9MAC/+/AAz/yQAN/9gADv/nAA//xAAQ/7oAEf+1ABL/wQAT/9gAFP+6ABX/vwAk//sAMf+/ADL/2gAz/+gANP/KADX/6QA2/+kAN//oADj/xgA5/+QAOv/nADv/uQA8/+wAPf/uAD7/6QA//+cAQP/GAEH/7ABC/8kAQ//mAET/2ABF/84ARv/VAEf/wQBI/7wASf/GAEr/tABL/+8AKwAH//EACP/2AAn/yQAK/+oAC//TAAz/3QAN/+cADv/sAA//4gAQ/+IAEf/YABL/3wAT/90AFP/dABX/2AAk//sAMf/nADL/xgAz//MANP/iADX/7wA2/+4AN//3ADj/4wA5/+kAOv/vADv/1wA8/+4APf/zAD7/6gA//+0AQP/kAEH/9wBC/98AQ//qAET/5wBF/9AARv/vAEf/yQBI/9AASf/PAEr/xABL/+8AKQAH/+cACP/sAAn/5wAK/+kAC//dAAz/2AAO/+wAD//XABD/qwAR/8kAEv/AABP/9gAU/9MAFf/OADH/2AAy/7AAM//5ADT/2gA1//0ANv/6ADf//gA4/98AOf/3ADr//QA7/8YAPP/7AD3//gA+//gAP//4AED/1QBB//0AQv/VAEP/+ABE/+MARf/zAEb/+QBH/+4ASP/zAEn/4gBK/+cAS//zACkACP/2AAn/5wAK//QAC//sAAz/+wAN//4ADv/2AA//5QAQ/+wAEf/nABL/8wAT//EAFP/nABX/3QAx/+QAMv/KADP/+QA0/+wANf/6ADb/+gA3//sAOP/vADn/+gA6AAAAO//hADz//wA9//0APv/5AD///gBA/+wAQf/7AEL/7ABD//sARP/vAEX/9wBG//sAR//zAEj/6gBJ/+EASv/jAEv/+wArAAf/zgAI/84ACf/YAAr/ygAL/9gADP/JAA3/+wAO/9kAD//JABD/ogAR/7oAEv+5ABP/5wAU/8QAFf+9ACT/+wAx/7oAMv+FADP/+wA0/7sANf/qADb/6wA3/+wAOP++ADn/5gA6/+8AO/+iADz/6AA9/+oAPv/sAD//7wBA/8MAQf/mAEL/uwBD/+YARP/KAEX/6QBG/+8AR//jAEj/3wBJ/9MASv/hAEv/6wApAAf/zgAI/84ACf/TAAv/2AAM/84ADv/eAA//xAAQ/7AAEf/TABL/sQAT/+wAFP/FABX/yQAk//sAMf/JADL/lQAz//MANP/BADX/+QA2//MAN//3ADj/xgA5//sAOv/3ADv/pQA8/+8APf/+AD7/7gA//+oAQP/DAEH/7gBC/8QAQ//vAET/0ABF/+4ARv/uAEf/6QBI/+QASf/aAEr/5gBL//cAKgAH/8QACP/OAAn/pgAL/7oADP+rAA3/3QAO/+cAD/+5ABD/twAR/8QAEv+zABP/0wAU/7AAFf+cACT/+wAx/6EAMv/aADP/4wA0/7cANf/4ADb/4wA3//0AOP+3ADn/7gA6/+8AO/+7ADz/7gA9//EAPv/jAD//6ABA/7oAQf/zAEL/uQBD/+sARP/OAEX/3wBG/+EAR//aAEj/2ABJ/9gASv/MAEv/7gAsAAf/yQAI/84ACf/JAAr/wgAL/8kADP/JAA3//gAO/8kAD/+6ABD/jQAR/7oAEv+gABP/4gAU/7UAFf+6AB7/8QAk//sAMf+1ADL/lwAz/+8ANP+7ADX/5gA2/+4AN//uADj/uQA5/+gAOv/3ADv/hAA8/+8APf/sAD7/7AA//+oAQP+6AEH/7ABC/7kAQ//pAET/ygBF/+8ARv/vAEf/6ABI/+kASf/fAEr/5ABL//EAJgAH//YACf/iAAr/7AAL/+cADP/iAA3//wAO//UAD//nABD/7AAR/+IAEv/gABP/7AAU/90AFf/TADH/4gAy/+sAM//+ADT/6AA1//4ANgAEADf//wA4/9wAOf/6ADv/5gA8//8APf//AD///QBA/+MAQf//AEMAAABE/+8ARf/4AEb/+wBH//cASP/rAEn/6QBK/+kAS//9AAIAAQAGAEsAAAAAAAAAAQAAAADUGBYRAAAAANmXsTQAAAAA2ZexNA==",et=n=>Ti("http://www.w3.org/2000/svg",n),Xs=(n,t)=>{const e=et("rect");return e.setAttribute("height",`${n}`),e.setAttribute("width",`${t}`),e},Zs=(n,t,e,a)=>{const r=Ee("filter");r.setAttribute("id",a),r.setAttribute("height","200%"),r.setAttribute("width","200%"),r.setAttribute("x","-50%"),r.setAttribute("y","-50%");const i=Ee("feOffset");r.appendChild(i),i.setAttribute("result","offOut"),i.setAttribute("in","SourceAlpha"),i.setAttribute("dx",`${n}`),i.setAttribute("dy",`${t}`);const o=Ee("feGaussianBlur");r.appendChild(o),o.setAttribute("result","blurOut"),o.setAttribute("in","offOut"),o.setAttribute("stdDeviation",`${e}`);const s=Ee("feBlend");return r.appendChild(s),s.setAttribute("in","SourceGraphic"),s.setAttribute("in2","blurOut"),s.setAttribute("mode","normal"),r},tl=n=>{let t=n;return t=t.replace(/feoffset/gi,"feOffset"),t=t.replace(/fegaussianblur/gi,"feGaussianBlur"),t=t.replace(/feblend/gi,"feBlend"),t=t.replace(/lineargradient/gi,"linearGradient"),t=t.replace(/stddeviation/gi,"stdDeviation"),t};function el(n,t,e,a,r,i){const o=r,s=i,l={x:t[0],y:t[1],width:t[2]-t[0],height:t[3]-t[1]};if(l.width<=0)return;const c=al(l.height,l.width,e*o,a*s),d=(a-c*l.width)/2-c*l.x,u=(e-c*l.height)/2-c*l.y;n.setAttribute("transform",`translate(${d} ${u}) scale(${c} ${c})`)}function al(n,t,e,a){const r=e/n,i=a/t;return r>1&&i>1?Math.min(r,i):r>1&&i<1?i:r<1&&i>1?r:Math.min(r,i)}const fn={m:["x","y"],z:[],l:["x","y"],h:["x"],v:["y"],c:["x1","y1","x2","y2","x","y"],s:["x2","y2","x","y"],q:["x1","y1","x","y"],t:["x","y"],a:["rx","ry","xRotation","largeArc","sweep","x","y"]};class nl{constructor(t){const e=Array.from(t.querySelectorAll("path"));this.paths=e.map(a=>{const r=a.getAttribute("d")||"",i=this.parsePath(r);return{pathElement:a,pathData:i}})}transform(t){for(const e of this.paths)e.pathData=this.runTransformer(e.pathData,t);this.update()}encodePath(t){let e="";const r=i=>{const o=[],s=i.relative?i.type:i.type.toUpperCase();let l=e!==s;const c=fn[i.type];l&&(o.push(s),e=s);for(const d of c){const u=i[d];let A;switch(typeof u){case"boolean":A=u|0;break;case"number":A=(u*100|0)/100;break;default:throw new bt("Failed to encode path.")}l||o.push(" "),o.push(A),l=!1}return o.join("")};return t.map(r).join("")}parsePath(t){const e=/([mzlhvcsqta])([^mzlhvcsqta]*)/gi,a=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi,r=[];let i;for(e.lastIndex=0;i=e.exec(t);){const o=i[1].toLowerCase(),s=(i[2].match(a)||[]).map(parseFloat),l=o===i[1],c=fn[o];if(s.length<c.length)throw new bt(`Path type "${o}" given ${s.length} arguments, expected ${c.length}.`);if(c.length>0){if(s.length%c.length!==0)throw new bt(`Path type "${o}" given ${s.length} arguments, not divisible by ${c.length}`);for(let d=0;d<s.length/c.length;d++){const u={type:o,relative:l};for(let A=0;A<c.length;A++)u[c[A]]=s[d*c.length+A];r.push(u)}}else r.push({type:o,relative:l})}return r}runTransformer(t,e){const a=[["x1","y1"],["x2","y2"],["x","y"]],r=i=>{for(let o=0;o<a.length;o++){const[s,l]=a[o];if(s in i&&l in i){const c=[i[s],i[l]],d=e(c);if(d.length<2)throw new bt("Transformer must return at least 2 points.");i[s]=d[0],i[l]=d[1]}}return i};return this.transformPath(t,r)}transformPath(t,e){const a=[];for(let r=0;r<t.length;r++){const i=JSON.parse(JSON.stringify(t[r])),o=e(i);Array.isArray(o)?a.push(...o):o&&a.push(o)}return a}update(){for(const{pathElement:t,pathData:e}of this.paths){const a=this.encodePath(e);t.setAttribute("d",a)}}}class rl extends Ks{constructor(){super(...arguments),this.moduleName="Vegemite"}svgPreview(t,e){return this.svgElement(t,e)}svgPrint(t,e){return this.svgElement(t,e)}svgElement(t,e){const a=gs(_s),i=t!==""?(I=>I.charAt(0).toUpperCase()+I.substr(1).toLowerCase())(t):"",o=a.getPath(i,0,72,72),s=o.toSVG(2),l=o.getBoundingBox(),c=l.x2-l.x1,d=o.toPathData(3),u=()=>{const I=et("g");I.classList.add("module-text-group");const x=et("defs");I.appendChild(x),x.appendChild(Zs(0,2,2,"shadow"));const b=et("path");b.setAttribute("d",d),b.setAttribute("stroke","black"),b.setAttribute("stroke-width","3"),x.appendChild(b);const E=et("g");E.classList.add("module-layer0"),I.appendChild(E),E.setAttribute("filter","url(#shadow)"),E.innerHTML=b.outerHTML;const S=et("g");S.classList.add("module-layer1"),I.appendChild(S),S.setAttribute("stroke-width","3"),S.setAttribute("stroke","rgb(45,41,38)"),S.setAttribute("fill","rgb(45,41,38)"),S.setAttribute("transform","translate(0.5,0)"),S.innerHTML=s;const B=et("g");B.classList.add("module-layer2"),I.appendChild(B),B.setAttribute("fill","rgb(255,209,0)"),B.setAttribute("transform","translate(1,-0.1)"),B.innerHTML=s;const D=et("g");return D.classList.add("module-layer3"),I.appendChild(D),D.setAttribute("fill","white"),D.innerHTML=s,new nl(I).transform(([N,tt])=>[N,tt+(c/2-N)**2/(c*6)]),I},A=et("g");A.classList.add("module-root");const h=et("defs");A.appendChild(h);const g=et("g");g.classList.add("module-bounds"),A.appendChild(g);const p=Xs(e.height,e.width);p.setAttribute("opacity","0"),g.appendChild(p);const m=et("g");m.classList.add("module-text-enclosure"),A.appendChild(m);const C=u();m.appendChild(C);const w=vi(d);return el(m,w,e.height,e.width,.35,.65),tl(A.outerHTML)}}async function Ir(n){if(n==="Vegemite")return new rl;throw new Q(`Failed to resolve Module, Module ${n} not found`)}const il=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],ol=async(n,t,e)=>{const a=t.data,r=e.data.baseUrl,i=a.assetUrl.replace("localhost","localstack"),o=r.slice(0,4)==="http"?"":"https://",s=new URL(o+r);s.searchParams.append("video",cn(JSON.stringify([{href:i}]))),s.pathname=s.pathname+(s.pathname.slice(-1)==="/"?"":"/");const l=s.toString(),d=`data:image/svg+xml;base64,${cn(await Mn.toString(l,{type:"svg"}))}`,u=h=>{const g=n.find(m=>m.panelId===h.panelId);if(!g)throw new H(h);const p=T();return new z({id:p,src:d,type:k.Image,y:h.top,x:h.left,width:h.width,height:h.height,rotation:0},g)},A=e.data.regions;try{return A.map(u)}catch(h){return console.error(h),[]}},sl=async(n,t,e,a)=>{const r=e.data,i=r.assetUrl,o=await ya(i);try{const s=Is(r,a.option);s&&(t[a.stepName]={selectedVariants:[s]});const l=async c=>{const d=await fr(c,s?.asset?.fileLink),u=await Ce(d),A=T(),h=n.find(p=>p.panelId===c.panelId);if(!h)throw new H(c);const g=Ua(o,u,{scale:r.scale,left:r.x,top:r.y},a.data.forceImageCover);return[new z({id:A,path:u.path,type:k.Frame,forceImageCover:a.data.forceImageCover,x:c.left,y:c.top,width:c.width,height:c.height,layer:c.layer,layerIndex:c.layerIndex,rotation:c.rotation,scaleX:c.width/u.width,scaleY:c.height/u.height,pattern:{id:`${A}-pattern`,src:o.src,x:g.x,y:g.y,width:o.width,height:o.height,rotation:0,scaleX:g.zoom,scaleY:g.zoom,svg:o.svg,colors:o.colors}},h)]};return(await Promise.all(a.data.regions.map(c=>l(c)))).flat()}catch(s){return console.error(s),[]}},ll=async(n,t,e,a)=>{const r=e.data,i=a.option;if(!i)return console.error(`No option for step ${a.stepName}.`),[];const o=i.variants?.find(b=>b.id===r.illustrationVariantId)||fe(i);if(!o)return console.error(`No variant with ID: ${r.illustrationVariantId}`),[];if(!o.asset)return console.error(`No asset for variant with ID: ${r.illustrationVariantId}`),[];t[a.stepName]={selectedVariants:[o]};const s=o.asset?.fileLink;if(!s)return console.error(`No asset link for variant with ID: ${r.illustrationVariantId}`),[];const l=await Z(s,!0),c=/<svg.*?<\/svg>/s,d=l.match(c)||[],u=d?.length>0?d[0]:"",g=ot().parseFromString(u,"image/svg+xml").firstElementChild;if(!g)return console.error("Failed to read SVG."),[];We(g);const p={};$t(g,b=>{il.includes(b.tagName)&&!b.attributes.getNamedItem("fill")&&b.setAttribute("fill","#000000");const E=b.attributes.getNamedItem("fill");if(E&&E.value!=="none"){const B=E.value,F=`spiff-fill-${B.replace(/\W/g,"")}`;b.classList.add(F),p[F]={browserValue:B}}const S=b.attributes.getNamedItem("stroke");if(S&&S.value!=="none"){const B=S.value,F=`spiff-stroke-${B.replace(/\W/g,"")}`;b.classList.add(F),p[F]={browserValue:B}}});const C=St().serializeToString(g),w=r.colors;if(w){for(const[b,E]of Object.entries(p))for(const S of Object.keys(w))if(E.browserValue===S){p[b]={browserValue:w[S]};break}}const I=b=>{const E=n.find(B=>B.panelId===b.panelId);if(!E)throw new H(b);const S=T();return new z({colors:p,id:S,svg:C,type:k.Illustration,y:b.top,x:b.left,rotation:b.rotation,width:b.width,height:b.height,layer:b.layer,layerIndex:b.layerIndex,immutable:b.immutable},E)},x=a.data.regions;try{return x.map(I)}catch(b){return console.error(b),[]}},cl=async(n,t,e)=>{const a=await Ir(e.data.module),r=t.data,i=(s,l)=>{const c=n.find(u=>u.panelId===l.panelId);if(!c)throw new H(l);const d=T();return new z({colors:{},id:d,svg:s,type:k.Illustration,y:l.top,x:l.left,rotation:l.rotation,width:l.width,height:l.height,layer:l.layer,layerIndex:l.layerIndex},c)},o=e.data.regions;try{return o.map(s=>i(a.svgPrint(r.text,s),s))}catch(s){return console.error(s),[]}},dl=async(n,t,e,a)=>{const r=e.data,i=a.option;if(!i)return console.error(`No option for step ${a.stepName}.`),[];const o=i.variants?.find(d=>d.id===r.pictureVariantId)||fe(i);if(!o)return console.error(`No variant with ID: ${r.pictureVariantId}`),[];if(!o.asset)return console.error(`No asset for variant with ID: ${r.pictureVariantId}`),[];t[a.stepName]={selectedVariants:[o]};const s=o.asset?.fileLink;if(!s)return console.error(`No asset link for variant with ID: ${r.pictureVariantId}`),[];const l=d=>{const u=n.find(h=>h.panelId===d.panelId);if(!u)throw new H(d);const A=T();return new z({id:A,src:s,type:k.Image,y:d.top,x:d.left,rotation:d.rotation,width:d.width,height:d.height,layer:d.layer,layerIndex:d.layerIndex,immutable:d.immutable,preserveAspectRatio:"none"},u)},c=a.data.regions;try{return c.map(l)}catch(d){return console.error(d),[]}},ul=async(n,t,e,a)=>{const r=e.data,i=a.option;if(!i)return console.error(`No option for step ${a.stepName}.`),[];const o=i.variants?.find(c=>c.id===r.colorVariantId)||fe(i);if(!o)return console.error(`No variant with ID: ${r.colorVariantId}`),[];t[a.stepName]={selectedVariants:[o]};const s=c=>{const d=n.find(p=>p.panelId===c.panelId);if(!d)throw new H(c);const u=`
1507
1515
  <svg
1508
1516
  xmlns="http://www.w3.org/2000/svg"
1509
1517
  xmlnsXlink="http://www.w3.org/1999/xlink"
@@ -1523,8 +1531,8 @@
1523
1531
  fill="${o?.color}"
1524
1532
  />
1525
1533
  </svg>
1526
- `,h={"spiff-fill-shape":{browserValue:o.color||"#000000"}},g=M();return new z({colors:h,id:g,svg:u,type:D.Illustration,y:c.top,x:c.left,rotation:c.rotation,width:c.width,height:c.height,layer:c.layer,layerIndex:c.layerIndex,immutable:c.immutable},d)},l=a.data.regions;try{return l.map(s)}catch(c){return console.error(c),[]}},dl=async(n,t,e)=>{const a=[],i=t.type===v.ProductOverlay?e||t.data.asset?.fileLink||"":t.data.asset?.fileLink||"",s=i.endsWith(".jpeg")||i.endsWith(".jpg")||i.endsWith(".png")?D.Image:(i.endsWith(".svg"),D.Illustration),l=t.data.regions;if(s==="image")try{l.forEach(c=>{const d=n.find(A=>A.panelId===c.panelId);if(!d)throw new W(c);const u={id:M(),src:i,type:s,y:c.top,x:c.left,width:c.width,height:c.height,layer:c.layer,layerIndex:c.layerIndex,productOverlay:t.type===v.ProductOverlay?!0:void 0,scaleX:1,scaleY:1,rotation:c.rotation,excludeFromExport:t.data.excludeFromPrint,preserveAspectRatio:"none"};a.push(new z(u,d))})}catch(c){console.error(c)}else{const c=await tt(i,!0),d=u=>{const A=/<svg.*?<\/svg>/s,h=u.match(A)||[],g=h?.length>0?h[0]:"",f=lt().parseFromString(g,"image/svg+xml").firstElementChild;if(!f)throw new Et("Failed to read SVG.");return je(f),yt().serializeToString(f)};l.forEach(u=>{const A=n.find(g=>g.panelId===u.panelId);if(!A)throw new W(u);const h={id:M(),src:i,asset_key:i,svg:d(c),colors:{},type:s,y:u.top,x:u.left,width:u.width,height:u.height,layer:u.layer,layerIndex:u.layerIndex,scaleX:1,scaleY:1,rotation:u.rotation,productOverlay:t.type===v.ProductOverlay?!0:void 0,excludeFromExport:t.data.excludeFromPrint};a.push(new z(h,A))})}return a},ul=async(n,t,e,a)=>{const r=[],i=e.data,o=30,s=m=>m.vertical?"center":m.textAlign||"center",l=()=>{const m=a.option;if(!m)return;const f=m.variants?.find(b=>b.id===i.fontVariantId)||pe(m);if(!f||!f.asset)return;t[a.stepName]={selectedVariants:[f]};const w=f.asset.fileLink;if(w)return w},d=await(async()=>{const m=l();if(!m)return;const f=await Pt(m);return{assetUrl:m,name:f.names.fullName.en}})(),u=(a.data.replaceableText?a.data.replaceableText.replace("{{}}",i.text):i.text)||"",A=Ne(u,{vertical:a.data.vertical,uppercase:a.data.uppercase}),h=async m=>{const f=m.colorOption;return f?j.getDefaultVariant(f)?.color:void 0},g=i.color||await h(a.data),p=a.data.regions;for(const m of p){const f=n.find(b=>b.panelId===m.panelId);if(!f)continue;const w={stepName:e.name,id:M(),align:s(a.data),curved:a.data.curved,fill:i.color||g||"#000000",fontData:d,fontSize:a.data.size||o,height:m.height,layer:m.layer,layerIndex:m.layerIndex,paths:a.data.paths,rotation:m.rotation,text:A,type:D.Textbox,vertical:a.data.vertical,verticalAlign:a.data.verticalAlign||"middle",width:m.width,x:m.left,y:m.top};if(d){const[b,F]=_t(a.data.size||o,d,m,[Ne(A,{vertical:a.data.vertical,uppercase:a.data.uppercase})],{size:a.data.size,minSize:a.data.minSize,maxSize:a.data.maxSize});r.push(new z({...w,fontSize:b,text:w.curved?w.text:(F||[]).join(`
1527
- `)},f))}else r.push(new z(w,f))}return r},Al=(n,t)=>n.conditions?n.conditions.every(e=>{const a=t[e.targetStepName];if(a&&a.selectedVariants){const r=a.selectedVariants;return e.requiredVariantSelections.some(i=>r.find(o=>o.id===i)!==void 0)}return!1}):!0,Ir=async(n,t,e,a)=>{const r=[],i={};for(const o of n){const s=t.steps.find(l=>l.stepName===o.name);if(s)switch(s.type){case v.DigitalContent:r.push(...await rl(e,o,s));break;case v.Frame:case v.Photo:r.push(...await il(e,i,o,s));break;case v.Illustration:r.push(...await ol(e,i,o,s));break;case v.Module:r.push(...await sl(e,o,s));break;case v.Picture:r.push(...await ll(e,i,o,s));break;case v.Shape:r.push(...await cl(e,i,o,s));break;case v.Text:r.push(...await ul(e,i,o,s));break}}for(const o of t.steps)o.type!==v.SilentIllustration&&o.type!==v.ProductOverlay||Al(o,i)&&r.push(...await dl(e,o,a));return r};class hl{constructor(t){this.handleCompleteRender=null;const e=new Map;t.forEach(a=>e.set(a.id,new pl(a.id,a.name,this,{width:a.width,height:a.height},this.getWorkflowManager.bind(this)))),this.layouts=e}setCompleteRenderCallback(t){this.handleCompleteRender=t,t(Array.from(this.layouts.values()))}onCompleteRender(){this.handleCompleteRender&&this.handleCompleteRender(Array.from(this.layouts.values()))}getAll(){return this.layouts}setWorkflowManager(t){this.workflowManager=t}getWorkflowManager(){return this.workflowManager}}const gl=()=>new Promise((n,t)=>{try{const a=ft().getContext("webgl2");n(!!a)}catch{n(!1)}}),ml=gl();class pl{constructor(t,e,a,r,i){this.hasSetStaticContext=!1,this.interactiveDirty=!1,this.staticCtxDirty=!1,this.lastRequestedRenderArguments=void 0,this.lastCompletedStaticRender=void 0,this.renderQueue=new Ra(2),this.id=t,this.name=e,this.service=a,this.panelSize=r,this.getWorkflowManager=i}getID(){return this.id}getName(){return this.name}getPanelSize(){return this.panelSize}getStaticContext(){return this.textureCtx}setStaticContext(t){this.textureCtx=t,this.lastRequestedRenderArguments&&this.render(this.lastRequestedRenderArguments)}getStaticContextDirty(){return this.staticCtxDirty}setStaticContextDirty(t){this.staticCtxDirty=t}getInteractiveCanvasDirty(){return this.interactiveDirty}setInteractiveCanvasDirty(t){this.interactiveDirty=t}markLastCompletedStaticRender(){this.lastCompletedStaticRender=Date.now(),this.service.onCompleteRender()}getLastCompletedStaticRender(){return this.lastCompletedStaticRender}async render(t){const e=Bt(t);this.lastRequestedRenderArguments=e;const a=this.getStaticContext();if(!a){this.markLastCompletedStaticRender(),this.setStaticContextDirty(!1);return}this.renderQueue.enqueue(new fl(this.getID(),a,await ml,()=>{this.markLastCompletedStaticRender(),this.setStaticContextDirty(!0)},e,this.getWorkflowManager))}}class fl extends Qa{constructor(t,e,a,r,i,o){super(),this.layoutId=t,this.ctx=e,this.nonPOTSupport=a,this.onRender=r,this.layouts=i,this.getWorkflowManager=o}getDynamicTextureResolution(){return this.getIsMobile()||!this.offscreenRenderingSupported()?{width:1024,height:1024}:{width:2048,height:2048}}getIsMobile(){return window.innerWidth<=480}offscreenRenderingSupported(){return navigator.userAgent.includes("SamsungBrowser")?!1:!!window.Worker&&!!window.OffscreenCanvas}resizeFit(t,e=4096){const a=e/t.width,r=e/t.height,i=Math.min(a,r);return i>1?t:{width:t.width*i,height:t.height*i}}async execute(){const t=this.layouts.find(g=>g.layoutState.layout.id===this.layoutId);if(!t)return;const e=t.layoutState.elements||[],a=t.layoutState.layout.width,r=t.layoutState.layout.height,i=a===1||r===1?{width:1,height:1}:this.getDynamicTextureResolution(),o=i.width,s=i.height;let l,c;if(this.nonPOTSupport){const g=o/s;a/r<g?(l=o,c=r*(o/a)):(l=a*(s/r),c=s);const m=this.resizeFit({width:l,height:c});l=m.width,c=m.height}else l=i.width,c=i.height;const d=this.getWorkflowManager?.()?.getTemplatingContext(),u=Ye(t.layoutState.layout,e,{renderingConfiguration:{purpose:Nt.ThreeD,templatingContext:d}}),A=qn(u),h=await xa.Pith.from(this.ctx,A,{anonymousCrossOrigin:!0,ignoreDimensions:!this.nonPOTSupport,ignoreAnimation:!0,ignoreClear:!0,ignoreMouse:!0,enableRedraw:!1,createCanvas:ft,createImage:ue,DOMParser:Ma(),fetch});h.resize(l,c),await h.render(),this.onRender()}}const Cl=(n,t)=>{const e=[];return n.forEach(a=>{const r=t.steps.find(i=>i.stepName===a.stepName);r?.type===v.Text&&a.stepAspectType==="Text"&&e.push({name:r.stepName,data:{text:a.value}})}),e},wl=async(n,t,e,a)=>{let r={serializableWorkflow:{steps:[]},layouts:{}};r=new R(e.map(l=>new Va(l))).apply(r);const o=await Ir(n,t,e,a);return new R(o).apply(r)},Ce=C.gql`
1534
+ `,h={"spiff-fill-shape":{browserValue:o.color||"#000000"}},g=T();return new z({colors:h,id:g,svg:u,type:k.Illustration,y:c.top,x:c.left,rotation:c.rotation,width:c.width,height:c.height,layer:c.layer,layerIndex:c.layerIndex,immutable:c.immutable},d)},l=a.data.regions;try{return l.map(s)}catch(c){return console.error(c),[]}},Al=async(n,t,e)=>{const a=[],i=t.type===v.ProductOverlay?e||t.data.asset?.fileLink||"":t.data.asset?.fileLink||"",s=i.endsWith(".jpeg")||i.endsWith(".jpg")||i.endsWith(".png")?k.Image:(i.endsWith(".svg"),k.Illustration),l=t.data.regions;if(s==="image")try{l.forEach(c=>{const d=n.find(A=>A.panelId===c.panelId);if(!d)throw new H(c);const u={id:T(),src:i,type:s,y:c.top,x:c.left,width:c.width,height:c.height,layer:c.layer,layerIndex:c.layerIndex,productOverlay:t.type===v.ProductOverlay?!0:void 0,scaleX:1,scaleY:1,rotation:c.rotation,excludeFromExport:t.data.excludeFromPrint,preserveAspectRatio:"none"};a.push(new z(u,d))})}catch(c){console.error(c)}else{const c=await Z(i,!0),d=u=>{const A=/<svg.*?<\/svg>/s,h=u.match(A)||[],g=h?.length>0?h[0]:"",C=ot().parseFromString(g,"image/svg+xml").firstElementChild;if(!C)throw new bt("Failed to read SVG.");return We(C),St().serializeToString(C)};l.forEach(u=>{const A=n.find(g=>g.panelId===u.panelId);if(!A)throw new H(u);const h={id:T(),src:i,asset_key:i,svg:d(c),colors:{},type:s,y:u.top,x:u.left,width:u.width,height:u.height,layer:u.layer,layerIndex:u.layerIndex,scaleX:1,scaleY:1,rotation:u.rotation,productOverlay:t.type===v.ProductOverlay?!0:void 0,excludeFromExport:t.data.excludeFromPrint};a.push(new z(h,A))})}return a},hl=async(n,t,e,a)=>{const r=[],i=e.data,o=30,s=m=>m.vertical?"center":m.textAlign||"center",l=()=>{const m=a.option;if(!m)return;const C=m.variants?.find(I=>I.id===i.fontVariantId)||fe(m);if(!C||!C.asset)return;t[a.stepName]={selectedVariants:[C]};const w=C.asset.fileLink;if(w)return w},d=await(async()=>{const m=l();if(!m)return;const C=await xt(m);return{assetUrl:m,name:C.names.fullName.en}})(),u=(a.data.replaceableText?a.data.replaceableText.replace("{{}}",i.text):i.text)||"",A=Qe(u,{vertical:a.data.vertical,uppercase:a.data.uppercase}),h=async m=>{const C=m.colorOption;return C?W.getDefaultVariant(C)?.color:void 0},g=i.color||await h(a.data),p=a.data.regions;for(const m of p){const C=n.find(I=>I.panelId===m.panelId);if(!C)continue;const w={stepName:e.name,id:T(),align:s(a.data),curved:a.data.curved,fill:i.color||g||"#000000",fontData:d,fontSize:a.data.size||o,height:m.height,layer:m.layer,layerIndex:m.layerIndex,paths:a.data.paths,rotation:m.rotation,text:A,type:k.Textbox,vertical:a.data.vertical,verticalAlign:a.data.verticalAlign||"middle",width:m.width,x:m.left,y:m.top};if(d){const[I,x]=Zt(a.data.size||o,d,m,[Qe(A,{vertical:a.data.vertical,uppercase:a.data.uppercase})],{size:a.data.size,minSize:a.data.minSize,maxSize:a.data.maxSize});r.push(new z({...w,fontSize:I,text:w.curved?w.text:(x||[]).join(`
1535
+ `)},C))}else r.push(new z(w,C))}return r},gl=(n,t)=>n.conditions?n.conditions.every(e=>{const a=t[e.targetStepName];if(a&&a.selectedVariants){const r=a.selectedVariants;return e.requiredVariantSelections.some(i=>r.find(o=>o.id===i)!==void 0)}return!1}):!0,Pr=async(n,t,e,a)=>{const r=[],i={};for(const o of n){const s=t.steps.find(l=>l.stepName===o.name);if(s)switch(s.type){case v.DigitalContent:r.push(...await ol(e,o,s));break;case v.Frame:case v.Photo:r.push(...await sl(e,i,o,s));break;case v.Illustration:r.push(...await ll(e,i,o,s));break;case v.Module:r.push(...await cl(e,o,s));break;case v.Picture:r.push(...await dl(e,i,o,s));break;case v.Shape:r.push(...await ul(e,i,o,s));break;case v.Text:r.push(...await hl(e,i,o,s));break}}for(const o of t.steps)o.type!==v.SilentIllustration&&o.type!==v.ProductOverlay||gl(o,i)&&r.push(...await Al(e,o,a));return r};class ml{constructor(t){this.handleCompleteRender=null;const e=new Map;t.forEach(a=>e.set(a.id,new Cl(a.id,a.name,this,{width:a.width,height:a.height},this.getWorkflowManager.bind(this)))),this.layouts=e}setCompleteRenderCallback(t){this.handleCompleteRender=t,t(Array.from(this.layouts.values()))}onCompleteRender(){this.handleCompleteRender&&this.handleCompleteRender(Array.from(this.layouts.values()))}getAll(){return this.layouts}setWorkflowManager(t){this.workflowManager=t}getWorkflowManager(){return this.workflowManager}}const pl=()=>new Promise((n,t)=>{try{const a=Ct().getContext("webgl2");n(!!a)}catch{n(!1)}}),fl=pl();class Cl{constructor(t,e,a,r,i){this.hasSetStaticContext=!1,this.interactiveDirty=!1,this.staticCtxDirty=!1,this.lastRequestedRenderArguments=void 0,this.lastCompletedStaticRender=void 0,this.renderQueue=new Oa(2),this.id=t,this.name=e,this.service=a,this.panelSize=r,this.getWorkflowManager=i}getID(){return this.id}getName(){return this.name}getPanelSize(){return this.panelSize}getStaticContext(){return this.textureCtx}setStaticContext(t){this.textureCtx=t,this.lastRequestedRenderArguments&&this.render(this.lastRequestedRenderArguments)}getStaticContextDirty(){return this.staticCtxDirty}setStaticContextDirty(t){this.staticCtxDirty=t}getInteractiveCanvasDirty(){return this.interactiveDirty}setInteractiveCanvasDirty(t){this.interactiveDirty=t}markLastCompletedStaticRender(){this.lastCompletedStaticRender=Date.now(),this.service.onCompleteRender()}getLastCompletedStaticRender(){return this.lastCompletedStaticRender}async render(t){const e=It(t);this.lastRequestedRenderArguments=e;const a=this.getStaticContext();if(!a){this.markLastCompletedStaticRender(),this.setStaticContextDirty(!1);return}this.renderQueue.enqueue(new wl(this.getID(),a,await fl,()=>{this.markLastCompletedStaticRender(),this.setStaticContextDirty(!0)},e,this.getWorkflowManager))}}class wl extends Ra{constructor(t,e,a,r,i,o){super(),this.layoutId=t,this.ctx=e,this.nonPOTSupport=a,this.onRender=r,this.layouts=i,this.getWorkflowManager=o}getDynamicTextureResolution(){return this.getIsMobile()||!this.offscreenRenderingSupported()?{width:1024,height:1024}:{width:2048,height:2048}}getIsMobile(){return window.innerWidth<=480}offscreenRenderingSupported(){return navigator.userAgent.includes("SamsungBrowser")?!1:!!window.Worker&&!!window.OffscreenCanvas}resizeFit(t,e=4096){const a=e/t.width,r=e/t.height,i=Math.min(a,r);return i>1?t:{width:t.width*i,height:t.height*i}}async execute(){const t=this.layouts.find(g=>g.layoutState.layout.id===this.layoutId);if(!t)return;const e=t.layoutState.elements||[],a=t.layoutState.layout.width,r=t.layoutState.layout.height,i=a===1||r===1?{width:1,height:1}:this.getDynamicTextureResolution(),o=i.width,s=i.height;let l,c;if(this.nonPOTSupport){const g=o/s;a/r<g?(l=o,c=r*(o/a)):(l=a*(s/r),c=s);const m=this.resizeFit({width:l,height:c});l=m.width,c=m.height}else l=i.width,c=i.height;const d=this.getWorkflowManager?.()?.getTemplatingContext(),u=Je(t.layoutState.layout,e,{renderingConfiguration:{purpose:Qt.ThreeD,templatingContext:d}}),A=Gn(u),h=await Fa.Pith.from(this.ctx,A,{anonymousCrossOrigin:!0,ignoreDimensions:!this.nonPOTSupport,ignoreAnimation:!0,ignoreClear:!0,ignoreMouse:!0,enableRedraw:!1,createCanvas:Ct,createImage:he,DOMParser:Ta(),fetch});h.resize(l,c),await h.render(),this.onRender()}}const yl=(n,t)=>{const e=[];return n.forEach(a=>{const r=t.steps.find(i=>i.stepName===a.stepName);r?.type===v.Text&&a.stepAspectType==="Text"&&e.push({name:r.stepName,data:{text:a.value}})}),e},Sl=async(n,t,e,a)=>{let r={serializableWorkflow:{steps:[]},layouts:{}};r=new O(e.map(l=>new za(l))).apply(r);const o=await Pr(n,t,e,a);return new O(o).apply(r)},we=f.gql`
1528
1536
  fragment GlobalPropertyStateAspectFields on GlobalPropertyStateAspect {
1529
1537
  name
1530
1538
  value
@@ -1546,8 +1554,8 @@
1546
1554
  }
1547
1555
  }
1548
1556
  }
1549
- `,yl=C.gql`
1550
- ${Ce}
1557
+ `,vl=f.gql`
1558
+ ${we}
1551
1559
  mutation CreateGlobalPropertyState($bundleId: String!) {
1552
1560
  globalPropertyStateCreate(bundleId: $bundleId) {
1553
1561
  id
@@ -1556,8 +1564,8 @@
1556
1564
  }
1557
1565
  }
1558
1566
  }
1559
- `,Sl=C.gql`
1560
- ${Ce}
1567
+ `,El=f.gql`
1568
+ ${we}
1561
1569
  mutation UpdateGlobalPropertyState($id: String!, $aspects: [GlobalPropertyStateAspectInput]!) {
1562
1570
  globalPropertyStateUpdate(id: $id, aspects: $aspects) {
1563
1571
  id
@@ -1566,8 +1574,8 @@
1566
1574
  }
1567
1575
  }
1568
1576
  }
1569
- `,vl=C.gql`
1570
- ${Ce}
1577
+ `,bl=f.gql`
1578
+ ${we}
1571
1579
  query GetGlobalPropertyState($bundleId: String!) {
1572
1580
  globalPropertyState(bundleId: $bundleId) {
1573
1581
  id
@@ -1576,8 +1584,8 @@
1576
1584
  }
1577
1585
  }
1578
1586
  }
1579
- `,El=async n=>(await S.getShadowGraphqlClient().query({query:vl,fetchPolicy:"cache-first",errorPolicy:"all",variables:{bundleId:n}})).data.globalPropertyState,bl=n=>C.gql`
1580
- ${ge}
1587
+ `,Bl=async n=>(await y.getShadowGraphqlClient().query({query:bl,fetchPolicy:"cache-first",errorPolicy:"all",variables:{bundleId:n}})).data.globalPropertyState,Il=n=>f.gql`
1588
+ ${Vt}
1581
1589
  fragment ProductFields on Product {
1582
1590
  id
1583
1591
  basePrice
@@ -1621,8 +1629,8 @@
1621
1629
  name
1622
1630
  }
1623
1631
  }
1624
- `,Ya=n=>C.gql`
1625
- ${bl(n)}
1632
+ `,Ja=n=>f.gql`
1633
+ ${Il(n)}
1626
1634
  fragment ProductCollectionProductFields on ProductCollectionProduct {
1627
1635
  id
1628
1636
  productId
@@ -1631,8 +1639,8 @@
1631
1639
  ...ProductFields
1632
1640
  }
1633
1641
  }
1634
- `,we=(n,t=!1)=>C.gql`
1635
- ${n?Ya(t):""}
1642
+ `,ye=(n,t=!1)=>f.gql`
1643
+ ${n?Ja(t):""}
1636
1644
  fragment ProductCollectionFields on ProductCollection {
1637
1645
  id
1638
1646
  name
@@ -1702,7 +1710,7 @@
1702
1710
  }
1703
1711
  }
1704
1712
  }
1705
- `,Pr=C.gql`
1713
+ `,xr=f.gql`
1706
1714
  fragment BundleBaseFields on Bundle {
1707
1715
  id
1708
1716
  dispatchDate
@@ -1721,10 +1729,10 @@
1721
1729
  workflowViewerLink
1722
1730
  workflowViewerAmendLink
1723
1731
  }
1724
- `,Bl=n=>C.gql`
1725
- ${Ce}
1726
- ${we(n)}
1727
- ${Pr}
1732
+ `,Pl=n=>f.gql`
1733
+ ${we}
1734
+ ${ye(n)}
1735
+ ${xr}
1728
1736
  query GetBundle($id: String!) {
1729
1737
  globalPropertyState(bundleId: $id) {
1730
1738
  id
@@ -1758,7 +1766,7 @@
1758
1766
  }
1759
1767
  }
1760
1768
  }
1761
- `,fn=C.gql`
1769
+ `,Cn=f.gql`
1762
1770
  query GetBundleStakeholders($id: String!) {
1763
1771
  bundles(ids: [$id]) {
1764
1772
  id
@@ -1803,7 +1811,7 @@
1803
1811
  }
1804
1812
  }
1805
1813
  }
1806
- `,Il=C.gql`
1814
+ `,xl=f.gql`
1807
1815
  query GetBundlesForCustomer($id: String!) {
1808
1816
  customers(ids: [$id]) {
1809
1817
  bundleStakeholders {
@@ -1832,8 +1840,8 @@
1832
1840
  }
1833
1841
  }
1834
1842
  }
1835
- `,Pl=C.gql`
1836
- ${Ya(!1)}
1843
+ `,Fl=f.gql`
1844
+ ${Ja(!1)}
1837
1845
  query GetProductCollectionProducts($id: String!, $productIds: [String!]) {
1838
1846
  productCollections(ids: [$id], productIds: $productIds) {
1839
1847
  id
@@ -1842,7 +1850,7 @@
1842
1850
  }
1843
1851
  }
1844
1852
  }
1845
- `,xl=C.gql`
1853
+ `,Dl=f.gql`
1846
1854
  query GetProductCollectionForFilteredProducts(
1847
1855
  $id: String!
1848
1856
  $filters: ProductCollectionProductFilterInput
@@ -1865,8 +1873,8 @@
1865
1873
  }
1866
1874
  }
1867
1875
  }
1868
- `,Fl=C.gql`
1869
- ${Ya(!0)}
1876
+ `,kl=f.gql`
1877
+ ${Ja(!0)}
1870
1878
  query GetProductCollectionForProductsFeed(
1871
1879
  $id: String!
1872
1880
  $limit: Int
@@ -1897,8 +1905,8 @@
1897
1905
  }
1898
1906
  }
1899
1907
  }
1900
- `,Dl=n=>C.gql`
1901
- ${we(n)}
1908
+ `,Ml=n=>f.gql`
1909
+ ${ye(n)}
1902
1910
  mutation CreateBundle(
1903
1911
  $collectionId: String
1904
1912
  $initialMetadata: [MetadataInput!]
@@ -1926,9 +1934,9 @@
1926
1934
  }
1927
1935
  }
1928
1936
  }
1929
- `,kl=n=>C.gql`
1930
- ${Ce}
1931
- ${we(n)}
1937
+ `,Tl=n=>f.gql`
1938
+ ${we}
1939
+ ${ye(n)}
1932
1940
  mutation DuplicateBundle(
1933
1941
  $id: String!
1934
1942
  $template: Boolean
@@ -1969,7 +1977,7 @@
1969
1977
  }
1970
1978
  }
1971
1979
  }
1972
- `,Cn=C.gql`
1980
+ `,wn=f.gql`
1973
1981
  mutation UpdateBundle(
1974
1982
  $id: String!
1975
1983
  $name: String
@@ -1989,19 +1997,19 @@
1989
1997
  id
1990
1998
  }
1991
1999
  }
1992
- `,Ml=C.gql`
2000
+ `,Nl=f.gql`
1993
2001
  mutation BundleAddTransaction($id: String!, $transactionId: String!) {
1994
2002
  bundleAddTransaction(id: $id, transactionId: $transactionId) {
1995
2003
  id
1996
2004
  }
1997
2005
  }
1998
- `,Tl=C.gql`
2006
+ `,Ql=f.gql`
1999
2007
  mutation BundleAddTransactions($id: String!, $transactionIds: [String!]!, $transactionOwnerIds: [String!]) {
2000
2008
  bundleAddTransactions(id: $id, transactionIds: $transactionIds, transactionOwnerIds: $transactionOwnerIds) {
2001
2009
  id
2002
2010
  }
2003
2011
  }
2004
- `,Nl=C.gql`
2012
+ `,Rl=f.gql`
2005
2013
  mutation BundleRemoveTransaction(
2006
2014
  $id: String!
2007
2015
  $transactionId: String!
@@ -2016,7 +2024,7 @@
2016
2024
  id
2017
2025
  }
2018
2026
  }
2019
- `,Ql=C.gql`
2027
+ `,Ol=f.gql`
2020
2028
  mutation BundleRemoveTransactions(
2021
2029
  $id: String!
2022
2030
  $transactionIds: [String!]!
@@ -2031,7 +2039,7 @@
2031
2039
  id
2032
2040
  }
2033
2041
  }
2034
- `,Rl=C.gql`
2042
+ `,$l=f.gql`
2035
2043
  mutation BundleAddStakeholder($id: String!, $details: CustomerDetailsInput!, $type: String!) {
2036
2044
  bundleAddStakeholder(id: $id, details: $details, type: $type) {
2037
2045
  id
@@ -2051,13 +2059,13 @@
2051
2059
  }
2052
2060
  }
2053
2061
  }
2054
- `,Ol=C.gql`
2062
+ `,Ul=f.gql`
2055
2063
  mutation BundleAddStakeholder($id: String!, $emailAddress: String!) {
2056
2064
  bundleRemoveStakeholder(id: $id, emailAddress: $emailAddress) {
2057
2065
  id
2058
2066
  }
2059
2067
  }
2060
- `,$l=C.gql`
2068
+ `,Ll=f.gql`
2061
2069
  mutation BundleUpdateStakeholders($id: String!, $input: [BundleStakeholderInput!]!) {
2062
2070
  bundleUpdateStakeholders(id: $id, input: $input) {
2063
2071
  id
@@ -2077,14 +2085,14 @@
2077
2085
  }
2078
2086
  }
2079
2087
  }
2080
- `,Ul=C.gql`
2088
+ `,Vl=f.gql`
2081
2089
  mutation BundleUpdateTransactionOrder($id: String!, $transactionIds: [String!]!) {
2082
2090
  bundleUpdateTransactionOrder(id: $id, transactionIds: $transactionIds) {
2083
2091
  id
2084
2092
  }
2085
2093
  }
2086
- `,Ll=n=>C.gql`
2087
- ${we(n)}
2094
+ `,zl=n=>f.gql`
2095
+ ${ye(n)}
2088
2096
  mutation BundleAssignProductCollection($id: String!, $productCollectionId: String!) {
2089
2097
  bundleAssignProductCollection(id: $id, collectionId: $productCollectionId) {
2090
2098
  id
@@ -2093,14 +2101,14 @@
2093
2101
  }
2094
2102
  }
2095
2103
  }
2096
- `,Vl=C.gql`
2104
+ `,ql=f.gql`
2097
2105
  mutation AssignGlobalPropertyConfiguration($bundleId: String!, $globalPropertyConfigurationId: String!) {
2098
2106
  bundleUpdate(id: $bundleId, globalPropertyConfigurationId: $globalPropertyConfigurationId) {
2099
2107
  id
2100
2108
  }
2101
2109
  }
2102
- `,zl=n=>C.gql`
2103
- ${Pr}
2110
+ `,Gl=n=>f.gql`
2111
+ ${xr}
2104
2112
  query CustomerBundlesFeed($id: String!, $limit: Int!, $offset: Int!, $template: Boolean, $templateStatus: BundleTemplateStatus, $ordered: Boolean) {
2105
2113
  customerBundlesFeed(id: $id, limit: $limit, offset: $offset, template: $template, templateStatus: $templateStatus, ordered: $ordered) {
2106
2114
  items {
@@ -2125,27 +2133,27 @@
2125
2133
  total
2126
2134
  }
2127
2135
  }
2128
- `,ql=C.gql`
2136
+ `,jl=f.gql`
2129
2137
  mutation FinalizeUpdateBundle($bundleId: String!) {
2130
2138
  bundleFinalizeUpdate(bundleId: $bundleId)
2131
2139
  }
2132
- `,Gl=C.gql`
2140
+ `,Wl=f.gql`
2133
2141
  mutation ApproveBundle($id: String!, $note: String, $stakeholderId: String) {
2134
2142
  bundleApprove(id: $id, note: $note, stakeholderId: $stakeholderId)
2135
2143
  }
2136
- `,jl=C.gql`
2144
+ `,Hl=f.gql`
2137
2145
  mutation RejectBundle($id: String!, $note: String, $stakeholderId: String) {
2138
2146
  bundleReject(id: $id, note: $note, stakeholderId: $stakeholderId)
2139
2147
  }
2140
- `,Wl=C.gql`
2148
+ `,Yl=f.gql`
2141
2149
  mutation ApproveTransaction($id: String!, $note: String) {
2142
2150
  transactionApprove(id: $id, note: $note)
2143
2151
  }
2144
- `,Hl=C.gql`
2152
+ `,Jl=f.gql`
2145
2153
  mutation RejectTransaction($id: String!, $note: String) {
2146
2154
  transactionReject(id: $id, note: $note)
2147
2155
  }
2148
- `,Yl=C.gql`
2156
+ `,Kl=f.gql`
2149
2157
  mutation CreateRecipient(
2150
2158
  $firstName: String
2151
2159
  $lastName: String
@@ -2187,7 +2195,7 @@
2187
2195
  id
2188
2196
  }
2189
2197
  }
2190
- `,Jl=C.gql`
2198
+ `,_l=f.gql`
2191
2199
  mutation UpdateRecipient(
2192
2200
  $id: String!
2193
2201
  $firstName: String
@@ -2231,17 +2239,17 @@
2231
2239
  id
2232
2240
  }
2233
2241
  }
2234
- `,Kl=C.gql`
2242
+ `,Xl=f.gql`
2235
2243
  mutation AtttachRecipient($id: String!, $recipientId: String!) {
2236
2244
  transactionAttachRecipient(id: $id, recipientId: $recipientId) {
2237
2245
  id
2238
2246
  }
2239
2247
  }
2240
- `,_l=C.gql`
2248
+ `,Zl=f.gql`
2241
2249
  mutation DeleteBundle($id: String!) {
2242
2250
  bundleDelete(id: $id)
2243
2251
  }
2244
- `;var ye=(n=>(n.Error="Error",n.Warning="Warning",n.Info="Info",n))(ye||{});const Xl=1e3;class wn extends Qa{constructor(t){super(),this.createdAt=new Date,this.update=t}async execute(){await this.update(),await new Promise(t=>{window.setTimeout(()=>{t()},Xl)})}}const Zl=n=>n.sort((t,e)=>t.index-e.index).map(t=>({id:M(),panelId:t.name,name:t.name,title:t.title,index:t.index,createdAt:new Date,updatedAt:new Date,transparentBackground:t.transparentBackground,height:t.height,width:t.width,previewRegion:t.previewRegion,useEditableArea:t.useEditableArea,editableArea:t.editableArea})),tc=(n,t)=>{const e=n.workflowState,a=e?JSON.parse(e):void 0;return a?Object.values(a.layouts).map(r=>r.layout):Zl(t.panels)},Zt=class Zt{constructor(t,e,a,r,i,o=!1,s,l=!1,c=!1,d=!1){this.workflowStatePromiseQueue=new Ra(1),this.initialized=!1,this.readOnly=!1,this.isReloadedTransaction=!1,this.singleVariantsRenderable=!1,this.stepTags={},this.setWorkflow=async A=>{this.confirmedDesign=!1,this.editedSteps={},this.informationResults=[],this.mandatorySteps={},this.pendingUpdates=[],this.selectionCost=0,this.stepSpecificServices={},this.pollers=[],this.allScenes=[],this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.validationErrors={steps:new Map},this.currentAdjustingStepId="",this.reloadedState?this.layouts=Object.values(this.reloadedState.layouts||{}).map(g=>g.layout):A?this.layouts=tc(this.experience.getTransaction(),A):this.layouts=[],this.commandContext.initialize(this.layouts,this.reloadedState),this.renderableContextService=new hl(this.layouts),this.renderableContextService.setWorkflowManager(this),A.steps.forEach(g=>{this.stepTags[g.stepName]=g.tags??[]});const h=this.previewService;this.ejectFromPreviewService(),this.initializationPromise=this.initializeDefaultWorkflowState(A),this.initializationPromise.then(()=>{this.initialized=!0}),this.initializationPromise.catch(g=>{throw console.error(g),this.initialized=!1,new Error("Workflow initialization failed due to an error. See console.")}),this.initializationPromise.finally(()=>this.commandContext.registerStateCallback(()=>{this.updateStateWithServer(),this.renderLayouts()})),h&&await this.injectIntoPreviewService(h,!0)},this.renderLayouts=()=>{if(!this.previewService)return;const A=this.getCommandContext().getAllLayouts(),h=this.getLayoutPreviewService()?.getAll();if(h)for(const[,g]of h)g.render(A)},this.experience=t,this.client=e,this.updateTransaction=a,this.graphQlClient=r,this.reloadedState=i,this.readOnly=o,this.singleVariantsRenderable=c,this.commandContext=new gr,this.confirmCallbacks=[],this.editedCallbacks=[],this.elementsCallbacks=[],this.informationResultCallbacks=[],this.initCallbacks=[],this.mandatoryCallbacks=[],this.makingAdjustmentsCallback=[],this.metadataCallbacks=[],this.selectionCallbacks=[],this.stepSpecificStorageCallbacks={},this.storageCallbacks=[],this.validationCallbacks=[],this.recipientCallbacks=[],this.modelContainer=s,this.confirmedDesign=!1,this.editedSteps={},this.informationResults=[],this.mandatorySteps={},this.pendingUpdates=[],this.selectionCost=0,this.stepSpecificServices={},this.pollers=[],this.allScenes=[],this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.validationErrors={steps:new Map},this.currentAdjustingStepId="",this.isReloadedTransaction=l,d&&(this.workflowStatePromiseQueue.enabled=!1);const u=this.experience.getWorkflow();u&&this.setWorkflow(u)}getTemplatingContext(){const t=this.experience.getTransaction().recipient,e={recipient:t};return this.recipientConversionConfiguration?.requestedDataItems?.forEach(a=>{const r=a.uniqueIdentifier??a.title??"";a.type===Xt.FirstName?e[r]=t?.firstName:a.type===Xt.LastName?e[r]=t?.lastName:a.type===Xt.Custom&&(a.customFieldIndex===1?e[r]=t?.customField1:a.customFieldIndex===2?e[r]=t?.customField2:a.customFieldIndex===3?e[r]=t?.customField3:a.customFieldIndex===4?e[r]=t?.customField4:a.customFieldIndex===5&&(e[r]=t?.customField5),a.option&&(e[r]=a.option.variants?.find(i=>i.id===e[r])?.name))}),e}async updateRecipient(t,e,a,r,i,o,s,l,c,d,u,A,h,g,p,m,f){const w=this.experience.getTransaction();if(w.recipient?.id)this.experience.getTransaction().recipient={id:w.recipient.id,firstName:t??w.recipient.firstName,lastName:e??w.recipient.lastName,address:a??w.recipient.address,suburb:r??w.recipient.suburb,state:i??w.recipient.state,email:o??w.recipient.email,postalCode:s??w.recipient.postalCode,country:l??w.recipient.country,mobile:c??w.recipient.mobile,company:d??w.recipient.company,apartment:u??w.recipient.apartment,customField1:A??w.recipient.customField1,customField2:h??w.recipient.customField2,customField3:g??w.recipient.customField3,customField4:p??w.recipient.customField4,customField5:m??w.recipient.customField5,conversionConfigurationId:f||w.recipient.conversionConfigurationId},this.experience.callEvent($e.RecipientChanged),await this.graphQlClient().mutate({mutation:Jl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:w.recipient.id,firstName:t||w.recipient.firstName,lastName:e||w.recipient.lastName,address:a||w.recipient.address,suburb:r||w.recipient.suburb,state:i||w.recipient.state,email:o||w.recipient.email,postalCode:s||w.recipient.postalCode,country:l||w.recipient.country,mobile:c||w.recipient.mobile,company:d||w.recipient.company,apartment:u||w.recipient.apartment,customField1:A||w.recipient.customField1,customField2:h||w.recipient.customField2,customField3:g||w.recipient.customField3,customField4:p||w.recipient.customField4,customField5:m||w.recipient.customField5,conversionConfigurationId:f||w.recipient.conversionConfigurationId}});else{const b=await this.graphQlClient().mutate({mutation:Yl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{firstName:t,lastName:e,address:a,suburb:r,state:i,email:o,postalCode:s,country:l,mobile:c,company:d,apartment:u,customField1:A,customField2:h,customField3:g,customField4:p,customField5:m,conversionConfigurationId:f}});w.recipient={id:b?.data?.recipientCreate?.id,firstName:t,lastName:e,address:a,suburb:r,state:i,email:o,postalCode:s,country:l,mobile:c,company:d,apartment:u,customField1:A,customField2:h,customField3:g,customField4:p,customField5:m,conversionConfigurationId:f},this.experience.callEvent($e.RecipientChanged),await this.graphQlClient().mutate({mutation:Kl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.experience.getTransaction().id,recipientId:b.data?.recipientCreate?.id},context:{transactionOwnerId:this.experience.getTransaction().transactionOwnerId}})}await this.fetchConversionConfiguration(),this.recipientCallbacks.forEach(b=>b(this.experience.getTransaction().recipient))}async fetchConversionConfiguration(){const t=this.experience.getTransaction().recipient;if(t?.conversionConfigurationId&&!this.recipientConversionConfiguration){const e=Zt.configurationPromiseMap.get(t.conversionConfigurationId);let a;e?a=e:(a=(async()=>(await this.graphQlClient().query({query:Io,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t.conversionConfigurationId}})).data.conversionConfiguration)(),Zt.configurationPromiseMap.set(t.conversionConfigurationId,a));const r=await a;r&&(this.recipientConversionConfiguration=r)}}async initializeDefaultWorkflowState(t){const e=()=>{const s=t.finalizeStepConfig;if(!s)return;const l=s.lookAtAnimation,c=s.modelAnimation;l&&this.previewService?.executeCameraAnimation(l),c&&this.modelContainer?.executeAnimation(c)};this.reloadedState&&this.reloadedState.serializableWorkflow.steps.forEach(s=>{this.storage[s.stepName]=s.storage||{}}),await this.fetchConversionConfiguration(),this.allScenes=await Wo(t);const r=vt(this.allScenes,this.stepSelections).map(s=>s.silentSteps).flat(),{stepElements:i,commands:o}=await this.stepElementsForIntroducedSilentSteps(r,!!this.reloadedState);this.commandContext.apply(new R(o),!0),this.stepElements={...this.stepElements,...i},await this.ensureStepsAreLoaded(),this.isReloadedTransaction||this.updateStateWithServer(),this.renderLayouts(),this.reloadedState&&e()}getWorkflowExperience(){return this.experience}getClient(){return this.client}setWorkflowStateSyncEnabled(t){this.workflowStatePromiseQueue.enabled=t}getInitializationPromise(){return this.initializationPromise}isInitialized(){return this.initialized}addConfirmCallback(t){t(this.confirmedDesign),this.confirmCallbacks.push(t)}addEditedCallback(t){t(this.editedSteps),this.editedCallbacks.push(t)}addElementsCallback(t){t(this.stepElements),this.elementsCallbacks.push(t)}addInformationResultCallback(t){t(this.informationResults),this.informationResultCallbacks.push(t)}addInitCallback(t){t(this.stepInitialised),this.initCallbacks.push(t)}addMandatoryCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}addMetadataCallback(t){t(this.stepMetadata),this.metadataCallbacks.push(t)}async addSelectionCallback(t){t({selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:await this.traversableScenes()}),this.selectionCallbacks.push(t)}addStepSpecificStorageCallback(t,e){Object.keys(this.storage).includes(e)||(this.storage[e]={}),t(this.storage[e]),Object.keys(this.stepSpecificStorageCallbacks).includes(e)||(this.stepSpecificStorageCallbacks[e]=[]),this.stepSpecificStorageCallbacks[e].push(t)}addStorageCallback(t){t(this.storage),this.storageCallbacks.push(t)}addMakingAdjustmentsCallback(t){t(this.currentAdjustingStepId),this.makingAdjustmentsCallback.push(t)}addPoller(t){this.pollers.push(t)}addValidationCallback(t){this.validationCallbacks.push(t),t(this.validationErrors)}addRecipientCallback(t){this.recipientCallbacks.push(t),t(this.experience.getTransaction().recipient)}removeRecipientCallback(t){this.recipientCallbacks=this.recipientCallbacks.filter(e=>e!==t)}getLayouts(){return this.layouts}getAllLayoutData(){return this.commandContext.getAllLayouts().map(t=>t.layoutState)}getLayoutPreviewService(){return this.renderableContextService}getInformationResults(){return this.informationResults}getPreviewService(){return this.previewService}getCommandContext(){return this.commandContext}getRegionElements(t){return this.stepElements[t]||[]}getStepSpecificServices(t){return this.stepSpecificServices[t]}getTransactionCustomer(){return this.ownerCustomer}setTransactionCustomer(t){this.ownerCustomer=t}setTransactionCustomerDetails(t){this.ownerCustomer={...this.ownerCustomer,emailAddress:t.email}}getModelContainer(){return this.modelContainer}setModelContainer(t){(!t||this.previewService&&this.previewService.getAllModels().includes(t))&&(this.modelContainer=t,t&&t.metadata&&t.metadata instanceof Map&&this.modelContainer.metadata.set("workflowManager",this))}getCommandDispatcher(){return t=>this.commandContext.apply(t,!this.initialized)}getWorkflowSelections(){const t={};return this.experience.getWorkflow()?.steps.forEach(e=>{const a=this.stepSelections[e.stepName];a&&a.selectedVariants&&a.selectedVariants.length>0&&(t[e.stepName]={selections:a.selectedVariants})}),t}getStepSelections(){return this.stepSelections}markStepsAsInitialised(t){const e={...this.stepInitialised};t.forEach(a=>{e[a]=!0}),this.stepInitialised=e,this.onInitChange()}getUpdatesPending(){return this.pendingUpdates.length>0}markUpdateCompleted(t){this.pendingUpdates=this.pendingUpdates.filter(e=>e!==t)}markUpdatePending(){const t=M();return this.pendingUpdates=[...this.pendingUpdates,t],t}setEditedStatus(t,e){this.editedSteps={...this.editedSteps,[t]:e},this.onEditedChange()}setInformationResults(t){this.informationResults=[...t],this.onInformationResultChange()}setCurrentAdjustingStepId(t){this.currentAdjustingStepId=t,this.onMakingAdjustmentsChange()}setMandatoryFulfilled(t,e){this.mandatorySteps[t]!==e&&(this.mandatorySteps={...this.mandatorySteps,[t]:e},this.onMandatoryChange())}getMandatoryUnfulfilledSteps(){return vt(this.allScenes,this.stepSelections).flatMap(i=>i.renderableSteps).filter(i=>i.mandatory).filter(i=>!this.mandatorySteps[i.stepName]).map(i=>i.stepName)}setStepError(t,e,a){let r=!1;if(!this.validationErrors.steps.has(t)&&a)r=!0,this.validationErrors.steps.set(t,new Map([[e,a]]));else if(this.validationErrors.steps.has(t)){const i=this.validationErrors.steps.get(t);a&&a!==i.get(e)?(r=!0,i.set(e,a)):a||(r=!0,i.delete(e),i.size===0&&this.validationErrors.steps.delete(t))}r&&this.onValidationChange()}getStepErrors(t){return this.validationErrors.steps.get(t)}getValidationErrors(){return this.validationErrors}toggleDesignConfirmed(){this.confirmedDesign=!this.confirmedDesign,this.onConfirmChange()}toggleMakingAdjustmentsCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}async injectIntoPreviewService(t,e){if(this.modelContainer)throw new Error("You must eject from the preview service before injecting again.");this.previewService=t;const a=this.experience.getProduct();if(!a?.modelUrl||!this.previewService)return;const r=t.loadModel({model:a.modelUrl,contextService:this.getLayoutPreviewService()},{refocusCamera:e});this.setModelContainer(r),vt(this.allScenes,this.stepSelections).filter(s=>s).map(s=>s.renderableSteps).flat().filter(s=>s.type===v.Model||s.type===v.Material).forEach(s=>{if(!s.option?.id){console.error(`Failed to read option id from step: ${s.stepName}`);return}const l=this.stepSelections[s.stepName]?.selectedVariants||[];if(l.length===0)return;const c=l[0];if(s.type===v.Model){if(!this.modelContainer)throw new N("We should always have a model container when injecting a preview!");const d=c.asset?.fileLink;if(!d){console.error(`Failed to read model url from variant: ${c.id} for step: ${s.stepName}`);return}const u=s.data;this.modelContainer.applyModelVariant(s.stepName,{model:d,contextService:this.getLayoutPreviewService()},u.replaceProductModel||!1)}else{const d=c.material;if(!d){console.error(`Failed to read material from variant: ${c.id} for step: ${s.stepName}`);return}s.data.targetMaterials.forEach(A=>{if(!this.modelContainer)throw new N("We should always have a model container when injecting a preview!");this.modelContainer.applyMaterialVariant(A,s.option.id,d)})}}),await r.getInitializationPromise(),this.renderLayouts()}ejectFromPreviewService(){if(this.modelContainer){if(!this.modelContainer.dispose)throw new Error("This feature is not supported in the current preview service.");this.modelContainer.dispose(),this.modelContainer=void 0}this.previewService=void 0}updateStorage(t,e){const a={...this.storage,[t]:{...this.storage[t],...e}};if(!ee(a,this.storage)){this.storage=a;const r=new gn(this.constructSerializableWorkflow());this.commandContext.apply(r,!0),this.onStepSpecificStorageChange(t),this.onStorageChange()}}constructSerializableWorkflow(){const t=[];return this.allScenes.forEach(e=>{e.renderableSteps.forEach(a=>{const r={stepName:a.stepName};r.storage=this.storage[a.stepName],r.selectedVariants=this.stepSelections[a.stepName]?.selectedVariants?.map(i=>({id:i.id,priceModifier:i.priceModifier})),t.push(r)})}),{steps:t}}updateStateWithServer(){if(this.readOnly)return;const t=this.serialize();this.workflowStatePromiseQueue.enqueue(new wn(async()=>{await new Promise(e=>{setTimeout(()=>{e()},1)}),await this.updateTransaction({variables:{id:this.experience.getTransaction().id,workflowState:t}})}))}async updateStateWithServerImmediate(){if(this.readOnly)return;const t=this.serialize();return new wn(async()=>{await this.updateTransaction({variables:{id:this.experience.getTransaction().id,workflowState:t}})}).execute()}serialize(){const t=this.getCommandContext().getState();if(!t)throw new N("Attempted to serialize state before it was initialized.");const e=Bt(t.transaction),a=this.dehydrateState(e);return JSON.stringify(a)}dehydrateState(t){for(const e of Object.values(t.layouts).map(a=>a.elements).flat())e.type==="illustration"&&(delete e.cachedObjectURL,e.src&&delete e.svg),e.type==="frame"&&delete e.pattern?.svg;return this.deleteFieldNameFromObjectRecursive(t,"__typename"),t}deleteFieldNameFromObjectRecursive(t,e){if(!(typeof t!="object"||t===null))for(const a in t)a===e?delete t[a]:this.deleteFieldNameFromObjectRecursive(t[a],e)}async outstandingRequestsPromise(){return this.workflowStatePromiseQueue.finalize()}updateMetadata(t,e){this.stepMetadata={...this.stepMetadata,[t]:{...this.stepMetadata[t],...e}},this.onMetadataChange()}removeElements(t){const e=(a,r)=>Object.keys(a).reduce((i,o)=>{const s=[...a[o]||[]];return r.forEach(l=>{const c=s.findIndex(d=>d.id===l.id);c>-1&&s.splice(c,1)}),i[o]=s,i},{});this.stepElements=e(this.stepElements,t)}getInvalidCanvasRegions(){return this.experience.getWorkflow()?.steps.reduce((t,e)=>(bt(e,this.stepSelections)||this.stepElements[e.stepName]&&this.stepElements[e.stepName].forEach(a=>t.push(a)),t),[])||[]}getInvalidModelVariants(){return this.experience.getWorkflow()?.steps.reduce((t,e)=>(e.type===v.Model&&!bt(e,this.stepSelections)&&t.push(e.stepName),t),[])||[]}async stepElementsForIntroducedSilentSteps(t,e){const a=this.experience.getProduct();if(!a)return Promise.resolve({stepElements:{},commands:[]});const r=async(c,d,u)=>{if(c.type===v.SilentIllustration){const A=await new mn(c,d).trigger();return{step:c,results:A}}else if(c.type===v.ProductOverlay){const A=await new mn(c,d,u).trigger();return{step:c,results:A}}return Promise.reject("Unknown silent step. This is a bug")},i=t.filter(c=>!this.stepInitialised[c.stepName]),o={stepElements:{},commands:[]},s=[];for(const c of i)this.markStepsAsInitialised([c.stepName]),e||s.push(r(c,this.layouts,a));const l=await Promise.all(s);for(const c of l)o.stepElements[c.step.stepName]=c.results.map(d=>d.regionElement),o.commands=[...o.commands,...c.results.map(d=>d.command)];return o}getStepStorage(t){return this.storage[t]}getMetadata(t){return this.stepMetadata[t]}getWorkflowMetadata(){return this.stepMetadata}getStepTags(t){return this.stepTags[t]||[]}getSerializedStep(t,e){return e.find(a=>a.stepName===t)}async updateTransactionShareActions(){const t=await this.client.getShareActionsForTransaction(this.experience.getTransaction().id);this.experience.getTransaction().transactionShareActions=t}async updateTransactionStakeholders(){const t=await S.getShadowGraphqlClient().query({query:ko,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.experience.getTransaction().id}});!t?.data?.transactions||t.data.transactions.length!==1?(this.experience.getTransaction().currentStakeholder=void 0,this.experience.getTransaction().stakeholders=void 0):(this.experience.getTransaction().stakeholders=t.data.transactions[0].stakeholders,this.experience.getTransaction().currentStakeholder=t.data.transactions[0].currentStakeholder)}async approveTransaction(t){await S.getShadowGraphqlClient().mutate({mutation:Wl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.experience.getTransaction().id,note:t}})}async rejectTransaction(t){await S.getShadowGraphqlClient().mutate({mutation:Hl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.experience.getTransaction().id,note:t}})}async reset(){this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},await this.ensureStepsAreLoaded()}async setSelectionsAndElements(t,e,a,r){const i=this.experience.getWorkflow();if(!i)throw new Error("Attempted to set selections when no workflow is set!");const o=this.stepSelections;this.stepSelections={...this.stepSelections,[t]:{selectedVariants:e}},this.selectionCost=Object.values(this.stepSelections).reduce((y,B)=>y+B.selectedVariants.map(x=>x.priceModifier||0).reduce((x,I)=>x+I,0),0),i.steps.forEach(y=>{bt(y,this.stepSelections)||(this.stepInitialised[y.stepName]=!1,delete this.stepMetadata[y.stepName],delete this.stepSelections[y.stepName],delete this.storage[y.stepName])});const s=this.allScenes,l=vt(s,o),c=vt(s,this.stepSelections),d=l.map(y=>y.silentSteps).flat(),A=c.map(y=>y.silentSteps).flat().filter(y=>!d.some(B=>B.stepName===y.stepName));d.forEach(y=>{bt(y,this.stepSelections)||(this.stepInitialised[y.stepName]=!1)});const h=this.getInvalidCanvasRegions(),{stepElements:g,commands:p}=await this.stepElementsForIntroducedSilentSteps(A,!1);this.stepElements={...this.stepElements,...g,[t]:a},this.removeElements(h);const m=i.steps.find(y=>y.stepName===t);m?.type===v.Frame&&this.getWorkflowExperience().getStepById(m.stepName)?.frameService?.setTargetElements(a.map(B=>B.id));const f=h.map(y=>new xt(y.id)),w=new gn(this.constructSerializableWorkflow()),b=[...p,...f,w];b.length>0&&this.commandContext.apply(new R(b),!0),await this.ensureStepsAreLoaded(),this.onElementsChange();const F=this.getInvalidModelVariants(),E=this.modelContainer;if(E){const y=F.map(B=>E.applyModelVariant(B,{contextService:this.getLayoutPreviewService()},!1));await Promise.all(y)}await this.onSelectionChange(),r&&await r()}async ensureStepsAreLoaded(){const e=vt(this.allScenes,this.stepSelections).map(l=>l.renderableSteps),a=[],r=e.flat();for(const l of r)if(!this.stepInitialised[l.stepName])switch(this.stepInitialised[l.stepName]=!0,l.type){case v.DigitalContent:a.push(za.init(l,this,this.reloadedState));break;case v.Frame:a.push(ht.init(l,this,this.reloadedState));break;case v.Illustration:a.push(Kt.init(l,this,this.reloadedState));break;case v.Material:a.push(qa.init(l,this,this.reloadedState));break;case v.Model:a.push(Ga.init(l,this,this.reloadedState));break;case v.Module:this.stepSpecificServices[l.stepName]={module:await Br(l.data.module)},a.push(ja.init(l,this,this.reloadedState));break;case v.Picture:a.push(Wa.init(l,this,this.reloadedState));break;case v.Question:a.push(Ha.init(l,this,this.reloadedState));break;case v.Shape:a.push(kt.init(l,this,this.reloadedState));break;case v.Text:a.push(q.init(l,this,this.reloadedState));break}const i=(await Promise.allSettled(a)).map(l=>{if(l.status==="rejected")throw new Error(`Step initialization failed: ${l.reason}`);return l.value}),o=i.filter(l=>!!l&&!!l.command).map(l=>l.command),s=i.filter(l=>!!l&&!!l.followup).map(l=>l.followup);o&&o.length>0&&this.commandContext.apply(new R(o),!0);for(const l of s)await l();s.length>0&&await this.ensureStepsAreLoaded(),this.onInitChange()}onConfirmChange(){this.confirmCallbacks.forEach(t=>t(this.confirmedDesign))}onEditedChange(){this.editedCallbacks.forEach(t=>t(this.editedSteps))}onElementsChange(){this.elementsCallbacks.forEach(t=>t(this.stepElements))}onInformationResultChange(){this.informationResultCallbacks.forEach(t=>t(this.informationResults))}onInitChange(){this.initCallbacks.forEach(t=>t(this.stepInitialised))}onMakingAdjustmentsChange(){this.makingAdjustmentsCallback.forEach(t=>{t(this.currentAdjustingStepId)})}onMandatoryChange(){this.mandatoryCallbacks.forEach(t=>t(this.mandatorySteps))}onMetadataChange(){this.metadataCallbacks.forEach(t=>{t(this.stepMetadata)})}async onSelectionChange(){const t=await this.traversableScenes();for(const e of this.selectionCallbacks)e({selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:t})}onStepSpecificStorageChange(t){Object.keys(this.stepSpecificStorageCallbacks).includes(t)||(this.stepSpecificStorageCallbacks[t]=[]),this.stepSpecificStorageCallbacks[t].forEach(e=>e(this.storage[t]))}onStorageChange(){this.storageCallbacks.forEach(t=>t(this.storage))}onValidationChange(){this.validationCallbacks.forEach(t=>t(this.validationErrors))}traversableScenes(){return Jo(this.allScenes,this.stepSelections,this.singleVariantsRenderable)}};Zt.configurationPromiseMap=new Map;let Ea=Zt;class rt{constructor(t){this.variantData=t}getType(){return this.variantData.asset?.type}getId(){return this.variantData.id}getName(){return this.variantData.name}getPriceFormatted(t,e){return this.variantData.priceModifier.toLocaleString(t||"en-US",{style:"currency",currency:"USD",...e})}getPrice(){return this.variantData.priceModifier}getAsset(){return this.variantData.asset?.versions?.find(t=>t.name==="cdn")?.link}getAssetResource(){return this.variantData.asset}getThumbnail(){const t=this.variantData.thumbnail?.versions?.find(a=>a.name==="thumbnail")?.link,e=this.variantData.thumbnail?.fileLink;return t||e}getColor(){return this.variantData.color}isDefault(){return!!this.variantData.default}getResource(){return this.variantData}isEnabled(){return this.variantData.enabled}}const te=class te{constructor(t,e,a){this.manager=t,this.step=e,this.tags=a}setUpdateState(t){te.updateState.set(`${this.step.stepName}-${this.manager.getWorkflowExperience().getTransaction().id}`,t)}getUpdateState(){return!!te.updateState.get(`${this.step.stepName}-${this.manager.getWorkflowExperience().getTransaction().id}`)}getCurrentVariant(){const a=this.manager.getWorkflowSelections()[this.step.stepName]?.selections[0];if(a)return new rt(a)}getAvailableVariants(){return(this.step.option?.variants?.filter(e=>e.enabled)||[]).map(e=>new rt(e))}getAllVariants(){return(this.step.option?.variants||[]).map(e=>new rt(e))}getId(){return this.step.stepName}getName(){return this.step.stepTitle}getHelpText(){return this.step.helpText}getType(){return this.step.type}getRaw(){return this.step}getTags(){return this.tags}hasTag(t){return this.tags.includes(t)||!1}getMandatory(){return this.step.mandatory||!1}getOverrideGlobalPropertyConfiguration(t){return(this.manager.getStepStorage(this.step.stepName)?.overrideGlobalConfigurations??{})[t.toString()]??!1}setOverrideGlobalPropertyConfiguration(t,e){const a=this.manager.getStepStorage(this.step.stepName)?.overrideGlobalConfigurations??{};this.manager.updateStorage(this.step.stepName,{overrideGlobalConfigurations:{...a,[t.toString()]:e}})}getGlobalPropertyAspects(t){return this.step.globalPropertyAspectConfigurations?.filter(e=>e.globalPropertyConfigurationId===t&&e.aspectName).map(e=>e.aspectName)??[]}executeAnimations(t){const e=this.manager.getPreviewService(),a=this.manager.getModelContainer(),r=this.step.data.modelAnimation,i=this.step.data.lookAtAnimation;e?i&&e.executeCameraAnimation(i):console.warn("No preview service available, cannot execute camera animations."),a?r&&a.executeAnimation(r,t):console.warn("No model container available, cannot execute model animations.")}};te.updateState=new Map;let X=te;class xr extends X{constructor(t,e,a){super(t,e,a)}async selectVariant(t){if(!this.getUpdateState()&&this.getCurrentVariant()!==t)return Kt.selectVariant(this.step,t.getResource(),this.manager.getRegionElements(this.step.stepName)||[],e=>this.setUpdateState(e),this.manager)}getColors(){const t=this.manager.getRegionElements(this.step.stepName)||[];if(t.length===0)return;const a=$(t[0].id,this.manager.getAllLayoutData()).colors,i=this.getCurrentVariant()?.getAssetResource()?.assetConfiguration,o=i?.defaultColorVariants||[];if(o.length!==0){const s={};return o.forEach(l=>{const c=i.channelNumbers.find(d=>d.number===l.channelNumber);if(c){const d=c.id.replace(/\W/g,"");s[l.channelNumber]={browserValue:a[d]?.browserValue||""}}}),s}try{return a}catch(s){console.error(s)}}setColor(t,e,a){const r=new Map,o=this.getCurrentVariant()?.getAssetResource()?.assetConfiguration;return(o?.defaultColorVariants||[]).length!==0?o.channelNumbers.forEach(l=>{if(l.number.toString()===t){const c=l.id.replace(/\W/g,"");a?r.set(c,{browserValue:e,pmsValue:a}):r.set(c,e)}}):a?r.set(t,{browserValue:e,pmsValue:a}):r.set(t,e),Kt.changeColors(this.step,this.manager.getRegionElements(this.step.stepName),this.manager,()=>this.manager.getCommandContext().getAllLayouts(),r)}async getColorOption(){return this.step.data.colorOption}getAvailableColors(){return this.step.data.colorPickerEnabled?Kt.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}isPMSPickerEnabled(){return this.step.data.pmsPickerEnabled??!1}}class Fr extends X{constructor(t,e,a){super(t,e,a)}selectVariant(t){return qa.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class Dr extends X{constructor(t,e,a){super(t,e,a)}selectVariant(t){return Ga.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class kr extends X{constructor(t,e,a){super(t,e,a)}selectVariant(t){return Wa.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class Mr extends X{constructor(t,e,a){super(t,e,a)}async selectVariant(t){if(!t.getId())throw new Error("Unable to select variant with a null ID");await Ha.selectVariant(this.step,t.getId(),this.manager)}getDisplayType(){return this.step.data.displayType||this.step.option?.displayType}}class Tr extends X{constructor(t,e,a){super(t,e,a)}selectVariant(t){const e=t.getResource();return kt.selectVariant(this.step,{fill:e.color,stroke:e.color,variant:e},this.manager.getRegionElements(this.step.stepName)||[],this.manager)}setColor(t){return kt.selectVariant(this.step,t,this.manager.getRegionElements(this.step.stepName)||[],this.manager)}getColors(){return kt.availableColours(this.step)}setCustomColor(t){return this.getCurrentVariant()?.getColor()!=="#custom"&&console.warn(`setting custom color for step ${this.step.stepName} but color is ${this.getCurrentVariant()?.getColor()}`),kt.setCustomColor(t,this.step,this.manager)}getCustomColor(){this.getCurrentVariant()?.getColor()!=="#custom"&&console.warn(`setting custom color for step ${this.step.stepName} but color is ${this.getCurrentVariant()?.getColor()}`);const t=this.manager.getStepStorage(this.step.stepName)?.colour;if(!t)throw new Error(`Color not available on step ${this.step.stepName}. Set a default on the workflow to fix this.`);return t}}class Nr extends X{constructor(t,e,a){super(t,e,a)}async selectVariant(t){q.selectVariant(this.step,t.getResource(),this.manager,e=>{if(e)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:"An issue has occurred with text",messageType:ye.Error,stepID:this.step.stepName}]);else{const a=this.manager.getInformationResults().filter(r=>r.stepID!==this.step.stepName);this.manager.setInformationResults(a)}},()=>{})}getAvailableFillColors(){return this.step.data.colorPickerEnabled?q.availableFillColors(this.step):[]}async setFillColor(t){const e=this.manager.getRegionElements(this.step.stepName);await q.changeFillColor(this.step,t,e,this.manager)}getFillColor(){return this.manager.getStepStorage(this.step.stepName)?.color||"#000000"}getAvailableFillImages(){return q.availableFillImages(this.step)}async setFillImage(t){const e=this.manager.getRegionElements(this.step.stepName);await q.changeFillImage(this.step,t,e,this.manager)}getFillImage(){return this.manager.getStepStorage(this.step.stepName)?.fillImage}getAlignment(){return q.findLayoutElements(this.manager,this.step)?.[0].align}setAlignment(t){const e=this.manager.getRegionElements(this.step.stepName);q.changeAlignment(this.step,t,e,this.manager)}setFullTextCustomization(t){const e=this.manager.getStepStorage(this.step.stepName)?.inputText||"",a=this.step.data.replaceableText!==void 0?this.step.data.replaceableText.replace("{{}}",e):e,r=t?a:this.step.data.defaultText;return this.manager.updateStorage(this.step.stepName,{customiseAllText:t,text:r,defaultCleared:!1}),this.setText(r)}setText(t){const e={input:t,helperData:{}},a=q.findLayoutElements(this.manager,this.step),r=q.filterUnsupportedCharacters(t,a[0]?.fontData),i=Mt(r,this.manager).length,o=!!this.step.data&&!!this.step.data.maxLength&&i>this.step.data.maxLength;o||(e.input=r);const s=a.length<=0,l=s?{inputText:r,text:r}:{inputText:r};this.manager.updateStorage(this.step.stepName,l);const c=this.manager.getStepStorage(this.step.stepName),d=q.getProcessedInput(r,this.step.data,c?.customiseAllText??!1);if(s)o||this.manager.updateMetadata(this.step.stepName,{text:d});else{const{command:u,errorData:A,helperData:h}=q.updateInputText(r,a,this.step,this.manager);u&&this.manager.getCommandDispatcher()(u),e.helperData=h,e.errorData=A,!o&&!A&&this.manager.updateMetadata(this.step.stepName,{text:d})}return e}getText(){const t=this.step.data.defaultText,e=this.manager.getStepStorage(this.step.stepName);return t&&e?.defaultCleared!==void 0&&!e?.defaultCleared?t:this.manager.getStepStorage(this.step.stepName)?.text||""}isReplaceable(){return this.step.data.userCanReplaceText}newLinesSupported(){return this.step.data.allowNewlines||!1}clearDefaultTextIfNecessary(){if(!this.manager.getStepStorage(this.step.stepName)?.defaultCleared&&this.step.data.deleteDefaultOnFocus){const e=this.setText("");this.manager.updateStorage(this.step.stepName,{defaultCleared:!0,inputText:""});const a=q.findLayoutElements(this.manager,this.step);return q.updateInputText("",a,this.step,this.manager),e}}hasColorPicker(){return this.step.data.colorPickerEnabled}getRegions(){return this.step.data.regions}getCharacterLimit(){return this.step.data.maxLength}getCharactersRemaining(){const t=this.step.data.maxLength;if(t===void 0)return;const e=Mt(this.getText(),this.manager);return t-e.length}setCustomColor(t){throw new Error("Custom color support is not yet available on text. Check back soon.")}getCustomColor(){throw new Error("Custom color support is not yet available on text. Check back soon.")}getAvailableStrokeColors(){return this.step.data.strokeEnabled?q.availableStrokeColors(this.step):[]}getStrokeColor(){return this.manager.getStepStorage(this.step.stepName)?.strokeColor?.browserValue||"#000000"}async setStrokeColor(t){const e=this.manager.getRegionElements(this.step.stepName);await q.changeStrokeColor(this.step,t,e,this.manager)}}class Qr extends X{constructor(t,e,a){super(t,e,a)}async selectVariant(){}getContent(){return this.step.data.content}}class Rr extends X{constructor(t,e,a){super(t,e,a)}async selectVariant(){}getPreviewURL(){return this.manager.getStepStorage(this.step.stepName)?.videoUrl||""}async selectVideo(t){return za.regenerateQRCode(this.manager.getRegionElements(this.step.stepName),t.key,this.manager,this.step)}}class Or extends X{constructor(t,e,a){super(t,e,a)}async selectVariant(){console.info("Text Modules don't support variants.")}getCharactersRemaining(){const t=this.step.data.maxLength;if(t===void 0)return;const e=Mt(this.getText(),this.manager);return t-e.length}getCharacterLimit(){return this.step.data.maxLength}getText(){return this.manager.getStepStorage(this.step.stepName)?.text||""}setText(t){ja.changeText(this.step,t,this.manager,e=>{if(e){const a=[...this.manager.getInformationResults(),{message:e,messageType:ye.Error,stepID:this.step.stepName}];this.manager.setInformationResults(a)}else{const a=this.manager.getInformationResults().filter(r=>r.stepID!==this.step.stepName);this.manager.setInformationResults(a)}})}}class Be{static get(t,e){switch(e.type){case v.DigitalContent:return new Rr(t,e,t.getStepTags(e.stepName));case v.Information:return new Qr(t,e,t.getStepTags(e.stepName));case v.Question:return new Mr(t,e,t.getStepTags(e.stepName));case v.Text:return new Nr(t,e,t.getStepTags(e.stepName));case v.Illustration:return new xr(t,e,t.getStepTags(e.stepName));case v.Picture:return new kr(t,e,t.getStepTags(e.stepName));case v.Shape:return new Tr(t,e,t.getStepTags(e.stepName));case v.Material:return new Fr(t,e,t.getStepTags(e.stepName));case v.Model:return new Dr(t,e,t.getStepTags(e.stepName));case v.Frame:return new si(t,e,t.getStepTags(e.stepName));case v.Module:return new Or(t,e,t.getStepTags(e.stepName));default:throw new N(`Step type ${e.type} not yet supported in Core SDK`)}}}const $r=C.gql`
2252
+ `;var Se=(n=>(n.Error="Error",n.Warning="Warning",n.Info="Info",n))(Se||{});const tc=1e3;class yn extends Ra{constructor(t){super(),this.createdAt=new Date,this.update=t}async execute(){await this.update(),await new Promise(t=>{window.setTimeout(()=>{t()},tc)})}}const ec=n=>n.sort((t,e)=>t.index-e.index).map(t=>({id:T(),panelId:t.name,name:t.name,title:t.title,index:t.index,createdAt:new Date,updatedAt:new Date,transparentBackground:t.transparentBackground,height:t.height,width:t.width,previewRegion:t.previewRegion,useEditableArea:t.useEditableArea,editableArea:t.editableArea})),ac=(n,t)=>{const e=n.workflowState,a=e?JSON.parse(e):void 0;return a?Object.values(a.layouts).map(r=>r.layout):ec(t.panels)},ee=class ee{constructor(t,e,a,r,i,o=!1,s,l=!1,c=!1,d=!1){this.workflowStatePromiseQueue=new Oa(1),this.initialized=!1,this.readOnly=!1,this.isReloadedTransaction=!1,this.singleVariantsRenderable=!1,this.stepTags={},this.setWorkflow=async A=>{this.confirmedDesign=!1,this.editedSteps={},this.informationResults=[],this.mandatorySteps={},this.pendingUpdates=[],this.selectionCost=0,this.stepSpecificServices={},this.pollers=[],this.allScenes=[],this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.validationErrors={steps:new Map},this.currentAdjustingStepId="",this.reloadedState?this.layouts=Object.values(this.reloadedState.layouts||{}).map(g=>g.layout):A?this.layouts=ac(this.experience.getTransaction(),A):this.layouts=[],this.commandContext.initialize(this.layouts,this.reloadedState),this.renderableContextService=new ml(this.layouts),this.renderableContextService.setWorkflowManager(this),A.steps.forEach(g=>{this.stepTags[g.stepName]=g.tags??[]});const h=this.previewService;this.ejectFromPreviewService(),this.initializationPromise=this.initializeDefaultWorkflowState(A),this.initializationPromise.then(()=>{this.initialized=!0}),this.initializationPromise.catch(g=>{throw console.error(g),this.initialized=!1,new Error("Workflow initialization failed due to an error. See console.")}),this.initializationPromise.finally(()=>this.commandContext.registerStateCallback(()=>{this.updateStateWithServer(),this.renderLayouts()})),h&&await this.injectIntoPreviewService(h,!0)},this.renderLayouts=()=>{if(!this.previewService)return;const A=this.getCommandContext().getAllLayouts(),h=this.getLayoutPreviewService()?.getAll();if(h)for(const[,g]of h)g.render(A)},this.experience=t,this.client=e,this.updateTransaction=a,this.graphQlClient=r,this.reloadedState=i,this.readOnly=o,this.singleVariantsRenderable=c,this.commandContext=new mr,this.confirmCallbacks=[],this.editedCallbacks=[],this.elementsCallbacks=[],this.informationResultCallbacks=[],this.initCallbacks=[],this.mandatoryCallbacks=[],this.makingAdjustmentsCallback=[],this.metadataCallbacks=[],this.selectionCallbacks=[],this.stepSpecificStorageCallbacks={},this.storageCallbacks=[],this.validationCallbacks=[],this.recipientCallbacks=[],this.modelContainer=s,this.confirmedDesign=!1,this.editedSteps={},this.informationResults=[],this.mandatorySteps={},this.pendingUpdates=[],this.selectionCost=0,this.stepSpecificServices={},this.pollers=[],this.allScenes=[],this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},this.validationErrors={steps:new Map},this.currentAdjustingStepId="",this.isReloadedTransaction=l,d&&(this.workflowStatePromiseQueue.enabled=!1);const u=this.experience.getWorkflow();u&&this.setWorkflow(u)}getTemplatingContext(){const t=this.experience.getTransaction().recipient,e={recipient:t};return this.recipientConversionConfiguration?.requestedDataItems?.forEach(a=>{const r=a.uniqueIdentifier??a.title??"";a.type===te.FirstName?e[r]=t?.firstName:a.type===te.LastName?e[r]=t?.lastName:a.type===te.Custom&&(a.customFieldIndex===1?e[r]=t?.customField1:a.customFieldIndex===2?e[r]=t?.customField2:a.customFieldIndex===3?e[r]=t?.customField3:a.customFieldIndex===4?e[r]=t?.customField4:a.customFieldIndex===5&&(e[r]=t?.customField5),a.option&&(e[r]=a.option.variants?.find(i=>i.id===e[r])?.name))}),e}async updateRecipient(t,e,a,r,i,o,s,l,c,d,u,A,h,g,p,m,C){const w=this.experience.getTransaction();if(w.recipient?.id)this.experience.getTransaction().recipient={id:w.recipient.id,firstName:t??w.recipient.firstName,lastName:e??w.recipient.lastName,address:a??w.recipient.address,suburb:r??w.recipient.suburb,state:i??w.recipient.state,email:o??w.recipient.email,postalCode:s??w.recipient.postalCode,country:l??w.recipient.country,mobile:c??w.recipient.mobile,company:d??w.recipient.company,apartment:u??w.recipient.apartment,customField1:A??w.recipient.customField1,customField2:h??w.recipient.customField2,customField3:g??w.recipient.customField3,customField4:p??w.recipient.customField4,customField5:m??w.recipient.customField5,conversionConfigurationId:C||w.recipient.conversionConfigurationId},this.experience.callEvent(Ue.RecipientChanged),await this.graphQlClient().mutate({mutation:_l,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:w.recipient.id,firstName:t||w.recipient.firstName,lastName:e||w.recipient.lastName,address:a||w.recipient.address,suburb:r||w.recipient.suburb,state:i||w.recipient.state,email:o||w.recipient.email,postalCode:s||w.recipient.postalCode,country:l||w.recipient.country,mobile:c||w.recipient.mobile,company:d||w.recipient.company,apartment:u||w.recipient.apartment,customField1:A||w.recipient.customField1,customField2:h||w.recipient.customField2,customField3:g||w.recipient.customField3,customField4:p||w.recipient.customField4,customField5:m||w.recipient.customField5,conversionConfigurationId:C||w.recipient.conversionConfigurationId}});else{const I=await this.graphQlClient().mutate({mutation:Kl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{firstName:t,lastName:e,address:a,suburb:r,state:i,email:o,postalCode:s,country:l,mobile:c,company:d,apartment:u,customField1:A,customField2:h,customField3:g,customField4:p,customField5:m,conversionConfigurationId:C}});w.recipient={id:I?.data?.recipientCreate?.id,firstName:t,lastName:e,address:a,suburb:r,state:i,email:o,postalCode:s,country:l,mobile:c,company:d,apartment:u,customField1:A,customField2:h,customField3:g,customField4:p,customField5:m,conversionConfigurationId:C},this.experience.callEvent(Ue.RecipientChanged),await this.graphQlClient().mutate({mutation:Xl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.experience.getTransaction().id,recipientId:I.data?.recipientCreate?.id},context:{transactionOwnerId:this.experience.getTransaction().transactionOwnerId}})}await this.fetchConversionConfiguration(),this.recipientCallbacks.forEach(I=>I(this.experience.getTransaction().recipient))}async fetchConversionConfiguration(){const t=this.experience.getTransaction().recipient;if(t?.conversionConfigurationId&&!this.recipientConversionConfiguration){const e=ee.configurationPromiseMap.get(t.conversionConfigurationId);if(e)this.recipientConversionConfiguration=await e;else{const r=(async()=>(await this.graphQlClient().query({query:xo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t.conversionConfigurationId}})).data.conversionConfiguration)();ee.configurationPromiseMap.set(t.conversionConfigurationId,r),this.recipientConversionConfiguration=await r}}}async initializeDefaultWorkflowState(t){const e=()=>{const s=t.finalizeStepConfig;if(!s)return;const l=s.lookAtAnimation,c=s.modelAnimation;l&&this.previewService?.executeCameraAnimation(l),c&&this.modelContainer?.executeAnimation(c)};this.reloadedState&&this.reloadedState.serializableWorkflow.steps.forEach(s=>{this.storage[s.stepName]=s.storage||{}}),await this.fetchConversionConfiguration(),this.allScenes=await Yo(t);const r=Et(this.allScenes,this.stepSelections).map(s=>s.silentSteps).flat(),{stepElements:i,commands:o}=await this.stepElementsForIntroducedSilentSteps(r,!!this.reloadedState);this.commandContext.apply(new O(o),!0),this.stepElements={...this.stepElements,...i},await this.ensureStepsAreLoaded(),this.isReloadedTransaction||this.updateStateWithServer(),this.renderLayouts(),this.reloadedState&&e()}getWorkflowExperience(){return this.experience}getClient(){return this.client}setWorkflowStateSyncEnabled(t){this.workflowStatePromiseQueue.enabled=t}getInitializationPromise(){return this.initializationPromise}isInitialized(){return this.initialized}addConfirmCallback(t){t(this.confirmedDesign),this.confirmCallbacks.push(t)}addEditedCallback(t){t(this.editedSteps),this.editedCallbacks.push(t)}addElementsCallback(t){t(this.stepElements),this.elementsCallbacks.push(t)}addInformationResultCallback(t){t(this.informationResults),this.informationResultCallbacks.push(t)}addInitCallback(t){t(this.stepInitialised),this.initCallbacks.push(t)}addMandatoryCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}addMetadataCallback(t){t(this.stepMetadata),this.metadataCallbacks.push(t)}async addSelectionCallback(t){t({selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:await this.traversableScenes()}),this.selectionCallbacks.push(t)}addStepSpecificStorageCallback(t,e){Object.keys(this.storage).includes(e)||(this.storage[e]={}),t(this.storage[e]),Object.keys(this.stepSpecificStorageCallbacks).includes(e)||(this.stepSpecificStorageCallbacks[e]=[]),this.stepSpecificStorageCallbacks[e].push(t)}addStorageCallback(t){t(this.storage),this.storageCallbacks.push(t)}addMakingAdjustmentsCallback(t){t(this.currentAdjustingStepId),this.makingAdjustmentsCallback.push(t)}addPoller(t){this.pollers.push(t)}addValidationCallback(t){this.validationCallbacks.push(t),t(this.validationErrors)}addRecipientCallback(t){this.recipientCallbacks.push(t),t(this.experience.getTransaction().recipient)}removeRecipientCallback(t){this.recipientCallbacks=this.recipientCallbacks.filter(e=>e!==t)}getLayouts(){return this.layouts}getAllLayoutData(){return this.commandContext.getAllLayouts().map(t=>t.layoutState)}getLayoutPreviewService(){return this.renderableContextService}getInformationResults(){return this.informationResults}getPreviewService(){return this.previewService}getCommandContext(){return this.commandContext}getRegionElements(t){return this.stepElements[t]||[]}getStepSpecificServices(t){return this.stepSpecificServices[t]}getTransactionCustomer(){return this.ownerCustomer}setTransactionCustomer(t){this.ownerCustomer=t}setTransactionCustomerDetails(t){this.ownerCustomer={...this.ownerCustomer,emailAddress:t.email}}getModelContainer(){return this.modelContainer}setModelContainer(t){(!t||this.previewService&&this.previewService.getAllModels().includes(t))&&(this.modelContainer=t,t&&t.metadata&&t.metadata instanceof Map&&this.modelContainer.metadata.set("workflowManager",this))}getCommandDispatcher(){return t=>this.commandContext.apply(t,!this.initialized)}getWorkflowSelections(){const t={};return this.experience.getWorkflow()?.steps.forEach(e=>{const a=this.stepSelections[e.stepName];a&&a.selectedVariants&&a.selectedVariants.length>0&&(t[e.stepName]={selections:a.selectedVariants})}),t}getStepSelections(){return this.stepSelections}markStepsAsInitialised(t){const e={...this.stepInitialised};t.forEach(a=>{e[a]=!0}),this.stepInitialised=e,this.onInitChange()}getUpdatesPending(){return this.pendingUpdates.length>0}markUpdateCompleted(t){this.pendingUpdates=this.pendingUpdates.filter(e=>e!==t)}markUpdatePending(){const t=T();return this.pendingUpdates=[...this.pendingUpdates,t],t}setEditedStatus(t,e){this.editedSteps={...this.editedSteps,[t]:e},this.onEditedChange()}setInformationResults(t){this.informationResults=[...t],this.onInformationResultChange()}setCurrentAdjustingStepId(t){this.currentAdjustingStepId=t,this.onMakingAdjustmentsChange()}setMandatoryFulfilled(t,e){this.mandatorySteps[t]!==e&&(this.mandatorySteps={...this.mandatorySteps,[t]:e},this.onMandatoryChange())}getMandatoryUnfulfilledSteps(){return Et(this.allScenes,this.stepSelections).flatMap(i=>i.renderableSteps).filter(i=>i.mandatory).filter(i=>!this.mandatorySteps[i.stepName]).map(i=>i.stepName)}setStepError(t,e,a){let r=!1;if(!this.validationErrors.steps.has(t)&&a)r=!0,this.validationErrors.steps.set(t,new Map([[e,a]]));else if(this.validationErrors.steps.has(t)){const i=this.validationErrors.steps.get(t);a&&a!==i.get(e)?(r=!0,i.set(e,a)):a||(r=!0,i.delete(e),i.size===0&&this.validationErrors.steps.delete(t))}r&&this.onValidationChange()}getStepErrors(t){return this.validationErrors.steps.get(t)}getValidationErrors(){return this.validationErrors}toggleDesignConfirmed(){this.confirmedDesign=!this.confirmedDesign,this.onConfirmChange()}toggleMakingAdjustmentsCallback(t){t(this.mandatorySteps),this.mandatoryCallbacks.push(t)}async injectIntoPreviewService(t,e){if(this.modelContainer)throw new Error("You must eject from the preview service before injecting again.");this.previewService=t;const a=this.experience.getProduct();if(!a?.modelUrl||!this.previewService)return;const r=t.loadModel({model:a.modelUrl,contextService:this.getLayoutPreviewService()},{refocusCamera:e});this.setModelContainer(r),Et(this.allScenes,this.stepSelections).filter(s=>s).map(s=>s.renderableSteps).flat().filter(s=>s.type===v.Model||s.type===v.Material).forEach(s=>{if(!s.option?.id){console.error(`Failed to read option id from step: ${s.stepName}`);return}const l=this.stepSelections[s.stepName]?.selectedVariants||[];if(l.length===0)return;const c=l[0];if(s.type===v.Model){if(!this.modelContainer)throw new Q("We should always have a model container when injecting a preview!");const d=c.asset?.fileLink;if(!d){console.error(`Failed to read model url from variant: ${c.id} for step: ${s.stepName}`);return}const u=s.data;this.modelContainer.applyModelVariant(s.stepName,{model:d,contextService:this.getLayoutPreviewService()},u.replaceProductModel||!1)}else{const d=c.material;if(!d){console.error(`Failed to read material from variant: ${c.id} for step: ${s.stepName}`);return}s.data.targetMaterials.forEach(A=>{if(!this.modelContainer)throw new Q("We should always have a model container when injecting a preview!");this.modelContainer.applyMaterialVariant(A,s.option.id,d)})}}),await r.getInitializationPromise(),this.renderLayouts()}ejectFromPreviewService(){if(this.modelContainer){if(!this.modelContainer.dispose)throw new Error("This feature is not supported in the current preview service.");this.modelContainer.dispose(),this.modelContainer=void 0}this.previewService=void 0}updateStorage(t,e){const a={...this.storage,[t]:{...this.storage[t],...e}};if(!ne(a,this.storage)){this.storage=a;const r=new mn(this.constructSerializableWorkflow());this.commandContext.apply(r,!0),this.onStepSpecificStorageChange(t),this.onStorageChange()}}constructSerializableWorkflow(){const t=[];return this.allScenes.forEach(e=>{e.renderableSteps.forEach(a=>{const r={stepName:a.stepName};r.storage=this.storage[a.stepName],r.selectedVariants=this.stepSelections[a.stepName]?.selectedVariants?.map(i=>({id:i.id,priceModifier:i.priceModifier})),t.push(r)})}),{steps:t}}updateStateWithServer(){if(this.readOnly)return;const t=this.serialize();this.workflowStatePromiseQueue.enqueue(new yn(async()=>{await new Promise(e=>{setTimeout(()=>{e()},1)}),await this.updateTransaction({variables:{id:this.experience.getTransaction().id,workflowState:t}})}))}async updateStateWithServerImmediate(){if(this.readOnly)return;const t=this.serialize();return new yn(async()=>{await this.updateTransaction({variables:{id:this.experience.getTransaction().id,workflowState:t}})}).execute()}serialize(){const t=this.getCommandContext().getState();if(!t)throw new Q("Attempted to serialize state before it was initialized.");const e=It(t.transaction),a=this.dehydrateState(e);return JSON.stringify(a)}dehydrateState(t){for(const e of Object.values(t.layouts).map(a=>a.elements).flat())e.type==="illustration"&&(delete e.cachedObjectURL,e.src&&delete e.svg),e.type==="frame"&&delete e.pattern?.svg;return this.deleteFieldNameFromObjectRecursive(t,"__typename"),t}deleteFieldNameFromObjectRecursive(t,e){if(!(typeof t!="object"||t===null))for(const a in t)a===e?delete t[a]:this.deleteFieldNameFromObjectRecursive(t[a],e)}async outstandingRequestsPromise(){return this.workflowStatePromiseQueue.finalize()}updateMetadata(t,e){this.stepMetadata={...this.stepMetadata,[t]:{...this.stepMetadata[t],...e}},this.onMetadataChange()}removeElements(t){const e=(a,r)=>Object.keys(a).reduce((i,o)=>{const s=[...a[o]||[]];return r.forEach(l=>{const c=s.findIndex(d=>d.id===l.id);c>-1&&s.splice(c,1)}),i[o]=s,i},{});this.stepElements=e(this.stepElements,t)}getInvalidCanvasRegions(){return this.experience.getWorkflow()?.steps.reduce((t,e)=>(Bt(e,this.stepSelections)||this.stepElements[e.stepName]&&this.stepElements[e.stepName].forEach(a=>t.push(a)),t),[])||[]}getInvalidModelVariants(){return this.experience.getWorkflow()?.steps.reduce((t,e)=>(e.type===v.Model&&!Bt(e,this.stepSelections)&&t.push(e.stepName),t),[])||[]}async stepElementsForIntroducedSilentSteps(t,e){const a=this.experience.getProduct();if(!a)return Promise.resolve({stepElements:{},commands:[]});const r=async(c,d,u)=>{if(c.type===v.SilentIllustration){const A=await new pn(c,d).trigger();return{step:c,results:A}}else if(c.type===v.ProductOverlay){const A=await new pn(c,d,u).trigger();return{step:c,results:A}}return Promise.reject("Unknown silent step. This is a bug")},i=t.filter(c=>!this.stepInitialised[c.stepName]),o={stepElements:{},commands:[]},s=[];for(const c of i)this.markStepsAsInitialised([c.stepName]),e||s.push(r(c,this.layouts,a));const l=await Promise.all(s);for(const c of l)o.stepElements[c.step.stepName]=c.results.map(d=>d.regionElement),o.commands=[...o.commands,...c.results.map(d=>d.command)];return o}getStepStorage(t){return this.storage[t]}getMetadata(t){return this.stepMetadata[t]}getWorkflowMetadata(){return this.stepMetadata}getStepTags(t){return this.stepTags[t]||[]}getSerializedStep(t,e){return e.find(a=>a.stepName===t)}async updateTransactionShareActions(){const t=await this.client.getShareActionsForTransaction(this.experience.getTransaction().id);this.experience.getTransaction().transactionShareActions=t}async updateTransactionStakeholders(){const t=await y.getShadowGraphqlClient().query({query:To,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.experience.getTransaction().id}});!t?.data?.transactions||t.data.transactions.length!==1?(this.experience.getTransaction().currentStakeholder=void 0,this.experience.getTransaction().stakeholders=void 0):(this.experience.getTransaction().stakeholders=t.data.transactions[0].stakeholders,this.experience.getTransaction().currentStakeholder=t.data.transactions[0].currentStakeholder)}async approveTransaction(t){await y.getShadowGraphqlClient().mutate({mutation:Yl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.experience.getTransaction().id,note:t}})}async rejectTransaction(t){await y.getShadowGraphqlClient().mutate({mutation:Jl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.experience.getTransaction().id,note:t}})}async reset(){this.stepElements={},this.stepInitialised={},this.stepMetadata={},this.stepSelections={},this.storage={},await this.ensureStepsAreLoaded()}async setSelectionsAndElements(t,e,a,r){const i=this.experience.getWorkflow();if(!i)throw new Error("Attempted to set selections when no workflow is set!");const o=this.stepSelections;this.stepSelections={...this.stepSelections,[t]:{selectedVariants:e}},this.selectionCost=Object.values(this.stepSelections).reduce((E,S)=>E+S.selectedVariants.map(B=>B.priceModifier||0).reduce((B,D)=>B+D,0),0),i.steps.forEach(E=>{Bt(E,this.stepSelections)||(this.stepInitialised[E.stepName]=!1,delete this.stepMetadata[E.stepName],delete this.stepSelections[E.stepName],delete this.storage[E.stepName])});const s=this.allScenes,l=Et(s,o),c=Et(s,this.stepSelections),d=l.map(E=>E.silentSteps).flat(),A=c.map(E=>E.silentSteps).flat().filter(E=>!d.some(S=>S.stepName===E.stepName));d.forEach(E=>{Bt(E,this.stepSelections)||(this.stepInitialised[E.stepName]=!1)});const h=this.getInvalidCanvasRegions(),{stepElements:g,commands:p}=await this.stepElementsForIntroducedSilentSteps(A,!1);this.stepElements={...this.stepElements,...g,[t]:a},this.removeElements(h);const m=i.steps.find(E=>E.stepName===t);m?.type===v.Frame&&this.getWorkflowExperience().getStepById(m.stepName)?.frameService?.setTargetElements(a.map(S=>S.id));const C=h.map(E=>new Ft(E.id)),w=new mn(this.constructSerializableWorkflow()),I=[...p,...C,w];I.length>0&&this.commandContext.apply(new O(I),!0),await this.ensureStepsAreLoaded(),this.onElementsChange();const x=this.getInvalidModelVariants(),b=this.modelContainer;if(b){const E=x.map(S=>b.applyModelVariant(S,{contextService:this.getLayoutPreviewService()},!1));await Promise.all(E)}await this.onSelectionChange(),r&&await r()}async ensureStepsAreLoaded(){const e=Et(this.allScenes,this.stepSelections).map(l=>l.renderableSteps),a=[],r=e.flat();for(const l of r)if(!this.stepInitialised[l.stepName])switch(this.stepInitialised[l.stepName]=!0,l.type){case v.DigitalContent:a.push(qa.init(l,this,this.reloadedState));break;case v.Frame:a.push(gt.init(l,this,this.reloadedState));break;case v.Illustration:a.push(Xt.init(l,this,this.reloadedState));break;case v.Material:a.push(Ga.init(l,this,this.reloadedState));break;case v.Model:a.push(ja.init(l,this,this.reloadedState));break;case v.Module:this.stepSpecificServices[l.stepName]={module:await Ir(l.data.module)},a.push(Wa.init(l,this,this.reloadedState));break;case v.Picture:a.push(Ha.init(l,this,this.reloadedState));break;case v.Question:a.push(Ya.init(l,this,this.reloadedState));break;case v.Shape:a.push(Mt.init(l,this,this.reloadedState));break;case v.Text:a.push(G.init(l,this,this.reloadedState));break}const i=(await Promise.allSettled(a)).map(l=>{if(l.status==="rejected")throw new Error(`Step initialization failed: ${l.reason}`);return l.value}),o=i.filter(l=>!!l&&!!l.command).map(l=>l.command),s=i.filter(l=>!!l&&!!l.followup).map(l=>l.followup);o&&o.length>0&&this.commandContext.apply(new O(o),!0);for(const l of s)await l();s.length>0&&await this.ensureStepsAreLoaded(),this.onInitChange()}onConfirmChange(){this.confirmCallbacks.forEach(t=>t(this.confirmedDesign))}onEditedChange(){this.editedCallbacks.forEach(t=>t(this.editedSteps))}onElementsChange(){this.elementsCallbacks.forEach(t=>t(this.stepElements))}onInformationResultChange(){this.informationResultCallbacks.forEach(t=>t(this.informationResults))}onInitChange(){this.initCallbacks.forEach(t=>t(this.stepInitialised))}onMakingAdjustmentsChange(){this.makingAdjustmentsCallback.forEach(t=>{t(this.currentAdjustingStepId)})}onMandatoryChange(){this.mandatoryCallbacks.forEach(t=>t(this.mandatorySteps))}onMetadataChange(){this.metadataCallbacks.forEach(t=>{t(this.stepMetadata)})}async onSelectionChange(){const t=await this.traversableScenes();for(const e of this.selectionCallbacks)e({selectionCost:this.selectionCost,selections:this.stepSelections,traversableScenes:t})}onStepSpecificStorageChange(t){Object.keys(this.stepSpecificStorageCallbacks).includes(t)||(this.stepSpecificStorageCallbacks[t]=[]),this.stepSpecificStorageCallbacks[t].forEach(e=>e(this.storage[t]))}onStorageChange(){this.storageCallbacks.forEach(t=>t(this.storage))}onValidationChange(){this.validationCallbacks.forEach(t=>t(this.validationErrors))}traversableScenes(){return _o(this.allScenes,this.stepSelections,this.singleVariantsRenderable)}};ee.configurationPromiseMap=new Map;let ba=ee;class at{constructor(t){this.variantData=t}getType(){return this.variantData.asset?.type}getId(){return this.variantData.id}getName(){return this.variantData.name}getPriceFormatted(t,e){return this.variantData.priceModifier.toLocaleString(t||"en-US",{style:"currency",currency:"USD",...e})}getPrice(){return this.variantData.priceModifier}getAsset(){return this.variantData.asset?.versions?.find(t=>t.name==="cdn")?.link}getAssetResource(){return this.variantData.asset}getThumbnail(){const t=this.variantData.thumbnail?.versions?.find(a=>a.name==="thumbnail")?.link,e=this.variantData.thumbnail?.fileLink;return t||e}getColor(){return this.variantData.color}isDefault(){return!!this.variantData.default}getResource(){return this.variantData}isEnabled(){return this.variantData.enabled}}const ae=class ae{constructor(t,e,a){this.manager=t,this.step=e,this.tags=a}setUpdateState(t){ae.updateState.set(`${this.step.stepName}-${this.manager.getWorkflowExperience().getTransaction().id}`,t)}getUpdateState(){return!!ae.updateState.get(`${this.step.stepName}-${this.manager.getWorkflowExperience().getTransaction().id}`)}getCurrentVariant(){const a=this.manager.getWorkflowSelections()[this.step.stepName]?.selections[0];if(a)return new at(a)}getAvailableVariants(){return(this.step.option?.variants?.filter(e=>e.enabled)||[]).map(e=>new at(e))}getAllVariants(){return(this.step.option?.variants||[]).map(e=>new at(e))}getId(){return this.step.stepName}getName(){return this.step.stepTitle}getHelpText(){return this.step.helpText}getType(){return this.step.type}getRaw(){return this.step}getTags(){return this.tags}hasTag(t){return this.tags.includes(t)||!1}getMandatory(){return this.step.mandatory||!1}getOverrideGlobalPropertyConfiguration(t){return(this.manager.getStepStorage(this.step.stepName)?.overrideGlobalConfigurations??{})[t.toString()]??!1}setOverrideGlobalPropertyConfiguration(t,e){const a=this.manager.getStepStorage(this.step.stepName)?.overrideGlobalConfigurations??{};this.manager.updateStorage(this.step.stepName,{overrideGlobalConfigurations:{...a,[t.toString()]:e}})}getGlobalPropertyAspects(t){return this.step.globalPropertyAspectConfigurations?.filter(e=>e.globalPropertyConfigurationId===t&&e.aspectName).map(e=>e.aspectName)??[]}executeAnimations(t){const e=this.manager.getPreviewService(),a=this.manager.getModelContainer(),r=this.step.data.modelAnimation,i=this.step.data.lookAtAnimation;e?i&&e.executeCameraAnimation(i):console.warn("No preview service available, cannot execute camera animations."),a?r&&a.executeAnimation(r,t):console.warn("No model container available, cannot execute model animations.")}};ae.updateState=new Map;let _=ae;class Fr extends _{constructor(t,e,a){super(t,e,a)}async selectVariant(t){if(!this.getUpdateState()&&this.getCurrentVariant()!==t)return Xt.selectVariant(this.step,t.getResource(),this.manager.getRegionElements(this.step.stepName)||[],e=>this.setUpdateState(e),this.manager)}getColors(){const t=this.manager.getRegionElements(this.step.stepName)||[];if(t.length===0)return;const a=U(t[0].id,this.manager.getAllLayoutData()).colors,i=this.getCurrentVariant()?.getAssetResource()?.assetConfiguration,o=i?.defaultColorVariants||[];if(o.length!==0){const s={};return o.forEach(l=>{const c=i.channelNumbers.find(d=>d.number===l.channelNumber);if(c){const d=c.id.replace(/\W/g,"");s[l.channelNumber]={browserValue:a[d]?.browserValue||""}}}),s}try{return a}catch(s){console.error(s)}}setColor(t,e,a){const r=new Map,o=this.getCurrentVariant()?.getAssetResource()?.assetConfiguration;return(o?.defaultColorVariants||[]).length!==0?o.channelNumbers.forEach(l=>{if(l.number.toString()===t){const c=l.id.replace(/\W/g,"");a?r.set(c,{browserValue:e,pmsValue:a}):r.set(c,e)}}):a?r.set(t,{browserValue:e,pmsValue:a}):r.set(t,e),Xt.changeColors(this.step,this.manager.getRegionElements(this.step.stepName),this.manager,()=>this.manager.getCommandContext().getAllLayouts(),r)}async getColorOption(){return this.step.data.colorOption}getAvailableColors(){return this.step.data.colorPickerEnabled?Xt.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}isPMSPickerEnabled(){return this.step.data.pmsPickerEnabled??!1}}class Dr extends _{constructor(t,e,a){super(t,e,a)}selectVariant(t){return Ga.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class kr extends _{constructor(t,e,a){super(t,e,a)}selectVariant(t){return ja.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class Mr extends _{constructor(t,e,a){super(t,e,a)}selectVariant(t){return Ha.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class Tr extends _{constructor(t,e,a){super(t,e,a)}async selectVariant(t){if(!t.getId())throw new Error("Unable to select variant with a null ID");await Ya.selectVariant(this.step,t.getId(),this.manager)}getDisplayType(){return this.step.data.displayType||this.step.option?.displayType}}class Nr extends _{constructor(t,e,a){super(t,e,a)}selectVariant(t){const e=t.getResource();return Mt.selectVariant(this.step,{fill:e.color,stroke:e.color,variant:e},this.manager.getRegionElements(this.step.stepName)||[],this.manager)}setColor(t){return Mt.selectVariant(this.step,t,this.manager.getRegionElements(this.step.stepName)||[],this.manager)}getColors(){return Mt.availableColours(this.step)}setCustomColor(t){return this.getCurrentVariant()?.getColor()!=="#custom"&&console.warn(`setting custom color for step ${this.step.stepName} but color is ${this.getCurrentVariant()?.getColor()}`),Mt.setCustomColor(t,this.step,this.manager)}getCustomColor(){this.getCurrentVariant()?.getColor()!=="#custom"&&console.warn(`setting custom color for step ${this.step.stepName} but color is ${this.getCurrentVariant()?.getColor()}`);const t=this.manager.getStepStorage(this.step.stepName)?.colour;if(!t)throw new Error(`Color not available on step ${this.step.stepName}. Set a default on the workflow to fix this.`);return t}}class Qr extends _{constructor(t,e,a){super(t,e,a)}async selectVariant(t){G.selectVariant(this.step,t.getResource(),this.manager,e=>{if(e)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:"An issue has occurred with text",messageType:Se.Error,stepID:this.step.stepName}]);else{const a=this.manager.getInformationResults().filter(r=>r.stepID!==this.step.stepName);this.manager.setInformationResults(a)}},()=>{})}getAvailableFillColors(){return this.step.data.colorPickerEnabled?G.availableFillColors(this.step):[]}async setFillColor(t){const e=this.manager.getRegionElements(this.step.stepName);await G.changeFillColor(this.step,t,e,this.manager)}getFillColor(){return this.manager.getStepStorage(this.step.stepName)?.color||"#000000"}getAvailableFillImages(){return G.availableFillImages(this.step)}async setFillImage(t){const e=this.manager.getRegionElements(this.step.stepName);await G.changeFillImage(this.step,t,e,this.manager)}getFillImage(){return this.manager.getStepStorage(this.step.stepName)?.fillImage}getAlignment(){return G.findLayoutElements(this.manager,this.step)?.[0].align}setAlignment(t){const e=this.manager.getRegionElements(this.step.stepName);G.changeAlignment(this.step,t,e,this.manager)}setFullTextCustomization(t){const e=this.manager.getStepStorage(this.step.stepName)?.inputText||"",a=this.step.data.replaceableText!==void 0?this.step.data.replaceableText.replace("{{}}",e):e,r=t?a:this.step.data.defaultText;return this.manager.updateStorage(this.step.stepName,{customiseAllText:t,text:r,defaultCleared:!1}),this.setText(r)}setText(t){const e={input:t,helperData:{}},a=G.findLayoutElements(this.manager,this.step),r=G.filterUnsupportedCharacters(t,a[0]?.fontData),i=Tt(r,this.manager).length,o=!!this.step.data&&!!this.step.data.maxLength&&i>this.step.data.maxLength;o||(e.input=r);const s=a.length<=0,l=s?{inputText:r,text:r}:{inputText:r};this.manager.updateStorage(this.step.stepName,l);const c=this.manager.getStepStorage(this.step.stepName),d=G.getProcessedInput(r,this.step.data,c?.customiseAllText??!1);if(s)o||this.manager.updateMetadata(this.step.stepName,{text:d});else{const{command:u,errorData:A,helperData:h}=G.updateInputText(r,a,this.step,this.manager);u&&this.manager.getCommandDispatcher()(u),e.helperData=h,e.errorData=A,!o&&!A&&this.manager.updateMetadata(this.step.stepName,{text:d})}return e}getText(){const t=this.step.data.defaultText,e=this.manager.getStepStorage(this.step.stepName);return t&&e?.defaultCleared!==void 0&&!e?.defaultCleared?t:this.manager.getStepStorage(this.step.stepName)?.text||""}isReplaceable(){return this.step.data.userCanReplaceText}newLinesSupported(){return this.step.data.allowNewlines||!1}clearDefaultTextIfNecessary(){if(!this.manager.getStepStorage(this.step.stepName)?.defaultCleared&&this.step.data.deleteDefaultOnFocus){const e=this.setText("");this.manager.updateStorage(this.step.stepName,{defaultCleared:!0,inputText:""});const a=G.findLayoutElements(this.manager,this.step);return G.updateInputText("",a,this.step,this.manager),e}}hasColorPicker(){return this.step.data.colorPickerEnabled}getRegions(){return this.step.data.regions}getCharacterLimit(){return this.step.data.maxLength}getCharactersRemaining(){const t=this.step.data.maxLength;if(t===void 0)return;const e=Tt(this.getText(),this.manager);return t-e.length}setCustomColor(t){throw new Error("Custom color support is not yet available on text. Check back soon.")}getCustomColor(){throw new Error("Custom color support is not yet available on text. Check back soon.")}getAvailableStrokeColors(){return this.step.data.strokeEnabled?G.availableStrokeColors(this.step):[]}getStrokeColor(){return this.manager.getStepStorage(this.step.stepName)?.strokeColor?.browserValue||"#000000"}async setStrokeColor(t){const e=this.manager.getRegionElements(this.step.stepName);await G.changeStrokeColor(this.step,t,e,this.manager)}}class Rr extends _{constructor(t,e,a){super(t,e,a)}async selectVariant(){}getContent(){return this.step.data.content}}class Or extends _{constructor(t,e,a){super(t,e,a)}async selectVariant(){}getPreviewURL(){return this.manager.getStepStorage(this.step.stepName)?.videoUrl||""}async selectVideo(t){return qa.regenerateQRCode(this.manager.getRegionElements(this.step.stepName),t.key,this.manager,this.step)}}class $r extends _{constructor(t,e,a){super(t,e,a)}async selectVariant(){console.info("Text Modules don't support variants.")}getCharactersRemaining(){const t=this.step.data.maxLength;if(t===void 0)return;const e=Tt(this.getText(),this.manager);return t-e.length}getCharacterLimit(){return this.step.data.maxLength}getText(){return this.manager.getStepStorage(this.step.stepName)?.text||""}setText(t){Wa.changeText(this.step,t,this.manager,e=>{if(e){const a=[...this.manager.getInformationResults(),{message:e,messageType:Se.Error,stepID:this.step.stepName}];this.manager.setInformationResults(a)}else{const a=this.manager.getInformationResults().filter(r=>r.stepID!==this.step.stepName);this.manager.setInformationResults(a)}})}}class Ie{static get(t,e){switch(e.type){case v.DigitalContent:return new Or(t,e,t.getStepTags(e.stepName));case v.Information:return new Rr(t,e,t.getStepTags(e.stepName));case v.Question:return new Tr(t,e,t.getStepTags(e.stepName));case v.Text:return new Qr(t,e,t.getStepTags(e.stepName));case v.Illustration:return new Fr(t,e,t.getStepTags(e.stepName));case v.Picture:return new Mr(t,e,t.getStepTags(e.stepName));case v.Shape:return new Nr(t,e,t.getStepTags(e.stepName));case v.Material:return new Dr(t,e,t.getStepTags(e.stepName));case v.Model:return new kr(t,e,t.getStepTags(e.stepName));case v.Frame:return new li(t,e,t.getStepTags(e.stepName));case v.Module:return new $r(t,e,t.getStepTags(e.stepName));default:throw new Q(`Step type ${e.type} not yet supported in Core SDK`)}}}const Ur=f.gql`
2245
2253
  fragment CreateDesignTransaction on Transaction {
2246
2254
  id
2247
2255
  designName
@@ -2266,8 +2274,8 @@
2266
2274
  externalProductVariantId
2267
2275
  }
2268
2276
  }
2269
- `,ec=C.gql`
2270
- ${$r}
2277
+ `,nc=f.gql`
2278
+ ${Ur}
2271
2279
  mutation CreateDesign(
2272
2280
  $name: String!
2273
2281
  $layouts: [LayoutInput]!
@@ -2298,8 +2306,8 @@
2298
2306
  }
2299
2307
  }
2300
2308
  }
2301
- `,ac=C.gql`
2302
- ${$r}
2309
+ `,rc=f.gql`
2310
+ ${Ur}
2303
2311
  mutation CreateDesigns($inputs: [DesignCreateInput]!) {
2304
2312
  designCreateMany(inputs: $inputs) {
2305
2313
  id
@@ -2312,7 +2320,7 @@
2312
2320
  }
2313
2321
  }
2314
2322
  }
2315
- `;function le(n){const t=JSON.parse(atob(n.split(".")[1])).exp;return Math.floor(new Date().getTime()/1e3)>=t}const nc=async(n,t)=>{const e={};try{if(!t)throw new Error}catch{const o=Object.entries(localStorage).find(([l,c])=>l.startsWith("CognitoIdentityServiceProvider")&&l.endsWith("idToken"))?.[0]||"",s=localStorage.getItem(o);s&&!le(s)&&(e.Authorization=`Bearer ${s}`)}return(await S.getShadowGraphqlClient().mutate({mutation:ec,errorPolicy:"all",fetchPolicy:"no-cache",variables:{name:n.name,layouts:n.layouts,workflowId:n.workflowId,transactionId:n.transactionId,previewImage:n.previewImage,useThreeDimPreview:n.useThreeDimPreview,metadata:n.metadata,selectedVariants:n.selectedVariants},context:{headers:e}})).data?.designCreate},rc=async(n,t)=>{const e={};try{if(!t)throw new Error}catch{const o=Object.entries(localStorage).find(([l,c])=>l.startsWith("CognitoIdentityServiceProvider")&&l.endsWith("idToken"))?.[0]||"",s=localStorage.getItem(o);s&&!le(s)&&(e.Authorization=`Bearer ${s}`)}return(await S.getShadowGraphqlClient().mutate({mutation:ac,errorPolicy:"all",fetchPolicy:"no-cache",variables:{inputs:n.map(r=>({name:r.name,layouts:r.layouts,workflowId:r.workflowId,transactionId:r.transactionId,previewImage:r.previewImage,useThreeDimPreview:r.useThreeDimPreview,metadata:r.metadata,selectedVariants:r.selectedVariants}))},context:{headers:e}})).data?.designCreateMany},yn=(n,t,e)=>{const a=i=>{const o={};if(i.type==="Frame"){const s=n[i.stepName],l=i.data;if(!s||!s.image||l.hideImageInCart&&e)return o;o[`${i.stepTitle} image`]=s.image}if(i.type==="Illustration"){const s=n[i.stepName],l=i.data;if(!s||l.hideColorsInCart&&e||!s.colors)return o;if(s.colors.length>0){const c=s.colors.join(", ").toUpperCase();o[`${i.stepTitle} colors`]=c}}if(i.type==="Module"){const s=n[i.stepName],l=i.data;if(!s||s.text===void 0||s.text===null||l.hideTextInCart&&e)return o;o[`${i.stepTitle} text`]=s.text}if(i.type==="Text"){const s=n[i.stepName];if(!s)return o;const l=i.data;(!l.hideTextInCart||!e&&s.text!==void 0&&s.text!==null)&&(o[`${i.stepTitle} text`]=s.text),s.color&&(!l.hideColorInCart||!e)&&(o[`${i.stepTitle} color`]=s.color),s.strokeColor&&(!l.hideStrokeInCart||!e)&&(o[`${i.stepTitle} stroke`]=s.strokeColor)}return o},r={};return t.steps.forEach(i=>{Object.assign(r,a(i))}),r},ic=(n,t,e,a)=>{const r={};let i={};a&&(i=a);const s=t.steps.map(l=>l.stepTitle).filter((l,c,d)=>d.indexOf(l)==c);for(const l of s){if(Object.keys(n).includes(l)){const c=n[l],d=t.steps.find(u=>u.stepTitle===l);r[`${d?.stepTitle} selection`]={value:c[0].name,priceModifier:c[0].priceModifier}}for(const c of Object.keys(i))[`${l} color`,`${l} colors`,`${l} text`,`${l} image`].includes(c)&&(r[c]={value:i[c],priceModifier:0})}return r},Ur=(n,t,e,a,r,i,o,s)=>{const l=t.basePrice||0,c=n.priceModifierTotal||0,d=ic(a,e,void 0,i),A=(k.getMap("transactionOwnerIds")||new Map).get(n.id),h={additionalExternalProductId:n.integrationProduct?.additionalExternalProductId,additionalExternalVariantId:n.integrationProduct?.additionalExternalVariantId,baseCost:l,designExternalVariants:n.designExternalVariants,designProductId:n.externalDesignProductId,designProductVariantId:n.externalDesignProductVariantId,event:"onComplete",exportedData:d,externalCartProductId:n.externalCartProductId,externalCartProductVariantId:n.externalCartProductVariantId,lineItemImageUrl:o||"",optionsCost:c,processExecutionId:s,quantity:n.quantity,transactionId:n.id,transactionOwnerId:A,weight:t.weight,workflowViewerLink:n.workflowViewerLink||"",workflowViewerReadOnlyLink:n.workflowViewerReadOnlyLink||""};return i&&(h.metadata=i),a&&(h.selectedVariants=a),r&&(h.sku=r),h},Lr=async(n,t,e,a,r,i,o,s,l,c)=>{await(async()=>{if(c!==void 0)return c;await n.outstandingRequestsPromise();const I=(k.getMap("transactionOwnerIds")||new Map).get(r.id),V=await S.getShadowGraphqlClient().query({query:ir,variables:{ids:[r.id]},fetchPolicy:"no-cache",errorPolicy:"all",context:{transactionOwnerId:I}}),H=V.data?.transactions[0].workflowState;return V.errors?(V.errors.forEach(_=>{V.errors&&console.log("Server Error:",_.message)}),null):H??null})()||(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(a())),await n.updateStateWithServerImmediate(a),console.log("Server state is undefined @ Workflow completion"));const A=n.getPreviewService(),h=t?.finalizeStepConfig?.lookAtAnimation,g=A&&t.showModelOnFinishStep&&!!h,p=l&&yn(l,t,!0),m=l&&yn(l,t,!1),f=async x=>{const I={};let T=0;if(Object.keys(i).length>0)for(const V of Object.keys(i)){const H=i[V],_=t.steps.find(St=>St.stepName===V);for(let St=0;St<H.selections.length;++St){const et=H.selections[St];if(_&&(!x||_.option&&(_.option.variants||[]).length>1&&!_.data.hideSelectionInCart&&!_.data.hideSelectionsInCart)){const nt=_.stepTitle;I[nt]?I[nt].push({id:et.id||"",name:et.name,priceModifier:et.priceModifier}):I[nt]=[{id:et.id||"",name:et.name,priceModifier:et.priceModifier}]}T+=et.priceModifier}}return[I,T]},[w]=await f(!0),b=Object.fromEntries(Object.keys(w).map(x=>[x,w[x].map(I=>I.id)])),[F]=await f(!1),E=Object.fromEntries(Object.keys(F).map(x=>[x,F[x].map(I=>I.id)]));let y=await s(g,r.id);if(y){const x=await(await it(y)).blob();y=(await O.uploadAsset({name:`${r.id}-preview-image.png`,blob:x},ae.Image,!0,!1)).fileLink}return{designDetails:(()=>{const x={name:o,layouts:e.map(I=>({index:I.index,panelId:I.panelId})),workflowId:t.id,transactionId:r.id,useThreeDimPreview:!!g,previewImage:y};if(m){const I=[];for(const[T,V]of Object.entries(m))I.push({key:T,value:V});x.metadata=I}if(b){const I=[];for(const[T,V]of Object.entries(E))I.push({key:T,ids:V});x.selectedVariants=I}return x})(),cartSelectionsWithPrices:w,cartMetadata:p}},Vr=async(n,t,e,a,r,i,o,s,l,c,d)=>{l("workflow.steps.finish.finalize.buildingLayouts");const{designDetails:u,cartSelectionsWithPrices:A,cartMetadata:h}=await Lr(n,t,e,a,i,o,s,c,d);l("workflow.steps.finish.finalize.creatingDesign");const g=await nc(u),p=g?.transaction?.previewImageLink;if(!g?.transaction)throw new Error("Failed to create design");l("workflow.steps.finish.finalize.updatingTransaction");const m=g.transaction;return Ur(m,r,t,A,g?.sku,h,p,g?.processExecution?.id)},oc=async(n,t,e)=>{t("workflow.steps.finish.finalize.buildingLayouts"),await Promise.all(n.map(async s=>{await s.workflowManager.outstandingRequestsPromise()}));const r=await(async()=>{const l=await S.getShadowGraphqlClient().query({query:ir,variables:{ids:n.map(c=>c.transaction.id)},fetchPolicy:"no-cache",errorPolicy:"all"});return l.errors?(l.errors.forEach(c=>{l.errors&&console.log("Server Error:",c.message)}),null):l.data?.transactions?l.data.transactions.map(c=>c.workflowState??null):null})(),i=await Promise.all(n.map(async(s,l)=>await Lr(s.workflowManager,s.workflow,s.layouts,s.getReducerState,s.transaction,s.workflowSelections,s.designName,e??(()=>Promise.resolve(void 0)),s.workflowMetadata,r?r[l]:void 0)));t("workflow.steps.finish.finalize.creatingDesign");const o=await rc(i.map(s=>s.designDetails));if(!o)throw new Error("Failed to create designs");return t("workflow.steps.finish.finalize.updatingTransaction"),o.map((s,l)=>{const c=n[l],d=i[l],u=s.transaction;return Ur(u,c.product,c.workflow,d.cartSelectionsWithPrices,s.sku,d.cartMetadata,u.previewImageLink,s.processExecution?.id)})};class sc{constructor(){this.localPersistenceKey="designTransactions",this.storageMethod="Local",this.designSavedListeners=[]}attachSaveListener(t){this.designSavedListeners.push(t)}detachSaveListener(t){this.designSavedListeners=this.designSavedListeners.filter(e=>e!==t)}async getSavedDesigns(){if(this.storageMethod==="Local"){const t=k.get(this.localPersistenceKey);return t?JSON.parse(t):[]}throw new N("Unexpected storage method requested")}async getSavedDesignByTransaction(t){return(await this.getSavedDesigns()).find(a=>a.transactionId===t)}async addDesign(t){const a=(await this.getSavedDesigns()).filter(r=>r.transactionId!==t.transactionId);a.unshift(t),await this.setDesigns(a),this.designSavedListeners.forEach(r=>r(t))}async renameDesign(t,e){const a=await this.getSavedDesigns(),r=a.find(i=>i.transactionId===t);if(!r)throw new Error(`No saved design for transaction ${t}.`);r.title=e,await this.setDesigns(a)}async removeDesign(t){const e=await this.getSavedDesigns();await this.setDesigns(e.filter(a=>a.transactionId!==t))}async setDesigns(t){if(this.storageMethod==="Local"){k.set(this.localPersistenceKey,JSON.stringify(t));return}throw new N("Unexpected storage method requested")}}const De=new sc,lc=C.gql`
2323
+ `;function de(n){const t=JSON.parse(atob(n.split(".")[1])).exp;return Math.floor(new Date().getTime()/1e3)>=t}const ic=async(n,t)=>{const e={};try{if(!t)throw new Error}catch{const o=Object.entries(localStorage).find(([l,c])=>l.startsWith("CognitoIdentityServiceProvider")&&l.endsWith("idToken"))?.[0]||"",s=localStorage.getItem(o);s&&!de(s)&&(e.Authorization=`Bearer ${s}`)}return(await y.getShadowGraphqlClient().mutate({mutation:nc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{name:n.name,layouts:n.layouts,workflowId:n.workflowId,transactionId:n.transactionId,previewImage:n.previewImage,useThreeDimPreview:n.useThreeDimPreview,metadata:n.metadata,selectedVariants:n.selectedVariants},context:{headers:e}})).data?.designCreate},oc=async(n,t)=>{const e={};try{if(!t)throw new Error}catch{const o=Object.entries(localStorage).find(([l,c])=>l.startsWith("CognitoIdentityServiceProvider")&&l.endsWith("idToken"))?.[0]||"",s=localStorage.getItem(o);s&&!de(s)&&(e.Authorization=`Bearer ${s}`)}return(await y.getShadowGraphqlClient().mutate({mutation:rc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{inputs:n.map(r=>({name:r.name,layouts:r.layouts,workflowId:r.workflowId,transactionId:r.transactionId,previewImage:r.previewImage,useThreeDimPreview:r.useThreeDimPreview,metadata:r.metadata,selectedVariants:r.selectedVariants}))},context:{headers:e}})).data?.designCreateMany},Sn=(n,t,e)=>{const a=i=>{const o={};if(i.type==="Frame"){const s=n[i.stepName],l=i.data;if(!s||!s.image||l.hideImageInCart&&e)return o;o[`${i.stepTitle} image`]=s.image}if(i.type==="Illustration"){const s=n[i.stepName],l=i.data;if(!s||l.hideColorsInCart&&e||!s.colors)return o;if(s.colors.length>0){const c=s.colors.join(", ").toUpperCase();o[`${i.stepTitle} colors`]=c}}if(i.type==="Module"){const s=n[i.stepName],l=i.data;if(!s||s.text===void 0||s.text===null||l.hideTextInCart&&e)return o;o[`${i.stepTitle} text`]=s.text}if(i.type==="Text"){const s=n[i.stepName];if(!s)return o;const l=i.data;(!l.hideTextInCart||!e&&s.text!==void 0&&s.text!==null)&&(o[`${i.stepTitle} text`]=s.text),s.color&&(!l.hideColorInCart||!e)&&(o[`${i.stepTitle} color`]=s.color),s.strokeColor&&(!l.hideStrokeInCart||!e)&&(o[`${i.stepTitle} stroke`]=s.strokeColor)}return o},r={};return t.steps.forEach(i=>{Object.assign(r,a(i))}),r},sc=(n,t,e,a)=>{const r={};let i={};a&&(i=a);const s=t.steps.map(l=>l.stepTitle).filter((l,c,d)=>d.indexOf(l)==c);for(const l of s){if(Object.keys(n).includes(l)){const c=n[l],d=t.steps.find(u=>u.stepTitle===l);r[`${d?.stepTitle} selection`]={value:c[0].name,priceModifier:c[0].priceModifier}}for(const c of Object.keys(i))[`${l} color`,`${l} colors`,`${l} text`,`${l} image`].includes(c)&&(r[c]={value:i[c],priceModifier:0})}return r},Lr=(n,t,e,a,r,i,o,s)=>{const l=t.basePrice||0,c=n.priceModifierTotal||0,d=sc(a,e,void 0,i),A=(M.getMap("transactionOwnerIds")||new Map).get(n.id),h={additionalExternalProductId:n.integrationProduct?.additionalExternalProductId,additionalExternalVariantId:n.integrationProduct?.additionalExternalVariantId,baseCost:l,designExternalVariants:n.designExternalVariants,designProductId:n.externalDesignProductId,designProductVariantId:n.externalDesignProductVariantId,event:"onComplete",exportedData:d,externalCartProductId:n.externalCartProductId,externalCartProductVariantId:n.externalCartProductVariantId,lineItemImageUrl:o||"",optionsCost:c,processExecutionId:s,quantity:n.quantity,transactionId:n.id,transactionOwnerId:A,weight:t.weight,workflowViewerLink:n.workflowViewerLink||"",workflowViewerReadOnlyLink:n.workflowViewerReadOnlyLink||""};return i&&(h.metadata=i),a&&(h.selectedVariants=a),r&&(h.sku=r),h},Vr=async(n,t,e,a,r,i,o,s,l,c)=>{await(async()=>{if(c!==void 0)return c;await n.outstandingRequestsPromise();const D=(M.getMap("transactionOwnerIds")||new Map).get(r.id),N=await y.getShadowGraphqlClient().query({query:or,variables:{ids:[r.id]},fetchPolicy:"no-cache",errorPolicy:"all",context:{transactionOwnerId:D}}),tt=N.data?.transactions[0].workflowState;return N.errors?(N.errors.forEach(q=>{N.errors&&console.log("Server Error:",q.message)}),null):tt??null})()||(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(a())),await n.updateStateWithServerImmediate(a),console.log("Server state is undefined @ Workflow completion"));const A=n.getPreviewService(),h=t?.finalizeStepConfig?.lookAtAnimation,g=A&&t.showModelOnFinishStep&&!!h,p=l&&Sn(l,t,!0),m=l&&Sn(l,t,!1),C=async B=>{const D={};let F=0;if(Object.keys(i).length>0)for(const N of Object.keys(i)){const tt=i[N],q=t.steps.find(st=>st.stepName===N);for(let st=0;st<tt.selections.length;++st){const lt=tt.selections[st];if(q&&(!B||q.option&&(q.option.variants||[]).length>1&&!q.data.hideSelectionInCart&&!q.data.hideSelectionsInCart)){const At=q.stepTitle;D[At]?D[At].push({id:lt.id||"",name:lt.name,priceModifier:lt.priceModifier}):D[At]=[{id:lt.id||"",name:lt.name,priceModifier:lt.priceModifier}]}F+=lt.priceModifier}}return[D,F]},[w]=await C(!0),I=Object.fromEntries(Object.keys(w).map(B=>[B,w[B].map(D=>D.id)])),[x]=await C(!1),b=Object.fromEntries(Object.keys(x).map(B=>[B,x[B].map(D=>D.id)]));let E=await s(g,r.id);if(E){const B=await(await nt(E)).blob();E=(await $.uploadAsset({name:`${r.id}-preview-image.png`,blob:B},re.Image,!0,!1)).fileLink}return{designDetails:(()=>{const B={name:o,layouts:e.map(D=>({index:D.index,panelId:D.panelId})),workflowId:t.id,transactionId:r.id,useThreeDimPreview:!!g,previewImage:E};if(m){const D=[];for(const[F,N]of Object.entries(m))D.push({key:F,value:N});B.metadata=D}if(I){const D=[];for(const[F,N]of Object.entries(b))D.push({key:F,ids:N});B.selectedVariants=D}return B})(),cartSelectionsWithPrices:w,cartMetadata:p}},zr=async(n,t,e,a,r,i,o,s,l,c,d)=>{l("workflow.steps.finish.finalize.buildingLayouts");const{designDetails:u,cartSelectionsWithPrices:A,cartMetadata:h}=await Vr(n,t,e,a,i,o,s,c,d);l("workflow.steps.finish.finalize.creatingDesign");const g=await ic(u),p=g?.transaction?.previewImageLink;if(!g?.transaction)throw new Error("Failed to create design");l("workflow.steps.finish.finalize.updatingTransaction");const m=g.transaction;return Lr(m,r,t,A,g?.sku,h,p,g?.processExecution?.id)},lc=async(n,t,e)=>{t("workflow.steps.finish.finalize.buildingLayouts"),await Promise.all(n.map(async s=>{await s.workflowManager.outstandingRequestsPromise()}));const r=await(async()=>{const l=await y.getShadowGraphqlClient().query({query:or,variables:{ids:n.map(c=>c.transaction.id)},fetchPolicy:"no-cache",errorPolicy:"all"});return l.errors?(l.errors.forEach(c=>{l.errors&&console.log("Server Error:",c.message)}),null):l.data?.transactions?l.data.transactions.map(c=>c.workflowState??null):null})(),i=await Promise.all(n.map(async(s,l)=>await Vr(s.workflowManager,s.workflow,s.layouts,s.getReducerState,s.transaction,s.workflowSelections,s.designName,e??(()=>Promise.resolve(void 0)),s.workflowMetadata,r?r[l]:void 0)));t("workflow.steps.finish.finalize.creatingDesign");const o=await oc(i.map(s=>s.designDetails));if(!o)throw new Error("Failed to create designs");return t("workflow.steps.finish.finalize.updatingTransaction"),o.map((s,l)=>{const c=n[l],d=i[l],u=s.transaction;return Lr(u,c.product,c.workflow,d.cartSelectionsWithPrices,s.sku,d.cartMetadata,u.previewImageLink,s.processExecution?.id)})};class cc{constructor(){this.localPersistenceKey="designTransactions",this.storageMethod="Local",this.designSavedListeners=[]}attachSaveListener(t){this.designSavedListeners.push(t)}detachSaveListener(t){this.designSavedListeners=this.designSavedListeners.filter(e=>e!==t)}async getSavedDesigns(){if(this.storageMethod==="Local"){const t=M.get(this.localPersistenceKey);return t?JSON.parse(t):[]}throw new Q("Unexpected storage method requested")}async getSavedDesignByTransaction(t){return(await this.getSavedDesigns()).find(a=>a.transactionId===t)}async addDesign(t){const a=(await this.getSavedDesigns()).filter(r=>r.transactionId!==t.transactionId);a.unshift(t),await this.setDesigns(a),this.designSavedListeners.forEach(r=>r(t))}async renameDesign(t,e){const a=await this.getSavedDesigns(),r=a.find(i=>i.transactionId===t);if(!r)throw new Error(`No saved design for transaction ${t}.`);r.title=e,await this.setDesigns(a)}async removeDesign(t){const e=await this.getSavedDesigns();await this.setDesigns(e.filter(a=>a.transactionId!==t))}async setDesigns(t){if(this.storageMethod==="Local"){M.set(this.localPersistenceKey,JSON.stringify(t));return}throw new Q("Unexpected storage method requested")}}const ke=new cc,dc=f.gql`
2316
2324
  mutation AddTransactionStakeholder($id: String!, $type: String!, $details: CustomerDetailsInput!) {
2317
2325
  transactionAddStakeholder(id: $id, details: $details, type: $type) {
2318
2326
  id
@@ -2326,7 +2334,7 @@
2326
2334
  }
2327
2335
  }
2328
2336
  }
2329
- `,cc=C.gql`
2337
+ `,uc=f.gql`
2330
2338
  mutation AddAddressToTransaction(
2331
2339
  $transactionId: String!
2332
2340
  $streetAddress: String
@@ -2348,15 +2356,15 @@
2348
2356
  id
2349
2357
  }
2350
2358
  }
2351
- `,dc=C.gql`
2359
+ `,Ac=f.gql`
2352
2360
  mutation AddOrganizationToTransaction($transactionId: String!, $organizationName: String!) {
2353
2361
  organizationAttachToTransaction(transactionId: $transactionId, organizationName: $organizationName) {
2354
2362
  id
2355
2363
  }
2356
2364
  }
2357
- `,Sn=C.gql`
2358
- ${ge}
2359
- ${Lt}
2365
+ `,vn=f.gql`
2366
+ ${Vt}
2367
+ ${zt}
2360
2368
  mutation TransactionUpdateIntegrationProduct($id: String!, $integrationProductId: String) {
2361
2369
  transactionUpdateIntegrationProduct(id: $id, integrationProductId: $integrationProductId) {
2362
2370
  id
@@ -2442,7 +2450,7 @@
2442
2450
  }
2443
2451
  }
2444
2452
  }
2445
- `;var $e=(n=>(n.PriceBreakChanged="PriceBreakChanged",n.ProductChanged="ProductChanged",n.QuantityChanged="QuantityChanged",n.RecipientChanged="RecipientChanged",n.SelectionChanged="SelectionChanged",n))($e||{});class zr{constructor(t,e){this.cachedStepHandles=new Map,this.profanityList=[],this.currentPriceBreak=1,this.renderableScenes=[],this.renderableSceneCallbacks=[],this.eventCallbacks=new Map,this.debouncedSavedDesignUpdate=Mn(async()=>{await De.getSavedDesignByTransaction(this.getTransaction().id)&&this.save()},2500),this.getCanvasObjectURLAsync=async a=>new Promise((r,i)=>{try{a.toBlob(o=>{if(o){const s=URL.createObjectURL(o);r(s)}})}catch(o){i(o)}}),this.client=t,this.transaction=e.transaction,this.workflow=e.workflow,this.profanityList=this.transaction.product?.profanities?.map(a=>a.word)||[],this.isReadOnly=e.transaction.isOrdered||!!e.readOnly,this.graphQlClient=e.graphQlClient,this.workflowManager=new Ea(this,t,a=>{try{this.debouncedSavedDesignUpdate()}catch{console.error("Failed to update saved design details.")}return e.stateMutationFunc(a)},e.graphQlClient,e.reloadedState,e.readOnly,e.modelContainer,e.isReloadedTransaction,e.singleVariantsRenderable,e.delayWorkflowStateSync),this.workflowManager.addSelectionCallback(a=>{const r=a.traversableScenes.map(i=>{const o=i.renderableSteps.map(s=>s.stepName);return{id:i.name,title:i.title,renderableSteps:o,workflowScene:i}});this.renderableScenes=r,this.renderableSceneCallbacks.forEach(i=>i(r)),this.callEvent("SelectionChanged")}),this.currentPriceBreak=this.priceBreakToBeApplied()}getTransaction(){return this.transaction}getProduct(){return this.transaction.product}getProfanityList(){return this.profanityList}async setProduct(t){this.workflow=void 0;const e=await this.graphQlClient().mutate({mutation:Sn,variables:{id:this.getTransaction().id,integrationProductId:t}}),a=e.data?.transactionUpdateIntegrationProduct.product;if(!a)throw new N("Failed to set product. No product returned from server.");if(!this.bundle)throw new N("Cannot set product on experience that is not part of a bundle.");this.transaction.product={...this.transaction.product,...e.data?.transactionUpdateIntegrationProduct.product},this.transaction.integrationProduct={...this.transaction.integrationProduct,...e.data?.transactionUpdateIntegrationProduct.integrationProduct},this.transaction.workflowState=void 0,this.currentPriceBreak=this.priceBreakToBeApplied(),this.callEvent("ProductChanged");const r=(await this.bundle.getProductCollection().fetchProducts()).find(i=>i.getId()===a.id);try{const i=r?.getDefaultWorkflow();if(i){const o=await ei(i.getId());await this.setWorkflow(o),console.log("Setting Product - Workflow set to default for product.")}}catch{console.log("Setting Product - No default workflow available, must be set manually.")}}async clearProduct(){if(!this.bundle)throw new N("Cannot clear product on experience that is not part of a bundle.");this.workflow=void 0,this.transaction.workflowState=void 0,this.transaction.product=void 0,this.transaction.integrationProduct=void 0,this.currentPriceBreak=this.priceBreakToBeApplied(),this.callEvent("ProductChanged"),await this.graphQlClient().mutate({mutation:Sn,variables:{id:this.getTransaction().id}})}getWorkflow(){return this.workflow}async setWorkflow(t){return this.workflow=t,await this.graphQlClient().mutate({mutation:Bo,variables:{id:this.getTransaction().id,workflowId:t.id}}),this.workflowManager.setWorkflow(t)}async attachAddress(t,e,a,r,i,o){await this.graphQlClient().mutate({mutation:cc,variables:{transactionId:this.getTransaction().id,streetAddress:t||void 0,apartment:e||void 0,city:a||void 0,country:r||void 0,state:i||void 0,postCode:o||void 0}})}async attachOrganization(t){await this.graphQlClient().mutate({mutation:dc,variables:{transactionId:this.getTransaction().id,organizationName:t}})}getBundle(){return this.bundle}setBundle(t){this.bundle=t}getClient(){return this.client}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.workflowManager.getCommandContext()}getWorkflowManager(){return this.workflowManager}async createPreviewImage(t,e){const a=this.getWorkflow(),r=a?.finalizeStepConfig?.lookAtAnimation;if(!a)throw new Error("Failed to generate cart preview image! No workflow is set.");if(t){if(!r)throw new Error("Failed to generate cart preview image! No camera orientation configured.");return await this.workflowManager.getPreviewService()?.renderSceneScreenshot(e??512,r)||""}let i=2048;e&&e<=2048&&(i=e);const o=ft(i,i),s=this.workflowManager.getCommandContext().getAllLayouts(),l=a.defaultPreviewPanelIndex||0,c=a.panels[l],d=s.find(b=>b.layoutState?.layout.panelId===c?.name)||s[0],u=d.layoutState.layout.previewRegion?{x:d.layoutState.layout.previewRegion.left,y:d.layoutState.layout.previewRegion.top,width:d.layoutState.layout.previewRegion.width,height:d.layoutState.layout.previewRegion.height}:{x:0,y:0,width:d.layoutState.layout.width,height:d.layoutState.layout.height},A=this.workflowManager.getCommandContext().getLayoutById(d.layoutState.layout.id),h=o.getContext("2d");if(!h)throw new Ve("Failed to obtain 2D context for preview image creation");const g=this.workflowManager.getTemplatingContext(),p=Ye(A.layoutState.layout,A.layoutState.elements,{renderingConfiguration:{purpose:Nt.Print,region:{left:u.x,top:u.y,width:u.width,height:u.height},templatingContext:g}}),m=qn(p);await(await xa.Pith.from(h,m,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:ft,createImage:ue,DOMParser:Ma(),fetch})).render();const w=await this.getCanvasObjectURLAsync(o);return o.toDataURL(w)}getStepById(t){const e=this.getWorkflow()?.steps.find(i=>i.stepName===t);if(!e||!this.stepHasHandle(e))return;const a=this.cachedStepHandles.get(e.stepName);if(a)return a;const r=Be.get(this.getWorkflowManager(),e);return this.cachedStepHandles.set(e.stepName,r),r}getSteps(){return this.getScenes().flatMap(t=>this.getStepsByScene(t))}getStepsConditionallyActive(){return this.getScenes().flatMap(t=>this.getStepsByScene(t).filter(e=>bt(e.getRaw(),this.getWorkflowManager().getStepSelections())))}getScenes(){return(this.getWorkflow()?.stepGroups||[]).map(e=>({id:e.id,name:e.name,stepIds:e.stepNames}))}getSelectionPriceSubunits(t){const e=this.getWorkflowManager().getWorkflowSelections();let a=0;return Object.values(e).forEach(r=>{a+=r.selections.reduce((i,o)=>i+(o.priceModifier||0),0)}),this.getPriceSubUnitsAfterPriceBreaks(a,t)}getBasePriceSubunits(t,e){const a=this.getPriceSubUnitsAfterPriceBreaks(this.getProduct()?.basePrice||0,e);if(t){const r=this.getAdditionalProductPriceSubunits(e)||0;return a+r}return a}getAdditionalProductPriceSubunits(t){const e=this.getTransaction().integrationProduct;if(e?.additionalIntegrationProduct?.product){const a=e.additionalIntegrationProduct.product.basePrice||0;return this.getPriceSubUnitsAfterPriceBreaks(a,t)}}getTotalPriceSubunits(t){return this.getBasePriceSubunits(!1,t)+this.getSelectionPriceSubunits(t)}getPriceSubUnitsAfterPriceBreaks(t,e){const a=e?1:this.priceBreakToBeApplied(),r=t*a;return Math.ceil(r)}priceBreakToBeApplied(){const t=(this.getProduct()?.priceBreaks||[]).sort((r,i)=>-(r.minQty-i.minQty)),a=[...this.getMatchingExperiencesFromBundle(),this].reduce((r,i)=>r+i.getQuantity(),0);for(const r of t)if(r.minQty<=a)return r.percentage;return 1}checkForPriceBreakChanges(){const t=this.priceBreakToBeApplied();this.currentPriceBreak!==t&&(this.updatePriceBreak(t),this.getMatchingExperiencesFromBundle().forEach(e=>e.updatePriceBreak(t)))}getMatchingExperiencesFromBundle(){return(this.bundle?.getWorkflowExperiences()||[]).filter(t=>{const e=t.getTransaction().id,a=this.getTransaction().id,r=t.getProduct()?.id,i=this.getProduct()?.id;return e!==a&&r===i})}updatePriceBreak(t){this.currentPriceBreak=t,this.callEvent("PriceBreakChanged")}async copySelectionsViaGlobalConfiguration(t,e,a){const r=await t.getGlobalProperties(),i=a?.map(c=>c.getId()),o=this.getSteps().filter(c=>i===void 0||i.includes(c.getId())),s=e.getSteps(),l=c=>r.find(d=>d.getRawProperty().name===c.aspectName);o.forEach(c=>{const d=new Set,u=c.getRaw().globalPropertyAspectConfigurations;u!==void 0&&(u.forEach(A=>d.add(JSON.stringify(A))),s.forEach(A=>{const h=A.getRaw().globalPropertyAspectConfigurations;h!==void 0&&h.forEach(g=>{const p=l(g),m=d.has(JSON.stringify(g));if(m&&p?.getType()==="Option"){const f=A.getCurrentVariant();if(!f)return;c.selectVariant(f),d.delete(JSON.stringify(g))}else if(m&&p?.getType()==="Text"){const f=A.getText();c.setText(f),d.delete(JSON.stringify(g))}})}))})}getStepByName(t){const e=this.getWorkflow()?.steps.find(a=>a.stepTitle===t);if(!(!e||!this.stepHasHandle(e)))return Be.get(this.getWorkflowManager(),e)}getStepsByType(t){return this.getWorkflow()?.steps.filter(e=>e.type===t).map(e=>Be.get(this.getWorkflowManager(),e))||[]}getStepsByScene(t){if(!this.getWorkflow()?.stepGroups.find(a=>a.name===t.name))throw new Error("Given scene is not present on workflow! Be careful when persisting scenes that you only use them with the relevant workflow.");return t.stepIds.map(a=>this.getWorkflow()?.steps.find(r=>r.stepName===a)).filter(a=>this.stepHasHandle(a)).map(a=>Be.get(this.getWorkflowManager(),a))}async attachCustomerDetails(t){return this.assignCustomerDetails({emailAddress:t.email})}async assignCustomerDetails(t){const a=(await this.graphQlClient().mutate({mutation:lc,variables:{id:this.getTransaction().id,details:t,type:"Owner"}})).data?.transactionAddStakeholder?.stakeholders?.find(r=>r.customer?.emailAddress===t.emailAddress);if(a?.customer){this.getWorkflowManager().setTransactionCustomer(a.customer);const r=k.getMap("transactionCustomerIds")||new Map;r.set(this.getTransaction().id,a.customer.id),k.setMap("transactionCustomerIds",r)}}attachRenderableSceneListener(t){this.renderableSceneCallbacks.push(t),t(this.renderableScenes)}detachRenderableSceneListener(t){this.renderableSceneCallbacks=this.renderableSceneCallbacks.filter(e=>e!==t)}async save(t){const e=this.getProduct(),a=this.getWorkflow(),r=this.getCommandContext().getState();if(!e)throw new N("Product undefined!");if(!a)throw new N("Workflow undefined!");if(!r)throw new N("State undefined!");const o={title:await(async()=>{if(t)return t;const s=this.getTransaction().id,c=(await De.getSavedDesigns()).find(d=>d.transactionId===s)?.title;return c||"My design"})(),thumbnail:await this.createPreviewImage(!1,256),transactionId:this.getTransaction().id,productId:e.id,integrationProductId:this.getTransaction().integrationProduct.id,workflowName:a.name,workflowId:a.id,lastEdited:new Date};return await De.addDesign(o),o}async copy(){const t=Bt(this.getCommandContext().getState());if(!t)throw new N("Internal state is undefined! Cannot copy experience!");const e=JSON.stringify(t.transaction),a=this.getWorkflow();if(!a)throw new N("Workflow is undefined! Cannot copy experience!");const r=this.getTransaction().integrationProduct?.id;if(!r)throw new N("Integration product id is undefined!");return await this.getClient().getWorkflowExperience({type:"integration",integrationProductId:r,workflowId:a.id,workflowState:e})}async onDesignFinished(t,e=!0){const a=this.getTransaction(),r=this.getProduct(),i=this.getWorkflow();if(!r)throw new N("Product undefined! Cannot finish an experience without a product.");if(!i)throw new N("Workflow undefined! Cannot finish an experience without a workflow.");return a.completed?(await this.graphQlClient().mutate({mutation:Mo,variables:{transactionId:a.id}}),{event:"",exportedData:{},lineItemImageUrl:"",optionsCost:0,transactionId:a.id,workflowViewerLink:"",workflowViewerReadOnlyLink:""}):Vr(this.workflowManager,i,this.workflowManager.getLayouts(),()=>this.workflowManager.getCommandContext().getState(),r,a,this.workflowManager.getWorkflowSelections(),i.name,t||(()=>{}),o=>e?this.createPreviewImage(o,1024):Promise.resolve(void 0),this.workflowManager.getWorkflowMetadata())}stepHasHandle(t){return t.type!==v.SilentIllustration&&t.type!==v.ProductOverlay}getExportedStepData(){const t=this.getWorkflow(),e=this.getWorkflowManager().getWorkflowMetadata(),a=this.getWorkflowManager().getWorkflowSelections(),r=[];return t?.steps.forEach(i=>{const o=i.stepName,s=e[o],l=a[o]?.selections[0],c={stepId:o,title:i.stepTitle,properties:[]};if(l&&Ac(i,a)&&c.properties.push({type:"selection",value:l.name,priceModifier:l.priceModifier}),!s){r.push(c);return}switch(i.type){case v.Frame:{const d=i.data,u=s;u.image&&d.displayImageOnFinishStep&&c.properties.push({type:"image",value:u.image,priceModifier:0})}break;case v.Illustration:{const d=i.data,u=s;if(u&&u.colors&&u.colors.length>0&&d.displayColorsOnFinishStep){const A=u.colors.join(", ").toUpperCase();c.properties.push({type:"color",value:A,priceModifier:0})}}break;case v.Module:{const d=i.data,u=s;u&&u.text&&d.displayTextOnFinishStep&&c.properties.push({type:"text",value:u.text,priceModifier:0})}break;case v.Text:{const d=i.data,u=s;u&&u.text&&d.displayTextOnFinishStep&&c.properties.push({type:"text",value:u.text,priceModifier:0}),u&&u.color&&d.displayColorOnFinishStep&&c.properties.push({type:"color",value:u.color,priceModifier:0})}}r.push(c)}),r.filter(i=>i.properties&&i.properties.length>0)}getQuantity(){return this.getTransaction().quantity||1}async setQuantity(t){if(t<1)throw new RangeError("WorkflowExperience quantity must be greater than zero.");if(this.isReadOnly)throw new Error("Cannot update quantity on a read-only WorkflowExperience");this.getTransaction().quantity=t,this.callEvent("QuantityChanged"),this.checkForPriceBreakChanges();const e=this.getTransaction();await this.graphQlClient().mutate({mutation:bo,variables:{id:e.id,quantity:t}})}addEventListener(t,e){const a=this.eventCallbacks.get(t)||[];a.push(e),this.eventCallbacks.set(t,a)}removeEventListener(t,e){const a=this.eventCallbacks.get(t)||[];this.eventCallbacks.set(t,a.filter(r=>r!==e))}callEvent(t){(this.eventCallbacks.get(t)||[]).forEach(e=>e(this))}}const uc=n=>{if([v.Question,v.Frame,v.Illustration,v.Material,v.Model,v.Picture,v.Shape,v.Text].includes(n.type)){const e=n.data;return!!e.displaySelectionOnFinishStep||!!e.displaySelectionsOnFinishStep}return!1},Ac=(n,t)=>{if(!uc(n))return!1;if(n.option&&(n.option.variants||[]).length>1){const e=t[n.stepName];return!!(e&&e.selections.length>0)}return!1};class hc{constructor(t){this.handleCache={},this.bundle=t}async getHandle(t){if(this.handleCache[t.name])return this.handleCache[t.name];const e=await this.createHandle(t);return this.handleCache[t.name]=e,e}async getHandles(){if(!this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration)return[];await this.bundle.getGlobalPropertyStateManager().getInitializationPromise();const t=this.bundle.getProductCollection().getResource().globalPropertyConfiguration;return Promise.all(t.aspects.map(e=>this.getHandle(e)))}applyConditionsFromState(t,e){return e?t.filter(a=>this.aspectConditionsSatisfied(a.getRawProperty(),e)):t}aspectConditionsSatisfied(t,e){return!t.conditions||t.conditions.length===0?!0:(t.conditionMode===Tn.AND?Array.prototype.every.bind(t.conditions):Array.prototype.some.bind(t.conditions))(r=>{const i=e.aspects.find(o=>o.name===r.targetAspectName);return i?r.requiredVariantSelections.some(o=>o===i.value):!1})}async createHandle(t){switch(t.type){case U.FileUpload:return new qr(this.bundle,t).initialize();case U.ColorOption:return new ba(this.bundle,t,t.entityId?await j.getOption(t.entityId):void 0);case U.Option:{const e=t.entityId?await j.getOption(t.entityId):void 0;return e?.type==="Color"?new ba(this.bundle,t,e):new Ja(this.bundle,t,e)}case U.Text:return new Gr(this.bundle,t);default:throw new Error("Unhandled Global Property Aspect Type")}}}class Je{constructor(t,e){this.bundle=t,this.property=e}getName(){return this.property.name}getTitle(){return this.property.title}getDescription(){return this.property.description}getType(){return this.property.type}getRawProperty(){return this.property}isMandatory(){return!!this.property.mandatory}isMandatoryFulfilled(){return!this.property.mandatory||!!this.bundle.getGlobalPropertyStateManager().getAspectMandatoryFulfilled(this.property.name)}getSharedSteps(t){return(t??this.bundle.getWorkflowExperiences()).flatMap(r=>r.getStepsConditionallyActive().filter(i=>i.getOverrideGlobalPropertyConfiguration(this.property.type)?!1:i.getRaw().globalPropertyAspectConfigurations?.some(o=>o.globalPropertyConfigurationId===this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration?.id&&o.aspectName===this.property.name)))}getStateValue(){return this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name)}}class qr extends Je{constructor(t,e){super(t,e)}async initialize(){return this.property.data?.fileUpload?.colorOptionId&&(this.colorOption=await j.getOption(this.property.data?.fileUpload?.colorOptionId)),await this.loadImageData(),this}async loadImageData(){const t=await this.getImage();if(t?.fileLink)if(t?.fileLink.endsWith(".svg")){const e=await tt(t?.fileLink),a=await Ua(t?.fileLink),r=a.width,i=a.height,o=await ot(e);this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)?.colors?.forEach(c=>{o.colors[c.key]={browserValue:c.browserValue,pmsValue:c.pmsValue}});const l={src:t?.fileLink,width:r,height:i,aspect:r/i,svg:o.svg,colors:o.colors};dt.set(t?.fileLink,l),this.imageData=l}else this.imageData=void 0}async selectImage(t){const e=this.bundle.getGlobalPropertyStateManager();await Promise.all([e.setAspect(this.property.name,t.key,{...e.getAspectStorage(this.property.name)||{},originalAssetKey:t.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0},void 0),this.applyImageSelection(t),this.loadImageData()])}async canUseBackgroundRemover(){return this.bundle.getClient().canUseAddon(Ue.BackgroundRemover)}async removeBackgroundFromImage(t=!0){if(!await this.canUseBackgroundRemover())throw new Error("The current Integration does not have access to the Background Remover. Please call canUseBackgroundRemover to ensure you disable this feature when appropriate.");const e=await this.getOriginalImage();if(!e)throw new Error("You must supply an image selection before attempting to remove the background.");const a=this.bundle.getGlobalPropertyStateManager(),r=await O.removeBackgroundFromAsset(e),o={...a.getAspectStorage(this.property.name),backgroundRemovedAssetKey:r.key,useOriginalAsset:!t},l=[t?a.setAspect(this.property.name,r.key,o):a.setAspectStorage(this.property.name,o)];return t&&(l.push(this.applyImageSelection(r,void 0,!1,!1)),l.push(this.loadImageData())),await Promise.all(l),this.updateSharedStepStorage(o),r}hasImage(){return!!this.getStateValue()}async getImage(){const t=this.getStateValue();if(t)return O.getLocalOrFromServer(t)}async getImageWithColors(){return await this.loadImageData(),this.imageData?.svg?Ge(We(this.imageData.svg,this.imageData.colors??{},!1)):this.imageData?.src}async getOriginalImage(){const t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(t?.originalAssetKey)return O.getLocalOrFromServer(t.originalAssetKey)}async getBackgroundRemovedImage(){const t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(t?.backgroundRemovedAssetKey)return O.getLocalOrFromServer(t.backgroundRemovedAssetKey)}getUseOriginalImage(){return this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)?.useOriginalAsset??!1}async setUseOriginalImage(t){const e=await this.getOriginalImage();if(!e)throw new Error("You must select an image before calling setUseOriginalImage");const a=this.bundle.getGlobalPropertyStateManager(),r=a.getAspectStorage(this.property.name);if(r?.useOriginalAsset===t)return;const i={...r,useOriginalAsset:t},o=t?r?.originalAssetKey:r?.backgroundRemovedAssetKey,s=[a.setAspect(this.property.name,o||"",i)];if(t)s.push(this.applyImageSelection(e,void 0,!1,!1));else{const l=async()=>{const c=await this.getBackgroundRemovedImage();if(!c)throw new Error("You must call removeBackgroundFromImage before attempting to use that version of the image.");this.applyImageSelection(c,void 0,!1,!1)};s.push(l())}s.push(this.loadImageData()),await Promise.all(s),this.updateSharedStepStorage(i)}async applyGlobalState(t){const e=this.getStateValue();if(!e)return;const a=await O.getLocalOrFromServer(e);if(!a)return;await this.applyImageSelection(a,t,!1,!0);const r=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(r){if(this.updateSharedStepStorage({...r}),r.colors){const i=new Map(r.colors.map(o=>[o.key,{browserValue:o.browserValue,pmsValue:o.pmsValue}])??[]);this.getSharedSteps(t).forEach(o=>{o.changeColors(i)})}}else this.updateSharedStepStorage({originalAssetKey:e}),await this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name,{originalAssetKey:e})}getAvailableColors(){return this.property.data?.fileUpload?.colorPickerEnabled?this.colorOption?.variants?.map(t=>({fill:t.color,stroke:t.color,variant:t,pmsValue:t.name}))??[]:[]}getCurrentColors(){return this.imageData?.colors}isColorPickerEnabled(){return this.property.data?.fileUpload?.colorPickerEnabled??!1}isPmsPickerEnabled(){return this.property.data?.fileUpload?.pmsPickerEnabled??!1}async getOriginalColors(){return this.imageData?.svg?(await ot(this.imageData.svg)).colors:void 0}async changeColors(t){if(!this.imageData?.svg)return;const e=this.getSharedSteps(),a=new Map(Object.entries(t));e.forEach(i=>{i.changeColors(a)});const r=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name,{...r,colors:Object.entries(t).map(([i,o])=>({key:i,browserValue:o.browserValue,pmsValue:o.pmsValue}))}),await this.loadImageData()])}async applyImageSelection(t,e,a=!0,r=!0){const o=this.getSharedSteps(e).map(s=>{const l=s;if(l.getFrameService())return l.selectImage(t,a,r)});await Promise.all(o)}updateSharedStepStorage(t){this.bundle.getWorkflowExperiences().forEach(a=>a.getSteps().forEach(r=>{if(r.getOverrideGlobalPropertyConfiguration(this.property.type))return;r.getRaw().globalPropertyAspectConfigurations?.some(o=>o.globalPropertyConfigurationId===this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration?.id&&o.aspectName===this.property.name)&&a.getWorkflowManager().updateStorage(r.getId(),{framePatternData:{originalAssetKey:t.originalAssetKey,backgroundRemovedAssetKey:t.backgroundRemovedAssetKey,useOriginalAsset:t.useOriginalAsset}})}))}}class Gr extends Je{constructor(t,e){super(t,e)}isTemplatingEnabled(){return this.property.data?.text?.templatingEnabled||!1}getText(){const t=this.getStateValue();return t||""}async setText(t){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t,void 0,void 0),this.applyTextSelection(t)])}async applyGlobalState(t){const e=this.getStateValue();if(!e)return Promise.resolve();await this.applyTextSelection(e,t)}async applyTextSelection(t,e){const r=this.getSharedSteps(e).map(i=>{i.setText(t)});await Promise.all(r)}}class Ja extends Je{constructor(t,e,a){super(t,e),this.optionResource=a}async initDefaultVariant(){const t=this.optionResource?.variants?.find(e=>e.id===this.optionResource?.defaultVariant?.id);t&&await this.selectVariant(new rt(t))}getCurrentVariant(){if(!this.optionResource)return;const t=this.getStateValue();if(t){const e=this.optionResource.variants?.find(a=>a.id===t);return e?new rt(e):void 0}else{const e=this.optionResource.variants?.find(a=>a.id===this.optionResource?.defaultVariant?.id);return e?new rt(e):void 0}}getAvailableVariants(){return(this.optionResource?.variants?.filter(e=>e.enabled)||[]).map(e=>new rt(e))}getAllVariants(){return(this.optionResource?.variants||[]).map(e=>new rt(e))}async selectVariant(t,e){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.getId(),void 0,e),this.applyVariantSelection(t)])}async applyGlobalState(t){const e=this.getStateValue();if(!e)return Promise.resolve();const a=this.optionResource?.variants?.find(r=>r.id===e);return a?this.applyVariantSelection(new rt(a),t):Promise.resolve()}async applyVariantSelection(t,e){const r=this.getSharedSteps(e).map(i=>i.selectVariant(t));await Promise.all(r)}}class ba extends Ja{constructor(t,e,a){super(t,e,a)}async selectVariant(t,e){await this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.getId(),void 0,e),await this.applyColorVariant(t,void 0,e)}async applyGlobalState(t){const e=this.getStateValue();if(!e)return Promise.resolve();const a=this.optionResource?.variants?.find(i=>i.id===e);if(!a)return Promise.resolve();await this.applyColorVariant(new rt(a),t);const r=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)?.customColor;r&&this.setCustomColor(r)}async applyColorVariant(t,e,a){const i=this.getSharedSteps(e).map(o=>{switch(o.getType()){case v.Shape:return o.selectVariant(t);case v.Text:return o.setFillColor({fill:t.getColor(),stroke:t.getColor(),variant:t.getResource()});case v.Illustration:return o.setColor(a?.toString()||"",t.getColor()||"")}});await Promise.all(i)}setCustomColor(t){this.getCurrentVariant()?.getColor()&&this.getCurrentVariant().getColor().toLowerCase()==="#custom"&&this.getSharedSteps().forEach(a=>a.setCustomColor(t)),this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name,{customColor:t})}getCustomColor(){return this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)?.customColor||this.getCurrentVariant()?.getColor()||"#ffffff"}}const gc=(n,t,e,a)=>n.flatMap(r=>r.getSteps()).filter(r=>r.getGlobalPropertyAspects(t).includes(e)&&r.getType()===a),mc=(n,t,e)=>{const r=gc(n,t,e,v.Illustration).map(i=>{const o=i.getCurrentVariant()?.getAssetResource(),s=i.getColors();return!o?.assetConfiguration||!s?0:Object.getOwnPropertyNames(s).length});return Math.max(...r)};function Ba(n,t){function e(a){if(typeof a>"u"||!Array.isArray(a)&&!fc(a))return a;if(Array.isArray(a))return Ba(a,t);let r={};for(const[i,o]of Object.entries(a))r[i]=pc(o)?o:Ba(o,t);return bi(r,t)}return Array.isArray(n)?n.map(e):e(n)}function pc(n){return n==null}function fc(n){return typeof n=="object"&&!Array.isArray(n)&&n!==null}function jr(n){const t=new Map;return n?.aspects?.forEach(e=>{e.value!==""&&t.set(e.name,!0)}),t}function Ie(n){return Ba(n,["__typename"])}class Cc{constructor(t,e,a,r,i){this.mandatoryFulfilledAspects=new Map,this.bundleId=t,this.bundleOwnerId=e,this.configuration=a,this.bundleOptions=i;const o=i?.existingGlobalPropertyState;this.initPromise=o?Promise.resolve(o).then(()=>{console.log("Setting global property state to existing state."),this.globalPropertyState=Ie(o),this.recalculateMandatoryStates()}):this.createGlobalPropertyState().then(s=>{console.log("Setting global property state to new state."),this.globalPropertyState=Ie(s),this.recalculateMandatoryStates()}),this.onGlobalPropertyStateChange=r}async clearAspects(t){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const e=this.globalPropertyState.aspects;this.globalPropertyState.aspects=e.filter(a=>!t.includes(a.name))}recalculateMandatoryStates(){this.mandatoryFulfilledAspects=jr(this.globalPropertyState)}setBundleOptions(t){this.bundleOptions=t}getBundleOptions(){return this.bundleOptions}setConfiguration(t){this.configuration=t}getInitializationPromise(){return this.initPromise}getGlobalPropertyState(){return this.globalPropertyState}async setGlobalPropertyState(t){this.globalPropertyState||await this.initPromise;const e=Bt(this.globalPropertyState);this.globalPropertyState={...Ie(t),id:e.id},this.recalculateMandatoryStates(),await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(e,this.globalPropertyState)}getAspectMandatoryFulfilled(t){return this.mandatoryFulfilledAspects.get(t)}getAspect(t,e){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const a=this.globalPropertyState.aspects.find(r=>r.name===t&&r.channel===e);if(a)return a.value}getAspectStorage(t,e){if(!this.globalPropertyState)throw new Error("Global property state not initialized");return this.globalPropertyState.aspects.find(a=>a.name===t&&a.channel===e)?.storage}async setAspect(t,e,a,r){if(!this.globalPropertyState)throw new Error("Global property state not initialized");if(!this.configuration)throw new Error("Global property configuration not linked to the state manager.");const i=this.configuration.aspects.find(l=>l.name===t);if(!i)throw new Error(`Failed to find configuration aspect with name: ${t}`);this.mandatoryFulfilledAspects.set(t,e!=="");const o=Bt(this.globalPropertyState),s=this.globalPropertyState.aspects.filter(l=>l.name===t);if(s.length>0)if(r){const l=s.find(c=>c.channel===r);if(l)l.value=e,l.type=i.type,l.channel=r,a!==void 0&&(l.storage=a!==null?a:void 0);else{if(r===1){const c=this.globalPropertyState.aspects.findIndex(d=>!d.channel&&d.name===t);c&&c>0&&this.globalPropertyState.aspects.splice(c,1)}this.globalPropertyState.aspects.push({name:t,value:e,type:i.type,storage:a!==null?a:void 0,channel:r})}}else{const l=s[0];l.value=e,l.type=i.type,a!==void 0&&(l.storage=a!==null?a:void 0)}else this.globalPropertyState.aspects.push({name:t,value:e,type:i.type,storage:a!==null?a:void 0,channel:r});ee(o,this.globalPropertyState)||(await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(o,this.globalPropertyState))}async setAspectStorage(t,e,a){if(!this.globalPropertyState)throw new Error("Global property state not initialized");if(!this.configuration)throw new Error("Global property configuration not linked to the state manager.");const r=this.configuration.aspects.find(s=>s.name===t);if(!r)throw new Error(`Failed to find configuration aspect with name: ${t}`);const i=Bt(this.globalPropertyState),o=this.globalPropertyState.aspects.filter(s=>s.name===t);if(o.length>0)if(a){const s=o.find(l=>l.channel===a);s&&(s.storage=e!==null?e:void 0,s.type=r.type)}else{const s=o[0];s.storage=e!==null?e:void 0,s.type=r.type}else this.globalPropertyState.aspects.push({name:t,value:"",type:r.type,storage:e!==null?e:void 0,channel:a});ee(i,this.globalPropertyState)||(await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(i,this.globalPropertyState))}async updateGlobalPropertyState(){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const t=await S.getShadowGraphqlClient().mutate({mutation:Sl,variables:{id:this.globalPropertyState.id,aspects:this.globalPropertyState.aspects.map(e=>{let a=e.type&&e.storage?{}:void 0;if(a)switch(e.type){case U.FileUpload:{a.fileUpload=e.storage;break}case U.Option:{a.option=e.storage;break}case U.ColorOption:{a=e.storage;break}}return{name:e.name,value:e.value,type:e.type,storage:a,channel:e.channel}})},context:{headers:{bundleOwnerId:this.bundleOwnerId,...this.bundleOptions?.additionalHeaders}}});if(t.data?.globalPropertyStateUpdate)this.globalPropertyState=Ie(t.data.globalPropertyStateUpdate);else throw new Error("Unable to update global property state")}async createGlobalPropertyState(){const t=await S.getShadowGraphqlClient().mutate({mutation:yl,variables:{bundleId:this.bundleId},context:{headers:{bundleOwnerId:this.bundleOwnerId,...this.bundleOptions?.additionalHeaders}}});if(t.data?.globalPropertyStateCreate&&t.data.globalPropertyStateCreate.id)return t.data.globalPropertyStateCreate;throw new Error(`Unable to create global property state for bundle: ${this.bundleId}`)}}class wc{constructor(t){this.setState(t||'{"transactions": []}')}setState(t){t&&(this.state=JSON.parse(t))}getState(){return this.state}applyStateToWorkflowExperience(t){if(!this.state||!t?.getWorkflowManager()?.getModelContainer())return;const e=this.state.transactions.find(o=>o.transactionId===t.getTransaction().id);if(!e)return;const a=this.getTransformToApply(e);if(!a)return;const r=this.flipTransform(a,t.getWorkflowManager().getPreviewService()),i=t.getWorkflowManager().getModelContainer();i.position=r.position,i.rotation=r.rotation,i.scale=r.scale}getTransformToApply(t){return t.activeTransform&&t.transforms?t.transforms[t.activeTransform]:t.transform}updateWorkflowExperienceTransform(t,e,a){const r=t.getTransaction().id;this.state?this.state.transactions||(this.state.transactions=[]):this.state={transactions:[]};const i=this.state.transactions.find(o=>o.transactionId===r);i?(i.transforms||(i.transforms={}),i.transforms[e]=a):this.state.transactions.push({transactionId:r,activeTransform:e,transforms:{[e]:a}})}activateWorkflowExperienceTransform(t,e){if(!t?.getWorkflowManager()?.getModelContainer()||!this.state)return;const a=t.getTransaction().id,r=this.state.transactions.find(l=>l.transactionId===a),i=r?.transforms?.[e];if(!i)return;const o=this.flipTransform(i,t.getWorkflowManager().getPreviewService()),s=t.getWorkflowManager().getModelContainer();s.position=o.position,s.rotation=o.rotation,s.scale=o.scale,r.activeTransform=e}removeStateForTransaction(t){if(!this.state||!this.state.transactions)return;const e=this.state.transactions.findIndex(a=>a.transactionId===t);e!==-1&&this.state.transactions.splice(e,1)}getSerializedState(){if(this.state)return this.deleteFieldNameFromObjectRecursive(this.state,"__typename"),JSON.stringify(this.state)}deleteFieldNameFromObjectRecursive(t,e){if(!(typeof t!="object"||t===null))for(const a in t)a===e?delete t[a]:this.deleteFieldNameFromObjectRecursive(t[a],e)}flipTransform(t,e){return e&&e.flipTransform?e.flipTransform(t.position,{x:t.rotation.x*Math.PI/180,y:t.rotation.y*Math.PI/180,z:t.rotation.z*Math.PI/180},t.scale):{position:t.position,rotation:{x:t.rotation.x*Math.PI/180,y:t.rotation.y*Math.PI/180,z:t.rotation.z*Math.PI/180},scale:t.scale}}}const yc=C.gql`
2453
+ `;var Ue=(n=>(n.PriceBreakChanged="PriceBreakChanged",n.ProductChanged="ProductChanged",n.QuantityChanged="QuantityChanged",n.RecipientChanged="RecipientChanged",n.SelectionChanged="SelectionChanged",n))(Ue||{});class qr{constructor(t,e){this.cachedStepHandles=new Map,this.profanityList=[],this.currentPriceBreak=1,this.renderableScenes=[],this.renderableSceneCallbacks=[],this.eventCallbacks=new Map,this.debouncedSavedDesignUpdate=Tn(async()=>{await ke.getSavedDesignByTransaction(this.getTransaction().id)&&this.save()},2500),this.getCanvasObjectURLAsync=async a=>new Promise((r,i)=>{try{a.toBlob(o=>{if(o){const s=URL.createObjectURL(o);r(s)}})}catch(o){i(o)}}),this.client=t,this.transaction=e.transaction,this.workflow=e.workflow,this.profanityList=this.transaction.product?.profanities?.map(a=>a.word)||[],this.isReadOnly=e.transaction.isOrdered||!!e.readOnly,this.graphQlClient=e.graphQlClient,this.workflowManager=new ba(this,t,a=>{try{this.debouncedSavedDesignUpdate()}catch{console.error("Failed to update saved design details.")}return e.stateMutationFunc(a)},e.graphQlClient,e.reloadedState,e.readOnly,e.modelContainer,e.isReloadedTransaction,e.singleVariantsRenderable,e.delayWorkflowStateSync),this.workflowManager.addSelectionCallback(a=>{const r=a.traversableScenes.map(i=>{const o=i.renderableSteps.map(s=>s.stepName);return{id:i.name,title:i.title,renderableSteps:o,workflowScene:i}});this.renderableScenes=r,this.renderableSceneCallbacks.forEach(i=>i(r)),this.callEvent("SelectionChanged")}),this.currentPriceBreak=this.priceBreakToBeApplied()}getTransaction(){return this.transaction}getProduct(){return this.transaction.product}getProfanityList(){return this.profanityList}async setProduct(t){this.workflow=void 0;const e=await this.graphQlClient().mutate({mutation:vn,variables:{id:this.getTransaction().id,integrationProductId:t}}),a=e.data?.transactionUpdateIntegrationProduct.product;if(!a)throw new Q("Failed to set product. No product returned from server.");if(!this.bundle)throw new Q("Cannot set product on experience that is not part of a bundle.");this.transaction.product={...this.transaction.product,...e.data?.transactionUpdateIntegrationProduct.product},this.transaction.integrationProduct={...this.transaction.integrationProduct,...e.data?.transactionUpdateIntegrationProduct.integrationProduct},this.transaction.workflowState=void 0,this.currentPriceBreak=this.priceBreakToBeApplied(),this.callEvent("ProductChanged");const r=(await this.bundle.getProductCollection().fetchProducts()).find(i=>i.getId()===a.id);try{const i=r?.getDefaultWorkflow();if(i){const o=await ai(i.getId());await this.setWorkflow(o),console.log("Setting Product - Workflow set to default for product.")}}catch{console.log("Setting Product - No default workflow available, must be set manually.")}}async clearProduct(){if(!this.bundle)throw new Q("Cannot clear product on experience that is not part of a bundle.");this.workflow=void 0,this.transaction.workflowState=void 0,this.transaction.product=void 0,this.transaction.integrationProduct=void 0,this.currentPriceBreak=this.priceBreakToBeApplied(),this.callEvent("ProductChanged"),await this.graphQlClient().mutate({mutation:vn,variables:{id:this.getTransaction().id}})}getWorkflow(){return this.workflow}async setWorkflow(t){return this.workflow=t,await this.graphQlClient().mutate({mutation:Po,variables:{id:this.getTransaction().id,workflowId:t.id}}),this.workflowManager.setWorkflow(t)}async attachAddress(t,e,a,r,i,o){await this.graphQlClient().mutate({mutation:uc,variables:{transactionId:this.getTransaction().id,streetAddress:t||void 0,apartment:e||void 0,city:a||void 0,country:r||void 0,state:i||void 0,postCode:o||void 0}})}async attachOrganization(t){await this.graphQlClient().mutate({mutation:Ac,variables:{transactionId:this.getTransaction().id,organizationName:t}})}getBundle(){return this.bundle}setBundle(t){this.bundle=t}getClient(){return this.client}getIsReadOnly(){return this.isReadOnly}getCommandContext(){return this.workflowManager.getCommandContext()}getWorkflowManager(){return this.workflowManager}async createPreviewImage(t,e){const a=this.getWorkflow(),r=a?.finalizeStepConfig?.lookAtAnimation;if(!a)throw new Error("Failed to generate cart preview image! No workflow is set.");if(t){if(!r)throw new Error("Failed to generate cart preview image! No camera orientation configured.");return await this.workflowManager.getPreviewService()?.renderSceneScreenshot(e??512,r)||""}let i=2048;e&&e<=2048&&(i=e);const o=Ct(i,i),s=this.workflowManager.getCommandContext().getAllLayouts(),l=a.defaultPreviewPanelIndex||0,c=a.panels[l],d=s.find(I=>I.layoutState?.layout.panelId===c?.name)||s[0],u=d.layoutState.layout.previewRegion?{x:d.layoutState.layout.previewRegion.left,y:d.layoutState.layout.previewRegion.top,width:d.layoutState.layout.previewRegion.width,height:d.layoutState.layout.previewRegion.height}:{x:0,y:0,width:d.layoutState.layout.width,height:d.layoutState.layout.height},A=this.workflowManager.getCommandContext().getLayoutById(d.layoutState.layout.id),h=o.getContext("2d");if(!h)throw new ze("Failed to obtain 2D context for preview image creation");const g=this.workflowManager.getTemplatingContext(),p=Je(A.layoutState.layout,A.layoutState.elements,{renderingConfiguration:{purpose:Qt.Print,region:{left:u.x,top:u.y,width:u.width,height:u.height},templatingContext:g}}),m=Gn(p);await(await Fa.Pith.from(h,m,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:Ct,createImage:he,DOMParser:Ta(),fetch})).render();const w=await this.getCanvasObjectURLAsync(o);return o.toDataURL(w)}getStepById(t){const e=this.getWorkflow()?.steps.find(i=>i.stepName===t);if(!e||!this.stepHasHandle(e))return;const a=this.cachedStepHandles.get(e.stepName);if(a)return a;const r=Ie.get(this.getWorkflowManager(),e);return this.cachedStepHandles.set(e.stepName,r),r}getSteps(){return this.getScenes().flatMap(t=>this.getStepsByScene(t))}getStepsConditionallyActive(){return this.getScenes().flatMap(t=>this.getStepsByScene(t).filter(e=>Bt(e.getRaw(),this.getWorkflowManager().getStepSelections())))}getScenes(){return(this.getWorkflow()?.stepGroups||[]).map(e=>({id:e.id,name:e.name,stepIds:e.stepNames}))}getSelectionPriceSubunits(t){const e=this.getWorkflowManager().getWorkflowSelections();let a=0;return Object.values(e).forEach(r=>{a+=r.selections.reduce((i,o)=>i+(o.priceModifier||0),0)}),this.getPriceSubUnitsAfterPriceBreaks(a,t)}getBasePriceSubunits(t,e){const a=this.getPriceSubUnitsAfterPriceBreaks(this.getProduct()?.basePrice||0,e);if(t){const r=this.getAdditionalProductPriceSubunits(e)||0;return a+r}return a}getAdditionalProductPriceSubunits(t){const e=this.getTransaction().integrationProduct;if(e?.additionalIntegrationProduct?.product){const a=e.additionalIntegrationProduct.product.basePrice||0;return this.getPriceSubUnitsAfterPriceBreaks(a,t)}}getTotalPriceSubunits(t){return this.getBasePriceSubunits(!1,t)+this.getSelectionPriceSubunits(t)}getPriceSubUnitsAfterPriceBreaks(t,e){const a=e?1:this.priceBreakToBeApplied(),r=t*a;return Math.ceil(r)}priceBreakToBeApplied(){const t=(this.getProduct()?.priceBreaks||[]).sort((r,i)=>-(r.minQty-i.minQty)),a=[...this.getMatchingExperiencesFromBundle(),this].reduce((r,i)=>r+i.getQuantity(),0);for(const r of t)if(r.minQty<=a)return r.percentage;return 1}checkForPriceBreakChanges(){const t=this.priceBreakToBeApplied();this.currentPriceBreak!==t&&(this.updatePriceBreak(t),this.getMatchingExperiencesFromBundle().forEach(e=>e.updatePriceBreak(t)))}getMatchingExperiencesFromBundle(){return(this.bundle?.getWorkflowExperiences()||[]).filter(t=>{const e=t.getTransaction().id,a=this.getTransaction().id,r=t.getProduct()?.id,i=this.getProduct()?.id;return e!==a&&r===i})}updatePriceBreak(t){this.currentPriceBreak=t,this.callEvent("PriceBreakChanged")}async copySelectionsViaGlobalConfiguration(t,e,a){const r=await t.getGlobalProperties(),i=a?.map(c=>c.getId()),o=this.getSteps().filter(c=>i===void 0||i.includes(c.getId())),s=e.getSteps(),l=c=>r.find(d=>d.getRawProperty().name===c.aspectName);o.forEach(c=>{const d=new Set,u=c.getRaw().globalPropertyAspectConfigurations;u!==void 0&&(u.forEach(A=>d.add(JSON.stringify(A))),s.forEach(A=>{const h=A.getRaw().globalPropertyAspectConfigurations;h!==void 0&&h.forEach(g=>{const p=l(g),m=d.has(JSON.stringify(g));if(m&&p?.getType()==="Option"){const C=A.getCurrentVariant();if(!C)return;c.selectVariant(C),d.delete(JSON.stringify(g))}else if(m&&p?.getType()==="Text"){const C=A.getText();c.setText(C),d.delete(JSON.stringify(g))}})}))})}getStepByName(t){const e=this.getWorkflow()?.steps.find(a=>a.stepTitle===t);if(!(!e||!this.stepHasHandle(e)))return Ie.get(this.getWorkflowManager(),e)}getStepsByType(t){return this.getWorkflow()?.steps.filter(e=>e.type===t).map(e=>Ie.get(this.getWorkflowManager(),e))||[]}getStepsByScene(t){if(!this.getWorkflow()?.stepGroups.find(a=>a.name===t.name))throw new Error("Given scene is not present on workflow! Be careful when persisting scenes that you only use them with the relevant workflow.");return t.stepIds.map(a=>this.getWorkflow()?.steps.find(r=>r.stepName===a)).filter(a=>this.stepHasHandle(a)).map(a=>Ie.get(this.getWorkflowManager(),a))}async attachCustomerDetails(t){return this.assignCustomerDetails({emailAddress:t.email})}async assignCustomerDetails(t){const a=(await this.graphQlClient().mutate({mutation:dc,variables:{id:this.getTransaction().id,details:t,type:"Owner"}})).data?.transactionAddStakeholder?.stakeholders?.find(r=>r.customer?.emailAddress===t.emailAddress);if(a?.customer){this.getWorkflowManager().setTransactionCustomer(a.customer);const r=M.getMap("transactionCustomerIds")||new Map;r.set(this.getTransaction().id,a.customer.id),M.setMap("transactionCustomerIds",r)}}attachRenderableSceneListener(t){this.renderableSceneCallbacks.push(t),t(this.renderableScenes)}detachRenderableSceneListener(t){this.renderableSceneCallbacks=this.renderableSceneCallbacks.filter(e=>e!==t)}async save(t){const e=this.getProduct(),a=this.getWorkflow(),r=this.getCommandContext().getState();if(!e)throw new Q("Product undefined!");if(!a)throw new Q("Workflow undefined!");if(!r)throw new Q("State undefined!");const o={title:await(async()=>{if(t)return t;const s=this.getTransaction().id,c=(await ke.getSavedDesigns()).find(d=>d.transactionId===s)?.title;return c||"My design"})(),thumbnail:await this.createPreviewImage(!1,256),transactionId:this.getTransaction().id,productId:e.id,integrationProductId:this.getTransaction().integrationProduct.id,workflowName:a.name,workflowId:a.id,lastEdited:new Date};return await ke.addDesign(o),o}async copy(){const t=It(this.getCommandContext().getState());if(!t)throw new Q("Internal state is undefined! Cannot copy experience!");const e=JSON.stringify(t.transaction),a=this.getWorkflow();if(!a)throw new Q("Workflow is undefined! Cannot copy experience!");const r=this.getTransaction().integrationProduct?.id;if(!r)throw new Q("Integration product id is undefined!");return await this.getClient().getWorkflowExperience({type:"integration",integrationProductId:r,workflowId:a.id,workflowState:e})}async onDesignFinished(t,e=!0){const a=this.getTransaction(),r=this.getProduct(),i=this.getWorkflow();if(!r)throw new Q("Product undefined! Cannot finish an experience without a product.");if(!i)throw new Q("Workflow undefined! Cannot finish an experience without a workflow.");return a.completed?(await this.graphQlClient().mutate({mutation:No,variables:{transactionId:a.id}}),{event:"",exportedData:{},lineItemImageUrl:"",optionsCost:0,transactionId:a.id,workflowViewerLink:"",workflowViewerReadOnlyLink:""}):zr(this.workflowManager,i,this.workflowManager.getLayouts(),()=>this.workflowManager.getCommandContext().getState(),r,a,this.workflowManager.getWorkflowSelections(),i.name,t||(()=>{}),o=>e?this.createPreviewImage(o,1024):Promise.resolve(void 0),this.workflowManager.getWorkflowMetadata())}stepHasHandle(t){return t.type!==v.SilentIllustration&&t.type!==v.ProductOverlay}getExportedStepData(){const t=this.getWorkflow(),e=this.getWorkflowManager().getWorkflowMetadata(),a=this.getWorkflowManager().getWorkflowSelections(),r=[];return t?.steps.forEach(i=>{const o=i.stepName,s=e[o],l=a[o]?.selections[0],c={stepId:o,title:i.stepTitle,properties:[]};if(l&&gc(i,a)&&c.properties.push({type:"selection",value:l.name,priceModifier:l.priceModifier}),!s){r.push(c);return}switch(i.type){case v.Frame:{const d=i.data,u=s;u.image&&d.displayImageOnFinishStep&&c.properties.push({type:"image",value:u.image,priceModifier:0})}break;case v.Illustration:{const d=i.data,u=s;if(u&&u.colors&&u.colors.length>0&&d.displayColorsOnFinishStep){const A=u.colors.join(", ").toUpperCase();c.properties.push({type:"color",value:A,priceModifier:0})}}break;case v.Module:{const d=i.data,u=s;u&&u.text&&d.displayTextOnFinishStep&&c.properties.push({type:"text",value:u.text,priceModifier:0})}break;case v.Text:{const d=i.data,u=s;u&&u.text&&d.displayTextOnFinishStep&&c.properties.push({type:"text",value:u.text,priceModifier:0}),u&&u.color&&d.displayColorOnFinishStep&&c.properties.push({type:"color",value:u.color,priceModifier:0})}}r.push(c)}),r.filter(i=>i.properties&&i.properties.length>0)}getQuantity(){return this.getTransaction().quantity||1}async setQuantity(t){if(t<1)throw new RangeError("WorkflowExperience quantity must be greater than zero.");if(this.isReadOnly)throw new Error("Cannot update quantity on a read-only WorkflowExperience");this.getTransaction().quantity=t,this.callEvent("QuantityChanged"),this.checkForPriceBreakChanges();const e=this.getTransaction();await this.graphQlClient().mutate({mutation:Io,variables:{id:e.id,quantity:t}})}addEventListener(t,e){const a=this.eventCallbacks.get(t)||[];a.push(e),this.eventCallbacks.set(t,a)}removeEventListener(t,e){const a=this.eventCallbacks.get(t)||[];this.eventCallbacks.set(t,a.filter(r=>r!==e))}callEvent(t){(this.eventCallbacks.get(t)||[]).forEach(e=>e(this))}}const hc=n=>{if([v.Question,v.Frame,v.Illustration,v.Material,v.Model,v.Picture,v.Shape,v.Text].includes(n.type)){const e=n.data;return!!e.displaySelectionOnFinishStep||!!e.displaySelectionsOnFinishStep}return!1},gc=(n,t)=>{if(!hc(n))return!1;if(n.option&&(n.option.variants||[]).length>1){const e=t[n.stepName];return!!(e&&e.selections.length>0)}return!1};class mc{constructor(t){this.handleCache={},this.bundle=t}async getHandle(t){if(this.handleCache[t.name])return this.handleCache[t.name];const e=await this.createHandle(t);return this.handleCache[t.name]=e,e}async getHandles(){if(!this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration)return[];await this.bundle.getGlobalPropertyStateManager().getInitializationPromise();const t=this.bundle.getProductCollection().getResource().globalPropertyConfiguration;return Promise.all(t.aspects.map(e=>this.getHandle(e)))}applyConditionsFromState(t,e){return e?t.filter(a=>this.aspectConditionsSatisfied(a.getRawProperty(),e)):t}aspectConditionsSatisfied(t,e){return!t.conditions||t.conditions.length===0?!0:(t.conditionMode===Nn.AND?Array.prototype.every.bind(t.conditions):Array.prototype.some.bind(t.conditions))(r=>{const i=e.aspects.find(o=>o.name===r.targetAspectName);return i?r.requiredVariantSelections.some(o=>o===i.value):!1})}async createHandle(t){switch(t.type){case L.FileUpload:return new Gr(this.bundle,t).initialize();case L.ColorOption:return new Ba(this.bundle,t,t.entityId?await W.getOption(t.entityId):void 0);case L.Option:{const e=t.entityId?await W.getOption(t.entityId):void 0;return e?.type==="Color"?new Ba(this.bundle,t,e):new Ka(this.bundle,t,e)}case L.Text:return new jr(this.bundle,t);default:throw new Error("Unhandled Global Property Aspect Type")}}}class Ke{constructor(t,e){this.bundle=t,this.property=e}getName(){return this.property.name}getTitle(){return this.property.title}getDescription(){return this.property.description}getType(){return this.property.type}getRawProperty(){return this.property}isMandatory(){return!!this.property.mandatory}isMandatoryFulfilled(){return!this.property.mandatory||!!this.bundle.getGlobalPropertyStateManager().getAspectMandatoryFulfilled(this.property.name)}getSharedSteps(t){return(t??this.bundle.getWorkflowExperiences()).flatMap(r=>r.getStepsConditionallyActive().filter(i=>i.getOverrideGlobalPropertyConfiguration(this.property.type)?!1:i.getRaw().globalPropertyAspectConfigurations?.some(o=>o.globalPropertyConfigurationId===this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration?.id&&o.aspectName===this.property.name)))}getStateValue(){return this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name)}}class Gr extends Ke{constructor(t,e){super(t,e)}async initialize(){return this.property.data?.fileUpload?.colorOptionId&&(this.colorOption=await W.getOption(this.property.data?.fileUpload?.colorOptionId)),await this.loadImageData(),this}async loadImageData(){const t=await this.getImage();if(t?.fileLink)if(t?.fileLink.endsWith(".svg")){const e=await Z(t?.fileLink),a=await La(t?.fileLink),r=a.width,i=a.height,o=await rt(e);this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)?.colors?.forEach(c=>{o.colors[c.key]={browserValue:c.browserValue,pmsValue:c.pmsValue}});const l={src:t?.fileLink,width:r,height:i,aspect:r/i,svg:o.svg,colors:o.colors};dt.set(t?.fileLink,l),this.imageData=l}else this.imageData=void 0}async selectImage(t){const e=this.bundle.getGlobalPropertyStateManager();await Promise.all([e.setAspect(this.property.name,t.key,{...e.getAspectStorage(this.property.name)||{},originalAssetKey:t.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0},void 0),this.applyImageSelection(t),this.loadImageData()])}async canUseBackgroundRemover(){return this.bundle.getClient().canUseAddon(Le.BackgroundRemover)}async removeBackgroundFromImage(t=!0){if(!await this.canUseBackgroundRemover())throw new Error("The current Integration does not have access to the Background Remover. Please call canUseBackgroundRemover to ensure you disable this feature when appropriate.");const e=await this.getOriginalImage();if(!e)throw new Error("You must supply an image selection before attempting to remove the background.");const a=this.bundle.getGlobalPropertyStateManager(),r=await $.removeBackgroundFromAsset(e),o={...a.getAspectStorage(this.property.name),backgroundRemovedAssetKey:r.key,useOriginalAsset:!t},l=[t?a.setAspect(this.property.name,r.key,o):a.setAspectStorage(this.property.name,o)];return t&&(l.push(this.applyImageSelection(r,void 0,!1,!1)),l.push(this.loadImageData())),await Promise.all(l),this.updateSharedStepStorage(o),r}hasImage(){return!!this.getStateValue()}async getImage(){const t=this.getStateValue();if(t)return $.getLocalOrFromServer(t)}async getImageWithColors(){return await this.loadImageData(),this.imageData?.svg?je(He(this.imageData.svg,this.imageData.colors??{},!1)):this.imageData?.src}async getOriginalImage(){const t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(t?.originalAssetKey)return $.getLocalOrFromServer(t.originalAssetKey)}async getBackgroundRemovedImage(){const t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(t?.backgroundRemovedAssetKey)return $.getLocalOrFromServer(t.backgroundRemovedAssetKey)}getUseOriginalImage(){return this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)?.useOriginalAsset??!1}async setUseOriginalImage(t){const e=await this.getOriginalImage();if(!e)throw new Error("You must select an image before calling setUseOriginalImage");const a=this.bundle.getGlobalPropertyStateManager(),r=a.getAspectStorage(this.property.name);if(r?.useOriginalAsset===t)return;const i={...r,useOriginalAsset:t},o=t?r?.originalAssetKey:r?.backgroundRemovedAssetKey,s=[a.setAspect(this.property.name,o||"",i)];if(t)s.push(this.applyImageSelection(e,void 0,!1,!1));else{const l=async()=>{const c=await this.getBackgroundRemovedImage();if(!c)throw new Error("You must call removeBackgroundFromImage before attempting to use that version of the image.");this.applyImageSelection(c,void 0,!1,!1)};s.push(l())}s.push(this.loadImageData()),await Promise.all(s),this.updateSharedStepStorage(i)}async applyGlobalState(t){const e=this.getStateValue();if(!e)return;const a=await $.getLocalOrFromServer(e);if(!a)return;await this.applyImageSelection(a,t,!1,!0);const r=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(r){if(this.updateSharedStepStorage({...r}),r.colors){const i=new Map(r.colors.map(o=>[o.key,{browserValue:o.browserValue,pmsValue:o.pmsValue}])??[]);this.getSharedSteps(t).forEach(o=>{o.changeColors(i)})}}else this.updateSharedStepStorage({originalAssetKey:e}),await this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name,{originalAssetKey:e})}getAvailableColors(){return this.property.data?.fileUpload?.colorPickerEnabled?this.colorOption?.variants?.map(t=>({fill:t.color,stroke:t.color,variant:t,pmsValue:t.name}))??[]:[]}getCurrentColors(){return this.imageData?.colors}isColorPickerEnabled(){return this.property.data?.fileUpload?.colorPickerEnabled??!1}isPmsPickerEnabled(){return this.property.data?.fileUpload?.pmsPickerEnabled??!1}async getOriginalColors(){return this.imageData?.svg?(await rt(this.imageData.svg)).colors:void 0}async changeColors(t){if(!this.imageData?.svg)return;const e=this.getSharedSteps(),a=new Map(Object.entries(t));e.forEach(i=>{i.changeColors(a)});const r=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name,{...r,colors:Object.entries(t).map(([i,o])=>({key:i,browserValue:o.browserValue,pmsValue:o.pmsValue}))}),await this.loadImageData()])}async applyImageSelection(t,e,a=!0,r=!0){const o=this.getSharedSteps(e).map(s=>{const l=s;if(l.getFrameService())return l.selectImage(t,a,r)});await Promise.all(o)}updateSharedStepStorage(t){this.bundle.getWorkflowExperiences().forEach(a=>a.getSteps().forEach(r=>{if(r.getOverrideGlobalPropertyConfiguration(this.property.type))return;r.getRaw().globalPropertyAspectConfigurations?.some(o=>o.globalPropertyConfigurationId===this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration?.id&&o.aspectName===this.property.name)&&a.getWorkflowManager().updateStorage(r.getId(),{framePatternData:{originalAssetKey:t.originalAssetKey,backgroundRemovedAssetKey:t.backgroundRemovedAssetKey,useOriginalAsset:t.useOriginalAsset}})}))}}class jr extends Ke{constructor(t,e){super(t,e)}isTemplatingEnabled(){return this.property.data?.text?.templatingEnabled||!1}getText(){const t=this.getStateValue();return t||""}async setText(t){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t,void 0,void 0),this.applyTextSelection(t)])}async applyGlobalState(t){const e=this.getStateValue();if(!e)return Promise.resolve();await this.applyTextSelection(e,t)}async applyTextSelection(t,e){const r=this.getSharedSteps(e).map(i=>{i.setText(t)});await Promise.all(r)}}class Ka extends Ke{constructor(t,e,a){super(t,e),this.optionResource=a}async initDefaultVariant(){const t=this.optionResource?.variants?.find(e=>e.id===this.optionResource?.defaultVariant?.id);t&&await this.selectVariant(new at(t))}getCurrentVariant(){if(!this.optionResource)return;const t=this.getStateValue();if(t){const e=this.optionResource.variants?.find(a=>a.id===t);return e?new at(e):void 0}else{const e=this.optionResource.variants?.find(a=>a.id===this.optionResource?.defaultVariant?.id);return e?new at(e):void 0}}getAvailableVariants(){return(this.optionResource?.variants?.filter(e=>e.enabled)||[]).map(e=>new at(e))}getAllVariants(){return(this.optionResource?.variants||[]).map(e=>new at(e))}async selectVariant(t,e){await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.getId(),void 0,e),this.applyVariantSelection(t)])}async applyGlobalState(t){const e=this.getStateValue();if(!e)return Promise.resolve();const a=this.optionResource?.variants?.find(r=>r.id===e);return a?this.applyVariantSelection(new at(a),t):Promise.resolve()}async applyVariantSelection(t,e){const r=this.getSharedSteps(e).map(i=>i.selectVariant(t));await Promise.all(r)}}class Ba extends Ka{constructor(t,e,a){super(t,e,a)}async selectVariant(t,e){await this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.getId(),void 0,e),await this.applyColorVariant(t,void 0,e)}async applyGlobalState(t){const e=this.getStateValue();if(!e)return Promise.resolve();const a=this.optionResource?.variants?.find(i=>i.id===e);if(!a)return Promise.resolve();await this.applyColorVariant(new at(a),t);const r=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)?.customColor;r&&this.setCustomColor(r)}async applyColorVariant(t,e,a){const i=this.getSharedSteps(e).map(o=>{switch(o.getType()){case v.Shape:return o.selectVariant(t);case v.Text:return o.setFillColor({fill:t.getColor(),stroke:t.getColor(),variant:t.getResource()});case v.Illustration:return o.setColor(a?.toString()||"",t.getColor()||"")}});await Promise.all(i)}setCustomColor(t){this.getCurrentVariant()?.getColor()&&this.getCurrentVariant().getColor().toLowerCase()==="#custom"&&this.getSharedSteps().forEach(a=>a.setCustomColor(t)),this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name,{customColor:t})}getCustomColor(){return this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)?.customColor||this.getCurrentVariant()?.getColor()||"#ffffff"}}const pc=(n,t,e,a)=>n.flatMap(r=>r.getSteps()).filter(r=>r.getGlobalPropertyAspects(t).includes(e)&&r.getType()===a),fc=(n,t,e)=>{const r=pc(n,t,e,v.Illustration).map(i=>{const o=i.getCurrentVariant()?.getAssetResource(),s=i.getColors();return!o?.assetConfiguration||!s?0:Object.getOwnPropertyNames(s).length});return Math.max(...r)};function Ia(n,t){function e(a){if(typeof a>"u"||!Array.isArray(a)&&!wc(a))return a;if(Array.isArray(a))return Ia(a,t);let r={};for(const[i,o]of Object.entries(a))r[i]=Cc(o)?o:Ia(o,t);return Bi(r,t)}return Array.isArray(n)?n.map(e):e(n)}function Cc(n){return n==null}function wc(n){return typeof n=="object"&&!Array.isArray(n)&&n!==null}function Wr(n){const t=new Map;return n?.aspects?.forEach(e=>{e.value!==""&&t.set(e.name,!0)}),t}function Pe(n){return Ia(n,["__typename"])}class yc{constructor(t,e,a,r,i){this.mandatoryFulfilledAspects=new Map,this.bundleId=t,this.bundleOwnerId=e,this.configuration=a,this.bundleOptions=i;const o=i?.existingGlobalPropertyState;this.initPromise=o?Promise.resolve(o).then(()=>{console.log("Setting global property state to existing state."),this.globalPropertyState=Pe(o),this.recalculateMandatoryStates()}):this.createGlobalPropertyState().then(s=>{console.log("Setting global property state to new state."),this.globalPropertyState=Pe(s),this.recalculateMandatoryStates()}),this.onGlobalPropertyStateChange=r}async clearAspects(t){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const e=this.globalPropertyState.aspects;this.globalPropertyState.aspects=e.filter(a=>!t.includes(a.name))}recalculateMandatoryStates(){this.mandatoryFulfilledAspects=Wr(this.globalPropertyState)}setBundleOptions(t){this.bundleOptions=t}getBundleOptions(){return this.bundleOptions}setConfiguration(t){this.configuration=t}getInitializationPromise(){return this.initPromise}getGlobalPropertyState(){return this.globalPropertyState}async setGlobalPropertyState(t){this.globalPropertyState||await this.initPromise;const e=It(this.globalPropertyState);this.globalPropertyState={...Pe(t),id:e.id},this.recalculateMandatoryStates(),await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(e,this.globalPropertyState)}getAspectMandatoryFulfilled(t){return this.mandatoryFulfilledAspects.get(t)}getAspect(t,e){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const a=this.globalPropertyState.aspects.find(r=>r.name===t&&r.channel===e);if(a)return a.value}getAspectStorage(t,e){if(!this.globalPropertyState)throw new Error("Global property state not initialized");return this.globalPropertyState.aspects.find(a=>a.name===t&&a.channel===e)?.storage}async setAspect(t,e,a,r){if(!this.globalPropertyState)throw new Error("Global property state not initialized");if(!this.configuration)throw new Error("Global property configuration not linked to the state manager.");const i=this.configuration.aspects.find(l=>l.name===t);if(!i)throw new Error(`Failed to find configuration aspect with name: ${t}`);this.mandatoryFulfilledAspects.set(t,e!=="");const o=It(this.globalPropertyState),s=this.globalPropertyState.aspects.filter(l=>l.name===t);if(s.length>0)if(r){const l=s.find(c=>c.channel===r);if(l)l.value=e,l.type=i.type,l.channel=r,a!==void 0&&(l.storage=a!==null?a:void 0);else{if(r===1){const c=this.globalPropertyState.aspects.findIndex(d=>!d.channel&&d.name===t);c&&c>0&&this.globalPropertyState.aspects.splice(c,1)}this.globalPropertyState.aspects.push({name:t,value:e,type:i.type,storage:a!==null?a:void 0,channel:r})}}else{const l=s[0];l.value=e,l.type=i.type,a!==void 0&&(l.storage=a!==null?a:void 0)}else this.globalPropertyState.aspects.push({name:t,value:e,type:i.type,storage:a!==null?a:void 0,channel:r});ne(o,this.globalPropertyState)||(await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(o,this.globalPropertyState))}async setAspectStorage(t,e,a){if(!this.globalPropertyState)throw new Error("Global property state not initialized");if(!this.configuration)throw new Error("Global property configuration not linked to the state manager.");const r=this.configuration.aspects.find(s=>s.name===t);if(!r)throw new Error(`Failed to find configuration aspect with name: ${t}`);const i=It(this.globalPropertyState),o=this.globalPropertyState.aspects.filter(s=>s.name===t);if(o.length>0)if(a){const s=o.find(l=>l.channel===a);s&&(s.storage=e!==null?e:void 0,s.type=r.type)}else{const s=o[0];s.storage=e!==null?e:void 0,s.type=r.type}else this.globalPropertyState.aspects.push({name:t,value:"",type:r.type,storage:e!==null?e:void 0,channel:a});ne(i,this.globalPropertyState)||(await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(i,this.globalPropertyState))}async updateGlobalPropertyState(){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const t=await y.getShadowGraphqlClient().mutate({mutation:El,variables:{id:this.globalPropertyState.id,aspects:this.globalPropertyState.aspects.map(e=>{let a=e.type&&e.storage?{}:void 0;if(a)switch(e.type){case L.FileUpload:{a.fileUpload=e.storage;break}case L.Option:{a.option=e.storage;break}case L.ColorOption:{a=e.storage;break}}return{name:e.name,value:e.value,type:e.type,storage:a,channel:e.channel}})},context:{headers:{bundleOwnerId:this.bundleOwnerId,...this.bundleOptions?.additionalHeaders}}});if(t.data?.globalPropertyStateUpdate)this.globalPropertyState=Pe(t.data.globalPropertyStateUpdate);else throw new Error("Unable to update global property state")}async createGlobalPropertyState(){const t=await y.getShadowGraphqlClient().mutate({mutation:vl,variables:{bundleId:this.bundleId},context:{headers:{bundleOwnerId:this.bundleOwnerId,...this.bundleOptions?.additionalHeaders}}});if(t.data?.globalPropertyStateCreate&&t.data.globalPropertyStateCreate.id)return t.data.globalPropertyStateCreate;throw new Error(`Unable to create global property state for bundle: ${this.bundleId}`)}}class Sc{constructor(t){this.setState(t||'{"transactions": []}')}setState(t){t&&(this.state=JSON.parse(t))}getState(){return this.state}applyStateToWorkflowExperience(t){if(!this.state||!t?.getWorkflowManager()?.getModelContainer())return;const e=this.state.transactions.find(o=>o.transactionId===t.getTransaction().id);if(!e)return;const a=this.getTransformToApply(e);if(!a)return;const r=this.flipTransform(a,t.getWorkflowManager().getPreviewService()),i=t.getWorkflowManager().getModelContainer();i.position=r.position,i.rotation=r.rotation,i.scale=r.scale}getTransformToApply(t){return t.activeTransform&&t.transforms?t.transforms[t.activeTransform]:t.transform}updateWorkflowExperienceTransform(t,e,a){const r=t.getTransaction().id;this.state?this.state.transactions||(this.state.transactions=[]):this.state={transactions:[]};const i=this.state.transactions.find(o=>o.transactionId===r);i?(i.transforms||(i.transforms={}),i.transforms[e]=a):this.state.transactions.push({transactionId:r,activeTransform:e,transforms:{[e]:a}})}activateWorkflowExperienceTransform(t,e){if(!t?.getWorkflowManager()?.getModelContainer()||!this.state)return;const a=t.getTransaction().id,r=this.state.transactions.find(l=>l.transactionId===a),i=r?.transforms?.[e];if(!i)return;const o=this.flipTransform(i,t.getWorkflowManager().getPreviewService()),s=t.getWorkflowManager().getModelContainer();s.position=o.position,s.rotation=o.rotation,s.scale=o.scale,r.activeTransform=e}removeStateForTransaction(t){if(!this.state||!this.state.transactions)return;const e=this.state.transactions.findIndex(a=>a.transactionId===t);e!==-1&&this.state.transactions.splice(e,1)}getSerializedState(){if(this.state)return this.deleteFieldNameFromObjectRecursive(this.state,"__typename"),JSON.stringify(this.state)}deleteFieldNameFromObjectRecursive(t,e){if(!(typeof t!="object"||t===null))for(const a in t)a===e?delete t[a]:this.deleteFieldNameFromObjectRecursive(t[a],e)}flipTransform(t,e){return e&&e.flipTransform?e.flipTransform(t.position,{x:t.rotation.x*Math.PI/180,y:t.rotation.y*Math.PI/180,z:t.rotation.z*Math.PI/180},t.scale):{position:t.position,rotation:{x:t.rotation.x*Math.PI/180,y:t.rotation.y*Math.PI/180,z:t.rotation.z*Math.PI/180},scale:t.scale}}}const vc=f.gql`
2446
2454
  query GetManyMetafields($entityIds: [String!]!) {
2447
2455
  metafieldsMany(entityIds: $entityIds) {
2448
2456
  id
@@ -2453,14 +2461,14 @@
2453
2461
  }
2454
2462
  }
2455
2463
  }
2456
- `;class Sc{constructor(){this.internalMap=new Map}async requestKeysForEntity(t,e){const a=new Map;return await this.ensureIdsArePresent([t]),e.forEach(r=>{const i=this.requestKeyForEntityIfAvailable(t,r);i&&a.set(r,i)}),a}async ensureIdsArePresent(t){if(t.every(a=>this.internalMap.has(a)))return;const e=await S.getShadowGraphqlClient().query({query:yc,errorPolicy:"all",variables:{entityIds:t.filter(a=>!this.internalMap.has(a))}});t.forEach((a,r)=>{const i=e.data.metafieldsMany[r];this.internalMap.set(a,i.map(o=>({key:o.metafieldConfiguration.name,value:o.value})))})}async requestKeyForEntity(t,e){if(!this.internalMap.has(t))return;let a=this.internalMap.get(t);const r=a.find(i=>i.key===e);return r||(await this.ensureIdsArePresent([t]),a=this.internalMap.get(t)),r?JSON.parse(r.value):void 0}requestKeyForEntityIfAvailable(t,e){if(!this.internalMap.has(t))return;const r=this.internalMap.get(t).find(i=>i.key===e);if(r)return JSON.parse(r.value)}}const Wr=new Sc;var Hr=(n=>(n.Default="Default",n.Name="Name",n.Price="Price",n))(Hr||{});class Ka{constructor(t){this.fullFetched=!1,this.collection=t;const e=this.collection.productCollectionProducts;e&&e.length>0&&(this.fullFetched=!0)}getId(){return this.collection.id}getName(){return this.collection.name}getDescription(){return this.collection.description||""}getDispatchStartDate(){if(this.collection.dispatchStartDate)return new Date(this.collection.dispatchStartDate)}getDispatchEndDate(){if(this.collection.dispatchEndDate)return new Date(this.collection.dispatchEndDate)}getImage(){return this.collection.image}getProducts(){if(!this.collection.productCollectionProducts)throw new Error("Failed to find products on collection. Ensure you fetch them first!");return this.collection.productCollectionProducts.filter(t=>!!t.product).map(t=>new Yt(t))}async fetchProducts(t){if(this.fullFetched)return this.collection.productCollectionProducts.filter(a=>!!a.product).map(a=>new Yt(a));const e=await S.getShadowGraphqlClient().query({query:Pl,variables:{id:this.getId(),productIds:t},errorPolicy:"all"});return t||(this.fullFetched=!0),this.collection.productCollectionProducts=e.data.productCollections[0].productCollectionProducts||[],this.collection.productCollectionProducts.filter(a=>!!a.product).map(a=>new Yt(a))}async filterProducts(t,e,a,r){const i=await S.getShadowGraphqlClient().query({query:xl,errorPolicy:"all",variables:{id:this.getId(),filters:t?{link:"And",metafields:t}:void 0,tags:e?{include:e.include??[],exclude:e.exclude??[]}:void 0,sortKey:a,sortDescending:r}});if(!i.data?.productCollections||i.data?.productCollections.length===0)throw new Error("Failed to filter product collection products.");const o=this.getProducts(),s=i.data.productCollections[0].productCollectionProducts.map(l=>l.product.id);return o.filter(l=>s.includes(l.getId()))}async fetchProductsFeed(t,e,a,r,i,o,s,l){if(this.fullFetched){const A=await(a?this.filterProducts(a):this.fetchProducts());return{total:A.length,items:A.slice(t,t+e)}}const c=new AbortController,{signal:d}=c,u=S.getShadowGraphqlClient().watchQuery({query:Fl,variables:{id:this.getId(),limit:e,offset:t,productFilters:a?{link:"And",metafields:a}:void 0,productWorkflowFilters:l?{link:"And",metafields:l}:void 0,tags:r?{include:r.include??[],exclude:r.exclude??[]}:void 0,sortKey:i,sortDescending:o,quickSearch:s},errorPolicy:"all",fetchPolicy:"cache-first",returnPartialData:!0,context:{fetchOptions:{signal:d}}});return new Promise(A=>{let h=!1;const g=u.subscribe({next(p){if(h||p.partial&&(!p.data.productCollections||p.data.productCollections.length===0||!p.data.productCollections[0].productCollectionProductsFeed?.items||p.data.productCollections[0].productCollectionProductsFeed?.items.length===0))return;c.abort(),h=!0,g.unsubscribe();const m=p.data.productCollections?.[0].productCollectionProductsFeed?.items.filter(f=>!!f.product).map(f=>new Yt(Bt(f)))||[];A({items:m,total:p.data.productCollections?.[0].productCollectionProductsFeed?.total??0})},error(){h||(h=!0,g.unsubscribe(),A({items:[],total:0}))}})})}getTransformCollection(){if(this.collection.transformCollection)return new Yr(this.collection.transformCollection)}getResource(){return this.collection}}class Yt{constructor(t){this.product=t.product,this.productResource=t}getId(){return this.product.id}getName(){return this.product.name}getIntegrationByType(t,e){const r=(this.product.integrationProducts||[]).find(i=>{const o=i.integration?.type,s=i.integration?.type===t,l=e?i.integration?.externalIntegrationId===e:!0;return o&&s&&l});if(!r)throw new Error("Failed to find requested integration type on product. This is generally due to a configuration error");return r}getCurrentIntegration(){const e=(this.product.integrationProducts||[]).find(a=>a.integration?.isCurrent);if(!e)throw new Error(`Product: ${this.productResource.id} is not linked to this current integration. This is generally due to a configuration error.`);return e}getDefaultWorkflow(){const t=this.product.workflows;if(t===void 0)throw new gt("Called getDefaultWorkflow() before fetching collection products. Use collection.fetchProducts() first to ensure the data is available.");if(t.length===0)throw new gt("Called getDefaultWorkflow() but no workflows on requested product. Ensure at least 1 workflow is assigned to this product.");const e=this.productResource.workflowId;if(e){const a=t.find(r=>r.workflowName===e);if(a)return new Tt(a)}if(t.length===1)return new Tt(t[0]);throw new gt("Called getDefaultWorkflow() but no default workflow is configured for the requested product. Multiple workflows exist so we can't assume!")}getAllWorkflows(){if((this.product.workflows||[]).length===0)throw new gt("No workflows on configured product. Ensure at least 1 workflow is assigned to this product.");return this.product.workflows.sort((e,a)=>(e.index??0)-(a.index??0)).map(e=>new Tt(e))}getIntegrations(){return this.product.integrationProducts||[]}getResource(){return this.product}getBasePrice(t){const e=this.product.basePrice||0;if(!t)return e;if(!t.integrationType&&!t.externalId&&!t.integrationId)throw new Error("You must provide at least one of the following fields on the includeAdditionalProduct object: integrationType, externalId, integrationId");let a;return t.integrationId?a=this.product.integrationProducts?.find(r=>r.integration?.id===t.integrationId):t.externalId?a=this.product.integrationProducts?.find(r=>r.integration?.externalIntegrationId===t.externalId):a=this.product.integrationProducts?.find(r=>r.integration?.type===t.integrationType),a?.additionalIntegrationProduct?.product?e+(a.additionalIntegrationProduct.product.basePrice||0):e}async requestMetafields(t){return Wr.requestKeysForEntity(this.product.id,t)}}class Tt{constructor(t){this.workflow=t}getId(){return this.workflow.workflowName}getName(){return this.workflow.friendlyName}getThumbnail(){return this.workflow.imageUrl}}class Yr{constructor(t){this.collection=t}getId(){return this.collection.id}getName(){return this.collection.name}getTransforms(){return this.collection.transforms.map(t=>new Jr(t))}}class Jr{constructor(t){this.transform=t}getId(){return this.transform.id}getName(){return this.transform.name}get(){return{position:this.transform.position,rotation:this.transform.rotation,scale:this.transform.scale}}}const vc=C.gql`
2457
- ${we(!1)}
2464
+ `;class Ec{constructor(){this.internalMap=new Map}async requestKeysForEntity(t,e){const a=new Map;return await this.ensureIdsArePresent([t]),e.forEach(r=>{const i=this.requestKeyForEntityIfAvailable(t,r);i&&a.set(r,i)}),a}async ensureIdsArePresent(t){if(t.every(a=>this.internalMap.has(a)))return;const e=await y.getShadowGraphqlClient().query({query:vc,errorPolicy:"all",variables:{entityIds:t.filter(a=>!this.internalMap.has(a))}});t.forEach((a,r)=>{const i=e.data.metafieldsMany[r];this.internalMap.set(a,i.map(o=>({key:o.metafieldConfiguration.name,value:o.value})))})}async requestKeyForEntity(t,e){if(!this.internalMap.has(t))return;let a=this.internalMap.get(t);const r=a.find(i=>i.key===e);return r||(await this.ensureIdsArePresent([t]),a=this.internalMap.get(t)),r?JSON.parse(r.value):void 0}requestKeyForEntityIfAvailable(t,e){if(!this.internalMap.has(t))return;const r=this.internalMap.get(t).find(i=>i.key===e);if(r)return JSON.parse(r.value)}}const Hr=new Ec;var Yr=(n=>(n.Default="Default",n.Name="Name",n.Price="Price",n))(Yr||{});class _a{constructor(t){this.fullFetched=!1,this.collection=t;const e=this.collection.productCollectionProducts;e&&e.length>0&&(this.fullFetched=!0)}getId(){return this.collection.id}getName(){return this.collection.name}getDescription(){return this.collection.description||""}getDispatchStartDate(){if(this.collection.dispatchStartDate)return new Date(this.collection.dispatchStartDate)}getDispatchEndDate(){if(this.collection.dispatchEndDate)return new Date(this.collection.dispatchEndDate)}getImage(){return this.collection.image}getProducts(){if(!this.collection.productCollectionProducts)throw new Error("Failed to find products on collection. Ensure you fetch them first!");return this.collection.productCollectionProducts.filter(t=>!!t.product).map(t=>new Kt(t))}async fetchProducts(t){if(this.fullFetched)return this.collection.productCollectionProducts.filter(a=>!!a.product).map(a=>new Kt(a));const e=await y.getShadowGraphqlClient().query({query:Fl,variables:{id:this.getId(),productIds:t},errorPolicy:"all"});return t||(this.fullFetched=!0),this.collection.productCollectionProducts=e.data.productCollections[0].productCollectionProducts||[],this.collection.productCollectionProducts.filter(a=>!!a.product).map(a=>new Kt(a))}async filterProducts(t,e,a,r){const i=await y.getShadowGraphqlClient().query({query:Dl,errorPolicy:"all",variables:{id:this.getId(),filters:t?{link:"And",metafields:t}:void 0,tags:e?{include:e.include??[],exclude:e.exclude??[]}:void 0,sortKey:a,sortDescending:r}});if(!i.data?.productCollections||i.data?.productCollections.length===0)throw new Error("Failed to filter product collection products.");const o=this.getProducts(),s=i.data.productCollections[0].productCollectionProducts.map(l=>l.product.id);return o.filter(l=>s.includes(l.getId()))}async fetchProductsFeed(t,e,a,r,i,o,s,l){if(this.fullFetched){const A=await(a?this.filterProducts(a):this.fetchProducts());return{total:A.length,items:A.slice(t,t+e)}}const c=new AbortController,{signal:d}=c,u=y.getShadowGraphqlClient().watchQuery({query:kl,variables:{id:this.getId(),limit:e,offset:t,productFilters:a?{link:"And",metafields:a}:void 0,productWorkflowFilters:l?{link:"And",metafields:l}:void 0,tags:r?{include:r.include??[],exclude:r.exclude??[]}:void 0,sortKey:i,sortDescending:o,quickSearch:s},errorPolicy:"all",fetchPolicy:"cache-first",returnPartialData:!0,context:{fetchOptions:{signal:d}}});return new Promise(A=>{let h=!1;const g=u.subscribe({next(p){if(h||p.partial&&(!p.data.productCollections||p.data.productCollections.length===0||!p.data.productCollections[0].productCollectionProductsFeed?.items||p.data.productCollections[0].productCollectionProductsFeed?.items.length===0))return;c.abort(),h=!0,g.unsubscribe();const m=p.data.productCollections?.[0].productCollectionProductsFeed?.items.filter(C=>!!C.product).map(C=>new Kt(It(C)))||[];A({items:m,total:p.data.productCollections?.[0].productCollectionProductsFeed?.total??0})},error(){h||(h=!0,g.unsubscribe(),A({items:[],total:0}))}})})}getTransformCollection(){if(this.collection.transformCollection)return new Jr(this.collection.transformCollection)}getResource(){return this.collection}}class Kt{constructor(t){this.product=t.product,this.productResource=t}getId(){return this.product.id}getName(){return this.product.name}getIntegrationByType(t,e){const r=(this.product.integrationProducts||[]).find(i=>{const o=i.integration?.type,s=i.integration?.type===t,l=e?i.integration?.externalIntegrationId===e:!0;return o&&s&&l});if(!r)throw new Error("Failed to find requested integration type on product. This is generally due to a configuration error");return r}getCurrentIntegration(){const e=(this.product.integrationProducts||[]).find(a=>a.integration?.isCurrent);if(!e)throw new Error(`Product: ${this.productResource.id} is not linked to this current integration. This is generally due to a configuration error.`);return e}getDefaultWorkflow(){const t=this.product.workflows;if(t===void 0)throw new mt("Called getDefaultWorkflow() before fetching collection products. Use collection.fetchProducts() first to ensure the data is available.");if(t.length===0)throw new mt("Called getDefaultWorkflow() but no workflows on requested product. Ensure at least 1 workflow is assigned to this product.");const e=this.productResource.workflowId;if(e){const a=t.find(r=>r.workflowName===e);if(a)return new Nt(a)}if(t.length===1)return new Nt(t[0]);throw new mt("Called getDefaultWorkflow() but no default workflow is configured for the requested product. Multiple workflows exist so we can't assume!")}getAllWorkflows(){if((this.product.workflows||[]).length===0)throw new mt("No workflows on configured product. Ensure at least 1 workflow is assigned to this product.");return this.product.workflows.sort((e,a)=>(e.index??0)-(a.index??0)).map(e=>new Nt(e))}getIntegrations(){return this.product.integrationProducts||[]}getResource(){return this.product}getBasePrice(t){const e=this.product.basePrice||0;if(!t)return e;if(!t.integrationType&&!t.externalId&&!t.integrationId)throw new Error("You must provide at least one of the following fields on the includeAdditionalProduct object: integrationType, externalId, integrationId");let a;return t.integrationId?a=this.product.integrationProducts?.find(r=>r.integration?.id===t.integrationId):t.externalId?a=this.product.integrationProducts?.find(r=>r.integration?.externalIntegrationId===t.externalId):a=this.product.integrationProducts?.find(r=>r.integration?.type===t.integrationType),a?.additionalIntegrationProduct?.product?e+(a.additionalIntegrationProduct.product.basePrice||0):e}async requestMetafields(t){return Hr.requestKeysForEntity(this.product.id,t)}}class Nt{constructor(t){this.workflow=t}getId(){return this.workflow.workflowName}getName(){return this.workflow.friendlyName}getThumbnail(){return this.workflow.imageUrl}}class Jr{constructor(t){this.collection=t}getId(){return this.collection.id}getName(){return this.collection.name}getTransforms(){return this.collection.transforms.map(t=>new Kr(t))}}class Kr{constructor(t){this.transform=t}getId(){return this.transform.id}getName(){return this.transform.name}get(){return{position:this.transform.position,rotation:this.transform.rotation,scale:this.transform.scale}}}const bc=f.gql`
2465
+ ${ye(!1)}
2458
2466
  query GetProductCollections($ids: [String!]!) {
2459
2467
  productCollections(ids: $ids) {
2460
2468
  ...ProductCollectionFields
2461
2469
  }
2462
2470
  }
2463
- `,Ec=async n=>(await S.getShadowGraphqlClient().query({query:vc,errorPolicy:"all",variables:{ids:n}})).data?.productCollections?.map(e=>new Ka(e));class bc{constructor(){this.listeners={}}on(t,e){this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)}off(t,e){this.listeners[t]&&(this.listeners[t]=this.listeners[t].filter(a=>a!==e))}emit(t,e){if(this.listeners[t])for(const a of this.listeners[t])a(e)}clear(t){if(t)delete this.listeners[t];else for(const e in this.listeners)delete this.listeners[e]}}const Bc=C.gql`
2471
+ `,Bc=async n=>(await y.getShadowGraphqlClient().query({query:bc,errorPolicy:"all",variables:{ids:n}})).data?.productCollections?.map(e=>new _a(e));class Ic{constructor(){this.listeners={}}on(t,e){this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)}off(t,e){this.listeners[t]&&(this.listeners[t]=this.listeners[t].filter(a=>a!==e))}emit(t,e){if(this.listeners[t])for(const a of this.listeners[t])a(e)}clear(t){if(t)delete this.listeners[t];else for(const e in this.listeners)delete this.listeners[e]}}const Pc=f.gql`
2464
2472
  mutation AddAddressToBundle(
2465
2473
  $bundleId: String!
2466
2474
  $streetAddress: String
@@ -2482,26 +2490,26 @@
2482
2490
  id
2483
2491
  }
2484
2492
  }
2485
- `,Ic=C.gql`
2493
+ `,xc=f.gql`
2486
2494
  mutation AddOrganizationToBundle($bundleId: String!, $organizationName: String!) {
2487
2495
  organizationAttachToBundle(bundleId: $bundleId, organizationName: $organizationName) {
2488
2496
  id
2489
2497
  }
2490
2498
  }
2491
- `,Pc=C.gql`
2499
+ `,Fc=f.gql`
2492
2500
  mutation GenerateQuoteId($id: String!) {
2493
2501
  bundleGenerateQuoteId(id: $id) {
2494
2502
  id
2495
2503
  quoteId
2496
2504
  }
2497
2505
  }
2498
- `;class sa{constructor(t,e,a,r,i,o){this.workflowExperiences=[],this.eventEmitter=new bc,this.updatesLocked=!1,this.client=t,this.id=e.id,this.name=e.name||"",this.dispatchDate=e.dispatchDate,this.template=e.template||!1,this.quoteId=e.quoteId,this.shareActions=e.bundleShareActions,this.workflowViewerLink=e.workflowViewerLink,this.workflowViewerAmendLink=e.workflowViewerAmendLink,this.ownerId=i,this.metadata=new Map(e.metadata?.map(c=>[c.key,c.value])||[]),this.completed=e.completed??!1,this.productCollection=e.productCollection,this.bundleStateManager=new wc(e.bundleStateData);const s=this.productCollection?.globalPropertyConfiguration;this.globalConfigurationPropertyId=s?.id,this.globalPropertyStateManager=new Cc(this.id,this.ownerId,s,this.onGlobalPropertiesChanged.bind(this),o),this.globalPropertyHandleService=new hc(this),this.setPreviewService(a);const l=new Promise((c,d)=>{if(o?.readonly){c([]);return}console.log("Setting default global variants.");const u=this.globalPropertyStateManager.getGlobalPropertyState();u?this.globalPropertyHandleService.getHandles().then(A=>{const h=A.map(g=>{if(g.getType()===U.ColorOption||g.getType()===U.Option){const p=g;if(!u.aspects.find(f=>f.name===p.getName()))return p.initDefaultVariant()}});Promise.all(h).then(c).catch(d)}):(console.log("Attempted to set global default variant before state was initialized."),c([]))});this.initializationPromise=Promise.all([this.loadExistingWorkflowExperiences(e.transactions?.map(c=>c.id)||[],{...r,bundleOwnerId:i}),this.globalPropertyStateManager.getInitializationPromise()]).then(()=>l),this.initializationPromise.catch(c=>{console.error(`Bundle initialization failed: ${c}`)}),this.initializationPromise.then(()=>{this.getGlobalProperties().then(c=>this.checkMandatoryHandlesChanged(void 0,c))})}getIntegrationProductIds(){return this.bundleStateManager.getState()?.integrationProductIds}async addIntegrationProductId(t){const e=this.bundleStateManager.getState();if(e){if(!e.integrationProductIds)e.integrationProductIds=[];else if(e.integrationProductIds.some(r=>r===t)){this.fireEvent("bundle-integration-products-added",{integrationProductIds:e.integrationProductIds});return}e.integrationProductIds=[...e.integrationProductIds,t];const a=JSON.stringify(e);this.bundleStateManager.setState(a),this.fireEvent("bundle-integration-products-added",{integrationProductIds:e.integrationProductIds}),await S.getShadowGraphqlClient().mutate({mutation:Cn,variables:{id:this.id,bundleStateData:a},context:{bundleOwnerId:this.ownerId}})}}getTemplate(){return this.template}async generateQuoteId(){const e=(await S.getShadowGraphqlClient().mutate({mutation:Pc,variables:{id:this.id},context:{bundleOwnerId:this.ownerId}})).data?.bundleGenerateQuoteId?.quoteId;return this.quoteId=e,e||""}async attachAddress(t,e,a,r,i,o){await S.getShadowGraphqlClient().mutate({mutation:Bc,variables:{bundleId:this.id,streetAddress:t||void 0,apartment:e||void 0,city:a||void 0,country:r||void 0,state:i||void 0,postCode:o||void 0},context:{bundleOwnerId:this.ownerId}})}async attachOrganization(t){await S.getShadowGraphqlClient().mutate({mutation:Ic,variables:{bundleId:this.id,organizationName:t},context:{bundleOwnerId:this.ownerId}})}setBundleOptions(t){this.globalPropertyStateManager.setBundleOptions(t)}getInitializationPromise(){return this.initializationPromise}addEventListener(t,e){this.eventEmitter.on(t,e)}removeEventListener(t,e){this.eventEmitter.off(t,e)}getClient(){return this.client}getId(){return this.id}getName(){return this.name}getQuoteId(){return this.quoteId}setName(t){return this.name=t,this.updateBundle()}getDispatchDate(){return this.dispatchDate}setDispatchDate(t){return this.dispatchDate=t,this.updateBundle()}getPurchaseOrder(){return this.purchaseOrder}setPurchaseOrder(t){return this.purchaseOrder=t,this.updateBundle()}getMetadata(){return new Map(this.metadata)}setMetadata(t){return this.metadata=new Map(t),this.updateBundle()}setNameAndMetadata(t,e){return this.name=t,this.metadata=new Map(e),this.updateBundle()}hasGlobalProperties(){return!!this.productCollection?.globalPropertyConfiguration}getGlobalPropertyConfiguration(){return this.productCollection?.globalPropertyConfiguration}async getGlobalProperties(){return this.globalPropertyHandleService.applyConditionsFromState(await this.globalPropertyHandleService.getHandles(),this.getGlobalPropertyStateManager().getGlobalPropertyState())}async applyGlobalPropertyState(t){this.updatesLocked=!0;const e=await this.globalPropertyHandleService.getHandles();try{for(const a of t.aspects){const r=a?.name;await this.getGlobalPropertyStateManager().setAspect(r,a.value)}for(const a of t.aspects){const r=a?.name,i=e.find(o=>o.getName()===r);if(i)switch(a.type){case U.FileUpload:{const o=i,s=await Me([a.value]);s.length>0&&await o.selectImage(s[0]);const l=a.storage?.colors;if(l){const c=Object.fromEntries(l.map(d=>[d.key,{browserValue:d.browserValue,pmsValue:d.pmsValue}])??[]);await o.changeColors(c)}break}case U.ColorOption:{const o=i,l=o.getAllVariants().find(d=>d.getId()===a.value),c=a.storage?a.storage:void 0;l&&await o.selectVariant(l),c?.customColor&&o.setCustomColor(c.customColor);break}case U.Option:{const o=i,l=o.getAllVariants().find(c=>c.getId()===a.value);l&&await o.selectVariant(l);break}case U.Text:{await i.setText(a.value);break}}}}finally{this.updatesLocked=!1,this.onGlobalPropertiesChanged(void 0,this.globalPropertyStateManager.getGlobalPropertyState())}}getGlobalPropertyStateManager(){return this.globalPropertyStateManager}async getGlobalPropertyTotalSubunits(){return(await this.globalPropertyHandleService.getHandles()).filter(a=>a.getType()===U.Option).map(a=>a.getCurrentVariant()?.getPrice()||0).reduce((a,r)=>a+r,0)}getTotalSubunits(){return this.workflowExperiences.map(t=>t.getTotalPriceSubunits()).reduce((t,e)=>t+e,0)}getProductCollection(){return this.productCollection?new Ka(this.productCollection):void 0}async initializeAdditionalRequiredColorChannels(t){for(const e of t.getStepsByType(v.Illustration)){const a=e.getGlobalPropertyAspects(this.globalConfigurationPropertyId||"");for(const r of a){const i=this.getGlobalPropertyConfiguration()?.aspects.find(o=>o.name===r);if(i&&i.type===U.ColorOption){const o=e.getCurrentVariant()?.getAssetResource(),s=o?.assetConfiguration?.channelNumbers||[],l=o?.assetConfiguration?.defaultColorVariants||[],c=mc(this.getWorkflowExperiences(),this.globalConfigurationPropertyId||"",r),d=[...new Set(s.map(A=>A.number))];if(d.length>c)for(const A of d){const h=this.getGlobalPropertyStateManager(),g=l.find(p=>p.channelNumber===A);g&&await h.setAspect(r,g.variant.id||"",void 0,g.channelNumber)}}}}}async addWorkflowExperience(t){await this.initializeAdditionalRequiredColorChannels(t),t.setBundle(this),await this.appendWorkflowExperience(t),await this.injectExperienceIntoPreviewService(t),await t.getWorkflowManager().getInitializationPromise();const e=await this.getGlobalProperties();for(const a of e)await a.applyGlobalState([t]);this.fireEvent("workflow-experience-added",{workflowExperiences:[t]})}async addWorkflowExperiences(t){for(const s of t)await this.initializeAdditionalRequiredColorChannels(s);const e=t.map(s=>s.getTransaction().id),a=e.map(s=>this.workflowExperiences.find(l=>l.getTransaction().id===s));if(a.some(s=>!!s))throw new Error("Unable to add transaction to bundle - Already Exists: "+a.filter(s=>!!s).map(s=>s?.getTransaction().id).join(", "));const r=k.getMap("transactionOwnerIds")||new Map,i=e.map(s=>r.get(s));await S.getShadowGraphqlClient().mutate({mutation:Tl,variables:{id:this.id,transactionIds:e,transactionOwnerIds:i},context:{bundleOwnerId:this.ownerId}}).catch(s=>{console.error(s)}),this.workflowExperiences.push(...t);const o=async()=>{for(const l of t)l.setBundle(this),await this.injectExperienceIntoPreviewService(l);await Promise.all(t.map(l=>l.getWorkflowManager().getInitializationPromise()));const s=await this.getGlobalProperties();for(const l of s)await l.applyGlobalState(t)};await Promise.all([this.updateTransactionOrder(),o()]),this.workflowExperiences.forEach(s=>s.checkForPriceBreakChanges()),this.fireEvent("workflow-experience-added",{workflowExperiences:this.workflowExperiences})}async appendWorkflowExperience(t,e=!0){const a=t.getTransaction().id;if(this.workflowExperiences.find(s=>s.getTransaction().id===a))throw new Error("Unable to add transaction to bundle - Already Exists!");const o=(k.getMap("transactionOwnerIds")||new Map).get(a);await S.getShadowGraphqlClient().mutate({mutation:Ml,variables:{id:this.id,transactionId:a},context:{bundleOwnerId:this.ownerId,transactionOwnerId:o}}),e&&(this.workflowExperiences.push(t),this.workflowExperiences.forEach(s=>s.checkForPriceBreakChanges()))}async removeWorkflowExperience(t){const e=this.workflowExperiences.indexOf(t);await this.removeTransaction(e,this.workflowExperiences[e].getTransaction()),this.fireEvent("workflow-experience-added",{workflowExperiences:[t]})}async removeWorkflowExperiences(t){await this.removeTransactions(t.map(e=>e.getTransaction()))}async removeWorkflowExperienceByTransaction(t){const e=this.workflowExperiences.findIndex(a=>a.getTransaction().id===t.id);await this.removeTransaction(e,t)}async removeWorkflowExperiencesByTransactions(t){await this.removeTransactions(t)}async removeTransaction(t,e,a=!0){if(t>-1){const r=this.workflowExperiences.find(i=>i.getTransaction().id===e.id);if(r.setBundle(void 0),this.previewService&&r.getWorkflowManager().ejectFromPreviewService(),this.bundleStateManager.removeStateForTransaction(e.id),await S.getShadowGraphqlClient().mutate({mutation:Nl,variables:{id:this.id,transactionId:e.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([i,o])=>({key:i,value:o})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),a){const i=this.workflowExperiences.splice(t,1);this.workflowExperiences.forEach(o=>o.checkForPriceBreakChanges()),r.checkForPriceBreakChanges(),await this.updateTransactionOrder(),this.fireEvent("workflow-experience-removed",{workflowExperiences:i})}}else throw new Error("Unable to remove workflow experience from bundle - Not Found! - "+e.id)}async removeTransactions(t){const e=t.map(r=>this.workflowExperiences.findIndex(i=>i.getTransaction().id===r.id));if(e.some(r=>r===-1))throw new Error("Unable to remove workflow experience from bundle - The following aren't included in the bundle: "+t.filter((r,i)=>e[i]===-1).map(r=>r.id).join(", "));const a=t.map(r=>this.workflowExperiences.splice(this.workflowExperiences.findIndex(i=>i.getTransaction().id===r.id),1)[0]);a.forEach(r=>r.setBundle(void 0)),[...this.workflowExperiences,...a].forEach(r=>r.checkForPriceBreakChanges()),this.previewService&&a.forEach(r=>r.getWorkflowManager().ejectFromPreviewService()),t.forEach(r=>this.bundleStateManager.removeStateForTransaction(r.id)),await S.getShadowGraphqlClient().mutate({mutation:Ql,variables:{id:this.id,transactionIds:t.map(r=>r.id),name:this.name,metadata:Array.from(this.metadata.entries()).map(([r,i])=>({key:r,value:i})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),this.fireEvent("workflow-experience-removed",{workflowExperiences:a}),await this.updateTransactionOrder()}async insertWorkflowExperience(t,e){await this.appendWorkflowExperience(t,!1),this.workflowExperiences.splice(e,0,t),await Promise.all([this.updateTransactionOrder(),(async()=>{await this.injectExperienceIntoPreviewService(t);const a=await this.getGlobalProperties();await Promise.all(a.map(r=>r.applyGlobalState([t])))})()])}async replaceWorkflowExperience(t,e){if(t<0||t>=this.workflowExperiences.length)throw new Error("Unable to replace workflow experience in bundle - Index out of range!");const a=this.workflowExperiences[t];if(a.getTransaction().id===e.getTransaction().id)throw new Error("Unable to replace workflow experience in bundle - Same transaction!");await Promise.all([this.removeTransaction(t,a.getTransaction(),!1),this.appendWorkflowExperience(e,!1)]),this.workflowExperiences[t]=e,await Promise.all([this.updateTransactionOrder(),(async()=>{await this.injectExperienceIntoPreviewService(e);const r=await this.getGlobalProperties();await Promise.all(r.map(i=>i.applyGlobalState([e])))})()])}async swapWorkflowExperiences(t,e){if(t<0||t>=this.workflowExperiences.length||e<0||e>=this.workflowExperiences.length)throw new Error("Unable to swap workflow experiences in bundle - Index out of range!");if(t===e)return;const a=this.workflowExperiences[t];this.workflowExperiences[t]=this.workflowExperiences[e],this.workflowExperiences[e]=a,await this.updateTransactionOrder()}getWorkflowExperiences(){return[...this.workflowExperiences]}async sortWorkflowExperiences(t){this.workflowExperiences=this.workflowExperiences.sort(t),await this.updateTransactionOrder()}getWorkflowExperienceCount(){return this.workflowExperiences.length}async addStakeholder(t,e){const a=await S.getShadowGraphqlClient().mutate({mutation:Rl,variables:{id:this.id,details:t,type:e||ne.Owner},context:{bundleOwnerId:this.ownerId}});if(!a.data?.bundleAddStakeholder)throw new Error("Bundle not found!");const r=a.data.bundleAddStakeholder.bundleStakeholders||[];this.storeStakeholderCustomers(r)}async removeStakeholder(t){if(!(await S.getShadowGraphqlClient().mutate({mutation:Ol,variables:{id:this.id,emailAddress:t},context:{bundleOwnerId:this.ownerId}})).data?.bundleRemoveStakeholder)throw new Error("Bundle not found!")}async updateStakeholders(t){const e=await S.getShadowGraphqlClient().mutate({mutation:$l,variables:{id:this.id,input:t},context:{bundleOwnerId:this.ownerId}});if(!e.data?.bundleUpdateStakeholders)throw new Error("Bundle not found!");const a=e.data.bundleUpdateStakeholders.bundleStakeholders||[];this.storeStakeholderCustomers(a)}async getAllStakeholders(){const t=await S.getShadowGraphqlClient().query({query:fn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id},context:{bundleOwnerId:this.ownerId}});if(!t.data.bundles||t.data.bundles.length===0)throw new Error("Bundle not found!");const e=t.data.bundles[0].bundleStakeholders||[];return this.storeStakeholderCustomers(e),e}async getCurrentStakeholder(){const t=await S.getShadowGraphqlClient().query({query:fn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id},context:{bundleOwnerId:this.ownerId}});if(!t.data.bundles||t.data.bundles.length===0)throw new Error("Bundle not found!");return t.data.bundles[0].currentBundleStakeholder}storeStakeholderCustomers(t){t.forEach(e=>{e.customer&&this.client.storeCustomer(e.customer)})}async finish(t,e){this.completed&&await S.getShadowGraphqlClient().mutate({mutation:ql,variables:{bundleId:this.id}});const a=await oc(this.workflowExperiences.map(r=>{const i=r.getWorkflow();if(!i)throw new Error("Unable to create designs - Workflow not found!");const o=r.getProduct();if(!o)throw new Error("Unable to create designs - Product not found!");return{workflowManager:r.getWorkflowManager(),workflow:i,layouts:r.getWorkflowManager().getLayouts(),getReducerState:()=>r.getCommandContext().getState(),product:o,transaction:r.getTransaction(),workflowSelections:r.getWorkflowManager().getWorkflowSelections(),designName:i.name,workflowMetadata:r.getWorkflowManager().getWorkflowMetadata()}}),t??(()=>{}),e?(r,i)=>{const o=this.workflowExperiences.find(s=>s.getTransaction().id===i);return o?e(o,r):(console.warn("SpiffCommerce - Bundle create design - Unable to find experience for transaction: "+i),Promise.resolve(void 0))}:void 0);return{bundleId:this.id,name:this.getName(),dispatchDate:this.getDispatchDate()||"",purchaseOrder:this.getPurchaseOrder()||"",collectionId:this.getProductCollection()?.getId()||"",collectionName:this.getProductCollection()?.getName()||"",items:a,bundleOwnerId:this.ownerId}}async placeOrder(){const t=this.workflowExperiences.map(e=>({transactionId:e.getTransaction().id,amountToOrder:e.getTransaction().quantity||1}));return await this.getClient().placeOrder(t)}getPreviewService(){return this.previewService}async setPreviewService(t){if(this.workflowExperiences&&this.workflowExperiences.length>0&&(this.workflowExperiences.forEach(e=>e.getWorkflowManager().ejectFromPreviewService()),t))for(const e of this.workflowExperiences)await this.injectExperienceIntoPreviewService(e);t&&t.registerModelLoadEventListener&&t.registerModelLoadEventListener(this.onModelLoadEvent.bind(this)),this.previewService&&this.previewService!==t&&this.previewService.unregisterModelLoadEventListener&&this.previewService.unregisterModelLoadEventListener(this.onModelLoadEvent.bind(this)),this.previewService=t}updateWorkflowExperienceTransform(t,e,a){return this.bundleStateManager.updateWorkflowExperienceTransform(t,e,a),this.updateBundle()}activateWorkflowExperienceTransform(t,e){return this.bundleStateManager.activateWorkflowExperienceTransform(t,e),this.updateBundle()}async assignGlobalPropertyConfiguration(t){await S.getShadowGraphqlClient().mutate({mutation:Vl,variables:{bundleId:this.id,globalPropertyConfigurationId:t},context:{bundleOwnerId:this.ownerId}}),this.globalConfigurationPropertyId=t}async assignProductCollection(t){const e=await S.getShadowGraphqlClient().mutate({mutation:Ll(this.globalPropertyStateManager.getBundleOptions()?.eagerFetchProducts??!1),variables:{id:this.id,productCollectionId:t??""},context:{bundleOwnerId:this.ownerId}});if(e.data?.bundleAssignProductCollection.productCollection){this.productCollection=e.data.bundleAssignProductCollection.productCollection;const a=e.data.bundleAssignProductCollection.productCollection.globalPropertyConfiguration;this.globalPropertyStateManager.setConfiguration(a),this.globalConfigurationPropertyId=a?.id}}onModelLoadEvent(t){t.eventType==="unload"||!t.modelContainer||(t.modelContainer.registerMaterialSelectedCallback(()=>this.onModelSelectedEvent(t.modelContainer,!0)),t.modelContainer.registerMaterialDeselectedCallback(()=>this.onModelSelectedEvent(t.modelContainer,!1)))}onModelSelectedEvent(t,e){if(t&&t.metadata&&t.metadata instanceof Map&&t.metadata.has("workflowManager")){const r=t.metadata.get("workflowManager").getWorkflowExperience().getTransaction(),i=this.workflowExperiences.find(o=>o.getTransaction().id===r.id);i&&this.fireEvent(e?"workflow-experience-hover-enter":"workflow-experience-hover-exit",{workflowExperience:i})}}async injectExperienceIntoPreviewService(t){if(this.previewService){const e=t.getWorkflowManager().injectIntoPreviewService(this.previewService);try{this.bundleStateManager.applyStateToWorkflowExperience(t)}catch(a){console.error(`Unable to apply state to workflow experience: ${a}`)}await e}}async loadExistingWorkflowExperiences(t,e){if(t.length===0)return;const a=await this.client.getWorkflowExperiences(t.map(r=>({type:"transaction",transactionId:r})),e);if(a.forEach(r=>r.setBundle(this)),a.forEach(r=>r.checkForPriceBreakChanges()),this.workflowExperiences=a,this.previewService)for(const r of a)await this.injectExperienceIntoPreviewService(r)}async updateBundle(){if(!(await S.getShadowGraphqlClient().mutate({mutation:Cn,variables:{id:this.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([e,a])=>({key:e,value:a})),bundleStateData:this.bundleStateManager.getSerializedState(),dispatchDate:this.dispatchDate,purchaseOrder:this.purchaseOrder},context:{bundleOwnerId:this.ownerId}})).data?.bundleUpdate)throw new Error("Bundle not found!")}async updateTransactionOrder(){await S.getShadowGraphqlClient().mutate({mutation:Ul,variables:{id:this.id,transactionIds:this.workflowExperiences.map(t=>t.getTransaction().id)},context:{bundleOwnerId:this.ownerId}})}async onGlobalPropertiesChanged(t,e){if(this.updatesLocked)return;const a=await this.globalPropertyHandleService.getHandles(),r=this.globalPropertyHandleService.applyConditionsFromState(a,t),i=this.globalPropertyHandleService.applyConditionsFromState(a,e);this.checkConditionalHandlesChanged(r,i),this.checkMandatoryHandlesChanged(t,i);const o=this.getGlobalPropertyStateManager();let s=[];for(const u of a)i.find(A=>A.getName()==u.getName())||(s=[...s,u.getName()]);await o.clearAspects(s);const l=i.map(u=>{if(u.getType()===U.ColorOption||u.getType()===U.Option){const A=u;if(!e.aspects.find(g=>g.name===A.getName()))return A.initDefaultVariant()}});await Promise.all(l),await Promise.all(i.map(u=>u.applyGlobalState()));const c=this.globalPropertyStateManager.getGlobalPropertyState(),d=this.globalPropertyHandleService.applyConditionsFromState(a,c);ee(i.sort(),d.sort())||(this.checkConditionalHandlesChanged(i,d),this.checkMandatoryHandlesChanged(c,d),await this.onGlobalPropertiesChanged(e,c))}checkConditionalHandlesChanged(t,e){(()=>{if(t.length!==e.length)return!0;for(let i=0;i<t.length;i++)if(t[i].getName()!==e[i].getName())return!0;return!1})()&&this.fireEvent("conditional-global-properties-changed",{globalProperties:e})}checkMandatoryHandlesChanged(t,e){const a=[],r=[],i=[],o=jr(t);e.forEach(s=>{if(s.isMandatory()){const l=s.isMandatoryFulfilled();l?r.push(s):i.push(s);const c=o.get(s.getName());(c===void 0||c!==l)&&a.push(s)}}),this.fireEvent("global-properties-mandatory-changed",{changed:a,completed:r,remaining:i})}fireEvent(t,e){this.eventEmitter.emit(t,e)}getShareActions(){return this.shareActions}getWorkflowViewerLink(){return this.workflowViewerLink}getWorkflowViewerAmendLink(){return this.workflowViewerAmendLink}async approve(t,e){await S.getShadowGraphqlClient().mutate({mutation:Gl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id,note:t,stakeholderId:e}})}async reject(t,e){await S.getShadowGraphqlClient().mutate({mutation:jl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id,note:t,stakeholderId:e}})}getQuoteCompleteMessage(){return{bundleId:this.id,bundleOwnerId:this.ownerId,quoteId:this.quoteId||""}}}const xc=C.gql`
2506
+ `;class la{constructor(t,e,a,r,i,o){this.workflowExperiences=[],this.eventEmitter=new Ic,this.updatesLocked=!1,this.client=t,this.id=e.id,this.name=e.name||"",this.dispatchDate=e.dispatchDate,this.template=e.template||!1,this.quoteId=e.quoteId,this.shareActions=e.bundleShareActions,this.workflowViewerLink=e.workflowViewerLink,this.workflowViewerAmendLink=e.workflowViewerAmendLink,this.ownerId=i,this.metadata=new Map(e.metadata?.map(c=>[c.key,c.value])||[]),this.completed=e.completed??!1,this.productCollection=e.productCollection,this.bundleStateManager=new Sc(e.bundleStateData);const s=this.productCollection?.globalPropertyConfiguration;this.globalConfigurationPropertyId=s?.id,this.globalPropertyStateManager=new yc(this.id,this.ownerId,s,this.onGlobalPropertiesChanged.bind(this),o),this.globalPropertyHandleService=new mc(this),this.setPreviewService(a);const l=new Promise((c,d)=>{if(o?.readonly){c([]);return}console.log("Setting default global variants.");const u=this.globalPropertyStateManager.getGlobalPropertyState();u?this.globalPropertyHandleService.getHandles().then(A=>{const h=A.map(g=>{if(g.getType()===L.ColorOption||g.getType()===L.Option){const p=g;if(!u.aspects.find(C=>C.name===p.getName()))return p.initDefaultVariant()}});Promise.all(h).then(c).catch(d)}):(console.log("Attempted to set global default variant before state was initialized."),c([]))});this.initializationPromise=Promise.all([this.loadExistingWorkflowExperiences(e.transactions?.map(c=>c.id)||[],{...r,bundleOwnerId:i}),this.globalPropertyStateManager.getInitializationPromise()]).then(()=>l),this.initializationPromise.catch(c=>{console.error(`Bundle initialization failed: ${c}`)}),this.initializationPromise.then(()=>{this.getGlobalProperties().then(c=>this.checkMandatoryHandlesChanged(void 0,c))})}getIntegrationProductIds(){return this.bundleStateManager.getState()?.integrationProductIds}async addIntegrationProductId(t){const e=this.bundleStateManager.getState();if(e){if(!e.integrationProductIds)e.integrationProductIds=[];else if(e.integrationProductIds.some(r=>r===t)){this.fireEvent("bundle-integration-products-added",{integrationProductIds:e.integrationProductIds});return}e.integrationProductIds=[...e.integrationProductIds,t];const a=JSON.stringify(e);this.bundleStateManager.setState(a),this.fireEvent("bundle-integration-products-added",{integrationProductIds:e.integrationProductIds}),await y.getShadowGraphqlClient().mutate({mutation:wn,variables:{id:this.id,bundleStateData:a},context:{bundleOwnerId:this.ownerId}})}}getTemplate(){return this.template}async generateQuoteId(){const e=(await y.getShadowGraphqlClient().mutate({mutation:Fc,variables:{id:this.id},context:{bundleOwnerId:this.ownerId}})).data?.bundleGenerateQuoteId?.quoteId;return this.quoteId=e,e||""}async attachAddress(t,e,a,r,i,o){await y.getShadowGraphqlClient().mutate({mutation:Pc,variables:{bundleId:this.id,streetAddress:t||void 0,apartment:e||void 0,city:a||void 0,country:r||void 0,state:i||void 0,postCode:o||void 0},context:{bundleOwnerId:this.ownerId}})}async attachOrganization(t){await y.getShadowGraphqlClient().mutate({mutation:xc,variables:{bundleId:this.id,organizationName:t},context:{bundleOwnerId:this.ownerId}})}setBundleOptions(t){this.globalPropertyStateManager.setBundleOptions(t)}getInitializationPromise(){return this.initializationPromise}addEventListener(t,e){this.eventEmitter.on(t,e)}removeEventListener(t,e){this.eventEmitter.off(t,e)}getClient(){return this.client}getId(){return this.id}getName(){return this.name}getQuoteId(){return this.quoteId}setName(t){return this.name=t,this.updateBundle()}getDispatchDate(){return this.dispatchDate}setDispatchDate(t){return this.dispatchDate=t,this.updateBundle()}getPurchaseOrder(){return this.purchaseOrder}setPurchaseOrder(t){return this.purchaseOrder=t,this.updateBundle()}getMetadata(){return new Map(this.metadata)}setMetadata(t){return this.metadata=new Map(t),this.updateBundle()}setNameAndMetadata(t,e){return this.name=t,this.metadata=new Map(e),this.updateBundle()}hasGlobalProperties(){return!!this.productCollection?.globalPropertyConfiguration}getGlobalPropertyConfiguration(){return this.productCollection?.globalPropertyConfiguration}async getGlobalProperties(){return this.globalPropertyHandleService.applyConditionsFromState(await this.globalPropertyHandleService.getHandles(),this.getGlobalPropertyStateManager().getGlobalPropertyState())}async applyGlobalPropertyState(t){this.updatesLocked=!0;const e=await this.globalPropertyHandleService.getHandles();try{for(const a of t.aspects){const r=a?.name;await this.getGlobalPropertyStateManager().setAspect(r,a.value)}for(const a of t.aspects){const r=a?.name,i=e.find(o=>o.getName()===r);if(i)switch(a.type){case L.FileUpload:{const o=i,s=await Te([a.value]);s.length>0&&await o.selectImage(s[0]);const l=a.storage?.colors;if(l){const c=Object.fromEntries(l.map(d=>[d.key,{browserValue:d.browserValue,pmsValue:d.pmsValue}])??[]);await o.changeColors(c)}break}case L.ColorOption:{const o=i,l=o.getAllVariants().find(d=>d.getId()===a.value),c=a.storage?a.storage:void 0;l&&await o.selectVariant(l),c?.customColor&&o.setCustomColor(c.customColor);break}case L.Option:{const o=i,l=o.getAllVariants().find(c=>c.getId()===a.value);l&&await o.selectVariant(l);break}case L.Text:{await i.setText(a.value);break}}}}finally{this.updatesLocked=!1,this.onGlobalPropertiesChanged(void 0,this.globalPropertyStateManager.getGlobalPropertyState())}}getGlobalPropertyStateManager(){return this.globalPropertyStateManager}async getGlobalPropertyTotalSubunits(){return(await this.globalPropertyHandleService.getHandles()).filter(a=>a.getType()===L.Option).map(a=>a.getCurrentVariant()?.getPrice()||0).reduce((a,r)=>a+r,0)}getTotalSubunits(){return this.workflowExperiences.map(t=>t.getTotalPriceSubunits()).reduce((t,e)=>t+e,0)}getProductCollection(){return this.productCollection?new _a(this.productCollection):void 0}async initializeAdditionalRequiredColorChannels(t){for(const e of t.getStepsByType(v.Illustration)){const a=e.getGlobalPropertyAspects(this.globalConfigurationPropertyId||"");for(const r of a){const i=this.getGlobalPropertyConfiguration()?.aspects.find(o=>o.name===r);if(i&&i.type===L.ColorOption){const o=e.getCurrentVariant()?.getAssetResource(),s=o?.assetConfiguration?.channelNumbers||[],l=o?.assetConfiguration?.defaultColorVariants||[],c=fc(this.getWorkflowExperiences(),this.globalConfigurationPropertyId||"",r),d=[...new Set(s.map(A=>A.number))];if(d.length>c)for(const A of d){const h=this.getGlobalPropertyStateManager(),g=l.find(p=>p.channelNumber===A);g&&await h.setAspect(r,g.variant.id||"",void 0,g.channelNumber)}}}}}async addWorkflowExperience(t){await this.initializeAdditionalRequiredColorChannels(t),t.setBundle(this),await this.appendWorkflowExperience(t),await this.injectExperienceIntoPreviewService(t),await t.getWorkflowManager().getInitializationPromise();const e=await this.getGlobalProperties();for(const a of e)await a.applyGlobalState([t]);this.fireEvent("workflow-experience-added",{workflowExperiences:[t]})}async addWorkflowExperiences(t){for(const s of t)await this.initializeAdditionalRequiredColorChannels(s);const e=t.map(s=>s.getTransaction().id),a=e.map(s=>this.workflowExperiences.find(l=>l.getTransaction().id===s));if(a.some(s=>!!s))throw new Error("Unable to add transaction to bundle - Already Exists: "+a.filter(s=>!!s).map(s=>s?.getTransaction().id).join(", "));const r=M.getMap("transactionOwnerIds")||new Map,i=e.map(s=>r.get(s));await y.getShadowGraphqlClient().mutate({mutation:Ql,variables:{id:this.id,transactionIds:e,transactionOwnerIds:i},context:{bundleOwnerId:this.ownerId}}).catch(s=>{console.error(s)}),this.workflowExperiences.push(...t);const o=async()=>{for(const l of t)l.setBundle(this),await this.injectExperienceIntoPreviewService(l);await Promise.all(t.map(l=>l.getWorkflowManager().getInitializationPromise()));const s=await this.getGlobalProperties();for(const l of s)await l.applyGlobalState(t)};await Promise.all([this.updateTransactionOrder(),o()]),this.workflowExperiences.forEach(s=>s.checkForPriceBreakChanges()),this.fireEvent("workflow-experience-added",{workflowExperiences:this.workflowExperiences})}async appendWorkflowExperience(t,e=!0){const a=t.getTransaction().id;if(this.workflowExperiences.find(s=>s.getTransaction().id===a))throw new Error("Unable to add transaction to bundle - Already Exists!");const o=(M.getMap("transactionOwnerIds")||new Map).get(a);await y.getShadowGraphqlClient().mutate({mutation:Nl,variables:{id:this.id,transactionId:a},context:{bundleOwnerId:this.ownerId,transactionOwnerId:o}}),e&&(this.workflowExperiences.push(t),this.workflowExperiences.forEach(s=>s.checkForPriceBreakChanges()))}async removeWorkflowExperience(t){const e=this.workflowExperiences.indexOf(t);await this.removeTransaction(e,this.workflowExperiences[e].getTransaction()),this.fireEvent("workflow-experience-added",{workflowExperiences:[t]})}async removeWorkflowExperiences(t){await this.removeTransactions(t.map(e=>e.getTransaction()))}async removeWorkflowExperienceByTransaction(t){const e=this.workflowExperiences.findIndex(a=>a.getTransaction().id===t.id);await this.removeTransaction(e,t)}async removeWorkflowExperiencesByTransactions(t){await this.removeTransactions(t)}async removeTransaction(t,e,a=!0){if(t>-1){const r=this.workflowExperiences.find(i=>i.getTransaction().id===e.id);if(r.setBundle(void 0),this.previewService&&r.getWorkflowManager().ejectFromPreviewService(),this.bundleStateManager.removeStateForTransaction(e.id),await y.getShadowGraphqlClient().mutate({mutation:Rl,variables:{id:this.id,transactionId:e.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([i,o])=>({key:i,value:o})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),a){const i=this.workflowExperiences.splice(t,1);this.workflowExperiences.forEach(o=>o.checkForPriceBreakChanges()),r.checkForPriceBreakChanges(),await this.updateTransactionOrder(),this.fireEvent("workflow-experience-removed",{workflowExperiences:i})}}else throw new Error("Unable to remove workflow experience from bundle - Not Found! - "+e.id)}async removeTransactions(t){const e=t.map(r=>this.workflowExperiences.findIndex(i=>i.getTransaction().id===r.id));if(e.some(r=>r===-1))throw new Error("Unable to remove workflow experience from bundle - The following aren't included in the bundle: "+t.filter((r,i)=>e[i]===-1).map(r=>r.id).join(", "));const a=t.map(r=>this.workflowExperiences.splice(this.workflowExperiences.findIndex(i=>i.getTransaction().id===r.id),1)[0]);a.forEach(r=>r.setBundle(void 0)),[...this.workflowExperiences,...a].forEach(r=>r.checkForPriceBreakChanges()),this.previewService&&a.forEach(r=>r.getWorkflowManager().ejectFromPreviewService()),t.forEach(r=>this.bundleStateManager.removeStateForTransaction(r.id)),await y.getShadowGraphqlClient().mutate({mutation:Ol,variables:{id:this.id,transactionIds:t.map(r=>r.id),name:this.name,metadata:Array.from(this.metadata.entries()).map(([r,i])=>({key:r,value:i})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),this.fireEvent("workflow-experience-removed",{workflowExperiences:a}),await this.updateTransactionOrder()}async insertWorkflowExperience(t,e){await this.appendWorkflowExperience(t,!1),this.workflowExperiences.splice(e,0,t),await Promise.all([this.updateTransactionOrder(),(async()=>{await this.injectExperienceIntoPreviewService(t);const a=await this.getGlobalProperties();await Promise.all(a.map(r=>r.applyGlobalState([t])))})()])}async replaceWorkflowExperience(t,e){if(t<0||t>=this.workflowExperiences.length)throw new Error("Unable to replace workflow experience in bundle - Index out of range!");const a=this.workflowExperiences[t];if(a.getTransaction().id===e.getTransaction().id)throw new Error("Unable to replace workflow experience in bundle - Same transaction!");await Promise.all([this.removeTransaction(t,a.getTransaction(),!1),this.appendWorkflowExperience(e,!1)]),this.workflowExperiences[t]=e,await Promise.all([this.updateTransactionOrder(),(async()=>{await this.injectExperienceIntoPreviewService(e);const r=await this.getGlobalProperties();await Promise.all(r.map(i=>i.applyGlobalState([e])))})()])}async swapWorkflowExperiences(t,e){if(t<0||t>=this.workflowExperiences.length||e<0||e>=this.workflowExperiences.length)throw new Error("Unable to swap workflow experiences in bundle - Index out of range!");if(t===e)return;const a=this.workflowExperiences[t];this.workflowExperiences[t]=this.workflowExperiences[e],this.workflowExperiences[e]=a,await this.updateTransactionOrder()}getWorkflowExperiences(){return[...this.workflowExperiences]}async sortWorkflowExperiences(t){this.workflowExperiences=this.workflowExperiences.sort(t),await this.updateTransactionOrder()}getWorkflowExperienceCount(){return this.workflowExperiences.length}async addStakeholder(t,e){const a=await y.getShadowGraphqlClient().mutate({mutation:$l,variables:{id:this.id,details:t,type:e||ie.Owner},context:{bundleOwnerId:this.ownerId}});if(!a.data?.bundleAddStakeholder)throw new Error("Bundle not found!");const r=a.data.bundleAddStakeholder.bundleStakeholders||[];this.storeStakeholderCustomers(r)}async removeStakeholder(t){if(!(await y.getShadowGraphqlClient().mutate({mutation:Ul,variables:{id:this.id,emailAddress:t},context:{bundleOwnerId:this.ownerId}})).data?.bundleRemoveStakeholder)throw new Error("Bundle not found!")}async updateStakeholders(t){const e=await y.getShadowGraphqlClient().mutate({mutation:Ll,variables:{id:this.id,input:t},context:{bundleOwnerId:this.ownerId}});if(!e.data?.bundleUpdateStakeholders)throw new Error("Bundle not found!");const a=e.data.bundleUpdateStakeholders.bundleStakeholders||[];this.storeStakeholderCustomers(a)}async getAllStakeholders(){const t=await y.getShadowGraphqlClient().query({query:Cn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id},context:{bundleOwnerId:this.ownerId}});if(!t.data.bundles||t.data.bundles.length===0)throw new Error("Bundle not found!");const e=t.data.bundles[0].bundleStakeholders||[];return this.storeStakeholderCustomers(e),e}async getCurrentStakeholder(){const t=await y.getShadowGraphqlClient().query({query:Cn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id},context:{bundleOwnerId:this.ownerId}});if(!t.data.bundles||t.data.bundles.length===0)throw new Error("Bundle not found!");return t.data.bundles[0].currentBundleStakeholder}storeStakeholderCustomers(t){t.forEach(e=>{e.customer&&this.client.storeCustomer(e.customer)})}async finish(t,e){this.completed&&await y.getShadowGraphqlClient().mutate({mutation:jl,variables:{bundleId:this.id}});const a=await lc(this.workflowExperiences.map(r=>{const i=r.getWorkflow();if(!i)throw new Error("Unable to create designs - Workflow not found!");const o=r.getProduct();if(!o)throw new Error("Unable to create designs - Product not found!");return{workflowManager:r.getWorkflowManager(),workflow:i,layouts:r.getWorkflowManager().getLayouts(),getReducerState:()=>r.getCommandContext().getState(),product:o,transaction:r.getTransaction(),workflowSelections:r.getWorkflowManager().getWorkflowSelections(),designName:i.name,workflowMetadata:r.getWorkflowManager().getWorkflowMetadata()}}),t??(()=>{}),e?(r,i)=>{const o=this.workflowExperiences.find(s=>s.getTransaction().id===i);return o?e(o,r):(console.warn("SpiffCommerce - Bundle create design - Unable to find experience for transaction: "+i),Promise.resolve(void 0))}:void 0);return{bundleId:this.id,name:this.getName(),dispatchDate:this.getDispatchDate()||"",purchaseOrder:this.getPurchaseOrder()||"",collectionId:this.getProductCollection()?.getId()||"",collectionName:this.getProductCollection()?.getName()||"",items:a,bundleOwnerId:this.ownerId}}async placeOrder(){const t=this.workflowExperiences.map(e=>({transactionId:e.getTransaction().id,amountToOrder:e.getTransaction().quantity||1}));return await this.getClient().placeOrder(t)}getPreviewService(){return this.previewService}async setPreviewService(t){if(this.workflowExperiences&&this.workflowExperiences.length>0&&(this.workflowExperiences.forEach(e=>e.getWorkflowManager().ejectFromPreviewService()),t))for(const e of this.workflowExperiences)await this.injectExperienceIntoPreviewService(e);t&&t.registerModelLoadEventListener&&t.registerModelLoadEventListener(this.onModelLoadEvent.bind(this)),this.previewService&&this.previewService!==t&&this.previewService.unregisterModelLoadEventListener&&this.previewService.unregisterModelLoadEventListener(this.onModelLoadEvent.bind(this)),this.previewService=t}updateWorkflowExperienceTransform(t,e,a){return this.bundleStateManager.updateWorkflowExperienceTransform(t,e,a),this.updateBundle()}activateWorkflowExperienceTransform(t,e){return this.bundleStateManager.activateWorkflowExperienceTransform(t,e),this.updateBundle()}async assignGlobalPropertyConfiguration(t){await y.getShadowGraphqlClient().mutate({mutation:ql,variables:{bundleId:this.id,globalPropertyConfigurationId:t},context:{bundleOwnerId:this.ownerId}}),this.globalConfigurationPropertyId=t}async assignProductCollection(t){const e=await y.getShadowGraphqlClient().mutate({mutation:zl(this.globalPropertyStateManager.getBundleOptions()?.eagerFetchProducts??!1),variables:{id:this.id,productCollectionId:t??""},context:{bundleOwnerId:this.ownerId}});if(e.data?.bundleAssignProductCollection.productCollection){this.productCollection=e.data.bundleAssignProductCollection.productCollection;const a=e.data.bundleAssignProductCollection.productCollection.globalPropertyConfiguration;this.globalPropertyStateManager.setConfiguration(a),this.globalConfigurationPropertyId=a?.id}}onModelLoadEvent(t){t.eventType==="unload"||!t.modelContainer||(t.modelContainer.registerMaterialSelectedCallback(()=>this.onModelSelectedEvent(t.modelContainer,!0)),t.modelContainer.registerMaterialDeselectedCallback(()=>this.onModelSelectedEvent(t.modelContainer,!1)))}onModelSelectedEvent(t,e){if(t&&t.metadata&&t.metadata instanceof Map&&t.metadata.has("workflowManager")){const r=t.metadata.get("workflowManager").getWorkflowExperience().getTransaction(),i=this.workflowExperiences.find(o=>o.getTransaction().id===r.id);i&&this.fireEvent(e?"workflow-experience-hover-enter":"workflow-experience-hover-exit",{workflowExperience:i})}}async injectExperienceIntoPreviewService(t){if(this.previewService){const e=t.getWorkflowManager().injectIntoPreviewService(this.previewService);try{this.bundleStateManager.applyStateToWorkflowExperience(t)}catch(a){console.error(`Unable to apply state to workflow experience: ${a}`)}await e}}async loadExistingWorkflowExperiences(t,e){if(t.length===0)return;const a=await this.client.getWorkflowExperiences(t.map(r=>({type:"transaction",transactionId:r})),e);if(a.forEach(r=>r.setBundle(this)),a.forEach(r=>r.checkForPriceBreakChanges()),this.workflowExperiences=a,this.previewService)for(const r of a)await this.injectExperienceIntoPreviewService(r)}async updateBundle(){if(!(await y.getShadowGraphqlClient().mutate({mutation:wn,variables:{id:this.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([e,a])=>({key:e,value:a})),bundleStateData:this.bundleStateManager.getSerializedState(),dispatchDate:this.dispatchDate,purchaseOrder:this.purchaseOrder},context:{bundleOwnerId:this.ownerId}})).data?.bundleUpdate)throw new Error("Bundle not found!")}async updateTransactionOrder(){await y.getShadowGraphqlClient().mutate({mutation:Vl,variables:{id:this.id,transactionIds:this.workflowExperiences.map(t=>t.getTransaction().id)},context:{bundleOwnerId:this.ownerId}})}async onGlobalPropertiesChanged(t,e){if(this.updatesLocked)return;const a=await this.globalPropertyHandleService.getHandles(),r=this.globalPropertyHandleService.applyConditionsFromState(a,t),i=this.globalPropertyHandleService.applyConditionsFromState(a,e);this.checkConditionalHandlesChanged(r,i),this.checkMandatoryHandlesChanged(t,i);const o=this.getGlobalPropertyStateManager();let s=[];for(const u of a)i.find(A=>A.getName()==u.getName())||(s=[...s,u.getName()]);await o.clearAspects(s);const l=i.map(u=>{if(u.getType()===L.ColorOption||u.getType()===L.Option){const A=u;if(!e.aspects.find(g=>g.name===A.getName()))return A.initDefaultVariant()}});await Promise.all(l),await Promise.all(i.map(u=>u.applyGlobalState()));const c=this.globalPropertyStateManager.getGlobalPropertyState(),d=this.globalPropertyHandleService.applyConditionsFromState(a,c);ne(i.sort(),d.sort())||(this.checkConditionalHandlesChanged(i,d),this.checkMandatoryHandlesChanged(c,d),await this.onGlobalPropertiesChanged(e,c))}checkConditionalHandlesChanged(t,e){(()=>{if(t.length!==e.length)return!0;for(let i=0;i<t.length;i++)if(t[i].getName()!==e[i].getName())return!0;return!1})()&&this.fireEvent("conditional-global-properties-changed",{globalProperties:e})}checkMandatoryHandlesChanged(t,e){const a=[],r=[],i=[],o=Wr(t);e.forEach(s=>{if(s.isMandatory()){const l=s.isMandatoryFulfilled();l?r.push(s):i.push(s);const c=o.get(s.getName());(c===void 0||c!==l)&&a.push(s)}}),this.fireEvent("global-properties-mandatory-changed",{changed:a,completed:r,remaining:i})}fireEvent(t,e){this.eventEmitter.emit(t,e)}getShareActions(){return this.shareActions}getWorkflowViewerLink(){return this.workflowViewerLink}getWorkflowViewerAmendLink(){return this.workflowViewerAmendLink}async approve(t,e){await y.getShadowGraphqlClient().mutate({mutation:Wl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id,note:t,stakeholderId:e}})}async reject(t,e){await y.getShadowGraphqlClient().mutate({mutation:Hl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id,note:t,stakeholderId:e}})}getQuoteCompleteMessage(){return{bundleId:this.id,bundleOwnerId:this.ownerId,quoteId:this.quoteId||""}}}const Dc=f.gql`
2499
2507
  mutation processFlowCreate($processFlowId: String!, $inputs: [String]!) {
2500
2508
  processExecutionCreate(processFlowId: $processFlowId, inputs: $inputs) {
2501
2509
  id
2502
2510
  }
2503
2511
  }
2504
- `;class Kr{async execute(t,e,a){const i=(await S.getShadowGraphqlClient().mutate({mutation:xc,variables:{processFlowId:t,inputs:[...e.map(u=>u.getValueForTransmission())]}})).data?.processExecutionCreate?.id;if(!i)throw new Error("Failed to create process execution.");function o(u){return new Promise(A=>{setTimeout(A,u)})}let s=!1,l=0,c,d;for(;!s;){c=await S.getShadowGraphqlClient().query({query:C.gql`
2512
+ `;class _r{async execute(t,e,a){const i=(await y.getShadowGraphqlClient().mutate({mutation:Dc,variables:{processFlowId:t,inputs:[...e.map(u=>u.getValueForTransmission())]}})).data?.processExecutionCreate?.id;if(!i)throw new Error("Failed to create process execution.");function o(u){return new Promise(A=>{setTimeout(A,u)})}let s=!1,l=0,c,d;for(;!s;){c=await y.getShadowGraphqlClient().query({query:f.gql`
2505
2513
  query getProcessFlowExecution($ids: [String]!) {
2506
2514
  processExecutions(ids: $ids) {
2507
2515
  id
@@ -2514,7 +2522,7 @@
2514
2522
  }
2515
2523
  }
2516
2524
  }
2517
- `,variables:{ids:[i]}});const u=c.data?.processExecutions[0];if(!c||!u)throw new Error("Failed to retrieve server response for execution.");if(u.failedAt)throw new Error("Execution has failed to complete. See Automation > FLows in Flight on partner account on SpiffCommerce Hub.");if(u.completedAt){s=!0,d=new _r(u);break}l+=1;const A=a?.repeats?a?.repeats:5;if(l>=A)throw new Error("Maximum wait time exceeded for execution result.");await o(a?.sleepTime?Math.max(a.sleepTime,500):2e3)}if(!d)throw new Error("Failed to retrieve server response for execution.");return Promise.resolve(d)}}class _r{constructor(t){this.execution=t}getRaw(){return this.execution}getNodes(){return this.execution.nodes.map(t=>new Jt(t))}getNodesByType(t){return this.execution.nodes.filter(e=>e.type===t).map(e=>new Jt(e))}getInputs(){return this.execution.nodes.filter(t=>t.type==="StartTerminal").map(t=>new Jt(t))}getOutputs(){return this.execution.nodes.filter(t=>t.type==="EndTerminal").map(t=>new Jt(t))}getCompletedAt(){if(this.execution.completedAt)return new Date(this.execution.completedAt)}getFailedAt(){if(this.execution.failedAt)return new Date(this.execution.failedAt)}}class Jt{constructor(t){this.node=t}getId(){return this.node.id}getType(){return this.node.type}getArtifacts(){return new Map(Object.entries(JSON.parse(this.node.artifacts).value))}getArtifactByName(t){return this.getArtifacts().get(t)}}class _a{constructor(t){this.value=t}getRaw(){return this.value}getValueForTransmission(){const t=this.value;return t.startsWith("[")?JSON.stringify(JSON.parse(t)):t}}var Xr=(n=>(n.Transaction="Transaction",n.Bundle="Bundle",n.Product="Product",n.Variant="Variant",n.Option="Option",n.LineItem="LineItem",n.Asset="Asset",n))(Xr||{});class Fc extends _a{constructor(t){super(`"${t}"`)}}class Xa extends _a{constructor(t,e){if(e!=="Asset"&&!Xa.validUUID(t))throw new Error("Invalid ID, must be a valid v4 UUID. https://www.uuidgenerator.net/");super(`{"isSpiffObject": true, "id": "${t}", "type": "${e}"}`)}static validUUID(t){return t.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)}}class Dc extends _a{constructor(t){super(`[${t.map(e=>e.getRaw()).join(",")}]`)}}class Ia{constructor(t){this.integrationProduct=t}getId(){return this.integrationProduct.id}getResource(){return this.integrationProduct}getBasePrice(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.basePrice||0,e=this.integrationProduct?.additionalIntegrationProduct;if(!e)return t;if(e&&!e.product)throw new Error("An additional integration product was found, but it does not have a product");return t+(e.product.basePrice||0)}getDefaultWorkflow(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.workflows||[];if(t.length===0)throw new Error("No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product.");return new Tt(t[0])}getAllWorkflows(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.workflows||[];if(t.length===0)throw new Error("No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product.");return t.sort((e,a)=>(e.index??0)-(a.index??0)).map(e=>new Tt(e))}}const Pe=C.gql`
2525
+ `,variables:{ids:[i]}});const u=c.data?.processExecutions[0];if(!c||!u)throw new Error("Failed to retrieve server response for execution.");if(u.failedAt)throw new Error("Execution has failed to complete. See Automation > FLows in Flight on partner account on SpiffCommerce Hub.");if(u.completedAt){s=!0,d=new Xr(u);break}l+=1;const A=a?.repeats?a?.repeats:5;if(l>=A)throw new Error("Maximum wait time exceeded for execution result.");await o(a?.sleepTime?Math.max(a.sleepTime,500):2e3)}if(!d)throw new Error("Failed to retrieve server response for execution.");return Promise.resolve(d)}}class Xr{constructor(t){this.execution=t}getRaw(){return this.execution}getNodes(){return this.execution.nodes.map(t=>new _t(t))}getNodesByType(t){return this.execution.nodes.filter(e=>e.type===t).map(e=>new _t(e))}getInputs(){return this.execution.nodes.filter(t=>t.type==="StartTerminal").map(t=>new _t(t))}getOutputs(){return this.execution.nodes.filter(t=>t.type==="EndTerminal").map(t=>new _t(t))}getCompletedAt(){if(this.execution.completedAt)return new Date(this.execution.completedAt)}getFailedAt(){if(this.execution.failedAt)return new Date(this.execution.failedAt)}}class _t{constructor(t){this.node=t}getId(){return this.node.id}getType(){return this.node.type}getArtifacts(){return new Map(Object.entries(JSON.parse(this.node.artifacts).value))}getArtifactByName(t){return this.getArtifacts().get(t)}}class Xa{constructor(t){this.value=t}getRaw(){return this.value}getValueForTransmission(){const t=this.value;return t.startsWith("[")?JSON.stringify(JSON.parse(t)):t}}var Zr=(n=>(n.Transaction="Transaction",n.Bundle="Bundle",n.Product="Product",n.Variant="Variant",n.Option="Option",n.LineItem="LineItem",n.Asset="Asset",n))(Zr||{});class kc extends Xa{constructor(t){super(`"${t}"`)}}class Za extends Xa{constructor(t,e){if(e!=="Asset"&&!Za.validUUID(t))throw new Error("Invalid ID, must be a valid v4 UUID. https://www.uuidgenerator.net/");super(`{"isSpiffObject": true, "id": "${t}", "type": "${e}"}`)}static validUUID(t){return t.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)}}class Mc extends Xa{constructor(t){super(`[${t.map(e=>e.getRaw()).join(",")}]`)}}class Pa{constructor(t){this.integrationProduct=t}getId(){return this.integrationProduct.id}getResource(){return this.integrationProduct}getBasePrice(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.basePrice||0,e=this.integrationProduct?.additionalIntegrationProduct;if(!e)return t;if(e&&!e.product)throw new Error("An additional integration product was found, but it does not have a product");return t+(e.product.basePrice||0)}getDefaultWorkflow(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.workflows||[];if(t.length===0)throw new Error("No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product.");return new Nt(t[0])}getAllWorkflows(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.workflows||[];if(t.length===0)throw new Error("No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product.");return t.sort((e,a)=>(e.index??0)-(a.index??0)).map(e=>new Nt(e))}}const xe=f.gql`
2518
2526
  query GetCustomer($emailAddress: String!) {
2519
2527
  customer(emailAddress: $emailAddress) {
2520
2528
  id
@@ -2531,7 +2539,7 @@
2531
2539
  }
2532
2540
  }
2533
2541
  }
2534
- `,kc=C.gql`
2542
+ `,Tc=f.gql`
2535
2543
  mutation CustomerCreate($details: CustomerDetailsInput!) {
2536
2544
  customerCreate(details: $details) {
2537
2545
  id
@@ -2541,7 +2549,7 @@
2541
2549
  }
2542
2550
  }
2543
2551
  }
2544
- `;C.gql`
2552
+ `;f.gql`
2545
2553
  mutation CustomerAuthenticate($loginToken: String!) {
2546
2554
  customerAuthenticate(loginToken: $loginToken) {
2547
2555
  id
@@ -2571,11 +2579,11 @@
2571
2579
  }
2572
2580
  }
2573
2581
  }
2574
- `;const Mc=C.gql`
2582
+ `;const Nc=f.gql`
2575
2583
  mutation CustomerGenerateVerificationCode($emailAddress: String!) {
2576
2584
  customerGenerateVerificationCode(emailAddress: $emailAddress)
2577
2585
  }
2578
- `;C.gql`
2586
+ `;f.gql`
2579
2587
  mutation CustomerVerifyCode($emailAddress: String!, $verificationCode: String!) {
2580
2588
  customerVerifyCode(emailAddress: $emailAddress, verificationCode: $verificationCode) {
2581
2589
  id
@@ -2606,7 +2614,7 @@
2606
2614
  }
2607
2615
  }
2608
2616
  }
2609
- `;const Tc=C.gql`
2617
+ `;const Qc=f.gql`
2610
2618
  query CustomerMetafields($id: String!) {
2611
2619
  metafields(entityId: $id) {
2612
2620
  id
@@ -2624,13 +2632,13 @@
2624
2632
  }
2625
2633
  }
2626
2634
  }
2627
- `;class Nc{constructor(t,e=S.getShadowGraphqlClient.bind(S)){this.options=t,this.client=e}query(t){const e=this.options?.onQuery?this.options?.onQuery(t):{};return this.client().query({...e,...t,context:{...e.context??{},...t.context??{}}})}mutate(t){const e=this.options?.onMutate?this.options?.onMutate(t):{};return this.client().mutate({...e,...t,context:{...e.context??{},...t.context??{}}})}}class Qc{init(t,e,a){this.cognitoClient=new Se.CognitoIdentityProviderClient({region:e}),this.spiffRegion=t,this.userPoolClientId=a}async generateCode(t){const e=await this.cognitoClient?.send(new Se.InitiateAuthCommand({AuthFlow:"CUSTOM_AUTH",ClientId:this.userPoolClientId,AuthParameters:{USERNAME:t}}));e?.ChallengeName==="CUSTOM_CHALLENGE"&&(this.challengeSession=e.Session)}async verifyCode(t,e,a){const r=await this.cognitoClient?.send(new Se.RespondToAuthChallengeCommand({ClientId:this.userPoolClientId,ChallengeName:"CUSTOM_CHALLENGE",Session:this.challengeSession,ChallengeResponses:{USERNAME:t,ANSWER:e},ClientMetadata:{partnerId:a,environment:(this.spiffRegion||"").toLowerCase()}}));return r?.ChallengeName==="CUSTOM_CHALLENGE"&&(this.challengeSession=r.Session),r}async refreshTokens(){const t=localStorage.getItem("cognito-tokens");if(!t)throw new Error("Failed to find existing tokens.");const e=JSON.parse(t);return await this.cognitoClient?.send(new Se.InitiateAuthCommand({AuthFlow:"REFRESH_TOKEN_AUTH",ClientId:this.userPoolClientId,AuthParameters:{REFRESH_TOKEN:e.RefreshToken||""}}))}}const Wt=new Qc;class Zr{formatCurrencyForDisplay(t,e){const a={amount:e||0,currency:t,precision:this.getPrecisionForCurrency(t)};return vi(a).toFormat(this.getSpecialFormat(t))}getPrecisionForCurrency(t){const e=t,a=nn.code(e);return a?a.digits:2}getSpecialFormat(t){const e=t;if(nn.code(e)?.code==="CLP")return"USD0,0"}}const vn=new Zr;class ti{constructor(t,e,a,r){this.presentmentCurrency=void 0,this.presentmentCurrency=r,this.partnerCurrency=a,this.rateFrom=t,this.rateTo=e}code(){return this.presentmentCurrency?this.presentmentCurrency:this.partnerCurrency}conversionRequired(){return this.presentmentCurrency!==void 0&&this.code()!==this.partnerCurrency}getConvertedSubunits(t){return this.conversionRequired()?Math.ceil(this.subunits(this.units(t,this.partnerCurrency)/this.rateFrom*this.rateTo,this.code())):t}units(t,e){return t/Math.pow(10,vn.getPrecisionForCurrency(e))}subunits(t,e){return t*Math.pow(10,vn.getPrecisionForCurrency(e))}}const Rc=async(n,t)=>{const e=await S.getShadowGraphqlClient().query({query:Oo(t?.assets?.metadata||!1),errorPolicy:"all",variables:{ids:n}});if(e.error)throw e.error;if(e.errors)throw e.errors.forEach(r=>console.error(r)),new Error("Unable to read workflows. Consult GraphQL errors.");const a=e.data.workflows;if(a===void 0||a.length!==n.length)throw new Error(`Unable to read workflows: ${e.errors??"Length mismatch in response"}`);return a.forEach(r=>{r.steps.forEach(i=>{delete i.data.__typename,i.option?.id&&(i.option.defaultVariant?.asset&&O.cacheAsset(i.option.defaultVariant.asset),i.option.colorProfile&&O.cacheAsset(i.option.colorProfile),i.option.variants?.forEach(o=>{o.asset&&O.cacheAsset(o.asset),o.thumbnail&&O.cacheAsset(o.thumbnail),o.material&&O.cacheMaterial(o.material)}),$t.set({id:i.option.id},Promise.resolve(i.option)))}),r.finalizeStepConfig||(r.finalizeStepConfig={}),r.finalizeStepConfig.termsMarkdown=r.finalizeStepConfig.termsMarkdown||r.partner.termsMarkdown}),a},Oc=async(n,t)=>{const a=(await t).find(r=>r.id===n);if(!a)throw new Error(`Workflow not found: ${n}`);return a},Za=async(n,t)=>{const e=n.map(s=>$t.get({id:s,options:t})),a=n.filter((s,l)=>e[l]===void 0);if(a.length===0)return Promise.all(e);const r=Rc(a,t),i=a.map(s=>$t.set({id:s,options:t},Oc(s,r))),o=e.filter(s=>s!==void 0);return await Promise.all(o.concat(i))},ei=async(n,t)=>(await Za([n],t))[0];class $c{constructor(t){this.activeIntegration=void 0,this.updateTransactionState=async e=>{try{return S.getShadowGraphqlClient().mutate({...e,mutation:Eo})}catch(a){throw console.error(a),new gt("Critical - Unable to synchronize workflow state with server.")}},this.options=t,this.options.applicationKey&&Li(this.options.applicationKey),console.debug("------------------------"),console.debug("Spiff Commerce Core SDK"),console.debug("Version: 33.8.4"),console.debug(`Application Key Provided: ${!!this.options.applicationKey}`),console.debug("------------------------")}configure(t){ut.setHubUrl(t.hubUrl),ut.setServerUrl(t.serverUrl),ut.setServicesApiUrl(t.servicesApiUrl),this.marketplaceThemeInstallId=t.marketplaceThemeInstallId,this.marketplaceThemeInstallConfigurationId=t.marketplaceThemeInstallConfigurationId,this.userPoolClientId=t.userPoolClientId,this.userPoolRegion=t.userPoolRegion,this.spiffRegion=t.spiffRegion,t.bearerAuthenticationToken&&Wn(t.bearerAuthenticationToken),this.options.applicationKey&&this.getIntegration(),this.spiffRegion&&this.userPoolRegion&&this.userPoolClientId&&Wt.init(this.spiffRegion,this.userPoolRegion,this.userPoolClientId)}getAssetManager(){return O}getFlowService(){if(!Vi())throw new Error("Application key required to use Flow Service.");return new Kr}async getCurrencyContext(t){const a=(await this.getIntegration()).partner.currencyCode,i=await S.getShadowGraphqlClient().query({query:jo,errorPolicy:"all",fetchPolicy:"cache-first",variables:{from:a,to:t}}),{rateFrom:o,rateTo:s}=i.data.currencyConversion;return new ti(o,s,a,t)}async getIntegration(){if(this.activeIntegration)return this.activeIntegration;if(!this.options.applicationKey)throw new Error("Cannot get current Integration without specifying an Application Key.");return this.activeIntegration=ai(this.options.applicationKey),this.activeIntegration}async canUseAddon(t){try{return(await this.getIntegration()).partner.activeAddons?.includes(t)??!1}catch(e){return console.error(e),!1}}async authenticateBundleFromLocalStorage(t){if(k.getMap("bundleOwnerIds")?.has(t))return Promise.resolve({success:!0,stakeholderType:ne.Owner});const a=k.getMap("bundlePartnerIds")||new Map;if(a.has(t)){const r=a.get(t);if((k.getMap("partnerCustomerIds")||new Map).get(r)&&await this.reloadLoggedInCustomer()){const l=this.customer?.bundleStakeholders?.find(c=>c.bundle?.id===t);if(l)return Promise.resolve({success:!0,stakeholderType:l.type})}}return Promise.resolve({success:!1})}async authenticateTransactionFromLocalStorage(t){const e=S.getShadowGraphqlClient(),a=await e.query({query:$o,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t}});if(!a.data.transactions||a.data.transactions.length===0)throw new Error(`Transaction not found: ${t}`);const r=a.data.transactions[0];if(!r.product?.partner?.id)throw new Error(`Unable to read transaction: ${t}`);if(r.isOrdered)return Promise.resolve({success:!1,transactionReadOnly:!0});if(k.getMap("transactionOwnerIds")?.has(t))return Promise.resolve({success:!0,stakeholderType:ne.Owner});const s=k.getMap("transactionCustomerIds");if(s?.has(t)&&s.get(t)&&await this.reloadLoggedInCustomer()){const A=this.customer?.bundleStakeholders?.find(h=>h.bundle?.transactions?.some(g=>g.id===t))||this.customer?.stakeholders?.find(h=>h.transaction?.id===t);if(A)return Promise.resolve({success:!0,stakeholderType:A.type})}const c=(await e.query({query:Uo,errorPolicy:"all",variables:{id:r.workflowId}})).data.workflow;if(!c)throw new Error(`Unable to read workflow: ${r.workflowId}`);return Promise.resolve({success:!1,theme:c.overrideTheme,customLogoLink:r.customLogoLink})}clearCustomer(){this.customer=void 0}clearCustomerForTransaction(t){const e=k.getMap("transactionCustomerIds");e?.has(t)&&(e.delete(t),k.setMap("transactionCustomerIds",e))}async customerHasBundleTemplates(t){const r=(await S.getShadowGraphqlClient().query({query:Pe,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;return r.id?r.hasBundleTemplates??!1:!1}getStakeholderTypeForTransaction(t){const e=this.customer?.stakeholders?.find(a=>a.transaction?.id===t);if(e)return e.type}async getOrCreateCustomer(t){this.customer=void 0;const e=S.getShadowGraphqlClient(),r=(await e.query({query:Pe,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;if(!r.id){const s=(await e.mutate({mutation:kc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{details:{emailAddress:t}}})).data?.customerCreate;if(!s)throw new Error("Unable to create customer.");return this.storeCustomer(s),this.customer=s,{customer:s,isAuthenticated:!1}}this.storeCustomer(r);const i=await this.reloadLoggedInCustomer();return{customer:this.customer||r,isAuthenticated:i}}getCustomer(){return this.customer}async reloadLoggedInCustomer(){const t=localStorage.getItem("last-refreshed-cognito-tokens"),e=localStorage.getItem("cognito-tokens"),a=localStorage.getItem("cognito-email");if(!t||!e||!a)return!1;const r=JSON.parse(e),i=new Date().getTime()/1e3;if(!r.ExpiresIn||r.ExpiresIn<i-parseInt(t)){const l=await Wt.refreshTokens();if(l?.AuthenticationResult)localStorage.setItem("last-refreshed-cognito-tokens",`${new Date().getTime()/1e3}`),r.AccessToken=l.AuthenticationResult.AccessToken,localStorage.setItem("cognito-tokens",JSON.stringify(r));else return this.logOut(),console.error("Failed to refresh tokens."),!1}const s=(await S.getShadowGraphqlClient().query({query:Pe,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:a}})).data.customer;return s.id?(this.customer=s,!0):(console.error("Failed to get customer."),!1)}async generateVerificationCode(t){await S.getShadowGraphqlClient().mutate({mutation:Mc,variables:{emailAddress:t}}),await Wt.generateCode(t)}async verifyCode(t,e){const a=(await this.getIntegration()).partner.id||"",r=await Wt.verifyCode(t,e,a);if(r?.AuthenticationResult){localStorage.setItem("last-refreshed-cognito-tokens",`${new Date().getTime()/1e3}`),localStorage.setItem("cognito-tokens",JSON.stringify(r.AuthenticationResult)),localStorage.setItem("cognito-email",t);const o=(await S.getShadowGraphqlClient().query({query:Pe,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;if(!o.id)throw new Error("Failed to get customer.");return this.customer=o,!0}else throw new Error}async logOut(){localStorage.removeItem("last-refreshed-cognito-tokens"),localStorage.removeItem("cognito-tokens"),localStorage.removeItem("cognito-email"),this.clearCustomer()}async loggedInBearerToken(){const t=localStorage.getItem("last-refreshed-cognito-tokens"),e=localStorage.getItem("cognito-tokens");if(!t||!e)throw new Error("No token data in storage.");const a=JSON.parse(e),r=new Date().getTime()/1e3,i=!a?.AccessToken||le(a.AccessToken);if(!a.ExpiresIn||a.ExpiresIn<r-parseInt(t)||i){const o=await Wt.refreshTokens();if(o?.AuthenticationResult)localStorage.setItem("last-refreshed-cognito-tokens",`${new Date().getTime()/1e3}`),a.AccessToken=o.AuthenticationResult.AccessToken,localStorage.setItem("cognito-tokens",JSON.stringify(a));else throw this.logOut(),new Error("Failed to refresh tokens.")}if(!a.AccessToken)throw new Error("No bearer token in storage.");return a.AccessToken}async getCustomerMetafields(){if(!this.customer?.id)throw new Error("Customer must be logged in before calling this function.");return(await S.getShadowGraphqlClient().query({query:Tc,variables:{id:this.customer.id}})).data.metafields}async getNewBundle(t,e,a){const i=(await S.getShadowGraphqlClient().mutate({mutation:Dl(a?.graphql?.productCollection?.eagerFetchProducts||!1),variables:{collectionId:t,initialMetadata:e?Object.entries(e).map((c,d)=>({key:c[0],value:c[1]})):void 0,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},fetchPolicy:"no-cache"})).data?.bundleCreate;if(!i?.id)throw new Error("Unable to create bundle");const o=k.getMap("bundlePartnerIds")||new Map;o.set(i.id,i.partner.id),k.setMap("bundlePartnerIds",o);const s=k.getMap("bundleOwnerIds")||new Map;s.set(i.id,i.bundleOwnerId),k.setMap("bundleOwnerIds",s);const l=new sa(this,i,void 0,void 0,i.bundleOwnerId,{eagerFetchProducts:a?.graphql?.productCollection?.eagerFetchProducts});return await l.getInitializationPromise(),l}async getExistingBundle(t,e,a,r){const o=k.getMap("bundleOwnerIds")?.get(t),s={};try{const h=await this.loggedInBearerToken();s.Authorization=`Bearer ${h}`}catch{const p=Object.entries(localStorage).find(([f,w])=>f.startsWith("CognitoIdentityServiceProvider")&&f.endsWith("idToken"))?.[0]||"",m=localStorage.getItem(p);m&&!le(m)&&(s.Authorization=`Bearer ${m}`)}const l={bundleOwnerId:o,...s,...r?.graphql?.additionalHeaders},c=await S.getShadowGraphqlClient().query({query:Bl(r?.graphql?.productCollection?.eagerFetchProducts||!1),variables:{id:t},fetchPolicy:"no-cache",context:{headers:l}});if(!c.data?.bundles||c.data?.bundles.length===0||!c.data?.bundles[0])throw new Error(`Unable to find bundle: ${t}`);const d=c.data?.bundles[0],u=k.getMap("bundlePartnerIds")||new Map;u.set(d.id,d.partner.id),k.setMap("bundlePartnerIds",u);const A=new sa(this,d,e,a,o,{additionalHeaders:r?.graphql?.additionalHeaders,eagerFetchProducts:r?.graphql?.productCollection?.eagerFetchProducts,existingGlobalPropertyState:c.data.globalPropertyState,readonly:r?.readonly});return await A.getInitializationPromise(),A}async duplicateBundle(t,e,a,r){const o={...await ni(t),...r?.graphql?.additionalHeaders},l=(await S.getShadowGraphqlClient().mutate({mutation:kl(r?.graphql?.productCollection?.eagerFetchProducts||!1),variables:{id:t,template:e,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId,duplicateTransactions:a},context:{headers:o},fetchPolicy:"no-cache"})).data?.bundleDuplicate;if(!l?.id)throw new Error("Unable to duplicate bundle");const c=k.getMap("bundlePartnerIds")||new Map;c.set(l.id,l.partner.id),k.setMap("bundlePartnerIds",c);const d=k.getMap("bundleOwnerIds")||new Map;return d.set(l.id,l.bundleOwnerId),k.setMap("bundleOwnerIds",d),async()=>{const u=new sa(this,l,void 0,void 0,l.bundleOwnerId,{eagerFetchProducts:r?.graphql?.productCollection?.eagerFetchProducts,existingGlobalPropertyState:l.globalPropertyState});return await u.getInitializationPromise(),u}}async getBundlesForCustomer(t){if(!this.customer?.id)throw new Error("Customer not authenticated.");const{includeMetadata:e,...a}=t;return(await S.getShadowGraphqlClient().query({query:zl(e??!1),variables:{...a,id:this.customer.id},fetchPolicy:"no-cache"})).data.customerBundlesFeed}async getBundleStakeholders(){if(!this.customer)throw new Error("Customer not authenticated.");const t=await S.getShadowGraphqlClient().query({query:Il,variables:{id:this.customer.id},fetchPolicy:"no-cache"});if(!t.data?.customers||t.data.customers.length===0)throw new Error("Unable to find customer.");const a=t.data.customers[0].bundleStakeholders||[],r=k.getMap("bundlePartnerIds")||new Map;return a.forEach(i=>{i.bundle?.id&&i.bundle.partner?.id&&r.set(i.bundle.id,i.bundle.partner.id)}),k.setMap("bundlePartnerIds",r),a}async getWorkflowExperience(t,e){if(!t)throw new Error("getWorkflowExperience has been called without an options object! This is not supported.");const a=await this.getWorkflowExperiences([t],t.graphql),r=a[0],i=r.getWorkflow();return e&&!i&&console.error("No workflow instantiated when trying to create preview service."),e&&i&&await r.getWorkflowManager().injectIntoPreviewService(e(i)),a[0]}async getWorkflowExperiences(t,e,a){if(t.length===0)throw new gt("No options provided!");const r=S.getShadowGraphqlClient(),i=async y=>{if(y.length===0)return[];const B=y.map(T=>T.option.transactionId),x=await r.query({query:vo,variables:{ids:B},errorPolicy:"all",fetchPolicy:"no-cache"}),I=x.data.transactions;if(I.length!==y.length){const T=x.errors?.[0]?.message||"Unknown error";throw new gt(`Not all transactions were found: ${T}`)}return!this.activeIntegration&&I[0].integrationProduct?.integration&&(this.activeIntegration=Promise.resolve(I[0].integrationProduct.integration)),I.map((T,V)=>({transaction:T,workflowId:T.workflowId,readOnly:y.find(H=>H.option.transactionId===T.id)?.option.readOnly??!1,index:y[V].index}))},o=async y=>{if(y.length===0)return[];const B=await r.mutate({mutation:So,variables:{inputs:y.map(I=>({integrationProductId:I.option.type==="integration"?I.option.integrationProductId:void 0,externalIntegrationId:I.option.type==="external"?I.option.externalIntegrationId:void 0,externalProductId:I.option.type==="external"?I.option.externalProductId:void 0,workflowId:I.option.workflowId,designName:I.option.designName,claim:!0,quantity:I.option.quantity,recipient:I.option.recipient})),marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},errorPolicy:"all",fetchPolicy:"no-cache"}),x=B.data?.transactionCreateMany;if(!x||x.length===0){const I=B.errors?.[0]?.message||"Unknown error";throw new gt(`Failed to create transactions: ${I}`)}return x.map((I,T)=>({transaction:I,workflowId:I.workflowId,readOnly:!1,index:y[T].index}))},s=t.map((y,B)=>({option:y,index:B})),l=s.filter(y=>y.option.type==="transaction"),c=s.filter(y=>y.option.type==="integration"||y.option.type==="external"||y.option.type==="blank"),d=50,u=an(l,d),A=an(c,d),h=(await Promise.all([...u.map(i),...A.map(o)])).flat(),g=[...new Set(h.map(y=>y.workflowId))].filter(y=>y!==void 0),p=g.length>0?await Za(g,e):[],m=new Map(p.map(y=>[y.id,y])),f=k.getMap("transactionOwnerIds")||new Map,w=h.map(async y=>{const{transaction:B,workflowId:x,readOnly:I,index:T}=y,V=x?m.get(x):void 0,H=t[T];!f.get(B.id)&&B.transactionOwnerId&&f.set(B.id,B.transactionOwnerId);const _=f.get(B.id)||void 0,St=new Nc({onMutate:()=>({context:{transactionOwnerId:_,bundleOwnerId:e?.bundleOwnerId}}),onQuery:()=>({context:{transactionOwnerId:_,bundleOwnerId:e?.bundleOwnerId}})}),et={workflow:V,transaction:B,singleVariantsRenderable:H?.workflowConfiguration?.singleVariantsRenderable,stateMutationFunc:I?async()=>{throw new N("State mutation is forbidden in read only mode!")}:async nt=>this.updateTransactionState({...nt,context:{transactionOwnerId:_,bundleOwnerId:e?.bundleOwnerId}}),graphQlClient:()=>St,readOnly:I,isReloadedTransaction:H.type==="transaction"};if(H.type==="transaction"&&B.workflowState){const nt=JSON.parse(B.workflowState);await ya(nt),et.reloadedState=nt}else if(!I&&H.workflowState){const nt=JSON.parse(H.workflowState);await ya(nt),et.reloadedState=nt}return et.delayWorkflowStateSync=!0,{experienceOptions:et,index:T,options:H}}),b=await Promise.all(w);k.setMap("transactionOwnerIds",f);const F=b.sort((y,B)=>y.index-B.index);let E=[];for(const y of F){const{experienceOptions:B,options:x}=y,I=new zr(this,B);await I.getWorkflowManager().getInitializationPromise(),a&&a(),x.type!=="transaction"&&this.customer&&await I.attachCustomerDetails({email:this.customer.emailAddress}),E=[...E,I],I.getWorkflowManager().setWorkflowStateSyncEnabled(!0)}return E}storeCustomer(t){const e=k.getMap("partnerCustomerIds")||new Map;e.set(t.partner.id,t.id),k.setMap("partnerCustomerIds",e)}async getIntegrationProductById(t,e){const i=(await S.getShadowGraphqlClient().query({query:Fo(e),variables:{ids:[t]},fetchPolicy:"no-cache",errorPolicy:"all"})).data?.integrationProducts;if(!i||i.length===0||!i[0]?.id)throw new Error("Integration product not found.");return new Ia(i[0])}async getIntegrationProductFromExternalIds(t,e,a){const o=(await S.getShadowGraphqlClient().query({query:Do(a),variables:{externalProductId:e,externalIntegrationId:t},fetchPolicy:"no-cache",errorPolicy:"all"})).data?.integrationProductFromExternalIds;if(!o?.id)throw new Error("Integration product not found.");return new Ia(o)}async getIntegrationProduct(t){return t.type==="integration"?this.getIntegrationProductById(t.integrationProductId):this.getIntegrationProductFromExternalIds(t.externalIntegrationId,t.externalProductId)}async getShareActionsForTransaction(t){const a=(k.getMap("transactionOwnerIds")||new Map).get(t)||void 0,r=await S.getShadowGraphqlClient().query({query:xo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t},context:{transactionOwnerId:a}});if(!r.data.transactions||r.data.transactions.length!==1)throw new Error(`Failed to fetch share actions for transaction: ${t}`);return r.data.transactions[0].transactionShareActions}async placeOrder(t){const e=await S.getShadowGraphqlClient().mutate({mutation:Go,variables:{orderItems:t}});if(e.errors)throw new Error(e.errors[0].message);if(!e.data)throw new Error("Failed to create order: No order data in response.");return{id:e.data.orderCreate.id,internalId:e.data.orderCreate.internalId}}}const ai=async(n,t)=>(await S.getShadowGraphqlClient().query({query:Vo,errorPolicy:"all",fetchPolicy:"no-cache",context:{headers:{"x-application-key":n}},variables:{themeConfigurationId:t}})).data.currentIntegration,Uc=async n=>{const e=await S.getShadowGraphqlClient().query({query:Po,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:n}});if(e.data.transactions.length!==0)return e.data.transactions[0]},Lc=async(n,t)=>(await S.getShadowGraphqlClient().query({query:Lo,errorPolicy:"all",variables:{themeConfigurationId:n,themeInstallId:t}})).data?.marketplaceThemeInstallConfiguration,Vc=async n=>(await S.getShadowGraphqlClient().query({query:qo,errorPolicy:"all",variables:{id:n}})).data?.bundles?.[0]?.marketplaceThemeInstallConfiguration,zc=async n=>(await S.getShadowGraphqlClient().query({query:zo,errorPolicy:"all",variables:{id:n}})).data?.transactions?.[0]?.marketplaceThemeInstallConfiguration;async function ni(n){const e=k.getMap("bundleOwnerIds")?.get(n),a={};try{const r=await this.loggedInBearerToken();a.Authorization=`Bearer ${r}`}catch{const o=Object.entries(localStorage).find(([l,c])=>l.startsWith("CognitoIdentityServiceProvider")&&l.endsWith("idToken"))?.[0]||"",s=localStorage.getItem(o);s&&!le(s)&&(a.Authorization=`Bearer ${s}`)}return{bundleOwnerId:e,...a}}const qc=async n=>{const t=await ni(n),e=await S.getShadowGraphqlClient().mutate({mutation:_l,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n},context:{headers:t}});if(e.data?.bundleDelete!==n)throw new Error(`Failed to delete bundle: ${e.errors}`)};function ri(n,t,e,a){const r=e.width*n.zoom,i=e.height*n.zoom;if(a){const s=n,l=Math.max(t.width/e.width,t.height/e.height);s.zoom=Math.max(l,n.zoom);const c=e.width*s.zoom,d=e.height*s.zoom;return s.x=xe(n.x,t.width-c,0),s.y=xe(n.y,t.height-d,0),s}const o=n;return o.x=xe(o.x,-r,t.width),o.y=xe(o.y,-i,t.height),o}function xe(n,t,e){return Math.min(Math.max(n,t),e)}class ii{constructor(t,e){this.minZoomScale=[.03],this.maxZoomScale=[20],this._debouncedUpdateFrameOffsets=Mn(this.updateFrameOffsets,200),this.targetElements=[],this.onFrameDataChangeListeners=[],this.onZoomChangeListeners=[],this.forceImageCover=t,this.initialZoom=e,this.thresholdSettings={useThreshold:!1,invertThreshold:!1,threshold:128,thresholdSaturation:.5}}connectWorkflowManager(t,e){e&&t.addStepSpecificStorageCallback(async a=>{if(a){const r=a;if(r.currentFrameSources){let i=!1;for(let o=0;o<r.currentFrameSources.length;o++){const s=r.currentFrameSources[o],l=await fe(s),c=this.frameData?this.frameData[o]:void 0;ee(l,c)||(this.frameData||(this.frameData=new Array(r.currentFrameSources.length)),this.frameData[o]=l,i=!0)}i&&(this.onFrameDataChangeListeners.forEach(o=>o(this.frameData)),this.frameData&&this.imageData&&(this.recalculateOffsets(this.imageData),this.updateOffsets(this.offsets),this.recalculateZoomLimits(this.imageData,this.frameData)))}}},e),this.workflowManager=t,this.stepName=e}setTargetElements(t){this.targetElements=t}getFrameData(){return this.frameData}setFrameData(t){if(!t){this.frameData=void 0;return}t.forEach((e,a)=>{const r=Dt.get(e);r&&(this.frameData||(this.frameData=new Array(t.length)),this.frameData[a]=r)})}getImageData(){return this.imageData}getImageSrc(){if(this.imageData){if(this.imageData.svg){const t=We(this.imageData.svg,this.imageData.colors||{},!1);return Ge(t)}return this.imageData.src}}getOffsets(){return this.offsets}setOffsets(t){this.offsets=t}setZoom(t,e,a,r){if(this.imageData&&this.offsets&&this.frameData){(!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length));const i=this.frameData.map((o,s)=>{const l=(e[s]-this.offsets[s].x)/this.offsets[s].zoom,c=(a[s]-this.offsets[s].y)/this.offsets[s].zoom,d=e[s]-l*t[s],u=a[s]-c*t[s];return{x:d,y:u,zoom:this.imageData.width*t[s]/this.imageData.width}});this.updateOffsets(i,r),this.onZoomChangeListeners.forEach(o=>o(t))}}setPatternData(t,e=!0){this.imageData=t,t&&this.frameData&&((e||!this.offsets)&&this.recalculateOffsets(t),this.updateOffsets(this.offsets,void 0,!0)),this.imageData&&this.frameData&&this.recalculateZoomLimits(this.imageData,this.frameData)}updateOffsets(t,e,a){const r=this.imageData;if(!r||!this.frameData)return;if(this.frameData.length!==t.length)throw new N("Frame data and offsets are not the same length. This is a bug. Please report it.");if(!this.offsets.some((o,s)=>!(t[s].x===o.x&&t[s].y===o.y&&t[s].zoom===o.zoom))&&!a){e&&e();return}(!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length)),this.frameData.forEach((o,s)=>{this.offsets[s]=ri(t[s],o,this.imageData,this.forceImageCover)}),this._debouncedUpdateFrameOffsets(this.offsets,r,this.frameData,this.thresholdSettings,e)}getThresholdSettings(){return this.thresholdSettings}setThresholdSettings(t){this.thresholdSettings=t,this.imageData&&this.frameData&&this._debouncedUpdateFrameOffsets(this.offsets,this.imageData,this.frameData,t)}onFrameDataChanged(t){t(this.frameData),this.onFrameDataChangeListeners.push(t)}onZoom(t){this.onZoomChangeListeners.push(t)}updateFrameOffsets(t,e,a,r,i){if(!a||a.length===0||a.some(s=>!s))throw new N("Frame data not set. This is a bug");if(!this.workflowManager)throw new N("No workflow manager set, cannot update offsets.");const o=this.workflowManager.getCommandDispatcher();this.targetElements.forEach((s,l)=>{o(new R([new Fs(s,e,t[l]),new Ds(s,r.useThreshold,r.invertThreshold,r.threshold,r.thresholdSaturation)]))}),this.stepName&&this.workflowManager.updateStorage(this.stepName,{frameOffsetsList:t}),i&&i()}recalculateZoomLimits(t,e){(this.minZoomScale.length!==e.length||this.maxZoomScale.length!==e.length)&&(this.minZoomScale=new Array(e.length),this.maxZoomScale=new Array(e.length)),e.forEach((a,r)=>{const i=Math.max(a.width/t.width,a.height/t.height);this.forceImageCover?(this.minZoomScale[r]=i,this.maxZoomScale[r]=i*2.5):(this.minZoomScale[r]=i/10,this.maxZoomScale[r]=i*2.5)})}recalculateOffsets(t){this.frameData&&((!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length)),this.frameData.forEach((e,a)=>{this.offsets[a]=$a(t,e,this.initialZoom&&!this.forceImageCover?{scale:this.initialZoom}:void 0,this.forceImageCover)}),this._debouncedUpdateFrameOffsets(this.offsets,t,this.frameData,this.thresholdSettings))}}class Gc{traversableScenes(){throw new Error("Method not implemented.")}updateRecipient(t,e,a,r,i,o,s,l,c,d,u,A,h,g,p,m,f){throw new Error("Method not implemented.")}approveTransaction(t){throw new Error("Method not implemented.")}rejectTransaction(t){throw new Error("Method not implemented.")}getClient(){return this.client??{}}getWorkflowExperience(){return{}}setClient(t){this.client=t}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}async reset(){}updateStateWithServer(t){}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(t){}addPoller(t){}addConfirmCallback(t){}addEditedCallback(t){}addElementsCallback(t){}addInformationResultCallback(t){}addInitCallback(t){}addMakingAdjustmentsCallback(t){}addMandatoryCallback(t){}addMetadataCallback(t){}addSelectionCallback(t){}addStepSpecificStorageCallback(t,e){}addStorageCallback(t){}getCommandDispatcher(){return t=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getModelContainer(){}getRegionElements(t){return[]}getSerializedStep(t,e){}getStepSpecificServices(t){}getTransaction(){return{id:""}}getTransactionCustomer(){}setTransactionCustomer(){}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(t){}markUpdateCompleted(t){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}getStepSelections(){return{}}setCurrentAdjustingStepId(t){}setEditedStatus(t,e){}setInformationResults(t){}setMandatoryFulfilled(t,e){}async setSelectionsAndElements(t,e,a){}toggleDesignConfirmed(){}updateMetadata(t,e){}async updateStorage(t,e){}injectIntoPreviewService(t){return Promise.resolve()}ejectFromPreviewService(){}setWorkflowStateSyncEnabled(t){}async updateTransactionShareActions(){}addValidationCallback(t){}setStepError(t,e,a){}getStepErrors(t){}getValidationErrors(){return{steps:new Map}}async updateTransactionStakeholders(){}getStepTags(t){return[]}}var oi=(n=>(n.SelectFrame="SelectFrame",n.SelectImage="SelectImage",n.Position="Position",n))(oi||{});class si extends X{constructor(t,e,a){super(t,e,a);const r=e.data;this.frameService=new ii(r.forceImageCover,r.initialZoomLevel),this.frameService.connectWorkflowManager(t,e.stepName)}selectVariant(t){const e=this.manager.getRegionElements(this.step.stepName);return ht.selectVariant(this.step,t.getResource(),e,this.manager,a=>this.setUpdateState(a))}onFrameDataChanged(t){this.frameService&&this.frameService.onFrameDataChanged(e=>{e&&t(e)})}async selectImage(t,e=!0,a=!0){if(await ht.selectImage(this.step,t,this.manager,a),e){const r=this.manager.getStepStorage(this.step.stepName)?.framePatternData||{};this.manager.updateStorage(this.step.stepName,{framePatternData:{...r,originalAssetKey:t.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0}})}}async canUseBackgroundRemover(){return this.manager.getClient().canUseAddon(Ue.BackgroundRemover)}async canRemoveBackground(){return await this.canUseBackgroundRemover()&&this.hasOriginalImageSelection()&&!!this.frameService?.getImageData()?.src&&!this.frameService?.getImageData()?.svg}async removeBackgroundFromImageSelection(t=!0){if(!await this.canUseBackgroundRemover())throw new Error("The current Integration does not have access to the Background Remover. Please call canUseBackgroundRemover to ensure you disable this feature when appropriate.");const e=await this.getOriginalImageSelection();if(!e)throw new Error("You must supply an image selection before attempting to remove the background.");const a=await O.removeBackgroundFromAsset(e);t&&await ht.selectImage(this.step,a,this.manager,!1);const r=this.manager.getStepStorage(this.step.stepName)?.framePatternData||{};return this.manager.updateStorage(this.step.stepName,{framePatternData:{...r,backgroundRemovedAssetKey:a.key,useOriginalAsset:!t}}),a}changeColors(t){ht.changeColors(this.step,this.manager,t)}getImageData(){if(this.frameService)return this.frameService.getImageData()}async getColorOption(){return this.step.data.colorOption}getAvailableColors(){return this.step.data.colorPickerEnabled?ht.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}async getOriginalImageColors(){const t=this.getImageData();return t?.svg?(await ot(t.svg)).colors:void 0}getMaxAllowedColors(){return this.step.data.maxColors}getUniqueColorCount(){return ht.getUniqueColorCount(this.step,this.manager)}getCurrentFrameStep(t,e,a,r){return r&&r.length>1&&t===void 0?"SelectFrame":e||a||this.getImageData()?"Position":"SelectImage"}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasOverlayImageUrl(){return this.step.data.overlayImageUrl}getWhitelistedExtensions(){return[...this.step.data.whitelistedExtensions,...this.step.data.whitelistedExtensions.includes(".jpg")?[".jpeg"]:[]]}async getOriginalImageSelection(){const t=this.manager.getStepStorage(this.step.stepName)?.framePatternData?.originalAssetKey;if(t)return O.getLocalOrFromServer(t)}async getBackgroundRemovedImageSelection(){const t=this.manager.getStepStorage(this.step.stepName)?.framePatternData?.backgroundRemovedAssetKey;if(t)return O.getLocalOrFromServer(t)}hasOriginalImageSelection(){return!!this.manager.getStepStorage(this.step.stepName)?.framePatternData?.originalAssetKey}hasBackgroundRemovedImageSelection(){return!!this.getFrameStepStorage()?.framePatternData?.backgroundRemovedAssetKey}getUseOriginalImageSelection(){return this.getFrameStepStorage()?.framePatternData?.useOriginalAsset??!1}async setUseOriginalImageSelection(t){const e=this.getFrameStepStorage()?.framePatternData||{};if(e.useOriginalAsset===t)return;const a=await this.getOriginalImageSelection();if(!a)throw new Error("You must provide an image selection before calling setUseOriginalImageSelection");if(t)await this.selectImage(a,!1,!1);else{const r=await this.getBackgroundRemovedImageSelection();if(!r)throw new Error("You must call removeBackgroundFromImageSelection before attempting to apply the image.");await this.selectImage(r,!1,!1)}this.manager.updateStorage(this.step.stepName,{framePatternData:{...e,useOriginalAsset:t}})}getFrameStepStorage(){return this.manager.getStepStorage(this.step.stepName)}}const jc=C.gql`
2635
+ `;class Rc{constructor(t,e=y.getShadowGraphqlClient.bind(y)){this.options=t,this.client=e}query(t){const e=this.options?.onQuery?this.options?.onQuery(t):{};return this.client().query({...e,...t,context:{...e.context??{},...t.context??{}}})}mutate(t){const e=this.options?.onMutate?this.options?.onMutate(t):{};return this.client().mutate({...e,...t,context:{...e.context??{},...t.context??{}}})}}class Oc{init(t,e,a){this.cognitoClient=new ve.CognitoIdentityProviderClient({region:e}),this.spiffRegion=t,this.userPoolClientId=a}async generateCode(t){const e=await this.cognitoClient?.send(new ve.InitiateAuthCommand({AuthFlow:"CUSTOM_AUTH",ClientId:this.userPoolClientId,AuthParameters:{USERNAME:t}}));e?.ChallengeName==="CUSTOM_CHALLENGE"&&(this.challengeSession=e.Session)}async verifyCode(t,e,a){const r=await this.cognitoClient?.send(new ve.RespondToAuthChallengeCommand({ClientId:this.userPoolClientId,ChallengeName:"CUSTOM_CHALLENGE",Session:this.challengeSession,ChallengeResponses:{USERNAME:t,ANSWER:e},ClientMetadata:{partnerId:a,environment:(this.spiffRegion||"").toLowerCase()}}));return r?.ChallengeName==="CUSTOM_CHALLENGE"&&(this.challengeSession=r.Session),r}async refreshTokens(){const t=localStorage.getItem("cognito-tokens");if(!t)throw new Error("Failed to find existing tokens.");const e=JSON.parse(t);return await this.cognitoClient?.send(new ve.InitiateAuthCommand({AuthFlow:"REFRESH_TOKEN_AUTH",ClientId:this.userPoolClientId,AuthParameters:{REFRESH_TOKEN:e.RefreshToken||""}}))}}const Yt=new Oc;class ti{formatCurrencyForDisplay(t,e){const a={amount:e||0,currency:t,precision:this.getPrecisionForCurrency(t)};return Ei(a).toFormat(this.getSpecialFormat(t))}getPrecisionForCurrency(t){const e=t,a=rn.code(e);return a?a.digits:2}getSpecialFormat(t){const e=t;if(rn.code(e)?.code==="CLP")return"USD0,0"}}const En=new ti;class ei{constructor(t,e,a,r){this.presentmentCurrency=void 0,this.presentmentCurrency=r,this.partnerCurrency=a,this.rateFrom=t,this.rateTo=e}code(){return this.presentmentCurrency?this.presentmentCurrency:this.partnerCurrency}conversionRequired(){return this.presentmentCurrency!==void 0&&this.code()!==this.partnerCurrency}getConvertedSubunits(t){return this.conversionRequired()?Math.ceil(this.subunits(this.units(t,this.partnerCurrency)/this.rateFrom*this.rateTo,this.code())):t}units(t,e){return t/Math.pow(10,En.getPrecisionForCurrency(e))}subunits(t,e){return t*Math.pow(10,En.getPrecisionForCurrency(e))}}const $c=async(n,t)=>{const e=await y.getShadowGraphqlClient().query({query:Uo(t?.assets?.metadata||!1),errorPolicy:"all",variables:{ids:n}});if(e.error)throw e.error;if(e.errors)throw e.errors.forEach(r=>console.error(r)),new Error("Unable to read workflows. Consult GraphQL errors.");const a=e.data.workflows;if(a===void 0||a.length!==n.length)throw new Error(`Unable to read workflows: ${e.errors??"Length mismatch in response"}`);return a.forEach(r=>{r.steps.forEach(i=>{delete i.data.__typename,i.option?.id&&(i.option.defaultVariant?.asset&&$.cacheAsset(i.option.defaultVariant.asset),i.option.colorProfile&&$.cacheAsset(i.option.colorProfile),i.option.variants?.forEach(o=>{o.asset&&$.cacheAsset(o.asset),o.thumbnail&&$.cacheAsset(o.thumbnail),o.material&&$.cacheMaterial(o.material)}),Ut.set({id:i.option.id},Promise.resolve(i.option)))}),r.finalizeStepConfig||(r.finalizeStepConfig={}),r.finalizeStepConfig.termsMarkdown=r.finalizeStepConfig.termsMarkdown||r.partner.termsMarkdown}),a},Uc=async(n,t)=>{const a=(await t).find(r=>r.id===n);if(!a)throw new Error(`Workflow not found: ${n}`);return a},tn=async(n,t)=>{const e=n.map(s=>Ut.get({id:s,options:t})),a=n.filter((s,l)=>e[l]===void 0);if(a.length===0)return Promise.all(e);const r=$c(a,t),i=a.map(s=>Ut.set({id:s,options:t},Uc(s,r))),o=e.filter(s=>s!==void 0);return await Promise.all(o.concat(i))},ai=async(n,t)=>(await tn([n],t))[0];class Lc{constructor(t){this.activeIntegration=void 0,this.updateTransactionState=async e=>{try{return y.getShadowGraphqlClient().mutate({...e,mutation:Bo})}catch(a){throw console.error(a),new mt("Critical - Unable to synchronize workflow state with server.")}},this.options=t,this.options.applicationKey&&Vi(this.options.applicationKey),console.debug("------------------------"),console.debug("Spiff Commerce Core SDK"),console.debug("Version: 33.8.5-beta.41766cc2-5fc9-5ea6-8164-1441aea96d89"),console.debug(`Application Key Provided: ${!!this.options.applicationKey}`),console.debug("------------------------")}configure(t){ut.setHubUrl(t.hubUrl),ut.setServerUrl(t.serverUrl),ut.setServicesApiUrl(t.servicesApiUrl),this.marketplaceThemeInstallId=t.marketplaceThemeInstallId,this.marketplaceThemeInstallConfigurationId=t.marketplaceThemeInstallConfigurationId,this.userPoolClientId=t.userPoolClientId,this.userPoolRegion=t.userPoolRegion,this.spiffRegion=t.spiffRegion,t.bearerAuthenticationToken&&Hn(t.bearerAuthenticationToken),this.options.applicationKey&&this.getIntegration(),this.spiffRegion&&this.userPoolRegion&&this.userPoolClientId&&Yt.init(this.spiffRegion,this.userPoolRegion,this.userPoolClientId)}getAssetManager(){return $}getFlowService(){if(!zi())throw new Error("Application key required to use Flow Service.");return new _r}async getCurrencyContext(t){const a=(await this.getIntegration()).partner.currencyCode,i=await y.getShadowGraphqlClient().query({query:Ho,errorPolicy:"all",fetchPolicy:"cache-first",variables:{from:a,to:t}}),{rateFrom:o,rateTo:s}=i.data.currencyConversion;return new ei(o,s,a,t)}async getIntegration(){if(this.activeIntegration)return this.activeIntegration;if(!this.options.applicationKey)throw new Error("Cannot get current Integration without specifying an Application Key.");return this.activeIntegration=ni(this.options.applicationKey),this.activeIntegration}async canUseAddon(t){try{return(await this.getIntegration()).partner.activeAddons?.includes(t)??!1}catch(e){return console.error(e),!1}}async authenticateBundleFromLocalStorage(t){if(M.getMap("bundleOwnerIds")?.has(t))return Promise.resolve({success:!0,stakeholderType:ie.Owner});const a=M.getMap("bundlePartnerIds")||new Map;if(a.has(t)){const r=a.get(t);if((M.getMap("partnerCustomerIds")||new Map).get(r)&&await this.reloadLoggedInCustomer()){const l=this.customer?.bundleStakeholders?.find(c=>c.bundle?.id===t);if(l)return Promise.resolve({success:!0,stakeholderType:l.type})}}return Promise.resolve({success:!1})}async authenticateTransactionFromLocalStorage(t){const e=y.getShadowGraphqlClient(),a=await e.query({query:Lo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t}});if(!a.data.transactions||a.data.transactions.length===0)throw new Error(`Transaction not found: ${t}`);const r=a.data.transactions[0];if(!r.product?.partner?.id)throw new Error(`Unable to read transaction: ${t}`);if(r.isOrdered)return Promise.resolve({success:!1,transactionReadOnly:!0});if(M.getMap("transactionOwnerIds")?.has(t))return Promise.resolve({success:!0,stakeholderType:ie.Owner});const s=M.getMap("transactionCustomerIds");if(s?.has(t)&&s.get(t)&&await this.reloadLoggedInCustomer()){const A=this.customer?.bundleStakeholders?.find(h=>h.bundle?.transactions?.some(g=>g.id===t))||this.customer?.stakeholders?.find(h=>h.transaction?.id===t);if(A)return Promise.resolve({success:!0,stakeholderType:A.type})}const c=(await e.query({query:Vo,errorPolicy:"all",variables:{id:r.workflowId}})).data.workflow;if(!c)throw new Error(`Unable to read workflow: ${r.workflowId}`);return Promise.resolve({success:!1,theme:c.overrideTheme,customLogoLink:r.customLogoLink})}clearCustomer(){this.customer=void 0}clearCustomerForTransaction(t){const e=M.getMap("transactionCustomerIds");e?.has(t)&&(e.delete(t),M.setMap("transactionCustomerIds",e))}async customerHasBundleTemplates(t){const r=(await y.getShadowGraphqlClient().query({query:xe,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;return r.id?r.hasBundleTemplates??!1:!1}getStakeholderTypeForTransaction(t){const e=this.customer?.stakeholders?.find(a=>a.transaction?.id===t);if(e)return e.type}async getOrCreateCustomer(t){this.customer=void 0;const e=y.getShadowGraphqlClient(),r=(await e.query({query:xe,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;if(!r.id){const s=(await e.mutate({mutation:Tc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{details:{emailAddress:t}}})).data?.customerCreate;if(!s)throw new Error("Unable to create customer.");return this.storeCustomer(s),this.customer=s,{customer:s,isAuthenticated:!1}}this.storeCustomer(r);const i=await this.reloadLoggedInCustomer();return{customer:this.customer||r,isAuthenticated:i}}getCustomer(){return this.customer}async reloadLoggedInCustomer(){const t=localStorage.getItem("last-refreshed-cognito-tokens"),e=localStorage.getItem("cognito-tokens"),a=localStorage.getItem("cognito-email");if(!t||!e||!a)return!1;const r=JSON.parse(e),i=new Date().getTime()/1e3;if(!r.ExpiresIn||r.ExpiresIn<i-parseInt(t)){const l=await Yt.refreshTokens();if(l?.AuthenticationResult)localStorage.setItem("last-refreshed-cognito-tokens",`${new Date().getTime()/1e3}`),r.AccessToken=l.AuthenticationResult.AccessToken,localStorage.setItem("cognito-tokens",JSON.stringify(r));else return this.logOut(),console.error("Failed to refresh tokens."),!1}const s=(await y.getShadowGraphqlClient().query({query:xe,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:a}})).data.customer;return s.id?(this.customer=s,!0):(console.error("Failed to get customer."),!1)}async generateVerificationCode(t){await y.getShadowGraphqlClient().mutate({mutation:Nc,variables:{emailAddress:t}}),await Yt.generateCode(t)}async verifyCode(t,e){const a=(await this.getIntegration()).partner.id||"",r=await Yt.verifyCode(t,e,a);if(r?.AuthenticationResult){localStorage.setItem("last-refreshed-cognito-tokens",`${new Date().getTime()/1e3}`),localStorage.setItem("cognito-tokens",JSON.stringify(r.AuthenticationResult)),localStorage.setItem("cognito-email",t);const o=(await y.getShadowGraphqlClient().query({query:xe,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;if(!o.id)throw new Error("Failed to get customer.");return this.customer=o,!0}else throw new Error}async logOut(){localStorage.removeItem("last-refreshed-cognito-tokens"),localStorage.removeItem("cognito-tokens"),localStorage.removeItem("cognito-email"),this.clearCustomer()}async loggedInBearerToken(){const t=localStorage.getItem("last-refreshed-cognito-tokens"),e=localStorage.getItem("cognito-tokens");if(!t||!e)throw new Error("No token data in storage.");const a=JSON.parse(e),r=new Date().getTime()/1e3,i=!a?.AccessToken||de(a.AccessToken);if(!a.ExpiresIn||a.ExpiresIn<r-parseInt(t)||i){const o=await Yt.refreshTokens();if(o?.AuthenticationResult)localStorage.setItem("last-refreshed-cognito-tokens",`${new Date().getTime()/1e3}`),a.AccessToken=o.AuthenticationResult.AccessToken,localStorage.setItem("cognito-tokens",JSON.stringify(a));else throw this.logOut(),new Error("Failed to refresh tokens.")}if(!a.AccessToken)throw new Error("No bearer token in storage.");return a.AccessToken}async getCustomerMetafields(){if(!this.customer?.id)throw new Error("Customer must be logged in before calling this function.");return(await y.getShadowGraphqlClient().query({query:Qc,variables:{id:this.customer.id}})).data.metafields}async getNewBundle(t,e,a){const i=(await y.getShadowGraphqlClient().mutate({mutation:Ml(a?.graphql?.productCollection?.eagerFetchProducts||!1),variables:{collectionId:t,initialMetadata:e?Object.entries(e).map((c,d)=>({key:c[0],value:c[1]})):void 0,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},fetchPolicy:"no-cache"})).data?.bundleCreate;if(!i?.id)throw new Error("Unable to create bundle");const o=M.getMap("bundlePartnerIds")||new Map;o.set(i.id,i.partner.id),M.setMap("bundlePartnerIds",o);const s=M.getMap("bundleOwnerIds")||new Map;s.set(i.id,i.bundleOwnerId),M.setMap("bundleOwnerIds",s);const l=new la(this,i,void 0,void 0,i.bundleOwnerId,{eagerFetchProducts:a?.graphql?.productCollection?.eagerFetchProducts});return await l.getInitializationPromise(),l}async getExistingBundle(t,e,a,r){const o=M.getMap("bundleOwnerIds")?.get(t),s={};try{const h=await this.loggedInBearerToken();s.Authorization=`Bearer ${h}`}catch{const p=Object.entries(localStorage).find(([C,w])=>C.startsWith("CognitoIdentityServiceProvider")&&C.endsWith("idToken"))?.[0]||"",m=localStorage.getItem(p);m&&!de(m)&&(s.Authorization=`Bearer ${m}`)}const l={bundleOwnerId:o,...s,...r?.graphql?.additionalHeaders},c=await y.getShadowGraphqlClient().query({query:Pl(r?.graphql?.productCollection?.eagerFetchProducts||!1),variables:{id:t},fetchPolicy:"no-cache",context:{headers:l}});if(!c.data?.bundles||c.data?.bundles.length===0||!c.data?.bundles[0])throw new Error(`Unable to find bundle: ${t}`);const d=c.data?.bundles[0],u=M.getMap("bundlePartnerIds")||new Map;u.set(d.id,d.partner.id),M.setMap("bundlePartnerIds",u);const A=new la(this,d,e,a,o,{additionalHeaders:r?.graphql?.additionalHeaders,eagerFetchProducts:r?.graphql?.productCollection?.eagerFetchProducts,existingGlobalPropertyState:c.data.globalPropertyState,readonly:r?.readonly});return await A.getInitializationPromise(),A}async duplicateBundle(t,e,a,r){const o={...await ri(t),...r?.graphql?.additionalHeaders},l=(await y.getShadowGraphqlClient().mutate({mutation:Tl(r?.graphql?.productCollection?.eagerFetchProducts||!1),variables:{id:t,template:e,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId,duplicateTransactions:a},context:{headers:o},fetchPolicy:"no-cache"})).data?.bundleDuplicate;if(!l?.id)throw new Error("Unable to duplicate bundle");const c=M.getMap("bundlePartnerIds")||new Map;c.set(l.id,l.partner.id),M.setMap("bundlePartnerIds",c);const d=M.getMap("bundleOwnerIds")||new Map;return d.set(l.id,l.bundleOwnerId),M.setMap("bundleOwnerIds",d),async()=>{const u=new la(this,l,void 0,void 0,l.bundleOwnerId,{eagerFetchProducts:r?.graphql?.productCollection?.eagerFetchProducts,existingGlobalPropertyState:l.globalPropertyState});return await u.getInitializationPromise(),u}}async getBundlesForCustomer(t){if(!this.customer?.id)throw new Error("Customer not authenticated.");const{includeMetadata:e,...a}=t;return(await y.getShadowGraphqlClient().query({query:Gl(e??!1),variables:{...a,id:this.customer.id},fetchPolicy:"no-cache"})).data.customerBundlesFeed}async getBundleStakeholders(){if(!this.customer)throw new Error("Customer not authenticated.");const t=await y.getShadowGraphqlClient().query({query:xl,variables:{id:this.customer.id},fetchPolicy:"no-cache"});if(!t.data?.customers||t.data.customers.length===0)throw new Error("Unable to find customer.");const a=t.data.customers[0].bundleStakeholders||[],r=M.getMap("bundlePartnerIds")||new Map;return a.forEach(i=>{i.bundle?.id&&i.bundle.partner?.id&&r.set(i.bundle.id,i.bundle.partner.id)}),M.setMap("bundlePartnerIds",r),a}async getWorkflowExperience(t,e){if(!t)throw new Error("getWorkflowExperience has been called without an options object! This is not supported.");const a=await this.getWorkflowExperiences([t],t.graphql),r=a[0],i=r.getWorkflow();return e&&!i&&console.error("No workflow instantiated when trying to create preview service."),e&&i&&await r.getWorkflowManager().injectIntoPreviewService(e(i)),a[0]}async getWorkflowExperiences(t,e,a){if(t.length===0)throw new mt("No options provided!");const r=y.getShadowGraphqlClient(),i=async S=>{if(S.length===0)return[];const B=S.map(N=>N.option.transactionId),D=await r.query({query:bo,variables:{ids:B},errorPolicy:"all",fetchPolicy:"no-cache"}),F=D.data.transactions;if(F.length!==S.length){const N=D.errors?.[0]?.message||"Unknown error";throw new mt(`Not all transactions were found: ${N}`)}return!this.activeIntegration&&F[0].integrationProduct?.integration&&(this.activeIntegration=Promise.resolve(F[0].integrationProduct.integration)),F.map((N,tt)=>({transaction:N,workflowId:N.workflowId,readOnly:S.find(q=>q.option.transactionId===N.id)?.option.readOnly??!1,index:S[tt].index}))},o=async S=>{if(S.length===0)return[];const B=await r.mutate({mutation:vo,variables:{inputs:S.map(F=>({integrationProductId:F.option.type==="integration"?F.option.integrationProductId:void 0,externalIntegrationId:F.option.type==="external"?F.option.externalIntegrationId:void 0,externalProductId:F.option.type==="external"?F.option.externalProductId:void 0,workflowId:F.option.workflowId,designName:F.option.designName,claim:!0,quantity:F.option.quantity,recipient:F.option.recipient})),marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},errorPolicy:"all",fetchPolicy:"no-cache"}),D=B.data?.transactionCreateMany;if(!D||D.length===0){const F=B.errors?.[0]?.message||"Unknown error";throw new mt(`Failed to create transactions: ${F}`)}return D.map((F,N)=>({transaction:F,workflowId:F.workflowId,readOnly:!1,index:S[N].index}))},s=t.map((S,B)=>({option:S,index:B})),l=s.filter(S=>S.option.type==="transaction"),c=s.filter(S=>S.option.type==="integration"||S.option.type==="external"||S.option.type==="blank"),d=50,u=nn(l,d),A=nn(c,d),h=(await Promise.all([...u.map(i),...A.map(o)])).flat(),g=h.reduce((S,B)=>B.transaction.product?.id?S.add(B.transaction.product?.id):S,new Set);if(g.size>0){const S=await r.query({query:Eo,variables:{ids:Array.from(g)},errorPolicy:"all",fetchPolicy:"no-cache"});!S.data.products||S.data.products.length!==g.size?console.error("Products were requested for Transactions, but were unable to be fetched",S.errors):h.forEach(B=>{const D=S.data.products.find(F=>F.id===B.transaction.product?.id);D?B.transaction.product=D:B.transaction.product?.id&&console.error(`Transaction ${B.transaction.id} has a product but it was not found`)})}const p=[...new Set(h.map(S=>S.workflowId))].filter(S=>S!==void 0),m=p.length>0?await tn(p,e):[],C=new Map(m.map(S=>[S.id,S])),w=M.getMap("transactionOwnerIds")||new Map,I=h.map(async S=>{const{transaction:B,workflowId:D,readOnly:F,index:N}=S,tt=D?C.get(D):void 0,q=t[N];!w.get(B.id)&&B.transactionOwnerId&&w.set(B.id,B.transactionOwnerId);const st=w.get(B.id)||void 0,lt=new Rc({onMutate:()=>({context:{transactionOwnerId:st,bundleOwnerId:e?.bundleOwnerId}}),onQuery:()=>({context:{transactionOwnerId:st,bundleOwnerId:e?.bundleOwnerId}})}),At={workflow:tt,transaction:B,singleVariantsRenderable:q?.workflowConfiguration?.singleVariantsRenderable,stateMutationFunc:F?async()=>{throw new Q("State mutation is forbidden in read only mode!")}:async vt=>this.updateTransactionState({...vt,context:{transactionOwnerId:st,bundleOwnerId:e?.bundleOwnerId}}),graphQlClient:()=>lt,readOnly:F,isReloadedTransaction:q.type==="transaction"};if(q.type==="transaction"&&B.workflowState){const vt=JSON.parse(B.workflowState);await Sa(vt),At.reloadedState=vt}else if(!F&&q.workflowState){const vt=JSON.parse(q.workflowState);await Sa(vt),At.reloadedState=vt}return At.delayWorkflowStateSync=!0,{experienceOptions:At,index:N,options:q}}),x=await Promise.all(I);M.setMap("transactionOwnerIds",w);const b=x.sort((S,B)=>S.index-B.index);let E=[];for(const S of b){const{experienceOptions:B,options:D}=S,F=new qr(this,B);await F.getWorkflowManager().getInitializationPromise(),a&&a(),D.type!=="transaction"&&this.customer&&await F.attachCustomerDetails({email:this.customer.emailAddress}),E=[...E,F],F.getWorkflowManager().setWorkflowStateSyncEnabled(!0)}return E}storeCustomer(t){const e=M.getMap("partnerCustomerIds")||new Map;e.set(t.partner.id,t.id),M.setMap("partnerCustomerIds",e)}async getIntegrationProductById(t,e){const i=(await y.getShadowGraphqlClient().query({query:ko(e),variables:{ids:[t]},fetchPolicy:"no-cache",errorPolicy:"all"})).data?.integrationProducts;if(!i||i.length===0||!i[0]?.id)throw new Error("Integration product not found.");return new Pa(i[0])}async getIntegrationProductFromExternalIds(t,e,a){const o=(await y.getShadowGraphqlClient().query({query:Mo(a),variables:{externalProductId:e,externalIntegrationId:t},fetchPolicy:"no-cache",errorPolicy:"all"})).data?.integrationProductFromExternalIds;if(!o?.id)throw new Error("Integration product not found.");return new Pa(o)}async getIntegrationProduct(t){return t.type==="integration"?this.getIntegrationProductById(t.integrationProductId):this.getIntegrationProductFromExternalIds(t.externalIntegrationId,t.externalProductId)}async getShareActionsForTransaction(t){const a=(M.getMap("transactionOwnerIds")||new Map).get(t)||void 0,r=await y.getShadowGraphqlClient().query({query:Do,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t},context:{transactionOwnerId:a}});if(!r.data.transactions||r.data.transactions.length!==1)throw new Error(`Failed to fetch share actions for transaction: ${t}`);return r.data.transactions[0].transactionShareActions}async placeOrder(t){const e=await y.getShadowGraphqlClient().mutate({mutation:Wo,variables:{orderItems:t}});if(e.errors)throw new Error(e.errors[0].message);if(!e.data)throw new Error("Failed to create order: No order data in response.");return{id:e.data.orderCreate.id,internalId:e.data.orderCreate.internalId}}}const ni=async(n,t)=>(await y.getShadowGraphqlClient().query({query:qo,errorPolicy:"all",fetchPolicy:"no-cache",context:{headers:{"x-application-key":n}},variables:{themeConfigurationId:t}})).data.currentIntegration,Vc=async n=>{const e=await y.getShadowGraphqlClient().query({query:Fo,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:n}});if(e.data.transactions.length!==0)return e.data.transactions[0]},zc=async(n,t)=>(await y.getShadowGraphqlClient().query({query:zo,errorPolicy:"all",variables:{themeConfigurationId:n,themeInstallId:t}})).data?.marketplaceThemeInstallConfiguration,qc=async n=>(await y.getShadowGraphqlClient().query({query:jo,errorPolicy:"all",variables:{id:n}})).data?.bundles?.[0]?.marketplaceThemeInstallConfiguration,Gc=async n=>(await y.getShadowGraphqlClient().query({query:Go,errorPolicy:"all",variables:{id:n}})).data?.transactions?.[0]?.marketplaceThemeInstallConfiguration;async function ri(n){const e=M.getMap("bundleOwnerIds")?.get(n),a={};try{const r=await this.loggedInBearerToken();a.Authorization=`Bearer ${r}`}catch{const o=Object.entries(localStorage).find(([l,c])=>l.startsWith("CognitoIdentityServiceProvider")&&l.endsWith("idToken"))?.[0]||"",s=localStorage.getItem(o);s&&!de(s)&&(a.Authorization=`Bearer ${s}`)}return{bundleOwnerId:e,...a}}const jc=async n=>{const t=await ri(n),e=await y.getShadowGraphqlClient().mutate({mutation:Zl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n},context:{headers:t}});if(e.data?.bundleDelete!==n)throw new Error(`Failed to delete bundle: ${e.errors}`)};function ii(n,t,e,a){const r=e.width*n.zoom,i=e.height*n.zoom;if(a){const s=n,l=Math.max(t.width/e.width,t.height/e.height);s.zoom=Math.max(l,n.zoom);const c=e.width*s.zoom,d=e.height*s.zoom;return s.x=Fe(n.x,t.width-c,0),s.y=Fe(n.y,t.height-d,0),s}const o=n;return o.x=Fe(o.x,-r,t.width),o.y=Fe(o.y,-i,t.height),o}function Fe(n,t,e){return Math.min(Math.max(n,t),e)}class oi{constructor(t,e){this.minZoomScale=[.03],this.maxZoomScale=[20],this._debouncedUpdateFrameOffsets=Tn(this.updateFrameOffsets,200),this.targetElements=[],this.onFrameDataChangeListeners=[],this.onZoomChangeListeners=[],this.forceImageCover=t,this.initialZoom=e,this.thresholdSettings={useThreshold:!1,invertThreshold:!1,threshold:128,thresholdSaturation:.5}}connectWorkflowManager(t,e){e&&t.addStepSpecificStorageCallback(async a=>{if(a){const r=a;if(r.currentFrameSources){let i=!1;for(let o=0;o<r.currentFrameSources.length;o++){const s=r.currentFrameSources[o],l=await Ce(s),c=this.frameData?this.frameData[o]:void 0;ne(l,c)||(this.frameData||(this.frameData=new Array(r.currentFrameSources.length)),this.frameData[o]=l,i=!0)}i&&(this.onFrameDataChangeListeners.forEach(o=>o(this.frameData)),this.frameData&&this.imageData&&(this.recalculateOffsets(this.imageData),this.updateOffsets(this.offsets),this.recalculateZoomLimits(this.imageData,this.frameData)))}}},e),this.workflowManager=t,this.stepName=e}setTargetElements(t){this.targetElements=t}getFrameData(){return this.frameData}setFrameData(t){if(!t){this.frameData=void 0;return}t.forEach((e,a)=>{const r=kt.get(e);r&&(this.frameData||(this.frameData=new Array(t.length)),this.frameData[a]=r)})}getImageData(){return this.imageData}getImageSrc(){if(this.imageData){if(this.imageData.svg){const t=He(this.imageData.svg,this.imageData.colors||{},!1);return je(t)}return this.imageData.src}}getOffsets(){return this.offsets}setOffsets(t){this.offsets=t}setZoom(t,e,a,r){if(this.imageData&&this.offsets&&this.frameData){(!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length));const i=this.frameData.map((o,s)=>{const l=(e[s]-this.offsets[s].x)/this.offsets[s].zoom,c=(a[s]-this.offsets[s].y)/this.offsets[s].zoom,d=e[s]-l*t[s],u=a[s]-c*t[s];return{x:d,y:u,zoom:this.imageData.width*t[s]/this.imageData.width}});this.updateOffsets(i,r),this.onZoomChangeListeners.forEach(o=>o(t))}}setPatternData(t,e=!0){this.imageData=t,t&&this.frameData&&((e||!this.offsets)&&this.recalculateOffsets(t),this.updateOffsets(this.offsets,void 0,!0)),this.imageData&&this.frameData&&this.recalculateZoomLimits(this.imageData,this.frameData)}updateOffsets(t,e,a){const r=this.imageData;if(!r||!this.frameData)return;if(this.frameData.length!==t.length)throw new Q("Frame data and offsets are not the same length. This is a bug. Please report it.");if(!this.offsets.some((o,s)=>!(t[s].x===o.x&&t[s].y===o.y&&t[s].zoom===o.zoom))&&!a){e&&e();return}(!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length)),this.frameData.forEach((o,s)=>{this.offsets[s]=ii(t[s],o,this.imageData,this.forceImageCover)}),this._debouncedUpdateFrameOffsets(this.offsets,r,this.frameData,this.thresholdSettings,e)}getThresholdSettings(){return this.thresholdSettings}setThresholdSettings(t){this.thresholdSettings=t,this.imageData&&this.frameData&&this._debouncedUpdateFrameOffsets(this.offsets,this.imageData,this.frameData,t)}onFrameDataChanged(t){t(this.frameData),this.onFrameDataChangeListeners.push(t)}onZoom(t){this.onZoomChangeListeners.push(t)}updateFrameOffsets(t,e,a,r,i){if(!a||a.length===0||a.some(s=>!s))throw new Q("Frame data not set. This is a bug");if(!this.workflowManager)throw new Q("No workflow manager set, cannot update offsets.");const o=this.workflowManager.getCommandDispatcher();this.targetElements.forEach((s,l)=>{o(new O([new ks(s,e,t[l]),new Ms(s,r.useThreshold,r.invertThreshold,r.threshold,r.thresholdSaturation)]))}),this.stepName&&this.workflowManager.updateStorage(this.stepName,{frameOffsetsList:t}),i&&i()}recalculateZoomLimits(t,e){(this.minZoomScale.length!==e.length||this.maxZoomScale.length!==e.length)&&(this.minZoomScale=new Array(e.length),this.maxZoomScale=new Array(e.length)),e.forEach((a,r)=>{const i=Math.max(a.width/t.width,a.height/t.height);this.forceImageCover?(this.minZoomScale[r]=i,this.maxZoomScale[r]=i*2.5):(this.minZoomScale[r]=i/10,this.maxZoomScale[r]=i*2.5)})}recalculateOffsets(t){this.frameData&&((!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length)),this.frameData.forEach((e,a)=>{this.offsets[a]=Ua(t,e,this.initialZoom&&!this.forceImageCover?{scale:this.initialZoom}:void 0,this.forceImageCover)}),this._debouncedUpdateFrameOffsets(this.offsets,t,this.frameData,this.thresholdSettings))}}class Wc{traversableScenes(){throw new Error("Method not implemented.")}updateRecipient(t,e,a,r,i,o,s,l,c,d,u,A,h,g,p,m,C){throw new Error("Method not implemented.")}approveTransaction(t){throw new Error("Method not implemented.")}rejectTransaction(t){throw new Error("Method not implemented.")}getClient(){return this.client??{}}getWorkflowExperience(){return{}}setClient(t){this.client=t}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}async reset(){}updateStateWithServer(t){}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(t){}addPoller(t){}addConfirmCallback(t){}addEditedCallback(t){}addElementsCallback(t){}addInformationResultCallback(t){}addInitCallback(t){}addMakingAdjustmentsCallback(t){}addMandatoryCallback(t){}addMetadataCallback(t){}addSelectionCallback(t){}addStepSpecificStorageCallback(t,e){}addStorageCallback(t){}getCommandDispatcher(){return t=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getModelContainer(){}getRegionElements(t){return[]}getSerializedStep(t,e){}getStepSpecificServices(t){}getTransaction(){return{id:""}}getTransactionCustomer(){}setTransactionCustomer(){}setTransactionCustomerDetails(){}getWorkflow(){return{id:"",name:"",panels:[],steps:[],showModelOnFinishStep:!1,allowProofDownload:!1,introduction:"",stepGroups:[]}}markStepsAsInitialised(t){}markUpdateCompleted(t){}markUpdatePending(){return"123"}getWorkflowSelections(){return{}}getStepSelections(){return{}}setCurrentAdjustingStepId(t){}setEditedStatus(t,e){}setInformationResults(t){}setMandatoryFulfilled(t,e){}async setSelectionsAndElements(t,e,a){}toggleDesignConfirmed(){}updateMetadata(t,e){}async updateStorage(t,e){}injectIntoPreviewService(t){return Promise.resolve()}ejectFromPreviewService(){}setWorkflowStateSyncEnabled(t){}async updateTransactionShareActions(){}addValidationCallback(t){}setStepError(t,e,a){}getStepErrors(t){}getValidationErrors(){return{steps:new Map}}async updateTransactionStakeholders(){}getStepTags(t){return[]}}var si=(n=>(n.SelectFrame="SelectFrame",n.SelectImage="SelectImage",n.Position="Position",n))(si||{});class li extends _{constructor(t,e,a){super(t,e,a);const r=e.data;this.frameService=new oi(r.forceImageCover,r.initialZoomLevel),this.frameService.connectWorkflowManager(t,e.stepName)}selectVariant(t){const e=this.manager.getRegionElements(this.step.stepName);return gt.selectVariant(this.step,t.getResource(),e,this.manager,a=>this.setUpdateState(a))}onFrameDataChanged(t){this.frameService&&this.frameService.onFrameDataChanged(e=>{e&&t(e)})}async selectImage(t,e=!0,a=!0){if(await gt.selectImage(this.step,t,this.manager,a),e){const r=this.manager.getStepStorage(this.step.stepName)?.framePatternData||{};this.manager.updateStorage(this.step.stepName,{framePatternData:{...r,originalAssetKey:t.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0}})}}async canUseBackgroundRemover(){return this.manager.getClient().canUseAddon(Le.BackgroundRemover)}async canRemoveBackground(){return await this.canUseBackgroundRemover()&&this.hasOriginalImageSelection()&&!!this.frameService?.getImageData()?.src&&!this.frameService?.getImageData()?.svg}async removeBackgroundFromImageSelection(t=!0){if(!await this.canUseBackgroundRemover())throw new Error("The current Integration does not have access to the Background Remover. Please call canUseBackgroundRemover to ensure you disable this feature when appropriate.");const e=await this.getOriginalImageSelection();if(!e)throw new Error("You must supply an image selection before attempting to remove the background.");const a=await $.removeBackgroundFromAsset(e);t&&await gt.selectImage(this.step,a,this.manager,!1);const r=this.manager.getStepStorage(this.step.stepName)?.framePatternData||{};return this.manager.updateStorage(this.step.stepName,{framePatternData:{...r,backgroundRemovedAssetKey:a.key,useOriginalAsset:!t}}),a}changeColors(t){gt.changeColors(this.step,this.manager,t)}getImageData(){if(this.frameService)return this.frameService.getImageData()}async getColorOption(){return this.step.data.colorOption}getAvailableColors(){return this.step.data.colorPickerEnabled?gt.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}async getOriginalImageColors(){const t=this.getImageData();return t?.svg?(await rt(t.svg)).colors:void 0}getMaxAllowedColors(){return this.step.data.maxColors}getUniqueColorCount(){return gt.getUniqueColorCount(this.step,this.manager)}getCurrentFrameStep(t,e,a,r){return r&&r.length>1&&t===void 0?"SelectFrame":e||a||this.getImageData()?"Position":"SelectImage"}getFrameService(){return this.frameService}hasOverlayImageKey(){return this.step.data.overlayImageKey}hasOverlayImageUrl(){return this.step.data.overlayImageUrl}getWhitelistedExtensions(){return[...this.step.data.whitelistedExtensions,...this.step.data.whitelistedExtensions.includes(".jpg")?[".jpeg"]:[]]}async getOriginalImageSelection(){const t=this.manager.getStepStorage(this.step.stepName)?.framePatternData?.originalAssetKey;if(t)return $.getLocalOrFromServer(t)}async getBackgroundRemovedImageSelection(){const t=this.manager.getStepStorage(this.step.stepName)?.framePatternData?.backgroundRemovedAssetKey;if(t)return $.getLocalOrFromServer(t)}hasOriginalImageSelection(){return!!this.manager.getStepStorage(this.step.stepName)?.framePatternData?.originalAssetKey}hasBackgroundRemovedImageSelection(){return!!this.getFrameStepStorage()?.framePatternData?.backgroundRemovedAssetKey}getUseOriginalImageSelection(){return this.getFrameStepStorage()?.framePatternData?.useOriginalAsset??!1}async setUseOriginalImageSelection(t){const e=this.getFrameStepStorage()?.framePatternData||{};if(e.useOriginalAsset===t)return;const a=await this.getOriginalImageSelection();if(!a)throw new Error("You must provide an image selection before calling setUseOriginalImageSelection");if(t)await this.selectImage(a,!1,!1);else{const r=await this.getBackgroundRemovedImageSelection();if(!r)throw new Error("You must call removeBackgroundFromImageSelection before attempting to apply the image.");await this.selectImage(r,!1,!1)}this.manager.updateStorage(this.step.stepName,{framePatternData:{...e,useOriginalAsset:t}})}getFrameStepStorage(){return this.manager.getStepStorage(this.step.stepName)}}const Hc=f.gql`
2628
2636
  query GetLoggedInCustomer($email: String!) {
2629
2637
  customer(emailAddress: $email) {
2630
2638
  id
2631
2639
  }
2632
2640
  }
2633
- `,tn=C.gql`
2641
+ `,en=f.gql`
2634
2642
  query GetCustomerTransactions(
2635
2643
  $id: String!
2636
2644
  $limit: Int!
@@ -2667,21 +2675,21 @@
2667
2675
  total
2668
2676
  }
2669
2677
  }
2670
- `,Wc=C.gql`
2678
+ `,Yc=f.gql`
2671
2679
  mutation SetTransactionDesignName($id: String!, $name: String!) {
2672
2680
  transactionUpdate(id: $id, designName: $name) {
2673
2681
  id
2674
2682
  designName
2675
2683
  }
2676
2684
  }
2677
- `,Hc=C.gql`
2685
+ `,Jc=f.gql`
2678
2686
  mutation DuplicateTransaction($id: String!, $template: Boolean!) {
2679
2687
  transactionDuplicate(id: $id, template: $template) {
2680
2688
  id
2681
2689
  workflowViewerLink
2682
2690
  }
2683
2691
  }
2684
- `,Yc=C.gql`
2692
+ `,Kc=f.gql`
2685
2693
  query GetCustomerBundles($id: String!, $limit: Int!, $offset: Int!) {
2686
2694
  customerBundlesFeed(id: $id, limit: $limit, offset: $offset) {
2687
2695
  items {
@@ -2696,7 +2704,7 @@
2696
2704
  total
2697
2705
  }
2698
2706
  }
2699
- `,Jc=C.gql`
2707
+ `,_c=f.gql`
2700
2708
  query GetTransactionsForBundle($id: String!) {
2701
2709
  bundles(ids: [$id]) {
2702
2710
  id
@@ -2717,21 +2725,21 @@
2717
2725
  }
2718
2726
  }
2719
2727
  }
2720
- `,Kc=C.gql`
2728
+ `,Xc=f.gql`
2721
2729
  mutation SetBundleName($id: String!, $name: String!) {
2722
2730
  bundleUpdate(id: $id, name: $name) {
2723
2731
  id
2724
2732
  name
2725
2733
  }
2726
2734
  }
2727
- `,_c=C.gql`
2735
+ `,Zc=f.gql`
2728
2736
  mutation DuplicateBundle($id: String!, $template: Boolean!) {
2729
2737
  bundleDuplicate(id: $id, template: $template) {
2730
2738
  id
2731
2739
  workflowViewerLink
2732
2740
  }
2733
2741
  }
2734
- `,Xc=C.gql`
2742
+ `,td=f.gql`
2735
2743
  query GetBundleTemplates($id: String!, $limit: Int!, $offset: Int!) {
2736
2744
  customerBundlesFeed(id: $id, limit: $limit, offset: $offset, template: true) {
2737
2745
  items {
@@ -2744,7 +2752,7 @@
2744
2752
  total
2745
2753
  }
2746
2754
  }
2747
- `,Zc=async(n,t,e)=>await S.getShadowGraphqlClient().mutate({mutation:Kc,errorPolicy:"all",variables:{id:n,name:t},context:e}),td=async(n,t)=>await S.getShadowGraphqlClient().mutate({mutation:Wc,errorPolicy:"all",variables:{id:n,name:t}}),ed=async(n,t)=>await S.getShadowGraphqlClient().mutate({mutation:_c,errorPolicy:"all",variables:{id:n,template:t}}),ad=async(n,t)=>await S.getShadowGraphqlClient().mutate({mutation:Hc,errorPolicy:"all",variables:{id:n,template:t}}),nd=async n=>(await S.getShadowGraphqlClient().query({query:jc,errorPolicy:"all",variables:{email:n}})).data.customer,rd=async(n,t,e)=>await S.getShadowGraphqlClient().query({query:Yc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,offset:e,limit:t}}),id=async(n,t)=>await S.getShadowGraphqlClient().query({query:Jc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n},context:t}),od=async(n,t,e)=>(await S.getShadowGraphqlClient().query({query:tn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,quicksearch:"",filters:{link:"and",status:{operator:"isAnyOf",values:["Created","DesignCompleted","ExternallyOrdered"]},template:{value:"false"}},offset:e,limit:t}}))?.data.customerTransactionsFeed?.items||[],sd=async(n,t,e)=>(await S.getShadowGraphqlClient().query({query:tn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,quicksearch:"",filters:{link:"and",status:{operator:"equals",value:"Ordered"},template:{value:"false"}},offset:e,limit:t}}))?.data.customerTransactionsFeed?.items||[],ld=async(n,t,e)=>(await S.getShadowGraphqlClient().query({query:tn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,quicksearch:"",filters:{link:"and",template:{value:"true"}},offset:e,limit:t}}))?.data.customerTransactionsFeed?.items||[],cd=async(n,t,e)=>(await S.getShadowGraphqlClient().query({query:Xc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,offset:e,limit:t}}))?.data.customerBundlesFeed?.items||[];(function(){try{if(typeof document<"u"){var n=document.createElement("style");n.appendChild(document.createTextNode("#spiffThemeWrapper{width:100%;height:100%}")),document.head.appendChild(n)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();var li=(n=>(n.Manual="Manual",n.OnStart="OnStart",n.OnQuit="OnQuit",n.OnEnd="OnEnd",n))(li||{}),Xt=(n=>(n.Email="Email",n.FirstName="FirstName",n.LastName="LastName",n.Phone="Phone",n.Apartment="Apartment",n.City="City",n.Country="Country",n.OrganizationName="OrganizationName",n.PostCode="PostCode",n.State="State",n.StreetAddress="StreetAddress",n.Custom="Custom",n))(Xt||{}),J;J={__e:function(n,t,e,a){for(var r,i,o;t=t.__;)if((r=t.__c)&&!r.__)try{if((i=r.constructor)&&i.getDerivedStateFromError!=null&&(r.setState(i.getDerivedStateFromError(n)),o=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(n,a||{}),o=r.__d),o)return r.__E=r}catch(s){n=s}throw n}},typeof Promise=="function"&&Promise.prototype.then.bind(Promise.resolve());var st,la,En,ci=[],ca=[],bn=J.__b,Bn=J.__r,In=J.diffed,Pn=J.__c,xn=J.unmount;function dd(){for(var n;n=ci.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(ke),n.__H.__h.forEach(Pa),n.__H.__h=[]}catch(t){n.__H.__h=[],J.__e(t,n.__v)}}J.__b=function(n){st=null,bn&&bn(n)},J.__r=function(n){Bn&&Bn(n);var t=(st=n.__c).__H;t&&(la===st?(t.__h=[],st.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.__V=ca,e.__N=e.i=void 0})):(t.__h.forEach(ke),t.__h.forEach(Pa),t.__h=[])),la=st},J.diffed=function(n){In&&In(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(ci.push(t)!==1&&En===J.requestAnimationFrame||((En=J.requestAnimationFrame)||ud)(dd)),t.__H.__.forEach(function(e){e.i&&(e.__H=e.i),e.__V!==ca&&(e.__=e.__V),e.i=void 0,e.__V=ca})),la=st=null},J.__c=function(n,t){t.some(function(e){try{e.__h.forEach(ke),e.__h=e.__h.filter(function(a){return!a.__||Pa(a)})}catch(a){t.some(function(r){r.__h&&(r.__h=[])}),t=[],J.__e(a,e.__v)}}),Pn&&Pn(n,t)},J.unmount=function(n){xn&&xn(n);var t,e=n.__c;e&&e.__H&&(e.__H.__.forEach(function(a){try{ke(a)}catch(r){t=r}}),e.__H=void 0,t&&J.__e(t,e.__v))};var Fn=typeof requestAnimationFrame=="function";function ud(n){var t,e=function(){clearTimeout(a),Fn&&cancelAnimationFrame(t),setTimeout(n)},a=setTimeout(e,100);Fn&&(t=requestAnimationFrame(e))}function ke(n){var t=st,e=n.__c;typeof e=="function"&&(n.__c=void 0,e()),st=t}function Pa(n){var t=st;n.__c=n.__(),st=t}const di=C.gql`
2755
+ `,ed=async(n,t,e)=>await y.getShadowGraphqlClient().mutate({mutation:Xc,errorPolicy:"all",variables:{id:n,name:t},context:e}),ad=async(n,t)=>await y.getShadowGraphqlClient().mutate({mutation:Yc,errorPolicy:"all",variables:{id:n,name:t}}),nd=async(n,t)=>await y.getShadowGraphqlClient().mutate({mutation:Zc,errorPolicy:"all",variables:{id:n,template:t}}),rd=async(n,t)=>await y.getShadowGraphqlClient().mutate({mutation:Jc,errorPolicy:"all",variables:{id:n,template:t}}),id=async n=>(await y.getShadowGraphqlClient().query({query:Hc,errorPolicy:"all",variables:{email:n}})).data.customer,od=async(n,t,e)=>await y.getShadowGraphqlClient().query({query:Kc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,offset:e,limit:t}}),sd=async(n,t)=>await y.getShadowGraphqlClient().query({query:_c,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n},context:t}),ld=async(n,t,e)=>(await y.getShadowGraphqlClient().query({query:en,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,quicksearch:"",filters:{link:"and",status:{operator:"isAnyOf",values:["Created","DesignCompleted","ExternallyOrdered"]},template:{value:"false"}},offset:e,limit:t}}))?.data.customerTransactionsFeed?.items||[],cd=async(n,t,e)=>(await y.getShadowGraphqlClient().query({query:en,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,quicksearch:"",filters:{link:"and",status:{operator:"equals",value:"Ordered"},template:{value:"false"}},offset:e,limit:t}}))?.data.customerTransactionsFeed?.items||[],dd=async(n,t,e)=>(await y.getShadowGraphqlClient().query({query:en,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,quicksearch:"",filters:{link:"and",template:{value:"true"}},offset:e,limit:t}}))?.data.customerTransactionsFeed?.items||[],ud=async(n,t,e)=>(await y.getShadowGraphqlClient().query({query:td,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,offset:e,limit:t}}))?.data.customerBundlesFeed?.items||[];(function(){try{if(typeof document<"u"){var n=document.createElement("style");n.appendChild(document.createTextNode("#spiffThemeWrapper{width:100%;height:100%}")),document.head.appendChild(n)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();var ci=(n=>(n.Manual="Manual",n.OnStart="OnStart",n.OnQuit="OnQuit",n.OnEnd="OnEnd",n))(ci||{}),te=(n=>(n.Email="Email",n.FirstName="FirstName",n.LastName="LastName",n.Phone="Phone",n.Apartment="Apartment",n.City="City",n.Country="Country",n.OrganizationName="OrganizationName",n.PostCode="PostCode",n.State="State",n.StreetAddress="StreetAddress",n.Custom="Custom",n))(te||{}),J;J={__e:function(n,t,e,a){for(var r,i,o;t=t.__;)if((r=t.__c)&&!r.__)try{if((i=r.constructor)&&i.getDerivedStateFromError!=null&&(r.setState(i.getDerivedStateFromError(n)),o=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(n,a||{}),o=r.__d),o)return r.__E=r}catch(s){n=s}throw n}},typeof Promise=="function"&&Promise.prototype.then.bind(Promise.resolve());var it,ca,bn,di=[],da=[],Bn=J.__b,In=J.__r,Pn=J.diffed,xn=J.__c,Fn=J.unmount;function Ad(){for(var n;n=di.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(Me),n.__H.__h.forEach(xa),n.__H.__h=[]}catch(t){n.__H.__h=[],J.__e(t,n.__v)}}J.__b=function(n){it=null,Bn&&Bn(n)},J.__r=function(n){In&&In(n);var t=(it=n.__c).__H;t&&(ca===it?(t.__h=[],it.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.__V=da,e.__N=e.i=void 0})):(t.__h.forEach(Me),t.__h.forEach(xa),t.__h=[])),ca=it},J.diffed=function(n){Pn&&Pn(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(di.push(t)!==1&&bn===J.requestAnimationFrame||((bn=J.requestAnimationFrame)||hd)(Ad)),t.__H.__.forEach(function(e){e.i&&(e.__H=e.i),e.__V!==da&&(e.__=e.__V),e.i=void 0,e.__V=da})),ca=it=null},J.__c=function(n,t){t.some(function(e){try{e.__h.forEach(Me),e.__h=e.__h.filter(function(a){return!a.__||xa(a)})}catch(a){t.some(function(r){r.__h&&(r.__h=[])}),t=[],J.__e(a,e.__v)}}),xn&&xn(n,t)},J.unmount=function(n){Fn&&Fn(n);var t,e=n.__c;e&&e.__H&&(e.__H.__.forEach(function(a){try{Me(a)}catch(r){t=r}}),e.__H=void 0,t&&J.__e(t,e.__v))};var Dn=typeof requestAnimationFrame=="function";function hd(n){var t,e=function(){clearTimeout(a),Dn&&cancelAnimationFrame(t),setTimeout(n)},a=setTimeout(e,100);Dn&&(t=requestAnimationFrame(e))}function Me(n){var t=it,e=n.__c;typeof e=="function"&&(n.__c=void 0,e()),it=t}function xa(n){var t=it;n.__c=n.__(),it=t}const ui=f.gql`
2748
2756
  fragment AddressValidationResultFields on AddressValidationResult {
2749
2757
  addressComplete
2750
2758
  address {
@@ -2766,8 +2774,8 @@
2766
2774
  }
2767
2775
  missingComponentTypes
2768
2776
  }
2769
- `,en=C.gql`
2770
- ${di}
2777
+ `,an=f.gql`
2778
+ ${ui}
2771
2779
  fragment AddressValidationJobFields on AddressValidationJob {
2772
2780
  id
2773
2781
  entityId
@@ -2778,15 +2786,15 @@
2778
2786
  ...AddressValidationResultFields
2779
2787
  }
2780
2788
  }
2781
- `,Ad=C.gql`
2782
- ${en}
2789
+ `,gd=f.gql`
2790
+ ${an}
2783
2791
  query GetAddressValidationJobs($ids: [String!]!) {
2784
2792
  addressValidationJobs(ids: $ids) {
2785
2793
  ...AddressValidationJobFields
2786
2794
  }
2787
2795
  }
2788
- `,hd=C.gql`
2789
- ${en}
2796
+ `,md=f.gql`
2797
+ ${an}
2790
2798
  query GetRecipientsWithAddressValidationJobs($ids: [String!]!) {
2791
2799
  recipients(ids: $ids) {
2792
2800
  id
@@ -2795,27 +2803,27 @@
2795
2803
  }
2796
2804
  }
2797
2805
  }
2798
- `,gd=C.gql`
2799
- ${di}
2806
+ `,pd=f.gql`
2807
+ ${ui}
2800
2808
  mutation ValidateRecipientAddress($id: String!) {
2801
2809
  recipientValidate(id: $id) {
2802
2810
  ...AddressValidationResultFields
2803
2811
  }
2804
2812
  }
2805
- `,md=C.gql`
2806
- ${en}
2813
+ `,fd=f.gql`
2814
+ ${an}
2807
2815
  mutation BatchValidateRecipientAddress($ids: [String!]!) {
2808
2816
  recipientValidateBatch(ids: $ids) {
2809
2817
  ...AddressValidationJobFields
2810
2818
  }
2811
2819
  }
2812
- `,pd=C.gql`
2820
+ `,Cd=f.gql`
2813
2821
  mutation OverrideRecipientAddress($id: String!) {
2814
2822
  recipientOverrideAddress(id: $id) {
2815
2823
  id
2816
2824
  }
2817
2825
  }
2818
- `;var ui=(n=>(n.Confirmed="Confirmed",n.Plausible="Plausible",n.Unlikely="Unlikely",n))(ui||{}),Ai=(n=>(n.Created="Created",n.Processing="Processing",n.Completed="Completed",n.Failed="Failed",n.Cancelled="Cancelled",n))(Ai||{});const fd=async n=>{const t=n.map(a=>a.getTransaction().recipient?.id).filter(a=>!!a),e=await S.getShadowGraphqlClient().query({query:hd,errorPolicy:"all",fetchPolicy:"network-only",variables:{ids:t}});return n.map(a=>{const r=a.getTransaction().recipient?.id;if(r)return e.data?.recipients?.find(i=>i.id===r)?.addressValidationJob})},Cd=async n=>(await S.getShadowGraphqlClient().query({query:Ad,errorPolicy:"all",fetchPolicy:"network-only",variables:{ids:n}})).data?.addressValidationJobs,wd=async n=>n.getTransaction().recipient?.id?(await S.getShadowGraphqlClient().mutate({mutation:gd,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:n.getTransaction().recipient.id}})).data?.recipientValidate:void 0,yd=async n=>{const t=n.map(a=>a.getTransaction().recipient?.id).filter(a=>!!a),e=await S.getShadowGraphqlClient().mutate({mutation:md,errorPolicy:"all",fetchPolicy:"network-only",variables:{ids:t}});return n.map(a=>{const r=a.getTransaction().recipient?.id;if(r)return e.data?.recipientValidateBatch?.find(i=>i.entityId===r)})},Sd=async n=>{const t=n.getTransaction().recipient?.id;if(!t)return;(await S.getShadowGraphqlClient().mutate({mutation:pd,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:t}})).data?.recipientOverrideAddress?.id&&(n.getTransaction().addressValidationStatus=Fa.Overridden)},vd=C.gql`
2826
+ `;var Ai=(n=>(n.Confirmed="Confirmed",n.Plausible="Plausible",n.Unlikely="Unlikely",n))(Ai||{}),hi=(n=>(n.Created="Created",n.Processing="Processing",n.Completed="Completed",n.Failed="Failed",n.Cancelled="Cancelled",n))(hi||{});const wd=async n=>{const t=n.map(a=>a.getTransaction().recipient?.id).filter(a=>!!a),e=await y.getShadowGraphqlClient().query({query:md,errorPolicy:"all",fetchPolicy:"network-only",variables:{ids:t}});return n.map(a=>{const r=a.getTransaction().recipient?.id;if(r)return e.data?.recipients?.find(i=>i.id===r)?.addressValidationJob})},yd=async n=>(await y.getShadowGraphqlClient().query({query:gd,errorPolicy:"all",fetchPolicy:"network-only",variables:{ids:n}})).data?.addressValidationJobs,Sd=async n=>n.getTransaction().recipient?.id?(await y.getShadowGraphqlClient().mutate({mutation:pd,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:n.getTransaction().recipient.id}})).data?.recipientValidate:void 0,vd=async n=>{const t=n.map(a=>a.getTransaction().recipient?.id).filter(a=>!!a),e=await y.getShadowGraphqlClient().mutate({mutation:fd,errorPolicy:"all",fetchPolicy:"network-only",variables:{ids:t}});return n.map(a=>{const r=a.getTransaction().recipient?.id;if(r)return e.data?.recipientValidateBatch?.find(i=>i.entityId===r)})},Ed=async n=>{const t=n.getTransaction().recipient?.id;if(!t)return;(await y.getShadowGraphqlClient().mutate({mutation:Cd,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:t}})).data?.recipientOverrideAddress?.id&&(n.getTransaction().addressValidationStatus=Da.Overridden)},bd=f.gql`
2819
2827
  query GetIntegrationProductsForIds($ids: [String!]!) {
2820
2828
  integrationProducts(ids: $ids) {
2821
2829
  id
@@ -2825,5 +2833,5 @@
2825
2833
  }
2826
2834
  }
2827
2835
  }
2828
- `,Ed=async n=>(await S.getShadowGraphqlClient().query({query:vd,variables:{ids:n}})).data.integrationProducts;exports.AddonHandle=Ue;exports.AddressValidationJobStatus=Ai;exports.AddressValidationResultConfirmationLevel=ui;exports.AddressValidationStatus=Fa;exports.ArrayInput=Dc;exports.AspectType=U;exports.AssetNotFoundError=pt;exports.AssetType=ae;exports.BringForwardCommand=Qs;exports.BringToBackCommand=Ns;exports.BringToFrontCommand=Ts;exports.BundleDesignCreationCartAddMode=Qn;exports.CanvasCommand=Q;exports.CollectionProduct=Yt;exports.ColorOptionGlobalPropertyHandle=ba;exports.CommandContext=gr;exports.ConversionDataType=Xt;exports.ConversionLocation=li;exports.CreateElementCommand=z;exports.CreateLayoutCommand=Va;exports.CurrencyContext=ti;exports.CurrencyService=Zr;exports.DeleteElementCommand=xt;exports.DigitalContentStepHandle=Rr;exports.FileUploadGlobalPropertyHandle=qr;exports.FlowExecutionNodeResult=Jt;exports.FlowExecutionResult=_r;exports.FlowService=Kr;exports.FontAlignmentCommand=yr;exports.FontColorCommand=Cr;exports.FontSizeCommand=wr;exports.FontSourceCommand=Sa;exports.FrameService=ii;exports.FrameStep=oi;exports.FrameStepHandle=si;exports.GlobalPropertyHandle=Je;exports.GroupCommand=R;exports.IllustrationStepHandle=xr;exports.InformationMessageType=ye;exports.InformationStepHandle=Qr;exports.IntegrationProduct=Ia;exports.IntegrationType=On;exports.LayoutElementFactory=Bs;exports.LayoutElementType=D;exports.LayoutNotFoundError=W;exports.LayoutRenderingPurpose=Nt;exports.MaterialStepHandle=Fr;exports.MisconfigurationError=ie;exports.MockWorkflowManager=Gc;exports.ModelStepHandle=Dr;exports.ModuleStepHandle=Or;exports.MoveCommand=Is;exports.ObjectInput=Xa;exports.ObjectInputType=Xr;exports.OptionGlobalPropertyHandle=Ja;exports.OptionNotFoundError=re;exports.ParseError=Et;exports.PictureStepHandle=kr;exports.ProductCameraRig=$n;exports.ProductCollection=Ka;exports.ProductCollectionProductSortKey=Hr;exports.ProductWorkflow=Tt;exports.PromiseCache=$t;exports.PromiseQueue=Ra;exports.QuestionStepHandle=Mr;exports.QueueablePromise=Qa;exports.ResizeCommand=xs;exports.ResourceNotFoundError=Qt;exports.RotateCommand=Ps;exports.ScaleAxis=G;exports.SendBackwardsCommand=Rs;exports.ShapeStepHandle=Tr;exports.ShareActionType=Rn;exports.SpiffCommerceClient=$c;exports.StakeholderType=ne;exports.StepAspectType=Nn;exports.StepHandle=X;exports.StepType=v;exports.TextAlgorithm=It;exports.TextChangeCommand=Sr;exports.TextGlobalPropertyHandle=Gr;exports.TextInput=Fc;exports.TextStepHandle=Nr;exports.Transform=Jr;exports.TransformCollection=Yr;exports.UnhandledBehaviorError=N;exports.UnitOfMeasurement=Un;exports.UpdateImageSourceCommand=ks;exports.Variant=rt;exports.WorkflowExperienceEventType=$e;exports.WorkflowExperienceImpl=zr;exports.assetService=O;exports.browserColorToHex=Jn;exports.cmPerPixel=ls;exports.createDesign=Vr;exports.currentDirection=is;exports.dataUrlFromExternalUrl=Qi;exports.deleteBundle=qc;exports.designService=De;exports.determineCorrectFontSizeAndLines=_t;exports.digitalContentStepService=za;exports.domParser=lt;exports.duplicateBundle=ed;exports.duplicateTransaction=ad;exports.fetchAsString=tt;exports.findAngle=Xo;exports.findElement=$;exports.findPmsColors=to;exports.frameDataCache=Dt;exports.frameStepService=ht;exports.generate=M;exports.generateCommands=Ir;exports.generateSVGWithUnknownColors=ot;exports.generateStateFromDesignInputSteps=wl;exports.getAddressValidationJobs=Cd;exports.getAttributesFromArrayBuffer=Ae;exports.getAxisAlignedBoundingBox=_o;exports.getBoundedOffsets=ri;exports.getBundleThemeConfiguration=Vc;exports.getCustomer=nd;exports.getCustomerBundles=rd;exports.getElementVertices=os;exports.getFrameData=fe;exports.getGlobalPropertyStateForBundle=El;exports.getIntegration=ai;exports.getIntegrationProducts=Ed;exports.getNEPoint=ns;exports.getNWPoint=as;exports.getOrderedTransactions=sd;exports.getOverrideThemeConfiguration=Lc;exports.getPointOfRotation=es;exports.getProductCollections=Ec;exports.getSEPoint=rs;exports.getSvgElement=Ye;exports.getTemplateBundles=cd;exports.getTemplateTransactions=ld;exports.getTransaction=Uc;exports.getTransactionThemeConfiguration=zc;exports.getTransactionsForBundle=id;exports.getTrueCoordinates=ts;exports.getUnorderedTransactions=od;exports.getValidationJobsForWorkflowExperiences=fd;exports.getWorkflow=ei;exports.getWorkflows=Za;exports.graphQlManager=S;exports.illustrationStepService=Kt;exports.isCloseToValue=Zo;exports.loadFont=Pt;exports.matchHexToPms=_i;exports.materialStepService=qa;exports.metafieldManager=Wr;exports.mmPerPixel=ss;exports.modelStepService=Ga;exports.modifySVGColors=We;exports.moduleStepService=ja;exports.nameBundle=Zc;exports.nameTransaction=td;exports.optionService=j;exports.outlineFontsInSvg=hs;exports.overrideWorkflowExperienceRecipientAddress=Sd;exports.patternImageDataCache=dt;exports.persistenceService=k;exports.pictureStepService=Wa;exports.pmsToRgb=Ki;exports.questionStepService=Ha;exports.registerFetchImplementation=Di;exports.registerWindowImplementation=Fi;exports.rehydrateSerializedLayout=ya;exports.rgbToPms=Yn;exports.rotateAroundPoint=Ht;exports.sanitizeSvgTree=je;exports.setBearerAuthenticationToken=Wn;exports.setCanvasModule=ka;exports.shapeStepService=kt;exports.shortenUrl=vr;exports.spiffCoreConfiguration=ut;exports.stepAspectValuesToDesignInputSteps=Cl;exports.svgColorValueToDefinition=pa;exports.svgStringDimensions=La;exports.svgToDataUrl=Ge;exports.textStepService=q;exports.toast=br;exports.validateWorkflowExperienceRecipient=wd;exports.validateWorkflowExperienceRecipients=yd;exports.xmlSerializer=yt;
2836
+ `,Bd=async n=>(await y.getShadowGraphqlClient().query({query:bd,variables:{ids:n}})).data.integrationProducts;exports.AddonHandle=Le;exports.AddressValidationJobStatus=hi;exports.AddressValidationResultConfirmationLevel=Ai;exports.AddressValidationStatus=Da;exports.ArrayInput=Mc;exports.AspectType=L;exports.AssetNotFoundError=ft;exports.AssetType=re;exports.BringForwardCommand=Os;exports.BringToBackCommand=Rs;exports.BringToFrontCommand=Qs;exports.BundleDesignCreationCartAddMode=Rn;exports.CanvasCommand=R;exports.CollectionProduct=Kt;exports.ColorOptionGlobalPropertyHandle=Ba;exports.CommandContext=mr;exports.ConversionDataType=te;exports.ConversionLocation=ci;exports.CreateElementCommand=z;exports.CreateLayoutCommand=za;exports.CurrencyContext=ei;exports.CurrencyService=ti;exports.DeleteElementCommand=Ft;exports.DigitalContentStepHandle=Or;exports.FileUploadGlobalPropertyHandle=Gr;exports.FlowExecutionNodeResult=_t;exports.FlowExecutionResult=Xr;exports.FlowService=_r;exports.FontAlignmentCommand=Sr;exports.FontColorCommand=wr;exports.FontSizeCommand=yr;exports.FontSourceCommand=va;exports.FrameService=oi;exports.FrameStep=si;exports.FrameStepHandle=li;exports.GlobalPropertyHandle=Ke;exports.GroupCommand=O;exports.IllustrationStepHandle=Fr;exports.InformationMessageType=Se;exports.InformationStepHandle=Rr;exports.IntegrationProduct=Pa;exports.IntegrationType=$n;exports.LayoutElementFactory=Ps;exports.LayoutElementType=k;exports.LayoutNotFoundError=H;exports.LayoutRenderingPurpose=Qt;exports.MaterialStepHandle=Dr;exports.MisconfigurationError=se;exports.MockWorkflowManager=Wc;exports.ModelStepHandle=kr;exports.ModuleStepHandle=$r;exports.MoveCommand=xs;exports.ObjectInput=Za;exports.ObjectInputType=Zr;exports.OptionGlobalPropertyHandle=Ka;exports.OptionNotFoundError=oe;exports.ParseError=bt;exports.PictureStepHandle=Mr;exports.ProductCameraRig=Un;exports.ProductCollection=_a;exports.ProductCollectionProductSortKey=Yr;exports.ProductWorkflow=Nt;exports.PromiseCache=Ut;exports.PromiseQueue=Oa;exports.QuestionStepHandle=Tr;exports.QueueablePromise=Ra;exports.ResizeCommand=Ds;exports.ResourceNotFoundError=Rt;exports.RotateCommand=Fs;exports.ScaleAxis=j;exports.SendBackwardsCommand=$s;exports.ShapeStepHandle=Nr;exports.ShareActionType=On;exports.SpiffCommerceClient=Lc;exports.StakeholderType=ie;exports.StepAspectType=Qn;exports.StepHandle=_;exports.StepType=v;exports.TextAlgorithm=Pt;exports.TextChangeCommand=vr;exports.TextGlobalPropertyHandle=jr;exports.TextInput=kc;exports.TextStepHandle=Qr;exports.Transform=Kr;exports.TransformCollection=Jr;exports.UnhandledBehaviorError=Q;exports.UnitOfMeasurement=Ln;exports.UpdateImageSourceCommand=Ts;exports.Variant=at;exports.WorkflowExperienceEventType=Ue;exports.WorkflowExperienceImpl=qr;exports.assetService=$;exports.browserColorToHex=Kn;exports.cmPerPixel=ds;exports.createDesign=zr;exports.currentDirection=ss;exports.dataUrlFromExternalUrl=Ri;exports.deleteBundle=jc;exports.designService=ke;exports.determineCorrectFontSizeAndLines=Zt;exports.digitalContentStepService=qa;exports.domParser=ot;exports.duplicateBundle=nd;exports.duplicateTransaction=rd;exports.fetchAsString=Z;exports.findAngle=ts;exports.findElement=U;exports.findPmsColors=eo;exports.frameDataCache=kt;exports.frameStepService=gt;exports.generate=T;exports.generateCommands=Pr;exports.generateSVGWithUnknownColors=rt;exports.generateStateFromDesignInputSteps=Sl;exports.getAddressValidationJobs=yd;exports.getAttributesFromArrayBuffer=ge;exports.getAxisAlignedBoundingBox=Zo;exports.getBoundedOffsets=ii;exports.getBundleThemeConfiguration=qc;exports.getCustomer=id;exports.getCustomerBundles=od;exports.getElementVertices=ls;exports.getFrameData=Ce;exports.getGlobalPropertyStateForBundle=Bl;exports.getIntegration=ni;exports.getIntegrationProducts=Bd;exports.getNEPoint=is;exports.getNWPoint=rs;exports.getOrderedTransactions=cd;exports.getOverrideThemeConfiguration=zc;exports.getPointOfRotation=ns;exports.getProductCollections=Bc;exports.getSEPoint=os;exports.getSvgElement=Je;exports.getTemplateBundles=ud;exports.getTemplateTransactions=dd;exports.getTransaction=Vc;exports.getTransactionThemeConfiguration=Gc;exports.getTransactionsForBundle=sd;exports.getTrueCoordinates=as;exports.getUnorderedTransactions=ld;exports.getValidationJobsForWorkflowExperiences=wd;exports.getWorkflow=ai;exports.getWorkflows=tn;exports.graphQlManager=y;exports.illustrationStepService=Xt;exports.isCloseToValue=es;exports.loadFont=xt;exports.matchHexToPms=Xi;exports.materialStepService=Ga;exports.metafieldManager=Hr;exports.mmPerPixel=cs;exports.modelStepService=ja;exports.modifySVGColors=He;exports.moduleStepService=Wa;exports.nameBundle=ed;exports.nameTransaction=ad;exports.optionService=W;exports.outlineFontsInSvg=ms;exports.overrideWorkflowExperienceRecipientAddress=Ed;exports.patternImageDataCache=dt;exports.persistenceService=M;exports.pictureStepService=Ha;exports.pmsToRgb=_i;exports.questionStepService=Ya;exports.registerFetchImplementation=ki;exports.registerWindowImplementation=Di;exports.rehydrateSerializedLayout=Sa;exports.rgbToPms=Jn;exports.rotateAroundPoint=Jt;exports.sanitizeSvgTree=We;exports.setBearerAuthenticationToken=Hn;exports.setCanvasModule=Ma;exports.shapeStepService=Mt;exports.shortenUrl=Er;exports.spiffCoreConfiguration=ut;exports.stepAspectValuesToDesignInputSteps=yl;exports.svgColorValueToDefinition=fa;exports.svgStringDimensions=Va;exports.svgToDataUrl=je;exports.textStepService=G;exports.toast=Br;exports.validateWorkflowExperienceRecipient=Sd;exports.validateWorkflowExperienceRecipients=vd;exports.xmlSerializer=St;
2829
2837
  //# sourceMappingURL=index.js.map