{"version":3,"file":"js/application-535e9cfb4476d4be6397.js","mappings":"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","sources":["webpack://ratsanet/./app/javascript/setup.js","webpack://ratsanet/./app/javascript/controllers/products_controller.js","webpack://ratsanet/./app/javascript/controllers/legacy_charts_controller.js","webpack://ratsanet/./app/javascript/controllers/home_controller.js","webpack://ratsanet/./app/javascript/controllers/alerts_controller.js","webpack://ratsanet/./app/javascript/controllers/audit_events_controller.js","webpack://ratsanet/./app/javascript/mixins/parseTableRows.js","webpack://ratsanet/./app/javascript/controllers/course_events_controller.js","webpack://ratsanet/./app/javascript/controllers/charts_controller.js","webpack://ratsanet/./app/javascript/controllers/trainers_management_controller.js","webpack://ratsanet/./app/javascript/controllers/application_controller.js","webpack://ratsanet/./app/javascript/channels/ sync _channel\\.js$","webpack://ratsanet/./app/javascript/controllers/cups_controller.js","webpack://ratsanet/./app/javascript/controllers/manual_event_courses_controller.js","webpack://ratsanet/./app/javascript/channels/index.js","webpack://ratsanet/./app/javascript/controllers/exports_controller.js","webpack://ratsanet/./app/javascript/controllers/clubs_controller.js","webpack://ratsanet/./app/javascript/controllers/mass_mails_controller.js","webpack://ratsanet/./app/javascript/controllers/horses_controller.js","webpack://ratsanet/./app/javascript/ratsanetTable.js","webpack://ratsanet/./app/javascript/mixins/btnLoading.js","webpack://ratsanet/./app/javascript/controllers/events_controller.js","webpack://ratsanet/./app/javascript/controllers/orders_controller.js","webpack://ratsanet/./app/javascript/controllers/stats_controller.js","webpack://ratsanet/./app/javascript/controllers/sanctions_controller.js","webpack://ratsanet/./app/javascript/controllers/entries_controller.js","webpack://ratsanet/./app/javascript/controllers/pony_measurement_events_controller.js","webpack://ratsanet/./app/javascript/controllers/person_trainer_profiles_controller.js","webpack://ratsanet/./app/javascript/controllers/general_posts_controller.js","webpack://ratsanet/./app/javascript/controllers/ sync \\.js$","webpack://ratsanet/./app/javascript/controllers/people_controller.js","webpack://ratsanet/./app/javascript/controllers/marking_sheets_controller.js","webpack://ratsanet/./app/javascript/controllers/event_documents_controller.js","webpack://ratsanet/./app/javascript/channels/consumer.js","webpack://ratsanet/./app/javascript/mixins/backgroundJobToast.js","webpack://ratsanet/./app/javascript/channels/ratsanet_jobs_channel.js","webpack://ratsanet/./app/javascript/controllers/event_informations_controller.js","webpack://ratsanet/./app/javascript/controllers/tracker_definitions_controller.js","webpack://ratsanet/./app/javascript/mixins/toast.js","webpack://ratsanet/./app/javascript/application.js","webpack://ratsanet/./app/javascript/controllers/competitions_controller.js","webpack://ratsanet/./app/javascript/mixins/mobileDialogToggler.js","webpack://ratsanet/./app/javascript/mixins/confirmationDialog.js","webpack://ratsanet/./app/javascript/controllers/event_schedules_controller.js","webpack://ratsanet/./app/javascript/controllers/qualifications_controller.js","webpack://ratsanet/./app/javascript/controllers/chart_configurations_controller.js","webpack://ratsanet/./app/javascript/controllers/noncompetition_registrations_controller.js","webpack://ratsanet/./app/javascript/controllers/manual_event_officials_controller.js"],"sourcesContent":["import { Dropdown, Modal, Tooltip } from \"bootstrap\";\n\n/**\n * Setups up modal, scroll up, datepicker, select2\n * with timeout as\n */\nexport function setupJavascript() {\n  setUpModal();\n  setupScrollUp();\n  setSessionMessage();\n  window.initDatepicker();\n  window.initSelect2();\n  initTooltips();\n\n  const navTabs = document.querySelectorAll(\".nav.nav-tabs\");\n  if (navTabs.length > 0) {\n    navTabs.forEach(el => {\n      if (\n        el.querySelector(\".nav-link.active\") ||\n        (window.location.hash &&\n          document.querySelector(\n            /* format: xxx-'name here to open tab'*/\n            `a.nav-link[href=\"#${window.location.hash.split(\"-\")[1]}\"]`\n          ))\n      ) {\n        /**\n         * If there is a nav-tabs with.active class, skip or if hash exists and tab nav found,\n         * skip. (Should be handled in its respective controller, e.g people and marking_sheets controller)\n         */\n        return;\n      }\n\n      const navLink = el.querySelector(\".nav-link\");\n      if (navLink) navLink.click();\n    });\n  }\n\n  document.querySelectorAll(`.dropdown-toggle`).forEach(el => {\n    new Dropdown(el, {\n      boundary: \"window\"\n    });\n  });\n\n  document.querySelectorAll(`[data-confirm]`).forEach(el => {\n    el.addEventListener(\n      \"click\",\n      evt => {\n        evt.preventDefault();\n        evt.stopPropagation();\n        confirmationDialog(evt);\n      },\n      { capture: true },\n      true\n    );\n  });\n}\n\nexport function removeVisibleTooltips() {\n  document\n    .querySelectorAll(`.tooltip[role=\"tooltip\"]`)\n    .forEach(el => el.remove());\n}\n\nfunction setUpModal() {\n  const modal = document.querySelector(\"#modal\");\n  const modalInstance = Modal.getOrCreateInstance(modal);\n  function hiddenCallback() {\n    const modalContent = modal.querySelector(\"#modalContent\");\n    if (!modalContent) return;\n    Array.from(modalContent.children).forEach(el => el.remove());\n  }\n  modal.addEventListener(\"hidden.bs.modal\", hiddenCallback);\n  const domObserver = new MutationObserver(mutationList => {\n    for (const mutation of mutationList) {\n      for (const node of mutation.addedNodes) {\n        if (node.name === \"modalClose\") {\n          // If found input with that value in name attribute, then close modal automatically\n          modalInstance.hide();\n        } else if (node.name === \"modalOpen\") {\n          // Or if its this value, then automatically open\n          modalInstance.show();\n        }\n      }\n    }\n  });\n  const modalContent = modal.querySelector(\"#modalContent\");\n  if (!modalContent) {\n    modal.removeEventListener(hiddenCallback);\n    return;\n  }\n  // Observe modal's content for input with name=\"closeModal\"\n  domObserver.observe(modalContent, { childList: true });\n}\n\nfunction setupScrollUp() {\n  // Element that when hidden from view makes \"scroll up\" button shown\n  const scrollBtnTigger = document.querySelector(\"#scrollBtnObserver\");\n  scrollBtnTigger.classList.add(\"scroll-observer\");\n\n  const scrollbtn = document.querySelector(\".scroll-up\");\n  new IntersectionObserver(function (entries) {\n    if (entries[0].intersectionRatio <= 0) {\n      // When \"#scrollBtnObserver\" is no longer \"visible\" in browser\n      scrollbtn.classList.remove(\"d-none\");\n    } else {\n      // When \"#scrollBtnObserver\" is \"visible\" in browser again\n      scrollbtn.classList.add(\"d-none\");\n    }\n  }).observe(scrollBtnTigger);\n\n  scrollbtn.addEventListener(\"click\", () => {\n    window.scrollTo(0, 0);\n  });\n}\n\nexport function initTooltips() {\n  document.querySelectorAll(`[data-bs-toggle=\"tooltip\"]`).forEach(el => {\n    new Tooltip(el);\n  });\n}\n\nfunction setSessionMessage() {\n  const notice = sessionStorage.getItem(\"notice\");\n  const alert = sessionStorage.getItem(\"alert\");\n  if (notice) {\n    sessionStorage.removeItem(\"notice\");\n    const noticeBox = document.querySelector(\"#noticeAlert\");\n    noticeBox.innerText = notice;\n    noticeBox.classList.remove(\"d-none\");\n  }\n  if (alert) {\n    sessionStorage.removeItem(\"alert\");\n    const alertBox = document.querySelector(\"#alertAlert\");\n    alertBox.innerText = alert;\n    alertBox.classList.remove(\"d-none\");\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { LoadingSpinnerHandler } from \"@mixins/btnLoading\";\nimport axios from \"axios\";\nimport { camelCase } from \"lodash-es\";\nimport { tinymceInit } from \"@/plugins/tinymce\";\n\nlet feiLicences = [];\nlet insurance = null;\nlet textInputDelay = null;\n\nexport default class extends Controller {\n  static targets = [\n    \"productInput\",\n    \"feiLicence\",\n    \"personYearlyInsurance\",\n    \"personYearlyInsurancePackage2\",\n    \"productForm\",\n\n    \"orderItemForm\"\n  ];\n\n  productFormTargetConnected() {\n    tinymceInit({\n      toolbar:\n        \"blocks fontsize | forecolor backcolor | bold italic underline strikethrough | link removeformat\"\n    });\n  }\n\n  orderItemFormTargetConnected(form) {\n    form.querySelectorAll(\"select\").forEach(el => {\n      window.initSelect2(el);\n    });\n\n    const triggerValidation = () => {\n      // Prevent creating record if its still valid\n      form.querySelector(`[name=\"order_item[refresh]\"]`).value = true;\n\n      const submit = form.querySelector(\"button[type=submit]\");\n      submit.disabled = true;\n      LoadingSpinnerHandler.add(submit);\n\n      const formData = new FormData(form);\n\n      // Make inputs be disabled to prevent dumb changes.\n      form.querySelectorAll(\"input,select\").forEach(el => {\n        if (el.type == \"text\") return;\n        el.disabled = true;\n      });\n\n      const token = document.getElementsByName(\"csrf-token\");\n      axios({\n        url: form.action,\n        method: \"POST\",\n        headers: {\n          \"X-CSRF-Token\": token[0].content,\n          Accept: \"text/vnd.turbo-stream.html\"\n        },\n        data: formData\n      })\n        .then(({ data }) => {\n          Turbo.session.receivedMessageFromStream(data);\n        })\n        .catch(error => {\n          console.error(error);\n        });\n    };\n\n    form\n      .querySelectorAll(\"input[type=radio],input[type=checkbox]\")\n      .forEach(el => {\n        el.addEventListener(\"click\", triggerValidation);\n      });\n\n    form.querySelectorAll(\"input[type=text]\").forEach(el => {\n      el.addEventListener(\"input\", () => {\n        clearTimeout(textInputDelay);\n        textInputDelay = setTimeout(() => triggerValidation(), 2500);\n      });\n    });\n\n    form.querySelectorAll(\"select\").forEach(el => {\n      $(el).on(\"input\", triggerValidation); // Only trough jQuery will select2 trigger that input\n    });\n  }\n\n  insuranceInput(evt) {\n    if (evt.target.value && evt.target.value != \"on\") {\n      insurance = camelCase(evt.target.value);\n    } else {\n      insurance = null;\n    }\n  }\n\n  feiLicenceInput(evt) {\n    if (evt.target.value === \"endurance\") {\n      const targetInput = evt.target.form.querySelector(\n        \".order_item_fei_horse_trainer\"\n      );\n      // If does not exist, then exit function\n      if (!targetInput) return;\n      if (evt.target.checked) {\n        targetInput.classList.remove(\"d-none\");\n      } else {\n        targetInput.classList.add(\"d-none\");\n        targetInput.value = \"\";\n      }\n    }\n\n    if (evt.target.checked) {\n      feiLicences.push(evt.target.value);\n    } else {\n      feiLicences = feiLicences.filter(x => x != evt.target.value);\n    }\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport {\n  openMobileDialog,\n  closeMobileDialog\n} from \"@mixins/mobileDialogToggler.js\";\n\nexport default class extends Controller {\n  initialize() {\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n  }\n\n  index() {\n    if (window.location.search.includes(\"?tab=\")) {\n      const param = new URLSearchParams(window.location.search);\n      const disciplineTabNav = document.querySelector(\n        `[href=\"#${param.get(\"tab\")}-tab\"]`\n      );\n      window.history.replaceState(window.history.state, null, \"/legacy_charts\");\n      if (disciplineTabNav) disciplineTabNav.click();\n    }\n    const discipline = window.location.hash;\n    const disciplineTabNav = document.querySelector(\n      `[href=\"${discipline}-tab\"]`\n    );\n    if (disciplineTabNav) disciplineTabNav.click();\n  }\n\n  setHash({ params }) {\n    Turbo.visit(window.location.pathname + \"#\" + params.hash, {\n      action: \"replace\"\n    });\n  }\n\n  selectDifferentYearWithHash(evt) {\n    evt.preventDefault();\n    Turbo.visit(`${evt.target.href}${location.hash}`);\n  }\n\n  openMenu({ currentTarget: target }) {\n    openMobileDialog($(target.dataset.target)[0]);\n  }\n\n  closeMenu({ currentTarget: target }) {\n    closeMobileDialog($(target.dataset.target)[0]);\n    const selectedText = target\n      .closest(`.tab-wrapper`)\n      .querySelector(`.currentMenuSelected`);\n    if (selectedText) selectedText.innerText = target.innerText;\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { Carousel } from \"bootstrap\";\n\nexport default class extends Controller {\n\n  connect() {\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n  }\n\n  index() {\n    Array.from(document.querySelectorAll('.carousel')).forEach(el => {\n      new Carousel(el, {\n        interval: 4500\n      });\n    })\n  }\n};","import { Controller } from \"@hotwired/stimulus\";\nimport { tinymceInit } from \"@/plugins/tinymce\";\n\nexport default class extends Controller {\n  static targets = [\"form\"];\n\n  connect() {\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n  }\n\n  formTargetConnected() {\n    tinymceInit({\n      toolbar:\n        \"blocks fontsize | forecolor backcolor | bold italic underline strikethrough | link removeformat\"\n    });\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport axios from \"axios\"\nimport parseTableRows from \"@mixins/parseTableRows\";\nimport { LoadingSpinnerHandler } from \"@mixins/btnLoading\";\nconst AUDITEVENTS_TABLE_LOAD_MORE_PER_PAGE = 40;\n\nlet controller = null;\n\nexport default class extends Controller {\n  static targets = [\"table\"];\n\n  static values = {\n    pageNumber: Number\n  };\n\n  connect() {\n    controller = new AbortController();\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n  }\n\n  disconnect() {\n    controller.abort();\n  }\n\n  loadMore(evt) {\n    evt.preventDefault();\n    const { target } = evt;\n\n    target.disabled = true;\n    LoadingSpinnerHandler.add(target);\n\n    const form = new FormData($(\"#new_search\")[0])\n    form.set(\"search[page]\", this.pageNumberValue);\n    form.set(\"load_more\", true);\n    const params = new URLSearchParams(form);\n\n    axios({\n      method: \"GET\",\n      url: target.href + \"?\" + params.toString(),\n      responseType: \"text\",\n      headers: {\n        \"Accept\": \"text/html;charset=UTF-8;\"\n      },\n      signal: controller.signal,\n    }).then(({ data }) => {\n      this.pageNumberValue++;\n      target.disabled = false;\n      LoadingSpinnerHandler.remove(target);\n\n      const rows = parseTableRows(data);\n      if (rows.length < AUDITEVENTS_TABLE_LOAD_MORE_PER_PAGE) {\n        target.remove();\n      };\n\n      // this.tableTarget again, like in people and horse search still claims it doesn't exist\n      const table = document.querySelector(\"#audit_events_results > tbody\")\n      table.append(...rows);\n    }).catch(err => {\n      console.error(err);\n    })\n\n  }\n}\n","// response parameter value should be DOMString\nexport default function (response) {\n  // This way it maintains <tr>s\n  // Using DOMParser removed <tr> in my experience\n  const table = document.createElement(\"table\");\n  table.id = \"template\";\n  const content = document.createElement(\"tbody\");\n  content.innerHTML = response;\n  table.append(content);\n  return table.querySelectorAll(\"table#template > tbody > tr\");\n}","import { Controller } from \"@hotwired/stimulus\";\nimport dayjs from \"dayjs\";\nimport axios from \"axios\";\nimport { LoadingSpinnerHandler } from \"@mixins/btnLoading\";\nimport { openMobileDialog } from \"@mixins/mobileDialogToggler\";\nimport { tinymceInit } from \"@/plugins/tinymce\";\nlet courseEventTableFormSignal = null;\nlet searchInputDelay = null;\nlet searchQueryDelay = null;\n\nexport default class extends Controller {\n  static targets = [\"courseEventForm\", \"courseEventsTableForm\"];\n\n  disconnect() {\n    courseEventTableFormSignal?.abort();\n    clearTimeout(searchInputDelay);\n    clearTimeout(searchQueryDelay);\n  }\n\n  courseEventFormTargetConnected(element) {\n    element.addEventListener(\"keydown\", evt => {\n      if (evt.code == \"Enter\") evt.preventDefault();\n    });\n\n    tinymceInit({\n      toolbar:\n        \"blocks fontsize | forecolor backcolor | bold italic underline strikethrough | link removeformat\"\n    });\n\n    const categoryInput = $(\"#course_event_category\");\n    function showOrHideCategoryTextInput(value) {\n      if (value == \"misc\") {\n        $(\".course_event_category_text\").removeClass(\"d-none\");\n      } else {\n        $(\".course_event_category_text\").addClass(\"d-none\");\n      }\n    }\n\n    if (categoryInput.val() === \"misc\") {\n      showOrHideCategoryTextInput(\"misc\");\n    }\n\n    categoryInput.on(\"change\", evt => {\n      showOrHideCategoryTextInput(evt.target.value);\n    });\n\n    $(\"#course_event_start_date\").on(\"change\", evt => {\n      if (!evt.target.value) return;\n      const newDate = dayjs(evt.target.value, \"DD.MM.YYYY\");\n\n      const endDateInput = $(\"#course_event_end_date\");\n      const endDate = endDateInput.val()\n        ? dayjs(endDateInput.val(), \"DD.MM.YYY\")\n        : null;\n\n      /*const regEndDateInput = $(\"#course_event_registration_end_date\");\n      const regEndDate = regEndDateInput.val()\n        ? dayjs(regEndDateInput.val(), \"DD.MM.YYY\")\n        : null;*/\n\n      /*regEndDateInput.datepicker(\n        \"setEndDate\",\n        newDate.subtract(1, \"days\").toDate()\n      );*/\n      endDateInput.datepicker(\"setStartDate\", newDate.toDate());\n\n      // If registration end date not set or registration end date is after start date now\n      /*if (!regEndDate || newDate >= regEndDate) {\n        regEndDateInput.datepicker(\n          \"setDate\",\n          newDate.subtract(3, \"days\").toDate()\n        );\n      }*/\n\n      if (!endDate || newDate > endDate) {\n        endDateInput.datepicker(\"setDate\", newDate.toDate());\n      }\n    });\n  }\n\n  courseEventsTableFormTargetConnected(element) {\n    element.addEventListener(\"submit\", e => e.preventDefault());\n    element.addEventListener(\"change\", e => {\n      if (e.target.className.includes(\"select2-search__field\")) return; // Do not let select2 textarea trigger query fetch\n      clearTimeout(searchQueryDelay);\n      searchQueryDelay = setTimeout(() => fetchEvents(), 5); // Check select2.js line 88 for this being a thing\n    });\n\n    element\n      .querySelector(\"input[name='search[search_input]']\")\n      .addEventListener(\"input\", () => {\n        clearTimeout(searchInputDelay);\n        searchInputDelay = setTimeout(() => fetchEvents(), 1000);\n      });\n\n    const fetchEvents = () => {\n      courseEventTableFormSignal?.abort();\n      courseEventTableFormSignal = new AbortController();\n\n      clearTimeout(searchInputDelay);\n\n      const formData = new FormData(element);\n      const params = new URLSearchParams(formData);\n      const loadingDelay = setTimeout(() => showLoading(), 200);\n\n      axios\n        .get(element.action + \"?\" + params.toString(), {\n          redirect: \"error\",\n          headers: {\n            Accept: \"text/vnd.turbo-stream.html\"\n          },\n          maxRedirects: 0,\n          signal: courseEventTableFormSignal.signal\n        })\n        .then(({ data }) => {\n          clearTimeout(loadingDelay);\n          Turbo.session.receivedMessageFromStream(data);\n          courseEventTableFormSignal = null;\n          history.replaceState(\n            history.state,\n            null,\n            `${location.pathname}?${params.toString()}`\n          );\n        })\n        .catch(error => {\n          if (error.name != \"AbortError\") console.error(error);\n          else console.warn(error);\n        });\n    };\n\n    const showLoading = () => {\n      if (document.querySelector(\"#tableFormLoadingRow\")) {\n        return;\n      }\n      const loadingIndicatorBtn = document\n        .querySelector(\"#courseEventLoadingIndicator\")\n        .content.cloneNode(true);\n\n      document\n        .querySelector(\"[data-course-events-target='courseEventsTableContent']\")\n        .prepend(loadingIndicatorBtn);\n    };\n  }\n\n  async loadMoreEvents(evt) {\n    const { currentTarget } = evt;\n    currentTarget.disabled = true;\n\n    LoadingSpinnerHandler.add(currentTarget);\n\n    const form = this.courseEventsTableFormTarget;\n    const formData = new FormData(form);\n\n    formData.append(\"search[page]\", evt.params.tableFormPage);\n    formData.append(\"search[load_more]\", true);\n\n    const params = new URLSearchParams(formData);\n\n    try {\n      const { data } = await axios.get(form.action + \"?\" + params.toString(), {\n        redirect: \"error\",\n        headers: {\n          Accept: \"text/vnd.turbo-stream.html\"\n        },\n        maxRedirects: 0\n      });\n\n      Turbo.session.receivedMessageFromStream(data);\n    } catch (error) {\n      console.error(error);\n    }\n  }\n\n  openTableFilters() {\n    openMobileDialog($(\"#courseEventFilter\")[0]);\n  }\n\n  goToCourseEvent(evt) {\n    const { params, target } = evt;\n    if (target.tagName == \"A\" || target.tagName == \"I\") {\n      return;\n    }\n    Turbo.visit(params.url);\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport {\n  openMobileDialog,\n  closeMobileDialog\n} from \"@mixins/mobileDialogToggler.js\";\n\nexport default class extends Controller {\n  initialize() {\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n  }\n\n  index() {\n    const searchDisciplineParam = new URLSearchParams(window.location.search);\n    if (searchDisciplineParam.has(\"tab\")) {\n      const disciplineTabNav = document.querySelector(\n        `[href=\"#${searchDisciplineParam.get(\"tab\")}-tab\"]`\n      );\n      window.history.replaceState(\n        window.history.state,\n        null,\n        window.location.href.split(\"?\")[0] +\n          \"#\" +\n          searchDisciplineParam.get(\"tab\")\n      );\n      if (disciplineTabNav) disciplineTabNav.click();\n      return;\n    }\n\n    const discipline = location.hash;\n    const disciplineTabNav = document.querySelector(\n      `[href=\"${discipline}-tab\"]`\n    );\n    if (disciplineTabNav) disciplineTabNav.click();\n  }\n\n  setHash({ params }) {\n    Turbo.visit(window.location.pathname + \"#\" + params.hash, {\n      action: \"replace\"\n    });\n  }\n\n  selectDifferentYearWithHash(evt) {\n    evt.preventDefault();\n    Turbo.visit(`${evt.target.href}${location.hash}`);\n  }\n\n  openMenu({ currentTarget: target }) {\n    openMobileDialog($(target.dataset.target)[0]);\n  }\n\n  closeMenu({ currentTarget: target }) {\n    closeMobileDialog($(target.dataset.target)[0]);\n    const selectedText = target\n      .closest(`.tab-wrapper`)\n      .querySelector(`.currentMenuSelected`);\n    if (selectedText) selectedText.innerText = target.innerText;\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nlet allSelected = false;\n\nexport default class extends Controller {\n  toggleAllPeopleSelection() {\n    allSelected = !allSelected;\n    Array.from(\n      document.querySelectorAll(`input[name=\"personSelected[]\"]`)\n    ).forEach(el => {\n      el.checked = allSelected;\n    });\n  }\n\n  goToMassAssignment(evt) {\n    evt.preventDefault();\n\n    const params = new URLSearchParams();\n    Array.from(\n      document.querySelectorAll(`input[name=\"personSelected[]\"]`)\n    ).forEach(el => {\n      if (el.checked) {\n        params.append(\"personSelected[]\", el.value);\n      }\n    });\n\n    Turbo.visit(evt.currentTarget.href + \"?\" + params.toString());\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport {\n  openMobileDialog,\n  closeMobileDialog\n} from \"@mixins/mobileDialogToggler\";\nimport { createPopper } from \"@popperjs/core\";\nimport { backgroundJobStarted } from \"@channels/ratsanet_jobs_channel\";\nimport * as bootstrap from \"bootstrap\";\n\nimport { setupJavascript } from \"../setup\";\n\nexport default class extends Controller {\n  static targets = [\n    \"container\",\n    \"loginFormPopperAnchor\",\n    \"broadcastJobsManualTriggerWatcher\"\n  ];\n\n  // This is more reliable than connect() due to annoyingly gets called multiple times\n  containerTargetConnected() {\n    setupJavascript();\n  }\n\n  broadcastJobsManualTriggerWatcherTargetConnected(el) {\n    const domObserver = new MutationObserver(() => {\n      backgroundJobStarted();\n    });\n\n    domObserver.observe(el, {\n      childList: true,\n      subtree: false,\n      attributes: false\n    });\n  }\n\n  openMobileDialog({ currentTarget }) {\n    let content;\n    if (currentTarget.dataset.target) {\n      content = document\n        .querySelector(currentTarget.dataset.target)\n        .content.cloneNode(true);\n      const externalDialog = document.querySelector(\"#mobileDialog\");\n      externalDialog.prepend(content);\n      openMobileDialog(externalDialog.querySelector(\".mobile-andmed\"));\n      externalDialog.classList.remove(\"d-none\");\n    } else {\n      openMobileDialog($(currentTarget).siblings(\".mobile-andmed\")[0]);\n    }\n  }\n\n  closeMobileDialog(evt) {\n    evt.preventDefault();\n    // .mobile-andmed is the parent for the whole dialog content\n    const dialog = evt.currentTarget.closest(\".mobile-andmed\");\n    closeMobileDialog(dialog);\n    if (dialog.parentNode.id == \"mobileDialog\") {\n      dialog.parentNode.removeChild(dialog);\n      dialog.classList.add(\"d-none\");\n    }\n  }\n\n  mobileDialogSubmit(evt) {\n    evt.preventDefault();\n    // This method is intended for mobile dialog that's used as filter selection\n    // It closes the dialog and then submits form\n    const {\n      currentTarget,\n      params: { target }\n    } = evt;\n\n    const dialog = currentTarget.closest(\".mobile-andmed\");\n    closeMobileDialog(dialog);\n\n    if (dialog.parentNode.id == \"mobileDialog\") {\n      dialog.parentNode.removeChild(dialog);\n      dialog.classList.add(\"d-none\");\n    }\n\n    setTimeout(() => {\n      const submit = document.querySelector(`${target} button[type=submit]`);\n      document.querySelector(`${target}`).requestSubmit(submit);\n    }, 5);\n  }\n\n  expand({ params }) {\n    const target = document.querySelector(params.target);\n    if (target) {\n      target.classList.toggle(\"d-none\");\n    }\n  }\n\n  async openLoginForm() {\n    if (document.querySelector(\"#loginFormOverlay\")) return;\n    const loginForm = document.querySelector(\"#modalLoginForm\");\n\n    const popperInstance = createPopper(\n      this.loginFormPopperAnchorTarget,\n      loginForm,\n      {\n        placement: \"bottom-end\",\n        modifiers: [\n          {\n            name: \"offset\",\n            options: {\n              offset: [10, 20]\n            }\n          }\n        ]\n      }\n    );\n\n    const loginFormExit = () => {\n      loginForm.classList.add(\"d-none\");\n      document.querySelector(\"#loginFormOverlay\")?.remove();\n      document.body.classList.remove(\"modal-login-form-overflow-x\");\n      popperInstance.destroy();\n      loginForm\n        .querySelector(\".close\")\n        .removeEventListener(\"click\", loginFormExit);\n    };\n\n    loginForm.querySelector(\".close\").addEventListener(\"click\", loginFormExit);\n\n    const overlay = document.createElement(\"div\");\n    overlay.id = \"loginFormOverlay\";\n    overlay.classList.add(\"rts-overlay\");\n\n    overlay.addEventListener(\"click\", loginFormExit);\n\n    document.body.append(overlay);\n    document.body.classList.add(\"modal-login-form-overflow-x\");\n\n    loginForm.classList.remove(\"d-none\");\n  }\n}\n","var map = {\n\t\"./ratsanet_jobs_channel.js\": 8169,\n\t\"channels/ratsanet_jobs_channel.js\": 8169\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 3760;","import { Controller } from \"@hotwired/stimulus\";\nimport axios from \"axios\";\nimport { openMobileDialog } from \"@mixins/mobileDialogToggler\";\n\nlet eventTableFormSignal = null;\nlet searchInputDelay = null;\n\nexport default class extends Controller {\n  static targets = [\"cupSearch\", \"cupTableContent\", \"eventsForCupInput\"];\n\n  disconnect() {\n    eventTableFormSignal?.abort();\n  }\n\n  openCupsFilter() {\n    openMobileDialog($(\"#cupSearch\")[0]);\n  }\n\n  async cupSearchTargetConnected(element) {\n    // idk, going to an event page and returning back has a chance\n    // selecting new date will just do nothing\n    await new Promise(resolve => setTimeout(() => resolve(true), 10));\n\n    $(\"#search_years\")\n      .datepicker({\n        multidate: true,\n        clearBtn: false,\n        autoclose: true,\n        minViewMode: \"years\",\n        maxViewMode: \"years\",\n        forceParse: true,\n        format: {\n          toDisplay: function (date) {\n            return DayJS(date).format(\"YYYY\");\n          },\n          toValue: function (date) {\n            return DayJS(date + \"-01-15\").toDate();\n          }\n        }\n      })\n      .on(\"change\", () => {\n        fetchEvents();\n      });\n\n    element.addEventListener(\"submit\", e => e.preventDefault());\n\n    element.querySelectorAll(\"input\").forEach(el => {\n      el.addEventListener(\n        \"input\",\n        () => {\n          clearTimeout(searchInputDelay);\n          switch (el.name) {\n            case \"search[search_input]\":\n              searchInputDelay = setTimeout(() => fetchEvents(), 1000);\n              break;\n            case \"search[years]\":\n              // ignore\n              break;\n            default:\n              fetchEvents();\n          }\n        },\n        { passive: true }\n      );\n    });\n\n    element.querySelectorAll(\"[data-behaviour=select2]\").forEach(el => {\n      $(el).on(\"change\", () => fetchEvents());\n    });\n\n    const fetchEvents = () => {\n      clearTimeout(searchInputDelay);\n      // Refresh the signal\n      eventTableFormSignal = new AbortController();\n\n      const form = new FormData(document.querySelector(\"#cupSearch\"));\n      const params = new URLSearchParams(form);\n\n      const loadingDelay = setTimeout(() => showLoading(), 300);\n\n      axios\n        .get(element.action + \"?\" + params.toString(), {\n          redirect: \"error\",\n          headers: {\n            Accept: \"text/vnd.turbo-stream.html\"\n          },\n          maxRedirects: 0,\n          signal: eventTableFormSignal.signal\n        })\n        .then(({ data: response }) => {\n          clearTimeout(loadingDelay);\n          Turbo.renderStreamMessage(response);\n\n          if (this.cupTableContentTarget.childElementCount == 0) {\n            this.cupTableContentTarget.innerHTML = \"\";\n            this.cupTableContentTarget.append(\n              document\n                .querySelector(\"#cupEmptyResponse\")\n                .content.cloneNode(true)\n            );\n            return;\n          }\n        })\n        .catch(error => {\n          if (error.name != \"AbortError\") console.error(error);\n          else console.warn(error);\n        });\n    };\n\n    const showLoading = () => {\n      const loadingIndicatorBtn = document\n        .querySelector(\"#cupLoadingIndicator\")\n        .content.cloneNode(true);\n      loadingIndicatorBtn.id = \"cupTableLoadingText\";\n      this.cupTableContentTarget.prepend(loadingIndicatorBtn);\n    };\n  }\n\n  eventsForCupInputTargetConnected(element) {\n    $(element).select2({\n      minimumInputLength: 3,\n      ajax: {\n        delay: 250,\n        url: \"/cups/autocomplete_events\",\n        dataType: \"json\",\n        data(params) {\n          console.log(\"HEY\");\n          const form = element.form;\n          const startdate = form.querySelector(\"[name='cup[startdate]']\").value;\n          const enddate = form.querySelector(\"[name='cup[enddate]']\").value;\n          const disciplineIds = [];\n          $(\"#cup_discipline_ids\")\n            .find(\":selected\")\n            .each((i, option) => disciplineIds.push(option.value));\n          return {\n            term: params.term,\n            startdate,\n            enddate,\n            discipline_ids: disciplineIds\n          };\n        }\n      }\n    });\n\n    document.addEventListener(\n      \"turbo:before-cache\",\n      () => {\n        const select = $(element);\n        if (select.hasClass(\"select2-hidden-accessible\"))\n          select.select2(\"destroy\");\n      },\n      { capture: true, once: true }\n    );\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nexport default class extends Controller {\n  connect() {\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n\n    $(\"#startdateDatepicker\").on(\"change\", () => {\n      const startDate = DayJS($(\"#startdateDatepicker\").datepicker(\"getDate\"));\n      const endDate = DayJS($(\"#enddateDatepicker\").datepicker(\"getDate\"));\n      if (startDate.isAfter(endDate)) {\n        $(\"#enddateDatepicker\").datepicker(\"setDate\", startDate.toDate());\n      }\n      $(\"#enddateDatepicker\").datepicker(\"setStartDate\", startDate.toDate());\n    });\n\n    $(\"#enddateDatepicker\").on(\"change\", () => {\n      const startDate = DayJS($(\"#startdateDatepicker\").datepicker(\"getDate\"));\n      const endDate = DayJS($(\"#enddateDatepicker\").datepicker(\"getDate\"));\n      if (endDate.isBefore(startDate)) {\n        $(\"#startdateDatepicker\").datepicker(\"setDate\", startDate.toDate());\n      }\n    });\n  }\n}\n","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context('.', true, /_channel\\.js$/)\nchannels.keys().forEach(channels)\n","import { Controller } from \"@hotwired/stimulus\";\nimport axios from \"axios\";\n\nexport default class extends Controller {\n  static targets = [\"newHorseOwner\", \"form\"];\n\n  newHorseOwnerTargetConnected() {\n    var value = $(\".roleType:checked\").val();\n    $(\"#\" + value).show();\n\n    $(\".roleType\").on(\"change\", function (e) {\n      if (e.target.value == \"person\") {\n        $(\"#person\").show();\n        $(\"#juridical\").hide();\n      } else if (e.target.value == \"juridical\") {\n        $(\"#person\").hide();\n        $(\"#juridical\").show();\n      }\n    });\n  }\n\n  formTargetConnected(element) {\n    element.addEventListener(\"submit\", async evt => {\n      evt.preventDefault();\n      const formData = new FormData(evt.target);\n\n      const { data } = await axios.post(\n        \"/horse/new_horse_owner_validation\",\n        formData,\n        {\n          headers: {\n            Accept: \"application/json\"\n          }\n        }\n      );\n\n      Turbo.session.receivedMessageFromStream(data.document);\n\n      requestAnimationFrame(() => {\n        window.initSelect2();\n\n        if (data.valid == false) {\n          return;\n        }\n\n        document.querySelector(\"#horseOwnerPdfGenerator form\").submit();\n      });\n    });\n  }\n}\n","import { Modal } from \"bootstrap\";\nimport { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [];\n\n  goToClub({ currentTarget }) {\n    const path = currentTarget.dataset.clubPath;\n    Turbo.visit(path);\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nimport axios from \"axios\";\nimport { tinymceInit } from \"@/plugins/tinymce\";\n\nexport default class extends Controller {\n  static targets = [\"body\"];\n\n  formTargetConnected(element) {\n    tinymceInit({\n      toolbar: \"bold italic underline strikethrough | removeformat\"\n    });\n\n    const getRecipients = function () {\n      const formData = [];\n      Array.from(\n        element.querySelectorAll(\n          \"[name='mass_mail[competition_division_difficulty_ids][]']:not(:disabled)\"\n        )\n      ).forEach(el => {\n        if (el.checked) {\n          formData.push(el.value);\n        }\n      });\n\n      $(\"#recipients\").hide();\n      $(\"#recipients_loader\").show();\n\n      if (!$(\"#recipient_rows\").data(\"update-url\")) {\n        return;\n      }\n      axios({\n        url: $(\"#recipient_rows\").data(\"update-url\"),\n        method: \"POST\",\n        data: {\n          mass_mail: {\n            competition_division_difficulty_ids: formData\n          }\n        },\n        headers: {\n          Accept: \"application/json;charset=UTF-8;\",\n          \"X-CSRF-Token\": document.getElementsByName(\"csrf-token\")[0].content\n        }\n      })\n        .then(({ data }) => {\n          // data is the object that contains all info returned\n          let trHTML = \"\";\n          if (data) {\n            $.each(data, (i, item) => {\n              trHTML +=\n                '<tr><td><input type=\"checkbox\" checked=\"true\" class=\"recipient-email\" name=\"mass_mail[recipient_person_ids][]\" value=\"' +\n                item.id +\n                '\"/> </td><td>' +\n                item.name +\n                \"</td><td>\" +\n                item.email +\n                \"</td></tr>\";\n            });\n          }\n\n          return Promise.resolve(trHTML);\n        })\n        .then(html => {\n          $(\"#recipient_rows\").empty().append(html);\n          countRecipients();\n\n          $(\"#recipients_loader\").hide();\n          $(\"#recipients\").show();\n          $(\"#checkAllRecipients\").prop(\"checked\", true);\n        })\n        .catch(err => {\n          console.error(err);\n          alert(\"Tekkis viga. Palun proovi hiljem uuesti.\");\n        });\n    };\n\n    $(\":checkbox[name='mass_mail[competition_division_difficulty_ids][]']\").on(\n      \"change\",\n      getRecipients\n    );\n\n    $(\".checkAllDifficulties\").on(\"click\", function (evt) {\n      $(this)\n        .closest(\"table\")\n        .find(\"tbody\")\n        .find(\n          \":checkbox[name='mass_mail[competition_division_difficulty_ids][]']:not(:disabled)\"\n        )\n        .prop(\"checked\", $(this).prop(\"checked\"));\n\n      getRecipients(evt);\n    });\n\n    $(\"#checkAllRecipients\").on(\"click\", function (evt) {\n      $(\":checkbox.recipient-email:not(:disabled)\").prop(\n        \"checked\",\n        $(this).prop(\"checked\")\n      );\n      countRecipients();\n      //getRecipients(evt);\n    });\n\n    const countRecipients = () => {\n      const recipientCheckboxes = $(\":checkbox.recipient-email\");\n      let recipientsCount = recipientCheckboxes.filter(\":checked\").length;\n      $(\"#recipients_count\").html(recipientsCount);\n      recipientCheckboxes.on(\"change\", function () {\n        recipientsCount = recipientCheckboxes.filter(\":checked\").length;\n        $(\"#recipients_count\").html(recipientsCount);\n      });\n    };\n\n    countRecipients();\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { Collapse } from \"bootstrap\";\nimport { LoadingSpinnerHandler } from \"@mixins/btnLoading\";\nimport axios from \"axios\";\nimport parseTableRows from \"@mixins/parseTableRows\";\nimport { openMobileDialog } from \"@mixins/mobileDialogToggler\";\nimport RatsanetTable from \"@/ratsanetTable.js\";\n// Check horses_controller.rb \"per_page\" in index and event_results too if changing this value!\nconst HORSE_TABLE_LOAD_MORE_PER_PAGE = 30;\n\nlet controller = null;\nexport default class extends Controller {\n  static targets = [\"searchTable\", \"legacyResults\", \"modernResults\", \"form\"];\n\n  static values = {\n    loadMoreTablePage: Number\n  };\n\n  connect() {\n    controller = new AbortController();\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n  }\n\n  disconnect() {\n    controller.abort();\n  }\n\n  goToHorse(evt) {\n    const { currentTarget, target } = evt;\n    if (target.tagName == \"A\") evt.preventDefault();\n    let path = null;\n    path = currentTarget.dataset.horsePath;\n    if (path) Turbo.visit(path);\n  }\n\n  openHorseFilter() {\n    if (window.innerWidth >= 768) {\n      new Collapse(\"#search_details\");\n    } else {\n      openMobileDialog($(\"#search_details\")[0]);\n    }\n  }\n\n  loadMoreHorses(evt) {\n    evt.preventDefault();\n    const { target } = evt;\n    target.disabled = true;\n    LoadingSpinnerHandler.add(target);\n\n    const form = new FormData($(\"#horseFiltersForm\")[0]);\n    form.set(\"page\", this.loadMoreTablePageValue);\n    form.set(\"load_more\", true);\n    const params = new URLSearchParams(form);\n\n    axios({\n      method: \"GET\",\n      url: target.href + \"?\" + params.toString(),\n      responseType: \"text\",\n      headers: {\n        Accept: \"text/html;charset=UTF-8;\"\n      },\n      signal: controller.signal\n    })\n      .then(({ data }) => {\n        this.loadMoreTablePageValue++;\n        target.disabled = false;\n        LoadingSpinnerHandler.remove(target);\n\n        const rows = parseTableRows(data);\n        if (rows.length < HORSE_TABLE_LOAD_MORE_PER_PAGE) {\n          target.remove();\n        }\n        // Same thing with person search page: claims doesn't exist but yet here it is\n        const table = document.querySelector(\n          \"table[data-horses-target=searchTable] > tbody\"\n        );\n        table.append(...rows);\n      })\n      .catch(err => {\n        console.error(err);\n      });\n  }\n\n  show() {\n    if (!window.URLSearchParams) {\n      $(\n        \"#horse_competition_results [data-action=click->horses#shareCompetitionsLink]\"\n      ).prop(\"disabled\", \"disabled\");\n    }\n\n    if (window.location.search) {\n      var url = new URLSearchParams(window.location.toString().split(\"?\")[1]);\n\n      $(`[href=\"#results_tab\"]`).trigger(\"click\");\n\n      var content = document.querySelector(\"#horse_competition_results\");\n      for (let [k, v] of url.entries()) {\n        var input = content.querySelector(`[name=\"${k}\"]`);\n        if (input) {\n          if (input.type == \"checkbox\") {\n            input.click();\n          } else {\n            $(input).val(v);\n          }\n        }\n      }\n      content.scrollIntoView();\n      window.scrollBy(0, -54);\n    }\n  }\n\n  shareCompetitionsLink() {\n    const form = document.querySelector(\"#horse_competition_results form\");\n    const formData = new FormData(form);\n    const url = new URLSearchParams(formData);\n\n    const alert = document.querySelector(\n      \"#horse_competition_results .share-link\"\n    );\n\n    navigator.clipboard\n      .writeText(\n        window.location.toString().split(\"?\")[0] + \"?\" + url.toString()\n      )\n      .then(() => {\n        alert.classList.remove(\"d-none\");\n        setTimeout(() => {\n          alert.classList.add(\"d-none\");\n        }, 4000);\n      });\n  }\n\n  resultsToggle() {\n    this.legacyResultsTarget.classList.toggle(\"d-none\");\n    this.modernResultsTarget.classList.toggle(\"d-none\");\n  }\n\n  modernResultsTargetConnected() {\n    new RatsanetTable({\n      eagerFetch: true,\n      contentBodySelector: \"[data-horses-target='modernResults']\",\n      itemsPerPage: 20\n    });\n  }\n\n  new_horse_owner() {\n    var value = $(\".roleType:checked\").val();\n    $(\"#\" + value).show();\n\n    $(\".roleType\").on(\"change\", function (e) {\n      if (e.target.value == \"person\") {\n        $(\"#person\").show();\n        $(\"#juridical\").hide();\n      } else if (e.target.value == \"juridical\") {\n        $(\"#person\").hide();\n        $(\"#juridical\").show();\n      }\n    });\n  }\n\n  formTargetConnected() {\n    $(\"#horse_color_id\")\n      .on(\"change\", function () {\n        $(\"#horse_color_id option:selected\").each(function () {\n          if ($(this).attr(\"value\") == \"5\") {\n            $(\".horse_color_free_text\").show(\"slow\");\n          } else {\n            $(\".horse_color_free_text\").hide(\"slow\");\n          }\n        });\n      })\n      .trigger(\"change\");\n\n    $(\"#horse_breed_id\")\n      .on(\"change\", function () {\n        $(\"#horse_breed_id option:selected\").each(function () {\n          if ($(this).attr(\"value\") == \"90\") {\n            $(\".horse_breed_free_text\").show(\"slow\");\n          } else {\n            $(\".horse_breed_free_text\").hide(\"slow\");\n          }\n        });\n      })\n      .trigger(\"change\");\n\n    if ($(\"[name='horse[horse_type]']\").attr(\"value\") == \"pony\") {\n      $(\"#pony_section\").show();\n    }\n    $(\"[name='horse[horse_type]']\").on(\"click\", function () {\n      if ($(this).attr(\"value\") == \"pony\") {\n        $(\"#pony_section\").show(\"slow\");\n      } else {\n        $(\"#pony_section\").hide(\"slow\");\n      }\n    });\n  }\n}\n","const error = `<tr><td colspan=\"99\" class=\"table-danger\">\n    <strong>Tekkis tõrge!</strong>\n  </td>\n</tr>\n`;\nconst loading = `<tr class=\"rtspage-loading\">\n  <td colspan=\"99\">\n    <i class=\"fas fa-spinner fa-spin fa-lg me-2\"></i><strong>Laen andmeid..</strong>\n  </td>\n</tr>\n`;\n\nimport axios from \"axios\";\n\nexport default class RatsanetTable {\n  /**\n   * @desc Custom reactive table with features: search, filters, pagination and turbo-stream support\n   * @param config.contentBodySelector String. Query selector to parent/wrapper, where it hosts form (search, filters) and table itself\n   * @param config.itemsPerPage Integer. Number how much items to display per page\n   * @param config.eagerFetch Boolean. When true, automatically fetch results from server\n   * @param config.observerTrigger String. Example: When the table is inside a tab and is hidden, set a querySelector string to the tab that gets .active class.\n   *                               When MutationObserver catches the tab element has received .active class, trigger query and disconnect the now redundant observer\n   */\n  constructor(config) {\n    this.contentBodySelector = config.contentBodySelector;\n\n    this.searchInputInUse = false;\n\n    this._pagesRange = [];\n    this.timer = null;\n    this.options = {\n      currentPageIndex: 0,\n      itemsPerPage: config.itemsPerPage || 15,\n      foundTotal: 0\n    };\n\n    if (this.$form) {\n      this.$form.addEventListener(\"change\", evt => {\n        clearTimeout(this.timer);\n        if (evt.target.dataset.searchFilter) {\n          this.timer = setTimeout(() => {\n            this.options.currentPageIndex = 0;\n            this._fetchResults();\n          }, 200);\n        } else {\n          this.options.currentPageIndex = 0;\n          this._fetchResults();\n        }\n      });\n\n      if (this.$form.querySelector(\"[data-search-filter]\")) {\n        this.$form\n          .querySelector(\"[data-search-filter]\")\n          .addEventListener(\"input\", ({ target }) => {\n            const val = target.value;\n            if (val && typeof val === \"string\" && val.length >= 3) {\n              this.searchInputInUse = true;\n              clearTimeout(this.timer);\n              this.timer = setTimeout(() => {\n                this.options.currentPageIndex = 0;\n                this._fetchResults();\n              }, 750);\n            } else if (this.searchInputInUse) {\n              clearTimeout(this.timer);\n              this.searchInputInUse = false;\n              this.options.currentPageIndex = 0;\n              this._fetchResults();\n            }\n          });\n      }\n\n      if (this.$table.getAttribute(\"data-rts-init\") != \"true\") {\n        if (config.eagerFetch === true) {\n          this._fetchResults();\n          this.$table.setAttribute(\"data-rts-init\", \"true\");\n        } else if (config.observerTrigger) {\n          const observer = new MutationObserver(mutationList => {\n            mutationList.forEach(mutation => {\n              if (this.$table.getAttribute(\"data-rts-init\") === \"true\") return;\n              switch (mutation.type) {\n                case \"attributes\":\n                  if (mutation.target.classList.contains(\"active\")) {\n                    this._fetchResults();\n                    this.$table.setAttribute(\"data-rts-init\", \"true\");\n                    observer.disconnect();\n                  }\n                  break;\n              }\n            });\n          });\n          const targetNode = document.querySelector(config.observerTrigger);\n          observer.observe(targetNode, {\n            childList: false,\n            attributes: true,\n            // Omit (or set to false) to observe only changes to the parent node\n            subtree: false\n          });\n        } else {\n          console.error(\n            \"config.observerTrigger is missing! Add one or set eagerFetch to true\"\n          );\n        }\n      } else {\n        if (this.$paginationContainer) {\n          // Turbo caches the page without event listeners on navigation control. Need to re-attach listeners for to work again\n          this.options.currentPageIndex = Number(\n            this.$paginationContainer.getAttribute(\n              \"data-rts-current-page-index\"\n            )\n          );\n          this.options.foundTotal = Number(\n            this.$paginationContainer.getAttribute(\"data-rts-found-total\")\n          );\n\n          this.pagesRange = this.options.foundTotal; // Triggers re-render on navigation control\n        }\n      }\n    }\n  }\n\n  get $contentBody() {\n    return document.querySelector(this.contentBodySelector);\n  }\n\n  get $form() {\n    return this.$contentBody.querySelector(\"form\");\n  }\n\n  get $table() {\n    return this.$contentBody.querySelector(\"table\");\n  }\n\n  get $tableBody() {\n    return this.$contentBody.querySelector(\"table tbody\");\n  }\n\n  get $paginationContainer() {\n    return this.$contentBody.querySelector(\n      \".pagination.rts-pagination-container\"\n    );\n  }\n\n  get pagesRange() {\n    return this._pagesRange;\n  }\n\n  set pagesRange(v) {\n    if (!this.$paginationContainer) return;\n    this._pagesRange = this._updatePageRange(v);\n    // Set these attributes so when user comes back and turbo gives cached version allow to re-render pagination with listeners\n    // to have it work again\n    this.$paginationContainer.setAttribute(\n      \"data-rts-current-page-index\",\n      this.options.currentPageIndex\n    );\n    this.$paginationContainer.setAttribute(\n      \"data-rts-found-total\",\n      this.options.foundTotal\n    );\n    this._renderPagination(); // Refresh pagination elements\n  }\n\n  _updatePageRange(totalCount) {\n    const range = [];\n    const pages = Math.ceil(parseInt(totalCount) / this.options.itemsPerPage);\n    for (let i = 1; pages >= i; i++) {\n      range.push(i);\n    }\n    return range.flat();\n  }\n\n  _renderPagination() {\n    if (!this.$paginationContainer) return;\n    this.$paginationContainer.innerHTML = \"\"; // Clear out to re-render\n\n    let renderList = [];\n    const pages = this.pagesRange;\n    if (pages.length == 0) {\n      return; // Do nothing\n    } else if (pages.length <= 5) {\n      // If only 5 pages, return all\n      renderList = pages;\n    } else {\n      const currentPageIndex = this.options.currentPageIndex;\n      if (currentPageIndex + 2 >= pages.length - 1) {\n        renderList = pages.slice(renderList.length - 4, renderList.length - 1);\n      } else {\n        let start = currentPageIndex - 2 <= 0 ? 0 : currentPageIndex - 2;\n        let end =\n          currentPageIndex + 3 >= pages.length - 1\n            ? pages.length - 1\n            : currentPageIndex + 3;\n        renderList = pages.slice(start, end);\n      }\n\n      if (!renderList.includes(1)) {\n        const leftSide = [1];\n        if (!renderList.includes(2)) {\n          leftSide.push(\"...\");\n        }\n        renderList = [...leftSide, ...renderList];\n      }\n\n      if (!renderList.includes(pages[pages.length - 1])) {\n        const rightSide = [pages[pages.length - 1]];\n        if (!renderList.includes(pages[pages.length - 2])) {\n          rightSide.unshift(\"...\");\n        }\n        renderList = [...renderList, ...rightSide];\n      }\n    }\n\n    renderList.forEach(pageNum => {\n      if (pageNum === \"...\") {\n        var el = document.createElement(\"li\");\n        el.className = \"page-number disabled rts-pagination-dots\";\n        el.setAttribute(\"tabindex\", \"-1\");\n\n        const linkElement = document.createElement(\"div\");\n        linkElement.classList.add(\"page-link\");\n        linkElement.classList.add(\"disabled\");\n        linkElement.setAttribute(\"aria-disabled\", \"true\");\n        linkElement.innerText = pageNum;\n        el.appendChild(linkElement);\n        this.$paginationContainer.appendChild(el);\n        return;\n      }\n      var el = document.createElement(\"li\");\n      el.className = `${\n        pageNum - 1 == this.options.currentPageIndex ? \"active\" : \"\"\n      } page-item`;\n      el.setAttribute(\"data-page-index\", pageNum - 1);\n\n      const linkElement = document.createElement(\"a\");\n      linkElement.classList.add(\"page-link\");\n      linkElement.innerText = pageNum;\n\n      el.appendChild(linkElement);\n      el.addEventListener(\"click\", this._changePage.bind(this));\n      this.$paginationContainer.appendChild(el);\n    });\n  }\n\n  _changePage({ currentTarget: target }) {\n    this.options.currentPageIndex = Number(target.dataset.pageIndex);\n    this.$contentBody.scrollIntoView({\n      behavior: \"smooth\",\n      block: \"end\"\n    });\n    this._fetchResults();\n  }\n\n  _fetchResults() {\n    if (!this.$tableBody) return;\n    this.$tableBody.innerHTML = loading;\n    const form = this.$form;\n\n    const formData = new FormData(form);\n    const params = {\n      target: `${this.contentBodySelector} table tbody`,\n      offset: this.options.currentPageIndex * this.options.itemsPerPage,\n      limit: this.options.itemsPerPage\n    };\n\n    for (let [key, v] of formData.entries()) {\n      if (v) {\n        if (v == \"on\") v = \"1\";\n        params[key] = v;\n      }\n    }\n\n    const token = document.getElementsByName(\"csrf-token\")[0]?.content;\n    axios({\n      url: form.action,\n      params,\n      method: \"get\",\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html;charset=UTF-8;\",\n        \"X-CSRF-Token\": token\n      }\n    })\n      .then(({ data: response }) => {\n        Turbo.session.receivedMessageFromStream(response);\n        setTimeout(() => {\n          const totalFound = this.$tableBody.querySelector(\n            \"[data-result-total]\"\n          ).dataset.resultTotal;\n          this.options.foundTotal = Number(totalFound);\n          this.pagesRange = Number(totalFound);\n        }, 100);\n      })\n      .catch(e => {\n        console.error(e);\n        this.$tableBody.innerHTML = error;\n      });\n  }\n}\n","export const LOADING_SPINNER =\n  '<span class=\"spinner-border spinner-border-sm me-2 rts-bootstrap-loading\" role=\"status\" aria-hidden=\"true\"></span>';\n\nexport const LoadingSpinnerHandler = {\n  add: el => {\n    const node = document\n      .createRange()\n      .createContextualFragment(LOADING_SPINNER);\n    el.prepend(node);\n    if (el.querySelector(\"i.fas\"))\n      el.querySelector(\"i.fas\").classList.add(\"d-none\");\n  },\n  remove: el => {\n    el.querySelector(\".rts-bootstrap-loading\").remove();\n    if (el.querySelector(\"i.fas\"))\n      el.querySelector(\"i.fas\").classList.remove(\"d-none\");\n  }\n};\n\nexport function removeLoading() {\n  $(\".rts-loading-state\").each(function (i, el) {\n    $(el).removeClass(\"disabled\");\n    $(el).removeClass(\"rts-loading-state\");\n    if ($(el).find(\"i.fa\").length >= 1) {\n      $(el).find(\"i.fa\").removeClass(\"d-none\");\n    }\n  });\n  $(\".rts-bootstrap-loading\").each(function (i, el) {\n    $(el).remove();\n  });\n}\nexport function disableButton(el) {\n  $(el).addClass(\"disabled rts-loading-state\");\n}\n\nexport function addLoading(el) {\n  $(el).on(\"click\", function () {\n    if (this.tagName == \"INPUT\") {\n      if ($(this).parent().find(\".rts-bootstrap-loading\").length == 0) {\n        $(this).parent().prepend(LOADING_SPINNER);\n      }\n    } else {\n      if ($(this).find(\".rts-bootstrap-loading\").length == 0) {\n        $(this).prepend(LOADING_SPINNER);\n      }\n    }\n    if ($(this).find(\"i.fa\").length >= 1) {\n      $(this).find(\"i.fa\").first().addClass(\"d-none\");\n    }\n\n    disableButton(this);\n    setTimeout(function () {\n      $(\"#confirmation_dialog\").on(\"hide.bs.modal\", function (e) {\n        removeLoading();\n      });\n    }, 750);\n  });\n}\n\nexport function initLoadingIndicators() {\n  $(\"#modal\").on(\"show.bs.modal\", function () {\n    removeLoading();\n  });\n\n  $(`\n    a.btn[href^=\"/\"],\n    button.btn,\n    input.btn[name=\"commit\"][type=\"submit\"],\n    button.btn[value^=\"save\"][type=\"submit\"],\n    input.btn[value^=\"save\"][type=\"submit\"],\n    input.btn[data_toggle=\"modal\"]\n  `).each(function (index, el) {\n    addLoading(el);\n  });\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport axios from \"axios\";\nimport Sortable from \"sortablejs/modular/sortable.core.esm.js\";\nimport parseTableRows from \"@mixins/parseTableRows\";\nimport { LoadingSpinnerHandler } from \"@mixins/btnLoading\";\nimport { openMobileDialog } from \"@mixins/mobileDialogToggler\";\nimport { Modal } from \"bootstrap\";\n\nimport { tinymceInit } from \"@/plugins/tinymce\";\n\n//let timeoutForm = null;\n//const CancelToken = axios.CancelToken;\n//let axionCancelToken = CancelToken.source();\n\nlet eventFormFieldCupsSignal = null;\nlet eventTableFormSignal = null;\nlet searchInputDelay = null;\nlet searchQueryDelay = null;\n\n// Check events_controller.rb \"per_page\" in index and event_results too if changing this value!\nconst EVENT_TABLE_LOAD_MORE_PER_PAGE = 75;\n\nexport default class extends Controller {\n  static values = { eventsTableFormPage: Number, eventId: Number };\n  static targets = [\n    \"eventsTableForm\",\n    \"eventsTable\",\n    \"eventsTableContent\",\n    \"eventsTableFormLoadMore\",\n    \"confirmCompetitionOrder\",\n    // Competition division results page\n    \"participantsTotal\",\n    \"updateParticipantsForm\",\n    // Event form page\n    \"eventForm\",\n    // Confirm events from new year to normal projects\n    \"confirmEventsForm\",\n    // Event form targets\n    \"eventFormFieldCups\",\n    \"eventFormFieldStartdate\",\n    \"eventFormFieldEnddate\",\n    \"eventFormFieldDisciplines\",\n\n    \"eventOverviewSubmittedExportModalForm\"\n  ];\n\n  connect() {\n    // Refresh the signal\n    eventTableFormSignal = window.AbortController\n      ? new AbortController()\n      : null;\n\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n  }\n\n  disconnect() {\n    eventTableFormSignal?.abort();\n  }\n\n  eventFormTargetConnected(formElement) {\n    eventForm(formElement);\n  }\n\n  refreshFormFieldCups() {\n    if (!this.hasEventFormFieldCupsTarget) return;\n    const disciplines = this.eventFormFieldDisciplinesTargets\n      .filter(x => x.checked)\n      .map(x => x.value);\n    const startDate = this.eventFormFieldStartdateTarget.value;\n    const endDate = this.eventFormFieldEnddateTarget.value;\n\n    const selected = Array.from(this.eventFormFieldCupsTarget.children)\n      .filter(x => x.selected)\n      .map(x => Number(x.value));\n\n    if (disciplines.length && startDate && endDate) {\n      eventFormFieldCupsSignal?.abort();\n      eventFormFieldCupsSignal = new AbortController();\n\n      const params = new URLSearchParams();\n      params.set(\"search[discipline_ids][]\", disciplines);\n      params.set(\"search[startdate]\", startDate);\n      params.set(\"search[enddate]\", endDate);\n      axios({\n        url: \"/cups/autocomplete_cups?\" + params.toString(),\n        method: \"GET\",\n        headers: {\n          Accept: \"application/json\"\n        },\n        signal: eventFormFieldCupsSignal.signal\n      })\n        .then(({ data }) => {\n          while (this.eventFormFieldCupsTarget.firstChild) {\n            this.eventFormFieldCupsTarget.removeChild(\n              this.eventFormFieldCupsTarget.firstChild\n            );\n          }\n          const seletcedValuesStillExist = [];\n          data.results.forEach(cup => {\n            const option = new Option(\n              cup.text,\n              cup.id,\n              false, // default selected\n              selected.includes(cup.id) // selected\n            );\n            this.eventFormFieldCupsTarget.appendChild(option);\n            if (selected.includes(cup.id)) {\n              seletcedValuesStillExist.push(cup.id);\n            }\n          });\n\n          $(this.eventFormFieldCupsTarget).val(seletcedValuesStillExist);\n          $(this.eventFormFieldCupsTarget).trigger(\"change\");\n        })\n        .catch(err => {\n          console.error(err);\n        });\n    }\n  }\n\n  eventFormFieldDisciplinesTargetConnected(el) {\n    if (el.labels[0].textContent === \"Koolisõit\" && el.checked === true) {\n      document\n        .querySelector(\".event_include_paradressage\")\n        ?.classList?.remove(\"d-none\");\n    }\n  }\n\n  async eventsTableFormTargetConnected(element) {\n    // idk, going to an event page and returning back has a chance\n    // selecting new date will just do nothing\n    await new Promise(resolve => setTimeout(() => resolve(true), 10));\n\n    element.addEventListener(\"submit\", e => e.preventDefault());\n    element.addEventListener(\"change\", e => {\n      if (e.target.className.includes(\"select2-search__field\")) return; // Do not let select2 textarea trigger query fetch\n      clearTimeout(searchQueryDelay);\n      searchQueryDelay = setTimeout(() => fetchEvents(), 5); // Check select2.js line 88 for this being a thing\n    });\n\n    element\n      .querySelector(\"input[name='search[search_input]']\")\n      .addEventListener(\"input\", () => {\n        clearTimeout(searchInputDelay);\n        searchInputDelay = setTimeout(() => fetchEvents(), 1000);\n      });\n\n    const fetchEvents = () => {\n      clearTimeout(searchInputDelay);\n\n      const form = new FormData(this.eventsTableFormTarget);\n      const params = new URLSearchParams(form);\n      const loadingDelay = setTimeout(() => showLoading(), 200);\n\n      axios\n        .get(\"/events/events_query?\" + params.toString(), {\n          redirect: \"error\",\n          headers: {\n            accept: \"text/html; charset=UTF-8\"\n          },\n          maxRedirects: 0,\n          signal: eventTableFormSignal.signal\n        })\n        .then(({ data: response }) => {\n          // Reset load more related values\n          this.eventsTableFormPageValue = 2;\n          history.replaceState(\n            history.state,\n            null,\n            `${location.pathname}?${params.toString()}`\n          );\n\n          clearTimeout(loadingDelay);\n          if (!response) {\n            this.eventsTableContentTarget.innerHTML = \"\";\n            this.eventsTableContentTarget.append(\n              document\n                .querySelector(\"#eventEmptyResponse\")\n                .content.cloneNode(true)\n            );\n            return;\n          }\n\n          const rows = parseTableRows(response);\n          if (rows.length < EVENT_TABLE_LOAD_MORE_PER_PAGE) {\n            // hide load more button as there is no more events to fetch with current params\n            this.eventsTableFormLoadMoreTarget.classList.add(\"d-none\");\n          } else {\n            this.eventsTableFormLoadMoreTarget.classList.remove(\"d-none\");\n          }\n\n          this.eventsTableContentTarget.innerHTML = response;\n        })\n        .catch(error => {\n          if (error.name != \"AbortError\") console.error(error);\n          else console.warn(error);\n        });\n    };\n\n    const showLoading = () => {\n      const loadingIndicatorBtn = document\n        .querySelector(\"#eventLoadingIndicator\")\n        .content.cloneNode(true);\n      loadingIndicatorBtn.id = \"eventsTableLoadingText\";\n      this.eventsTableContentTarget.prepend(loadingIndicatorBtn);\n    };\n  }\n\n  confirmCompetitionOrderTargetConnected(el) {\n    const table = el.closest(\".content-box\").querySelector(\"table > tbody\");\n    const button = el\n      .closest(\".content-box\")\n      .querySelector(`button[data-target=\"submitCompOrder\"]`);\n\n    var sortable = new Sortable(table, {\n      handle: \".handle-field\",\n      dragClass: \".sortable-drag\",\n      filter: \".ignore-competition-day-header-row\",\n      scroll: true,\n      onStart: function (evt) {\n        evt.item.classList.add(\"alert-success\");\n      },\n      onEnd: function (evt) {\n        evt.item.classList.remove(\"alert-success\");\n        if (evt.oldIndex == evt.newIndex) return false;\n        $(button).show();\n        table\n          .querySelectorAll(\"tr:not(.ignore-competition-day-header-row)\")\n          .forEach((tr, i) => {\n            tr.attributes[\"order\"].value = i + 1;\n          });\n      }\n    });\n\n    button.addEventListener(\"click\", evt => {\n      this._confirmCustomCompetitionOrder(evt, sortable);\n    });\n  }\n\n  _confirmCustomCompetitionOrder(evt, sortable) {\n    if (!this.hasConfirmCompetitionOrderTarget) return;\n    const { target } = evt;\n    sortable.option(\"disabled\", true);\n    target.disabled = true;\n    LoadingSpinnerHandler.add(target);\n\n    let rows = evt.target\n      .closest(`[data-target=\"table-section\"]`)\n      .querySelectorAll(\n        \"table > tbody > tr:not(.ignore-competition-day-header-row)\"\n      );\n    rows = Array.from(rows).map(row => {\n      return {\n        id: row.attributes[\"competition-id\"].value,\n        order: row.attributes[\"order\"].value\n      };\n    });\n\n    axios({\n      url: `${this.eventIdValue}/competition_sort`,\n      method: \"PATCH\",\n      data: { event_id: this.eventIdValue, competitions: JSON.stringify(rows) }\n    })\n      .then(() => {\n        $(target).hide();\n        target.disabled = false;\n        LoadingSpinnerHandler.remove(target);\n        sortable.option(\"disabled\", false);\n      })\n      .catch(err => {\n        console.error(err);\n        LoadingSpinnerHandler.remove(target);\n        target.innerText = \"Ebaõnnestus!\";\n      });\n  }\n\n  review_payments() {\n    $(\"#checkAllPersonSingleLicenses\").on(\"click\", function () {\n      $(\":checkbox[class=person_single_license_confirmed]:not(:disabled)\")\n        .prop(\"checked\", $(this).prop(\"checked\"))\n        .trigger(\"change\");\n    });\n\n    $(\"#checkAllHorseSingleLicenses\").on(\"click\", function () {\n      $(\":checkbox[class=horse_single_license_confirmed]:not(:disabled)\")\n        .prop(\"checked\", $(this).prop(\"checked\"))\n        .trigger(\"change\");\n    });\n\n    const horse_checkboxes = $(\n      \":checkbox[class=horse_single_license_confirmed]\"\n    );\n    let countHorseCheckedCheckboxes =\n      horse_checkboxes.filter(\":checked\").length;\n    $(\"#count_horse_single_license_confirmed\").html(\n      countHorseCheckedCheckboxes\n    );\n    horse_checkboxes.on(\"change\", function () {\n      countHorseCheckedCheckboxes = horse_checkboxes.filter(\":checked\").length;\n      $(\"#count_horse_single_license_confirmed\").html(\n        countHorseCheckedCheckboxes\n      );\n    });\n\n    const person_checkboxes = $(\n      \":checkbox[class=person_single_license_confirmed]\"\n    );\n    let countPersonCheckedCheckboxes =\n      person_checkboxes.filter(\":checked\").length;\n    $(\"#count_person_single_license_confirmed\").html(\n      countPersonCheckedCheckboxes\n    );\n    person_checkboxes.on(\"change\", function () {\n      countPersonCheckedCheckboxes =\n        person_checkboxes.filter(\":checked\").length;\n      $(\"#count_person_single_license_confirmed\").html(\n        countPersonCheckedCheckboxes\n      );\n    });\n  }\n\n  loadMoreEvents({ target }) {\n    target.disabled = true;\n    LoadingSpinnerHandler.add(target);\n\n    const form = new FormData(this.eventsTableFormTarget);\n    // Add page input\n    if (!this.eventsTableFormPageValue) this.eventsTableFormPageValue = 2;\n    form.append(\"search[page]\", this.eventsTableFormPageValue);\n\n    const params = new URLSearchParams(form);\n\n    axios\n      .get(\"/events/events_query?\" + params.toString(), {\n        redirect: \"error\",\n        headers: {\n          accept: \"text/html; charset=UTF-8\"\n        },\n        signal: eventTableFormSignal.signal\n      })\n      .then(({ data: response }) => {\n        this.eventsTableFormPageValue++;\n        target.disabled = false;\n\n        const rows = parseTableRows(response);\n\n        if (rows.length < EVENT_TABLE_LOAD_MORE_PER_PAGE) {\n          // hide load more button as there is no more events to fetch with current params\n          this.eventsTableFormLoadMoreTarget.classList.add(\"d-none\");\n        }\n\n        this.eventsTableContentTarget.append(...rows);\n      })\n      .catch(error => {\n        target.disabled = false;\n        if (error.name != \"AbortError\") console.error(error);\n        else console.warn(error);\n      })\n      .then(() => {\n        LoadingSpinnerHandler.remove(target);\n      });\n  }\n\n  goToEvent(evt) {\n    const { params, target } = evt;\n    if (target.tagName == \"A\" || target.tagName == \"I\") {\n      return;\n    }\n    Turbo.visit(params.url);\n  }\n\n  openEventFilter() {\n    openMobileDialog($(\"#eventFilter\")[0]);\n  }\n\n  confirm_events(evt) {\n    const btn = evt.target;\n    btn.disabled = true;\n\n    axios({\n      url: \"/events/confirm_events\",\n      method: \"get\",\n      responseType: \"text\",\n      headers: {\n        accept: \"text/html; charset=UTF-8\"\n      }\n    })\n      .then(response => {\n        $(\"#modal\").html(response.data);\n        let modal = new Modal($(\"#modal\")[0]);\n        modal.show();\n        btn.disabled = false;\n      })\n      .catch(err => {\n        console.error(err);\n        btn.disabled = false;\n      });\n  }\n\n  confirmEventsSubmit(evt) {\n    evt.preventDefault();\n    const formData = new FormData(this.confirmEventsFormTarget);\n\n    console.log(this.confirmEventsFormTarget.action);\n    axios({\n      url: this.confirmEventsFormTarget.action,\n      method: \"post\",\n      data: formData,\n      responseType: \"json\"\n    })\n      .then(({ data }) => {\n        let modal = new Modal($(\"#modal\")[0]);\n        modal.hide();\n\n        evt.target.disabled = false;\n        if (data.success) {\n          sessionStorage.setItem(\"notice\", data.message);\n        } else {\n          sessionStorage.setItem(\"alert\", data.message);\n        }\n        window.location.reload();\n      })\n      .catch(err => {\n        sessionStorage.setItem(\"alert\", err.message);\n        console.error(err);\n        evt.target.disabled = false;\n        window.location.reload();\n      });\n  }\n\n  toggleParticipantsCount() {\n    if (this.hasUpdateParticipantsFormTarget) {\n      $(this.participantsTotalTarget).toggleClass(\"d-none\");\n      $(this.updateParticipantsFormTarget).toggleClass(\"d-none\");\n    }\n  }\n\n  updateParticipants(evt) {\n    evt.preventDefault();\n    const formData = new FormData(evt.target);\n    const submitBtn = evt.target.querySelector(\"input[type=submit]\");\n    const newCount = formData.get(\"competition_division[participated_count]\");\n    LoadingSpinnerHandler.add(submitBtn);\n    axios({\n      method: \"PUT\",\n      url: evt.target.action,\n      data: formData\n    })\n      .then(() => {\n        LoadingSpinnerHandler.remove(submitBtn);\n        submitBtn.disabled = false;\n        this.participantsTotalTarget.querySelector(\"span\").innerText = newCount;\n        this.toggleParticipantsCount();\n      })\n      .catch(() => {\n        LoadingSpinnerHandler.remove(submitBtn);\n        submitBtn.value = \"Tekkis viga!\";\n      });\n  }\n\n  protocolSelection(evt) {\n    const submitBtn = document.querySelector(\n      \".protocol-file-upload input[type=submit]\"\n    );\n    submitBtn.disabled = !Boolean(evt.target.value);\n  }\n\n  // Division's registrations page\n\n  showRegistrationDates({ currentTarget }) {\n    var headerColumn = document.querySelector(\"#datesHeader\");\n    headerColumn.classList.toggle(\"d-none\");\n    document.querySelectorAll(\".registration-date\").forEach(function (doc) {\n      doc.classList.toggle(\"d-none\");\n    });\n    //$(element).text(showRegistrationDates ? \"Peida kuupäev\" : \"Näita kuupäeva\");\n  }\n\n  sortRegistartionDates({ currentTarget: el }) {\n    var order = null;\n    if (el.classList.contains(\"fa-arrow-up\")) {\n      el.classList.remove(\"fa-arrow-up\");\n      el.classList.add(\"fa-arrow-down\");\n      order = \"ASC\";\n    } else if (el.classList.contains(\"fa-arrow-down\")) {\n      el.classList.remove(\"fa-arrow-down\");\n      el.classList.add(\"fa-arrow-up\");\n      order = \"DESC\";\n    }\n    var tbody = document.querySelector(\"table tbody\");\n\n    var rows = Array.from(tbody.querySelectorAll(\"tr\"))\n      .reduce((arr, row) => {\n        const date = row.querySelector(\"td.registration-date\").dataset[\n          \"registrationDate\"\n        ];\n        arr.push({\n          el: row,\n          date: DayJS(date, \"YYY-MM-DD HH:mm:ss\")\n        });\n        return arr;\n      }, [])\n      .sort(function (a, b) {\n        switch (order) {\n          case \"DESC\":\n            return b.date.unix() > a.date.unix() ? 1 : -1;\n          case \"ASC\":\n            return a.date.unix() > b.date.unix() ? 1 : -1;\n        }\n      });\n\n    $(tbody).empty();\n\n    rows.forEach(row => {\n      $(tbody).prepend(row.el);\n    });\n\n    /*$(\"#dateCancel\").click(function() {\n      if(this.classList.contains(\"fa-arrow-down\")) {\n        this.classList.remove(\"fa-arrow-down\");\n        this.classList.add(\"fa-arrow-up\");\n      }\n      var tbody = document.querySelector(\"table tbody\");\n      $(tbody).empty();\n      for(var i = 0; i < originalOrder.length; i++) {\n          $(tbody).prepend(originalOrder[i]);\n      }\n    });*/\n  }\n\n  eventOverviewSubmittedExportModalFormTargetConnected(element) {\n    element.addEventListener(\"submit\", evt => {\n      evt.preventDefault();\n      const submit = evt.target.querySelector(\"button[type=submit]\");\n      submit.disabled = \"disabled\";\n      LoadingSpinnerHandler.add(submit);\n      const form = evt.target.closest(\"form\");\n      const modal = evt.target.closest(\"#modal\");\n      axios({\n        url: form.action,\n        data: {\n          year: form.querySelector(\"input[name='year']\").value\n        },\n        method: \"POST\",\n        headers: {\n          Accept: \"text/csv;\"\n        }\n      }).then(response => {\n        const blob = new Blob([response.data], { type: \"text/csv\" });\n        const link = document.createElement(\"a\");\n        link.href = URL.createObjectURL(blob);\n        link.download = `klubide-eksportitud-voistlused.csv`;\n        link.click();\n        Modal.getInstance(modal).hide();\n      });\n    });\n  }\n\n  showParadressageOption(evt) {\n    const checkboxWrapper = document.querySelector(\n      \".event_include_paradressage\"\n    );\n    if (evt.target.labels[0].textContent === \"Koolisõit\") {\n      checkboxWrapper.classList.remove(\"d-none\");\n    } else {\n      checkboxWrapper.classList.add(\"d-none\");\n      checkboxWrapper.querySelector(\n        \"#event_include_paradressage\"\n      ).checked = false;\n    }\n  }\n}\n\nfunction eventForm(formDocument) {\n  formDocument.addEventListener(\"keydown\", evt => {\n    if (evt.code == \"Enter\") evt.preventDefault();\n  });\n\n  tinymceInit({\n    toolbar:\n      \"blocks fontsize | forecolor backcolor | bold italic underline strikethrough | link removeformat\"\n  });\n\n  // Set end date minimum date to be the day as start date\n  $(\"#event_enddate\").datepicker(\n    \"setStartDate\",\n    DayJS($(\"#event_startdate\").datepicker(\"getDate\")).toDate()\n  );\n\n  // Everytime start date changes, check that it doesn't go above end date\n  // Also apply new startDate for end date input\n  $(\"#event_startdate\").on(\"change\", () => {\n    const startDate = DayJS($(\"#event_startdate\").datepicker(\"getDate\"));\n    const endDate = DayJS($(\"#event_enddate\").datepicker(\"getDate\"));\n    if (startDate.isAfter(endDate)) {\n      $(\"#event_enddate\").datepicker(\"setDate\", startDate.toDate());\n    }\n    $(\"#event_enddate\").datepicker(\"setStartDate\", startDate.toDate());\n  });\n\n  $(\"#event_enddate\").on(\"change\", () => {\n    const endDate = DayJS($(\"#event_enddate\").datepicker(\"getDate\"));\n    $(\"#event_registration_until\").datepicker(\n      \"setEndDate\",\n      endDate.subtract(1, \"day\").toDate()\n    );\n  });\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { Modal } from \"bootstrap\";\nimport axios from \"axios\";\nimport { LoadingSpinnerHandler } from \"@mixins/btnLoading\";\n\nlet intervalPingPong = null;\n\nexport default class extends Controller {\n  static targets = [\n    \"invoiceForm\",\n    \"bankOptions\",\n    \"informTransaction\",\n    \"bankingCountrySelect\",\n\n    \"stripeForm\",\n    \"montonioPaymentMethods\",\n    \"pingPongIsOrderPaid\"\n  ];\n\n  static values = {\n    montonioWalletUrl: String,\n    montonioSuccessUrl: String,\n    montonioCancelUrl: String\n  };\n\n  connect() {\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n\n    const invoiceRequest = document.querySelector(\"#order_invoice_request\");\n    if (invoiceRequest?.checked == true) {\n      this.showInvoiceForm();\n    }\n\n    const termsAgreed = document.querySelector(\"#order_terms_agreed\");\n    if (termsAgreed?.checked == true) {\n      this.agreeTerms();\n    }\n\n    if (this.hasMontonioPaymentMethodsTarget) {\n      const paymentMethod =\n        document.querySelector(\".order_montonio_method input:checked\")?.value ??\n        \"bank\";\n\n      switch (paymentMethod) {\n        case \"bank\":\n          this.montonioPaymentMethodsTarget.classList.remove(\"d-none\");\n          break;\n        case \"wallet\":\n          this.montonioPaymentMethodsTarget.classList.add(\"d-none\");\n          break;\n      }\n    }\n  }\n\n  stripeFormTargetConnected(element) {\n    const useSandbox = !!element.querySelector(\"[name='sandbox']\");\n    element.querySelector(\"[name='sandbox']\")?.remove();\n\n    const stripe = {\n      stripePublicKey: element.querySelector(\"[name='stripePublicKey']\")?.value,\n      stripeClientSecret: element.querySelector(\"[name='stripeClientSecret']\")\n        ?.value,\n      paymentIntentUuid: element.querySelector(\"[name='uuid']\")?.value,\n      onBehalfOf: element.querySelector(\"[name='onBehalfOf']\")?.value,\n      amount: element.querySelector(\"[name='grandTotal']\")?.value\n    };\n\n    const createOrder = () => {\n      return axios.post(this.montonioWalletUrlValue, {\n        paymentIntentUuid: stripe.paymentIntentUuid\n      });\n    };\n\n    const cancelOrder = () => {\n      sessionStorage.setItem(\n        \"alert\",\n        \"Montonio ühendus tekkis tõrke. Palun proovige uuesti või muu makseviisiga\"\n      );\n      axios({\n        url: this.montonioCancelUrlValue,\n        method: \"PATCH\",\n        headers: {\n          Accept: \"application/json\"\n        }\n      }).then(({ data }) => {\n        if (typeof data === \"string\") {\n          window.location.href = data;\n        }\n      });\n    };\n\n    const handleExpressCheckoutErrorEvent = event => {\n      console.log(\"Express checkout error event\", event);\n      cancelOrder();\n    };\n    const handleExpressCheckoutPaymentCompletedEvent = event => {\n      console.log(\"Express checkout payment completed\", event);\n      window.location.href = this.montonioSuccessUrlValue;\n    };\n\n    // Make sure to replace 'montonio-express-checkout' with the id that you specified as expressCheckoutTargetId in the initializePayment method\n    const expressCheckoutElement = document.getElementById(\n      \"montonio-express-checkout\"\n    );\n    expressCheckoutElement.addEventListener(\n      \"express-payment-completed\",\n      handleExpressCheckoutPaymentCompletedEvent\n    );\n    expressCheckoutElement.addEventListener(\n      \"express-payment-error\",\n      handleExpressCheckoutErrorEvent\n    );\n\n    const checkoutCallback = async error => {\n      if (error) {\n        console.log(error);\n        cancelOrder();\n        throw error;\n      }\n\n      await createOrder();\n    };\n\n    if (Object.values(stripe).filter(Boolean).length === 5) {\n      window.onMontonioLoaded = () => {\n        let embeddedPayment =\n          Montonio.Checkout.EmbeddedPayments.initializePayment({\n            stripePublicKey: stripe.stripePublicKey, // this information is obtained from the POST request on the backend side\n            stripeClientSecret: stripe.stripeClientSecret, // this information is obtained from the POST request on the backend side\n            paymentIntentUuid: stripe.paymentIntentUuid, // this information is obtained from the POST request on the backend side as the `uuid` key in the response.\n            locale: \"en\", // the language to display the payment input fields for your customer ('de','en','et','fi','lt','lv','pl','ru')\n            country: \"EE\", // country code of your customer (e.g. 'EE', 'PL', 'LV', 'LT'),\n            targetId: \"montonio-checkout\", // the target id where you want to display the payment input fields for your customer,\n            expressCheckoutTargetId: \"montonio-express-checkout\", // the html div id where you want to display the Apple Pay or Google Pay button\n            enableExpressCheckout: true,\n            onExpressCheckoutAsync: checkoutCallback, // A callback method that is run when the user confirms the payment in the Apple Pay/Google Pay flow. This callback should create the order using the POST /orders endpoint.\n            amount: Number(stripe.amount), // the order grand total denoted as cents e.g. 1 EUR should be specified as 100\n            currency: \"eur\", // currency specified as either eur or pln (in lowercase)\n            paymentMethod: \"card\",\n            onBehalfOf: stripe.onBehalfOf, // use the value from \"onBehalfOf\" in the POST /payment-intents/draft response\n            version: \"v2\",\n            useSandbox\n          });\n\n        let form = document.getElementById(\"my-checkout\");\n        form.addEventListener(\"submit\", evt => {\n          evt.preventDefault();\n          const btn = form.querySelector(\"button\");\n          btn.disabled = true;\n          LoadingSpinnerHandler.add(btn);\n\n          // 3. Create a new order from your backend and don't forget to attach the paymentUuid.\n          // 3.a. you can access the paymentIntentUuid from the SDK method getPaymentIntentUuid() if needed.\n          createOrder()\n            .then(async ({ data }) => {\n              console.log(data);\n              if (!data.response) {\n                cancelOrder();\n                return;\n              }\n              // 4. Confirm the payment once the order is created using the SDK method confirmPayment()\n\n              embeddedPayment\n                .confirmPayment()\n                .then(response => {\n                  //console.log(response);\n                  window.location.href = this.montonioSuccessUrlValue;\n                })\n                .catch(error => {\n                  //console.error(error);\n                  //LoadingSpinnerHandler.remove(btn);\n                  //btn.disabled = false;\n                  cancelOrder();\n                });\n            })\n            .catch(() => {\n              cancelOrder();\n            });\n        });\n      };\n    }\n  }\n\n  pingPongIsOrderPaidTargetConnected(element) {\n    const url = element.dataset[\"pingPongUrl\"];\n    const currentUrl = window.location.href;\n\n    // ping pong until server says order is paid\n    // assert it only does another query when url remains the same\n    // to prevent dumb suprise of forced page reload\n    function pingPongUntilPaid() {\n      axios({\n        url,\n        method: \"GET\",\n        maxRedirects: 0,\n        headers: {\n          Accept: \"application/json\"\n        }\n      }).then(({ data }) => {\n        if (window.location.href != currentUrl) {\n          return;\n        }\n        if (data === true) window.location.reload();\n        else intervalPingPong = setTimeout(pingPongUntilPaid, 5000);\n      });\n    }\n\n    pingPongUntilPaid();\n  }\n\n  pingPongIsOrderPaidTargetDisconnected() {\n    clearInterval(intervalPingPong);\n  }\n\n  showHideBankPaymentMethods(evt) {\n    if (evt.target.value === \"bank\") {\n      this.montonioPaymentMethodsTarget.classList.remove(\"d-none\");\n      return;\n    }\n    this.montonioPaymentMethodsTarget.classList.add(\"d-none\");\n  }\n\n  showInvoiceForm() {\n    this.invoiceFormTarget.classList.toggle(\"d-none\");\n  }\n\n  agreeTerms() {\n    this.bankOptionsTarget.classList.toggle(\"d-none\");\n  }\n\n  informTransaction() {\n    this.informTransactionTarget.classList.toggle(\"d-none\");\n  }\n\n  expandOrder(evt) {\n    const target = document.querySelector(evt.target.dataset.rtsTarget);\n    evt.target.querySelector(\"i\").classList.toggle(\"counter-rotate\");\n    target.classList.toggle(\"d-none\");\n\n    const row = evt.target.closest(\"tr\");\n    row.classList.toggle(\"table-active\");\n  }\n\n  checkAllOrderUpdate(evt) {\n    $(\"input.order-select:checkbox\").prop(\n      \"checked\",\n      $(evt.target).prop(\"checked\")\n    );\n  }\n\n  openOrderItemEdit(evt) {\n    evt.preventDefault();\n    const href = evt.currentTarget.href;\n    axios({\n      url: href,\n      method: \"POST\",\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html\"\n      }\n    }).then(({ data: response }) => {\n      Turbo.session.receivedMessageFromStream(response);\n\n      window.requestAnimationFrame(() => {\n        window.initSelect2();\n        window.initDatepicker();\n      });\n    });\n  }\n\n  openConfirmationDialog(evt) {\n    evt.preventDefault();\n    const href = evt.currentTarget.href;\n    axios({\n      url: href,\n      method: \"POST\",\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html\"\n      }\n    }).then(({ data: response }) => {\n      Turbo.session.receivedMessageFromStream(response);\n    });\n  }\n\n  confirmPaymentSubmission(event) {\n    // Stimulus doesn't support custom events, so have to do this way\n    event.target.addEventListener(\n      \"form:submit-end\",\n      ({ detail }) => {\n        if (detail.formSubmission.result.success === true) {\n          document.querySelector(\"#modal\").addEventListener(\n            \"hidden.bs.modal\",\n            () => {\n              detail.formSubmission.formElement.remove();\n            },\n            { once: true }\n          );\n          let modal = new Modal($(\"#modal\")[0]);\n          modal.hide();\n        }\n      },\n      { once: true }\n    );\n  }\n\n  bankingCountrySelectTargetConnected(el) {\n    const value = el.value;\n\n    document.querySelectorAll(\".country-bankings\").forEach(el => {\n      el.classList.add(\"d-none\");\n    });\n\n    document\n      .querySelector(`#countryBanking-${value}`)\n      .classList.remove(\"d-none\");\n  }\n\n  updateBankSelections(evt) {\n    const value = evt.target.value;\n\n    document.querySelectorAll(\".country-bankings\").forEach(el => {\n      el.classList.add(\"d-none\");\n    });\n\n    document\n      .querySelector(`#countryBanking-${value}`)\n      .classList.remove(\"d-none\");\n  }\n\n  toggleInvoicePayment(evt) {\n    evt.target.disabled = true;\n    axios({\n      url: evt.params.url,\n      method: \"PATCH\",\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html\"\n      },\n      data: {\n        value: evt.target.checked ? \"1\" : \"0\"\n      }\n    }).then(({ data: response }) => {\n      evt.target.disabled = false;\n      Turbo.session.receivedMessageFromStream(response);\n    });\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { Collapse } from \"bootstrap\";\nimport axios from \"axios\";\nimport { merge } from \"lodash-es\";\n\nimport { LoadingSpinnerHandler } from \"@mixins/btnLoading\";\nimport { Chart } from \"chart.js/auto\";\nimport { Colors } from \"chart.js\";\nChart.register(Colors);\n\nlet abortController = null;\n\nexport default class extends Controller {\n  static targets = [\n    \"statListNavigation\",\n    \"statViews\",\n    \"statView\",\n    \"statContent\"\n  ];\n\n  initialize() {\n    abortController = new AbortController();\n  }\n\n  disconnect() {\n    abortController.abort();\n  }\n\n  updateChart({ target }) {\n    const root = target.closest(\"[data-stats-target='statContent']\");\n    const chartUpdate = new CustomEvent(\"chart:update\", {\n      detail: { element: root }\n    });\n    root.querySelector(\"canvas\").dispatchEvent(chartUpdate);\n  }\n\n  selectStatistic(evt) {\n    evt.preventDefault();\n    const {\n      target,\n      params: { statName }\n    } = evt;\n\n    window.history.replaceState(window.history.state, null, \"#\" + statName);\n    const oldActive = this.statListNavigationTarget.querySelector(\n      \"a.list-group-item.active\"\n    );\n    if (oldActive) {\n      oldActive.classList.remove(\"active\");\n    }\n    target.classList.add(\"active\");\n\n    const currentStat = this.statViewTargets.find(\n      v => !v.className.includes(\"d-none\")\n    ); // Find visible stat\n    currentStat?.classList?.add(\"d-none\");\n\n    const newStat = document.querySelector(`#${statName}`);\n    newStat.classList.remove(\"d-none\");\n\n    if (window.innerWidth <= 992) {\n      // Scroll into in mobile view\n      newStat.scrollIntoView();\n      window.scrollBy(0, -52);\n    }\n\n    if (newStat.querySelector(\".content\").children.length != 0) return;\n\n    const loading = newStat.querySelector(\".content-loading\");\n    loading?.classList?.add(\"skeleton-chart-animation\");\n\n    axios({\n      url: `/api/stats/retrieve?view_stat=${statName}`,\n      method: \"GET\",\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html\",\n        \"Cache-Control\": \"max-age=0\" // 1 hours 3600\n      },\n      signal: abortController.signal\n    })\n      .then(({ data: response }) => {\n        loading.remove();\n        Turbo.session.receivedMessageFromStream(response);\n      })\n      .catch(error => {\n        console.error(error);\n      });\n  }\n\n  expandTable({ currentTarget }) {\n    const collapseTarget = currentTarget\n      .closest(\"[data-stats-target='statContent']\")\n      .querySelector(\".collapse\");\n    let collapse = Collapse.getInstance(collapseTarget);\n    if (!collapse) {\n      collapse = new Collapse(collapseTarget, {\n        toggle: false\n      });\n    }\n    collapse.toggle();\n    currentTarget\n      .querySelector(\"[data-target=visible]\")\n      .classList.toggle(\"d-none\");\n    currentTarget\n      .querySelector(\"[data-target=invisible]\")\n      .classList.toggle(\"d-none\");\n  }\n\n  statViewsTargetConnected(element) {\n    const hash = window.location.hash;\n    if (hash && element.querySelector(`${hash}`)) {\n      document.querySelector(`a[href='${hash}']`).click();\n      document\n        .querySelector(`a[href='${hash}']`)\n        ?.closest(\".list-group\")\n        ?.previousElementSibling?.click(); // Expand dropdown\n    } else {\n      const firstStatId = this.statViewTargets[0].id;\n      document.querySelector(`a[href='#${firstStatId}']`).click();\n      document\n        .querySelector(`a[href='#${firstStatId}']`)\n        ?.closest(\".list-group\")\n        ?.previousElementSibling?.click(); // Expand dropdown\n    }\n  }\n\n  statListNavigationTargetConnected(element) {\n    [].slice.call(element.querySelectorAll(\"div.collapse\")).map(el => {\n      el.addEventListener(\"show.bs.collapse\", evt => {\n        evt.target.previousElementSibling.querySelector(\"i\").className =\n          \"fas fa-angle-down\";\n      });\n      el.addEventListener(\"hide.bs.collapse\", evt => {\n        evt.target.previousElementSibling.querySelector(\"i\").className =\n          \"fas fa-angle-right\";\n      });\n      const collapse = new Collapse(el, {\n        parent: el.previousElementSibling,\n        toggle: false\n      });\n      el.previousElementSibling.addEventListener(\"click\", () => {\n        // Hide other opened list\n        Collapse.getInstance(\n          this.statListNavigationTarget.querySelector(\"div.collapse.show\")\n        )?.hide();\n\n        collapse.toggle();\n      });\n      return collapse;\n    });\n  }\n\n  async statContentTargetConnected(element) {\n    /*const backgroundColor = [\n      \"rgb(196,0,31)\",\n      \"rgb(24,70,144)\",\n      \"rgb(144,102,38)\",\n      \"rgb(162,189,48)\",\n      \"rgb(227,167,22)\"\n    ];*/\n    const table = element.querySelector(\"table\");\n    const canvas = element.querySelector(\"canvas\");\n\n    const { labels, datasets } = parseTableData(element);\n    const options = {\n      data: {\n        labels,\n        datasets\n      },\n      options: {\n        responsive: true\n      },\n      plugins: {\n        colors: {\n          forceOverride: true\n        }\n      }\n    };\n\n    const chart = new Chart(\n      canvas,\n      merge(options, chartConfig(table.dataset.chartType))\n    );\n\n    canvas.addEventListener(\n      \"chart:update\",\n      ({ detail: { element } }) => {\n        const { labels, datasets } = parseTableData(element);\n        chart.data.labels = labels;\n        chart.data.datasets = datasets;\n        chart.update();\n      },\n      { passive: true, signal: abortController.signal }\n    );\n  }\n\n  hydrateAllCache({ target }) {\n    LoadingSpinnerHandler.add(target);\n    target.disabled = \"disabled\";\n\n    const token = document.getElementsByName(\"csrf-token\");\n    axios({\n      url: `/api/stats/hydrate_all`,\n      method: \"GET\",\n      headers: {\n        \"X-CSRF-Token\": token[0].content\n      }\n    });\n  }\n}\n\nfunction chartConfig(chartType) {\n  switch (chartType) {\n    case \"column\":\n      return {\n        type: \"bar\",\n        options: {\n          scales: {\n            x: {\n              stacked: true\n            },\n            y: {\n              stacked: true\n            }\n          }\n        }\n      };\n    case \"line-2-y-axes\":\n      return {\n        type: \"line\",\n        options: {\n          scales: {\n            y2: {\n              type: \"linear\",\n              display: true,\n              position: \"right\"\n            }\n          }\n        }\n      };\n    default:\n      return { type: chartType };\n  }\n}\n\nfunction parseTableData(element) {\n  const table = element.querySelector(\"table\");\n  const labels = [];\n\n  const min = element.querySelector(\"[name='min-year']\");\n  const max = element.querySelector(\"[name='max-year']\");\n\n  const minIndex = Array.from(min.children).findIndex(\n    ({ value }) => value == min.value\n  );\n  const maxIndex = Array.from(max.children).findIndex(\n    ({ value }) => value == max.value\n  );\n\n  // Get labels like showjumping, dressage, etc that will act as group names\n  const groups = Array.from(\n    table.querySelectorAll(\"thead tr > th[data-chart-group]\")\n  );\n\n  groups.forEach(el => {\n    // Get (expected to be) years from first colum in each row\n    if (el.dataset.chartGroup != \"label\") return;\n    Array.from(table.querySelectorAll(`tbody tr > td:first-child`)).forEach(\n      column => {\n        const year = Number(column.innerText);\n        if (Number(min.value) <= year && year <= Number(max.value))\n          labels.push(column.innerText);\n      }\n    );\n  });\n\n  const datasets = groups.reduce((array, groupLabel, index) => {\n    switch (groupLabel.dataset.chartGroup) {\n      // Skip if header belongs to these group\n      case \"ignore\":\n      case \"label\":\n        return array;\n    }\n\n    const columns = Array.from(table.querySelectorAll(`tbody tr`))\n      .splice(minIndex, maxIndex + 1) // +1 or last row won't be included\n      .map(column => column.children[index].dataset.chartValue);\n\n    array.push({\n      label: groupLabel.innerText,\n      data: columns,\n      yAxisID: groupLabel.dataset?.chartYAxesId ?? \"y\"\n    });\n\n    return array;\n  }, []);\n\n  return { labels, datasets: Object.values(datasets) };\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport axios from \"axios\";\n\nlet sanctionAllTypes = null;\nlet sanctinoAllReasons = null;\n\nlet delaySubmit = null;\n\nexport default class extends Controller {\n  static targets = [\"form\", \"primaryForm\", \"reasonRequiresText\", \"searchForm\"];\n\n  formTargetConnected() {\n    sanctionAllTypes = $(\"#sanction_sanction_type\").html();\n    sanctinoAllReasons = $(\"#sanction_reason\").html();\n\n    $(\"#sanction_reason\").on(\"select2:select\", evt =>\n      this.assertReasonTextRequirement(evt)\n    );\n\n    const entity = $(`input[name=\"sanction[sanction_entity]\"]:checked`);\n    const entityValue = entity[0] ? $(entity).val() : null;\n\n    if (entityValue) {\n      this.primaryFormTarget.classList.remove(\"d-none\");\n    }\n\n    switch (entityValue) {\n      case \"person\":\n        document\n          .querySelector(\"#sanction_horse_id\")\n          .parentNode.classList.add(\"d-none\");\n\n        const horseFutureCompetitionWrapper = document.querySelector(\n          \"#horseFutureCompetitions\"\n        );\n        horseFutureCompetitionWrapper.innerHTML = \"\";\n\n        document\n          .querySelector(\"#sanction_related_person_id\")\n          .parentNode.classList.add(\"d-none\");\n        break;\n      case \"horse\":\n        document\n          .querySelector(\"#sanction_person_id\")\n          .parentNode.classList.add(\"d-none\");\n        break;\n      default: {\n      }\n    }\n\n    updateBasedOnEntity(entityValue);\n\n    $(\"#sanction_horse_id\").on(\"change\", evt => {\n      const horseId = evt.currentTarget.value;\n      const horseFutureCompetitionWrapper = document.querySelector(\n        \"#horseFutureCompetitions\"\n      );\n      horseFutureCompetitionWrapper.innerHTML = \"Laadin...<br/><br/>\";\n\n      const url = horseFutureCompetitionWrapper.dataset.target;\n      axios({\n        url,\n        method: \"POST\",\n        redirect: \"error\",\n        headers: {\n          Accept: \"text/vnd.turbo-stream.html\"\n        },\n        maxRedirects: 0,\n        data: {\n          horse_id: horseId\n        }\n      })\n        .then(({ data: response }) => {\n          Turbo.session.receivedMessageFromStream(response);\n        })\n        .catch(() => {\n          horseFutureCompetitionWrapper.innerHTML =\n            \"<b class='text-danger'>Tekkis viga!</b>\";\n        });\n    });\n  }\n\n  updateEntitySelection({ target }) {\n    const value = target.value;\n    const personSelect = document.querySelector(\n      \"#sanction_person_id\"\n    ).parentNode;\n    const horseSelect = document.querySelector(\"#sanction_horse_id\").parentNode;\n\n    personSelect.classList.add(\"d-none\");\n    horseSelect.classList.add(\"d-none\");\n\n    this.primaryFormTarget.classList.remove(\"d-none\");\n\n    switch (value) {\n      case \"person\":\n        personSelect.classList.remove(\"d-none\");\n        break;\n      case \"horse\":\n        horseSelect.classList.remove(\"d-none\");\n        break;\n    }\n\n    updateBasedOnEntity(value);\n  }\n\n  assertReasonTextRequirement({ target }) {\n    const reasonsThatRequireText = Array.from(\n      this.reasonRequiresTextTargets\n    ).map(input => input.value);\n    const reasonTextWrapper = document.querySelector(\".sanction_reason_text\");\n    if (reasonsThatRequireText.includes(target.value)) {\n      reasonTextWrapper.classList.remove(\"d-none\");\n    } else {\n      reasonTextWrapper.classList.add(\"d-none\");\n    }\n  }\n\n  searchFormTargetConnected(element) {\n    element.addEventListener(\"change\", () => {\n      this.search();\n    });\n  }\n\n  search() {\n    clearTimeout(delaySubmit);\n\n    delaySubmit = setTimeout(() => {\n      const form = document.querySelector(\"#sanctionFilter\");\n      const formData = new FormData(form);\n\n      form\n        .querySelectorAll(\"input, option\")\n        .forEach(el => (el.disabled = true));\n\n      const loadingIndicator = document\n        .querySelector(\"#sanctionsLoadingIndicator\")\n        .content.cloneNode(true);\n      document.querySelector(\"#sanctionRows\").prepend(loadingIndicator);\n\n      axios({\n        url: form.action,\n        redirect: \"error\",\n        method: \"POST\",\n        data: formData,\n        headers: {\n          Accept: \"text/vnd.turbo-stream.html\"\n        }\n      }).then(({ data: response }) => {\n        Turbo.renderStreamMessage(response);\n\n        form\n          .querySelectorAll(\"input, option\")\n          .forEach(el => (el.disabled = false));\n      });\n    }, 800);\n  }\n\n  loadMoreSanctions({ params, currentTarget }) {\n    const form = document.querySelector(\"#sanctionFilter\");\n    const formData = new FormData(form);\n\n    currentTarget.disabled = true;\n    formData.append(\"search[load_more]\", true);\n    formData.append(\"search[page]\", params.page);\n\n    form.querySelectorAll(\"input, option\").forEach(el => (el.disabled = true));\n    const loadingIndicator = document\n      .querySelector(\"#sanctionsLoadingIndicator\")\n      .content.cloneNode(true);\n    document.querySelector(\"#sanctionRows\").prepend(loadingIndicator);\n\n    axios({\n      url: form.action,\n      redirect: \"error\",\n      method: \"POST\",\n      data: formData,\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html\"\n      }\n    }).then(({ data: response }) => {\n      Turbo.renderStreamMessage(response);\n\n      form\n        .querySelectorAll(\"input, option\")\n        .forEach(el => (el.disabled = false));\n      currentTarget.disabled = false;\n    });\n  }\n}\n\nfunction updateBasedOnEntity(entityValue) {\n  const blank = new Option(\"\", \"\", true, false);\n\n  const personTypes = $(sanctionAllTypes)\n    .filter(`optgroup[label=\"person\"]`)\n    .prepend(blank)\n    .html();\n\n  const horseTypes = $(sanctionAllTypes)\n    .filter(`optgroup[label=\"horse\"]`)\n    .prepend(blank)\n    .html();\n\n  const personReasons = $(sanctinoAllReasons)\n    .filter(`optgroup[label=\"person\"]`)\n    .prepend(blank)\n    .html();\n\n  const horseReasons = $(sanctinoAllReasons)\n    .filter(`optgroup[label=\"horse\"]`)\n    .prepend(blank)\n    .html();\n\n  switch (entityValue) {\n    case \"person\":\n      $(\"#sanction_sanction_type\").html(personTypes);\n      $(\"#sanction_reason\").html(personReasons);\n      document\n        .querySelector(\"#sanction_related_person_id\")\n        .parentNode.classList.add(\"d-none\");\n      break;\n    case \"horse\":\n      $(\"#sanction_sanction_type\").html(horseTypes);\n      $(\"#sanction_reason\").html(horseReasons);\n      document\n        .querySelector(\"#sanction_related_person_id\")\n        .parentNode.classList.remove(\"d-none\");\n\n      break;\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport axios from \"axios\";\n\nexport default class extends Controller {\n  static targets = [\"formWrapper\", \"formLoading\", \"difficultyCheckbox\"];\n  static values = {\n    checkUrl: String,\n    test: String\n  };\n\n  registrationFormTargetConnected(element) {\n    const updateForm = () => {\n      const formData = new FormData(element);\n      // Get rid of entry data\n      formData.delete(\"registration[competition_division_difficulties][]\");\n      for (let [k] of formData.entries()) {\n        if (k.includes(\"registration[comments]\")) formData.delete(k);\n      }\n\n      const loadingDelay = setTimeout(() => {\n        $(this.formWrapperTarget).hide();\n        $(this.formLoadingTarget).show();\n      }, 800);\n\n      axios({\n        url: this.checkUrlValue,\n        method: \"POST\",\n        data: formData,\n        headers: {\n          // Get turbo-stream response\n          Accept: \"text/vnd.turbo-stream.html;charset=UTF-8;\",\n          \"X-CSRF-Token\": document.getElementsByName(\"csrf-token\")[0].content\n        }\n      })\n        .then(({ data }) => {\n          clearTimeout(loadingDelay);\n          Turbo.session.receivedMessageFromStream(data);\n        })\n        .catch(err => {\n          console.error(err);\n          clearTimeout(loadingDelay);\n          alert(\"Tekkis viga. Palun proovi hiljem uuesti.\");\n        });\n    };\n\n    $(() => {\n      // It gets retriggered after turbo replace method\n      $(this.formLoadingTarget).hide();\n      $(this.formWrapperTarget).show();\n      window.initSelect2();\n      $(\n        \"#registration_person_id, #registration_second_horse_id, #registration_horse_id\"\n      ).on(\"change\", updateForm);\n    });\n  }\n\n  uncheckOtherDifficulty({ target, params }) {\n    const difficulties = Array.from(\n      document.querySelectorAll(`input[id^=\"${params.division}_\"]`)\n    );\n    // If only 1 or none, then don't continue\n    if (difficulties.length <= 1) return;\n    // Filter the clicked input out and set rest of difficulty inputs to be unchecked\n    difficulties\n      .filter(x => x.id != target.id)\n      .forEach(x => (x.checked = false));\n  }\n\n  uncheckOtherDivisions({ currentTarget, params }) {\n    const otherDivisions = this.difficultyCheckboxTargets.filter(el => {\n      return (\n        el.dataset.entriesCompetitionNrParam == params.competitionNr &&\n        el.dataset.entriesDivisionParam != params.division\n      );\n    });\n    //const checked = currentTarget.checked;\n\n    otherDivisions.forEach(el => {\n      //el.disabled = checked;\n      el.checked = false;\n    });\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport dayjs from \"dayjs\";\nimport axios from \"axios\";\nimport { LoadingSpinnerHandler } from \"@mixins/btnLoading\";\nimport { openMobileDialog } from \"@mixins/mobileDialogToggler\";\nimport { tinymceInit } from \"@/plugins/tinymce\";\n\nlet ponyMeasurementEventTableFormSignal = null;\nlet searchInputDelay = null;\nlet searchQueryDelay = null;\n\nexport default class extends Controller {\n  static targets = [\n    \"ponyMeasurementEventForm\",\n    \"ponyMeasurementEventsTableForm\"\n  ];\n\n  disconnect() {\n    ponyMeasurementEventTableFormSignal?.abort();\n    clearTimeout(searchInputDelay);\n    clearTimeout(searchQueryDelay);\n  }\n\n  ponyMeasurementEventFormTargetConnected(element) {\n    element.addEventListener(\"keydown\", evt => {\n      if (evt.code == \"Enter\") evt.preventDefault();\n    });\n\n    tinymceInit({\n      toolbar:\n        \"blocks fontsize | forecolor backcolor | bold italic underline strikethrough | link removeformat\"\n    });\n\n    $(\"#pony_measurement_event_start_date\").on(\"change\", evt => {\n      if (!evt.target.value) return;\n      const newDate = dayjs(evt.target.value, \"DD.MM.YYYY\");\n\n      const endDateInput = $(\"#pony_measurement_event_end_date\");\n      const endDate = endDateInput.val()\n        ? dayjs(endDateInput.val(), \"DD.MM.YYY\")\n        : null;\n\n      const regEndDateInput = $(\n        \"#pony_measurement_event_registration_end_date\"\n      );\n      const regEndDate = regEndDateInput.val()\n        ? dayjs(regEndDateInput.val(), \"DD.MM.YYY\")\n        : null;\n\n      regEndDateInput.datepicker(\n        \"setEndDate\",\n        newDate.subtract(1, \"days\").toDate()\n      );\n      endDateInput.datepicker(\"setStartDate\", newDate.toDate());\n\n      // If registration end date not set or registration end date is after start date now\n      if (!regEndDate || newDate >= regEndDate) {\n        regEndDateInput.datepicker(\n          \"setDate\",\n          newDate.subtract(3, \"days\").toDate()\n        );\n      }\n\n      if (!endDate || newDate > endDate) {\n        endDateInput.datepicker(\"setDate\", newDate.toDate());\n      }\n    });\n  }\n\n  ponyMeasurementEventsTableFormTargetConnected(element) {\n    element.addEventListener(\"submit\", e => e.preventDefault());\n    element.addEventListener(\"change\", e => {\n      if (e.target.className.includes(\"select2-search__field\")) return; // Do not let select2 textarea trigger query fetch\n      clearTimeout(searchQueryDelay);\n      searchQueryDelay = setTimeout(() => fetchEvents(), 5); // Check select2.js line 88 for this being a thing\n    });\n\n    element\n      .querySelector(\"input[name='search[search_input]']\")\n      .addEventListener(\"input\", () => {\n        clearTimeout(searchInputDelay);\n        searchInputDelay = setTimeout(() => fetchEvents(), 1000);\n      });\n\n    const fetchEvents = () => {\n      ponyMeasurementEventTableFormSignal?.abort();\n      ponyMeasurementEventTableFormSignal = new AbortController();\n\n      clearTimeout(searchInputDelay);\n\n      const formData = new FormData(element);\n      const params = new URLSearchParams(formData);\n      const loadingDelay = setTimeout(() => showLoading(), 200);\n\n      axios\n        .get(element.action + \"?\" + params.toString(), {\n          redirect: \"error\",\n          headers: {\n            Accept: \"text/vnd.turbo-stream.html\"\n          },\n          maxRedirects: 0,\n          signal: ponyMeasurementEventTableFormSignal.signal\n        })\n        .then(({ data }) => {\n          clearTimeout(loadingDelay);\n          Turbo.session.receivedMessageFromStream(data);\n          ponyMeasurementEventTableFormSignal = null;\n          history.replaceState(\n            history.state,\n            null,\n            `${location.pathname}?${params.toString()}`\n          );\n        })\n        .catch(error => {\n          if (error.name != \"AbortError\") console.error(error);\n          else console.warn(error);\n        });\n    };\n\n    const showLoading = () => {\n      if (document.querySelector(\"#tableFormLoadingRow\")) {\n        return;\n      }\n      const loadingIndicatorBtn = document\n        .querySelector(\"#ponyMeasurementEventLoadingIndicator\")\n        .content.cloneNode(true);\n\n      document\n        .querySelector(\n          \"[data-pony-measurement-events-target='ponyMeasurementEventsTableContent']\"\n        )\n        .prepend(loadingIndicatorBtn);\n    };\n  }\n\n  async loadMoreEvents(evt) {\n    const { currentTarget } = evt;\n    currentTarget.disabled = true;\n\n    LoadingSpinnerHandler.add(currentTarget);\n\n    const form = this.courseEventsTableFormTarget;\n    const formData = new FormData(form);\n\n    formData.append(\"search[page]\", evt.params.tableFormPage);\n    formData.append(\"search[load_more]\", true);\n\n    const params = new URLSearchParams(formData);\n\n    try {\n      const { data } = await axios.get(form.action + \"?\" + params.toString(), {\n        redirect: \"error\",\n        headers: {\n          Accept: \"text/vnd.turbo-stream.html\"\n        },\n        maxRedirects: 0\n      });\n\n      Turbo.session.receivedMessageFromStream(data);\n    } catch (error) {\n      console.error(error);\n    }\n  }\n\n  openTableFilters() {\n    openMobileDialog($(\"#measurementsFilter\")[0]);\n  }\n\n  goToEvent(evt) {\n    const { params, target } = evt;\n    if (target.tagName == \"A\" || target.tagName == \"I\") {\n      return;\n    }\n    Turbo.visit(params.url);\n  }\n\n  toggleMasterlistTable() {\n    const masterlist = document.querySelector(\"#masterlist\");\n    const simplifiedMasterlist = document.querySelector(\n      \"#simplifiedMasterlist\"\n    );\n\n    masterlist.classList.toggle(\"d-none\");\n    simplifiedMasterlist.classList.toggle(\"d-none\");\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { tinymceInit } from \"@/plugins/tinymce\";\n\nexport default class extends Controller {\n  static targets = [\"trainerProfileForm\"];\n\n  trainerProfileFormTargetConnected() {\n    tinymceInit({\n      toolbar: \"bold italic underline strikethrough removeformat\"\n    });\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { LoadingSpinnerHandler } from \"@mixins/btnLoading\";\nimport axios from \"axios\";\nimport { tinymceInit } from \"@/plugins/tinymce\";\n\nexport default class extends Controller {\n  static targets = [\"form\"];\n\n  formTargetConnected() {\n    tinymceInit({\n      toolbar:\n        \"blocks fontsize | forecolor backcolor | bold italic underline strikethrough | link removeformat\"\n    });\n  }\n\n  copyFileLink({ params }) {\n    navigator.clipboard.writeText(params.link);\n  }\n\n  uploadFiles(evt) {\n    evt.preventDefault();\n    const {\n      currentTarget,\n      params: { upload }\n    } = evt;\n    const files = document.querySelector(\"#general_post_files\").files;\n    const form = new FormData();\n    for (const file of files) {\n      form.append(\"general_post[files][]\", file);\n    }\n\n    currentTarget.disabled = true;\n    LoadingSpinnerHandler.add(currentTarget);\n\n    axios({\n      url: upload,\n      method: \"POST\",\n      data: form,\n      headers: {\n        \"Content-Type\": \"multipart/form-data\",\n        Accept: \"text/vnd.turbo-stream.html;charset=UTF-8;\",\n        \"X-CSRF-Token\": document.getElementsByName(\"csrf-token\")[0].content\n      }\n    })\n      .then(({ data }) => {\n        Turbo.session.receivedMessageFromStream(data);\n        setTimeout(() => {\n          currentTarget.disabled = false;\n          LoadingSpinnerHandler.remove(currentTarget);\n        }, 10);\n      })\n      .catch(error => {\n        console.error(error);\n      });\n  }\n\n  deleteUpload(evt) {\n    evt.preventDefault();\n    const {\n      currentTarget,\n      params: { deleteLink }\n    } = evt;\n    const parent = currentTarget.parentNode;\n    parent.childNodes.forEach(e => (e.disabled = true));\n    LoadingSpinnerHandler.add(currentTarget);\n    axios({\n      url: deleteLink,\n      method: \"DELETE\",\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html;charset=UTF-8;\",\n        \"X-CSRF-Token\": document.getElementsByName(\"csrf-token\")[0].content\n      }\n    })\n      .then(({ data }) => {\n        Turbo.session.receivedMessageFromStream(data);\n      })\n      .catch(error => {\n        console.error(error);\n        setTimeout(() => {\n          parent.childNodes.forEach(e => (e.disabled = false));\n          LoadingSpinnerHandler.remove(currentTarget);\n        }, 10);\n      });\n  }\n}\n","var map = {\n\t\"./alerts_controller.js\": 1827,\n\t\"./application_controller.js\": 3728,\n\t\"./audit_events_controller.js\": 1961,\n\t\"./chart_configurations_controller.js\": 9568,\n\t\"./charts_controller.js\": 3193,\n\t\"./clubs_controller.js\": 4733,\n\t\"./competitions_controller.js\": 8458,\n\t\"./course_events_controller.js\": 2471,\n\t\"./cups_controller.js\": 3829,\n\t\"./entries_controller.js\": 6086,\n\t\"./event_documents_controller.js\": 7821,\n\t\"./event_informations_controller.js\": 8324,\n\t\"./event_schedules_controller.js\": 9285,\n\t\"./events_controller.js\": 5737,\n\t\"./exports_controller.js\": 4347,\n\t\"./general_posts_controller.js\": 7250,\n\t\"./home_controller.js\": 1523,\n\t\"./horses_controller.js\": 4948,\n\t\"./legacy_charts_controller.js\": 1481,\n\t\"./manual_event_courses_controller.js\": 3874,\n\t\"./manual_event_officials_controller.js\": 9774,\n\t\"./marking_sheets_controller.js\": 7814,\n\t\"./mass_mails_controller.js\": 4827,\n\t\"./noncompetition_registrations_controller.js\": 9647,\n\t\"./orders_controller.js\": 5897,\n\t\"./people_controller.js\": 7535,\n\t\"./person_trainer_profiles_controller.js\": 6392,\n\t\"./pony_measurement_events_controller.js\": 6237,\n\t\"./products_controller.js\": 1242,\n\t\"./qualifications_controller.js\": 9432,\n\t\"./sanctions_controller.js\": 6028,\n\t\"./stats_controller.js\": 5935,\n\t\"./tracker_definitions_controller.js\": 8381,\n\t\"./trainers_management_controller.js\": 3682,\n\t\"controllers/alerts_controller.js\": 1827,\n\t\"controllers/application_controller.js\": 3728,\n\t\"controllers/audit_events_controller.js\": 1961,\n\t\"controllers/chart_configurations_controller.js\": 9568,\n\t\"controllers/charts_controller.js\": 3193,\n\t\"controllers/clubs_controller.js\": 4733,\n\t\"controllers/competitions_controller.js\": 8458,\n\t\"controllers/course_events_controller.js\": 2471,\n\t\"controllers/cups_controller.js\": 3829,\n\t\"controllers/entries_controller.js\": 6086,\n\t\"controllers/event_documents_controller.js\": 7821,\n\t\"controllers/event_informations_controller.js\": 8324,\n\t\"controllers/event_schedules_controller.js\": 9285,\n\t\"controllers/events_controller.js\": 5737,\n\t\"controllers/exports_controller.js\": 4347,\n\t\"controllers/general_posts_controller.js\": 7250,\n\t\"controllers/home_controller.js\": 1523,\n\t\"controllers/horses_controller.js\": 4948,\n\t\"controllers/legacy_charts_controller.js\": 1481,\n\t\"controllers/manual_event_courses_controller.js\": 3874,\n\t\"controllers/manual_event_officials_controller.js\": 9774,\n\t\"controllers/marking_sheets_controller.js\": 7814,\n\t\"controllers/mass_mails_controller.js\": 4827,\n\t\"controllers/noncompetition_registrations_controller.js\": 9647,\n\t\"controllers/orders_controller.js\": 5897,\n\t\"controllers/people_controller.js\": 7535,\n\t\"controllers/person_trainer_profiles_controller.js\": 6392,\n\t\"controllers/pony_measurement_events_controller.js\": 6237,\n\t\"controllers/products_controller.js\": 1242,\n\t\"controllers/qualifications_controller.js\": 9432,\n\t\"controllers/sanctions_controller.js\": 6028,\n\t\"controllers/stats_controller.js\": 5935,\n\t\"controllers/tracker_definitions_controller.js\": 8381,\n\t\"controllers/trainers_management_controller.js\": 3682\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 7461;","import { Controller } from \"@hotwired/stimulus\";\nimport axios from \"axios\";\nimport { Tab, Collapse } from \"bootstrap\";\nimport { LoadingSpinnerHandler } from \"@mixins/btnLoading.js\";\nimport parseTableRows from \"@mixins/parseTableRows.js\";\nimport {\n  openMobileDialog,\n  closeMobileDialog\n} from \"@mixins/mobileDialogToggler.js\";\n\nimport RatsanetTable from \"@/ratsanetTable.js\";\n\nconst CancelToken = axios.CancelToken;\nlet axionCancelToken = CancelToken.source();\nlet allSelected = false;\nlet controller = null;\n\n// Check people_controller.rb \"per_page\" in index and event_results too if changing this value!\nconst PERSON_TABLE_LOAD_MORE_PER_PAGE = 30;\n\nexport default class extends Controller {\n  static targets = [\n    \"officialsSearchForm\",\n    \"officialList\",\n    \"searchTable\",\n    \"formConsents\",\n    \"generalCheck\",\n    \"trusteeCheck\",\n    \"marketingCheck\",\n\n    \"primaryMenu\",\n\n    \"personOrdersTable\",\n    \"personEntriesTable\",\n    \"coursesTable\",\n    \"eventsOfficialTable\",\n    \"personAchievementsTable\",\n    \"personPupilsEntriesTable\",\n    \"personPupilsGreencardTable\",\n    \"personPupilsLevelsTable\",\n    \"personPupilsYearsTable\",\n    \"personSanctionsTable\"\n  ];\n\n  static values = {\n    loadMoreTablePage: Number\n  };\n\n  connect() {\n    controller = new AbortController();\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n  }\n\n  disconnect() {\n    controller.abort();\n  }\n\n  primaryMenuTargetConnected() {\n    window.requestAnimationFrame(() => {\n      switch (window.location.hash) {\n        case \"#ametnik\":\n          //Tab.getOrCreateInstance(\"#ametnik-tab\").show()\n          document.querySelector(\"#ametnik-tab\").click(); // Will update selected menu text\n          window.history.replaceState(\n            window.history.state,\n            \"\",\n            window.location.pathname\n          ); // Get rid of hash\n          break;\n        case \"#treener\":\n          //Tab.getOrCreateInstance(\"#treener-tab\").show()\n          if (document.querySelector(\"#trainerIndtroductory\")) {\n            document.querySelector(\"#trainerIndtroductory\").click();\n          } else {\n            document.querySelector(\"#treener-tab\").click();\n          }\n          window.history.replaceState(\n            window.history.state,\n            \"\",\n            window.location.pathname\n          ); // Get rid of hash\n          break;\n      }\n    });\n  }\n\n  formConsentsTargetConnected() {\n    if (!this.generalCheckTarget.checked) {\n      if (this.hasTrusteeCheckTarget) this.trusteeCheckTarget.checked = false;\n      this.marketingCheckTarget.checked = false;\n      if (this.hasTrusteeCheckTarget) this.trusteeCheckTarget.disabled = true;\n      this.marketingCheckTarget.disabled = true;\n    } else {\n      if (this.hasTrusteeCheckTarget) this.trusteeCheckTarget.disabled = false;\n      this.marketingCheckTarget.disabled = false;\n    }\n  }\n\n  allowOtherConsents(evt) {\n    switch (evt.target.checked) {\n      case false:\n        if (this.hasTrusteeCheckTarget) this.trusteeCheckTarget.checked = false;\n        this.marketingCheckTarget.checked = false;\n\n        if (this.hasTrusteeCheckTarget) this.trusteeCheckTarget.disabled = true;\n        this.marketingCheckTarget.disabled = true;\n        break;\n      case true:\n        if (this.hasTrusteeCheckTarget)\n          this.trusteeCheckTarget.disabled = false;\n        this.marketingCheckTarget.disabled = false;\n        break;\n    }\n  }\n\n  goToPerson(evt) {\n    const { currentTarget, target } = evt;\n    if ([\"BUTTON\", \"I\", \"INPUT\"].includes(target.tagName)) return;\n    if (target.tagName == \"A\") evt.preventDefault();\n    let path = null;\n    path = currentTarget.dataset.personPath;\n    if (path) Turbo.visit(path);\n  }\n\n  openPersonFilter() {\n    if (window.innerWidth >= 768) {\n      new Collapse(\"#search_details\");\n    } else {\n      openMobileDialog($(\"#search_details\")[0]);\n    }\n  }\n\n  openOfficialFilter() {\n    if (window.innerWidth >= 768) {\n      new Collapse(\"#search_official_details\");\n    } else {\n      openMobileDialog($(\"#search_official_details\")[0]);\n    }\n  }\n\n  openTrainerFilter() {\n    if (window.innerWidth >= 768) {\n      new Collapse(\"#search_trainer_details\");\n    } else {\n      openMobileDialog($(\"#search_trainer_details\")[0]);\n    }\n  }\n\n  loadMorePeople(evt) {\n    evt.preventDefault();\n    const { target } = evt;\n    target.disabled = true;\n    LoadingSpinnerHandler.add(target);\n\n    const form = new FormData($(\".tab-pane:visible form\")[0]);\n    form.set(\"page\", this.loadMoreTablePageValue);\n    form.set(\"load_more\", true);\n    const params = new URLSearchParams(form);\n\n    axios({\n      method: \"GET\",\n      url: target.href + \"?\" + params.toString(),\n      responseType: \"text\",\n      headers: {\n        Accept: \"text/html;charset=UTF-8;\"\n      },\n      signal: controller.signal\n    })\n      .then(({ data }) => {\n        this.loadMoreTablePageValue++;\n        target.disabled = false;\n        LoadingSpinnerHandler.remove(target);\n\n        const rows = parseTableRows(data);\n        if (rows.length < PERSON_TABLE_LOAD_MORE_PER_PAGE) {\n          target.remove();\n        }\n\n        //console.log(this.hasSearchTableTarget);\n        //console.log(this.searchTableTarget); [data-people-target=searchTable] exists and searchTable is in targets array. Yet claims it doesn't exist\n        const table = document.querySelector(\n          \"[data-people-target=searchTable] > table > tbody\"\n        );\n        table.append(...rows);\n      })\n      .catch(err => {\n        console.error(err);\n      });\n  }\n\n  index() {\n    const queryString = new URLSearchParams(window.location.search);\n    let triggerEl = null;\n    if (queryString.has(\"search[filter_type]\")) {\n      triggerEl = document.querySelector(\n        queryString.get(\"search[filter_type]\")\n      );\n    } else if (queryString.has(\"quick_filter\")) {\n      if (queryString.get(\"quick_filter\").includes(\"_officials\")) {\n        triggerEl = document.querySelector(\"#officials_tab\");\n      } else if (queryString.get(\"quick_filter\") == \"fei_trainers\") {\n        triggerEl = document.querySelector(\"#trainers_tab\");\n      }\n    }\n\n    if (triggerEl) {\n      const tab = new Tab(triggerEl);\n      tab.show();\n    }\n  }\n\n  show() {\n    const params = new URLSearchParams(window.location.search);\n\n    if (params.has(\"person_competition_results\")) {\n      $(`[href=\"#results_tab\"]`).trigger(\"click\");\n\n      const content = document.querySelector(\n        \"[data-people-target=personEntriesTable]\"\n      );\n      for (let [k, v] of params.entries()) {\n        var input = content.querySelector(`[name=\"${k}\"]`);\n        if (!input) return;\n\n        if (input.type == \"checkbox\") {\n          if (input.checked) return;\n          input.click();\n        } else $(input).val(v);\n      }\n      content.scrollIntoView();\n      window.scrollBy(0, -54);\n    }\n\n    if (params.has(\"open_tab\")) {\n      $(`[href=\"#${params.get(\"open_tab\")}\"]`).trigger(\"click\");\n    }\n\n    // Automatically set opened tabs name to mobile element with class currentMenuSelected\n    document.querySelectorAll(\".nav.nav-tabs.tab-lists .active\").forEach(el => {\n      const selectedText = el\n        .closest(`.tab-wrapper`)\n        .querySelector(`.currentMenuSelected`);\n      if (selectedText) selectedText.innerText = el.innerText;\n    });\n  }\n\n  personOrdersTableTargetConnected() {\n    new RatsanetTable({\n      observerTrigger: \"#orders_tab\",\n      contentBodySelector: \"[data-people-target='personOrdersTable']\",\n      itemsPerPage: 20\n    });\n  }\n\n  personEntriesTableTargetConnected() {\n    new RatsanetTable({\n      observerTrigger: \"#results_tab\",\n      contentBodySelector: \"[data-people-target='personEntriesTable']\",\n      itemsPerPage: 20\n    });\n  }\n\n  eventsOfficialTableTargetConnected() {\n    new RatsanetTable({\n      observerTrigger: \"#official_events_tab\",\n      contentBodySelector: \"[data-people-target='eventsOfficialTable']\"\n    });\n  }\n\n  coursesTableTargetConnected() {\n    new RatsanetTable({\n      observerTrigger: \"#courses_tab\",\n      contentBodySelector: \"[data-people-target='coursesTable']\"\n    });\n  }\n\n  personAchievementsTableTargetConnected() {\n    new RatsanetTable({\n      observerTrigger: \"#achievements_tab\",\n      contentBodySelector: \"[data-people-target='personAchievementsTable']\",\n      itemsPerPage: 30\n    });\n  }\n\n  personPupilsEntriesTableTargetConnected() {\n    new RatsanetTable({\n      observerTrigger: \"#pupils_entries_tab\",\n      contentBodySelector: \"[data-people-target='personPupilsEntriesTable']\"\n    });\n  }\n\n  personPupilsGreencardTableTargetConnected() {\n    new RatsanetTable({\n      observerTrigger: \"#pupils_greencard_tab\",\n      contentBodySelector: \"[data-people-target='personPupilsGreencardTable']\"\n    });\n  }\n\n  personPupilsLevelsTableTargetConnected() {\n    new RatsanetTable({\n      observerTrigger: \"#pupils_levels_tab\",\n      contentBodySelector: \"[data-people-target='personPupilsLevelsTable']\",\n      itemsPerPage: Infinity\n    });\n  }\n\n  personPupilsYearsTableTargetConnected() {\n    new RatsanetTable({\n      observerTrigger: \"#pupils_years_tab\",\n      contentBodySelector: \"[data-people-target='personPupilsYearsTable']\",\n      itemsPerPage: Infinity\n    });\n  }\n\n  personSanctionsTableTargetConnected() {\n    new RatsanetTable({\n      observerTrigger: \"#notes_tab\",\n      contentBodySelector: \"[data-people-target='personSanctionsTable']\",\n      itemsPerPage: Infinity\n    });\n  }\n\n  openProfileMenu({ currentTarget: target }) {\n    openMobileDialog($(target.dataset.target)[0]);\n  }\n\n  closeProfileMenu({ currentTarget: target }) {\n    closeMobileDialog($(target.dataset.target)[0]);\n    const selectedText = target\n      .closest(`.tab-wrapper`)\n      .querySelector(`.currentMenuSelected`);\n    if (selectedText) selectedText.innerText = target.innerText;\n  }\n\n  shareCompetitionsLink() {\n    const form = document.querySelector(\n      \"[data-people-target=personEntriesTable] form\"\n    );\n    const formData = new FormData(form);\n    const url = new URLSearchParams(formData);\n\n    url.set(\"person_competition_results\", \"true\");\n\n    const alert = document.querySelector(\n      \"[data-people-target=personEntriesTable] .share-link\"\n    );\n\n    navigator.clipboard\n      .writeText(\n        window.location.toString().split(\"?\")[0] + \"?\" + url.toString()\n      )\n      .then(() => {\n        alert.classList.remove(\"d-none\");\n        setTimeout(() => {\n          alert.classList.add(\"d-none\");\n        }, 4000);\n      });\n  }\n\n  officialsSearchFormTargetConnected() {\n    this.updateOfficialList();\n  }\n\n  updateOfficialList() {\n    const form = new FormData(this.officialsSearchFormTarget);\n    const disciplines = form\n      .getAll(\"search[official_discipline][]\")\n      .filter(Boolean);\n\n    const types = form.getAll(\"search[official_type][]\").filter(Boolean);\n    const issuer = form.getAll(\"search[official_issuer]\").filter(Boolean)[0];\n\n    axionCancelToken.cancel(\"Uuem päring\");\n    axionCancelToken = CancelToken.source();\n\n    const query = new URLSearchParams();\n\n    if (disciplines.includes(\"dressage\")) {\n      document\n        .querySelector(\"#qualificationOfficialRightsWrapper\")\n        .classList.remove(\"d-none\");\n    } else {\n      document\n        .querySelector(\"#qualificationOfficialRightsWrapper\")\n        .classList.add(\"d-none\");\n    }\n\n    disciplines.forEach(x => {\n      query.append(\"search[official_discipline][]\", x);\n    });\n    types.forEach(x => {\n      query.append(\"search[official_type][]\", x);\n    });\n\n    if (issuer) {\n      query.append(\"search[official_issuer]\", issuer);\n    }\n\n    axios({\n      method: \"get\",\n      url: \"people/get_official_list_search?\" + query.toString(),\n      headers: {\n        Accept: \"application/json\",\n        \"content-type\": \"application/x-www-form-urlencoded\"\n      },\n      cancelToken: axionCancelToken.token\n    })\n      .then(response => {\n        const options = [];\n\n        // Create new options\n        response.data.forEach(option => {\n          options.push(new Option(option[0], option[1], false, false));\n        });\n        // Remove old options\n        Array.from(this.officialListTarget.childNodes).forEach(option => {\n          option.remove();\n        });\n\n        options.forEach(option => {\n          this.officialListTarget.append(option);\n        });\n\n        $(this.officialListTarget).trigger(\"select2.change\");\n      })\n      .catch(thrown => {\n        if (axios.isCancel(thrown)) return;\n        console.error(thrown.message);\n      });\n  }\n\n  openOfficialSearchDialogInfo(evt) {\n    const target = $(evt.target).siblings(\".mobile-andmed\")[0];\n    openMobileDialog(target);\n  }\n\n  closeOfficialSearchDialogInfo(evt) {\n    const target = $(evt.target).parents(\".mobile-andmed\")[0];\n    closeMobileDialog(target);\n  }\n\n  toggleAllPeopleSelection() {\n    allSelected = !allSelected;\n    Array.from(\n      document.querySelectorAll(`input[name=\"personSelected[]\"]`)\n    ).forEach(el => {\n      el.checked = allSelected;\n    });\n  }\n\n  goToMassAssignment(evt) {\n    evt.preventDefault();\n    const visibleForm = document.querySelector(\n      \"#filters_tab .tab-pane.active form\"\n    );\n    const filterTab = visibleForm.querySelector(\"[name='search[filter_type]']\");\n    const params = new URLSearchParams();\n    Array.from(\n      document.querySelectorAll(`input[name=\"personSelected[]\"]`)\n    ).forEach(el => {\n      if (el.checked) {\n        params.append(\"personSelected[]\", el.value);\n      }\n    });\n\n    if (filterTab.value === \"#officials_tab\") {\n      //let issuer = visibleForm.querySelector(\"search[official_issuer]\").value;\n      //if (issuer == \"0\") issuer = \"erl\";\n      //else issuer = \"fei\";\n      //const discipline = visibleForm.querySelector(\"search[official_issuer]\").value;\n    }\n\n    Turbo.visit(evt.currentTarget.href + \"?\" + params.toString());\n  }\n\n  trusteeConsentExport({ params }) {\n    const trustee = $(\"#person_consent_trustee_terms\")[0];\n    var data = {\n      general: $(\"#person_consent_general_terms\")[0].checked ? 1 : 0,\n      trustee: trustee ? (trustee.checked ? 1 : 0) : undefined,\n      marketing: $(\"#person_consent_marketing_terms\")[0].checked ? 1 : 0\n    };\n    window.open(params.exportUrl + \"?\" + $.param(data), \"_blank\");\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport {\n  openMobileDialog,\n  closeMobileDialog\n} from \"@mixins/mobileDialogToggler\";\n\nexport default class extends Controller {\n  static targets = [\"menu\"];\n\n  menuTargetConnected(element) {\n    if (window.location.hash) {\n      const discipline = location.hash.split(\"-\")[1];\n      const disciplineTabNav = document.querySelector(\n        `[href=\"#${discipline}\"]`\n      );\n      if (disciplineTabNav) disciplineTabNav.click();\n    } else {\n      const params = new URLSearchParams(window.location.search);\n      if (params.get(\"tab\")) {\n        element\n          .querySelector(`a.nav-link[href=\"#${params.get(\"tab\")}\"]`)\n          ?.click();\n      }\n    }\n  }\n\n  openMenu({ params }) {\n    openMobileDialog($(params.target)[0]);\n  }\n\n  closeMenu({ target, params }) {\n    closeMobileDialog($(params.target)[0]);\n    const selectedText = target\n      .closest(`.tab-wrapper`)\n      .querySelector(`.currentMenuSelected`);\n    if (selectedText) selectedText.innerText = target.innerText;\n  }\n\n  setHash({ params }) {\n    if (window.location.hash != \"#tab-\" + params.hash) {\n      Turbo.visit(window.location.pathname + \"#tab-\" + params.hash, {\n        action: \"replace\"\n      });\n    }\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport axios from \"axios\";\nexport default class extends Controller {\n  connect() {\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n  }\n\n  newForm() {\n    // Needs to be cloned or template #documentRowFormTemplate will lose its elements\n    const rowFormTemplate = document\n      .querySelector(\"#documentRowFormTemplate\")\n      .content.cloneNode(true);\n    const tableBody = document.querySelector(\"#uploadedFiles tbody\");\n\n    rowFormTemplate\n      .querySelector(`input[type=\"file\"]`)\n      .addEventListener(\"change\", evt => {\n        const btn = evt.target.closest(\"tr\").querySelector(\".btn.btn-submit\");\n        btn.disabled = !evt.target.value || evt.target.value.length == 0;\n      });\n    tableBody.prepend(rowFormTemplate);\n  }\n\n  editForm(evt) {\n    const rowFormTemplate = document\n      .querySelector(\"#documentRowFormTemplate\")\n      .content.cloneNode(true);\n    const row = evt.target.closest(\"tr\");\n\n    const inputs = row.querySelectorAll(\"input[name]\");\n    inputs.forEach(input => {\n      const { value, name } = input.attributes;\n      const inputTemplate = rowFormTemplate.querySelector(\n        `input[name=\"${name.value}\"]`\n      );\n      if (inputTemplate) {\n        inputTemplate.value = value.value;\n      }\n    });\n\n    const selectInput = row.querySelector(`input[name=\"category\"]`);\n    const inputTemplate = rowFormTemplate.querySelector(`select`);\n    inputTemplate.value = selectInput.value;\n\n    rowFormTemplate.querySelector(\".btn.btn-submit\").disabled = false;\n\n    const tableBody = document.querySelector(\"#uploadedFiles tbody\");\n    tableBody.insertBefore(rowFormTemplate, row);\n    row.classList.add(\"d-none\");\n  }\n\n  cancelForm(evt) {\n    const row = evt.target.closest(\"tr\");\n    const id = row.querySelector(`input[name=\"id\"]`).getAttribute(\"value\");\n    if (id) {\n      const tableBody = document.querySelector(\"#uploadedFiles tbody\");\n      tableBody\n        .querySelector(`#event_document_${id}`)\n        .classList.remove(\"d-none\");\n    }\n    row.remove();\n  }\n\n  submitForm(evt) {\n    const btn = evt.target;\n    btn.innerHTML = \"\";\n    btn.innerHTML = `<div class=\"spinner-border text-light spinner-border-sm\" role=\"status\"><div>`;\n    btn.disabled = true;\n\n    const deleteBtn = evt.target.closest(\"td\").querySelector(\".btn-delete\");\n    deleteBtn.disabled = true;\n\n    const form = new FormData();\n    const inputs = evt.target.closest(\"tr\").querySelectorAll(\"input[name]\");\n    inputs.forEach(input => {\n      if (input.attributes.name.value == \"document\") {\n        if (input.files[0])\n          form.append(\n            `event_document[${input.attributes.name.value}]`,\n            input.files[0]\n          );\n      } else {\n        form.append(\n          `event_document[${input.attributes.name.value}]`,\n          input.value\n        );\n      }\n    });\n\n    const selectInput = evt.target.closest(\"tr\").querySelector(\"select\").value;\n    form.append(\"event_document[category]\", selectInput);\n\n    const id = form.get(\"event_document[id]\");\n    const eventId = form.get(\"event_document[event_id]\");\n    const courseEventId = form.get(\"event_document[course_event_id]\");\n\n    form.delete(\"event_document[id]\");\n    form.delete(\"event_document[event_id]\");\n    form.delete(\"event_document[course_event_id]\");\n\n    let targetObject;\n    if (eventId) {\n      targetObject = { target: \"events\", id: eventId };\n    } else if (courseEventId) {\n      targetObject = { target: \"course_events\", id: courseEventId };\n    }\n\n    const url = () => {\n      if (id)\n        return `/${targetObject.target}/${targetObject.id}/event_documents/${id}`;\n      return `/${targetObject.target}/${targetObject.id}/event_documents`;\n    };\n\n    axios({\n      url: url(),\n      method: id ? \"PATCH\" : \"POST\",\n      headers: {\n        Accept: \"application/json;charset=UTF-8\",\n        \"Content-Type\": form.has(\"event_document[document]\")\n          ? \"multipart/form-data\"\n          : \"application/json;charset=UTF-8\",\n        \"X-CSRF-Token\": document.getElementsByName(\"csrf-token\")[0].content\n      },\n      data: form\n    })\n      .then(({ data }) => {\n        if (id) {\n          updateEventDocumentRow(data);\n          this.cancelForm(evt);\n        } else createEventDocumentRow(evt, data);\n      })\n      .catch(err => {\n        console.error(err);\n      });\n  }\n}\n\nfunction updateEventDocumentRow(data) {\n  const row = document.querySelector(`#event_document_${data.id}`);\n  const columns = row.querySelectorAll(\"td\");\n\n  columns[0].querySelector(`input[name=\"category\"]`).value = data.category;\n  columns[0].querySelector(`span`).innerText = data.category_i18n;\n\n  columns[1].querySelector(`input[name=\"name\"]`).value = data.name;\n  columns[1].querySelector(`span`).innerText = data.name;\n\n  columns[2].querySelector(`a`).href = data.file_link;\n  columns[2].querySelector(`a`).innerText = data.file_name;\n  columns[2].querySelector(`small`).innerText = data.file_size;\n}\n\nfunction createEventDocumentRow(evt, data) {\n  const rowFormTemplate = document\n    .querySelector(\"#documentRowTemplate\")\n    .content.cloneNode(true);\n  const toBeReplacedRow = evt.target.closest(\"tr\");\n  const columns = rowFormTemplate.querySelectorAll(\"td\");\n\n  rowFormTemplate\n    .querySelector(\"tr\")\n    .setAttribute(\"id\", `event_document_${data.id}`);\n\n  columns[0].querySelector(`input[name=\"id\"]`).value = data.id;\n  columns[0].querySelector(`input[name=\"category\"]`).value = data.category;\n  columns[0].querySelector(`span`).innerText = data.category_i18n;\n\n  columns[1].querySelector(`input[name=\"name\"]`).value = data.name;\n  columns[1].querySelector(`span`).innerText = data.name;\n\n  columns[2].querySelector(`a`).href = data.file_link;\n  columns[2].querySelector(`a`).innerText = data.file_name;\n  columns[2].querySelector(`small`).innerText = data.file_size;\n\n  const eventId = data.event_id;\n  const courseEventId = data.noncompetition_event_id;\n  let targetObject;\n  if (eventId) {\n    targetObject = { target: \"events\", id: eventId };\n  } else if (courseEventId) {\n    targetObject = { target: \"course_events\", id: courseEventId };\n  }\n\n  const deleteLink = document.createElement(\"a\");\n  deleteLink.className = \"btn btn-danger\";\n  deleteLink.setAttribute(\"data-confirm-fade\", \"true\");\n  deleteLink.setAttribute(\"data-confirm-title\", \"Dokument kustutamine\");\n  deleteLink.setAttribute(\"data-confirm-proceed-class\", \"btn-danger\");\n  deleteLink.setAttribute(\n    \"data-confirm\",\n    \"Kas oled kindel, et soovid selle dokumenti kustutada?\"\n  );\n  deleteLink.setAttribute(\"rel\", \"no-follow\");\n  deleteLink.setAttribute(\"data-method\", \"delete\");\n  deleteLink.setAttribute(\"data-response\", \"application/json\");\n  deleteLink.href = `/${targetObject.target}/${targetObject.id}/event_documents/${data.id}/delete`;\n  deleteLink.innerHTML = `<i class=\"fas fa-times\"></i>`;\n  columns[3].append(deleteLink);\n\n  toBeReplacedRow.replaceWith(rowFormTemplate);\n}\n","// 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","import dayjs from \"dayjs\";\nimport { Toast } from \"bootstrap\";\n\nclass BackgroundJobToast {\n  constructor(job, callbacks) {\n    this.toastId = job.queue_name || job.queue;\n    this.name = job.name;\n    this.job = job;\n    this.callbacks = callbacks;\n\n    this.toastHandler = null;\n    this.toast = null;\n    this.render();\n  }\n\n  static toggleFailedJobIndicator(type) {\n    const indicator = document.querySelector(\"[data-target='job-fail']\");\n    switch (type) {\n      case true:\n        indicator.style.display = \"inline\";\n        break;\n      case false:\n        indicator.style.display = \"none\";\n        break;\n    }\n  }\n\n  static getCurrentJobsTotal() {\n    return document.querySelector(\"[data-target='jobs-total']\");\n  }\n\n  static updateTotalJobs(total) {\n    const text = document.querySelector(\"[data-target='jobs-total']\");\n    text.innerText = total;\n    if (total > 0) {\n      text.style.display = \"inline\";\n    } else {\n      text.style.display = \"none\";\n    }\n  }\n\n  // Can also be used to update the toast as a whole\n  render() {\n    if (!this.toast) {\n      $(\"#broadcasts\").append(this.getToastDOMString);\n      this.toast = $(`[data-job-queue=\"${this.toastId}\"]`);\n      this.toastHandler = new Toast(this.toast[0], {\n        autohide: false,\n        animation: false\n      });\n\n      this.toast\n        .find(\"[data-dates]\")\n        .append(\n          `<div>Algatatud: ${dayjs(this.job.created_at).format(\n            \"HH:mm:ss\"\n          )}</div>`\n        );\n\n      this.toast.on(\"hidden.bs.toast\", () => {\n        this.toast.remove();\n      });\n    }\n\n    this.updateProgress();\n\n    if (this.job.success === true || this.job.done_at) {\n      this.setSuccessState();\n    } else if (\n      this.job.error === true ||\n      this.job.last_error ||\n      this.job.failed_at\n    ) {\n      this.setFailedState();\n    }\n\n    this.toastHandler.show();\n  }\n\n  updateProgress() {\n    this.updateStage();\n\n    const { progress_current: current, progress_max: max } = this.job;\n    const progress = this.toast.find(\".progress-bar\");\n    const progressNumber = (current / max) * 100;\n\n    progress.css(\"width\", progressNumber + \"%\");\n    progress.attr(\"aria-valuenow\", progressNumber);\n\n    progress.text(`${current} / ${max}`);\n  }\n\n  updateStage() {\n    this.toast\n      .find(\".current-stage\")\n      .text(this.job.progress_stage || \"Ootel...\");\n  }\n\n  setSuccessState() {\n    this.updateStage();\n    this.toast.data(\"toast-status\", \"success\");\n    this.toast\n      .find(\"[data-dates]\")\n      .append(\n        `<div>Tehtud: ${dayjs(this.job.done_at).format(\"HH:mm:ss\")}</div>`\n      );\n    this.toast.find(\"i[data-toast-icon]\")[0].className =\n      \"fas fa-check-circle me-2 text-success\";\n    this.toast\n      .find(\".progress-bar-animated\")\n      .removeClass(\"progress-bar-animated\")\n      .addClass(\"bg-success\");\n    this.showCloseButton();\n\n    const total = BackgroundJobToast.getCurrentJobsTotal().innerText;\n    BackgroundJobToast.updateTotalJobs(Number(total) - 1);\n\n    this.toast.find(`.dismiss-btn`).on(\"click\", evt => {\n      evt.preventDefault();\n      this.callbacks.removeJob(this);\n      this.toast.remove();\n    });\n  }\n\n  setFailedState() {\n    this.toast.data(\"toast-status\", \"failed\");\n    this.toast\n      .find(\".date\")\n      .append(\n        `<div>Ebaõnnestus: ${dayjs(this.job.failed_at).format(\n          \"HH:mm:ss\"\n        )}</div>`\n      );\n    this.toast.find(\".current-stage\").text(\"Teostamisel tekkis viga!\");\n    this.toast.find(\"i[data-toast-icon]\")[0].className =\n      \"fas fa-exclamation-circle me-2 text-danger\";\n    this.toast\n      .find(\".progress-bar-animated\")\n      .removeClass(\"progress-bar-animated\")\n      .addClass(\"bg-danger\");\n    this.showCloseButton();\n\n    const total = BackgroundJobToast.getCurrentJobsTotal().innerText;\n    BackgroundJobToast.updateTotalJobs(total - 1);\n\n    BackgroundJobToast.toggleFailedJobIndicator(true);\n\n    this.toast.find(\".dismiss-btn\").on(\"click\", evt => {\n      evt.preventDefault();\n      evt.target.remove();\n      this.callbacks.cancelJob(this);\n      this.toast.remove();\n      if ($(\"#broadcasts [toast-status='failed']\").length == 0) {\n        BackgroundJobToast.toggleFailedJobIndicator(false);\n      }\n    });\n  }\n\n  showCloseButton() {\n    const btn = `\n      <button type=\"button\" class=\"ms-2 mb-1 p-1 btn btn-danger btn-sm dismiss-btn\" style=\"height: 20px\" aria-label=\"Close\">\n        <span aria-hidden=\"true\" style=\"position:relative; top: -5px;\">&times;</span>\n      </button>\n    `;\n    const closeBtnParent = this.toast.find(\".close-button\").append(btn);\n    if (closeBtnParent.children().length == 0) {\n      closeBtnParent.append(btn);\n    } else {\n      closeBtnParent.replaceWith(btn);\n    }\n  }\n\n  get getToastDOMString() {\n    return `\n      <div data-job-queue=\"${this.toastId}\" class=\"toast border\" role=\"alert\" aria-live=\"polite\" aria-atomic=\"true\">\n        <div class=\"toast-header\">\n          <strong class=\"me-auto\">${this.name}</strong>\n          <div class=\"close-button\"></div>\n        </div>\n\n        <section class=\"toast-body\">\n          <div class=\"pb-2\">\n            <i data-toast-icon class=\"fas fa-clock me-2\"></i>\n            <span class=\"current-stage\"></span>\n          </div>\n       \n          <div class=\"progress\">\n            <div \n              class=\"progress-bar progress-bar-striped progress-bar-animated\" \n              role=\"progressbar\"\n              aria-valuenow=\"0\" \n              aria-valuemin=\"0\"\n              aria-valuemax=\"100\" \n              style=\"width: 0%\"\n            ></div>\n          </div>\n          <div data-dates class=\"pt-1 mt-2 border-top\">\n          </div>\n        </section>\n      </div>\n    `;\n  }\n}\n\nexport default BackgroundJobToast;\n","import consumer from \"./consumer\";\nimport BackgroundJobToast from \"@mixins/backgroundJobToast\";\nimport axios from \"axios\";\n\nconst { subscriptions } = consumer;\n\n// Re-render the toasts after turboloads again\ndocument.addEventListener(\"turbo:load\", () => {\n  backgroundJobStarted();\n\n  const channel = subscriptions.subscriptions.find(\n    x => x.channelName == \"RatsanetJobsChannel\"\n  );\n  if (channel) {\n    Object.keys(channel.jobs).forEach(job => {\n      channel.jobs[job].render();\n    });\n  }\n});\n\nfunction createSubscription(jobs) {\n  consumer.subscriptions.create(\"RatsanetJobsChannel\", {\n    channelName: \"RatsanetJobsChannel\",\n    jobs: {},\n    connected() {\n      const jobsListed = Object.keys(this.jobs) ?? [];\n      jobs.forEach(job => {\n        if (!jobsListed.includes(job.queue_name)) {\n          this.jobs[job.queue_name] = new BackgroundJobToast(job, {\n            removeJob: removeBackgroundJobToast,\n            cancelJob: cancelBackgroundJob\n          });\n        }\n      });\n      //console.log(\"Hi you are connected!\");\n      // Called when the subscription is ready for use on the server\n    },\n\n    disconnected() {\n      //console.log(\"bye ;-;\");\n      // Called when the subscription has been terminated by the server\n    },\n\n    received(jobRespond) {\n      if (\n        typeof jobRespond === \"string\" &&\n        jobRespond.includes(\"<turbo-stream\")\n      ) {\n        Turbo.session.receivedMessageFromStream(jobRespond);\n        window.requestAnimationFrame(() => {\n          initSelect2();\n          initDatepicker();\n        });\n        return;\n      } else if (jobRespond.turbo_action_url_html_selector) {\n        turboStreamUpdateUrl(jobRespond.turbo_action_url_html_selector);\n        return;\n      }\n\n      const toastJob = this.jobs[jobRespond.queue_name];\n      if (toastJob) {\n        toastJob.job = Object.assign(toastJob.job, jobRespond);\n        // Just re-render\n        toastJob.render();\n      } else {\n        this.jobs[jobRespond.queue_name] = new BackgroundJobToast(jobRespond, {\n          removeJob: removeBackgroundJobToast,\n          cancelJob: cancelBackgroundJob\n        });\n      }\n    }\n  });\n}\n\nexport function backgroundJobStarted() {\n  const token = document.getElementsByName(\"csrf-token\");\n  if (!token || !token[0]?.content) return;\n\n  axios({\n    url: \"/home/any_background_jobs\",\n    method: \"GET\",\n    responseType: \"json\",\n    headers: {\n      \"X-CSRF-Token\": token[0].content,\n      Accept: \"application/json\"\n    }\n  }).then(({ data }) => {\n    if (!data) return;\n    const channel = subscriptions.subscriptions.find(\n      x => x.channelName == \"RatsanetJobsChannel\"\n    );\n    if (!channel) createSubscription(data);\n    if (data.length > 0) {\n      BackgroundJobToast.updateTotalJobs(data.length);\n      BackgroundJobToast.toggleFailedJobIndicator(\n        data.some(({ error }) => error)\n      );\n      BackgroundJobToast.toggleFailedJobIndicator(false);\n\n      if (channel) {\n        data.forEach(job => {\n          channel.jobs[job.queue_name] = new BackgroundJobToast(job, {\n            removeJob: removeBackgroundJobToast,\n            cancelJob: cancelBackgroundJob\n          });\n        });\n      }\n    }\n  });\n}\n\nfunction cancelBackgroundJob(toastJob) {\n  axios({\n    method: \"DELETE\",\n    url: \"/home/delete_background_job_queue?queue=\" + toastJob.job.queue_name,\n    maxRedirects: 0 // no redirecting\n  })\n    .then(({ data }) => {\n      if (data.deleted === true) {\n        removeBackgroundJobToast(toastJob);\n      }\n    })\n    .catch(err => {\n      console.error(err);\n    });\n}\n\nfunction removeBackgroundJobToast(toastJob) {\n  const channel = subscriptions.subscriptions.find(\n    x => x.channelName == \"RatsanetJobsChannel\"\n  );\n  delete channel.jobs[toastJob.job.queue_name];\n}\n\nfunction turboStreamUpdateUrl(selector) {\n  // This only exists because when partial html contains any sign of wardern/cancancan it will just fail\n  const url = document.querySelector(selector)?.dataset?.updateParam;\n  if (url) {\n    const token = document.getElementsByName(\"csrf-token\");\n    axios({\n      url: url,\n      method: \"GET\",\n      maxRedirects: 0, // no redirecting,\n      headers: {\n        \"X-CSRF-Token\": token[0].content,\n        Accept: \"text/vnd.turbo-stream.html\"\n      }\n    }).then(({ data: response }) => {\n      Turbo.session.receivedMessageFromStream(response);\n    });\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nexport default class extends Controller {\n  initialize() {}\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nimport Sortable from \"sortablejs\";\nimport toast from \"@mixins/toast\";\n\nexport default class extends Controller {\n  static targets = [\"trackerIndexNav\"];\n  connect() {\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n  }\n\n  trackerIndexNavTargetConnected() {\n    if (window.location.hash) {\n      document\n        .querySelector(`[href=\"#${window.location.hash.split(\"-\")[1]}\"]`)\n        ?.click();\n    }\n\n    [\"#showjumping\", \"#dressage\", \"#eventing\", \"#endurance\"].forEach(\n      selector => {\n        const nav = document.querySelector(`[href=\"${selector}\"]`);\n\n        if (!document.querySelector(selector)) {\n          nav.classList.add(\"disabled\");\n          nav.removeAttribute(\"data-bs-toggle\");\n          nav.setAttribute(\"tab-index\", -1);\n          nav.setAttribute(\"aria-disabled\", true);\n        }\n\n        nav.addEventListener(\"click\", evt => {\n          window.location.hash = evt.target.dataset.hash;\n        });\n      }\n    );\n  }\n\n  manage() {\n    if (window.location.search.includes(\"?tab=\")) {\n      const param = new URLSearchParams(window.location.search);\n      const disciplineTabNav = document.querySelector(\n        `[href=\"#${param.get(\"tab\")}\"]`\n      );\n      if (disciplineTabNav) disciplineTabNav.click();\n    }\n\n    document.querySelectorAll(\"tbody\").forEach(e => {\n      new Sortable(e, {\n        handle: \".drag-handler\",\n        dragClass: \".drag\",\n        scroll: true,\n        onEnd: function (evt) {\n          if (evt.oldIndex == evt.newIndex) return false;\n          evt.target\n            .closest(\".tab-pane\")\n            .querySelectorAll(\".rank-order\")\n            .forEach((row, i) => {\n              row.attributes[\"rank-order\"].value = i;\n            });\n        }\n      });\n    });\n\n    $(\".save-trackers-order\").on(\"click\", function () {\n      const el = $(this).parents(\".tab-pane\")[0];\n      const rows = Array.from(el.querySelectorAll(\".rank-order\")).map(r => {\n        return {\n          tracker_id: r.attributes[\"tracker-id\"].value,\n          rank_order: r.attributes[\"rank-order\"].value\n        };\n      });\n\n      $.ajax({\n        method: \"POST\",\n        url: \"/tracker_definitions/update_trackers_rank_order\",\n        cache: false,\n        headers: {\n          \"X-CSRF-Token\": document.getElementsByName(\"csrf-token\")[0].content\n        },\n        data: { trackers: JSON.stringify(rows) },\n        beforeSend: function () {\n          $(this).prop(\"disabled\", true);\n        }\n      })\n        .done(function () {\n          $(this).prop(\"disabled\", false);\n          toast({ state: \"success\" });\n        })\n        .fail(function (err) {\n          console.log(err);\n          $(this).prop(\"disabled\", false);\n        });\n    });\n  }\n\n  goToTracker({ currentTarget }) {\n    const path = currentTarget.dataset.trackerPath;\n    Turbo.visit(path);\n  }\n}\n","export default function ({ id, title, bodyMessage, state, toastOptions }) {\n  if (!toastOptions) {\n    toastOptions = { autohide: false, delay: 3000 };\n  }\n  if (!state) state = \"info\";\n  const loadingSpinner = `\n    <div class=\"spinner-border text-primary\" role=\"status\">\n      <span class=\"sr-only\">Laen...</span>\n    </div>\n  `;\n  if (!title) {\n    switch (state) {\n      case \"success\":\n        title = \"Tehtud\";\n        if (!bodyMessage) bodyMessage = \"Salvestamine õnnestus!\";\n        break;\n      case \"loading\":\n        title = \"Päring\";\n        bodyMessage = loadingSpinner + bodyMessage;\n        break;\n      case \"error\":\n        title = \"Viga\";\n        if (!bodyMessage) bodyMessage = \"Salvestamisel tekkis viga!\";\n        break;\n    }\n  }\n\n  if (id && $(id)) {\n    $(id + \" .toast-header stronger\").text(title);\n    $(id + \" .toast-body\").text(bodyMessage);\n    $(`#toast${id} .toast`).toast(toastOptions);\n  } else {\n    id = document.querySelectorAll(\".toast\").length;\n    const toast = `\n      <div id=\"toast${id}\" class=\"toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\n        <div class=\"p-2 bg-${state}\">\n          <b class=\"me-auto\">${title}</b>\n          <button type=\"button\" class=\"ms-2 mb-1 close\" data-bs-dismiss=\"toast\" aria-label=\"Close\">\n            <span aria-hidden=\"true\">&times;</span>\n          </button>\n        </div>\n        <div class=\"toast-body\">\n          ${bodyMessage}\n        </div>\n      </div>\n    `;\n\n    $(\"#toasts\").append(toast);\n    $(`#toast${id}`).toast(toastOptions);\n    $(`#toast${id}`).toast(\"show\");\n    $(`#toast${id}`).on(\"hidden.bs.toast\", () => {\n      $(`#toast${id}`).remove();\n    });\n    return `#toast${id}`;\n  }\n}\n","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\nrequire(\"@rails/activestorage\").start();\nrequire(\"channels\");\n\nimport \"./plugins/hotwired\";\n// Emit events trough window object\nimport EventEmitter from \"events\";\nwindow.emitter = new EventEmitter();\nimport * as bootstrap from \"bootstrap\";\n\nimport jquery from \"jquery\";\n// Makes it usable in views\nwindow.$ = jquery;\n// Required for bootstrap v5. Some places still use with jquery like in bootstrap v3/v4\nwindow.jQuery = jquery;\nwindow.bootstrapModal = bootstrap.Modal;\nimport axios from \"axios\";\n\nrequire(\"@nathanvda/cocoon\");\n\n//import \"./themeMode.js\";\n\nimport \"./plugins/datepicker\";\nimport \"./plugins/dayjs\";\nimport \"./plugins/datepicker\";\nimport \"./plugins/select2\";\nimport hugerte from \"hugerte\";\n\nimport { removeVisibleTooltips, setupJavascript, initTooltips } from \"./setup\";\n\ndocument.addEventListener(\"turbo:visit\", () => {\n  document.body.classList.add(\"cursor-loading\");\n});\n\ndocument.addEventListener(\"turbo:before-cache\", () => {\n  removeVisibleTooltips();\n  hugerte.remove(); // remove or else it will not init again\n  const toasts = document.querySelector(\"#toasts\");\n  if (toasts.childElementCount) {\n    toasts.childNodes.forEach(el => el.remove());\n  }\n});\n\ndocument.addEventListener(\"turbo:load\", () => {\n  document.body.classList.remove(\"cursor-loading\");\n\n  const token = document.getElementsByName(\"csrf-token\");\n  if (token && token[0]?.content) {\n    axios.defaults.headers.common[\"X-CSRF-Token\"] = token[0].content;\n    axios.defaults.headers.common[\"Accept\"] = \"application/json;charset=UTF-8\";\n  }\n});\n\ndocument.addEventListener(\"turbo:submit-end\", e => {\n  // Reinit tooltips\n  hugerte.remove(); // remove or else it will not init again\n  removeVisibleTooltips();\n  initTooltips();\n\n  // Do not scroll if form is inside modal, triggered by shadow form or form with button_to class\n  // Shadow form as in rails ujs/turbo confirm is used on <a> and clicking it creates new one\n  if (\n    !(\n      e.target.hidden || // When its link but has data-turbo-method=\"post\" which creates seperate form action\n      e.target.closest(\"#modal\") || // When its inside modal or confirmation variant for turbo\n      e.target.closest(\"#modalTurbo\") ||\n      e.detail.formSubmission.formElement.style.display ==\n        \"none\" /* Shadow form is hidden*/ ||\n      e.detail.formSubmission.formElement.classList.contains(\"button_to\")\n    )\n  ) {\n    document.querySelector(\"main.container\").scrollIntoView();\n    window.scroll(0, -50);\n  }\n\n  // This custom event needs to be manually attached trough stimulus and not trough data-action because\n  // stimulus doesn't support custom events\n  e.detail.formSubmission.formElement.dispatchEvent(\n    new CustomEvent(\"form:submit-end\", { detail: e.detail })\n  );\n\n  setTimeout(() => {\n    setupJavascript();\n  }, 100);\n});\n","import { Controller } from \"@hotwired/stimulus\";\nimport { Collapse } from \"bootstrap\";\nimport axios from \"axios\";\nimport dayjs from \"dayjs\";\n\nexport default class extends Controller {\n  static targets = [\n    \"competitionForm\",\n    \"competitionEntryRuleTemplate\",\n    \"initDifficulties\"\n  ];\n\n  competitionEntryRuleTemplateTargetConnected(element) {\n    window.requestAnimationFrame(() => {\n      window.initSelect2(element);\n      const nestedField = $(element).closest(\".nested-fields\");\n\n      $(element).on(\"select2:select\", e => {\n        axios({\n          url: \"/competition_entry_rule_details\",\n          method: \"POST\",\n          data: {\n            template_id: e.params.data.id\n          },\n          responseType: \"json\"\n        }).then(({ data }) => {\n          Object.entries(data).forEach(([k, v]) => {\n            let el = null;\n            switch (k) {\n              case \"allow_single_license\":\n                el = nestedField.find(`[data-input-target='${k}']`)[0];\n                if (el) el.checked = true;\n                break;\n              case \"horse_type\":\n              case \"amateur_allowance\":\n                el = nestedField.find(`input[type=radio][value='${v}']`)[0];\n                if (el) el.checked = true;\n                break;\n\n              case \"athlete_difficulty_results_from_date\":\n              case \"athlete_difficulty_results_until_date\":\n              case \"horse_difficulty_results_from_date\":\n              case \"horse_difficulty_results_until_date\":\n              case \"athlete_exclusion_difficulty_results_from_date\":\n              case \"athlete_exclusion_difficulty_results_until_date\":\n              case \"horse_exclusion_difficulty_results_from_date\":\n              case \"horse_exclusion_difficulty_results_until_date\":\n                {\n                  nestedField.find(`[data-input-target='${k}']`).val(v);\n                  nestedField\n                    .find(`[data-input-target='${k}']`)\n                    .prev()\n                    .datepicker(\"update\", dayjs(v).toDate());\n                }\n                break;\n              default: {\n                nestedField\n                  .find(`[data-input-target='${k}']`)\n                  .val(v)\n                  .trigger(\"change\");\n              }\n            }\n          });\n        });\n      });\n    });\n  }\n\n  competitionFormTargetConnected(element) {\n    if (element.closest(\".modal-dialog\")) {\n      element\n        .closest(\".modal-dialog\")\n        .classList.add(\"modal-dialog-competitions-form\");\n    }\n\n    const eventcodes = $(\"#competition_eventcode\").html();\n    const additEventcodes = $(\"#competition_addit_eventcode\").html();\n    const types = $(\"#competition_competition_type\").html();\n    //const oldDifficulties = $(\".old_difficulty_selection\").html();\n\n    const updateBasedOnDiscipline = function (parentElem) {\n      const escapedDiscipline = $(\"#competition_discipline :selected\")\n        .val()\n        .replace(/([ #;&,.+*~\\':\"!^$[\\]()=>|\\/@])/g, \"\\\\$1\");\n\n      $(\".combined_diff\").each(function () {\n        $(this)[escapedDiscipline == \"combined\" ? \"show\" : \"hide\"]();\n      });\n\n      const eventcodeOptions = $(eventcodes)\n        .filter(`optgroup[label=\"${escapedDiscipline}\"]`)\n        .html();\n      const additEventcodeOptions = $(additEventcodes)\n        .filter(`optgroup[label=\"${escapedDiscipline}\"]`)\n        .html();\n      const typeOptions = $(types)\n        .filter(`optgroup[label=\"${escapedDiscipline}\"]`)\n        .html();\n\n      if (eventcodeOptions) $(\"#competition_eventcode\").html(eventcodeOptions);\n      if (additEventcodeOptions)\n        $(\"#competition_addit_eventcode\").html(additEventcodeOptions);\n      if (typeOptions) $(\"#competition_competition_type\").html(typeOptions);\n      initDifficulties(parentElem);\n    };\n\n    const initDifficulties = function (parentElem) {\n      function setCollapse(el) {\n        $(el)\n          .find(\"input.class-nr\")\n          .on(\"input\", e => {\n            $(el).find(\"div.class-details span[data-nr]\").text(e.target.value);\n          });\n\n        $(el)\n          .find(\"input.class-name\")\n          .on(\"input\", e => {\n            $(el)\n              .find(\"div.class-details span[data-name]\")\n              .text(e.target.value);\n          });\n\n        $(el)\n          .find(\".division-card\")\n          .on(\"click\", () => {\n            const body = $(el).find(\".card-body\")[0];\n            Collapse.getOrCreateInstance(body).toggle();\n            $(el).find(\"div.class-details i\").toggleClass(\"counter-rotate\");\n          });\n      }\n\n      $(parentElem)\n        .find(\".difficulty_selection\")\n        .each(function () {\n          if ($(this).hasClass(\"select2-hidden-accessible\")) {\n            $(this).select2(\"destroy\");\n          }\n          initDifficultyOptions(this);\n        });\n\n      $(parentElem)\n        .find(\".select2\")\n        .each(function () {\n          if (!$(this).hasClass(\"select2-hidden-accessible\")) {\n            window.initSelect2(this);\n          }\n        });\n\n      if ($(parentElem).hasClass(\"nested-fields\")) {\n        setCollapse(parentElem);\n      } else {\n        $(parentElem)\n          .find(\".nested-fields\")\n          .each(function (i, el) {\n            setCollapse(el);\n          });\n      }\n    };\n\n    updateBasedOnDiscipline($(\"#division_rows\"));\n\n    $(\"#competition_discipline\").on(\"change\", function (evt) {\n      updateBasedOnDiscipline($(\"#division_rows\"));\n    });\n\n    $(\"#division_rows\").on(\"cocoon:after-insert\", function (e, inserted) {\n      initDifficulties(inserted);\n    });\n\n    $(\n      \"#competition_entry_rule_rows,#competition_entry_rule_difficulty_rows\"\n    ).on(\"cocoon:after-insert\", function (e, inserted) {\n      window.initDatepicker();\n      initDifficulties(inserted);\n    });\n\n    document.querySelectorAll(\".nested-fields .card-body\").forEach(el => {\n      if (!el.classList.contains(\"show\")) new Collapse(el).show();\n    });\n  }\n\n  competitionFormTargetDisconnected() {\n    if (document.querySelector(\"#modal .modal-dialog\")) {\n      document\n        .querySelector(\"#modal .modal-dialog\")\n        .classList.remove(\"modal-dialog-competitions-form\");\n    }\n  }\n}\n\nfunction initDifficultyOptions(element) {\n  const escapedDiscipline = $(\"#competition_discipline :selected\")\n    .val()\n    .replace(/([ #;&,.+*~\\':\"!^$[\\]()=>|\\/@])/g, \"\\\\$1\");\n\n  const difficultyOptions = document.querySelector(\n    `[data-select-discipline='selectOptions-${escapedDiscipline}']`\n  );\n\n  const selected = $(element).val();\n\n  $(element).on(\"select2:clear\", () => {\n    $(this).parents(\".nested-fields\").find(\".difficulty_value\").val(null);\n    $(this).parents(\".nested-fields\").find(\".marking_sheet_value\").val(null);\n  });\n\n  $(element).on(\"select2:select\", evt => {\n    const [difficulty, markingSheet = null] = evt.params.data.id.split(\"__\");\n    $(element)\n      .closest(\".nested-fields\")\n      .find(\".difficulty_value\")\n      .val(difficulty);\n    $(element)\n      .closest(\".nested-fields\")\n      .find(\".marking_sheet_value\")\n      .val(markingSheet);\n  });\n\n  if (difficultyOptions) {\n    $(element).html(difficultyOptions.cloneNode(true).children);\n  }\n  $(element).val(selected).trigger(\"change\");\n}\n","export const openMobileDialog = function (target) {\n  const overlay = document.createElement(\"div\");\n  overlay.classList.add(\n    \"modal-backdrop\",\n    \"fade\",\n    \"show\",\n    \"ratsanet-mobile-overlay\"\n  );\n  overlay.addEventListener(\"mousedown\", () => {\n    overlay.remove();\n    closeMobileDialog(target);\n  });\n\n  document.body.append(overlay);\n\n  $(target).addClass(\"d-block\");\n  $(\"html\").addClass(\"overflow-hidden\");\n  //mobileMenuHash(true);\n};\n\nexport const closeMobileDialog = function (target) {\n  $(\".ratsanet-mobile-overlay\").remove();\n\n  $(target).removeClass(\"d-block\");\n  $(\"html\").removeClass(\"overflow-hidden\");\n  // mobileMenuHash(false);\n};\n\nfunction mobileMenuHash(openOrClose) {\n  /*if (openOrClose == true) {\n  } else if (openOrClose == false) {\n  }*/\n  // This function is only meant for mobile users to make back button work as close button\n  /*if (openOrClose) {\n    window.location.hash = 'mobileOpen';\n  } else if (window.location.hash == '#mobileOpen') {\n    // When x is false but hash still has the given value, go back to remove it from url\n    window.history.back();\n  }*/\n}\n","import { Modal } from \"bootstrap\";\nimport { LoadingSpinnerHandler } from \"./btnLoading\";\n\nexport const turboConfirmationDialog = shadowForm => {\n  const modal = document.querySelector(\"#modal\").cloneNode(true);\n  modal.setAttribute(\"id\", \"modalTurbo\");\n  modal.setAttribute(\"data-turbo\", \"true\");\n  const modalInstance = Modal.getOrCreateInstance(modal);\n  const modalContent = modal.querySelector(\".modal-content\");\n\n  const title = shadowForm.dataset.title || \"Kinnitamine\";\n  let description = shadowForm.dataset.turboConfirm;\n  let submitText = shadowForm.dataset.submit;\n\n  const existingSubmit = shadowForm.querySelector(\n    `input[type=submit],button[type=submit]`\n  ); // If its button_to helper, it takes the form with inputs\n  // If its link_to helper, then it just the form element created by turbo\n\n  if (existingSubmit) {\n    if (existingSubmit.tagName == \"BUTTON\") {\n      existingSubmit.classList.remove(\"btn-lg\");\n      existingSubmit.classList.remove(\"btn-sm\");\n      if (submitText) existingSubmit.innerText = submitText;\n    } else {\n      // Convert input to button\n      const confirmSubmit = document.createElement(\"button\");\n      confirmSubmit.type = \"submit\";\n      confirmSubmit.innerText = submitText || existingSubmit.value;\n      confirmSubmit.className = existingSubmit.className;\n      confirmSubmit.classList.remove(\"btn-lg\");\n      confirmSubmit.classList.remove(\"btn-sm\");\n      existingSubmit.replaceWith(confirmSubmit);\n    }\n    if (existingSubmit.dataset.turboConfirm) {\n      description = existingSubmit.dataset.turboConfirm;\n    }\n\n    delete existingSubmit.dataset.turboConfirm;\n    delete existingSubmit.dataset.turboMethod;\n  } else {\n    // Used when form has no submit button\n    let submitClass = \"btn\";\n    switch (shadowForm.getAttribute(\"method\")) {\n      case \"delete\":\n        submitClass += \" btn-delete\";\n        submitText = submitText || \"Kinnita\";\n        break;\n      default:\n        submitClass += \" btn-submit\";\n    }\n\n    const confirmSubmit = document.createElement(\"button\");\n    confirmSubmit.type = \"submit\";\n    confirmSubmit.innerText = submitText || \"Kinnita\";\n    confirmSubmit.className = submitClass;\n\n    if (!description) {\n      fragment.content.querySelector(\".modal-body\").remove();\n    }\n\n    shadowForm.append(confirmSubmit);\n  }\n\n  shadowForm.removeAttribute(\"data-turbo-confirm\");\n  shadowForm.classList.add(\"d-inline\");\n\n  shadowForm.addEventListener(\"submit\", () => {\n    const submit = shadowForm.querySelector(\"[type=submit]\");\n    submit.disabled = true;\n    submit.classList.add(\"disabled\");\n    LoadingSpinnerHandler.add(submit);\n  });\n\n  shadowForm.addEventListener(\"form:submit-end\", () => {\n    // This listener gets called in file application.js in turbo:submit-end listener\n\n    // Set timeout to ensure turbo_stream handles turbo_stream response\n    // Then check if input with the name of do_not_close exists.\n    // If exists and value is truthy, then do not close modal\n    setTimeout(() => {\n      const doNotClose = modal.querySelector(\"input[name='do_not_close']\");\n      if (!doNotClose || !doNotClose.value) {\n        modalInstance.hide();\n      }\n    }, 50); // Better have this high as chromium takes few ms more time than firefox before finding the doNotClose inpuy\n  });\n\n  // Remove content when modal is hidden\n  modal.addEventListener(\n    \"hidden.bs.modal\",\n    () => {\n      modal.remove();\n    },\n    { once: true }\n  );\n\n  const template = `\n    <div id=\"modalContentTurbo\" class=\"modal-content\">\n      <div class=\"modal-header\">\n        <h5 class=\"modal-title\">${title}</h5>\n        <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n      </div>\n      <div class=\"modal-body\">\n        <p>${description}</p>\n      </div>\n      <div class=\"modal-footer\">\n        <button type=\"button\" class=\"btn btn-outline-dark\" data-bs-dismiss=\"modal\">Katkesta</button>\n      </div>\n    </div>\n  `;\n  const fragment = document.createElement(\"template\");\n  fragment.innerHTML = template;\n\n  fragment.content.querySelector(\".modal-footer\").append(shadowForm);\n  modalContent.replaceWith(fragment.content);\n\n  document.body.append(modal);\n  modalInstance.show();\n\n  //const modalContentDOM = document.querySelector(\"#modalContentTurbo\");\n  //domObserver.observe(modalContentDOM, { childList: true });\n};\n\nexport const createConfirmationDialog = ({\n  title,\n  description = null,\n  action\n}) => {\n  const modal = document.querySelector(\"#modal\");\n  const modalInstance = Modal.getOrCreateInstance(modal);\n  const content = modal.querySelector(\".modal-content\");\n\n  const template = `\n    <div id=\"modalContent\" class=\"modal-content\">\n      <div class=\"modal-header\">\n        <h5 class=\"modal-title\">${title}</h5>\n        <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n      </div>\n      <div class=\"modal-body\">\n        <p>${description}</p>\n      </div>\n      <div class=\"modal-footer\">\n        <button type=\"button\" class=\"btn btn-outline-danger\" data-bs-dismiss=\"modal\">Katkesta</button>\n        <button type=\"button\" class=\"btn btn-submit\">Kinnita</button>\n      </div>\n    </div>\n  `;\n  const fragment = document.createDocumentFragment(template);\n\n  if (!description) {\n    fragment.querySelector(\".modal-body\").remove();\n  }\n\n  const confirmBtn = fragment.querySelector(\".btn-submit\");\n  confirmBtn.setAttribute(\"data-action\", action);\n\n  content.replaceWith(fragment);\n\n  // Remove content when modal is hidden\n  modal.addEventListener(\n    \"hidden.bs.modal\",\n    evt => {\n      const content = evt.target.querySelector(\".modal-content\");\n      Array.from(content.children).forEach(el => content.removeChild(el));\n    },\n    { once: true }\n  );\n\n  modalInstance.show();\n};\n\nexport default function (evt) {\n  let target = evt.target;\n\n  if (!target.getAttribute(\"data-confirm\")) {\n    // Target might been the button's child node that's displayed as icon\n    target = target.parentNode;\n  }\n\n  const { dataset } = target;\n  const modal = document.querySelector(\"#modal\");\n  const modalInstance = Modal.getOrCreateInstance(modal);\n\n  const content = modal.querySelector(\".modal-content\");\n  const description = dataset.description || dataset.confirm;\n  const title = target.title || dataset.title || dataset.confirmTitle || \"\";\n\n  const template = `\n    <div id=\"modalContent\" class=\"modal-content\">\n      <div class=\"modal-header\">\n        <h5 class=\"modal-title\">${title || description}</h5>\n        <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n      </div>\n      <div class=\"modal-body\">\n        <p>${title ? description : \"\"}</p>\n      </div>\n      <div class=\"modal-footer\">\n        <button type=\"button\" class=\"btn btn-outline-danger\" data-bs-dismiss=\"modal\">Katkesta</button>\n        <button type=\"button\" class=\"btn btn-submit\" data-remote=\"true\">Kinnita</button>\n      </div>\n    </div>\n  `;\n\n  const fragment = document.createRange().createContextualFragment(template);\n  if (!title) {\n    fragment.querySelector(\".modal-body\").remove();\n  }\n\n  const confirmBtn = fragment.querySelector(\".btn-submit\");\n\n  // Inherit clicked button's data to dialog submit btn\n  for (let dataset in target.dataset) {\n    confirmBtn.dataset[dataset] = target.dataset[dataset];\n  }\n  // Removed confirm or it will loop\n  delete confirmBtn.dataset.confirm;\n\n  // Since button is button, not <a> tag, set data-url\n  if (target.href && !confirmBtn.dataset.url) {\n    confirmBtn.dataset.url = target.href;\n  }\n\n  content.replaceWith(fragment);\n\n  // Remove content when modal is hidden\n  modal.addEventListener(\n    \"hidden.bs.modal\",\n    evt => {\n      const content = evt.target.querySelector(\".modal-content\");\n      Array.from(content.children).forEach(el => content.removeChild(el));\n    },\n    { once: true }\n  );\n\n  modalInstance.show();\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport axios from \"axios\";\nimport { tinymceInit } from \"@/plugins/tinymce\";\n\nexport default class extends Controller {\n  static targets = [\"eventScheduleForm\", \"tinymceEditor\"];\n\n  eventScheduleFormTargetConnected() {}\n\n  tinymceEditorTargetConnected(elements) {\n    [elements].flat().forEach(element => {\n      tinymceInit({\n        selector: null,\n        target: element\n      });\n    });\n  }\n\n  openModalForm({ params, currentTarget }) {\n    currentTarget.disabled = true;\n    axios({\n      url: params.formUrl,\n      method: \"POST\",\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html\"\n      }\n    }).then(({ data }) => {\n      Turbo.session.receivedMessageFromStream(data);\n      currentTarget.disabled = false;\n      window.requestAnimationFrame(() => {\n        document.querySelectorAll(\"#modalContent select\").forEach(el => {\n          window.initSelect2(el);\n        });\n      });\n    });\n  }\n\n  submitOfficial(evt) {\n    evt.preventDefault();\n    console.log(\"wooo\");\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport axios from \"axios\";\n\nlet controller = null;\nlet initialFetchOfficial = true;\nexport default class extends Controller {\n  static targets = [\n    \"issuer\",\n    \"discipline\",\n    \"qualificationType\",\n    \"officialSelection\",\n    \"qualificationOfficialRightsInput\"\n  ];\n\n  connect() {\n    initialFetchOfficial = true;\n  }\n\n  disconnect() {\n    controller?.abort();\n  }\n\n  fetchOfficials({ currentTarget }) {\n    controller?.abort();\n    controller = new AbortController();\n\n    const form = currentTarget.closest(\".official-form\");\n    const officialInput = form.querySelector(\n      \"[data-qualifications-target='officialSelection']\"\n    );\n\n    const issuer = Array.from(\n      form.querySelectorAll(\"[data-qualifications-target='issuer'] input\")\n    ).find(x => x.checked)?.value;\n    const discipline = Array.from(\n      form.querySelectorAll(\"[data-qualifications-target='discipline'] input\")\n    ).find(x => x.checked)?.value;\n    const qualificationType = Array.from(\n      form.querySelectorAll(\n        \"[data-qualifications-target='qualificationType'] input\"\n      )\n    ).find(x => x.checked)?.value;\n\n    setQualificationOfficialRightsInput(\n      this.qualificationOfficialRightsInputTarget,\n      initialFetchOfficial\n    );\n\n    initialFetchOfficial = false;\n\n    if (issuer && discipline && qualificationType) {\n      axios({\n        url:\n          officialInput.dataset.url +\n          `?issuer=${issuer}&discipline=${discipline}&qualification_type=${qualificationType}`,\n        method: \"GET\",\n        headers: {\n          Accept: \"application/json\"\n        },\n        signal: controller.signal\n      })\n        .then(({ data }) => {\n          $(officialInput).empty();\n          data.results.forEach((option, index) => {\n            const elOption = new Option(option.text, option.id);\n            elOption.setAttribute(\"data-fei\", option.is_fei);\n            elOption.setAttribute(\"data-default-max\", option.default_max);\n            $(officialInput).append(elOption).trigger(\"change\");\n          });\n\n          // First time initiating this method is just to fetch data only\n          const officialId = document.querySelector(\n            \"[name='original_official_id']\"\n          )?.value;\n\n          if (officialId) {\n            $(officialInput).val(officialId).trigger(\"change\");\n          } else {\n            if (data.results.length) {\n              $(officialInput).trigger({\n                type: \"select2:select\",\n                params: {\n                  data: data.results[0]\n                }\n              });\n            } else {\n              $(officialInput).val(null).trigger(\"change\");\n            }\n          }\n        })\n        .catch(err => {\n          console.error(err);\n        });\n    }\n  }\n\n  officialSelectionTargetConnected(element) {\n    this.fetchOfficials({ currentTarget: element });\n    $(element).on(\"select2:select\", ({ params: { data } }) => {\n      const form = element.closest(\".official-form\");\n      const validTill = form.querySelector(\n        \"[data-qualifications-target='validTill']\"\n      );\n\n      let isFei, defaultMax;\n      if (data.element) {\n        isFei = data.element.dataset.is_fei;\n        defaultMax = data.element.dataset.default_max;\n      } else {\n        isFei = data.is_fei;\n        defaultMax = data.default_max;\n      }\n\n      if (defaultMax) {\n        let date = DayJS().add(defaultMax, \"years\");\n        if (!isFei) date = date.endOf(\"year\");\n        $(validTill).datepicker(\"setDate\", date.toDate());\n      }\n    });\n  }\n}\n\nfunction setQualificationOfficialRightsInput(\n  inputWrapper,\n  doNotAlterInputs = false\n) {\n  console.log(doNotAlterInputs);\n  const discipline = Array.from(\n    document.querySelectorAll(\"[data-qualifications-target='discipline'] input\")\n  ).find(x => x.checked)?.value;\n  const qualificationType = Array.from(\n    document.querySelectorAll(\n      \"[data-qualifications-target='qualificationType'] input\"\n    )\n  ).find(x => x.checked)?.value;\n\n  const inputs = inputWrapper.querySelectorAll(\"input[type='checkbox']\");\n\n  if (discipline === \"dressage\" && qualificationType === \"judge\") {\n    inputWrapper.classList.remove(\"d-none\");\n    inputs.forEach(x => {\n      if (!doNotAlterInputs) {\n        x.checked = false;\n      }\n      x.disabled = false;\n    });\n  } else if (discipline === \"dressage\" && qualificationType === \"steward\") {\n    inputWrapper.classList.remove(\"d-none\");\n    inputs.forEach(x => {\n      if (!doNotAlterInputs) {\n        x.checked = false;\n      }\n\n      if (x.labels[0].textContent == \"Para\") {\n        x.disabled = false;\n      } else {\n        x.disabled = true;\n      }\n    });\n  } else {\n    inputWrapper.classList.add(\"d-none\");\n    inputs.forEach(x => {\n      if (!doNotAlterInputs) {\n        x.checked = false;\n      }\n      x.disabled = true;\n    });\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { LoadingSpinnerHandler } from \"@mixins/btnLoading\";\nimport axios from \"axios\";\n\nexport default class extends Controller {\n  static targets = [\"configCheckbox\", \"cloneChartConfigsBtn\"];\n\n  selectAllChartConfigs({ target }) {\n    const checkedVal = target.checked;\n\n    const table = target.closest(\"table\");\n    Array.from(\n      table.querySelectorAll(\"tbody > tr input[name='clone_chart_ids[]']\")\n    ).forEach(checkbox => {\n      checkbox.checked = checkedVal;\n    });\n\n    this.cloneChartConfigsUpdate();\n  }\n\n  cloneChartConfigsUpdate() {\n    const btn = this.cloneChartConfigsBtnTarget;\n    btn.disabled =\n      Array.from(this.configCheckboxTargets).filter(\n        checkbox => checkbox.checked\n      ).length == 0;\n  }\n\n  cloneChartConfigs({ params }) {\n    const chartIds = Array.from(this.configCheckboxTargets).reduce(\n      (arr, checkbox) => {\n        if (checkbox.checked) {\n          arr.push(checkbox.value);\n        }\n        return arr;\n      },\n      []\n    );\n\n    if (chartIds.length == 0) return;\n\n    LoadingSpinnerHandler.add(this.cloneChartConfigsBtnTarget);\n    this.cloneChartConfigsBtnTarget.disabled = true;\n    axios({\n      method: \"POST\",\n      url: params.url,\n      redirect: \"error\",\n      headers: {\n        Accept: \"text/vnd.turbo-stream.html\"\n      },\n      data: {\n        clone_chart_ids: chartIds,\n        original_year: params.originalYear\n      }\n    }).then(({ data }) => {\n      LoadingSpinnerHandler.remove(this.cloneChartConfigsBtnTarget);\n      Turbo.session.receivedMessageFromStream(data);\n    });\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\"registrationForm\", \"ponySelectionInput\"];\n\n  ponySelectionInputTargetConnected(element) {\n    window.requestAnimationFrame(() => {\n      window.initSelect2(element);\n\n      /*$(element).on(\"select2:unselect\", () => {\n        const input = $(element);\n        input.addClass(\"d-none\");\n        const destroyInput = document.createElement(\"input\");\n        destroyInput.setAttribute(\"type\", \"hidden\");\n        destroyInput.setAttribute(\"autocomplete\", \"off\");\n        destroyInput.setAttribute(\n          \"id\",\n          input.attr(\"id\").replace(\"_id\", \"__destroy\")\n        );\n        destroyInput.setAttribute(\n          \"name\",\n          input.attr(\"name\").replace(\"[id]\", \"[_destroy]\")\n        );\n        destroyInput.setAttribute(\"value\", null);\n        input.append(destroyInput);\n      });*/\n    });\n  }\n\n  registrationFormTargetConnected() {\n    if (\n      $(\"#noncompetition_registration_person_is_not_in_ratsanet:checked\")[0]\n    ) {\n      $(\"#person_details\").removeClass(\"d-none\");\n    }\n\n    $(\"#noncompetition_registration_person_is_not_in_ratsanet\").on(\n      \"change\",\n      evt => {\n        if (evt.target.checked) {\n          $(\"#person_details\").removeClass(\"d-none\");\n        } else {\n          $(\"#person_details\").addClass(\"d-none\");\n        }\n      }\n    );\n  }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nexport default class extends Controller {\n  connect() {\n    const actionName = this.element.getAttribute(\"data-action\");\n    if (typeof this[actionName] === \"function\") this[actionName]();\n\n    $(\"#startdateDatepicker\").on(\"change\", () => {\n      const startDate = DayJS($(\"#startdateDatepicker\").datepicker(\"getDate\"));\n      const endDate = DayJS($(\"#enddateDatepicker\").datepicker(\"getDate\"));\n      if (startDate.isAfter(endDate)) {\n        $(\"#enddateDatepicker\").datepicker(\"setDate\", startDate.toDate());\n      }\n      $(\"#enddateDatepicker\").datepicker(\"setStartDate\", startDate.toDate());\n    });\n\n    $(\"#enddateDatepicker\").on(\"change\", () => {\n      const startDate = DayJS($(\"#startdateDatepicker\").datepicker(\"getDate\"));\n      const endDate = DayJS($(\"#enddateDatepicker\").datepicker(\"getDate\"));\n      if (endDate.isBefore(startDate)) {\n        $(\"#startdateDatepicker\").datepicker(\"setDate\", startDate.toDate());\n      }\n    });\n  }\n}\n"],"names":["setupJavascript","modal","document","querySelector","modalInstance","Modal","getOrCreateInstance","hiddenCallback","modalContent","Array","from","children","forEach","el","remove","addEventListener","domObserver","MutationObserver","mutationList","mutation","node","addedNodes","name","hide","show","removeEventListener","observe","childList","setUpModal","scrollBtnTigger","classList","add","scrollbtn","IntersectionObserver","entries","intersectionRatio","window","scrollTo","setupScrollUp","notice","sessionStorage","getItem","alert","removeItem","noticeBox","innerText","alertBox","setSessionMessage","initDatepicker","initSelect2","initTooltips","navTabs","querySelectorAll","length","location","hash","split","navLink","click","Dropdown","boundary","evt","preventDefault","stopPropagation","confirmationDialog","capture","removeVisibleTooltips","Tooltip","feiLicences","insurance","textInputDelay","_Class","Controller","productFormTargetConnected","tinymceInit","toolbar","orderItemFormTargetConnected","form","triggerValidation","value","submit","disabled","LoadingSpinnerHandler","formData","FormData","type","token","getElementsByName","axios","url","action","method","headers","content","Accept","data","then","Turbo","session","receivedMessageFromStream","catch","error","console","clearTimeout","setTimeout","$","on","insuranceInput","target","camelCase","feiLicenceInput","targetInput","checked","push","filter","x","initialize","actionName","this","element","getAttribute","index","search","includes","param","URLSearchParams","disciplineTabNav","get","history","replaceState","state","discipline","setHash","params","visit","pathname","selectDifferentYearWithHash","href","openMenu","currentTarget","openMobileDialog","dataset","closeMenu","closeMobileDialog","selectedText","closest","connect","Carousel","interval","formTargetConnected","controller","AbortController","disconnect","abort","loadMore","set","pageNumberValue","toString","responseType","signal","rows","parseTableRows","append","err","_defineProperty","pageNumber","Number","response","table","createElement","id","innerHTML","courseEventTableFormSignal","searchInputDelay","searchQueryDelay","_courseEventTableForm","courseEventFormTargetConnected","code","categoryInput","showOrHideCategoryTextInput","removeClass","addClass","val","newDate","dayjs","endDateInput","endDate","datepicker","toDate","courseEventsTableFormTargetConnected","e","className","fetchEvents","_courseEventTableForm2","loadingDelay","showLoading","redirect","maxRedirects","warn","loadingIndicatorBtn","cloneNode","prepend","loadMoreEvents","courseEventsTableFormTarget","tableFormPage","openTableFilters","goToCourseEvent","tagName","searchDisciplineParam","has","allSelected","toggleAllPeopleSelection","goToMassAssignment","containerTargetConnected","broadcastJobsManualTriggerWatcherTargetConnected","backgroundJobStarted","subtree","attributes","externalDialog","siblings","dialog","parentNode","removeChild","mobileDialogSubmit","requestSubmit","expand","toggle","openLoginForm","loginForm","popperInstance","createPopper","loginFormPopperAnchorTarget","placement","modifiers","options","offset","loginFormExit","_document$querySelect","body","destroy","overlay","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","keys","Object","resolve","module","exports","eventTableFormSignal","_eventTableFormSignal","openCupsFilter","cupSearchTargetConnected","Promise","multidate","clearBtn","autoclose","minViewMode","maxViewMode","forceParse","format","toDisplay","date","DayJS","toValue","passive","renderStreamMessage","cupTableContentTarget","childElementCount","eventsForCupInputTargetConnected","select2","minimumInputLength","ajax","delay","dataType","log","startdate","enddate","disciplineIds","find","each","i","option","term","discipline_ids","select","hasClass","once","startDate","isAfter","isBefore","channels","require","newHorseOwnerTargetConnected","async","post","requestAnimationFrame","valid","goToClub","path","clubPath","getRecipients","mass_mail","competition_division_difficulty_ids","trHTML","item","email","html","empty","countRecipients","prop","recipientCheckboxes","recipientsCount","goToHorse","horsePath","openHorseFilter","innerWidth","Collapse","loadMoreHorses","loadMoreTablePageValue","trigger","k","v","input","scrollIntoView","scrollBy","shareCompetitionsLink","navigator","clipboard","writeText","resultsToggle","legacyResultsTarget","modernResultsTarget","modernResultsTargetConnected","RatsanetTable","eagerFetch","contentBodySelector","itemsPerPage","new_horse_owner","attr","loadMoreTablePage","constructor","config","searchInputInUse","_pagesRange","timer","currentPageIndex","foundTotal","$form","searchFilter","_fetchResults","$table","setAttribute","observerTrigger","observer","contains","targetNode","$paginationContainer","pagesRange","$contentBody","$tableBody","_updatePageRange","_renderPagination","totalCount","range","pages","Math","ceil","parseInt","flat","renderList","slice","start","end","leftSide","rightSide","unshift","pageNum","linkElement","appendChild","_changePage","bind","pageIndex","behavior","block","_document$getElements","limit","key","totalFound","resultTotal","LOADING_SPINNER","createRange","createContextualFragment","eventFormFieldCupsSignal","eventFormTargetConnected","formElement","subtract","refreshFormFieldCups","hasEventFormFieldCupsTarget","disciplines","eventFormFieldDisciplinesTargets","eventFormFieldStartdateTarget","eventFormFieldEnddateTarget","selected","eventFormFieldCupsTarget","_eventFormFieldCupsSi","firstChild","seletcedValuesStillExist","results","cup","Option","text","eventFormFieldDisciplinesTargetConnected","labels","textContent","eventsTableFormTargetConnected","eventsTableFormTarget","accept","eventsTableFormPageValue","eventsTableContentTarget","eventsTableFormLoadMoreTarget","confirmCompetitionOrderTargetConnected","button","sortable","Sortable","handle","dragClass","scroll","onStart","onEnd","oldIndex","newIndex","tr","_confirmCustomCompetitionOrder","hasConfirmCompetitionOrderTarget","row","order","eventIdValue","event_id","competitions","JSON","stringify","review_payments","horse_checkboxes","countHorseCheckedCheckboxes","person_checkboxes","countPersonCheckedCheckboxes","goToEvent","openEventFilter","confirm_events","btn","confirmEventsSubmit","confirmEventsFormTarget","success","setItem","message","reload","toggleParticipantsCount","hasUpdateParticipantsFormTarget","participantsTotalTarget","toggleClass","updateParticipantsFormTarget","updateParticipants","submitBtn","newCount","protocolSelection","Boolean","showRegistrationDates","doc","sortRegistartionDates","tbody","reduce","arr","sort","a","b","unix","eventOverviewSubmittedExportModalFormTargetConnected","year","blob","Blob","link","URL","createObjectURL","download","getInstance","showParadressageOption","checkboxWrapper","eventsTableFormPage","eventId","intervalPingPong","invoiceRequest","showInvoiceForm","termsAgreed","agreeTerms","hasMontonioPaymentMethodsTarget","_document$querySelect2","montonioPaymentMethodsTarget","stripeFormTargetConnected","_element$querySelecto","_element$querySelecto2","_element$querySelecto3","_element$querySelecto4","_element$querySelecto5","_element$querySelecto6","useSandbox","stripe","stripePublicKey","stripeClientSecret","paymentIntentUuid","onBehalfOf","amount","createOrder","montonioWalletUrlValue","cancelOrder","montonioCancelUrlValue","expressCheckoutElement","getElementById","event","montonioSuccessUrlValue","checkoutCallback","values","onMontonioLoaded","embeddedPayment","Montonio","Checkout","EmbeddedPayments","initializePayment","locale","country","targetId","expressCheckoutTargetId","enableExpressCheckout","onExpressCheckoutAsync","currency","paymentMethod","version","confirmPayment","pingPongIsOrderPaidTargetConnected","currentUrl","pingPongUntilPaid","pingPongIsOrderPaidTargetDisconnected","clearInterval","showHideBankPaymentMethods","invoiceFormTarget","bankOptionsTarget","informTransaction","informTransactionTarget","expandOrder","rtsTarget","checkAllOrderUpdate","openOrderItemEdit","openConfirmationDialog","confirmPaymentSubmission","detail","formSubmission","result","bankingCountrySelectTargetConnected","updateBankSelections","toggleInvoicePayment","montonioWalletUrl","String","montonioSuccessUrl","montonioCancelUrl","Chart","register","Colors","abortController","updateChart","root","chartUpdate","CustomEvent","dispatchEvent","selectStatistic","_currentStat$classLis","_loading$classList","statName","oldActive","statListNavigationTarget","currentStat","statViewTargets","newStat","loading","expandTable","collapseTarget","collapse","statViewsTargetConnected","previousElementSibling","firstStatId","statListNavigationTargetConnected","call","parent","_Collapse$getInstance","statContentTargetConnected","canvas","datasets","parseTableData","responsive","plugins","colors","forceOverride","chart","merge","chartType","scales","stacked","y","y2","display","position","chartConfig","update","hydrateAllCache","min","max","minIndex","findIndex","maxIndex","groups","chartGroup","column","array","groupLabel","_groupLabel$dataset$c","_groupLabel$dataset","columns","splice","chartValue","label","yAxisID","chartYAxesId","sanctionAllTypes","sanctinoAllReasons","delaySubmit","assertReasonTextRequirement","entity","entityValue","primaryFormTarget","updateBasedOnEntity","horseId","horseFutureCompetitionWrapper","horse_id","updateEntitySelection","personSelect","horseSelect","reasonsThatRequireText","reasonRequiresTextTargets","reasonTextWrapper","searchFormTargetConnected","loadingIndicator","loadMoreSanctions","page","blank","personTypes","horseTypes","personReasons","horseReasons","registrationFormTargetConnected","updateForm","delete","formWrapperTarget","formLoadingTarget","checkUrlValue","uncheckOtherDifficulty","difficulties","division","uncheckOtherDivisions","difficultyCheckboxTargets","entriesCompetitionNrParam","competitionNr","entriesDivisionParam","checkUrl","test","ponyMeasurementEventTableFormSignal","_ponyMeasurementEvent","ponyMeasurementEventFormTargetConnected","regEndDateInput","regEndDate","ponyMeasurementEventsTableFormTargetConnected","_ponyMeasurementEvent2","toggleMasterlistTable","masterlist","simplifiedMasterlist","trainerProfileFormTargetConnected","copyFileLink","uploadFiles","upload","files","file","deleteUpload","deleteLink","childNodes","CancelToken","axionCancelToken","source","primaryMenuTargetConnected","formConsentsTargetConnected","generalCheckTarget","hasTrusteeCheckTarget","trusteeCheckTarget","marketingCheckTarget","allowOtherConsents","goToPerson","personPath","openPersonFilter","openOfficialFilter","openTrainerFilter","loadMorePeople","queryString","triggerEl","Tab","personOrdersTableTargetConnected","personEntriesTableTargetConnected","eventsOfficialTableTargetConnected","coursesTableTargetConnected","personAchievementsTableTargetConnected","personPupilsEntriesTableTargetConnected","personPupilsGreencardTableTargetConnected","personPupilsLevelsTableTargetConnected","Infinity","personPupilsYearsTableTargetConnected","personSanctionsTableTargetConnected","openProfileMenu","closeProfileMenu","officialsSearchFormTargetConnected","updateOfficialList","officialsSearchFormTarget","getAll","types","issuer","cancel","query","cancelToken","officialListTarget","thrown","isCancel","openOfficialSearchDialogInfo","closeOfficialSearchDialogInfo","parents","filterTab","trusteeConsentExport","trustee","general","undefined","marketing","open","exportUrl","menuTargetConnected","newForm","rowFormTemplate","tableBody","editForm","inputTemplate","selectInput","insertBefore","cancelForm","submitForm","courseEventId","targetObject","category","category_i18n","file_link","file_name","file_size","updateEventDocumentRow","toBeReplacedRow","noncompetition_event_id","replaceWith","createEventDocumentRow","createConsumer","BackgroundJobToast","job","callbacks","toastId","queue_name","queue","toastHandler","toast","render","toggleFailedJobIndicator","indicator","style","getCurrentJobsTotal","updateTotalJobs","total","getToastDOMString","Toast","autohide","animation","created_at","updateProgress","done_at","setSuccessState","last_error","failed_at","setFailedState","updateStage","progress_current","current","progress_max","progress","progressNumber","css","progress_stage","showCloseButton","removeJob","cancelJob","closeBtnParent","subscriptions","consumer","createSubscription","jobs","create","channelName","connected","_Object$keys","jobsListed","removeBackgroundJobToast","cancelBackgroundJob","disconnected","received","jobRespond","turbo_action_url_html_selector","selector","updateParam","turboStreamUpdateUrl","toastJob","assign","_token$","channel","some","deleted","trackerIndexNavTargetConnected","nav","removeAttribute","manage","r","tracker_id","rank_order","cache","trackers","beforeSend","done","title","bodyMessage","toastOptions","fail","goToTracker","trackerPath","emitter","EventEmitter","jquery","jQuery","bootstrapModal","bootstrap","hugerte","toasts","defaults","common","hidden","competitionEntryRuleTemplateTargetConnected","nestedField","template_id","prev","competitionFormTargetConnected","eventcodes","additEventcodes","updateBasedOnDiscipline","parentElem","escapedDiscipline","replace","eventcodeOptions","additEventcodeOptions","typeOptions","initDifficulties","setCollapse","difficultyOptions","difficulty","markingSheet","initDifficultyOptions","inserted","competitionFormTargetDisconnected","turboConfirmationDialog","shadowForm","description","turboConfirm","submitText","existingSubmit","confirmSubmit","turboMethod","submitClass","fragment","doNotClose","template","eventScheduleFormTargetConnected","tinymceEditorTargetConnected","elements","openModalForm","formUrl","submitOfficial","initialFetchOfficial","_controller","fetchOfficials","_controller2","_Array$from$find","_Array$from$find2","_Array$from$find3","officialInput","qualificationType","inputWrapper","doNotAlterInputs","_Array$from$find4","_Array$from$find5","inputs","setQualificationOfficialRightsInput","qualificationOfficialRightsInputTarget","elOption","is_fei","default_max","officialId","officialSelectionTargetConnected","validTill","isFei","defaultMax","endOf","selectAllChartConfigs","checkedVal","checkbox","cloneChartConfigsUpdate","cloneChartConfigsBtnTarget","configCheckboxTargets","cloneChartConfigs","chartIds","clone_chart_ids","original_year","originalYear","ponySelectionInputTargetConnected"],"sourceRoot":""}