{"version":3,"file":"listener-utils.cjs","sources":["../../../../node_modules/.pnpm/@analytics+type-utils@0.6.2/node_modules/@analytics/type-utils/dist/analytics-util-types.module.js","../../src/index.js"],"sourcesContent":["var n=\"function\",t=\"string\",e=\"undefined\",r=\"boolean\",o=\"object\",u=\"array\",i=\"number\",c=\"symbol\",a=\"null\",f=\"error\",s=\"typeError\",l=\"syntaxError\",d=\"asyncFunction\",p=\"generatorFunction\",y=\"asyncGeneratorFunction\",g=function(){},b=\"any\",m=\"*\",v=\"none\",h=\"hidden\",j=\"__\",O=\"form\",S=\"input\",A=\"button\",E=\"select\",N=\"change\",w=\"submit\",D=/^\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)$/,z=/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,Z=/^\\{[\\s\\S]*\\}$|^\\[[\\s\\S]*\\]$/,F=\"undefined\"!=typeof process?process:{},P=F.env&&F.env.NODE_ENV||\"\",x=\"production\"===P,C=\"staging\"===P,L=\"development\"===P,$=\"undefined\"!=typeof document,T=$&&\"localhost\"===window.location.hostname,_=null!=F.versions&&null!=F.versions.node,k=\"undefined\"!=typeof Deno&&void 0!==Deno.core,B=\"object\"==typeof self&&self.constructor&&\"DedicatedWorkerGlobalScope\"===self.constructor.name,G=$&&\"nodejs\"===window.name||\"undefined\"!=typeof navigator&&void 0!==navigator.userAgent&&(navigator.userAgent.includes(\"Node.js\")||navigator.userAgent.includes(\"jsdom\"));function M(n,t){return t.charAt(0)[n]()+t.slice(1)}var U=M.bind(null,\"toUpperCase\"),H=M.bind(null,\"toLowerCase\");function J(n){return Y(n)?U(\"null\"):\"object\"==typeof n?yn(n):Object.prototype.toString.call(n).slice(8,-1)}function R(n,t){void 0===t&&(t=!0);var e=J(n);return t?H(e):e}function V(n,t){return typeof t===n}var W=V.bind(null,\"function\"),q=V.bind(null,\"string\"),I=V.bind(null,\"undefined\");function K(n){return!I(n)}var Q=V.bind(null,\"boolean\"),X=V.bind(null,\"symbol\");function Y(n){return null===n}function nn(n){return\"number\"===R(n)&&!isNaN(n)}function tn(n){return!isNaN(parseFloat(n))}function en(n){return!!W(n)&&/^class /.test(Function.prototype.toString.call(n))}function rn(n){return\"array\"===R(n)}function on(n){if(!un(n))return!1;for(var t=n;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(n)===t}function un(n){return n&&(\"object\"==typeof n||null!==n)}function cn(n){if(!q(n)||!Z.test(n))return!1;try{JSON.parse(n)}catch(n){return!1}return!0}function an(n){if(Y(n))return!0;switch(typeof n){case\"string\":case\"number\":case\"symbol\":case\"undefined\":case\"boolean\":return!0;default:return!1}}function fn(n,t){return on(n)&&W(n[t])}function sn(n){return!!n&&!!(!I(Promise)&&n instanceof Promise||n.then&&W(n.then))}function ln(n){return un(n)&&W(n.throw)&&W(n.return)&&W(n.next)}function dn(n){return\"generatorFunction\"===R(n)}function pn(n){return\"asyncFunction\"===R(n)}function yn(n){return W(n.constructor)?n.constructor.name:null}function gn(n){return n instanceof Set}function bn(n){return n instanceof Map}function mn(n){return n instanceof RegExp}function vn(n){return!(!n.constructor||!W(n.constructor.isBuffer))&&n.constructor.isBuffer(n)}function hn(n){return n instanceof Error||q(n.message)&&n.constructor&&nn(n.constructor.stackTraceLimit)}function jn(n){return un(n)&&q(n.message)&&q(n.name)}function On(n,t){if(\"object\"!=typeof t||Y(t))return!1;if(t instanceof n)return!0;var e=R(new n(\"\"));if(hn(t))for(;t;){if(R(t)===e)return!0;t=Object.getPrototypeOf(t)}return!1}var Sn=On.bind(null,TypeError),An=On.bind(null,SyntaxError);function En(n){if(!W(n))return!1;var t=/{(\\r|\\n|\\s)*}/gm,e=g+\"\";return e===(n.toString().match(t)||[\"\"])[0].replace(t,e)}function Nn(n){try{if(nn(n.length)&&W(n.callee))return!0}catch(n){if(-1!==n.message.indexOf(\"callee\"))return!0}return!1}function wn(n){return!(q(n)&&\"false\"===n.toLowerCase()||!n)}function Dn(n){return!n}function zn(n){return!0===n}function Zn(n){return!1===n}function Fn(n){return!(n.length>320)&&z.test(n)}function Pn(n){return n instanceof Date||W(n.toDateString)&&W(n.getDate)&&W(n.setDate)}function xn(n){return D.test(n)}function Cn(n){return!(!Y(n)&&(rn(n)?n.length:gn(n)||bn(n)?n.size:on(n)&&Object.keys(n).length))}function Ln(n){return NodeList.prototype.isPrototypeOf(n)}function $n(n,t){var e=n instanceof Element||n instanceof HTMLDocument;return e&&t?Tn(n,t):e}function Tn(n,t){return void 0===t&&(t=\"\"),n&&n.nodeName===t.toUpperCase()}function _n(n){var t=[].slice.call(arguments,1);return function(){return n.apply(void 0,[].slice.call(arguments).concat(t))}}var kn=_n($n,\"form\"),Bn=_n($n,\"button\"),Gn=_n($n,\"input\"),Mn=_n($n,\"select\");function Un(n,t){if(!n||\"hidden\"===getComputedStyle(n).visibility)return!0;for(;n;){if(null!=t&&n===t)return!1;if(\"none\"===getComputedStyle(n).display)return!0;n=n.parentElement}return!1}function Hn(n){return n?rn(n)?n:[n]:[]}export{m as ALL,b as ANY,u as ARRAY,d as ASYNC_FUNCTION,y as ASYNC_GENERATOR_FUNCTION,r as BOOLEAN,A as BUTTON,N as CHANGE,P as ENV,f as ERROR,O as FORM,n as FUNCTION,p as GENERATOR_FUNCTION,h as HIDDEN,S as INPUT,v as NONE,a as NULL,i as NUMBER,o as OBJECT,j as PREFIX,z as REGEX_EMAIL,D as REGEX_ISO,Z as REGEX_JSON,E as SELECT,t as STRING,w as SUBMIT,c as SYMBOL,l as SYNTAX_ERROR,s as TYPE_ERROR,e as UNDEFINED,yn as ctorName,Hn as ensureArray,R as getType,J as getTypeName,Nn as isArguments,rn as isArray,pn as isAsyncFunction,Q as isBoolean,$ as isBrowser,vn as isBuffer,Bn as isButton,en as isClass,Pn as isDate,K as isDefined,k as isDeno,L as isDev,$n as isElement,Fn as isEmail,Cn as isEmpty,hn as isError,jn as isErrorLike,Zn as isFalse,Dn as isFalsy,kn as isForm,W as isFunction,ln as isGenerator,dn as isGeneratorFunction,Un as isHidden,Gn as isInput,xn as isIsoDate,G as isJsDom,cn as isJson,T as isLocalHost,bn as isMap,fn as isMethod,En as isNoOp,_ as isNode,Ln as isNodeList,Tn as isNodeType,Y as isNull,nn as isNumber,tn as isNumberLike,on as isObject,un as isObjectLike,an as isPrimitive,x as isProd,sn as isPromise,mn as isRegex,Mn as isSelect,gn as isSet,C as isStaging,q as isString,X as isSymbol,An as isSyntaxError,zn as isTrue,wn as isTruthy,Sn as isTypeError,I as isUndefined,B as isWebWorker,g as noOp};\n//# sourceMappingURL=analytics-util-types.module.js.map\n","import { isBrowser, isString, isFunction, ensureArray, noOp } from '@analytics/type-utils'\n\nconst EVENT = 'Event'\nconst EL = EVENT + 'Listener'\n\nfunction createListener(add) {\n  return (els, evts, callback, options) => {\n    const handler = callback || noOp\n    const opts = options || false\n    /* SSR support */\n    if (!isBrowser) return handler\n    const events = toArray(evts)\n    const elements = toArray(els, true)\n    /* Throw if no element found */\n    if (!elements.length) throw new Error('noElements')\n    /* Throw if no events found */\n    if (!events.length) throw new Error('no' + EVENT)\n    let fns = []\n    function smartAttach(isAdd) {\n      if (isAdd) fns = []\n      const method = (isAdd) ? 'add' + EL : 'remove' + EL\n      // Apply to all elements\n      for (let i = 0; i < elements.length; i++) {\n        const el = elements[i]\n        fns[i] = (isAdd ? ((opts && opts.once) ? once(handler) : handler) : fns[i] || handler)\n        // Apply to all events\n        for (let n = 0; n < events.length; n++) {\n          if (!el[method]) {\n            el[method](events[n], fns[i], opts)\n            continue;\n          }\n          el['on' + events[n]] = (isAdd) ? fns[i] : null /* Fallback for older browsers IE <=8 */\n        }\n      }\n      // return opposite function with inverse event handler\n      return smartAttach.bind(null, !isAdd)\n    }\n    /* // debug\n    console.log('events', events)\n    console.log('elements', elements)\n    /** */\n    return smartAttach(add)\n  }\n}\n\nfunction strToArray(str) {\n  return str.split(str.indexOf(',') > -1 ? ',' : ' ').map(e => e.trim())\n}\n\nfunction toArray(val, isSelector) {\n  if (isString(val)) {\n    return isSelector ? toArray(document.querySelectorAll(val)) : strToArray(val)\n  }\n  // Convert NodeList to Array\n  if (NodeList.prototype.isPrototypeOf(val)) {\n    const nodes = []\n    for (var i = val.length >>> 0; i--;) {\n      nodes[i] = val[i] // iterate backwards ensuring that length is an UInt32\n    }\n    return nodes\n  }\n  // Arrayify\n  const array = ensureArray(val)\n  return (!isSelector) ? array : array.map((v) => isString(v) ? toArray(v, true) : v).flat()\n}\n\n/**\n * Run function once\n * @param {Function} fn - Function to run just once\n * @param {*} [context] - Extend function context\n * @returns {Function} Function that only runs 1 time\n */\nexport function once(fn, context) {\n  var result\n  return function() {\n    if (fn) {\n      result = fn.apply(context || this, arguments)\n      fn = null\n    }\n    return result\n  }\n}\n\n/**\n * Element selector or valid DOM node\n * @typedef {(string|Node|NodeList|EventTarget|null)} Selector\n */\n\n/**\n * Event or events to addEventListener to \n * @typedef {(string|string[])} EventType\n */\n\n/**\n * Cleanup event listener\n * @callback RemoveListener\n * @returns {AttachListener}\n */\n\n/**\n * Reattach event listener\n * @callback AttachListener\n * @returns {RemoveListener}\n */\n\n/**\n * Add an event listener\n * @callback AddListener\n * @param {Selector}  elements  - Element(s) to attach event(s) to.\n * @param {EventType} eventType - Event(s) to listen to \n * @param {Function}  [handler] - Function to fire\n * @param {Object}    [options] - Event listener options\n * @param {Boolean}   [options.once] - Trigger handler just once\n * @returns {RemoveListener}\n */\n\n/** @type {AddListener} */\nexport const addListener = createListener(EVENT)\n\n/**\n * Remove an event listener\n * @callback RemoveListener\n * @param {Selector}  elements  - Element(s) to remove event(s) from.\n * @param {EventType} eventType - Event(s) to remove\n * @param {Function}  [handler] - Function to remove\n * @param {Object}    [options] - Event listener options\n * @param {Boolean}   [options.once] - Trigger handler just once\n * @returns {AttachListener}\n */\n\n/** @type {RemoveListener} */\nexport const removeListener = createListener()\n\n\nfunction wrap(existing, newFunction, context = null) {\n  if (!isFunction(existing)) return newFunction\n  return function () {\n    existing.apply(context, arguments)\n    newFunction.apply(context, arguments)\n  }\n}\n\n// https://gist.github.com/DavidWells/18ff6633ce356237ef91c764812ee08a\nexport function addWindowEvent(event, fn) {\n  if (!isBrowser || !isFunction(window[event])) {\n    return window[event] = fn\n  }\n  return wrap(window[event], fn, window)\n}\n\nexport const onError = addWindowEvent.bind(null, 'onerror')\nexport const onLoad = addWindowEvent.bind(null, 'onload')"],"names":["FUNCTION","noOp","process","isBrowser","isLocalHost","text","method","s","charAt","slice","Deno","window","name","navigator","userAgent","includes","upper","bind","lower","getType","val","toLowerCase","getTypeName","ctorName","x","constructor","isSet","Object","prototype","toString","call","type","typeOf","kind","isString","errorType","ErrKind","value","isNull","n","typeName","message","isNaN","isNumber","stackTraceLimit","isErrorLike","isError","getPrototypeOf","isTypeError","isElement","element","isEl","Element","HTMLDocument","t","nodeName","toUpperCase","isNodeType","fn","arguments","boundArgs","isForm","TypeError","SyntaxError","bindArgs","EVENT","EL","createListener","add","els","evts","callback","options","handler","opts","events","toArray","elements","length","Error","fns","smartAttach","isAdd","i","el","once","isSelector","document","querySelectorAll","str","split","indexOf","map","e","trim","NodeList","isPrototypeOf","nodes","singleOrArray","array","isArray","v","flat","context","result","apply","this","addListener","removeListener","addWindowEvent","event","isFunction","existing","newFunction","onError","onLoad"],"mappings":"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"}