ember-power-calendar 1.1.0 → 1.2.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ember-power-calendar-day-classes.d.ts","sourceRoot":"","sources":["../../src/helpers/ember-power-calendar-day-classes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAgB,4BAA4B,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE;IAC7E,gBAAgB;IAChB,gBAAgB;IAChB,IAAI,EAAE;IACN,CACI,MAAM,GACN,CAAC,CACC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,IAAI,EAAE,KACV,MAAM,CAAC,CACf;CACF,UAoCA;;;;;;;;AAED,wBAAoD"}
1
+ {"version":3,"file":"ember-power-calendar-day-classes.d.ts","sourceRoot":"","sources":["../../src/helpers/ember-power-calendar-day-classes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,wBAAgB,4BAA4B,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE;IAC7E,gBAAgB;IAChB,gBAAgB;IAChB,IAAI,EAAE;IACN,CACI,MAAM,GACN,CAAC,CACC,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,IAAI,EAAE,KACV,MAAM,CAAC,CACf;CACF,UAoCA;;;iFAzCY,gBAAgB,YACX,gBAAgB,SACnB,IAAI,EAAE,KACV,MAAM;;;;;AAwCjB,wBAAoD"}
@@ -5,7 +5,7 @@ declare const _default: import("@ember/component/helper").FunctionBasedHelper<{
5
5
  Args: {
6
6
  Positional: [Date, string];
7
7
  Named: {
8
- locale?: string | null | undefined;
8
+ locale?: string | null;
9
9
  };
10
10
  };
11
11
  Return: string;
@@ -1 +1 @@
1
- {"version":3,"file":"power-calendar-format-date.d.ts","sourceRoot":"","sources":["../../src/helpers/power-calendar-format-date.ts"],"names":[],"mappings":"AAGA,wBAAgB,uBAAuB,CACrC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAC9B,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,UAGvC;;;;;;;;;;AAED,wBAA+C"}
1
+ {"version":3,"file":"power-calendar-format-date.d.ts","sourceRoot":"","sources":["../../src/helpers/power-calendar-format-date.ts"],"names":[],"mappings":"AAGA,wBAAgB,uBAAuB,CACrC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAC9B,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,UAGvC;;;;;qBAHwB,MAAM,GAAG,IAAI;;;;;AAKtC,wBAA+C"}
@@ -1 +1 @@
1
- {"version":3,"file":"template-registry.d.ts","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,2BAA2B,MAAM,sCAAsC,CAAC;AACpF,OAAO,KAAK,8BAA8B,MAAM,yCAAyC,CAAC;AAE1F,MAAM,CAAC,OAAO,WAAW,0BAA0B;IACjD,aAAa,EAAE,OAAO,sBAAsB,CAAC;IAC7C,kBAAkB,EAAE,OAAO,2BAA2B,CAAC;IACvD,qBAAqB,EAAE,OAAO,8BAA8B,CAAC;CAC9D"}
1
+ {"version":3,"file":"template-registry.d.ts","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,sBAAsB,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,2BAA2B,MAAM,sCAAsC,CAAC;AACpF,OAAO,KAAK,8BAA8B,MAAM,yCAAyC,CAAC;AAE1F,MAAM,CAAC,OAAO,WAAW,0BAA0B;IACjD,aAAa,EAAE,OAAO,sBAAsB,CAAC;IAC7C,kBAAkB,EAAE,OAAO,2BAA2B,CAAC;IACvD,qBAAqB,EAAE,OAAO,8BAA8B,CAAC;CAC9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"days.js","sources":["../../../src/components/power-calendar/days.hbs","../../../src/components/power-calendar/days.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! template-lint-disable no-invalid-interactive }}\\n<div\\n class=\\\"ember-power-calendar-days\\\"\\n data-power-calendar-id={{or @calendar.calendarUniqueId @calendar.uniqueId}}\\n {{on \\\"click\\\" this.handleClick}}\\n ...attributes\\n>\\n <div class=\\\"ember-power-calendar-row ember-power-calendar-weekdays\\\">\\n {{#each this.weekdaysNames as |wdn|}}\\n <div class=\\\"ember-power-calendar-weekday\\\">{{wdn}}</div>\\n {{/each}}\\n </div>\\n <div class=\\\"ember-power-calendar-day-grid\\\" {{on \\\"keydown\\\" this.handleKeyDown}}>\\n {{#each this.weeks key=\\'id\\' as |week|}}\\n <div class=\\\"ember-power-calendar-row ember-power-calendar-week\\\" data-missing-days={{week.missingDays}}>\\n {{#each week.days key=\\'id\\' as |day|}}\\n <button type=\\\"button\\\"\\n data-date=\\\"{{day.id}}\\\"\\n class={{ember-power-calendar-day-classes day @calendar this.weeks @dayClass}}\\n {{on \\\"focus\\\" this.handleDayFocus}}\\n {{on \\\"blur\\\" this.handleDayBlur}}\\n disabled={{day.isDisabled}}>\\n {{#if (has-block)}}\\n {{yield day @calendar this.weeks}}\\n {{else}}\\n {{day.number}}\\n {{/if}}\\n </button>\\n {{/each}}\\n </div>\\n {{/each}}\\n </div>\\n</div>\\n\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { scheduleOnce } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport {\n add,\n getWeekdays,\n getWeekdaysMin,\n getWeekdaysShort,\n isBefore,\n isSame,\n normalizeDate,\n withLocale,\n type PowerCalendarDay,\n} from '../../utils.ts';\nimport type { CalendarAPI } from '../power-calendar.ts';\nimport type PowerCalendarService from '../../services/power-calendar.ts';\nimport {\n firstDay,\n localeStartOfWeekOrFallback,\n weekdaysNames,\n weeks,\n handleDayKeyDown,\n focusDate,\n buildDay,\n lastDay,\n handleClick,\n type TWeekdayFormat,\n type Week,\n} from '../../-private/days-utils.ts';\n\nexport interface PowerCalendarDaysArgs {\n calendar: CalendarAPI;\n dayClass?: string;\n disabledDates?: Array<Date | string>;\n maxDate?: Date;\n minDate?: Date;\n selected?: Date;\n showDaysAround?: boolean;\n startOfWeek?: string;\n center?: Date;\n weekdayFormat?: TWeekdayFormat;\n}\n\nexport interface PowerCalendarDaysSignature {\n Element: HTMLElement;\n Args: PowerCalendarDaysArgs;\n Blocks: {\n default: [day: PowerCalendarDay, calendar: CalendarAPI, weeks: Week[]];\n };\n}\n\nexport default class PowerCalendarDaysComponent extends Component<PowerCalendarDaysSignature> {\n @service declare powerCalendar: PowerCalendarService;\n\n @tracked focusedId: string | null = null;\n\n get weekdayFormat(): TWeekdayFormat {\n return this.args.weekdayFormat || 'short'; // \"min\" | \"short\" | \"long\"\n }\n\n get showDaysAround(): boolean {\n return this.args.showDaysAround !== undefined\n ? this.args.showDaysAround\n : true;\n }\n\n get weekdaysMin(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdaysMin) as string[];\n }\n\n get weekdaysShort(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdaysShort) as string[];\n }\n\n get weekdays(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdays) as string[];\n }\n\n get localeStartOfWeek(): number {\n return localeStartOfWeekOrFallback(\n this.args.startOfWeek,\n this.args.calendar.locale,\n );\n }\n\n get weekdaysNames(): string[] {\n return weekdaysNames(\n this.localeStartOfWeek,\n this.weekdayFormat,\n this.weekdays,\n this.weekdaysMin,\n this.weekdaysShort,\n );\n }\n\n get days(): PowerCalendarDay[] {\n const today = this.powerCalendar.getDate();\n const theLastDay = lastDay(this.localeStartOfWeek, this.currentCenter);\n let day = firstDay(this.currentCenter, this.localeStartOfWeek);\n const days: PowerCalendarDay[] = [];\n while (isBefore(day, theLastDay)) {\n days.push(\n buildDay(\n day,\n today,\n this.args.calendar,\n this.focusedId,\n this.currentCenter,\n this.dayIsSelected.bind(this),\n this.args.minDate,\n this.args.maxDate,\n this.args.disabledDates,\n ),\n );\n day = add(day, 1, 'day');\n }\n return days;\n }\n\n get weeks(): Week[] {\n return weeks(this.days, this.showDaysAround);\n }\n\n get currentCenter(): Date {\n let center = this.args.center;\n if (!center) {\n center = this.args.selected || this.args.calendar.center;\n }\n return normalizeDate(center) || this.args.calendar.center;\n }\n\n // Actions\n @action\n handleDayFocus(e: FocusEvent): void {\n scheduleOnce(\n 'actions',\n this,\n this._updateFocused,\n (e.target as HTMLElement).dataset['date'],\n );\n }\n\n @action\n handleDayBlur(): void {\n scheduleOnce('actions', this, this._updateFocused, null);\n }\n\n @action\n handleKeyDown(e: KeyboardEvent): void {\n const day = handleDayKeyDown(e, this.focusedId, this.days);\n if (!day) {\n return;\n }\n this.focusedId = day.id;\n scheduleOnce(\n 'afterRender',\n this,\n focusDate,\n this.args.calendar.uniqueId,\n this.focusedId ?? '',\n );\n }\n\n @action\n handleClick(e: MouseEvent) {\n handleClick(e, this.days, this.args.calendar);\n }\n\n // Methods\n dayIsSelected(date: Date, calendar: CalendarAPI = this.args.calendar) {\n return calendar.selected\n ? isSame(date, calendar.selected as Date, 'day')\n : false;\n }\n\n _updateFocused(id?: string | null) {\n this.focusedId = id ?? null;\n }\n}\n"],"names":["PowerCalendarDaysComponent","Component","g","this","prototype","service","i","void 0","tracked","weekdayFormat","args","showDaysAround","undefined","weekdaysMin","withLocale","calendar","locale","getWeekdaysMin","weekdaysShort","getWeekdaysShort","weekdays","getWeekdays","localeStartOfWeek","localeStartOfWeekOrFallback","startOfWeek","weekdaysNames","days","today","powerCalendar","getDate","theLastDay","lastDay","currentCenter","day","firstDay","isBefore","push","buildDay","focusedId","dayIsSelected","bind","minDate","maxDate","disabledDates","add","weeks","center","selected","normalizeDate","handleDayFocus","e","scheduleOnce","_updateFocused","target","dataset","n","action","handleDayBlur","handleKeyDown","handleDayKeyDown","id","focusDate","uniqueId","handleClick","date","isSame","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"days.js","sources":["../../../src/components/power-calendar/days.hbs","../../../src/components/power-calendar/days.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! template-lint-disable no-invalid-interactive }}\\n<div\\n class=\\\"ember-power-calendar-days\\\"\\n data-power-calendar-id={{or @calendar.calendarUniqueId @calendar.uniqueId}}\\n {{on \\\"click\\\" this.handleClick}}\\n ...attributes\\n>\\n <div class=\\\"ember-power-calendar-row ember-power-calendar-weekdays\\\">\\n {{#each this.weekdaysNames as |wdn|}}\\n <div class=\\\"ember-power-calendar-weekday\\\">{{wdn}}</div>\\n {{/each}}\\n </div>\\n <div class=\\\"ember-power-calendar-day-grid\\\" {{on \\\"keydown\\\" this.handleKeyDown}}>\\n {{#each this.weeks key=\\'id\\' as |week|}}\\n <div class=\\\"ember-power-calendar-row ember-power-calendar-week\\\" data-missing-days={{week.missingDays}}>\\n {{#each week.days key=\\'id\\' as |day|}}\\n <button type=\\\"button\\\"\\n data-date=\\\"{{day.id}}\\\"\\n class={{ember-power-calendar-day-classes day @calendar this.weeks @dayClass}}\\n {{on \\\"focus\\\" this.handleDayFocus}}\\n {{on \\\"blur\\\" this.handleDayBlur}}\\n disabled={{day.isDisabled}}>\\n {{#if (has-block)}}\\n {{yield day @calendar this.weeks}}\\n {{else}}\\n {{day.number}}\\n {{/if}}\\n </button>\\n {{/each}}\\n </div>\\n {{/each}}\\n </div>\\n</div>\\n\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { scheduleOnce } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport {\n add,\n getWeekdays,\n getWeekdaysMin,\n getWeekdaysShort,\n isBefore,\n isSame,\n normalizeDate,\n withLocale,\n type PowerCalendarDay,\n} from '../../utils.ts';\nimport type { CalendarAPI } from '../power-calendar.ts';\nimport type PowerCalendarService from '../../services/power-calendar.ts';\nimport {\n firstDay,\n localeStartOfWeekOrFallback,\n weekdaysNames,\n weeks,\n handleDayKeyDown,\n focusDate,\n buildDay,\n lastDay,\n handleClick,\n type TWeekdayFormat,\n type Week,\n} from '../../-private/days-utils.ts';\n\nexport interface PowerCalendarDaysArgs {\n calendar: CalendarAPI;\n dayClass?: string;\n disabledDates?: Array<Date | string>;\n maxDate?: Date;\n minDate?: Date;\n selected?: Date;\n showDaysAround?: boolean;\n startOfWeek?: string;\n center?: Date;\n weekdayFormat?: TWeekdayFormat;\n}\n\nexport interface PowerCalendarDaysSignature {\n Element: HTMLElement;\n Args: PowerCalendarDaysArgs;\n Blocks: {\n default: [day: PowerCalendarDay, calendar: CalendarAPI, weeks: Week[]];\n };\n}\n\nexport default class PowerCalendarDaysComponent extends Component<PowerCalendarDaysSignature> {\n @service declare powerCalendar: PowerCalendarService;\n\n @tracked focusedId: string | null = null;\n\n get weekdayFormat(): TWeekdayFormat {\n return this.args.weekdayFormat || 'short'; // \"min\" | \"short\" | \"long\"\n }\n\n get showDaysAround(): boolean {\n return this.args.showDaysAround !== undefined\n ? this.args.showDaysAround\n : true;\n }\n\n get weekdaysMin(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdaysMin) as string[];\n }\n\n get weekdaysShort(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdaysShort) as string[];\n }\n\n get weekdays(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdays) as string[];\n }\n\n get localeStartOfWeek(): number {\n return localeStartOfWeekOrFallback(\n this.args.startOfWeek,\n this.args.calendar.locale,\n );\n }\n\n get weekdaysNames(): string[] {\n return weekdaysNames(\n this.localeStartOfWeek,\n this.weekdayFormat,\n this.weekdays,\n this.weekdaysMin,\n this.weekdaysShort,\n );\n }\n\n get days(): PowerCalendarDay[] {\n const today = this.powerCalendar.getDate();\n const theLastDay = lastDay(this.localeStartOfWeek, this.currentCenter);\n let day = firstDay(this.currentCenter, this.localeStartOfWeek);\n const days: PowerCalendarDay[] = [];\n while (isBefore(day, theLastDay)) {\n days.push(\n buildDay(\n day,\n today,\n this.args.calendar,\n this.focusedId,\n this.currentCenter,\n this.dayIsSelected.bind(this),\n this.args.minDate,\n this.args.maxDate,\n this.args.disabledDates,\n ),\n );\n day = add(day, 1, 'day');\n }\n return days;\n }\n\n get weeks(): Week[] {\n return weeks(this.days, this.showDaysAround);\n }\n\n get currentCenter(): Date {\n let center = this.args.center;\n if (!center) {\n center = this.args.selected || this.args.calendar.center;\n }\n return normalizeDate(center) || this.args.calendar.center;\n }\n\n // Actions\n @action\n handleDayFocus(e: FocusEvent): void {\n scheduleOnce(\n 'actions',\n this,\n this._updateFocused,\n (e.target as HTMLElement).dataset['date'],\n );\n }\n\n @action\n handleDayBlur(): void {\n scheduleOnce('actions', this, this._updateFocused, null);\n }\n\n @action\n handleKeyDown(e: KeyboardEvent): void {\n const day = handleDayKeyDown(e, this.focusedId, this.days);\n if (!day) {\n return;\n }\n this.focusedId = day.id;\n scheduleOnce(\n 'afterRender',\n this,\n focusDate,\n this.args.calendar.uniqueId,\n this.focusedId ?? '',\n );\n }\n\n @action\n handleClick(e: MouseEvent) {\n handleClick(e, this.days, this.args.calendar);\n }\n\n // Methods\n dayIsSelected(date: Date, calendar: CalendarAPI = this.args.calendar) {\n return calendar.selected\n ? isSame(date, calendar.selected as Date, 'day')\n : false;\n }\n\n _updateFocused(id?: string | null) {\n this.focusedId = id ?? null;\n }\n}\n"],"names":["PowerCalendarDaysComponent","Component","g","prototype","service","i","void 0","tracked","weekdayFormat","args","showDaysAround","undefined","weekdaysMin","withLocale","calendar","locale","getWeekdaysMin","weekdaysShort","getWeekdaysShort","weekdays","getWeekdays","localeStartOfWeek","localeStartOfWeekOrFallback","startOfWeek","weekdaysNames","days","today","powerCalendar","getDate","theLastDay","lastDay","currentCenter","day","firstDay","isBefore","push","buildDay","focusedId","dayIsSelected","bind","minDate","maxDate","disabledDates","add","weeks","center","selected","normalizeDate","handleDayFocus","e","scheduleOnce","_updateFocused","target","dataset","n","action","handleDayBlur","handleKeyDown","handleDayKeyDown","id","focusDate","uniqueId","handleClick","date","isSame","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"days.js","sources":["../../../src/components/power-calendar-multiple/days.hbs","../../../src/components/power-calendar-multiple/days.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! template-lint-disable no-invalid-interactive }}\\n<div\\n class=\\\"ember-power-calendar-days\\\"\\n data-power-calendar-id={{or @calendar.calendarUniqueId @calendar.uniqueId}}\\n {{on \\\"click\\\" this.handleClick}}\\n ...attributes\\n>\\n <div class=\\\"ember-power-calendar-row ember-power-calendar-weekdays\\\">\\n {{#each this.weekdaysNames as |wdn|}}\\n <div class=\\\"ember-power-calendar-weekday\\\">{{wdn}}</div>\\n {{/each}}\\n </div>\\n <div class=\\\"ember-power-calendar-day-grid\\\" {{on \\\"keydown\\\" this.handleKeyDown}}>\\n {{#each this.weeks key=\\'id\\' as |week|}}\\n <div class=\\\"ember-power-calendar-row ember-power-calendar-week\\\" data-missing-days={{week.missingDays}}>\\n {{#each week.days key=\\'id\\' as |day|}}\\n <button type=\\\"button\\\"\\n data-date=\\\"{{day.id}}\\\"\\n class={{ember-power-calendar-day-classes day @calendar this.weeks @dayClass}}\\n {{on \\\"focus\\\" this.handleDayFocus}}\\n {{on \\\"blur\\\" this.handleDayBlur}}\\n disabled={{day.isDisabled}}>\\n {{#if (has-block)}}\\n {{yield day @calendar this.weeks}}\\n {{else}}\\n {{day.number}}\\n {{/if}}\\n </button>\\n {{/each}}\\n </div>\\n {{/each}}\\n </div>\\n</div>\\n\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { scheduleOnce } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport {\n add,\n getWeekdays,\n getWeekdaysMin,\n getWeekdaysShort,\n isBefore,\n isSame,\n normalizeDate,\n withLocale,\n type PowerCalendarDay,\n} from '../../utils.ts';\nimport type { PowerCalendarMultipleAPI } from '../power-calendar-multiple.ts';\nimport {\n buildDay,\n dayIsDisabled,\n firstDay,\n lastDay,\n localeStartOfWeekOrFallback,\n weekdaysNames,\n weeks,\n handleDayKeyDown,\n focusDate,\n handleClick,\n type TWeekdayFormat,\n type Week,\n} from '../../-private/days-utils.ts';\nimport type { CalendarAPI } from '../power-calendar.ts';\nimport type PowerCalendarService from '../../services/power-calendar.ts';\nimport type {\n PowerCalendarDaysArgs,\n PowerCalendarDaysSignature,\n} from '../power-calendar/days.ts';\n\ninterface PowerCalendarMultipleDaysArgs\n extends Omit<PowerCalendarDaysArgs, 'selected'> {\n selected?: Date[];\n maxLength?: number;\n}\n\ninterface PowerCalendarMultipleDaysSignature\n extends Omit<PowerCalendarDaysSignature, 'Args'> {\n Args: PowerCalendarMultipleDaysArgs;\n}\n\nexport default class PowerCalendarMultipleDaysComponent extends Component<PowerCalendarMultipleDaysSignature> {\n @service declare powerCalendar: PowerCalendarService;\n\n @tracked focusedId: string | null = null;\n\n get weekdayFormat(): TWeekdayFormat {\n return this.args.weekdayFormat || 'short'; // \"min\" | \"short\" | \"long\"\n }\n\n get showDaysAround(): boolean {\n return this.args.showDaysAround !== undefined\n ? this.args.showDaysAround\n : true;\n }\n\n get weekdaysMin(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdaysMin) as string[];\n }\n\n get weekdaysShort(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdaysShort) as string[];\n }\n\n get weekdays(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdays) as string[];\n }\n\n get localeStartOfWeek(): number {\n return localeStartOfWeekOrFallback(\n this.args.startOfWeek,\n this.args.calendar.locale,\n );\n }\n\n get weekdaysNames(): string[] {\n return weekdaysNames(\n this.localeStartOfWeek,\n this.weekdayFormat,\n this.weekdays,\n this.weekdaysMin,\n this.weekdaysShort,\n );\n }\n\n get days(): PowerCalendarDay[] {\n const today = this.powerCalendar.getDate();\n const theLastDay = lastDay(this.localeStartOfWeek, this.currentCenter);\n let day = firstDay(this.currentCenter, this.localeStartOfWeek);\n const days: PowerCalendarDay[] = [];\n while (isBefore(day, theLastDay)) {\n days.push(\n buildDay(\n day,\n today,\n this.args.calendar,\n this.focusedId,\n this.currentCenter,\n this.dayIsSelected.bind(this),\n this.args.minDate,\n this.args.maxDate,\n this.args.disabledDates,\n this.dayIsDisabled.bind(this),\n ),\n );\n day = add(day, 1, 'day');\n }\n return days;\n }\n\n get weeks(): Week[] {\n return weeks(this.days, this.showDaysAround);\n }\n\n get currentCenter(): Date {\n let center = this.args.center;\n if (!center) {\n center = this.args.selected\n ? this.args.selected[0]\n : this.args.calendar.center;\n }\n return normalizeDate(center) || this.args.calendar.center;\n }\n\n get maxLength(): number {\n return this.args.maxLength || Infinity;\n }\n\n // Actions\n @action\n handleDayFocus(e: FocusEvent): void {\n scheduleOnce(\n 'actions',\n this,\n this._updateFocused,\n (e.target as HTMLElement).dataset['date'],\n );\n }\n\n @action\n handleDayBlur(): void {\n scheduleOnce('actions', this, this._updateFocused, null);\n }\n\n @action\n handleKeyDown(e: KeyboardEvent): void {\n const day = handleDayKeyDown(e, this.focusedId, this.days);\n if (!day) {\n return;\n }\n this.focusedId = day.id;\n scheduleOnce(\n 'afterRender',\n this,\n focusDate,\n this.args.calendar.uniqueId,\n this.focusedId ?? '',\n );\n }\n\n @action\n handleClick(e: MouseEvent) {\n handleClick(e, this.days, this.args.calendar);\n }\n\n // Methods\n dayIsSelected(date: Date, calendar: CalendarAPI = this.args.calendar) {\n const selected = (calendar as PowerCalendarMultipleAPI).selected || [];\n return selected.some((d) => isSame(date, d, 'day'));\n }\n\n _updateFocused(id?: string | null) {\n this.focusedId = id ?? null;\n }\n\n dayIsDisabled(\n date: Date,\n calendarApi: CalendarAPI,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Array<Date | string>,\n ) {\n const calendar = calendarApi as PowerCalendarMultipleAPI;\n const numSelected = (calendar.selected && calendar.selected.length) || 0;\n const maxLength = this.maxLength || Infinity;\n return (\n dayIsDisabled(date, calendar, minDate, maxDate, disabledDates) ||\n (numSelected >= maxLength && !this.dayIsSelected(date))\n );\n }\n}\n"],"names":["PowerCalendarMultipleDaysComponent","Component","g","this","prototype","service","i","void 0","tracked","weekdayFormat","args","showDaysAround","undefined","weekdaysMin","withLocale","calendar","locale","getWeekdaysMin","weekdaysShort","getWeekdaysShort","weekdays","getWeekdays","localeStartOfWeek","localeStartOfWeekOrFallback","startOfWeek","weekdaysNames","days","today","powerCalendar","getDate","theLastDay","lastDay","currentCenter","day","firstDay","isBefore","push","buildDay","focusedId","dayIsSelected","bind","minDate","maxDate","disabledDates","dayIsDisabled","add","weeks","center","selected","normalizeDate","maxLength","Infinity","handleDayFocus","e","scheduleOnce","_updateFocused","target","dataset","n","action","handleDayBlur","handleKeyDown","handleDayKeyDown","id","focusDate","uniqueId","handleClick","date","some","d","isSame","calendarApi","numSelected","length","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"days.js","sources":["../../../src/components/power-calendar-multiple/days.hbs","../../../src/components/power-calendar-multiple/days.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! template-lint-disable no-invalid-interactive }}\\n<div\\n class=\\\"ember-power-calendar-days\\\"\\n data-power-calendar-id={{or @calendar.calendarUniqueId @calendar.uniqueId}}\\n {{on \\\"click\\\" this.handleClick}}\\n ...attributes\\n>\\n <div class=\\\"ember-power-calendar-row ember-power-calendar-weekdays\\\">\\n {{#each this.weekdaysNames as |wdn|}}\\n <div class=\\\"ember-power-calendar-weekday\\\">{{wdn}}</div>\\n {{/each}}\\n </div>\\n <div class=\\\"ember-power-calendar-day-grid\\\" {{on \\\"keydown\\\" this.handleKeyDown}}>\\n {{#each this.weeks key=\\'id\\' as |week|}}\\n <div class=\\\"ember-power-calendar-row ember-power-calendar-week\\\" data-missing-days={{week.missingDays}}>\\n {{#each week.days key=\\'id\\' as |day|}}\\n <button type=\\\"button\\\"\\n data-date=\\\"{{day.id}}\\\"\\n class={{ember-power-calendar-day-classes day @calendar this.weeks @dayClass}}\\n {{on \\\"focus\\\" this.handleDayFocus}}\\n {{on \\\"blur\\\" this.handleDayBlur}}\\n disabled={{day.isDisabled}}>\\n {{#if (has-block)}}\\n {{yield day @calendar this.weeks}}\\n {{else}}\\n {{day.number}}\\n {{/if}}\\n </button>\\n {{/each}}\\n </div>\\n {{/each}}\\n </div>\\n</div>\\n\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { scheduleOnce } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport {\n add,\n getWeekdays,\n getWeekdaysMin,\n getWeekdaysShort,\n isBefore,\n isSame,\n normalizeDate,\n withLocale,\n type PowerCalendarDay,\n} from '../../utils.ts';\nimport type { PowerCalendarMultipleAPI } from '../power-calendar-multiple.ts';\nimport {\n buildDay,\n dayIsDisabled,\n firstDay,\n lastDay,\n localeStartOfWeekOrFallback,\n weekdaysNames,\n weeks,\n handleDayKeyDown,\n focusDate,\n handleClick,\n type TWeekdayFormat,\n type Week,\n} from '../../-private/days-utils.ts';\nimport type { CalendarAPI } from '../power-calendar.ts';\nimport type PowerCalendarService from '../../services/power-calendar.ts';\nimport type {\n PowerCalendarDaysArgs,\n PowerCalendarDaysSignature,\n} from '../power-calendar/days.ts';\n\ninterface PowerCalendarMultipleDaysArgs\n extends Omit<PowerCalendarDaysArgs, 'selected'> {\n selected?: Date[];\n maxLength?: number;\n}\n\ninterface PowerCalendarMultipleDaysSignature\n extends Omit<PowerCalendarDaysSignature, 'Args'> {\n Args: PowerCalendarMultipleDaysArgs;\n}\n\nexport default class PowerCalendarMultipleDaysComponent extends Component<PowerCalendarMultipleDaysSignature> {\n @service declare powerCalendar: PowerCalendarService;\n\n @tracked focusedId: string | null = null;\n\n get weekdayFormat(): TWeekdayFormat {\n return this.args.weekdayFormat || 'short'; // \"min\" | \"short\" | \"long\"\n }\n\n get showDaysAround(): boolean {\n return this.args.showDaysAround !== undefined\n ? this.args.showDaysAround\n : true;\n }\n\n get weekdaysMin(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdaysMin) as string[];\n }\n\n get weekdaysShort(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdaysShort) as string[];\n }\n\n get weekdays(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdays) as string[];\n }\n\n get localeStartOfWeek(): number {\n return localeStartOfWeekOrFallback(\n this.args.startOfWeek,\n this.args.calendar.locale,\n );\n }\n\n get weekdaysNames(): string[] {\n return weekdaysNames(\n this.localeStartOfWeek,\n this.weekdayFormat,\n this.weekdays,\n this.weekdaysMin,\n this.weekdaysShort,\n );\n }\n\n get days(): PowerCalendarDay[] {\n const today = this.powerCalendar.getDate();\n const theLastDay = lastDay(this.localeStartOfWeek, this.currentCenter);\n let day = firstDay(this.currentCenter, this.localeStartOfWeek);\n const days: PowerCalendarDay[] = [];\n while (isBefore(day, theLastDay)) {\n days.push(\n buildDay(\n day,\n today,\n this.args.calendar,\n this.focusedId,\n this.currentCenter,\n this.dayIsSelected.bind(this),\n this.args.minDate,\n this.args.maxDate,\n this.args.disabledDates,\n this.dayIsDisabled.bind(this),\n ),\n );\n day = add(day, 1, 'day');\n }\n return days;\n }\n\n get weeks(): Week[] {\n return weeks(this.days, this.showDaysAround);\n }\n\n get currentCenter(): Date {\n let center = this.args.center;\n if (!center) {\n center = this.args.selected\n ? this.args.selected[0]\n : this.args.calendar.center;\n }\n return normalizeDate(center) || this.args.calendar.center;\n }\n\n get maxLength(): number {\n return this.args.maxLength || Infinity;\n }\n\n // Actions\n @action\n handleDayFocus(e: FocusEvent): void {\n scheduleOnce(\n 'actions',\n this,\n this._updateFocused,\n (e.target as HTMLElement).dataset['date'],\n );\n }\n\n @action\n handleDayBlur(): void {\n scheduleOnce('actions', this, this._updateFocused, null);\n }\n\n @action\n handleKeyDown(e: KeyboardEvent): void {\n const day = handleDayKeyDown(e, this.focusedId, this.days);\n if (!day) {\n return;\n }\n this.focusedId = day.id;\n scheduleOnce(\n 'afterRender',\n this,\n focusDate,\n this.args.calendar.uniqueId,\n this.focusedId ?? '',\n );\n }\n\n @action\n handleClick(e: MouseEvent) {\n handleClick(e, this.days, this.args.calendar);\n }\n\n // Methods\n dayIsSelected(date: Date, calendar: CalendarAPI = this.args.calendar) {\n const selected = (calendar as PowerCalendarMultipleAPI).selected || [];\n return selected.some((d) => isSame(date, d, 'day'));\n }\n\n _updateFocused(id?: string | null) {\n this.focusedId = id ?? null;\n }\n\n dayIsDisabled(\n date: Date,\n calendarApi: CalendarAPI,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Array<Date | string>,\n ) {\n const calendar = calendarApi as PowerCalendarMultipleAPI;\n const numSelected = (calendar.selected && calendar.selected.length) || 0;\n const maxLength = this.maxLength || Infinity;\n return (\n dayIsDisabled(date, calendar, minDate, maxDate, disabledDates) ||\n (numSelected >= maxLength && !this.dayIsSelected(date))\n );\n }\n}\n"],"names":["PowerCalendarMultipleDaysComponent","Component","g","prototype","service","i","void 0","tracked","weekdayFormat","args","showDaysAround","undefined","weekdaysMin","withLocale","calendar","locale","getWeekdaysMin","weekdaysShort","getWeekdaysShort","weekdays","getWeekdays","localeStartOfWeek","localeStartOfWeekOrFallback","startOfWeek","weekdaysNames","days","today","powerCalendar","getDate","theLastDay","lastDay","currentCenter","day","firstDay","isBefore","push","buildDay","focusedId","dayIsSelected","bind","minDate","maxDate","disabledDates","dayIsDisabled","add","weeks","center","selected","normalizeDate","maxLength","Infinity","handleDayFocus","e","scheduleOnce","_updateFocused","target","dataset","n","action","handleDayBlur","handleKeyDown","handleDayKeyDown","id","focusDate","uniqueId","handleClick","date","some","d","isSame","calendarApi","numSelected","length","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"power-calendar-multiple.js","sources":["../../src/components/power-calendar-multiple.hbs","../../src/components/power-calendar-multiple.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{#let (assign this.publicAPI (hash\\n Nav=(component (ensure-safe-component (or @navComponent this.navComponent)) calendar=(readonly this.publicAPI))\\n Days=(component (ensure-safe-component (or @daysComponent this.daysComponent)) calendar=(readonly this.publicAPI))\\n)) as |calendar|}}\\n {{#let (element this.tagWithDefault) as |Tag|}}\\n <Tag class=\\\"ember-power-calendar\\\" ...attributes id={{calendar.uniqueId}}>\\n {{#if (has-block)}}\\n {{yield calendar}}\\n {{else}}\\n <calendar.Nav/>\\n <calendar.Days/>\\n {{/if}}\\n </Tag>\\n {{/let}}\\n{{/let}}\\n\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { guidFor } from '@ember/object/internals';\nimport { inject as service } from '@ember/service';\nimport { assert } from '@ember/debug';\nimport { isArray } from '@ember/array';\nimport { action } from '@ember/object';\nimport { task } from 'ember-concurrency';\nimport PowerCalendarMultipleDaysComponent from './power-calendar-multiple/days.ts';\nimport PowerCalendarNavComponent from './power-calendar/nav.ts';\nimport { publicActionsObject } from '../-private/utils.ts';\nimport {\n normalizeDate,\n isSame,\n normalizeMultipleActionValue,\n normalizeCalendarValue,\n type NormalizeMultipleActionValue,\n type PowerCalendarDay,\n} from '../utils.ts';\nimport type {\n CalendarAPI,\n CalendarDay,\n PowerCalendarAPI,\n PowerCalendarActions,\n PowerCalendarArgs,\n PowerCalendarSignature,\n SelectedDays,\n TCalendarType,\n} from './power-calendar.ts';\nimport type Owner from '@ember/owner';\nimport type { ComponentLike } from '@glint/template';\nimport type PowerCalendarService from '../services/power-calendar.ts';\n\nexport interface PowerCalendarMultipleAPI\n extends Omit<PowerCalendarAPI, 'selected'> {\n selected?: Date[];\n}\n\nexport type TPowerCalendarMultipleOnSelect = (\n day: NormalizeMultipleActionValue,\n calendar: PowerCalendarMultipleAPI,\n event: MouseEvent,\n) => void;\n\ninterface PowerCalendarMultipleArgs\n extends Omit<PowerCalendarArgs, 'selected' | 'onSelect'> {\n selected?: Date[];\n onSelect?: TPowerCalendarMultipleOnSelect;\n}\n\ninterface PowerCalendarMultipleDefaultBlock extends PowerCalendarMultipleAPI {\n NavComponent: ComponentLike<any>;\n DaysComponent: ComponentLike<any>;\n}\n\ninterface PowerCalendarMultipleSignature\n extends Omit<PowerCalendarSignature, 'Args'> {\n Args: PowerCalendarMultipleArgs;\n Blocks: {\n default: [PowerCalendarMultipleDefaultBlock];\n };\n}\n\nexport default class PowerCalendarMultipleComponent extends Component<PowerCalendarMultipleSignature> {\n @service declare powerCalendar: PowerCalendarService;\n\n @tracked center = null;\n @tracked _calendarType: TCalendarType = 'multiple';\n @tracked _selected?: SelectedDays;\n\n navComponent: ComponentLike<any> = PowerCalendarNavComponent;\n daysComponent: ComponentLike<any> = PowerCalendarMultipleDaysComponent;\n\n // Lifecycle hooks\n constructor(owner: Owner, args: PowerCalendarMultipleArgs) {\n super(owner, args);\n this.registerCalendar();\n if (this.args.onInit) {\n this.args.onInit(this.publicAPI);\n }\n }\n\n willDestroy(): void {\n super.willDestroy();\n this.unregisterCalendar();\n }\n\n get publicActions(): PowerCalendarActions {\n return publicActionsObject(\n this.args.onSelect,\n this.select,\n this.args.onCenterChange,\n this.changeCenterTask,\n this.currentCenter,\n );\n }\n\n get selected(): Date[] | undefined {\n if (this._selected) {\n return (this._selected as Date[]) || undefined;\n }\n\n const value = this.args.selected;\n\n if (!isArray(value)) {\n return value;\n }\n\n const selected: Date[] = [];\n\n for (const date of value) {\n const normalizedDate = normalizeDate(date);\n if (!(normalizedDate instanceof Date)) {\n continue;\n }\n selected.push(normalizedDate);\n }\n\n return selected;\n }\n\n set selected(v: SelectedDays) {\n this._selected = normalizeDate(v as Date | undefined);\n }\n\n get currentCenter(): Date {\n let center = this.args.center;\n if (!center) {\n center = (this.selected || [])[0] || this.powerCalendar.getDate();\n }\n return normalizeDate(center) || this.powerCalendar.getDate();\n }\n\n get publicAPI(): PowerCalendarAPI {\n return {\n uniqueId: guidFor(this),\n type: this._calendarType,\n selected: this.selected,\n loading: this.changeCenterTask.isRunning,\n center: this.currentCenter,\n locale: this.args.locale || this.powerCalendar.locale,\n actions: this.publicActions,\n };\n }\n\n get tagWithDefault(): string {\n if (this.args.tag === undefined || this.args.tag === null) {\n return 'div';\n }\n return this.args.tag;\n }\n\n // Tasks\n changeCenterTask = task(\n async (newCenter: Date, calendar: PowerCalendarAPI, e: MouseEvent) => {\n assert(\n \"You attempted to move the center of a calendar that doesn't receive an `@onCenterChange` action.\",\n typeof this.args.onCenterChange === 'function',\n );\n const value = normalizeCalendarValue({ date: newCenter });\n await this.args.onCenterChange(value, calendar, e);\n },\n );\n\n // Actions\n @action\n select(dayOrDays: CalendarDay, calendar: CalendarAPI, e: MouseEvent) {\n assert(\n `The select action expects an array of date objects, or a date object. ${typeof dayOrDays} was recieved instead.`,\n isArray(dayOrDays) ||\n (dayOrDays instanceof Object && dayOrDays.date instanceof Date),\n );\n\n let days;\n\n if (isArray(dayOrDays)) {\n days = dayOrDays;\n } else if (dayOrDays instanceof Object && dayOrDays.date instanceof Date) {\n days = [dayOrDays];\n }\n\n if (this.args.onSelect) {\n this.args.onSelect(\n this._buildCollection((days as PowerCalendarDay[]) ?? []),\n calendar as PowerCalendarMultipleAPI,\n e,\n );\n }\n }\n\n // Methods\n _buildCollection(days: PowerCalendarDay[]): NormalizeMultipleActionValue {\n let selected = this.selected || [];\n\n for (const day of days) {\n const index = selected.findIndex((selectedDate) =>\n isSame(day.date, selectedDate, 'day'),\n );\n if (index === -1) {\n selected = [...selected, day.date];\n } else {\n selected = selected.slice(0, index).concat(selected.slice(index + 1));\n }\n }\n\n return normalizeMultipleActionValue({ date: selected });\n }\n\n // Methods\n registerCalendar() {\n if (window) {\n // @ts-expect-error Property '__powerCalendars'\n window.__powerCalendars = window.__powerCalendars || {}; // TODO: weakmap??\n // @ts-expect-error Property '__powerCalendars'\n window.__powerCalendars[this.publicAPI.uniqueId] = this;\n }\n }\n\n unregisterCalendar() {\n // @ts-expect-error Property '__powerCalendars'\n if (window && window.__powerCalendars?.[guidFor(this)]) {\n // @ts-expect-error Property '__powerCalendars'\n delete window.__powerCalendars[guidFor(this)];\n }\n }\n}\n"],"names":["PowerCalendarMultipleComponent","Component","g","this","prototype","service","i","void 0","tracked","navComponent","PowerCalendarNavComponent","daysComponent","PowerCalendarMultipleDaysComponent","constructor","owner","args","registerCalendar","onInit","publicAPI","willDestroy","unregisterCalendar","publicActions","publicActionsObject","onSelect","select","onCenterChange","changeCenterTask","currentCenter","selected","_selected","undefined","value","isArray","date","normalizedDate","normalizeDate","Date","push","v","center","powerCalendar","getDate","uniqueId","guidFor","type","_calendarType","loading","isRunning","locale","actions","tagWithDefault","tag","_buildTask","context","generator","newCenter","calendar","e","assert","normalizeCalendarValue","dayOrDays","Object","days","_buildCollection","n","action","day","index","findIndex","selectedDate","isSame","slice","concat","normalizeMultipleActionValue","window","__powerCalendars","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"power-calendar-multiple.js","sources":["../../src/components/power-calendar-multiple.hbs","../../src/components/power-calendar-multiple.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{#let (assign this.publicAPI (hash\\n Nav=(component (ensure-safe-component (or @navComponent this.navComponent)) calendar=(readonly this.publicAPI))\\n Days=(component (ensure-safe-component (or @daysComponent this.daysComponent)) calendar=(readonly this.publicAPI))\\n)) as |calendar|}}\\n {{#let (element this.tagWithDefault) as |Tag|}}\\n <Tag class=\\\"ember-power-calendar\\\" ...attributes id={{calendar.uniqueId}}>\\n {{#if (has-block)}}\\n {{yield calendar}}\\n {{else}}\\n <calendar.Nav/>\\n <calendar.Days/>\\n {{/if}}\\n </Tag>\\n {{/let}}\\n{{/let}}\\n\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { guidFor } from '@ember/object/internals';\nimport { inject as service } from '@ember/service';\nimport { assert } from '@ember/debug';\nimport { isArray } from '@ember/array';\nimport { action } from '@ember/object';\nimport { task } from 'ember-concurrency';\nimport PowerCalendarMultipleDaysComponent from './power-calendar-multiple/days.ts';\nimport PowerCalendarNavComponent from './power-calendar/nav.ts';\nimport { publicActionsObject } from '../-private/utils.ts';\nimport {\n normalizeDate,\n isSame,\n normalizeMultipleActionValue,\n normalizeCalendarValue,\n type NormalizeMultipleActionValue,\n type PowerCalendarDay,\n} from '../utils.ts';\nimport type {\n CalendarAPI,\n CalendarDay,\n PowerCalendarAPI,\n PowerCalendarActions,\n PowerCalendarArgs,\n PowerCalendarSignature,\n SelectedDays,\n TCalendarType,\n} from './power-calendar.ts';\nimport type Owner from '@ember/owner';\nimport type { ComponentLike } from '@glint/template';\nimport type PowerCalendarService from '../services/power-calendar.ts';\n\nexport interface PowerCalendarMultipleAPI\n extends Omit<PowerCalendarAPI, 'selected'> {\n selected?: Date[];\n}\n\nexport type TPowerCalendarMultipleOnSelect = (\n day: NormalizeMultipleActionValue,\n calendar: PowerCalendarMultipleAPI,\n event: MouseEvent,\n) => void;\n\ninterface PowerCalendarMultipleArgs\n extends Omit<PowerCalendarArgs, 'selected' | 'onSelect'> {\n selected?: Date[];\n onSelect?: TPowerCalendarMultipleOnSelect;\n}\n\ninterface PowerCalendarMultipleDefaultBlock extends PowerCalendarMultipleAPI {\n NavComponent: ComponentLike<any>;\n DaysComponent: ComponentLike<any>;\n}\n\ninterface PowerCalendarMultipleSignature\n extends Omit<PowerCalendarSignature, 'Args'> {\n Args: PowerCalendarMultipleArgs;\n Blocks: {\n default: [PowerCalendarMultipleDefaultBlock];\n };\n}\n\nexport default class PowerCalendarMultipleComponent extends Component<PowerCalendarMultipleSignature> {\n @service declare powerCalendar: PowerCalendarService;\n\n @tracked center = null;\n @tracked _calendarType: TCalendarType = 'multiple';\n @tracked _selected?: SelectedDays;\n\n navComponent: ComponentLike<any> = PowerCalendarNavComponent;\n daysComponent: ComponentLike<any> = PowerCalendarMultipleDaysComponent;\n\n // Lifecycle hooks\n constructor(owner: Owner, args: PowerCalendarMultipleArgs) {\n super(owner, args);\n this.registerCalendar();\n if (this.args.onInit) {\n this.args.onInit(this.publicAPI);\n }\n }\n\n willDestroy(): void {\n super.willDestroy();\n this.unregisterCalendar();\n }\n\n get publicActions(): PowerCalendarActions {\n return publicActionsObject(\n this.args.onSelect,\n this.select,\n this.args.onCenterChange,\n this.changeCenterTask,\n this.currentCenter,\n );\n }\n\n get selected(): Date[] | undefined {\n if (this._selected) {\n return (this._selected as Date[]) || undefined;\n }\n\n const value = this.args.selected;\n\n if (!isArray(value)) {\n return value;\n }\n\n const selected: Date[] = [];\n\n for (const date of value) {\n const normalizedDate = normalizeDate(date);\n if (!(normalizedDate instanceof Date)) {\n continue;\n }\n selected.push(normalizedDate);\n }\n\n return selected;\n }\n\n set selected(v: SelectedDays) {\n this._selected = normalizeDate(v as Date | undefined);\n }\n\n get currentCenter(): Date {\n let center = this.args.center;\n if (!center) {\n center = (this.selected || [])[0] || this.powerCalendar.getDate();\n }\n return normalizeDate(center) || this.powerCalendar.getDate();\n }\n\n get publicAPI(): PowerCalendarAPI {\n return {\n uniqueId: guidFor(this),\n type: this._calendarType,\n selected: this.selected,\n loading: this.changeCenterTask.isRunning,\n center: this.currentCenter,\n locale: this.args.locale || this.powerCalendar.locale,\n actions: this.publicActions,\n };\n }\n\n get tagWithDefault(): string {\n if (this.args.tag === undefined || this.args.tag === null) {\n return 'div';\n }\n return this.args.tag;\n }\n\n // Tasks\n changeCenterTask = task(\n async (newCenter: Date, calendar: PowerCalendarAPI, e: MouseEvent) => {\n assert(\n \"You attempted to move the center of a calendar that doesn't receive an `@onCenterChange` action.\",\n typeof this.args.onCenterChange === 'function',\n );\n const value = normalizeCalendarValue({ date: newCenter });\n await this.args.onCenterChange(value, calendar, e);\n },\n );\n\n // Actions\n @action\n select(dayOrDays: CalendarDay, calendar: CalendarAPI, e: MouseEvent) {\n assert(\n `The select action expects an array of date objects, or a date object. ${typeof dayOrDays} was recieved instead.`,\n isArray(dayOrDays) ||\n (dayOrDays instanceof Object && dayOrDays.date instanceof Date),\n );\n\n let days;\n\n if (isArray(dayOrDays)) {\n days = dayOrDays;\n } else if (dayOrDays instanceof Object && dayOrDays.date instanceof Date) {\n days = [dayOrDays];\n }\n\n if (this.args.onSelect) {\n this.args.onSelect(\n this._buildCollection((days as PowerCalendarDay[]) ?? []),\n calendar as PowerCalendarMultipleAPI,\n e,\n );\n }\n }\n\n // Methods\n _buildCollection(days: PowerCalendarDay[]): NormalizeMultipleActionValue {\n let selected = this.selected || [];\n\n for (const day of days) {\n const index = selected.findIndex((selectedDate) =>\n isSame(day.date, selectedDate, 'day'),\n );\n if (index === -1) {\n selected = [...selected, day.date];\n } else {\n selected = selected.slice(0, index).concat(selected.slice(index + 1));\n }\n }\n\n return normalizeMultipleActionValue({ date: selected });\n }\n\n // Methods\n registerCalendar() {\n if (window) {\n // @ts-expect-error Property '__powerCalendars'\n window.__powerCalendars = window.__powerCalendars || {}; // TODO: weakmap??\n // @ts-expect-error Property '__powerCalendars'\n window.__powerCalendars[this.publicAPI.uniqueId] = this;\n }\n }\n\n unregisterCalendar() {\n // @ts-expect-error Property '__powerCalendars'\n if (window && window.__powerCalendars?.[guidFor(this)]) {\n // @ts-expect-error Property '__powerCalendars'\n delete window.__powerCalendars[guidFor(this)];\n }\n }\n}\n"],"names":["PowerCalendarMultipleComponent","Component","g","prototype","service","i","void 0","tracked","navComponent","PowerCalendarNavComponent","daysComponent","PowerCalendarMultipleDaysComponent","constructor","owner","args","registerCalendar","onInit","publicAPI","willDestroy","unregisterCalendar","publicActions","publicActionsObject","onSelect","select","onCenterChange","changeCenterTask","currentCenter","selected","_selected","undefined","value","isArray","date","normalizedDate","normalizeDate","Date","push","v","center","powerCalendar","getDate","uniqueId","guidFor","type","_calendarType","loading","isRunning","locale","actions","tagWithDefault","tag","_buildTask","context","generator","newCenter","calendar","e","assert","normalizeCalendarValue","dayOrDays","Object","days","_buildCollection","n","action","day","index","findIndex","selectedDate","isSame","slice","concat","normalizeMultipleActionValue","window","__powerCalendars","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"days.js","sources":["../../../src/components/power-calendar-range/days.hbs","../../../src/components/power-calendar-range/days.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! template-lint-disable no-invalid-interactive }}\\n<div\\n class=\\\"ember-power-calendar-days\\\"\\n data-power-calendar-id={{or @calendar.calendarUniqueId @calendar.uniqueId}}\\n {{on \\\"click\\\" this.handleClick}}\\n ...attributes\\n>\\n <div class=\\\"ember-power-calendar-row ember-power-calendar-weekdays\\\">\\n {{#each this.weekdaysNames as |wdn|}}\\n <div class=\\\"ember-power-calendar-weekday\\\">{{wdn}}</div>\\n {{/each}}\\n </div>\\n <div class=\\\"ember-power-calendar-day-grid\\\" {{on \\\"keydown\\\" this.handleKeyDown}}>\\n {{#each this.weeks key=\\'id\\' as |week|}}\\n <div class=\\\"ember-power-calendar-row ember-power-calendar-week\\\" data-missing-days={{week.missingDays}}>\\n {{#each week.days key=\\'id\\' as |day|}}\\n <button type=\\\"button\\\"\\n data-date=\\\"{{day.id}}\\\"\\n class={{ember-power-calendar-day-classes day @calendar this.weeks @dayClass}}\\n {{on \\\"focus\\\" this.handleDayFocus}}\\n {{on \\\"blur\\\" this.handleDayBlur}}\\n disabled={{day.isDisabled}}>\\n {{#if (has-block)}}\\n {{yield day @calendar this.weeks}}\\n {{else}}\\n {{day.number}}\\n {{/if}}\\n </button>\\n {{/each}}\\n </div>\\n {{/each}}\\n </div>\\n</div>\\n\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { scheduleOnce } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport type {\n PowerCalendarDaysArgs,\n PowerCalendarDaysSignature,\n} from '../power-calendar/days.ts';\nimport {\n isBetween,\n isSame,\n diff,\n isBefore,\n add,\n withLocale,\n getWeekdaysMin,\n getWeekdaysShort,\n getWeekdays,\n normalizeDate,\n type PowerCalendarDay,\n} from '../../utils.ts';\nimport type { PowerCalendarRangeAPI } from '../power-calendar-range.ts';\nimport {\n buildDay,\n firstDay,\n lastDay,\n localeStartOfWeekOrFallback,\n weekdaysNames,\n weeks,\n handleDayKeyDown,\n focusDate,\n handleClick,\n type TWeekdayFormat,\n type Week,\n} from '../../-private/days-utils.ts';\nimport type PowerCalendarService from '../../services/power-calendar.ts';\n\ninterface PowerCalendarMultipleDaysArgs\n extends Omit<PowerCalendarDaysArgs, 'selected'> {\n selected?: {\n start: Date | null;\n end: Date | null;\n };\n}\n\ninterface PowerCalendarRangeSignature\n extends Omit<PowerCalendarDaysSignature, 'Args'> {\n Args: PowerCalendarMultipleDaysArgs;\n}\n\nexport default class PowerCalendarRangeDaysComponent extends Component<PowerCalendarRangeSignature> {\n @service declare powerCalendar: PowerCalendarService;\n\n @tracked focusedId: string | null = null;\n\n get weekdayFormat(): TWeekdayFormat {\n return this.args.weekdayFormat || 'short'; // \"min\" | \"short\" | \"long\"\n }\n\n get showDaysAround(): boolean {\n return this.args.showDaysAround !== undefined\n ? this.args.showDaysAround\n : true;\n }\n\n get weekdaysMin(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdaysMin) as string[];\n }\n\n get weekdaysShort(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdaysShort) as string[];\n }\n\n get weekdays(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdays) as string[];\n }\n\n get localeStartOfWeek(): number {\n return localeStartOfWeekOrFallback(\n this.args.startOfWeek,\n this.args.calendar.locale,\n );\n }\n\n get weekdaysNames(): string[] {\n return weekdaysNames(\n this.localeStartOfWeek,\n this.weekdayFormat,\n this.weekdays,\n this.weekdaysMin,\n this.weekdaysShort,\n );\n }\n\n get days(): PowerCalendarDay[] {\n const today = this.powerCalendar.getDate();\n const theLastDay = lastDay(this.localeStartOfWeek, this.currentCenter);\n let day = firstDay(this.currentCenter, this.localeStartOfWeek);\n const days: PowerCalendarDay[] = [];\n while (isBefore(day, theLastDay)) {\n days.push(\n this.buildDay(day, today, this.args.calendar as PowerCalendarRangeAPI),\n );\n day = add(day, 1, 'day');\n }\n return days;\n }\n\n get weeks(): Week[] {\n return weeks(this.days, this.showDaysAround);\n }\n\n get currentCenter(): Date {\n let center = this.args.center;\n\n if (!center) {\n center = this.args.selected?.start || this.args.calendar.center;\n }\n return normalizeDate(center) || this.args.calendar.center;\n }\n\n // Actions\n @action\n handleDayFocus(e: FocusEvent): void {\n scheduleOnce(\n 'actions',\n this,\n this._updateFocused,\n (e.target as HTMLElement).dataset['date'],\n );\n }\n\n @action\n handleDayBlur(): void {\n scheduleOnce('actions', this, this._updateFocused, null);\n }\n\n @action\n handleKeyDown(e: KeyboardEvent): void {\n const day = handleDayKeyDown(e, this.focusedId, this.days);\n if (!day) {\n return;\n }\n this.focusedId = day.id;\n scheduleOnce(\n 'afterRender',\n this,\n focusDate,\n this.args.calendar.uniqueId,\n this.focusedId ?? '',\n );\n }\n\n @action\n handleClick(e: MouseEvent) {\n handleClick(e, this.days, this.args.calendar);\n }\n\n // Methods\n buildDay(date: Date, today: Date, calendar: PowerCalendarRangeAPI) {\n const day = buildDay(\n date,\n today,\n calendar,\n this.focusedId,\n this.currentCenter,\n this.dayIsSelected.bind(this),\n this.args.minDate,\n this.args.maxDate,\n this.args.disabledDates,\n );\n\n const { start, end } = calendar.selected || { start: null, end: null };\n if (start && end) {\n day.isSelected = isBetween(date, start, end, 'day', '[]');\n day.isRangeStart = day.isSelected && isSame(date, start, 'day');\n day.isRangeEnd = day.isSelected && isSame(date, end, 'day');\n } else {\n day.isRangeEnd = false;\n if (!start) {\n day.isRangeStart = false;\n } else {\n day.isRangeStart = day.isSelected = isSame(date, start, 'day');\n if (!day.isDisabled) {\n const diffInMs = Math.abs(diff(day.date, start));\n const minRange = calendar.minRange;\n const maxRange = calendar.maxRange;\n day.isDisabled =\n (minRange && diffInMs < minRange) ||\n (maxRange !== null &&\n maxRange !== undefined &&\n diffInMs > maxRange);\n }\n }\n }\n return day;\n }\n\n dayIsSelected() {\n return false;\n }\n\n _updateFocused(id?: string | null) {\n this.focusedId = id ?? null;\n }\n}\n"],"names":["PowerCalendarRangeDaysComponent","Component","g","this","prototype","service","i","void 0","tracked","weekdayFormat","args","showDaysAround","undefined","weekdaysMin","withLocale","calendar","locale","getWeekdaysMin","weekdaysShort","getWeekdaysShort","weekdays","getWeekdays","localeStartOfWeek","localeStartOfWeekOrFallback","startOfWeek","weekdaysNames","days","today","powerCalendar","getDate","theLastDay","lastDay","currentCenter","day","firstDay","isBefore","push","buildDay","add","weeks","center","selected","start","normalizeDate","handleDayFocus","e","scheduleOnce","_updateFocused","target","dataset","n","action","handleDayBlur","handleKeyDown","handleDayKeyDown","focusedId","id","focusDate","uniqueId","handleClick","date","dayIsSelected","bind","minDate","maxDate","disabledDates","end","isSelected","isBetween","isRangeStart","isSame","isRangeEnd","isDisabled","diffInMs","Math","abs","diff","minRange","maxRange","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"days.js","sources":["../../../src/components/power-calendar-range/days.hbs","../../../src/components/power-calendar-range/days.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! template-lint-disable no-invalid-interactive }}\\n<div\\n class=\\\"ember-power-calendar-days\\\"\\n data-power-calendar-id={{or @calendar.calendarUniqueId @calendar.uniqueId}}\\n {{on \\\"click\\\" this.handleClick}}\\n ...attributes\\n>\\n <div class=\\\"ember-power-calendar-row ember-power-calendar-weekdays\\\">\\n {{#each this.weekdaysNames as |wdn|}}\\n <div class=\\\"ember-power-calendar-weekday\\\">{{wdn}}</div>\\n {{/each}}\\n </div>\\n <div class=\\\"ember-power-calendar-day-grid\\\" {{on \\\"keydown\\\" this.handleKeyDown}}>\\n {{#each this.weeks key=\\'id\\' as |week|}}\\n <div class=\\\"ember-power-calendar-row ember-power-calendar-week\\\" data-missing-days={{week.missingDays}}>\\n {{#each week.days key=\\'id\\' as |day|}}\\n <button type=\\\"button\\\"\\n data-date=\\\"{{day.id}}\\\"\\n class={{ember-power-calendar-day-classes day @calendar this.weeks @dayClass}}\\n {{on \\\"focus\\\" this.handleDayFocus}}\\n {{on \\\"blur\\\" this.handleDayBlur}}\\n disabled={{day.isDisabled}}>\\n {{#if (has-block)}}\\n {{yield day @calendar this.weeks}}\\n {{else}}\\n {{day.number}}\\n {{/if}}\\n </button>\\n {{/each}}\\n </div>\\n {{/each}}\\n </div>\\n</div>\\n\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { scheduleOnce } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport type {\n PowerCalendarDaysArgs,\n PowerCalendarDaysSignature,\n} from '../power-calendar/days.ts';\nimport {\n isBetween,\n isSame,\n diff,\n isBefore,\n add,\n withLocale,\n getWeekdaysMin,\n getWeekdaysShort,\n getWeekdays,\n normalizeDate,\n type PowerCalendarDay,\n} from '../../utils.ts';\nimport type { PowerCalendarRangeAPI } from '../power-calendar-range.ts';\nimport {\n buildDay,\n firstDay,\n lastDay,\n localeStartOfWeekOrFallback,\n weekdaysNames,\n weeks,\n handleDayKeyDown,\n focusDate,\n handleClick,\n type TWeekdayFormat,\n type Week,\n} from '../../-private/days-utils.ts';\nimport type PowerCalendarService from '../../services/power-calendar.ts';\n\ninterface PowerCalendarMultipleDaysArgs\n extends Omit<PowerCalendarDaysArgs, 'selected'> {\n selected?: {\n start: Date | null;\n end: Date | null;\n };\n}\n\ninterface PowerCalendarRangeSignature\n extends Omit<PowerCalendarDaysSignature, 'Args'> {\n Args: PowerCalendarMultipleDaysArgs;\n}\n\nexport default class PowerCalendarRangeDaysComponent extends Component<PowerCalendarRangeSignature> {\n @service declare powerCalendar: PowerCalendarService;\n\n @tracked focusedId: string | null = null;\n\n get weekdayFormat(): TWeekdayFormat {\n return this.args.weekdayFormat || 'short'; // \"min\" | \"short\" | \"long\"\n }\n\n get showDaysAround(): boolean {\n return this.args.showDaysAround !== undefined\n ? this.args.showDaysAround\n : true;\n }\n\n get weekdaysMin(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdaysMin) as string[];\n }\n\n get weekdaysShort(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdaysShort) as string[];\n }\n\n get weekdays(): string[] {\n return withLocale(this.args.calendar.locale, getWeekdays) as string[];\n }\n\n get localeStartOfWeek(): number {\n return localeStartOfWeekOrFallback(\n this.args.startOfWeek,\n this.args.calendar.locale,\n );\n }\n\n get weekdaysNames(): string[] {\n return weekdaysNames(\n this.localeStartOfWeek,\n this.weekdayFormat,\n this.weekdays,\n this.weekdaysMin,\n this.weekdaysShort,\n );\n }\n\n get days(): PowerCalendarDay[] {\n const today = this.powerCalendar.getDate();\n const theLastDay = lastDay(this.localeStartOfWeek, this.currentCenter);\n let day = firstDay(this.currentCenter, this.localeStartOfWeek);\n const days: PowerCalendarDay[] = [];\n while (isBefore(day, theLastDay)) {\n days.push(\n this.buildDay(day, today, this.args.calendar as PowerCalendarRangeAPI),\n );\n day = add(day, 1, 'day');\n }\n return days;\n }\n\n get weeks(): Week[] {\n return weeks(this.days, this.showDaysAround);\n }\n\n get currentCenter(): Date {\n let center = this.args.center;\n\n if (!center) {\n center = this.args.selected?.start || this.args.calendar.center;\n }\n return normalizeDate(center) || this.args.calendar.center;\n }\n\n // Actions\n @action\n handleDayFocus(e: FocusEvent): void {\n scheduleOnce(\n 'actions',\n this,\n this._updateFocused,\n (e.target as HTMLElement).dataset['date'],\n );\n }\n\n @action\n handleDayBlur(): void {\n scheduleOnce('actions', this, this._updateFocused, null);\n }\n\n @action\n handleKeyDown(e: KeyboardEvent): void {\n const day = handleDayKeyDown(e, this.focusedId, this.days);\n if (!day) {\n return;\n }\n this.focusedId = day.id;\n scheduleOnce(\n 'afterRender',\n this,\n focusDate,\n this.args.calendar.uniqueId,\n this.focusedId ?? '',\n );\n }\n\n @action\n handleClick(e: MouseEvent) {\n handleClick(e, this.days, this.args.calendar);\n }\n\n // Methods\n buildDay(date: Date, today: Date, calendar: PowerCalendarRangeAPI) {\n const day = buildDay(\n date,\n today,\n calendar,\n this.focusedId,\n this.currentCenter,\n this.dayIsSelected.bind(this),\n this.args.minDate,\n this.args.maxDate,\n this.args.disabledDates,\n );\n\n const { start, end } = calendar.selected || { start: null, end: null };\n if (start && end) {\n day.isSelected = isBetween(date, start, end, 'day', '[]');\n day.isRangeStart = day.isSelected && isSame(date, start, 'day');\n day.isRangeEnd = day.isSelected && isSame(date, end, 'day');\n } else {\n day.isRangeEnd = false;\n if (!start) {\n day.isRangeStart = false;\n } else {\n day.isRangeStart = day.isSelected = isSame(date, start, 'day');\n if (!day.isDisabled) {\n const diffInMs = Math.abs(diff(day.date, start));\n const minRange = calendar.minRange;\n const maxRange = calendar.maxRange;\n day.isDisabled =\n (minRange && diffInMs < minRange) ||\n (maxRange !== null &&\n maxRange !== undefined &&\n diffInMs > maxRange);\n }\n }\n }\n return day;\n }\n\n dayIsSelected() {\n return false;\n }\n\n _updateFocused(id?: string | null) {\n this.focusedId = id ?? null;\n }\n}\n"],"names":["PowerCalendarRangeDaysComponent","Component","g","prototype","service","i","void 0","tracked","weekdayFormat","args","showDaysAround","undefined","weekdaysMin","withLocale","calendar","locale","getWeekdaysMin","weekdaysShort","getWeekdaysShort","weekdays","getWeekdays","localeStartOfWeek","localeStartOfWeekOrFallback","startOfWeek","weekdaysNames","days","today","powerCalendar","getDate","theLastDay","lastDay","currentCenter","day","firstDay","isBefore","push","buildDay","add","weeks","center","selected","start","normalizeDate","handleDayFocus","e","scheduleOnce","_updateFocused","target","dataset","n","action","handleDayBlur","handleKeyDown","handleDayKeyDown","focusedId","id","focusDate","uniqueId","handleClick","date","dayIsSelected","bind","minDate","maxDate","disabledDates","end","isSelected","isBetween","isRangeStart","isSame","isRangeEnd","isDisabled","diffInMs","Math","abs","diff","minRange","maxRange","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;;;;AACA,eAAe,kBAAkB,CAAC,swCAAswC;;ACkDzxC,MAAMA,+BAA+B,SAASC,SAAS,CAA8B;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,eAAA,EAAA,CACjGC,MAAO,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,cAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,eAAA,CAAA,EAAAC,KAAA,CAAA,EAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,WAAA,EAAA,CAEPI,OAAO,CAAA,EAAA,YAAA;AAAA,MAAA,OAA4B,IAAI,CAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,UAAA,IAAAF,CAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAAC,KAAA,CAAA,EAAA;EAExC,IAAIE,aAAaA,GAAmB;IAClC,OAAO,IAAI,CAACC,IAAI,CAACD,aAAa,IAAI,OAAO,CAAC;AAC5C,GAAA;EAEA,IAAIE,cAAcA,GAAY;AAC5B,IAAA,OAAO,IAAI,CAACD,IAAI,CAACC,cAAc,KAAKC,SAAS,GACzC,IAAI,CAACF,IAAI,CAACC,cAAc,GACxB,IAAI,CAAA;AACV,GAAA;EAEA,IAAIE,WAAWA,GAAa;IAC1B,OAAOC,UAAU,CAAC,IAAI,CAACJ,IAAI,CAACK,QAAQ,CAACC,MAAM,EAAEC,cAAc,CAAC,CAAA;AAC9D,GAAA;EAEA,IAAIC,aAAaA,GAAa;IAC5B,OAAOJ,UAAU,CAAC,IAAI,CAACJ,IAAI,CAACK,QAAQ,CAACC,MAAM,EAAEG,gBAAgB,CAAC,CAAA;AAChE,GAAA;EAEA,IAAIC,QAAQA,GAAa;IACvB,OAAON,UAAU,CAAC,IAAI,CAACJ,IAAI,CAACK,QAAQ,CAACC,MAAM,EAAEK,WAAW,CAAC,CAAA;AAC3D,GAAA;EAEA,IAAIC,iBAAiBA,GAAW;AAC9B,IAAA,OAAOC,2BAA2B,CAChC,IAAI,CAACb,IAAI,CAACc,WAAW,EACrB,IAAI,CAACd,IAAI,CAACK,QAAQ,CAACC,MACrB,CAAC,CAAA;AACH,GAAA;EAEA,IAAIS,aAAaA,GAAa;IAC5B,OAAOA,aAAa,CAClB,IAAI,CAACH,iBAAiB,EACtB,IAAI,CAACb,aAAa,EAClB,IAAI,CAACW,QAAQ,EACb,IAAI,CAACP,WAAW,EAChB,IAAI,CAACK,aACP,CAAC,CAAA;AACH,GAAA;EAEA,IAAIQ,IAAIA,GAAuB;IAC7B,MAAMC,KAAK,GAAG,IAAI,CAACC,aAAa,CAACC,OAAO,EAAE,CAAA;IAC1C,MAAMC,UAAU,GAAGC,OAAO,CAAC,IAAI,CAACT,iBAAiB,EAAE,IAAI,CAACU,aAAa,CAAC,CAAA;IACtE,IAAIC,GAAG,GAAGC,QAAQ,CAAC,IAAI,CAACF,aAAa,EAAE,IAAI,CAACV,iBAAiB,CAAC,CAAA;IAC9D,MAAMI,IAAwB,GAAG,EAAE,CAAA;AACnC,IAAA,OAAOS,QAAQ,CAACF,GAAG,EAAEH,UAAU,CAAC,EAAE;AAChCJ,MAAAA,IAAI,CAACU,IAAI,CACP,IAAI,CAACC,QAAQ,CAACJ,GAAG,EAAEN,KAAK,EAAE,IAAI,CAACjB,IAAI,CAACK,QAAiC,CACvE,CAAC,CAAA;MACDkB,GAAG,GAAGK,GAAG,CAACL,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;AAC1B,KAAA;AACA,IAAA,OAAOP,IAAI,CAAA;AACb,GAAA;EAEA,IAAIa,KAAKA,GAAW;IAClB,OAAOA,KAAK,CAAC,IAAI,CAACb,IAAI,EAAE,IAAI,CAACf,cAAc,CAAC,CAAA;AAC9C,GAAA;EAEA,IAAIqB,aAAaA,GAAS;AACxB,IAAA,IAAIQ,MAAM,GAAG,IAAI,CAAC9B,IAAI,CAAC8B,MAAM,CAAA;IAE7B,IAAI,CAACA,MAAM,EAAE;AACXA,MAAAA,MAAM,GAAG,IAAI,CAAC9B,IAAI,CAAC+B,QAAQ,EAAEC,KAAK,IAAI,IAAI,CAAChC,IAAI,CAACK,QAAQ,CAACyB,MAAM,CAAA;AACjE,KAAA;IACA,OAAOG,aAAa,CAACH,MAAM,CAAC,IAAI,IAAI,CAAC9B,IAAI,CAACK,QAAQ,CAACyB,MAAM,CAAA;AAC3D,GAAA;;AAEA;EAEAI,cAAcA,CAACC,CAAa,EAAQ;AAClCC,IAAAA,YAAY,CACV,SAAS,EACT,IAAI,EACJ,IAAI,CAACC,cAAc,EAClBF,CAAC,CAACG,MAAM,CAAiBC,OAAO,CAAC,MAAM,CAC1C,CAAC,CAAA;AACH,GAAA;AAAC,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAA9C,SAAA,EAAA,gBAAA,EAAA,CARA+C,MAAM,CAAA,CAAA,CAAA;AAAA,GAAA;AAWPC,EAAAA,aAAaA,GAAS;IACpBN,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAACC,cAAc,EAAE,IAAI,CAAC,CAAA;AAC1D,GAAA;AAAC,EAAA;IAAAG,CAAA,CAAA,IAAA,CAAA9C,SAAA,EAAA,eAAA,EAAA,CAHA+C,MAAM,CAAA,CAAA,CAAA;AAAA,GAAA;EAMPE,aAAaA,CAACR,CAAgB,EAAQ;AACpC,IAAA,MAAMZ,GAAG,GAAGqB,gBAAgB,CAACT,CAAC,EAAE,IAAI,CAACU,SAAS,EAAE,IAAI,CAAC7B,IAAI,CAAC,CAAA;IAC1D,IAAI,CAACO,GAAG,EAAE;AACR,MAAA,OAAA;AACF,KAAA;AACA,IAAA,IAAI,CAACsB,SAAS,GAAGtB,GAAG,CAACuB,EAAE,CAAA;IACvBV,YAAY,CACV,aAAa,EACb,IAAI,EACJW,SAAS,EACT,IAAI,CAAC/C,IAAI,CAACK,QAAQ,CAAC2C,QAAQ,EAC3B,IAAI,CAACH,SAAS,IAAI,EACpB,CAAC,CAAA;AACH,GAAA;AAAC,EAAA;IAAAL,CAAA,CAAA,IAAA,CAAA9C,SAAA,EAAA,eAAA,EAAA,CAdA+C,MAAM,CAAA,CAAA,CAAA;AAAA,GAAA;EAiBPQ,WAAWA,CAACd,CAAa,EAAE;AACzBc,IAAAA,WAAW,CAACd,CAAC,EAAE,IAAI,CAACnB,IAAI,EAAE,IAAI,CAAChB,IAAI,CAACK,QAAQ,CAAC,CAAA;AAC/C,GAAA;;AAEA;AAAA,EAAA;IAAAmC,CAAA,CAAA,IAAA,CAAA9C,SAAA,EAAA,aAAA,EAAA,CALC+C,MAAM,CAAA,CAAA,CAAA;AAAA,GAAA;AAMPd,EAAAA,QAAQA,CAACuB,IAAU,EAAEjC,KAAW,EAAEZ,QAA+B,EAAE;IACjE,MAAMkB,GAAG,GAAGI,QAAQ,CAClBuB,IAAI,EACJjC,KAAK,EACLZ,QAAQ,EACR,IAAI,CAACwC,SAAS,EACd,IAAI,CAACvB,aAAa,EAClB,IAAI,CAAC6B,aAAa,CAACC,IAAI,CAAC,IAAI,CAAC,EAC7B,IAAI,CAACpD,IAAI,CAACqD,OAAO,EACjB,IAAI,CAACrD,IAAI,CAACsD,OAAO,EACjB,IAAI,CAACtD,IAAI,CAACuD,aACZ,CAAC,CAAA;IAED,MAAM;MAAEvB,KAAK;AAAEwB,MAAAA,GAAAA;AAAI,KAAC,GAAGnD,QAAQ,CAAC0B,QAAQ,IAAI;AAAEC,MAAAA,KAAK,EAAE,IAAI;AAAEwB,MAAAA,GAAG,EAAE,IAAA;KAAM,CAAA;IACtE,IAAIxB,KAAK,IAAIwB,GAAG,EAAE;AAChBjC,MAAAA,GAAG,CAACkC,UAAU,GAAGC,SAAS,CAACR,IAAI,EAAElB,KAAK,EAAEwB,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;AACzDjC,MAAAA,GAAG,CAACoC,YAAY,GAAGpC,GAAG,CAACkC,UAAU,IAAIG,MAAM,CAACV,IAAI,EAAElB,KAAK,EAAE,KAAK,CAAC,CAAA;AAC/DT,MAAAA,GAAG,CAACsC,UAAU,GAAGtC,GAAG,CAACkC,UAAU,IAAIG,MAAM,CAACV,IAAI,EAAEM,GAAG,EAAE,KAAK,CAAC,CAAA;AAC7D,KAAC,MAAM;MACLjC,GAAG,CAACsC,UAAU,GAAG,KAAK,CAAA;MACtB,IAAI,CAAC7B,KAAK,EAAE;QACVT,GAAG,CAACoC,YAAY,GAAG,KAAK,CAAA;AAC1B,OAAC,MAAM;AACLpC,QAAAA,GAAG,CAACoC,YAAY,GAAGpC,GAAG,CAACkC,UAAU,GAAGG,MAAM,CAACV,IAAI,EAAElB,KAAK,EAAE,KAAK,CAAC,CAAA;AAC9D,QAAA,IAAI,CAACT,GAAG,CAACuC,UAAU,EAAE;AACnB,UAAA,MAAMC,QAAQ,GAAGC,IAAI,CAACC,GAAG,CAACC,IAAI,CAAC3C,GAAG,CAAC2B,IAAI,EAAElB,KAAK,CAAC,CAAC,CAAA;AAChD,UAAA,MAAMmC,QAAQ,GAAG9D,QAAQ,CAAC8D,QAAQ,CAAA;AAClC,UAAA,MAAMC,QAAQ,GAAG/D,QAAQ,CAAC+D,QAAQ,CAAA;AAClC7C,UAAAA,GAAG,CAACuC,UAAU,GACXK,QAAQ,IAAIJ,QAAQ,GAAGI,QAAQ,IAC/BC,QAAQ,KAAK,IAAI,IAChBA,QAAQ,KAAKlE,SAAS,IACtB6D,QAAQ,GAAGK,QAAS,CAAA;AAC1B,SAAA;AACF,OAAA;AACF,KAAA;AACA,IAAA,OAAO7C,GAAG,CAAA;AACZ,GAAA;AAEA4B,EAAAA,aAAaA,GAAG;AACd,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;EAEAd,cAAcA,CAACS,EAAkB,EAAE;AACjC,IAAA,IAAI,CAACD,SAAS,GAAGC,EAAE,IAAI,IAAI,CAAA;AAC7B,GAAA;AACF,CAAA;AAACuB,oBAAA,CAAAC,QAAA,EA3JoB/E,+BAA+B,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"power-calendar-range.js","sources":["../../src/components/power-calendar-range.hbs","../../src/components/power-calendar-range.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{#let (assign this.publicAPI (hash\\n Nav=(component (ensure-safe-component (or @navComponent this.navComponent)) calendar=(readonly this.publicAPI))\\n Days=(component (ensure-safe-component (or @daysComponent this.daysComponent)) calendar=(readonly this.publicAPI))\\n)) as |calendar|}}\\n {{#let (element this.tagWithDefault) as |Tag|}}\\n <Tag class=\\\"ember-power-calendar\\\" ...attributes id={{calendar.uniqueId}}>\\n {{#if (has-block)}}\\n {{yield calendar}}\\n {{else}}\\n <calendar.Nav/>\\n <calendar.Days/>\\n {{/if}}\\n </Tag>\\n {{/let}}\\n{{/let}}\\n\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { guidFor } from '@ember/object/internals';\nimport { assert } from '@ember/debug';\nimport { task } from 'ember-concurrency';\nimport PowerCalendarRangeDaysComponent from './power-calendar-range/days.ts';\nimport PowerCalendarNavComponent from './power-calendar/nav.ts';\nimport { publicActionsObject } from '../-private/utils.ts';\nimport {\n normalizeDate,\n normalizeRangeActionValue,\n diff,\n isAfter,\n isBefore,\n normalizeDuration,\n normalizeCalendarValue,\n type NormalizeRangeActionValue,\n type PowerCalendarDay,\n type SelectedPowerCalendarRange,\n} from '../utils.ts';\nimport type {\n PowerCalendarAPI,\n PowerCalendarSignature,\n PowerCalendarArgs,\n TCalendarType,\n SelectedDays,\n PowerCalendarActions,\n CalendarDay,\n CalendarAPI,\n} from './power-calendar.ts';\nimport type Owner from '@ember/owner';\nimport type { ComponentLike } from '@glint/template';\nimport type PowerCalendarService from '../services/power-calendar.ts';\n\nexport interface PowerCalendarRangeDay extends Omit<PowerCalendarDay, 'date'> {\n date: SelectedPowerCalendarRange;\n}\n\nexport const DAY_IN_MS = 86400000;\n\nexport type TPowerCalendarRangeOnSelect = (\n day: NormalizeRangeActionValue,\n calendar: PowerCalendarRangeAPI,\n event: MouseEvent,\n) => void;\n\ninterface PowerCalendarRangeArgs\n extends Omit<PowerCalendarArgs, 'selected' | 'onSelect'> {\n selected?: SelectedPowerCalendarRange;\n minRange?: number;\n maxRange?: number;\n proximitySelection?: boolean;\n onSelect?: TPowerCalendarRangeOnSelect;\n}\n\nexport interface PowerCalendarRangeDefaultBlock extends PowerCalendarRangeAPI {\n NavComponent: ComponentLike<any>;\n DaysComponent: ComponentLike<any>;\n}\n\ninterface PowerCalendarRangeSignature\n extends Omit<PowerCalendarSignature, 'Args' | 'Blocks'> {\n Args: PowerCalendarRangeArgs;\n Blocks: {\n default: [PowerCalendarRangeDefaultBlock];\n };\n}\n\nexport interface PowerCalendarRangeAPI\n extends Omit<PowerCalendarAPI, 'selected'> {\n selected?: SelectedPowerCalendarRange;\n minRange?: number | null;\n maxRange?: number | null;\n}\n\nexport default class PowerCalendarRangeComponent extends Component<PowerCalendarRangeSignature> {\n @service declare powerCalendar: PowerCalendarService;\n\n @tracked center = null;\n @tracked _calendarType: TCalendarType = 'range';\n @tracked _selected?: SelectedDays;\n\n navComponent: ComponentLike<any> = PowerCalendarNavComponent;\n daysComponent: ComponentLike<any> = PowerCalendarRangeDaysComponent;\n\n // Lifecycle hooks\n constructor(owner: Owner, args: PowerCalendarRangeArgs) {\n super(owner, args);\n this.registerCalendar();\n if (this.args.onInit) {\n this.args.onInit(this.publicAPI);\n }\n }\n\n willDestroy(): void {\n super.willDestroy();\n this.unregisterCalendar();\n }\n\n get publicActions(): PowerCalendarActions {\n return publicActionsObject(\n this.args.onSelect,\n this.select,\n this.args.onCenterChange,\n this.changeCenterTask,\n this.currentCenter,\n );\n }\n\n get selected(): SelectedPowerCalendarRange {\n if (this._selected) {\n return this._selected as SelectedPowerCalendarRange;\n }\n\n if (this.args.selected) {\n return {\n start: normalizeDate(this.args.selected.start),\n end: normalizeDate(this.args.selected.end),\n };\n }\n\n return { start: undefined, end: undefined };\n }\n\n set selected(v) {\n if (v === undefined || v === null) {\n v = {};\n }\n this._selected = {\n start: normalizeDate(v.start),\n end: normalizeDate(v.end),\n };\n }\n\n get currentCenter(): Date {\n let center = this.args.center;\n if (!center) {\n center = this.selected.start || this.powerCalendar.getDate();\n }\n return normalizeDate(center) || this.powerCalendar.getDate();\n }\n\n get publicAPI(): PowerCalendarRangeAPI {\n return {\n uniqueId: guidFor(this),\n type: this._calendarType,\n selected: this.selected,\n loading: this.changeCenterTask.isRunning,\n center: this.currentCenter,\n locale: this.args.locale || this.powerCalendar.locale,\n actions: this.publicActions,\n minRange: this.minRange,\n maxRange: this.maxRange,\n };\n }\n\n get tagWithDefault(): string {\n if (this.args.tag === undefined || this.args.tag === null) {\n return 'div';\n }\n return this.args.tag;\n }\n\n get proximitySelection(): boolean {\n return this.args.proximitySelection !== undefined\n ? this.args.proximitySelection\n : false;\n }\n\n get minRange(): number | null {\n if (this.args.minRange !== undefined) {\n return this._formatRange(this.args.minRange) as number;\n }\n\n return DAY_IN_MS;\n }\n\n get maxRange(): number | null {\n if (this.args.maxRange !== undefined) {\n return this._formatRange(this.args.maxRange) as number;\n }\n\n return null;\n }\n\n // Tasks\n changeCenterTask = task(\n async (newCenter: Date, calendar: PowerCalendarRangeAPI, e: MouseEvent) => {\n assert(\n \"You attempted to move the center of a calendar that doesn't receive an `@onCenterChange` action.\",\n typeof this.args.onCenterChange === 'function',\n );\n const value = normalizeCalendarValue({ date: newCenter });\n await this.args.onCenterChange(value, calendar, e);\n },\n );\n\n // Actions\n @action\n select(day: CalendarDay, calendar: CalendarAPI, e: MouseEvent) {\n const { date } = day as NormalizeRangeActionValue;\n assert(\n 'date must be either a Date, or a Range',\n date &&\n (ownProp(date, 'start') ||\n ownProp(date, 'end') ||\n date instanceof Date),\n );\n\n let range: NormalizeRangeActionValue;\n\n if (ownProp(date, 'start') && ownProp(date, 'end')) {\n range = { date };\n } else {\n range = this._buildRange({ date } as { date: Date });\n }\n\n const { start, end } = range.date;\n if (start && end) {\n const { minRange, maxRange } = this.publicAPI;\n const diffInMs = Math.abs(diff(end, start));\n if (\n diffInMs < (minRange ?? DAY_IN_MS) ||\n (maxRange && diffInMs > maxRange)\n ) {\n return;\n }\n }\n\n if (this.args.onSelect) {\n this.args.onSelect(range, calendar as PowerCalendarRangeAPI, e);\n }\n }\n\n _formatRange(v: number | undefined) {\n if (typeof v === 'number') {\n return v * DAY_IN_MS;\n }\n\n return normalizeDuration(v === undefined ? DAY_IN_MS : v);\n }\n\n // Methods\n _buildRange(day: { date: Date }): NormalizeRangeActionValue {\n const selected = this.selected || { start: null, end: null };\n const { start, end } = selected;\n\n if (this.proximitySelection) {\n return this._buildRangeByProximity(day, start, end);\n }\n\n return this._buildDefaultRange(day, start, end);\n }\n\n _buildRangeByProximity(\n day: { date: Date },\n start?: Date | null,\n end?: Date | null,\n ): NormalizeRangeActionValue {\n if (start && end) {\n const changeStart =\n Math.abs(diff(day.date, end)) > Math.abs(diff(day.date, start));\n\n return normalizeRangeActionValue({\n date: {\n start: changeStart ? day.date : start,\n end: changeStart ? end : day.date,\n },\n });\n }\n\n if (start && isBefore(day.date, start)) {\n return normalizeRangeActionValue({\n date: { start: day.date, end: null },\n });\n }\n\n return this._buildDefaultRange(day, start, end);\n }\n\n _buildDefaultRange(\n day: { date: Date },\n start?: Date | null,\n end?: Date | null,\n ): NormalizeRangeActionValue {\n if (start && !end) {\n if (isAfter(start, day.date)) {\n return normalizeRangeActionValue({\n date: { start: day.date, end: start },\n });\n }\n return normalizeRangeActionValue({\n date: { start: start, end: day.date },\n });\n }\n\n return normalizeRangeActionValue({ date: { start: day.date, end: null } });\n }\n\n // Methods\n registerCalendar() {\n if (window) {\n // @ts-expect-error Property '__powerCalendars'\n window.__powerCalendars = window.__powerCalendars || {}; // TODO: weakmap??\n // @ts-expect-error Property '__powerCalendars'\n window.__powerCalendars[this.publicAPI.uniqueId] = this;\n }\n }\n\n unregisterCalendar() {\n // @ts-expect-error Property '__powerCalendars'\n if (window && window.__powerCalendars?.[guidFor(this)]) {\n // @ts-expect-error Property '__powerCalendars'\n delete window.__powerCalendars[guidFor(this)];\n }\n }\n}\n\nfunction ownProp<T = { [key: string | number]: any }>(obj: T, prop: keyof T) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n"],"names":["DAY_IN_MS","PowerCalendarRangeComponent","Component","g","this","prototype","service","i","void 0","tracked","navComponent","PowerCalendarNavComponent","daysComponent","PowerCalendarRangeDaysComponent","constructor","owner","args","registerCalendar","onInit","publicAPI","willDestroy","unregisterCalendar","publicActions","publicActionsObject","onSelect","select","onCenterChange","changeCenterTask","currentCenter","selected","_selected","start","normalizeDate","end","undefined","v","center","powerCalendar","getDate","uniqueId","guidFor","type","_calendarType","loading","isRunning","locale","actions","minRange","maxRange","tagWithDefault","tag","proximitySelection","_formatRange","_buildTask","context","generator","newCenter","calendar","e","assert","value","normalizeCalendarValue","date","day","ownProp","Date","range","_buildRange","diffInMs","Math","abs","diff","n","action","normalizeDuration","_buildRangeByProximity","_buildDefaultRange","changeStart","normalizeRangeActionValue","isBefore","isAfter","window","__powerCalendars","obj","prop","Object","hasOwnProperty","call","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"power-calendar-range.js","sources":["../../src/components/power-calendar-range.hbs","../../src/components/power-calendar-range.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{#let (assign this.publicAPI (hash\\n Nav=(component (ensure-safe-component (or @navComponent this.navComponent)) calendar=(readonly this.publicAPI))\\n Days=(component (ensure-safe-component (or @daysComponent this.daysComponent)) calendar=(readonly this.publicAPI))\\n)) as |calendar|}}\\n {{#let (element this.tagWithDefault) as |Tag|}}\\n <Tag class=\\\"ember-power-calendar\\\" ...attributes id={{calendar.uniqueId}}>\\n {{#if (has-block)}}\\n {{yield calendar}}\\n {{else}}\\n <calendar.Nav/>\\n <calendar.Days/>\\n {{/if}}\\n </Tag>\\n {{/let}}\\n{{/let}}\\n\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { guidFor } from '@ember/object/internals';\nimport { assert } from '@ember/debug';\nimport { task } from 'ember-concurrency';\nimport PowerCalendarRangeDaysComponent from './power-calendar-range/days.ts';\nimport PowerCalendarNavComponent from './power-calendar/nav.ts';\nimport { publicActionsObject } from '../-private/utils.ts';\nimport {\n normalizeDate,\n normalizeRangeActionValue,\n diff,\n isAfter,\n isBefore,\n normalizeDuration,\n normalizeCalendarValue,\n type NormalizeRangeActionValue,\n type PowerCalendarDay,\n type SelectedPowerCalendarRange,\n} from '../utils.ts';\nimport type {\n PowerCalendarAPI,\n PowerCalendarSignature,\n PowerCalendarArgs,\n TCalendarType,\n SelectedDays,\n PowerCalendarActions,\n CalendarDay,\n CalendarAPI,\n} from './power-calendar.ts';\nimport type Owner from '@ember/owner';\nimport type { ComponentLike } from '@glint/template';\nimport type PowerCalendarService from '../services/power-calendar.ts';\n\nexport interface PowerCalendarRangeDay extends Omit<PowerCalendarDay, 'date'> {\n date: SelectedPowerCalendarRange;\n}\n\nexport const DAY_IN_MS = 86400000;\n\nexport type TPowerCalendarRangeOnSelect = (\n day: NormalizeRangeActionValue,\n calendar: PowerCalendarRangeAPI,\n event: MouseEvent,\n) => void;\n\ninterface PowerCalendarRangeArgs\n extends Omit<PowerCalendarArgs, 'selected' | 'onSelect'> {\n selected?: SelectedPowerCalendarRange;\n minRange?: number;\n maxRange?: number;\n proximitySelection?: boolean;\n onSelect?: TPowerCalendarRangeOnSelect;\n}\n\nexport interface PowerCalendarRangeDefaultBlock extends PowerCalendarRangeAPI {\n NavComponent: ComponentLike<any>;\n DaysComponent: ComponentLike<any>;\n}\n\ninterface PowerCalendarRangeSignature\n extends Omit<PowerCalendarSignature, 'Args' | 'Blocks'> {\n Args: PowerCalendarRangeArgs;\n Blocks: {\n default: [PowerCalendarRangeDefaultBlock];\n };\n}\n\nexport interface PowerCalendarRangeAPI\n extends Omit<PowerCalendarAPI, 'selected'> {\n selected?: SelectedPowerCalendarRange;\n minRange?: number | null;\n maxRange?: number | null;\n}\n\nexport default class PowerCalendarRangeComponent extends Component<PowerCalendarRangeSignature> {\n @service declare powerCalendar: PowerCalendarService;\n\n @tracked center = null;\n @tracked _calendarType: TCalendarType = 'range';\n @tracked _selected?: SelectedDays;\n\n navComponent: ComponentLike<any> = PowerCalendarNavComponent;\n daysComponent: ComponentLike<any> = PowerCalendarRangeDaysComponent;\n\n // Lifecycle hooks\n constructor(owner: Owner, args: PowerCalendarRangeArgs) {\n super(owner, args);\n this.registerCalendar();\n if (this.args.onInit) {\n this.args.onInit(this.publicAPI);\n }\n }\n\n willDestroy(): void {\n super.willDestroy();\n this.unregisterCalendar();\n }\n\n get publicActions(): PowerCalendarActions {\n return publicActionsObject(\n this.args.onSelect,\n this.select,\n this.args.onCenterChange,\n this.changeCenterTask,\n this.currentCenter,\n );\n }\n\n get selected(): SelectedPowerCalendarRange {\n if (this._selected) {\n return this._selected as SelectedPowerCalendarRange;\n }\n\n if (this.args.selected) {\n return {\n start: normalizeDate(this.args.selected.start),\n end: normalizeDate(this.args.selected.end),\n };\n }\n\n return { start: undefined, end: undefined };\n }\n\n set selected(v) {\n if (v === undefined || v === null) {\n v = {};\n }\n this._selected = {\n start: normalizeDate(v.start),\n end: normalizeDate(v.end),\n };\n }\n\n get currentCenter(): Date {\n let center = this.args.center;\n if (!center) {\n center = this.selected.start || this.powerCalendar.getDate();\n }\n return normalizeDate(center) || this.powerCalendar.getDate();\n }\n\n get publicAPI(): PowerCalendarRangeAPI {\n return {\n uniqueId: guidFor(this),\n type: this._calendarType,\n selected: this.selected,\n loading: this.changeCenterTask.isRunning,\n center: this.currentCenter,\n locale: this.args.locale || this.powerCalendar.locale,\n actions: this.publicActions,\n minRange: this.minRange,\n maxRange: this.maxRange,\n };\n }\n\n get tagWithDefault(): string {\n if (this.args.tag === undefined || this.args.tag === null) {\n return 'div';\n }\n return this.args.tag;\n }\n\n get proximitySelection(): boolean {\n return this.args.proximitySelection !== undefined\n ? this.args.proximitySelection\n : false;\n }\n\n get minRange(): number | null {\n if (this.args.minRange !== undefined) {\n return this._formatRange(this.args.minRange) as number;\n }\n\n return DAY_IN_MS;\n }\n\n get maxRange(): number | null {\n if (this.args.maxRange !== undefined) {\n return this._formatRange(this.args.maxRange) as number;\n }\n\n return null;\n }\n\n // Tasks\n changeCenterTask = task(\n async (newCenter: Date, calendar: PowerCalendarRangeAPI, e: MouseEvent) => {\n assert(\n \"You attempted to move the center of a calendar that doesn't receive an `@onCenterChange` action.\",\n typeof this.args.onCenterChange === 'function',\n );\n const value = normalizeCalendarValue({ date: newCenter });\n await this.args.onCenterChange(value, calendar, e);\n },\n );\n\n // Actions\n @action\n select(day: CalendarDay, calendar: CalendarAPI, e: MouseEvent) {\n const { date } = day as NormalizeRangeActionValue;\n assert(\n 'date must be either a Date, or a Range',\n date &&\n (ownProp(date, 'start') ||\n ownProp(date, 'end') ||\n date instanceof Date),\n );\n\n let range: NormalizeRangeActionValue;\n\n if (ownProp(date, 'start') && ownProp(date, 'end')) {\n range = { date };\n } else {\n range = this._buildRange({ date } as { date: Date });\n }\n\n const { start, end } = range.date;\n if (start && end) {\n const { minRange, maxRange } = this.publicAPI;\n const diffInMs = Math.abs(diff(end, start));\n if (\n diffInMs < (minRange ?? DAY_IN_MS) ||\n (maxRange && diffInMs > maxRange)\n ) {\n return;\n }\n }\n\n if (this.args.onSelect) {\n this.args.onSelect(range, calendar as PowerCalendarRangeAPI, e);\n }\n }\n\n _formatRange(v: number | undefined) {\n if (typeof v === 'number') {\n return v * DAY_IN_MS;\n }\n\n return normalizeDuration(v === undefined ? DAY_IN_MS : v);\n }\n\n // Methods\n _buildRange(day: { date: Date }): NormalizeRangeActionValue {\n const selected = this.selected || { start: null, end: null };\n const { start, end } = selected;\n\n if (this.proximitySelection) {\n return this._buildRangeByProximity(day, start, end);\n }\n\n return this._buildDefaultRange(day, start, end);\n }\n\n _buildRangeByProximity(\n day: { date: Date },\n start?: Date | null,\n end?: Date | null,\n ): NormalizeRangeActionValue {\n if (start && end) {\n const changeStart =\n Math.abs(diff(day.date, end)) > Math.abs(diff(day.date, start));\n\n return normalizeRangeActionValue({\n date: {\n start: changeStart ? day.date : start,\n end: changeStart ? end : day.date,\n },\n });\n }\n\n if (start && isBefore(day.date, start)) {\n return normalizeRangeActionValue({\n date: { start: day.date, end: null },\n });\n }\n\n return this._buildDefaultRange(day, start, end);\n }\n\n _buildDefaultRange(\n day: { date: Date },\n start?: Date | null,\n end?: Date | null,\n ): NormalizeRangeActionValue {\n if (start && !end) {\n if (isAfter(start, day.date)) {\n return normalizeRangeActionValue({\n date: { start: day.date, end: start },\n });\n }\n return normalizeRangeActionValue({\n date: { start: start, end: day.date },\n });\n }\n\n return normalizeRangeActionValue({ date: { start: day.date, end: null } });\n }\n\n // Methods\n registerCalendar() {\n if (window) {\n // @ts-expect-error Property '__powerCalendars'\n window.__powerCalendars = window.__powerCalendars || {}; // TODO: weakmap??\n // @ts-expect-error Property '__powerCalendars'\n window.__powerCalendars[this.publicAPI.uniqueId] = this;\n }\n }\n\n unregisterCalendar() {\n // @ts-expect-error Property '__powerCalendars'\n if (window && window.__powerCalendars?.[guidFor(this)]) {\n // @ts-expect-error Property '__powerCalendars'\n delete window.__powerCalendars[guidFor(this)];\n }\n }\n}\n\nfunction ownProp<T = { [key: string | number]: any }>(obj: T, prop: keyof T) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n"],"names":["DAY_IN_MS","PowerCalendarRangeComponent","Component","g","prototype","service","i","void 0","tracked","navComponent","PowerCalendarNavComponent","daysComponent","PowerCalendarRangeDaysComponent","constructor","owner","args","registerCalendar","onInit","publicAPI","willDestroy","unregisterCalendar","publicActions","publicActionsObject","onSelect","select","onCenterChange","changeCenterTask","currentCenter","selected","_selected","start","normalizeDate","end","undefined","v","center","powerCalendar","getDate","uniqueId","guidFor","type","_calendarType","loading","isRunning","locale","actions","minRange","maxRange","tagWithDefault","tag","proximitySelection","_formatRange","_buildTask","context","generator","newCenter","calendar","e","assert","value","normalizeCalendarValue","date","day","ownProp","Date","range","_buildRange","diffInMs","Math","abs","diff","n","action","normalizeDuration","_buildRangeByProximity","_buildDefaultRange","changeStart","normalizeRangeActionValue","isBefore","isAfter","window","__powerCalendars","obj","prop","Object","hasOwnProperty","call","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"power-calendar.js","sources":["../../src/components/power-calendar.hbs","../../src/components/power-calendar.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{#let (assign this.publicAPI (hash\\n Nav=(component (ensure-safe-component (or @navComponent this.navComponent)) calendar=(readonly this.publicAPI))\\n Days=(component (ensure-safe-component (or @daysComponent this.daysComponent)) calendar=(readonly this.publicAPI))\\n)) as |calendar|}}\\n {{#let (element this.tagWithDefault) as |Tag|}}\\n <Tag class=\\\"ember-power-calendar\\\" ...attributes id={{calendar.uniqueId}}>\\n {{#if (has-block)}}\\n {{yield calendar}}\\n {{else}}\\n <calendar.Nav/>\\n <calendar.Days/>\\n {{/if}}\\n </Tag>\\n {{/let}}\\n{{/let}}\\n\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { inject as service } from '@ember/service';\nimport { task } from 'ember-concurrency';\nimport { assert } from '@ember/debug';\nimport type { ComponentLike } from '@glint/template';\nimport {\n normalizeDate,\n normalizeCalendarValue,\n type NormalizeCalendarValue,\n type PowerCalendarDay,\n type SelectedPowerCalendarRange,\n} from '../utils.ts';\nimport PowerCalendarNavComponent from './power-calendar/nav.ts';\nimport PowerCalendarDaysComponent from './power-calendar/days.ts';\nimport type Owner from '@ember/owner';\nimport type PowerCalendarService from '../services/power-calendar.ts';\nimport type {\n PowerCalendarRangeAPI,\n PowerCalendarRangeDay,\n} from './power-calendar-range.ts';\nimport type { PowerCalendarMultipleAPI } from './power-calendar-multiple.ts';\nimport { publicActionsObject } from '../-private/utils.ts';\n\nexport type TCalendarType = 'multiple' | 'range' | 'single';\nexport type TPowerCalendarMoveCenterUnit = 'year' | 'month';\nexport type SelectedDays =\n | SelectedPowerCalendarRange\n | Date\n | Date[]\n | undefined;\nexport type CalendarAPI =\n | PowerCalendarAPI\n | PowerCalendarMultipleAPI\n | PowerCalendarRangeAPI;\n\nexport interface PowerCalendarAPI {\n uniqueId: string;\n calendarUniqueId?: string;\n selected?: SelectedDays;\n loading: boolean;\n center: Date;\n locale: string;\n type: TCalendarType;\n actions: PowerCalendarActions;\n}\n\nexport interface PowerCalendarActions {\n changeCenter?: (\n newCenter: Date,\n calendar: CalendarAPI,\n event: MouseEvent,\n ) => void;\n moveCenter?: (\n step: number,\n unit: TPowerCalendarMoveCenterUnit,\n calendar: PowerCalendarAPI,\n event: MouseEvent,\n ) => void;\n select?: (day: CalendarDay, calendar: CalendarAPI, event: MouseEvent) => void;\n}\n\nexport type TPowerCalendarOnSelect = (\n day: CalendarDay,\n calendar: CalendarAPI,\n event: MouseEvent,\n) => void;\n\nexport interface PowerCalendarArgs {\n daysComponent?: string | ComponentLike<any>;\n locale: string;\n navComponent?: string | ComponentLike<any>;\n onCenterChange?: (\n newCenter: NormalizeCalendarValue,\n calendar: PowerCalendarAPI,\n event: MouseEvent,\n ) => void;\n onInit?: (calendar: PowerCalendarAPI) => void;\n onSelect?: TPowerCalendarOnSelect;\n selected?: SelectedDays;\n center?: Date;\n tag?: string;\n}\n\nexport interface PowerCalendarDefaultBlock extends PowerCalendarAPI {\n NavComponent: ComponentLike<any>;\n DaysComponent: ComponentLike<any>;\n}\n\nexport type CalendarDay =\n | PowerCalendarDay\n | PowerCalendarRangeDay\n | PowerCalendarDay[];\n\nexport interface PowerCalendarSignature {\n Element: HTMLElement;\n Args: PowerCalendarArgs;\n Blocks: {\n default: [PowerCalendarDefaultBlock];\n };\n}\n\nexport default class PowerCalendarComponent extends Component<PowerCalendarSignature> {\n @service declare powerCalendar: PowerCalendarService;\n\n @tracked center = null;\n @tracked _calendarType: TCalendarType = 'single';\n @tracked _selected?: SelectedDays;\n\n navComponent: ComponentLike<any> = PowerCalendarNavComponent;\n daysComponent: ComponentLike<any> = PowerCalendarDaysComponent;\n\n // Lifecycle hooks\n constructor(owner: Owner, args: PowerCalendarArgs) {\n super(owner, args);\n this.registerCalendar();\n if (this.args.onInit) {\n this.args.onInit(this.publicAPI);\n }\n }\n\n willDestroy(): void {\n super.willDestroy();\n this.unregisterCalendar();\n }\n\n get publicActions(): PowerCalendarActions {\n return publicActionsObject(\n this.args.onSelect,\n this.select,\n this.args.onCenterChange,\n this.changeCenterTask,\n this.currentCenter,\n );\n }\n\n get selected(): SelectedDays {\n if (this._selected) {\n return this._selected;\n }\n\n return normalizeDate(this.args.selected as Date);\n }\n\n set selected(v: SelectedDays) {\n this._selected = normalizeDate(v as Date | undefined);\n }\n\n get currentCenter(): Date {\n let center = this.args.center;\n if (!center) {\n center = (this.selected as Date) || this.powerCalendar.getDate();\n }\n return normalizeDate(center) || this.powerCalendar.getDate();\n }\n\n get publicAPI(): PowerCalendarAPI {\n return this._publicAPI;\n }\n\n get _publicAPI(): PowerCalendarAPI {\n return {\n uniqueId: guidFor(this),\n type: this._calendarType,\n selected: this.selected,\n loading: this.changeCenterTask.isRunning,\n center: this.currentCenter,\n locale: this.args.locale || this.powerCalendar.locale,\n actions: this.publicActions,\n };\n }\n\n get tagWithDefault(): string {\n if (this.args.tag === undefined || this.args.tag === null) {\n return 'div';\n }\n return this.args.tag;\n }\n\n // Tasks\n changeCenterTask = task(\n async (newCenter: Date, calendar: PowerCalendarAPI, e: MouseEvent) => {\n assert(\n \"You attempted to move the center of a calendar that doesn't receive an `@onCenterChange` action.\",\n typeof this.args.onCenterChange === 'function',\n );\n const value = normalizeCalendarValue({ date: newCenter });\n await this.args.onCenterChange(value, calendar, e);\n },\n );\n\n // Actions\n @action\n select(day: CalendarDay, calendar: PowerCalendarAPI, e: MouseEvent) {\n if (this.args.onSelect) {\n this.args.onSelect(day, calendar, e);\n }\n }\n\n // Methods\n registerCalendar() {\n if (window) {\n // @ts-expect-error Property '__powerCalendars'\n window.__powerCalendars = window.__powerCalendars || {}; // TODO: weakmap??\n // @ts-expect-error Property '__powerCalendars'\n window.__powerCalendars[this.publicAPI.uniqueId] = this;\n }\n }\n\n unregisterCalendar() {\n // @ts-expect-error Property '__powerCalendars'\n if (window && window.__powerCalendars?.[guidFor(this)]) {\n // @ts-expect-error Property '__powerCalendars'\n delete window.__powerCalendars[guidFor(this)];\n }\n }\n}\n"],"names":["PowerCalendarComponent","Component","g","this","prototype","service","i","void 0","tracked","navComponent","PowerCalendarNavComponent","daysComponent","PowerCalendarDaysComponent","constructor","owner","args","registerCalendar","onInit","publicAPI","willDestroy","unregisterCalendar","publicActions","publicActionsObject","onSelect","select","onCenterChange","changeCenterTask","currentCenter","selected","_selected","normalizeDate","v","center","powerCalendar","getDate","_publicAPI","uniqueId","guidFor","type","_calendarType","loading","isRunning","locale","actions","tagWithDefault","tag","undefined","_buildTask","context","generator","newCenter","calendar","e","assert","value","normalizeCalendarValue","date","day","n","action","window","__powerCalendars","setComponentTemplate","TEMPLATE"],"mappings":"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"}
1
+ {"version":3,"file":"power-calendar.js","sources":["../../src/components/power-calendar.hbs","../../src/components/power-calendar.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{#let (assign this.publicAPI (hash\\n Nav=(component (ensure-safe-component (or @navComponent this.navComponent)) calendar=(readonly this.publicAPI))\\n Days=(component (ensure-safe-component (or @daysComponent this.daysComponent)) calendar=(readonly this.publicAPI))\\n)) as |calendar|}}\\n {{#let (element this.tagWithDefault) as |Tag|}}\\n <Tag class=\\\"ember-power-calendar\\\" ...attributes id={{calendar.uniqueId}}>\\n {{#if (has-block)}}\\n {{yield calendar}}\\n {{else}}\\n <calendar.Nav/>\\n <calendar.Days/>\\n {{/if}}\\n </Tag>\\n {{/let}}\\n{{/let}}\\n\")","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\nimport { inject as service } from '@ember/service';\nimport { task } from 'ember-concurrency';\nimport { assert } from '@ember/debug';\nimport type { ComponentLike } from '@glint/template';\nimport {\n normalizeDate,\n normalizeCalendarValue,\n type NormalizeCalendarValue,\n type PowerCalendarDay,\n type SelectedPowerCalendarRange,\n} from '../utils.ts';\nimport PowerCalendarNavComponent from './power-calendar/nav.ts';\nimport PowerCalendarDaysComponent from './power-calendar/days.ts';\nimport type Owner from '@ember/owner';\nimport type PowerCalendarService from '../services/power-calendar.ts';\nimport type {\n PowerCalendarRangeAPI,\n PowerCalendarRangeDay,\n} from './power-calendar-range.ts';\nimport type { PowerCalendarMultipleAPI } from './power-calendar-multiple.ts';\nimport { publicActionsObject } from '../-private/utils.ts';\n\nexport type TCalendarType = 'multiple' | 'range' | 'single';\nexport type TPowerCalendarMoveCenterUnit = 'year' | 'month';\nexport type SelectedDays =\n | SelectedPowerCalendarRange\n | Date\n | Date[]\n | undefined;\nexport type CalendarAPI =\n | PowerCalendarAPI\n | PowerCalendarMultipleAPI\n | PowerCalendarRangeAPI;\n\nexport interface PowerCalendarAPI {\n uniqueId: string;\n calendarUniqueId?: string;\n selected?: SelectedDays;\n loading: boolean;\n center: Date;\n locale: string;\n type: TCalendarType;\n actions: PowerCalendarActions;\n}\n\nexport interface PowerCalendarActions {\n changeCenter?: (\n newCenter: Date,\n calendar: CalendarAPI,\n event: MouseEvent,\n ) => void;\n moveCenter?: (\n step: number,\n unit: TPowerCalendarMoveCenterUnit,\n calendar: PowerCalendarAPI,\n event: MouseEvent,\n ) => void;\n select?: (day: CalendarDay, calendar: CalendarAPI, event: MouseEvent) => void;\n}\n\nexport type TPowerCalendarOnSelect = (\n day: CalendarDay,\n calendar: CalendarAPI,\n event: MouseEvent,\n) => void;\n\nexport interface PowerCalendarArgs {\n daysComponent?: string | ComponentLike<any>;\n locale: string;\n navComponent?: string | ComponentLike<any>;\n onCenterChange?: (\n newCenter: NormalizeCalendarValue,\n calendar: PowerCalendarAPI,\n event: MouseEvent,\n ) => void;\n onInit?: (calendar: PowerCalendarAPI) => void;\n onSelect?: TPowerCalendarOnSelect;\n selected?: SelectedDays;\n center?: Date;\n tag?: string;\n}\n\nexport interface PowerCalendarDefaultBlock extends PowerCalendarAPI {\n NavComponent: ComponentLike<any>;\n DaysComponent: ComponentLike<any>;\n}\n\nexport type CalendarDay =\n | PowerCalendarDay\n | PowerCalendarRangeDay\n | PowerCalendarDay[];\n\nexport interface PowerCalendarSignature {\n Element: HTMLElement;\n Args: PowerCalendarArgs;\n Blocks: {\n default: [PowerCalendarDefaultBlock];\n };\n}\n\nexport default class PowerCalendarComponent extends Component<PowerCalendarSignature> {\n @service declare powerCalendar: PowerCalendarService;\n\n @tracked center = null;\n @tracked _calendarType: TCalendarType = 'single';\n @tracked _selected?: SelectedDays;\n\n navComponent: ComponentLike<any> = PowerCalendarNavComponent;\n daysComponent: ComponentLike<any> = PowerCalendarDaysComponent;\n\n // Lifecycle hooks\n constructor(owner: Owner, args: PowerCalendarArgs) {\n super(owner, args);\n this.registerCalendar();\n if (this.args.onInit) {\n this.args.onInit(this.publicAPI);\n }\n }\n\n willDestroy(): void {\n super.willDestroy();\n this.unregisterCalendar();\n }\n\n get publicActions(): PowerCalendarActions {\n return publicActionsObject(\n this.args.onSelect,\n this.select,\n this.args.onCenterChange,\n this.changeCenterTask,\n this.currentCenter,\n );\n }\n\n get selected(): SelectedDays {\n if (this._selected) {\n return this._selected;\n }\n\n return normalizeDate(this.args.selected as Date);\n }\n\n set selected(v: SelectedDays) {\n this._selected = normalizeDate(v as Date | undefined);\n }\n\n get currentCenter(): Date {\n let center = this.args.center;\n if (!center) {\n center = (this.selected as Date) || this.powerCalendar.getDate();\n }\n return normalizeDate(center) || this.powerCalendar.getDate();\n }\n\n get publicAPI(): PowerCalendarAPI {\n return this._publicAPI;\n }\n\n get _publicAPI(): PowerCalendarAPI {\n return {\n uniqueId: guidFor(this),\n type: this._calendarType,\n selected: this.selected,\n loading: this.changeCenterTask.isRunning,\n center: this.currentCenter,\n locale: this.args.locale || this.powerCalendar.locale,\n actions: this.publicActions,\n };\n }\n\n get tagWithDefault(): string {\n if (this.args.tag === undefined || this.args.tag === null) {\n return 'div';\n }\n return this.args.tag;\n }\n\n // Tasks\n changeCenterTask = task(\n async (newCenter: Date, calendar: PowerCalendarAPI, e: MouseEvent) => {\n assert(\n \"You attempted to move the center of a calendar that doesn't receive an `@onCenterChange` action.\",\n typeof this.args.onCenterChange === 'function',\n );\n const value = normalizeCalendarValue({ date: newCenter });\n await this.args.onCenterChange(value, calendar, e);\n },\n );\n\n // Actions\n @action\n select(day: CalendarDay, calendar: PowerCalendarAPI, e: MouseEvent) {\n if (this.args.onSelect) {\n this.args.onSelect(day, calendar, e);\n }\n }\n\n // Methods\n registerCalendar() {\n if (window) {\n // @ts-expect-error Property '__powerCalendars'\n window.__powerCalendars = window.__powerCalendars || {}; // TODO: weakmap??\n // @ts-expect-error Property '__powerCalendars'\n window.__powerCalendars[this.publicAPI.uniqueId] = this;\n }\n }\n\n unregisterCalendar() {\n // @ts-expect-error Property '__powerCalendars'\n if (window && window.__powerCalendars?.[guidFor(this)]) {\n // @ts-expect-error Property '__powerCalendars'\n delete window.__powerCalendars[guidFor(this)];\n }\n }\n}\n"],"names":["PowerCalendarComponent","Component","g","prototype","service","i","void 0","tracked","navComponent","PowerCalendarNavComponent","daysComponent","PowerCalendarDaysComponent","constructor","owner","args","registerCalendar","onInit","publicAPI","willDestroy","unregisterCalendar","publicActions","publicActionsObject","onSelect","select","onCenterChange","changeCenterTask","currentCenter","selected","_selected","normalizeDate","v","center","powerCalendar","getDate","_publicAPI","uniqueId","guidFor","type","_calendarType","loading","isRunning","locale","actions","tagWithDefault","tag","undefined","_buildTask","context","generator","newCenter","calendar","e","assert","value","normalizeCalendarValue","date","day","n","action","window","__powerCalendars","setComponentTemplate","TEMPLATE"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"days-utils-D13uOiMt.js","sources":["../src/-private/days-utils.ts"],"sourcesContent":["import { assert } from '@ember/debug';\nimport type { CalendarAPI } from '../components/power-calendar.ts';\nimport {\n endOf,\n endOfWeek,\n formatDate,\n isAfter,\n isBefore,\n isSame,\n localeStartOfWeek,\n normalizeCalendarDay,\n startOf,\n startOfWeek,\n type PowerCalendarDay,\n} from '../utils.ts';\n\nexport const WEEK_DAYS = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\nexport type TWeekdayFormat = 'min' | 'short' | 'long';\n\nexport interface Week {\n id: string;\n days: PowerCalendarDay[];\n missingDays: number;\n}\n\nexport function localeStartOfWeekOrFallback(\n startOfWeek: string | undefined,\n locale: string,\n): number {\n if (startOfWeek) {\n return parseInt(startOfWeek, 10);\n }\n return localeStartOfWeek(locale);\n}\n\nexport function weekdaysNames(\n localeStartOfWeek: number,\n weekdayFormat: TWeekdayFormat,\n weekdays: string[],\n weekdaysMin: string[],\n weekdaysShort: string[],\n): string[] {\n let weekdaysNames;\n if (weekdayFormat === 'long') {\n weekdaysNames = weekdays;\n } else if (weekdayFormat === 'min') {\n weekdaysNames = weekdaysMin;\n } else {\n weekdaysNames = weekdaysShort;\n }\n return weekdaysNames\n .slice(localeStartOfWeek)\n .concat(weekdaysNames.slice(0, localeStartOfWeek));\n}\n\nexport function firstDay(currentCenter: Date, localeStartOfWeek: number): Date {\n const firstDay = startOf(currentCenter, 'month');\n return startOfWeek(firstDay, localeStartOfWeek);\n}\n\nexport function weeks(\n days: PowerCalendarDay[],\n showDaysAround: boolean,\n): Week[] {\n const weeks: Week[] = [];\n let i = 0;\n while (days[i]) {\n let daysOfWeek = days.slice(i, i + 7);\n if (!showDaysAround) {\n daysOfWeek = daysOfWeek.filter((d) => d.isCurrentMonth);\n }\n weeks.push({\n id: `week-of-${daysOfWeek[0]?.id}`,\n days: daysOfWeek,\n missingDays: 7 - daysOfWeek.length,\n });\n i += 7;\n }\n return weeks;\n}\n\nexport function handleDayKeyDown(\n e: KeyboardEvent,\n focusedId: string | null,\n days: PowerCalendarDay[],\n): PowerCalendarDay | undefined {\n if (!focusedId) {\n return;\n }\n let day, index: number | undefined;\n for (let i = 0; i < days.length; i++) {\n if (days[i]?.id === focusedId) {\n index = i;\n break;\n }\n }\n\n if (!index) {\n return;\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n const newIndex = Math.max(index - 7, 0);\n day = days[newIndex];\n if (day?.isDisabled) {\n for (let i = newIndex + 1; i <= index; i++) {\n day = days[i];\n if (!day?.isDisabled) {\n break;\n }\n }\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n const newIndex = Math.min(index + 7, days.length - 1);\n day = days[newIndex];\n if (day?.isDisabled) {\n for (let i = newIndex - 1; i >= index; i--) {\n day = days[i];\n if (!day?.isDisabled) {\n break;\n }\n }\n }\n } else if (e.key === 'ArrowLeft') {\n day = days[Math.max(index - 1, 0)];\n if (day?.isDisabled) {\n return;\n }\n } else if (e.key === 'ArrowRight') {\n day = days[Math.min(index + 1, days.length - 1)];\n if (day?.isDisabled) {\n return;\n }\n } else {\n return;\n }\n\n return day;\n}\n\nexport function focusDate(uniqueId: string, id: string): void {\n const dayElement: HTMLElement | null = document.querySelector(\n `[data-power-calendar-id=\"${uniqueId}\"] [data-date=\"${id}\"]`,\n );\n if (dayElement) {\n dayElement.focus();\n }\n}\n\nexport function buildDay(\n date: Date,\n today: Date,\n calendar: CalendarAPI,\n focusedId: string | null,\n currentCenter: Date,\n dayIsSelected: (date: Date, calendar: CalendarAPI) => boolean,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Array<Date | string>,\n dayIsDisabledExtended?: (\n date: Date,\n calendar: CalendarAPI,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Array<Date | string>,\n ) => boolean,\n): PowerCalendarDay {\n const id = formatDate(date, 'YYYY-MM-DD');\n\n let isDisabled = false;\n if (typeof dayIsDisabledExtended === 'function') {\n isDisabled = dayIsDisabledExtended(\n date,\n calendar,\n minDate,\n maxDate,\n disabledDates,\n );\n } else {\n isDisabled = dayIsDisabled(date, calendar, minDate, maxDate, disabledDates);\n }\n\n return normalizeCalendarDay({\n id,\n number: date.getDate(),\n date: new Date(date),\n isDisabled: isDisabled,\n isFocused: focusedId === id,\n isCurrentMonth: isSame(date, currentCenter, 'month'),\n isToday: isSame(date, today, 'day'),\n isSelected: dayIsSelected(date, calendar),\n } as PowerCalendarDay);\n}\n\nexport function dayIsDisabled(\n date: Date,\n calendar: CalendarAPI,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Array<Date | string>,\n): boolean {\n const isDisabled = !calendar.actions.select;\n if (isDisabled) {\n return true;\n }\n\n if (minDate && isBefore(date, startOf(minDate, 'day'))) {\n return true;\n }\n\n if (maxDate && isAfter(date, endOf(maxDate, 'day'))) {\n return true;\n }\n\n if (disabledDates) {\n const disabledInRange = disabledDates.some((d) => {\n const isSameDay = isSame(date, d as Date, 'day');\n const isWeekDayIncludes =\n WEEK_DAYS.indexOf(d as string) !== -1 && formatDate(date, 'ddd') === d;\n return isSameDay || isWeekDayIncludes;\n });\n\n if (disabledInRange) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function lastDay(localeStartOfWeek: number, currentCenter: Date): Date {\n assert(\n 'The center of the calendar is an invalid date.',\n !isNaN(currentCenter.getTime()),\n );\n const lastDay = endOf(currentCenter, 'month');\n return endOfWeek(lastDay, localeStartOfWeek);\n}\n\nexport function handleClick(\n e: MouseEvent,\n days: PowerCalendarDay[],\n calendar: CalendarAPI,\n): void {\n const dayEl: HTMLElement | null | undefined = (\n e.target as HTMLElement | null\n )?.closest('[data-date]');\n if (dayEl) {\n const dateStr = dayEl.dataset['date'];\n const day = days.find((d) => d.id === dateStr);\n if (day) {\n if (calendar.actions.select) {\n calendar.actions.select(day, calendar, e);\n }\n }\n }\n}\n"],"names":["WEEK_DAYS","localeStartOfWeekOrFallback","startOfWeek","locale","parseInt","localeStartOfWeek","weekdaysNames","weekdayFormat","weekdays","weekdaysMin","weekdaysShort","slice","concat","firstDay","currentCenter","startOf","weeks","days","showDaysAround","i","daysOfWeek","filter","d","isCurrentMonth","push","id","missingDays","length","handleDayKeyDown","e","focusedId","day","index","key","preventDefault","newIndex","Math","max","isDisabled","min","focusDate","uniqueId","dayElement","document","querySelector","focus","buildDay","date","today","calendar","dayIsSelected","minDate","maxDate","disabledDates","dayIsDisabledExtended","formatDate","dayIsDisabled","normalizeCalendarDay","number","getDate","Date","isFocused","isSame","isToday","isSelected","actions","select","isBefore","isAfter","endOf","disabledInRange","some","isSameDay","isWeekDayIncludes","indexOf","lastDay","assert","isNaN","getTime","endOfWeek","handleClick","dayEl","target","closest","dateStr","dataset","find"],"mappings":"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"}
1
+ {"version":3,"file":"days-utils-D13uOiMt.js","sources":["../src/-private/days-utils.ts"],"sourcesContent":["import { assert } from '@ember/debug';\nimport type { CalendarAPI } from '../components/power-calendar.ts';\nimport {\n endOf,\n endOfWeek,\n formatDate,\n isAfter,\n isBefore,\n isSame,\n localeStartOfWeek,\n normalizeCalendarDay,\n startOf,\n startOfWeek,\n type PowerCalendarDay,\n} from '../utils.ts';\n\nexport const WEEK_DAYS = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\nexport type TWeekdayFormat = 'min' | 'short' | 'long';\n\nexport interface Week {\n id: string;\n days: PowerCalendarDay[];\n missingDays: number;\n}\n\nexport function localeStartOfWeekOrFallback(\n startOfWeek: string | undefined,\n locale: string,\n): number {\n if (startOfWeek) {\n return parseInt(startOfWeek, 10);\n }\n return localeStartOfWeek(locale);\n}\n\nexport function weekdaysNames(\n localeStartOfWeek: number,\n weekdayFormat: TWeekdayFormat,\n weekdays: string[],\n weekdaysMin: string[],\n weekdaysShort: string[],\n): string[] {\n let weekdaysNames;\n if (weekdayFormat === 'long') {\n weekdaysNames = weekdays;\n } else if (weekdayFormat === 'min') {\n weekdaysNames = weekdaysMin;\n } else {\n weekdaysNames = weekdaysShort;\n }\n return weekdaysNames\n .slice(localeStartOfWeek)\n .concat(weekdaysNames.slice(0, localeStartOfWeek));\n}\n\nexport function firstDay(currentCenter: Date, localeStartOfWeek: number): Date {\n const firstDay = startOf(currentCenter, 'month');\n return startOfWeek(firstDay, localeStartOfWeek);\n}\n\nexport function weeks(\n days: PowerCalendarDay[],\n showDaysAround: boolean,\n): Week[] {\n const weeks: Week[] = [];\n let i = 0;\n while (days[i]) {\n let daysOfWeek = days.slice(i, i + 7);\n if (!showDaysAround) {\n daysOfWeek = daysOfWeek.filter((d) => d.isCurrentMonth);\n }\n weeks.push({\n id: `week-of-${daysOfWeek[0]?.id}`,\n days: daysOfWeek,\n missingDays: 7 - daysOfWeek.length,\n });\n i += 7;\n }\n return weeks;\n}\n\nexport function handleDayKeyDown(\n e: KeyboardEvent,\n focusedId: string | null,\n days: PowerCalendarDay[],\n): PowerCalendarDay | undefined {\n if (!focusedId) {\n return;\n }\n let day, index: number | undefined;\n for (let i = 0; i < days.length; i++) {\n if (days[i]?.id === focusedId) {\n index = i;\n break;\n }\n }\n\n if (!index) {\n return;\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n const newIndex = Math.max(index - 7, 0);\n day = days[newIndex];\n if (day?.isDisabled) {\n for (let i = newIndex + 1; i <= index; i++) {\n day = days[i];\n if (!day?.isDisabled) {\n break;\n }\n }\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n const newIndex = Math.min(index + 7, days.length - 1);\n day = days[newIndex];\n if (day?.isDisabled) {\n for (let i = newIndex - 1; i >= index; i--) {\n day = days[i];\n if (!day?.isDisabled) {\n break;\n }\n }\n }\n } else if (e.key === 'ArrowLeft') {\n day = days[Math.max(index - 1, 0)];\n if (day?.isDisabled) {\n return;\n }\n } else if (e.key === 'ArrowRight') {\n day = days[Math.min(index + 1, days.length - 1)];\n if (day?.isDisabled) {\n return;\n }\n } else {\n return;\n }\n\n return day;\n}\n\nexport function focusDate(uniqueId: string, id: string): void {\n const dayElement: HTMLElement | null = document.querySelector(\n `[data-power-calendar-id=\"${uniqueId}\"] [data-date=\"${id}\"]`,\n );\n if (dayElement) {\n dayElement.focus();\n }\n}\n\nexport function buildDay(\n date: Date,\n today: Date,\n calendar: CalendarAPI,\n focusedId: string | null,\n currentCenter: Date,\n dayIsSelected: (date: Date, calendar: CalendarAPI) => boolean,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Array<Date | string>,\n dayIsDisabledExtended?: (\n date: Date,\n calendar: CalendarAPI,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Array<Date | string>,\n ) => boolean,\n): PowerCalendarDay {\n const id = formatDate(date, 'YYYY-MM-DD');\n\n let isDisabled = false;\n if (typeof dayIsDisabledExtended === 'function') {\n isDisabled = dayIsDisabledExtended(\n date,\n calendar,\n minDate,\n maxDate,\n disabledDates,\n );\n } else {\n isDisabled = dayIsDisabled(date, calendar, minDate, maxDate, disabledDates);\n }\n\n return normalizeCalendarDay({\n id,\n number: date.getDate(),\n date: new Date(date),\n isDisabled: isDisabled,\n isFocused: focusedId === id,\n isCurrentMonth: isSame(date, currentCenter, 'month'),\n isToday: isSame(date, today, 'day'),\n isSelected: dayIsSelected(date, calendar),\n } as PowerCalendarDay);\n}\n\nexport function dayIsDisabled(\n date: Date,\n calendar: CalendarAPI,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Array<Date | string>,\n): boolean {\n const isDisabled = !calendar.actions.select;\n if (isDisabled) {\n return true;\n }\n\n if (minDate && isBefore(date, startOf(minDate, 'day'))) {\n return true;\n }\n\n if (maxDate && isAfter(date, endOf(maxDate, 'day'))) {\n return true;\n }\n\n if (disabledDates) {\n const disabledInRange = disabledDates.some((d) => {\n const isSameDay = isSame(date, d as Date, 'day');\n const isWeekDayIncludes =\n WEEK_DAYS.indexOf(d as string) !== -1 && formatDate(date, 'ddd') === d;\n return isSameDay || isWeekDayIncludes;\n });\n\n if (disabledInRange) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function lastDay(localeStartOfWeek: number, currentCenter: Date): Date {\n assert(\n 'The center of the calendar is an invalid date.',\n !isNaN(currentCenter.getTime()),\n );\n const lastDay = endOf(currentCenter, 'month');\n return endOfWeek(lastDay, localeStartOfWeek);\n}\n\nexport function handleClick(\n e: MouseEvent,\n days: PowerCalendarDay[],\n calendar: CalendarAPI,\n): void {\n const dayEl: HTMLElement | null | undefined = (\n e.target as HTMLElement | null\n )?.closest('[data-date]');\n if (dayEl) {\n const dateStr = dayEl.dataset['date'];\n const day = days.find((d) => d.id === dateStr);\n if (day) {\n if (calendar.actions.select) {\n calendar.actions.select(day, calendar, e);\n }\n }\n }\n}\n"],"names":["WEEK_DAYS","localeStartOfWeekOrFallback","startOfWeek","locale","parseInt","localeStartOfWeek","weekdaysNames","weekdayFormat","weekdays","weekdaysMin","weekdaysShort","slice","concat","firstDay","currentCenter","startOf","weeks","days","showDaysAround","i","daysOfWeek","filter","d","isCurrentMonth","push","id","missingDays","length","handleDayKeyDown","e","focusedId","day","index","key","preventDefault","newIndex","Math","max","isDisabled","min","focusDate","uniqueId","dayElement","document","querySelector","focus","buildDay","date","today","calendar","dayIsSelected","minDate","maxDate","disabledDates","dayIsDisabledExtended","formatDate","dayIsDisabled","normalizeCalendarDay","number","getDate","Date","isFocused","isSame","isToday","isSelected","actions","select","isBefore","isAfter","endOf","disabledInRange","some","isSameDay","isWeekDayIncludes","indexOf","lastDay","assert","isNaN","getTime","endOfWeek","handleClick","dayEl","target","closest","dateStr","dataset","find"],"mappings":";;;AAgBO,MAAMA,SAAS,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AASnE,SAASC,2BAA2BA,CACzCC,WAA+B,EAC/BC,MAAc,EACN;AACR,EAAA,IAAID,WAAW,EAAE;AACf,IAAA,OAAOE,QAAQ,CAACF,WAAW,EAAE,EAAE,CAAC,CAAA;AAClC,GAAA;EACA,OAAOG,iBAAiB,CAACF,MAAM,CAAC,CAAA;AAClC,CAAA;AAEO,SAASG,aAAaA,CAC3BD,iBAAyB,EACzBE,aAA6B,EAC7BC,QAAkB,EAClBC,WAAqB,EACrBC,aAAuB,EACb;AACV,EAAA,IAAIJ,aAAa,CAAA;EACjB,IAAIC,aAAa,KAAK,MAAM,EAAE;AAC5BD,IAAAA,aAAa,GAAGE,QAAQ,CAAA;AAC1B,GAAC,MAAM,IAAID,aAAa,KAAK,KAAK,EAAE;AAClCD,IAAAA,aAAa,GAAGG,WAAW,CAAA;AAC7B,GAAC,MAAM;AACLH,IAAAA,aAAa,GAAGI,aAAa,CAAA;AAC/B,GAAA;AACA,EAAA,OAAOJ,aAAa,CACjBK,KAAK,CAACN,iBAAiB,CAAC,CACxBO,MAAM,CAACN,aAAa,CAACK,KAAK,CAAC,CAAC,EAAEN,iBAAiB,CAAC,CAAC,CAAA;AACtD,CAAA;AAEO,SAASQ,QAAQA,CAACC,aAAmB,EAAET,iBAAyB,EAAQ;AAC7E,EAAA,MAAMQ,QAAQ,GAAGE,OAAO,CAACD,aAAa,EAAE,OAAO,CAAC,CAAA;AAChD,EAAA,OAAOZ,WAAW,CAACW,QAAQ,EAAER,iBAAiB,CAAC,CAAA;AACjD,CAAA;AAEO,SAASW,KAAKA,CACnBC,IAAwB,EACxBC,cAAuB,EACf;EACR,MAAMF,KAAa,GAAG,EAAE,CAAA;EACxB,IAAIG,CAAC,GAAG,CAAC,CAAA;AACT,EAAA,OAAOF,IAAI,CAACE,CAAC,CAAC,EAAE;IACd,IAAIC,UAAU,GAAGH,IAAI,CAACN,KAAK,CAACQ,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC,CAAA;IACrC,IAAI,CAACD,cAAc,EAAE;MACnBE,UAAU,GAAGA,UAAU,CAACC,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,cAAc,CAAC,CAAA;AACzD,KAAA;IACAP,KAAK,CAACQ,IAAI,CAAC;MACTC,EAAE,EAAE,WAAWL,UAAU,CAAC,CAAC,CAAC,EAAEK,EAAE,CAAE,CAAA;AAClCR,MAAAA,IAAI,EAAEG,UAAU;AAChBM,MAAAA,WAAW,EAAE,CAAC,GAAGN,UAAU,CAACO,MAAAA;AAC9B,KAAC,CAAC,CAAA;AACFR,IAAAA,CAAC,IAAI,CAAC,CAAA;AACR,GAAA;AACA,EAAA,OAAOH,KAAK,CAAA;AACd,CAAA;AAEO,SAASY,gBAAgBA,CAC9BC,CAAgB,EAChBC,SAAwB,EACxBb,IAAwB,EACM;EAC9B,IAAI,CAACa,SAAS,EAAE;AACd,IAAA,OAAA;AACF,GAAA;EACA,IAAIC,GAAG,EAAEC,KAAyB,CAAA;AAClC,EAAA,KAAK,IAAIb,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACU,MAAM,EAAER,CAAC,EAAE,EAAE;IACpC,IAAIF,IAAI,CAACE,CAAC,CAAC,EAAEM,EAAE,KAAKK,SAAS,EAAE;AAC7BE,MAAAA,KAAK,GAAGb,CAAC,CAAA;AACT,MAAA,MAAA;AACF,KAAA;AACF,GAAA;EAEA,IAAI,CAACa,KAAK,EAAE;AACV,IAAA,OAAA;AACF,GAAA;AAEA,EAAA,IAAIH,CAAC,CAACI,GAAG,KAAK,SAAS,EAAE;IACvBJ,CAAC,CAACK,cAAc,EAAE,CAAA;IAClB,MAAMC,QAAQ,GAAGC,IAAI,CAACC,GAAG,CAACL,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;AACvCD,IAAAA,GAAG,GAAGd,IAAI,CAACkB,QAAQ,CAAC,CAAA;IACpB,IAAIJ,GAAG,EAAEO,UAAU,EAAE;AACnB,MAAA,KAAK,IAAInB,CAAC,GAAGgB,QAAQ,GAAG,CAAC,EAAEhB,CAAC,IAAIa,KAAK,EAAEb,CAAC,EAAE,EAAE;AAC1CY,QAAAA,GAAG,GAAGd,IAAI,CAACE,CAAC,CAAC,CAAA;AACb,QAAA,IAAI,CAACY,GAAG,EAAEO,UAAU,EAAE;AACpB,UAAA,MAAA;AACF,SAAA;AACF,OAAA;AACF,KAAA;AACF,GAAC,MAAM,IAAIT,CAAC,CAACI,GAAG,KAAK,WAAW,EAAE;IAChCJ,CAAC,CAACK,cAAc,EAAE,CAAA;AAClB,IAAA,MAAMC,QAAQ,GAAGC,IAAI,CAACG,GAAG,CAACP,KAAK,GAAG,CAAC,EAAEf,IAAI,CAACU,MAAM,GAAG,CAAC,CAAC,CAAA;AACrDI,IAAAA,GAAG,GAAGd,IAAI,CAACkB,QAAQ,CAAC,CAAA;IACpB,IAAIJ,GAAG,EAAEO,UAAU,EAAE;AACnB,MAAA,KAAK,IAAInB,CAAC,GAAGgB,QAAQ,GAAG,CAAC,EAAEhB,CAAC,IAAIa,KAAK,EAAEb,CAAC,EAAE,EAAE;AAC1CY,QAAAA,GAAG,GAAGd,IAAI,CAACE,CAAC,CAAC,CAAA;AACb,QAAA,IAAI,CAACY,GAAG,EAAEO,UAAU,EAAE;AACpB,UAAA,MAAA;AACF,SAAA;AACF,OAAA;AACF,KAAA;AACF,GAAC,MAAM,IAAIT,CAAC,CAACI,GAAG,KAAK,WAAW,EAAE;AAChCF,IAAAA,GAAG,GAAGd,IAAI,CAACmB,IAAI,CAACC,GAAG,CAACL,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAClC,IAAID,GAAG,EAAEO,UAAU,EAAE;AACnB,MAAA,OAAA;AACF,KAAA;AACF,GAAC,MAAM,IAAIT,CAAC,CAACI,GAAG,KAAK,YAAY,EAAE;AACjCF,IAAAA,GAAG,GAAGd,IAAI,CAACmB,IAAI,CAACG,GAAG,CAACP,KAAK,GAAG,CAAC,EAAEf,IAAI,CAACU,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IAChD,IAAII,GAAG,EAAEO,UAAU,EAAE;AACnB,MAAA,OAAA;AACF,KAAA;AACF,GAAC,MAAM;AACL,IAAA,OAAA;AACF,GAAA;AAEA,EAAA,OAAOP,GAAG,CAAA;AACZ,CAAA;AAEO,SAASS,SAASA,CAACC,QAAgB,EAAEhB,EAAU,EAAQ;EAC5D,MAAMiB,UAA8B,GAAGC,QAAQ,CAACC,aAAa,CAC3D,CAAA,yBAAA,EAA4BH,QAAQ,CAAA,eAAA,EAAkBhB,EAAE,CAAA,EAAA,CAC1D,CAAC,CAAA;AACD,EAAA,IAAIiB,UAAU,EAAE;IACdA,UAAU,CAACG,KAAK,EAAE,CAAA;AACpB,GAAA;AACF,CAAA;AAEO,SAASC,QAAQA,CACtBC,IAAU,EACVC,KAAW,EACXC,QAAqB,EACrBnB,SAAwB,EACxBhB,aAAmB,EACnBoC,aAA6D,EAC7DC,OAAc,EACdC,OAAc,EACdC,aAAoC,EACpCC,qBAMY,EACM;AAClB,EAAA,MAAM7B,EAAE,GAAG8B,UAAU,CAACR,IAAI,EAAE,YAAY,CAAC,CAAA;EAEzC,IAAIT,UAAU,GAAG,KAAK,CAAA;AACtB,EAAA,IAAI,OAAOgB,qBAAqB,KAAK,UAAU,EAAE;AAC/ChB,IAAAA,UAAU,GAAGgB,qBAAqB,CAChCP,IAAI,EACJE,QAAQ,EACRE,OAAO,EACPC,OAAO,EACPC,aACF,CAAC,CAAA;AACH,GAAC,MAAM;AACLf,IAAAA,UAAU,GAAGkB,aAAa,CAACT,IAAI,EAAEE,QAAQ,EAAEE,OAAO,EAAEC,OAAO,EAAEC,aAAa,CAAC,CAAA;AAC7E,GAAA;AAEA,EAAA,OAAOI,oBAAoB,CAAC;IAC1BhC,EAAE;AACFiC,IAAAA,MAAM,EAAEX,IAAI,CAACY,OAAO,EAAE;AACtBZ,IAAAA,IAAI,EAAE,IAAIa,IAAI,CAACb,IAAI,CAAC;AACpBT,IAAAA,UAAU,EAAEA,UAAU;IACtBuB,SAAS,EAAE/B,SAAS,KAAKL,EAAE;IAC3BF,cAAc,EAAEuC,MAAM,CAACf,IAAI,EAAEjC,aAAa,EAAE,OAAO,CAAC;IACpDiD,OAAO,EAAED,MAAM,CAACf,IAAI,EAAEC,KAAK,EAAE,KAAK,CAAC;AACnCgB,IAAAA,UAAU,EAAEd,aAAa,CAACH,IAAI,EAAEE,QAAQ,CAAA;AAC1C,GAAqB,CAAC,CAAA;AACxB,CAAA;AAEO,SAASO,aAAaA,CAC3BT,IAAU,EACVE,QAAqB,EACrBE,OAAc,EACdC,OAAc,EACdC,aAAoC,EAC3B;AACT,EAAA,MAAMf,UAAU,GAAG,CAACW,QAAQ,CAACgB,OAAO,CAACC,MAAM,CAAA;AAC3C,EAAA,IAAI5B,UAAU,EAAE;AACd,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,IAAIa,OAAO,IAAIgB,QAAQ,CAACpB,IAAI,EAAEhC,OAAO,CAACoC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AACtD,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,IAAIC,OAAO,IAAIgB,OAAO,CAACrB,IAAI,EAAEsB,KAAK,CAACjB,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AACnD,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,IAAIC,aAAa,EAAE;AACjB,IAAA,MAAMiB,eAAe,GAAGjB,aAAa,CAACkB,IAAI,CAAEjD,CAAC,IAAK;MAChD,MAAMkD,SAAS,GAAGV,MAAM,CAACf,IAAI,EAAEzB,CAAC,EAAU,KAAK,CAAC,CAAA;AAChD,MAAA,MAAMmD,iBAAiB,GACrBzE,SAAS,CAAC0E,OAAO,CAACpD,CAAW,CAAC,KAAK,CAAC,CAAC,IAAIiC,UAAU,CAACR,IAAI,EAAE,KAAK,CAAC,KAAKzB,CAAC,CAAA;MACxE,OAAOkD,SAAS,IAAIC,iBAAiB,CAAA;AACvC,KAAC,CAAC,CAAA;AAEF,IAAA,IAAIH,eAAe,EAAE;AACnB,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AACF,GAAA;AAEA,EAAA,OAAO,KAAK,CAAA;AACd,CAAA;AAEO,SAASK,OAAOA,CAACtE,iBAAyB,EAAES,aAAmB,EAAQ;AAC5E8D,EAAAA,MAAM,CACJ,gDAAgD,EAChD,CAACC,KAAK,CAAC/D,aAAa,CAACgE,OAAO,EAAE,CAChC,CAAC,CAAA;AACD,EAAA,MAAMH,OAAO,GAAGN,KAAK,CAACvD,aAAa,EAAE,OAAO,CAAC,CAAA;AAC7C,EAAA,OAAOiE,SAAS,CAACJ,OAAO,EAAEtE,iBAAiB,CAAC,CAAA;AAC9C,CAAA;AAEO,SAAS2E,WAAWA,CACzBnD,CAAa,EACbZ,IAAwB,EACxBgC,QAAqB,EACf;EACN,MAAMgC,KAAqC,GACzCpD,CAAC,CAACqD,MAAM,EACPC,OAAO,CAAC,aAAa,CAAC,CAAA;AACzB,EAAA,IAAIF,KAAK,EAAE;AACT,IAAA,MAAMG,OAAO,GAAGH,KAAK,CAACI,OAAO,CAAC,MAAM,CAAC,CAAA;AACrC,IAAA,MAAMtD,GAAG,GAAGd,IAAI,CAACqE,IAAI,CAAEhE,CAAC,IAAKA,CAAC,CAACG,EAAE,KAAK2D,OAAO,CAAC,CAAA;AAC9C,IAAA,IAAIrD,GAAG,EAAE;AACP,MAAA,IAAIkB,QAAQ,CAACgB,OAAO,CAACC,MAAM,EAAE;QAC3BjB,QAAQ,CAACgB,OAAO,CAACC,MAAM,CAACnC,GAAG,EAAEkB,QAAQ,EAAEpB,CAAC,CAAC,CAAA;AAC3C,OAAA;AACF,KAAA;AACF,GAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ember-power-calendar-day-classes.js","sources":["../../src/helpers/ember-power-calendar-day-classes.ts"],"sourcesContent":["import { helper } from '@ember/component/helper';\nimport type { PowerCalendarAPI } from '../components/power-calendar.ts';\nimport type { Week } from '../-private/days-utils.ts';\nimport type { PowerCalendarDay } from '../utils.ts';\n\nexport function emberPowerCalendarDayClasses([day, calendar, weeks, dayClass]: [\n PowerCalendarDay,\n PowerCalendarAPI,\n Week[],\n (\n | string\n | ((\n day: PowerCalendarDay,\n calendar: PowerCalendarAPI,\n weeks: Week[],\n ) => string)\n ),\n]) {\n const classes = ['ember-power-calendar-day'];\n if (calendar.actions.select) {\n classes.push('ember-power-calendar-day--interactive');\n }\n classes.push(\n `ember-power-calendar-day--${\n day.isCurrentMonth ? 'current' : 'other'\n }-month`,\n );\n if (day.isSelected) {\n classes.push('ember-power-calendar-day--selected');\n }\n if (day.isToday) {\n classes.push('ember-power-calendar-day--today');\n }\n if (day.isFocused) {\n classes.push('ember-power-calendar-day--focused');\n }\n if (day.isRangeStart) {\n classes.push('ember-power-calendar-day--range-start');\n }\n if (day.isRangeEnd) {\n classes.push('ember-power-calendar-day--range-end');\n }\n if (dayClass) {\n if (typeof dayClass === 'string') {\n classes.push(dayClass);\n } else if (typeof dayClass === 'function') {\n const k = dayClass(day, calendar, weeks);\n if (k !== null && k !== undefined) {\n classes.push(k);\n }\n }\n }\n return classes.join(' ');\n}\n\nexport default helper(emberPowerCalendarDayClasses);\n"],"names":["emberPowerCalendarDayClasses","day","calendar","weeks","dayClass","classes","actions","select","push","isCurrentMonth","isSelected","isToday","isFocused","isRangeStart","isRangeEnd","k","undefined","join","helper"],"mappings":";;AAKO,SAASA,4BAA4BA,CAAC,CAACC,GAAG,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,QAAQ,CAY3E,EAAE;AACD,EAAA,MAAMC,OAAO,GAAG,CAAC,0BAA0B,CAAC,CAAA;AAC5C,EAAA,IAAIH,QAAQ,CAACI,OAAO,CAACC,MAAM,EAAE;AAC3BF,IAAAA,OAAO,CAACG,IAAI,CAAC,uCAAuC,CAAC,CAAA;AACvD,GAAA;AACAH,EAAAA,OAAO,CAACG,IAAI,CACT,CAAA,0BAAA,EACCP,GAAG,CAACQ,cAAc,GAAG,SAAS,GAAG,OAClC,CAAA,MAAA,CACH,CAAC,CAAA;EACD,IAAIR,GAAG,CAACS,UAAU,EAAE;AAClBL,IAAAA,OAAO,CAACG,IAAI,CAAC,oCAAoC,CAAC,CAAA;AACpD,GAAA;EACA,IAAIP,GAAG,CAACU,OAAO,EAAE;AACfN,IAAAA,OAAO,CAACG,IAAI,CAAC,iCAAiC,CAAC,CAAA;AACjD,GAAA;EACA,IAAIP,GAAG,CAACW,SAAS,EAAE;AACjBP,IAAAA,OAAO,CAACG,IAAI,CAAC,mCAAmC,CAAC,CAAA;AACnD,GAAA;EACA,IAAIP,GAAG,CAACY,YAAY,EAAE;AACpBR,IAAAA,OAAO,CAACG,IAAI,CAAC,uCAAuC,CAAC,CAAA;AACvD,GAAA;EACA,IAAIP,GAAG,CAACa,UAAU,EAAE;AAClBT,IAAAA,OAAO,CAACG,IAAI,CAAC,qCAAqC,CAAC,CAAA;AACrD,GAAA;AACA,EAAA,IAAIJ,QAAQ,EAAE;AACZ,IAAA,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;AAChCC,MAAAA,OAAO,CAACG,IAAI,CAACJ,QAAQ,CAAC,CAAA;AACxB,KAAC,MAAM,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;MACzC,MAAMW,CAAC,GAAGX,QAAQ,CAACH,GAAG,EAAEC,QAAQ,EAAEC,KAAK,CAAC,CAAA;AACxC,MAAA,IAAIY,CAAC,KAAK,IAAI,IAAIA,CAAC,KAAKC,SAAS,EAAE;AACjCX,QAAAA,OAAO,CAACG,IAAI,CAACO,CAAC,CAAC,CAAA;AACjB,OAAA;AACF,KAAA;AACF,GAAA;AACA,EAAA,OAAOV,OAAO,CAACY,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAA;AAEA,qCAAeC,MAAM,CAAClB,4BAA4B,CAAC;;;;"}
1
+ {"version":3,"file":"ember-power-calendar-day-classes.js","sources":["../../src/helpers/ember-power-calendar-day-classes.ts"],"sourcesContent":["import { helper } from '@ember/component/helper';\nimport type { PowerCalendarAPI } from '../components/power-calendar.ts';\nimport type { Week } from '../-private/days-utils.ts';\nimport type { PowerCalendarDay } from '../utils.ts';\n\nexport function emberPowerCalendarDayClasses([day, calendar, weeks, dayClass]: [\n PowerCalendarDay,\n PowerCalendarAPI,\n Week[],\n (\n | string\n | ((\n day: PowerCalendarDay,\n calendar: PowerCalendarAPI,\n weeks: Week[],\n ) => string)\n ),\n]) {\n const classes = ['ember-power-calendar-day'];\n if (calendar.actions.select) {\n classes.push('ember-power-calendar-day--interactive');\n }\n classes.push(\n `ember-power-calendar-day--${\n day.isCurrentMonth ? 'current' : 'other'\n }-month`,\n );\n if (day.isSelected) {\n classes.push('ember-power-calendar-day--selected');\n }\n if (day.isToday) {\n classes.push('ember-power-calendar-day--today');\n }\n if (day.isFocused) {\n classes.push('ember-power-calendar-day--focused');\n }\n if (day.isRangeStart) {\n classes.push('ember-power-calendar-day--range-start');\n }\n if (day.isRangeEnd) {\n classes.push('ember-power-calendar-day--range-end');\n }\n if (dayClass) {\n if (typeof dayClass === 'string') {\n classes.push(dayClass);\n } else if (typeof dayClass === 'function') {\n const k = dayClass(day, calendar, weeks);\n if (k !== null && k !== undefined) {\n classes.push(k);\n }\n }\n }\n return classes.join(' ');\n}\n\nexport default helper(emberPowerCalendarDayClasses);\n"],"names":["emberPowerCalendarDayClasses","day","calendar","weeks","dayClass","classes","actions","select","push","isCurrentMonth","isSelected","isToday","isFocused","isRangeStart","isRangeEnd","k","undefined","join","helper"],"mappings":";;AAKO,SAASA,4BAA4BA,CAAC,CAACC,GAAG,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,QAAQ,CAY3E,EAAE;AACD,EAAA,MAAMC,OAAO,GAAG,CAAC,0BAA0B,CAAC,CAAA;AAC5C,EAAA,IAAIH,QAAQ,CAACI,OAAO,CAACC,MAAM,EAAE;AAC3BF,IAAAA,OAAO,CAACG,IAAI,CAAC,uCAAuC,CAAC,CAAA;AACvD,GAAA;AACAH,EAAAA,OAAO,CAACG,IAAI,CACV,CAAA,0BAAA,EACEP,GAAG,CAACQ,cAAc,GAAG,SAAS,GAAG,OAAO,CAAA,MAAA,CAE5C,CAAC,CAAA;EACD,IAAIR,GAAG,CAACS,UAAU,EAAE;AAClBL,IAAAA,OAAO,CAACG,IAAI,CAAC,oCAAoC,CAAC,CAAA;AACpD,GAAA;EACA,IAAIP,GAAG,CAACU,OAAO,EAAE;AACfN,IAAAA,OAAO,CAACG,IAAI,CAAC,iCAAiC,CAAC,CAAA;AACjD,GAAA;EACA,IAAIP,GAAG,CAACW,SAAS,EAAE;AACjBP,IAAAA,OAAO,CAACG,IAAI,CAAC,mCAAmC,CAAC,CAAA;AACnD,GAAA;EACA,IAAIP,GAAG,CAACY,YAAY,EAAE;AACpBR,IAAAA,OAAO,CAACG,IAAI,CAAC,uCAAuC,CAAC,CAAA;AACvD,GAAA;EACA,IAAIP,GAAG,CAACa,UAAU,EAAE;AAClBT,IAAAA,OAAO,CAACG,IAAI,CAAC,qCAAqC,CAAC,CAAA;AACrD,GAAA;AACA,EAAA,IAAIJ,QAAQ,EAAE;AACZ,IAAA,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;AAChCC,MAAAA,OAAO,CAACG,IAAI,CAACJ,QAAQ,CAAC,CAAA;AACxB,KAAC,MAAM,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;MACzC,MAAMW,CAAC,GAAGX,QAAQ,CAACH,GAAG,EAAEC,QAAQ,EAAEC,KAAK,CAAC,CAAA;AACxC,MAAA,IAAIY,CAAC,KAAK,IAAI,IAAIA,CAAC,KAAKC,SAAS,EAAE;AACjCX,QAAAA,OAAO,CAACG,IAAI,CAACO,CAAC,CAAC,CAAA;AACjB,OAAA;AACF,KAAA;AACF,GAAA;AACA,EAAA,OAAOV,OAAO,CAACY,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAA;AAEA,qCAAeC,MAAM,CAAClB,4BAA4B,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"power-calendar.js","sources":["../../src/services/power-calendar.ts"],"sourcesContent":["import Service from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { getDefaultLocale } from '../utils.ts';\n\nexport default class extends Service {\n date: Date | null = null;\n\n @tracked _local?: string;\n\n get locale(): string {\n if (this._local) {\n return this._local;\n }\n\n return getDefaultLocale();\n }\n\n set locale(value) {\n this._local = value;\n }\n\n // Methods\n getDate(): Date {\n return this.date || new Date();\n }\n}\n"],"names":["Service","date","g","this","prototype","tracked","i","void 0","locale","_local","getDefaultLocale","value","getDate","Date"],"mappings":";;;;;AAIe,mBAAA,SAAcA,OAAO,CAAC;AACnCC,EAAAA,IAAI,GAAgB,IAAI,CAAA;AAAC,EAAA;AAAAC,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,aAExBC,OAAO,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,OAAA,IAAAC,CAAA,CAAAH,IAAA,aAAAI,KAAA,CAAA,EAAA;EAER,IAAIC,MAAMA,GAAW;IACnB,IAAI,IAAI,CAACC,MAAM,EAAE;MACf,OAAO,IAAI,CAACA,MAAM,CAAA;AACpB,KAAA;IAEA,OAAOC,gBAAgB,EAAE,CAAA;AAC3B,GAAA;EAEA,IAAIF,MAAMA,CAACG,KAAK,EAAE;IAChB,IAAI,CAACF,MAAM,GAAGE,KAAK,CAAA;AACrB,GAAA;;AAEA;AACAC,EAAAA,OAAOA,GAAS;AACd,IAAA,OAAO,IAAI,CAACX,IAAI,IAAI,IAAIY,IAAI,EAAE,CAAA;AAChC,GAAA;AACF;;;;"}
1
+ {"version":3,"file":"power-calendar.js","sources":["../../src/services/power-calendar.ts"],"sourcesContent":["import Service from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { getDefaultLocale } from '../utils.ts';\n\nexport default class extends Service {\n date: Date | null = null;\n\n @tracked _local?: string;\n\n get locale(): string {\n if (this._local) {\n return this._local;\n }\n\n return getDefaultLocale();\n }\n\n set locale(value) {\n this._local = value;\n }\n\n // Methods\n getDate(): Date {\n return this.date || new Date();\n }\n}\n"],"names":["Service","date","g","prototype","tracked","i","void 0","locale","_local","getDefaultLocale","value","getDate","Date"],"mappings":";;;;;AAIe,mBAAA,SAAcA,OAAO,CAAC;AACnCC,EAAAA,IAAI,GAAgB,IAAI,CAAA;AAAC,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,QAAA,EAAA,CAExBC,OAAO,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,OAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,QAAA,CAAA,EAAAC,KAAA,CAAA,EAAA;EAER,IAAIC,MAAMA,GAAW;IACnB,IAAI,IAAI,CAACC,MAAM,EAAE;MACf,OAAO,IAAI,CAACA,MAAM,CAAA;AACpB,KAAA;IAEA,OAAOC,gBAAgB,EAAE,CAAA;AAC3B,GAAA;EAEA,IAAIF,MAAMA,CAACG,KAAK,EAAE;IAChB,IAAI,CAACF,MAAM,GAAGE,KAAK,CAAA;AACrB,GAAA;;AAEA;AACAC,EAAAA,OAAOA,GAAS;AACd,IAAA,OAAO,IAAI,CAACV,IAAI,IAAI,IAAIW,IAAI,EAAE,CAAA;AAChC,GAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../src/test-support/helpers.ts"],"sourcesContent":["import { run } from '@ember/runloop';\nimport { assert } from '@ember/debug';\nimport { click, settled, find } from '@ember/test-helpers';\nimport { formatDate } from '../utils.ts';\nimport type PowerCalendarMultipleComponent from '../components/power-calendar-multiple.ts';\nimport type PowerCalendarComponent from '../components/power-calendar.ts';\nimport type PowerCalendarRangeComponent from '../components/power-calendar-range.ts';\n\nexport default {};\n\nexport * from '../utils.ts';\n\nfunction findCalendarElement(selector: string): Element | null | undefined {\n const target = find(selector);\n\n if (target) {\n if (target.classList.contains('ember-power-calendar')) {\n return target;\n } else {\n return (\n target.querySelector('.ember-power-calendar') ||\n target.querySelector('[data-power-calendar-id]')\n );\n }\n }\n}\n\nfunction findCalendarGuid(selector: string): string | undefined {\n const maybeCalendar = findCalendarElement(selector);\n if (!maybeCalendar) {\n return;\n }\n if (maybeCalendar.classList.contains('ember-power-calendar')) {\n return maybeCalendar.id;\n } else {\n return (maybeCalendar as HTMLElement).dataset['powerCalendarId'];\n }\n}\n\nfunction findComponentInstance(\n selector: string,\n):\n | PowerCalendarComponent\n | PowerCalendarMultipleComponent\n | PowerCalendarRangeComponent {\n const calendarGuid = findCalendarGuid(selector);\n assert(\n `Could not find a calendar using selector: \"${selector}\"`,\n calendarGuid,\n );\n // @ts-expect-error Property '__powerCalendars'\n return window.__powerCalendars[calendarGuid];\n}\n\nexport async function calendarCenter(\n selector: string,\n newCenter: Date,\n): Promise<void> {\n assert(\n '`calendarCenter` expect a Date object as second argument',\n newCenter instanceof Date,\n );\n const calendarComponent = findComponentInstance(selector);\n const onCenterChange = calendarComponent.args.onCenterChange;\n assert(\n \"You cannot call `calendarCenter` on a component that doesn't has an `@onCenterChange` action\",\n !!onCenterChange,\n );\n const publicAPI = calendarComponent.publicAPI;\n run(() =>\n publicAPI.actions.changeCenter!(newCenter, publicAPI, {} as MouseEvent),\n );\n return settled();\n}\n\nexport async function calendarSelect(\n selector: string,\n selected: Date,\n): Promise<void> {\n assert('`calendarSelect` expect a Date object as second argument', selected);\n const calendarElement = findCalendarElement(selector);\n const daySelector = `${selector} [data-date=\"${formatDate(\n selected,\n 'YYYY-MM-DD',\n )}\"]`;\n const dayElement = calendarElement?.querySelector(daySelector);\n if (!dayElement) {\n await calendarCenter(selector, selected);\n }\n return click(daySelector);\n}\n"],"names":["findCalendarElement","selector","target","find","classList","contains","querySelector","findCalendarGuid","maybeCalendar","id","dataset","findComponentInstance","calendarGuid","assert","window","__powerCalendars","calendarCenter","newCenter","Date","calendarComponent","onCenterChange","args","publicAPI","run","actions","changeCenter","settled","calendarSelect","selected","calendarElement","daySelector","formatDate","dayElement","click"],"mappings":";;;;;;AAQA,cAAe,EAAE,CAAA;AAIjB,SAASA,mBAAmBA,CAACC,QAAgB,EAA8B;AACzE,EAAA,MAAMC,MAAM,GAAGC,IAAI,CAACF,QAAQ,CAAC,CAAA;AAE7B,EAAA,IAAIC,MAAM,EAAE;IACV,IAAIA,MAAM,CAACE,SAAS,CAACC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;AACrD,MAAA,OAAOH,MAAM,CAAA;AACf,KAAC,MAAM;AACL,MAAA,OACEA,MAAM,CAACI,aAAa,CAAC,uBAAuB,CAAC,IAC7CJ,MAAM,CAACI,aAAa,CAAC,0BAA0B,CAAC,CAAA;AAEpD,KAAA;AACF,GAAA;AACF,CAAA;AAEA,SAASC,gBAAgBA,CAACN,QAAgB,EAAsB;AAC9D,EAAA,MAAMO,aAAa,GAAGR,mBAAmB,CAACC,QAAQ,CAAC,CAAA;EACnD,IAAI,CAACO,aAAa,EAAE;AAClB,IAAA,OAAA;AACF,GAAA;EACA,IAAIA,aAAa,CAACJ,SAAS,CAACC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;IAC5D,OAAOG,aAAa,CAACC,EAAE,CAAA;AACzB,GAAC,MAAM;AACL,IAAA,OAAQD,aAAa,CAAiBE,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAClE,GAAA;AACF,CAAA;AAEA,SAASC,qBAAqBA,CAC5BV,QAAgB,EAIc;AAC9B,EAAA,MAAMW,YAAY,GAAGL,gBAAgB,CAACN,QAAQ,CAAC,CAAA;AAC/CY,EAAAA,MAAM,CACH,CAA6CZ,2CAAAA,EAAAA,QAAS,CAAE,CAAA,CAAA,EACzDW,YACF,CAAC,CAAA;AACD;AACA,EAAA,OAAOE,MAAM,CAACC,gBAAgB,CAACH,YAAY,CAAC,CAAA;AAC9C,CAAA;AAEO,eAAeI,cAAcA,CAClCf,QAAgB,EAChBgB,SAAe,EACA;AACfJ,EAAAA,MAAM,CACJ,0DAA0D,EAC1DI,SAAS,YAAYC,IACvB,CAAC,CAAA;AACD,EAAA,MAAMC,iBAAiB,GAAGR,qBAAqB,CAACV,QAAQ,CAAC,CAAA;AACzD,EAAA,MAAMmB,cAAc,GAAGD,iBAAiB,CAACE,IAAI,CAACD,cAAc,CAAA;AAC5DP,EAAAA,MAAM,CACJ,8FAA8F,EAC9F,CAAC,CAACO,cACJ,CAAC,CAAA;AACD,EAAA,MAAME,SAAS,GAAGH,iBAAiB,CAACG,SAAS,CAAA;AAC7CC,EAAAA,GAAG,CAAC,MACFD,SAAS,CAACE,OAAO,CAACC,YAAY,CAAER,SAAS,EAAEK,SAAS,EAAE,EAAgB,CACxE,CAAC,CAAA;EACD,OAAOI,OAAO,EAAE,CAAA;AAClB,CAAA;AAEO,eAAeC,cAAcA,CAClC1B,QAAgB,EAChB2B,QAAc,EACC;AACff,EAAAA,MAAM,CAAC,0DAA0D,EAAEe,QAAQ,CAAC,CAAA;AAC5E,EAAA,MAAMC,eAAe,GAAG7B,mBAAmB,CAACC,QAAQ,CAAC,CAAA;EACrD,MAAM6B,WAAW,GAAI,CAAA,EAAE7B,QAAS,CAAA,aAAA,EAAe8B,UAAU,CACvDH,QAAQ,EACR,YACF,CAAE,CAAG,EAAA,CAAA,CAAA;AACL,EAAA,MAAMI,UAAU,GAAGH,eAAe,EAAEvB,aAAa,CAACwB,WAAW,CAAC,CAAA;EAC9D,IAAI,CAACE,UAAU,EAAE;AACf,IAAA,MAAMhB,cAAc,CAACf,QAAQ,EAAE2B,QAAQ,CAAC,CAAA;AAC1C,GAAA;EACA,OAAOK,KAAK,CAACH,WAAW,CAAC,CAAA;AAC3B;;;;"}
1
+ {"version":3,"file":"helpers.js","sources":["../../src/test-support/helpers.ts"],"sourcesContent":["import { run } from '@ember/runloop';\nimport { assert } from '@ember/debug';\nimport { click, settled, find } from '@ember/test-helpers';\nimport { formatDate } from '../utils.ts';\nimport type PowerCalendarMultipleComponent from '../components/power-calendar-multiple.ts';\nimport type PowerCalendarComponent from '../components/power-calendar.ts';\nimport type PowerCalendarRangeComponent from '../components/power-calendar-range.ts';\n\nexport default {};\n\nexport * from '../utils.ts';\n\nfunction findCalendarElement(selector: string): Element | null | undefined {\n const target = find(selector);\n\n if (target) {\n if (target.classList.contains('ember-power-calendar')) {\n return target;\n } else {\n return (\n target.querySelector('.ember-power-calendar') ||\n target.querySelector('[data-power-calendar-id]')\n );\n }\n }\n}\n\nfunction findCalendarGuid(selector: string): string | undefined {\n const maybeCalendar = findCalendarElement(selector);\n if (!maybeCalendar) {\n return;\n }\n if (maybeCalendar.classList.contains('ember-power-calendar')) {\n return maybeCalendar.id;\n } else {\n return (maybeCalendar as HTMLElement).dataset['powerCalendarId'];\n }\n}\n\nfunction findComponentInstance(\n selector: string,\n):\n | PowerCalendarComponent\n | PowerCalendarMultipleComponent\n | PowerCalendarRangeComponent {\n const calendarGuid = findCalendarGuid(selector);\n assert(\n `Could not find a calendar using selector: \"${selector}\"`,\n calendarGuid,\n );\n // @ts-expect-error Property '__powerCalendars'\n return window.__powerCalendars[calendarGuid];\n}\n\nexport async function calendarCenter(\n selector: string,\n newCenter: Date,\n): Promise<void> {\n assert(\n '`calendarCenter` expect a Date object as second argument',\n newCenter instanceof Date,\n );\n const calendarComponent = findComponentInstance(selector);\n const onCenterChange = calendarComponent.args.onCenterChange;\n assert(\n \"You cannot call `calendarCenter` on a component that doesn't has an `@onCenterChange` action\",\n !!onCenterChange,\n );\n const publicAPI = calendarComponent.publicAPI;\n run(() =>\n publicAPI.actions.changeCenter!(newCenter, publicAPI, {} as MouseEvent),\n );\n return settled();\n}\n\nexport async function calendarSelect(\n selector: string,\n selected: Date,\n): Promise<void> {\n assert('`calendarSelect` expect a Date object as second argument', selected);\n const calendarElement = findCalendarElement(selector);\n const daySelector = `${selector} [data-date=\"${formatDate(\n selected,\n 'YYYY-MM-DD',\n )}\"]`;\n const dayElement = calendarElement?.querySelector(daySelector);\n if (!dayElement) {\n await calendarCenter(selector, selected);\n }\n return click(daySelector);\n}\n"],"names":["findCalendarElement","selector","target","find","classList","contains","querySelector","findCalendarGuid","maybeCalendar","id","dataset","findComponentInstance","calendarGuid","assert","window","__powerCalendars","calendarCenter","newCenter","Date","calendarComponent","onCenterChange","args","publicAPI","run","actions","changeCenter","settled","calendarSelect","selected","calendarElement","daySelector","formatDate","dayElement","click"],"mappings":";;;;;;AAQA,cAAe,EAAE,CAAA;AAIjB,SAASA,mBAAmBA,CAACC,QAAgB,EAA8B;AACzE,EAAA,MAAMC,MAAM,GAAGC,IAAI,CAACF,QAAQ,CAAC,CAAA;AAE7B,EAAA,IAAIC,MAAM,EAAE;IACV,IAAIA,MAAM,CAACE,SAAS,CAACC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;AACrD,MAAA,OAAOH,MAAM,CAAA;AACf,KAAC,MAAM;AACL,MAAA,OACEA,MAAM,CAACI,aAAa,CAAC,uBAAuB,CAAC,IAC7CJ,MAAM,CAACI,aAAa,CAAC,0BAA0B,CAAC,CAAA;AAEpD,KAAA;AACF,GAAA;AACF,CAAA;AAEA,SAASC,gBAAgBA,CAACN,QAAgB,EAAsB;AAC9D,EAAA,MAAMO,aAAa,GAAGR,mBAAmB,CAACC,QAAQ,CAAC,CAAA;EACnD,IAAI,CAACO,aAAa,EAAE;AAClB,IAAA,OAAA;AACF,GAAA;EACA,IAAIA,aAAa,CAACJ,SAAS,CAACC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;IAC5D,OAAOG,aAAa,CAACC,EAAE,CAAA;AACzB,GAAC,MAAM;AACL,IAAA,OAAQD,aAAa,CAAiBE,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAClE,GAAA;AACF,CAAA;AAEA,SAASC,qBAAqBA,CAC5BV,QAAgB,EAIc;AAC9B,EAAA,MAAMW,YAAY,GAAGL,gBAAgB,CAACN,QAAQ,CAAC,CAAA;AAC/CY,EAAAA,MAAM,CACJ,CAA8CZ,2CAAAA,EAAAA,QAAQ,CAAG,CAAA,CAAA,EACzDW,YACF,CAAC,CAAA;AACD;AACA,EAAA,OAAOE,MAAM,CAACC,gBAAgB,CAACH,YAAY,CAAC,CAAA;AAC9C,CAAA;AAEO,eAAeI,cAAcA,CAClCf,QAAgB,EAChBgB,SAAe,EACA;AACfJ,EAAAA,MAAM,CACJ,0DAA0D,EAC1DI,SAAS,YAAYC,IACvB,CAAC,CAAA;AACD,EAAA,MAAMC,iBAAiB,GAAGR,qBAAqB,CAACV,QAAQ,CAAC,CAAA;AACzD,EAAA,MAAMmB,cAAc,GAAGD,iBAAiB,CAACE,IAAI,CAACD,cAAc,CAAA;AAC5DP,EAAAA,MAAM,CACJ,8FAA8F,EAC9F,CAAC,CAACO,cACJ,CAAC,CAAA;AACD,EAAA,MAAME,SAAS,GAAGH,iBAAiB,CAACG,SAAS,CAAA;AAC7CC,EAAAA,GAAG,CAAC,MACFD,SAAS,CAACE,OAAO,CAACC,YAAY,CAAER,SAAS,EAAEK,SAAS,EAAE,EAAgB,CACxE,CAAC,CAAA;EACD,OAAOI,OAAO,EAAE,CAAA;AAClB,CAAA;AAEO,eAAeC,cAAcA,CAClC1B,QAAgB,EAChB2B,QAAc,EACC;AACff,EAAAA,MAAM,CAAC,0DAA0D,EAAEe,QAAQ,CAAC,CAAA;AAC5E,EAAA,MAAMC,eAAe,GAAG7B,mBAAmB,CAACC,QAAQ,CAAC,CAAA;EACrD,MAAM6B,WAAW,GAAG,CAAA,EAAG7B,QAAQ,CAAA,aAAA,EAAgB8B,UAAU,CACvDH,QAAQ,EACR,YACF,CAAC,CAAI,EAAA,CAAA,CAAA;AACL,EAAA,MAAMI,UAAU,GAAGH,eAAe,EAAEvB,aAAa,CAACwB,WAAW,CAAC,CAAA;EAC9D,IAAI,CAACE,UAAU,EAAE;AACf,IAAA,MAAMhB,cAAc,CAACf,QAAQ,EAAE2B,QAAQ,CAAC,CAAA;AAC1C,GAAA;EACA,OAAOK,KAAK,CAACH,WAAW,CAAC,CAAA;AAC3B;;;;"}
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":["export interface DateLibrary {\n add: (date: Date, quantity: number, unit: string) => Date;\n formatDate: (date: Date, format: string, locale: string | null) => string;\n startOf: (date: Date, unit: string) => Date;\n endOf: (date: Date, unit: string) => Date;\n weekday: (date: Date) => number;\n isoWeekday: (date: Date) => number;\n getWeekdaysShort: () => string[];\n getWeekdaysMin: () => string[];\n getWeekdays: () => string[];\n isAfter: (date1: Date, date2: Date) => boolean;\n isBefore: (date1: Date, date2: Date) => boolean;\n isSame: (date1: Date, date2: Date, unit: string) => boolean;\n isBetween: (\n date: Date,\n start: Date,\n end: Date,\n unit?: string,\n inclusivity?: string,\n ) => boolean;\n diff: (date1: Date, date2: Date) => number;\n normalizeDate: (date?: unknown) => Date | undefined; // date could be null, number. Date, Moment, undefined...\n normalizeRangeActionValue: (\n val: RangeActionValue,\n ) => NormalizeRangeActionValue;\n normalizeMultipleActionValue: (val: {\n date: Date[];\n }) => NormalizeMultipleActionValue;\n normalizeCalendarDay: (day: PowerCalendarDay) => PowerCalendarDay;\n withLocale: (locale: string, fn: () => unknown) => unknown;\n normalizeCalendarValue: (value: { date: Date }) => NormalizeCalendarValue;\n normalizeDuration: (value: unknown) => number | null | undefined;\n getDefaultLocale: () => string;\n localeStartOfWeek: (locale: string) => number;\n startOfWeek: (day: Date, startOfWeek: number) => Date;\n endOfWeek: (day: Date, startOfWeek: number) => Date;\n}\n\nexport interface NormalizeRangeActionValue {\n date: {\n start?: Date | null;\n end?: Date | null;\n };\n moment?: {\n start?: unknown;\n end?: unknown;\n };\n datetime?: {\n start?: unknown;\n end?: unknown;\n };\n}\n\nexport interface NormalizeMultipleActionValue {\n date: Date[];\n moment?: unknown[];\n datetime?: unknown[];\n}\n\nexport interface NormalizeCalendarValue {\n date: Date | undefined;\n moment?: unknown;\n datetime?: unknown;\n}\n\nexport interface RangeActionValue {\n date: SelectedPowerCalendarRange;\n}\n\nexport interface SelectedPowerCalendarRange {\n start?: Date | null;\n end?: Date | null;\n}\n\nexport interface PowerCalendarDay {\n id: string; // A unique identified of the day. It has the format YYYY-MM-DD\n number: number; // The day's number. From 1 to 31\n date: Date; //\tThe native Date object representing that day.\n moment?: unknown; //\tThe moment representing that day. (only when ember-power-calendar-moment is installed)\n datetime?: unknown; //\tThe luxon representing that day. (only when ember-power-calendar-luxon is installed)\n isFocused: boolean; //\tIt is true when the the cell of that day has the focus\n isCurrentMonth: boolean; //\tIt is true for those days in the current day, and false for those days for the previous/next months shown around.\n isToday: boolean; //\tIt is true if this day is today\n isSelected: boolean; //\tIt is true if the date of this day is the selected one. In multiple select it is true if the date of this day is among the selected ones. In range selects, it is true if the date if this day is in the range, including both ends.\n isRangeStart?: boolean; //\tIt is true if this day is the beginning of a range. It is false in non-range calendars\n isRangeEnd?: boolean; //\tIt is true if this day is the end of a range. It is false in non-range calendars\n isDisabled: boolean; //\tIt is true if days are not in range for range calendars or are included in disabled dates.\n}\n\nlet dateLib: DateLibrary;\n\nexport function registerDateLibrary(dateLibrary: DateLibrary) {\n dateLib = dateLibrary;\n}\n\nfunction getDateLibrary() {\n if (!dateLib) {\n throw new Error(\n `You have installed \"ember-power-calendar\" but you don't have registered any of the required meta-addons to make it work, like 'ember-power-calendar-moment' or 'ember-power-calendar-luxon'. Please add to your app and register the meta package in app.js.`,\n );\n }\n\n return dateLib;\n}\n\nexport function add(date: Date, quantity: number, unit: string): Date {\n return getDateLibrary().add(date, quantity, unit);\n}\n\nexport function formatDate(\n date: Date,\n format: string,\n locale: string | null = null,\n): string {\n return getDateLibrary().formatDate(date, format, locale);\n}\n\nexport function startOf(date: Date, unit: string): Date {\n return getDateLibrary().startOf(date, unit);\n}\n\nexport function endOf(date: Date, unit: string): Date {\n return getDateLibrary().endOf(date, unit);\n}\n\nexport function weekday(date: Date): number {\n return getDateLibrary().weekday(date);\n}\n\nexport function isoWeekday(date: Date): number {\n return getDateLibrary().isoWeekday(date);\n}\n\nexport function getWeekdaysShort(): string[] {\n return getDateLibrary().getWeekdaysShort();\n}\n\nexport function getWeekdaysMin(): string[] {\n return getDateLibrary().getWeekdaysMin();\n}\n\nexport function getWeekdays(): string[] {\n return getDateLibrary().getWeekdays();\n}\n\nexport function isAfter(date1: Date, date2: Date): boolean {\n return getDateLibrary().isAfter(date1, date2);\n}\n\nexport function isBefore(date1: Date, date2: Date): boolean {\n return getDateLibrary().isBefore(date1, date2);\n}\n\nexport function isSame(date1: Date, date2: Date, unit: string): boolean {\n return getDateLibrary().isSame(date1, date2, unit);\n}\n\nexport function isBetween(\n date: Date,\n start: Date,\n end: Date,\n unit: string,\n inclusivity: string,\n): boolean {\n return getDateLibrary().isBetween(date, start, end, unit, inclusivity);\n}\n\nexport function diff(date1: Date, date2: Date): number {\n return getDateLibrary().diff(date1, date2);\n}\n\nexport function normalizeDate(date?: unknown): Date | undefined {\n return getDateLibrary().normalizeDate(date);\n}\n\nexport function normalizeRangeActionValue(\n val: RangeActionValue,\n): NormalizeRangeActionValue {\n return getDateLibrary().normalizeRangeActionValue(val);\n}\n\nexport function normalizeMultipleActionValue(val: {\n date: Date[];\n}): NormalizeMultipleActionValue {\n return getDateLibrary().normalizeMultipleActionValue(val);\n}\n\nexport function normalizeCalendarDay(day: PowerCalendarDay): PowerCalendarDay {\n return getDateLibrary().normalizeCalendarDay(day);\n}\n\nexport function withLocale(locale: string, fn: () => unknown): unknown {\n return getDateLibrary().withLocale(locale, fn);\n}\n\nexport function normalizeCalendarValue(value: {\n date: Date;\n}): NormalizeCalendarValue {\n return getDateLibrary().normalizeCalendarValue(value);\n}\n\nexport function normalizeDuration(value: unknown): number | null | undefined {\n return getDateLibrary().normalizeDuration(value);\n}\n\nexport function getDefaultLocale(): string {\n return getDateLibrary().getDefaultLocale();\n}\n\nexport function localeStartOfWeek(locale: string): number {\n return getDateLibrary().localeStartOfWeek(locale);\n}\n\nexport function startOfWeek(day: Date, startOfWeek: number): Date {\n return getDateLibrary().startOfWeek(day, startOfWeek);\n}\n\nexport function endOfWeek(day: Date, startOfWeek: number): Date {\n return getDateLibrary().endOfWeek(day, startOfWeek);\n}\n"],"names":["dateLib","registerDateLibrary","dateLibrary","getDateLibrary","Error","add","date","quantity","unit","formatDate","format","locale","startOf","endOf","weekday","isoWeekday","getWeekdaysShort","getWeekdaysMin","getWeekdays","isAfter","date1","date2","isBefore","isSame","isBetween","start","end","inclusivity","diff","normalizeDate","normalizeRangeActionValue","val","normalizeMultipleActionValue","normalizeCalendarDay","day","withLocale","fn","normalizeCalendarValue","value","normalizeDuration","getDefaultLocale","localeStartOfWeek","startOfWeek","endOfWeek"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":["export interface DateLibrary {\n add: (date: Date, quantity: number, unit: string) => Date;\n formatDate: (date: Date, format: string, locale: string | null) => string;\n startOf: (date: Date, unit: string) => Date;\n endOf: (date: Date, unit: string) => Date;\n weekday: (date: Date) => number;\n isoWeekday: (date: Date) => number;\n getWeekdaysShort: () => string[];\n getWeekdaysMin: () => string[];\n getWeekdays: () => string[];\n isAfter: (date1: Date, date2: Date) => boolean;\n isBefore: (date1: Date, date2: Date) => boolean;\n isSame: (date1: Date, date2: Date, unit: string) => boolean;\n isBetween: (\n date: Date,\n start: Date,\n end: Date,\n unit?: string,\n inclusivity?: string,\n ) => boolean;\n diff: (date1: Date, date2: Date) => number;\n normalizeDate: (date?: unknown) => Date | undefined; // date could be null, number. Date, Moment, undefined...\n normalizeRangeActionValue: (\n val: RangeActionValue,\n ) => NormalizeRangeActionValue;\n normalizeMultipleActionValue: (val: {\n date: Date[];\n }) => NormalizeMultipleActionValue;\n normalizeCalendarDay: (day: PowerCalendarDay) => PowerCalendarDay;\n withLocale: (locale: string, fn: () => unknown) => unknown;\n normalizeCalendarValue: (value: { date: Date }) => NormalizeCalendarValue;\n normalizeDuration: (value: unknown) => number | null | undefined;\n getDefaultLocale: () => string;\n localeStartOfWeek: (locale: string) => number;\n startOfWeek: (day: Date, startOfWeek: number) => Date;\n endOfWeek: (day: Date, startOfWeek: number) => Date;\n}\n\nexport interface NormalizeRangeActionValue {\n date: {\n start?: Date | null;\n end?: Date | null;\n };\n moment?: {\n start?: unknown;\n end?: unknown;\n };\n datetime?: {\n start?: unknown;\n end?: unknown;\n };\n}\n\nexport interface NormalizeMultipleActionValue {\n date: Date[];\n moment?: unknown[];\n datetime?: unknown[];\n}\n\nexport interface NormalizeCalendarValue {\n date: Date | undefined;\n moment?: unknown;\n datetime?: unknown;\n}\n\nexport interface RangeActionValue {\n date: SelectedPowerCalendarRange;\n}\n\nexport interface SelectedPowerCalendarRange {\n start?: Date | null;\n end?: Date | null;\n}\n\nexport interface PowerCalendarDay {\n id: string; // A unique identified of the day. It has the format YYYY-MM-DD\n number: number; // The day's number. From 1 to 31\n date: Date; //\tThe native Date object representing that day.\n moment?: unknown; //\tThe moment representing that day. (only when ember-power-calendar-moment is installed)\n datetime?: unknown; //\tThe luxon representing that day. (only when ember-power-calendar-luxon is installed)\n isFocused: boolean; //\tIt is true when the the cell of that day has the focus\n isCurrentMonth: boolean; //\tIt is true for those days in the current day, and false for those days for the previous/next months shown around.\n isToday: boolean; //\tIt is true if this day is today\n isSelected: boolean; //\tIt is true if the date of this day is the selected one. In multiple select it is true if the date of this day is among the selected ones. In range selects, it is true if the date if this day is in the range, including both ends.\n isRangeStart?: boolean; //\tIt is true if this day is the beginning of a range. It is false in non-range calendars\n isRangeEnd?: boolean; //\tIt is true if this day is the end of a range. It is false in non-range calendars\n isDisabled: boolean; //\tIt is true if days are not in range for range calendars or are included in disabled dates.\n}\n\nlet dateLib: DateLibrary;\n\nexport function registerDateLibrary(dateLibrary: DateLibrary) {\n dateLib = dateLibrary;\n}\n\nfunction getDateLibrary() {\n if (!dateLib) {\n throw new Error(\n `You have installed \"ember-power-calendar\" but you don't have registered any of the required meta-addons to make it work, like 'ember-power-calendar-moment' or 'ember-power-calendar-luxon'. Please add to your app and register the meta package in app.js.`,\n );\n }\n\n return dateLib;\n}\n\nexport function add(date: Date, quantity: number, unit: string): Date {\n return getDateLibrary().add(date, quantity, unit);\n}\n\nexport function formatDate(\n date: Date,\n format: string,\n locale: string | null = null,\n): string {\n return getDateLibrary().formatDate(date, format, locale);\n}\n\nexport function startOf(date: Date, unit: string): Date {\n return getDateLibrary().startOf(date, unit);\n}\n\nexport function endOf(date: Date, unit: string): Date {\n return getDateLibrary().endOf(date, unit);\n}\n\nexport function weekday(date: Date): number {\n return getDateLibrary().weekday(date);\n}\n\nexport function isoWeekday(date: Date): number {\n return getDateLibrary().isoWeekday(date);\n}\n\nexport function getWeekdaysShort(): string[] {\n return getDateLibrary().getWeekdaysShort();\n}\n\nexport function getWeekdaysMin(): string[] {\n return getDateLibrary().getWeekdaysMin();\n}\n\nexport function getWeekdays(): string[] {\n return getDateLibrary().getWeekdays();\n}\n\nexport function isAfter(date1: Date, date2: Date): boolean {\n return getDateLibrary().isAfter(date1, date2);\n}\n\nexport function isBefore(date1: Date, date2: Date): boolean {\n return getDateLibrary().isBefore(date1, date2);\n}\n\nexport function isSame(date1: Date, date2: Date, unit: string): boolean {\n return getDateLibrary().isSame(date1, date2, unit);\n}\n\nexport function isBetween(\n date: Date,\n start: Date,\n end: Date,\n unit: string,\n inclusivity: string,\n): boolean {\n return getDateLibrary().isBetween(date, start, end, unit, inclusivity);\n}\n\nexport function diff(date1: Date, date2: Date): number {\n return getDateLibrary().diff(date1, date2);\n}\n\nexport function normalizeDate(date?: unknown): Date | undefined {\n return getDateLibrary().normalizeDate(date);\n}\n\nexport function normalizeRangeActionValue(\n val: RangeActionValue,\n): NormalizeRangeActionValue {\n return getDateLibrary().normalizeRangeActionValue(val);\n}\n\nexport function normalizeMultipleActionValue(val: {\n date: Date[];\n}): NormalizeMultipleActionValue {\n return getDateLibrary().normalizeMultipleActionValue(val);\n}\n\nexport function normalizeCalendarDay(day: PowerCalendarDay): PowerCalendarDay {\n return getDateLibrary().normalizeCalendarDay(day);\n}\n\nexport function withLocale(locale: string, fn: () => unknown): unknown {\n return getDateLibrary().withLocale(locale, fn);\n}\n\nexport function normalizeCalendarValue(value: {\n date: Date;\n}): NormalizeCalendarValue {\n return getDateLibrary().normalizeCalendarValue(value);\n}\n\nexport function normalizeDuration(value: unknown): number | null | undefined {\n return getDateLibrary().normalizeDuration(value);\n}\n\nexport function getDefaultLocale(): string {\n return getDateLibrary().getDefaultLocale();\n}\n\nexport function localeStartOfWeek(locale: string): number {\n return getDateLibrary().localeStartOfWeek(locale);\n}\n\nexport function startOfWeek(day: Date, startOfWeek: number): Date {\n return getDateLibrary().startOfWeek(day, startOfWeek);\n}\n\nexport function endOfWeek(day: Date, startOfWeek: number): Date {\n return getDateLibrary().endOfWeek(day, startOfWeek);\n}\n"],"names":["dateLib","registerDateLibrary","dateLibrary","getDateLibrary","Error","add","date","quantity","unit","formatDate","format","locale","startOf","endOf","weekday","isoWeekday","getWeekdaysShort","getWeekdaysMin","getWeekdays","isAfter","date1","date2","isBefore","isSame","isBetween","start","end","inclusivity","diff","normalizeDate","normalizeRangeActionValue","val","normalizeMultipleActionValue","normalizeCalendarDay","day","withLocale","fn","normalizeCalendarValue","value","normalizeDuration","getDefaultLocale","localeStartOfWeek","startOfWeek","endOfWeek"],"mappings":"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"}
package/less/base.less CHANGED
@@ -93,13 +93,13 @@
93
93
  @cell-size: null,
94
94
  @cell-width: @cell-size,
95
95
  @cell-height: @cell-size,
96
- @cell-with-spacing-width: @cell-width + 2px,
96
+ @cell-with-spacing-width: calc(~"@{cell-width} + 2px"),
97
97
  @row-padding-top: 0,
98
98
  @row-padding-bottom: 0,
99
99
  @row-padding-left: 0,
100
100
  @row-padding-right: 0,
101
- @row-width: @cell-with-spacing-width * 7 - 2px + @row-padding-left + @row-padding-right,
102
- @row-height: @cell-height + 2px,
101
+ @row-width: calc(~"(@{cell-with-spacing-width} * 7) - 2px + @{row-padding-left} + @{row-padding-right}"),
102
+ @row-height: calc(~"@{cell-height} + 2px"),
103
103
  @primary-color: #0078c9,
104
104
  @nav-button-color: @primary-color,
105
105
  @nav-button-color--focus: lighten(@nav-button-color, 20%),
@@ -121,46 +121,45 @@
121
121
  @day-selected-text-color: #656D78,
122
122
  @day-selected-text-color--hover: @day-selected-text-color
123
123
  ) {
124
-
125
124
  width: @row-width;
126
125
  .ember-power-calendar-week:first-child {
127
126
  &[data-missing-days="1"] {
128
- padding-left: @cell-with-spacing-width * 1;
127
+ padding-left: calc(~"@{cell-with-spacing-width} * 1");
129
128
  }
130
129
  &[data-missing-days="2"] {
131
- padding-left: @cell-with-spacing-width * 2;
130
+ padding-left: calc(~"@{cell-with-spacing-width} * 2");
132
131
  }
133
132
  &[data-missing-days="3"] {
134
- padding-left: @cell-with-spacing-width * 3;
133
+ padding-left: calc(~"@{cell-with-spacing-width} * 3");
135
134
  }
136
135
  &[data-missing-days="4"] {
137
- padding-left: @cell-with-spacing-width * 4;
136
+ padding-left: calc(~"@{cell-with-spacing-width} * 4");
138
137
  }
139
138
  &[data-missing-days="5"] {
140
- padding-left: @cell-with-spacing-width * 5;
139
+ padding-left: calc(~"@{cell-with-spacing-width} * 5");
141
140
  }
142
141
  &[data-missing-days="6"] {
143
- padding-left: @cell-with-spacing-width * 6;
142
+ padding-left: calc(~"@{cell-with-spacing-width} * 6");
144
143
  }
145
144
  }
146
145
  .ember-power-calendar-week:last-child {
147
146
  &[data-missing-days="1"] {
148
- padding-right: @cell-with-spacing-width * 1;
147
+ padding-right: calc(~"@{cell-with-spacing-width} * 1");
149
148
  }
150
149
  &[data-missing-days="2"] {
151
- padding-right: @cell-with-spacing-width * 2;
150
+ padding-right: calc(~"@{cell-with-spacing-width} * 2");
152
151
  }
153
152
  &[data-missing-days="3"] {
154
- padding-right: @cell-with-spacing-width * 3;
153
+ padding-right: calc(~"@{cell-with-spacing-width} * 3");
155
154
  }
156
155
  &[data-missing-days="4"] {
157
- padding-right: @cell-with-spacing-width * 4;
156
+ padding-right: calc(~"@{cell-with-spacing-width} * 4");
158
157
  }
159
158
  &[data-missing-days="5"] {
160
- padding-right: @cell-with-spacing-width * 5;
159
+ padding-right: calc(~"@{cell-with-spacing-width} * 5");
161
160
  }
162
161
  &[data-missing-days="6"] {
163
- padding-right: @cell-with-spacing-width * 6;
162
+ padding-right: calc(~"@{cell-with-spacing-width} * 6");
164
163
  }
165
164
  }
166
165
  .ember-power-calendar-day, .ember-power-calendar-weekday {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-power-calendar",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Powerful and customizable calendar component for Ember",
5
5
  "keywords": [
6
6
  "ember-addon"
@@ -47,39 +47,38 @@
47
47
  "vendor"
48
48
  ],
49
49
  "scripts": {
50
- "build": "concurrently 'npm:build:*'",
50
+ "build": "concurrently 'pnpm:build:*'",
51
51
  "build:js": "rollup --config",
52
52
  "build:types": "glint --declaration",
53
- "lint": "concurrently 'npm:lint:*(!fix)' --names 'lint:'",
54
- "lint:fix": "concurrently 'npm:lint:*:fix' --names 'fix:'",
53
+ "lint": "concurrently 'pnpm:lint:*(!fix)' --names 'lint:'",
54
+ "lint:fix": "concurrently 'pnpm:lint:*:fix' --names 'fix:'",
55
55
  "lint:hbs": "ember-template-lint . --no-error-on-unmatched-pattern",
56
56
  "lint:hbs:fix": "ember-template-lint . --fix --no-error-on-unmatched-pattern",
57
57
  "lint:js": "eslint . --cache",
58
58
  "lint:js:fix": "eslint . --fix",
59
59
  "lint:types": "glint",
60
- "prepack": "pnpm run build",
61
- "start": "concurrently 'npm:start:*'",
60
+ "prepack": "concurrently 'pnpm:build:*'",
61
+ "start": "concurrently 'pnpm:start:*'",
62
62
  "start:js": "rollup --config --watch --no-watch.clearScreen",
63
63
  "start:types": "glint --declaration --watch",
64
- "test": "echo 'A v2 addon does not have tests, run tests in test-app'",
65
- "prepare": "pnpm run build"
64
+ "test": "echo 'A v2 addon does not have tests, run tests in test-app'"
66
65
  },
67
66
  "dependencies": {
68
- "@embroider/addon-shim": "^1.8.7",
69
- "decorator-transforms": "^1.0.1",
70
- "@embroider/util": "^1.13.1",
71
- "@embroider/macros": "^1.16.1",
67
+ "@embroider/addon-shim": "^1.8.9",
68
+ "decorator-transforms": "^2.0.0",
69
+ "@embroider/util": "^1.13.2",
70
+ "@embroider/macros": "^1.16.6",
72
71
  "ember-assign-helper": "^0.5.0",
73
72
  "ember-element-helper": "^0.8.6",
74
73
  "ember-truth-helpers": "^4.0.3"
75
74
  },
76
75
  "devDependencies": {
77
- "@babel/core": "^7.24.5",
78
- "@babel/runtime": "^7.24.5",
79
- "@babel/plugin-transform-typescript": "^7.24.5",
80
- "@babel/preset-typescript": "^7.24.1",
81
- "@ember/test-helpers": "^3.3.0",
82
- "@embroider/addon-dev": "^4.3.1",
76
+ "@babel/core": "^7.25.2",
77
+ "@babel/runtime": "^7.25.6",
78
+ "@babel/plugin-transform-typescript": "^7.25.2",
79
+ "@babel/preset-typescript": "^7.24.7",
80
+ "@ember/test-helpers": "^4.0.4",
81
+ "@embroider/addon-dev": "^5.0.0",
83
82
  "@glint/core": "^1.4.0",
84
83
  "@glint/environment-ember-loose": "^1.4.0",
85
84
  "@glint/environment-ember-template-imports": "^1.4.0",
@@ -87,7 +86,7 @@
87
86
  "@glimmer/component": "^1.1.2",
88
87
  "@glimmer/tracking": "^1.1.2",
89
88
  "@rollup/plugin-babel": "^6.0.4",
90
- "@tsconfig/ember": "^3.0.6",
89
+ "@tsconfig/ember": "^3.0.8",
91
90
  "@types/ember": "^4.0.11",
92
91
  "@types/ember__application": "^4.0.11",
93
92
  "@types/ember__array": "^4.0.10",
@@ -96,7 +95,7 @@
96
95
  "@types/ember__debug": "^4.0.8",
97
96
  "@types/ember__engine": "^4.0.11",
98
97
  "@types/ember__error": "^4.0.6",
99
- "@types/ember__helper": "^4.0.7",
98
+ "@types/ember__helper": "^4.0.8",
100
99
  "@types/ember__modifier": "^4.0.9",
101
100
  "@types/ember__object": "^4.0.12",
102
101
  "@types/ember__owner": "^4.0.9",
@@ -108,28 +107,29 @@
108
107
  "@types/ember__template": "^4.0.7",
109
108
  "@types/ember__test": "^4.0.6",
110
109
  "@types/ember__utils": "^4.0.7",
111
- "@typescript-eslint/eslint-plugin": "^7.8.0",
112
- "@typescript-eslint/parser": "^7.8.0",
113
- "babel-plugin-ember-template-compilation": "^2.2.3",
110
+ "@typescript-eslint/eslint-plugin": "^8.4.0",
111
+ "@typescript-eslint/parser": "^8.4.0",
112
+ "babel-plugin-ember-template-compilation": "^2.2.5",
114
113
  "concurrently": "^8.2.2",
115
114
  "ember-concurrency": "^4.0.2",
116
- "ember-source": "~5.8.0",
115
+ "ember-source": "~5.11.0",
117
116
  "ember-template-lint": "^6.0.0",
118
117
  "eslint": "^8.57.0",
119
118
  "eslint-config-prettier": "^9.1.0",
120
- "eslint-plugin-ember": "^12.0.2",
121
- "eslint-plugin-n": "^16.6.2",
122
- "eslint-plugin-prettier": "^5.1.3",
119
+ "eslint-plugin-ember": "^12.2.0",
120
+ "eslint-plugin-import": "^2.30.0",
121
+ "eslint-plugin-n": "^17.10.2",
122
+ "eslint-plugin-prettier": "^5.2.1",
123
123
  "node-sass": "^9.0.0",
124
- "postcss": "^8.4.38",
125
- "prettier": "^3.2.5",
124
+ "postcss": "^8.4.45",
125
+ "prettier": "^3.3.3",
126
126
  "prettier-plugin-ember-template-tag": "^2.0.2",
127
- "rollup": "^4.17.2",
127
+ "rollup": "^4.21.2",
128
128
  "rollup-plugin-styles": "^4.0.0",
129
129
  "rsvp": "^4.8.5",
130
- "sass": "^1.76.0",
131
- "typescript": "^5.4.5",
132
- "webpack": "^5.91.0"
130
+ "sass": "^1.78.0",
131
+ "typescript": "^5.5.4",
132
+ "webpack": "^5.94.0"
133
133
  },
134
134
  "publishConfig": {
135
135
  "registry": "https://registry.npmjs.org"
@@ -156,7 +156,7 @@
156
156
  }
157
157
  },
158
158
  "peerDependencies": {
159
- "@ember/test-helpers": "^2.9.4 || ^3.2.1",
159
+ "@ember/test-helpers": "^2.9.4 || ^3.2.1 || ^4.0.4",
160
160
  "@glimmer/component": "^1.1.2",
161
161
  "@glimmer/tracking": "^1.1.2",
162
162
  "ember-concurrency": "^4.0.2",
package/scss/base.scss CHANGED
@@ -90,15 +90,16 @@
90
90
  $cell-size: null,
91
91
  $cell-width: $cell-size,
92
92
  $cell-height: $cell-size,
93
- $cell-with-spacing-width: $cell-width + 2px,
93
+ $cell-with-spacing-width: calc(#{$cell-width} + 2px),
94
94
  $row-padding-top: 0,
95
95
  $row-padding-bottom: 0,
96
96
  $row-padding-left: 0,
97
97
  $row-padding-right: 0,
98
- $row-width: (
99
- $cell-with-spacing-width * 7 - 2px + $row-padding-left + $row-padding-right,
100
- ),
101
- $row-height: $cell-height + 2px,
98
+ $row-width:
99
+ calc(
100
+ #{$cell-with-spacing-width} * 7 - 2px + #{$row-padding-left} + #{$row-padding-right}
101
+ ),
102
+ $row-height: calc(#{$cell-height} + 2px),
102
103
  $primary-color: #0078c9,
103
104
  $nav-button-color: $primary-color,
104
105
  $nav-button-color--focus: lighten($nav-button-color, 20%),
@@ -124,53 +125,53 @@
124
125
 
125
126
  .ember-power-calendar-week:first-child {
126
127
  &[data-missing-days="1"] {
127
- padding-left: $cell-with-spacing-width * 1;
128
+ padding-left: calc(#{$cell-with-spacing-width} * 1);
128
129
  }
129
130
 
130
131
  &[data-missing-days="2"] {
131
- padding-left: $cell-with-spacing-width * 2;
132
+ padding-left: calc(#{$cell-with-spacing-width} * 2);
132
133
  }
133
134
 
134
135
  &[data-missing-days="3"] {
135
- padding-left: $cell-with-spacing-width * 3;
136
+ padding-left: calc(#{$cell-with-spacing-width} * 3);
136
137
  }
137
138
 
138
139
  &[data-missing-days="4"] {
139
- padding-left: $cell-with-spacing-width * 4;
140
+ padding-left: calc(#{$cell-with-spacing-width} * 4);
140
141
  }
141
142
 
142
143
  &[data-missing-days="5"] {
143
- padding-left: $cell-with-spacing-width * 5;
144
+ padding-left: calc(#{$cell-with-spacing-width} * 5);
144
145
  }
145
146
 
146
147
  &[data-missing-days="6"] {
147
- padding-left: $cell-with-spacing-width * 6;
148
+ padding-left: calc(#{$cell-with-spacing-width} * 6);
148
149
  }
149
150
  }
150
151
 
151
152
  .ember-power-calendar-week:last-child {
152
153
  &[data-missing-days="1"] {
153
- padding-right: $cell-with-spacing-width * 1;
154
+ padding-right: calc(#{$cell-with-spacing-width} * 1);
154
155
  }
155
156
 
156
157
  &[data-missing-days="2"] {
157
- padding-right: $cell-with-spacing-width * 2;
158
+ padding-right: calc(#{$cell-with-spacing-width} * 2);
158
159
  }
159
160
 
160
161
  &[data-missing-days="3"] {
161
- padding-right: $cell-with-spacing-width * 3;
162
+ padding-right: calc(#{$cell-with-spacing-width} * 3);
162
163
  }
163
164
 
164
165
  &[data-missing-days="4"] {
165
- padding-right: $cell-with-spacing-width * 4;
166
+ padding-right: calc(#{$cell-with-spacing-width} * 4);
166
167
  }
167
168
 
168
169
  &[data-missing-days="5"] {
169
- padding-right: $cell-with-spacing-width * 5;
170
+ padding-right: calc(#{$cell-with-spacing-width} * 5);
170
171
  }
171
172
 
172
173
  &[data-missing-days="6"] {
173
- padding-right: $cell-with-spacing-width * 6;
174
+ padding-right: calc(#{$cell-with-spacing-width} * 6);
174
175
  }
175
176
  }
176
177
 
@@ -1,3 +1,6 @@
1
+ :root {
2
+ --ember-power-calendar-cell-size: 35px; }
3
+
1
4
  .ember-power-calendar {
2
5
  box-sizing: border-box;
3
6
  position: relative;
@@ -72,3 +75,74 @@
72
75
 
73
76
  .ember-power-calendar-day--interactive[disabled] {
74
77
  opacity: 0.4; }
78
+
79
+ .ember-power-calendar {
80
+ width: calc( calc(var(--ember-power-calendar-cell-size) + 2px) * 7 - 2px + 0 + 0); }
81
+ .ember-power-calendar .ember-power-calendar-week:first-child[data-missing-days="1"] {
82
+ padding-left: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 1); }
83
+ .ember-power-calendar .ember-power-calendar-week:first-child[data-missing-days="2"] {
84
+ padding-left: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 2); }
85
+ .ember-power-calendar .ember-power-calendar-week:first-child[data-missing-days="3"] {
86
+ padding-left: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 3); }
87
+ .ember-power-calendar .ember-power-calendar-week:first-child[data-missing-days="4"] {
88
+ padding-left: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 4); }
89
+ .ember-power-calendar .ember-power-calendar-week:first-child[data-missing-days="5"] {
90
+ padding-left: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 5); }
91
+ .ember-power-calendar .ember-power-calendar-week:first-child[data-missing-days="6"] {
92
+ padding-left: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 6); }
93
+ .ember-power-calendar .ember-power-calendar-week:last-child[data-missing-days="1"] {
94
+ padding-right: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 1); }
95
+ .ember-power-calendar .ember-power-calendar-week:last-child[data-missing-days="2"] {
96
+ padding-right: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 2); }
97
+ .ember-power-calendar .ember-power-calendar-week:last-child[data-missing-days="3"] {
98
+ padding-right: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 3); }
99
+ .ember-power-calendar .ember-power-calendar-week:last-child[data-missing-days="4"] {
100
+ padding-right: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 4); }
101
+ .ember-power-calendar .ember-power-calendar-week:last-child[data-missing-days="5"] {
102
+ padding-right: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 5); }
103
+ .ember-power-calendar .ember-power-calendar-week:last-child[data-missing-days="6"] {
104
+ padding-right: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 6); }
105
+ .ember-power-calendar .ember-power-calendar-day,
106
+ .ember-power-calendar .ember-power-calendar-weekday {
107
+ max-width: "var(--ember-power-calendar-cell-size)";
108
+ max-height: "var(--ember-power-calendar-cell-size)";
109
+ width: "var(--ember-power-calendar-cell-size)";
110
+ height: "var(--ember-power-calendar-cell-size)"; }
111
+ .ember-power-calendar .ember-power-calendar-weekdays,
112
+ .ember-power-calendar .ember-power-calendar-week {
113
+ height: calc(var(--ember-power-calendar-cell-size) + 2px);
114
+ padding-left: 0;
115
+ padding-right: 0; }
116
+ .ember-power-calendar .ember-power-calendar-day {
117
+ color: #bbb; }
118
+ .ember-power-calendar .ember-power-calendar-weekdays {
119
+ color: #333333; }
120
+ .ember-power-calendar .ember-power-calendar-nav-control {
121
+ color: #0078c9; }
122
+ .ember-power-calendar .ember-power-calendar-nav-control:focus {
123
+ color: #30acff; }
124
+ .ember-power-calendar .ember-power-calendar-day--current-month {
125
+ color: #656d78;
126
+ background-color: #f5f7fa; }
127
+ .ember-power-calendar .ember-power-calendar-day--today {
128
+ background-color: #eee; }
129
+ .ember-power-calendar .ember-power-calendar-day:not([disabled]):hover {
130
+ background-color: #eee; }
131
+ .ember-power-calendar .ember-power-calendar-day--focused {
132
+ box-shadow: inset 0 -2px 0 0 #0078c9; }
133
+ .ember-power-calendar .ember-power-calendar-day--selected.ember-power-calendar-day--range-start {
134
+ background-color: #96d5ff; }
135
+ .ember-power-calendar .ember-power-calendar-day--selected.ember-power-calendar-day--range-start:hover {
136
+ background-color: #96d5ff; }
137
+ .ember-power-calendar .ember-power-calendar-day--selected.ember-power-calendar-day--range-end {
138
+ background-color: #96d5ff; }
139
+ .ember-power-calendar .ember-power-calendar-day--selected.ember-power-calendar-day--range-end:hover {
140
+ background-color: #96d5ff; }
141
+ .ember-power-calendar .ember-power-calendar-day--selected {
142
+ background-color: #c9e9ff;
143
+ color: #656d78; }
144
+ .ember-power-calendar .ember-power-calendar-day--selected:not([disabled]):hover {
145
+ background-color: #c9e9ff;
146
+ color: #656d78; }
147
+ .ember-power-calendar .ember-power-calendar-day--other-month:not([disabled]):hover {
148
+ color: #656d78; }
@@ -1,3 +1,3 @@
1
- var css = ".ember-power-calendar {\n box-sizing: border-box;\n position: relative;\n font-size: 14px;\n line-height: 1.4286; }\n\n.ember-power-calendar-nav {\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n line-height: 2; }\n\n.ember-power-calendar-nav * {\n box-sizing: border-box; }\n\n.ember-power-calendar-days,\n.ember-power-calendar-days * {\n box-sizing: border-box; }\n\n.ember-power-calendar-nav-title {\n flex: 1;\n text-align: center; }\n\n.ember-power-calendar-row {\n display: flex;\n justify-content: space-between; }\n\n.ember-power-calendar-weekday {\n appearance: none;\n flex: 1 1 100%;\n background-color: transparent;\n background-color: initial;\n border: none;\n border: initial;\n outline: none;\n outline: initial;\n justify-content: center;\n display: flex;\n align-items: center;\n padding: 0; }\n\n.ember-power-calendar-day {\n appearance: none;\n background-color: transparent;\n background-color: initial;\n border: none;\n border: initial;\n outline: none;\n outline: initial;\n flex: 1 1 100%;\n font-size: inherit;\n align-items: center;\n justify-content: center;\n padding: 0; }\n\n.ember-power-calendar-nav-control {\n appearance: none;\n background-color: transparent;\n background-color: initial;\n border: none;\n border: initial;\n outline: none;\n outline: initial;\n line-height: 1;\n font-size: 150%; }\n .ember-power-calendar-nav-control:focus {\n transform: scale(1.2); }\n\n.ember-power-calendar-day--selected,\n.ember-power-calendar-day--selected:not([disabled]):hover {\n font-weight: bold; }\n\n.ember-power-calendar-day--interactive[disabled] {\n opacity: 0.4; }\n";
1
+ var css = ":root {\n --ember-power-calendar-cell-size: 35px; }\n\n.ember-power-calendar {\n box-sizing: border-box;\n position: relative;\n font-size: 14px;\n line-height: 1.4286; }\n\n.ember-power-calendar-nav {\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n line-height: 2; }\n\n.ember-power-calendar-nav * {\n box-sizing: border-box; }\n\n.ember-power-calendar-days,\n.ember-power-calendar-days * {\n box-sizing: border-box; }\n\n.ember-power-calendar-nav-title {\n flex: 1;\n text-align: center; }\n\n.ember-power-calendar-row {\n display: flex;\n justify-content: space-between; }\n\n.ember-power-calendar-weekday {\n appearance: none;\n flex: 1 1 100%;\n background-color: transparent;\n background-color: initial;\n border: none;\n border: initial;\n outline: none;\n outline: initial;\n justify-content: center;\n display: flex;\n align-items: center;\n padding: 0; }\n\n.ember-power-calendar-day {\n appearance: none;\n background-color: transparent;\n background-color: initial;\n border: none;\n border: initial;\n outline: none;\n outline: initial;\n flex: 1 1 100%;\n font-size: inherit;\n align-items: center;\n justify-content: center;\n padding: 0; }\n\n.ember-power-calendar-nav-control {\n appearance: none;\n background-color: transparent;\n background-color: initial;\n border: none;\n border: initial;\n outline: none;\n outline: initial;\n line-height: 1;\n font-size: 150%; }\n .ember-power-calendar-nav-control:focus {\n transform: scale(1.2); }\n\n.ember-power-calendar-day--selected,\n.ember-power-calendar-day--selected:not([disabled]):hover {\n font-weight: bold; }\n\n.ember-power-calendar-day--interactive[disabled] {\n opacity: 0.4; }\n\n.ember-power-calendar {\n width: calc( calc(var(--ember-power-calendar-cell-size) + 2px) * 7 - 2px + 0 + 0); }\n .ember-power-calendar .ember-power-calendar-week:first-child[data-missing-days=\"1\"] {\n padding-left: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 1); }\n .ember-power-calendar .ember-power-calendar-week:first-child[data-missing-days=\"2\"] {\n padding-left: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 2); }\n .ember-power-calendar .ember-power-calendar-week:first-child[data-missing-days=\"3\"] {\n padding-left: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 3); }\n .ember-power-calendar .ember-power-calendar-week:first-child[data-missing-days=\"4\"] {\n padding-left: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 4); }\n .ember-power-calendar .ember-power-calendar-week:first-child[data-missing-days=\"5\"] {\n padding-left: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 5); }\n .ember-power-calendar .ember-power-calendar-week:first-child[data-missing-days=\"6\"] {\n padding-left: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 6); }\n .ember-power-calendar .ember-power-calendar-week:last-child[data-missing-days=\"1\"] {\n padding-right: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 1); }\n .ember-power-calendar .ember-power-calendar-week:last-child[data-missing-days=\"2\"] {\n padding-right: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 2); }\n .ember-power-calendar .ember-power-calendar-week:last-child[data-missing-days=\"3\"] {\n padding-right: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 3); }\n .ember-power-calendar .ember-power-calendar-week:last-child[data-missing-days=\"4\"] {\n padding-right: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 4); }\n .ember-power-calendar .ember-power-calendar-week:last-child[data-missing-days=\"5\"] {\n padding-right: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 5); }\n .ember-power-calendar .ember-power-calendar-week:last-child[data-missing-days=\"6\"] {\n padding-right: calc(calc(var(--ember-power-calendar-cell-size) + 2px) * 6); }\n .ember-power-calendar .ember-power-calendar-day,\n .ember-power-calendar .ember-power-calendar-weekday {\n max-width: \"var(--ember-power-calendar-cell-size)\";\n max-height: \"var(--ember-power-calendar-cell-size)\";\n width: \"var(--ember-power-calendar-cell-size)\";\n height: \"var(--ember-power-calendar-cell-size)\"; }\n .ember-power-calendar .ember-power-calendar-weekdays,\n .ember-power-calendar .ember-power-calendar-week {\n height: calc(var(--ember-power-calendar-cell-size) + 2px);\n padding-left: 0;\n padding-right: 0; }\n .ember-power-calendar .ember-power-calendar-day {\n color: #bbb; }\n .ember-power-calendar .ember-power-calendar-weekdays {\n color: #333333; }\n .ember-power-calendar .ember-power-calendar-nav-control {\n color: #0078c9; }\n .ember-power-calendar .ember-power-calendar-nav-control:focus {\n color: #30acff; }\n .ember-power-calendar .ember-power-calendar-day--current-month {\n color: #656d78;\n background-color: #f5f7fa; }\n .ember-power-calendar .ember-power-calendar-day--today {\n background-color: #eee; }\n .ember-power-calendar .ember-power-calendar-day:not([disabled]):hover {\n background-color: #eee; }\n .ember-power-calendar .ember-power-calendar-day--focused {\n box-shadow: inset 0 -2px 0 0 #0078c9; }\n .ember-power-calendar .ember-power-calendar-day--selected.ember-power-calendar-day--range-start {\n background-color: #96d5ff; }\n .ember-power-calendar .ember-power-calendar-day--selected.ember-power-calendar-day--range-start:hover {\n background-color: #96d5ff; }\n .ember-power-calendar .ember-power-calendar-day--selected.ember-power-calendar-day--range-end {\n background-color: #96d5ff; }\n .ember-power-calendar .ember-power-calendar-day--selected.ember-power-calendar-day--range-end:hover {\n background-color: #96d5ff; }\n .ember-power-calendar .ember-power-calendar-day--selected {\n background-color: #c9e9ff;\n color: #656d78; }\n .ember-power-calendar .ember-power-calendar-day--selected:not([disabled]):hover {\n background-color: #c9e9ff;\n color: #656d78; }\n .ember-power-calendar .ember-power-calendar-day--other-month:not([disabled]):hover {\n color: #656d78; }\n";
2
2
 
3
3
  export { css, css as default };