{"version":3,"file":"js/application-7bbdd23e756734470144.js","mappings":"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","sources":["webpack://calmcalendar/./app/javascript/autocomplete/option.js","webpack://calmcalendar/./app/javascript/autocomplete/option_list.js","webpack://calmcalendar/./app/javascript/autocomplete/index.js","webpack://calmcalendar/./app/javascript/colour_list/item.js","webpack://calmcalendar/./app/javascript/colour_list/item_list.js","webpack://calmcalendar/./app/javascript/colour_list/index.js","webpack://calmcalendar/./app/javascript/multi_list/item.js","webpack://calmcalendar/./app/javascript/multi_list/index.js","webpack://calmcalendar/./app/javascript/multi_select/item.js","webpack://calmcalendar/./app/javascript/multi_select/index.js","webpack://calmcalendar/./app/javascript/workflow-summaries/index.js","webpack://calmcalendar/./app/javascript/application.js","webpack://calmcalendar/./app/javascript/element.js"],"sourcesContent":["import Element from \"../element\";\n\nclass Option {\n constructor(option) {\n this.option = option;\n this.text = this.option.innerText;\n this.alt = this.option.getAttribute(\"data-alt\");\n this.element = this.createElement();\n\n this.addEventListener(\"click\", this.onClick.bind(this));\n this.addEventListener(\"mouseenter\", this.onEnter.bind(this));\n this.addEventListener(\"mouseleave\", this.onLeave.bind(this));\n }\n\n addEventListener(type, block) {\n this.element.addEventListener(type, block);\n }\n\n createElement() {\n var listOption = new Element(\"li\", {\n \"role\": \"option\",\n \"tabindex\": \"-1\",\n \"aria-selected\": this.option.selected ? \"true\" : \"false\",\n \"data-option-value\": this.option.value\n }).output();\n\n if (this.option.selected) {\n listOption.classList.add(\"selected\");\n }\n\n var optionLabel = new Element(\"span\", {\n \"class\": \"autocomplete-option-label\", \"innerText\": this.text\n }).output();\n listOption.appendChild(optionLabel);\n\n var optionCheck = new Element(\"span\", {\"class\": \"autocomplete-option-check\"}).output();\n var optionSVG = new Element(\"svg\", {\n \"viewBox\": \"0 0 20 20\", \"fill\": \"currentColor\", \"aria-hidden\": \"true\"\n }).output();\n var path = new Element(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n \"d\": \"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n }).output();\n\n optionSVG.appendChild(path);\n optionCheck.append(optionSVG);\n listOption.appendChild(optionCheck);\n\n return listOption;\n }\n\n focus() {\n this.element.focus();\n }\n\n hide() {\n this.element.classList.add(\"hidden\");\n }\n\n highlight() {\n this.element.classList.add(\"highlighted\");\n }\n\n isHighlighted() {\n return this.element.classList.contains(\"highlighted\");\n }\n\n isSelected() {\n return this.option.selected;\n }\n\n isVisible() {\n return !this.element.classList.contains(\"hidden\");\n }\n\n onClick(event) {\n this.select();\n }\n\n onEnter(event) {\n this.highlight();\n }\n\n onLeave(event) {\n this.unhighlight();\n }\n\n select() {\n this.element.setAttribute(\"aria-selected\", \"true\");\n this.element.classList.add(\"selected\");\n this.option.selected = true;\n\n var event = new CustomEvent(\"select\", {\n detail: {option: this},\n bubbles: false,\n cancelable: false\n });\n this.element.dispatchEvent(event);\n\n if (this.isVisible()) { this.element.focus(); }\n }\n\n show() {\n this.element.classList.remove(\"hidden\");\n }\n\n toggle(inputValue) {\n if (this.text.toLowerCase().indexOf(inputValue) > -1 || (this.alt && this.alt.toLowerCase().indexOf(inputValue) > -1)) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n unhighlight() {\n this.element.classList.remove(\"highlighted\");\n }\n\n unselect() {\n this.element.setAttribute(\"aria-selected\", \"false\");\n this.element.classList.remove(\"selected\");\n this.option.selected = false;\n }\n}\n\nexport default Option;\n","import Element from \"../element\"\nimport Option from \"./option\"\n\nclass OptionList {\n constructor(select) {\n this.select = select;\n this.options = [];\n this.text = \"\";\n\n this.listElement = new Element(\"ul\", {\n \"id\": `${this.select.id}-options`, \"role\": \"listbox\", \"class\": \"hidden\"\n }).output();\n\n this.summaryElement = new Element(\"div\", {\n \"class\": \"visually-hidden\", \"role\": \"status\", \"aria-live\": \"polite\"\n }).output();\n\n var optionElements = this.select.getElementsByTagName(\"option\");\n for (var i = 0; i < optionElements.length; i++) {\n var option = new Option(optionElements[i]);\n this.options.push(option);\n\n if (option.isSelected()) { this.text = option.text; }\n option.addEventListener(\"select\", this.onOptionSelect.bind(this));\n\n this.listElement.appendChild(option.element);\n }\n\n this.listElement.addEventListener(\"keydown\", this.onKeyDown.bind(this));\n }\n\n addEventListener(type, block) {\n this.listElement.addEventListener(type, block);\n }\n\n filter(value) {\n for (var i = 0; i < this.options.length; i++) {\n this.options[i].toggle(value);\n }\n\n var visible = this.visibleCount();\n if (visible == 1) {\n this.summaryElement.innerText = `${visible} result available.`;\n } else {\n this.summaryElement.innerText = `${visible} results available.`;\n }\n }\n\n focus() {\n var highlighted = this.getOption(function(option) { return option.isHighlighted() });\n if (highlighted) {\n highlighted.focus();\n } else {\n var option = this.getOption(function(option) { return option.isVisible() });\n if (option) { option.focus(); }\n }\n }\n\n getNext(option) {\n var next = this.options[this.options.indexOf(option) + 1];\n\n if (next && next.isVisible()) {\n return next;\n } else if (next) {\n return this.getNext(next);\n } else {\n return null;\n }\n }\n\n getOption(block) {\n var boundBlock = block.bind(this);\n\n for (var i = 0; i < this.options.length; i++) {\n if (boundBlock(this.options[i])) { return this.options[i]; }\n }\n\n return null;\n }\n\n getPrevious(option) {\n var previous = this.options[this.options.indexOf(option) - 1];\n\n if (previous && previous.isVisible()) {\n return previous;\n } else if (previous) {\n return this.getPrevious(previous);\n } else {\n return null;\n }\n }\n\n hasMatch(value) {\n for (var i = 0; i < this.options.length; i++) {\n if (this.options[i].text.toLowerCase() == value.toLowerCase()) {\n return true;\n }\n }\n\n return false;\n }\n\n hasVisible() {\n for (var i = 0; i < this.options.length; i++) {\n if (this.options[i].isVisible()) { return true; }\n }\n\n return false;\n }\n\n hide() {\n this.listElement.classList.add(\"hidden\");\n\n var highlighted = this.getOption(function(option) { return option.isHighlighted(); });\n if (highlighted) { highlighted.unhighlight(); }\n }\n\n highlightNextOrFirst() {\n var highlighted = this.getOption(function(option) { return option.isHighlighted(); });\n if (highlighted) {\n if (this.isVisible()) { this.moveDown(highlighted); }\n return;\n }\n\n var first = this.getOption(function(option) { return option.isVisible(); });\n if (first) { first.highlight(); }\n }\n\n isVisible() {\n return !this.listElement.classList.contains(\"hidden\");\n }\n\n moveDown(highlighted) {\n if (highlighted) {\n highlighted.unhighlight();\n var next = this.getNext(highlighted);\n if (next) {\n next.highlight();\n this.scrollTo(next);\n }\n }\n }\n\n moveUp(highlighted) {\n if (highlighted) {\n highlighted.unhighlight();\n var previous = this.getPrevious(highlighted);\n if (previous) {\n previous.highlight();\n this.scrollTo(previous);\n }\n } else {\n this.releaseFocus();\n }\n }\n\n onKeyDown(event) {\n var highlighted = this.getOption(function(option) { return option.isHighlighted(); });\n\n switch (event.key) {\n case \"ArrowUp\":\n this.moveUp(highlighted);\n event.stopImmediatePropagation();\n event.preventDefault();\n break;\n case \"ArrowDown\":\n this.moveDown(highlighted);\n event.stopImmediatePropagation();\n event.preventDefault();\n break;\n case \"Enter\":\n if (highlighted) { this.selectOption(highlighted); }\n event.stopImmediatePropagation();\n event.preventDefault();\n break;\n case \" \":\n if (highlighted) { this.selectOption(highlighted); }\n break;\n case \"Escape\":\n this.hide();\n this.releaseFocus();\n break;\n case \"Tab\":\n this.hide();\n break;\n default:\n this.releaseFocus();\n }\n }\n\n onOptionSelect(event) {\n var option = event.detail.option;\n\n this.removeFilter();\n\n for (var i = 0; i < this.options.length; i++) {\n if (this.options[i] === option) {\n var listHeight = this.listElement.offsetHeight;\n var optionTop = this.options[i].element.offsetTop;\n var optionHeight = this.options[i].element.offsetHeight;\n\n if (this.listElement.scrollTop + listHeight < optionTop + optionHeight) {\n this.listElement.scrollTop = optionTop + optionHeight - 50;\n }\n } else {\n this.options[i].unselect();\n }\n }\n\n var event = new CustomEvent(\"select\", {\n detail: {text: option.text},\n bubbles: false,\n cancelable: false\n });\n this.listElement.dispatchEvent(event);\n\n this.hide();\n this.releaseFocus();\n }\n\n releaseFocus() {\n var event = new CustomEvent(\"focusout\", {\n bubbles: false,\n cancelable: false\n });\n this.listElement.dispatchEvent(event);\n }\n\n removeFilter() {\n for (var i = 0; i < this.options.length; i++) {\n this.options[i].show();\n }\n }\n\n scrollTo(option) {\n this.listElement.scrollTop = option.element.offsetTop - (3 * option.element.offsetHeight);\n }\n\n selectOption(option) {\n if (option) { option.select(); }\n\n this.hide();\n this.releaseFocus();\n }\n\n selectByText(text) {\n var option = this.getOption(function(option) { return option.text.toLowerCase() == text.toLowerCase() });\n\n this.selectOption(option);\n }\n\n selectFirst() {\n var option = this.getOption(function(option) { return option.isVisible() });\n\n this.selectOption(option);\n }\n\n show() {\n this.listElement.classList.remove(\"hidden\");\n\n var selected = this.getOption(function(option) { return option.isSelected() });\n if (selected) {\n selected.highlight();\n this.scrollTo(selected);\n } else {\n var first = this.getOption(function(option) { return option.isVisible(); });\n if (first) { first.highlight(); }\n }\n }\n\n visibleCount() {\n var visible = 0;\n for (var i = 0; i < this.options.length; i++) {\n if (this.options[i].isVisible()) { visible++; }\n }\n\n return visible;\n }\n}\n\nexport default OptionList;\n","import Element from \"../element\";\nimport OptionList from \"./option_list\";\n\nclass Autocomplete {\n constructor(select) {\n this.select = select;\n this.options = [];\n this.label = null;\n\n var labels = document.getElementsByTagName(\"label\");\n for (var i = 0; i < labels.length; i++) {\n if (labels[i].getAttribute(\"for\") == select.getAttribute(\"id\")) {\n this.label = labels[i];\n }\n }\n\n this.wrapper = new Element(\"div\", {\"class\": \"autocomplete\"}).output();\n\n this.input = new Element(\"input\", {\n \"id\": `${this.select.id}-input`,\n \"type\": \"text\",\n \"autocapitalize\": \"none\",\n \"autocomplete\": \"off\",\n \"role\": \"combobox\",\n \"aria-autocomplete\": \"list\",\n \"aria-expanded\": \"false\",\n \"aria-owns\": `${this.select.id}-options`\n }).output();\n this.wrapper.appendChild(this.input);\n\n const svgWrapper = new Element(\"span\", {\"class\": \"toggle\"}).output();\n\n const svg = new Element(\"svg\", {\n \"focusable\": \"false\",\n \"version\": \"1.1\",\n \"viewBox\": \"0 0 20 20\",\n \"fill\": \"currentColor\",\n \"aria-hidden\": \"true\"\n }).output();\n\n const path = new Element(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n \"d\": \"M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z\"\n }).output();\n svg.appendChild(path);\n svgWrapper.appendChild(svg);\n this.wrapper.appendChild(svgWrapper);\n\n this.optionList = new OptionList(this.select);\n this.wrapper.appendChild(this.optionList.listElement);\n this.wrapper.appendChild(this.optionList.summaryElement);\n\n this.optionList.addEventListener(\"focusout\", this.onListFocusOut.bind(this));\n this.optionList.addEventListener(\"select\", this.onListSelect.bind(this));\n\n this.input.value = this.optionList.text;\n\n this.label.setAttribute(\"for\", `${this.select.id}-input`);\n\n this.select.classList.add(\"visually-hidden\");\n this.select.setAttribute(\"aria-hidden\", \"true\");\n this.select.setAttribute(\"tabindex\", \"-1\");\n\n this.input.addEventListener(\"click\", this.onInputClick.bind(this));\n this.input.addEventListener(\"keydown\", this.onInputKeyDown.bind(this));\n this.input.addEventListener(\"keyup\", this.onInputKeyUp.bind(this));\n\n document.addEventListener(\"click\", this.onClickAnywhere.bind(this));\n\n this.select.parentNode.appendChild(this.wrapper);\n }\n\n onClickAnywhere(event) {\n if (!this.wrapper.contains(event.target)) { this.optionList.hide(); }\n }\n\n onDown(event) {\n var value = this.input.value.trim();\n\n if (value.length == 0 || this.optionList.hasMatch(value)) {\n this.optionList.removeFilter();\n } else {\n this.optionList.filter(value.toLowerCase());\n if (!this.optionList.hasVisible()) { return; }\n }\n\n if (this.optionList.isVisible()) {\n this.optionList.highlightNextOrFirst();\n } else {\n this.optionList.show();\n }\n this.optionList.focus();\n }\n\n onInputClick(event) {\n this.optionList.show();\n }\n\n onInputKeyDown(event) {\n switch (event.key) {\n case \"Enter\":\n if (!this.optionList.isVisible()) { return; }\n\n event.stopImmediatePropagation();\n event.preventDefault();\n\n if (this.optionList.visibleCount() == 1) { this.optionList.selectFirst(); }\n break;\n case \"Tab\":\n this.optionList.hide();\n break;\n }\n }\n\n onInputKeyUp(event) {\n switch (event.key) {\n case \"Escape\":\n case \"ArrowUp\":\n case \"ArrowLeft\":\n case \"ArrowRight\":\n case \" \":\n case \"Tab\":\n case \"Shift\":\n case \"Meta\":\n // ignore otherwise the menu will show\n break;\n case \"Enter\":\n if (this.optionList.isVisible()) { this.optionList.hide(); }\n break;\n case \"ArrowDown\":\n this.onDown(event);\n break;\n default:\n this.onType(event);\n }\n }\n\n onListFocusOut(event) {\n if (this.input === document.activeElement) { return; }\n\n this.input.focus();\n }\n\n onListSelect(event) {\n if (this.input.value != event.detail.text) {\n this.input.value = event.detail.text;\n }\n }\n\n onType(event) {\n var value = this.input.value.trim().toLowerCase();\n\n if (value.length > 0) {\n this.optionList.filter(value);\n this.optionList.show();\n } else {\n this.optionList.hide();\n }\n\n this.updateSelect();\n }\n\n updateSelect() {\n if (this.optionList.hasMatch(this.input.value)) {\n this.optionList.selectByText(this.input.value);\n }\n }\n}\n\nexport default Autocomplete;\n","class Item {\n constructor(item) {\n this.item = item;\n this.colour_id = this.item.getAttribute(\"data-colour-id\");\n this.colour_name = this.item.getAttribute(\"data-colour-name\");\n this.colour_hex = this.item.getAttribute(\"data-colour-hex\");\n\n this.addEventListener(\"click\", this.onClick.bind(this));\n this.addEventListener(\"mouseenter\", this.onEnter.bind(this));\n this.addEventListener(\"mouseleave\", this.onLeave.bind(this));\n }\n\n addEventListener(type, block) {\n this.item.addEventListener(type, block);\n }\n\n focus() {\n this.item.focus();\n }\n\n highlight() {\n this.item.classList.add(\"highlighted\");\n\n var event = new CustomEvent(\"highlight\", {\n detail: {item: this},\n bubbles: false,\n cancelable: false\n });\n this.item.dispatchEvent(event);\n }\n\n isHighlighted() {\n return this.item.classList.contains(\"highlighted\");\n }\n\n isSelected() {\n return this.item.selected;\n }\n\n onClick(event) {\n this.select();\n }\n\n onEnter(event) {\n this.highlight();\n }\n\n onLeave(event) {\n this.unhighlight();\n }\n\n select() {\n this.item.setAttribute(\"aria-selected\", \"true\");\n this.item.classList.add(\"selected\");\n this.item.selected = true;\n\n var event = new CustomEvent(\"select\", {\n detail: {item: this},\n bubbles: false,\n cancelable: false\n });\n this.item.dispatchEvent(event);\n\n this.item.focus();\n }\n\n unhighlight() {\n this.item.classList.remove(\"highlighted\");\n }\n\n unselect() {\n this.item.setAttribute(\"aria-selected\", \"false\");\n this.item.classList.remove(\"selected\");\n this.item.selected = false;\n }\n}\n\nexport default Item;\n","import Item from \"./item\"\n\nclass ItemList {\n constructor(list) {\n this.list = list;\n this.items = []\n\n var itemElements = this.list.querySelectorAll(\"li\");\n for (var i = 0; i < itemElements.length; i++) {\n var item = new Item(itemElements[i]);\n this.items.push(item);\n\n if (item.isSelected()) {\n this.text = item.text;\n }\n item.addEventListener(\"select\", this.onItemSelect.bind(this));\n item.addEventListener(\"highlight\", this.onItemHighlight.bind(this));\n }\n\n this.list.addEventListener(\"keydown\", this.onKeyDown.bind(this));\n }\n\n addEventListener(type, block) {\n this.list.addEventListener(type, block);\n }\n\n focus() {\n var highlighted = this.getItem(function(item) { return item.isHighlighted() });\n if (highlighted) {\n highlighted.focus();\n } else {\n var item = this.items[0]\n if (item) { item.focus(); }\n }\n }\n\n getNext(item) {\n var next = this.items[this.items.indexOf(item) + 1];\n\n if (next) {\n return next;\n } else {\n return null;\n }\n }\n\n getItem(block) {\n var boundBlock = block.bind(this);\n\n for (var i = 0; i < this.items.length; i++) {\n if (boundBlock(this.items[i])) { return this.items[i]; }\n }\n\n return null;\n }\n\n getPrevious(item) {\n var previous = this.items[this.items.indexOf(item) - 1];\n\n if (previous) {\n return previous;\n } else {\n return null;\n }\n }\n\n hasMatch(value) {\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].text.toLowerCase() == value.toLowerCase()) {\n return true;\n }\n }\n\n return false;\n }\n\n hide() {\n this.list.classList.add(\"hidden\");\n\n var highlighted = this.getItem(function(item) { return item.isHighlighted(); });\n if (highlighted) { highlighted.unhighlight(); }\n }\n\n highlightNextOrFirst() {\n var highlighted = this.getItem(function(item) { return item.isHighlighted(); });\n if (highlighted) {\n if (this.isVisible()) { this.moveDown(highlighted); }\n return;\n }\n\n var first = this.items[0];\n if (first) { first.highlight(); }\n }\n\n isVisible() {\n return !this.list.classList.contains(\"hidden\");\n }\n\n moveDown(highlighted) {\n if (highlighted) {\n highlighted.unhighlight();\n var next = this.getNext(highlighted);\n if (next) {\n next.highlight();\n this.scrollTo(next);\n }\n }\n }\n\n moveUp(highlighted) {\n if (highlighted) {\n highlighted.unhighlight();\n var previous = this.getPrevious(highlighted);\n if (previous) {\n previous.highlight();\n this.scrollTo(previous);\n }\n } else {\n this.releaseFocus();\n }\n }\n\n onKeyDown(event) {\n var highlighted = this.getItem(function(item) { return item.isHighlighted(); });\n\n switch (event.key) {\n case \"ArrowUp\":\n this.moveUp(highlighted);\n event.stopImmediatePropagation();\n event.preventDefault();\n break;\n case \"ArrowDown\":\n this.moveDown(highlighted);\n event.stopImmediatePropagation();\n event.preventDefault();\n break;\n case \"Enter\":\n if (highlighted) { this.selectItem(highlighted); }\n event.stopImmediatePropagation();\n event.preventDefault();\n break;\n case \" \":\n if (highlighted) { this.selectItem(highlighted); }\n break;\n case \"Escape\":\n this.hide();\n this.releaseFocus();\n break;\n case \"Tab\":\n this.hide();\n break;\n default:\n this.releaseFocus();\n }\n }\n\n onItemHighlight(event) {\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i] !== event.detail.item) {\n this.items[i].unhighlight();\n }\n }\n }\n\n onItemSelect(event) {\n var item = event.detail.item;\n\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i] === item) {\n var listHeight = this.list.offsetHeight;\n var itemTop = this.items[i].item.offsetTop;\n var itemHeight = this.items[i].item.offsetHeight;\n\n if (this.list.scrollTop + listHeight < itemTop + itemHeight) {\n this.list.scrollTop = itemTop + itemHeight - 50;\n }\n } else {\n this.items[i].unselect();\n }\n }\n\n var event = new CustomEvent(\"select\", {\n detail: {\n id: item.colour_id,\n name: item.colour_name,\n hex: item.colour_hex\n },\n bubbles: false,\n cancelable: false\n });\n this.list.dispatchEvent(event);\n\n this.hide();\n this.releaseFocus();\n }\n\n releaseFocus() {\n var event = new CustomEvent(\"focusout\", {\n bubbles: false,\n cancelable: false\n });\n this.list.dispatchEvent(event);\n }\n\n scrollTo(item) {\n this.list.scrollTop = item.item.offsetTop - (3 * item.item.offsetHeight);\n }\n\n selectById(id) {\n this.selectItem(\n this.getItem(function(item) { return item.colour_id === id })\n );\n }\n\n selectItem(item) {\n if (item) { item.select(); }\n\n this.hide();\n this.releaseFocus();\n }\n\n selectFirst() {\n this.selectItem(this.items[0]);\n }\n\n show() {\n this.list.classList.remove(\"hidden\");\n\n var selected = this.getItem(function(item) { return item.isSelected() });\n if (selected) {\n selected.highlight();\n this.scrollTo(selected);\n } else {\n var first = this.items[0];\n if (first) { first.highlight(); }\n }\n }\n}\n\nexport default ItemList;\n","import ItemList from \"./item_list\";\n\nclass ColourList {\n constructor(element) {\n this.element = element;\n this.itemList = new ItemList(this.element.querySelector(\"ul\"));\n this.input = this.element.querySelector(\"input[type=hidden]\");\n this.button = this.element.querySelector(\"button\");\n\n this.itemList.addEventListener(\"select\", this.onListSelect.bind(this));\n\n this.button.addEventListener(\"click\", this.onInputClick.bind(this));\n this.button.addEventListener(\"keydown\", this.onInputKeyDown.bind(this));\n this.button.addEventListener(\"keyup\", this.onInputKeyUp.bind(this));\n\n document.addEventListener(\"click\", this.onClickAnywhere.bind(this));\n\n this.itemList.selectById(this.input.value);\n }\n\n onClickAnywhere(event) {\n if (!this.element.contains(event.target)) { this.itemList.hide(); }\n }\n\n onDown(event) {\n if (this.itemList.isVisible()) {\n this.itemList.highlightNextOrFirst();\n } else {\n this.itemList.show();\n }\n this.itemList.focus();\n }\n\n onInputClick(event) {\n if (this.itemList.isVisible()) {\n this.itemList.hide();\n } else {\n this.itemList.show();\n }\n }\n\n onInputKeyDown(event) {\n switch (event.key) {\n case \"Enter\":\n if (!this.itemList.isVisible()) { return; }\n\n event.stopImmediatePropagation();\n event.preventDefault();\n\n if (this.itemList.visibleCount() == 1) { this.itemList.selectFirst(); }\n break;\n case \"Tab\":\n this.itemList.hide();\n break;\n }\n }\n\n onInputKeyUp(event) {\n switch (event.key) {\n case \"Escape\":\n case \"ArrowUp\":\n case \"ArrowLeft\":\n case \"ArrowRight\":\n case \" \":\n case \"Tab\":\n case \"Shift\":\n case \"Meta\":\n // ignore otherwise the menu will show\n break;\n case \"Enter\":\n if (this.itemList.isVisible()) { this.itemList.hide(); }\n break;\n case \"ArrowDown\":\n this.onDown(event);\n break;\n default:\n this.onType(event);\n }\n }\n\n onListSelect(event) {\n this.element.querySelector(\".selected-name\").innerText = event.detail.name;\n this.element.querySelector(\".selected-colour\").setAttribute(\"aria-label\", event.detail.name);\n this.element.querySelector(\".selected-colour\").style[\"background-color\"] = event.detail.hex;\n this.input.value = event.detail.id;\n }\n}\n\nexport default ColourList;\n","class Item {\n constructor(text) {\n this.text = text;\n this.element = this.createElement();\n\n this.element.querySelector(\"a\").addEventListener(\"click\", this.onClickRemove.bind(this));\n }\n\n createElement() {\n var li = document.createElement(\"li\");\n li.innerHTML = `\n
\n
\n
${ this.text }
\n
\n
\n Remove\n
\n
\n `;\n\n return li;\n }\n\n onClickRemove(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n\n var event = new CustomEvent(\"remove\", {\n detail: {value: this.text},\n bubbles: false,\n cancelable: false\n });\n this.element.dispatchEvent(event);\n }\n}\n\nexport default Item;\n","import Element from \"../element\";\nimport Item from \"./item\";\n\nclass MultiList {\n constructor(wrapper) {\n this.wrapper = wrapper;\n this.input = wrapper.querySelector(\"input\");\n this.label = wrapper.querySelector(\"label\");\n this.values = JSON.parse(this.input.value);\n\n this.input.classList.add(\"hidden\");\n\n this.list = new Element(\"ul\", {role: \"list\"}).output();\n\n for (var i = 0; i < this.values.length; i++) {\n var item = new Item(this.values[i]);\n this.list.appendChild(item.element);\n\n item.element.addEventListener(\"remove\", this.onRemove.bind(this));\n }\n\n this.wrapper.appendChild(this.list);\n\n this.appender = new Element(\"div\", {class: \"multi-list-appender\"}).output();\n this.appender.innerHTML = `\n \n \n \n `;\n this.appenderInput = this.appender.querySelector(\"input\");\n this.appenderButton = this.appender.querySelector(\"button\");\n\n this.appenderButton.addEventListener(\"click\", this.onClickAdd.bind(this));\n this.appenderInput.addEventListener(\"keydown\", this.onKeyDown.bind(this));\n\n this.wrapper.appendChild(this.appender);\n }\n\n onChange() {\n var changeEvent = new CustomEvent(\"change\");\n\n this.input.value = JSON.stringify(this.values);\n this.input.dispatchEvent(changeEvent);\n }\n\n onClickAdd(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n\n var newValue = this.appenderInput.value;\n if (newValue.trim().length === 0) {\n return;\n }\n\n this.values.push(newValue);\n\n var item = new Item(newValue);\n this.list.appendChild(item.element);\n\n item.element.addEventListener(\"remove\", this.onRemove.bind(this));\n\n this.onChange();\n }\n\n onKeyDown(event) {\n if (event.key === \"Enter\") {\n this.onClickAdd(event);\n }\n }\n\n onRemove(event) {\n event.target.parentNode.removeChild(event.target);\n\n var index = this.values.indexOf(event.detail.value);\n this.values.splice(index, 1);\n\n this.onChange();\n }\n}\n\nexport default MultiList;\n","import ColourList from \"../colour_list\";\n\nclass Item {\n constructor(option) {\n this.option = option;\n this.value = option.value;\n this.path = this.option.getAttribute(\"data-options-path\") || \"\";\n this.element = this.createElement();\n\n this.element.querySelector(\"a\").addEventListener(\"click\", this.onClickRemove.bind(this));\n\n this.appendOptions();\n }\n\n appendOptions() {\n if (this.path.length === 0) { return }\n\n var div = document.querySelector(`.multi-select-option[data-cache-id='${this.value}']`);\n if (div) { return; }\n\n var xmlhttp = new XMLHttpRequest();\n var self = this;\n\n xmlhttp.onreadystatechange = function() {\n if (xmlhttp.readyState == XMLHttpRequest.DONE) { self.onResponse(xmlhttp); }\n };\n\n xmlhttp.open(\"GET\", this.path);\n xmlhttp.send();\n }\n\n createElement() {\n var li = document.createElement(\"li\");\n li.innerHTML = `\n
\n
\n
${ this.option.innerText }
\n
${ this.option.parentNode.label }
\n
\n
\n Remove\n
\n
\n `;\n\n return li;\n }\n\n onClickRemove(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n\n var event = new CustomEvent(\"remove\", {\n detail: {value: this.option.value},\n bubbles: false,\n cancelable: false\n });\n this.element.dispatchEvent(event);\n }\n\n onResponse(xmlhttp) {\n if (xmlhttp.status == 200) {\n if (xmlhttp.responseText.trim().length > 0) {\n var div = document.createElement(\"div\");\n div.classList.add(\"multi-select-option\");\n div.setAttribute(\"data-cache-id\", this.value);\n div.innerHTML = xmlhttp.responseText;\n\n var colourLists = div.querySelectorAll(\".colour-list\");\n for (var i = 0; i < colourLists.length; i++) {\n new ColourList(colourLists[i]);\n }\n\n this.element.appendChild(div);\n }\n } else {\n throw new Error(`An error occurred while loading destination options for cache ${this.value}`);\n }\n }\n}\n\nexport default Item;\n","import Element from \"../element\";\nimport Item from \"./item\";\n\nclass MultiSelect {\n constructor(wrapper) {\n this.wrapper = wrapper;\n this.select = wrapper.querySelector(\"select\");\n this.label = wrapper.querySelector(\"label\");\n this.options = this.select.querySelectorAll(\"option\");\n\n this.select.classList.add(\"hidden\");\n this.label.classList.add(\"hidden\");\n\n this.emptyState = new Element(\"div\", {class: \"multi-select-empty\"}).output();\n this.emptyState.innerHTML = `\n \n \n \n
\n
No calendars have been selected
\n

Please choose from the list below.

\n
\n `;\n this.wrapper.appendChild(this.emptyState);\n\n this.list = new Element(\"ul\", {role: \"list\"}).output();\n\n for (var i = 0; i < this.options.length; i++) {\n if (this.options[i].selected) {\n var item = new Item(this.options[i]);\n this.list.appendChild(item.element);\n\n item.element.addEventListener(\"remove\", this.onRemove.bind(this));\n }\n }\n\n this.wrapper.appendChild(this.list);\n\n this.appender = new Element(\"div\", {class: \"multi-select-appender\"}).output();\n this.appender.innerHTML = `\n \n \n \n `;\n this.appenderSelect = this.appender.querySelector(\"select\");\n this.appenderButton = this.appender.querySelector(\"button\");\n\n this.appenderButton.addEventListener(\"click\", this.onClickAdd.bind(this));\n this.appenderSelect.addEventListener(\"keydown\", this.onKeyDown.bind(this));\n\n this.updateAppenderOptions();\n\n this.wrapper.appendChild(this.appender);\n }\n\n onChange() {\n var changeEvent = new CustomEvent(\"change\");\n this.select.dispatchEvent(changeEvent);\n\n this.updateAppenderOptions();\n }\n\n onClickAdd(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n\n var appenderOptions = this.appenderSelect.querySelectorAll(\"option\");\n var chosenValue = null;\n\n for (var i = 0; i < appenderOptions.length; i++) {\n if (appenderOptions[i].selected) {\n chosenValue = appenderOptions[i].value;\n }\n }\n\n if (chosenValue === null) {\n return;\n }\n\n for (var i = 0; i < this.options.length; i++) {\n if (this.options[i].value == chosenValue) {\n this.options[i].selected = true;\n\n var item = new Item(this.options[i]);\n this.list.appendChild(item.element);\n\n item.element.addEventListener(\"remove\", this.onRemove.bind(this));\n }\n }\n\n this.onChange();\n }\n\n onKeyDown(event) {\n if (event.key === \"Enter\") {\n this.onClickAdd(event);\n }\n }\n\n onRemove(event) {\n var value = event.detail.value;\n for (var i = 0; i < this.options.length; i++) {\n if (this.options[i].value === value) {\n this.options[i].selected = false;\n }\n }\n\n event.target.parentNode.removeChild(event.target);\n\n this.onChange();\n }\n\n updateAppenderOptions() {\n this.appenderSelect.innerHTML = this.select.innerHTML;\n\n var selectedValues = [];\n for (var i = 0; i < this.options.length; i++) {\n if (this.options[i].selected) {\n selectedValues.push(this.options[i].value);\n }\n }\n\n var appenderOptions = this.appenderSelect.querySelectorAll(\"option\");\n for (var i = 0; i < appenderOptions.length; i++) {\n if (selectedValues.includes(appenderOptions[i].value)) {\n appenderOptions[i].parentNode.removeChild(appenderOptions[i]);\n }\n }\n\n var appenderGroups = this.appenderSelect.querySelectorAll(\"optgroup\");\n for (var i = 0; i < appenderGroups.length; i++) {\n if (appenderGroups[i].querySelectorAll(\"option\").length === 0) {\n this.appenderSelect.removeChild(appenderGroups[i]);\n }\n }\n\n if (this.list.querySelectorAll(\"li\").length === 0) {\n this.emptyState.classList.remove(\"not-empty\");\n } else {\n this.emptyState.classList.add(\"not-empty\");\n }\n }\n}\n\nexport default MultiSelect;\n","class WorkflowSummaries {\n constructor() {\n var inputs = document.querySelectorAll(\"input, select\");\n for (var i = 0; i < inputs.length; i++) {\n inputs[i].addEventListener(\"change\", this.onChange.bind(this));\n }\n\n this.onChange(null);\n }\n\n onChange(event) {\n this.stepOne();\n this.stepTwo();\n this.stepThree();\n this.stepFour();\n }\n\n stepOne() {\n var step = document.getElementById(\"form-step-1\");\n var detail = step.querySelector(\".label-detail\");\n var input = step.querySelector(\"#workflow_label\");\n\n detail.innerText = input.value;\n }\n\n stepTwo() {\n var step = document.getElementById(\"form-step-2\");\n var detail = step.querySelector(\".label-detail\");\n var options = step.querySelectorAll(\"#workflow_source_cache_ids option\");\n var detailTexts = []\n\n for (var i = 0; i < options.length; i++) {\n if (options[i].selected) {\n detailTexts.push(options[i].innerText);\n }\n }\n\n if (detailTexts.length > 0) {\n detail.innerText = `Selected: ${ detailTexts.sort().join(\", \") }`;\n } else {\n detail.innerText = `Selected: (none)`;\n }\n }\n\n stepThree() {\n var step = document.getElementById(\"form-step-3\");\n var detail = step.querySelector(\".label-detail\");\n var options = step.querySelectorAll(\"#workflow_destination_cache_ids option\");\n var detailTexts = []\n\n for (var i = 0; i < options.length; i++) {\n if (options[i].selected) {\n detailTexts.push(options[i].innerText);\n }\n }\n\n if (detailTexts.length > 0) {\n detail.innerText = `Selected: ${ detailTexts.sort().join(\", \") }`;\n } else {\n detail.innerText = `Selected: (none)`;\n }\n }\n\n stepFour() {\n var step = document.getElementById(\"form-step-4\");\n var detail = step.querySelector(\".label-detail\");\n var notes = [];\n\n if (step.querySelector(\"#workflow_filters\") && JSON.parse(step.querySelector(\"#workflow_filters\").value).length > 0) {\n notes.push(\"filter by event names\");\n }\n\n if (step.querySelector(\"#workflow_deidentified\").checked) {\n notes.push(\"redact details\");\n }\n\n if (!step.querySelector(\"#workflow_keep_changes\").checked) {\n notes.push(\"override changes\");\n }\n\n if (!step.querySelector(\"#workflow_timed_events\").checked) {\n notes.push(\"exclude timed events\");\n }\n\n if (step.querySelector(\"#workflow_all_day_events\").checked) {\n notes.push(\"include all-day events\");\n }\n\n if (step.querySelector(\"#workflow_free_events\").checked) {\n notes.push(\"include non-busy events\");\n }\n\n if (step.querySelector(\"#workflow_tentative_events\").checked) {\n notes.push(\"include tentative events\");\n }\n\n if (step.querySelector(\"#workflow_day_rule_filters\").checked) {\n notes.push(\"filter by days/times\");\n }\n\n if (notes.length > 0) {\n var text = notes.join(\", \");\n detail.innerText = text[0].toUpperCase() + text.substring(1);\n } else {\n detail.innerText = \"(none)\";\n }\n }\n}\n\nexport default WorkflowSummaries;\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\nimport Rails from \"@rails/ujs\";\nimport Turbolinks from \"turbolinks\";\nimport \"stylesheets/application.css\";\nimport ClipboardJS from \"clipboard\";\n\nimport Autocomplete from \"./autocomplete\";\nimport ColourList from \"./colour_list\";\nimport MultiList from \"./multi_list\";\nimport MultiSelect from \"./multi_select\";\nimport WorkflowSummaries from \"./workflow-summaries\";\n\nimport \"images/home.png\";\nimport \"images/work-one.png\";\nimport \"images/work-two.png\";\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n var clipboard = new ClipboardJS(\".clipboard\");\n clipboard.on('success', function(e) {\n document.querySelector(\".clipboard\").setAttribute(\"data-clipboard-state\", \"success\");\n\n e.clearSelection();\n\n setTimeout(function() {\n document.querySelector(\".clipboard\").setAttribute(\"data-clipboard-state\", \"initial\");\n }, 5000);\n });\n\n var userMenuButton = document.getElementById(\"user-menu-button\");\n var userMenu = document.getElementById(\"user-menu\");\n\n if (userMenuButton != null) {\n userMenuButton.addEventListener(\"click\", event => {\n userMenu.classList.toggle(\"hidden\");\n });\n }\n\n var mobileMenu = document.getElementById(\"mobile-menu\");\n var mobileMenuButton = document.getElementById(\"mobile-menu-button\");\n var mobileMenuOpen = document.getElementById(\"mobile-menu-open\");\n var mobileMenuClose = document.getElementById(\"mobile-menu-close\");\n\n if (mobileMenuButton != null) {\n mobileMenuButton.addEventListener(\"click\", event => {\n mobileMenuOpen.classList.toggle(\"hidden\");\n mobileMenuOpen.classList.toggle(\"block\");\n\n mobileMenuClose.classList.toggle(\"hidden\");\n mobileMenuClose.classList.toggle(\"block\");\n\n mobileMenu.classList.toggle(\"hidden\");\n });\n }\n\n var deidentifiedCheckbox = document.getElementById(\"workflow_deidentified\");\n var summaryField = document.getElementsByClassName(\"workflow_event_summary\")[0];\n\n if (deidentifiedCheckbox != null) {\n function toggleSummary() {\n if (deidentifiedCheckbox.checked) {\n summaryField.classList.remove(\"hidden\");\n } else {\n summaryField.classList.add(\"hidden\");\n }\n }\n\n deidentifiedCheckbox.addEventListener(\"change\", toggleSummary);\n toggleSummary();\n }\n\n var dayRulesCheckbox = document.getElementById(\"workflow_day_rule_filters\");\n var dayRulesBox = document.getElementById(\"day-rules\");\n\n if (dayRulesCheckbox != null) {\n function toggleRules() {\n if (dayRulesCheckbox.checked) {\n dayRulesBox.classList.remove(\"hidden\");\n } else {\n dayRulesBox.classList.add(\"hidden\");\n }\n }\n\n dayRulesCheckbox.addEventListener(\"change\", toggleRules);\n toggleRules();\n }\n\n const days = [\"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\"];\n function handleDayChange(day) {\n var dayCheckbox = document.getElementById(`workflow_${day}`);\n var startInput = document.getElementById(`workflow_${day}_start`);\n var endInput = document.getElementById(`workflow_${day}_end`);\n\n if (dayCheckbox != null) {\n function toggleDay() {\n startInput.disabled = !dayCheckbox.checked;\n endInput.disabled = !dayCheckbox.checked;\n }\n\n dayCheckbox.addEventListener(\"change\", toggleDay);\n toggleDay();\n }\n }\n\n for (var i = 0; i < days.length; i++) {\n handleDayChange(days[i]);\n }\n\n function handleToggle(button) {\n var identifier = button.getAttribute(\"aria-controls\");\n var answer = document.getElementById(identifier);\n var toggle = document.getElementById(`toggle-${identifier}`);\n\n function adjustDisplay() {\n if (button.getAttribute(\"aria-expanded\") == \"false\") {\n answer.classList.add(\"hidden\");\n toggle.setAttribute(\"aria-hidden\", \"true\");\n toggle.classList.add(\"rotate-0\");\n toggle.classList.remove(\"-rotate-180\");\n } else {\n answer.classList.remove(\"hidden\");\n toggle.setAttribute(\"aria-hidden\", \"false\");\n toggle.classList.remove(\"rotate-0\");\n toggle.classList.add(\"-rotate-180\");\n }\n }\n\n button.addEventListener(\"click\", function() {\n if (button.getAttribute(\"aria-expanded\") == \"false\") {\n button.setAttribute(\"aria-expanded\", \"true\");\n } else {\n button.setAttribute(\"aria-expanded\", \"false\");\n }\n\n adjustDisplay();\n });\n\n adjustDisplay();\n }\n\n var togglers = document.getElementsByClassName(\"toggle-button\");\n for (var i = 0; i < togglers.length; i++) {\n handleToggle(togglers[i]);\n }\n\n var timeZoneSelects = document.querySelectorAll(\"select.time_zone\");\n for (var i = 0; i < timeZoneSelects.length; i++) {\n new Autocomplete(timeZoneSelects[i]);\n }\n\n var colourLists = document.querySelectorAll(\".colour-list\");\n for (var i = 0; i < colourLists.length; i++) {\n new ColourList(colourLists[i]);\n }\n\n var subscriptionMode = document.getElementById(\"subscription_mode\");\n var organisationField = document.querySelector(\"div.subscription_organisation_id\");\n var applyField = document.querySelector(\"div.subscription_apply\");\n\n if (organisationField != null) {\n function subModeChange() {\n var options = subscriptionMode.querySelectorAll(\"option\");\n for (var i = 0; i < options.length; i++) {\n if (options[i].selected && options[i].value == \"organisation\") {\n organisationField.classList.remove(\"hidden\");\n applyField.classList.remove(\"hidden\");\n } else {\n organisationField.classList.add(\"hidden\");\n applyField.classList.add(\"hidden\");\n }\n }\n }\n\n subscriptionMode.addEventListener(\"change\", subModeChange);\n\n subModeChange();\n }\n\n var workflowForm = document.querySelector(\".edit_workflow, .new_workflow\");\n if (workflowForm) {\n new WorkflowSummaries();\n }\n\n var multiLists = document.querySelectorAll(\"div.multi-list\");\n for (var i = 0; i < multiLists.length; i++) {\n new MultiList(multiLists[i]);\n }\n\n var multiSelects = document.querySelectorAll(\"div.multi-select\");\n for (var i = 0; i < multiSelects.length; i++) {\n new MultiSelect(multiSelects[i]);\n }\n\n var accountProviderSelect = document.getElementById(\"account_provider\");\n\n if (accountProviderSelect != null) {\n var googleAdvancedButton = document.getElementById(\"google-advanced-button\");\n var microsoftAdvancedButton = document.getElementById(\"microsoft-advanced-button\");\n\n function providerChange() {\n var options = accountProviderSelect.querySelectorAll(\"option\");\n for (var i = 0; i < options.length; i++) {\n if (options[i].selected && options[i].value == \"google\") {\n googleAdvancedButton.classList.remove(\"hidden\");\n microsoftAdvancedButton.classList.add(\"hidden\");\n } else if (options[i].selected && options[i].value == \"microsoft\") {\n googleAdvancedButton.classList.add(\"hidden\");\n microsoftAdvancedButton.classList.remove(\"hidden\");\n }\n }\n }\n\n accountProviderSelect.addEventListener(\"change\", providerChange);\n providerChange();\n }\n});\n\nRails.start()\nTurbolinks.start()\n","class Element {\n constructor(tag, attributes) {\n this.tag = tag;\n this.attributes = attributes;\n }\n\n createElement() {\n switch (this.tag) {\n case \"svg\":\n case \"path\":\n return document.createElementNS(\"http://www.w3.org/2000/svg\", this.tag);\n default:\n return document.createElement(this.tag);\n }\n }\n\n output() {\n var element = this.createElement();\n\n for (const key in this.attributes) {\n switch (key) {\n case \"class\":\n element.classList.add(this.attributes[key]);\n break;\n case \"innerText\":\n element.innerText = this.attributes[key];\n break;\n case \"value\":\n element.value = this.attributes[key];\n break;\n default:\n element.setAttribute(key, this.attributes[key]);\n }\n }\n\n return element;\n }\n}\n\nexport default Element;\n"],"names":["Option","option","this","text","innerText","alt","getAttribute","element","createElement","addEventListener","onClick","bind","onEnter","onLeave","type","block","listOption","Element","selected","value","output","classList","add","optionLabel","appendChild","optionCheck","optionSVG","path","append","focus","hide","highlight","isHighlighted","contains","isSelected","isVisible","event","select","unhighlight","setAttribute","CustomEvent","detail","bubbles","cancelable","dispatchEvent","show","remove","toggle","inputValue","toLowerCase","indexOf","unselect","OptionList","options","listElement","id","summaryElement","optionElements","getElementsByTagName","i","length","push","onOptionSelect","onKeyDown","filter","visible","visibleCount","highlighted","getOption","getNext","next","boundBlock","getPrevious","previous","hasMatch","hasVisible","highlightNextOrFirst","moveDown","first","scrollTo","moveUp","releaseFocus","key","stopImmediatePropagation","preventDefault","selectOption","removeFilter","listHeight","offsetHeight","optionTop","offsetTop","optionHeight","scrollTop","selectByText","selectFirst","Autocomplete","label","labels","document","wrapper","input","svgWrapper","svg","optionList","onListFocusOut","onListSelect","onInputClick","onInputKeyDown","onInputKeyUp","onClickAnywhere","parentNode","target","onDown","trim","onType","activeElement","updateSelect","Item","item","colour_id","colour_name","colour_hex","ItemList","list","items","itemElements","querySelectorAll","onItemSelect","onItemHighlight","getItem","selectItem","itemTop","itemHeight","name","hex","selectById","ColourList","itemList","querySelector","button","style","onClickRemove","li","innerHTML","MultiList","values","JSON","parse","role","onRemove","appender","class","appenderInput","appenderButton","onClickAdd","onChange","changeEvent","stringify","newValue","removeChild","index","splice","appendOptions","xmlhttp","XMLHttpRequest","self","onreadystatechange","readyState","DONE","onResponse","open","send","status","Error","responseText","div","colourLists","MultiSelect","emptyState","appenderSelect","updateAppenderOptions","appenderOptions","chosenValue","selectedValues","includes","appenderGroups","WorkflowSummaries","inputs","stepOne","stepTwo","stepThree","stepFour","step","getElementById","detailTexts","sort","join","notes","checked","toUpperCase","substring","ClipboardJS","on","e","clearSelection","setTimeout","userMenuButton","userMenu","mobileMenu","mobileMenuButton","mobileMenuOpen","mobileMenuClose","deidentifiedCheckbox","summaryField","getElementsByClassName","toggleSummary","dayRulesCheckbox","dayRulesBox","toggleRules","days","handleDayChange","day","dayCheckbox","startInput","endInput","toggleDay","disabled","handleToggle","identifier","answer","adjustDisplay","togglers","timeZoneSelects","subscriptionMode","organisationField","applyField","subModeChange","multiLists","multiSelects","accountProviderSelect","providerChange","googleAdvancedButton","microsoftAdvancedButton","Rails","start","Turbolinks","tag","attributes","createElementNS"],"sourceRoot":""}