@spiffcommerce/core 40.3.5 → 40.3.6
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/CHANGELOG.md +6 -0
- package/dist/index-B-fZTJaW.js +80347 -0
- package/dist/index-B-fZTJaW.js.map +1 -0
- package/dist/index-BXBj976D.js +154 -0
- package/dist/index-BXBj976D.js.map +1 -0
- package/dist/index-BvxaWFsr.cjs +2 -0
- package/dist/index-BvxaWFsr.cjs.map +1 -0
- package/dist/index-Fm4XiPgH.cjs +2906 -0
- package/dist/index-Fm4XiPgH.cjs.map +1 -0
- package/dist/index.cjs +1 -2689
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +184 -18154
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -2
package/dist/index.cjs
CHANGED
|
@@ -1,2690 +1,2 @@
|
|
|
1
|
-
"use strict";var lr=Object.create;var rn=Object.defineProperty;var cr=Object.getOwnPropertyDescriptor;var dr=Object.getOwnPropertyNames;var ur=Object.getPrototypeOf,Ar=Object.prototype.hasOwnProperty;var hr=(i,t,e,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of dr(t))!Ar.call(i,n)&&n!==e&&rn(i,n,{get:()=>t[n],enumerable:!(a=cr(t,n))||a.enumerable});return i};var gr=(i,t,e)=>(e=i!=null?lr(ur(i)):{},hr(t||!i||!i.__esModule?rn(e,"default",{value:i,enumerable:!0}):e,i));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("@apollo/client/core/index.js"),mr=require("@apollo/client/link/context/index.js"),pr=require("@apollo/client/link/error/index.js"),fr=require("react-dom/server"),Cr=require("@apollo/client/link/remove-typename/index.js"),wr=require("exifr/dist/mini.esm.mjs"),Pn=require("css"),yr=require("fuse.js"),Ma=require("pith"),ga=require("lodash.chunk"),Ct=require("lodash.clonedeep"),P=require("react/jsx-runtime"),ma=require("opentype.js"),Sr=require("html-entities"),vr=require("react"),Er=require("handlebars"),br=require("data-uri-to-buffer"),fe=require("@aws-sdk/client-cognito-identity-provider"),Ir=require("dinero.js"),Br=require("currency-codes"),xn=require("lodash.debounce"),te=require("lodash.isequal"),pa=require("unicode-default-word-boundary"),Fn=require("qrcode"),Pr=require("svg-path-bbox"),xr=require("lodash.omit");function Fr(i){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const e in i)if(e!=="default"){const a=Object.getOwnPropertyDescriptor(i,e);Object.defineProperty(t,e,a.get?a:{enumerable:!0,get:()=>i[e]})}}return t.default=i,Object.freeze(t)}const sn=Fr(Br);var ee=(i=>(i.Data="Data",i.Font="Font",i.Frame="Frame",i.Illustration="Illustration",i.Image="Image",i.Model="Model",i.Material="Material",i.Color="Color",i.QuestionnaireCollateral="QuestionnaireCollateral",i.RequestCollateral="RequestCollateral",i.SignupCollateral="SignupCollateral",i.Video="Video",i.ColorProfile="ColorProfile",i.Environment="Environment",i))(ee||{}),Dn=(i=>(i.AND="AND",i.OR="OR",i))(Dn||{}),z=(i=>(i.FileUpload="FileUpload",i.Option="Option",i.ColorOption="ColorOption",i.Text="Text",i))(z||{}),E=(i=>(i.Information="Information",i.Bulk="Bulk",i.DigitalContent="DigitalContent",i.Finish="Finish",i.Frame="Frame",i.Illustration="Illustration",i.Introduction="Introduction",i.Material="Material",i.Model="Model",i.Module="Module",i.Picture="Picture",i.Photo="Photo",i.ProductOverlay="ProductOverlay",i.Question="Question",i.Shape="Shape",i.SilentIllustration="SilentIllustration",i.Text="Text",i))(E||{}),kn=(i=>(i.Color="Color",i.Colors="Colors",i.Selection="Selection",i.Selections="Selections",i.Text="Text",i.Upload="Upload",i))(kn||{}),Nt=(i=>(i.ThreeD="ThreeD",i.FreeDesign="FreeDesign",i.Print="Print",i))(Nt||{}),D=(i=>(i.Frame="frame",i.Group="group",i.Image="image",i.Pattern="pattern",i.Illustration="illustration",i.Textbox="textbox",i))(D||{}),Mn=(i=>(i.Default="Default",i.FirstTransaction="FirstTransaction",i.OneToOne="OneToOne",i))(Mn||{}),Ta=(i=>(i.Pending="Pending",i.Failed="Failed",i.Validated="Validated",i.Overridden="Overridden",i))(Ta||{}),Tn=(i=>(i.Hyperlink="Hyperlink",i.Edit="Edit",i.Approve="Approve",i))(Tn||{}),Nn=(i=>(i.Hub="Hub",i.Shopify="Shopify",i))(Nn||{}),Oe=(i=>(i.AdvancedImageManipulation="BackgroundRemover",i.ConversionAccelerator="Conversion Accelerator",i.ProcessBuilder="ProcessBuilder",i))(Oe||{}),Qn=(i=>(i[i.Orbit=0]="Orbit",i[i.Pan=1]="Pan",i))(Qn||{}),Na=(i=>(i.Owner="Owner",i.Approver="Approver",i.Editor="Editor",i.Viewer="Viewer",i))(Na||{}),Bt=(i=>(i.Autosize="Autosize",i.Traditional="Traditional",i))(Bt||{}),Y=(i=>(i[i.North=0]="North",i[i.Northeast=1]="Northeast",i[i.East=2]="East",i[i.Southeast=3]="Southeast",i[i.South=4]="South",i[i.Southwest=5]="Southwest",i[i.West=6]="West",i[i.Northwest=7]="Northwest",i))(Y||{}),On=(i=>(i.Pixel="px",i.Millimeter="mm",i.Centimeter="cm",i))(On||{}),Jt=(i=>(i.Email="Email",i.FirstName="FirstName",i.LastName="LastName",i.Phone="Phone",i.Apartment="Apartment",i.City="City",i.Country="Country",i.OrganizationName="OrganizationName",i.PostCode="PostCode",i.State="State",i.StreetAddress="StreetAddress",i.Custom="Custom",i))(Jt||{});class Rn extends Error{constructor(t){super(t),this.name=this.constructor.name}}class se extends Rn{constructor(t){super(`ConfigurationError - ${t}`)}}class ae extends se{constructor(t){super(`Option not Configured: ${t.stepTitle}`),this.optionId=t?.optionId||"N/A"}}class J extends se{constructor(t){super(`Panel not Found: ${t.panelId}`),this.panelId=t?.panelId||"N/A"}}class wt extends se{constructor(t){super(`Asset not found for variant: ${t.name}`),this.variant=t}}class Qt extends se{constructor(t){super(`Resource not found for asset: ${t.name}`),this.asset=t}}class st extends se{constructor(t,e){super(`Workflow Misconfiguration: ${t.stepName} - ${e}`),this.step=t}}class Re extends Rn{constructor(t){super(`ImplementationError - ${t}`)}}class O extends Re{constructor(t){super(`Unhandled Behavior Encountered: ${t}`)}}class It extends Re{constructor(t){super(`Parsing Error: ${t}`)}}class mt extends Re{constructor(t){super(`Client Error: ${t}`)}}class $e extends Re{constructor(t){super(`Resource Generation Failed: ${t}`)}}class Dr{get(t){return localStorage.getItem(t)||void 0}set(t,e){localStorage.setItem(t,e)}remove(t){localStorage.removeItem(t)}getMap(t){const e=this.get(t);if(e)return new Map(JSON.parse(e))}setMap(t,e){const a=JSON.stringify([...e.entries()]);this.set(t,a)}}class on{constructor(){this.storage=new Map}get(t){return this.storage.get(t)||void 0}set(t,e){this.storage.set(t,e)}remove(t){this.storage.delete(t)}getMap(t){const e=this.get(t);if(e)return new Map(JSON.parse(e))}setMap(t,e){const a=JSON.stringify([...e.entries()]);this.set(t,a)}}const kr=()=>{try{return localStorage?new Dr:new on}catch{return console.warn("Local storage was unavilable due to browser security settings. Using in-memory storage instead."),new on}},Q=kr();class Mr{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 At=new Mr;let fa,Ca;function Tr(i){fa=i}function Nr(i){Ca=i}function oe(){return fa?new fa().window:(console.log("DOM constructor is not registered. Assuming browser environment. If not, please register DOM constructor before calling this function."),window)}function nt(i,t){if(!Ca){if(typeof window<"u"&&window.fetch)return window.fetch(i,t);if(typeof global<"u"&&global.fetch)return global.fetch(i,t);throw new Error("Fetch implementation is not registered. Please register it before calling this function.")}return Ca(i,t)}const $n=new Map,ln=new Map,cn=new Map,Un=async i=>{const t=ln.get(i);if(t)return t;const a=(async()=>{const n=await nt(i);return $n.set(i,n.headers?.get("content-type")||""),await n.arrayBuffer()})();return ln.set(i,a),a},Qr=async i=>{const t=cn.get(i);if(t)return t;const a=(async()=>await(await nt(i)).text())();return cn.set(i,a),a},$t=i=>i.every(t=>t!=="undefined"),Ce=i=>$t([typeof document])?document.createElement(i):oe().document.createElement(i),Or=(i,t)=>{if($t([typeof document]))return document.createElementNS(i,t);const a=oe().document.createElement(t);return a.setAttribute("xmlns",i),a},ot=()=>{if($t([typeof DOMParser]))return new DOMParser;const i=oe();return new i.DOMParser},Rr=()=>$t([typeof DOMParser])?DOMParser:oe().DOMParser,Ue=(i,t)=>new Promise((e,a)=>{t?Un(i).then(e).catch(a):nt(i).then(n=>{n.arrayBuffer().then(e).catch(a)}).catch(n=>{a(n)})}),tt=(i,t)=>new Promise((e,a)=>{t?Qr(i).then(e).catch(a):nt(i).then(n=>{n.text().then(e).catch(a)}).catch(a)}),Vn=i=>fr.renderToStaticMarkup(i),ta=new Map,$r=async(i,t)=>{if($t([typeof FontFace])){if(ta.has(t))return ta.get(t);const e=i.names.fullName.en,a=new FontFace(e,`url(${t})`);document.fonts.add(a);const n=a.load();return ta.set(t,n),n}},Et=()=>{if($t([typeof XMLSerializer]))return new XMLSerializer;const i=oe();return new i.XMLSerializer},dn=i=>btoa(i),Ve=i=>{function t(){const a=new Uint8Array(i),n=4;if(a.length>=n){const r=new Array(n);for(let l=0;l<n;l++)r[l]=new Uint8Array(i)[l].toString(16);const s=r.join("").toUpperCase();switch(s){case"89504E47":return"image/png";case"47494638":return"image/gif";case"25504446":return"application/pdf";case"504B0304":return"application/zip"}if(s.slice(0,4)==="FFD8")return"image/jpeg"}return null}const e=t();return e||"image/svg+xml"},Ur=async i=>{const t=await Un(i),e=$n.get(i)||Ve(t);return await zr(new Blob([t],{type:e}))},Vr=i=>{let t="";const e=i.byteLength;for(let a=0;a<e;a++)t+=String.fromCharCode(i[a]);return t},Lr=async i=>{const t=Ve(i),e=new Uint8Array(i),a=Vr(e),n=btoa(a);return`data:${t};base64,${n}`},Le=i=>`data:image/svg+xml;base64,${btoa(i)}`,Ln=i=>{const t=i.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 n=!1;for(let s=1;s<a.length;s++)a[s]==="base64"&&(n=!0);const r=decodeURI(t.substring(e+1));return n?new Uint8Array(atob(r).split("").map(o=>o.charCodeAt(0))).buffer:new Uint8Array(r.split("").map(o=>o.charCodeAt(0))).buffer},zr=i=>new Promise((t,e)=>{const a=new FileReader;a.onload=function(n){const r=n.target;!r||!r.result?e():t(r.result.toString())},a.readAsDataURL(i)});let qr,Qa;const Gr=i=>{Qa=i},jr=()=>Qa;let zn;const qn=i=>{zn=i},Wr=()=>new Promise(i=>{const t=At.getHubUrl(),e=a=>{a.origin===t&&(window.removeEventListener("message",e),i(a.data))};window.parent!==window&&(window.addEventListener("message",e,!1),window.parent.postMessage("ready",t))}),Hr=async()=>{const i={applicationKey:Qa,customerToken:qr,bearer:zn};return typeof window<"u"&&(window.location.href.includes("/workflows/product/")||window.location.href.includes("hub=true"))?{...await Wr(),...i}:i};async function Yr(i,t){const e=At.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 n=await nt(i,{...t,redirect:"manual"});return(n.type==="opaqueredirect"||n.status===307)&&(typeof i!="string"&&"url"in i?n=await nt({...i,url:`${a}/graphql`},t):n=await nt(`${a}/graphql`,t)),n}class Jr{constructor(){this.shadowGraphqlClient=this.constructShadowGraphqlClient(),At.addServerUrlCallback(()=>{this.shadowGraphqlClient=this.constructShadowGraphqlClient()})}setSpiffCommerceClient(t){this.spiffClient=t,this.shadowGraphqlClient=this.constructShadowGraphqlClient()}getShadowGraphqlClient(){return this.shadowGraphqlClient}constructShadowGraphqlClient(){const t=f.createHttpLink({uri:`${At.getServerUrl()}/graphql`,fetch:Yr}),e=mr.setContext(async(r,s)=>{const{headers:o}=s,l=o||{},c=await Hr();let d=s.bearer??c.bearer,u=!1;if(this.spiffClient){try{d=await this.spiffClient.loggedInBearerToken()}catch{}try{s.skipIntegrationCheck||(u=await this.spiffClient.getBetaEnabled())}catch{}}const A=s.partnerId??c.partnerId,h=s.activeIntegration??c.activeIntegration,g=s.transactionOwnerId,p=s.customerToken??c.customerToken,m=s.applicationKey??c.applicationKey,C=s.bundleOwnerId;try{if(window&&window.__SENTRY__){const S=window.__SENTRY__.hub;if(S){const w=S.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),C&&(l.bundleOwnerId=C),u&&(l["X-Spiff-Beta"]="true"),l["Allow-Moonlight-Redirect"]="true",{headers:l}}),a=pr.onError(({operation:r,graphQLErrors:s,networkError:o})=>{const l=s||[],c=r.getContext();o&&!c?.fetchOptions?.signal?.aborted&&console.log("GraphQL Network error"),l.forEach(()=>console.log("GraphQL Error: "+r.operationName))}),n=Cr.removeTypenameFromVariables();return new f.ApolloClient({link:f.from([n,a,e,t]),cache:new f.InMemoryCache,name:"Core"})}}const y=new Jr;let wa,ya;const yt=(i,t,e)=>{if(wa!==void 0)return wa(i,t,e);try{const a=Gn(!0);return Oa(a),a.createCanvas(i,t,e)}catch{throw new Error("Canvas module not set")}},le=(i,t)=>{if(ya!==void 0)return ya(i,t);try{const e=Gn(!0);return Oa(e),e.loadImage(i,t)}catch{throw new Error("Canvas module not set")}};function Oa(i){wa=i?.createCanvas,ya=i?.loadImage}function Gn(i){try{if(document.createElement("canvas").getContext("2d"))return{createCanvas:(e,a,n)=>{const r=document.createElement("canvas");return e!=null&&(r.width=e),a!=null&&(r.height=a),r},loadImage:(e,a)=>new Promise((n,r)=>{const s=document.createElement("img");a!==!1&&(s.crossOrigin="Anonymous"),s.onload=()=>{n(s)},s.onerror=r,s.src=e})}}catch(t){throw t}}let ea;function Ra(){return ea===void 0&&(ea=Rr()),ea}let we=null;const Kr=i=>new Promise(t=>{if(Ve(i)!=="image/jpeg")return t(1);wr.orientation(i).then(a=>t(a||1)).catch(()=>t(1))}),Xr=async()=>{if(we!==null)return!we;const t=await le("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/xABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAAAAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQvoP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXwH/9k=");return we=t.width===2&&t.height===3,!we},Zr=i=>{const e=i.naturalWidth/i.naturalHeight;return i.naturalHeight<=8192&&i.naturalWidth<=8192?[i.naturalWidth,i.naturalHeight]:i.naturalHeight>i.naturalWidth?[e*8192,8192]:[8192,8192/e]},_r=async i=>{const t=await Lr(i),e=await le(t),[a,n]=Zr(e);if(!await Xr()){const u=yt(a,n);return u.getContext("2d")?.drawImage(e,0,0,a,n),u}const s=await Kr(i),[o,l]=s>4?[n,a]:[a,n],c=yt(o,l),d=c.getContext("2d");switch(s){case 2:d.translate(o,0),d.scale(-1,1);break;case 3:d.translate(o,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(-o,0);break;case 7:d.rotate(-.5*Math.PI),d.translate(-o,l),d.scale(1,-1);break;case 8:d.rotate(.5*Math.PI),d.translate(0,-l);break}return d.drawImage(e,0,0,o,l),c},ce=async i=>{const t=await _r(i);return Ve(i)==="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"],Ot=["FEDD00","FFD700","FE5000","F9423A","EF3340","CE0058","E10098","BB29BB","440099","10069F","001489","0085CA","00AB84","2D2926","F2F0A1","FCAEBB","F1B2DC","BF9BDE","74D1EA","9DE7D7","9E978E","009ACE","44D62C","FFE900","FFAA4D","FF7276","FF3EB5","EA27C2","84754E","85714D","866D4B","8B6F4E","87674F","8B634B","8A8D8F","FFD900","FF5E00","F93822","CE0056","D62598","4E008E","00239C","0084CA","00B08B","222223","F6EB61","F7EA48","FCE300","C5A900","AF9800","897A27","F5E1A4","ECD898","EED484","F4DA40","F2CD00","F1C400","CBA052","F9E547","FBE122","FEDB00","FFD100","DAAA00","AA8A00","9C8412","FAE053","FBDD40","FDDA24","FFCD00","C99700","AC8400","897322","F3DD6D","F3D54E","F3D03E","F2A900","CC8A00","A07400","6C571B","F8E08E","FBD872","FFC845","FFB81C","C69214","AD841F","886B25","FBDB65","FDD757","FED141","FFC72C","EAAA00","B58500","9A7611","FFC600","FFB500","D19000","B47E00","73531D","5A4522","4B3D2A","D29F13","B78B20","9F7D23","967126","8F6A2A","7D622E","6C5D34","FDD26E","FFC658","FFBF3F","FFA300","DE7C00","AF6D04","74531C","FDD086","FFC56E","FFB549","FF9E1B","D57800","996017","6E4C1E","F2C75C","F1BE48","F1B434","ED8B00","CF7F00","A76D11","715C2A","F6BE00","F0B323","FEAD77","E6A65D","D38235","DC8633","C16C18","BD9B60","D69A2D","DB8A06","CD7925","AD6433","89532F","775135","D78825","D3832B","C67D30","B67233","A7662B","9E6A38","835D32","FCC89B","FDBE87","FDAA63","F68D2E","EA7600","D45D00","BE4D00","FECB8B","FFC27B","FFB25B","FF8200","E57200","BE6A14","9B5A1A","EFD19F","EFBE7D","ECA154","E87722","CB6015","A1561C","603D20","FFAE62","FF8F1C","FF6900","B94700","94450B","653819","FFB990","FFA06A","FF7F32","FF6A13","D86018","A65523","8B4720","FFBE9F","FF9D6E","FF7F41","FF671F","E35205","BE531C","73381D","DB864E","E07E3C","DC6B2F","DC582A","C05131","864A33","674736","FFA38B","FF8D6D","FF6A39","FC4C02","DC4405","A9431E","833921","FFB3AB","FF8674","FF5C39","FA4616","CF4520","963821","6B3529","C4622D","BA5826","AF5C37","9E5330","924C2E","7B4D35","5C4738","D4B59E","C07D59","B15533","9D432C","7C3A2D","6B3D2E","5C3D31","D14124","BD472A","B33D26","8D3F2B","83412C","7B4931","674230","E4D5D3","E1BBB4","D6938A","C26E60","A4493D","823B34","683431","DDBCB0","CA9A8E","BC8A7E","A37F74","866761","6B4C4C","583D3E","EABEB0","C09C83","B46A55","AB5C57","A45248","9A6A4F","8A391B","ECC3B2","ECBAA8","EAA794","E8927C","DA291C","9A3324","653024","FFB1BB","FF808B","FF585D","E03C31","BE3A34","81312F","FFA3B5","FF8DA1","F8485E","EE2737","D22630","AF272F","7C2529","FCAFC0","FB637E","F4364C","CB333B","A4343A","643335","C66E4E","C04C36","B7312C","AB2328","93272C","8A2A2B","802F2D","E1523D","C63527","A72B2A","9E2A2B","6D3332","633231","572D2D","E6BAA8","E56A54","E04E39","CD545B","B04A5A","9B2242","651D32","FABBCB","FC9BB3","F65275","E4002B","C8102E","A6192E","76232F","ECC7CD","E89CAE","DF4661","D50032","BA0C2F","9D2235","862633","F8A3BC","F67599","EF426F","E40046","BF0D3E","9B2743","782F40","F5B6CD","F59BBB","EF4A81","E0004D","C5003E","A6093D","8A1538","F5DADF","F7CED7","F9B5C4","F890A5","EF6079","E03E52","CB2C30","F2D4D7","F4C3CC","F2ACB9","E68699","D25B73","B83A4B","9E2A2F","ECB3CB","E782A9","E0457B","CE0037","A50034","861F41","6F263D","F99FC9","F57EB6","F04E98","E31C79","CE0F69","AC145A","7D2248","F4CDD4","E06287","E24585","B52555","A4123F","971B2F","6A2C3E","D6C9CA","C4A4A7","C16784","C63663","BC204B","912F46","7E2D40","EABEDB","E56DB1","DA1884","A50050","910048","6C1D45","936D73","934054","8E2C48","732E4A","672E45","582D40","502B3A","EF95CF","EB6FBD","DF1995","D0006F","AA0061","890C58","672146","F4A6D7","F277C6","E93CAC","C6007E","A20067","840B55","EAD3E2","E6BCD8","DFA0C9","D986BA","C6579A","AE2573","960051","E5CEDB","E3C8D8","DEBED2","C996B6","B06C96","994878","7C2855","E4C6D4","DCB6C9","D0A1BA","BE84A3","A76389","893B67","612141","EBBECB","E8B3C3","E4A9BB","D592AA","84344E","6F2C3F","572932","E2BCCB","DCA9BF","C9809E","B55C80","A73A64","9B3259","872651","E9CDD0","E4BEC3","D7A3AB","C48490","B46B7A","984856","893C47","F2C6CF","F1BDC8","E9A2B2","DC8699","8F3237","7F3035","5D2A2C","E9C4C7","E5BAC1","DAA5AD","C6858F","7A3E3A","6A3735","512F2E","DFC2C3","DBB7BB","CCA1A6","B07C83","9C6169","874B52","3F2021","F1A7DC","EC86D0","E45DBF","DB3EB1","C5299B","AF1685","80225F","EFBAE1","E277CD","D539B5","C800A1","B0008E","9E007E","830065","EAB8E4","E59BDC","DD7FD3","C724B1","BB16A3","A51890","80276C","A56E87","A83D72","991E66","8A1B61","722257","6A2A5B","5E2751","E7BAE4","DD9CDF","C964CF","AD1AAC","981D97","72246C","EBC6DF","E6BEDD","E2ACD7","D48BC8","93328E","833177","612C51","EEDAEA","CCAED0","D59ED7","B288B9","A277A6","9F5CC0","963CBD","D7A9E3","C98BDB","AC4FC6","9B26B6","87189D","772583","653165","948794","A2789C","A15A95","8E3A80","6E2B62","6A3460","5D3754","D5C2D8","C9B1D0","BA9CC5","A57FB2","642F6C","59315F","4B3048","DBCDD3","D0BEC7","C6B0BC","AF95A6","86647A","66435A","4A3041","D8C8D1","D3C0CD","BFA5B8","9B7793","7E5475","693C5E","512A44","DFC8E7","D7B9E4","CAA2DD","B580D1","8031A7","702F8A","572C5F","D6BFDD","C6A1CF","8C4799","6D2077","642667","5D285F","51284F","CBA3D8","B884CB","A05EB5","84329B","702082","671E75","5F2167","9991A4","8D6E97","7A4183","6B3077","653279","5E366E","5C4E63","C1A0DA","A77BCA","8246AF","5C068C","500778","470A68","3C1053","D7C6E6","C1A7E2","9063CD","753BBD","5F259F","582C83","512D6D","C5B4E3","AD96DC","9678D3","7D55C7","330072","2E1A47","B4B5DF","9595D2","7474C1","24135F","211551","201747","221C35","A7A4E0","8B84D7","685BC7","2E008B","280071","250E62","201547","6E7CA0","686E9F","615E9B","565294","514689","4C4184","535486","DDDAE8","B6B8DC","A7A2C3","8986CA","5D4777","4B384C","41273B","878CB4","7C7FAB","7566A0","6F5091","68478D","563D82","523178","E5E1E6","E0DBE3","C6BCD0","A192B2","7C6992","614B79","3F2A56","D8D7DF","C6C4D2","B3B0C4","8D89A5","595478","403A60","1E1A34","C5CFDA","BBC7D6","A2B2C8","8E9FBC","1B365D","1F2A44","1C1F2A","D9E1E2","A4BCC2","98A4AE","768692","425563","253746","131E29","B9D3DC","A3C7D2","8DB9CA","6BA4B8","003D4C","00313C","072B31","BFCED6","B7C9D3","A6BBC8","7A99AC","5B7F95","4F758B","081F2C","D1DDE6","C6D6E3","9BB8D3","7DA1C4","5E8AB4","236192","002E5D","DBE2E9","CED9E5","A7BCD6","7D9BC1","326295","003A70","002554","DDE5ED","C8D8EB","B1C9E8","7BA4DB","407EC9","003594","001A70","BDC5DB","89ABE3","8094DD","7BA6DE","5F8FB4","3A5DAE","606EB2","CBD3EB","9FAEE5","485CC7","1E22AA","171C8F","151F6D","141B4D","B8CCEA","5C88DA","0047BB","06038D","001871","001E62","071D49","C3D7EE","A7C6ED","307FE2","001A72","001E60","13294B","ABCAE9","8BB8E8","418FDE","012169","00205B","041E42","92C1E9","6CACE4","0072CE","0033A0","003087","002D72","0C2340","94A9CB","6787B7","426DA9","385E9D","2C5697","1D4F91","1D428A","C6DAE7","BDD6E6","A4C8E1","7BAFD4","003C71","003057","00263A","B9D9EB","9BCBEB","69B3E7","003DA5","002F6C","002855","041C2C","8DC8E8","62B5E5","009CDE","0057B8","004C97","003865","00263E","71C5E8","41B6E6","00A3E0","005EB8","004B87","003B5C","002A3A","4698CB","298FC2","0076A8","006298","005587","004976","01426A","99D6EA","5BC2E7","00A9E0","0077C8","00629B","004F71","003E51","7BA7BC","6399AE","4E87A0","41748D","34657F","165C7D","005776","BBDDE6","71B2C9","4298B5","0086BF","007DBA","00558C","002B49","9ADBE8","59CBE8","00B5E2","006BA6","00587C","003B49","A4DBE8","8BD3E6","4EC3E0","00AFD7","0095C8","0082BA","0067A0","48A9C5","009CBD","0085AD","007096","006A8E","00617F","005670","B8DDE1","9BD3DD","77C5D5","3EB1C8","0093B2","007396","005F83","6AD1E3","05C3DE","00A9CE","0092BC","007FA3","00677F","004851","68D2DF","00C1D5","00AEC7","008EAA","00778B","006272","004F59","63B1BC","00A7B5","0097A9","00859B","007D8A","007680","006269","B1E4E3","88DBDF","2DCCD3","009CA6","008C95","007377","005F61","A0D1CA","40C1AC","00B0B9","00A3AD","007398","005F86","005A70","7EDDD3","5CB8B2","279989","007681","487A7B","0D5257","244C5A","B6CFD0","ABC7CA","94B7BB","7FA9AE","4F868E","115E67","07272D","00968F","00857D","007672","006D68","00635B","005E5D","005151","9CDBD9","64CCC9","00B2A9","008675","007367","00685E","00534C","71DBD4","2AD2C9","00BFB3","00A499","008578","00594F","004C45","7CE0D3","2CD5C4","00C7B1","00B398","009681","007864","004E42","6DCDB8","49C5B1","00AB8E","009B77","008264","006A52","034638","B9DCD2","A1D6CA","86C8BC","6BBBAE","006F62","00594C","1D3C34","B5E3D8","A5DFD3","98DBCE","6BCABA","00816D","006C5B","173F35","ADCAB8","9ABEAA","85B09A","6FA287","28724F","205C40","284734","BFCEC2","A7BDB1","92ACA0","7F9C90","5C7F71","43695B","183028","BAC5B9","B0BDB0","A3B2A4","94A596","708573","5E7461","22372B","BCC9C5","B1C0BC","9DB0AC","829995","5D7975","3E5D58","18332F","D1E0D7","B7CDC2","9AB9AD","789F90","507F70","285C4D","13322B","A7E6D7","8CE2D0","3CDBC0","009775","007B5F","00664F","8FD6BD","6ECEB2","00B388","00965E","007A53","006747","115740","50A684","00966C","008755","007B4B","006F44","006845","005844","7AE1BF","47D7AC","00C389","00AF66","007749","006341","154734","A0DAB3","91D6AC","71CC98","009A44","00843D","046A38","2C5234","A2E4B8","8FE2B0","80E0A7","00B140","009639","007A33","215732","9BE3BF","26D07C","00BF6F","00B74F","009F4D","275D38","00573F","4B9560","228848","007A3E","007041","286140","36573B","395542","6BA539","48A23F","319B42","3A913F","44883E","4A773C","44693D","ADDC91","A1D884","6CC24A","43B02A","509E2F","4C8C2B","4A7729","D0DEBB","BCE194","8EDD65","78D64B","74AA50","719949","79863C","C2E189","B7DD79","A4D65E","78BE20","64A70B","658D1B","546223","D4EB8E","CDEA80","C5E86C","97D700","84BD00","7A9A01","59621D","C4D6A4","BCD19B","B7CE95","A9C47F","789D4A","67823A","4E5B31","D0D1AB","C6C89B","BABD8B","A2A569","8A8D4A","6D712E","3D441E","D2CE9E","CBC793","C0BB87","AFA96E","A09958","89813D","555025","C3C6A8","B3B995","A3AA83","899064","737B4C","5E6738","3E4827","BFCC80","BBC592","9CAF88","8F993E","76881D","7A7256","5B6236","BABC16","ABAD23","999B30","888D30","7C8034","727337","656635","E2E868","DBE442","CEDC00","C4D600","A8AD00","949300","787121","E9EC6B","E3E935","E0E721","D0DF00","B5BD00","9A9500","827A04","E3E48D","E0E27C","DBDE70","D2D755","B7BF10","8E8C13","625D20","F0EC74","EDE939","ECE81A","E1E000","BFB800","ADA400","A09200","F3EA5D","F3E500","EFDF00","EEDC00","BBA600","9A8700","685C20","F1EB9C","F0E991","F0E87B","EDE04B","EADA24","E1CD00","CFB500","EBE49A","E9E186","E6DE77","E1D555","D7C826","C4B000","B39B00","E9DF97","E4D77E","DECD63","D9C756","B89D18","A28E2A","695B24","DCD59A","D6CF8D","D0C883","C0B561","AC9F3C","9F912A","8A7B19","CAB64B","CFB023","C1A01E","A08629","897630","736635","675E33","D4C304","C4B200","91852C","747136","5D6439","585C3B","535435","BBB323","B4A91F","AA9D2E","8F7E35","716135","635939","4E4934","D5CB9F","CFC493","C5B783","B3A369","998542","8C7732","614F25","CAC7A7","BFBB98","B0AA7E","9B945F","594A25","524727","4A412A","F1E6B2","DFD1A7","D9C89E","CEB888","A89968","94795D","816040","DDCBA4","D3BC8D","C6AA76","B9975B","8B5B29","744F28","5C462B","EFDBB2","FCD299","E1B87F","D6A461","C6893F","B77729","A6631B","EDC8A3","E7B78A","DDA46F","C88242","B36924","934D11","7D3F16","F3CFB3","F1C6A7","F0BF9B","E59E6D","B86125","A45A2A","693F23","E0C09F","D9B48F","CDA077","B58150","9E652E","774212","623412","E0C6AD","DCBFA6","CDA788","BF9474","AD7C59","946037","4F2C1D","E1B7A7","D5A286","C58B68","99552B","85431E","6D4F47","5E4B3C","D7C4B7","CDB5A7","C0A392","AE8A79","956C58","7C4D3A","5B3427","DBC8B6","D3BBA8","C6A992","AA8066","703F2A","623B2A","4E3629","D6D2C4","C5B9AC","B7A99A","A39382","7A6855","63513D","473729","D1CCBD","B7B09C","A69F88","A7ACA2","949A90","8E9089","4B4F54","D0D3D4","C1C6C8","A2AAAD","7C878E","5B6770","333F48","1D252D","C7C9C7","B2B4B2","9EA2A2","898D8D","707372","54585A","25282A","BEC6C4","A2ACAB","919D9D","717C7D","505759","3F4444","373A36","BABBB1","A8A99E","919388","7E7F74","65665C","51534A","212322","C4BFB6","AFA9A0","9D968D","8C857B","776E64","696158","C4BCB7","B2A8A2","978C87","857874","746661","5E514D","382F2D","D0C4C5","C1B2B6","AB989D","7B6469","584446","453536","382E2C","D7D2CB","CBC4BC","BFB8AF","B6ADA5","ACA39A","A59C94","968C83","8C8279","83786F","796E65","6E6259","D9D9D6","D0D0CE","C8C9C7","BBBCBC","B1B3B3","A7A8AA","97999B","888B8D","75787B","63666A","53565A","332F21","212721","31261D","3E2B2E","101820","3D3935"],aa=Ot.map(i=>[parseInt(i.substring(0,2),16),parseInt(i.substring(2,4),16),parseInt(i.substring(4,6),16)]);function ts(i){const t=ne.indexOf(i);return t>=0?Ot[t]:""}function jn(i){const t=Ot.indexOf(i);return t>=0?ne[t]:""}function es(i,t=64){const e=[],a=[],n=jn(i);n&&e.push({pms:n,hex:i,distance:0});const r=parseInt(i.substring(0,2),16),s=parseInt(i.substring(2,4),16),o=parseInt(i.substring(4,6),16);let l,c,d;for(let u=0;u<Ot.length;u++){l=aa[u][0],c=aa[u][1],d=aa[u][2];const A=Math.sqrt(Math.pow(r-l,2)+Math.pow(s-c,2)+Math.pow(o-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:Ot[u],distance:a[u]});return e.sort((u,A)=>u.distance-A.distance)}const as=ne.map((i,t)=>({pms:i,hex:Ot[t]})),ns=new yr(as,{keys:["pms"]});function is(i,t){return ns.search(i,t?{limit:t}:void 0)}let Ut=null;function Wn(i){if(i.startsWith("#"))return un(i);if(!document)throw new Error("browserColorToHex is only supported on browsers");if(Ut||(Ut=document.createElement("canvas").getContext("2d")),!Ut)throw new Error("Failed to create canvas context required to convert colors");Ut.fillStyle=i;const t=un(Ut.fillStyle);return t||console.error(`Unknown browser color ${i}`),t}function un(i){const t=i.substring(1).toUpperCase();return t.length===6?t:t.length===3?`${t[0]}${t[0]}${t[1]}${t[1]}${t[2]}${t[2]}`:""}const ye=i=>{const t=Hn(i.spotColor);return t?`${i.browserValue} ${t}`:i.browserValue},Hn=i=>{if(!i)return"";if(i.profileName.includes("/")&&i.profileName.includes(".icc")){const t=i.profileName.replace(/\s/g,"-"),e=t.lastIndexOf("/");return`icc-named-color(${t.slice(e+1).slice(0,-4)}, ${i.namedColor})`}return`icc-named-color(${i.profileName}, ${i.namedColor})`},Sa=i=>{const t=i.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]}}},rs=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],ss=["fill","stroke"],Rt=(i,t)=>{t(i),i.children.length>0&&Array.from(i.children).forEach(e=>Rt(e,t))},Yn=(i,t)=>{const e=t(i);if(e)return e;const a=i.parentElement;if(a)return Yn(a,t)},os=(i,t)=>{try{return i.matches(t)}catch{return i.classList.contains(t.substring(1))}},ze=(i,t=!1)=>{!t&&i.setAttribute("preserveAspectRatio","none");const e=[];Rt(i,a=>{if(a.tagName==="script"){a.remove();return}if(a.tagName==="style"){try{Pn.parse(a.innerHTML).stylesheet?.rules.forEach(s=>{e.push(s)}),a.remove()}catch(r){console.error(r)}return}const n=a.attributes.getNamedItem("style")?.value?.trim();if(n){const r=[];n.split(";").forEach(o=>{const l=o.trim();if(l){const[c,d]=l.split(":"),u=c.toLowerCase();ss.indexOf(u)>-1?a.setAttribute(u,d.trim()):r.push(l)}}),r.length>0?a.setAttribute("style",r.join(";")):a.removeAttribute("style")}}),Rt(i,a=>{e.forEach(n=>{n.selectors?.forEach(r=>{os(a,r)&&n.declarations?.forEach(s=>{s.property&&s.value&&a.setAttribute(s.property,s.value)})})})})},ls=i=>{const t=/pt|pc|mm|cm|in/gm,e=i.getAttribute("viewBox"),a=i.getAttribute("width"),n=i.getAttribute("height");if(!e)throw new Error("viewBox not specified on SVG!");a&&i.setAttribute("width",a.replace(t,"")),n&&i.setAttribute("height",n.replace(t,""))},Jn=i=>ot().parseFromString(i,"image/svg+xml").firstElementChild,cs=(i,t,e)=>{i.setAttribute("height",`${e}px`),i.setAttribute("width",`${t}px`)},Kn=(i,t,e)=>{Rt(i,a=>{const n=a.attributes.getNamedItem("fill");n&&n.value!=="none"&&a.classList.forEach(s=>{if(s.startsWith("spiff-fill")){const o=t[s.replace("spiff-fill-","")];if(o)a.setAttribute("fill",e?ye(o):o.browserValue);else{const l=t[s];l&&a.setAttribute("fill",e?ye(l):l.browserValue)}}});const r=a.attributes.getNamedItem("stroke");r&&r.value!=="none"&&a.classList.forEach(s=>{if(s.startsWith("spiff-stroke")){const o=t[s.replace("spiff-stroke-","")];if(o)a.setAttribute("stroke",e?ye(o):o.browserValue);else{const l=t[s];l&&a.setAttribute("fill",e?ye(l):l.browserValue)}}})})},Xn=i=>Et().serializeToString(i),$a=(i,t,e,a,n)=>{const r=Jn(i);if(!r)throw new Error("Failed to read SVG.");return cs(r,t,e),Kn(r,a,n),Xn(r)},qe=(i,t,e)=>{const a=Jn(i);if(!a)throw new Error("Failed to read SVG.");return Kn(a,t,e),Xn(a)},ds=i=>{const t=/<svg.*<\/svg>/s,e=i.match(t)||[],a=e?.length>0?e[0]:"";return ot().parseFromString(a,"image/svg+xml")},it=async i=>{const e=ds(i).firstElementChild;if(!e)throw new Error("Failed to read SVG.");ze(e);const a={};Rt(e,s=>{if(rs.includes(s.tagName)&&!s.attributes.getNamedItem("fill")){let c="black";const d=s.parentElement;if(d){const u=Yn(d,A=>{const g=A.style.fill;if(g)return g;const p=A.getAttribute("fill");if(p)return p});u&&(c=u)}s.setAttribute("fill",c)}const o=s.attributes.getNamedItem("fill");if(o&&o.value!=="none"&&!o.value.startsWith("url(")){const c=Sa(o.value),d=c.browserValue.replace(/\W/g,""),u=`spiff-fill-${d}`;s.setAttribute("fill",c.browserValue),s.classList.add(u),a[d]=c}const l=s.attributes.getNamedItem("stroke");if(l&&l.value!=="none"&&!l.value.startsWith("url(")){const c=Sa(l.value),d=c.browserValue.replace(/\W/g,""),u=`spiff-stroke-${d}`;s.classList.add(u),s.setAttribute("stroke",c.browserValue),a[d]=c}});const r=Et().serializeToString(e);return{colors:a,svg:r}},us=f.gql`
|
|
2
|
-
fragment AssetMetadataFields on Asset {
|
|
3
|
-
metadata {
|
|
4
|
-
key
|
|
5
|
-
value
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
`,As=f.gql`
|
|
9
|
-
fragment AssetVersionsFields on Asset {
|
|
10
|
-
versions {
|
|
11
|
-
name
|
|
12
|
-
link
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
`,de=(i,t)=>f.gql`
|
|
16
|
-
${i&&us||""}
|
|
17
|
-
${t&&As||""}
|
|
18
|
-
fragment AssetFields on Asset {
|
|
19
|
-
name
|
|
20
|
-
key
|
|
21
|
-
type
|
|
22
|
-
createdAt
|
|
23
|
-
mimeType
|
|
24
|
-
fileLink
|
|
25
|
-
assetConfiguration {
|
|
26
|
-
assetKey
|
|
27
|
-
colorOption {
|
|
28
|
-
id
|
|
29
|
-
name
|
|
30
|
-
variants {
|
|
31
|
-
id
|
|
32
|
-
name
|
|
33
|
-
enabled
|
|
34
|
-
namedColor
|
|
35
|
-
color
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
channelNumbers {
|
|
39
|
-
id
|
|
40
|
-
number
|
|
41
|
-
}
|
|
42
|
-
defaultColorVariants {
|
|
43
|
-
channelNumber
|
|
44
|
-
variant {
|
|
45
|
-
id
|
|
46
|
-
name
|
|
47
|
-
enabled
|
|
48
|
-
namedColor
|
|
49
|
-
color
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
${t&&"...AssetVersionsFields"||""}
|
|
54
|
-
${i&&"...AssetMetadataFields"||""}
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
`,Zn=f.gql`
|
|
58
|
-
fragment MaterialFields on Material {
|
|
59
|
-
id
|
|
60
|
-
name
|
|
61
|
-
createdAt
|
|
62
|
-
clearCoat
|
|
63
|
-
clearCoatIor
|
|
64
|
-
refractionIntensity
|
|
65
|
-
reflectionIntensity
|
|
66
|
-
reflectionRotation
|
|
67
|
-
albedoMap {
|
|
68
|
-
key
|
|
69
|
-
fileLink
|
|
70
|
-
}
|
|
71
|
-
alphaMap {
|
|
72
|
-
key
|
|
73
|
-
fileLink
|
|
74
|
-
}
|
|
75
|
-
ambientMap {
|
|
76
|
-
key
|
|
77
|
-
fileLink
|
|
78
|
-
}
|
|
79
|
-
emissionMap {
|
|
80
|
-
key
|
|
81
|
-
fileLink
|
|
82
|
-
}
|
|
83
|
-
metallicMap {
|
|
84
|
-
key
|
|
85
|
-
fileLink
|
|
86
|
-
}
|
|
87
|
-
normalMap {
|
|
88
|
-
key
|
|
89
|
-
fileLink
|
|
90
|
-
}
|
|
91
|
-
refractionMap {
|
|
92
|
-
key
|
|
93
|
-
fileLink
|
|
94
|
-
}
|
|
95
|
-
reflectionMap {
|
|
96
|
-
key
|
|
97
|
-
fileLink
|
|
98
|
-
}
|
|
99
|
-
roughnessMap {
|
|
100
|
-
key
|
|
101
|
-
fileLink
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
`,hs=f.gql`
|
|
105
|
-
${Zn}
|
|
106
|
-
query GetMaterials($ids: [String]) {
|
|
107
|
-
materials(id: $ids) {
|
|
108
|
-
...MaterialFields
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
`,gs=f.gql`
|
|
112
|
-
mutation CreateAsset($name: String!, $type: String!, $mimeType: String!, $anonymous: Boolean, $temporary: Boolean) {
|
|
113
|
-
assetCreate(name: $name, type: $type, mimeType: $mimeType, anonymous: $anonymous, temporary: $temporary) {
|
|
114
|
-
uploadUrl
|
|
115
|
-
asset {
|
|
116
|
-
name
|
|
117
|
-
key
|
|
118
|
-
type
|
|
119
|
-
createdAt
|
|
120
|
-
mimeType
|
|
121
|
-
fileLink
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
`,ms=f.gql`
|
|
126
|
-
${de(!1,!1)}
|
|
127
|
-
mutation RemoveBackgroundFromAsset($key: String!) {
|
|
128
|
-
assetRemoveBackground(key: $key) {
|
|
129
|
-
...AssetFields
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
`,ps=f.gql`
|
|
133
|
-
${de(!1,!1)}
|
|
134
|
-
mutation VectorizeAsset($key: String!, $options: AssetVectorizeOptions) {
|
|
135
|
-
assetVectorize(key: $key, options: $options) {
|
|
136
|
-
...AssetFields
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
`,Pe=async(i,t=!0)=>(await y.getShadowGraphqlClient().query({query:f.gql`
|
|
140
|
-
${de(!1,t)}
|
|
141
|
-
query GetAssets($keys: [String]!) {
|
|
142
|
-
assets(keys: $keys) {
|
|
143
|
-
...AssetFields
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
`,errorPolicy:"all",fetchPolicy:"no-cache",variables:{keys:i}})).data.assets,fs=async i=>(await y.getShadowGraphqlClient().query({query:hs,errorPolicy:"all",variables:{ids:i}})).data.materials,Cs=async(i,t,e,a,n)=>(await y.getShadowGraphqlClient().mutate({mutation:gs,errorPolicy:"all",fetchPolicy:"no-cache",variables:{name:i,type:t,mimeType:e,anonymous:a,temporary:n}})).data?.assetCreate;class ws{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),n=(r,s)=>{const o=atob(r.split(",")[1]),l=[];for(let c=0;c<o.length;c++)l.push(o.charCodeAt(c));return new Blob([new Uint8Array(l)],{type:s})};return{name:t.name.substring(t.name.lastIndexOf("/")+1),blob:n(a.dataUrl,t.type)}}}async getLocalOrFromServer(t){if(this.cache.has(t)){const n=this.cache.get(t);if(!n)throw new O("Failed to get asset from cache!");return n}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 fs([t]))[0])();return this.materialCache.set(t,a),a}async uploadAssetWithProgress(t,e,a,n,r){const s=await this.dispatchCreateAssetRequest(t,e,n,r);if(!s)throw new Error("Failed to create asset.");return await new Promise((o,l)=>{const c=new XMLHttpRequest;c.open("PUT",s.assetResponse.uploadUrl,!0),c.setRequestHeader("Content-Type",s.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=s.assetResponse.asset;ct.add(s.assetResponse.asset),o(d)},c.onerror=l,this.postProcessFileUpload(t,s.mimeType).then(d=>c.send(d.blob)).catch(l)}),this.cacheAsset(s.assetResponse.asset),s.assetResponse.asset}async uploadAsset(t,e,a,n){return this.uploadAssetWithProgress(t,e,()=>{},a,n)}async uploadFile(t,e){const n=this.isRaster(t)?ee.Image:ee.Illustration,r=await this.loadImageAsFileInfo(t);return await this.uploadAssetWithProgress(r,n,e,!0)}async removeBackgroundFromAsset(t){const e=t.key;if(this.bgrmProcessCache.has(e))return this.bgrmProcessCache.get(e);if(q.has(Lt,e)){const r=this.getLocalOrFromServer(q.get(Lt,e));return this.bgrmProcessCache.set(e,r),r}const n=(async()=>{const r=await y.getShadowGraphqlClient().mutate({mutation:ms,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 ct.add(r.data.assetRemoveBackground),q.add(Lt,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,n),n}async vectorizeAsset(t,e=void 0){const a=t.key;if(this.bgrmProcessCache.has(a))return this.bgrmProcessCache.get(a);if(q.has(zt,a)){const s=this.getLocalOrFromServer(q.get(zt,a));return this.bgrmProcessCache.set(a,s),s}const r=(async()=>{const s=await y.getShadowGraphqlClient().mutate({mutation:ps,fetchPolicy:"no-cache",errorPolicy:"all",variables:{key:a,options:{maxColorCount:e}}});if(this.bgrmProcessCache.delete(a),!s.data?.assetVectorize?.key)throw new Error("Failed to vectorize image");return ct.add(s.data.assetVectorize),q.add(zt,a,s.data.assetVectorize.key),this.cache.set(s.data.assetVectorize.key,Promise.resolve(s.data.assetVectorize)),s.data.assetVectorize})();return this.bgrmProcessCache.set(a,r),r}removePersistedAsset(t){ct.remove(t),q.delete(Lt,t),q.delete(zt,t),q.deleteForTransformedKey(Lt,t),q.deleteForTransformedKey(zt,t)}getPersistedAssets(){return ct.list()}registerPersistedAssetListener(t){ct.addCallback(t)}unRegisterPersistedAssetListener(t){ct.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(),s=new window.DOMParser().parseFromString(a,"image/svg+xml").documentElement;if(!s)throw new It("Failed to read SVG.");ls(s);const l=Et().serializeToString(s);return{name:t.name,blob:new Blob([l],{type:"image/svg+xml"})}}return t}async dispatchCreateAssetRequest(t,e,a,n){const r=t.blob.type?t.blob.type:this.guessMIME(t.name),s=await Cs(t.name,e,r,a,n);if(s)return{assetResponse:s,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 Vt="persistentAssets",dt=class dt{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(Vt);a&&a.forEach((n,r)=>{e.set(r,n)}),Q.setMap(Vt,e),dt.executeCallbacks()}static remove(t){const e=Q.getMap(Vt);if(!e)return;const a=Array.from(e.entries()).find(n=>n[0]===t);a&&(e.delete(a[0]),Q.setMap(Vt,e),dt.executeCallbacks())}static list(){const t=Q.getMap(Vt);return t?Array.from(t.entries()).map(e=>({assetKey:e[0],src:e[1]})):[]}static addCallback(t){dt.callbacks.push(t)}static removeCallback(t){dt.callbacks=dt.callbacks.filter(e=>e!==t)}static executeCallbacks(){dt.callbacks.forEach(t=>t())}};dt.callbacks=[];let ct=dt;const Lt="bgrmPersistentAssets",zt="vectorizePersistentAssets";class q{static has(t,e){return q.getMap(t).has(e)}static get(t,e){return q.getMap(t).get(e)}static keys(t){return q.getMap(t).keys()}static values(t){return q.getMap(t).values()}static add(t,e,a){const n=q.getMap(t);n.set(e,a),q.setMap(t,n)}static delete(t,e){const a=q.getMap(t);a.delete(e),q.setMap(t,a)}static deleteForTransformedKey(t,e){const a=q.getMap(t),n=Array.from(a.keys()).find(r=>a.get(r)===e);n&&(a.delete(n),q.setMap(t,a))}static getMap(t){return Q.getMap(t)||new Map}static setMap(t,e){Q.setMap(t,e)}}const G=new ws;class ys{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 ys,Ge=(i,t=512,e,a)=>{const n=typeof i=="string"?i:i.fileLink;if(!n)return;const r=n.includes("?")?"&":"?",s=[`w=${t}`,`h=${t}`];return a!==void 0&&s.push(`q=${a}`),e&&s.push(`format=${e}`),`${n}${r}${s.join("&")}`},Ss=f.gql`
|
|
147
|
-
fragment OptionMinimalFields on Option {
|
|
148
|
-
id
|
|
149
|
-
defaultVariant {
|
|
150
|
-
id
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
`,vs=f.gql`
|
|
154
|
-
fragment OptionFields on Option {
|
|
155
|
-
id
|
|
156
|
-
name
|
|
157
|
-
public
|
|
158
|
-
currencyCode
|
|
159
|
-
type
|
|
160
|
-
workflowId
|
|
161
|
-
displayType
|
|
162
|
-
integrationOptions {
|
|
163
|
-
id
|
|
164
|
-
integrationId
|
|
165
|
-
}
|
|
166
|
-
variants {
|
|
167
|
-
id
|
|
168
|
-
name
|
|
169
|
-
enabled
|
|
170
|
-
color
|
|
171
|
-
namedColor
|
|
172
|
-
priceModifier
|
|
173
|
-
asset {
|
|
174
|
-
...AssetFields
|
|
175
|
-
}
|
|
176
|
-
thumbnail {
|
|
177
|
-
...AssetFields
|
|
178
|
-
}
|
|
179
|
-
material {
|
|
180
|
-
...MaterialFields
|
|
181
|
-
}
|
|
182
|
-
category
|
|
183
|
-
}
|
|
184
|
-
defaultVariant {
|
|
185
|
-
id
|
|
186
|
-
}
|
|
187
|
-
colorProfile {
|
|
188
|
-
...AssetFields
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
`,Es=f.gql`
|
|
192
|
-
query GetTagsMany($ids: [String!]!) {
|
|
193
|
-
tagsMany(entityIds: $ids) {
|
|
194
|
-
id
|
|
195
|
-
entityId
|
|
196
|
-
name
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
`,bs=async i=>{const t=await y.getShadowGraphqlClient().query({query:f.gql`
|
|
200
|
-
${de(!1,!1)}
|
|
201
|
-
${Zn}
|
|
202
|
-
${vs}
|
|
203
|
-
query GetOptions($ids: [String]!) {
|
|
204
|
-
options(ids: $ids) {
|
|
205
|
-
...OptionFields
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
`,errorPolicy:"all",variables:{ids:i}});return t.data.options.forEach(e=>{e.colorProfile&&G.cacheAsset(e.colorProfile),e.variants?.forEach(a=>{a.asset&&G.cacheAsset(a.asset),a.thumbnail&&G.cacheAsset(a.thumbnail),a.material&&G.cacheMaterial(a.material)})}),t.data.options},Is=async(i,t)=>(await t).find(a=>a.id===i),na=async i=>{const t=new Map(i.map(n=>[n,ie.get({id:n})])),e=i.filter(n=>t.get(n)===void 0);if(e.length>0){const n=bs(e);e.forEach(r=>t.set(r,ie.set({id:r},Is(r,n))))}return(await Promise.all(i.map(n=>t.get(n)))).filter(n=>n!==void 0)},An=i=>{if(!(!i||!i.fileLink))return Ge(i,512,"webp")},hn=(i,t,e)=>{if(i.length===1)return i[0];if(e){const a=i.find(n=>n.id===e);if(a)return a}if(t.defaultVariant!==void 0)return i.find(a=>a.id===t.defaultVariant?.id)};class Bs{constructor(){this.getDefaultVariant=async(t,e)=>{const a=t?.variants;if(a)return hn(a,t,e);const r=(await this.getOption(t.id))?.variants;if(r)return hn(r,t,e)},this.getTagsForAssets=async t=>{const e=t?.map(s=>s.asset?.key)||[],a=t?.map(s=>s.material?.id)||[],n=[...e,...a].filter(s=>!!s);return n.length===0?[]:(await y.getShadowGraphqlClient().query({query:Es,errorPolicy:"all",variables:{ids:n}})).data.tagsMany}}async getOption(t){return t?(await na([t]))[0]:void 0}async getOptions(t){return na(t)}async getOptionForStep(t){return this.ensureFullOption(t.option)}async ensureFullOption(t){return t?.variants?t:t?.id?(await na([t.id]))[0]:void 0}async getAssetTileImageForVariant(t){const e=An(t.thumbnail)??An(t.asset);return e||(t.material?t.material.id:"")}}const I=new Bs,_n=f.gql`
|
|
209
|
-
fragment ActiveIntegrationFields on Integration {
|
|
210
|
-
id
|
|
211
|
-
logo
|
|
212
|
-
name
|
|
213
|
-
theme {
|
|
214
|
-
id
|
|
215
|
-
configuration
|
|
216
|
-
primaryColor
|
|
217
|
-
secondaryColor
|
|
218
|
-
textColor
|
|
219
|
-
}
|
|
220
|
-
partner {
|
|
221
|
-
id
|
|
222
|
-
name
|
|
223
|
-
activeAddons
|
|
224
|
-
currencyCode
|
|
225
|
-
beta
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
`,je=f.gql`
|
|
229
|
-
fragment AdditionalIntegrationProductFields on IntegrationProduct {
|
|
230
|
-
id
|
|
231
|
-
product {
|
|
232
|
-
id
|
|
233
|
-
basePrice
|
|
234
|
-
enabled
|
|
235
|
-
name
|
|
236
|
-
description
|
|
237
|
-
sku
|
|
238
|
-
skuCode
|
|
239
|
-
weight
|
|
240
|
-
imageUrl
|
|
241
|
-
modelUrl
|
|
242
|
-
overlayImageUrl
|
|
243
|
-
preloadImageUrl
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
`,ti=f.gql`
|
|
247
|
-
fragment RecipientFields on Recipient {
|
|
248
|
-
id
|
|
249
|
-
firstName
|
|
250
|
-
lastName
|
|
251
|
-
address
|
|
252
|
-
suburb
|
|
253
|
-
state
|
|
254
|
-
email
|
|
255
|
-
postalCode
|
|
256
|
-
country
|
|
257
|
-
mobile
|
|
258
|
-
company
|
|
259
|
-
apartment
|
|
260
|
-
customField1
|
|
261
|
-
customField2
|
|
262
|
-
customField3
|
|
263
|
-
customField4
|
|
264
|
-
customField5
|
|
265
|
-
conversionConfigurationId
|
|
266
|
-
}
|
|
267
|
-
`,ue=f.gql`
|
|
268
|
-
fragment ConversionConfigurationFields on ConversionConfiguration {
|
|
269
|
-
id
|
|
270
|
-
partnerId
|
|
271
|
-
name
|
|
272
|
-
locations
|
|
273
|
-
mandatory
|
|
274
|
-
requestedData
|
|
275
|
-
requestedDataItems {
|
|
276
|
-
type
|
|
277
|
-
mandatory
|
|
278
|
-
title
|
|
279
|
-
uniqueIdentifier
|
|
280
|
-
customFieldIndex
|
|
281
|
-
optionId
|
|
282
|
-
option {
|
|
283
|
-
id
|
|
284
|
-
name
|
|
285
|
-
variants {
|
|
286
|
-
id
|
|
287
|
-
name
|
|
288
|
-
enabled
|
|
289
|
-
}
|
|
290
|
-
defaultVariant {
|
|
291
|
-
id
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
`,Ps=f.gql`
|
|
297
|
-
${ti}
|
|
298
|
-
mutation CreateTransactions(
|
|
299
|
-
$inputs: [TransactionCreateInput]!
|
|
300
|
-
$marketplaceThemeInstallId: String
|
|
301
|
-
$marketplaceThemeInstallConfigurationId: String
|
|
302
|
-
) {
|
|
303
|
-
transactionCreateMany(
|
|
304
|
-
inputs: $inputs
|
|
305
|
-
marketplaceThemeInstallId: $marketplaceThemeInstallId
|
|
306
|
-
marketplaceThemeInstallConfigurationId: $marketplaceThemeInstallConfigurationId
|
|
307
|
-
) {
|
|
308
|
-
id
|
|
309
|
-
designName
|
|
310
|
-
transactionOwnerId
|
|
311
|
-
workflowId
|
|
312
|
-
customLogoLink
|
|
313
|
-
quantity
|
|
314
|
-
workflowFooterLogoLink
|
|
315
|
-
restApiIntegrationLink
|
|
316
|
-
workflowState
|
|
317
|
-
workflowViewerLink
|
|
318
|
-
workflowViewerReadOnlyLink
|
|
319
|
-
recipient {
|
|
320
|
-
...RecipientFields
|
|
321
|
-
}
|
|
322
|
-
integrationProductId
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
`,ei=f.gql`
|
|
326
|
-
fragment StakeholderFields on Stakeholder {
|
|
327
|
-
id
|
|
328
|
-
type
|
|
329
|
-
authorizationDate
|
|
330
|
-
authorizationNote
|
|
331
|
-
authorizationStatus
|
|
332
|
-
}
|
|
333
|
-
`,ai=f.gql`
|
|
334
|
-
fragment TransactionShareActionFields on TransactionShareAction {
|
|
335
|
-
id
|
|
336
|
-
title
|
|
337
|
-
type
|
|
338
|
-
stakeholderType
|
|
339
|
-
precedence
|
|
340
|
-
url
|
|
341
|
-
}
|
|
342
|
-
`,ni=f.gql`
|
|
343
|
-
${je}
|
|
344
|
-
${ue}
|
|
345
|
-
${_n}
|
|
346
|
-
query ReadIntegrationProducts($ids: [String!]!) {
|
|
347
|
-
integrationProducts(ids: $ids) {
|
|
348
|
-
id
|
|
349
|
-
externalProductId
|
|
350
|
-
externalVariantId
|
|
351
|
-
additionalExternalProductId
|
|
352
|
-
additionalExternalVariantId
|
|
353
|
-
additionalIntegrationProduct {
|
|
354
|
-
...AdditionalIntegrationProductFields
|
|
355
|
-
}
|
|
356
|
-
product {
|
|
357
|
-
id
|
|
358
|
-
basePrice
|
|
359
|
-
enabled
|
|
360
|
-
minimumOrderQuantity
|
|
361
|
-
name
|
|
362
|
-
description
|
|
363
|
-
partner {
|
|
364
|
-
id
|
|
365
|
-
name
|
|
366
|
-
currencyCode
|
|
367
|
-
customerDetailsPromptMarkdown
|
|
368
|
-
}
|
|
369
|
-
productImages {
|
|
370
|
-
id
|
|
371
|
-
precedence
|
|
372
|
-
asset {
|
|
373
|
-
key
|
|
374
|
-
fileLink
|
|
375
|
-
name
|
|
376
|
-
type
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
integrationProducts {
|
|
380
|
-
id
|
|
381
|
-
integration {
|
|
382
|
-
id
|
|
383
|
-
type
|
|
384
|
-
}
|
|
385
|
-
externalProductId
|
|
386
|
-
externalVariantId
|
|
387
|
-
additionalExternalProductId
|
|
388
|
-
additionalExternalVariantId
|
|
389
|
-
additionalIntegrationProduct {
|
|
390
|
-
...AdditionalIntegrationProductFields
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
profanities {
|
|
394
|
-
id
|
|
395
|
-
word
|
|
396
|
-
}
|
|
397
|
-
sku
|
|
398
|
-
skuCode
|
|
399
|
-
weight
|
|
400
|
-
workflows {
|
|
401
|
-
id
|
|
402
|
-
friendlyName
|
|
403
|
-
isPresent
|
|
404
|
-
workflowName
|
|
405
|
-
imageUrl
|
|
406
|
-
}
|
|
407
|
-
imageUrl
|
|
408
|
-
modelUrl
|
|
409
|
-
overlayImageUrl
|
|
410
|
-
preloadImageUrl
|
|
411
|
-
promptForCustomerDetails
|
|
412
|
-
conversionConfiguration {
|
|
413
|
-
...ConversionConfigurationFields
|
|
414
|
-
}
|
|
415
|
-
productTags {
|
|
416
|
-
id
|
|
417
|
-
name
|
|
418
|
-
}
|
|
419
|
-
priceBreaks {
|
|
420
|
-
id
|
|
421
|
-
minQty
|
|
422
|
-
percentage
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
integration {
|
|
426
|
-
...ActiveIntegrationFields
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
`,xs=f.gql`
|
|
431
|
-
${ei}
|
|
432
|
-
${ai}
|
|
433
|
-
${ti}
|
|
434
|
-
query ReadTransactions($ids: [String]!) {
|
|
435
|
-
transactions(ids: $ids) {
|
|
436
|
-
customLogoLink
|
|
437
|
-
designName
|
|
438
|
-
externalDesignProductId
|
|
439
|
-
externalDesignProductVariantId
|
|
440
|
-
externalCartProductId
|
|
441
|
-
externalCartProductVariantId
|
|
442
|
-
id
|
|
443
|
-
completed
|
|
444
|
-
lastSyncedAt
|
|
445
|
-
priceModifierTotal
|
|
446
|
-
restApiIntegrationLink
|
|
447
|
-
workflowFooterLogoLink
|
|
448
|
-
workflowId
|
|
449
|
-
workflowState
|
|
450
|
-
workflowViewerLink
|
|
451
|
-
workflowViewerReadOnlyLink
|
|
452
|
-
previewImageLink
|
|
453
|
-
isOrdered
|
|
454
|
-
quantity
|
|
455
|
-
printFileUrl1
|
|
456
|
-
printFileUrl2
|
|
457
|
-
printFileUrl3
|
|
458
|
-
printFileUrl4
|
|
459
|
-
printFileUrl5
|
|
460
|
-
printFileName1
|
|
461
|
-
printFileName2
|
|
462
|
-
printFileName3
|
|
463
|
-
printFileName4
|
|
464
|
-
printFileName5
|
|
465
|
-
stakeholders {
|
|
466
|
-
...StakeholderFields
|
|
467
|
-
}
|
|
468
|
-
currentStakeholder {
|
|
469
|
-
...StakeholderFields
|
|
470
|
-
}
|
|
471
|
-
hasAuthenticatedActions
|
|
472
|
-
transactionShareActions {
|
|
473
|
-
...TransactionShareActionFields
|
|
474
|
-
}
|
|
475
|
-
addressValidationStatus
|
|
476
|
-
recipient {
|
|
477
|
-
...RecipientFields
|
|
478
|
-
}
|
|
479
|
-
integrationProductId
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
`,Fs=f.gql`
|
|
483
|
-
mutation UpdateTransactionWorkflowState($id: String!, $workflowState: String!) {
|
|
484
|
-
transactionUpdate(id: $id, workflowState: $workflowState) {
|
|
485
|
-
id
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
`,Ds=f.gql`
|
|
489
|
-
mutation UpdateTransactionQuantity($id: String!, $quantity: Int) {
|
|
490
|
-
transactionUpdate(id: $id, quantity: $quantity) {
|
|
491
|
-
id
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
`,ks=f.gql`
|
|
495
|
-
mutation UpdateTransactionWorkflow($id: String!, $workflowId: String!) {
|
|
496
|
-
transactionUpdate(id: $id, workflowId: $workflowId) {
|
|
497
|
-
id
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
`,Ms=f.gql`
|
|
501
|
-
${ue}
|
|
502
|
-
query ReadConversionConfigurationQuery($id: String!) {
|
|
503
|
-
conversionConfiguration(id: $id) {
|
|
504
|
-
...ConversionConfigurationFields
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
`,Ts=f.gql`
|
|
508
|
-
${ue}
|
|
509
|
-
query ReadTransactionForDesignCreation($id: String!) {
|
|
510
|
-
transactions(ids: [$id]) {
|
|
511
|
-
id
|
|
512
|
-
completed
|
|
513
|
-
createdAt
|
|
514
|
-
designName
|
|
515
|
-
product {
|
|
516
|
-
name
|
|
517
|
-
sku
|
|
518
|
-
basePrice
|
|
519
|
-
minimumOrderQuantity
|
|
520
|
-
promptForCustomerDetails
|
|
521
|
-
partner {
|
|
522
|
-
id
|
|
523
|
-
name
|
|
524
|
-
customerDetailsPromptMarkdown
|
|
525
|
-
}
|
|
526
|
-
conversionConfiguration {
|
|
527
|
-
...ConversionConfigurationFields
|
|
528
|
-
}
|
|
529
|
-
productTags {
|
|
530
|
-
id
|
|
531
|
-
name
|
|
532
|
-
}
|
|
533
|
-
priceBreaks {
|
|
534
|
-
id
|
|
535
|
-
minQty
|
|
536
|
-
percentage
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
bundle {
|
|
540
|
-
id
|
|
541
|
-
metadata {
|
|
542
|
-
key
|
|
543
|
-
value
|
|
544
|
-
}
|
|
545
|
-
bundleStakeholders {
|
|
546
|
-
type
|
|
547
|
-
customer {
|
|
548
|
-
emailAddress
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
externalCartProductId
|
|
553
|
-
externalCartProductVariantId
|
|
554
|
-
externalDesignProductId
|
|
555
|
-
externalDesignProductVariantId
|
|
556
|
-
lastSyncedAt
|
|
557
|
-
previewImageLink
|
|
558
|
-
priceModifierTotal
|
|
559
|
-
quantity
|
|
560
|
-
workflowId
|
|
561
|
-
workflowState
|
|
562
|
-
workflowViewerLink
|
|
563
|
-
workflowViewerReadOnlyLink
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
`,Ns=f.gql`
|
|
567
|
-
${ai}
|
|
568
|
-
query ReadTransactionForShareActions($id: String!) {
|
|
569
|
-
transactions(ids: [$id]) {
|
|
570
|
-
id
|
|
571
|
-
hasAuthenticatedActions
|
|
572
|
-
transactionShareActions {
|
|
573
|
-
...TransactionShareActionFields
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
`,Qs=f.gql`
|
|
578
|
-
query ConfirmWorkflowStates($transactions: [TransactionConfirmInput!]!) {
|
|
579
|
-
transactionConfirmWorkflowStates(transactions: $transactions)
|
|
580
|
-
}
|
|
581
|
-
`,ii=i=>f.gql`
|
|
582
|
-
${je}
|
|
583
|
-
fragment IntegrationProductFields on IntegrationProduct {
|
|
584
|
-
id
|
|
585
|
-
externalProductId
|
|
586
|
-
externalVariantId
|
|
587
|
-
additionalExternalProductId
|
|
588
|
-
additionalExternalVariantId
|
|
589
|
-
additionalIntegrationProduct {
|
|
590
|
-
...AdditionalIntegrationProductFields
|
|
591
|
-
}
|
|
592
|
-
integration {
|
|
593
|
-
id
|
|
594
|
-
enabled
|
|
595
|
-
externalIntegrationId
|
|
596
|
-
type
|
|
597
|
-
isCurrent
|
|
598
|
-
}
|
|
599
|
-
product {
|
|
600
|
-
id
|
|
601
|
-
basePrice
|
|
602
|
-
enabled
|
|
603
|
-
minimumOrderQuantity
|
|
604
|
-
imageUrl
|
|
605
|
-
modelUrl
|
|
606
|
-
name
|
|
607
|
-
description
|
|
608
|
-
overlayImageUrl
|
|
609
|
-
preloadImageUrl
|
|
610
|
-
sku
|
|
611
|
-
skuCode
|
|
612
|
-
workflows {
|
|
613
|
-
id
|
|
614
|
-
index
|
|
615
|
-
friendlyName
|
|
616
|
-
isPresent
|
|
617
|
-
workflowName
|
|
618
|
-
imageUrl
|
|
619
|
-
}
|
|
620
|
-
productTags {
|
|
621
|
-
id
|
|
622
|
-
name
|
|
623
|
-
}
|
|
624
|
-
productImages {
|
|
625
|
-
id
|
|
626
|
-
precedence
|
|
627
|
-
asset {
|
|
628
|
-
key
|
|
629
|
-
fileLink
|
|
630
|
-
name
|
|
631
|
-
type
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
priceBreaks {
|
|
635
|
-
id
|
|
636
|
-
minQty
|
|
637
|
-
percentage
|
|
638
|
-
}
|
|
639
|
-
${i?`
|
|
640
|
-
integrationProducts {
|
|
641
|
-
id
|
|
642
|
-
externalProductId
|
|
643
|
-
externalVariantId
|
|
644
|
-
additionalExternalProductId
|
|
645
|
-
additionalExternalVariantId
|
|
646
|
-
additionalIntegrationProduct {
|
|
647
|
-
...AdditionalIntegrationProductFields
|
|
648
|
-
}
|
|
649
|
-
integration {
|
|
650
|
-
id
|
|
651
|
-
enabled
|
|
652
|
-
externalIntegrationId
|
|
653
|
-
type
|
|
654
|
-
isCurrent
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
`:""}
|
|
658
|
-
}
|
|
659
|
-
}
|
|
660
|
-
`,Os=i=>f.gql`
|
|
661
|
-
${ii(i)}
|
|
662
|
-
query GetIntegrationProducts($ids: [String!]!) {
|
|
663
|
-
integrationProducts(ids: $ids) {
|
|
664
|
-
...IntegrationProductFields
|
|
665
|
-
}
|
|
666
|
-
}
|
|
667
|
-
`,Rs=i=>f.gql`
|
|
668
|
-
${ii(i)}
|
|
669
|
-
query GetIntegrationProductFromExternalIds($externalIntegrationId: String!, $externalProductId: String!) {
|
|
670
|
-
integrationProductFromExternalIds(
|
|
671
|
-
externalIntegrationId: $externalIntegrationId
|
|
672
|
-
externalProductId: $externalProductId
|
|
673
|
-
) {
|
|
674
|
-
...IntegrationProductFields
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
|
-
`,$s=f.gql`
|
|
678
|
-
${ei}
|
|
679
|
-
query ReadTransactionForStakeholders($id: String!) {
|
|
680
|
-
transactions(ids: [$id]) {
|
|
681
|
-
stakeholders {
|
|
682
|
-
...StakeholderFields
|
|
683
|
-
}
|
|
684
|
-
currentStakeholder {
|
|
685
|
-
...StakeholderFields
|
|
686
|
-
}
|
|
687
|
-
}
|
|
688
|
-
}
|
|
689
|
-
`,Us=f.gql`
|
|
690
|
-
mutation FinalizeUpdateTransaction($transactionId: String!) {
|
|
691
|
-
transactionFinalizeUpdate(transactionId: $transactionId)
|
|
692
|
-
}
|
|
693
|
-
`,Vs=f.gql`
|
|
694
|
-
fragment RegionFields on Region {
|
|
695
|
-
width
|
|
696
|
-
top
|
|
697
|
-
left
|
|
698
|
-
height
|
|
699
|
-
layer
|
|
700
|
-
layerIndex
|
|
701
|
-
rotation
|
|
702
|
-
panelId
|
|
703
|
-
immutable
|
|
704
|
-
adjustmentBoundary {
|
|
705
|
-
width
|
|
706
|
-
x
|
|
707
|
-
y
|
|
708
|
-
height
|
|
709
|
-
}
|
|
710
|
-
}
|
|
711
|
-
`,Ls=f.gql`
|
|
712
|
-
fragment LookAtAnimationFields on LookAtAnimation {
|
|
713
|
-
latDeg
|
|
714
|
-
lonDeg
|
|
715
|
-
radius
|
|
716
|
-
target {
|
|
717
|
-
x
|
|
718
|
-
y
|
|
719
|
-
z
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
|
-
`,zs=f.gql`
|
|
723
|
-
fragment RenderingPipelineConfigurationFields on RenderingPipelineConfiguration {
|
|
724
|
-
antiAliasing {
|
|
725
|
-
samples
|
|
726
|
-
fxaaEnabled
|
|
727
|
-
}
|
|
728
|
-
bloom {
|
|
729
|
-
enabled
|
|
730
|
-
kernel
|
|
731
|
-
scale
|
|
732
|
-
threshold
|
|
733
|
-
weight
|
|
734
|
-
}
|
|
735
|
-
chromaticAberration {
|
|
736
|
-
enabled
|
|
737
|
-
aberrationAmount
|
|
738
|
-
direction {
|
|
739
|
-
x
|
|
740
|
-
y
|
|
741
|
-
}
|
|
742
|
-
radialIntensity
|
|
743
|
-
}
|
|
744
|
-
colorCurves {
|
|
745
|
-
enabled
|
|
746
|
-
globalDensity
|
|
747
|
-
globalExposure
|
|
748
|
-
globalHue
|
|
749
|
-
globalSaturation
|
|
750
|
-
highlightsDensity
|
|
751
|
-
highlightsExposure
|
|
752
|
-
highlightsHue
|
|
753
|
-
highlightsSaturation
|
|
754
|
-
midtonesDensity
|
|
755
|
-
midtonesExposure
|
|
756
|
-
midtonesHue
|
|
757
|
-
midtonesSaturation
|
|
758
|
-
shadowsDensity
|
|
759
|
-
shadowsExposure
|
|
760
|
-
shadowsHue
|
|
761
|
-
shadowsSaturation
|
|
762
|
-
}
|
|
763
|
-
depthOfField {
|
|
764
|
-
enabled
|
|
765
|
-
blurLevel
|
|
766
|
-
focusDistance
|
|
767
|
-
focalLength
|
|
768
|
-
fStop
|
|
769
|
-
lensSize
|
|
770
|
-
}
|
|
771
|
-
grain {
|
|
772
|
-
enabled
|
|
773
|
-
animated
|
|
774
|
-
intensity
|
|
775
|
-
}
|
|
776
|
-
misc {
|
|
777
|
-
contrast
|
|
778
|
-
exposure
|
|
779
|
-
toneMappingEnabled
|
|
780
|
-
toneMappingType
|
|
781
|
-
}
|
|
782
|
-
sharpen {
|
|
783
|
-
enabled
|
|
784
|
-
colorAmount
|
|
785
|
-
edgeAmount
|
|
786
|
-
}
|
|
787
|
-
vignette {
|
|
788
|
-
enabled
|
|
789
|
-
blendMode
|
|
790
|
-
cameraFov
|
|
791
|
-
center {
|
|
792
|
-
x
|
|
793
|
-
y
|
|
794
|
-
}
|
|
795
|
-
colorRgba {
|
|
796
|
-
r
|
|
797
|
-
g
|
|
798
|
-
b
|
|
799
|
-
a
|
|
800
|
-
}
|
|
801
|
-
colorHex
|
|
802
|
-
stretch
|
|
803
|
-
weight
|
|
804
|
-
}
|
|
805
|
-
}
|
|
806
|
-
`,qs=f.gql`
|
|
807
|
-
fragment ModelAnimationFields on ModelAnimation {
|
|
808
|
-
from
|
|
809
|
-
to
|
|
810
|
-
loop
|
|
811
|
-
name
|
|
812
|
-
}
|
|
813
|
-
`,Gs=i=>f.gql`
|
|
814
|
-
${de(i,!1)}
|
|
815
|
-
${Ss}
|
|
816
|
-
${Vs}
|
|
817
|
-
${Ls}
|
|
818
|
-
${zs}
|
|
819
|
-
${qs}
|
|
820
|
-
query GetWorkflows($ids: [String!]!) {
|
|
821
|
-
workflows(ids: $ids) {
|
|
822
|
-
partner {
|
|
823
|
-
termsMarkdown
|
|
824
|
-
}
|
|
825
|
-
allowProofDownload
|
|
826
|
-
defaultPreviewPanelIndex
|
|
827
|
-
finalizeStepConfig {
|
|
828
|
-
termsMarkdown
|
|
829
|
-
lookAtAnimation {
|
|
830
|
-
...LookAtAnimationFields
|
|
831
|
-
}
|
|
832
|
-
modelAnimation {
|
|
833
|
-
...ModelAnimationFields
|
|
834
|
-
}
|
|
835
|
-
}
|
|
836
|
-
globalPreviewConfig {
|
|
837
|
-
autoRotation
|
|
838
|
-
backgroundColor
|
|
839
|
-
backgroundImage
|
|
840
|
-
clearColor
|
|
841
|
-
disableActionBar
|
|
842
|
-
disableAutomaticOrientation
|
|
843
|
-
emissiveGlowIntensity
|
|
844
|
-
enableAR
|
|
845
|
-
environmentFile
|
|
846
|
-
environmentIntensity
|
|
847
|
-
environmentRotationY
|
|
848
|
-
idleTimeBeforeRotation
|
|
849
|
-
lowerAlphaLimitDeg
|
|
850
|
-
lowerBetaLimitDeg
|
|
851
|
-
maxZoomOverride
|
|
852
|
-
minZoomOverride
|
|
853
|
-
noPan
|
|
854
|
-
upperAlphaLimitDeg
|
|
855
|
-
upperBetaLimitDeg
|
|
856
|
-
renderingPipelineConfiguration {
|
|
857
|
-
...RenderingPipelineConfigurationFields
|
|
858
|
-
}
|
|
859
|
-
}
|
|
860
|
-
id
|
|
861
|
-
name
|
|
862
|
-
panels {
|
|
863
|
-
editableArea {
|
|
864
|
-
height
|
|
865
|
-
width
|
|
866
|
-
x
|
|
867
|
-
y
|
|
868
|
-
}
|
|
869
|
-
height
|
|
870
|
-
width
|
|
871
|
-
index
|
|
872
|
-
name
|
|
873
|
-
title
|
|
874
|
-
useEditableArea
|
|
875
|
-
transparentBackground
|
|
876
|
-
previewRegion {
|
|
877
|
-
...RegionFields
|
|
878
|
-
}
|
|
879
|
-
}
|
|
880
|
-
previewAsset {
|
|
881
|
-
...AssetFields
|
|
882
|
-
}
|
|
883
|
-
showModelOnFinishStep
|
|
884
|
-
showPlusInVariantPrices
|
|
885
|
-
showPricing
|
|
886
|
-
skuCode
|
|
887
|
-
stepGroups {
|
|
888
|
-
name
|
|
889
|
-
stepNames
|
|
890
|
-
}
|
|
891
|
-
steps {
|
|
892
|
-
stepName
|
|
893
|
-
type
|
|
894
|
-
tags
|
|
895
|
-
globalPropertyAspectConfigurations {
|
|
896
|
-
aspectName
|
|
897
|
-
globalPropertyConfigurationId
|
|
898
|
-
}
|
|
899
|
-
conversionConfigurationFieldLinks {
|
|
900
|
-
identifier
|
|
901
|
-
conversionConfigurationId
|
|
902
|
-
}
|
|
903
|
-
overrideDefaultVariantId
|
|
904
|
-
option {
|
|
905
|
-
...OptionMinimalFields
|
|
906
|
-
}
|
|
907
|
-
stepTitle
|
|
908
|
-
helpText
|
|
909
|
-
mandatory
|
|
910
|
-
relevantPanelName
|
|
911
|
-
silent
|
|
912
|
-
conditions {
|
|
913
|
-
requiredVariantMetafields {
|
|
914
|
-
variantMetafieldConfigurationId
|
|
915
|
-
variantMetafieldValue
|
|
916
|
-
}
|
|
917
|
-
requiredVariantSelections
|
|
918
|
-
targetStepName
|
|
919
|
-
action
|
|
920
|
-
type
|
|
921
|
-
}
|
|
922
|
-
data {
|
|
923
|
-
__typename
|
|
924
|
-
... on InformationStepData {
|
|
925
|
-
content
|
|
926
|
-
lookAtAnimation {
|
|
927
|
-
...LookAtAnimationFields
|
|
928
|
-
}
|
|
929
|
-
modelAnimation {
|
|
930
|
-
...ModelAnimationFields
|
|
931
|
-
}
|
|
932
|
-
}
|
|
933
|
-
... on DigitalContentStepData {
|
|
934
|
-
advancedEditorAnimation {
|
|
935
|
-
x
|
|
936
|
-
y
|
|
937
|
-
zoom
|
|
938
|
-
layoutName
|
|
939
|
-
}
|
|
940
|
-
baseUrl
|
|
941
|
-
lookAtAnimation {
|
|
942
|
-
...LookAtAnimationFields
|
|
943
|
-
}
|
|
944
|
-
modelAnimation {
|
|
945
|
-
...ModelAnimationFields
|
|
946
|
-
}
|
|
947
|
-
regions {
|
|
948
|
-
...RegionFields
|
|
949
|
-
}
|
|
950
|
-
}
|
|
951
|
-
... on FrameStepData {
|
|
952
|
-
advancedEditorAnimation {
|
|
953
|
-
x
|
|
954
|
-
y
|
|
955
|
-
zoom
|
|
956
|
-
layoutName
|
|
957
|
-
}
|
|
958
|
-
colorOption {
|
|
959
|
-
...OptionMinimalFields
|
|
960
|
-
}
|
|
961
|
-
colorPickerEnabled
|
|
962
|
-
initialZoomLevel
|
|
963
|
-
disablePlaceholder
|
|
964
|
-
displayImageOnFinishStep
|
|
965
|
-
displaySelectionOnFinishStep
|
|
966
|
-
enableVariantCategories
|
|
967
|
-
forceImageCover
|
|
968
|
-
hideImageInCart
|
|
969
|
-
hideSelectionInCart
|
|
970
|
-
lookAtAnimation {
|
|
971
|
-
...LookAtAnimationFields
|
|
972
|
-
}
|
|
973
|
-
shouldVectorize
|
|
974
|
-
vectorizeMaxColors
|
|
975
|
-
maxColors
|
|
976
|
-
modelAnimation {
|
|
977
|
-
...ModelAnimationFields
|
|
978
|
-
}
|
|
979
|
-
overlayImageKey
|
|
980
|
-
overlayImageUrl
|
|
981
|
-
placeholderImageKey
|
|
982
|
-
placeholderImageUrl
|
|
983
|
-
regions {
|
|
984
|
-
...RegionFields
|
|
985
|
-
}
|
|
986
|
-
whitelistedExtensions
|
|
987
|
-
}
|
|
988
|
-
... on IllustrationStepData {
|
|
989
|
-
advancedEditorAnimation {
|
|
990
|
-
x
|
|
991
|
-
y
|
|
992
|
-
zoom
|
|
993
|
-
layoutName
|
|
994
|
-
}
|
|
995
|
-
colorOption {
|
|
996
|
-
...OptionMinimalFields
|
|
997
|
-
}
|
|
998
|
-
colorPickerEnabled
|
|
999
|
-
pmsPickerEnabled
|
|
1000
|
-
displayColorsOnFinishStep
|
|
1001
|
-
displaySelectionOnFinishStep
|
|
1002
|
-
enableVariantCategories
|
|
1003
|
-
enableVariantSearch
|
|
1004
|
-
hideColorsInCart
|
|
1005
|
-
hideSelectionInCart
|
|
1006
|
-
lookAtAnimation {
|
|
1007
|
-
...LookAtAnimationFields
|
|
1008
|
-
}
|
|
1009
|
-
modelAnimation {
|
|
1010
|
-
...ModelAnimationFields
|
|
1011
|
-
}
|
|
1012
|
-
regions {
|
|
1013
|
-
...RegionFields
|
|
1014
|
-
}
|
|
1015
|
-
}
|
|
1016
|
-
... on MaterialStepData {
|
|
1017
|
-
advancedEditorAnimation {
|
|
1018
|
-
x
|
|
1019
|
-
y
|
|
1020
|
-
zoom
|
|
1021
|
-
layoutName
|
|
1022
|
-
}
|
|
1023
|
-
displaySelectionOnFinishStep
|
|
1024
|
-
enableVariantCategories
|
|
1025
|
-
hideSelectionInCart
|
|
1026
|
-
lookAtAnimation {
|
|
1027
|
-
...LookAtAnimationFields
|
|
1028
|
-
}
|
|
1029
|
-
modelAnimation {
|
|
1030
|
-
...ModelAnimationFields
|
|
1031
|
-
}
|
|
1032
|
-
targetMaterials
|
|
1033
|
-
}
|
|
1034
|
-
... on ModelStepData {
|
|
1035
|
-
advancedEditorAnimation {
|
|
1036
|
-
x
|
|
1037
|
-
y
|
|
1038
|
-
zoom
|
|
1039
|
-
layoutName
|
|
1040
|
-
}
|
|
1041
|
-
displaySelectionOnFinishStep
|
|
1042
|
-
enableVariantCategories
|
|
1043
|
-
hideSelectionInCart
|
|
1044
|
-
lookAtAnimation {
|
|
1045
|
-
...LookAtAnimationFields
|
|
1046
|
-
}
|
|
1047
|
-
modelAnimation {
|
|
1048
|
-
...ModelAnimationFields
|
|
1049
|
-
}
|
|
1050
|
-
replaceProductModel
|
|
1051
|
-
}
|
|
1052
|
-
... on ModuleStepData {
|
|
1053
|
-
advancedEditorAnimation {
|
|
1054
|
-
x
|
|
1055
|
-
y
|
|
1056
|
-
zoom
|
|
1057
|
-
layoutName
|
|
1058
|
-
}
|
|
1059
|
-
displayTextOnFinishStep
|
|
1060
|
-
hideTextInCart
|
|
1061
|
-
lookAtAnimation {
|
|
1062
|
-
...LookAtAnimationFields
|
|
1063
|
-
}
|
|
1064
|
-
maxLength
|
|
1065
|
-
modelAnimation {
|
|
1066
|
-
...ModelAnimationFields
|
|
1067
|
-
}
|
|
1068
|
-
module
|
|
1069
|
-
regions {
|
|
1070
|
-
...RegionFields
|
|
1071
|
-
}
|
|
1072
|
-
}
|
|
1073
|
-
... on PictureStepData {
|
|
1074
|
-
advancedEditorAnimation {
|
|
1075
|
-
x
|
|
1076
|
-
y
|
|
1077
|
-
zoom
|
|
1078
|
-
layoutName
|
|
1079
|
-
}
|
|
1080
|
-
displaySelectionOnFinishStep
|
|
1081
|
-
enableVariantCategories
|
|
1082
|
-
enableVariantSearch
|
|
1083
|
-
hideSelectionInCart
|
|
1084
|
-
lookAtAnimation {
|
|
1085
|
-
...LookAtAnimationFields
|
|
1086
|
-
}
|
|
1087
|
-
modelAnimation {
|
|
1088
|
-
...ModelAnimationFields
|
|
1089
|
-
}
|
|
1090
|
-
regions {
|
|
1091
|
-
...RegionFields
|
|
1092
|
-
}
|
|
1093
|
-
}
|
|
1094
|
-
... on ProductOverlayStepData {
|
|
1095
|
-
regions {
|
|
1096
|
-
...RegionFields
|
|
1097
|
-
}
|
|
1098
|
-
overlayType
|
|
1099
|
-
}
|
|
1100
|
-
... on QuestionStepData {
|
|
1101
|
-
advancedEditorAnimation {
|
|
1102
|
-
x
|
|
1103
|
-
y
|
|
1104
|
-
zoom
|
|
1105
|
-
layoutName
|
|
1106
|
-
}
|
|
1107
|
-
allowMultipleSelections
|
|
1108
|
-
displaySelectionsOnFinishStep
|
|
1109
|
-
displayType
|
|
1110
|
-
hideSelectionsInCart
|
|
1111
|
-
lookAtAnimation {
|
|
1112
|
-
...LookAtAnimationFields
|
|
1113
|
-
}
|
|
1114
|
-
modelAnimation {
|
|
1115
|
-
...ModelAnimationFields
|
|
1116
|
-
}
|
|
1117
|
-
}
|
|
1118
|
-
... on ShapeStepData {
|
|
1119
|
-
advancedEditorAnimation {
|
|
1120
|
-
x
|
|
1121
|
-
y
|
|
1122
|
-
zoom
|
|
1123
|
-
layoutName
|
|
1124
|
-
}
|
|
1125
|
-
displaySelectionOnFinishStep
|
|
1126
|
-
enableVariantCategories
|
|
1127
|
-
excludeFromPrint
|
|
1128
|
-
hideSelectionInCart
|
|
1129
|
-
lookAtAnimation {
|
|
1130
|
-
...LookAtAnimationFields
|
|
1131
|
-
}
|
|
1132
|
-
modelAnimation {
|
|
1133
|
-
...ModelAnimationFields
|
|
1134
|
-
}
|
|
1135
|
-
regions {
|
|
1136
|
-
...RegionFields
|
|
1137
|
-
}
|
|
1138
|
-
}
|
|
1139
|
-
... on SilentIllustrationStepData {
|
|
1140
|
-
advancedEditorAnimation {
|
|
1141
|
-
x
|
|
1142
|
-
y
|
|
1143
|
-
zoom
|
|
1144
|
-
layoutName
|
|
1145
|
-
}
|
|
1146
|
-
asset {
|
|
1147
|
-
...AssetFields
|
|
1148
|
-
}
|
|
1149
|
-
excludeFromPrint
|
|
1150
|
-
lookAtAnimation {
|
|
1151
|
-
...LookAtAnimationFields
|
|
1152
|
-
}
|
|
1153
|
-
modelAnimation {
|
|
1154
|
-
...ModelAnimationFields
|
|
1155
|
-
}
|
|
1156
|
-
regions {
|
|
1157
|
-
...RegionFields
|
|
1158
|
-
}
|
|
1159
|
-
}
|
|
1160
|
-
... on TextStepData {
|
|
1161
|
-
advancedEditorAnimation {
|
|
1162
|
-
x
|
|
1163
|
-
y
|
|
1164
|
-
zoom
|
|
1165
|
-
layoutName
|
|
1166
|
-
}
|
|
1167
|
-
allowNewlines
|
|
1168
|
-
colorOption {
|
|
1169
|
-
...OptionMinimalFields
|
|
1170
|
-
}
|
|
1171
|
-
colorPickerEnabled
|
|
1172
|
-
curved
|
|
1173
|
-
defaultText
|
|
1174
|
-
deleteDefaultOnFocus
|
|
1175
|
-
displayColorOnFinishStep
|
|
1176
|
-
displayImageFillOnFinishStep
|
|
1177
|
-
displayStrokeOnFinishStep
|
|
1178
|
-
displayTextOnFinishStep
|
|
1179
|
-
enableVariantCategories
|
|
1180
|
-
hideColorInCart
|
|
1181
|
-
hideImageFillInCart
|
|
1182
|
-
hideSelectionInCart
|
|
1183
|
-
hideStrokeInCart
|
|
1184
|
-
hideTextInCart
|
|
1185
|
-
imageFillOption {
|
|
1186
|
-
...OptionMinimalFields
|
|
1187
|
-
}
|
|
1188
|
-
imageFillScale
|
|
1189
|
-
lookAtAnimation {
|
|
1190
|
-
...LookAtAnimationFields
|
|
1191
|
-
}
|
|
1192
|
-
maxLength
|
|
1193
|
-
maxSize
|
|
1194
|
-
minSize
|
|
1195
|
-
modelAnimation {
|
|
1196
|
-
...ModelAnimationFields
|
|
1197
|
-
}
|
|
1198
|
-
paths
|
|
1199
|
-
regions {
|
|
1200
|
-
...RegionFields
|
|
1201
|
-
}
|
|
1202
|
-
replaceableText
|
|
1203
|
-
size
|
|
1204
|
-
strokeEnabled
|
|
1205
|
-
strokeOption {
|
|
1206
|
-
...OptionMinimalFields
|
|
1207
|
-
}
|
|
1208
|
-
strokeThickness
|
|
1209
|
-
textAlign
|
|
1210
|
-
uppercase
|
|
1211
|
-
userCanReplaceText
|
|
1212
|
-
vertical
|
|
1213
|
-
verticalAlign
|
|
1214
|
-
}
|
|
1215
|
-
}
|
|
1216
|
-
}
|
|
1217
|
-
}
|
|
1218
|
-
}
|
|
1219
|
-
`,We=f.gql`
|
|
1220
|
-
${ue}
|
|
1221
|
-
fragment MarketplaceThemeInstallConfigurationFields on MarketplaceThemeInstallConfiguration {
|
|
1222
|
-
id
|
|
1223
|
-
themeInstallId
|
|
1224
|
-
fields {
|
|
1225
|
-
type
|
|
1226
|
-
key
|
|
1227
|
-
value
|
|
1228
|
-
asset {
|
|
1229
|
-
key
|
|
1230
|
-
name
|
|
1231
|
-
fileLink
|
|
1232
|
-
type
|
|
1233
|
-
}
|
|
1234
|
-
conversionConfiguration {
|
|
1235
|
-
...ConversionConfigurationFields
|
|
1236
|
-
}
|
|
1237
|
-
listValues
|
|
1238
|
-
objectValues
|
|
1239
|
-
schema
|
|
1240
|
-
root
|
|
1241
|
-
}
|
|
1242
|
-
themeVersion {
|
|
1243
|
-
id
|
|
1244
|
-
version
|
|
1245
|
-
status
|
|
1246
|
-
createdAt
|
|
1247
|
-
updatedAt
|
|
1248
|
-
launchData {
|
|
1249
|
-
targetFiles {
|
|
1250
|
-
filename
|
|
1251
|
-
type
|
|
1252
|
-
mimeType
|
|
1253
|
-
fileLink
|
|
1254
|
-
preload
|
|
1255
|
-
}
|
|
1256
|
-
}
|
|
1257
|
-
configurationSchema {
|
|
1258
|
-
customSchemas {
|
|
1259
|
-
name
|
|
1260
|
-
type
|
|
1261
|
-
title
|
|
1262
|
-
fields
|
|
1263
|
-
extends
|
|
1264
|
-
schemas
|
|
1265
|
-
}
|
|
1266
|
-
fields {
|
|
1267
|
-
key
|
|
1268
|
-
type
|
|
1269
|
-
title
|
|
1270
|
-
required
|
|
1271
|
-
defaultValue
|
|
1272
|
-
options {
|
|
1273
|
-
key
|
|
1274
|
-
value
|
|
1275
|
-
}
|
|
1276
|
-
assetType
|
|
1277
|
-
multiLine
|
|
1278
|
-
limit
|
|
1279
|
-
items
|
|
1280
|
-
fields
|
|
1281
|
-
schema
|
|
1282
|
-
root
|
|
1283
|
-
}
|
|
1284
|
-
}
|
|
1285
|
-
}
|
|
1286
|
-
}
|
|
1287
|
-
`,js=f.gql`
|
|
1288
|
-
${We}
|
|
1289
|
-
query GetMarketplaceThemeInstallConfiguration($themeConfigurationId: String!, $themeInstallId: String!) {
|
|
1290
|
-
marketplaceThemeInstallConfiguration(id: $themeConfigurationId, themeInstallId: $themeInstallId, raw: false) {
|
|
1291
|
-
...MarketplaceThemeInstallConfigurationFields
|
|
1292
|
-
}
|
|
1293
|
-
}
|
|
1294
|
-
`,Ws=f.gql`
|
|
1295
|
-
${_n}
|
|
1296
|
-
${We}
|
|
1297
|
-
query GetCurrentIntegration($themeConfigurationId: String) {
|
|
1298
|
-
currentIntegration {
|
|
1299
|
-
id
|
|
1300
|
-
type
|
|
1301
|
-
marketplaceThemeInstallConfiguration(id: $themeConfigurationId, raw: false) {
|
|
1302
|
-
...MarketplaceThemeInstallConfigurationFields
|
|
1303
|
-
}
|
|
1304
|
-
...ActiveIntegrationFields
|
|
1305
|
-
}
|
|
1306
|
-
}
|
|
1307
|
-
`,Hs=f.gql`
|
|
1308
|
-
${We}
|
|
1309
|
-
query ReadTransactionForMarketplaceTheme($id: String!) {
|
|
1310
|
-
transactions(ids: [$id]) {
|
|
1311
|
-
marketplaceThemeInstallConfiguration(raw: false) {
|
|
1312
|
-
...MarketplaceThemeInstallConfigurationFields
|
|
1313
|
-
}
|
|
1314
|
-
}
|
|
1315
|
-
}
|
|
1316
|
-
`,Ys=f.gql`
|
|
1317
|
-
${We}
|
|
1318
|
-
query ReadBundleForMarketplaceTheme($id: String!) {
|
|
1319
|
-
bundles(ids: [$id]) {
|
|
1320
|
-
marketplaceThemeInstallConfiguration(raw: false) {
|
|
1321
|
-
...MarketplaceThemeInstallConfigurationFields
|
|
1322
|
-
}
|
|
1323
|
-
}
|
|
1324
|
-
}
|
|
1325
|
-
`,Js=f.gql`
|
|
1326
|
-
mutation CreateOrder($orderItems: [OrderItemInput]!) {
|
|
1327
|
-
orderCreate(orderItems: $orderItems, paid: false, generateInternalId: true) {
|
|
1328
|
-
id
|
|
1329
|
-
internalId
|
|
1330
|
-
}
|
|
1331
|
-
}
|
|
1332
|
-
`,Ks=f.gql`
|
|
1333
|
-
query CurrencyConversion($from: String!, $to: String!) {
|
|
1334
|
-
currencyConversion(from: $from, to: $to) {
|
|
1335
|
-
rateFrom
|
|
1336
|
-
rateTo
|
|
1337
|
-
timestamp
|
|
1338
|
-
}
|
|
1339
|
-
}
|
|
1340
|
-
`,ia=[E.SilentIllustration,E.ProductOverlay],gn=i=>{const t=[];for(const a of i.steps){const n=Xs(a.stepName,i.stepGroups);if(!n)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(s=>s.name===n.name);r?ia.includes(a.type)?r.silentSteps.push(a):r.renderableSteps.push(a):t.push({name:n.name,title:n.name,renderableSteps:ia.includes(a.type)?[]:[a],silentSteps:ia.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:i.finalizeStepConfig?i.finalizeStepConfig.modelAnimation:void 0,lookAtAnimation:i.finalizeStepConfig?i.finalizeStepConfig.lookAtAnimation:void 0},conditions:[]}],silentSteps:[]}),t},Xs=(i,t)=>t.find(e=>e.stepNames.includes(i)),pt=async(i,t)=>(await Promise.all((i.conditions||[]).map(async a=>{const n=t[a.targetStepName];if(n&&n.selectedVariants){const r=n.selectedVariants;return a.type==="VariantMetafield"?(await Qe.ensureIdsArePresent(r.map(o=>o.id)),a.requiredVariantMetafields?.some(o=>r.find(l=>Qe.requestIfAvailable(l.id,o.variantMetafieldConfigurationId||"")?.value===o.variantMetafieldValue))):a.requiredVariantSelections.some(s=>r.find(o=>o.id===s)!==void 0)}return!1}))).every(a=>a),Zs=async(i,t)=>{const e=await Promise.all(i.renderableSteps.map(o=>pt(o,t))),a=i.renderableSteps.filter((o,l)=>e[l]),n=await Promise.all(i.silentSteps.map(o=>pt(o,t))),r=i.silentSteps.filter((o,l)=>n[l]),s={name:i.name,title:i.title,renderableSteps:a,silentSteps:r};return s.silentSteps.length===0&&s.renderableSteps.length===0?null:s},lt=async(i,t)=>(await Promise.all(i.map(a=>Zs(a,t)))).filter(a=>a!==null),_s=async(i,t,e=!1)=>{const a=await lt(i,t),n=[];for(const s of a)for(const o of s.renderableSteps){let l=0;if(o.type!=="Finish"&&o.type!=="Module"){let c;o.option?.variants?(c=o.option,l=c?.variants?.length||0):(c=await I.getOption(o.option?.id),l=c?.variants?.length||0)}o.silent||(o.type===E.Model||o.type===E.Material||o.type===E.Picture||o.type===E.Shape?(l>1||e)&&n.push(o.stepName):n.push(o.stepName))}const r=a.filter(s=>s.renderableSteps.filter(l=>n.includes(l.stepName)).length>0);for(const s of r)s.renderableSteps=s.renderableSteps.filter(o=>n.includes(o.stepName));return r};class He{constructor(){this.timestamp=Date.now()}}class Ye{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 i=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return i()+i()+"-"+i()+"-"+i()+"-"+i()+"-"+i()+i()+i()},ri=({backgroundColor:i,outlineColor:t,borderRadius:e,configuration:a,elements:n,height:r,maxHeight:s,maxWidth:o,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}`,C=N(),S=a.purpose===Nt.FreeDesign&&P.jsx("defs",{children:P.jsx("clipPath",{id:"viewboxClip",children:P.jsx("rect",{width:p.width,height:p.height,rx:h})})}),w=a.colorProfiles?.map((v,B)=>P.jsx("color-profile",{name:v.name,xlinkHref:v.key,children:" "},B)),F=n.map(v=>({...v,_renderingConfiguration:a,mask:l?`url(#viewmask-${C})`:void 0})),b=Ua(F);return P.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",xmlSpace:"preserve",version:"1.1",preserveAspectRatio:d,width:A,height:r,style:{gridColumn:1,gridRow:1,maxWidth:o,maxHeight:s,position:c},viewBox:m,children:[w,S,!!i&&P.jsx("rect",{id:"layout-background",width:p.width,height:p.height,fill:i,rx:h}),P.jsx("g",{id:"element-group",clipPath:a.purpose===Nt.FreeDesign?"url(#viewboxClip)":void 0,children:b.map(v=>gi(v)).filter(v=>!!v)}),l&&P.jsx("rect",{x:l.x,y:l.y,width:l.width,height:l.height,fill:"none",stroke:l.hidden?"none":t||"#aaaaaa",strokeWidth:g/2,strokeDasharray:`${g*2} ${g}`}),l&&P.jsxs("mask",{id:`viewmask-${C}`,children:[P.jsx("rect",{x:p.x,y:p.y,width:p.width,height:p.height,fill:"black"}),P.jsx("rect",{x:l.x,y:l.y,width:l.width,height:l.height,fill:"white"})]})]})},to=(i,t,e,a,n)=>{const r=St(n),s=e/2,o=a/2,l=i+s,c=t+o,d=Math.sin(r),u=Math.cos(r),A=s,h=s,g=-o,p=o,m=A*u-g*d,C=h*u-p*d,S=A*d+g*u,w=h*d+p*u,F=Math.max(Math.abs(m),Math.abs(C)),b=Math.max(Math.abs(S),Math.abs(w));return{minX:l-F,maxX:l+F,minY:c-b,maxY:c+b}},eo=(i,t,e)=>{const a=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),n=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),r=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2));return Math.acos((n*n+a*a-r*r)/(2*n*a))*(180/Math.PI)},St=i=>i*(Math.PI/180),ao=(i,t,e)=>Math.abs(i-t)<e,no=(i,t,e)=>{const a=Math.sin(St(e)),n=Math.cos(St(e));return{x:(i.x-t.x)*n-(i.y-t.y)*a+t.x,y:(i.x-t.x)*a+(i.y-t.y)*n+t.y}},io=(i,t)=>({x:(i.x+t.x)/2,y:(i.y+t.y)/2}),ro=(i,t,e,a)=>({x:i.x+t?.x*e,y:i.y+t?.y*a}),so=(i,t,e,a)=>({x:i.x+(t?.x+t?.width)*e,y:i.y+t?.y*a}),oo=(i,t,e,a)=>({x:i.x+(t?.x+t?.width)*e,y:i.y+(t?.y+t?.height)*a}),Ft=i=>{switch(i){case Y.North:return Y.East;case Y.East:return Y.South;case Y.South:return Y.West;case Y.West:return Y.North;case Y.Northwest:return Y.Northeast;case Y.Northeast:return Y.Southeast;case Y.Southeast:return Y.Southwest;case Y.Southwest:return Y.Northwest}},lo=(i,t)=>t>45&&t<=135?Ft(i):t>135&&t<=225?Ft(Ft(i)):t>225&&t<=315?Ft(Ft(Ft(i))):i,co=(i,t={x:0,y:0},e={x:1,y:1})=>{const a=St(i.rotation),n={x:t.x+i.x*e.x,y:t.x+i.y*e.y},r={x:i.x+i.width,y:i.y},s={x:t.x+(i.x+i.width)*e.x,y:t.y+(i.height+i.y)*e.y},o={x:t.x+i.x*e.x,y:t.y+(i.height+i.y)*e.y},l={x:(o.x+s.x)/2,y:o.y-i.height*e.y/2};return{a:Wt(n,l,a),b:Wt(r,l,a),c:Wt(s,l,a),d:Wt(o,l,a),center:l}},Wt=(i,t,e)=>{const a=Math.sin(e),n=Math.cos(e);return{x:(i.x-t.x)*n-(i.y-t.y)*a+t.x,y:(i.x-t.x)*a+(i.y-t.y)*n+t.y}},uo=.352778,Ao=.035277,si=i=>{const t=i.rotation||0,e=St(t),a=Math.cos(e),n=-Math.sin(e);return P.jsx("g",{mask:i.stepName||i.productOverlay?void 0:i.mask,children:P.jsx("g",{transform:`
|
|
1341
|
-
matrix(1, 0, 0, 1, ${i.x}, ${i.y})
|
|
1342
|
-
matrix(1, 0, 0, 1, ${i.width/2}, ${i.height/2})
|
|
1343
|
-
matrix(${a}, ${-n}, ${n}, ${a}, 0, 0)
|
|
1344
|
-
matrix(1, 0, 0, 1, ${-i.width/2}, ${-i.height/2})
|
|
1345
|
-
`,children:P.jsx("image",{xlinkHref:i.src,preserveAspectRatio:i.preserveAspectRatio,width:i.width,height:i.height})})})},oi=i=>{const t=`spiff-group-clip-${i.id}`,e=i.rotation||0,a=St(e),n=Math.cos(a),r=-Math.sin(a),s=Ua(i.children),o=()=>P.jsx("clipPath",{id:t,preserveAspectRatio:"none",children:i.clipPath?P.jsx("path",{d:i.clipPath}):P.jsx("rect",{x:0,y:0,width:i.width,height:i.height})});return P.jsxs(P.Fragment,{children:[P.jsx("defs",{children:o()}),P.jsxs("g",{transform:`
|
|
1346
|
-
matrix(1, 0, 0, 1, ${i.x}, ${i.y})
|
|
1347
|
-
matrix(1, 0, 0, 1, ${i.width/2}, ${i.height/2})
|
|
1348
|
-
matrix(${n}, ${-r}, ${r}, ${n}, 0, 0)
|
|
1349
|
-
matrix(1, 0, 0, 1, ${-i.width/2}, ${-i.height/2})
|
|
1350
|
-
`,children:[i._renderingConfiguration?.debug?P.jsx("rect",{stroke:"red",opacity:.3,fill:"none",x:0,y:0,width:i.width,height:i.height}):void 0,s.map(l=>gi(l)).filter(l=>!!l).map(l=>P.jsx("g",{clipPath:`url(#${t})`,children:l}))]})]})},ho=i=>{const t=`spiff-frame-${i.id}`,e=`spiff-frame-threshold-${i.id}`,a=()=>{if(!i.pattern)return"";if(i.pattern.svg){const u=qe(i.pattern.svg,i.pattern.colors||{},!1);return Le(u)}return i.pattern.src};if(!a())return P.jsx(vr.Fragment,{});const n=()=>i.threshold?i.invertThreshold?"1 ".repeat(i.threshold)+"0 ".repeat(256-i.threshold):"0 ".repeat(i.threshold)+"1 ".repeat(256-i.threshold):"",r=()=>P.jsx(P.Fragment,{children:i.useThreshold&&P.jsx("defs",{children:P.jsxs("filter",{id:e,"color-interpolation-filters":"sRGB",children:[P.jsx("feColorMatrix",{type:"matrix",values:`
|
|
1351
|
-
${i.thresholdSaturation} ${i.thresholdSaturation} ${i.thresholdSaturation} 0 0
|
|
1352
|
-
${i.thresholdSaturation} ${i.thresholdSaturation} ${i.thresholdSaturation} 0 0
|
|
1353
|
-
${i.thresholdSaturation} ${i.thresholdSaturation} ${i.thresholdSaturation} 0 0
|
|
1354
|
-
0 0 0 1 0
|
|
1355
|
-
`,result:"greyscale"}),P.jsxs("feComponentTransfer",{in:"greyscale",children:[P.jsx("feFuncR",{type:"discrete",tableValues:n()}),P.jsx("feFuncG",{type:"discrete",tableValues:n()}),P.jsx("feFuncB",{type:"discrete",tableValues:n()})]})]})})}),s=i.rotation||0,o=St(s),l=Math.cos(o),c=-Math.sin(o),d=()=>{const u=i.pattern?.x||0,A=i.pattern?.y||0,h=i.pattern?.width||0,g=i.pattern?.height||0,p=i.pattern?.scaleX||1,m=i.pattern?.scaleY||1,C=i.pattern?.rotation||0;return[i.pattern?.svg?{id:`${t}-contents`,type:D.Illustration,x:u,y:A,rotation:C,width:h*p,height:g*m,src:a(),svg:i.pattern?.svg,colors:i.pattern?.colors}:{id:`${t}-contents`,type:D.Image,x:u,y:A,rotation:C,width:h*p,height:g*m,src:a()}]};return P.jsxs(P.Fragment,{children:[r(),P.jsx("g",{opacity:i.opacity,mask:i.stepName?void 0:i.mask,filter:i.useThreshold?`url(#${e})`:void 0,children:P.jsx("g",{transform:`
|
|
1356
|
-
matrix(1, 0, 0, 1, ${i.x}, ${i.y})
|
|
1357
|
-
matrix(1, 0, 0, 1, ${i.width/2}, ${i.height/2})
|
|
1358
|
-
matrix(${l}, ${-c}, ${c}, ${l}, 0, 0)
|
|
1359
|
-
matrix(1, 0, 0, 1, ${-i.width/2}, ${-i.height/2})
|
|
1360
|
-
matrix(${i.scaleX}, 0, 0, ${i.scaleY}, 0, 0)
|
|
1361
|
-
`,children:P.jsx(oi,{id:t,x:0,y:0,rotation:0,width:i.width,height:i.height,clipPath:i.path,children:d()})})})]})},li=new Map;class go{constructor(t){this.font=t,this.glyphsFromText=new Map,this.kerningValues=new Map,this.height=this.calculateApproximateHeight()}getFont(){return this.font}getGlyphs(t){const e=this.glyphsFromText.get(t);if(e)return e;const a=this.font.stringToGlyphs(t);return this.glyphsFromText.set(t,a),a}getApproximateHeight(){return this.height}getExactHeight(t){const e=this.font.stringToGlyphs(t);let a=0,n=0;return e.forEach(r=>{const s=r.getMetrics();a=Math.max(a,s.yMax),n=Math.min(n,s.yMin)}),a-n}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 n=a.get(e.name);return n||(n=this.font.getKerningValue(t,e),a.set(e.name,n)),n}calculateApproximateHeight(){const e=this.font.stringToGlyphs("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");let a=0,n=0;return e.forEach(r=>{const s=r.getMetrics();a=Math.max(a,s.yMax),n=Math.min(n,s.yMin)}),a-n}}const mo=i=>i.substring(0,5).toLowerCase().trim()==="data:",ra=new Map,Pt=async i=>{if(ra.has(i))return ra.get(i);const e=(async()=>{try{return vt(i).getFont()}catch{if(mo(i)){const a=Ln(i),n=ma.parse(a);return va(i,n),n}else{const a=await Ue(i,!0),n=ma.parse(a);return va(i,n),await $r(n,i),n}}})();return ra.set(i,e),e},po=i=>{const t=Ln(i),e=ma.parse(t);return va(i,e),e},vt=i=>{const t=li.get(i);if(t)return t;throw new Error("Font metrics unavailable for font")},va=(i,t)=>{const e=new go(t);return li.set(i,e),e},fo=async i=>{const t=ot(),e=t.parseFromString(i,"image/svg+xml"),a=e.firstElementChild,n=new Map;a.querySelectorAll("style").forEach(d=>{Pn.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&&n.set(h,p)}})});const s=e.querySelectorAll("tspan");for(let d=0;d<s.length;d++){const u=s.item(d),A=u.closest("text"),h=u.closest("g"),g=A.getAttribute("font-family"),p=await Pt(n.get(g)),m=Sr.decode(u.innerHTML),C=A.getAttribute("fill"),S=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 B=u.getAttribute("text-anchor");B==="middle"?v=b/2:B==="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=C,M.stroke=S,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=(i,t,e,a)=>Math.max(So(i.join(`
|
|
1362
|
-
`),e,a),t),mn=(i,t,e,a,n,r)=>{const s=(r||ui)*n.getApproximateHeight(),o=t.split(`
|
|
1363
|
-
`);try{const l=o.flatMap(d=>Ie(d,i.width,a,n)),c=l.flatMap(d=>d.lines);return{lines:c,requiredHeight:l.flatMap(d=>d.lines).length*(a*s),fontSize:e,requiredWidth:xe(c,i.width,a,n)}}catch{const c=t.split("");return{lines:c,requiredHeight:c.length*(a*s),fontSize:e,requiredWidth:xe(c,i.width,a,n)}}},Ie=(i,t,e,a)=>{const n=ft(i,e,a);if(n<=t)return{lines:[i],width:n};if(!(i.indexOf(" ")>-1)){if(i.length<=1)throw new Error(`Character ${i} is wider than region`);const d=Math.floor(i.length/2),u=Ie(i.slice(0,d),t,e,a),A=Ie(i.slice(d),t,e,a);return{lines:[...u.lines,...A.lines],width:Math.max(u.width,A.width)}}const s=i.split(" "),o=[];let l=-1/0,c=0;for(;c<s.length;){const d=s[c];if(ft(d,e,a)>t){const u=Ie(d,t,e,a);o.push(...u.lines),l=Math.max(l,u.width),c++}else{const u=[d];l=Math.max(l,ft(d,e,a));let A=c+1,h=!0;for(;A<s.length&&h;){const g=s[A],p=ft(`${u.join(" ")} ${g}`,e,a);p<=t?(u.push(g),l=Math.max(l,p),A++):h=!1}o.push(u.join(" ")),c=A}}if(l<0)throw new Error(`No max width calculated for text: ${o}.`);return{lines:o,width:l}},Co=(i,t,e,a,n,r)=>{const s=(r??ui)*t.getApproximateHeight(),o=1/e.unitsPerEm,l=ci(i,o,t),c=i.length*s*o,d=a/l,u=n/c;return Math.min(u,d)},wo=(i,t,e,a)=>{const n=vt(t.fontData.assetUrl),r=n.getFont(),s=t.fontSize/r.unitsPerEm;if(!e)return mn(t,i,t.fontSize,s,n,a);let o;if(t.text?o=t.text.split(`
|
|
1364
|
-
`):o=t.input?.split(`
|
|
1365
|
-
`)??[""],e.input===i&&t.width===e.width&&t.height===e.height&&t.lineHeight===e.lineHeight)return{lines:o,requiredHeight:t.height,requiredWidth:xe(o,t.width,s,n),fontSize:t.fontSize};const l=t.width!==e.width!=(t.height!==e.height);return t.lineHeight===e.lineHeight&&!l&&e.input===i?{lines:o,requiredHeight:t.height,requiredWidth:xe(o,t.width,s,n),fontSize:Co(o,n,r,t.width,t.height,a)}:mn(t,i,t.fontSize,s,n,a)},yo=(i,t,e,a,n)=>{const s=vt(t.assetUrl).getFont();let o={...i};const l={...i},c=ci(a,e/s.unitsPerEm,vt(t.assetUrl));return c&&c<o.width&&(l.width=c,n==="left"?(l.left+=Math.sin(o.rotation*Math.PI/360)*(o.width-c),l.top+=Math.sin(o.rotation*Math.PI/180)*(c-o.width)/2):n==="right"?l.left+=o.width-c:l.left+=(o.width-c)/2,a&&vo(a,a).every(([d,u])=>d===u)&&(o=l)),o},sa=1,ft=(i,t,e)=>{let a=0;const n=e.getGlyphs(i);return n.forEach((r,s)=>{if(r.advanceWidth&&(a+=r.advanceWidth),s<n.length-1){const o=e.getKerningValue(r,n[s+1]);a+=o||0}}),a*=t,a},So=(i,t,e)=>{let a=0;const n=e.getGlyphs(i);return n.forEach((r,s)=>{if(r.advanceWidth&&(a=Math.max(a,r.advanceWidth)),s<n.length-1){const o=e.getKerningValue(r,n[s+1]);a=Math.max(a,o||0)}}),a*=t,a},ci=(i,t,e)=>{let a=0;return i.forEach(n=>{a=Math.max(a,ft(n,t,e))}),a},pn={stripControlCharacters:!0,vertical:!1,uppercase:!1},Fe=(i,t=pn)=>{const e={...pn,...t};let a=i||"";return e.stripControlCharacters&&(a=a.replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,"")),e.uppercase&&(a=a.toUpperCase()),e.vertical&&(a=a.split("").join(`
|
|
1366
|
-
`)),a},vo=(i,t)=>i.map((e,a)=>[e,t[a]]),Eo=(i="center",t=!1)=>t?"center":i,di=i=>i==="left"?"start":i==="right"?"end":"middle",Ae=(i,t,e)=>i.fontData?{...i,...(()=>{if(i.algorithm===Bt.Traditional){const n=wo(t,i,e,i.lineHeight);return{text:n.lines.join(`
|
|
1367
|
-
`),height:n.requiredHeight,width:n.requiredWidth,fontSize:n.fontSize,input:t}}else return{text:t}})()}:i,ui=1.1;function Mt(i,t){return Ai(i,t.getTemplatingContext())}function Ai(i,t){try{i=Er.compile(i)(t)}catch(e){console.error("failed to render templated text",e)}return i}const bo=i=>{const e=(i.rotation||0)*Math.PI/180,a=Math.cos(e),n=-Math.sin(e),r=`text-path-${i.id}`,s=`text-fill-${i.id}`,o=i.x+(i.curved?0:i.width/2),l=i.y+(i.curved?0:i.height/2),c=Ai(i.text||"",i._renderingConfiguration?.templatingContext),d=c.split(`
|
|
1368
|
-
`),u=i.strokeColor?.browserValue&&i.strokeThickness?i.strokeColor?.browserValue:void 0,A=i.strokeColor?.browserValue&&i.strokeThickness?i.strokeThickness:void 0;if(i.curved&&!i.paths||!i.fontData)return null;const h=()=>i.textFillImage?`url("#${s}")`:i._renderingConfiguration?.spotColors&&i.fillSpotColorDefinition?`${i.fill} ${Hn(i.fillSpotColorDefinition)}`:i.fill;return P.jsxs(P.Fragment,{children:[P.jsxs("defs",{children:[i.textFillImage&&P.jsx("pattern",{id:s,patternUnits:"userSpaceOnUse",width:i.textFillImage.scale*i.textFillImage.width,height:i.textFillImage.scale*i.textFillImage.height,x:0,y:0,children:P.jsx("image",{href:i.textFillImage.src,xlinkHref:i.textFillImage.src,width:i.textFillImage.scale*i.textFillImage.width,height:i.textFillImage.scale*i.textFillImage.height})}),P.jsx("style",{type:"text/css",dangerouslySetInnerHTML:{__html:`
|
|
1369
|
-
@font-face {
|
|
1370
|
-
font-family: '${i.fontData.name}';
|
|
1371
|
-
src: url('${i.fontData.assetUrl}') format('truetype');
|
|
1372
|
-
}
|
|
1373
|
-
`}}),i.curved&&i.paths?P.jsx("path",{id:r,d:i.paths[0]}):void 0]}),i._renderingConfiguration?.debug?P.jsx("rect",{stroke:"blue",fill:"none",x:i.x,y:i.y,width:i.width,height:i.height}):void 0,P.jsx("g",{mask:i.stepName?void 0:i.mask,children:P.jsx("g",{transform:`matrix(${a}, ${-n}, ${n}, ${a}, ${o}, ${l})`,children:P.jsx("text",{xmlSpace:"preserve",fontFamily:`'${i.fontData.name}'`,fontSize:i.fontSize,fontStyle:"normal",fontWeight:"normal",fill:h(),style:{whiteSpace:"pre",userSelect:"none"},stroke:u,strokeWidth:A,children:i.curved?P.jsx(Bo,{text:c,curvedPathId:r,align:i.align}):d.map((g,p)=>P.jsx(Io,{align:i.vertical?"center":i.align,fontSize:i.fontSize,thisLineIdx:p,amountLines:d.length,text:g,textboxHeight:i.height,textboxWidth:i.width,lineHeight:i.lineHeight,vertical:i.vertical,verticalAlign:i.verticalAlign,fontData:i.fontData},p))})})})]})},Io=i=>{const t=()=>{if(i.lineHeight!==void 0)return i.lineHeight*i.fontSize;const n=vt(i.fontData.assetUrl),r=n.getFont(),s=i.fontSize/r.unitsPerEm;return n.getApproximateHeight()*s},e=()=>i.align==="left"?-i.textboxWidth/2:i.align==="right"?i.textboxWidth/2:0,a=()=>{const n=t(),r=i.textboxHeight/2;if(i.verticalAlign==="top")return-r+i.fontSize*3/4+i.thisLineIdx*n;if(i.verticalAlign==="bottom"){const o=i.amountLines-1-i.thisLineIdx;return r-i.fontSize/4-o*n}const s=(i.amountLines-1)/2;return(i.thisLineIdx-s)*n+i.fontSize/4};return P.jsx("tspan",{textAnchor:di(i.align),x:e(),y:`${a()}px`,children:i.text})},Bo=i=>{const t=`#${i.curvedPathId}`,e=()=>i.align==="left"?"0%":i.align==="right"?"100%":"50%";return P.jsx("textPath",{startOffset:e(),textAnchor:di(i.align),href:t,xlinkHref:t,children:i.text})},Po=i=>{if(i.cachedObjectURL&&!i._renderingConfiguration?.omitCachedFields)return P.jsx(si,{id:i.id,src:i.cachedObjectURL,x:i.x,y:i.y,width:i.width,height:i.height,rotation:i.rotation,preserveAspectRatio:"none",immutable:i.immutable,mask:i.stepName?void 0:i.mask});const t=i.rotation||0,e=St(t),a=Math.cos(e),n=-Math.sin(e),r=`
|
|
1374
|
-
matrix(1, 0, 0, 1, ${i.x}, ${i.y})
|
|
1375
|
-
matrix(1, 0, 0, 1, ${i.width/2}, ${i.height/2})
|
|
1376
|
-
matrix(${a}, ${-n}, ${n}, ${a}, 0, 0)
|
|
1377
|
-
matrix(1, 0, 0, 1, ${-i.width/2}, ${-i.height/2})
|
|
1378
|
-
`;if(!i.svg)throw new Error(`Illustration element ${i.id} (stepName ${i.stepName}) lacked svg from src ${i.src} at render time.`);return P.jsx("g",{mask:i.stepName?void 0:i.mask,children:P.jsx("g",{transform:r,dangerouslySetInnerHTML:{__html:$a(i.svg,i.width,i.height,i.colors,i._renderingConfiguration?.spotColors)}})})};class hi{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 n=this.prevCommands.filter(r=>r.sequenceId===t).pop();n&&(this.prevCommands=this.prevCommands.filter(r=>r.sequenceId!==t),n?.overrideOldState(e),this.prevCommands.push(n))}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 n=[...e?.elements||[]];return this.getLayoutDataWithState(a,n)}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},Component:ri,getComponentWithProps:a=>Je(t,e,a)}}initialize(t,e){if(e){this.state={transaction:e};return}let a={serializableWorkflow:{steps:[]},layouts:{}};t.forEach(n=>{a=new qa(n).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 gi=i=>i.type===D.Image?P.jsx(si,{...i},i.id):i.type===D.Frame?P.jsx(ho,{...i},i.id):i.type===D.Illustration?P.jsx(Po,{...i},i.id):i.type===D.Textbox?P.jsx(bo,{...i},i.id):i.type===D.Group?P.jsx(oi,{...i},i.id):null,Je=(i,t,e)=>{const a=e.renderingConfiguration,n=a?.removeExcludedElements?t.filter(r=>!r.excludeFromExport):t;return P.jsx(ri,{preserveAspectRatio:void 0,elements:n,backgroundColor:i.transparentBackground?void 0:e.backgroundColor?e.backgroundColor:"white",width:e.width||i.width,height:e.height||i.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:i.width,height:i.height},configuration:a,outlineArea:e.outlineArea,maxHeight:e.maxHeight,maxWidth:e.maxWidth,position:e.position,borderRadius:e.borderRadius,outlineColor:e.outlineColor})};function Ua(i){return i.sort((t,e)=>{const a=t.layer||0,n=e.layer||0;if(a<n)return-1;if(a>n)return 1;const r=t.layerIndex||0,s=e.layerIndex||0;return r<s?-1:r>s?1:0})}const ut=new Map,Dt=new Map,oa=new Map,mi=async(i,t)=>{if(!t){if(!i)throw new Error("No region or src supplied. Cannot construct frame!");return Ea(i)}return tt(t)},Ea=i=>{const t=i.width,e=i.height;return`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 ${t} ${e}'>
|
|
1379
|
-
<path id="target-path" d='M0 0 h ${t} v ${e} h ${-t} Z' />
|
|
1380
|
-
</svg>
|
|
1381
|
-
`},xo=async(i,t)=>{if(!t)return;const e=await I.getDefaultVariant(t,i.frameVariantId);if(!e)throw new Error(`No variant with ID: ${i.frameVariantId}`);if(!e.asset)throw new Error(`No asset for variant with ID: ${i.frameVariantId}`);return e},he=async i=>{if(oa.has(i))return oa.get(i);const e=(async()=>{if(Dt.has(i))return Dt.get(i);await new Promise(A=>setTimeout(A,0));const n=ot().parseFromString(i,"image/svg+xml"),r=n.querySelector("svg");if(!r)throw new Error("Malformed frame SVG: <svg> tag not found");const s=r.getAttribute("viewBox");if(!s)throw new Error("SVG missing viewBox.");const o=s.split(" "),l=parseFloat(o[3])||1,c=parseFloat(o[2])||1,d=n.getElementById("target-path"),u=n.getElementsByClassName("st0").item(0);if(d){const A=d.getAttribute("d");if(!A)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const h={path:A,width:c,height:l};return Dt.set(A,h),h}if(u){const A=u.getAttribute("d");if(!A)throw new Error("Malformed frame SVG: 'd' attribute not found on target element");const h={path:A,width:c,height:l};return Dt.set(A,h),h}throw new Error("Malformed frame SVG")})();return oa.set(i,e),e},Va=(i,t,e,a)=>{const n=t.width/t.height,r=i.width/i.height;let s;a?r>n?s=t.height/i.height:s=t.width/i.width:r>n?s=t.width/i.width:s=t.height/i.height,e?.scale!==void 0&&(s*=e?.scale);const o=t.width/2,l=t.height/2,c=o-i.width/2*s,d=e?.left||c,u=l-i.height/2*s,A=e?.top||u;return{x:d,y:A,zoom:s}},ba=async i=>{if(ut.has(i))return ut.get(i);if(i.startsWith("data:image/svg+xml")){const e=br.dataUriToBuffer(i),a=new TextDecoder().decode(e.buffer),n=za(a),r={src:i,width:n.width,height:n.height,aspect:n.width/n.height};return ut.set(i,r),r}if((i.split(".").pop()?.toLowerCase()??"")==="svg"){const e=await La(i),a=e.width,n=e.height,r={src:i,width:a,height:n,aspect:a/n};return ut.set(i,r),r}else{const e=await Ue(i,!0),a=await ce(e),n={src:i,width:a.width,height:a.height,aspect:a.width/a.height};return ut.set(i,n),n}},La=async i=>{const t=await tt(i);return za(t)},fn=i=>i.endsWith("mm")?Number(i.replace("mm",""))*3.7795275591:i.endsWith("px")?Number(i.replace("px","")):Number(i),za=i=>{const a=ot().parseFromString(i,"image/svg+xml").querySelector("svg");if(!a)throw new Error("No svg tag found, this svg must be malformed!");const n=a.getAttribute("viewBox"),r=a.getAttribute("width"),s=a.getAttribute("height"),o=s&&r?[0,0,fn(r),fn(s)]:n?.split(" ").map(l=>Number(l));if(!o)throw new Error("No viewbox or width/height values detected on SVG file!");return{width:o[2],height:o[3]}},qt=(i,t)=>{const e=i.layoutState.elements.filter(n=>n.layer===t),a=Math.max(...e.map(n=>n.layerIndex).filter(n=>n!==void 0));return Math.max(a,0)+1},pi=async i=>new Promise(t=>{tt(i).then(e=>{t(e)}).catch(e=>console.error(e))}),la=new Map,re=async i=>{if(la.has(i))return la.get(i);const t=async n=>new Promise((r,s)=>{try{if(!(!!URL&&!!URL.createObjectURL))throw new Error("Environment incapable of generating ObjectURL");n.toBlob(l=>{if(!l)throw n.width===0||n.height===0?new Error(`Canvas dimensions are invalid (${n.width},${n.height})`):n.width*n.height>=268435456?new Error(`Canvas dimensions exceed device limit (${n.width},${n.height})`):new Error("Couldn't generate object URL for Illustration, the blob was undefined!");r(URL.createObjectURL(l))})}catch(o){s(o)}}),a=(async()=>{const s=ot().parseFromString(i,"image/svg+xml").firstElementChild;if(!s)throw new Error("Failed to read SVG");const l=Et().serializeToString(s),c=yt(),d=c.getContext("2d"),u=await Ma.Pith.from(d,l,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:yt,createImage:le,DOMParser:Ra(),fetch:nt}),A=s.getAttribute("width"),h=s.getAttribute("height"),g=2048;if(h&&A){const p=parseFloat(h),C=parseFloat(A)/p;C>1?u.resize(g,g/C):u.resize(g*C,g)}else u.resize(g,g);return await u.render(),await t(c)})();return la.set(i,a),a},Gt=async(i,t,e,a)=>{const n=i.layoutState.layout.useEditableArea&&i.layoutState.layout.editableArea||{width:i.layoutState.layout.width,height:i.layoutState.layout.height,x:0,y:0},r=n.width<n.height?n.width:n.height,s=i.layoutState.layout.useEditableArea?r/1.3:r/2,o={top:n.y+n.height/2-s/2,left:n.x+n.width/2-s/2,width:s,height:s,rotation:0,panelId:i.layoutState.layout.panelId};if(e&&t===D.Illustration){const l=await it(await pi(e)),A=ot().parseFromString(l.svg,"image/svg+xml").firstElementChild.getAttribute("viewBox");if(!A)throw new Error("SVG missing viewBox.");const h=o.height,g=A.split(" "),p=parseFloat(g[2])||1,m=parseFloat(g[3])||1,C=p/m;o.height=o.width/C,o.top+=(h-o.height)/2}if(e&&t===D.Image){const l=o.height,c=await Ue(e),d=await ce(c),u=d.width/d.height;o.height=o.width/u,o.top+=(l-o.height)/2}if(e&&t===D.Textbox&&a?.text&&a?.fontScale){await Pt(e);const l=vt(e),c=ft(a.text,a?.fontScale,l);o.width=Math.min(c,n.width*.85),o.left=n.x+n.width/2-o.width/2}return o};class Fo{static async getFrame(t,e){const a=await mi(e.region,e.src),n=await he(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||qt(t,r.layer||0),rotation:r.rotation,scaleX:r.width/n.width,scaleY:r.height/n.height,path:n.path,dataWidth:n.width,dataHeight:n.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||qt(t,a.layer||0),immutable:a.immutable,preserveAspectRatio:"none"}}static async getTextbox(t,e){const{configuration:a,fontSrc:n,designInputStep:r}=e,s=await Pt(n),o={assetUrl:n,name:s.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,n,{text:d,fontScale:a.size?a.size/s.unitsPerEm:void 0}),A=Ae({id:N(),type:D.Textbox,x:u.left,y:u.top,width:u.width,height:u.height,align:Eo(a.textAlign,a.vertical),curved:a.curved,fill:r?.color||a.colour||"#000000",fontData:o,layer:u.layer||0,layerIndex:u.layerIndex||qt(t,u.layer||0),paths:a.paths,rotation:u.rotation,vertical:a.vertical,verticalAlign:a.verticalAlign||"middle",algorithm:Bt.Traditional,fontSize:a.size||Math.max(Math.round(u.height*.025),1),text:d,input:l},d),h=yo({...u,height:A.height},o,A.fontSize,A?.text?.split(`
|
|
1382
|
-
`)||[],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=`
|
|
1383
|
-
<svg
|
|
1384
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
1385
|
-
xmlnsXlink="http://www.w3.org/1999/xlink"
|
|
1386
|
-
xmlSpace="preserve"
|
|
1387
|
-
preserveAspectRatio="none"
|
|
1388
|
-
version="1.1"
|
|
1389
|
-
width="1"
|
|
1390
|
-
height="1"
|
|
1391
|
-
viewBox="0 0 1 1"
|
|
1392
|
-
>
|
|
1393
|
-
<rect
|
|
1394
|
-
x="0"
|
|
1395
|
-
y="0"
|
|
1396
|
-
width="1"
|
|
1397
|
-
height="1"
|
|
1398
|
-
class="spiff-fill-shape"
|
|
1399
|
-
fill="${e.color}"
|
|
1400
|
-
/>
|
|
1401
|
-
</svg>
|
|
1402
|
-
`,n={};n["spiff-fill-shape"]={browserValue:e.color};const r=e.region?.item||await Gt(t,D.Illustration),s=N();return{stepRegion:e.region?.item,stepRegionIndex:e.region?.index,colors:n,id:s,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||qt(t,r.layer||0),immutable:r.immutable}}static async getIllustration(t,e){const a=e.region?.item||await Gt(t,D.Illustration,e.src),n=await it(await pi(e.src)),r=await re(n.svg),s=N();return{cachedObjectURL:r,stepRegion:e.region?.item,stepRegionIndex:e.region?.index,colors:n.colors,id:s,src:e.src,svg:n.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||qt(t,a.layer||0),immutable:a.immutable}}}class j extends Error{constructor(){super("Element not found!"),Object.setPrototypeOf(this,j.prototype)}}const V=(i,t)=>K(i,t).elements.find(n=>n.id===i),K=(i,t)=>{const e=Object.values(t).find(a=>a.elements.some(n=>n.id===i));if(!e)throw new j;return e},_=(i,t)=>{const e=[...t.elements.filter(n=>n.id!==i.id),i],a=Ua(e);return{layout:t.layout,elements:a,modificationID:N()}},Ia=async i=>{const t=[...Object.keys(i.layouts)],e=[...new Set(t)];for(let a=0;a<e.length;a++){const n=e[a],r=i.layouts[n];await Promise.all(r.elements.map(async s=>{if(s.type==="illustration"){const o=s;if(o.src&&!o.svg){const l=await tt(o.src),c=await it(l);o.svg=$a(c.svg,o.width,o.height,o.colors)}}else if(s.type==="frame"){const o=s;if(o.pattern?.colors&&o.pattern?.src){const l=await tt(o.pattern?.src),c=await it(l);o.pattern.svg=c.svg}}isNaN(s.x)&&(s.x=0),isNaN(s.y)&&(s.y=0),isNaN(s.width)&&(s.width=0),isNaN(s.height)&&(s.height=0),isNaN(s.rotation)&&(s.rotation=0)}))}for(const a in i.layouts){const n=i.layouts[a].elements.filter(s=>s.type===D.Illustration);for(let s=0;s<n.length;++s){const o=n[s];if(o.src&&o.svg)try{o.cachedObjectURL=await re(o.svg)}catch(l){console.log(l)}}const r=i.layouts[a].elements.filter(s=>s.type===D.Textbox);for(let s=0;s<r.length;++s){const o=r[s];o.fontData?.assetUrl&&await Pt(o.fontData.assetUrl)}}};class ${undo(){if(!this.oldState)throw new Error("Cannot undo.");return this.oldState}overrideOldState(t){this.oldState=t}}class Cn extends ${constructor(t){super(),this.serializableWorkflow=t}apply(t){return this.oldState=t,{...t,serializableWorkflow:this.serializableWorkflow}}}class Do 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 j;const a={...e,x:this.x,y:this.y},n=K(e.id,Object.values(t.layouts)),r=_(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:r}}}}class ko 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 j;const a={...e,rotation:this.angle},n=K(e.id,Object.values(t.layouts)),r=_(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:r}}}}class Mo 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 j;let a={...e,width:this.width,height:this.height};if(e.type==="frame"){const s=a;s.scaleX=s.scaleX*this.width/e.width,s.scaleY=s.scaleY*this.height/e.height}else if(e.type==="textbox"){const s=a,o=(!s.algorithm||s.algorithm===Bt.Autosize?s.text:s.input)??"";a=Ae(s,o,e)}const n=K(e.id,Object.values(t.layouts)),r=_(a,n);return{...t,layouts:{...t.layouts,[n.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 qa 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 W 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(o=>o.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 o=[...e,this.element];return this.element.layerIndex===void 0&&(this.element.layerIndex=this.assignIndex(this.element,o)),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:o,modificationID:N()}}}}const n=e[e.length-1],r=n.productOverlay?n:null;r&&e.pop();let s;if(this.element.layerIndex!==null&&this.element.layerIndex!==void 0)s=[...e,this.element].sort((o,l)=>o.layerIndex!==void 0&&l.layerIndex!==void 0?o.layerIndex-l.layerIndex:0);else{const o=this.assignIndex(this.element,e);this.element.layerIndex=o!==void 0?o:0,s=[...e,this.element]}return r&&s.push(r),{...t,layouts:{...t.layouts,[this.layout.id]:{...t.layouts[this.layout.id],elements:s,modificationID:N()}}}}assignIndex(t,e){if(e.length===0)return 0;const a=e.filter(n=>(n.layer||0)===(t.layer||0)).sort((n,r)=>(n.layerIndex||0)-(r.layerIndex||0))[e.length-1]?.layerIndex;return a!==void 0?a+1:0}}class xt 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(o=>o.id!==this.id).length!==r.elements.length&&(e=!0),{...r,elements:r.elements.filter(o=>o.id!==this.id),modificationID:N()}));e||console.log(`Failed to delete element ${this.id}`);const n={};return a.forEach(r=>{n[r.layout.id]=r}),{...t,layouts:n}}}class fi 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 j;const a={...e,fill:this.color,fillSpotColorDefinition:this.textFillSpotColor,textFillImage:void 0},n=K(e.id,Object.values(t.layouts)),r=_(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:r}}}}class ca 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 j;const a={...e,textFillImage:this.imageFill},n=K(e.id,Object.values(t.layouts)),r=_(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:r}}}}class Ci 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 j;const a={...e,fontSize:this.size},n=K(e.id,Object.values(t.layouts)),r=(!e.algorithm||e.algorithm===Bt.Autosize?e.text:e.input)??"",s=_(Ae(a,r),n);return{...t,layouts:{...t.layouts,[n.layout.id]:s}}}}class Ba 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 j;const a={...e,fontData:this.fontData},n=K(e.id,Object.values(t.layouts)),r=(!e.algorithm||e.algorithm===Bt.Autosize?e.text:e.input)??"",s=_(Ae(a,r),n);return{...t,layouts:{...t.layouts,[n.layout.id]:s}}}}class wi 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 j;const a={...e,align:this.align},n=K(e.id,Object.values(t.layouts)),r=_(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:r}}}}class To extends ${constructor(t,e,a){super(),this.id=t,this.imageData=e,this.offsets=a}apply(t){this.oldState=t;const e=K(this.id,Object.values(t.layouts)),a=e.elements.findIndex(o=>o.id===this.id),n=e.elements[a].pattern,r=[...e.elements];r.splice(a,1,{...e.elements[a],pattern:{...n,src:this.imageData.src,x:this.offsets.x,y:this.offsets.y,width:this.imageData.width,height:this.imageData.height,scaleX:this.offsets.zoom,scaleY:this.offsets.zoom,svg:this.imageData.svg,colors:this.imageData.colors}});const s={...e,elements:r,modificationID:N()};return{...t,layouts:{...t.layouts,[e.layout.id]:s}}}}class No extends ${constructor(t,e,a,n,r){super(),this.id=t,this.useThreshold=e,this.invertThreshold=a,this.threshold=n,this.thresholdSaturation=r}apply(t){this.oldState=t;const e=V(this.id,Object.values(t.layouts));if(!e.id)throw new j;const a={...e,useThreshold:this.useThreshold,invertThreshold:this.invertThreshold,threshold:this.threshold,thresholdSaturation:this.thresholdSaturation},n=K(e.id,Object.values(t.layouts)),r=_(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:r}}}}class Qo 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 j;const a={...e,src:this.src},n=K(e.id,Object.values(t.layouts)),r=_(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:r}}}}class yi 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 j;const a=K(e.id,Object.values(t.layouts)),n=_(Ae(e,this.text,e),a);return{...t,layouts:{...t.layouts,[a.layout.id]:n}}}}class da 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 j;const a={...e,strokeColor:this.strokeColor,strokeThickness:this.strokeThickness},n=K(e.id,Object.values(t.layouts)),r=_(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:r}}}}class Pa 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 j;const a=e.colors||{},n=a[this.className];typeof this.fill=="string"?a[this.className]={browserValue:this.fill,spotColor:n?.spotColor,pmsValue:n?.pmsValue}:a[this.className]={browserValue:this.fill.browserValue,spotColor:n?.spotColor,pmsValue:this.fill.pmsValue};const r={...e,colors:a},s=K(e.id,Object.values(t.layouts)),o=_(r,s);return{...t,layouts:{...t.layouts,[s.layout.id]:o}}}}class Oo 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 j;const a={...e,svg:this.svgBody,cachedObjectURL:this.objectURL},n=K(e.id,Object.values(t.layouts)),r=_(a,n);return{...t,layouts:{...t.layouts,[n.layout.id]:r}}}}class Ro extends ${constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!V(this.id,Object.values(t.layouts)).id)throw new j;const a=Object.values(t.layouts).find(s=>s.elements.find(o=>o.id===this.id));if(!a)throw new Error("Layout missing from state!");const n=a.elements.findIndex(s=>s.id===this.id);a.elements.push(a.elements.splice(n,1)[0]);const r=[...a.elements];return r.forEach((s,o)=>s.layerIndex=o),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:r,modificationID:N()}}}}}class $o 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 j;const a=Object.values(t.layouts).find(o=>o.elements.find(l=>l.id===this.id));if(!a)throw new Error("Layout missing from state!");const n=a.elements.findIndex(o=>o.id===this.id);a.elements.splice(n,1),a.elements.unshift(e);const r=[...a.elements],s=r.splice(n,1)[0];return r.splice(n,0,s),r.forEach((o,l)=>o.layerIndex=l),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:r,modificationID:N()}}}}}class Uo extends ${constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!V(this.id,Object.values(t.layouts)).id)throw new j;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 n=a.elements.findIndex(l=>l.id===this.id),r=n+1,s=[...a.elements],o=s.splice(n,1)[0];return s.splice(r,0,o),s.forEach((l,c)=>l.layerIndex=c),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:s,modificationID:N()}}}}}class Vo extends ${constructor(t){super(),this.id=t}apply(t){if(this.oldState=t,!V(this.id,Object.values(t.layouts)).id)throw new j;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 n=a.elements.findIndex(l=>l.id===this.id),r=n-1,s=[...a.elements],o=s.splice(n,1)[0];return s.splice(r,0,o),s.forEach((l,c)=>l.layerIndex=c),{...t,layouts:{...t.layouts,[a.layout.id]:{...t.layouts[a.layout.id],elements:s,modificationID:N()}}}}}class wn{constructor(t,e,a){this.processRegion=async n=>{const r=this.layouts.find(l=>l.panelId===n.panelId);if(!r)throw new J(n);let s="";if(this.configuration.type===E.ProductOverlay){let l="";if(this.product?.overlayImageUrl&&(l=this.product.overlayImageUrl),s=l,!l)throw new st(this.configuration,"Couldn't find an asset for product overlay step")}const o=this.evaluateAssetType();if(o===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:o,y:n.top,x:n.left,width:n.width,height:n.height,layer:n.layer,layerIndex:n.layerIndex,immutable:n.immutable,productOverlay:this.configuration.type===E.ProductOverlay?!0:void 0,rotation:n.rotation,excludeFromExport:this.configuration.data.excludeFromPrint,preserveAspectRatio:"none"};return{regionElement:{id:c.id,region:n},command:new W(c,r)}}else{const l=this.configuration.type===E.SilentIllustration?this.configuration.data.asset?.fileLink:s,d=await it(await(async()=>new Promise((A,h)=>{if(!l){h("Undefined vector silent step source");return}tt(l,!0).then(g=>{A(g)}).catch(g=>console.error(g))}))()),u={stepName:this.configuration.stepName,id:N(),cachedObjectURL:await re(d.svg),src:l,svg:d.svg,colors:d.colors,type:o,y:n.top,x:n.left,width:n.width,height:n.height,layer:n.layer,layerIndex:n.layerIndex,rotation:n.rotation,immutable:n.immutable,productOverlay:this.configuration.type===E.ProductOverlay?!0:void 0,excludeFromExport:this.configuration.data.excludeFromPrint};return{regionElement:{id:u.id,region:n},command:new W(u,r)}}},this.configuration=t,this.layouts=e,this.product=a||void 0}async trigger(){if(!this.configuration.data.regions)throw new st(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 J(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 Si=async i=>{const t=`${At.getServicesApiUrl()}/shortener`;try{return(await(await nt(t,{method:"POST",body:JSON.stringify({longUrl:i}),headers:{"Content-Type":"application/json"}})).json()).shortUrl}catch(e){throw console.error(e),new $e("Failed to shorten URL, see console.")}};class vi{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,n=3e3,r=10){this.onSuccess=e,this.onFailure=a,this.predicate=t,this.attempts=0,this.pollingId=-1,this.interval=n,this.maxAttempts=r,this.poll()}}class Lo{async init(t,e,a){return a&&await this.reload(t,e,a),null}async reload(t,e,a){const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),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=n?.storage?.videoShortUrl,d=n?.storage?.videoUrl;e.updateStorage(t.stepName,{videoShortUrl:c,videoUrl:d})})}async regenerateQRCode(t,e,a,n){const r=async()=>{const h=(await Pe([e]))[0],g=h?.versions?.find(p=>p.name==="mpeg4")?.link;return{asset:h,link:g}},s=await new Promise((h,g)=>{new vi(async()=>!!(await r()).link,async()=>{const p=await r();if(!p.link||!p.link)throw new Qt(p.asset);h({rel:"mpeg4",href:p.link})},()=>{g("Poller timed out with 40 attempts @ 3 second interval")},3e3,40)});t.forEach(h=>a.getCommandDispatcher()(new xt(h.id)));const o=n.data.baseUrl.slice(0,4)==="http"?"":"https://",l=new URL(o+n.data.baseUrl);l.searchParams.append("video",btoa(JSON.stringify([s]))),l.pathname=l.pathname+(l.pathname.slice(-1)==="/"?"":"/");const c=l.toString();if(c.length>=2e3)throw new $e("Cannot create QR code, URL too long.");const d=await Si(c);if(!n.data||!n.data.regions)throw new st(n,"Missing regions.");const u=await this.regionElements(n),A=await this.command(d,u,a,n.stepName);return A&&(A.command&&a.getCommandDispatcher()(A.command),A.followup&&await A.followup()),await a.setSelectionsAndElements(n.stepName,[],u,async()=>{a.updateStorage(n.stepName,{videoShortUrl:d,videoUrl:s.href})}),d}async regionElements(t){const e=(a,n)=>({id:N(),region:a,regionIndex:n});return t.data.regions.map(e)}async command(t,e,a,n){const r=a.getLayouts(),o=`data:image/svg+xml;base64,${btoa(await Fn.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 J(d);if(u&&!d)throw new Error("Region not found");if(!u||!d)throw new Error("Neither a region or layout found!");return new W({stepRegion:d,stepRegionIndex:c.regionIndex,stepName:n,id:c.id,src:o,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 Ga=new Lo;class De{constructor(){this.frameSourceSvg=async(t,e)=>{if(!t)return Ea(e);const a=t.asset;if(!a)throw new wt(t);const n=a.fileLink;if(n)return tt(n,!0);throw new Qt(a)}}async init(t,e,a){const n=a?.serializableWorkflow.steps.find(l=>l.stepName===t.stepName);if(n?.storage&&Object.keys(n.storage).length!==0||n?.selectedVariants&&n.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 s=e.getWorkflowExperience().getBundle();if(s&&t.globalPropertyAspectConfigurations){const l=s.getGlobalPropertyStateManager(),c=t.globalPropertyAspectConfigurations[0],d=l.getAspectStorage(c.aspectName);d&&d.originalAssetKey&&(r=(await G.getLocalOrFromServer(d.originalAssetKey)).fileLink)}const o=await I.getOptionForStep(t);if(o){const l=await I.getDefaultVariant(o,t.overrideDefaultVariantId);if(l)return this.selectVariantCommand(t,l,[],e,void 0,r||t.data.placeholderImageUrl);if(o.variants&&o.variants?.length!==0)return null}return this.selectVariantCommand(t,void 0,[],e,void 0,r||t.data.placeholderImageUrl)}async reload(t,e,a){const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),l=Object.values(a.layouts).map(d=>d.elements).flat().filter(d=>d.stepName===t.stepName).map(d=>({id:d.id,region:d.stepRegion,regionIndex:d.stepRegionIndex})),c=await I.getOptionForStep(t);if(!c||(c.variants||[]).length===0){const d=t.data.regions.map(u=>Ea(u));e.updateStorage(t.stepName,{currentFrameSources:d})}if(n){const d=async()=>{const u=n.storage?.colors,A=n.storage?.framePatternSrc,h=n.storage?.frameOffsetsList;if(e.updateMetadata(t.stepName,{frameOffsetsList:h,framePatternSrc:A}),A){const g=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!g)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(A,g,!0,u),e.updateMetadata(t.stepName,{image:A}),e.updateStorage(t.stepName,{framePatternSrc:A}),this.validateColorCount(t,e)}if(h?.some(g=>g.zoom)){const g=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!g)throw new Error("Frame service unavailable, cannot load pattern!");g.updateOffsets(h)}e.setMandatoryFulfilled(t.stepName,!0)};if(n.selectedVariants&&n.selectedVariants.length>0){const u=n.selectedVariants[0].id;if(c&&u){const A=c.variants?.find(h=>h.id===u);A&&await e.setSelectionsAndElements(t.stepName,[A],l,async()=>{const h=await Promise.all(t.data.regions.map(g=>this.frameSourceSvg(A,g)));e.updateStorage(t.stepName,{currentFrameSources:h}),await d()})}}else await e.setSelectionsAndElements(t.stepName,[],l,d)}}async availableColors(t,e){return(await I.ensureFullOption(t.data.colorOption))?.variants?.map(n=>({fill:n.color,stroke:n.color,variant:n,pmsValue:n.name}))??[]}selectImage(t,e,a,n=!0){const r=De.patternSource(e),s=a.getStepStorage(t.stepName)?.framePatternSrc;if(s&&s===r)return Promise.resolve();a.setEditedStatus(t.stepName,!0);const o=e.fileLink||"";return o.endsWith(".pdf")||o.endsWith(".eps")||o.endsWith(".ai")?new Promise(l=>{a.addPoller(new vi(async()=>{const d=(await G.getFromServer(e.key||"")).versions?.find(A=>A.name==="svg");return d?(await nt(d.link)).status===200:!1},()=>{G.getLocalOrFromServer(e.key||"").then(c=>{this.loadPatternFromAsset(c,t,a,n).then(l)})},()=>{throw new $e("Failed to resolve transcoded PDF")}))}):this.loadPatternFromAsset(e,t,a,n)}async selectVariant(t,e,a,n,r){const s=await this.selectVariantCommand(t,e,a,n,r);s&&(s.command&&n.getCommandDispatcher()(s.command),s.followup&&await s.followup())}getCreateElementCommand(t,e,a,n,r){return new W({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},n)}async loadPatternFromString(t,e,a=!0,n=void 0,r){if(t.endsWith("svg")){const s=await La(t),o=s.width,l=s.height,c=await tt(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 it(c),u={src:t,width:o,height:l,aspect:o/l,svg:d.svg,colors:n??d.colors};ut.set(t,u),e.setPatternData(u,a)}else{const s=await Ue(t,!0),o=await ce(s),l={src:t,width:o.width,height:o.height,aspect:o.width/o.height,svg:void 0,colors:void 0};ut.set(t,l),e.setPatternData(l,a)}}async changeColors(t,e,a){const n=e.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!n||!n.getImageData()?.svg){console.warn("changeColors was called without an SVG being assigned to a frame step");return}const r=await this.calculateColorMetadata(n,t,a);e.updateMetadata(t.stepName,{colors:r.metadataColors}),e.updateStorage(t.stepName,{colors:r.storageColors}),n.setPatternData({...n.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 n=a.getImageData()?.colors??{},r=[];for(const s in n){const o=n[s];if(o.pmsValue){const l=o.pmsValue.trim().toLocaleLowerCase();r.includes(l)||r.push(l)}else if(o.browserValue){const l=Wn(o.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 n={...t.getImageData().colors??{}},r={};Object.entries(n).forEach(([l,c])=>{const d={browserValue:c.browserValue};r[l]=d});for(const[l,c]of a.entries())n[l]={browserValue:c.browserValue,pmsValue:c.pmsValue},r[l]=c;let s=Array.from(Object.values(n)).map(l=>l.browserValue);const o=await I.ensureFullOption(e.data.colorOption);return o&&o.variants?.forEach(l=>{s=s.map(c=>c.toLowerCase()===l.color?.toLowerCase()?l.name:c)}),{newColors:n,metadataColors:s,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,n,r,s){const o=n.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!o)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 he(l[g]),m=o.getImageData(),C=a.map(B=>new xt(B.id)),S=m?Va(m,p,c&&!t.data.forceImageCover?{scale:c}:void 0,t.data.forceImageCover):void 0,w=m?{id:N(),src:m.src,x:S?.x||0,y:S?.y||0,width:m.width,height:m.height,scaleX:S?.zoom||1,scaleY:S?.zoom||1,rotation:0}:void 0,F=N(),v=n.getLayouts().find(B=>B.panelId===h.panelId);if(!v)throw new J(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:C}})),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 n.setSelectionsAndElements(t.stepName,e?[e]:[],[...d.map(h=>h.regionEl)],async()=>{if(n.updateStorage(t.stepName,{currentFrameSources:l}),s){const h=n.getWorkflowExperience().getStepById(t.stepName)?.frameService;if(!h)throw new Error("Frame service unavailable, cannot load pattern!");await this.loadPatternFromString(s,h,!0)}})}}}static patternSource(t){const e=t.versions?.find(n=>n.name==="svg");if(e?.link)return e.link;const a=t.fileLink;if(a)return a;throw new Qt(t)}async loadPatternFromAsset(t,e,a,n){const r=De.patternSource(t),s=a.markUpdatePending(),o=a.getWorkflowExperience().getStepById(e.stepName)?.frameService;if(!o)throw a.markUpdateCompleted(s),new Error("Frame service unavailable, cannot load pattern!");try{await this.loadPatternFromString(r,o,n,void 0,e.data.colorPickerEnabled&&!!e.data.maxColors&&e.data.maxColors>0)}catch(c){throw a.markUpdateCompleted(s),c}const l=await this.calculateColorMetadata(o,e,new Map(Object.entries(o.getImageData()?.colors??{})));a.updateMetadata(e.stepName,{image:r,colors:l.metadataColors}),a.updateStorage(e.stepName,{framePatternSrc:r,colors:l.storageColors}),a.markUpdateCompleted(s),a.setMandatoryFulfilled(e.stepName,!0),a.setInformationResults(a.getInformationResults().filter(c=>c.stepID===e.stepName)),this.validateColorCount(e,a)}}const gt=new De;class zo{async getIllustrationBody(t){return new Promise(e=>{tt(t,!0).then(a=>{e(a)}).catch(a=>console.error(a))})}getCreateElementCommand(t,e,a,n,r){return new W({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},n)}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 n=await I.getOptionForStep(t);if(!n)throw new st(t,"No option configured for illustration step.");if(a)return await this.reload(t,e,a);{const r=await I.getDefaultVariant(n,t.overrideDefaultVariantId);if(r)return await this.selectVariantCommand(t,r,[],e)}return null}async reload(t,e,a){const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),o=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=await I.getOptionForStep(t);if(n?.selectedVariants){const c=n.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=o.map(A=>({id:A.id,region:A.stepRegion,regionIndex:A.stepRegionIndex}));await e.setSelectionsAndElements(t.stepName,[d],u,async()=>{e.updateMetadata(t.stepName,{colors:n.storage?.colors})})}}else throw new Error("Required illustration variant no longer available")}return null}async availableColors(t,e){const a=await I.ensureFullOption(t.data.colorOption);return a?a?a.variants?.map(n=>({fill:n.color,stroke:n.color,variant:n,pmsValue:n.name})):[]:[]}async changeColorsCommand(t,e,a,n,r){const s={};for(const[d,u]of r.entries())typeof u=="string"?s[d]={browserValue:u,spotColor:void 0,pmsValue:void 0}:s[d]={browserValue:u.browserValue,spotColor:u.spotColor,pmsValue:u.pmsValue};const o=$a(t,e,a,s),l=await re(o),c=[];for(const d of n){for(const[u,A]of r.entries())c.push(new Pa(d,u,A));c.push(new Oo(d,o,l))}return new U(c)}async changeColors(t,e,a,n){if(e.length===0)return;const r=V(e[0].id,a.getCommandContext().getAllLayouts().map(A=>A.layoutState)),s={...r.colors},o={};Object.entries(s).forEach(([A,h])=>{const g={browserValue:h.browserValue,pmsValue:h.pmsValue},p=h.spotColor;p&&(g.spotColor={profileName:p.profileName,namedColor:p.namedColor}),o[A]=g});for(const[A,h]of n.entries()){const g=typeof h=="string"?h:h.browserValue,p=typeof h=="string"?void 0:h.pmsValue;A===""?Object.keys(s).forEach(m=>{s[m]={browserValue:g,spotColor:s[m]?.spotColor,pmsValue:p},o[m]={browserValue:g}}):(s[A]={browserValue:g,spotColor:s[A]?.spotColor,pmsValue:p},o[A]={browserValue:g})}let l=Array.from(Object.values(s)).map(A=>A.browserValue);const c=await I.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(s).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:o}),a.getCommandDispatcher()(u)}async selectVariant(t,e,a,n,r){n(!0);try{const s=await this.selectVariantCommand(t,e,a,r);s&&(s.command&&r.getCommandDispatcher()(s.command),s.followup&&await s.followup())}finally{n(!1)}}async selectVariantCommand(t,e,a,n){if(!t.data||!t.data.regions)throw new st(t,"Missing regions.");const r=e.asset;if(!r)throw new wt(e);const s=r.fileLink;if(!s)throw new Qt(r);t.mandatory&&n.setMandatoryFulfilled(t.stepName,!1);const o=a.map(m=>new xt(m.id)),l=await it(await this.getIllustrationBody(s)),c=await re(l.svg),d=(m,C)=>{const S=n.getLayouts().find(F=>F.panelId===m.panelId);if(!S)throw new J(m);const w=N();return{regionElement:{id:w,region:m,regionIndex:C},command:this.getCreateElementCommand(w,m,C,S,{stepName:t.stepName,src:s,objectURL:c,svg:l})}},u=t.data.regions.map(d),A=u.map(m=>m.command),h=[...o,...A];let g=Array.from(Object.values(l.colors)).map(m=>m.browserValue);const p=await I.ensureFullOption(t.data.colorOption);return p&&p.variants?.forEach(m=>{g=g.map(C=>C.toLowerCase()===m.color?.toLowerCase()?m.name:C)}),n.updateMetadata(t.stepName,{colors:g}),{command:new U(h),followup:async()=>{const m=u.map(S=>S.regionElement);await n.setSelectionsAndElements(t.stepName,[e],m);const C=r.assetConfiguration?.defaultColorVariants||[];if(C.length!==0){const S={};(r.assetConfiguration?.channelNumbers||[]).forEach(F=>{const b=C.find(v=>v.channelNumber===F.number);b&&(S[`${F.id.replace(/\W/g,"")}`]={browserValue:b?.variant?.color||""})}),await this.changeColors(t,m,n,new Map(Object.entries(S)))}if(t.data.colorPickerEnabled){const S=await this.availableColors(t,n)||[],w=Object.keys(l.colors),F=S.length===1&&w.length===1;if(F){const b=S[0],v=w[0];await this.changeColors(t,m,n,new Map([[v,b.variant.color]]))}!F&&C.length===0&&await this.changeColors(t,m,n,new Map)}}}}}const Kt=new zo;class qo{async init(t,e,a){const n=await I.getOptionForStep(t);if(!n)throw new ae(t);if(a)await this.reload(t,e,a);else{const r=await I.getDefaultVariant(n,t.overrideDefaultVariantId);if(r)return await this.selectVariantLambda(t,r,e,()=>{})}return null}async reload(t,e,a){const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),o=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=await I.getOptionForStep(t);if(!l)throw new ae(t);if(n?.selectedVariants){const c=n.selectedVariants[0].id;if(c){const d=l.variants?.find(u=>u.id===c);if(d){const u=d.material,A=o.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,n){const r=await this.selectVariantLambda(t,e,a,n);r&&(r.command&&a.getCommandDispatcher()(r.command),r.followup&&await r.followup())}async selectVariantLambda(t,e,a,n){const r=a.getModelContainer();n(!0);const s=e.material;if(!s)throw n(!1),new wt(e);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[e],[],async()=>{try{r&&t.data.targetMaterials.forEach(o=>{t.option&&r.applyMaterialVariant(o,t.option.id||"",s)})}finally{n(!1)}})}}}}const ja=new qo;class Go{async init(t,e,a){const n=await I.getOptionForStep(t);if(!n)throw new ae(t);if(a)await this.reload(t,e,a);else{const r=await I.getDefaultVariant(n,t.overrideDefaultVariantId);if(r)return await this.selectVariantLambda(t,r,e,()=>{})}return null}async reload(t,e,a){const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),o=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=await I.getOptionForStep(t);if(n?.selectedVariants){const c=n.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=o.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,n){const r=await this.selectVariantLambda(t,e,a,n);r&&(r.command&&a.getCommandDispatcher()(r.command),r.followup&&await r.followup())}async selectVariantLambda(t,e,a,n){n(!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 s=a.getModelContainer();s&&await s.applyModelVariant(t.stepName,{model:r,contextService:a.getLayoutPreviewService()},t.data.replaceProductModel||!1)}finally{n(!1)}})}}}}const Wa=new Go;class jo{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 n=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:n?.storage?.text}),e.setMandatoryFulfilled(t.stepName,n?.storage?.text!=="")})}async changeText(t,e,a,n){const r=await this.changeTextCommand(t,e,a,n);r&&(r.command&&a.getCommandDispatcher()(r.command),r.followup&&await r.followup())}async changeTextCommand(t,e,a,n){const r=a.getRegionElements(t.stepName),s=a.getStepSpecificServices(t.stepName)?.module;if(!s)return console.error("Missing module."),null;const o=a.getWorkflowExperience().getProfanityList(),l=this.validateInput(t,e,o,n);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(S=>S.panelId===u.panelId);if(!m)return console.error(`Can not find layout for region: ${u.panelId}`),null;const C=[];return h&&C.push(new xt(g)),C.push(new W({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(C)}};if(r.length>0){const u=r.map(A=>{if(!A.region)return null;const h=s.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(s.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,n){if(t.data&&t.data.maxLength){const s=t.data.maxLength;if(e.length>s)return n("Too many characters."),{input:e,helperData:{},errorData:{hitCharacterLimit:!0}}}if(!/^$|^[a-zA-Z0-9 ]+$/.test(e))return n("Unsupported characters."),{input:e,helperData:{},errorData:{unsupportedCharacters:!0}};const r=pa.split(e.toLowerCase());for(const s of r)for(const o in a){const l=a[o].toLowerCase().replace(/\s/g,"");if(s===l)return n("Blocked profanity."),{input:e,helperData:{},errorData:{blockedProfanity:!0}}}return n(""),{input:e,helperData:{}}}}const Ha=new jo;class Wo{async init(t,e,a){const n=await I.getOptionForStep(t);if(!n)throw new st(t,"Missing option for picture step");if(a)await this.reload(t,e,a);else{const r=await I.getDefaultVariant(n,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 n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),o=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=await I.getOptionForStep(t);if(n?.selectedVariants){const c=n.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=o.map(A=>({id:A.id,region:A.stepRegion,regionIndex:A.stepRegionIndex}));await e.setSelectionsAndElements(t.stepName,[d],u)}}}}async selectVariant(t,e,a,n){const r=await this.selectVariantCommand(t,e,a,n);r&&(r.command&&a.getCommandDispatcher()(r.command),r.followup&&await r.followup())}async selectVariantCommand(t,e,a,n){const r=e.asset;if(!r)throw new wt(e);const s=r?.fileLink;if(!s)return console.error("No URL for picture!"),null;n(!0),t.mandatory&&a.setMandatoryFulfilled(t.stepName,!1);const l=a.getRegionElements(t.stepName).map(u=>new xt(u.id)),c=(u,A)=>{const g=a.getLayouts().find(m=>m.panelId===u.panelId);if(!g)throw new J(u);const p=N();return{regionElement:{id:p,region:u,regionIndex:A},command:new W({stepName:t.stepName,stepRegion:u,stepRegionIndex:A,id:p,src:s,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()=>{n(!1)})}}}}const Ya=new Wo;class Ho{async init(t,e,a){const n=await I.getOptionForStep(t);if(!n)throw new st(t,"Missing option for question step");if(a)await this.reload(t,e,a);else{const r=await I.getDefaultVariant(n,t.overrideDefaultVariantId);if(r)return this.selectVariantLambda(t,r.id||"",e)}return null}async reload(t,e,a){const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),r=await I.getOptionForStep(t);if(n?.selectedVariants){const s=n.selectedVariants[0].id;if(r&&s){const o=r.variants?.find(l=>l.id===s);o&&await e.setSelectionsAndElements(t.stepName,[o],[])}}}async selectVariant(t,e,a){const n=await this.selectVariantLambda(t,e,a);n&&(n.command&&a.getCommandDispatcher()(n.command),n.followup&&await n.followup())}async selectVariantLambda(t,e,a){const n=await I.getOptionForStep(t);if(!n)throw new st(t,"Missing option for question step");const r=n.variants;if(!r)throw new st(t,"Option for question step is missing variants");const s=r.length>1?r.find(o=>o.id===e):r[0];if(!s)throw new Error(`Failed to find selected variant ${e} in option ${n.id} of step ${t.stepName} (${t.stepTitle})`);return{command:void 0,followup:async()=>{await a.setSelectionsAndElements(t.stepName,[s],[])}}}}const Ja=new Ho;class Yo{constructor(){this.shapeFillId="spiff-fill-shape"}async availableColours(t){const e=await I.getOptionForStep(t);return e?e.variants?.map(a=>({fill:a.color,stroke:a.color,variant:a}))||[]:[]}setCustomColor(t,e,a){const n=a.getLayouts(),s=(a.getRegionElements(e.stepName)||[]).map(o=>{const l=o.region;if(!n.find(d=>d.panelId===l?.panelId))throw new J(l);return new Pa(o.id,this.shapeFillId,t)}).filter(o=>!!o);a.getCommandDispatcher()(new U(s)),a.updateStorage(e.stepName,{colour:t})}async init(t,e,a){const n=await I.getOptionForStep(t);if(!n)throw new ae(t);if(a)await this.reload(t,e,a);else{const r=await I.getDefaultVariant(n,t.overrideDefaultVariantId);return r?this.selectVariantCommand(t,{fill:r.color,stroke:r.color,variant:r},[],e):null}return null}async selectVariant(t,e,a,n){const r=await this.selectVariantCommand(t,e,a,n);r&&(r.command&&n.getCommandDispatcher()(r.command),r.followup&&await r.followup())}async reload(t,e,a){const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),o=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=await I.getOptionForStep(t);if(n?.selectedVariants){const c=n.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=o.map(A=>({id:A.id,region:A.stepRegion,regionIndex:A.stepRegionIndex}));await e.setSelectionsAndElements(t.stepName,[d],u,async()=>{e.updateStorage(t.stepName,{colour:n?.storage?.colour||""})})}}}}async selectVariantCommand(t,e,a,n){const r=n.getLayouts(),s=n.getStepStorage(t.stepName)?.colour,o=()=>{if(e.variant?.color==="#custom")return s||"#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 J(u);const h=o();return new Pa(d.id,this.shapeFillId,h)},c=a.map(l).filter(d=>!!d);return{command:new U(c),followup:async()=>{await n.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],a),n.updateStorage(t.stepName,{colour:o()})}}}else{const l=(A,h)=>{const g=r.find(w=>w.panelId===A.panelId);if(!g)throw new J(A);const p=o(),m=`
|
|
1403
|
-
<svg
|
|
1404
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
1405
|
-
xmlnsXlink="http://www.w3.org/1999/xlink"
|
|
1406
|
-
xmlSpace="preserve"
|
|
1407
|
-
preserveAspectRatio="none"
|
|
1408
|
-
version="1.1"
|
|
1409
|
-
width="1"
|
|
1410
|
-
height="1"
|
|
1411
|
-
viewBox="0 0 1 1"
|
|
1412
|
-
>
|
|
1413
|
-
<rect
|
|
1414
|
-
x="0"
|
|
1415
|
-
y="0"
|
|
1416
|
-
width="1"
|
|
1417
|
-
height="1"
|
|
1418
|
-
class="${this.shapeFillId}"
|
|
1419
|
-
fill="${p}"
|
|
1420
|
-
/>
|
|
1421
|
-
</svg>
|
|
1422
|
-
`,C={};C[this.shapeFillId]={browserValue:p};const S=N();return{id:S,region:A,command:new W({stepRegion:A,stepRegionIndex:h,stepName:t.stepName,colors:C,id:S,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 n.setSelectionsAndElements(t.stepName,e.variant?[e.variant]:[],u,async()=>{n.updateStorage(t.stepName,{colour:o()})})}}}}}const kt=new Yo;class Jo{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 Ei=new Jo,ua=(i,t,e,a,n)=>{if(t.some(d=>d==null))throw new Error(`Failed to autosize lines: ${t.join(", ")}`);let r=t.map(d=>d.split(`
|
|
1423
|
-
`)).flat(),s=r.length,o=r.map(d=>ft(d,a,n));const l=n.getApproximateHeight()*a;let c=!0;for(;c;){if(l+(s-1)*e>i.height)return[null,null];const u=Math.max(...o);if(u<=i.width)return[r,u];const A=o.reduce((m,C,S,w)=>C>w[m]?S: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)],C=m.map(w=>ft(w,a,n));C[0]<=i.width&&(r=[...r.slice(0,A),...m,...r.slice(A+1)],o=[...o.slice(0,A),...C,...o.slice(A+1)],s+=1,g=!0)}g||(c=!1)}return[null,null]},Xt=(i,t,e,a,n)=>{let r,s;const o=vt(t.assetUrl),l=o.getFont();if(n.size){const A=i/l.unitsPerEm;return[r,s]=ua(e,a,i,A,o),[n.size,r,s]}const c=6;let d=c-sa;if(a.length>0){let A=a,h=0;for(;(!n.maxSize||d<=n.maxSize)&&A;)d+=sa,h=d/l.unitsPerEm,[A,s]=ua(e,a,d,h,o)}d>c&&(d-=sa),n.minSize&&d<n.minSize&&(d=n.minSize);const u=d/l.unitsPerEm;return[r,s]=ua(e,a,d,u,o),[d,r,s]},Aa=30;class ke extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=ke.name}}const Ko=["‘","’","“","”",`
|
|
1424
|
-
`];class Me extends Error{constructor(t){super(t),Object.setPrototypeOf(this,new.target.prototype),this.name=Me.name}}class Xo{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 n=[],r=e?vt(e.assetUrl):void 0;if(r){const s=a.split("").filter(l=>!Ko.includes(l)).join(""),o=s.split("").map(l=>r.getFont().charToGlyph(l));for(let l=0;l<o.length;l++)o[l].name===".notdef"&&n.push(String.fromCharCode(s.charCodeAt(l)))}for(let s=0;s<n.length;s++)a=a.replaceAll(n[s],"");return a},this.textAlign=t=>t.vertical?"center":t.textAlign||"center",this.getErrorsForText=(t,e,a,n)=>{let r;a.data&&a.data.maxLength&&e.length>a.data.maxLength&&(r||(r={}),r.hitCharacterLimit=!0);const s=n.getWorkflowExperience().getProfanityList(),o=pa.split(t.toLowerCase());for(const c of o)for(const d in s){const u=s[d].toLowerCase().replace(/\s/g,"");if(c===u){r||(r={}),r.blockedProfanity=!0;break}}return!a.data.allowNewlines&&(t.includes(`
|
|
1425
|
-
`)||t.includes("\r"))&&(r||(r={}),r.illegalMultipleLines=!0),r}}async init(t,e,a){const n=await I.getOptionForStep(t);if(!n)return null;if(a)await this.reload(t,e,a);else{const r=await this.getDefaultImageFillVariant(t.data),s=r?.asset?.fileLink,o=s?await ba(s):void 0,l=o?{src:o.src,height:o.height,width:o.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===z.Text&&t.globalPropertyAspectConfigurations?.map(C=>C.aspectName).includes(m.name));if(p){const C=A.getGlobalPropertyStateManager().getAspect(p.name);C&&(u=C)}}e.updateStorage(t.stepName,{text:u,inputText:t.data.defaultText||"",color:(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 I.getDefaultVariant(n,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 I.ensureFullOption(t.data.colorOption);if(a){const n=a.variants?.map(r=>({fill:r.color,stroke:r.color,variant:r}))||[];return this.cachedColors.set(t.stepName,n),n}return[]}changeAlignment(t,e,a,n){if(!t.data||!t.data.regions)return;const r=n.getCommandDispatcher();for(const s of a){const o=new wi(s.id,e);r(o)}}async changeFillColor(t,e,a,n){if(!t.data||!t.data.regions)return;const r=n.getCommandDispatcher();e.variant?n.updateMetadata(t.stepName,{color:e.variant.name}):n.updateMetadata(t.stepName,{color:e.fill});const s=await I.ensureFullOption(t.data.colorOption),o=s?this.createTextFillSpotColor(s,e.variant):void 0;s?n.updateStorage(t.stepName,{color:e.fill,colorProfileAssetKey:s.colorProfile?.key}):n.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 fi(l.id,e.fill,o);r(c)}}async availableFillImages(t){const e=await I.ensureFullOption(t.data.imageFillOption);if(e){const a=e.variants?.map(n=>n.asset?.fileLink)?.filter(n=>!!n)||[];return Promise.all(a.map(async n=>{const r=await ba(n);return{src:n,width:r.width,height:r.height,scale:t.data.imageFillScale||1}}))}return Promise.resolve([])}async changeFillImage(t,e,a,n){if(!t.data||!t.data.regions)return;const r=n.getCommandDispatcher(),o=(await I.getOptionForStep(t))?.variants?.find(l=>l.asset?.fileLink===e.src);n.updateMetadata(t.stepName,{fillImage:o?.name}),n.updateStorage(t.stepName,{fillImage:e});for(const l of a){const c=new ca(l.id,e);r(c)}}async availableStrokeColors(t){const e=this.cachedStrokeColors.get(t.stepName);if(e)return e;const a=await I.ensureFullOption(t.data.strokeOption);if(a){const n=a.variants?.map(r=>({fill:r.color,stroke:r.color,variant:r}))||[];return this.cachedStrokeColors.set(t.stepName,n),n}return[]}async changeStrokeColor(t,e,a,n){if(!t.data||!t.data.regions)return;const r=n.getCommandDispatcher();e?.variant?n.updateMetadata(t.stepName,{strokeColor:e.variant.name}):n.updateMetadata(t.stepName,{strokeColor:e?.fill});const s=e?{browserValue:e.fill,pmsValue:e.pmsValue}:void 0;n.updateStorage(t.stepName,{strokeColor:s});for(const o of a){const l=new da(o.id,s,t.data?.strokeThickness);r(l)}}getProcessedInput(t,e,a){const n=a?t:this.injectReplaceableText(t,e);return Fe(n,{vertical:e.vertical,uppercase:e.uppercase})}updateInputText(t,e,a,n){const r=n.getStepStorage(a.stepName),s=Mt(t,n),o=this.getProcessedInput(s,a.data,r?.customiseAllText??!1),l={command:void 0,helperData:{},errorData:this.getErrorsForText(t,o,a,n)};if(l.errorData)return l;l.helperData.charactersRemaining=a.data.maxLength-o.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]=Xt(A.fontSize,A.fontData,{left:A.x,top:A.y,width:A.width,height:A.height,rotation:A.rotation},[o],{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?o:(g||[]).join(`
|
|
1426
|
-
`);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):(n.updateStorage(a.stepName,{text:t}),n.updateMetadata(a.stepName,{text:o}),(r?.defaultCleared||!a.data.deleteDefaultOnFocus)&&o.trim()!==""&&n.setMandatoryFulfilled(a.stepName,!0),l.command=new U(c),l)}async selectVariant(t,e,a,n,r){const s=await this.selectVariantCommand(t,e,a.getStepStorage(t.stepName)||{},a.getRegionElements(t.stepName),a,n,r);s&&(s.command&&a.getCommandDispatcher()(s.command),s.followup&&await s.followup())}createTextFillSpotColor(t,e){const a=t.colorProfile;if(a){const n=(a.name||"").replace(/\s/g,"-"),r=n.lastIndexOf("/"),o=n.slice(r+1).slice(0,-4);if(!e.namedColor)throw new Error("variant named color not set!");return{profileName:o,namedColor:e.namedColor}}}async reload(t,e,a){const n=e.getSerializedStep(t.stepName,a.serializableWorkflow.steps),o=Object.values(a.layouts).map(c=>c.elements).flat().filter(c=>c.stepName===t.stepName),l=await I.getOptionForStep(t);if(n?.selectedVariants){const c=n.selectedVariants[0].id;if(l&&c){const d=l.variants?.find(u=>u.id===c);if(d){const u=await this.fontDataFromVariant(d),A=o.map(m=>({id:m.id,region:m.stepRegion,regionIndex:m.stepRegionIndex})),h=n.storage?.color;let g=n.storage?.text;const p=e.getWorkflowExperience().getBundle();if(p&&t.globalPropertyAspectConfigurations){const C=p.getGlobalPropertyConfiguration()?.aspects?.find(S=>S.type===z.Text&&t.globalPropertyAspectConfigurations?.map(w=>w.aspectName).includes(S.name));if(C){const w=p.getGlobalPropertyStateManager().getAspect(C.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=o.map(S=>new Ba(S.id,u)),C=new U(m);e.getCommandDispatcher()(C)}),o.length===0&&l){const m=await I.getDefaultVariant(l,t.overrideDefaultVariantId);if(m){const C=await this.selectVariantCommand(t,m,{text:g},[],e,()=>{},()=>{});C?.command&&e.getCommandDispatcher()(C.command)}}else{const{command:m}=H.updateInputText(g||"",o,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===z.Text&&t.globalPropertyAspectConfigurations?.map(h=>h.aspectName).includes(A.name));if(u){const h=c.getGlobalPropertyStateManager().getAspect(u.name);if(h)if(o.length===0&&l){const g=await I.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}=H.updateInputText(h,o,t,e);g&&e.getCommandDispatcher()(g)}}}}}async getDefaultColorVariant(t){const e=t.colorOption;if(e)return I.getDefaultVariant(e)}async getDefaultColor(t){const e=t.colorOption;return e?(await I.getDefaultVariant(e))?.color:void 0}async getDefaultImageFillVariant(t){const e=t.imageFillOption;if(e)return I.getDefaultVariant(e)}async getDefaultStrokeColorVariant(t){const e=t.strokeOption;if(e)return I.getDefaultVariant(e)}async fontDataFromVariant(t){const e=t.asset;if(!e)throw new wt(t);const a=e.fileLink;if(!a)throw new Qt(e);const n=await Pt(a);return{assetUrl:a,name:n.names.fullName.en}}async selectVariantCommand(t,e,a,n,r,s,o,l,c){const d=r.markUpdatePending(),u=await this.fontDataFromVariant(e);let A=!0;const h=g=>{s(g),g&&(A=!1)};if(n.length>0){const g=n.map(C=>new Ba(C.id,u));if(l){const C=n.map(S=>new ca(S.id,l));g.push(...C)}if(c){const C=n.map(S=>new da(S.id,c,t.data.strokeThickness));g.push(...C)}const p=await this.changeInputTextWithRegion(t,t.data.size||Aa,u,a.text||"",a,r,a?.customiseAllText??!1,h,o);p&&g.push(p);const m=new U(g);return A?{command:m,followup:async()=>{r.markUpdateCompleted(d),await r.setSelectionsAndElements(t.stepName,[e],n)}}:null}else{const g=await this.createTextboxRegions(t.stepName,e,t.data,u,a,r),p=await this.changeInputTextWithRegion(t,t.data.size||Aa,u,g[0]?.newElement.input||a.text||t.data.defaultText||"",a,r,a?.customiseAllText??!1,h,o),m=g.flatMap(S=>S.commands);if(l){const S=g.map(w=>new ca(w.regionElement.id,l));m.push(...S)}if(c){const S=g.map(w=>new da(w.newElement.id,c,t.data.strokeThickness));m.push(...S)}p&&m.push(p);const C=new U(m);return A?{command:C,followup:async()=>{r.markUpdateCompleted(d)}}:null}}injectReplaceableText(t,e){return e.replaceableText?e.replaceableText.replace("{{}}",t):t}async createTextboxRegions(t,e,a,n,r,s){if(!a||!a.regions)throw new Error("Step data not supplied");const o=r.text||a.defaultText||"",l=Mt(o,s),c=this.getProcessedInput(l,a,!1),d=async(A,h)=>{const p=s.getLayouts().find(C=>C.panelId===A.panelId),m=N();try{if(!p)throw new Me("Failed to find layout for region: "+A.panelId);const C=await I.ensureFullOption(a.colorOption);let S;if(C&&C.variants){const k=await I.getDefaultVariant(C);k&&(S=this.createTextFillSpotColor(C,k),s.updateStorage(t,{colorProfileAssetKey:C.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||Aa,fontData:n,id:m,layer:A.layer,layerIndex:A.layerIndex,rotation:A.rotation,text:c,input:o,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:S},v=[],B=new Map,M=new Map;if(!b.fontData)throw new O("Failed to resolve font data for text.");const[R,x]=Xt(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});B.set(b.id,R),M.set(b.id,x);const T=a.curved||a.vertical?c:(x||[]).join(`
|
|
1427
|
-
`);v.push(this.generateTextChangeCommandsForRegion(R,a,b.id,T));const L=new W(b,p);return{regionElement:{id:m,region:A,regionIndex:h},commands:[L,...v],newElement:b,fontData:n}}catch(C){throw console.log(C),new ke("Error adding font to region")}},u=await Promise.all(a.regions.map(d)).catch(A=>{throw A instanceof ke?(Ei.setLatestToast("Failed to load font.",ge.Error),A):A instanceof Me?A:new Error(A)});return await s.setSelectionsAndElements(t,[e],u.map(A=>A.regionElement),async()=>{s.updateMetadata(t,{text:o}),s.updateStorage(t,{text:o})}),u}generateTextChangeCommandsForRegion(t,e,a,n){const r=[],s=new yi(a,n);if(r.push(s),!e.size){const l=new Ci(a,t);r.push(l)}return new U(r)}async changeInputTextWithRegion(t,e,a,n,r,s,o,l,c,d){const u=(n||"").replace(/^(?![\u000A\u000D])[\u0000-\u001F\u007F-\u009F]/g,""),A=Mt(u,s),h=this.getProcessedInput(A,t.data,o),g=s.getRegionElements(t.stepName),p=new Map,m=new Map;for(const b of g)if(b.region){const[v,B]=Xt(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,B)}const S=(()=>{if(t.data&&t.data.maxLength&&h.length>t.data.maxLength)return d&&d(!0),{info:"0"};const b=s.getWorkflowExperience().getProfanityList(),v=pa.split(h.toLowerCase());for(const B of v)for(const M in b){const R=b[M].toLowerCase().replace(/\s/g,"");if(B===R){const T="Blocked profanity.";return l(T),{error:T}}}if(!t.data.vertical&&!t.data.allowNewlines&&(h.includes(`
|
|
1428
|
-
`)||h.includes("\r"))){const B="Text may not span multiple lines.";return l(B),{error:B}}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(S.error){c(S.error);return}if(c(`${S.info} characters remaining`||""),d)return;s.updateStorage(t.stepName,{text:u}),s.updateMetadata(t.stepName,{text:this.injectReplaceableText(u,t.data)}),(r.defaultCleared||!t.data.deleteDefaultOnFocus)&&u.trim()!==""&&s.setMandatoryFulfilled(t.stepName,!0);const w=[];for(const b of g){const v=t.data.curved?h:(m.get(b.id)||[]).join(`
|
|
1429
|
-
`);w.push(this.generateTextChangeCommandsForRegion(p.get(b.id)||1,t.data,b.id,v))}return new U(w)}}const H=new Xo;class Zo{}const _o="data:application/octet-stream;base64,AAEAAAAPAIAAAwBwRkZUTYdHeHoAAElcAAAAHEdERUYAJwBUAAAe2AAAAB5HUE9TkNtcVAAAHygAACoyR1NVQrj/uP4AAB74AAAAME9TLzJoWmUcAAABeAAAAGBjbWFwtkIacAAAAxAAAAJWZ2FzcP//AAMAAB7QAAAACGdseWY27KOUAAAGCAAAFcRoZWFkFPal0gAAAPwAAAA2aGhlYQU0Ar0AAAE0AAAAJGhtdHiADw6qAAAB2AAAAThsb2Nh5CzfJAAABWgAAACebWF4cACVAEwAAAFYAAAAIG5hbWXeIPPyAAAbzAAAAiJwb3N0ABeZTwAAHfAAAADdAAEAAAABAAAZ9vREXw889QALA+gAAAAA2ZexNAAAAADZl7E0ADL/yQJ2ArwAAAAIAAIAAAAAAAAAAQAAArz/wwAAAqsAAAAAAnYAAQAAAAAAAAAAAAAAAAAAAE4AAQAAAE4ASQAFAAAAAAACAAAAAQABAAAAQAAAAAAAAAAEAbsBkAAFAAACigK7AAAAjAKKArsAAAHfADEBAgAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAABYWFhYAEAACgCtArz/wwAAAqkANgAAAAMAAAAAAmQCZAAAACAAAgIPADIAAAAAAU0AAAAAAAAAAAAAALQAAAD3ADUCfQA1AcoANQKrADUCDQA1AX4ANQHYADUBNQA1AcgANQHUADUB8AA1AeEANQHpADUBqQA1AdAANQHpADUCqgA1Af8ANQGaADUB3wA1AbgANQFtADUBbQA1AekANQG8ADUA1QA1AYcANQHBADUBUAA1AhsANQHBADUB4QA1AZYANQH0ADUBxQA1AcUAMgGJADUBwwA1Ad0ANQJ1ADUB9wA1AcoANQF6ADUB3AA1Af8ANQGaADUB3wA1AbgANQFtADUBbQA1AekANQG8ADUA1QA1AYcANQHBADUBUAA1AhsANQHBADUB4QA1AZYANQH0ADUBxQA1AcUAMgGJADUBwwA1Ad0ANQJ1ADUB9wA1AcoANQF6ADUAtAAAAAAAAAAAAAMAAAADAAAAHAABAAAAAAFQAAMAAQAAABwABAE0AAAALgAgAAQADgAAAAoADQAhACYAKgA5AFoAXgB6AKAArQDFAM8A1gDdAOUA7wD2AP0A/wF4//8AAAAAAAoADQAgACMAKgAwAEAAXgBhAKAArQDAAMcA0QDYAOAA5wDxAPgA/wF4//8AAf/5//f/5f/k/+H/3P/W/9P/0f+s/6AAAAAAAAAAAAAAAAAAAAAA/0v+twABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAIAAwADoARABOAF4AaAAAAAAAAAAXABcAFwAXABcAFwAZABsAGwAbABsAHwAfAB8AHwAkACUAJQAlACUAJQAlACsAKwArACsALwAyADIAMgAyADIAMgA0ADYANgA2ADYAOgA6ADoAOgA/AEAAQABAAEAAQABAAEYARgBGAEYASgAAAQYAAAEAAAAAAAAAAQIDAAAEAAAAAAAAAAAAAAAAAAAAAQAABQYABwgJCgAAAAsAAAAAAAwNDg8QERITFBUAAAAAAAAWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAAAAAxAAAyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKSwAAAAAAFxcZGyQlKzIyMjIyMjQ2NjY2Ojo6Oj9AQEBAQEZGRkYAAAAAAAAAAAAAAAAAAAAlAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABMFxclAAAAAAAAAAAAAEovAAAAAAAAAAAAAAAXGxcbGx8fHx8lJQAlKysrAAAAAAAAAAAAAAAAAAAAACgAKAAoACgAKAAoADwAbgC0AQgBbgGQAcYB1AIGAkYCYAKSAtAC4gMoA2ADyAPgBBoEUAR4BI4EogTWBOoE9gUiBToFSAViBXoFqgXWBjAGWgaaBqwG2AbqBwYHIAc2B0wHXgd2B7AH5ggOCCQIOAhsCIAIjAi4CNAI3gj4CRAJQAlsCcYJ8AowCkIKbgqACpwKtgrMCuIK4griAAAABQAyAAAB3QK8AAMABgAJAAwADwAAEyERIRsCCwEREwMhAxMRMgGr/lUcubrGtMG5AXKttQK8/UQCqP7LATX+tgEs/acBGP7MAUn+0QJdAAACADUABQDCAmoAAwAHAAATESMRExUjNcGLi4sCaf5mAZr+KY2NAAAAAgA1AAACSAJkABsAHwAAJQcjNyMHIzcjNzM3IzczNzMHMzczBzMHIwczByc3IwcBthdrFkoXbBdeDl8KYA9fFWwVShVtFWoPagpqDscJSgqqqqqqqmxHbJqamppsR2xsR0cAAAEANf/JAZUCqgAwAAABFR4BByM0LgEjIgYVFBYXHgMVFA4BBxUjNS4BNTMUFjMyNjU0LgInJjU0Njc1ARwwPAF3CBQOExcsPCEwFgkZNyhnPkGDGRQTGBElHBprRzQCqkQNV0INGBIdFB8hGw4tMCkUJkU7EENDCmk8GiUgFBIeGA4LKXpKVxBEAAAABQA1/+8CdgJrAAwAGAAcACkAOAAAEzQ2MzIeARUUBiMiJjcVFBYzMjY1NCYiBiUDIxMDNTQ+ATMyFhQGIyImNxUUHgEzMjY1NC4BIyIGNk02JD0jTTc2TVEeFBUeHiodAWjhVeEtIz0kN01ONjZOUQ4YDRUeDhcOFR4B1j5XKEUoPldXPgEXISEYGCEhcf2dAmP+JgEoRChXfFdWPwEPGhAiGBAbDyIAAwA1AAAB2AJnACQAOQBIAAAlFwcnDgEjIiY1ND4CNyY1NDYzMhYVFA4IBxc3MyciBhUUHgQXPgU1NCYjAxY+ATcnDgUVFBYBmT8qQgdUMk1cDyETFDVTNzdPAwUJBw0HDgUMATUabPULGQQFCgUKAQENBAsEBBYNAQ8bEQRRAQ4ECwUEIbFNZEERMGJKHzMqEhFDQD9ZVjsLFxITDRAJDgULAUFBtRgSBw4LDwcOAQEQBg8LDwcPGf58AQsOB2IBDQUOCg8IGyQAAAAAAQA1ATwBSQJtABEAABMHNxcHFwcnFyM3Byc3JzcXJ+YXVSVnZyhTGE0WUShnZyVWGAJselJLJSVOVXp7Vk4nI0tReQACADUAAAGjAmQAFwAmAAA3NTQ+AzMyHgMdARQOAiMiLgI3FRQeATMyPQE0IyIOAjYZJzIvFxQtMicaIjc9Hh09OiR8CBsXOTkSGAsF4KQxTzEhDQwhMFAypDtaMhkYMlvjrBUkH1isVxEeGgABADUAAAEAAmEABQAAMxEjNTMRhE7KAd6D/Z8AAQA1AAMBkwJmACEAADc1Njc+AzU0JiMiByM+Ajc+AzMyFhUUBgcGBzMVOi5WFxkaCx0XMQJ2AQINDQ4qLCIQTlkjLkAargN3L1kYHCcoFyIhXhsgNxccJxIHbU04WDRHHYEAAAEANQAAAZ8CZAAtAAATNjc2MzIWFRQOAwcWFRQGIyImJyYnMxYXMjY1NC4DKwE1MzI1NCYjIgdDAjktP0RVCw0VCwlca0otVRYVBn4KLhobCg8UDQcsFT0RESQCAaxgMCdfQRcoGBcIBiVpTWwrKCRENgElHRAYCwcCbzsVHjMAAgA1//8BuwJjAAoADQAAITUjNRMzETMVIxUnMzUBDdfadDY20WJrcgGF/oN6a+XAAAAAAAEANf//AawCYwAgAAABFSMHNjMyHgIVFA4CIyIuASczFjMyNjU0JiMiBycTAX+uCxsnKUIlExYrSy8zUS8HfRYjGygkHy4SZSoCYoBSEic+QyEkSkIqL00xJi8hHy80HwFTAAACADUAAAG0AmIAFgAoAAABMhYVFAYjIiYnJjU0PwEzBw4BBzAyNgMyPgE1NC4EIyIGFRQeAQEaO19vTy9QGCksepBYAw4CCA0kEx8TBAgLDxQLHSUVHQGvbF9kgConOV1LVdqUBRYFAv7XFCYXChMSEAwHLyEaJxIAAAAAAQA1//8BdAJjAAYAABMhFQMjEyM2AT6sibS9AmJ3/hUB3wAAAwA1AAABmwJkABkAJAAuAAATNTQ2MhYVFA4BBxYVFA4BIi4BNTQ3LgMXFRQWMjY1NCYiBjcVFBYyNjQmIgZCVqBWFBAMPC1RaFEtPAkLEgpwHjAdHTAeCRskGxskGwG/AUJhYkIeMxINJGU5WjMzWjllJAkNHSbhARgqKhkaKirTARcfHy8fHwAAAAACADUAAAG0AmQAFgAkAAA/AT4BNyYOASMiJjU0NjMyFhcWFRQPARM1NC4BIyIGFRQWMzI2fVgDDQQBCA0EO15uTy9QGCoteSsVHhAcKCUfHiUBlAQWBgEBAWxfZIAqJzldTFXaAYkBGiYSLiIgMi4AAgA1/8wCdQJtADgASAAAAQcGBwYzMjY1NCYjIgYHBh4DFxY3FQYnLgQ3ND4CMzIWFRQGIyInBicuATU0NjMyFhc3BzY1NC4CJyYGHQEUFjc2AfscBAIBFhYmbFVhdgcBBhwtVThNX01cQGlGMBUBLExzQniZWjs3FB07NT1PQBwoBwgqCQIHEg0gKCAUIQG2ux0NGVo8Wm2Laxg2RTcpBAUfWxsCASlBVlsvQHpfOqF8XZBBNwEBWkRIcyAWKMkaIgcQGBEBAz8rAyYjAQIAAAIANQAAAcgCZQAHAAoAADcHIxMzEyMvAge8GG6bYJdvGhknK3JyAmT9nHJz1tYAAAMANQABAWQCaAAPABoAJQAANxEzMhcWFRQHFhUUBw4BIwMzMjc2NTQnJisBFxUzMjc2NTQnJiM2lEAiJC9DJhszNx0mEgkQEAgUJQExFAsVFAoWAgJlKShQUygka1cuIhMBfAYLIB4LBuNwCA4mIgwGAAAAAQA1AAABqQJnACUAACUzDgEjIi4CNTQ+AjMyHgMXIy4DIyIOARUUFjMyPgIBSWAQX0cxSiwWFStLMSM7KB4QA2AFDhQfER4pEi8qFCEUCulrfjNXbD47alk0HzJAPR0SISATNEwsSWcXJxkAAgA1AAABgwJlAA8AGAAAMxEzMh4DFxYVFA4CIwMRMzI1NCcmIzZ/EhcsICYOJBUtTzUiKF4TFzMCZAEMFi4hT29BbFcwAdr+r6dDLjkAAAABADUAAAE3AmUACwAAEyEVIxUzFSMVMxUhNgEBlpGSlv8AAmR4cHmKeQAAAAEANQAAATcCZQAJAAAzESEVIxUzFSMRNgEBmJOTAmR5b3r+/gAAAAABADUAAAG3AmYAIQAAARUmBw4CFRQeAjMyNzY3IzUzFgcGIyIuATU0NjMyFhcBQBQ3FygbEBkgESEWGQVr0wUTMH89WCpiX0haEAGbAUgCASNPOC1FKhUaHDlpZkOyVYlXiaZvWwAAAAEANQAAAYYCZQALAAAzIxEzFTM1MxEjNSOcZmaDZ2eDAmTm5v2c9QABADUAAACgAmUAAwAAMxEzETZpAmT9nAABADUAAAFRAmUAGgAAAREUBwYHBiMiLgMnJjUzFBYVFjMyNzY1EQFQDQ8fJi4IESsgIAUCcQEEGxUHBAJk/pZkLCscIwIRHkEsFxcCDAQzGxAhAZEAAAAAAQA1//8BiwJmAAoAABcRMxETMwMTIwMRNmdzbISTfnABAmb+7AEU/s/+zAEJ/vYAAQA1AAABGgJlAAUAADMRMxEzFTZpewJk/iaKAAEANQAAAeUCZQAMAAAzIxEzGwEzESMTAyMDlmCLTEuMYARZRVgCZP52AYr9nAHK/jYBygABADUAAAGMAmUACQAAGwEDMxEjAxMjEZ2NAWNikwJjAmT+lAFs/ZwBaf6XAmQAAAACADUAAAGsAmUADAAfAAATNDYzMhYVFA4BIyImNxQWMzI+BDU0LgIjIg4BNmRWUWs0VDRWZGgqKg8aEQ0IAwgSIhceJw4BLKGXmJpfjUaelUtjDxohKCcUHzo1IDVKAAACADUAAAFgAmYAEAAbAAATMzIeARcWFRQGBw4BKwEVIxMVMzI3NjU0JyYjNoEjMRoMLhcSFjEtKGRkJRoNGBkOHAJlCxMPO2cvWRkdGMAB3ZMJEi8uEQoAAwA1//8BvwJmABsALgA8AAAlFwYiLgInDgIjIi4BNTQ+ATMyFhUUBx4CAyIOBAc2MzIXFhc2NTQuAQMeAzsBMjcmJyYjIgG9AQINGRgcChMsFBM+VycmWD1Uah0GDQzAERwSDQcCARgVKCIbHQkbLGgGFRUTBgYWDhEOGSAPenkBAggSDRMTAlaGU1GIXK5/ZUkIBwEBZxIgHScLCBEoHzQeLTJOKP7/HCgQCQwiFSMAAAAAAgA1//8BjwJmAA0AGgAAJRcjJxUjETMXFhcWFRQnNjU0LgInKwEVMzIBDYF+cGpqOi4UW4QYCxARBQY1Lhb7++vqAmQBBQosgohEFyoVHg4IAZkAAQAyAAABjwJnACsAADczFBY3NjU0JicuAycmPgEzMhYXIy4DIyIGFRQWFx4BFRQOAiMiJjZ2JBIyJjwRICobAQE0TSs5WQp0AQMJEg0RHCdBQTEUJkQsXFbFKx8BBDgWIB4JFyg7ITlVKFRbCwwTCh0UFSIkJEc2JUE3IGkAAAABADUAAAFTAmUABwAAMxEjNSEVIxGLVQEdVQHseHj+FAAAAAABADUAAAGNAmUAGgAAEzMRFBceATI2NzY1ETMRFA4BBwYjIiYnLgE1NmsIBR8qHgUIagcQDjBUIk0ZGQwCZP6WLhsSGBYQFzUBa/6WM0MvFEEcJCZISwAAAQA1AAABpwJlAAYAADMDMxsBMwO2gGdQUWmAAmT+UwGt/ZwAAQA1AAACQAJkAAwAADMDMxsBMxsBMwMjCwGfaWk4PFA8OGhrWz4+AmP+cwGN/nEBj/2dAYz+dAABADUAAAHBAmUACwAAMxMDMxc3MwMTIycHNop6c0NCcnmJc1VRAUYBHq6u/t/+vdnZAAAAAQA1AAABlAJlAAkAADczAzMXNzMDFSOsAXdvQUFtd3HrAXn29v6H6wAAAAABADUAAAFDAmYACQAAAQMzFSE1EyM1IQFDiIj+85OTAQ0B5v6kimcBdYkAAAEANQFFAaYCagAGAAAbATMTIycHNnx3fYE4NwFFAST+3LOzAAIANQAAAcgCZQAHAAoAADcHIxMzEyMvAge8GG6bYJdvGhknK3JyAmT9nHJz1tYAAAMANQABAWQCaAAPABoAJQAANxEzMhcWFRQHFhUUBw4BIwMzMjc2NTQnJisBFxUzMjc2NTQnJiM2lEAiJC9DJhszNx0mEgkQEAgUJQExFAsVFAoWAgJlKShQUygka1cuIhMBfAYLIB4LBuNwCA4mIgwGAAAAAQA1AAABqQJnACUAACUzDgEjIi4CNTQ+AjMyHgMXIy4DIyIOARUUFjMyPgIBSWAQX0cxSiwWFStLMSM7KB4QA2AFDhQfER4pEi8qFCEUCulrfjNXbD47alk0HzJAPR0SISATNEwsSWcXJxkAAgA1AAABgwJlAA8AGAAAMxEzMh4DFxYVFA4CIwMRMzI1NCcmIzZ/EhcsICYOJBUtTzUiKF4TFzMCZAEMFi4hT29BbFcwAdr+r6dDLjkAAAABADUAAAE3AmUACwAAEyEVIxUzFSMVMxUhNgEBlpGSlv8AAmR4cHmKeQAAAAEANQAAATcCZQAJAAAzESEVIxUzFSMRNgEBmJOTAmR5b3r+/gAAAAABADUAAAG3AmYAIQAAARUmBw4CFRQeAjMyNzY3IzUzFgcGIyIuATU0NjMyFhcBQBQ3FygbEBkgESEWGQVr0wUTMH89WCpiX0haEAGbAUgCASNPOC1FKhUaHDlpZkOyVYlXiaZvWwAAAAEANQAAAYYCZQALAAAzIxEzFTM1MxEjNSOcZmaDZ2eDAmTm5v2c9QABADUAAACgAmUAAwAAMxEzETZpAmT9nAABADUAAAFRAmUAGgAAAREUBwYHBiMiLgMnJjUzFBYVFjMyNzY1EQFQDQ8fJi4IESsgIAUCcQEEGxUHBAJk/pZkLCscIwIRHkEsFxcCDAQzGxAhAZEAAAAAAQA1//8BiwJmAAoAABcRMxETMwMTIwMRNmdzbISTfnABAmb+7AEU/s/+zAEJ/vYAAQA1AAABGgJlAAUAADMRMxEzFTZpewJk/iaKAAEANQAAAeUCZQAMAAAzIxEzGwEzESMTAyMDlmCLTEuMYARZRVgCZP52AYr9nAHK/jYBygABADUAAAGMAmUACQAAGwEDMxEjAxMjEZ2NAWNikwJjAmT+lAFs/ZwBaf6XAmQAAAACADUAAAGsAmUADAAfAAATNDYzMhYVFA4BIyImNxQWMzI+BDU0LgIjIg4BNmRWUWs0VDRWZGgqKg8aEQ0IAwgSIhceJw4BLKGXmJpfjUaelUtjDxohKCcUHzo1IDVKAAACADUAAAFgAmYAEAAbAAATMzIeARcWFRQGBw4BKwEVIxMVMzI3NjU0JyYjNoEjMRoMLhcSFjEtKGRkJRoNGBkOHAJlCxMPO2cvWRkdGMAB3ZMJEi8uEQoAAwA1//8BvwJmABsALgA8AAAlFwYiLgInDgIjIi4BNTQ+ATMyFhUUBx4CAyIOBAc2MzIXFhc2NTQuAQMeAzsBMjcmJyYjIgG9AQINGRgcChMsFBM+VycmWD1Uah0GDQzAERwSDQcCARgVKCIbHQkbLGgGFRUTBgYWDhEOGSAPenkBAggSDRMTAlaGU1GIXK5/ZUkIBwEBZxIgHScLCBEoHzQeLTJOKP7/HCgQCQwiFSMAAAAAAgA1//8BjwJmAA0AGgAAJRcjJxUjETMXFhcWFRQnNjU0LgInKwEVMzIBDYF+cGpqOi4UW4QYCxARBQY1Lhb7++vqAmQBBQosgohEFyoVHg4IAZkAAQAyAAABjwJnACsAADczFBY3NjU0JicuAycmPgEzMhYXIy4DIyIGFRQWFx4BFRQOAiMiJjZ2JBIyJjwRICobAQE0TSs5WQp0AQMJEg0RHCdBQTEUJkQsXFbFKx8BBDgWIB4JFyg7ITlVKFRbCwwTCh0UFSIkJEc2JUE3IGkAAAABADUAAAFTAmUABwAAMxEjNSEVIxGLVQEdVQHseHj+FAAAAAABADUAAAGNAmUAGgAAEzMRFBceATI2NzY1ETMRFA4BBwYjIiYnLgE1NmsIBR8qHgUIagcQDjBUIk0ZGQwCZP6WLhsSGBYQFzUBa/6WM0MvFEEcJCZISwAAAQA1AAABpwJlAAYAADMDMxsBMwO2gGdQUWmAAmT+UwGt/ZwAAQA1AAACQAJkAAwAADMDMxsBMxsBMwMjCwGfaWk4PFA8OGhrWz4+AmP+cwGN/nEBj/2dAYz+dAABADUAAAHBAmUACwAAMxMDMxc3MwMTIycHNop6c0NCcnmJc1VRAUYBHq6u/t/+vdnZAAAAAQA1AAABlAJlAAkAADczAzMXNzMDFSOsAXdvQUFtd3HrAXn29v6H6wAAAAABADUAAAFDAmYACQAAAQMzFSE1EyM1IQFDiIj+85OTAQ0B5v6kimcBdYkAAAAAEADGAAEAAAAAAAEACAASAAEAAAAAAAIABwArAAEAAAAAAAMAFQBfAAEAAAAAAAQACACHAAEAAAAAAAUAIgDWAAEAAAAAAAYADwEZAAEAAAAAABAACAE7AAEAAAAAABEABwFUAAMAAQQJAAEAEAAAAAMAAQQJAAIADgAbAAMAAQQJAAMAKgAzAAMAAQQJAAQAEAB1AAMAAQQJAAUARACQAAMAAQQJAAYAHgD5AAMAAQQJABAAEAEpAAMAAQQJABEADgFEAFYAZQBnAGUAbQBpAHQAZQAAVmVnZW1pdGUAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAADEALgAwADAAMgA7AFYAZQBnAGUAbQBpAHQAZQBSAGUAZwB1AGwAYQByAAAxLjAwMjtWZWdlbWl0ZVJlZ3VsYXIAAFYAZQBnAGUAbQBpAHQAZQAAVmVnZW1pdGUAAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADIAOwBGAG8AbgB0AHMAZQBsAGYAIABNAGEAawBlAHIAIAAzAC4AMwAuADAAAFZlcnNpb24gMS4wMDI7Rm9udHNlbGYgTWFrZXIgMy4zLjAAAFYAZQBnAGUAbQBpAHQAZQBSAGUAZwB1AGwAYQByAABWZWdlbWl0ZVJlZ3VsYXIAAFYAZQBnAGUAbQBpAHQAZQAAVmVnZW1pdGUAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAAAAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAABOAAAAAQACAQIBAwADAAQABgAHAAgACQANABMAFAAVABYAFwAYABkAGgAbABwAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0AQQBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0ArAEECWNvbnRyb2xMRgljb250cm9sQ1IKc29mdGh5cGhlbgAAAAAAAAH//wACAAEAAAAMAAAAFgAAAAIAAQABAE0AAQAEAAAAAgAAAAAAAQAAAAoALAAuAAJERkxUAA5sYXRuABgABAAAAAD//wAAAAQAAAAA//8AAAAAAAAAAQAAAAoAMAA+AAJERkxUAA5sYXRuABoABAAAAAD//wABAAAABAAAAAD//wABAAAAAWtlcm4ACAAAAAEAAAABAAQAAgAAAAEACAABKd4ABAAAAEYAlgEwAd4CjAM2A+AEegUsBWYGDAa+B3AIHgjQCYIKNAriC4gMAgx0DOYNZA3mDlQOyg88D54QEBCGEQARchHsEmIS1BOWFAwUghTwFWIV1BaiFxQXkhgEGMYZdBomGtQbfhwYHL4dYB3+HpgfPh/oIJYhPCHmIpQjRiPsJJolSCXuJpQnQifoKJIpRAAmAAn/8QAK//sADP/7AA3/+wAO//sAD//7ABD/+wAR//sAEv/7ABP/+wAU//sAFf/xABb/8QAZ//sAHf/2AB7/+wAf//sAIP/xACH/+wAi//sAI//7ACT/+wAl//EAJv/2ACf/8QAo//sAKf/2ACr/+wAr//sALP/sAC3/7AAu/+IAL//dADD/9gAx/+wAMv/7ADP/+wA0//YAKwAG//EACP/nAAn/4gAK/9MAC//iAAz/9gAN/+IADv/sAA//4gAQ/9gAEf/iABL/1QAT//EAFP/nABX/8QAW/9gAMf/TADL/pgAz//MANP/nADX/8QA2//EAN//7ADj/7gA5//YAOv/7ADv/2AA8//EAPf/2AD7/9gA///EAQP/sAEH/+wBC/+wAQ//xAET/7ABF/+wARv/2AEf/3QBI/90ASf/EAEr/zgBL//YAKwAG//YAB//2AAn/3QAL/+wADP/sAA3/8QAO//YAD//sABD/8QAR/+wAEv/iABP/5wAU/+wAFf/dABb/7AAX/78AMf/YADL/sAAz/+IANP/iADX/8QA2/+cAN//xADj/3QA5/+wAOv/2ADv/4gA8//EAPf/xAD7/8QA///YAQP/YAEH/9gBC/+cAQ//sAET/7ABF/+wARv/xAEf/zgBI/9MASf/OAEr/zgBL/+wAKgAG//YAB//iAAj/4gAK/+IADP/dAA3/ugAO/+IAD//iABD/5wAR/+IAEv/dABP/yQAU/90AFf+mABb/0wAx/5gAMv/YADP/4gA0/9MANf/xADb/7AA3/+wAOP/iADn/7AA6//EAO//dADz/5wA9/+wAPv/sAD//5wBA/9gAQf/sAEL/zgBD/+wARP/YAEX/tQBG/90AR/+hAEj/oQBJ/8QASv+DAEv/7AAqAAb/8QAH/90ACP/YAAn/oQAL/8kADP/iAA3/sAAO/+cAD//YABD/4gAR/90AEv/bABP/4gAU/+IAFf/TABb/5wAg/+QAMf/nADL/3AAz//QANP/rADX/9AA2//IAN//4ADj/8AA5//QAOv/1ADv/7AA8/+oAPf/7AD7/9wA///IAQP/tAEH/+wBC/+IAQ//2AET/4wBF/7YARv/vAEf/pgBK/6MAS//yACYAB//TAAj/8QAK/84ADP/dAA3/9gAO//EAD//dABD/pgAR/8kAEv+6ABP/7AAU/90AFf/OADH/xAAy/5IAM//sADT/3QA1/+cANv/xADf/9gA4/90AO/9WADz/5wA9//EAPv/sAD//5wBA/84AQf/dAEL/0wBD/+cARP/nAEX/5wBG/+cAR//dAEj/2ABJ/7oASv/JAEv/4gAsAAb/+wAH//sACP/xAAn/zgAK/+cAC//dAAz/9gAN/9gADv/tAA//7AAQ/+kAEf/rABL/3QAT/90AFP/hABX/3QAW/90AMf/nADL/vwAz/+cANP/nADX/8QA2//EAN//sADj/5wA5//YAOv/2ADv/4gA8//EAPf/2AD7/+wA///sAQP/2AEH/+wBC/+wAQ//7AET/7ABF/9MARv/7AEf/yQBI/84ASf+wAEr/xABL/+cADgAG//sACf/xAAv/7AAN//sADv/7AA8AAAAR//EAEv/0ABP/9gAU//EAFf/xABb/7AAx//YAQP/2ACkABv/7AAf/9gAI//sACf/iAAr/5wAL/+wADP/vAA3/3QAO//sAD//qABD/8QAR/+wAEv/nABP/8QAU/+cAFf/iABb/7AAx/+cAMv/vADP//AA0/+cANf/7ADb//gA4//EAOf/8ADr//AA7/+kAPP/6AD3//QA+//4AP//7AEL/6gBD//0ARP/2AEX/7ABG//EAR//YAEj/4gBJ/+wASv/LAEv//AAsAAb/+wAH//EACP/2AAn/0wAK/+IAC//JAAz/5wAN/90ADv/iAA//7AAQ/+cAEf/sABL/3QAT/9MAFP/iABX/zgAW/+cAMf/YADL/xAAz/+wANP/dADX/6AA2//EAN//xADj/4wA5//EAOv/2ADv/7AA8/+wAPf/sAD7/9gA//+wAQP/iAEH/8QBC/90AQ//nAET/5wBF/8QARv/mAEf/xABI/8kASf+1AEr/rQBL/+IALAAG//sAB//7AAj/9gAJ/9MACv/2AAv/ugAM/+kADf/dAA7/9gAP/+wAEP/2ABH/8AAS//EAE//2ABT/5wAV/9gAFv/sADH/vwAy/9UAM//eADT/3wA1//EANv/xADf/9gA4/+IAOf/xADr/9gA7/+wAPP/xAD3/9gA+//EAP//2AED/2ABB//EAQv/nAEP/9gBE/+cARf/TAEb/8QBH/9gASP/YAEn/xgBK/78AS//xACsABv/7AAf/9gAI/+wACf/TAAr/5wAL/90ADP/lAA3/zgAO/90AD//dABD/7AAR/+IAEv/iABP/2AAU/+IAFf/JABb/5wAx/90AMv/EADP/6wA0/+EANf/wADb/8AA4/9wAOf/dADr/7AA7/9gAPP/sAD3/5wA+/+wAP//iAED/0wBB/+IAQv/YAEP/4gBE/84ARf/JAEb/4gBH/8kASP/OAEn/vwBK/8kAS//TACwABv/7AAf/3wAI/+cACf+wAAr/4wAL/8kADP/dAA3/xwAO/+cAD//dABD/7AAR/+cAEv/iABP/yQAU/9cAFf+/ABb/4gAa/+kAMf/YADL/uwAz/+EANP/dADb/6wA3//MAOP/lADn/8QA6//IAO//eADz/5wA9/+4APv/zAD//8ABA/+IAQf/2AEL/6gBD//YARP/kAEX/zABG/+8AR/+0AEj/uwBJ/64ASv+vAEv/5QAsAAb/+wAH/90ACP/nAAn/4gAK/9MAC//nAAz/3QAN//YADv/eAA//3QAQ/7AAEf/OABL/sAAT//sAFP/dABX/0wAW/9MAMf/iADL/iAAz//YANP/OADX/9gA2//EAN//xADj/0wA5//YAOv/zADv/gAA8//EAPf/7AD7/+wA///YAQP/OAEH/7gBC/84AQ//2AET/2ABF//sARv/2AEf/5wBI/+cASf/TAEr/4gBL/+wALAAG//sAB//2AAj/8QAJ/9gACv/nAAv/3QAM/+IADf/dAA7/4gAP/+IAEP/nABH/5wAS/9gAE//YABT/3QAV/84AFv/sADH/5wAy/78AM//nADT/2AA1/+cANv/nADf/7AA4/90AOf/sADr/7AA7/+cAPP/sAD3/8QA+/+wAP//xAED/4gBB//EAQv/dAEP/5wBE/+IARf/YAEb/5wBH/78ASP/HAEn/sABK/7UAS//dACsABv/xAAf/8QAI/+IACf/dAAr/0wAL/+IADP/iAA3/3QAO/+cAD//dABD/zgAR/9MAEv/EABP/0wAU/84AFv/dADH/4gAy/6EAM//jADT/3QA1/+wANv/sADf/5wA4/90AOf/nADr/8QA7/78APP/xAD3/9gA+/+wAP//nAED/3QBB/+cAQv/nAEP/5wBE/+IARf/OAEb/3QBH/8QASP/JAEn/lwBK/7oAS//YACkABv/sAAf/0wAI/90ACf/OAAr/3QAM/90ADf/EAA7/5wAP/9gAEP/YABH/3QAS/9MAE//YABT/4gAV/90AMf/sADL/wAAz/+8ANP/kADX/6wA2//AAN//2ADj/5AA5//EAOv/uADv/1gA8//QAPf/2AD7/8QA///AAQP/dAEH/7ABD/+gARP/YAEX/1QBG/+wAR/+3AEj/wwBJ/7UASv+wAEv/5gAeAAf/zgAi/+4AI//5ACT/7wAy/9AAM//pADT/sQA1/+sANv/nADf/5gA4/7oAOf/vADr/9wA7/9AAPP/sAD3/6wA+/+YAP//sAED/uwBB/+kAQv+7AEP/5ABE/9QARf+6AEb/0ABH/34ASP+SAEn/zQBK/5sAS//nABwAF//RACT//wAy/9EAM//uADT/5wA1/+8ANv/3ADf/7gA4/+gAOf/3ADr/+wA7/9oAPP/vAD3/9wA+/+4AP//vAED/4QBB//cAQv/nAEP/7wBE/+4ARf/QAEb/9wBH/8EASP/MAEn/wwBK/7sAS//nABwAF//QABv/+QAy/8EAM//zADT/6wA1//sANv/zADf/+wA4/+8AOf/zADr//gA7/+EAPP/vAD3/9wA+//kAP//3AED/4gBB//kAQv/jAEP/8wBE/+YARf/VAEb/+QBH/84ASP/JAEn/twBK/8EAS//rAB8ABv/7ABL/3wAX/8kAJf/5ACv/7wAy/7oAM//zADT/6wA1/+8ANv/uADf/8wA4/+oAOf/vADr/7wA7/9QAPP/5AD3//gA+//EAP//vAED/4wBB//MAQv/mAEP/7gBE/+cARf/XAEb/6wBH/8kASP/JAEn/twBK/7cAS//nACAABv/7ACQAAgAl/+8AJ//5AC3//gAv//4AMv/oADP//QA0/+sANf/7ADb/+gA3//sAOP/jADn/9wA6//oAO//kADz//wA9//0APv/+AD8AAABA/+gAQf/7AEL/6ABD//sARP/sAEX/8QBG//sAR//qAEj/6wBJ/+cASv/qAEv/+QAbAAb/+wAl/+8AMv+5ADP/+wA0/+8ANf/7ADb/+wA3//0AOP/vADn/+wA6AAAAO/+7ADz//gA9//4APv/7AED/7ABB//4AQv/nAEP/+QBE//kARf/7AEb/+QBH//MASP/rAEn/4gBK/+8AS//7AB0ABv/2ABf/zgAl/+8AMv+3ADP/9wA0/+sANf/3ADb/8QA3//kAOP/uADn/8wA6//sAO//YADz/8wA9/+4APv/3AD//8wBA/+MAQf/3AEL/6QBD/+8ARP/nAEX/1ABG/+8AR//JAEj/zABJ/6YASv/JAEv/3AAcAAb/+wAX//MAJf/7ADL/6wAz//4ANP/uADX/+wA2//4AN//+ADj/8wA5//0AOv/+ADv/7gA8//4APf/+AD7/+wA///4AQP/uAEL/9wBD//4ARP/+AEX/+QBG//4AR//uAEj/9wBJ/+4ASv/zAEv//gAYAAb/+wAx//YAMv/rADP//wA0//MANf//ADYAAQA3//8AOP/zADv/6AA8//4APf/+AD4AAQBA/+4AQf//AEL/8wBD//4ARP/4AEX//QBH/+wASP/3AEn/7ABK//EASwABABwABv/2ABf/4QAy/8oAM//9ADT/+QA1//4ANv/7ADf//gA4//MAOf/+ADr//wA7/+EAPP/7AD3//gA+//4AP//+AED/7wBB//4AQv/zAEP//gBE//sARf/7AEb//gBH/+8ASP/5AEn/2gBK//oAS//+AB0ABv/nABf/5wAx/7AAMv/hADP/7gA0/7QANf/rADb/5wA3/+4AOP+sADn/6wA6//kAO/+3ADz/6gA9/+8APv/nAD//5wBA/6wAQf/uAEL/rgBD/+cARP+8AEX/3ABG/9oAR//cAEj/0QBJ/9oASv/RAEv/7wAeAAb/9gAX//cAI//9ADH/vwAy/+4AM//5ADT/2gA1//4ANv/3ADf/+wA4/9oAOf/3ADr/+wA7/+cAPP/7AD3/+QA+//cAP//5AED/1ABB//sAQv/cAEP/9wBE/+8ARf/JAEb/6wBH/8QASP++AEn/5wBK/8EAS//+ABwAF//7ADH/7AAy/+QAM//+ADT/7gA1//4ANgAAADf//QA4//cAOf/7ADr//gA7/+4APP/+AD3//gA+//0AP//7AED/7wBB//4AQv/uAEP//gBE//cARf/7AEb/+QBH/+gASP/vAEn/6wBK/+gAS//+AB4ABv/7ABf/8wAa//4AHf/3ACX/9wAq//4AMf/2ADL/5AAz//0ANP/zADX/+wA2//4AN//+ADj/+QA7/+4APf/+AD7/+wA///4AQP/2AEH/+gBC/+4AQ//7AET/+QBF//sARv/+AEf/8wBI/+8ASf/zAEr/6wBL//4AHQAG//EAJP/3ADH/7AAy/7sAM//sADT/4wA1/+8ANv/vADf/9wA4/+QAOf/qADr/9wA7/98APP/vAD3/9wA+/+sAP//uAED/4wBB/+4AQv/mAEP/7wBE/+IARf/VAEb/7gBH/8MASP/GAEn/uwBK/7oAS//fABwABv/sACT//gAy/54AM//rADT/6gA1//EANv/rADf/9wA4/+MAOf/oADr/9wA7/64APP/sAD3/8QA+/+wAP//sAED/4QBB//MAQv/oAEP/5ABE/9gARf/kAEb/7gBH/9EASP/QAEn/uwBK/8QAS//zADAAF//3ABj//wAZ/+kAGv//ABv//QAc//4AHf/pAB7/+wAf//8AIP/iACH//gAi//8AI//+ACT//wAl/+IAJ//uACj//gAp/+cAKv/hACv/+QAs/8MALf/QAC7/5AAv/8wAMP//ADL/4QAz//4ANP/jADX/9wA3//kAOP/fADn/9wA7/+IAPP/5AD3/+gA+//EAP//6AED/2gBB/+8AQv/aAET/7wBF/9cARv/qAEf/xgBI/7sASf/qAEr/tABL//sAHQAG/+cAF//oACT/+gAy/+IAM//xADT/zAA1/+8ANv/sADf/+gA4/8wAOf/3ADr/8wA7/8kAPP/uAD3/7wA+/+wAP//rAED/yQBB//cAQv/MAEP/+ABE/9QARf/KAEb/2gBH/8EASP/EAEn/4gBK/7cAS//vAB0ABv/xABv/+QAl/+4AMv+8ADP/7wA0/9wANf/zADb/6AA3//cAOP/hADn/5gA6//MAO//aADz/6QA9//MAPv/pAD//6wBA/+MAQf/3AEL/2gBD/+kARP/rAEX/1ABG/+kAR//JAEj/zABJ/7QASv+7AEv/5wAbAAb/9gAy/6YAM//9ADT/0wA1//oANv/+ADf//QA4/9UAOf/3ADr//wA7/7kAPP/6AD3//gA+//sAP//7AED/0ABB//oAQv/XAEP/+QBE/+IARf/zAEb/9wBH/+8ASP/vAEn/6gBK/+cAS//6ABwABv/7ACQAAgAy/9UAM//7ADT/7wA1//cANv/9ADf//wA4/+4AOf/7ADr//wA7/+sAPP/+AD3//gA+//0AP//6AED/7gBB//sAQv/sAEP/+wBE/+8ARf/7AEb//QBH/+8ASP/qAEn/3wBK//gAS//+ABwABv/nABf/lQAy/4IAM//3ADT/wQA1/+kANv/nADf/+gA4/8QAOf/oADr/6wA7/5UAPP/uAD3/+wA+//cAP//vAED/wQBB/+8AQv/DAEP/5wBE/84ARf/uAEb/7gBH/+kASP/pAEn/zgBK/+4AS//7ADMABv/sABf/owAY//kAGf/XABr//gAb//4AHP/5AB3/0AAe//gAIP+tACH/8wAi//4AJP/+ACX/0AAm//kAJ//MACj//gAp/9oAKv/+ACv//gAs/+MALf/zAC7/3AAv//cAMP/7ADL/jwAz/+oANP/CADX/7wA2/+oAN//3ADj/xgA5/+sAOv/6ADv/qgA8/+sAPf/7AD7/7wA//+8AQP++AEH/7gBC/8MAQ//qAET/1QBF/+sARv/pAEf/6ABI/+cASf/iAEr/2gBL/+4AHAAG/+cAF//hADL/1AAz/+sANP+wADX/6wA2/+QAN//jADj/qgA5/+cAOv/jADv/ugA8/+cAPf/vAD7/2gA//+kAQP+uAEH/7wBC/64AQ//kAET/uwBF/9oARv/aAEf/zABI/84ASf/TAEr/zQBL/+sAHwAG/+IAF/+lACP//gAk//sAL//uADL/hwAz/+8ANP+sADX/+AA2/9wAN//6ADj/uQA5/+4AOv/vADv/hAA8/+gAPf/pAD7/5wA//+YAQP+wAEH/6QBC/7oAQ//vAET/zgBF/+gARv/oAEf/2gBI/+YASf/QAEr/4gBL/+kAHAAG//sAF//+ADL/5wAz//sANP/kADX/+wA2//8AN//7ADj/4QA5//4AOv//ADv/6wA8//sAPf/+AD7//gA///sAQP/hAEH/+wBC/9oAQ//+AET/7wBF//sARv/6AEf/6QBI//kASf/rAEr/6QBL//sAMAAG/+wAB//YAAj/3QAJ/9MACv+/AAv/yQAM/+IADf/YAA7/7AAP/9MAEP/JABH/5wAS/+IAE//OABT/4gAV/+wAFv/nACD/WwAh/+wAIv/xACP/8QAk//YAJf/xADL/oQAz/+wANP/nADX/7AA2//sAN//2ADj/9gA5//sAO/+PADz/7AA9//YAPv/sAD//8QBA/+IAQf/nAEL/7ABD/+IARP/JAEX/zgBG/+cAR/+/AEj/xABJ/5IASv+/AEv/4gArAAb/9gAI/8QACf+cAAr/zAAL/5QADP+6AA3/xAAO/+oAD//BABD/zgAR/78AEv+7ABP/2AAU/78AFf+mABcAAgAk/+cAMf+mADL/2AAz/+cANP+7ADX/5gA2//MAN//zADj/sQA5/+oAOv/rADz/6AA9/+gAPv/mAD//5wBA/7oAQf/4AEL/twBD/+gARP/OAEX/sQBG/88AR/+EAEj/lwBJ/9AASv+NAEv/9wAsAAb/9gAH/+oACP/nAAn/xAAK/+gAC//TAAz/3QAN/9gADv/lAA//5wAQ/+IAEf/aABL/3AAT/9MAFP/bABX/xAAk//EAMf/YADL/zQAz/+wANP/kADX/9wA2//MAN//9ADj/4wA5//cAOv/3ADv/5gA8//4APf/9AD7/7gA//+4AQP/kAEH/+QBC/+YAQ//vAET/6QBF/9oARv/vAEf/zgBI/88ASf/QAEr/uQBL//kAKwAG//YAB//qAAj/7AAJ/9gACv/uAAv/4gAM/+IADf/dAA7/9AAP/+IAEP/eABH/5gAS/+IAE//TABT/3QAV/90AJP/2ADH/7AAy/74AM//uADT/3wA1//oANv/xADj/5wA5/+8AOv/5ADv/2AA8/+0APf/9AD7/8wA///EAQP/rAEH/+ABC/+QAQ//3AET/5gBF/9AARv/zAEf/xgBI/80ASf++AEr/twBL/+gAKgAH//EACP/xAAn/0wAK/+YAC//YAAz/5wAN/9gADv/oAA//5wAQ/+IAEf/iABP/2AAU/90AFf/dACT/+wAx/+wAMv+7ADP/9wA0/+QANf/rADb/5wA3//EAOP/kADn/+QA6//YAO//aADz/9wA9//4APv/uAD//8QBA/+cAQf/vAEL/4wBD/+sARP/cAEX/0ABG/+sAR//CAEj/xABJ/7QASv+6AEv/6AAmAAf/9gAI//EACf/sAAr/9gAM/+cADv/6AA//8QAQ//EAEf/vABL/4QAT//EAFP/iABX/5wAy/+kAM//9ADT/5wA1//sANv/9ADf//gA4/+sAOf/+ADoAAQA7/+gAPP/9AD3/9wA+//0AP//9AED/6wBBAAEAQv/pAEP/+QBE/+wARgACAEf/6QBI/+8ASf/nAEr/6wBL//sAKQAH//sACP/xAAn/5wAK/+4AC//2AAz/4gAN//sADv/1AA//8QAQ/90AEf/kABL/4gAT/+wAFP/YABX/3QAx//YAMv+5ADP/+AA0/+MANf/3ADb/+AA3//kAOP/iADn/+gA6//0AO//OADz//QA9//4APv/5AD///ABA/+YAQv/jAEP/9wBE/+YARf/vAEb//gBH/+cASP/vAEn/0QBK/+YAS//9ACgAB//2AAj/4gAJ/90ACv/sAAv/4gAM/+gADf/iAA7/9QAP/+gAEP/dABH/4AAS/+YAE//OABT/4gAV/90AJP/7ADH/9gAy/8EAM//vADT/3wA2//QAN//4ADj/4wA5/+kAOv/6ADv/0QA8/+YAPf/zAD7/6QA///EAQP/qAEL/3ABD/+gARP/fAEb/+ABH/7sASP+7AEn/rwBK/68AS//jACcACP/xAAn/7AAK//gADP/2AA7/9wAP//YAEP/xABH/5wAS/+cAE//xABT/7AAV/+UAMf/2ADL/6AAz//kANP/qADX/+wA2//oAN//7ADj/6wA5//cAOv//ADv/4wA8//sAPf/+AD7/+wA///oAQP/sAEH/+gBC/+MAQ//5AET/7wBF/+oARv/7AEf/4wBI/+wASf/jAEr/6gBL//4AJgAH//sACP/7AAn/5wAK//oADP/2AA7/9gAP//YAEP/xABH/8QAS//IAE//xABT/5wAV//EAMv/nADP/+wA0//EANf/9ADb//gA3//4AOP/uADn/+wA6//4AO//oAD0AAAA+//sAP//+AED/7wBB//4AQv/qAEP//wBE//EARf/3AEb/+wBH/+YASP/3AEn/2gBK/+QAS//7ACkAB//2AAj/9gAJ/90ACv/yAAz/8QAO//EAD//wABD/6gAR/+wAEv/mABP/9AAU/+wAFf/rABf/zgAx//YAMv/OADP/7wA0/+oANf/5ADb//gA3//0AOP/oADn/+QA6//0AO//YADz//gA9//8APv/6AD//+QBA/+4AQf/5AEL/4wBD//gARP/qAEX/+QBG//oAR//pAEj/6QBJ/9UASv/rAEv/+gAqAAf/sgAI/8kACf+wAAr/ugAL/7UADP+1AA3/3QAO/+QAD/+6ABD/sgAR/7UAEv+xABP/4gAU/6sAFf+mADH/lwAy/9oAM//jADT/qwA1/+IANv/iADf/4wA4/5oAOf/XADr/7gA7/7QAPP/kAD3/6wA+/+4AP//mAED/rQBB/+8AQv+qAEP/6gBE/74ARf/XAEb/2gBH/9AASP/SAEn/1QBK/80AS//qACsAB//nAAj/8QAJ/6YACv/sAAv/nAAM/90ADf+6AA7/9gAP/+IAEP/sABH/3QAS/9oAE//sABT/3QAV/8QAJP/+ADH/pgAy/+sAM//vADT/ygA1//0ANv/zADf/+wA4/9MAOf/vADr/+wA7/9gAPP/3AD3/9wA+//EAP//7AED/1QBB//cAQv/PAEP/8wBE/+YARf+7AEb/5wBH/7UASP/JAEn/2gBK/6UAS//zACkAB//2AAn/7AAK//kAC//sAAz/9gAO//oAD//2ABD/7AAR/+cAEv/vABP/9gAU//EAFf/sABcAAQAx/+YAMv/pADP/+QA0/+oANf/zADb/+wA3//oAOP/nADn/9wA6//4AO//uADz/+QA9//oAPv/7AD//+QBA/+8AQf/3AEL/6QBD//oARP/sAEX/8wBG//gAR//pAEj/6QBJ/+MASv/nAEv//QAqAAf/9gAI//sACf/sAAr/9wAL/+wADP/7AA7/+gAP//EAEP/2ABH/7AAS//EAE//2ABT/9gAV/+QAFwABADH/8QAy/+kAM//3ADT/6QA1//kANv/5ADf/+QA4/+8AOf/6ADr//gA7/+8APP/7AD3/+gA+//oAP//4AED/7wBB//sAQv/rAEP//QBE/+8ARf/3AEb/+gBH/+4ASP/rAEn/4QBK/+wAS//5ACsAB//xAAj/4gAJ/9gACv/sAAv/2AAM//YADf/iAA7/8QAP/90AEP/iABH/0wAS/+IAE//JABT/4gAV/94AJP/7ADH/3QAy/7QAM//pADT/4QA1/+wANv/vADf/6gA4/+IAOf/qADr/+gA7/9oAPP/pAD3/6wA+/+wAP//pAED/4QBB/+sAQv/cAEP/6wBE/+IARf/JAEb/7gBH/7wASP/BAEn/pgBK/7UAS//kACwAB//iAAj/5wAJ/+IACv/OAAv/2AAM/+cADf/nAA7/8AAP/90AEP+6ABH/xAAS/9cAE//XABT/2AAV/9gAG//3ACT/+wAx/+IAMv+gADP/6QA0/+MANf/mADb/7wA3/+sAOP/aADn/6AA6//YAO/+xADz/6wA9/+4APv/oAD//7wBA/9oAQf/oAEL/1wBD/+MARP/aAEX/2ABG/+cAR//PAEj/yQBJ/7kASv/BAEv/6AApAAf/8QAI/+wACf/OAAr/6gAL/84ADP/nAA3/2AAO//YAD//fABD/4gAR/9gAEv/lABP/5wAU/+IAFf/YADH/4gAy/+cAM//3ADT/2gA1//gANv/5ADf/+wA4/9wAOf/3ADr//gA7/+MAPP/3AD3//QA+//cAP//3AED/1QBC/9UAQ//9AET/6QBF/+EARv/pAEf/ugBI/8QASf/aAEr/wgBL//sAKwAH/8kACP/YAAn/xAAK/9MAC/+/AAz/yQAN/9gADv/nAA//xAAQ/7oAEf+1ABL/wQAT/9gAFP+6ABX/vwAk//sAMf+/ADL/2gAz/+gANP/KADX/6QA2/+kAN//oADj/xgA5/+QAOv/nADv/uQA8/+wAPf/uAD7/6QA//+cAQP/GAEH/7ABC/8kAQ//mAET/2ABF/84ARv/VAEf/wQBI/7wASf/GAEr/tABL/+8AKwAH//EACP/2AAn/yQAK/+oAC//TAAz/3QAN/+cADv/sAA//4gAQ/+IAEf/YABL/3wAT/90AFP/dABX/2AAk//sAMf/nADL/xgAz//MANP/iADX/7wA2/+4AN//3ADj/4wA5/+kAOv/vADv/1wA8/+4APf/zAD7/6gA//+0AQP/kAEH/9wBC/98AQ//qAET/5wBF/9AARv/vAEf/yQBI/9AASf/PAEr/xABL/+8AKQAH/+cACP/sAAn/5wAK/+kAC//dAAz/2AAO/+wAD//XABD/qwAR/8kAEv/AABP/9gAU/9MAFf/OADH/2AAy/7AAM//5ADT/2gA1//0ANv/6ADf//gA4/98AOf/3ADr//QA7/8YAPP/7AD3//gA+//gAP//4AED/1QBB//0AQv/VAEP/+ABE/+MARf/zAEb/+QBH/+4ASP/zAEn/4gBK/+cAS//zACkACP/2AAn/5wAK//QAC//sAAz/+wAN//4ADv/2AA//5QAQ/+wAEf/nABL/8wAT//EAFP/nABX/3QAx/+QAMv/KADP/+QA0/+wANf/6ADb/+gA3//sAOP/vADn/+gA6AAAAO//hADz//wA9//0APv/5AD///gBA/+wAQf/7AEL/7ABD//sARP/vAEX/9wBG//sAR//zAEj/6gBJ/+EASv/jAEv/+wArAAf/zgAI/84ACf/YAAr/ygAL/9gADP/JAA3/+wAO/9kAD//JABD/ogAR/7oAEv+5ABP/5wAU/8QAFf+9ACT/+wAx/7oAMv+FADP/+wA0/7sANf/qADb/6wA3/+wAOP++ADn/5gA6/+8AO/+iADz/6AA9/+oAPv/sAD//7wBA/8MAQf/mAEL/uwBD/+YARP/KAEX/6QBG/+8AR//jAEj/3wBJ/9MASv/hAEv/6wApAAf/zgAI/84ACf/TAAv/2AAM/84ADv/eAA//xAAQ/7AAEf/TABL/sQAT/+wAFP/FABX/yQAk//sAMf/JADL/lQAz//MANP/BADX/+QA2//MAN//3ADj/xgA5//sAOv/3ADv/pQA8/+8APf/+AD7/7gA//+oAQP/DAEH/7gBC/8QAQ//vAET/0ABF/+4ARv/uAEf/6QBI/+QASf/aAEr/5gBL//cAKgAH/8QACP/OAAn/pgAL/7oADP+rAA3/3QAO/+cAD/+5ABD/twAR/8QAEv+zABP/0wAU/7AAFf+cACT/+wAx/6EAMv/aADP/4wA0/7cANf/4ADb/4wA3//0AOP+3ADn/7gA6/+8AO/+7ADz/7gA9//EAPv/jAD//6ABA/7oAQf/zAEL/uQBD/+sARP/OAEX/3wBG/+EAR//aAEj/2ABJ/9gASv/MAEv/7gAsAAf/yQAI/84ACf/JAAr/wgAL/8kADP/JAA3//gAO/8kAD/+6ABD/jQAR/7oAEv+gABP/4gAU/7UAFf+6AB7/8QAk//sAMf+1ADL/lwAz/+8ANP+7ADX/5gA2/+4AN//uADj/uQA5/+gAOv/3ADv/hAA8/+8APf/sAD7/7AA//+oAQP+6AEH/7ABC/7kAQ//pAET/ygBF/+8ARv/vAEf/6ABI/+kASf/fAEr/5ABL//EAJgAH//YACf/iAAr/7AAL/+cADP/iAA3//wAO//UAD//nABD/7AAR/+IAEv/gABP/7AAU/90AFf/TADH/4gAy/+sAM//+ADT/6AA1//4ANgAEADf//wA4/9wAOf/6ADv/5gA8//8APf//AD///QBA/+MAQf//AEMAAABE/+8ARf/4AEb/+wBH//cASP/rAEn/6QBK/+kAS//9AAIAAQAGAEsAAAAAAAAAAQAAAADUGBYRAAAAANmXsTQAAAAA2ZexNA==",et=i=>Or("http://www.w3.org/2000/svg",i),tl=(i,t)=>{const e=et("rect");return e.setAttribute("height",`${i}`),e.setAttribute("width",`${t}`),e},el=(i,t,e,a)=>{const n=Ce("filter");n.setAttribute("id",a),n.setAttribute("height","200%"),n.setAttribute("width","200%"),n.setAttribute("x","-50%"),n.setAttribute("y","-50%");const r=Ce("feOffset");n.appendChild(r),r.setAttribute("result","offOut"),r.setAttribute("in","SourceAlpha"),r.setAttribute("dx",`${i}`),r.setAttribute("dy",`${t}`);const s=Ce("feGaussianBlur");n.appendChild(s),s.setAttribute("result","blurOut"),s.setAttribute("in","offOut"),s.setAttribute("stdDeviation",`${e}`);const o=Ce("feBlend");return n.appendChild(o),o.setAttribute("in","SourceGraphic"),o.setAttribute("in2","blurOut"),o.setAttribute("mode","normal"),n},al=i=>{let t=i;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 nl(i,t,e,a,n,r){const s=n,o=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=il(l.height,l.width,e*s,a*o),d=(a-c*l.width)/2-c*l.x,u=(e-c*l.height)/2-c*l.y;i.setAttribute("transform",`translate(${d} ${u}) scale(${c} ${c})`)}function il(i,t,e,a){const n=e/i,r=a/t;return n>1&&r>1?Math.min(n,r):n>1&&r<1?r:n<1&&r>1?n:Math.min(n,r)}const yn={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 rl{constructor(t){const e=Array.from(t.querySelectorAll("path"));this.paths=e.map(a=>{const n=a.getAttribute("d")||"",r=this.parsePath(n);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 n=r=>{const s=[],o=r.relative?r.type:r.type.toUpperCase();let l=e!==o;const c=yn[r.type];l&&(s.push(o),e=o);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||s.push(" "),s.push(A),l=!1}return s.join("")};return t.map(n).join("")}parsePath(t){const e=/([mzlhvcsqta])([^mzlhvcsqta]*)/gi,a=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi,n=[];let r;for(e.lastIndex=0;r=e.exec(t);){const s=r[1].toLowerCase(),o=(r[2].match(a)||[]).map(parseFloat),l=s===r[1],c=yn[s];if(o.length<c.length)throw new It(`Path type "${s}" given ${o.length} arguments, expected ${c.length}.`);if(c.length>0){if(o.length%c.length!==0)throw new It(`Path type "${s}" given ${o.length} arguments, not divisible by ${c.length}`);for(let d=0;d<o.length/c.length;d++){const u={type:s,relative:l};for(let A=0;A<c.length;A++)u[c[A]]=o[d*c.length+A];n.push(u)}}else n.push({type:s,relative:l})}return n}runTransformer(t,e){const a=[["x1","y1"],["x2","y2"],["x","y"]],n=r=>{for(let s=0;s<a.length;s++){const[o,l]=a[s];if(o in r&&l in r){const c=[r[o],r[l]],d=e(c);if(d.length<2)throw new It("Transformer must return at least 2 points.");r[o]=d[0],r[l]=d[1]}}return r};return this.transformPath(t,n)}transformPath(t,e){const a=[];for(let n=0;n<t.length;n++){const r=JSON.parse(JSON.stringify(t[n])),s=e(r);Array.isArray(s)?a.push(...s):s&&a.push(s)}return a}update(){for(const{pathElement:t,pathData:e}of this.paths){const a=this.encodePath(e);t.setAttribute("d",a)}}}class sl extends Zo{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=po(_o),r=t!==""?(w=>w.charAt(0).toUpperCase()+w.substr(1).toLowerCase())(t):"",s=a.getPath(r,0,72,72),o=s.toSVG(2),l=s.getBoundingBox(),c=l.x2-l.x1,d=s.toPathData(3),u=()=>{const w=et("g");w.classList.add("module-text-group");const F=et("defs");w.appendChild(F),F.appendChild(el(0,2,2,"shadow"));const b=et("path");b.setAttribute("d",d),b.setAttribute("stroke","black"),b.setAttribute("stroke-width","3"),F.appendChild(b);const v=et("g");v.classList.add("module-layer0"),w.appendChild(v),v.setAttribute("filter","url(#shadow)"),v.innerHTML=b.outerHTML;const B=et("g");B.classList.add("module-layer1"),w.appendChild(B),B.setAttribute("stroke-width","3"),B.setAttribute("stroke","rgb(45,41,38)"),B.setAttribute("fill","rgb(45,41,38)"),B.setAttribute("transform","translate(0.5,0)"),B.innerHTML=o;const M=et("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=o;const R=et("g");return R.classList.add("module-layer3"),w.appendChild(R),R.setAttribute("fill","white"),R.innerHTML=o,new rl(w).transform(([T,L])=>[T,L+(c/2-T)**2/(c*6)]),w},A=et("g");A.classList.add("module-root");const h=et("defs");A.appendChild(h);const g=et("g");g.classList.add("module-bounds"),A.appendChild(g);const p=tl(e.height,e.width);p.setAttribute("opacity","0"),g.appendChild(p);const m=et("g");m.classList.add("module-text-enclosure"),A.appendChild(m);const C=u();m.appendChild(C);const S=Pr(d);return nl(m,S,e.height,e.width,.35,.65),al(A.outerHTML)}}async function bi(i){if(i==="Vegemite")return new sl;throw new O(`Failed to resolve Module, Module ${i} not found`)}const ol=["altGlyph","circle","ellipse","path","polygon","polyline","rect","text","textPath","tref","tspan"],ll=async(i,t,e)=>{const a=t.data,n=e.data.baseUrl,r=a.assetUrl.replace("localhost","localstack"),s=n.slice(0,4)==="http"?"":"https://",o=new URL(s+n);o.searchParams.append("video",dn(JSON.stringify([{href:r}]))),o.pathname=o.pathname+(o.pathname.slice(-1)==="/"?"":"/");const l=o.toString(),d=`data:image/svg+xml;base64,${dn(await Fn.toString(l,{type:"svg"}))}`,u=h=>{const g=i.find(m=>m.panelId===h.panelId);if(!g)throw new J(h);const p=N();return new W({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),[]}},cl=async(i,t,e,a)=>{const n=e.data,r=n.assetUrl,s=await ba(r);try{const o=await xo(n,a.option);o&&(t[a.stepName]={selectedVariants:[o]});const l=async c=>{const d=await mi(c,o?.asset?.fileLink),u=await he(d),A=N(),h=i.find(p=>p.panelId===c.panelId);if(!h)throw new J(c);const g=Va(s,u,{scale:n.scale,left:n.x,top:n.y},a.data.forceImageCover);return[new W({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:s.src,x:g.x,y:g.y,width:s.width,height:s.height,rotation:0,scaleX:g.zoom,scaleY:g.zoom,svg:s.svg,colors:s.colors}},h)]};return(await Promise.all(a.data.regions.map(c=>l(c)))).flat()}catch(o){return console.error(o),[]}},dl=async(i,t,e,a)=>{const n=e.data,r=await I.getOptionForStep(a);if(!r)return console.error(`No option for step ${a.stepName}.`),[];const s=r.variants?.find(b=>b.id===n.illustrationVariantId)||await I.getDefaultVariant(r,a.overrideDefaultVariantId);if(!s)return console.error(`No variant with ID: ${n.illustrationVariantId}`),[];if(!s.asset)return console.error(`No asset for variant with ID: ${n.illustrationVariantId}`),[];t[a.stepName]={selectedVariants:[s]};const o=s.asset?.fileLink;if(!o)return console.error(`No asset link for variant with ID: ${n.illustrationVariantId}`),[];const l=await tt(o,!0),c=/<svg.*?<\/svg>/s,d=l.match(c)||[],u=d?.length>0?d[0]:"",g=ot().parseFromString(u,"image/svg+xml").firstElementChild;if(!g)return console.error("Failed to read SVG."),[];ze(g);const p={};Rt(g,b=>{ol.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 B=b.attributes.getNamedItem("stroke");if(B&&B.value!=="none"){const M=B.value,x=`spiff-stroke-${M.replace(/\W/g,"")}`;b.classList.add(x),p[x]={browserValue:M}}});const C=Et().serializeToString(g),S=n.colors;if(S){for(const[b,v]of Object.entries(p))for(const B of Object.keys(S))if(v.browserValue===B){p[b]={browserValue:S[B]};break}}const w=b=>{const v=i.find(M=>M.panelId===b.panelId);if(!v)throw new J(b);const B=N();return new W({colors:p,id:B,svg:C,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),[]}},ul=async(i,t,e)=>{const a=await bi(e.data.module),n=t.data,r=(o,l)=>{const c=i.find(u=>u.panelId===l.panelId);if(!c)throw new J(l);const d=N();return new W({colors:{},id:d,svg:o,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)},s=e.data.regions;try{return s.map(o=>r(a.svgPrint(n.text,o),o))}catch(o){return console.error(o),[]}},Al=async(i,t,e,a)=>{const n=e.data,r=await I.getOptionForStep(a);if(!r)return console.error(`No option for step ${a.stepName}.`),[];const s=r.variants?.find(d=>d.id===n.pictureVariantId)||await I.getDefaultVariant(r,a.overrideDefaultVariantId);if(!s)return console.error(`No variant with ID: ${n.pictureVariantId}`),[];if(!s.asset)return console.error(`No asset for variant with ID: ${n.pictureVariantId}`),[];t[a.stepName]={selectedVariants:[s]};const o=s.asset?.fileLink;if(!o)return console.error(`No asset link for variant with ID: ${n.pictureVariantId}`),[];const l=d=>{const u=i.find(h=>h.panelId===d.panelId);if(!u)throw new J(d);const A=N();return new W({id:A,src:o,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),[]}},hl=async(i,t,e,a)=>{const n=e.data,r=await I.getOptionForStep(a);if(!r)return console.error(`No option for step ${a.stepName}.`),[];const s=r.variants?.find(c=>c.id===n.colorVariantId)||await I.getDefaultVariant(r,a.overrideDefaultVariantId);if(!s)return console.error(`No variant with ID: ${n.colorVariantId}`),[];t[a.stepName]={selectedVariants:[s]};const o=c=>{const d=i.find(p=>p.panelId===c.panelId);if(!d)throw new J(c);const u=`
|
|
1430
|
-
<svg
|
|
1431
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
1432
|
-
xmlnsXlink="http://www.w3.org/1999/xlink"
|
|
1433
|
-
xmlSpace="preserve"
|
|
1434
|
-
preserveAspectRatio="none"
|
|
1435
|
-
version="1.1"
|
|
1436
|
-
width="1"
|
|
1437
|
-
height="1"
|
|
1438
|
-
viewBox="0 0 1 1"
|
|
1439
|
-
>
|
|
1440
|
-
<rect
|
|
1441
|
-
x="0"
|
|
1442
|
-
y="0"
|
|
1443
|
-
width="1"
|
|
1444
|
-
height="1"
|
|
1445
|
-
class="spiff-fill-shape"
|
|
1446
|
-
fill="${s?.color}"
|
|
1447
|
-
/>
|
|
1448
|
-
</svg>
|
|
1449
|
-
`,h={"spiff-fill-shape":{browserValue:s.color||"#000000"}},g=N();return new W({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(o)}catch(c){return console.error(c),[]}},gl=async(i,t,e)=>{const a=[],r=t.type===E.ProductOverlay?e||t.data.asset?.fileLink||"":t.data.asset?.fileLink||"",o=r.endsWith(".jpeg")||r.endsWith(".jpg")||r.endsWith(".png")?D.Image:(r.endsWith(".svg"),D.Illustration),l=t.data.regions;if(o==="image")try{l.forEach(c=>{const d=i.find(A=>A.panelId===c.panelId);if(!d)throw new J(c);const u={id:N(),src:r,type:o,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 W(u,d))})}catch(c){console.error(c)}else{const c=await tt(r,!0),d=u=>{const A=/<svg.*?<\/svg>/s,h=u.match(A)||[],g=h?.length>0?h[0]:"",C=ot().parseFromString(g,"image/svg+xml").firstElementChild;if(!C)throw new It("Failed to read SVG.");return ze(C),Et().serializeToString(C)};l.forEach(u=>{const A=i.find(g=>g.panelId===u.panelId);if(!A)throw new J(u);const h={id:N(),src:r,asset_key:r,svg:d(c),colors:{},type:o,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 W(h,A))})}return a},ml=async(i,t,e,a)=>{const n=[],r=e.data,s=30,o=m=>m.vertical?"center":m.textAlign||"center",l=async()=>{const m=await I.getOptionForStep(a);if(!m)return;const C=m.variants?.find(w=>w.id===r.fontVariantId)||await I.getDefaultVariant(m,a.overrideDefaultVariantId);if(!C||!C.asset)return;t[a.stepName]={selectedVariants:[C]};const S=C.asset.fileLink;if(S)return S},d=await(async()=>{const m=await l();if(!m)return;const C=await Pt(m);return{assetUrl:m,name:C.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 C=m.colorOption;return C?(await I.getDefaultVariant(C))?.color:void 0},g=r.color||await h(a.data),p=a.data.regions;for(const m of p){const C=i.find(w=>w.panelId===m.panelId);if(!C)continue;const S={stepName:e.name,id:N(),align:o(a.data),curved:a.data.curved,fill:r.color||g||"#000000",fontData:d,fontSize:a.data.size||s,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]=Xt(a.data.size||s,d,m,[Fe(A,{vertical:a.data.vertical,uppercase:a.data.uppercase})],{size:a.data.size,minSize:a.data.minSize,maxSize:a.data.maxSize});n.push(new W({...S,fontSize:w,text:S.curved?S.text:(F||[]).join(`
|
|
1450
|
-
`)},C))}else n.push(new W(S,C))}return n},Ii=async(i,t,e,a)=>{const n=[],r={};for(const s of i){const o=t.steps.find(l=>l.stepName===s.name);if(o)switch(o.type){case E.DigitalContent:n.push(...await ll(e,s,o));break;case E.Frame:case E.Photo:n.push(...await cl(e,r,s,o));break;case E.Illustration:n.push(...await dl(e,r,s,o));break;case E.Module:n.push(...await ul(e,s,o));break;case E.Picture:n.push(...await Al(e,r,s,o));break;case E.Shape:n.push(...await hl(e,r,s,o));break;case E.Text:n.push(...await ml(e,r,s,o));break}}for(const s of t.steps)s.type!==E.SilentIllustration&&s.type!==E.ProductOverlay||await pt(s,r)&&n.push(...await gl(e,s,a));return n};class pl{constructor(t){this.handleCompleteRender=null;const e=new Map;t.forEach(a=>e.set(a.id,new wl(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((i,t)=>{try{const a=yt().getContext("webgl2");i(!!a)}catch{i(!1)}}),Cl=fl();class wl{constructor(t,e,a,n,r){this.hasSetStaticContext=!1,this.interactiveDirty=!1,this.staticCtxDirty=!1,this.lastRequestedRenderArguments=void 0,this.lastCompletedStaticRender=void 0,this.renderQueue=new Ye(2),this.id=t,this.name=e,this.service=a,this.panelSize=n,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=Ct(t);this.lastRequestedRenderArguments=e;const a=this.getStaticContext();if(!a){this.markLastCompletedStaticRender(),this.setStaticContextDirty(!1);return}this.renderQueue.enqueue(new yl(this.getID(),a,await Cl,()=>{this.markLastCompletedStaticRender(),this.setStaticContextDirty(!0)},e,this.getWorkflowManager))}}class yl extends He{constructor(t,e,a,n,r,s){super(),this.layoutId=t,this.ctx=e,this.nonPOTSupport=a,this.onRender=n,this.layouts=r,this.getWorkflowManager=s}getDynamicTextureResolution(){return this.getIsMobile()||!this.offscreenRenderingSupported()?{width:1024,height:1024}:{width:2048,height:2048}}getIsMobile(){return window.innerWidth<=480}offscreenRenderingSupported(){return navigator.userAgent.includes("SamsungBrowser")?!1:!!window.Worker&&!!window.OffscreenCanvas}resizeFit(t,e=4096){const a=e/t.width,n=e/t.height,r=Math.min(a,n);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,n=t.layoutState.layout.height,r=a===1||n===1?{width:1,height:1}:this.getDynamicTextureResolution(),s=r.width,o=r.height;let l,c;if(this.nonPOTSupport){const g=s/o;a/n<g?(l=s,c=n*(s/a)):(l=a*(o/n),c=o);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=Je(t.layoutState.layout,e,{renderingConfiguration:{purpose:Nt.ThreeD,templatingContext:d}}),A=Vn(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 Sl=(i,t)=>{const e=[];return i.forEach(a=>{const n=t.steps.find(r=>r.stepName===a.stepName);n?.type===E.Text&&a.stepAspectType==="Text"&&e.push({name:n.stepName,data:{text:a.value}})}),e},vl=async(i,t,e,a)=>{let n={serializableWorkflow:{steps:[]},layouts:{}};n=new U(e.map(l=>new qa(l))).apply(n);const s=await Ii(i,t,e,a);return new U(s).apply(n)},Ke=f.gql`
|
|
1451
|
-
fragment GlobalPropertyStateAspectFields on GlobalPropertyStateAspect {
|
|
1452
|
-
name
|
|
1453
|
-
value
|
|
1454
|
-
type
|
|
1455
|
-
channel
|
|
1456
|
-
hidden
|
|
1457
|
-
storage {
|
|
1458
|
-
... on GlobalPropertyStateColorOptionStorage {
|
|
1459
|
-
customColor
|
|
1460
|
-
}
|
|
1461
|
-
... on GlobalPropertyStateFileUploadStorage {
|
|
1462
|
-
originalAssetKey
|
|
1463
|
-
backgroundRemovedAssetKey
|
|
1464
|
-
useOriginalAsset
|
|
1465
|
-
colors {
|
|
1466
|
-
key
|
|
1467
|
-
browserValue
|
|
1468
|
-
pmsValue
|
|
1469
|
-
}
|
|
1470
|
-
}
|
|
1471
|
-
}
|
|
1472
|
-
}
|
|
1473
|
-
`,El=f.gql`
|
|
1474
|
-
${Ke}
|
|
1475
|
-
mutation CreateGlobalPropertyState($bundleId: String!) {
|
|
1476
|
-
globalPropertyStateCreate(bundleId: $bundleId) {
|
|
1477
|
-
id
|
|
1478
|
-
aspects {
|
|
1479
|
-
...GlobalPropertyStateAspectFields
|
|
1480
|
-
}
|
|
1481
|
-
}
|
|
1482
|
-
}
|
|
1483
|
-
`,bl=f.gql`
|
|
1484
|
-
${Ke}
|
|
1485
|
-
mutation UpdateGlobalPropertyState($id: String!, $aspects: [GlobalPropertyStateAspectInput]!) {
|
|
1486
|
-
globalPropertyStateUpdate(id: $id, aspects: $aspects) {
|
|
1487
|
-
id
|
|
1488
|
-
aspects {
|
|
1489
|
-
...GlobalPropertyStateAspectFields
|
|
1490
|
-
}
|
|
1491
|
-
}
|
|
1492
|
-
}
|
|
1493
|
-
`,Il=f.gql`
|
|
1494
|
-
${Ke}
|
|
1495
|
-
query GetGlobalPropertyState($bundleId: String!) {
|
|
1496
|
-
globalPropertyState(bundleId: $bundleId) {
|
|
1497
|
-
id
|
|
1498
|
-
aspects {
|
|
1499
|
-
...GlobalPropertyStateAspectFields
|
|
1500
|
-
}
|
|
1501
|
-
}
|
|
1502
|
-
}
|
|
1503
|
-
`,Bl=async i=>(await y.getShadowGraphqlClient().query({query:Il,fetchPolicy:"cache-first",errorPolicy:"all",variables:{bundleId:i}})).data.globalPropertyState,Pl=i=>f.gql`
|
|
1504
|
-
${je}
|
|
1505
|
-
fragment ProductFields on Product {
|
|
1506
|
-
id
|
|
1507
|
-
basePrice
|
|
1508
|
-
enabled
|
|
1509
|
-
imageUrl
|
|
1510
|
-
minimumOrderQuantity
|
|
1511
|
-
integrationProducts {
|
|
1512
|
-
id
|
|
1513
|
-
externalProductId
|
|
1514
|
-
externalVariantId
|
|
1515
|
-
additionalExternalProductId
|
|
1516
|
-
additionalExternalVariantId
|
|
1517
|
-
additionalIntegrationProduct {
|
|
1518
|
-
...AdditionalIntegrationProductFields
|
|
1519
|
-
}
|
|
1520
|
-
integration {
|
|
1521
|
-
id
|
|
1522
|
-
enabled
|
|
1523
|
-
externalIntegrationId
|
|
1524
|
-
type
|
|
1525
|
-
isCurrent
|
|
1526
|
-
}
|
|
1527
|
-
}
|
|
1528
|
-
modelUrl
|
|
1529
|
-
name
|
|
1530
|
-
description
|
|
1531
|
-
overlayImageUrl
|
|
1532
|
-
preloadImageUrl
|
|
1533
|
-
sku
|
|
1534
|
-
skuCode
|
|
1535
|
-
workflows${i?"(filters: $productWorkflowFilters)":""} {
|
|
1536
|
-
id
|
|
1537
|
-
index
|
|
1538
|
-
friendlyName
|
|
1539
|
-
isPresent
|
|
1540
|
-
workflowName
|
|
1541
|
-
imageUrl
|
|
1542
|
-
}
|
|
1543
|
-
productTags {
|
|
1544
|
-
id
|
|
1545
|
-
name
|
|
1546
|
-
}
|
|
1547
|
-
}
|
|
1548
|
-
`,Ka=i=>f.gql`
|
|
1549
|
-
${Pl(i)}
|
|
1550
|
-
fragment ProductCollectionProductFields on ProductCollectionProduct {
|
|
1551
|
-
id
|
|
1552
|
-
productId
|
|
1553
|
-
workflowId
|
|
1554
|
-
product {
|
|
1555
|
-
...ProductFields
|
|
1556
|
-
}
|
|
1557
|
-
}
|
|
1558
|
-
`,Xe=(i,t=!1)=>f.gql`
|
|
1559
|
-
${i?Ka(t):""}
|
|
1560
|
-
fragment ProductCollectionFields on ProductCollection {
|
|
1561
|
-
id
|
|
1562
|
-
name
|
|
1563
|
-
description
|
|
1564
|
-
dispatchStartDate
|
|
1565
|
-
dispatchEndDate
|
|
1566
|
-
total
|
|
1567
|
-
productCollectionCustomers {
|
|
1568
|
-
id
|
|
1569
|
-
customer {
|
|
1570
|
-
id
|
|
1571
|
-
}
|
|
1572
|
-
}
|
|
1573
|
-
image {
|
|
1574
|
-
key
|
|
1575
|
-
name
|
|
1576
|
-
fileLink
|
|
1577
|
-
}
|
|
1578
|
-
globalPropertyConfiguration {
|
|
1579
|
-
id
|
|
1580
|
-
aspects {
|
|
1581
|
-
name
|
|
1582
|
-
type
|
|
1583
|
-
title
|
|
1584
|
-
description
|
|
1585
|
-
entityId
|
|
1586
|
-
mandatory
|
|
1587
|
-
silent
|
|
1588
|
-
conditions {
|
|
1589
|
-
targetAspectName
|
|
1590
|
-
action
|
|
1591
|
-
requiredVariantSelections
|
|
1592
|
-
}
|
|
1593
|
-
conditionMode
|
|
1594
|
-
data {
|
|
1595
|
-
fileUpload {
|
|
1596
|
-
colorPickerEnabled
|
|
1597
|
-
pmsPickerEnabled
|
|
1598
|
-
colorOptionId
|
|
1599
|
-
}
|
|
1600
|
-
text {
|
|
1601
|
-
templatingEnabled
|
|
1602
|
-
}
|
|
1603
|
-
}
|
|
1604
|
-
}
|
|
1605
|
-
}
|
|
1606
|
-
${i?"productCollectionProducts { ...ProductCollectionProductFields }":""}
|
|
1607
|
-
}
|
|
1608
|
-
`,Bi=f.gql`
|
|
1609
|
-
fragment BundleBaseFields on Bundle {
|
|
1610
|
-
id
|
|
1611
|
-
dispatchDate
|
|
1612
|
-
purchaseOrder
|
|
1613
|
-
createdAt
|
|
1614
|
-
updatedAt
|
|
1615
|
-
name
|
|
1616
|
-
completed
|
|
1617
|
-
template
|
|
1618
|
-
templateLocked
|
|
1619
|
-
templateStatus
|
|
1620
|
-
transactionsCount
|
|
1621
|
-
productsCount
|
|
1622
|
-
totalPriceSubunits
|
|
1623
|
-
quoteId
|
|
1624
|
-
orderId
|
|
1625
|
-
externalOrderId
|
|
1626
|
-
internalOrderId
|
|
1627
|
-
workflowViewerLink
|
|
1628
|
-
workflowViewerAmendLink
|
|
1629
|
-
}
|
|
1630
|
-
`,xl=i=>f.gql`
|
|
1631
|
-
${Ke}
|
|
1632
|
-
${Xe(i)}
|
|
1633
|
-
${Bi}
|
|
1634
|
-
query GetBundle($id: String!) {
|
|
1635
|
-
globalPropertyState(bundleId: $id) {
|
|
1636
|
-
id
|
|
1637
|
-
aspects {
|
|
1638
|
-
...GlobalPropertyStateAspectFields
|
|
1639
|
-
}
|
|
1640
|
-
}
|
|
1641
|
-
bundles(ids: [$id]) {
|
|
1642
|
-
...BundleBaseFields
|
|
1643
|
-
bundleStateData
|
|
1644
|
-
metadata {
|
|
1645
|
-
key
|
|
1646
|
-
value
|
|
1647
|
-
}
|
|
1648
|
-
partner {
|
|
1649
|
-
id
|
|
1650
|
-
}
|
|
1651
|
-
productCollection {
|
|
1652
|
-
...ProductCollectionFields
|
|
1653
|
-
}
|
|
1654
|
-
transactionIds
|
|
1655
|
-
bundleShareActions {
|
|
1656
|
-
id
|
|
1657
|
-
title
|
|
1658
|
-
type
|
|
1659
|
-
stakeholderType
|
|
1660
|
-
precedence
|
|
1661
|
-
url
|
|
1662
|
-
}
|
|
1663
|
-
}
|
|
1664
|
-
}
|
|
1665
|
-
`,Sn=f.gql`
|
|
1666
|
-
query GetBundleStakeholders($id: String!) {
|
|
1667
|
-
bundles(ids: [$id]) {
|
|
1668
|
-
id
|
|
1669
|
-
dispatchDate
|
|
1670
|
-
purchaseOrder
|
|
1671
|
-
completed
|
|
1672
|
-
workflowViewerLink
|
|
1673
|
-
workflowViewerAmendLink
|
|
1674
|
-
currentBundleStakeholder {
|
|
1675
|
-
id
|
|
1676
|
-
authorizationStatus
|
|
1677
|
-
authorizationDate
|
|
1678
|
-
authorizationNote
|
|
1679
|
-
customer {
|
|
1680
|
-
id
|
|
1681
|
-
emailAddress
|
|
1682
|
-
firstName
|
|
1683
|
-
lastName
|
|
1684
|
-
phoneNumber
|
|
1685
|
-
partner {
|
|
1686
|
-
id
|
|
1687
|
-
}
|
|
1688
|
-
}
|
|
1689
|
-
type
|
|
1690
|
-
}
|
|
1691
|
-
bundleStakeholders {
|
|
1692
|
-
id
|
|
1693
|
-
authorizationStatus
|
|
1694
|
-
authorizationDate
|
|
1695
|
-
authorizationNote
|
|
1696
|
-
customer {
|
|
1697
|
-
id
|
|
1698
|
-
emailAddress
|
|
1699
|
-
firstName
|
|
1700
|
-
lastName
|
|
1701
|
-
phoneNumber
|
|
1702
|
-
partner {
|
|
1703
|
-
id
|
|
1704
|
-
}
|
|
1705
|
-
}
|
|
1706
|
-
type
|
|
1707
|
-
}
|
|
1708
|
-
}
|
|
1709
|
-
}
|
|
1710
|
-
`,Fl=f.gql`
|
|
1711
|
-
query GetBundlesForCustomer($id: String!) {
|
|
1712
|
-
customers(ids: [$id]) {
|
|
1713
|
-
bundleStakeholders {
|
|
1714
|
-
id
|
|
1715
|
-
authorizationStatus
|
|
1716
|
-
authorizationDate
|
|
1717
|
-
authorizationNote
|
|
1718
|
-
type
|
|
1719
|
-
bundle {
|
|
1720
|
-
id
|
|
1721
|
-
dispatchDate
|
|
1722
|
-
purchaseOrder
|
|
1723
|
-
completed
|
|
1724
|
-
workflowViewerLink
|
|
1725
|
-
workflowViewerAmendLink
|
|
1726
|
-
name
|
|
1727
|
-
createdAt
|
|
1728
|
-
metadata {
|
|
1729
|
-
key
|
|
1730
|
-
value
|
|
1731
|
-
}
|
|
1732
|
-
partner {
|
|
1733
|
-
id
|
|
1734
|
-
}
|
|
1735
|
-
}
|
|
1736
|
-
}
|
|
1737
|
-
}
|
|
1738
|
-
}
|
|
1739
|
-
`,Dl=f.gql`
|
|
1740
|
-
${Ka(!1)}
|
|
1741
|
-
query GetProductCollectionProducts($id: String!, $productIds: [String!]) {
|
|
1742
|
-
productCollections(ids: [$id], productIds: $productIds) {
|
|
1743
|
-
id
|
|
1744
|
-
productCollectionProducts {
|
|
1745
|
-
...ProductCollectionProductFields
|
|
1746
|
-
}
|
|
1747
|
-
}
|
|
1748
|
-
}
|
|
1749
|
-
`,kl=f.gql`
|
|
1750
|
-
query GetProductCollectionForFilteredProducts(
|
|
1751
|
-
$id: String!
|
|
1752
|
-
$filters: ProductCollectionProductFilterInput
|
|
1753
|
-
$tags: ProductCollectionProductTagFilterInput
|
|
1754
|
-
$sortKey: ProductCollectionProductSortKey
|
|
1755
|
-
$sortDescending: Boolean
|
|
1756
|
-
) {
|
|
1757
|
-
productCollections(ids: [$id]) {
|
|
1758
|
-
id
|
|
1759
|
-
productCollectionProducts(
|
|
1760
|
-
filters: $filters
|
|
1761
|
-
tags: $tags
|
|
1762
|
-
sortKey: $sortKey
|
|
1763
|
-
sortDescending: $sortDescending
|
|
1764
|
-
) {
|
|
1765
|
-
id
|
|
1766
|
-
product {
|
|
1767
|
-
id
|
|
1768
|
-
}
|
|
1769
|
-
}
|
|
1770
|
-
}
|
|
1771
|
-
}
|
|
1772
|
-
`,Ml=f.gql`
|
|
1773
|
-
${Ka(!0)}
|
|
1774
|
-
query GetProductCollectionForProductsFeed(
|
|
1775
|
-
$id: String!
|
|
1776
|
-
$limit: Int
|
|
1777
|
-
$offset: Int
|
|
1778
|
-
$productFilters: ProductCollectionProductFilterInput
|
|
1779
|
-
$productWorkflowFilters: MetafieldFilterListInput
|
|
1780
|
-
$tags: ProductCollectionProductTagFilterInput
|
|
1781
|
-
$sortKey: ProductCollectionProductSortKey
|
|
1782
|
-
$sortDescending: Boolean
|
|
1783
|
-
$quickSearch: String
|
|
1784
|
-
) {
|
|
1785
|
-
productCollections(ids: [$id]) {
|
|
1786
|
-
id
|
|
1787
|
-
productCollectionProductsFeed(
|
|
1788
|
-
filters: $productFilters
|
|
1789
|
-
workflowFilters: $productWorkflowFilters
|
|
1790
|
-
tags: $tags
|
|
1791
|
-
limit: $limit
|
|
1792
|
-
offset: $offset
|
|
1793
|
-
sortKey: $sortKey
|
|
1794
|
-
sortDescending: $sortDescending
|
|
1795
|
-
quickSearch: $quickSearch
|
|
1796
|
-
) {
|
|
1797
|
-
items {
|
|
1798
|
-
...ProductCollectionProductFields
|
|
1799
|
-
}
|
|
1800
|
-
total
|
|
1801
|
-
}
|
|
1802
|
-
}
|
|
1803
|
-
}
|
|
1804
|
-
`,Tl=i=>f.gql`
|
|
1805
|
-
${Xe(i)}
|
|
1806
|
-
mutation CreateBundle(
|
|
1807
|
-
$collectionId: String
|
|
1808
|
-
$initialMetadata: [MetadataInput!]
|
|
1809
|
-
$marketplaceThemeInstallId: String
|
|
1810
|
-
$marketplaceThemeInstallConfigurationId: String
|
|
1811
|
-
) {
|
|
1812
|
-
bundleCreate(
|
|
1813
|
-
collectionId: $collectionId
|
|
1814
|
-
metadata: $initialMetadata
|
|
1815
|
-
marketplaceThemeInstallId: $marketplaceThemeInstallId
|
|
1816
|
-
marketplaceThemeInstallConfigurationId: $marketplaceThemeInstallConfigurationId
|
|
1817
|
-
) {
|
|
1818
|
-
id
|
|
1819
|
-
bundleOwnerId
|
|
1820
|
-
metadata {
|
|
1821
|
-
key
|
|
1822
|
-
value
|
|
1823
|
-
}
|
|
1824
|
-
name
|
|
1825
|
-
partner {
|
|
1826
|
-
id
|
|
1827
|
-
}
|
|
1828
|
-
productCollection {
|
|
1829
|
-
...ProductCollectionFields
|
|
1830
|
-
}
|
|
1831
|
-
}
|
|
1832
|
-
}
|
|
1833
|
-
`,Nl=()=>f.gql`
|
|
1834
|
-
mutation DuplicateBundle(
|
|
1835
|
-
$id: String!
|
|
1836
|
-
$template: Boolean
|
|
1837
|
-
$marketplaceThemeInstallId: String
|
|
1838
|
-
$marketplaceThemeInstallConfigurationId: String
|
|
1839
|
-
$duplicateTransactions: Boolean
|
|
1840
|
-
) {
|
|
1841
|
-
bundleDuplicate(
|
|
1842
|
-
id: $id
|
|
1843
|
-
template: $template
|
|
1844
|
-
marketplaceThemeInstallId: $marketplaceThemeInstallId
|
|
1845
|
-
marketplaceThemeInstallConfigurationId: $marketplaceThemeInstallConfigurationId
|
|
1846
|
-
duplicateTransactions: $duplicateTransactions
|
|
1847
|
-
) {
|
|
1848
|
-
id
|
|
1849
|
-
bundleOwnerId
|
|
1850
|
-
partner {
|
|
1851
|
-
id
|
|
1852
|
-
}
|
|
1853
|
-
}
|
|
1854
|
-
}
|
|
1855
|
-
`,Se=f.gql`
|
|
1856
|
-
mutation UpdateBundle(
|
|
1857
|
-
$id: String!
|
|
1858
|
-
$name: String
|
|
1859
|
-
$metadata: [MetadataInput!]
|
|
1860
|
-
$bundleStateData: String
|
|
1861
|
-
$dispatchDate: String
|
|
1862
|
-
$purchaseOrder: String
|
|
1863
|
-
) {
|
|
1864
|
-
bundleUpdate(
|
|
1865
|
-
id: $id
|
|
1866
|
-
name: $name
|
|
1867
|
-
metadata: $metadata
|
|
1868
|
-
bundleStateData: $bundleStateData
|
|
1869
|
-
dispatchDate: $dispatchDate
|
|
1870
|
-
purchaseOrder: $purchaseOrder
|
|
1871
|
-
) {
|
|
1872
|
-
id
|
|
1873
|
-
}
|
|
1874
|
-
}
|
|
1875
|
-
`,Ql=f.gql`
|
|
1876
|
-
mutation BundleAddTransaction($id: String!, $transactionId: String!) {
|
|
1877
|
-
bundleAddTransaction(id: $id, transactionId: $transactionId) {
|
|
1878
|
-
id
|
|
1879
|
-
}
|
|
1880
|
-
}
|
|
1881
|
-
`,Ol=f.gql`
|
|
1882
|
-
mutation BundleAddTransactions($id: String!, $transactionIds: [String!]!, $transactionOwnerIds: [String!]) {
|
|
1883
|
-
bundleAddTransactions(id: $id, transactionIds: $transactionIds, transactionOwnerIds: $transactionOwnerIds) {
|
|
1884
|
-
id
|
|
1885
|
-
}
|
|
1886
|
-
}
|
|
1887
|
-
`,Rl=f.gql`
|
|
1888
|
-
mutation BundleRemoveTransaction(
|
|
1889
|
-
$id: String!
|
|
1890
|
-
$transactionId: String!
|
|
1891
|
-
$name: String
|
|
1892
|
-
$metadata: [MetadataInput!]
|
|
1893
|
-
$bundleStateData: String
|
|
1894
|
-
) {
|
|
1895
|
-
bundleRemoveTransaction(id: $id, transactionId: $transactionId) {
|
|
1896
|
-
id
|
|
1897
|
-
}
|
|
1898
|
-
bundleUpdate(id: $id, name: $name, metadata: $metadata, bundleStateData: $bundleStateData) {
|
|
1899
|
-
id
|
|
1900
|
-
}
|
|
1901
|
-
}
|
|
1902
|
-
`,$l=f.gql`
|
|
1903
|
-
mutation BundleRemoveTransactions(
|
|
1904
|
-
$id: String!
|
|
1905
|
-
$transactionIds: [String!]!
|
|
1906
|
-
$name: String
|
|
1907
|
-
$metadata: [MetadataInput!]
|
|
1908
|
-
$bundleStateData: String
|
|
1909
|
-
) {
|
|
1910
|
-
bundleRemoveTransactions(id: $id, transactionIds: $transactionIds) {
|
|
1911
|
-
id
|
|
1912
|
-
}
|
|
1913
|
-
bundleUpdate(id: $id, name: $name, metadata: $metadata, bundleStateData: $bundleStateData) {
|
|
1914
|
-
id
|
|
1915
|
-
}
|
|
1916
|
-
}
|
|
1917
|
-
`,Ul=f.gql`
|
|
1918
|
-
mutation BundleAddStakeholder($id: String!, $details: CustomerDetailsInput!, $type: String!) {
|
|
1919
|
-
bundleAddStakeholder(id: $id, details: $details, type: $type) {
|
|
1920
|
-
id
|
|
1921
|
-
bundleStakeholders {
|
|
1922
|
-
id
|
|
1923
|
-
customer {
|
|
1924
|
-
id
|
|
1925
|
-
emailAddress
|
|
1926
|
-
firstName
|
|
1927
|
-
lastName
|
|
1928
|
-
phoneNumber
|
|
1929
|
-
partner {
|
|
1930
|
-
id
|
|
1931
|
-
}
|
|
1932
|
-
}
|
|
1933
|
-
type
|
|
1934
|
-
}
|
|
1935
|
-
}
|
|
1936
|
-
}
|
|
1937
|
-
`,Vl=f.gql`
|
|
1938
|
-
mutation BundleAddStakeholder($id: String!, $emailAddress: String!) {
|
|
1939
|
-
bundleRemoveStakeholder(id: $id, emailAddress: $emailAddress) {
|
|
1940
|
-
id
|
|
1941
|
-
}
|
|
1942
|
-
}
|
|
1943
|
-
`,Ll=f.gql`
|
|
1944
|
-
mutation BundleUpdateStakeholders($id: String!, $input: [BundleStakeholderInput!]!) {
|
|
1945
|
-
bundleUpdateStakeholders(id: $id, input: $input) {
|
|
1946
|
-
id
|
|
1947
|
-
bundleStakeholders {
|
|
1948
|
-
id
|
|
1949
|
-
customer {
|
|
1950
|
-
id
|
|
1951
|
-
emailAddress
|
|
1952
|
-
firstName
|
|
1953
|
-
lastName
|
|
1954
|
-
phoneNumber
|
|
1955
|
-
partner {
|
|
1956
|
-
id
|
|
1957
|
-
}
|
|
1958
|
-
}
|
|
1959
|
-
type
|
|
1960
|
-
}
|
|
1961
|
-
}
|
|
1962
|
-
}
|
|
1963
|
-
`,zl=f.gql`
|
|
1964
|
-
mutation BundleUpdateTransactionOrder($id: String!, $transactionIds: [String!]!) {
|
|
1965
|
-
bundleUpdateTransactionOrder(id: $id, transactionIds: $transactionIds) {
|
|
1966
|
-
id
|
|
1967
|
-
}
|
|
1968
|
-
}
|
|
1969
|
-
`,ql=i=>f.gql`
|
|
1970
|
-
${Xe(i)}
|
|
1971
|
-
mutation BundleAssignProductCollection($id: String!, $productCollectionId: String!) {
|
|
1972
|
-
bundleAssignProductCollection(id: $id, collectionId: $productCollectionId) {
|
|
1973
|
-
id
|
|
1974
|
-
productCollection {
|
|
1975
|
-
...ProductCollectionFields
|
|
1976
|
-
}
|
|
1977
|
-
}
|
|
1978
|
-
}
|
|
1979
|
-
`,Gl=f.gql`
|
|
1980
|
-
mutation AssignGlobalPropertyConfiguration($bundleId: String!, $globalPropertyConfigurationId: String!) {
|
|
1981
|
-
bundleUpdate(id: $bundleId, globalPropertyConfigurationId: $globalPropertyConfigurationId) {
|
|
1982
|
-
id
|
|
1983
|
-
}
|
|
1984
|
-
}
|
|
1985
|
-
`,jl=i=>f.gql`
|
|
1986
|
-
${Bi}
|
|
1987
|
-
query CustomerBundlesFeed($id: String!, $limit: Int!, $offset: Int!, $template: Boolean, $templateStatus: BundleTemplateStatus, $ordered: Boolean) {
|
|
1988
|
-
customerBundlesFeed(id: $id, limit: $limit, offset: $offset, template: $template, templateStatus: $templateStatus, ordered: $ordered) {
|
|
1989
|
-
items {
|
|
1990
|
-
...BundleBaseFields
|
|
1991
|
-
productCollection {
|
|
1992
|
-
id
|
|
1993
|
-
name
|
|
1994
|
-
description
|
|
1995
|
-
dispatchStartDate
|
|
1996
|
-
dispatchEndDate
|
|
1997
|
-
image {
|
|
1998
|
-
key
|
|
1999
|
-
name
|
|
2000
|
-
fileLink
|
|
2001
|
-
}
|
|
2002
|
-
globalPropertyConfiguration {
|
|
2003
|
-
id
|
|
2004
|
-
}
|
|
2005
|
-
}
|
|
2006
|
-
${i?"metadata { key, value }":""}
|
|
2007
|
-
}
|
|
2008
|
-
total
|
|
2009
|
-
}
|
|
2010
|
-
}
|
|
2011
|
-
`,Wl=f.gql`
|
|
2012
|
-
mutation FinalizeUpdateBundle($bundleId: String!) {
|
|
2013
|
-
bundleFinalizeUpdate(bundleId: $bundleId)
|
|
2014
|
-
}
|
|
2015
|
-
`,Hl=f.gql`
|
|
2016
|
-
mutation ApproveBundle($id: String!, $note: String, $stakeholderId: String) {
|
|
2017
|
-
bundleApprove(id: $id, note: $note, stakeholderId: $stakeholderId)
|
|
2018
|
-
}
|
|
2019
|
-
`,Yl=f.gql`
|
|
2020
|
-
mutation RejectBundle($id: String!, $note: String, $stakeholderId: String) {
|
|
2021
|
-
bundleReject(id: $id, note: $note, stakeholderId: $stakeholderId)
|
|
2022
|
-
}
|
|
2023
|
-
`,Jl=f.gql`
|
|
2024
|
-
mutation ApproveTransaction($id: String!, $note: String) {
|
|
2025
|
-
transactionApprove(id: $id, note: $note)
|
|
2026
|
-
}
|
|
2027
|
-
`,Kl=f.gql`
|
|
2028
|
-
mutation RejectTransaction($id: String!, $note: String) {
|
|
2029
|
-
transactionReject(id: $id, note: $note)
|
|
2030
|
-
}
|
|
2031
|
-
`,Xl=f.gql`
|
|
2032
|
-
mutation CreateRecipient(
|
|
2033
|
-
$firstName: String
|
|
2034
|
-
$lastName: String
|
|
2035
|
-
$address: String
|
|
2036
|
-
$suburb: String
|
|
2037
|
-
$state: String
|
|
2038
|
-
$email: String
|
|
2039
|
-
$postalCode: String
|
|
2040
|
-
$country: String
|
|
2041
|
-
$mobile: String
|
|
2042
|
-
$company: String
|
|
2043
|
-
$apartment: String
|
|
2044
|
-
$customField1: String
|
|
2045
|
-
$customField2: String
|
|
2046
|
-
$customField3: String
|
|
2047
|
-
$customField4: String
|
|
2048
|
-
$customField5: String
|
|
2049
|
-
$conversionConfigurationId: String
|
|
2050
|
-
) {
|
|
2051
|
-
recipientCreate(
|
|
2052
|
-
firstName: $firstName
|
|
2053
|
-
lastName: $lastName
|
|
2054
|
-
address: $address
|
|
2055
|
-
suburb: $suburb
|
|
2056
|
-
state: $state
|
|
2057
|
-
email: $email
|
|
2058
|
-
postalCode: $postalCode
|
|
2059
|
-
country: $country
|
|
2060
|
-
mobile: $mobile
|
|
2061
|
-
company: $company
|
|
2062
|
-
apartment: $apartment
|
|
2063
|
-
customField1: $customField1
|
|
2064
|
-
customField2: $customField2
|
|
2065
|
-
customField3: $customField3
|
|
2066
|
-
customField4: $customField4
|
|
2067
|
-
customField5: $customField5
|
|
2068
|
-
conversionConfigurationId: $conversionConfigurationId
|
|
2069
|
-
) {
|
|
2070
|
-
id
|
|
2071
|
-
}
|
|
2072
|
-
}
|
|
2073
|
-
`,Zl=f.gql`
|
|
2074
|
-
mutation UpdateRecipient(
|
|
2075
|
-
$id: String!
|
|
2076
|
-
$firstName: String
|
|
2077
|
-
$lastName: String
|
|
2078
|
-
$address: String
|
|
2079
|
-
$suburb: String
|
|
2080
|
-
$state: String
|
|
2081
|
-
$email: String
|
|
2082
|
-
$postalCode: String
|
|
2083
|
-
$country: String
|
|
2084
|
-
$mobile: String
|
|
2085
|
-
$company: String
|
|
2086
|
-
$apartment: String
|
|
2087
|
-
$customField1: String
|
|
2088
|
-
$customField2: String
|
|
2089
|
-
$customField3: String
|
|
2090
|
-
$customField4: String
|
|
2091
|
-
$customField5: String
|
|
2092
|
-
$conversionConfigurationId: String
|
|
2093
|
-
$prevalidated: Boolean
|
|
2094
|
-
) {
|
|
2095
|
-
recipientUpdate(
|
|
2096
|
-
id: $id
|
|
2097
|
-
firstName: $firstName
|
|
2098
|
-
lastName: $lastName
|
|
2099
|
-
address: $address
|
|
2100
|
-
suburb: $suburb
|
|
2101
|
-
state: $state
|
|
2102
|
-
email: $email
|
|
2103
|
-
postalCode: $postalCode
|
|
2104
|
-
country: $country
|
|
2105
|
-
mobile: $mobile
|
|
2106
|
-
company: $company
|
|
2107
|
-
apartment: $apartment
|
|
2108
|
-
customField1: $customField1
|
|
2109
|
-
customField2: $customField2
|
|
2110
|
-
customField3: $customField3
|
|
2111
|
-
customField4: $customField4
|
|
2112
|
-
customField5: $customField5
|
|
2113
|
-
conversionConfigurationId: $conversionConfigurationId
|
|
2114
|
-
prevalidated: $prevalidated
|
|
2115
|
-
) {
|
|
2116
|
-
id
|
|
2117
|
-
}
|
|
2118
|
-
}
|
|
2119
|
-
`,_l=f.gql`
|
|
2120
|
-
mutation AtttachRecipient($id: String!, $recipientId: String!) {
|
|
2121
|
-
transactionAttachRecipient(id: $id, recipientId: $recipientId) {
|
|
2122
|
-
id
|
|
2123
|
-
}
|
|
2124
|
-
}
|
|
2125
|
-
`,tc=f.gql`
|
|
2126
|
-
mutation DeleteBundle($id: String!) {
|
|
2127
|
-
bundleDelete(id: $id)
|
|
2128
|
-
}
|
|
2129
|
-
`,ec=f.gql`
|
|
2130
|
-
query FindBundleForTransactions($ids: [String!]!) {
|
|
2131
|
-
transactions(ids: $ids) {
|
|
2132
|
-
id
|
|
2133
|
-
bundle {
|
|
2134
|
-
id
|
|
2135
|
-
}
|
|
2136
|
-
}
|
|
2137
|
-
}
|
|
2138
|
-
`,ac=(i,t)=>t&&typeof t=="object"&&!Array.isArray(t)?Object.keys(t).sort().reduce((e,a)=>(e[a]=t[a],e),{}):t,nc=i=>{for(const t of Object.values(i.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 Pi(i,"__typename"),i},Pi=(i,t)=>{if(!(typeof i!="object"||i===null))for(const e in i)e===t?delete i[e]:Pi(i[e],t)};var ge=(i=>(i.Error="Error",i.Warning="Warning",i.Info="Info",i))(ge||{});const ic=1e3;class vn extends He{constructor(t){super(),this.update=t}async execute(){await this.update(),await new Promise(t=>{window.setTimeout(()=>{t()},ic)})}}const rc=i=>i.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})),sc=(i,t)=>{const e=i.workflowState,a=e?JSON.parse(e):void 0;return a?Object.values(a.layouts).map(n=>n.layout):rc(t.panels)},Zt=class Zt{constructor(t,e,a,n,r,s=!1,o,l=!1,c=!1,d=!1){this.workflowStatePromiseQueue=new Ye(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=sc(this.experience.getTransaction(),A):this.layouts=[],this.commandContext.initialize(this.layouts,this.reloadedState),this.renderableContextService=new pl(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=n,this.reloadedState=r,this.readOnly=s,this.singleVariantsRenderable=c,this.commandContext=new hi,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=o,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 n=a.uniqueIdentifier??a.title??"";a.type===Jt.FirstName?e[n]=t?.firstName:a.type===Jt.LastName?e[n]=t?.lastName:a.type===Jt.Custom&&(a.customFieldIndex===1?e[n]=t?.customField1:a.customFieldIndex===2?e[n]=t?.customField2:a.customFieldIndex===3?e[n]=t?.customField3:a.customFieldIndex===4?e[n]=t?.customField4:a.customFieldIndex===5&&(e[n]=t?.customField5),a.option&&(e[n]=a.option.variants?.find(r=>r.id===e[n])?.name))}),e}async updateRecipient(t,e,a,n,r,s,o,l,c,d,u,A,h,g,p,m,C,S){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:n??w.recipient.suburb,state:r??w.recipient.state,email:s??w.recipient.email,postalCode:o??w.recipient.postalCode,country:l??w.recipient.country,mobile:c??w.recipient.mobile,company:d??w.recipient.company,apartment:u??w.recipient.apartment,customField1:A??w.recipient.customField1,customField2:h??w.recipient.customField2,customField3:g??w.recipient.customField3,customField4:p??w.recipient.customField4,customField5:m??w.recipient.customField5,conversionConfigurationId:C||w.recipient.conversionConfigurationId},this.experience.callEvent(Ne.RecipientChanged),await this.graphQlClient().mutate({mutation:Zl,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:n||w.recipient.suburb,state:r||w.recipient.state,email:s||w.recipient.email,postalCode:o||w.recipient.postalCode,country:l||w.recipient.country,mobile:c||w.recipient.mobile,company:d||w.recipient.company,apartment:u||w.recipient.apartment,customField1:A||w.recipient.customField1,customField2:h||w.recipient.customField2,customField3:g||w.recipient.customField3,customField4:p||w.recipient.customField4,customField5:m||w.recipient.customField5,conversionConfigurationId:C||w.recipient.conversionConfigurationId,prevalidated:S}});else{const F=await this.graphQlClient().mutate({mutation:Xl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{firstName:t,lastName:e,address:a,suburb:n,state:r,email:s,postalCode:o,country:l,mobile:c,company:d,apartment:u,customField1:A,customField2:h,customField3:g,customField4:p,customField5:m,conversionConfigurationId:C}});w.recipient={id:F?.data?.recipientCreate?.id,firstName:t,lastName:e,address:a,suburb:n,state:r,email:s,postalCode:o,country:l,mobile:c,company:d,apartment:u,customField1:A,customField2:h,customField3:g,customField4:p,customField5:m,conversionConfigurationId:C},this.experience.callEvent(Ne.RecipientChanged),await this.graphQlClient().mutate({mutation:_l,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=Zt.configurationPromiseMap.get(t.conversionConfigurationId);if(e)this.recipientConversionConfiguration=await e;else{const n=(async()=>(await this.graphQlClient().query({query:Ms,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t.conversionConfigurationId}})).data.conversionConfiguration)();Zt.configurationPromiseMap.set(t.conversionConfigurationId,n),this.recipientConversionConfiguration=await n}}}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=await this.getInitialOptionIds(this.reloadedState?.serializableWorkflow?.steps.reduce((d,u)=>(u.selectedVariants?.length&&(d[u.stepName]={selectedVariants:u.selectedVariants.map(A=>({id:A.id}))}),d),{})),n=I.getOptions(Array.from(a)),r=this.fetchConversionConfiguration();await Promise.all([n,r]),this.allScenes=gn(t);const o=(await lt(this.allScenes,this.stepSelections)).map(d=>d.silentSteps).flat(),{stepElements:l,commands:c}=await this.stepElementsForIntroducedSilentSteps(o,!!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}async getInitialOptionIds(t){const e=new Set,a=this.experience.getWorkflow();if(!a)return e;const n=gn(a),r={...t};let s=-1;for(;;){const c=(await lt(n,r)).flatMap(d=>d.renderableSteps);if(c.length===s)break;s=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(await lt(n,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())}async getMandatoryUnfulfilledSteps(){return(await lt(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 n=!1;if(!this.validationErrors.steps.has(t)&&a)n=!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)?(n=!0,r.set(e,a)):a||(n=!0,r.delete(e),r.size===0&&this.validationErrors.steps.delete(t))}n&&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 n=t.loadModel({model:a.modelUrl,contextService:this.getLayoutPreviewService()},{refocusCamera:e});this.setModelContainer(n),(await lt(this.allScenes,this.stepSelections)).filter(o=>o).map(o=>o.renderableSteps).flat().filter(o=>o.type===E.Model||o.type===E.Material).forEach(o=>{if(!o.option?.id){console.error(`Failed to read option id from step: ${o.stepName}`);return}const l=this.stepSelections[o.stepName]?.selectedVariants||[];if(l.length===0)return;const c=l[0];if(o.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: ${o.stepName}`);return}const u=o.data;this.modelContainer.applyModelVariant(o.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: ${o.stepName}`);return}o.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,o.option.id,d)})}}),await n.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 n=new Cn(this.constructSerializableWorkflow());this.commandContext.apply(n,!0),this.onStepSpecificStorageChange(t),this.onStorageChange()}}constructSerializableWorkflow(){const t=[];return this.allScenes.forEach(e=>{e.renderableSteps.forEach(a=>{const n={stepName:a.stepName};n.storage=this.storage[a.stepName],n.selectedVariants=this.stepSelections[a.stepName]?.selectedVariants?.map(r=>({id:r.id,priceModifier:r.priceModifier})),t.push(n)})}),{steps:t}}updateStateWithServer(){if(this.readOnly)return;const t=this.serialize();this.workflowStatePromiseQueue.enqueue(new vn(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 vn(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=Ct(t.transaction),a=nc(e);return JSON.stringify(a,ac,void 0)}async getStateHash(){const t=this.getCommandContext().getState(),a=Object.values(t?.transaction.layouts||{}).map(s=>s.modificationID??"").sort().join(""),r=new TextEncoder().encode(a);if(typeof window<"u"&&window.crypto&&window.crypto.subtle&&window.crypto.subtle.digest){const s=await window.crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(s)).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,n)=>Object.keys(a).reduce((r,s)=>{const o=[...a[s]||[]];return n.forEach(l=>{const c=o.findIndex(d=>d.id===l.id);c>-1&&o.splice(c,1)}),r[s]=o,r},{});this.stepElements=e(this.stepElements,t)}async getInvalidCanvasRegions(){let t=[];for(const e of this.experience.getWorkflow()?.steps||[])if(!await pt(e,this.stepSelections)&&this.stepElements[e.stepName])for(const a of this.stepElements[e.stepName])t.push(a);return t}async getInvalidModelVariants(){let t=[];for(const e of this.experience.getWorkflow()?.steps||[])e.type===E.Model&&!await pt(e,this.stepSelections)&&t.push(e.stepName);return t}async stepElementsForIntroducedSilentSteps(t,e){const a=this.experience.getProduct();if(!a)return Promise.resolve({stepElements:{},commands:[]});const n=async(c,d,u)=>{if(c.type===E.SilentIllustration){const A=await new wn(c,d).trigger();return{step:c,results:A}}else if(c.type===E.ProductOverlay){const A=await new wn(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]),s={stepElements:{},commands:[]},o=[];for(const c of r)this.markStepsAsInitialised([c.stepName]),e||o.push(n(c,this.layouts,a));const l=await Promise.all(o);for(const c of l)s.stepElements[c.step.stepName]=c.results.map(d=>d.regionElement),s.commands=[...s.commands,...c.results.map(d=>d.command)];return s}getStepStorage(t){return this.storage[t]}getMetadata(t){return this.stepMetadata[t]}getWorkflowMetadata(){return this.stepMetadata}getStepTags(t){return this.stepTags[t]||[]}getSerializedStep(t,e){return e.find(a=>a.stepName===t)}async updateTransactionShareActions(){const t=await this.client.getShareActionsForTransaction(this.experience.getTransaction().id);this.experience.getTransaction().transactionShareActions=t}async updateTransactionStakeholders(){const t=await y.getShadowGraphqlClient().query({query:$s,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.experience.getTransaction().id}});!t?.data?.transactions||t.data.transactions.length!==1?(this.experience.getTransaction().currentStakeholder=void 0,this.experience.getTransaction().stakeholders=void 0):(this.experience.getTransaction().stakeholders=t.data.transactions[0].stakeholders,this.experience.getTransaction().currentStakeholder=t.data.transactions[0].currentStakeholder)}async approveTransaction(t){await y.getShadowGraphqlClient().mutate({mutation:Jl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.experience.getTransaction().id,note:t}})}async rejectTransaction(t){await y.getShadowGraphqlClient().mutate({mutation:Kl,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,n){const r=this.experience.getWorkflow();if(!r)throw new Error("Attempted to set selections when no workflow is set!");const s=this.stepSelections;this.stepSelections={...this.stepSelections,[t]:{selectedVariants:e}},this.selectionCost=Object.values(this.stepSelections).reduce((v,B)=>v+B.selectedVariants.map(M=>M.priceModifier||0).reduce((M,R)=>M+R,0),0);for(const v of r.steps)await pt(v,this.stepSelections)||(this.stepInitialised[v.stepName]=!1,delete this.stepMetadata[v.stepName],delete this.stepSelections[v.stepName],delete this.storage[v.stepName]);const o=this.allScenes,l=await lt(o,s),c=await lt(o,this.stepSelections),d=l.map(v=>v.silentSteps).flat(),A=c.map(v=>v.silentSteps).flat().filter(v=>!d.some(B=>B.stepName===v.stepName));for(const v of d)await pt(v,this.stepSelections)||(this.stepInitialised[v.stepName]=!1);const h=await 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(B=>B.id));const C=h.map(v=>new xt(v.id)),S=new Cn(this.constructSerializableWorkflow()),w=[...p,...C,S];w.length>0&&this.commandContext.apply(new U(w),!0),await this.ensureStepsAreLoaded(),this.onElementsChange();const F=await this.getInvalidModelVariants(),b=this.modelContainer;if(b){const v=F.map(B=>b.applyModelVariant(B,{contextService:this.getLayoutPreviewService()},!1));await Promise.all(v)}await this.onSelectionChange(),m?.type!==E.Frame&&m?.type!==E.Text&&this.setMandatoryFulfilled(t,!0),n&&await n()}async ensureStepsAreLoaded(){const e=(await lt(this.allScenes,this.stepSelections)).map(l=>l.renderableSteps),a=[],n=e.flat();for(const l of n)if(!this.stepInitialised[l.stepName])switch(this.stepInitialised[l.stepName]=!0,l.type){case E.DigitalContent:a.push(Ga.init(l,this,this.reloadedState));break;case E.Frame:a.push(gt.init(l,this,this.reloadedState));break;case E.Illustration:a.push(Kt.init(l,this,this.reloadedState));break;case E.Material:a.push(ja.init(l,this,this.reloadedState));break;case E.Model:a.push(Wa.init(l,this,this.reloadedState));break;case E.Module:this.stepSpecificServices[l.stepName]={module:await bi(l.data.module)},a.push(Ha.init(l,this,this.reloadedState));break;case E.Picture:a.push(Ya.init(l,this,this.reloadedState));break;case E.Question:a.push(Ja.init(l,this,this.reloadedState));break;case E.Shape:a.push(kt.init(l,this,this.reloadedState));break;case E.Text:a.push(H.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}),s=r.flatMap(l=>l?.command?[l.command]:[]),o=r.flatMap(l=>l?.followup?[l.followup]:[]);s&&s.length>0&&this.commandContext.apply(new U(s),!0);for(const l of o)await l();o.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 _s(this.allScenes,this.stepSelections,this.singleVariantsRenderable)}};Zt.configurationPromiseMap=new Map;let xa=Zt;class at{constructor(t){this.variantData=t}getType(){return this.variantData.asset?.type}getId(){return this.variantData.id}getName(){return this.variantData.name}getPriceFormatted(t,e){return this.variantData.priceModifier.toLocaleString(t||"en-US",{style:"currency",currency:"USD",...e})}getPrice(){return this.variantData.priceModifier}getAsset(){return this.variantData.asset?.fileLink}getAssetResource(){return this.variantData.asset}getThumbnail(t=256,e){const a=this.variantData.thumbnail;if(!(!a||!a.fileLink))return Ge(a,t,"webp",e)}getColor(){return this.variantData.color}isDefault(){return!!this.variantData.default}getResource(){return this.variantData}isEnabled(){return this.variantData.enabled}getCategory(){return this.variantData.category}}const _t=class _t{constructor(t,e,a){this.manager=t,this.step=e,this.tags=a}setUpdateState(t){_t.updateState.set(`${this.step.stepName}-${this.manager.getWorkflowExperience().getTransaction().id}`,t)}getUpdateState(){return!!_t.updateState.get(`${this.step.stepName}-${this.manager.getWorkflowExperience().getTransaction().id}`)}getCurrentVariant(){const a=this.manager.getWorkflowSelections()[this.step.stepName]?.selections[0];if(a)return new at(a)}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 at(e))||[];const t=await I.getOption(this.step.option?.id);if(!t)throw new Error("Option not found, cannot fetch variants.");return(t.variants||[]).map(e=>new at(e))||[]}getId(){return this.step.stepName}getName(){return this.step.stepTitle}getHelpText(){return this.step.helpText}getType(){return this.step.type}getRaw(){return this.step}getTags(){return this.tags}hasTag(t){return this.tags.includes(t)||!1}getMandatory(){return this.step.mandatory||!1}getOverrideGlobalPropertyConfiguration(t){return(this.manager.getStepStorage(this.step.stepName)?.overrideGlobalConfigurations??{})[t.toString()]??!1}setOverrideGlobalPropertyConfiguration(t,e){const a=this.manager.getStepStorage(this.step.stepName)?.overrideGlobalConfigurations??{};this.manager.updateStorage(this.step.stepName,{overrideGlobalConfigurations:{...a,[t.toString()]:e}})}getGlobalPropertyAspects(t){return this.step.globalPropertyAspectConfigurations?.filter(e=>e.globalPropertyConfigurationId===t&&e.aspectName).map(e=>e.aspectName)??[]}executeAnimations(t){const e=this.manager.getPreviewService(),a=this.manager.getModelContainer(),n=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?n&&a.executeAnimation(n,t):console.warn("No model container available, cannot execute model animations.")}};_t.updateState=new Map;let Z=_t;class xi extends Z{constructor(t,e,a){super(t,e,a)}async selectVariant(t){if(!this.getUpdateState()&&this.getCurrentVariant()!==t)return Kt.selectVariant(this.step,t.getResource(),this.manager.getRegionElements(this.step.stepName)||[],e=>this.setUpdateState(e),this.manager)}getColors(){const t=this.manager.getRegionElements(this.step.stepName)||[];if(t.length===0)return;const a=V(t[0].id,this.manager.getAllLayoutData()).colors,r=this.getCurrentVariant()?.getAssetResource()?.assetConfiguration,s=r?.defaultColorVariants||[];if(s.length!==0){const o={};return s.forEach(l=>{const c=r.channelNumbers.find(d=>d.number===l.channelNumber);if(c){const d=c.id.replace(/\W/g,"");o[l.channelNumber]={browserValue:a[d]?.browserValue||""}}}),o}try{return a}catch(o){console.error(o)}}setColor(t,e,a){const n=new Map,s=this.getCurrentVariant()?.getAssetResource()?.assetConfiguration;return(s?.defaultColorVariants||[]).length!==0?s.channelNumbers.forEach(l=>{if(l.number.toString()===t){const c=l.id.replace(/\W/g,"");a?n.set(c,{browserValue:e,pmsValue:a}):n.set(c,e)}}):a?n.set(t,{browserValue:e,pmsValue:a}):n.set(t,e),Kt.changeColors(this.step,this.manager.getRegionElements(this.step.stepName),this.manager,n)}async getColorOption(){return await I.ensureFullOption(this.step.data.colorOption)}getAvailableColors(){return this.step.data.colorPickerEnabled?Kt.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}isPMSPickerEnabled(){return this.step.data.pmsPickerEnabled??!1}isVariantSearchEnabled(){return this.step.data.enableVariantSearch??!1}isVariantCategoriesEnabled(){return this.step.data.enableVariantCategories??!1}}class Fi extends Z{constructor(t,e,a){super(t,e,a)}selectVariant(t){return ja.selectVariant(this.step,t.getResource(),this.manager,e=>this.setUpdateState(e))}isVariantCategoriesEnabled(){return this.step.data.enableVariantCategories??!1}}class Di 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))}isVariantCategoriesEnabled(){return this.step.data.enableVariantCategories??!1}}class ki 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))}isVariantSearchEnabled(){return this.step.data.enableVariantSearch??!1}isVariantCategoriesEnabled(){return this.step.data.enableVariantCategories??!1}}class Mi 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 Ja.selectVariant(this.step,t.getId(),this.manager)}async getDisplayType(){return this.step.data.displayType?this.step.data.displayType:(await I.getOptionForStep(this.step))?.displayType}}class Ti extends Z{constructor(t,e,a){super(t,e,a)}selectVariant(t){const e=t.getResource();return kt.selectVariant(this.step,{fill:e.color,stroke:e.color,variant:e},this.manager.getRegionElements(this.step.stepName)||[],this.manager)}setColor(t){return kt.selectVariant(this.step,t,this.manager.getRegionElements(this.step.stepName)||[],this.manager)}getColors(){return kt.availableColours(this.step)}setCustomColor(t){return this.getCurrentVariant()?.getColor()!=="#custom"&&console.warn(`setting custom color for step ${this.step.stepName} but color is ${this.getCurrentVariant()?.getColor()}`),kt.setCustomColor(t,this.step,this.manager)}getCustomColor(){this.getCurrentVariant()?.getColor()!=="#custom"&&console.warn(`setting custom color for step ${this.step.stepName} but color is ${this.getCurrentVariant()?.getColor()}`);const t=this.manager.getStepStorage(this.step.stepName)?.colour;if(!t)throw new Error(`Color not available on step ${this.step.stepName}. Set a default on the workflow to fix this.`);return t}isVariantCategoriesEnabled(){return this.step.data.enableVariantCategories??!1}}class Ni extends Z{constructor(t,e,a){super(t,e,a)}async selectVariant(t){await H.selectVariant(this.step,t.getResource(),this.manager,e=>{if(e)this.manager.setInformationResults([...this.manager.getInformationResults(),{message:e,messageType:ge.Error,stepID:this.step.stepName}]);else{const a=this.manager.getInformationResults().filter(n=>n.stepID!==this.step.stepName);this.manager.setInformationResults(a)}},()=>{})}async getAvailableFillColors(){return this.step.data.colorPickerEnabled?H.availableFillColors(this.step):[]}async setFillColor(t){const e=this.manager.getRegionElements(this.step.stepName);await H.changeFillColor(this.step,t,e,this.manager)}getFillColor(){return this.manager.getStepStorage(this.step.stepName)?.color||"#000000"}getAvailableFillImages(){return H.availableFillImages(this.step)}async setFillImage(t){const e=this.manager.getRegionElements(this.step.stepName);await H.changeFillImage(this.step,t,e,this.manager)}getFillImage(){return this.manager.getStepStorage(this.step.stepName)?.fillImage}getAlignment(){return H.findLayoutElements(this.manager,this.step)?.[0].align}setAlignment(t){const e=this.manager.getRegionElements(this.step.stepName);H.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,n=t?a:this.step.data.defaultText;return this.manager.updateStorage(this.step.stepName,{customiseAllText:t,text:n,defaultCleared:!1}),this.setText(n)}setText(t){const e={input:t,helperData:{}},a=H.findLayoutElements(this.manager,this.step),n=H.filterUnsupportedCharacters(t,a[0]?.fontData),r=Mt(n,this.manager).length,s=!!this.step.data&&!!this.step.data.maxLength&&r>this.step.data.maxLength;s||(e.input=n);const o=a.length<=0,l=o?{inputText:n,text:n}:{inputText:n};this.manager.updateStorage(this.step.stepName,l);const c=this.manager.getStepStorage(this.step.stepName),d=H.getProcessedInput(n,this.step.data,c?.customiseAllText??!1);if(o)s||this.manager.updateMetadata(this.step.stepName,{text:d});else{const{command:u,errorData:A,helperData:h}=H.updateInputText(n,a,this.step,this.manager);u&&this.manager.getCommandDispatcher()(u),e.helperData=h,e.errorData=A,!s&&!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=H.findLayoutElements(this.manager,this.step);return H.updateInputText("",a,this.step,this.manager),e}}hasColorPicker(){return this.step.data.colorPickerEnabled}getRegions(){return this.step.data.regions}getCharacterLimit(){return this.step.data.maxLength}getCharactersRemaining(){const t=this.step.data.maxLength;if(t===void 0)return;const e=Mt(this.getText(),this.manager);return t-e.length}setCustomColor(t){throw new Error("Custom color support is not yet available on text. Check back soon.")}getCustomColor(){throw new Error("Custom color support is not yet available on text. Check back soon.")}async getAvailableStrokeColors(){return this.step.data.strokeEnabled?H.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 H.changeStrokeColor(this.step,t,e,this.manager)}isVariantCategoriesEnabled(){return this.step.data.enableVariantCategories??!1}}class Qi extends Z{constructor(t,e,a){super(t,e,a)}async selectVariant(){}getContent(){return this.step.data.content}}class Oi 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 Ga.regenerateQRCode(this.manager.getRegionElements(this.step.stepName),t.key,this.manager,this.step)}}class Ri 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=Mt(this.getText(),this.manager);return t-e.length}getCharacterLimit(){return this.step.data.maxLength}getText(){return this.manager.getStepStorage(this.step.stepName)?.text||""}setText(t){Ha.changeText(this.step,t,this.manager,e=>{if(e){const a=[...this.manager.getInformationResults(),{message:e,messageType:ge.Error,stepID:this.step.stepName}];this.manager.setInformationResults(a)}else{const a=this.manager.getInformationResults().filter(n=>n.stepID!==this.step.stepName);this.manager.setInformationResults(a)}})}}class ve{static get(t,e){switch(e.type){case E.DigitalContent:return new Oi(t,e,t.getStepTags(e.stepName));case E.Information:return new Qi(t,e,t.getStepTags(e.stepName));case E.Question:return new Mi(t,e,t.getStepTags(e.stepName));case E.Text:return new Ni(t,e,t.getStepTags(e.stepName));case E.Illustration:return new xi(t,e,t.getStepTags(e.stepName));case E.Picture:return new ki(t,e,t.getStepTags(e.stepName));case E.Shape:return new Ti(t,e,t.getStepTags(e.stepName));case E.Material:return new Fi(t,e,t.getStepTags(e.stepName));case E.Model:return new Di(t,e,t.getStepTags(e.stepName));case E.Frame:return new nr(t,e,t.getStepTags(e.stepName));case E.Module:return new Ri(t,e,t.getStepTags(e.stepName));default:throw new O(`Step type ${e.type} not yet supported in Core SDK`)}}}const oc=f.gql`
|
|
2139
|
-
fragment CreateDesignTransaction on Transaction {
|
|
2140
|
-
id
|
|
2141
|
-
designName
|
|
2142
|
-
externalCartProductId
|
|
2143
|
-
externalCartProductVariantId
|
|
2144
|
-
externalDesignProductId
|
|
2145
|
-
externalDesignProductVariantId
|
|
2146
|
-
lastSyncedAt
|
|
2147
|
-
quantity
|
|
2148
|
-
previewImageLink
|
|
2149
|
-
priceModifierTotal
|
|
2150
|
-
workflowViewerLink
|
|
2151
|
-
workflowViewerReadOnlyLink
|
|
2152
|
-
integrationProduct {
|
|
2153
|
-
id
|
|
2154
|
-
additionalExternalProductId
|
|
2155
|
-
additionalExternalVariantId
|
|
2156
|
-
}
|
|
2157
|
-
designExternalVariants {
|
|
2158
|
-
id
|
|
2159
|
-
externalProductId
|
|
2160
|
-
externalProductVariantId
|
|
2161
|
-
}
|
|
2162
|
-
}
|
|
2163
|
-
`,lc=f.gql`
|
|
2164
|
-
${oc}
|
|
2165
|
-
mutation CreateDesigns($inputs: [DesignCreateInput]!) {
|
|
2166
|
-
designCreateMany(inputs: $inputs) {
|
|
2167
|
-
id
|
|
2168
|
-
sku
|
|
2169
|
-
transaction {
|
|
2170
|
-
...CreateDesignTransaction
|
|
2171
|
-
}
|
|
2172
|
-
processExecution {
|
|
2173
|
-
id
|
|
2174
|
-
}
|
|
2175
|
-
}
|
|
2176
|
-
}
|
|
2177
|
-
`;function Te(i){const t=JSON.parse(atob(i.split(".")[1])).exp;return Math.floor(new Date().getTime()/1e3)>=t}const cc=async(i,t)=>{const e={};try{if(t){const n=await t.loggedInBearerToken();e.Authorization=`Bearer ${n}`}else throw new Error}catch{const s=Object.entries(localStorage).find(([l,c])=>l.startsWith("CognitoIdentityServiceProvider")&&l.endsWith("idToken"))?.[0]||"",o=localStorage.getItem(s);o&&!Te(o)&&(e.Authorization=`Bearer ${o}`)}return await t.getBetaEnabled()&&(e["X-Spiff-Beta"]="true"),(await y.getShadowGraphqlClient().mutate({mutation:lc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{inputs:i.map(n=>({name:n.name,layouts:n.layouts,workflowId:n.workflowId,transactionId:n.transactionId,previewImage:n.previewImage,useThreeDimPreview:n.useThreeDimPreview,metadata:n.metadata,selectedVariants:n.selectedVariants}))},context:{headers:e}})).data?.designCreateMany},En=(i,t,e)=>{const a=r=>{const s={};if(r.type==="Frame"){const o=i[r.stepName],l=r.data;if(!o||!o.image||l.hideImageInCart&&e)return s;s[`${r.stepTitle} image`]=o.image}if(r.type==="Illustration"){const o=i[r.stepName],l=r.data;if(!o||l.hideColorsInCart&&e||!o.colors)return s;if(o.colors.length>0){const c=o.colors.join(", ").toUpperCase();s[`${r.stepTitle} colors`]=c}}if(r.type==="Module"){const o=i[r.stepName],l=r.data;if(!o||o.text===void 0||o.text===null||l.hideTextInCart&&e)return s;s[`${r.stepTitle} text`]=o.text}if(r.type==="Text"){const o=i[r.stepName];if(!o)return s;const l=r.data;(!l.hideTextInCart||!e&&o.text!==void 0&&o.text!==null)&&(s[`${r.stepTitle} text`]=o.text),o.color&&(!l.hideColorInCart||!e)&&(s[`${r.stepTitle} color`]=o.color),o.strokeColor&&(!l.hideStrokeInCart||!e)&&(s[`${r.stepTitle} stroke`]=o.strokeColor)}return s},n={};return t.steps.forEach(r=>{Object.assign(n,a(r))}),n},dc=(i,t,e,a)=>{const n={};let r={};a&&(r=a);const o=t.steps.map(l=>l.stepTitle).filter((l,c,d)=>d.indexOf(l)==c);for(const l of o){if(Object.keys(i).includes(l)){const c=i[l],d=t.steps.find(u=>u.stepTitle===l);n[`${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)&&(n[c]={value:r[c],priceModifier:0})}return n},uc=(i,t,e,a,n,r,s,o)=>{const l=t.basePrice||0,c=i.priceModifierTotal||0,d=dc(a,e,void 0,r),A=(Q.getMap("transactionOwnerIds")||new Map).get(i.id),h={additionalExternalProductId:i.integrationProduct?.additionalExternalProductId,additionalExternalVariantId:i.integrationProduct?.additionalExternalVariantId,baseCost:l,designExternalVariants:i.designExternalVariants,designProductId:i.externalDesignProductId,designProductVariantId:i.externalDesignProductVariantId,event:"onComplete",exportedData:d,externalCartProductId:i.externalCartProductId,externalCartProductVariantId:i.externalCartProductVariantId,lineItemImageUrl:s||"",optionsCost:c,processExecutionId:o,quantity:i.quantity,transactionId:i.id,transactionOwnerId:A,weight:t.weight,workflowViewerLink:i.workflowViewerLink||"",workflowViewerReadOnlyLink:i.workflowViewerReadOnlyLink||""};return r&&(h.metadata=r),a&&(h.selectedVariants=a),n&&(h.sku=n),h},Ac=async(i,t,e,a,n,r,s,o,l,c)=>{c&&(console.warn("State mismatch detected. Uploading known state explicitly"),console.warn("State Object:",JSON.stringify(a())),await i.updateStateWithServerImmediate(a),console.log("Server state is undefined @ Workflow completion"));const d=i.getPreviewService(),u=t?.finalizeStepConfig?.lookAtAnimation,A=d&&t.showModelOnFinishStep&&!!u,h=l&&En(l,t,!0),g=l&&En(l,t,!1),p=async v=>{const B={};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 I.getOptionForStep(T);if(!v||X&&(X.variants||[]).length>1&&!T.data.hideSelectionInCart&&!T.data.hideSelectionsInCart){const bt=T.stepTitle;B[bt]?B[bt].push({id:k.id||"",name:k.name,priceModifier:k.priceModifier}):B[bt]=[{id:k.id||"",name:k.name,priceModifier:k.priceModifier}]}}M+=k.priceModifier}}return[B,M]},[m]=await p(!0),C=Object.fromEntries(Object.keys(m).map(v=>[v,m[v].map(B=>B.id)])),[S]=await p(!1),w=Object.fromEntries(Object.keys(S).map(v=>[v,S[v].map(B=>B.id)]));let F=await o(A,n.id);if(F){const v=await(await nt(F)).blob();F=(await G.uploadAsset({name:`${n.id}-preview-image.png`,blob:v},ee.Image,!0,!1)).fileLink}return{designDetails:(()=>{const v={name:s,layouts:e.map(B=>({index:B.index,panelId:B.panelId})),workflowId:t.id,transactionId:n.id,useThreeDimPreview:!!A,previewImage:F};if(g){const B=[];for(const[M,R]of Object.entries(g))B.push({key:M,value:R});v.metadata=B}if(C){const B=[];for(const[M,R]of Object.entries(w))B.push({key:M,ids:R});v.selectedVariants=B}return v})(),cartSelectionsWithPrices:m,cartMetadata:h}},$i=async(i,t)=>{await Promise.all(i.map(async o=>{await o.workflowManager.outstandingRequestsPromise()}));const a=await(async()=>{const o=y.getShadowGraphqlClient(),l=await Promise.all(i.map(async A=>({id:A.transaction.id,hash:await A.workflowManager.getStateHash()}))),d=ga(l,100),u=[];for(const A of d){const h=await o.query({query:Qs,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})(),n=await Promise.all(i.map(async o=>await Ac(o.workflowManager,o.workflow,o.layouts,o.getReducerState,o.transaction,o.workflowSelections,o.designName,t??(()=>Promise.resolve(void 0)),o.workflowMetadata,a.includes(o.transaction.id)))),r=i[0].workflowManager.getClient(),s=await cc(n.map(o=>o.designDetails),r);if(!s)throw new Error("Failed to create designs");return s.map((o,l)=>{const c=i[l],d=n[l],u=o.transaction;return uc(u,c.product,c.workflow,d.cartSelectionsWithPrices,o.sku,d.cartMetadata,u.previewImageLink,o.processExecution?.id)})};class hc{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(n=>n.transactionId!==t.transactionId);a.unshift(t),await this.setDesigns(a),this.designSavedListeners.forEach(n=>n(t))}async renameDesign(t,e){const a=await this.getSavedDesigns(),n=a.find(r=>r.transactionId===t);if(!n)throw new Error(`No saved design for transaction ${t}.`);n.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 Be=new hc,gc=f.gql`
|
|
2178
|
-
mutation AddTransactionStakeholder($id: String!, $type: String!, $details: CustomerDetailsInput!) {
|
|
2179
|
-
transactionAddStakeholder(id: $id, details: $details, type: $type) {
|
|
2180
|
-
id
|
|
2181
|
-
stakeholders {
|
|
2182
|
-
id
|
|
2183
|
-
type
|
|
2184
|
-
customer {
|
|
2185
|
-
id
|
|
2186
|
-
emailAddress
|
|
2187
|
-
}
|
|
2188
|
-
}
|
|
2189
|
-
}
|
|
2190
|
-
}
|
|
2191
|
-
`,mc=f.gql`
|
|
2192
|
-
mutation AddAddressToTransaction(
|
|
2193
|
-
$transactionId: String!
|
|
2194
|
-
$streetAddress: String
|
|
2195
|
-
$apartment: String
|
|
2196
|
-
$city: String
|
|
2197
|
-
$country: String
|
|
2198
|
-
$state: String
|
|
2199
|
-
$postCode: String
|
|
2200
|
-
) {
|
|
2201
|
-
addressAttachToTransaction(
|
|
2202
|
-
transactionId: $transactionId
|
|
2203
|
-
streetAddress: $streetAddress
|
|
2204
|
-
apartment: $apartment
|
|
2205
|
-
city: $city
|
|
2206
|
-
country: $country
|
|
2207
|
-
state: $state
|
|
2208
|
-
postCode: $postCode
|
|
2209
|
-
) {
|
|
2210
|
-
id
|
|
2211
|
-
}
|
|
2212
|
-
}
|
|
2213
|
-
`,pc=f.gql`
|
|
2214
|
-
mutation AddOrganizationToTransaction($transactionId: String!, $organizationName: String!) {
|
|
2215
|
-
organizationAttachToTransaction(transactionId: $transactionId, organizationName: $organizationName) {
|
|
2216
|
-
id
|
|
2217
|
-
}
|
|
2218
|
-
}
|
|
2219
|
-
`,bn=f.gql`
|
|
2220
|
-
${je}
|
|
2221
|
-
${ue}
|
|
2222
|
-
mutation TransactionUpdateIntegrationProduct($id: String!, $integrationProductId: String) {
|
|
2223
|
-
transactionUpdateIntegrationProduct(id: $id, integrationProductId: $integrationProductId) {
|
|
2224
|
-
id
|
|
2225
|
-
integrationProduct {
|
|
2226
|
-
id
|
|
2227
|
-
externalProductId
|
|
2228
|
-
externalVariantId
|
|
2229
|
-
additionalExternalProductId
|
|
2230
|
-
additionalExternalVariantId
|
|
2231
|
-
}
|
|
2232
|
-
product {
|
|
2233
|
-
id
|
|
2234
|
-
basePrice
|
|
2235
|
-
enabled
|
|
2236
|
-
minimumOrderQuantity
|
|
2237
|
-
name
|
|
2238
|
-
description
|
|
2239
|
-
partner {
|
|
2240
|
-
id
|
|
2241
|
-
name
|
|
2242
|
-
currencyCode
|
|
2243
|
-
customerDetailsPromptMarkdown
|
|
2244
|
-
}
|
|
2245
|
-
productImages {
|
|
2246
|
-
id
|
|
2247
|
-
precedence
|
|
2248
|
-
asset {
|
|
2249
|
-
key
|
|
2250
|
-
fileLink
|
|
2251
|
-
name
|
|
2252
|
-
type
|
|
2253
|
-
}
|
|
2254
|
-
}
|
|
2255
|
-
integrationProducts {
|
|
2256
|
-
id
|
|
2257
|
-
integration {
|
|
2258
|
-
id
|
|
2259
|
-
type
|
|
2260
|
-
}
|
|
2261
|
-
externalProductId
|
|
2262
|
-
externalVariantId
|
|
2263
|
-
additionalExternalProductId
|
|
2264
|
-
additionalExternalVariantId
|
|
2265
|
-
additionalIntegrationProduct {
|
|
2266
|
-
...AdditionalIntegrationProductFields
|
|
2267
|
-
}
|
|
2268
|
-
}
|
|
2269
|
-
profanities {
|
|
2270
|
-
id
|
|
2271
|
-
word
|
|
2272
|
-
}
|
|
2273
|
-
sku
|
|
2274
|
-
skuCode
|
|
2275
|
-
weight
|
|
2276
|
-
workflows {
|
|
2277
|
-
id
|
|
2278
|
-
friendlyName
|
|
2279
|
-
isPresent
|
|
2280
|
-
workflowName
|
|
2281
|
-
imageUrl
|
|
2282
|
-
}
|
|
2283
|
-
imageUrl
|
|
2284
|
-
modelUrl
|
|
2285
|
-
overlayImageUrl
|
|
2286
|
-
preloadImageUrl
|
|
2287
|
-
promptForCustomerDetails
|
|
2288
|
-
conversionConfiguration {
|
|
2289
|
-
...ConversionConfigurationFields
|
|
2290
|
-
}
|
|
2291
|
-
productTags {
|
|
2292
|
-
id
|
|
2293
|
-
name
|
|
2294
|
-
}
|
|
2295
|
-
priceBreaks {
|
|
2296
|
-
id
|
|
2297
|
-
minQty
|
|
2298
|
-
percentage
|
|
2299
|
-
}
|
|
2300
|
-
}
|
|
2301
|
-
}
|
|
2302
|
-
}
|
|
2303
|
-
`;var Ne=(i=>(i.PriceBreakChanged="PriceBreakChanged",i.ProductChanged="ProductChanged",i.QuantityChanged="QuantityChanged",i.RecipientChanged="RecipientChanged",i.SelectionChanged="SelectionChanged",i))(Ne||{});class Ui{constructor(t,e){this.cachedStepHandles=new Map,this.profanityList=[],this.currentPriceBreak=1,this.renderableScenes=[],this.renderableSceneCallbacks=[],this.eventCallbacks=new Map,this.debouncedSavedDesignUpdate=xn(async()=>{await Be.getSavedDesignByTransaction(this.getTransaction().id)&&this.save()},2500),this.getCanvasObjectURLAsync=async a=>new Promise((n,r)=>{try{a.toBlob(s=>{if(s){const o=URL.createObjectURL(s);n(o)}})}catch(s){r(s)}}),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 xa(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 n=a.traversableScenes.map(r=>{const s=r.renderableSteps.map(o=>o.stepName);return{id:r.name,title:r.title,renderableSteps:s,workflowScene:r}});this.renderableScenes=n,this.renderableSceneCallbacks.forEach(r=>r(n)),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:bn,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 n=(await this.bundle.getProductCollection().fetchProducts()).find(r=>r.getId()===a.id);try{const r=n?.getDefaultWorkflow();if(r){const s=await Ki(r.getId());await this.setWorkflow(s),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:bn,variables:{id:this.getTransaction().id}})}getWorkflow(){return this.workflow}async setWorkflow(t){return this.workflow=t,await this.graphQlClient().mutate({mutation:ks,variables:{id:this.getTransaction().id,workflowId:t.id}}),this.workflowManager.setWorkflow(t)}async attachAddress(t,e,a,n,r,s){await this.graphQlClient().mutate({mutation:mc,variables:{transactionId:this.getTransaction().id,streetAddress:t||void 0,apartment:e||void 0,city:a||void 0,country:n||void 0,state:r||void 0,postCode:s||void 0}})}async attachOrganization(t){await this.graphQlClient().mutate({mutation:pc,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(),n=a?.finalizeStepConfig?.lookAtAnimation;if(!a)throw new Error("Failed to generate cart preview image! No workflow is set.");if(t){if(!n)throw new Error("Failed to generate cart preview image! No camera orientation configured.");return await this.workflowManager.getPreviewService()?.renderSceneScreenshot(e??512,n)||""}let r=2048;e&&e<=2048&&(r=e);const s=yt(r,r),o=this.workflowManager.getCommandContext().getAllLayouts(),l=a.defaultPreviewPanelIndex||0,c=a.panels[l],d=o.find(w=>w.layoutState?.layout.panelId===c?.name)||o[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=s.getContext("2d");if(!h)throw new $e("Failed to obtain 2D context for preview image creation");const g=this.workflowManager.getTemplatingContext(),p=Je(A.layoutState.layout,A.layoutState.elements,{renderingConfiguration:{purpose:Nt.Print,region:{left:u.x,top:u.y,width:u.width,height:u.height},templatingContext:g}}),m=Vn(p);await(await Ma.Pith.from(h,m,{anonymousCrossOrigin:!0,ignoreDimensions:!1,createCanvas:yt,createImage:le,DOMParser:Ra(),fetch})).render();const S=await this.getCanvasObjectURLAsync(s);return s.toDataURL(S)}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 n=ve.get(this.getWorkflowManager(),e);return this.cachedStepHandles.set(e.stepName,n),n}getSteps(){return this.getScenes().flatMap(t=>this.getStepsByScene(t))}async getStepsConditionallyActive(){const t=this.getScenes();return(await Promise.all(t.map(async a=>{const n=this.getStepsByScene(a),r=await Promise.all(n.map(s=>pt(s.getRaw(),this.getWorkflowManager().getStepSelections())));return n.filter((s,o)=>r[o])}))).flat()}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(n=>{a+=n.selections.reduce((r,s)=>r+(s.priceModifier||0),0)}),this.getPriceSubUnitsAfterPriceBreaks(a,t)}getBasePriceSubunits(t,e){const a=this.getPriceSubUnitsAfterPriceBreaks(this.getProduct()?.basePrice||0,e);if(t){const n=this.getAdditionalProductPriceSubunits(e)||0;return a+n}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(),n=t*a;return Math.ceil(n)}priceBreakToBeApplied(){const t=(this.getProduct()?.priceBreaks||[]).sort((n,r)=>-(n.minQty-r.minQty)),a=[...this.getMatchingExperiencesFromBundle(),this].reduce((n,r)=>n+r.getQuantity(),0);for(const n of t)if(n.minQty<=a)return n.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,n=t.getProduct()?.id,r=this.getProduct()?.id;return e!==a&&n===r})}updatePriceBreak(t){this.currentPriceBreak=t,this.callEvent("PriceBreakChanged")}async copySelectionsViaGlobalConfiguration(t,e,a){const n=await t.getGlobalProperties(),r=a?.map(c=>c.getId()),s=this.getSteps().filter(c=>r===void 0||r.includes(c.getId())),o=e.getSteps(),l=c=>n.find(d=>d.getRawProperty().name===c.aspectName);s.forEach(c=>{const d=new Set,u=c.getRaw().globalPropertyAspectConfigurations;u!==void 0&&(u.forEach(A=>d.add(JSON.stringify(A))),o.forEach(A=>{const h=A.getRaw().globalPropertyAspectConfigurations;h!==void 0&&h.forEach(g=>{const p=l(g),m=d.has(JSON.stringify(g));if(m&&p?.getType()==="Option"){const C=A.getCurrentVariant();if(!C)return;c.selectVariant(C),d.delete(JSON.stringify(g))}else if(m&&p?.getType()==="Text"){const C=A.getText();c.setText(C),d.delete(JSON.stringify(g))}})}))})}getStepByName(t){const e=this.getWorkflow()?.steps.find(a=>a.stepTitle===t);if(!(!e||!this.stepHasHandle(e)))return ve.get(this.getWorkflowManager(),e)}getStepsByType(t){return this.getWorkflow()?.steps.filter(e=>e.type===t).map(e=>ve.get(this.getWorkflowManager(),e))||[]}getStepsByScene(t){const e=this.getWorkflow();if(!e?.stepGroups.find(n=>n.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(n=>e.steps.find(r=>r.stepName===n)).filter(n=>!!n&&this.stepHasHandle(n)).map(n=>ve.get(this.getWorkflowManager(),n))}async attachCustomerDetails(t){return this.assignCustomerDetails({emailAddress:t.email})}async assignCustomerDetails(t){const a=(await this.graphQlClient().mutate({mutation:gc,variables:{id:this.getTransaction().id,details:t,type:"Owner"}})).data?.transactionAddStakeholder?.stakeholders?.find(n=>n.customer?.emailAddress===t.emailAddress);if(a?.customer){this.getWorkflowManager().setTransactionCustomer(a.customer);const n=Q.getMap("transactionCustomerIds")||new Map;n.set(this.getTransaction().id,a.customer.id),Q.setMap("transactionCustomerIds",n)}}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(),n=this.getCommandContext().getState();if(!e)throw new O("Product undefined!");if(!a)throw new O("Workflow undefined!");if(!n)throw new O("State undefined!");const s={title:await(async()=>{if(t)return t;const o=this.getTransaction().id,c=(await Be.getSavedDesigns()).find(d=>d.transactionId===o)?.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 Be.addDesign(s),s}async copy(){const t=Ct(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 n=this.getTransaction().integrationProduct?.id;if(!n)throw new O("Integration product id is undefined!");return await this.getClient().getWorkflowExperience({type:"integration",integrationProductId:n,workflowId:a.id,workflowState:e})}async onDesignFinished(t=!0){const e=this.getTransaction(),a=this.getProduct(),n=this.getWorkflow();if(!a)throw new O("Product undefined! Cannot finish an experience without a product.");if(!n)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 $i([{workflowManager:this.workflowManager,workflow:n,layouts:this.workflowManager.getLayouts(),getReducerState:()=>this.workflowManager.getCommandContext().getState(),product:a,transaction:e,workflowSelections:this.workflowManager.getWorkflowSelections(),workflowMetadata:this.workflowManager.getWorkflowMetadata(),designName:n.name}],s=>t?this.createPreviewImage(s,1024):Promise.resolve(void 0));return e.completed&&await this.graphQlClient().mutate({mutation:Us,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(),n=[];for(const r of t?.steps||[]){const s=r.stepName,o=e[s],l=a[s]?.selections[0],c={stepId:s,title:r.stepTitle,properties:[]};if(l&&await Cc(r,a)&&c.properties.push({type:"selection",value:l.name,priceModifier:l.priceModifier}),!o){n.push(c);continue}switch(r.type){case E.Frame:{const d=r.data,u=o;u.image&&d.displayImageOnFinishStep&&c.properties.push({type:"image",value:u.image,priceModifier:0})}break;case E.Illustration:{const d=r.data,u=o;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=o;u&&u.text&&d.displayTextOnFinishStep&&c.properties.push({type:"text",value:u.text,priceModifier:0})}break;case E.Text:{const d=r.data,u=o;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})}}n.push(c)}return n.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:Ds,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(n=>n!==e))}callEvent(t){(this.eventCallbacks.get(t)||[]).forEach(e=>e(this))}}const fc=i=>{if([E.Question,E.Frame,E.Illustration,E.Material,E.Model,E.Picture,E.Shape,E.Text].includes(i.type)){const e=i.data;return!!e.displaySelectionOnFinishStep||!!e.displaySelectionsOnFinishStep}return!1},Cc=async(i,t)=>{if(!fc(i))return!1;const e=await I.getOptionForStep(i);if(e&&(e.variants||[]).length>1){const a=t[i.stepName];return!!(a&&a.selections.length>0)}return!1};class wc{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===Dn.AND?Array.prototype.every.bind(t.conditions):Array.prototype.some.bind(t.conditions))(n=>{const r=e.aspects.find(s=>s.name===n.targetAspectName);return r?n.requiredVariantSelections.some(s=>s===r.value):!1})}async createHandle(t){switch(t.type){case z.FileUpload:return new Vi(this.bundle,t).initialize();case z.ColorOption:return new Fa(this.bundle,t,t.entityId?await I.getOption(t.entityId):void 0);case z.Option:{const e=t.entityId?await I.getOption(t.entityId):void 0;return e?.type==="Color"?new Fa(this.bundle,t,e):new Xa(this.bundle,t,e)}case z.Text:return new Li(this.bundle,t);default:throw new Error("Unhandled Global Property Aspect Type")}}}class Ze{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)}isSilent(){return!!this.property.silent||this.bundle.getGlobalPropertyStateManager().getAspectHidden(this.property.name)}async getSharedSteps(t){const e=t??this.bundle.getWorkflowExperiences();return(await Promise.all(e.map(r=>r.getStepsConditionallyActive()))).map(r=>r.filter(s=>s.getOverrideGlobalPropertyConfiguration(this.property.type)?!1:s.getRaw().globalPropertyAspectConfigurations?.some(o=>o.globalPropertyConfigurationId===this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration?.id&&o.aspectName===this.property.name))).flat()}getStateValue(){return this.bundle.getGlobalPropertyStateManager().getAspect(this.property.name)}}class Vi extends Ze{constructor(t,e){super(t,e)}async initialize(){return this.property.data?.fileUpload?.colorOptionId&&(this.colorOption=await I.getOption(this.property.data?.fileUpload?.colorOptionId)),await this.loadImageData(),this}async loadImageData(){const t=await this.getImage();if(t?.fileLink)if(t?.fileLink.endsWith(".svg")){const e=await tt(t?.fileLink),a=await La(t?.fileLink),n=a.width,r=a.height,s=await it(e);this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)?.colors?.forEach(c=>{s.colors[c.key]={browserValue:c.browserValue,pmsValue:c.pmsValue}});const l={src:t?.fileLink,width:n,height:r,aspect:n/r,svg:s.svg,colors:s.colors};ut.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,vectorizedAssetKey:void 0,useOriginalAsset:void 0},void 0),this.applyImageSelection(t),this.loadImageData()])}async canUseAdvancedImageManipulation(){return this.bundle.getClient().canUseAddon(Oe.AdvancedImageManipulation)}async removeBackgroundFromImage(t=!0){if(!await this.canUseAdvancedImageManipulation())throw new Error("The current Integration does not have access to the Advanced Image Manipulation addon. Please call canUseAdvancedImageManipulation 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(),n=await G.removeBackgroundFromAsset(e),s={...a.getAspectStorage(this.property.name),backgroundRemovedAssetKey:n.key,useOriginalAsset:!t},l=[t?a.setAspect(this.property.name,n.key,s):a.setAspectStorage(this.property.name,s)];return t&&(l.push(this.applyImageSelection(n,void 0,!1,!1)),l.push(this.loadImageData())),await Promise.all(l),this.updateSharedStepStorage(s),n}async vectorizeImage(t=!0){if(!await this.canUseAdvancedImageManipulation())throw new Error("The current Integration does not have access to the Advanced Image Manipulation addon. Please call canUseAdvancedImageManipulation 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 vectorize the image.");const a=this.bundle.getGlobalPropertyStateManager(),n=await G.vectorizeAsset(e),s={...a.getAspectStorage(this.property.name),vectorizedAssetKey:n.key,useOriginalAsset:!t},l=[t?a.setAspect(this.property.name,n.key,s):a.setAspectStorage(this.property.name,s)];return t&&(l.push(this.applyImageSelection(n,void 0,!1,!1)),l.push(this.loadImageData())),await Promise.all(l),this.updateSharedStepStorage(s),n}hasImage(){return!!this.getStateValue()}async getImage(){const t=this.getStateValue();if(t)return G.getLocalOrFromServer(t)}async getImageWithColors(){return await this.loadImageData(),this.imageData?.svg?Le(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 G.getLocalOrFromServer(t.originalAssetKey)}async getBackgroundRemovedImage(){const t=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(t?.backgroundRemovedAssetKey)return G.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(),n=a.getAspectStorage(this.property.name);if(n?.useOriginalAsset===t)return;const r={...n,useOriginalAsset:t},s=t?n?.originalAssetKey:n?.backgroundRemovedAssetKey,o=[a.setAspect(this.property.name,s||"",r)];if(t)o.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)};o.push(l())}o.push(this.loadImageData()),await Promise.all(o),this.updateSharedStepStorage(r)}async applyGlobalState(t){const e=this.getStateValue();if(!e)return;const a=await G.getLocalOrFromServer(e);if(!a)return;await this.applyImageSelection(a,t,!1,!0);const n=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);if(n){if(this.updateSharedStepStorage({...n}),n.colors){const r=new Map(n.colors.map(s=>[s.key,{browserValue:s.browserValue,pmsValue:s.pmsValue}])??[]);await Promise.all((await this.getSharedSteps(t)).map(async s=>{await s.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 it(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((await e).map(async r=>{await r.changeColors(a)}));const n=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name);await Promise.all([this.bundle.getGlobalPropertyStateManager().setAspectStorage(this.property.name,{...n,colors:Object.entries(t).map(([r,s])=>({key:r,browserValue:s.browserValue,pmsValue:s.pmsValue}))}),await this.loadImageData()])}async applyImageSelection(t,e,a=!0,n=!0){const s=(await this.getSharedSteps(e)).map(o=>{const l=o;if(l.getFrameService())return l.selectImage(t,a,n)});await Promise.all(s)}updateSharedStepStorage(t){this.bundle.getWorkflowExperiences().forEach(a=>a.getSteps().forEach(n=>{if(n.getOverrideGlobalPropertyConfiguration(this.property.type))return;n.getRaw().globalPropertyAspectConfigurations?.some(s=>s.globalPropertyConfigurationId===this.bundle.getProductCollection()?.getResource().globalPropertyConfiguration?.id&&s.aspectName===this.property.name)&&a.getWorkflowManager().updateStorage(n.getId(),{framePatternData:{originalAssetKey:t.originalAssetKey,backgroundRemovedAssetKey:t.backgroundRemovedAssetKey,useOriginalAsset:t.useOriginalAsset}})}))}}class Li extends Ze{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 n=(await this.getSharedSteps(e)).map(r=>{r.setText(t)});await Promise.all(n)}}class Xa extends Ze{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 I.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 at(t))}getCurrentVariant(){if(!this.optionResource)return;const t=this.getStateValue();if(t){const e=this.optionResource.variants?.find(a=>a.id===t);return e?new at(e):void 0}else{const e=this.optionResource.variants?.find(a=>a.id===this.optionResource?.defaultVariant?.id);return e?new at(e):void 0}}async getAvailableVariants(){return await this.ensureOptionLoaded(),(this.optionResource?.variants?.filter(e=>e.enabled)||[]).map(e=>new at(e))}async getAllVariants(){return await this.ensureOptionLoaded(),(this.optionResource?.variants||[]).map(e=>new at(e))}async selectVariant(t,e){await this.applyVariantSelection(t),await this.bundle.getGlobalPropertyStateManager().setAspect(this.property.name,t.getId(),void 0,e)}async applyGlobalState(t){const e=this.getStateValue();if(!e)return;await this.ensureOptionLoaded();const a=this.optionResource?.variants?.find(n=>n.id===e);if(a)return this.applyVariantSelection(new at(a),t)}async applyVariantSelection(t,e){const n=(await this.getSharedSteps(e)).map(r=>r.selectVariant(t));await Promise.all(n)}}class Fa extends Xa{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 at(a),t);const n=this.bundle.getGlobalPropertyStateManager().getAspectStorage(this.property.name)?.customColor;n&&await this.setCustomColor(n)}async applyColorVariant(t,e,a){const r=(await this.getSharedSteps(e)).map(s=>{switch(s.getType()){case E.Shape:return s.selectVariant(t);case E.Text:return s.setFillColor({fill:t.getColor(),stroke:t.getColor(),variant:t.getResource()});case E.Illustration:return s.setColor(a?.toString()||"",t.getColor()||"")}});await Promise.all(r)}async setCustomColor(t){const e=this.getCurrentVariant()?.getColor();e&&e.toLowerCase()==="#custom"&&(await this.getSharedSteps()).forEach(n=>n.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 yc=(i,t,e)=>{const a=i.getWorkflowExperiences(),n=i.getGlobalPropertyConfiguration();return n?a.flatMap(s=>s.getSteps()).filter(s=>s.getGlobalPropertyAspects(n.id).includes(t)&&s.getType()===e):[]},zi=(i,t)=>{const a=yc(i,t,E.Illustration).map(n=>{if(!n.getCurrentVariant()?.getAssetResource()?.assetConfiguration)return 0;const s=n.getColors();return s?Object.getOwnPropertyNames(s).length:0});return Math.max(...a)};function Da(i,t){function e(a){if(typeof a>"u"||!Array.isArray(a)&&!vc(a))return a;if(Array.isArray(a))return Da(a,t);let n={};for(const[r,s]of Object.entries(a))n[r]=Sc(s)?s:Da(s,t);return xr(n,t)}return Array.isArray(i)?i.map(e):e(i)}function Sc(i){return i==null}function vc(i){return typeof i=="object"&&!Array.isArray(i)&&i!==null}function qi(i){const t=new Map;return i?.aspects?.forEach(e=>{e.value!==""&&t.set(e.name,!0)}),t}class Ec extends He{constructor(t){super(),this.update=t}async execute(){await this.update(),await new Promise(t=>{window.setTimeout(()=>{t()},1e3)})}}function ha(i){return Da(i,["__typename"])}class bc{constructor(t,e,a,n,r){this.stateUpdateQueue=new Ye(1),this.mandatoryFulfilledAspects=new Map,this.bundleId=t,this.bundleOwnerId=e,this.configuration=a,this.bundleOptions=r;const s=r?.existingGlobalPropertyState;this.initPromise=s?Promise.resolve(s).then(()=>{console.log("Setting global property state to existing state."),this.globalPropertyState=ha(s),this.recalculateMandatoryStates()}):this.createGlobalPropertyState().then(o=>{console.log("Setting global property state to new state."),this.globalPropertyState=ha(o),this.recalculateMandatoryStates()}),this.onGlobalPropertyStateChange=n}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=qi(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=Ct(this.globalPropertyState);this.globalPropertyState={...ha(t),id:e.id},this.recalculateMandatoryStates(),this.queueGlobalPropertyStateUpdate(),await this.onGlobalPropertyStateChange(e,this.globalPropertyState)}getAspectMandatoryFulfilled(t){return this.mandatoryFulfilledAspects.get(t)}getAspectHidden(t){if(!this.globalPropertyState)throw new Error("Global property state not initialized");return!!this.globalPropertyState.aspects.find(e=>e.name===t)?.hidden}getAspect(t,e){if(!this.globalPropertyState)throw new Error("Global property state not initialized");const a=this.globalPropertyState.aspects.find(n=>n.name===t&&n.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,n,r){if(!this.globalPropertyState)throw new Error("Global property state not initialized");if(!this.configuration)throw new Error("Global property configuration not linked to the state manager.");const s=this.configuration.aspects.find(c=>c.name===t);if(!s)throw new Error(`Failed to find configuration aspect with name: ${t}`);this.mandatoryFulfilledAspects.set(t,e!=="");const o=Ct(this.globalPropertyState),l=this.globalPropertyState.aspects.filter(c=>c.name===t);if(l.length>0)if(n){const c=l.find(d=>d.channel===n);if(c)c.value=e,c.type=s.type,c.channel=n,c.hidden=r??c.hidden,a!==void 0&&(c.storage=a!==null?a:void 0);else{let d;if(n===1){const u=this.globalPropertyState.aspects.findIndex(A=>!A.channel&&A.name===t);u&&u>0&&(d=this.globalPropertyState.aspects.splice(u,1)[0].hidden)}this.globalPropertyState.aspects.push({name:t,value:e,type:s.type,storage:a!==null?a:void 0,channel:n,hidden:r??d})}}else{const c=l[0];c.value=e,c.type=s.type,c.hidden=r??c.hidden,a!==void 0&&(c.storage=a!==null?a:void 0)}else this.globalPropertyState.aspects.push({name:t,value:e,type:s.type,storage:a!==null?a:void 0,channel:n,hidden:r});te(o,this.globalPropertyState)||(this.queueGlobalPropertyStateUpdate(),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 n=this.configuration.aspects.find(o=>o.name===t);if(!n)throw new Error(`Failed to find configuration aspect with name: ${t}`);const r=Ct(this.globalPropertyState),s=this.globalPropertyState.aspects.filter(o=>o.name===t);if(s.length>0)if(a){const o=s.find(l=>l.channel===a);o&&(o.storage=e!==null?e:void 0,o.type=n.type)}else{const o=s[0];o.storage=e!==null?e:void 0,o.type=n.type}else this.globalPropertyState.aspects.push({name:t,value:"",type:n.type,storage:e!==null?e:void 0,channel:a});te(r,this.globalPropertyState)||(this.queueGlobalPropertyStateUpdate(),await this.onGlobalPropertyStateChange(r,this.globalPropertyState))}queueGlobalPropertyStateUpdate(){this.stateUpdateQueue.enqueue(new Ec(async()=>{await this.updateGlobalPropertyState()}))}async updateGlobalPropertyState(){if(!this.globalPropertyState)throw new Error("Global property state not initialized");if(!(await y.getShadowGraphqlClient().mutate({mutation:bl,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 z.FileUpload:{a.fileUpload=e.storage;break}case z.ColorOption:case z.Option:{a.option=e.storage;break}}return{name:e.name,value:e.value,type:e.type,storage:a,channel:e.channel,hidden:e.hidden}})},context:{headers:{bundleOwnerId:this.bundleOwnerId,...this.bundleOptions?.additionalHeaders}}})).data?.globalPropertyStateUpdate)throw new Error("Unable to update global property state")}async createGlobalPropertyState(){const t=await y.getShadowGraphqlClient().mutate({mutation:El,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 Ic{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 Bc=f.gql`
|
|
2304
|
-
query GetManyMetafields($entityIds: [String!]!) {
|
|
2305
|
-
metafieldsMany(entityIds: $entityIds) {
|
|
2306
|
-
id
|
|
2307
|
-
value
|
|
2308
|
-
metafieldConfiguration {
|
|
2309
|
-
id
|
|
2310
|
-
metafieldType
|
|
2311
|
-
name
|
|
2312
|
-
}
|
|
2313
|
-
}
|
|
2314
|
-
}
|
|
2315
|
-
`;class Pc{constructor(){this.internalMap=new Map}async requestKeysForEntity(t,e){const a=new Map;return await this.ensureIdsArePresent([t]),e.forEach(n=>{const r=this.requestKeyForEntityIfAvailable(t,n);r&&a.set(n,r)}),a}async ensureIdsArePresent(t){if(t.every(a=>this.internalMap.has(a)))return;const e=await y.getShadowGraphqlClient().query({query:Bc,errorPolicy:"all",variables:{entityIds:t.filter(a=>!this.internalMap.has(a))}});t.forEach((a,n)=>{const r=e.data.metafieldsMany[n];this.internalMap.set(a,r.map(s=>({key:s.metafieldConfiguration.name,value:s.value,metafieldConfigurationId:s.metafieldConfiguration.id,metafieldType:s.metafieldConfiguration.metafieldType})))})}async requestKeyForEntity(t,e){if(!this.internalMap.has(t))return;let a=this.internalMap.get(t);const n=a.find(r=>r.key===e);return n||(await this.ensureIdsArePresent([t]),a=this.internalMap.get(t)),n?JSON.parse(n.value):void 0}requestKeyForEntityIfAvailable(t,e){if(!this.internalMap.has(t))return;const n=this.internalMap.get(t).find(r=>r.key===e);if(n)return JSON.parse(n.value)}requestIfAvailable(t,e){return this.internalMap.has(t)?this.internalMap.get(t).find(r=>r.metafieldConfigurationId===e):void 0}}const Qe=new Pc;var Gi=(i=>(i.Default="Default",i.Name="Name",i.Price="Price",i))(Gi||{});class Za{constructor(t){this.fullFetched=!1,this.collection=t;const e=this.collection.productCollectionProducts;e&&e.length>=this.collection.total&&(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 Ht(t))}async fetchProducts(t){if(this.fullFetched)return(this.collection.productCollectionProducts??[]).filter(n=>!!n.product).map(n=>new Ht(n));const e=await y.getShadowGraphqlClient().query({query:Dl,variables:{id:this.getId(),productIds:t},errorPolicy:"all"}),a=this.collection.productCollectionProducts||[];return this.collection.productCollectionProducts=[...a,...e.data.productCollections[0].productCollectionProducts?.filter(n=>!a.some(r=>n.id===r.id))||[]],this.collection.productCollectionProducts.length>=this.collection.total&&(this.fullFetched=!0),this.collection.productCollectionProducts.filter(n=>!!n.product&&(!t||t.includes(n.product.id))).map(n=>new Ht(n))}async filterProducts(t,e,a,n){const r=await y.getShadowGraphqlClient().query({query:kl,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:n}});if(!r.data?.productCollections||r.data?.productCollections.length===0)throw new Error("Failed to filter product collection products.");const s=this.getProducts(),o=r.data.productCollections[0].productCollectionProducts.map(l=>l.product.id);return s.filter(l=>o.includes(l.getId()))}async fetchProductsFeed(t,e,a,n,r,s,o,l){if(this.fullFetched){const A=await(a?this.filterProducts(a):this.fetchProducts());return{total:A.length,items:A.slice(t,t+e)}}const c=new AbortController,{signal:d}=c,u=y.getShadowGraphqlClient().watchQuery({query:Ml,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:n?{include:n.include??[],exclude:n.exclude??[]}:void 0,sortKey:r,sortDescending:s,quickSearch:o},errorPolicy:"all",fetchPolicy:"cache-first",returnPartialData:!0,context:{fetchOptions:{signal:d}}});return new Promise(A=>{let h=!1;const g=u.subscribe({next(p){if(h||p.partial&&(!p.data.productCollections||p.data.productCollections.length===0||!p.data.productCollections[0].productCollectionProductsFeed?.items||p.data.productCollections[0].productCollectionProductsFeed?.items.length===0))return;c.abort(),h=!0,g.unsubscribe();const m=p.data.productCollections?.[0].productCollectionProductsFeed?.items.filter(C=>!!C.product).map(C=>new Ht(Ct(C)))||[];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 Ht{constructor(t){this.product=t.product,this.productResource=t}getId(){return this.product.id}getName(){return this.product.name}getIntegrationByType(t,e){const n=(this.product.integrationProducts||[]).find(r=>{const s=r.integration?.type,o=r.integration?.type===t,l=e?r.integration?.externalIntegrationId===e:!0;return s&&o&&l});if(!n)throw new Error("Failed to find requested integration type on product. This is generally due to a configuration error");return n}getCurrentIntegration(){const e=(this.product.integrationProducts||[]).find(a=>a.integration?.isCurrent);if(!e)throw new Error(`Product: ${this.productResource.id} is not linked to this current integration. This is generally due to a configuration error.`);return e}getDefaultWorkflow(){const t=this.product.workflows;if(t===void 0)throw new mt("Called getDefaultWorkflow() before fetching collection products. Use collection.fetchProducts() first to ensure the data is available.");if(t.length===0)throw new mt("Called getDefaultWorkflow() but no workflows on requested product. Ensure at least 1 workflow is assigned to this product.");const e=this.productResource.workflowId;if(e){const a=t.find(n=>n.workflowName===e);if(a)return new Tt(a)}if(t.length===1)return new Tt(t[0]);throw new mt("Called getDefaultWorkflow() but no default workflow is configured for the requested product. Multiple workflows exist so we can't assume!")}getAllWorkflows(){if((this.product.workflows||[]).length===0)throw new mt("No workflows on configured product. Ensure at least 1 workflow is assigned to this product.");return this.product.workflows.sort((e,a)=>(e.index??0)-(a.index??0)).map(e=>new Tt(e))}getIntegrations(){return this.product.integrationProducts||[]}getResource(){return this.product}getBasePrice(t){const e=this.product.basePrice||0;if(!t)return e;if(!t.integrationType&&!t.externalId&&!t.integrationId)throw new Error("You must provide at least one of the following fields on the includeAdditionalProduct object: integrationType, externalId, integrationId");let a;return t.integrationId?a=this.product.integrationProducts?.find(n=>n.integration?.id===t.integrationId):t.externalId?a=this.product.integrationProducts?.find(n=>n.integration?.externalIntegrationId===t.externalId):a=this.product.integrationProducts?.find(n=>n.integration?.type===t.integrationType),a?.additionalIntegrationProduct?.product?e+(a.additionalIntegrationProduct.product.basePrice||0):e}async requestMetafields(t){return Qe.requestKeysForEntity(this.product.id,t)}}class Tt{constructor(t){this.workflow=t}getId(){return this.workflow.workflowName}getName(){return this.workflow.friendlyName}getThumbnail(t=128,e){const a=this.workflow?.imageUrl,n=window?.devicePixelRatio||1;if(a)return Ge(a,t*n,"webp",e)}}const xc=f.gql`
|
|
2316
|
-
${Xe(!1)}
|
|
2317
|
-
query GetProductCollections($ids: [String!]!) {
|
|
2318
|
-
productCollections(ids: $ids) {
|
|
2319
|
-
...ProductCollectionFields
|
|
2320
|
-
}
|
|
2321
|
-
}
|
|
2322
|
-
`,Fc=async i=>(await y.getShadowGraphqlClient().query({query:xc,errorPolicy:"all",variables:{ids:i}})).data?.productCollections?.map(e=>new Za(e));class Dc{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 kc=f.gql`
|
|
2323
|
-
mutation AddAddressToBundle(
|
|
2324
|
-
$bundleId: String!
|
|
2325
|
-
$streetAddress: String
|
|
2326
|
-
$apartment: String
|
|
2327
|
-
$city: String
|
|
2328
|
-
$country: String
|
|
2329
|
-
$state: String
|
|
2330
|
-
$postCode: String
|
|
2331
|
-
) {
|
|
2332
|
-
addressAttachToBundle(
|
|
2333
|
-
bundleId: $bundleId
|
|
2334
|
-
streetAddress: $streetAddress
|
|
2335
|
-
apartment: $apartment
|
|
2336
|
-
city: $city
|
|
2337
|
-
country: $country
|
|
2338
|
-
state: $state
|
|
2339
|
-
postCode: $postCode
|
|
2340
|
-
) {
|
|
2341
|
-
id
|
|
2342
|
-
}
|
|
2343
|
-
}
|
|
2344
|
-
`,Mc=f.gql`
|
|
2345
|
-
mutation AddOrganizationToBundle($bundleId: String!, $organizationName: String!) {
|
|
2346
|
-
organizationAttachToBundle(bundleId: $bundleId, organizationName: $organizationName) {
|
|
2347
|
-
id
|
|
2348
|
-
}
|
|
2349
|
-
}
|
|
2350
|
-
`,Tc=f.gql`
|
|
2351
|
-
mutation GenerateQuoteId($id: String!) {
|
|
2352
|
-
bundleGenerateQuoteId(id: $id) {
|
|
2353
|
-
id
|
|
2354
|
-
quoteId
|
|
2355
|
-
}
|
|
2356
|
-
}
|
|
2357
|
-
`;class In{constructor(t,e,a,n,r,s,o){this.workflowExperiences=[],this.eventEmitter=new Dc,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 Ic(e.bundleStateData);const l=this.productCollection?.globalPropertyConfiguration;this.globalConfigurationPropertyId=l?.id,this.globalPropertyStateManager=new bc(this.id,this.ownerId,l,this.onGlobalPropertiesChanged.bind(this),s),this.globalPropertyHandleService=new wc(this),this.setPreviewService(a),this.initializationPromise=(async()=>{if(!s?.readonly){const c=this.bundleStateManager.getState();if(c.integrationProductIds&&c.integrationProductIds.length>0){const d=await y.getShadowGraphqlClient().query({query:ni,variables:{ids:c.integrationProductIds},errorPolicy:"all",fetchPolicy:"no-cache"});if(d.errors)throw new Error(`Failed to fetch integration products for Bundle ${e.id}`);const u=d.data.integrationProducts?.filter(h=>!!h.product?.id&&c.integrationProductIds.includes(h.id)).map(h=>h.product.id);c.integrationProductIds=[],c.productIds=Array.from(new Set([...c.productIds||[],...u||[]]));const A=JSON.stringify(c);this.bundleStateManager.setState(A),await y.getShadowGraphqlClient().mutate({mutation:Se,variables:{id:this.id,bundleStateData:A},context:{bundleOwnerId:r}})}}return Promise.all([this.loadExistingWorkflowExperiences(e.transactionIds||[],{...n,bundleOwnerId:r},o),this.globalPropertyStateManager.getInitializationPromise()]).then(()=>new Promise((c,d)=>{if(s?.readonly){c([]);return}console.log("Setting default global variants."),this.initializeUninitializedHandles().then(c).catch(d)}))})(),this.initializationPromise.catch(c=>{console.error(`Bundle initialization failed: ${c}`)}),this.initializationPromise.then(()=>{this.getGlobalProperties().then(c=>this.checkMandatoryHandlesChanged(void 0,c))})}async initializeUninitializedHandles(){const t=this.globalPropertyStateManager.getGlobalPropertyState();if(!t)return console.log("Attempted to set global default variant before state was initialized."),[];const a=(await this.globalPropertyHandleService.getHandles()).map(async n=>{if(n.getType()===z.ColorOption||n.getType()===z.Option){const r=n;if(!t.aspects.find(o=>o.name===r.getName()))try{return await r.initDefaultVariant()}catch(o){console.error(`Failed to initialize default global variant - ${o}`)}}});return Promise.all(a)}getProductIds(){return this.bundleStateManager.getState()?.productIds}async addProductId(t){const e=this.bundleStateManager.getState();if(e){if(!e.productIds)e.productIds=[];else if(e.productIds.some(n=>n===t)){this.fireEvent("bundle-products-added",{productIds:e.productIds,added:[]});return}e.productIds=[...e.productIds,t];const a=JSON.stringify(e);this.bundleStateManager.setState(a),this.fireEvent("bundle-products-added",{productIds:e.productIds,added:[t]}),await y.getShadowGraphqlClient().mutate({mutation:Se,variables:{id:this.id,bundleStateData:a},context:{bundleOwnerId:this.ownerId}})}}async removeProductIds(t){const e=this.bundleStateManager.getState();if(e){const a=t.filter(r=>(e.productIds??[]).includes(r));if(a.length===0)return;e.productIds=(e.productIds??[]).filter(r=>!a.includes(r));const n=JSON.stringify(e);this.bundleStateManager.setState(n),this.fireEvent("bundle-products-removed",{productIds:e.productIds,removed:a}),await y.getShadowGraphqlClient().mutate({mutation:Se,variables:{id:this.id,bundleStateData:n},context:{bundleOwnerId:this.ownerId}})}}getTemplate(){return this.template}async generateQuoteId(){const e=(await y.getShadowGraphqlClient().mutate({mutation:Tc,variables:{id:this.id},context:{bundleOwnerId:this.ownerId}})).data?.bundleGenerateQuoteId?.quoteId;return this.quoteId=e,e||""}async attachAddress(t,e,a,n,r,s){await y.getShadowGraphqlClient().mutate({mutation:kc,variables:{bundleId:this.id,streetAddress:t||void 0,apartment:e||void 0,city:a||void 0,country:n||void 0,state:r||void 0,postCode:s||void 0},context:{bundleOwnerId:this.ownerId}})}async attachOrganization(t){await y.getShadowGraphqlClient().mutate({mutation:Mc,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 n=a?.name;await this.getGlobalPropertyStateManager().setAspect(n,a.value,void 0,void 0,a.hidden)}for(const a of t.aspects){const n=a?.name,r=e.find(s=>s.getName()===n);if(r)switch(a.type){case z.FileUpload:{const s=r,o=await Pe([a.value]);o.length>0&&await s.selectImage(o[0]);const l=a.storage?.colors;if(l){const c=Object.fromEntries(l.map(d=>[d.key,{browserValue:d.browserValue,pmsValue:d.pmsValue}])??[]);await s.changeColors(c)}break}case z.ColorOption:{const s=r,l=(await s.getAllVariants()).find(d=>d.getId()===a.value),c=a.storage?a.storage:void 0;l&&await s.selectVariant(l),c?.customColor&&s.setCustomColor(c.customColor);break}case z.Option:{const s=r,l=(await s.getAllVariants()).find(c=>c.getId()===a.value);l&&await s.selectVariant(l);break}case z.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()===z.Option).map(a=>a.getCurrentVariant()?.getPrice()||0).reduce((a,n)=>a+n,0)}getTotalSubunits(){return this.workflowExperiences.map(t=>t.getTotalPriceSubunits()).reduce((t,e)=>t+e,0)}getProductCollection(){return this.productCollection?new Za(this.productCollection):void 0}async initializeAdditionalRequiredColorChannels(t){for(const e of t.getStepsByType(E.Illustration)){const a=e.getGlobalPropertyAspects(this.globalConfigurationPropertyId||"");for(const n of a){const r=this.getGlobalPropertyConfiguration()?.aspects.find(s=>s.name===n);if(r&&r.type===z.ColorOption){const s=e.getCurrentVariant()?.getAssetResource(),o=s?.assetConfiguration?.channelNumbers||[],l=s?.assetConfiguration?.defaultColorVariants||[],c=zi(this,n),d=[...new Set(o.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(n,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 o of t)await this.initializeAdditionalRequiredColorChannels(o);const e=t.map(o=>o.getTransaction().id),a=e.map(o=>this.workflowExperiences.find(l=>l.getTransaction().id===o));if(a.some(o=>!!o))throw new Error("Unable to add transaction to bundle - Already Exists: "+a.filter(o=>!!o).map(o=>o?.getTransaction().id).join(", "));const n=Q.getMap("transactionOwnerIds")||new Map,r=e.map(o=>n.get(o));await y.getShadowGraphqlClient().mutate({mutation:Ol,variables:{id:this.id,transactionIds:e,transactionOwnerIds:r},context:{bundleOwnerId:this.ownerId}}).catch(o=>{console.error(o)}),this.workflowExperiences.push(...t);const s=async()=>{for(const l of t)l.setBundle(this),await this.injectExperienceIntoPreviewService(l);await Promise.all(t.map(l=>l.getWorkflowManager().getInitializationPromise()));const o=await this.getGlobalProperties();for(const l of o)await l.applyGlobalState(t)};await Promise.all([this.updateTransactionOrder(),s()]),await this.initializeUninitializedHandles(),this.workflowExperiences.forEach(o=>o.checkForPriceBreakChanges()),this.fireEvent("workflow-experience-added",{workflowExperiences:this.workflowExperiences})}async appendWorkflowExperience(t,e=!0){const a=t.getTransaction().id;if(this.workflowExperiences.find(o=>o.getTransaction().id===a))throw new Error("Unable to add transaction to bundle - Already Exists!");const s=(Q.getMap("transactionOwnerIds")||new Map).get(a);await y.getShadowGraphqlClient().mutate({mutation:Ql,variables:{id:this.id,transactionId:a},context:{bundleOwnerId:this.ownerId,transactionOwnerId:s}}),e&&(this.workflowExperiences.push(t),this.workflowExperiences.forEach(o=>o.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 n=this.workflowExperiences.find(r=>r.getTransaction().id===e.id);if(n.setBundle(void 0),this.previewService&&n.getWorkflowManager().ejectFromPreviewService(),this.bundleStateManager.removeStateForTransaction(e.id),await y.getShadowGraphqlClient().mutate({mutation:Rl,variables:{id:this.id,transactionId:e.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([r,s])=>({key:r,value:s})),bundleStateData:this.bundleStateManager.getSerializedState()},context:{bundleOwnerId:this.ownerId}}),a){const r=this.workflowExperiences.splice(t,1);this.workflowExperiences.forEach(s=>s.checkForPriceBreakChanges()),n.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(n=>this.workflowExperiences.findIndex(r=>r.getTransaction().id===n.id));if(e.some(n=>n===-1))throw new Error("Unable to remove workflow experience from bundle - The following aren't included in the bundle: "+t.filter((n,r)=>e[r]===-1).map(n=>n.id).join(", "));const a=t.map(n=>this.workflowExperiences.splice(this.workflowExperiences.findIndex(r=>r.getTransaction().id===n.id),1)[0]);a.forEach(n=>n.setBundle(void 0)),[...this.workflowExperiences,...a].forEach(n=>n.checkForPriceBreakChanges()),this.previewService&&a.forEach(n=>n.getWorkflowManager().ejectFromPreviewService()),t.forEach(n=>this.bundleStateManager.removeStateForTransaction(n.id)),await y.getShadowGraphqlClient().mutate({mutation:$l,variables:{id:this.id,transactionIds:t.map(n=>n.id),name:this.name,metadata:Array.from(this.metadata.entries()).map(([n,r])=>({key:n,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(n=>n.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 n=await this.getGlobalProperties();await Promise.all(n.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 y.getShadowGraphqlClient().mutate({mutation:Ul,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 n=a.data.bundleAddStakeholder.bundleStakeholders||[];this.storeStakeholderCustomers(n)}async removeStakeholder(t){if(!(await y.getShadowGraphqlClient().mutate({mutation:Vl,variables:{id:this.id,emailAddress:t},context:{bundleOwnerId:this.ownerId}})).data?.bundleRemoveStakeholder)throw new Error("Bundle not found!")}async updateStakeholders(t){const e=await y.getShadowGraphqlClient().mutate({mutation:Ll,variables:{id:this.id,input:t},context:{bundleOwnerId:this.ownerId}});if(!e.data?.bundleUpdateStakeholders)throw new Error("Bundle not found!");const a=e.data.bundleUpdateStakeholders.bundleStakeholders||[];this.storeStakeholderCustomers(a)}async getAllStakeholders(){const t=await y.getShadowGraphqlClient().query({query:Sn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id},context:{bundleOwnerId:this.ownerId}});if(!t.data.bundles||t.data.bundles.length===0)throw new Error("Bundle not found!");const e=t.data.bundles[0].bundleStakeholders||[];return this.storeStakeholderCustomers(e),e}async getCurrentStakeholder(){const t=await y.getShadowGraphqlClient().query({query:Sn,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id},context:{bundleOwnerId:this.ownerId}});if(!t.data.bundles||t.data.bundles.length===0)throw new Error("Bundle not found!");return t.data.bundles[0].currentBundleStakeholder}storeStakeholderCustomers(t){t.forEach(e=>{e.customer&&this.client.storeCustomer(e.customer)})}async finish(t,e){this.completed&&await y.getShadowGraphqlClient().mutate({mutation:Wl,variables:{bundleId:this.id}});const a=await $i(this.workflowExperiences.map(n=>{const r=n.getWorkflow();if(!r)throw new Error("Unable to create designs - Workflow not found!");const s=n.getProduct();if(!s)throw new Error("Unable to create designs - Product not found!");return{workflowManager:n.getWorkflowManager(),workflow:r,layouts:n.getWorkflowManager().getLayouts(),getReducerState:()=>n.getCommandContext().getState(),product:s,transaction:n.getTransaction(),workflowSelections:n.getWorkflowManager().getWorkflowSelections(),designName:r.name,workflowMetadata:n.getWorkflowManager().getWorkflowMetadata()}}),e?(n,r)=>{const s=this.workflowExperiences.find(o=>o.getTransaction().id===r);return s?e(s,n):(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 y.getShadowGraphqlClient().mutate({mutation:Gl,variables:{bundleId:this.id,globalPropertyConfigurationId:t},context:{bundleOwnerId:this.ownerId}}),this.globalConfigurationPropertyId=t}async assignProductCollection(t){const e=await y.getShadowGraphqlClient().mutate({mutation:ql(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 n=t.metadata.get("workflowManager").getWorkflowExperience().getTransaction(),r=this.workflowExperiences.find(s=>s.getTransaction().id===n.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 n=await this.client.getWorkflowExperiences(t.map(r=>({type:"transaction",transactionId:r})),e,void 0,a);if(n.forEach(r=>r.setBundle(this)),n.forEach(r=>r.checkForPriceBreakChanges()),this.workflowExperiences=n,this.previewService)for(const r of n)await this.injectExperienceIntoPreviewService(r);if(!this.globalPropertyStateManager.getBundleOptions()?.readonly){const r=this.getProductIds()||[],s=this.getProductCollection();if(s&&r.length>0){await s.fetchProducts();const o=s.getProducts(),l=[],c=[];for(const u of r)if(!o.find(h=>h.getId()===u)){for(const h of n)h.getProduct()?.id===u&&c.push(h);l.push(u)}const d=[];l.length>0&&d.push(this.removeProductIds(l)),c.length>0&&d.push(Promise.all(c.map(u=>u.clearProduct()))),d.length>0&&await Promise.all(d)}}}async updateBundle(){if(!(await y.getShadowGraphqlClient().mutate({mutation:Se,variables:{id:this.id,name:this.name,metadata:Array.from(this.metadata.entries()).map(([e,a])=>({key:e,value:a})),bundleStateData:this.bundleStateManager.getSerializedState(),dispatchDate:this.dispatchDate,purchaseOrder:this.purchaseOrder},context:{bundleOwnerId:this.ownerId}})).data?.bundleUpdate)throw new Error("Bundle not found!")}async updateTransactionOrder(){await y.getShadowGraphqlClient().mutate({mutation:zl,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(),n=this.globalPropertyHandleService.applyConditionsFromState(a,t),r=this.globalPropertyHandleService.applyConditionsFromState(a,e);this.checkConditionalHandlesChanged(n,r),this.checkMandatoryHandlesChanged(t,r);const s=this.getGlobalPropertyStateManager();let o=[];for(const u of a)r.find(A=>A.getName()==u.getName())||(o=[...o,u.getName()]);await s.clearAspects(o);const l=r.map(u=>{if(u.getType()===z.ColorOption||u.getType()===z.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=[],n=[],r=[],s=qi(t);e.forEach(o=>{if(o.isMandatory()){const l=o.isMandatoryFulfilled();l?n.push(o):r.push(o);const c=s.get(o.getName());(c===void 0||c!==l)&&a.push(o)}}),this.fireEvent("global-properties-mandatory-changed",{changed:a,completed:n,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 y.getShadowGraphqlClient().mutate({mutation:Hl,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:this.id,note:t,stakeholderId:e}})}async reject(t,e){await y.getShadowGraphqlClient().mutate({mutation:Yl,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 Nc=f.gql`
|
|
2358
|
-
mutation processFlowCreate($processFlowId: String!, $inputs: [String]!) {
|
|
2359
|
-
processExecutionCreate(processFlowId: $processFlowId, inputs: $inputs) {
|
|
2360
|
-
id
|
|
2361
|
-
}
|
|
2362
|
-
}
|
|
2363
|
-
`;class ji{async execute(t,e,a){const r=(await y.getShadowGraphqlClient().mutate({mutation:Nc,variables:{processFlowId:t,inputs:[...e.map(u=>u.getValueForTransmission())]}})).data?.processExecutionCreate?.id;if(!r)throw new Error("Failed to create process execution.");function s(u){return new Promise(A=>{setTimeout(A,u)})}let o=!1,l=0,c,d;for(;!o;){c=await y.getShadowGraphqlClient().query({query:f.gql`
|
|
2364
|
-
query getProcessFlowExecution($ids: [String]!) {
|
|
2365
|
-
processExecutions(ids: $ids) {
|
|
2366
|
-
id
|
|
2367
|
-
completedAt
|
|
2368
|
-
failedAt
|
|
2369
|
-
nodes {
|
|
2370
|
-
id
|
|
2371
|
-
type
|
|
2372
|
-
artifacts
|
|
2373
|
-
}
|
|
2374
|
-
}
|
|
2375
|
-
}
|
|
2376
|
-
`,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){o=!0,d=new Wi(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 s(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 Wi{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 _a{constructor(t){this.value=t}getRaw(){return this.value}getValueForTransmission(){const t=this.value;return t.startsWith("[")?JSON.stringify(JSON.parse(t)):t}}var Hi=(i=>(i.Transaction="Transaction",i.Bundle="Bundle",i.Product="Product",i.Variant="Variant",i.Option="Option",i.LineItem="LineItem",i.Asset="Asset",i))(Hi||{});class Qc extends _a{constructor(t){super(`"${t}"`)}}class tn extends _a{constructor(t,e){if(e!=="Asset"&&!tn.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 Oc extends _a{constructor(t){super(`[${t.map(e=>e.getRaw()).join(",")}]`)}}class ka{constructor(t){this.integrationProduct=t}getId(){return this.integrationProduct.id}getResource(){return this.integrationProduct}getBasePrice(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.basePrice||0,e=this.integrationProduct?.additionalIntegrationProduct;if(!e)return t;if(e&&!e.product)throw new Error("An additional integration product was found, but it does not have a product");return t+(e.product.basePrice||0)}getDefaultWorkflow(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.workflows||[];if(t.length===0)throw new Error("No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product.");return new Tt(t[0])}getAllWorkflows(){if(!this.integrationProduct.product)throw new Error("IntegrationProductResource does not have a product");const t=this.integrationProduct.product.workflows||[];if(t.length===0)throw new Error("No workflows found on product. This is generally due to a configuration error. Please confirm at least one workflow is configured for this product.");return t.sort((e,a)=>(e.index??0)-(a.index??0)).map(e=>new Tt(e))}}const Ee=f.gql`
|
|
2377
|
-
query GetCustomer($emailAddress: String!) {
|
|
2378
|
-
customer(emailAddress: $emailAddress) {
|
|
2379
|
-
id
|
|
2380
|
-
emailAddress
|
|
2381
|
-
defaultTemplateBundleId
|
|
2382
|
-
hasBundleTemplates
|
|
2383
|
-
partner {
|
|
2384
|
-
id
|
|
2385
|
-
}
|
|
2386
|
-
productCollectionCustomers {
|
|
2387
|
-
id
|
|
2388
|
-
productCollection {
|
|
2389
|
-
id
|
|
2390
|
-
}
|
|
2391
|
-
}
|
|
2392
|
-
}
|
|
2393
|
-
}
|
|
2394
|
-
`,Rc=f.gql`
|
|
2395
|
-
mutation CustomerCreate($details: CustomerDetailsInput!) {
|
|
2396
|
-
customerCreate(details: $details) {
|
|
2397
|
-
id
|
|
2398
|
-
emailAddress
|
|
2399
|
-
partner {
|
|
2400
|
-
id
|
|
2401
|
-
}
|
|
2402
|
-
}
|
|
2403
|
-
}
|
|
2404
|
-
`;f.gql`
|
|
2405
|
-
mutation CustomerAuthenticate($loginToken: String!) {
|
|
2406
|
-
customerAuthenticate(loginToken: $loginToken) {
|
|
2407
|
-
id
|
|
2408
|
-
emailAddress
|
|
2409
|
-
stakeholders {
|
|
2410
|
-
id
|
|
2411
|
-
type
|
|
2412
|
-
transaction {
|
|
2413
|
-
id
|
|
2414
|
-
}
|
|
2415
|
-
}
|
|
2416
|
-
bundleStakeholders {
|
|
2417
|
-
id
|
|
2418
|
-
authorizationStatus
|
|
2419
|
-
authorizationDate
|
|
2420
|
-
authorizationNote
|
|
2421
|
-
type
|
|
2422
|
-
bundle {
|
|
2423
|
-
id
|
|
2424
|
-
transactions {
|
|
2425
|
-
id
|
|
2426
|
-
}
|
|
2427
|
-
}
|
|
2428
|
-
}
|
|
2429
|
-
partner {
|
|
2430
|
-
id
|
|
2431
|
-
}
|
|
2432
|
-
}
|
|
2433
|
-
}
|
|
2434
|
-
`;const $c=f.gql`
|
|
2435
|
-
mutation CustomerGenerateVerificationCode($emailAddress: String!) {
|
|
2436
|
-
customerGenerateVerificationCode(emailAddress: $emailAddress)
|
|
2437
|
-
}
|
|
2438
|
-
`;f.gql`
|
|
2439
|
-
mutation CustomerVerifyCode($emailAddress: String!, $verificationCode: String!) {
|
|
2440
|
-
customerVerifyCode(emailAddress: $emailAddress, verificationCode: $verificationCode) {
|
|
2441
|
-
id
|
|
2442
|
-
emailAddress
|
|
2443
|
-
loginToken
|
|
2444
|
-
partner {
|
|
2445
|
-
id
|
|
2446
|
-
}
|
|
2447
|
-
stakeholders {
|
|
2448
|
-
id
|
|
2449
|
-
type
|
|
2450
|
-
transaction {
|
|
2451
|
-
id
|
|
2452
|
-
}
|
|
2453
|
-
}
|
|
2454
|
-
bundleStakeholders {
|
|
2455
|
-
id
|
|
2456
|
-
authorizationStatus
|
|
2457
|
-
authorizationDate
|
|
2458
|
-
authorizationNote
|
|
2459
|
-
type
|
|
2460
|
-
bundle {
|
|
2461
|
-
id
|
|
2462
|
-
transactions {
|
|
2463
|
-
id
|
|
2464
|
-
}
|
|
2465
|
-
}
|
|
2466
|
-
}
|
|
2467
|
-
}
|
|
2468
|
-
}
|
|
2469
|
-
`;const Uc=f.gql`
|
|
2470
|
-
query CustomerMetafields($id: String!) {
|
|
2471
|
-
metafields(entityId: $id) {
|
|
2472
|
-
id
|
|
2473
|
-
createdAt
|
|
2474
|
-
updatedAt
|
|
2475
|
-
entityId
|
|
2476
|
-
value
|
|
2477
|
-
metafieldConfiguration {
|
|
2478
|
-
id
|
|
2479
|
-
createdAt
|
|
2480
|
-
updatedAt
|
|
2481
|
-
entityType
|
|
2482
|
-
metafieldType
|
|
2483
|
-
name
|
|
2484
|
-
}
|
|
2485
|
-
}
|
|
2486
|
-
}
|
|
2487
|
-
`;class Vc{constructor(t,e=y.getShadowGraphqlClient.bind(y)){this.options=t,this.client=e}query(t){const e=this.options?.onQuery?this.options?.onQuery(t):{};return this.client().query({...e,...t,context:{...e.context??{},...t.context??{}}})}mutate(t){const e=this.options?.onMutate?this.options?.onMutate(t):{};return this.client().mutate({...e,...t,context:{...e.context??{},...t.context??{}}})}}class Lc{init(t,e,a){this.cognitoClient=new fe.CognitoIdentityProviderClient({region:e}),this.spiffRegion=t,this.userPoolClientId=a}async generateCode(t){const e=await this.cognitoClient?.send(new fe.InitiateAuthCommand({AuthFlow:"CUSTOM_AUTH",ClientId:this.userPoolClientId,AuthParameters:{USERNAME:t}}));e?.ChallengeName==="CUSTOM_CHALLENGE"&&(this.challengeSession=e.Session)}async verifyCode(t,e,a){const n=await this.cognitoClient?.send(new fe.RespondToAuthChallengeCommand({ClientId:this.userPoolClientId,ChallengeName:"CUSTOM_CHALLENGE",Session:this.challengeSession,ChallengeResponses:{USERNAME:t,ANSWER:e},ClientMetadata:{partnerId:a,environment:(this.spiffRegion||"").toLowerCase()}}));return n?.ChallengeName==="CUSTOM_CHALLENGE"&&(this.challengeSession=n.Session),n}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 fe.InitiateAuthCommand({AuthFlow:"REFRESH_TOKEN_AUTH",ClientId:this.userPoolClientId,AuthParameters:{REFRESH_TOKEN:e.RefreshToken||""}}))}}const jt=new Lc;class Yi{formatCurrencyForDisplay(t,e){const a={amount:e||0,currency:t,precision:this.getPrecisionForCurrency(t)};return Ir(a).toFormat(this.getSpecialFormat(t))}getPrecisionForCurrency(t){const e=t,a=sn.code(e);return a?a.digits:2}getSpecialFormat(t){const e=t;if(sn.code(e)?.code==="CLP")return"USD0,0"}}const Bn=new Yi;class Ji{constructor(t,e,a,n){this.presentmentCurrency=void 0,this.presentmentCurrency=n,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,Bn.getPrecisionForCurrency(e))}subunits(t,e){return t*Math.pow(10,Bn.getPrecisionForCurrency(e))}}const zc=async(i,t)=>{const e=await y.getShadowGraphqlClient().query({query:Gs(t?.assets?.metadata||!1),errorPolicy:"all",variables:{ids:i}});if(e.error)throw e.error;if(e.errors)throw e.errors.forEach(n=>console.error(n)),new Error("Unable to read workflows. Consult GraphQL errors.");if(e.data.workflows===void 0||e.data.workflows.length!==i.length)throw new Error(`Unable to read workflows: ${e.errors??"Length mismatch in response"}`);const a=Ct(e.data.workflows);return a.forEach(n=>{n.finalizeStepConfig||(n.finalizeStepConfig={}),n.finalizeStepConfig.termsMarkdown=n.finalizeStepConfig.termsMarkdown||n.partner.termsMarkdown}),a},qc=async(i,t)=>{const a=(await t).find(n=>n.id===i);if(!a)throw new Error(`Workflow not found: ${i}`);return a},en=async(i,t)=>{const e=i.map(o=>ie.get({id:o,options:t})),a=i.filter((o,l)=>e[l]===void 0);if(a.length===0)return Promise.all(e);const n=zc(a,t),r=a.map(o=>ie.set({id:o,options:t},qc(o,n))),s=e.filter(o=>o!==void 0);return await Promise.all(s.concat(r))},Ki=async(i,t)=>(await en([i],t))[0],Gc=async i=>{const t=await y.getShadowGraphqlClient().query({query:ni,variables:{ids:i},errorPolicy:"all",fetchPolicy:"no-cache"});return t.errors&&console.error(t.errors),t.data.integrationProducts||[]};class jc{constructor(t){this.activeIntegration=void 0,this.updateTransactionState=async e=>{try{return y.getShadowGraphqlClient().mutate({...e,mutation:Fs})}catch(a){throw console.error(a),new mt("Critical - Unable to synchronize workflow state with server.")}},this.options=t,this.options.applicationKey&&Gr(this.options.applicationKey),console.debug("------------------------"),console.debug("Spiff Commerce Core SDK"),console.debug("Version: 40.3.4"),console.debug(`Application Key Provided: ${!!this.options.applicationKey}`),console.debug("------------------------")}configure(t){At.setHubUrl(t.hubUrl),At.setServerUrl(t.serverUrl),At.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&&qn(t.bearerAuthenticationToken),this.options.applicationKey&&this.getIntegration(),this.spiffRegion&&this.userPoolRegion&&this.userPoolClientId&&jt.init(this.spiffRegion,this.userPoolRegion,this.userPoolClientId)}getAssetManager(){return G}async getBetaEnabled(){return this.options.enableBetaFeatures?!0:(await this.getIntegration()).partner.beta===!0}getFlowService(){if(!jr())throw new Error("Application key required to use Flow Service.");return new ji}async getCurrencyContext(t){const a=(await this.getIntegration()).partner.currencyCode,r=await y.getShadowGraphqlClient().query({query:Ks,errorPolicy:"all",fetchPolicy:"cache-first",variables:{from:a,to:t}}),{rateFrom:s,rateTo:o}=r.data.currencyConversion;return new Ji(s,o,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=Xi(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 n=(await y.getShadowGraphqlClient().query({query:Ee,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;return n.id?n.hasBundleTemplates??!1:!1}getStakeholderTypeForTransaction(t){const e=this.customer?.stakeholders?.find(a=>a.transaction?.id===t);if(e)return e.type}async getOrCreateCustomer(t){this.customer=void 0;const e=y.getShadowGraphqlClient(),n=(await e.query({query:Ee,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;if(!n.id){const o=(await e.mutate({mutation:Rc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{details:{emailAddress:t}}})).data?.customerCreate;if(!o)throw new Error("Unable to create customer.");return this.storeCustomer(o),this.customer=o,{customer:o,isAuthenticated:!1}}this.storeCustomer(n);const r=await this.reloadLoggedInCustomer();return{customer:this.customer||n,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 n=JSON.parse(e),r=new Date().getTime()/1e3;if(!n.ExpiresIn||n.ExpiresIn<r-parseInt(t)){const l=await jt.refreshTokens();if(l?.AuthenticationResult)localStorage.setItem("last-refreshed-cognito-tokens",`${new Date().getTime()/1e3}`),n.AccessToken=l.AuthenticationResult.AccessToken,localStorage.setItem("cognito-tokens",JSON.stringify(n));else return this.logOut(),console.error("Failed to refresh tokens."),!1}const o=(await y.getShadowGraphqlClient().query({query:Ee,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:a}})).data.customer;return o.id?(this.customer=o,!0):(console.error("Failed to get customer."),!1)}async generateVerificationCode(t){await y.getShadowGraphqlClient().mutate({mutation:$c,variables:{emailAddress:t}}),await jt.generateCode(t)}async verifyCode(t,e){const a=(await this.getIntegration()).partner.id||"",n=await jt.verifyCode(t,e,a);if(n?.AuthenticationResult){localStorage.setItem("last-refreshed-cognito-tokens",`${new Date().getTime()/1e3}`),localStorage.setItem("cognito-tokens",JSON.stringify(n.AuthenticationResult)),localStorage.setItem("cognito-email",t);const s=(await y.getShadowGraphqlClient().query({query:Ee,errorPolicy:"all",fetchPolicy:"no-cache",variables:{emailAddress:t}})).data.customer;if(!s.id)throw new Error("Failed to get customer.");return this.customer=s,!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),n=new Date().getTime()/1e3,r=!a?.AccessToken||Te(a.AccessToken);if(!a.ExpiresIn||a.ExpiresIn<n-parseInt(t)||r){const s=await jt.refreshTokens();if(s?.AuthenticationResult)localStorage.setItem("last-refreshed-cognito-tokens",`${new Date().getTime()/1e3}`),a.AccessToken=s.AuthenticationResult.AccessToken,localStorage.setItem("cognito-tokens",JSON.stringify(a));else throw this.logOut(),new Error("Failed to refresh tokens.")}if(!a.AccessToken)throw new Error("No bearer token in storage.");return a.AccessToken}async getCustomerMetafields(){if(!this.customer?.id)throw new Error("Customer must be logged in before calling this function.");return(await y.getShadowGraphqlClient().query({query:Uc,variables:{id:this.customer.id}})).data.metafields}async getNewBundle(t,e,a){const r=(await y.getShadowGraphqlClient().mutate({mutation:Tl(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 s=Q.getMap("bundlePartnerIds")||new Map;s.set(r.id,r.partner.id),Q.setMap("bundlePartnerIds",s);const o=Q.getMap("bundleOwnerIds")||new Map;o.set(r.id,r.bundleOwnerId),Q.setMap("bundleOwnerIds",o);const l=new In(this,r,void 0,void 0,r.bundleOwnerId,{eagerFetchProducts:a?.graphql?.productCollection?.eagerFetchProducts});return await l.getInitializationPromise(),l}async getExistingBundle(t,e,a,n,r){const o=Q.getMap("bundleOwnerIds")?.get(t),l={};try{const g=await this.loggedInBearerToken();l.Authorization=`Bearer ${g}`}catch{const m=Object.entries(localStorage).find(([S,w])=>S.startsWith("CognitoIdentityServiceProvider")&&S.endsWith("idToken"))?.[0]||"",C=localStorage.getItem(m);C&&!Te(C)&&(l.Authorization=`Bearer ${C}`)}const c={bundleOwnerId:o,...l,...n?.graphql?.additionalHeaders},d=await y.getShadowGraphqlClient().query({query:xl(n?.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 In(this,u,e,a,o,{additionalHeaders:n?.graphql?.additionalHeaders,eagerFetchProducts:n?.graphql?.productCollection?.eagerFetchProducts,existingGlobalPropertyState:d.data.globalPropertyState,readonly:n?.readonly},r);return await h.getInitializationPromise(),h}async duplicateBundle(t,e,a,n){const s={...await _i(t),...n?.graphql?.additionalHeaders},l=(await y.getShadowGraphqlClient().mutate({mutation:Nl(),variables:{id:t,template:e,marketplaceThemeInstallId:this.marketplaceThemeInstallId,marketplaceThemeInstallConfigurationId:this.marketplaceThemeInstallConfigurationId,duplicateTransactions:a},context:{headers:s},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:n?.graphql?.productCollection?.eagerFetchProducts||!1}}})}async getBundlesForCustomer(t){if(!this.customer?.id)throw new Error("Customer not authenticated.");const{includeMetadata:e,...a}=t;return(await y.getShadowGraphqlClient().query({query:jl(e??!1),variables:{...a,id:this.customer.id},fetchPolicy:"no-cache"})).data.customerBundlesFeed}async getBundleStakeholders(){if(!this.customer)throw new Error("Customer not authenticated.");const t=await y.getShadowGraphqlClient().query({query:Fl,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||[],n=Q.getMap("bundlePartnerIds")||new Map;return a.forEach(r=>{r.bundle?.id&&r.bundle.partner?.id&&n.set(r.bundle.id,r.bundle.partner.id)}),Q.setMap("bundlePartnerIds",n),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),n=a[0],r=n.getWorkflow();return e&&!r&&console.error("No workflow instantiated when trying to create preview service."),e&&r&&await n.getWorkflowManager().injectIntoPreviewService(e(r)),a[0]}async getWorkflowExperiences(t,e,a,n){if(t.length===0)throw new mt("No options provided!");const r=t.map((x,T)=>({option:x,index:T})),s=r.filter(x=>x.option.type==="transaction"),o=r.filter(x=>x.option.type==="integration"||x.option.type==="external"||x.option.type==="blank"),l=50,c=ga(s,l),d=ga(o,l);let u=0;const A=y.getShadowGraphqlClient(),h=async x=>{if(x.length===0)return[];const T=x.map(X=>X.option.transactionId),L=await A.query({query:xs,variables:{ids:T},errorPolicy:"all",fetchPolicy:"no-cache"}),k=L.data.transactions;if(u=u+k.length,n&&n(u,s.length),k.length!==x.length){const X=L.errors?.[0]?.message||"Unknown error";throw new mt(`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(ht=>ht.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:Ps,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 mt(`Failed to create transactions: ${k}`)}return u=u+L.length,n&&n(u,s.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),C=[...new Set(p.map(x=>x.workflowId))].filter(x=>x!==void 0),[S,w]=await Promise.all([(async()=>m.length>0?await Gc(m):[])(),(async()=>C.length>0?await en(C,e):[])()]),F=new Map(S.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,ht=t[X];if(T.integrationProductId){const rt=F.get(T.integrationProductId);T.integrationProduct=rt,T.product=rt?.product,T.integrationProduct||console.error("failed to find transaction's product")}const me=Q.getMap("transactionOwnerIds")||new Map;!me.get(T.id)&&T.transactionOwnerId&&(me.set(T.id,T.transactionOwnerId),Q.setMap("transactionOwnerIds",me));const _e=me.get(T.id)||void 0,or=new Vc({onMutate:()=>({context:{transactionOwnerId:_e,bundleOwnerId:e?.bundleOwnerId}}),onQuery:()=>({context:{transactionOwnerId:_e,bundleOwnerId:e?.bundleOwnerId}})}),pe={workflow:bt,transaction:T,singleVariantsRenderable:ht?.workflowConfiguration?.singleVariantsRenderable,stateMutationFunc:k?async()=>{throw new O("State mutation is forbidden in read only mode!")}:async rt=>this.updateTransactionState({...rt,context:{transactionOwnerId:_e,bundleOwnerId:e?.bundleOwnerId}}),graphQlClient:()=>or,readOnly:k,isReloadedTransaction:ht.type==="transaction"};if(ht.type==="transaction"&&T.workflowState){const rt=JSON.parse(T.workflowState);await Ia(rt),pe.reloadedState=rt}else if(!k&&ht.workflowState){const rt=JSON.parse(ht.workflowState);await Ia(rt),pe.reloadedState=rt}return pe.delayWorkflowStateSync=!0,{experienceOptions:pe,index:X,options:ht}}),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 Ui(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 y.getShadowGraphqlClient().query({query:Os(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 ka(r[0])}async getIntegrationProductFromExternalIds(t,e,a){const s=(await y.getShadowGraphqlClient().query({query:Rs(a),variables:{externalProductId:e,externalIntegrationId:t},fetchPolicy:"no-cache",errorPolicy:"all"})).data?.integrationProductFromExternalIds;if(!s?.id)throw new Error("Integration product not found.");return new ka(s)}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,n=await y.getShadowGraphqlClient().query({query:Ns,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:t},context:{transactionOwnerId:a}});if(!n.data.transactions||n.data.transactions.length!==1)throw new Error(`Failed to fetch share actions for transaction: ${t}`);return n.data.transactions[0].transactionShareActions}async placeOrder(t){const e=await y.getShadowGraphqlClient().mutate({mutation:Js,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 Xi=async(i,t)=>(await y.getShadowGraphqlClient().query({query:Ws,errorPolicy:"all",fetchPolicy:"no-cache",context:{headers:{"x-application-key":i},skipIntegrationCheck:!0},variables:{themeConfigurationId:t}})).data.currentIntegration,Wc=async i=>{const e=await y.getShadowGraphqlClient().query({query:Ts,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:i}});if(e.data.transactions.length!==0)return e.data.transactions[0]},Hc=async(i,t)=>(await y.getShadowGraphqlClient().query({query:js,errorPolicy:"all",variables:{themeConfigurationId:i,themeInstallId:t}})).data?.marketplaceThemeInstallConfiguration,Yc=async i=>(await y.getShadowGraphqlClient().query({query:Ys,errorPolicy:"all",variables:{id:i}})).data?.bundles?.[0]?.marketplaceThemeInstallConfiguration,Jc=async i=>(await y.getShadowGraphqlClient().query({query:Hs,errorPolicy:"all",variables:{id:i}})).data?.transactions?.[0]?.marketplaceThemeInstallConfiguration;async function Zi(){const i={};try{const t=await this.loggedInBearerToken();i.Authorization=`Bearer ${t}`}catch{const a=Object.entries(localStorage).find(([r,s])=>r.startsWith("CognitoIdentityServiceProvider")&&r.endsWith("idToken"))?.[0]||"",n=localStorage.getItem(a);n&&!Te(n)&&(i.Authorization=`Bearer ${n}`)}return i}async function _i(i){const e=Q.getMap("bundleOwnerIds")?.get(i),a=await Zi();return{bundleOwnerId:e,...a}}async function Kc(i){const e=Q.getMap("transactionOwnerIds")?.get(i),a=await Zi();return{transactionOwnerId:e,...a}}const Xc=async i=>{const t=await _i(i),e=await y.getShadowGraphqlClient().mutate({mutation:tc,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:i},context:{headers:t}});if(e.data?.bundleDelete!==i)throw new Error(`Failed to delete bundle: ${e.errors}`)},Zc=async i=>{const t=await Kc(i),e=await y.getShadowGraphqlClient().mutate({mutation:ec,errorPolicy:"all",fetchPolicy:"no-cache",variables:{ids:[i]},context:{headers:t}});if(!e.data?.transactions||e.data.transactions.length!==1||e.data.transactions[0].id!==i)throw new Error(`Failed to find transaction to read bundle id: ${JSON.stringify(e.errors)}`);return e.data.transactions[0].bundle?.id};function tr(i,t,e,a){const n=e.width*i.zoom,r=e.height*i.zoom;if(a){const o=i,l=Math.max(t.width/e.width,t.height/e.height);o.zoom=Math.max(l,i.zoom);const c=e.width*o.zoom,d=e.height*o.zoom;return o.x=be(i.x,t.width-c,0),o.y=be(i.y,t.height-d,0),o}const s=i;return s.x=be(s.x,-n,t.width),s.y=be(s.y,-r,t.height),s}function be(i,t,e){return Math.min(Math.max(i,t),e)}class er{constructor(t,e){this.minZoomScale=[.03],this.maxZoomScale=[20],this._debouncedUpdateFrameOffsets=xn(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 n=a;if(n.currentFrameSources){let r=!1;for(let s=0;s<n.currentFrameSources.length;s++){const o=n.currentFrameSources[s],l=await he(o),c=this.frameData?this.frameData[s]:void 0;te(l,c)||(this.frameData||(this.frameData=new Array(n.currentFrameSources.length)),this.frameData[s]=l,r=!0)}r&&(this.onFrameDataChangeListeners.forEach(s=>s(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 n=Dt.get(e);n&&(this.frameData||(this.frameData=new Array(t.length)),this.frameData[a]=n)})}getImageData(){return this.imageData}getImageSrc(){if(this.imageData){if(this.imageData.svg){const t=qe(this.imageData.svg,this.imageData.colors||{},!1);return Le(t)}return this.imageData.src}}getOffsets(){return this.offsets}setOffsets(t){this.offsets=t}setZoom(t,e,a,n){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((s,o)=>{const l=(e[o]-this.offsets[o].x)/this.offsets[o].zoom,c=(a[o]-this.offsets[o].y)/this.offsets[o].zoom,d=e[o]-l*t[o],u=a[o]-c*t[o];return{x:d,y:u,zoom:this.imageData.width*t[o]/this.imageData.width}});this.updateOffsets(r,n),this.onZoomChangeListeners.forEach(s=>s(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 n=this.imageData;if(!n||!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((s,o)=>!(t[o].x===s.x&&t[o].y===s.y&&t[o].zoom===s.zoom))&&!a){e&&e();return}(!this.offsets||this.offsets.length!==this.frameData.length)&&(this.offsets=new Array(this.frameData.length)),this.frameData.forEach((s,o)=>{this.offsets[o]=tr(t[o],s,this.imageData,this.forceImageCover)}),this._debouncedUpdateFrameOffsets(this.offsets,n,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,n,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 s=this.workflowManager.getRegionElements(this.stepName||""),o=this.workflowManager.getCommandDispatcher();this.targetElements.forEach((l,c)=>{let d=s.find(u=>u.id===l)?.regionIndex??c;d>=t.length&&(d=c),o(new U([new To(l,e,t[d]),new No(l,n.useThreshold,n.invertThreshold,n.threshold,n.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,n)=>{const r=Math.max(a.width/t.width,a.height/t.height);this.forceImageCover?(this.minZoomScale[n]=r,this.maxZoomScale[n]=r*2.5):(this.minZoomScale[n]=r/10,this.maxZoomScale[n]=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]=Va(t,e,this.initialZoom&&!this.forceImageCover?{scale:this.initialZoom}:void 0,this.forceImageCover)}),this._debouncedUpdateFrameOffsets(this.offsets,t,this.frameData,this.thresholdSettings))}}class _c{traversableScenes(){throw new Error("Method not implemented.")}updateRecipient(t,e,a,n,r,s,o,l,c,d,u,A,h,g,p,m,C){throw new Error("Method not implemented.")}approveTransaction(t){throw new Error("Method not implemented.")}rejectTransaction(t){throw new Error("Method not implemented.")}getClient(){return this.client??{}}getWorkflowExperience(){return{}}setClient(t){this.client=t}getInitializationPromise(){return Promise.resolve()}isInitialized(){return!0}getInformationResults(){return[]}async reset(){}updateStateWithServer(t){}async outstandingRequestsPromise(){}async updateStateWithServerImmediate(t){}addPoller(t){}addConfirmCallback(t){}addEditedCallback(t){}addElementsCallback(t){}addInformationResultCallback(t){}addInitCallback(t){}addMakingAdjustmentsCallback(t){}addMandatoryCallback(t){}addMetadataCallback(t){}addSelectionCallback(t){}addStepSpecificStorageCallback(t,e){}addStorageCallback(t){}getCommandDispatcher(){return t=>{}}getLayouts(){return[]}getLayoutPreviewService(){return{getAll:()=>new Map}}getPreviewService(){}getModelContainer(){}getRegionElements(t){return[]}getSerializedStep(t,e){}getStepSpecificServices(t){}getTransaction(){return{id:""}}getTransactionCustomer(){}setTransactionCustomer(){}setTransactionCustomerDetails(){}getInitialOptionIds(){return new Promise(()=>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 ar=(i=>(i.SelectFrame="SelectFrame",i.SelectImage="SelectImage",i.Position="Position",i))(ar||{});class nr extends Z{constructor(t,e,a){super(t,e,a);const n=e.data;this.frameService=new er(n.forceImageCover,n.initialZoomLevel),this.frameService.connectWorkflowManager(t,e.stepName)}selectVariant(t){const e=this.manager.getRegionElements(this.step.stepName);return gt.selectVariant(this.step,t.getResource(),e,this.manager,a=>this.setUpdateState(a))}onFrameDataChanged(t){this.frameService&&this.frameService.onFrameDataChanged(e=>{e&&t(e)})}async selectImage(t,e=!0,a=!0){if(await gt.selectImage(this.step,t,this.manager,a),e){const n=this.manager.getStepStorage(this.step.stepName)?.framePatternData||{};this.manager.updateStorage(this.step.stepName,{framePatternData:{...n,originalAssetKey:t.key,backgroundRemovedAssetKey:void 0,useOriginalAsset:void 0}})}}async canUseAdvancedImageManipulation(){return this.manager.getClient().canUseAddon(Oe.AdvancedImageManipulation)}async canRemoveBackground(){return await this.canUseAdvancedImageManipulation()&&this.hasOriginalImageSelection()&&!!this.frameService?.getImageData()?.src&&!this.frameService?.getImageData()?.svg}async removeBackgroundFromImageSelection(t=!0){if(!await this.canUseAdvancedImageManipulation())throw new Error("The current Integration does not have access to the Background Remover. Please call canUseAdvancedImageManipulation 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 G.removeBackgroundFromAsset(e);t&&await gt.selectImage(this.step,a,this.manager,!1);const n=this.manager.getStepStorage(this.step.stepName)?.framePatternData||{};return this.manager.updateStorage(this.step.stepName,{framePatternData:{...n,backgroundRemovedAssetKey:a.key,useOriginalAsset:!t}}),a}async vectorize(t,e=void 0){const a=t??await this.getOriginalImageSelection();if(!a)throw new Error("You must supply an image selection before attempting to vectorize the image.");const n=await G.vectorizeAsset(a,e);await this.selectImage(n,t!==void 0);const r=this.manager.getStepStorage(this.step.stepName)?.framePatternData||{};return this.manager.updateStorage(this.step.stepName,{framePatternData:{...r,vectorizedAssetKey:n.key,useOriginalAsset:!1}}),n}async getBackgroundRemovedImageSelection(){const t=this.manager.getStepStorage(this.step.stepName)?.framePatternData?.backgroundRemovedAssetKey;if(t)return G.getLocalOrFromServer(t)}async getVectorizedImageSelection(){const t=this.manager.getStepStorage(this.step.stepName)?.framePatternData?.vectorizedAssetKey;if(t)return G.getLocalOrFromServer(t)}hasOriginalImageSelection(){return!!this.manager.getStepStorage(this.step.stepName)?.framePatternData?.originalAssetKey}hasBackgroundRemovedImageSelection(){return!!this.getFrameStepStorage()?.framePatternData?.backgroundRemovedAssetKey}hasVectorizedImageSelection(){return!!this.getFrameStepStorage()?.framePatternData?.vectorizedAssetKey}async changeColors(t){await gt.changeColors(this.step,this.manager,t)}getImageData(){if(this.frameService)return this.frameService.getImageData()}async getColorOption(){return await I.ensureFullOption(this.step.data.colorOption)}getAvailableColors(){return this.step.data.colorPickerEnabled?gt.availableColors(this.step,this.manager):Promise.resolve([])}isColorPickerEnabled(){return this.step.data.colorPickerEnabled??!1}async getOriginalImageColors(){const t=this.getImageData();return t?.svg?(await it(t.svg)).colors:void 0}getShouldVectorize(){return this.step.data.shouldVectorize??!1}getVectorizeMaxColors(){return this.step.data.vectorizeMaxColors}getMaxAllowedColors(){return this.step.data.maxColors}getUniqueColorCount(){return gt.getUniqueColorCount(this.step,this.manager)}getCurrentFrameStep(t,e,a,n){return n&&n.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 G.getLocalOrFromServer(t)}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 n=await this.getBackgroundRemovedImageSelection();if(!n)throw new Error("You must call removeBackgroundFromImageSelection before attempting to apply the image.");await this.selectImage(n,!1,!1)}this.manager.updateStorage(this.step.stepName,{framePatternData:{...e,useOriginalAsset:t}})}getFrameStepStorage(){return this.manager.getStepStorage(this.step.stepName)}isVariantCategoriesEnabled(){return this.step.data.enableVariantCategories??!1}}const td=f.gql`
|
|
2488
|
-
query GetLoggedInCustomer($email: String!) {
|
|
2489
|
-
customer(emailAddress: $email) {
|
|
2490
|
-
id
|
|
2491
|
-
defaultTemplateBundleId
|
|
2492
|
-
}
|
|
2493
|
-
}
|
|
2494
|
-
`,an=f.gql`
|
|
2495
|
-
query GetCustomerTransactions(
|
|
2496
|
-
$id: String!
|
|
2497
|
-
$limit: Int!
|
|
2498
|
-
$offset: Int!
|
|
2499
|
-
$startDate: String
|
|
2500
|
-
$endDate: String
|
|
2501
|
-
$filters: TransactionFiltersInput
|
|
2502
|
-
$quicksearch: String
|
|
2503
|
-
) {
|
|
2504
|
-
customerTransactionsFeed(
|
|
2505
|
-
id: $id
|
|
2506
|
-
limit: $limit
|
|
2507
|
-
offset: $offset
|
|
2508
|
-
startDate: $startDate
|
|
2509
|
-
endDate: $endDate
|
|
2510
|
-
filters: $filters
|
|
2511
|
-
quicksearch: $quicksearch
|
|
2512
|
-
) {
|
|
2513
|
-
items {
|
|
2514
|
-
id
|
|
2515
|
-
createdAt
|
|
2516
|
-
designName
|
|
2517
|
-
integrationType
|
|
2518
|
-
status
|
|
2519
|
-
workflowState
|
|
2520
|
-
workflowViewerLink
|
|
2521
|
-
workflowViewerReadOnlyLink
|
|
2522
|
-
product {
|
|
2523
|
-
minimumOrderQuantity
|
|
2524
|
-
id
|
|
2525
|
-
name
|
|
2526
|
-
}
|
|
2527
|
-
}
|
|
2528
|
-
total
|
|
2529
|
-
}
|
|
2530
|
-
}
|
|
2531
|
-
`,ed=f.gql`
|
|
2532
|
-
mutation SetTransactionDesignName($id: String!, $name: String!) {
|
|
2533
|
-
transactionUpdate(id: $id, designName: $name) {
|
|
2534
|
-
id
|
|
2535
|
-
designName
|
|
2536
|
-
}
|
|
2537
|
-
}
|
|
2538
|
-
`,ad=f.gql`
|
|
2539
|
-
mutation DuplicateTransaction($id: String!, $template: Boolean!) {
|
|
2540
|
-
transactionDuplicate(id: $id, template: $template) {
|
|
2541
|
-
id
|
|
2542
|
-
workflowViewerLink
|
|
2543
|
-
}
|
|
2544
|
-
}
|
|
2545
|
-
`,nd=f.gql`
|
|
2546
|
-
query GetCustomerBundles($id: String!, $limit: Int!, $offset: Int!) {
|
|
2547
|
-
customerBundlesFeed(id: $id, limit: $limit, offset: $offset) {
|
|
2548
|
-
items {
|
|
2549
|
-
id
|
|
2550
|
-
workflowViewerLink
|
|
2551
|
-
createdAt
|
|
2552
|
-
dispatchDate
|
|
2553
|
-
purchaseOrder
|
|
2554
|
-
name
|
|
2555
|
-
ordered
|
|
2556
|
-
}
|
|
2557
|
-
total
|
|
2558
|
-
}
|
|
2559
|
-
}
|
|
2560
|
-
`,id=f.gql`
|
|
2561
|
-
query GetTransactionsForBundle($id: String!) {
|
|
2562
|
-
bundles(ids: [$id]) {
|
|
2563
|
-
id
|
|
2564
|
-
transactions {
|
|
2565
|
-
id
|
|
2566
|
-
createdAt
|
|
2567
|
-
designName
|
|
2568
|
-
integrationType
|
|
2569
|
-
status
|
|
2570
|
-
workflowState
|
|
2571
|
-
workflowViewerLink
|
|
2572
|
-
workflowViewerReadOnlyLink
|
|
2573
|
-
product {
|
|
2574
|
-
minimumOrderQuantity
|
|
2575
|
-
id
|
|
2576
|
-
name
|
|
2577
|
-
}
|
|
2578
|
-
}
|
|
2579
|
-
}
|
|
2580
|
-
}
|
|
2581
|
-
`,rd=f.gql`
|
|
2582
|
-
mutation SetBundleName($id: String!, $name: String!) {
|
|
2583
|
-
bundleUpdate(id: $id, name: $name) {
|
|
2584
|
-
id
|
|
2585
|
-
name
|
|
2586
|
-
}
|
|
2587
|
-
}
|
|
2588
|
-
`,sd=f.gql`
|
|
2589
|
-
mutation DuplicateBundle($id: String!, $template: Boolean!) {
|
|
2590
|
-
bundleDuplicate(id: $id, template: $template) {
|
|
2591
|
-
id
|
|
2592
|
-
workflowViewerLink
|
|
2593
|
-
}
|
|
2594
|
-
}
|
|
2595
|
-
`,od=f.gql`
|
|
2596
|
-
query GetBundleTemplates($id: String!, $limit: Int!, $offset: Int!) {
|
|
2597
|
-
customerBundlesFeed(id: $id, limit: $limit, offset: $offset, template: true) {
|
|
2598
|
-
items {
|
|
2599
|
-
id
|
|
2600
|
-
workflowViewerLink
|
|
2601
|
-
createdAt
|
|
2602
|
-
name
|
|
2603
|
-
ordered
|
|
2604
|
-
}
|
|
2605
|
-
total
|
|
2606
|
-
}
|
|
2607
|
-
}
|
|
2608
|
-
`,ld=async(i,t,e)=>await y.getShadowGraphqlClient().mutate({mutation:rd,errorPolicy:"all",variables:{id:i,name:t},context:e}),cd=async(i,t)=>await y.getShadowGraphqlClient().mutate({mutation:ed,errorPolicy:"all",variables:{id:i,name:t}}),dd=async(i,t)=>await y.getShadowGraphqlClient().mutate({mutation:sd,errorPolicy:"all",variables:{id:i,template:t}}),ud=async(i,t)=>await y.getShadowGraphqlClient().mutate({mutation:ad,errorPolicy:"all",variables:{id:i,template:t}}),Ad=async i=>(await y.getShadowGraphqlClient().query({query:td,errorPolicy:"all",variables:{email:i}})).data.customer,hd=async(i,t,e)=>await y.getShadowGraphqlClient().query({query:nd,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:i,offset:e,limit:t}}),gd=async(i,t)=>await y.getShadowGraphqlClient().query({query:id,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:i},context:t}),md=async(i,t,e)=>(await y.getShadowGraphqlClient().query({query:an,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:i,quicksearch:"",filters:{link:"and",status:{operator:"isAnyOf",values:["Created","DesignCompleted","ExternallyOrdered"]},template:{value:"false"}},offset:e,limit:t}}))?.data.customerTransactionsFeed?.items||[],pd=async(i,t,e)=>(await y.getShadowGraphqlClient().query({query:an,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:i,quicksearch:"",filters:{link:"and",status:{operator:"equals",value:"Ordered"},template:{value:"false"}},offset:e,limit:t}}))?.data.customerTransactionsFeed?.items||[],fd=async(i,t,e)=>(await y.getShadowGraphqlClient().query({query:an,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:i,quicksearch:"",filters:{link:"and",template:{value:"true"}},offset:e,limit:t}}))?.data.customerTransactionsFeed?.items||[],Cd=async(i,t,e)=>(await y.getShadowGraphqlClient().query({query:od,errorPolicy:"all",fetchPolicy:"no-cache",variables:{id:i,offset:e,limit:t}}))?.data.customerBundlesFeed?.items||[],ir=f.gql`
|
|
2609
|
-
fragment AddressValidationResultFields on AddressValidationResult {
|
|
2610
|
-
addressComplete
|
|
2611
|
-
address {
|
|
2612
|
-
formattedAddress
|
|
2613
|
-
regionCode
|
|
2614
|
-
postalCode
|
|
2615
|
-
administrativeArea
|
|
2616
|
-
locality
|
|
2617
|
-
sublocality
|
|
2618
|
-
}
|
|
2619
|
-
components {
|
|
2620
|
-
name
|
|
2621
|
-
type
|
|
2622
|
-
confirmationLevel
|
|
2623
|
-
inferred
|
|
2624
|
-
spellCorrected
|
|
2625
|
-
replaced
|
|
2626
|
-
unexpected
|
|
2627
|
-
}
|
|
2628
|
-
missingComponentTypes
|
|
2629
|
-
}
|
|
2630
|
-
`,nn=f.gql`
|
|
2631
|
-
${ir}
|
|
2632
|
-
fragment AddressValidationJobFields on AddressValidationJob {
|
|
2633
|
-
id
|
|
2634
|
-
entityId
|
|
2635
|
-
status
|
|
2636
|
-
createdAt
|
|
2637
|
-
updatedAt
|
|
2638
|
-
result {
|
|
2639
|
-
...AddressValidationResultFields
|
|
2640
|
-
}
|
|
2641
|
-
}
|
|
2642
|
-
`,wd=f.gql`
|
|
2643
|
-
${nn}
|
|
2644
|
-
query GetAddressValidationJobs($ids: [String!]!) {
|
|
2645
|
-
addressValidationJobs(ids: $ids) {
|
|
2646
|
-
...AddressValidationJobFields
|
|
2647
|
-
}
|
|
2648
|
-
}
|
|
2649
|
-
`,yd=f.gql`
|
|
2650
|
-
${nn}
|
|
2651
|
-
query GetRecipientsWithAddressValidationJobs($ids: [String!]!) {
|
|
2652
|
-
recipients(ids: $ids) {
|
|
2653
|
-
id
|
|
2654
|
-
addressValidationJob {
|
|
2655
|
-
...AddressValidationJobFields
|
|
2656
|
-
}
|
|
2657
|
-
}
|
|
2658
|
-
}
|
|
2659
|
-
`,Sd=f.gql`
|
|
2660
|
-
${ir}
|
|
2661
|
-
mutation ValidateRecipientAddress($id: String!) {
|
|
2662
|
-
recipientValidate(id: $id) {
|
|
2663
|
-
...AddressValidationResultFields
|
|
2664
|
-
}
|
|
2665
|
-
}
|
|
2666
|
-
`,vd=f.gql`
|
|
2667
|
-
${nn}
|
|
2668
|
-
mutation BatchValidateRecipientAddress($ids: [String!]!) {
|
|
2669
|
-
recipientValidateBatch(ids: $ids) {
|
|
2670
|
-
...AddressValidationJobFields
|
|
2671
|
-
}
|
|
2672
|
-
}
|
|
2673
|
-
`,Ed=f.gql`
|
|
2674
|
-
mutation OverrideRecipientAddress($id: String!) {
|
|
2675
|
-
recipientOverrideAddress(id: $id) {
|
|
2676
|
-
id
|
|
2677
|
-
}
|
|
2678
|
-
}
|
|
2679
|
-
`;var rr=(i=>(i.Confirmed="Confirmed",i.Plausible="Plausible",i.Unlikely="Unlikely",i))(rr||{}),sr=(i=>(i.Created="Created",i.Processing="Processing",i.Completed="Completed",i.Failed="Failed",i.Cancelled="Cancelled",i))(sr||{});const bd=async i=>{const t=i.map(a=>a.getTransaction().recipient?.id).filter(a=>!!a),e=await y.getShadowGraphqlClient().query({query:yd,errorPolicy:"all",fetchPolicy:"network-only",variables:{ids:t}});return i.map(a=>{const n=a.getTransaction().recipient?.id;if(n)return e.data?.recipients?.find(r=>r.id===n)?.addressValidationJob})},Id=async i=>(await y.getShadowGraphqlClient().query({query:wd,errorPolicy:"all",fetchPolicy:"network-only",variables:{ids:i}})).data?.addressValidationJobs,Bd=async i=>i.getTransaction().recipient?.id?(await y.getShadowGraphqlClient().mutate({mutation:Sd,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:i.getTransaction().recipient.id}})).data?.recipientValidate:void 0,Pd=async i=>{const t=i.map(a=>a.getTransaction().recipient?.id).filter(a=>!!a),e=await y.getShadowGraphqlClient().mutate({mutation:vd,errorPolicy:"all",fetchPolicy:"network-only",variables:{ids:t}});return i.map(a=>{const n=a.getTransaction().recipient?.id;if(n)return e.data?.recipientValidateBatch?.find(r=>r.entityId===n)})},xd=async i=>{const t=i.getTransaction().recipient?.id;if(!t)return;(await y.getShadowGraphqlClient().mutate({mutation:Ed,errorPolicy:"all",fetchPolicy:"network-only",variables:{id:t}})).data?.recipientOverrideAddress?.id&&(i.getTransaction().addressValidationStatus=Ta.Overridden)},Fd=f.gql`
|
|
2680
|
-
query GetIntegrationProductsForIds($ids: [String!]!) {
|
|
2681
|
-
integrationProducts(ids: $ids) {
|
|
2682
|
-
id
|
|
2683
|
-
product {
|
|
2684
|
-
id
|
|
2685
|
-
name
|
|
2686
|
-
}
|
|
2687
|
-
}
|
|
2688
|
-
}
|
|
2689
|
-
`,Dd=async i=>(await y.getShadowGraphqlClient().query({query:Fd,variables:{ids:i}})).data.integrationProducts;exports.AddonHandle=Oe;exports.AddressValidationJobStatus=sr;exports.AddressValidationResultConfirmationLevel=rr;exports.AddressValidationStatus=Ta;exports.ArrayInput=Oc;exports.AspectType=z;exports.AssetNotFoundError=wt;exports.AssetType=ee;exports.BringForwardCommand=Uo;exports.BringToBackCommand=$o;exports.BringToFrontCommand=Ro;exports.BundleDesignCreationCartAddMode=Mn;exports.CanvasCommand=$;exports.CollectionProduct=Ht;exports.ColorOptionGlobalPropertyHandle=Fa;exports.CommandContext=hi;exports.ConversionDataType=Jt;exports.CreateElementCommand=W;exports.CreateLayoutCommand=qa;exports.CurrencyContext=Ji;exports.CurrencyService=Yi;exports.DeleteElementCommand=xt;exports.DigitalContentStepHandle=Oi;exports.FileUploadGlobalPropertyHandle=Vi;exports.FlowExecutionNodeResult=Yt;exports.FlowExecutionResult=Wi;exports.FlowService=ji;exports.FontAlignmentCommand=wi;exports.FontColorCommand=fi;exports.FontSizeCommand=Ci;exports.FontSourceCommand=Ba;exports.FrameService=er;exports.FrameStep=ar;exports.FrameStepHandle=nr;exports.GlobalPropertyHandle=Ze;exports.GroupCommand=U;exports.IllustrationStepHandle=xi;exports.InformationMessageType=ge;exports.InformationStepHandle=Qi;exports.IntegrationProduct=ka;exports.IntegrationType=Nn;exports.LayoutElementFactory=Fo;exports.LayoutElementType=D;exports.LayoutNotFoundError=J;exports.LayoutRenderingPurpose=Nt;exports.MaterialStepHandle=Fi;exports.MisconfigurationError=st;exports.MockWorkflowManager=_c;exports.ModelStepHandle=Di;exports.ModuleStepHandle=Ri;exports.MoveCommand=Do;exports.ObjectInput=tn;exports.ObjectInputType=Hi;exports.OptionGlobalPropertyHandle=Xa;exports.OptionNotFoundError=ae;exports.ParseError=It;exports.PictureStepHandle=ki;exports.ProductCameraRig=Qn;exports.ProductCollection=Za;exports.ProductCollectionProductSortKey=Gi;exports.ProductWorkflow=Tt;exports.PromiseCache=ie;exports.PromiseQueue=Ye;exports.QuestionStepHandle=Mi;exports.QueueablePromise=He;exports.ResizeCommand=Mo;exports.ResourceNotFoundError=Qt;exports.RotateCommand=ko;exports.ScaleAxis=Y;exports.SendBackwardsCommand=Vo;exports.ShapeStepHandle=Ti;exports.ShareActionType=Tn;exports.SpiffCommerceClient=jc;exports.StakeholderType=Na;exports.StepAspectType=kn;exports.StepHandle=Z;exports.StepType=E;exports.TextAlgorithm=Bt;exports.TextChangeCommand=yi;exports.TextGlobalPropertyHandle=Li;exports.TextInput=Qc;exports.TextStepHandle=Ni;exports.UnhandledBehaviorError=O;exports.UnitOfMeasurement=On;exports.UpdateImageSourceCommand=Qo;exports.Variant=at;exports.WorkflowExperienceEventType=Ne;exports.WorkflowExperienceImpl=Ui;exports.amtChannelsForAspect=zi;exports.assetService=G;exports.browserColorToHex=Wn;exports.cmPerPixel=Ao;exports.currentDirection=lo;exports.dataUrlFromExternalUrl=Ur;exports.deleteBundle=Xc;exports.designService=Be;exports.determineCorrectFontSizeAndLines=Xt;exports.digitalContentStepService=Ga;exports.domParser=ot;exports.duplicateBundle=dd;exports.duplicateTransaction=ud;exports.fetchAsString=tt;exports.findAngle=eo;exports.findElement=V;exports.findPmsColors=is;exports.frameDataCache=Dt;exports.frameStepService=gt;exports.generate=N;exports.generateCommands=Ii;exports.generateSVGWithUnknownColors=it;exports.generateStateFromDesignInputSteps=vl;exports.getAddressValidationJobs=Id;exports.getAttributesFromArrayBuffer=ce;exports.getAxisAlignedBoundingBox=to;exports.getBoundedOffsets=tr;exports.getBundleIdForTransaction=Zc;exports.getBundleThemeConfiguration=Yc;exports.getCustomer=Ad;exports.getCustomerBundles=hd;exports.getElementVertices=co;exports.getFrameData=he;exports.getGlobalPropertyStateForBundle=Bl;exports.getIntegration=Xi;exports.getIntegrationProducts=Dd;exports.getNEPoint=so;exports.getNWPoint=ro;exports.getOrderedTransactions=pd;exports.getOverrideThemeConfiguration=Hc;exports.getPointOfRotation=io;exports.getProductCollections=Fc;exports.getSEPoint=oo;exports.getSvgElement=Je;exports.getTemplateBundles=Cd;exports.getTemplateTransactions=fd;exports.getTransaction=Wc;exports.getTransactionThemeConfiguration=Jc;exports.getTransactionsForBundle=gd;exports.getTransformedAssetURL=Ge;exports.getTrueCoordinates=no;exports.getUnorderedTransactions=md;exports.getValidationJobsForWorkflowExperiences=bd;exports.getWorkflow=Ki;exports.getWorkflows=en;exports.graphQlManager=y;exports.illustrationStepService=Kt;exports.isCloseToValue=ao;exports.loadFont=Pt;exports.matchHexToPms=es;exports.materialStepService=ja;exports.metafieldManager=Qe;exports.mmPerPixel=uo;exports.modelStepService=Wa;exports.modifySVGColors=qe;exports.moduleStepService=Ha;exports.nameBundle=ld;exports.nameTransaction=cd;exports.optionService=I;exports.outlineFontsInSvg=fo;exports.overrideWorkflowExperienceRecipientAddress=xd;exports.patternImageDataCache=ut;exports.persistenceService=Q;exports.pictureStepService=Ya;exports.pmsToRgb=ts;exports.questionStepService=Ja;exports.registerFetchImplementation=Nr;exports.registerWindowImplementation=Tr;exports.rehydrateSerializedLayout=Ia;exports.rgbToPms=jn;exports.rotateAroundPoint=Wt;exports.sanitizeSvgTree=ze;exports.setBearerAuthenticationToken=qn;exports.setCanvasModule=Oa;exports.shapeStepService=kt;exports.shortenUrl=Si;exports.spiffCoreConfiguration=At;exports.stepAspectValuesToDesignInputSteps=Sl;exports.svgColorValueToDefinition=Sa;exports.svgStringDimensions=za;exports.svgToDataUrl=Le;exports.textStepService=H;exports.toast=Ei;exports.validateWorkflowExperienceRecipient=Bd;exports.validateWorkflowExperienceRecipients=Pd;exports.xmlSerializer=Et;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-Fm4XiPgH.cjs");exports.AddonHandle=e.AddonHandle;exports.AddressValidationJobStatus=e.AddressValidationJobStatus;exports.AddressValidationResultConfirmationLevel=e.AddressValidationResultConfirmationLevel;exports.AddressValidationStatus=e.AddressValidationStatus;exports.ArrayInput=e.ArrayInput;exports.AspectType=e.AspectType;exports.AssetNotFoundError=e.AssetNotFoundError;exports.AssetType=e.AssetType;exports.BringForwardCommand=e.BringForwardCommand;exports.BringToBackCommand=e.BringToBackCommand;exports.BringToFrontCommand=e.BringToFrontCommand;exports.BundleDesignCreationCartAddMode=e.BundleDesignCreationCartAddMode;exports.CanvasCommand=e.CanvasCommand;exports.CollectionProduct=e.CollectionProduct;exports.ColorOptionGlobalPropertyHandle=e.ColorOptionGlobalPropertyHandle;exports.CommandContext=e.CommandContext;exports.ConversionDataType=e.ConversionDataType;exports.CreateElementCommand=e.CreateElementCommand;exports.CreateLayoutCommand=e.CreateLayoutCommand;exports.CurrencyContext=e.CurrencyContext;exports.CurrencyService=e.CurrencyService;exports.DeleteElementCommand=e.DeleteElementCommand;exports.DigitalContentStepHandle=e.DigitalContentStepHandle;exports.FileUploadGlobalPropertyHandle=e.FileUploadGlobalPropertyHandle;exports.FlowExecutionNodeResult=e.FlowExecutionNodeResult;exports.FlowExecutionResult=e.FlowExecutionResult;exports.FlowService=e.FlowService;exports.FontAlignmentCommand=e.FontAlignmentCommand;exports.FontColorCommand=e.FontColorCommand;exports.FontSizeCommand=e.FontSizeCommand;exports.FontSourceCommand=e.FontSourceCommand;exports.FrameService=e.FrameService;exports.FrameStep=e.FrameStep;exports.FrameStepHandle=e.FrameStepHandle;exports.GlobalPropertyHandle=e.GlobalPropertyHandle;exports.GroupCommand=e.GroupCommand;exports.IllustrationStepHandle=e.IllustrationStepHandle;exports.InformationMessageType=e.InformationMessageType;exports.InformationStepHandle=e.InformationStepHandle;exports.IntegrationProduct=e.IntegrationProduct;exports.IntegrationType=e.IntegrationType;exports.LayoutElementFactory=e.LayoutElementFactory;exports.LayoutElementType=e.LayoutElementType;exports.LayoutNotFoundError=e.LayoutNotFoundError;exports.LayoutRenderingPurpose=e.LayoutRenderingPurpose;exports.MaterialStepHandle=e.MaterialStepHandle;exports.MisconfigurationError=e.MisconfigurationError;exports.MockWorkflowManager=e.MockWorkflowManager;exports.ModelStepHandle=e.ModelStepHandle;exports.ModuleStepHandle=e.ModuleStepHandle;exports.MoveCommand=e.MoveCommand;exports.ObjectInput=e.ObjectInput;exports.ObjectInputType=e.ObjectInputType;exports.OptionGlobalPropertyHandle=e.OptionGlobalPropertyHandle;exports.OptionNotFoundError=e.OptionNotFoundError;exports.ParseError=e.ParseError;exports.PictureStepHandle=e.PictureStepHandle;exports.ProductCameraRig=e.ProductCameraRig;exports.ProductCollection=e.ProductCollection;exports.ProductCollectionProductSortKey=e.ProductCollectionProductSortKey;exports.ProductWorkflow=e.ProductWorkflow;exports.PromiseCache=e.promiseCache;exports.PromiseQueue=e.PromiseQueue;exports.QuestionStepHandle=e.QuestionStepHandle;exports.QueueablePromise=e.QueueablePromise;exports.ResizeCommand=e.ResizeCommand;exports.ResourceNotFoundError=e.ResourceNotFoundError;exports.RotateCommand=e.RotateCommand;exports.ScaleAxis=e.ScaleAxis;exports.SendBackwardsCommand=e.SendBackwardsCommand;exports.ShapeStepHandle=e.ShapeStepHandle;exports.ShareActionType=e.ShareActionType;exports.SpiffCommerceClient=e.SpiffCommerceClient;exports.StakeholderType=e.StakeholderType;exports.StepAspectType=e.StepAspectType;exports.StepHandle=e.StepHandle;exports.StepType=e.StepType;exports.TextAlgorithm=e.TextAlgorithm;exports.TextChangeCommand=e.TextChangeCommand;exports.TextGlobalPropertyHandle=e.TextGlobalPropertyHandle;exports.TextInput=e.TextInput;exports.TextStepHandle=e.TextStepHandle;exports.UnhandledBehaviorError=e.UnhandledBehaviorError;exports.UnitOfMeasurement=e.UnitOfMeasurement;exports.UpdateImageSourceCommand=e.UpdateImageSourceCommand;exports.Variant=e.Variant;exports.WorkflowExperienceEventType=e.WorkflowExperienceEventType;exports.WorkflowExperienceImpl=e.WorkflowExperienceImpl;exports.amtChannelsForAspect=e.amtChannelsForAspect;exports.assetService=e.assetService;exports.browserColorToHex=e.browserColorToHex;exports.cmPerPixel=e.cmPerPixel;exports.currentDirection=e.currentDirection;exports.dataUrlFromExternalUrl=e.dataUrlFromExternalUrl;exports.deleteBundle=e.deleteBundle;exports.designService=e.designService;exports.determineCorrectFontSizeAndLines=e.determineCorrectFontSizeAndLines;exports.digitalContentStepService=e.digitalContentStepService;exports.domParser=e.domParser;exports.duplicateBundle=e.duplicateBundle;exports.duplicateTransaction=e.duplicateTransaction;exports.fetchAsString=e.fetchAsString;exports.findAngle=e.findAngle;exports.findElement=e.findElement;exports.findPmsColors=e.findPmsColors;exports.frameDataCache=e.frameDataCache;exports.frameStepService=e.frameStepService;exports.generate=e.generate;exports.generateCommands=e.generateCommands;exports.generateSVGWithUnknownColors=e.generateSVGWithUnknownColors;exports.generateStateFromDesignInputSteps=e.generateStateFromDesignInputSteps;exports.getAddressValidationJobs=e.getAddressValidationJobs;exports.getAttributesFromArrayBuffer=e.getAttributesFromArrayBuffer;exports.getAxisAlignedBoundingBox=e.getAxisAlignedBoundingBox;exports.getBoundedOffsets=e.getBoundedOffsets;exports.getBundleIdForTransaction=e.getBundleIdForTransaction;exports.getBundleThemeConfiguration=e.getBundleThemeConfiguration;exports.getCustomer=e.getCustomer;exports.getCustomerBundles=e.getCustomerBundles;exports.getElementVertices=e.getElementVertices;exports.getFrameData=e.getFrameData;exports.getGlobalPropertyStateForBundle=e.getGlobalPropertyStateForBundle;exports.getIntegration=e.getIntegration;exports.getIntegrationProducts=e.getIntegrationProducts;exports.getNEPoint=e.getNEPoint;exports.getNWPoint=e.getNWPoint;exports.getOrderedTransactions=e.getOrderedTransactions;exports.getOverrideThemeConfiguration=e.getOverrideThemeConfiguration;exports.getPointOfRotation=e.getPointOfRotation;exports.getProductCollections=e.getProductCollections;exports.getSEPoint=e.getSEPoint;exports.getSvgElement=e.getSvgElement;exports.getTemplateBundles=e.getTemplateBundles;exports.getTemplateTransactions=e.getTemplateTransactions;exports.getTransaction=e.getTransaction;exports.getTransactionThemeConfiguration=e.getTransactionThemeConfiguration;exports.getTransactionsForBundle=e.getTransactionsForBundle;exports.getTransformedAssetURL=e.getTransformedAssetURL;exports.getTrueCoordinates=e.getTrueCoordinates;exports.getUnorderedTransactions=e.getUnorderedTransactions;exports.getValidationJobsForWorkflowExperiences=e.getValidationJobsForWorkflowExperiences;exports.getWorkflow=e.getWorkflow;exports.getWorkflows=e.getWorkflows;exports.graphQlManager=e.graphQlManager;exports.illustrationStepService=e.illustrationStepService;exports.isCloseToValue=e.isCloseToValue;exports.loadFont=e.loadFont;exports.matchHexToPms=e.matchHexToPms;exports.materialStepService=e.materialStepService;exports.metafieldManager=e.metafieldManager;exports.mmPerPixel=e.mmPerPixel;exports.modelStepService=e.modelStepService;exports.modifySVGColors=e.modifySVGColors;exports.moduleStepService=e.moduleStepService;exports.nameBundle=e.nameBundle;exports.nameTransaction=e.nameTransaction;exports.optionService=e.optionService;exports.outlineFontsInSvg=e.outlineFontsInSvg;exports.overrideWorkflowExperienceRecipientAddress=e.overrideWorkflowExperienceRecipientAddress;exports.patternImageDataCache=e.patternImageDataCache;exports.persistenceService=e.persistenceService;exports.pictureStepService=e.pictureStepService;exports.pmsToRgb=e.pmsToRgb;exports.questionStepService=e.questionStepService;exports.registerFetchImplementation=e.registerFetchImplementation;exports.registerWindowImplementation=e.registerWindowImplementation;exports.rehydrateSerializedLayout=e.rehydrateSerializedLayout;exports.rgbToPms=e.rgbToPms;exports.rotateAroundPoint=e.rotateAroundPoint;exports.sanitizeSvgTree=e.sanitizeSvgTree;exports.setBearerAuthenticationToken=e.setBearerAuthenticationToken;exports.setCanvasModule=e.setCanvasModule;exports.shapeStepService=e.shapeStepService;exports.shortenUrl=e.shortenUrl;exports.spiffCoreConfiguration=e.spiffCoreConfiguration;exports.stepAspectValuesToDesignInputSteps=e.stepAspectValuesToDesignInputSteps;exports.svgColorValueToDefinition=e.svgColorValueToDefinition;exports.svgStringDimensions=e.svgStringDimensions;exports.svgToDataUrl=e.svgToDataUrl;exports.textStepService=e.textStepService;exports.toast=e.toast;exports.validateWorkflowExperienceRecipient=e.validateWorkflowExperienceRecipient;exports.validateWorkflowExperienceRecipients=e.validateWorkflowExperienceRecipients;exports.xmlSerializer=e.xmlSerializer;
|
|
2690
2
|
//# sourceMappingURL=index.cjs.map
|