{"version":3,"sources":["discourse/initializers/theme-field-481-common-html-script-1.js"],"names":["window","define","_exports","_pluginApi","Object","defineProperty","value","default","require","getObjectForTheme","_default","name","after","initialize","withPluginApi","api","hasAnalyticsConsent","ot","m","document","cookie","match","decodeURIComponent","e","getOtConsent","indexOf","pushEvent","eventName","info","adobeDataLayer","push","event","eventInfo","shouldIgnoreClick","el","thresholdMs","last","dataset","_lastTracked","parseInt","now","Date","init","body","setTimeout","addEventListener","logo","target","closest","action","detail","label","location","href","origin","loginBtn","_loginBtn$textContent","textContent","trim","toLowerCase","searchIcon","accountIcon","cu","Discourse","User","current","safeCurrentUser","username","footerLink","_footerLink$textConte","cookieBtn","createTopicBtn","_createTopicBtn$textC","pathname","categoryTile","_categoryTile$querySe","_categoryTile$querySe2","_categoryTile$querySe3","querySelector","filterLink","_filterLink$textConte","search_term","search_filter","search_origination","search_results","navItem","_navItem$textContent","includes","getAttribute","genericCTA","_genericCTA$textConte","tabLink","_tabLink$textContent","tabText","tabContainer","searchResult","_searchResult$querySe","_searchResult$querySe2","container","all","Array","from","querySelectorAll","pos","link","clickText","si","term","length","toString","search_position","shareBtn","platform","classList","contains","downloadLink","_fileName$split$pop","_downloadLink$textCon","fileName","split","pop","ext","form","input","resultsContainer","count","_filter$textContent","filter","val","results","onAppEvent","post","likeAction","acted","composerModel","cat","get","category","thresholds","tracked","onScroll","wh","innerHeight","dh","documentElement","scrollHeight","st","pageYOffset","scrollTop","percent","Math","round","forEach","t","to","clearTimeout","onPageChange","keys","k","readyState"],"mappings":"AAAI,WAAYA,QAChBC,OAAO,uEAAwE,CAAC,UAAW,6BAA6B,SAAUC,EAAUC,GAC1I;AAEAC,OAAOC,eAAeH,EAAU,aAAc,CAC5CI,OAAO,IAETJ,EAASK,aAAU;AACFC,QAAQ,sCAAsCC,kBAAkB;AAEjF,IAAIC,EAAW,CACbC,KAAM,uCACNC,MAAO,iBACPC,cACE,EAAIV,EAAWW,eAAe,UAAUC,KACtC,WASE,SAASC,IACP,MAAMC,EATR,WACE,IACE,MAAMC,EAAIC,SAASC,OAAOC,MAAM;AAChC,OAAOH,EAAII,mBAAmBJ,EAAE,IAAM,IAGxC,CAFE,MAAOK,GACP,OAAO,IACT,CACF,CAEaC;AACX,OAAOP,GAAMA,EAAGQ,QAAQ,YAAc,GAAKR,EAAGQ,QAAQ,aAAe,CACvE,CACA,SAASC,EAAUC,EAAWC,GAC5B,GAAKZ,IACL,IACEhB,OAAO6B,eAAiB7B,OAAO6B,gBAAkB,GACjD7B,OAAO6B,eAAeC,KAAK,CACzBC,MAAOJ,EACPK,UAAWJ,GAAQ,CAAC,GAEX,CAAX,MAAOL,GAAI,CACf,CAQA,SAASU,EAAkBC,EAAIC,GAC7B,IAEE,GADAA,EAAcA,GAAe,KACxBD,EAAI,OAAO;AAChB,MAAME,EAAOF,EAAGG,QAAQC,aAAeC,SAASL,EAAGG,QAAQC,aAAc,IAAM,EACzEE,EAAMC,KAAKD;AACjB,OAAIA,EAAMJ,EAAOD,IACjBD,EAAGG,QAAQC,aAAeE,GACnB,EAGT,CAFE,MAAOjB,GACP,OAAO,CACT,CACF,CACA,SAASmB,IACP,IAAKvB,SAASwB,KAAM,OAAOC,WAAWF,EAAM;AAC5CvB,SAAS0B,iBAAiB,SAAS,SAAUtB,GAC3C,IAAKP,IAAuB;AAC5B,MAAM8B,EAAOvB,EAAEwB,OAAOC,QAAQ;AAC9B,GAAIF,IAASb,EAAkBa,GAO7B,YANApB,EAAU,WAAY,CACpBuB,OAAQ,QACRC,OAAQ,gBACRC,MAAO,WACPC,SAAUN,EAAKO,MAAQD,SAASE;AAIpC,MAAMC,EAAWhC,EAAEwB,OAAOC,QAAQ;AAClC,GAAIO,IAAatB,EAAkBsB,GAAW,CAC5C,IAAIC;AAQJ,YANA9B,EAAU,UAAW,CACnBuB,OAAQ,QACRC,OAAQ,WACRC,QAJkE,QAAlDK,EAAwBD,EAASE,mBAAmD,IAA1BD,OAAmC,EAASA,EAAsBE,SAAW,UAIxIC,cACfP,SAAU,gCAGd,CACA,MAAMQ,EAAarC,EAAEwB,OAAOC,QAAQ;AACpC,GAAIY,IAAe3B,EAAkB2B,GAKnC,YAJAlC,EAAU,WAAY,CACpBuB,OAAQ,QACRE,MAAO;AAIX,MAAMU,EAActC,EAAEwB,OAAOC,QAAQ;AACrC,GAAIa,IAAgB5B,EAAkB4B,GAAc,CAClD,MAAMC,EAxDZ,WACE,IACE,MAA4B,oBAAdC,WAA6BA,UAAUC,KAAOD,UAAUC,KAAKC,UAAY,IAGzF,CAFE,MAAO1C,GACP,OAAO,IACT,CACF,CAkDiB2C;AAOX,YANAxC,EAAU,WAAY,CACpBuB,OAAQ,QACRC,OAAQ,UACRC,MAAOW,GAAKA,EAAGK,UAAqB,OACpCf,SAAU,IAGd,CAGA,MAAMgB,EAAa7C,EAAEwB,OAAOC,QAAQ;AACpC,GAAIoB,IAAenC,EAAkBmC,GAAa,CAChD,IAAIC;AAQJ,YANA3C,EAAU,SAAU,CAClBuB,OAAQ,QACRE,MAAO,SACPD,QAJoE,QAApDmB,EAAwBD,EAAWX,mBAAmD,IAA1BY,OAAmC,EAASA,EAAsBX,SAAW,cAKzJN,SAAUgB,EAAWf,MAAQ,IAGjC,CACA,MAAMiB,EAAY/C,EAAEwB,OAAOC,QAAQ;AACnC,GAAIsB,IAAcrC,EAAkBqC,GAOlC,YANA5C,EAAU,SAAU,CAClBuB,OAAQ,QACRE,MAAO,SACPD,OAAQ,kBACRE,SAAU;AAId,MAAMmB,EAAiBhD,EAAEwB,OAAOC,QAAQ;AAEtC,IAAIwB;AADN,GAAID,IAAmBtC,EAAkBsC,GAOvC,YALA7C,EAAU,MAAO,CACfuB,OAAQ,QACRE,OAAiE,QAAxDqB,EAAwBD,EAAed,mBAAmD,IAA1Be,OAAmC,EAASA,EAAsBd,SAAW,iBACtJN,SAAUA,SAASqB;AAIvB,MAAMC,EAAenD,EAAEwB,OAAOC,QAAQ;AACtC,GAAI0B,IAAiBzC,EAAkByC,GAAe,CACpD,IAAIC,EAAuBC,EAAwBC;AAOnD,YALAnD,EAAU,MAAO,CACfuB,OAAQ,gBACRE,OAHuG,QAAlFwB,EAAwBD,EAAaI,cAAc,iCAAiE,IAA1BH,GAA6G,QAAhEC,EAAyBD,EAAsBlB,mBAAoD,IAA3BmB,OAAlF,EAA+HA,EAAuBlB,SAAW,WAInTN,UAA0E,QAA9DyB,EAAyBH,EAAaI,cAAc,YAA6C,IAA3BD,OAAoC,EAASA,EAAuBxB,OAAS,IAGnK,CAGA,MAAM0B,EAAaxD,EAAEwB,OAAOC,QAAQ;AACpC,GAAI+B,IAAe9C,EAAkB8C,GAAa,CAChD,IAAIC;AAWJ,YATAtD,EAAU,SAAU,CAClBuB,OAAQ,SACRC,OAAQ,cACRC,MAAO,iBACP8B,YAAa,GACbC,eANgE,QAApDF,EAAwBD,EAAWtB,mBAAmD,IAA1BuB,OAAmC,EAASA,EAAsBtB,SAAW,GAOrJyB,mBAAoB/B,SAASqB,SAC7BW,eAAgB,IAGpB,CAGA,MAAMC,EAAU9D,EAAEwB,OAAOC,QAAQ;AACjC,GAAIqC,IAAYA,EAAQrC,QAAQ,mEAAoE,CAClG,IAAIsC;AAEJ,GAAyB,gBAArBD,EAAQZ,SAMV,YALA/C,EAAU,MAAO,CACfuB,OAAQ,QACRE,MAAO,aACPC,SAAUiC,EAAQhC,MAAQ;AAK9B,GAAIgC,EAAQhC,OAASgC,EAAQhC,KAAKkC,SAAS,YAAcF,EAAQhC,KAAKkC,SAAS,aAC7E;AAEF,MAAMpC,GAA0D,QAAhDmC,EAAuBD,EAAQ5B,mBAAkD,IAAzB6B,OAAkC,EAASA,EAAqB5B,SAAW2B,EAAQG,aAAa,UAAY;AASpL,YANA9D,EAAU,WAAY,CACpBuB,OAAQ,QACRC,OAJgBmC,EAAQrC,QAAQ,gCACP,YAAc,GAIvCG,MAAOA,EACPC,SAAUiC,EAAQhC,MAAQ,IAG9B,CACA,MAAMoC,EAAalE,EAAEwB,OAAOC,QAAQ;AAElC,IAAI0C;AADN,GAAID,IAAeA,EAAWzC,QAAQ,sCAAwCf,EAAkBwD,GAO9F,YALA/D,EAAU,MAAO,CACfuB,OAAQ,QACRE,OAA6D,QAApDuC,EAAwBD,EAAWhC,mBAAmD,IAA1BiC,OAAmC,EAASA,EAAsBhC,SAAW+B,EAAWD,aAAa,eAAiB,SAC3LpC,SAAUqC,EAAWpC,MAAQD,SAASqB;AAI1C,MAAMkB,EAAUpE,EAAEwB,OAAOC,QAAQ;AACjC,GAAI2C,IAAY1D,EAAkB0D,GAAU,CAC1C,IAAIC;AACJ,MAAMC,GAA4D,QAAhDD,EAAuBD,EAAQlC,mBAAkD,IAAzBmC,OAAkC,EAASA,EAAqBlC,SAAW,MAC/IoC,EAAeH,EAAQ3C,QAAQ;AAQrC,YANAtB,EAAU,MAAO,CACfuB,OAAQ,YACRC,QAHgB4C,MAAAA,OAAmD,EAASA,EAAaN,aAAa,mBAAqB,GAI3HrC,MAAO0C,EACPzC,SAAUuC,EAAQtC,MAAQD,SAASqB,UAGvC,CACA,MAAMsB,EAAexE,EAAEwB,OAAOC,QAAQ;AACtC,GAAI+C,IAAiB9D,EAAkB8D,GAAe,CACpD,IAAIC,EAAuBC;AAC3B,MAAMC,EAAYH,EAAa/C,QAAQ,gCACjCmD,EAAMD,EAAYE,MAAMC,KAAKH,EAAUI,iBAAiB,+BAAiC,GACzFC,EAAMJ,EAAI1E,QAAQsE,GAClBS,EAAOT,EAAajB,cAAc,MAAQiB,EAC1CU,GAA4G,QAA9FT,EAAwBD,EAAajB,cAAc,6CAA6E,IAA1BkB,GAA6G,QAAhEC,EAAyBD,EAAsBvC,mBAAoD,IAA3BwC,OAAlF,EAA+HA,EAAuBvC,SAAW,SACxTgD,EAAKvF,SAAS2D,cAAc,sCAC5B6B,EAAOD,EAAKA,EAAGpG,MAAMoD,OAAS;AAWpC,YAVAhC,EAAU,SAAU,CAClBuB,OAAQ,SACRC,OAAQuD,EACRtD,MAAO,sBACPC,SAAUoD,EAAKnD,MAAQ,GACvB4B,YAAa0B,EACbxB,mBAAoB/B,SAASqB,SAC7BW,eAAgBe,EAAIS,OAAOC,WAC3BC,gBAAiBP,GAAO,EAAIA,EAAIM,WAAa,KAGjD,CACA,MAAME,EAAWxF,EAAEwB,OAAOC,QAAQ;AAClC,GAAI+D,IAAa9E,EAAkB8E,GAAW,CAC5C,IAAIC,EAAW;AAMf,OALID,EAASE,UAAUC,SAAS,kBAAoBH,EAAS1D,MAAQ0D,EAAS1D,KAAKkC,SAAS,eAAgByB,EAAW,UAAmBD,EAASE,UAAUC,SAAS,mBAAqBH,EAAS1D,MAAQ0D,EAAS1D,KAAKkC,SAAS,gBAAiByB,EAAW,YAAoBD,EAASE,UAAUC,SAAS,mBAAqBH,EAAS1D,MAAQ0D,EAAS1D,KAAKkC,SAAS,mBAAiByB,EAAW,iBACxYtF,EAAU,iBAAkB,CAC1BuB,OAAQ,QACRE,MAAO6D,GAGX,CACA,MAAMG,EAAe5F,EAAEwB,OAAOC,QAAQ;AACtC,IAAImE,GAAiBlF,EAAkBkF,QAAvC,CACE,IAAIC,EAAqBC;AACzB,MAAMhE,EAAO8D,EAAa9D,MAAQ,GAC5BiE,EAAWH,EAAa3B,aAAa,aAAenC,EAAKkE,MAAM,KAAKC,OAAS,WAC7EC,GAA6D,QAArDL,EAAsBE,EAASC,MAAM,KAAKC,aAA2C,IAAxBJ,OAAiC,EAASA,EAAoBzD,gBAAkB;AAE3JjC,EAAU,WAAY,CACpBuB,OAFW,CAAC,MAAO,MAAO,KAAM,MAAO,MAAO,OAAOsC,SAASkC,GAAO,WAAa,WAGlFvE,OAAQoE,EACRnE,OAA+D,QAAtDkE,EAAwBF,EAAa1D,mBAAmD,IAA1B4D,OAAmC,EAASA,EAAsB3D,SAAW4D,EACpJlE,SAAUC,GAGd,CACF,IAAG,GACHlC,SAAS0B,iBAAiB,UAAU,SAAUtB,GAC5C,GAAKP,IACL,IACE,MAAM0G,EAAOnG,EAAEwB,OAAOC,QAAQ;AAC9B,IAAK0E,EAAM;AACX,MAAMC,EAAQD,EAAK5C,cAAc,uDAC3B6B,EAAOgB,EAAQA,EAAMrH,MAAMoD,OAAS;AAC1C,IAAKiD,EAAM;AACX/D,YAAW,WACT,MAAMgF,EAAmBzG,SAAS2D,cAAc,gCAC1C+C,EAAQD,EAAmBA,EAAiBtB,iBAAiB,8BAA8BM,OAAS;AAC1GlF,EAAU,SAAU,CAClBuB,OAAQ,SACRC,OAAQ,cACRC,MAAO0E,EAAQ,EAAI,iBAAmB,oBACtC5C,YAAa0B,EACbzB,cAAe,GACfC,mBAAoB/B,SAASqB,SAC7BW,eAAgByC,EAAMhB,YAE1B,GAAG,IACQ,CAAX,MAAOtF,GAAI,CACf,IAAG,GACHJ,SAAS0B,iBAAiB,UAAU,SAAUtB,GAC5C,GAAKP,IACL,IACE,IAAI8G;AACJ,MAAMC,EAASxG,EAAEwB,OAAOC,QAAQ;AAChC,IAAK+E,EAAQ;AACb,MAAMC,EAAMD,EAAOzH,QAAyD,QAA9CwH,EAAsBC,EAAOtE,mBAAiD,IAAxBqE,OAAiC,EAASA,EAAoBpE,SAAW;AAC7Jd,YAAW,WACT,MAAMqF,EAAU9G,SAAS2D,cAAc,+BACjC+C,EAAQI,EAAUA,EAAQ3B,iBAAiB,mCAAmCM,OAAS;AAC7FlF,EAAU,SAAU,CAClBuB,OAAQ,SACRC,OAAQ,cACRC,MAAO,iBACP8B,YAAa,GACbC,cAAe8C,EACf7C,mBAAoB/B,SAASqB,SAC7BW,eAAgByC,EAAMhB,YAE1B,GAAG,IACQ,CAAX,MAAOtF,GAAI,CACf,IAAG,QACgB,IAARR,GAAuBA,EAAImH,YACN,mBAAnBnH,EAAImH,aACbnH,EAAImH,WAAW,qBAAqB,SAAUC,EAAMC,GAC9CD,GAAQC,GAAcA,EAAWC,OAAO3G,EAAU,MAAO,CAC3DuB,OAAQ,YACRE,MAAO,OACPC,SAAUA,SAASqB,UAEvB,IACA1D,EAAImH,WAAW,gBAAgB,SAAUC,GACnCA,GAAMzG,EAAU,MAAO,CACzBuB,OAAQ,eACRE,MAAO,cACPC,SAAUA,SAASqB,UAEvB,IACA1D,EAAImH,WAAW,iBAAiB,SAAUC,EAAMG,GAC9C,IACE,MAAMC,EAAMD,EAAgBA,EAAcE,IAAI,iBAAmB;AACjE9G,EAAU,MAAO,CACfuB,OAAQ,gBACRE,MAAO,eACPC,SAAUA,SAASqB,SACnBgE,SAAUF,GAED,CAAX,MAAOhH,GAAI,CACf,IACAR,EAAImH,WAAW,mBAAmB,SAAUI,GAC1C,IAEE5G,EAAU,MAAO,CACfuB,OAAQ,kBACRE,MAAkB,iBAHLmF,EAAgBA,EAAcE,IAAI,UAAY,IAGzB,iBAAmB,QACrDpF,SAAUA,SAASqB,UAEV,CAAX,MAAOlD,GAAI,CACf,IACAR,EAAImH,WAAW,mBAAmB,WAChCxG,EAAU,MAAO,CACfuB,OAAQ,kBACRE,MAAO,QACPC,SAAUA,SAASqB,UAEvB,IACA1D,EAAImH,WAAW,8BAA8B,SAAUC,GACjDA,GAAMzG,EAAU,MAAO,CACzBuB,OAAQ,WACRE,MAAO,WACPC,SAAUA,SAASqB,UAEvB,KAGJ,WACE,MAAMiE,EAAa,CAAC,GAAI,GAAI,GAAI,KAC9BC,EAAU,CAAC;AACb,SAASC,IACP,IAAK5H,IAAuB;AAC5B,MAAM6H,EAAK7I,OAAO8I,YAChBC,EAAK5H,SAAS6H,gBAAgBC,aAC9BC,EAAKlJ,OAAOmJ,aAAehI,SAAS6H,gBAAgBI,UAChDC,EAAUC,KAAKC,OAAOL,EAAKL,GAAME,EAAK;AAC5CL,EAAWc,SAAQ,SAAUC,GACvBJ,GAAWI,IAAMd,EAAQc,KAC3Bd,EAAQc,IAAK,EACb/H,EAAU,eAAgB,CACxBuB,OAAQwG,EAAE5C,WACV1D,MAAO,SAGb,GACF,CACA,IAAIuG;AACJ1J,OAAO6C,iBAAiB,UAAU,WAChC8G,aAAaD,GACbA,EAAK9G,WAAWgG,EAAU,IAC5B,SACmB,IAAR7H,GAAuBA,EAAI6I,cAAc7I,EAAI6I,cAAa,WACnExJ,OAAOyJ,KAAKlB,GAASa,SAAQM,UAAYnB,EAAQmB,IACnD,GACD,CA3BD,EA4BF,CAC4B,aAAxB3I,SAAS4I,YAAqD,gBAAxB5I,SAAS4I,WAA8BrH,IAAYvB,SAAS0B,iBAAiB,mBAAoBH,EAC5I,EA3XD,EA2XI,GAER;AAEFxC,EAASK,QAAUG,CACrB","sourceRoot":"theme-56/","sourcesContent":["if ('define' in window) {\ndefine(\"discourse/theme-56/initializers/theme-field-481-common-html-script-1\", [\"exports\", \"discourse/lib/plugin-api\"], function (_exports, _pluginApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const settings = require(\"discourse/lib/theme-settings-store\").getObjectForTheme(56);\n  const themePrefix = key => \"theme_translations.56.\".concat(key);\n  var _default = {\n    name: \"theme-field-481-common-html-script-1\",\n    after: \"inject-objects\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(\"0.11.0\", api => {\n        (function () {\n          function getOtConsent() {\n            try {\n              const m = document.cookie.match(/(?:^|;\\s*)OptanonConsent=([^;]+)/);\n              return m ? decodeURIComponent(m[1]) : null;\n            } catch (e) {\n              return null;\n            }\n          }\n          function hasAnalyticsConsent() {\n            const ot = getOtConsent();\n            return ot && ot.indexOf('groups=') > -1 && ot.indexOf(',C0002:1') > -1;\n          }\n          function pushEvent(eventName, info) {\n            if (!hasAnalyticsConsent()) return;\n            try {\n              window.adobeDataLayer = window.adobeDataLayer || [];\n              window.adobeDataLayer.push({\n                event: eventName,\n                eventInfo: info || {}\n              });\n            } catch (e) {}\n          }\n          function safeCurrentUser() {\n            try {\n              return typeof Discourse !== 'undefined' && Discourse.User ? Discourse.User.current() : null;\n            } catch (e) {\n              return null;\n            }\n          }\n          function shouldIgnoreClick(el, thresholdMs) {\n            try {\n              thresholdMs = thresholdMs || 500;\n              if (!el) return true;\n              const last = el.dataset._lastTracked ? parseInt(el.dataset._lastTracked, 10) : 0;\n              const now = Date.now();\n              if (now - last < thresholdMs) return true;\n              el.dataset._lastTracked = now;\n              return false;\n            } catch (e) {\n              return false;\n            }\n          }\n          function init() {\n            if (!document.body) return setTimeout(init, 50);\n            document.addEventListener('click', function (e) {\n              if (!hasAnalyticsConsent()) return;\n              const logo = e.target.closest('.logo-wrapper a, .title a, .d-header .logo');\n              if (logo && !shouldIgnoreClick(logo)) {\n                pushEvent('megamenu', {\n                  action: 'click',\n                  detail: 'megamenu logo',\n                  label: 'megamenu',\n                  location: logo.href || location.origin\n                });\n                return;\n              }\n              const loginBtn = e.target.closest('.login-button, .sign-up-button, [data-nav-item=\"login\"]');\n              if (loginBtn && !shouldIgnoreClick(loginBtn)) {\n                var _loginBtn$textContent;\n                const ctaText = ((_loginBtn$textContent = loginBtn.textContent) === null || _loginBtn$textContent === void 0 ? void 0 : _loginBtn$textContent.trim()) || 'log in';\n                pushEvent('sign in', {\n                  action: 'click',\n                  detail: 'megamenu',\n                  label: ctaText.toLowerCase(),\n                  location: 'studio.edgeimpulse.com/login'\n                });\n                return;\n              }\n              const searchIcon = e.target.closest('.search-dropdown .btn, #search-button, .search-menu');\n              if (searchIcon && !shouldIgnoreClick(searchIcon)) {\n                pushEvent('megamenu', {\n                  action: 'click',\n                  label: 'search'\n                });\n                return;\n              }\n              const accountIcon = e.target.closest('.current-user, .user-menu');\n              if (accountIcon && !shouldIgnoreClick(accountIcon)) {\n                const cu = safeCurrentUser();\n                pushEvent('megamenu', {\n                  action: 'click',\n                  detail: 'account',\n                  label: cu ? cu.username || 'user' : 'user',\n                  location: ''\n                });\n                return;\n              }\n\n              // any link styled as a footer item (privacy policy etc.)\n              const footerLink = e.target.closest('footer a, .footer-links a, #footer a, .footer a, .footer-link');\n              if (footerLink && !shouldIgnoreClick(footerLink)) {\n                var _footerLink$textConte;\n                const ctaText = ((_footerLink$textConte = footerLink.textContent) === null || _footerLink$textConte === void 0 ? void 0 : _footerLink$textConte.trim()) || 'footer link';\n                pushEvent('footer', {\n                  action: 'click',\n                  label: 'footer',\n                  detail: ctaText,\n                  location: footerLink.href || ''\n                });\n                return;\n              }\n              const cookieBtn = e.target.closest('.ot-sdk-show-settings, #ot-sdk-btn');\n              if (cookieBtn && !shouldIgnoreClick(cookieBtn)) {\n                pushEvent('footer', {\n                  action: 'click',\n                  label: 'footer',\n                  detail: 'Cookie Settings',\n                  location: ''\n                });\n                return;\n              }\n              const createTopicBtn = e.target.closest('#create-topic, .btn-primary.new-topic, [data-nav-item=\"new-topic\"]');\n              if (createTopicBtn && !shouldIgnoreClick(createTopicBtn)) {\n                var _createTopicBtn$textC;\n                pushEvent('cta', {\n                  action: 'click',\n                  label: ((_createTopicBtn$textC = createTopicBtn.textContent) === null || _createTopicBtn$textC === void 0 ? void 0 : _createTopicBtn$textC.trim()) || '+ Create Topic',\n                  location: location.pathname\n                });\n                return;\n              }\n              const categoryTile = e.target.closest('.category-box, .category-tile, .subcategory');\n              if (categoryTile && !shouldIgnoreClick(categoryTile)) {\n                var _categoryTile$querySe, _categoryTile$querySe2, _categoryTile$querySe3;\n                const categoryName = ((_categoryTile$querySe = categoryTile.querySelector('.category-name, h3, h4')) === null || _categoryTile$querySe === void 0 ? void 0 : (_categoryTile$querySe2 = _categoryTile$querySe.textContent) === null || _categoryTile$querySe2 === void 0 ? void 0 : _categoryTile$querySe2.trim()) || 'category';\n                pushEvent('cta', {\n                  action: 'category_tile',\n                  label: categoryName,\n                  location: ((_categoryTile$querySe3 = categoryTile.querySelector('a')) === null || _categoryTile$querySe3 === void 0 ? void 0 : _categoryTile$querySe3.href) || ''\n                });\n                return;\n              }\n\n              // special-case content filters (links with order/filter parameters)\n              const filterLink = e.target.closest('a[href*=\"?order=\"], a[href*=\"?filter=\"]');\n              if (filterLink && !shouldIgnoreClick(filterLink)) {\n                var _filterLink$textConte;\n                const val = ((_filterLink$textConte = filterLink.textContent) === null || _filterLink$textConte === void 0 ? void 0 : _filterLink$textConte.trim()) || '';\n                pushEvent('search', {\n                  action: 'search',\n                  detail: 'edgeimpulse',\n                  label: 'search results',\n                  search_term: '',\n                  search_filter: val,\n                  search_origination: location.pathname,\n                  search_results: ''\n                });\n                return;\n              }\n\n              // navigation items (header) – exclude filters and specific CTAs\n              const navItem = e.target.closest('.nav-pills li a, .navigation-item a, .sidebar-section-link');\n              if (navItem && !navItem.closest('.login-button, .sign-up-button, .logo-wrapper, .search-dropdown')) {\n                var _navItem$textContent;\n                // treat guidelines link on about page as CTA\n                if (navItem.pathname === '/guidelines') {\n                  pushEvent('cta', {\n                    action: 'click',\n                    label: 'Guidelines',\n                    location: navItem.href || ''\n                  });\n                  return;\n                }\n                // skip if filter-style link (already handled)\n                if (navItem.href && (navItem.href.includes('?order=') || navItem.href.includes('?filter='))) {\n                  return;\n                }\n                const label = ((_navItem$textContent = navItem.textContent) === null || _navItem$textContent === void 0 ? void 0 : _navItem$textContent.trim()) || navItem.getAttribute('title') || 'navigation';\n                const parentNav = navItem.closest('.nav-pills, .navigation-menu');\n                const detail = parentNav ? \"Community\" : \"\";\n                pushEvent('megamenu', {\n                  action: \"click\",\n                  detail: detail,\n                  label: label,\n                  location: navItem.href || \"\"\n                });\n                return;\n              }\n              const genericCTA = e.target.closest('.btn:not(.login-button):not(.sign-up-button):not(#create-topic), .cta-button, .call-to-action');\n              if (genericCTA && !genericCTA.closest('footer, .d-header, .category-box') && !shouldIgnoreClick(genericCTA)) {\n                var _genericCTA$textConte;\n                pushEvent('cta', {\n                  action: 'click',\n                  label: ((_genericCTA$textConte = genericCTA.textContent) === null || _genericCTA$textConte === void 0 ? void 0 : _genericCTA$textConte.trim()) || genericCTA.getAttribute('aria-label') || 'button',\n                  location: genericCTA.href || location.pathname\n                });\n                return;\n              }\n              const tabLink = e.target.closest('.nav-tabs a, .nav-pills a:not(.sidebar-section-link)');\n              if (tabLink && !shouldIgnoreClick(tabLink)) {\n                var _tabLink$textContent;\n                const tabText = ((_tabLink$textContent = tabLink.textContent) === null || _tabLink$textContent === void 0 ? void 0 : _tabLink$textContent.trim()) || 'tab';\n                const tabContainer = tabLink.closest('.nav-tabs, .nav-pills');\n                const category = (tabContainer === null || tabContainer === void 0 ? void 0 : tabContainer.getAttribute('data-category')) || '';\n                pushEvent('tab', {\n                  action: 'tab click',\n                  detail: category,\n                  label: tabText,\n                  location: tabLink.href || location.pathname\n                });\n                return;\n              }\n              const searchResult = e.target.closest('.fps-topic, .search-result, .search-link');\n              if (searchResult && !shouldIgnoreClick(searchResult)) {\n                var _searchResult$querySe, _searchResult$querySe2;\n                const container = searchResult.closest('.search-results, .fps-result');\n                const all = container ? Array.from(container.querySelectorAll('.fps-topic, .search-result')) : [];\n                const pos = all.indexOf(searchResult);\n                const link = searchResult.querySelector('a') || searchResult;\n                const clickText = ((_searchResult$querySe = searchResult.querySelector('.topic-title, .search-result-title')) === null || _searchResult$querySe === void 0 ? void 0 : (_searchResult$querySe2 = _searchResult$querySe.textContent) === null || _searchResult$querySe2 === void 0 ? void 0 : _searchResult$querySe2.trim()) || 'result';\n                const si = document.querySelector('input[type=\"search\"], #search-term');\n                const term = si ? si.value.trim() : '';\n                pushEvent('search', {\n                  action: 'search',\n                  detail: clickText,\n                  label: 'search result click',\n                  location: link.href || '',\n                  search_term: term,\n                  search_origination: location.pathname,\n                  search_results: all.length.toString(),\n                  search_position: pos >= 0 ? pos.toString() : '0'\n                });\n                return;\n              }\n              const shareBtn = e.target.closest('.share-twitter, .share-facebook, .share-linkedin, .post-action-menu .share, .share-button');\n              if (shareBtn && !shouldIgnoreClick(shareBtn)) {\n                let platform = 'unknown';\n                if (shareBtn.classList.contains('share-twitter') || shareBtn.href && shareBtn.href.includes('twitter.com')) platform = 'twitter';else if (shareBtn.classList.contains('share-facebook') || shareBtn.href && shareBtn.href.includes('facebook.com')) platform = 'facebook';else if (shareBtn.classList.contains('share-linkedin') || shareBtn.href && shareBtn.href.includes('linkedin.com')) platform = 'linkedin';\n                pushEvent('share_bar_link', {\n                  action: 'click',\n                  label: platform\n                });\n                return;\n              }\n              const downloadLink = e.target.closest('a[download], a[href*=\".pdf\"], a[href*=\".zip\"], a[href*=\".doc\"], .attachment');\n              if (downloadLink && !shouldIgnoreClick(downloadLink)) {\n                var _fileName$split$pop, _downloadLink$textCon;\n                const href = downloadLink.href || '';\n                const fileName = downloadLink.getAttribute('download') || href.split('/').pop() || 'download';\n                const ext = ((_fileName$split$pop = fileName.split('.').pop()) === null || _fileName$split$pop === void 0 ? void 0 : _fileName$split$pop.toLowerCase()) || '';\n                const type = ['zip', 'tar', 'gz', 'exe', 'dmg', 'app'].includes(ext) ? 'software' : 'document';\n                pushEvent('download', {\n                  action: type,\n                  detail: fileName,\n                  label: ((_downloadLink$textCon = downloadLink.textContent) === null || _downloadLink$textCon === void 0 ? void 0 : _downloadLink$textCon.trim()) || fileName,\n                  location: href\n                });\n                return;\n              }\n            }, true);\n            document.addEventListener('submit', function (e) {\n              if (!hasAnalyticsConsent()) return;\n              try {\n                const form = e.target.closest('.search-menu form, #search-form, form[role=\"search\"]');\n                if (!form) return;\n                const input = form.querySelector('input[type=\"search\"], input[name=\"q\"], #search-term');\n                const term = input ? input.value.trim() : '';\n                if (!term) return;\n                setTimeout(function () {\n                  const resultsContainer = document.querySelector('.search-results, .fps-result');\n                  const count = resultsContainer ? resultsContainer.querySelectorAll('.fps-topic, .search-result').length : 0;\n                  pushEvent('search', {\n                    action: 'search',\n                    detail: 'edgeimpulse',\n                    label: count > 0 ? 'search results' : 'search no results',\n                    search_term: term,\n                    search_filter: '',\n                    search_origination: location.pathname,\n                    search_results: count.toString()\n                  });\n                }, 500);\n              } catch (e) {}\n            }, true);\n            document.addEventListener('change', function (e) {\n              if (!hasAnalyticsConsent()) return;\n              try {\n                var _filter$textContent;\n                const filter = e.target.closest('select[name=\"category\"], .category-filter, .tag-filter');\n                if (!filter) return;\n                const val = filter.value || ((_filter$textContent = filter.textContent) === null || _filter$textContent === void 0 ? void 0 : _filter$textContent.trim()) || '';\n                setTimeout(function () {\n                  const results = document.querySelector('.topic-list, .category-list');\n                  const count = results ? results.querySelectorAll('.topic-list-item, .category-box').length : 0;\n                  pushEvent('search', {\n                    action: 'search',\n                    detail: 'edgeimpulse',\n                    label: 'search results',\n                    search_term: '',\n                    search_filter: val,\n                    search_origination: location.pathname,\n                    search_results: count.toString()\n                  });\n                }, 300);\n              } catch (e) {}\n            }, true);\n            if (typeof api !== 'undefined' && api.onAppEvent) {\n              if (typeof api.onAppEvent === 'function') {\n                api.onAppEvent('page:like-toggled', function (post, likeAction) {\n                  if (post && likeAction && likeAction.acted) pushEvent('cta', {\n                    action: 'like_post',\n                    label: 'Like',\n                    location: location.pathname\n                  });\n                });\n                api.onAppEvent('post:created', function (post) {\n                  if (post) pushEvent('cta', {\n                    action: 'post_created',\n                    label: 'Create Post',\n                    location: location.pathname\n                  });\n                });\n                api.onAppEvent('topic:created', function (post, composerModel) {\n                  try {\n                    const cat = composerModel ? composerModel.get('category.name') : '';\n                    pushEvent('cta', {\n                      action: 'topic_created',\n                      label: 'Create Topic',\n                      location: location.pathname,\n                      category: cat\n                    });\n                  } catch (e) {}\n                });\n                api.onAppEvent('composer:opened', function (composerModel) {\n                  try {\n                    const action = composerModel ? composerModel.get('action') : '';\n                    pushEvent('cta', {\n                      action: 'composer_opened',\n                      label: action === 'createTopic' ? '+ Create Topic' : 'Reply',\n                      location: location.pathname\n                    });\n                  } catch (e) {}\n                });\n                api.onAppEvent('composer:closed', function () {\n                  pushEvent('cta', {\n                    action: 'composer_closed',\n                    label: 'Close',\n                    location: location.pathname\n                  });\n                });\n                api.onAppEvent('page:bookmark-post-toggled', function (post) {\n                  if (post) pushEvent('cta', {\n                    action: 'bookmark',\n                    label: 'Bookmark',\n                    location: location.pathname\n                  });\n                });\n              }\n            }\n            (function () {\n              const thresholds = [25, 50, 75, 100],\n                tracked = {};\n              function onScroll() {\n                if (!hasAnalyticsConsent()) return;\n                const wh = window.innerHeight,\n                  dh = document.documentElement.scrollHeight,\n                  st = window.pageYOffset || document.documentElement.scrollTop;\n                const percent = Math.round((st + wh) / dh * 100);\n                thresholds.forEach(function (t) {\n                  if (percent >= t && !tracked[t]) {\n                    tracked[t] = true;\n                    pushEvent('scroll_track', {\n                      action: t.toString(),\n                      label: 'page'\n                    });\n                  }\n                });\n              }\n              var to;\n              window.addEventListener('scroll', function () {\n                clearTimeout(to);\n                to = setTimeout(onScroll, 200);\n              });\n              if (typeof api !== 'undefined' && api.onPageChange) api.onPageChange(function () {\n                Object.keys(tracked).forEach(k => delete tracked[k]);\n              });\n            })();\n          }\n          if (document.readyState === 'complete' || document.readyState === 'interactive') init();else document.addEventListener('DOMContentLoaded', init);\n        })();\n      });\n    }\n  };\n  _exports.default = _default;\n});\n}\n"]}