@walkeros/web-source-browser 4.1.0-next-1778668930820 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})},a={};i(a,{SourceBrowser:()=>he,createTagger:()=>Ne,default:()=>Ve,examples:()=>ve,getAllEvents:()=>O,getElbAttributeName:()=>C,getElbValues:()=>A,getEvents:()=>j,getGlobals:()=>L,sourceBrowser:()=>We}),module.exports=(e=a,((e,i,a,s)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let c of r(i))o.call(e,c)||c===a||t(e,c,{get:()=>i[c],enumerable:!(s=n(i,c))||s.enumerable});return e})(t({},"__esModule",{value:!0}),e));var s=Object.defineProperty;((e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})})({},{Level:()=>l});var c,l=((c=l||{})[c.ERROR=0]="ERROR",c[c.WARN=1]="WARN",c[c.INFO=2]="INFO",c[c.DEBUG=3]="DEBUG",c),u={merge:!0,shallow:!0,extend:!0};function d(e,t={},n={}){n={...u,...n};const r=Object.entries(t).reduce((t,[r,o])=>{const i=e[r];return n.merge&&Array.isArray(i)&&Array.isArray(o)?t[r]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||r in e)&&(t[r]=o),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}function p(e){return Array.isArray(e)}function f(e){return void 0!==e}function m(e){return!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function g(e){return"object"==typeof e&&null!==e&&!p(e)&&"[object Object]"===Object.prototype.toString.call(e)}function b(e){return"string"==typeof e}function h(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function v(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function w(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}var y=require("@walkeros/collector"),k=require("@walkeros/web-core"),x=require("@walkeros/collector"),E=require("@walkeros/web-core");function C(e,t,n=!0){return e+(t=null!=t?(n?"-":"")+t:"")}function A(e,t,n,r=!0){return W((0,E.getAttribute)(t,C(e,n,r))||"").reduce((e,n)=>{let[r,o]=V(n);if(!r)return e;if(o||(r.endsWith(":")&&(r=r.slice(0,-1)),o=""),o.startsWith("#")){o=o.slice(1);try{let e=t[o];e||"selected"!==o||(e=t.options[t.selectedIndex].text),o=String(e)}catch(e){o=""}}return r.endsWith("[]")?(r=r.slice(0,-2),p(e[r])||(e[r]=[]),e[r].push(h(o))):e[r]=h(o),e},{})}function O(e,t=x.Const.Commands.Prefix){var n;const r=e;if(!r)return[];let o=[];const i=x.Const.Commands.Action,a=`[${C(t,i,!1)}]`,s=e=>{Object.keys(A(t,e,i,!1)).forEach(n=>{o=o.concat(j(e,n,t))})};return r!==(r.ownerDocument||r)&&(null==(n=r.matches)?void 0:n.call(r,a))&&s(r),N(r,a,s),o}function j(e,t,n=x.Const.Commands.Prefix){const r=[],{actions:o,nearestOnly:i}=function(e,t,n){let r=t;for(;r;){const t=(0,E.getAttribute)(r,C(e,x.Const.Commands.Actions,!1));if(t){const e=S(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const o=(0,E.getAttribute)(r,C(e,x.Const.Commands.Action,!1));if(o){const e=S(o);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}r=T(e,r)}return{actions:[],nearestOnly:!1}}(n,e,t);return o.length?(o.forEach(o=>{const a=W(o.actionParams||"",",").reduce((e,t)=>(e[w(t)]=!0,e),{}),s=$(n,e,a,i);if(!s.length){const t="page",r=`[${C(n,t)}]`,[o,i]=R(e,r,n,t);s.push({entity:t,data:o,nested:[],context:i})}s.forEach(e=>{var n;r.push({entity:e.entity,action:o.action,data:e.data,trigger:t,context:e.context,nested:null!=(n=e.nested)?n:[]})})}),r):r}function L(e=x.Const.Commands.Prefix,t){if(!t)return{};const n=C(e,x.Const.Commands.Globals,!1);let r={};return P(t,`[${n}]`,t=>{r=d(r,A(e,t,x.Const.Commands.Globals,!1))}),r}function S(e){const t={};return W(e).forEach(e=>{const[n,r]=V(e),[o,i]=q(n);if(!o)return;let[a,s]=q(r||"");a=a||o,t[o]||(t[o]=[]),t[o].push({trigger:o,triggerParams:i,action:a,actionParams:s})}),t}function $(e,t,n,r=!1){const o=[];let i=t;for(n=0!==Object.keys(n||{}).length?n:void 0;i;){const a=D(e,i,t,n);if(a&&(o.push(a),r))break;i=T(e,i)}return o}function D(e,t,n,r){const o=(0,E.getAttribute)(t,C(e));if(!o||r&&!r[o])return null;const i=[t],a=`[${C(e,o)}],[${C(e,"")}]`,s=C(e,x.Const.Commands.Link,!1);let c={};const l=[],[u,p]=R(n||t,a,e,o);N(t,`[${s}]`,n=>{const[r,o]=V((0,E.getAttribute)(n,s));"parent"===o&&N(t.ownerDocument.body,`[${s}="${r}:child"]`,t=>{i.push(t);const n=D(e,t);n&&l.push(n)})});const f=[];i.forEach(e=>{e.matches(a)&&f.push(e),N(e,a,e=>f.push(e))});let m={};return f.forEach(t=>{m=d(m,A(e,t,"")),c=d(c,A(e,t,o))}),c=d(d(m,c),u),i.forEach(t=>{N(t,`[${C(e)}]`,t=>{const n=D(e,t);n&&l.push(n)})}),{entity:o,data:c,context:p,nested:l}}function T(e,t){const n=C(e,x.Const.Commands.Link,!1);if(t.matches(`[${n}]`)){const[e,r]=V((0,E.getAttribute)(t,n));if("child"===r){const r=t.ownerDocument;let o=null;return P(r,`[${n}="${e}:parent"]`,e=>{o||(o=e)}),o}}const r=t.ownerDocument.defaultView;return!t.parentElement&&t.getRootNode&&t.getRootNode()instanceof r.ShadowRoot?t.getRootNode().host:t.parentElement}function R(e,t,n,r){let o={};const i={};let a=e;const s=`[${C(n,x.Const.Commands.Context,!1)}]`;let c=0;for(;a;)a.matches(t)&&(o=d(A(n,a,""),o),o=d(A(n,a,r),o)),a.matches(s)&&(Object.entries(A(n,a,x.Const.Commands.Context,!1)).forEach(([e,t])=>{t&&!i[e]&&(i[e]=[t,c])}),++c),a=T(n,a);return[o,i]}function P(e,t,n){e.querySelectorAll(t).forEach(n)}function N(e,t,n){e.querySelectorAll(t).forEach(n);e instanceof(e.ownerDocument||e).defaultView.Element&&e.shadowRoot&&N(e.shadowRoot,t,n),e.querySelectorAll("*").forEach(e=>{e.shadowRoot&&N(e.shadowRoot,t,n)})}function W(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function V(e){const[t,n]=e.split(/:(.+)/,2);return[w(t),w(n)]}function q(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}var I=require("@walkeros/web-core"),M=new WeakMap,U=new WeakMap,B=new WeakMap;function z(e){const t=Date.now();let n=U.get(e);if(!n||t-n.lastChecked>500){const r=e.ownerDocument.defaultView,o=e.ownerDocument;n={isVisible:(0,I.isVisible)(e,r,o),lastChecked:t},U.set(e,n)}return n.isVisible}function G(e){const t=(e.ownerDocument||e).defaultView;if(t&&t.IntersectionObserver)return v(()=>new t.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,r;const o=t.target,i=B.get(e);if(!i)return;const a=i.timers.get(o);if(t.intersectionRatio>0){const r=Date.now();let s=M.get(o);if(!s||r-s.lastChecked>1e3){const e=o.ownerDocument.defaultView;s={isLarge:o.offsetHeight>e.innerHeight,lastChecked:r},M.set(o,s)}if(t.intersectionRatio>=.5||s.isLarge&&z(o)){const t=null==(n=i.elementConfigs)?void 0:n.get(o);if((null==t?void 0:t.multiple)&&t.blocked)return;if(!a){const t=o.ownerDocument.defaultView.setTimeout(async()=>{var t,n;if(z(o)){const r=null==(t=i.elementConfigs)?void 0:t.get(o);(null==r?void 0:r.context)&&await ce(r.context,o,r.trigger);const a=null==(n=i.elementConfigs)?void 0:n.get(o);(null==a?void 0:a.multiple)?a.blocked=!0:function(e,t){const n=B.get(e);if(!n)return;n.observer&&n.observer.unobserve(t);const r=n.timers.get(t);r&&(clearTimeout(r),n.timers.delete(t)),M.delete(t),U.delete(t)}(e,o)}},i.duration);i.timers.set(o,t)}return}}a&&(clearTimeout(a),i.timers.delete(o));const s=null==(r=i.elementConfigs)?void 0:r.get(o);(null==s?void 0:s.multiple)&&(s.blocked=!1)}(e,t)})},{rootMargin:"0px",threshold:[0,.5]}),()=>{})()}function H(e,t,n={multiple:!1}){var r;const o=e.settings.scope;if(!o)return;const i=B.get(o);(null==i?void 0:i.observer)&&t&&(i.elementConfigs||(i.elementConfigs=new WeakMap),i.elementConfigs.set(t,{multiple:null!=(r=n.multiple)&&r,blocked:!1,context:e,trigger:n.multiple?"visible":"impression"}),i.observer.observe(t))}function _(e){if(!e)return;const t=B.get(e);t&&(t.observer&&t.observer.disconnect(),B.delete(e))}function F(e,t,n,r,o,i,a){const{elb:s,settings:c}=e;if(b(t)&&t.startsWith("walker "))return s(t,n);if(g(t)){const e=t;if(!e.source&&c.scope){const t=c.scope.ownerDocument||c.scope,n=t.defaultView;e.source=Y(n,t)}return!e.globals&&c.scope&&(e.globals=L(c.prefix,c.scope)),s(e)}const[l]=String(g(t)?t.name:t).split(" ");let u,d=g(n)?n:{},p={},f=!1;if(m(n)&&(u=n,f=!0),m(o)?u=o:g(o)&&Object.keys(o).length&&(p=o),u){const e=$(c.prefix||"data-elb",u).find(e=>e.entity===l);e&&(f&&(d=e.data),e.context&&(p=e.context))}const h=c.scope?c.scope.ownerDocument||c.scope:void 0,v=null==h?void 0:h.defaultView;"page"===l&&v&&(d.id=d.id||v.location.pathname);const w=L(c.prefix,c.scope);return s({name:String(t||""),data:d,context:p,globals:w,nested:i,custom:a,trigger:b(r)?r:"",source:v&&h?Y(v,h):void 0})}function Y(e,t){return{type:"browser",platform:"web",url:e.location.href,referrer:t.referrer}}var K,X=[],J="click",Q="hover",Z="load",ee="pulse",te="scroll",ne="submit",re="impression",oe="visible",ie="wait";function ae(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;if(!n)return;n.addEventListener("click",v(function(t){de.call(this,e,t)})),n.addEventListener("submit",v(function(t){pe.call(this,e,t)}))}(e,t)}function se(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;X=[];const r=n;if(!r)return;_(r),function(e,t=1e3){B.has(e)||B.set(e,{observer:G(e),timers:new WeakMap,duration:t})}(r,1e3);const o=C(t.prefix,y.Const.Commands.Action,!1),i=r.ownerDocument||r;r!==i&&le(e,r,o,t);N(r,`[${o}]`,n=>{le(e,n,o,t)}),X.length&&function(e,t){const n=t.ownerDocument||t,r=n.defaultView,o=(e,t)=>e.filter(([e,n])=>{const o=r.scrollY+r.innerHeight,i=e.offsetTop;if(o<i)return!0;const a=e.clientHeight;return!(100*(1-(i+a-o)/(a||1))>=n)||(ce(t,e,te),!1)});K||(K=function(e,t=1e3){let n=null;return function(...r){if(null===n)return n=setTimeout(()=>{n=null},t),e(...r)}}(function(){X=o.call(t,X,e)}),t.addEventListener("scroll",K))}(e,r)}(e,t)}async function ce(e,t,n){const r=j(t,n,e.settings.prefix);return Promise.all(r.map(t=>F(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function le(e,t,n,r){const o=(0,k.getAttribute)(t,n);o&&Object.values(S(o)).forEach(n=>n.forEach(n=>{switch(n.trigger){case Q:!function(e,t){t.addEventListener("mouseenter",v(function(t){const n=ue(t);n&&ce(e,n,Q)}))}(e,t);break;case Z:!function(e,t){ce(e,t,Z)}(e,t);break;case ee:!function(e,t,n=""){const r=t.ownerDocument;setInterval(()=>{r.hidden||ce(e,t,ee)},parseInt(n||"")||15e3)}(e,t,n.triggerParams);break;case te:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;X.push([e,n])}(t,n.triggerParams);break;case re:H(e,t);break;case oe:H(e,t,{multiple:!0});break;case ie:!function(e,t,n=""){setTimeout(()=>ce(e,t,ie),parseInt(n||"")||15e3)}(e,t,n.triggerParams)}}))}function ue(e){var t;const n=null==(t=e.composedPath)?void 0:t.call(e),r=(null==n?void 0:n.length)?n[0]:e.target;if(r&&"object"==typeof r&&"tagName"in r)return r}function de(e,t){const n=ue(t);n&&ce(e,n,J)}function pe(e,t){const n=ue(t);n&&ce(e,n,ne)}function fe(e,t={}){var n;const r=t.name||"elbLayer",o=t.window,i=t.logger;if(!o)return;const a=o;a[r]||(a[r]=[]);const s=a[r],c=o.document;null==i||i.debug("initElbLayer enter",{layerName:r,queuedItems:s.length}),s.push=function(...n){if(be(n[0])){const r=[...Array.from(n[0])],o=Array.prototype.push.apply(this,[r]);return ge(e,t.prefix,r,c,i),o}const r=Array.prototype.push.apply(this,n);return n.forEach(n=>{ge(e,t.prefix,n,c,i)}),r},Array.isArray(s)&&s.length>0&&(null==i||i.debug("initElbLayer drain walker commands",{count:s.length}),function(e,t,n,r,o){const i="walker ",a=[...n],s=new Set;a.forEach((n,a)=>{const c=me(n);if(!c)return;const l=c[0];!g(l)&&b(l)&&l.startsWith(i)&&(s.add(a),ge(e,t,c,r,o))});const c=[...s].sort((e,t)=>t-e);for(const e of c)n.splice(e,1);null==o||o.debug("drainWalkerCommands done",{consumed:s.size,remaining:n.length})}(e,null!=(n=t.prefix)?n:"data-elb",s,c,i))}function me(e){const t=be(e)?[...Array.from(e)]:null!=(n=e)&&"object"==typeof n&&"length"in n&&"number"==typeof n.length?Array.from(e):[e];var n;if(!Array.isArray(t)||0===t.length)return null;if(1===t.length&&!t[0])return null;const r=t[0];return g(r)&&0===Object.keys(r).length||!g(r)&&b(r)&&""===r.trim()?null:t}function ge(e,t="data-elb",n,r,o){v(()=>{if(Array.isArray(n)){const[i,...a]=n;if(!i||b(i)&&""===i.trim())return void(null==o||o.debug("pushCommand skipped (empty/invalid action)",{item:n}));if(b(i)&&i.startsWith("walker "))return null==o||o.debug("pushCommand walker command",{action:i,data:a[0]}),void e(i,a[0]);null==o||o.debug("pushCommand event (translated)",{action:i,rest:a}),F({elb:e,settings:{prefix:t,scope:r,pageview:!1,elb:"",elbLayer:!1}},i,...a)}else if(n&&"object"==typeof n){if(0===Object.keys(n).length)return void(null==o||o.debug("pushCommand skipped (empty object)"));null==o||o.debug("pushCommand object event",{item:n}),e(n)}},e=>{null==o||o.warn("pushCommand failed",{error:e,item:n})})()}function be(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var he={},ve={};i(ve,{createTrigger:()=>Re,env:()=>we,step:()=>Ce,trigger:()=>Pe});var we={};i(we,{push:()=>Ee});var ye=()=>{},ke=()=>()=>Promise.resolve({ok:!0}),xe={error:ye,warn:ye,info:ye,debug:ye,throw:e=>{throw"string"==typeof e?new Error(e):e},json:ye,scope:()=>xe},Ee={get push(){return ke()},get command(){return ke()},get elb(){return ke()},get window(){return{addEventListener:ye,removeEventListener:ye,location:{href:"https://example.com/page",pathname:"/page",search:"?query=test",hash:"#section",host:"example.com",hostname:"example.com",origin:"https://example.com",protocol:"https:"},document:{},navigator:{language:"en-US",userAgent:"Mozilla/5.0 (Test)"},screen:{width:1920,height:1080},innerWidth:1920,innerHeight:1080,pageXOffset:0,pageYOffset:0,scrollX:0,scrollY:0}},get document(){return{addEventListener:ye,removeEventListener:ye,querySelector:ye,querySelectorAll:()=>[],getElementById:ye,getElementsByClassName:()=>[],getElementsByTagName:()=>[],createElement:()=>({setAttribute:ye,getAttribute:ye,addEventListener:ye,removeEventListener:ye}),body:{appendChild:ye,removeChild:ye},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:xe},Ce={};i(Ce,{clickEvent:()=>Oe,contextAndGlobals:()=>De,dataAttributeTypes:()=>$e,impressionEvent:()=>Le,nestedEntities:()=>Se,pageView:()=>Ae,submitEvent:()=>je});var Ae={title:"Page view",description:"A page load trigger captures the current URL, title, and referrer as a walker page view event.",trigger:{type:"load",options:{url:"https://example.com/docs",title:"Documentation",referrer:"https://example.com/"}},in:"",out:[["elb",{name:"page view",data:{domain:"example.com",title:"Documentation",referrer:"https://example.com/",id:"/docs"},context:{},globals:{},nested:void 0,custom:void 0,trigger:"load",source:{type:"browser",platform:"web",url:"https://example.com/docs",referrer:"https://example.com/"}}]]},Oe={title:"Click event",description:"A button click with walker data attributes is captured as an entity action event with the mapped label data.",trigger:{type:"click",options:"button"},in:'<button data-elb="cta" data-elb-cta="label:Sign Up" data-elbaction="click:click">Sign Up</button>',out:[["elb",{name:"cta click",entity:"cta",action:"click",data:{label:"Sign Up"},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},je={title:"Submit event",description:"A form submit with walker data attributes produces a signup complete event carrying the selected plan.",trigger:{type:"submit",options:"form"},in:'<form data-elb="signup" data-elb-signup="plan:premium" data-elbaction="submit:complete"></form>',out:[["elb",{name:"signup complete",entity:"signup",action:"complete",data:{plan:"premium"},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"submit"}]]},Le={title:"Impression event",description:"An intersection observer impression on a div with walker attributes emits a banner view event.",trigger:{type:"impression",options:"div"},in:'<div data-elb="banner" data-elb-banner="type:promotional;position:sidebar" data-elbaction="impression:view"></div>',out:[["elb",{name:"banner view",entity:"banner",action:"view",data:{type:"promotional",position:"sidebar"},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"impression"}]]},Se={title:"Nested entities",description:"A page load produces a page view plus a product view whose nested size entity is captured on the product event.",trigger:{type:"load"},in:'<div data-elb="product" data-elb-product="id:SKU-42;name:Sneakers" data-elbaction="load:view"><div data-elb="size" data-elb-size="selected:large;inStock:true"></div></div>',out:[["elb",{name:"page view",data:{domain:"example.com",title:"",referrer:"",id:"/"},context:{},globals:{},nested:void 0,custom:void 0,trigger:"load",source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""}}],["elb",{name:"product view",entity:"product",action:"view",data:{id:"SKU-42",name:"Sneakers"},context:{},globals:{},nested:[{entity:"size",data:{selected:"large",inStock:!0},context:{},nested:[]}],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"load"}]]},$e={title:"Data attribute types",description:"Walker data attributes parse scalar, boolean, and array values into typed fields on the emitted event.",trigger:{type:"click",options:"div"},in:'<div data-elb="product" data-elb-product="price:99.99;available:true;colors[]:red;colors[]:blue" data-elbaction="click:select"></div>',out:[["elb",{name:"product select",entity:"product",action:"select",data:{price:99.99,available:!0,colors:["red","blue"]},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},De={title:"Context and globals",description:"Walker context and globals attributes attach ambient metadata to events emitted by the browser source.",trigger:{type:"click",options:'[data-elb="cta"]'},in:'<div data-elbcontext="test:engagement_flow" data-elbglobals="language:en;plan:premium"><div data-elb="cta" data-elb-cta="label:Try Now" data-elbaction="click:signup">Try Now</div></div>',out:[["elb",{name:"cta signup",entity:"cta",action:"signup",data:{label:"Try Now"},context:{test:["engagement_flow",0]},globals:{language:"en",plan:"premium"},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},Te=require("@walkeros/collector"),Re=async(e,t)=>{const n=(null==t?void 0:t.sourceId)||"browser";let r;const o=document,i=window;return{get flow(){return r},trigger:(t,a)=>async s=>{var c;if("load"===t||!t){const e="object"==typeof a&&null!==a?a:{};if(e.url){const t=new URL(e.url);i.history.replaceState({},"",t.pathname)}e.title&&(o.title=e.title),e.referrer&&Object.defineProperty(o,"referrer",{value:e.referrer,configurable:!0})}if(s&&(o.body.innerHTML=s),!r){const t=await(0,Te.startFlow)({...e,run:null==(c=e.run)||c});r={collector:t.collector,elb:t.elb}}if(!t||"load"===t)return;const l="string"==typeof a?a:void 0,u=l?o.querySelector(l):null;if(!u)return void console.warn(`Trigger: element not found for selector "${l}"`);const d=r.collector.sources[n];if(!d)return void console.warn(`Trigger: source "${n}" not found in collector`);const p={elb:r.elb,settings:d.config.settings};await ce(p,u,t)}}},Pe=(e,t)=>{if(!e||"object"!=typeof e)return;const n=e,r=t.document,o=t.window,i=()=>{var e,t;if(!n.attributes)return;const o=(null==(t=null==(e=n.element)?void 0:e.match(/^(\w+)/))?void 0:t[1])||"div",i=r.createElement(o);for(const[e,t]of Object.entries(n.attributes))i.setAttribute(e,t);if(n.children)for(const e of n.children){const t=r.createElement("div");for(const[n,r]of Object.entries(e))t.setAttribute(n,r);i.appendChild(t)}return r.body.appendChild(i),i};if(!n.trigger||"load"===n.trigger){if(n.url){const e=new URL(n.url);o.history.replaceState({},"",e.pathname)}return n.title&&(r.title=n.title),n.referrer&&Object.defineProperty(r,"referrer",{value:n.referrer}),void i()}return()=>{const e=i();if(e)switch(n.trigger){case"click":e.dispatchEvent(new MouseEvent("click",{bubbles:!0}));break;case"submit":e.dispatchEvent(new Event("submit",{bubbles:!0}));break;case"hover":e.dispatchEvent(new MouseEvent("mouseenter",{bubbles:!0}));break;case"scroll":o.dispatchEvent(new Event("scroll"))}}};function Ne(e={}){const t=e.prefix||"data-elb";return function(e){let n,r=e;const o={},i={},a={},s={},c={},l={};function u(e){return Object.entries(e).map(([e,t])=>`${e}:${function(e){if(!f(e)||null===e)return"undefined";let t=String(e);return t=t.replace(/\\/g,"\\\\"),t=t.replace(/;/g,"\\;"),t=t.replace(/:/g,"\\:"),t=t.replace(/'/g,"\\'"),t}(t)}`).join(";")}const d={entity:e=>(n=e,r=e,d),data(e,t){const n=null!=r?r:"";return o[n]||(o[n]={}),b(e)?o[n][e]=t:Object.assign(o[n],e),d},action(e,t){if(b(e))if(f(t))i[e]=t;else if(e.includes(":")){const[t,n]=e.split(":",2);i[t]=n}else i[e]=e;else Object.assign(i,e);return d},actions(e,t){if(b(e))if(f(t))a[e]=t;else if(e.includes(":")){const[t,n]=e.split(":",2);a[t]=n}else a[e]=e;else Object.assign(a,e);return d},context:(e,t)=>(b(e)?s[e]=t:Object.assign(s,e),d),globals:(e,t)=>(b(e)?c[e]=t:Object.assign(c,e),d),link:(e,t)=>(b(e)?l[e]=t:Object.assign(l,e),d),get(){const e={};return n&&(e[t]=n),Object.entries(o).forEach(([n,r])=>{if(Object.keys(r).length>0){e[n?`${t}-${n}`:`${t}-`]=u(r)}}),Object.keys(i).length>0&&(e[`${t}action`]=u(i)),Object.keys(a).length>0&&(e[`${t}actions`]=u(a)),Object.keys(s).length>0&&(e[`${t}context`]=u(s)),Object.keys(c).length>0&&(e[`${t}globals`]=u(c)),Object.keys(l).length>0&&(e[`${t}link`]=u(l)),e}};return d}}var We=async e=>{const{config:t,env:n,logger:r}=e,{elb:o,command:i,window:a,document:s}=n,c=(null==t?void 0:t.settings)||{},l=a||(void 0!==globalThis.window?globalThis.window:void 0),u=s||(void 0!==globalThis.document?globalThis.document:void 0),d=function(e={},t){return{prefix:"data-elb",pageview:!0,elb:"elb",elbLayer:"elbLayer",scope:t||void 0,...e}}(c,u),p={elb:o,settings:d},f=e=>{if(!e.pageview)return;const[t,n]=function(e,t){const n=t.ownerDocument||t,r=n.defaultView.location,o="page",i="body"in t?t.body:t,[a,s]=R(i,`[${C(e,o)}]`,e,o);return a.domain=r.hostname,a.title=n.title,a.referrer=n.referrer,r.search&&(a.search=r.search),r.hash&&(a.hash=r.hash),[a,s]}(e.prefix||"data-elb",e.scope);F(p,"page view",t,"load",n)};return{type:"browser",config:{settings:d},push:(...e)=>{const[t,n,r,o,i,a]=e;return F(p,t,n,r,o,i,a)},on:async e=>{if("run"===e)u&&l&&(se(p,d),function(e,t,n,r){const o=b(t.elbLayer)?t.elbLayer:"elbLayer",i=t.prefix||"data-elb",a=n[o];if(!Array.isArray(a))return;const s=n.document;let c=-1;a.forEach((e,t)=>{const n=me(e);n&&b(n[0])&&"walker run"===n[0]&&(c=t)});const l=[];for(let e=c+1;e<a.length;e++){const t=me(a[e]);t&&l.push(t)}a.length=c+1,null==r||r.debug("drainNonWalkerEvents",{anchor:c,drained:l.length}),l.forEach(t=>ge(e,i,t,s,r))}(o,d,l,r),f(d))},init:async()=>{l&&u&&(!1!==d.elbLayer&&o&&fe(o,{name:b(d.elbLayer)?d.elbLayer:"elbLayer",prefix:d.prefix,window:l,logger:r}),await async function(e,t,n){const r=()=>{e(t,n)},o=n.scope;if(!o)return void r();const i=o.ownerDocument||o;"loading"!==i.readyState?r():i.addEventListener("DOMContentLoaded",r)}(ae,p,d),b(d.elb)&&d.elb&&(l[d.elb]=(...e)=>{const[t,n,r,o,i,a]=e;return F(p,t,n,r,o,i,a)}))},destroy:async()=>{u&&_(d.scope||u)}}},Ve=We;//# sourceMappingURL=index.js.map
1
+ "use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})},s={};i(s,{SourceBrowser:()=>ue,createTagger:()=>Le,default:()=>De,examples:()=>de,getAllEvents:()=>b,getElbAttributeName:()=>m,getElbValues:()=>f,getEvents:()=>h,getGlobals:()=>v,sourceBrowser:()=>$e}),module.exports=(e=s,((e,i,s,a)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let c of r(i))o.call(e,c)||c===s||t(e,c,{get:()=>i[c],enumerable:!(a=n(i,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var a=require("@walkeros/core"),c=require("@walkeros/core"),l=require("@walkeros/collector"),u=require("@walkeros/web-core"),d=require("@walkeros/core"),p=require("@walkeros/collector"),g=require("@walkeros/web-core");function m(e,t,n=!0){return e+(t=null!=t?(n?"-":"")+t:"")}function f(e,t,n,r=!0){return j((0,g.getAttribute)(t,m(e,n,r))||"").reduce((e,n)=>{let[r,o]=S(n);if(!r)return e;if(o||(r.endsWith(":")&&(r=r.slice(0,-1)),o=""),o.startsWith("#")){o=o.slice(1);try{let e=t[o];e||"selected"!==o||(e=t.options[t.selectedIndex].text),o=String(e)}catch(e){o=""}}return r.endsWith("[]")?(r=r.slice(0,-2),(0,d.isArray)(e[r])||(e[r]=[]),e[r].push((0,d.castValue)(o))):e[r]=(0,d.castValue)(o),e},{})}function b(e,t=p.Const.Commands.Prefix){var n;const r=e;if(!r)return[];let o=[];const i=p.Const.Commands.Action,s=`[${m(t,i,!1)}]`,a=e=>{Object.keys(f(t,e,i,!1)).forEach(n=>{o=o.concat(h(e,n,t))})};return r!==(r.ownerDocument||r)&&(null==(n=r.matches)?void 0:n.call(r,s))&&a(r),O(r,s,a),o}function h(e,t,n=p.Const.Commands.Prefix){const r=[],{actions:o,nearestOnly:i}=function(e,t,n){let r=t;for(;r;){const t=(0,g.getAttribute)(r,m(e,p.Const.Commands.Actions,!1));if(t){const e=w(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const o=(0,g.getAttribute)(r,m(e,p.Const.Commands.Action,!1));if(o){const e=w(o);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}r=x(e,r)}return{actions:[],nearestOnly:!1}}(n,e,t);return o.length?(o.forEach(o=>{const s=j(o.actionParams||"",",").reduce((e,t)=>(e[(0,d.trim)(t)]=!0,e),{}),a=y(n,e,s,i);if(!a.length){const t="page",r=`[${m(n,t)}]`,[o,i]=E(e,r,n,t);a.push({entity:t,data:o,nested:[],context:i})}a.forEach(e=>{var n;r.push({entity:e.entity,action:o.action,data:e.data,trigger:t,context:e.context,nested:null!=(n=e.nested)?n:[]})})}),r):r}function v(e=p.Const.Commands.Prefix,t){if(!t)return{};const n=m(e,p.Const.Commands.Globals,!1);let r={};return C(t,`[${n}]`,t=>{r=(0,d.assign)(r,f(e,t,p.Const.Commands.Globals,!1))}),r}function w(e){const t={};return j(e).forEach(e=>{const[n,r]=S(e),[o,i]=A(n);if(!o)return;let[s,a]=A(r||"");s=s||o,t[o]||(t[o]=[]),t[o].push({trigger:o,triggerParams:i,action:s,actionParams:a})}),t}function y(e,t,n,r=!1){const o=[];let i=t;for(n=0!==Object.keys(n||{}).length?n:void 0;i;){const s=k(e,i,t,n);if(s&&(o.push(s),r))break;i=x(e,i)}return o}function k(e,t,n,r){const o=(0,g.getAttribute)(t,m(e));if(!o||r&&!r[o])return null;const i=[t],s=`[${m(e,o)}],[${m(e,"")}]`,a=m(e,p.Const.Commands.Link,!1);let c={};const l=[],[u,b]=E(n||t,s,e,o);O(t,`[${a}]`,n=>{const[r,o]=S((0,g.getAttribute)(n,a));"parent"===o&&O(t.ownerDocument.body,`[${a}="${r}:child"]`,t=>{i.push(t);const n=k(e,t);n&&l.push(n)})});const h=[];i.forEach(e=>{e.matches(s)&&h.push(e),O(e,s,e=>h.push(e))});let v={};return h.forEach(t=>{v=(0,d.assign)(v,f(e,t,"")),c=(0,d.assign)(c,f(e,t,o))}),c=(0,d.assign)((0,d.assign)(v,c),u),i.forEach(t=>{O(t,`[${m(e)}]`,t=>{const n=k(e,t);n&&l.push(n)})}),{entity:o,data:c,context:b,nested:l}}function x(e,t){const n=m(e,p.Const.Commands.Link,!1);if(t.matches(`[${n}]`)){const[e,r]=S((0,g.getAttribute)(t,n));if("child"===r){const r=t.ownerDocument;let o=null;return C(r,`[${n}="${e}:parent"]`,e=>{o||(o=e)}),o}}const r=t.ownerDocument.defaultView;return!t.parentElement&&t.getRootNode&&t.getRootNode()instanceof r.ShadowRoot?t.getRootNode().host:t.parentElement}function E(e,t,n,r){let o={};const i={};let s=e;const a=`[${m(n,p.Const.Commands.Context,!1)}]`;let c=0;for(;s;)s.matches(t)&&(o=(0,d.assign)(f(n,s,""),o),o=(0,d.assign)(f(n,s,r),o)),s.matches(a)&&(Object.entries(f(n,s,p.Const.Commands.Context,!1)).forEach(([e,t])=>{t&&!i[e]&&(i[e]=[t,c])}),++c),s=x(n,s);return[o,i]}function C(e,t,n){e.querySelectorAll(t).forEach(n)}function O(e,t,n){e.querySelectorAll(t).forEach(n);e instanceof(e.ownerDocument||e).defaultView.Element&&e.shadowRoot&&O(e.shadowRoot,t,n),e.querySelectorAll("*").forEach(e=>{e.shadowRoot&&O(e.shadowRoot,t,n)})}function j(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function S(e){const[t,n]=e.split(/:(.+)/,2);return[(0,d.trim)(t),(0,d.trim)(n)]}function A(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}var L=require("@walkeros/core"),$=require("@walkeros/web-core"),D=new WeakMap,T=new WeakMap,q=new WeakMap;function P(e){const t=Date.now();let n=T.get(e);if(!n||t-n.lastChecked>500){const r=e.ownerDocument.defaultView,o=e.ownerDocument;n={isVisible:(0,$.isVisible)(e,r,o),lastChecked:t},T.set(e,n)}return n.isVisible}function V(e){const t=(e.ownerDocument||e).defaultView;if(t&&t.IntersectionObserver)return(0,L.tryCatch)(()=>new t.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,r;const o=t.target,i=q.get(e);if(!i)return;const s=i.timers.get(o);if(t.intersectionRatio>0){const r=Date.now();let a=D.get(o);if(!a||r-a.lastChecked>1e3){const e=o.ownerDocument.defaultView;a={isLarge:o.offsetHeight>e.innerHeight,lastChecked:r},D.set(o,a)}if(t.intersectionRatio>=.5||a.isLarge&&P(o)){const t=null==(n=i.elementConfigs)?void 0:n.get(o);if((null==t?void 0:t.multiple)&&t.blocked)return;if(!s){const t=o.ownerDocument.defaultView.setTimeout(async()=>{var t,n;if(P(o)){const r=null==(t=i.elementConfigs)?void 0:t.get(o);(null==r?void 0:r.context)&&await ee(r.context,o,r.trigger);const s=null==(n=i.elementConfigs)?void 0:n.get(o);(null==s?void 0:s.multiple)?s.blocked=!0:function(e,t){const n=q.get(e);if(!n)return;n.observer&&n.observer.unobserve(t);const r=n.timers.get(t);r&&(clearTimeout(r),n.timers.delete(t)),D.delete(t),T.delete(t)}(e,o)}},i.duration);i.timers.set(o,t)}return}}s&&(clearTimeout(s),i.timers.delete(o));const a=null==(r=i.elementConfigs)?void 0:r.get(o);(null==a?void 0:a.multiple)&&(a.blocked=!1)}(e,t)})},{rootMargin:"0px",threshold:[0,.5]}),()=>{})()}function W(e,t,n={multiple:!1}){var r;const o=e.settings.scope;if(!o)return;const i=q.get(o);(null==i?void 0:i.observer)&&t&&(i.elementConfigs||(i.elementConfigs=new WeakMap),i.elementConfigs.set(t,{multiple:null!=(r=n.multiple)&&r,blocked:!1,context:e,trigger:n.multiple?"visible":"impression"}),i.observer.observe(t))}function N(e){if(!e)return;const t=q.get(e);t&&(t.observer&&t.observer.disconnect(),q.delete(e))}var R=require("@walkeros/core");function M(e,t,n,r,o,i,s){const{elb:a,settings:c}=e;if((0,R.isString)(t)&&t.startsWith("walker "))return a(t,n);if((0,R.isObject)(t)){const e=t;if(!e.source&&c.scope){const t=c.scope.ownerDocument||c.scope,n=t.defaultView;e.source=I(n,t)}return!e.globals&&c.scope&&(e.globals=v(c.prefix,c.scope)),a(e)}const[l]=String((0,R.isObject)(t)?t.name:t).split(" ");let u,d=(0,R.isObject)(n)?n:{},p={},g=!1;if((0,R.isElementOrDocument)(n)&&(u=n,g=!0),(0,R.isElementOrDocument)(o)?u=o:(0,R.isObject)(o)&&Object.keys(o).length&&(p=o),u){const e=y(c.prefix||"data-elb",u).find(e=>e.entity===l);e&&(g&&(d=e.data),e.context&&(p=e.context))}const m=c.scope?c.scope.ownerDocument||c.scope:void 0,f=null==m?void 0:m.defaultView;"page"===l&&f&&(d.id=d.id||f.location.pathname);const b=v(c.prefix,c.scope);return a({name:String(t||""),data:d,context:p,globals:b,nested:i,custom:s,trigger:(0,R.isString)(r)?r:"",source:f&&m?I(f,m):void 0})}function I(e,t){return{type:"browser",platform:"web",url:e.location.href,referrer:t.referrer}}var U,z=[],H="click",B="hover",G="load",_="pulse",Y="scroll",K="submit",X="impression",F="visible",J="wait";function Q(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;if(!n)return;n.addEventListener("click",(0,c.tryCatch)(function(t){re.call(this,e,t)})),n.addEventListener("submit",(0,c.tryCatch)(function(t){oe.call(this,e,t)}))}(e,t)}function Z(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;z=[];const r=n;if(!r)return;N(r),function(e,t=1e3){q.has(e)||q.set(e,{observer:V(e),timers:new WeakMap,duration:t})}(r,1e3);const o=m(t.prefix,l.Const.Commands.Action,!1),i=r.ownerDocument||r;r!==i&&te(e,r,o,t);O(r,`[${o}]`,n=>{te(e,n,o,t)}),z.length&&function(e,t){const n=t.ownerDocument||t,r=n.defaultView,o=(e,t)=>e.filter(([e,n])=>{const o=r.scrollY+r.innerHeight,i=e.offsetTop;if(o<i)return!0;const s=e.clientHeight;return!(100*(1-(i+s-o)/(s||1))>=n)||(ee(t,e,Y),!1)});U||(U=(0,c.throttle)(function(){z=o.call(t,z,e)}),t.addEventListener("scroll",U))}(e,r)}(e,t)}async function ee(e,t,n){const r=h(t,n,e.settings.prefix);return Promise.all(r.map(t=>M(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function te(e,t,n,r){const o=(0,u.getAttribute)(t,n);o&&Object.values(w(o)).forEach(n=>n.forEach(n=>{switch(n.trigger){case B:!function(e,t){t.addEventListener("mouseenter",(0,c.tryCatch)(function(t){const n=ne(t);n&&ee(e,n,B)}))}(e,t);break;case G:!function(e,t){ee(e,t,G)}(e,t);break;case _:!function(e,t,n=""){const r=t.ownerDocument;setInterval(()=>{r.hidden||ee(e,t,_)},parseInt(n||"")||15e3)}(e,t,n.triggerParams);break;case Y:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;z.push([e,n])}(t,n.triggerParams);break;case X:W(e,t);break;case F:W(e,t,{multiple:!0});break;case J:!function(e,t,n=""){setTimeout(()=>ee(e,t,J),parseInt(n||"")||15e3)}(e,t,n.triggerParams)}}))}function ne(e){var t;const n=null==(t=e.composedPath)?void 0:t.call(e),r=(null==n?void 0:n.length)?n[0]:e.target;if(r&&"object"==typeof r&&"tagName"in r)return r}function re(e,t){const n=ne(t);n&&ee(e,n,H)}function oe(e,t){const n=ne(t);n&&ee(e,n,K)}var ie=require("@walkeros/core");function se(e,t={}){var n;const r=t.name||"elbLayer",o=t.window,i=t.logger;if(!o)return;const s=o;s[r]||(s[r]=[]);const a=s[r],c=o.document;null==i||i.debug("initElbLayer enter",{layerName:r,queuedItems:a.length}),a.push=function(...n){if(le(n[0])){const r=[...Array.from(n[0])],o=Array.prototype.push.apply(this,[r]);return ce(e,t.prefix,r,c,i),o}const r=Array.prototype.push.apply(this,n);return n.forEach(n=>{ce(e,t.prefix,n,c,i)}),r},Array.isArray(a)&&a.length>0&&(null==i||i.debug("initElbLayer drain walker commands",{count:a.length}),function(e,t,n,r,o){const i="walker ",s=[...n],a=new Set;s.forEach((n,s)=>{const c=ae(n);if(!c)return;const l=c[0];!(0,ie.isObject)(l)&&(0,ie.isString)(l)&&l.startsWith(i)&&(a.add(s),ce(e,t,c,r,o))});const c=[...a].sort((e,t)=>t-e);for(const e of c)n.splice(e,1);null==o||o.debug("drainWalkerCommands done",{consumed:a.size,remaining:n.length})}(e,null!=(n=t.prefix)?n:"data-elb",a,c,i))}function ae(e){const t=le(e)?[...Array.from(e)]:null!=(n=e)&&"object"==typeof n&&"length"in n&&"number"==typeof n.length?Array.from(e):[e];var n;if(!Array.isArray(t)||0===t.length)return null;if(1===t.length&&!t[0])return null;const r=t[0];return(0,ie.isObject)(r)&&0===Object.keys(r).length||!(0,ie.isObject)(r)&&(0,ie.isString)(r)&&""===r.trim()?null:t}function ce(e,t="data-elb",n,r,o){(0,ie.tryCatch)(()=>{if(Array.isArray(n)){const[i,...s]=n;if(!i||(0,ie.isString)(i)&&""===i.trim())return void(null==o||o.debug("pushCommand skipped (empty/invalid action)",{item:n}));if((0,ie.isString)(i)&&i.startsWith("walker "))return null==o||o.debug("pushCommand walker command",{action:i,data:s[0]}),void e(i,s[0]);null==o||o.debug("pushCommand event (translated)",{action:i,rest:s}),M({elb:e,settings:{prefix:t,scope:r,pageview:!1,elb:"",elbLayer:!1}},i,...s)}else if(n&&"object"==typeof n){if(0===Object.keys(n).length)return void(null==o||o.debug("pushCommand skipped (empty object)"));null==o||o.debug("pushCommand object event",{item:n}),e(n)}},e=>{null==o||o.warn("pushCommand failed",{error:e,item:n})})()}function le(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var ue={},de={};i(de,{createTrigger:()=>je,env:()=>pe,step:()=>he,trigger:()=>Se});var pe={};i(pe,{push:()=>be});var ge=()=>{},me=()=>()=>Promise.resolve({ok:!0}),fe={error:ge,warn:ge,info:ge,debug:ge,throw:e=>{throw"string"==typeof e?new Error(e):e},json:ge,scope:()=>fe},be={get push(){return me()},get command(){return me()},get elb(){return me()},get window(){return{addEventListener:ge,removeEventListener:ge,location:{href:"https://example.com/page",pathname:"/page",search:"?query=test",hash:"#section",host:"example.com",hostname:"example.com",origin:"https://example.com",protocol:"https:"},document:{},navigator:{language:"en-US",userAgent:"Mozilla/5.0 (Test)"},screen:{width:1920,height:1080},innerWidth:1920,innerHeight:1080,pageXOffset:0,pageYOffset:0,scrollX:0,scrollY:0}},get document(){return{addEventListener:ge,removeEventListener:ge,querySelector:ge,querySelectorAll:()=>[],getElementById:ge,getElementsByClassName:()=>[],getElementsByTagName:()=>[],createElement:()=>({setAttribute:ge,getAttribute:ge,addEventListener:ge,removeEventListener:ge}),body:{appendChild:ge,removeChild:ge},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:fe},he={};i(he,{clickEvent:()=>we,contextAndGlobals:()=>Ce,dataAttributeTypes:()=>Ee,impressionEvent:()=>ke,nestedEntities:()=>xe,pageView:()=>ve,submitEvent:()=>ye});var ve={title:"Page view",description:"A page load trigger captures the current URL, title, and referrer as a walker page view event.",trigger:{type:"load",options:{url:"https://example.com/docs",title:"Documentation",referrer:"https://example.com/"}},in:"",out:[["elb",{name:"page view",data:{domain:"example.com",title:"Documentation",referrer:"https://example.com/",id:"/docs"},context:{},globals:{},nested:void 0,custom:void 0,trigger:"load",source:{type:"browser",platform:"web",url:"https://example.com/docs",referrer:"https://example.com/"}}]]},we={title:"Click event",description:"A button click with walker data attributes is captured as an entity action event with the mapped label data.",trigger:{type:"click",options:"button"},in:'<button data-elb="cta" data-elb-cta="label:Sign Up" data-elbaction="click:click">Sign Up</button>',out:[["elb",{name:"cta click",entity:"cta",action:"click",data:{label:"Sign Up"},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},ye={title:"Submit event",description:"A form submit with walker data attributes produces a signup complete event carrying the selected plan.",trigger:{type:"submit",options:"form"},in:'<form data-elb="signup" data-elb-signup="plan:premium" data-elbaction="submit:complete"></form>',out:[["elb",{name:"signup complete",entity:"signup",action:"complete",data:{plan:"premium"},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"submit"}]]},ke={title:"Impression event",description:"An intersection observer impression on a div with walker attributes emits a banner view event.",trigger:{type:"impression",options:"div"},in:'<div data-elb="banner" data-elb-banner="type:promotional;position:sidebar" data-elbaction="impression:view"></div>',out:[["elb",{name:"banner view",entity:"banner",action:"view",data:{type:"promotional",position:"sidebar"},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"impression"}]]},xe={title:"Nested entities",description:"A page load produces a page view plus a product view whose nested size entity is captured on the product event.",trigger:{type:"load"},in:'<div data-elb="product" data-elb-product="id:SKU-42;name:Sneakers" data-elbaction="load:view"><div data-elb="size" data-elb-size="selected:large;inStock:true"></div></div>',out:[["elb",{name:"page view",data:{domain:"example.com",title:"",referrer:"",id:"/"},context:{},globals:{},nested:void 0,custom:void 0,trigger:"load",source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""}}],["elb",{name:"product view",entity:"product",action:"view",data:{id:"SKU-42",name:"Sneakers"},context:{},globals:{},nested:[{entity:"size",data:{selected:"large",inStock:!0},context:{},nested:[]}],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"load"}]]},Ee={title:"Data attribute types",description:"Walker data attributes parse scalar, boolean, and array values into typed fields on the emitted event.",trigger:{type:"click",options:"div"},in:'<div data-elb="product" data-elb-product="price:99.99;available:true;colors[]:red;colors[]:blue" data-elbaction="click:select"></div>',out:[["elb",{name:"product select",entity:"product",action:"select",data:{price:99.99,available:!0,colors:["red","blue"]},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},Ce={title:"Context and globals",description:"Walker context and globals attributes attach ambient metadata to events emitted by the browser source.",trigger:{type:"click",options:'[data-elb="cta"]'},in:'<div data-elbcontext="test:engagement_flow" data-elbglobals="language:en;plan:premium"><div data-elb="cta" data-elb-cta="label:Try Now" data-elbaction="click:signup">Try Now</div></div>',out:[["elb",{name:"cta signup",entity:"cta",action:"signup",data:{label:"Try Now"},context:{test:["engagement_flow",0]},globals:{language:"en",plan:"premium"},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},Oe=require("@walkeros/collector"),je=async(e,t)=>{const n=(null==t?void 0:t.sourceId)||"browser";let r;const o=document,i=window;return{get flow(){return r},trigger:(t,s)=>async a=>{var c;if("load"===t||!t){const e="object"==typeof s&&null!==s?s:{};if(e.url){const t=new URL(e.url);i.history.replaceState({},"",t.pathname)}e.title&&(o.title=e.title),e.referrer&&Object.defineProperty(o,"referrer",{value:e.referrer,configurable:!0})}if(a&&(o.body.innerHTML=a),!r){const t=await(0,Oe.startFlow)({...e,run:null==(c=e.run)||c});r={collector:t.collector,elb:t.elb}}if(!t||"load"===t)return;const l="string"==typeof s?s:void 0,u=l?o.querySelector(l):null;if(!u)return void console.warn(`Trigger: element not found for selector "${l}"`);const d=r.collector.sources[n];if(!d)return void console.warn(`Trigger: source "${n}" not found in collector`);const p={elb:r.elb,settings:d.config.settings};await ee(p,u,t)}}},Se=(e,t)=>{if(!e||"object"!=typeof e)return;const n=e,r=t.document,o=t.window,i=()=>{var e,t;if(!n.attributes)return;const o=(null==(t=null==(e=n.element)?void 0:e.match(/^(\w+)/))?void 0:t[1])||"div",i=r.createElement(o);for(const[e,t]of Object.entries(n.attributes))i.setAttribute(e,t);if(n.children)for(const e of n.children){const t=r.createElement("div");for(const[n,r]of Object.entries(e))t.setAttribute(n,r);i.appendChild(t)}return r.body.appendChild(i),i};if(!n.trigger||"load"===n.trigger){if(n.url){const e=new URL(n.url);o.history.replaceState({},"",e.pathname)}return n.title&&(r.title=n.title),n.referrer&&Object.defineProperty(r,"referrer",{value:n.referrer}),void i()}return()=>{const e=i();if(e)switch(n.trigger){case"click":e.dispatchEvent(new MouseEvent("click",{bubbles:!0}));break;case"submit":e.dispatchEvent(new Event("submit",{bubbles:!0}));break;case"hover":e.dispatchEvent(new MouseEvent("mouseenter",{bubbles:!0}));break;case"scroll":o.dispatchEvent(new Event("scroll"))}}},Ae=require("@walkeros/core");function Le(e={}){const t=e.prefix||"data-elb";return function(e){let n,r=e;const o={},i={},s={},a={},c={},l={};function u(e){return Object.entries(e).map(([e,t])=>`${e}:${function(e){if(!(0,Ae.isDefined)(e)||null===e)return"undefined";let t=String(e);return t=t.replace(/\\/g,"\\\\"),t=t.replace(/;/g,"\\;"),t=t.replace(/:/g,"\\:"),t=t.replace(/'/g,"\\'"),t}(t)}`).join(";")}const d={entity:e=>(n=e,r=e,d),data(e,t){const n=null!=r?r:"";return o[n]||(o[n]={}),(0,Ae.isString)(e)?o[n][e]=t:Object.assign(o[n],e),d},action(e,t){if((0,Ae.isString)(e))if((0,Ae.isDefined)(t))i[e]=t;else if(e.includes(":")){const[t,n]=e.split(":",2);i[t]=n}else i[e]=e;else Object.assign(i,e);return d},actions(e,t){if((0,Ae.isString)(e))if((0,Ae.isDefined)(t))s[e]=t;else if(e.includes(":")){const[t,n]=e.split(":",2);s[t]=n}else s[e]=e;else Object.assign(s,e);return d},context:(e,t)=>((0,Ae.isString)(e)?a[e]=t:Object.assign(a,e),d),globals:(e,t)=>((0,Ae.isString)(e)?c[e]=t:Object.assign(c,e),d),link:(e,t)=>((0,Ae.isString)(e)?l[e]=t:Object.assign(l,e),d),get(){const e={};return n&&(e[t]=n),Object.entries(o).forEach(([n,r])=>{if(Object.keys(r).length>0){e[n?`${t}-${n}`:`${t}-`]=u(r)}}),Object.keys(i).length>0&&(e[`${t}action`]=u(i)),Object.keys(s).length>0&&(e[`${t}actions`]=u(s)),Object.keys(a).length>0&&(e[`${t}context`]=u(a)),Object.keys(c).length>0&&(e[`${t}globals`]=u(c)),Object.keys(l).length>0&&(e[`${t}link`]=u(l)),e}};return d}}var $e=async e=>{const{config:t,env:n,logger:r}=e,{elb:o,command:i,window:s,document:c}=n,l=(null==t?void 0:t.settings)||{},u=s||(void 0!==globalThis.window?globalThis.window:void 0),d=c||(void 0!==globalThis.document?globalThis.document:void 0),p=function(e={},t){return{prefix:"data-elb",pageview:!0,elb:"elb",elbLayer:"elbLayer",scope:t||void 0,...e}}(l,d),g={elb:o,settings:p},f=e=>{if(!e.pageview)return;const[t,n]=function(e,t){const n=t.ownerDocument||t,r=n.defaultView.location,o="page",i="body"in t?t.body:t,[s,a]=E(i,`[${m(e,o)}]`,e,o);return s.domain=r.hostname,s.title=n.title,s.referrer=n.referrer,r.search&&(s.search=r.search),r.hash&&(s.hash=r.hash),[s,a]}(e.prefix||"data-elb",e.scope);M(g,"page view",t,"load",n)};return{type:"browser",config:{settings:p},push:(...e)=>{const[t,n,r,o,i,s]=e;return M(g,t,n,r,o,i,s)},on:async e=>{if("run"===e)d&&u&&(Z(g,p),function(e,t,n,r){const o=(0,ie.isString)(t.elbLayer)?t.elbLayer:"elbLayer",i=t.prefix||"data-elb",s=n[o];if(!Array.isArray(s))return;const a=n.document;let c=-1;s.forEach((e,t)=>{const n=ae(e);n&&(0,ie.isString)(n[0])&&"walker run"===n[0]&&(c=t)});const l=[];for(let e=c+1;e<s.length;e++){const t=ae(s[e]);t&&l.push(t)}s.length=c+1,null==r||r.debug("drainNonWalkerEvents",{anchor:c,drained:l.length}),l.forEach(t=>ce(e,i,t,a,r))}(o,p,u,r),f(p))},init:async()=>{u&&d&&(!1!==p.elbLayer&&o&&se(o,{name:(0,a.isString)(p.elbLayer)?p.elbLayer:"elbLayer",prefix:p.prefix,window:u,logger:r}),await async function(e,t,n){const r=()=>{e(t,n)},o=n.scope;if(!o)return void r();const i=o.ownerDocument||o;"loading"!==i.readyState?r():i.addEventListener("DOMContentLoaded",r)}(Q,g,p),(0,a.isString)(p.elb)&&p.elb&&(u[p.elb]=(...e)=>{const[t,n,r,o,i,s]=e;return M(g,t,n,r,o,i,s)}))},destroy:async()=>{d&&N(p.scope||d)}}},De=$e;//# sourceMappingURL=index.js.map