@walkeros/web-source-browser 4.0.0 → 4.1.0-next-1778155282668
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/dev.js +1 -1
- package/dist/dev.js.map +1 -1
- package/dist/dev.mjs +1 -1
- package/dist/dev.mjs.map +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.d.mts +6 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.es5.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/walkerOS.json +4 -4
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=Object.defineProperty,t=(t,n)=>{for(var r in n)e(t,r,{get:n[r],enumerable:!0})},n=Object.defineProperty;((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})({},{Level:()=>o});var r,o=((r=o||{})[r.ERROR=0]="ERROR",r[r.WARN=1]="WARN",r[r.INFO=2]="INFO",r[r.DEBUG=3]="DEBUG",r),i={merge:!0,shallow:!0,extend:!0};function a(e,t={},n={}){n={...i,...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 s(e){return Array.isArray(e)}function c(e){return void 0!==e}function l(e){return!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function u(e){return"object"==typeof e&&null!==e&&!s(e)&&"[object Object]"===Object.prototype.toString.call(e)}function d(e){return"string"==typeof e}function f(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function p(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function m(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}import{Const as b}from"@walkeros/collector";import{elb as g,getAttribute as h}from"@walkeros/web-core";import{Const as v}from"@walkeros/collector";import{getAttribute as w}from"@walkeros/web-core";function y(e,t,n=!0){return e+(t=null!=t?(n?"-":"")+t:"")}function k(e,t,n,r=!0){return R(w(t,y(e,n,r))||"").reduce((e,n)=>{let[r,o]=T(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),s(e[r])||(e[r]=[]),e[r].push(f(o))):e[r]=f(o),e},{})}function x(e,t=v.Commands.Prefix){var n;const r=e;if(!r)return[];let o=[];const i=v.Commands.Action,a=`[${y(t,i,!1)}]`,s=e=>{Object.keys(k(t,e,i,!1)).forEach(n=>{o=o.concat(E(e,n,t))})};return r!==(r.ownerDocument||r)&&(null==(n=r.matches)?void 0:n.call(r,a))&&s(r),D(r,a,s),o}function E(e,t,n=v.Commands.Prefix){const r=[],{actions:o,nearestOnly:i}=function(e,t,n){let r=t;for(;r;){const t=w(r,y(e,v.Commands.Actions,!1));if(t){const e=O(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const o=w(r,y(e,v.Commands.Action,!1));if(o){const e=O(o);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}r=$(e,r)}return{actions:[],nearestOnly:!1}}(n,e,t);return o.length?(o.forEach(o=>{const a=R(o.actionParams||"",",").reduce((e,t)=>(e[m(t)]=!0,e),{}),s=A(n,e,a,i);if(!s.length){const t="page",r=`[${y(n,t)}]`,[o,i]=L(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 j(e=v.Commands.Prefix,t){if(!t)return{};const n=y(e,v.Commands.Globals,!1);let r={};return S(t,`[${n}]`,t=>{r=a(r,k(e,t,v.Commands.Globals,!1))}),r}function O(e){const t={};return R(e).forEach(e=>{const[n,r]=T(e),[o,i]=P(n);if(!o)return;let[a,s]=P(r||"");a=a||o,t[o]||(t[o]=[]),t[o].push({trigger:o,triggerParams:i,action:a,actionParams:s})}),t}function A(e,t,n,r=!1){const o=[];let i=t;for(n=0!==Object.keys(n||{}).length?n:void 0;i;){const a=C(e,i,t,n);if(a&&(o.push(a),r))break;i=$(e,i)}return o}function C(e,t,n,r){const o=w(t,y(e));if(!o||r&&!r[o])return null;const i=[t],s=`[${y(e,o)}],[${y(e,"")}]`,c=y(e,v.Commands.Link,!1);let l={};const u=[],[d,f]=L(n||t,s,e,o);D(t,`[${c}]`,n=>{const[r,o]=T(w(n,c));"parent"===o&&D(t.ownerDocument.body,`[${c}="${r}:child"]`,t=>{i.push(t);const n=C(e,t);n&&u.push(n)})});const p=[];i.forEach(e=>{e.matches(s)&&p.push(e),D(e,s,e=>p.push(e))});let m={};return p.forEach(t=>{m=a(m,k(e,t,"")),l=a(l,k(e,t,o))}),l=a(a(m,l),d),i.forEach(t=>{D(t,`[${y(e)}]`,t=>{const n=C(e,t);n&&u.push(n)})}),{entity:o,data:l,context:f,nested:u}}function $(e,t){const n=y(e,v.Commands.Link,!1);if(t.matches(`[${n}]`)){const[e,r]=T(w(t,n));if("child"===r){const r=t.ownerDocument;let o=null;return S(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 L(e,t,n,r){let o={};const i={};let s=e;const c=`[${y(n,v.Commands.Context,!1)}]`;let l=0;for(;s;)s.matches(t)&&(o=a(k(n,s,""),o),o=a(k(n,s,r),o)),s.matches(c)&&(Object.entries(k(n,s,v.Commands.Context,!1)).forEach(([e,t])=>{t&&!i[e]&&(i[e]=[t,l])}),++l),s=$(n,s);return[o,i]}function S(e,t,n){e.querySelectorAll(t).forEach(n)}function D(e,t,n){e.querySelectorAll(t).forEach(n);e instanceof(e.ownerDocument||e).defaultView.Element&&e.shadowRoot&&D(e.shadowRoot,t,n),e.querySelectorAll("*").forEach(e=>{e.shadowRoot&&D(e.shadowRoot,t,n)})}function R(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function T(e){const[t,n]=e.split(/:(.+)/,2);return[m(t),m(n)]}function P(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}import{isVisible as N}from"@walkeros/web-core";var W=new WeakMap,V=new WeakMap,I=new WeakMap;function M(e){const t=Date.now();let n=V.get(e);if(!n||t-n.lastChecked>500){const r=e.ownerDocument.defaultView,o=e.ownerDocument;n={isVisible:N(e,r,o),lastChecked:t},V.set(e,n)}return n.isVisible}function U(e){const t=(e.ownerDocument||e).defaultView;if(t&&t.IntersectionObserver)return p(()=>new t.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,r;const o=t.target,i=I.get(e);if(!i)return;const a=i.timers.get(o);if(t.intersectionRatio>0){const r=Date.now();let s=W.get(o);if(!s||r-s.lastChecked>1e3){const e=o.ownerDocument.defaultView;s={isLarge:o.offsetHeight>e.innerHeight,lastChecked:r},W.set(o,s)}if(t.intersectionRatio>=.5||s.isLarge&&M(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(M(o)){const r=null==(t=i.elementConfigs)?void 0:t.get(o);(null==r?void 0:r.context)&&await oe(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=I.get(e);if(!n)return;n.observer&&n.observer.unobserve(t);const r=n.timers.get(t);r&&(clearTimeout(r),n.timers.delete(t)),W.delete(t),V.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 q(e,t,n={multiple:!1}){var r;const o=e.settings.scope;if(!o)return;const i=I.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 B(e){if(!e)return;const t=I.get(e);t&&(t.observer&&t.observer.disconnect(),I.delete(e))}function H(e,t,n,r,o,i,a){const{elb:s,settings:c}=e;if(d(t)&&t.startsWith("walker "))return s(t,n);if(u(t)){const e=t;if(!e.source&&c.scope){const t=c.scope.ownerDocument||c.scope,n=t.defaultView;e.source=z(n,t)}return!e.globals&&c.scope&&(e.globals=j(c.prefix,c.scope)),s(e)}const[f]=String(u(t)?t.name:t).split(" ");let p,m=u(n)?n:{},b={},g=!1;if(l(n)&&(p=n,g=!0),l(o)?p=o:u(o)&&Object.keys(o).length&&(b=o),p){const e=A(c.prefix||"data-elb",p).find(e=>e.entity===f);e&&(g&&(m=e.data),e.context&&(b=e.context))}const h=c.scope?c.scope.ownerDocument||c.scope:void 0,v=null==h?void 0:h.defaultView;"page"===f&&v&&(m.id=m.id||v.location.pathname);const w=j(c.prefix,c.scope);return s({name:String(t||""),data:m,context:b,globals:w,nested:i,custom:a,trigger:d(r)?r:"",source:v&&h?z(v,h):void 0})}function z(e,t){return{type:"browser",platform:"web",url:e.location.href,referrer:t.referrer}}var G,Y=[],F="click",K="hover",X="load",_="pulse",J="scroll",Q="submit",Z="impression",ee="visible",te="wait";function ne(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;if(!n)return;n.addEventListener("click",p(function(t){se.call(this,e,t)})),n.addEventListener("submit",p(function(t){ce.call(this,e,t)}))}(e,t)}function re(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;Y=[];const r=n;if(!r)return;B(r),function(e,t=1e3){I.has(e)||I.set(e,{observer:U(e),timers:new WeakMap,duration:t})}(r,1e3);const o=y(t.prefix,b.Commands.Action,!1),i=r.ownerDocument||r;r!==i&&ie(e,r,o,t);D(r,`[${o}]`,n=>{ie(e,n,o,t)}),Y.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)||(oe(t,e,J),!1)});G||(G=function(e,t=1e3){let n=null;return function(...r){if(null===n)return n=setTimeout(()=>{n=null},t),e(...r)}}(function(){Y=o.call(t,Y,e)}),t.addEventListener("scroll",G))}(e,r)}(e,t)}async function oe(e,t,n){const r=E(t,n,e.settings.prefix);return Promise.all(r.map(t=>H(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function ie(e,t,n,r){const o=h(t,n);o&&Object.values(O(o)).forEach(n=>n.forEach(n=>{switch(n.trigger){case K:!function(e,t){t.addEventListener("mouseenter",p(function(t){const n=ae(t);n&&oe(e,n,K)}))}(e,t);break;case X:!function(e,t){oe(e,t,X)}(e,t);break;case _:!function(e,t,n=""){const r=t.ownerDocument;setInterval(()=>{r.hidden||oe(e,t,_)},parseInt(n||"")||15e3)}(e,t,n.triggerParams);break;case J:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;Y.push([e,n])}(t,n.triggerParams);break;case Z:q(e,t);break;case ee:q(e,t,{multiple:!0});break;case te:!function(e,t,n=""){setTimeout(()=>oe(e,t,te),parseInt(n||"")||15e3)}(e,t,n.triggerParams)}}))}function ae(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 se(e,t){const n=ae(t);n&&oe(e,n,F)}function ce(e,t){const n=ae(t);n&&oe(e,n,Q)}function le(e,t={}){const n=t.name||"elbLayer",r=t.window;if(!r)return;const o=r;o[n]||(o[n]=[]);const i=o[n],a=r.document;i.push=function(...n){if(fe(n[0])){const r=[...Array.from(n[0])],o=Array.prototype.push.apply(this,[r]);return de(e,t.prefix,r,a),o}const r=Array.prototype.push.apply(this,n);return n.forEach(n=>{de(e,t.prefix,n,a)}),r},Array.isArray(i)&&i.length>0&&function(e,t="data-elb",n,r){ue(e,t,n,!0,r),ue(e,t,n,!1,r),n.length=0}(e,t.prefix,i,a)}function ue(e,t,n,r,o){const i=[];let a=!0;n.forEach(e=>{const t=fe(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;if(Array.isArray(t)&&1===t.length&&!t[0])return;const o=t[0],s=!u(o)&&d(o)&&o.startsWith("walker ");if(u(o)){if("object"==typeof o&&0===Object.keys(o).length)return}else{const e=Array.from(t);if(!d(e[0])||""===e[0].trim())return;const n="walker run";a&&e[0]===n&&(a=!1)}(r&&s||!r&&!s)&&i.push(t)}),i.forEach(n=>{de(e,t,n,o)})}function de(e,t="data-elb",n,r){p(()=>{if(Array.isArray(n)){const[o,...i]=n;if(!o||d(o)&&""===o.trim())return;if(d(o)&&o.startsWith("walker "))return void e(o,i[0]);H({elb:e,settings:{prefix:t,scope:r,pageview:!1,elb:"",elbLayer:!1}},o,...i)}else if(n&&"object"==typeof n){if(0===Object.keys(n).length)return;e(n)}},()=>{})()}function fe(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var pe={},me={};t(me,{createTrigger:()=>Le,env:()=>be,step:()=>ye,trigger:()=>Se});var be={};t(be,{push:()=>we});var ge=()=>{},he=()=>()=>Promise.resolve({ok:!0}),ve={error:ge,warn:ge,info:ge,debug:ge,throw:e=>{throw"string"==typeof e?new Error(e):e},json:ge,scope:()=>ve},we={get push(){return he()},get command(){return he()},get elb(){return he()},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:ve},ye={};t(ye,{clickEvent:()=>xe,contextAndGlobals:()=>Ce,dataAttributeTypes:()=>Ae,impressionEvent:()=>je,nestedEntities:()=>Oe,pageView:()=>ke,submitEvent:()=>Ee});var ke={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/"}}]]},xe={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"}]]},Ee={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"}]]},je={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"}]]},Oe={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"}]]},Ae={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"}]]};import{startFlow as $e}from"@walkeros/collector";var Le=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 $e({...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 f={elb:r.elb,settings:d.config.settings};await oe(f,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"))}}};function De(e={}){const t=e.prefix||"data-elb";return function(e){let n,r=e;const o={},i={},a={},s={},l={},u={};function f(e){return Object.entries(e).map(([e,t])=>`${e}:${function(e){if(!c(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 p={entity:e=>(n=e,r=e,p),data(e,t){const n=null!=r?r:"";return o[n]||(o[n]={}),d(e)?o[n][e]=t:Object.assign(o[n],e),p},action(e,t){if(d(e))if(c(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 p},actions(e,t){if(d(e))if(c(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 p},context:(e,t)=>(d(e)?s[e]=t:Object.assign(s,e),p),globals:(e,t)=>(d(e)?l[e]=t:Object.assign(l,e),p),link:(e,t)=>(d(e)?u[e]=t:Object.assign(u,e),p),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}-`]=f(r)}}),Object.keys(i).length>0&&(e[`${t}action`]=f(i)),Object.keys(a).length>0&&(e[`${t}actions`]=f(a)),Object.keys(s).length>0&&(e[`${t}context`]=f(s)),Object.keys(l).length>0&&(e[`${t}globals`]=f(l)),Object.keys(u).length>0&&(e[`${t}link`]=f(u)),e}};return p}}var Re=async e=>{const{config:t,env:n}=e,{elb:r,command:o,window:i,document:a}=n,s=(null==t?void 0:t.settings)||{},c=i||(void 0!==globalThis.window?globalThis.window:void 0),l=a||(void 0!==globalThis.document?globalThis.document:void 0),u=function(e={},t){return{prefix:"data-elb",pageview:!0,elb:"elb",elbLayer:"elbLayer",scope:t||void 0,...e}}(s,l),f={settings:u},p={elb:r,settings:u},m=e=>{if(e.pageview){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]=L(i,`[${y(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);H(p,"page view",t,"load",n)}};c&&l&&(!1!==u.elbLayer&&r&&le(r,{name:d(u.elbLayer)?u.elbLayer:"elbLayer",prefix:u.prefix,window:c}),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)}(ne,p,u),d(u.elb)&&u.elb&&(c[u.elb]=(...e)=>{const[t,n,r,o,i,a]=e;return H(p,t,n,r,o,i,a)}));return{type:"browser",config:f,push:(...e)=>{const[t,n,r,o,i,a]=e;return H(p,t,n,r,o,i,a)},destroy:async()=>{l&&B(u.scope||l)},on:async e=>{switch(e){case"ready":default:break;case"run":l&&c&&(re(p,u),m(u))}}}},Te=Re;export{pe as SourceBrowser,De as createTagger,Te as default,me as examples,x as getAllEvents,y as getElbAttributeName,k as getElbValues,E as getEvents,j as getGlobals,Re as sourceBrowser};//# sourceMappingURL=index.mjs.map
|
|
1
|
+
var e=Object.defineProperty,t=(t,n)=>{for(var r in n)e(t,r,{get:n[r],enumerable:!0})},n=Object.defineProperty;((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})({},{Level:()=>o});var r,o=((r=o||{})[r.ERROR=0]="ERROR",r[r.WARN=1]="WARN",r[r.INFO=2]="INFO",r[r.DEBUG=3]="DEBUG",r),i={merge:!0,shallow:!0,extend:!0};function a(e,t={},n={}){n={...i,...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 s(e){return Array.isArray(e)}function c(e){return void 0!==e}function l(e){return!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function u(e){return"object"==typeof e&&null!==e&&!s(e)&&"[object Object]"===Object.prototype.toString.call(e)}function d(e){return"string"==typeof e}function p(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function f(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function m(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}import{Const as g}from"@walkeros/collector";import{elb as b,getAttribute as h}from"@walkeros/web-core";import{Const as v}from"@walkeros/collector";import{getAttribute as w}from"@walkeros/web-core";function y(e,t,n=!0){return e+(t=null!=t?(n?"-":"")+t:"")}function k(e,t,n,r=!0){return R(w(t,y(e,n,r))||"").reduce((e,n)=>{let[r,o]=T(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),s(e[r])||(e[r]=[]),e[r].push(p(o))):e[r]=p(o),e},{})}function x(e,t=v.Commands.Prefix){var n;const r=e;if(!r)return[];let o=[];const i=v.Commands.Action,a=`[${y(t,i,!1)}]`,s=e=>{Object.keys(k(t,e,i,!1)).forEach(n=>{o=o.concat(E(e,n,t))})};return r!==(r.ownerDocument||r)&&(null==(n=r.matches)?void 0:n.call(r,a))&&s(r),D(r,a,s),o}function E(e,t,n=v.Commands.Prefix){const r=[],{actions:o,nearestOnly:i}=function(e,t,n){let r=t;for(;r;){const t=w(r,y(e,v.Commands.Actions,!1));if(t){const e=O(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const o=w(r,y(e,v.Commands.Action,!1));if(o){const e=O(o);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}r=L(e,r)}return{actions:[],nearestOnly:!1}}(n,e,t);return o.length?(o.forEach(o=>{const a=R(o.actionParams||"",",").reduce((e,t)=>(e[m(t)]=!0,e),{}),s=A(n,e,a,i);if(!s.length){const t="page",r=`[${y(n,t)}]`,[o,i]=S(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 j(e=v.Commands.Prefix,t){if(!t)return{};const n=y(e,v.Commands.Globals,!1);let r={};return $(t,`[${n}]`,t=>{r=a(r,k(e,t,v.Commands.Globals,!1))}),r}function O(e){const t={};return R(e).forEach(e=>{const[n,r]=T(e),[o,i]=N(n);if(!o)return;let[a,s]=N(r||"");a=a||o,t[o]||(t[o]=[]),t[o].push({trigger:o,triggerParams:i,action:a,actionParams:s})}),t}function A(e,t,n,r=!1){const o=[];let i=t;for(n=0!==Object.keys(n||{}).length?n:void 0;i;){const a=C(e,i,t,n);if(a&&(o.push(a),r))break;i=L(e,i)}return o}function C(e,t,n,r){const o=w(t,y(e));if(!o||r&&!r[o])return null;const i=[t],s=`[${y(e,o)}],[${y(e,"")}]`,c=y(e,v.Commands.Link,!1);let l={};const u=[],[d,p]=S(n||t,s,e,o);D(t,`[${c}]`,n=>{const[r,o]=T(w(n,c));"parent"===o&&D(t.ownerDocument.body,`[${c}="${r}:child"]`,t=>{i.push(t);const n=C(e,t);n&&u.push(n)})});const f=[];i.forEach(e=>{e.matches(s)&&f.push(e),D(e,s,e=>f.push(e))});let m={};return f.forEach(t=>{m=a(m,k(e,t,"")),l=a(l,k(e,t,o))}),l=a(a(m,l),d),i.forEach(t=>{D(t,`[${y(e)}]`,t=>{const n=C(e,t);n&&u.push(n)})}),{entity:o,data:l,context:p,nested:u}}function L(e,t){const n=y(e,v.Commands.Link,!1);if(t.matches(`[${n}]`)){const[e,r]=T(w(t,n));if("child"===r){const r=t.ownerDocument;let o=null;return $(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 S(e,t,n,r){let o={};const i={};let s=e;const c=`[${y(n,v.Commands.Context,!1)}]`;let l=0;for(;s;)s.matches(t)&&(o=a(k(n,s,""),o),o=a(k(n,s,r),o)),s.matches(c)&&(Object.entries(k(n,s,v.Commands.Context,!1)).forEach(([e,t])=>{t&&!i[e]&&(i[e]=[t,l])}),++l),s=L(n,s);return[o,i]}function $(e,t,n){e.querySelectorAll(t).forEach(n)}function D(e,t,n){e.querySelectorAll(t).forEach(n);e instanceof(e.ownerDocument||e).defaultView.Element&&e.shadowRoot&&D(e.shadowRoot,t,n),e.querySelectorAll("*").forEach(e=>{e.shadowRoot&&D(e.shadowRoot,t,n)})}function R(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function T(e){const[t,n]=e.split(/:(.+)/,2);return[m(t),m(n)]}function N(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}import{isVisible as P}from"@walkeros/web-core";var W=new WeakMap,I=new WeakMap,V=new WeakMap;function M(e){const t=Date.now();let n=I.get(e);if(!n||t-n.lastChecked>500){const r=e.ownerDocument.defaultView,o=e.ownerDocument;n={isVisible:P(e,r,o),lastChecked:t},I.set(e,n)}return n.isVisible}function U(e){const t=(e.ownerDocument||e).defaultView;if(t&&t.IntersectionObserver)return f(()=>new t.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,r;const o=t.target,i=V.get(e);if(!i)return;const a=i.timers.get(o);if(t.intersectionRatio>0){const r=Date.now();let s=W.get(o);if(!s||r-s.lastChecked>1e3){const e=o.ownerDocument.defaultView;s={isLarge:o.offsetHeight>e.innerHeight,lastChecked:r},W.set(o,s)}if(t.intersectionRatio>=.5||s.isLarge&&M(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(M(o)){const r=null==(t=i.elementConfigs)?void 0:t.get(o);(null==r?void 0:r.context)&&await oe(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=V.get(e);if(!n)return;n.observer&&n.observer.unobserve(t);const r=n.timers.get(t);r&&(clearTimeout(r),n.timers.delete(t)),W.delete(t),I.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 q(e,t,n={multiple:!1}){var r;const o=e.settings.scope;if(!o)return;const i=V.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 z(e){if(!e)return;const t=V.get(e);t&&(t.observer&&t.observer.disconnect(),V.delete(e))}function B(e,t,n,r,o,i,a){const{elb:s,settings:c}=e;if(d(t)&&t.startsWith("walker "))return s(t,n);if(u(t)){const e=t;if(!e.source&&c.scope){const t=c.scope.ownerDocument||c.scope,n=t.defaultView;e.source=H(n,t)}return!e.globals&&c.scope&&(e.globals=j(c.prefix,c.scope)),s(e)}const[p]=String(u(t)?t.name:t).split(" ");let f,m=u(n)?n:{},g={},b=!1;if(l(n)&&(f=n,b=!0),l(o)?f=o:u(o)&&Object.keys(o).length&&(g=o),f){const e=A(c.prefix||"data-elb",f).find(e=>e.entity===p);e&&(b&&(m=e.data),e.context&&(g=e.context))}const h=c.scope?c.scope.ownerDocument||c.scope:void 0,v=null==h?void 0:h.defaultView;"page"===p&&v&&(m.id=m.id||v.location.pathname);const w=j(c.prefix,c.scope);return s({name:String(t||""),data:m,context:g,globals:w,nested:i,custom:a,trigger:d(r)?r:"",source:v&&h?H(v,h):void 0})}function H(e,t){return{type:"browser",platform:"web",url:e.location.href,referrer:t.referrer}}var G,Y=[],F="click",K="hover",X="load",_="pulse",J="scroll",Q="submit",Z="impression",ee="visible",te="wait";function ne(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;if(!n)return;n.addEventListener("click",f(function(t){se.call(this,e,t)})),n.addEventListener("submit",f(function(t){ce.call(this,e,t)}))}(e,t)}function re(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;Y=[];const r=n;if(!r)return;z(r),function(e,t=1e3){V.has(e)||V.set(e,{observer:U(e),timers:new WeakMap,duration:t})}(r,1e3);const o=y(t.prefix,g.Commands.Action,!1),i=r.ownerDocument||r;r!==i&&ie(e,r,o,t);D(r,`[${o}]`,n=>{ie(e,n,o,t)}),Y.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)||(oe(t,e,J),!1)});G||(G=function(e,t=1e3){let n=null;return function(...r){if(null===n)return n=setTimeout(()=>{n=null},t),e(...r)}}(function(){Y=o.call(t,Y,e)}),t.addEventListener("scroll",G))}(e,r)}(e,t)}async function oe(e,t,n){const r=E(t,n,e.settings.prefix);return Promise.all(r.map(t=>B(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function ie(e,t,n,r){const o=h(t,n);o&&Object.values(O(o)).forEach(n=>n.forEach(n=>{switch(n.trigger){case K:!function(e,t){t.addEventListener("mouseenter",f(function(t){const n=ae(t);n&&oe(e,n,K)}))}(e,t);break;case X:!function(e,t){oe(e,t,X)}(e,t);break;case _:!function(e,t,n=""){const r=t.ownerDocument;setInterval(()=>{r.hidden||oe(e,t,_)},parseInt(n||"")||15e3)}(e,t,n.triggerParams);break;case J:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;Y.push([e,n])}(t,n.triggerParams);break;case Z:q(e,t);break;case ee:q(e,t,{multiple:!0});break;case te:!function(e,t,n=""){setTimeout(()=>oe(e,t,te),parseInt(n||"")||15e3)}(e,t,n.triggerParams)}}))}function ae(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 se(e,t){const n=ae(t);n&&oe(e,n,F)}function ce(e,t){const n=ae(t);n&&oe(e,n,Q)}function le(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(pe(n[0])){const r=[...Array.from(n[0])],o=Array.prototype.push.apply(this,[r]);return de(e,t.prefix,r,c,i),o}const r=Array.prototype.push.apply(this,n);return n.forEach(n=>{de(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=ue(n);if(!c)return;const l=c[0];!u(l)&&d(l)&&l.startsWith(i)&&(s.add(a),de(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 ue(e){const t=pe(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 u(r)&&0===Object.keys(r).length||!u(r)&&d(r)&&""===r.trim()?null:t}function de(e,t="data-elb",n,r,o){f(()=>{if(Array.isArray(n)){const[i,...a]=n;if(!i||d(i)&&""===i.trim())return void(null==o||o.debug("pushCommand skipped (empty/invalid action)",{item:n}));if(d(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}),B({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 pe(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var fe={},me={};t(me,{createTrigger:()=>Se,env:()=>ge,step:()=>ye,trigger:()=>$e});var ge={};t(ge,{push:()=>we});var be=()=>{},he=()=>()=>Promise.resolve({ok:!0}),ve={error:be,warn:be,info:be,debug:be,throw:e=>{throw"string"==typeof e?new Error(e):e},json:be,scope:()=>ve},we={get push(){return he()},get command(){return he()},get elb(){return he()},get window(){return{addEventListener:be,removeEventListener:be,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:be,removeEventListener:be,querySelector:be,querySelectorAll:()=>[],getElementById:be,getElementsByClassName:()=>[],getElementsByTagName:()=>[],createElement:()=>({setAttribute:be,getAttribute:be,addEventListener:be,removeEventListener:be}),body:{appendChild:be,removeChild:be},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:ve},ye={};t(ye,{clickEvent:()=>xe,contextAndGlobals:()=>Ce,dataAttributeTypes:()=>Ae,impressionEvent:()=>je,nestedEntities:()=>Oe,pageView:()=>ke,submitEvent:()=>Ee});var ke={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/"}}]]},xe={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"}]]},Ee={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"}]]},je={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"}]]},Oe={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"}]]},Ae={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"}]]};import{startFlow as Le}from"@walkeros/collector";var Se=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 Le({...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 oe(p,u,t)}}},$e=(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 De(e={}){const t=e.prefix||"data-elb";return function(e){let n,r=e;const o={},i={},a={},s={},l={},u={};function p(e){return Object.entries(e).map(([e,t])=>`${e}:${function(e){if(!c(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 f={entity:e=>(n=e,r=e,f),data(e,t){const n=null!=r?r:"";return o[n]||(o[n]={}),d(e)?o[n][e]=t:Object.assign(o[n],e),f},action(e,t){if(d(e))if(c(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 f},actions(e,t){if(d(e))if(c(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 f},context:(e,t)=>(d(e)?s[e]=t:Object.assign(s,e),f),globals:(e,t)=>(d(e)?l[e]=t:Object.assign(l,e),f),link:(e,t)=>(d(e)?u[e]=t:Object.assign(u,e),f),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}-`]=p(r)}}),Object.keys(i).length>0&&(e[`${t}action`]=p(i)),Object.keys(a).length>0&&(e[`${t}actions`]=p(a)),Object.keys(s).length>0&&(e[`${t}context`]=p(s)),Object.keys(l).length>0&&(e[`${t}globals`]=p(l)),Object.keys(u).length>0&&(e[`${t}link`]=p(u)),e}};return f}}var Re=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),p=function(e={},t){return{prefix:"data-elb",pageview:!0,elb:"elb",elbLayer:"elbLayer",scope:t||void 0,...e}}(c,u),f={elb:o,settings:p},m=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]=S(i,`[${y(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);B(f,"page view",t,"load",n)};return{type:"browser",config:{settings:p},push:(...e)=>{const[t,n,r,o,i,a]=e;return B(f,t,n,r,o,i,a)},on:async e=>{if("run"===e)u&&l&&(re(f,p),function(e,t,n,r){const o=d(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=ue(e);n&&d(n[0])&&"walker run"===n[0]&&(c=t)});const l=[];for(let e=c+1;e<a.length;e++){const t=ue(a[e]);t&&l.push(t)}a.length=c+1,null==r||r.debug("drainNonWalkerEvents",{anchor:c,drained:l.length}),l.forEach(t=>de(e,i,t,s,r))}(o,p,l,r),m(p))},init:async()=>{l&&u&&(!1!==p.elbLayer&&o&&le(o,{name:d(p.elbLayer)?p.elbLayer:"elbLayer",prefix:p.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)}(ne,f,p),d(p.elb)&&p.elb&&(l[p.elb]=(...e)=>{const[t,n,r,o,i,a]=e;return B(f,t,n,r,o,i,a)}))},destroy:async()=>{u&&z(p.scope||u)}}},Te=Re;export{fe as SourceBrowser,De as createTagger,Te as default,me as examples,x as getAllEvents,y as getElbAttributeName,k as getElbValues,E as getEvents,j as getGlobals,Re as sourceBrowser};//# sourceMappingURL=index.mjs.map
|