@dereekb/dbx-form 9.23.9 → 9.23.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/calendar/lib/calendar.schedule.selection.store.d.ts +36 -4
- package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +9 -4
- package/esm2020/calendar/lib/calendar.schedule.selection.store.mjs +133 -37
- package/esm2020/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +24 -3
- package/esm2020/calendar/lib/field/schedule/calendar.schedule.field.mjs +6 -3
- package/fesm2015/dereekb-dbx-form-calendar.mjs +161 -41
- package/fesm2015/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-form-calendar.mjs +161 -41
- package/fesm2020/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/lib/extension/calendar/_calendar.scss +2 -0
- package/mapbox/package.json +4 -4
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dereekb-dbx-form-calendar.mjs","sources":["../../../../packages/dbx-form/calendar/src/lib/field/schedule/calendar.schedule.field.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.store.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.store.provide.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.range.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.range.component.html","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.form.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.days.form.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.days.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.popover.content.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.popover.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.popover.button.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.cell.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.component.html","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.dialog.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.dialog.button.component.ts","../../../../packages/dbx-form/calendar/src/lib/field/schedule/calendar.schedule.field.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.module.ts","../../../../packages/dbx-form/calendar/src/lib/field/schedule/calendar.schedule.module.ts","../../../../packages/dbx-form/calendar/src/lib/field/index.ts","../../../../packages/dbx-form/calendar/src/dereekb-dbx-form-calendar.ts"],"sourcesContent":["import { DescriptionFieldConfig, FieldConfig, formlyField, LabeledFieldConfig, propsAndConfigForFieldConfig } from '@dereekb/dbx-form';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { DbxFormCalendarDateScheduleRangeFieldProps } from './calendar.schedule.field.component';\n\nexport interface DateScheduleRangeFieldConfig extends Omit<LabeledFieldConfig, 'key' | 'placeholder'>, DescriptionFieldConfig, Partial<FieldConfig>, DbxFormCalendarDateScheduleRangeFieldProps {}\n\nexport function dateScheduleRangeField(config: DateScheduleRangeFieldConfig = {}): FormlyFieldConfig {\n const { key = 'schedule', filter } = config;\n const fieldConfig: FormlyFieldConfig = {\n ...formlyField({\n key,\n type: 'date-schedule-range',\n ...propsAndConfigForFieldConfig(config, {\n label: config.label ?? 'Schedule',\n filter\n })\n })\n };\n\n return fieldConfig;\n}\n","import { DateBlockIndex, DateRange, DateScheduleRange } from '@dereekb/date';\nimport { FactoryWithRequiredInput } from '@dereekb/util';\nimport { CalendarMonthViewDay } from 'angular-calendar';\n\nexport interface CalendarScheduleSelectionValue {\n /**\n * Schedule range.\n */\n dateScheduleRange: DateScheduleRange;\n /**\n * Min and max dates in the selection.\n */\n minMaxRange: DateRange;\n}\n\nexport enum CalendarScheduleSelectionDayState {\n NOT_APPLICABLE = 0,\n DISABLED = 1,\n NOT_SELECTED = 2,\n SELECTED = 3\n}\n\nexport interface CalendarScheduleSelectionMetadata {\n state: CalendarScheduleSelectionDayState;\n i: DateBlockIndex;\n}\n\nexport interface CalendarScheduleSelectionCellContent {\n icon?: string;\n text?: string;\n}\n\nexport type CalendarScheduleSelectionCellContentFactory = FactoryWithRequiredInput<CalendarScheduleSelectionCellContent, CalendarMonthViewDay<CalendarScheduleSelectionMetadata>>;\n\nexport const defaultCalendarScheduleSelectionCellContentFactory: CalendarScheduleSelectionCellContentFactory = (day: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>) => {\n let icon;\n let text;\n\n switch (day.meta?.state) {\n case CalendarScheduleSelectionDayState.SELECTED:\n icon = 'check_box';\n break;\n case CalendarScheduleSelectionDayState.DISABLED:\n icon = 'block';\n break;\n case CalendarScheduleSelectionDayState.NOT_APPLICABLE:\n break;\n case CalendarScheduleSelectionDayState.NOT_SELECTED:\n icon = 'check_box_outline_blank';\n text = 'Add';\n break;\n }\n\n return {\n icon,\n text\n };\n};\n","import { Injectable } from '@angular/core';\nimport {\n DateBlockDayOfWeekFactory,\n dateBlockDayOfWeekFactory,\n DateBlockIndex,\n DateBlockRangeWithRange,\n dateBlockTimingDateFactory,\n DateOrDateBlockIndex,\n DateRange,\n dateScheduleDateFilter,\n DateScheduleDateFilterConfig,\n DateScheduleDayCode,\n dateScheduleDayCodes,\n dateScheduleEncodedWeek,\n DateScheduleEncodedWeek,\n DateScheduleRange,\n DateTimingRelativeIndexFactory,\n dateTimingRelativeIndexFactory,\n expandDateScheduleDayCodesToDayOfWeekSet,\n findMaxDate,\n findMinDate,\n isDateInDateRangeFunction,\n IsDateWithinDateBlockRangeFunction,\n isDateWithinDateBlockRangeFunction,\n isSameDate,\n isSameDateDay,\n isSameDateRange,\n isSameDateScheduleRange\n} from '@dereekb/date';\nimport { filterMaybe } from '@dereekb/rxjs';\nimport { Maybe, TimezoneString, DecisionFunction, IterableOrValue, iterableToArray, addToSet, toggleInSet, isIndexNumberInIndexRangeFunction, MaybeMap, minAndMaxNumber, setsAreEquivalent, DayOfWeek, range } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { addYears, startOfDay, startOfYear } from 'date-fns';\nimport { Observable, distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { CalendarScheduleSelectionCellContentFactory, CalendarScheduleSelectionValue, defaultCalendarScheduleSelectionCellContentFactory } from './calendar.schedule.selection';\n\nexport interface CalendarScheduleSelectionInputDateRange {\n /**\n * Input Start Date\n */\n inputStart: Date;\n /**\n * Input End Date\n */\n inputEnd: Date;\n}\n\nexport type PartialCalendarScheduleSelectionInputDateRange = Partial<MaybeMap<CalendarScheduleSelectionInputDateRange>>;\n\nexport interface CalendarScheduleSelectionState extends PartialCalendarScheduleSelectionInputDateRange {\n /**\n * Filters the days of the schedule to only allow selecting days in the schedule.\n */\n filter?: Maybe<DateScheduleDateFilterConfig>;\n /**\n * Minimum date allowed if no filter is set. If a filter is set, the greater of the two dates is used as the minimum.\n */\n minDate?: Maybe<Date>;\n /**\n * Maximum date allowed if no fitler is set. If a filter is set, the lesser of the two dates is used as the maximum.\n */\n maxDate?: Maybe<Date>;\n /**\n * Start date. Is updated as the inputStart is modified or filter is provided that provides the start date.\n *\n * Defaults to today and the current timezone.\n */\n start: Date;\n /**\n * DateTimingRelativeIndexFactory\n */\n indexFactory: DateTimingRelativeIndexFactory;\n /**\n * Array of manually selected dates.\n *\n * Values that exist outside of the \"input\" range are considered toggled on, while those\n * that are selected within the range are considered toggled off.\n *\n * If dates are selected, and then a range is selected, then those dates within the range that fall\n * within the range are cleared from selection.\n *\n * These indexes are relative to the start date.\n */\n selectedIndexes: Set<DateBlockIndex>;\n /**\n * Days of the schedule that are allowed to be picked.\n */\n scheduleDays: Set<DateScheduleDayCode>;\n /**\n * Set of the days of week that are allowed.\n */\n allowedDaysOfWeek: Set<DayOfWeek>;\n /**\n *\n */\n indexDayOfWeek: DateBlockDayOfWeekFactory;\n /**\n * Decision function that returns true if a value is enabled given the current filter.\n */\n isEnabledFilterDay: DecisionFunction<DateOrDateBlockIndex>;\n /**\n * Decision function that returns true if a value is enabled.\n *\n * This function does not take the current filter into account.\n */\n isEnabledDay: DecisionFunction<DateOrDateBlockIndex>;\n /**\n * CalendarScheduleSelectionCellContentFactory for the view.\n */\n cellContentFactory: CalendarScheduleSelectionCellContentFactory;\n /**\n * Current selection value.\n */\n currentSelectionValue?: Maybe<CalendarScheduleSelectionValue>;\n}\n\nexport function initialCalendarScheduleSelectionState(): CalendarScheduleSelectionState {\n const start = startOfDay(new Date());\n const scheduleDays = new Set([DateScheduleDayCode.WEEKDAY, DateScheduleDayCode.WEEKEND]);\n const allowedDaysOfWeek = expandDateScheduleDayCodesToDayOfWeekSet(Array.from(scheduleDays));\n const indexFactory = dateTimingRelativeIndexFactory({ start });\n const indexDayOfWeek = dateBlockDayOfWeekFactory(start);\n\n return {\n start,\n indexFactory,\n selectedIndexes: new Set(),\n scheduleDays,\n allowedDaysOfWeek,\n indexDayOfWeek,\n isEnabledFilterDay: () => true,\n isEnabledDay: () => false,\n minDate: new Date(0),\n maxDate: startOfYear(addYears(new Date(), 100)),\n cellContentFactory: defaultCalendarScheduleSelectionCellContentFactory\n };\n}\n\n@Injectable()\nexport class DbxCalendarScheduleSelectionStore extends ComponentStore<CalendarScheduleSelectionState> {\n constructor() {\n super(initialCalendarScheduleSelectionState());\n }\n\n // MARK: Accessors\n readonly filter$ = this.state$.pipe(\n map((x) => x.filter),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly inputStart$ = this.state$.pipe(\n map((x) => x.inputStart),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly inputEnd$ = this.state$.pipe(\n map((x) => x.inputEnd),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly currentInputRange$: Observable<Maybe<CalendarScheduleSelectionInputDateRange>> = this.state$.pipe(\n map(({ inputStart, inputEnd }) => ({ inputStart, inputEnd })),\n distinctUntilChanged((a, b) => isSameDate(a.inputStart, b.inputStart) && isSameDate(a.inputEnd, b.inputEnd)),\n map((x) => {\n if (x.inputStart && x.inputEnd) {\n return x as CalendarScheduleSelectionInputDateRange;\n } else {\n return undefined;\n }\n }),\n shareReplay(1)\n );\n\n readonly inputRange$: Observable<CalendarScheduleSelectionInputDateRange> = this.currentInputRange$.pipe(filterMaybe(), shareReplay(1));\n\n readonly selectedDates$: Observable<Set<DateBlockIndex>> = this.state$.pipe(\n map((x) => x.selectedIndexes),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isEnabledFilterDayFunction$: Observable<DecisionFunction<DateOrDateBlockIndex>> = this.state$.pipe(\n map((x) => x.isEnabledFilterDay),\n shareReplay(1)\n );\n\n readonly isEnabledDayFunction$: Observable<DecisionFunction<DateOrDateBlockIndex>> = this.state$.pipe(\n map((x) => x.isEnabledDay),\n shareReplay(1)\n );\n\n readonly currentDateRange$: Observable<Maybe<DateRange>> = this.state$.pipe(\n map(computeCalendarScheduleSelectionRange),\n distinctUntilChanged((a, b) => isSameDateRange(a, b)),\n shareReplay(1)\n );\n\n readonly dateRange$: Observable<DateRange> = this.currentDateRange$.pipe(filterMaybe(), shareReplay(1));\n\n readonly scheduleDays$: Observable<Set<DateScheduleDayCode>> = this.state$.pipe(\n map((x) => x.scheduleDays),\n distinctUntilChanged(setsAreEquivalent),\n shareReplay(1)\n );\n\n readonly currentSelectionValue$ = this.state$.pipe(\n map((x) => x.currentSelectionValue),\n shareReplay(1)\n );\n readonly selectionValue$ = this.currentSelectionValue$.pipe(filterMaybe(), shareReplay(1));\n\n readonly currentDateScheduleRangeValue$ = this.currentSelectionValue$.pipe(\n map((x) => x?.dateScheduleRange),\n distinctUntilChanged(isSameDateScheduleRange),\n shareReplay(1)\n );\n readonly dateScheduleRangeValue$ = this.currentDateScheduleRangeValue$.pipe(filterMaybe(), shareReplay(1));\n\n readonly minDate$ = this.state$.pipe(\n map((x) => findMaxDate([x.filter?.start, x.minDate])),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n\n readonly maxDate$ = this.state$.pipe(\n map((x) => findMinDate([x.filter?.end, x.maxDate])),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n\n readonly cellContentFactory$ = this.state$.pipe(\n map((x) => x.cellContentFactory),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isCustomized$ = this.state$.pipe(\n map((x) => x.selectedIndexes.size > 0),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n // MARK: State Changes\n readonly setFilter = this.updater((state, filter: Maybe<DateScheduleDateFilterConfig>) => updateStateWithFilter(state, filter));\n readonly clearFilter = this.updater((state) => updateStateWithFilter(state, undefined));\n\n readonly setTimezone = this.updater((state, timezone: Maybe<TimezoneString>) => ({ ...state, timezone }));\n readonly setInputRange = this.updater((state, range: CalendarScheduleSelectionInputDateRange) => updateStateWithChangedRange(state, range));\n\n readonly toggleSelectedDates = this.updater((state, toggle: IterableOrValue<DateOrDateBlockIndex>) => updateStateWithChangedDates(state, { toggle }));\n readonly addSelectedDates = this.updater((state, add: IterableOrValue<DateOrDateBlockIndex>) => updateStateWithChangedDates(state, { add }));\n readonly removeSelectedDates = this.updater((state, remove: IterableOrValue<DateOrDateBlockIndex>) => updateStateWithChangedDates(state, { remove }));\n readonly setSelectedDates = this.updater((state, set: IterableOrValue<DateOrDateBlockIndex>) => updateStateWithChangedDates(state, { set }));\n\n readonly setScheduleDays = this.updater((state, scheduleDays: Iterable<DateScheduleDayCode>) => updateStateWithChangedScheduleDays(state, scheduleDays));\n readonly setAllowAllScheduleDays = this.updater((state) => updateStateWithChangedScheduleDays(state, null));\n\n readonly setDateScheduleRangeValue = this.updater((state, value: Maybe<DateScheduleRange>) => updateStateWithDateScheduleRangeValue(state, value));\n readonly setCellContentFactory = this.updater((state, cellContentFactory: CalendarScheduleSelectionCellContentFactory) => ({ ...state, cellContentFactory }));\n}\n\nexport function updateStateWithFilter(state: CalendarScheduleSelectionState, filter: Maybe<DateScheduleDateFilterConfig>): CalendarScheduleSelectionState {\n let isEnabledFilterDay: Maybe<DecisionFunction<DateOrDateBlockIndex>> = () => true;\n\n if (filter) {\n isEnabledFilterDay = dateScheduleDateFilter(filter);\n }\n\n return { ...state, filter, isEnabledFilterDay };\n}\n\nexport function updateStateWithDateScheduleRangeValue(state: CalendarScheduleSelectionState, change: Maybe<DateScheduleRange>): CalendarScheduleSelectionState {\n const isSameValue = isSameDateScheduleRange(state.currentSelectionValue?.dateScheduleRange, change);\n\n if (isSameValue) {\n return state;\n } else {\n if (change != null) {\n const nextState: CalendarScheduleSelectionState = { ...state, inputStart: change.start, inputEnd: change.end, selectedIndexes: new Set(change.ex) };\n return updateStateWithChangedScheduleDays(finalizeNewCalendarScheduleSelectionState(nextState), dateScheduleDayCodes(change.w));\n } else {\n return noSelectionCalendarScheduleSelectionState(state); // clear selection, retain disabled days\n }\n }\n}\n\nexport function updateStateWithChangedScheduleDays(state: CalendarScheduleSelectionState, change: Maybe<Iterable<DateScheduleDayCode>>): CalendarScheduleSelectionState {\n const { scheduleDays: currentScheduleDays } = state;\n const scheduleDays = new Set(change || [DateScheduleDayCode.WEEKDAY, DateScheduleDayCode.WEEKEND]);\n\n if (setsAreEquivalent(currentScheduleDays, scheduleDays)) {\n return state; // no change\n } else {\n const allowedDaysOfWeek = expandDateScheduleDayCodesToDayOfWeekSet(Array.from(scheduleDays));\n const nextState = { ...state, scheduleDays, allowedDaysOfWeek };\n return finalizeNewCalendarScheduleSelectionState(nextState);\n }\n}\n\nexport interface CalendarScheduleSelectionStateDatesChange {\n toggle?: IterableOrValue<DateOrDateBlockIndex>;\n add?: IterableOrValue<DateOrDateBlockIndex>;\n remove?: IterableOrValue<DateOrDateBlockIndex>;\n set?: IterableOrValue<DateOrDateBlockIndex>;\n}\n\nexport function updateStateWithChangedDates(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionStateDatesChange): CalendarScheduleSelectionState {\n const { indexFactory, allowedDaysOfWeek, indexDayOfWeek } = state;\n let selectedIndexes: Set<DateBlockIndex>;\n\n if (change.set) {\n selectedIndexes = new Set(iterableToArray(change.set).map(indexFactory));\n } else {\n selectedIndexes = new Set(state.selectedIndexes);\n\n if (change.toggle) {\n const allowedToToggle = iterableToArray(change.toggle)\n .map(indexFactory)\n .filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));\n toggleInSet(selectedIndexes, allowedToToggle);\n }\n\n if (change.add) {\n addToSet(selectedIndexes, iterableToArray(change.add).map(indexFactory));\n }\n\n if (change.remove) {\n addToSet(selectedIndexes, iterableToArray(change.remove).map(indexFactory));\n }\n }\n\n const nextState = { ...state, selectedIndexes };\n nextState.isEnabledDay = isEnabledDayInCalendarScheduleSelectionState(nextState);\n\n // Recalculate the range and simplified to exclusions\n const rangeAndExclusion = computeScheduleSelectionRangeAndExclusion(nextState);\n\n if (rangeAndExclusion) {\n return finalizeNewCalendarScheduleSelectionState({ ...nextState, selectedIndexes: new Set(rangeAndExclusion.excluded), inputStart: rangeAndExclusion.start, inputEnd: rangeAndExclusion.end });\n } else {\n // no selected days\n return noSelectionCalendarScheduleSelectionState(state);\n }\n}\n\nexport function noSelectionCalendarScheduleSelectionState(state: CalendarScheduleSelectionState): CalendarScheduleSelectionState {\n return finalizeNewCalendarScheduleSelectionState({ ...state, selectedIndexes: new Set(), inputStart: null, inputEnd: null });\n}\n\nexport function updateStateWithChangedRange(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionInputDateRange): CalendarScheduleSelectionState {\n const { inputStart: currentInputStart, inputEnd: currentInputEnd, indexFactory, minDate, maxDate } = state;\n\n const inputStart = startOfDay(change.inputStart);\n const inputEnd = startOfDay(change.inputEnd);\n\n const isValidRange = minDate != null || maxDate != null ? isDateInDateRangeFunction({ start: minDate ?? undefined, end: maxDate ?? undefined }) : () => true;\n\n if (!isValidRange(inputStart) || !isValidRange(inputEnd) || (isSameDateDay(inputStart, currentInputStart) && isSameDateDay(inputEnd, currentInputEnd))) {\n return state; // if no change, return the current state.\n }\n\n // retain all indexes that are within the new range\n const minIndex = indexFactory(inputStart);\n const maxIndex = indexFactory(inputEnd) + 1;\n\n const currentIndexes: DateBlockIndex[] = Array.from(state.selectedIndexes);\n const isInCurrentRange = isIndexNumberInIndexRangeFunction({ minIndex, maxIndex });\n const excludedIndexesInNewRange = currentIndexes.filter(isInCurrentRange);\n\n const nextState = { ...state, excludedIndexesInNewRange, inputStart, inputEnd };\n return finalizeNewCalendarScheduleSelectionState(nextState);\n}\n\nexport function finalizeNewCalendarScheduleSelectionState(nextState: CalendarScheduleSelectionState): CalendarScheduleSelectionState {\n nextState.isEnabledDay = isEnabledDayInCalendarScheduleSelectionState(nextState);\n nextState.currentSelectionValue = computeScheduleSelectionValue(nextState);\n return nextState;\n}\n\nexport function isEnabledDayInCalendarScheduleSelectionState(state: CalendarScheduleSelectionState): DecisionFunction<DateOrDateBlockIndex> {\n const { indexFactory, inputStart, inputEnd, indexDayOfWeek, allowedDaysOfWeek } = state;\n\n let isInStartAndEndRange: IsDateWithinDateBlockRangeFunction;\n\n if (inputStart && inputEnd) {\n isInStartAndEndRange = isDateWithinDateBlockRangeFunction({ start: state.start, range: { start: inputStart, end: inputEnd } });\n } else {\n isInStartAndEndRange = () => false;\n }\n\n return (input: DateOrDateBlockIndex) => {\n const index = indexFactory(input);\n const dayOfWeek = indexDayOfWeek(index);\n\n const isInSelectedRange = isInStartAndEndRange(input);\n const isSelected = state.selectedIndexes.has(index);\n const isAllowedDayOfWeek = allowedDaysOfWeek.has(dayOfWeek);\n\n const result = isAllowedDayOfWeek && ((isInSelectedRange && !isSelected) || (isSelected && !isInSelectedRange));\n return result;\n };\n}\n\nexport function computeScheduleSelectionValue(state: CalendarScheduleSelectionState): Maybe<CalendarScheduleSelectionValue> {\n const { scheduleDays, allowedDaysOfWeek, indexDayOfWeek } = state;\n const rangeAndExclusion = computeScheduleSelectionRangeAndExclusion(state);\n\n if (rangeAndExclusion == null) {\n return null;\n }\n\n const { start, end, excluded, dateBlockRange } = rangeAndExclusion;\n const indexOffset = dateBlockRange.i;\n\n const ex: DateBlockIndex[] = excluded\n .filter((x) => {\n const isExcludedIndex = allowedDaysOfWeek.has(indexDayOfWeek(x));\n return isExcludedIndex;\n })\n .map((x) => x - indexOffset); // set to the proper offset\n\n const w: DateScheduleEncodedWeek = dateScheduleEncodedWeek(scheduleDays);\n const d: DateBlockIndex[] = []; // \"included\" blocks are never used/calculated.\n\n const dateScheduleRange: DateScheduleRange = {\n start,\n end,\n w,\n d,\n ex\n };\n\n return {\n dateScheduleRange,\n minMaxRange: { start, end }\n };\n}\n\nexport interface CalendarScheduleSelectionRangeAndExclusion extends DateRange {\n dateBlockRange: DateBlockRangeWithRange;\n excluded: DateBlockIndex[];\n}\n\nexport function computeScheduleSelectionRangeAndExclusion(state: CalendarScheduleSelectionState): Maybe<CalendarScheduleSelectionRangeAndExclusion> {\n const { isEnabledDay } = state;\n const dateFactory = dateBlockTimingDateFactory(state);\n const dateBlockRange = computeCalendarScheduleSelectionDateBlockRange(state);\n\n if (dateBlockRange == null) {\n return null; // returns null if no items are selected.\n }\n\n const start = dateFactory(dateBlockRange.i);\n const end = dateFactory(dateBlockRange.to);\n\n const excluded: DateBlockIndex[] = range(dateBlockRange.i, dateBlockRange.to + 1).filter((x) => {\n const isExcludedIndex = !isEnabledDay(x);\n return isExcludedIndex;\n });\n\n const result: CalendarScheduleSelectionRangeAndExclusion = {\n dateBlockRange,\n start,\n end,\n excluded\n };\n\n return result;\n}\n\nexport function computeCalendarScheduleSelectionRange(state: CalendarScheduleSelectionState): Maybe<DateRange> {\n const dateFactory = dateBlockTimingDateFactory(state);\n const dateBlockRange = computeCalendarScheduleSelectionDateBlockRange(state);\n\n if (dateBlockRange != null) {\n return { start: dateFactory(dateBlockRange.i), end: dateFactory(dateBlockRange.to as number) };\n } else {\n return undefined;\n }\n}\n\nexport function computeCalendarScheduleSelectionDateBlockRange(state: CalendarScheduleSelectionState): Maybe<DateBlockRangeWithRange> {\n const { indexFactory, inputStart, inputEnd, allowedDaysOfWeek, indexDayOfWeek, isEnabledDay, isEnabledFilterDay } = state;\n const enabledSelectedIndexes = Array.from(state.selectedIndexes).filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));\n const minAndMaxSelectedValues = minAndMaxNumber(enabledSelectedIndexes);\n\n let startRange: Maybe<DateBlockIndex>;\n let endRange: Maybe<DateBlockIndex>;\n\n if (minAndMaxSelectedValues) {\n startRange = minAndMaxSelectedValues.min;\n endRange = minAndMaxSelectedValues.max;\n }\n\n if (inputStart != null && inputEnd != null) {\n const inputStartIndex = indexFactory(inputStart);\n const inputEndIndex = indexFactory(inputEnd);\n\n startRange = startRange != null ? Math.min(inputStartIndex, startRange) : inputStartIndex;\n endRange = endRange != null ? Math.max(inputEndIndex, endRange) : inputEndIndex;\n }\n\n if (startRange != null && endRange != null) {\n const scanStartIndex = startRange;\n const scanEndIndex = endRange;\n\n // clear start and end\n startRange = undefined;\n endRange = undefined;\n\n // if the min is equal to the start index, then we are in the range and need to iterate dates until we find one that is not selected/excluded.\n for (let i = scanStartIndex; i <= scanEndIndex; i += 1) {\n if (isEnabledFilterDay(i) && isEnabledDay(i)) {\n startRange = i;\n break;\n }\n }\n\n // same with the max\n for (let i = scanEndIndex; i >= scanStartIndex; i -= 1) {\n if (isEnabledFilterDay(i) && isEnabledDay(i)) {\n endRange = i;\n break;\n }\n }\n }\n\n if (startRange != null && endRange != null) {\n return { i: startRange, to: endRange };\n } else {\n return undefined;\n }\n}\n","import { Directive, Injectable, Injector, Optional, Provider, SkipSelf } from '@angular/core';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\n\n/**\n * Token used by provideCalendarScheduleSelectionStoreIfDoesNotExist() to prevent injecting a parent DbxCalendarScheduleSelectionStore into the child view.\n */\n@Injectable()\nexport class DbxCalendarScheduleSelectionStoreProviderBlock {\n constructor(@SkipSelf() readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore) {}\n}\n\n@Directive({\n selector: '[dbxCalendarScheduleSelectionStoreParentBlocker]',\n providers: [DbxCalendarScheduleSelectionStoreProviderBlock]\n})\nexport class DbxCalendarScheduleSelectionStoreInjectionBlockDirective {}\n\n/**\n * Creates a Provider that initializes a new DbxCalendarScheduleSelectionStore if a parent does not exist.\n *\n * If a DbxCalendarScheduleSelectionStoreInjectionBlock is available in the context, and references the same dbxCalendarScheduleSelectionStore that is attempting to be injected, a new DbxCalendarScheduleSelectionStore is created.\n *\n * @returns\n */\nexport function provideCalendarScheduleSelectionStoreIfParentIsUnavailable(): Provider {\n return {\n provide: DbxCalendarScheduleSelectionStore,\n useFactory: (parentInjector: Injector, dbxCalendarScheduleSelectionStoreInjectionBlock?: DbxCalendarScheduleSelectionStoreProviderBlock, dbxCalendarScheduleSelectionStore?: DbxCalendarScheduleSelectionStore) => {\n if (!dbxCalendarScheduleSelectionStore || (dbxCalendarScheduleSelectionStore && dbxCalendarScheduleSelectionStoreInjectionBlock != null && dbxCalendarScheduleSelectionStoreInjectionBlock.dbxCalendarScheduleSelectionStore === dbxCalendarScheduleSelectionStore)) {\n // create a new dbxCalendarScheduleSelectionStore to use\n const injector = Injector.create({ providers: [{ provide: DbxCalendarScheduleSelectionStore }], parent: parentInjector });\n dbxCalendarScheduleSelectionStore = injector.get(DbxCalendarScheduleSelectionStore);\n }\n\n return dbxCalendarScheduleSelectionStore;\n },\n deps: [Injector, [new Optional(), DbxCalendarScheduleSelectionStoreProviderBlock], [new Optional(), new SkipSelf(), DbxCalendarScheduleSelectionStore]]\n };\n}\n","import { SubscriptionObject } from '@dereekb/rxjs';\nimport { Component, Inject, Input, OnDestroy } from '@angular/core';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { DbxCalendarStore } from '@dereekb/dbx-web/calendar';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { Maybe, randomNumberFactory } from '@dereekb/util';\nimport { switchMap, throttleTime, distinctUntilChanged, filter, BehaviorSubject, startWith, Observable, of } from 'rxjs';\nimport { isSameDateDay } from '@dereekb/date';\nimport { MatFormFieldDefaultOptions, MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-range',\n templateUrl: './calendar.schedule.selection.range.component.html'\n})\nexport class DbxScheduleSelectionCalendarDateRangeComponent implements OnDestroy {\n @Input()\n required?: boolean;\n\n @Input()\n label?: Maybe<string> = 'Enter a date range';\n\n @Input()\n hint?: Maybe<string>;\n\n @Input()\n set disabled(disabled: Maybe<boolean>) {\n if (disabled) {\n this.range.disable();\n } else {\n this.range.enable();\n }\n }\n\n @Input()\n showCustomize = false;\n\n readonly random = randomNumberFactory(10000)();\n\n private _pickerOpened = new BehaviorSubject<boolean>(false);\n\n private _syncSub = new SubscriptionObject();\n private _valueSub = new SubscriptionObject();\n\n readonly range = new FormGroup({\n start: new FormControl<Maybe<Date>>(null),\n end: new FormControl<Maybe<Date>>(null)\n });\n\n readonly minDate$ = this.dbxCalendarScheduleSelectionStore.minDate$;\n readonly maxDate$ = this.dbxCalendarScheduleSelectionStore.maxDate$;\n readonly isCustomized$ = this.dbxCalendarScheduleSelectionStore.isCustomized$;\n\n readonly pickerOpened$ = this._pickerOpened.asObservable();\n\n constructor(readonly dbxCalendarStore: DbxCalendarStore, readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore, @Inject(MAT_FORM_FIELD_DEFAULT_OPTIONS) readonly matFormFieldDefaultOptions: MatFormFieldDefaultOptions) {}\n\n ngOnInit(): void {\n this._syncSub.subscription = this.dbxCalendarScheduleSelectionStore.inputRange$.subscribe((x) => {\n this.range.setValue({\n start: x.inputStart ?? null,\n end: x.inputEnd ?? null\n });\n });\n\n this._valueSub.subscription = this._pickerOpened\n .pipe(\n distinctUntilChanged(),\n switchMap((opened) => {\n let obs: Observable<{ start?: Maybe<Date>; end?: Maybe<Date> }>;\n\n if (opened) {\n obs = of({});\n } else {\n obs = this.range.valueChanges.pipe(startWith(this.range.value));\n }\n\n return obs;\n }),\n filter((x) => Boolean(x.start && x.end)),\n distinctUntilChanged((a, b) => isSameDateDay(a.start, b.start) && isSameDateDay(a.end, b.end)),\n throttleTime(100, undefined, { trailing: true })\n )\n .subscribe((x) => {\n if (x.start && x.end) {\n this.dbxCalendarScheduleSelectionStore.setInputRange({ inputStart: x.start, inputEnd: x.end });\n }\n });\n }\n\n ngOnDestroy(): void {\n this._pickerOpened.complete();\n this._syncSub.destroy();\n this._valueSub.destroy();\n }\n\n pickerOpened() {\n this._pickerOpened.next(true);\n }\n\n pickerClosed() {\n this._pickerOpened.next(false);\n }\n}\n","<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input [required]=\"required\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <div *ngIf=\"showCustomize\">\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n <mat-error *ngIf=\"range.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n</mat-form-field>\n","import { flexLayoutWrapper, toggleField } from '@dereekb/dbx-form';\nimport { getDaysOfWeekNames } from '@dereekb/util';\n\nexport function dbxScheduleSelectionCalendarDateDaysFormFields() {\n const fields = dbxScheduleSelectionCalendarDateDaysFormDayFields();\n return [flexLayoutWrapper(fields, { relative: true, size: 3 })];\n}\n\nexport function dbxScheduleSelectionCalendarDateDaysFormDayFields() {\n return getDaysOfWeekNames(false).map((dayOfWeekName: string) => {\n return toggleField({\n key: dayOfWeekName.toLowerCase(),\n label: dayOfWeekName\n });\n });\n}\n","import { Component } from '@angular/core';\nimport { AbstractSyncFormlyFormDirective, provideFormlyContext } from '@dereekb/dbx-form';\nimport { EnabledDays } from '@dereekb/util';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { dbxScheduleSelectionCalendarDateDaysFormFields } from './calendar.schedule.selection.form';\n\nexport type DbxScheduleSelectionCalendarDateDaysFormValue = EnabledDays;\n\n@Component({\n template: `\n <dbx-formly></dbx-formly>\n `,\n selector: 'dbx-schedule-selection-calendar-date-days-form',\n providers: [provideFormlyContext()]\n})\nexport class DbxScheduleSelectionCalendarDateDaysFormComponent extends AbstractSyncFormlyFormDirective<DbxScheduleSelectionCalendarDateDaysFormValue> {\n readonly fields: FormlyFieldConfig[] = dbxScheduleSelectionCalendarDateDaysFormFields();\n}\n","import { Component } from '@angular/core';\nimport { dateScheduleDayCodesFromEnabledDays, enabledDaysFromDateScheduleDayCodes } from '@dereekb/date';\nimport { HandleActionFunction } from '@dereekb/dbx-core';\nimport { DbxCalendarStore } from '@dereekb/dbx-web/calendar';\nimport { IsModifiedFunction } from '@dereekb/rxjs';\nimport { setsAreEquivalent } from '@dereekb/util';\nimport { map, shareReplay, Observable, of } from 'rxjs';\nimport { DbxScheduleSelectionCalendarDateDaysFormValue } from './calendar.schedule.selection.days.form.component';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-days',\n template: `\n <div class=\"dbx-schedule-selection-calendar-date-days\" dbxAction dbxActionAutoTrigger dbxActionEnforceModified [instantTrigger]=\"true\" [dbxActionHandler]=\"updateScheduleDays\">\n <dbx-schedule-selection-calendar-date-days-form dbxActionForm [dbxFormSource]=\"template$\" [dbxActionFormModified]=\"isFormModified\"></dbx-schedule-selection-calendar-date-days-form>\n </div>\n `\n})\nexport class DbxScheduleSelectionCalendarDateDaysComponent {\n readonly template$: Observable<DbxScheduleSelectionCalendarDateDaysFormValue> = this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map(enabledDaysFromDateScheduleDayCodes), shareReplay());\n\n readonly isFormModified: IsModifiedFunction<DbxScheduleSelectionCalendarDateDaysFormValue> = (value: DbxScheduleSelectionCalendarDateDaysFormValue) => {\n const newSetValue = new Set(dateScheduleDayCodesFromEnabledDays(value));\n return this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map((currentSet) => !setsAreEquivalent(currentSet, newSetValue)));\n };\n\n constructor(readonly dbxCalendarStore: DbxCalendarStore, readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore) {}\n\n readonly updateScheduleDays: HandleActionFunction<DbxScheduleSelectionCalendarDateDaysFormValue> = (value) => {\n this.dbxCalendarScheduleSelectionStore.setScheduleDays(new Set(dateScheduleDayCodesFromEnabledDays(value)));\n return of(true);\n };\n}\n","import { Component, OnDestroy } from '@angular/core';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-popover-content',\n template: `\n <div>\n <dbx-schedule-selection-calendar-date-range></dbx-schedule-selection-calendar-date-range>\n <dbx-schedule-selection-calendar-date-days></dbx-schedule-selection-calendar-date-days>\n </div>\n `\n})\nexport class DbxScheduleSelectionCalendarDatePopoverContentComponent implements OnDestroy {\n ngOnDestroy(): void {}\n}\n","import { Component, ElementRef, Injector } from '@angular/core';\nimport { DbxPopoverKey, AbstractPopoverDirective, DbxPopoverService } from '@dereekb/dbx-web';\nimport { NgPopoverRef } from 'ng-overlay-container';\n\nexport const DEFAULT_SCHEDULE_SELECTION_CALENDAR_DATE_POPOVER_KEY = 'calendarselection';\n\nexport interface DbxScheduleSelectionCalendarDatePopoverConfig {\n origin: ElementRef;\n injector: Injector;\n}\n\n@Component({\n template: `\n <dbx-popover-content>\n <dbx-popover-scroll-content>\n <dbx-schedule-selection-calendar-date-popover-content (close)=\"close()\"></dbx-schedule-selection-calendar-date-popover-content>\n </dbx-popover-scroll-content>\n </dbx-popover-content>\n `\n})\nexport class DbxScheduleSelectionCalendarDatePopoverComponent extends AbstractPopoverDirective<void> {\n static openPopover(popoverService: DbxPopoverService, { origin, injector }: DbxScheduleSelectionCalendarDatePopoverConfig, popoverKey?: DbxPopoverKey): NgPopoverRef<any, number> {\n return popoverService.open({\n key: popoverKey ?? DEFAULT_SCHEDULE_SELECTION_CALENDAR_DATE_POPOVER_KEY,\n origin,\n componentClass: DbxScheduleSelectionCalendarDatePopoverComponent,\n injector\n });\n }\n}\n","import { DbxScheduleSelectionCalendarDatePopoverComponent } from './calendar.schedule.selection.popover.component';\nimport { Component, ElementRef, Injector, ViewChild } from '@angular/core';\nimport { DbxPopoverService } from '@dereekb/dbx-web';\nimport { map, shareReplay } from 'rxjs';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { formatToMonthDayString } from '@dereekb/date';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-popover-button',\n template: `\n <dbx-button #buttonPopoverOrigin icon=\"date_range\" [raised]=\"true\" color=\"accent\" [text]=\"buttonText$ | async\" (buttonClick)=\"openPopover()\"></dbx-button>\n `\n})\nexport class DbxScheduleSelectionCalendarDatePopoverButtonComponent {\n @ViewChild('buttonPopoverOrigin', { read: ElementRef })\n buttonPopoverOrigin!: ElementRef;\n\n readonly buttonText$ = this.dbxCalendarScheduleSelectionStore.currentDateRange$.pipe(\n map((x) => {\n if (x?.start && x.end) {\n return `${formatToMonthDayString(x.start)} - ${formatToMonthDayString(x.end)}`;\n } else {\n return 'Pick a Date Range';\n }\n }),\n shareReplay(1)\n );\n\n constructor(readonly popoverService: DbxPopoverService, readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore, readonly injector: Injector) {}\n\n openPopover() {\n DbxScheduleSelectionCalendarDatePopoverComponent.openPopover(this.popoverService, { origin: this.buttonPopoverOrigin, injector: this.injector });\n }\n}\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CalendarMonthViewDay } from 'angular-calendar';\nimport { first } from 'rxjs';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { CalendarScheduleSelectionCellContent, CalendarScheduleSelectionMetadata } from './calendar.schedule.selection';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-cell',\n template: `\n <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n <span>{{ text }}</span>\n `,\n host: {\n class: 'dbx-schedule-selection-calendar-cell'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DbxScheduleSelectionCalendarCellComponent {\n content: CalendarScheduleSelectionCellContent = {};\n\n get icon() {\n return this.content.icon;\n }\n\n get text() {\n return this.content.text;\n }\n\n constructor(readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore) {}\n\n @Input()\n set day(day: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>) {\n this.dbxCalendarScheduleSelectionStore.cellContentFactory$.pipe(first()).subscribe((fn) => {\n this.content = fn(day);\n });\n }\n}\n","import { Component, EventEmitter, Output, OnDestroy } from '@angular/core';\nimport { CalendarEvent, CalendarMonthViewBeforeRenderEvent, CalendarMonthViewDay } from 'angular-calendar';\nimport { map, shareReplay, Subject, first, throttleTime } from 'rxjs';\nimport { DbxCalendarEvent, DbxCalendarStore, prepareAndSortCalendarEvents } from '@dereekb/dbx-web/calendar';\nimport { DayOfWeek } from '@dereekb/util';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { CalendarScheduleSelectionDayState, CalendarScheduleSelectionMetadata } from './calendar.schedule.selection';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar',\n templateUrl: './calendar.schedule.selection.component.html',\n providers: [DbxCalendarStore]\n})\nexport class DbxScheduleSelectionCalendarComponent<T> implements OnDestroy {\n @Output()\n clickEvent = new EventEmitter<DbxCalendarEvent<T>>();\n\n // refresh any time the selected day function updates\n readonly state$ = this.dbxCalendarScheduleSelectionStore.state$;\n readonly refresh$ = this.state$.pipe(\n throttleTime(100),\n map(() => undefined)\n ) as Subject<undefined>;\n\n readonly events$ = this.calendarStore.visibleEvents$.pipe(map(prepareAndSortCalendarEvents), shareReplay(1));\n readonly viewDate$ = this.calendarStore.date$;\n\n constructor(readonly calendarStore: DbxCalendarStore<T>, readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore) {}\n\n dayClicked({ date }: { date: Date }): void {\n this.dbxCalendarScheduleSelectionStore.toggleSelectedDates(date);\n }\n\n eventClicked(action: string, event: CalendarEvent<T>): void {\n this.clickEvent.emit({ action, event });\n }\n\n beforeMonthViewRender(renderEvent: CalendarMonthViewBeforeRenderEvent): void {\n const { body }: { body: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>[] } = renderEvent;\n this.state$.pipe(first()).subscribe(({ isEnabledDay, indexFactory, isEnabledFilterDay, allowedDaysOfWeek }) => {\n body.forEach((viewDay) => {\n const { date } = viewDay;\n const i = indexFactory(date);\n const day = date.getDay();\n\n let state: CalendarScheduleSelectionDayState;\n\n if (!isEnabledFilterDay(i)) {\n viewDay.cssClass = 'cal-day-not-applicable';\n state = CalendarScheduleSelectionDayState.NOT_APPLICABLE;\n } else if (!allowedDaysOfWeek.has(day as DayOfWeek)) {\n viewDay.cssClass = 'cal-day-disabled';\n state = CalendarScheduleSelectionDayState.DISABLED;\n } else if (isEnabledDay(i)) {\n viewDay.cssClass = 'cal-day-selected';\n state = CalendarScheduleSelectionDayState.SELECTED;\n } else {\n viewDay.cssClass = 'cal-day-not-selected';\n state = CalendarScheduleSelectionDayState.NOT_SELECTED;\n }\n\n viewDay.meta = {\n state,\n i\n };\n });\n });\n }\n\n ngOnDestroy(): void {\n this.clickEvent.complete();\n }\n}\n","<dbx-calendar-base class=\"dbx-schedule-selection-calendar\">\n <ng-container controls>\n <dbx-schedule-selection-calendar-date-popover-button></dbx-schedule-selection-calendar-date-popover-button>\n </ng-container>\n <div class=\"dbx-calendar-content dbx-calendar-content-month\">\n <mwl-calendar-month-view [refresh]=\"refresh$\" [viewDate]=\"(viewDate$ | async)!\" [events]=\"(events$ | async)!\" (dayClicked)=\"dayClicked($event.day)\" (eventClicked)=\"eventClicked('Clicked', $event.event)\" (beforeViewRender)=\"beforeMonthViewRender($event)\" [cellTemplate]=\"monthDayCellTemplate\"></mwl-calendar-month-view>\n </div>\n</dbx-calendar-base>\n\n<!-- Cell -->\n<ng-template #monthDayCellTemplate let-day=\"day\" let-locale=\"locale\">\n <div class=\"cal-cell-top\">\n <span class=\"cal-day-badge\" *ngIf=\"day.badgeTotal > 0\">{{ day.badgeTotal }}</span>\n <span class=\"cal-day-number\">{{ day.date | calendarDate: 'monthViewDayNumber':locale }}</span>\n </div>\n <dbx-schedule-selection-calendar-cell [day]=\"day\"></dbx-schedule-selection-calendar-cell>\n</ng-template>\n","import { Component, Injector } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AbstractDialogDirective } from '@dereekb/dbx-web';\n\nexport interface DbxScheduleSelectionCalendarDatePopupConfig {\n injector: Injector;\n}\n\n@Component({\n template: `\n <dbx-dialog-content class=\"dbx-schedule-selection-calendar-date-dialog\">\n <dbx-dialog-content-close (close)=\"close()\"></dbx-dialog-content-close>\n <dbx-schedule-selection-calendar></dbx-schedule-selection-calendar>\n <dbx-dialog-content-footer closeText=\"Close Calendar\" (close)=\"close()\"></dbx-dialog-content-footer>\n </dbx-dialog-content>\n `\n})\nexport class DbxScheduleSelectionCalendarDateDialogComponent extends AbstractDialogDirective<void> {\n static openDialog(matDialog: MatDialog, { injector }: DbxScheduleSelectionCalendarDatePopupConfig) {\n return matDialog.open(DbxScheduleSelectionCalendarDateDialogComponent, {\n injector,\n height: 'calc(var(--vh100) * 0.9)',\n minHeight: 400,\n width: '80vw',\n minWidth: 360\n });\n }\n}\n","import { Component, Injector, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DbxScheduleSelectionCalendarDateDialogComponent } from './calendar.schedule.selection.dialog.component';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-dialog-button',\n template: `\n <button mat-raised-button color=\"accent\" (click)=\"clickCustomize()\">{{ buttonText }}</button>\n `\n})\nexport class DbxScheduleSelectionCalendarDateDialogButtonComponent {\n @Input()\n buttonText = 'Customize';\n\n constructor(readonly matDialog: MatDialog, readonly injector: Injector) {}\n\n clickCustomize() {\n DbxScheduleSelectionCalendarDateDialogComponent.openDialog(this.matDialog, { injector: this.injector });\n }\n}\n","import { AbstractControl, FormGroup } from '@angular/forms';\nimport { CompactContextStore } from '@dereekb/dbx-web';\nimport { Component, NgZone, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { FieldTypeConfig, FormlyFieldProps } from '@ngx-formly/core';\nimport { Maybe } from '@dereekb/util';\nimport { FieldType } from '@ngx-formly/material';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay, startWith, Subscription, switchMap } from 'rxjs';\nimport { filterMaybe, ObservableOrValue, SubscriptionObject, asObservable } from '@dereekb/rxjs';\nimport { DateScheduleDateFilterConfig, isSameDateScheduleRange } from '@dereekb/date';\nimport { DbxCalendarScheduleSelectionStore } from '../../calendar.schedule.selection.store';\nimport { provideCalendarScheduleSelectionStoreIfParentIsUnavailable } from '../../calendar.schedule.selection.store.provide';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nexport interface DbxFormCalendarDateScheduleRangeFieldProps extends Pick<FormlyFieldProps, 'label' | 'description' | 'readonly' | 'required'> {\n appearance?: MatFormFieldAppearance;\n hideCustomize?: boolean;\n filter?: ObservableOrValue<Maybe<DateScheduleDateFilterConfig>>;\n}\n\n@Component({\n template: `\n <div class=\"dbx-schedule-selection-field\">\n <dbx-schedule-selection-calendar-date-range [showCustomize]=\"showCustomize\" [required]=\"required\" [disabled]=\"isReadonlyOrDisabled\" [label]=\"label\" [hint]=\"description\">\n <dbx-schedule-selection-calendar-date-dialog-button customizeButton></dbx-schedule-selection-calendar-date-dialog-button>\n </dbx-schedule-selection-calendar-date-range>\n </div>\n `,\n providers: [provideCalendarScheduleSelectionStoreIfParentIsUnavailable()]\n})\nexport class DbxFormCalendarDateScheduleRangeFieldComponent<T extends DbxFormCalendarDateScheduleRangeFieldProps = DbxFormCalendarDateScheduleRangeFieldProps> extends FieldType<FieldTypeConfig<T>> implements OnInit, OnDestroy {\n private _syncSub = new SubscriptionObject();\n private _valueSub = new SubscriptionObject();\n private _filterSub = new SubscriptionObject();\n\n private _formControlObs = new BehaviorSubject<Maybe<AbstractControl>>(undefined);\n readonly formControl$ = this._formControlObs.pipe(filterMaybe());\n\n readonly value$ = this.formControl$.pipe(\n switchMap((control) => control.valueChanges.pipe(startWith(control.value))),\n shareReplay(1)\n );\n\n constructor(@Optional() readonly compact: CompactContextStore, readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore, readonly ngZone: NgZone) {\n super();\n }\n\n get formGroupName(): string {\n return this.field.key as string;\n }\n\n get formGroup(): FormGroup {\n return this.form as FormGroup;\n }\n\n get label(): Maybe<string> {\n return this.field.props?.label;\n }\n\n get description(): Maybe<string> {\n return this.props.description;\n }\n\n get isReadonlyOrDisabled() {\n return this.props.readonly || this.disabled;\n }\n\n get showCustomize() {\n return !this.props.hideCustomize;\n }\n\n get filter() {\n return this.props.filter;\n }\n\n ngOnInit(): void {\n this._formControlObs.next(this.formControl);\n\n this._syncSub.subscription = this.value$.pipe(distinctUntilChanged(isSameDateScheduleRange)).subscribe((x) => {\n this.dbxCalendarScheduleSelectionStore.setDateScheduleRangeValue(x);\n });\n\n this._valueSub.subscription = this.dbxCalendarScheduleSelectionStore.currentDateScheduleRangeValue$.subscribe((x) => {\n this.formControl.setValue(x);\n });\n\n const filter = this.filter;\n\n if (filter != null) {\n this._filterSub.subscription = this.dbxCalendarScheduleSelectionStore.setFilter(asObservable(filter)) as Subscription;\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._syncSub.destroy();\n this._valueSub.destroy();\n this._formControlObs.complete();\n this._filterSub.destroy();\n }\n}\n","import { MatDatepickerModule } from '@angular/material/datepicker';\nimport { NgModule } from '@angular/core';\nimport { CalendarDayModule, CalendarModule, CalendarWeekModule } from 'angular-calendar';\nimport { CommonModule } from '@angular/common';\nimport { DbxActionModule, DbxButtonModule, DbxDialogInteractionModule, DbxPopoverInteractionModule } from '@dereekb/dbx-web';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { DbxScheduleSelectionCalendarComponent } from './calendar.schedule.selection.component';\nimport { DbxScheduleSelectionCalendarDatePopoverButtonComponent } from './calendar.schedule.selection.popover.button.component';\nimport { DbxScheduleSelectionCalendarDateDaysComponent } from './calendar.schedule.selection.days.component';\nimport { DbxScheduleSelectionCalendarDatePopoverComponent } from './calendar.schedule.selection.popover.component';\nimport { DbxScheduleSelectionCalendarDatePopoverContentComponent } from './calendar.schedule.selection.popover.content.component';\nimport { DbxScheduleSelectionCalendarDateRangeComponent } from './calendar.schedule.selection.range.component';\nimport { DbxCalendarModule } from '@dereekb/dbx-web/calendar';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DbxScheduleSelectionCalendarDateDaysFormComponent } from './calendar.schedule.selection.days.form.component';\nimport { DbxFormlyModule, DbxFormModule } from '@dereekb/dbx-form';\nimport { DbxScheduleSelectionCalendarCellComponent } from './calendar.schedule.selection.cell.component';\nimport { DbxCalendarScheduleSelectionStoreInjectionBlockDirective } from './calendar.schedule.selection.store.provide';\nimport { DbxScheduleSelectionCalendarDateDialogComponent } from './calendar.schedule.selection.dialog.component';\nimport { DbxScheduleSelectionCalendarDateDialogButtonComponent } from './calendar.schedule.selection.dialog.button.component';\n\nconst declarations = [\n //\n DbxScheduleSelectionCalendarComponent,\n DbxScheduleSelectionCalendarDateDaysComponent,\n DbxScheduleSelectionCalendarDateDaysFormComponent,\n DbxScheduleSelectionCalendarDateRangeComponent,\n DbxScheduleSelectionCalendarDatePopoverButtonComponent,\n DbxScheduleSelectionCalendarCellComponent,\n DbxScheduleSelectionCalendarDatePopoverComponent,\n DbxScheduleSelectionCalendarDatePopoverContentComponent,\n DbxCalendarScheduleSelectionStoreInjectionBlockDirective,\n DbxScheduleSelectionCalendarDateDialogComponent,\n DbxScheduleSelectionCalendarDateDialogButtonComponent\n];\n\n@NgModule({\n imports: [\n //\n DbxActionModule,\n DbxFormModule,\n DbxFormlyModule,\n DbxCalendarModule,\n CommonModule,\n MatIconModule,\n MatButtonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatButtonToggleModule,\n DbxButtonModule,\n MatDatepickerModule,\n DbxDialogInteractionModule,\n DbxPopoverInteractionModule,\n CalendarModule,\n CalendarDayModule,\n FlexLayoutModule,\n CalendarWeekModule\n ],\n declarations,\n exports: declarations\n})\nexport class DbxFormCalendarModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DbxFormCalendarDateScheduleRangeFieldComponent } from './calendar.schedule.field.component';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { DbxTextModule } from '@dereekb/dbx-web';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DbxFormCalendarModule } from '../../calendar.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n DbxFormCalendarModule,\n MatButtonModule,\n DbxTextModule,\n FormsModule,\n ReactiveFormsModule,\n MatInputModule,\n FormlyModule.forChild({\n types: [{ name: 'date-schedule-range', component: DbxFormCalendarDateScheduleRangeFieldComponent }]\n })\n ],\n declarations: [DbxFormCalendarDateScheduleRangeFieldComponent]\n})\nexport class DbxFormDateScheduleRangeFieldModule {}\n","export * from './schedule';\n// export * from './selection';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DbxCalendarScheduleSelectionStore","i4","i6","i1","i2.DbxCalendarScheduleSelectionStore","i3","i5.DbxScheduleSelectionCalendarDateDaysFormComponent","i1.DbxScheduleSelectionCalendarDateDaysComponent","i2.DbxScheduleSelectionCalendarDateRangeComponent","i2.DbxScheduleSelectionCalendarDatePopoverContentComponent","i2","i5.DbxScheduleSelectionCalendarDatePopoverButtonComponent","i6.DbxScheduleSelectionCalendarCellComponent","i2.DbxScheduleSelectionCalendarComponent","i3.DbxScheduleSelectionCalendarDateRangeComponent","i4.DbxScheduleSelectionCalendarDateDialogButtonComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dereekb-dbx-form-calendar.mjs","sources":["../../../../packages/dbx-form/calendar/src/lib/field/schedule/calendar.schedule.field.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.store.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.store.provide.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.range.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.range.component.html","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.form.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.days.form.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.days.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.popover.content.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.popover.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.popover.button.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.cell.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.component.html","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.dialog.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.schedule.selection.dialog.button.component.ts","../../../../packages/dbx-form/calendar/src/lib/field/schedule/calendar.schedule.field.component.ts","../../../../packages/dbx-form/calendar/src/lib/calendar.module.ts","../../../../packages/dbx-form/calendar/src/lib/field/schedule/calendar.schedule.module.ts","../../../../packages/dbx-form/calendar/src/lib/field/index.ts","../../../../packages/dbx-form/calendar/src/dereekb-dbx-form-calendar.ts"],"sourcesContent":["import { DescriptionFieldConfig, FieldConfig, formlyField, LabeledFieldConfig, propsAndConfigForFieldConfig } from '@dereekb/dbx-form';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { DbxFormCalendarDateScheduleRangeFieldProps } from './calendar.schedule.field.component';\n\nexport interface DateScheduleRangeFieldConfig extends Omit<LabeledFieldConfig, 'key' | 'placeholder'>, DescriptionFieldConfig, Partial<FieldConfig>, DbxFormCalendarDateScheduleRangeFieldProps {}\n\nexport function dateScheduleRangeField(config: DateScheduleRangeFieldConfig = {}): FormlyFieldConfig {\n const { key = 'schedule', filter, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions } = config;\n const fieldConfig: FormlyFieldConfig = {\n ...formlyField({\n key,\n type: 'date-schedule-range',\n ...propsAndConfigForFieldConfig(config, {\n label: config.label ?? 'Schedule',\n filter,\n computeSelectionResultRelativeToFilter,\n initialSelectionState,\n exclusions\n })\n })\n };\n\n return fieldConfig;\n}\n","import { DateBlockIndex, DateRange, DateScheduleRange } from '@dereekb/date';\nimport { FactoryWithRequiredInput } from '@dereekb/util';\nimport { CalendarMonthViewDay } from 'angular-calendar';\n\nexport interface CalendarScheduleSelectionValue {\n /**\n * Schedule range.\n */\n dateScheduleRange: DateScheduleRange;\n /**\n * Min and max dates in the selection.\n */\n minMaxRange: DateRange;\n}\n\nexport enum CalendarScheduleSelectionDayState {\n NOT_APPLICABLE = 0,\n DISABLED = 1,\n NOT_SELECTED = 2,\n SELECTED = 3\n}\n\nexport interface CalendarScheduleSelectionMetadata {\n state: CalendarScheduleSelectionDayState;\n i: DateBlockIndex;\n}\n\nexport interface CalendarScheduleSelectionCellContent {\n icon?: string;\n text?: string;\n}\n\nexport type CalendarScheduleSelectionCellContentFactory = FactoryWithRequiredInput<CalendarScheduleSelectionCellContent, CalendarMonthViewDay<CalendarScheduleSelectionMetadata>>;\n\nexport const defaultCalendarScheduleSelectionCellContentFactory: CalendarScheduleSelectionCellContentFactory = (day: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>) => {\n let icon;\n let text;\n\n switch (day.meta?.state) {\n case CalendarScheduleSelectionDayState.SELECTED:\n icon = 'check_box';\n break;\n case CalendarScheduleSelectionDayState.DISABLED:\n icon = 'block';\n break;\n case CalendarScheduleSelectionDayState.NOT_APPLICABLE:\n break;\n case CalendarScheduleSelectionDayState.NOT_SELECTED:\n icon = 'check_box_outline_blank';\n text = 'Add';\n break;\n }\n\n return {\n icon,\n text\n };\n};\n","import { Injectable } from '@angular/core';\nimport {\n DateBlockDayOfWeekFactory,\n dateBlockDayOfWeekFactory,\n DateBlockIndex,\n DateBlockRangeWithRange,\n dateBlockTimingDateFactory,\n DateOrDateBlockIndex,\n DateRange,\n dateScheduleDateFilter,\n copyDateScheduleDateFilterConfig,\n DateScheduleDateFilterConfig,\n DateScheduleDayCode,\n dateScheduleEncodedWeek,\n DateScheduleEncodedWeek,\n DateScheduleRange,\n DateTimingRelativeIndexFactory,\n dateTimingRelativeIndexFactory,\n expandDateScheduleDayCodes,\n expandDateScheduleDayCodesToDayOfWeekSet,\n findMaxDate,\n findMinDate,\n isDateInDateRangeFunction,\n IsDateWithinDateBlockRangeFunction,\n isDateWithinDateBlockRangeFunction,\n isSameDate,\n isSameDateDay,\n isSameDateRange,\n isSameDateScheduleRange,\n DateOrDateRangeOrDateBlockIndexOrDateBlockRange,\n dateTimingRelativeIndexArrayFactory\n} from '@dereekb/date';\nimport { filterMaybe } from '@dereekb/rxjs';\nimport { Maybe, TimezoneString, DecisionFunction, IterableOrValue, iterableToArray, addToSet, toggleInSet, isIndexNumberInIndexRangeFunction, MaybeMap, minAndMaxNumber, setsAreEquivalent, DayOfWeek, range, AllOrNoneSelection, unique, mergeArrays, ArrayOrValue } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { addYears, startOfDay, startOfYear } from 'date-fns';\nimport { Observable, distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { CalendarScheduleSelectionCellContentFactory, CalendarScheduleSelectionValue, defaultCalendarScheduleSelectionCellContentFactory } from './calendar.schedule.selection';\n\nexport interface CalendarScheduleSelectionInputDateRange {\n /**\n * Input Start Date\n */\n inputStart: Date;\n /**\n * Input End Date\n */\n inputEnd: Date;\n}\n\nexport type PartialCalendarScheduleSelectionInputDateRange = Partial<MaybeMap<CalendarScheduleSelectionInputDateRange>>;\n\nexport interface CalendarScheduleSelectionState extends PartialCalendarScheduleSelectionInputDateRange {\n /**\n * Filters the days of the schedule to only allow selecting days in the schedule.\n */\n filter?: Maybe<DateScheduleDateFilterConfig>;\n /**\n * Additional exclusions that may not be defined within the filter.\n */\n inputExclusions?: Maybe<ArrayOrValue<DateOrDateRangeOrDateBlockIndexOrDateBlockRange>>;\n /**\n * The computed exclusions given the input exclusions.\n */\n computedExclusions?: Maybe<DateBlockIndex[]>;\n /**\n * Minimum date allowed if no filter is set. If a filter is set, the greater of the two dates is used as the minimum.\n */\n minDate?: Maybe<Date>;\n /**\n * Maximum date allowed if no filter is set. If a filter is set, the lesser of the two dates is used as the maximum.\n */\n maxDate?: Maybe<Date>;\n /**\n * Start date. Is updated as the inputStart is modified or filter is provided that provides the start date.\n *\n * Defaults to today and the current timezone.\n */\n start: Date;\n /**\n * DateTimingRelativeIndexFactory\n */\n indexFactory: DateTimingRelativeIndexFactory;\n /**\n * Array of manually selected dates.\n *\n * Values that exist outside of the \"input\" range are considered toggled on, while those\n * that are selected within the range are considered toggled off.\n *\n * If dates are selected, and then a range is selected, then those dates within the range that fall\n * within the range are cleared from selection.\n *\n * These indexes are relative to the start date.\n */\n selectedIndexes: Set<DateBlockIndex>;\n /**\n * Days of the schedule that are allowed to be picked.\n */\n scheduleDays: Set<DateScheduleDayCode>;\n /**\n * Set of the days of week that are allowed.\n */\n allowedDaysOfWeek: Set<DayOfWeek>;\n /**\n *\n */\n indexDayOfWeek: DateBlockDayOfWeekFactory;\n /**\n * Decision function that returns true if a value is enabled given the current filter.\n */\n isEnabledFilterDay: DecisionFunction<DateOrDateBlockIndex>;\n /**\n * Decision function that returns true if a value is enabled.\n *\n * This function does not take the current filter into account.\n */\n isEnabledDay: DecisionFunction<DateOrDateBlockIndex>;\n /**\n * CalendarScheduleSelectionCellContentFactory for the view.\n */\n cellContentFactory: CalendarScheduleSelectionCellContentFactory;\n /**\n * Current selection value.\n */\n currentSelectionValue?: Maybe<CalendarScheduleSelectionValue>;\n /**\n * Whether or not to use the filter as the start and end range instead of optimizing for the current index.\n *\n * Defaults to true.\n */\n computeSelectionResultRelativeToFilter?: Maybe<boolean>;\n /**\n * The initial selection state when the calendar is reset.\n */\n initialSelectionState?: Maybe<AllOrNoneSelection>;\n}\n\nexport function initialCalendarScheduleSelectionState(): CalendarScheduleSelectionState {\n const start = startOfDay(new Date());\n const scheduleDays = new Set([DateScheduleDayCode.WEEKDAY, DateScheduleDayCode.WEEKEND]);\n const allowedDaysOfWeek = expandDateScheduleDayCodesToDayOfWeekSet(Array.from(scheduleDays));\n const indexFactory = dateTimingRelativeIndexFactory({ start });\n const indexDayOfWeek = dateBlockDayOfWeekFactory(start);\n\n return {\n start,\n indexFactory,\n selectedIndexes: new Set(),\n scheduleDays,\n allowedDaysOfWeek,\n indexDayOfWeek,\n isEnabledFilterDay: () => true,\n isEnabledDay: () => false,\n minDate: null,\n maxDate: null,\n computeSelectionResultRelativeToFilter: true,\n cellContentFactory: defaultCalendarScheduleSelectionCellContentFactory\n };\n}\n\nexport function calendarScheduleMinDate(x: CalendarScheduleSelectionState): Maybe<Date> {\n return findMaxDate([x.filter?.start, x.minDate]);\n}\n\nexport function calendarScheduleMaxDate(x: CalendarScheduleSelectionState): Maybe<Date> {\n return findMinDate([x.filter?.end, x.maxDate]);\n}\n\nexport function calendarScheduleMinAndMaxDate(x: CalendarScheduleSelectionState): Pick<CalendarScheduleSelectionState, 'minDate' | 'maxDate'> {\n return {\n minDate: calendarScheduleMinDate(x),\n maxDate: calendarScheduleMaxDate(x)\n };\n}\n\n@Injectable()\nexport class DbxCalendarScheduleSelectionStore extends ComponentStore<CalendarScheduleSelectionState> {\n constructor() {\n super(initialCalendarScheduleSelectionState());\n }\n\n // MARK: Accessors\n readonly filter$ = this.state$.pipe(\n map((x) => x.filter),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly inputStart$ = this.state$.pipe(\n map((x) => x.inputStart),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly inputEnd$ = this.state$.pipe(\n map((x) => x.inputEnd),\n distinctUntilChanged(isSameDate),\n shareReplay(1)\n );\n\n readonly currentInputRange$: Observable<Maybe<CalendarScheduleSelectionInputDateRange>> = this.state$.pipe(\n map(({ inputStart, inputEnd }) => ({ inputStart, inputEnd })),\n distinctUntilChanged((a, b) => isSameDate(a.inputStart, b.inputStart) && isSameDate(a.inputEnd, b.inputEnd)),\n map((x) => {\n if (x.inputStart && x.inputEnd) {\n return x as CalendarScheduleSelectionInputDateRange;\n } else {\n return undefined;\n }\n }),\n shareReplay(1)\n );\n\n readonly inputRange$: Observable<CalendarScheduleSelectionInputDateRange> = this.currentInputRange$.pipe(filterMaybe(), shareReplay(1));\n\n readonly selectedDates$: Observable<Set<DateBlockIndex>> = this.state$.pipe(\n map((x) => x.selectedIndexes),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isEnabledFilterDayFunction$: Observable<DecisionFunction<DateOrDateBlockIndex>> = this.state$.pipe(\n map((x) => x.isEnabledFilterDay),\n shareReplay(1)\n );\n\n readonly isEnabledDayFunction$: Observable<DecisionFunction<DateOrDateBlockIndex>> = this.state$.pipe(\n map((x) => x.isEnabledDay),\n shareReplay(1)\n );\n\n readonly currentDateRange$: Observable<Maybe<DateRange>> = this.state$.pipe(\n map(computeCalendarScheduleSelectionRange),\n distinctUntilChanged((a, b) => isSameDateRange(a, b)),\n shareReplay(1)\n );\n\n readonly computeSelectionResultRelativeToFilter$: Observable<Maybe<boolean>> = this.state$.pipe(\n map((x) => x.computeSelectionResultRelativeToFilter),\n shareReplay(1)\n );\n\n readonly startBeingUsedFromFilter$: Observable<Maybe<boolean>> = this.state$.pipe(\n map((x) => x.computeSelectionResultRelativeToFilter && x.filter?.start != null),\n shareReplay(1)\n );\n\n readonly dateRange$: Observable<DateRange> = this.currentDateRange$.pipe(filterMaybe(), shareReplay(1));\n\n readonly scheduleDays$: Observable<Set<DateScheduleDayCode>> = this.state$.pipe(\n map((x) => x.scheduleDays),\n distinctUntilChanged(setsAreEquivalent),\n shareReplay(1)\n );\n\n readonly currentSelectionValue$ = this.state$.pipe(\n map((x) => x.currentSelectionValue),\n shareReplay(1)\n );\n readonly selectionValue$ = this.currentSelectionValue$.pipe(filterMaybe(), shareReplay(1));\n\n readonly currentDateScheduleRangeValue$ = this.currentSelectionValue$.pipe(\n map((x) => x?.dateScheduleRange),\n distinctUntilChanged(isSameDateScheduleRange),\n shareReplay(1)\n );\n\n readonly dateScheduleRangeValue$ = this.currentDateScheduleRangeValue$.pipe(filterMaybe(), shareReplay(1));\n\n readonly minDate$ = this.state$.pipe(map(calendarScheduleMinDate), distinctUntilChanged(isSameDateDay), shareReplay(1));\n\n readonly maxDate$ = this.state$.pipe(map(calendarScheduleMaxDate), distinctUntilChanged(isSameDateDay), shareReplay(1));\n\n readonly cellContentFactory$ = this.state$.pipe(\n map((x) => x.cellContentFactory),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isCustomized$ = this.state$.pipe(\n map((x) => x.selectedIndexes.size > 0),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n // MARK: State Changes\n readonly setFilter = this.updater((state, filter: Maybe<DateScheduleDateFilterConfig>) => updateStateWithFilter(state, filter));\n readonly setExclusions = this.updater((state, exclusions: Maybe<ArrayOrValue<DateOrDateRangeOrDateBlockIndexOrDateBlockRange>>) => updateStateWithExclusions(state, exclusions));\n readonly setComputeSelectionResultRelativeToFilter = this.updater((state, computeSelectionResultRelativeToFilter: Maybe<boolean>) => updateStateWithComputeSelectionResultRelativeToFilter(state, computeSelectionResultRelativeToFilter));\n readonly clearFilter = this.updater((state) => updateStateWithFilter(state, undefined));\n\n readonly setTimezone = this.updater((state, timezone: Maybe<TimezoneString>) => ({ ...state, timezone }));\n readonly setInputRange = this.updater((state, range: CalendarScheduleSelectionInputDateRange) => updateStateWithChangedRange(state, range));\n\n readonly toggleSelectedDates = this.updater((state, toggle: IterableOrValue<DateOrDateBlockIndex>) => updateStateWithChangedDates(state, { toggle }));\n readonly addSelectedDates = this.updater((state, add: IterableOrValue<DateOrDateBlockIndex>) => updateStateWithChangedDates(state, { add }));\n readonly removeSelectedDates = this.updater((state, remove: IterableOrValue<DateOrDateBlockIndex>) => updateStateWithChangedDates(state, { remove }));\n readonly setSelectedDates = this.updater((state, set: IterableOrValue<DateOrDateBlockIndex>) => updateStateWithChangedDates(state, { set }));\n readonly selectAllDates = this.updater((state, selectAll: AllOrNoneSelection = 'all') => updateStateWithChangedDates(state, { selectAll }));\n readonly setInitialSelectionState = this.updater((state, initialSelectionState: Maybe<AllOrNoneSelection>) => updateStateWithInitialSelectionState(state, initialSelectionState));\n\n readonly setScheduleDays = this.updater((state, scheduleDays: Iterable<DateScheduleDayCode>) => updateStateWithChangedScheduleDays(state, scheduleDays));\n readonly setAllowAllScheduleDays = this.updater((state) => updateStateWithChangedScheduleDays(state, null));\n\n readonly setDateScheduleRangeValue = this.updater((state, value: Maybe<DateScheduleRange>) => updateStateWithDateScheduleRangeValue(state, value));\n readonly setCellContentFactory = this.updater((state, cellContentFactory: CalendarScheduleSelectionCellContentFactory) => ({ ...state, cellContentFactory }));\n}\n\nexport function updateStateWithInitialSelectionState(state: CalendarScheduleSelectionState, initialSelectionState: Maybe<AllOrNoneSelection>): CalendarScheduleSelectionState {\n const { selectedIndexes } = state;\n\n if (selectedIndexes.size === 0 && initialSelectionState === 'all') {\n state = updateStateWithChangedDates(state, { selectAll: initialSelectionState });\n }\n\n return { ...state, initialSelectionState };\n}\n\nexport function updateStateWithComputeSelectionResultRelativeToFilter(currentState: CalendarScheduleSelectionState, computeSelectionResultRelativeToFilter: Maybe<boolean>): CalendarScheduleSelectionState {\n let state: CalendarScheduleSelectionState = { ...currentState, computeSelectionResultRelativeToFilter };\n\n if (Boolean(currentState.computeSelectionResultRelativeToFilter) !== Boolean(computeSelectionResultRelativeToFilter)) {\n state = updateStateWithChangedDates(state, {}); // recalculate if change occurs as it will affect the output value\n }\n\n return state;\n}\n\nexport function updateStateWithExclusions(state: CalendarScheduleSelectionState, inputExclusions: Maybe<ArrayOrValue<DateOrDateRangeOrDateBlockIndexOrDateBlockRange>>): CalendarScheduleSelectionState {\n let computedExclusions: Maybe<DateBlockIndex[]>;\n\n if (inputExclusions) {\n const { indexFactory } = state;\n const indexArrayFactory = dateTimingRelativeIndexArrayFactory(indexFactory);\n computedExclusions = indexArrayFactory(inputExclusions);\n }\n\n state = { ...state, inputExclusions, computedExclusions };\n return updateStateWithFilter(state, state.filter);\n}\n\nexport function updateStateWithFilter(state: CalendarScheduleSelectionState, inputFilter: Maybe<DateScheduleDateFilterConfig>): CalendarScheduleSelectionState {\n const { computedExclusions: exclusions } = state;\n\n let isEnabledFilterDay: Maybe<DecisionFunction<DateOrDateBlockIndex>> = () => true;\n let filter: Maybe<DateScheduleDateFilterConfig> = null;\n\n if (inputFilter || exclusions?.length) {\n let enabledFilter: DateScheduleDateFilterConfig;\n\n if (inputFilter) {\n filter = copyDateScheduleDateFilterConfig(inputFilter); // copy filter\n\n if (exclusions?.length) {\n enabledFilter = {\n ...filter,\n ex: unique(mergeArrays([filter.ex, exclusions]))\n };\n } else {\n enabledFilter = filter;\n }\n } else {\n enabledFilter = {\n w: '89',\n ex: exclusions as number[]\n };\n }\n\n isEnabledFilterDay = dateScheduleDateFilter(enabledFilter);\n }\n\n state = { ...state, filter, isEnabledFilterDay };\n\n // attempt to re-apply the initial selection state once filter is applied\n if (state.initialSelectionState) {\n state = updateStateWithInitialSelectionState(state, state.initialSelectionState);\n }\n\n // re-calculate the selection given the filter\n const { inputStart, inputEnd } = state;\n\n if (inputStart && inputEnd) {\n state = updateStateWithChangedRange(state, { inputStart, inputEnd });\n }\n\n return state;\n}\n\nexport function updateStateWithDateScheduleRangeValue(state: CalendarScheduleSelectionState, change: Maybe<DateScheduleRange>): CalendarScheduleSelectionState {\n const isSameValue = isSameDateScheduleRange(state.currentSelectionValue?.dateScheduleRange, change);\n\n if (isSameValue) {\n return state;\n } else {\n if (change != null) {\n const nextState: CalendarScheduleSelectionState = { ...state, inputStart: change.start, inputEnd: change.end, selectedIndexes: new Set(change.ex) };\n return updateStateWithChangedScheduleDays(finalizeNewCalendarScheduleSelectionState(nextState), expandDateScheduleDayCodes(change.w));\n } else {\n return noSelectionCalendarScheduleSelectionState(state); // clear selection, retain disabled days\n }\n }\n}\n\nexport function updateStateWithChangedScheduleDays(state: CalendarScheduleSelectionState, change: Maybe<Iterable<DateScheduleDayCode>>): CalendarScheduleSelectionState {\n const { scheduleDays: currentScheduleDays } = state;\n const scheduleDays = new Set(change || [DateScheduleDayCode.WEEKDAY, DateScheduleDayCode.WEEKEND]);\n\n if (setsAreEquivalent(currentScheduleDays, scheduleDays)) {\n return state; // no change\n } else {\n const allowedDaysOfWeek = expandDateScheduleDayCodesToDayOfWeekSet(Array.from(scheduleDays));\n const nextState = { ...state, scheduleDays, allowedDaysOfWeek };\n return finalizeNewCalendarScheduleSelectionState(nextState);\n }\n}\n\nexport interface CalendarScheduleSelectionStateDatesChange {\n reset?: true;\n toggle?: IterableOrValue<DateOrDateBlockIndex>;\n add?: IterableOrValue<DateOrDateBlockIndex>;\n remove?: IterableOrValue<DateOrDateBlockIndex>;\n set?: IterableOrValue<DateOrDateBlockIndex>;\n selectAll?: AllOrNoneSelection;\n}\n\nexport function updateStateWithChangedDates(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionStateDatesChange): CalendarScheduleSelectionState {\n const { indexFactory, allowedDaysOfWeek, indexDayOfWeek } = state;\n const { minDate, maxDate } = calendarScheduleMinAndMaxDate(state);\n\n let selectedIndexes: Set<DateBlockIndex>;\n\n if (change.reset || change.selectAll != null || change.set) {\n let set: Maybe<IterableOrValue<DateOrDateBlockIndex>> = change.set ?? [];\n let selectAll: Maybe<AllOrNoneSelection> = change.reset === true ? state.initialSelectionState : change.selectAll;\n\n switch (selectAll) {\n case 'all':\n if (minDate != null && maxDate != null) {\n const minIndex = indexFactory(minDate);\n const maxIndex = indexFactory(maxDate);\n set = range(minIndex, maxIndex);\n }\n break;\n case 'none':\n set = [];\n break;\n }\n\n selectedIndexes = new Set(iterableToArray(set).map(indexFactory));\n } else {\n selectedIndexes = new Set(state.selectedIndexes);\n\n if (change.toggle) {\n const allowedToToggle = iterableToArray(change.toggle)\n .map(indexFactory)\n .filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));\n toggleInSet(selectedIndexes, allowedToToggle);\n }\n\n if (change.add) {\n addToSet(selectedIndexes, iterableToArray(change.add).map(indexFactory));\n }\n\n if (change.remove) {\n addToSet(selectedIndexes, iterableToArray(change.remove).map(indexFactory));\n }\n }\n\n const nextState = { ...state, selectedIndexes };\n nextState.isEnabledDay = isEnabledDayInCalendarScheduleSelectionState(nextState);\n\n // Recalculate the range and simplified to exclusions\n const rangeAndExclusion = computeScheduleSelectionRangeAndExclusion(nextState);\n\n if (rangeAndExclusion) {\n return finalizeNewCalendarScheduleSelectionState({ ...nextState, selectedIndexes: new Set(rangeAndExclusion.excluded), inputStart: rangeAndExclusion.start, inputEnd: rangeAndExclusion.end });\n } else {\n // no selected days\n return noSelectionCalendarScheduleSelectionState(nextState);\n }\n}\n\nexport function noSelectionCalendarScheduleSelectionState(state: CalendarScheduleSelectionState): CalendarScheduleSelectionState {\n return finalizeNewCalendarScheduleSelectionState({ ...state, selectedIndexes: new Set(), inputStart: null, inputEnd: null });\n}\n\nexport function updateStateWithChangedRange(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionInputDateRange): CalendarScheduleSelectionState {\n const { inputStart: currentInputStart, inputEnd: currentInputEnd, indexFactory, minDate, maxDate, filter, computeSelectionResultRelativeToFilter } = state;\n\n let inputStart: Date = startOfDay(change.inputStart);\n let inputEnd: Date = startOfDay(change.inputEnd);\n\n const isValidRange = minDate != null || maxDate != null ? isDateInDateRangeFunction({ start: minDate ?? undefined, end: maxDate ?? undefined }) : () => true;\n\n if (!isValidRange(inputStart) || !isValidRange(inputEnd) || (isSameDateDay(inputStart, currentInputStart) && isSameDateDay(inputEnd, currentInputEnd))) {\n return state; // if no change, return the current state.\n }\n\n // retain all indexes that are within the new range\n const minIndex = computeSelectionResultRelativeToFilter && filter?.start ? indexFactory(filter?.start) : indexFactory(inputStart);\n const maxIndex = indexFactory(inputEnd) + 1;\n\n const currentIndexes: DateBlockIndex[] = Array.from(state.selectedIndexes);\n const isInCurrentRange = isIndexNumberInIndexRangeFunction({ minIndex, maxIndex });\n const excludedIndexesInNewRange = currentIndexes.filter(isInCurrentRange);\n\n const nextState = { ...state, excludedIndexesInNewRange, inputStart, inputEnd };\n return finalizeNewCalendarScheduleSelectionState(nextState);\n}\n\nexport function finalizeNewCalendarScheduleSelectionState(nextState: CalendarScheduleSelectionState): CalendarScheduleSelectionState {\n nextState.isEnabledDay = isEnabledDayInCalendarScheduleSelectionState(nextState);\n nextState.currentSelectionValue = computeScheduleSelectionValue(nextState);\n return nextState;\n}\n\nexport function isEnabledDayInCalendarScheduleSelectionState(state: CalendarScheduleSelectionState): DecisionFunction<DateOrDateBlockIndex> {\n const { indexFactory, inputStart, inputEnd, indexDayOfWeek, allowedDaysOfWeek } = state;\n\n let isInStartAndEndRange: IsDateWithinDateBlockRangeFunction;\n\n if (inputStart && inputEnd) {\n isInStartAndEndRange = isDateWithinDateBlockRangeFunction({ start: state.start, range: { start: inputStart, end: inputEnd } });\n } else {\n isInStartAndEndRange = () => false;\n }\n\n return (input: DateOrDateBlockIndex) => {\n const index = indexFactory(input);\n const dayOfWeek = indexDayOfWeek(index);\n\n const isInSelectedRange = isInStartAndEndRange(input);\n const isSelected = state.selectedIndexes.has(index);\n const isAllowedDayOfWeek = allowedDaysOfWeek.has(dayOfWeek);\n\n const result = isAllowedDayOfWeek && ((isInSelectedRange && !isSelected) || (isSelected && !isInSelectedRange));\n return result;\n };\n}\n\nexport function computeScheduleSelectionValue(state: CalendarScheduleSelectionState): Maybe<CalendarScheduleSelectionValue> {\n const { indexFactory, scheduleDays, allowedDaysOfWeek, indexDayOfWeek, computeSelectionResultRelativeToFilter, filter } = state;\n const rangeAndExclusion = computeScheduleSelectionRangeAndExclusion(state);\n\n if (rangeAndExclusion == null) {\n return null;\n }\n\n const { start: rangeStart, end, excluded: allExcluded, dateBlockRange } = rangeAndExclusion;\n let filterOffsetExcludedRange: DateBlockIndex[] = [];\n let indexOffset = dateBlockRange.i;\n\n let start = rangeStart;\n\n // If computeSelectionResultRelativeToFilter is true, then we need to offset the values to be relative to that start.\n if (computeSelectionResultRelativeToFilter && filter?.start) {\n start = filter.start;\n\n const filterStartIndexOffset = indexFactory(rangeStart) - indexFactory(start);\n filterOffsetExcludedRange = range(0, filterStartIndexOffset);\n indexOffset = indexOffset - filterStartIndexOffset;\n }\n\n const excluded = computeSelectionResultRelativeToFilter\n ? allExcluded.filter((x) => {\n const isExcludedIndex = allowedDaysOfWeek.has(indexDayOfWeek(x)); // ???\n return isExcludedIndex;\n })\n : allExcluded;\n\n const offsetExcluded: DateBlockIndex[] = excluded.map((x) => x - indexOffset); // set to the proper offset\n\n const ex = [...filterOffsetExcludedRange, ...offsetExcluded];\n\n const w: DateScheduleEncodedWeek = dateScheduleEncodedWeek(scheduleDays);\n const d: DateBlockIndex[] = []; // \"included\" blocks are never used/calculated.\n\n const dateScheduleRange: DateScheduleRange = {\n start,\n end,\n w,\n d,\n ex\n };\n\n return {\n dateScheduleRange,\n minMaxRange: { start, end }\n };\n}\n\nexport interface CalendarScheduleSelectionRangeAndExclusion extends DateRange {\n dateBlockRange: DateBlockRangeWithRange;\n excluded: DateBlockIndex[];\n}\n\nexport function computeScheduleSelectionRangeAndExclusion(state: CalendarScheduleSelectionState): Maybe<CalendarScheduleSelectionRangeAndExclusion> {\n const { isEnabledDay, isEnabledFilterDay } = state;\n const dateFactory = dateBlockTimingDateFactory(state);\n const dateBlockRange = computeCalendarScheduleSelectionDateBlockRange(state);\n\n if (dateBlockRange == null) {\n return null; // returns null if no items are selected.\n }\n\n const start = dateFactory(dateBlockRange.i);\n const end = dateFactory(dateBlockRange.to);\n\n const excluded: DateBlockIndex[] = range(dateBlockRange.i, dateBlockRange.to + 1).filter((x) => {\n const isExcludedIndex = !isEnabledDay(x) || !isEnabledFilterDay(x);\n return isExcludedIndex;\n });\n\n const result: CalendarScheduleSelectionRangeAndExclusion = {\n dateBlockRange,\n start,\n end,\n excluded\n };\n\n return result;\n}\n\nexport function computeCalendarScheduleSelectionRange(state: CalendarScheduleSelectionState): Maybe<DateRange> {\n const dateFactory = dateBlockTimingDateFactory(state);\n const dateBlockRange = computeCalendarScheduleSelectionDateBlockRange(state);\n\n const dateRange: Maybe<DateRange> = dateBlockRange != null ? { start: dateFactory(dateBlockRange.i), end: dateFactory(dateBlockRange.to as number) } : undefined;\n return dateRange;\n}\n\nexport function computeCalendarScheduleSelectionDateBlockRange(state: CalendarScheduleSelectionState): Maybe<DateBlockRangeWithRange> {\n const { indexFactory, inputStart, inputEnd, allowedDaysOfWeek, indexDayOfWeek, isEnabledDay, isEnabledFilterDay } = state;\n const enabledSelectedIndexes = Array.from(state.selectedIndexes).filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));\n const minAndMaxSelectedValues = minAndMaxNumber(enabledSelectedIndexes);\n\n let startRange: Maybe<DateBlockIndex>;\n let endRange: Maybe<DateBlockIndex>;\n\n if (minAndMaxSelectedValues) {\n startRange = minAndMaxSelectedValues.min;\n endRange = minAndMaxSelectedValues.max;\n }\n\n if (inputStart != null && inputEnd != null) {\n const inputStartIndex = indexFactory(inputStart);\n const inputEndIndex = indexFactory(inputEnd);\n\n startRange = startRange != null ? Math.min(inputStartIndex, startRange) : inputStartIndex;\n endRange = endRange != null ? Math.max(inputEndIndex, endRange) : inputEndIndex;\n }\n\n if (startRange != null && endRange != null) {\n const scanStartIndex = startRange;\n const scanEndIndex = endRange;\n\n // clear start and end\n startRange = undefined;\n endRange = undefined;\n\n // if the min is equal to the start index, then we are in the range and need to iterate dates until we find one that is not selected/excluded.\n for (let i = scanStartIndex; i <= scanEndIndex; i += 1) {\n if (isEnabledFilterDay(i) && isEnabledDay(i)) {\n startRange = i;\n break;\n }\n }\n\n // same with the max\n for (let i = scanEndIndex; i >= scanStartIndex; i -= 1) {\n if (isEnabledFilterDay(i) && isEnabledDay(i)) {\n endRange = i;\n break;\n }\n }\n }\n\n if (startRange != null && endRange != null) {\n return { i: startRange, to: endRange };\n } else {\n return undefined;\n }\n}\n","import { Directive, Injectable, Injector, Optional, Provider, SkipSelf } from '@angular/core';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\n\n/**\n * Token used by provideCalendarScheduleSelectionStoreIfDoesNotExist() to prevent injecting a parent DbxCalendarScheduleSelectionStore into the child view.\n */\n@Injectable()\nexport class DbxCalendarScheduleSelectionStoreProviderBlock {\n constructor(@SkipSelf() readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore) {}\n}\n\n@Directive({\n selector: '[dbxCalendarScheduleSelectionStoreParentBlocker]',\n providers: [DbxCalendarScheduleSelectionStoreProviderBlock]\n})\nexport class DbxCalendarScheduleSelectionStoreInjectionBlockDirective {}\n\n/**\n * Creates a Provider that initializes a new DbxCalendarScheduleSelectionStore if a parent does not exist.\n *\n * If a DbxCalendarScheduleSelectionStoreInjectionBlock is available in the context, and references the same dbxCalendarScheduleSelectionStore that is attempting to be injected, a new DbxCalendarScheduleSelectionStore is created.\n *\n * @returns\n */\nexport function provideCalendarScheduleSelectionStoreIfParentIsUnavailable(): Provider {\n return {\n provide: DbxCalendarScheduleSelectionStore,\n useFactory: (parentInjector: Injector, dbxCalendarScheduleSelectionStoreInjectionBlock?: DbxCalendarScheduleSelectionStoreProviderBlock, dbxCalendarScheduleSelectionStore?: DbxCalendarScheduleSelectionStore) => {\n if (!dbxCalendarScheduleSelectionStore || (dbxCalendarScheduleSelectionStore && dbxCalendarScheduleSelectionStoreInjectionBlock != null && dbxCalendarScheduleSelectionStoreInjectionBlock.dbxCalendarScheduleSelectionStore === dbxCalendarScheduleSelectionStore)) {\n // create a new dbxCalendarScheduleSelectionStore to use\n const injector = Injector.create({ providers: [{ provide: DbxCalendarScheduleSelectionStore }], parent: parentInjector });\n dbxCalendarScheduleSelectionStore = injector.get(DbxCalendarScheduleSelectionStore);\n }\n\n return dbxCalendarScheduleSelectionStore;\n },\n deps: [Injector, [new Optional(), DbxCalendarScheduleSelectionStoreProviderBlock], [new Optional(), new SkipSelf(), DbxCalendarScheduleSelectionStore]]\n };\n}\n","import { SubscriptionObject } from '@dereekb/rxjs';\nimport { Component, Inject, Input, OnDestroy } from '@angular/core';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { DbxCalendarStore } from '@dereekb/dbx-web/calendar';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { Maybe, randomNumberFactory } from '@dereekb/util';\nimport { switchMap, throttleTime, distinctUntilChanged, filter, BehaviorSubject, startWith, Observable, of } from 'rxjs';\nimport { isSameDateDay } from '@dereekb/date';\nimport { MatFormFieldDefaultOptions, MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-range',\n templateUrl: './calendar.schedule.selection.range.component.html'\n})\nexport class DbxScheduleSelectionCalendarDateRangeComponent implements OnDestroy {\n @Input()\n required?: boolean;\n\n @Input()\n label?: Maybe<string> = 'Enter a date range';\n\n @Input()\n hint?: Maybe<string>;\n\n @Input()\n set disabled(disabled: Maybe<boolean>) {\n if (disabled) {\n this.range.disable();\n } else {\n this.range.enable();\n }\n }\n\n @Input()\n showCustomize = false;\n\n readonly random = randomNumberFactory(10000)();\n\n private _pickerOpened = new BehaviorSubject<boolean>(false);\n\n private _syncSub = new SubscriptionObject();\n private _valueSub = new SubscriptionObject();\n\n readonly range = new FormGroup({\n start: new FormControl<Maybe<Date>>(null),\n end: new FormControl<Maybe<Date>>(null)\n });\n\n readonly minDate$ = this.dbxCalendarScheduleSelectionStore.minDate$;\n readonly maxDate$ = this.dbxCalendarScheduleSelectionStore.maxDate$;\n readonly isCustomized$ = this.dbxCalendarScheduleSelectionStore.isCustomized$;\n\n readonly pickerOpened$ = this._pickerOpened.asObservable();\n\n constructor(readonly dbxCalendarStore: DbxCalendarStore, readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore, @Inject(MAT_FORM_FIELD_DEFAULT_OPTIONS) readonly matFormFieldDefaultOptions: MatFormFieldDefaultOptions) {}\n\n ngOnInit(): void {\n this._syncSub.subscription = this.dbxCalendarScheduleSelectionStore.inputRange$.subscribe((x) => {\n this.range.setValue({\n start: x.inputStart ?? null,\n end: x.inputEnd ?? null\n });\n });\n\n this._valueSub.subscription = this._pickerOpened\n .pipe(\n distinctUntilChanged(),\n switchMap((opened) => {\n let obs: Observable<{ start?: Maybe<Date>; end?: Maybe<Date> }>;\n\n if (opened) {\n obs = of({});\n } else {\n obs = this.range.valueChanges.pipe(startWith(this.range.value));\n }\n\n return obs;\n }),\n filter((x) => Boolean(x.start && x.end)),\n distinctUntilChanged((a, b) => isSameDateDay(a.start, b.start) && isSameDateDay(a.end, b.end)),\n throttleTime(100, undefined, { trailing: true })\n )\n .subscribe((x) => {\n if (x.start && x.end) {\n this.dbxCalendarScheduleSelectionStore.setInputRange({ inputStart: x.start, inputEnd: x.end });\n }\n });\n }\n\n ngOnDestroy(): void {\n this._pickerOpened.complete();\n this._syncSub.destroy();\n this._valueSub.destroy();\n }\n\n pickerOpened() {\n this._pickerOpened.next(true);\n }\n\n pickerClosed() {\n this._pickerOpened.next(false);\n }\n}\n","<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input [required]=\"required\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <div *ngIf=\"showCustomize\">\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n <mat-error *ngIf=\"range.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n</mat-form-field>\n","import { flexLayoutWrapper, toggleField } from '@dereekb/dbx-form';\nimport { getDaysOfWeekNames } from '@dereekb/util';\n\nexport function dbxScheduleSelectionCalendarDateDaysFormFields() {\n const fields = dbxScheduleSelectionCalendarDateDaysFormDayFields();\n return [flexLayoutWrapper(fields, { relative: true, size: 3 })];\n}\n\nexport function dbxScheduleSelectionCalendarDateDaysFormDayFields() {\n return getDaysOfWeekNames(false).map((dayOfWeekName: string) => {\n return toggleField({\n key: dayOfWeekName.toLowerCase(),\n label: dayOfWeekName\n });\n });\n}\n","import { Component } from '@angular/core';\nimport { AbstractSyncFormlyFormDirective, provideFormlyContext } from '@dereekb/dbx-form';\nimport { EnabledDays } from '@dereekb/util';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { dbxScheduleSelectionCalendarDateDaysFormFields } from './calendar.schedule.selection.form';\n\nexport type DbxScheduleSelectionCalendarDateDaysFormValue = EnabledDays;\n\n@Component({\n template: `\n <dbx-formly></dbx-formly>\n `,\n selector: 'dbx-schedule-selection-calendar-date-days-form',\n providers: [provideFormlyContext()]\n})\nexport class DbxScheduleSelectionCalendarDateDaysFormComponent extends AbstractSyncFormlyFormDirective<DbxScheduleSelectionCalendarDateDaysFormValue> {\n readonly fields: FormlyFieldConfig[] = dbxScheduleSelectionCalendarDateDaysFormFields();\n}\n","import { Component } from '@angular/core';\nimport { dateScheduleDayCodesFromEnabledDays, enabledDaysFromDateScheduleDayCodes } from '@dereekb/date';\nimport { HandleActionFunction } from '@dereekb/dbx-core';\nimport { DbxCalendarStore } from '@dereekb/dbx-web/calendar';\nimport { IsModifiedFunction } from '@dereekb/rxjs';\nimport { setsAreEquivalent } from '@dereekb/util';\nimport { map, shareReplay, Observable, of } from 'rxjs';\nimport { DbxScheduleSelectionCalendarDateDaysFormValue } from './calendar.schedule.selection.days.form.component';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-days',\n template: `\n <div class=\"dbx-schedule-selection-calendar-date-days\" dbxAction dbxActionAutoTrigger dbxActionEnforceModified [instantTrigger]=\"true\" [dbxActionHandler]=\"updateScheduleDays\">\n <dbx-schedule-selection-calendar-date-days-form dbxActionForm [dbxFormSource]=\"template$\" [dbxActionFormModified]=\"isFormModified\"></dbx-schedule-selection-calendar-date-days-form>\n </div>\n `\n})\nexport class DbxScheduleSelectionCalendarDateDaysComponent {\n readonly template$: Observable<DbxScheduleSelectionCalendarDateDaysFormValue> = this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map(enabledDaysFromDateScheduleDayCodes), shareReplay());\n\n readonly isFormModified: IsModifiedFunction<DbxScheduleSelectionCalendarDateDaysFormValue> = (value: DbxScheduleSelectionCalendarDateDaysFormValue) => {\n const newSetValue = new Set(dateScheduleDayCodesFromEnabledDays(value));\n return this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map((currentSet) => !setsAreEquivalent(currentSet, newSetValue)));\n };\n\n constructor(readonly dbxCalendarStore: DbxCalendarStore, readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore) {}\n\n readonly updateScheduleDays: HandleActionFunction<DbxScheduleSelectionCalendarDateDaysFormValue> = (value) => {\n this.dbxCalendarScheduleSelectionStore.setScheduleDays(new Set(dateScheduleDayCodesFromEnabledDays(value)));\n return of(true);\n };\n}\n","import { Component, OnDestroy } from '@angular/core';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-popover-content',\n template: `\n <div>\n <dbx-schedule-selection-calendar-date-range></dbx-schedule-selection-calendar-date-range>\n <dbx-schedule-selection-calendar-date-days></dbx-schedule-selection-calendar-date-days>\n </div>\n `\n})\nexport class DbxScheduleSelectionCalendarDatePopoverContentComponent implements OnDestroy {\n ngOnDestroy(): void {}\n}\n","import { Component, ElementRef, Injector } from '@angular/core';\nimport { DbxPopoverKey, AbstractPopoverDirective, DbxPopoverService } from '@dereekb/dbx-web';\nimport { NgPopoverRef } from 'ng-overlay-container';\n\nexport const DEFAULT_SCHEDULE_SELECTION_CALENDAR_DATE_POPOVER_KEY = 'calendarselection';\n\nexport interface DbxScheduleSelectionCalendarDatePopoverConfig {\n origin: ElementRef;\n injector: Injector;\n}\n\n@Component({\n template: `\n <dbx-popover-content>\n <dbx-popover-scroll-content>\n <dbx-schedule-selection-calendar-date-popover-content (close)=\"close()\"></dbx-schedule-selection-calendar-date-popover-content>\n </dbx-popover-scroll-content>\n </dbx-popover-content>\n `\n})\nexport class DbxScheduleSelectionCalendarDatePopoverComponent extends AbstractPopoverDirective<void> {\n static openPopover(popoverService: DbxPopoverService, { origin, injector }: DbxScheduleSelectionCalendarDatePopoverConfig, popoverKey?: DbxPopoverKey): NgPopoverRef<any, number> {\n return popoverService.open({\n key: popoverKey ?? DEFAULT_SCHEDULE_SELECTION_CALENDAR_DATE_POPOVER_KEY,\n origin,\n componentClass: DbxScheduleSelectionCalendarDatePopoverComponent,\n injector\n });\n }\n}\n","import { DbxScheduleSelectionCalendarDatePopoverComponent } from './calendar.schedule.selection.popover.component';\nimport { Component, ElementRef, Injector, ViewChild } from '@angular/core';\nimport { DbxPopoverService } from '@dereekb/dbx-web';\nimport { map, shareReplay } from 'rxjs';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { formatToMonthDayString } from '@dereekb/date';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-popover-button',\n template: `\n <dbx-button #buttonPopoverOrigin icon=\"date_range\" [raised]=\"true\" color=\"accent\" [text]=\"buttonText$ | async\" (buttonClick)=\"openPopover()\"></dbx-button>\n `\n})\nexport class DbxScheduleSelectionCalendarDatePopoverButtonComponent {\n @ViewChild('buttonPopoverOrigin', { read: ElementRef })\n buttonPopoverOrigin!: ElementRef;\n\n readonly buttonText$ = this.dbxCalendarScheduleSelectionStore.currentDateRange$.pipe(\n map((x) => {\n if (x?.start && x.end) {\n return `${formatToMonthDayString(x.start)} - ${formatToMonthDayString(x.end)}`;\n } else {\n return 'Pick a Date Range';\n }\n }),\n shareReplay(1)\n );\n\n constructor(readonly popoverService: DbxPopoverService, readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore, readonly injector: Injector) {}\n\n openPopover() {\n DbxScheduleSelectionCalendarDatePopoverComponent.openPopover(this.popoverService, { origin: this.buttonPopoverOrigin, injector: this.injector });\n }\n}\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CalendarMonthViewDay } from 'angular-calendar';\nimport { first } from 'rxjs';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { CalendarScheduleSelectionCellContent, CalendarScheduleSelectionMetadata } from './calendar.schedule.selection';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-cell',\n template: `\n <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\n <span>{{ text }}</span>\n `,\n host: {\n class: 'dbx-schedule-selection-calendar-cell'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DbxScheduleSelectionCalendarCellComponent {\n content: CalendarScheduleSelectionCellContent = {};\n\n get icon() {\n return this.content.icon;\n }\n\n get text() {\n return this.content.text;\n }\n\n constructor(readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore) {}\n\n @Input()\n set day(day: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>) {\n this.dbxCalendarScheduleSelectionStore.cellContentFactory$.pipe(first()).subscribe((fn) => {\n this.content = fn(day);\n });\n }\n}\n","import { Component, EventEmitter, Output, OnDestroy } from '@angular/core';\nimport { CalendarEvent, CalendarMonthViewBeforeRenderEvent, CalendarMonthViewDay } from 'angular-calendar';\nimport { map, shareReplay, Subject, first, throttleTime } from 'rxjs';\nimport { DbxCalendarEvent, DbxCalendarStore, prepareAndSortCalendarEvents } from '@dereekb/dbx-web/calendar';\nimport { DayOfWeek } from '@dereekb/util';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { CalendarScheduleSelectionDayState, CalendarScheduleSelectionMetadata } from './calendar.schedule.selection';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar',\n templateUrl: './calendar.schedule.selection.component.html',\n providers: [DbxCalendarStore]\n})\nexport class DbxScheduleSelectionCalendarComponent<T> implements OnDestroy {\n @Output()\n clickEvent = new EventEmitter<DbxCalendarEvent<T>>();\n\n // refresh any time the selected day function updates\n readonly state$ = this.dbxCalendarScheduleSelectionStore.state$;\n readonly refresh$ = this.state$.pipe(\n throttleTime(100),\n map(() => undefined)\n ) as Subject<undefined>;\n\n readonly events$ = this.calendarStore.visibleEvents$.pipe(map(prepareAndSortCalendarEvents), shareReplay(1));\n readonly viewDate$ = this.calendarStore.date$;\n\n constructor(readonly calendarStore: DbxCalendarStore<T>, readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore) {}\n\n dayClicked({ date }: { date: Date }): void {\n this.dbxCalendarScheduleSelectionStore.toggleSelectedDates(date);\n }\n\n eventClicked(action: string, event: CalendarEvent<T>): void {\n this.clickEvent.emit({ action, event });\n }\n\n beforeMonthViewRender(renderEvent: CalendarMonthViewBeforeRenderEvent): void {\n const { body }: { body: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>[] } = renderEvent;\n this.state$.pipe(first()).subscribe(({ isEnabledDay, indexFactory, isEnabledFilterDay, allowedDaysOfWeek }) => {\n body.forEach((viewDay) => {\n const { date } = viewDay;\n const i = indexFactory(date);\n const day = date.getDay();\n\n let state: CalendarScheduleSelectionDayState;\n\n if (!isEnabledFilterDay(i)) {\n viewDay.cssClass = 'cal-day-not-applicable';\n state = CalendarScheduleSelectionDayState.NOT_APPLICABLE;\n } else if (!allowedDaysOfWeek.has(day as DayOfWeek)) {\n viewDay.cssClass = 'cal-day-disabled';\n state = CalendarScheduleSelectionDayState.DISABLED;\n } else if (isEnabledDay(i)) {\n viewDay.cssClass = 'cal-day-selected';\n state = CalendarScheduleSelectionDayState.SELECTED;\n } else {\n viewDay.cssClass = 'cal-day-not-selected';\n state = CalendarScheduleSelectionDayState.NOT_SELECTED;\n }\n\n viewDay.meta = {\n state,\n i\n };\n });\n });\n }\n\n ngOnDestroy(): void {\n this.clickEvent.complete();\n }\n}\n","<dbx-calendar-base class=\"dbx-schedule-selection-calendar\">\n <ng-container controls>\n <dbx-schedule-selection-calendar-date-popover-button></dbx-schedule-selection-calendar-date-popover-button>\n </ng-container>\n <div class=\"dbx-calendar-content dbx-calendar-content-month\">\n <mwl-calendar-month-view [refresh]=\"refresh$\" [viewDate]=\"(viewDate$ | async)!\" [events]=\"(events$ | async)!\" (dayClicked)=\"dayClicked($event.day)\" (eventClicked)=\"eventClicked('Clicked', $event.event)\" (beforeViewRender)=\"beforeMonthViewRender($event)\" [cellTemplate]=\"monthDayCellTemplate\"></mwl-calendar-month-view>\n </div>\n</dbx-calendar-base>\n\n<!-- Cell -->\n<ng-template #monthDayCellTemplate let-day=\"day\" let-locale=\"locale\">\n <div class=\"cal-cell-top\">\n <span class=\"cal-day-badge\" *ngIf=\"day.badgeTotal > 0\">{{ day.badgeTotal }}</span>\n <span class=\"cal-day-number\">{{ day.date | calendarDate: 'monthViewDayNumber':locale }}</span>\n </div>\n <dbx-schedule-selection-calendar-cell [day]=\"day\"></dbx-schedule-selection-calendar-cell>\n</ng-template>\n","import { Component, Injector } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AbstractDialogDirective } from '@dereekb/dbx-web';\n\nexport interface DbxScheduleSelectionCalendarDatePopupConfig {\n injector: Injector;\n}\n\n@Component({\n template: `\n <dbx-dialog-content class=\"dbx-schedule-selection-calendar-date-dialog\">\n <dbx-dialog-content-close (close)=\"close()\"></dbx-dialog-content-close>\n <dbx-schedule-selection-calendar></dbx-schedule-selection-calendar>\n <dbx-dialog-content-footer closeText=\"Close Calendar\" (close)=\"close()\"></dbx-dialog-content-footer>\n </dbx-dialog-content>\n `\n})\nexport class DbxScheduleSelectionCalendarDateDialogComponent extends AbstractDialogDirective<void> {\n static openDialog(matDialog: MatDialog, { injector }: DbxScheduleSelectionCalendarDatePopupConfig) {\n return matDialog.open(DbxScheduleSelectionCalendarDateDialogComponent, {\n injector,\n height: 'calc(var(--vh100) * 0.9)',\n minHeight: 400,\n width: '80vw',\n minWidth: 360\n });\n }\n}\n","import { Component, Injector, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DbxScheduleSelectionCalendarDateDialogComponent } from './calendar.schedule.selection.dialog.component';\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-dialog-button',\n template: `\n <button mat-raised-button color=\"accent\" (click)=\"clickCustomize()\">{{ buttonText }}</button>\n `\n})\nexport class DbxScheduleSelectionCalendarDateDialogButtonComponent {\n @Input()\n buttonText = 'Customize';\n\n constructor(readonly matDialog: MatDialog, readonly injector: Injector) {}\n\n clickCustomize() {\n DbxScheduleSelectionCalendarDateDialogComponent.openDialog(this.matDialog, { injector: this.injector });\n }\n}\n","import { AbstractControl, FormGroup } from '@angular/forms';\nimport { CompactContextStore } from '@dereekb/dbx-web';\nimport { Component, NgZone, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { FieldTypeConfig, FormlyFieldProps } from '@ngx-formly/core';\nimport { AllOrNoneSelection, ArrayOrValue, Maybe } from '@dereekb/util';\nimport { FieldType } from '@ngx-formly/material';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay, startWith, Subscription, switchMap } from 'rxjs';\nimport { filterMaybe, ObservableOrValue, SubscriptionObject, asObservable } from '@dereekb/rxjs';\nimport { DateBlockIndex, DateOrDateRangeOrDateBlockIndexOrDateBlockRange, DateScheduleDateFilterConfig, isSameDateScheduleRange } from '@dereekb/date';\nimport { CalendarScheduleSelectionState, DbxCalendarScheduleSelectionStore } from '../../calendar.schedule.selection.store';\nimport { provideCalendarScheduleSelectionStoreIfParentIsUnavailable } from '../../calendar.schedule.selection.store.provide';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nexport interface DbxFormCalendarDateScheduleRangeFieldProps extends Pick<FormlyFieldProps, 'label' | 'description' | 'readonly' | 'required'>, Pick<CalendarScheduleSelectionState, 'computeSelectionResultRelativeToFilter' | 'initialSelectionState'> {\n appearance?: MatFormFieldAppearance;\n hideCustomize?: boolean;\n filter?: ObservableOrValue<Maybe<DateScheduleDateFilterConfig>>;\n exclusions?: ObservableOrValue<Maybe<ArrayOrValue<DateOrDateRangeOrDateBlockIndexOrDateBlockRange>>>;\n}\n\n@Component({\n template: `\n <div class=\"dbx-schedule-selection-field\">\n <dbx-schedule-selection-calendar-date-range [showCustomize]=\"showCustomize\" [required]=\"required\" [disabled]=\"isReadonlyOrDisabled\" [label]=\"label\" [hint]=\"description\">\n <dbx-schedule-selection-calendar-date-dialog-button customizeButton></dbx-schedule-selection-calendar-date-dialog-button>\n </dbx-schedule-selection-calendar-date-range>\n </div>\n `,\n providers: [provideCalendarScheduleSelectionStoreIfParentIsUnavailable()]\n})\nexport class DbxFormCalendarDateScheduleRangeFieldComponent<T extends DbxFormCalendarDateScheduleRangeFieldProps = DbxFormCalendarDateScheduleRangeFieldProps> extends FieldType<FieldTypeConfig<T>> implements OnInit, OnDestroy {\n private _syncSub = new SubscriptionObject();\n private _valueSub = new SubscriptionObject();\n private _filterSub = new SubscriptionObject();\n private _exclusionsSub = new SubscriptionObject();\n\n private _formControlObs = new BehaviorSubject<Maybe<AbstractControl>>(undefined);\n readonly formControl$ = this._formControlObs.pipe(filterMaybe());\n\n readonly value$ = this.formControl$.pipe(\n switchMap((control) => control.valueChanges.pipe(startWith(control.value))),\n shareReplay(1)\n );\n\n constructor(@Optional() readonly compact: CompactContextStore, readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore, readonly ngZone: NgZone) {\n super();\n }\n\n get formGroupName(): string {\n return this.field.key as string;\n }\n\n get formGroup(): FormGroup {\n return this.form as FormGroup;\n }\n\n get label(): Maybe<string> {\n return this.field.props?.label;\n }\n\n get description(): Maybe<string> {\n return this.props.description;\n }\n\n get isReadonlyOrDisabled() {\n return this.props.readonly || this.disabled;\n }\n\n get showCustomize() {\n return !this.props.hideCustomize;\n }\n\n get filter() {\n return this.props.filter;\n }\n\n get exclusions() {\n return this.props.exclusions;\n }\n\n get initialSelectionState() {\n return this.props.initialSelectionState;\n }\n\n get computeSelectionResultRelativeToFilter() {\n return this.props.computeSelectionResultRelativeToFilter;\n }\n\n ngOnInit(): void {\n this._formControlObs.next(this.formControl);\n\n this._syncSub.subscription = this.value$.pipe(distinctUntilChanged(isSameDateScheduleRange)).subscribe((x) => {\n this.dbxCalendarScheduleSelectionStore.setDateScheduleRangeValue(x);\n });\n\n this._valueSub.subscription = this.dbxCalendarScheduleSelectionStore.currentDateScheduleRangeValue$.subscribe((x) => {\n this.formControl.setValue(x);\n });\n\n const { filter, exclusions } = this;\n\n if (filter != null) {\n this._filterSub.subscription = this.dbxCalendarScheduleSelectionStore.setFilter(asObservable(filter)) as Subscription;\n }\n\n if (exclusions != null) {\n this._exclusionsSub.subscription = this.dbxCalendarScheduleSelectionStore.setExclusions(asObservable(exclusions)) as Subscription;\n }\n\n if (this.initialSelectionState !== undefined) {\n this.dbxCalendarScheduleSelectionStore.setInitialSelectionState(this.initialSelectionState);\n }\n\n if (this.computeSelectionResultRelativeToFilter != null) {\n this.dbxCalendarScheduleSelectionStore.setComputeSelectionResultRelativeToFilter(this.computeSelectionResultRelativeToFilter);\n }\n\n // TODO: Also add ability to set min/max dates independent of the filter\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._syncSub.destroy();\n this._valueSub.destroy();\n this._filterSub.destroy();\n this._exclusionsSub.destroy();\n this._formControlObs.complete();\n }\n}\n","import { MatDatepickerModule } from '@angular/material/datepicker';\nimport { NgModule } from '@angular/core';\nimport { CalendarDayModule, CalendarModule, CalendarWeekModule } from 'angular-calendar';\nimport { CommonModule } from '@angular/common';\nimport { DbxActionModule, DbxButtonModule, DbxDialogInteractionModule, DbxPopoverInteractionModule } from '@dereekb/dbx-web';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { DbxScheduleSelectionCalendarComponent } from './calendar.schedule.selection.component';\nimport { DbxScheduleSelectionCalendarDatePopoverButtonComponent } from './calendar.schedule.selection.popover.button.component';\nimport { DbxScheduleSelectionCalendarDateDaysComponent } from './calendar.schedule.selection.days.component';\nimport { DbxScheduleSelectionCalendarDatePopoverComponent } from './calendar.schedule.selection.popover.component';\nimport { DbxScheduleSelectionCalendarDatePopoverContentComponent } from './calendar.schedule.selection.popover.content.component';\nimport { DbxScheduleSelectionCalendarDateRangeComponent } from './calendar.schedule.selection.range.component';\nimport { DbxCalendarModule } from '@dereekb/dbx-web/calendar';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DbxScheduleSelectionCalendarDateDaysFormComponent } from './calendar.schedule.selection.days.form.component';\nimport { DbxFormlyModule, DbxFormModule } from '@dereekb/dbx-form';\nimport { DbxScheduleSelectionCalendarCellComponent } from './calendar.schedule.selection.cell.component';\nimport { DbxCalendarScheduleSelectionStoreInjectionBlockDirective } from './calendar.schedule.selection.store.provide';\nimport { DbxScheduleSelectionCalendarDateDialogComponent } from './calendar.schedule.selection.dialog.component';\nimport { DbxScheduleSelectionCalendarDateDialogButtonComponent } from './calendar.schedule.selection.dialog.button.component';\n\nconst declarations = [\n //\n DbxScheduleSelectionCalendarComponent,\n DbxScheduleSelectionCalendarDateDaysComponent,\n DbxScheduleSelectionCalendarDateDaysFormComponent,\n DbxScheduleSelectionCalendarDateRangeComponent,\n DbxScheduleSelectionCalendarDatePopoverButtonComponent,\n DbxScheduleSelectionCalendarCellComponent,\n DbxScheduleSelectionCalendarDatePopoverComponent,\n DbxScheduleSelectionCalendarDatePopoverContentComponent,\n DbxCalendarScheduleSelectionStoreInjectionBlockDirective,\n DbxScheduleSelectionCalendarDateDialogComponent,\n DbxScheduleSelectionCalendarDateDialogButtonComponent\n];\n\n@NgModule({\n imports: [\n //\n DbxActionModule,\n DbxFormModule,\n DbxFormlyModule,\n DbxCalendarModule,\n CommonModule,\n MatIconModule,\n MatButtonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatButtonToggleModule,\n DbxButtonModule,\n MatDatepickerModule,\n DbxDialogInteractionModule,\n DbxPopoverInteractionModule,\n CalendarModule,\n CalendarDayModule,\n FlexLayoutModule,\n CalendarWeekModule\n ],\n declarations,\n exports: declarations\n})\nexport class DbxFormCalendarModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DbxFormCalendarDateScheduleRangeFieldComponent } from './calendar.schedule.field.component';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { DbxTextModule } from '@dereekb/dbx-web';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DbxFormCalendarModule } from '../../calendar.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n DbxFormCalendarModule,\n MatButtonModule,\n DbxTextModule,\n FormsModule,\n ReactiveFormsModule,\n MatInputModule,\n FormlyModule.forChild({\n types: [{ name: 'date-schedule-range', component: DbxFormCalendarDateScheduleRangeFieldComponent }]\n })\n ],\n declarations: [DbxFormCalendarDateScheduleRangeFieldComponent]\n})\nexport class DbxFormDateScheduleRangeFieldModule {}\n","export * from './schedule';\n// export * from './selection';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DbxCalendarScheduleSelectionStore","i4","i6","i1","i2.DbxCalendarScheduleSelectionStore","i3","i5.DbxScheduleSelectionCalendarDateDaysFormComponent","i1.DbxScheduleSelectionCalendarDateDaysComponent","i2.DbxScheduleSelectionCalendarDateRangeComponent","i2.DbxScheduleSelectionCalendarDatePopoverContentComponent","i2","i5.DbxScheduleSelectionCalendarDatePopoverButtonComponent","i6.DbxScheduleSelectionCalendarCellComponent","i2.DbxScheduleSelectionCalendarComponent","i3.DbxScheduleSelectionCalendarDateRangeComponent","i4.DbxScheduleSelectionCalendarDateDialogButtonComponent"],"mappings":"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"}
|