{"version":3,"file":"stilling-libs-chunk-8c6dcc00710683089a96.js","mappings":"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","sources":["webpack://dh-sexguiden/./src/components/sveip.js","webpack://dh-sexguiden/./src/components/stilling/poll/icon.js","webpack://dh-sexguiden/./src/components/stilling/poll/poll.js","webpack://dh-sexguiden/./src/components/stilling/poll/poll.html.js","webpack://dh-sexguiden/./src/client-stilling-libs.js","webpack://dh-sexguiden/./src/lib/html.js"],"sourcesContent":["import Sveip from '@nrk/dh-basis-sveip'\nimport { connectScrollContainerLazyLoad } from '@nrk/dh-basis-common'\n\nexport class SexguidenSveip extends Sveip {\n _disconnectLazyLoad\n connectedCallback() {\n super.connectedCallback()\n this._disconnectLazyLoad = connectScrollContainerLazyLoad(\n this.scrollContainer,\n this.querySelectorAll('img')\n )\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this._disconnectLazyLoad()\n }\n}\n","import { html } from '../../../lib/html'\n\nconst icon = html``\n\nexport default icon\n","/* eslint-disable promise/always-return, promise/catch-or-return */\nimport { renderPollResult } from './poll.html'\nimport styles from './poll.module.css'\n\nconst STOREAGE_KEY = 'pin-nrkno-poll'\n\nexport class Poll extends HTMLElement {\n _interacted = false\n connectedCallback() {\n if (this.pollId === 'done') {\n // All done..\n return false\n }\n\n this.addEventListener('click', this.onButtonClick, false)\n\n if (this.hasVoted()) {\n this.getVotes()\n } else {\n this.openVoting()\n }\n }\n\n disconnectedCallback() {\n this.removeEventListener('click', this.onButtonClick, false)\n }\n\n onButtonClick = async (e) => {\n if (e.target.tagName?.toLowerCase() !== 'button' || !e.target.value) {\n return\n }\n this._interacted = true\n if (e.target.value === 'show-answers') {\n this.getVotes()\n } else {\n this.onVote(e)\n }\n }\n\n onVote(e) {\n const target = e.target\n const altId = target.value\n\n if (!altId) {\n return\n }\n\n // eslint-disable-next-line compat/compat\n fetch(`${this.pollURL}/v1/${this.pollId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n vote: altId,\n }),\n })\n .then((data) => data.json())\n .then((data) => {\n this.setVoted()\n this.showVotes(data, altId)\n })\n }\n\n openVoting = () => {\n for (let btn of this.buttons) {\n btn.disabled = false\n }\n }\n\n hasVoted() {\n const pollId = this.pollId\n const storage = JSON.parse(window.localStorage.getItem(STOREAGE_KEY) || '{}')\n return storage[pollId] || false\n }\n\n setVoted() {\n const storage = JSON.parse(window.localStorage.getItem(STOREAGE_KEY) || '{}')\n storage[this.pollId] = true\n\n window.localStorage.setItem(STOREAGE_KEY, JSON.stringify(storage))\n\n return true\n }\n\n showVotes({ percentage = [], total = 0 } = {}, altId) {\n const alternatives = [...this.alternativeButtons].map((el) => {\n return {\n text: el.innerText,\n value: el.value,\n }\n })\n const question = this.querySelector(`h2 .${styles.question}`).innerText\n\n this.innerHTML = renderPollResult({ percentage, total, question, alternatives, altId })\n\n if (this._interacted) {\n this.focusOnResult()\n }\n }\n\n focusOnResult() {\n const res = this.querySelectorAll(`.${styles.result}:not(.${styles.other})`)\n if (res.length === 1) {\n res?.[0].focus()\n } else {\n this.querySelector(`.${styles.total}`).focus()\n }\n }\n\n getVotes = () => {\n // eslint-disable-next-line compat/compat\n return fetch(`${this.pollURL}/v1/${this.pollId}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n .then((data) => data.json())\n .then((data) => {\n this.showVotes(data)\n })\n }\n\n get buttons() {\n return this.querySelectorAll('button')\n }\n\n get alternativeButtons() {\n return this.querySelectorAll('button:not([value=\"show-answers\"])')\n }\n\n get pollId() {\n return this.getAttribute('poll-id')\n }\n\n get pollURL() {\n return this.getAttribute('poll-url')\n }\n}\n","import { html } from '../../../lib/html'\nimport icon from './icon.js'\nimport styles from './poll.module.css'\n\nexport function renderPoll(poll) {\n if (!poll) {\n return ''\n }\n const pollUrl = process.env.POLL_URL\n const pollId = `nsc:${poll._id}`\n\n return html` \n
\n