{"version":3,"sources":["webpack:///./node_modules/preact/dist/preact.module.js","webpack:///./node_modules/prop-types/index.js","webpack:///./app/javascript/leftSidebar/TagsFollowed.jsx","webpack:///./app/javascript/packs/homePage.jsx","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/ahoy.js/dist/ahoy.esm.js"],"names":["v","n","l","u","i","t","r","o","f","e","c","s","a","h","parentNode","removeChild","arguments","length","children","call","defaultProps","y","type","props","key","ref","__k","__","__b","__e","__d","__c","__h","constructor","__v","vnode","p","current","d","_","this","context","k","indexOf","b","base","m","push","g","__r","debounceRendering","sort","some","__P","j","__n","ownerSVGElement","z","w","A","Array","isArray","x","P","N","M","appendChild","nextSibling","insertBefore","$","setProperty","test","H","style","cssText","replace","toLowerCase","slice","addEventListener","T","I","removeEventListener","setAttribute","removeAttribute","event","contextType","value","__E","prototype","render","O","sub","state","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","forEach","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","L","diffed","localName","nodeType","document","createTextNode","createElementNS","createElement","is","data","childNodes","dangerouslySetInnerHTML","attributes","name","__html","innerHTML","C","checked","unmount","componentWillUnmount","S","firstChild","q","B","D","Consumer","Provider","splice","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","then","bind","resolve","setTimeout","module","exports","TagsFollowed","tags","trackSidebarTagClick","ahoy","track","option","target","href","map","id","points","className","title","onClick","displayName","propTypes","PropTypes","arrayOf","shape","number","isRequired","string","frontPageFeedPathNames","Map","renderTagsFollowed","user","userData","tagsFollowedContainer","getElementById","followed_tags","followedTags","JSON","parse","tagA","tagB","hotness_score","localeCompare","trackTagCogIconClicks","renderSidebar","sidebarContainer","pathname","window","location","screen","width","includes","fetch","res","text","response","feedTimeFrame","get","waitingForDataLoad","setInterval","body","dataset","userStatus","clearInterval","renderFeed","InstantClick","on","url","URL","changedFeedTimeFrame","has","init","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","err","Error","getShim","ReactPropTypes","array","bool","func","object","symbol","any","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","exact","checkPropTypes","Cookies","ttl","domain","expires","cookieDomain","date","Date","setTime","getTime","toGMTString","cookie","escape","nameEQ","ca","split","charAt","substring","unescape","config","urlPrefix","visitsUrl","eventsUrl","page","platform","useBeacon","startOnReady","trackVisits","cookies","headers","visitParams","withCredentials","visitDuration","visitorDuration","Ahoy","configure","options","hasOwnProperty","visitId","visitorId","callback","jQuery","Zepto","isReady","queue","canStringify","eventQueue","canTrackNow","trackNow","obj","Object","keys","navigator","setCookie","getCookie","destroyCookie","log","message","console","setReady","shift","matchesSelector","selector","matches","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","apply","parentElement","onEvent","eventName","matchedElement","generateId","Math","random","toString","saveEventQueue","stringify","csrfToken","meta","querySelector","content","CSRFProtection","xhr","token","setRequestHeader","sendRequest","success","ajax","contentType","dataType","beforeSend","xhrFields","XMLHttpRequest","header","open","onload","status","send","eventData","events","visit_token","visitor_token","trackEvent","ready","trackEventNow","param","events_json","sendBeacon","FormData","append","serialize","presence","str","eventProperties","cleanObject","tag","tagName","section","getClosestSection","hasAttribute","getAttribute","createVisit","getVisitId","getVisitorId","landing_page","screen_width","screen_height","height","js","referrer","getVisitToken","getVisitorToken","reset","debug","enabled","properties","time","trackView","additionalProperties","trackClicks","undefined","textContent","innerText","trim","trackSubmits","trackChanges","start","readyState"],"mappings":"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","file":"js/homePage-101af7507cc64a2751ce.chunk.js","sourcesContent":["var n,l,u,i,t,r,o,f,e={},c=[],s=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function a(n,l){for(var u in l)n[u]=l[u];return n}function h(n){var l=n.parentNode;l&&l.removeChild(n)}function v(l,u,i){var t,r,o,f={};for(o in u)\"key\"==o?t=u[o]:\"ref\"==o?r=u[o]:f[o]=u[o];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===f[o]&&(f[o]=l.defaultProps[o]);return y(l,f,t,r,null)}function y(n,i,t,r,o){var f={type:n,props:i,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++u:o};return null==o&&null!=l.vnode&&l.vnode(f),f}function p(){return{current:null}}function d(n){return n.children}function _(n,l){this.props=n,this.context=l}function k(n,l){if(null==l)return n.__?k(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l0?y(_.type,_.props,_.key,null,_.__v):_)){if(_.__=u,_.__b=u.__b+1,null===(p=w[h])||p&&_.key==p.key&&_.type===p.type)w[h]=void 0;else for(v=0;v2&&(f.children=arguments.length>3?n.call(arguments,2):i),y(l.type,f,t||l.key,r||l.ref,null)}function D(n,l){var u={__c:l=\"__cC\"+f++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(m)},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=c.slice,l={__e:function(n,l){for(var u,i,t;l=l.__;)if((u=l.__c)&&!u.__)try{if((i=u.constructor)&&null!=i.getDerivedStateFromError&&(u.setState(i.getDerivedStateFromError(n)),t=u.__d),null!=u.componentDidCatch&&(u.componentDidCatch(n),t=u.__d),t)return u.__E=u}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},_.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=a({},this.state),\"function\"==typeof n&&(n=n(a({},u),this.props)),n&&a(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),m(this))},_.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),m(this))},_.prototype.render=d,t=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,g.__r=0,f=0;export{S as render,q as hydrate,v as createElement,v as h,d as Fragment,p as createRef,i as isValidElement,_ as Component,B as cloneElement,D as createContext,A as toChildArray,l as options};\n//# sourceMappingURL=preact.module.js.map\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import { h, Fragment } from 'preact';\nimport ahoy from 'ahoy.js';\nimport PropTypes from 'prop-types';\n\nexport const TagsFollowed = ({ tags = [] }) => {\n const trackSidebarTagClick = (event) => {\n // Temporary Ahoy Stats for usage reports\n ahoy.track('Tag sidebar click', { option: event.target.href });\n };\n\n return (\n \n {tags.map(({ name, id, points }) =>\n points >= 1 ? (\n \n \n {`#${name}`}\n \n \n ) : null,\n )}\n \n );\n};\n\nTagsFollowed.displayName = 'TagsFollowed';\nTagsFollowed.propTypes = {\n tags: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n points: PropTypes.number.isRequired,\n }),\n ),\n};\n","import { h, render } from 'preact';\nimport ahoy from 'ahoy.js';\nimport { TagsFollowed } from '../leftSidebar/TagsFollowed';\n\n/* global userData */\n// This logic is similar to that in initScrolling.js.erb\nconst frontPageFeedPathNames = new Map([\n ['/', ''],\n ['/top/week', 'week'],\n ['/top/month', 'month'],\n ['/top/year', 'year'],\n ['/top/infinity', 'infinity'],\n ['/latest', 'latest'],\n]);\n\n/**\n * Renders tags followed in the left side bar of the homepage.\n *\n * @param {HTMLElement} tagsFollowedContainer DOM element to render tags followed.\n * @param {object} user The currently logged on user, null if not logged on.\n */\n\nfunction renderTagsFollowed(user = userData()) {\n const tagsFollowedContainer = document.getElementById(\n 'sidebar-nav-followed-tags',\n );\n if (user === null || !tagsFollowedContainer) {\n // Return and do not render if the user is not logged in\n // or if this is not the home page.\n return false;\n }\n\n const { followed_tags } = user; // eslint-disable-line camelcase\n const followedTags = JSON.parse(followed_tags);\n\n // This should be done server-side potentially\n // sort tags by descending weight, descending popularity and name\n followedTags.sort((tagA, tagB) => {\n return (\n tagB.points - tagA.points ||\n tagB.hotness_score - tagA.hotness_score ||\n tagA.name.localeCompare(tagB.name)\n );\n });\n\n render(, tagsFollowedContainer);\n trackTagCogIconClicks();\n}\n\n// Temporary Ahoy Stats for usage reports\nfunction trackTagCogIconClicks() {\n document\n .getElementById('tag-priority-link')\n ?.addEventListener('click', () => {\n ahoy.track('Tag settings cog icon click');\n });\n}\n\nfunction renderSidebar() {\n const sidebarContainer = document.getElementById('sidebar-wrapper-right');\n const { pathname } = window.location;\n\n // If the screen's width is less than 640 we don't need this extra data.\n if (\n sidebarContainer &&\n screen.width >= 640 &&\n (pathname === '/' || pathname === '/latest' || pathname.includes('/top/'))\n ) {\n window\n .fetch('/sidebars/home')\n .then((res) => res.text())\n .then((response) => {\n sidebarContainer.innerHTML = response;\n });\n }\n}\n\nconst feedTimeFrame = frontPageFeedPathNames.get(window.location.pathname);\n\nif (!document.getElementById('featured-story-marker')) {\n const waitingForDataLoad = setInterval(() => {\n const { user = null, userStatus } = document.body.dataset;\n if (userStatus === 'logged-out') {\n return;\n }\n\n if (userStatus === 'logged-in' && user !== null) {\n clearInterval(waitingForDataLoad);\n if (document.getElementById('rendered-article-feed')) {\n return;\n }\n import('./homePageFeed').then(({ renderFeed }) => {\n // We have user data, render followed tags.\n renderFeed(feedTimeFrame);\n\n InstantClick.on('change', () => {\n const { userStatus: currentUserStatus } = document.body.dataset;\n\n if (currentUserStatus === 'logged-out') {\n return;\n }\n\n const url = new URL(window.location);\n const changedFeedTimeFrame = frontPageFeedPathNames.get(url.pathname);\n\n if (!frontPageFeedPathNames.has(url.pathname)) {\n return;\n }\n\n renderFeed(changedFeedTimeFrame);\n });\n });\n\n renderTagsFollowed();\n renderSidebar();\n }\n }, 2);\n}\n\nInstantClick.on('change', () => {\n if (document.body.dataset.userStatus !== 'logged-in') {\n // Nothing to do, the user is not logged on.\n return false;\n }\n\n renderTagsFollowed();\n renderSidebar();\n});\nInstantClick.init();\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/*!\n * Ahoy.js\n * Simple, powerful JavaScript analytics\n * https://github.com/ankane/ahoy.js\n * v0.4.0\n * MIT License\n */\n\n// https://www.quirksmode.org/js/cookies.html\n\nvar Cookies = {\n set: function (name, value, ttl, domain) {\n var expires = \"\";\n var cookieDomain = \"\";\n if (ttl) {\n var date = new Date();\n date.setTime(date.getTime() + (ttl * 60 * 1000));\n expires = \"; expires=\" + date.toGMTString();\n }\n if (domain) {\n cookieDomain = \"; domain=\" + domain;\n }\n document.cookie = name + \"=\" + escape(value) + expires + cookieDomain + \"; path=/; samesite=lax\";\n },\n get: function (name) {\n var i, c;\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(';');\n for (i = 0; i < ca.length; i++) {\n c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return unescape(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n }\n};\n\nvar config = {\n urlPrefix: \"\",\n visitsUrl: \"/ahoy/visits\",\n eventsUrl: \"/ahoy/events\",\n page: null,\n platform: \"Web\",\n useBeacon: true,\n startOnReady: true,\n trackVisits: true,\n cookies: true,\n cookieDomain: null,\n headers: {},\n visitParams: {},\n withCredentials: false,\n visitDuration: 4 * 60, // default 4 hours\n visitorDuration: 2 * 365 * 24 * 60 // default 2 years\n};\n\nvar ahoy = window.ahoy || window.Ahoy || {};\n\nahoy.configure = function (options) {\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n config[key] = options[key];\n }\n }\n};\n\n// legacy\nahoy.configure(ahoy);\n\nvar $ = window.jQuery || window.Zepto || window.$;\nvar visitId, visitorId, track;\nvar isReady = false;\nvar queue = [];\nvar canStringify = typeof(JSON) !== \"undefined\" && typeof(JSON.stringify) !== \"undefined\";\nvar eventQueue = [];\n\nfunction visitsUrl() {\n return config.urlPrefix + config.visitsUrl;\n}\n\nfunction eventsUrl() {\n return config.urlPrefix + config.eventsUrl;\n}\n\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\nfunction canTrackNow() {\n return (config.useBeacon || config.trackNow) && isEmpty(config.headers) && canStringify && typeof(window.navigator.sendBeacon) !== \"undefined\" && !config.withCredentials;\n}\n\nfunction serialize(object) {\n var data = new FormData();\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n data.append(key, object[key]);\n }\n }\n return data;\n}\n\n// cookies\n\nfunction setCookie(name, value, ttl) {\n Cookies.set(name, value, ttl, config.cookieDomain || config.domain);\n}\n\nfunction getCookie(name) {\n return Cookies.get(name);\n}\n\nfunction destroyCookie(name) {\n Cookies.set(name, \"\", -1);\n}\n\nfunction log(message) {\n if (getCookie(\"ahoy_debug\")) {\n window.console.log(message);\n }\n}\n\nfunction setReady() {\n var callback;\n while ((callback = queue.shift())) {\n callback();\n }\n isReady = true;\n}\n\nahoy.ready = function (callback) {\n if (isReady) {\n callback();\n } else {\n queue.push(callback);\n }\n};\n\nfunction matchesSelector(element, selector) {\n var matches = element.matches ||\n element.matchesSelector ||\n element.mozMatchesSelector ||\n element.msMatchesSelector ||\n element.oMatchesSelector ||\n element.webkitMatchesSelector;\n\n if (matches) {\n if (matches.apply(element, [selector])) {\n return element;\n } else if (element.parentElement) {\n return matchesSelector(element.parentElement, selector);\n }\n return null;\n } else {\n log(\"Unable to match\");\n return null;\n }\n}\n\nfunction onEvent(eventName, selector, callback) {\n document.addEventListener(eventName, function (e) {\n var matchedElement = matchesSelector(e.target, selector);\n if (matchedElement) {\n callback.call(matchedElement, e);\n }\n });\n}\n\n// http://beeker.io/jquery-document-ready-equivalent-vanilla-javascript\nfunction documentReady(callback) {\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n setTimeout(callback, 0);\n } else {\n document.addEventListener(\"DOMContentLoaded\", callback);\n }\n}\n\n// https://stackoverflow.com/a/2117523/1177228\nfunction generateId() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n\nfunction saveEventQueue() {\n if (config.cookies && canStringify) {\n setCookie(\"ahoy_events\", JSON.stringify(eventQueue), 1);\n }\n}\n\n// from rails-ujs\n\nfunction csrfToken() {\n var meta = document.querySelector(\"meta[name=csrf-token]\");\n return meta && meta.content;\n}\n\nfunction csrfParam() {\n var meta = document.querySelector(\"meta[name=csrf-param]\");\n return meta && meta.content;\n}\n\nfunction CSRFProtection(xhr) {\n var token = csrfToken();\n if (token) { xhr.setRequestHeader(\"X-CSRF-Token\", token); }\n}\n\nfunction sendRequest(url, data, success) {\n if (canStringify) {\n if ($ && $.ajax) {\n $.ajax({\n type: \"POST\",\n url: url,\n data: JSON.stringify(data),\n contentType: \"application/json; charset=utf-8\",\n dataType: \"json\",\n beforeSend: CSRFProtection,\n success: success,\n headers: config.headers,\n xhrFields: {\n withCredentials: config.withCredentials\n }\n });\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open(\"POST\", url, true);\n xhr.withCredentials = config.withCredentials;\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n for (var header in config.headers) {\n if (config.headers.hasOwnProperty(header)) {\n xhr.setRequestHeader(header, config.headers[header]);\n }\n }\n xhr.onload = function() {\n if (xhr.status === 200) {\n success();\n }\n };\n CSRFProtection(xhr);\n xhr.send(JSON.stringify(data));\n }\n }\n}\n\nfunction eventData(event) {\n var data = {\n events: [event]\n };\n if (config.cookies) {\n data.visit_token = event.visit_token;\n data.visitor_token = event.visitor_token;\n }\n delete event.visit_token;\n delete event.visitor_token;\n return data;\n}\n\nfunction trackEvent(event) {\n ahoy.ready( function () {\n sendRequest(eventsUrl(), eventData(event), function() {\n // remove from queue\n for (var i = 0; i < eventQueue.length; i++) {\n if (eventQueue[i].id == event.id) {\n eventQueue.splice(i, 1);\n break;\n }\n }\n saveEventQueue();\n });\n });\n}\n\nfunction trackEventNow(event) {\n ahoy.ready( function () {\n var data = eventData(event);\n var param = csrfParam();\n var token = csrfToken();\n if (param && token) { data[param] = token; }\n // stringify so we keep the type\n data.events_json = JSON.stringify(data.events);\n delete data.events;\n window.navigator.sendBeacon(eventsUrl(), serialize(data));\n });\n}\n\nfunction page() {\n return config.page || window.location.pathname;\n}\n\nfunction presence(str) {\n return (str && str.length > 0) ? str : null;\n}\n\nfunction cleanObject(obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (obj[key] === null) {\n delete obj[key];\n }\n }\n }\n return obj;\n}\n\nfunction eventProperties() {\n return cleanObject({\n tag: this.tagName.toLowerCase(),\n id: presence(this.id),\n \"class\": presence(this.className),\n page: page(),\n section: getClosestSection(this)\n });\n}\n\nfunction getClosestSection(element) {\n for ( ; element && element !== document; element = element.parentNode) {\n if (element.hasAttribute('data-section')) {\n return element.getAttribute('data-section');\n }\n }\n\n return null;\n}\n\nfunction createVisit() {\n isReady = false;\n\n visitId = ahoy.getVisitId();\n visitorId = ahoy.getVisitorId();\n track = getCookie(\"ahoy_track\");\n\n if (config.cookies === false || config.trackVisits === false) {\n log(\"Visit tracking disabled\");\n setReady();\n } else if (visitId && visitorId && !track) {\n // TODO keep visit alive?\n log(\"Active visit\");\n setReady();\n } else {\n if (!visitId) {\n visitId = generateId();\n setCookie(\"ahoy_visit\", visitId, config.visitDuration);\n }\n\n // make sure cookies are enabled\n if (getCookie(\"ahoy_visit\")) {\n log(\"Visit started\");\n\n if (!visitorId) {\n visitorId = generateId();\n setCookie(\"ahoy_visitor\", visitorId, config.visitorDuration);\n }\n\n var data = {\n visit_token: visitId,\n visitor_token: visitorId,\n platform: config.platform,\n landing_page: window.location.href,\n screen_width: window.screen.width,\n screen_height: window.screen.height,\n js: true\n };\n\n // referrer\n if (document.referrer.length > 0) {\n data.referrer = document.referrer;\n }\n\n for (var key in config.visitParams) {\n if (config.visitParams.hasOwnProperty(key)) {\n data[key] = config.visitParams[key];\n }\n }\n\n log(data);\n\n sendRequest(visitsUrl(), data, function () {\n // wait until successful to destroy\n destroyCookie(\"ahoy_track\");\n setReady();\n });\n } else {\n log(\"Cookies disabled\");\n setReady();\n }\n }\n}\n\nahoy.getVisitId = ahoy.getVisitToken = function () {\n return getCookie(\"ahoy_visit\");\n};\n\nahoy.getVisitorId = ahoy.getVisitorToken = function () {\n return getCookie(\"ahoy_visitor\");\n};\n\nahoy.reset = function () {\n destroyCookie(\"ahoy_visit\");\n destroyCookie(\"ahoy_visitor\");\n destroyCookie(\"ahoy_events\");\n destroyCookie(\"ahoy_track\");\n return true;\n};\n\nahoy.debug = function (enabled) {\n if (enabled === false) {\n destroyCookie(\"ahoy_debug\");\n } else {\n setCookie(\"ahoy_debug\", \"t\", 365 * 24 * 60); // 1 year\n }\n return true;\n};\n\nahoy.track = function (name, properties) {\n // generate unique id\n var event = {\n name: name,\n properties: properties || {},\n time: (new Date()).getTime() / 1000.0,\n id: generateId(),\n js: true\n };\n\n ahoy.ready( function () {\n if (config.cookies && !ahoy.getVisitId()) {\n createVisit();\n }\n\n ahoy.ready( function () {\n log(event);\n\n event.visit_token = ahoy.getVisitId();\n event.visitor_token = ahoy.getVisitorId();\n\n if (canTrackNow()) {\n trackEventNow(event);\n } else {\n eventQueue.push(event);\n saveEventQueue();\n\n // wait in case navigating to reduce duplicate events\n setTimeout( function () {\n trackEvent(event);\n }, 1000);\n }\n });\n });\n\n return true;\n};\n\nahoy.trackView = function (additionalProperties) {\n var properties = {\n url: window.location.href,\n title: document.title,\n page: page()\n };\n\n if (additionalProperties) {\n for(var propName in additionalProperties) {\n if (additionalProperties.hasOwnProperty(propName)) {\n properties[propName] = additionalProperties[propName];\n }\n }\n }\n ahoy.track(\"$view\", properties);\n};\n\nahoy.trackClicks = function (selector) {\n if (selector === undefined) {\n throw new Error(\"Missing selector\");\n }\n onEvent(\"click\", selector, function (e) {\n var properties = eventProperties.call(this, e);\n properties.text = properties.tag == \"input\" ? this.value : (this.textContent || this.innerText || this.innerHTML).replace(/[\\s\\r\\n]+/g, \" \").trim();\n properties.href = this.href;\n ahoy.track(\"$click\", properties);\n });\n};\n\nahoy.trackSubmits = function (selector) {\n if (selector === undefined) {\n throw new Error(\"Missing selector\");\n }\n onEvent(\"submit\", selector, function (e) {\n var properties = eventProperties.call(this, e);\n ahoy.track(\"$submit\", properties);\n });\n};\n\nahoy.trackChanges = function (selector) {\n log(\"trackChanges is deprecated and will be removed in 0.5.0\");\n if (selector === undefined) {\n throw new Error(\"Missing selector\");\n }\n onEvent(\"change\", selector, function (e) {\n var properties = eventProperties.call(this, e);\n ahoy.track(\"$change\", properties);\n });\n};\n\n// push events from queue\ntry {\n eventQueue = JSON.parse(getCookie(\"ahoy_events\") || \"[]\");\n} catch (e) {\n // do nothing\n}\n\nfor (var i = 0; i < eventQueue.length; i++) {\n trackEvent(eventQueue[i]);\n}\n\nahoy.start = function () {\n createVisit();\n\n ahoy.start = function () {};\n};\n\ndocumentReady(function() {\n if (config.startOnReady) {\n ahoy.start();\n }\n});\n\nexport default ahoy;\n"],"sourceRoot":""}