{"version":3,"file":"js/application-ccf512809686be9273d5.js","mappings":"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","sources":["webpack://spredspro/./app/javascript/channels/ sync _channel\\.js$","webpack://spredspro/./app/javascript/controllers/ sync \\.js$","webpack://spredspro/./app/javascript/channels/consumer.js","webpack://spredspro/./app/javascript/channels/index.js","webpack://spredspro/./app/javascript/controllers/ballot-controller.js","webpack://spredspro/./app/javascript/controllers/categories-filter-controller.js","webpack://spredspro/./app/javascript/controllers/checkbox-toggle-controller.js","webpack://spredspro/./app/javascript/controllers/document-controller.js","webpack://spredspro/./app/javascript/controllers/dropdown-controller.js","webpack://spredspro/./app/javascript/controllers/form-controller.js","webpack://spredspro/./app/javascript/controllers/frame-controller.js","webpack://spredspro/./app/javascript/controllers/load-controller.js","webpack://spredspro/./app/javascript/controllers/menu-controller.js","webpack://spredspro/./app/javascript/controllers/modal-controller.js","webpack://spredspro/./app/javascript/controllers/multi-choice-controller.js","webpack://spredspro/./app/javascript/controllers/nested-form-controller.js","webpack://spredspro/./app/javascript/controllers/ping-controller.js","webpack://spredspro/./app/javascript/controllers/popover-controller.js","webpack://spredspro/./app/javascript/controllers/radio-toggle-controller.js","webpack://spredspro/./app/javascript/controllers/registration-controller.js","webpack://spredspro/./app/javascript/controllers/search-form-controller.js","webpack://spredspro/./app/javascript/controllers/select-toggle-controller.js","webpack://spredspro/./app/javascript/controllers/selector-controller.js","webpack://spredspro/./app/javascript/controllers/sortable-controller.js","webpack://spredspro/./app/javascript/controllers/toggler-controller.js","webpack://spredspro/./app/javascript/controllers/vote-controller.js","webpack://spredspro/./app/javascript/direct_uploads.js","webpack://spredspro/./app/javascript/packs/application.js"],"sourcesContent":["function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 3760;\nmodule.exports = webpackEmptyContext;","var map = {\n\t\"./ballot-controller.js\": 7680,\n\t\"./categories-filter-controller.js\": 5249,\n\t\"./checkbox-toggle-controller.js\": 1918,\n\t\"./document-controller.js\": 7881,\n\t\"./dropdown-controller.js\": 1301,\n\t\"./form-controller.js\": 2300,\n\t\"./frame-controller.js\": 8277,\n\t\"./load-controller.js\": 9058,\n\t\"./menu-controller.js\": 8959,\n\t\"./modal-controller.js\": 9429,\n\t\"./multi-choice-controller.js\": 411,\n\t\"./nested-form-controller.js\": 9542,\n\t\"./ping-controller.js\": 1802,\n\t\"./popover-controller.js\": 445,\n\t\"./radio-toggle-controller.js\": 8648,\n\t\"./registration-controller.js\": 3277,\n\t\"./search-form-controller.js\": 8057,\n\t\"./select-toggle-controller.js\": 8879,\n\t\"./selector-controller.js\": 97,\n\t\"./sortable-controller.js\": 1350,\n\t\"./toggler-controller.js\": 7408,\n\t\"./vote-controller.js\": 8214,\n\t\"controllers/ballot-controller.js\": 7680,\n\t\"controllers/categories-filter-controller.js\": 5249,\n\t\"controllers/checkbox-toggle-controller.js\": 1918,\n\t\"controllers/document-controller.js\": 7881,\n\t\"controllers/dropdown-controller.js\": 1301,\n\t\"controllers/form-controller.js\": 2300,\n\t\"controllers/frame-controller.js\": 8277,\n\t\"controllers/load-controller.js\": 9058,\n\t\"controllers/menu-controller.js\": 8959,\n\t\"controllers/modal-controller.js\": 9429,\n\t\"controllers/multi-choice-controller.js\": 411,\n\t\"controllers/nested-form-controller.js\": 9542,\n\t\"controllers/ping-controller.js\": 1802,\n\t\"controllers/popover-controller.js\": 445,\n\t\"controllers/radio-toggle-controller.js\": 8648,\n\t\"controllers/registration-controller.js\": 3277,\n\t\"controllers/search-form-controller.js\": 8057,\n\t\"controllers/select-toggle-controller.js\": 8879,\n\t\"controllers/selector-controller.js\": 97,\n\t\"controllers/sortable-controller.js\": 1350,\n\t\"controllers/toggler-controller.js\": 7408,\n\t\"controllers/vote-controller.js\": 8214\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 7461;","// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `rails generate channel` command.\n\nimport { createConsumer } from \"@rails/actioncable\"\n\nexport default createConsumer()\n","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context('.', true, /_channel\\.js$/)\nchannels.keys().forEach(channels)\n","// Subscribe to the ballot channel,\n// and add/remove the live resolution when a broadcast is received.\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport consumer from \"../channels/consumer\"\n\nexport default class extends Controller {\n static targets = [\n 'resolution',\n 'resolutions'\n ]\n\n static values = {\n meetingId: Number,\n resolutionUrl: String,\n voterId: Number\n }\n\n connect() {\n const ballotController = this\n\n this.subscription = consumer.subscriptions.create(\n {channel: \"BallotChannel\", id: this.meetingIdValue}, {\n received(data) {\n ballotController.update(data)\n },\n disconnected() {\n this.unsubscribe()\n }\n })\n }\n\n update(data) {\n if (data.resolution) {\n this.updateResolution(data.resolution)\n }\n }\n\n updateResolution(resolution) {\n switch (resolution.live_state) {\n case 'live_off':\n case 'live_display':\n case 'live_vote':\n case 'live_results':\n this.addResolution(resolution)\n break\n default:\n console.warn('live_state value not supported', resolution.live_state)\n }\n }\n\n removeResolution(resolution) {\n const element = this.resolutionElement(resolution.id)\n\n if (element) {\n const parentElement = element.parentNode\n\n if (parentElement) {\n parentElement.removeChild(element) // remove() is not supported in IE11\n }\n }\n }\n\n addResolution(resolution) {\n fetch(`${this.resolutionUrlValue}/${resolution.id}` + this.voterIdParam)\n .then(response => {\n if (!response.ok) { throw new Error(response.status) }\n return response.text()\n })\n .then(html => {\n this.addOrReplaceResolutionHTML(resolution, html)\n this.scrollTo(resolution)\n })\n .catch(error => {\n this.addOrReplaceResolutionHTML(resolution, '
Error updating the vote. Please reload this page.
')\n })\n }\n\n addOrReplaceResolutionHTML(resolution, html) {\n const element = this.resolutionElement(resolution.id)\n if (element) {\n element.outerHTML = html\n } else {\n this.resolutionsTarget.innerHTML += html\n }\n }\n\n scrollTo(resolution) {\n const element = this.resolutionElement(resolution.id)\n if (element) {\n element.scrollIntoView({behavior: 'smooth'})\n }\n }\n\n resolutionElement(resolutionId) {\n return this.resolutionTargets.filter(target => target.dataset.resolutionId == resolutionId)[0]\n }\n\n get voterIdParam() {\n const voterId = this.voterIdValue\n return voterId ? `?voter_id=${voterId}` : ''\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['checkbox']\n\n toggle(event) {\n const togglerCheckbox = event.currentTarget\n this.checkboxTargets.forEach(checkbox => checkbox.checked = togglerCheckbox.checked)\n }\n}\n","// Show or hide the `toggled` target depending on the `toggler` checkbox state when `toggle` is called.\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"toggler\",\n \"toggled\"\n ]\n\n static values = {\n mode: String,\n toggledStyle: String\n }\n\n connect() {\n if (this.modeValue != 'inherit') {\n this.toggle()\n }\n }\n\n toggle(event) {\n if (!this.hasTogglerTarget || !this.hasToggledTarget) { return }\n\n if (this.modeValue == 'inherit') {\n this.toggledTargets.forEach(target => target.style.display = (target.style.display == 'none' ? this.toggledStyle : 'none'))\n } else {\n this.toggledTarget.style.display = this.togglerChecked ? this.toggledStyle : 'none'\n }\n }\n\n get togglerChecked() {\n if (!this.hasTogglerTarget) { return false }\n return this.togglerTarget.checked\n }\n\n get toggledStyle() {\n return this.hasToggledStyleValue ? this.toggledStyleValue : 'block'\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['fileInput', 'submitButton']\n\n connect() {\n this.change()\n }\n\n change(event) {\n const hasFiles = this.fileInputTarget.value != ''\n\n if (hasFiles) {\n this.submitButtonTarget.disabled = false\n } else {\n this.submitButtonTarget.disabled = true\n }\n }\n}\n","// Close `details`-based dropdowns when clicked outside.\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = []\n\n connect() {\n this.clickListener = document.addEventListener('click', (event) => { this.onDocumentClick(event) })\n }\n\n disconnect() {\n document.removeEventListener('click', this.clickListener)\n }\n\n onDocumentClick(event) {\n try {\n const details = event.target.closest('details')\n\n const allDetails = document.querySelectorAll('details[data-controller=dropdown]')\n allDetails.forEach((d) => { if (d != details) { d.open = false } })\n }\n catch (e) {\n // `closest` not in IE, skip feature in that case\n }\n }\n}\n","// Generic form-related functions\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n submit() {\n this.element.requestSubmit()\n // `submit` bypasses Turbo, `requestSubmit` triggers it\n }\n}\n","// Reload a turbo-frame in response to a broadcast.\n//\n// Usage:\n// \n//\n// FrameChannel.broadcast_to 'meeting_1_participants', target: 'participants'\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport consumer from \"../channels/consumer\"\n\nexport default class extends Controller {\n static values = {\n action: String,\n scope: String,\n src: String\n }\n\n connect() {\n const frameController = this\n\n this.subscription = consumer.subscriptions.create(\n {channel: \"FrameChannel\", scope: this.scopeValue}, {\n\n received(data) {\n frameController.fetchList(data.target)\n },\n\n disconnected() {\n this.unsubscribe()\n }\n })\n }\n\n fetchList(target) {\n if (target) {\n let targetElement = document.getElementById(target)\n if (targetElement && this.hasSrcValue) {\n fetch(this.srcValue)\n .then(response => {\n if (!response.ok) { throw new Error(response.status) }\n return response.text()\n })\n .then(html => {\n targetElement.innerHTML = html\n })\n .catch(error => {\n console.warn('Error fetching the frame')\n })\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['loading']\n\n markAsLoading() {\n if (this.hasLoadingTarget) {\n this.loadingTarget.classList.add('loading')\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['button', 'nav']\n\n connect() {\n this.mediaQueryList = window.matchMedia('(min-width: 1024px)')\n this.mediaQueryList.addEventListener('change', (e) => { this.onWidthChange(e) })\n this.onWidthChange(this.mediaQueryList)\n }\n\n onWidthChange(event) {\n if (event.matches) {\n this.toggleNav(true) // nav always shown for desktop\n } else {\n this.toggleNav(false) // nav hidden by default for mobile\n }\n }\n\n onToggle(event) {\n this.toggleNav(this.isNavDisplayed ? false : true)\n }\n\n toggleNav(showNav) {\n if (showNav) {\n this.buttonTarget.setAttribute('aria-expanded', 'true')\n this.navTarget.style.display = 'block'\n } else {\n this.buttonTarget.removeAttribute('aria-expanded')\n this.navTarget.style.display = 'none'\n }\n }\n\n get isNavDisplayed() {\n return this.navTarget.style.display != 'none'\n }\n}\n","// Show or close a modal.\n//\n// Native support on Chrome, Edge, Opera, and Android.\n// Polyfill for other browsers.\n// Last-resort fallback if polyfill fails: the dialog is displayed in the normal HTML flow.\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport dialogPolyfill from \"dialog-polyfill\"\n\nexport default class extends Controller {\n static classes = ['active']\n static targets = ['dialog']\n\n connect() {\n dialogPolyfill.registerDialog(this.dialogTarget)\n }\n\n show(event) {\n if (this.hasActiveClass) { this.dialogTarget.classList.add(this.activeClass) }\n if (typeof this.dialogTarget.showModal !== 'function') { return this.showFallback(event) }\n this.dialogTarget.showModal()\n }\n\n close(event) {\n if (event.key && event.key !== 'Escape') { return }\n if (this.hasActiveClass) { this.dialogTarget.classList.remove(this.activeClass) }\n if (typeof this.dialogTarget.close !== 'function') { return this.closeFallback(event) }\n this.dialogTarget.close()\n }\n\n showFallback(event) {\n this.dialogTarget.style.display = 'block'\n this.dialogTarget.style.position = 'static'\n this.dialogTarget.style.width = '100%'\n }\n\n closeFallback(event) {\n this.dialogTarget.style.display = 'none'\n }\n}\n","// Restrict a checkbox collection choices to a maximum.\n//\n// When a checkbox state changes:\n// - if the amount of checked boxes equals the maximum\n// then the remaining unchecked ones are disabled.\n// - if the amount of checked boxes is below the maximum\n// then the remaining unchecked ones are enabled.\n//\n// Usage:\n// - Define a `data-multi-choice-max-value` number.\n// - Tag checkbox input elements with `data-multi-choice-target=\"choice\"`.\n// - Call `data-action=\"multi-choice#restrict\"` on checkbox change.\n//\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n 'choice'\n ]\n\n static values = {\n max: Number\n }\n\n connect() {\n this.restrict()\n }\n\n restrict() {\n const disabled = this.checkedChoices.length >= this.maxValue\n this.uncheckedChoices.forEach(element => element.disabled = disabled)\n }\n\n get checkedChoices() {\n return this.choiceTargets.filter(target => target.checked)\n }\n\n get uncheckedChoices() {\n return this.choiceTargets.filter(target => !target.checked)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n 'new_association',\n 'template'\n ]\n\n static values = {\n placeholder: String\n }\n\n add_association(event) {\n event.preventDefault()\n let content = this.templateTarget.innerHTML.replace(this.placeholder_regexp, new Date().valueOf())\n this.new_associationTarget.insertAdjacentHTML(\"beforebegin\", content)\n }\n\n remove_association(event) {\n event.preventDefault()\n let tpl = event.target.closest(\".nested-fields\")\n tpl.querySelector(\"input[name*='_destroy']\").value = 1\n tpl.style.display = \"none\" // don’t remove from DOM, hidden delete field needs to be sent\n }\n\n get placeholder_regexp() {\n const placeholder = this.placeholderValue || 'TEMPLATE_RECORD'\n return new RegExp(placeholder, 'g')\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport consumer from \"../channels/consumer\"\n\nexport default class extends Controller {\n static values = {ballotId: Number}\n\n connect() {\n this.subscription = consumer.subscriptions.create(\n {channel: \"PingChannel\", ballot_id: this.ballotIdValue}, {\n received(data) {\n this.perform(\"pong\", {ballot_id: data.ballot_id, resolution_id: data.resolution_id})\n },\n disconnected() {\n this.unsubscribe()\n }\n })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"card\"\n ];\n\n static values = {\n url: String\n };\n\n async show(event) {\n this.hidden = false\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => { this.showAfterDelay(event) }, 500)\n }\n\n async showAfterDelay(event) {\n if (this.hidden) return\n\n const element = this.element\n\n let content = await this.fetch()\n if (!content) return\n\n if (this.hasCardTarget) {\n this.cardTarget.remove()\n }\n\n const fragment = document.createRange().createContextualFragment(content)\n element.appendChild(fragment)\n }\n\n hide(event) {\n this.hidden = true\n if (this.hasCardTarget) {\n this.cardTarget.remove()\n }\n }\n\n disconnect() {\n if (this.hasCardTarget) {\n this.cardTarget.remove()\n }\n }\n\n async fetch() {\n if (!this.remoteContent) {\n if (!this.hasUrlValue) {\n console.error('[popover] You need to pass an url to fetch the popover content.')\n return\n }\n\n const response = await fetch(this.urlValue)\n this.remoteContent = await response.text()\n }\n\n return this.remoteContent\n }\n}\n","// Shows the fieldToToggle if the checked radio input\n// matches one of the activeValues (CSV). Hides if not.\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"fieldToToggle\"\n ]\n\n static values = {\n activeValues: String\n }\n\n toggleField(event) {\n if (!this.hasFieldToToggleTarget) { return }\n\n const activeValues = this.activeValuesValue.split(\",\")\n const checkedValue = event.target.value\n\n for (let activeValue of activeValues) {\n if (checkedValue == activeValue) {\n this.fieldToToggleTargets.forEach(target => target.style.display = \"block\")\n break\n } else {\n this.fieldToToggleTargets.forEach(target => target.style.display = \"none\")\n }\n }\n }\n}\n","// Show / hide the proxy card depending on the registration option.\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n 'option',\n 'ballot',\n 'proxyCard',\n 'proxyCardInstructions',\n 'submitButton'\n ]\n\n static values = {\n confirmText: String\n }\n\n connect() {\n const checkedOption = this.optionTargets.filter(target => target.checked)[0]\n if (checkedOption) {\n this.toggleBallotAndProxyCard(null, checkedOption)\n } else {\n this.hideBallot()\n this.hideProxyCard()\n }\n }\n\n preventSubmitOnEnter(event) {\n if (event.key && event.key == 'Enter') {\n event.preventDefault()\n }\n }\n\n toggleBallotAndProxyCard(event, target) {\n target ||= event.target\n\n switch (target.value) {\n case 'beforehand':\n this.showBallot()\n this.hideProxyCard()\n break;\n case 'with_voting_instructions':\n this.hideBallot()\n this.showProxyCard()\n break;\n case 'without_voting_instructions':\n this.hideBallot()\n this.showProxyCard()\n this.hideProxyCardInstructions()\n break;\n case 'present_online':\n case 'present_onsite':\n this.hideBallot()\n this.hideProxyCard()\n break;\n case 'absent':\n this.hideBallot()\n this.hideProxyCard()\n break;\n default:\n console.warn('option value not supported', target.value)\n }\n }\n\n toggleConfirm(event) {\n switch (event.target.value) {\n case 'beforehand':\n case 'present_online':\n case 'present_onsite':\n delete this.submitButtonTarget.dataset.turboConfirm\n break;\n case 'with_voting_instructions':\n case 'without_voting_instructions':\n case 'absent':\n if (this.confirmTextValue == '') {\n delete this.submitButtonTarget.dataset.turboConfirm\n } else {\n this.submitButtonTarget.dataset.turboConfirm = this.confirmTextValue\n }\n break;\n default:\n console.warn('option value not supported', event.target.value)\n }\n }\n\n showBallot() {\n if (!this.hasBallotTarget) { return }\n this.ballotTarget.style.display = 'block'\n }\n\n hideBallot() {\n if (!this.hasBallotTarget) { return }\n this.ballotTarget.style.display = 'none'\n }\n\n showProxyCard() {\n if (!this.hasProxyCardTarget) { return }\n this.proxyCardTarget.style.display = 'block'\n\n if (!this.hasProxyCardInstructionsTarget) { return }\n this.proxyCardInstructionsTarget.style.display = 'block'\n }\n\n hideProxyCard() {\n if (!this.hasProxyCardTarget) { return }\n this.proxyCardTarget.style.display = 'none'\n }\n\n hideProxyCardInstructions() {\n if (!this.hasProxyCardInstructionsTarget) { return }\n this.proxyCardInstructionsTarget.style.display = 'none'\n }\n}\n","// Submit a search form when the input changes, with a delay to let the person type.\n//\n// Usage:\n// - Add `data: {controller: 'search-form', search_form_target: 'form'` to the search form.\n// - Add `data: {action: 'input->search-form#search'}` to the search field.\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['form']\n\n search() {\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => {\n this.formTarget.requestSubmit()\n }, 200)\n }\n}\n","// Shows the fieldToToggle if the selected option value\n// matches one of the activeValues (CSV). Hides if not.\n// It resets the value of the fieldToReset to zero.\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"fieldToToggle\",\n \"fieldToSet\",\n \"fieldToReset\"\n ]\n\n static values = {\n activeValues: String,\n set: String,\n reset: String\n }\n\n toggleField(event) {\n // Per-controller active values\n if (this.hasActiveValuesValue) {\n const activeValues = this.activeValuesValue.split(\",\")\n const selectedValue = event.target.options[event.target.selectedIndex].value\n\n for (let activeValue of activeValues) {\n if (selectedValue == activeValue) {\n this.fieldToToggleTargets.forEach(target => target.style.display = \"block\")\n this.fieldToSetTargets.forEach(target => target.value = this.hasSetValue ? this.setValue : 1)\n break\n } else {\n this.fieldToToggleTargets.forEach(target => target.style.display = \"none\")\n this.fieldToResetTargets.forEach(target => target.value = this.hasResetValue ? this.resetValue : 0)\n }\n }\n }\n // Per-target active values\n else {\n const selectedValue = event.target.options[event.target.selectedIndex].value\n\n this.fieldToToggleTargets.forEach(target => {\n const activeValues = target.dataset.activeValues?.split(\",\") ?? []\n\n if (activeValues.includes(selectedValue)) {\n target.style.display = \"block\"\n } else {\n target.style.display = \"none\"\n }\n })\n }\n }\n}\n","// Select2-like behaviour for text field + datalist.\n//\n// The value of a hidden field marked as a `value` target will be filled\n// with the selected `id` from the items returned by the search.\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport { get } from '@rails/request.js'\n\nexport default class extends Controller {\n static classes = ['error']\n static targets = ['query', 'value', 'list']\n static values = { url: String }\n\n async search(event) {\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => { this.searchQuery() }, 500)\n event.preventDefault()\n }\n\n // private\n\n async searchQuery() {\n const response = await get(this.urlValue, {query: {q: this.query}, responseKind: 'html'})\n\n if (response.ok) {\n const list = await response.html\n this.listTarget.innerHTML = list\n this.setValueAndClass()\n } else {\n this.setValueAndClass()\n }\n }\n\n setValueAndClass(event) {\n const option = this.selectedDatalistOption\n\n if (option != null) {\n this.value = option.dataset.value\n\n if (this.hasErrorClass) {\n this.queryTarget.classList.remove(this.errorClass)\n }\n } else {\n this.value = ''\n\n if (this.hasErrorClass) {\n this.queryTarget.classList.add(this.errorClass)\n }\n }\n }\n\n get query() {\n return this.queryTarget.value.toLowerCase().trim()\n }\n\n get datalist() {\n return this.queryTarget.list\n }\n\n set value(value) {\n if (!this.hasValueTarget) { return }\n this.valueTarget.value = value\n }\n\n get selectedDatalistOption() {\n const query = this.query\n for (let option of this.datalist.children) {\n const name = option.innerText.toLowerCase().trim()\n if (name == query) { return option }\n }\n return null\n }\n}\n","// Stimulus Sortable, with added options\n//\n// https://www.stimulus-components.com/docs/stimulus-sortable/\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport Sortable from 'sortablejs'\nimport { patch } from '@rails/request.js'\n\nexport default class extends Controller {\n static values = {\n resourceName: String,\n paramName: String,\n responseKind: String,\n animation: Number,\n draggable: String,\n handle: String,\n filter: String\n }\n\n initialize () {\n this.end = this.end.bind(this)\n }\n\n connect () {\n this.sortable = new Sortable(this.element, {\n ...this.defaultOptions,\n ...this.options\n })\n }\n\n disconnect () {\n this.sortable.destroy()\n this.sortable = undefined\n }\n\n async end (event) {\n if (!event.item.dataset.sortableUpdateUrl) { return }\n\n const paramName = this.hasParamNameValue ? this.paramNameValue : 'position'\n const param = this.resourceNameValue ? `${this.resourceNameValue}[${paramName}]` : paramName\n\n const data = new FormData()\n data.append(param, event.newDraggableIndex + 1)\n\n await patch(event.item.dataset.sortableUpdateUrl, { body: data, responseKind: this.responseKindValue })\n }\n\n get options () {\n return {\n animation: this.animationValue || this.defaultOptions.animation || 150,\n draggable: this.draggableValue || this.defaultOptions.draggable || undefined,\n handle: this.handleValue || this.defaultOptions.handle || undefined,\n filter: this.filterValue || this.defaultOptions.filter || undefined,\n onEnd: this.end\n }\n }\n\n get defaultOptions() {\n return {\n responseKind: 'html',\n handle: '.handle'\n }\n }\n}\n","// Toggle an element on or off, and optionally disable input fields in that element.\n//\n// Usage:\n//\n// ```haml\n// %div{data: {controller: 'toggler'}}\n// = f.radio_button :kind, :legal, data: {\n// action: 'toggler#toggle toggler#disableFields',\n// toggler_elements_on_param: '#legal',\n// toggler_elements_off_param: '#natural'\n// }\n// #legal\n// #natural\n// ```\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n toggle(event) {\n if (event.params.elementsOn) {\n const elementsOn = event.params.elementsOn.split(',').map(e => this.element.querySelector(e))\n elementsOn.forEach(element => element.hidden = null)\n }\n\n if (event.params.elementsOff) {\n const elementsOff = event.params.elementsOff.split(',').map(e => this.element.querySelector(e))\n elementsOff.forEach(element => element.hidden = 'hidden')\n }\n }\n\n disableFields(event) {\n const elementsOn = event.params.elementsOn.split(',').map(e => this.element.querySelector(e))\n const elementsOff = event.params.elementsOff.split(',').map(e => this.element.querySelector(e))\n\n elementsOn.forEach(element => {\n element.querySelectorAll('input').forEach(input => input.disabled = null)\n })\n elementsOff.forEach(element => {\n element.querySelectorAll('input').forEach(input => input.disabled = 'disabled')\n })\n\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\n 'form',\n 'answers',\n 'choice',\n 'showFormButton',\n 'submitButton',\n 'vote'\n ]\n\n connect() {\n this.changeAnswer()\n }\n\n showForm(event) {\n this.answersTarget.style.display = 'none'\n this.showFormButtonTarget.style.display = 'none'\n this.formTarget.style.display = 'block'\n }\n\n changeAnswer(event) {\n if (!this.hasSubmitButtonTarget) { return }\n\n const hasCheckedChoices = this.choiceTargets.some(target => target.checked)\n\n if (hasCheckedChoices) {\n this.submitButtonTarget.disabled = false\n } else {\n this.submitButtonTarget.disabled = true\n }\n }\n\n submit(event) {\n this.submitButtonTarget.classList.add('loading')\n }\n}\n","// Direct upload progress bar\n//\n// http://guides.rubyonrails.org/active_storage_overview.html#direct-uploads\n\naddEventListener(\"direct-upload:initialize\", event => {\n const { target, detail } = event\n const { id, file } = detail\n target.insertAdjacentHTML(\"beforebegin\", `\n
\n
\n \n
\n `)\n target.previousElementSibling.querySelector(`.direct-upload__filename`).textContent = file.name\n})\n\naddEventListener(\"direct-upload:start\", event => {\n const { id } = event.detail\n const element = document.getElementById(`direct-upload-${id}`)\n element.classList.remove(\"direct-upload--pending\")\n})\n\naddEventListener(\"direct-upload:progress\", event => {\n const { id, progress } = event.detail\n const progressElement = document.getElementById(`direct-upload-progress-${id}`)\n progressElement.style.width = `${progress}%`\n})\n\naddEventListener(\"direct-upload:error\", event => {\n event.preventDefault()\n const { id, error } = event.detail\n const element = document.getElementById(`direct-upload-${id}`)\n element.classList.add(\"direct-upload--error\")\n element.setAttribute(\"title\", error)\n})\n\naddEventListener(\"direct-upload:end\", event => {\n const { id } = event.detail\n const element = document.getElementById(`direct-upload-${id}`)\n element.classList.add(\"direct-upload--complete\")\n})\n","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nrequire(\"@rails/activestorage\").start()\nrequire(\"channels\")\nrequire(\"direct_uploads\")\n\nimport \"@hotwired/turbo-rails\"\nimport { Application } from \"@hotwired/stimulus\"\nimport { definitionsFromContext } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport \"whatwg-fetch\" // fetch polyfill IE 11\nimport \"@stimulus/polyfills\"\n\nwindow.Stimulus = Application.start()\nconst context = require.context(\"../controllers\", true, /\\.js$/)\nStimulus.load(definitionsFromContext(context))\n\n// enable Stimulus debug mode in development\nStimulus.debug = process.env.NODE_ENV === 'development'\n\nimport \"chartkick/chart.js\"\n\nimport { Chart } from \"chart.js\"\nimport annotationPlugin from \"chartjs-plugin-annotation\"\nChart.register(annotationPlugin)\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n\n// Polyfill for Element.matches() in IE\nif (!Element.prototype.matches) {\n Element.prototype.matches =\n Element.prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n}\n\n// Polyfill for Element.closest() in IE\nif (!Element.prototype.closest) {\n Element.prototype.closest = function(s) {\n var el = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n}\n"],"names":["webpackEmptyContext","req","e","Error","code","keys","resolve","id","module","exports","map","webpackContext","webpackContextResolve","__webpack_require__","o","Object","createConsumer","channels","require","forEach","Controller","connect","ballotController","this","subscription","consumer","subscriptions","create","channel","meetingIdValue","received","data","update","disconnected","unsubscribe","resolution","updateResolution","live_state","addResolution","console","warn","removeResolution","element","resolutionElement","parentElement","parentNode","removeChild","fetch","resolutionUrlValue","voterIdParam","then","response","ok","status","text","html","addOrReplaceResolutionHTML","scrollTo","catch","error","outerHTML","resolutionsTarget","innerHTML","scrollIntoView","behavior","resolutionId","resolutionTargets","filter","target","dataset","voterId","voterIdValue","targets","values","meetingId","Number","resolutionUrl","String","toggle","event","togglerCheckbox","currentTarget","checkboxTargets","checkbox","checked","modeValue","hasTogglerTarget","hasToggledTarget","toggledTargets","style","display","toggledStyle","toggledTarget","togglerChecked","togglerTarget","hasToggledStyleValue","toggledStyleValue","mode","change","hasFiles","fileInputTarget","value","submitButtonTarget","disabled","clickListener","document","addEventListener","onDocumentClick","disconnect","removeEventListener","details","closest","querySelectorAll","d","open","submit","requestSubmit","frameController","scope","scopeValue","fetchList","targetElement","getElementById","hasSrcValue","srcValue","action","src","markAsLoading","hasLoadingTarget","loadingTarget","classList","add","mediaQueryList","window","matchMedia","onWidthChange","matches","toggleNav","onToggle","isNavDisplayed","showNav","buttonTarget","setAttribute","navTarget","removeAttribute","dialogPolyfill","registerDialog","dialogTarget","show","hasActiveClass","activeClass","showModal","showFallback","close","key","remove","closeFallback","position","width","classes","restrict","checkedChoices","length","maxValue","uncheckedChoices","choiceTargets","max","add_association","preventDefault","content","templateTarget","replace","placeholder_regexp","Date","valueOf","new_associationTarget","insertAdjacentHTML","remove_association","tpl","querySelector","placeholder","placeholderValue","RegExp","ballot_id","ballotIdValue","perform","resolution_id","ballotId","hidden","clearTimeout","timeout","setTimeout","showAfterDelay","hasCardTarget","cardTarget","fragment","createRange","createContextualFragment","appendChild","hide","remoteContent","hasUrlValue","urlValue","url","toggleField","hasFieldToToggleTarget","activeValues","activeValuesValue","split","checkedValue","activeValue","fieldToToggleTargets","checkedOption","optionTargets","toggleBallotAndProxyCard","hideBallot","hideProxyCard","preventSubmitOnEnter","showBallot","showProxyCard","hideProxyCardInstructions","toggleConfirm","turboConfirm","confirmTextValue","hasBallotTarget","ballotTarget","hasProxyCardTarget","proxyCardTarget","hasProxyCardInstructionsTarget","proxyCardInstructionsTarget","confirmText","search","formTarget","hasActiveValuesValue","selectedValue","options","selectedIndex","fieldToSetTargets","hasSetValue","setValue","fieldToResetTargets","hasResetValue","resetValue","includes","set","reset","searchQuery","get","query","q","responseKind","list","listTarget","setValueAndClass","option","selectedDatalistOption","hasErrorClass","queryTarget","errorClass","toLowerCase","trim","datalist","hasValueTarget","valueTarget","children","innerText","initialize","end","bind","sortable","Sortable","defaultOptions","destroy","undefined","item","sortableUpdateUrl","paramName","hasParamNameValue","paramNameValue","param","resourceNameValue","FormData","append","newDraggableIndex","patch","body","responseKindValue","animation","animationValue","draggable","draggableValue","handle","handleValue","filterValue","onEnd","resourceName","params","elementsOn","elementsOff","disableFields","input","changeAnswer","showForm","answersTarget","showFormButtonTarget","hasSubmitButtonTarget","hasCheckedChoices","some","detail","file","previousElementSibling","textContent","name","progress","Stimulus","Application","start","context","load","definitionsFromContext","debug","process","Chart","register","annotationPlugin","Element","prototype","msMatchesSelector","webkitMatchesSelector","s","el","call","nodeType"],"sourceRoot":""}