customerio-gist-web 3.22.4 → 3.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/gist.min.js +1 -1
- package/dist/types/gist.d.ts +2 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/managers/inbox-component-styles.d.ts +1 -1
- package/dist/types/managers/message-component-manager.d.ts +4 -1
- package/dist/types/templates/embed.d.ts +1 -1
- package/dist/types/templates/message.d.ts +1 -1
- package/dist/types/templates/tooltip.d.ts +1 -1
- package/dist/types/types.d.ts +10 -0
- package/package.json +1 -1
package/dist/gist.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Gist=e():t.Gist=e()}(this,()=>(()=>{"use strict";var t={d:(e,n)=>{for(var i in n)t.o(n,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:n[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{default:()=>Zn});class n{constructor(){this.callbacks={}}on(t,e){const n=this.callbacks[t];n?n.push(e):this.callbacks[t]=[e]}off(t,e){const n=this.callbacks[t];if(!n)return;if(!e)return void delete this.callbacks[t];const i=n.indexOf(e);-1!==i&&n.splice(i,1),0===n.length&&delete this.callbacks[t]}dispatch(t,e){const n=this.callbacks[t];n&&[...n].forEach(n=>{try{n(e)}catch(e){console.warn(`[Gist] Error in "${t}" event listener:`,e)}})}}function i(t){Zn.config&&Zn.config.logging&&console.log(`Gist: ${t}`)}const o="gist.web.isPersistingSession";function s(t,e,n=null){let i=n;i||(i=new Date,i.setDate(i.getDate()+365));const o={value:e,expiry:i};d().setItem(t,JSON.stringify(o))}function a(t){return c(t)}function r(t){d().removeItem(t)}function l(){const t=sessionStorage.getItem(o);return null===t?(sessionStorage.setItem(o,"true"),!0):"true"===t}function d(){return l()?localStorage:sessionStorage}function c(t){if(!t)return null;try{const e=d().getItem(t);if(!e)return null;const n=JSON.parse(e);if(!n.expiry)return n.value;if(t.startsWith("gist.")){const e=new Date,i=new Date(n.expiry),o=t.startsWith("gist.web.message.broadcasts")&&!t.endsWith("shouldShow")&&!t.endsWith("numberOfTimesShown")||t.startsWith("gist.web.message.user")&&!t.endsWith("seen")&&!t.endsWith("state"),s=new Date(e.getTime()+366e4);if(o&&i.getTime()>s.getTime())return r(t),null;if(e.getTime()>i.getTime())return r(t),null}return n.value}catch(e){i(`Error checking key ${t} for expiry: ${e}`)}return null}const p=new Uint8Array(16),u=[];for(let t=0;t<256;++t)u.push((t+256).toString(16).slice(1));const g=function(t,e,n){return e||t||!crypto.randomUUID?function(t,e,n){const i=(t=t||{}).random??t.rng?.()??crypto.getRandomValues(p);if(i.length<16)throw new Error("Random bytes length must be >= 16");if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){if((n=n||0)<0||n+16>e.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[n+t]=i[t];return e}return function(t,e=0){return(u[t[e+0]]+u[t[e+1]]+u[t[e+2]]+u[t[e+3]]+"-"+u[t[e+4]]+u[t[e+5]]+"-"+u[t[e+6]]+u[t[e+7]]+"-"+u[t[e+8]]+u[t[e+9]]+"-"+u[t[e+10]]+u[t[e+11]]+u[t[e+12]]+u[t[e+13]]+u[t[e+14]]+u[t[e+15]]).toLowerCase()}(i)}(t,e,n):crypto.randomUUID()},m="gist.web.inbox.enabled",h="gist.web.userQueueUseSSE",f="gist.web.activeSSEConnection";let b,y=30;const v={RENDERER_HOST:{prod:"https://code.gist.build",dev:"https://code.gist.build",local:"http://localhost:9998"},ENGINE_API_ENDPOINT:{prod:"https://engine.api.gist.build",dev:"https://engine.api.dev.gist.build",local:"http://engine.api.local.gist.build:82"},GIST_QUEUE_API_ENDPOINT:{prod:"https://consumer.cloud.gist.build",dev:"https://consumer.cloud.dev.gist.build",local:"http://localhost:3010"},GIST_QUEUE_REALTIME_API_ENDPOINT:{prod:"https://realtime.cloud.gist.build",dev:"https://realtime.cloud.dev.gist.build",local:"http://localhost:3009"},GIST_VIEW_ENDPOINT:{prod:"https://renderer.gist.build/3.0",dev:"https://renderer.gist.build/3.0",local:"http://localhost:9998"},getSdkId:()=>(b||(b=g()),b),useSSE:()=>a(h)??!1,setUseSSEFlag(t){s(h,t,new Date((new Date).getTime()+6e4)),i(`Set user uses SSE to "${t}"`)},removeActiveSSEConnection(){r(f)},setActiveSSEConnection(){s(f,v.getSdkId(),new Date((new Date).getTime()+v.getSSEHeartbeat()))},hasActiveSSEConnection:()=>a(f)??!1,isSSEConnectionManagedBySDK:()=>a(f)===v.getSdkId(),getSSEHeartbeat:()=>1e3*(y+5),setSSEHeartbeat(t){t&&t>0&&(y=t)},inboxEnabled:()=>a(m)??!1,setInboxEnabledFlag(t){s(m,t,new Date((new Date).getTime()+36e5)),i(`Set inbox enabled to "${t}"`)}};function w(t){return null!==t&&"object"==typeof t&&"response"in t}function x(t){return w(t)?t.response:void 0}function S(){const t=v.GIST_QUEUE_API_ENDPOINT[Zn.config.env??"prod"],e={"X-CIO-Site-Id":Zn.config.siteId,"X-CIO-Client-Platform":"web"},n=Mt();async function i(n,i={}){const o=t+n,s=new AbortController,a=setTimeout(()=>s.abort(),5e3);try{const t=await fetch(o,{method:i.method||"GET",headers:{...e,...i.headers||{}},body:i.method&&"GET"!==i.method.toUpperCase()?i.body:void 0,signal:s.signal});clearTimeout(a);const n=t.headers.get("content-type")?.includes("application/json"),r=n?await t.json():await t.text(),l=Object.fromEntries(t.headers.entries());if(t.status<200||t.status>=400)throw function(t){return Object.assign(new Error,{response:t})}({status:t.status,data:r,headers:l});return{status:t.status,headers:l,data:r}}catch(t){if(clearTimeout(a),w(t))throw t;if(t instanceof Error)throw Object.assign(t,{response:{status:0,data:t.message||"Unknown error",headers:{}}});throw t}}return null!=n&&(e["X-Gist-Encoded-User-Token"]=n),i.post=(t,e={},n={})=>i(t,{method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json",...n.headers||{}}}),i}const I="gist.web.userLocale";function C(){const t=a(I);return null!==t?t:navigator.language}const $="gist.web.branding";async function k(){if(null!==a($))return void i("Branding already cached.");const t=await async function(){try{return await S()("/api/v1/branding")}catch(t){return x(t)}}();if(t&&t.status>=200&&t.status<300){const e=new Date;e.setMinutes(e.getMinutes()+10),s($,t.data,e),i("Branding fetched and cached.")}}function E(){return a($)}const j="gist.web.templates";async function L(){if(null!==a(j))return void i("Templates already cached.");const t=await async function(){try{return await S()("/api/v1/templates")}catch(t){return x(t)}}();if(t&&t.status>=200&&t.status<300){const e=new Date;e.setMinutes(e.getMinutes()+60),s(j,t.data,e),i("Templates fetched and cached.")}}function T(){return a(j)}function P(t){try{return(document.getElementById(t)??document.querySelector(t))||null}catch{return null}}function D(t,e={}){const n=document.createElement(t);for(const[t,i]of Object.entries(e))n[t]=i;return n}function N(t,e){if(document.getElementById(t))return;const n=document.createElement("style");n.id=t,n.textContent=e,document.head.appendChild(n)}function M(t){document.body?document.body.appendChild(t):document.addEventListener("DOMContentLoaded",()=>document.body.appendChild(t),{once:!0})}async function A(t){try{return await S().post(`/api/v1/logs/queue/${t}`)}catch(t){return x(t)}}const R="messageInboxUpdated",q="inboxMessageAction";async function z(t){const e=await B();if(!e)return;const n=new Date;n.setMinutes(n.getMinutes()+60),s(e,t,n),Zn.events.dispatch(R,t)}async function W(){const t=await B();if(!t)return[];const e=a(t)??[],n=new Date;return e.filter(t=>!t.expiry||new Date(t.expiry)>n)}async function _(t,e){const n=await B();if(!n)return;const o=await async function(t,e){try{return await S()(`/api/v1/messages/${t}`,{method:"PATCH",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}})}catch(t){return x(t)}}(t,{opened:e});if(!o||o.status<200||o.status>=300){const t=`Failed to mark inbox message opened: ${o?.status??"unknown error"}`;throw i(t),new Error(t)}const a=await W();let r=null;const l=a.map(n=>{if(n.queueId===t){const t={...n,opened:e};return r=t,t}return n}),d=new Date;if(d.setMinutes(d.getMinutes()+60),s(n,l,d),r){const t=e?"opened":"unopened";Zn.events.dispatch(q,{message:r,action:t})}Zn.events.dispatch(R,await W())}async function O(t){const e=await B();if(!e)return;const n=await W(),o=n.find(e=>e.queueId===t)??null,a=n.filter(e=>e.queueId!==t),r=new Date;r.setMinutes(r.getMinutes()+60),s(e,a,r),o&&Zn.events.dispatch(q,{message:o,action:"dismissed"}),Zn.events.dispatch(R,await W());const l=await A(t);(!l||l.status<200||l.status>=300)&&i(`Failed to log inbox message view: ${l?.status??"unknown error"}`)}async function B(){const t=await Nt();return t?`gist.web.inbox.messages.${t}`:null}const U="jist",H={start:"flex-start",end:"flex-end",center:"center",stretch:"stretch",baseline:"baseline"},F={start:"flex-start",end:"flex-end",center:"center","space-between":"space-between","space-around":"space-around","space-evenly":"space-evenly"};function V(t){return"number"==typeof t?`${t}px`:"fill"===t?"100%":t}function G(t){try{return new Date(t).toLocaleDateString(navigator.language)}catch{return t}}class X{#t;#e;#n;#i=0;constructor({formatDate:t,onAction:e,templates:n}={}){this.#t=t||G,this.#e=e||null,this.#n=n||{}}render(t,e){if(!t)return null;switch(t.type){case"layout":return this.#o(t,e);case"action":return this.#s(t,e);case"heading":return this.#a(t,e);case"text":return this.#r("p",t,e);case"date":return this.#l(t,e);case"button":return this.#d(t,e);case"image":return this.#c(t,e);case"dynamicLayout":return this.#p(t,e);case"template":return this.#u(t,e);default:return null}}#o(t,e){const n=document.createElement("div");n.style.display="flex",n.style.flexDirection="horizontal"===t.direction?"row":"column",t.gap&&(n.style.gap=V(t.gap)),t.align&&(n.style.alignItems=H[t.align]||t.align),t.justify&&(n.style.justifyContent=F[t.justify]||t.justify),t.margin&&(t.margin.top&&(n.style.marginTop=V(t.margin.top)),t.margin.right&&(n.style.marginRight=V(t.margin.right)),t.margin.bottom&&(n.style.marginBottom=V(t.margin.bottom)),t.margin.left&&(n.style.marginLeft=V(t.margin.left)));const i="horizontal"===t.direction,o=i&&(!t.justify||"start"===t.justify),s=i||"center"!==t.align?i||"end"!==t.align?"":"right":"center";for(const i of t.children||[]){const t=this.render(i,e);t&&(o&&"layout"===i.type&&(t.style.flex="1",t.style.minWidth="0"),s&&(t.style.textAlign=s),n.appendChild(t))}return n}#s(t,e){const n=t.name||"action",i=document.createElement("div");this.#g(i,"action",n),i.setAttribute("role","button"),i.setAttribute("tabindex","0");for(const n of t.children||[]){const t=this.render(n,e);t&&i.appendChild(t)}const o=e[n],s=t.meta||null;if(this.#e){const t=this.#e,e=e=>{e.stopPropagation(),t({component:"action",name:n,data:o,meta:s,event:e})};i.addEventListener("click",e),i.addEventListener("keydown",t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e(t))})}return i}#a(t,e){const n=t.variant||"h3";return this.#r(n,t,e,n)}#r(t,e,n,i){const o=e.name||e.type,s=document.createElement(t);return this.#g(s,e.type,o,i||e.variant),s.textContent=n[o]||"",s}#l(t,e){const n=t.name||"date",i=document.createElement("time");this.#g(i,"date",n,t.variant);const o=e[n];return i.textContent=o?this.#t(o,n):"",i}#d(t,e){const n=t.name||"button",i=e[n];if(!i)return null;const o=document.createElement("button");this.#g(o,"button",n,t.variant),o.textContent=i.label,i.disabled&&(o.disabled=!0);const s=t.meta||null;return o.addEventListener("click",t=>{t.stopPropagation(),this.#e&&this.#e({component:"button",name:n,data:i,meta:s,event:t})}),o}#c(t,e){const n=t.name||"image",i=e[n];if(!i)return null;const o=document.createElement("div");this.#g(o,"image",n,t.variant),o.style.overflow="hidden";const s=document.createElement("img");return s.src=i,s.alt=e.title||"",s.style.display="block",t.width&&(s.style.width=V(t.width)),t.height&&(s.style.height=V(t.height)),t.objectFit&&(s.style.objectFit=t.objectFit),t.borderRadius&&(s.style.borderRadius=V(t.borderRadius)),o.appendChild(s),o}#p(t,e){const n=e[t.name];if(!Array.isArray(n))return null;const i=document.createElement("div"),o=t.direction||"vertical";i.style.display="flex",i.style.flexDirection="horizontal"===o?"row":"column",t.gap&&(i.style.gap=V(t.gap)),t.align&&(i.style.alignItems=H[t.align]||t.align),t.justify&&(i.style.justifyContent=F[t.justify]||t.justify),t.margin&&(t.margin.top&&(i.style.marginTop=V(t.margin.top)),t.margin.right&&(i.style.marginRight=V(t.margin.right)),t.margin.bottom&&(i.style.marginBottom=V(t.margin.bottom)),t.margin.left&&(i.style.marginLeft=V(t.margin.left)));for(const e of n){const n="object"==typeof e&&null!==e?e:{},o=this.render(t.template,n);o&&i.appendChild(o)}return i}#u(t,e){const n=this.#n[t.name];if(!n||this.#i>=10)return null;this.#i++;const i=this.render(n.root,e);return this.#i--,i}#g(t,e,n,i){t.classList.add(`${U}__${e}`),i&&t.classList.add(`${U}__${e}--${i}`),n!==e&&t.classList.add(`${U}__${n}`)}}var J;const Q=new Set(["fontWeight","maxLines","lineHeight","opacity"]),Y=new Set(["lineHeight","letterSpacing"]),K={"text-font-size":"font-size","text-font-weight":"font-weight","text-font-family":"font-family","text-color":"color","text-line-height":"line-height","text-letter-spacing":"letter-spacing","text-max-lines":"-webkit-line-clamp","background-color":"background-color","border-width":"border-width","border-color":"border-color","border-radius":"border-radius","padding-top":"padding-top","padding-right":"padding-right","padding-bottom":"padding-bottom","padding-left":"padding-left","margin-top":"margin-top","margin-right":"margin-right","margin-bottom":"margin-bottom","margin-left":"margin-left","min-width":"min-width","min-height":"min-height"},Z=["shadow-offset-x","shadow-offset-y","shadow-blur","shadow-color"],tt={"shadow-offset-x":"0","shadow-offset-y":"0","shadow-blur":"0","shadow-color":"transparent"},et={heading:new Set(["text","padding","margin"]),text:new Set(["text","padding","margin"]),date:new Set(["text","padding","margin"]),button:new Set(["text","background","border","shadow","padding","margin","minWidth","minHeight","states"]),image:new Set(["border","padding","margin"])},nt=["hover","active","disabled"],it=[["background-color","background-color"],["color","text-color"]];class ot extends HTMLElement{static observedAttributes=["template","data","theme","mode"];static#m=!1;static#h=null;static#f=0;static#b=new Map;static#y(){if(J.#m)return;if(J.#m=!0,document.querySelector("style[data-jist-base]"))return;const t=document.createElement("style");t.setAttribute("data-jist-base",""),t.textContent="/* ═══════════════════════════════════════════\n Jist Template Styles\n ═══════════════════════════════════════════ */\n\n/* ── Host Element ───────────────────────── */\n\njist-template {\n display: block;\n}\n\n/* ── Base Reset ─────────────────────────── */\n\n.jist__heading,\n.jist__text,\n.jist__date {\n margin: 0;\n padding: 0;\n}\n\n/* ── Heading ────────────────────────────── */\n\n.jist__heading {\n font-size: var(--jist-heading-text-font-size, 16px);\n font-weight: var(--jist-heading-text-font-weight, 600);\n color: var(--jist-heading-text-color, #000000);\n font-family: var(--jist-heading-text-font-family, inherit);\n line-height: var(--jist-heading-text-line-height, 1.3);\n letter-spacing: var(--jist-heading-text-letter-spacing, normal);\n padding-top: var(--jist-heading-padding-top, 0);\n padding-right: var(--jist-heading-padding-right, 0);\n padding-bottom: var(--jist-heading-padding-bottom, 0);\n padding-left: var(--jist-heading-padding-left, 0);\n margin-top: var(--jist-heading-margin-top, 0);\n margin-right: var(--jist-heading-margin-right, 0);\n margin-bottom: var(--jist-heading-margin-bottom, 0);\n margin-left: var(--jist-heading-margin-left, 0);\n /* Line clamping — active when --jist-heading-text-max-lines is set */\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--jist-heading-text-max-lines, none);\n overflow: hidden;\n}\n\n/* ── Text ───────────────────────────────── */\n\n.jist__text {\n font-size: var(--jist-text-text-font-size, 14px);\n font-weight: var(--jist-text-text-font-weight, 400);\n color: var(--jist-text-text-color, #000000);\n font-family: var(--jist-text-text-font-family, inherit);\n line-height: var(--jist-text-text-line-height, 1.5);\n letter-spacing: var(--jist-text-text-letter-spacing, normal);\n padding-top: var(--jist-text-padding-top, 0);\n padding-right: var(--jist-text-padding-right, 0);\n padding-bottom: var(--jist-text-padding-bottom, 0);\n padding-left: var(--jist-text-padding-left, 0);\n margin-top: var(--jist-text-margin-top, 0);\n margin-right: var(--jist-text-margin-right, 0);\n margin-bottom: var(--jist-text-margin-bottom, 0);\n margin-left: var(--jist-text-margin-left, 0);\n /* Line clamping — active when --jist-text-text-max-lines is set */\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--jist-text-text-max-lines, none);\n overflow: hidden;\n}\n\n/* ── Date ───────────────────────────────── */\n\n.jist__date {\n font-size: var(--jist-date-text-font-size, 12px);\n font-weight: var(--jist-date-text-font-weight, 400);\n color: var(--jist-date-text-color, #000000);\n font-family: var(--jist-date-text-font-family, inherit);\n line-height: var(--jist-date-text-line-height, 1.4);\n letter-spacing: var(--jist-date-text-letter-spacing, normal);\n padding-top: var(--jist-date-padding-top, 0);\n padding-right: var(--jist-date-padding-right, 0);\n padding-bottom: var(--jist-date-padding-bottom, 0);\n padding-left: var(--jist-date-padding-left, 0);\n margin-top: var(--jist-date-margin-top, 0);\n margin-right: var(--jist-date-margin-right, 0);\n margin-bottom: var(--jist-date-margin-bottom, 0);\n margin-left: var(--jist-date-margin-left, 0);\n}\n\n/* ── Button ─────────────────────────────── */\n\n.jist__button {\n appearance: none;\n -webkit-appearance: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n font-size: var(--jist-button-text-font-size, 14px);\n font-weight: var(--jist-button-text-font-weight, 500);\n color: var(--jist-button-text-color, #ffffff);\n font-family: var(--jist-button-text-font-family, inherit);\n line-height: var(--jist-button-text-line-height, 1);\n background-color: var(--jist-button-background-color, #4f46e5);\n border-width: var(--jist-button-border-width, 0);\n border-style: solid;\n border-color: var(--jist-button-border-color, transparent);\n border-radius: var(--jist-button-border-radius, 6px);\n box-shadow:\n var(--jist-button-shadow-offset-x, 0)\n var(--jist-button-shadow-offset-y, 0)\n var(--jist-button-shadow-blur, 0)\n var(--jist-button-shadow-color, transparent);\n padding-top: var(--jist-button-padding-top, 8px);\n padding-right: var(--jist-button-padding-right, 16px);\n padding-bottom: var(--jist-button-padding-bottom, 8px);\n padding-left: var(--jist-button-padding-left, 16px);\n margin-top: var(--jist-button-margin-top, 0);\n margin-right: var(--jist-button-margin-right, 0);\n margin-bottom: var(--jist-button-margin-bottom, 0);\n margin-left: var(--jist-button-margin-left, 0);\n min-width: var(--jist-button-min-width, 0);\n min-height: var(--jist-button-min-height, 0);\n transition: background-color 0.15s ease, color 0.15s ease,\n border-color 0.15s ease, box-shadow 0.15s ease;\n}\n\n.jist__button:hover {\n background-color: var(--jist-button-states-hover-background-color,\n var(--jist-button-background-color, #4338ca));\n color: var(--jist-button-states-hover-text-color,\n var(--jist-button-text-color, #ffffff));\n}\n\n.jist__button:active {\n background-color: var(--jist-button-states-active-background-color,\n var(--jist-button-background-color, #3730a3));\n color: var(--jist-button-states-active-text-color,\n var(--jist-button-text-color, #ffffff));\n}\n\n.jist__button:disabled {\n background-color: var(--jist-button-states-disabled-background-color,\n var(--jist-button-background-color, #c7d2fe));\n color: var(--jist-button-states-disabled-text-color,\n var(--jist-button-text-color, #a5b4fc));\n cursor: not-allowed;\n}\n\n/* ── Image ──────────────────────────────── */\n\n.jist__image {\n display: block;\n max-width: 100%;\n overflow: hidden;\n border-radius: var(--jist-image-border-radius, 0);\n padding-top: var(--jist-image-padding-top, 0);\n padding-right: var(--jist-image-padding-right, 0);\n padding-bottom: var(--jist-image-padding-bottom, 0);\n padding-left: var(--jist-image-padding-left, 0);\n margin-top: var(--jist-image-margin-top, 0);\n margin-right: var(--jist-image-margin-right, 0);\n margin-bottom: var(--jist-image-margin-bottom, 0);\n margin-left: var(--jist-image-margin-left, 0);\n}\n\n.jist__image img {\n border-radius: inherit;\n}\n\n/* ── Dark Mode Defaults ────────────────── */\n\n[data-jist-dark] .jist__heading { color: var(--jist-heading-text-color, #ffffff); }\n[data-jist-dark] .jist__text { color: var(--jist-text-text-color, #ffffff); }\n[data-jist-dark] .jist__date { color: var(--jist-date-text-color, #ffffff); }\n[data-jist-dark] .jist__button { color: var(--jist-button-text-color, #ffffff); }\n\n/* ── Action (clickable wrapper) ─────────── */\n\n.jist__action {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n}\n\n.jist__action:focus-visible {\n outline: 2px solid var(--jist-button-background-color, #4f46e5);\n outline-offset: 2px;\n border-radius: 4px;\n}\n",document.head.appendChild(t)}#v=null;#w=null;#x=null;#S=null;#I="auto";#t=null;#e=null;#n={};#C=null;#$=null;get template(){return this.#w}set template(t){this.#w=t,this.#k()}get data(){return this.#x}set data(t){this.#x="string"==typeof t?JSON.parse(t):t,this.#k()}get theme(){return this.#S}set theme(t){this.#S="string"==typeof t?JSON.parse(t):t,this.#E(),this.#k()}get mode(){return this.#I}set mode(t){this.#I=t||"auto",this.#E()}get formatDate(){return this.#t}set formatDate(t){this.#t=t,this.#k()}get onAction(){return this.#e}set onAction(t){this.#e=t}get templates(){return this.#n}set templates(t){const e="string"==typeof t?JSON.parse(t):t||{},n={};for(const[t,i]of Object.entries(e)){if(t.startsWith("$"))continue;if(!Array.isArray(i))continue;const e=i.find(t=>"1"===t.version);e&&(n[t]=e)}this.#n=n,this.#k()}connectedCallback(){J.#y(),this.#C=window.matchMedia("(prefers-color-scheme: dark)"),this.#$=()=>{"auto"===this.#I&&(this.#E(),this.#k())},this.#C.addEventListener("change",this.#$),this.#E(),this.#k()}disconnectedCallback(){this.#C&&this.#$&&this.#C.removeEventListener("change",this.#$),this.#j(),J.#L()}attributeChangedCallback(t,e,n){if(e!==n)switch(t){case"template":this.#w=n||null,this.#k();break;case"data":this.#x=n?JSON.parse(n):null,this.#k();break;case"theme":this.#S=n?JSON.parse(n):null,this.#E(),this.#k();break;case"mode":this.#I=n||"auto",this.#E(),this.#k()}}#T(){return"dark"===this.#I||"light"!==this.#I&&(this.#C?.matches??!1)}#E(){if(!this.isConnected)return void(this.#S||(this.#j(),J.#L()));if(this.#T()?this.setAttribute("data-jist-dark",""):this.removeAttribute("data-jist-dark"),!this.#S)return this.#j(),void J.#L();const t=[];for(let e=0;e<this.style.length;e++)this.style[e].startsWith("--jist-")&&t.push(this.style[e]);if(t.forEach(t=>this.style.removeProperty(t)),this.#P(this.#S,"--jist"),this.#T()){const t=this.#S.modes?.dark;t&&this.#P(t,"--jist")}this.#D()}#P(t,e){for(const[n,i]of Object.entries(t)){if("modes"===n||n.startsWith("$"))continue;const t=`${e}-${n.replace(/([A-Z])/g,"-$1").toLowerCase()}`;if(null===i||"object"!=typeof i||Array.isArray(i)){if(null!=i&&""!==i){const e=0===i&&Y.has(n)?"normal":"number"!=typeof i||Q.has(n)?String(i):`${i}px`;this.style.setProperty(t,e)}}else this.#P(i,t)}}#D(){const t=[],e=this.#S;if(!e)return;const n=e.modes?.dark;for(const i of Object.keys(et)){const o=e[i],s=n?.[i],a=et[i],r=new Set;for(const t of[o,s])if(t)for(const e of Object.keys(t))a.has(e)||e.startsWith("$")||r.add(e);for(const e of r){const n=o?.[e]??{},a=s?.[e]??{};t.push(this.#N(i,e,n,a))}}const i=t.join("\n");if(this.#j(),!i)return;let o=J.#b.get(i);o||(o={id:J.#f++,refs:0},J.#b.set(i,o)),o.refs++,this.#v=i,this.setAttribute("data-jist-v",String(o.id)),J.#L()}#j(){if(!this.#v)return;const t=J.#b.get(this.#v);t&&(t.refs--,t.refs<=0&&J.#b.delete(this.#v)),this.#v=null,this.removeAttribute("data-jist-v")}static#L(){if(0===J.#b.size)return void(J.#h&&(J.#h.remove(),J.#h=null));J.#h||(J.#h=document.createElement("style"),J.#h.setAttribute("data-jist-variants",""),document.head.appendChild(J.#h));const t=[];for(const[e,{id:n}]of J.#b){const i=`[data-jist-v="${n}"]`;t.push(e.replace(/^(\.[a-z_-]+)/gm,`${i} $1`))}J.#h.textContent=t.join("\n")}#N(t,e,n,i){const o=e.replace(/([A-Z])/g,"-$1").toLowerCase(),s=`.jist__${t}--${o}`,a=new Set,r=(t,e)=>{for(const[n,i]of Object.entries(t)){if("states"===n||n.startsWith("$"))continue;const t=n.replace(/([A-Z])/g,"-$1").toLowerCase(),o=e?`${e}-${t}`:t;null===i||"object"!=typeof i||Array.isArray(i)?a.add(o):r(i,o)}};r(n,""),r(i,"");const l=[];for(const e of a){const n=K[e];if(!n)continue;const i=`--jist-${t}-${o}-${e}`,s=`--jist-${t}-${e}`;l.push(` ${n}: var(${i}, var(${s}));`)}if("button"===t&&[...a].some(t=>t.startsWith("shadow-"))){const t=Z.map(t=>`var(--jist-button-${o}-${t}, var(--jist-button-${t}, ${tt[t]}))`);l.push(` box-shadow: ${t.join(" ")};`)}let d=`${s} {\n${l.join("\n")}\n}`;if("button"===t&&(n.states||i.states))for(const t of nt){const e=n.states?.[t],a=i.states?.[t];if(!e&&!a)continue;const r=[];for(const[e,n]of it){const i=`--jist-button-${o}-states-${t}-${n}`,s=`--jist-button-states-${t}-${n}`,a=`--jist-button-${o}-${n}`,l=`--jist-button-${n}`;r.push(` ${e}: var(${i}, var(${s}, var(${a}, var(${l}))));`)}d+=`\n${s}${"disabled"===t?":disabled":`:${t}`} {\n${r.join("\n")}\n}`}return d}#k(){if(!this.#w||!this.#x)return;if(!this.isConnected)return;const t=this.#n[this.#w];if(!t)return void(this.innerHTML="");const e=new X({formatDate:this.#t||void 0,templates:this.#n,onAction:t=>{this.#e&&this.#e(t),this.dispatchEvent(new CustomEvent("jist-action",{bubbles:!0,detail:{component:t.component,name:t.name,data:t.data,meta:t.meta}}))}});this.innerHTML="";const n=e.render(t.root,this.#x);n&&this.appendChild(n)}}J=ot,customElements.define("jist-template",ot);const st=ot,at="gist-inbox-button",rt="gist-inbox-badge",lt="gist-inbox-panel",dt="gist-inbox-messages";let ct=!1,pt=!1;const ut=new Set;function gt(){ct||(ct=!0,customElements.get("jist-template")||customElements.define("jist-template",st),N("gist-inbox-styles","\n#gist-inbox-button {\n position: fixed;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 9998;\n border: none;\n transition: background-color 0.2s ease,\n box-shadow 0.2s ease,\n transform 0.15s ease;\n}\n#gist-inbox-button:hover {\n transform: scale(1.05);\n}\n#gist-inbox-button:active {\n transform: scale(0.93);\n}\n#gist-inbox-button svg {\n width: 24px;\n height: 24px;\n}\n#gist-inbox-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 20px;\n height: 20px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n box-sizing: border-box;\n}\n#gist-inbox-panel {\n position: fixed;\n width: 400px;\n max-height: 600px;\n z-index: 9999;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n user-select: none;\n -webkit-user-select: none;\n transform: translateY(8px) scale(0.96);\n opacity: 0;\n pointer-events: none;\n transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1),\n opacity 0.2s ease;\n}\n#gist-inbox-panel.gist-inbox-panel--open {\n transform: translateY(0) scale(1);\n opacity: 1;\n pointer-events: auto;\n}\n#gist-inbox-messages {\n overflow-y: auto;\n flex: 1;\n}\n.gist-inbox-message-row {\n transition: background-color 0.15s ease;\n}\n"),Zn.events.on("messageInboxUpdated",t=>{mt(t)}),mt())}async function mt(t){t||(t=await W());const e=function(t){return t.filter(t=>t.topics?.some(t=>t.startsWith("cio_inbox"))).sort((t,e)=>{const n=(t.priority??Number.MAX_SAFE_INTEGER)-(e.priority??Number.MAX_SAFE_INTEGER);return 0!==n?n:new Date(e.sentAt??0).getTime()-new Date(t.sentAt??0).getTime()})}(t);if(0===e.length)return void ht();let n=E();n||(await xt(),n=E());const o=n?.patterns?.inbox;if(o){if(function(t,e){let n=document.getElementById(at);n||(n=D("div",{id:at}),n.addEventListener("click",()=>{pt?(pt=!1,document.getElementById(lt)?.classList.remove("gist-inbox-panel--open")):(pt=!0,mt())}),M(n));const i=wt(t.position);n.style.background=t.floatingIcon.background,n.style.color=t.floatingIcon.color,n.style.boxShadow="0 2px 8px rgba(0,0,0,0.15)",Object.assign(n.style,i),n.querySelector("svg")||n.insertAdjacentHTML("afterbegin",t.floatingIcon.svg);!function(t,e,n){let i=document.getElementById(rt);if(0===n||!e.unreadIndicator.showAlert)return void i?.remove();i||(i=D("span",{id:rt}),t.appendChild(i));const o=e.unreadIndicator;i.textContent=String(n),i.style.background=o.background,i.style.color=o.text.color,i.style.fontSize=`${o.text.fontSize}px`,i.style.fontWeight=String(o.text.fontWeight),i.style.fontFamily=o.text.fontFamily,i.style.lineHeight=String(o.text.lineHeight)}(n,t,e.filter(t=>!t.opened).length)}(o,e),pt){!function(t,e){let n=document.getElementById(lt);const o=!n;o&&(n=D("div",{id:lt}),M(n));const s=wt(t.position,!0);n.style.background=t.background,n.style.borderRadius=`${t.cornerRadius}px`,n.style.border=`1px solid ${t.borderColor}`,n.style.boxShadow=`${t.shadow.offsetX}px ${t.shadow.offsetY}px ${t.shadow.blur}px ${t.shadow.color}`,Object.assign(n.style,s);let a=document.getElementById(dt);a||(a=D("div",{id:dt}),n.appendChild(a)),a.innerHTML="";const r=E(),l=T();e.forEach((n,o)=>{const s=D("div",{className:"gist-inbox-message-row"});s.style.padding="12px 16px",s.style.cursor="pointer",s.addEventListener("mouseenter",()=>{s.style.background=t.hoverBackground}),s.addEventListener("mouseleave",()=>{s.style.background=""});const d=document.createElement("jist-template");s.appendChild(d),a.appendChild(s);const c=d;if(c.onAction=t=>{i(`Inbox action: ${t.name}`);const e=function(t){if(!t||"object"!=typeof t)return null;const e=t;return"string"==typeof e.behavior&&["openUrl","dismiss","openDeeplink","performAction"].includes(e.behavior)?{behavior:e.behavior,action:"string"==typeof e.action?e.action:void 0,name:"string"==typeof e.name?e.name:void 0,dismiss:"boolean"==typeof e.dismiss?e.dismiss:void 0,newTab:"boolean"==typeof e.newTab?e.newTab:void 0}:null}(t.data);e&&function(t,e){"openUrl"!==e.behavior&&"openDeeplink"!==e.behavior||!e.action||(function(t){try{return"javascript:"!==new URL(t,window.location.href).protocol}catch{return!1}}(e.action)?e.newTab?window.open(e.action,"_blank","noopener"):window.location.href=e.action:i(`Blocked unsafe URL: ${e.action}`)),("dismiss"===e.behavior||e.dismiss)&&t.queueId&&O(t.queueId),Zn.events.dispatch("inboxMessageAction",{message:t,action:"clicked",actionConfig:e})}(n,e)},l&&(c.templates=l),r?.theme&&(c.theme=r.theme),c.formatDate=vt,c.data=n.properties??{},c.template=n.type??null,o<e.length-1){const e=D("div",{className:"gist-inbox-divider"});e.style.height="1px",e.style.background=t.dividerColor,e.style.margin="0",a.appendChild(e)}}),o?requestAnimationFrame(()=>{n.classList.add("gist-inbox-panel--open")}):n.classList.add("gist-inbox-panel--open")}(o,e);for(const t of e){const e=t.queueId;t.opened||!e||ut.has(e)||(ut.add(e),_(e,!0).finally(()=>{ut.delete(e)}))}}}else ht()}function ht(){document.getElementById(at)?.remove(),document.getElementById(lt)?.remove(),pt=!1}const ft=[[60,"second",1],[3600,"minute",60],[86400,"hour",3600],[2592e3,"day",86400],[31536e3,"month",2592e3],[1/0,"year",31536e3]];let bt=null,yt=null;function vt(t){const e=Math.round((Date.now()-new Date(t).getTime())/1e3);if(Number.isNaN(e))return t;const[,n,i]=ft.find(([t])=>Math.abs(e)<t);return function(){const t=C();return bt&&yt===t||(yt=t,bt=new Intl.RelativeTimeFormat(t,{numeric:"auto"})),bt}().format(-Math.round(e/i),n)}function wt(t,e=!1){const n=e?"":"24px",i="96px";switch(t){case"bottom-left":return e?{bottom:i,left:"24px",right:"",top:""}:{bottom:n,left:n,right:"",top:""};case"top-right":return e?{top:i,right:"24px",bottom:"",left:""}:{top:n,right:n,bottom:"",left:""};case"top-left":return e?{top:i,left:"24px",bottom:"",right:""}:{top:n,left:n,bottom:"",right:""};default:return e?{bottom:i,right:"24px",left:"",top:""}:{bottom:n,right:n,left:"",top:""}}}async function xt(){await Promise.all([k(),L()])}let St=600,It=!1;const Ct="gist.web.userQueueNextPullCheck",$t="gist.web.sessionId";function kt(){let t=a($t);return t||(t=g()),s($t,t,new Date((new Date).getTime()+18e5)),String(t)}const Et="gist.web.userToken",jt="gist.web.usingGuestUserToken",Lt="gist.web.guestUserToken";function Tt(){return null!==a(jt)}function Pt(){return a(Et)}function Dt(){if(null===Pt()){let t=a(Lt);null==t&&(t=g(),s(Lt,t),i(`Set guest user token "${t}" with expiry date set to 1 year from today`)),s(Et,t),s(jt,!0),i(`Using anonymous session with token: "${t}"`)}}async function Nt(){const t=Pt();return null===t?null:await async function(t){const e=(new TextEncoder).encode(t),n=await crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(n)).map(t=>t.toString(16).padStart(2,"0")).join("")}(t)}function Mt(){const t=Pt();return null===t?null:btoa(t)}function At(){r(Et),i("Cleared user token")}const Rt={isEmbedded:!1,elementId:"",hasRouteRule:!1,routeRule:"",position:"",hasPosition:!1,tooltipPosition:"",hasTooltipPosition:!1,tooltipArrowColor:"#fff",shouldScale:!1,campaignId:null,messageWidth:414,overlayColor:"#00000033",persistent:!1,exitClick:!1,hasCustomWidth:!1};function qt(t){let e=Rt.tooltipArrowColor;if((t?.properties?.gist?.tooltipArrowColor?.length??0)>0)e=t.properties.gist.tooltipArrowColor;else{if(!Array.isArray(t?.displaySettings)||0===t.displaySettings.length)return e;let n=t.displaySettings[0];if(t.savedStepName){const e=t.displaySettings.find(e=>e?.stepName===t.savedStepName&&e.displaySettings);e&&(n=e)}n?.displaySettings?.tooltipArrowColor&&(e=n.displaySettings.tooltipArrowColor)}return e}function zt(t){const e=Rt,n=t?.properties?.gist;return n?{isEmbedded:!!n.elementId&&!n.tooltipPosition,elementId:n.elementId||"",hasRouteRule:!!n.routeRuleWeb,routeRule:n.routeRuleWeb||"",position:n.position||"",hasPosition:!!n.position,tooltipPosition:n.tooltipPosition||"",hasTooltipPosition:!!n.tooltipPosition,tooltipArrowColor:qt(t),shouldScale:!!n.scale,campaignId:n.campaignId??null,messageWidth:null!=n.messageWidth&&n.messageWidth>0?n.messageWidth:e.messageWidth,hasCustomWidth:(n.messageWidth??0)>0,overlayColor:n.overlayColor||e.overlayColor,persistent:!!n.persistent,exitClick:!!n.exitClick}:e}const Wt=["x-gist-top","x-gist-floating-top","x-gist-bottom","x-gist-floating-bottom","x-gist-floating-bottom-left","x-gist-floating-bottom-right","x-gist-floating-top-left","x-gist-floating-top-right"];function _t(t){if(document.getElementById(t))return;const e=document.createElement("div");e.id=t,"x-gist-top"===t?document.body.insertBefore(e,document.body.firstChild):document.body.insertAdjacentElement("beforeend",e),i("Top & bottom elements injected into page")}const Ot=["x-gist-top","x-gist-bottom","x-gist-floating-top","x-gist-floating-bottom"];function Bt(t){return Zn.currentMessages.find(e=>e.instanceId===t)}function Ut(t){return!!t&&Zn.currentMessages.some(e=>e.queueId===t)}function Ht(t){return t?Zn.currentMessages.find(e=>e.elementId===t)??null:null}function Ft(t){Zn.currentMessages=Zn.currentMessages.filter(e=>e.instanceId!==t)}function Vt(t,e){Ft(t),Zn.currentMessages.push(e)}const Gt={topLeft:"x-gist-floating-top-left",topCenter:"x-gist-floating-top",topRight:"x-gist-floating-top-right",bottomLeft:"x-gist-floating-bottom-left",bottomCenter:"x-gist-floating-bottom",bottomRight:"x-gist-floating-bottom-right"},Xt=Object.fromEntries(Object.entries(Gt).map(([t,e])=>[e,t]));function Jt(t){return t&&Gt[t]?Gt[t]:(i(`Invalid overlay position "${t}", defaulting to "topCenter"`),Gt.topCenter)}function Qt(t){try{const e=new RegExp(t),n=new URL(window.location.href).pathname,i=null!=Zn.currentRoute&&e.test(Zn.currentRoute),o=Zn.currentRoute!==n&&e.test(n);return i||o}catch{return!1}}function Yt(t){return t.tooltipPosition?"tooltip":t.overlay?"modal":t.elementId&&Wt.includes(t.elementId)?"overlay":t.elementId?"inline":"modal"}function Kt(t,e){const n=Yt(t),i=e.displayType;if(void 0===i)return!1;if(n!==i)return!0;const o=zt(t);switch(i){case"modal":{if((t.position||"center")!==(e.modalPosition||"center"))return!0;const n=e.dismissOutsideClick??Rt.exitClick;if(o.exitClick!==n)return!0;const i=e.overlayColor??Rt.overlayColor;if(o.overlayColor!==i)return!0;break}case"overlay":{const n=Jt(e.overlayPosition);if(t.elementId!==n)return!0;break}case"inline":if(t.elementId!==e.elementSelector)return!0;break;case"tooltip":if(t.tooltipPosition!==e.tooltipPosition)return!0;if(t.elementId!==e.elementSelector)return!0;if(void 0!==e.tooltipArrowColor&&o.tooltipArrowColor!==e.tooltipArrowColor)return!0}if("overlay"!==i||!Ot.includes(Jt(e.overlayPosition))){const t=e.maxWidth??Rt.messageWidth;if(o.messageWidth!==t)return!0}return!1}function Zt(t,e){if(t.properties||(t.properties={}),t.properties.gist||(t.properties.gist={}),"modal"===e.displayType)t.overlay=!0,t.elementId=null,t.properties.gist.elementId=null,t.position=e.modalPosition||"center",t.properties.gist.position=e.modalPosition||"center",t.tooltipPosition=void 0,t.properties.gist.tooltipPosition=void 0,t.properties.gist.tooltipArrowColor=void 0;else if("overlay"===e.displayType){t.overlay=!1;const n=Jt(e.overlayPosition);t.elementId=n,t.properties.gist.elementId=n,t.position=null,t.properties.gist.position=null,t.tooltipPosition=void 0,t.properties.gist.tooltipPosition=void 0,t.properties.gist.tooltipArrowColor=void 0}else"inline"===e.displayType?(t.overlay=!1,t.elementId=e.elementSelector,t.properties.gist.elementId=e.elementSelector,t.position=null,t.properties.gist.position=null,t.tooltipPosition=void 0,t.properties.gist.tooltipPosition=void 0,t.properties.gist.tooltipArrowColor=void 0):"tooltip"===e.displayType&&(t.overlay=!1,t.elementId=e.elementSelector,t.properties.gist.elementId=e.elementSelector,t.tooltipPosition=e.tooltipPosition,t.properties.gist.tooltipPosition=e.tooltipPosition,t.position=null,t.properties.gist.position=null,void 0!==e.tooltipArrowColor&&(t.properties.gist.tooltipArrowColor=e.tooltipArrowColor));t.elementId&&Ot.includes(t.elementId)?delete t.properties.gist.messageWidth:void 0!==e.maxWidth&&e.maxWidth>0?t.properties.gist.messageWidth=e.maxWidth:delete t.properties.gist.messageWidth,void 0!==e.overlayColor?t.properties.gist.overlayColor=e.overlayColor:delete t.properties.gist.overlayColor,void 0!==e.dismissOutsideClick?t.properties.gist.exitClick=e.dismissOutsideClick:delete t.properties.gist.exitClick}const te={top:["bottom","left","right"],bottom:["top","left","right"],left:["right","top","bottom"],right:["left","top","bottom"]},ee=/auto|scroll/,ne={top:"gist-arrow-bottom",bottom:"gist-arrow-top",left:"gist-arrow-right",right:"gist-arrow-left"};function ie(t){const e=P(t);return e||i(`Tooltip target element not found for selector: ${t}`),e}function oe(t,e){if(t.bottom<=0||t.top>=window.innerHeight||t.right<=0||t.left>=window.innerWidth)return!1;for(const n of e){const e=n.getBoundingClientRect();if(t.bottom<=e.top||t.top>=e.bottom||t.right<=e.left||t.left>=e.right)return!1}return!0}function se(t,e,n){const i=function(t,e,n){switch(n){case"top":return{top:e.top-t.height-16,left:e.left+(e.width-t.width)/2};case"bottom":return{top:e.bottom+16,left:e.left+(e.width-t.width)/2};case"left":return{top:e.top+(e.height-t.height)/2,left:e.left-t.width-16};case"right":return{top:e.top+(e.height-t.height)/2,left:e.right+16}}}(t,e,n);return function(t,e,n){return"top"===n||"bottom"===n?t.top>=0&&t.top+e.height<=window.innerHeight:t.left>=0&&t.left+e.width<=window.innerWidth}(i,t,n)&&function(t,e){return"top"===e||"bottom"===e?t.width+8<=window.innerWidth:t.height+8<=window.innerHeight}(t,n)?function(t,e,n){let{top:i,left:o}=t,s=null;if("top"===n||"bottom"===n){const t=4,n=window.innerWidth-e.width-4;n>=t&&(o<t?(s=o-t,o=t):o>n&&(s=o-n,o=n))}else{const t=4,n=window.innerHeight-e.height-4;n>=t&&(i<t?(s=i-t,i=t):i>n&&(s=i-n,i=n))}if(null!==s){const t=("top"===n||"bottom"===n?e.width/2:e.height/2)-16-4;Math.abs(s)>t&&(s=s>0?t:-t)}return{top:i,left:o,position:n,arrowOffset:s}}(i,t,n):null}function ae(t,e,n){const i=se(t,e,n);if(i)return i;for(const i of te[n]){const n=se(t,e,i);if(n)return n}return null}function re(t){const e=[];let n=t.parentElement;for(;n;){const t=getComputedStyle(n),i=t.overflow+t.overflowX+t.overflowY;ee.test(i)&&e.push(n),n=n.parentElement}return e}function le(t){const e=P(t);e&&(e.classList.remove("gist-visible"),Array.from(e.classList).filter(t=>t.startsWith("gist-")).forEach(t=>e.classList.remove(t)),e.style.removeProperty("height"),e.style.removeProperty("width"),e.innerHTML="")}function de(t){const e=P(t);if(e)return!(!e.style||!e.style.height||"0px"===e.style.height)}function ce(t,e,n=null){const i=document.getElementById(t);i&&(i.onload=()=>{!function(t,e,n=null){const i=document.getElementById(t);if(i?.contentWindow){const t={options:e,capabilities:pe};n&&(e.stepId=n),i.contentWindow.postMessage(t,"*")}}(t,e,n)})}const pe=["MultiStepDisplayTypes"];function ue(t){if(!t.displaySettings)return;const e=be(t.instanceId??""),n=document.getElementById(e);n?.contentWindow&&n.contentWindow.postMessage({action:"updateDisplaySettings",displaySettings:t.displaySettings},"*")}async function ge(){const t=document.querySelector(".gist-message");t&&(t.classList.remove("gist-visible"),await new Promise(t=>setTimeout(t,300))),me()}function me(){const t=document.querySelector("#gist-embed-message");t&&t.parentNode?.removeChild(t)}const he=new Map;function fe(t){const e=t.instanceId??"",n=he.get(e);n&&(n.cleanup(),he.delete(e));const i=P(`gist-tooltip-${e}`);i&&i.parentNode?.removeChild(i)}function be(t){return`gist-${t}`}function ye(){const t=document.querySelector(".gist-message");t&&t.classList.add("gist-visible")}const ve="gist.web.customAttributes";let we=new Map;function xe(){const t=Array.from(we.entries()),e=new Date;e.setDate(e.getDate()+30),s(ve,t,e),i(`Saved ${we.size} custom attributes to storage with TTL of 30 days`)}async function Se(t){const e=await Ee();if(!e)return;const n=new Date;n.setMinutes(n.getMinutes()+60),s(e,t.filter($e),n)}async function Ie(){const t=await Ee();return t?(a(t)??[]).filter(e=>{const n=e.properties.gist.broadcast,{frequency:i}=n,o=a(Le(t,e.queueId))??!0,s=a(je(t,e.queueId))||0,r=0===i.count;return o&&(r||s<i.count)}):[]}async function Ce(t,e){const n=a(t);return n?.find(t=>t.queueId===e)}function $e(t){return!(!t.properties?.gist||!t.properties.gist.broadcast)}function ke(t){if(!$e(t))return!1;const e=t.properties.gist.broadcast;return 0===e.frequency.delay&&0===e.frequency.count}async function Ee(){const t=await Nt();return t?`gist.web.message.broadcasts.${t}`:null}function je(t,e){return`${t}.${e}.numberOfTimesShown`}function Le(t,e){return`${t}.${e}.shouldShow`}!function(){const t=a(ve);if(t)try{we=new Map(t)}catch{we=new Map}else we=new Map}();const Te="gist.web.message.user";async function Pe(t){const e=await Ne();if(!e)return;const n=t.filter(t=>!(t.properties&&t.properties.gist&&t.properties.gist.broadcast)),i=new Date;i.setMinutes(i.getMinutes()+60),s(e,n,i)}async function De(){const t=await Ne();if(!t)return[];const e=a(t)??[],n=await async function(){const t=await Me();return t?a(t)??[]:[]}();return e.filter(t=>!n.includes(t.queueId??""))}async function Ne(){const t=await Nt();return t?`${Te}.${t}`:null}async function Me(){const t=await Nt();return t?`${Te}.${t}.seen`:null}async function Ae(t){const e=await Nt();return e?`${Te}.${e}.message.${t}.loading`:null}async function Re(t){const e=await Nt();return e?`${Te}.${e}.message.${t}.state`:null}async function qe(t){const e=await Re(t);e&&(r(e),i(`Cleared message state for queueId: ${t}`))}function ze(t){return`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.54223 5.33301L7.7089 9.33301L11.8756 5.33301L12.6121 6.04011L7.7089 10.7472L2.80566 6.04011L3.54223 5.33301Z" fill="${t}"/></svg>`}const We=`\n #gist-preview-bar {\n position: fixed; bottom: 0; left: 0; right: 0;\n z-index: 99999999999;\n font-family: system-ui, -apple-system, sans-serif;\n pointer-events: none;\n }\n .gist-pb-toggle-row {\n display: flex; justify-content: center;\n padding: 6px 16px;\n border-bottom: 1px solid #e5e7eb;\n }\n .gist-pb-toggle-row--collapsed { border-bottom: none; }\n .gist-pb-toggle-btn {\n background: #08272B; border: none;\n padding: 4px 14px;\n border-radius: 100px;\n font-size: 12px; font-weight: 500;\n font-family: system-ui, -apple-system, sans-serif;\n color: white; cursor: pointer;\n display: flex; align-items: center; gap: 6px;\n pointer-events: auto;\n height: auto; min-width: auto;\n box-sizing: border-box;\n line-height: normal;\n -webkit-appearance: none;\n appearance: none;\n }\n .gist-pb-controls-row {\n background: #F8F9F9;\n box-shadow: 1px 2px 2px #34344605, 3px 3px 8px #34344614;\n display: flex; flex-wrap: wrap; align-items: center;\n gap: 12px; padding: 10px 16px 12px;\n pointer-events: auto;\n }\n .gist-pb-label-group { display: flex; flex-direction: column; gap: 4px; }\n .gist-pb-label-group--grow { flex: 1; }\n .gist-pb-label {\n font-size: 10px; font-weight: 600; color: #3F4E50;\n letter-spacing: 0.05em; text-transform: uppercase;\n font-family: system-ui, -apple-system, sans-serif;\n }\n .gist-pb-select {\n height: 32px; padding: 0 32px 0 8px;\n border: 1px solid #d1d5db; border-radius: 6px;\n font-size: 13px; font-family: system-ui, -apple-system, sans-serif;\n background: white ${`url("data:image/svg+xml,${encodeURIComponent(ze("#3F4E50"))}")`} no-repeat right 2px center;\n color: #3F4E50; cursor: pointer; outline: none;\n appearance: none; min-width: 120px;\n }\n .gist-pb-input {\n height: 32px; padding: 0 8px;\n border: 1px solid #d1d5db; border-radius: 6px;\n font-size: 13px; font-family: system-ui, -apple-system, sans-serif;\n color: #3F4E50; outline: none; box-sizing: border-box;\n }\n .gist-pb-checkbox-row { display: flex; align-items: center; gap: 6px; height: 32px; }\n .gist-pb-checkbox-label {\n font-size: 12px; font-family: system-ui, -apple-system, sans-serif;\n color: #3F4E50; cursor: pointer; user-select: none;\n }\n .gist-pb-color-control {\n display: flex; align-items: center;\n border: 1px solid #d1d5db; border-radius: 6px;\n overflow: hidden; height: 32px; background: white;\n }\n .gist-pb-color-swatch {\n width: 28px; height: 100%;\n cursor: pointer; flex-shrink: 0;\n border-right: 1px solid #d1d5db; position: relative;\n }\n .gist-pb-color-input {\n position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;\n }\n .gist-pb-color-hex {\n flex: 1; border: none; outline: none; padding: 0 6px;\n font-size: 13px; font-family: monospace; color: #3F4E50;\n min-width: 0; background: transparent;\n }\n .gist-pb-color-opacity {\n width: 36px; border: none; border-left: 1px solid #d1d5db;\n outline: none; padding: 0 4px;\n font-size: 13px; font-family: system-ui, -apple-system, sans-serif;\n color: #3F4E50; background: transparent; text-align: right;\n }\n .gist-pb-color-pct {\n font-size: 12px; color: #3F4E50; padding: 0 6px 0 2px;\n font-family: system-ui, -apple-system, sans-serif; flex-shrink: 0;\n }\n .gist-pb-input--invalid { border-color: #941616; outline: 1px solid #941616; }\n .gist-pb-inline-row { display: flex; align-items: center; gap: 6px; }\n .gist-pb-select-elem-btn, .gist-pb-cancel-btn {\n height: 32px; padding: 0 12px;\n border: none; border-radius: 6px;\n font-size: 12px; font-weight: 500; font-family: system-ui, -apple-system, sans-serif;\n background: #08272B; color: white; cursor: pointer; white-space: nowrap; flex-shrink: 0;\n min-width: auto; box-sizing: border-box;\n -webkit-appearance: none; appearance: none;\n }\n .gist-pb-select-elem-btn:disabled {\n opacity: 0.4; cursor: not-allowed;\n }\n .gist-pb-spacer { flex: 1; min-width: 0; }\n .gist-pb-save-btn {\n height: 36px; padding: 0 18px;\n background: #08272B; color: white;\n border: none; border-radius: 6px;\n font-size: 13px; font-weight: 600;\n font-family: system-ui, -apple-system, sans-serif;\n cursor: pointer; white-space: nowrap; align-self: center;\n min-width: auto; box-sizing: border-box;\n -webkit-appearance: none; appearance: none;\n }\n .gist-pb-save-btn:disabled {\n background: #CAD6D8; cursor: not-allowed;\n }\n .gist-pb-picker-overlay {\n position: fixed; inset: 0; z-index: 999999999998; cursor: crosshair;\n }\n .gist-pb-checkbox { cursor: pointer; width: 14px; height: 14px; }\n .gist-pb-pick-highlight { outline: 2px solid #006FF5 !important; }\n .gist-pb-pick-error { outline: 2px solid #941616 !important; }\n #gist-preview-bar.gist-pb-hidden { display: none; }\n .gist-pb-ended-row {\n justify-content: center; align-items: center; gap: 10px; padding: 12px 16px;\n flex-wrap: nowrap;\n }\n .gist-pb-ended-icon {\n display: flex; align-items: center; justify-content: center;\n width: 22px; height: 22px; border-radius: 50%;\n background: #08272B; color: white;\n font-size: 13px; font-weight: 700; flex-shrink: 0;\n }\n .gist-pb-ended-text {\n margin: 0; font-size: 13px; color: #3F4E50;\n font-family: system-ui, -apple-system, sans-serif;\n min-width: 0;\n }\n .gist-pb-ended-text strong { color: #08272B; }\n @media (max-width: 1024px) {\n .gist-pb-controls-row { gap: 8px; }\n .gist-pb-label-group { flex: 1 1 100%; }\n .gist-pb-label-group--grow { flex: 1 1 100%; }\n .gist-pb-select { width: 100%; min-width: unset; box-sizing: border-box; }\n .gist-pb-input { width: 100% !important; box-sizing: border-box; }\n .gist-pb-color-control { width: 100%; }\n .gist-pb-checkbox-row { width: 100%; }\n .gist-pb-inline-row { flex-direction: row; align-items: center; }\n .gist-pb-inline-row .gist-pb-input { flex: 1; min-width: 0; }\n .gist-pb-save-btn { width: 100%; box-sizing: border-box; }\n .gist-pb-label--spacer { display: none; }\n }\n`;const _e="cioPreviewId",Oe="cioPreviewSettings";const Be="gist.previewBar.collapsed",Ue="gist-pb-styles",He="gist-preview-bar",Fe={topLeft:"Top Left",topCenter:"Top Center",topRight:"Top Right",bottomLeft:"Bottom Left",bottomCenter:"Bottom Center",bottomRight:"Bottom Right"};let Ve=null,Ge=[],Xe={},Je=null,Qe=!1,Ye=!1,Ke=5,Ze=null,tn=!0,en=!1,nn=!1,on=null,sn=null,an=null;const rn=new Map;function ln(t,e){const n=D("div",{className:"gist-pb-label-group"});return n.appendChild(D("span",{className:"gist-pb-label",textContent:t})),n.appendChild(e),n}function dn(t,e){const n=D("select",{className:"gist-pb-select"});for(const i of t){const t=D("option",{value:i.value,textContent:i.label});i.value===e&&(t.selected=!0),n.appendChild(t)}return n}function cn(t,e,n){const i=D("input",{className:"gist-pb-input",type:t,value:String(e)});return n&&(i.style.width=n),i}function pn(t,e){const n=Math.round(Math.min(100,Math.max(0,e))/100*255);return"#"+t.replace("#","").toUpperCase()+n.toString(16).padStart(2,"0").toUpperCase()}function un(t){return!!("inline"!==t.displayType&&"tooltip"!==t.displayType||t.elementSelector?.trim())}function gn(t){if("overlay"===t.displayType&&Ot.includes(Jt(t.overlayPosition))){const{maxWidth:e,...n}=t;t=n}if(Xe=t,Je){const e=Ge.findIndex(t=>t.stepName===Je);-1!==e&&(Ge[e]={...Ge[e],displaySettings:{...t}})}if(!Ve)return;const e=Zn.currentMessages.find(t=>t.instanceId===Ve);e&&un(t)&&(ue(e),Kt(e,t)&&Bn(e,Je,t)),function(){const t=new URLSearchParams(window.location.search).get(_e);t&&async function(t,e){try{return await S()(`/api/v1/preview/${t}`,{method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}})}catch(t){return x(t)}}(t,Ge).then(t=>{t&&404===t.status&&Ve&&Zn.dismissMessage(Ve)}).catch(()=>i("Failed to persist preview display settings"))}()}function mn(t){const e=t.value.trim();e&&!P(e)?t.classList.add("gist-pb-input--invalid"):t.classList.remove("gist-pb-input--invalid")}function hn(t,e){const n=cn("text",t.elementSelector||"","260px");n.placeholder="Element ID or selector",mn(n),n.addEventListener("change",()=>{const t=n.value.trim(),e=Xe.elementSelector;t&&fn(t),gn({...Xe,elementSelector:t}),e&&e!==t&&bn(e),mn(n)});const i=D("button",{type:"button",className:"gist-pb-select-elem-btn",textContent:"Select Element"});nn&&(i.disabled=!0),i.addEventListener("click",()=>vn(n));const o=D("div",{className:"gist-pb-inline-row"});o.appendChild(n),o.appendChild(i),e.appendChild(ln("Element Selector",o))}function fn(t){if(!t||rn.has(t))return;const e=P(t);e&&rn.set(t,e.innerHTML)}function bn(t){const e=rn.get(t);if(void 0===e)return;const n=P(t);n&&(n.innerHTML=e)}function yn(){for(const t of rn.keys())bn(t);rn.clear()}function vn(t){if(nn)return;nn=!0;const e=document.querySelector(`#${He} .gist-pb-select-elem-btn`);e&&(e.disabled=!0);const n={...Xe},o=Zn.currentMessages.find(t=>t.instanceId===Ve)??null;o&&On(o),Xe.elementSelector&&bn(Xe.elementSelector);const s=D("div",{className:"gist-pb-picker-overlay"});let a=null;const r=t=>{s.style.pointerEvents="none";const e=document.elementFromPoint(t.clientX,t.clientY);s.style.pointerEvents="all",e&&e!==a&&e!==s&&(a?.classList.remove("gist-pb-pick-highlight"),a=e,a.classList.add("gist-pb-pick-highlight"))},l=t=>{if("Escape"===t.key){if(c(),Xe=n,Je){const t=Ge.findIndex(t=>t.stepName===Je);-1!==t&&(Ge[t]={...Ge[t],displaySettings:{...n}})}o&&un(n)&&Bn(o,Je,n),wn()}},d=e=>{e.preventDefault(),e.stopPropagation(),s.style.pointerEvents="none";const n=document.elementFromPoint(e.clientX,e.clientY);if(s.style.pointerEvents="all",n&&n!==s){n.classList.remove("gist-pb-pick-highlight");const e=document.getElementById(He),s=e?.contains(n)?null:function(t){if(t.id){const e=CSS.escape(t.id);if(1===document.querySelectorAll(`#${e}`).length)return t.id}const e=[];let n=t;for(;n&&"BODY"!==n.tagName&&"HTML"!==n.tagName;){if(n.id){const t=CSS.escape(n.id);if(1===document.querySelectorAll(`#${t}`).length){e.unshift(`#${t}`);break}}let t=n.tagName.toLowerCase();n.className&&"string"==typeof n.className&&(t+=n.className.trim().split(/\s+/).filter(Boolean).map(t=>`.${CSS.escape(t)}`).join(""));const i=n.parentElement;i&&(t+=`:nth-of-type(${Array.from(i.children).filter(t=>t.tagName===n.tagName).indexOf(n)+1})`),e.unshift(t);try{if(1===document.querySelectorAll(e.join(" > ")).length)break}catch{}n=n.parentElement}const o=e.join(" > ");try{if(1!==document.querySelectorAll(o).length)return i("buildUniqueSelector: could not produce a unique selector for element"),null}catch{return null}return o}(n);if(null===s)return n.classList.add("gist-pb-pick-error"),void setTimeout(()=>{n.classList.remove("gist-pb-pick-error"),n.classList.add("gist-pb-pick-highlight")},800);t.value=s,fn(s);const a=Xe.elementSelector,r={...Xe,elementSelector:s},l=null!=o&&un(r)&&Kt(o,r);gn(r),a&&a!==s&&bn(a),o&&!l&&Bn(o,Je,r)}c(),wn()},c=()=>{a?.classList.remove("gist-pb-pick-highlight"),s.removeEventListener("mousemove",r),s.removeEventListener("click",d),document.removeEventListener("keydown",l),document.body.removeChild(s),nn=!1,on=null};on=c,s.addEventListener("mousemove",r),s.addEventListener("click",d),document.addEventListener("keydown",l),document.body.appendChild(s)}function wn(){const t=document.getElementById(He);if(!t)return;if(t.classList.toggle("gist-pb-hidden",!Ve&&!Ye),t.innerHTML="",!Ve){if(Ye){const e=D("div",{className:"gist-pb-controls-row gist-pb-ended-row"}),n=D("span",{className:"gist-pb-ended-icon",textContent:"✓"}),i=D("p",{className:"gist-pb-ended-text"});if(i.innerHTML=Sn(Ke),e.appendChild(n),e.appendChild(i),tn){const t=D("button",{type:"button",className:"gist-pb-cancel-btn",textContent:"Cancel"});t.addEventListener("click",In),e.appendChild(t)}t.appendChild(e)}return}const e=D("div",{className:"gist-pb-toggle-row"+(Qe?" gist-pb-toggle-row--collapsed":"")}),n=D("button",{type:"button",className:"gist-pb-toggle-btn"}),i=Qe?"transform:rotate(180deg);display:inline-flex;":"display:inline-flex;";if(n.innerHTML=`${Qe?"Expand":"Collapse"}<span style="${i}">${ze("white")}</span>`,n.addEventListener("click",Cn),e.appendChild(n),t.appendChild(e),Qe)return;const o=D("div",{className:"gist-pb-controls-row"});if(Ge.length>0){const t=Je??Ge[0].stepName,e=dn(Ge.map(t=>({value:t.stepName,label:t.stepName})),t);e.addEventListener("change",()=>{const t=Ge.find(t=>t.stepName===e.value);if(t){Je=t.stepName,Xe={...t.displaySettings};const e=Zn.currentMessages.find(t=>t.instanceId===Ve);e&&un(t.displaySettings)&&Bn(e,t.stepName,t.displaySettings),wn()}}),o.appendChild(ln("Step",e))}const s=dn([{value:"modal",label:"Modal"},{value:"overlay",label:"Overlay"},{value:"inline",label:"Inline"},{value:"tooltip",label:"Tooltip"}],Xe.displayType||"modal");s.addEventListener("change",()=>{const t=s.value,e=Xe.displayType,n=Xe.elementSelector,i={...Xe,displayType:t};"modal"===t?(i.modalPosition=i.modalPosition||"center",i.maxWidth=i.maxWidth??414,delete i.overlayPosition,delete i.elementSelector,delete i.tooltipPosition):"overlay"===t?(i.overlayPosition=i.overlayPosition||"topCenter",i.maxWidth=i.maxWidth??414,delete i.modalPosition,delete i.elementSelector,delete i.tooltipPosition):"inline"===t?(delete i.modalPosition,delete i.overlayPosition,delete i.tooltipPosition):"tooltip"===t&&(i.tooltipPosition=i.tooltipPosition||"top",delete i.modalPosition,delete i.overlayPosition,delete i.overlayColor,delete i.dismissOutsideClick),Xe=i,gn(Xe),"inline"!==e&&"tooltip"!==e||!n||"inline"===t||"tooltip"===t||bn(n),wn()}),o.appendChild(ln("Display Type",s));const a=Xe.displayType||"modal";"modal"===a?function(t,e){const n=dn([{value:"top",label:"Top"},{value:"center",label:"Center"},{value:"bottom",label:"Bottom"}],t.modalPosition||"center");n.addEventListener("change",()=>gn({...Xe,modalPosition:n.value})),e.appendChild(ln("Position",n));const i=cn("number",t.maxWidth??414,"80px");i.addEventListener("change",()=>gn({...Xe,maxWidth:parseInt(i.value)||414})),e.appendChild(ln("Max Width",i)),e.appendChild(function(t){const{color:e,opacity:n}=function(t){const e=t.replace("#","");return 8===e.length?{color:"#"+e.slice(0,6).toUpperCase(),opacity:Math.round(parseInt(e.slice(6),16)/255*100)}:6===e.length?{color:"#"+e.toUpperCase(),opacity:100}:{color:"#000000",opacity:20}}(t.overlayColor||"#00000033"),i=D("div",{className:"gist-pb-color-control"}),o=D("input",{className:"gist-pb-color-input",type:"color",value:e}),s=D("div",{className:"gist-pb-color-swatch"});s.style.background=e,s.appendChild(o),s.addEventListener("click",()=>o.click());const a=D("input",{className:"gist-pb-color-hex",type:"text",maxLength:6,value:e.replace("#","")}),r=D("input",{className:"gist-pb-color-opacity",type:"number",min:"0",max:"100",value:String(n)}),l=D("span",{className:"gist-pb-color-pct",textContent:"%"}),d=()=>{const t="#"+a.value.replace("#",""),e=parseInt(r.value)||0;s.style.background=t,o.value=t,gn({...Xe,overlayColor:pn(t,e)})};return o.addEventListener("input",()=>{a.value=o.value.replace("#","").toUpperCase(),s.style.background=o.value}),o.addEventListener("change",d),a.addEventListener("change",d),r.addEventListener("change",d),i.appendChild(s),i.appendChild(a),i.appendChild(r),i.appendChild(l),ln("Overlay Color",i)}(t));const o=D("div",{className:"gist-pb-checkbox-row"}),s=D("input",{className:"gist-pb-checkbox",type:"checkbox"});s.checked=t.dismissOutsideClick??!1;const a=D("label",{className:"gist-pb-checkbox-label",textContent:"Dismiss on click outside"});s.addEventListener("change",()=>gn({...Xe,dismissOutsideClick:s.checked})),a.addEventListener("click",()=>{s.checked=!s.checked,gn({...Xe,dismissOutsideClick:s.checked})}),o.appendChild(s),o.appendChild(a);const r=ln(" ",o);r.classList.add("gist-pb-label-group--grow"),r.firstChild.classList.add("gist-pb-label--spacer"),e.appendChild(r)}(Xe,o):"overlay"===a?function(t,e){const n=dn(Object.entries(Fe).map(([t,e])=>({value:t,label:e})),t.overlayPosition||"topCenter");if(n.addEventListener("change",()=>gn({...Xe,overlayPosition:n.value})),e.appendChild(ln("Position",n)),!Ot.includes(Jt(t.overlayPosition))){const n=cn("number",t.maxWidth??414,"80px");n.addEventListener("change",()=>gn({...Xe,maxWidth:parseInt(n.value)||414})),e.appendChild(ln("Max Width",n))}}(Xe,o):"inline"===a?function(t,e){hn(t,e)}(Xe,o):"tooltip"===a&&function(t,e){const n=dn([{value:"top",label:"Top"},{value:"bottom",label:"Bottom"},{value:"left",label:"Left"},{value:"right",label:"Right"}],t.tooltipPosition||"top");n.addEventListener("change",()=>gn({...Xe,tooltipPosition:n.value})),e.appendChild(ln("Position",n)),hn(t,e)}(Xe,o),o.appendChild(D("div",{className:"gist-pb-spacer"}));const r=D("button",{type:"button",className:"gist-pb-save-btn",textContent:"End session"});r.addEventListener("click",async()=>{Ve&&await Zn.dismissMessage(Ve)}),o.appendChild(r),t.appendChild(o)}async function xn(){if(!en)if(en=!0,At(),function(){try{sessionStorage.removeItem(o)}catch{}}(),tn){try{window.close()}catch{}try{window.location.reload()}catch{}on&&on(),Ze&&(clearInterval(Ze),Ze=null),yn(),document.getElementById(He)?.remove(),document.getElementById(Ue)?.remove(),Ve=null,Ge=[],Xe={},Je=null,Ye=!1,Ke=5,tn=!0,en=!1}else Ye=!1,en=!1,wn()}function Sn(t){return tn?`<strong>Preview session ended.</strong> This tab will close in ${t}s…`:`<strong>Preview session ended.</strong> Finishing session in ${t}s… This tab will stay open.`}function In(){Ye&&Ze&&(tn=!1,wn())}function Cn(){Qe=!Qe;try{sessionStorage.setItem(Be,String(Qe))}catch{}wn()}function $n(t){if(Ye)return;Ve=t.instanceId??null;const e=t.displaySettings;if(Array.isArray(e)&&e.length>0?(Ge=e,Je||(Je=Ge[0].stepName,Xe={...Ge[0].displaySettings})):e&&"object"==typeof e&&!Array.isArray(e)&&(Xe={...e}),sn||an){const t=!!sn,e=!!an,n=sn,o=an;if(sn=null,an=null,t){const t=Ge.find(t=>t.stepName===n);if(!t)return i(`Preview bar: step "${n}" not found, ignoring initial step/display override`),void wn();Je=t.stepName,Xe={...t.displaySettings}}if(e){if(!t)return i(`Preview bar: display type "${o}" provided without a step, ignoring`),void wn();Xe={...Xe,displayType:o}}wn();const s=Zn.currentMessages.find(t=>t.instanceId===Ve);return void(s&&un(Xe)?Bn(s,Je,Xe):function(){const t=Xe.displayType;if("inline"!==t&&"tooltip"!==t)return;const e=document.querySelector("#gist-preview-bar .gist-pb-input[type='text']");e&&vn(e)}())}wn()}function kn(){yn(),Ve=null,Ge=[],Xe={},Je=null,Ye=!0,Ke=5,tn=!0,en=!1;const t=new URLSearchParams(window.location.search).get(_e);t&&async function(t){try{return await S()(`/api/v1/preview/${t}`,{method:"DELETE"})}catch(t){return x(t)}}(t).catch(()=>i("Failed to delete preview session")),wn(),Ze&&clearInterval(Ze),Ze=setInterval(async()=>{if(Ke-=1,Ke<=0)clearInterval(Ze),Ze=null,await xn();else{const t=document.querySelector(`#${He} .gist-pb-ended-text`);t?t.innerHTML=Sn(Ke):wn()}},1e3)}async function En(t){if(!Zn.isDocumentVisible)return i("Document hidden, not showing message now."),null;if(Ut(t.queueId))return i(`Message with queueId ${t.queueId} is already showing.`),null;const e=zt(t);return!t.tooltipPosition&&e.hasTooltipPosition&&(t.tooltipPosition=e.tooltipPosition),t.tooltipPosition?function(t,e){const n=e.elementId||t.elementId;if(!n)return i(`No target selector specified for tooltip message ${t.messageId}`),Zn.messageError(t),null;if(!P(n)){if(!Zn.config.isPreviewSession||!t.properties?.gist?.livePreview)return i(`Tooltip target element "${n}" not found for message ${t.messageId}, skipping display`),Zn.messageError(t),null;i(`Preview: tooltip target "${n}" not found, loading message for preview bar`)}const o=Zn.currentMessages.find(t=>t.tooltipPosition&&t.elementId===n);o&&(i(`Tooltip already showing on target "${n}" (instance ${o.instanceId}), dismissing it first`),Zn.messageDismissed(o),fe(o),o.instanceId&&Ft(o.instanceId)),t.instanceId=g(),t.overlay=!1,t.firstLoad=!0,t.shouldResizeHeight=!1,t.shouldScale=!1,t.renderStartTime=(new Date).getTime(),t.elementId=n,Zn.currentMessages.push(t);return Rn(t,null,t.savedStepName||null)}(t,e):Zn.overlayInstanceId?(i(`Message ${Zn.overlayInstanceId} already showing.`),null):(t.instanceId=g(),t.overlay=!0,t.firstLoad=!0,t.shouldResizeHeight=!0,t.shouldScale=e.shouldScale,t.renderStartTime=(new Date).getTime(),Zn.overlayInstanceId=t.instanceId,Zn.currentMessages.push(t),Rn(t,null,t.savedStepName||null))}function jn(t,e){return Zn.isDocumentVisible?Ut(t.queueId)?(i(`Message with queueId ${t.queueId} is already showing.`),null):Ht(e)?(i(`Message with elementId ${e} already has a message.`),null):(t.instanceId=g(),t.overlay=!1,t.firstLoad=!0,t.shouldScale=!1,t.elementId=e,t.shouldResizeHeight=!de(e),t.renderStartTime=(new Date).getTime(),Zn.currentMessages.push(t),Rn(t,e,t.savedStepName||null)):(i("Document hidden, not showing message now."),null)}async function Ln(t){t?(Zn.messageDismissed(t),await Tn(t)):i("Message not found")}async function Tn(t){"tooltip"===Yt(t)?Nn(t):t.overlay?await Mn(!0,t):Dn(t)}async function Pn(t){t?zt(t).persistent&&(i("Persistent message dismissed, logging view"),await Un(t),await qn(t),await qe(t.queueId??"")):i("Message not found")}function Dn(t){t.instanceId&&Ft(t.instanceId),t.elementId&&le(t.elementId),Zn.config.isPreviewSession&&(kn(),An())}function Nn(t){fe(t),t.instanceId&&Ft(t.instanceId),0===Zn.currentMessages.length&&(window.removeEventListener("message",Wn),window.removeEventListener("touchstart",zn)),Zn.config.isPreviewSession&&(kn(),An())}async function Mn(t,e){t?await ge():me(),0===Zn.currentMessages.length&&(window.removeEventListener("message",Wn),window.removeEventListener("touchstart",zn)),e.instanceId&&Ft(e.instanceId),Zn.overlayInstanceId=null,Zn.config.isPreviewSession&&(kn(),An())}function An(){const t=new URL(window.location.href);t.searchParams.delete(_e),t.searchParams.delete(Oe),history.replaceState(null,"",t.toString())}function Rn(t,e=null,n=null){const o=Zn.config.env,s={endpoint:v.ENGINE_API_ENDPOINT[o],siteId:Zn.config.siteId,dataCenter:Zn.config.dataCenter,messageId:t.messageId,instanceId:t.instanceId??"",livePreview:!1,properties:t.properties,customAttributes:Object.fromEntries(new Map(we))},a=`${v.GIST_VIEW_ENDPOINT[o]}/index.html`;return window.addEventListener("message",Wn),window.addEventListener("touchstart",zn),"tooltip"===Yt(t)?function(t,e,n,i=null){const o=e.instanceId??"",s=be(o),a=zt(e),r=he.get(o);r&&(r.cleanup(),he.delete(o)),document.querySelectorAll(`#gist-tooltip-${o}`).forEach(t=>{t.parentNode?.removeChild(t)});const l=`gist-tooltip-${o}`,d=document.createElement("div");d.id=l,d.innerHTML=function(t,e,n,i=""){let o=600;e.messageWidth>o&&(o=e.messageWidth);const s=e.tooltipArrowColor,a=function(t){switch(t){case"top":default:return"gist-arrow-bottom";case"bottom":return"gist-arrow-top";case"left":return"gist-arrow-right";case"right":return"gist-arrow-left"}}(e.tooltipPosition),r=i?`#${i} `:"";return`\n <div class="gist-tooltip-outer">\n <style>\n ${r}.gist-tooltip-outer {\n position: absolute;\n }\n ${r}.gist-tooltip-container {\n position: relative;\n z-index: 9999999;\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n }\n ${r}.gist-tooltip-container.gist-visible {\n opacity: 1;\n }\n ${r}.gist-tooltip-frame-clip {\n overflow: hidden;\n }\n ${r}.gist-tooltip-frame {\n display: block;\n width: ${e.messageWidth}px;\n border: none;\n transition: height 0.1s ease-in-out;\n color-scheme: light only;\n }\n ${r}.gist-tooltip-arrow {\n width: 0;\n height: 0;\n position: absolute;\n z-index: 1;\n }\n ${r}.gist-tooltip-arrow.gist-arrow-bottom {\n bottom: 0;\n left: 50%;\n transform: translateX(-50%) translateY(100%);\n border-left: 10px solid transparent;\n border-right: 10px solid transparent;\n border-top: 10px solid ${s};\n }\n ${r}.gist-tooltip-arrow.gist-arrow-top {\n top: 0;\n left: 50%;\n transform: translateX(-50%) translateY(-100%);\n border-left: 10px solid transparent;\n border-right: 10px solid transparent;\n border-bottom: 10px solid ${s};\n }\n ${r}.gist-tooltip-arrow.gist-arrow-right {\n right: 0;\n top: 50%;\n transform: translateY(-50%) translateX(100%);\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-left: 10px solid ${s};\n }\n ${r}.gist-tooltip-arrow.gist-arrow-left {\n left: 0;\n top: 50%;\n transform: translateY(-50%) translateX(-100%);\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-right: 10px solid ${s};\n }\n @media (max-width: ${o}px) {\n ${r}.gist-tooltip-frame {\n max-width: 100%;\n }\n }\n </style>\n <div class="gist-tooltip-container">\n <div class="gist-tooltip-arrow ${a}"></div>\n <div class="gist-tooltip-frame-clip">\n <iframe id="${t}" class="gist-tooltip-frame" src="${n}"></iframe>\n </div>\n </div>\n </div>`}(s,a,t,l),document.body.appendChild(d),ce(s,n,i)}(a,t,s,n):e?(Wt.includes(e)&&_t(e),function(t,e,n,o,s=null){const a=P(t);if(a){const i=be(n.instanceId??"");a.classList.add(i);const r=zt(n);let l=r.messageWidth+"px";Ot.includes(t)&&!r.hasCustomWidth&&(l="100%"),Wt.includes(t)&&(a.style.width=l),de(t)||(a.style.height="0px"),a.innerHTML=function(t,e,n){return function(t,e,n){let i=800;return e.messageWidth>i&&(i=e.messageWidth),`\n <div id="gist-embed">\n <style>\n #x-gist-floating-top, #x-gist-floating-top-left, #x-gist-floating-top-right {\n position: fixed;\n top: 0px;\n z-index: 1000000;\n }\n #x-gist-floating-bottom, #x-gist-floating-bottom-left, #x-gist-floating-bottom-right {\n position: fixed;\n bottom: 0px;\n z-index: 1000000;\n }\n #x-gist-bottom, #x-gist-top, #x-gist-floating-top, #x-gist-floating-bottom {\n left: 50%;\n transform: translate(-50%, 0%);\n }\n #x-gist-floating-top-right, #x-gist-floating-bottom-right {\n right: 0px;\n }\n #gist-embed {\n position: relative;\n height: 100%;\n width: 100%;\n }\n #gist-embed-container {\n position: relative;\n height: 100%;\n width: 100%;\n }\n #gist-embed-container .gist-frame {\n height: 100%;\n width: 100%;\n border: none;\n color-scheme: light only;\n }\n #x-gist-top.${t},\n #x-gist-bottom.${t},\n #x-gist-floating-top.${t},\n #x-gist-floating-bottom.${t},\n #x-gist-floating-top-left.${t},\n #x-gist-floating-top-right.${t},\n #x-gist-floating-bottom-left.${t},\n #x-gist-floating-bottom-right.${t} {\n transition: height 0.1s ease-in-out;\n }\n @media (max-width: ${i}px) {\n #x-gist-top.${t},\n #x-gist-bottom.${t},\n #x-gist-floating-top.${t},\n #x-gist-floating-bottom.${t},\n #x-gist-floating-top-left.${t},\n #x-gist-floating-top-right.${t},\n #x-gist-floating-bottom-left.${t},\n #x-gist-floating-bottom-right.${t} {\n width: 100% !important;\n }\n }\n </style>\n <div id="gist-embed-container">\n <iframe id="${t}" class="gist-frame" src="${n}"></iframe>\n </div>\n </div>`}(be(e.instanceId??""),n,t)}(e,n,r),ce(i,o,s)}else i(`Message could not be embedded, elementId ${t} not found.`)}(e,a,t,s,n)):function(t,e,n,i=null){document.querySelectorAll("#gist-embed-message").forEach(t=>{t.parentNode?.removeChild(t)}),document.body.insertAdjacentHTML("afterbegin",function(t,e){const n=zt(e);return function(t,e,n){let i=600;return e.messageWidth>i&&(i=e.messageWidth),`\n <div id="gist-embed-message">\n <style>\n #gist-overlay.gist-background {\n position: fixed;\n z-index: 9999999998;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: ${e.overlayColor};\n visibility: hidden;\n }\n #gist-overlay.gist-background.gist-visible {\n visibility: visible;\n }\n .gist-message {\n width: ${e.messageWidth}px;\n position: absolute;\n border: none;\n opacity: 0;\n transition: opacity 0.3s ease-in-out, height 0.1s ease-in-out;\n z-index: 9999999999;\n left: 50%;\n transform: translateX(-50%);\n color-scheme: light only;\n }\n .gist-message.gist-visible {\n opacity: 1;\n pointer-events: auto;\n }\n .gist-message.gist-center {\n transform: translate(-50%, -50%);\n top: 50%;\n }\n .gist-message.gist-bottom {\n bottom: 0;\n }\n .gist-message.gist-top {\n top: 0;\n }\n @media (max-width: ${i}px) {\n .gist-message {\n width: 100%;\n }\n }\n </style>\n <div id="gist-overlay" class="gist-background">\n <iframe id="${t}" class="gist-message" src="${n}"></iframe>\n </div>\n </div>`}(be(e.instanceId??""),n,t)}(t,e)),ce(be(e.instanceId??""),n,i)}(a,t,s,n),t}async function qn(t){let e;i(`Message shown, logging view for: ${t.messageId}`),null!=t.queueId?(await Un(t),e=await A(t.queueId)):e=await async function(t){try{return await S().post(`/api/v1/logs/message/${t}`)}catch(t){return x(t)}}(t.messageId),i(200===e?.status?"Message view logged":`Problem logging message: ${e?.status}`)}function zn(){}async function Wn(t){const e=Zn.config.env,n=t.data;if(n.gist&&t.origin===v.RENDERER_HOST[e]){const t=n.gist.instanceId,e=Bt(t);if(!e)return;const o=zt(e);switch(n.gist.method){case"routeLoaded":{const s=.001*((new Date).getTime()-(e.renderStartTime??0));if(i(`Engine render for message: ${e.messageId} timer elapsed in ${s.toFixed(3)} seconds`),async function(t){const e=await Ae(t);e&&r(e)}(e.queueId??""),e.currentRoute=n.gist.parameters.route,n.gist.parameters.fullDisplaySettings&&!e.displaySettings?e.displaySettings=n.gist.parameters.fullDisplaySettings:e.displaySettings&&(i("SDK already has display settings state, sending it to iframe"),ue(e)),Zn.config.isPreviewSession&&e.properties?.gist?.livePreview&&$n(e),e.firstLoad||e.isDisplayChange){if("tooltip"===Yt(e)){const t=e.properties?.gist?.elementId||e.elementId||void 0;if(!t||!P(t)){if(Zn.config.isPreviewSession&&e.properties?.gist?.livePreview){i(`Preview: tooltip target "${t}" not found, preview bar will show element picker`),e.firstLoad=!1,e.isDisplayChange=!1;break}i(`Tooltip target not found for "${t}", emitting error and skipping display`),Zn.messageError(e),e.firstLoad=!1,e.isDisplayChange=!1,Nn(e);break}const n=await async function(t){const e=t.instanceId??"",n=zt(t),o=`gist-tooltip-${e}`,s=P(o);if(!s)return i(`Tooltip wrapper not found for instance ${e}`),!1;const a=t.properties?.gist?.elementId||t.elementId||void 0;if(!a)return i(`No target selector for tooltip ${e}`),!1;const r=he.get(e);r&&(r.cleanup(),he.delete(e));const l=s.querySelector(".gist-tooltip-outer");if(!l)return i(`Tooltip inner element not found for instance ${e}`),!1;const d=n.tooltipPosition||"bottom";if(!await async function(t,e,n){const o=ie(e);if(!o)return!1;let s=[];try{s=re(o)}catch{}if(oe(o.getBoundingClientRect(),s))return!0;if(!function(t,e,n){const i=ie(e);if(!i)return!1;const o=i.getBoundingClientRect(),s=window.innerWidth,a=window.innerHeight,r=new DOMRect(Math.max(0,(s-o.width)/2),Math.max(0,(a-o.height)/2),o.width,o.height);return t.style.display="",null!==ae(t.getBoundingClientRect(),r,n)}(t,e,n))return i(`Preflight failed: tooltip would not fit after scrolling target "${e}" into view`),!1;o.scrollIntoView({behavior:"smooth",block:"center",inline:"center"}),await function(t){return new Promise(e=>{let n=t.getBoundingClientRect(),i=0;const o=Date.now();setTimeout(function s(){const a=t.getBoundingClientRect();Math.abs(a.top-n.top)<1&&Math.abs(a.left-n.left)<1?i++:i=0,n=a,i>=2||Date.now()-o>1e3?e():setTimeout(s,50)},50)})}(o);const a=o.getBoundingClientRect();let r=[];try{r=re(o)}catch{}return oe(a,r)}(l,a,d))return i(`Tooltip for instance ${e} skipped: target "${a}" is off-screen and cannot be scrolled into a valid position`),!1;const c=function(t,e,n,o){const s=ie(e);if(!s)return null;let a=null,r=null,l=!1,d=[],c=null;try{d=re(s)}catch{}function p(){if(l)return;if(!s||!document.contains(s)||!document.contains(t))return i("Tooltip or target element removed from DOM, cleaning up listeners"),g(),void o?.onDetach?.();const e=s.getBoundingClientRect();if(!oe(e,d))return void(t.style.display="none");t.style.display="";const a=ae(t.getBoundingClientRect(),e,n);a?(function(t,e){t.style.position="absolute",t.style.top=`${e.top+window.scrollY}px`,t.style.left=`${e.left+window.scrollX}px`}(t,a),function(t,e){const n=t.querySelector(".gist-tooltip-arrow");n&&(n.classList.remove("gist-arrow-top","gist-arrow-bottom","gist-arrow-left","gist-arrow-right"),n.classList.add(ne[e.position]),null!==e.arrowOffset?"top"===e.position||"bottom"===e.position?(n.style.left=`calc(50% + ${e.arrowOffset}px)`,n.style.removeProperty("top")):(n.style.top=`calc(50% + ${e.arrowOffset}px)`,n.style.removeProperty("left")):"top"===e.position||"bottom"===e.position?(n.style.left="50%",n.style.removeProperty("top")):(n.style.top="50%",n.style.removeProperty("left")))}(t,a)):t.style.display="none"}function u(){null===a&&(a=requestAnimationFrame(()=>{a=null,p()}))}function g(){if(!l){l=!0,c&&(c.disconnect(),c=null),window.removeEventListener("scroll",u),window.removeEventListener("resize",u);for(const t of d)t.removeEventListener("scroll",u);null!==a&&(cancelAnimationFrame(a),a=null),null!==r&&(cancelAnimationFrame(r),r=null)}}if(p(),l)return null;window.addEventListener("scroll",u,{passive:!0}),window.addEventListener("resize",u,{passive:!0});for(const t of d)t.addEventListener("scroll",u,{passive:!0});try{c=new MutationObserver(()=>{null===r&&(r=requestAnimationFrame(()=>{r=null,document.contains(s)||p()}))}),c.observe(document.body,{childList:!0,subtree:!0})}catch{}return{cleanup:g,reposition:p}}(l,a,d,{onDetach:()=>{he.delete(e);const t=P(o);t&&t.parentNode?.removeChild(t)}});if(c){if("none"!==l.style.display){const t=s.querySelector(".gist-tooltip-container");return t?(he.set(e,c),t.classList.add("gist-visible"),!0):(c.cleanup(),i(`Tooltip container not found for instance ${e}`),!1)}return c.cleanup(),i(`Tooltip for instance ${e} could not be positioned within the viewport, target "${a}" may be off-screen`),!1}return i(`Failed to position tooltip for instance ${e}, target "${a}" may not exist or no position fits the viewport`),!1}(e);if(!n){if(Zn.config.isPreviewSession&&e.properties?.gist?.livePreview){i(`Preview: tooltip positioning failed for "${t}", preview bar will remain active`),e.firstLoad=!1,e.isDisplayChange=!1;break}i(`Tooltip positioning failed for "${t}", emitting error and cleaning up`),Zn.messageError(e),e.firstLoad=!1,e.isDisplayChange=!1,Nn(e);break}}else e.overlay?function(t){const e=zt(t),n=document.querySelector("#gist-overlay");if(n){n.classList.add("gist-visible");const i=document.querySelector(".gist-message");i&&(t.position?i.classList.add("gist-"+t.position):i.classList.add("gist-center")),setTimeout(ye,100),e.exitClick&&setTimeout(()=>function(t){const e=document.querySelector("#gist-overlay");e&&e.addEventListener("click",()=>{Zn.dismissMessage(t)})}(t.instanceId??""),1e3)}else me()}(e):function(t){const e=P(t);e&&e.classList.add("gist-visible")}(e.elementId);e.firstLoad&&!e.isDisplayChange&&(Zn.messageShown(e),o.persistent?i("Persistent message shown, skipping logging view"):await qn(e)),e.firstLoad=!1,e.isDisplayChange=!1}Vt(t,e);break}case"tap":{const t=n.gist.parameters.action,i=n.gist.parameters.name;if(Zn.messageAction(e,t,i),n.gist.parameters.system&&!o.persistent){await Ln(e);break}try{const n=new URL(t);if(n&&"gist:"===n.protocol)switch(n.href.replace("gist://","").split("?")[0]){case"close":await Pn(e),await Hn(e),await Ln(e),await Jn();break;case"showMessage":{const t=n.searchParams.get("messageId"),e=n.searchParams.get("properties");if(t){const n=e?JSON.parse(atob(e)):void 0;await Zn.showMessage({messageId:t,properties:n})}break}case"loadPage":{const t=n.href.substring(n.href.indexOf("?url=")+5);t&&(t.startsWith("mailto:")||t.startsWith("https://")||t.startsWith("http://")||t.startsWith("/")?window.location.href=t:window.location.href=window.location+t);break}}}catch{}break}case"changeMessageStep":{const t=n.gist.parameters.displaySettings,r=n.gist.parameters.messageStepName;Zn.config.isPreviewSession&&r&&e.properties?.gist?.livePreview&&function(t,e){if(Ye)return;Je=t;const n=Ge.find(e=>e.stepName===t);n?Xe={...n.displaySettings}:e&&(Xe={...e}),wn()}(r,t),(o.persistent||ke(e))&&await async function(t,e,n){const o=await Re(t);if(!o)return;const r=a(o)||{},l={stepName:void 0!==e?e:r.stepName,displaySettings:void 0!==n?n:r.displaySettings},d=new Date;d.setDate(d.getDate()+30),s(o,l,d),i(`Saved message state for queueId: ${t}`)}(e.queueId??"",r,t),t&&Kt(e,t)&&(i("Display settings changed, reloading message"),await On(e),Zt(e,t),await _n(e,r??null));break}case"routeChanged":e.currentRoute=n.gist.parameters.route,e.renderStartTime=(new Date).getTime(),Vt(t,e),i(`Route changed to: ${e.currentRoute}`);break;case"sizeChanged":i(`Size Changed Width: ${n.gist.parameters.width} - Height: ${n.gist.parameters.height}`),"tooltip"===Yt(e)?function(t,e){const n=t.instanceId??"",i=be(n),o=document.getElementById(i);if(o&&e.height>0){o.style.height=`${e.height}px`;const t=he.get(n);t&&t.reposition()}}(e,n.gist.parameters):e.elementId&&!e.shouldResizeHeight||function(t,e){const n=P(t.elementId?t.elementId:be(t.instanceId??""));if(n){const i=n.style;if(e.height>0)if(e.height>window.innerHeight){const n=1-(e.height/window.innerHeight-1);t.shouldScale&&n>=.4?(i.height=`${e.height}px`,i.transform=`translateX(-50%) translateY(-50%) scale(${n})`):i.height=`${window.innerHeight}px`}else i.height=`${e.height}px`}}(e,n.gist.parameters);break;case"titleChanged":i(`Overlay title changed to: ${n.gist.parameters.title}`),function(t,e){const n=P(be(t));n&&(n.title=e)}(t,n.gist.parameters.title);break;case"eventDispatched":Zn.events.dispatch("eventDispatched",{name:n.gist.parameters.name,payload:n.gist.parameters.payload});break;case"error":case"routeError":Zn.messageError(e),"tooltip"===Yt(e)?Nn(e):Zn.overlayInstanceId?await Mn(!1,e):Dn(e)}}}async function _n(t,e){t.isDisplayChange=!0,t.renderStartTime=(new Date).getTime();const n=Yt(t),o=t.elementId||null;if("tooltip"===n)return Zn.overlayInstanceId===t.instanceId&&(Zn.overlayInstanceId=null),t.shouldScale=!1,t.shouldResizeHeight=!1,void Rn(t,null,e);if(o){const e=Ht(o);e&&e.instanceId!==t.instanceId&&(i(`Dismissing existing message at ${o} to make room for multi-step message`),await Ln(e))}if(t.overlay){Zn.overlayInstanceId=t.instanceId??null;const e=zt(t);t.shouldScale=e.shouldScale,t.shouldResizeHeight=!0}else Zn.overlayInstanceId=null,t.shouldScale=!1,t.shouldResizeHeight=!de(o??"");o&&Wt.includes(o)&&_t(o),Rn(t,o,e)}async function On(t){"tooltip"===Yt(t)?fe(t):t.overlay?await ge():t.elementId&&le(t.elementId)}async function Bn(t,e,n){n&&Kt(t,n)&&(await On(t),Zt(t,n)),await _n(t,e??null)}async function Un(t){i(`Logging user message view locally for: ${t.queueId}`),$e(t)?await async function(t){i(`Marking broadcast ${t} as seen.`);const e=await Ee();if(!e)return;const n=await Ce(e,t);if(!n)return;const o=n.properties.gist.broadcast,{frequency:r}=o,l=je(e,t),d=Le(e,t),c=a(l)||0;if(s(l,c+1),1===r.count)s(d,!1),i(`Marked broadcast ${t} as seen.`);else{const e=new Date;e.setSeconds(e.getSeconds()+r.delay),s(d,!1,e),i(`Marked broadcast ${t} as seen, broadcast was seen ${c+1} times, next show date is ${e}.`)}}(t.queueId??""):await async function(t){const e=await Me();if(!e)return;const n=a(e)??[];n.push(t),s(e,n)}(t.queueId??"")}async function Hn(t){$e(t)&&(i(`Logging broadcast dismissed locally for: ${t.queueId}`),await async function(t){i(`Marking broadcast ${t} as dismissed.`);const e=await Ee();if(!e)return;const n=await Ce(e,t);n&&(!0!==n.properties.gist.broadcast.frequency.ignoreDismiss?(s(Le(e,t),!1),i(`Marked broadcast ${t} as dismissed and will not show again.`)):i(`Broadcast ${t} is set to ignore dismiss.`))}(t.queueId??""),await qe(t.queueId??""))}const Fn=(t,e)=>t().then((t=>new Promise(e=>setTimeout(e,t)))(e).then(()=>Fn(t,e)));let Vn=!1,Gn=null;async function Xn(){Vn?await Jn():Pt()?(i("Queue watcher started"),Vn=!0,Fn(()=>new Promise(()=>{!async function(){if(v.hasActiveSSEConnection())return!v.isSSEConnectionManagedBySDK()&&Gn&&(i("Not the main instance, closing our SSE connection."),Kn()),void await Jn();Gn&&(i("SSE connection not active, closing it."),Kn()),!v.useSSE()||Tt()?await Yn():await async function(){Kn();const t=function(){const t=Mt();return null===t?(i("No user token available for SSE endpoint."),null):v.GIST_QUEUE_REALTIME_API_ENDPOINT[Zn.config.env??"prod"]+`/api/v3/sse?userToken=${t}&siteId=${Zn.config.siteId}&sessionId=${kt()}`}();if(null===t)return i("SSE endpoint not available, falling back to polling."),void await Yn();i(`Starting SSE queue listener on ${t}`),Gn=new EventSource(t),v.setActiveSSEConnection(),Gn.addEventListener("connected",async t=>{try{i("SSE connection received"),v.setUseSSEFlag(!0);const e=JSON.parse(t.data);e.heartbeat&&(v.setSSEHeartbeat(e.heartbeat),i(`SSE heartbeat set to ${e.heartbeat} seconds`)),v.setActiveSSEConnection()}catch(t){i(`Failed to parse SSE settings: ${t}`)}r(Ct),await Yn()}),Gn.addEventListener("messages",async t=>{try{const e=JSON.parse(t.data);i("SSE message received"),await Pe(e),await Se(e),await Jn()}catch(t){i(`Failed to parse SSE message: ${t}`),Kn()}}),Gn.addEventListener("inbox_messages",async t=>{try{const e=JSON.parse(t.data);i("SSE inbox messages received"),await z(e)}catch(t){i(`Failed to parse SSE inbox messages: ${t}`)}}),Gn.addEventListener("error",async()=>{i("SSE error received"),Kn()}),Gn.addEventListener("heartbeat",async()=>{i("SSE heartbeat received"),v.setActiveSSEConnection(),v.setUseSSEFlag(!0)})}()}()}),1e3)):i("User token not setup, queue not started.")}async function Jn(){const t=await Ie(),e=await De(),n=t.concat(e);i(`Messages in local queue: ${n.length}`);const o=n.sort((t,e)=>t.priority-e.priority);for(const t of o)await Qn(t)}async function Qn(t){let e=zt(t);if(e.hasRouteRule){if(null==Zn.currentRoute&&"loading"===document.readyState)return i(`Deferring message ${t.queueId}, page not fully loaded`),!1;if(!Qt(e.routeRule))return i(`Route ${new URL(window.location.href).pathname} (currentRoute: ${Zn.currentRoute}) does not match rule: ${e.routeRule}`),!1}if(e.hasPosition&&(t.position=e.position),e.hasTooltipPosition&&(t.tooltipPosition=e.tooltipPosition),e.persistent||ke(t)){const n=await async function(t){const e=await Re(t);return e?a(e):null}(t.queueId??"");n&&(i(`Restoring saved state for queueId ${t.queueId}`),n.displaySettings&&(Zt(t,n.displaySettings),e=zt(t)),t.savedStepName=n.stepName??null)}if(e.persistent||ke(t)||!await async function(t){const e=await Ae(t);return!!e&&null!==a(e)}(t.queueId??"")){let n=null;return e.isEmbedded?!Zn.config.isPreviewSession||!t.properties?.gist?.livePreview||P(e.elementId)||Wt.includes(e.elementId)?n=jn(t,e.elementId):(i(`Preview: element "${e.elementId}" not found, showing as overlay so placement can be changed`),n=await En(t)):n=await En(t),n&&async function(t){const e=await Ae(t);e&&s(e,!0,new Date(Date.now()+5e3))}(t.queueId??""),null!==n}return i(`Not showing message with queueId ${t.queueId} because its already loading.`),!1}async function Yn(){if(Pt())if(Zn.isDocumentVisible)if(null===a(Ct)){const t=await async function(){if(It)return;It=!0;const t=Pt();let e;try{const t={"X-Gist-User-Anonymous":String(Tt()),"Content-Language":String(C())};e=await S().post(`/api/v4/users?sessionId=${kt()}`,{},{headers:t})}catch(t){const n=x(t);n?e=n:i(`Error getting user queue: ${t}`)}finally{It=!1}return t!==Pt()?(i("User token changed, clearing queue next pull check."),void r(Ct)):(function(t){const e=t?.headers?.["x-gist-queue-polling-interval"];St=e&&Number(e)>0?Number(e):Math.min(2*St,600);const n=new Date((new Date).getTime()+1e3*St);s(Ct,St,n)}(e),function(t){const e="true"===t?.headers?.["x-cio-use-sse"]?.toLowerCase();v.setUseSSEFlag(e)}(e),await async function(t){const e=t?.headers?.["x-cio-inbox-enabled"]?.toLowerCase();if(void 0===e)return;const n="true"===e;v.setInboxEnabledFlag(n),n&&(i("Inbox enabled, ensuring branding and templates are cached."),await xt(),gt())}(e),e)}();if(t){if(200===t.status||204===t.status){i("200 response, updating local store.");const e=t.data,n=e?.inAppMessages??[],o=e?.inboxMessages??[];Pe(n),Se(n),z(o)}else 304===t.status&&i("304 response, using local store.");await Jn()}else i("No response object returned while checking message queue.")}else i("Next queue pull scheduled for later.");else i("Document not visible, skipping queue check.");else i("User token reset, skipping queue check.")}function Kn(t=!1){t&&v.removeActiveSSEConnection(),(t||v.isSSEConnectionManagedBySDK())&&v.setUseSSEFlag(!1),Gn&&(i("Stopping SSE queue listener..."),Gn.close(),Gn=null)}class Zn{static async setup(t){this.initialized?i("Gist SDK already initialized, skipping setup."):(this.initialized=!0,this.events=new n,this.config={useAnonymousSession:t.useAnonymousSession??!1,siteId:t.siteId,dataCenter:t.dataCenter,env:t.env??"prod",logging:t.logging??!1,experiments:t.experiments??!1},this.currentMessages=[],he.forEach(t=>t.cleanup()),he.clear(),document.querySelectorAll('[id^="gist-tooltip-"]').forEach(t=>{t.parentNode?.removeChild(t)}),this.overlayInstanceId=null,this.currentRoute=null,this.isDocumentVisible=!0,this.config.isPreviewSession=function(){const t=new URLSearchParams(window.location.search),e=t.get(_e);if(e){sessionStorage.setItem(o,String(!1)),Zn.setUserToken(e),i(`Preview mode enabled with user token: ${e}`),function(){if(document.getElementById(He))return;N(Ue,We);try{Qe="true"===sessionStorage.getItem(Be)}catch{Qe=!1}const t=D("div",{id:He});document.body.appendChild(t),wn()}();const n=t.get(Oe);if(n)try{const t=JSON.parse(atob(n)),e=t.stepName||null,i=t.displayType||null;(e||i)&&function(t,e){sn=t,an=e}(e,i)}catch{i("Preview bar: failed to parse cioPreviewSettings")}}return!l()}(),xi(),function(){const t=d();for(let e=t.length-1;e>=0;e--){const n=t.key(e);n?.startsWith("gist.")&&c(n)}}(),async function(){v.inboxEnabled()&&(E()&&T()||(i("Inbox enabled but missing cached branding/templates, fetching."),await xt()),gt())}(),i(`Setup complete on ${this.config.env} environment.`),this.config.isPreviewSession||!this.config.useAnonymousSession||new URLSearchParams(location.search).has("ajs_uid")||Dt(),await Xn(),"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",()=>{Jn()},{once:!0}),document.addEventListener("visibilitychange",async()=>{"hidden"===document.visibilityState?this.isDocumentVisible=!1:(this.isDocumentVisible=!0,await Jn())},!1))}static setupDebugOverlay(){xi()}static async setCurrentRoute(t){this.currentRoute=t,i(`Current route set to: ${t}`),await async function(){if(0!==Zn.currentMessages.length)for(const t of[...Zn.currentMessages])null==document.querySelector(`#gist-${t.instanceId}`)&&(i(`Removing active message ${t.instanceId} that no longer exists after route change`),await Tn(t))}(),await Jn(),this.events?.dispatch("routeChanged",t)}static async setUserToken(t,e){this.config.isPreviewSession||(function(t,e){void 0===e&&(e=new Date).setDate(e.getDate()+30),s(Et,t,e),Tt()&&(r(Ct),r(jt)),i(`Set user token "${t}" with expiry date set to ${e}`)}(t,e),Kn(!0),await Xn())}static setUserLocale(t){var e;s(I,e=t),i(`Set user locate to "${e}"`)}static setCustomAttribute(t,e){return function(t,e){return t&&"string"==typeof t?(we.set(t,e),xe(),i(`Set custom attribute "${t}" to "${e}"`),!0):(i(`Invalid key for custom attribute: ${t}`),!1)}(t,e)}static clearCustomAttributes(){we.clear(),r(ve),i("Cleared all custom attributes")}static removeCustomAttribute(t){return function(t){if(!t||"string"!=typeof t)return i(`Invalid key for custom attribute: ${t}`),!1;const e=we.has(t);return we.delete(t),we.size>0?xe():r(ve),i(`Removed custom attribute "${t}"`),e}(t)}static async clearUserToken(){this.config.isPreviewSession||(At(),this.config.useAnonymousSession&&Dt(),Kn(!0),await Xn())}static async dismissMessage(t){const e=Bt(t);e&&(await Pn(e),await Hn(e),await Ln(e),await Jn())}static async embedMessage(t,e){const n=jn(t,e);return n?.instanceId??null}static async showMessage(t){const e=await En(t);return e?.instanceId??null}static updateMessageDisplaySettings(t,e){const n=Bt(t);return!!n&&(n.displaySettings=e,ue(n),!0)}static messageShown(t){i(`Message shown: ${t.messageId}`),this.events.dispatch("messageShown",t)}static messageDismissed(t){null!==t&&(i(`Message dismissed: ${t.messageId}`),this.events.dispatch("messageDismissed",t))}static messageError(t){i(`Message error: ${t.messageId}`),this.events.dispatch("messageError",t)}static messageAction(t,e,n){i(`Message action: ${t.currentRoute}, ${e} with name ${n} on ${t.instanceId}`),this.events.dispatch("messageAction",{message:t,action:e,name:n})}static async getInboxUnopenedCount(){return(await W()).filter(t=>!t.opened).length}static async getInboxMessages(){return await W()}static async updateInboxMessageOpenState(t,e){return await _(t,e)}static async removeInboxMessage(t){return await O(t)}static isInboxEnabled(){return v.inboxEnabled()}}const ti="\n #gist-debug-overlay {\n position: fixed; bottom: 16px; right: 16px;\n z-index: 99999999999;\n background: #08272B; color: white;\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 11px;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.3);\n width: 300px;\n max-height: min(700px, calc(100vh - 32px));\n display: flex;\n flex-direction: column;\n pointer-events: auto;\n overflow: hidden;\n }\n .gist-debug-header {\n display: flex; align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid rgba(255,255,255,0.1);\n flex-shrink: 0;\n }\n .gist-debug-title {\n flex: 1;\n font-weight: 700;\n font-size: 12px;\n letter-spacing: 0.02em;\n }\n #gist-debug-overlay-close {\n background: none; border: none;\n color: white; cursor: pointer;\n padding: 0; font-size: 18px; line-height: 1;\n opacity: 0.6; flex-shrink: 0;\n font-family: system-ui, -apple-system, sans-serif;\n -webkit-appearance: none; appearance: none;\n }\n #gist-debug-overlay-close:hover { opacity: 1; }\n .gist-debug-section {\n padding: 0 12px 8px;\n border-bottom: 1px solid rgba(255,255,255,0.07);\n overflow-y: auto;\n max-height: 180px;\n }\n .gist-debug-section:last-child { border-bottom: none; }\n .gist-debug-label {\n position: sticky;\n top: 0;\n z-index: 1;\n background: #08272B;\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: rgba(255,255,255,0.45);\n padding: 8px 0 5px;\n font-weight: 600;\n }\n .gist-debug-value {\n font-family: 'SF Mono', 'Monaco', 'Consolas', monospace;\n font-size: 11px;\n color: rgba(255,255,255,0.9);\n overflow-wrap: break-word;\n }\n .gist-debug-msg {\n background: rgba(255,255,255,0.06);\n border-radius: 4px;\n padding: 5px 7px;\n margin-bottom: 8px;\n }\n .gist-debug-msg:last-child { margin-bottom: 0; }\n .gist-debug-msg-row {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 2px;\n }\n .gist-debug-msg-row:last-child { margin-bottom: 0; }\n .gist-debug-msg-meta {\n display: flex;\n align-items: center;\n gap: 5px;\n margin-bottom: 4px;\n }\n .gist-debug-msg-state {\n font-size: 9px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n border-radius: 3px;\n padding: 1px 4px;\n flex-shrink: 0;\n }\n .gist-debug-msg-state--active {\n color: #4caf82;\n background: rgba(76,175,130,0.12);\n }\n .gist-debug-msg-state--queued {\n color: rgba(255,200,100,0.9);\n background: rgba(255,200,100,0.1);\n }\n .gist-debug-msg-dismiss {\n margin-left: auto;\n background: none;\n border: none;\n color: rgba(255,255,255,0.3);\n cursor: pointer;\n padding: 0;\n font-size: 13px;\n line-height: 1;\n font-family: system-ui, -apple-system, sans-serif;\n -webkit-appearance: none;\n appearance: none;\n }\n .gist-debug-msg-dismiss:hover { color: rgba(255,255,255,0.7); }\n .gist-debug-element-found {\n color: #4caf82;\n font-size: 9px;\n font-weight: 700;\n flex-shrink: 0;\n }\n .gist-debug-route-mismatch {\n color: #ff6b6b;\n font-size: 9px;\n font-weight: 700;\n flex-shrink: 0;\n }\n .gist-debug-msg-type {\n font-size: 9px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: rgba(255,255,255,0.45);\n background: rgba(255,255,255,0.08);\n border-radius: 3px;\n padding: 1px 4px;\n flex-shrink: 0;\n }\n .gist-debug-msg-key {\n color: rgba(255,255,255,0.45);\n font-size: 10px;\n line-height: 1.4;\n min-width: 64px;\n flex-shrink: 0;\n }\n .gist-debug-msg-val {\n font-family: 'SF Mono', 'Monaco', 'Consolas', monospace;\n font-size: 10px;\n line-height: 1.4;\n color: rgba(255,255,255,0.9);\n overflow-wrap: break-word;\n }\n .gist-debug-val-error {\n color: #ff6b6b;\n font-weight: 600;\n }\n .gist-debug-expand-detail {\n background: rgba(255,107,107,0.08);\n border-left: 2px solid rgba(255,107,107,0.4);\n color: rgba(255,255,255,0.75);\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 10px;\n padding: 4px 6px;\n margin-top: 4px;\n margin-bottom: 6px;\n border-radius: 0 3px 3px 0;\n }\n .gist-debug-expand-list {\n margin: 0;\n padding: 0 0 0 14px;\n list-style: disc;\n }\n .gist-debug-expand-list li {\n margin-bottom: 3px;\n line-height: 1.4;\n }\n .gist-debug-expand-list li:last-child { margin-bottom: 0; }\n .gist-debug-msg-details {\n margin: 5px 0 0;\n padding: 0 0 0 14px;\n list-style: disc;\n color: rgba(255,255,255,0.5);\n font-size: 10px;\n line-height: 1.4;\n font-family: system-ui, -apple-system, sans-serif;\n }\n .gist-debug-msg-details li { margin-bottom: 2px; }\n .gist-debug-msg-details li:last-child { margin-bottom: 0; }\n",ei="gist-debug-overlay-styles",ni=2e3,ii=5e3;let oi=null,si=!1,ai=!1,ri=null;function li(t){const e=t.properties?.gist;return Yt(e?{...t,tooltipPosition:e.tooltipPosition??t.tooltipPosition,elementId:null!=e.elementId?String(e.elementId):t.elementId}:t)}function di(t,e,n=!1){const i=D("div",{className:"gist-debug-msg-row"});return i.appendChild(D("span",{className:"gist-debug-msg-key",textContent:t})),i.appendChild(D("span",{className:n?"gist-debug-msg-val gist-debug-val-error":"gist-debug-msg-val",textContent:e})),i}function ci(t,e,n=!1){t.replaceChildren(...e.map(([t,e])=>di(t,e,n)))}function pi(t,e){const n=D("div",{className:"gist-debug-msg"}),i=D("div",{className:"gist-debug-msg-meta"});if(i.appendChild(D("span",{className:"gist-debug-msg-type",textContent:li(t)})),i.appendChild(D("span",{className:`gist-debug-msg-state gist-debug-msg-state--${e}`,textContent:e})),t.instanceId){const e=D("button",{className:"gist-debug-msg-dismiss",textContent:"×"});e.addEventListener("click",()=>{mi(),Zn.dismissMessage(t.instanceId).then(()=>{mi(),hi()})}),i.appendChild(e)}n.appendChild(i);const o=[];for(const[e,i]of function(t){const e=t.properties?.gist,n=[];e?.routeRuleWeb&&n.push(["Route Rule",String(e.routeRuleWeb)]);const i=e?.elementId??t.elementId,o=li(t);if(i&&"overlay"===o){const t=function(t){if(t)return Xt[t]}(String(i));t&&n.push(["Position",t.replace(/([A-Z])/g," $1").toLowerCase()])}else i&&"modal"!==o&&n.push(["Target",String(i)]);const s=e?.position??t.position;s&&"overlay"!==o&&n.push(["Position",String(s)]);const a=e?.tooltipPosition??t.tooltipPosition;return a&&n.push(["Tooltip",String(a)]),n}(t)){let t=null,s=null;if("Route Rule"===e){const e=!Qt(i);t=e?"gist-debug-route-mismatch":"gist-debug-element-found",s=e?"✕":"✓",e&&o.push("Route rule does not match current route. If it should, verify the route is set correctly and that analytics.page() is called on route changes.")}else if("Target"===e){const e=!!P(i);t=e?"gist-debug-element-found":"gist-debug-route-mismatch",s=e?"✓":"✕",e||o.push("Target element not found on the page. If it should, verify the selector is correct.")}const a=di(e,i);t&&s&&a.appendChild(D("span",{className:t,textContent:s})),n.appendChild(a)}if(o.length>0){const t=D("ul",{className:"gist-debug-msg-details"});for(const e of o)t.appendChild(D("li",{textContent:e}));n.appendChild(t)}return n}function ui(t){const e=D("div",{className:"gist-debug-expand-detail"}),n=D("ul",{className:"gist-debug-expand-list"});return n.appendChild(D("li",{textContent:t})),e.appendChild(n),e}function gi(){oi&&(oi.root.remove(),document.getElementById(ei)?.remove(),null!==ri&&(clearInterval(ri),ri=null),si&&(Zn.events&&(Zn.events.off("messageShown",fi),Zn.events.off("messageDismissed",fi),Zn.events.off("messageInboxUpdated",bi),Zn.events.off("routeChanged",fi)),si=!1),oi=null)}function mi(){if(!oi)return;Zn.config?ci(oi.configRows,[["Site ID",Zn.config.siteId],["Connection",v.useSSE()?"SSE":`Polling ${St}s`]]):ci(oi.configRows,[["Status","NOT INITIALIZED"]],!0),oi.configDetail.style.display=Zn.config?"none":"";const t=Pt();t?Tt()?oi.userValue.textContent="(anonymous)":oi.userValue.textContent=t.length>32?`${t.slice(0,32)}…`:t:oi.userValue.textContent="(none)";const e=Zn.currentRoute;oi.routeValue.replaceChildren(D("span",{className:e?"gist-debug-msg-val":"gist-debug-msg-val gist-debug-val-error",textContent:e??"NONE"})),oi.routeDetail.style.display=e?"none":""}async function hi(){if(!ai&&oi){ai=!0;try{const t=Zn.currentMessages??[],[e,n]=Zn.config?await Promise.all([De(),Ie()]):[[],[]],i=new Set(t.map(t=>t.queueId??t.messageId)),o=new Set,s=[...n,...e].filter(t=>{const e=t.queueId??t.messageId;return!i.has(e)&&!o.has(e)&&(o.add(e),!0)});if(!oi)return;const a=t.length+s.length;oi.messagesLabel.textContent=`Messages (${a})`,oi.messagesList.replaceChildren(...t.map(t=>pi(t,"active")),...s.map(t=>pi(t,"queued")))}finally{ai=!1}}}function fi(){mi(),hi()}function bi(){hi()}async function yi(){si||(!si&&Zn.events&&(Zn.events.on("messageShown",fi),Zn.events.on("messageDismissed",fi),Zn.events.on("messageInboxUpdated",bi),Zn.events.on("routeChanged",fi),si=!0),si&&vi(ii)),mi(),await hi()}function vi(t){null!==ri&&clearInterval(ri),ri=setInterval(()=>{yi()},t)}const wi="cio_debug_session";function xi(){if("undefined"!=typeof window&&"true"===new URLSearchParams(window.location.search).get(wi))try{oi||null!==ri||(N(ei,ti),oi=function(){const t=D("div",{id:"gist-debug-overlay"}),e=D("div",{className:"gist-debug-header"});e.appendChild(D("span",{className:"gist-debug-title",textContent:"Customer.io In-App SDK Debugger"}));const n=D("button",{id:"gist-debug-overlay-close",ariaLabel:"Dismiss debug overlay",textContent:"×"});n.addEventListener("click",gi),e.appendChild(n),t.appendChild(e);const i=D("div",{className:"gist-debug-section"}),o=D("div",{className:"gist-debug-label"});o.appendChild(D("span",{textContent:"Config"})),i.appendChild(o);const s=D("div",{});i.appendChild(s);const a=ui("Verify your site ID and credentials are correct.");i.appendChild(a),t.appendChild(i);const r=D("div",{className:"gist-debug-section"}),l=D("div",{className:"gist-debug-label",textContent:"User"});r.appendChild(l);const d=D("div",{className:"gist-debug-value"});r.appendChild(d),t.appendChild(r);const c=D("div",{className:"gist-debug-section"}),p=D("div",{className:"gist-debug-label"});p.appendChild(D("span",{textContent:"Route"})),c.appendChild(p);const u=D("div",{className:"gist-debug-value"});c.appendChild(u);const g=ui("The current route is used to match against potential message page rules.");c.appendChild(g),t.appendChild(c);const m=D("div",{className:"gist-debug-section"}),h=D("div",{className:"gist-debug-label"});m.appendChild(h);const f=D("div",{});return m.appendChild(f),t.appendChild(m),{root:t,configRows:s,configDetail:a,userValue:d,routeValue:u,routeDetail:g,messagesLabel:h,messagesList:f}}(),M(oi.root),vi(ni),yi())}catch(t){i(`Failed to initialize debug overlay: ${t}`)}}return"undefined"!=typeof window&&xi(),e.default})());
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Gist=e():t.Gist=e()}(this,()=>(()=>{"use strict";var t={d:(e,n)=>{for(var i in n)t.o(n,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:n[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{default:()=>ci});class n{constructor(){this.callbacks={}}on(t,e){const n=this.callbacks[t];n?n.push(e):this.callbacks[t]=[e]}off(t,e){const n=this.callbacks[t];if(!n)return;if(!e)return void delete this.callbacks[t];const i=n.indexOf(e);-1!==i&&n.splice(i,1),0===n.length&&delete this.callbacks[t]}dispatch(t,e){const n=this.callbacks[t];n&&[...n].forEach(n=>{try{n(e)}catch(e){console.warn(`[Gist] Error in "${t}" event listener:`,e)}})}}function i(t){ci.config&&ci.config.logging&&console.log(`Gist: ${t}`)}const o="gist.web.isPersistingSession";function s(t,e,n=null){let i=n;i||(i=new Date,i.setDate(i.getDate()+365));const o={value:e,expiry:i};c().setItem(t,JSON.stringify(o))}function a(t){return d(t)}function r(t){c().removeItem(t)}function l(){const t=sessionStorage.getItem(o);return null===t?(sessionStorage.setItem(o,"true"),!0):"true"===t}function c(){return l()?localStorage:sessionStorage}function d(t){if(!t)return null;try{const e=c().getItem(t);if(!e)return null;const n=JSON.parse(e);if(!n.expiry)return n.value;if(t.startsWith("gist.")){const e=new Date,i=new Date(n.expiry),o=t.startsWith("gist.web.message.broadcasts")&&!t.endsWith("shouldShow")&&!t.endsWith("numberOfTimesShown")||t.startsWith("gist.web.message.user")&&!t.endsWith("seen")&&!t.endsWith("state"),s=new Date(e.getTime()+366e4);if(o&&i.getTime()>s.getTime())return r(t),null;if(e.getTime()>i.getTime())return r(t),null}return n.value}catch(e){i(`Error checking key ${t} for expiry: ${e}`)}return null}const u=new Uint8Array(16),p=[];for(let t=0;t<256;++t)p.push((t+256).toString(16).slice(1));const g=function(t,e,n){return e||t||!crypto.randomUUID?function(t,e,n){const i=(t=t||{}).random??t.rng?.()??crypto.getRandomValues(u);if(i.length<16)throw new Error("Random bytes length must be >= 16");if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){if((n=n||0)<0||n+16>e.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[n+t]=i[t];return e}return function(t,e=0){return(p[t[e+0]]+p[t[e+1]]+p[t[e+2]]+p[t[e+3]]+"-"+p[t[e+4]]+p[t[e+5]]+"-"+p[t[e+6]]+p[t[e+7]]+"-"+p[t[e+8]]+p[t[e+9]]+"-"+p[t[e+10]]+p[t[e+11]]+p[t[e+12]]+p[t[e+13]]+p[t[e+14]]+p[t[e+15]]).toLowerCase()}(i)}(t,e,n):crypto.randomUUID()},m="gist.web.inbox.enabled",h="gist.web.userQueueUseSSE",f="gist.web.activeSSEConnection";let b,y=30;const v={RENDERER_HOST:{prod:"https://code.gist.build",dev:"https://code.gist.build",local:"http://localhost:9998"},ENGINE_API_ENDPOINT:{prod:"https://engine.api.gist.build",dev:"https://engine.api.dev.gist.build",local:"http://engine.api.local.gist.build:82"},GIST_QUEUE_API_ENDPOINT:{prod:"https://consumer.cloud.gist.build",dev:"https://consumer.cloud.dev.gist.build",local:"http://localhost:3010"},GIST_QUEUE_REALTIME_API_ENDPOINT:{prod:"https://realtime.cloud.gist.build",dev:"https://realtime.cloud.dev.gist.build",local:"http://localhost:3009"},GIST_VIEW_ENDPOINT:{prod:"https://renderer.gist.build/3.0",dev:"https://renderer.gist.build/3.0",local:"http://localhost:9998"},getSdkId:()=>(b||(b=g()),b),useSSE:()=>a(h)??!1,setUseSSEFlag(t){s(h,t,new Date((new Date).getTime()+6e4)),i(`Set user uses SSE to "${t}"`)},removeActiveSSEConnection(){r(f)},setActiveSSEConnection(){s(f,v.getSdkId(),new Date((new Date).getTime()+v.getSSEHeartbeat()))},hasActiveSSEConnection:()=>a(f)??!1,isSSEConnectionManagedBySDK:()=>a(f)===v.getSdkId(),getSSEHeartbeat:()=>1e3*(y+5),setSSEHeartbeat(t){t&&t>0&&(y=t)},inboxEnabled:()=>a(m)??!1,setInboxEnabledFlag(t){s(m,t,new Date((new Date).getTime()+36e5)),i(`Set inbox enabled to "${t}"`)}};function w(t){return null!==t&&"object"==typeof t&&"response"in t}function x(t){return w(t)?t.response:void 0}function S(){const t=v.GIST_QUEUE_API_ENDPOINT[ci.config.env??"prod"],e={"X-CIO-Site-Id":ci.config.siteId,"X-CIO-Client-Platform":"web"},n=Ee();async function i(n,i={}){const o=t+n,s=new AbortController,a=setTimeout(()=>s.abort(),5e3);try{const t=await fetch(o,{method:i.method||"GET",headers:{...e,...i.headers||{}},body:i.method&&"GET"!==i.method.toUpperCase()?i.body:void 0,signal:s.signal});clearTimeout(a);const n=t.headers.get("content-type")?.includes("application/json"),r=n?await t.json():await t.text(),l=Object.fromEntries(t.headers.entries());if(t.status<200||t.status>=400)throw function(t){return Object.assign(new Error,{response:t})}({status:t.status,data:r,headers:l});return{status:t.status,headers:l,data:r}}catch(t){if(clearTimeout(a),w(t))throw t;if(t instanceof Error)throw Object.assign(t,{response:{status:0,data:t.message||"Unknown error",headers:{}}});throw t}}return null!=n&&(e["X-Gist-Encoded-User-Token"]=n),i.post=(t,e={},n={})=>i(t,{method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json",...n.headers||{}}}),i}const I="gist.web.userLocale";function C(){const t=a(I);return null!==t?t:navigator.language}const $="gist.web.branding";async function k(){if(null!==a($))return void i("Branding already cached.");const t=await async function(){try{return await S()("/api/v1/branding")}catch(t){return x(t)}}();if(t&&t.status>=200&&t.status<300){const e=new Date;e.setMinutes(e.getMinutes()+10),s($,t.data,e),i("Branding fetched and cached.")}}function E(){return a($)}const j="gist.web.templates";async function L(){if(null!==a(j))return void i("Templates already cached.");const t=await async function(){try{return await S()("/api/v1/templates")}catch(t){return x(t)}}();if(t&&t.status>=200&&t.status<300){const e=new Date;e.setMinutes(e.getMinutes()+60),s(j,t.data,e),i("Templates fetched and cached.")}}function T(){return a(j)}function P(t){try{return(document.getElementById(t)??document.querySelector(t))||null}catch{return null}}function D(t,e={}){const n=document.createElement(t);for(const[t,i]of Object.entries(e))n[t]=i;return n}function N(t,e){if(document.getElementById(t))return;const n=document.createElement("style");n.id=t,n.textContent=e,document.head.appendChild(n)}function M(t){document.body?document.body.appendChild(t):document.addEventListener("DOMContentLoaded",()=>document.body.appendChild(t),{once:!0})}async function A(t){try{return await S().post(`/api/v1/logs/queue/${t}`)}catch(t){return x(t)}}const R="messageInboxUpdated",q="inboxMessageAction";async function W(t){const e=await B();if(!e)return;const n=new Date;n.setMinutes(n.getMinutes()+60),s(e,t,n),ci.events.dispatch(R,t)}async function z(){const t=await B();if(!t)return[];const e=a(t)??[],n=new Date;return e.filter(t=>!t.expiry||new Date(t.expiry)>n)}async function _(t,e){const n=await B();if(!n)return;const o=await async function(t,e){try{return await S()(`/api/v1/messages/${t}`,{method:"PATCH",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}})}catch(t){return x(t)}}(t,{opened:e});if(!o||o.status<200||o.status>=300){const t=`Failed to mark inbox message opened: ${o?.status??"unknown error"}`;throw i(t),new Error(t)}const a=await z();let r=null;const l=a.map(n=>{if(n.queueId===t){const t={...n,opened:e};return r=t,t}return n}),c=new Date;if(c.setMinutes(c.getMinutes()+60),s(n,l,c),r){const t=e?"opened":"unopened";ci.events.dispatch(q,{message:r,action:t})}ci.events.dispatch(R,await z())}async function O(t){const e=await B();if(!e)return;const n=await z(),o=n.find(e=>e.queueId===t)??null,a=n.filter(e=>e.queueId!==t),r=new Date;r.setMinutes(r.getMinutes()+60),s(e,a,r),o&&ci.events.dispatch(q,{message:o,action:"dismissed"}),ci.events.dispatch(R,await z());const l=await A(t);(!l||l.status<200||l.status>=300)&&i(`Failed to log inbox message view: ${l?.status??"unknown error"}`)}async function B(){const t=await ke();return t?`gist.web.inbox.messages.${t}`:null}const U={isEmbedded:!1,elementId:"",hasRouteRule:!1,routeRule:"",position:"",hasPosition:!1,tooltipPosition:"",hasTooltipPosition:!1,tooltipArrowColor:"#fff",shouldScale:!1,campaignId:null,messageWidth:414,overlayColor:"#00000033",persistent:!1,exitClick:!1,hasCustomWidth:!1};function H(t){let e=U.tooltipArrowColor;if((t?.properties?.gist?.tooltipArrowColor?.length??0)>0)e=t.properties.gist.tooltipArrowColor;else{if(!Array.isArray(t?.displaySettings)||0===t.displaySettings.length)return e;let n=t.displaySettings[0];if(t.savedStepName){const e=t.displaySettings.find(e=>e?.stepName===t.savedStepName&&e.displaySettings);e&&(n=e)}n?.displaySettings?.tooltipArrowColor&&(e=n.displaySettings.tooltipArrowColor)}return e}function F(t){const e=U,n=t?.properties?.gist;return n?{isEmbedded:!!n.elementId&&!n.tooltipPosition,elementId:n.elementId||"",hasRouteRule:!!n.routeRuleWeb,routeRule:n.routeRuleWeb||"",position:n.position||"",hasPosition:!!n.position,tooltipPosition:n.tooltipPosition||"",hasTooltipPosition:!!n.tooltipPosition,tooltipArrowColor:H(t),shouldScale:!!n.scale,campaignId:n.campaignId??null,messageWidth:null!=n.messageWidth&&n.messageWidth>0?n.messageWidth:e.messageWidth,hasCustomWidth:(n.messageWidth??0)>0,overlayColor:n.overlayColor||e.overlayColor,persistent:!!n.persistent,exitClick:!!n.exitClick}:e}const V=["x-gist-top","x-gist-floating-top","x-gist-bottom","x-gist-floating-bottom","x-gist-floating-bottom-left","x-gist-floating-bottom-right","x-gist-floating-top-left","x-gist-floating-top-right"];function G(t){if(document.getElementById(t))return;const e=document.createElement("div");e.id=t,"x-gist-top"===t?document.body.insertBefore(e,document.body.firstChild):document.body.insertAdjacentElement("beforeend",e),i("Top & bottom elements injected into page")}const X=["x-gist-top","x-gist-bottom","x-gist-floating-top","x-gist-floating-bottom"];function J(t){return ci.currentMessages.find(e=>e.instanceId===t)}function Q(t){return!!t&&ci.currentMessages.some(e=>e.queueId===t)}function Y(t){return t?ci.currentMessages.find(e=>e.elementId===t)??null:null}function K(t){ci.currentMessages=ci.currentMessages.filter(e=>e.instanceId!==t)}function Z(t,e){K(t),ci.currentMessages.push(e)}const tt={topLeft:"x-gist-floating-top-left",topCenter:"x-gist-floating-top",topRight:"x-gist-floating-top-right",bottomLeft:"x-gist-floating-bottom-left",bottomCenter:"x-gist-floating-bottom",bottomRight:"x-gist-floating-bottom-right"},et=Object.fromEntries(Object.entries(tt).map(([t,e])=>[e,t]));function nt(t){return t&&tt[t]?tt[t]:(i(`Invalid overlay position "${t}", defaulting to "topCenter"`),tt.topCenter)}function it(t){try{const e=new RegExp(t),n=new URL(window.location.href).pathname,i=null!=ci.currentRoute&&e.test(ci.currentRoute),o=ci.currentRoute!==n&&e.test(n);return i||o}catch{return!1}}function ot(t){return t.tooltipPosition?"tooltip":t.overlay?"modal":t.elementId&&V.includes(t.elementId)?"overlay":t.elementId?"inline":"modal"}function st(t,e){const n=ot(t),i=e.displayType;if(void 0===i)return!1;if(n!==i)return!0;const o=F(t);switch(i){case"modal":{if((t.position||"center")!==(e.modalPosition||"center"))return!0;const n=e.dismissOutsideClick??U.exitClick;if(o.exitClick!==n)return!0;const i=e.overlayColor??U.overlayColor;if(o.overlayColor!==i)return!0;break}case"overlay":{const n=nt(e.overlayPosition);if(t.elementId!==n)return!0;break}case"inline":if(t.elementId!==e.elementSelector)return!0;break;case"tooltip":if(t.tooltipPosition!==e.tooltipPosition)return!0;if(t.elementId!==e.elementSelector)return!0;if(void 0!==e.tooltipArrowColor&&o.tooltipArrowColor!==e.tooltipArrowColor)return!0}if("overlay"!==i||!X.includes(nt(e.overlayPosition))){const t=e.maxWidth??U.messageWidth;if(o.messageWidth!==t)return!0}return!1}function at(t,e){if(t.properties||(t.properties={}),t.properties.gist||(t.properties.gist={}),"modal"===e.displayType)t.overlay=!0,t.elementId=null,t.properties.gist.elementId=null,t.position=e.modalPosition||"center",t.properties.gist.position=e.modalPosition||"center",t.tooltipPosition=void 0,t.properties.gist.tooltipPosition=void 0,t.properties.gist.tooltipArrowColor=void 0;else if("overlay"===e.displayType){t.overlay=!1;const n=nt(e.overlayPosition);t.elementId=n,t.properties.gist.elementId=n,t.position=null,t.properties.gist.position=null,t.tooltipPosition=void 0,t.properties.gist.tooltipPosition=void 0,t.properties.gist.tooltipArrowColor=void 0}else"inline"===e.displayType?(t.overlay=!1,t.elementId=e.elementSelector,t.properties.gist.elementId=e.elementSelector,t.position=null,t.properties.gist.position=null,t.tooltipPosition=void 0,t.properties.gist.tooltipPosition=void 0,t.properties.gist.tooltipArrowColor=void 0):"tooltip"===e.displayType&&(t.overlay=!1,t.elementId=e.elementSelector,t.properties.gist.elementId=e.elementSelector,t.tooltipPosition=e.tooltipPosition,t.properties.gist.tooltipPosition=e.tooltipPosition,t.position=null,t.properties.gist.position=null,void 0!==e.tooltipArrowColor&&(t.properties.gist.tooltipArrowColor=e.tooltipArrowColor));t.elementId&&X.includes(t.elementId)?delete t.properties.gist.messageWidth:void 0!==e.maxWidth&&e.maxWidth>0?t.properties.gist.messageWidth=e.maxWidth:delete t.properties.gist.messageWidth,void 0!==e.overlayColor?t.properties.gist.overlayColor=e.overlayColor:delete t.properties.gist.overlayColor,void 0!==e.dismissOutsideClick?t.properties.gist.exitClick=e.dismissOutsideClick:delete t.properties.gist.exitClick}const rt={top:["bottom","left","right"],bottom:["top","left","right"],left:["right","top","bottom"],right:["left","top","bottom"]},lt=/auto|scroll/,ct={top:"gist-arrow-bottom",bottom:"gist-arrow-top",left:"gist-arrow-right",right:"gist-arrow-left"};function dt(t){const e=P(t);return e||i(`Tooltip target element not found for selector: ${t}`),e}function ut(t,e){if(t.bottom<=0||t.top>=window.innerHeight||t.right<=0||t.left>=window.innerWidth)return!1;for(const n of e){const e=n.getBoundingClientRect();if(t.bottom<=e.top||t.top>=e.bottom||t.right<=e.left||t.left>=e.right)return!1}return!0}function pt(t,e,n){const i=function(t,e,n){switch(n){case"top":return{top:e.top-t.height-16,left:e.left+(e.width-t.width)/2};case"bottom":return{top:e.bottom+16,left:e.left+(e.width-t.width)/2};case"left":return{top:e.top+(e.height-t.height)/2,left:e.left-t.width-16};case"right":return{top:e.top+(e.height-t.height)/2,left:e.right+16}}}(t,e,n);return function(t,e,n){return"top"===n||"bottom"===n?t.top>=0&&t.top+e.height<=window.innerHeight:t.left>=0&&t.left+e.width<=window.innerWidth}(i,t,n)&&function(t,e){return"top"===e||"bottom"===e?t.width+8<=window.innerWidth:t.height+8<=window.innerHeight}(t,n)?function(t,e,n){let{top:i,left:o}=t,s=null;if("top"===n||"bottom"===n){const t=4,n=window.innerWidth-e.width-4;n>=t&&(o<t?(s=o-t,o=t):o>n&&(s=o-n,o=n))}else{const t=4,n=window.innerHeight-e.height-4;n>=t&&(i<t?(s=i-t,i=t):i>n&&(s=i-n,i=n))}if(null!==s){const t=("top"===n||"bottom"===n?e.width/2:e.height/2)-16-4;Math.abs(s)>t&&(s=s>0?t:-t)}return{top:i,left:o,position:n,arrowOffset:s}}(i,t,n):null}function gt(t,e,n){const i=pt(t,e,n);if(i)return i;for(const i of rt[n]){const n=pt(t,e,i);if(n)return n}return null}function mt(t){const e=[];let n=t.parentElement;for(;n;){const t=getComputedStyle(n),i=t.overflow+t.overflowX+t.overflowY;lt.test(i)&&e.push(n),n=n.parentElement}return e}function ht(t){return"system"===t||"auto"===t?"normal":"light only"}function ft(t){if(!t||"default"===t)return"light";if("system"===t)return;const e=function(){const t=getComputedStyle(document.documentElement).colorScheme;if(t&&"normal"!==t)return t;if(document.body){const t=getComputedStyle(document.body).colorScheme;if(t&&"normal"!==t)return t}}();return e?function(t){const e=t.includes("dark"),n=t.includes("light");if(!e||!n)return e?"dark":n?"light":void 0}(e):void 0}let bt,yt=null;function vt(){yt||(bt=ft(ci.config?.colorScheme),yt=new MutationObserver(()=>{const t=ft(ci.config?.colorScheme);t!==bt&&(bt=t,wt(t))}),yt.observe(document.documentElement,{attributes:!0,attributeFilter:["style","class"]}),document.body&&yt.observe(document.body,{attributes:!0,attributeFilter:["style","class"]}))}function wt(t){const e=t??"normal",n=ht(ci.config?.colorScheme);for(const t of ci.currentMessages??[]){const i=Tt(t.instanceId??""),o=document.getElementById(i);o&&(o.style.colorScheme=n,o.contentWindow&&o.contentWindow.postMessage({action:"updateColorScheme",colorScheme:e},"*"))}ci.events?.dispatch("colorSchemeChanged",t)}function xt(t){const e=P(t);e&&(e.classList.remove("gist-visible"),Array.from(e.classList).filter(t=>t.startsWith("gist-")).forEach(t=>e.classList.remove(t)),e.style.removeProperty("height"),e.style.removeProperty("width"),e.innerHTML="")}function St(t){const e=P(t);if(e)return!(!e.style||!e.style.height||"0px"===e.style.height)}function It(t,e,n=null){const i=document.getElementById(t);i&&(i.onload=()=>{!function(t,e,n=null){const i=document.getElementById(t);if(i?.contentWindow){n&&(e.stepId=n);const t=ft(ci.config?.colorScheme);t&&(e.colorScheme=t);const o={options:e,capabilities:Ct};i.contentWindow.postMessage(o,"*")}}(t,e,n)})}const Ct=["MultiStepDisplayTypes"];function $t(t){if(!t.displaySettings)return;const e=Tt(t.instanceId??""),n=document.getElementById(e);n?.contentWindow&&n.contentWindow.postMessage({action:"updateDisplaySettings",displaySettings:t.displaySettings},"*")}async function kt(){const t=document.querySelector(".gist-message");t&&(t.classList.remove("gist-visible"),await new Promise(t=>setTimeout(t,300))),Et()}function Et(){const t=document.querySelector("#gist-embed-message");t&&t.parentNode?.removeChild(t)}const jt=new Map;function Lt(t){const e=t.instanceId??"",n=jt.get(e);n&&(n.cleanup(),jt.delete(e));const i=P(`gist-tooltip-${e}`);i&&i.parentNode?.removeChild(i)}function Tt(t){return`gist-${t}`}function Pt(){const t=document.querySelector(".gist-message");t&&t.classList.add("gist-visible")}const Dt="jist",Nt={start:"flex-start",end:"flex-end",center:"center",stretch:"stretch",baseline:"baseline"},Mt={start:"flex-start",end:"flex-end",center:"center","space-between":"space-between","space-around":"space-around","space-evenly":"space-evenly"};function At(t){return"number"==typeof t?`${t}px`:"fill"===t?"100%":t}function Rt(t){try{return new Date(t).toLocaleDateString(navigator.language)}catch{return t}}class qt{#t;#e;#n;#i=0;constructor({formatDate:t,onAction:e,templates:n}={}){this.#t=t||Rt,this.#e=e||null,this.#n=n||{}}render(t,e){if(!t)return null;switch(t.type){case"layout":return this.#o(t,e);case"action":return this.#s(t,e);case"heading":return this.#a(t,e);case"text":return this.#r("p",t,e);case"date":return this.#l(t,e);case"button":return this.#c(t,e);case"image":return this.#d(t,e);case"dynamicLayout":return this.#u(t,e);case"template":return this.#p(t,e);default:return null}}#o(t,e){const n=document.createElement("div");n.style.display="flex",n.style.flexDirection="horizontal"===t.direction?"row":"column",t.gap&&(n.style.gap=At(t.gap)),t.align&&(n.style.alignItems=Nt[t.align]||t.align),t.justify&&(n.style.justifyContent=Mt[t.justify]||t.justify),t.margin&&(t.margin.top&&(n.style.marginTop=At(t.margin.top)),t.margin.right&&(n.style.marginRight=At(t.margin.right)),t.margin.bottom&&(n.style.marginBottom=At(t.margin.bottom)),t.margin.left&&(n.style.marginLeft=At(t.margin.left)));const i="horizontal"===t.direction,o=i&&(!t.justify||"start"===t.justify),s=i||"center"!==t.align?i||"end"!==t.align?"":"right":"center";for(const i of t.children||[]){const t=this.render(i,e);t&&(o&&"layout"===i.type&&(t.style.flex="1",t.style.minWidth="0"),s&&(t.style.textAlign=s),n.appendChild(t))}return n}#s(t,e){const n=t.name||"action",i=document.createElement("div");this.#g(i,"action",n),i.setAttribute("role","button"),i.setAttribute("tabindex","0");for(const n of t.children||[]){const t=this.render(n,e);t&&i.appendChild(t)}const o=e[n],s=t.meta||null;if(this.#e){const t=this.#e,e=e=>{e.stopPropagation(),t({component:"action",name:n,data:o,meta:s,event:e})};i.addEventListener("click",e),i.addEventListener("keydown",t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e(t))})}return i}#a(t,e){const n=t.variant||"h3";return this.#r(n,t,e,n)}#r(t,e,n,i){const o=e.name||e.type,s=document.createElement(t);return this.#g(s,e.type,o,i||e.variant),s.textContent=n[o]||"",s}#l(t,e){const n=t.name||"date",i=document.createElement("time");this.#g(i,"date",n,t.variant);const o=e[n];return i.textContent=o?this.#t(o,n):"",i}#c(t,e){const n=t.name||"button",i=e[n];if(!i)return null;const o=document.createElement("button");this.#g(o,"button",n,t.variant),o.textContent=i.label,i.disabled&&(o.disabled=!0);const s=t.meta||null;return o.addEventListener("click",t=>{t.stopPropagation(),this.#e&&this.#e({component:"button",name:n,data:i,meta:s,event:t})}),o}#d(t,e){const n=t.name||"image",i=e[n];if(!i)return null;const o=document.createElement("div");this.#g(o,"image",n,t.variant),o.style.overflow="hidden";const s=document.createElement("img");return s.src=i,s.alt=e.title||"",s.style.display="block",t.width&&(s.style.width=At(t.width)),t.height&&(s.style.height=At(t.height)),t.objectFit&&(s.style.objectFit=t.objectFit),t.borderRadius&&(s.style.borderRadius=At(t.borderRadius)),o.appendChild(s),o}#u(t,e){const n=e[t.name];if(!Array.isArray(n))return null;const i=document.createElement("div"),o=t.direction||"vertical";i.style.display="flex",i.style.flexDirection="horizontal"===o?"row":"column",t.gap&&(i.style.gap=At(t.gap)),t.align&&(i.style.alignItems=Nt[t.align]||t.align),t.justify&&(i.style.justifyContent=Mt[t.justify]||t.justify),t.margin&&(t.margin.top&&(i.style.marginTop=At(t.margin.top)),t.margin.right&&(i.style.marginRight=At(t.margin.right)),t.margin.bottom&&(i.style.marginBottom=At(t.margin.bottom)),t.margin.left&&(i.style.marginLeft=At(t.margin.left)));for(const e of n){const n="object"==typeof e&&null!==e?e:{},o=this.render(t.template,n);o&&i.appendChild(o)}return i}#p(t,e){const n=this.#n[t.name];if(!n||this.#i>=10)return null;this.#i++;const i=this.render(n.root,e);return this.#i--,i}#g(t,e,n,i){t.classList.add(`${Dt}__${e}`),i&&t.classList.add(`${Dt}__${e}--${i}`),n!==e&&t.classList.add(`${Dt}__${n}`)}}var Wt;const zt=new Set(["fontWeight","maxLines","lineHeight","opacity"]),_t=new Set(["lineHeight","letterSpacing"]),Ot={"text-font-size":"font-size","text-font-weight":"font-weight","text-font-family":"font-family","text-color":"color","text-line-height":"line-height","text-letter-spacing":"letter-spacing","text-max-lines":"-webkit-line-clamp","background-color":"background-color","border-width":"border-width","border-color":"border-color","border-radius":"border-radius","padding-top":"padding-top","padding-right":"padding-right","padding-bottom":"padding-bottom","padding-left":"padding-left","margin-top":"margin-top","margin-right":"margin-right","margin-bottom":"margin-bottom","margin-left":"margin-left","min-width":"min-width","min-height":"min-height"},Bt=["shadow-offset-x","shadow-offset-y","shadow-blur","shadow-color"],Ut={"shadow-offset-x":"0","shadow-offset-y":"0","shadow-blur":"0","shadow-color":"transparent"},Ht={heading:new Set(["text","padding","margin"]),text:new Set(["text","padding","margin"]),date:new Set(["text","padding","margin"]),button:new Set(["text","background","border","shadow","padding","margin","minWidth","minHeight","states"]),image:new Set(["border","padding","margin"])},Ft=["hover","active","disabled"],Vt=[["background-color","background-color"],["color","text-color"]];class Gt extends HTMLElement{static observedAttributes=["template","data","theme","mode"];static#m=!1;static#h=null;static#f=0;static#b=new Map;static#y(){if(Wt.#m)return;if(Wt.#m=!0,document.querySelector("style[data-jist-base]"))return;const t=document.createElement("style");t.setAttribute("data-jist-base",""),t.textContent="/* ═══════════════════════════════════════════\n Jist Template Styles\n ═══════════════════════════════════════════ */\n\n/* ── Host Element ───────────────────────── */\n\njist-template {\n display: block;\n}\n\n/* ── Base Reset ─────────────────────────── */\n\n.jist__heading,\n.jist__text,\n.jist__date {\n margin: 0;\n padding: 0;\n}\n\n/* ── Heading ────────────────────────────── */\n\n.jist__heading {\n font-size: var(--jist-heading-text-font-size, 16px);\n font-weight: var(--jist-heading-text-font-weight, 600);\n color: var(--jist-heading-text-color, #000000);\n font-family: var(--jist-heading-text-font-family, inherit);\n line-height: var(--jist-heading-text-line-height, 1.3);\n letter-spacing: var(--jist-heading-text-letter-spacing, normal);\n padding-top: var(--jist-heading-padding-top, 0);\n padding-right: var(--jist-heading-padding-right, 0);\n padding-bottom: var(--jist-heading-padding-bottom, 0);\n padding-left: var(--jist-heading-padding-left, 0);\n margin-top: var(--jist-heading-margin-top, 0);\n margin-right: var(--jist-heading-margin-right, 0);\n margin-bottom: var(--jist-heading-margin-bottom, 0);\n margin-left: var(--jist-heading-margin-left, 0);\n /* Line clamping — active when --jist-heading-text-max-lines is set */\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--jist-heading-text-max-lines, none);\n overflow: hidden;\n}\n\n/* ── Text ───────────────────────────────── */\n\n.jist__text {\n font-size: var(--jist-text-text-font-size, 14px);\n font-weight: var(--jist-text-text-font-weight, 400);\n color: var(--jist-text-text-color, #000000);\n font-family: var(--jist-text-text-font-family, inherit);\n line-height: var(--jist-text-text-line-height, 1.5);\n letter-spacing: var(--jist-text-text-letter-spacing, normal);\n padding-top: var(--jist-text-padding-top, 0);\n padding-right: var(--jist-text-padding-right, 0);\n padding-bottom: var(--jist-text-padding-bottom, 0);\n padding-left: var(--jist-text-padding-left, 0);\n margin-top: var(--jist-text-margin-top, 0);\n margin-right: var(--jist-text-margin-right, 0);\n margin-bottom: var(--jist-text-margin-bottom, 0);\n margin-left: var(--jist-text-margin-left, 0);\n /* Line clamping — active when --jist-text-text-max-lines is set */\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--jist-text-text-max-lines, none);\n overflow: hidden;\n}\n\n/* ── Date ───────────────────────────────── */\n\n.jist__date {\n font-size: var(--jist-date-text-font-size, 12px);\n font-weight: var(--jist-date-text-font-weight, 400);\n color: var(--jist-date-text-color, #000000);\n font-family: var(--jist-date-text-font-family, inherit);\n line-height: var(--jist-date-text-line-height, 1.4);\n letter-spacing: var(--jist-date-text-letter-spacing, normal);\n padding-top: var(--jist-date-padding-top, 0);\n padding-right: var(--jist-date-padding-right, 0);\n padding-bottom: var(--jist-date-padding-bottom, 0);\n padding-left: var(--jist-date-padding-left, 0);\n margin-top: var(--jist-date-margin-top, 0);\n margin-right: var(--jist-date-margin-right, 0);\n margin-bottom: var(--jist-date-margin-bottom, 0);\n margin-left: var(--jist-date-margin-left, 0);\n}\n\n/* ── Button ─────────────────────────────── */\n\n.jist__button {\n appearance: none;\n -webkit-appearance: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n font-size: var(--jist-button-text-font-size, 14px);\n font-weight: var(--jist-button-text-font-weight, 500);\n color: var(--jist-button-text-color, #ffffff);\n font-family: var(--jist-button-text-font-family, inherit);\n line-height: var(--jist-button-text-line-height, 1);\n background-color: var(--jist-button-background-color, #4f46e5);\n border-width: var(--jist-button-border-width, 0);\n border-style: solid;\n border-color: var(--jist-button-border-color, transparent);\n border-radius: var(--jist-button-border-radius, 6px);\n box-shadow:\n var(--jist-button-shadow-offset-x, 0)\n var(--jist-button-shadow-offset-y, 0)\n var(--jist-button-shadow-blur, 0)\n var(--jist-button-shadow-color, transparent);\n padding-top: var(--jist-button-padding-top, 8px);\n padding-right: var(--jist-button-padding-right, 16px);\n padding-bottom: var(--jist-button-padding-bottom, 8px);\n padding-left: var(--jist-button-padding-left, 16px);\n margin-top: var(--jist-button-margin-top, 0);\n margin-right: var(--jist-button-margin-right, 0);\n margin-bottom: var(--jist-button-margin-bottom, 0);\n margin-left: var(--jist-button-margin-left, 0);\n min-width: var(--jist-button-min-width, 0);\n min-height: var(--jist-button-min-height, 0);\n transition: background-color 0.15s ease, color 0.15s ease,\n border-color 0.15s ease, box-shadow 0.15s ease;\n}\n\n.jist__button:hover {\n background-color: var(--jist-button-states-hover-background-color,\n var(--jist-button-background-color, #4338ca));\n color: var(--jist-button-states-hover-text-color,\n var(--jist-button-text-color, #ffffff));\n}\n\n.jist__button:active {\n background-color: var(--jist-button-states-active-background-color,\n var(--jist-button-background-color, #3730a3));\n color: var(--jist-button-states-active-text-color,\n var(--jist-button-text-color, #ffffff));\n}\n\n.jist__button:disabled {\n background-color: var(--jist-button-states-disabled-background-color,\n var(--jist-button-background-color, #c7d2fe));\n color: var(--jist-button-states-disabled-text-color,\n var(--jist-button-text-color, #a5b4fc));\n cursor: not-allowed;\n}\n\n/* ── Image ──────────────────────────────── */\n\n.jist__image {\n display: block;\n max-width: 100%;\n overflow: hidden;\n border-radius: var(--jist-image-border-radius, 0);\n padding-top: var(--jist-image-padding-top, 0);\n padding-right: var(--jist-image-padding-right, 0);\n padding-bottom: var(--jist-image-padding-bottom, 0);\n padding-left: var(--jist-image-padding-left, 0);\n margin-top: var(--jist-image-margin-top, 0);\n margin-right: var(--jist-image-margin-right, 0);\n margin-bottom: var(--jist-image-margin-bottom, 0);\n margin-left: var(--jist-image-margin-left, 0);\n}\n\n.jist__image img {\n border-radius: inherit;\n}\n\n/* ── Dark Mode Defaults ────────────────── */\n\n[data-jist-dark] .jist__heading { color: var(--jist-heading-text-color, #ffffff); }\n[data-jist-dark] .jist__text { color: var(--jist-text-text-color, #ffffff); }\n[data-jist-dark] .jist__date { color: var(--jist-date-text-color, #ffffff); }\n[data-jist-dark] .jist__button { color: var(--jist-button-text-color, #ffffff); }\n\n/* ── Action (clickable wrapper) ─────────── */\n\n.jist__action {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n}\n\n.jist__action:focus-visible {\n outline: 2px solid var(--jist-button-background-color, #4f46e5);\n outline-offset: 2px;\n border-radius: 4px;\n}\n",document.head.appendChild(t)}#v=null;#w=null;#x=null;#S=null;#I="auto";#t=null;#e=null;#n={};#C=null;#$=null;get template(){return this.#w}set template(t){this.#w=t,this.#k()}get data(){return this.#x}set data(t){this.#x="string"==typeof t?JSON.parse(t):t,this.#k()}get theme(){return this.#S}set theme(t){this.#S="string"==typeof t?JSON.parse(t):t,this.#E(),this.#k()}get mode(){return this.#I}set mode(t){this.#I=t||"auto",this.#E()}get formatDate(){return this.#t}set formatDate(t){this.#t=t,this.#k()}get onAction(){return this.#e}set onAction(t){this.#e=t}get templates(){return this.#n}set templates(t){const e="string"==typeof t?JSON.parse(t):t||{},n={};for(const[t,i]of Object.entries(e)){if(t.startsWith("$"))continue;if(!Array.isArray(i))continue;const e=i.find(t=>"1"===t.version);e&&(n[t]=e)}this.#n=n,this.#k()}connectedCallback(){Wt.#y(),this.#C=window.matchMedia("(prefers-color-scheme: dark)"),this.#$=()=>{"auto"===this.#I&&(this.#E(),this.#k())},this.#C.addEventListener("change",this.#$),this.#E(),this.#k()}disconnectedCallback(){this.#C&&this.#$&&this.#C.removeEventListener("change",this.#$),this.#j(),Wt.#L()}attributeChangedCallback(t,e,n){if(e!==n)switch(t){case"template":this.#w=n||null,this.#k();break;case"data":this.#x=n?JSON.parse(n):null,this.#k();break;case"theme":this.#S=n?JSON.parse(n):null,this.#E(),this.#k();break;case"mode":this.#I=n||"auto",this.#E(),this.#k()}}#T(){return"dark"===this.#I||"light"!==this.#I&&(this.#C?.matches??!1)}#E(){if(!this.isConnected)return void(this.#S||(this.#j(),Wt.#L()));if(this.#T()?this.setAttribute("data-jist-dark",""):this.removeAttribute("data-jist-dark"),!this.#S)return this.#j(),void Wt.#L();const t=[];for(let e=0;e<this.style.length;e++)this.style[e].startsWith("--jist-")&&t.push(this.style[e]);if(t.forEach(t=>this.style.removeProperty(t)),this.#P(this.#S,"--jist"),this.#T()){const t=this.#S.modes?.dark;t&&this.#P(t,"--jist")}this.#D()}#P(t,e){for(const[n,i]of Object.entries(t)){if("modes"===n||n.startsWith("$"))continue;const t=`${e}-${n.replace(/([A-Z])/g,"-$1").toLowerCase()}`;if(null===i||"object"!=typeof i||Array.isArray(i)){if(null!=i&&""!==i){const e=0===i&&_t.has(n)?"normal":"number"!=typeof i||zt.has(n)?String(i):`${i}px`;this.style.setProperty(t,e)}}else this.#P(i,t)}}#D(){const t=[],e=this.#S;if(!e)return;const n=e.modes?.dark;for(const i of Object.keys(Ht)){const o=e[i],s=n?.[i],a=Ht[i],r=new Set;for(const t of[o,s])if(t)for(const e of Object.keys(t))a.has(e)||e.startsWith("$")||r.add(e);for(const e of r){const n=o?.[e]??{},a=s?.[e]??{};t.push(this.#N(i,e,n,a))}}const i=t.join("\n");if(this.#j(),!i)return;let o=Wt.#b.get(i);o||(o={id:Wt.#f++,refs:0},Wt.#b.set(i,o)),o.refs++,this.#v=i,this.setAttribute("data-jist-v",String(o.id)),Wt.#L()}#j(){if(!this.#v)return;const t=Wt.#b.get(this.#v);t&&(t.refs--,t.refs<=0&&Wt.#b.delete(this.#v)),this.#v=null,this.removeAttribute("data-jist-v")}static#L(){if(0===Wt.#b.size)return void(Wt.#h&&(Wt.#h.remove(),Wt.#h=null));Wt.#h||(Wt.#h=document.createElement("style"),Wt.#h.setAttribute("data-jist-variants",""),document.head.appendChild(Wt.#h));const t=[];for(const[e,{id:n}]of Wt.#b){const i=`[data-jist-v="${n}"]`;t.push(e.replace(/^(\.[a-z_-]+)/gm,`${i} $1`))}Wt.#h.textContent=t.join("\n")}#N(t,e,n,i){const o=e.replace(/([A-Z])/g,"-$1").toLowerCase(),s=`.jist__${t}--${o}`,a=new Set,r=(t,e)=>{for(const[n,i]of Object.entries(t)){if("states"===n||n.startsWith("$"))continue;const t=n.replace(/([A-Z])/g,"-$1").toLowerCase(),o=e?`${e}-${t}`:t;null===i||"object"!=typeof i||Array.isArray(i)?a.add(o):r(i,o)}};r(n,""),r(i,"");const l=[];for(const e of a){const n=Ot[e];if(!n)continue;const i=`--jist-${t}-${o}-${e}`,s=`--jist-${t}-${e}`;l.push(` ${n}: var(${i}, var(${s}));`)}if("button"===t&&[...a].some(t=>t.startsWith("shadow-"))){const t=Bt.map(t=>`var(--jist-button-${o}-${t}, var(--jist-button-${t}, ${Ut[t]}))`);l.push(` box-shadow: ${t.join(" ")};`)}let c=`${s} {\n${l.join("\n")}\n}`;if("button"===t&&(n.states||i.states))for(const t of Ft){const e=n.states?.[t],a=i.states?.[t];if(!e&&!a)continue;const r=[];for(const[e,n]of Vt){const i=`--jist-button-${o}-states-${t}-${n}`,s=`--jist-button-states-${t}-${n}`,a=`--jist-button-${o}-${n}`,l=`--jist-button-${n}`;r.push(` ${e}: var(${i}, var(${s}, var(${a}, var(${l}))));`)}c+=`\n${s}${"disabled"===t?":disabled":`:${t}`} {\n${r.join("\n")}\n}`}return c}#k(){if(!this.#w||!this.#x)return;if(!this.isConnected)return;const t=this.#n[this.#w];if(!t)return void(this.innerHTML="");const e=new qt({formatDate:this.#t||void 0,templates:this.#n,onAction:t=>{this.#e&&this.#e(t),this.dispatchEvent(new CustomEvent("jist-action",{bubbles:!0,detail:{component:t.component,name:t.name,data:t.data,meta:t.meta}}))}});this.innerHTML="";const n=e.render(t.root,this.#x);n&&this.appendChild(n)}}Wt=Gt,customElements.define("jist-template",Gt);const Xt=Gt,Jt="gist-inbox-button",Qt="gist-inbox-badge",Yt="gist-inbox-panel",Kt="gist-inbox-messages";let Zt=!1,te=!1;const ee=new Set;let ne=null,ie=null;function oe(t,e){const n={...t},i=e;for(const t of Object.keys(i)){const e=n[t],o=i[t];null==e||"object"!=typeof e||Array.isArray(e)||null==o||"object"!=typeof o||Array.isArray(o)?void 0!==o&&(n[t]=o):n[t]=oe(e,o)}return n}function se(t,e){const n=t?.patterns?.inbox;if(!n)return null;const i=t?.patterns?.modes?.dark?.inbox;return("dark"===e||null==e&&ne?.matches)&&i?oe(n,i):n}function ae(){Zt||(Zt=!0,customElements.get("jist-template")||customElements.define("jist-template",Xt),N("gist-inbox-styles",'\n#gist-inbox-button {\n position: fixed;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 9998;\n border: none;\n transition: background-color 0.2s ease,\n box-shadow 0.2s ease,\n transform 0.15s ease;\n}\n#gist-inbox-button:hover {\n transform: scale(1.05);\n}\n#gist-inbox-button:active {\n transform: scale(0.93);\n}\n#gist-inbox-button svg {\n width: 24px;\n height: 24px;\n}\n#gist-inbox-button svg [fill]:not([fill="none"]) {\n fill: currentColor;\n}\n#gist-inbox-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 20px;\n height: 20px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n box-sizing: border-box;\n}\n#gist-inbox-panel {\n position: fixed;\n width: 400px;\n max-height: 600px;\n z-index: 9999;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n user-select: none;\n -webkit-user-select: none;\n transform: translateY(8px) scale(0.96);\n opacity: 0;\n pointer-events: none;\n transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1),\n opacity 0.2s ease;\n}\n#gist-inbox-panel.gist-inbox-panel--open {\n transform: translateY(0) scale(1);\n opacity: 1;\n pointer-events: auto;\n}\n#gist-inbox-messages {\n overflow-y: auto;\n flex: 1;\n}\n.gist-inbox-message-row {\n transition: background-color 0.15s ease;\n}\n@media (max-width: 424px) {\n #gist-inbox-panel {\n width: auto !important;\n left: 12px !important;\n right: 12px !important;\n }\n}\n'),ci.events.on("messageInboxUpdated",t=>{re(t)}),ci.events.on("colorSchemeChanged",()=>{re()}),ne=window.matchMedia("(prefers-color-scheme: dark)"),ie=()=>{"system"===ci.config?.colorScheme&&re()},ne.addEventListener("change",ie),re())}async function re(t){t||(t=await z());const e=function(t){return t.filter(t=>t.topics?.some(t=>t.startsWith("cio_inbox"))).sort((t,e)=>{const n=(t.priority??Number.MAX_SAFE_INTEGER)-(e.priority??Number.MAX_SAFE_INTEGER);return 0!==n?n:new Date(e.sentAt??0).getTime()-new Date(t.sentAt??0).getTime()})}(t);if(0===e.length)return void le();let n=E();n||(await me(),n=E());const o=ft(ci.config?.colorScheme),s=se(n,o);if(s){if(function(t,e){let n=document.getElementById(Jt);n||(n=D("div",{id:Jt}),n.addEventListener("click",()=>{te?(te=!1,document.getElementById(Yt)?.classList.remove("gist-inbox-panel--open")):(te=!0,re())}),M(n));const i=ge(t.position);n.style.background=t.floatingIcon.background,n.style.color=t.floatingIcon.color,n.style.boxShadow="0 2px 8px rgba(0,0,0,0.15)",Object.assign(n.style,i),n.querySelector("svg")||n.insertAdjacentHTML("afterbegin",t.floatingIcon.svg);!function(t,e,n){let i=document.getElementById(Qt);if(0===n||!e.unreadIndicator.showAlert)return void i?.remove();i||(i=D("span",{id:Qt}),t.appendChild(i));const o=e.unreadIndicator;i.textContent=String(n),i.style.background=o.background,i.style.color=o.text.color,i.style.fontSize=`${o.text.fontSize}px`,i.style.fontWeight=String(o.text.fontWeight),i.style.fontFamily=o.text.fontFamily,i.style.lineHeight=String(o.text.lineHeight)}(n,t,e.filter(t=>!t.opened).length)}(s,e),te){!function(t,e,n,o){let s=document.getElementById(Yt);const a=!s;a&&(s=D("div",{id:Yt}),M(s));const r=ge(t.position,!0);s.style.background=t.background,s.style.borderRadius=`${t.cornerRadius}px`,s.style.border=`1px solid ${t.borderColor}`,s.style.boxShadow=`${t.shadow.offsetX}px ${t.shadow.offsetY}px ${t.shadow.blur}px ${t.shadow.color}`,Object.assign(s.style,r);let l=document.getElementById(Kt);l||(l=D("div",{id:Kt}),s.appendChild(l)),l.innerHTML="";const c=T();e.forEach((s,a)=>{const r=D("div",{className:"gist-inbox-message-row"});r.style.padding="12px 16px",r.style.cursor="pointer",r.addEventListener("mouseenter",()=>{r.style.background=t.hoverBackground}),r.addEventListener("mouseleave",()=>{r.style.background=""});const d=document.createElement("jist-template");r.appendChild(d),l.appendChild(r);const u=d;if(u.onAction=t=>{i(`Inbox action: ${t.name}`);const e=function(t){if(!t||"object"!=typeof t)return null;const e=t;return"string"==typeof e.behavior&&["openUrl","dismiss","openDeeplink","performAction"].includes(e.behavior)?{behavior:e.behavior,action:"string"==typeof e.action?e.action:void 0,name:"string"==typeof e.name?e.name:void 0,dismiss:"boolean"==typeof e.dismiss?e.dismiss:void 0,newTab:"boolean"==typeof e.newTab?e.newTab:void 0}:null}(t.data);e&&function(t,e){"openUrl"!==e.behavior&&"openDeeplink"!==e.behavior||!e.action||(function(t){try{return"javascript:"!==new URL(t,window.location.href).protocol}catch{return!1}}(e.action)?e.newTab?window.open(e.action,"_blank","noopener"):window.location.href=e.action:i(`Blocked unsafe URL: ${e.action}`)),("dismiss"===e.behavior||e.dismiss)&&t.queueId&&O(t.queueId),ci.events.dispatch("inboxMessageAction",{message:t,action:"clicked",actionConfig:e})}(s,e)},c&&(u.templates=c),n?.theme&&(u.theme=n.theme),u.mode=o,u.formatDate=pe,u.data=s.properties??{},u.template=s.type??null,a<e.length-1){const e=D("div",{className:"gist-inbox-divider"});e.style.height="1px",e.style.background=t.dividerColor,e.style.margin="0",l.appendChild(e)}}),a?requestAnimationFrame(()=>{s.classList.add("gist-inbox-panel--open")}):s.classList.add("gist-inbox-panel--open")}(s,e,n,o??"auto");for(const t of e){const e=t.queueId;t.opened||!e||ee.has(e)||(ee.add(e),_(e,!0).finally(()=>{ee.delete(e)}))}}}else le()}function le(){document.getElementById(Jt)?.remove(),document.getElementById(Yt)?.remove(),te=!1}const ce=[[60,"second",1],[3600,"minute",60],[86400,"hour",3600],[2592e3,"day",86400],[31536e3,"month",2592e3],[1/0,"year",31536e3]];let de=null,ue=null;function pe(t){const e=Math.round((Date.now()-new Date(t).getTime())/1e3);if(Number.isNaN(e))return t;const[,n,i]=ce.find(([t])=>Math.abs(e)<t);return function(){const t=C();return de&&ue===t||(ue=t,de=new Intl.RelativeTimeFormat(t,{numeric:"auto"})),de}().format(-Math.round(e/i),n)}function ge(t,e=!1){const n=e?"":"24px",i="96px";switch(t){case"bottom-left":return e?{bottom:i,left:"24px",right:"",top:""}:{bottom:n,left:n,right:"",top:""};case"top-right":return e?{top:i,right:"24px",bottom:"",left:""}:{top:n,right:n,bottom:"",left:""};case"top-left":return e?{top:i,left:"24px",bottom:"",right:""}:{top:n,left:n,bottom:"",right:""};default:return e?{bottom:i,right:"24px",left:"",top:""}:{bottom:n,right:n,left:"",top:""}}}async function me(){await Promise.all([k(),L()])}let he=600,fe=!1;const be="gist.web.userQueueNextPullCheck",ye="gist.web.sessionId";function ve(){let t=a(ye);return t||(t=g()),s(ye,t,new Date((new Date).getTime()+18e5)),String(t)}const we="gist.web.userToken",xe="gist.web.usingGuestUserToken",Se="gist.web.guestUserToken";function Ie(){return null!==a(xe)}function Ce(){return a(we)}function $e(){if(null===Ce()){let t=a(Se);null==t&&(t=g(),s(Se,t),i(`Set guest user token "${t}" with expiry date set to 1 year from today`)),s(we,t),s(xe,!0),i(`Using anonymous session with token: "${t}"`)}}async function ke(){const t=Ce();return null===t?null:await async function(t){const e=(new TextEncoder).encode(t),n=await crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(n)).map(t=>t.toString(16).padStart(2,"0")).join("")}(t)}function Ee(){const t=Ce();return null===t?null:btoa(t)}function je(){r(we),i("Cleared user token")}const Le="gist.web.customAttributes";let Te=new Map;function Pe(){const t=Array.from(Te.entries()),e=new Date;e.setDate(e.getDate()+30),s(Le,t,e),i(`Saved ${Te.size} custom attributes to storage with TTL of 30 days`)}async function De(t){const e=await qe();if(!e)return;const n=new Date;n.setMinutes(n.getMinutes()+60),s(e,t.filter(Ae),n)}async function Ne(){const t=await qe();return t?(a(t)??[]).filter(e=>{const n=e.properties.gist.broadcast,{frequency:i}=n,o=a(ze(t,e.queueId))??!0,s=a(We(t,e.queueId))||0,r=0===i.count;return o&&(r||s<i.count)}):[]}async function Me(t,e){const n=a(t);return n?.find(t=>t.queueId===e)}function Ae(t){return!(!t.properties?.gist||!t.properties.gist.broadcast)}function Re(t){if(!Ae(t))return!1;const e=t.properties.gist.broadcast;return 0===e.frequency.delay&&0===e.frequency.count}async function qe(){const t=await ke();return t?`gist.web.message.broadcasts.${t}`:null}function We(t,e){return`${t}.${e}.numberOfTimesShown`}function ze(t,e){return`${t}.${e}.shouldShow`}!function(){const t=a(Le);if(t)try{Te=new Map(t)}catch{Te=new Map}else Te=new Map}();const _e="gist.web.message.user";async function Oe(t){const e=await Ue();if(!e)return;const n=t.filter(t=>!(t.properties&&t.properties.gist&&t.properties.gist.broadcast)),i=new Date;i.setMinutes(i.getMinutes()+60),s(e,n,i)}async function Be(){const t=await Ue();if(!t)return[];const e=a(t)??[],n=await async function(){const t=await He();return t?a(t)??[]:[]}();return e.filter(t=>!n.includes(t.queueId??""))}async function Ue(){const t=await ke();return t?`${_e}.${t}`:null}async function He(){const t=await ke();return t?`${_e}.${t}.seen`:null}async function Fe(t){const e=await ke();return e?`${_e}.${e}.message.${t}.loading`:null}async function Ve(t){const e=await ke();return e?`${_e}.${e}.message.${t}.state`:null}async function Ge(t){const e=await Ve(t);e&&(r(e),i(`Cleared message state for queueId: ${t}`))}function Xe(t){return`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.54223 5.33301L7.7089 9.33301L11.8756 5.33301L12.6121 6.04011L7.7089 10.7472L2.80566 6.04011L3.54223 5.33301Z" fill="${t}"/></svg>`}const Je=`\n #gist-preview-bar {\n position: fixed; bottom: 0; left: 0; right: 0;\n z-index: 99999999999;\n font-family: system-ui, -apple-system, sans-serif;\n pointer-events: none;\n }\n .gist-pb-toggle-row {\n display: flex; justify-content: center;\n padding: 6px 16px;\n border-bottom: 1px solid #e5e7eb;\n }\n .gist-pb-toggle-row--collapsed { border-bottom: none; }\n .gist-pb-toggle-btn {\n background: #08272B; border: none;\n padding: 4px 14px;\n border-radius: 100px;\n font-size: 12px; font-weight: 500;\n font-family: system-ui, -apple-system, sans-serif;\n color: white; cursor: pointer;\n display: flex; align-items: center; gap: 6px;\n pointer-events: auto;\n height: auto; min-width: auto;\n box-sizing: border-box;\n line-height: normal;\n -webkit-appearance: none;\n appearance: none;\n }\n .gist-pb-controls-row {\n background: #F8F9F9;\n box-shadow: 1px 2px 2px #34344605, 3px 3px 8px #34344614;\n display: flex; flex-wrap: wrap; align-items: center;\n gap: 12px; padding: 10px 16px 12px;\n pointer-events: auto;\n }\n .gist-pb-label-group { display: flex; flex-direction: column; gap: 4px; }\n .gist-pb-label-group--grow { flex: 1; }\n .gist-pb-label {\n font-size: 10px; font-weight: 600; color: #3F4E50;\n letter-spacing: 0.05em; text-transform: uppercase;\n font-family: system-ui, -apple-system, sans-serif;\n }\n .gist-pb-select {\n height: 32px; padding: 0 32px 0 8px;\n border: 1px solid #d1d5db; border-radius: 6px;\n font-size: 13px; font-family: system-ui, -apple-system, sans-serif;\n background: white ${`url("data:image/svg+xml,${encodeURIComponent(Xe("#3F4E50"))}")`} no-repeat right 2px center;\n color: #3F4E50; cursor: pointer; outline: none;\n appearance: none; min-width: 120px;\n }\n .gist-pb-input {\n height: 32px; padding: 0 8px;\n border: 1px solid #d1d5db; border-radius: 6px;\n font-size: 13px; font-family: system-ui, -apple-system, sans-serif;\n color: #3F4E50; outline: none; box-sizing: border-box;\n }\n .gist-pb-checkbox-row { display: flex; align-items: center; gap: 6px; height: 32px; }\n .gist-pb-checkbox-label {\n font-size: 12px; font-family: system-ui, -apple-system, sans-serif;\n color: #3F4E50; cursor: pointer; user-select: none;\n }\n .gist-pb-color-control {\n display: flex; align-items: center;\n border: 1px solid #d1d5db; border-radius: 6px;\n overflow: hidden; height: 32px; background: white;\n }\n .gist-pb-color-swatch {\n width: 28px; height: 100%;\n cursor: pointer; flex-shrink: 0;\n border-right: 1px solid #d1d5db; position: relative;\n }\n .gist-pb-color-input {\n position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;\n }\n .gist-pb-color-hex {\n flex: 1; border: none; outline: none; padding: 0 6px;\n font-size: 13px; font-family: monospace; color: #3F4E50;\n min-width: 0; background: transparent;\n }\n .gist-pb-color-opacity {\n width: 36px; border: none; border-left: 1px solid #d1d5db;\n outline: none; padding: 0 4px;\n font-size: 13px; font-family: system-ui, -apple-system, sans-serif;\n color: #3F4E50; background: transparent; text-align: right;\n }\n .gist-pb-color-pct {\n font-size: 12px; color: #3F4E50; padding: 0 6px 0 2px;\n font-family: system-ui, -apple-system, sans-serif; flex-shrink: 0;\n }\n .gist-pb-input--invalid { border-color: #941616; outline: 1px solid #941616; }\n .gist-pb-inline-row { display: flex; align-items: center; gap: 6px; }\n .gist-pb-select-elem-btn, .gist-pb-cancel-btn {\n height: 32px; padding: 0 12px;\n border: none; border-radius: 6px;\n font-size: 12px; font-weight: 500; font-family: system-ui, -apple-system, sans-serif;\n background: #08272B; color: white; cursor: pointer; white-space: nowrap; flex-shrink: 0;\n min-width: auto; box-sizing: border-box;\n -webkit-appearance: none; appearance: none;\n }\n .gist-pb-select-elem-btn:disabled {\n opacity: 0.4; cursor: not-allowed;\n }\n .gist-pb-spacer { flex: 1; min-width: 0; }\n .gist-pb-save-btn {\n height: 36px; padding: 0 18px;\n background: #08272B; color: white;\n border: none; border-radius: 6px;\n font-size: 13px; font-weight: 600;\n font-family: system-ui, -apple-system, sans-serif;\n cursor: pointer; white-space: nowrap; align-self: center;\n min-width: auto; box-sizing: border-box;\n -webkit-appearance: none; appearance: none;\n }\n .gist-pb-save-btn:disabled {\n background: #CAD6D8; cursor: not-allowed;\n }\n .gist-pb-picker-overlay {\n position: fixed; inset: 0; z-index: 999999999998; cursor: crosshair;\n }\n .gist-pb-checkbox { cursor: pointer; width: 14px; height: 14px; }\n .gist-pb-pick-highlight { outline: 2px solid #006FF5 !important; }\n .gist-pb-pick-error { outline: 2px solid #941616 !important; }\n #gist-preview-bar.gist-pb-hidden { display: none; }\n .gist-pb-ended-row {\n justify-content: center; align-items: center; gap: 10px; padding: 12px 16px;\n flex-wrap: nowrap;\n }\n .gist-pb-ended-icon {\n display: flex; align-items: center; justify-content: center;\n width: 22px; height: 22px; border-radius: 50%;\n background: #08272B; color: white;\n font-size: 13px; font-weight: 700; flex-shrink: 0;\n }\n .gist-pb-ended-text {\n margin: 0; font-size: 13px; color: #3F4E50;\n font-family: system-ui, -apple-system, sans-serif;\n min-width: 0;\n }\n .gist-pb-ended-text strong { color: #08272B; }\n @media (max-width: 1024px) {\n .gist-pb-controls-row { gap: 8px; }\n .gist-pb-label-group { flex: 1 1 100%; }\n .gist-pb-label-group--grow { flex: 1 1 100%; }\n .gist-pb-select { width: 100%; min-width: unset; box-sizing: border-box; }\n .gist-pb-input { width: 100% !important; box-sizing: border-box; }\n .gist-pb-color-control { width: 100%; }\n .gist-pb-checkbox-row { width: 100%; }\n .gist-pb-inline-row { flex-direction: row; align-items: center; }\n .gist-pb-inline-row .gist-pb-input { flex: 1; min-width: 0; }\n .gist-pb-save-btn { width: 100%; box-sizing: border-box; }\n .gist-pb-label--spacer { display: none; }\n }\n`;const Qe="cioPreviewId",Ye="cioPreviewSettings";const Ke="gist.previewBar.collapsed",Ze="gist-pb-styles",tn="gist-preview-bar",en={topLeft:"Top Left",topCenter:"Top Center",topRight:"Top Right",bottomLeft:"Bottom Left",bottomCenter:"Bottom Center",bottomRight:"Bottom Right"};let nn=null,on=[],sn={},an=null,rn=!1,ln=!1,cn=5,dn=null,un=!0,pn=!1,gn=!1,mn=null,hn=null,fn=null;const bn=new Map;function yn(t,e){const n=D("div",{className:"gist-pb-label-group"});return n.appendChild(D("span",{className:"gist-pb-label",textContent:t})),n.appendChild(e),n}function vn(t,e){const n=D("select",{className:"gist-pb-select"});for(const i of t){const t=D("option",{value:i.value,textContent:i.label});i.value===e&&(t.selected=!0),n.appendChild(t)}return n}function wn(t,e,n){const i=D("input",{className:"gist-pb-input",type:t,value:String(e)});return n&&(i.style.width=n),i}function xn(t,e){const n=Math.round(Math.min(100,Math.max(0,e))/100*255);return"#"+t.replace("#","").toUpperCase()+n.toString(16).padStart(2,"0").toUpperCase()}function Sn(t){return!!("inline"!==t.displayType&&"tooltip"!==t.displayType||t.elementSelector?.trim())}function In(t){if("overlay"===t.displayType&&X.includes(nt(t.overlayPosition))){const{maxWidth:e,...n}=t;t=n}if(sn=t,an){const e=on.findIndex(t=>t.stepName===an);-1!==e&&(on[e]={...on[e],displaySettings:{...t}})}if(!nn)return;const e=ci.currentMessages.find(t=>t.instanceId===nn);e&&Sn(t)&&($t(e),st(e,t)&&Kn(e,an,t)),function(){const t=new URLSearchParams(window.location.search).get(Qe);t&&async function(t,e){try{return await S()(`/api/v1/preview/${t}`,{method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}})}catch(t){return x(t)}}(t,on).then(t=>{t&&404===t.status&&nn&&ci.dismissMessage(nn)}).catch(()=>i("Failed to persist preview display settings"))}()}function Cn(t){const e=t.value.trim();e&&!P(e)?t.classList.add("gist-pb-input--invalid"):t.classList.remove("gist-pb-input--invalid")}function $n(t,e){const n=wn("text",t.elementSelector||"","260px");n.placeholder="Element ID or selector",Cn(n),n.addEventListener("change",()=>{const t=n.value.trim(),e=sn.elementSelector;t&&kn(t),In({...sn,elementSelector:t}),e&&e!==t&&En(e),Cn(n)});const i=D("button",{type:"button",className:"gist-pb-select-elem-btn",textContent:"Select Element"});gn&&(i.disabled=!0),i.addEventListener("click",()=>Ln(n));const o=D("div",{className:"gist-pb-inline-row"});o.appendChild(n),o.appendChild(i),e.appendChild(yn("Element Selector",o))}function kn(t){if(!t||bn.has(t))return;const e=P(t);e&&bn.set(t,e.innerHTML)}function En(t){const e=bn.get(t);if(void 0===e)return;const n=P(t);n&&(n.innerHTML=e)}function jn(){for(const t of bn.keys())En(t);bn.clear()}function Ln(t){if(gn)return;gn=!0;const e=document.querySelector(`#${tn} .gist-pb-select-elem-btn`);e&&(e.disabled=!0);const n={...sn},o=ci.currentMessages.find(t=>t.instanceId===nn)??null;o&&Yn(o),sn.elementSelector&&En(sn.elementSelector);const s=D("div",{className:"gist-pb-picker-overlay"});let a=null;const r=t=>{s.style.pointerEvents="none";const e=document.elementFromPoint(t.clientX,t.clientY);s.style.pointerEvents="all",e&&e!==a&&e!==s&&(a?.classList.remove("gist-pb-pick-highlight"),a=e,a.classList.add("gist-pb-pick-highlight"))},l=t=>{if("Escape"===t.key){if(d(),sn=n,an){const t=on.findIndex(t=>t.stepName===an);-1!==t&&(on[t]={...on[t],displaySettings:{...n}})}o&&Sn(n)&&Kn(o,an,n),Tn()}},c=e=>{e.preventDefault(),e.stopPropagation(),s.style.pointerEvents="none";const n=document.elementFromPoint(e.clientX,e.clientY);if(s.style.pointerEvents="all",n&&n!==s){n.classList.remove("gist-pb-pick-highlight");const e=document.getElementById(tn),s=e?.contains(n)?null:function(t){if(t.id){const e=CSS.escape(t.id);if(1===document.querySelectorAll(`#${e}`).length)return t.id}const e=[];let n=t;for(;n&&"BODY"!==n.tagName&&"HTML"!==n.tagName;){if(n.id){const t=CSS.escape(n.id);if(1===document.querySelectorAll(`#${t}`).length){e.unshift(`#${t}`);break}}let t=n.tagName.toLowerCase();n.className&&"string"==typeof n.className&&(t+=n.className.trim().split(/\s+/).filter(Boolean).map(t=>`.${CSS.escape(t)}`).join(""));const i=n.parentElement;i&&(t+=`:nth-of-type(${Array.from(i.children).filter(t=>t.tagName===n.tagName).indexOf(n)+1})`),e.unshift(t);try{if(1===document.querySelectorAll(e.join(" > ")).length)break}catch{}n=n.parentElement}const o=e.join(" > ");try{if(1!==document.querySelectorAll(o).length)return i("buildUniqueSelector: could not produce a unique selector for element"),null}catch{return null}return o}(n);if(null===s)return n.classList.add("gist-pb-pick-error"),void setTimeout(()=>{n.classList.remove("gist-pb-pick-error"),n.classList.add("gist-pb-pick-highlight")},800);t.value=s,kn(s);const a=sn.elementSelector,r={...sn,elementSelector:s},l=null!=o&&Sn(r)&&st(o,r);In(r),a&&a!==s&&En(a),o&&!l&&Kn(o,an,r)}d(),Tn()},d=()=>{a?.classList.remove("gist-pb-pick-highlight"),s.removeEventListener("mousemove",r),s.removeEventListener("click",c),document.removeEventListener("keydown",l),document.body.removeChild(s),gn=!1,mn=null};mn=d,s.addEventListener("mousemove",r),s.addEventListener("click",c),document.addEventListener("keydown",l),document.body.appendChild(s)}function Tn(){const t=document.getElementById(tn);if(!t)return;if(t.classList.toggle("gist-pb-hidden",!nn&&!ln),t.innerHTML="",!nn){if(ln){const e=D("div",{className:"gist-pb-controls-row gist-pb-ended-row"}),n=D("span",{className:"gist-pb-ended-icon",textContent:"✓"}),i=D("p",{className:"gist-pb-ended-text"});if(i.innerHTML=Dn(cn),e.appendChild(n),e.appendChild(i),un){const t=D("button",{type:"button",className:"gist-pb-cancel-btn",textContent:"Cancel"});t.addEventListener("click",Nn),e.appendChild(t)}t.appendChild(e)}return}const e=D("div",{className:"gist-pb-toggle-row"+(rn?" gist-pb-toggle-row--collapsed":"")}),n=D("button",{type:"button",className:"gist-pb-toggle-btn"}),i=rn?"transform:rotate(180deg);display:inline-flex;":"display:inline-flex;";if(n.innerHTML=`${rn?"Expand":"Collapse"}<span style="${i}">${Xe("white")}</span>`,n.addEventListener("click",Mn),e.appendChild(n),t.appendChild(e),rn)return;const o=D("div",{className:"gist-pb-controls-row"});if(on.length>0){const t=an??on[0].stepName,e=vn(on.map(t=>({value:t.stepName,label:t.stepName})),t);e.addEventListener("change",()=>{const t=on.find(t=>t.stepName===e.value);if(t){an=t.stepName,sn={...t.displaySettings};const e=ci.currentMessages.find(t=>t.instanceId===nn);e&&Sn(t.displaySettings)&&Kn(e,t.stepName,t.displaySettings),Tn()}}),o.appendChild(yn("Step",e))}const s=vn([{value:"modal",label:"Modal"},{value:"overlay",label:"Overlay"},{value:"inline",label:"Inline"},{value:"tooltip",label:"Tooltip"}],sn.displayType||"modal");s.addEventListener("change",()=>{const t=s.value,e=sn.displayType,n=sn.elementSelector,i={...sn,displayType:t};"modal"===t?(i.modalPosition=i.modalPosition||"center",i.maxWidth=i.maxWidth??414,delete i.overlayPosition,delete i.elementSelector,delete i.tooltipPosition):"overlay"===t?(i.overlayPosition=i.overlayPosition||"topCenter",i.maxWidth=i.maxWidth??414,delete i.modalPosition,delete i.elementSelector,delete i.tooltipPosition):"inline"===t?(delete i.modalPosition,delete i.overlayPosition,delete i.tooltipPosition):"tooltip"===t&&(i.tooltipPosition=i.tooltipPosition||"top",delete i.modalPosition,delete i.overlayPosition,delete i.overlayColor,delete i.dismissOutsideClick),sn=i,In(sn),"inline"!==e&&"tooltip"!==e||!n||"inline"===t||"tooltip"===t||En(n),Tn()}),o.appendChild(yn("Display Type",s));const a=sn.displayType||"modal";"modal"===a?function(t,e){const n=vn([{value:"top",label:"Top"},{value:"center",label:"Center"},{value:"bottom",label:"Bottom"}],t.modalPosition||"center");n.addEventListener("change",()=>In({...sn,modalPosition:n.value})),e.appendChild(yn("Position",n));const i=wn("number",t.maxWidth??414,"80px");i.addEventListener("change",()=>In({...sn,maxWidth:parseInt(i.value)||414})),e.appendChild(yn("Max Width",i)),e.appendChild(function(t){const{color:e,opacity:n}=function(t){const e=t.replace("#","");return 8===e.length?{color:"#"+e.slice(0,6).toUpperCase(),opacity:Math.round(parseInt(e.slice(6),16)/255*100)}:6===e.length?{color:"#"+e.toUpperCase(),opacity:100}:{color:"#000000",opacity:20}}(t.overlayColor||"#00000033"),i=D("div",{className:"gist-pb-color-control"}),o=D("input",{className:"gist-pb-color-input",type:"color",value:e}),s=D("div",{className:"gist-pb-color-swatch"});s.style.background=e,s.appendChild(o),s.addEventListener("click",()=>o.click());const a=D("input",{className:"gist-pb-color-hex",type:"text",maxLength:6,value:e.replace("#","")}),r=D("input",{className:"gist-pb-color-opacity",type:"number",min:"0",max:"100",value:String(n)}),l=D("span",{className:"gist-pb-color-pct",textContent:"%"}),c=()=>{const t="#"+a.value.replace("#",""),e=parseInt(r.value)||0;s.style.background=t,o.value=t,In({...sn,overlayColor:xn(t,e)})};return o.addEventListener("input",()=>{a.value=o.value.replace("#","").toUpperCase(),s.style.background=o.value}),o.addEventListener("change",c),a.addEventListener("change",c),r.addEventListener("change",c),i.appendChild(s),i.appendChild(a),i.appendChild(r),i.appendChild(l),yn("Overlay Color",i)}(t));const o=D("div",{className:"gist-pb-checkbox-row"}),s=D("input",{className:"gist-pb-checkbox",type:"checkbox"});s.checked=t.dismissOutsideClick??!1;const a=D("label",{className:"gist-pb-checkbox-label",textContent:"Dismiss on click outside"});s.addEventListener("change",()=>In({...sn,dismissOutsideClick:s.checked})),a.addEventListener("click",()=>{s.checked=!s.checked,In({...sn,dismissOutsideClick:s.checked})}),o.appendChild(s),o.appendChild(a);const r=yn(" ",o);r.classList.add("gist-pb-label-group--grow"),r.firstChild.classList.add("gist-pb-label--spacer"),e.appendChild(r)}(sn,o):"overlay"===a?function(t,e){const n=vn(Object.entries(en).map(([t,e])=>({value:t,label:e})),t.overlayPosition||"topCenter");if(n.addEventListener("change",()=>In({...sn,overlayPosition:n.value})),e.appendChild(yn("Position",n)),!X.includes(nt(t.overlayPosition))){const n=wn("number",t.maxWidth??414,"80px");n.addEventListener("change",()=>In({...sn,maxWidth:parseInt(n.value)||414})),e.appendChild(yn("Max Width",n))}}(sn,o):"inline"===a?function(t,e){$n(t,e)}(sn,o):"tooltip"===a&&function(t,e){const n=vn([{value:"top",label:"Top"},{value:"bottom",label:"Bottom"},{value:"left",label:"Left"},{value:"right",label:"Right"}],t.tooltipPosition||"top");n.addEventListener("change",()=>In({...sn,tooltipPosition:n.value})),e.appendChild(yn("Position",n)),$n(t,e)}(sn,o),o.appendChild(D("div",{className:"gist-pb-spacer"}));const r=D("button",{type:"button",className:"gist-pb-save-btn",textContent:"End session"});r.addEventListener("click",async()=>{nn&&await ci.dismissMessage(nn)}),o.appendChild(r),t.appendChild(o)}async function Pn(){if(!pn)if(pn=!0,je(),function(){try{sessionStorage.removeItem(o)}catch{}}(),un){try{window.close()}catch{}try{window.location.reload()}catch{}mn&&mn(),dn&&(clearInterval(dn),dn=null),jn(),document.getElementById(tn)?.remove(),document.getElementById(Ze)?.remove(),nn=null,on=[],sn={},an=null,ln=!1,cn=5,un=!0,pn=!1}else ln=!1,pn=!1,Tn()}function Dn(t){return un?`<strong>Preview session ended.</strong> This tab will close in ${t}s…`:`<strong>Preview session ended.</strong> Finishing session in ${t}s… This tab will stay open.`}function Nn(){ln&&dn&&(un=!1,Tn())}function Mn(){rn=!rn;try{sessionStorage.setItem(Ke,String(rn))}catch{}Tn()}function An(t){if(ln)return;nn=t.instanceId??null;const e=t.displaySettings;if(Array.isArray(e)&&e.length>0?(on=e,an||(an=on[0].stepName,sn={...on[0].displaySettings})):e&&"object"==typeof e&&!Array.isArray(e)&&(sn={...e}),hn||fn){const t=!!hn,e=!!fn,n=hn,o=fn;if(hn=null,fn=null,t){const t=on.find(t=>t.stepName===n);if(!t)return i(`Preview bar: step "${n}" not found, ignoring initial step/display override`),void Tn();an=t.stepName,sn={...t.displaySettings}}if(e){if(!t)return i(`Preview bar: display type "${o}" provided without a step, ignoring`),void Tn();sn={...sn,displayType:o}}Tn();const s=ci.currentMessages.find(t=>t.instanceId===nn);return void(s&&Sn(sn)?Kn(s,an,sn):function(){const t=sn.displayType;if("inline"!==t&&"tooltip"!==t)return;const e=document.querySelector("#gist-preview-bar .gist-pb-input[type='text']");e&&Ln(e)}())}Tn()}function Rn(){jn(),nn=null,on=[],sn={},an=null,ln=!0,cn=5,un=!0,pn=!1;const t=new URLSearchParams(window.location.search).get(Qe);t&&async function(t){try{return await S()(`/api/v1/preview/${t}`,{method:"DELETE"})}catch(t){return x(t)}}(t).catch(()=>i("Failed to delete preview session")),Tn(),dn&&clearInterval(dn),dn=setInterval(async()=>{if(cn-=1,cn<=0)clearInterval(dn),dn=null,await Pn();else{const t=document.querySelector(`#${tn} .gist-pb-ended-text`);t?t.innerHTML=Dn(cn):Tn()}},1e3)}async function qn(t){if(!ci.isDocumentVisible)return i("Document hidden, not showing message now."),null;if(Q(t.queueId))return i(`Message with queueId ${t.queueId} is already showing.`),null;const e=F(t);return!t.tooltipPosition&&e.hasTooltipPosition&&(t.tooltipPosition=e.tooltipPosition),t.tooltipPosition?function(t,e){const n=e.elementId||t.elementId;if(!n)return i(`No target selector specified for tooltip message ${t.messageId}`),ci.messageError(t),null;if(!P(n)){if(!ci.config.isPreviewSession||!t.properties?.gist?.livePreview)return i(`Tooltip target element "${n}" not found for message ${t.messageId}, skipping display`),ci.messageError(t),null;i(`Preview: tooltip target "${n}" not found, loading message for preview bar`)}const o=ci.currentMessages.find(t=>t.tooltipPosition&&t.elementId===n);o&&(i(`Tooltip already showing on target "${n}" (instance ${o.instanceId}), dismissing it first`),ci.messageDismissed(o),Lt(o),o.instanceId&&K(o.instanceId)),t.instanceId=g(),t.overlay=!1,t.firstLoad=!0,t.shouldResizeHeight=!1,t.shouldScale=!1,t.renderStartTime=(new Date).getTime(),t.elementId=n,ci.currentMessages.push(t);return Vn(t,null,t.savedStepName||null)}(t,e):ci.overlayInstanceId?(i(`Message ${ci.overlayInstanceId} already showing.`),null):(t.instanceId=g(),t.overlay=!0,t.firstLoad=!0,t.shouldResizeHeight=!0,t.shouldScale=e.shouldScale,t.renderStartTime=(new Date).getTime(),ci.overlayInstanceId=t.instanceId,ci.currentMessages.push(t),Vn(t,null,t.savedStepName||null))}function Wn(t,e){return ci.isDocumentVisible?Q(t.queueId)?(i(`Message with queueId ${t.queueId} is already showing.`),null):Y(e)?(i(`Message with elementId ${e} already has a message.`),null):(t.instanceId=g(),t.overlay=!1,t.firstLoad=!0,t.shouldScale=!1,t.elementId=e,t.shouldResizeHeight=!St(e),t.renderStartTime=(new Date).getTime(),ci.currentMessages.push(t),Vn(t,e,t.savedStepName||null)):(i("Document hidden, not showing message now."),null)}async function zn(t){t?(ci.messageDismissed(t),await _n(t)):i("Message not found")}async function _n(t){"tooltip"===ot(t)?Un(t):t.overlay?await Hn(!0,t):Bn(t)}async function On(t){t?F(t).persistent&&(i("Persistent message dismissed, logging view"),await Zn(t),await Gn(t),await Ge(t.queueId??"")):i("Message not found")}function Bn(t){t.instanceId&&K(t.instanceId),t.elementId&&xt(t.elementId),ci.config.isPreviewSession&&(Rn(),Fn())}function Un(t){Lt(t),t.instanceId&&K(t.instanceId),0===ci.currentMessages.length&&(window.removeEventListener("message",Jn),window.removeEventListener("touchstart",Xn)),ci.config.isPreviewSession&&(Rn(),Fn())}async function Hn(t,e){t?await kt():Et(),0===ci.currentMessages.length&&(window.removeEventListener("message",Jn),window.removeEventListener("touchstart",Xn)),e.instanceId&&K(e.instanceId),ci.overlayInstanceId=null,ci.config.isPreviewSession&&(Rn(),Fn())}function Fn(){const t=new URL(window.location.href);t.searchParams.delete(Qe),t.searchParams.delete(Ye),history.replaceState(null,"",t.toString())}function Vn(t,e=null,n=null){const o=ci.config.env,s={endpoint:v.ENGINE_API_ENDPOINT[o],siteId:ci.config.siteId,dataCenter:ci.config.dataCenter,messageId:t.messageId,instanceId:t.instanceId??"",livePreview:!1,properties:t.properties,customAttributes:Object.fromEntries(new Map(Te))},a=`${v.GIST_VIEW_ENDPOINT[o]}/index.html`;return window.addEventListener("message",Jn),window.addEventListener("touchstart",Xn),"tooltip"===ot(t)?function(t,e,n,i=null){const o=e.instanceId??"",s=Tt(o),a=F(e),r=jt.get(o);r&&(r.cleanup(),jt.delete(o)),document.querySelectorAll(`#gist-tooltip-${o}`).forEach(t=>{t.parentNode?.removeChild(t)});const l=`gist-tooltip-${o}`,c=document.createElement("div");c.id=l;const d=ht(ci.config?.colorScheme);c.innerHTML=function(t,e,n,i="",o="light only"){let s=600;e.messageWidth>s&&(s=e.messageWidth);const a=e.tooltipArrowColor,r=function(t){switch(t){case"top":default:return"gist-arrow-bottom";case"bottom":return"gist-arrow-top";case"left":return"gist-arrow-right";case"right":return"gist-arrow-left"}}(e.tooltipPosition),l=i?`#${i} `:"";return`\n <div class="gist-tooltip-outer">\n <style>\n ${l}.gist-tooltip-outer {\n position: absolute;\n }\n ${l}.gist-tooltip-container {\n position: relative;\n z-index: 9999999;\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n }\n ${l}.gist-tooltip-container.gist-visible {\n opacity: 1;\n }\n ${l}.gist-tooltip-frame-clip {\n overflow: hidden;\n }\n ${l}.gist-tooltip-frame {\n display: block;\n width: ${e.messageWidth}px;\n border: none;\n transition: height 0.1s ease-in-out;\n color-scheme: ${o};\n }\n ${l}.gist-tooltip-arrow {\n width: 0;\n height: 0;\n position: absolute;\n z-index: 1;\n }\n ${l}.gist-tooltip-arrow.gist-arrow-bottom {\n bottom: 0;\n left: 50%;\n transform: translateX(-50%) translateY(100%);\n border-left: 10px solid transparent;\n border-right: 10px solid transparent;\n border-top: 10px solid ${a};\n }\n ${l}.gist-tooltip-arrow.gist-arrow-top {\n top: 0;\n left: 50%;\n transform: translateX(-50%) translateY(-100%);\n border-left: 10px solid transparent;\n border-right: 10px solid transparent;\n border-bottom: 10px solid ${a};\n }\n ${l}.gist-tooltip-arrow.gist-arrow-right {\n right: 0;\n top: 50%;\n transform: translateY(-50%) translateX(100%);\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-left: 10px solid ${a};\n }\n ${l}.gist-tooltip-arrow.gist-arrow-left {\n left: 0;\n top: 50%;\n transform: translateY(-50%) translateX(-100%);\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-right: 10px solid ${a};\n }\n @media (max-width: ${s}px) {\n ${l}.gist-tooltip-frame {\n max-width: 100%;\n }\n }\n </style>\n <div class="gist-tooltip-container">\n <div class="gist-tooltip-arrow ${r}"></div>\n <div class="gist-tooltip-frame-clip">\n <iframe id="${t}" class="gist-tooltip-frame" src="${n}"></iframe>\n </div>\n </div>\n </div>`}(s,a,t,l,d),document.body.appendChild(c),It(s,n,i)}(a,t,s,n):e?(V.includes(e)&&G(e),function(t,e,n,o,s=null){const a=P(t);if(a){const i=Tt(n.instanceId??"");a.classList.add(i);const r=F(n);let l=r.messageWidth+"px";X.includes(t)&&!r.hasCustomWidth&&(l="100%"),V.includes(t)&&(a.style.width=l),St(t)||(a.style.height="0px"),a.innerHTML=function(t,e,n){const i=ht(ci.config?.colorScheme);return function(t,e,n,i="light only"){let o=800;return e.messageWidth>o&&(o=e.messageWidth),`\n <div id="gist-embed">\n <style>\n #x-gist-floating-top, #x-gist-floating-top-left, #x-gist-floating-top-right {\n position: fixed;\n top: 0px;\n z-index: 1000000;\n }\n #x-gist-floating-bottom, #x-gist-floating-bottom-left, #x-gist-floating-bottom-right {\n position: fixed;\n bottom: 0px;\n z-index: 1000000;\n }\n #x-gist-bottom, #x-gist-top, #x-gist-floating-top, #x-gist-floating-bottom {\n left: 50%;\n transform: translate(-50%, 0%);\n }\n #x-gist-floating-top-right, #x-gist-floating-bottom-right {\n right: 0px;\n }\n #gist-embed {\n position: relative;\n height: 100%;\n width: 100%;\n }\n #gist-embed-container {\n position: relative;\n height: 100%;\n width: 100%;\n }\n #gist-embed-container .gist-frame {\n height: 100%;\n width: 100%;\n border: none;\n color-scheme: ${i};\n }\n #x-gist-top.${t},\n #x-gist-bottom.${t},\n #x-gist-floating-top.${t},\n #x-gist-floating-bottom.${t},\n #x-gist-floating-top-left.${t},\n #x-gist-floating-top-right.${t},\n #x-gist-floating-bottom-left.${t},\n #x-gist-floating-bottom-right.${t} {\n transition: height 0.1s ease-in-out;\n }\n @media (max-width: ${o}px) {\n #x-gist-top.${t},\n #x-gist-bottom.${t},\n #x-gist-floating-top.${t},\n #x-gist-floating-bottom.${t},\n #x-gist-floating-top-left.${t},\n #x-gist-floating-top-right.${t},\n #x-gist-floating-bottom-left.${t},\n #x-gist-floating-bottom-right.${t} {\n width: 100% !important;\n }\n }\n </style>\n <div id="gist-embed-container">\n <iframe id="${t}" class="gist-frame" src="${n}"></iframe>\n </div>\n </div>`}(Tt(e.instanceId??""),n,t,i)}(e,n,r),It(i,o,s)}else i(`Message could not be embedded, elementId ${t} not found.`)}(e,a,t,s,n)):function(t,e,n,i=null){document.querySelectorAll("#gist-embed-message").forEach(t=>{t.parentNode?.removeChild(t)}),document.body.insertAdjacentHTML("afterbegin",function(t,e){const n=F(e),i=ht(ci.config?.colorScheme);return function(t,e,n,i="light only"){let o=600;return e.messageWidth>o&&(o=e.messageWidth),`\n <div id="gist-embed-message">\n <style>\n #gist-overlay.gist-background {\n position: fixed;\n z-index: 9999999998;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: ${e.overlayColor};\n visibility: hidden;\n }\n #gist-overlay.gist-background.gist-visible {\n visibility: visible;\n }\n .gist-message {\n width: ${e.messageWidth}px;\n position: absolute;\n border: none;\n opacity: 0;\n transition: opacity 0.3s ease-in-out, height 0.1s ease-in-out;\n z-index: 9999999999;\n left: 50%;\n transform: translateX(-50%);\n color-scheme: ${i};\n }\n .gist-message.gist-visible {\n opacity: 1;\n pointer-events: auto;\n }\n .gist-message.gist-center {\n transform: translate(-50%, -50%);\n top: 50%;\n }\n .gist-message.gist-bottom {\n bottom: 0;\n }\n .gist-message.gist-top {\n top: 0;\n }\n @media (max-width: ${o}px) {\n .gist-message {\n width: 100%;\n }\n }\n </style>\n <div id="gist-overlay" class="gist-background">\n <iframe id="${t}" class="gist-message" src="${n}"></iframe>\n </div>\n </div>`}(Tt(e.instanceId??""),n,t,i)}(t,e)),It(Tt(e.instanceId??""),n,i)}(a,t,s,n),t}async function Gn(t){let e;i(`Message shown, logging view for: ${t.messageId}`),null!=t.queueId?(await Zn(t),e=await A(t.queueId)):e=await async function(t){try{return await S().post(`/api/v1/logs/message/${t}`)}catch(t){return x(t)}}(t.messageId),i(200===e?.status?"Message view logged":`Problem logging message: ${e?.status}`)}function Xn(){}async function Jn(t){const e=ci.config.env,n=t.data;if(n.gist&&t.origin===v.RENDERER_HOST[e]){const t=n.gist.instanceId,e=J(t);if(!e)return;const o=F(e);switch(n.gist.method){case"routeLoaded":{const s=.001*((new Date).getTime()-(e.renderStartTime??0));if(i(`Engine render for message: ${e.messageId} timer elapsed in ${s.toFixed(3)} seconds`),async function(t){const e=await Fe(t);e&&r(e)}(e.queueId??""),e.currentRoute=n.gist.parameters.route,n.gist.parameters.fullDisplaySettings&&!e.displaySettings?e.displaySettings=n.gist.parameters.fullDisplaySettings:e.displaySettings&&(i("SDK already has display settings state, sending it to iframe"),$t(e)),ci.config.isPreviewSession&&e.properties?.gist?.livePreview&&An(e),e.firstLoad||e.isDisplayChange){if("tooltip"===ot(e)){const t=e.properties?.gist?.elementId||e.elementId||void 0;if(!t||!P(t)){if(ci.config.isPreviewSession&&e.properties?.gist?.livePreview){i(`Preview: tooltip target "${t}" not found, preview bar will show element picker`),e.firstLoad=!1,e.isDisplayChange=!1;break}i(`Tooltip target not found for "${t}", emitting error and skipping display`),ci.messageError(e),e.firstLoad=!1,e.isDisplayChange=!1,Un(e);break}const n=await async function(t){const e=t.instanceId??"",n=F(t),o=`gist-tooltip-${e}`,s=P(o);if(!s)return i(`Tooltip wrapper not found for instance ${e}`),!1;const a=t.properties?.gist?.elementId||t.elementId||void 0;if(!a)return i(`No target selector for tooltip ${e}`),!1;const r=jt.get(e);r&&(r.cleanup(),jt.delete(e));const l=s.querySelector(".gist-tooltip-outer");if(!l)return i(`Tooltip inner element not found for instance ${e}`),!1;const c=n.tooltipPosition||"bottom";if(!await async function(t,e,n){const o=dt(e);if(!o)return!1;let s=[];try{s=mt(o)}catch{}if(ut(o.getBoundingClientRect(),s))return!0;if(!function(t,e,n){const i=dt(e);if(!i)return!1;const o=i.getBoundingClientRect(),s=window.innerWidth,a=window.innerHeight,r=new DOMRect(Math.max(0,(s-o.width)/2),Math.max(0,(a-o.height)/2),o.width,o.height);return t.style.display="",null!==gt(t.getBoundingClientRect(),r,n)}(t,e,n))return i(`Preflight failed: tooltip would not fit after scrolling target "${e}" into view`),!1;o.scrollIntoView({behavior:"smooth",block:"center",inline:"center"}),await function(t){return new Promise(e=>{let n=t.getBoundingClientRect(),i=0;const o=Date.now();setTimeout(function s(){const a=t.getBoundingClientRect();Math.abs(a.top-n.top)<1&&Math.abs(a.left-n.left)<1?i++:i=0,n=a,i>=2||Date.now()-o>1e3?e():setTimeout(s,50)},50)})}(o);const a=o.getBoundingClientRect();let r=[];try{r=mt(o)}catch{}return ut(a,r)}(l,a,c))return i(`Tooltip for instance ${e} skipped: target "${a}" is off-screen and cannot be scrolled into a valid position`),!1;const d=function(t,e,n,o){const s=dt(e);if(!s)return null;let a=null,r=null,l=!1,c=[],d=null;try{c=mt(s)}catch{}function u(){if(l)return;if(!s||!document.contains(s)||!document.contains(t))return i("Tooltip or target element removed from DOM, cleaning up listeners"),g(),void o?.onDetach?.();const e=s.getBoundingClientRect();if(!ut(e,c))return void(t.style.display="none");t.style.display="";const a=gt(t.getBoundingClientRect(),e,n);a?(function(t,e){t.style.position="absolute",t.style.top=`${e.top+window.scrollY}px`,t.style.left=`${e.left+window.scrollX}px`}(t,a),function(t,e){const n=t.querySelector(".gist-tooltip-arrow");n&&(n.classList.remove("gist-arrow-top","gist-arrow-bottom","gist-arrow-left","gist-arrow-right"),n.classList.add(ct[e.position]),null!==e.arrowOffset?"top"===e.position||"bottom"===e.position?(n.style.left=`calc(50% + ${e.arrowOffset}px)`,n.style.removeProperty("top")):(n.style.top=`calc(50% + ${e.arrowOffset}px)`,n.style.removeProperty("left")):"top"===e.position||"bottom"===e.position?(n.style.left="50%",n.style.removeProperty("top")):(n.style.top="50%",n.style.removeProperty("left")))}(t,a)):t.style.display="none"}function p(){null===a&&(a=requestAnimationFrame(()=>{a=null,u()}))}function g(){if(!l){l=!0,d&&(d.disconnect(),d=null),window.removeEventListener("scroll",p),window.removeEventListener("resize",p);for(const t of c)t.removeEventListener("scroll",p);null!==a&&(cancelAnimationFrame(a),a=null),null!==r&&(cancelAnimationFrame(r),r=null)}}if(u(),l)return null;window.addEventListener("scroll",p,{passive:!0}),window.addEventListener("resize",p,{passive:!0});for(const t of c)t.addEventListener("scroll",p,{passive:!0});try{d=new MutationObserver(()=>{null===r&&(r=requestAnimationFrame(()=>{r=null,document.contains(s)||u()}))}),d.observe(document.body,{childList:!0,subtree:!0})}catch{}return{cleanup:g,reposition:u}}(l,a,c,{onDetach:()=>{jt.delete(e);const t=P(o);t&&t.parentNode?.removeChild(t)}});if(d){if("none"!==l.style.display){const t=s.querySelector(".gist-tooltip-container");return t?(jt.set(e,d),t.classList.add("gist-visible"),!0):(d.cleanup(),i(`Tooltip container not found for instance ${e}`),!1)}return d.cleanup(),i(`Tooltip for instance ${e} could not be positioned within the viewport, target "${a}" may be off-screen`),!1}return i(`Failed to position tooltip for instance ${e}, target "${a}" may not exist or no position fits the viewport`),!1}(e);if(!n){if(ci.config.isPreviewSession&&e.properties?.gist?.livePreview){i(`Preview: tooltip positioning failed for "${t}", preview bar will remain active`),e.firstLoad=!1,e.isDisplayChange=!1;break}i(`Tooltip positioning failed for "${t}", emitting error and cleaning up`),ci.messageError(e),e.firstLoad=!1,e.isDisplayChange=!1,Un(e);break}}else e.overlay?function(t){const e=F(t),n=document.querySelector("#gist-overlay");if(n){n.classList.add("gist-visible");const i=document.querySelector(".gist-message");i&&(t.position?i.classList.add("gist-"+t.position):i.classList.add("gist-center")),setTimeout(Pt,100),e.exitClick&&setTimeout(()=>function(t){const e=document.querySelector("#gist-overlay");e&&e.addEventListener("click",()=>{ci.dismissMessage(t)})}(t.instanceId??""),1e3)}else Et()}(e):function(t){const e=P(t);e&&e.classList.add("gist-visible")}(e.elementId);e.firstLoad&&!e.isDisplayChange&&(ci.messageShown(e),o.persistent?i("Persistent message shown, skipping logging view"):await Gn(e)),e.firstLoad=!1,e.isDisplayChange=!1}Z(t,e);break}case"tap":{const t=n.gist.parameters.action,i=n.gist.parameters.name;if(ci.messageAction(e,t,i),n.gist.parameters.system&&!o.persistent){await zn(e);break}try{const n=new URL(t);if(n&&"gist:"===n.protocol)switch(n.href.replace("gist://","").split("?")[0]){case"close":await On(e),await ti(e),await zn(e),await si();break;case"showMessage":{const t=n.searchParams.get("messageId"),e=n.searchParams.get("properties");if(t){const n=e?JSON.parse(atob(e)):void 0;await ci.showMessage({messageId:t,properties:n})}break}case"loadPage":{const t=n.href.substring(n.href.indexOf("?url=")+5);t&&(t.startsWith("mailto:")||t.startsWith("https://")||t.startsWith("http://")||t.startsWith("/")?window.location.href=t:window.location.href=window.location+t);break}}}catch{}break}case"changeMessageStep":{const t=n.gist.parameters.displaySettings,r=n.gist.parameters.messageStepName;ci.config.isPreviewSession&&r&&e.properties?.gist?.livePreview&&function(t,e){if(ln)return;an=t;const n=on.find(e=>e.stepName===t);n?sn={...n.displaySettings}:e&&(sn={...e}),Tn()}(r,t),(o.persistent||Re(e))&&await async function(t,e,n){const o=await Ve(t);if(!o)return;const r=a(o)||{},l={stepName:void 0!==e?e:r.stepName,displaySettings:void 0!==n?n:r.displaySettings},c=new Date;c.setDate(c.getDate()+30),s(o,l,c),i(`Saved message state for queueId: ${t}`)}(e.queueId??"",r,t),t&&st(e,t)&&(i("Display settings changed, reloading message"),await Yn(e),at(e,t),await Qn(e,r??null));break}case"routeChanged":e.currentRoute=n.gist.parameters.route,e.renderStartTime=(new Date).getTime(),Z(t,e),i(`Route changed to: ${e.currentRoute}`);break;case"sizeChanged":i(`Size Changed Width: ${n.gist.parameters.width} - Height: ${n.gist.parameters.height}`),"tooltip"===ot(e)?function(t,e){const n=t.instanceId??"",i=Tt(n),o=document.getElementById(i);if(o&&e.height>0){o.style.height=`${e.height}px`;const t=jt.get(n);t&&t.reposition()}}(e,n.gist.parameters):e.elementId&&!e.shouldResizeHeight||function(t,e){const n=P(t.elementId?t.elementId:Tt(t.instanceId??""));if(n){const i=n.style;if(e.height>0)if(e.height>window.innerHeight){const n=1-(e.height/window.innerHeight-1);t.shouldScale&&n>=.4?(i.height=`${e.height}px`,i.transform=`translateX(-50%) translateY(-50%) scale(${n})`):i.height=`${window.innerHeight}px`}else i.height=`${e.height}px`}}(e,n.gist.parameters);break;case"titleChanged":i(`Overlay title changed to: ${n.gist.parameters.title}`),function(t,e){const n=P(Tt(t));n&&(n.title=e)}(t,n.gist.parameters.title);break;case"eventDispatched":ci.events.dispatch("eventDispatched",{name:n.gist.parameters.name,payload:n.gist.parameters.payload});break;case"error":case"routeError":ci.messageError(e),"tooltip"===ot(e)?Un(e):ci.overlayInstanceId?await Hn(!1,e):Bn(e)}}}async function Qn(t,e){t.isDisplayChange=!0,t.renderStartTime=(new Date).getTime();const n=ot(t),o=t.elementId||null;if("tooltip"===n)return ci.overlayInstanceId===t.instanceId&&(ci.overlayInstanceId=null),t.shouldScale=!1,t.shouldResizeHeight=!1,void Vn(t,null,e);if(o){const e=Y(o);e&&e.instanceId!==t.instanceId&&(i(`Dismissing existing message at ${o} to make room for multi-step message`),await zn(e))}if(t.overlay){ci.overlayInstanceId=t.instanceId??null;const e=F(t);t.shouldScale=e.shouldScale,t.shouldResizeHeight=!0}else ci.overlayInstanceId=null,t.shouldScale=!1,t.shouldResizeHeight=!St(o??"");o&&V.includes(o)&&G(o),Vn(t,o,e)}async function Yn(t){"tooltip"===ot(t)?Lt(t):t.overlay?await kt():t.elementId&&xt(t.elementId)}async function Kn(t,e,n){n&&st(t,n)&&(await Yn(t),at(t,n)),await Qn(t,e??null)}async function Zn(t){i(`Logging user message view locally for: ${t.queueId}`),Ae(t)?await async function(t){i(`Marking broadcast ${t} as seen.`);const e=await qe();if(!e)return;const n=await Me(e,t);if(!n)return;const o=n.properties.gist.broadcast,{frequency:r}=o,l=We(e,t),c=ze(e,t),d=a(l)||0;if(s(l,d+1),1===r.count)s(c,!1),i(`Marked broadcast ${t} as seen.`);else{const e=new Date;e.setSeconds(e.getSeconds()+r.delay),s(c,!1,e),i(`Marked broadcast ${t} as seen, broadcast was seen ${d+1} times, next show date is ${e}.`)}}(t.queueId??""):await async function(t){const e=await He();if(!e)return;const n=a(e)??[];n.push(t),s(e,n)}(t.queueId??"")}async function ti(t){Ae(t)&&(i(`Logging broadcast dismissed locally for: ${t.queueId}`),await async function(t){i(`Marking broadcast ${t} as dismissed.`);const e=await qe();if(!e)return;const n=await Me(e,t);n&&(!0!==n.properties.gist.broadcast.frequency.ignoreDismiss?(s(ze(e,t),!1),i(`Marked broadcast ${t} as dismissed and will not show again.`)):i(`Broadcast ${t} is set to ignore dismiss.`))}(t.queueId??""),await Ge(t.queueId??""))}const ei=(t,e)=>t().then((t=>new Promise(e=>setTimeout(e,t)))(e).then(()=>ei(t,e)));let ni=!1,ii=null;async function oi(){ni?await si():Ce()?(i("Queue watcher started"),ni=!0,ei(()=>new Promise(()=>{!async function(){if(v.hasActiveSSEConnection())return!v.isSSEConnectionManagedBySDK()&&ii&&(i("Not the main instance, closing our SSE connection."),li()),void await si();ii&&(i("SSE connection not active, closing it."),li()),!v.useSSE()||Ie()?await ri():await async function(){li();const t=function(){const t=Ee();return null===t?(i("No user token available for SSE endpoint."),null):v.GIST_QUEUE_REALTIME_API_ENDPOINT[ci.config.env??"prod"]+`/api/v3/sse?userToken=${t}&siteId=${ci.config.siteId}&sessionId=${ve()}`}();if(null===t)return i("SSE endpoint not available, falling back to polling."),void await ri();i(`Starting SSE queue listener on ${t}`),ii=new EventSource(t),v.setActiveSSEConnection(),ii.addEventListener("connected",async t=>{try{i("SSE connection received"),v.setUseSSEFlag(!0);const e=JSON.parse(t.data);e.heartbeat&&(v.setSSEHeartbeat(e.heartbeat),i(`SSE heartbeat set to ${e.heartbeat} seconds`)),v.setActiveSSEConnection()}catch(t){i(`Failed to parse SSE settings: ${t}`)}r(be),await ri()}),ii.addEventListener("messages",async t=>{try{const e=JSON.parse(t.data);i("SSE message received"),await Oe(e),await De(e),await si()}catch(t){i(`Failed to parse SSE message: ${t}`),li()}}),ii.addEventListener("inbox_messages",async t=>{try{const e=JSON.parse(t.data);i("SSE inbox messages received"),await W(e)}catch(t){i(`Failed to parse SSE inbox messages: ${t}`)}}),ii.addEventListener("error",async()=>{i("SSE error received"),li()}),ii.addEventListener("heartbeat",async()=>{i("SSE heartbeat received"),v.setActiveSSEConnection(),v.setUseSSEFlag(!0)})}()}()}),1e3)):i("User token not setup, queue not started.")}async function si(){const t=await Ne(),e=await Be(),n=t.concat(e);i(`Messages in local queue: ${n.length}`);const o=n.sort((t,e)=>t.priority-e.priority);for(const t of o)await ai(t)}async function ai(t){let e=F(t);if(e.hasRouteRule){if(null==ci.currentRoute&&"loading"===document.readyState)return i(`Deferring message ${t.queueId}, page not fully loaded`),!1;if(!it(e.routeRule))return i(`Route ${new URL(window.location.href).pathname} (currentRoute: ${ci.currentRoute}) does not match rule: ${e.routeRule}`),!1}if(e.hasPosition&&(t.position=e.position),e.hasTooltipPosition&&(t.tooltipPosition=e.tooltipPosition),e.persistent||Re(t)){const n=await async function(t){const e=await Ve(t);return e?a(e):null}(t.queueId??"");n&&(i(`Restoring saved state for queueId ${t.queueId}`),n.displaySettings&&(at(t,n.displaySettings),e=F(t)),t.savedStepName=n.stepName??null)}if(e.persistent||Re(t)||!await async function(t){const e=await Fe(t);return!!e&&null!==a(e)}(t.queueId??"")){let n=null;return e.isEmbedded?!ci.config.isPreviewSession||!t.properties?.gist?.livePreview||P(e.elementId)||V.includes(e.elementId)?n=Wn(t,e.elementId):(i(`Preview: element "${e.elementId}" not found, showing as overlay so placement can be changed`),n=await qn(t)):n=await qn(t),n&&async function(t){const e=await Fe(t);e&&s(e,!0,new Date(Date.now()+5e3))}(t.queueId??""),null!==n}return i(`Not showing message with queueId ${t.queueId} because its already loading.`),!1}async function ri(){if(Ce())if(ci.isDocumentVisible)if(null===a(be)){const t=await async function(){if(fe)return;fe=!0;const t=Ce();let e;try{const t={"X-Gist-User-Anonymous":String(Ie()),"Content-Language":String(C())};e=await S().post(`/api/v4/users?sessionId=${ve()}`,{},{headers:t})}catch(t){const n=x(t);n?e=n:i(`Error getting user queue: ${t}`)}finally{fe=!1}return t!==Ce()?(i("User token changed, clearing queue next pull check."),void r(be)):(function(t){const e=t?.headers?.["x-gist-queue-polling-interval"];he=e&&Number(e)>0?Number(e):Math.min(2*he,600);const n=new Date((new Date).getTime()+1e3*he);s(be,he,n)}(e),function(t){const e="true"===t?.headers?.["x-cio-use-sse"]?.toLowerCase();v.setUseSSEFlag(e)}(e),await async function(t){const e=t?.headers?.["x-cio-inbox-enabled"]?.toLowerCase();if(void 0===e)return;const n="true"===e;v.setInboxEnabledFlag(n),n&&(i("Inbox enabled, ensuring branding and templates are cached."),await me(),ae())}(e),e)}();if(t){if(200===t.status||204===t.status){i("200 response, updating local store.");const e=t.data,n=e?.inAppMessages??[],o=e?.inboxMessages??[];Oe(n),De(n),W(o)}else 304===t.status&&i("304 response, using local store.");await si()}else i("No response object returned while checking message queue.")}else i("Next queue pull scheduled for later.");else i("Document not visible, skipping queue check.");else i("User token reset, skipping queue check.")}function li(t=!1){t&&v.removeActiveSSEConnection(),(t||v.isSSEConnectionManagedBySDK())&&v.setUseSSEFlag(!1),ii&&(i("Stopping SSE queue listener..."),ii.close(),ii=null)}class ci{static async setup(t){this.initialized?i("Gist SDK already initialized, skipping setup."):(this.initialized=!0,this.events=new n,this.config={useAnonymousSession:t.useAnonymousSession??!1,siteId:t.siteId,dataCenter:t.dataCenter,env:t.env??"prod",logging:t.logging??!1,experiments:t.experiments??!1,colorScheme:t.colorScheme??"default"},this.currentMessages=[],jt.forEach(t=>t.cleanup()),jt.clear(),document.querySelectorAll('[id^="gist-tooltip-"]').forEach(t=>{t.parentNode?.removeChild(t)}),this.overlayInstanceId=null,this.currentRoute=null,this.isDocumentVisible=!0,this.config.isPreviewSession=function(){const t=new URLSearchParams(window.location.search),e=t.get(Qe);if(e){sessionStorage.setItem(o,String(!1)),ci.setUserToken(e),i(`Preview mode enabled with user token: ${e}`),function(){if(document.getElementById(tn))return;N(Ze,Je);try{rn="true"===sessionStorage.getItem(Ke)}catch{rn=!1}const t=D("div",{id:tn});document.body.appendChild(t),Tn()}();const n=t.get(Ye);if(n)try{const t=JSON.parse(atob(n)),e=t.stepName||null,i=t.displayType||null;(e||i)&&function(t,e){hn=t,fn=e}(e,i)}catch{i("Preview bar: failed to parse cioPreviewSettings")}}return!l()}(),Pi(),function(){const t=c();for(let e=t.length-1;e>=0;e--){const n=t.key(e);n?.startsWith("gist.")&&d(n)}}(),async function(){v.inboxEnabled()&&(E()&&T()||(i("Inbox enabled but missing cached branding/templates, fetching."),await me()),ae())}(),"auto"===this.config.colorScheme&&vt(),i(`Setup complete on ${this.config.env} environment.`),this.config.isPreviewSession||!this.config.useAnonymousSession||new URLSearchParams(location.search).has("ajs_uid")||$e(),await oi(),"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",()=>{si()},{once:!0}),document.addEventListener("visibilitychange",async()=>{"hidden"===document.visibilityState?this.isDocumentVisible=!1:(this.isDocumentVisible=!0,await si())},!1))}static setupDebugOverlay(){Pi()}static async setCurrentRoute(t){this.currentRoute=t,i(`Current route set to: ${t}`),await async function(){if(0!==ci.currentMessages.length)for(const t of[...ci.currentMessages])null==document.querySelector(`#gist-${t.instanceId}`)&&(i(`Removing active message ${t.instanceId} that no longer exists after route change`),await _n(t))}(),await si(),this.events?.dispatch("routeChanged",t)}static async setUserToken(t,e){this.config.isPreviewSession||(function(t,e){void 0===e&&(e=new Date).setDate(e.getDate()+30),s(we,t,e),Ie()&&(r(be),r(xe)),i(`Set user token "${t}" with expiry date set to ${e}`)}(t,e),li(!0),await oi())}static setUserLocale(t){var e;s(I,e=t),i(`Set user locate to "${e}"`)}static setColorScheme(t){this.config.colorScheme=t,function(){const t=ci.config?.colorScheme;"auto"===t?vt():yt&&(yt.disconnect(),yt=null);const e=ft(t);bt=e,wt(e)}(),i(`Color scheme set to: ${t}`)}static setCustomAttribute(t,e){return function(t,e){return t&&"string"==typeof t?(Te.set(t,e),Pe(),i(`Set custom attribute "${t}" to "${e}"`),!0):(i(`Invalid key for custom attribute: ${t}`),!1)}(t,e)}static clearCustomAttributes(){Te.clear(),r(Le),i("Cleared all custom attributes")}static removeCustomAttribute(t){return function(t){if(!t||"string"!=typeof t)return i(`Invalid key for custom attribute: ${t}`),!1;const e=Te.has(t);return Te.delete(t),Te.size>0?Pe():r(Le),i(`Removed custom attribute "${t}"`),e}(t)}static async clearUserToken(){this.config.isPreviewSession||(je(),le(),this.config.useAnonymousSession&&$e(),li(!0),await oi())}static async dismissMessage(t){const e=J(t);e&&(await On(e),await ti(e),await zn(e),await si())}static async embedMessage(t,e){const n=Wn(t,e);return n?.instanceId??null}static async showMessage(t){const e=await qn(t);return e?.instanceId??null}static updateMessageDisplaySettings(t,e){const n=J(t);return!!n&&(n.displaySettings=e,$t(n),!0)}static messageShown(t){i(`Message shown: ${t.messageId}`),this.events.dispatch("messageShown",t)}static messageDismissed(t){null!==t&&(i(`Message dismissed: ${t.messageId}`),this.events.dispatch("messageDismissed",t))}static messageError(t){i(`Message error: ${t.messageId}`),this.events.dispatch("messageError",t)}static messageAction(t,e,n){i(`Message action: ${t.currentRoute}, ${e} with name ${n} on ${t.instanceId}`),this.events.dispatch("messageAction",{message:t,action:e,name:n})}static async getInboxUnopenedCount(){return(await z()).filter(t=>!t.opened).length}static async getInboxMessages(){return await z()}static async updateInboxMessageOpenState(t,e){return await _(t,e)}static async removeInboxMessage(t){return await O(t)}static isInboxEnabled(){return v.inboxEnabled()}}const di="\n #gist-debug-overlay {\n position: fixed; bottom: 16px; right: 16px;\n z-index: 99999999999;\n background: #08272B; color: white;\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 11px;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.3);\n width: 300px;\n max-height: min(700px, calc(100vh - 32px));\n display: flex;\n flex-direction: column;\n pointer-events: auto;\n overflow: hidden;\n }\n .gist-debug-header {\n display: flex; align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid rgba(255,255,255,0.1);\n flex-shrink: 0;\n }\n .gist-debug-title {\n flex: 1;\n font-weight: 700;\n font-size: 12px;\n letter-spacing: 0.02em;\n }\n #gist-debug-overlay-close {\n background: none; border: none;\n color: white; cursor: pointer;\n padding: 0; font-size: 18px; line-height: 1;\n opacity: 0.6; flex-shrink: 0;\n font-family: system-ui, -apple-system, sans-serif;\n -webkit-appearance: none; appearance: none;\n }\n #gist-debug-overlay-close:hover { opacity: 1; }\n .gist-debug-section {\n padding: 0 12px 8px;\n border-bottom: 1px solid rgba(255,255,255,0.07);\n overflow-y: auto;\n max-height: 180px;\n }\n .gist-debug-section:last-child { border-bottom: none; }\n .gist-debug-label {\n position: sticky;\n top: 0;\n z-index: 1;\n background: #08272B;\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: rgba(255,255,255,0.45);\n padding: 8px 0 5px;\n font-weight: 600;\n }\n .gist-debug-value {\n font-family: 'SF Mono', 'Monaco', 'Consolas', monospace;\n font-size: 11px;\n color: rgba(255,255,255,0.9);\n overflow-wrap: break-word;\n }\n .gist-debug-msg {\n background: rgba(255,255,255,0.06);\n border-radius: 4px;\n padding: 5px 7px;\n margin-bottom: 8px;\n }\n .gist-debug-msg:last-child { margin-bottom: 0; }\n .gist-debug-msg-row {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 2px;\n }\n .gist-debug-msg-row:last-child { margin-bottom: 0; }\n .gist-debug-msg-meta {\n display: flex;\n align-items: center;\n gap: 5px;\n margin-bottom: 4px;\n }\n .gist-debug-msg-state {\n font-size: 9px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n border-radius: 3px;\n padding: 1px 4px;\n flex-shrink: 0;\n }\n .gist-debug-msg-state--active {\n color: #4caf82;\n background: rgba(76,175,130,0.12);\n }\n .gist-debug-msg-state--queued {\n color: rgba(255,200,100,0.9);\n background: rgba(255,200,100,0.1);\n }\n .gist-debug-msg-dismiss {\n margin-left: auto;\n background: none;\n border: none;\n color: rgba(255,255,255,0.3);\n cursor: pointer;\n padding: 0;\n font-size: 13px;\n line-height: 1;\n font-family: system-ui, -apple-system, sans-serif;\n -webkit-appearance: none;\n appearance: none;\n }\n .gist-debug-msg-dismiss:hover { color: rgba(255,255,255,0.7); }\n .gist-debug-element-found {\n color: #4caf82;\n font-size: 9px;\n font-weight: 700;\n flex-shrink: 0;\n }\n .gist-debug-route-mismatch {\n color: #ff6b6b;\n font-size: 9px;\n font-weight: 700;\n flex-shrink: 0;\n }\n .gist-debug-msg-type {\n font-size: 9px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: rgba(255,255,255,0.45);\n background: rgba(255,255,255,0.08);\n border-radius: 3px;\n padding: 1px 4px;\n flex-shrink: 0;\n }\n .gist-debug-msg-key {\n color: rgba(255,255,255,0.45);\n font-size: 10px;\n line-height: 1.4;\n min-width: 64px;\n flex-shrink: 0;\n }\n .gist-debug-msg-val {\n font-family: 'SF Mono', 'Monaco', 'Consolas', monospace;\n font-size: 10px;\n line-height: 1.4;\n color: rgba(255,255,255,0.9);\n overflow-wrap: break-word;\n }\n .gist-debug-val-error {\n color: #ff6b6b;\n font-weight: 600;\n }\n .gist-debug-expand-detail {\n background: rgba(255,107,107,0.08);\n border-left: 2px solid rgba(255,107,107,0.4);\n color: rgba(255,255,255,0.75);\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 10px;\n padding: 4px 6px;\n margin-top: 4px;\n margin-bottom: 6px;\n border-radius: 0 3px 3px 0;\n }\n .gist-debug-expand-list {\n margin: 0;\n padding: 0 0 0 14px;\n list-style: disc;\n }\n .gist-debug-expand-list li {\n margin-bottom: 3px;\n line-height: 1.4;\n }\n .gist-debug-expand-list li:last-child { margin-bottom: 0; }\n .gist-debug-msg-details {\n margin: 5px 0 0;\n padding: 0 0 0 14px;\n list-style: disc;\n color: rgba(255,255,255,0.5);\n font-size: 10px;\n line-height: 1.4;\n font-family: system-ui, -apple-system, sans-serif;\n }\n .gist-debug-msg-details li { margin-bottom: 2px; }\n .gist-debug-msg-details li:last-child { margin-bottom: 0; }\n",ui="gist-debug-overlay-styles",pi=2e3,gi=5e3;let mi=null,hi=!1,fi=!1,bi=null;function yi(t){const e=t.properties?.gist;return ot(e?{...t,tooltipPosition:e.tooltipPosition??t.tooltipPosition,elementId:null!=e.elementId?String(e.elementId):t.elementId}:t)}function vi(t,e,n=!1){const i=D("div",{className:"gist-debug-msg-row"});return i.appendChild(D("span",{className:"gist-debug-msg-key",textContent:t})),i.appendChild(D("span",{className:n?"gist-debug-msg-val gist-debug-val-error":"gist-debug-msg-val",textContent:e})),i}function wi(t,e,n=!1){t.replaceChildren(...e.map(([t,e])=>vi(t,e,n)))}function xi(t,e){const n=D("div",{className:"gist-debug-msg"}),i=D("div",{className:"gist-debug-msg-meta"});if(i.appendChild(D("span",{className:"gist-debug-msg-type",textContent:yi(t)})),i.appendChild(D("span",{className:`gist-debug-msg-state gist-debug-msg-state--${e}`,textContent:e})),t.instanceId){const e=D("button",{className:"gist-debug-msg-dismiss",textContent:"×"});e.addEventListener("click",()=>{Ci(),ci.dismissMessage(t.instanceId).then(()=>{Ci(),$i()})}),i.appendChild(e)}n.appendChild(i);const o=[];for(const[e,i]of function(t){const e=t.properties?.gist,n=[];e?.routeRuleWeb&&n.push(["Route Rule",String(e.routeRuleWeb)]);const i=e?.elementId??t.elementId,o=yi(t);if(i&&"overlay"===o){const t=function(t){if(t)return et[t]}(String(i));t&&n.push(["Position",t.replace(/([A-Z])/g," $1").toLowerCase()])}else i&&"modal"!==o&&n.push(["Target",String(i)]);const s=e?.position??t.position;s&&"overlay"!==o&&n.push(["Position",String(s)]);const a=e?.tooltipPosition??t.tooltipPosition;return a&&n.push(["Tooltip",String(a)]),n}(t)){let t=null,s=null;if("Route Rule"===e){const e=!it(i);t=e?"gist-debug-route-mismatch":"gist-debug-element-found",s=e?"✕":"✓",e&&o.push("Route rule does not match current route. If it should, verify the route is set correctly and that analytics.page() is called on route changes.")}else if("Target"===e){const e=!!P(i);t=e?"gist-debug-element-found":"gist-debug-route-mismatch",s=e?"✓":"✕",e||o.push("Target element not found on the page. If it should, verify the selector is correct.")}const a=vi(e,i);t&&s&&a.appendChild(D("span",{className:t,textContent:s})),n.appendChild(a)}if(o.length>0){const t=D("ul",{className:"gist-debug-msg-details"});for(const e of o)t.appendChild(D("li",{textContent:e}));n.appendChild(t)}return n}function Si(t){const e=D("div",{className:"gist-debug-expand-detail"}),n=D("ul",{className:"gist-debug-expand-list"});return n.appendChild(D("li",{textContent:t})),e.appendChild(n),e}function Ii(){mi&&(mi.root.remove(),document.getElementById(ui)?.remove(),null!==bi&&(clearInterval(bi),bi=null),hi&&(ci.events&&(ci.events.off("messageShown",ki),ci.events.off("messageDismissed",ki),ci.events.off("messageInboxUpdated",Ei),ci.events.off("routeChanged",ki)),hi=!1),mi=null)}function Ci(){if(!mi)return;ci.config?wi(mi.configRows,[["Site ID",ci.config.siteId],["Connection",v.useSSE()?"SSE":`Polling ${he}s`]]):wi(mi.configRows,[["Status","NOT INITIALIZED"]],!0),mi.configDetail.style.display=ci.config?"none":"";const t=Ce();t?Ie()?mi.userValue.textContent="(anonymous)":mi.userValue.textContent=t.length>32?`${t.slice(0,32)}…`:t:mi.userValue.textContent="(none)";const e=ci.currentRoute;mi.routeValue.replaceChildren(D("span",{className:e?"gist-debug-msg-val":"gist-debug-msg-val gist-debug-val-error",textContent:e??"NONE"})),mi.routeDetail.style.display=e?"none":""}async function $i(){if(!fi&&mi){fi=!0;try{const t=ci.currentMessages??[],[e,n]=ci.config?await Promise.all([Be(),Ne()]):[[],[]],i=new Set(t.map(t=>t.queueId??t.messageId)),o=new Set,s=[...n,...e].filter(t=>{const e=t.queueId??t.messageId;return!i.has(e)&&!o.has(e)&&(o.add(e),!0)});if(!mi)return;const a=t.length+s.length;mi.messagesLabel.textContent=`Messages (${a})`,mi.messagesList.replaceChildren(...t.map(t=>xi(t,"active")),...s.map(t=>xi(t,"queued")))}finally{fi=!1}}}function ki(){Ci(),$i()}function Ei(){$i()}async function ji(){hi||(!hi&&ci.events&&(ci.events.on("messageShown",ki),ci.events.on("messageDismissed",ki),ci.events.on("messageInboxUpdated",Ei),ci.events.on("routeChanged",ki),hi=!0),hi&&Li(gi)),Ci(),await $i()}function Li(t){null!==bi&&clearInterval(bi),bi=setInterval(()=>{ji()},t)}const Ti="cio_debug_session";function Pi(){if("undefined"!=typeof window&&"true"===new URLSearchParams(window.location.search).get(Ti))try{mi||null!==bi||(N(ui,di),mi=function(){const t=D("div",{id:"gist-debug-overlay"}),e=D("div",{className:"gist-debug-header"});e.appendChild(D("span",{className:"gist-debug-title",textContent:"Customer.io In-App SDK Debugger"}));const n=D("button",{id:"gist-debug-overlay-close",ariaLabel:"Dismiss debug overlay",textContent:"×"});n.addEventListener("click",Ii),e.appendChild(n),t.appendChild(e);const i=D("div",{className:"gist-debug-section"}),o=D("div",{className:"gist-debug-label"});o.appendChild(D("span",{textContent:"Config"})),i.appendChild(o);const s=D("div",{});i.appendChild(s);const a=Si("Verify your site ID and credentials are correct.");i.appendChild(a),t.appendChild(i);const r=D("div",{className:"gist-debug-section"}),l=D("div",{className:"gist-debug-label",textContent:"User"});r.appendChild(l);const c=D("div",{className:"gist-debug-value"});r.appendChild(c),t.appendChild(r);const d=D("div",{className:"gist-debug-section"}),u=D("div",{className:"gist-debug-label"});u.appendChild(D("span",{textContent:"Route"})),d.appendChild(u);const p=D("div",{className:"gist-debug-value"});d.appendChild(p);const g=Si("The current route is used to match against potential message page rules.");d.appendChild(g),t.appendChild(d);const m=D("div",{className:"gist-debug-section"}),h=D("div",{className:"gist-debug-label"});m.appendChild(h);const f=D("div",{});return m.appendChild(f),t.appendChild(m),{root:t,configRows:s,configDetail:a,userValue:c,routeValue:p,routeDetail:g,messagesLabel:h,messagesList:f}}(),M(mi.root),Li(pi),ji())}catch(t){i(`Failed to initialize debug overlay: ${t}`)}}return"undefined"!=typeof window&&Pi(),e.default})());
|
package/dist/types/gist.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import EventEmitter from './utilities/event-emitter';
|
|
2
|
-
import type { GistConfig, GistMessage, DisplaySettings } from './types';
|
|
2
|
+
import type { GistConfig, GistMessage, DisplaySettings, ColorScheme } from './types';
|
|
3
3
|
import type { InboxMessage } from './managers/inbox-message-manager';
|
|
4
4
|
export default class Gist {
|
|
5
5
|
static events: EventEmitter;
|
|
@@ -14,6 +14,7 @@ export default class Gist {
|
|
|
14
14
|
static setCurrentRoute(route: string): Promise<void>;
|
|
15
15
|
static setUserToken(userToken: string, expiryDate?: Date): Promise<void>;
|
|
16
16
|
static setUserLocale(userLocale: string): void;
|
|
17
|
+
static setColorScheme(colorScheme: ColorScheme): void;
|
|
17
18
|
static setCustomAttribute(key: string, value: unknown): boolean;
|
|
18
19
|
static clearCustomAttributes(): void;
|
|
19
20
|
static removeCustomAttribute(key: string): boolean;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { default } from './gist';
|
|
2
|
-
export type { GistConfig, GistEnv, GistMessage, DisplaySettings, MessageProperties } from './types';
|
|
2
|
+
export type { ColorScheme, GistConfig, GistEnv, GistMessage, DisplaySettings, MessageProperties, } from './types';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const INBOX_CSS = "\n#gist-inbox-button {\n position: fixed;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 9998;\n border: none;\n transition: background-color 0.2s ease,\n box-shadow 0.2s ease,\n transform 0.15s ease;\n}\n#gist-inbox-button:hover {\n transform: scale(1.05);\n}\n#gist-inbox-button:active {\n transform: scale(0.93);\n}\n#gist-inbox-button svg {\n width: 24px;\n height: 24px;\n}\n#gist-inbox-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 20px;\n height: 20px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n box-sizing: border-box;\n}\n#gist-inbox-panel {\n position: fixed;\n width: 400px;\n max-height: 600px;\n z-index: 9999;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n user-select: none;\n -webkit-user-select: none;\n transform: translateY(8px) scale(0.96);\n opacity: 0;\n pointer-events: none;\n transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1),\n opacity 0.2s ease;\n}\n#gist-inbox-panel.gist-inbox-panel--open {\n transform: translateY(0) scale(1);\n opacity: 1;\n pointer-events: auto;\n}\n#gist-inbox-messages {\n overflow-y: auto;\n flex: 1;\n}\n.gist-inbox-message-row {\n transition: background-color 0.15s ease;\n}\n";
|
|
1
|
+
export declare const INBOX_CSS = "\n#gist-inbox-button {\n position: fixed;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 9998;\n border: none;\n transition: background-color 0.2s ease,\n box-shadow 0.2s ease,\n transform 0.15s ease;\n}\n#gist-inbox-button:hover {\n transform: scale(1.05);\n}\n#gist-inbox-button:active {\n transform: scale(0.93);\n}\n#gist-inbox-button svg {\n width: 24px;\n height: 24px;\n}\n#gist-inbox-button svg [fill]:not([fill=\"none\"]) {\n fill: currentColor;\n}\n#gist-inbox-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 20px;\n height: 20px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n box-sizing: border-box;\n}\n#gist-inbox-panel {\n position: fixed;\n width: 400px;\n max-height: 600px;\n z-index: 9999;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n user-select: none;\n -webkit-user-select: none;\n transform: translateY(8px) scale(0.96);\n opacity: 0;\n pointer-events: none;\n transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1),\n opacity 0.2s ease;\n}\n#gist-inbox-panel.gist-inbox-panel--open {\n transform: translateY(0) scale(1);\n opacity: 1;\n pointer-events: auto;\n}\n#gist-inbox-messages {\n overflow-y: auto;\n flex: 1;\n}\n.gist-inbox-message-row {\n transition: background-color 0.15s ease;\n}\n@media (max-width: 424px) {\n #gist-inbox-panel {\n width: auto !important;\n left: 12px !important;\n right: 12px !important;\n }\n}\n";
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type { GistMessage } from '../types';
|
|
1
|
+
import type { GistMessage, ColorScheme } from '../types';
|
|
2
|
+
export declare function resolveRendererColorScheme(colorScheme: ColorScheme | undefined): 'light' | 'dark' | undefined;
|
|
3
|
+
export declare function applyColorSchemeChange(): void;
|
|
4
|
+
export declare function startColorSchemeObserver(): void;
|
|
2
5
|
interface MessageOptions {
|
|
3
6
|
endpoint: string;
|
|
4
7
|
siteId: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { ResolvedMessageProperties } from '../types';
|
|
2
|
-
export declare function embedHTMLTemplate(elementId: string, messageProperties: ResolvedMessageProperties, url: string): string;
|
|
2
|
+
export declare function embedHTMLTemplate(elementId: string, messageProperties: ResolvedMessageProperties, url: string, colorSchemeCss?: string): string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { ResolvedMessageProperties } from '../types';
|
|
2
|
-
export declare function messageHTMLTemplate(elementId: string, messageProperties: ResolvedMessageProperties, url: string): string;
|
|
2
|
+
export declare function messageHTMLTemplate(elementId: string, messageProperties: ResolvedMessageProperties, url: string, colorSchemeCss?: string): string;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { ResolvedMessageProperties } from '../types';
|
|
2
2
|
export declare const ARROW_SIZE = 10;
|
|
3
|
-
export declare function tooltipHTMLTemplate(elementId: string, messageProperties: ResolvedMessageProperties, url: string, wrapperId?: string): string;
|
|
3
|
+
export declare function tooltipHTMLTemplate(elementId: string, messageProperties: ResolvedMessageProperties, url: string, wrapperId?: string, colorSchemeCss?: string): string;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type GistEnv = 'prod' | 'dev' | 'local';
|
|
2
|
+
export type ColorScheme = 'default' | 'auto' | 'system';
|
|
2
3
|
export interface GistConfig {
|
|
3
4
|
siteId: string;
|
|
4
5
|
dataCenter?: string;
|
|
@@ -7,6 +8,7 @@ export interface GistConfig {
|
|
|
7
8
|
experiments?: boolean;
|
|
8
9
|
useAnonymousSession?: boolean;
|
|
9
10
|
isPreviewSession?: boolean;
|
|
11
|
+
colorScheme?: ColorScheme;
|
|
10
12
|
}
|
|
11
13
|
export interface GistMessage {
|
|
12
14
|
messageId: string;
|
|
@@ -93,10 +95,18 @@ export interface InboxPattern {
|
|
|
93
95
|
hoverBackground: string;
|
|
94
96
|
unreadIndicator: InboxUnreadIndicator;
|
|
95
97
|
}
|
|
98
|
+
export type DeepPartial<T> = {
|
|
99
|
+
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
100
|
+
};
|
|
96
101
|
export interface Branding {
|
|
97
102
|
theme: unknown;
|
|
98
103
|
patterns: {
|
|
99
104
|
inbox: InboxPattern;
|
|
105
|
+
modes?: {
|
|
106
|
+
dark?: {
|
|
107
|
+
inbox?: DeepPartial<InboxPattern>;
|
|
108
|
+
};
|
|
109
|
+
};
|
|
100
110
|
};
|
|
101
111
|
}
|
|
102
112
|
export interface ResolvedMessageProperties {
|