@spartan-ng/brain 0.0.1-alpha.477 → 0.0.1-alpha.479
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/spartan-ng-brain-accordion.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-alert-dialog.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-avatar.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-calendar.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-checkbox.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-collapsible.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-command.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-core.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-dialog.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-forms.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-hover-card.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-input-otp.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-menu.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-popover.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-progress.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-radio-group.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-sheet.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-slider.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-switch.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-tabs.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-toggle-group.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-toggle.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-tooltip.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-accordion.mjs","sources":["../../../../libs/brain/accordion/src/lib/brn-accordion.directive.ts","../../../../libs/brain/accordion/src/lib/brn-accordion-content.component.ts","../../../../libs/brain/accordion/src/index.ts","../../../../libs/brain/accordion/src/spartan-ng-brain-accordion.ts"],"sourcesContent":["import { FocusKeyManager, FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n\ttype AfterContentInit,\n\tDirective,\n\tElementRef,\n\tHostListener,\n\ttype OnDestroy,\n\tcomputed,\n\tcontentChildren,\n\teffect,\n\tinject,\n\tinput,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\n\n@Directive({\n\tselector: '[brnAccordionItem]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t},\n\texportAs: 'brnAccordionItem',\n})\nexport class BrnAccordionItemDirective {\n\tprivate static _itemIdGenerator = 0;\n\tprivate readonly _accordion = inject(BrnAccordionDirective);\n\t/**\n\t * Whether the accordion item is opened or closed.\n\t * @default false\n\t */\n\tpublic readonly isOpened = input<boolean, BooleanInput>(false, { transform: coerceBooleanProperty });\n\n\tpublic readonly id = BrnAccordionItemDirective._itemIdGenerator++;\n\tpublic readonly state = computed(() => (this._accordion.openItemIds().includes(this.id) ? 'open' : 'closed'));\n\n\tconstructor() {\n\t\tif (!this._accordion) {\n\t\t\tthrow Error('Accordion trigger can only be used inside an Accordion. Add brnAccordion to ancestor.');\n\t\t}\n\t\teffect(() => {\n\t\t\tconst isOpened = this.isOpened();\n\t\t\tuntracked(() => {\n\t\t\t\tif (isOpened) {\n\t\t\t\t\tthis._accordion.openItem(this.id);\n\t\t\t\t} else {\n\t\t\t\t\tthis._accordion.closeItem(this.id);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n\n@Directive({\n\tselector: '[brnAccordionTrigger]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-expanded]': 'state() === \"open\"',\n\t\t'[attr.aria-controls]': 'ariaControls',\n\t\trole: 'heading',\n\t\t'aria-level': '3',\n\t\t'[id]': 'id',\n\t},\n})\nexport class BrnAccordionTriggerDirective {\n\tprivate readonly _accordion = inject(BrnAccordionDirective);\n\tprivate readonly _item = inject(BrnAccordionItemDirective);\n\tprivate readonly _elementRef = inject(ElementRef);\n\n\tpublic readonly state = this._item.state;\n\tpublic readonly id = `brn-accordion-trigger-${this._item.id}`;\n\tpublic readonly ariaControls = `brn-accordion-content-${this._item.id}`;\n\n\tconstructor() {\n\t\tif (!this._accordion) {\n\t\t\tthrow Error('Accordion trigger can only be used inside an Accordion. Add brnAccordion to ancestor.');\n\t\t}\n\n\t\tif (!this._item) {\n\t\t\tthrow Error('Accordion trigger can only be used inside an AccordionItem. Add brnAccordionItem to parent.');\n\t\t}\n\n\t\tfromEvent(this._elementRef.nativeElement, 'focus')\n\t\t\t.pipe(takeUntilDestroyed())\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._accordion.setActiveItem(this);\n\t\t\t});\n\t}\n\n\t@HostListener('click', ['$event'])\n\t@HostListener('keyup.space', ['$event'])\n\t@HostListener('keyup.enter', ['$event'])\n\tprotected toggle(event: Event): void {\n\t\tevent.preventDefault();\n\t\tthis._accordion.toggleItem(this._item.id);\n\t}\n\n\tpublic focus() {\n\t\tthis._elementRef.nativeElement.focus();\n\t}\n}\n\nconst HORIZONTAL_KEYS_TO_PREVENT_DEFAULT = [\n\t'ArrowLeft',\n\t'ArrowRight',\n\t'PageDown',\n\t'PageUp',\n\t'Home',\n\t'End',\n\t' ',\n\t'Enter',\n];\nconst VERTICAL_KEYS_TO_PREVENT_DEFAULT = ['ArrowUp', 'ArrowDown', 'PageDown', 'PageUp', 'Home', 'End', ' ', 'Enter'];\n\n@Directive({\n\tselector: '[brnAccordion]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t},\n\texportAs: 'brnAccordion',\n})\nexport class BrnAccordionDirective implements AfterContentInit, OnDestroy {\n\tprivate readonly _el = inject(ElementRef);\n\tprivate _keyManager?: FocusKeyManager<BrnAccordionTriggerDirective>;\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\n\tprivate readonly _focused = signal<boolean>(false);\n\tprivate readonly _openItemIds = signal<number[]>([]);\n\tpublic readonly openItemIds = this._openItemIds.asReadonly();\n\tpublic readonly state = computed(() => (this._openItemIds().length > 0 ? 'open' : 'closed'));\n\n\tpublic triggers = contentChildren(BrnAccordionTriggerDirective, { descendants: true });\n\n\t/**\n\t * Whether the accordion is in single or multiple mode.\n\t * @default 'single'\n\t */\n\tpublic readonly type = input<'single' | 'multiple'>('single');\n\t/**\n\t * The direction of the accordion, either 'ltr' (left-to-right) or 'rtl' (right-to-left).\n\t * @default null\n\t */\n\tpublic readonly dir = input<'ltr' | 'rtl' | null>(null);\n\t/**\n\t * The orientation of the accordion, either 'horizontal' or 'vertical'.\n\t * @default 'vertical'\n\t */\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('vertical');\n\n\tpublic ngAfterContentInit() {\n\t\tthis._keyManager = new FocusKeyManager<BrnAccordionTriggerDirective>(this.triggers())\n\t\t\t.withHomeAndEnd()\n\t\t\t.withPageUpDown()\n\t\t\t.withWrap();\n\n\t\tif (this.orientation() === 'horizontal') {\n\t\t\tthis._keyManager.withHorizontalOrientation(this.dir() ?? 'ltr').withVerticalOrientation(false);\n\t\t}\n\n\t\tthis._el.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\n\t\t\tconst target = event.target as HTMLElement;\n\n\t\t\tif (target.tagName === 'INPUT') return;\n\n\t\t\tthis._keyManager?.onKeydown(event);\n\t\t\tthis.preventDefaultEvents(event);\n\t\t});\n\t\tthis._focusMonitor.monitor(this._el, true).subscribe((origin) => this._focused.set(origin !== null));\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._focusMonitor.stopMonitoring(this._el);\n\t}\n\n\tpublic setActiveItem(item: BrnAccordionTriggerDirective) {\n\t\tthis._keyManager?.setActiveItem(item);\n\t}\n\n\tpublic toggleItem(id: number) {\n\t\tif (this._openItemIds().includes(id)) {\n\t\t\tthis.closeItem(id);\n\t\t\treturn;\n\t\t}\n\t\tthis.openItem(id);\n\t}\n\n\tpublic openItem(id: number) {\n\t\tif (this.type() === 'single') {\n\t\t\tthis._openItemIds.set([id]);\n\t\t\treturn;\n\t\t}\n\t\tthis._openItemIds.update((ids) => [...ids, id]);\n\t}\n\tpublic closeItem(id: number) {\n\t\tthis._openItemIds.update((ids) => ids.filter((openId) => id !== openId));\n\t}\n\n\tprivate preventDefaultEvents(event: KeyboardEvent) {\n\t\tif (!this._focused()) return;\n\t\tif (!('key' in event)) return;\n\n\t\tconst keys =\n\t\t\tthis.orientation() === 'horizontal' ? HORIZONTAL_KEYS_TO_PREVENT_DEFAULT : VERTICAL_KEYS_TO_PREVENT_DEFAULT;\n\t\tif (keys.includes(event.key) && event.code !== 'NumpadEnter') {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tViewEncapsulation,\n\tcomputed,\n\tinject,\n\tinput,\n\tlinkedSignal,\n} from '@angular/core';\nimport type { CustomElementClassSettable } from '@spartan-ng/brain/core';\nimport type { ClassValue } from 'clsx';\nimport { BrnAccordionItemDirective } from './brn-accordion.directive';\n\n@Component({\n\tselector: 'brn-accordion-content',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-labelledby]': 'ariaLabeledBy',\n\t\trole: 'region',\n\t\t'[id]': 'id',\n\t},\n\ttemplate: `\n\t\t<div [attr.inert]=\"_addInert()\" style=\"overflow: hidden\">\n\t\t\t<p [class]=\"_contentClass()\">\n\t\t\t\t<ng-content />\n\t\t\t</p>\n\t\t</div>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class BrnAccordionContentComponent implements CustomElementClassSettable {\n\tprivate readonly _item = inject(BrnAccordionItemDirective);\n\n\tpublic readonly state = this._item.state;\n\tpublic readonly id = `brn-accordion-content-${this._item.id}`;\n\tpublic readonly ariaLabeledBy = `brn-accordion-trigger-${this._item.id}`;\n\n\tprotected readonly _addInert = computed(() => (this.state() === 'closed' ? true : undefined));\n\t/**\n\t * The class to be applied to the content element.\n\t */\n\tpublic readonly contentClass = input<ClassValue>('');\n\n\tprotected readonly _contentClass = linkedSignal(() => this.contentClass());\n\n\tconstructor() {\n\t\tif (!this._item) {\n\t\t\tthrow Error('Accordion Content can only be used inside an AccordionItem. Add brnAccordionItem to parent.');\n\t\t}\n\t}\n\n\tpublic setClassToCustomElement(classes: ClassValue) {\n\t\tthis._contentClass.set(classes);\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { BrnAccordionContentComponent } from './lib/brn-accordion-content.component';\nimport {\n\tBrnAccordionDirective,\n\tBrnAccordionItemDirective,\n\tBrnAccordionTriggerDirective,\n} from './lib/brn-accordion.directive';\n\nexport * from './lib/brn-accordion-content.component';\nexport * from './lib/brn-accordion.directive';\n\nexport const BrnAccordionImports = [\n\tBrnAccordionDirective,\n\tBrnAccordionContentComponent,\n\tBrnAccordionItemDirective,\n\tBrnAccordionTriggerDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnAccordionImports],\n\texports: [...BrnAccordionImports],\n})\nexport class BrnAccordionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-accordion.mjs","sources":["../../../../libs/brain/accordion/src/lib/brn-accordion.directive.ts","../../../../libs/brain/accordion/src/lib/brn-accordion-content.component.ts","../../../../libs/brain/accordion/src/index.ts","../../../../libs/brain/accordion/src/spartan-ng-brain-accordion.ts"],"sourcesContent":["import { FocusKeyManager, FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n\ttype AfterContentInit,\n\tDirective,\n\tElementRef,\n\tHostListener,\n\ttype OnDestroy,\n\tcomputed,\n\tcontentChildren,\n\teffect,\n\tinject,\n\tinput,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\n\n@Directive({\n\tselector: '[brnAccordionItem]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t},\n\texportAs: 'brnAccordionItem',\n})\nexport class BrnAccordionItemDirective {\n\tprivate static _itemIdGenerator = 0;\n\tprivate readonly _accordion = inject(BrnAccordionDirective);\n\t/**\n\t * Whether the accordion item is opened or closed.\n\t * @default false\n\t */\n\tpublic readonly isOpened = input<boolean, BooleanInput>(false, { transform: coerceBooleanProperty });\n\n\tpublic readonly id = BrnAccordionItemDirective._itemIdGenerator++;\n\tpublic readonly state = computed(() => (this._accordion.openItemIds().includes(this.id) ? 'open' : 'closed'));\n\n\tconstructor() {\n\t\tif (!this._accordion) {\n\t\t\tthrow Error('Accordion trigger can only be used inside an Accordion. Add brnAccordion to ancestor.');\n\t\t}\n\t\teffect(() => {\n\t\t\tconst isOpened = this.isOpened();\n\t\t\tuntracked(() => {\n\t\t\t\tif (isOpened) {\n\t\t\t\t\tthis._accordion.openItem(this.id);\n\t\t\t\t} else {\n\t\t\t\t\tthis._accordion.closeItem(this.id);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n\n@Directive({\n\tselector: '[brnAccordionTrigger]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-expanded]': 'state() === \"open\"',\n\t\t'[attr.aria-controls]': 'ariaControls',\n\t\trole: 'heading',\n\t\t'aria-level': '3',\n\t\t'[id]': 'id',\n\t},\n})\nexport class BrnAccordionTriggerDirective {\n\tprivate readonly _accordion = inject(BrnAccordionDirective);\n\tprivate readonly _item = inject(BrnAccordionItemDirective);\n\tprivate readonly _elementRef = inject(ElementRef);\n\n\tpublic readonly state = this._item.state;\n\tpublic readonly id = `brn-accordion-trigger-${this._item.id}`;\n\tpublic readonly ariaControls = `brn-accordion-content-${this._item.id}`;\n\n\tconstructor() {\n\t\tif (!this._accordion) {\n\t\t\tthrow Error('Accordion trigger can only be used inside an Accordion. Add brnAccordion to ancestor.');\n\t\t}\n\n\t\tif (!this._item) {\n\t\t\tthrow Error('Accordion trigger can only be used inside an AccordionItem. Add brnAccordionItem to parent.');\n\t\t}\n\n\t\tfromEvent(this._elementRef.nativeElement, 'focus')\n\t\t\t.pipe(takeUntilDestroyed())\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._accordion.setActiveItem(this);\n\t\t\t});\n\t}\n\n\t@HostListener('click', ['$event'])\n\t@HostListener('keyup.space', ['$event'])\n\t@HostListener('keyup.enter', ['$event'])\n\tprotected toggle(event: Event): void {\n\t\tevent.preventDefault();\n\t\tthis._accordion.toggleItem(this._item.id);\n\t}\n\n\tpublic focus() {\n\t\tthis._elementRef.nativeElement.focus();\n\t}\n}\n\nconst HORIZONTAL_KEYS_TO_PREVENT_DEFAULT = [\n\t'ArrowLeft',\n\t'ArrowRight',\n\t'PageDown',\n\t'PageUp',\n\t'Home',\n\t'End',\n\t' ',\n\t'Enter',\n];\nconst VERTICAL_KEYS_TO_PREVENT_DEFAULT = ['ArrowUp', 'ArrowDown', 'PageDown', 'PageUp', 'Home', 'End', ' ', 'Enter'];\n\n@Directive({\n\tselector: '[brnAccordion]',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t},\n\texportAs: 'brnAccordion',\n})\nexport class BrnAccordionDirective implements AfterContentInit, OnDestroy {\n\tprivate readonly _el = inject(ElementRef);\n\tprivate _keyManager?: FocusKeyManager<BrnAccordionTriggerDirective>;\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\n\tprivate readonly _focused = signal<boolean>(false);\n\tprivate readonly _openItemIds = signal<number[]>([]);\n\tpublic readonly openItemIds = this._openItemIds.asReadonly();\n\tpublic readonly state = computed(() => (this._openItemIds().length > 0 ? 'open' : 'closed'));\n\n\tpublic triggers = contentChildren(BrnAccordionTriggerDirective, { descendants: true });\n\n\t/**\n\t * Whether the accordion is in single or multiple mode.\n\t * @default 'single'\n\t */\n\tpublic readonly type = input<'single' | 'multiple'>('single');\n\t/**\n\t * The direction of the accordion, either 'ltr' (left-to-right) or 'rtl' (right-to-left).\n\t * @default null\n\t */\n\tpublic readonly dir = input<'ltr' | 'rtl' | null>(null);\n\t/**\n\t * The orientation of the accordion, either 'horizontal' or 'vertical'.\n\t * @default 'vertical'\n\t */\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('vertical');\n\n\tpublic ngAfterContentInit() {\n\t\tthis._keyManager = new FocusKeyManager<BrnAccordionTriggerDirective>(this.triggers())\n\t\t\t.withHomeAndEnd()\n\t\t\t.withPageUpDown()\n\t\t\t.withWrap();\n\n\t\tif (this.orientation() === 'horizontal') {\n\t\t\tthis._keyManager.withHorizontalOrientation(this.dir() ?? 'ltr').withVerticalOrientation(false);\n\t\t}\n\n\t\tthis._el.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\n\t\t\tconst target = event.target as HTMLElement;\n\n\t\t\tif (target.tagName === 'INPUT') return;\n\n\t\t\tthis._keyManager?.onKeydown(event);\n\t\t\tthis.preventDefaultEvents(event);\n\t\t});\n\t\tthis._focusMonitor.monitor(this._el, true).subscribe((origin) => this._focused.set(origin !== null));\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._focusMonitor.stopMonitoring(this._el);\n\t}\n\n\tpublic setActiveItem(item: BrnAccordionTriggerDirective) {\n\t\tthis._keyManager?.setActiveItem(item);\n\t}\n\n\tpublic toggleItem(id: number) {\n\t\tif (this._openItemIds().includes(id)) {\n\t\t\tthis.closeItem(id);\n\t\t\treturn;\n\t\t}\n\t\tthis.openItem(id);\n\t}\n\n\tpublic openItem(id: number) {\n\t\tif (this.type() === 'single') {\n\t\t\tthis._openItemIds.set([id]);\n\t\t\treturn;\n\t\t}\n\t\tthis._openItemIds.update((ids) => [...ids, id]);\n\t}\n\tpublic closeItem(id: number) {\n\t\tthis._openItemIds.update((ids) => ids.filter((openId) => id !== openId));\n\t}\n\n\tprivate preventDefaultEvents(event: KeyboardEvent) {\n\t\tif (!this._focused()) return;\n\t\tif (!('key' in event)) return;\n\n\t\tconst keys =\n\t\t\tthis.orientation() === 'horizontal' ? HORIZONTAL_KEYS_TO_PREVENT_DEFAULT : VERTICAL_KEYS_TO_PREVENT_DEFAULT;\n\t\tif (keys.includes(event.key) && event.code !== 'NumpadEnter') {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tViewEncapsulation,\n\tcomputed,\n\tinject,\n\tinput,\n\tlinkedSignal,\n} from '@angular/core';\nimport type { CustomElementClassSettable } from '@spartan-ng/brain/core';\nimport type { ClassValue } from 'clsx';\nimport { BrnAccordionItemDirective } from './brn-accordion.directive';\n\n@Component({\n\tselector: 'brn-accordion-content',\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-labelledby]': 'ariaLabeledBy',\n\t\trole: 'region',\n\t\t'[id]': 'id',\n\t},\n\ttemplate: `\n\t\t<div [attr.inert]=\"_addInert()\" style=\"overflow: hidden\">\n\t\t\t<p [class]=\"_contentClass()\">\n\t\t\t\t<ng-content />\n\t\t\t</p>\n\t\t</div>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class BrnAccordionContentComponent implements CustomElementClassSettable {\n\tprivate readonly _item = inject(BrnAccordionItemDirective);\n\n\tpublic readonly state = this._item.state;\n\tpublic readonly id = `brn-accordion-content-${this._item.id}`;\n\tpublic readonly ariaLabeledBy = `brn-accordion-trigger-${this._item.id}`;\n\n\tprotected readonly _addInert = computed(() => (this.state() === 'closed' ? true : undefined));\n\t/**\n\t * The class to be applied to the content element.\n\t */\n\tpublic readonly contentClass = input<ClassValue>('');\n\n\tprotected readonly _contentClass = linkedSignal(() => this.contentClass());\n\n\tconstructor() {\n\t\tif (!this._item) {\n\t\t\tthrow Error('Accordion Content can only be used inside an AccordionItem. Add brnAccordionItem to parent.');\n\t\t}\n\t}\n\n\tpublic setClassToCustomElement(classes: ClassValue) {\n\t\tthis._contentClass.set(classes);\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { BrnAccordionContentComponent } from './lib/brn-accordion-content.component';\nimport {\n\tBrnAccordionDirective,\n\tBrnAccordionItemDirective,\n\tBrnAccordionTriggerDirective,\n} from './lib/brn-accordion.directive';\n\nexport * from './lib/brn-accordion-content.component';\nexport * from './lib/brn-accordion.directive';\n\nexport const BrnAccordionImports = [\n\tBrnAccordionDirective,\n\tBrnAccordionContentComponent,\n\tBrnAccordionItemDirective,\n\tBrnAccordionTriggerDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnAccordionImports],\n\texports: [...BrnAccordionImports],\n})\nexport class BrnAccordionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-alert-dialog.mjs","sources":["../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-content.directive.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-description.directive.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-overlay.component.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-title.directive.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-trigger.directive.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog.component.ts","../../../../libs/brain/alert-dialog/src/index.ts","../../../../libs/brain/alert-dialog/src/spartan-ng-brain-alert-dialog.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { provideExposesStateProviderExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogContentDirective } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogContent]',\n\tproviders: [provideExposesStateProviderExisting(() => BrnAlertDialogContentDirective)],\n})\nexport class BrnAlertDialogContentDirective<T> extends BrnDialogContentDirective<T> {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogDescriptionDirective } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogDescription]',\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnAlertDialogDescriptionDirective extends BrnDialogDescriptionDirective {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { provideCustomClassSettableExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogOverlayComponent } from '@spartan-ng/brain/dialog';\n\n@Component({\n\tselector: 'brn-alert-dialog-overlay',\n\tproviders: [provideCustomClassSettableExisting(() => BrnAlertDialogOverlayComponent)],\n\ttemplate: '',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class BrnAlertDialogOverlayComponent extends BrnDialogOverlayComponent {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogTitleDirective } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogTitle]',\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnAlertDialogTitleDirective extends BrnDialogTitleDirective {}\n","import { Directive, effect, input, untracked } from '@angular/core';\nimport { BrnDialogTriggerDirective } from '@spartan-ng/brain/dialog';\nimport type { BrnAlertDialogComponent } from './brn-alert-dialog.component';\n\n@Directive({\n\tselector: 'button[brnAlertDialogTrigger],button[brnAlertDialogTriggerFor]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'aria-haspopup': 'dialog',\n\t\t'[attr.aria-expanded]': \"state() === 'open' ? 'true': 'false'\",\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-controls]': 'dialogId',\n\t},\n})\nexport class BrnAlertDialogTriggerDirective extends BrnDialogTriggerDirective {\n\tpublic readonly brnAlertDialogTriggerFor = input<BrnAlertDialogComponent | undefined>();\n\n\tconstructor() {\n\t\tsuper();\n\t\teffect(() => {\n\t\t\tconst brnDialog = this.brnAlertDialogTriggerFor();\n\t\t\tuntracked(() => {\n\t\t\t\tif (brnDialog) {\n\t\t\t\t\tthis.mutableBrnDialogTriggerFor().set(brnDialog);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from '@angular/core';\nimport { BrnDialogComponent, BrnDialogDefaultOptions, provideBrnDialogDefaultOptions } from '@spartan-ng/brain/dialog';\n\nexport const BRN_ALERT_DIALOG_DEFAULT_OPTIONS: Partial<BrnDialogDefaultOptions> = {\n\tcloseOnBackdropClick: false,\n\tcloseOnOutsidePointerEvents: false,\n\trole: 'alertdialog',\n};\n\n@Component({\n\tselector: 'brn-alert-dialog',\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: BrnDialogComponent,\n\t\t\tuseExisting: forwardRef(() => BrnAlertDialogComponent),\n\t\t},\n\t\tprovideBrnDialogDefaultOptions(BRN_ALERT_DIALOG_DEFAULT_OPTIONS),\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\texportAs: 'brnAlertDialog',\n})\nexport class BrnAlertDialogComponent extends BrnDialogComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { BrnAlertDialogContentDirective } from './lib/brn-alert-dialog-content.directive';\nimport { BrnAlertDialogDescriptionDirective } from './lib/brn-alert-dialog-description.directive';\nimport { BrnAlertDialogOverlayComponent } from './lib/brn-alert-dialog-overlay.component';\nimport { BrnAlertDialogTitleDirective } from './lib/brn-alert-dialog-title.directive';\nimport { BrnAlertDialogTriggerDirective } from './lib/brn-alert-dialog-trigger.directive';\nimport { BrnAlertDialogComponent } from './lib/brn-alert-dialog.component';\n\nexport * from './lib/brn-alert-dialog-content.directive';\nexport * from './lib/brn-alert-dialog-description.directive';\nexport * from './lib/brn-alert-dialog-overlay.component';\nexport * from './lib/brn-alert-dialog-title.directive';\nexport * from './lib/brn-alert-dialog-trigger.directive';\nexport * from './lib/brn-alert-dialog.component';\n\nexport const BrnAlertDialogImports = [\n\tBrnAlertDialogComponent,\n\tBrnAlertDialogOverlayComponent,\n\tBrnAlertDialogTriggerDirective,\n\tBrnAlertDialogContentDirective,\n\tBrnAlertDialogTitleDirective,\n\tBrnAlertDialogDescriptionDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnAlertDialogImports],\n\texports: [...BrnAlertDialogImports],\n})\nexport class BrnAlertDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-alert-dialog.mjs","sources":["../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-content.directive.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-description.directive.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-overlay.component.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-title.directive.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-trigger.directive.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog.component.ts","../../../../libs/brain/alert-dialog/src/index.ts","../../../../libs/brain/alert-dialog/src/spartan-ng-brain-alert-dialog.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { provideExposesStateProviderExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogContentDirective } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogContent]',\n\tproviders: [provideExposesStateProviderExisting(() => BrnAlertDialogContentDirective)],\n})\nexport class BrnAlertDialogContentDirective<T> extends BrnDialogContentDirective<T> {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogDescriptionDirective } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogDescription]',\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnAlertDialogDescriptionDirective extends BrnDialogDescriptionDirective {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { provideCustomClassSettableExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogOverlayComponent } from '@spartan-ng/brain/dialog';\n\n@Component({\n\tselector: 'brn-alert-dialog-overlay',\n\tproviders: [provideCustomClassSettableExisting(() => BrnAlertDialogOverlayComponent)],\n\ttemplate: '',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class BrnAlertDialogOverlayComponent extends BrnDialogOverlayComponent {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogTitleDirective } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogTitle]',\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnAlertDialogTitleDirective extends BrnDialogTitleDirective {}\n","import { Directive, effect, input, untracked } from '@angular/core';\nimport { BrnDialogTriggerDirective } from '@spartan-ng/brain/dialog';\nimport type { BrnAlertDialogComponent } from './brn-alert-dialog.component';\n\n@Directive({\n\tselector: 'button[brnAlertDialogTrigger],button[brnAlertDialogTriggerFor]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'aria-haspopup': 'dialog',\n\t\t'[attr.aria-expanded]': \"state() === 'open' ? 'true': 'false'\",\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-controls]': 'dialogId',\n\t},\n})\nexport class BrnAlertDialogTriggerDirective extends BrnDialogTriggerDirective {\n\tpublic readonly brnAlertDialogTriggerFor = input<BrnAlertDialogComponent | undefined>();\n\n\tconstructor() {\n\t\tsuper();\n\t\teffect(() => {\n\t\t\tconst brnDialog = this.brnAlertDialogTriggerFor();\n\t\t\tuntracked(() => {\n\t\t\t\tif (brnDialog) {\n\t\t\t\t\tthis.mutableBrnDialogTriggerFor().set(brnDialog);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from '@angular/core';\nimport { BrnDialogComponent, BrnDialogDefaultOptions, provideBrnDialogDefaultOptions } from '@spartan-ng/brain/dialog';\n\nexport const BRN_ALERT_DIALOG_DEFAULT_OPTIONS: Partial<BrnDialogDefaultOptions> = {\n\tcloseOnBackdropClick: false,\n\tcloseOnOutsidePointerEvents: false,\n\trole: 'alertdialog',\n};\n\n@Component({\n\tselector: 'brn-alert-dialog',\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: BrnDialogComponent,\n\t\t\tuseExisting: forwardRef(() => BrnAlertDialogComponent),\n\t\t},\n\t\tprovideBrnDialogDefaultOptions(BRN_ALERT_DIALOG_DEFAULT_OPTIONS),\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\texportAs: 'brnAlertDialog',\n})\nexport class BrnAlertDialogComponent extends BrnDialogComponent {}\n","import { NgModule } from '@angular/core';\n\nimport { BrnAlertDialogContentDirective } from './lib/brn-alert-dialog-content.directive';\nimport { BrnAlertDialogDescriptionDirective } from './lib/brn-alert-dialog-description.directive';\nimport { BrnAlertDialogOverlayComponent } from './lib/brn-alert-dialog-overlay.component';\nimport { BrnAlertDialogTitleDirective } from './lib/brn-alert-dialog-title.directive';\nimport { BrnAlertDialogTriggerDirective } from './lib/brn-alert-dialog-trigger.directive';\nimport { BrnAlertDialogComponent } from './lib/brn-alert-dialog.component';\n\nexport * from './lib/brn-alert-dialog-content.directive';\nexport * from './lib/brn-alert-dialog-description.directive';\nexport * from './lib/brn-alert-dialog-overlay.component';\nexport * from './lib/brn-alert-dialog-title.directive';\nexport * from './lib/brn-alert-dialog-trigger.directive';\nexport * from './lib/brn-alert-dialog.component';\n\nexport const BrnAlertDialogImports = [\n\tBrnAlertDialogComponent,\n\tBrnAlertDialogOverlayComponent,\n\tBrnAlertDialogTriggerDirective,\n\tBrnAlertDialogContentDirective,\n\tBrnAlertDialogTitleDirective,\n\tBrnAlertDialogDescriptionDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnAlertDialogImports],\n\texports: [...BrnAlertDialogImports],\n})\nexport class BrnAlertDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-avatar.mjs","sources":["../../../../libs/brain/avatar/src/lib/image/brn-avatar-image.directive.ts","../../../../libs/brain/avatar/src/lib/brn-avatar.component.ts","../../../../libs/brain/avatar/src/lib/fallback/brn-avatar-fallback.directive.ts","../../../../libs/brain/avatar/src/lib/util/hex-color-for.ts","../../../../libs/brain/avatar/src/lib/util/initials.pipe.ts","../../../../libs/brain/avatar/src/lib/util/is-bright.ts","../../../../libs/brain/avatar/src/index.ts","../../../../libs/brain/avatar/src/spartan-ng-brain-avatar.ts"],"sourcesContent":["import { Directive, HostListener, computed, signal } from '@angular/core';\n\n@Directive({\n\tselector: 'img[brnAvatarImage]',\n\texportAs: 'avatarImage',\n})\nexport class BrnAvatarImageDirective {\n\tprivate readonly _loaded = signal(false);\n\n\t@HostListener('error')\n\tprivate onError() {\n\t\tthis._loaded.set(false);\n\t}\n\n\t@HostListener('load')\n\tprivate onLoad() {\n\t\tthis._loaded.set(true);\n\t}\n\n\tpublic canShow = computed(() => this._loaded());\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, contentChild } from '@angular/core';\nimport { BrnAvatarImageDirective } from './image';\n\n@Component({\n\tselector: 'brn-avatar',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\ttemplate: `\n\t\t@if (image()?.canShow()) {\n\t\t\t<ng-content select=\"[brnAvatarImage]\" />\n\t\t} @else {\n\t\t\t<ng-content select=\"[brnAvatarFallback]\" />\n\t\t}\n\t`,\n})\nexport class BrnAvatarComponent {\n\tprotected readonly image = contentChild(BrnAvatarImageDirective);\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, booleanAttribute, inject, input } from '@angular/core';\nimport type { ClassValue } from 'clsx';\n\n@Directive({\n\tselector: '[brnAvatarFallback]',\n\texportAs: 'avatarFallback',\n})\nexport class BrnAvatarFallbackDirective {\n\tprivate readonly _element = inject(ElementRef).nativeElement;\n\n\tpublic readonly userClass = input<ClassValue>('', { alias: 'class' });\n\tpublic readonly autoColor = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tgetTextContent(): string {\n\t\treturn this._element.textContent;\n\t}\n}\n","function hashString(str: string) {\n\tlet h;\n\tfor (let i = 0; i < str.length; i++) h = (Math.imul(31, h || 0) + str.charCodeAt(i)) | 0;\n\n\treturn h || 0;\n}\n\nfunction hashManyTimes(times: number, str: string) {\n\tlet h = hashString(str);\n\n\tfor (let i = 0; i < times; i++) h = hashString(String(h));\n\n\treturn h;\n}\n\nexport function hexColorFor(str: string) {\n\tconst hash = str.length <= 2 ? hashManyTimes(5, str) : hashString(str);\n\n\tlet color = '#';\n\n\tfor (let i = 0; i < 3; i += 1) {\n\t\tconst value = (hash >> (i * 8)) & 0xff;\n\t\tcolor += `00${value.toString(16)}`.slice(-2);\n\t}\n\n\treturn color;\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\n\nconst toInitial =\n\t(capitalize = true) =>\n\t(word: string) => {\n\t\tconst initial = word.charAt(0);\n\t\treturn capitalize ? initial.toLocaleUpperCase() : initial;\n\t};\n\nconst firstAndLast = (initials: string[]) => `${initials[0]}${initials[initials.length - 1]}`;\n\n@Pipe({\n\tname: 'initials',\n})\nexport class InitialsPipe implements PipeTransform {\n\ttransform(name: string, capitalize = true, firstAndLastOnly = true, delimiter = ' '): string {\n\t\tif (!name) return '';\n\n\t\tconst initials = name.trim().split(delimiter).filter(Boolean).map(toInitial(capitalize));\n\n\t\tif (firstAndLastOnly && initials.length > 1) return firstAndLast(initials);\n\n\t\treturn initials.join('');\n\t}\n}\n","const isShortHand = (hex: string) => hex.length === 3;\n\nconst cleanup = (hex: string) => {\n\tconst noHash = hex.replace('#', '').trim().toLowerCase();\n\n\tif (!isShortHand(noHash)) return noHash;\n\n\treturn noHash\n\t\t.split('')\n\t\t.map((char) => char + char)\n\t\t.join('');\n};\n\nexport const isBright = (hex: string) => Number.parseInt(cleanup(hex), 16) > 0xffffff / 1.25;\n","import { NgModule } from '@angular/core';\n\nimport { BrnAvatarComponent } from './lib/brn-avatar.component';\nimport { BrnAvatarFallbackDirective } from './lib/fallback';\nimport { BrnAvatarImageDirective } from './lib/image';\n\nexport * from './lib/brn-avatar.component';\nexport * from './lib/fallback';\nexport * from './lib/image';\nexport * from './lib/util';\n\nexport const BrnAvatarImports = [BrnAvatarComponent, BrnAvatarFallbackDirective, BrnAvatarImageDirective] as const;\n\n@NgModule({\n\timports: [...BrnAvatarImports],\n\texports: [...BrnAvatarImports],\n})\nexport class BrnAvatarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-avatar.mjs","sources":["../../../../libs/brain/avatar/src/lib/image/brn-avatar-image.directive.ts","../../../../libs/brain/avatar/src/lib/brn-avatar.component.ts","../../../../libs/brain/avatar/src/lib/fallback/brn-avatar-fallback.directive.ts","../../../../libs/brain/avatar/src/lib/util/hex-color-for.ts","../../../../libs/brain/avatar/src/lib/util/initials.pipe.ts","../../../../libs/brain/avatar/src/lib/util/is-bright.ts","../../../../libs/brain/avatar/src/index.ts","../../../../libs/brain/avatar/src/spartan-ng-brain-avatar.ts"],"sourcesContent":["import { Directive, HostListener, computed, signal } from '@angular/core';\n\n@Directive({\n\tselector: 'img[brnAvatarImage]',\n\texportAs: 'avatarImage',\n})\nexport class BrnAvatarImageDirective {\n\tprivate readonly _loaded = signal(false);\n\n\t@HostListener('error')\n\tprivate onError() {\n\t\tthis._loaded.set(false);\n\t}\n\n\t@HostListener('load')\n\tprivate onLoad() {\n\t\tthis._loaded.set(true);\n\t}\n\n\tpublic canShow = computed(() => this._loaded());\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, contentChild } from '@angular/core';\nimport { BrnAvatarImageDirective } from './image';\n\n@Component({\n\tselector: 'brn-avatar',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\ttemplate: `\n\t\t@if (image()?.canShow()) {\n\t\t\t<ng-content select=\"[brnAvatarImage]\" />\n\t\t} @else {\n\t\t\t<ng-content select=\"[brnAvatarFallback]\" />\n\t\t}\n\t`,\n})\nexport class BrnAvatarComponent {\n\tprotected readonly image = contentChild(BrnAvatarImageDirective);\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, booleanAttribute, inject, input } from '@angular/core';\nimport type { ClassValue } from 'clsx';\n\n@Directive({\n\tselector: '[brnAvatarFallback]',\n\texportAs: 'avatarFallback',\n})\nexport class BrnAvatarFallbackDirective {\n\tprivate readonly _element = inject(ElementRef).nativeElement;\n\n\tpublic readonly userClass = input<ClassValue>('', { alias: 'class' });\n\tpublic readonly autoColor = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tgetTextContent(): string {\n\t\treturn this._element.textContent;\n\t}\n}\n","function hashString(str: string) {\n\tlet h;\n\tfor (let i = 0; i < str.length; i++) h = (Math.imul(31, h || 0) + str.charCodeAt(i)) | 0;\n\n\treturn h || 0;\n}\n\nfunction hashManyTimes(times: number, str: string) {\n\tlet h = hashString(str);\n\n\tfor (let i = 0; i < times; i++) h = hashString(String(h));\n\n\treturn h;\n}\n\nexport function hexColorFor(str: string) {\n\tconst hash = str.length <= 2 ? hashManyTimes(5, str) : hashString(str);\n\n\tlet color = '#';\n\n\tfor (let i = 0; i < 3; i += 1) {\n\t\tconst value = (hash >> (i * 8)) & 0xff;\n\t\tcolor += `00${value.toString(16)}`.slice(-2);\n\t}\n\n\treturn color;\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\n\nconst toInitial =\n\t(capitalize = true) =>\n\t(word: string) => {\n\t\tconst initial = word.charAt(0);\n\t\treturn capitalize ? initial.toLocaleUpperCase() : initial;\n\t};\n\nconst firstAndLast = (initials: string[]) => `${initials[0]}${initials[initials.length - 1]}`;\n\n@Pipe({\n\tname: 'initials',\n})\nexport class InitialsPipe implements PipeTransform {\n\ttransform(name: string, capitalize = true, firstAndLastOnly = true, delimiter = ' '): string {\n\t\tif (!name) return '';\n\n\t\tconst initials = name.trim().split(delimiter).filter(Boolean).map(toInitial(capitalize));\n\n\t\tif (firstAndLastOnly && initials.length > 1) return firstAndLast(initials);\n\n\t\treturn initials.join('');\n\t}\n}\n","const isShortHand = (hex: string) => hex.length === 3;\n\nconst cleanup = (hex: string) => {\n\tconst noHash = hex.replace('#', '').trim().toLowerCase();\n\n\tif (!isShortHand(noHash)) return noHash;\n\n\treturn noHash\n\t\t.split('')\n\t\t.map((char) => char + char)\n\t\t.join('');\n};\n\nexport const isBright = (hex: string) => Number.parseInt(cleanup(hex), 16) > 0xffffff / 1.25;\n","import { NgModule } from '@angular/core';\n\nimport { BrnAvatarComponent } from './lib/brn-avatar.component';\nimport { BrnAvatarFallbackDirective } from './lib/fallback';\nimport { BrnAvatarImageDirective } from './lib/image';\n\nexport * from './lib/brn-avatar.component';\nexport * from './lib/fallback';\nexport * from './lib/image';\nexport * from './lib/util';\n\nexport const BrnAvatarImports = [BrnAvatarComponent, BrnAvatarFallbackDirective, BrnAvatarImageDirective] as const;\n\n@NgModule({\n\timports: [...BrnAvatarImports],\n\texports: [...BrnAvatarImports],\n})\nexport class BrnAvatarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-calendar.mjs","sources":["../../../../libs/brain/calendar/src/lib/brn-calendar.token.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-cell-button.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-cell.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-grid.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-header.directive.ts","../../../../libs/brain/calendar/src/lib/i18n/calendar-i18n.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-next-button.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-previous-button.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-week.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-weekday.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar.directive.ts","../../../../libs/brain/calendar/src/lib/mode/brn-calendar-multiple.directive.ts","../../../../libs/brain/calendar/src/index.ts","../../../../libs/brain/calendar/src/spartan-ng-brain-calendar.ts"],"sourcesContent":["import { ExistingProvider, InjectionToken, Signal, Type, WritableSignal, inject } from '@angular/core';\nimport { BrnCalendarHeaderDirective } from './brn-calendar-header.directive';\n\nexport interface BrnCalendar<T> {\n\tisSelected: (date: T) => boolean;\n\tselectDate: (date: T) => void;\n\n\tconstrainDate: (date: T) => T;\n\tisDateDisabled: (date: T) => boolean;\n\tsetFocusedDate: (date: T) => void;\n\n\tdisabled: Signal<boolean>;\n\tfocusedDate: Signal<T>;\n\theader: Signal<BrnCalendarHeaderDirective | undefined>;\n\tstate: Signal<{\n\t\tfocusedDate: WritableSignal<T>;\n\t}>;\n\tdays: Signal<T[]>;\n}\n\nexport const BrnCalendarToken = new InjectionToken<BrnCalendar<unknown>>('BrnCalendarToken');\n\nexport function provideBrnCalendar<T>(instance: Type<BrnCalendar<T>>): ExistingProvider {\n\treturn { provide: BrnCalendarToken, useExisting: instance };\n}\n\n/**\n * Inject the calendar component.\n */\nexport function injectBrnCalendar<T>(): BrnCalendar<T> {\n\treturn inject(BrnCalendarToken) as BrnCalendar<T>;\n}\n","import { Directive, ElementRef, computed, inject, input } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: 'button[brnCalendarCellButton]',\n\thost: {\n\t\trole: 'gridcell',\n\t\t'[tabindex]': 'focusable() ? 0 : -1',\n\t\ttype: 'button',\n\t\t'[attr.data-outside]': \"outside() ? '' : null\",\n\t\t'[attr.data-today]': \"today() && !selected() ? '' : null\",\n\t\t'[attr.data-selected]': \"selected() ? '' : null\",\n\t\t'[attr.data-disabled]': \"disabled() ? '' : null\",\n\t\t'[attr.aria-selected]': \"selected() ? 'true' : null\",\n\t\t'[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n\t\t'[disabled]': 'disabled()',\n\t\t'(click)': 'calendar.selectDate(date())',\n\t\t'(keydown.arrowLeft)': 'focusPrevious($event)',\n\t\t'(keydown.arrowRight)': 'focusNext($event)',\n\t\t'(keydown.arrowUp)': 'focusAbove($event)',\n\t\t'(keydown.arrowDown)': 'focusBelow($event)',\n\t\t'(keydown.home)': 'focusFirst($event)',\n\t\t'(keydown.end)': 'focusLast($event)',\n\t\t'(keydown.pageUp)': 'focusPreviousMonth($event)',\n\t\t'(keydown.pageDown)': 'focusNextMonth($event)',\n\t},\n})\nexport class BrnCalendarCellButtonDirective<T> {\n\t/** Access the date adapter */\n\tprotected readonly dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the calendar component */\n\tprotected readonly calendar = injectBrnCalendar<T>();\n\n\t/** Access the element ref */\n\tprivate readonly _elementRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n\n\t/** The date this cell represents */\n\tpublic readonly date = input.required<T>();\n\n\t/** Whether this date is currently selected */\n\tpublic readonly selected = computed(() => this.calendar.isSelected(this.date()));\n\n\t/** Whether this date is focusable */\n\tpublic readonly focusable = computed(() => this.dateAdapter.isSameDay(this.calendar.focusedDate(), this.date()));\n\n\tpublic readonly outside = computed(() => {\n\t\tconst focusedDate = this.calendar.focusedDate();\n\t\treturn !this.dateAdapter.isSameMonth(this.date(), focusedDate);\n\t});\n\n\t/** Whether this date is today */\n\tpublic readonly today = computed(() => this.dateAdapter.isSameDay(this.date(), this.dateAdapter.now()));\n\n\t/** Whether this date is disabled */\n\tpublic readonly disabled = computed(() => this.calendar.isDateDisabled(this.date()) || this.calendar.disabled());\n\n\t/**\n\t * Focus the previous cell.\n\t */\n\tprotected focusPrevious(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\t// in rtl, the arrow keys are reversed.\n\t\tconst targetDate = this.dateAdapter.add(this.calendar.focusedDate(), {\n\t\t\tdays: this.getDirection() === 'rtl' ? 1 : -1,\n\t\t});\n\n\t\tthis.calendar.setFocusedDate(targetDate);\n\t}\n\n\t/**\n\t * Focus the next cell.\n\t */\n\tprotected focusNext(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tconst targetDate = this.dateAdapter.add(this.calendar.focusedDate(), {\n\t\t\tdays: this.getDirection() === 'rtl' ? -1 : 1,\n\t\t});\n\n\t\tthis.calendar.setFocusedDate(targetDate);\n\t}\n\n\t/**\n\t * Focus the above cell.\n\t */\n\tprotected focusAbove(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis.calendar.setFocusedDate(this.dateAdapter.subtract(this.calendar.focusedDate(), { days: 7 }));\n\t}\n\n\t/**\n\t * Focus the below cell.\n\t */\n\tprotected focusBelow(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis.calendar.setFocusedDate(this.dateAdapter.add(this.calendar.focusedDate(), { days: 7 }));\n\t}\n\n\t/**\n\t * Focus the first date of the month.\n\t */\n\tprotected focusFirst(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis.calendar.setFocusedDate(this.dateAdapter.startOfMonth(this.calendar.focusedDate()));\n\t}\n\n\t/**\n\t * Focus the last date of the month.\n\t */\n\tprotected focusLast(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis.calendar.setFocusedDate(this.dateAdapter.endOfMonth(this.calendar.focusedDate()));\n\t}\n\n\t/**\n\t * Focus the same date in the previous month.\n\t */\n\tprotected focusPreviousMonth(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tconst date = this.dateAdapter.getDate(this.calendar.focusedDate());\n\n\t\tlet previousMonthTarget = this.dateAdapter.startOfMonth(this.calendar.focusedDate());\n\t\tpreviousMonthTarget = this.dateAdapter.subtract(previousMonthTarget, { months: 1 });\n\n\t\tconst lastDay = this.dateAdapter.endOfMonth(previousMonthTarget);\n\n\t\t// if we are on a date that does not exist in the previous month, we should focus the last day of the month.\n\t\tif (date > this.dateAdapter.getDate(lastDay)) {\n\t\t\tthis.calendar.setFocusedDate(lastDay);\n\t\t} else {\n\t\t\tthis.calendar.setFocusedDate(this.dateAdapter.set(previousMonthTarget, { day: date }));\n\t\t}\n\t}\n\n\t/**\n\t * Focus the same date in the next month.\n\t */\n\tprotected focusNextMonth(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tconst date = this.dateAdapter.getDate(this.calendar.focusedDate());\n\n\t\tlet nextMonthTarget = this.dateAdapter.startOfMonth(this.calendar.focusedDate());\n\t\tnextMonthTarget = this.dateAdapter.add(nextMonthTarget, { months: 1 });\n\n\t\tconst lastDay = this.dateAdapter.endOfMonth(nextMonthTarget);\n\n\t\t// if we are on a date that does not exist in the next month, we should focus the last day of the month.\n\t\tif (date > this.dateAdapter.getDate(lastDay)) {\n\t\t\tthis.calendar.setFocusedDate(lastDay);\n\t\t} else {\n\t\t\tthis.calendar.setFocusedDate(this.dateAdapter.set(nextMonthTarget, { day: date }));\n\t\t}\n\t}\n\n\t/**\n\t * Get the direction of the element.\n\t */\n\tprivate getDirection(): 'ltr' | 'rtl' {\n\t\treturn getComputedStyle(this._elementRef.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\n\t}\n\n\tfocus(): void {\n\t\tthis._elementRef.nativeElement.focus();\n\t}\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnCalendarCell]',\n\thost: {\n\t\trole: 'presentation',\n\t},\n})\nexport class BrnCalendarCellDirective {}\n","import { Directive } from '@angular/core';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarGrid]',\n\thost: {\n\t\trole: 'grid',\n\t\t'[attr.aria-labelledby]': 'calendar.header()?.id()',\n\t},\n})\nexport class BrnCalendarGridDirective<T> {\n\t/** Access the calendar component */\n\tprotected readonly calendar = injectBrnCalendar<T>();\n}\n","import { Directive, input } from '@angular/core';\n\nlet uniqueId = 0;\n\n@Directive({\n\tselector: '[brnCalendarHeader]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'aria-live': 'polite',\n\t\trole: 'presentation',\n\t},\n})\nexport class BrnCalendarHeaderDirective {\n\t/** The unique id for the header */\n\tpublic readonly id = input(`brn-calendar-header-${uniqueId++}`);\n}\n","import { InjectionToken, ValueProvider, inject } from '@angular/core';\n\nexport interface BrnCalendarI18n {\n\tformatWeekdayName: (index: number) => string;\n\tformatHeader: (month: number, year: number) => string;\n\tlabelPrevious: () => string;\n\tlabelNext: () => string;\n\tlabelWeekday: (index: number) => string;\n}\n\nexport const BrnCalendarI18nToken = new InjectionToken<BrnCalendarI18n>('BrnCalendarI18nToken');\n\n/**\n * Provide the calendar i18n configuration.\n */\nexport function provideBrnCalendarI18n(configuration: BrnCalendarI18n): ValueProvider {\n\treturn { provide: BrnCalendarI18nToken, useValue: configuration };\n}\n\nconst defaultCalendarI18n: BrnCalendarI18n = {\n\tformatWeekdayName: (index: number) => {\n\t\tconst weekdays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n\t\treturn weekdays[index];\n\t},\n\tformatHeader: (month: number, year: number) => {\n\t\treturn new Date(year, month).toLocaleDateString(undefined, {\n\t\t\tmonth: 'long',\n\t\t\tyear: 'numeric',\n\t\t});\n\t},\n\tlabelPrevious: () => 'Go to the previous month',\n\tlabelNext: () => 'Go to the next month',\n\tlabelWeekday: (index: number) => {\n\t\tconst weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\t\treturn weekdays[index];\n\t},\n};\n\n/**\n * Inject the calendar i18n configuration.\n */\nexport function injectBrnCalendarI18n(): BrnCalendarI18n {\n\treturn inject(BrnCalendarI18nToken, { optional: true }) ?? defaultCalendarI18n;\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendarNextButton]',\n\thost: {\n\t\ttype: 'button',\n\t\t'[attr.aria-label]': 'i18n.labelNext()',\n\t},\n})\nexport class BrnCalendarNextButtonDirective {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar();\n\n\t/** Access the date adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter();\n\n\t/** Access the calendar i18n */\n\tprotected readonly i18n = injectBrnCalendarI18n();\n\n\t/** Focus the previous month */\n\t@HostListener('click')\n\tprotected focusPreviousMonth(): void {\n\t\tconst targetDate = this._dateAdapter.add(this._calendar.state().focusedDate(), { months: 1 });\n\n\t\t// if the date is disabled, but there are available dates in the month, focus the last day of the month.\n\t\tconst possibleDate = this._calendar.constrainDate(targetDate);\n\n\t\tif (this._dateAdapter.isSameMonth(possibleDate, targetDate)) {\n\t\t\t// if this date is within the same month, then focus it\n\t\t\tthis._calendar.state().focusedDate.set(possibleDate);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._calendar.state().focusedDate.set(targetDate);\n\t}\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendarPreviousButton]',\n\thost: {\n\t\ttype: 'button',\n\t\t'[attr.aria-label]': 'i18n.labelPrevious()',\n\t},\n})\nexport class BrnCalendarPreviousButtonDirective {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar();\n\n\t/** Access the date adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter();\n\n\t/** Access the calendar i18n */\n\tprotected readonly i18n = injectBrnCalendarI18n();\n\n\t/** Focus the previous month */\n\t@HostListener('click')\n\tprotected focusPreviousMonth(): void {\n\t\tconst targetDate = this._dateAdapter.subtract(this._calendar.state().focusedDate(), { months: 1 });\n\n\t\t// if the date is disabled, but there are available dates in the month, focus the last day of the month.\n\t\tconst possibleDate = this._calendar.constrainDate(targetDate);\n\n\t\tif (this._dateAdapter.isSameMonth(possibleDate, targetDate)) {\n\t\t\t// if this date is within the same month, then focus it\n\t\t\tthis._calendar.state().focusedDate.set(possibleDate);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._calendar.state().focusedDate.set(targetDate);\n\t}\n}\n","import {\n\tChangeDetectorRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tOnDestroy,\n\tTemplateRef,\n\tViewContainerRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tuntracked,\n} from '@angular/core';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarWeek]',\n})\nexport class BrnCalendarWeekDirective<T> implements OnDestroy {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar<T>();\n\n\t/** Access the view container ref */\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the template ref */\n\tprivate readonly _templateRef = inject<TemplateRef<BrnWeekContext<T>>>(TemplateRef);\n\n\t// get the weeks to display.\n\tprotected readonly weeks = computed(() => {\n\t\tconst days = this._calendar.days();\n\t\tconst weeks = [];\n\n\t\tfor (let i = 0; i < days.length; i += 7) {\n\t\t\tweeks.push(days.slice(i, i + 7));\n\t\t}\n\n\t\treturn weeks;\n\t});\n\n\t/** Store the view refs */\n\tprivate _viewRefs: EmbeddedViewRef<BrnWeekContext<T>>[] = [];\n\n\t// Make sure the template checker knows the type of the context with which the\n\t// template of this directive will be rendered\n\tstatic ngTemplateContextGuard<T>(_: BrnCalendarWeekDirective<T>, ctx: unknown): ctx is BrnWeekContext<T> {\n\t\treturn true;\n\t}\n\n\tconstructor() {\n\t\t// this should use `afterRenderEffect` but it's not available in the current version\n\t\teffect(() => {\n\t\t\tconst weeks = this.weeks();\n\t\t\tuntracked(() => this._renderWeeks(weeks));\n\t\t});\n\t}\n\n\tprivate _renderWeeks(weeks: T[][]): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\n\t\tthis._viewRefs = [];\n\n\t\t// Create a new view for each week\n\t\tfor (const week of weeks) {\n\t\t\tconst viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef, {\n\t\t\t\t$implicit: week,\n\t\t\t});\n\t\t\tthis._viewRefs.push(viewRef);\n\t\t}\n\n\t\tthis._changeDetector.detectChanges();\n\t}\n\n\tngOnDestroy(): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\t}\n}\n\ninterface BrnWeekContext<T> {\n\t$implicit: T[];\n}\n","import {\n\tChangeDetectorRef,\n\tcomputed,\n\tDirective,\n\teffect,\n\tEmbeddedViewRef,\n\tinject,\n\tOnDestroy,\n\tTemplateRef,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarWeekday]',\n})\nexport class BrnCalendarWeekdayDirective<T> implements OnDestroy {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar<T>();\n\n\t/** Access the date time adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the view container ref */\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the template ref */\n\tprivate readonly _templateRef = inject<TemplateRef<BrnWeekdayContext>>(TemplateRef);\n\n\t/** Get the days of the week to display in the header. */\n\tprotected readonly weekdays = computed(() => this._calendar.days().slice(0, 7));\n\n\t/** Store the view refs */\n\tprivate _viewRefs: EmbeddedViewRef<BrnWeekdayContext>[] = [];\n\n\t// Make sure the template checker knows the type of the context with which the\n\t// template of this directive will be rendered\n\tstatic ngTemplateContextGuard<T>(_: BrnCalendarWeekdayDirective<T>, ctx: unknown): ctx is BrnWeekdayContext {\n\t\treturn true;\n\t}\n\n\tconstructor() {\n\t\t// Create a new view for each day\n\t\teffect(() => {\n\t\t\t// Get the weekdays to display\n\t\t\tconst weekdays = this.weekdays();\n\t\t\t// Render the weekdays\n\t\t\tuntracked(() => this._renderWeekdays(weekdays));\n\t\t});\n\t}\n\n\tprivate _renderWeekdays(weekdays: T[]): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\n\t\tthis._viewRefs = [];\n\n\t\t// Create a new view for each day\n\t\tfor (const day of weekdays) {\n\t\t\tconst viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef, {\n\t\t\t\t$implicit: this._dateAdapter.getDay(day),\n\t\t\t});\n\t\t\tthis._viewRefs.push(viewRef);\n\t\t}\n\n\t\tthis._changeDetector.detectChanges();\n\t}\n\n\tngOnDestroy(): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\t}\n}\n\ninterface BrnWeekdayContext {\n\t$implicit: number;\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tChangeDetectorRef,\n\tDirective,\n\tInjector,\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tinject,\n\tinput,\n\tmodel,\n\tnumberAttribute,\n\tsignal,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnCalendarCellButtonDirective } from './brn-calendar-cell-button.directive';\nimport { BrnCalendarHeaderDirective } from './brn-calendar-header.directive';\nimport { BrnCalendar, provideBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendar]',\n\tproviders: [provideBrnCalendar(BrnCalendarDirective)],\n})\nexport class BrnCalendarDirective<T> implements BrnCalendar<T> {\n\t/** Access the date adapter */\n\tprotected readonly dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the injector */\n\tprivate readonly _injector = inject(Injector);\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly min = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly max = input<T>();\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = model<T>();\n\n\t/** Whether a specific date is disabled. */\n\tpublic readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n\t/** The day the week starts on */\n\tpublic readonly weekStartsOn = input<Weekday, NumberInput>(0, {\n\t\ttransform: (v: unknown) => numberAttribute(v) as Weekday,\n\t});\n\n\t/** The default focused date. */\n\tpublic readonly defaultFocusedDate = input<T>();\n\n\t/** @internal Access the header */\n\tpublic readonly header = contentChild(BrnCalendarHeaderDirective);\n\n\t/** Store the cells */\n\tprotected readonly cells = contentChildren<BrnCalendarCellButtonDirective<T>>(BrnCalendarCellButtonDirective, {\n\t\tdescendants: true,\n\t});\n\n\t/**\n\t * @internal\n\t * The internal state of the component.\n\t */\n\tpublic readonly state = computed(() => ({\n\t\tfocusedDate: signal(this.constrainDate(this.defaultFocusedDate() ?? this.date() ?? this.dateAdapter.now())),\n\t}));\n\n\t/**\n\t * The focused date.\n\t */\n\tpublic readonly focusedDate = computed(() => this.state().focusedDate());\n\n\t/**\n\t * Get all the days to display, this is the days of the current month\n\t * and the days of the previous and next month to fill the grid.\n\t */\n\tpublic readonly days = computed(() => {\n\t\tconst weekStartsOn = this.weekStartsOn();\n\t\tconst month = this.state().focusedDate();\n\t\tconst days: T[] = [];\n\n\t\t// Get the first and last day of the month.\n\t\tlet firstDay = this.dateAdapter.startOfMonth(month);\n\t\tlet lastDay = this.dateAdapter.endOfMonth(month);\n\n\t\t// we need to subtract until we get the to starting day before or on the start of the month.\n\t\twhile (this.dateAdapter.getDay(firstDay) !== weekStartsOn) {\n\t\t\tfirstDay = this.dateAdapter.subtract(firstDay, { days: 1 });\n\t\t}\n\n\t\tconst weekEndsOn = (weekStartsOn + 6) % 7;\n\n\t\t// we need to add until we get to the ending day after or on the end of the month.\n\t\twhile (this.dateAdapter.getDay(lastDay) !== weekEndsOn) {\n\t\t\tlastDay = this.dateAdapter.add(lastDay, { days: 1 });\n\t\t}\n\n\t\t// collect all the days to display.\n\t\twhile (firstDay <= lastDay) {\n\t\t\tdays.push(firstDay);\n\t\t\tfirstDay = this.dateAdapter.add(firstDay, { days: 1 });\n\t\t}\n\n\t\treturn days;\n\t});\n\n\t/** @internal Constrain a date to the min and max boundaries */\n\tconstrainDate(date: T): T {\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\t// If there is no min or max, return the date.\n\t\tif (!min && !max) {\n\t\t\treturn date;\n\t\t}\n\n\t\t// If there is a min and the date is before the min, return the min.\n\t\tif (min && this.dateAdapter.isBefore(date, this.dateAdapter.startOfDay(min))) {\n\t\t\treturn min;\n\t\t}\n\n\t\t// If there is a max and the date is after the max, return the max.\n\t\tif (max && this.dateAdapter.isAfter(date, this.dateAdapter.endOfDay(max))) {\n\t\t\treturn max;\n\t\t}\n\n\t\t// Return the date.\n\t\treturn date;\n\t}\n\n\t/** @internal Determine if a date is disabled */\n\tisDateDisabled(date: T): boolean {\n\t\t// if the calendar is disabled we can't select this date\n\t\tif (this.disabled()) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if the date is outside the min and max range\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\tif (min && this.dateAdapter.isBefore(date, this.dateAdapter.startOfDay(min))) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (max && this.dateAdapter.isAfter(date, this.dateAdapter.endOfDay(max))) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if this specific date is disabled\n\t\tconst disabledFn = this.dateDisabled();\n\n\t\tif (disabledFn(date)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tisSelected(date: T): boolean {\n\t\tconst selected = this.date() as T | undefined;\n\t\treturn selected !== undefined && this.dateAdapter.isSameDay(date, selected);\n\t}\n\n\tselectDate(date: T): void {\n\t\tif (this.isSelected(date)) {\n\t\t\tthis.date.set(undefined);\n\t\t} else {\n\t\t\tthis.date.set(date);\n\t\t}\n\t\tthis.state().focusedDate.set(date);\n\t}\n\n\t/** @internal Set the focused date */\n\tsetFocusedDate(date: T): void {\n\t\t// check if the date is disabled.\n\t\tif (this.isDateDisabled(date)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state().focusedDate.set(date);\n\n\t\t// wait until the cells have all updated\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\twrite: () => {\n\t\t\t\t\t// focus the cell with the target date.\n\t\t\t\t\tconst cell = this.cells().find((c) => this.dateAdapter.isSameDay(c.date(), date));\n\n\t\t\t\t\tif (cell) {\n\t\t\t\t\t\tcell.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tinjector: this._injector,\n\t\t\t},\n\t\t);\n\n\t\t// we must update the view to ensure the focused cell is visible.\n\t\tthis._changeDetector.detectChanges();\n\t}\n}\n\nexport type Weekday = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tChangeDetectorRef,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\tinject,\n\tInjector,\n\tinput,\n\tmodel,\n\tnumberAttribute,\n\tsignal,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnCalendarCellButtonDirective } from '../brn-calendar-cell-button.directive';\nimport { BrnCalendarHeaderDirective } from '../brn-calendar-header.directive';\nimport { Weekday } from '../brn-calendar.directive';\nimport { BrnCalendar, provideBrnCalendar } from '../brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarMulti]',\n\tproviders: [provideBrnCalendar(BrnCalendarMultiDirective)],\n})\nexport class BrnCalendarMultiDirective<T> implements BrnCalendar<T> {\n\t// /** Access the date adapter */\n\tprotected readonly dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the injector */\n\tprivate readonly _injector = inject(Injector);\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly min = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly max = input<T>();\n\n\t/** The minimum selectable dates. */\n\tpublic readonly minSelection = input<number, NumberInput>(undefined, {\n\t\ttransform: numberAttribute,\n\t});\n\n\t/** The maximum selectable dates. */\n\tpublic readonly maxSelection = input<number, NumberInput>(undefined, {\n\t\ttransform: numberAttribute,\n\t});\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = model<T[]>();\n\n\t/** Whether a specific date is disabled. */\n\tpublic readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n\t/** The day the week starts on */\n\tpublic readonly weekStartsOn = input<Weekday, NumberInput>(0, {\n\t\ttransform: (v: unknown) => numberAttribute(v) as Weekday,\n\t});\n\n\t/** The default focused date. */\n\tpublic readonly defaultFocusedDate = input<T>();\n\n\t/** @internal Access the header */\n\tpublic readonly header = contentChild(BrnCalendarHeaderDirective);\n\n\t/** Store the cells */\n\tprotected readonly cells = contentChildren<BrnCalendarCellButtonDirective<T>>(BrnCalendarCellButtonDirective, {\n\t\tdescendants: true,\n\t});\n\n\t/**\n\t * @internal\n\t * The internal state of the component.\n\t */\n\tpublic readonly state = computed(() => ({\n\t\tfocusedDate: signal(this.constrainDate(this.defaultFocusedDate() ?? this.dateAdapter.now())),\n\t}));\n\n\t/**\n\t * The focused date.\n\t */\n\tpublic readonly focusedDate = computed(() => this.state().focusedDate());\n\n\t/**\n\t * Get all the days to display, this is the days of the current month\n\t * and the days of the previous and next month to fill the grid.\n\t */\n\tpublic readonly days = computed(() => {\n\t\tconst weekStartsOn = this.weekStartsOn();\n\t\tconst month = this.state().focusedDate();\n\t\tconst days: T[] = [];\n\n\t\t// Get the first and last day of the month.\n\t\tlet firstDay = this.dateAdapter.startOfMonth(month);\n\t\tlet lastDay = this.dateAdapter.endOfMonth(month);\n\n\t\t// we need to subtract until we get the to starting day before or on the start of the month.\n\t\twhile (this.dateAdapter.getDay(firstDay) !== weekStartsOn) {\n\t\t\tfirstDay = this.dateAdapter.subtract(firstDay, { days: 1 });\n\t\t}\n\n\t\tconst weekEndsOn = (weekStartsOn + 6) % 7;\n\n\t\t// we need to add until we get to the ending day after or on the end of the month.\n\t\twhile (this.dateAdapter.getDay(lastDay) !== weekEndsOn) {\n\t\t\tlastDay = this.dateAdapter.add(lastDay, { days: 1 });\n\t\t}\n\n\t\t// collect all the days to display.\n\t\twhile (firstDay <= lastDay) {\n\t\t\tdays.push(firstDay);\n\t\t\tfirstDay = this.dateAdapter.add(firstDay, { days: 1 });\n\t\t}\n\n\t\treturn days;\n\t});\n\n\tisSelected(date: T): boolean {\n\t\treturn this.date()?.some((d) => this.dateAdapter.isSameDay(d, date)) ?? false;\n\t}\n\n\tselectDate(date: T): void {\n\t\tconst selected = this.date() as T[] | undefined;\n\t\tif (this.isSelected(date)) {\n\t\t\tconst minSelection = this.minSelection();\n\t\t\tif (selected?.length === minSelection) {\n\t\t\t\t// min selection reached, do not allow to deselect\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.date.set(selected?.filter((d) => !this.dateAdapter.isSameDay(d, date)));\n\t\t} else {\n\t\t\tconst maxSelection = this.maxSelection();\n\t\t\tif (selected?.length === maxSelection) {\n\t\t\t\t// max selection reached, reset the selection to date\n\t\t\t\tthis.date.set([date]);\n\t\t\t} else {\n\t\t\t\t// add the date to the selection\n\t\t\t\tthis.date.set([...(selected ?? []), date]);\n\t\t\t}\n\t\t}\n\t}\n\n\t// same as in brn-calendar.directive.ts\n\t/** @internal Constrain a date to the min and max boundaries */\n\tconstrainDate(date: T): T {\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\t// If there is no min or max, return the date.\n\t\tif (!min && !max) {\n\t\t\treturn date;\n\t\t}\n\n\t\t// If there is a min and the date is before the min, return the min.\n\t\tif (min && this.dateAdapter.isBefore(date, this.dateAdapter.startOfDay(min))) {\n\t\t\treturn min;\n\t\t}\n\n\t\t// If there is a max and the date is after the max, return the max.\n\t\tif (max && this.dateAdapter.isAfter(date, this.dateAdapter.endOfDay(max))) {\n\t\t\treturn max;\n\t\t}\n\n\t\t// Return the date.\n\t\treturn date;\n\t}\n\n\t/** @internal Determine if a date is disabled */\n\tisDateDisabled(date: T): boolean {\n\t\t// if the calendar is disabled we can't select this date\n\t\tif (this.disabled()) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if the date is outside the min and max range\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\tif (min && this.dateAdapter.isBefore(date, this.dateAdapter.startOfDay(min))) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (max && this.dateAdapter.isAfter(date, this.dateAdapter.endOfDay(max))) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if this specific date is disabled\n\t\tconst disabledFn = this.dateDisabled();\n\n\t\tif (disabledFn(date)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/** @internal Set the focused date */\n\tsetFocusedDate(date: T): void {\n\t\t// check if the date is disabled.\n\t\tif (this.isDateDisabled(date)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state().focusedDate.set(date);\n\n\t\t// wait until the cells have all updated\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\twrite: () => {\n\t\t\t\t\t// focus the cell with the target date.\n\t\t\t\t\tconst cell = this.cells().find((c) => this.dateAdapter.isSameDay(c.date(), date));\n\n\t\t\t\t\tif (cell) {\n\t\t\t\t\t\tcell.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tinjector: this._injector,\n\t\t\t},\n\t\t);\n\n\t\t// we must update the view to ensure the focused cell is visible.\n\t\tthis._changeDetector.detectChanges();\n\t}\n}\n","export * from './lib/brn-calendar-cell-button.directive';\nexport * from './lib/brn-calendar-cell.directive';\nexport * from './lib/brn-calendar-grid.directive';\nexport * from './lib/brn-calendar-header.directive';\nexport * from './lib/brn-calendar-next-button.directive';\nexport * from './lib/brn-calendar-previous-button.directive';\nexport * from './lib/brn-calendar-week.directive';\nexport * from './lib/brn-calendar-weekday.directive';\nexport * from './lib/brn-calendar.directive';\nexport * from './lib/brn-calendar.token';\nexport * from './lib/i18n/calendar-i18n';\nexport * from './lib/mode/brn-calendar-multiple.directive';\n\nimport { NgModule } from '@angular/core';\nimport { BrnCalendarCellButtonDirective } from './lib/brn-calendar-cell-button.directive';\nimport { BrnCalendarCellDirective } from './lib/brn-calendar-cell.directive';\nimport { BrnCalendarGridDirective } from './lib/brn-calendar-grid.directive';\nimport { BrnCalendarHeaderDirective } from './lib/brn-calendar-header.directive';\nimport { BrnCalendarNextButtonDirective } from './lib/brn-calendar-next-button.directive';\nimport { BrnCalendarPreviousButtonDirective } from './lib/brn-calendar-previous-button.directive';\nimport { BrnCalendarWeekDirective } from './lib/brn-calendar-week.directive';\nimport { BrnCalendarWeekdayDirective } from './lib/brn-calendar-weekday.directive';\nimport { BrnCalendarDirective } from './lib/brn-calendar.directive';\nimport { BrnCalendarMultiDirective } from './lib/mode/brn-calendar-multiple.directive';\n\nexport const BrnCalendarImports = [\n\tBrnCalendarCellButtonDirective,\n\tBrnCalendarGridDirective,\n\tBrnCalendarHeaderDirective,\n\tBrnCalendarNextButtonDirective,\n\tBrnCalendarPreviousButtonDirective,\n\tBrnCalendarWeekDirective,\n\tBrnCalendarWeekdayDirective,\n\tBrnCalendarDirective,\n\tBrnCalendarCellDirective,\n\tBrnCalendarMultiDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnCalendarImports],\n\texports: [...BrnCalendarImports],\n})\nexport class BrnCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAoBa,gBAAgB,GAAG,IAAI,cAAc,CAAuB,kBAAkB;AAErF,SAAU,kBAAkB,CAAI,QAA8B,EAAA;IACnE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE;AAC5D;AAEA;;AAEG;SACa,iBAAiB,GAAA;AAChC,IAAA,OAAO,MAAM,CAAC,gBAAgB,CAAmB;AAClD;;MCHa,8BAA8B,CAAA;;IAEvB,WAAW,GAAG,iBAAiB,EAAK;;IAGpC,QAAQ,GAAG,iBAAiB,EAAK;;AAGnC,IAAA,WAAW,GAAG,MAAM,CAAgC,UAAU,CAAC;;AAGhE,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAK;;AAG1B,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;;IAGhE,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAEhG,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC/C,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC;AAC/D,KAAC,CAAC;;IAGc,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;;IAGvF,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAEhH;;AAEG;AACO,IAAA,aAAa,CAAC,KAAY,EAAA;QACnC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;;AAGvB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE;AACpE,YAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5C,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;;AAGzC;;AAEG;AACO,IAAA,SAAS,CAAC,KAAY,EAAA;QAC/B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE;AACpE,YAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AAC5C,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;;AAGzC;;AAEG;AACO,IAAA,UAAU,CAAC,KAAY,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;;AAGlG;;AAEG;AACO,IAAA,UAAU,CAAC,KAAY,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;;AAG7F;;AAEG;AACO,IAAA,UAAU,CAAC,KAAY,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;;AAGzF;;AAEG;AACO,IAAA,SAAS,CAAC,KAAY,EAAA;QAC/B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;;AAGvF;;AAEG;AACO,IAAA,kBAAkB,CAAC,KAAY,EAAA;QACxC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAElE,QAAA,IAAI,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AACpF,QAAA,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAEnF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,mBAAmB,CAAC;;QAGhE,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC;;aAC/B;YACN,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;;;AAIxF;;AAEG;AACO,IAAA,cAAc,CAAC,KAAY,EAAA;QACpC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAElE,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAChF,QAAA,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAEtE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC;;QAG5D,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC;;aAC/B;YACN,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;;;AAIpF;;AAEG;IACK,YAAY,GAAA;QACnB,OAAO,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,SAAS,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK;;IAG5F,KAAK,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;;0HAnJ3B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,oCAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAxB1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,YAAY,EAAE,sBAAsB;AACpC,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,qBAAqB,EAAE,uBAAuB;AAC9C,wBAAA,mBAAmB,EAAE,oCAAoC;AACzD,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,SAAS,EAAE,6BAA6B;AACxC,wBAAA,qBAAqB,EAAE,uBAAuB;AAC9C,wBAAA,sBAAsB,EAAE,mBAAmB;AAC3C,wBAAA,mBAAmB,EAAE,oBAAoB;AACzC,wBAAA,qBAAqB,EAAE,oBAAoB;AAC3C,wBAAA,gBAAgB,EAAE,oBAAoB;AACtC,wBAAA,eAAe,EAAE,mBAAmB;AACpC,wBAAA,kBAAkB,EAAE,4BAA4B;AAChD,wBAAA,oBAAoB,EAAE,wBAAwB;AAC9C,qBAAA;AACD,iBAAA;;;MCnBY,wBAAwB,CAAA;0HAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,cAAc;AACpB,qBAAA;AACD,iBAAA;;;MCGY,wBAAwB,CAAA;;IAEjB,QAAQ,GAAG,iBAAiB,EAAK;0HAFxC,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,wBAAwB,EAAE,yBAAyB;AACnD,qBAAA;AACD,iBAAA;;;ACPD,IAAI,QAAQ,GAAG,CAAC;MAUH,0BAA0B,CAAA;;IAEtB,EAAE,GAAG,KAAK,CAAC,CAAA,oBAAA,EAAuB,QAAQ,EAAE,CAAA,CAAE,CAAC;0HAFnD,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACL,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,IAAI,EAAE,cAAc;AACpB,qBAAA;AACD,iBAAA;;;MCDY,oBAAoB,GAAG,IAAI,cAAc,CAAkB,sBAAsB;AAE9F;;AAEG;AACG,SAAU,sBAAsB,CAAC,aAA8B,EAAA;IACpE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,aAAa,EAAE;AAClE;AAEA,MAAM,mBAAmB,GAAoB;AAC5C,IAAA,iBAAiB,EAAE,CAAC,KAAa,KAAI;AACpC,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC3D,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;KACtB;AACD,IAAA,YAAY,EAAE,CAAC,KAAa,EAAE,IAAY,KAAI;QAC7C,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;AAC1D,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,IAAI,EAAE,SAAS;AACf,SAAA,CAAC;KACF;AACD,IAAA,aAAa,EAAE,MAAM,0BAA0B;AAC/C,IAAA,SAAS,EAAE,MAAM,sBAAsB;AACvC,IAAA,YAAY,EAAE,CAAC,KAAa,KAAI;AAC/B,QAAA,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC;AAC/F,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;KACtB;CACD;AAED;;AAEG;SACa,qBAAqB,GAAA;AACpC,IAAA,OAAO,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,mBAAmB;AAC/E;;MC/Ba,8BAA8B,CAAA;;IAEzB,SAAS,GAAG,iBAAiB,EAAE;;IAG/B,YAAY,GAAG,iBAAiB,EAAE;;IAGhC,IAAI,GAAG,qBAAqB,EAAE;;IAIvC,kBAAkB,GAAA;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;;QAG7F,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;QAE7D,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE;;AAE5D,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC;YACpD;;AAGD,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;;0HAxBvC,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,mBAAmB,EAAE,kBAAkB;AACvC,qBAAA;AACD,iBAAA;8BAaU,kBAAkB,EAAA,CAAA;sBAD3B,YAAY;uBAAC,OAAO;;;MCXT,kCAAkC,CAAA;;IAE7B,SAAS,GAAG,iBAAiB,EAAE;;IAG/B,YAAY,GAAG,iBAAiB,EAAE;;IAGhC,IAAI,GAAG,qBAAqB,EAAE;;IAIvC,kBAAkB,GAAA;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;;QAGlG,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;QAE7D,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE;;AAE5D,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC;YACpD;;AAGD,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;;0HAxBvC,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAP9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,mBAAmB,EAAE,sBAAsB;AAC3C,qBAAA;AACD,iBAAA;8BAaU,kBAAkB,EAAA,CAAA;sBAD3B,YAAY;uBAAC,OAAO;;;MCNT,wBAAwB,CAAA;;IAEnB,SAAS,GAAG,iBAAiB,EAAK;;AAGlC,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAG5C,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG3C,IAAA,YAAY,GAAG,MAAM,CAAiC,WAAW,CAAC;;AAGhE,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QAClC,MAAM,KAAK,GAAG,EAAE;AAEhB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACxC,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;;AAGjC,QAAA,OAAO,KAAK;AACb,KAAC,CAAC;;IAGM,SAAS,GAAyC,EAAE;;;AAI5D,IAAA,OAAO,sBAAsB,CAAI,CAA8B,EAAE,GAAY,EAAA;AAC5E,QAAA,OAAO,IAAI;;AAGZ,IAAA,WAAA,GAAA;;QAEC,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAC1B,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAC,CAAC;;AAGK,IAAA,YAAY,CAAC,KAAY,EAAA;;AAEhC,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,OAAO,CAAC,OAAO,EAAE;;AAGlB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGnB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5E,gBAAA,SAAS,EAAE,IAAI;AACf,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG7B,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;IAGrC,WAAW,GAAA;;AAEV,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,OAAO,CAAC,OAAO,EAAE;;;0HAhEP,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,iBAAA;;;MCEY,2BAA2B,CAAA;;IAEtB,SAAS,GAAG,iBAAiB,EAAK;;IAGlC,YAAY,GAAG,iBAAiB,EAAK;;AAGrC,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAG5C,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG3C,IAAA,YAAY,GAAG,MAAM,CAAiC,WAAW,CAAC;;IAGhE,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;IAGvE,SAAS,GAAyC,EAAE;;;AAI5D,IAAA,OAAO,sBAAsB,CAAI,CAAiC,EAAE,GAAY,EAAA;AAC/E,QAAA,OAAO,IAAI;;AAGZ,IAAA,WAAA,GAAA;;QAEC,MAAM,CAAC,MAAK;;AAEX,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;;YAEhC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAChD,SAAC,CAAC;;AAGK,IAAA,eAAe,CAAC,QAAa,EAAA;;AAEpC,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,OAAO,CAAC,OAAO,EAAE;;AAGlB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGnB,QAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE;gBAC5E,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;AACxC,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG7B,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;IAGrC,WAAW,GAAA;;AAEV,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,OAAO,CAAC,OAAO,EAAE;;;0HA5DP,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,iBAAA;;;MCQY,oBAAoB,CAAA;;IAEb,WAAW,GAAG,iBAAiB,EAAK;;AAGtC,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG3C,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;;IAG7B,GAAG,GAAG,KAAK,EAAK;;IAGhB,GAAG,GAAG,KAAK,EAAK;;AAGhB,IAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,EAAE;AAC9D,QAAA,SAAS,EAAE,gBAAgB;AAC3B,KAAA,CAAC;;IAGc,IAAI,GAAG,KAAK,EAAK;;IAGjB,YAAY,GAAG,KAAK,CAAuB,MAAM,KAAK,CAAC;;AAGvD,IAAA,YAAY,GAAG,KAAK,CAAuB,CAAC,EAAE;QAC7D,SAAS,EAAE,CAAC,CAAU,KAAK,eAAe,CAAC,CAAC,CAAY;AACxD,KAAA,CAAC;;IAGc,kBAAkB,GAAG,KAAK,EAAK;;AAG/B,IAAA,MAAM,GAAG,YAAY,CAAC,0BAA0B,CAAC;;AAG9C,IAAA,KAAK,GAAG,eAAe,CAAoC,8BAA8B,EAAE;AAC7G,QAAA,WAAW,EAAE,IAAI;AACjB,KAAA,CAAC;AAEF;;;AAGG;AACa,IAAA,KAAK,GAAG,QAAQ,CAAC,OAAO;QACvC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3G,KAAA,CAAC,CAAC;AAEH;;AAEG;AACa,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AAExE;;;AAGG;AACa,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE;QACxC,MAAM,IAAI,GAAQ,EAAE;;QAGpB,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC;QACnD,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;;QAGhD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,YAAY,EAAE;AAC1D,YAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;QAG5D,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC;;QAGzC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE;AACvD,YAAA,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;;AAIrD,QAAA,OAAO,QAAQ,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnB,YAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;AAGvD,QAAA,OAAO,IAAI;AACZ,KAAC,CAAC;;AAGF,IAAA,aAAa,CAAC,IAAO,EAAA;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;;AAGtB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,YAAA,OAAO,IAAI;;;QAIZ,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7E,YAAA,OAAO,GAAG;;;QAIX,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1E,YAAA,OAAO,GAAG;;;AAIX,QAAA,OAAO,IAAI;;;AAIZ,IAAA,cAAc,CAAC,IAAO,EAAA;;AAErB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,OAAO,IAAI;;;AAIZ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAEtB,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7E,YAAA,OAAO,IAAI;;QAGZ,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1E,YAAA,OAAO,IAAI;;;AAIZ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;AAEtC,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI;;AAGZ,QAAA,OAAO,KAAK;;AAGb,IAAA,UAAU,CAAC,IAAO,EAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAmB;AAC7C,QAAA,OAAO,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC;;AAG5E,IAAA,UAAU,CAAC,IAAO,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;;aAClB;AACN,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;;QAEpB,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;;;AAInC,IAAA,cAAc,CAAC,IAAO,EAAA;;AAErB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC9B;;QAGD,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGlC,QAAA,eAAe,CACd;YACC,KAAK,EAAE,MAAK;;AAEX,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;gBAEjF,IAAI,IAAI,EAAE;oBACT,IAAI,CAAC,KAAK,EAAE;;aAEb;SACD,EACD;YACC,QAAQ,EAAE,IAAI,CAAC,SAAS;AACxB,SAAA,CACD;;AAGD,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;0HAxLzB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAFrB,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAsCf,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAGc,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAvChG,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,SAAS,EAAE,CAAC,kBAAkB,CAAA,oBAAA,CAAsB,CAAC;AACrD,iBAAA;;;MCEY,yBAAyB,CAAA;;IAElB,WAAW,GAAG,iBAAiB,EAAK;;AAGtC,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG3C,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;;IAG7B,GAAG,GAAG,KAAK,EAAK;;IAGhB,GAAG,GAAG,KAAK,EAAK;;AAGhB,IAAA,YAAY,GAAG,KAAK,CAAsB,SAAS,EAAE;AACpE,QAAA,SAAS,EAAE,eAAe;AAC1B,KAAA,CAAC;;AAGc,IAAA,YAAY,GAAG,KAAK,CAAsB,SAAS,EAAE;AACpE,QAAA,SAAS,EAAE,eAAe;AAC1B,KAAA,CAAC;;AAGc,IAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,EAAE;AAC9D,QAAA,SAAS,EAAE,gBAAgB;AAC3B,KAAA,CAAC;;IAGc,IAAI,GAAG,KAAK,EAAO;;IAGnB,YAAY,GAAG,KAAK,CAAuB,MAAM,KAAK,CAAC;;AAGvD,IAAA,YAAY,GAAG,KAAK,CAAuB,CAAC,EAAE;QAC7D,SAAS,EAAE,CAAC,CAAU,KAAK,eAAe,CAAC,CAAC,CAAY;AACxD,KAAA,CAAC;;IAGc,kBAAkB,GAAG,KAAK,EAAK;;AAG/B,IAAA,MAAM,GAAG,YAAY,CAAC,0BAA0B,CAAC;;AAG9C,IAAA,KAAK,GAAG,eAAe,CAAoC,8BAA8B,EAAE;AAC7G,QAAA,WAAW,EAAE,IAAI;AACjB,KAAA,CAAC;AAEF;;;AAGG;AACa,IAAA,KAAK,GAAG,QAAQ,CAAC,OAAO;AACvC,QAAA,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5F,KAAA,CAAC,CAAC;AAEH;;AAEG;AACa,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AAExE;;;AAGG;AACa,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE;QACxC,MAAM,IAAI,GAAQ,EAAE;;QAGpB,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC;QACnD,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;;QAGhD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,YAAY,EAAE;AAC1D,YAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;QAG5D,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC;;QAGzC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE;AACvD,YAAA,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;;AAIrD,QAAA,OAAO,QAAQ,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnB,YAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;AAGvD,QAAA,OAAO,IAAI;AACZ,KAAC,CAAC;AAEF,IAAA,UAAU,CAAC,IAAO,EAAA;QACjB,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK;;AAG9E,IAAA,UAAU,CAAC,IAAO,EAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAqB;AAC/C,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,YAAA,IAAI,QAAQ,EAAE,MAAM,KAAK,YAAY,EAAE;;gBAEtC;;YAGD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;;aACtE;AACN,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,YAAA,IAAI,QAAQ,EAAE,MAAM,KAAK,YAAY,EAAE;;gBAEtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;;iBACf;;AAEN,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;;;;;;AAO7C,IAAA,aAAa,CAAC,IAAO,EAAA;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;;AAGtB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACjB,YAAA,OAAO,IAAI;;;QAIZ,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7E,YAAA,OAAO,GAAG;;;QAIX,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1E,YAAA,OAAO,GAAG;;;AAIX,QAAA,OAAO,IAAI;;;AAIZ,IAAA,cAAc,CAAC,IAAO,EAAA;;AAErB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,OAAO,IAAI;;;AAIZ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAEtB,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7E,YAAA,OAAO,IAAI;;QAGZ,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1E,YAAA,OAAO,IAAI;;;AAIZ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;AAEtC,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI;;AAGZ,QAAA,OAAO,KAAK;;;AAIb,IAAA,cAAc,CAAC,IAAO,EAAA;;AAErB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC9B;;QAGD,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGlC,QAAA,eAAe,CACd;YACC,KAAK,EAAE,MAAK;;AAEX,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;gBAEjF,IAAI,IAAI,EAAE;oBACT,IAAI,CAAC,KAAK,EAAE;;aAEb;SACD,EACD;YACC,QAAQ,EAAE,IAAI,CAAC,SAAS;AACxB,SAAA,CACD;;AAGD,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;0HA/MzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAF1B,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgDpB,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAGc,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAjDhG,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE,CAAC,kBAAkB,CAAA,yBAAA,CAA2B,CAAC;AAC1D,iBAAA;;;ACAY,MAAA,kBAAkB,GAAG;IACjC,8BAA8B;IAC9B,wBAAwB;IACxB,0BAA0B;IAC1B,8BAA8B;IAC9B,kCAAkC;IAClC,wBAAwB;IACxB,2BAA2B;IAC3B,oBAAoB;IACpB,wBAAwB;IACxB,yBAAyB;;MAOb,iBAAiB,CAAA;0HAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAjB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAhB7B,8BAA8B;YAC9B,wBAAwB;YACxB,0BAA0B;YAC1B,8BAA8B;YAC9B,kCAAkC;YAClC,wBAAwB;YACxB,2BAA2B;YAC3B,oBAAoB;YACpB,wBAAwB;AACxB,YAAA,yBAAyB,aATzB,8BAA8B;YAC9B,wBAAwB;YACxB,0BAA0B;YAC1B,8BAA8B;YAC9B,kCAAkC;YAClC,wBAAwB;YACxB,2BAA2B;YAC3B,oBAAoB;YACpB,wBAAwB;YACxB,yBAAyB,CAAA,EAAA,CAAA;2HAOb,iBAAiB,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC;AAChC,oBAAA,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC;AAChC,iBAAA;;;ACzCD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-calendar.mjs","sources":["../../../../libs/brain/calendar/src/lib/brn-calendar.token.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-cell-button.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-cell.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-grid.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-header.directive.ts","../../../../libs/brain/calendar/src/lib/i18n/calendar-i18n.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-next-button.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-previous-button.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-week.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar-weekday.directive.ts","../../../../libs/brain/calendar/src/lib/brn-calendar.directive.ts","../../../../libs/brain/calendar/src/lib/mode/brn-calendar-multiple.directive.ts","../../../../libs/brain/calendar/src/index.ts","../../../../libs/brain/calendar/src/spartan-ng-brain-calendar.ts"],"sourcesContent":["import { ExistingProvider, InjectionToken, Signal, Type, WritableSignal, inject } from '@angular/core';\nimport { BrnCalendarHeaderDirective } from './brn-calendar-header.directive';\n\nexport interface BrnCalendar<T> {\n\tisSelected: (date: T) => boolean;\n\tselectDate: (date: T) => void;\n\n\tconstrainDate: (date: T) => T;\n\tisDateDisabled: (date: T) => boolean;\n\tsetFocusedDate: (date: T) => void;\n\n\tdisabled: Signal<boolean>;\n\tfocusedDate: Signal<T>;\n\theader: Signal<BrnCalendarHeaderDirective | undefined>;\n\tstate: Signal<{\n\t\tfocusedDate: WritableSignal<T>;\n\t}>;\n\tdays: Signal<T[]>;\n}\n\nexport const BrnCalendarToken = new InjectionToken<BrnCalendar<unknown>>('BrnCalendarToken');\n\nexport function provideBrnCalendar<T>(instance: Type<BrnCalendar<T>>): ExistingProvider {\n\treturn { provide: BrnCalendarToken, useExisting: instance };\n}\n\n/**\n * Inject the calendar component.\n */\nexport function injectBrnCalendar<T>(): BrnCalendar<T> {\n\treturn inject(BrnCalendarToken) as BrnCalendar<T>;\n}\n","import { Directive, ElementRef, computed, inject, input } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: 'button[brnCalendarCellButton]',\n\thost: {\n\t\trole: 'gridcell',\n\t\t'[tabindex]': 'focusable() ? 0 : -1',\n\t\ttype: 'button',\n\t\t'[attr.data-outside]': \"outside() ? '' : null\",\n\t\t'[attr.data-today]': \"today() && !selected() ? '' : null\",\n\t\t'[attr.data-selected]': \"selected() ? '' : null\",\n\t\t'[attr.data-disabled]': \"disabled() ? '' : null\",\n\t\t'[attr.aria-selected]': \"selected() ? 'true' : null\",\n\t\t'[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n\t\t'[disabled]': 'disabled()',\n\t\t'(click)': 'calendar.selectDate(date())',\n\t\t'(keydown.arrowLeft)': 'focusPrevious($event)',\n\t\t'(keydown.arrowRight)': 'focusNext($event)',\n\t\t'(keydown.arrowUp)': 'focusAbove($event)',\n\t\t'(keydown.arrowDown)': 'focusBelow($event)',\n\t\t'(keydown.home)': 'focusFirst($event)',\n\t\t'(keydown.end)': 'focusLast($event)',\n\t\t'(keydown.pageUp)': 'focusPreviousMonth($event)',\n\t\t'(keydown.pageDown)': 'focusNextMonth($event)',\n\t},\n})\nexport class BrnCalendarCellButtonDirective<T> {\n\t/** Access the date adapter */\n\tprotected readonly dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the calendar component */\n\tprotected readonly calendar = injectBrnCalendar<T>();\n\n\t/** Access the element ref */\n\tprivate readonly _elementRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n\n\t/** The date this cell represents */\n\tpublic readonly date = input.required<T>();\n\n\t/** Whether this date is currently selected */\n\tpublic readonly selected = computed(() => this.calendar.isSelected(this.date()));\n\n\t/** Whether this date is focusable */\n\tpublic readonly focusable = computed(() => this.dateAdapter.isSameDay(this.calendar.focusedDate(), this.date()));\n\n\tpublic readonly outside = computed(() => {\n\t\tconst focusedDate = this.calendar.focusedDate();\n\t\treturn !this.dateAdapter.isSameMonth(this.date(), focusedDate);\n\t});\n\n\t/** Whether this date is today */\n\tpublic readonly today = computed(() => this.dateAdapter.isSameDay(this.date(), this.dateAdapter.now()));\n\n\t/** Whether this date is disabled */\n\tpublic readonly disabled = computed(() => this.calendar.isDateDisabled(this.date()) || this.calendar.disabled());\n\n\t/**\n\t * Focus the previous cell.\n\t */\n\tprotected focusPrevious(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\t// in rtl, the arrow keys are reversed.\n\t\tconst targetDate = this.dateAdapter.add(this.calendar.focusedDate(), {\n\t\t\tdays: this.getDirection() === 'rtl' ? 1 : -1,\n\t\t});\n\n\t\tthis.calendar.setFocusedDate(targetDate);\n\t}\n\n\t/**\n\t * Focus the next cell.\n\t */\n\tprotected focusNext(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tconst targetDate = this.dateAdapter.add(this.calendar.focusedDate(), {\n\t\t\tdays: this.getDirection() === 'rtl' ? -1 : 1,\n\t\t});\n\n\t\tthis.calendar.setFocusedDate(targetDate);\n\t}\n\n\t/**\n\t * Focus the above cell.\n\t */\n\tprotected focusAbove(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis.calendar.setFocusedDate(this.dateAdapter.subtract(this.calendar.focusedDate(), { days: 7 }));\n\t}\n\n\t/**\n\t * Focus the below cell.\n\t */\n\tprotected focusBelow(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis.calendar.setFocusedDate(this.dateAdapter.add(this.calendar.focusedDate(), { days: 7 }));\n\t}\n\n\t/**\n\t * Focus the first date of the month.\n\t */\n\tprotected focusFirst(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis.calendar.setFocusedDate(this.dateAdapter.startOfMonth(this.calendar.focusedDate()));\n\t}\n\n\t/**\n\t * Focus the last date of the month.\n\t */\n\tprotected focusLast(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis.calendar.setFocusedDate(this.dateAdapter.endOfMonth(this.calendar.focusedDate()));\n\t}\n\n\t/**\n\t * Focus the same date in the previous month.\n\t */\n\tprotected focusPreviousMonth(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tconst date = this.dateAdapter.getDate(this.calendar.focusedDate());\n\n\t\tlet previousMonthTarget = this.dateAdapter.startOfMonth(this.calendar.focusedDate());\n\t\tpreviousMonthTarget = this.dateAdapter.subtract(previousMonthTarget, { months: 1 });\n\n\t\tconst lastDay = this.dateAdapter.endOfMonth(previousMonthTarget);\n\n\t\t// if we are on a date that does not exist in the previous month, we should focus the last day of the month.\n\t\tif (date > this.dateAdapter.getDate(lastDay)) {\n\t\t\tthis.calendar.setFocusedDate(lastDay);\n\t\t} else {\n\t\t\tthis.calendar.setFocusedDate(this.dateAdapter.set(previousMonthTarget, { day: date }));\n\t\t}\n\t}\n\n\t/**\n\t * Focus the same date in the next month.\n\t */\n\tprotected focusNextMonth(event: Event): void {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tconst date = this.dateAdapter.getDate(this.calendar.focusedDate());\n\n\t\tlet nextMonthTarget = this.dateAdapter.startOfMonth(this.calendar.focusedDate());\n\t\tnextMonthTarget = this.dateAdapter.add(nextMonthTarget, { months: 1 });\n\n\t\tconst lastDay = this.dateAdapter.endOfMonth(nextMonthTarget);\n\n\t\t// if we are on a date that does not exist in the next month, we should focus the last day of the month.\n\t\tif (date > this.dateAdapter.getDate(lastDay)) {\n\t\t\tthis.calendar.setFocusedDate(lastDay);\n\t\t} else {\n\t\t\tthis.calendar.setFocusedDate(this.dateAdapter.set(nextMonthTarget, { day: date }));\n\t\t}\n\t}\n\n\t/**\n\t * Get the direction of the element.\n\t */\n\tprivate getDirection(): 'ltr' | 'rtl' {\n\t\treturn getComputedStyle(this._elementRef.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\n\t}\n\n\tfocus(): void {\n\t\tthis._elementRef.nativeElement.focus();\n\t}\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnCalendarCell]',\n\thost: {\n\t\trole: 'presentation',\n\t},\n})\nexport class BrnCalendarCellDirective {}\n","import { Directive } from '@angular/core';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarGrid]',\n\thost: {\n\t\trole: 'grid',\n\t\t'[attr.aria-labelledby]': 'calendar.header()?.id()',\n\t},\n})\nexport class BrnCalendarGridDirective<T> {\n\t/** Access the calendar component */\n\tprotected readonly calendar = injectBrnCalendar<T>();\n}\n","import { Directive, input } from '@angular/core';\n\nlet uniqueId = 0;\n\n@Directive({\n\tselector: '[brnCalendarHeader]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'aria-live': 'polite',\n\t\trole: 'presentation',\n\t},\n})\nexport class BrnCalendarHeaderDirective {\n\t/** The unique id for the header */\n\tpublic readonly id = input(`brn-calendar-header-${uniqueId++}`);\n}\n","import { InjectionToken, ValueProvider, inject } from '@angular/core';\n\nexport interface BrnCalendarI18n {\n\tformatWeekdayName: (index: number) => string;\n\tformatHeader: (month: number, year: number) => string;\n\tlabelPrevious: () => string;\n\tlabelNext: () => string;\n\tlabelWeekday: (index: number) => string;\n}\n\nexport const BrnCalendarI18nToken = new InjectionToken<BrnCalendarI18n>('BrnCalendarI18nToken');\n\n/**\n * Provide the calendar i18n configuration.\n */\nexport function provideBrnCalendarI18n(configuration: BrnCalendarI18n): ValueProvider {\n\treturn { provide: BrnCalendarI18nToken, useValue: configuration };\n}\n\nconst defaultCalendarI18n: BrnCalendarI18n = {\n\tformatWeekdayName: (index: number) => {\n\t\tconst weekdays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n\t\treturn weekdays[index];\n\t},\n\tformatHeader: (month: number, year: number) => {\n\t\treturn new Date(year, month).toLocaleDateString(undefined, {\n\t\t\tmonth: 'long',\n\t\t\tyear: 'numeric',\n\t\t});\n\t},\n\tlabelPrevious: () => 'Go to the previous month',\n\tlabelNext: () => 'Go to the next month',\n\tlabelWeekday: (index: number) => {\n\t\tconst weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\t\treturn weekdays[index];\n\t},\n};\n\n/**\n * Inject the calendar i18n configuration.\n */\nexport function injectBrnCalendarI18n(): BrnCalendarI18n {\n\treturn inject(BrnCalendarI18nToken, { optional: true }) ?? defaultCalendarI18n;\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendarNextButton]',\n\thost: {\n\t\ttype: 'button',\n\t\t'[attr.aria-label]': 'i18n.labelNext()',\n\t},\n})\nexport class BrnCalendarNextButtonDirective {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar();\n\n\t/** Access the date adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter();\n\n\t/** Access the calendar i18n */\n\tprotected readonly i18n = injectBrnCalendarI18n();\n\n\t/** Focus the previous month */\n\t@HostListener('click')\n\tprotected focusPreviousMonth(): void {\n\t\tconst targetDate = this._dateAdapter.add(this._calendar.state().focusedDate(), { months: 1 });\n\n\t\t// if the date is disabled, but there are available dates in the month, focus the last day of the month.\n\t\tconst possibleDate = this._calendar.constrainDate(targetDate);\n\n\t\tif (this._dateAdapter.isSameMonth(possibleDate, targetDate)) {\n\t\t\t// if this date is within the same month, then focus it\n\t\t\tthis._calendar.state().focusedDate.set(possibleDate);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._calendar.state().focusedDate.set(targetDate);\n\t}\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\nimport { injectBrnCalendarI18n } from './i18n/calendar-i18n';\n\n@Directive({\n\tselector: '[brnCalendarPreviousButton]',\n\thost: {\n\t\ttype: 'button',\n\t\t'[attr.aria-label]': 'i18n.labelPrevious()',\n\t},\n})\nexport class BrnCalendarPreviousButtonDirective {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar();\n\n\t/** Access the date adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter();\n\n\t/** Access the calendar i18n */\n\tprotected readonly i18n = injectBrnCalendarI18n();\n\n\t/** Focus the previous month */\n\t@HostListener('click')\n\tprotected focusPreviousMonth(): void {\n\t\tconst targetDate = this._dateAdapter.subtract(this._calendar.state().focusedDate(), { months: 1 });\n\n\t\t// if the date is disabled, but there are available dates in the month, focus the last day of the month.\n\t\tconst possibleDate = this._calendar.constrainDate(targetDate);\n\n\t\tif (this._dateAdapter.isSameMonth(possibleDate, targetDate)) {\n\t\t\t// if this date is within the same month, then focus it\n\t\t\tthis._calendar.state().focusedDate.set(possibleDate);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._calendar.state().focusedDate.set(targetDate);\n\t}\n}\n","import {\n\tChangeDetectorRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tOnDestroy,\n\tTemplateRef,\n\tViewContainerRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tuntracked,\n} from '@angular/core';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarWeek]',\n})\nexport class BrnCalendarWeekDirective<T> implements OnDestroy {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar<T>();\n\n\t/** Access the view container ref */\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the template ref */\n\tprivate readonly _templateRef = inject<TemplateRef<BrnWeekContext<T>>>(TemplateRef);\n\n\t// get the weeks to display.\n\tprotected readonly weeks = computed(() => {\n\t\tconst days = this._calendar.days();\n\t\tconst weeks = [];\n\n\t\tfor (let i = 0; i < days.length; i += 7) {\n\t\t\tweeks.push(days.slice(i, i + 7));\n\t\t}\n\n\t\treturn weeks;\n\t});\n\n\t/** Store the view refs */\n\tprivate _viewRefs: EmbeddedViewRef<BrnWeekContext<T>>[] = [];\n\n\t// Make sure the template checker knows the type of the context with which the\n\t// template of this directive will be rendered\n\tstatic ngTemplateContextGuard<T>(_: BrnCalendarWeekDirective<T>, ctx: unknown): ctx is BrnWeekContext<T> {\n\t\treturn true;\n\t}\n\n\tconstructor() {\n\t\t// this should use `afterRenderEffect` but it's not available in the current version\n\t\teffect(() => {\n\t\t\tconst weeks = this.weeks();\n\t\t\tuntracked(() => this._renderWeeks(weeks));\n\t\t});\n\t}\n\n\tprivate _renderWeeks(weeks: T[][]): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\n\t\tthis._viewRefs = [];\n\n\t\t// Create a new view for each week\n\t\tfor (const week of weeks) {\n\t\t\tconst viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef, {\n\t\t\t\t$implicit: week,\n\t\t\t});\n\t\t\tthis._viewRefs.push(viewRef);\n\t\t}\n\n\t\tthis._changeDetector.detectChanges();\n\t}\n\n\tngOnDestroy(): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\t}\n}\n\ninterface BrnWeekContext<T> {\n\t$implicit: T[];\n}\n","import {\n\tChangeDetectorRef,\n\tcomputed,\n\tDirective,\n\teffect,\n\tEmbeddedViewRef,\n\tinject,\n\tOnDestroy,\n\tTemplateRef,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { injectBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarWeekday]',\n})\nexport class BrnCalendarWeekdayDirective<T> implements OnDestroy {\n\t/** Access the calendar */\n\tprivate readonly _calendar = injectBrnCalendar<T>();\n\n\t/** Access the date time adapter */\n\tprivate readonly _dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the view container ref */\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the template ref */\n\tprivate readonly _templateRef = inject<TemplateRef<BrnWeekdayContext>>(TemplateRef);\n\n\t/** Get the days of the week to display in the header. */\n\tprotected readonly weekdays = computed(() => this._calendar.days().slice(0, 7));\n\n\t/** Store the view refs */\n\tprivate _viewRefs: EmbeddedViewRef<BrnWeekdayContext>[] = [];\n\n\t// Make sure the template checker knows the type of the context with which the\n\t// template of this directive will be rendered\n\tstatic ngTemplateContextGuard<T>(_: BrnCalendarWeekdayDirective<T>, ctx: unknown): ctx is BrnWeekdayContext {\n\t\treturn true;\n\t}\n\n\tconstructor() {\n\t\t// Create a new view for each day\n\t\teffect(() => {\n\t\t\t// Get the weekdays to display\n\t\t\tconst weekdays = this.weekdays();\n\t\t\t// Render the weekdays\n\t\t\tuntracked(() => this._renderWeekdays(weekdays));\n\t\t});\n\t}\n\n\tprivate _renderWeekdays(weekdays: T[]): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\n\t\tthis._viewRefs = [];\n\n\t\t// Create a new view for each day\n\t\tfor (const day of weekdays) {\n\t\t\tconst viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef, {\n\t\t\t\t$implicit: this._dateAdapter.getDay(day),\n\t\t\t});\n\t\t\tthis._viewRefs.push(viewRef);\n\t\t}\n\n\t\tthis._changeDetector.detectChanges();\n\t}\n\n\tngOnDestroy(): void {\n\t\t// Destroy all the views when the directive is destroyed\n\t\tfor (const viewRef of this._viewRefs) {\n\t\t\tviewRef.destroy();\n\t\t}\n\t}\n}\n\ninterface BrnWeekdayContext {\n\t$implicit: number;\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tChangeDetectorRef,\n\tDirective,\n\tInjector,\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tinject,\n\tinput,\n\tmodel,\n\tnumberAttribute,\n\tsignal,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnCalendarCellButtonDirective } from './brn-calendar-cell-button.directive';\nimport { BrnCalendarHeaderDirective } from './brn-calendar-header.directive';\nimport { BrnCalendar, provideBrnCalendar } from './brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendar]',\n\tproviders: [provideBrnCalendar(BrnCalendarDirective)],\n})\nexport class BrnCalendarDirective<T> implements BrnCalendar<T> {\n\t/** Access the date adapter */\n\tprotected readonly dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the injector */\n\tprivate readonly _injector = inject(Injector);\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly min = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly max = input<T>();\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = model<T>();\n\n\t/** Whether a specific date is disabled. */\n\tpublic readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n\t/** The day the week starts on */\n\tpublic readonly weekStartsOn = input<Weekday, NumberInput>(0, {\n\t\ttransform: (v: unknown) => numberAttribute(v) as Weekday,\n\t});\n\n\t/** The default focused date. */\n\tpublic readonly defaultFocusedDate = input<T>();\n\n\t/** @internal Access the header */\n\tpublic readonly header = contentChild(BrnCalendarHeaderDirective);\n\n\t/** Store the cells */\n\tprotected readonly cells = contentChildren<BrnCalendarCellButtonDirective<T>>(BrnCalendarCellButtonDirective, {\n\t\tdescendants: true,\n\t});\n\n\t/**\n\t * @internal\n\t * The internal state of the component.\n\t */\n\tpublic readonly state = computed(() => ({\n\t\tfocusedDate: signal(this.constrainDate(this.defaultFocusedDate() ?? this.date() ?? this.dateAdapter.now())),\n\t}));\n\n\t/**\n\t * The focused date.\n\t */\n\tpublic readonly focusedDate = computed(() => this.state().focusedDate());\n\n\t/**\n\t * Get all the days to display, this is the days of the current month\n\t * and the days of the previous and next month to fill the grid.\n\t */\n\tpublic readonly days = computed(() => {\n\t\tconst weekStartsOn = this.weekStartsOn();\n\t\tconst month = this.state().focusedDate();\n\t\tconst days: T[] = [];\n\n\t\t// Get the first and last day of the month.\n\t\tlet firstDay = this.dateAdapter.startOfMonth(month);\n\t\tlet lastDay = this.dateAdapter.endOfMonth(month);\n\n\t\t// we need to subtract until we get the to starting day before or on the start of the month.\n\t\twhile (this.dateAdapter.getDay(firstDay) !== weekStartsOn) {\n\t\t\tfirstDay = this.dateAdapter.subtract(firstDay, { days: 1 });\n\t\t}\n\n\t\tconst weekEndsOn = (weekStartsOn + 6) % 7;\n\n\t\t// we need to add until we get to the ending day after or on the end of the month.\n\t\twhile (this.dateAdapter.getDay(lastDay) !== weekEndsOn) {\n\t\t\tlastDay = this.dateAdapter.add(lastDay, { days: 1 });\n\t\t}\n\n\t\t// collect all the days to display.\n\t\twhile (firstDay <= lastDay) {\n\t\t\tdays.push(firstDay);\n\t\t\tfirstDay = this.dateAdapter.add(firstDay, { days: 1 });\n\t\t}\n\n\t\treturn days;\n\t});\n\n\t/** @internal Constrain a date to the min and max boundaries */\n\tconstrainDate(date: T): T {\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\t// If there is no min or max, return the date.\n\t\tif (!min && !max) {\n\t\t\treturn date;\n\t\t}\n\n\t\t// If there is a min and the date is before the min, return the min.\n\t\tif (min && this.dateAdapter.isBefore(date, this.dateAdapter.startOfDay(min))) {\n\t\t\treturn min;\n\t\t}\n\n\t\t// If there is a max and the date is after the max, return the max.\n\t\tif (max && this.dateAdapter.isAfter(date, this.dateAdapter.endOfDay(max))) {\n\t\t\treturn max;\n\t\t}\n\n\t\t// Return the date.\n\t\treturn date;\n\t}\n\n\t/** @internal Determine if a date is disabled */\n\tisDateDisabled(date: T): boolean {\n\t\t// if the calendar is disabled we can't select this date\n\t\tif (this.disabled()) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if the date is outside the min and max range\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\tif (min && this.dateAdapter.isBefore(date, this.dateAdapter.startOfDay(min))) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (max && this.dateAdapter.isAfter(date, this.dateAdapter.endOfDay(max))) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if this specific date is disabled\n\t\tconst disabledFn = this.dateDisabled();\n\n\t\tif (disabledFn(date)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tisSelected(date: T): boolean {\n\t\tconst selected = this.date() as T | undefined;\n\t\treturn selected !== undefined && this.dateAdapter.isSameDay(date, selected);\n\t}\n\n\tselectDate(date: T): void {\n\t\tif (this.isSelected(date)) {\n\t\t\tthis.date.set(undefined);\n\t\t} else {\n\t\t\tthis.date.set(date);\n\t\t}\n\t\tthis.state().focusedDate.set(date);\n\t}\n\n\t/** @internal Set the focused date */\n\tsetFocusedDate(date: T): void {\n\t\t// check if the date is disabled.\n\t\tif (this.isDateDisabled(date)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state().focusedDate.set(date);\n\n\t\t// wait until the cells have all updated\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\twrite: () => {\n\t\t\t\t\t// focus the cell with the target date.\n\t\t\t\t\tconst cell = this.cells().find((c) => this.dateAdapter.isSameDay(c.date(), date));\n\n\t\t\t\t\tif (cell) {\n\t\t\t\t\t\tcell.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tinjector: this._injector,\n\t\t\t},\n\t\t);\n\n\t\t// we must update the view to ensure the focused cell is visible.\n\t\tthis._changeDetector.detectChanges();\n\t}\n}\n\nexport type Weekday = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tChangeDetectorRef,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\tinject,\n\tInjector,\n\tinput,\n\tmodel,\n\tnumberAttribute,\n\tsignal,\n} from '@angular/core';\nimport { injectDateAdapter } from '@spartan-ng/brain/date-time';\nimport { BrnCalendarCellButtonDirective } from '../brn-calendar-cell-button.directive';\nimport { BrnCalendarHeaderDirective } from '../brn-calendar-header.directive';\nimport { Weekday } from '../brn-calendar.directive';\nimport { BrnCalendar, provideBrnCalendar } from '../brn-calendar.token';\n\n@Directive({\n\tselector: '[brnCalendarMulti]',\n\tproviders: [provideBrnCalendar(BrnCalendarMultiDirective)],\n})\nexport class BrnCalendarMultiDirective<T> implements BrnCalendar<T> {\n\t// /** Access the date adapter */\n\tprotected readonly dateAdapter = injectDateAdapter<T>();\n\n\t/** Access the change detector */\n\tprivate readonly _changeDetector = inject(ChangeDetectorRef);\n\n\t/** Access the injector */\n\tprivate readonly _injector = inject(Injector);\n\n\t/** The minimum date that can be selected.*/\n\tpublic readonly min = input<T>();\n\n\t/** The maximum date that can be selected. */\n\tpublic readonly max = input<T>();\n\n\t/** The minimum selectable dates. */\n\tpublic readonly minSelection = input<number, NumberInput>(undefined, {\n\t\ttransform: numberAttribute,\n\t});\n\n\t/** The maximum selectable dates. */\n\tpublic readonly maxSelection = input<number, NumberInput>(undefined, {\n\t\ttransform: numberAttribute,\n\t});\n\n\t/** Determine if the date picker is disabled. */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value. */\n\tpublic readonly date = model<T[]>();\n\n\t/** Whether a specific date is disabled. */\n\tpublic readonly dateDisabled = input<(date: T) => boolean>(() => false);\n\n\t/** The day the week starts on */\n\tpublic readonly weekStartsOn = input<Weekday, NumberInput>(0, {\n\t\ttransform: (v: unknown) => numberAttribute(v) as Weekday,\n\t});\n\n\t/** The default focused date. */\n\tpublic readonly defaultFocusedDate = input<T>();\n\n\t/** @internal Access the header */\n\tpublic readonly header = contentChild(BrnCalendarHeaderDirective);\n\n\t/** Store the cells */\n\tprotected readonly cells = contentChildren<BrnCalendarCellButtonDirective<T>>(BrnCalendarCellButtonDirective, {\n\t\tdescendants: true,\n\t});\n\n\t/**\n\t * @internal\n\t * The internal state of the component.\n\t */\n\tpublic readonly state = computed(() => ({\n\t\tfocusedDate: signal(this.constrainDate(this.defaultFocusedDate() ?? this.dateAdapter.now())),\n\t}));\n\n\t/**\n\t * The focused date.\n\t */\n\tpublic readonly focusedDate = computed(() => this.state().focusedDate());\n\n\t/**\n\t * Get all the days to display, this is the days of the current month\n\t * and the days of the previous and next month to fill the grid.\n\t */\n\tpublic readonly days = computed(() => {\n\t\tconst weekStartsOn = this.weekStartsOn();\n\t\tconst month = this.state().focusedDate();\n\t\tconst days: T[] = [];\n\n\t\t// Get the first and last day of the month.\n\t\tlet firstDay = this.dateAdapter.startOfMonth(month);\n\t\tlet lastDay = this.dateAdapter.endOfMonth(month);\n\n\t\t// we need to subtract until we get the to starting day before or on the start of the month.\n\t\twhile (this.dateAdapter.getDay(firstDay) !== weekStartsOn) {\n\t\t\tfirstDay = this.dateAdapter.subtract(firstDay, { days: 1 });\n\t\t}\n\n\t\tconst weekEndsOn = (weekStartsOn + 6) % 7;\n\n\t\t// we need to add until we get to the ending day after or on the end of the month.\n\t\twhile (this.dateAdapter.getDay(lastDay) !== weekEndsOn) {\n\t\t\tlastDay = this.dateAdapter.add(lastDay, { days: 1 });\n\t\t}\n\n\t\t// collect all the days to display.\n\t\twhile (firstDay <= lastDay) {\n\t\t\tdays.push(firstDay);\n\t\t\tfirstDay = this.dateAdapter.add(firstDay, { days: 1 });\n\t\t}\n\n\t\treturn days;\n\t});\n\n\tisSelected(date: T): boolean {\n\t\treturn this.date()?.some((d) => this.dateAdapter.isSameDay(d, date)) ?? false;\n\t}\n\n\tselectDate(date: T): void {\n\t\tconst selected = this.date() as T[] | undefined;\n\t\tif (this.isSelected(date)) {\n\t\t\tconst minSelection = this.minSelection();\n\t\t\tif (selected?.length === minSelection) {\n\t\t\t\t// min selection reached, do not allow to deselect\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.date.set(selected?.filter((d) => !this.dateAdapter.isSameDay(d, date)));\n\t\t} else {\n\t\t\tconst maxSelection = this.maxSelection();\n\t\t\tif (selected?.length === maxSelection) {\n\t\t\t\t// max selection reached, reset the selection to date\n\t\t\t\tthis.date.set([date]);\n\t\t\t} else {\n\t\t\t\t// add the date to the selection\n\t\t\t\tthis.date.set([...(selected ?? []), date]);\n\t\t\t}\n\t\t}\n\t}\n\n\t// same as in brn-calendar.directive.ts\n\t/** @internal Constrain a date to the min and max boundaries */\n\tconstrainDate(date: T): T {\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\t// If there is no min or max, return the date.\n\t\tif (!min && !max) {\n\t\t\treturn date;\n\t\t}\n\n\t\t// If there is a min and the date is before the min, return the min.\n\t\tif (min && this.dateAdapter.isBefore(date, this.dateAdapter.startOfDay(min))) {\n\t\t\treturn min;\n\t\t}\n\n\t\t// If there is a max and the date is after the max, return the max.\n\t\tif (max && this.dateAdapter.isAfter(date, this.dateAdapter.endOfDay(max))) {\n\t\t\treturn max;\n\t\t}\n\n\t\t// Return the date.\n\t\treturn date;\n\t}\n\n\t/** @internal Determine if a date is disabled */\n\tisDateDisabled(date: T): boolean {\n\t\t// if the calendar is disabled we can't select this date\n\t\tif (this.disabled()) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if the date is outside the min and max range\n\t\tconst min = this.min();\n\t\tconst max = this.max();\n\n\t\tif (min && this.dateAdapter.isBefore(date, this.dateAdapter.startOfDay(min))) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (max && this.dateAdapter.isAfter(date, this.dateAdapter.endOfDay(max))) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// if this specific date is disabled\n\t\tconst disabledFn = this.dateDisabled();\n\n\t\tif (disabledFn(date)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/** @internal Set the focused date */\n\tsetFocusedDate(date: T): void {\n\t\t// check if the date is disabled.\n\t\tif (this.isDateDisabled(date)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.state().focusedDate.set(date);\n\n\t\t// wait until the cells have all updated\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\twrite: () => {\n\t\t\t\t\t// focus the cell with the target date.\n\t\t\t\t\tconst cell = this.cells().find((c) => this.dateAdapter.isSameDay(c.date(), date));\n\n\t\t\t\t\tif (cell) {\n\t\t\t\t\t\tcell.focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tinjector: this._injector,\n\t\t\t},\n\t\t);\n\n\t\t// we must update the view to ensure the focused cell is visible.\n\t\tthis._changeDetector.detectChanges();\n\t}\n}\n","export * from './lib/brn-calendar-cell-button.directive';\nexport * from './lib/brn-calendar-cell.directive';\nexport * from './lib/brn-calendar-grid.directive';\nexport * from './lib/brn-calendar-header.directive';\nexport * from './lib/brn-calendar-next-button.directive';\nexport * from './lib/brn-calendar-previous-button.directive';\nexport * from './lib/brn-calendar-week.directive';\nexport * from './lib/brn-calendar-weekday.directive';\nexport * from './lib/brn-calendar.directive';\nexport * from './lib/brn-calendar.token';\nexport * from './lib/i18n/calendar-i18n';\nexport * from './lib/mode/brn-calendar-multiple.directive';\n\nimport { NgModule } from '@angular/core';\nimport { BrnCalendarCellButtonDirective } from './lib/brn-calendar-cell-button.directive';\nimport { BrnCalendarCellDirective } from './lib/brn-calendar-cell.directive';\nimport { BrnCalendarGridDirective } from './lib/brn-calendar-grid.directive';\nimport { BrnCalendarHeaderDirective } from './lib/brn-calendar-header.directive';\nimport { BrnCalendarNextButtonDirective } from './lib/brn-calendar-next-button.directive';\nimport { BrnCalendarPreviousButtonDirective } from './lib/brn-calendar-previous-button.directive';\nimport { BrnCalendarWeekDirective } from './lib/brn-calendar-week.directive';\nimport { BrnCalendarWeekdayDirective } from './lib/brn-calendar-weekday.directive';\nimport { BrnCalendarDirective } from './lib/brn-calendar.directive';\nimport { BrnCalendarMultiDirective } from './lib/mode/brn-calendar-multiple.directive';\n\nexport const BrnCalendarImports = [\n\tBrnCalendarCellButtonDirective,\n\tBrnCalendarGridDirective,\n\tBrnCalendarHeaderDirective,\n\tBrnCalendarNextButtonDirective,\n\tBrnCalendarPreviousButtonDirective,\n\tBrnCalendarWeekDirective,\n\tBrnCalendarWeekdayDirective,\n\tBrnCalendarDirective,\n\tBrnCalendarCellDirective,\n\tBrnCalendarMultiDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnCalendarImports],\n\texports: [...BrnCalendarImports],\n})\nexport class BrnCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|