@walkeros/web-source-browser 4.1.1 → 4.1.3-next-1779963694449
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 +22 -0
- 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 +1 -0
- package/dist/index.d.ts +1 -0
- 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 +3 -3
- 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:()=>fe,__resetInstanceCountForTests:()=>Ve,createTagger:()=>qe,default:()=>Ne,examples:()=>me,getAllEvents:()=>b,getElbAttributeName:()=>f,getElbValues:()=>m,getEvents:()=>h,getGlobals:()=>w,sourceBrowser:()=>We}),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=v(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=v(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 w(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 v(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 w={};return h.forEach(t=>{w=(0,d.assign)(w,m(e,t,"")),c=(0,d.assign)(c,m(e,t,o))}),c=(0,d.assign)((0,d.assign)(w,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 oe(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=w(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=w(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=[];function G(){return z||(z=new AbortController),z}var Y="click",F="hover",K="load",X="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;z&&z.abort();z=new AbortController;const{signal:r}=z;n.addEventListener("click",(0,c.tryCatch)(function(t){ae.call(this,e,t)}),{signal:r}),n.addEventListener("submit",(0,c.tryCatch)(function(t){ce.call(this,e,t)}),{signal:r})}(e,t)}function re(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&&ie(e,r,o,t);O(r,`[${o}]`,n=>{ie(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)||(oe(t,e,J),!1)});U||(U=(0,c.throttle)(function(){H=o.call(t,H,e)}),t.addEventListener("scroll",U,{signal:G().signal}))}(e,r)}(e,t)}async function oe(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 ie(e,t,n,r){const o=(0,u.getAttribute)(t,n);o&&Object.values(v(o)).forEach(n=>n.forEach(n=>{switch(n.trigger){case F:!function(e,t){t.addEventListener("mouseenter",(0,c.tryCatch)(function(t){const n=se(t);n&&oe(e,n,F)}),{signal:G().signal})}(e,t);break;case K:!function(e,t){oe(e,t,K)}(e,t);break;case X:!function(e,t,n=""){const r=t.ownerDocument,o=setInterval(()=>{r.hidden||oe(e,t,X)},parseInt(n||"")||15e3);_.push(o)}(e,t,n.triggerParams);break;case J:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;H.push([e,n])}(t,n.triggerParams);break;case Z:W(e,t);break;case ee:W(e,t,{multiple:!0});break;case te:!function(e,t,n=""){const r=setTimeout(()=>oe(e,t,te),parseInt(n||"")||15e3);B.push(r)}(e,t,n.triggerParams)}}))}function se(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 ae(e,t){const n=se(t);n&&oe(e,n,Y)}function ce(e,t){const n=se(t);n&&oe(e,n,Q)}var le=require("@walkeros/core");function ue(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(pe(n[0])){const r=[...Array.from(n[0])],o=Array.prototype.push.apply(this,[r]);return ge(e,t.prefix,r,c,i),o}const r=Array.prototype.push.apply(this,n);return n.forEach(n=>{ge(e,t.prefix,n,c,i)}),r},Array.isArray(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=de(n);if(!c)return;const l=c[0];!(0,le.isObject)(l)&&(0,le.isString)(l)&&l.startsWith(i)&&(a.add(s),ge(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 de(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(0,le.isObject)(r)&&0===Object.keys(r).length||!(0,le.isObject)(r)&&(0,le.isString)(r)&&""===r.trim()?null:t}function ge(e,t="data-elb",n,r,o){(0,le.tryCatch)(()=>{if(Array.isArray(n)){const[i,...s]=n;if(!i||(0,le.isString)(i)&&""===i.trim())return void(null==o||o.debug("pushCommand skipped (empty/invalid action)",{item:n}));if((0,le.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 pe(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var fe={},me={};i(me,{createTrigger:()=>$e,env:()=>be,step:()=>ke,trigger:()=>De});var be={};i(be,{push:()=>ye});var he=()=>{},we=()=>()=>Promise.resolve({ok:!0}),ve={error:he,warn:he,info:he,debug:he,throw:e=>{throw"string"==typeof e?new Error(e):e},json:he,scope:()=>ve},ye={get push(){return we()},get command(){return we()},get elb(){return we()},get window(){return{addEventListener:he,removeEventListener:he,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:he,removeEventListener:he,querySelector:he,querySelectorAll:()=>[],getElementById:he,getElementsByClassName:()=>[],getElementsByTagName:()=>[],createElement:()=>({setAttribute:he,getAttribute:he,addEventListener:he,removeEventListener:he}),body:{appendChild:he,removeChild:he},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:ve},ke={};i(ke,{clickEvent:()=>Ee,contextAndGlobals:()=>Se,dataAttributeTypes:()=>Ae,impressionEvent:()=>Oe,nestedEntities:()=>je,pageView:()=>xe,submitEvent:()=>Ce});var xe={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/"}}]]},Ee={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"}]]},Ce={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"}]]},Oe={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"}]]},je={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"}]]},Se={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"}]]},Le=require("@walkeros/collector"),$e=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,Le.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 oe(g,u,t)}}},De=(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"))}}},Te=require("@walkeros/core");function qe(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,Te.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,Te.isString)(e)?o[n][e]=t:Object.assign(o[n],e),d},action(e,t){if((0,Te.isString)(e))if((0,Te.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,Te.isString)(e))if((0,Te.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,Te.isString)(e)?a[e]=t:Object.assign(a,e),d),globals:(e,t)=>((0,Te.isString)(e)?c[e]=t:Object.assign(c,e),d),link:(e,t)=>((0,Te.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 Pe=0;function Ve(){Pe=0}var We=async e=>{if(Pe>0&&void 0!==globalThis.window)throw new Error("walker.js browser source is single-instance per window. See packages/web/sources/browser/src/trigger.ts for the invariant note.");Pe+=1;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&&(re(p,g),function(e,t,n,r){const o=(0,le.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=de(e);n&&(0,le.isString)(n[0])&&"walker run"===n[0]&&(c=t)});const l=[];for(let e=c+1;e<s.length;e++){const t=de(s[e]);t&&l.push(t)}s.length=c+1,null==r||r.debug("drainNonWalkerEvents",{anchor:c,drained:l.length}),l.forEach(t=>ge(e,i,t,a,r))}(o,g,u,r),m(g))},init:async()=>{u&&d&&(!1!==g.elbLayer&&o&&ue(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)}(ne,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=[],_.forEach(e=>clearInterval(e)),_=[],B.forEach(e=>clearTimeout(e)),B=[],d&&N(g.scope||d)}}},Ne=We;//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})},s={};i(s,{SourceBrowser:()=>be,__resetInstanceCountForTests:()=>Re,createTagger:()=>Ve,default:()=>Ie,examples:()=>he,getAllEvents:()=>b,getElbAttributeName:()=>g,getElbValues:()=>m,getEvents:()=>h,getGlobals:()=>w,sourceBrowser:()=>Ne}),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"),f=require("@walkeros/web-core");function g(e,t,n=!0){return e+(t=null!=t?(n?"-":"")+t:"")}function m(e,t,n,r=!0){return O((0,f.getAttribute)(t,g(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=`[${g(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),j(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,f.getAttribute)(r,g(e,p.Const.Commands.Actions,!1));if(t){const e=v(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const o=(0,f.getAttribute)(r,g(e,p.Const.Commands.Action,!1));if(o){const e=v(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=O(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=`[${g(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 w(e=p.Const.Commands.Prefix,t){if(!t)return{};const n=g(e,p.Const.Commands.Globals,!1);let r={};return C(t,`[${n}]`,t=>{r=(0,d.assign)(r,m(e,t,p.Const.Commands.Globals,!1))}),r}function v(e){const t={};return O(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,f.getAttribute)(t,g(e));if(!o||r&&!r[o])return null;const i=[t],s=`[${g(e,o)}],[${g(e,"")}]`,a=g(e,p.Const.Commands.Link,!1);let c={};const l=[],[u,b]=E(n||t,s,e,o);j(t,`[${a}]`,n=>{const[r,o]=S((0,f.getAttribute)(n,a));"parent"===o&&j(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),j(e,s,e=>h.push(e))});let w={};return h.forEach(t=>{w=(0,d.assign)(w,m(e,t,"")),c=(0,d.assign)(c,m(e,t,o))}),c=(0,d.assign)((0,d.assign)(w,c),u),i.forEach(t=>{j(t,`[${g(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=g(e,p.Const.Commands.Link,!1);if(t.matches(`[${n}]`)){const[e,r]=S((0,f.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=`[${g(n,p.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,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 j(e,t,n){e.querySelectorAll(t).forEach(n);e instanceof(e.ownerDocument||e).defaultView.Element&&e.shadowRoot&&j(e.shadowRoot,t,n),e.querySelectorAll("*").forEach(e=>{e.shadowRoot&&j(e.shadowRoot,t,n)})}function O(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"),D=require("@walkeros/web-core"),$=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,D.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=$.get(o);if(!a||r-a.lastChecked>1e3){const e=o.ownerDocument.defaultView;a={isLarge:o.offsetHeight>e.innerHeight,lastChecked:r},$.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 se(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)),$.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 R(e){if(!e)return;const t=q.get(e);t&&(t.observer&&t.observer.disconnect(),q.delete(e))}var N=require("@walkeros/core"),I=require("@walkeros/collector");function M(e,t,n,r,o,i,s){const{elb:a,settings:c}=e;if((0,N.isString)(t)&&t.startsWith("walker ")){if("walker init"===t&&e.initScope){const t=function(e,t){if(z(e))return[e];if(Array.isArray(e)){const t=[];for(const n of e)z(n)&&t.push(n);return t}if(void 0===e){const e=t.scope;if(z(e))return[e];if(void 0!==globalThis.document)return[globalThis.document]}return[]}(n,c);for(const n of t)e.initScope(e,{...c,scope:n});return Promise.resolve((0,I.createPushResult)({ok:!0}))}return a(t,n)}if((0,N.isObject)(t)){const e=t;if(!e.source&&c.scope){const t=c.scope.ownerDocument||c.scope,n=t.defaultView;e.source=U(n,t)}return!e.globals&&c.scope&&(e.globals=w(c.prefix,c.scope)),a(e)}const[l]=String((0,N.isObject)(t)?t.name:t).split(" ");let u,d=(0,N.isObject)(n)?n:{},p={},f=!1;if((0,N.isElementOrDocument)(n)&&(u=n,f=!0),(0,N.isElementOrDocument)(o)?u=o:(0,N.isObject)(o)&&Object.keys(o).length&&(p=o),u){const e=y(c.prefix||"data-elb",u).find(e=>e.entity===l);e&&(f&&(d=e.data),e.context&&(p=e.context))}const g=c.scope?c.scope.ownerDocument||c.scope:void 0,m=null==g?void 0:g.defaultView;"page"===l&&m&&(d.id=d.id||m.location.pathname);const b=w(c.prefix,c.scope);return a({name:String(t||""),data:d,context:p,globals:b,nested:i,custom:s,trigger:(0,N.isString)(r)?r:"",source:m&&g?U(m,g):void 0})}function U(e,t){return{type:"browser",platform:"web",url:e.location.href,referrer:t.referrer}}function z(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof Element&&e instanceof Element)return!0;if("undefined"!=typeof Document&&e instanceof Document)return!0;if("nodeType"in e){const t=e.nodeType;return 1===t||9===t}return!1}var H,_,B=[],G=[],Y=[];function F(){return _||(_=new AbortController),_}var K="click",X="hover",J="load",Q="pulse",Z="scroll",ee="submit",te="impression",ne="visible",re="wait";function oe(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;if(!n)return;_&&_.abort();_=new AbortController;const{signal:r}=_;n.addEventListener("click",(0,c.tryCatch)(function(t){le.call(this,e,t)}),{signal:r}),n.addEventListener("submit",(0,c.tryCatch)(function(t){ue.call(this,e,t)}),{signal:r})}(e,t)}function ie(e,t){const n=t.scope;B=[];const r=n;if(!r)return;R(r),function(e,t=1e3){q.has(e)||q.set(e,{observer:V(e),timers:new WeakMap,duration:t})}(r,1e3);const o=g(t.prefix,l.Const.Commands.Action,!1);r!==(r.ownerDocument||r)&&ae(e,r,o,t),j(r,`[${o}]`,n=>{ae(e,n,o,t)}),B.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)||(se(t,e,Z),!1)});H||(H=(0,c.throttle)(function(){B=o.call(t,B,e)}),t.addEventListener("scroll",H,{signal:F().signal}))}(e,r)}async function se(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 ae(e,t,n,r){const o=(0,u.getAttribute)(t,n);o&&Object.values(v(o)).forEach(n=>n.forEach(n=>{switch(n.trigger){case X:!function(e,t){t.addEventListener("mouseenter",(0,c.tryCatch)(function(t){const n=ce(t);n&&se(e,n,X)}),{signal:F().signal})}(e,t);break;case J:!function(e,t){se(e,t,J)}(e,t);break;case Q:!function(e,t,n=""){const r=t.ownerDocument,o=setInterval(()=>{r.hidden||se(e,t,Q)},parseInt(n||"")||15e3);G.push(o)}(e,t,n.triggerParams);break;case Z:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;B.push([e,n])}(t,n.triggerParams);break;case te:W(e,t);break;case ne:W(e,t,{multiple:!0});break;case re:!function(e,t,n=""){const r=setTimeout(()=>se(e,t,re),parseInt(n||"")||15e3);Y.push(r)}(e,t,n.triggerParams)}}))}function ce(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 le(e,t){const n=ce(t);n&&se(e,n,K)}function ue(e,t){const n=ce(t);n&&se(e,n,ee)}var de=require("@walkeros/core");function pe(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(me(n[0])){const r=[...Array.from(n[0])],o=Array.prototype.push.apply(this,[r]);return ge(e,t.prefix,r,c,i),o}const r=Array.prototype.push.apply(this,n);return n.forEach(n=>{ge(e,t.prefix,n,c,i)}),r},Array.isArray(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=fe(n);if(!c)return;const l=c[0];!(0,de.isObject)(l)&&(0,de.isString)(l)&&l.startsWith(i)&&(a.add(s),ge(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 fe(e){const t=me(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,de.isObject)(r)&&0===Object.keys(r).length||!(0,de.isObject)(r)&&(0,de.isString)(r)&&""===r.trim()?null:t}function ge(e,t="data-elb",n,r,o){(0,de.tryCatch)(()=>{if(Array.isArray(n)){const[i,...s]=n;if(!i||(0,de.isString)(i)&&""===i.trim())return void(null==o||o.debug("pushCommand skipped (empty/invalid action)",{item:n}));if((0,de.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 me(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var be={},he={};i(he,{createTrigger:()=>Te,env:()=>we,step:()=>Ee,trigger:()=>qe});var we={};i(we,{push:()=>xe});var ve=()=>{},ye=()=>()=>Promise.resolve({ok:!0}),ke={error:ve,warn:ve,info:ve,debug:ve,throw:e=>{throw"string"==typeof e?new Error(e):e},json:ve,scope:()=>ke},xe={get push(){return ye()},get command(){return ye()},get elb(){return ye()},get window(){return{addEventListener:ve,removeEventListener:ve,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:ve,removeEventListener:ve,querySelector:ve,querySelectorAll:()=>[],getElementById:ve,getElementsByClassName:()=>[],getElementsByTagName:()=>[],createElement:()=>({setAttribute:ve,getAttribute:ve,addEventListener:ve,removeEventListener:ve}),body:{appendChild:ve,removeChild:ve},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:ke},Ee={};i(Ee,{clickEvent:()=>je,contextAndGlobals:()=>De,dataAttributeTypes:()=>Le,impressionEvent:()=>Se,nestedEntities:()=>Ae,pageView:()=>Ce,submitEvent:()=>Oe});var Ce={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/"}}]]},je={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"}]]},Oe={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"}]]},Se={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"}]]},Ae={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"}]]},Le={title:"Data attribute types",description:"Walker data attributes parse scalar, boolean, and array values into typed fields on the emitted event.",trigger:{type:"click",options:"div"},in:'<div data-elb="product" data-elb-product="price:99.99;available:true;colors[]:red;colors[]:blue" data-elbaction="click:select"></div>',out:[["elb",{name:"product select",entity:"product",action:"select",data:{price:99.99,available:!0,colors:["red","blue"]},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},De={title:"Context and globals",description:"Walker context and globals attributes attach ambient metadata to events emitted by the browser source.",trigger:{type:"click",options:'[data-elb="cta"]'},in:'<div data-elbcontext="test:engagement_flow" data-elbglobals="language:en;plan:premium"><div data-elb="cta" data-elb-cta="label:Try Now" data-elbaction="click:signup">Try Now</div></div>',out:[["elb",{name:"cta signup",entity:"cta",action:"signup",data:{label:"Try Now"},context:{test:["engagement_flow",0]},globals:{language:"en",plan:"premium"},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},$e=require("@walkeros/collector"),Te=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,$e.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 se(p,u,t)}}},qe=(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"))}}},Pe=require("@walkeros/core");function Ve(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,Pe.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,Pe.isString)(e)?o[n][e]=t:Object.assign(o[n],e),d},action(e,t){if((0,Pe.isString)(e))if((0,Pe.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,Pe.isString)(e))if((0,Pe.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,Pe.isString)(e)?a[e]=t:Object.assign(a,e),d),globals:(e,t)=>((0,Pe.isString)(e)?c[e]=t:Object.assign(c,e),d),link:(e,t)=>((0,Pe.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 We=0;function Re(){We=0}var Ne=async e=>{if(We>0&&void 0!==globalThis.window)throw new Error("walker.js browser source is single-instance per window. See packages/web/sources/browser/src/trigger.ts for the invariant note.");We+=1;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),f={elb:o,settings:p,initScope:ie},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,`[${g(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(f,"page view",t,"load",n)};return{type:"browser",config:{settings:p},push:(...e)=>{const[t,n,r,o,i,s]=e;return M(f,t,n,r,o,i,s)},on:async e=>{if("run"===e)d&&u&&(!function(e,t){if(!t.scope)return;ie(e,t)}(f,p),function(e,t,n,r){const o=(0,de.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=fe(e);n&&(0,de.isString)(n[0])&&"walker run"===n[0]&&(c=t)});const l=[];for(let e=c+1;e<s.length;e++){const t=fe(s[e]);t&&l.push(t)}s.length=c+1,null==r||r.debug("drainNonWalkerEvents",{anchor:c,drained:l.length}),l.forEach(t=>ge(e,i,t,a,r))}(o,p,u,r),m(p))},init:async()=>{u&&d&&(!1!==p.elbLayer&&o&&pe(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)}(oe,f,p),(0,a.isString)(p.elb)&&p.elb&&(u[p.elb]=(...e)=>{const[t,n,r,o,i,s]=e;return M(f,t,n,r,o,i,s)}))},destroy:async()=>{_&&(_.abort(),_=void 0),H=void 0,B=[],G.forEach(e=>clearInterval(e)),G=[],Y.forEach(e=>clearTimeout(e)),Y=[],d&&R(p.scope||d)}}},Ie=Ne;//# sourceMappingURL=index.js.map
|