{"version":3,"file":"assets/chunk.52ca099e888bd1125dee.js","mappings":"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","sources":["src/components/action-sheets/confirm-save.hbs","src/components/action-sheets/confirm-save.ts","src/components/file-upload.hbs","src/components/file-upload.ts","src/components/page-view/details.hbs","src/components/page-view/details.ts","src/components/schedule-view.hbs","src/components/schedule-view.ts","src/components/simple-binary/async-toggle.hbs","src/components/simple-binary/async-toggle.ts","src/helpers/handle-number-change.ts","src/components/keyword-search-toolbar.hbs","src/components/keyword-search-toolbar.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"<ActionSheet\\n @isActive={{@isActive}}\\n @title={{t \\\"generic.save\\\"}}\\n @buttons={{array\\n (hash text=(t \\\"generic.cancel\\\") fn=@close)\\n (hash text=(t \\\"generic.save\\\") color=\\\"primary\\\" fn=@confirm disabled=(coalesce @disabled false))\\n }}\\n @close={{@close}}\\n ...attributes\\n>\\n <:default>\\n <p>{{@confirmationDescription}}</p>\\n </:default>\\n</ActionSheet>\")","import templateOnlyComponent from '@ember/component/template-only';\n\nexport interface ActionSheetsConfirmSaveSignature {\n Args: {\n close: VoidFunction;\n confirm: VoidFunction;\n disabled?: boolean;\n confirmationDescription: string;\n isActive: boolean;\n };\n Element: HTMLDivElement;\n}\n\nconst ActionSheetConfirmSave = templateOnlyComponent<ActionSheetsConfirmSaveSignature>();\nexport default ActionSheetConfirmSave;\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"<div class=\\\"file-upload\\\" ...attributes>\\n {{#if (has-block)}}\\n <button type=\\\"button\\\" disabled={{this.isUploading}} {{on \\\"click\\\" this.selectFile}}>\\n {{yield}}\\n </button>\\n {{else}}\\n <label\\n for={{guid-for this}}\\n class=\\\"btn\\\"\\n tabindex=\\\"0\\\"\\n role=\\\"button\\\"\\n aria-label={{tc this \\\"browseAriaLabel\\\"}}\\n {{on \\\"keyup\\\" this.onKeyUp}}\\n >\\n {{tc this \\\"browse\\\"}}\\n </label>\\n {{/if}}\\n\\n <span class=\\\"content-wrapper {{if (has-block) \\'custom\\'}}\\\">\\n {{#if this.isUploading}}\\n <SpinnerSvg @spinning={{true}} @title={{tc this \\\"loading\\\"}} />\\n {{else}}\\n {{#unless (has-block)}}\\n {{coalesce this.fileName (tc this \\\"noFileSelected\\\")}}\\n {{/unless}}\\n {{/if}}\\n </span>\\n\\n <input\\n id={{guid-for this}}\\n type=\\\"file\\\"\\n accept={{@accept}}\\n disabled={{this.isUploading}}\\n {{on \\\"change\\\" this.fileSelected}}\\n />\\n</div>\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { isEnterOrSpaceCode } from '@adc/ember-utils/utils/a11y';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { intlPath } from '@adc/i18n/path';\n\nimport type AjaxService from '@adc/ajax/services/adc-ajax';\n\nexport interface FileUploadSignature {\n Element: HTMLDivElement;\n Args: {\n /** The maximum allowed file size, in bytes. */\n maxFileSize?: number;\n /** A CSV string indicating the accepted file types. */\n accept?: string;\n /** The URI endpoint to upload the file to. */\n endpoint?: string;\n /** Triggered after the file has uploaded tp the `@endpoint`. */\n fileUploaded?: (result: Record<string, unknown>) => void;\n /** Triggered when the user has selected a file. */\n fileChanged?: () => void;\n /** Triggered when the file upload has failed. */\n uploadFailed?: (error: any) => void;\n /** Triggered when the selected file size is greater than the indicates `@maxFileSize`. */\n fileTooLarge?: () => void;\n };\n Blocks: {\n default: [];\n };\n}\n\n/**\n * Default max file size in bytes.\n *\n * @private\n */\nconst DEFAULT_MAX_FILE_SIZE_BYTES = 5 * 1024 * 1024;\n\n/**\n * Upload the specified file.\n *\n * @private\n */\nasync function uploadFile(this: FileUploadComponent, file: File): Promise<void> {\n const formData = new FormData();\n formData.append('file', file);\n\n Object.assign(this, {\n isUploading: true,\n fileName: file.name\n });\n\n try {\n const result = await postFormData.call(this, this.args.endpoint, formData);\n this.args.fileUploaded?.(result);\n } catch (error) {\n this.fileName = '';\n this.args.uploadFailed?.(error);\n }\n}\n\n/**\n * Send the specified formData to the endpoint.\n *\n * @param endpoint - The api endpoint that should be POSTed to.\n * @param formData - A FormData object that contains the file to upload.\n *\n * @private\n */\nfunction postFormData(\n this: FileUploadComponent,\n endpoint: string,\n formData: FormData\n): Promise<Record<string, unknown>> {\n const { defaultHeaders, apiBaseUrl } = this.ajax;\n\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('POST', `${apiBaseUrl}/${endpoint}`);\n xhr.setRequestHeader('AjaxRequestUniqueKey', defaultHeaders.ajaxrequestuniquekey ?? '');\n\n xhr.onload = function () {\n if (this.status >= 200 && this.status < 300) {\n resolve(JSON.parse(xhr.responseText));\n return;\n }\n\n reject({\n status: this.status,\n statusText: xhr.statusText\n });\n };\n\n xhr.onerror = function () {\n reject({\n status: this.status,\n statusText: xhr.statusText\n });\n };\n\n xhr.send(formData);\n });\n}\n\n/**\n * Reset the upload field.\n *\n * @private\n */\nfunction resetUploadField(this: FileUploadComponent, fileInput: HTMLInputElement): void {\n fileInput.files = null;\n fileInput.value = '';\n this.isUploading = false;\n}\n\n/**\n * @classdesc\n * Upload a file using a POST request to an endpoint.\n */\n@intlPath({ module: '@adc/ui-components', path: 'file-upload' })\nexport default class FileUploadComponent extends Component<FileUploadSignature> {\n @service declare ajax: AjaxService;\n\n /**\n * Max file size that this field will support.\n */\n get maxFileSize(): number {\n return this.args.maxFileSize ?? DEFAULT_MAX_FILE_SIZE_BYTES;\n }\n\n /**\n * Name of the currently selected file.\n *\n * @ignore\n */\n @tracked fileName = '';\n\n /**\n * Is a file currently being uploaded?\n *\n * @ignore\n */\n @tracked isUploading = false;\n\n /**\n * Upload a file when a user selects one to be uploaded.\n */\n @action\n async fileSelected(evt: Event): Promise<void> {\n const fileInput = evt.target as HTMLInputElement;\n if (!fileInput?.files?.length) {\n return;\n }\n\n // Call the fileChanged action if there is one.\n this.args.fileChanged?.();\n\n const [file] = fileInput.files;\n\n // The file is too large, call the fileTooLarge action if there is one.\n if (file.size > this.maxFileSize) {\n this.args.fileTooLarge?.();\n } else {\n await uploadFile.call(this, file);\n }\n\n resetUploadField.call(this, fileInput);\n }\n\n @action\n selectFile(e: MouseEvent & { target: HTMLButtonElement }): void {\n e.preventDefault();\n e.target.closest('.file-upload')?.querySelector<HTMLInputElement>('input[type=\"file\"]')?.click();\n }\n\n /**\n * For a11y, handles a space or enter while focusing on the file upload button.\n */\n @action onKeyUp(evt: KeyboardEvent & { target: HTMLInputElement }): void {\n if (isEnterOrSpaceCode(evt.code)) {\n evt.preventDefault();\n evt.target.closest('.file-upload')?.querySelector<HTMLInputElement>('input[type=\"file\"]')?.click();\n }\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"<PageView @model={{@model}} ...attributes>\\n <:default as |PageViewContainer api|>\\n <PageViewContainer @dataLoaded={{@dataLoaded}} class=\\\"md {{coalesce @cssContainer \\'\\'}}\\\">\\n <:loading as |PageViewLoading|>\\n <PageViewLoading />\\n </:loading>\\n\\n <:default as |data|>\\n {{yield data api}}\\n\\n {{#if @deleteModel}}\\n <RouteView::Content::DeleteModel @model={{@deleteModel}} />\\n {{/if}}\\n </:default>\\n\\n <:error as |PageViewError|>\\n <PageViewError />\\n </:error>\\n </PageViewContainer>\\n </:default>\\n</PageView>\")","import Component from '@glimmer/component';\n\nimport type { PageViewSignature } from '../page-view';\nimport type { PageViewContainerSignature } from '../page-view/container';\nimport type { PageViewDeleteSignature } from './delete';\n\ninterface PageViewDetailsSignature<M> {\n Element: PageViewSignature<M>['Element'];\n Args: Pick<PageViewContainerSignature<M>['Args'], 'model' | 'dataLoaded'> & {\n /** Information about the delete operation. */\n deleteModel?: PageViewDeleteSignature['Args']['model'];\n /** Optional CSS class applied to the `<PageView::Container />` component. */\n cssContainer?: string;\n };\n Blocks: {\n default: [PageViewContainerSignature<M>['Blocks']['default'][0], PageViewSignature<M>['Blocks']['default'][1]];\n };\n}\n\n// eslint-disable-next-line ember/no-empty-glimmer-component-classes\nexport default class PageViewDetails<M> extends Component<PageViewDetailsSignature<M>> {}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"<div class=\\\"schedule-view\\\" ...attributes>\\n <div class=\\\"schedule-grid\\\">\\n <ScheduleHourLabels @isVertical={{false}} class=\\\"hour-labels top\\\" />\\n\\n {{#if this.isScheduleAllTimes}}\\n <div class=\\\"all-times {{@allTimesColor}}\\\">\\n {{coalesce @allTimesText \\\"\\\"}}\\n <div class=\\\"border\\\"></div>\\n <div class=\\\"background\\\"></div>\\n </div>\\n {{/if}}\\n\\n {{! Schedule blocks }}\\n {{#each this.scheduleElements as |scheduleElement|}}\\n <div class=\\\"schedule-day\\\">\\n <div class=\\\"day-label\\\">\\n {{scheduleElement.dayOfWeek}}\\n </div>\\n {{#each scheduleElement.schedules as |accessPlan|}}\\n {{#if accessPlan.timeBlocks.length}}\\n <div class=\\\"schedule-single-row-wrapper {{accessPlan.planColor}}\\\">\\n {{#each accessPlan.timeBlocks as |scheduleDay|}}\\n <div class=\\\"schedule-time-span {{scheduleDay.classes}}\\\" style={{scheduleDay.style}}>\\n {{scheduleDay.label}}\\n <div class=\\\"border\\\"></div>\\n <div class=\\\"background\\\"></div>\\n </div>\\n {{/each}}\\n </div>\\n {{/if}}\\n {{/each}}\\n </div>\\n {{/each}}\\n </div>\\n</div>\")","import { computed } from '@ember/object';\nimport BaseSchedule from './views/base-schedule.ts';\n\nimport type { BaseScheduleSignature } from './views/base-schedule';\nimport type { ScheduleElement } from './views/types';\n\nexport interface ScheduleViewSignature extends BaseScheduleSignature {\n Args: BaseScheduleSignature['Args'] & {\n /** The text to display when the timetable is 24/7. */\n allTimesText?: string;\n /** Optional CSS class used to set color for all times text and bar (will use light gray if not present). */\n allTimesColor?: 'red' | 'orange' | 'yellow' | 'green' | 'blue' | 'purple' | 'greenblue';\n };\n}\n\n/**\n * Displays the weekly schedule for a timetable\n */\nexport default class ScheduleView extends BaseSchedule<ScheduleViewSignature> {\n /**\n * Schedule to be rendered into the grid\n */\n @computed('args.allTimesText', 'planSchedules.[]')\n get scheduleElements(): ScheduleElement[] {\n return this.getScheduleElements(false, this.args.allTimesText);\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"<SimpleBinary\\n @type=\\\"toggle\\\"\\n @checked={{@checked}}\\n @css={{this.css}}\\n @errorMessage={{@errorMessage}}\\n @errorTooltipPlace={{@errorTooltipPlace}}\\n @errorDuration={{@errorDuration}}\\n {{on \\\"click\\\" this.animateState.perform}}\\n ...attributes\\n>\\n <SimpleBinary::Label @icon={{@icon}} @text={{@label}} />\\n\\n <SpinnerSvg @spinning={{true}} aria-hidden={{unless this.isPending \\\"true\\\"}} />\\n</SimpleBinary>\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { A } from '@ember/array';\nimport { equal } from '@ember/object/computed';\nimport { timeout, task } from 'ember-concurrency';\n\nimport type { Task } from 'ember-concurrency';\nimport type { SimpleBinarySignature } from '../simple-binary';\n\ntype AsyncState = 'idle' | 'pending' | 'success' | 'failure';\n\nexport interface AsyncToggleSignature {\n Element: SimpleBinarySignature['Element'];\n Args: Pick<\n SimpleBinarySignature['Args'],\n 'checked' | 'errorMessage' | 'errorDuration' | 'errorTooltipPlace' | 'icon' | 'label' | 'css'\n > & {\n /** Triggered when the async state is \"pending\". */\n onChange: (state: boolean) => Promise<unknown>;\n };\n}\n\nexport default class AsyncToggle extends Component<AsyncToggleSignature> {\n @tracked state: AsyncState = 'idle';\n\n get css(): string {\n const { state } = this;\n\n return A(['async-toggle', `async-${state}`, state === 'failure' ? 'has-error' : undefined, this.args.css])\n .compact()\n .join(' ');\n }\n\n @equal('state', 'pending')\n declare isPending: boolean;\n\n animateState: Task<void, [MouseEvent]> = task(\n { drop: true },\n async (evt: MouseEvent & { target: HTMLInputElement }) => {\n evt.preventDefault();\n\n this.state = 'idle';\n\n try {\n this.state = 'pending';\n await this.args.onChange(!!evt.target.checked);\n this.state = 'success';\n } catch {\n this.state = 'failure';\n } finally {\n await timeout(this.state === 'success' ? 700 : 3000);\n\n this.state = 'idle';\n }\n }\n );\n}\n","import { set } from '@ember/object';\n\ntype EventToHandle = Event & { target: HTMLInputElement };\n\nexport default function handleNumberChange<T extends object>(context: T, name: keyof T): (evt: EventToHandle) => void {\n return (evt: EventToHandle): void => {\n set(context, name, Number(evt.target.value) as any);\n };\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"<div class=\\\"keyword-search-toolbar\\\" ...attributes>\\n {{#unless @searchBoxHidden}}\\n <KeywordSearch\\n @applySearchFn={{@searchValueChange}}\\n @keywordOptions={{@keywordOptions}}\\n @keyword={{@keyword}}\\n @searchString={{@searchString}}\\n @suggestionClass={{@suggestionClass}}\\n disabled={{@searchBoxDisabled}}\\n placeholder={{@searchPlaceholder}}\\n />\\n {{/unless}}\\n\\n <div class=\\\"content\\\">\\n {{yield}}\\n </div>\\n</div>\")","import templateOnlyComponent from '@ember/component/template-only';\n\nimport type { KeywordSearchSignature } from './keyword-search';\n\ntype KeywordSearchSignatureArgs = KeywordSearchSignature['Args'];\n\ninterface KeywordSearchToolbarArgs\n extends Pick<KeywordSearchSignature['Args'], 'suggestionClass' | 'keywordOptions' | 'keyword' | 'searchString'> {\n /** Triggered when the search string changes. */\n searchValueChange: KeywordSearchSignatureArgs['applySearchFn'];\n /** Indicates the search box should be hidden. */\n searchBoxHidden?: boolean;\n /** Indicates the search box should be disabled. */\n searchBoxDisabled?: boolean;\n /** Optional placeholder value for the search box. */\n searchPlaceholder?: string;\n}\n\nexport interface KeywordSearchToolbarSignature {\n Element: HTMLDivElement;\n Args: KeywordSearchToolbarArgs;\n Blocks: {\n default: [];\n };\n}\n\nconst KeywordSearchToolbar = templateOnlyComponent<KeywordSearchToolbarSignature>();\nexport default KeywordSearchToolbar;\n"],"names":["TEMPLATE","createTemplateFactory","scope","actionSheet_","t_","array","hash","coalesce_","ActionSheetConfirmSave","templateOnlyComponent","confirmSave","setComponentTemplate","on","guidFor_","tc_","tc_0","spinnerSvg_","async","uploadFile","file","formData","FormData","append","Object","assign","this","isUploading","fileName","name","_this$args$fileUpload","_this$args","result","postFormData","call","args","endpoint","fileUploaded","error","_this$args$uploadFail","_this$args2","uploadFailed","defaultHeaders","apiBaseUrl","ajax","Promise","resolve","reject","_defaultHeaders$ajaxr","xhr","XMLHttpRequest","open","concat","setRequestHeader","ajaxrequestuniquekey","onload","status","JSON","parse","responseText","statusText","onerror","send","resetUploadField","fileInput","files","value","FileUploadComponent","c","_ajax","WeakMap","_fileName","_isUploading","_FileUploadComponent","Component","constructor","arguments","_classPrivateFieldInitSpec","i","maxFileSize","_this$args$maxFileSiz","fileSelected","evt","_fileInput$files","_this$args$fileChange","_this$args3","target","length","fileChanged","_this$args$fileTooLar","_this$args4","size","fileTooLarge","selectFile","e","_e$target$closest","preventDefault","closest","querySelector","click","onKeyUp","_evt$target$closest","isEnterOrSpaceCode","code","g","prototype","inject","tracked","n","action","intlPath","module","path","pageView_","routeViewContentDeleteModel_","PageViewDetails","scheduleHourLabels_","ScheduleView","BaseSchedule","scheduleElements","getScheduleElements","allTimesText","_ScheduleView","computed","simpleBinary_","simpleBinaryLabel_","_state","_isPending","AsyncToggle","_defineProperty","buildTask","context","generator","state","onChange","checked","_unused","timeout","drop","css","A","undefined","compact","join","_AsyncToggle","equal","handleNumberChange","set","Number","keywordSearch_","KeywordSearchToolbar","keywordSearchToolbar"],"sourceRoot":""}