@spiffcommerce/core 35.0.1 → 36.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1,2659 @@
1
+ "use strict";var wr=Object.create;var sn=Object.defineProperty;var yr=Object.getOwnPropertyDescriptor;var Sr=Object.getOwnPropertyNames;var vr=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty;var br=(n,t,e,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Sr(t))!Er.call(n,i)&&i!==e&&sn(n,i,{get:()=>t[i],enumerable:!(a=yr(t,i))||a.enumerable});return n};var Ir=(n,t,e)=>(e=n!=null?wr(vr(n)):{},br(t||!n||!n.__esModule?sn(e,"default",{value:n,enumerable:!0}):e,n));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("@apollo/client/core"),Br=require("@apollo/client/link/context"),Pr=require("@apollo/client/link/error"),xr=require("preact-render-to-string"),Fr=require("@apollo/client/link/remove-typename"),Dr=require("exifr/dist/mini.umd.cjs"),Rn=require("css"),kr=require("fuse.js"),Ma=require("pith"),ha=require("lodash.chunk"),Pt=require("lodash.clonedeep"),B=require("preact/jsx-runtime"),ga=require("opentype.js"),Mr=require("html-entities"),Tr=require("handlebars"),Nr=require("data-uri-to-buffer"),pe=require("@aws-sdk/client-cognito-identity-provider"),Qr=require("dinero.js"),Or=require("currency-codes"),$n=require("lodash.debounce"),te=require("lodash.isequal"),ma=require("unicode-default-word-boundary"),Un=require("qrcode"),Rr=require("svg-path-bbox");require("fs");require("path");const $r=require("lodash.omit");function Ur(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 ln=Ur(Or);var ee=(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))(ee||{}),Vn=(n=>(n.AND="AND",n.OR="OR",n))(Vn||{}),q=(n=>(n.FileUpload="FileUpload",n.Option="Option",n.ColorOption="ColorOption",n.Text="Text",n))(q||{}),E=(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))(E||{}),Ln=(n=>(n.Color="Color",n.Colors="Colors",n.Selection="Selection",n.Selections="Selections",n.Text="Text",n.Upload="Upload",n))(Ln||{}),Ot=(n=>(n.ThreeD="ThreeD",n.FreeDesign="FreeDesign",n.Print="Print",n))(Ot||{}),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||{}),Ta=(n=>(n.Pending="Pending",n.Failed="Failed",n.Validated="Validated",n.Overridden="Overridden",n))(Ta||{}),zn=(n=>(n.Hyperlink="Hyperlink",n.Edit="Edit",n.Approve="Approve",n))(zn||{}),Gn=(n=>(n.Hub="Hub",n.Shopify="Shopify",n))(Gn||{}),Qe=(n=>(n.BackgroundRemover="BackgroundRemover",n.ConversionAccelerator="Conversion Accelerator",n.ProcessBuilder="ProcessBuilder",n))(Qe||{}),jn=(n=>(n[n.Orbit=0]="Orbit",n[n.Pan=1]="Pan",n))(jn||{}),Na=(n=>(n.Owner="Owner",n.Approver="Approver",n.Editor="Editor",n.Viewer="Viewer",n))(Na||{}),xt=(n=>(n.Autosize="Autosize",n.Traditional="Traditional",n))(xt||{}),H=(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))(H||{}),Hn=(n=>(n.Pixel="px",n.Millimeter="mm",n.Centimeter="cm",n))(Hn||{});class Wn extends Error{constructor(t){super(t),this.name=this.constructor.name}}class oe extends Wn{constructor(t){super(`ConfigurationError - ${t}`)}}class ae extends oe{constructor(t){super(`Option not Configured: ${t.stepTitle}`),this.optionId=t?.optionId||"N/A"}}class Y extends oe{constructor(t){super(`Panel not Found: ${t.panelId}`),this.panelId=t?.panelId||"N/A"}}class wt extends oe{constructor(t){super(`Asset not found for variant: ${t.name}`),this.variant=t}}class Rt extends oe{constructor(t){super(`Resource not found for asset: ${t.name}`),this.asset=t}}class lt extends oe{constructor(t,e){super(`Workflow Misconfiguration: ${t.stepName} - ${e}`),this.step=t}}class Oe extends Wn{constructor(t){super(`ImplementationError - ${t}`)}}class O extends Oe{constructor(t){super(`Unhandled Behavior Encountered: ${t}`)}}class It extends Oe{constructor(t){super(`Parsing Error: ${t}`)}}class ft extends Oe{constructor(t){super(`Client Error: ${t}`)}}class Re extends Oe{constructor(t){super(`Resource Generation Failed: ${t}`)}}class Vr{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 cn{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 Lr=()=>{try{return localStorage?new Vr:new cn}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new cn}},Q=Lr();class qr{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 ht=new qr;let pa,fa;function zr(n){pa=n}function Gr(n){fa=n}function se(){return pa?new pa().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(!fa){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 fa(n,t)}const Yn=new Map,dn=new Map,un=new Map,Jn=async n=>{const t=dn.get(n);if(t)return t;const a=(async()=>{const i=await it(n);return Yn.set(n,i.headers?.get("content-type")||""),await i.arrayBuffer()})();return dn.set(n,a),a},jr=async n=>{const t=un.get(n);if(t)return t;const a=(async()=>await(await it(n)).text())();return un.set(n,a),a},Vt=n=>n.every(t=>t!=="undefined"),fe=n=>Vt([typeof document])?document.createElement(n):se().document.createElement(n),Hr=(n,t)=>{if(Vt([typeof document]))return document.createElementNS(n,t);const a=se().document.createElement(t);return a.setAttribute("xmlns",n),a},ct=()=>{if(Vt([typeof DOMParser]))return new DOMParser;const n=se();return new n.DOMParser},Wr=()=>Vt([typeof DOMParser])?DOMParser:se().DOMParser,$e=(n,t)=>new Promise((e,a)=>{t?Jn(n).then(e).catch(a):it(n).then(i=>{i.arrayBuffer().then(e).catch(a)}).catch(i=>{a(i)})}),et=(n,t)=>new Promise((e,a)=>{t?jr(n).then(e).catch(a):it(n).then(i=>{i.text().then(e).catch(a)}).catch(a)}),Kn=n=>xr.renderToStaticMarkup(n),_e=new Map,Yr=async(n,t)=>{if(Vt([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 i=a.load();return _e.set(t,i),i}},Et=()=>{if(Vt([typeof XMLSerializer]))return new XMLSerializer;const n=se();return new n.XMLSerializer},An=n=>btoa(n),Ue=n=>{function t(){const a=new Uint8Array(n),i=4;if(a.length>=i){const r=new Array(i);for(let l=0;l<i;l++)r[l]=new Uint8Array(n)[l].toString(16);const o=r.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"},Jr=async n=>{const t=await Jn(n),e=Yn.get(n)||Ue(t);return await Xr(new Blob([t],{type:e}))},Kr=n=>{let t="";const e=n.byteLength;for(let a=0;a<e;a++)t+=String.fromCharCode(n[a]);return t},_r=async n=>{const t=Ue(n),e=new Uint8Array(n),a=Kr(e),i=btoa(a);return`data:${t};base64,${i}`},Ve=n=>`data:image/svg+xml;base64,${btoa(n)}`,_n=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 i=!1;for(let o=1;o<a.length;o++)a[o]==="base64"&&(i=!0);const r=decodeURI(t.substring(e+1));return i?new Uint8Array(atob(r).split("").map(s=>s.charCodeAt(0))).buffer:new Uint8Array(r.split("").map(s=>s.charCodeAt(0))).buffer},Xr=n=>new Promise((t,e)=>{const a=new FileReader;a.onload=function(i){const r=i.target;!r||!r.result?e():t(r.result.toString())},a.readAsDataURL(n)});let Zr,Qa;const to=n=>{Qa=n},eo=()=>Qa;let Xn;const Zn=n=>{Xn=n},ao=()=>new Promise(n=>{const t=ht.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))}),no=async()=>{const n={applicationKey:Qa,customerToken:Zr,bearer:Xn};return typeof window<"u"&&(window.location.href.includes("/workflows/product/")||window.location.href.includes("hub=true"))?{...await ao(),...n}:n};async function io(n,t){const e=ht.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 i=await it(n,{...t,redirect:"manual"});return(i.type==="opaqueredirect"||i.status===307)&&(typeof n!="string"&&"url"in n?i=await it({...n,url:`${a}/graphql`},t):i=await it(`${a}/graphql`,t)),i}class ro{constructor(){this.shadowGraphqlClient=this.constructShadowGraphqlClient(),ht.addServerUrlCallback(()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()})}setSpiffCommerceClient(t){this.spiffClient=t,this.shadowGraphqlClient=this.constructShadowGraphqlClient()}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const t=C.createHttpLink({uri:`${ht.getServerUrl()}/graphql`,fetch:io}),e=Br.setContext(async(r,o)=>{const{headers:s}=o,l=s||{},c=await no();let d=o.bearer??c.bearer,u=!1;if(this.spiffClient){try{d=await this.spiffClient.loggedInBearerToken()}catch{}try{o.skipIntegrationCheck||(u=await this.spiffClient.getBetaEnabled())}catch{}}const A=o.partnerId??c.partnerId,h=o.activeIntegration??c.activeIntegration,g=o.transactionOwnerId,p=o.customerToken??c.customerToken,m=o.applicationKey??c.applicationKey,f=o.bundleOwnerId;try{if(window&&window.__SENTRY__){const y=window.__SENTRY__.hub;if(y){const w=y.traceHeaders();Object.entries(w).forEach(([F,b])=>{l[F]=b})}}}catch{}return d&&(l.Authorization=`Bearer ${d}`),A&&(l.partnerId=A),h&&(l.activeIntegration=h),g&&(l.transactionOwnerId=g),p&&(l.customerToken=p),m&&(l["X-Application-Key"]=m),f&&(l.bundleOwnerId=f),u&&(l["X-Spiff-Beta"]="true"),l["Allow-Moonlight-Redirect"]="true",{headers:l}}),a=Pr.onError(({operation:r,graphQLErrors:o,networkError:s})=>{const l=o||[],c=r.getContext();s&&!c?.fetchOptions?.signal?.aborted&&console.log("GraphQL Network error"),l.forEach(()=>console.log("GraphQL Error: "+r.operationName))}),i=Fr.removeTypenameFromVariables();return new C.ApolloClient({link:C.from([i,a,e,t]),cache:new C.InMemoryCache,name:"Core"})}}const S=new ro;let Ca,wa;const yt=(n,t,e)=>{if(Ca!==void 0)return Ca(n,t,e);try{const a=ti(!0);return Oa(a),a.createCanvas(n,t,e)}catch{throw new Error("Canvas module not set")}},le=(n,t)=>{if(wa!==void 0)return wa(n,t);try{const e=ti(!0);return Oa(e),e.loadImage(n,t)}catch{throw new Error("Canvas module not set")}};function Oa(n){Ca=n?.createCanvas,wa=n?.loadImage}function ti(n){try{if(document.createElement("canvas").getContext("2d"))return{createCanvas:(e,a,i)=>{const r=document.createElement("canvas");return e!=null&&(r.width=e),a!=null&&(r.height=a),r},loadImage:(e,a)=>new Promise((i,r)=>{const o=document.createElement("img");a!==!1&&(o.crossOrigin="Anonymous"),o.onload=()=>{i(o)},o.onerror=r,o.src=e})}}catch(t){throw t}}let Xe;function Ra(){return Xe===void 0&&(Xe=Wr()),Xe}let Ce=null;const oo=n=>new Promise(t=>{if(Ue(n)!=="image/jpeg")return t(1);Dr.orientation(n).then(a=>t(a||1)).catch(()=>t(1))}),so=async()=>{if(Ce!==null)return!Ce;const t=await le("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/xABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAAAAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQvoP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXwH/9k=");return Ce=t.width===2&&t.height===3,!Ce},lo=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]},co=async n=>{const t=await _r(n),e=await le(t),[a,i]=lo(e);if(!await so()){const u=yt(a,i);return u.getContext("2d")?.drawImage(e,0,0,a,i),u}const o=await oo(n),[s,l]=o>4?[i,a]:[a,i],c=yt(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},ce=async n=>{const t=await co(n);return Ue(n)==="image/jpeg"?{dataUrl:t.toDataURL("image/jpeg",1),height:t.height,width:t.width}:{dataUrl:t.toDataURL(),height:t.height,width:t.width}},ne=["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"],$t=["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=$t.map(n=>[parseInt(n.substring(0,2),16),parseInt(n.substring(2,4),16),parseInt(n.substring(4,6),16)]);function uo(n){const t=ne.indexOf(n);return t>=0?$t[t]:""}function ei(n){const t=$t.indexOf(n);return t>=0?ne[t]:""}function Ao(n,t=64){const e=[],a=[],i=ei(n);i&&e.push({pms:i,hex:n,distance:0});const r=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<$t.length;u++){l=Ze[u][0],c=Ze[u][1],d=Ze[u][2];const A=Math.sqrt(Math.pow(r-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===ne[u])&&e.push({pms:ne[u],hex:$t[u],distance:a[u]});return e.sort((u,A)=>u.distance-A.distance)}const ho=ne.map((n,t)=>({pms:n,hex:$t[t]})),go=new kr(ho,{keys:["pms"]});function mo(n,t){return go.search(n,t?{limit:t}:void 0)}let Lt=null;function ai(n){if(n.startsWith("#"))return hn(n);if(!document)throw new Error("browserColorToHex is only supported on browsers");if(Lt||(Lt=document.createElement("canvas").getContext("2d")),!Lt)throw new Error("Failed to create canvas context required to convert colors");Lt.fillStyle=n;const t=hn(Lt.fillStyle);return t||console.error(`Unknown browser color ${n}`),t}function hn(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 we=n=>{const t=ni(n.spotColor);return t?`${n.browserValue} ${t}`:n.browserValue},ni=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})`},ya=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]}}},po=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],fo=["fill","stroke"],Ut=(n,t)=>{t(n),n.children.length>0&&Array.from(n.children).forEach(e=>Ut(e,t))},ii=(n,t)=>{const e=t(n);if(e)return e;const a=n.parentElement;if(a)return ii(a,t)},Co=(n,t)=>{try{return n.matches(t)}catch{return n.classList.contains(t.substring(1))}},Le=(n,t=!1)=>{!t&&n.setAttribute("preserveAspectRatio","none");const e=[];Ut(n,a=>{if(a.tagName==="script"){a.remove();return}if(a.tagName==="style"){try{Rn.parse(a.innerHTML).stylesheet?.rules.forEach(o=>{e.push(o)}),a.remove()}catch(r){console.error(r)}return}const i=a.attributes.getNamedItem("style")?.value?.trim();if(i){const r=[];i.split(";").forEach(s=>{const l=s.trim();if(l){const[c,d]=l.split(":"),u=c.toLowerCase();fo.indexOf(u)>-1?a.setAttribute(u,d.trim()):r.push(l)}}),r.length>0?a.setAttribute("style",r.join(";")):a.removeAttribute("style")}}),Ut(n,a=>{e.forEach(i=>{i.selectors?.forEach(r=>{Co(a,r)&&i.declarations?.forEach(o=>{o.property&&o.value&&a.setAttribute(o.property,o.value)})})})})},wo=n=>{const t=/pt|pc|mm|cm|in/gm,e=n.getAttribute("viewBox"),a=n.getAttribute("width"),i=n.getAttribute("height");if(!e)throw new Error("viewBox not specified on SVG!");a&&n.setAttribute("width",a.replace(t,"")),i&&n.setAttribute("height",i.replace(t,""))},ri=n=>ct().parseFromString(n,"image/svg+xml").firstElementChild,yo=(n,t,e)=>{n.setAttribute("height",`${e}px`),n.setAttribute("width",`${t}px`)},oi=(n,t,e)=>{Ut(n,a=>{const i=a.attributes.getNamedItem("fill");i&&i.value!=="none"&&a.classList.forEach(o=>{if(o.startsWith("spiff-fill")){const s=t[o.replace("spiff-fill-","")];if(s)a.setAttribute("fill",e?we(s):s.browserValue);else{const l=t[o];l&&a.setAttribute("fill",e?we(l):l.browserValue)}}});const r=a.attributes.getNamedItem("stroke");r&&r.value!=="none"&&a.classList.forEach(o=>{if(o.startsWith("spiff-stroke")){const s=t[o.replace("spiff-stroke-","")];if(s)a.setAttribute("stroke",e?we(s):s.browserValue);else{const l=t[o];l&&a.setAttribute("fill",e?we(l):l.browserValue)}}})})},si=n=>Et().serializeToString(n),$a=(n,t,e,a,i)=>{const r=ri(n);if(!r)throw new Error("Failed to read SVG.");return yo(r,t,e),oi(r,a,i),si(r)},qe=(n,t,e)=>{const a=ri(n);if(!a)throw new Error("Failed to read SVG.");return oi(a,t,e),si(a)},So=n=>{const t=/<svg.*<\/svg>/s,e=n.match(t)||[],a=e?.length>0?e[0]:"";return ct().parseFromString(a,"image/svg+xml")},rt=async n=>{const e=So(n).firstElementChild;if(!e)throw new Error("Failed to read SVG.");Le(e);const a={};Ut(e,o=>{if(po.includes(o.tagName)&&!o.attributes.getNamedItem("fill")){let c="black";const d=o.parentElement;if(d){const u=ii(d,A=>{const g=A.style.fill;if(g)return g;const p=A.getAttribute("fill");if(p)return p});u&&(c=u)}o.setAttribute("fill",c)}const s=o.attributes.getNamedItem("fill");if(s&&s.value!=="none"&&!s.value.startsWith("url(")){const c=ya(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=ya(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 r=Et().serializeToString(e);return{colors:a,svg:r}},vo=C.gql`
2
+ fragment AssetMetadataFields on Asset {
3
+ metadata {
4
+ key
5
+ value
6
+ }
7
+ }
8
+ `,ze=n=>C.gql`
9
+ ${n&&vo||""}
10
+ fragment AssetFields on Asset {
11
+ name
12
+ key
13
+ type
14
+ createdAt
15
+ mimeType
16
+ fileLink
17
+ assetConfiguration {
18
+ assetKey
19
+ colorOption {
20
+ id
21
+ name
22
+ variants {
23
+ id
24
+ name
25
+ enabled
26
+ namedColor
27
+ color
28
+ }
29
+ }
30
+ channelNumbers {
31
+ id
32
+ number
33
+ }
34
+ defaultColorVariants {
35
+ channelNumber
36
+ variant {
37
+ id
38
+ name
39
+ enabled
40
+ namedColor
41
+ color
42
+ }
43
+ }
44
+ }
45
+ versions {
46
+ name
47
+ link
48
+ }
49
+ ${n&&"...AssetMetadataFields"||""}
50
+ }
51
+ `,Eo=C.gql`
52
+ ${ze(!1)}
53
+ query GetAssets($keys: [String]!) {
54
+ assets(keys: $keys) {
55
+ ...AssetFields
56
+ }
57
+ }
58
+ `,li=C.gql`
59
+ fragment MaterialFields on Material {
60
+ id
61
+ name
62
+ createdAt
63
+ clearCoat
64
+ clearCoatIor
65
+ refractionIntensity
66
+ reflectionIntensity
67
+ reflectionRotation
68
+ albedoMap {
69
+ key
70
+ fileLink
71
+ }
72
+ alphaMap {
73
+ key
74
+ fileLink
75
+ }
76
+ ambientMap {
77
+ key
78
+ fileLink
79
+ }
80
+ emissionMap {
81
+ key
82
+ fileLink
83
+ }
84
+ metallicMap {
85
+ key
86
+ fileLink
87
+ }
88
+ normalMap {
89
+ key
90
+ fileLink
91
+ }
92
+ refractionMap {
93
+ key
94
+ fileLink
95
+ }
96
+ reflectionMap {
97
+ key
98
+ fileLink
99
+ }
100
+ roughnessMap {
101
+ key
102
+ fileLink
103
+ }
104
+ }
105
+ `,bo=C.gql`
106
+ ${li}
107
+ query GetMaterials($ids: [String]) {
108
+ materials(id: $ids) {
109
+ ...MaterialFields
110
+ }
111
+ }
112
+ `,Io=C.gql`
113
+ mutation CreateAsset($name: String!, $type: String!, $mimeType: String!, $anonymous: Boolean, $temporary: Boolean) {
114
+ assetCreate(name: $name, type: $type, mimeType: $mimeType, anonymous: $anonymous, temporary: $temporary) {
115
+ uploadUrl
116
+ asset {
117
+ name
118
+ key
119
+ type
120
+ createdAt
121
+ mimeType
122
+ fileLink
123
+ }
124
+ }
125
+ }
126
+ `,Bo=C.gql`
127
+ ${ze(!1)}
128
+ mutation RemoveBackgroundFromAsset($key: String!) {
129
+ assetRemoveBackground(key: $key) {
130
+ ...AssetFields
131
+ }
132
+ }
133
+ `,Pe=async n=>(await S.getShadowGraphqlClient().query({query:Eo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{keys:n}})).data.assets,Po=async n=>(await S.getShadowGraphqlClient().query({query:bo,errorPolicy:"all",variables:{ids:n}})).data.materials,xo=async(n,t,e,a,i)=>(await S.getShadowGraphqlClient().mutate({mutation:Io,errorPolicy:"all",fetchPolicy:"no-cache",variables:{name:n,type:t,mimeType:e,anonymous:a,temporary:i}})).data?.assetCreate;class Fo{constructor(){this.cache=new Map,this.bgrmProcessCache=new Map,this.materialCache=new Map,this.loadImageAsFileInfo=async t=>{const e=await t.arrayBuffer(),a=await ce(e),i=(r,o)=>{const s=atob(r.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:i(a.dataUrl,t.type)}}}async getLocalOrFromServer(t){if(this.cache.has(t)){const i=this.cache.get(t);if(!i)throw new O("Failed to get asset from cache!");return i}const a=(async()=>(await Pe([t]))[0])();return this.cache.set(t,a),a}async getFromServer(t){const a=(async()=>(await Pe([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 O("Asset has no key!");this.cache.has(t.key)||this.cache.set(t.key,Promise.resolve(t))}cacheMaterial(t){if(!t.id)throw new O("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 Po([t]))[0])();return this.materialCache.set(t,a),a}async uploadAssetWithProgress(t,e,a,i,r){const o=await this.dispatchCreateAssetRequest(t,e,i,r);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;mt.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,i){return this.uploadAssetWithProgress(t,e,()=>{},a,i)}async uploadFile(t,e){const i=this.isRaster(t)?ee.Image:ee.Illustration,r=await this.loadImageAsFileInfo(t);return await this.uploadAssetWithProgress(r,i,e,!0)}async removeBackgroundFromAsset(t){const e=t.key;if(this.bgrmProcessCache.has(e))return this.bgrmProcessCache.get(e);if(J.has(e)){const r=this.getLocalOrFromServer(J.get(e));return this.bgrmProcessCache.set(e,r),r}const i=(async()=>{const r=await S.getShadowGraphqlClient().mutate({mutation:Bo,fetchPolicy:"no-cache",errorPolicy:"all",variables:{key:e}});if(this.bgrmProcessCache.delete(e),!r.data?.assetRemoveBackground?.key)throw new Error("Failed to remove background from image");return mt.add(r.data.assetRemoveBackground),J.add(e,r.data.assetRemoveBackground.key),this.cache.set(r.data.assetRemoveBackground.key,Promise.resolve(r.data.assetRemoveBackground)),r.data.assetRemoveBackground})();return this.bgrmProcessCache.set(e,i),i}removePersistedAsset(t){mt.remove(t),J.delete(t),J.deleteForBgRemovedKey(t)}getPersistedAssets(){return mt.list()}registerPersistedAssetListener(t){mt.addCallback(t)}unRegisterPersistedAssetListener(t){mt.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 It("Failed to read SVG.");wo(o);const l=Et().serializeToString(o);return{name:t.name,blob:new Blob([l],{type:"image/svg+xml"})}}return t}async dispatchCreateAssetRequest(t,e,a,i){const r=t.blob.type?t.blob.type:this.guessMIME(t.name),o=await xo(t.name,e,r,a,i);if(o)return{assetResponse:o,mimeType:r}}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 O("Unexpected mimetype: "+e)}}}const qt="persistentAssets",ut=class ut{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=Q.getMap(qt);a&&a.forEach((i,r)=>{e.set(r,i)}),Q.setMap(qt,e),ut.executeCallbacks()}static remove(t){const e=Q.getMap(qt);if(!e)return;const a=Array.from(e.entries()).find(i=>i[0]===t);a&&(e.delete(a[0]),Q.setMap(qt,e),ut.executeCallbacks())}static list(){const t=Q.getMap(qt);return t?Array.from(t.entries()).map(e=>({assetKey:e[0],src:e[1]})):[]}static addCallback(t){ut.callbacks.push(t)}static removeCallback(t){ut.callbacks=ut.callbacks.filter(e=>e!==t)}static executeCallbacks(){ut.callbacks.forEach(t=>t())}};ut.callbacks=[];let mt=ut;const gn="bgrmPersistentAssets";class J{static has(t){return J.getMap().has(t)}static get(t){return J.getMap().get(t)}static keys(){return J.getMap().keys()}static values(){return J.getMap().values()}static add(t,e){const a=J.getMap();a.set(t,e),J.setMap(a)}static delete(t){const e=J.getMap();e.delete(t),J.setMap(e)}static deleteForBgRemovedKey(t){const e=J.getMap(),a=Array.from(e.keys()).find(i=>e.get(i)===t);a&&(e.delete(a),J.setMap(e))}static getMap(){return Q.getMap(gn)||new Map}static setMap(t){Q.setMap(gn,t)}}const W=new Fo;class Do{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 ie=new Do,ko=C.gql`
134
+ fragment OptionMinimalFields on Option {
135
+ id
136
+ defaultVariant {
137
+ id
138
+ }
139
+ }
140
+ `,Mo=C.gql`
141
+ fragment OptionFields on Option {
142
+ id
143
+ name
144
+ public
145
+ currencyCode
146
+ type
147
+ workflowId
148
+ displayType
149
+ integrationOptions {
150
+ id
151
+ integrationId
152
+ }
153
+ variants {
154
+ id
155
+ name
156
+ enabled
157
+ color
158
+ namedColor
159
+ priceModifier
160
+ asset {
161
+ ...AssetFields
162
+ }
163
+ thumbnail {
164
+ ...AssetFields
165
+ }
166
+ material {
167
+ ...MaterialFields
168
+ }
169
+ }
170
+ defaultVariant {
171
+ id
172
+ }
173
+ colorProfile {
174
+ ...AssetFields
175
+ }
176
+ }
177
+ `,To=C.gql`
178
+ ${ze(!1)}
179
+ ${li}
180
+ ${Mo}
181
+ query GetOptions($ids: [String]!) {
182
+ options(ids: $ids) {
183
+ ...OptionFields
184
+ }
185
+ }
186
+ `,No=async n=>{const t=await S.getShadowGraphqlClient().query({query:To,errorPolicy:"all",variables:{ids:n}});return t.data.options.forEach(e=>{e.colorProfile&&W.cacheAsset(e.colorProfile),e.variants?.forEach(a=>{a.asset&&W.cacheAsset(a.asset),a.thumbnail&&W.cacheAsset(a.thumbnail),a.material&&W.cacheMaterial(a.material)})}),t.data.options},Qo=async(n,t)=>(await t).find(a=>a.id===n),ta=async n=>{const t=new Map(n.map(i=>[i,ie.get({id:i})])),e=n.filter(i=>t.get(i)===void 0);if(e.length>0){const i=No(e);e.forEach(r=>t.set(r,ie.set({id:r},Qo(r,i))))}return(await Promise.all(n.map(i=>t.get(i)))).filter(i=>i!==void 0)},mn=n=>n?n.versions?.find(e=>e.name==="thumbnail")?.link||n.fileLink:void 0,pn=(n,t,e)=>{if(n.length===1)return n[0];if(e){const a=n.find(i=>i.id===e);if(a)return a}if(t.defaultVariant!==void 0)return n.find(a=>a.id===t.defaultVariant?.id)};class Oo{constructor(){this.getDefaultVariant=async(t,e)=>{const a=t?.variants;if(a)return pn(a,t,e);const r=(await this.getOption(t.id))?.variants;if(r)return pn(r,t,e)}}async getOption(t){return t?(await ta([t]))[0]:void 0}async getOptions(t){return ta(t)}async getOptionForStep(t){return this.ensureFullOption(t.option)}async ensureFullOption(t){return t?.variants?t:t?.id?(await ta([t.id]))[0]:void 0}async getAssetTileImageForVariant(t){const e=mn(t.thumbnail)??mn(t.asset);return e||(t.material?t.material.id:"")}}const P=new Oo,ci=C.gql`
187
+ fragment ActiveIntegrationFields on Integration {
188
+ id
189
+ logo
190
+ name
191
+ theme {
192
+ id
193
+ configuration
194
+ primaryColor
195
+ secondaryColor
196
+ textColor
197
+ }
198
+ partner {
199
+ id
200
+ name
201
+ activeAddons
202
+ currencyCode
203
+ beta
204
+ }
205
+ }
206
+ `,Ge=C.gql`
207
+ fragment AdditionalIntegrationProductFields on IntegrationProduct {
208
+ id
209
+ product {
210
+ id
211
+ basePrice
212
+ enabled
213
+ name
214
+ description
215
+ sku
216
+ skuCode
217
+ weight
218
+ imageUrl
219
+ modelUrl
220
+ overlayImageUrl
221
+ preloadImageUrl
222
+ }
223
+ }
224
+ `,di=C.gql`
225
+ fragment RecipientFields on Recipient {
226
+ id
227
+ firstName
228
+ lastName
229
+ address
230
+ suburb
231
+ state
232
+ email
233
+ postalCode
234
+ country
235
+ mobile
236
+ company
237
+ apartment
238
+ customField1
239
+ customField2
240
+ customField3
241
+ customField4
242
+ customField5
243
+ conversionConfigurationId
244
+ }
245
+ `,de=C.gql`
246
+ fragment ConversionConfigurationFields on ConversionConfiguration {
247
+ id
248
+ partnerId
249
+ name
250
+ locations
251
+ mandatory
252
+ requestedData
253
+ requestedDataItems {
254
+ type
255
+ mandatory
256
+ title
257
+ uniqueIdentifier
258
+ customFieldIndex
259
+ optionId
260
+ option {
261
+ id
262
+ name
263
+ variants {
264
+ id
265
+ name
266
+ enabled
267
+ }
268
+ defaultVariant {
269
+ id
270
+ }
271
+ }
272
+ }
273
+ }
274
+ `,Ro=C.gql`
275
+ ${di}
276
+ mutation CreateTransactions(
277
+ $inputs: [TransactionCreateInput]!
278
+ $marketplaceThemeInstallId: String
279
+ $marketplaceThemeInstallConfigurationId: String
280
+ ) {
281
+ transactionCreateMany(
282
+ inputs: $inputs
283
+ marketplaceThemeInstallId: $marketplaceThemeInstallId
284
+ marketplaceThemeInstallConfigurationId: $marketplaceThemeInstallConfigurationId
285
+ ) {
286
+ id
287
+ designName
288
+ transactionOwnerId
289
+ workflowId
290
+ customLogoLink
291
+ quantity
292
+ workflowFooterLogoLink
293
+ restApiIntegrationLink
294
+ workflowState
295
+ workflowViewerLink
296
+ workflowViewerReadOnlyLink
297
+ recipient {
298
+ ...RecipientFields
299
+ }
300
+ integrationProductId
301
+ }
302
+ }
303
+ `,ui=C.gql`
304
+ fragment StakeholderFields on Stakeholder {
305
+ id
306
+ type
307
+ authorizationDate
308
+ authorizationNote
309
+ authorizationStatus
310
+ }
311
+ `,Ai=C.gql`
312
+ fragment TransactionShareActionFields on TransactionShareAction {
313
+ id
314
+ title
315
+ type
316
+ stakeholderType
317
+ precedence
318
+ url
319
+ }
320
+ `,$o=C.gql`
321
+ ${Ge}
322
+ ${de}
323
+ ${ci}
324
+ query ReadIntegrationProducts($ids: [String!]!) {
325
+ integrationProducts(ids: $ids) {
326
+ id
327
+ externalProductId
328
+ externalVariantId
329
+ additionalExternalProductId
330
+ additionalExternalVariantId
331
+ additionalIntegrationProduct {
332
+ ...AdditionalIntegrationProductFields
333
+ }
334
+ product {
335
+ id
336
+ basePrice
337
+ enabled
338
+ minimumOrderQuantity
339
+ name
340
+ description
341
+ partner {
342
+ id
343
+ name
344
+ currencyCode
345
+ customerDetailsPromptMarkdown
346
+ }
347
+ productImages {
348
+ id
349
+ precedence
350
+ asset {
351
+ key
352
+ fileLink
353
+ name
354
+ type
355
+ versions {
356
+ name
357
+ link
358
+ }
359
+ }
360
+ }
361
+ integrationProducts {
362
+ id
363
+ integration {
364
+ id
365
+ type
366
+ }
367
+ externalProductId
368
+ externalVariantId
369
+ additionalExternalProductId
370
+ additionalExternalVariantId
371
+ additionalIntegrationProduct {
372
+ ...AdditionalIntegrationProductFields
373
+ }
374
+ }
375
+ profanities {
376
+ id
377
+ word
378
+ }
379
+ sku
380
+ skuCode
381
+ weight
382
+ workflows {
383
+ id
384
+ friendlyName
385
+ isPresent
386
+ workflowName
387
+ imageUrl
388
+ }
389
+ imageUrl
390
+ modelUrl
391
+ overlayImageUrl
392
+ preloadImageUrl
393
+ promptForCustomerDetails
394
+ conversionConfiguration {
395
+ ...ConversionConfigurationFields
396
+ }
397
+ productTags {
398
+ id
399
+ name
400
+ }
401
+ priceBreaks {
402
+ id
403
+ minQty
404
+ percentage
405
+ }
406
+ }
407
+ integration {
408
+ ...ActiveIntegrationFields
409
+ }
410
+ }
411
+ }
412
+ `,Uo=C.gql`
413
+ ${ui}
414
+ ${Ai}
415
+ ${di}
416
+ query ReadTransactions($ids: [String]!) {
417
+ transactions(ids: $ids) {
418
+ customLogoLink
419
+ designName
420
+ externalDesignProductId
421
+ externalDesignProductVariantId
422
+ externalCartProductId
423
+ externalCartProductVariantId
424
+ id
425
+ completed
426
+ lastSyncedAt
427
+ priceModifierTotal
428
+ restApiIntegrationLink
429
+ workflowFooterLogoLink
430
+ workflowId
431
+ workflowState
432
+ workflowViewerLink
433
+ workflowViewerReadOnlyLink
434
+ previewImageLink
435
+ isOrdered
436
+ quantity
437
+ printFileUrl1
438
+ printFileUrl2
439
+ printFileUrl3
440
+ printFileUrl4
441
+ printFileUrl5
442
+ printFileName1
443
+ printFileName2
444
+ printFileName3
445
+ printFileName4
446
+ printFileName5
447
+ stakeholders {
448
+ ...StakeholderFields
449
+ }
450
+ currentStakeholder {
451
+ ...StakeholderFields
452
+ }
453
+ hasAuthenticatedActions
454
+ transactionShareActions {
455
+ ...TransactionShareActionFields
456
+ }
457
+ addressValidationStatus
458
+ recipient {
459
+ ...RecipientFields
460
+ }
461
+ integrationProductId
462
+ }
463
+ }
464
+ `,Vo=C.gql`
465
+ mutation UpdateTransactionWorkflowState($id: String!, $workflowState: String!) {
466
+ transactionUpdate(id: $id, workflowState: $workflowState) {
467
+ id
468
+ }
469
+ }
470
+ `,Lo=C.gql`
471
+ mutation UpdateTransactionQuantity($id: String!, $quantity: Int) {
472
+ transactionUpdate(id: $id, quantity: $quantity) {
473
+ id
474
+ }
475
+ }
476
+ `,qo=C.gql`
477
+ mutation UpdateTransactionWorkflow($id: String!, $workflowId: String!) {
478
+ transactionUpdate(id: $id, workflowId: $workflowId) {
479
+ id
480
+ }
481
+ }
482
+ `,zo=C.gql`
483
+ ${de}
484
+ query ReadConversionConfigurationQuery($id: String!) {
485
+ conversionConfiguration(id: $id) {
486
+ ...ConversionConfigurationFields
487
+ }
488
+ }
489
+ `,Go=C.gql`
490
+ ${de}
491
+ query ReadTransactionForDesignCreation($id: String!) {
492
+ transactions(ids: [$id]) {
493
+ id
494
+ completed
495
+ createdAt
496
+ designName
497
+ product {
498
+ name
499
+ sku
500
+ basePrice
501
+ minimumOrderQuantity
502
+ promptForCustomerDetails
503
+ partner {
504
+ id
505
+ name
506
+ customerDetailsPromptMarkdown
507
+ }
508
+ conversionConfiguration {
509
+ ...ConversionConfigurationFields
510
+ }
511
+ productTags {
512
+ id
513
+ name
514
+ }
515
+ priceBreaks {
516
+ id
517
+ minQty
518
+ percentage
519
+ }
520
+ }
521
+ bundle {
522
+ id
523
+ metadata {
524
+ key
525
+ value
526
+ }
527
+ bundleStakeholders {
528
+ type
529
+ customer {
530
+ emailAddress
531
+ }
532
+ }
533
+ }
534
+ externalCartProductId
535
+ externalCartProductVariantId
536
+ externalDesignProductId
537
+ externalDesignProductVariantId
538
+ lastSyncedAt
539
+ previewImageLink
540
+ priceModifierTotal
541
+ quantity
542
+ workflowId
543
+ workflowState
544
+ workflowViewerLink
545
+ workflowViewerReadOnlyLink
546
+ }
547
+ }
548
+ `,jo=C.gql`
549
+ ${Ai}
550
+ query ReadTransactionForShareActions($id: String!) {
551
+ transactions(ids: [$id]) {
552
+ id
553
+ hasAuthenticatedActions
554
+ transactionShareActions {
555
+ ...TransactionShareActionFields
556
+ }
557
+ }
558
+ }
559
+ `,Ho=C.gql`
560
+ query ConfirmWorkflowStates($transactions: [TransactionConfirmInput!]!) {
561
+ transactionConfirmWorkflowStates(transactions: $transactions)
562
+ }
563
+ `,hi=n=>C.gql`
564
+ ${Ge}
565
+ fragment IntegrationProductFields on IntegrationProduct {
566
+ id
567
+ externalProductId
568
+ externalVariantId
569
+ additionalExternalProductId
570
+ additionalExternalVariantId
571
+ additionalIntegrationProduct {
572
+ ...AdditionalIntegrationProductFields
573
+ }
574
+ integration {
575
+ id
576
+ enabled
577
+ externalIntegrationId
578
+ type
579
+ isCurrent
580
+ }
581
+ product {
582
+ id
583
+ basePrice
584
+ enabled
585
+ minimumOrderQuantity
586
+ imageUrl
587
+ modelUrl
588
+ name
589
+ description
590
+ overlayImageUrl
591
+ preloadImageUrl
592
+ sku
593
+ skuCode
594
+ workflows {
595
+ id
596
+ index
597
+ friendlyName
598
+ isPresent
599
+ workflowName
600
+ imageUrl
601
+ }
602
+ productTags {
603
+ id
604
+ name
605
+ }
606
+ productImages {
607
+ id
608
+ precedence
609
+ asset {
610
+ key
611
+ fileLink
612
+ name
613
+ type
614
+ versions {
615
+ name
616
+ link
617
+ }
618
+ }
619
+ }
620
+ priceBreaks {
621
+ id
622
+ minQty
623
+ percentage
624
+ }
625
+ ${n?`
626
+ integrationProducts {
627
+ id
628
+ externalProductId
629
+ externalVariantId
630
+ additionalExternalProductId
631
+ additionalExternalVariantId
632
+ additionalIntegrationProduct {
633
+ ...AdditionalIntegrationProductFields
634
+ }
635
+ integration {
636
+ id
637
+ enabled
638
+ externalIntegrationId
639
+ type
640
+ isCurrent
641
+ }
642
+ }
643
+ `:""}
644
+ }
645
+ }
646
+ `,Wo=n=>C.gql`
647
+ ${hi(n)}
648
+ query GetIntegrationProducts($ids: [String!]!) {
649
+ integrationProducts(ids: $ids) {
650
+ ...IntegrationProductFields
651
+ }
652
+ }
653
+ `,Yo=n=>C.gql`
654
+ ${hi(n)}
655
+ query GetIntegrationProductFromExternalIds($externalIntegrationId: String!, $externalProductId: String!) {
656
+ integrationProductFromExternalIds(
657
+ externalIntegrationId: $externalIntegrationId
658
+ externalProductId: $externalProductId
659
+ ) {
660
+ ...IntegrationProductFields
661
+ }
662
+ }
663
+ `,Jo=C.gql`
664
+ ${ui}
665
+ query ReadTransactionForStakeholders($id: String!) {
666
+ transactions(ids: [$id]) {
667
+ stakeholders {
668
+ ...StakeholderFields
669
+ }
670
+ currentStakeholder {
671
+ ...StakeholderFields
672
+ }
673
+ }
674
+ }
675
+ `,Ko=C.gql`
676
+ mutation FinalizeUpdateTransaction($transactionId: String!) {
677
+ transactionFinalizeUpdate(transactionId: $transactionId)
678
+ }
679
+ `,_o=C.gql`
680
+ fragment RegionFields on Region {
681
+ width
682
+ top
683
+ left
684
+ height
685
+ layer
686
+ layerIndex
687
+ rotation
688
+ panelId
689
+ immutable
690
+ adjustmentBoundary {
691
+ width
692
+ x
693
+ y
694
+ height
695
+ }
696
+ }
697
+ `,Xo=C.gql`
698
+ fragment LookAtAnimationFields on LookAtAnimation {
699
+ latDeg
700
+ lonDeg
701
+ radius
702
+ target {
703
+ x
704
+ y
705
+ z
706
+ }
707
+ }
708
+ `,Zo=C.gql`
709
+ fragment RenderingPipelineConfigurationFields on RenderingPipelineConfiguration {
710
+ antiAliasing {
711
+ samples
712
+ fxaaEnabled
713
+ }
714
+ bloom {
715
+ enabled
716
+ kernel
717
+ scale
718
+ threshold
719
+ weight
720
+ }
721
+ chromaticAberration {
722
+ enabled
723
+ aberrationAmount
724
+ direction {
725
+ x
726
+ y
727
+ }
728
+ radialIntensity
729
+ }
730
+ colorCurves {
731
+ enabled
732
+ globalDensity
733
+ globalExposure
734
+ globalHue
735
+ globalSaturation
736
+ highlightsDensity
737
+ highlightsExposure
738
+ highlightsHue
739
+ highlightsSaturation
740
+ midtonesDensity
741
+ midtonesExposure
742
+ midtonesHue
743
+ midtonesSaturation
744
+ shadowsDensity
745
+ shadowsExposure
746
+ shadowsHue
747
+ shadowsSaturation
748
+ }
749
+ depthOfField {
750
+ enabled
751
+ blurLevel
752
+ focusDistance
753
+ focalLength
754
+ fStop
755
+ lensSize
756
+ }
757
+ grain {
758
+ enabled
759
+ animated
760
+ intensity
761
+ }
762
+ misc {
763
+ contrast
764
+ exposure
765
+ toneMappingEnabled
766
+ toneMappingType
767
+ }
768
+ sharpen {
769
+ enabled
770
+ colorAmount
771
+ edgeAmount
772
+ }
773
+ vignette {
774
+ enabled
775
+ blendMode
776
+ cameraFov
777
+ center {
778
+ x
779
+ y
780
+ }
781
+ colorRgba {
782
+ r
783
+ g
784
+ b
785
+ a
786
+ }
787
+ colorHex
788
+ stretch
789
+ weight
790
+ }
791
+ }
792
+ `,ts=C.gql`
793
+ fragment ModelAnimationFields on ModelAnimation {
794
+ from
795
+ to
796
+ loop
797
+ name
798
+ }
799
+ `,es=n=>C.gql`
800
+ ${ze(n)}
801
+ ${ko}
802
+ ${_o}
803
+ ${Xo}
804
+ ${Zo}
805
+ ${ts}
806
+ query GetWorkflows($ids: [String!]!) {
807
+ workflows(ids: $ids) {
808
+ partner {
809
+ termsMarkdown
810
+ }
811
+ allowProofDownload
812
+ defaultPreviewPanelIndex
813
+ finalizeStepConfig {
814
+ termsMarkdown
815
+ lookAtAnimation {
816
+ ...LookAtAnimationFields
817
+ }
818
+ modelAnimation {
819
+ ...ModelAnimationFields
820
+ }
821
+ }
822
+ globalPreviewConfig {
823
+ autoRotation
824
+ backgroundColor
825
+ backgroundImage
826
+ clearColor
827
+ disableActionBar
828
+ disableAutomaticOrientation
829
+ emissiveGlowIntensity
830
+ enableAR
831
+ environmentFile
832
+ environmentIntensity
833
+ environmentRotationY
834
+ idleTimeBeforeRotation
835
+ lowerAlphaLimitDeg
836
+ lowerBetaLimitDeg
837
+ maxZoomOverride
838
+ minZoomOverride
839
+ noPan
840
+ upperAlphaLimitDeg
841
+ upperBetaLimitDeg
842
+ renderingPipelineConfiguration {
843
+ ...RenderingPipelineConfigurationFields
844
+ }
845
+ }
846
+ id
847
+ name
848
+ panels {
849
+ editableArea {
850
+ height
851
+ width
852
+ x
853
+ y
854
+ }
855
+ height
856
+ width
857
+ index
858
+ name
859
+ title
860
+ useEditableArea
861
+ transparentBackground
862
+ previewRegion {
863
+ ...RegionFields
864
+ }
865
+ }
866
+ previewAsset {
867
+ ...AssetFields
868
+ }
869
+ showModelOnFinishStep
870
+ showPlusInVariantPrices
871
+ showPricing
872
+ skuCode
873
+ stepGroups {
874
+ name
875
+ stepNames
876
+ }
877
+ steps {
878
+ stepName
879
+ type
880
+ tags
881
+ globalPropertyAspectConfigurations {
882
+ aspectName
883
+ globalPropertyConfigurationId
884
+ }
885
+ conversionConfigurationFieldLinks {
886
+ identifier
887
+ conversionConfigurationId
888
+ }
889
+ overrideDefaultVariantId
890
+ option {
891
+ ...OptionMinimalFields
892
+ }
893
+ stepTitle
894
+ helpText
895
+ mandatory
896
+ relevantPanelName
897
+ silent
898
+ conditions {
899
+ requiredVariantSelections
900
+ targetStepName
901
+ action
902
+ }
903
+ data {
904
+ __typename
905
+ ... on InformationStepData {
906
+ content
907
+ lookAtAnimation {
908
+ ...LookAtAnimationFields
909
+ }
910
+ modelAnimation {
911
+ ...ModelAnimationFields
912
+ }
913
+ }
914
+ ... on DigitalContentStepData {
915
+ advancedEditorAnimation {
916
+ x
917
+ y
918
+ zoom
919
+ layoutName
920
+ }
921
+ baseUrl
922
+ lookAtAnimation {
923
+ ...LookAtAnimationFields
924
+ }
925
+ modelAnimation {
926
+ ...ModelAnimationFields
927
+ }
928
+ regions {
929
+ ...RegionFields
930
+ }
931
+ }
932
+ ... on FrameStepData {
933
+ advancedEditorAnimation {
934
+ x
935
+ y
936
+ zoom
937
+ layoutName
938
+ }
939
+ colorOption {
940
+ ...OptionMinimalFields
941
+ }
942
+ colorPickerEnabled
943
+ initialZoomLevel
944
+ disablePlaceholder
945
+ displayImageOnFinishStep
946
+ displaySelectionOnFinishStep
947
+ forceImageCover
948
+ hideImageInCart
949
+ hideSelectionInCart
950
+ lookAtAnimation {
951
+ ...LookAtAnimationFields
952
+ }
953
+ maxColors
954
+ modelAnimation {
955
+ ...ModelAnimationFields
956
+ }
957
+ overlayImageKey
958
+ overlayImageUrl
959
+ placeholderImageKey
960
+ placeholderImageUrl
961
+ regions {
962
+ ...RegionFields
963
+ }
964
+ whitelistedExtensions
965
+ }
966
+ ... on IllustrationStepData {
967
+ advancedEditorAnimation {
968
+ x
969
+ y
970
+ zoom
971
+ layoutName
972
+ }
973
+ colorOption {
974
+ ...OptionMinimalFields
975
+ }
976
+ colorPickerEnabled
977
+ pmsPickerEnabled
978
+ displayColorsOnFinishStep
979
+ displaySelectionOnFinishStep
980
+ enableVariantSearch
981
+ hideColorsInCart
982
+ hideSelectionInCart
983
+ lookAtAnimation {
984
+ ...LookAtAnimationFields
985
+ }
986
+ modelAnimation {
987
+ ...ModelAnimationFields
988
+ }
989
+ regions {
990
+ ...RegionFields
991
+ }
992
+ }
993
+ ... on MaterialStepData {
994
+ advancedEditorAnimation {
995
+ x
996
+ y
997
+ zoom
998
+ layoutName
999
+ }
1000
+ displaySelectionOnFinishStep
1001
+ hideSelectionInCart
1002
+ lookAtAnimation {
1003
+ ...LookAtAnimationFields
1004
+ }
1005
+ modelAnimation {
1006
+ ...ModelAnimationFields
1007
+ }
1008
+ targetMaterials
1009
+ }
1010
+ ... on ModelStepData {
1011
+ advancedEditorAnimation {
1012
+ x
1013
+ y
1014
+ zoom
1015
+ layoutName
1016
+ }
1017
+ displaySelectionOnFinishStep
1018
+ hideSelectionInCart
1019
+ lookAtAnimation {
1020
+ ...LookAtAnimationFields
1021
+ }
1022
+ modelAnimation {
1023
+ ...ModelAnimationFields
1024
+ }
1025
+ replaceProductModel
1026
+ }
1027
+ ... on ModuleStepData {
1028
+ advancedEditorAnimation {
1029
+ x
1030
+ y
1031
+ zoom
1032
+ layoutName
1033
+ }
1034
+ displayTextOnFinishStep
1035
+ hideTextInCart
1036
+ lookAtAnimation {
1037
+ ...LookAtAnimationFields
1038
+ }
1039
+ maxLength
1040
+ modelAnimation {
1041
+ ...ModelAnimationFields
1042
+ }
1043
+ module
1044
+ regions {
1045
+ ...RegionFields
1046
+ }
1047
+ }
1048
+ ... on PictureStepData {
1049
+ advancedEditorAnimation {
1050
+ x
1051
+ y
1052
+ zoom
1053
+ layoutName
1054
+ }
1055
+ displaySelectionOnFinishStep
1056
+ enableVariantSearch
1057
+ hideSelectionInCart
1058
+ lookAtAnimation {
1059
+ ...LookAtAnimationFields
1060
+ }
1061
+ modelAnimation {
1062
+ ...ModelAnimationFields
1063
+ }
1064
+ regions {
1065
+ ...RegionFields
1066
+ }
1067
+ }
1068
+ ... on ProductOverlayStepData {
1069
+ regions {
1070
+ ...RegionFields
1071
+ }
1072
+ overlayType
1073
+ }
1074
+ ... on QuestionStepData {
1075
+ advancedEditorAnimation {
1076
+ x
1077
+ y
1078
+ zoom
1079
+ layoutName
1080
+ }
1081
+ allowMultipleSelections
1082
+ displaySelectionsOnFinishStep
1083
+ displayType
1084
+ hideSelectionsInCart
1085
+ lookAtAnimation {
1086
+ ...LookAtAnimationFields
1087
+ }
1088
+ modelAnimation {
1089
+ ...ModelAnimationFields
1090
+ }
1091
+ }
1092
+ ... on ShapeStepData {
1093
+ advancedEditorAnimation {
1094
+ x
1095
+ y
1096
+ zoom
1097
+ layoutName
1098
+ }
1099
+ displaySelectionOnFinishStep
1100
+ excludeFromPrint
1101
+ hideSelectionInCart
1102
+ lookAtAnimation {
1103
+ ...LookAtAnimationFields
1104
+ }
1105
+ modelAnimation {
1106
+ ...ModelAnimationFields
1107
+ }
1108
+ regions {
1109
+ ...RegionFields
1110
+ }
1111
+ }
1112
+ ... on SilentIllustrationStepData {
1113
+ advancedEditorAnimation {
1114
+ x
1115
+ y
1116
+ zoom
1117
+ layoutName
1118
+ }
1119
+ asset {
1120
+ ...AssetFields
1121
+ }
1122
+ excludeFromPrint
1123
+ lookAtAnimation {
1124
+ ...LookAtAnimationFields
1125
+ }
1126
+ modelAnimation {
1127
+ ...ModelAnimationFields
1128
+ }
1129
+ regions {
1130
+ ...RegionFields
1131
+ }
1132
+ }
1133
+ ... on TextStepData {
1134
+ advancedEditorAnimation {
1135
+ x
1136
+ y
1137
+ zoom
1138
+ layoutName
1139
+ }
1140
+ allowNewlines
1141
+ colorOption {
1142
+ ...OptionMinimalFields
1143
+ }
1144
+ colorPickerEnabled
1145
+ curved
1146
+ defaultText
1147
+ deleteDefaultOnFocus
1148
+ displayColorOnFinishStep
1149
+ displayImageFillOnFinishStep
1150
+ displayStrokeOnFinishStep
1151
+ displayTextOnFinishStep
1152
+ hideColorInCart
1153
+ hideImageFillInCart
1154
+ hideSelectionInCart
1155
+ hideStrokeInCart
1156
+ hideTextInCart
1157
+ imageFillOption {
1158
+ ...OptionMinimalFields
1159
+ }
1160
+ imageFillScale
1161
+ lookAtAnimation {
1162
+ ...LookAtAnimationFields
1163
+ }
1164
+ maxLength
1165
+ maxSize
1166
+ minSize
1167
+ modelAnimation {
1168
+ ...ModelAnimationFields
1169
+ }
1170
+ paths
1171
+ regions {
1172
+ ...RegionFields
1173
+ }
1174
+ replaceableText
1175
+ size
1176
+ strokeEnabled
1177
+ strokeOption {
1178
+ ...OptionMinimalFields
1179
+ }
1180
+ strokeThickness
1181
+ textAlign
1182
+ uppercase
1183
+ userCanReplaceText
1184
+ vertical
1185
+ verticalAlign
1186
+ }
1187
+ }
1188
+ }
1189
+ }
1190
+ }
1191
+ `,je=C.gql`
1192
+ ${de}
1193
+ fragment MarketplaceThemeInstallConfigurationFields on MarketplaceThemeInstallConfiguration {
1194
+ id
1195
+ themeInstallId
1196
+ fields {
1197
+ type
1198
+ key
1199
+ value
1200
+ asset {
1201
+ key
1202
+ name
1203
+ fileLink
1204
+ type
1205
+ }
1206
+ conversionConfiguration {
1207
+ ...ConversionConfigurationFields
1208
+ }
1209
+ listValues
1210
+ objectValues
1211
+ schema
1212
+ root
1213
+ }
1214
+ themeVersion {
1215
+ id
1216
+ version
1217
+ status
1218
+ createdAt
1219
+ updatedAt
1220
+ launchData {
1221
+ targetFiles {
1222
+ filename
1223
+ type
1224
+ mimeType
1225
+ fileLink
1226
+ preload
1227
+ }
1228
+ }
1229
+ configurationSchema {
1230
+ customSchemas {
1231
+ name
1232
+ type
1233
+ title
1234
+ fields
1235
+ extends
1236
+ schemas
1237
+ }
1238
+ fields {
1239
+ key
1240
+ type
1241
+ title
1242
+ required
1243
+ defaultValue
1244
+ options {
1245
+ key
1246
+ value
1247
+ }
1248
+ assetType
1249
+ multiLine
1250
+ limit
1251
+ items
1252
+ fields
1253
+ schema
1254
+ root
1255
+ }
1256
+ }
1257
+ }
1258
+ }
1259
+ `,as=C.gql`
1260
+ ${je}
1261
+ query GetMarketplaceThemeInstallConfiguration($themeConfigurationId: String!, $themeInstallId: String!) {
1262
+ marketplaceThemeInstallConfiguration(id: $themeConfigurationId, themeInstallId: $themeInstallId, raw: false) {
1263
+ ...MarketplaceThemeInstallConfigurationFields
1264
+ }
1265
+ }
1266
+ `,ns=C.gql`
1267
+ ${ci}
1268
+ ${je}
1269
+ query GetCurrentIntegration($themeConfigurationId: String) {
1270
+ currentIntegration {
1271
+ id
1272
+ type
1273
+ marketplaceThemeInstallConfiguration(id: $themeConfigurationId, raw: false) {
1274
+ ...MarketplaceThemeInstallConfigurationFields
1275
+ }
1276
+ ...ActiveIntegrationFields
1277
+ }
1278
+ }
1279
+ `,is=C.gql`
1280
+ ${je}
1281
+ query ReadTransactionForMarketplaceTheme($id: String!) {
1282
+ transactions(ids: [$id]) {
1283
+ marketplaceThemeInstallConfiguration(raw: false) {
1284
+ ...MarketplaceThemeInstallConfigurationFields
1285
+ }
1286
+ }
1287
+ }
1288
+ `,rs=C.gql`
1289
+ ${je}
1290
+ query ReadBundleForMarketplaceTheme($id: String!) {
1291
+ bundles(ids: [$id]) {
1292
+ marketplaceThemeInstallConfiguration(raw: false) {
1293
+ ...MarketplaceThemeInstallConfigurationFields
1294
+ }
1295
+ }
1296
+ }
1297
+ `,os=C.gql`
1298
+ mutation CreateOrder($orderItems: [OrderItemInput]!) {
1299
+ orderCreate(orderItems: $orderItems, paid: false, generateInternalId: true) {
1300
+ id
1301
+ internalId
1302
+ }
1303
+ }
1304
+ `,ss=C.gql`
1305
+ query CurrencyConversion($from: String!, $to: String!) {
1306
+ currencyConversion(from: $from, to: $to) {
1307
+ rateFrom
1308
+ rateTo
1309
+ timestamp
1310
+ }
1311
+ }
1312
+ `,ea=[E.SilentIllustration,E.ProductOverlay],fn=n=>{const t=[];for(const a of n.steps){const i=ls(a.stepName,n.stepGroups);if(!i)throw new Error("Workflow step does not belong to a group, all steps must belong to a group. Step: "+a.stepName);const r=t.find(o=>o.name===i.name);r?ea.includes(a.type)?r.silentSteps.push(a):r.renderableSteps.push(a):t.push({name:i.name,title:i.name,renderableSteps:ea.includes(a.type)?[]:[a],silentSteps:ea.includes(a.type)?[a]:[]})}const e="workflow.steps.finish.confirmDesign";return t.push({name:"Finish",title:e,renderableSteps:[{type:E.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},ls=(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 i=a.selectedVariants;return e.requiredVariantSelections.some(r=>i.find(o=>o.id===r)!==void 0)}return!1}),cs=(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},dt=(n,t)=>n.map(e=>cs(e,t)).filter(e=>e!==null),ds=async(n,t,e=!1)=>{const a=dt(n,t),i=[];for(const o of a)for(const s of o.renderableSteps){let l=0;if(s.type!=="Finish"&&s.type!=="Module"){let c;s.option?.variants?(c=s.option,l=c?.variants?.length||0):(c=await P.getOption(s.option?.id),l=c?.variants?.length||0)}s.silent||(s.type===E.Model||s.type===E.Material||s.type===E.Picture||s.type===E.Shape?(l>1||e)&&i.push(s.stepName):i.push(s.stepName))}const r=a.filter(o=>o.renderableSteps.filter(l=>i.includes(l.stepName)).length>0);for(const o of r)o.renderableSteps=o.renderableSteps.filter(s=>i.includes(s.stepName));return r};class Ua{constructor(){this.timestamp=Date.now()}}class Va{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 N=()=>{const n=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return n()+n()+"-"+n()+"-"+n()+"-"+n()+"-"+n()+n()+n()},us=({backgroundColor:n,outlineColor:t,borderRadius:e,configuration:a,elements:i,height:r,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:r},m=`${p.x} ${p.y} ${p.width} ${p.height}`,f=N(),y=a.purpose===Ot.FreeDesign&&B.jsx("defs",{children:B.jsx("clipPath",{id:"viewboxClip",children:B.jsx("rect",{width:p.width,height:p.height,rx:h})})}),w=a.colorProfiles?.map((v,I)=>B.jsx("color-profile",{name:v.name,xlinkHref:v.key,children:" "},I)),F=i.map(v=>({...v,_renderingConfiguration:a,mask:l?`url(#viewmask-${f})`:void 0})),b=La(F);return B.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:r,style:{gridColumn:1,gridRow:1,maxWidth:s,maxHeight:o,position:c},viewBox:m,children:[w,y,!!n&&B.jsx("rect",{id:"layout-background",width:p.width,height:p.height,fill:n,rx:h}),B.jsx("g",{id:"element-group",clipPath:a.purpose===Ot.FreeDesign?"url(#viewboxClip)":void 0,children:b.map(v=>vi(v)).filter(v=>!!v)}),l&&B.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&&B.jsxs("mask",{id:`viewmask-${f}`,children:[B.jsx("rect",{x:p.x,y:p.y,width:p.width,height:p.height,fill:"black"}),B.jsx("rect",{x:l.x,y:l.y,width:l.width,height:l.height,fill:"white"})]})]})},As=(n,t,e,a,i)=>{const r=St(i),o=e/2,s=a/2,l=n+o,c=t+s,d=Math.sin(r),u=Math.cos(r),A=o,h=o,g=-s,p=s,m=A*u-g*d,f=h*u-p*d,y=A*d+g*u,w=h*d+p*u,F=Math.max(Math.abs(m),Math.abs(f)),b=Math.max(Math.abs(y),Math.abs(w));return{minX:l-F,maxX:l+F,minY:c-b,maxY:c+b}},hs=(n,t,e)=>{const a=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),i=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),r=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((i*i+a*a-r*r)/(2*i*a))*(180/Math.PI)},St=n=>n*(Math.PI/180),gs=(n,t,e)=>Math.abs(n-t)<e,ms=(n,t,e)=>{const a=Math.sin(St(e)),i=Math.cos(St(e));return{x:(n.x-t.x)*i-(n.y-t.y)*a+t.x,y:(n.x-t.x)*a+(n.y-t.y)*i+t.y}},ps=(n,t)=>({x:(n.x+t.x)/2,y:(n.y+t.y)/2}),fs=(n,t,e,a)=>({x:n.x+t?.x*e,y:n.y+t?.y*a}),Cs=(n,t,e,a)=>({x:n.x+(t?.x+t?.width)*e,y:n.y+t?.y*a}),ws=(n,t,e,a)=>({x:n.x+(t?.x+t?.width)*e,y:n.y+(t?.y+t?.height)*a}),kt=n=>{switch(n){case H.North:return H.East;case H.East:return H.South;case H.South:return H.West;case H.West:return H.North;case H.Northwest:return H.Northeast;case H.Northeast:return H.Southeast;case H.Southeast:return H.Southwest;case H.Southwest:return H.Northwest}},ys=(n,t)=>t>45&&t<=135?kt(n):t>135&&t<=225?kt(kt(n)):t>225&&t<=315?kt(kt(kt(n))):n,Ss=(n,t={x:0,y:0},e={x:1,y:1})=>{const a=St(n.rotation),i={x:t.x+n.x*e.x,y:t.x+n.y*e.y},r={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(i,l,a),b:Ht(r,l,a),c:Ht(o,l,a),d:Ht(s,l,a),center:l}},Ht=(n,t,e)=>{const a=Math.sin(e),i=Math.cos(e);return{x:(n.x-t.x)*i-(n.y-t.y)*a+t.x,y:(n.x-t.x)*a+(n.y-t.y)*i+t.y}},vs=.352778,Es=.035277,gi=n=>{const t=n.rotation||0,e=St(t),a=Math.cos(e),i=-Math.sin(e);return B.jsx("g",{mask:n.stepName||n.productOverlay?void 0:n.mask,children:B.jsx("g",{transform:`
1313
+ matrix(1, 0, 0, 1, ${n.x}, ${n.y})
1314
+ matrix(1, 0, 0, 1, ${n.width/2}, ${n.height/2})
1315
+ matrix(${a}, ${-i}, ${i}, ${a}, 0, 0)
1316
+ matrix(1, 0, 0, 1, ${-n.width/2}, ${-n.height/2})
1317
+ `,children:B.jsx("image",{xlinkHref:n.src,preserveAspectRatio:n.preserveAspectRatio,width:n.width,height:n.height})})})},mi=n=>{const t=`spiff-group-clip-${n.id}`,e=n.rotation||0,a=St(e),i=Math.cos(a),r=-Math.sin(a),o=La(n.children),s=()=>B.jsx("clipPath",{id:t,preserveAspectRatio:"none",children:n.clipPath?B.jsx("path",{d:n.clipPath}):B.jsx("rect",{x:0,y:0,width:n.width,height:n.height})});return B.jsxs(B.Fragment,{children:[B.jsx("defs",{children:s()}),B.jsxs("g",{transform:`
1318
+ matrix(1, 0, 0, 1, ${n.x}, ${n.y})
1319
+ matrix(1, 0, 0, 1, ${n.width/2}, ${n.height/2})
1320
+ matrix(${i}, ${-r}, ${r}, ${i}, 0, 0)
1321
+ matrix(1, 0, 0, 1, ${-n.width/2}, ${-n.height/2})
1322
+ `,children:[n._renderingConfiguration?.debug?B.jsx("rect",{stroke:"red",opacity:.3,fill:"none",x:0,y:0,width:n.width,height:n.height}):void 0,o.map(l=>vi(l)).filter(l=>!!l).map(l=>B.jsx("g",{clipPath:`url(#${t})`,children:l}))]})]})},bs=n=>{const t=`spiff-frame-${n.id}`,e=`spiff-frame-threshold-${n.id}`,a=()=>{if(!n.pattern)return"";if(n.pattern.svg){const u=qe(n.pattern.svg,n.pattern.colors||{},!1);return Ve(u)}return n.pattern.src};if(!a())return B.jsx(B.Fragment,{});const i=()=>n.threshold?n.invertThreshold?"1 ".repeat(n.threshold)+"0 ".repeat(256-n.threshold):"0 ".repeat(n.threshold)+"1 ".repeat(256-n.threshold):"",r=()=>B.jsx(B.Fragment,{children:n.useThreshold&&B.jsx("defs",{children:B.jsxs("filter",{id:e,"color-interpolation-filters":"sRGB",children:[B.jsx("feColorMatrix",{type:"matrix",values:`
1323
+ ${n.thresholdSaturation} ${n.thresholdSaturation} ${n.thresholdSaturation} 0 0
1324
+ ${n.thresholdSaturation} ${n.thresholdSaturation} ${n.thresholdSaturation} 0 0
1325
+ ${n.thresholdSaturation} ${n.thresholdSaturation} ${n.thresholdSaturation} 0 0
1326
+ 0 0 0 1 0
1327
+ `,result:"greyscale"}),B.jsxs("feComponentTransfer",{in:"greyscale",children:[B.jsx("feFuncR",{type:"discrete",tableValues:i()}),B.jsx("feFuncG",{type:"discrete",tableValues:i()}),B.jsx("feFuncB",{type:"discrete",tableValues:i()})]})]})})}),o=n.rotation||0,s=St(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 B.jsxs(B.Fragment,{children:[r(),B.jsx("g",{opacity:n.opacity,mask:n.stepName?void 0:n.mask,filter:n.useThreshold?`url(#${e})`:void 0,children:B.jsx("g",{transform:`
1328
+ matrix(1, 0, 0, 1, ${n.x}, ${n.y})
1329
+ matrix(1, 0, 0, 1, ${n.width/2}, ${n.height/2})
1330
+ matrix(${l}, ${-c}, ${c}, ${l}, 0, 0)
1331
+ matrix(1, 0, 0, 1, ${-n.width/2}, ${-n.height/2})
1332
+ matrix(${n.scaleX}, 0, 0, ${n.scaleY}, 0, 0)
1333
+ `,children:B.jsx(mi,{id:t,x:0,y:0,rotation:0,width:n.width,height:n.height,clipPath:n.path,children:d()})})})]})},pi=new Map;class Is{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,i=0;return e.forEach(r=>{const o=r.getMetrics();a=Math.max(a,o.yMax),i=Math.min(i,o.yMin)}),a-i}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 i=a.get(e.name);return i||(i=this.font.getKerningValue(t,e),a.set(e.name,i)),i}calculateApproximateHeight(){const e=this.font.stringToGlyphs("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");let a=0,i=0;return e.forEach(r=>{const o=r.getMetrics();a=Math.max(a,o.yMax),i=Math.min(i,o.yMin)}),a-i}}const Bs=n=>n.substring(0,5).toLowerCase().trim()==="data:",aa=new Map,Ft=async n=>{if(aa.has(n))return aa.get(n);const e=(async()=>{try{return vt(n).getFont()}catch{if(Bs(n)){const a=_n(n),i=ga.parse(a);return Sa(n,i),i}else{const a=await $e(n,!0),i=ga.parse(a);return Sa(n,i),await Yr(i,n),i}}})();return aa.set(n,e),e},Ps=n=>{const t=_n(n),e=ga.parse(t);return Sa(n,e),e},vt=n=>{const t=pi.get(n);if(t)return t;throw new Error("Font metrics unavailable for font")},Sa=(n,t)=>{const e=new Is(t);return pi.set(n,e),e},xs=async n=>{const t=ct(),e=t.parseFromString(n,"image/svg+xml"),a=e.firstElementChild,i=new Map;a.querySelectorAll("style").forEach(d=>{Rn.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&&i.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 Ft(i.get(g)),m=Mr.decode(u.innerHTML),f=A.getAttribute("fill"),y=A.getAttribute("stroke"),w=A.getAttribute("stroke-width"),F=p.getPath(m,0,0,parseInt(A.getAttribute("font-size")??"72")),b=F.getBoundingBox().x2-F.getBoundingBox().x1;let v=0;const I=u.getAttribute("text-anchor");I==="middle"?v=b/2:I==="end"&&(v=b);const M=p.getPath(m,parseFloat(u.getAttribute("x")??"0")-v,parseFloat(u.getAttribute("y")??"0"),parseInt(A.getAttribute("font-size")??"72"));M.fill=f,M.stroke=y,M.strokeWidth=parseFloat(w??"0");const R=M.toSVG(2),T=t.parseFromString(R,"image/svg+xml").firstElementChild;h.appendChild(T)}return e.querySelectorAll("text").forEach(d=>d.remove()),Et().serializeToString(a)},xe=(n,t,e,a)=>Math.max(Ms(n.join(`
1334
+ `),e,a),t),Cn=(n,t,e,a,i,r)=>{const o=(r||wi)*i.getApproximateHeight(),s=t.split(`
1335
+ `);try{const l=s.flatMap(d=>be(d,n.width,a,i)),c=l.flatMap(d=>d.lines);return{lines:c,requiredHeight:l.flatMap(d=>d.lines).length*(a*o),fontSize:e,requiredWidth:xe(c,n.width,a,i)}}catch{const c=t.split("");return{lines:c,requiredHeight:c.length*(a*o),fontSize:e,requiredWidth:xe(c,n.width,a,i)}}},be=(n,t,e,a)=>{const i=Ct(n,e,a);if(i<=t)return{lines:[n],width:i};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=be(n.slice(0,d),t,e,a),A=be(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(Ct(d,e,a)>t){const u=be(d,t,e,a);s.push(...u.lines),l=Math.max(l,u.width),c++}else{const u=[d];l=Math.max(l,Ct(d,e,a));let A=c+1,h=!0;for(;A<o.length&&h;){const g=o[A],p=Ct(`${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}},Fs=(n,t,e,a,i,r)=>{const o=(r??wi)*t.getApproximateHeight(),s=1/e.unitsPerEm,l=fi(n,s,t),c=n.length*o*s,d=a/l,u=i/c;return Math.min(u,d)},Ds=(n,t,e,a)=>{const i=vt(t.fontData.assetUrl),r=i.getFont(),o=t.fontSize/r.unitsPerEm;if(!e)return Cn(t,n,t.fontSize,o,i,a);let s;if(t.text?s=t.text.split(`
1336
+ `):s=t.input?.split(`
1337
+ `)??[""],e.input===n&&t.width===e.width&&t.height===e.height&&t.lineHeight===e.lineHeight)return{lines:s,requiredHeight:t.height,requiredWidth:xe(s,t.width,o,i),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:xe(s,t.width,o,i),fontSize:Fs(s,i,r,t.width,t.height,a)}:Cn(t,n,t.fontSize,o,i,a)},ks=(n,t,e,a,i)=>{const o=vt(t.assetUrl).getFont();let s={...n};const l={...n},c=fi(a,e/o.unitsPerEm,vt(t.assetUrl));return c&&c<s.width&&(l.width=c,i==="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):i==="right"?l.left+=s.width-c:l.left+=(s.width-c)/2,a&&Ts(a,a).every(([d,u])=>d===u)&&(s=l)),s},na=1,Ct=(n,t,e)=>{let a=0;const i=e.getGlyphs(n);return i.forEach((r,o)=>{if(r.advanceWidth&&(a+=r.advanceWidth),o<i.length-1){const s=e.getKerningValue(r,i[o+1]);a+=s||0}}),a*=t,a},Ms=(n,t,e)=>{let a=0;const i=e.getGlyphs(n);return i.forEach((r,o)=>{if(r.advanceWidth&&(a=Math.max(a,r.advanceWidth)),o<i.length-1){const s=e.getKerningValue(r,i[o+1]);a=Math.max(a,s||0)}}),a*=t,a},fi=(n,t,e)=>{let a=0;return n.forEach(i=>{a=Math.max(a,Ct(i,t,e))}),a},wn={stripControlCharacters:!0,vertical:!1,uppercase:!1},Fe=(n,t=wn)=>{const e={...wn,...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(`
1338
+ `)),a},Ts=(n,t)=>n.map((e,a)=>[e,t[a]]),Ns=(n="center",t=!1)=>t?"center":n,Ci=n=>n==="left"?"start":n==="right"?"end":"middle",ue=(n,t,e)=>n.fontData?{...n,...(()=>{if(n.algorithm===xt.Traditional){const i=Ds(t,n,e,n.lineHeight);return{text:i.lines.join(`
1339
+ `),height:i.requiredHeight,width:i.requiredWidth,fontSize:i.fontSize,input:t}}else return{text:t}})()}:n,wi=1.1;function Nt(n,t){return yi(n,t.getTemplatingContext())}function yi(n,t){try{n=Tr.compile(n)(t)}catch(e){console.error("failed to render templated text",e)}return n}const Qs=n=>{const e=(n.rotation||0)*Math.PI/180,a=Math.cos(e),i=-Math.sin(e),r=`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=yi(n.text||"",n._renderingConfiguration?.templatingContext),d=c.split(`
1340
+ `),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} ${ni(n.fillSpotColorDefinition)}`:n.fill;return B.jsxs(B.Fragment,{children:[B.jsxs("defs",{children:[n.textFillImage&&B.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:B.jsx("image",{href:n.textFillImage.src,xlinkHref:n.textFillImage.src,width:n.textFillImage.scale*n.textFillImage.width,height:n.textFillImage.scale*n.textFillImage.height})}),B.jsx("style",{type:"text/css",dangerouslySetInnerHTML:{__html:`
1341
+ @font-face {
1342
+ font-family: '${n.fontData.name}';
1343
+ src: url('${n.fontData.assetUrl}') format('truetype');
1344
+ }
1345
+ `}}),n.curved&&n.paths?B.jsx("path",{id:r,d:n.paths[0]}):void 0]}),n._renderingConfiguration?.debug?B.jsx("rect",{stroke:"blue",fill:"none",x:n.x,y:n.y,width:n.width,height:n.height}):void 0,B.jsx("g",{mask:n.stepName?void 0:n.mask,children:B.jsx("g",{transform:`matrix(${a}, ${-i}, ${i}, ${a}, ${s}, ${l})`,children:B.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?B.jsx(Rs,{text:c,curvedPathId:r,align:n.align}):d.map((g,p)=>B.jsx(Os,{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))})})})]})},Os=n=>{const t=()=>{if(n.lineHeight!==void 0)return n.lineHeight*n.fontSize;const i=vt(n.fontData.assetUrl),r=i.getFont(),o=n.fontSize/r.unitsPerEm;return i.getApproximateHeight()*o},e=()=>n.align==="left"?-n.textboxWidth/2:n.align==="right"?n.textboxWidth/2:0,a=()=>{const i=t(),r=n.textboxHeight/2;if(n.verticalAlign==="top")return-r+n.fontSize*3/4+n.thisLineIdx*i;if(n.verticalAlign==="bottom"){const s=n.amountLines-1-n.thisLineIdx;return r-n.fontSize/4-s*i}const o=(n.amountLines-1)/2;return(n.thisLineIdx-o)*i+n.fontSize/4};return B.jsx("tspan",{textAnchor:Ci(n.align),x:e(),y:`${a()}px`,children:n.text})},Rs=n=>{const t=`#${n.curvedPathId}`,e=()=>n.align==="left"?"0%":n.align==="right"?"100%":"50%";return B.jsx("textPath",{startOffset:e(),textAnchor:Ci(n.align),href:t,xlinkHref:t,children:n.text})},$s=n=>{if(n.cachedObjectURL&&!n._renderingConfiguration?.omitCachedFields)return B.jsx(gi,{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=St(t),a=Math.cos(e),i=-Math.sin(e),r=`
1346
+ matrix(1, 0, 0, 1, ${n.x}, ${n.y})
1347
+ matrix(1, 0, 0, 1, ${n.width/2}, ${n.height/2})
1348
+ matrix(${a}, ${-i}, ${i}, ${a}, 0, 0)
1349
+ matrix(1, 0, 0, 1, ${-n.width/2}, ${-n.height/2})
1350
+ `;if(!n.svg)throw new Error(`Illustration element ${n.id} (stepName ${n.stepName}) lacked svg from src ${n.src} at render time.`);return B.jsx("g",{mask:n.stepName?void 0:n.mask,children:B.jsx("g",{transform:r,dangerouslySetInnerHTML:{__html:$a(n.svg,n.width,n.height,n.colors,n._renderingConfiguration?.spotColors)}})})};class Si{constructor(){this.id=N(),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 i=this.prevCommands.filter(r=>r.sequenceId===t).pop();i&&(this.prevCommands=this.prevCommands.filter(r=>r.sequenceId!==t),i?.overrideOldState(e),this.prevCommands.push(i))}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 i=[...e?.elements||[]];return this.getLayoutDataWithState(a,i)}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=>He(t,e,a)}}initialize(t,e){if(e){this.state={transaction:e};return}let a={serializableWorkflow:{steps:[]},layouts:{}};t.forEach(i=>{a=new ja(i).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 vi=n=>n.type===D.Image?B.jsx(gi,{...n},n.id):n.type===D.Frame?B.jsx(bs,{...n},n.id):n.type===D.Illustration?B.jsx($s,{...n},n.id):n.type===D.Textbox?B.jsx(Qs,{...n},n.id):n.type===D.Group?B.jsx(mi,{...n},n.id):null,He=(n,t,e)=>{const a=e.renderingConfiguration,i=a?.removeExcludedElements?t.filter(r=>!r.excludeFromExport):t;return B.jsx(us,{preserveAspectRatio:void 0,elements:i,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 La(n){return n.sort((t,e)=>{const a=t.layer||0,i=e.layer||0;if(a<i)return-1;if(a>i)return 1;const r=t.layerIndex||0,o=e.layerIndex||0;return r<o?-1:r>o?1:0})}const At=new Map,Mt=new Map,ia=new Map,Ei=async(n,t)=>{if(!t){if(!n)throw new Error("No region or src supplied. Cannot construct frame!");return va(n)}return et(t)},va=n=>{const t=n.width,e=n.height;return`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 ${t} ${e}'>
1351
+ <path id="target-path" d='M0 0 h ${t} v ${e} h ${-t} Z' />
1352
+ </svg>
1353
+ `},Us=async(n,t)=>{if(!t)return;const e=await P.getDefaultVariant(t,n.frameVariantId);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},Ae=async n=>{if(ia.has(n))return ia.get(n);const e=(async()=>{if(Mt.has(n))return Mt.get(n);await new Promise(A=>setTimeout(A,0));const i=ct().parseFromString(n,"image/svg+xml"),r=i.querySelector("svg");if(!r)throw new Error("Malformed frame SVG: <svg> tag not found");const o=r.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=i.getElementById("target-path"),u=i.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 Mt.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 Mt.set(A,h),h}throw new Error("Malformed frame SVG")})();return ia.set(n,e),e},qa=(n,t,e,a)=>{const i=t.width/t.height,r=n.width/n.height;let o;a?r>i?o=t.height/n.height:o=t.width/n.width:r>i?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}},Ea=async n=>{if(At.has(n))return At.get(n);if(n.startsWith("data:image/svg+xml")){const e=Nr.dataUriToBuffer(n),a=new TextDecoder().decode(e.buffer),i=Ga(a),r={src:n,width:i.width,height:i.height,aspect:i.width/i.height};return At.set(n,r),r}if((n.split(".").pop()?.toLowerCase()??"")==="svg"){const e=await za(n),a=e.width,i=e.height,r={src:n,width:a,height:i,aspect:a/i};return At.set(n,r),r}else{const e=await $e(n,!0),a=await ce(e),i={src:n,width:a.width,height:a.height,aspect:a.width/a.height};return At.set(n,i),i}},za=async n=>{const t=await et(n);return Ga(t)},yn=n=>n.endsWith("mm")?Number(n.replace("mm",""))*3.7795275591:n.endsWith("px")?Number(n.replace("px","")):Number(n),Ga=n=>{const a=ct().parseFromString(n,"image/svg+xml").querySelector("svg");if(!a)throw new Error("No svg tag found, this svg must be malformed!");const i=a.getAttribute("viewBox"),r=a.getAttribute("width"),o=a.getAttribute("height"),s=o&&r?[0,0,yn(r),yn(o)]:i?.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]}},zt=(n,t)=>{const e=n.layoutState.elements.filter(i=>i.layer===t),a=Math.max(...e.map(i=>i.layerIndex).filter(i=>i!==void 0));return Math.max(a,0)+1},bi=async n=>new Promise(t=>{et(n).then(e=>{t(e)}).catch(e=>console.error(e))}),ra=new Map,re=async n=>{if(ra.has(n))return ra.get(n);const t=async i=>new Promise((r,o)=>{try{if(!(!!URL&&!!URL.createObjectURL))throw new Error("Environment incapable of generating ObjectURL");i.toBlob(l=>{if(!l)throw i.width===0||i.height===0?new Error(`Canvas dimensions are invalid (${i.width},${i.height})`):i.width*i.height>=268435456?new Error(`Canvas dimensions exceed device limit (${i.width},${i.height})`):new Error("Couldn't generate object URL for Illustration, the blob was undefined!");r(URL.createObjectURL(l))})}catch(s){o(s)}}),a=(async()=>{const o=ct().parseFromString(n,"image/svg+xml").firstElementChild;if(!o)throw new Error("Failed to read SVG");const l=Et().serializeToString(o),c=yt(),d=c.getContext("2d"),u=await Ma.Pith.from(d,l,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:yt,createImage:le,DOMParser:Ra(),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 ra.set(n,a),a},Gt=async(n,t,e,a)=>{const i=n.layoutState.layout.useEditableArea&&n.layoutState.layout.editableArea||{width:n.layoutState.layout.width,height:n.layoutState.layout.height,x:0,y:0},r=i.width<i.height?i.width:i.height,o=n.layoutState.layout.useEditableArea?r/1.3:r/2,s={top:i.y+i.height/2-o/2,left:i.x+i.width/2-o/2,width:o,height:o,rotation:0,panelId:n.layoutState.layout.panelId};if(e&&t===D.Illustration){const l=await rt(await bi(e)),A=ct().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 $e(e),d=await ce(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 Ft(e);const l=vt(e),c=Ct(a.text,a?.fontScale,l);s.width=Math.min(c,i.width*.85),s.left=i.x+i.width/2-s.width/2}return s};class Vs{static async getFrame(t,e){const a=await Ei(e.region,e.src),i=await Ae(a),r=e.region||await Gt(t,D.Frame);return{id:N(),x:r.left,y:r.top,width:r.width,height:r.height,layer:r.layer||0,layerIndex:r.layerIndex||zt(t,r.layer||0),rotation:r.rotation,scaleX:r.width/i.width,scaleY:r.height/i.height,path:i.path,dataWidth:i.width,dataHeight:i.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:r.immutable}}static async getImage(t,e){const a=e.region||await Gt(t,D.Image,e.src);return{id:N(),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||zt(t,a.layer||0),immutable:a.immutable,preserveAspectRatio:"none"}}static async getTextbox(t,e){const{configuration:a,fontSrc:i,designInputStep:r}=e,o=await Ft(i),s={assetUrl:i,name:o.names.fullName.en},l=r?.text||a.defaultText||"",c=a.replaceableText?a.replaceableText.replace("{{}}",l):l,d=Fe(c,{vertical:a.vertical,uppercase:a.uppercase}),u=e.region||await Gt(t,D.Textbox,i,{text:d,fontScale:a.size?a.size/o.unitsPerEm:void 0}),A=ue({id:N(),type:D.Textbox,x:u.left,y:u.top,width:u.width,height:u.height,align:Ns(a.textAlign,a.vertical),curved:a.curved,fill:r?.color||a.colour||"#000000",fontData:s,layer:u.layer||0,layerIndex:u.layerIndex||zt(t,u.layer||0),paths:a.paths,rotation:u.rotation,vertical:a.vertical,verticalAlign:a.verticalAlign||"middle",algorithm:xt.Traditional,fontSize:a.size||Math.max(Math.round(u.height*.025),1),text:d,input:l},d),h=ks({...u,height:A.height},s,A.fontSize,A?.text?.split(`
1354
+ `)||[],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=`
1355
+ <svg
1356
+ xmlns="http://www.w3.org/2000/svg"
1357
+ xmlnsXlink="http://www.w3.org/1999/xlink"
1358
+ xmlSpace="preserve"
1359
+ preserveAspectRatio="none"
1360
+ version="1.1"
1361
+ width="1"
1362
+ height="1"
1363
+ viewBox="0 0 1 1"
1364
+ >
1365
+ <rect
1366
+ x="0"
1367
+ y="0"
1368
+ width="1"
1369
+ height="1"
1370
+ class="spiff-fill-shape"
1371
+ fill="${e.color}"
1372
+ />
1373
+ </svg>
1374
+ `,i={};i["spiff-fill-shape"]={browserValue:e.color};const r=e.region?.item||await Gt(t,D.Illustration),o=N();return{stepRegion:e.region?.item,stepRegionIndex:e.region?.index,colors:i,id:o,svg:a,type:D.Illustration,y:r.top,x:r.left,rotation:r.rotation,width:r.width,height:r.height,layer:r.layer||0,layerIndex:r.layerIndex||zt(t,r.layer||0),immutable:r.immutable}}static async getIllustration(t,e){const a=e.region?.item||await Gt(t,D.Illustration,e.src),i=await rt(await bi(e.src)),r=await re(i.svg),o=N();return{cachedObjectURL:r,stepRegion:e.region?.item,stepRegionIndex:e.region?.index,colors:i.colors,id:o,src:e.src,svg:i.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||zt(t,a.layer||0),immutable:a.immutable}}}class z extends Error{constructor(){super("Element not found!"),Object.setPrototypeOf(this,z.prototype)}}const V=(n,t)=>_(n,t).elements.find(i=>i.id===n),_=(n,t)=>{const e=Object.values(t).find(a=>a.elements.some(i=>i.id===n));if(!e)throw new z;return e},tt=(n,t)=>{const e=[...t.elements.filter(i=>i.id!==n.id),n],a=La(e);return{layout:t.layout,elements:a,modificationID:N()}},ba=async n=>{const t=[...Object.keys(n.layouts)],e=[...new Set(t)];for(let a=0;a<e.length;a++){const i=e[a],r=n.layouts[i];await Promise.all(r.elements.map(async o=>{if(o.type==="illustration"){const s=o;if(s.src&&!s.svg){const l=await et(s.src),c=await rt(l);s.svg=$a(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 et(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 i=n.layouts[a].elements.filter(o=>o.type===D.Illustration);for(let o=0;o<i.length;++o){const s=i[o];if(s.src&&s.svg)try{s.cachedObjectURL=await re(s.svg)}catch(l){console.log(l)}}const r=n.layouts[a].elements.filter(o=>o.type===D.Textbox);for(let o=0;o<r.length;++o){const s=r[o];s.fontData?.assetUrl&&await Ft(s.fontData.assetUrl)}}};class ${undo(){if(!this.oldState)throw new Error("Cannot undo.");return this.oldState}overrideOldState(t){this.oldState=t}}class Sn extends ${constructor(t){super(),this.serializableWorkflow=t}apply(t){return this.oldState=t,{...t,serializableWorkflow:this.serializableWorkflow}}}class Ls extends ${constructor(t,e,a){super(),this.id=t,this.x=e,this.y=a}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a={...e,x:this.x,y:this.y},i=_(e.id,Object.values(t.layouts)),r=tt(a,i);return{...t,layouts:{...t.layouts,[i.layout.id]:r}}}}class qs extends ${constructor(t,e){super(),this.id=t,this.angle=e}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a={...e,rotation:this.angle},i=_(e.id,Object.values(t.layouts)),r=tt(a,i);return{...t,layouts:{...t.layouts,[i.layout.id]:r}}}}class zs extends ${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=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;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===xt.Autosize?o.text:o.input)??"";a=ue(o,s,e)}const i=_(e.id,Object.values(t.layouts)),r=tt(a,i);return{...t,layouts:{...t.layouts,[i.layout.id]:r}}}}class U extends ${constructor(t){super(),this.commands=t}apply(t){return this.oldState=t,this.commands.reduce((e,a)=>a.apply(e),t)}}class ja extends ${constructor(t){super(),this.layout=t}apply(t){return this.oldState=t,{...t,layouts:{...t.layouts,[this.layout.id]:{elements:[],layout:{...this.layout},modificationID:N()}}}}}class G extends ${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:N()}}}}const i=e[e.length-1],r=i.productOverlay?i:null;r&&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 r&&o.push(r),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:o,modificationID:N()}}}}assignIndex(t,e){if(e.length===0)return 0;const a=e.filter(i=>(i.layer||0)===(t.layer||0)).sort((i,r)=>(i.layerIndex||0)-(r.layerIndex||0))[e.length-1]?.layerIndex;return a!==void 0?a+1:0}}class Dt extends ${constructor(t){super(),this.id=t}apply(t){this.oldState=t;let e=!1;const a=Object.values(t.layouts).map(r=>(r.elements.filter(s=>s.id!==this.id).length!==r.elements.length&&(e=!0),{...r,elements:r.elements.filter(s=>s.id!==this.id),modificationID:N()}));e||console.log(`Failed to delete element ${this.id}`);const i={};return a.forEach(r=>{i[r.layout.id]=r}),{...t,layouts:i}}}class Ii extends ${constructor(t,e,a){super(),this.id=t,this.color=e,this.textFillSpotColor=a}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a={...e,fill:this.color,fillSpotColorDefinition:this.textFillSpotColor,textFillImage:void 0},i=_(e.id,Object.values(t.layouts)),r=tt(a,i);return{...t,layouts:{...t.layouts,[i.layout.id]:r}}}}class oa extends ${constructor(t,e){super(),this.id=t,this.imageFill=e}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a={...e,textFillImage:this.imageFill},i=_(e.id,Object.values(t.layouts)),r=tt(a,i);return{...t,layouts:{...t.layouts,[i.layout.id]:r}}}}class Bi extends ${constructor(t,e){super(),this.id=t,this.size=e}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a={...e,fontSize:this.size},i=_(e.id,Object.values(t.layouts)),r=(!e.algorithm||e.algorithm===xt.Autosize?e.text:e.input)??"",o=tt(ue(a,r),i);return{...t,layouts:{...t.layouts,[i.layout.id]:o}}}}class Ia extends ${constructor(t,e){super(),this.id=t,this.fontData=e}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a={...e,fontData:this.fontData},i=_(e.id,Object.values(t.layouts)),r=(!e.algorithm||e.algorithm===xt.Autosize?e.text:e.input)??"",o=tt(ue(a,r),i);return{...t,layouts:{...t.layouts,[i.layout.id]:o}}}}class Pi extends ${constructor(t,e){super(),this.id=t,this.align=e}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a={...e,align:this.align},i=_(e.id,Object.values(t.layouts)),r=tt(a,i);return{...t,layouts:{...t.layouts,[i.layout.id]:r}}}}class Gs extends ${constructor(t,e,a){super(),this.id=t,this.imageData=e,this.offsets=a}apply(t){this.oldState=t;const e=_(this.id,Object.values(t.layouts)),a=e.elements.findIndex(s=>s.id===this.id),i=e.elements[a].pattern,r=[...e.elements];r.splice(a,1,{...e.elements[a],pattern:{...i,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:r,modificationID:N()};return{...t,layouts:{...t.layouts,[e.layout.id]:o}}}}class js extends ${constructor(t,e,a,i,r){super(),this.id=t,this.useThreshold=e,this.invertThreshold=a,this.threshold=i,this.thresholdSaturation=r}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a={...e,useThreshold:this.useThreshold,invertThreshold:this.invertThreshold,threshold:this.threshold,thresholdSaturation:this.thresholdSaturation},i=_(e.id,Object.values(t.layouts)),r=tt(a,i);return{...t,layouts:{...t.layouts,[i.layout.id]:r}}}}class Hs extends ${constructor(t,e){super(),this.id=t,this.src=e}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a={...e,src:this.src},i=_(e.id,Object.values(t.layouts)),r=tt(a,i);return{...t,layouts:{...t.layouts,[i.layout.id]:r}}}}class xi extends ${constructor(t,e){super(),this.id=t,this.text=e}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a=_(e.id,Object.values(t.layouts)),i=tt(ue(e,this.text,e),a);return{...t,layouts:{...t.layouts,[a.layout.id]:i}}}}class sa extends ${constructor(t,e,a){super(),this.id=t,this.strokeColor=e,this.strokeThickness=a}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a={...e,strokeColor:this.strokeColor,strokeThickness:this.strokeThickness},i=_(e.id,Object.values(t.layouts)),r=tt(a,i);return{...t,layouts:{...t.layouts,[i.layout.id]:r}}}}class Ba extends ${constructor(t,e,a){super(),this.id=t,this.className=e,this.fill=a}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a=e.colors||{},i=a[this.className];typeof this.fill=="string"?a[this.className]={browserValue:this.fill,spotColor:i?.spotColor,pmsValue:i?.pmsValue}:a[this.className]={browserValue:this.fill.browserValue,spotColor:i?.spotColor,pmsValue:this.fill.pmsValue};const r={...e,colors:a},o=_(e.id,Object.values(t.layouts)),s=tt(r,o);return{...t,layouts:{...t.layouts,[o.layout.id]:s}}}}class Ws extends ${constructor(t,e,a){super(),this.id=t,this.svgBody=e,this.objectURL=a}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;const a={...e,svg:this.svgBody,cachedObjectURL:this.objectURL},i=_(e.id,Object.values(t.layouts)),r=tt(a,i);return{...t,layouts:{...t.layouts,[i.layout.id]:r}}}}class Ys extends ${constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!V(this.id,Object.values(t.layouts)).id)throw new z;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 i=a.elements.findIndex(o=>o.id===this.id);a.elements.push(a.elements.splice(i,1)[0]);const r=[...a.elements];return r.forEach((o,s)=>o.layerIndex=s),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:r,modificationID:N()}}}}}class Js extends ${constructor(t){super(),this.id=t}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new z;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 i=a.elements.findIndex(s=>s.id===this.id);a.elements.splice(i,1),a.elements.unshift(e);const r=[...a.elements],o=r.splice(i,1)[0];return r.splice(i,0,o),r.forEach((s,l)=>s.layerIndex=l),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:r,modificationID:N()}}}}}class Ks extends ${constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!V(this.id,Object.values(t.layouts)).id)throw new z;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 i=a.elements.findIndex(l=>l.id===this.id),r=i+1,o=[...a.elements],s=o.splice(i,1)[0];return o.splice(r,0,s),o.forEach((l,c)=>l.layerIndex=c),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:o,modificationID:N()}}}}}class _s extends ${constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!V(this.id,Object.values(t.layouts)).id)throw new z;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 i=a.elements.findIndex(l=>l.id===this.id),r=i-1,o=[...a.elements],s=o.splice(i,1)[0];return o.splice(r,0,s),o.forEach((l,c)=>l.layerIndex=c),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:o,modificationID:N()}}}}}class vn{constructor(t,e,a){this.processRegion=async i=>{const r=this.layouts.find(l=>l.panelId===i.panelId);if(!r)throw new Y(i);let o="";if(this.configuration.type===E.ProductOverlay){let l="";if(this.product?.overlayImageUrl&&(l=this.product.overlayImageUrl),o=l,!l)throw new lt(this.configuration,"Couldn't find an asset for product overlay step")}const s=this.evaluateAssetType();if(s===D.Image){const l=this.configuration.type===E.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:N(),src:l,type:s,y:i.top,x:i.left,width:i.width,height:i.height,layer:i.layer,layerIndex:i.layerIndex,immutable:i.immutable,productOverlay:this.configuration.type===E.ProductOverlay?!0:void 0,rotation:i.rotation,excludeFromExport:this.configuration.data.excludeFromPrint,preserveAspectRatio:"none"};return{regionElement:{id:c.id,region:i},command:new G(c,r)}}else{const l=this.configuration.type===E.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}et(l,!0).then(g=>{A(g)}).catch(g=>console.error(g))}))()),u={stepName:this.configuration.stepName,id:N(),cachedObjectURL:await re(d.svg),src:l,svg:d.svg,colors:d.colors,type:s,y:i.top,x:i.left,width:i.width,height:i.height,layer:i.layer,layerIndex:i.layerIndex,rotation:i.rotation,immutable:i.immutable,productOverlay:this.configuration.type===E.ProductOverlay?!0:void 0,excludeFromExport:this.configuration.data.excludeFromPrint};return{regionElement:{id:u.id,region:i},command:new G(u,r)}}},this.configuration=t,this.layouts=e,this.product=a||void 0}async trigger(){if(!this.configuration.data.regions)throw new lt(this.configuration,"Missing regions.");if(this.configuration.type===E.SilentIllustration){const t=this.configuration.data.regions.map(this.processRegion);return Promise.all(t)}else return this.configuration.type===E.ProductOverlay?Promise.all(this.configuration.data.regions.map(t=>{if(!this.layouts.find(a=>t.panelId===a.panelId))throw new Y(t);return this.processRegion(t)})):Promise.reject("Unknown silent step. This is a bug")}evaluateAssetType(){const t=this.configuration.type===E.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 Fi=async n=>{const t=`${ht.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 Re("Failed to shorten URL, see console.")}};class Di{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,i=3e3,r=10){this.onSuccess=e,this.onFailure=a,this.predicate=t,this.attempts=0,this.pollingId=-1,this.interval=i,this.maxAttempts=r,this.poll()}}class Xs{async init(t,e,a){return a&&await this.reload(t,e,a),null}async reload(t,e,a){const i=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,regionIndex:c.stepRegionIndex}));await e.setSelectionsAndElements(t.stepName,[],l,async()=>{const c=i?.storage?.videoShortUrl,d=i?.storage?.videoUrl;e.updateStorage(t.stepName,{videoShortUrl:c,videoUrl:d})})}async regenerateQRCode(t,e,a,i){const r=async()=>{const h=(await Pe([e]))[0],g=h?.versions?.find(p=>p.name==="mpeg4")?.link;return{asset:h,link:g}},o=await new Promise((h,g)=>{new Di(async()=>!!(await r()).link,async()=>{const p=await r();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 Dt(h.id)));const s=i.data.baseUrl.slice(0,4)==="http"?"":"https://",l=new URL(s+i.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 Re("Cannot create QR code, URL too long.");const d=await Fi(c);if(!i.data||!i.data.regions)throw new lt(i,"Missing regions.");const u=await this.regionElements(i),A=await this.command(d,u,a,i.stepName);return A&&(A.command&&a.getCommandDispatcher()(A.command),A.followup&&await A.followup()),await a.setSelectionsAndElements(i.stepName,[],u,async()=>{a.updateStorage(i.stepName,{videoShortUrl:d,videoUrl:o.href})}),d}async regionElements(t){const e=(a,i)=>({id:N(),region:a,regionIndex:i});return t.data.regions.map(e)}async command(t,e,a,i){const r=a.getLayouts(),s=`data:image/svg+xml;base64,${btoa(await Un.toString(t,{type:"svg"}))}`,l=e.map(c=>{const d=c.region,u=r.find(A=>A.panelId===d?.panelId);if(!u&&d)throw new Y(d);if(u&&!d)throw new Error("Region not found");if(!u||!d)throw new Error("Neither a region or layout found!");return new G({stepRegion:d,stepRegionIndex:c.regionIndex,stepName:i,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 U(l),followup:async()=>{}}}}const Ha=new Xs;class De{constructor(){this.frameSourceSvg=async(t,e)=>{if(!t)return va(e);const a=t.asset;if(!a)throw new wt(t);const i=a.fileLink;if(i)return et(i,!0);throw new Rt(a)}}async init(t,e,a){const i=a?.serializableWorkflow.steps.find(s=>s.stepName===t.stepName);if(i?.storage&&Object.keys(i.storage).length!==0||i?.selectedVariants&&i.selectedVariants.length!==0)return await this.reload(t,e,a),null;t.mandatory&&e.setMandatoryFulfilled(t.stepName,!1),e.markStepsAsInitialised([t.stepName]);let r;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&&(r=(await W.getLocalOrFromServer(c.originalAssetKey)).fileLink)}if(t.option&&t.option.variants&&t.option.variants.length>0){const s=t.option,l=await P.getDefaultVariant(s,t.overrideDefaultVariantId);return l?this.selectVariantCommand(t,l,[],e,void 0,r||t.data.placeholderImageUrl):null}return this.selectVariantCommand(t,void 0,[],e,void 0,r||t.data.placeholderImageUrl)}async reload(t,e,a){const i=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,regionIndex:c.stepRegionIndex}));if(!t.option||(t.option.variants||[]).length===0){const c=t.data.regions.map(d=>va(d));e.updateStorage(t.stepName,{currentFrameSources:c})}if(i){const c=async()=>{const d=i.storage?.colors,u=i.storage?.framePatternSrc,A=i.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(i.selectedVariants&&i.selectedVariants.length>0){const d=i.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(await P.ensureFullOption(t.data.colorOption))?.variants?.map(i=>({fill:i.color,stroke:i.color,variant:i,pmsValue:i.name}))??[]}selectImage(t,e,a,i=!0){const r=De.patternSource(e),o=a.getStepStorage(t.stepName)?.framePatternSrc;if(o&&o===r)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 Di(async()=>{const d=(await W.getFromServer(e.key||"")).versions?.find(A=>A.name==="svg");return d?(await it(d.link)).status===200:!1},()=>{W.getLocalOrFromServer(e.key||"").then(c=>{this.loadPatternFromAsset(c,t,a,i).then(l)})},()=>{throw new Re("Failed to resolve transcoded PDF")}))}):this.loadPatternFromAsset(e,t,a,i)}async selectVariant(t,e,a,i,r){const o=await this.selectVariantCommand(t,e,a,i,r);o&&(o.command&&i.getCommandDispatcher()(o.command),o.followup&&await o.followup())}getCreateElementCommand(t,e,a,i,r){return new G({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,stepRegionIndex:a,stepName:r.stepName,disablePlaceholder:r.disablePlaceholder,pattern:r.pattern,immutable:e.immutable},i)}async loadPatternFromString(t,e,a=!0,i=void 0,r){if(t.endsWith("svg")){const o=await za(t),s=o.width,l=o.height,c=await et(t);if(r){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:i??d.colors};At.set(t,u),e.setPatternData(u,a)}else{const o=await $e(t,!0),s=await ce(o),l={src:t,width:s.width,height:s.height,aspect:s.width/s.height,svg:void 0,colors:void 0};At.set(t,l),e.setPatternData(l,a)}}async changeColors(t,e,a){const i=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!i||!i.getImageData()?.svg){console.warn("changeColors was called without an SVG being assigned to a frame step");return}const r=await this.calculateColorMetadata(i,t,a);e.updateMetadata(t.stepName,{colors:r.metadataColors}),e.updateStorage(t.stepName,{colors:r.storageColors}),i.setPatternData({...i.getImageData(),colors:r.newColors},!1),this.validateColorCount(t,e)}getUniqueColorCount(t,e){const a=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!a)return 0;const i=a.getImageData()?.colors??{},r=[];for(const o in i){const s=i[o];if(s.pmsValue){const l=s.pmsValue.trim().toLocaleLowerCase();r.includes(l)||r.push(l)}else if(s.browserValue){const l=ai(s.browserValue);r.includes(l)||r.push(l)}}return r.length}async calculateColorMetadata(t,e,a){if(!t.getImageData()?.svg)return{newColors:void 0,metadataColors:void 0,storageColors:void 0};const i={...t.getImageData().colors??{}},r={};Object.entries(i).forEach(([l,c])=>{const d={browserValue:c.browserValue};r[l]=d});for(const[l,c]of a.entries())i[l]={browserValue:c.browserValue,pmsValue:c.pmsValue},r[l]=c;let o=Array.from(Object.values(i)).map(l=>l.browserValue);const s=await P.ensureFullOption(e.data.colorOption);return s&&s.variants?.forEach(l=>{o=o.map(c=>c.toLowerCase()===l.color?.toLowerCase()?l.name:c)}),{newColors:i,metadataColors:o,storageColors:r}}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,i,r,o){const s=i.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)));r&&r(!0);const c=t.data.initialZoomLevel,d=await Promise.all(t.data.regions.map(async(h,g)=>{const p=await Ae(l[g]),m=s.getImageData(),f=a.map(I=>new Dt(I.id)),y=m?qa(m,p,c&&!t.data.forceImageCover?{scale:c}:void 0,t.data.forceImageCover):void 0,w=m?{id:N(),src:m.src,x:y?.x||0,y:y?.y||0,width:m.width,height:m.height,scaleX:y?.zoom||1,scaleY:y?.zoom||1,rotation:0}:void 0,F=N(),v=i.getLayouts().find(I=>I.panelId===h.panelId);if(!v)throw new Y(h);return{command:this.getCreateElementCommand(F,h,g,v,{frameData:p,pattern:w,disablePlaceholder:t.data.disablePlaceholder,stepName:t.stepName}),regionEl:{id:F,region:h,regionIndex:g},removeExistingCommands:f}})),u=d.map(h=>h.command),A=d.map(h=>h.removeExistingCommands).flat();return{command:new U([...u,...A]),followup:async()=>{r&&r(!1),await i.setSelectionsAndElements(t.stepName,e?[e]:[],[...d.map(h=>h.regionEl)],async()=>{if(i.updateStorage(t.stepName,{currentFrameSources:l}),o){const h=i.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(i=>i.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,i){const r=De.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(r,s,i,void 0,e.data.colorPickerEnabled&&!!e.data.maxColors&&e.data.maxColors>0)}catch(c){throw a.markUpdateCompleted(o),c}const l=await this.calculateColorMetadata(s,e,new Map(Object.entries(s.getImageData()?.colors??{})));a.updateMetadata(e.stepName,{image:r,colors:l.metadataColors}),a.updateStorage(e.stepName,{framePatternSrc:r,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 pt=new De;class Zs{async getIllustrationBody(t){return new Promise(e=>{et(t,!0).then(a=>{e(a)}).catch(a=>console.error(a))})}getCreateElementCommand(t,e,a,i,r){return new G({stepRegion:e,stepRegionIndex:a,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},i)}getColors(t,e){const a=e.getRegionElements(t.stepName)||[];if(a.length===0)return[];try{return V(a[0].id,e.getAllLayoutData()).colors}catch{return[]}}async init(t,e,a){const i=await P.getOptionForStep(t);if(!i)throw new lt(t,"No option configured for illustration step.");if(a)return await this.reload(t,e,a);{const r=await P.getDefaultVariant(i,t.overrideDefaultVariantId);if(r)return await this.selectVariantCommand(t,r,[],e)}return null}async reload(t,e,a){const i=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=await P.getOptionForStep(t);if(i?.selectedVariants){const c=i.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,regionIndex:A.stepRegionIndex}));await e.setSelectionsAndElements(t.stepName,[d],u,async()=>{e.updateMetadata(t.stepName,{colors:i.storage?.colors})})}}else throw new Error("Required illustration variant no longer available")}return null}async availableColors(t,e){const a=await P.ensureFullOption(t.data.colorOption);return a?a?a.variants?.map(i=>({fill:i.color,stroke:i.color,variant:i,pmsValue:i.name})):[]:[]}async changeColorsCommand(t,e,a,i,r){const o={};for(const[d,u]of r.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=$a(t,e,a,o),l=await re(s),c=[];for(const d of i){for(const[u,A]of r.entries())c.push(new Ba(d,u,A));c.push(new Ws(d,s,l))}return new U(c)}async changeColors(t,e,a,i){if(e.length===0)return;const r=V(e[0].id,a.getCommandContext().getAllLayouts().map(A=>A.layoutState)),o={...r.colors},s={};Object.entries(o).forEach(([A,h])=>{const g={browserValue:h.browserValue,pmsValue:h.pmsValue},p=h.spotColor;p&&(g.spotColor={profileName:p.profileName,namedColor:p.namedColor}),s[A]=g});for(const[A,h]of i.entries()){const g=typeof h=="string"?h:h.browserValue,p=typeof h=="string"?void 0:h.pmsValue;A===""?Object.keys(o).forEach(m=>{o[m]={browserValue:g,spotColor:o[m]?.spotColor,pmsValue:p},s[m]={browserValue:g}}):(o[A]={browserValue:g,spotColor:o[A]?.spotColor,pmsValue:p},s[A]={browserValue:g})}let l=Array.from(Object.values(o)).map(A=>A.browserValue);const c=await P.ensureFullOption(t.data.colorOption);c&&c.variants?.forEach(A=>{l=l.map(h=>h.toLowerCase()===A.color?.toLowerCase()?A.name:h)}),a.updateMetadata(t.stepName,{colors:l});const d=new Map;if(Object.entries(o).forEach(([A,h])=>{d.set(A,h)}),!r.svg)throw new Error("Colors changed before SVG loaded. This should never happen!");const u=await this.changeColorsCommand(r.svg,r.width,r.height,e.map(A=>A.id),d);a.updateStorage(t.stepName,{colors:s}),a.getCommandDispatcher()(u)}async selectVariant(t,e,a,i,r){i(!0);try{const o=await this.selectVariantCommand(t,e,a,r);o&&(o.command&&r.getCommandDispatcher()(o.command),o.followup&&await o.followup())}finally{i(!1)}}async selectVariantCommand(t,e,a,i){if(!t.data||!t.data.regions)throw new lt(t,"Missing regions.");const r=e.asset;if(!r)throw new wt(e);const o=r.fileLink;if(!o)throw new Rt(r);t.mandatory&&i.setMandatoryFulfilled(t.stepName,!1);const s=a.map(m=>new Dt(m.id)),l=await rt(await this.getIllustrationBody(o)),c=await re(l.svg),d=(m,f)=>{const y=i.getLayouts().find(F=>F.panelId===m.panelId);if(!y)throw new Y(m);const w=N();return{regionElement:{id:w,region:m,regionIndex:f},command:this.getCreateElementCommand(w,m,f,y,{stepName:t.stepName,src:o,objectURL:c,svg:l})}},u=t.data.regions.map(d),A=u.map(m=>m.command),h=[...s,...A];let g=Array.from(Object.values(l.colors)).map(m=>m.browserValue);const p=await P.ensureFullOption(t.data.colorOption);return p&&p.variants?.forEach(m=>{g=g.map(f=>f.toLowerCase()===m.color?.toLowerCase()?m.name:f)}),i.updateMetadata(t.stepName,{colors:g}),{command:new U(h),followup:async()=>{const m=u.map(y=>y.regionElement);await i.setSelectionsAndElements(t.stepName,[e],m);const f=r.assetConfiguration?.defaultColorVariants||[];if(f.length!==0){const y={};(r.assetConfiguration?.channelNumbers||[]).forEach(F=>{const b=f.find(v=>v.channelNumber===F.number);b&&(y[`${F.id.replace(/\W/g,"")}`]={browserValue:b?.variant?.color||""})}),await this.changeColors(t,m,i,new Map(Object.entries(y)))}if(t.data.colorPickerEnabled){const y=await this.availableColors(t,i)||[],w=Object.keys(l.colors),F=y.length===1&&w.length===1;if(F){const b=y[0],v=w[0];await this.changeColors(t,m,i,new Map([[v,b.variant.color]]))}!F&&f.length===0&&await this.changeColors(t,m,i,new Map)}}}}}const Jt=new Zs;class tl{async init(t,e,a){const i=t.option;if(!i)throw new ae(t);if(a)await this.reload(t,e,a);else{const r=await P.getDefaultVariant(i,t.overrideDefaultVariantId);if(r)return await this.selectVariantLambda(t,r,e,()=>{})}return null}async reload(t,e,a){const i=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 ae(t);if(i?.selectedVariants){const c=i.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,regionIndex:h.stepRegionIndex}));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)}})}}}}async selectVariant(t,e,a,i){const r=await this.selectVariantLambda(t,e,a,i);r&&(r.command&&a.getCommandDispatcher()(r.command),r.followup&&await r.followup())}async selectVariantLambda(t,e,a,i){const r=a.getModelContainer();i(!0);const o=e.material;if(!o)throw i(!1),new wt(e);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[e],[],async()=>{try{r&&t.data.targetMaterials.forEach(s=>{t.option&&r.applyMaterialVariant(s,t.option.id||"",o)})}finally{i(!1)}})}}}}const Wa=new tl;class el{async init(t,e,a){const i=await P.getOptionForStep(t);if(!i)throw new ae(t);if(a)await this.reload(t,e,a);else{const r=await P.getDefaultVariant(i,t.overrideDefaultVariantId);if(r)return await this.selectVariantLambda(t,r,e,()=>{})}return null}async reload(t,e,a){const i=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=await P.getOptionForStep(t);if(i?.selectedVariants){const c=i.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,regionIndex:A.stepRegionIndex}));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 wt(d);await A.applyModelVariant(t.stepName||"",{model:h,contextService:e.getLayoutPreviewService()},t.data.replaceProductModel||!1)}})}}}}async selectVariant(t,e,a,i){const r=await this.selectVariantLambda(t,e,a,i);r&&(r.command&&a.getCommandDispatcher()(r.command),r.followup&&await r.followup())}async selectVariantLambda(t,e,a,i){i(!0);const r=e.asset?.fileLink;if(!r)throw new wt(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:r,contextService:a.getLayoutPreviewService()},t.data.replaceProductModel||!1)}finally{i(!1)}})}}}}const Ya=new el;class al{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 i=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,regionIndex:c.stepRegionIndex}));await e.setSelectionsAndElements(t.stepName,[],l,async()=>{e.updateStorage(t.stepName,{text:i?.storage?.text}),e.setMandatoryFulfilled(t.stepName,i?.storage?.text!=="")})}async changeText(t,e,a,i){const r=await this.changeTextCommand(t,e,a,i);r&&(r.command&&a.getCommandDispatcher()(r.command),r.followup&&await r.followup())}async changeTextCommand(t,e,a,i){const r=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,i);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,h)=>{const g=h||N(),m=a.getLayouts().find(y=>y.panelId===u.panelId);if(!m)return console.error(`Can not find layout for region: ${u.panelId}`),null;const f=[];return h&&f.push(new Dt(g)),f.push(new G({stepRegion:u,stepRegionIndex:A,stepName:t.stepName,colors:{},id:g,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},m)),{id:g,region:u,command:new U(f)}};if(r.length>0){const u=r.map(A=>{if(!A.region)return null;const h=o.svgPrint(e,A.region);return c(h,A.region,A.regionIndex,A.id)}).filter(A=>!!A).filter(A=>!!A).map(A=>A&&A.command);return{command:new U(u),followup:async()=>{}}}else{const d=t.data.regions.map((A,h)=>c(o.svgPrint(e,A),A,h)),u=d.filter(A=>!!A).map(A=>A&&A.command);return{command:new U(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,i){if(t.data&&t.data.maxLength){const o=t.data.maxLength;if(e.length>o)return i("Too many characters."),{input:e,helperData:{},errorData:{hitCharacterLimit:!0}}}if(!/^$|^[a-zA-Z0-9 ]+$/.test(e))return i("Unsupported characters."),{input:e,helperData:{},errorData:{unsupportedCharacters:!0}};const r=ma.split(e.toLowerCase());for(const o of r)for(const s in a){const l=a[s].toLowerCase().replace(/\s/g,"");if(o===l)return i("Blocked profanity."),{input:e,helperData:{},errorData:{blockedProfanity:!0}}}return i(""),{input:e,helperData:{}}}}const Ja=new al;class nl{async init(t,e,a){const i=await P.getOptionForStep(t);if(!i)throw new lt(t,"Missing option for picture step");if(a)await this.reload(t,e,a);else{const r=await P.getDefaultVariant(i,t.overrideDefaultVariantId);if(r)return e.markStepsAsInitialised([t.stepName]),this.selectVariantCommand(t,r,e,()=>{})}return e.markStepsAsInitialised([t.stepName]),null}async reload(t,e,a){const i=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=await P.getOptionForStep(t);if(i?.selectedVariants){const c=i.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,regionIndex:A.stepRegionIndex}));await e.setSelectionsAndElements(t.stepName,[d],u)}}}}async selectVariant(t,e,a,i){const r=await this.selectVariantCommand(t,e,a,i);r&&(r.command&&a.getCommandDispatcher()(r.command),r.followup&&await r.followup())}async selectVariantCommand(t,e,a,i){const r=e.asset;if(!r)throw new wt(e);const o=r?.fileLink;if(!o)return console.error("No URL for picture!"),null;i(!0),t.mandatory&&a.setMandatoryFulfilled(t.stepName,!1);const l=a.getRegionElements(t.stepName).map(u=>new Dt(u.id)),c=(u,A)=>{const g=a.getLayouts().find(m=>m.panelId===u.panelId);if(!g)throw new Y(u);const p=N();return{regionElement:{id:p,region:u,regionIndex:A},command:new G({stepName:t.stepName,stepRegion:u,stepRegionIndex:A,id:p,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"},g)}},d=t.data.regions.map(c);return{command:new U([...l,...d.map(u=>u.command)]),followup:async()=>{await a.setSelectionsAndElements(t.stepName,[e],d.map(u=>u.regionElement),async()=>{i(!1)})}}}}const Ka=new nl;class il{async init(t,e,a){const i=t.option;if(!i)throw new lt(t,"Missing option for question step");if(a)await this.reload(t,e,a);else{const r=await P.getDefaultVariant(i,t.overrideDefaultVariantId);if(r)return this.selectVariantLambda(t,r.id||"",e)}return null}async reload(t,e,a){const i=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),r=await P.getOptionForStep(t);if(i?.selectedVariants){const o=i.selectedVariants[0].id;if(r&&o){const s=r.variants?.find(l=>l.id===o);s&&await e.setSelectionsAndElements(t.stepName,[s],[])}}}async selectVariant(t,e,a){const i=await this.selectVariantLambda(t,e,a);i&&(i.command&&a.getCommandDispatcher()(i.command),i.followup&&await i.followup())}async selectVariantLambda(t,e,a){const i=await P.getOptionForStep(t);if(!i)throw new lt(t,"Missing option for question step");const r=i.variants;if(!r)throw new lt(t,"Option for question step is missing variants");const o=r.length>1?r.find(s=>s.id===e):r[0];if(!o)throw new Error(`Failed to find selected variant ${e} in option ${i.id} of step ${t.stepName} (${t.stepTitle})`);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[o],[])}}}}const _a=new il;class rl{constructor(){this.shapeFillId="spiff-fill-shape"}async availableColours(t){const e=await P.getOptionForStep(t);return e?e.variants?.map(a=>({fill:a.color,stroke:a.color,variant:a}))||[]:[]}setCustomColor(t,e,a){const i=a.getLayouts(),o=(a.getRegionElements(e.stepName)||[]).map(s=>{const l=s.region;if(!i.find(d=>d.panelId===l?.panelId))throw new Y(l);return new Ba(s.id,this.shapeFillId,t)}).filter(s=>!!s);a.getCommandDispatcher()(new U(o)),a.updateStorage(e.stepName,{colour:t})}async init(t,e,a){const i=await P.getOptionForStep(t);if(!i)throw new ae(t);if(a)await this.reload(t,e,a);else{const r=await P.getDefaultVariant(i,t.overrideDefaultVariantId);return r?this.selectVariantCommand(t,{fill:r.color,stroke:r.color,variant:r},[],e):null}return null}async selectVariant(t,e,a,i){const r=await this.selectVariantCommand(t,e,a,i);r&&(r.command&&i.getCommandDispatcher()(r.command),r.followup&&await r.followup())}async reload(t,e,a){const i=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=await P.getOptionForStep(t);if(i?.selectedVariants){const c=i.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,regionIndex:A.stepRegionIndex}));await e.setSelectionsAndElements(t.stepName,[d],u,async()=>{e.updateStorage(t.stepName,{colour:i?.storage?.colour||""})})}}}}async selectVariantCommand(t,e,a,i){const r=i.getLayouts(),o=i.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(!r.find(g=>g.panelId===u?.panelId))throw new Y(u);const h=s();return new Ba(d.id,this.shapeFillId,h)},c=a.map(l).filter(d=>!!d);return{command:new U(c),followup:async()=>{await i.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],a),i.updateStorage(t.stepName,{colour:s()})}}}else{const l=(A,h)=>{const g=r.find(w=>w.panelId===A.panelId);if(!g)throw new Y(A);const p=s(),m=`
1375
+ <svg
1376
+ xmlns="http://www.w3.org/2000/svg"
1377
+ xmlnsXlink="http://www.w3.org/1999/xlink"
1378
+ xmlSpace="preserve"
1379
+ preserveAspectRatio="none"
1380
+ version="1.1"
1381
+ width="1"
1382
+ height="1"
1383
+ viewBox="0 0 1 1"
1384
+ >
1385
+ <rect
1386
+ x="0"
1387
+ y="0"
1388
+ width="1"
1389
+ height="1"
1390
+ class="${this.shapeFillId}"
1391
+ fill="${p}"
1392
+ />
1393
+ </svg>
1394
+ `,f={};f[this.shapeFillId]={browserValue:p};const y=N();return{id:y,region:A,command:new G({stepRegion:A,stepRegionIndex:h,stepName:t.stepName,colors:f,id:y,svg:m,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},g)}},c=t.data.regions.map(l),d=c.filter(A=>!!A).map(A=>A?.command),u=c.filter(A=>!!A).map((A,h)=>({id:A.id,region:A.region,regionIndex:h}));return{command:new U(d),followup:async()=>{await i.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],u,async()=>{i.updateStorage(t.stepName,{colour:s()})})}}}}}const Tt=new rl;class ol{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 ki=new ol,la=(n,t,e,a,i)=>{if(t.some(d=>d==null))throw new Error(`Failed to autosize lines: ${t.join(", ")}`);let r=t.map(d=>d.split(`
1395
+ `)).flat(),o=r.length,s=r.map(d=>Ct(d,a,i));const l=i.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[r,u];const A=s.reduce((m,f,y,w)=>f>w[m]?y:m,0),h=r[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(w=>Ct(w,a,i));f[0]<=n.width&&(r=[...r.slice(0,A),...m,...r.slice(A+1)],s=[...s.slice(0,A),...f,...s.slice(A+1)],o+=1,g=!0)}g||(c=!1)}return[null,null]},Kt=(n,t,e,a,i)=>{let r,o;const s=vt(t.assetUrl),l=s.getFont();if(i.size){const A=n/l.unitsPerEm;return[r,o]=la(e,a,n,A,s),[i.size,r,o]}const c=6;let d=c-na;if(a.length>0){let A=a,h=0;for(;(!i.maxSize||d<=i.maxSize)&&A;)d+=na,h=d/l.unitsPerEm,[A,o]=la(e,a,d,h,s)}d>c&&(d-=na),i.minSize&&d<i.minSize&&(d=i.minSize);const u=d/l.unitsPerEm;return[r,o]=la(e,a,d,u,s),[d,r,o]},ca=30;class ke extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=ke.name}}const sl=["‘","’","“","”",`
1396
+ `];class Me extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=Me.name}}class ll{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 i=[],r=e?vt(e.assetUrl):void 0;if(r){const o=a.split("").filter(l=>!sl.includes(l)).join(""),s=o.split("").map(l=>r.getFont().charToGlyph(l));for(let l=0;l<s.length;l++)s[l].name===".notdef"&&i.push(String.fromCharCode(o.charCodeAt(l)))}for(let o=0;o<i.length;o++)a=a.replaceAll(i[o],"");return a},this.textAlign=t=>t.vertical?"center":t.textAlign||"center",this.getErrorsForText=(t,e,a,i)=>{let r;a.data&&a.data.maxLength&&e.length>a.data.maxLength&&(r||(r={}),r.hitCharacterLimit=!0);const o=i.getWorkflowExperience().getProfanityList(),s=ma.split(t.toLowerCase());for(const c of s)for(const d in o){const u=o[d].toLowerCase().replace(/\s/g,"");if(c===u){r||(r={}),r.blockedProfanity=!0;break}}return!a.data.allowNewlines&&(t.includes(`
1397
+ `)||t.includes("\r"))&&(r||(r={}),r.illegalMultipleLines=!0),r}}async init(t,e,a){const i=await P.getOptionForStep(t);if(!i)return null;if(a)await this.reload(t,e,a);else{const r=await this.getDefaultImageFillVariant(t.data),o=r?.asset?.fileLink,s=o?await Ea(o):void 0,l=s?{src:s.src,height:s.height,width:s.width,scale:t.data.imageFillScale||1}:void 0,c=await 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===q.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:(await this.getDefaultColorVariant(t.data))?.color||await this.getDefaultColor(t.data),fillImage:l,strokeColor:d}),e.updateMetadata(t.stepName,{text:u,color:(await this.getDefaultColorVariant(t.data))?.name||await this.getDefaultColor(t.data),fillImage:r?.name,strokeColor:t.data.strokeEnabled?c?.color:void 0});const h=await P.getDefaultVariant(i,t.overrideDefaultVariantId);if(h)return this.selectVariantCommand(t,h,{text:u},[],e,()=>{},()=>{},l,d)}return null}findLayoutElements(t,e){return t.getRegionElements(e.stepName).map(r=>V(r.id,t.getAllLayoutData()))}async availableFillColors(t){const e=this.cachedColors.get(t.stepName);if(e)return e;const a=await P.ensureFullOption(t.data.colorOption);if(a){const i=a.variants?.map(r=>({fill:r.color,stroke:r.color,variant:r}))||[];return this.cachedColors.set(t.stepName,i),i}return[]}changeAlignment(t,e,a,i){if(!t.data||!t.data.regions)return;const r=i.getCommandDispatcher();for(const o of a){const s=new Pi(o.id,e);r(s)}}async changeFillColor(t,e,a,i){if(!t.data||!t.data.regions)return;const r=i.getCommandDispatcher();e.variant?i.updateMetadata(t.stepName,{color:e.variant.name}):i.updateMetadata(t.stepName,{color:e.fill});const o=await P.ensureFullOption(t.data.colorOption),s=o?this.createTextFillSpotColor(o,e.variant):void 0;o?i.updateStorage(t.stepName,{color:e.fill,colorProfileAssetKey:o.colorProfile?.key}):i.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 Ii(l.id,e.fill,s);r(c)}}async availableFillImages(t){const e=await P.ensureFullOption(t.data.imageFillOption);if(e){const a=e.variants?.map(i=>i.asset?.fileLink)?.filter(i=>!!i)||[];return Promise.all(a.map(async i=>{const r=await Ea(i);return{src:i,width:r.width,height:r.height,scale:t.data.imageFillScale||1}}))}return Promise.resolve([])}async changeFillImage(t,e,a,i){if(!t.data||!t.data.regions)return;const r=i.getCommandDispatcher(),o=t.option?.variants?.find(s=>s.asset?.fileLink===e.src);i.updateMetadata(t.stepName,{fillImage:o?.name}),i.updateStorage(t.stepName,{fillImage:e});for(const s of a){const l=new oa(s.id,e);r(l)}}async availableStrokeColors(t){const e=this.cachedStrokeColors.get(t.stepName);if(e)return e;const a=await P.ensureFullOption(t.data.strokeOption);if(a){const i=a.variants?.map(r=>({fill:r.color,stroke:r.color,variant:r}))||[];return this.cachedStrokeColors.set(t.stepName,i),i}return[]}async changeStrokeColor(t,e,a,i){if(!t.data||!t.data.regions)return;const r=i.getCommandDispatcher();e?.variant?i.updateMetadata(t.stepName,{strokeColor:e.variant.name}):i.updateMetadata(t.stepName,{strokeColor:e?.fill});const o=e?{browserValue:e.fill,pmsValue:e.pmsValue}:void 0;i.updateStorage(t.stepName,{strokeColor:o});for(const s of a){const l=new sa(s.id,o,t.data?.strokeThickness);r(l)}}getProcessedInput(t,e,a){const i=a?t:this.injectReplaceableText(t,e);return Fe(i,{vertical:e.vertical,uppercase:e.uppercase})}updateInputText(t,e,a,i){const r=i.getStepStorage(a.stepName),o=Nt(t,i),s=this.getProcessedInput(o,a.data,r?.customiseAllText??!1),l={command:void 0,helperData:{},errorData:this.getErrorsForText(t,s,a,i)};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 O("Failed to resolve font data for text.");const[h,g]=Kt(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(`
1398
+ `);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):(i.updateStorage(a.stepName,{text:t}),i.updateMetadata(a.stepName,{text:s}),(r?.defaultCleared||!a.data.deleteDefaultOnFocus)&&s.trim()!==""&&i.setMandatoryFulfilled(a.stepName,!0),l.command=new U(c),l)}async selectVariant(t,e,a,i,r){const o=await this.selectVariantCommand(t,e,a.getStepStorage(t.stepName)||{},a.getRegionElements(t.stepName),a,i,r);o&&(o.command&&a.getCommandDispatcher()(o.command),o.followup&&await o.followup())}createTextFillSpotColor(t,e){const a=t.colorProfile;if(a){const i=(a.name||"").replace(/\s/g,"-"),r=i.lastIndexOf("/"),s=i.slice(r+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 i=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),s=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=await P.getOptionForStep(t);if(i?.selectedVariants){const c=i.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,regionIndex:m.stepRegionIndex})),h=i.storage?.color;let g=i.storage?.text;const p=e.getWorkflowExperience().getBundle();if(p&&t.globalPropertyAspectConfigurations){const f=p.getGlobalPropertyConfiguration()?.aspects?.find(y=>y.type===q.Text&&t.globalPropertyAspectConfigurations?.map(w=>w.aspectName).includes(y.name));if(f){const w=p.getGlobalPropertyStateManager().getAspect(f.name);w&&(g=w)}}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(y=>new Ia(y.id,u)),f=new U(m);e.getCommandDispatcher()(f)}),s.length===0&&l){const m=await P.getDefaultVariant(l,t.overrideDefaultVariantId);if(m){const f=await this.selectVariantCommand(t,m,{text:g},[],e,()=>{},()=>{});f?.command&&e.getCommandDispatcher()(f.command)}}else{const{command:m}=j.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===q.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=await P.getDefaultVariant(l,t.overrideDefaultVariantId);if(g){const p=await this.selectVariantCommand(t,g,{text:h},[],e,()=>{},()=>{});p?.command&&e.getCommandDispatcher()(p.command)}}else{const{command:g}=j.updateInputText(h,s,t,e);g&&e.getCommandDispatcher()(g)}}}}}async getDefaultColorVariant(t){const e=t.colorOption;if(e)return P.getDefaultVariant(e)}async getDefaultColor(t){const e=t.colorOption;return e?(await P.getDefaultVariant(e))?.color:void 0}async getDefaultImageFillVariant(t){const e=t.imageFillOption;if(e)return P.getDefaultVariant(e)}async getDefaultStrokeColorVariant(t){const e=t.strokeOption;if(e)return P.getDefaultVariant(e)}async fontDataFromVariant(t){const e=t.asset;if(!e)throw new wt(t);const a=e.fileLink;if(!a)throw new Rt(e);const i=await Ft(a);return{assetUrl:a,name:i.names.fullName.en}}async selectVariantCommand(t,e,a,i,r,o,s,l,c){const d=r.markUpdatePending(),u=await this.fontDataFromVariant(e);let A=!0;const h=g=>{o(g),g&&(A=!1)};if(i.length>0){const g=i.map(f=>new Ia(f.id,u));if(l){const f=i.map(y=>new oa(y.id,l));g.push(...f)}if(c){const f=i.map(y=>new sa(y.id,c,t.data.strokeThickness));g.push(...f)}const p=await this.changeInputTextWithRegion(t,t.data.size||ca,u,a.text||"",a,r,a?.customiseAllText??!1,h,s);p&&g.push(p);const m=new U(g);return A?{command:m,followup:async()=>{r.markUpdateCompleted(d),await r.setSelectionsAndElements(t.stepName,[e],i)}}:null}else{const g=await this.createTextboxRegions(t.stepName,e,t.data,u,a,r),p=await this.changeInputTextWithRegion(t,t.data.size||ca,u,g[0]?.newElement.input||a.text||t.data.defaultText||"",a,r,a?.customiseAllText??!1,h,s),m=g.flatMap(y=>y.commands);if(l){const y=g.map(w=>new oa(w.regionElement.id,l));m.push(...y)}if(c){const y=g.map(w=>new sa(w.newElement.id,c,t.data.strokeThickness));m.push(...y)}p&&m.push(p);const f=new U(m);return A?{command:f,followup:async()=>{r.markUpdateCompleted(d)}}:null}}injectReplaceableText(t,e){return e.replaceableText?e.replaceableText.replace("{{}}",t):t}async createTextboxRegions(t,e,a,i,r,o){if(!a||!a.regions)throw new Error("Step data not supplied");const s=r.text||a.defaultText||"",l=Nt(s,o),c=this.getProcessedInput(l,a,!1),d=async(A,h)=>{const p=o.getLayouts().find(f=>f.panelId===A.panelId),m=N();try{if(!p)throw new Me("Failed to find layout for region: "+A.panelId);const f=await P.ensureFullOption(a.colorOption);let y;if(f&&f.variants){const k=await P.getDefaultVariant(f);k&&(y=this.createTextFillSpotColor(f,k),o.updateStorage(t,{colorProfileAssetKey:f.colorProfile?.key}))}const w=await this.getDefaultColor(a),F=w||"#000000",b={stepRegion:A,stepRegionIndex:h,stepName:t,align:this.textAlign(a),fill:r.color?r.color:F,fontSize:a.size||ca,fontData:i,id:m,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:y},v=[],I=new Map,M=new Map;if(!b.fontData)throw new O("Failed to resolve font data for text.");const[R,x]=Kt(b.fontSize,b.fontData,{left:b.x,top:b.y,width:b.width,height:b.height,rotation:b.rotation,panelId:""},[c],{size:a.size,minSize:a.minSize,maxSize:a.maxSize});I.set(b.id,R),M.set(b.id,x);const T=a.curved||a.vertical?c:(x||[]).join(`
1399
+ `);v.push(this.generateTextChangeCommandsForRegion(R,a,b.id,T));const L=new G(b,p);return{regionElement:{id:m,region:A,regionIndex:h},commands:[L,...v],newElement:b,fontData:i}}catch(f){throw console.log(f),new ke("Error adding font to region")}},u=await Promise.all(a.regions.map(d)).catch(A=>{throw A instanceof ke?(ki.setLatestToast("Failed to load font.",he.Error),A):A instanceof Me?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,i){const r=[],o=new xi(a,i);if(r.push(o),!e.size){const l=new Bi(a,t);r.push(l)}return new U(r)}async changeInputTextWithRegion(t,e,a,i,r,o,s,l,c,d){const u=(i||"").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,""),A=Nt(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[v,I]=Kt(e,a,b.region,[h],{size:t.data.size,minSize:t.data.minSize,maxSize:t.data.maxSize});p.set(b.id,v),m.set(b.id,I)}const y=(()=>{if(t.data&&t.data.maxLength&&h.length>t.data.maxLength)return d&&d(!0),{info:"0"};const b=o.getWorkflowExperience().getProfanityList(),v=ma.split(h.toLowerCase());for(const I of v)for(const M in b){const R=b[M].toLowerCase().replace(/\s/g,"");if(I===R){const T="Blocked profanity.";return l(T),{error:T}}}if(!t.data.vertical&&!t.data.allowNewlines&&(h.includes(`
1400
+ `)||h.includes("\r"))){const I="Text may not span multiple lines.";return l(I),{error:I}}if(!t.data.curved&&!Array.from(m.values()).every(M=>M)){const M="Text does not fit.";return l(M),{error:M}}return l(void 0),{info:(t.data.maxLength-h.length).toString()}})();if(y.error){c(y.error);return}if(c(`${y.info} characters remaining`||""),d)return;o.updateStorage(t.stepName,{text:u}),o.updateMetadata(t.stepName,{text:this.injectReplaceableText(u,t.data)}),(r.defaultCleared||!t.data.deleteDefaultOnFocus)&&u.trim()!==""&&o.setMandatoryFulfilled(t.stepName,!0);const w=[];for(const b of g){const v=t.data.curved?h:(m.get(b.id)||[]).join(`
1401
+ `);w.push(this.generateTextChangeCommandsForRegion(p.get(b.id)||1,t.data,b.id,v))}return new U(w)}}const j=new ll;class cl{}const dl="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=>Hr("http://www.w3.org/2000/svg",n),ul=(n,t)=>{const e=at("rect");return e.setAttribute("height",`${n}`),e.setAttribute("width",`${t}`),e},Al=(n,t,e,a)=>{const i=fe("filter");i.setAttribute("id",a),i.setAttribute("height","200%"),i.setAttribute("width","200%"),i.setAttribute("x","-50%"),i.setAttribute("y","-50%");const r=fe("feOffset");i.appendChild(r),r.setAttribute("result","offOut"),r.setAttribute("in","SourceAlpha"),r.setAttribute("dx",`${n}`),r.setAttribute("dy",`${t}`);const o=fe("feGaussianBlur");i.appendChild(o),o.setAttribute("result","blurOut"),o.setAttribute("in","offOut"),o.setAttribute("stdDeviation",`${e}`);const s=fe("feBlend");return i.appendChild(s),s.setAttribute("in","SourceGraphic"),s.setAttribute("in2","blurOut"),s.setAttribute("mode","normal"),i},hl=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 gl(n,t,e,a,i,r){const o=i,s=r,l={x:t[0],y:t[1],width:t[2]-t[0],height:t[3]-t[1]};if(l.width<=0)return;const c=ml(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 ml(n,t,e,a){const i=e/n,r=a/t;return i>1&&r>1?Math.min(i,r):i>1&&r<1?r:i<1&&r>1?i:Math.min(i,r)}const En={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 pl{constructor(t){const e=Array.from(t.querySelectorAll("path"));this.paths=e.map(a=>{const i=a.getAttribute("d")||"",r=this.parsePath(i);return{pathElement:a,pathData:r}})}transform(t){for(const e of this.paths)e.pathData=this.runTransformer(e.pathData,t);this.update()}encodePath(t){let e="";const i=r=>{const o=[],s=r.relative?r.type:r.type.toUpperCase();let l=e!==s;const c=En[r.type];l&&(o.push(s),e=s);for(const d of c){const u=r[d];let A;switch(typeof u){case"boolean":A=u|0;break;case"number":A=(u*100|0)/100;break;default:throw new It("Failed to encode path.")}l||o.push(" "),o.push(A),l=!1}return o.join("")};return t.map(i).join("")}parsePath(t){const e=/([mzlhvcsqta])([^mzlhvcsqta]*)/gi,a=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi,i=[];let r;for(e.lastIndex=0;r=e.exec(t);){const o=r[1].toLowerCase(),s=(r[2].match(a)||[]).map(parseFloat),l=o===r[1],c=En[o];if(s.length<c.length)throw new It(`Path type "${o}" given ${s.length} arguments, expected ${c.length}.`);if(c.length>0){if(s.length%c.length!==0)throw new It(`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];i.push(u)}}else i.push({type:o,relative:l})}return i}runTransformer(t,e){const a=[["x1","y1"],["x2","y2"],["x","y"]],i=r=>{for(let o=0;o<a.length;o++){const[s,l]=a[o];if(s in r&&l in r){const c=[r[s],r[l]],d=e(c);if(d.length<2)throw new It("Transformer must return at least 2 points.");r[s]=d[0],r[l]=d[1]}}return r};return this.transformPath(t,i)}transformPath(t,e){const a=[];for(let i=0;i<t.length;i++){const r=JSON.parse(JSON.stringify(t[i])),o=e(r);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 fl extends cl{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=Ps(dl),r=t!==""?(w=>w.charAt(0).toUpperCase()+w.substr(1).toLowerCase())(t):"",o=a.getPath(r,0,72,72),s=o.toSVG(2),l=o.getBoundingBox(),c=l.x2-l.x1,d=o.toPathData(3),u=()=>{const w=at("g");w.classList.add("module-text-group");const F=at("defs");w.appendChild(F),F.appendChild(Al(0,2,2,"shadow"));const b=at("path");b.setAttribute("d",d),b.setAttribute("stroke","black"),b.setAttribute("stroke-width","3"),F.appendChild(b);const v=at("g");v.classList.add("module-layer0"),w.appendChild(v),v.setAttribute("filter","url(#shadow)"),v.innerHTML=b.outerHTML;const I=at("g");I.classList.add("module-layer1"),w.appendChild(I),I.setAttribute("stroke-width","3"),I.setAttribute("stroke","rgb(45,41,38)"),I.setAttribute("fill","rgb(45,41,38)"),I.setAttribute("transform","translate(0.5,0)"),I.innerHTML=s;const M=at("g");M.classList.add("module-layer2"),w.appendChild(M),M.setAttribute("fill","rgb(255,209,0)"),M.setAttribute("transform","translate(1,-0.1)"),M.innerHTML=s;const R=at("g");return R.classList.add("module-layer3"),w.appendChild(R),R.setAttribute("fill","white"),R.innerHTML=s,new pl(w).transform(([T,L])=>[T,L+(c/2-T)**2/(c*6)]),w},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=ul(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 y=Rr(d);return gl(m,y,e.height,e.width,.35,.65),hl(A.outerHTML)}}async function Mi(n){if(n==="Vegemite")return new fl;throw new O(`Failed to resolve Module, Module ${n} not found`)}const Cl=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],wl=async(n,t,e)=>{const a=t.data,i=e.data.baseUrl,r=a.assetUrl.replace("localhost","localstack"),o=i.slice(0,4)==="http"?"":"https://",s=new URL(o+i);s.searchParams.append("video",An(JSON.stringify([{href:r}]))),s.pathname=s.pathname+(s.pathname.slice(-1)==="/"?"":"/");const l=s.toString(),d=`data:image/svg+xml;base64,${An(await Un.toString(l,{type:"svg"}))}`,u=h=>{const g=n.find(m=>m.panelId===h.panelId);if(!g)throw new Y(h);const p=N();return new G({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),[]}},yl=async(n,t,e,a)=>{const i=e.data,r=i.assetUrl,o=await Ea(r);try{const s=await Us(i,a.option);s&&(t[a.stepName]={selectedVariants:[s]});const l=async c=>{const d=await Ei(c,s?.asset?.fileLink),u=await Ae(d),A=N(),h=n.find(p=>p.panelId===c.panelId);if(!h)throw new Y(c);const g=qa(o,u,{scale:i.scale,left:i.x,top:i.y},a.data.forceImageCover);return[new G({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),[]}},Sl=async(n,t,e,a)=>{const i=e.data,r=a.option;if(!r)return console.error(`No option for step ${a.stepName}.`),[];const o=r.variants?.find(b=>b.id===i.illustrationVariantId)||await P.getDefaultVariant(r,a.overrideDefaultVariantId);if(!o)return console.error(`No variant with ID: ${i.illustrationVariantId}`),[];if(!o.asset)return console.error(`No asset for variant with ID: ${i.illustrationVariantId}`),[];t[a.stepName]={selectedVariants:[o]};const s=o.asset?.fileLink;if(!s)return console.error(`No asset link for variant with ID: ${i.illustrationVariantId}`),[];const l=await et(s,!0),c=/<svg.*?<\/svg>/s,d=l.match(c)||[],u=d?.length>0?d[0]:"",g=ct().parseFromString(u,"image/svg+xml").firstElementChild;if(!g)return console.error("Failed to read SVG."),[];Le(g);const p={};Ut(g,b=>{Cl.includes(b.tagName)&&!b.attributes.getNamedItem("fill")&&b.setAttribute("fill","#000000");const v=b.attributes.getNamedItem("fill");if(v&&v.value!=="none"){const M=v.value,x=`spiff-fill-${M.replace(/\W/g,"")}`;b.classList.add(x),p[x]={browserValue:M}}const I=b.attributes.getNamedItem("stroke");if(I&&I.value!=="none"){const M=I.value,x=`spiff-stroke-${M.replace(/\W/g,"")}`;b.classList.add(x),p[x]={browserValue:M}}});const f=Et().serializeToString(g),y=i.colors;if(y){for(const[b,v]of Object.entries(p))for(const I of Object.keys(y))if(v.browserValue===I){p[b]={browserValue:y[I]};break}}const w=b=>{const v=n.find(M=>M.panelId===b.panelId);if(!v)throw new Y(b);const I=N();return new G({colors:p,id:I,svg:f,type:D.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},v)},F=a.data.regions;try{return F.map(w)}catch(b){return console.error(b),[]}},vl=async(n,t,e)=>{const a=await Mi(e.data.module),i=t.data,r=(s,l)=>{const c=n.find(u=>u.panelId===l.panelId);if(!c)throw new Y(l);const d=N();return new G({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=>r(a.svgPrint(i.text,s),s))}catch(s){return console.error(s),[]}},El=async(n,t,e,a)=>{const i=e.data,r=a.option;if(!r)return console.error(`No option for step ${a.stepName}.`),[];const o=r.variants?.find(d=>d.id===i.pictureVariantId)||await P.getDefaultVariant(r,a.overrideDefaultVariantId);if(!o)return console.error(`No variant with ID: ${i.pictureVariantId}`),[];if(!o.asset)return console.error(`No asset for variant with ID: ${i.pictureVariantId}`),[];t[a.stepName]={selectedVariants:[o]};const s=o.asset?.fileLink;if(!s)return console.error(`No asset link for variant with ID: ${i.pictureVariantId}`),[];const l=d=>{const u=n.find(h=>h.panelId===d.panelId);if(!u)throw new Y(d);const A=N();return new G({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),[]}},bl=async(n,t,e,a)=>{const i=e.data,r=a.option;if(!r)return console.error(`No option for step ${a.stepName}.`),[];const o=r.variants?.find(c=>c.id===i.colorVariantId)||await P.getDefaultVariant(r,a.overrideDefaultVariantId);if(!o)return console.error(`No variant with ID: ${i.colorVariantId}`),[];t[a.stepName]={selectedVariants:[o]};const s=c=>{const d=n.find(p=>p.panelId===c.panelId);if(!d)throw new Y(c);const u=`
1402
+ <svg
1403
+ xmlns="http://www.w3.org/2000/svg"
1404
+ xmlnsXlink="http://www.w3.org/1999/xlink"
1405
+ xmlSpace="preserve"
1406
+ preserveAspectRatio="none"
1407
+ version="1.1"
1408
+ width="1"
1409
+ height="1"
1410
+ viewBox="0 0 1 1"
1411
+ >
1412
+ <rect
1413
+ x="0"
1414
+ y="0"
1415
+ width="1"
1416
+ height="1"
1417
+ class="spiff-fill-shape"
1418
+ fill="${o?.color}"
1419
+ />
1420
+ </svg>
1421
+ `,h={"spiff-fill-shape":{browserValue:o.color||"#000000"}},g=N();return new G({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),[]}},Il=async(n,t,e)=>{const a=[],r=t.type===E.ProductOverlay?e||t.data.asset?.fileLink||"":t.data.asset?.fileLink||"",s=r.endsWith(".jpeg")||r.endsWith(".jpg")||r.endsWith(".png")?D.Image:(r.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 Y(c);const u={id:N(),src:r,type:s,y:c.top,x:c.left,width:c.width,height:c.height,layer:c.layer,layerIndex:c.layerIndex,productOverlay:t.type===E.ProductOverlay?!0:void 0,scaleX:1,scaleY:1,rotation:c.rotation,excludeFromExport:t.data.excludeFromPrint,preserveAspectRatio:"none"};a.push(new G(u,d))})}catch(c){console.error(c)}else{const c=await et(r,!0),d=u=>{const A=/<svg.*?<\/svg>/s,h=u.match(A)||[],g=h?.length>0?h[0]:"",f=ct().parseFromString(g,"image/svg+xml").firstElementChild;if(!f)throw new It("Failed to read SVG.");return Le(f),Et().serializeToString(f)};l.forEach(u=>{const A=n.find(g=>g.panelId===u.panelId);if(!A)throw new Y(u);const h={id:N(),src:r,asset_key:r,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===E.ProductOverlay?!0:void 0,excludeFromExport:t.data.excludeFromPrint};a.push(new G(h,A))})}return a},Bl=async(n,t,e,a)=>{const i=[],r=e.data,o=30,s=m=>m.vertical?"center":m.textAlign||"center",l=async()=>{const m=a.option;if(!m)return;const f=m.variants?.find(w=>w.id===r.fontVariantId)||await P.getDefaultVariant(m,a.overrideDefaultVariantId);if(!f||!f.asset)return;t[a.stepName]={selectedVariants:[f]};const y=f.asset.fileLink;if(y)return y},d=await(async()=>{const m=await l();if(!m)return;const f=await Ft(m);return{assetUrl:m,name:f.names.fullName.en}})(),u=(a.data.replaceableText?a.data.replaceableText.replace("{{}}",r.text):r.text)||"",A=Fe(u,{vertical:a.data.vertical,uppercase:a.data.uppercase}),h=async m=>{const f=m.colorOption;return f?(await P.getDefaultVariant(f))?.color:void 0},g=r.color||await h(a.data),p=a.data.regions;for(const m of p){const f=n.find(w=>w.panelId===m.panelId);if(!f)continue;const y={stepName:e.name,id:N(),align:s(a.data),curved:a.data.curved,fill:r.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[w,F]=Kt(a.data.size||o,d,m,[Fe(A,{vertical:a.data.vertical,uppercase:a.data.uppercase})],{size:a.data.size,minSize:a.data.minSize,maxSize:a.data.maxSize});i.push(new G({...y,fontSize:w,text:y.curved?y.text:(F||[]).join(`
1422
+ `)},f))}else i.push(new G(y,f))}return i},Pl=(n,t)=>n.conditions?n.conditions.every(e=>{const a=t[e.targetStepName];if(a&&a.selectedVariants){const i=a.selectedVariants;return e.requiredVariantSelections.some(r=>i.find(o=>o.id===r)!==void 0)}return!1}):!0,Ti=async(n,t,e,a)=>{const i=[],r={};for(const o of n){const s=t.steps.find(l=>l.stepName===o.name);if(s)switch(s.type){case E.DigitalContent:i.push(...await wl(e,o,s));break;case E.Frame:case E.Photo:i.push(...await yl(e,r,o,s));break;case E.Illustration:i.push(...await Sl(e,r,o,s));break;case E.Module:i.push(...await vl(e,o,s));break;case E.Picture:i.push(...await El(e,r,o,s));break;case E.Shape:i.push(...await bl(e,r,o,s));break;case E.Text:i.push(...await Bl(e,r,o,s));break}}for(const o of t.steps)o.type!==E.SilentIllustration&&o.type!==E.ProductOverlay||Pl(o,r)&&i.push(...await Il(e,o,a));return i};class xl{constructor(t){this.handleCompleteRender=null;const e=new Map;t.forEach(a=>e.set(a.id,new kl(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 Fl=()=>new Promise((n,t)=>{try{const a=yt().getContext("webgl2");n(!!a)}catch{n(!1)}}),Dl=Fl();class kl{constructor(t,e,a,i,r){this.hasSetStaticContext=!1,this.interactiveDirty=!1,this.staticCtxDirty=!1,this.lastRequestedRenderArguments=void 0,this.lastCompletedStaticRender=void 0,this.renderQueue=new Va(2),this.id=t,this.name=e,this.service=a,this.panelSize=i,this.getWorkflowManager=r}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=Pt(t);this.lastRequestedRenderArguments=e;const a=this.getStaticContext();if(!a){this.markLastCompletedStaticRender(),this.setStaticContextDirty(!1);return}this.renderQueue.enqueue(new Ml(this.getID(),a,await Dl,()=>{this.markLastCompletedStaticRender(),this.setStaticContextDirty(!0)},e,this.getWorkflowManager))}}class Ml extends Ua{constructor(t,e,a,i,r,o){super(),this.layoutId=t,this.ctx=e,this.nonPOTSupport=a,this.onRender=i,this.layouts=r,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,i=e/t.height,r=Math.min(a,i);return r>1?t:{width:t.width*r,height:t.height*r}}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,i=t.layoutState.layout.height,r=a===1||i===1?{width:1,height:1}:this.getDynamicTextureResolution(),o=r.width,s=r.height;let l,c;if(this.nonPOTSupport){const g=o/s;a/i<g?(l=o,c=i*(o/a)):(l=a*(s/i),c=s);const m=this.resizeFit({width:l,height:c});l=m.width,c=m.height}else l=r.width,c=r.height;const d=this.getWorkflowManager?.()?.getTemplatingContext(),u=He(t.layoutState.layout,e,{renderingConfiguration:{purpose:Ot.ThreeD,templatingContext:d}}),A=Kn(u),h=await Ma.Pith.from(this.ctx,A,{anonymousCrossOrigin:!0,ignoreDimensions:!this.nonPOTSupport,ignoreAnimation:!0,ignoreClear:!0,ignoreMouse:!0,enableRedraw:!1,createCanvas:yt,createImage:le,DOMParser:Ra(),fetch});h.resize(l,c),await h.render(),this.onRender()}}const Tl=(n,t)=>{const e=[];return n.forEach(a=>{const i=t.steps.find(r=>r.stepName===a.stepName);i?.type===E.Text&&a.stepAspectType==="Text"&&e.push({name:i.stepName,data:{text:a.value}})}),e},Nl=async(n,t,e,a)=>{let i={serializableWorkflow:{steps:[]},layouts:{}};i=new U(e.map(l=>new ja(l))).apply(i);const o=await Ti(n,t,e,a);return new U(o).apply(i)},We=C.gql`
1423
+ fragment GlobalPropertyStateAspectFields on GlobalPropertyStateAspect {
1424
+ name
1425
+ value
1426
+ type
1427
+ channel
1428
+ storage {
1429
+ ... on GlobalPropertyStateColorOptionStorage {
1430
+ customColor
1431
+ }
1432
+ ... on GlobalPropertyStateFileUploadStorage {
1433
+ originalAssetKey
1434
+ backgroundRemovedAssetKey
1435
+ useOriginalAsset
1436
+ colors {
1437
+ key
1438
+ browserValue
1439
+ pmsValue
1440
+ }
1441
+ }
1442
+ }
1443
+ }
1444
+ `,Ql=C.gql`
1445
+ ${We}
1446
+ mutation CreateGlobalPropertyState($bundleId: String!) {
1447
+ globalPropertyStateCreate(bundleId: $bundleId) {
1448
+ id
1449
+ aspects {
1450
+ ...GlobalPropertyStateAspectFields
1451
+ }
1452
+ }
1453
+ }
1454
+ `,Ol=C.gql`
1455
+ ${We}
1456
+ mutation UpdateGlobalPropertyState($id: String!, $aspects: [GlobalPropertyStateAspectInput]!) {
1457
+ globalPropertyStateUpdate(id: $id, aspects: $aspects) {
1458
+ id
1459
+ aspects {
1460
+ ...GlobalPropertyStateAspectFields
1461
+ }
1462
+ }
1463
+ }
1464
+ `,Rl=C.gql`
1465
+ ${We}
1466
+ query GetGlobalPropertyState($bundleId: String!) {
1467
+ globalPropertyState(bundleId: $bundleId) {
1468
+ id
1469
+ aspects {
1470
+ ...GlobalPropertyStateAspectFields
1471
+ }
1472
+ }
1473
+ }
1474
+ `,$l=async n=>(await S.getShadowGraphqlClient().query({query:Rl,fetchPolicy:"cache-first",errorPolicy:"all",variables:{bundleId:n}})).data.globalPropertyState,Ul=n=>C.gql`
1475
+ ${Ge}
1476
+ fragment ProductFields on Product {
1477
+ id
1478
+ basePrice
1479
+ enabled
1480
+ imageUrl
1481
+ minimumOrderQuantity
1482
+ integrationProducts {
1483
+ id
1484
+ externalProductId
1485
+ externalVariantId
1486
+ additionalExternalProductId
1487
+ additionalExternalVariantId
1488
+ additionalIntegrationProduct {
1489
+ ...AdditionalIntegrationProductFields
1490
+ }
1491
+ integration {
1492
+ id
1493
+ enabled
1494
+ externalIntegrationId
1495
+ type
1496
+ isCurrent
1497
+ }
1498
+ }
1499
+ modelUrl
1500
+ name
1501
+ description
1502
+ overlayImageUrl
1503
+ preloadImageUrl
1504
+ sku
1505
+ skuCode
1506
+ workflows${n?"(filters: $productWorkflowFilters)":""} {
1507
+ id
1508
+ index
1509
+ friendlyName
1510
+ isPresent
1511
+ workflowName
1512
+ imageUrl
1513
+ }
1514
+ productTags {
1515
+ id
1516
+ name
1517
+ }
1518
+ }
1519
+ `,Xa=n=>C.gql`
1520
+ ${Ul(n)}
1521
+ fragment ProductCollectionProductFields on ProductCollectionProduct {
1522
+ id
1523
+ productId
1524
+ workflowId
1525
+ product {
1526
+ ...ProductFields
1527
+ }
1528
+ }
1529
+ `,Ye=(n,t=!1)=>C.gql`
1530
+ ${n?Xa(t):""}
1531
+ fragment ProductCollectionFields on ProductCollection {
1532
+ id
1533
+ name
1534
+ description
1535
+ dispatchStartDate
1536
+ dispatchEndDate
1537
+ productCollectionCustomers {
1538
+ id
1539
+ customer {
1540
+ id
1541
+ }
1542
+ }
1543
+ image {
1544
+ key
1545
+ name
1546
+ fileLink
1547
+ }
1548
+ globalPropertyConfiguration {
1549
+ id
1550
+ aspects {
1551
+ name
1552
+ type
1553
+ title
1554
+ description
1555
+ entityId
1556
+ mandatory
1557
+ conditions {
1558
+ targetAspectName
1559
+ action
1560
+ requiredVariantSelections
1561
+ }
1562
+ conditionMode
1563
+ data {
1564
+ fileUpload {
1565
+ colorPickerEnabled
1566
+ pmsPickerEnabled
1567
+ colorOptionId
1568
+ }
1569
+ text {
1570
+ templatingEnabled
1571
+ }
1572
+ }
1573
+ }
1574
+ }
1575
+ ${n?"productCollectionProducts { ...ProductCollectionProductFields }":""}
1576
+ }
1577
+ `,Ni=C.gql`
1578
+ fragment BundleBaseFields on Bundle {
1579
+ id
1580
+ dispatchDate
1581
+ purchaseOrder
1582
+ createdAt
1583
+ updatedAt
1584
+ name
1585
+ completed
1586
+ template
1587
+ templateStatus
1588
+ transactionsCount
1589
+ productsCount
1590
+ totalPriceSubunits
1591
+ quoteId
1592
+ orderId
1593
+ externalOrderId
1594
+ internalOrderId
1595
+ workflowViewerLink
1596
+ workflowViewerAmendLink
1597
+ }
1598
+ `,Vl=n=>C.gql`
1599
+ ${We}
1600
+ ${Ye(n)}
1601
+ ${Ni}
1602
+ query GetBundle($id: String!) {
1603
+ globalPropertyState(bundleId: $id) {
1604
+ id
1605
+ aspects {
1606
+ ...GlobalPropertyStateAspectFields
1607
+ }
1608
+ }
1609
+ bundles(ids: [$id]) {
1610
+ ...BundleBaseFields
1611
+ bundleStateData
1612
+ metadata {
1613
+ key
1614
+ value
1615
+ }
1616
+ partner {
1617
+ id
1618
+ }
1619
+ productCollection {
1620
+ ...ProductCollectionFields
1621
+ }
1622
+ transactionIds
1623
+ bundleShareActions {
1624
+ id
1625
+ title
1626
+ type
1627
+ stakeholderType
1628
+ precedence
1629
+ url
1630
+ }
1631
+ }
1632
+ }
1633
+ `,bn=C.gql`
1634
+ query GetBundleStakeholders($id: String!) {
1635
+ bundles(ids: [$id]) {
1636
+ id
1637
+ dispatchDate
1638
+ purchaseOrder
1639
+ completed
1640
+ workflowViewerLink
1641
+ workflowViewerAmendLink
1642
+ currentBundleStakeholder {
1643
+ id
1644
+ authorizationStatus
1645
+ authorizationDate
1646
+ authorizationNote
1647
+ customer {
1648
+ id
1649
+ emailAddress
1650
+ firstName
1651
+ lastName
1652
+ phoneNumber
1653
+ partner {
1654
+ id
1655
+ }
1656
+ }
1657
+ type
1658
+ }
1659
+ bundleStakeholders {
1660
+ id
1661
+ authorizationStatus
1662
+ authorizationDate
1663
+ authorizationNote
1664
+ customer {
1665
+ id
1666
+ emailAddress
1667
+ firstName
1668
+ lastName
1669
+ phoneNumber
1670
+ partner {
1671
+ id
1672
+ }
1673
+ }
1674
+ type
1675
+ }
1676
+ }
1677
+ }
1678
+ `,Ll=C.gql`
1679
+ query GetBundlesForCustomer($id: String!) {
1680
+ customers(ids: [$id]) {
1681
+ bundleStakeholders {
1682
+ id
1683
+ authorizationStatus
1684
+ authorizationDate
1685
+ authorizationNote
1686
+ type
1687
+ bundle {
1688
+ id
1689
+ dispatchDate
1690
+ purchaseOrder
1691
+ completed
1692
+ workflowViewerLink
1693
+ workflowViewerAmendLink
1694
+ name
1695
+ createdAt
1696
+ metadata {
1697
+ key
1698
+ value
1699
+ }
1700
+ partner {
1701
+ id
1702
+ }
1703
+ }
1704
+ }
1705
+ }
1706
+ }
1707
+ `,ql=C.gql`
1708
+ ${Xa(!1)}
1709
+ query GetProductCollectionProducts($id: String!, $productIds: [String!]) {
1710
+ productCollections(ids: [$id], productIds: $productIds) {
1711
+ id
1712
+ productCollectionProducts {
1713
+ ...ProductCollectionProductFields
1714
+ }
1715
+ }
1716
+ }
1717
+ `,zl=C.gql`
1718
+ query GetProductCollectionForFilteredProducts(
1719
+ $id: String!
1720
+ $filters: ProductCollectionProductFilterInput
1721
+ $tags: ProductCollectionProductTagFilterInput
1722
+ $sortKey: ProductCollectionProductSortKey
1723
+ $sortDescending: Boolean
1724
+ ) {
1725
+ productCollections(ids: [$id]) {
1726
+ id
1727
+ productCollectionProducts(
1728
+ filters: $filters
1729
+ tags: $tags
1730
+ sortKey: $sortKey
1731
+ sortDescending: $sortDescending
1732
+ ) {
1733
+ id
1734
+ product {
1735
+ id
1736
+ }
1737
+ }
1738
+ }
1739
+ }
1740
+ `,Gl=C.gql`
1741
+ ${Xa(!0)}
1742
+ query GetProductCollectionForProductsFeed(
1743
+ $id: String!
1744
+ $limit: Int
1745
+ $offset: Int
1746
+ $productFilters: ProductCollectionProductFilterInput
1747
+ $productWorkflowFilters: MetafieldFilterListInput
1748
+ $tags: ProductCollectionProductTagFilterInput
1749
+ $sortKey: ProductCollectionProductSortKey
1750
+ $sortDescending: Boolean
1751
+ $quickSearch: String
1752
+ ) {
1753
+ productCollections(ids: [$id]) {
1754
+ id
1755
+ productCollectionProductsFeed(
1756
+ filters: $productFilters
1757
+ workflowFilters: $productWorkflowFilters
1758
+ tags: $tags
1759
+ limit: $limit
1760
+ offset: $offset
1761
+ sortKey: $sortKey
1762
+ sortDescending: $sortDescending
1763
+ quickSearch: $quickSearch
1764
+ ) {
1765
+ items {
1766
+ ...ProductCollectionProductFields
1767
+ }
1768
+ total
1769
+ }
1770
+ }
1771
+ }
1772
+ `,jl=n=>C.gql`
1773
+ ${Ye(n)}
1774
+ mutation CreateBundle(
1775
+ $collectionId: String
1776
+ $initialMetadata: [MetadataInput!]
1777
+ $marketplaceThemeInstallId: String
1778
+ $marketplaceThemeInstallConfigurationId: String
1779
+ ) {
1780
+ bundleCreate(
1781
+ collectionId: $collectionId
1782
+ metadata: $initialMetadata
1783
+ marketplaceThemeInstallId: $marketplaceThemeInstallId
1784
+ marketplaceThemeInstallConfigurationId: $marketplaceThemeInstallConfigurationId
1785
+ ) {
1786
+ id
1787
+ bundleOwnerId
1788
+ metadata {
1789
+ key
1790
+ value
1791
+ }
1792
+ name
1793
+ partner {
1794
+ id
1795
+ }
1796
+ productCollection {
1797
+ ...ProductCollectionFields
1798
+ }
1799
+ }
1800
+ }
1801
+ `,Hl=()=>C.gql`
1802
+ mutation DuplicateBundle(
1803
+ $id: String!
1804
+ $template: Boolean
1805
+ $marketplaceThemeInstallId: String
1806
+ $marketplaceThemeInstallConfigurationId: String
1807
+ $duplicateTransactions: Boolean
1808
+ ) {
1809
+ bundleDuplicate(
1810
+ id: $id
1811
+ template: $template
1812
+ marketplaceThemeInstallId: $marketplaceThemeInstallId
1813
+ marketplaceThemeInstallConfigurationId: $marketplaceThemeInstallConfigurationId
1814
+ duplicateTransactions: $duplicateTransactions
1815
+ ) {
1816
+ id
1817
+ bundleOwnerId
1818
+ partner {
1819
+ id
1820
+ }
1821
+ }
1822
+ }
1823
+ `,da=C.gql`
1824
+ mutation UpdateBundle(
1825
+ $id: String!
1826
+ $name: String
1827
+ $metadata: [MetadataInput!]
1828
+ $bundleStateData: String
1829
+ $dispatchDate: String
1830
+ $purchaseOrder: String
1831
+ ) {
1832
+ bundleUpdate(
1833
+ id: $id
1834
+ name: $name
1835
+ metadata: $metadata
1836
+ bundleStateData: $bundleStateData
1837
+ dispatchDate: $dispatchDate
1838
+ purchaseOrder: $purchaseOrder
1839
+ ) {
1840
+ id
1841
+ }
1842
+ }
1843
+ `,Wl=C.gql`
1844
+ mutation BundleAddTransaction($id: String!, $transactionId: String!) {
1845
+ bundleAddTransaction(id: $id, transactionId: $transactionId) {
1846
+ id
1847
+ }
1848
+ }
1849
+ `,Yl=C.gql`
1850
+ mutation BundleAddTransactions($id: String!, $transactionIds: [String!]!, $transactionOwnerIds: [String!]) {
1851
+ bundleAddTransactions(id: $id, transactionIds: $transactionIds, transactionOwnerIds: $transactionOwnerIds) {
1852
+ id
1853
+ }
1854
+ }
1855
+ `,Jl=C.gql`
1856
+ mutation BundleRemoveTransaction(
1857
+ $id: String!
1858
+ $transactionId: String!
1859
+ $name: String
1860
+ $metadata: [MetadataInput!]
1861
+ $bundleStateData: String
1862
+ ) {
1863
+ bundleRemoveTransaction(id: $id, transactionId: $transactionId) {
1864
+ id
1865
+ }
1866
+ bundleUpdate(id: $id, name: $name, metadata: $metadata, bundleStateData: $bundleStateData) {
1867
+ id
1868
+ }
1869
+ }
1870
+ `,Kl=C.gql`
1871
+ mutation BundleRemoveTransactions(
1872
+ $id: String!
1873
+ $transactionIds: [String!]!
1874
+ $name: String
1875
+ $metadata: [MetadataInput!]
1876
+ $bundleStateData: String
1877
+ ) {
1878
+ bundleRemoveTransactions(id: $id, transactionIds: $transactionIds) {
1879
+ id
1880
+ }
1881
+ bundleUpdate(id: $id, name: $name, metadata: $metadata, bundleStateData: $bundleStateData) {
1882
+ id
1883
+ }
1884
+ }
1885
+ `,_l=C.gql`
1886
+ mutation BundleAddStakeholder($id: String!, $details: CustomerDetailsInput!, $type: String!) {
1887
+ bundleAddStakeholder(id: $id, details: $details, type: $type) {
1888
+ id
1889
+ bundleStakeholders {
1890
+ id
1891
+ customer {
1892
+ id
1893
+ emailAddress
1894
+ firstName
1895
+ lastName
1896
+ phoneNumber
1897
+ partner {
1898
+ id
1899
+ }
1900
+ }
1901
+ type
1902
+ }
1903
+ }
1904
+ }
1905
+ `,Xl=C.gql`
1906
+ mutation BundleAddStakeholder($id: String!, $emailAddress: String!) {
1907
+ bundleRemoveStakeholder(id: $id, emailAddress: $emailAddress) {
1908
+ id
1909
+ }
1910
+ }
1911
+ `,Zl=C.gql`
1912
+ mutation BundleUpdateStakeholders($id: String!, $input: [BundleStakeholderInput!]!) {
1913
+ bundleUpdateStakeholders(id: $id, input: $input) {
1914
+ id
1915
+ bundleStakeholders {
1916
+ id
1917
+ customer {
1918
+ id
1919
+ emailAddress
1920
+ firstName
1921
+ lastName
1922
+ phoneNumber
1923
+ partner {
1924
+ id
1925
+ }
1926
+ }
1927
+ type
1928
+ }
1929
+ }
1930
+ }
1931
+ `,tc=C.gql`
1932
+ mutation BundleUpdateTransactionOrder($id: String!, $transactionIds: [String!]!) {
1933
+ bundleUpdateTransactionOrder(id: $id, transactionIds: $transactionIds) {
1934
+ id
1935
+ }
1936
+ }
1937
+ `,ec=n=>C.gql`
1938
+ ${Ye(n)}
1939
+ mutation BundleAssignProductCollection($id: String!, $productCollectionId: String!) {
1940
+ bundleAssignProductCollection(id: $id, collectionId: $productCollectionId) {
1941
+ id
1942
+ productCollection {
1943
+ ...ProductCollectionFields
1944
+ }
1945
+ }
1946
+ }
1947
+ `,ac=C.gql`
1948
+ mutation AssignGlobalPropertyConfiguration($bundleId: String!, $globalPropertyConfigurationId: String!) {
1949
+ bundleUpdate(id: $bundleId, globalPropertyConfigurationId: $globalPropertyConfigurationId) {
1950
+ id
1951
+ }
1952
+ }
1953
+ `,nc=n=>C.gql`
1954
+ ${Ni}
1955
+ query CustomerBundlesFeed($id: String!, $limit: Int!, $offset: Int!, $template: Boolean, $templateStatus: BundleTemplateStatus, $ordered: Boolean) {
1956
+ customerBundlesFeed(id: $id, limit: $limit, offset: $offset, template: $template, templateStatus: $templateStatus, ordered: $ordered) {
1957
+ items {
1958
+ ...BundleBaseFields
1959
+ productCollection {
1960
+ id
1961
+ name
1962
+ description
1963
+ dispatchStartDate
1964
+ dispatchEndDate
1965
+ image {
1966
+ key
1967
+ name
1968
+ fileLink
1969
+ }
1970
+ globalPropertyConfiguration {
1971
+ id
1972
+ }
1973
+ }
1974
+ ${n?"metadata { key, value }":""}
1975
+ }
1976
+ total
1977
+ }
1978
+ }
1979
+ `,ic=C.gql`
1980
+ mutation FinalizeUpdateBundle($bundleId: String!) {
1981
+ bundleFinalizeUpdate(bundleId: $bundleId)
1982
+ }
1983
+ `,rc=C.gql`
1984
+ mutation ApproveBundle($id: String!, $note: String, $stakeholderId: String) {
1985
+ bundleApprove(id: $id, note: $note, stakeholderId: $stakeholderId)
1986
+ }
1987
+ `,oc=C.gql`
1988
+ mutation RejectBundle($id: String!, $note: String, $stakeholderId: String) {
1989
+ bundleReject(id: $id, note: $note, stakeholderId: $stakeholderId)
1990
+ }
1991
+ `,sc=C.gql`
1992
+ mutation ApproveTransaction($id: String!, $note: String) {
1993
+ transactionApprove(id: $id, note: $note)
1994
+ }
1995
+ `,lc=C.gql`
1996
+ mutation RejectTransaction($id: String!, $note: String) {
1997
+ transactionReject(id: $id, note: $note)
1998
+ }
1999
+ `,cc=C.gql`
2000
+ mutation CreateRecipient(
2001
+ $firstName: String
2002
+ $lastName: String
2003
+ $address: String
2004
+ $suburb: String
2005
+ $state: String
2006
+ $email: String
2007
+ $postalCode: String
2008
+ $country: String
2009
+ $mobile: String
2010
+ $company: String
2011
+ $apartment: String
2012
+ $customField1: String
2013
+ $customField2: String
2014
+ $customField3: String
2015
+ $customField4: String
2016
+ $customField5: String
2017
+ $conversionConfigurationId: String
2018
+ ) {
2019
+ recipientCreate(
2020
+ firstName: $firstName
2021
+ lastName: $lastName
2022
+ address: $address
2023
+ suburb: $suburb
2024
+ state: $state
2025
+ email: $email
2026
+ postalCode: $postalCode
2027
+ country: $country
2028
+ mobile: $mobile
2029
+ company: $company
2030
+ apartment: $apartment
2031
+ customField1: $customField1
2032
+ customField2: $customField2
2033
+ customField3: $customField3
2034
+ customField4: $customField4
2035
+ customField5: $customField5
2036
+ conversionConfigurationId: $conversionConfigurationId
2037
+ ) {
2038
+ id
2039
+ }
2040
+ }
2041
+ `,dc=C.gql`
2042
+ mutation UpdateRecipient(
2043
+ $id: String!
2044
+ $firstName: String
2045
+ $lastName: String
2046
+ $address: String
2047
+ $suburb: String
2048
+ $state: String
2049
+ $email: String
2050
+ $postalCode: String
2051
+ $country: String
2052
+ $mobile: String
2053
+ $company: String
2054
+ $apartment: String
2055
+ $customField1: String
2056
+ $customField2: String
2057
+ $customField3: String
2058
+ $customField4: String
2059
+ $customField5: String
2060
+ $conversionConfigurationId: String
2061
+ $prevalidated: Boolean
2062
+ ) {
2063
+ recipientUpdate(
2064
+ id: $id
2065
+ firstName: $firstName
2066
+ lastName: $lastName
2067
+ address: $address
2068
+ suburb: $suburb
2069
+ state: $state
2070
+ email: $email
2071
+ postalCode: $postalCode
2072
+ country: $country
2073
+ mobile: $mobile
2074
+ company: $company
2075
+ apartment: $apartment
2076
+ customField1: $customField1
2077
+ customField2: $customField2
2078
+ customField3: $customField3
2079
+ customField4: $customField4
2080
+ customField5: $customField5
2081
+ conversionConfigurationId: $conversionConfigurationId
2082
+ prevalidated: $prevalidated
2083
+ ) {
2084
+ id
2085
+ }
2086
+ }
2087
+ `,uc=C.gql`
2088
+ mutation AtttachRecipient($id: String!, $recipientId: String!) {
2089
+ transactionAttachRecipient(id: $id, recipientId: $recipientId) {
2090
+ id
2091
+ }
2092
+ }
2093
+ `,Ac=C.gql`
2094
+ mutation DeleteBundle($id: String!) {
2095
+ bundleDelete(id: $id)
2096
+ }
2097
+ `,hc=C.gql`
2098
+ query FindBundleForTransactions($ids: [String!]!) {
2099
+ transactions(ids: $ids) {
2100
+ id
2101
+ bundle {
2102
+ id
2103
+ }
2104
+ }
2105
+ }
2106
+ `,gc=(n,t)=>t&&typeof t=="object"&&!Array.isArray(t)?Object.keys(t).sort().reduce((e,a)=>(e[a]=t[a],e),{}):t,mc=n=>{for(const t of Object.values(n.layouts).map(e=>e.elements).flat())t.type==="illustration"&&(delete t.cachedObjectURL,t.src&&delete t.svg),t.type==="frame"&&delete t.pattern?.svg;return Qi(n,"__typename"),n},Qi=(n,t)=>{if(!(typeof n!="object"||n===null))for(const e in n)e===t?delete n[e]:Qi(n[e],t)};var he=(n=>(n.Error="Error",n.Warning="Warning",n.Info="Info",n))(he||{});const pc=1e3;class In extends Ua{constructor(t){super(),this.createdAt=new Date,this.update=t}async execute(){await this.update(),await new Promise(t=>{window.setTimeout(()=>{t()},pc)})}}const fc=n=>n.sort((t,e)=>t.index-e.index).map(t=>({id:N(),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})),Cc=(n,t)=>{const e=n.workflowState,a=e?JSON.parse(e):void 0;return a?Object.values(a.layouts).map(i=>i.layout):fc(t.panels)},Xt=class Xt{constructor(t,e,a,i,r,o=!1,s,l=!1,c=!1,d=!1){this.workflowStatePromiseQueue=new Va(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=Cc(this.experience.getTransaction(),A):this.layouts=[],this.commandContext.initialize(this.layouts,this.reloadedState),this.renderableContextService=new xl(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 this.initialized=!1,new Error(g)}),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=i,this.reloadedState=r,this.readOnly=o,this.singleVariantsRenderable=c,this.commandContext=new Si,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 i=a.uniqueIdentifier??a.title??"";a.type===_t.FirstName?e[i]=t?.firstName:a.type===_t.LastName?e[i]=t?.lastName:a.type===_t.Custom&&(a.customFieldIndex===1?e[i]=t?.customField1:a.customFieldIndex===2?e[i]=t?.customField2:a.customFieldIndex===3?e[i]=t?.customField3:a.customFieldIndex===4?e[i]=t?.customField4:a.customFieldIndex===5&&(e[i]=t?.customField5),a.option&&(e[i]=a.option.variants?.find(r=>r.id===e[i])?.name))}),e}async updateRecipient(t,e,a,i,r,o,s,l,c,d,u,A,h,g,p,m,f,y){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:i??w.recipient.suburb,state:r??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(Ne.RecipientChanged),await this.graphQlClient().mutate({mutation:dc,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:i||w.recipient.suburb,state:r||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,prevalidated:y}});else{const F=await this.graphQlClient().mutate({mutation:cc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{firstName:t,lastName:e,address:a,suburb:i,state:r,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:F?.data?.recipientCreate?.id,firstName:t,lastName:e,address:a,suburb:i,state:r,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(Ne.RecipientChanged),await this.graphQlClient().mutate({mutation:uc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.experience.getTransaction().id,recipientId:F.data?.recipientCreate?.id},context:{transactionOwnerId:this.experience.getTransaction().transactionOwnerId}})}await this.fetchConversionConfiguration(),this.recipientCallbacks.forEach(F=>F(this.experience.getTransaction().recipient))}async fetchConversionConfiguration(){const t=this.experience.getTransaction().recipient;if(t?.conversionConfigurationId&&!this.recipientConversionConfiguration){const e=Xt.configurationPromiseMap.get(t.conversionConfigurationId);if(e)this.recipientConversionConfiguration=await e;else{const i=(async()=>(await this.graphQlClient().query({query:zo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t.conversionConfigurationId}})).data.conversionConfiguration)();Xt.configurationPromiseMap.set(t.conversionConfigurationId,i),this.recipientConversionConfiguration=await i}}}async initializeDefaultWorkflowState(t){const e=()=>{const d=t.finalizeStepConfig;if(!d)return;const u=d.lookAtAnimation,A=d.modelAnimation;u&&this.previewService?.executeCameraAnimation(u),A&&this.modelContainer?.executeAnimation(A)};this.reloadedState&&this.reloadedState.serializableWorkflow.steps.forEach(d=>{this.storage[d.stepName]=d.storage||{}});const a=this.getInitialOptionIds(this.reloadedState?.serializableWorkflow?.steps.reduce((d,u)=>(u.selectedVariants?.length&&(d[u.stepName]={selectedVariants:u.selectedVariants.map(A=>({id:A.id}))}),d),{})),i=P.getOptions(Array.from(a)),r=this.fetchConversionConfiguration();await Promise.all([i,r]),this.allScenes=fn(t);const s=dt(this.allScenes,this.stepSelections).map(d=>d.silentSteps).flat(),{stepElements:l,commands:c}=await this.stepElementsForIntroducedSilentSteps(s,!!this.reloadedState);this.commandContext.apply(new U(c),!0),this.stepElements={...this.stepElements,...l},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}getInitialOptionIds(t){const e=new Set,a=this.experience.getWorkflow();if(!a)return e;const i=fn(a),r={...t};let o=-1;for(;;){const c=dt(i,r).flatMap(d=>d.renderableSteps);if(c.length===o)break;o=c.length;for(const d of c){if(r[d.stepName])continue;const u=d.option?.defaultVariant?.id;u&&(r[d.stepName]={selectedVariants:[{id:u}]})}}return dt(i,r).flatMap(l=>l.renderableSteps).forEach(l=>{l.option?.id&&!l.option?.variants&&e.add(l.option.id)}),e}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=N();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 dt(this.allScenes,this.stepSelections).flatMap(r=>r.renderableSteps).filter(r=>r.mandatory).filter(r=>!this.mandatorySteps[r.stepName]).map(r=>r.stepName)}setStepError(t,e,a){let i=!1;if(!this.validationErrors.steps.has(t)&&a)i=!0,this.validationErrors.steps.set(t,new Map([[e,a]]));else if(this.validationErrors.steps.has(t)){const r=this.validationErrors.steps.get(t);a&&a!==r.get(e)?(i=!0,r.set(e,a)):a||(i=!0,r.delete(e),r.size===0&&this.validationErrors.steps.delete(t))}i&&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 i=t.loadModel({model:a.modelUrl,contextService:this.getLayoutPreviewService()},{refocusCamera:e});this.setModelContainer(i),dt(this.allScenes,this.stepSelections).filter(s=>s).map(s=>s.renderableSteps).flat().filter(s=>s.type===E.Model||s.type===E.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===E.Model){if(!this.modelContainer)throw new O("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 O("We should always have a model container when injecting a preview!");this.modelContainer.applyMaterialVariant(A,s.option.id,d)})}}),await i.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(!te(a,this.storage)){this.storage=a;const i=new Sn(this.constructSerializableWorkflow());this.commandContext.apply(i,!0),this.onStepSpecificStorageChange(t),this.onStorageChange()}}constructSerializableWorkflow(){const t=[];return this.allScenes.forEach(e=>{e.renderableSteps.forEach(a=>{const i={stepName:a.stepName};i.storage=this.storage[a.stepName],i.selectedVariants=this.stepSelections[a.stepName]?.selectedVariants?.map(r=>({id:r.id,priceModifier:r.priceModifier})),t.push(i)})}),{steps:t}}updateStateWithServer(){if(this.readOnly)return;const t=this.serialize();this.workflowStatePromiseQueue.enqueue(new In(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 In(async()=>{await this.updateTransaction({variables:{id:this.experience.getTransaction().id,workflowState:t}})}).execute()}serialize(){const t=this.getCommandContext().getState();if(!t)throw new O("Attempted to serialize state before it was initialized.");const e=Pt(t.transaction),a=mc(e);return JSON.stringify(a,gc,void 0)}async getStateHash(){const t=this.getCommandContext().getState(),a=Object.values(t?.transaction.layouts||{}).map(o=>o.modificationID??"").sort().join(""),r=new TextEncoder().encode(a);if(typeof window<"u"&&window.crypto&&window.crypto.subtle&&window.crypto.subtle.digest){const o=await window.crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(o)).map(c=>c.toString(16).padStart(2,"0")).join("")}try{return(await import("crypto")).createHash("sha256").update(a,"utf8").digest("hex")}catch{throw new Error("Unable to compute SHA-256 hash: no suitable crypto implementation available.")}}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,i)=>Object.keys(a).reduce((r,o)=>{const s=[...a[o]||[]];return i.forEach(l=>{const c=s.findIndex(d=>d.id===l.id);c>-1&&s.splice(c,1)}),r[o]=s,r},{});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===E.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 i=async(c,d,u)=>{if(c.type===E.SilentIllustration){const A=await new vn(c,d).trigger();return{step:c,results:A}}else if(c.type===E.ProductOverlay){const A=await new vn(c,d,u).trigger();return{step:c,results:A}}return Promise.reject("Unknown silent step. This is a bug")},r=t.filter(c=>!this.stepInitialised[c.stepName]),o={stepElements:{},commands:[]},s=[];for(const c of r)this.markStepsAsInitialised([c.stepName]),e||s.push(i(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:Jo,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:sc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.experience.getTransaction().id,note:t}})}async rejectTransaction(t){await S.getShadowGraphqlClient().mutate({mutation:lc,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,i){const r=this.experience.getWorkflow();if(!r)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((v,I)=>v+I.selectedVariants.map(M=>M.priceModifier||0).reduce((M,R)=>M+R,0),0),r.steps.forEach(v=>{Bt(v,this.stepSelections)||(this.stepInitialised[v.stepName]=!1,delete this.stepMetadata[v.stepName],delete this.stepSelections[v.stepName],delete this.storage[v.stepName])});const s=this.allScenes,l=dt(s,o),c=dt(s,this.stepSelections),d=l.map(v=>v.silentSteps).flat(),A=c.map(v=>v.silentSteps).flat().filter(v=>!d.some(I=>I.stepName===v.stepName));d.forEach(v=>{Bt(v,this.stepSelections)||(this.stepInitialised[v.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=r.steps.find(v=>v.stepName===t);m?.type===E.Frame&&this.getWorkflowExperience().getStepById(m.stepName)?.frameService?.setTargetElements(a.map(I=>I.id));const f=h.map(v=>new Dt(v.id)),y=new Sn(this.constructSerializableWorkflow()),w=[...p,...f,y];w.length>0&&this.commandContext.apply(new U(w),!0),await this.ensureStepsAreLoaded(),this.onElementsChange();const F=this.getInvalidModelVariants(),b=this.modelContainer;if(b){const v=F.map(I=>b.applyModelVariant(I,{contextService:this.getLayoutPreviewService()},!1));await Promise.all(v)}await this.onSelectionChange(),m?.type!==E.Frame&&m?.type!==E.Text&&this.setMandatoryFulfilled(t,!0),i&&await i()}async ensureStepsAreLoaded(){const e=dt(this.allScenes,this.stepSelections).map(l=>l.renderableSteps),a=[],i=e.flat();for(const l of i)if(!this.stepInitialised[l.stepName])switch(this.stepInitialised[l.stepName]=!0,l.type){case E.DigitalContent:a.push(Ha.init(l,this,this.reloadedState));break;case E.Frame:a.push(pt.init(l,this,this.reloadedState));break;case E.Illustration:a.push(Jt.init(l,this,this.reloadedState));break;case E.Material:a.push(Wa.init(l,this,this.reloadedState));break;case E.Model:a.push(Ya.init(l,this,this.reloadedState));break;case E.Module:this.stepSpecificServices[l.stepName]={module:await Mi(l.data.module)},a.push(Ja.init(l,this,this.reloadedState));break;case E.Picture:a.push(Ka.init(l,this,this.reloadedState));break;case E.Question:a.push(_a.init(l,this,this.reloadedState));break;case E.Shape:a.push(Tt.init(l,this,this.reloadedState));break;case E.Text:a.push(j.init(l,this,this.reloadedState));break}const r=(await Promise.allSettled(a)).map(l=>{if(l.status==="rejected")throw new Error(`Step initialization failed: ${l.reason}`);return l.value}),o=r.flatMap(l=>l?.command?[l.command]:[]),s=r.flatMap(l=>l?.followup?[l.followup]:[]);o&&o.length>0&&this.commandContext.apply(new U(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 ds(this.allScenes,this.stepSelections,this.singleVariantsRenderable)}};Xt.configurationPromiseMap=new Map;let Pa=Xt;class nt{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 Zt=class Zt{constructor(t,e,a){this.manager=t,this.step=e,this.tags=a}setUpdateState(t){Zt.updateState.set(`${this.step.stepName}-${this.manager.getWorkflowExperience().getTransaction().id}`,t)}getUpdateState(){return!!Zt.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 nt(a)}async getAvailableVariants(){return(await this.getAllVariants()).filter(e=>e.isEnabled())||[]}async getAllVariants(){if(!this.step.option?.id)return[];if(this.step.option.variants)return(this.step.option.variants||[]).map(e=>new nt(e))||[];const t=await P.getOption(this.step.option?.id);if(!t)throw new Error("Option not found, cannot fetch variants.");return(t.variants||[]).map(e=>new nt(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(),i=this.step.data.modelAnimation,r=this.step.data.lookAtAnimation;e?r&&e.executeCameraAnimation(r):console.warn("No preview service available, cannot execute camera animations."),a?i&&a.executeAnimation(i,t):console.warn("No model container available, cannot execute model animations.")}};Zt.updateState=new Map;let Z=Zt;class Oi extends Z{constructor(t,e,a){super(t,e,a)}async selectVariant(t){if(!this.getUpdateState()&&this.getCurrentVariant()!==t)return Jt.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=V(t[0].id,this.manager.getAllLayoutData()).colors,r=this.getCurrentVariant()?.getAssetResource()?.assetConfiguration,o=r?.defaultColorVariants||[];if(o.length!==0){const s={};return o.forEach(l=>{const c=r.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 i=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?i.set(c,{browserValue:e,pmsValue:a}):i.set(c,e)}}):a?i.set(t,{browserValue:e,pmsValue:a}):i.set(t,e),Jt.changeColors(this.step,this.manager.getRegionElements(this.step.stepName),this.manager,i)}async getColorOption(){return await P.ensureFullOption(this.step.data.colorOption)}getAvailableColors(){return this.step.data.colorPickerEnabled?Jt.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}isPMSPickerEnabled(){return this.step.data.pmsPickerEnabled??!1}isVariantSearchEnabled(){return this.step.data.enableVariantSearch??!1}}class Ri extends Z{constructor(t,e,a){super(t,e,a)}selectVariant(t){return Wa.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class $i extends Z{constructor(t,e,a){super(t,e,a)}selectVariant(t){return Ya.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}}class Ui extends Z{constructor(t,e,a){super(t,e,a)}selectVariant(t){return Ka.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}isVariantSearchEnabled(){return this.step.data.enableVariantSearch??!1}}class Vi extends Z{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 _a.selectVariant(this.step,t.getId(),this.manager)}getDisplayType(){return this.step.data.displayType||this.step.option?.displayType}}class Li extends Z{constructor(t,e,a){super(t,e,a)}selectVariant(t){const e=t.getResource();return Tt.selectVariant(this.step,{fill:e.color,stroke:e.color,variant:e},this.manager.getRegionElements(this.step.stepName)||[],this.manager)}setColor(t){return Tt.selectVariant(this.step,t,this.manager.getRegionElements(this.step.stepName)||[],this.manager)}getColors(){return Tt.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()}`),Tt.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 qi extends Z{constructor(t,e,a){super(t,e,a)}async selectVariant(t){await j.selectVariant(this.step,t.getResource(),this.manager,e=>{if(e)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:e,messageType:he.Error,stepID:this.step.stepName}]);else{const a=this.manager.getInformationResults().filter(i=>i.stepID!==this.step.stepName);this.manager.setInformationResults(a)}},()=>{})}async getAvailableFillColors(){return this.step.data.colorPickerEnabled?j.availableFillColors(this.step):[]}async setFillColor(t){const e=this.manager.getRegionElements(this.step.stepName);await j.changeFillColor(this.step,t,e,this.manager)}getFillColor(){return this.manager.getStepStorage(this.step.stepName)?.color||"#000000"}getAvailableFillImages(){return j.availableFillImages(this.step)}async setFillImage(t){const e=this.manager.getRegionElements(this.step.stepName);await j.changeFillImage(this.step,t,e,this.manager)}getFillImage(){return this.manager.getStepStorage(this.step.stepName)?.fillImage}getAlignment(){return j.findLayoutElements(this.manager,this.step)?.[0].align}setAlignment(t){const e=this.manager.getRegionElements(this.step.stepName);j.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,i=t?a:this.step.data.defaultText;return this.manager.updateStorage(this.step.stepName,{customiseAllText:t,text:i,defaultCleared:!1}),this.setText(i)}setText(t){const e={input:t,helperData:{}},a=j.findLayoutElements(this.manager,this.step),i=j.filterUnsupportedCharacters(t,a[0]?.fontData),r=Nt(i,this.manager).length,o=!!this.step.data&&!!this.step.data.maxLength&&r>this.step.data.maxLength;o||(e.input=i);const s=a.length<=0,l=s?{inputText:i,text:i}:{inputText:i};this.manager.updateStorage(this.step.stepName,l);const c=this.manager.getStepStorage(this.step.stepName),d=j.getProcessedInput(i,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}=j.updateInputText(i,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=j.findLayoutElements(this.manager,this.step);return j.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=Nt(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.")}async getAvailableStrokeColors(){return this.step.data.strokeEnabled?j.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 j.changeStrokeColor(this.step,t,e,this.manager)}}class zi extends Z{constructor(t,e,a){super(t,e,a)}async selectVariant(){}getContent(){return this.step.data.content}}class Gi extends Z{constructor(t,e,a){super(t,e,a)}async selectVariant(){}getPreviewURL(){return this.manager.getStepStorage(this.step.stepName)?.videoUrl||""}async selectVideo(t){return Ha.regenerateQRCode(this.manager.getRegionElements(this.step.stepName),t.key,this.manager,this.step)}}class ji extends Z{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=Nt(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:he.Error,stepID:this.step.stepName}];this.manager.setInformationResults(a)}else{const a=this.manager.getInformationResults().filter(i=>i.stepID!==this.step.stepName);this.manager.setInformationResults(a)}})}}class ye{static get(t,e){switch(e.type){case E.DigitalContent:return new Gi(t,e,t.getStepTags(e.stepName));case E.Information:return new zi(t,e,t.getStepTags(e.stepName));case E.Question:return new Vi(t,e,t.getStepTags(e.stepName));case E.Text:return new qi(t,e,t.getStepTags(e.stepName));case E.Illustration:return new Oi(t,e,t.getStepTags(e.stepName));case E.Picture:return new Ui(t,e,t.getStepTags(e.stepName));case E.Shape:return new Li(t,e,t.getStepTags(e.stepName));case E.Material:return new Ri(t,e,t.getStepTags(e.stepName));case E.Model:return new $i(t,e,t.getStepTags(e.stepName));case E.Frame:return new Ar(t,e,t.getStepTags(e.stepName));case E.Module:return new ji(t,e,t.getStepTags(e.stepName));default:throw new O(`Step type ${e.type} not yet supported in Core SDK`)}}}const wc=C.gql`
2107
+ fragment CreateDesignTransaction on Transaction {
2108
+ id
2109
+ designName
2110
+ externalCartProductId
2111
+ externalCartProductVariantId
2112
+ externalDesignProductId
2113
+ externalDesignProductVariantId
2114
+ lastSyncedAt
2115
+ quantity
2116
+ previewImageLink
2117
+ priceModifierTotal
2118
+ workflowViewerLink
2119
+ workflowViewerReadOnlyLink
2120
+ integrationProduct {
2121
+ id
2122
+ additionalExternalProductId
2123
+ additionalExternalVariantId
2124
+ }
2125
+ designExternalVariants {
2126
+ id
2127
+ externalProductId
2128
+ externalProductVariantId
2129
+ }
2130
+ }
2131
+ `,yc=C.gql`
2132
+ ${wc}
2133
+ mutation CreateDesigns($inputs: [DesignCreateInput]!) {
2134
+ designCreateMany(inputs: $inputs) {
2135
+ id
2136
+ sku
2137
+ transaction {
2138
+ ...CreateDesignTransaction
2139
+ }
2140
+ processExecution {
2141
+ id
2142
+ }
2143
+ }
2144
+ }
2145
+ `;function Te(n){const t=JSON.parse(atob(n.split(".")[1])).exp;return Math.floor(new Date().getTime()/1e3)>=t}const Sc=async(n,t)=>{const e={};try{if(t){const i=await t.loggedInBearerToken();e.Authorization=`Bearer ${i}`}else throw new Error}catch{const o=Object.entries(localStorage).find(([l,c])=>l.startsWith("CognitoIdentityServiceProvider")&&l.endsWith("idToken"))?.[0]||"",s=localStorage.getItem(o);s&&!Te(s)&&(e.Authorization=`Bearer ${s}`)}return await t.getBetaEnabled()&&(e["X-Spiff-Beta"]="true"),(await S.getShadowGraphqlClient().mutate({mutation:yc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{inputs:n.map(i=>({name:i.name,layouts:i.layouts,workflowId:i.workflowId,transactionId:i.transactionId,previewImage:i.previewImage,useThreeDimPreview:i.useThreeDimPreview,metadata:i.metadata,selectedVariants:i.selectedVariants}))},context:{headers:e}})).data?.designCreateMany},Bn=(n,t,e)=>{const a=r=>{const o={};if(r.type==="Frame"){const s=n[r.stepName],l=r.data;if(!s||!s.image||l.hideImageInCart&&e)return o;o[`${r.stepTitle} image`]=s.image}if(r.type==="Illustration"){const s=n[r.stepName],l=r.data;if(!s||l.hideColorsInCart&&e||!s.colors)return o;if(s.colors.length>0){const c=s.colors.join(", ").toUpperCase();o[`${r.stepTitle} colors`]=c}}if(r.type==="Module"){const s=n[r.stepName],l=r.data;if(!s||s.text===void 0||s.text===null||l.hideTextInCart&&e)return o;o[`${r.stepTitle} text`]=s.text}if(r.type==="Text"){const s=n[r.stepName];if(!s)return o;const l=r.data;(!l.hideTextInCart||!e&&s.text!==void 0&&s.text!==null)&&(o[`${r.stepTitle} text`]=s.text),s.color&&(!l.hideColorInCart||!e)&&(o[`${r.stepTitle} color`]=s.color),s.strokeColor&&(!l.hideStrokeInCart||!e)&&(o[`${r.stepTitle} stroke`]=s.strokeColor)}return o},i={};return t.steps.forEach(r=>{Object.assign(i,a(r))}),i},vc=(n,t,e,a)=>{const i={};let r={};a&&(r=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);i[`${d?.stepTitle} selection`]={value:c[0].name,priceModifier:c[0].priceModifier}}for(const c of Object.keys(r))[`${l} color`,`${l} colors`,`${l} text`,`${l} image`].includes(c)&&(i[c]={value:r[c],priceModifier:0})}return i},Ec=(n,t,e,a,i,r,o,s)=>{const l=t.basePrice||0,c=n.priceModifierTotal||0,d=vc(a,e,void 0,r),A=(Q.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 r&&(h.metadata=r),a&&(h.selectedVariants=a),i&&(h.sku=i),h},bc=async(n,t,e,a,i,r,o,s,l,c)=>{c&&(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 d=n.getPreviewService(),u=t?.finalizeStepConfig?.lookAtAnimation,A=d&&t.showModelOnFinishStep&&!!u,h=l&&Bn(l,t,!0),g=l&&Bn(l,t,!1),p=async v=>{const I={};let M=0;if(Object.keys(r).length>0)for(const R of Object.keys(r)){const x=r[R],T=t.steps.find(L=>L.stepName===R);for(let L=0;L<x.selections.length;++L){const k=x.selections[L];if(T){const X=await P.getOptionForStep(T);if(!v||X&&(X.variants||[]).length>1&&!T.data.hideSelectionInCart&&!T.data.hideSelectionsInCart){const bt=T.stepTitle;I[bt]?I[bt].push({id:k.id||"",name:k.name,priceModifier:k.priceModifier}):I[bt]=[{id:k.id||"",name:k.name,priceModifier:k.priceModifier}]}}M+=k.priceModifier}}return[I,M]},[m]=await p(!0),f=Object.fromEntries(Object.keys(m).map(v=>[v,m[v].map(I=>I.id)])),[y]=await p(!1),w=Object.fromEntries(Object.keys(y).map(v=>[v,y[v].map(I=>I.id)]));let F=await s(A,i.id);if(F){const v=await(await it(F)).blob();F=(await W.uploadAsset({name:`${i.id}-preview-image.png`,blob:v},ee.Image,!0,!1)).fileLink}return{designDetails:(()=>{const v={name:o,layouts:e.map(I=>({index:I.index,panelId:I.panelId})),workflowId:t.id,transactionId:i.id,useThreeDimPreview:!!A,previewImage:F};if(g){const I=[];for(const[M,R]of Object.entries(g))I.push({key:M,value:R});v.metadata=I}if(f){const I=[];for(const[M,R]of Object.entries(w))I.push({key:M,ids:R});v.selectedVariants=I}return v})(),cartSelectionsWithPrices:m,cartMetadata:h}},Hi=async(n,t)=>{await Promise.all(n.map(async s=>{await s.workflowManager.outstandingRequestsPromise()}));const a=await(async()=>{const s=S.getShadowGraphqlClient(),l=await Promise.all(n.map(async A=>({id:A.transaction.id,hash:await A.workflowManager.getStateHash()}))),d=ha(l,100),u=[];for(const A of d){const h=await s.query({query:Ho,variables:{transactions:A},fetchPolicy:"no-cache",errorPolicy:"all"});if(h.errors&&h.errors.length>0)return l.map(g=>g.id);u.push(...h.data?.transactionConfirmWorkflowStates??[])}return u})(),i=await Promise.all(n.map(async s=>await bc(s.workflowManager,s.workflow,s.layouts,s.getReducerState,s.transaction,s.workflowSelections,s.designName,t??(()=>Promise.resolve(void 0)),s.workflowMetadata,a.includes(s.transaction.id)))),r=n[0].workflowManager.getClient(),o=await Sc(i.map(s=>s.designDetails),r);if(!o)throw new Error("Failed to create designs");return o.map((s,l)=>{const c=n[l],d=i[l],u=s.transaction;return Ec(u,c.product,c.workflow,d.cartSelectionsWithPrices,s.sku,d.cartMetadata,u.previewImageLink,s.processExecution?.id)})};class Ic{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=Q.get(this.localPersistenceKey);return t?JSON.parse(t):[]}throw new O("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(i=>i.transactionId!==t.transactionId);a.unshift(t),await this.setDesigns(a),this.designSavedListeners.forEach(i=>i(t))}async renameDesign(t,e){const a=await this.getSavedDesigns(),i=a.find(r=>r.transactionId===t);if(!i)throw new Error(`No saved design for transaction ${t}.`);i.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"){Q.set(this.localPersistenceKey,JSON.stringify(t));return}throw new O("Unexpected storage method requested")}}const Ie=new Ic,Bc=C.gql`
2146
+ mutation AddTransactionStakeholder($id: String!, $type: String!, $details: CustomerDetailsInput!) {
2147
+ transactionAddStakeholder(id: $id, details: $details, type: $type) {
2148
+ id
2149
+ stakeholders {
2150
+ id
2151
+ type
2152
+ customer {
2153
+ id
2154
+ emailAddress
2155
+ }
2156
+ }
2157
+ }
2158
+ }
2159
+ `,Pc=C.gql`
2160
+ mutation AddAddressToTransaction(
2161
+ $transactionId: String!
2162
+ $streetAddress: String
2163
+ $apartment: String
2164
+ $city: String
2165
+ $country: String
2166
+ $state: String
2167
+ $postCode: String
2168
+ ) {
2169
+ addressAttachToTransaction(
2170
+ transactionId: $transactionId
2171
+ streetAddress: $streetAddress
2172
+ apartment: $apartment
2173
+ city: $city
2174
+ country: $country
2175
+ state: $state
2176
+ postCode: $postCode
2177
+ ) {
2178
+ id
2179
+ }
2180
+ }
2181
+ `,xc=C.gql`
2182
+ mutation AddOrganizationToTransaction($transactionId: String!, $organizationName: String!) {
2183
+ organizationAttachToTransaction(transactionId: $transactionId, organizationName: $organizationName) {
2184
+ id
2185
+ }
2186
+ }
2187
+ `,Pn=C.gql`
2188
+ ${Ge}
2189
+ ${de}
2190
+ mutation TransactionUpdateIntegrationProduct($id: String!, $integrationProductId: String) {
2191
+ transactionUpdateIntegrationProduct(id: $id, integrationProductId: $integrationProductId) {
2192
+ id
2193
+ integrationProduct {
2194
+ id
2195
+ externalProductId
2196
+ externalVariantId
2197
+ additionalExternalProductId
2198
+ additionalExternalVariantId
2199
+ }
2200
+ product {
2201
+ id
2202
+ basePrice
2203
+ enabled
2204
+ minimumOrderQuantity
2205
+ name
2206
+ description
2207
+ partner {
2208
+ id
2209
+ name
2210
+ currencyCode
2211
+ customerDetailsPromptMarkdown
2212
+ }
2213
+ productImages {
2214
+ id
2215
+ precedence
2216
+ asset {
2217
+ key
2218
+ fileLink
2219
+ name
2220
+ type
2221
+ versions {
2222
+ name
2223
+ link
2224
+ }
2225
+ }
2226
+ }
2227
+ integrationProducts {
2228
+ id
2229
+ integration {
2230
+ id
2231
+ type
2232
+ }
2233
+ externalProductId
2234
+ externalVariantId
2235
+ additionalExternalProductId
2236
+ additionalExternalVariantId
2237
+ additionalIntegrationProduct {
2238
+ ...AdditionalIntegrationProductFields
2239
+ }
2240
+ }
2241
+ profanities {
2242
+ id
2243
+ word
2244
+ }
2245
+ sku
2246
+ skuCode
2247
+ weight
2248
+ workflows {
2249
+ id
2250
+ friendlyName
2251
+ isPresent
2252
+ workflowName
2253
+ imageUrl
2254
+ }
2255
+ imageUrl
2256
+ modelUrl
2257
+ overlayImageUrl
2258
+ preloadImageUrl
2259
+ promptForCustomerDetails
2260
+ conversionConfiguration {
2261
+ ...ConversionConfigurationFields
2262
+ }
2263
+ productTags {
2264
+ id
2265
+ name
2266
+ }
2267
+ priceBreaks {
2268
+ id
2269
+ minQty
2270
+ percentage
2271
+ }
2272
+ }
2273
+ }
2274
+ }
2275
+ `;var Ne=(n=>(n.PriceBreakChanged="PriceBreakChanged",n.ProductChanged="ProductChanged",n.QuantityChanged="QuantityChanged",n.RecipientChanged="RecipientChanged",n.SelectionChanged="SelectionChanged",n))(Ne||{});class Wi{constructor(t,e){this.cachedStepHandles=new Map,this.profanityList=[],this.currentPriceBreak=1,this.renderableScenes=[],this.renderableSceneCallbacks=[],this.eventCallbacks=new Map,this.debouncedSavedDesignUpdate=$n(async()=>{await Ie.getSavedDesignByTransaction(this.getTransaction().id)&&this.save()},2500),this.getCanvasObjectURLAsync=async a=>new Promise((i,r)=>{try{a.toBlob(o=>{if(o){const s=URL.createObjectURL(o);i(s)}})}catch(o){r(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 Pa(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 i=a.traversableScenes.map(r=>{const o=r.renderableSteps.map(s=>s.stepName);return{id:r.name,title:r.title,renderableSteps:o,workflowScene:r}});this.renderableScenes=i,this.renderableSceneCallbacks.forEach(r=>r(i)),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:Pn,variables:{id:this.getTransaction().id,integrationProductId:t}}),a=e.data?.transactionUpdateIntegrationProduct.product;if(!a)throw new O("Failed to set product. No product returned from server.");if(!this.bundle)throw new O("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 i=(await this.bundle.getProductCollection().fetchProducts()).find(r=>r.getId()===a.id);try{const r=i?.getDefaultWorkflow();if(r){const o=await rr(r.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 O("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:Pn,variables:{id:this.getTransaction().id}})}getWorkflow(){return this.workflow}async setWorkflow(t){return this.workflow=t,await this.graphQlClient().mutate({mutation:qo,variables:{id:this.getTransaction().id,workflowId:t.id}}),this.workflowManager.setWorkflow(t)}async attachAddress(t,e,a,i,r,o){await this.graphQlClient().mutate({mutation:Pc,variables:{transactionId:this.getTransaction().id,streetAddress:t||void 0,apartment:e||void 0,city:a||void 0,country:i||void 0,state:r||void 0,postCode:o||void 0}})}async attachOrganization(t){await this.graphQlClient().mutate({mutation:xc,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(),i=a?.finalizeStepConfig?.lookAtAnimation;if(!a)throw new Error("Failed to generate cart preview image! No workflow is set.");if(t){if(!i)throw new Error("Failed to generate cart preview image! No camera orientation configured.");return await this.workflowManager.getPreviewService()?.renderSceneScreenshot(e??512,i)||""}let r=2048;e&&e<=2048&&(r=e);const o=yt(r,r),s=this.workflowManager.getCommandContext().getAllLayouts(),l=a.defaultPreviewPanelIndex||0,c=a.panels[l],d=s.find(w=>w.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 Re("Failed to obtain 2D context for preview image creation");const g=this.workflowManager.getTemplatingContext(),p=He(A.layoutState.layout,A.layoutState.elements,{renderingConfiguration:{purpose:Ot.Print,region:{left:u.x,top:u.y,width:u.width,height:u.height},templatingContext:g}}),m=Kn(p);await(await Ma.Pith.from(h,m,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:yt,createImage:le,DOMParser:Ra(),fetch})).render();const y=await this.getCanvasObjectURLAsync(o);return o.toDataURL(y)}getStepById(t){const e=this.getWorkflow()?.steps.find(r=>r.stepName===t);if(!e||!this.stepHasHandle(e))return;const a=this.cachedStepHandles.get(e.stepName);if(a)return a;const i=ye.get(this.getWorkflowManager(),e);return this.cachedStepHandles.set(e.stepName,i),i}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(i=>{a+=i.selections.reduce((r,o)=>r+(o.priceModifier||0),0)}),this.getPriceSubUnitsAfterPriceBreaks(a,t)}getBasePriceSubunits(t,e){const a=this.getPriceSubUnitsAfterPriceBreaks(this.getProduct()?.basePrice||0,e);if(t){const i=this.getAdditionalProductPriceSubunits(e)||0;return a+i}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(),i=t*a;return Math.ceil(i)}priceBreakToBeApplied(){const t=(this.getProduct()?.priceBreaks||[]).sort((i,r)=>-(i.minQty-r.minQty)),a=[...this.getMatchingExperiencesFromBundle(),this].reduce((i,r)=>i+r.getQuantity(),0);for(const i of t)if(i.minQty<=a)return i.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,i=t.getProduct()?.id,r=this.getProduct()?.id;return e!==a&&i===r})}updatePriceBreak(t){this.currentPriceBreak=t,this.callEvent("PriceBreakChanged")}async copySelectionsViaGlobalConfiguration(t,e,a){const i=await t.getGlobalProperties(),r=a?.map(c=>c.getId()),o=this.getSteps().filter(c=>r===void 0||r.includes(c.getId())),s=e.getSteps(),l=c=>i.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 ye.get(this.getWorkflowManager(),e)}getStepsByType(t){return this.getWorkflow()?.steps.filter(e=>e.type===t).map(e=>ye.get(this.getWorkflowManager(),e))||[]}getStepsByScene(t){const e=this.getWorkflow();if(!e?.stepGroups.find(i=>i.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(i=>e.steps.find(r=>r.stepName===i)).filter(i=>!!i&&this.stepHasHandle(i)).map(i=>ye.get(this.getWorkflowManager(),i))}async attachCustomerDetails(t){return this.assignCustomerDetails({emailAddress:t.email})}async assignCustomerDetails(t){const a=(await this.graphQlClient().mutate({mutation:Bc,variables:{id:this.getTransaction().id,details:t,type:"Owner"}})).data?.transactionAddStakeholder?.stakeholders?.find(i=>i.customer?.emailAddress===t.emailAddress);if(a?.customer){this.getWorkflowManager().setTransactionCustomer(a.customer);const i=Q.getMap("transactionCustomerIds")||new Map;i.set(this.getTransaction().id,a.customer.id),Q.setMap("transactionCustomerIds",i)}}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(),i=this.getCommandContext().getState();if(!e)throw new O("Product undefined!");if(!a)throw new O("Workflow undefined!");if(!i)throw new O("State undefined!");const o={title:await(async()=>{if(t)return t;const s=this.getTransaction().id,c=(await Ie.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 Ie.addDesign(o),o}async copy(){const t=Pt(this.getCommandContext().getState());if(!t)throw new O("Internal state is undefined! Cannot copy experience!");const e=JSON.stringify(t.transaction),a=this.getWorkflow();if(!a)throw new O("Workflow is undefined! Cannot copy experience!");const i=this.getTransaction().integrationProduct?.id;if(!i)throw new O("Integration product id is undefined!");return await this.getClient().getWorkflowExperience({type:"integration",integrationProductId:i,workflowId:a.id,workflowState:e})}async onDesignFinished(t=!0){const e=this.getTransaction(),a=this.getProduct(),i=this.getWorkflow();if(!a)throw new O("Product undefined! Cannot finish an experience without a product.");if(!i)throw new O("Workflow undefined! Cannot finish an experience without a workflow.");if(e.isOrdered)return{event:"",exportedData:{},lineItemImageUrl:"",optionsCost:0,transactionId:e.id,workflowViewerLink:"",workflowViewerReadOnlyLink:""};const r=await Hi([{workflowManager:this.workflowManager,workflow:i,layouts:this.workflowManager.getLayouts(),getReducerState:()=>this.workflowManager.getCommandContext().getState(),product:a,transaction:e,workflowSelections:this.workflowManager.getWorkflowSelections(),workflowMetadata:this.workflowManager.getWorkflowMetadata(),designName:i.name}],o=>t?this.createPreviewImage(o,1024):Promise.resolve(void 0));return e.completed&&await this.graphQlClient().mutate({mutation:Ko,variables:{transactionId:e.id}}),r[0]}stepHasHandle(t){return t.type!==E.SilentIllustration&&t.type!==E.ProductOverlay}async getExportedStepData(){const t=this.getWorkflow(),e=this.getWorkflowManager().getWorkflowMetadata(),a=this.getWorkflowManager().getWorkflowSelections(),i=[];for(const r of t?.steps||[]){const o=r.stepName,s=e[o],l=a[o]?.selections[0],c={stepId:o,title:r.stepTitle,properties:[]};if(l&&await Dc(r,a)&&c.properties.push({type:"selection",value:l.name,priceModifier:l.priceModifier}),!s){i.push(c);continue}switch(r.type){case E.Frame:{const d=r.data,u=s;u.image&&d.displayImageOnFinishStep&&c.properties.push({type:"image",value:u.image,priceModifier:0})}break;case E.Illustration:{const d=r.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 E.Module:{const d=r.data,u=s;u&&u.text&&d.displayTextOnFinishStep&&c.properties.push({type:"text",value:u.text,priceModifier:0})}break;case E.Text:{const d=r.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})}}i.push(c)}return i.filter(r=>r.properties&&r.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:Lo,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(i=>i!==e))}callEvent(t){(this.eventCallbacks.get(t)||[]).forEach(e=>e(this))}}const Fc=n=>{if([E.Question,E.Frame,E.Illustration,E.Material,E.Model,E.Picture,E.Shape,E.Text].includes(n.type)){const e=n.data;return!!e.displaySelectionOnFinishStep||!!e.displaySelectionsOnFinishStep}return!1},Dc=async(n,t)=>{if(!Fc(n))return!1;const e=await P.getOptionForStep(n);if(e&&(e.variants||[]).length>1){const a=t[n.stepName];return!!(a&&a.selections.length>0)}return!1};class kc{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 t?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===Vn.AND?Array.prototype.every.bind(t.conditions):Array.prototype.some.bind(t.conditions))(i=>{const r=e.aspects.find(o=>o.name===i.targetAspectName);return r?i.requiredVariantSelections.some(o=>o===r.value):!1})}async createHandle(t){switch(t.type){case q.FileUpload:return new Yi(this.bundle,t).initialize();case q.ColorOption:return new xa(this.bundle,t,t.entityId?await P.getOption(t.entityId):void 0);case q.Option:{const e=t.entityId?await P.getOption(t.entityId):void 0;return e?.type==="Color"?new xa(this.bundle,t,e):new Za(this.bundle,t,e)}case q.Text:return new Ji(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(i=>i.getStepsConditionallyActive().filter(r=>r.getOverrideGlobalPropertyConfiguration(this.property.type)?!1:r.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 Yi extends Je{constructor(t,e){super(t,e)}async initialize(){return this.property.data?.fileUpload?.colorOptionId&&(this.colorOption=await P.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 et(t?.fileLink),a=await za(t?.fileLink),i=a.width,r=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:i,height:r,aspect:i/r,svg:o.svg,colors:o.colors};At.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(Qe.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(),i=await W.removeBackgroundFromAsset(e),o={...a.getAspectStorage(this.property.name),backgroundRemovedAssetKey:i.key,useOriginalAsset:!t},l=[t?a.setAspect(this.property.name,i.key,o):a.setAspectStorage(this.property.name,o)];return t&&(l.push(this.applyImageSelection(i,void 0,!1,!1)),l.push(this.loadImageData())),await Promise.all(l),this.updateSharedStepStorage(o),i}hasImage(){return!!this.getStateValue()}async getImage(){const t=this.getStateValue();if(t)return W.getLocalOrFromServer(t)}async getImageWithColors(){return await this.loadImageData(),this.imageData?.svg?Ve(qe(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 W.getLocalOrFromServer(t.originalAssetKey)}async getBackgroundRemovedImage(){const t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(t?.backgroundRemovedAssetKey)return W.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(),i=a.getAspectStorage(this.property.name);if(i?.useOriginalAsset===t)return;const r={...i,useOriginalAsset:t},o=t?i?.originalAssetKey:i?.backgroundRemovedAssetKey,s=[a.setAspect(this.property.name,o||"",r)];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(r)}async applyGlobalState(t){const e=this.getStateValue();if(!e)return;const a=await W.getLocalOrFromServer(e);if(!a)return;await this.applyImageSelection(a,t,!1,!0);const i=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(i){if(this.updateSharedStepStorage({...i}),i.colors){const r=new Map(i.colors.map(o=>[o.key,{browserValue:o.browserValue,pmsValue:o.pmsValue}])??[]);await Promise.all(this.getSharedSteps(t).map(async o=>{await o.changeColors(r)}))}}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));await Promise.all(e.map(async r=>{await r.changeColors(a)}));const i=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name,{...i,colors:Object.entries(t).map(([r,o])=>({key:r,browserValue:o.browserValue,pmsValue:o.pmsValue}))}),await this.loadImageData()])}async applyImageSelection(t,e,a=!0,i=!0){const o=this.getSharedSteps(e).map(s=>{const l=s;if(l.getFrameService())return l.selectImage(t,a,i)});await Promise.all(o)}updateSharedStepStorage(t){this.bundle.getWorkflowExperiences().forEach(a=>a.getSteps().forEach(i=>{if(i.getOverrideGlobalPropertyConfiguration(this.property.type))return;i.getRaw().globalPropertyAspectConfigurations?.some(o=>o.globalPropertyConfigurationId===this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration?.id&&o.aspectName===this.property.name)&&a.getWorkflowManager().updateStorage(i.getId(),{framePatternData:{originalAssetKey:t.originalAssetKey,backgroundRemovedAssetKey:t.backgroundRemovedAssetKey,useOriginalAsset:t.useOriginalAsset}})}))}}class Ji 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 i=this.getSharedSteps(e).map(r=>{r.setText(t)});await Promise.all(i)}}class Za extends Je{constructor(t,e,a){super(t,e),this.optionResource=a}async ensureOptionLoaded(){if(this.optionResource?.variants)return this.optionResource;if(!this.property.entityId)return this.optionResource;const t=await P.getOption(this.property.entityId);return t&&(this.optionResource=t),this.optionResource}async initDefaultVariant(){await this.ensureOptionLoaded();const t=this.optionResource?.variants?.find(e=>e.id===this.optionResource?.defaultVariant?.id);t&&await this.selectVariant(new nt(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 nt(e):void 0}else{const e=this.optionResource.variants?.find(a=>a.id===this.optionResource?.defaultVariant?.id);return e?new nt(e):void 0}}async getAvailableVariants(){return await this.ensureOptionLoaded(),(this.optionResource?.variants?.filter(e=>e.enabled)||[]).map(e=>new nt(e))}async getAllVariants(){return await this.ensureOptionLoaded(),(this.optionResource?.variants||[]).map(e=>new nt(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;await this.ensureOptionLoaded();const a=this.optionResource?.variants?.find(i=>i.id===e);if(a)return this.applyVariantSelection(new nt(a),t)}async applyVariantSelection(t,e){const i=this.getSharedSteps(e).map(r=>r.selectVariant(t));await Promise.all(i)}}class xa extends Za{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;await this.ensureOptionLoaded();const a=this.optionResource?.variants?.find(r=>r.id===e);if(!a)return;await this.applyColorVariant(new nt(a),t);const i=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)?.customColor;i&&this.setCustomColor(i)}async applyColorVariant(t,e,a){const r=this.getSharedSteps(e).map(o=>{switch(o.getType()){case E.Shape:return o.selectVariant(t);case E.Text:return o.setFillColor({fill:t.getColor(),stroke:t.getColor(),variant:t.getResource()});case E.Illustration:return o.setColor(a?.toString()||"",t.getColor()||"")}});await Promise.all(r)}setCustomColor(t){const e=this.getCurrentVariant()?.getColor();e&&e.toLowerCase()==="#custom"&&this.getSharedSteps().forEach(i=>i.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 Mc=(n,t,e)=>{const a=n.getWorkflowExperiences(),i=n.getGlobalPropertyConfiguration();return i?a.flatMap(o=>o.getSteps()).filter(o=>o.getGlobalPropertyAspects(i.id).includes(t)&&o.getType()===e):[]},Ki=(n,t)=>{const a=Mc(n,t,E.Illustration).map(i=>{if(!i.getCurrentVariant()?.getAssetResource()?.assetConfiguration)return 0;const o=i.getColors();return o?Object.getOwnPropertyNames(o).length:0});return Math.max(...a)};function Fa(n,t){function e(a){if(typeof a>"u"||!Array.isArray(a)&&!Nc(a))return a;if(Array.isArray(a))return Fa(a,t);let i={};for(const[r,o]of Object.entries(a))i[r]=Tc(o)?o:Fa(o,t);return $r(i,t)}return Array.isArray(n)?n.map(e):e(n)}function Tc(n){return n==null}function Nc(n){return typeof n=="object"&&!Array.isArray(n)&&n!==null}function _i(n){const t=new Map;return n?.aspects?.forEach(e=>{e.value!==""&&t.set(e.name,!0)}),t}function Se(n){return Fa(n,["__typename"])}class Qc{constructor(t,e,a,i,r){this.mandatoryFulfilledAspects=new Map,this.bundleId=t,this.bundleOwnerId=e,this.configuration=a,this.bundleOptions=r;const o=r?.existingGlobalPropertyState;this.initPromise=o?Promise.resolve(o).then(()=>{console.log("Setting global property state to existing state."),this.globalPropertyState=Se(o),this.recalculateMandatoryStates()}):this.createGlobalPropertyState().then(s=>{console.log("Setting global property state to new state."),this.globalPropertyState=Se(s),this.recalculateMandatoryStates()}),this.onGlobalPropertyStateChange=i}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=_i(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=Pt(this.globalPropertyState);this.globalPropertyState={...Se(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(i=>i.name===t&&i.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,i){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(l=>l.name===t);if(!r)throw new Error(`Failed to find configuration aspect with name: ${t}`);this.mandatoryFulfilledAspects.set(t,e!=="");const o=Pt(this.globalPropertyState),s=this.globalPropertyState.aspects.filter(l=>l.name===t);if(s.length>0)if(i){const l=s.find(c=>c.channel===i);if(l)l.value=e,l.type=r.type,l.channel=i,a!==void 0&&(l.storage=a!==null?a:void 0);else{if(i===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:r.type,storage:a!==null?a:void 0,channel:i})}}else{const l=s[0];l.value=e,l.type=r.type,a!==void 0&&(l.storage=a!==null?a:void 0)}else this.globalPropertyState.aspects.push({name:t,value:e,type:r.type,storage:a!==null?a:void 0,channel:i});te(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 i=this.configuration.aspects.find(s=>s.name===t);if(!i)throw new Error(`Failed to find configuration aspect with name: ${t}`);const r=Pt(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=i.type)}else{const s=o[0];s.storage=e!==null?e:void 0,s.type=i.type}else this.globalPropertyState.aspects.push({name:t,value:"",type:i.type,storage:e!==null?e:void 0,channel:a});te(r,this.globalPropertyState)||(await this.updateGlobalPropertyState(),await this.onGlobalPropertyStateChange(r,this.globalPropertyState))}async updateGlobalPropertyState(){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const t=await S.getShadowGraphqlClient().mutate({mutation:Ol,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 q.FileUpload:{a.fileUpload=e.storage;break}case q.Option:{a.option=e.storage;break}case q.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=Se(t.data.globalPropertyStateUpdate);else throw new Error("Unable to update global property state")}async createGlobalPropertyState(){const t=await S.getShadowGraphqlClient().mutate({mutation:Ql,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 Oc{constructor(t){this.setState(t||'{"transactions": []}')}setState(t){t&&(this.state=JSON.parse(t))}getState(){return this.state}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)}}const Rc=C.gql`
2276
+ query GetManyMetafields($entityIds: [String!]!) {
2277
+ metafieldsMany(entityIds: $entityIds) {
2278
+ id
2279
+ value
2280
+ metafieldConfiguration {
2281
+ id
2282
+ name
2283
+ }
2284
+ }
2285
+ }
2286
+ `;class $c{constructor(){this.internalMap=new Map}async requestKeysForEntity(t,e){const a=new Map;return await this.ensureIdsArePresent([t]),e.forEach(i=>{const r=this.requestKeyForEntityIfAvailable(t,i);r&&a.set(i,r)}),a}async ensureIdsArePresent(t){if(t.every(a=>this.internalMap.has(a)))return;const e=await S.getShadowGraphqlClient().query({query:Rc,errorPolicy:"all",variables:{entityIds:t.filter(a=>!this.internalMap.has(a))}});t.forEach((a,i)=>{const r=e.data.metafieldsMany[i];this.internalMap.set(a,r.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 i=a.find(r=>r.key===e);return i||(await this.ensureIdsArePresent([t]),a=this.internalMap.get(t)),i?JSON.parse(i.value):void 0}requestKeyForEntityIfAvailable(t,e){if(!this.internalMap.has(t))return;const i=this.internalMap.get(t).find(r=>r.key===e);if(i)return JSON.parse(i.value)}}const Xi=new $c;var Zi=(n=>(n.Default="Default",n.Name="Name",n.Price="Price",n))(Zi||{});class tn{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 Wt(t))}async fetchProducts(t){if(this.fullFetched)return(this.collection.productCollectionProducts??[]).filter(a=>!!a.product).map(a=>new Wt(a));const e=await S.getShadowGraphqlClient().query({query:ql,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 Wt(a))}async filterProducts(t,e,a,i){const r=await S.getShadowGraphqlClient().query({query:zl,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:i}});if(!r.data?.productCollections||r.data?.productCollections.length===0)throw new Error("Failed to filter product collection products.");const o=this.getProducts(),s=r.data.productCollections[0].productCollectionProducts.map(l=>l.product.id);return o.filter(l=>s.includes(l.getId()))}async fetchProductsFeed(t,e,a,i,r,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:Gl,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:i?{include:i.include??[],exclude:i.exclude??[]}:void 0,sortKey:r,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 Wt(Pt(f)))||[];A({items:m,total:p.data.productCollections?.[0].productCollectionProductsFeed?.total??0})},error(){h||(h=!0,g.unsubscribe(),A({items:[],total:0}))}})})}getResource(){return this.collection}}class Wt{constructor(t){this.product=t.product,this.productResource=t}getId(){return this.product.id}getName(){return this.product.name}getIntegrationByType(t,e){const i=(this.product.integrationProducts||[]).find(r=>{const o=r.integration?.type,s=r.integration?.type===t,l=e?r.integration?.externalIntegrationId===e:!0;return o&&s&&l});if(!i)throw new Error("Failed to find requested integration type on product. This is generally due to a configuration error");return i}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 ft("Called getDefaultWorkflow() before fetching collection products. Use collection.fetchProducts() first to ensure the data is available.");if(t.length===0)throw new ft("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(i=>i.workflowName===e);if(a)return new Qt(a)}if(t.length===1)return new Qt(t[0]);throw new ft("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 ft("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 Qt(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(i=>i.integration?.id===t.integrationId):t.externalId?a=this.product.integrationProducts?.find(i=>i.integration?.externalIntegrationId===t.externalId):a=this.product.integrationProducts?.find(i=>i.integration?.type===t.integrationType),a?.additionalIntegrationProduct?.product?e+(a.additionalIntegrationProduct.product.basePrice||0):e}async requestMetafields(t){return Xi.requestKeysForEntity(this.product.id,t)}}class Qt{constructor(t){this.workflow=t}getId(){return this.workflow.workflowName}getName(){return this.workflow.friendlyName}getThumbnail(){return this.workflow.imageUrl}}const Uc=C.gql`
2287
+ ${Ye(!1)}
2288
+ query GetProductCollections($ids: [String!]!) {
2289
+ productCollections(ids: $ids) {
2290
+ ...ProductCollectionFields
2291
+ }
2292
+ }
2293
+ `,Vc=async n=>(await S.getShadowGraphqlClient().query({query:Uc,errorPolicy:"all",variables:{ids:n}})).data?.productCollections?.map(e=>new tn(e));class Lc{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 qc=C.gql`
2294
+ mutation AddAddressToBundle(
2295
+ $bundleId: String!
2296
+ $streetAddress: String
2297
+ $apartment: String
2298
+ $city: String
2299
+ $country: String
2300
+ $state: String
2301
+ $postCode: String
2302
+ ) {
2303
+ addressAttachToBundle(
2304
+ bundleId: $bundleId
2305
+ streetAddress: $streetAddress
2306
+ apartment: $apartment
2307
+ city: $city
2308
+ country: $country
2309
+ state: $state
2310
+ postCode: $postCode
2311
+ ) {
2312
+ id
2313
+ }
2314
+ }
2315
+ `,zc=C.gql`
2316
+ mutation AddOrganizationToBundle($bundleId: String!, $organizationName: String!) {
2317
+ organizationAttachToBundle(bundleId: $bundleId, organizationName: $organizationName) {
2318
+ id
2319
+ }
2320
+ }
2321
+ `,Gc=C.gql`
2322
+ mutation GenerateQuoteId($id: String!) {
2323
+ bundleGenerateQuoteId(id: $id) {
2324
+ id
2325
+ quoteId
2326
+ }
2327
+ }
2328
+ `;class xn{constructor(t,e,a,i,r,o,s){this.workflowExperiences=[],this.eventEmitter=new Lc,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=r,this.metadata=new Map(e.metadata?.map(c=>[c.key,c.value])||[]),this.completed=e.completed??!1,this.productCollection=e.productCollection,this.bundleStateManager=new Oc(e.bundleStateData);const l=this.productCollection?.globalPropertyConfiguration;this.globalConfigurationPropertyId=l?.id,this.globalPropertyStateManager=new Qc(this.id,this.ownerId,l,this.onGlobalPropertiesChanged.bind(this),o),this.globalPropertyHandleService=new kc(this),this.setPreviewService(a),this.initializationPromise=Promise.all([this.loadExistingWorkflowExperiences(e.transactionIds||[],{...i,bundleOwnerId:r},s),this.globalPropertyStateManager.getInitializationPromise()]).then(()=>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(async g=>{if(g.getType()===q.ColorOption||g.getType()===q.Option){const p=g;if(!u.aspects.find(f=>f.name===p.getName()))try{return await p.initDefaultVariant()}catch(f){console.error(`Failed to initialize default global variant - ${f}`)}}});Promise.all(h).then(c).catch(d)}):(console.log("Attempted to set global default variant before state was initialized."),c([]))})),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(i=>i===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:da,variables:{id:this.id,bundleStateData:a},context:{bundleOwnerId:this.ownerId}})}}async removeIntegrationProductIds(t){const e=this.bundleStateManager.getState();if(e){const a=t.filter(r=>(e.integrationProductIds??[]).includes(r));if(a.length===0)return;e.integrationProductIds=(e.integrationProductIds??[]).filter(r=>!a.includes(r));const i=JSON.stringify(e);this.bundleStateManager.setState(i),this.fireEvent("bundle-integration-products-removed",{integrationProductIds:a}),await S.getShadowGraphqlClient().mutate({mutation:da,variables:{id:this.id,bundleStateData:i},context:{bundleOwnerId:this.ownerId}})}}getTemplate(){return this.template}async generateQuoteId(){const e=(await S.getShadowGraphqlClient().mutate({mutation:Gc,variables:{id:this.id},context:{bundleOwnerId:this.ownerId}})).data?.bundleGenerateQuoteId?.quoteId;return this.quoteId=e,e||""}async attachAddress(t,e,a,i,r,o){await S.getShadowGraphqlClient().mutate({mutation:qc,variables:{bundleId:this.id,streetAddress:t||void 0,apartment:e||void 0,city:a||void 0,country:i||void 0,state:r||void 0,postCode:o||void 0},context:{bundleOwnerId:this.ownerId}})}async attachOrganization(t){await S.getShadowGraphqlClient().mutate({mutation:zc,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 i=a?.name;await this.getGlobalPropertyStateManager().setAspect(i,a.value)}for(const a of t.aspects){const i=a?.name,r=e.find(o=>o.getName()===i);if(r)switch(a.type){case q.FileUpload:{const o=r,s=await Pe([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 q.ColorOption:{const o=r,l=(await 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 q.Option:{const o=r,l=(await o.getAllVariants()).find(c=>c.getId()===a.value);l&&await o.selectVariant(l);break}case q.Text:{await r.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()===q.Option).map(a=>a.getCurrentVariant()?.getPrice()||0).reduce((a,i)=>a+i,0)}getTotalSubunits(){return this.workflowExperiences.map(t=>t.getTotalPriceSubunits()).reduce((t,e)=>t+e,0)}getProductCollection(){return this.productCollection?new tn(this.productCollection):void 0}async initializeAdditionalRequiredColorChannels(t){for(const e of t.getStepsByType(E.Illustration)){const a=e.getGlobalPropertyAspects(this.globalConfigurationPropertyId||"");for(const i of a){const r=this.getGlobalPropertyConfiguration()?.aspects.find(o=>o.name===i);if(r&&r.type===q.ColorOption){const o=e.getCurrentVariant()?.getAssetResource(),s=o?.assetConfiguration?.channelNumbers||[],l=o?.assetConfiguration?.defaultColorVariants||[],c=Ki(this,i),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(i,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 i=Q.getMap("transactionOwnerIds")||new Map,r=e.map(s=>i.get(s));await S.getShadowGraphqlClient().mutate({mutation:Yl,variables:{id:this.id,transactionIds:e,transactionOwnerIds:r},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=(Q.getMap("transactionOwnerIds")||new Map).get(a);await S.getShadowGraphqlClient().mutate({mutation:Wl,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 i=this.workflowExperiences.find(r=>r.getTransaction().id===e.id);if(i.setBundle(void 0),this.previewService&&i.getWorkflowManager().ejectFromPreviewService(),this.bundleStateManager.removeStateForTransaction(e.id),await S.getShadowGraphqlClient().mutate({mutation:Jl,variables:{id:this.id,transactionId:e.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([r,o])=>({key:r,value:o})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),a){const r=this.workflowExperiences.splice(t,1);this.workflowExperiences.forEach(o=>o.checkForPriceBreakChanges()),i.checkForPriceBreakChanges(),await this.updateTransactionOrder(),this.fireEvent("workflow-experience-removed",{workflowExperiences:r})}}else throw new Error("Unable to remove workflow experience from bundle - Not Found! - "+e.id)}async removeTransactions(t){const e=t.map(i=>this.workflowExperiences.findIndex(r=>r.getTransaction().id===i.id));if(e.some(i=>i===-1))throw new Error("Unable to remove workflow experience from bundle - The following aren't included in the bundle: "+t.filter((i,r)=>e[r]===-1).map(i=>i.id).join(", "));const a=t.map(i=>this.workflowExperiences.splice(this.workflowExperiences.findIndex(r=>r.getTransaction().id===i.id),1)[0]);a.forEach(i=>i.setBundle(void 0)),[...this.workflowExperiences,...a].forEach(i=>i.checkForPriceBreakChanges()),this.previewService&&a.forEach(i=>i.getWorkflowManager().ejectFromPreviewService()),t.forEach(i=>this.bundleStateManager.removeStateForTransaction(i.id)),await S.getShadowGraphqlClient().mutate({mutation:Kl,variables:{id:this.id,transactionIds:t.map(i=>i.id),name:this.name,metadata:Array.from(this.metadata.entries()).map(([i,r])=>({key:i,value:r})),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(i=>i.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 i=await this.getGlobalProperties();await Promise.all(i.map(r=>r.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:_l,variables:{id:this.id,details:t,type:e||Na.Owner},context:{bundleOwnerId:this.ownerId}});if(!a.data?.bundleAddStakeholder)throw new Error("Bundle not found!");const i=a.data.bundleAddStakeholder.bundleStakeholders||[];this.storeStakeholderCustomers(i)}async removeStakeholder(t){if(!(await S.getShadowGraphqlClient().mutate({mutation:Xl,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:Zl,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:bn,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:bn,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:ic,variables:{bundleId:this.id}});const a=await Hi(this.workflowExperiences.map(i=>{const r=i.getWorkflow();if(!r)throw new Error("Unable to create designs - Workflow not found!");const o=i.getProduct();if(!o)throw new Error("Unable to create designs - Product not found!");return{workflowManager:i.getWorkflowManager(),workflow:r,layouts:i.getWorkflowManager().getLayouts(),getReducerState:()=>i.getCommandContext().getState(),product:o,transaction:i.getTransaction(),workflowSelections:i.getWorkflowManager().getWorkflowSelections(),designName:r.name,workflowMetadata:i.getWorkflowManager().getWorkflowMetadata()}}),e?(i,r)=>{const o=this.workflowExperiences.find(s=>s.getTransaction().id===r);return o?e(o,i):(console.warn("SpiffCommerce - Bundle create design - Unable to find experience for transaction: "+r),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}async assignGlobalPropertyConfiguration(t){await S.getShadowGraphqlClient().mutate({mutation:ac,variables:{bundleId:this.id,globalPropertyConfigurationId:t},context:{bundleOwnerId:this.ownerId}}),this.globalConfigurationPropertyId=t}async assignProductCollection(t){const e=await S.getShadowGraphqlClient().mutate({mutation:ec(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),await this.globalPropertyHandleService.getHandles(),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 i=t.metadata.get("workflowManager").getWorkflowExperience().getTransaction(),r=this.workflowExperiences.find(o=>o.getTransaction().id===i.id);r&&this.fireEvent(e?"workflow-experience-hover-enter":"workflow-experience-hover-exit",{workflowExperience:r})}}async injectExperienceIntoPreviewService(t){this.previewService&&await t.getWorkflowManager().injectIntoPreviewService(this.previewService)}async loadExistingWorkflowExperiences(t,e,a){if(t.length===0)return;const i=await this.client.getWorkflowExperiences(t.map(s=>({type:"transaction",transactionId:s})),e,void 0,a);if(i.forEach(s=>s.setBundle(this)),i.forEach(s=>s.checkForPriceBreakChanges()),this.workflowExperiences=i,this.previewService)for(const s of i)await this.injectExperienceIntoPreviewService(s);const r=this.getIntegrationProductIds()||[],o=this.getProductCollection();if(o&&r.length>0){await o.fetchProducts();const s=o.getProducts();for(const l of r)if(!s.find(d=>d.getCurrentIntegration().id===l)){for(const d of i)d.getProduct()?.integrationProducts?.map(u=>u.id)?.includes(l)&&await d.clearProduct();await this.removeIntegrationProductIds([l])}}}async updateBundle(){if(!(await S.getShadowGraphqlClient().mutate({mutation:da,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:tc,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(),i=this.globalPropertyHandleService.applyConditionsFromState(a,t),r=this.globalPropertyHandleService.applyConditionsFromState(a,e);this.checkConditionalHandlesChanged(i,r),this.checkMandatoryHandlesChanged(t,r);const o=this.getGlobalPropertyStateManager();let s=[];for(const u of a)r.find(A=>A.getName()==u.getName())||(s=[...s,u.getName()]);await o.clearAspects(s);const l=r.map(u=>{if(u.getType()===q.ColorOption||u.getType()===q.Option){const A=u;if(!e.aspects.find(g=>g.name===A.getName()))return A.initDefaultVariant()}});await Promise.all(l),await Promise.all(r.map(u=>u.applyGlobalState()));const c=this.globalPropertyStateManager.getGlobalPropertyState(),d=this.globalPropertyHandleService.applyConditionsFromState(a,c);te(r.sort(),d.sort())||(this.checkConditionalHandlesChanged(r,d),this.checkMandatoryHandlesChanged(c,d),await this.onGlobalPropertiesChanged(e,c))}checkConditionalHandlesChanged(t,e){(()=>{if(t.length!==e.length)return!0;for(let r=0;r<t.length;r++)if(t[r].getName()!==e[r].getName())return!0;return!1})()&&this.fireEvent("conditional-global-properties-changed",{globalProperties:e})}checkMandatoryHandlesChanged(t,e){const a=[],i=[],r=[],o=_i(t);e.forEach(s=>{if(s.isMandatory()){const l=s.isMandatoryFulfilled();l?i.push(s):r.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:i,remaining:r})}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:rc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id,note:t,stakeholderId:e}})}async reject(t,e){await S.getShadowGraphqlClient().mutate({mutation:oc,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 jc=C.gql`
2329
+ mutation processFlowCreate($processFlowId: String!, $inputs: [String]!) {
2330
+ processExecutionCreate(processFlowId: $processFlowId, inputs: $inputs) {
2331
+ id
2332
+ }
2333
+ }
2334
+ `;class tr{async execute(t,e,a){const r=(await S.getShadowGraphqlClient().mutate({mutation:jc,variables:{processFlowId:t,inputs:[...e.map(u=>u.getValueForTransmission())]}})).data?.processExecutionCreate?.id;if(!r)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`
2335
+ query getProcessFlowExecution($ids: [String]!) {
2336
+ processExecutions(ids: $ids) {
2337
+ id
2338
+ completedAt
2339
+ failedAt
2340
+ nodes {
2341
+ id
2342
+ type
2343
+ artifacts
2344
+ }
2345
+ }
2346
+ }
2347
+ `,variables:{ids:[r]}});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 er(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 er{constructor(t){this.execution=t}getRaw(){return this.execution}getNodes(){return this.execution.nodes.map(t=>new Yt(t))}getNodesByType(t){return this.execution.nodes.filter(e=>e.type===t).map(e=>new Yt(e))}getInputs(){return this.execution.nodes.filter(t=>t.type==="StartTerminal").map(t=>new Yt(t))}getOutputs(){return this.execution.nodes.filter(t=>t.type==="EndTerminal").map(t=>new Yt(t))}getCompletedAt(){if(this.execution.completedAt)return new Date(this.execution.completedAt)}getFailedAt(){if(this.execution.failedAt)return new Date(this.execution.failedAt)}}class Yt{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 en{constructor(t){this.value=t}getRaw(){return this.value}getValueForTransmission(){const t=this.value;return t.startsWith("[")?JSON.stringify(JSON.parse(t)):t}}var ar=(n=>(n.Transaction="Transaction",n.Bundle="Bundle",n.Product="Product",n.Variant="Variant",n.Option="Option",n.LineItem="LineItem",n.Asset="Asset",n))(ar||{});class Hc extends en{constructor(t){super(`"${t}"`)}}class an extends en{constructor(t,e){if(e!=="Asset"&&!an.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 Wc extends en{constructor(t){super(`[${t.map(e=>e.getRaw()).join(",")}]`)}}class Da{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 Qt(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 Qt(e))}}const ve=C.gql`
2348
+ query GetCustomer($emailAddress: String!) {
2349
+ customer(emailAddress: $emailAddress) {
2350
+ id
2351
+ emailAddress
2352
+ hasBundleTemplates
2353
+ partner {
2354
+ id
2355
+ }
2356
+ productCollectionCustomers {
2357
+ id
2358
+ productCollection {
2359
+ id
2360
+ }
2361
+ }
2362
+ }
2363
+ }
2364
+ `,Yc=C.gql`
2365
+ mutation CustomerCreate($details: CustomerDetailsInput!) {
2366
+ customerCreate(details: $details) {
2367
+ id
2368
+ emailAddress
2369
+ partner {
2370
+ id
2371
+ }
2372
+ }
2373
+ }
2374
+ `;C.gql`
2375
+ mutation CustomerAuthenticate($loginToken: String!) {
2376
+ customerAuthenticate(loginToken: $loginToken) {
2377
+ id
2378
+ emailAddress
2379
+ stakeholders {
2380
+ id
2381
+ type
2382
+ transaction {
2383
+ id
2384
+ }
2385
+ }
2386
+ bundleStakeholders {
2387
+ id
2388
+ authorizationStatus
2389
+ authorizationDate
2390
+ authorizationNote
2391
+ type
2392
+ bundle {
2393
+ id
2394
+ transactions {
2395
+ id
2396
+ }
2397
+ }
2398
+ }
2399
+ partner {
2400
+ id
2401
+ }
2402
+ }
2403
+ }
2404
+ `;const Jc=C.gql`
2405
+ mutation CustomerGenerateVerificationCode($emailAddress: String!) {
2406
+ customerGenerateVerificationCode(emailAddress: $emailAddress)
2407
+ }
2408
+ `;C.gql`
2409
+ mutation CustomerVerifyCode($emailAddress: String!, $verificationCode: String!) {
2410
+ customerVerifyCode(emailAddress: $emailAddress, verificationCode: $verificationCode) {
2411
+ id
2412
+ emailAddress
2413
+ loginToken
2414
+ partner {
2415
+ id
2416
+ }
2417
+ stakeholders {
2418
+ id
2419
+ type
2420
+ transaction {
2421
+ id
2422
+ }
2423
+ }
2424
+ bundleStakeholders {
2425
+ id
2426
+ authorizationStatus
2427
+ authorizationDate
2428
+ authorizationNote
2429
+ type
2430
+ bundle {
2431
+ id
2432
+ transactions {
2433
+ id
2434
+ }
2435
+ }
2436
+ }
2437
+ }
2438
+ }
2439
+ `;const Kc=C.gql`
2440
+ query CustomerMetafields($id: String!) {
2441
+ metafields(entityId: $id) {
2442
+ id
2443
+ createdAt
2444
+ updatedAt
2445
+ entityId
2446
+ value
2447
+ metafieldConfiguration {
2448
+ id
2449
+ createdAt
2450
+ updatedAt
2451
+ entityType
2452
+ metafieldType
2453
+ name
2454
+ }
2455
+ }
2456
+ }
2457
+ `;class _c{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 Xc{init(t,e,a){this.cognitoClient=new pe.CognitoIdentityProviderClient({region:e}),this.spiffRegion=t,this.userPoolClientId=a}async generateCode(t){const e=await this.cognitoClient?.send(new pe.InitiateAuthCommand({AuthFlow:"CUSTOM_AUTH",ClientId:this.userPoolClientId,AuthParameters:{USERNAME:t}}));e?.ChallengeName==="CUSTOM_CHALLENGE"&&(this.challengeSession=e.Session)}async verifyCode(t,e,a){const i=await this.cognitoClient?.send(new pe.RespondToAuthChallengeCommand({ClientId:this.userPoolClientId,ChallengeName:"CUSTOM_CHALLENGE",Session:this.challengeSession,ChallengeResponses:{USERNAME:t,ANSWER:e},ClientMetadata:{partnerId:a,environment:(this.spiffRegion||"").toLowerCase()}}));return i?.ChallengeName==="CUSTOM_CHALLENGE"&&(this.challengeSession=i.Session),i}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 pe.InitiateAuthCommand({AuthFlow:"REFRESH_TOKEN_AUTH",ClientId:this.userPoolClientId,AuthParameters:{REFRESH_TOKEN:e.RefreshToken||""}}))}}const jt=new Xc;class nr{formatCurrencyForDisplay(t,e){const a={amount:e||0,currency:t,precision:this.getPrecisionForCurrency(t)};return Qr(a).toFormat(this.getSpecialFormat(t))}getPrecisionForCurrency(t){const e=t,a=ln.code(e);return a?a.digits:2}getSpecialFormat(t){const e=t;if(ln.code(e)?.code==="CLP")return"USD0,0"}}const Fn=new nr;class ir{constructor(t,e,a,i){this.presentmentCurrency=void 0,this.presentmentCurrency=i,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,Fn.getPrecisionForCurrency(e))}subunits(t,e){return t*Math.pow(10,Fn.getPrecisionForCurrency(e))}}const Zc=async(n,t)=>{const e=await S.getShadowGraphqlClient().query({query:es(t?.assets?.metadata||!1),errorPolicy:"all",variables:{ids:n}});if(e.error)throw e.error;if(e.errors)throw e.errors.forEach(i=>console.error(i)),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(i=>{i.finalizeStepConfig||(i.finalizeStepConfig={}),i.finalizeStepConfig.termsMarkdown=i.finalizeStepConfig.termsMarkdown||i.partner.termsMarkdown}),a},td=async(n,t)=>{const a=(await t).find(i=>i.id===n);if(!a)throw new Error(`Workflow not found: ${n}`);return a},nn=async(n,t)=>{const e=n.map(s=>ie.get({id:s,options:t})),a=n.filter((s,l)=>e[l]===void 0);if(a.length===0)return Promise.all(e);const i=Zc(a,t),r=a.map(s=>ie.set({id:s,options:t},td(s,i))),o=e.filter(s=>s!==void 0);return await Promise.all(o.concat(r))},rr=async(n,t)=>(await nn([n],t))[0],ed=async n=>{const t=await S.getShadowGraphqlClient().query({query:$o,variables:{ids:n},errorPolicy:"all",fetchPolicy:"no-cache"});return t.errors&&console.error(t.errors),t.data.integrationProducts||[]};class ad{constructor(t){this.activeIntegration=void 0,this.updateTransactionState=async e=>{try{return S.getShadowGraphqlClient().mutate({...e,mutation:Vo})}catch(a){throw console.error(a),new ft("Critical - Unable to synchronize workflow state with server.")}},this.options=t,this.options.applicationKey&&to(this.options.applicationKey),console.debug("------------------------"),console.debug("Spiff Commerce Core SDK"),console.debug("Version: 36.0.0"),console.debug(`Application Key Provided: ${!!this.options.applicationKey}`),console.debug("------------------------")}configure(t){ht.setHubUrl(t.hubUrl),ht.setServerUrl(t.serverUrl),ht.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&&Zn(t.bearerAuthenticationToken),this.options.applicationKey&&this.getIntegration(),this.spiffRegion&&this.userPoolRegion&&this.userPoolClientId&&jt.init(this.spiffRegion,this.userPoolRegion,this.userPoolClientId)}getAssetManager(){return W}async getBetaEnabled(){return this.options.enableBetaFeatures?!0:(await this.getIntegration()).partner.beta===!0}getFlowService(){if(!eo())throw new Error("Application key required to use Flow Service.");return new tr}async getCurrencyContext(t){const a=(await this.getIntegration()).partner.currencyCode,r=await S.getShadowGraphqlClient().query({query:ss,errorPolicy:"all",fetchPolicy:"cache-first",variables:{from:a,to:t}}),{rateFrom:o,rateTo:s}=r.data.currencyConversion;return new ir(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=or(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}}clearCustomer(){this.customer=void 0}clearCustomerForTransaction(t){const e=Q.getMap("transactionCustomerIds");e?.has(t)&&(e.delete(t),Q.setMap("transactionCustomerIds",e))}async customerHasBundleTemplates(t){const i=(await S.getShadowGraphqlClient().query({query:ve,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;return i.id?i.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(),i=(await e.query({query:ve,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;if(!i.id){const s=(await e.mutate({mutation:Yc,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(i);const r=await this.reloadLoggedInCustomer();return{customer:this.customer||i,isAuthenticated:r}}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 i=JSON.parse(e),r=new Date().getTime()/1e3;if(!i.ExpiresIn||i.ExpiresIn<r-parseInt(t)){const l=await jt.refreshTokens();if(l?.AuthenticationResult)localStorage.setItem("last-refreshed-cognito-tokens",`${new Date().getTime()/1e3}`),i.AccessToken=l.AuthenticationResult.AccessToken,localStorage.setItem("cognito-tokens",JSON.stringify(i));else return this.logOut(),console.error("Failed to refresh tokens."),!1}const s=(await S.getShadowGraphqlClient().query({query:ve,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:Jc,variables:{emailAddress:t}}),await jt.generateCode(t)}async verifyCode(t,e){const a=(await this.getIntegration()).partner.id||"",i=await jt.verifyCode(t,e,a);if(i?.AuthenticationResult){localStorage.setItem("last-refreshed-cognito-tokens",`${new Date().getTime()/1e3}`),localStorage.setItem("cognito-tokens",JSON.stringify(i.AuthenticationResult)),localStorage.setItem("cognito-email",t);const o=(await S.getShadowGraphqlClient().query({query:ve,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),i=new Date().getTime()/1e3,r=!a?.AccessToken||Te(a.AccessToken);if(!a.ExpiresIn||a.ExpiresIn<i-parseInt(t)||r){const o=await jt.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:Kc,variables:{id:this.customer.id}})).data.metafields}async getNewBundle(t,e,a){const r=(await S.getShadowGraphqlClient().mutate({mutation:jl(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(!r?.id)throw new Error("Unable to create bundle");const o=Q.getMap("bundlePartnerIds")||new Map;o.set(r.id,r.partner.id),Q.setMap("bundlePartnerIds",o);const s=Q.getMap("bundleOwnerIds")||new Map;s.set(r.id,r.bundleOwnerId),Q.setMap("bundleOwnerIds",s);const l=new xn(this,r,void 0,void 0,r.bundleOwnerId,{eagerFetchProducts:a?.graphql?.productCollection?.eagerFetchProducts});return await l.getInitializationPromise(),l}async getExistingBundle(t,e,a,i,r){const s=Q.getMap("bundleOwnerIds")?.get(t),l={};try{const g=await this.loggedInBearerToken();l.Authorization=`Bearer ${g}`}catch{const m=Object.entries(localStorage).find(([y,w])=>y.startsWith("CognitoIdentityServiceProvider")&&y.endsWith("idToken"))?.[0]||"",f=localStorage.getItem(m);f&&!Te(f)&&(l.Authorization=`Bearer ${f}`)}const c={bundleOwnerId:s,...l,...i?.graphql?.additionalHeaders},d=await S.getShadowGraphqlClient().query({query:Vl(i?.graphql?.productCollection?.eagerFetchProducts||!1),variables:{id:t},fetchPolicy:"no-cache",context:{headers:c}});if(!d.data?.bundles||d.data?.bundles.length===0||!d.data?.bundles[0])throw new Error(`Unable to find bundle: ${t}`);const u=d.data?.bundles[0],A=Q.getMap("bundlePartnerIds")||new Map;A.set(u.id,u.partner.id),Q.setMap("bundlePartnerIds",A);const h=new xn(this,u,e,a,s,{additionalHeaders:i?.graphql?.additionalHeaders,eagerFetchProducts:i?.graphql?.productCollection?.eagerFetchProducts,existingGlobalPropertyState:d.data.globalPropertyState,readonly:i?.readonly},r);return await h.getInitializationPromise(),h}async duplicateBundle(t,e,a,i){const o={...await lr(t),...i?.graphql?.additionalHeaders},l=(await S.getShadowGraphqlClient().mutate({mutation:Hl(),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=Q.getMap("bundlePartnerIds")||new Map;c.set(l.id,l.partner.id),Q.setMap("bundlePartnerIds",c);const d=Q.getMap("bundleOwnerIds")||new Map;return d.set(l.id,l.bundleOwnerId),Q.setMap("bundleOwnerIds",d),async()=>await this.getExistingBundle(l.id,void 0,void 0,{graphql:{productCollection:{eagerFetchProducts:i?.graphql?.productCollection?.eagerFetchProducts||!1}}})}async getBundlesForCustomer(t){if(!this.customer?.id)throw new Error("Customer not authenticated.");const{includeMetadata:e,...a}=t;return(await S.getShadowGraphqlClient().query({query:nc(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:Ll,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||[],i=Q.getMap("bundlePartnerIds")||new Map;return a.forEach(r=>{r.bundle?.id&&r.bundle.partner?.id&&i.set(r.bundle.id,r.bundle.partner.id)}),Q.setMap("bundlePartnerIds",i),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),i=a[0],r=i.getWorkflow();return e&&!r&&console.error("No workflow instantiated when trying to create preview service."),e&&r&&await i.getWorkflowManager().injectIntoPreviewService(e(r)),a[0]}async getWorkflowExperiences(t,e,a,i){if(t.length===0)throw new ft("No options provided!");const r=t.map((x,T)=>({option:x,index:T})),o=r.filter(x=>x.option.type==="transaction"),s=r.filter(x=>x.option.type==="integration"||x.option.type==="external"||x.option.type==="blank"),l=50,c=ha(o,l),d=ha(s,l);let u=0;const A=S.getShadowGraphqlClient(),h=async x=>{if(x.length===0)return[];const T=x.map(X=>X.option.transactionId),L=await A.query({query:Uo,variables:{ids:T},errorPolicy:"all",fetchPolicy:"no-cache"}),k=L.data.transactions;if(u=u+k.length,i&&i(u,o.length),k.length!==x.length){const X=L.errors?.[0]?.message||"Unknown error";throw new ft(`Not all transactions were found: ${X}`)}return!this.activeIntegration&&k[0].integrationProduct?.integration&&(this.activeIntegration=Promise.resolve(k[0].integrationProduct.integration)),k.map((X,bt)=>({transaction:X,workflowId:X.workflowId,readOnly:x.find(gt=>gt.option.transactionId===X.id)?.option.readOnly??!1,index:x[bt].index}))},g=async x=>{if(x.length===0)return[];const T=await A.mutate({mutation:Ro,variables:{inputs:x.map(k=>({integrationProductId:k.option.type==="integration"?k.option.integrationProductId:void 0,externalIntegrationId:k.option.type==="external"?k.option.externalIntegrationId:void 0,externalProductId:k.option.type==="external"?k.option.externalProductId:void 0,workflowId:k.option.workflowId,designName:k.option.designName,claim:!0,quantity:k.option.quantity,recipient:k.option.recipient})),marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId},errorPolicy:"all",fetchPolicy:"no-cache"}),L=T.data?.transactionCreateMany;if(!L||L.length===0){const k=T.errors?.[0]?.message||"Unknown error";throw new ft(`Failed to create transactions: ${k}`)}return u=u+L.length,i&&i(u,o.length),L.map((k,X)=>({transaction:k,workflowId:k.workflowId,readOnly:!1,index:x[X].index}))},p=(await Promise.all([...c.map(h),...d.map(g)])).flat(),m=[...new Set(p.map(x=>x.transaction.integrationProductId))].filter(x=>x!==void 0),f=[...new Set(p.map(x=>x.workflowId))].filter(x=>x!==void 0),[y,w]=await Promise.all([(async()=>m.length>0?await ed(m):[])(),(async()=>f.length>0?await nn(f,e):[])()]),F=new Map(y.map(x=>[x.id,x])),b=new Map(w.map(x=>[x.id,x])),v=p.map(async x=>{const{transaction:T,workflowId:L,readOnly:k,index:X}=x,bt=L?b.get(L):void 0,gt=t[X];if(T.integrationProductId){const ot=F.get(T.integrationProductId);T.integrationProduct=ot,T.product=ot?.product,T.integrationProduct||console.error("failed to find transaction's product")}const ge=Q.getMap("transactionOwnerIds")||new Map;!ge.get(T.id)&&T.transactionOwnerId&&(ge.set(T.id,T.transactionOwnerId),Q.setMap("transactionOwnerIds",ge));const Ke=ge.get(T.id)||void 0,Cr=new _c({onMutate:()=>({context:{transactionOwnerId:Ke,bundleOwnerId:e?.bundleOwnerId}}),onQuery:()=>({context:{transactionOwnerId:Ke,bundleOwnerId:e?.bundleOwnerId}})}),me={workflow:bt,transaction:T,singleVariantsRenderable:gt?.workflowConfiguration?.singleVariantsRenderable,stateMutationFunc:k?async()=>{throw new O("State mutation is forbidden in read only mode!")}:async ot=>this.updateTransactionState({...ot,context:{transactionOwnerId:Ke,bundleOwnerId:e?.bundleOwnerId}}),graphQlClient:()=>Cr,readOnly:k,isReloadedTransaction:gt.type==="transaction"};if(gt.type==="transaction"&&T.workflowState){const ot=JSON.parse(T.workflowState);await ba(ot),me.reloadedState=ot}else if(!k&&gt.workflowState){const ot=JSON.parse(gt.workflowState);await ba(ot),me.reloadedState=ot}return me.delayWorkflowStateSync=!0,{experienceOptions:me,index:X,options:gt}}),M=(await Promise.all(v)).sort((x,T)=>x.index-T.index);let R=[];for(const x of M){const{experienceOptions:T,options:L}=x,k=new Wi(this,T);await k.getWorkflowManager().getInitializationPromise(),a&&a(),L.type!=="transaction"&&this.customer&&await k.attachCustomerDetails({email:this.customer.emailAddress}),R=[...R,k],k.getWorkflowManager().setWorkflowStateSyncEnabled(!0)}return R}storeCustomer(t){const e=Q.getMap("partnerCustomerIds")||new Map;e.set(t.partner.id,t.id),Q.setMap("partnerCustomerIds",e)}async getIntegrationProductById(t,e){const r=(await S.getShadowGraphqlClient().query({query:Wo(e),variables:{ids:[t]},fetchPolicy:"no-cache",errorPolicy:"all"})).data?.integrationProducts;if(!r||r.length===0||!r[0]?.id)throw new Error("Integration product not found.");return new Da(r[0])}async getIntegrationProductFromExternalIds(t,e,a){const o=(await S.getShadowGraphqlClient().query({query:Yo(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 Da(o)}async getIntegrationProduct(t){return t.type==="integration"?this.getIntegrationProductById(t.integrationProductId):this.getIntegrationProductFromExternalIds(t.externalIntegrationId,t.externalProductId)}async getShareActionsForTransaction(t){const a=(Q.getMap("transactionOwnerIds")||new Map).get(t)||void 0,i=await S.getShadowGraphqlClient().query({query:jo,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t},context:{transactionOwnerId:a}});if(!i.data.transactions||i.data.transactions.length!==1)throw new Error(`Failed to fetch share actions for transaction: ${t}`);return i.data.transactions[0].transactionShareActions}async placeOrder(t){const e=await S.getShadowGraphqlClient().mutate({mutation:os,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 or=async(n,t)=>(await S.getShadowGraphqlClient().query({query:ns,errorPolicy:"all",fetchPolicy:"no-cache",context:{headers:{"x-application-key":n},skipIntegrationCheck:!0},variables:{themeConfigurationId:t}})).data.currentIntegration,nd=async n=>{const e=await S.getShadowGraphqlClient().query({query:Go,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:n}});if(e.data.transactions.length!==0)return e.data.transactions[0]},id=async(n,t)=>(await S.getShadowGraphqlClient().query({query:as,errorPolicy:"all",variables:{themeConfigurationId:n,themeInstallId:t}})).data?.marketplaceThemeInstallConfiguration,rd=async n=>(await S.getShadowGraphqlClient().query({query:rs,errorPolicy:"all",variables:{id:n}})).data?.bundles?.[0]?.marketplaceThemeInstallConfiguration,od=async n=>(await S.getShadowGraphqlClient().query({query:is,errorPolicy:"all",variables:{id:n}})).data?.transactions?.[0]?.marketplaceThemeInstallConfiguration;async function sr(){const n={};try{const t=await this.loggedInBearerToken();n.Authorization=`Bearer ${t}`}catch{const a=Object.entries(localStorage).find(([r,o])=>r.startsWith("CognitoIdentityServiceProvider")&&r.endsWith("idToken"))?.[0]||"",i=localStorage.getItem(a);i&&!Te(i)&&(n.Authorization=`Bearer ${i}`)}return n}async function lr(n){const e=Q.getMap("bundleOwnerIds")?.get(n),a=await sr();return{bundleOwnerId:e,...a}}async function sd(n){const e=Q.getMap("transactionOwnerIds")?.get(n),a=await sr();return{transactionOwnerId:e,...a}}const ld=async n=>{const t=await lr(n),e=await S.getShadowGraphqlClient().mutate({mutation:Ac,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}`)},cd=async n=>{const t=await sd(n),e=await S.getShadowGraphqlClient().mutate({mutation:hc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{ids:[n]},context:{headers:t}});if(!e.data?.transactions||e.data.transactions.length!==1||e.data.transactions[0].id!==n)throw new Error(`Failed to find transaction to read bundle id: ${JSON.stringify(e.errors)}`);return e.data.transactions[0].bundle?.id};function cr(n,t,e,a){const i=e.width*n.zoom,r=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=Ee(n.x,t.width-c,0),s.y=Ee(n.y,t.height-d,0),s}const o=n;return o.x=Ee(o.x,-i,t.width),o.y=Ee(o.y,-r,t.height),o}function Ee(n,t,e){return Math.min(Math.max(n,t),e)}class dr{constructor(t,e){this.minZoomScale=[.03],this.maxZoomScale=[20],this._debouncedUpdateFrameOffsets=$n(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 i=a;if(i.currentFrameSources){let r=!1;for(let o=0;o<i.currentFrameSources.length;o++){const s=i.currentFrameSources[o],l=await Ae(s),c=this.frameData?this.frameData[o]:void 0;te(l,c)||(this.frameData||(this.frameData=new Array(i.currentFrameSources.length)),this.frameData[o]=l,r=!0)}r&&(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 i=Mt.get(e);i&&(this.frameData||(this.frameData=new Array(t.length)),this.frameData[a]=i)})}getImageData(){return this.imageData}getImageSrc(){if(this.imageData){if(this.imageData.svg){const t=qe(this.imageData.svg,this.imageData.colors||{},!1);return Ve(t)}return this.imageData.src}}getOffsets(){return this.offsets}setOffsets(t){this.offsets=t}setZoom(t,e,a,i){if(this.imageData&&this.offsets&&this.frameData){(!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length));const r=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(r,i),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 i=this.imageData;if(!i||!this.frameData)return;if(this.frameData.length!==t.length)throw new O("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]=cr(t[s],o,this.imageData,this.forceImageCover)}),this._debouncedUpdateFrameOffsets(this.offsets,i,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,i,r){if(!a||a.length===0||a.some(l=>!l))throw new O("Frame data not set. This is a bug");if(!this.workflowManager)throw new O("No workflow manager set, cannot update offsets.");const o=this.workflowManager.getRegionElements(this.stepName||""),s=this.workflowManager.getCommandDispatcher();this.targetElements.forEach((l,c)=>{let d=o.find(u=>u.id===l)?.regionIndex??c;d>=t.length&&(d=c),s(new U([new Gs(l,e,t[d]),new js(l,i.useThreshold,i.invertThreshold,i.threshold,i.thresholdSaturation)]))}),this.stepName&&this.workflowManager.updateStorage(this.stepName,{frameOffsetsList:t}),r&&r()}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,i)=>{const r=Math.max(a.width/t.width,a.height/t.height);this.forceImageCover?(this.minZoomScale[i]=r,this.maxZoomScale[i]=r*2.5):(this.minZoomScale[i]=r/10,this.maxZoomScale[i]=r*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]=qa(t,e,this.initialZoom&&!this.forceImageCover?{scale:this.initialZoom}:void 0,this.forceImageCover)}),this._debouncedUpdateFrameOffsets(this.offsets,t,this.frameData,this.thresholdSettings))}}class dd{traversableScenes(){throw new Error("Method not implemented.")}updateRecipient(t,e,a,i,r,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(){}getInitialOptionIds(){return new Set}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 ur=(n=>(n.SelectFrame="SelectFrame",n.SelectImage="SelectImage",n.Position="Position",n))(ur||{});class Ar extends Z{constructor(t,e,a){super(t,e,a);const i=e.data;this.frameService=new dr(i.forceImageCover,i.initialZoomLevel),this.frameService.connectWorkflowManager(t,e.stepName)}selectVariant(t){const e=this.manager.getRegionElements(this.step.stepName);return pt.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 pt.selectImage(this.step,t,this.manager,a),e){const i=this.manager.getStepStorage(this.step.stepName)?.framePatternData||{};this.manager.updateStorage(this.step.stepName,{framePatternData:{...i,originalAssetKey:t.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0}})}}async canUseBackgroundRemover(){return this.manager.getClient().canUseAddon(Qe.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 W.removeBackgroundFromAsset(e);t&&await pt.selectImage(this.step,a,this.manager,!1);const i=this.manager.getStepStorage(this.step.stepName)?.framePatternData||{};return this.manager.updateStorage(this.step.stepName,{framePatternData:{...i,backgroundRemovedAssetKey:a.key,useOriginalAsset:!t}}),a}async changeColors(t){await pt.changeColors(this.step,this.manager,t)}getImageData(){if(this.frameService)return this.frameService.getImageData()}async getColorOption(){return await P.ensureFullOption(this.step.data.colorOption)}getAvailableColors(){return this.step.data.colorPickerEnabled?pt.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 pt.getUniqueColorCount(this.step,this.manager)}getCurrentFrameStep(t,e,a,i){return i&&i.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 W.getLocalOrFromServer(t)}async getBackgroundRemovedImageSelection(){const t=this.manager.getStepStorage(this.step.stepName)?.framePatternData?.backgroundRemovedAssetKey;if(t)return W.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 i=await this.getBackgroundRemovedImageSelection();if(!i)throw new Error("You must call removeBackgroundFromImageSelection before attempting to apply the image.");await this.selectImage(i,!1,!1)}this.manager.updateStorage(this.step.stepName,{framePatternData:{...e,useOriginalAsset:t}})}getFrameStepStorage(){return this.manager.getStepStorage(this.step.stepName)}}const ud=C.gql`
2458
+ query GetLoggedInCustomer($email: String!) {
2459
+ customer(emailAddress: $email) {
2460
+ id
2461
+ }
2462
+ }
2463
+ `,rn=C.gql`
2464
+ query GetCustomerTransactions(
2465
+ $id: String!
2466
+ $limit: Int!
2467
+ $offset: Int!
2468
+ $startDate: String
2469
+ $endDate: String
2470
+ $filters: TransactionFiltersInput
2471
+ $quicksearch: String
2472
+ ) {
2473
+ customerTransactionsFeed(
2474
+ id: $id
2475
+ limit: $limit
2476
+ offset: $offset
2477
+ startDate: $startDate
2478
+ endDate: $endDate
2479
+ filters: $filters
2480
+ quicksearch: $quicksearch
2481
+ ) {
2482
+ items {
2483
+ id
2484
+ createdAt
2485
+ designName
2486
+ integrationType
2487
+ status
2488
+ workflowState
2489
+ workflowViewerLink
2490
+ workflowViewerReadOnlyLink
2491
+ product {
2492
+ minimumOrderQuantity
2493
+ id
2494
+ name
2495
+ }
2496
+ }
2497
+ total
2498
+ }
2499
+ }
2500
+ `,Ad=C.gql`
2501
+ mutation SetTransactionDesignName($id: String!, $name: String!) {
2502
+ transactionUpdate(id: $id, designName: $name) {
2503
+ id
2504
+ designName
2505
+ }
2506
+ }
2507
+ `,hd=C.gql`
2508
+ mutation DuplicateTransaction($id: String!, $template: Boolean!) {
2509
+ transactionDuplicate(id: $id, template: $template) {
2510
+ id
2511
+ workflowViewerLink
2512
+ }
2513
+ }
2514
+ `,gd=C.gql`
2515
+ query GetCustomerBundles($id: String!, $limit: Int!, $offset: Int!) {
2516
+ customerBundlesFeed(id: $id, limit: $limit, offset: $offset) {
2517
+ items {
2518
+ id
2519
+ workflowViewerLink
2520
+ createdAt
2521
+ dispatchDate
2522
+ purchaseOrder
2523
+ name
2524
+ ordered
2525
+ }
2526
+ total
2527
+ }
2528
+ }
2529
+ `,md=C.gql`
2530
+ query GetTransactionsForBundle($id: String!) {
2531
+ bundles(ids: [$id]) {
2532
+ id
2533
+ transactions {
2534
+ id
2535
+ createdAt
2536
+ designName
2537
+ integrationType
2538
+ status
2539
+ workflowState
2540
+ workflowViewerLink
2541
+ workflowViewerReadOnlyLink
2542
+ product {
2543
+ minimumOrderQuantity
2544
+ id
2545
+ name
2546
+ }
2547
+ }
2548
+ }
2549
+ }
2550
+ `,pd=C.gql`
2551
+ mutation SetBundleName($id: String!, $name: String!) {
2552
+ bundleUpdate(id: $id, name: $name) {
2553
+ id
2554
+ name
2555
+ }
2556
+ }
2557
+ `,fd=C.gql`
2558
+ mutation DuplicateBundle($id: String!, $template: Boolean!) {
2559
+ bundleDuplicate(id: $id, template: $template) {
2560
+ id
2561
+ workflowViewerLink
2562
+ }
2563
+ }
2564
+ `,Cd=C.gql`
2565
+ query GetBundleTemplates($id: String!, $limit: Int!, $offset: Int!) {
2566
+ customerBundlesFeed(id: $id, limit: $limit, offset: $offset, template: true) {
2567
+ items {
2568
+ id
2569
+ workflowViewerLink
2570
+ createdAt
2571
+ name
2572
+ ordered
2573
+ }
2574
+ total
2575
+ }
2576
+ }
2577
+ `,wd=async(n,t,e)=>await S.getShadowGraphqlClient().mutate({mutation:pd,errorPolicy:"all",variables:{id:n,name:t},context:e}),yd=async(n,t)=>await S.getShadowGraphqlClient().mutate({mutation:Ad,errorPolicy:"all",variables:{id:n,name:t}}),Sd=async(n,t)=>await S.getShadowGraphqlClient().mutate({mutation:fd,errorPolicy:"all",variables:{id:n,template:t}}),vd=async(n,t)=>await S.getShadowGraphqlClient().mutate({mutation:hd,errorPolicy:"all",variables:{id:n,template:t}}),Ed=async n=>(await S.getShadowGraphqlClient().query({query:ud,errorPolicy:"all",variables:{email:n}})).data.customer,bd=async(n,t,e)=>await S.getShadowGraphqlClient().query({query:gd,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,offset:e,limit:t}}),Id=async(n,t)=>await S.getShadowGraphqlClient().query({query:md,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n},context:t}),Bd=async(n,t,e)=>(await S.getShadowGraphqlClient().query({query:rn,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||[],Pd=async(n,t,e)=>(await S.getShadowGraphqlClient().query({query:rn,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||[],xd=async(n,t,e)=>(await S.getShadowGraphqlClient().query({query:rn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:n,quicksearch:"",filters:{link:"and",template:{value:"true"}},offset:e,limit:t}}))?.data.customerTransactionsFeed?.items||[],Fd=async(n,t,e)=>(await S.getShadowGraphqlClient().query({query:Cd,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 hr=(n=>(n.Manual="Manual",n.OnStart="OnStart",n.OnQuit="OnQuit",n.OnEnd="OnEnd",n))(hr||{}),_t=(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))(_t||{}),K;K={__e:function(n,t,e,a){for(var i,r,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((r=i.constructor)&&r.getDerivedStateFromError!=null&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(n,a||{}),o=i.__d),o)return i.__E=i}catch(s){n=s}throw n}},typeof Promise=="function"&&Promise.prototype.then.bind(Promise.resolve());var st,ua,Dn,gr=[],Aa=[],kn=K.__b,Mn=K.__r,Tn=K.diffed,Nn=K.__c,Qn=K.unmount;function Dd(){for(var n;n=gr.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(Be),n.__H.__h.forEach(ka),n.__H.__h=[]}catch(t){n.__H.__h=[],K.__e(t,n.__v)}}K.__b=function(n){st=null,kn&&kn(n)},K.__r=function(n){Mn&&Mn(n);var t=(st=n.__c).__H;t&&(ua===st?(t.__h=[],st.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.__V=Aa,e.__N=e.i=void 0})):(t.__h.forEach(Be),t.__h.forEach(ka),t.__h=[])),ua=st},K.diffed=function(n){Tn&&Tn(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(gr.push(t)!==1&&Dn===K.requestAnimationFrame||((Dn=K.requestAnimationFrame)||kd)(Dd)),t.__H.__.forEach(function(e){e.i&&(e.__H=e.i),e.__V!==Aa&&(e.__=e.__V),e.i=void 0,e.__V=Aa})),ua=st=null},K.__c=function(n,t){t.some(function(e){try{e.__h.forEach(Be),e.__h=e.__h.filter(function(a){return!a.__||ka(a)})}catch(a){t.some(function(i){i.__h&&(i.__h=[])}),t=[],K.__e(a,e.__v)}}),Nn&&Nn(n,t)},K.unmount=function(n){Qn&&Qn(n);var t,e=n.__c;e&&e.__H&&(e.__H.__.forEach(function(a){try{Be(a)}catch(i){t=i}}),e.__H=void 0,t&&K.__e(t,e.__v))};var On=typeof requestAnimationFrame=="function";function kd(n){var t,e=function(){clearTimeout(a),On&&cancelAnimationFrame(t),setTimeout(n)},a=setTimeout(e,100);On&&(t=requestAnimationFrame(e))}function Be(n){var t=st,e=n.__c;typeof e=="function"&&(n.__c=void 0,e()),st=t}function ka(n){var t=st;n.__c=n.__(),st=t}const mr=C.gql`
2578
+ fragment AddressValidationResultFields on AddressValidationResult {
2579
+ addressComplete
2580
+ address {
2581
+ formattedAddress
2582
+ regionCode
2583
+ postalCode
2584
+ administrativeArea
2585
+ locality
2586
+ sublocality
2587
+ }
2588
+ components {
2589
+ name
2590
+ type
2591
+ confirmationLevel
2592
+ inferred
2593
+ spellCorrected
2594
+ replaced
2595
+ unexpected
2596
+ }
2597
+ missingComponentTypes
2598
+ }
2599
+ `,on=C.gql`
2600
+ ${mr}
2601
+ fragment AddressValidationJobFields on AddressValidationJob {
2602
+ id
2603
+ entityId
2604
+ status
2605
+ createdAt
2606
+ updatedAt
2607
+ result {
2608
+ ...AddressValidationResultFields
2609
+ }
2610
+ }
2611
+ `,Md=C.gql`
2612
+ ${on}
2613
+ query GetAddressValidationJobs($ids: [String!]!) {
2614
+ addressValidationJobs(ids: $ids) {
2615
+ ...AddressValidationJobFields
2616
+ }
2617
+ }
2618
+ `,Td=C.gql`
2619
+ ${on}
2620
+ query GetRecipientsWithAddressValidationJobs($ids: [String!]!) {
2621
+ recipients(ids: $ids) {
2622
+ id
2623
+ addressValidationJob {
2624
+ ...AddressValidationJobFields
2625
+ }
2626
+ }
2627
+ }
2628
+ `,Nd=C.gql`
2629
+ ${mr}
2630
+ mutation ValidateRecipientAddress($id: String!) {
2631
+ recipientValidate(id: $id) {
2632
+ ...AddressValidationResultFields
2633
+ }
2634
+ }
2635
+ `,Qd=C.gql`
2636
+ ${on}
2637
+ mutation BatchValidateRecipientAddress($ids: [String!]!) {
2638
+ recipientValidateBatch(ids: $ids) {
2639
+ ...AddressValidationJobFields
2640
+ }
2641
+ }
2642
+ `,Od=C.gql`
2643
+ mutation OverrideRecipientAddress($id: String!) {
2644
+ recipientOverrideAddress(id: $id) {
2645
+ id
2646
+ }
2647
+ }
2648
+ `;var pr=(n=>(n.Confirmed="Confirmed",n.Plausible="Plausible",n.Unlikely="Unlikely",n))(pr||{}),fr=(n=>(n.Created="Created",n.Processing="Processing",n.Completed="Completed",n.Failed="Failed",n.Cancelled="Cancelled",n))(fr||{});const Rd=async n=>{const t=n.map(a=>a.getTransaction().recipient?.id).filter(a=>!!a),e=await S.getShadowGraphqlClient().query({query:Td,errorPolicy:"all",fetchPolicy:"network-only",variables:{ids:t}});return n.map(a=>{const i=a.getTransaction().recipient?.id;if(i)return e.data?.recipients?.find(r=>r.id===i)?.addressValidationJob})},$d=async n=>(await S.getShadowGraphqlClient().query({query:Md,errorPolicy:"all",fetchPolicy:"network-only",variables:{ids:n}})).data?.addressValidationJobs,Ud=async n=>n.getTransaction().recipient?.id?(await S.getShadowGraphqlClient().mutate({mutation:Nd,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 S.getShadowGraphqlClient().mutate({mutation:Qd,errorPolicy:"all",fetchPolicy:"network-only",variables:{ids:t}});return n.map(a=>{const i=a.getTransaction().recipient?.id;if(i)return e.data?.recipientValidateBatch?.find(r=>r.entityId===i)})},Ld=async n=>{const t=n.getTransaction().recipient?.id;if(!t)return;(await S.getShadowGraphqlClient().mutate({mutation:Od,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:t}})).data?.recipientOverrideAddress?.id&&(n.getTransaction().addressValidationStatus=Ta.Overridden)},qd=C.gql`
2649
+ query GetIntegrationProductsForIds($ids: [String!]!) {
2650
+ integrationProducts(ids: $ids) {
2651
+ id
2652
+ product {
2653
+ id
2654
+ name
2655
+ }
2656
+ }
2657
+ }
2658
+ `,zd=async n=>(await S.getShadowGraphqlClient().query({query:qd,variables:{ids:n}})).data.integrationProducts;exports.AddonHandle=Qe;exports.AddressValidationJobStatus=fr;exports.AddressValidationResultConfirmationLevel=pr;exports.AddressValidationStatus=Ta;exports.ArrayInput=Wc;exports.AspectType=q;exports.AssetNotFoundError=wt;exports.AssetType=ee;exports.BringForwardCommand=Ks;exports.BringToBackCommand=Js;exports.BringToFrontCommand=Ys;exports.BundleDesignCreationCartAddMode=qn;exports.CanvasCommand=$;exports.CollectionProduct=Wt;exports.ColorOptionGlobalPropertyHandle=xa;exports.CommandContext=Si;exports.ConversionDataType=_t;exports.ConversionLocation=hr;exports.CreateElementCommand=G;exports.CreateLayoutCommand=ja;exports.CurrencyContext=ir;exports.CurrencyService=nr;exports.DeleteElementCommand=Dt;exports.DigitalContentStepHandle=Gi;exports.FileUploadGlobalPropertyHandle=Yi;exports.FlowExecutionNodeResult=Yt;exports.FlowExecutionResult=er;exports.FlowService=tr;exports.FontAlignmentCommand=Pi;exports.FontColorCommand=Ii;exports.FontSizeCommand=Bi;exports.FontSourceCommand=Ia;exports.FrameService=dr;exports.FrameStep=ur;exports.FrameStepHandle=Ar;exports.GlobalPropertyHandle=Je;exports.GroupCommand=U;exports.IllustrationStepHandle=Oi;exports.InformationMessageType=he;exports.InformationStepHandle=zi;exports.IntegrationProduct=Da;exports.IntegrationType=Gn;exports.LayoutElementFactory=Vs;exports.LayoutElementType=D;exports.LayoutNotFoundError=Y;exports.LayoutRenderingPurpose=Ot;exports.MaterialStepHandle=Ri;exports.MisconfigurationError=lt;exports.MockWorkflowManager=dd;exports.ModelStepHandle=$i;exports.ModuleStepHandle=ji;exports.MoveCommand=Ls;exports.ObjectInput=an;exports.ObjectInputType=ar;exports.OptionGlobalPropertyHandle=Za;exports.OptionNotFoundError=ae;exports.ParseError=It;exports.PictureStepHandle=Ui;exports.ProductCameraRig=jn;exports.ProductCollection=tn;exports.ProductCollectionProductSortKey=Zi;exports.ProductWorkflow=Qt;exports.PromiseCache=ie;exports.PromiseQueue=Va;exports.QuestionStepHandle=Vi;exports.QueueablePromise=Ua;exports.ResizeCommand=zs;exports.ResourceNotFoundError=Rt;exports.RotateCommand=qs;exports.ScaleAxis=H;exports.SendBackwardsCommand=_s;exports.ShapeStepHandle=Li;exports.ShareActionType=zn;exports.SpiffCommerceClient=ad;exports.StakeholderType=Na;exports.StepAspectType=Ln;exports.StepHandle=Z;exports.StepType=E;exports.TextAlgorithm=xt;exports.TextChangeCommand=xi;exports.TextGlobalPropertyHandle=Ji;exports.TextInput=Hc;exports.TextStepHandle=qi;exports.UnhandledBehaviorError=O;exports.UnitOfMeasurement=Hn;exports.UpdateImageSourceCommand=Hs;exports.Variant=nt;exports.WorkflowExperienceEventType=Ne;exports.WorkflowExperienceImpl=Wi;exports.amtChannelsForAspect=Ki;exports.assetService=W;exports.browserColorToHex=ai;exports.cmPerPixel=Es;exports.currentDirection=ys;exports.dataUrlFromExternalUrl=Jr;exports.deleteBundle=ld;exports.designService=Ie;exports.determineCorrectFontSizeAndLines=Kt;exports.digitalContentStepService=Ha;exports.domParser=ct;exports.duplicateBundle=Sd;exports.duplicateTransaction=vd;exports.fetchAsString=et;exports.findAngle=hs;exports.findElement=V;exports.findPmsColors=mo;exports.frameDataCache=Mt;exports.frameStepService=pt;exports.generate=N;exports.generateCommands=Ti;exports.generateSVGWithUnknownColors=rt;exports.generateStateFromDesignInputSteps=Nl;exports.getAddressValidationJobs=$d;exports.getAttributesFromArrayBuffer=ce;exports.getAxisAlignedBoundingBox=As;exports.getBoundedOffsets=cr;exports.getBundleIdForTransaction=cd;exports.getBundleThemeConfiguration=rd;exports.getCustomer=Ed;exports.getCustomerBundles=bd;exports.getElementVertices=Ss;exports.getFrameData=Ae;exports.getGlobalPropertyStateForBundle=$l;exports.getIntegration=or;exports.getIntegrationProducts=zd;exports.getNEPoint=Cs;exports.getNWPoint=fs;exports.getOrderedTransactions=Pd;exports.getOverrideThemeConfiguration=id;exports.getPointOfRotation=ps;exports.getProductCollections=Vc;exports.getSEPoint=ws;exports.getSvgElement=He;exports.getTemplateBundles=Fd;exports.getTemplateTransactions=xd;exports.getTransaction=nd;exports.getTransactionThemeConfiguration=od;exports.getTransactionsForBundle=Id;exports.getTrueCoordinates=ms;exports.getUnorderedTransactions=Bd;exports.getValidationJobsForWorkflowExperiences=Rd;exports.getWorkflow=rr;exports.getWorkflows=nn;exports.graphQlManager=S;exports.illustrationStepService=Jt;exports.isCloseToValue=gs;exports.loadFont=Ft;exports.matchHexToPms=Ao;exports.materialStepService=Wa;exports.metafieldManager=Xi;exports.mmPerPixel=vs;exports.modelStepService=Ya;exports.modifySVGColors=qe;exports.moduleStepService=Ja;exports.nameBundle=wd;exports.nameTransaction=yd;exports.optionService=P;exports.outlineFontsInSvg=xs;exports.overrideWorkflowExperienceRecipientAddress=Ld;exports.patternImageDataCache=At;exports.persistenceService=Q;exports.pictureStepService=Ka;exports.pmsToRgb=uo;exports.questionStepService=_a;exports.registerFetchImplementation=Gr;exports.registerWindowImplementation=zr;exports.rehydrateSerializedLayout=ba;exports.rgbToPms=ei;exports.rotateAroundPoint=Ht;exports.sanitizeSvgTree=Le;exports.setBearerAuthenticationToken=Zn;exports.setCanvasModule=Oa;exports.shapeStepService=Tt;exports.shortenUrl=Fi;exports.spiffCoreConfiguration=ht;exports.stepAspectValuesToDesignInputSteps=Tl;exports.svgColorValueToDefinition=ya;exports.svgStringDimensions=Ga;exports.svgToDataUrl=Ve;exports.textStepService=j;exports.toast=ki;exports.validateWorkflowExperienceRecipient=Ud;exports.validateWorkflowExperienceRecipients=Vd;exports.xmlSerializer=Et;
2659
+ //# sourceMappingURL=index.cjs.map