@walkeros/web-source-browser 4.1.0 → 4.1.1-next-1779485810490
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/CHANGELOG.md +15 -0
- package/dist/dev.js.map +1 -1
- package/dist/dev.mjs.map +1 -1
- package/dist/index.browser.js +1 -1
- 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 +1 -1
- package/package.json +4 -4
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})},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
|
|
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:()=>pe,createTagger:()=>Te,default:()=>Pe,examples:()=>fe,getAllEvents:()=>b,getElbAttributeName:()=>f,getElbValues:()=>m,getEvents:()=>h,getGlobals:()=>v,sourceBrowser:()=>qe}),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"),g=require("@walkeros/collector"),p=require("@walkeros/web-core");function f(e,t,n=!0){return e+(t=null!=t?(n?"-":"")+t:"")}function m(e,t,n,r=!0){return j((0,p.getAttribute)(t,f(e,n,r))||"").reduce((e,n)=>{let[r,o]=A(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=g.Const.Commands.Prefix){var n;const r=e;if(!r)return[];let o=[];const i=g.Const.Commands.Action,s=`[${f(t,i,!1)}]`,a=e=>{Object.keys(m(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=g.Const.Commands.Prefix){const r=[],{actions:o,nearestOnly:i}=function(e,t,n){let r=t;for(;r;){const t=(0,p.getAttribute)(r,f(e,g.Const.Commands.Actions,!1));if(t){const e=w(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const o=(0,p.getAttribute)(r,f(e,g.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=`[${f(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=g.Const.Commands.Prefix,t){if(!t)return{};const n=f(e,g.Const.Commands.Globals,!1);let r={};return C(t,`[${n}]`,t=>{r=(0,d.assign)(r,m(e,t,g.Const.Commands.Globals,!1))}),r}function w(e){const t={};return j(e).forEach(e=>{const[n,r]=A(e),[o,i]=S(n);if(!o)return;let[s,a]=S(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,p.getAttribute)(t,f(e));if(!o||r&&!r[o])return null;const i=[t],s=`[${f(e,o)}],[${f(e,"")}]`,a=f(e,g.Const.Commands.Link,!1);let c={};const l=[],[u,b]=E(n||t,s,e,o);O(t,`[${a}]`,n=>{const[r,o]=A((0,p.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,m(e,t,"")),c=(0,d.assign)(c,m(e,t,o))}),c=(0,d.assign)((0,d.assign)(v,c),u),i.forEach(t=>{O(t,`[${f(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=f(e,g.Const.Commands.Link,!1);if(t.matches(`[${n}]`)){const[e,r]=A((0,p.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=`[${f(n,g.Const.Commands.Context,!1)}]`;let c=0;for(;s;)s.matches(t)&&(o=(0,d.assign)(m(n,s,""),o),o=(0,d.assign)(m(n,s,r),o)),s.matches(a)&&(Object.entries(m(n,s,g.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 A(e){const[t,n]=e.split(/:(.+)/,2);return[(0,d.trim)(t),(0,d.trim)(n)]}function S(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 re(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 I(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=M(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:{},g={},p=!1;if((0,R.isElementOrDocument)(n)&&(u=n,p=!0),(0,R.isElementOrDocument)(o)?u=o:(0,R.isObject)(o)&&Object.keys(o).length&&(g=o),u){const e=y(c.prefix||"data-elb",u).find(e=>e.entity===l);e&&(p&&(d=e.data),e.context&&(g=e.context))}const f=c.scope?c.scope.ownerDocument||c.scope:void 0,m=null==f?void 0:f.defaultView;"page"===l&&m&&(d.id=d.id||m.location.pathname);const b=v(c.prefix,c.scope);return a({name:String(t||""),data:d,context:g,globals:b,nested:i,custom:s,trigger:(0,R.isString)(r)?r:"",source:m&&f?M(m,f):void 0})}function M(e,t){return{type:"browser",platform:"web",url:e.location.href,referrer:t.referrer}}var U,z,H=[],B=[],G=[],_="click",Y="hover",K="load",X="pulse",F="scroll",J="submit",Q="impression",Z="visible",ee="wait";function te(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;if(!n)return;z&&z.abort();z=new AbortController;const{signal:r}=z;n.addEventListener("click",(0,c.tryCatch)(function(t){se.call(this,e,t)}),{signal:r}),n.addEventListener("submit",(0,c.tryCatch)(function(t){ae.call(this,e,t)}),{signal:r})}(e,t)}function ne(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;H=[];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=f(t.prefix,l.Const.Commands.Action,!1),i=r.ownerDocument||r;r!==i&&oe(e,r,o,t);O(r,`[${o}]`,n=>{oe(e,n,o,t)}),H.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)||(re(t,e,F),!1)});U||(U=(0,c.throttle)(function(){H=o.call(t,H,e)}),t.addEventListener("scroll",U,z?{signal:z.signal}:void 0))}(e,r)}(e,t)}async function re(e,t,n){const r=h(t,n,e.settings.prefix);return Promise.all(r.map(t=>I(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function oe(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 Y:!function(e,t){t.addEventListener("mouseenter",(0,c.tryCatch)(function(t){const n=ie(t);n&&re(e,n,Y)}),z?{signal:z.signal}:void 0)}(e,t);break;case K:!function(e,t){re(e,t,K)}(e,t);break;case X:!function(e,t,n=""){const r=t.ownerDocument,o=setInterval(()=>{r.hidden||re(e,t,X)},parseInt(n||"")||15e3);B.push(o)}(e,t,n.triggerParams);break;case F:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;H.push([e,n])}(t,n.triggerParams);break;case Q:W(e,t);break;case Z:W(e,t,{multiple:!0});break;case ee:!function(e,t,n=""){const r=setTimeout(()=>re(e,t,ee),parseInt(n||"")||15e3);G.push(r)}(e,t,n.triggerParams)}}))}function ie(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=ie(t);n&&re(e,n,_)}function ae(e,t){const n=ie(t);n&&re(e,n,J)}var ce=require("@walkeros/core");function le(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(ge(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(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=ue(n);if(!c)return;const l=c[0];!(0,ce.isObject)(l)&&(0,ce.isString)(l)&&l.startsWith(i)&&(a.add(s),de(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 ue(e){const t=ge(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,ce.isObject)(r)&&0===Object.keys(r).length||!(0,ce.isObject)(r)&&(0,ce.isString)(r)&&""===r.trim()?null:t}function de(e,t="data-elb",n,r,o){(0,ce.tryCatch)(()=>{if(Array.isArray(n)){const[i,...s]=n;if(!i||(0,ce.isString)(i)&&""===i.trim())return void(null==o||o.debug("pushCommand skipped (empty/invalid action)",{item:n}));if((0,ce.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}),I({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 ge(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var pe={},fe={};i(fe,{createTrigger:()=>Le,env:()=>me,step:()=>ye,trigger:()=>$e});var me={};i(me,{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={};i(ye,{clickEvent:()=>xe,contextAndGlobals:()=>Ae,dataAttributeTypes:()=>je,impressionEvent:()=>Ce,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"}]]},Ce={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"}]]},je={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"}]]},Ae={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"}]]},Se=require("@walkeros/collector"),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,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,Se.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 g={elb:r.elb,settings:d.config.settings};await re(g,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"))}}},De=require("@walkeros/core");function Te(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,De.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,De.isString)(e)?o[n][e]=t:Object.assign(o[n],e),d},action(e,t){if((0,De.isString)(e))if((0,De.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,De.isString)(e))if((0,De.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,De.isString)(e)?a[e]=t:Object.assign(a,e),d),globals:(e,t)=>((0,De.isString)(e)?c[e]=t:Object.assign(c,e),d),link:(e,t)=>((0,De.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 qe=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),g=function(e={},t){return{prefix:"data-elb",pageview:!0,elb:"elb",elbLayer:"elbLayer",scope:t||void 0,...e}}(l,d),p={elb:o,settings:g},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,[s,a]=E(i,`[${f(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);I(p,"page view",t,"load",n)};return{type:"browser",config:{settings:g},push:(...e)=>{const[t,n,r,o,i,s]=e;return I(p,t,n,r,o,i,s)},on:async e=>{if("run"===e)d&&u&&(ne(p,g),function(e,t,n,r){const o=(0,ce.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=ue(e);n&&(0,ce.isString)(n[0])&&"walker run"===n[0]&&(c=t)});const l=[];for(let e=c+1;e<s.length;e++){const t=ue(s[e]);t&&l.push(t)}s.length=c+1,null==r||r.debug("drainNonWalkerEvents",{anchor:c,drained:l.length}),l.forEach(t=>de(e,i,t,a,r))}(o,g,u,r),m(g))},init:async()=>{u&&d&&(!1!==g.elbLayer&&o&&le(o,{name:(0,a.isString)(g.elbLayer)?g.elbLayer:"elbLayer",prefix:g.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)}(te,p,g),(0,a.isString)(g.elb)&&g.elb&&(u[g.elb]=(...e)=>{const[t,n,r,o,i,s]=e;return I(p,t,n,r,o,i,s)}))},destroy:async()=>{z&&(z.abort(),z=void 0),U=void 0,H=[],B.forEach(e=>clearInterval(e)),B=[],G.forEach(e=>clearTimeout(e)),G=[],d&&N(g.scope||d)}}},Pe=qe;//# sourceMappingURL=index.js.map
|