{"version":3,"sources":["cookies.ts","hash.ts","announce.ts"],"names":[],"mappings":";AAAa,aAAA,IAAA,EAAA,MAAA,KAAA,UAAA,WAAA,OAAA,EAAA,OAAA,QAAA,SAAA,GAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,UAAA,OAAA,EAAA,EAAA,IAAA,IAAA,IAAA,KAAA,EAAA,UAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,KAAA,EAAA,GAAA,EAAA,IAAA,OAAA,IAAA,MAAA,KAAA,YAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,QAAU,SAAS,OAAO,MAAM,KAAK,OAAO,SAAC,EAAK,GAAlD,IAAA,EACH,EAAA,EAAA,OAAA,MAAA,KAAC,EAAA,EAAA,GAAK,EAAA,EAAA,GACZ,OAAA,EAAA,EAAA,GAAY,KAAG,EAAA,IAAG,GAAM,EAAK,KAC9B;;ACFH,aAAA,SAAgB,EAAK,GAEZ,IADD,IAAA,EAAO,EACF,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC7B,GAAS,GAAQ,GAAK,EAAQ,EAAK,WAAW,GAC9C,GAAc,EAEX,OAAA,EANX,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,KAAA;;AC6BC,aAAA,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IA9BD,IAAA,EAAA,QAAA,aACA,EAAA,QAAA,UA2BA,SAAS,EAAO,EAAmB,GAC/B,EAAK,MAAM,QAAU,EAAU,QAAU,OA1B5C,OAAe,SAAW,SAAkB,GAAA,IAAA,OAAA,IAAA,EAAA,GAAA,EACzC,EAAA,EAAA,SAAA,OAAA,IAAA,EAAA,GAAA,EACA,EAAA,EAAA,cAAA,OAAA,IAAA,EAAA,eAAA,EAEA,SAAS,iBAA8B,GAAU,QAAQ,SAAA,GAC/C,IAAA,EAAY,EAAK,cAAc,GACjC,GAAC,EAAD,CACE,IAAA,EAAU,EAAK,UAAU,OACzB,EAAc,EAAA,KAAK,GACnB,EAAgC,IAAnB,EAAQ,OACrB,EAAA,EAAA,QAAE,EAAA,EAAA,OAAQ,EAAA,EAAA,MAAO,EAAA,EAAA,IACjB,EAAW,EAAA,QAAQ,WAAW,GAC9B,EAAM,IAAI,KACV,GAAW,GAAS,GAAO,IAAI,KAAK,GACpC,EAAQ,GAAO,GAAO,IAAI,KAAK,GAErC,EAAO,EADS,GAAc,IAAY,IAAU,GAGpD,EAAU,QAAU,WAChB,SAAS,OAAS,WAAW,EAAW,MAAM,EAC9C,EAAO,GAAM","file":"announce.js","sourceRoot":"..\\src","sourcesContent":["export const cookies = document.cookie.split(';').reduce((acc, cur) => {\r\n const [key, value] = cur.trim().split('=');\r\n return { ...acc, [key]: value };\r\n}, {});\r\n","// https://www.geeksforgeeks.org/how-to-create-hash-from-string-in-javascript/\r\nexport function hash(text: string) {\r\n let hash = 0;\r\n for (let i = 0; i < text.length; i++) {\r\n hash = ((hash << 5) - hash) + text.charCodeAt(i);\r\n hash = hash & hash;\r\n }\r\n return hash;\r\n}\r\n","import { cookies } from './cookies'\r\nimport { hash } from './hash'\r\n\r\n(window as any).announce = function announce({\r\n selector = ``,\r\n closeSelector = `[data-close]`,\r\n} = {}) {\r\n document.querySelectorAll(selector).forEach(node => {\r\n const closeNode = node.querySelector(closeSelector) as HTMLElement;\r\n if (!closeNode) return;\r\n const content = node.innerText.trim();\r\n const contentHash = hash(content);\r\n const hasContent = content.length !== 0;\r\n const { cookie, start, end } = node.dataset;\r\n const isClosed = cookies[`announce${contentHash}`];\r\n const now = new Date();\r\n const started = !start || now >= new Date(start);\r\n const ended = end && now >= new Date(end);\r\n const visible = hasContent && started && !ended && !isClosed;\r\n toggle(node, visible);\r\n\r\n closeNode.onclick = function () {\r\n document.cookie = `announce${contentHash}=1;${cookie}`;\r\n toggle(node, false);\r\n }\r\n });\r\n}\r\n\r\nfunction toggle(node: HTMLElement, visible: boolean) {\r\n node.style.display = visible ? `block` : `none`;\r\n}"]}