@telia-ace/widget-site 1.1.123-rc.9 → 1.1.123
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/index.js +11 -9
- package/index.mjs +133 -131
- package/index.umd.js +10 -8
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class T{constructor(t){this._api=t,this._bootstrapped=!1,this._widgetAPIHandlers=new Map,window.ace=window.ace||{_c:[],_w:[],widget:function(i
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class T{constructor(t){this._api=t,this._bootstrapped=!1,this._widgetAPIHandlers=new Map,window.ace=window.ace||{_c:[],_w:[],widget:function(e,i){window.ace._w.push([e,i])},configure:function(e){window.ace._c.push(e)}}}bootstrap(){this._bootstrap()}_bootstrap(){const t=globalThis.ace;globalThis.ace=this,this._bootstrapped=!0,((t==null?void 0:t._w)||[]).forEach(([e,i])=>{this.widget(e,i)}),((t==null?void 0:t._c)||[]).forEach(e=>{this.configure(e)})}executePreloadedHandlers(t){(this._widgetAPIHandlers.get(t)||[]).forEach(i=>{i()}),this._widgetAPIHandlers.set(t,[])}configure(t){if(!this._bootstrapped)throw new Error("ace environment not bootstrapped");t(this._api)}version(){return this._api.version()}widget(t,e){const i=Object.values(this._api.getWidgets()).find(s=>{var r;return((r=s.widget)==null?void 0:r.name)===t});if(!i){const s=this._widgetAPIHandlers.get(t)||[];s.push(()=>{const r=Object.values(this._api.getWidgets()).find(a=>{var d;return((d=a.widget)==null?void 0:d.name)===t});e(r==null?void 0:r.api)}),this._widgetAPIHandlers.set(t,s);return}e(i.api)}}const $="##__SITES_VERSION__##";class z{constructor(t){this._site=t}storagePolicy(t){Object.entries(this._site._widgets).forEach(([e,i])=>{i.dispatch("set-storage-policies",{policies:t})})}disallowStorageKey(t){Object.entries(this._site._widgets).forEach(([e,i])=>{i.dispatch("disallow-storage-key",{storageKey:t})})}getWidgets(){return this._site._widgets}version(){const t=$;return{widgets:this._site.getWidgetsVersions(),sites:t}}}class M{constructor(t,e){this.triggerType=t,this.condition=e,this.triggerType=t,this.condition=e}shouldActivate(t){if(this.triggerType!=="visit"||this.condition.type!=="url")return[];const e=[];return this.condition.outputs.filter(i=>i.action.type==="render_widget"&&B(i.value,t)).forEach(i=>{let s={widgetId:""};try{s=JSON.parse(i.action.data)}catch{s={widgetId:""}}e.push(s.widgetId)}),e}}const B=(n,t)=>{if(n==="*"||n==="/*"||n===t)return!0;if(n.endsWith("/*")){const s=n.slice(0,-2);return t.startsWith(s)}return!1},W=(n,t)=>{const e=s=>`ace_${n.substring(0,7)}-${s}`;return Object.entries(t).reduce((s,[r,a])=>{const[d,c]=r.split("-");if(e(c)!=r)return s;try{const o=JSON.parse(a);s[c]=o.value}catch{return s}return s},{})},u="https://widgets.ace.teliacompany.net/v1",U="https://embed.webprovisions.io",H=()=>{if(typeof window<"u"){const n=history.pushState,t=history.replaceState;history.pushState=function(...e){n.apply(history,e),window.dispatchEvent(new Event("locationchange"))},history.replaceState=function(...e){t.apply(history,e),window.dispatchEvent(new Event("locationchange"))}}};class y extends HTMLElement{constructor(){var t;super(),this._site=null,this._widgets={},this._loadedVersions={},this._path=((t=window==null?void 0:window.location)==null?void 0:t.pathname)||"",this._api=new z(this),this._environment=new T(this._api),this.routeChangeListener=()=>{this._path=window.location.pathname,this.render()},this.shadow=this.attachShadow({mode:"open"})}static get observedAttributes(){return["siteid","apiurl","embedurl"]}get siteId(){return this.getAttribute("siteid")||""}set siteId(t){this.setAttribute("siteid",t)}get apiUrl(){return this.getAttribute("apiurl")||u}set apiUrl(t){this.setAttribute("apiurl",t)}get embedUrl(){return this.getAttribute("embedurl")||U}set embedUrl(t){this.setAttribute("embedurl",t)}async connectedCallback(){H(),await this._loadSite(),this.render(),this._environment.bootstrap(),window.addEventListener("locationchange",this.routeChangeListener),window.addEventListener("message",t=>{var s;const{type:e,data:i}=t.data;if(e==="widget-minimize")this._widgets[i.widgetId].toggleExpand();else if(e==="widget-activated"){this._widgets[i.widgetId].executeMessageQueue();const r=this._widgets[i.widgetId];r&&(this._loadedVersions[i.widgetId]=i.version,this._environment.executePreloadedHandlers(((s=r.widget)==null?void 0:s.name)||""));try{const a=JSON.parse(i.storage),d=W(i.widgetId,a);typeof d.open=="boolean"&&(r.disableAnimations(),r.toggleExpand(d.open),setTimeout(()=>{r.enableAnimations()},600))}catch{console.warn("unable to parse widget storage")}}})}disconnectedCallback(){window.removeEventListener("locationchange",this.routeChangeListener)}attributeChangedCallback(t,e,i){this.render()}async _loadSite(){var s;const e=await(await fetch(`${this.apiUrl}/site/${this.siteId}`)).json(),i=location.hostname;if(!((e==null?void 0:e.hosts)||[]).includes(i)){console.warn(`the host "${i}" needs to be configured as an allowed host in order to install widgets.`);return}this._site=e,this._site&&(this._site.triggers=this._site.triggers.map(r=>new M(r.triggerType,r.condition))),(((s=this._site)==null?void 0:s.widgets)||[]).forEach(async r=>{this.addWidgetEl(r.id)})}addWidgetEl(t){const e=`ace-widget_${t}`;let i=document.getElementById(e);i||(i=document.createElement("ace-widget"),i.id=e,i.widgetId=t,this.apiUrl!==u&&(i.apiUrl=this.apiUrl),document.body.appendChild(i)),this._widgets={...this._widgets,[t]:i}}getWidgetsVersions(){return this._loadedVersions}render(){if(!this._site){this.shadow.innerHTML="";return}const t=O(this._site);for(const[e,i]of Object.entries(this._widgets)){const s=t.find(r=>r.id===e);s&&!i.isActivated()?i.activate():!s&&i.isActivated()&&i.deactivate()}this.shadow.innerHTML=""}}window.customElements.get("ace-site")||window.customElements.define("ace-site",y);const O=n=>{const t=window.location.pathname;return n.triggers.reduce((i,s)=>(s.shouldActivate(t).forEach(a=>{const d=i.find(o=>o.id===a),c=((n==null?void 0:n.widgets)||[]).find(o=>o.id===a);!d&&c&&i.push({id:a})}),i),[])},g=(n,t,e)=>{n&&e.style.setProperty(t,n)},P=(n,t)=>{var e,i,s,r,a,d,c,o,l;g((e=n.colors)==null?void 0:e.primaryBackground,"--primary-background",t),g((i=n.colors)==null?void 0:i.textOnPrimaryBackground,"--text-on-primary-background",t),g((s=n.colors)==null?void 0:s.secondaryBackground,"--secondary-background",t),g((r=n.colors)==null?void 0:r.textOnSecondaryBackground,"--text-on-secondary-background",t),g((a=n.colors)==null?void 0:a.interactiveDestructiveBackground,"--destructive-color",t),g((d=n.colors)==null?void 0:d.interactiveTextOnDestructiveBackground,"--text-on-destructive-color",t),g((c=n.colors)==null?void 0:c.interactivePrimaryBackground,"--interactive-primary-background",t),g((o=n.colors)==null?void 0:o.interactiveTextOnPrimaryBackground,"--interactive-text-on-primary-background",t),g((l=n.colors)==null?void 0:l.focusColor,"--focus-color",t)},j=(n={})=>{const{content:t="",title:e,attributes:i=[]}=n;let s="";const r=[{name:"xmlns",value:"http://www.w3.org/2000/svg"},{name:"fill",value:"currentColor"},...i];return e&&(s=`<title>${e}</title>`),`<svg ${r.map(d=>`${d.name}="${d.value}"`).join(" ")}>${s}${t}</svg>`},_=document.createElement("template");_.innerHTML=`<span
|
|
2
2
|
class="ace-icon__container"
|
|
3
3
|
></span>`;const x=document.createElement("template");var f;const p=(f=document.querySelector("script[nonce]"))==null?void 0:f.getAttribute("nonce");x.innerHTML=`<style ${p?`nonce="${p}"`:""}>
|
|
4
4
|
:host {
|
|
@@ -34,7 +34,7 @@ svg {
|
|
|
34
34
|
min-width: var(--size-lg);
|
|
35
35
|
width: var(--size-lg);
|
|
36
36
|
}
|
|
37
|
-
</style>`;class E extends HTMLElement{get svg(){return this.getAttribute("svg")||""}set svg(t){this.setAttribute("svg",t)}get size(){return this.getAttribute("size")||""}set size(t){this.setAttribute("size",t),this.classList.remove("ace-icon--sm","ace-icon--md","ace--icon-lg"),this.classList.add(`ace-icon--${t}`)}static get observedAttributes(){return["svg","size"]}constructor(){super(),this.shadow=this.attachShadow({mode:"open"}),this.shadow.appendChild(x.content.cloneNode(!0)),this.shadow.appendChild(_.content.cloneNode(!0))}attributeChangedCallback(t,i
|
|
37
|
+
</style>`;class E extends HTMLElement{get svg(){return this.getAttribute("svg")||""}set svg(t){this.setAttribute("svg",t)}get size(){return this.getAttribute("size")||""}set size(t){this.setAttribute("size",t),this.classList.remove("ace-icon--sm","ace-icon--md","ace--icon-lg"),this.classList.add(`ace-icon--${t}`)}static get observedAttributes(){return["svg","size"]}constructor(){super(),this.shadow=this.attachShadow({mode:"open"}),this.shadow.appendChild(x.content.cloneNode(!0)),this.shadow.appendChild(_.content.cloneNode(!0))}attributeChangedCallback(t,e,i){this.render()}render(){var e;const t=(e=this.shadowRoot)==null?void 0:e.querySelector(".ace-icon__container");if(t){const i=j({content:this.svg,attributes:[{name:"viewBox",value:"0 0 64 64"}],title:void 0});t.innerHTML=i}}}window.customElements.get("ace-icon")||window.customElements.define("ace-icon",E);const V={name:"question",svg:'<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M32 4C16.536 4 4 16.536 4 32C4 47.464 16.536 60 32 60C47.464 60 60 47.464 60 32C59.9827 16.5432 47.4568 4.01731 32 4ZM32 55.6923C18.9151 55.6923 8.30769 45.0849 8.30769 32C8.30769 18.9151 18.9151 8.30769 32 8.30769C45.0849 8.30769 55.6923 18.9151 55.6923 32C55.6775 45.0788 45.0788 55.6775 32 55.6923Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M31.9423 37.5723L36.311 32.9068L36.7354 32.4448C39.7555 29.1161 40.7645 27.0647 40.7645 24.5087C40.7645 23.1091 40.4251 21.7942 39.7041 20.6491C38.3044 18.3587 35.6323 16.9166 32.2816 16.9166C28.7565 16.9166 25.3125 18.7414 23.2581 21.6772L23.1201 21.8791C22.8232 22.3032 22.696 22.6849 22.696 22.9818C22.696 23.7029 23.926 25.9932 25.2833 25.9932C25.5378 25.9932 25.7922 25.9084 26.0467 25.7388C26.2588 25.5691 26.5981 25.2298 27.0647 24.7208C28.8885 22.6849 30.1185 21.9215 31.7726 21.9215C33.6813 21.9215 35.081 23.1939 35.081 24.8905C35.081 26.375 34.2751 27.7746 32.3664 29.8529L28.2523 34.2216C27.9554 34.6033 27.7857 34.9426 27.7857 35.282C27.7857 35.6213 27.9978 36.1726 28.4219 36.8937C29.0581 37.8692 29.7368 38.3782 30.4578 38.3782C30.9244 38.3782 31.3909 38.1237 31.9423 37.5723ZM30.882 47.4972C29.2278 47.4972 27.6585 44.7403 27.6585 43.6799C27.6585 42.1954 30.0761 40.6261 32.4089 40.6261C33.6389 40.6261 34.2751 41.1775 34.2751 42.3227C34.2751 44.0616 33.4692 45.843 32.4513 46.7761C31.9423 47.2427 31.4334 47.4972 30.882 47.4972Z"/></svg>'},C=document.createElement("template");var b;const m=(b=document.querySelector("script[nonce]"))==null?void 0:b.getAttribute("nonce");C.innerHTML=`<style ${m?`nonce="${m}"`:""}>
|
|
38
38
|
:host {
|
|
39
39
|
position: fixed;
|
|
40
40
|
display: flex;
|
|
@@ -60,7 +60,7 @@ svg {
|
|
|
60
60
|
bottom: 20px;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
:host(.hidden) {
|
|
63
|
+
:host(.ace-hidden) {
|
|
64
64
|
display: none;
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -179,7 +179,7 @@ svg {
|
|
|
179
179
|
box-sizing: border-box;
|
|
180
180
|
transition: transform 200ms ease-out;
|
|
181
181
|
}
|
|
182
|
-
</style>`;const
|
|
182
|
+
</style>`;const A=document.createElement("template");A.innerHTML=`<div class="trigger-container">
|
|
183
183
|
<button id="trigger-btn" class="trigger">
|
|
184
184
|
<span class="trigger-close">
|
|
185
185
|
<svg
|
|
@@ -209,7 +209,7 @@ svg {
|
|
|
209
209
|
</svg>
|
|
210
210
|
</span>
|
|
211
211
|
</button>
|
|
212
|
-
</div>`;class
|
|
212
|
+
</div>`;class L extends HTMLElement{constructor(){super(),this.widget=null,this.loaded=!1,this.active=!1,this._onClicked=()=>{this.active=!this.active;const t={detail:{widgetId:this.widgetId},bubbles:!0,composed:!0};this.dispatchEvent(new CustomEvent("toggle",t)),this.render()},this.shadow=this.attachShadow({mode:"open"}),this.shadow.appendChild(C.content.cloneNode(!0)),this.shadow.appendChild(A.content.cloneNode(!0))}static get observedAttributes(){return["widgetid","apiurl"]}get widgetId(){return this.getAttribute("widgetid")||""}set widgetId(t){this.setAttribute("widgetid",t)}get apiUrl(){return this.getAttribute("apiurl")||""}set apiUrl(t){this.setAttribute("apiurl",t)}async connectedCallback(){this.widget=await this._loadWidget(this.widgetId),this.icon=await this._renderSymbol(),this.loaded=!0,this.render()}attributeChangedCallback(t,e,i){this.render()}setActive(t){this.active=t,this.render()}_applyBranding(){var t,e;(e=(t=this.widget)==null?void 0:t.configuration)!=null&&e.branding&&P(this.widget.configuration.branding,this)}async _loadWidget(t){const i=await(await fetch(`${this.apiUrl}/widget/${t}`)).json(),s=JSON.parse(i.configuration);return{...i,configuration:s}}async _renderSymbol(){var a,d,c;const t=(d=(a=this.widget)==null?void 0:a.configuration)==null?void 0:d.branding,e=(c=t==null?void 0:t.graphics)==null?void 0:c.trigger;if(e){const o=document.createElement("img");return o.src=e,o.classList.add("trigger-icon"),o.alt="",o}const i={type:"Telia"},s=async o=>V,{type:r}=i;switch(r){case"Telia":{const o=await s();if(o){const l=document.createElement("ace-icon");return l.classList.add("trigger-icon"),l.svg=o.svg,l.size="lg",l}return null}default:return null}}toggle(){this._onClicked()}hide(){this.classList.add("ace-hidden")}show(){this.classList.remove("ace-hidden")}_renderButtonLabel(){var s,r,a,d,c,o,l,h;if(!(((d=(a=(r=(s=this.widget)==null?void 0:s.configuration)==null?void 0:r.branding)==null?void 0:a.other)==null?void 0:d.showButtonLabel)||!1))return null;const e=((h=(l=(o=(c=this.widget)==null?void 0:c.configuration)==null?void 0:o.branding)==null?void 0:l.other)==null?void 0:h.buttonLabelText)||"Widget trigger",i=document.createElement("button");return i.setAttribute("type","button"),i.setAttribute("aria-label",e),i.classList.add("trigger-label"),i.addEventListener("click",this._onClicked),i.innerHTML=e,i}render(){var s,r,a,d,c,o,l;this._applyBranding(),this.classList.add("bottom-right"),this.classList.toggle("active",this.active);const t=(s=this.shadowRoot)==null?void 0:s.querySelector(".trigger-container"),e=this._renderButtonLabel();(r=t==null?void 0:t.querySelector(".trigger-label"))==null||r.remove(),t&&e&&t.prepend(e);const i=(a=this.shadowRoot)==null?void 0:a.querySelector("#trigger-btn");if(i){const h=((l=(o=(c=(d=this.widget)==null?void 0:d.configuration)==null?void 0:c.branding)==null?void 0:o.other)==null?void 0:l.buttonLabelText)||"Widget trigger";i.classList.toggle("active",this.active),i.classList.toggle("rendered",this.loaded),i.addEventListener("click",this._onClicked),i.setAttribute("type","button"),i.setAttribute("aria-label",h),this.icon&&i.prepend(this.icon)}}}window.customElements.get("ace-trigger")||window.customElements.define("ace-trigger",L);window.customElements.get("ace-icon")||window.customElements.define("ace-icon",E);class N{constructor(t){this.widgetEl=t}open(){this.widgetEl.toggleExpand(!0)}close(){this.widgetEl.toggleExpand(!1)}setZIndex(t){this.widgetEl.setZIndex(t)}setFullscreenMode(t){this.widgetEl.dispatch("set-fullscreen-mode",{value:t})}}const R="https://widgets.ace.teliacompany.net/v1",k=document.createElement("template");var v;const w=(v=document.querySelector("script[nonce]"))==null?void 0:v.getAttribute("nonce");k.innerHTML=`<style ${w?`nonce="${w}"`:""}>
|
|
213
213
|
@keyframes slideDown {
|
|
214
214
|
from {
|
|
215
215
|
transform: translateY(0);
|
|
@@ -252,7 +252,7 @@ svg {
|
|
|
252
252
|
box-shadow: rgba(0, 0, 0, 0.16) 0px 5px 40px;
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
-
:host(.expanded.activated) .widget-frame-container {
|
|
255
|
+
:host(.ace-expanded.activated) .widget-frame-container {
|
|
256
256
|
pointer-events: all;
|
|
257
257
|
}
|
|
258
258
|
|
|
@@ -273,12 +273,14 @@ svg {
|
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
275
|
|
|
276
|
-
:host(.expanded) .widget-frame-container {
|
|
276
|
+
:host(.ace-expanded) .widget-frame-container {
|
|
277
277
|
opacity: 1;
|
|
278
278
|
animation: slideUp 0.3s linear;
|
|
279
|
+
display: block;
|
|
279
280
|
}
|
|
280
281
|
|
|
281
|
-
:host(.hidden) .widget-frame-container {
|
|
282
|
+
:host(.ace-hidden) .widget-frame-container {
|
|
282
283
|
animation: slideDown 0.3s linear;
|
|
284
|
+
display: none;
|
|
283
285
|
}
|
|
284
|
-
</style>`;const
|
|
286
|
+
</style>`;const I=document.createElement("template");I.innerHTML='<div class="widget-frame-container"></div>';class S extends HTMLElement{constructor(){super(),this.widget=null,this.activated=!1,this.active=!1,this.iframeEl=null,this.trigger=null,this._messageQueue=[],this.api=new N(this),this.zIndex=-1,this.trigger=document.createElement("ace-trigger"),this.trigger.widgetId=this.widgetId,this.trigger.apiUrl=this.apiUrl,this.trigger.id=`ace-trigger_${this.widgetId}`,this.trigger.addEventListener("toggle",t=>{this.toggleExpand()}),this.shadow=this.attachShadow({mode:"open"}),this.shadow.appendChild(k.content.cloneNode(!0)),this.shadow.appendChild(I.content.cloneNode(!0))}static get observedAttributes(){return["widgetid","apiurl","expanded"]}get expanded(){return this.getAttribute("expanded")||"false"}set expanded(t){this.setAttribute("expanded",t),t==="false"&&this.classList.toggle("ace-hidden",!0)}get widgetId(){return this.getAttribute("widgetid")||""}set widgetId(t){this.trigger&&(this.trigger.widgetId=t,this.trigger.id=`ace-trigger_${t}`),this.setAttribute("widgetid",t)}get apiUrl(){return this.getAttribute("apiurl")||R}set apiUrl(t){this.trigger&&(this.trigger.apiUrl=t),this.setAttribute("apiurl",t)}attributeChangedCallback(t,e,i){this.render()}async connectedCallback(){this.widget=await this._loadWidget(this.widgetId),window.addEventListener("message",t=>{var e,i;((e=t.data)==null?void 0:e.type)==="widget-set-active"&&typeof((i=t.data.data)==null?void 0:i.active)=="boolean"&&(this.active=t.data.data.active)}),this.render()}isActivated(){return this.activated}disableAnimations(){const t=this._getContainerEl();t&&(t.style.animationDuration="0ms")}enableAnimations(){const t=this._getContainerEl();t&&(t.style.animationDuration="300ms")}_getContainerEl(){var t;return((t=this.shadowRoot)==null?void 0:t.querySelector(".widget-frame-container"))||null}async activate(){var e;this.widget||(this.widget=await this._loadWidget(this.widgetId)),this._createIFrame(),this.activated=!0;const t=(((e=window.ace)==null?void 0:e.applications)||[]).find(i=>i.id===this.widgetId);t&&(t.storage.get("open")&&t.appendToDOM(),t.trigger.showTrigger()),this.render()}async _loadWidget(t){return await(await fetch(`${this.apiUrl}/widget/${t}`)).json()}dispatch(t,e={}){var s;const i={type:t,data:e};if(e.widgetId||(e.widgetId=this.widgetId),!this.iframeEl){this._messageQueue.push(i);return}(s=this.iframeEl.contentWindow)==null||s.postMessage(i,"*")}async deactivate(){this.activated=!1,this.render()}_createIFrame(){var s;if(!((s=this.widget)!=null&&s.distributionName)||this.iframeEl||!this.widget.linked)return;const t={display:"block",border:"none",opacity:"1","color-scheme":"none",background:"none transparent !important",margin:"0px","max-height":"100%","max-width":"100vw",transform:"translateY(0px)",transition:"none 0s ease 0s !important",visibility:"visible","z-index":"999999999 !important",width:"100%",height:"100%","border-radius":"0.7rem"},e=document.createElement("iframe");Object.entries(t).forEach(([r,a])=>{e.style.setProperty(r,a)});const i=this.apiUrl.replace("/v1","").replace("/api","");e.src=`${i}/${this.widget.organization}/${this.widget.id}?inline=true&fullscreen=true`,e.title=this.getIFrameTitle(),e.setAttribute("allow","camera; microphone; display-capture;"),this.iframeEl=e}getIFrameTitle(){var e,i;let t=(e=this.widget)==null?void 0:e.configuration;if(typeof t=="string")try{t=JSON.parse(t)}catch{t={}}return((i=t==null?void 0:t.texts)==null?void 0:i["iframe.title"])||"ACE Widget"}executeMessageQueue(){this._messageQueue.forEach(t=>{this.dispatch(t.type,t.data)}),this._messageQueue=[]}isExpanded(){return this.expanded==="true"}toggleExpand(t){typeof t!="boolean"?this.expanded=this.isExpanded()?"false":"true":this.isExpanded()!==t&&(this.expanded=t?"true":"false"),this.dispatch("set-open",{value:this.isExpanded()}),this.trigger&&this.trigger.setActive(this.isExpanded())}setZIndex(t){this.zIndex=t,this.render()}render(){var i,s;if(!this.iframeEl)return;this.isExpanded()?(this.classList.add("ace-expanded"),this.classList.remove("ace-hidden")):this.classList.remove("ace-expanded");const t=this.activated?"block":"none";this.iframeEl.style.setProperty("display",t),this.activated?this.classList.add("activated"):this.classList.remove("activated");const e=this._getContainerEl();e&&e.childNodes.length===0&&e.appendChild(this.iframeEl),e&&this.zIndex!==-1&&(e.style.zIndex=this.zIndex.toString()),this.trigger&&((i=this.shadowRoot)==null?void 0:i.querySelectorAll("ace-trigger").length)===0&&((s=this.shadowRoot)==null||s.insertBefore(this.trigger,this.shadowRoot.firstChild))}}window.customElements.get("ace-widget")||window.customElements.define("ace-widget",S);window.customElements.get("ace-trigger")||window.customElements.define("ace-trigger",L);exports.SiteComponent=y;exports.WidgetComponent=S;
|
package/index.mjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
class
|
|
1
|
+
class I {
|
|
2
2
|
constructor(t) {
|
|
3
3
|
this._api = t, this._bootstrapped = !1, this._widgetAPIHandlers = /* @__PURE__ */ new Map(), window.ace = window.ace || {
|
|
4
4
|
_c: [],
|
|
5
5
|
_w: [],
|
|
6
|
-
widget: function(
|
|
7
|
-
window.ace._w.push([
|
|
6
|
+
widget: function(e, i) {
|
|
7
|
+
window.ace._w.push([e, i]);
|
|
8
8
|
},
|
|
9
|
-
configure: function(
|
|
10
|
-
window.ace._c.push(
|
|
9
|
+
configure: function(e) {
|
|
10
|
+
window.ace._c.push(e);
|
|
11
11
|
}
|
|
12
12
|
};
|
|
13
13
|
}
|
|
@@ -16,15 +16,15 @@ class k {
|
|
|
16
16
|
}
|
|
17
17
|
_bootstrap() {
|
|
18
18
|
const t = globalThis.ace;
|
|
19
|
-
globalThis.ace = this, this._bootstrapped = !0, ((t == null ? void 0 : t._w) || []).forEach(([
|
|
20
|
-
this.widget(
|
|
21
|
-
}), ((t == null ? void 0 : t._c) || []).forEach((
|
|
22
|
-
this.configure(
|
|
19
|
+
globalThis.ace = this, this._bootstrapped = !0, ((t == null ? void 0 : t._w) || []).forEach(([e, i]) => {
|
|
20
|
+
this.widget(e, i);
|
|
21
|
+
}), ((t == null ? void 0 : t._c) || []).forEach((e) => {
|
|
22
|
+
this.configure(e);
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
executePreloadedHandlers(t) {
|
|
26
|
-
(this._widgetAPIHandlers.get(t) || []).forEach((
|
|
27
|
-
|
|
26
|
+
(this._widgetAPIHandlers.get(t) || []).forEach((i) => {
|
|
27
|
+
i();
|
|
28
28
|
}), this._widgetAPIHandlers.set(t, []);
|
|
29
29
|
}
|
|
30
30
|
configure(t) {
|
|
@@ -35,14 +35,14 @@ class k {
|
|
|
35
35
|
version() {
|
|
36
36
|
return this._api.version();
|
|
37
37
|
}
|
|
38
|
-
widget(t,
|
|
39
|
-
const
|
|
38
|
+
widget(t, e) {
|
|
39
|
+
const i = Object.values(this._api.getWidgets()).find(
|
|
40
40
|
(s) => {
|
|
41
41
|
var r;
|
|
42
42
|
return ((r = s.widget) == null ? void 0 : r.name) === t;
|
|
43
43
|
}
|
|
44
44
|
);
|
|
45
|
-
if (!
|
|
45
|
+
if (!i) {
|
|
46
46
|
const s = this._widgetAPIHandlers.get(t) || [];
|
|
47
47
|
s.push(() => {
|
|
48
48
|
const r = Object.values(this._api.getWidgets()).find(
|
|
@@ -51,28 +51,28 @@ class k {
|
|
|
51
51
|
return ((d = a.widget) == null ? void 0 : d.name) === t;
|
|
52
52
|
}
|
|
53
53
|
);
|
|
54
|
-
|
|
54
|
+
e(r == null ? void 0 : r.api);
|
|
55
55
|
}), this._widgetAPIHandlers.set(t, s);
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
58
|
-
i
|
|
58
|
+
e(i.api);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
const S = "
|
|
61
|
+
const S = "##__SITES_VERSION__##";
|
|
62
62
|
class T {
|
|
63
63
|
constructor(t) {
|
|
64
64
|
this._site = t;
|
|
65
65
|
}
|
|
66
66
|
storagePolicy(t) {
|
|
67
|
-
Object.entries(this._site._widgets).forEach(([
|
|
68
|
-
|
|
67
|
+
Object.entries(this._site._widgets).forEach(([e, i]) => {
|
|
68
|
+
i.dispatch("set-storage-policies", {
|
|
69
69
|
policies: t
|
|
70
70
|
});
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
disallowStorageKey(t) {
|
|
74
|
-
Object.entries(this._site._widgets).forEach(([
|
|
75
|
-
|
|
74
|
+
Object.entries(this._site._widgets).forEach(([e, i]) => {
|
|
75
|
+
i.dispatch("disallow-storage-key", {
|
|
76
76
|
storageKey: t
|
|
77
77
|
});
|
|
78
78
|
});
|
|
@@ -89,24 +89,24 @@ class T {
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
class $ {
|
|
92
|
-
constructor(t,
|
|
93
|
-
this.triggerType = t, this.condition =
|
|
92
|
+
constructor(t, e) {
|
|
93
|
+
this.triggerType = t, this.condition = e, this.triggerType = t, this.condition = e;
|
|
94
94
|
}
|
|
95
95
|
shouldActivate(t) {
|
|
96
96
|
if (this.triggerType !== "visit" || this.condition.type !== "url")
|
|
97
97
|
return [];
|
|
98
|
-
const
|
|
99
|
-
return this.condition.outputs.filter((
|
|
98
|
+
const e = [];
|
|
99
|
+
return this.condition.outputs.filter((i) => i.action.type === "render_widget" && z(i.value, t)).forEach((i) => {
|
|
100
100
|
let s = { widgetId: "" };
|
|
101
101
|
try {
|
|
102
|
-
s = JSON.parse(
|
|
102
|
+
s = JSON.parse(i.action.data);
|
|
103
103
|
} catch {
|
|
104
104
|
s = {
|
|
105
105
|
widgetId: ""
|
|
106
106
|
};
|
|
107
107
|
}
|
|
108
|
-
|
|
109
|
-
}),
|
|
108
|
+
e.push(s.widgetId);
|
|
109
|
+
}), e;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
const z = (n, t) => {
|
|
@@ -118,11 +118,11 @@ const z = (n, t) => {
|
|
|
118
118
|
}
|
|
119
119
|
return !1;
|
|
120
120
|
}, M = (n, t) => {
|
|
121
|
-
const
|
|
121
|
+
const e = (s) => `ace_${n.substring(0, 7)}-${s}`;
|
|
122
122
|
return Object.entries(t).reduce(
|
|
123
123
|
(s, [r, a]) => {
|
|
124
124
|
const [d, c] = r.split("-");
|
|
125
|
-
if (
|
|
125
|
+
if (e(c) != r)
|
|
126
126
|
return s;
|
|
127
127
|
try {
|
|
128
128
|
const o = JSON.parse(a);
|
|
@@ -137,17 +137,17 @@ const z = (n, t) => {
|
|
|
137
137
|
}, u = "https://widgets.ace.teliacompany.net/v1", B = "https://embed.webprovisions.io", U = () => {
|
|
138
138
|
if (typeof window < "u") {
|
|
139
139
|
const n = history.pushState, t = history.replaceState;
|
|
140
|
-
history.pushState = function(...
|
|
141
|
-
n.apply(history,
|
|
142
|
-
}, history.replaceState = function(...
|
|
143
|
-
t.apply(history,
|
|
140
|
+
history.pushState = function(...e) {
|
|
141
|
+
n.apply(history, e), window.dispatchEvent(new Event("locationchange"));
|
|
142
|
+
}, history.replaceState = function(...e) {
|
|
143
|
+
t.apply(history, e), window.dispatchEvent(new Event("locationchange"));
|
|
144
144
|
};
|
|
145
145
|
}
|
|
146
146
|
};
|
|
147
147
|
class W extends HTMLElement {
|
|
148
148
|
constructor() {
|
|
149
149
|
var t;
|
|
150
|
-
super(), this._site = null, this._widgets = {}, this._loadedVersions = {}, this._path = ((t = window == null ? void 0 : window.location) == null ? void 0 : t.pathname) || "", this._api = new T(this), this._environment = new
|
|
150
|
+
super(), this._site = null, this._widgets = {}, this._loadedVersions = {}, this._path = ((t = window == null ? void 0 : window.location) == null ? void 0 : t.pathname) || "", this._api = new T(this), this._environment = new I(this._api), this.routeChangeListener = () => {
|
|
151
151
|
this._path = window.location.pathname, this.render();
|
|
152
152
|
}, this.shadow = this.attachShadow({ mode: "open" });
|
|
153
153
|
}
|
|
@@ -175,17 +175,17 @@ class W extends HTMLElement {
|
|
|
175
175
|
async connectedCallback() {
|
|
176
176
|
U(), await this._loadSite(), this.render(), this._environment.bootstrap(), window.addEventListener("locationchange", this.routeChangeListener), window.addEventListener("message", (t) => {
|
|
177
177
|
var s;
|
|
178
|
-
const { type:
|
|
179
|
-
if (
|
|
180
|
-
this._widgets[
|
|
181
|
-
else if (
|
|
182
|
-
this._widgets[
|
|
183
|
-
const r = this._widgets[
|
|
184
|
-
r && (this._loadedVersions[
|
|
178
|
+
const { type: e, data: i } = t.data;
|
|
179
|
+
if (e === "widget-minimize")
|
|
180
|
+
this._widgets[i.widgetId].toggleExpand();
|
|
181
|
+
else if (e === "widget-activated") {
|
|
182
|
+
this._widgets[i.widgetId].executeMessageQueue();
|
|
183
|
+
const r = this._widgets[i.widgetId];
|
|
184
|
+
r && (this._loadedVersions[i.widgetId] = i.version, this._environment.executePreloadedHandlers(
|
|
185
185
|
((s = r.widget) == null ? void 0 : s.name) || ""
|
|
186
186
|
));
|
|
187
187
|
try {
|
|
188
|
-
const a = JSON.parse(
|
|
188
|
+
const a = JSON.parse(i.storage), d = M(i.widgetId, a);
|
|
189
189
|
typeof d.open == "boolean" && (r.disableAnimations(), r.toggleExpand(d.open), setTimeout(() => {
|
|
190
190
|
r.enableAnimations();
|
|
191
191
|
}, 600));
|
|
@@ -198,32 +198,32 @@ class W extends HTMLElement {
|
|
|
198
198
|
disconnectedCallback() {
|
|
199
199
|
window.removeEventListener("locationchange", this.routeChangeListener);
|
|
200
200
|
}
|
|
201
|
-
attributeChangedCallback(t,
|
|
201
|
+
attributeChangedCallback(t, e, i) {
|
|
202
202
|
this.render();
|
|
203
203
|
}
|
|
204
204
|
async _loadSite() {
|
|
205
205
|
var s;
|
|
206
|
-
const
|
|
207
|
-
if (!((
|
|
206
|
+
const e = await (await fetch(`${this.apiUrl}/site/${this.siteId}`)).json(), i = location.hostname;
|
|
207
|
+
if (!((e == null ? void 0 : e.hosts) || []).includes(i)) {
|
|
208
208
|
console.warn(
|
|
209
|
-
`the host "${
|
|
209
|
+
`the host "${i}" needs to be configured as an allowed host in order to install widgets.`
|
|
210
210
|
);
|
|
211
211
|
return;
|
|
212
212
|
}
|
|
213
|
-
this._site =
|
|
213
|
+
this._site = e, this._site && (this._site.triggers = this._site.triggers.map(
|
|
214
214
|
(r) => new $(r.triggerType, r.condition)
|
|
215
215
|
)), (((s = this._site) == null ? void 0 : s.widgets) || []).forEach(async (r) => {
|
|
216
216
|
this.addWidgetEl(r.id);
|
|
217
217
|
});
|
|
218
218
|
}
|
|
219
219
|
addWidgetEl(t) {
|
|
220
|
-
const
|
|
221
|
-
let
|
|
222
|
-
|
|
220
|
+
const e = `ace-widget_${t}`;
|
|
221
|
+
let i = document.getElementById(
|
|
222
|
+
e
|
|
223
223
|
);
|
|
224
|
-
|
|
224
|
+
i || (i = document.createElement("ace-widget"), i.id = e, i.widgetId = t, this.apiUrl !== u && (i.apiUrl = this.apiUrl), document.body.appendChild(i)), this._widgets = {
|
|
225
225
|
...this._widgets,
|
|
226
|
-
[t]:
|
|
226
|
+
[t]: i
|
|
227
227
|
};
|
|
228
228
|
}
|
|
229
229
|
getWidgetsVersions() {
|
|
@@ -235,11 +235,11 @@ class W extends HTMLElement {
|
|
|
235
235
|
return;
|
|
236
236
|
}
|
|
237
237
|
const t = H(this._site);
|
|
238
|
-
for (const [
|
|
238
|
+
for (const [e, i] of Object.entries(this._widgets)) {
|
|
239
239
|
const s = t.find(
|
|
240
|
-
(r) => r.id ===
|
|
240
|
+
(r) => r.id === e
|
|
241
241
|
);
|
|
242
|
-
s && !
|
|
242
|
+
s && !i.isActivated() ? i.activate() : !s && i.isActivated() && i.deactivate();
|
|
243
243
|
}
|
|
244
244
|
this.shadow.innerHTML = "";
|
|
245
245
|
}
|
|
@@ -247,20 +247,20 @@ class W extends HTMLElement {
|
|
|
247
247
|
window.customElements.get("ace-site") || window.customElements.define("ace-site", W);
|
|
248
248
|
const H = (n) => {
|
|
249
249
|
const t = window.location.pathname;
|
|
250
|
-
return n.triggers.reduce((
|
|
251
|
-
const d =
|
|
250
|
+
return n.triggers.reduce((i, s) => (s.shouldActivate(t).forEach((a) => {
|
|
251
|
+
const d = i.find((o) => o.id === a), c = ((n == null ? void 0 : n.widgets) || []).find(
|
|
252
252
|
(o) => o.id === a
|
|
253
253
|
);
|
|
254
|
-
!d && c &&
|
|
254
|
+
!d && c && i.push({
|
|
255
255
|
id: a
|
|
256
256
|
});
|
|
257
|
-
}),
|
|
258
|
-
}, g = (n, t,
|
|
259
|
-
n &&
|
|
257
|
+
}), i), []);
|
|
258
|
+
}, g = (n, t, e) => {
|
|
259
|
+
n && e.style.setProperty(t, n);
|
|
260
260
|
}, O = (n, t) => {
|
|
261
|
-
var
|
|
262
|
-
g((
|
|
263
|
-
(
|
|
261
|
+
var e, i, s, r, a, d, c, o, l;
|
|
262
|
+
g((e = n.colors) == null ? void 0 : e.primaryBackground, "--primary-background", t), g(
|
|
263
|
+
(i = n.colors) == null ? void 0 : i.textOnPrimaryBackground,
|
|
264
264
|
"--text-on-primary-background",
|
|
265
265
|
t
|
|
266
266
|
), g(
|
|
@@ -289,14 +289,14 @@ const H = (n) => {
|
|
|
289
289
|
t
|
|
290
290
|
), g((l = n.colors) == null ? void 0 : l.focusColor, "--focus-color", t);
|
|
291
291
|
}, P = (n = {}) => {
|
|
292
|
-
const { content: t = "", title:
|
|
292
|
+
const { content: t = "", title: e, attributes: i = [] } = n;
|
|
293
293
|
let s = "";
|
|
294
294
|
const r = [
|
|
295
295
|
{ name: "xmlns", value: "http://www.w3.org/2000/svg" },
|
|
296
296
|
{ name: "fill", value: "currentColor" },
|
|
297
|
-
...
|
|
297
|
+
...i
|
|
298
298
|
];
|
|
299
|
-
return
|
|
299
|
+
return e && (s = `<title>${e}</title>`), `<svg ${r.map((d) => `${d.name}="${d.value}"`).join(" ")}>${s}${t}</svg>`;
|
|
300
300
|
}, y = document.createElement("template");
|
|
301
301
|
y.innerHTML = `<span
|
|
302
302
|
class="ace-icon__container"
|
|
@@ -358,14 +358,14 @@ class x extends HTMLElement {
|
|
|
358
358
|
constructor() {
|
|
359
359
|
super(), this.shadow = this.attachShadow({ mode: "open" }), this.shadow.appendChild(_.content.cloneNode(!0)), this.shadow.appendChild(y.content.cloneNode(!0));
|
|
360
360
|
}
|
|
361
|
-
attributeChangedCallback(t,
|
|
361
|
+
attributeChangedCallback(t, e, i) {
|
|
362
362
|
this.render();
|
|
363
363
|
}
|
|
364
364
|
render() {
|
|
365
|
-
var
|
|
366
|
-
const t = (
|
|
365
|
+
var e;
|
|
366
|
+
const t = (e = this.shadowRoot) == null ? void 0 : e.querySelector(".ace-icon__container");
|
|
367
367
|
if (t) {
|
|
368
|
-
const
|
|
368
|
+
const i = P({
|
|
369
369
|
content: this.svg,
|
|
370
370
|
attributes: [
|
|
371
371
|
{
|
|
@@ -375,7 +375,7 @@ class x extends HTMLElement {
|
|
|
375
375
|
],
|
|
376
376
|
title: void 0
|
|
377
377
|
});
|
|
378
|
-
t.innerHTML =
|
|
378
|
+
t.innerHTML = i;
|
|
379
379
|
}
|
|
380
380
|
}
|
|
381
381
|
}
|
|
@@ -412,7 +412,7 @@ E.innerHTML = `<style ${m ? `nonce="${m}"` : ""}>
|
|
|
412
412
|
bottom: 20px;
|
|
413
413
|
}
|
|
414
414
|
|
|
415
|
-
:host(.hidden) {
|
|
415
|
+
:host(.ace-hidden) {
|
|
416
416
|
display: none;
|
|
417
417
|
}
|
|
418
418
|
|
|
@@ -564,7 +564,7 @@ C.innerHTML = `<div class="trigger-container">
|
|
|
564
564
|
</span>
|
|
565
565
|
</button>
|
|
566
566
|
</div>`;
|
|
567
|
-
class
|
|
567
|
+
class A extends HTMLElement {
|
|
568
568
|
constructor() {
|
|
569
569
|
super(), this.widget = null, this.loaded = !1, this.active = !1, this._onClicked = () => {
|
|
570
570
|
this.active = !this.active;
|
|
@@ -596,33 +596,33 @@ class L extends HTMLElement {
|
|
|
596
596
|
async connectedCallback() {
|
|
597
597
|
this.widget = await this._loadWidget(this.widgetId), this.icon = await this._renderSymbol(), this.loaded = !0, this.render();
|
|
598
598
|
}
|
|
599
|
-
attributeChangedCallback(t,
|
|
599
|
+
attributeChangedCallback(t, e, i) {
|
|
600
600
|
this.render();
|
|
601
601
|
}
|
|
602
602
|
setActive(t) {
|
|
603
603
|
this.active = t, this.render();
|
|
604
604
|
}
|
|
605
605
|
_applyBranding() {
|
|
606
|
-
var t,
|
|
607
|
-
(
|
|
606
|
+
var t, e;
|
|
607
|
+
(e = (t = this.widget) == null ? void 0 : t.configuration) != null && e.branding && O(this.widget.configuration.branding, this);
|
|
608
608
|
}
|
|
609
609
|
async _loadWidget(t) {
|
|
610
|
-
const
|
|
610
|
+
const i = await (await fetch(`${this.apiUrl}/widget/${t}`)).json(), s = JSON.parse(i.configuration);
|
|
611
611
|
return {
|
|
612
|
-
...
|
|
612
|
+
...i,
|
|
613
613
|
configuration: s
|
|
614
614
|
};
|
|
615
615
|
}
|
|
616
616
|
async _renderSymbol() {
|
|
617
617
|
var a, d, c;
|
|
618
|
-
const t = (d = (a = this.widget) == null ? void 0 : a.configuration) == null ? void 0 : d.branding,
|
|
619
|
-
if (
|
|
618
|
+
const t = (d = (a = this.widget) == null ? void 0 : a.configuration) == null ? void 0 : d.branding, e = (c = t == null ? void 0 : t.graphics) == null ? void 0 : c.trigger;
|
|
619
|
+
if (e) {
|
|
620
620
|
const o = document.createElement("img");
|
|
621
|
-
return o.src =
|
|
621
|
+
return o.src = e, o.classList.add("trigger-icon"), o.alt = "", o;
|
|
622
622
|
}
|
|
623
|
-
const
|
|
623
|
+
const i = {
|
|
624
624
|
type: "Telia"
|
|
625
|
-
}, s = async (o) => V, { type: r } =
|
|
625
|
+
}, s = async (o) => V, { type: r } = i;
|
|
626
626
|
switch (r) {
|
|
627
627
|
case "Telia": {
|
|
628
628
|
const o = await s();
|
|
@@ -640,31 +640,31 @@ class L extends HTMLElement {
|
|
|
640
640
|
this._onClicked();
|
|
641
641
|
}
|
|
642
642
|
hide() {
|
|
643
|
-
this.classList.add("hidden");
|
|
643
|
+
this.classList.add("ace-hidden");
|
|
644
644
|
}
|
|
645
645
|
show() {
|
|
646
|
-
this.classList.remove("hidden");
|
|
646
|
+
this.classList.remove("ace-hidden");
|
|
647
647
|
}
|
|
648
648
|
_renderButtonLabel() {
|
|
649
649
|
var s, r, a, d, c, o, l, h;
|
|
650
650
|
if (!(((d = (a = (r = (s = this.widget) == null ? void 0 : s.configuration) == null ? void 0 : r.branding) == null ? void 0 : a.other) == null ? void 0 : d.showButtonLabel) || !1))
|
|
651
651
|
return null;
|
|
652
|
-
const
|
|
653
|
-
return
|
|
652
|
+
const e = ((h = (l = (o = (c = this.widget) == null ? void 0 : c.configuration) == null ? void 0 : o.branding) == null ? void 0 : l.other) == null ? void 0 : h.buttonLabelText) || "Widget trigger", i = document.createElement("button");
|
|
653
|
+
return i.setAttribute("type", "button"), i.setAttribute("aria-label", e), i.classList.add("trigger-label"), i.addEventListener("click", this._onClicked), i.innerHTML = e, i;
|
|
654
654
|
}
|
|
655
655
|
render() {
|
|
656
656
|
var s, r, a, d, c, o, l;
|
|
657
657
|
this._applyBranding(), this.classList.add("bottom-right"), this.classList.toggle("active", this.active);
|
|
658
|
-
const t = (s = this.shadowRoot) == null ? void 0 : s.querySelector(".trigger-container"),
|
|
659
|
-
(r = t == null ? void 0 : t.querySelector(".trigger-label")) == null || r.remove(), t &&
|
|
660
|
-
const
|
|
661
|
-
if (
|
|
658
|
+
const t = (s = this.shadowRoot) == null ? void 0 : s.querySelector(".trigger-container"), e = this._renderButtonLabel();
|
|
659
|
+
(r = t == null ? void 0 : t.querySelector(".trigger-label")) == null || r.remove(), t && e && t.prepend(e);
|
|
660
|
+
const i = (a = this.shadowRoot) == null ? void 0 : a.querySelector("#trigger-btn");
|
|
661
|
+
if (i) {
|
|
662
662
|
const h = ((l = (o = (c = (d = this.widget) == null ? void 0 : d.configuration) == null ? void 0 : c.branding) == null ? void 0 : o.other) == null ? void 0 : l.buttonLabelText) || "Widget trigger";
|
|
663
|
-
|
|
663
|
+
i.classList.toggle("active", this.active), i.classList.toggle("rendered", this.loaded), i.addEventListener("click", this._onClicked), i.setAttribute("type", "button"), i.setAttribute("aria-label", h), this.icon && i.prepend(this.icon);
|
|
664
664
|
}
|
|
665
665
|
}
|
|
666
666
|
}
|
|
667
|
-
window.customElements.get("ace-trigger") || window.customElements.define("ace-trigger",
|
|
667
|
+
window.customElements.get("ace-trigger") || window.customElements.define("ace-trigger", A);
|
|
668
668
|
window.customElements.get("ace-icon") || window.customElements.define("ace-icon", x);
|
|
669
669
|
class j {
|
|
670
670
|
constructor(t) {
|
|
@@ -683,10 +683,10 @@ class j {
|
|
|
683
683
|
this.widgetEl.dispatch("set-fullscreen-mode", { value: t });
|
|
684
684
|
}
|
|
685
685
|
}
|
|
686
|
-
const N = "https://widgets.ace.teliacompany.net/v1",
|
|
686
|
+
const N = "https://widgets.ace.teliacompany.net/v1", L = document.createElement("template");
|
|
687
687
|
var v;
|
|
688
688
|
const w = (v = document.querySelector("script[nonce]")) == null ? void 0 : v.getAttribute("nonce");
|
|
689
|
-
|
|
689
|
+
L.innerHTML = `<style ${w ? `nonce="${w}"` : ""}>
|
|
690
690
|
@keyframes slideDown {
|
|
691
691
|
from {
|
|
692
692
|
transform: translateY(0);
|
|
@@ -729,7 +729,7 @@ A.innerHTML = `<style ${w ? `nonce="${w}"` : ""}>
|
|
|
729
729
|
box-shadow: rgba(0, 0, 0, 0.16) 0px 5px 40px;
|
|
730
730
|
}
|
|
731
731
|
|
|
732
|
-
:host(.expanded.activated) .widget-frame-container {
|
|
732
|
+
:host(.ace-expanded.activated) .widget-frame-container {
|
|
733
733
|
pointer-events: all;
|
|
734
734
|
}
|
|
735
735
|
|
|
@@ -750,22 +750,24 @@ A.innerHTML = `<style ${w ? `nonce="${w}"` : ""}>
|
|
|
750
750
|
}
|
|
751
751
|
}
|
|
752
752
|
|
|
753
|
-
:host(.expanded) .widget-frame-container {
|
|
753
|
+
:host(.ace-expanded) .widget-frame-container {
|
|
754
754
|
opacity: 1;
|
|
755
755
|
animation: slideUp 0.3s linear;
|
|
756
|
+
display: block;
|
|
756
757
|
}
|
|
757
758
|
|
|
758
|
-
:host(.hidden) .widget-frame-container {
|
|
759
|
+
:host(.ace-hidden) .widget-frame-container {
|
|
759
760
|
animation: slideDown 0.3s linear;
|
|
761
|
+
display: none;
|
|
760
762
|
}
|
|
761
763
|
</style>`;
|
|
762
|
-
const
|
|
763
|
-
|
|
764
|
-
class
|
|
764
|
+
const k = document.createElement("template");
|
|
765
|
+
k.innerHTML = '<div class="widget-frame-container"></div>';
|
|
766
|
+
class R extends HTMLElement {
|
|
765
767
|
constructor() {
|
|
766
768
|
super(), this.widget = null, this.activated = !1, this.active = !1, this.iframeEl = null, this.trigger = null, this._messageQueue = [], this.api = new j(this), this.zIndex = -1, this.trigger = document.createElement("ace-trigger"), this.trigger.widgetId = this.widgetId, this.trigger.apiUrl = this.apiUrl, this.trigger.id = `ace-trigger_${this.widgetId}`, this.trigger.addEventListener("toggle", (t) => {
|
|
767
769
|
this.toggleExpand();
|
|
768
|
-
}), this.shadow = this.attachShadow({ mode: "open" }), this.shadow.appendChild(
|
|
770
|
+
}), this.shadow = this.attachShadow({ mode: "open" }), this.shadow.appendChild(L.content.cloneNode(!0)), this.shadow.appendChild(k.content.cloneNode(!0));
|
|
769
771
|
}
|
|
770
772
|
static get observedAttributes() {
|
|
771
773
|
return ["widgetid", "apiurl", "expanded"];
|
|
@@ -774,7 +776,7 @@ class q extends HTMLElement {
|
|
|
774
776
|
return this.getAttribute("expanded") || "false";
|
|
775
777
|
}
|
|
776
778
|
set expanded(t) {
|
|
777
|
-
this.setAttribute("expanded", t), t === "false" && this.classList.toggle("hidden", !0);
|
|
779
|
+
this.setAttribute("expanded", t), t === "false" && this.classList.toggle("ace-hidden", !0);
|
|
778
780
|
}
|
|
779
781
|
get widgetId() {
|
|
780
782
|
return this.getAttribute("widgetid") || "";
|
|
@@ -788,13 +790,13 @@ class q extends HTMLElement {
|
|
|
788
790
|
set apiUrl(t) {
|
|
789
791
|
this.trigger && (this.trigger.apiUrl = t), this.setAttribute("apiurl", t);
|
|
790
792
|
}
|
|
791
|
-
attributeChangedCallback(t,
|
|
793
|
+
attributeChangedCallback(t, e, i) {
|
|
792
794
|
this.render();
|
|
793
795
|
}
|
|
794
796
|
async connectedCallback() {
|
|
795
797
|
this.widget = await this._loadWidget(this.widgetId), window.addEventListener("message", (t) => {
|
|
796
|
-
var
|
|
797
|
-
((
|
|
798
|
+
var e, i;
|
|
799
|
+
((e = t.data) == null ? void 0 : e.type) === "widget-set-active" && typeof ((i = t.data.data) == null ? void 0 : i.active) == "boolean" && (this.active = t.data.data.active);
|
|
798
800
|
}), this.render();
|
|
799
801
|
}
|
|
800
802
|
isActivated() {
|
|
@@ -815,27 +817,27 @@ class q extends HTMLElement {
|
|
|
815
817
|
)) || null;
|
|
816
818
|
}
|
|
817
819
|
async activate() {
|
|
818
|
-
var
|
|
820
|
+
var e;
|
|
819
821
|
this.widget || (this.widget = await this._loadWidget(this.widgetId)), this._createIFrame(), this.activated = !0;
|
|
820
|
-
const t = (((
|
|
821
|
-
(
|
|
822
|
+
const t = (((e = window.ace) == null ? void 0 : e.applications) || []).find(
|
|
823
|
+
(i) => i.id === this.widgetId
|
|
822
824
|
);
|
|
823
825
|
t && (t.storage.get("open") && t.appendToDOM(), t.trigger.showTrigger()), this.render();
|
|
824
826
|
}
|
|
825
827
|
async _loadWidget(t) {
|
|
826
828
|
return await (await fetch(`${this.apiUrl}/widget/${t}`)).json();
|
|
827
829
|
}
|
|
828
|
-
dispatch(t,
|
|
830
|
+
dispatch(t, e = {}) {
|
|
829
831
|
var s;
|
|
830
|
-
const
|
|
832
|
+
const i = {
|
|
831
833
|
type: t,
|
|
832
|
-
data:
|
|
834
|
+
data: e
|
|
833
835
|
};
|
|
834
|
-
if (
|
|
835
|
-
this._messageQueue.push(
|
|
836
|
+
if (e.widgetId || (e.widgetId = this.widgetId), !this.iframeEl) {
|
|
837
|
+
this._messageQueue.push(i);
|
|
836
838
|
return;
|
|
837
839
|
}
|
|
838
|
-
(s = this.iframeEl.contentWindow) == null || s.postMessage(
|
|
840
|
+
(s = this.iframeEl.contentWindow) == null || s.postMessage(i, "*");
|
|
839
841
|
}
|
|
840
842
|
async deactivate() {
|
|
841
843
|
this.activated = !1, this.render();
|
|
@@ -860,23 +862,23 @@ class q extends HTMLElement {
|
|
|
860
862
|
width: "100%",
|
|
861
863
|
height: "100%",
|
|
862
864
|
"border-radius": "0.7rem"
|
|
863
|
-
},
|
|
865
|
+
}, e = document.createElement("iframe");
|
|
864
866
|
Object.entries(t).forEach(([r, a]) => {
|
|
865
|
-
|
|
867
|
+
e.style.setProperty(r, a);
|
|
866
868
|
});
|
|
867
|
-
const
|
|
868
|
-
|
|
869
|
+
const i = this.apiUrl.replace("/v1", "").replace("/api", "");
|
|
870
|
+
e.src = `${i}/${this.widget.organization}/${this.widget.id}?inline=true&fullscreen=true`, e.title = this.getIFrameTitle(), e.setAttribute("allow", "camera; microphone; display-capture;"), this.iframeEl = e;
|
|
869
871
|
}
|
|
870
872
|
getIFrameTitle() {
|
|
871
|
-
var
|
|
872
|
-
let t = (
|
|
873
|
+
var e, i;
|
|
874
|
+
let t = (e = this.widget) == null ? void 0 : e.configuration;
|
|
873
875
|
if (typeof t == "string")
|
|
874
876
|
try {
|
|
875
877
|
t = JSON.parse(t);
|
|
876
878
|
} catch {
|
|
877
879
|
t = {};
|
|
878
880
|
}
|
|
879
|
-
return ((
|
|
881
|
+
return ((i = t == null ? void 0 : t.texts) == null ? void 0 : i["iframe.title"]) || "ACE Widget";
|
|
880
882
|
}
|
|
881
883
|
executeMessageQueue() {
|
|
882
884
|
this._messageQueue.forEach((t) => {
|
|
@@ -895,19 +897,19 @@ class q extends HTMLElement {
|
|
|
895
897
|
this.zIndex = t, this.render();
|
|
896
898
|
}
|
|
897
899
|
render() {
|
|
898
|
-
var
|
|
900
|
+
var i, s;
|
|
899
901
|
if (!this.iframeEl)
|
|
900
902
|
return;
|
|
901
|
-
this.isExpanded() ? (this.classList.add("expanded"), this.classList.remove("hidden")) : this.classList.remove("expanded");
|
|
903
|
+
this.isExpanded() ? (this.classList.add("ace-expanded"), this.classList.remove("ace-hidden")) : this.classList.remove("ace-expanded");
|
|
902
904
|
const t = this.activated ? "block" : "none";
|
|
903
905
|
this.iframeEl.style.setProperty("display", t), this.activated ? this.classList.add("activated") : this.classList.remove("activated");
|
|
904
|
-
const
|
|
905
|
-
|
|
906
|
+
const e = this._getContainerEl();
|
|
907
|
+
e && e.childNodes.length === 0 && e.appendChild(this.iframeEl), e && this.zIndex !== -1 && (e.style.zIndex = this.zIndex.toString()), this.trigger && ((i = this.shadowRoot) == null ? void 0 : i.querySelectorAll("ace-trigger").length) === 0 && ((s = this.shadowRoot) == null || s.insertBefore(this.trigger, this.shadowRoot.firstChild));
|
|
906
908
|
}
|
|
907
909
|
}
|
|
908
|
-
window.customElements.get("ace-widget") || window.customElements.define("ace-widget",
|
|
909
|
-
window.customElements.get("ace-trigger") || window.customElements.define("ace-trigger",
|
|
910
|
+
window.customElements.get("ace-widget") || window.customElements.define("ace-widget", R);
|
|
911
|
+
window.customElements.get("ace-trigger") || window.customElements.define("ace-trigger", A);
|
|
910
912
|
export {
|
|
911
913
|
W as SiteComponent,
|
|
912
|
-
|
|
914
|
+
R as WidgetComponent
|
|
913
915
|
};
|
package/index.umd.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(h,u){typeof exports=="object"&&typeof module<"u"?u(exports):typeof define=="function"&&define.amd?define(["exports"],u):(h=typeof globalThis<"u"?globalThis:h||self,u(h["@telia-ace/widget-site"]={}))})(this,(function(h){"use strict";var S,T,$;class u{constructor(t){this._api=t,this._bootstrapped=!1,this._widgetAPIHandlers=new Map,window.ace=window.ace||{_c:[],_w:[],widget:function(i
|
|
1
|
+
(function(h,u){typeof exports=="object"&&typeof module<"u"?u(exports):typeof define=="function"&&define.amd?define(["exports"],u):(h=typeof globalThis<"u"?globalThis:h||self,u(h["@telia-ace/widget-site"]={}))})(this,(function(h){"use strict";var S,T,$;class u{constructor(t){this._api=t,this._bootstrapped=!1,this._widgetAPIHandlers=new Map,window.ace=window.ace||{_c:[],_w:[],widget:function(e,i){window.ace._w.push([e,i])},configure:function(e){window.ace._c.push(e)}}}bootstrap(){this._bootstrap()}_bootstrap(){const t=globalThis.ace;globalThis.ace=this,this._bootstrapped=!0,((t==null?void 0:t._w)||[]).forEach(([e,i])=>{this.widget(e,i)}),((t==null?void 0:t._c)||[]).forEach(e=>{this.configure(e)})}executePreloadedHandlers(t){(this._widgetAPIHandlers.get(t)||[]).forEach(i=>{i()}),this._widgetAPIHandlers.set(t,[])}configure(t){if(!this._bootstrapped)throw new Error("ace environment not bootstrapped");t(this._api)}version(){return this._api.version()}widget(t,e){const i=Object.values(this._api.getWidgets()).find(s=>{var n;return((n=s.widget)==null?void 0:n.name)===t});if(!i){const s=this._widgetAPIHandlers.get(t)||[];s.push(()=>{const n=Object.values(this._api.getWidgets()).find(a=>{var d;return((d=a.widget)==null?void 0:d.name)===t});e(n==null?void 0:n.api)}),this._widgetAPIHandlers.set(t,s);return}e(i.api)}}const z="##__SITES_VERSION__##";class M{constructor(t){this._site=t}storagePolicy(t){Object.entries(this._site._widgets).forEach(([e,i])=>{i.dispatch("set-storage-policies",{policies:t})})}disallowStorageKey(t){Object.entries(this._site._widgets).forEach(([e,i])=>{i.dispatch("disallow-storage-key",{storageKey:t})})}getWidgets(){return this._site._widgets}version(){const t=z;return{widgets:this._site.getWidgetsVersions(),sites:t}}}class B{constructor(t,e){this.triggerType=t,this.condition=e,this.triggerType=t,this.condition=e}shouldActivate(t){if(this.triggerType!=="visit"||this.condition.type!=="url")return[];const e=[];return this.condition.outputs.filter(i=>i.action.type==="render_widget"&&W(i.value,t)).forEach(i=>{let s={widgetId:""};try{s=JSON.parse(i.action.data)}catch{s={widgetId:""}}e.push(s.widgetId)}),e}}const W=(r,t)=>{if(r==="*"||r==="/*"||r===t)return!0;if(r.endsWith("/*")){const s=r.slice(0,-2);return t.startsWith(s)}return!1},U=(r,t)=>{const e=s=>`ace_${r.substring(0,7)}-${s}`;return Object.entries(t).reduce((s,[n,a])=>{const[d,c]=n.split("-");if(e(c)!=n)return s;try{const o=JSON.parse(a);s[c]=o.value}catch{return s}return s},{})},m="https://widgets.ace.teliacompany.net/v1",H="https://embed.webprovisions.io",O=()=>{if(typeof window<"u"){const r=history.pushState,t=history.replaceState;history.pushState=function(...e){r.apply(history,e),window.dispatchEvent(new Event("locationchange"))},history.replaceState=function(...e){t.apply(history,e),window.dispatchEvent(new Event("locationchange"))}}};class w extends HTMLElement{constructor(){var t;super(),this._site=null,this._widgets={},this._loadedVersions={},this._path=((t=window==null?void 0:window.location)==null?void 0:t.pathname)||"",this._api=new M(this),this._environment=new u(this._api),this.routeChangeListener=()=>{this._path=window.location.pathname,this.render()},this.shadow=this.attachShadow({mode:"open"})}static get observedAttributes(){return["siteid","apiurl","embedurl"]}get siteId(){return this.getAttribute("siteid")||""}set siteId(t){this.setAttribute("siteid",t)}get apiUrl(){return this.getAttribute("apiurl")||m}set apiUrl(t){this.setAttribute("apiurl",t)}get embedUrl(){return this.getAttribute("embedurl")||H}set embedUrl(t){this.setAttribute("embedurl",t)}async connectedCallback(){O(),await this._loadSite(),this.render(),this._environment.bootstrap(),window.addEventListener("locationchange",this.routeChangeListener),window.addEventListener("message",t=>{var s;const{type:e,data:i}=t.data;if(e==="widget-minimize")this._widgets[i.widgetId].toggleExpand();else if(e==="widget-activated"){this._widgets[i.widgetId].executeMessageQueue();const n=this._widgets[i.widgetId];n&&(this._loadedVersions[i.widgetId]=i.version,this._environment.executePreloadedHandlers(((s=n.widget)==null?void 0:s.name)||""));try{const a=JSON.parse(i.storage),d=U(i.widgetId,a);typeof d.open=="boolean"&&(n.disableAnimations(),n.toggleExpand(d.open),setTimeout(()=>{n.enableAnimations()},600))}catch{console.warn("unable to parse widget storage")}}})}disconnectedCallback(){window.removeEventListener("locationchange",this.routeChangeListener)}attributeChangedCallback(t,e,i){this.render()}async _loadSite(){var s;const e=await(await fetch(`${this.apiUrl}/site/${this.siteId}`)).json(),i=location.hostname;if(!((e==null?void 0:e.hosts)||[]).includes(i)){console.warn(`the host "${i}" needs to be configured as an allowed host in order to install widgets.`);return}this._site=e,this._site&&(this._site.triggers=this._site.triggers.map(n=>new B(n.triggerType,n.condition))),(((s=this._site)==null?void 0:s.widgets)||[]).forEach(async n=>{this.addWidgetEl(n.id)})}addWidgetEl(t){const e=`ace-widget_${t}`;let i=document.getElementById(e);i||(i=document.createElement("ace-widget"),i.id=e,i.widgetId=t,this.apiUrl!==m&&(i.apiUrl=this.apiUrl),document.body.appendChild(i)),this._widgets={...this._widgets,[t]:i}}getWidgetsVersions(){return this._loadedVersions}render(){if(!this._site){this.shadow.innerHTML="";return}const t=P(this._site);for(const[e,i]of Object.entries(this._widgets)){const s=t.find(n=>n.id===e);s&&!i.isActivated()?i.activate():!s&&i.isActivated()&&i.deactivate()}this.shadow.innerHTML=""}}window.customElements.get("ace-site")||window.customElements.define("ace-site",w);const P=r=>{const t=window.location.pathname;return r.triggers.reduce((i,s)=>(s.shouldActivate(t).forEach(a=>{const d=i.find(o=>o.id===a),c=((r==null?void 0:r.widgets)||[]).find(o=>o.id===a);!d&&c&&i.push({id:a})}),i),[])},g=(r,t,e)=>{r&&e.style.setProperty(t,r)},j=(r,t)=>{var e,i,s,n,a,d,c,o,l;g((e=r.colors)==null?void 0:e.primaryBackground,"--primary-background",t),g((i=r.colors)==null?void 0:i.textOnPrimaryBackground,"--text-on-primary-background",t),g((s=r.colors)==null?void 0:s.secondaryBackground,"--secondary-background",t),g((n=r.colors)==null?void 0:n.textOnSecondaryBackground,"--text-on-secondary-background",t),g((a=r.colors)==null?void 0:a.interactiveDestructiveBackground,"--destructive-color",t),g((d=r.colors)==null?void 0:d.interactiveTextOnDestructiveBackground,"--text-on-destructive-color",t),g((c=r.colors)==null?void 0:c.interactivePrimaryBackground,"--interactive-primary-background",t),g((o=r.colors)==null?void 0:o.interactiveTextOnPrimaryBackground,"--interactive-text-on-primary-background",t),g((l=r.colors)==null?void 0:l.focusColor,"--focus-color",t)},V=(r={})=>{const{content:t="",title:e,attributes:i=[]}=r;let s="";const n=[{name:"xmlns",value:"http://www.w3.org/2000/svg"},{name:"fill",value:"currentColor"},...i];return e&&(s=`<title>${e}</title>`),`<svg ${n.map(d=>`${d.name}="${d.value}"`).join(" ")}>${s}${t}</svg>`},f=document.createElement("template");f.innerHTML=`<span
|
|
2
2
|
class="ace-icon__container"
|
|
3
3
|
></span>`;const b=document.createElement("template"),v=(S=document.querySelector("script[nonce]"))==null?void 0:S.getAttribute("nonce");b.innerHTML=`<style ${v?`nonce="${v}"`:""}>
|
|
4
4
|
:host {
|
|
@@ -34,7 +34,7 @@ svg {
|
|
|
34
34
|
min-width: var(--size-lg);
|
|
35
35
|
width: var(--size-lg);
|
|
36
36
|
}
|
|
37
|
-
</style>`;class y extends HTMLElement{get svg(){return this.getAttribute("svg")||""}set svg(t){this.setAttribute("svg",t)}get size(){return this.getAttribute("size")||""}set size(t){this.setAttribute("size",t),this.classList.remove("ace-icon--sm","ace-icon--md","ace--icon-lg"),this.classList.add(`ace-icon--${t}`)}static get observedAttributes(){return["svg","size"]}constructor(){super(),this.shadow=this.attachShadow({mode:"open"}),this.shadow.appendChild(b.content.cloneNode(!0)),this.shadow.appendChild(f.content.cloneNode(!0))}attributeChangedCallback(t,i
|
|
37
|
+
</style>`;class y extends HTMLElement{get svg(){return this.getAttribute("svg")||""}set svg(t){this.setAttribute("svg",t)}get size(){return this.getAttribute("size")||""}set size(t){this.setAttribute("size",t),this.classList.remove("ace-icon--sm","ace-icon--md","ace--icon-lg"),this.classList.add(`ace-icon--${t}`)}static get observedAttributes(){return["svg","size"]}constructor(){super(),this.shadow=this.attachShadow({mode:"open"}),this.shadow.appendChild(b.content.cloneNode(!0)),this.shadow.appendChild(f.content.cloneNode(!0))}attributeChangedCallback(t,e,i){this.render()}render(){var e;const t=(e=this.shadowRoot)==null?void 0:e.querySelector(".ace-icon__container");if(t){const i=V({content:this.svg,attributes:[{name:"viewBox",value:"0 0 64 64"}],title:void 0});t.innerHTML=i}}}window.customElements.get("ace-icon")||window.customElements.define("ace-icon",y);const N={name:"question",svg:'<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M32 4C16.536 4 4 16.536 4 32C4 47.464 16.536 60 32 60C47.464 60 60 47.464 60 32C59.9827 16.5432 47.4568 4.01731 32 4ZM32 55.6923C18.9151 55.6923 8.30769 45.0849 8.30769 32C8.30769 18.9151 18.9151 8.30769 32 8.30769C45.0849 8.30769 55.6923 18.9151 55.6923 32C55.6775 45.0788 45.0788 55.6775 32 55.6923Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M31.9423 37.5723L36.311 32.9068L36.7354 32.4448C39.7555 29.1161 40.7645 27.0647 40.7645 24.5087C40.7645 23.1091 40.4251 21.7942 39.7041 20.6491C38.3044 18.3587 35.6323 16.9166 32.2816 16.9166C28.7565 16.9166 25.3125 18.7414 23.2581 21.6772L23.1201 21.8791C22.8232 22.3032 22.696 22.6849 22.696 22.9818C22.696 23.7029 23.926 25.9932 25.2833 25.9932C25.5378 25.9932 25.7922 25.9084 26.0467 25.7388C26.2588 25.5691 26.5981 25.2298 27.0647 24.7208C28.8885 22.6849 30.1185 21.9215 31.7726 21.9215C33.6813 21.9215 35.081 23.1939 35.081 24.8905C35.081 26.375 34.2751 27.7746 32.3664 29.8529L28.2523 34.2216C27.9554 34.6033 27.7857 34.9426 27.7857 35.282C27.7857 35.6213 27.9978 36.1726 28.4219 36.8937C29.0581 37.8692 29.7368 38.3782 30.4578 38.3782C30.9244 38.3782 31.3909 38.1237 31.9423 37.5723ZM30.882 47.4972C29.2278 47.4972 27.6585 44.7403 27.6585 43.6799C27.6585 42.1954 30.0761 40.6261 32.4089 40.6261C33.6389 40.6261 34.2751 41.1775 34.2751 42.3227C34.2751 44.0616 33.4692 45.843 32.4513 46.7761C31.9423 47.2427 31.4334 47.4972 30.882 47.4972Z"/></svg>'},_=document.createElement("template"),x=(T=document.querySelector("script[nonce]"))==null?void 0:T.getAttribute("nonce");_.innerHTML=`<style ${x?`nonce="${x}"`:""}>
|
|
38
38
|
:host {
|
|
39
39
|
position: fixed;
|
|
40
40
|
display: flex;
|
|
@@ -60,7 +60,7 @@ svg {
|
|
|
60
60
|
bottom: 20px;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
:host(.hidden) {
|
|
63
|
+
:host(.ace-hidden) {
|
|
64
64
|
display: none;
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -209,7 +209,7 @@ svg {
|
|
|
209
209
|
</svg>
|
|
210
210
|
</span>
|
|
211
211
|
</button>
|
|
212
|
-
</div>`;class C extends HTMLElement{constructor(){super(),this.widget=null,this.loaded=!1,this.active=!1,this._onClicked=()=>{this.active=!this.active;const t={detail:{widgetId:this.widgetId},bubbles:!0,composed:!0};this.dispatchEvent(new CustomEvent("toggle",t)),this.render()},this.shadow=this.attachShadow({mode:"open"}),this.shadow.appendChild(_.content.cloneNode(!0)),this.shadow.appendChild(E.content.cloneNode(!0))}static get observedAttributes(){return["widgetid","apiurl"]}get widgetId(){return this.getAttribute("widgetid")||""}set widgetId(t){this.setAttribute("widgetid",t)}get apiUrl(){return this.getAttribute("apiurl")||""}set apiUrl(t){this.setAttribute("apiurl",t)}async connectedCallback(){this.widget=await this._loadWidget(this.widgetId),this.icon=await this._renderSymbol(),this.loaded=!0,this.render()}attributeChangedCallback(t,i
|
|
212
|
+
</div>`;class C extends HTMLElement{constructor(){super(),this.widget=null,this.loaded=!1,this.active=!1,this._onClicked=()=>{this.active=!this.active;const t={detail:{widgetId:this.widgetId},bubbles:!0,composed:!0};this.dispatchEvent(new CustomEvent("toggle",t)),this.render()},this.shadow=this.attachShadow({mode:"open"}),this.shadow.appendChild(_.content.cloneNode(!0)),this.shadow.appendChild(E.content.cloneNode(!0))}static get observedAttributes(){return["widgetid","apiurl"]}get widgetId(){return this.getAttribute("widgetid")||""}set widgetId(t){this.setAttribute("widgetid",t)}get apiUrl(){return this.getAttribute("apiurl")||""}set apiUrl(t){this.setAttribute("apiurl",t)}async connectedCallback(){this.widget=await this._loadWidget(this.widgetId),this.icon=await this._renderSymbol(),this.loaded=!0,this.render()}attributeChangedCallback(t,e,i){this.render()}setActive(t){this.active=t,this.render()}_applyBranding(){var t,e;(e=(t=this.widget)==null?void 0:t.configuration)!=null&&e.branding&&j(this.widget.configuration.branding,this)}async _loadWidget(t){const i=await(await fetch(`${this.apiUrl}/widget/${t}`)).json(),s=JSON.parse(i.configuration);return{...i,configuration:s}}async _renderSymbol(){var a,d,c;const t=(d=(a=this.widget)==null?void 0:a.configuration)==null?void 0:d.branding,e=(c=t==null?void 0:t.graphics)==null?void 0:c.trigger;if(e){const o=document.createElement("img");return o.src=e,o.classList.add("trigger-icon"),o.alt="",o}const i={type:"Telia"},s=async o=>N,{type:n}=i;switch(n){case"Telia":{const o=await s();if(o){const l=document.createElement("ace-icon");return l.classList.add("trigger-icon"),l.svg=o.svg,l.size="lg",l}return null}default:return null}}toggle(){this._onClicked()}hide(){this.classList.add("ace-hidden")}show(){this.classList.remove("ace-hidden")}_renderButtonLabel(){var s,n,a,d,c,o,l,p;if(!(((d=(a=(n=(s=this.widget)==null?void 0:s.configuration)==null?void 0:n.branding)==null?void 0:a.other)==null?void 0:d.showButtonLabel)||!1))return null;const e=((p=(l=(o=(c=this.widget)==null?void 0:c.configuration)==null?void 0:o.branding)==null?void 0:l.other)==null?void 0:p.buttonLabelText)||"Widget trigger",i=document.createElement("button");return i.setAttribute("type","button"),i.setAttribute("aria-label",e),i.classList.add("trigger-label"),i.addEventListener("click",this._onClicked),i.innerHTML=e,i}render(){var s,n,a,d,c,o,l;this._applyBranding(),this.classList.add("bottom-right"),this.classList.toggle("active",this.active);const t=(s=this.shadowRoot)==null?void 0:s.querySelector(".trigger-container"),e=this._renderButtonLabel();(n=t==null?void 0:t.querySelector(".trigger-label"))==null||n.remove(),t&&e&&t.prepend(e);const i=(a=this.shadowRoot)==null?void 0:a.querySelector("#trigger-btn");if(i){const p=((l=(o=(c=(d=this.widget)==null?void 0:d.configuration)==null?void 0:c.branding)==null?void 0:o.other)==null?void 0:l.buttonLabelText)||"Widget trigger";i.classList.toggle("active",this.active),i.classList.toggle("rendered",this.loaded),i.addEventListener("click",this._onClicked),i.setAttribute("type","button"),i.setAttribute("aria-label",p),this.icon&&i.prepend(this.icon)}}}window.customElements.get("ace-trigger")||window.customElements.define("ace-trigger",C),window.customElements.get("ace-icon")||window.customElements.define("ace-icon",y);class R{constructor(t){this.widgetEl=t}open(){this.widgetEl.toggleExpand(!0)}close(){this.widgetEl.toggleExpand(!1)}setZIndex(t){this.widgetEl.setZIndex(t)}setFullscreenMode(t){this.widgetEl.dispatch("set-fullscreen-mode",{value:t})}}const q="https://widgets.ace.teliacompany.net/v1",A=document.createElement("template"),L=($=document.querySelector("script[nonce]"))==null?void 0:$.getAttribute("nonce");A.innerHTML=`<style ${L?`nonce="${L}"`:""}>
|
|
213
213
|
@keyframes slideDown {
|
|
214
214
|
from {
|
|
215
215
|
transform: translateY(0);
|
|
@@ -252,7 +252,7 @@ svg {
|
|
|
252
252
|
box-shadow: rgba(0, 0, 0, 0.16) 0px 5px 40px;
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
-
:host(.expanded.activated) .widget-frame-container {
|
|
255
|
+
:host(.ace-expanded.activated) .widget-frame-container {
|
|
256
256
|
pointer-events: all;
|
|
257
257
|
}
|
|
258
258
|
|
|
@@ -273,12 +273,14 @@ svg {
|
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
275
|
|
|
276
|
-
:host(.expanded) .widget-frame-container {
|
|
276
|
+
:host(.ace-expanded) .widget-frame-container {
|
|
277
277
|
opacity: 1;
|
|
278
278
|
animation: slideUp 0.3s linear;
|
|
279
|
+
display: block;
|
|
279
280
|
}
|
|
280
281
|
|
|
281
|
-
:host(.hidden) .widget-frame-container {
|
|
282
|
+
:host(.ace-hidden) .widget-frame-container {
|
|
282
283
|
animation: slideDown 0.3s linear;
|
|
284
|
+
display: none;
|
|
283
285
|
}
|
|
284
|
-
</style>`;const
|
|
286
|
+
</style>`;const k=document.createElement("template");k.innerHTML='<div class="widget-frame-container"></div>';class I extends HTMLElement{constructor(){super(),this.widget=null,this.activated=!1,this.active=!1,this.iframeEl=null,this.trigger=null,this._messageQueue=[],this.api=new R(this),this.zIndex=-1,this.trigger=document.createElement("ace-trigger"),this.trigger.widgetId=this.widgetId,this.trigger.apiUrl=this.apiUrl,this.trigger.id=`ace-trigger_${this.widgetId}`,this.trigger.addEventListener("toggle",t=>{this.toggleExpand()}),this.shadow=this.attachShadow({mode:"open"}),this.shadow.appendChild(A.content.cloneNode(!0)),this.shadow.appendChild(k.content.cloneNode(!0))}static get observedAttributes(){return["widgetid","apiurl","expanded"]}get expanded(){return this.getAttribute("expanded")||"false"}set expanded(t){this.setAttribute("expanded",t),t==="false"&&this.classList.toggle("ace-hidden",!0)}get widgetId(){return this.getAttribute("widgetid")||""}set widgetId(t){this.trigger&&(this.trigger.widgetId=t,this.trigger.id=`ace-trigger_${t}`),this.setAttribute("widgetid",t)}get apiUrl(){return this.getAttribute("apiurl")||q}set apiUrl(t){this.trigger&&(this.trigger.apiUrl=t),this.setAttribute("apiurl",t)}attributeChangedCallback(t,e,i){this.render()}async connectedCallback(){this.widget=await this._loadWidget(this.widgetId),window.addEventListener("message",t=>{var e,i;((e=t.data)==null?void 0:e.type)==="widget-set-active"&&typeof((i=t.data.data)==null?void 0:i.active)=="boolean"&&(this.active=t.data.data.active)}),this.render()}isActivated(){return this.activated}disableAnimations(){const t=this._getContainerEl();t&&(t.style.animationDuration="0ms")}enableAnimations(){const t=this._getContainerEl();t&&(t.style.animationDuration="300ms")}_getContainerEl(){var t;return((t=this.shadowRoot)==null?void 0:t.querySelector(".widget-frame-container"))||null}async activate(){var e;this.widget||(this.widget=await this._loadWidget(this.widgetId)),this._createIFrame(),this.activated=!0;const t=(((e=window.ace)==null?void 0:e.applications)||[]).find(i=>i.id===this.widgetId);t&&(t.storage.get("open")&&t.appendToDOM(),t.trigger.showTrigger()),this.render()}async _loadWidget(t){return await(await fetch(`${this.apiUrl}/widget/${t}`)).json()}dispatch(t,e={}){var s;const i={type:t,data:e};if(e.widgetId||(e.widgetId=this.widgetId),!this.iframeEl){this._messageQueue.push(i);return}(s=this.iframeEl.contentWindow)==null||s.postMessage(i,"*")}async deactivate(){this.activated=!1,this.render()}_createIFrame(){var s;if(!((s=this.widget)!=null&&s.distributionName)||this.iframeEl||!this.widget.linked)return;const t={display:"block",border:"none",opacity:"1","color-scheme":"none",background:"none transparent !important",margin:"0px","max-height":"100%","max-width":"100vw",transform:"translateY(0px)",transition:"none 0s ease 0s !important",visibility:"visible","z-index":"999999999 !important",width:"100%",height:"100%","border-radius":"0.7rem"},e=document.createElement("iframe");Object.entries(t).forEach(([n,a])=>{e.style.setProperty(n,a)});const i=this.apiUrl.replace("/v1","").replace("/api","");e.src=`${i}/${this.widget.organization}/${this.widget.id}?inline=true&fullscreen=true`,e.title=this.getIFrameTitle(),e.setAttribute("allow","camera; microphone; display-capture;"),this.iframeEl=e}getIFrameTitle(){var e,i;let t=(e=this.widget)==null?void 0:e.configuration;if(typeof t=="string")try{t=JSON.parse(t)}catch{t={}}return((i=t==null?void 0:t.texts)==null?void 0:i["iframe.title"])||"ACE Widget"}executeMessageQueue(){this._messageQueue.forEach(t=>{this.dispatch(t.type,t.data)}),this._messageQueue=[]}isExpanded(){return this.expanded==="true"}toggleExpand(t){typeof t!="boolean"?this.expanded=this.isExpanded()?"false":"true":this.isExpanded()!==t&&(this.expanded=t?"true":"false"),this.dispatch("set-open",{value:this.isExpanded()}),this.trigger&&this.trigger.setActive(this.isExpanded())}setZIndex(t){this.zIndex=t,this.render()}render(){var i,s;if(!this.iframeEl)return;this.isExpanded()?(this.classList.add("ace-expanded"),this.classList.remove("ace-hidden")):this.classList.remove("ace-expanded");const t=this.activated?"block":"none";this.iframeEl.style.setProperty("display",t),this.activated?this.classList.add("activated"):this.classList.remove("activated");const e=this._getContainerEl();e&&e.childNodes.length===0&&e.appendChild(this.iframeEl),e&&this.zIndex!==-1&&(e.style.zIndex=this.zIndex.toString()),this.trigger&&((i=this.shadowRoot)==null?void 0:i.querySelectorAll("ace-trigger").length)===0&&((s=this.shadowRoot)==null||s.insertBefore(this.trigger,this.shadowRoot.firstChild))}}window.customElements.get("ace-widget")||window.customElements.define("ace-widget",I),window.customElements.get("ace-trigger")||window.customElements.define("ace-trigger",C),h.SiteComponent=w,h.WidgetComponent=I,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})}));
|