{"version":3,"file":"application-aSXr6pKi.js","sources":["../../../app/javascript/channels/consumer.js","../../../app/javascript/controllers/accounts_controller.js","../../../app/javascript/controllers/application_controller.js","../../../app/javascript/controllers/autogrow_controller.js","../../../app/javascript/controllers/braintree_controller.js","../../../app/javascript/controllers/bulk_controller.js","../../../app/javascript/controllers/cleave_controller.js","../../../app/javascript/controllers/clipboard_controller.js","../../../app/javascript/controllers/cmd_enter_controller.js","../../../app/javascript/controllers/command_palette_controller.js","../../../app/javascript/controllers/cropper_controller.js","../../../app/javascript/controllers/datepicker_controller.js","../../../app/javascript/controllers/disable_submission_controller.js","../../../app/javascript/controllers/drag_drop_student_room_controller.js","../../../app/javascript/controllers/dropdown_controller.js","../../../app/javascript/controllers/enrollment_guardians_search_controller.js","../../../app/javascript/controllers/example_controller.js","../../../app/javascript/controllers/fix_dropdown_position_controller.js","../../../app/javascript/controllers/form_validation_controller.js","../../../app/javascript/controllers/infinite_scroll_controller.js","../../../app/javascript/controllers/instant_upload_controller.js","../../../app/javascript/controllers/link_element_controller.js","../../../app/javascript/controllers/mentions_controller.js","../../../app/javascript/controllers/notification_toast_controller.js","../../../app/javascript/controllers/notifications_controller.js","../../../app/javascript/controllers/pricing_controller.js","../../../app/javascript/controllers/program_room_selects_controller.js","../../../app/javascript/controllers/remote_tom_select_controller.js","../../../app/javascript/controllers/reset_form_controller.js","../../../app/javascript/controllers/room_schedule_controller.js","../../../app/javascript/controllers/select_filter_controller.js","../../../app/javascript/controllers/select_redirect_controller.js","../../../app/javascript/controllers/signature_controller.js","../../../app/javascript/controllers/start_end_date_filter_controller.js","../../../app/javascript/controllers/student_list_actions_controller.js","../../../app/javascript/controllers/submit_on_change_controller.js","../../../app/javascript/controllers/tagify_controller.js","../../../app/javascript/controllers/test_controller.js","../../../app/javascript/controllers/toggle_button_controller.js","../../../app/javascript/controllers/toggler_controller.js","../../../app/javascript/controllers/tom_select_assign_controller.js","../../../app/javascript/controllers/tooltip_controller.js","../../../app/javascript/controllers/turbo_native/sign_out_controller.js","../../../app/javascript/controllers/zui/accent_controller.js","../../../app/javascript/controllers/zui/collapsible_controller.js","../../../app/javascript/controllers/zui/dropdown_controller.js","../../../app/javascript/controllers/zui/message_controller.js","../../../app/javascript/controllers/zui/modal_controller.js","../../../app/javascript/controllers/zui/proxy_controller.js","../../../app/javascript/controllers/zui/swipe_controller.js","../../../app/javascript/controllers/zui/switch_controller.js","../../../app/javascript/controllers/zui/tab_panel_controller.js","../../../app/javascript/controllers/zui/theme_controller.js","../../../app/javascript/controllers/zui/toast_controller.js","../../../app/javascript/controllers/zui/tooltip_controller.js","../../../app/components/global/search/controller.js","../../../app/components/layouts/header/controller.js","../../../app/components/layouts/sidebar/controller.js","../../../app/components/time_machine/controller.js","../../../app/javascript/controllers/application.js","../../../app/javascript/controllers/index.js","../../../app/javascript/config/cable_ready.js","../../../app/javascript/config/stimulus_reflex.js","../../../app/javascript/src/textarea_auto_grow.js","../../../app/javascript/entrypoints/application.js"],"sourcesContent":["// 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","// Reconnect ActionCable after switching accounts\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport consumer from \"../channels/consumer\"\n\nexport default class extends Controller {\n reconnect(event) {\n if (consumer.connection.isActive()) {\n consumer.connection.reopen()\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport StimulusReflex from 'stimulus_reflex'\n\n// This is the Stimulus ApplicationController.\n// All StimulusReflex controllers should inherit from this class.\n//\n// Example:\n//\n// import ApplicationController from './application_controller'\n//\n// export default class extends ApplicationController { ... }\n//\n// Learn more at: https://docs.stimulusreflex.com\n//\n\nexport default class extends Controller {\n connect () {\n StimulusReflex.register(this)\n }\n\n // Application-wide lifecycle methods\n //\n // Use these methods to handle lifecycle callbacks for all controllers.\n // Using lifecycle methods is optional, so feel free to delete these if you don't need them.\n //\n // Arguments:\n //\n // element - the element that triggered the reflex\n // may be different than the Stimulus controller's this.element\n //\n // reflex - the name of the reflex e.g. \"Example#demo\"\n //\n // error/noop - the error message (for reflexError), otherwise null\n //\n // id - a UUID4 or developer-provided unique identifier for each Reflex\n //\n\n beforeReflex (element, reflex, noop, id) {\n // document.body.classList.add('wait')\n }\n\n reflexQueued (element, reflex, noop, id) {\n // Reflex will be delivered to server upon reconnection\n }\n\n reflexDelivered (element, reflex, noop, id) {\n // Reflex has been delivered to the server\n }\n\n reflexSuccess (element, reflex, noop, id) {\n // show success message\n }\n\n reflexError (element, reflex, error, id) {\n // show error message\n }\n\n reflexForbidden (element, reflex, noop, id) {\n // Reflex action did not have permission to run\n // window.location = '/'\n }\n\n reflexHalted (element, reflex, noop, id) {\n // handle aborted Reflex action\n }\n\n afterReflex (element, reflex, noop, id) {\n // document.body.classList.remove('wait')\n }\n\n finalizeReflex (element, reflex, noop, id) {\n // all operations have completed, animation etc is now safe\n }\n}\n","// Autogrows textareas based on content\n//\n// Example Usage:\n// <%= form.text_area :value, data: {controller: \"autogrow\", action: \"input->autogrow#autogrow\"} %>\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.autogrow()\n }\n\n autogrow() {\n this.element.style.height = 'auto';\n this.element.style.height = `${this.element.scrollHeight}px`;\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"dropin\", \"form\" ]\n\n connect() {\n braintree.dropin.create({\n authorization: this.data.get(\"clientToken\"),\n container: this.dropinTarget,\n //threeDSecure: true,\n paypal: {\n flow: \"vault\"\n },\n // Uncomment this to only display PayPal in the Drop-in UI\n //paymentOptionPriority: ['paypal']\n },\n this.clientCreated.bind(this)\n )\n }\n\n clientCreated(error, instance) {\n if (error) {\n console.error(\"Error setting up Braintree dropin:\", error)\n return\n }\n\n this.instance = instance\n }\n\n submit(event) {\n event.preventDefault()\n\n this.instance.requestPaymentMethod(this.paymentMethod.bind(this))\n }\n\n paymentMethod(error, payload) {\n if (error) {\n console.error(\"Error with payment method:\", error)\n return\n }\n\n this.addHiddenField(\"processor\", \"braintree\")\n this.addHiddenField(\"payment_method_token\", payload.nonce)\n\n Rails.fire(this.formTarget, \"submit\")\n }\n\n addHiddenField(name, value) {\n let hiddenInput = document.createElement(\"input\")\n hiddenInput.setAttribute(\"type\", \"hidden\")\n hiddenInput.setAttribute(\"name\", name)\n hiddenInput.setAttribute(\"value\", value)\n this.formTarget.appendChild(hiddenInput)\n }\n}\n","// The BulkController can be used for adding bulk operations to your index views.\n// You can add a Select All checkbox and checkboxes for each record and easily grab\n// the selected records.\n//\n// Usage:\n//\n// import BulkController from \"controllers/bulk_controller\"\n//\n// export default class extends BulkController {\n// }\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\tstatic targets = [ \"checkbox\", \"selectAll\" ]\n\n // Toggles all checkboxes based upon what is currently checked\n toggleSelectAll(event) {\n (!this.allCheckboxesSelected) ? this.selectAll() : this.unselectAll()\n }\n\n // Selects all checkboxes\n selectAll() {\n this.selectAllTarget.checked = true\n this.selectAllTarget.indeterminate = false\n this.unselected.forEach(target => target.checked = true)\n }\n\n // Unselects all checkboxes\n unselectAll() {\n this.selectAllTarget.checked = false\n this.selectAllTarget.indeterminate = false\n this.selected.forEach(target => target.checked = false)\n }\n\n // Keep track of SelectAll state based upon how many checkboxes are selected\n change(event) {\n if (this.noCheckboxesSelected) {\n this.selectAllTarget.checked = false\n this.selectAllTarget.indeterminate = false\n\n } else if (this.allCheckboxesSelected) {\n this.selectAllTarget.checked = true\n this.selectAllTarget.indeterminate = false\n\n } else {\n this.selectAllTarget.indeterminate = true\n }\n }\n\n // Returns true if Select All checkbox is checked\n get selectedAll() {\n return this.selectAllTarget.checked\n }\n\n // Returns all selected checkboxes\n get selected() {\n return this.checkboxTargets.filter(target => target.checked)\n }\n\n // Returns all unselected checkboxes\n get unselected() {\n return this.checkboxTargets.filter(target => !target.checked)\n }\n\n // Returns data-id attributes for all selected checkboxes\n get selectedIds() {\n return this.selected.map(target => target.dataset.id)\n }\n\n // Returns true if all checkboxes are checked\n get allCheckboxesSelected() {\n return this.checkboxTargets.every(target => target.checked)\n }\n\n // Returns true if no checkboxes are checked\n get noCheckboxesSelected() {\n return this.checkboxTargets.every(target => !target.checked)\n }\n}\n","// Format your content when you are typing with Cleave.js\n//\n// Example Usage:\n// <%= form.text_field :phone, data: {\n// controller: \"cleave\",\n// cleave_options_value: {\n// numeral: true,\n// numeralIntegerScale: 4,\n// numeralDecimalScale: 0,\n// numeralPositiveOnly: true}.to_json\n// } %>\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport Cleave from 'cleave.js'\nimport 'cleave.js/dist/addons/cleave-phone.us'\n\nexport default class extends Controller {\n static values = { options: Object, digits: Number }\n\n connect() {\n console.log(this.optionsValue)\n this.cleave = new Cleave(this.element, this.optionsValue)\n if (this.hasDigitsValue) {\n this.element.addEventListener('beforeinput', this.inputHandler)\n this.element.addEventListener('paste', this.pasteHandler)\n }\n }\n\n disconnect() {\n this.cleave.destroy()\n if (this.hasDigitsValue) {\n this.element.removeEventListener('beforeinput', this.inputHandler)\n this.element.removeEventListener('paste', this.pasteHandler)\n }\n }\n\n inputHandler = event => {\n if (\n String(this.element.value).length >= this.digitsValue &&\n event.inputType === 'insertText'\n )\n event.preventDefault()\n }\n\n pasteHandler = event => {\n if (\n String(event.clipboardData.getData('text')).length >= this.digitsValue\n ) {\n event.preventDefault()\n }\n }\n}\n","// Copy text to clipboard with tippy.js\n//\n// Example Usage:\n// <%= button_tag \"Copy\", data: {controller: \"clipboard\", clipboard_text: \"Hello, world!\"} %>\n// or\n// <%= button_tag \"Copy\", data: {controller: \"clipboard\", clipboard_target: \"#dom_id\"} %>\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport ClipboardJS from \"clipboard\"\nimport tippy from \"tippy.js\";\n\nexport default class extends Controller {\n static values = {\n successMessage: String,\n errorMessage: String\n }\n\n connect() {\n this.clipboard = new ClipboardJS(this.element)\n this.clipboard.on(\"success\", (e) => this.tooltip(this.successMessage))\n this.clipboard.on(\"error\", (e) => this.tooltip(this.errorMessage))\n }\n\n tooltip(message) {\n tippy(this.element, {\n content: message,\n showOnCreate: true,\n onHidden: (instance) => {\n instance.destroy()\n }\n })\n }\n\n get successMessage() {\n return this.successMessageValue || \"Copied!\"\n }\n\n get errorMessage() {\n return this.errorMessageValue || \"Failed!\"\n }\n}\n","// Submit form when the user presses CMD+Enter\n//\n// Example Usage:\n// <%= form_with url: \"/\", data: {controller: \"cmd-enter\"} do %>\n// <%= text_field_tag :search, nil, data: { cmd_enter_target: \"input\" } %>\n// <%= submit_tag \"Search\", data: { cmd_enter_target: \"submit\" } %>\n// <% end %>\n\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\", \"submit\"];\n\n submit(event) {\n if (!((event.metaKey || event.ctrlKey || event.keyCode == 91 || event.keyCode == 93) && event.keyCode == 13))\n return;\n\n this.submitTarget.click()\n }\n}\n","// Customizable command palette for advanced users\n// Opens with cmd+k or ctrl+k by default\n// https://github.com/excid3/ninja-keys\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport \"@gorails/ninja-keys\"\n\nexport default class extends Controller {\n connect() {\n this.element.data = [\n {\n id: \"Home\",\n title: \"Home\",\n hotkey: \"ctrl+H\",\n icon: '',\n handler: () => {\n Turbo.visit(\"/\")\n }\n },\n {\n id: \"Accounts\",\n title: \"Accounts\",\n hotkey: \"ctrl+A\",\n icon: '',\n handler: () => {\n Turbo.visit(\"/accounts\")\n }\n },\n {\n id: \"Profile\",\n title: \"Profile\",\n hotkey: \"ctrl+P\",\n icon: '',\n handler: () => {\n Turbo.visit(\"/users/edit\")\n }\n },\n {\n id: \"Notifications\",\n title: \"Notifications\",\n hotkey: \"ctrl+N\",\n icon: '',\n handler: () => {\n Turbo.visit(\"/notifications\")\n }\n },\n ];\n }\n}\n","// Crop images with cropperjs\n//\n// Example Usage:\n// Example Usage:\n//\n// <%= tag.div data: {\n// controller: \"cropper\",\n// cropper_circle_value: true,\n// cropper_aspect_ratio_value: 1\n// } do %>\n// <%= image_tag \"path/to/image.jpg\", data: { cropper_target: \"image\" } %>\n// <% end %>\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport Cropper from \"cropperjs\"\n\nexport default class extends Controller {\n static targets = [\"image\"]\n static values = { model: String }\n\n static values = {\n model: String,\n viewMode: { type: Number, default: 1 },\n dragMode: { type: String, default: 'crop' },\n circle: { type: Boolean, default: false },\n aspectRatio: { type: String, default: \"\" }\n }\n\n connect() {\n if (this.circleValue) {\n let style = document.createElement('style')\n style.innerHTML = '.cropper-view-box, .cropper-face { border-radius: 50% !important; }'\n style.innerHTML += '.cropper-view-box { outline: 0; box-shadow: 0 0 0 1px #39f; }'\n document.head.appendChild(style)\n }\n\n let style = document.createElement('style')\n style.innerHTML = '.cropper-bg { background-image: none !important; } .cropper-modal { background-color: rgba(0,0,0,0) !important; }'\n document.head.appendChild(style)\n\n this.data.set(\"has-image\", this.imageTarget.src != \"\")\n }\n\n changed() {\n let _this = this\n const cropper = new Cropper(this.imageTarget, {\n crop(event) {\n _this.crop_x().value = event.detail.x\n _this.crop_y().value = event.detail.y\n _this.crop_width().value = event.detail.width\n _this.crop_height().value = event.detail.height\n },\n aspectRatio: _this.aspectRatioValue,\n viewMode: _this.viewModeValue,\n dragMode: _this.dragModeValue,\n responsive: true\n })\n\n this.data.set(\"has-image\", this.imageTarget.src != \"\")\n\n // Set initial values\n this.crop_x().value = cropper.x\n this.crop_y().value = cropper.y\n this.crop_width().value = cropper.width\n this.crop_height().value = cropper.height\n }\n\n crop_x() {\n if (this._crop_x == undefined) {\n this._crop_x = document.createElement(\"input\")\n this._crop_x.name = `${this.modelValue}[crop_x]`\n this._crop_x.type = \"hidden\"\n this.imageTarget.parentNode.insertBefore(this._crop_x, this.imageTarget.nextSibling)\n }\n return this._crop_x\n }\n\n crop_y() {\n if (this._crop_y == undefined) {\n this._crop_y = document.createElement(\"input\")\n this._crop_y.name = `${this.modelValue}[crop_y]`\n this._crop_y.type = \"hidden\"\n this.imageTarget.parentNode.insertBefore(this._crop_y, this.imageTarget.nextSibling)\n }\n return this._crop_y\n }\n\n crop_width() {\n if (this._crop_width == undefined) {\n this._crop_width = document.createElement(\"input\")\n this._crop_width.name = `${this.modelValue}[crop_width]`\n this._crop_width.type = \"hidden\"\n this.imageTarget.parentNode.insertBefore(this._crop_width, this.imageTarget.nextSibling)\n }\n return this._crop_width\n }\n\n crop_height() {\n if (this._crop_height == undefined) {\n this._crop_height = document.createElement(\"input\")\n this._crop_height.name = `${this.modelValue}[crop_height]`\n this._crop_height.type = \"hidden\"\n this.imageTarget.parentNode.insertBefore(this._crop_height, this.imageTarget.nextSibling)\n }\n return this._crop_height\n }\n\n}\n","// Improved Flatpickr supporting arbitrary date parsing\n//\n// Example Usage:\n// <%= text_field_tag \"date\", nil, data: { controller: \"datepicker\" } %>\n\nimport Flatpickr from \"stimulus-flatpickr\";\nimport dayjs from \"dayjs\";\n\nexport default class extends Flatpickr {\n static values = {\n submitOnChange: { type: Boolean, default: false },\n selectOnFocus: { type: Boolean, default: true },\n swallowPaste: { type: Boolean, default: true }\n }\n\n initialize() {\n this.config = {\n parseDate: (dateString) => {\n if (dateString && dateString.length > 0) {\n let parsed = dayjs(dateString);\n if (parsed.isValid()) return parsed.toDate();\n }\n }\n }\n\n if (!this.element.hasAttribute(\"autocomplete\"))\n this.element.setAttribute(\"autocomplete\", \"off\");\n }\n\n connect() {\n super.connect();\n const _this = this;\n\n setTimeout(() => {\n _this.visibleInput = _this.fp.input.nextElementSibling;\n if (!_this.visibleInput || _this.visibleInput.type !== 'text') {\n _this.visibleInput = null;\n return\n }\n\n if (_this.selectOnFocusValue) {\n _this.visibleInput.addEventListener(\"focus\", () => {\n _this.visibleInput.select();\n });\n }\n\n if (_this.swallowPasteValue) {\n _this.visibleInput.addEventListener(\"paste\", (e) => {\n e.preventDefault();\n let text = e.clipboardData.getData(\"text/plain\");\n _this.fp.setDate(text, false);\n });\n }\n }, 300);\n }\n\n change(selectedDates, dateStr, instance) {\n if (dateStr && this.submitOnChangeValue) this.element.form.requestSubmit();\n }\n}\n","// Disable form after submission to prevent double submit\n//\n// Example Usage:\n// <%= form_with url: \"/\", data: { controller: \"disable-submission\", disable_submission_with_value: \"Submitting...\" } %>\n\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static values = { with: String };\n\n connect() {\n this.element.dataset[\"action\"] ||= \"\";\n this.element.dataset[\"action\"] += \" submit->disable-submission#disableForm\";\n this.element.dataset[\"action\"].trim();\n }\n\n disableForm() {\n this.submitButtons().forEach((button) => {\n button.disabled = true;\n if (this.hasWithValue) button.value = this.withValue;\n });\n }\n\n submitButtons() {\n return this.element.querySelectorAll(\"input[type='submit'], button[type='submit']\");\n }\n}\n","\n// This controller is used to drag and drop students between rooms\nimport Sortable from '@stimulus-components/sortable';\n\nexport default class extends Sortable {\n connect() {\n super.connect();\n\n this.modalFrame = document.querySelector('turbo-frame[id=\"modal\"]');\n this.modalFrame.addEventListener('modal:closed', this.loadListener);\n }\n\n disconnect() {\n super.disconnect();\n }\n\n get options() {\n let options = super.options\n options[\"group\"] = \"drag-drop-student-room\"\n options[\"sort\"] = false\n options[\"onMove\"] = this.onMove\n options[\"onEnd\"] = this.onEnd.bind(this)\n return options\n }\n\n get defaultOptions() {\n return {\n animation: 200,\n }\n }\n\n // always add item to end of list\n onMove(event) {\n if (event.to !== event.from) {\n event.to.appendChild(event.dragged);\n return false;\n }\n }\n\n // show modal when dropped in new container\n onEnd(event) {\n if (event.to === event.from) {\n return\n }\n\n // dim the item while awaiting confirmation from modal\n event.item.querySelector('img')?.classList?.add(...this.dimmedClasses())\n\n // Show modal\n const url = this.modalUrl(event.item, event.to.dataset.roomId, event.to.dataset.contextDate)\n\n if (url) Turbo.visit(url.href, { frame: \"modal\" })\n }\n\n modalUrl(item, toRoomId, date) {\n if (item.dataset.transitionModalUrl) {\n let url = new URL(item.dataset.transitionModalUrl)\n url.searchParams.append(\"program_enrollment[room_id]\", toRoomId)\n url.searchParams.append(\"program_enrollment[start_date]\", date)\n url.searchParams.append(\"origin_url\", window.location.href)\n return url\n }\n }\n\n dimmedClasses() {\n return [\"opacity-90\", \"h-8\", \"w-8\", \"border-2\", \"border-dotted\", \"border-gray-300\", \"p-1\"]\n }\n}\n\n","// Dropdown menu with click outside\n//\n// Example Usage:\n//\n//
\n// <%= button_tag \"Menu\",\n// data: { dropdown_target: \"trigger\" } %>\n//\n//
\n// <%= link_to \"Item 1\", \"#\" %>\n// <%= link_to \"Item 2\", \"#\" %>\n//
\n//
\n\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport { enter, leave, toggle } from \"el-transition\"\nimport { useClickOutside } from \"stimulus-use\";\n\nexport default class extends Controller {\n static targets = [\"trigger\", \"dropdown\"]\n\n connect() {\n useClickOutside(this)\n this.triggerTarget.setAttribute(\"aria-haspopup\", \"true\")\n this.triggerTarget.setAttribute(\"aria-expanded\", \"false\")\n\n if (!this.dropdownTarget.hasAttribute(\"data-transition-enter\")) {\n this.dropdownTarget.setAttribute(\"data-transition-enter\", \"transition ease-out duration-100 transform\")\n }\n if (!this.dropdownTarget.hasAttribute(\"data-transition-enter-start\")) {\n this.dropdownTarget.setAttribute(\"data-transition-enter-start\", \"transform opacity-0 scale-95\")\n }\n if (!this.dropdownTarget.hasAttribute(\"data-transition-enter-end\")) {\n this.dropdownTarget.setAttribute(\"data-transition-enter-end\", \"transform opacity-100 scale-100\")\n }\n if (!this.dropdownTarget.hasAttribute(\"data-transition-leave\")) {\n this.dropdownTarget.setAttribute(\"data-transition-leave\", \"transition ease-in duration-75\")\n }\n if (!this.dropdownTarget.hasAttribute(\"data-transition-leave-start\")) {\n this.dropdownTarget.setAttribute(\"data-transition-leave-start\", \"transform opacity-100 scale-100\")\n }\n if (!this.dropdownTarget.hasAttribute(\"data-transition-leave-end\")) {\n this.dropdownTarget.setAttribute(\"data-transition-leave-end\", \"transform opacity-0 scale-95\")\n }\n\n this.triggerTarget.addEventListener(\"click\", this.toggle.bind(this))\n this.dropdownTarget.querySelectorAll(\"a\").forEach((element) => {\n if (element == this.triggerTarget) return\n element.addEventListener(\"click\", this.hide.bind(this))\n })\n }\n\n disconnect() {\n this.triggerTarget.removeEventListener(\"click\", this.toggle.bind(this))\n this.dropdownTarget.querySelectorAll(\"a\").forEach((element) => {\n if (element == this.triggerTarget) return\n element.removeEventListener(\"click\", this.hide.bind(this))\n })\n }\n\n clickOutside(event) {\n this.hide()\n }\n\n toggle() {\n toggle(this.dropdownTarget)\n this.triggerTarget.setAttribute(\"aria-expanded\", this.dropdownTarget.classList.contains(\"hidden\") ? \"false\" : \"true\")\n }\n\n show() {\n enter(this.dropdownTarget)\n this.triggerTarget.setAttribute(\"aria-expanded\", \"true\")\n }\n\n hide() {\n leave(this.dropdownTarget)\n this.triggerTarget.setAttribute(\"aria-expanded\", \"false\")\n }\n}\n","// Simple interactivity for the enrollment guardians search form\n\nimport { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = [\"searchField\", \"relationshipDiv\", \"createRecordButton\", \"assignSelectedButton\"]\n\n searchValueChanged(event) {\n let uuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n if (uuidRegex.test(event.target.value)) {\n this.relationshipDivTarget.classList.remove(\"hidden\");\n this.createRecordButtonTarget.classList.add(\"hidden\");\n this.assignSelectedButtonTarget.classList.remove(\"hidden\");\n } else if (event.target.value.length > 0) {\n this.relationshipDivTarget.classList.remove(\"hidden\");\n this.createRecordButtonTarget.classList.remove(\"hidden\");\n this.assignSelectedB\n } else {\n this.relationshipDivTarget.classList.add(\"hidden\");\n this.createRecordButtonTarget.classList.add(\"hidden\");\n this.assignSelectedButtonTarget.classList.add(\"hidden\");\n }\n }\n}\n","import ApplicationController from './application_controller'\n\n//\n// This is the Stimulus controller for the Example Reflex.\n//\n// It corresponds to the server-side Reflex class located at /app/reflexes/example.rb\n//\n// Learn more at: https://docs.stimulusreflex.com/guide/reflexes\n//\n\nexport default class extends ApplicationController {\n connect () {\n //\n // StimulusReflex overrides the Stimulus `connect` method. Make sure to call\n // `super.connect()` so that any code in your superclass `connect` is run.\n //\n super.connect()\n }\n\n // With StimulusReflex active in your project, it will continuously scan your DOM for\n // `data-reflex` attributes on your elements, even if they are dynamically created.\n //\n // Example#dance\">Dance!\n //\n // We call this a \"declared\" Reflex, because it doesn't require any JS to run.\n //\n // When your user clicks this link, a Reflex is launched and it calls the `dance` method\n // on your Example Reflex class. You don't have to do anything else!\n //\n // This Stimulus controller doesn't even need to exist for StimulusReflex to work its magic.\n // https://docs.stimulusreflex.com/guide/reflexes#declaring-a-reflex-in-html-with-data-attributes\n //\n // However...\n //\n // If we do create an `example` Stimulus controller that extends `ApplicationController`,\n // we can unlock several additional capabilities, including creating Reflexes with code.\n //\n // Dance!\n //\n // StimulusReflex gives our controller a new method, `stimulate`:\n //\n // dance() {\n // this.stimulate('Example#dance')\n // }\n //\n // The `stimulate` method is very flexible, and it gives you the opportunity to pass\n // parameter options that will be passed to the `dance` method on the server.\n // https://docs.stimulusreflex.com/guide/reflexes#calling-a-reflex-in-a-stimulus-controller\n //\n // Reflex lifecycle methods\n //\n // For every method defined in your Reflex class, a matching set of optional\n // lifecycle callback methods become available in this javascript controller.\n // https://docs.stimulusreflex.com/guide/lifecycle#client-side-reflex-callbacks\n //\n // Example#dance\" data-controller=\"example\">Dance!\n //\n // StimulusReflex will check for the presence of several methods:\n //\n // afterReflex(element, reflex, noop, id) {\n // // fires after every Example Reflex action\n // }\n //\n // afterDance(element, reflex, noop, id) {\n // // fires after Example Reflexes calling the dance action\n // }\n //\n // Arguments:\n //\n // element - the element that triggered the reflex\n // may be different than the Stimulus controller's this.element\n //\n // reflex - the name of the reflex e.g. \"Example#dance\"\n //\n // error/noop - the error message (for reflexError), otherwise null\n //\n // id - a UUID4 or developer-provided unique identifier for each Reflex\n //\n // Access to the client-side Reflex objects created by this controller\n //\n // Every Reflex you create is represented by an object in the global Reflexes collection.\n // You can access the Example Reflexes created by this controller via the `reflexes` proxy.\n //\n // this.reflexes.last\n // this.reflexes.all\n // this.reflexes.all[id]\n // this.reflexes.error\n //\n // The proxy allows you to access the most recent Reflex, an array of all Reflexes, a specific\n // Reflex specified by its `id` and an array of all Reflexes in a given lifecycle stage.\n //\n // If you explore the Reflex object, you'll see all relevant details,\n // including the `data` that is being delivered to the server.\n //\n // Pretty cool, right?\n //\n}\n","// Hack to position the dropdown outside of the parent div to allow it to overflow beyond the y axis\n// See: https://stackoverflow.com/a/74749062\n// and: https://codepen.io/tammibriggs/pen/gOKyWgG\n//\n// Example Usage:\n//
\n// \n//
\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n let dropdown = this.element;\n let parent = dropdown.parentElement;\n dropdown.style.left = parent.left + 'px';\n dropdown.style.position = 'fixed';\n }\n}\n","// Prevent form submission if the form is invalid\n//\n// This controller handles client-side form validation by:\n// 1. Preventing form submission if required fields are empty\n// 2. Focusing the first empty required field\n// 3. Focusing the first invalid field (e.g. email format, pattern mismatch)\n// 4. Works with both input and textarea elements\n//\n// Example Usage:\n//
...
\n\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n connect() {\n this.element.addEventListener(\"submit\", this.preventDefaultIfInvalid.bind(this));\n }\n preventDefaultIfInvalid(event) {\n let isValid = this.validateForm(this.element);\n if (!isValid) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n }\n\n validateForm() {\n let isValid = true;\n\n let requiredFieldSelectors = \"textarea:required, input:required\";\n let requiredFields = this.element.querySelectorAll(requiredFieldSelectors);\n\n requiredFields.forEach((field) => {\n if (!field.disabled && !field.value.trim()) {\n field.focus();\n\n isValid = false;\n\n return false;\n }\n });\n\n // If we already know we're invalid, just return false\n if (!isValid) {\n return false;\n }\n\n // Search for any browser invalidated input fields and focus them\n let invalidFields = this.element.querySelectorAll(\"input:invalid\");\n\n invalidFields.forEach((field) => {\n if (!field.disabled) {\n field.focus();\n\n isValid = false;\n }\n });\n\n return isValid;\n }\n}\n","// Automatically load more data when the user scrolls to the bottom of the page\n//\n// Example Usage:\n//
\n// \n//\n//
\n// <% if pagy.next %>\n// <%= link_to \"More\",\n// {page: pagy.next},\n// {rel: \"next\", data: {turbo_stream: true}}\n// %>\n//
\n// Loading...\n//
\n// <% end %>\n//
\n//
\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"pagination\", \"loading\"]\n\n paginationTargetConnected() {\n if (this.observer) return;\n\n const options = {\n threshold: 0\n }\n\n let _this = this;\n this.observer = new IntersectionObserver(([entry]) => {\n if (entry && entry.isIntersecting && entry.intersectionRatio >= options.threshold) {\n _this.loadMore();\n }\n }, options);\n\n this.observer.observe(this.paginationTarget);\n }\n\n loadMore(element) {\n if (!this.paginationTarget) return false;\n\n let next_page = this.paginationTarget.querySelector(\"a[rel='next']\");\n\n if (next_page) {\n next_page.click();\n next_page.remove();\n\n if (this.hasLoadingTarget)\n this.loadingTarget.classList.remove(\"hidden\");\n }\n }\n}\n","// Handles instant file uploads with drag & drop support and HEIC image conversion\n//\n// The controller will:\n// - Enable drag & drop file uploads\n// - Show upload progress\n// - Convert HEIC images to JPEG\n// - Trigger events when upload completes\n\n// Example Usage:\n//
\n//\n// \n//\n// \n//\n// \n//
\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport { DirectUpload } from \"@rails/activestorage\"\nimport heic2any from \"heic2any\"\n\nexport default class extends Controller {\n static targets = [\"container\", \"input\", \"image\", \"status\"]\n\n connect() {\n this.addDragAndDropEvents()\n this.data.set(\"in-progress\", false)\n }\n\n addDragAndDropEvents() {\n this.containerTarget.addEventListener('dragover', this.dragover.bind(this))\n this.containerTarget.addEventListener('dragleave', this.dragleave.bind(this))\n this.containerTarget.addEventListener('drop', this.drop.bind(this))\n }\n\n dragover(event) {\n event.preventDefault()\n this.data.set(\"dragging\", true)\n }\n\n dragleave(event) {\n event.preventDefault()\n this.data.set(\"dragging\", false)\n }\n\n drop(event) {\n event.preventDefault()\n const files = event.dataTransfer.files\n if (files.length > 0) {\n this.inputTarget.files = files\n this.processFiles()\n }\n }\n\n changed() {\n this.processFiles()\n }\n\n processFiles() {\n this.data.set(\"in-progress\", true)\n\n Array.from(this.inputTarget.files).forEach(file => {\n file.type.startsWith(\"image/heic\") || file.type.startsWith(\"image/heif\")\n ? this.convertAndUpload(file)\n : this.uploadFile(file)\n })\n }\n\n convertAndUpload(file) {\n this.statusTarget.innerHTML = \"Converting...\"\n\n heic2any({ blob: file, toType: \"image/jpeg\", quality: 0.8 })\n .then(conversionResult => this.uploadFile(conversionResult, file.name))\n .catch(error => {\n this.statusTarget.innerHTML = \"Error converting HEIC to JPEG: \" + error\n console.error(\"Error converting HEIC to JPEG\", error)\n }\n )\n }\n\n uploadFile(file, originalFilename = null) {\n const filename = originalFilename ? originalFilename.replace(/\\.\\w+$/, \".jpg\") : file.name\n const blobFile = new File([file], filename, { type: \"image/jpeg\" })\n\n this.statusTarget.innerHTML = \"Uploading...\"\n\n new DirectUpload(blobFile, this.postURL()).create((error, blob) => {\n if (error) {\n this.statusTarget.innerHTML = \"Error uploading file: \" + error\n console.error(\"Error uploading file:\", error)\n } else {\n this.updateUIAfterUpload(blob)\n }\n })\n }\n\n updateUIAfterUpload(blob) {\n this.data.set(\"in-progress\", false)\n this.statusTarget.innerHTML = \"\"\n this.hiddenInput().value = blob.signed_id\n this.inputTarget.type = \"hidden\"\n this.imageTarget.src = `${this.getURL()}/${blob.signed_id}/${blob.filename}`\n this.imageTarget.dispatchEvent(this.event())\n }\n\n hiddenInput() {\n if (!this._hiddenInput) {\n this._hiddenInput = document.createElement('input')\n this._hiddenInput.name = this.inputTarget.name\n this._hiddenInput.type = \"hidden\"\n this.inputTarget.parentNode.insertBefore(this._hiddenInput, this.inputTarget.nextSibling)\n }\n return this._hiddenInput\n }\n\n event() {\n if (!this._event) {\n this._event = new CustomEvent(\"instant-upload-finished\", { bubbles: true, cancelable: true })\n }\n return this._event\n }\n\n postURL() {\n return '/rails/active_storage/direct_uploads'\n }\n\n getURL() {\n return '/rails/active_storage/blobs/redirect'\n }\n}\n","//\n// Makes non-link elements clickable and behave like an A tag.\n// This is useful for elements that cannot be wrapped into an A tag,\n// such as table rows.\n//\n// This controller is Turbo-aware and will respect Turbo Frames, by\n// opening links in the correct frame. It also supports Turbo Streams.\n//\n// To fetch a Turbo Stream response, set `data-turbo-stream=\"true\"` on\n// the target. You may also set the `data-turbo-action` attribute.\n//\n//\n// Usage:\n//\n// \n// \n// \n// \n// \n// \n// \n// \n//
...
Load More
\n//
\n//\nimport { Controller } from \"@hotwired/stimulus\"\nimport { get } from \"@rails/request.js\"\n\nexport default class extends Controller {\n static targets = [\"link\"]\n\n linkTargetConnected(el) {\n if (!el.dataset[\"href\"]) return\n\n const _this = this;\n\n el.addEventListener('click', (event) => {\n if (event.target.tagName === \"A\") return\n\n _this.visitUrl(el, event)\n event.stopPropagation();\n event.preventDefault();\n })\n\n el.addEventListener('mouseenter', (event) => {\n if (event.target.tagName === \"A\") return\n el.style.cursor = 'pointer';\n })\n\n el.addEventListener('mouseleave', (event) => {\n if (event.target.tagName === \"A\") return\n el.style.cursor = 'normal';\n })\n }\n\n visitUrl(el, event) {\n const url = el.dataset.href;\n\n if (event.metaKey) {\n window.open(url, \"_blank\");\n } else if (el.dataset.turboStream == \"true\") {\n get(url, { responseKind: \"turbo-stream\" });\n }\n else {\n let frameId = el.dataset.turboFrame || this.element.closest('turbo-frame')?.id;\n\n Turbo.visit(url, { frame: frameId })\n\n let topLevelFrameId = frameId.startsWith(\"_\")\n let frame = (topLevelFrameId ? null : document.getElementById(frameId));\n let turboAction = el?.dataset.turboAction || frame?.dataset.turboAction;\n\n if (!topLevelFrameId) {\n if (turboAction == \"advance\") history.pushState({}, null, url);\n if (turboAction == \"replace\") history.replaceState({}, null, url);\n }\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport Tribute from \"tributejs\"\nimport Trix from \"trix\"\n\nexport default class extends Controller {\n static targets = [ \"field\" ]\n\n connect() {\n this.initializeTribute()\n }\n\n initializeTribute() {\n this.tribute = new Tribute({\n allowSpaces: true,\n lookup: 'name',\n values: this.fetchUsers,\n menuShowMinLength: 1,\n })\n this.tribute.attach(this.fieldTarget)\n this.fieldTarget.addEventListener('tribute-replaced', this.replaced.bind(this))\n this.tribute.range.pasteHtml = this._pasteHtml.bind(this)\n }\n\n disconnect() {\n this.tribute.detach(this.fieldTarget)\n }\n\n fetchUsers(text, callback) {\n fetch(`/users/mentions.json?query=${text}`)\n .then(response => response.json())\n .then(users => callback(users))\n .catch(error => callback([]))\n }\n\n // Inserts ActionText Attachment when a Tribute entry is selected\n replaced(e) {\n let mention = e.detail.item.original\n let attachment = new Trix.Attachment({\n content: mention.content,\n sgid: mention.sgid,\n })\n this.editor.insertAttachment(attachment)\n this.editor.insertString(\" \")\n }\n\n // Remove text user typed for the mention\n _pasteHtml(html, startPos, endPos) {\n let range = this.editor.getSelectedRange()\n let position = range[0]\n let length = endPos - startPos\n\n this.editor.setSelectedRange([position - length, position])\n this.editor.deleteInDirection(\"backward\")\n }\n\n // Lazily lookup the Trix editor\n get editor() {\n return this.fieldTarget.editor\n }\n}\n","import { Controller } from '@hotwired/stimulus';\nimport { enter, leave, toggle } from 'el-transition'\n\nexport default class extends Controller {\n static values = {\n autohide: { type: Boolean, default: true },\n timeout: { type: Number, default: 4000 },\n progressBar: { type: Boolean, default: true }\n }\n\n static targets = ['progress']\n\n connect() {\n this.progressUpdateInterval = 75;\n this.progressTimeout = null;\n this.mouseHovering = false;\n\n enter(this.element)\n\n if (this.autohideValue) {\n this.startAutohideTimer();\n this.setupMouseEvents();\n }\n }\n\n disconnect() {\n this.element.removeEventListener('mouseenter', this.handleMouseEnter.bind(this));\n this.element.removeEventListener('mouseleave', this.handleMouseLeave.bind(this));\n }\n\n hide() {\n leave(this.element).then(() => {\n this.element.remove();\n })\n }\n\n setProgressWidth(timeRemainingUntilHide, totalTime) {\n let percent = (timeRemainingUntilHide / totalTime) * 100\n this.progressTarget.style.width = `${percent}%`\n\n let maxOpacity = 80\n\n if (percent < 30) {\n this.progressTarget.style.opacity = `${maxOpacity - (100 - percent) + 30}%`\n } else {\n this.progressTarget.style.opacity = `${maxOpacity}%`\n }\n }\n\n handleMouseEnter() {\n this.mouseHovering = true\n }\n\n handleMouseLeave() {\n this.mouseHovering = false\n }\n\n startAutohideTimer() {\n enter(this.progressTarget)\n this.timeRemainingUntilHide = this.timeoutValue\n\n this.progressTimeout = setInterval(() => {\n if (this.mouseHovering) {\n return\n }\n\n this.timeRemainingUntilHide -= this.progressUpdateInterval\n\n if (this.progressBarValue) {\n this.setProgressWidth(this.timeRemainingUntilHide, this.timeoutValue)\n }\n\n if (this.timeRemainingUntilHide <= 0) {\n clearInterval(this.progressTimeout)\n this.hide()\n }\n }, this.progressUpdateInterval)\n }\n\n setupMouseEvents() {\n this.element.addEventListener('mouseenter', this.handleMouseEnter.bind(this));\n this.element.addEventListener('mouseleave', this.handleMouseLeave.bind(this));\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport consumer from \"../channels/consumer\"\n\nexport default class extends Controller {\n static targets = [\"badge\", \"list\", \"placeholder\", \"notification\"]\n static values = {\n accountId: String, // Current account ID\n accountUnread: Number, // Unread count for the current account\n totalUnread: Number, // Unread count across all the user's accounts\n }\n\n connect() {\n this.subscription = consumer.subscriptions.create({ channel: \"NotificationChannel\" }, {\n connected: this._connected.bind(this),\n disconnected: this._disconnected.bind(this),\n received: this._received.bind(this)\n })\n\n if (this.hasUnread()) this.showUnreadBadge()\n }\n\n disconnect() {\n this.subscription.unsubscribe()\n }\n\n _connected() {\n }\n\n _disconnected() {\n }\n\n _received(data) {\n this.totalUnreadValue += 1\n\n if (data.account_id && data.account_id == this.accountIdValue) {\n this.accountUnreadValue += 1\n }\n\n // Ignore if user is signed in to a different account\n if (data.account_id && data.account_id != this.accountIdValue) {\n return\n }\n\n // Regular notifications get added to the navbar\n if (data.html) {\n this.listTarget.insertAdjacentHTML('afterbegin', data.html)\n this.showUnreadBadge()\n }\n\n // Native notifications trigger a browser notification\n if (data.browser) {\n this.checkPermissionAndNotify(data.browser)\n }\n }\n\n // Called when the notifications view opens\n open() {\n this.hideUnreadBadge()\n this.markAllAsRead()\n }\n\n hasUnread() {\n return !!this.accountUnreadValue\n }\n\n showUnreadBadge() {\n if (this.hasBadgeTarget == false) { return }\n this.badgeTarget.classList.remove(\"hidden\")\n }\n\n hideUnreadBadge() {\n if (this.hasBadgeTarget == false) { return }\n this.badgeTarget.classList.add(\"hidden\")\n }\n\n markAllAsRead() {\n let ids = this.notificationTargets.map((target) => target.dataset.id)\n this.subscription.perform(\"mark_as_read\", {ids: ids})\n\n this.accountUnreadValue = 0\n this.totalUnreadValue -= ids.length\n }\n\n markAsInteracted(event) {\n let id = event.currentTarget.dataset.id\n if (id == null) return\n this.subscription.perform(\"mark_as_interacted\", {ids: [id]})\n\n // Uncomment to visually mark notification as interacted\n // event.currentTarget.dataset.interactedAt = new Date()\n }\n\n // Browser notifications\n checkPermissionAndNotify(data) {\n // Return if not supported\n if (!(\"Notification\" in window)) return\n\n if (Notification.permission === \"granted\") {\n this.browserNotification(data)\n\n } else if (Notification.permission !== \"denied\") {\n Notification.requestPermission().then((permission) => {\n if (permission === \"granted\") {\n this.browserNotification(data)\n }\n })\n }\n }\n\n browserNotification(data) {\n new Notification(data.title, data.options)\n }\n\n // Automatically sync count to Native apps\n totalUnreadValueChanged() {\n this.syncCountToNative()\n }\n\n // Automatically sync count to Native apps\n accountUnreadValueChanged() {\n this.syncCountToNative()\n }\n\n // Update the mobile device with the current unread count\n syncCountToNative() {\n window.TurboNativeBridge.setNotificationCount(this.totalUnreadValue, this.accountUnreadValue)\n }\n}\n","// Options:\n//\n// Use data-pricing-active=\"yearly\" to select yearly by default\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"toggle\", \"frequency\", \"plans\" ]\n static values = { frequency: String }\n\n connect() {\n this.removeEmptyFrequencies()\n this.defaultFrequency()\n if (this.frequencyTargets.length < 2) this.hideFrequencyToggle()\n }\n\n // Switches visible plans\n switch(event) {\n this.frequencyValue = event.target.dataset.frequency\n }\n\n // Removes frequencies that have no plans in them\n removeEmptyFrequencies() {\n this.frequencyTargets.forEach(target => {\n let frequency = target.dataset.frequency\n let index = this.plansTargets.findIndex((element) => element.dataset.frequency == frequency && element.childElementCount > 0)\n if (index == -1) target.remove()\n })\n }\n\n defaultFrequency() {\n if (!this.hasFrequencyValue) this.frequencyValue = this.frequencyTargets[0].dataset.frequency\n }\n\n hideFrequencyToggle() {\n this.toggleTarget.classList.add(\"hidden\")\n }\n\n frequencyValueChanged() {\n this.frequencyTargets.forEach(target => {\n if (target.dataset.frequency == this.frequencyValue) {\n this.showFrequency(target)\n } else {\n this.hideFrequency(target)\n }\n })\n\n this.plansTargets.forEach(target => {\n if (target.dataset.frequency == this.frequencyValue) {\n this.showPlans(target)\n } else {\n this.hidePlans(target)\n }\n })\n }\n\n showFrequency(element) {\n element.classList.add(...this.activeFrequencyClass)\n element.classList.remove(...this.inactiveFrequencyClass)\n }\n\n hideFrequency(element) {\n element.classList.remove(...this.activeFrequencyClass)\n element.classList.add(...this.inactiveFrequencyClass)\n }\n\n showPlans(element) {\n element.classList.add(...this.activePlansClass)\n element.classList.remove(...this.inactivePlansClass)\n }\n\n hidePlans(element) {\n element.classList.remove(...this.activePlansClass)\n element.classList.add(...this.inactivePlansClass)\n }\n}\n","import {\n Controller\n} from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = [\"program\", \"room\"]\n\n connect() {\n this.programSelected();\n }\n\n programSelected() {\n this.populateRooms(this.programTarget.value, this.roomTarget.value);\n }\n\n populateRooms(sourceId, targetId = null) {\n fetch(`/programs/${sourceId}/rooms`, {\n credentials: 'same-origin'\n })\n .then(response => response.json())\n .then(data => {\n const selectBox = this.roomTarget;\n selectBox.innerHTML = '';\n\n const blank = document.createElement('option');\n blank.value = \"\";\n blank.innerHTML = \"\";\n selectBox.appendChild(blank);\n\n data.forEach(item => {\n const opt = document.createElement('option');\n opt.value = item.id;\n opt.innerHTML = item[this.data.get('displayAttribute')];\n opt.selected = targetId === item.id;\n selectBox.appendChild(opt);\n });\n });\n }\n}","import StimulusTomSelect from \"stimulus-tom-select\";\n\nexport default class extends StimulusTomSelect {\n static values = {\n value: { type: String, default: 'id' },\n label: { type: String, default: 'display' },\n path: String,\n };\n connect() {\n if (!this.hasPathValue) {\n throw new Error(\"Path value must be specified.\");\n }\n super.connect();\n }\n\n initTomSelect() {\n this.options = {\n valueField: this.valueValue,\n labelField: this.labelValue,\n searchField: this.labelValue,\n maxItems: 1,\n load: (query, callback) => {\n if (!query.length) return callback()\n\n const url = `${this.pathValue}${encodeURIComponent(query)}`\n const req = new XMLHttpRequest()\n const csrfNode = document.head.querySelector('meta[name=\"csrf-token\"]')\n\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n\n if (typeof csrfNode.content === \"string\")\n req.setRequestHeader(\"X-CSRF-Token\", csrfNode.content)\n\n req.addEventListener('load', () => {\n if (req.status >= 200 && req.status < 400) {\n const data = JSON.parse(req.responseText);\n\n this.select.clear();\n this.select.clearOptions();\n\n callback(data);\n } else {\n console.log('Network response was not ok.')\n }\n });\n req.send();\n },\n render: {\n option_create: function (data, escape) {\n return '
Create new record for: ' + escape(data.input) + '
';\n },\n },\n ...this.optionsValue,\n };\n\n let focusAfterInit = false;\n if (document.activeElement == this.element) {\n focusAfterInit = true\n }\n\n super.initTomSelect()\n\n if (focusAfterInit) {\n this.select.focus();\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"button\"];\n\n reset() {\n this.element.reset();\n this.buttonTarget.disabled = false;\n let focusEl = this.element.querySelector(\"input:not([type=hidden]), select, textarea, [tabindex]:not([tabindex='-1'])\");\n focusEl.focus()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"deleteButton\"];\n\n connect() {\n this.showHideDeleteButtons();\n }\n\n add(event) {\n event.preventDefault()\n let table = this.element.querySelector('table');\n let tBody = table.querySelector('tbody');\n\n let newRow = tBody.querySelector('tr:last-child').cloneNode(true);\n this.clearInputs(newRow)\n tBody.append(newRow)\n\n let startDateFields = document.querySelectorAll('input[name=\"room[schedule][start_date][]\"]');\n let startDateField = startDateFields[startDateFields.length - 1];\n\n this.showDateField(startDateField)\n this.showHideDeleteButtons()\n }\n\n del(event) {\n event.preventDefault();\n if (this.rowCount() > 1) {\n let tr = event.currentTarget.closest(\"tr\");\n tr.remove()\n this.showHideDeleteButtons()\n }\n }\n\n clearInputs(el) {\n el.querySelectorAll(\"input, select\").forEach(function (input) {\n input.value = \"\";\n });\n }\n\n rowCount() {\n let table = this.element.querySelector('table');\n let tBody = table.querySelector('tbody');\n return tBody.querySelectorAll(\"tr\").length;\n }\n\n showHideDeleteButtons() {\n let shouldHide = this.rowCount() <= 1\n if (shouldHide) {\n this.deleteButtonTargets.forEach(button => button.classList.add(\"invisible\"));\n } else {\n this.deleteButtonTargets.forEach(button => button.classList.remove(\"invisible\"));\n }\n }\n\n showDateField(el) {\n el.classList.remove(\"hidden\");\n el.nextElementSibling.classList.add('infinity');\n el.nextElementSibling.style.display = 'none';\n }\n}\n","// Append selected value to the URL to filter results\n//\n// Example Usage:\n//\n// Can be used directly on a select:\n//\n// \n//\n// Or on a parent element to handle multiple selects:\n//\n//
\n// \n// \n//
\n\nimport { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n connect() {\n if (this.element.tagName === 'SELECT') {\n this.element.addEventListener('change', this.selected.bind(this));\n } else {\n this.element.querySelectorAll('select').forEach(select => {\n select.addEventListener('change', this.selected.bind(this));\n });\n }\n }\n\n disconnect() {\n if (this.element.tagName === 'SELECT') {\n this.element.removeEventListener('change', this.selected.bind(this));\n } else {\n this.element.querySelectorAll('select').forEach(select => {\n select.removeEventListener('change', this.selected.bind(this));\n });\n }\n }\n\n selected(event) {\n let target = event.target;\n let paramName = target.getAttribute('name');\n let queryParams = new URLSearchParams(window.location.search);\n queryParams.set(paramName, target.value);\n window.location.search = queryParams.toString();\n }\n}\n","// Visits the URL contained in the selected option value field\n//\n// Example Usage:\n// \n\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n connect() {\n this.element.addEventListener('change', (e) => {\n let frame = this.element.closest('turbo-frame');\n let url = e.target.value;\n let options = { frame: frame?.id }\n\n Turbo.visit(url, options)\n\n // Setting action on options does not with with turbo frames.\n if (frame?.dataset.turboAction == \"advance\") {\n history.pushState({}, null, url);\n }\n else if (frame?.dataset.turboAction == \"replace\") {\n history.replaceState({}, null, url);\n }\n })\n }\n}\n","// Signature pad allowing users to draw their signature\n//\n// Example Usage:\n//
\n// \n// \n// \n//
\n\n\nimport { Controller } from \"@hotwired/stimulus\"\nimport SignaturePad from 'signature_pad'\n\nexport default class extends Controller {\n static targets = [\"canvas\", \"input\"]\n static values = { disabled: { type: Boolean, default: false } }\n\n connect() {\n this.signaturePad = new SignaturePad(this.canvasTarget)\n this.signaturePad.addEventListener(\"endStroke\", this.endStroke)\n this.resizeCanvas()\n\n if (this.inputTarget.value) {\n this.signaturePad.fromDataURL(this.inputTarget.value)\n this.endStroke()\n }\n\n if (this.disabledValue) {\n this.signaturePad.off()\n }\n }\n\n disconnect() {\n this.signaturePad.off()\n }\n\n clear() {\n if (this.disabledValue) return\n this.signaturePad.clear()\n this.inputTarget.value = \"\"\n }\n\n endStroke = (_) => {\n this.inputTarget.value = this.signaturePad.toDataURL(\"image/svg+xml\")\n }\n\n resizeCanvas() {\n // When zoomed out to less than 100%, for some very strange reason,\n // some browsers report devicePixelRatio as less than 1\n // and only part of the canvas is cleared then.\n var ratio = Math.max(window.devicePixelRatio || 1, 1)\n this.canvasTarget.width = this.canvasTarget.offsetWidth * ratio\n this.canvasTarget.height = this.canvasTarget.offsetHeight * ratio\n this.canvasTarget.getContext(\"2d\").scale(ratio, ratio)\n }\n\n validate() {\n return !this.signaturePad.isEmpty()\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"start\", \"end\"];\n\n connect() {\n if (!this.startTarget) {\n console.error(\"Start target not found\");\n return;\n }\n\n this.startTarget.addEventListener(\"duetChange\", this.valueChanged.bind(this));\n\n if (this.endTarget) {\n this.endTarget.addEventListener(\"duetChange\", this.valueChanged.bind(this));\n }\n\n this.rememberDistance();\n }\n\n valueChanged(event) {\n if (event.target == this.startTarget) {\n this.setEndMinDate();\n }\n this.rememberDistance();\n }\n\n rememberDistance() {\n if (!this.endDate()) return null;\n let difference = this.endDate() - this.startDate();\n this.distance = Math.ceil(difference / (1000 * 3600 * 24));\n }\n\n setEndMinDate() {\n if (!this.startDate()) return false;\n if (this.startDate() > this.endDate()) {\n let newDate = this.addDistanceToStartDate();\n this.endTarget.setAttribute(\"value\", this.stringifyDate(newDate));\n }\n\n this.endTarget.min = this.stringifyDate(this.startTarget.getAttribute(\"value\"));\n }\n\n startDate() {\n if (this.endTarget.getAttribute(\"value\").trim().length == 0) return null;\n return Date.parse(this.startTarget.getAttribute(\"value\"));\n }\n\n endDate() {\n if (!this.endTarget || this.endTarget.getAttribute(\"value\").trim().length == 0) return null;\n return Date.parse(this.endTarget.getAttribute(\"value\"));\n }\n\n stringifyDate(date) {\n return new Date(date).toISOString().substring(0, 10);\n }\n\n addDistanceToStartDate() {\n if (this.distance && this.distance > 0) {\n let newDate = new Date(this.startDate());\n newDate = new Date(newDate.setDate(newDate.getDate() + (this.distance || 60)));\n return newDate;\n } else {\n return this.startDate();\n }\n }\n\n disconnect() {\n this.startTarget.removeEventListener(\"change\", this.valueChanged.bind(this));\n this.endTarget.removeEventListener(\"change\", this.valueChanged.bind(this));\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"params\"];\n\n async exportToExcel() {\n let url = new URL(document.location.href);\n let params = url.searchParams;\n params.set(\"intent\", \"excel\");\n url.search = params.toString();\n\n const link = document.createElement(\"a\");\n link.href = url.toString();\n link.download = \"students.xlsx\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n}\n","// Submits a form when a specific input changes.\n// Allows setting a custom method and action to use whenever the form is submitted.\n//\n// Example:\n//\n// data: {\n// controller: \"submit-on-change\",\n// submit_on_change_method_value: \"get\",\n// submit_on_change_visit_action_value: \"replace\"\n// }\n//\nimport { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static values = {\n trigger: { type: String, default: \"change\" },\n target: { type: String, default: \"form\" },\n visitAction: String,\n method: String,\n action: String\n };\n\n connect() {\n this.element.addEventListener(this.triggerValue, () => {\n let form = this.element.closest(this.targetValue)\n form.method = this.methodValue || form.method\n form.action = this.actionValue || form.action\n\n if (this.visitActionValue) {\n form.dataset.turboAction = this.visitActionValue\n }\n\n Turbo.navigator.submitForm(form)\n });\n }\n}\n","import { Controller } from '@hotwired/stimulus';\nimport Tagify from \"@yaireo/tagify\";\n\nexport default class extends Controller {\n static targets = [\"field\"];\n static values = {\n delimiters: { type: String, default: \",| \" }\n };\n\n tagifyInstance = null;\n\n connect() {\n this.initializeTagify();\n }\n\n initializeTagify() {\n this.tagifyInstance = new Tagify(this.fieldTarget, { delimiters: this.delimitersValue });\n }\n}\n","import {\n Controller\n} from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = [\"button\", \"status\"]\n\n connect() {\n if (this.hasStatusTarget) {\n this.statusTarget.innerHTML = \"Stimulus Controller Connected\";\n }\n console.log(\"Test Stimulus Controller Connected\");\n }\n\n click() {\n var now = new Date();\n var time = now.getHours() + \":\" + now.getMinutes() + \":\" + now.getSeconds();\n if (this.hasStatusTarget) {\n this.statusTarget.innerHTML = \"Clicked at \" + time;\n }\n console.log(\"Test Stimulus Controller Clicked at \" + time)\n }\n\n changed() {\n var now = new Date();\n var time = now.getHours() + \":\" + now.getMinutes() + \":\" + now.getSeconds();\n if (this.hasStatusTarget) {\n this.statusTarget.innerHTML = \"Changed at \" + time;\n }\n console.log(\"Test Stimulus Controller Changed at \" + time)\n }\n}\n","// TODO: we should be able to get rid of this and implement a CSS-only solution\n\nimport { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = [\"button\", \"slider\", \"field\"];\n static values = { reloadOnClick: Boolean };\n\n click(event) {\n let buttonEnabledClass = this.buttonTarget.getAttribute('data-enabled-class');\n let buttonDisabledClass = this.buttonTarget.getAttribute('data-disabled-class');\n let sliderEnabledClass = this.sliderTarget.getAttribute('data-enabled-class');\n let sliderDisabledClass = this.sliderTarget.getAttribute('data-disabled-class');\n\n if (this.buttonTarget.classList.contains(buttonEnabledClass)) {\n this.buttonTarget.classList.remove(buttonEnabledClass);\n this.sliderTarget.classList.remove(sliderEnabledClass);\n this.buttonTarget.classList.add(buttonDisabledClass);\n this.sliderTarget.classList.add(sliderDisabledClass);\n this.fieldTarget.value = 0;\n } else {\n this.buttonTarget.classList.remove(buttonDisabledClass);\n this.sliderTarget.classList.remove(sliderDisabledClass);\n this.buttonTarget.classList.add(buttonEnabledClass);\n this.sliderTarget.classList.add(sliderEnabledClass);\n this.fieldTarget.value = 1;\n }\n\n if (this.reloadOnClickValue) {\n let paramName = this.fieldTarget.getAttribute(\"name\");\n let queryParams = new URLSearchParams(window.location.search);\n queryParams.set(paramName, this.fieldTarget.value);\n window.location.search = queryParams.toString();\n }\n }\n}\n","// Toggles the visibility of the target content\n//\n// Example Usage:\n//
\n// \n//
...
\n//
\n\nimport { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = [\"content\"];\n\n toggle() {\n this.contentTargets.forEach(function (t) {\n let c = t.dataset.togglerClass;\n t.classList.toggle(c);\n });\n }\n}\n","/**\n * tom_select_assign_controller.js\n *\n * This Stimulus controller is designed to dynamically update one or more fields based on the selection\n * in a Tom Select dropdown menu. When a selection is made, the controller extracts specified data\n * attributes from the selected item and assigns them to corresponding fields.\n *\n * How to use:\n * 1. Include this controller in your Stimulus setup.\n * 2. Add `data-controller=\"tom_select_assign\"` to your Tom Select dropdown element.\n * 3. Define the mappings between the data attributes and the fields using the `data-tom_select_assign-mappings-value` attribute.\n *\n * The format for `data-tom_select_assign-mappings-value` is:\n * \"dataAttribute1:#selector1,dataAttribute2:#selector2\"\n *\n * For example:\n * \"email:#email_address,phone1:#phone_number\"\n *\n * This will map the `email` data attribute to the field with ID `email_address` and the `phone1` data attribute to the field with ID `phone_number`.\n *\n * HTML Example:\n * \n * \n * \n *\n * Multiple Controllers:\n * If you need to assign multiple Stimulus controllers to the same element, separate them with a space in the `data-controller` attribute.\n * Example:\n * \n *\n * Dependencies:\n * - Tom Select (https://tom-select.js.org/)\n */\n\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static values = { mappings: String };\n\n connect() {\n this.mappingPairs = this.parseMappings(this.mappingsValue);\n this.element.addEventListener('change', this.handleSelection);\n }\n\n disconnect() {\n this.element.removeEventListener('change', this.handleSelection);\n }\n\n parseMappings(mappings) {\n return mappings.split(',').map(pair => {\n const [key, selector] = pair.split(':');\n return { key: key.trim(), selector: selector.trim() };\n });\n }\n\n handleSelection = (event) => {\n if (!this.element.tomselect) {\n throw new Error('Tom Select is not initialized on this element');\n }\n\n const selectedValue = this.element.tomselect.getValue();\n const selectedData = selectedValue ? this.element.tomselect.options[selectedValue] : {};\n\n this.mappingPairs.forEach(mapping => {\n const field = document.querySelector(mapping.selector);\n if (field) {\n field.value = selectedData[mapping.key] || '';\n }\n });\n }\n}\n","// Example usage:\n//
\n\nimport { Controller } from \"@hotwired/stimulus\";\nimport tippy from \"tippy.js\";\n\nexport default class extends Controller {\n static values = {\n content: String,\n url: String,\n interactive: { type: Boolean, default: false },\n maxWidth: { type: String, default: 'none' },\n theme: { type: String, default: '' },\n ajaxTheme: { type: String, default: 'light-border' },\n trigger: { type: String, default: 'mouseenter click' },\n touch: { type: String, default: 'hold' }\n };\n\n connect() {\n let options = {\n content: this.contentValue,\n theme: this.themeValue,\n trigger: this.triggerValue,\n touch: this.touchValue,\n interactive: this.interactiveValue,\n maxWidth: this.maxWidthValue\n };\n\n if (this.hasUrlValue) {\n options = {\n ...options,\n allowHTML: true,\n theme: this.ajaxThemeValue,\n onShow: (instance) => {\n if (this.cachedContent == null) {\n instance.setContent(\" \"); // fix odd visual issue when tooltip is empty\n fetch(this.urlValue)\n .then((response) => response.text())\n .then((text) => {\n this.cachedContent = text;\n instance.setContent(this.cachedContent);\n })\n .catch((error) => (this.cachedContent = null));\n }\n },\n };\n }\n this.tippy = tippy(this.element, options);\n }\n\n disconnect() {\n this.tippy.destroy();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n signOut(event) {\n if (this._isTurboNativeApp) {\n event.preventDefault()\n event.stopImmediatePropagation()\n window.TurboNativeBridge.postMessage(\"signOut\")\n }\n }\n\n deleteAccount(event) {\n if (this._isTurboNativeApp) {\n event.preventDefault()\n event.stopImmediatePropagation()\n window.TurboNativeBridge.postMessage(\"deleteAccount\")\n }\n }\n\n get _isTurboNativeApp() {\n return navigator.userAgent.indexOf(\"Turbo Native\") !== -1\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"zui--accent\"\nexport default class extends Controller {\n connect() {\n // this.updateAccent();\n }\n\n updateAccent() {\n const accent = localStorage.getItem(\"zui-accent\");\n if (accent) {\n document.documentElement.dataset.zuiAccent = accent;\n }\n }\n\n switchAccent(event) {\n const accent = event.params.accent;\n if (accent) {\n localStorage.setItem(\"zui-accent\", accent);\n this.updateAccent();\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"zui--collapsible\"\nexport default class extends Controller {\n static targets = [\"toggleState\"];\n\n toggle() {\n const rootState = this.element.getAttribute(\"data-state\");\n this.element.setAttribute(\n \"data-state\",\n rootState === \"closed\" ? \"open\" : \"closed\"\n );\n\n this.toggleStateTargets.forEach((element) => {\n const currentState = element.getAttribute(\"data-state\");\n const newState = currentState === \"closed\" ? \"open\" : \"closed\";\n element.setAttribute(\"data-state\", newState);\n });\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"body\"];\n connect() {}\n\n toggle() {\n this.bodyTarget.classList.toggle(\"hidden\");\n }\n\n hide() {\n this.bodyTarget.classList.add(\"hidden\");\n }\n\n clickOutside(event) {\n if (this.element.contains(event.target) === false) {\n this.hide();\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"zui--message\"\nexport default class extends Controller {\n static values = {\n autoDismiss: { type: Boolean, default: false },\n autoDismissDelay: { type: Number, default: 5 },\n };\n\n connect() {\n if (this.element.classList.contains(\"hidden\")) {\n this.element.dataset.state = \"open\";\n this.element.classList.remove(\"hidden\");\n }\n\n if (this.autoDismissValue) {\n this.timeout = setTimeout(() => {\n this.dismiss();\n }, this.autoDismissDelayValue * 1000);\n }\n }\n\n dismiss() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n\n this.dismissed = true;\n this.element.dataset.state = \"closed\";\n\n this.element.addEventListener(\n \"animationend\",\n () => {\n this.element.remove();\n },\n { once: true }\n );\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"zui--modal\"\nexport default class extends Controller {\n static targets = [\"content\", \"backdrop\", \"dialog\"];\n connect() {}\n\n open() {\n this.backdropTarget.dataset.state = \"open\";\n this.dialogTarget.dataset.state = \"open\";\n this.contentTarget.classList.remove(\"hidden\");\n this.contentTarget.classList.add(\"flex\");\n }\n\n close() {\n const animationEndHandler = () => {\n this.contentTarget.classList.remove(\"flex\");\n this.contentTarget.classList.add(\"hidden\");\n };\n\n this.contentTarget.addEventListener(\"animationend\", animationEndHandler, {\n once: true,\n });\n\n this.backdropTarget.dataset.state = \"closed\";\n this.dialogTarget.dataset.state = \"closed\";\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"zui--proxy\"\nexport default class extends Controller {\n static values = {\n controllerName: String,\n method: String,\n selector: String,\n };\n\n trigger() {\n const elements = Array.from(document.querySelectorAll(this.selectorValue));\n\n elements.forEach((element) => {\n const controllerInstance =\n this.application.getControllerForElementAndIdentifier(\n element,\n this.controllerNameValue\n );\n if (\n controllerInstance &&\n typeof controllerInstance[this.methodValue] === \"function\"\n ) {\n controllerInstance[this.methodValue]();\n }\n });\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport TinyGesture from \"tinygesture\";\n\n// Connects to data-controller=\"zui--swipe\"\nexport default class extends Controller {\n connect() {\n this.dismissed = false;\n this.handleSwipe();\n }\n\n handleSwipe() {\n this.gesture = new TinyGesture(this.element);\n this.gesture.on(\"swiperight\", () => {\n this.dispatch(\"dismiss\");\n this.dismissed = true;\n this.gesture.destroy();\n });\n\n this.gesture.on(\"panmove\", () => {\n if (\n this.gesture.swipingDirection === \"horizontal\" &&\n this.gesture.touchMoveX > 0\n ) {\n // move the element to the right by the amount of the touchmove\n this.element.style.transform = `translateX(${this.gesture.touchMoveX}px)`;\n }\n });\n\n this.gesture.on(\"panend\", () => {\n if (!this.dismissed) {\n this.element.style.transform = \"\";\n }\n });\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"zui--switch\"\nexport default class extends Controller {\n static targets = [\"checkbox\", \"button\", \"indicator\"];\n\n toggle() {\n this.checkboxTarget.checked = !this.checkboxTarget.checked;\n\n const isChecked = this.checkboxTarget.checked;\n this.buttonTarget.setAttribute(\"aria-checked\", isChecked.toString());\n\n const currentState = isChecked ? \"checked\" : \"unchecked\";\n this.buttonTarget.setAttribute(\"data-state\", currentState);\n this.indicatorTarget.setAttribute(\"data-state\", currentState);\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"zui--tab-panel\"\nexport default class extends Controller {\n static targets = [\"tab\", \"content\"];\n\n connect() {\n const selectedTab = this.tabTargets.find(\n (tab) => tab.dataset.state === \"selected\"\n );\n this.selectTab(selectedTab || this.tabTargets[0]);\n }\n\n selectTab(tab) {\n this.tabTargets.forEach((t) => {\n t.dataset.state = t === tab ? \"selected\" : \"\";\n });\n\n let contentId = tab.dataset.tabId;\n this.contentTargets.forEach((c) => {\n if (c.dataset.contentId == contentId) {\n c.classList.remove(\"hidden\");\n } else {\n c.classList.add(\"hidden\");\n }\n });\n }\n\n changeTab(event) {\n let tab = event.currentTarget;\n this.selectTab(tab);\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nconst THEME_LIGHT = \"light\";\nconst THEME_DARK = \"dark\";\nconst THEME_SYSTEM = \"system\";\nconst DARK_SCHEME_QUERY = \"(prefers-color-scheme: dark)\";\n\nexport default class extends Controller {\n connect() {\n // this.setInitialTheme();\n this.systemThemeMediaQuery = window.matchMedia(DARK_SCHEME_QUERY);\n this.systemThemeMediaQuery.addEventListener(\n \"change\",\n this.handleSystemThemeChange.bind(this)\n );\n }\n\n disconnect() {\n this.systemThemeMediaQuery.removeEventListener(\n \"change\",\n this.handleSystemThemeChange.bind(this)\n );\n }\n\n setInitialTheme() {\n let theme = localStorage.getItem(\"zui-theme\");\n\n if (!theme) {\n if (document.documentElement.classList.contains(ZuiTheme.THEME_DARK)) {\n theme = ZuiTheme.THEME_DARK;\n } else {\n theme = ZuiTheme.THEME_SYSTEM;\n }\n localStorage.setItem(\"zui-theme\", theme);\n }\n this.updateTheme();\n }\n\n switchTheme(event) {\n const { theme } = event.params;\n localStorage.setItem(\"zui-theme\", theme);\n this.updateTheme();\n }\n\n updateTheme() {\n const theme = localStorage.getItem(\"zui-theme\");\n\n if (theme === THEME_SYSTEM) {\n this.applySystemPreferenceTheme();\n } else {\n this.applyTheme(theme);\n }\n }\n\n applySystemPreferenceTheme() {\n const prefersDark = window.matchMedia(DARK_SCHEME_QUERY).matches;\n this.applyTheme(prefersDark ? THEME_DARK : THEME_LIGHT);\n }\n\n handleSystemThemeChange = () => {\n this.updateTheme();\n };\n\n applyTheme(theme) {\n if (theme === THEME_DARK) {\n document.documentElement.classList.add(\"dark\");\n } else {\n document.documentElement.classList.remove(\"dark\");\n }\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"zui--toast\"\nexport default class extends Controller {\n static targets = [\"message\"];\n\n connect() {\n this.updateZIndex();\n }\n\n updateZIndex() {\n const countOfMessages = this.messageTargets.length;\n this.element.style.zIndex = countOfMessages > 0 ? \"100\" : \"-1\";\n }\n\n messageTargetConnected() {\n this.updateZIndex();\n }\n\n messageTargetDisconnected() {\n this.updateZIndex();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"zui--tooltip\"\nexport default class extends Controller {\n connect() {\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { enter, leave, toggle } from \"el-transition\"\n\nexport default class extends Controller {\n static targets = [\n \"input\",\n \"results\",\n \"backdrop\",\n \"modal\",\n \"selectedIndexField\",\n \"selectedTypeField\",\n \"selectedIdField\",\n ];\n\n connect() {\n if (!this.inputTarget) throw new Error(\"inputTarget is required\");\n if (!this.resultsTarget) throw new Error(\"resultsTarget is required\");\n if (!this.backdropTarget) throw new Error(\"backdropTarget is required\");\n if (!this.modalTarget) throw new Error(\"modalTarget is required\");\n if (!this.selectedIndexFieldTarget)\n throw new Error(\"selectedIndexFieldTarget is required\");\n if (!this.selectedTypeFieldTarget)\n throw new Error(\"selectedTypeFieldTarget is required\");\n if (!this.selectedIdFieldTarget)\n throw new Error(\"selectedIdFieldTarget is required\");\n\n window.addEventListener(\"keydown\", this.onWindowKeyDown)\n this.inputTarget.addEventListener(\"keydown\", this.onKeyDown)\n\n this.boundHideOnLinkClicked = this.hideOnLinkClicked.bind(this)\n this.modalTarget.addEventListener(\"click\", this.boundHideOnLinkClicked)\n\n this.boundHideOnDismissElementClicked = this.boundHideOnDismissElementClicked.bind(this)\n this.backdropTarget.addEventListener(\"click\", this.boundHideOnDismissElementClicked)\n this.modalTarget.addEventListener(\"click\", this.boundHideOnDismissElementClicked)\n }\n\n disconnect() {\n window.removeEventListener(\"keydown\", this.onWindowKeyDown)\n this.inputTarget.removeEventListener(\"keydown\", this.onKeyDown)\n this.modalTarget.removeEventListener(\"click\", this.boundHideOnLinkClicked)\n this.modalTarget.removeEventListener(\"click\", this.boundHideOnDismissElementClicked)\n this.backdropTarget.removeEventListener(\"click\", this.boundHideOnDismissElementClicked)\n }\n\n show() {\n enter(this.backdropTarget)\n enter(this.modalTarget);\n this.inputTarget.focus();\n }\n\n hide() {\n leave(this.backdropTarget)\n leave(this.modalTarget);\n }\n\n boundHideOnDismissElementClicked = e => {\n if (e.target == this.backdropTarget || e.target == this.modalTarget) {\n this.hide();\n }\n }\n\n hideOnLinkClicked = e => {\n if (e.target.tagName == \"A\" || e.target.closest(\"a\")) {\n this.hide();\n }\n }\n\n onWindowKeyDown = e => {\n if (e.key == \"k\" && e.metaKey) {\n e.preventDefault();\n this.show();\n } else if (e.key == \"/\" && e.target.tagName != \"INPUT\") {\n e.preventDefault();\n this.show();\n } else if (e.key == \"Escape\") {\n this.hide();\n }\n }\n\n onKeyDown = e => {\n if (e.key == \"ArrowUp\") {\n this.moveSelected(-1);\n } else if (e.key == \"ArrowDown\") {\n this.moveSelected(1);\n } else if (e.key == \"Enter\") {\n e.preventDefault();\n this.visit(this.selectedResultElement());\n } else if (e.key == \"Escape\") {\n this.hide()\n } else {\n this.search();\n }\n }\n\n search() {\n clearTimeout(this.timeout);\n if (\n this.inputTarget.value.length > 2 ||\n this.inputTarget.value.length == 0\n ) {\n this.timeout = setTimeout(() => {\n this.inputTarget.form.requestSubmit();\n }, 100);\n }\n }\n\n moveSelected(distance) {\n if (!this.hasResults()) {\n this.deselectAll();\n return\n }\n\n let curIndex = this.selectedIndex()\n let nextIndex = null\n\n if (curIndex == null && distance > 0) {\n nextIndex = -1 + distance\n } else if (curIndex == null && distance < 0) {\n nextIndex = this.lastResultIndex() + 1 + distance\n } else {\n nextIndex = curIndex + distance\n }\n\n if (nextIndex > this.lastResultIndex()) {\n nextIndex = 0\n } else if (nextIndex < 0) {\n nextIndex = this.lastResultIndex()\n }\n\n this.selectIndex(nextIndex)\n }\n\n selectIndex(index) {\n this.deselectAll();\n let element = this.resultElementAtIndex(index);\n if (element) {\n element.classList.add(\"selected\");\n this.scrollToElement(element);\n this.selectedTypeFieldTarget.value = element.dataset.resultType;\n this.selectedIdFieldTarget.value = element.dataset.resultId;\n this.selectedIndexFieldTarget.value = index;\n }\n }\n\n deselectAll() {\n this.resultElements().forEach((element) => {\n element.classList.remove(\"selected\");\n })\n\n this.selectedTypeFieldTarget.value = \"\"\n this.selectedIdFieldTarget.value = \"\"\n this.selectedIndexFieldTarget.value = \"\"\n }\n\n selectedIndex() {\n let selectedElement = this.resultsTarget.querySelector(\".selected\");\n if (selectedElement) {\n return Array.prototype.indexOf.call(\n this.resultElements(),\n selectedElement\n );\n }\n }\n\n selectedResultElement() {\n return this.resultsTarget.querySelector(\".selected\");\n }\n\n resultElementAtIndex(index) {\n return this.resultElements()[index];\n }\n\n hasResults() {\n return (this.resultElements() || []).length > 0;\n }\n\n lastResultIndex() {\n if (!this.hasResults()) return null;\n return this.resultElements().length - 1;\n }\n\n resultElements() {\n return this.resultsTarget.querySelectorAll(\"li\");\n }\n\n visit(el) {\n if (!el) return;\n el.querySelector(\"a\").click();\n }\n\n scrollToElement(el) {\n if (!el) return;\n\n if (el.offsetTop <= 100) {\n this.resultsTarget.scrollTop = 0;\n } else if (el.offsetTop <= this.resultsTarget.scrollTop + 100) {\n this.resultsTarget.scrollTop = el.offsetTop - 100;\n } else {\n this.scrollToBeVisible(el, this.resultsTarget);\n }\n }\n\n scrollToBeVisible(el, container) {\n const elTop = el.offsetTop;\n const elBottom = elTop + el.clientHeight;\n\n const containerTop = container.scrollTop;\n const containerBottom = containerTop + container.clientHeight;\n\n if (elTop < containerTop) {\n // Scroll to the top of container\n container.scrollTop -= containerTop - elTop;\n } else if (elBottom > containerBottom) {\n // Scroll to the bottom of container\n container.scrollTop += elBottom - containerBottom;\n }\n }\n}\n","// Auto-hide navbar on scroll\n\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"navbar\"];\n\n initialize() {\n this.lastScrollPosition = 0;\n this.isNavbarHidden = false;\n this.handleScroll = this.debounce(this.handleScroll.bind(this), 10);\n console.log(\"NavbarController#initialize\")\n }\n\n connect() {\n window.addEventListener('scroll', this.handleScroll);\n }\n\n disconnect() {\n window.removeEventListener('scroll', this.handleScroll);\n }\n\n handleScroll() {\n const currentScrollPosition = window.pageYOffset || document.documentElement.scrollTop;\n if (currentScrollPosition > this.lastScrollPosition && currentScrollPosition > 100) {\n if (!this.isNavbarHidden) {\n this.hideNavbar();\n }\n } else if (this.lastScrollPosition - currentScrollPosition > 20) {\n if (this.isNavbarHidden) {\n this.showNavbar();\n }\n } else if (currentScrollPosition < 100) {\n this.showNavbar();\n }\n this.lastScrollPosition = currentScrollPosition;\n }\n\n hideNavbar() {\n this.isNavbarHidden = true;\n this.updateNavbarClasses(true);\n }\n\n showNavbar() {\n this.isNavbarHidden = false;\n this.updateNavbarClasses(false);\n }\n\n updateNavbarClasses(hide) {\n const showClasses = this.navbarTarget.dataset.showClasses.split(' ');\n const hideClasses = this.navbarTarget.dataset.hideClasses.split(' ');\n\n if (hide) {\n this.navbarTarget.classList.remove(...showClasses);\n this.navbarTarget.classList.add(...hideClasses);\n } else {\n this.navbarTarget.classList.remove(...hideClasses);\n this.navbarTarget.classList.add(...showClasses);\n }\n }\n\n debounce(func, wait) {\n let timeout;\n return function (...args) {\n const later = () => {\n clearTimeout(timeout);\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport { enter, leave } from \"el-transition\"\n\nexport default class extends Controller {\n static targets = [\"menu\", \"overlay\", \"container\"]\n\n show() {\n enter(this.containerTarget)\n enter(this.menuTarget)\n enter(this.overlayTarget)\n }\n\n hide() {\n leave(this.menuTarget)\n leave(this.overlayTarget).then(() => leave(this.containerTarget))\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"fieldContainer\", \"activationContainer\"]\n\n showField() {\n this.fieldContainerTarget.classList.remove(\"hidden\")\n this.activationContainerTarget.classList.add(\"hidden\")\n\n setTimeout(() => {\n const field = this.fieldContainerTarget.querySelector(\"input[type=text]\")\n field.focus()\n }, 20)\n }\n}\n","import { Application, defaultSchema } from \"@hotwired/stimulus\"\nimport { Autocomplete } from \"stimulus-autocomplete\"\nimport Chart from '@stimulus-components/chartjs'\n\nconst customSchema = {\n ...defaultSchema,\n keyMappings: { ...defaultSchema.keyMappings, slash: \"/\" },\n}\n\nconst application = Application.start(document.documentElement, customSchema)\n\napplication.register(\"autocomplete\", Autocomplete)\napplication.register('chart', Chart)\n\n// Configure Stimulus development experience\napplication.debug = process.env.NODE_ENV !== 'production'\nwindow.Stimulus = application\n\nexport { application }\n","// Load all the controllers within this directory and all subdirectories.\n// Controller files must be named *_controller.js.\n\nimport { application } from \"./application\"\nimport { registerControllers } from \"stimulus-vite-helpers\";\n\n// Register each controller with Stimulus\nconst controllers = import.meta.glob(\"./**/*_controller.js\", { eager: true });\nregisterControllers(application, controllers);\n\nimport { Dropdown, Tabs, Popover, Toggle, Slideover } from \"tailwindcss-stimulus-components\"\n// application.register(\"alert\", Alert);\n// application.register(\"autosave\", Autosave);\n// application.register(\"dropdown\", Dropdown);\n// application.register(\"modal\", Modal);\napplication.register(\"tabs\", Tabs);\napplication.register(\"popover\", Popover);\napplication.register(\"toggle\", Toggle);\napplication.register(\"slideover\", Slideover);\n\nimport Timeago from \"stimulus-timeago\"\napplication.register(\"timeago\", Timeago)\n\nimport Sortable from '@stimulus-components/sortable'\napplication.register('sortable', Sortable)\n\n// Manually register Flatpickr as a stimulus controller\nimport Flatpickr from 'stimulus-flatpickr'\napplication.register('flatpickr', Flatpickr)\n\n// CableReady\nimport consumer from '../channels/consumer'\nimport CableReady from 'cable_ready'\nCableReady.initialize({ consumer })\n\nimport setupUltimateTurboModal from \"ultimate_turbo_modal\";\nsetupUltimateTurboModal(application);\n\nimport StimulusTomSelect from \"stimulus-tom-select\";\napplication.register(\"tom-select\", StimulusTomSelect);\n\nimport TomSelectAssign from \"./tom_select_assign_controller\";\napplication.register(\"tom-select-assign\", TomSelectAssign);\n\n\n// Controllers from components - view_component-contrib\nconst viewComponentControllers = import.meta.glob(\"./../../components/**/controller.js\", { eager: true });\n\nfor (let path in viewComponentControllers) {\n let module = viewComponentControllers[path];\n let name = path\n .match(/\\/components\\/(.+)\\/controller\\.js$/)[1]\n .replaceAll(\"/\", \"-\")\n .replaceAll(\"_\", \"-\");\n application.register(name, module.default);\n}\n","import consumer from '../channels/consumer'\nimport CableReady from 'cable_ready'\n\nCableReady.initialize({ consumer })\n","import { application } from \"../controllers/application\"\nimport controller from \"../controllers/application_controller\"\nimport StimulusReflex from \"stimulus_reflex\"\n\nStimulusReflex.initialize(application, { controller, isolate: true })\n\nif (import.meta.env.MODE === \"development\") {\n console.log(\"Enabling debug mode for Stimulus Reflex\")\n StimulusReflex.debug = true\n}\n","// Needs this to work with TurboFrames: https://github.com/hotwired/turbo/pull/59\n//\n// Modified from https://codepen.io/chriscoyier/pen/XWKEVLy\nlet turboVisitEvent = function (event) {\n document.querySelectorAll(\"textarea.autogrow\").forEach((textarea) => {\n var wrapper = document.createElement('div');\n wrapper.classList.add('grow-wrap');\n textarea.parentNode.insertBefore(wrapper, textarea);\n wrapper.appendChild(textarea);\n textarea.classList.remove('autogrow');\n wrapper.dataset.replicatedValue = textarea.value;\n textarea.addEventListener(\"input\", () => {\n wrapper.dataset.replicatedValue = textarea.value;\n });\n })\n};\n\nwindow.addEventListener('turbo:visit', turboVisitEvent, false);\nwindow.addEventListener('turbo:frame-load', turboVisitEvent, false);","import * as ActiveStorage from \"@rails/activestorage\";\nimport { Turbo } from \"@hotwired/turbo-rails\";\nimport \"@rails/actiontext\";\nimport \"chartkick/chart.js\";\nimport LocalTime from \"local-time\";\n\nLocalTime.start();\nActiveStorage.start();\nwindow.Turbo = Turbo;\n\nimport \"../channels\" // ActionCable Channels\nimport \"../controllers\" // Stimulus controllers\nimport \"../config\"\n\n// Jumpstart Pro & other Functionality\nconst src = import.meta.glob(\"./src/**/*.js\", { eager: true })\nexport default src;\n\nimport \"../src/textarea_auto_grow\";\n\n// import { Idiomorph } from 'idiomorph/dist/idiomorph.esm.js'\n// addEventListener(\"turbo:before-frame-render\", (event) => {\n// event.detail.render = (currentElement, newElement) => {\n// Idiomorph.morph(currentElement, newElement, {\n// morphStyle: 'innerHTML'\n// })\n// }\n// })\n\nimport TurboPower from 'turbo_power'\nTurboPower.initialize(Turbo.StreamActions)\n\nimport debounced from 'debounced'\ndebounced.initialize(debounced.defaultEventNames, { wait: 100, leading: true, trailing: false })\n\n\n// require(\"@rails/activestorage\").start();\n// require(\"channels\");\n// require(\"trix\");\n// require(\"@rails/actiontext\");\n// require(\"jquery\");\n\n// // Stimulus controllers\n// import \"controllers\";\n\n// // Jumpstart Pro & other Functionality\n// const components = require.context(\"src\", true);\n// components.keys().forEach(components);\n\n// import \"src/timezone\";\n// import LocalTime from \"local-time\";\n// LocalTime.start();\n\n// // ADD YOUR JAVASCRIPT HERE\n\n// require.context(\"../images\", true);\n\n// // Styles\n// // These are imported separately for faster Webpack recompilation\n// // https://rubyyagi.com/solve-slow-webpack-compilation/\n// import \"stylesheets/base.scss\";\n// import \"stylesheets/components.scss\";\n// import \"stylesheets/utilities.scss\";\n// import \"stylesheets/custom/app.scss\";\n// import \"stylesheets/custom/textarea_auto_grow.scss\";\n// import \"@yaireo/tagify/dist/tagify.css\";\n"],"names":["consumer","createConsumer","accounts_controller","Controller","event","controller$4","StimulusReflex","element","reflex","noop","id","error","autogrow_controller","braintree_controller","instance","payload","name","value","hiddenInput","__publicField","bulk_controller","target","cleave_controller","Cleave","clipboard_controller","ClipboardJS","message","tippy","cmd_enter_controller","command_palette_controller","cropper_controller","style","_this","cropper","Cropper","datepicker_controller","Flatpickr","dateString","parsed","dayjs","e","text","selectedDates","dateStr","disable_submission_controller","_a","button","drag_drop_student_room_controller","Sortable","options","_b","url","item","toRoomId","date","dropdown_controller$1","useClickOutside","toggle","enter","leave","enrollment_guardians_search_controller","example_controller","ApplicationController","fix_dropdown_position_controller","dropdown","parent","form_validation_controller","isValid","field","infinite_scroll_controller","entry","next_page","instant_upload_controller","files","file","heic2any","conversionResult","originalFilename","filename","blobFile","DirectUpload","blob","link_element_controller","el","get","frameId","topLevelFrameId","frame","turboAction","mentions_controller","Tribute","callback","response","users","mention","attachment","Trix","html","startPos","endPos","position","length","notification_toast_controller","timeRemainingUntilHide","totalTime","percent","maxOpacity","notifications_controller","data","ids","permission","pricing_controller","frequency","program_room_selects_controller","sourceId","targetId","selectBox","blank","opt","remote_tom_select_controller","StimulusTomSelect","query","req","csrfNode","escape","focusAfterInit","reset_form_controller","room_schedule_controller","tBody","newRow","startDateFields","startDateField","input","select_filter_controller","select","paramName","queryParams","select_redirect_controller","signature_controller","_","SignaturePad","ratio","start_end_date_filter_controller","difference","newDate","student_list_actions_controller","params","link","submit_on_change_controller","form","tagify_controller","Tagify","test_controller","now","time","toggle_button_controller","buttonEnabledClass","buttonDisabledClass","sliderEnabledClass","sliderDisabledClass","toggler_controller","t","c","TomSelectAssign","selectedValue","selectedData","mapping","mappings","pair","key","selector","tooltip_controller$1","sign_out_controller","accent_controller","accent","collapsible_controller","rootState","newState","dropdown_controller","message_controller","modal_controller","animationEndHandler","proxy_controller","controllerInstance","swipe_controller","TinyGesture","switch_controller","isChecked","currentState","tab_panel_controller","selectedTab","tab","contentId","THEME_LIGHT","THEME_DARK","THEME_SYSTEM","DARK_SCHEME_QUERY","theme_controller","theme","prefersDark","toast_controller","countOfMessages","tooltip_controller","controller$3","distance","curIndex","nextIndex","index","selectedElement","container","elTop","elBottom","containerTop","containerBottom","controller$2","currentScrollPosition","hide","showClasses","hideClasses","func","wait","timeout","args","later","controller$1","controller","customSchema","defaultSchema","application","Application","Autocomplete","Chart","controllers","__vite_glob_0_0","__vite_glob_0_1","__vite_glob_0_2","__vite_glob_0_3","__vite_glob_0_4","__vite_glob_0_5","__vite_glob_0_6","__vite_glob_0_7","__vite_glob_0_8","__vite_glob_0_9","__vite_glob_0_10","__vite_glob_0_11","__vite_glob_0_12","__vite_glob_0_13","__vite_glob_0_14","__vite_glob_0_15","__vite_glob_0_16","__vite_glob_0_17","__vite_glob_0_18","__vite_glob_0_19","__vite_glob_0_20","__vite_glob_0_21","__vite_glob_0_22","__vite_glob_0_23","__vite_glob_0_24","__vite_glob_0_25","__vite_glob_0_26","__vite_glob_0_27","__vite_glob_0_28","__vite_glob_0_29","__vite_glob_0_30","__vite_glob_0_31","__vite_glob_0_32","__vite_glob_0_33","__vite_glob_0_34","__vite_glob_0_35","__vite_glob_0_36","__vite_glob_0_37","__vite_glob_0_38","__vite_glob_0_39","__vite_glob_0_40","__vite_glob_0_41","__vite_glob_0_42","__vite_glob_0_43","__vite_glob_0_44","__vite_glob_0_45","__vite_glob_0_46","__vite_glob_0_47","__vite_glob_0_48","__vite_glob_0_49","__vite_glob_0_50","__vite_glob_0_51","__vite_glob_0_52","__vite_glob_0_53","registerControllers","Tabs","Popover","Toggle","Slideover","Timeago","CableReady","setupUltimateTurboModal","viewComponentControllers","__vite_glob_1_0","__vite_glob_1_1","__vite_glob_1_2","__vite_glob_1_3","path","module","turboVisitEvent","textarea","wrapper","LocalTime","ActiveStorage.start","Turbo","TurboPower","Turbo.StreamActions","debounced"],"mappings":"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"}