{"version":3,"sources":["webpack:///./app/javascript/schedules/controllers/skd_event_mode_type_controller.ts"],"names":["ModeType","initialSrc","selectedMode","useResetForm","this","element","form","lazyLoadSrc","target","checked","radio","radioTargets","find","r","displayValue","dataset","textTarget","innerText","event","HTMLInputElement","url","constructURL","event_mode_id","value","event_type_id","toString","selectModeType","refetch_time","Date","getTime","hasDropdownBtnTarget","dropdownBtnTarget","disabled","hasObserverTarget","observerTarget","setAttribute","hasPatientsTarget","patientsTarget","hidden","autocomplete","querySelector","HTMLElement","required","OutOfOffice","Other","hideObserverAddition","hidePatientsAddition","InPerson","showPatientsAddition","Teletherapy","showObserverAddition","eventTypeDefaultTitleTarget","patientNameDefaultTitleTarget","formTypeValue","allDayModeCheckboxTarget","click","lazyLoadTarget","getAttribute","src","closest","Controller","targets","values","randomId","String","formType","default","type"],"mappings":"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","file":"js/88-854a82ae52e9e0693840.chunk.js","sourcesContent":["import { Controller } from '@hotwired/stimulus';\nimport { constructURL } from 'helpers/url';\nimport useResetForm from 'stimulus-hooks/use-reset-form';\n\nenum ModeType {\n  InPerson = '50658e86-5837-4816-a2c1-9870ebbe987b',\n  Teletherapy = 'b2c74159-e950-426a-8157-d7d568dba95e',\n  OutOfOffice = 'dde9d33c-8fb5-4f49-a8f9-1f4b19e085f4',\n  Other = 'c142e891-9ad2-4421-8dab-d28e571b6098',\n}\n\ntype ModeTypeIds = ModeType[keyof ModeType];\n\nexport default class extends Controller {\n  static targets = [\n    'radio',\n    'text',\n    'lazyLoad',\n    'observer',\n    'patients',\n    'dropdownBtn',\n    'modeRadio',\n    'allDayModeCheckbox',\n    'patientNameDefaultTitle',\n    'eventTypeDefaultTitle',\n  ];\n\n  static values = {\n    randomId: String,\n    formType: {\n      default: 'events-new-form',\n      type: String,\n    },\n  };\n\n  initialSrc = '';\n  selectedMode?: HTMLInputElement;\n\n  connect() {\n    useResetForm(this, { element: this.form });\n    this.initialSrc = this.lazyLoadSrc;\n  }\n\n  modeRadioTargetConnected(target: HTMLInputElement) {\n    if (target.checked) {\n      this.selectedMode = target;\n    }\n  }\n\n  selectType() {\n    const radio = this.radioTargets.find((r) => r.checked);\n    const displayValue = radio?.dataset.displayValue;\n    if (!displayValue) return;\n\n    this.textTarget.innerText = displayValue;\n  }\n\n  refetchTypes(event: Event) {\n    if (!this.lazyLoadSrc) return;\n    const { target } = event;\n    if (!(target instanceof HTMLInputElement)) return;\n\n    const url = constructURL(this.lazyLoadSrc, { event_mode_id: target.value, event_type_id: null });\n    this.lazyLoadSrc = url.toString();\n  }\n\n  resetForm() {\n    const selectedMode = this.selectedMode?.value as ModeTypeIds | undefined;\n    if (selectedMode) {\n      this.selectModeType(selectedMode);\n    }\n\n    if (this.initialSrc) {\n      const url = constructURL(this.initialSrc, { refetch_time: new Date().getTime().toString() });\n      this.lazyLoadSrc = url.toString();\n    }\n  }\n\n  enableDropdown() {\n    if (!this.hasDropdownBtnTarget) return;\n    this.dropdownBtnTarget.disabled = false;\n  }\n\n  disableDropdown() {\n    if (!this.hasDropdownBtnTarget) return;\n    this.dropdownBtnTarget.disabled = true;\n  }\n\n  hideObserverAddition() {\n    if (!this.hasObserverTarget) return;\n    this.observerTarget.setAttribute('hidden', '');\n  }\n\n  hidePatientsAddition() {\n    if (this.hasPatientsTarget) {\n      this.patientsTarget.hidden = true;\n    }\n\n    const autocomplete = this.patientsTarget.querySelector('awc-autocomplete');\n    if (!(autocomplete instanceof HTMLElement)) return;\n    autocomplete.required = false;\n  }\n\n  showObserverAddition() {\n    if (!this.hasObserverTarget) return;\n    this.observerTarget.hidden = false;\n  }\n\n  showPatientsAddition() {\n    if (this.hasPatientsTarget) {\n      this.patientsTarget.hidden = false;\n    }\n\n    const autocomplete = this.patientsTarget.querySelector('awc-autocomplete');\n    if (!(autocomplete instanceof HTMLElement)) return;\n\n    autocomplete.required = true;\n  }\n\n  updateFields(event: Event) {\n    const { target } = event;\n    if (!(target instanceof HTMLInputElement)) return;\n    this.selectModeType(target.value as ModeTypeIds);\n  }\n\n  private selectModeType(value: ModeTypeIds) {\n    if (value === ModeType.OutOfOffice || value === ModeType.Other) {\n      this.hideObserverAddition();\n      this.hidePatientsAddition();\n    } else if (value === ModeType.InPerson) {\n      this.hideObserverAddition();\n      this.showPatientsAddition();\n    } else if (value === ModeType.Teletherapy) {\n      this.showObserverAddition();\n      this.showPatientsAddition();\n    }\n\n    if (value === ModeType.OutOfOffice || value === ModeType.Other) {\n      this.eventTypeDefaultTitleTarget.hidden = false;\n      this.patientNameDefaultTitleTarget.hidden = true;\n    } else {\n      this.eventTypeDefaultTitleTarget.hidden = true;\n      this.patientNameDefaultTitleTarget.hidden = false;\n    }\n\n    if (this.formTypeValue === 'events-new-form') {\n      if (value === ModeType.OutOfOffice && !this.allDayModeCheckboxTarget.checked) {\n        this.allDayModeCheckboxTarget.click();\n      } else if (this.allDayModeCheckboxTarget.checked && value !== ModeType.OutOfOffice) {\n        this.allDayModeCheckboxTarget.click();\n      }\n    }\n  }\n\n  private get lazyLoadSrc() {\n    return this.lazyLoadTarget.getAttribute('data-lazy-load-src-value') || '';\n  }\n\n  private set lazyLoadSrc(src: string) {\n    this.lazyLoadTarget.setAttribute('data-lazy-load-src-value', src);\n  }\n\n  private get form() {\n    return this.element.closest('form') as HTMLFormElement;\n  }\n\n  declare readonly radioTargets: HTMLInputElement[];\n  declare readonly textTarget: HTMLElement;\n  declare readonly lazyLoadTarget: HTMLElement;\n  declare readonly dropdownBtnTarget: HTMLButtonElement;\n  declare readonly observerTarget: HTMLElement;\n  declare readonly modeRadioTargets: HTMLInputElement[];\n  declare readonly allDayModeCheckboxTarget: HTMLInputElement;\n  declare readonly eventTypeDefaultTitleTarget: HTMLElement;\n  declare readonly patientNameDefaultTitleTarget: HTMLElement;\n  declare readonly hasDropdownBtnTarget: boolean;\n  declare readonly hasObserverTarget: boolean;\n  declare readonly hasPatientsTarget: boolean;\n  declare readonly randomIdValue: string;\n  declare readonly formTypeValue: string;\n  declare readonly patientsTarget: HTMLElement;\n}\n"],"sourceRoot":""}