@abtasty/google-form-modal 1.1.3-1 → 1.1.3

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/form.js CHANGED
@@ -1 +1 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e=e||self).widgetForm=r()}(this,(function(){"use strict";var e=function(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e};const r={en:"Recurrence",fr:"Récurrence",es:"Recurrencia",de:"Wiederholung"},a={en:`${r.en} of the display`,fr:`${r.fr} de l'affichage`,es:`${r.es} de visualización`,de:`${r.de} der Anzeige`},n={en:`${r.en} after closure`,fr:`${r.fr} après fermeture`,es:`${r.es} tras el cierre`,de:`${r.de} nach Schließung`},t={en:`${r.en} after validation`,fr:`${r.fr} après validation`,es:`${r.es} tras la validación`,de:`${r.de} nach der Validierung`},i={en:"Trigger",fr:"Déclencheur",es:"Activador",de:"Trigger"},l="style",o={category:"conditions",type:"select",options:[{label:{en:"Every time",fr:"Tout le temps",es:"Todo el tiempo",de:"Jedes Mal"},value:"-1"},{label:{en:"Every session",fr:"Chaque session",es:"A cada sesión",de:"Jede Session"},value:"0"},{label:{en:"Everyday",fr:"Chaque jour",es:"Cada día",de:"Jeden Tag"},value:"1"},{label:{en:"Every week",fr:"Chaque semaine",es:"Cada semana",de:"Jede Woche"},value:"7"},{label:{en:"Every month",fr:"Chaque mois",es:"Cada mes",de:"Jeden Monat"},value:"30"},{label:{en:"Once per user (no recurrence)",fr:"Une fois par visiteur (pas de récurrence)",es:"Una vez por usuario (sin recurrencia)",de:"Einmal pro User (keine Wiederholung)"},value:"365"}],value:"-1"},c={...o,label:n,propName:"closingRecurrence"},d={category:"conditions",type:"group",label:r,collapsible:!0,children:[{...o,label:a,propName:"displayRecurrence"},c,{...o,label:t,propName:"validationRecurrence"}]},s={category:"conditions",type:"group",label:i,collapsible:!0,children:[{category:"conditions",type:"select",label:{en:"Triggers on",fr:"Se déclenche",es:"¿ Cuándo se activa? ",de:"Triggert bei"},options:[{label:{en:"Page load",fr:"Au chargement de la page",es:"Al cargar la página",de:"Beim Laden der Seite"},value:"pageLoad"},{label:{en:"Click",fr:"Au clic",es:"Al hacer clic",de:"Klick"},value:"click"},{label:{en:"Exit intent",fr:"Avant fermeture de l'onglet",es:"Antes de cerrar la pestaña",de:"Exit Intent"},value:"exitIntent"},{label:{en:"Delay",fr:"Après un délai",es:"Tras un retraso",de:"Verzögert"},value:"delay"},{label:{en:"Reengage (after inactivity)",fr:"Au réengagement (après inactivité)",es:"En la reactivación (tras un periodo de inactividad)",de:"Nach Inaktivität"},value:"reengage"}],propName:"triggerEvent",value:"pageLoad"},...[{category:"conditions",type:"selectelement",propName:"triggerEventClick",label:i,placeholder:{en:"Select an element in the webpage",fr:"Sélectionner un élément dans la page",es:"Selecciona un elemento en la página web",de:"Wählen Sie ein Element auf der Webseite aus"},conditions:[{field:"triggerEvent",value:"click"}]},{category:"conditions",type:"number",propName:"triggerEventExitDelay",label:{en:"Delay after exit intent",fr:"Délai après intention de sortie",es:"Retraso después de la intención de salida",de:"Verzögerung nach Ausstiegsabsicht"},min:0,max:120,value:0,conditions:[{field:"triggerEvent",value:"exitIntent"}]},{category:"conditions",type:"number",propName:"triggerEventReengageDelay",label:{en:"Idle timeout before posting",fr:"Délai d'inactivité avant l'affichage",es:"Tiempo de espera inactivo antes de publicar",de:"Zeitüberschreitung vor dem Posten"},min:1,max:120,value:10,conditions:[{field:"triggerEvent",value:"reengage"}]},{category:"conditions",type:"number",propName:"triggerEventDelay",label:{en:"Trigger event delay (in seconds)",fr:"Délai avant l'affichage (en secondes)",es:"Retraso antes de publicar",de:"Verzögerung vor dem Posten"},value:10,conditions:[{field:"triggerEvent",value:"delay"}]}]]};function u(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,n)}return a}function p(r){for(var a=1;a<arguments.length;a++){var n=null!=arguments[a]?arguments[a]:{};a%2?u(Object(n),!0).forEach((function(a){e(r,a,n[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}))}return r}var g={type:"select",category:l,options:[{label:"px",value:"px"},{label:"%",value:"%"},{label:"em",value:"em"},{label:"vw (% of viewport width)",value:"vw"},{label:"vh (% of viewport height)",value:"vh"},{label:"vmin (% of viewport minimum size)",value:"vmin"},{label:"vmax (% of viewport maximum size)",value:"vmax"}]};return[{propName:"iframeUrl",type:"text",category:"content",label:{en:"Google Form url (public link)",fr:"Url du formulaire Google (lien public)",es:"URL pública del formulario de Google",de:"Google Formular URL (Öffentlicher Link)"},placeholder:"https://",value:""},{propName:"width",type:"number",category:l,label:{en:"Width",fr:"Longueur",es:"Ancho",de:"Breite"},value:50},p({label:{en:"Width unit",fr:"Unité de longueur",es:"Unidad de ancho",de:"Breiteneinheit"},propName:"widthUnit",value:"vw"},g),{propName:"height",type:"number",category:l,label:{en:"Height",fr:"Hauteur",es:"Altura",de:"Höhe"},value:50},p({label:{en:"Height unit",fr:"Unité de hauteur",es:"Unidad de altura",de:"Höheneinheit"},propName:"heightUnit",value:"vh"},g),d,s]}));
1
+ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e=e||self).widgetForm=r()}(this,(function(){"use strict";var e=function(e,r,a){return r in e?Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[r]=a,e};const r={en:"Recurrence",fr:"Récurrence",es:"Recurrencia",de:"Wiederholung"},a={en:`${r.en} of the display`,fr:`${r.fr} de l'affichage`,es:`${r.es} de visualización`,de:`${r.de} der Anzeige`},n={en:`${r.en} after closure`,fr:`${r.fr} après fermeture`,es:`${r.es} tras el cierre`,de:`${r.de} nach Schließung`},t={en:`${r.en} after validation`,fr:`${r.fr} après validation`,es:`${r.es} tras la validación`,de:`${r.de} nach der Validierung`},i={en:"Trigger",fr:"Déclencheur",es:"Activador",de:"Trigger"},l="style",o={category:"conditions",type:"select",options:[{label:{en:"Every time",fr:"Tout le temps",es:"Todo el tiempo",de:"Jedes Mal"},value:"-1"},{label:{en:"Every session",fr:"Chaque session",es:"A cada sesión",de:"Jede Session"},value:"0"},{label:{en:"Everyday",fr:"Chaque jour",es:"Cada día",de:"Jeden Tag"},value:"1"},{label:{en:"Every week",fr:"Chaque semaine",es:"Cada semana",de:"Jede Woche"},value:"7"},{label:{en:"Every month",fr:"Chaque mois",es:"Cada mes",de:"Jeden Monat"},value:"30"},{label:{en:"Once per user (no recurrence)",fr:"Une fois par visiteur (pas de récurrence)",es:"Una vez por usuario (sin recurrencia)",de:"Einmal pro User (keine Wiederholung)"},value:"365"}],value:"-1"},c={...o,label:n,propName:"closingRecurrence"},d={category:"conditions",type:"group",label:r,collapsible:!0,children:[{...o,label:a,propName:"displayRecurrence"},c,{...o,label:t,propName:"validationRecurrence"}]},s={category:"conditions",type:"group",label:i,collapsible:!0,children:[{category:"conditions",type:"select",label:{en:"Triggers on",fr:"Se déclenche",es:"¿ Cuándo se activa? ",de:"Triggert bei"},options:[{label:{en:"Page load",fr:"Au chargement de la page",es:"Al cargar la página",de:"Beim Laden der Seite"},value:"pageLoad"},{label:{en:"Click",fr:"Au clic",es:"Al hacer clic",de:"Klick"},value:"click"},{label:{en:"Exit intent",fr:"Avant fermeture de l'onglet",es:"Antes de cerrar la pestaña",de:"Exit Intent"},value:"exitIntent"},{label:{en:"Delay",fr:"Après un délai",es:"Tras un retraso",de:"Verzögert"},value:"delay"},{label:{en:"Reengage (after inactivity)",fr:"Au réengagement (après inactivité)",es:"En la reactivación (tras un periodo de inactividad)",de:"Nach Inaktivität"},value:"reengage"}],propName:"triggerEvent",value:"pageLoad"},{category:"conditions",type:"selectelement",propName:"triggerEventClick",label:i,placeholder:{en:"Select an element in the webpage",fr:"Sélectionner un élément dans la page",es:"Selecciona un elemento en la página web",de:"Wählen Sie ein Element auf der Webseite aus"},conditions:[{field:"triggerEvent",value:"click"}]},{category:"conditions",type:"number",propName:"triggerEventExitDelay",label:{en:"Delay after exit intent",fr:"Délai après intention de sortie",es:"Retraso después de la intención de salida",de:"Verzögerung nach Ausstiegsabsicht"},min:0,max:120,value:0,conditions:[{field:"triggerEvent",value:"exitIntent"}]},{category:"conditions",type:"number",propName:"triggerEventReengageDelay",label:{en:"Idle timeout before posting",fr:"Délai d'inactivité avant l'affichage",es:"Tiempo de espera inactivo antes de publicar",de:"Zeitüberschreitung vor dem Posten"},min:1,max:120,value:10,conditions:[{field:"triggerEvent",value:"reengage"}]},{category:"conditions",type:"number",propName:"triggerEventDelay",label:{en:"Trigger event delay (in seconds)",fr:"Délai avant l'affichage (en secondes)",es:"Retraso antes de publicar",de:"Verzögerung vor dem Posten"},value:10,conditions:[{field:"triggerEvent",value:"delay"}]}]};function u(e,r){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),a.push.apply(a,n)}return a}function p(r){for(var a=1;a<arguments.length;a++){var n=null!=arguments[a]?arguments[a]:{};a%2?u(Object(n),!0).forEach((function(a){e(r,a,n[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}))}return r}var g={type:"select",category:l,options:[{label:"px",value:"px"},{label:"%",value:"%"},{label:"em",value:"em"},{label:"vw (% of viewport width)",value:"vw"},{label:"vh (% of viewport height)",value:"vh"},{label:"vmin (% of viewport minimum size)",value:"vmin"},{label:"vmax (% of viewport maximum size)",value:"vmax"}]};return[{propName:"iframeUrl",type:"text",category:"content",label:{en:"Google Form url (public link)",fr:"Url du formulaire Google (lien public)",es:"URL pública del formulario de Google",de:"Google Formular URL (Öffentlicher Link)"},placeholder:"https://",value:""},{propName:"width",type:"number",category:l,label:{en:"Width",fr:"Longueur",es:"Ancho",de:"Breite"},value:50},p({label:{en:"Width unit",fr:"Unité de longueur",es:"Unidad de ancho",de:"Breiteneinheit"},propName:"widthUnit",value:"vw"},g),{propName:"height",type:"number",category:l,label:{en:"Height",fr:"Hauteur",es:"Altura",de:"Höhe"},value:50},p({label:{en:"Height unit",fr:"Unité de hauteur",es:"Unidad de altura",de:"Höheneinheit"},propName:"heightUnit",value:"vh"},g),d,s]}));
package/dist/main.js CHANGED
@@ -1 +1 @@
1
- !function(){"use strict";const e=()=>Object.prototype.hasOwnProperty.call(window,"ABTastyEditor");const t=()=>!!window.ABTasty.getTestsOnPage()[TEST_ID],s=()=>{const{type:e}=DATA;return`${PACKAGE.replace("@abtasty/","")}${e?`_${e}`:""}`},i=()=>`${PLUGIN_ID.split("-")[0]}_${TEST_ID}`,r=(...e)=>{e.unshift(`[AB Tasty Widget] ${PACKAGE}:`),console.log(...e)},n=(e,t,s)=>{let i=0,n=0;try{document.querySelector(e)}catch(t){const i=`Selector «${e}» not valid.`;return r(i),"function"==typeof s&&s(i)}function o(){clearInterval(n),clearTimeout(i)}return i=setTimeout(()=>{o();const t=`Can't find element «${e}».`;return r(t),"function"==typeof s&&s(t)},1e4),n=setInterval(()=>{const s=document.querySelector(e);return null!==s?(o(),"function"==typeof t&&t(s)):s},200),{clear:o}};async function o(e){let t;switch(e){case"IntersectionObserver":t=await("IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype||function(e){return new Promise((t,s)=>{const i=window.document.getElementsByTagName("script")[0],r=window.document.createElement("script");r.src=e,i.parentNode.insertBefore(r,i),r.onload=t,r.onerror=s})}("https://polyfill.io/v3/polyfill.min.js?flags=gated&features=IntersectionObserver"));break;default:t=!0}return t}class a{constructor({displayRecurrence:e,closingRecurrence:t,validationRecurrence:r},n){this.displayRecurrence=parseFloat(e),this.closingRecurrence=parseFloat(t),this.validationRecurrence=parseFloat(r),this.onSetCallback=n,this.widgetName=s(),this.uniqueId=i(),this.recurrenceKey=`${this.widgetName}_${this.uniqueId}`}getGivenRecurrenceStorageParsed(e){try{const t=e.getItem("ABTastyWidgets");return JSON.parse(t)}catch(t){return e.removeItem("ABTastyWidgets"),!1}}getSessionRecurrenceStorageParsed(){return this.getGivenRecurrenceStorageParsed(window.sessionStorage)}getLocalRecurrenceStorageParsed(){return this.getGivenRecurrenceStorageParsed(window.localStorage)}removeGivenStorage(e,t){const{[this.recurrenceKey]:s,...i}=t;return Object.entries(i).length?(e.setItem("ABTastyWidgets",JSON.stringify(i)),i):(e.removeItem("ABTastyWidgets"),!1)}removeSessionRecurrenceStorage(){const e=this.getSessionRecurrenceStorageParsed();return!!e&&this.removeGivenStorage(window.sessionStorage,e)}removeLocalRecurrenceStorage(){const e=this.getLocalRecurrenceStorageParsed();return!!e&&this.removeGivenStorage(window.localStorage,e)}getSessionRecurrence(){const e=this.getSessionRecurrenceStorageParsed();return!!e&&e[this.recurrenceKey]}getLocalRecurrence(){const e=this.getLocalRecurrenceStorageParsed();return!!e&&e[this.recurrenceKey]}getCurrentRecurrence(){const e=this.getSessionRecurrence(),t=this.getLocalRecurrence();return e||t||{type:!1}}isOver(){const e=this.getLocalRecurrence(),t=(e?parseFloat(e.stamp):0)<(new Date).getTime();return t&&this.removeLocalRecurrenceStorage(),t&&!this.getLocalRecurrence()&&!this.getSessionRecurrence()}setRecurrence(e,t){const s=this.getTypeOfStorage(e);if(!s&&"object"!=typeof s)return!1;const{storageString:i,storageMethod:r}=this.getTypeOfStorage(e),n=this.getStamp(e),o={type:t,stamp:n},{type:a}=this.getCurrentRecurrence(),c=()=>{const e=this.getSessionRecurrence(),t=this.getLocalRecurrence();let s;"session"===i?e?s=this.removeSessionRecurrenceStorage():(this.removeLocalRecurrenceStorage(),s=this.getSessionRecurrenceStorageParsed()):"local"===i&&(t?s=this.removeLocalRecurrenceStorage():(this.removeSessionRecurrenceStorage(),s=this.getLocalRecurrenceStorageParsed()));const n=s?{[this.recurrenceKey]:o,...s}:{[this.recurrenceKey]:o};r.setItem("ABTastyWidgets",JSON.stringify(n)),this.onSetCallback&&"function"==typeof this.onSetCallback&&this.onSetCallback()};if(!r)return!1;if(a&&"validation"!==t)if("closing"===t&&"validation"!==a)c();else{if("display"!==t||"validation"===a||"closing"===a)return!1;c()}else c();return n}setDisplayRecurrence(){this.setRecurrence(this.displayRecurrence,"display")}setClosingRecurrence(){this.setRecurrence(this.closingRecurrence,"closing")}setValidationRecurrence(){this.setRecurrence(this.validationRecurrence,"validation")}getStamp(e){return(new Date).getTime()+864e5*e}getTypeOfStorage(e){return!(isNaN(e)||e<0||0!==e&&!e)&&(e>0?{storageString:"local",storageMethod:window.localStorage}:0===e&&{storageString:"session",storageMethod:window.sessionStorage})}}class c{constructor(){this.targets=[],this.existingTargets=[],this.inViewPortTargets=[],this.visibilityobserver=this.startVisibilityObserver(),this.mutationobserver=this.startMutationObserver()}intersectionHandler(e){e.forEach(e=>{e.isIntersecting?(this.existingTargets=this.existingTargets.filter(t=>t.element!==e.target||(this.inViewPortTargets.push(t),!1)),this.checkElements()):this.inViewPortTargets=this.inViewPortTargets.filter(t=>t.element!==e.target||(this.existingTargets.push(t),!1))})}startVisibilityObserver(){return new IntersectionObserver(this.intersectionHandler.bind(this),{root:null,rootMargin:"0px",threshold:0})}startMutationObserver(){const e=new MutationObserver(this.checkElements.bind(this));return e.observe(document,{attributes:!0,childList:!0,subtree:!0}),e}isElementVisible(e){return this.isElementTopmost(e)&&this.isElementOpaque(e)}isElementOpaque(e){return"HTML"===function e(t,s){return s(t)||!t.parentElement?t:e(t.parentElement,s)}(e,e=>"0"===window.getComputedStyle(e).opacity).nodeName}isElementTopmost(e){const t=e.getBoundingClientRect(),s=[[t.left,t.top],[t.right,t.top],[t.left,t.bottom],[t.right,t.bottom],[t.left+t.width/2,t.top],[t.left+t.width/2,t.bottom],[t.left,t.height/2],[t.right,t.height/2],[t.left+t.left/2,t.height/2]];let i=!1,r=0;for(;!i&&r<s.length;){const t=document.elementFromPoint(...s[r]);i=e===t||e.contains(t),r+=1}return i}checkElements(){this.targets=this.targets.filter(e=>{const t=document.querySelector(e.selector);return!t||(this.existingTargets.push(Object.assign(e,{element:t})),this.visibilityobserver.observe(t),!1)}),this.existingTargets=this.existingTargets.filter(e=>!!document.querySelector(e.selector)||(this.visibilityobserver.unobserve(e.element),this.targets.push(e),!1)),this.inViewPortTargets=this.inViewPortTargets.filter(({element:e,resolve:t})=>!this.isElementVisible(e)||(this.visibilityobserver.unobserve(e),t(e),!1))}watch(e,t){this.targets.push({selector:e,resolve:t})}clear(e){const t=this.targets.filter(t=>t.selector!==e);0===t.length&&(this.existingTargets=[],this.inViewPortTargets=[],this.mutationobserver.disconnect(),this.visibilityobserver.unobserve(document.querySelector(e))),this.targets.length>t&&(this.targets=t,this.visibilityobserver.unobserve(document.querySelector(e)))}}class h{constructor({triggerEvent:e,triggerSelector:t,triggerDelay:s}){this.event=e,this.selector=t&&t.length?t:"body",this.delay=s,this.elementsSelectors=[],this.eventsListeners=[],this.timeouts=[],this.intervals=[],this.observers=[],this.promises=[],this.visibilityObservers=[],this.elementsWaiters=[]}static promiseDeferrer(e){const t={promise:null,resolve:null,reject:null,name:e};return t.promise=new Promise((e,s)=>{t.resolve=e,t.reject=s}),t}async onElementVisible(){const e=h.promiseDeferrer("onElementVisible");this.promises.push(e);const t=await this.onPageLoad(),s=await o("IntersectionObserver"),i=function(e,t){return ABTasty.widgetUtils||(ABTasty.widgetUtils={}),ABTasty.widgetUtils[e]||Object.assign(ABTasty.widgetUtils,{[e]:new t}),ABTasty.widgetUtils[e]}("VisibilityObserver",c);return this.visibilityObservers.push(i),s&&t&&i.watch(this.selector,e.resolve),e.promise}onPageLoad(){const e=h.promiseDeferrer("onPageLoad");this.promises.push(e);const t=()=>"complete"===document.readyState;if(t())e.resolve(!0);else{const s=()=>t()&&!clearTimeout(i)&&!e.resolve(!0),i=setTimeout(()=>e.resolve(!1),2e4),r=["readystatechange",s,{passive:!0}];this.timeouts.push(i),this.eventsListeners.push(r),document.addEventListener(...r)}return e.promise}onClick(){const e=document.createElement("style");e.type="text/css",e.id=`Click_${i()}`,e.innerHTML=`${this.selector} {\n\t\t\tcursor: pointer !important;\n\t\t\tpointer-events: all !important;\n\t\t}`,document.head.appendChild(e),this.elementsSelectors.push(`#${e.id}`);const t=h.promiseDeferrer("onClick");this.promises.push(t);const s=()=>[...document.querySelectorAll(this.selector)],r=e=>s().some(t=>t.isSameNode(e)||!!e.closest(this.selector)),n=["click",({target:e})=>!!r(e)&&(t.resolve(!0),this.clear()),{passive:!0,capture:!0}];return this.eventsListeners.push(n),document.addEventListener(...n),t.promise}onExitIntent(){const e=h.promiseDeferrer("onExitIntent");this.promises.push(e);const t=["mouseleave",async({clientY:t})=>{if(!(t>0))if(this.delay){const t=1e3*this.delay,s=setTimeout(()=>{e.resolve(!0)},t);this.timeouts.push(s)}else e.resolve(!0)},{passive:!0}],s=n("body",e=>{e.addEventListener(...t),this.eventsListeners.push([e,...t]),this.elementsWaiters=this.elementsWaiters.filter(e=>e!==s)});return this.elementsWaiters.push(s),e.promise}onDelay(){const e=h.promiseDeferrer("onDelay");this.promises.push(e);const t=1e3*this.delay,s=setTimeout(()=>{e.resolve(!0)},t);return this.timeouts.push(s),e.promise}onReengage(){const e=h.promiseDeferrer("onReengage");this.promises.push(e);const t=1e3*this.delay;let s=t;const i=[()=>(s=t,s),{passive:!0}];["click","mousemove","scroll","keypress"].forEach(e=>{document.addEventListener(e,...i),this.eventsListeners.push([e,...i])});const r=setInterval(()=>{s<=0?e.resolve(!0):s-=100},100);return this.intervals.push(r),e.promise}clear(){return this.elementsSelectors.length&&(this.elementsSelectors.forEach(e=>{document.querySelector(e)&&document.querySelector(e).remove()}),this.elementsSelectors=[]),this.eventsListeners.length&&(this.eventsListeners.forEach(e=>{const[t,...s]="string"==typeof e[0]?[document,...e]:e;t&&s.length>1&&t.removeEventListener(...s)}),this.eventsListeners=[]),this.timeouts.length&&(this.timeouts.forEach(e=>clearTimeout(e)),this.timeouts=[]),this.intervals.length&&(this.intervals.forEach(e=>clearInterval(e)),this.intervals=[]),this.observers.length&&(this.observers.forEach(e=>e.disconnect()),this.observers=[]),this.visibilityObservers.length&&(this.visibilityObservers.forEach(e=>e.clear(this.selector)),this.visibilityObservers=[]),this.promises.length&&(this.promises.forEach(e=>e.resolve(!1)),this.promises=[]),this.elementsWaiters.length&&(this.elementsWaiters.forEach(e=>e.clear()),this.elementsWaiters=[]),this}async isTriggered(){let e;switch(this.clear(),this.event){case"pageLoad":e=await this.onPageLoad(),this.clear();break;case"click":e=await this.onClick(),this.clear();break;case"exitIntent":e=await this.onExitIntent(),this.clear();break;case"delay":e=await this.onDelay(),this.clear();break;case"reengage":e=await this.onReengage(),this.clear();break;case"elementVisible":e=await this.onElementVisible(),this.clear();break;default:e=!1}return e}}class l{constructor(e,t,s){this.recurrence=e,this.isWidgetApplied=t,this.callback=s,this.observer=new MutationObserver(this.observerHandler.bind(this)),this.eventListenerParams=["abtasty_resetActionTracking",this.eventHandler.bind(this),{passive:!0}],this.elementsWaiters=[]}recurrenceIsDone(){return!this.recurrence||this.recurrence.isOver()}decisionHandler(e){const s=t(),{type:i}=this.recurrence?this.recurrence.getCurrentRecurrence():{type:!1},r=()=>e&&"display"===i||this.recurrenceIsDone();return!this.isWidgetApplied()&&s&&r()?(this.clearWatcher(),this.callback("rebuild",e)):(!this.isWidgetApplied()||s&&r())&&(this.isWidgetApplied()||s)||(this.clearWatcher(),this.callback("remove",e),this.watch()),this}eventHandler(){let e=t();return[250,500].forEach(s=>setTimeout(()=>500===s&&t()===e?this:(e=t(),this.decisionHandler(!1)),s)),this}observerHandler(e){const t=e.some(({removedNodes:e})=>e&&e.length),s=e.some(({addedNodes:e})=>e&&e.length);return t||s?(this.decisionHandler(!0),this):this}watch(){if(e())return this;this.clearWatcher(),document.addEventListener(...this.eventListenerParams);const t=n("body",e=>{const s=[e,{childList:!0,subtree:!0}];this.observer.observe(...s),this.elementsWaiters=this.elementsWaiters.filter(e=>e!==t)});return this.elementsWaiters.push(t),this}clearWatcher(){return document.removeEventListener(...this.eventListenerParams),this.elementsWaiters.length&&(this.elementsWaiters.forEach(e=>e.clear()),this.elementsWaiters=[]),this.observer.disconnect(),this}}const u=["pageLoad","delay","reengage"];class g extends class{constructor(){this.uniqueId=i(),this.widgetName=s(),this.recurrenceParams=(()=>{const{displayRecurrence:t,closingRecurrence:s,validationRecurrence:i}=DATA;return!(e()||!(t||s||i))&&{displayRecurrence:t,closingRecurrence:s,validationRecurrence:i}})(),this.triggerParams=(()=>{const{triggerEvent:t,triggerEventClick:s,triggerEventExitDelay:i,triggerEventDelay:r,triggerEventReengageDelay:n}=DATA;if(e()||!t)return!1;const o=s;let a;switch(t){case"exitIntent":a=i;break;case"delay":a=r;break;case"reengage":a=n;break;default:a=0}return{triggerEvent:t,triggerSelector:o,triggerDelay:a}})(),this.recurrence=!!this.recurrenceParams&&new a(this.recurrenceParams,this.clearGivenClearables.bind(this)),this.trigger=!!this.triggerParams&&new h(this.triggerParams),this.pageWatcher=new l(this.recurrence,this.isWidgetApplied.bind(this),this.onPageChange.bind(this)),this.hasOncePerPageTrigger=!!this.trigger&&u.some(e=>e===this.trigger.event),this.basicClassName=`ab_widget_container_${this.widgetName}`,this.widgetContainerId=`${this.basicClassName}_${this.uniqueId}`,this.contentClassName=`${this.basicClassName}_content`,this.overlayClassName=`${this.basicClassName}_overlay`,this.closeButtonClassName=`${this.basicClassName}_close_button`,this.hideClassName=`ab_hide_${this.uniqueId}`,this.domElement=this.getDom(),this.hasBeenShown=!1,this.closedByUser=!1,this.eventsListeners=[],this.timeouts=[],this.intervals=[],this.observers=[],this.promises=[],this.elementsWaiters=[]}clearGivenClearables(){this.eventsListeners.length&&(this.eventsListeners.forEach(e=>document.removeEventListener(...e)),this.eventsListeners=[]),this.timeouts.length&&(this.timeouts.forEach(e=>clearTimeout(e)),this.timeouts=[]),this.intervals.length&&(this.intervals.forEach(e=>clearInterval(e)),this.intervals=[]),this.observers.length&&(this.observers.forEach(e=>e.disconnect()),this.observers=[]),this.promises.length&&(this.promises.forEach(e=>e.resolve(!1)),this.promises=[]),this.elementsWaiters.length&&(this.elementsWaiters.forEach(e=>e.clear()),this.elementsWaiters=[])}isWidgetApplied(){return this.domElement&&!!this.domElement.closest("html")}removeOldDomElement(){const e=document.getElementById(this.widgetContainerId);return e&&e.remove(),this}insert(){const e=new Promise((t,s)=>{n("body",s=>{this.elementsWaiters=this.elementsWaiters.filter(t=>t!==e),this.removeOldDomElement(),t(s.appendChild(this.domElement))},t=>{this.elementsWaiters=this.elementsWaiters.filter(t=>t!==e),r(t),s(t)})}),t=new Promise((e,s)=>{n("head",s=>{this.elementsWaiters=this.elementsWaiters.filter(e=>e!==t),e(s.appendChild(this.styleElement))},e=>{this.elementsWaiters=this.elementsWaiters.filter(e=>e!==t),r(e),s(e)})});return Promise.all([e,t]).then(()=>this)}remove(){return this.pageWatcher.clearWatcher(),this.domElement&&this.domElement.closest("html")&&this.domElement.remove(),this.styleElement&&this.styleElement.closest("html")&&this.styleElement.remove(),this.hasOncePerPageTrigger?this.pageWatcher.watch():e()||this.init().then(e=>e?this.show():this),this}show(){return this.hasBeenShown||e()||window.ABTastyEvent(`${this.widgetName} displayed`,null,TEST_ID),this.closedByUser=!1,this.domElement.classList.remove(this.hideClassName),this.recurrence&&this.recurrence.setDisplayRecurrence(),this.hasBeenShown=!0,this.pageWatcher.watch(),this}hide(){return this.hasBeenShown&&!e()&&window.ABTastyEvent(`${this.widgetName} closed`,null,TEST_ID),this.closedByUser=!0,this.domElement.classList.add(this.hideClassName),this}async init(){if(!e()&&!t())return!1;if(this.trigger&&this.trigger.promises.length)return!1;const s=this.recurrence&&this.recurrence.isOver();return this.recurrence&&!s?(this.pageWatcher.watch(),!1):(this.pageWatcher.watch(),!!(e()||!this.trigger||this.trigger&&await this.trigger.isTriggered())&&(await this.insert(),this.addCloseEvent(),this))}onPageChange(e,t){const s=()=>this.init().then(e=>e&&this.show());switch(t||(this.hasBeenShown=!1),e){case"remove":this.isWidgetApplied()?this.remove():(this.trigger&&this.trigger.clear(),this.pageWatcher.watch());break;case"rebuild":this.hasBeenShown?this.closedByUser?this.pageWatcher.watch():this.insert().then(e=>e.show()):s()}}addCloseEvent(...e){const t=this.domElement.querySelectorAll(`\n\t\t\t.${this.overlayClassName},\n\t\t\t.${this.closeButtonClassName}\n\t\t`);return e.push(...t),e.forEach(e=>{e.addEventListener("click",()=>{this.recurrence&&this.recurrence.setClosingRecurrence(),this.hide(),setTimeout(()=>this.remove(),1e3)},{passive:!0,once:!0})}),this}getDom(){const t=document.createElement("div");return t.className=`${this.basicClassName} ${this.hideClassName}`,t.id=this.widgetContainerId,t.innerHTML=`\n\t\t\t<div class="${this.overlayClassName}"></div>\n\t\t\t<div class="${this.contentClassName}">\n\t\t\t\t<button class="${this.closeButtonClassName}" ${e()?"data-abtasty-actionnable":""}>+</button>\n\t\t\t</div>`,t}getStyleTag(t=""){const s=document.createElement("style");return s.type="text/css",e()&&s.setAttribute("abtasty-script-added","true"),s.textContent=`\n\t\t\t.${this.hideClassName} {opacity: 0 !important; pointer-events: none;}\n\t\t\t${t}`,s}}{constructor(){super(),this.stringStyles=this.getStyles(),this.styleElement=this.getStyleTag(this.stringStyles)}getStyles(){return`\n\t\t#${this.widgetContainerId} {\n\t\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tz-index: 9999;\n\t\t\topacity: 1;\n\t\t\ttransition: opacity 0.25s ease;\n\t\t}\n\t\t#${this.widgetContainerId} .${this.overlayClassName} {\n\t\t\tposition: absolute;\n\t\t\tz-index: -1;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tbackground-color: black;\n\t\t\topacity: 0.6;\n\t\t}\n\t\t#${this.widgetContainerId} .${this.contentClassName} {\n\t\t\tposition: absolute;\n\t\t\tleft: 50%;\n\t\t\ttop: 50%;\n\t\t\ttransform: translate(-50%, -50%);\n\t\t\twidth: auto;\n\t\t\theight: auto;\n\t\t}\n\t\t#${this.widgetContainerId} .${this.closeButtonClassName} {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\twidth: auto;\n\t\t\theight: auto;\n\t\t\tcolor: black;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\ttransform: rotate(45deg);\n\t\t\tcursor: pointer;\n\t\t\toutline: none;\n\t\t\tfont-size: 1.8em;\n\t\t}\n\t\t\n\t\t@media screen and (max-width: 550px) and (orientation: portrait) {\n\t\t\t#${this.widgetContainerId} .${this.closeButtonClassName} {\n\t\t\t\tfont-size: 6vmin;\n\t\t\t}\n\t\t}`}}function m(){var e,t,s,i,r,n,o,a,c,h,l,u=(e=new g).domElement.querySelector(".".concat(e.contentClassName)),m=function(e){var t=DATA.iframeUrl,s=document.createElement("iframe");return s.id="tasty_frame_".concat(e),s.src=t,s}(e.uniqueId);return t=e.styleElement,s=e.widgetContainerId,i=e.contentClassName,r=e.uniqueId,n=DATA,o=n.width,a=n.widthUnit,c=n.height,h=n.heightUnit,l="\n #".concat(s," .").concat(i," {\n width: ").concat(o).concat(a,";\n height: ").concat(c).concat(h,";\n }\n #tasty_frame_").concat(r," {\n border: none;\n width: 100%;\n height: 100%;\n }"),t.innerHTML+=l,u.appendChild(m),e.init().then((function(t){return t&&e.show()})),{parentContainer:e}}var d;(d=DATA.iframeUrl)&&"string"==typeof d&&d.length&&m()}();
1
+ !function(){"use strict";const e=()=>!!window.ABTasty.getTestsOnPage()[TEST_ID],t=()=>Object.prototype.hasOwnProperty.call(window,"ABTastyEditor");const s=()=>{const{type:e}=DATA;return`${PACKAGE.replace("@abtasty/","")}${e?`_${e}`:""}`},i=()=>`${PLUGIN_ID.split("-")[0]}_${TEST_ID}`,r=(...e)=>{e.unshift(`[AB Tasty Widget] ${PACKAGE}:`),console.log(...e)},n=(e,t,s)=>{let i=0,n=0;try{document.querySelector(e)}catch(t){const i=`Selector «${e}» not valid.`;return r(i),"function"==typeof s&&s(i)}function o(){clearInterval(n),clearTimeout(i)}return i=setTimeout(()=>{o();const t=`Can't find element «${e}».`;return r(t),"function"==typeof s&&s(t)},1e4),n=setInterval(()=>{const s=document.querySelector(e);return null!==s?(o(),"function"==typeof t&&t(s)):s},200),{clear:o}};async function o(e){let t;switch(e){case"IntersectionObserver":t=await("IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype||function(e){return new Promise((t,s)=>{const i=window.document.getElementsByTagName("script")[0],r=window.document.createElement("script");r.src=e,i.parentNode.insertBefore(r,i),r.onload=t,r.onerror=s})}(""));break;default:t=!0}return t}class a{constructor({displayRecurrence:e,closingRecurrence:t,validationRecurrence:r},n){this.displayRecurrence=parseFloat(e),this.closingRecurrence=parseFloat(t),this.validationRecurrence=parseFloat(r),this.onSetCallback=n,this.widgetName=s(),this.uniqueId=i(),this.recurrenceKey=`${this.widgetName}_${this.uniqueId}`}getGivenRecurrenceStorageParsed(e){try{const t=e.getItem("ABTastyWidgets");return JSON.parse(t)}catch(t){return e.removeItem("ABTastyWidgets"),!1}}getSessionRecurrenceStorageParsed(){return this.getGivenRecurrenceStorageParsed(window.sessionStorage)}getLocalRecurrenceStorageParsed(){return this.getGivenRecurrenceStorageParsed(window.localStorage)}removeGivenStorage(e,t){const{[this.recurrenceKey]:s,...i}=t;return Object.entries(i).length?(e.setItem("ABTastyWidgets",JSON.stringify(i)),i):(e.removeItem("ABTastyWidgets"),!1)}removeSessionRecurrenceStorage(){const e=this.getSessionRecurrenceStorageParsed();return!!e&&this.removeGivenStorage(window.sessionStorage,e)}removeLocalRecurrenceStorage(){const e=this.getLocalRecurrenceStorageParsed();return!!e&&this.removeGivenStorage(window.localStorage,e)}getSessionRecurrence(){const e=this.getSessionRecurrenceStorageParsed();return!!e&&e[this.recurrenceKey]}getLocalRecurrence(){const e=this.getLocalRecurrenceStorageParsed();return!!e&&e[this.recurrenceKey]}getCurrentRecurrence(){const e=this.getSessionRecurrence(),t=this.getLocalRecurrence();return e||t||{type:!1}}isOver(){const e=this.getLocalRecurrence(),t=(e?parseFloat(e.stamp):0)<(new Date).getTime();return t&&this.removeLocalRecurrenceStorage(),t&&!this.getLocalRecurrence()&&!this.getSessionRecurrence()}setRecurrence(e,t){const s=this.getTypeOfStorage(e);if(!s&&"object"!=typeof s)return!1;const{storageString:i,storageMethod:r}=this.getTypeOfStorage(e),n=this.getStamp(e),o={type:t,stamp:n},{type:a}=this.getCurrentRecurrence(),c=()=>{const e=this.getSessionRecurrence(),t=this.getLocalRecurrence();let s;"session"===i?e?s=this.removeSessionRecurrenceStorage():(this.removeLocalRecurrenceStorage(),s=this.getSessionRecurrenceStorageParsed()):"local"===i&&(t?s=this.removeLocalRecurrenceStorage():(this.removeSessionRecurrenceStorage(),s=this.getLocalRecurrenceStorageParsed()));const n=s?{[this.recurrenceKey]:o,...s}:{[this.recurrenceKey]:o};r.setItem("ABTastyWidgets",JSON.stringify(n)),this.onSetCallback&&"function"==typeof this.onSetCallback&&this.onSetCallback()};if(!r)return!1;if(a&&"validation"!==t)if("closing"===t&&"validation"!==a)c();else{if("display"!==t||"validation"===a||"closing"===a)return!1;c()}else c();return n}setDisplayRecurrence(){this.setRecurrence(this.displayRecurrence,"display")}setClosingRecurrence(){this.setRecurrence(this.closingRecurrence,"closing")}setValidationRecurrence(){this.setRecurrence(this.validationRecurrence,"validation")}getStamp(e){return(new Date).getTime()+864e5*e}getTypeOfStorage(e){return!(isNaN(e)||e<0||0!==e&&!e)&&(e>0?{storageString:"local",storageMethod:window.localStorage}:0===e&&{storageString:"session",storageMethod:window.sessionStorage})}}class c{constructor(){this.targets=[],this.existingTargets=[],this.inViewPortTargets=[],this.visibilityobserver=this.startVisibilityObserver(),this.mutationobserver=this.startMutationObserver()}intersectionHandler(e){e.forEach(e=>{e.isIntersecting?(this.existingTargets=this.existingTargets.filter(t=>t.element!==e.target||(this.inViewPortTargets.push(t),!1)),this.checkElements()):this.inViewPortTargets=this.inViewPortTargets.filter(t=>t.element!==e.target||(this.existingTargets.push(t),!1))})}startVisibilityObserver(){return new IntersectionObserver(this.intersectionHandler.bind(this),{root:null,rootMargin:"0px",threshold:0})}startMutationObserver(){const e=new MutationObserver(this.checkElements.bind(this));return e.observe(document,{attributes:!0,childList:!0,subtree:!0}),e}isElementVisible(e){return this.isElementTopmost(e)&&this.isElementOpaque(e)}isElementOpaque(e){return"HTML"===function e(t,s){return s(t)||!t.parentElement?t:e(t.parentElement,s)}(e,e=>"0"===window.getComputedStyle(e).opacity).nodeName}isElementTopmost(e){const t=e.getBoundingClientRect(),s=[[t.left,t.top],[t.right,t.top],[t.left,t.bottom],[t.right,t.bottom],[t.left+t.width/2,t.top],[t.left+t.width/2,t.bottom],[t.left,t.height/2],[t.right,t.height/2],[t.left+t.left/2,t.height/2]];let i=!1,r=0;for(;!i&&r<s.length;){const t=document.elementFromPoint(...s[r]);i=e===t||e.contains(t),r+=1}return i}checkElements(){this.targets=this.targets.filter(e=>{const t=document.querySelector(e.selector);return!t||(this.existingTargets.push(Object.assign(e,{element:t})),this.visibilityobserver.observe(t),!1)}),this.existingTargets=this.existingTargets.filter(e=>!!document.querySelector(e.selector)||(this.visibilityobserver.unobserve(e.element),this.targets.push(e),!1)),this.inViewPortTargets=this.inViewPortTargets.filter(({element:e,resolve:t})=>!this.isElementVisible(e)||(this.visibilityobserver.unobserve(e),t(e),!1))}watch(e,t){this.targets.push({selector:e,resolve:t})}clear(e){const t=this.targets.filter(t=>t.selector!==e);0===t.length&&(this.existingTargets=[],this.inViewPortTargets=[],this.mutationobserver.disconnect(),this.visibilityobserver.unobserve(e)),this.targets.length>t&&(this.targets=t,this.visibilityobserver.unobserve(e))}}class h{constructor({triggerEvent:e,triggerSelector:t,triggerDelay:s}){this.event=e,this.selector=t&&t.length?t:"body",this.delay=s,this.elementsSelectors=[],this.eventsListeners=[],this.timeouts=[],this.intervals=[],this.observers=[],this.promises=[],this.visibilityObservers=[],this.elementsWaiters=[]}static promiseDeferrer(e){const t={promise:null,resolve:null,reject:null,name:e};return t.promise=new Promise((e,s)=>{t.resolve=e,t.reject=s}),t}async onElementVisible(){const e=h.promiseDeferrer("onElementVisible");this.promises.push(e);const t=await this.onPageLoad(),s=await o("IntersectionObserver"),i=function(e,t){return ABTasty.widgetUtils||(ABTasty.widgetUtils={}),ABTasty.widgetUtils[e]||Object.assign(ABTasty.widgetUtils,{[e]:new t}),ABTasty.widgetUtils[e]}("VisibilityObserver",c);return this.visibilityObservers.push(i),s&&t&&i.watch(this.selector,e.resolve),e.promise}onPageLoad(){const e=h.promiseDeferrer("onPageLoad");this.promises.push(e);const t=()=>"complete"===document.readyState;if(t())e.resolve(!0);else{const s=()=>t()&&!clearTimeout(i)&&!e.resolve(!0),i=setTimeout(()=>e.resolve(!1),2e4),r=["readystatechange",s,{passive:!0}];this.timeouts.push(i),this.eventsListeners.push(r),document.addEventListener(...r)}return e.promise}onClick(){const e=document.createElement("style");e.type="text/css",e.id=`Click_${i()}`,e.innerHTML=`${this.selector} {\n\t\t\tcursor: pointer !important;\n\t\t\tpointer-events: all !important;\n\t\t}`,document.head.appendChild(e),this.elementsSelectors.push(`#${e.id}`);const t=h.promiseDeferrer("onClick");this.promises.push(t);const s=()=>[...document.querySelectorAll(this.selector)],r=e=>s().some(t=>t.isSameNode(e)||!!e.closest(this.selector)),n=["click",({target:e})=>!!r(e)&&(t.resolve(!0),this.clear()),{passive:!0,capture:!0}];return this.eventsListeners.push(n),document.addEventListener(...n),t.promise}onExitIntent(){const e=h.promiseDeferrer("onExitIntent");this.promises.push(e);const t=["mouseleave",async({clientY:t})=>{if(!(t>0))if(this.delay){const t=1e3*this.delay,s=setTimeout(()=>{e.resolve(!0)},t);this.timeouts.push(s)}else e.resolve(!0)},{passive:!0}],s=n("body",e=>{e.addEventListener(...t),this.eventsListeners.push([e,...t]),this.elementsWaiters=this.elementsWaiters.filter(e=>e!==s)});return this.elementsWaiters.push(s),e.promise}onDelay(){const e=h.promiseDeferrer("onDelay");this.promises.push(e);const t=1e3*this.delay,s=setTimeout(()=>{e.resolve(!0)},t);return this.timeouts.push(s),e.promise}onReengage(){const e=h.promiseDeferrer("onReengage");this.promises.push(e);const t=1e3*this.delay;let s=t;const i=[()=>(s=t,s),{passive:!0}];["click","mousemove","scroll","keypress"].forEach(e=>{document.addEventListener(e,...i),this.eventsListeners.push([e,...i])});const r=setInterval(()=>{s<=0?e.resolve(!0):s-=100},100);return this.intervals.push(r),e.promise}clear(){return this.elementsSelectors.length&&(this.elementsSelectors.forEach(e=>{document.querySelector(e)&&document.querySelector(e).remove()}),this.elementsSelectors=[]),this.eventsListeners.length&&(this.eventsListeners.forEach(e=>{const[t,...s]="string"==typeof e[0]?[document,...e]:e;t&&s.length>1&&t.removeEventListener(...s)}),this.eventsListeners=[]),this.timeouts.length&&(this.timeouts.forEach(e=>clearTimeout(e)),this.timeouts=[]),this.intervals.length&&(this.intervals.forEach(e=>clearInterval(e)),this.intervals=[]),this.observers.length&&(this.observers.forEach(e=>e.disconnect()),this.observers=[]),this.visibilityObservers.length&&(this.visibilityObservers.forEach(e=>e.clear(this.selector)),this.visibilityObservers=[]),this.promises.length&&(this.promises.forEach(e=>e.resolve(!1)),this.promises=[]),this.elementsWaiters.length&&(this.elementsWaiters.forEach(e=>e.clear()),this.elementsWaiters=[]),this}async isTriggered(){let e;switch(this.clear(),this.event){case"pageLoad":e=await this.onPageLoad(),this.clear();break;case"click":e=await this.onClick(),this.clear();break;case"exitIntent":e=await this.onExitIntent(),this.clear();break;case"delay":e=await this.onDelay(),this.clear();break;case"reengage":e=await this.onReengage(),this.clear();break;case"elementVisible":e=await this.onElementVisible(),this.clear();break;default:e=!1}return e}}class l{constructor(e,t,s){this.recurrence=e,this.isWidgetApplied=t,this.callback=s,this.observer=new MutationObserver(this.observerHandler.bind(this)),this.eventListenerParams=["abtasty_resetActionTracking",this.eventHandler.bind(this),{passive:!0}],this.elementsWaiters=[]}recurrenceIsDone(){return!this.recurrence||this.recurrence.isOver()}decisionHandler(t){const s=e(),{type:i}=this.recurrence?this.recurrence.getCurrentRecurrence():{type:!1},r=()=>t&&"display"===i||this.recurrenceIsDone();return!this.isWidgetApplied()&&s&&r()?(this.clearWatcher(),this.callback("rebuild",t)):(!this.isWidgetApplied()||s&&r())&&(this.isWidgetApplied()||s)||(this.clearWatcher(),this.callback("remove",t),this.watch()),this}eventHandler(){let t=e();return[250,500].forEach(s=>setTimeout(()=>500===s&&e()===t?this:(t=e(),this.decisionHandler(!1)),s)),this}observerHandler(e){const t=e.some(({removedNodes:e})=>e&&e.length),s=e.some(({addedNodes:e})=>e&&e.length);return t||s?(this.decisionHandler(!0),this):this}watch(){if(t())return this;this.clearWatcher(),document.addEventListener(...this.eventListenerParams);const e=n("body",t=>{const s=[t,{childList:!0,subtree:!0}];this.observer.observe(...s),this.elementsWaiters=this.elementsWaiters.filter(t=>t!==e)});return this.elementsWaiters.push(e),this}clearWatcher(){return document.removeEventListener(...this.eventListenerParams),this.elementsWaiters.length&&(this.elementsWaiters.forEach(e=>e.clear()),this.elementsWaiters=[]),this.observer.disconnect(),this}}const u=["pageLoad","delay","reengage"];class g extends class{constructor(){this.uniqueId=i(),this.widgetName=s(),this.recurrenceParams=(()=>{const{displayRecurrence:e,closingRecurrence:s,validationRecurrence:i}=DATA;return!(t()||!(e||s||i))&&{displayRecurrence:e,closingRecurrence:s,validationRecurrence:i}})(),this.triggerParams=(()=>{const{triggerEvent:e,triggerEventClick:s,triggerEventExitDelay:i,triggerEventDelay:r,triggerEventReengageDelay:n}=DATA;if(t()||!e)return!1;const o=s;let a;switch(e){case"exitIntent":a=i;break;case"delay":a=r;break;case"reengage":a=n;break;default:a=0}return{triggerEvent:e,triggerSelector:o,triggerDelay:a}})(),this.recurrence=!!this.recurrenceParams&&new a(this.recurrenceParams,this.clearGivenClearables.bind(this)),this.trigger=!!this.triggerParams&&new h(this.triggerParams),this.pageWatcher=new l(this.recurrence,this.isWidgetApplied.bind(this),this.onPageChange.bind(this)),this.hasOncePerPageTrigger=!!this.trigger&&u.some(e=>e===this.trigger.event),this.basicClassName=`ab_widget_container_${this.widgetName}`,this.widgetContainerId=`${this.basicClassName}_${this.uniqueId}`,this.contentClassName=`${this.basicClassName}_content`,this.overlayClassName=`${this.basicClassName}_overlay`,this.closeButtonClassName=`${this.basicClassName}_close_button`,this.hideClassName=`ab_hide_${this.uniqueId}`,this.domElement=this.getDom(),this.hasBeenShown=!1,this.closedByUser=!1,this.eventsListeners=[],this.timeouts=[],this.intervals=[],this.observers=[],this.promises=[],this.elementsWaiters=[]}clearGivenClearables(){this.eventsListeners.length&&(this.eventsListeners.forEach(e=>document.removeEventListener(...e)),this.eventsListeners=[]),this.timeouts.length&&(this.timeouts.forEach(e=>clearTimeout(e)),this.timeouts=[]),this.intervals.length&&(this.intervals.forEach(e=>clearInterval(e)),this.intervals=[]),this.observers.length&&(this.observers.forEach(e=>e.disconnect()),this.observers=[]),this.promises.length&&(this.promises.forEach(e=>e.resolve(!1)),this.promises=[]),this.elementsWaiters.length&&(this.elementsWaiters.forEach(e=>e.clear()),this.elementsWaiters=[])}isWidgetApplied(){return this.domElement&&!!this.domElement.closest("html")}removeOldDomElement(){const e=document.getElementById(this.widgetContainerId);return e&&e.remove(),this}insert(){const e=n("head",t=>(this.elementsWaiters=this.elementsWaiters.filter(t=>t!==e),t.appendChild(this.styleElement)),t=>(this.elementsWaiters=this.elementsWaiters.filter(t=>t!==e),r(t))),t=n("body",e=>(this.elementsWaiters=this.elementsWaiters.filter(e=>e!==t),this.removeOldDomElement(),e.appendChild(this.domElement)),e=>(this.elementsWaiters=this.elementsWaiters.filter(e=>e!==t),r(e)));return this.elementsWaiters.push(e,t),this}remove(){return this.pageWatcher.clearWatcher(),this.domElement&&this.domElement.closest("html")&&this.domElement.remove(),this.styleElement&&this.styleElement.closest("html")&&this.styleElement.remove(),this.hasOncePerPageTrigger?this.pageWatcher.watch():t()||this.init().then(e=>e?this.show():this),this}show(){return this.closedByUser=!1,this.domElement.classList.remove(this.hideClassName),this.recurrence&&this.recurrence.setDisplayRecurrence(),this.hasBeenShown=!0,this.pageWatcher.watch(),this}hide(){return this.closedByUser=!0,this.domElement.classList.add(this.hideClassName),this}async init(){if(!t()&&!e())return!1;if(this.trigger&&this.trigger.promises.length)return!1;const s=this.recurrence&&this.recurrence.isOver();return this.recurrence&&!s?(this.pageWatcher.watch(),!1):(this.pageWatcher.watch(),!!(t()||!this.trigger||this.trigger&&await this.trigger.isTriggered())&&(this.insert(),this.addCloseEvent(),this))}onPageChange(e,t){const s=()=>this.init().then(e=>e&&this.show());switch(t||(this.hasBeenShown=!1),e){case"remove":this.isWidgetApplied()?this.remove():(this.trigger&&this.trigger.clear(),this.pageWatcher.watch());break;case"rebuild":this.hasBeenShown?this.closedByUser?this.pageWatcher.watch():this.insert().show():s()}}addCloseEvent(...e){const t=this.domElement.querySelectorAll(`\n\t\t\t.${this.overlayClassName},\n\t\t\t.${this.closeButtonClassName}\n\t\t`);return e.push(...t),e.forEach(e=>{e.addEventListener("click",()=>{this.recurrence&&this.recurrence.setClosingRecurrence(),this.hide(),setTimeout(()=>this.remove(),1e3)},{passive:!0,once:!0})}),this}getDom(){const e=document.createElement("div");return e.className=`${this.basicClassName} ${this.hideClassName}`,e.id=this.widgetContainerId,e.innerHTML=`\n\t\t\t<div class="${this.overlayClassName}"></div>\n\t\t\t<div class="${this.contentClassName}">\n\t\t\t\t<button class="${this.closeButtonClassName}" ${t()?"data-abtasty-actionnable":""}>+</button>\n\t\t\t</div>`,e}getStyleTag(e=""){const s=document.createElement("style");return s.type="text/css",t()&&s.setAttribute("abtasty-script-added","true"),s.textContent=`\n\t\t\t.${this.hideClassName} {opacity: 0 !important; pointer-events: none;}\n\t\t\t${e}`,s}}{constructor(){super(),this.stringStyles=this.getStyles(),this.styleElement=this.getStyleTag(this.stringStyles)}getStyles(){return`\n\t\t#${this.widgetContainerId} {\n\t\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tz-index: 9999;\n\t\t\topacity: 1;\n\t\t\ttransition: opacity 0.25s ease;\n\t\t}\n\t\t#${this.widgetContainerId} .${this.overlayClassName} {\n\t\t\tposition: absolute;\n\t\t\tz-index: -1;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tbackground-color: black;\n\t\t\topacity: 0.6;\n\t\t}\n\t\t#${this.widgetContainerId} .${this.contentClassName} {\n\t\t\tposition: absolute;\n\t\t\tleft: 50%;\n\t\t\ttop: 50%;\n\t\t\ttransform: translate(-50%, -50%);\n\t\t\twidth: auto;\n\t\t\theight: auto;\n\t\t}\n\t\t#${this.widgetContainerId} .${this.closeButtonClassName} {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\twidth: auto;\n\t\t\theight: auto;\n\t\t\tcolor: black;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\ttransform: rotate(45deg);\n\t\t\tcursor: pointer;\n\t\t\toutline: none;\n\t\t\tfont-size: 1.8em;\n\t\t}\n\t\t\n\t\t@media screen and (max-width: 550px) and (orientation: portrait) {\n\t\t\t#${this.widgetContainerId} .${this.closeButtonClassName} {\n\t\t\t\tfont-size: 6vmin;\n\t\t\t}\n\t\t}`}}function m(){var e,t,s,i,r,n,o,a,c,h,l,u=(e=new g).domElement.querySelector(".".concat(e.contentClassName)),m=function(e){var t=DATA.iframeUrl,s=document.createElement("iframe");return s.id="tasty_frame_".concat(e),s.src=t,s}(e.uniqueId);return t=e.styleElement,s=e.widgetContainerId,i=e.contentClassName,r=e.uniqueId,n=DATA,o=n.width,a=n.widthUnit,c=n.height,h=n.heightUnit,l="\n #".concat(s," .").concat(i," {\n width: ").concat(o).concat(a,";\n height: ").concat(c).concat(h,";\n }\n #tasty_frame_").concat(r," {\n border: none;\n width: 100%;\n height: 100%;\n }"),t.innerHTML+=l,u.appendChild(m),e.init().then((function(t){return t&&e.show()})),{parentContainer:e}}var d;(d=DATA.iframeUrl)&&"string"==typeof d&&d.length&&m()}();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@abtasty/google-form-modal",
3
3
  "description": "Widget for AB Tasty",
4
- "version": "1.1.3-1",
4
+ "version": "1.1.3",
5
5
  "form": "dist/form.js",
6
6
  "main": "dist/main.js",
7
7
  "files": [
@@ -14,8 +14,7 @@
14
14
  "start": "concurrently --kill-others \"npm run watch\" \"npm run serve\"",
15
15
  "watch": "rollup -c --watch",
16
16
  "build": "rollup -c",
17
- "serve": "widget serve",
18
- "prepare": "npm run build"
17
+ "serve": "widget serve"
19
18
  },
20
19
  "devDependencies": {
21
20
  "@babel/core": "^7.8.4",
@@ -35,11 +34,11 @@
35
34
  "rollup-watch": "^4.3.1"
36
35
  },
37
36
  "dependencies": {
38
- "@abtasty/widget-utils": "1.14.0",
37
+ "@abtasty/widget-utils": "1.13.11-3",
39
38
  "@babel/plugin-proposal-object-rest-spread": "^7.8.3",
40
39
  "@rollup/plugin-commonjs": "^11.0.1",
41
40
  "@rollup/plugin-node-resolve": "^7.0.0",
42
41
  "babel-eslint": "^10.0.3",
43
42
  "rollup-plugin-terser": "^5.2.0"
44
43
  }
45
- }
44
+ }
package/README.md DELETED
@@ -1 +0,0 @@
1
- # Engage Plugin Base