@dereekb/dbx-form 9.24.5 → 9.24.6
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.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.store.d.ts +2 -2
- package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +1 -1
- package/esm2020/calendar/lib/calendar.schedule.selection.mjs +1 -1
- package/fesm2015/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-form-calendar.mjs.map +1 -1
- 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.toggle.button.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', appearance, hideCustomize, filter, timezone, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, minMaxDateRange, cellContentFactory, dialogContentConfig, closeDialogConfig } = config;\n const fieldConfig: FormlyFieldConfig = {\n ...formlyField({\n key,\n type: 'date-schedule-range',\n ...propsAndConfigForFieldConfig(config, {\n label: config.label ?? 'Schedule',\n appearance,\n hideCustomize,\n timezone,\n minMaxDateRange,\n filter,\n exclusions,\n dialogContentConfig,\n closeDialogConfig,\n computeSelectionResultRelativeToFilter,\n initialSelectionState,\n cellContentFactory\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 isInfiniteDateRange,\n copyHoursAndMinutesFromDate,\n dateTimezoneUtcNormal,\n DateTimezoneUtcNormalInstance,\n expandDateScheduleRange,\n DateBlock,\n DateBlockDurationSpan\n} from '@dereekb/date';\nimport { distinctUntilHasDifferentValues, filterMaybe } from '@dereekb/rxjs';\nimport { Maybe, TimezoneString, DecisionFunction, IterableOrValue, iterableToArray, addToSet, toggleInSet, isIndexNumberInIndexRangeFunction, MaybeMap, minAndMaxNumber, setsAreEquivalent, DayOfWeek, range, AllOrNoneSelection, unique, mergeArrays, ArrayOrValue, removeFromSet } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { startOfDay, endOfDay, isBefore } from 'date-fns';\nimport { Observable, distinctUntilChanged, map, shareReplay, switchMap, tap, first, combineLatestWith } 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 * If filter.start is provided, then the timezone is ignored, if one is present.\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 * The min/max date range. Used for restricting the min/max value. Works with the filter. The greater/lesser of the start/end dates are used if both are provided.\n */\n minMaxDateRange?: Maybe<Partial<DateRange>>;\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 * Timezone to use. OnlyInfluences the output start date.\n */\n timezone?: Maybe<TimezoneString>;\n /**\n * Current timezone normal with the current timezone.\n */\n timezoneNormal?: Maybe<DateTimezoneUtcNormalInstance>;\n /**\n * DateTimingRelativeIndexFactory\n */\n indexFactory: DateTimingRelativeIndexFactory;\n /**\n * Array of manually selected dates within the picked range. This is NOT the set of all selected indexes in terms of output.\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 toggledIndexes: 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 scheduleDays = new Set([DateScheduleDayCode.WEEKDAY, DateScheduleDayCode.WEEKEND]);\n const allowedDaysOfWeek = expandDateScheduleDayCodesToDayOfWeekSet(Array.from(scheduleDays));\n const start = startOfDay(new Date());\n const indexFactory = dateTimingRelativeIndexFactory({ start });\n const indexDayOfWeek = dateBlockDayOfWeekFactory(start);\n\n return {\n start,\n indexFactory,\n toggledIndexes: new Set(),\n scheduleDays,\n allowedDaysOfWeek,\n indexDayOfWeek,\n isEnabledFilterDay: () => true,\n isEnabledDay: () => false,\n computeSelectionResultRelativeToFilter: true,\n cellContentFactory: defaultCalendarScheduleSelectionCellContentFactory\n };\n}\n\nexport function calendarScheduleMinDate(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Maybe<Date> {\n return findMaxDate([x.filter?.start, x.minMaxDateRange?.start]);\n}\n\nexport function calendarScheduleMaxDate(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Maybe<Date> {\n return findMinDate([x.filter?.end, x.minMaxDateRange?.end]);\n}\n\nexport function calendarScheduleMinAndMaxDateRange(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Partial<DateRange> {\n return {\n start: calendarScheduleMinDate(x) || undefined,\n end: calendarScheduleMaxDate(x) || undefined\n };\n}\n\nexport function calendarScheduleStartBeingUsedFromFilter(x: Pick<CalendarScheduleSelectionState, 'filter' | 'computeSelectionResultRelativeToFilter'>) {\n return x.computeSelectionResultRelativeToFilter && x.filter?.start != null;\n}\n\n@Injectable()\nexport class DbxCalendarScheduleSelectionStore extends ComponentStore<CalendarScheduleSelectionState> {\n constructor() {\n super(initialCalendarScheduleSelectionState());\n }\n\n // MARK:\n readonly toggleSelection = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() =>\n this.nextToggleSelection$.pipe(\n first(),\n filterMaybe(),\n tap((x) => {\n this.selectAllDates(x);\n })\n )\n )\n );\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 minMaxDateRange$ = this.state$.pipe(map(calendarScheduleMinAndMaxDateRange), distinctUntilChanged(isSameDateRange), shareReplay(1));\n\n readonly minDate$ = this.minMaxDateRange$.pipe(\n map((x) => x?.start),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n readonly maxDate$ = this.minMaxDateRange$.pipe(\n map((x) => x?.end),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n\n readonly hasConfiguredMinMaxRange$ = this.minMaxDateRange$.pipe(\n map((x) => x != null && x.start != null && x.end != null),\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 /**\n * @deprecated This is not the same as the current selection value. This is the set of manually togged off dates. It will be removed in a future update.\n */\n readonly selectedDates$: Observable<Set<DateBlockIndex>> = this.state$.pipe(\n map((x) => x.toggledIndexes),\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 //\n map(calendarScheduleStartBeingUsedFromFilter),\n distinctUntilChanged(),\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 currentTimezone$: Observable<Maybe<TimezoneString>> = this.state$.pipe(\n map((x) => x.timezone),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly effectiveTimezone$: Observable<Maybe<TimezoneString>> = this.state$.pipe(\n map((x) => (!calendarScheduleStartBeingUsedFromFilter(x) && x.timezone ? x.timezone : undefined)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly effectiveTimezoneNormal$ = this.state$.pipe(\n map((x) => (!calendarScheduleStartBeingUsedFromFilter(x) && x.timezoneNormal ? x.timezoneNormal : undefined)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentSelectionValue$ = this.state$.pipe(\n map((x) => x.currentSelectionValue),\n shareReplay(1)\n );\n\n readonly currentSelectionValueDateBlockDurationSpan$: Observable<DateBlockDurationSpan<DateBlock>[]> = this.currentSelectionValue$.pipe(\n map((x) => (x ? expandDateScheduleRange(x) : [])),\n shareReplay(1)\n );\n\n readonly selectionValueSelectedIndexes$: Observable<Set<DateBlockIndex>> = this.currentSelectionValueDateBlockDurationSpan$.pipe(\n map((x) => new Set(x.map((y) => y.i))),\n distinctUntilHasDifferentValues(),\n shareReplay(1)\n );\n\n readonly selectionValue$ = this.currentSelectionValue$.pipe(filterMaybe(), shareReplay(1));\n\n readonly currentSelectionValueWithTimezone$ = this.currentSelectionValue$.pipe(\n combineLatestWith(this.effectiveTimezoneNormal$),\n map(([x, timezoneNormal]) => {\n if (x && timezoneNormal) {\n x = {\n dateScheduleRange: {\n ...x.dateScheduleRange,\n start: timezoneNormal.targetDateToSystemDate(x.dateScheduleRange.start),\n end: timezoneNormal.targetDateToSystemDate(x.dateScheduleRange.end)\n }\n } as CalendarScheduleSelectionValue;\n }\n\n return x;\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly selectionValueWithTimezone$ = this.currentSelectionValueWithTimezone$.pipe(filterMaybe(), shareReplay(1));\n\n readonly selectionValueWithTimezoneDateBlockDurationSpan$: Observable<DateBlockDurationSpan<DateBlock>[]> = this.selectionValueWithTimezone$.pipe(\n map((x) => expandDateScheduleRange(x)),\n shareReplay(1)\n );\n\n readonly nextToggleSelection$: Observable<Maybe<AllOrNoneSelection>> = this.hasConfiguredMinMaxRange$.pipe(\n switchMap((hasConfiguredMinMaxRange) => {\n let obs: Observable<Maybe<AllOrNoneSelection>>;\n\n if (hasConfiguredMinMaxRange) {\n obs = this.currentSelectionValue$.pipe(map((x) => (x ? 'none' : 'all')));\n } else {\n obs = this.currentSelectionValue$.pipe(map((x) => (x ? 'none' : undefined)));\n }\n\n return obs;\n }),\n shareReplay(1)\n );\n\n readonly currentDateScheduleRangeValue$ = this.currentSelectionValueWithTimezone$.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 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.toggledIndexes.size > 0),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n // MARK: State Changes\n readonly setMinMaxDateRange = this.updater(updateStateWithMinMaxDateRange);\n readonly setFilter = this.updater(updateStateWithFilter);\n readonly setExclusions = this.updater(updateStateWithExclusions);\n readonly setComputeSelectionResultRelativeToFilter = this.updater(updateStateWithComputeSelectionResultRelativeToFilter);\n readonly clearFilter = this.updater((state) => updateStateWithFilter(state, undefined));\n\n readonly setTimezone = this.updater(updateStateWithTimezoneValue);\n readonly setInputRange = this.updater(updateStateWithChangedRange);\n\n // NOTE: Selected dates are NOT selected indexes. They are the internal selected dates that are excluded from the selection.\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 // NOTE: Selected indexes are the typical/expected indexes that are selected or not.\n readonly setSelectedIndexes = this.updater((state, set: IterableOrValue<DateOrDateBlockIndex>) => updateStateWithChangedDates(state, { set, invertSetBehavior: true }));\n\n readonly selectAllDates = this.updater((state, selectAll: AllOrNoneSelection = 'all') => updateStateWithChangedDates(state, { selectAll }));\n readonly setInitialSelectionState = this.updater(updateStateWithInitialSelectionState);\n\n readonly setScheduleDays = this.updater(updateStateWithChangedScheduleDays);\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 { toggledIndexes } = state;\n\n if (toggledIndexes.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 updateStateWithMinMaxDateRange(state: CalendarScheduleSelectionState, minMaxDateRange: Maybe<Partial<DateRange>>): CalendarScheduleSelectionState {\n state = { ...state };\n\n if (minMaxDateRange != null && !isInfiniteDateRange(minMaxDateRange)) {\n state.minMaxDateRange = {\n start: minMaxDateRange.start != null ? startOfDay(minMaxDateRange.start) : undefined,\n end: minMaxDateRange.end != null ? endOfDay(minMaxDateRange.end) : undefined\n };\n } else {\n delete state.minMaxDateRange;\n }\n\n return updateStateWithFilter(state, state.filter);\n}\n\nexport function updateStateWithFilter(state: CalendarScheduleSelectionState, inputFilter: Maybe<DateScheduleDateFilterConfig>): CalendarScheduleSelectionState {\n const { computedExclusions: exclusions, minMaxDateRange } = state;\n\n let isEnabledFilterDay: Maybe<DecisionFunction<DateOrDateBlockIndex>> = () => true;\n let filter: Maybe<DateScheduleDateFilterConfig> = null;\n\n // create the filter using inputFilter, exclusions, and minMaxDateRange\n if (inputFilter || exclusions?.length || minMaxDateRange) {\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 if (minMaxDateRange) {\n enabledFilter.minMaxDateRange = minMaxDateRange;\n enabledFilter.setStartAsMinDate = filter?.start ? true : false; // If a start date is set, then it becomes the floor.\n }\n\n /**\n * If the input filter has a start date, use that as the relative start to ensure indexes are compared the same,\n * otherwise use the state's start. This is important for the index calculations.\n */\n enabledFilter.start = inputFilter?.start ?? state.start;\n\n // create the filter\n isEnabledFilterDay = dateScheduleDateFilter(enabledFilter);\n }\n\n state = { ...state, filter, isEnabledFilterDay };\n\n // For the same reason as above, use the filter's start date as the relative start if applicable.\n if (filter && filter.start) {\n const start = filter.start;\n state.start = start;\n state.indexFactory = dateTimingRelativeIndexFactory({ start });\n state.indexDayOfWeek = dateBlockDayOfWeekFactory(start);\n }\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 updateStateWithTimezoneValue(state: CalendarScheduleSelectionState, timezone: Maybe<TimezoneString>): CalendarScheduleSelectionState {\n const { currentSelectionValue } = state;\n\n const timezoneNormal = timezone ? dateTimezoneUtcNormal({ timezone }) : undefined;\n\n if (timezoneNormal && currentSelectionValue) {\n // update the selection value to reflect the timezone changes.\n\n const { dateScheduleRange: currentDateScheduleRange } = currentSelectionValue;\n const start = timezoneNormal.targetDateToSystemDate(currentDateScheduleRange.start);\n const end = timezoneNormal.targetDateToSystemDate(currentDateScheduleRange.end);\n\n const newRange: DateScheduleRange = {\n ...currentSelectionValue.dateScheduleRange,\n start,\n end\n };\n\n return updateStateWithDateScheduleRangeValue({ ...state, timezone, timezoneNormal }, newRange);\n } else {\n return { ...state, timezone, timezoneNormal }; // no change in value\n }\n}\n\nexport function updateStateWithDateScheduleRangeValue(state: CalendarScheduleSelectionState, change: Maybe<DateScheduleRange>): CalendarScheduleSelectionState {\n const { timezoneNormal, currentSelectionValue } = state;\n const currentDateScheduleRange = currentSelectionValue?.dateScheduleRange; // current range is always in system time\n\n if (!calendarScheduleStartBeingUsedFromFilter(state) && timezoneNormal) {\n // When using timezones, always return from the start of the day. Inputs are converted to the system time and used as the start of the day.\n // Outputs remain accurate.\n\n if (change) {\n change = {\n ...change,\n start: startOfDay(timezoneNormal.systemDateToTargetDate(change.start)),\n end: startOfDay(timezoneNormal.systemDateToTargetDate(change.end))\n };\n }\n }\n\n const isSameValue = isSameDateScheduleRange(currentDateScheduleRange, 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, toggledIndexes: new Set(change.ex) };\n return updateStateWithChangedScheduleDays(finalizeNewCalendarScheduleSelectionState(nextState), expandDateScheduleDayCodes(change.w || '89'));\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 * Inverts the set date changing behavior so that the set input is treated as items that should be retained instead of excluded.\n *\n * Ignored when set is not used. Ignored for selectAll.\n */\n invertSetBehavior?: boolean;\n}\n\nexport function updateStateWithChangedDates(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionStateDatesChange): CalendarScheduleSelectionState {\n const { indexFactory, allowedDaysOfWeek, indexDayOfWeek, inputStart: currentInputStart, inputEnd: currentInputEnd, minMaxDateRange, filter } = state;\n const { start: minDate, end: maxDate } = calendarScheduleMinAndMaxDateRange(state);\n let inputStart = currentInputStart;\n let inputEnd = currentInputEnd;\n\n /**\n * This is a set of indexes that are internally \"selected\" so that they are excluded from the inputStart/inputEnd date range.\n *\n * Do not confuse this with the actual indexes that are selected.\n */\n let toggledIndexes: Set<DateBlockIndex>;\n\n function asIndexes(indexes: IterableOrValue<DateOrDateBlockIndex>): DateBlockIndex[] {\n return iterableToArray(indexes).map(indexFactory);\n }\n\n if (change.reset || change.selectAll != null || change.set != null) {\n let set: Maybe<IterableOrValue<DateOrDateBlockIndex>> = change.set ?? [];\n const selectAll: Maybe<AllOrNoneSelection> = change.reset === true ? state.initialSelectionState : change.selectAll;\n\n switch (selectAll) {\n case 'all':\n if (minDate != null && maxDate != null) {\n inputStart = minDate;\n inputEnd = maxDate;\n set = [];\n }\n break;\n case 'none':\n inputStart = null;\n inputEnd = null;\n set = [];\n break;\n }\n\n toggledIndexes = new Set(asIndexes(set));\n\n if (change.invertSetBehavior && minDate && maxDate && !selectAll) {\n const minIndex = indexFactory(minDate);\n const maxIndex = indexFactory(maxDate);\n\n inputStart = minDate;\n inputEnd = maxDate;\n toggledIndexes = new Set(range(minIndex, maxIndex + 1).filter((x) => !toggledIndexes.has(x)));\n }\n } else {\n toggledIndexes = new Set(state.toggledIndexes);\n\n if (change.toggle) {\n const allowedToToggle = asIndexes(change.toggle).filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));\n toggleInSet(toggledIndexes, allowedToToggle);\n }\n\n let addToExclusion: Maybe<IterableOrValue<DateOrDateBlockIndex>>;\n let removeFromExclusion: Maybe<IterableOrValue<DateOrDateBlockIndex>>;\n\n if (change.add) {\n if (change.invertSetBehavior) {\n addToExclusion = change.add;\n } else {\n removeFromExclusion = change.add;\n }\n }\n\n if (change.remove) {\n if (change.invertSetBehavior) {\n removeFromExclusion = change.remove;\n } else {\n addToExclusion = change.remove;\n }\n }\n\n if (addToExclusion) {\n removeFromSet(toggledIndexes, asIndexes(addToExclusion));\n }\n\n if (removeFromExclusion) {\n addToSet(toggledIndexes, asIndexes(removeFromExclusion));\n }\n }\n\n const nextState = { ...state, inputStart, inputEnd, toggledIndexes };\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, toggledIndexes: 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, toggledIndexes: new Set(), inputStart: null, inputEnd: null });\n}\n\nexport function updateStateWithChangedRange(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionInputDateRange): CalendarScheduleSelectionState {\n const { inputStart: currentInputStart, inputEnd: currentInputEnd, indexFactory, minMaxDateRange } = state;\n const { start: minDate, end: maxDate }: Partial<DateRange> = minMaxDateRange ?? {};\n\n const inputStart: Date = startOfDay(change.inputStart);\n const inputEnd: Date = endOfDay(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.toggledIndexes);\n const isInCurrentRange = isIndexNumberInIndexRangeFunction({ minIndex, maxIndex });\n const excludedIndexesInNewRange = currentIndexes.filter(isInCurrentRange);\n const toggledIndexes = new Set(excludedIndexesInNewRange);\n\n const nextState = { ...state, toggledIndexes, 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.toggledIndexes.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: rangeEnd, excluded: allExcluded, dateBlockRange } = rangeAndExclusion;\n let filterOffsetExcludedRange: DateBlockIndex[] = [];\n let indexOffset = dateBlockRange.i;\n\n let start = rangeStart;\n let end = rangeEnd;\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 if (filter?.end) {\n end = copyHoursAndMinutesFromDate(end, filter.end);\n }\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 // Always ensure the end is after or equal to the start.\n if (isBefore(end, start)) {\n end = start; // end is start\n }\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 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 enabledExclusionIndexes = Array.from(state.toggledIndexes).filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));\n const minAndMaxSelectedValues = minAndMaxNumber(enabledExclusionIndexes);\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, OnInit } from '@angular/core';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { DbxCalendarStore } from '@dereekb/dbx-web/calendar';\nimport { FormGroup, FormControl, AbstractControl } from '@angular/forms';\nimport { Maybe } from '@dereekb/util';\nimport { switchMap, throttleTime, distinctUntilChanged, filter, BehaviorSubject, startWith, Observable, of, map, shareReplay } from 'rxjs';\nimport { isSameDateDay } from '@dereekb/date';\nimport { MatFormFieldDefaultOptions, MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\nimport { ErrorStateMatcher } from '@angular/material/core';\n\ninterface RangeValue {\n start?: Maybe<Date>;\n end?: Maybe<Date>;\n}\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-range',\n templateUrl: './calendar.schedule.selection.range.component.html'\n})\nexport class DbxScheduleSelectionCalendarDateRangeComponent implements OnInit, OnDestroy {\n private _required = new BehaviorSubject<boolean>(false);\n\n readonly required$ = this._required.asObservable();\n readonly timezone$ = this.dbxCalendarScheduleSelectionStore.currentTimezone$;\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 private _pickerOpened = new BehaviorSubject<boolean>(false);\n\n private _requiredSub = new SubscriptionObject();\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 errorStateMatcher: ErrorStateMatcher = {\n isErrorState: (control: AbstractControl | null, form) => {\n if (control) {\n return (control.invalid && (control.dirty || control.touched)) || (control.touched && this.range.invalid);\n } else {\n return false;\n }\n }\n };\n\n readonly minDate$ = this.dbxCalendarScheduleSelectionStore.minDate$;\n readonly maxDate$ = this.dbxCalendarScheduleSelectionStore.maxDate$;\n readonly timezoneReleventDate$ = this.dbxCalendarScheduleSelectionStore.currentDateRange$.pipe(\n map((currentDateRange) => {\n return currentDateRange ? currentDateRange.start ?? currentDateRange.end : undefined ?? new Date();\n }),\n shareReplay(1)\n );\n\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.currentInputRange$.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<RangeValue>;\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 // add a required validator when needed\n this._requiredSub.subscription = this._required.subscribe((x) => {\n const validators = x\n ? [\n (control: AbstractControl) => {\n const range = control.value;\n\n if (!range || !range.start || !range.end) {\n return { required: true };\n }\n\n return null;\n }\n ]\n : [];\n\n this.range.setValidators(validators);\n });\n }\n\n ngOnDestroy(): void {\n this._required.complete();\n this._pickerOpened.complete();\n this._requiredSub.destroy();\n this._syncSub.destroy();\n this._valueSub.destroy();\n }\n\n @Input()\n get required() {\n return this._required.value;\n }\n\n set required(required: boolean) {\n this._required.next(required);\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$ | async\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <span *ngIf=\"timezone$ | async\" class=\"dbx-flex-bar dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezone$ | async | timezoneAbbreviation: (timezoneReleventDate$ | async) }}</span>\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.hasError('required')\">Date range is required</mat-error>\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-error *ngIf=\"range.controls.start.hasError('matDatepickerMin')\">Start date is too early</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matDatepickerMin')\">End date is too early.</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matDatepickerMax')\">Start date is too late.</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matDatepickerMax')\">End date is too late</mat-error>\n <mat-hint>{{ hint }}</mat-hint>\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 } 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 {}\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></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, Injector } from '@angular/core';\nimport { DbxPopoverService } from '@dereekb/dbx-web';\nimport { map, shareReplay } from 'rxjs';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { DbxButtonDisplayContent } from '@dereekb/dbx-core';\n\n/**\n * Toggle button for selecting and clearing the current selection.\n */\n@Component({\n selector: 'dbx-schedule-selection-calendar-selection-toggle-button',\n template: `\n <dbx-button [disabled]=\"disableButton$ | async\" [buttonDisplay]=\"buttonDisplay$ | async\" [raised]=\"true\" (buttonClick)=\"toggleSelection()\"></dbx-button>\n `\n})\nexport class DbxScheduleSelectionCalendarSelectionToggleButtonComponent {\n readonly disableButton$ = this.dbxCalendarScheduleSelectionStore.nextToggleSelection$.pipe(map((x) => !x));\n\n readonly buttonDisplay$ = this.dbxCalendarScheduleSelectionStore.nextToggleSelection$.pipe(\n map((x) => {\n let buttonDisplay: DbxButtonDisplayContent;\n\n switch (x) {\n case 'all':\n buttonDisplay = {\n icon: 'select_all',\n text: 'Select All'\n };\n break;\n default:\n case 'none':\n buttonDisplay = {\n icon: 'clear',\n text: 'Clear Selection'\n };\n break;\n }\n\n return buttonDisplay;\n }),\n shareReplay(1)\n );\n\n constructor(readonly popoverService: DbxPopoverService, readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore, readonly injector: Injector) {}\n\n toggleSelection() {\n this.dbxCalendarScheduleSelectionStore.toggleSelection();\n }\n}\n","import { Component, EventEmitter, Output, OnDestroy, Input, OnInit } from '@angular/core';\nimport { CalendarEvent, CalendarMonthViewBeforeRenderEvent, CalendarMonthViewDay } from 'angular-calendar';\nimport { map, shareReplay, Subject, first, throttleTime, BehaviorSubject, distinctUntilChanged, Observable, combineLatest, switchMap } from 'rxjs';\nimport { DbxCalendarEvent, DbxCalendarStore, prepareAndSortCalendarEvents } from '@dereekb/dbx-web/calendar';\nimport { DayOfWeek, Maybe } from '@dereekb/util';\nimport { CalendarScheduleSelectionState, DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { CalendarScheduleSelectionDayState, CalendarScheduleSelectionMetadata } from './calendar.schedule.selection';\nimport { DbxInjectionComponentConfig, switchMapDbxInjectionComponentConfig } from '@dereekb/dbx-core';\nimport { ObservableOrValue, ObservableOrValueGetter, asObservable, asObservableFromGetter } from '@dereekb/rxjs';\nimport { DbxScheduleSelectionCalendarDatePopoverButtonComponent } from './calendar.schedule.selection.popover.button.component';\n\nexport interface DbxScheduleSelectionCalendarComponentConfig {\n /**\n * Whether or not to show the clear selection button. Defaults to `true`.\n */\n readonly showClearSelectionButton?: boolean;\n /**\n * Configuration for displaying a custom selection button. When null/undefined/true is passed, will show the default DbxScheduleSelectionCalendarDatePopoverButtonComponent.\n */\n readonly buttonInjectionConfig?: Maybe<ObservableOrValueGetter<Maybe<DbxInjectionComponentConfig<any> | boolean>>>;\n /**\n * Customize day function. When a new function is piped through the calendar is refreshed.\n */\n readonly customizeDay?: Maybe<ObservableOrValue<Maybe<DbxScheduleSelectionCalendarBeforeMonthViewRenderModifyDayFunction>>>;\n /**\n * Optional full control over the beforeMonthViewRender\n */\n readonly beforeMonthViewRenderFunctionFactory?: Maybe<ObservableOrValue<DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory>>;\n}\n\nexport type DbxScheduleSelectionCalendarBeforeMonthViewRenderModifyDayFunction = (viewDay: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>, state: CalendarScheduleSelectionState) => void;\n\nexport type DbxScheduleSelectionCalendarBeforeMonthViewRenderFunction = (renderEvent: CalendarMonthViewBeforeRenderEvent) => void;\n\nexport type DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory = (state: Observable<CalendarScheduleSelectionState>) => DbxScheduleSelectionCalendarBeforeMonthViewRenderFunction;\n\nexport function dbxScheduleSelectionCalendarBeforeMonthViewRenderFactory(inputModifyFn?: Maybe<DbxScheduleSelectionCalendarBeforeMonthViewRenderModifyDayFunction>): DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory {\n const modifyFn = inputModifyFn || (() => {});\n\n return (state$: Observable<CalendarScheduleSelectionState>) => {\n return (renderEvent: CalendarMonthViewBeforeRenderEvent) => {\n const { body }: { body: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>[] } = renderEvent;\n\n // use latest/current state\n state$.pipe(first()).subscribe((calendarScheduleState: CalendarScheduleSelectionState) => {\n const { isEnabledDay, indexFactory, isEnabledFilterDay, allowedDaysOfWeek } = calendarScheduleState;\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 const meta = {\n state,\n i\n };\n\n viewDay.meta = meta;\n\n modifyFn(viewDay, calendarScheduleState);\n });\n });\n };\n };\n}\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 OnInit, OnDestroy {\n private _config = new BehaviorSubject<DbxScheduleSelectionCalendarComponentConfig>({});\n\n readonly showClearSelectionButton$ = this._config.pipe(\n map((config) => config.showClearSelectionButton ?? true),\n distinctUntilChanged()\n );\n\n readonly datePopoverButtonInjectionConfig$: Observable<Maybe<DbxInjectionComponentConfig<any>>> = this._config.pipe(\n map((x) => x.buttonInjectionConfig),\n switchMapDbxInjectionComponentConfig(DbxScheduleSelectionCalendarDatePopoverButtonComponent),\n shareReplay(1)\n );\n\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\n readonly beforeMonthViewRender$ = this._config.pipe(\n switchMap((x) => {\n let factory: Observable<DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory>;\n\n if (x.beforeMonthViewRenderFunctionFactory) {\n factory = asObservable(x.beforeMonthViewRenderFunctionFactory);\n } else {\n factory = asObservable(x.customizeDay).pipe(map((x) => dbxScheduleSelectionCalendarBeforeMonthViewRenderFactory(x)));\n }\n\n return factory.pipe(map((x) => x(this.state$)));\n }),\n shareReplay(1)\n );\n\n readonly refresh$ = combineLatest([this.state$, this.beforeMonthViewRender$]).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 ngOnInit(): void {\n this.calendarStore.setNavigationRangeLimit(this.dbxCalendarScheduleSelectionStore.minMaxDateRange$); // set navigation limit to the min/max allowed dates.\n this.calendarStore.setShowPageButtons(true);\n }\n\n ngOnDestroy(): void {\n this.clickEvent.complete();\n this._config.complete();\n }\n\n @Input()\n get config() {\n return this._config.value;\n }\n\n set config(config: Maybe<DbxScheduleSelectionCalendarComponentConfig>) {\n this._config.next(config ?? {});\n }\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 this.beforeMonthViewRender$.pipe(first()).subscribe((x) => {\n x(renderEvent);\n });\n }\n}\n","<dbx-calendar-base class=\"dbx-schedule-selection-calendar\">\n <ng-container controls>\n <ng-container *ngIf=\"showClearSelectionButton$ | async\">\n <dbx-schedule-selection-calendar-selection-toggle-button></dbx-schedule-selection-calendar-selection-toggle-button>\n <dbx-button-spacer></dbx-button-spacer>\n </ng-container>\n <dbx-injection [config]=\"datePopoverButtonInjectionConfig$ | async\"></dbx-injection>\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, InjectionToken, Injector } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AbstractDialogDirective, DbxDialogContentConfig, DbxDialogContentFooterConfig, sanitizeDbxDialogContentConfig } from '@dereekb/dbx-web';\nimport { KeyValueTypleValueFilter, Maybe, cssClassesSet, mergeObjects, spaceSeparatedCssClasses } from '@dereekb/util';\n\n/**\n * Token used to configure the default DbxDialogContentFooterConfig for DbxScheduleSelectionCalendarDateDialogComponent.\n *\n * @deprecated use DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CONTENT_CONFIG_TOKEN instead.\n */\nexport const DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CLOSE_CONFIG_TOKEN = new InjectionToken('DbxScheduleSelectionCalendarDatePopupCloseConfig');\n\n/**\n * Token used to configure the default DbxScheduleSelectionCalendarDatePopupConfig for DbxScheduleSelectionCalendarDateDialogComponent.\n */\nexport const DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CONTENT_CONFIG_TOKEN = new InjectionToken('DbxScheduleSelectionCalendarDatePopupContentConfig');\n\nexport interface DbxScheduleSelectionCalendarDatePopupContentConfig {\n closeConfig?: DbxDialogContentFooterConfig;\n dialogConfig?: DbxDialogContentConfig;\n}\n\nexport interface DbxScheduleSelectionCalendarDatePopupConfig {\n injector: Injector;\n contentConfig?: Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>;\n /**\n * @deprecated use contentConfig instead.\n */\n closeConfig?: Maybe<DbxDialogContentFooterConfig>;\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 [config]=\"closeConfig\" (close)=\"close()\"></dbx-dialog-content-footer>\n </dbx-dialog-content>\n `\n})\nexport class DbxScheduleSelectionCalendarDateDialogComponent extends AbstractDialogDirective<void, DbxScheduleSelectionCalendarDatePopupConfig> {\n get contentConfig() {\n return this.data.contentConfig;\n }\n\n get closeConfig() {\n return this.contentConfig?.closeConfig;\n }\n\n static openDialog(matDialog: MatDialog, config: DbxScheduleSelectionCalendarDatePopupConfig) {\n const { injector, contentConfig: inputContentConfig, closeConfig: inputCloseConfig } = config;\n\n const defaultCloseConfig = injector.get<Maybe<DbxDialogContentFooterConfig>>(DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CLOSE_CONFIG_TOKEN, null);\n const defaultContentConfig = injector.get<Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>>(DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CONTENT_CONFIG_TOKEN, null);\n\n const contentConfig = mergeObjects([defaultContentConfig, inputContentConfig], KeyValueTypleValueFilter.NULL);\n const closeConfig = mergeObjects([defaultCloseConfig, contentConfig?.closeConfig, inputCloseConfig], KeyValueTypleValueFilter.NULL);\n contentConfig.closeConfig = closeConfig;\n\n return matDialog.open(DbxScheduleSelectionCalendarDateDialogComponent, {\n height: 'calc(var(--vh100) * 0.9)',\n width: '80vw',\n minHeight: 400,\n minWidth: 360,\n ...sanitizeDbxDialogContentConfig(contentConfig.dialogConfig),\n injector,\n data: {\n config,\n contentConfig\n }\n });\n }\n}\n","import { Component, Injector, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DbxScheduleSelectionCalendarDateDialogComponent, DbxScheduleSelectionCalendarDatePopupContentConfig } from './calendar.schedule.selection.dialog.component';\nimport { DbxDialogContentFooterConfig } from '@dereekb/dbx-web';\nimport { Maybe } from '@dereekb/util';\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 @Input()\n contentConfig?: Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>;\n\n /**\n * @deprecated use contentConfig instead.\n */\n @Input()\n closeConfig?: Maybe<DbxDialogContentFooterConfig>;\n\n constructor(readonly matDialog: MatDialog, readonly injector: Injector) {}\n\n clickCustomize() {\n DbxScheduleSelectionCalendarDateDialogComponent.openDialog(this.matDialog, { injector: this.injector, contentConfig: this.contentConfig, closeConfig: this.closeConfig });\n }\n}\n","import { AbstractControl, FormGroup } from '@angular/forms';\nimport { CompactContextStore, DbxDialogContentFooterConfig } from '@dereekb/dbx-web';\nimport { Component, NgZone, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { FieldTypeConfig, FormlyFieldProps } from '@ngx-formly/core';\nimport { 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 { DateOrDateRangeOrDateBlockIndexOrDateBlockRange, DateRange, DateScheduleDateFilterConfig, TimezoneString, 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';\nimport { DbxScheduleSelectionCalendarDatePopupContentConfig } from '../../calendar.schedule.selection.dialog.component';\n\nexport interface DbxFormCalendarDateScheduleRangeFieldProps extends Pick<FormlyFieldProps, 'label' | 'description' | 'readonly' | 'required'>, Pick<CalendarScheduleSelectionState, 'computeSelectionResultRelativeToFilter' | 'initialSelectionState'>, Partial<Pick<CalendarScheduleSelectionState, 'cellContentFactory'>> {\n appearance?: MatFormFieldAppearance;\n hideCustomize?: boolean;\n /**\n * (Optional) Timezone to use for the start date.\n */\n timezone?: ObservableOrValue<Maybe<TimezoneString>>;\n /**\n * Optional min/max date range to filter on. Works in conjuction with the filter.\n */\n minMaxDateRange?: ObservableOrValue<Maybe<Partial<DateRange>>>;\n filter?: ObservableOrValue<Maybe<DateScheduleDateFilterConfig>>;\n exclusions?: ObservableOrValue<Maybe<ArrayOrValue<DateOrDateRangeOrDateBlockIndexOrDateBlockRange>>>;\n /**\n * Custom close dialog config for the popup\n *\n * @deprecated Use dialogContentConfig instead.\n */\n closeDialogConfig?: Maybe<DbxDialogContentFooterConfig>;\n /**\n * Custom dialog content config for the popup\n */\n dialogContentConfig?: Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>;\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 [contentConfig]=\"dialogContentConfig\" [closeConfig]=\"closeDialogConfig\" 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 _timezoneSub = new SubscriptionObject();\n private _minMaxDateRangeSub = 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 minMaxDateRange() {\n return this.props.minMaxDateRange;\n }\n\n get filter() {\n return this.props.filter;\n }\n\n get exclusions() {\n return this.props.exclusions;\n }\n\n get timezone() {\n return this.props.timezone;\n }\n\n get initialSelectionState() {\n return this.props.initialSelectionState;\n }\n\n get computeSelectionResultRelativeToFilter() {\n return this.props.computeSelectionResultRelativeToFilter;\n }\n\n get closeDialogConfig() {\n return this.props.closeDialogConfig;\n }\n\n get dialogContentConfig() {\n return this.props.dialogContentConfig;\n }\n\n get cellContentFactory() {\n return this.props.cellContentFactory;\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 { timezone, minMaxDateRange, filter, exclusions } = this;\n\n if (filter != null) {\n this._filterSub.subscription = this.dbxCalendarScheduleSelectionStore.setFilter(asObservable(filter)) as Subscription;\n }\n\n if (minMaxDateRange != null) {\n this._minMaxDateRangeSub.subscription = this.dbxCalendarScheduleSelectionStore.setMinMaxDateRange(asObservable(minMaxDateRange)) as Subscription;\n }\n\n if (exclusions != null) {\n this._exclusionsSub.subscription = this.dbxCalendarScheduleSelectionStore.setExclusions(asObservable(exclusions)) as Subscription;\n }\n\n if (timezone != null) {\n this.dbxCalendarScheduleSelectionStore.setTimezone(asObservable(this.timezone));\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 if (this.cellContentFactory != null) {\n this.dbxCalendarScheduleSelectionStore.setCellContentFactory(this.cellContentFactory);\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._syncSub.destroy();\n this._valueSub.destroy();\n this._filterSub.destroy();\n this._timezoneSub.destroy();\n this._minMaxDateRangeSub.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';\nimport { DbxScheduleSelectionCalendarSelectionToggleButtonComponent } from './calendar.schedule.selection.toggle.button.component';\nimport { DbxDatePipeModule, DbxInjectionComponentModule } from '@dereekb/dbx-core';\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 DbxScheduleSelectionCalendarSelectionToggleButtonComponent\n];\n\n@NgModule({\n imports: [\n //\n DbxInjectionComponentModule,\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 DbxDatePipeModule\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","i6","i8","i1","i2.DbxCalendarScheduleSelectionStore","i3","i4","i5.DbxScheduleSelectionCalendarDateDaysFormComponent","i1.DbxScheduleSelectionCalendarDateDaysComponent","i2.DbxScheduleSelectionCalendarDateRangeComponent","i2.DbxScheduleSelectionCalendarDatePopoverContentComponent","i2","i5","i7.DbxScheduleSelectionCalendarCellComponent","i8.DbxScheduleSelectionCalendarSelectionToggleButtonComponent","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.toggle.button.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', appearance, hideCustomize, filter, timezone, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, minMaxDateRange, cellContentFactory, dialogContentConfig, closeDialogConfig } = config;\n const fieldConfig: FormlyFieldConfig = {\n ...formlyField({\n key,\n type: 'date-schedule-range',\n ...propsAndConfigForFieldConfig(config, {\n label: config.label ?? 'Schedule',\n appearance,\n hideCustomize,\n timezone,\n minMaxDateRange,\n filter,\n exclusions,\n dialogContentConfig,\n closeDialogConfig,\n computeSelectionResultRelativeToFilter,\n initialSelectionState,\n cellContentFactory\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<M extends CalendarScheduleSelectionMetadata = CalendarScheduleSelectionMetadata> = FactoryWithRequiredInput<CalendarScheduleSelectionCellContent, CalendarMonthViewDay<M>>;\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 isInfiniteDateRange,\n copyHoursAndMinutesFromDate,\n dateTimezoneUtcNormal,\n DateTimezoneUtcNormalInstance,\n expandDateScheduleRange,\n DateBlock,\n DateBlockDurationSpan\n} from '@dereekb/date';\nimport { distinctUntilHasDifferentValues, filterMaybe } from '@dereekb/rxjs';\nimport { Maybe, TimezoneString, DecisionFunction, IterableOrValue, iterableToArray, addToSet, toggleInSet, isIndexNumberInIndexRangeFunction, MaybeMap, minAndMaxNumber, setsAreEquivalent, DayOfWeek, range, AllOrNoneSelection, unique, mergeArrays, ArrayOrValue, removeFromSet } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { startOfDay, endOfDay, isBefore } from 'date-fns';\nimport { Observable, distinctUntilChanged, map, shareReplay, switchMap, tap, first, combineLatestWith } 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 * If filter.start is provided, then the timezone is ignored, if one is present.\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 * The min/max date range. Used for restricting the min/max value. Works with the filter. The greater/lesser of the start/end dates are used if both are provided.\n */\n minMaxDateRange?: Maybe<Partial<DateRange>>;\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 * Timezone to use. OnlyInfluences the output start date.\n */\n timezone?: Maybe<TimezoneString>;\n /**\n * Current timezone normal with the current timezone.\n */\n timezoneNormal?: Maybe<DateTimezoneUtcNormalInstance>;\n /**\n * DateTimingRelativeIndexFactory\n */\n indexFactory: DateTimingRelativeIndexFactory;\n /**\n * Array of manually selected dates within the picked range. This is NOT the set of all selected indexes in terms of output.\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 toggledIndexes: 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 scheduleDays = new Set([DateScheduleDayCode.WEEKDAY, DateScheduleDayCode.WEEKEND]);\n const allowedDaysOfWeek = expandDateScheduleDayCodesToDayOfWeekSet(Array.from(scheduleDays));\n const start = startOfDay(new Date());\n const indexFactory = dateTimingRelativeIndexFactory({ start });\n const indexDayOfWeek = dateBlockDayOfWeekFactory(start);\n\n return {\n start,\n indexFactory,\n toggledIndexes: new Set(),\n scheduleDays,\n allowedDaysOfWeek,\n indexDayOfWeek,\n isEnabledFilterDay: () => true,\n isEnabledDay: () => false,\n computeSelectionResultRelativeToFilter: true,\n cellContentFactory: defaultCalendarScheduleSelectionCellContentFactory\n };\n}\n\nexport function calendarScheduleMinDate(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Maybe<Date> {\n return findMaxDate([x.filter?.start, x.minMaxDateRange?.start]);\n}\n\nexport function calendarScheduleMaxDate(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Maybe<Date> {\n return findMinDate([x.filter?.end, x.minMaxDateRange?.end]);\n}\n\nexport function calendarScheduleMinAndMaxDateRange(x: Pick<CalendarScheduleSelectionState, 'filter' | 'minMaxDateRange'>): Partial<DateRange> {\n return {\n start: calendarScheduleMinDate(x) || undefined,\n end: calendarScheduleMaxDate(x) || undefined\n };\n}\n\nexport function calendarScheduleStartBeingUsedFromFilter(x: Pick<CalendarScheduleSelectionState, 'filter' | 'computeSelectionResultRelativeToFilter'>) {\n return x.computeSelectionResultRelativeToFilter && x.filter?.start != null;\n}\n\n@Injectable()\nexport class DbxCalendarScheduleSelectionStore extends ComponentStore<CalendarScheduleSelectionState> {\n constructor() {\n super(initialCalendarScheduleSelectionState());\n }\n\n // MARK:\n readonly toggleSelection = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() =>\n this.nextToggleSelection$.pipe(\n first(),\n filterMaybe(),\n tap((x) => {\n this.selectAllDates(x);\n })\n )\n )\n );\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 minMaxDateRange$ = this.state$.pipe(map(calendarScheduleMinAndMaxDateRange), distinctUntilChanged(isSameDateRange), shareReplay(1));\n\n readonly minDate$ = this.minMaxDateRange$.pipe(\n map((x) => x?.start),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n readonly maxDate$ = this.minMaxDateRange$.pipe(\n map((x) => x?.end),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n\n readonly hasConfiguredMinMaxRange$ = this.minMaxDateRange$.pipe(\n map((x) => x != null && x.start != null && x.end != null),\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 /**\n * @deprecated This is not the same as the current selection value. This is the set of manually togged off dates. It will be removed in a future update.\n */\n readonly selectedDates$: Observable<Set<DateBlockIndex>> = this.state$.pipe(\n map((x) => x.toggledIndexes),\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 //\n map(calendarScheduleStartBeingUsedFromFilter),\n distinctUntilChanged(),\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 currentTimezone$: Observable<Maybe<TimezoneString>> = this.state$.pipe(\n map((x) => x.timezone),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly effectiveTimezone$: Observable<Maybe<TimezoneString>> = this.state$.pipe(\n map((x) => (!calendarScheduleStartBeingUsedFromFilter(x) && x.timezone ? x.timezone : undefined)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly effectiveTimezoneNormal$ = this.state$.pipe(\n map((x) => (!calendarScheduleStartBeingUsedFromFilter(x) && x.timezoneNormal ? x.timezoneNormal : undefined)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly currentSelectionValue$ = this.state$.pipe(\n map((x) => x.currentSelectionValue),\n shareReplay(1)\n );\n\n readonly currentSelectionValueDateBlockDurationSpan$: Observable<DateBlockDurationSpan<DateBlock>[]> = this.currentSelectionValue$.pipe(\n map((x) => (x ? expandDateScheduleRange(x) : [])),\n shareReplay(1)\n );\n\n readonly selectionValueSelectedIndexes$: Observable<Set<DateBlockIndex>> = this.currentSelectionValueDateBlockDurationSpan$.pipe(\n map((x) => new Set(x.map((y) => y.i))),\n distinctUntilHasDifferentValues(),\n shareReplay(1)\n );\n\n readonly selectionValue$ = this.currentSelectionValue$.pipe(filterMaybe(), shareReplay(1));\n\n readonly currentSelectionValueWithTimezone$ = this.currentSelectionValue$.pipe(\n combineLatestWith(this.effectiveTimezoneNormal$),\n map(([x, timezoneNormal]) => {\n if (x && timezoneNormal) {\n x = {\n dateScheduleRange: {\n ...x.dateScheduleRange,\n start: timezoneNormal.targetDateToSystemDate(x.dateScheduleRange.start),\n end: timezoneNormal.targetDateToSystemDate(x.dateScheduleRange.end)\n }\n } as CalendarScheduleSelectionValue;\n }\n\n return x;\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly selectionValueWithTimezone$ = this.currentSelectionValueWithTimezone$.pipe(filterMaybe(), shareReplay(1));\n\n readonly selectionValueWithTimezoneDateBlockDurationSpan$: Observable<DateBlockDurationSpan<DateBlock>[]> = this.selectionValueWithTimezone$.pipe(\n map((x) => expandDateScheduleRange(x)),\n shareReplay(1)\n );\n\n readonly nextToggleSelection$: Observable<Maybe<AllOrNoneSelection>> = this.hasConfiguredMinMaxRange$.pipe(\n switchMap((hasConfiguredMinMaxRange) => {\n let obs: Observable<Maybe<AllOrNoneSelection>>;\n\n if (hasConfiguredMinMaxRange) {\n obs = this.currentSelectionValue$.pipe(map((x) => (x ? 'none' : 'all')));\n } else {\n obs = this.currentSelectionValue$.pipe(map((x) => (x ? 'none' : undefined)));\n }\n\n return obs;\n }),\n shareReplay(1)\n );\n\n readonly currentDateScheduleRangeValue$ = this.currentSelectionValueWithTimezone$.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 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.toggledIndexes.size > 0),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n // MARK: State Changes\n readonly setMinMaxDateRange = this.updater(updateStateWithMinMaxDateRange);\n readonly setFilter = this.updater(updateStateWithFilter);\n readonly setExclusions = this.updater(updateStateWithExclusions);\n readonly setComputeSelectionResultRelativeToFilter = this.updater(updateStateWithComputeSelectionResultRelativeToFilter);\n readonly clearFilter = this.updater((state) => updateStateWithFilter(state, undefined));\n\n readonly setTimezone = this.updater(updateStateWithTimezoneValue);\n readonly setInputRange = this.updater(updateStateWithChangedRange);\n\n // NOTE: Selected dates are NOT selected indexes. They are the internal selected dates that are excluded from the selection.\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 // NOTE: Selected indexes are the typical/expected indexes that are selected or not.\n readonly setSelectedIndexes = this.updater((state, set: IterableOrValue<DateOrDateBlockIndex>) => updateStateWithChangedDates(state, { set, invertSetBehavior: true }));\n\n readonly selectAllDates = this.updater((state, selectAll: AllOrNoneSelection = 'all') => updateStateWithChangedDates(state, { selectAll }));\n readonly setInitialSelectionState = this.updater(updateStateWithInitialSelectionState);\n\n readonly setScheduleDays = this.updater(updateStateWithChangedScheduleDays);\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 { toggledIndexes } = state;\n\n if (toggledIndexes.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 updateStateWithMinMaxDateRange(state: CalendarScheduleSelectionState, minMaxDateRange: Maybe<Partial<DateRange>>): CalendarScheduleSelectionState {\n state = { ...state };\n\n if (minMaxDateRange != null && !isInfiniteDateRange(minMaxDateRange)) {\n state.minMaxDateRange = {\n start: minMaxDateRange.start != null ? startOfDay(minMaxDateRange.start) : undefined,\n end: minMaxDateRange.end != null ? endOfDay(minMaxDateRange.end) : undefined\n };\n } else {\n delete state.minMaxDateRange;\n }\n\n return updateStateWithFilter(state, state.filter);\n}\n\nexport function updateStateWithFilter(state: CalendarScheduleSelectionState, inputFilter: Maybe<DateScheduleDateFilterConfig>): CalendarScheduleSelectionState {\n const { computedExclusions: exclusions, minMaxDateRange } = state;\n\n let isEnabledFilterDay: Maybe<DecisionFunction<DateOrDateBlockIndex>> = () => true;\n let filter: Maybe<DateScheduleDateFilterConfig> = null;\n\n // create the filter using inputFilter, exclusions, and minMaxDateRange\n if (inputFilter || exclusions?.length || minMaxDateRange) {\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 if (minMaxDateRange) {\n enabledFilter.minMaxDateRange = minMaxDateRange;\n enabledFilter.setStartAsMinDate = filter?.start ? true : false; // If a start date is set, then it becomes the floor.\n }\n\n /**\n * If the input filter has a start date, use that as the relative start to ensure indexes are compared the same,\n * otherwise use the state's start. This is important for the index calculations.\n */\n enabledFilter.start = inputFilter?.start ?? state.start;\n\n // create the filter\n isEnabledFilterDay = dateScheduleDateFilter(enabledFilter);\n }\n\n state = { ...state, filter, isEnabledFilterDay };\n\n // For the same reason as above, use the filter's start date as the relative start if applicable.\n if (filter && filter.start) {\n const start = filter.start;\n state.start = start;\n state.indexFactory = dateTimingRelativeIndexFactory({ start });\n state.indexDayOfWeek = dateBlockDayOfWeekFactory(start);\n }\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 updateStateWithTimezoneValue(state: CalendarScheduleSelectionState, timezone: Maybe<TimezoneString>): CalendarScheduleSelectionState {\n const { currentSelectionValue } = state;\n\n const timezoneNormal = timezone ? dateTimezoneUtcNormal({ timezone }) : undefined;\n\n if (timezoneNormal && currentSelectionValue) {\n // update the selection value to reflect the timezone changes.\n\n const { dateScheduleRange: currentDateScheduleRange } = currentSelectionValue;\n const start = timezoneNormal.targetDateToSystemDate(currentDateScheduleRange.start);\n const end = timezoneNormal.targetDateToSystemDate(currentDateScheduleRange.end);\n\n const newRange: DateScheduleRange = {\n ...currentSelectionValue.dateScheduleRange,\n start,\n end\n };\n\n return updateStateWithDateScheduleRangeValue({ ...state, timezone, timezoneNormal }, newRange);\n } else {\n return { ...state, timezone, timezoneNormal }; // no change in value\n }\n}\n\nexport function updateStateWithDateScheduleRangeValue(state: CalendarScheduleSelectionState, change: Maybe<DateScheduleRange>): CalendarScheduleSelectionState {\n const { timezoneNormal, currentSelectionValue } = state;\n const currentDateScheduleRange = currentSelectionValue?.dateScheduleRange; // current range is always in system time\n\n if (!calendarScheduleStartBeingUsedFromFilter(state) && timezoneNormal) {\n // When using timezones, always return from the start of the day. Inputs are converted to the system time and used as the start of the day.\n // Outputs remain accurate.\n\n if (change) {\n change = {\n ...change,\n start: startOfDay(timezoneNormal.systemDateToTargetDate(change.start)),\n end: startOfDay(timezoneNormal.systemDateToTargetDate(change.end))\n };\n }\n }\n\n const isSameValue = isSameDateScheduleRange(currentDateScheduleRange, 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, toggledIndexes: new Set(change.ex) };\n return updateStateWithChangedScheduleDays(finalizeNewCalendarScheduleSelectionState(nextState), expandDateScheduleDayCodes(change.w || '89'));\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 * Inverts the set date changing behavior so that the set input is treated as items that should be retained instead of excluded.\n *\n * Ignored when set is not used. Ignored for selectAll.\n */\n invertSetBehavior?: boolean;\n}\n\nexport function updateStateWithChangedDates(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionStateDatesChange): CalendarScheduleSelectionState {\n const { indexFactory, allowedDaysOfWeek, indexDayOfWeek, inputStart: currentInputStart, inputEnd: currentInputEnd, minMaxDateRange, filter } = state;\n const { start: minDate, end: maxDate } = calendarScheduleMinAndMaxDateRange(state);\n let inputStart = currentInputStart;\n let inputEnd = currentInputEnd;\n\n /**\n * This is a set of indexes that are internally \"selected\" so that they are excluded from the inputStart/inputEnd date range.\n *\n * Do not confuse this with the actual indexes that are selected.\n */\n let toggledIndexes: Set<DateBlockIndex>;\n\n function asIndexes(indexes: IterableOrValue<DateOrDateBlockIndex>): DateBlockIndex[] {\n return iterableToArray(indexes).map(indexFactory);\n }\n\n if (change.reset || change.selectAll != null || change.set != null) {\n let set: Maybe<IterableOrValue<DateOrDateBlockIndex>> = change.set ?? [];\n const selectAll: Maybe<AllOrNoneSelection> = change.reset === true ? state.initialSelectionState : change.selectAll;\n\n switch (selectAll) {\n case 'all':\n if (minDate != null && maxDate != null) {\n inputStart = minDate;\n inputEnd = maxDate;\n set = [];\n }\n break;\n case 'none':\n inputStart = null;\n inputEnd = null;\n set = [];\n break;\n }\n\n toggledIndexes = new Set(asIndexes(set));\n\n if (change.invertSetBehavior && minDate && maxDate && !selectAll) {\n const minIndex = indexFactory(minDate);\n const maxIndex = indexFactory(maxDate);\n\n inputStart = minDate;\n inputEnd = maxDate;\n toggledIndexes = new Set(range(minIndex, maxIndex + 1).filter((x) => !toggledIndexes.has(x)));\n }\n } else {\n toggledIndexes = new Set(state.toggledIndexes);\n\n if (change.toggle) {\n const allowedToToggle = asIndexes(change.toggle).filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));\n toggleInSet(toggledIndexes, allowedToToggle);\n }\n\n let addToExclusion: Maybe<IterableOrValue<DateOrDateBlockIndex>>;\n let removeFromExclusion: Maybe<IterableOrValue<DateOrDateBlockIndex>>;\n\n if (change.add) {\n if (change.invertSetBehavior) {\n addToExclusion = change.add;\n } else {\n removeFromExclusion = change.add;\n }\n }\n\n if (change.remove) {\n if (change.invertSetBehavior) {\n removeFromExclusion = change.remove;\n } else {\n addToExclusion = change.remove;\n }\n }\n\n if (addToExclusion) {\n removeFromSet(toggledIndexes, asIndexes(addToExclusion));\n }\n\n if (removeFromExclusion) {\n addToSet(toggledIndexes, asIndexes(removeFromExclusion));\n }\n }\n\n const nextState = { ...state, inputStart, inputEnd, toggledIndexes };\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, toggledIndexes: 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, toggledIndexes: new Set(), inputStart: null, inputEnd: null });\n}\n\nexport function updateStateWithChangedRange(state: CalendarScheduleSelectionState, change: CalendarScheduleSelectionInputDateRange): CalendarScheduleSelectionState {\n const { inputStart: currentInputStart, inputEnd: currentInputEnd, indexFactory, minMaxDateRange } = state;\n const { start: minDate, end: maxDate }: Partial<DateRange> = minMaxDateRange ?? {};\n\n const inputStart: Date = startOfDay(change.inputStart);\n const inputEnd: Date = endOfDay(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.toggledIndexes);\n const isInCurrentRange = isIndexNumberInIndexRangeFunction({ minIndex, maxIndex });\n const excludedIndexesInNewRange = currentIndexes.filter(isInCurrentRange);\n const toggledIndexes = new Set(excludedIndexesInNewRange);\n\n const nextState = { ...state, toggledIndexes, 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.toggledIndexes.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: rangeEnd, excluded: allExcluded, dateBlockRange } = rangeAndExclusion;\n let filterOffsetExcludedRange: DateBlockIndex[] = [];\n let indexOffset = dateBlockRange.i;\n\n let start = rangeStart;\n let end = rangeEnd;\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 if (filter?.end) {\n end = copyHoursAndMinutesFromDate(end, filter.end);\n }\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 // Always ensure the end is after or equal to the start.\n if (isBefore(end, start)) {\n end = start; // end is start\n }\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 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 enabledExclusionIndexes = Array.from(state.toggledIndexes).filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));\n const minAndMaxSelectedValues = minAndMaxNumber(enabledExclusionIndexes);\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, OnInit } from '@angular/core';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { DbxCalendarStore } from '@dereekb/dbx-web/calendar';\nimport { FormGroup, FormControl, AbstractControl } from '@angular/forms';\nimport { Maybe } from '@dereekb/util';\nimport { switchMap, throttleTime, distinctUntilChanged, filter, BehaviorSubject, startWith, Observable, of, map, shareReplay } from 'rxjs';\nimport { isSameDateDay } from '@dereekb/date';\nimport { MatFormFieldDefaultOptions, MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\nimport { ErrorStateMatcher } from '@angular/material/core';\n\ninterface RangeValue {\n start?: Maybe<Date>;\n end?: Maybe<Date>;\n}\n\n@Component({\n selector: 'dbx-schedule-selection-calendar-date-range',\n templateUrl: './calendar.schedule.selection.range.component.html'\n})\nexport class DbxScheduleSelectionCalendarDateRangeComponent implements OnInit, OnDestroy {\n private _required = new BehaviorSubject<boolean>(false);\n\n readonly required$ = this._required.asObservable();\n readonly timezone$ = this.dbxCalendarScheduleSelectionStore.currentTimezone$;\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 private _pickerOpened = new BehaviorSubject<boolean>(false);\n\n private _requiredSub = new SubscriptionObject();\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 errorStateMatcher: ErrorStateMatcher = {\n isErrorState: (control: AbstractControl | null, form) => {\n if (control) {\n return (control.invalid && (control.dirty || control.touched)) || (control.touched && this.range.invalid);\n } else {\n return false;\n }\n }\n };\n\n readonly minDate$ = this.dbxCalendarScheduleSelectionStore.minDate$;\n readonly maxDate$ = this.dbxCalendarScheduleSelectionStore.maxDate$;\n readonly timezoneReleventDate$ = this.dbxCalendarScheduleSelectionStore.currentDateRange$.pipe(\n map((currentDateRange) => {\n return currentDateRange ? currentDateRange.start ?? currentDateRange.end : undefined ?? new Date();\n }),\n shareReplay(1)\n );\n\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.currentInputRange$.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<RangeValue>;\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 // add a required validator when needed\n this._requiredSub.subscription = this._required.subscribe((x) => {\n const validators = x\n ? [\n (control: AbstractControl) => {\n const range = control.value;\n\n if (!range || !range.start || !range.end) {\n return { required: true };\n }\n\n return null;\n }\n ]\n : [];\n\n this.range.setValidators(validators);\n });\n }\n\n ngOnDestroy(): void {\n this._required.complete();\n this._pickerOpened.complete();\n this._requiredSub.destroy();\n this._syncSub.destroy();\n this._valueSub.destroy();\n }\n\n @Input()\n get required() {\n return this._required.value;\n }\n\n set required(required: boolean) {\n this._required.next(required);\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$ | async\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <span *ngIf=\"timezone$ | async\" class=\"dbx-flex-bar dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezone$ | async | timezoneAbbreviation: (timezoneReleventDate$ | async) }}</span>\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.hasError('required')\">Date range is required</mat-error>\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-error *ngIf=\"range.controls.start.hasError('matDatepickerMin')\">Start date is too early</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matDatepickerMin')\">End date is too early.</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matDatepickerMax')\">Start date is too late.</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matDatepickerMax')\">End date is too late</mat-error>\n <mat-hint>{{ hint }}</mat-hint>\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 } 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 {}\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></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, Injector } from '@angular/core';\nimport { DbxPopoverService } from '@dereekb/dbx-web';\nimport { map, shareReplay } from 'rxjs';\nimport { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { DbxButtonDisplayContent } from '@dereekb/dbx-core';\n\n/**\n * Toggle button for selecting and clearing the current selection.\n */\n@Component({\n selector: 'dbx-schedule-selection-calendar-selection-toggle-button',\n template: `\n <dbx-button [disabled]=\"disableButton$ | async\" [buttonDisplay]=\"buttonDisplay$ | async\" [raised]=\"true\" (buttonClick)=\"toggleSelection()\"></dbx-button>\n `\n})\nexport class DbxScheduleSelectionCalendarSelectionToggleButtonComponent {\n readonly disableButton$ = this.dbxCalendarScheduleSelectionStore.nextToggleSelection$.pipe(map((x) => !x));\n\n readonly buttonDisplay$ = this.dbxCalendarScheduleSelectionStore.nextToggleSelection$.pipe(\n map((x) => {\n let buttonDisplay: DbxButtonDisplayContent;\n\n switch (x) {\n case 'all':\n buttonDisplay = {\n icon: 'select_all',\n text: 'Select All'\n };\n break;\n default:\n case 'none':\n buttonDisplay = {\n icon: 'clear',\n text: 'Clear Selection'\n };\n break;\n }\n\n return buttonDisplay;\n }),\n shareReplay(1)\n );\n\n constructor(readonly popoverService: DbxPopoverService, readonly dbxCalendarScheduleSelectionStore: DbxCalendarScheduleSelectionStore, readonly injector: Injector) {}\n\n toggleSelection() {\n this.dbxCalendarScheduleSelectionStore.toggleSelection();\n }\n}\n","import { Component, EventEmitter, Output, OnDestroy, Input, OnInit } from '@angular/core';\nimport { CalendarEvent, CalendarMonthViewBeforeRenderEvent, CalendarMonthViewDay } from 'angular-calendar';\nimport { map, shareReplay, Subject, first, throttleTime, BehaviorSubject, distinctUntilChanged, Observable, combineLatest, switchMap } from 'rxjs';\nimport { DbxCalendarEvent, DbxCalendarStore, prepareAndSortCalendarEvents } from '@dereekb/dbx-web/calendar';\nimport { DayOfWeek, Maybe } from '@dereekb/util';\nimport { CalendarScheduleSelectionState, DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';\nimport { CalendarScheduleSelectionDayState, CalendarScheduleSelectionMetadata } from './calendar.schedule.selection';\nimport { DbxInjectionComponentConfig, switchMapDbxInjectionComponentConfig } from '@dereekb/dbx-core';\nimport { ObservableOrValue, ObservableOrValueGetter, asObservable, asObservableFromGetter } from '@dereekb/rxjs';\nimport { DbxScheduleSelectionCalendarDatePopoverButtonComponent } from './calendar.schedule.selection.popover.button.component';\n\nexport interface DbxScheduleSelectionCalendarComponentConfig {\n /**\n * Whether or not to show the clear selection button. Defaults to `true`.\n */\n readonly showClearSelectionButton?: boolean;\n /**\n * Configuration for displaying a custom selection button. When null/undefined/true is passed, will show the default DbxScheduleSelectionCalendarDatePopoverButtonComponent.\n */\n readonly buttonInjectionConfig?: Maybe<ObservableOrValueGetter<Maybe<DbxInjectionComponentConfig<any> | boolean>>>;\n /**\n * Customize day function. When a new function is piped through the calendar is refreshed.\n */\n readonly customizeDay?: Maybe<ObservableOrValue<Maybe<DbxScheduleSelectionCalendarBeforeMonthViewRenderModifyDayFunction>>>;\n /**\n * Optional full control over the beforeMonthViewRender\n */\n readonly beforeMonthViewRenderFunctionFactory?: Maybe<ObservableOrValue<DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory>>;\n}\n\nexport type DbxScheduleSelectionCalendarBeforeMonthViewRenderModifyDayFunction = (viewDay: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>, state: CalendarScheduleSelectionState) => void;\n\nexport type DbxScheduleSelectionCalendarBeforeMonthViewRenderFunction = (renderEvent: CalendarMonthViewBeforeRenderEvent) => void;\n\nexport type DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory = (state: Observable<CalendarScheduleSelectionState>) => DbxScheduleSelectionCalendarBeforeMonthViewRenderFunction;\n\nexport function dbxScheduleSelectionCalendarBeforeMonthViewRenderFactory(inputModifyFn?: Maybe<DbxScheduleSelectionCalendarBeforeMonthViewRenderModifyDayFunction>): DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory {\n const modifyFn = inputModifyFn || (() => {});\n\n return (state$: Observable<CalendarScheduleSelectionState>) => {\n return (renderEvent: CalendarMonthViewBeforeRenderEvent) => {\n const { body }: { body: CalendarMonthViewDay<CalendarScheduleSelectionMetadata>[] } = renderEvent;\n\n // use latest/current state\n state$.pipe(first()).subscribe((calendarScheduleState: CalendarScheduleSelectionState) => {\n const { isEnabledDay, indexFactory, isEnabledFilterDay, allowedDaysOfWeek } = calendarScheduleState;\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 const meta = {\n state,\n i\n };\n\n viewDay.meta = meta;\n\n modifyFn(viewDay, calendarScheduleState);\n });\n });\n };\n };\n}\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 OnInit, OnDestroy {\n private _config = new BehaviorSubject<DbxScheduleSelectionCalendarComponentConfig>({});\n\n readonly showClearSelectionButton$ = this._config.pipe(\n map((config) => config.showClearSelectionButton ?? true),\n distinctUntilChanged()\n );\n\n readonly datePopoverButtonInjectionConfig$: Observable<Maybe<DbxInjectionComponentConfig<any>>> = this._config.pipe(\n map((x) => x.buttonInjectionConfig),\n switchMapDbxInjectionComponentConfig(DbxScheduleSelectionCalendarDatePopoverButtonComponent),\n shareReplay(1)\n );\n\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\n readonly beforeMonthViewRender$ = this._config.pipe(\n switchMap((x) => {\n let factory: Observable<DbxScheduleSelectionCalendarBeforeMonthViewRenderFunctionFactory>;\n\n if (x.beforeMonthViewRenderFunctionFactory) {\n factory = asObservable(x.beforeMonthViewRenderFunctionFactory);\n } else {\n factory = asObservable(x.customizeDay).pipe(map((x) => dbxScheduleSelectionCalendarBeforeMonthViewRenderFactory(x)));\n }\n\n return factory.pipe(map((x) => x(this.state$)));\n }),\n shareReplay(1)\n );\n\n readonly refresh$ = combineLatest([this.state$, this.beforeMonthViewRender$]).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 ngOnInit(): void {\n this.calendarStore.setNavigationRangeLimit(this.dbxCalendarScheduleSelectionStore.minMaxDateRange$); // set navigation limit to the min/max allowed dates.\n this.calendarStore.setShowPageButtons(true);\n }\n\n ngOnDestroy(): void {\n this.clickEvent.complete();\n this._config.complete();\n }\n\n @Input()\n get config() {\n return this._config.value;\n }\n\n set config(config: Maybe<DbxScheduleSelectionCalendarComponentConfig>) {\n this._config.next(config ?? {});\n }\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 this.beforeMonthViewRender$.pipe(first()).subscribe((x) => {\n x(renderEvent);\n });\n }\n}\n","<dbx-calendar-base class=\"dbx-schedule-selection-calendar\">\n <ng-container controls>\n <ng-container *ngIf=\"showClearSelectionButton$ | async\">\n <dbx-schedule-selection-calendar-selection-toggle-button></dbx-schedule-selection-calendar-selection-toggle-button>\n <dbx-button-spacer></dbx-button-spacer>\n </ng-container>\n <dbx-injection [config]=\"datePopoverButtonInjectionConfig$ | async\"></dbx-injection>\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, InjectionToken, Injector } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AbstractDialogDirective, DbxDialogContentConfig, DbxDialogContentFooterConfig, sanitizeDbxDialogContentConfig } from '@dereekb/dbx-web';\nimport { KeyValueTypleValueFilter, Maybe, cssClassesSet, mergeObjects, spaceSeparatedCssClasses } from '@dereekb/util';\n\n/**\n * Token used to configure the default DbxDialogContentFooterConfig for DbxScheduleSelectionCalendarDateDialogComponent.\n *\n * @deprecated use DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CONTENT_CONFIG_TOKEN instead.\n */\nexport const DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CLOSE_CONFIG_TOKEN = new InjectionToken('DbxScheduleSelectionCalendarDatePopupCloseConfig');\n\n/**\n * Token used to configure the default DbxScheduleSelectionCalendarDatePopupConfig for DbxScheduleSelectionCalendarDateDialogComponent.\n */\nexport const DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CONTENT_CONFIG_TOKEN = new InjectionToken('DbxScheduleSelectionCalendarDatePopupContentConfig');\n\nexport interface DbxScheduleSelectionCalendarDatePopupContentConfig {\n closeConfig?: DbxDialogContentFooterConfig;\n dialogConfig?: DbxDialogContentConfig;\n}\n\nexport interface DbxScheduleSelectionCalendarDatePopupConfig {\n injector: Injector;\n contentConfig?: Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>;\n /**\n * @deprecated use contentConfig instead.\n */\n closeConfig?: Maybe<DbxDialogContentFooterConfig>;\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 [config]=\"closeConfig\" (close)=\"close()\"></dbx-dialog-content-footer>\n </dbx-dialog-content>\n `\n})\nexport class DbxScheduleSelectionCalendarDateDialogComponent extends AbstractDialogDirective<void, DbxScheduleSelectionCalendarDatePopupConfig> {\n get contentConfig() {\n return this.data.contentConfig;\n }\n\n get closeConfig() {\n return this.contentConfig?.closeConfig;\n }\n\n static openDialog(matDialog: MatDialog, config: DbxScheduleSelectionCalendarDatePopupConfig) {\n const { injector, contentConfig: inputContentConfig, closeConfig: inputCloseConfig } = config;\n\n const defaultCloseConfig = injector.get<Maybe<DbxDialogContentFooterConfig>>(DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CLOSE_CONFIG_TOKEN, null);\n const defaultContentConfig = injector.get<Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>>(DEFAULT_DBX_SCHEDULE_SELECTION_CALENDAR_DATE_POPUP_CONTENT_CONFIG_TOKEN, null);\n\n const contentConfig = mergeObjects([defaultContentConfig, inputContentConfig], KeyValueTypleValueFilter.NULL);\n const closeConfig = mergeObjects([defaultCloseConfig, contentConfig?.closeConfig, inputCloseConfig], KeyValueTypleValueFilter.NULL);\n contentConfig.closeConfig = closeConfig;\n\n return matDialog.open(DbxScheduleSelectionCalendarDateDialogComponent, {\n height: 'calc(var(--vh100) * 0.9)',\n width: '80vw',\n minHeight: 400,\n minWidth: 360,\n ...sanitizeDbxDialogContentConfig(contentConfig.dialogConfig),\n injector,\n data: {\n config,\n contentConfig\n }\n });\n }\n}\n","import { Component, Injector, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DbxScheduleSelectionCalendarDateDialogComponent, DbxScheduleSelectionCalendarDatePopupContentConfig } from './calendar.schedule.selection.dialog.component';\nimport { DbxDialogContentFooterConfig } from '@dereekb/dbx-web';\nimport { Maybe } from '@dereekb/util';\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 @Input()\n contentConfig?: Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>;\n\n /**\n * @deprecated use contentConfig instead.\n */\n @Input()\n closeConfig?: Maybe<DbxDialogContentFooterConfig>;\n\n constructor(readonly matDialog: MatDialog, readonly injector: Injector) {}\n\n clickCustomize() {\n DbxScheduleSelectionCalendarDateDialogComponent.openDialog(this.matDialog, { injector: this.injector, contentConfig: this.contentConfig, closeConfig: this.closeConfig });\n }\n}\n","import { AbstractControl, FormGroup } from '@angular/forms';\nimport { CompactContextStore, DbxDialogContentFooterConfig } from '@dereekb/dbx-web';\nimport { Component, NgZone, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { FieldTypeConfig, FormlyFieldProps } from '@ngx-formly/core';\nimport { 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 { DateOrDateRangeOrDateBlockIndexOrDateBlockRange, DateRange, DateScheduleDateFilterConfig, TimezoneString, 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';\nimport { DbxScheduleSelectionCalendarDatePopupContentConfig } from '../../calendar.schedule.selection.dialog.component';\n\nexport interface DbxFormCalendarDateScheduleRangeFieldProps extends Pick<FormlyFieldProps, 'label' | 'description' | 'readonly' | 'required'>, Pick<CalendarScheduleSelectionState, 'computeSelectionResultRelativeToFilter' | 'initialSelectionState'>, Partial<Pick<CalendarScheduleSelectionState, 'cellContentFactory'>> {\n appearance?: MatFormFieldAppearance;\n hideCustomize?: boolean;\n /**\n * (Optional) Timezone to use for the start date.\n */\n timezone?: ObservableOrValue<Maybe<TimezoneString>>;\n /**\n * Optional min/max date range to filter on. Works in conjuction with the filter.\n */\n minMaxDateRange?: ObservableOrValue<Maybe<Partial<DateRange>>>;\n filter?: ObservableOrValue<Maybe<DateScheduleDateFilterConfig>>;\n exclusions?: ObservableOrValue<Maybe<ArrayOrValue<DateOrDateRangeOrDateBlockIndexOrDateBlockRange>>>;\n /**\n * Custom close dialog config for the popup\n *\n * @deprecated Use dialogContentConfig instead.\n */\n closeDialogConfig?: Maybe<DbxDialogContentFooterConfig>;\n /**\n * Custom dialog content config for the popup\n */\n dialogContentConfig?: Maybe<DbxScheduleSelectionCalendarDatePopupContentConfig>;\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 [contentConfig]=\"dialogContentConfig\" [closeConfig]=\"closeDialogConfig\" 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 _timezoneSub = new SubscriptionObject();\n private _minMaxDateRangeSub = 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 minMaxDateRange() {\n return this.props.minMaxDateRange;\n }\n\n get filter() {\n return this.props.filter;\n }\n\n get exclusions() {\n return this.props.exclusions;\n }\n\n get timezone() {\n return this.props.timezone;\n }\n\n get initialSelectionState() {\n return this.props.initialSelectionState;\n }\n\n get computeSelectionResultRelativeToFilter() {\n return this.props.computeSelectionResultRelativeToFilter;\n }\n\n get closeDialogConfig() {\n return this.props.closeDialogConfig;\n }\n\n get dialogContentConfig() {\n return this.props.dialogContentConfig;\n }\n\n get cellContentFactory() {\n return this.props.cellContentFactory;\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 { timezone, minMaxDateRange, filter, exclusions } = this;\n\n if (filter != null) {\n this._filterSub.subscription = this.dbxCalendarScheduleSelectionStore.setFilter(asObservable(filter)) as Subscription;\n }\n\n if (minMaxDateRange != null) {\n this._minMaxDateRangeSub.subscription = this.dbxCalendarScheduleSelectionStore.setMinMaxDateRange(asObservable(minMaxDateRange)) as Subscription;\n }\n\n if (exclusions != null) {\n this._exclusionsSub.subscription = this.dbxCalendarScheduleSelectionStore.setExclusions(asObservable(exclusions)) as Subscription;\n }\n\n if (timezone != null) {\n this.dbxCalendarScheduleSelectionStore.setTimezone(asObservable(this.timezone));\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 if (this.cellContentFactory != null) {\n this.dbxCalendarScheduleSelectionStore.setCellContentFactory(this.cellContentFactory);\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._syncSub.destroy();\n this._valueSub.destroy();\n this._filterSub.destroy();\n this._timezoneSub.destroy();\n this._minMaxDateRangeSub.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';\nimport { DbxScheduleSelectionCalendarSelectionToggleButtonComponent } from './calendar.schedule.selection.toggle.button.component';\nimport { DbxDatePipeModule, DbxInjectionComponentModule } from '@dereekb/dbx-core';\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 DbxScheduleSelectionCalendarSelectionToggleButtonComponent\n];\n\n@NgModule({\n imports: [\n //\n DbxInjectionComponentModule,\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 DbxDatePipeModule\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","i6","i8","i1","i2.DbxCalendarScheduleSelectionStore","i3","i4","i5.DbxScheduleSelectionCalendarDateDaysFormComponent","i1.DbxScheduleSelectionCalendarDateDaysComponent","i2.DbxScheduleSelectionCalendarDateRangeComponent","i2.DbxScheduleSelectionCalendarDatePopoverContentComponent","i2","i5","i7.DbxScheduleSelectionCalendarCellComponent","i8.DbxScheduleSelectionCalendarSelectionToggleButtonComponent","i2.DbxScheduleSelectionCalendarComponent","i3.DbxScheduleSelectionCalendarDateRangeComponent","i4.DbxScheduleSelectionCalendarDateDialogButtonComponent"],"mappings":"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"}
|