@lucca-front/ng 22.0.0 → 22.0.1-rc.2
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/lucca-front-ng-a11y.mjs +9 -9
- package/fesm2022/lucca-front-ng-a11y.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-activity-feed.mjs +12 -12
- package/fesm2022/lucca-front-ng-activity-feed.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-animations.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-api.mjs +40 -40
- package/fesm2022/lucca-front-ng-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-app-layout.mjs +3 -3
- package/fesm2022/lucca-front-ng-app-layout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-approbation-inbox.mjs +30 -30
- package/fesm2022/lucca-front-ng-approbation-inbox.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-box.mjs +3 -3
- package/fesm2022/lucca-front-ng-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-breadcrumbs.mjs +6 -6
- package/fesm2022/lucca-front-ng-breadcrumbs.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-bubble-icon.mjs +3 -3
- package/fesm2022/lucca-front-ng-bubble-icon.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-bubble-illustration.mjs +3 -3
- package/fesm2022/lucca-front-ng-bubble-illustration.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-callout.mjs +24 -24
- package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-chip.mjs +3 -3
- package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-clear.mjs +3 -3
- package/fesm2022/lucca-front-ng-clear.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-code.mjs +3 -3
- package/fesm2022/lucca-front-ng-code.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-color.mjs +3 -3
- package/fesm2022/lucca-front-ng-color.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-comment.mjs +9 -9
- package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-container.mjs +3 -3
- package/fesm2022/lucca-front-ng-container.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-api.mjs +17 -9
- package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-department.mjs +6 -6
- package/fesm2022/lucca-front-ng-core-select-department.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-establishment.mjs +9 -9
- package/fesm2022/lucca-front-ng-core-select-establishment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +6 -6
- package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-legal-units.mjs +6 -6
- package/fesm2022/lucca-front-ng-core-select-legal-units.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs +3 -3
- package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-user.mjs +28 -23
- package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select.mjs +68 -58
- package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core.mjs +18 -18
- package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-data-table.mjs +30 -27
- package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-date.mjs +40 -40
- package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-date2.mjs +18 -18
- package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-department.mjs +24 -24
- package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-dialog-testing.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-dialog.mjs +36 -34
- package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-divider.mjs +3 -3
- package/fesm2022/lucca-front-ng-divider.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-dropdown.mjs +40 -40
- package/fesm2022/lucca-front-ng-dropdown.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-empty-state.mjs +9 -9
- package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-error-page.mjs +3 -3
- package/fesm2022/lucca-front-ng-error-page.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-establishment.mjs +33 -33
- package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-fancy-box.mjs +3 -3
- package/fesm2022/lucca-front-ng-fancy-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-file-upload.mjs +18 -18
- package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-filter-pills.mjs +48 -21
- package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-footer.mjs +3 -3
- package/fesm2022/lucca-front-ng-footer.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-field.mjs +18 -18
- package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-header.mjs +3 -3
- package/fesm2022/lucca-front-ng-form-header.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-label.mjs +3 -3
- package/fesm2022/lucca-front-ng-form-label.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form.mjs +3 -3
- package/fesm2022/lucca-front-ng-form.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-formly.mjs +58 -58
- package/fesm2022/lucca-front-ng-formly.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +6 -6
- package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs +3 -3
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs +6 -6
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs +3 -3
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +35 -35
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms.mjs +39 -39
- package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-gauge.mjs +3 -3
- package/fesm2022/lucca-front-ng-gauge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-grid.mjs +6 -6
- package/fesm2022/lucca-front-ng-grid.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-highlight-data.mjs +3 -3
- package/fesm2022/lucca-front-ng-highlight-data.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-highlight-section.mjs +3 -3
- package/fesm2022/lucca-front-ng-highlight-section.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-highlight-text.mjs +3 -3
- package/fesm2022/lucca-front-ng-highlight-text.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-horizontal-navigation.mjs +9 -9
- package/fesm2022/lucca-front-ng-horizontal-navigation.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-impersonation.mjs +3 -3
- package/fesm2022/lucca-front-ng-impersonation.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-index-table.mjs +32 -32
- package/fesm2022/lucca-front-ng-index-table.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-inline-message.mjs +3 -3
- package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-input.mjs +21 -21
- package/fesm2022/lucca-front-ng-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-link.mjs +6 -6
- package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-listbox.mjs +9 -9
- package/fesm2022/lucca-front-ng-listbox.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-listing.mjs +6 -6
- package/fesm2022/lucca-front-ng-listing.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-loading.mjs +3 -3
- package/fesm2022/lucca-front-ng-loading.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-main-layout.mjs +6 -6
- package/fesm2022/lucca-front-ng-main-layout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-mobile-push.mjs +3 -3
- package/fesm2022/lucca-front-ng-mobile-push.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-modal.mjs +29 -24
- package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-multi-select.mjs +37 -37
- package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-new-badge.mjs +3 -3
- package/fesm2022/lucca-front-ng-new-badge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-number-format.mjs +6 -6
- package/fesm2022/lucca-front-ng-number-format.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-number.mjs +7 -7
- package/fesm2022/lucca-front-ng-number.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-option.mjs +126 -126
- package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-page-header.mjs +3 -3
- package/fesm2022/lucca-front-ng-page-header.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-pagination.mjs +3 -3
- package/fesm2022/lucca-front-ng-pagination.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-picker.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-plg-push.mjs +3 -3
- package/fesm2022/lucca-front-ng-plg-push.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-popover.mjs +17 -17
- package/fesm2022/lucca-front-ng-popover.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-popover2.mjs +6 -6
- package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-popup.mjs +10 -10
- package/fesm2022/lucca-front-ng-popup.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-progress-bar.mjs +3 -3
- package/fesm2022/lucca-front-ng-progress-bar.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-progress-stepper.mjs +6 -6
- package/fesm2022/lucca-front-ng-progress-stepper.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-read-more.mjs +3 -3
- package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-resource-card.mjs +12 -12
- package/fesm2022/lucca-front-ng-resource-card.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-safe-content.mjs +10 -10
- package/fesm2022/lucca-front-ng-safe-content.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-scroll-box.mjs +3 -3
- package/fesm2022/lucca-front-ng-scroll-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-scroll.mjs +7 -7
- package/fesm2022/lucca-front-ng-scroll.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs +6 -6
- package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-segmented-control.mjs +6 -6
- package/fesm2022/lucca-front-ng-segmented-control.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-select.mjs +14 -14
- package/fesm2022/lucca-front-ng-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-sidepanel.mjs +7 -7
- package/fesm2022/lucca-front-ng-sidepanel.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-simple-select-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-simple-select.mjs +12 -12
- package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs +6 -6
- package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-software-icon.mjs +3 -3
- package/fesm2022/lucca-front-ng-software-icon.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-sortable-list.mjs +6 -6
- package/fesm2022/lucca-front-ng-sortable-list.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-status-badge.mjs +3 -3
- package/fesm2022/lucca-front-ng-status-badge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-table-of-content.mjs +6 -6
- package/fesm2022/lucca-front-ng-table-of-content.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-text-flow.mjs +3 -3
- package/fesm2022/lucca-front-ng-text-flow.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-time.mjs +18 -18
- package/fesm2022/lucca-front-ng-time.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-title.mjs +10 -10
- package/fesm2022/lucca-front-ng-title.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-toast.mjs +10 -10
- package/fesm2022/lucca-front-ng-toast.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-tree-select.mjs +6 -6
- package/fesm2022/lucca-front-ng-tree-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-user-popover.mjs +18 -18
- package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-user.mjs +59 -59
- package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-vertical-navigation.mjs +12 -12
- package/fesm2022/lucca-front-ng-vertical-navigation.mjs.map +1 -1
- package/package.json +4 -4
- package/schematics/lib/local-deps/package-lock.json +8 -8
- package/schematics/lib/local-deps/package.json +1 -1
- package/types/lucca-front-ng-core-select-api.d.ts +5 -0
- package/types/lucca-front-ng-core-select-user.d.ts +6 -0
- package/types/lucca-front-ng-core-select.d.ts +6 -0
- package/types/lucca-front-ng-data-table.d.ts +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-core-select.mjs","sources":["../../../packages/ng/core-select/displayer/displayer.directive.ts","../../../packages/ng/core-select/option/option.token.ts","../../../packages/ng/core-select/option/default-option.component.ts","../../../packages/ng/core-select/option/default-option.component.html","../../../packages/ng/core-select/option/disabled.directive.ts","../../../packages/ng/core-select/option/group.directive.ts","../../../packages/ng/core-select/option/group.pipe.ts","../../../packages/ng/core-select/option/option-outlet.directive.ts","../../../packages/ng/core-select/panel/panel.instance.ts","../../../packages/ng/core-select/panel/panel.utils.ts","../../../packages/ng/core-select/panel/key-manager.ts","../../../packages/ng/core-select/panel/selectable-item.ts","../../../packages/ng/core-select/select.model.ts","../../../packages/ng/core-select/option/translations.ts","../../../packages/ng/core-select/option/option.translate.ts","../../../packages/ng/core-select/option/option.component.ts","../../../packages/ng/core-select/option/option.component.html","../../../packages/ng/core-select/option/option.directive.ts","../../../packages/ng/core-select/input/select-input.utils.ts","../../../packages/ng/core-select/input/select-input.component.ts","../../../packages/ng/core-select/input/select-input.models.ts","../../../packages/ng/core-select/input/total-count.directive.ts","../../../packages/ng/core-select/input/tree-display.pipe.ts","../../../packages/ng/core-select/no-clue/no-clue.directive.ts","../../../packages/ng/core-select/panel/panel-layout/panel-layout.component.ts","../../../packages/ng/core-select/panel/panel-layout/panel-layout.component.html","../../../packages/ng/core-select/panel/panel-header-template.directive.ts","../../../packages/ng/core-select/panel/panel.models.ts","../../../packages/ng/core-select/panel/pointer-navigation.ts","../../../packages/ng/core-select/translations.ts","../../../packages/ng/core-select/select.translate.ts","../../../packages/ng/core-select/select.utils.ts","../../../packages/ng/core-select/option-selected.pipe.ts","../../../packages/ng/core-select/lucca-front-ng-core-select.ts"],"sourcesContent":["import { Directive, input, TemplateRef } from '@angular/core';\nimport { syncInputSignal } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent } from '../input';\nimport { LuOptionContext } from '../select.model';\n\n@Directive({\n\tselector: '[luDisplayer]',\n})\nexport class LuDisplayerDirective<TOption, TValue> {\n\treadonly select = input<ALuSelectInputComponent<TOption, TValue>>(undefined, { alias: 'luDisplayerSelect' });\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<TOption>>) {\n\t\tsyncInputSignal(this.select, (select) => select.valueTpl.set(this.templateRef));\n\t}\n\n\tpublic static ngTemplateContextGuard<TOption, TValue>(_dir: LuDisplayerDirective<TOption, TValue>, _ctx: unknown): _ctx is LuOptionContext<TOption> {\n\t\treturn true;\n\t}\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport interface ILuOptionContext<T> {\n\tisDisabled$: BehaviorSubject<boolean>;\n\toption$: BehaviorSubject<T | undefined>;\n\tdestroy(): void;\n}\n\nexport const LU_OPTION_CONTEXT = new InjectionToken<ILuOptionContext<unknown>>('LuOptionContext');\n\nfunction optionContextFactory<T>(): ILuOptionContext<T> {\n\tconst isDisabled$ = new BehaviorSubject(false);\n\tconst option$ = new BehaviorSubject<T | undefined>(undefined);\n\treturn {\n\t\tisDisabled$,\n\t\toption$,\n\t\tdestroy(): void {\n\t\t\tisDisabled$.complete();\n\t\t\toption$.complete();\n\t\t},\n\t};\n}\n\nexport function provideOptionContext(): Provider {\n\treturn {\n\t\tprovide: LU_OPTION_CONTEXT,\n\t\tuseFactory: optionContextFactory,\n\t};\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from './option.token';\n\n@Component({\n\tselector: 'lu-core-select-default-option',\n\timports: [AsyncPipe],\n\ttemplateUrl: './default-option.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuSimpleSelectDefaultOptionComponent {\n\tpublic context = inject<ILuOptionContext<{ name?: string }>>(LU_OPTION_CONTEXT);\n}\n","<!-- we don’t want space before comma in presentation display -->\n<!-- prettier-ignore -->\n@if (context.option$ | async; as option) {{{ option?.name ?? option }}}\n","import { Directive, inject, input } from '@angular/core';\nimport { syncInputSignal } from '@lucca-front/ng/core';\nimport { LU_OPTION_CONTEXT } from './option.token';\n\n@Directive({\n\tselector: '[luDisabledOption]',\n})\nexport class LuDisabledOptionDirective {\n\treadonly isDisabled = input<boolean>(undefined, { alias: 'luDisabledOption' });\n\n\tprivate context = inject(LU_OPTION_CONTEXT);\n\n\tconstructor() {\n\t\tsyncInputSignal(this.isDisabled, (disabled) => this.context.isDisabled$.next(disabled));\n\t}\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\nimport { ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport type { ALuSelectInputComponent } from '../input';\nimport type { LuOptionGroupByContext } from '../select.model';\n\n@Directive({\n\tselector: '[luOptionGroup]',\n})\nexport class LuOptionGroupDirective<TOption, TValue, TGroup> {\n\treadonly select = input.required<ALuSelectInputComponent<TOption, TValue>>({ alias: 'luOptionGroupSelect' });\n\n\treadonly selector = input.required<(option: TOption) => TGroup>({ alias: 'luOptionGroupBy' });\n\n\treadonly content = inject<TemplateRef<LuOptionGroupByContext<TOption, TGroup>>>(TemplateRef);\n\n\tpublic static ngTemplateContextGuard<TOption, TValue, TGroup>(_dir: LuOptionGroupDirective<TOption, TValue, TGroup>, _ctx: unknown): _ctx is LuOptionGroupByContext<TOption, TGroup> {\n\t\treturn true;\n\t}\n\n\tconstructor() {\n\t\tɵeffectWithDeps([this.select, this.selector], (select, selector) => {\n\t\t\tselect.groupingSignal.set({ selector, content: this.content });\n\t\t});\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LuOptionGroup } from '../select.model';\n\n/**\n * Generate groups with a O(n) complexity. Note that the options must be sorted by group.\n */\nexport function generateGroups<T, TGroup>(options: T[], selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>[] {\n\tif (!options?.length) {\n\t\treturn [];\n\t}\n\n\tconst groups: Array<LuOptionGroup<T, TGroup>> = [];\n\tlet group: LuOptionGroup<T, TGroup> | undefined;\n\n\tfor (const option of options) {\n\t\tconst groupKey = selector(option);\n\t\tif (!group || group.key !== groupKey) {\n\t\t\tif (group) {\n\t\t\t\tgroups.push(group);\n\t\t\t}\n\t\t\tgroup = { key: groupKey, options: [option] };\n\t\t} else {\n\t\t\tgroup.options.push(option);\n\t\t}\n\t}\n\n\tif (group) {\n\t\tgroups.push(group);\n\t}\n\n\treturn groups;\n}\n\n@Pipe({\n\tname: 'luOptionGroup',\n})\nexport class LuOptionGroupPipe<T, TGroup> implements PipeTransform {\n\tpublic transform(options: T[], selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>[];\n\tpublic transform(options: T, selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>;\n\tpublic transform(options: T[] | T, selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>[] | LuOptionGroup<T, TGroup> {\n\t\treturn Array.isArray(options) ? generateGroups(options, selector) : generateGroups([options], selector)[0];\n\t}\n}\n","import { ComponentRef, Directive, EmbeddedViewRef, inject, Injector, input, OnDestroy, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { isNotNil, luBooleanAttribute, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { LuOptionContext } from '../select.model';\nimport { LU_OPTION_CONTEXT, provideOptionContext } from './option.token';\n\nfunction hasRenderableValue<T>(value: T | undefined, showNull: boolean): value is T {\n\treturn showNull ? value !== undefined : isNotNil(value);\n}\n\n@Directive({\n\tselector: '[luOptionOutlet]',\n\tproviders: [provideOptionContext()],\n})\nexport class LuOptionOutletDirective<T> implements OnDestroy {\n\treadonly luOptionOutlet = input<Type<unknown> | TemplateRef<LuOptionContext<T>>>();\n\n\treadonly luOptionOutletValue = input<T | undefined>();\n\n\treadonly luOptionShowNull = input(false, { transform: luBooleanAttribute });\n\n\tprivate viewContainerRef = inject(ViewContainerRef);\n\tprivate injector = inject(Injector);\n\tprivate embeddedViewRef?: EmbeddedViewRef<LuOptionContext<T>>;\n\tprivate componentRef?: ComponentRef<unknown>;\n\tprivate optionContext = inject(LU_OPTION_CONTEXT);\n\n\tconstructor() {\n\t\tlet previousOutlet: Type<unknown> | TemplateRef<LuOptionContext<T>> | undefined;\n\n\t\tɵeffectWithDeps([this.luOptionOutlet, this.luOptionOutletValue, this.luOptionShowNull], (outlet, value, showNull) => {\n\t\t\tconst outletChanged = outlet !== previousOutlet;\n\t\t\tpreviousOutlet = outlet;\n\n\t\t\tif (outletChanged || !hasRenderableValue(value, showNull)) {\n\t\t\t\tthis.clearContainer();\n\t\t\t}\n\n\t\t\tif (outlet && hasRenderableValue(value, showNull)) {\n\t\t\t\tif (!(this.embeddedViewRef || this.componentRef)) {\n\t\t\t\t\tif (outlet instanceof TemplateRef) {\n\t\t\t\t\t\tthis.embeddedViewRef = this.viewContainerRef.createEmbeddedView(outlet, { $implicit: value }, { injector: this.injector });\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.optionContext.option$.next(value);\n\t\t\t\t\t\tthis.componentRef = this.viewContainerRef.createComponent(outlet, { injector: this.injector });\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (this.embeddedViewRef) {\n\t\t\t\t\t\tthis.embeddedViewRef.context.$implicit = value;\n\t\t\t\t\t} else if (this.componentRef) {\n\t\t\t\t\t\tthis.optionContext.option$.next(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.optionContext.destroy();\n\t}\n\n\tprivate clearContainer(): void {\n\t\tthis.viewContainerRef.clear();\n\t\tthis.embeddedViewRef?.destroy();\n\t\tthis.componentRef?.destroy();\n\t\tthis.embeddedViewRef = undefined;\n\t\tthis.componentRef = undefined;\n\t}\n\n\tpublic static ngTemplateContextGuard<T>(_dir: LuOptionOutletDirective<T>, _ctx: unknown): _ctx is void {\n\t\treturn true;\n\t}\n}\n","import { InjectionToken, Signal, WritableSignal } from '@angular/core';\nimport { CoreSelectPanelElement } from './selectable-item';\n\nexport interface CoreSelectPanelInstance<T = unknown> {\n\toptions: WritableSignal<CoreSelectPanelElement<T>[]>;\n\tpointerNavigation: Signal<boolean>;\n}\n\nexport const SELECT_PANEL_INSTANCE = new InjectionToken<CoreSelectPanelInstance>('CoreSelect:PanelInstance');\n","import { afterNextRender, Injector, Signal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, map, of, skip, startWith, switchMap, take } from 'rxjs';\n\n/**\n * Scrolls an element into view once its layout has settled.\n *\n * When a select panel opens, its opening animation (scale transform) makes the element's visual\n * geometry differ from its layout geometry; calling scrollIntoView at that point makes the browser\n * compute a bogus scroll position (e.g. the panel opens scrolled partway down). This waits, frame\n * by frame, until the element's visual height is stable before scrolling.\n *\n * Returns a cancel function to abort the pending scroll (e.g. when the highlight moves elsewhere).\n */\nexport function scrollIntoViewOnceReady(element: HTMLElement, injector: Injector, options?: () => ScrollIntoViewOptions | undefined): () => void {\n\tlet rafId: number | null = null;\n\tlet lastHeight = -1;\n\n\tconst renderRef = afterNextRender(\n\t\t() => {\n\t\t\tconst tryScroll = () => {\n\t\t\t\trafId = null;\n\t\t\t\tif (!element.isConnected) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { height } = element.getBoundingClientRect();\n\t\t\t\tif (height > 0 && height === lastHeight) {\n\t\t\t\t\telement.scrollIntoView(options?.());\n\t\t\t\t} else {\n\t\t\t\t\tlastHeight = height;\n\t\t\t\t\trafId = requestAnimationFrame(tryScroll);\n\t\t\t\t}\n\t\t\t};\n\t\t\ttryScroll();\n\t\t},\n\t\t{ injector },\n\t);\n\n\treturn () => {\n\t\trenderRef.destroy();\n\t\tif (rafId !== null) {\n\t\t\tcancelAnimationFrame(rafId);\n\t\t}\n\t};\n}\n\nexport type GroupTemplateLocation = 'group-header' | 'option' | 'none';\n\n/**\n * In order to avoid a blinking (and a stale option list rendered under the wrong layout)\n * when we go from an empty clue to a clue — or back — we delay switching the group displayer\n * location until the options have actually been updated. We keep showing `group-header` while\n * the options are being (re)fetched, then flip to the final location on the next options emission.\n */\nexport function getGroupTemplateLocation(hasGrouping: Signal<boolean>, clue: Signal<string>, options: Signal<readonly unknown[]>, searchable = true): Signal<GroupTemplateLocation> {\n\t// `toObservable` must run in an injection context, so convert every signal up front\n\t// (this function is called during panel construction) rather than lazily inside `switchMap`.\n\tconst hasGrouping$ = toObservable(hasGrouping);\n\tconst clue$ = toObservable(clue);\n\tconst options$ = toObservable(options);\n\n\t// Wait for the options to update (skip the current, stale emission and take the next one)\n\t// before committing to the target location; meanwhile hold on `group-header`.\n\tconst locationOnceOptionsUpdate$ = (hasClue: boolean) =>\n\t\toptions$.pipe(\n\t\t\tskip(1),\n\t\t\ttake(1),\n\t\t\tmap((): GroupTemplateLocation => (hasClue ? 'option' : 'group-header')),\n\t\t\tstartWith('group-header' as const satisfies GroupTemplateLocation),\n\t\t);\n\n\tconst location$ = hasGrouping$.pipe(\n\t\tswitchMap((grouping) => {\n\t\t\tif (!grouping) {\n\t\t\t\treturn of<GroupTemplateLocation>('none');\n\t\t\t}\n\n\t\t\treturn searchable\n\t\t\t\t? clue$.pipe(\n\t\t\t\t\t\tmap((value) => !!value),\n\t\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\t\tswitchMap(locationOnceOptionsUpdate$),\n\t\t\t\t\t)\n\t\t\t\t: locationOnceOptionsUpdate$(false);\n\t\t}),\n\t);\n\n\treturn toSignal(location$, { initialValue: hasGrouping() ? 'group-header' : 'none' });\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { afterRenderEffect, computed, DestroyRef, EventEmitter, inject, Injectable, Injector, Signal, untracked } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { isNotNil } from '@lucca-front/ng/core';\nimport { asyncScheduler, filter, map, Observable, observeOn, take } from 'rxjs';\nimport { LuOptionComparer } from '../select.model';\nimport { CoreSelectPanelElement } from './selectable-item';\n\ninterface CoreSelectKeyManagerOptions<T> {\n\tqueryList: Signal<readonly CoreSelectPanelElement<T>[]>;\n\toptions: Signal<readonly T[]>;\n\toptionComparer: LuOptionComparer<T>;\n\tactiveOptionIdChanged$: EventEmitter<string>;\n\tclueChange$: Observable<string>;\n}\n\n@Injectable()\nexport class CoreSelectKeyManager<T> {\n\t#destroyRef = inject(DestroyRef);\n\t#cdkKeyManager?: ActiveDescendantKeyManager<CoreSelectPanelElement<T>>;\n\t#hasSearchChanged = false;\n\t#options?: CoreSelectKeyManagerOptions<T>;\n\t#injector = inject(Injector);\n\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\n\t#queryList: Signal<CoreSelectPanelElement<T>[]>;\n\t#queryList$: Observable<CoreSelectPanelElement<T>[]>;\n\n\tinit(options: CoreSelectKeyManagerOptions<T>): void {\n\t\tthis.#options = options;\n\t\tthis.#queryList = computed(() => {\n\t\t\treturn [...options.queryList()].sort((a, b) => {\n\t\t\t\tconst comparison = a.elementRef.nativeElement.compareDocumentPosition(b.elementRef.nativeElement);\n\t\t\t\tif (comparison & Node.DOCUMENT_POSITION_FOLLOWING) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif (comparison & Node.DOCUMENT_POSITION_PRECEDING) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t});\n\t\tthis.#queryList$ = toObservable(this.#queryList, { injector: this.#injector });\n\t\tthis.#cdkKeyManager = new ActiveDescendantKeyManager(this.#queryList, this.#injector).withHomeAndEnd();\n\t\tthis.#bindClueChange(options.clueChange$);\n\t\tthis.#bindOptionsChange(options);\n\t\tthis.#bindActiveOptionIdChanged(options.activeOptionIdChanged$);\n\t\tthis.#cdkKeyManager.setFirstItemActive();\n\t}\n\n\tonKeydown(event: KeyboardEvent): void {\n\t\tthis.#cdkKeyManager?.onKeydown(event);\n\t}\n\n\tget activeItem(): CoreSelectPanelElement<T> | undefined {\n\t\treturn this.#cdkKeyManager?.activeItem ?? undefined;\n\t}\n\n\tget activeItemIndex(): number {\n\t\treturn this.#cdkKeyManager?.activeItemIndex ?? -1;\n\t}\n\n\tsetActiveItem(index: number): void {\n\t\tthis.#cdkKeyManager?.setActiveItem(index);\n\t}\n\n\tsetActiveItemByElement(item: CoreSelectPanelElement<T>): void {\n\t\tconst index = this.#queryList().indexOf(item);\n\t\tif (index !== -1) {\n\t\t\tthis.#cdkKeyManager?.setActiveItem(index);\n\t\t}\n\t}\n\n\thighlightOption(option: T): void {\n\t\tif (!this.#options) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { optionComparer } = this.#options;\n\n\t\tthis.#queryList$\n\t\t\t.pipe(\n\t\t\t\tobserveOn(asyncScheduler),\n\t\t\t\tmap((options) =>\n\t\t\t\t\toptions.findIndex((el) => {\n\t\t\t\t\t\tconst elOption = el.option();\n\t\t\t\t\t\treturn isNotNil(elOption) && optionComparer(elOption, option);\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\tfilter((index) => index !== -1),\n\t\t\t\ttake(1),\n\t\t\t\ttakeUntilDestroyed(this.#destroyRef),\n\t\t\t)\n\t\t\t.subscribe((selectedIndex) => this.setActiveItem(selectedIndex));\n\t}\n\n\t#bindClueChange(clueChange$: Observable<string>): void {\n\t\tclueChange$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n\t\t\tthis.#hasSearchChanged = true;\n\t\t});\n\t}\n\n\t#bindActiveOptionIdChanged(activeOptionIdChanged$: EventEmitter<string>): void {\n\t\tconst keyManager = this.#cdkKeyManager;\n\t\tif (!keyManager) {\n\t\t\treturn;\n\t\t}\n\n\t\tkeyManager.change\n\t\t\t.pipe(\n\t\t\t\tmap(() => keyManager.activeItem?.idAttribute() ?? ''),\n\t\t\t\ttakeUntilDestroyed(this.#destroyRef),\n\t\t\t)\n\t\t\t.subscribe((activeDescendant) => activeOptionIdChanged$.emit(activeDescendant));\n\t}\n\n\t/**\n\t * Ensure always have the correct highlighted item:\n\t * \t- reset to null if no options\n\t * \t- set to first item if search has changed\n\t * \t- set to first item if no active item\n\t */\n\t#bindOptionsChange({ options }: CoreSelectKeyManagerOptions<T>): void {\n\t\tconst keyManager = this.#cdkKeyManager;\n\t\tif (!keyManager) {\n\t\t\treturn;\n\t\t}\n\n\t\tafterRenderEffect(\n\t\t\t() => {\n\t\t\t\toptions(); // Track option change\n\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tif (this.#queryList().length === 0) {\n\t\t\t\t\t\tkeyManager.setActiveItem(-1);\n\t\t\t\t\t} else if (this.#hasSearchChanged) {\n\t\t\t\t\t\tthis.#hasSearchChanged = false;\n\t\t\t\t\t\tkeyManager.setFirstItemActive();\n\t\t\t\t\t} else if (!keyManager.activeItem) {\n\t\t\t\t\t\tkeyManager.setFirstItemActive();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ injector: this.#injector },\n\t\t);\n\t}\n}\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { computed, Directive, ElementRef, inject, input, linkedSignal, model, OnDestroy, output, signal, untracked } from '@angular/core';\nimport { ALuSelectInputComponent } from '../input/select-input.component';\nimport { CoreSelectKeyManager } from './key-manager';\nimport { CoreSelectPanelInstance, SELECT_PANEL_INSTANCE } from './panel.instance';\n\n@Directive({\n\tselector: '[luCoreSelectPanelElement]',\n\texportAs: 'luCoreSelectPanelElement',\n\thost: {\n\t\t'[class.is-highlighted]': 'isHighlighted()',\n\t\t'(mouseover)': 'onMouseOver($event)',\n\t\trole: 'presentation',\n\t},\n})\nexport class CoreSelectPanelElement<T> implements Highlightable, OnDestroy {\n\treadonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\treadonly #panelRef = inject<CoreSelectPanelInstance<T>>(SELECT_PANEL_INSTANCE);\n\treadonly #keyManager = inject<CoreSelectKeyManager<T>>(CoreSelectKeyManager, { optional: true });\n\n\treadonly #selectRef = inject<ALuSelectInputComponent<T, T>>(ALuSelectInputComponent);\n\n\treadonly id = signal<string>('');\n\n\treadonly elementId = input<string>('');\n\n\treadonly idAttribute = computed(() => this.id() || this.elementId());\n\n\treadonly isSelected = model(false);\n\n\treadonly option = input<T>();\n\n\treadonly disabledInput = input<boolean>(false, { alias: 'disabled' });\n\n\treadonly disabledRef = linkedSignal(() => this.disabledInput());\n\n\treadonly isHighlighted = signal(false);\n\n\tselected = output<void>();\n\n\tget disabled() {\n\t\treturn this.disabledRef();\n\t}\n\n\tset disabled(disabled: boolean) {\n\t\tthis.disabledRef.set(disabled);\n\t}\n\n\tconstructor() {\n\t\tthis.#panelRef.options.set([...this.#panelRef.options(), this]);\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.#panelRef.options.set(this.#panelRef.options().filter((opt) => opt !== this));\n\t}\n\n\tsetActiveStyles(): void {\n\t\tthis.isHighlighted.set(true);\n\t\tconst option = this.option();\n\t\tif (option !== undefined) {\n\t\t\tthis.#selectRef.highlightedOption.emit(option);\n\t\t}\n\t}\n\n\tsetInactiveStyles(): void {\n\t\tthis.isHighlighted.set(false);\n\t}\n\n\tonMouseOver(event: MouseEvent): void {\n\t\tif (!this.#keyManager || this.disabled || !untracked(this.#panelRef.pointerNavigation)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Tree options nest their children inside their own host, so the event bubbles through every\n\t\t// ancestor option. mouseover (unlike mouseenter) re-fires as the pointer moves, so activate\n\t\t// only the option whose own row is directly under the pointer. Keying off the row — and not\n\t\t// the host — mirrors the native `.listboxOption-content:hover`: the gap between nested options\n\t\t// lives in the wrapper, not in any row, so hovering it must not highlight the parent.\n\t\tconst row = (event.target as HTMLElement).closest('.listboxOption-content');\n\t\tif (!row || row.closest('[luCoreSelectPanelElement]') !== this.elementRef.nativeElement) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#keyManager.setActiveItemByElement(this);\n\t}\n}\n","import { Injectable, InjectionToken } from '@angular/core';\nimport { PortalContent } from '@lucca-front/ng/core';\nimport { Observable } from 'rxjs';\n\nexport interface SelectDataSourceParams {\n\tclue: string;\n\tpage: number;\n}\n\nexport interface SelectDataSource<TOption, TGroup = never> {\n\tparamsChange?: Observable<unknown>;\n\t/** Optional debounce in ms for clue-based re-queries (useful for API data sources) */\n\tclueDebounceMs?: number;\n\tgetOptions(params: SelectDataSourceParams): Observable<readonly TOption[]>;\n\tgetTotalCount?(params: SelectDataSourceParams): Observable<number>;\n\tgetGroupOptions?: [TGroup] extends [never] ? never : (group: TGroup) => Observable<TOption[]>;\n\treset?(): void;\n}\n\nexport interface LuOptionContext<T> {\n\t$implicit: T;\n}\n\nexport interface LuOptionGroupByContext<T, TGroup> {\n\t$implicit: LuOptionGroup<T, TGroup>;\n}\n\nexport interface LuOptionGrouping<TOption, TGroup> {\n\tselector: (option: TOption) => TGroup;\n\tcontent: PortalContent<LuOptionGroupByContext<TOption, TGroup>>;\n}\n\nexport interface LuOptionGroup<T, TGroup> {\n\tkey: TGroup;\n\toptions: T[];\n}\n\nexport type LuOptionComparer<T> = (a: T, b: T) => boolean;\n\nexport type CoreSelectAddOptionStrategy = 'never' | 'always' | 'if-empty-clue' | 'if-not-empty-clue';\n\nexport const SELECT_ID = new InjectionToken<number>('LuSelectPanelData');\nexport const SELECT_LABEL = new InjectionToken<HTMLLabelElement | undefined>('LuSelectLabel');\nexport const SELECT_LABEL_ID = new InjectionToken<string>('LuSelectLabelId');\n\nexport interface CoreSelectApiTotalCountProvider {\n\ttotalCount$: Observable<number>;\n}\n\nexport const CORE_SELECT_API_TOTAL_COUNT_PROVIDER = new InjectionToken<CoreSelectApiTotalCountProvider>('CoreSelectApiTotalCountProvider');\n\n@Injectable({\n\tprovidedIn: 'root',\n\tuseFactory: () => new DefaultIsSelectedStrategy(),\n})\nexport abstract class ɵIsSelectedStrategy<TOption> {\n\tabstract isSelected(option: TOption, selectedOptions: TOption[], optionComparer: LuOptionComparer<TOption>): boolean;\n\tabstract isGroupSelected(options: TOption[], notSelectedOptions: TOption[]): boolean;\n}\n\nclass DefaultIsSelectedStrategy<TOption> extends ɵIsSelectedStrategy<TOption> {\n\tisSelected(option: TOption, selectedOptions: TOption[], optionComparer: LuOptionComparer<TOption>): boolean {\n\t\treturn selectedOptions.some((o) => optionComparer(o, option));\n\t}\n\n\tisGroupSelected(options: TOption[], notSelectedOptions: TOption[]): boolean {\n\t\treturn !notSelectedOptions.length && notSelectedOptions.length !== options.length;\n\t}\n}\n","export const Translations = {\n\tfr: {\n\t\tonlyParent: 'Seulement le parent (Ctrl + Entrée)',\n\t\tonlyChildren: 'Seulement les enfants (Shift + Entrée)',\n\t},\n\ten: {\n\t\tonlyParent: 'Only parent (Ctrl + Enter)',\n\t\tonlyChildren: 'Only children (Shift + Enter)',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_OPTION_TRANSLATIONS = new InjectionToken('LuOptionTranslations', {\n\tfactory: () => luOptionTranslations,\n});\n\nexport interface OptionTranslate {\n\tonlyParent: string;\n\tonlyChildren: string;\n}\n\nexport const luOptionTranslations: LuTranslation<OptionTranslate> = Translations;\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, contentChild, ElementRef, inject, Injector, input, OnInit, output, TemplateRef, Type, untracked, viewChild } from '@angular/core';\nimport { intlInputOptions, isNil, luBooleanAttribute, luOptionalNumberAttribute, PortalDirective, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { OptionComponent as ListboxOptionComponent, Treeitem } from '@lucca-front/ng/listbox';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { asyncScheduler, observeOn } from 'rxjs';\nimport { CoreSelectPanelInstance, SELECT_PANEL_INSTANCE } from '../panel/panel.instance';\nimport { GroupTemplateLocation, scrollIntoViewOnceReady } from '../panel/panel.utils';\nimport { CoreSelectPanelElement } from '../panel/selectable-item';\nimport { LuOptionContext, LuOptionGrouping, SELECT_ID } from '../select.model';\nimport { LuOptionGroupPipe } from './group.pipe';\nimport { LuOptionOutletDirective } from './option-outlet.directive';\nimport { LU_OPTION_CONTEXT } from './option.token';\nimport { LU_OPTION_TRANSLATIONS } from './option.translate';\n\n@Component({\n\tselector: 'lu-select-option',\n\ttemplateUrl: './option.component.html',\n\tstyleUrl: './option.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [LuOptionOutletDirective, PortalDirective, LuOptionGroupPipe, LuTooltipTriggerDirective, NgTemplateOutlet, ListboxOptionComponent],\n})\nexport class LuOptionComponent<T> implements OnInit {\n\treadonly #panelRef = inject<CoreSelectPanelInstance<T>>(SELECT_PANEL_INSTANCE);\n\tprotected selectableItem = inject(CoreSelectPanelElement);\n\treadonly intl = input(...intlInputOptions(LU_OPTION_TRANSLATIONS));\n\n\treadonly optionTpl = input<TemplateRef<LuOptionContext<T>> | Type<unknown>>();\n\n\treadonly option = input<T>();\n\n\treadonly grouping = input<LuOptionGrouping<T, unknown>>();\n\n\treadonly hasChildren = input(false, { transform: luBooleanAttribute });\n\n\treadonly onlyParent = output<void>();\n\n\treadonly onlyChildren = output<void>();\n\n\treadonly groupIndex = input(undefined, { transform: luOptionalNumberAttribute });\n\n\tpublic readonly optionIndex = input.required({ transform: (value: string | number) => `${value}` });\n\n\treadonly scrollIntoViewOptions = input<ScrollIntoViewOptions>({});\n\n\treadonly groupTemplateLocation = input<GroupTemplateLocation>();\n\n\t/**\n\t * Present only when the consumer projects nested `[treeitem]` content (tree selects).\n\t * Detected here — and not on the inner `lu-listbox-option` — because Angular content\n\t * queries do not traverse the `ng-content` re-projection boundary.\n\t */\n\treadonly treeitemContent = contentChild(Treeitem);\n\n\treadonly #parentOption = inject<LuOptionComponent<T>>(LuOptionComponent, { skipSelf: true, optional: true });\n\n\t/**\n\t * Depth this option sits at, handed to the listbox option that wraps the projected\n\t * `[treeitem]` children: option indentation is absolute, so the stylesheet cannot work out a\n\t * depth it has no rule for, and every level below its deepest one would share an indentation.\n\t */\n\treadonly level: number = (this.#parentOption?.level ?? 0) + 1;\n\n\treadonly optionContext = viewChild(LU_OPTION_CONTEXT);\n\n\tprivate cdr = inject(ChangeDetectorRef);\n\treadonly #injector = inject(Injector);\n\n\tget id(): string {\n\t\tconst groupPart = this.groupIndex() === undefined ? `` : `-group-${this.groupIndex()}`;\n\n\t\treturn `lu-select-${this.selectId}${groupPart}-option-${this.optionIndex()}`;\n\t}\n\n\tprotected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprotected selectId = inject(SELECT_ID);\n\n\tconstructor() {\n\t\tɵeffectWithDeps([this.selectableItem.isHighlighted], (isHighlighted, onCleanup) => {\n\t\t\tif (isHighlighted && !untracked(this.#panelRef.pointerNavigation)) {\n\t\t\t\t// Wait for the panel layout to settle (opening animation) before scrolling,\n\t\t\t\t// otherwise the browser computes a bogus scroll position.\n\t\t\t\tonCleanup(scrollIntoViewOnceReady(this.elementRef.nativeElement, this.#injector, () => this.scrollIntoViewOptions()));\n\t\t\t}\n\t\t});\n\n\t\tɵeffectWithDeps([this.optionContext], (optionContext, onCleanup) => {\n\t\t\tif (isNil(optionContext)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst subscription = optionContext.isDisabled$.pipe(observeOn(asyncScheduler)).subscribe((isDisabled) => {\n\t\t\t\tthis.selectableItem.disabled = isDisabled;\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t});\n\t\t\tonCleanup(() => subscription.unsubscribe());\n\t\t});\n\t}\n\n\tngOnInit(): void {\n\t\tthis.selectableItem.id.set(this.id);\n\t}\n\n\tselectOption($event: Event): void {\n\t\tif (this.selectableItem.disabled) {\n\t\t\t$event.stopPropagation();\n\t\t}\n\t}\n}\n","<lu-listbox-option\n\t[checked]=\"selectableItem.isSelected()\"\n\t[hovered]=\"selectableItem.isHighlighted()\"\n\t[disabled]=\"selectableItem.disabled\"\n\t(click)=\"selectOption($event)\"\n\t[elementId]=\"selectableItem.idAttribute()\"\n\t[treeitemLevel]=\"treeitemContent() ? level : null\"\n>\n\t<ng-container [ngTemplateOutlet]=\"optionContent\" />\n\t<!-- Re-projected into the option's own wrapper, so the tree rows are stacked by the listbox\n\titself: the level has to be passed along because a content query stops at this ng-content -->\n\t<ng-content select=\"[treeitem]\" ngProjectAs=\"[treeitem]\" />\n</lu-listbox-option>\n\n<ng-template #optionContent>\n\t<div>\n\t\t<ng-container *luOptionOutlet=\"optionTpl(); value: selectableItem.option()\" />\n\n\t\t@if (groupTemplateLocation() === \"option\") {\n\t\t\t@if (grouping(); as grouping) {\n\t\t\t\t<div class=\"listboxOption-content-group\">\n\t\t\t\t\t<ng-container *luPortal=\"grouping.content; context: { $implicit: selectableItem.option() | luOptionGroup: grouping.selector }\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\t</div>\n\n\t@if (hasChildren() && !selectableItem.disabled) {\n\t\t<div class=\"optionItem-icons\">\n\t\t\t<span\n\t\t\t\tclass=\"optionItem-icon parentOnly\"\n\t\t\t\t(click)=\"$event.stopPropagation(); onlyParent.emit()\"\n\t\t\t\t[luTooltip]=\"intl().onlyParent\"\n\t\t\t\tluTooltipOnlyForDisplay\n\t\t\t>\n\t\t\t\t<svg class=\"optionItem-icon-shape\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\n\t\t\t\t\t<path\n\t\t\t\t\t\topacity=\"0.2\"\n\t\t\t\t\t\td=\"M8 13C8.55 13 9 12.55 9 12C9 11.45 8.55 11 8 11C7.45 11 7 11.45 7 12C7 12.55 7.45 13 8 13ZM8 18C8.55 18 9 17.55 9 17C9 16.45 8.55 16 8 16C7.45 16 7 16.45 7 17C7 17.55 7.45 18 8 18ZM12 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H12C11.45 11 11 11.45 11 12C11 12.55 11.45 13 12 13ZM12 18H20C20.55 18 21 17.55 21 17C21 16.45 20.55 16 20 16H12C11.45 16 11 16.45 11 17C11 17.55 11.45 18 12 18ZM8 13C8.55 13 9 12.55 9 12C9 11.45 8.55 11 8 11C7.45 11 7 11.45 7 12C7 12.55 7.45 13 8 13ZM8 18C8.55 18 9 17.55 9 17C9 16.45 8.55 16 8 16C7.45 16 7 16.45 7 17C7 17.55 7.45 18 8 18ZM12 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H12C11.45 11 11 11.45 11 12C11 12.55 11.45 13 12 13ZM12 18H20C20.55 18 21 17.55 21 17C21 16.45 20.55 16 20 16H12C11.45 16 11 16.45 11 17C11 17.55 11.45 18 12 18Z\"\n\t\t\t\t\t/>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M4 8C4.55 8 5 7.55 5 7C5 6.45 4.55 6 4 6C3.45 6 3 6.45 3 7C3 7.55 3.45 8 4 8ZM7 7C7 7.55 7.45 8 8 8H20C20.55 8 21 7.55 21 7C21 6.45 20.55 6 20 6H8C7.45 6 7 6.45 7 7ZM4 8C4.55 8 5 7.55 5 7C5 6.45 4.55 6 4 6C3.45 6 3 6.45 3 7C3 7.55 3.45 8 4 8ZM7 7C7 7.55 7.45 8 8 8H20C20.55 8 21 7.55 21 7C21 6.45 20.55 6 20 6H8C7.45 6 7 6.45 7 7Z\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t\t<span class=\"pr-u-mask\">{{ intl().onlyParent }}</span>\n\t\t\t</span>\n\t\t\t<span\n\t\t\t\tclass=\"optionItem-icon childrenOnly\"\n\t\t\t\t(click)=\"$event.stopPropagation(); onlyChildren.emit()\"\n\t\t\t\t[luTooltip]=\"intl().onlyChildren\"\n\t\t\t\tluTooltipOnlyForDisplay\n\t\t\t>\n\t\t\t\t<svg class=\"optionItem-icon-shape\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M8 13C8.55 13 9 12.55 9 12C9 11.45 8.55 11 8 11C7.45 11 7 11.45 7 12C7 12.55 7.45 13 8 13ZM8 18C8.55 18 9 17.55 9 17C9 16.45 8.55 16 8 16C7.45 16 7 16.45 7 17C7 17.55 7.45 18 8 18ZM12 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H12C11.45 11 11 11.45 11 12C11 12.55 11.45 13 12 13ZM12 18H20C20.55 18 21 17.55 21 17C21 16.45 20.55 16 20 16H12C11.45 16 11 16.45 11 17C11 17.55 11.45 18 12 18ZM8 13C8.55 13 9 12.55 9 12C9 11.45 8.55 11 8 11C7.45 11 7 11.45 7 12C7 12.55 7.45 13 8 13ZM8 18C8.55 18 9 17.55 9 17C9 16.45 8.55 16 8 16C7.45 16 7 16.45 7 17C7 17.55 7.45 18 8 18ZM12 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H12C11.45 11 11 11.45 11 12C11 12.55 11.45 13 12 13ZM12 18H20C20.55 18 21 17.55 21 17C21 16.45 20.55 16 20 16H12C11.45 16 11 16.45 11 17C11 17.55 11.45 18 12 18Z\"\n\t\t\t\t\t/>\n\t\t\t\t\t<path\n\t\t\t\t\t\topacity=\"0.2\"\n\t\t\t\t\t\td=\"M4 8C4.55 8 5 7.55 5 7C5 6.45 4.55 6 4 6C3.45 6 3 6.45 3 7C3 7.55 3.45 8 4 8ZM7 7C7 7.55 7.45 8 8 8H20C20.55 8 21 7.55 21 7C21 6.45 20.55 6 20 6H8C7.45 6 7 6.45 7 7ZM4 8C4.55 8 5 7.55 5 7C5 6.45 4.55 6 4 6C3.45 6 3 6.45 3 7C3 7.55 3.45 8 4 8ZM7 7C7 7.55 7.45 8 8 8H20C20.55 8 21 7.55 21 7C21 6.45 20.55 6 20 6H8C7.45 6 7 6.45 7 7Z\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t\t<span class=\"pr-u-mask\">{{ intl().onlyChildren }}</span>\n\t\t\t</span>\n\t\t</div>\n\t}\n</ng-template>\n","import { Directive, input, TemplateRef } from '@angular/core';\nimport { ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport type { ALuSelectInputComponent } from '../input';\nimport type { LuOptionContext } from '../select.model';\n\n@Directive({\n\tselector: '[luOption]',\n})\nexport class LuOptionDirective<TOption, TValue> {\n\treadonly select = input<ALuSelectInputComponent<TOption, TValue>>(undefined, { alias: 'luOptionSelect' });\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<TOption>>) {\n\t\tɵeffectWithDeps([this.select], (select) => select?.optionTpl.set(this.templateRef));\n\t}\n\n\tpublic static ngTemplateContextGuard<TOption, TValue>(_dir: LuOptionDirective<TOption, TValue>, _ctx: unknown): _ctx is LuOptionContext<TOption> {\n\t\treturn true;\n\t}\n}\n","import { catchError, concatMap, distinctUntilChanged, finalize, map, Observable, of, scan, startWith, switchMap, takeWhile, tap, timer } from 'rxjs';\nimport { SelectDataSource } from '../select.model';\n\nexport interface BuildOptionsFromDataSourceDeps {\n\tnextPage$: Observable<void>;\n\tclue$: Observable<string | null>;\n\tisPanelOpen$: Observable<boolean>;\n\tsetLoading: (loading: boolean) => void;\n}\n\nexport function buildOptionsFromDataSource<TOption>(ds: SelectDataSource<TOption>, deps: BuildOptionsFromDataSourceDeps): Observable<readonly TOption[]> {\n\tconst { nextPage$, clue$, isPanelOpen$, setLoading } = deps;\n\n\tconst page$ = nextPage$.pipe(\n\t\tscan((page) => page + 1, 0),\n\t\tstartWith(0),\n\t);\n\n\tconst normalizedClue$ = clue$.pipe(\n\t\tmap((clue) => clue ?? ''),\n\t\tdistinctUntilChanged(),\n\t);\n\n\t// If a debounce is specified:\n\t// - empty clue ('') passes through immediately (initial state / clear)\n\t// - non-empty clue is debounced (user is typing)\n\tconst debouncedClue$ = ds.clueDebounceMs ? normalizedClue$.pipe(switchMap((clue) => (clue ? timer(ds.clueDebounceMs!).pipe(map(() => clue)) : of(clue)))) : normalizedClue$;\n\n\treturn isPanelOpen$.pipe(\n\t\tdistinctUntilChanged(),\n\t\tswitchMap((isOpen) => {\n\t\t\tif (!isOpen) {\n\t\t\t\treturn of([] as readonly TOption[]);\n\t\t\t}\n\n\t\t\treturn debouncedClue$.pipe(\n\t\t\t\tswitchMap((clue) => {\n\t\t\t\t\tds.reset?.();\n\t\t\t\t\treturn page$.pipe(\n\t\t\t\t\t\tconcatMap((page) => {\n\t\t\t\t\t\t\tsetLoading(true);\n\t\t\t\t\t\t\treturn ds.getOptions({ clue, page }).pipe(\n\t\t\t\t\t\t\t\tcatchError(() => of([] as readonly TOption[])),\n\t\t\t\t\t\t\t\ttap(() => setLoading(false)),\n\t\t\t\t\t\t\t\tstartWith([] as readonly TOption[]),\n\t\t\t\t\t\t\t\tmap((items) => ({ items, page })),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tscan(\n\t\t\t\t\t\t\t(acc, { items, page }) => {\n\t\t\t\t\t\t\t\tacc[page] = items;\n\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{} as Record<number, readonly TOption[]>,\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// Stop calling pages when last two pages are empty\n\t\t\t\t\t\ttakeWhile((pages) => {\n\t\t\t\t\t\t\tconst indexes = Object.keys(pages)\n\t\t\t\t\t\t\t\t.map((p) => parseInt(p))\n\t\t\t\t\t\t\t\t.sort((a, b) => a - b);\n\t\t\t\t\t\t\tconst lastIndexes = indexes.slice(-2);\n\t\t\t\t\t\t\treturn lastIndexes.length < 2 || !lastIndexes.every((i) => pages[i]?.length === 0);\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tmap((pages) => Object.values(pages).flat()),\n\t\t\t\t\t\tfinalize(() => setLoading(false)), // Avoid infinite loading on complete API or error\n\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t);\n\t\t}),\n\t);\n}\n","import { OverlayConfig, OverlayContainer } from '@angular/cdk/overlay';\nimport {\n\tafterNextRender,\n\tChangeDetectorRef,\n\tcomputed,\n\tDirective,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tOnDestroy,\n\tOnInit,\n\toutput,\n\tSignal,\n\tsignal,\n\tTemplateRef,\n\tType,\n\tviewChild,\n} from '@angular/core';\nimport { outputFromObservable, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { isNotNil, luBooleanAttribute, luNumberAttribute, PortalContent, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { FILTER_PILL_HOST_COMPONENT, FILTER_PILL_INPUT_COMPONENT, FilterPillInputComponent } from '@lucca-front/ng/filter-pills';\nimport { BehaviorSubject, defer, finalize, map, of, ReplaySubject, startWith, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { LuSimpleSelectDefaultOptionComponent } from '../option';\nimport { LuSelectPanelRef } from '../panel';\nimport { CoreSelectAddOptionStrategy, LuOptionComparer, LuOptionContext, LuOptionGrouping, SELECT_LABEL, SELECT_LABEL_ID, SelectDataSource, SelectDataSourceParams } from '../select.model';\nimport { LuCoreSelectLabel } from '../select.translate';\nimport { TreeNode } from './model';\nimport { buildOptionsFromDataSource } from './select-input.utils';\nimport { TreeGenerator } from './tree-generator';\n\nexport const coreSelectDefaultOptionComparer: LuOptionComparer<unknown> = (option1, option2) => JSON.stringify(option1) === JSON.stringify(option2);\nexport const coreSelectDefaultOptionKey: (option: unknown) => unknown = (option) => option;\n\n@Directive({\n\thost: {\n\t\t'[class.colorPicker]': 'colorPicker()',\n\t\t'[class.mod-compact]': 'compact()',\n\t\t'[class.is-clearable]': 'isClearable()',\n\t\t'[class.is-selected]': 'isSelectedClass',\n\t\t'[class.is-searchFilled]': 'isSearchFilledClass',\n\t\t'[class.mod-noClueIcon]': 'isNoClueIconClass',\n\t\t'(click)': 'onClickOpenPanel($event)',\n\t\t'(keydown)': 'onKeyDownNavigation($event)',\n\t},\n})\nexport abstract class ALuSelectInputComponent<TOption, TValue> implements OnDestroy, OnInit, ControlValueAccessor, FilterPillInputComponent {\n\tpublic parentInput = inject(FILTER_PILL_INPUT_COMPONENT, { optional: true, skipSelf: true });\n\tprotected changeDetectorRef = inject(ChangeDetectorRef);\n\tprotected overlayContainerRef: HTMLElement = inject(OverlayContainer).getContainerElement();\n\n\tprotected labelElement: HTMLElement | undefined = inject(SELECT_LABEL);\n\tprotected labelId: string = inject(SELECT_LABEL_ID);\n\n\tprotected abstract intl: Signal<LuCoreSelectLabel>;\n\n\tprotected filterPillHost = inject(FILTER_PILL_HOST_COMPONENT, { optional: true });\n\tprotected afterCloseFn?: () => void;\n\tprotected updatePositionFn?: () => void;\n\tpublic filterPillMode = false;\n\n\tpublic readonly ignorePresentation = input(false, { transform: luBooleanAttribute });\n\n\tpublic selectParent$?: Subject<void>;\n\tpublic selectChildren$?: Subject<void>;\n\n\tpublic readonly panelClosed = output<void>();\n\tpublic readonly panelOpened = output<void>();\n\n\tpublic readonly highlightedOption = output<TOption>();\n\n\tprivate readonly inputElementRef = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n\treadonly disabled$ = new BehaviorSubject(false);\n\treadonly filterPillDisabled = toSignal(this.disabled$, { initialValue: false });\n\n\treadonly prefix = input<PortalContent | null>(null);\n\n\treadonly placeholder = input<string>();\n\n\treadonly clearableInput = input<boolean | null>(null, { transform: luBooleanAttribute, alias: 'clearable' });\n\n\treadonly isClearable = computed(() => this.clearableInput() ?? this.#defaultFilterPillClearable() ?? this.#defaultClearable);\n\treadonly #defaultFilterPillClearable = signal<boolean | null>(null);\n\t#defaultClearable = false;\n\n\tget searchable(): boolean {\n\t\treturn this.clueChange$.observed;\n\t}\n\n\tprotected readonly computedAddOptionLabel = computed(() => this.addOptionLabelInput() ?? this.intl().addOption);\n\n\treadonly addOptionLabelInput = input<PortalContent | null>(null, { alias: 'addOptionLabel' });\n\n\tget addOptionLabel(): PortalContent {\n\t\treturn this.computedAddOptionLabel();\n\t}\n\n\treadonly addOptionStrategy = input<CoreSelectAddOptionStrategy>('never');\n\n\tprotected get isSelectedClass(): boolean {\n\t\treturn this.hasValue();\n\t}\n\n\tprotected get isSearchFilledClass(): boolean {\n\t\treturn (this.clue?.length ?? 0) > 0;\n\t}\n\n\tprotected abstract hasValue(): boolean;\n\n\tpublic get isPanelOpen(): boolean {\n\t\treturn this.isPanelOpen$.value;\n\t}\n\n\treadonly isPanelOpen$ = new BehaviorSubject(false);\n\n\t// TODO Might be temporary, check after merging signalize PR\n\treadonly panelOpenSignal = toSignal(this.isPanelOpen$);\n\n\treadonly activeDescendant$ = new BehaviorSubject('');\n\n\tprotected manualOptions$ = new ReplaySubject<readonly TOption[]>(1);\n\n\tget ariaControls(): string {\n\t\treturn this.overlayContainerRef.id;\n\t}\n\n\treadonly overlayConfig = input<OverlayConfig>({ hasBackdrop: true, backdropClass: 'cdk-overlay-transparent-backdrop' });\n\n\treadonly loadingInput = input<boolean>(false, { alias: 'loading' });\n\n\treadonly optionsInput = input<readonly TOption[] | null>(null, { alias: 'options' });\n\n\treadonly optionComparerInput = input<LuOptionComparer<TOption>>(coreSelectDefaultOptionComparer, { alias: 'optionComparer' });\n\n\treadonly optionKeyInput = input<(option: TOption) => unknown>(coreSelectDefaultOptionKey, { alias: 'optionKey' });\n\n\treadonly noClueIcon = input(false, { transform: luBooleanAttribute });\n\n\treadonly inputTabindex = input(0, { transform: luNumberAttribute });\n\n\treadonly compact = input(false, { transform: luBooleanAttribute });\n\n\treadonly colorPicker = input(false, { transform: luBooleanAttribute });\n\n\tprotected get isNoClueIconClass(): boolean {\n\t\treturn this.noClueIcon();\n\t}\n\n\treadonly options = linkedSignal(() => this.optionsInput());\n\treadonly loading = linkedSignal(() => this.loadingInput());\n\treadonly clearable = linkedSignal(() => this.clearableInput());\n\treadonly optionComparer = linkedSignal(() => this.optionComparerInput());\n\treadonly optionKey = linkedSignal(() => this.optionKeyInput());\n\n\treadonly optionTpl = model<TemplateRef<LuOptionContext<TOption>> | Type<unknown>>(LuSimpleSelectDefaultOptionComponent);\n\treadonly valueTpl = model<TemplateRef<LuOptionContext<TOption>> | Type<unknown> | undefined>();\n\treadonly panelHeaderTpl = model<TemplateRef<void> | Type<unknown> | undefined>();\n\treadonly panelFooterTpl = model<TemplateRef<void> | Type<unknown> | undefined>();\n\n\treadonly displayerTpl = computed(() => this.valueTpl() || this.optionTpl());\n\n\treadonly groupingSignal = signal<LuOptionGrouping<TOption, unknown> | undefined>(undefined);\n\n\t/**\n\t * @deprecated use groupingSignal\n\t */\n\tget grouping() {\n\t\treturn this.groupingSignal();\n\t}\n\t/**\n\t * @deprecated use groupingSignal\n\t */\n\tset grouping(grouping: LuOptionGrouping<TOption, unknown> | undefined) {\n\t\tthis.groupingSignal.set(grouping);\n\t}\n\n\ttreeGenerator?: TreeGenerator<TOption, TreeNode<TOption>>;\n\n\treadonly clueChange$ = new Subject<string>();\n\tclueChange = outputFromObservable(this.clueChange$);\n\treadonly nextPage$ = new Subject<void>();\n\tnextPage = outputFromObservable(this.nextPage$);\n\treadonly addOption = output<string>();\n\n\tpublic readonly valueSignal = signal<TValue | null>(null);\n\treadonly isFilterPillEmpty = computed(() => this.valueSignal() === null);\n\treadonly isFilterPillClearable = computed(() => this.isClearable());\n\n\tpublic get value(): TValue | null {\n\t\treturn this._value;\n\t}\n\n\tprotected set value(value: TValue | null) {\n\t\t// TODO remove once migrated to signal, but there's an override\n\t\tthis._value = value;\n\t\tthis.valueSignal.set(value);\n\t\tthis.changeDetectorRef.markForCheck();\n\t}\n\n\tpublic get inputPlaceholder(): string | null | undefined {\n\t\treturn this.value ? null : this.placeholder();\n\t}\n\n\tpublic clueChanged(clue: string, skipPanelOpen = false): void {\n\t\tthis.clue = clue;\n\n\t\tif (!skipPanelOpen && !this.isPanelOpen) {\n\t\t\tthis.openPanel(clue);\n\t\t} else if (this.lastEmittedClue !== clue) {\n\t\t\tthis.clueChange$.next(clue);\n\t\t\tthis.lastEmittedClue = clue;\n\t\t}\n\t}\n\n\tprotected _value: TValue | null = null;\n\n\tprivate getDefaultDataSource(): SelectDataSource<TOption> {\n\t\tlet emittedKeys = new Set<unknown>();\n\n\t\treturn {\n\t\t\tgetOptions: (_params: SelectDataSourceParams) => {\n\t\t\t\tlet lastEmittedThisPage: readonly TOption[] = [];\n\t\t\t\treturn this.manualOptions$.pipe(\n\t\t\t\t\ttap((options) => (lastEmittedThisPage = options)),\n\t\t\t\t\ttakeUntil(this.nextPage$),\n\t\t\t\t\tfinalize(() => (emittedKeys = new Set(lastEmittedThisPage.map((p) => this.optionKey()(p))))),\n\t\t\t\t\tmap((options) => options.filter((c) => !emittedKeys.has(this.optionKey()(c)))),\n\t\t\t\t);\n\t\t\t},\n\t\t\treset() {\n\t\t\t\temittedKeys.clear();\n\t\t\t},\n\t\t};\n\t}\n\n\treadonly dataSource = model<SelectDataSource<TOption, unknown>>(this.getDefaultDataSource());\n\n\treadonly dataSourceOptions = toSignal(\n\t\ttoObservable(this.dataSource).pipe(\n\t\t\tswitchMap((ds) =>\n\t\t\t\tbuildOptionsFromDataSource(ds, {\n\t\t\t\t\tnextPage$: this.nextPage$,\n\t\t\t\t\tclue$: this.clue$,\n\t\t\t\t\tisPanelOpen$: this.isPanelOpen$,\n\t\t\t\t\tsetLoading: (v) => this.loading.set(v),\n\t\t\t\t}),\n\t\t\t),\n\t\t),\n\t\t{ initialValue: [] as readonly TOption[] },\n\t);\n\tclue: string | null = null;\n\t// This is the clue stored after we selected an option to know if we should emit an empty clue on open or not\n\tlastEmittedClue: string = '';\n\treadonly clue$ = defer(() => this.clueChange$.pipe(startWith(this.clue)));\n\n\treadonly shouldDisplayAddOption = toSignal(\n\t\ttoObservable(this.addOptionStrategy).pipe(\n\t\t\tswitchMap((strategy) => {\n\t\t\t\tswitch (strategy) {\n\t\t\t\t\tcase 'always':\n\t\t\t\t\t\treturn of(true);\n\t\t\t\t\tcase 'never':\n\t\t\t\t\t\treturn of(false);\n\t\t\t\t\tcase 'if-empty-clue':\n\t\t\t\t\t\treturn this.clue$.pipe(map((clue) => !clue));\n\t\t\t\t\tcase 'if-not-empty-clue':\n\t\t\t\t\t\treturn this.clue$.pipe(map((clue) => !!clue));\n\t\t\t\t}\n\t\t\t}),\n\t\t),\n\t);\n\n\tprotected onChange?: (value: TValue | null) => void;\n\tprotected onTouched?: () => void;\n\n\tpublic get panelRef(): LuSelectPanelRef<TOption, TValue> | undefined {\n\t\treturn this._panelRef;\n\t}\n\n\tprotected _panelRef?: LuSelectPanelRef<TOption, TValue>;\n\n\tprotected readonly destroyed$ = new Subject<void>();\n\n\tprivate readonly injector = inject(Injector);\n\n\tconstructor() {\n\t\tif (this.filterPillHost) {\n\t\t\tthis.filterPillHost.registerInput(this);\n\t\t}\n\n\t\tɵeffectWithDeps([this.options], (options) => {\n\t\t\tif (isNotNil(options)) {\n\t\t\t\tthis.manualOptions$.next(options);\n\t\t\t}\n\t\t});\n\n\t\t// When options arrive asynchronously via a dataSource, dataSourceOptions changes but options doesn't.\n\t\t// We need to reposition the panel after the DOM updates in both cases.\n\t\tɵeffectWithDeps([this.dataSourceOptions], (_options, onCleanup) => {\n\t\t\tif (isNotNil(this.panelRef)) {\n\t\t\t\tconst ref = afterNextRender(\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.panelRef?.updatePosition();\n\t\t\t\t\t\tthis.updatePositionFn?.();\n\t\t\t\t\t},\n\t\t\t\t\t{ injector: this.injector },\n\t\t\t\t);\n\t\t\t\tonCleanup(() => ref.destroy());\n\t\t\t}\n\t\t});\n\t}\n\n\tonClickOpenPanel($event: Event) {\n\t\tif (!this.isPanelOpen) {\n\t\t\tthis.openPanel();\n\t\t\t$event.stopPropagation();\n\t\t\t$event.preventDefault();\n\t\t}\n\t}\n\n\tonKeyDownNavigation(event: Event): void {\n\t\tconst $event = event as KeyboardEvent;\n\t\tswitch ($event.key) {\n\t\t\tcase 'Escape':\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\t$event.stopPropagation();\n\t\t\t\t}\n\t\t\t\tthis.panelRef?.close();\n\t\t\t\tbreak;\n\t\t\tcase 'Tab':\n\t\t\t\t// If we are in a filterpill, this will close it on tab press, but we want it to not lose any\n\t\t\t\t// displayed stuff and properly close on focus exit\n\t\t\t\tthis.panelRef?.close();\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tif ($event.ctrlKey || $event.shiftKey) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\t// Prevent form submission when selecting a value with Enter\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t\tthis.panelRef?.selectCurrentlyHighlightedValue();\n\t\t\t\t} else {\n\t\t\t\t\tthis.panelRef?.handleKeyManagerEvent($event);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ' ':\n\t\t\tcase 'ArrowDown':\n\t\t\tcase 'ArrowUp':\n\t\t\t\t// Initial space should just open the panel, not trigger a clue change\n\t\t\t\tif (!this.clue && $event.key === ' ') {\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t}\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\tthis.panelRef?.handleKeyManagerEvent($event);\n\t\t\t\t} else {\n\t\t\t\t\tthis.openPanel();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Let the browser handle modifier chords like Ctrl/Cmd+V (paste) or Ctrl/Cmd+C (copy)\n\t\t\t\t// instead of treating the chord's letter (e.g. the \"v\" of Ctrl+V) as typeahead input.\n\t\t\t\t// AltGr (Ctrl+Alt on Windows) is excluded so accented/special characters still work.\n\t\t\t\tif (($event.ctrlKey || $event.metaKey) && !$event.altKey) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// For any other key, forward it to the panel if it's open\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\tthis.panelRef?.handleKeyManagerEvent($event);\n\t\t\t\t} else if ($event.key.length === 1) {\n\t\t\t\t\tthis.openPanel($event.key);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tregisterOnChange(onChange: (value: TValue | null) => void): void {\n\t\tthis.onChange = onChange;\n\t}\n\n\tregisterOnTouched(onTouched: () => void): void {\n\t\tthis.onTouched = onTouched;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabled$.next(isDisabled);\n\t\tthis.changeDetectorRef.markForCheck();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.closePanel();\n\t}\n\n\tngOnInit(): void {\n\t\tif (this.labelElement) {\n\t\t\tthis.labelElement.id = this.labelId;\n\t\t}\n\t}\n\n\tclearValue(event?: Event): void {\n\t\tif (event) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\tthis.updateValue(null, true);\n\t\tthis.inputElementRef()?.nativeElement.focus();\n\t}\n\n\t// Re-entrancy guard: opening the panel (focus, clueChanged, overlay creation) can synchronously\n\t// trigger openPanel again, which used to cause a double tap.\n\t#isOpeningPanel = false;\n\n\topenPanel(clue: string = ''): void {\n\t\tif (this.filterPillMode || this.isPanelOpen || this.disabled$.value || this.#isOpeningPanel) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#isOpeningPanel = true;\n\t\ttry {\n\t\t\tthis.focusInput();\n\n\t\t\tconst isSearchable = this.searchable;\n\t\t\tthis.isPanelOpen$.next(true);\n\t\t\tthis.panelOpened.emit();\n\n\t\t\tif (isSearchable) {\n\t\t\t\tthis.clueChanged(clue);\n\t\t\t}\n\n\t\t\tthis._panelRef = this.buildPanelRef();\n\t\t\tthis.bindInputToPanelRefEvents();\n\t\t} finally {\n\t\t\tthis.#isOpeningPanel = false;\n\t\t}\n\t}\n\n\temitAddOption(): void {\n\t\tthis.addOption.emit(this.clue ?? '');\n\t\tthis.panelRef?.close();\n\t}\n\n\tprotected abstract buildPanelRef(): this['panelRef'];\n\n\tprotected bindInputToPanelRefEvents(): void {\n\t\tif (!this.panelRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.panelRef.valueChanged.subscribe((value) => this.updateValue(value));\n\t\tthis.panelRef.nextPage.subscribe(() => this.nextPage$.next());\n\n\t\tthis.panelRef.activeOptionIdChanged.subscribe((optionId) => {\n\t\t\tthis.activeDescendant$.next(optionId);\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t});\n\t\tthis.panelRef.closed.subscribe(() => this.closePanel());\n\t}\n\n\tfocusInput(): void {\n\t\tif (this.inputElementRef()) {\n\t\t\tthis.inputElementRef()?.nativeElement.focus();\n\t\t}\n\t}\n\n\tprotected emptyClue(): void {\n\t\tif (this.clue) {\n\t\t\tthis.clue = null;\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t}\n\t}\n\n\tpublic closePanel(): void {\n\t\tthis.dataSource().reset?.();\n\n\t\tif (!this.isPanelOpen) {\n\t\t\treturn;\n\t\t}\n\t\tthis.panelClosed.emit();\n\t\tthis.emptyClue();\n\t\tthis.activeDescendant$.next('');\n\t\tthis.changeDetectorRef.markForCheck();\n\t\tthis.onTouched?.();\n\t\tif (!this.filterPillMode) {\n\t\t\tthis.isPanelOpen$.next(false);\n\t\t\tthis.panelRef?.close();\n\t\t\tthis._panelRef = undefined;\n\t\t\tthis.focusInput();\n\t\t}\n\t\tthis.afterCloseFn?.();\n\t}\n\n\tpublic writeValue(value: TValue | null): void {\n\t\tthis.value = value;\n\t}\n\n\tpublic updateValue(value: TValue | null, skipPanelOpen = false, noClear = false): void {\n\t\tthis.value = value;\n\t\tif (!noClear) {\n\t\t\tthis.emptyClue();\n\t\t\tthis.clueChanged('', skipPanelOpen);\n\t\t}\n\t\tthis.onChange?.(value);\n\t\tthis.onTouched?.();\n\t}\n\n\t// Filter pill interface\n\tclearFilterPillValue(): void {\n\t\tthis.clearValue();\n\t}\n\n\tregisterFilterPillClosePopover(closeFn: () => void): void {\n\t\tthis.afterCloseFn = closeFn;\n\t}\n\n\tregisterFilterPillUpdatePosition(updatePositionFn: () => void): void {\n\t\tthis.updatePositionFn = updatePositionFn;\n\t}\n\n\tenableFilterPillMode() {\n\t\tthis.filterPillMode = true;\n\t\tthis.#defaultFilterPillClearable.set(true);\n\t\tthis._panelRef?.closed.subscribe(this.afterCloseFn);\n\t\tthis.bindInputToPanelRefEvents();\n\t}\n\n\tonFilterPillOpened(): void {\n\t\tthis.isPanelOpen$.next(true);\n\t}\n\n\tonFilterPillClosed(): void {\n\t\tthis.isPanelOpen$.next(false);\n\t}\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { ElementRef, Provider, inject } from '@angular/core';\nimport { SELECT_ID, SELECT_LABEL, SELECT_LABEL_ID } from '../select.model';\n\nlet selectId = 0;\n\nfunction selectIdFactory(): number {\n\treturn selectId++;\n}\n\nfunction selectLabelFactory(): HTMLLabelElement | undefined {\n\tconst elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tfunction getLabel(node: HTMLElement): HTMLLabelElement | undefined {\n\t\tif (node instanceof HTMLLabelElement) {\n\t\t\treturn node;\n\t\t}\n\n\t\tif (!node.parentElement) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn getLabel(node.parentElement);\n\t}\n\n\treturn getLabel(elementRef.nativeElement);\n}\n\nfunction selectLabelIdFactory(): string {\n\treturn inject(SELECT_LABEL)?.id || `lu-select-label-${inject(SELECT_ID)}`;\n}\n\nexport function provideLuSelectLabelsAndIds(): Provider[] {\n\treturn [\n\t\t{ provide: SELECT_ID, useFactory: selectIdFactory },\n\t\t{ provide: SELECT_LABEL, useFactory: selectLabelFactory },\n\t\t{ provide: SELECT_LABEL_ID, useFactory: selectLabelIdFactory },\n\t];\n}\n\nexport function addAttributesOnCdkContainer(overlayRef: OverlayRef, selectLabelId: string, selectId: number) {\n\tconst potentialCdkOverlayContainer = overlayRef?.overlayElement?.parentElement?.parentElement;\n\tif (potentialCdkOverlayContainer && potentialCdkOverlayContainer.className.includes('cdk-overlay-container')) {\n\t\tpotentialCdkOverlayContainer.setAttribute('aria-labelledby', selectLabelId);\n\t\tpotentialCdkOverlayContainer.id = `lu-select-overlay-container-${selectId}`;\n\t}\n}\n","import { Directive, forwardRef, input } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { CORE_SELECT_API_TOTAL_COUNT_PROVIDER, CoreSelectApiTotalCountProvider } from '../select.model';\n\n@Directive({\n\t// The attribute is already prefixed with \"lu-simple-select\"\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[totalCount],lu-multi-select[totalCount]',\n\tproviders: [\n\t\t{\n\t\t\tprovide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,\n\t\t\tuseExisting: forwardRef(() => LuCoreSelectTotalCountDirective),\n\t\t},\n\t],\n})\nexport class LuCoreSelectTotalCountDirective implements CoreSelectApiTotalCountProvider {\n\treadonly totalCount = input.required<number>({ alias: 'totalCount' });\n\n\treadonly totalCount$ = toObservable(this.totalCount);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TreeGenerator } from './tree-generator';\nimport { TreeNode } from './model';\n\n@Pipe({\n\tname: 'luTreeDisplay',\n\tpure: true,\n})\nexport class TreeDisplayPipe<T> implements PipeTransform {\n\ttransform(items: T[], treeGenerator: TreeGenerator<T, TreeNode<T>>): TreeNode<T>[] {\n\t\treturn treeGenerator.generateTrees(items);\n\t}\n}\n","import { Directive, inject } from '@angular/core';\nimport { ALuSelectInputComponent } from '../input/index';\n\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[noClue],lu-multi-select[noClue]',\n})\nexport class LuCoreSelectNoClueDirective {\n\tconstructor() {\n\t\tinject(ALuSelectInputComponent).clueChange$.complete();\n\t}\n}\n","import { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, input, output, ViewEncapsulation } from '@angular/core';\n\n/**\n * Shared floating surface for the simple/multi select panels.\n *\n * Carries the popover surface (elevation, scroll viewport, positioning) that used to live on the\n * deprecated `.lu-picker-panel` / `.lu-picker-content` styles, so panels no longer depend on them.\n * The projected content (a `lu-listbox`, an \"add option\" row, a footer…) is laid out inside the\n * scrollable content area.\n */\n@Component({\n\tselector: 'lu-select-panel-layout',\n\ttemplateUrl: './panel-layout.component.html',\n\tstyleUrl: './panel-layout.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'lu-select-panel-layout',\n\t},\n\timports: [CdkTrapFocus],\n})\nexport class LuSelectPanelLayoutComponent {\n\t/** Applies the `is-loading` state on the scroll content while options are being fetched. */\n\treadonly loading = input(false, { transform: booleanAttribute });\n\n\t/** Enables a focus trap on the scroll content (used by the single select panel). */\n\treadonly trapFocus = input(false, { transform: booleanAttribute });\n\n\t/** `tabindex` to set on the scroll content, or `null` to leave it non-focusable. */\n\treadonly contentTabIndex = input<number | null>(null);\n\n\t/** Emitted when the scroll content is scrolled (used to trigger pagination). */\n\treadonly scrolled = output<Event>();\n}\n","<div\n\tclass=\"lu-select-panel-layout-content\"\n\t[class.is-loading]=\"loading()\"\n\t[attr.tabindex]=\"contentTabIndex()\"\n\t[cdkTrapFocus]=\"trapFocus()\"\n\t(scroll)=\"scrolled.emit($event)\"\n>\n\t<ng-content />\n</div>\n","import { Directive, TemplateRef, effect, inject, input, untracked } from '@angular/core';\nimport { ALuSelectInputComponent } from '../input';\n\n@Directive({\n\tselector: '[luSelectPanelHeader]',\n})\nexport class LuCoreSelectPanelHeaderDirective {\n\treadonly templateRef = inject<TemplateRef<void>>(TemplateRef);\n\n\treadonly select = input.required<ALuSelectInputComponent<unknown, unknown> | ALuSelectInputComponent<unknown, unknown[]>>({ alias: 'luSelectPanelHeader' });\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst select = this.select();\n\t\t\tuntracked(() => select.panelHeaderTpl.set(this.templateRef));\n\t\t});\n\t}\n\n\tpublic static ngTemplateContextGuard(_dir: LuCoreSelectPanelHeaderDirective, _ctx: unknown): _ctx is void {\n\t\treturn true;\n\t}\n}\n","import { EventEmitter } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport abstract class LuSelectPanelRef<TOption, TValue> {\n\tclosed = new EventEmitter<void>();\n\tnextPage = new EventEmitter<void>();\n\tvalueChanged = new EventEmitter<TValue>();\n\tclueChanged = new EventEmitter<string>();\n\tactiveOptionIdChanged = new EventEmitter<string>();\n\toptions$: Observable<TOption>;\n\n\tabstract updatePosition(): void;\n\n\tabstract handleKeyManagerEvent(event: KeyboardEvent): void;\n\n\tabstract emitValue(value: TValue): void;\n\n\tabstract selectCurrentlyHighlightedValue(): void;\n\n\tclose(): void {\n\t\tthis.closed.next();\n\t\tthis.closed.complete();\n\t\tthis.nextPage.complete();\n\t\tthis.valueChanged.complete();\n\t\tthis.clueChanged.emit('');\n\t\tthis.clueChanged.complete();\n\t\tthis.activeOptionIdChanged.complete();\n\t}\n}\n","import { DestroyRef, DOCUMENT, inject, NgZone, Signal, signal, untracked } from '@angular/core';\n\n/**\n * Tracks whether the user is currently navigating with the pointer or with the keyboard.\n *\n * Both listeners are registered natively and outside of the Angular zone, and the signal is only\n * written when the value actually changes: `mousemove` fires on every frame the mouse moves, and\n * going through Angular's event system there schedules a change detection run each time — for a\n * value that almost never changes.\n *\n * `scope` bounds pointer navigation to an element — pass the panel host. Moving the mouse anywhere\n * else on the page then doesn't drop the keyboard highlight, and leaving the scope switches back to\n * keyboard navigation: pointer mode paints the active item through `:hover` alone, which vanishes\n * with the pointer, whereas the key manager keeps that item active and keyboard navigation resumes\n * from it. `keydown` always listens on the document, since focus stays on the input, outside of the\n * panel.\n *\n * Must be called from an injection context.\n */\nexport function injectPointerNavigation(scope?: HTMLElement): Signal<boolean> {\n\tconst document = inject(DOCUMENT);\n\tconst ngZone = inject(NgZone);\n\tconst pointerNavigation = signal(false);\n\n\tconst abortController = new AbortController();\n\tinject(DestroyRef).onDestroy(() => abortController.abort());\n\n\tngZone.runOutsideAngular(() => {\n\t\tconst options: AddEventListenerOptions = { passive: true, signal: abortController.signal };\n\n\t\t(scope ?? document).addEventListener(\n\t\t\t'mousemove',\n\t\t\t() => {\n\t\t\t\tif (!untracked(pointerNavigation)) {\n\t\t\t\t\tpointerNavigation.set(true);\n\t\t\t\t}\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\n\t\tscope?.addEventListener(\n\t\t\t'mouseleave',\n\t\t\t() => {\n\t\t\t\tif (untracked(pointerNavigation)) {\n\t\t\t\t\tpointerNavigation.set(false);\n\t\t\t\t}\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\n\t\tdocument.addEventListener(\n\t\t\t'keydown',\n\t\t\t() => {\n\t\t\t\tif (untracked(pointerNavigation)) {\n\t\t\t\t\tpointerNavigation.set(false);\n\t\t\t\t}\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\t});\n\n\treturn pointerNavigation.asReadonly();\n}\n","export const Translations = {\n\t'nl-BE': {\n\t\taddOption: 'Een optie toevoegen',\n\t},\n\tnl: {\n\t\taddOption: 'Een optie toevoegen',\n\t},\n\tit: {\n\t\taddOption: 'Aggiungere un’opzione',\n\t},\n\tfr: {\n\t\taddOption: 'Ajouter une option',\n\t},\n\tpt: {\n\t\taddOption: 'Adicionar opção',\n\t},\n\tes: {\n\t\taddOption: 'Añadir una opción',\n\t},\n\tde: {\n\t\taddOption: 'Option hinzufügen',\n\t},\n\ten: {\n\t\taddOption: 'Add option',\n\t},\n\tpl: {\n\t\taddOption: 'Dodaj opcję',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_CORE_SELECT_TRANSLATIONS = new InjectionToken('LuCoreSelectTranslations', {\n\tfactory: () => luCoreSelectTranslations,\n});\n\nexport interface LuCoreSelectLabel {\n\taddOption: string;\n}\n\nexport const luCoreSelectTranslations: LuTranslation<LuCoreSelectLabel> = Translations;\n","export const applySearchDelimiter = (clue: string, delimiter: string): string => clue.split(' ').join(delimiter);\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { LuOptionComparer, ɵIsSelectedStrategy } from './select.model';\n\n@Pipe({\n\tname: 'luIsOptionSelected',\n})\nexport class LuIsOptionSelectedPipe<T> implements PipeTransform {\n\t#selectionStrategy = inject<ɵIsSelectedStrategy<T>>(ɵIsSelectedStrategy);\n\n\ttransform(option: T, comparer: LuOptionComparer<T>, selectedOptions: T[]): boolean {\n\t\treturn this.#selectionStrategy.isSelected(option, selectedOptions, comparer);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵeffectWithDeps","Translations","ListboxOptionComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lucca-front-ng-core-select.mjs","sources":["../../../packages/ng/core-select/displayer/displayer.directive.ts","../../../packages/ng/core-select/option/option.token.ts","../../../packages/ng/core-select/option/default-option.component.ts","../../../packages/ng/core-select/option/default-option.component.html","../../../packages/ng/core-select/option/disabled.directive.ts","../../../packages/ng/core-select/option/group.directive.ts","../../../packages/ng/core-select/option/group.pipe.ts","../../../packages/ng/core-select/option/option-outlet.directive.ts","../../../packages/ng/core-select/panel/panel.instance.ts","../../../packages/ng/core-select/panel/panel.utils.ts","../../../packages/ng/core-select/panel/key-manager.ts","../../../packages/ng/core-select/panel/selectable-item.ts","../../../packages/ng/core-select/select.model.ts","../../../packages/ng/core-select/option/translations.ts","../../../packages/ng/core-select/option/option.translate.ts","../../../packages/ng/core-select/option/option.component.ts","../../../packages/ng/core-select/option/option.component.html","../../../packages/ng/core-select/option/option.directive.ts","../../../packages/ng/core-select/input/select-input.utils.ts","../../../packages/ng/core-select/input/select-input.component.ts","../../../packages/ng/core-select/input/select-input.models.ts","../../../packages/ng/core-select/input/total-count.directive.ts","../../../packages/ng/core-select/input/tree-display.pipe.ts","../../../packages/ng/core-select/no-clue/no-clue.directive.ts","../../../packages/ng/core-select/panel/panel-layout/panel-layout.component.ts","../../../packages/ng/core-select/panel/panel-layout/panel-layout.component.html","../../../packages/ng/core-select/panel/panel-header-template.directive.ts","../../../packages/ng/core-select/panel/panel.models.ts","../../../packages/ng/core-select/panel/pointer-navigation.ts","../../../packages/ng/core-select/translations.ts","../../../packages/ng/core-select/select.translate.ts","../../../packages/ng/core-select/select.utils.ts","../../../packages/ng/core-select/option-selected.pipe.ts","../../../packages/ng/core-select/lucca-front-ng-core-select.ts"],"sourcesContent":["import { Directive, input, TemplateRef } from '@angular/core';\nimport { syncInputSignal } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent } from '../input';\nimport { LuOptionContext } from '../select.model';\n\n@Directive({\n\tselector: '[luDisplayer]',\n})\nexport class LuDisplayerDirective<TOption, TValue> {\n\treadonly select = input<ALuSelectInputComponent<TOption, TValue>>(undefined, { alias: 'luDisplayerSelect' });\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<TOption>>) {\n\t\tsyncInputSignal(this.select, (select) => select.valueTpl.set(this.templateRef));\n\t}\n\n\tpublic static ngTemplateContextGuard<TOption, TValue>(_dir: LuDisplayerDirective<TOption, TValue>, _ctx: unknown): _ctx is LuOptionContext<TOption> {\n\t\treturn true;\n\t}\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport interface ILuOptionContext<T> {\n\tisDisabled$: BehaviorSubject<boolean>;\n\toption$: BehaviorSubject<T | undefined>;\n\tdestroy(): void;\n}\n\nexport const LU_OPTION_CONTEXT = new InjectionToken<ILuOptionContext<unknown>>('LuOptionContext');\n\nfunction optionContextFactory<T>(): ILuOptionContext<T> {\n\tconst isDisabled$ = new BehaviorSubject(false);\n\tconst option$ = new BehaviorSubject<T | undefined>(undefined);\n\treturn {\n\t\tisDisabled$,\n\t\toption$,\n\t\tdestroy(): void {\n\t\t\tisDisabled$.complete();\n\t\t\toption$.complete();\n\t\t},\n\t};\n}\n\nexport function provideOptionContext(): Provider {\n\treturn {\n\t\tprovide: LU_OPTION_CONTEXT,\n\t\tuseFactory: optionContextFactory,\n\t};\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from './option.token';\n\n@Component({\n\tselector: 'lu-core-select-default-option',\n\timports: [AsyncPipe],\n\ttemplateUrl: './default-option.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuSimpleSelectDefaultOptionComponent {\n\tpublic context = inject<ILuOptionContext<{ name?: string }>>(LU_OPTION_CONTEXT);\n}\n","<!-- we don’t want space before comma in presentation display -->\n<!-- prettier-ignore -->\n@if (context.option$ | async; as option) {{{ option?.name ?? option }}}\n","import { Directive, inject, input } from '@angular/core';\nimport { syncInputSignal } from '@lucca-front/ng/core';\nimport { LU_OPTION_CONTEXT } from './option.token';\n\n@Directive({\n\tselector: '[luDisabledOption]',\n})\nexport class LuDisabledOptionDirective {\n\treadonly isDisabled = input<boolean>(undefined, { alias: 'luDisabledOption' });\n\n\tprivate context = inject(LU_OPTION_CONTEXT);\n\n\tconstructor() {\n\t\tsyncInputSignal(this.isDisabled, (disabled) => this.context.isDisabled$.next(disabled));\n\t}\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\nimport { ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport type { ALuSelectInputComponent } from '../input';\nimport type { LuOptionGroupByContext } from '../select.model';\n\n@Directive({\n\tselector: '[luOptionGroup]',\n})\nexport class LuOptionGroupDirective<TOption, TValue, TGroup> {\n\treadonly select = input.required<ALuSelectInputComponent<TOption, TValue>>({ alias: 'luOptionGroupSelect' });\n\n\treadonly selector = input.required<(option: TOption) => TGroup>({ alias: 'luOptionGroupBy' });\n\n\treadonly content = inject<TemplateRef<LuOptionGroupByContext<TOption, TGroup>>>(TemplateRef);\n\n\tpublic static ngTemplateContextGuard<TOption, TValue, TGroup>(_dir: LuOptionGroupDirective<TOption, TValue, TGroup>, _ctx: unknown): _ctx is LuOptionGroupByContext<TOption, TGroup> {\n\t\treturn true;\n\t}\n\n\tconstructor() {\n\t\tɵeffectWithDeps([this.select, this.selector], (select, selector) => {\n\t\t\tselect.groupingSignal.set({ selector, content: this.content });\n\t\t});\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LuOptionGroup } from '../select.model';\n\n/**\n * Generate groups with a O(n) complexity. Note that the options must be sorted by group.\n */\nexport function generateGroups<T, TGroup>(options: T[], selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>[] {\n\tif (!options?.length) {\n\t\treturn [];\n\t}\n\n\tconst groups: Array<LuOptionGroup<T, TGroup>> = [];\n\tlet group: LuOptionGroup<T, TGroup> | undefined;\n\n\tfor (const option of options) {\n\t\tconst groupKey = selector(option);\n\t\tif (!group || group.key !== groupKey) {\n\t\t\tif (group) {\n\t\t\t\tgroups.push(group);\n\t\t\t}\n\t\t\tgroup = { key: groupKey, options: [option] };\n\t\t} else {\n\t\t\tgroup.options.push(option);\n\t\t}\n\t}\n\n\tif (group) {\n\t\tgroups.push(group);\n\t}\n\n\treturn groups;\n}\n\n@Pipe({\n\tname: 'luOptionGroup',\n})\nexport class LuOptionGroupPipe<T, TGroup> implements PipeTransform {\n\tpublic transform(options: T[], selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>[];\n\tpublic transform(options: T, selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>;\n\tpublic transform(options: T[] | T, selector: (option: T) => TGroup): LuOptionGroup<T, TGroup>[] | LuOptionGroup<T, TGroup> {\n\t\treturn Array.isArray(options) ? generateGroups(options, selector) : generateGroups([options], selector)[0];\n\t}\n}\n","import { ComponentRef, Directive, EmbeddedViewRef, inject, Injector, input, OnDestroy, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { isNotNil, luBooleanAttribute, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { LuOptionContext } from '../select.model';\nimport { LU_OPTION_CONTEXT, provideOptionContext } from './option.token';\n\nfunction hasRenderableValue<T>(value: T | undefined, showNull: boolean): value is T {\n\treturn showNull ? value !== undefined : isNotNil(value);\n}\n\n@Directive({\n\tselector: '[luOptionOutlet]',\n\tproviders: [provideOptionContext()],\n})\nexport class LuOptionOutletDirective<T> implements OnDestroy {\n\treadonly luOptionOutlet = input<Type<unknown> | TemplateRef<LuOptionContext<T>>>();\n\n\treadonly luOptionOutletValue = input<T | undefined>();\n\n\treadonly luOptionShowNull = input(false, { transform: luBooleanAttribute });\n\n\tprivate viewContainerRef = inject(ViewContainerRef);\n\tprivate injector = inject(Injector);\n\tprivate embeddedViewRef?: EmbeddedViewRef<LuOptionContext<T>>;\n\tprivate componentRef?: ComponentRef<unknown>;\n\tprivate optionContext = inject(LU_OPTION_CONTEXT);\n\n\tconstructor() {\n\t\tlet previousOutlet: Type<unknown> | TemplateRef<LuOptionContext<T>> | undefined;\n\n\t\tɵeffectWithDeps([this.luOptionOutlet, this.luOptionOutletValue, this.luOptionShowNull], (outlet, value, showNull) => {\n\t\t\tconst outletChanged = outlet !== previousOutlet;\n\t\t\tpreviousOutlet = outlet;\n\n\t\t\tif (outletChanged || !hasRenderableValue(value, showNull)) {\n\t\t\t\tthis.clearContainer();\n\t\t\t}\n\n\t\t\tif (outlet && hasRenderableValue(value, showNull)) {\n\t\t\t\tif (!(this.embeddedViewRef || this.componentRef)) {\n\t\t\t\t\tif (outlet instanceof TemplateRef) {\n\t\t\t\t\t\tthis.embeddedViewRef = this.viewContainerRef.createEmbeddedView(outlet, { $implicit: value }, { injector: this.injector });\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.optionContext.option$.next(value);\n\t\t\t\t\t\tthis.componentRef = this.viewContainerRef.createComponent(outlet, { injector: this.injector });\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (this.embeddedViewRef) {\n\t\t\t\t\t\tthis.embeddedViewRef.context.$implicit = value;\n\t\t\t\t\t} else if (this.componentRef) {\n\t\t\t\t\t\tthis.optionContext.option$.next(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.optionContext.destroy();\n\t}\n\n\tprivate clearContainer(): void {\n\t\tthis.viewContainerRef.clear();\n\t\tthis.embeddedViewRef?.destroy();\n\t\tthis.componentRef?.destroy();\n\t\tthis.embeddedViewRef = undefined;\n\t\tthis.componentRef = undefined;\n\t}\n\n\tpublic static ngTemplateContextGuard<T>(_dir: LuOptionOutletDirective<T>, _ctx: unknown): _ctx is void {\n\t\treturn true;\n\t}\n}\n","import { InjectionToken, Signal, WritableSignal } from '@angular/core';\nimport { CoreSelectPanelElement } from './selectable-item';\n\nexport interface CoreSelectPanelInstance<T = unknown> {\n\toptions: WritableSignal<CoreSelectPanelElement<T>[]>;\n\tpointerNavigation: Signal<boolean>;\n}\n\nexport const SELECT_PANEL_INSTANCE = new InjectionToken<CoreSelectPanelInstance>('CoreSelect:PanelInstance');\n","import { afterNextRender, Injector, Signal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, map, of, skip, startWith, switchMap, take } from 'rxjs';\n\n/**\n * Scrolls an element into view once its layout has settled.\n *\n * When a select panel opens, its opening animation (scale transform) makes the element's visual\n * geometry differ from its layout geometry; calling scrollIntoView at that point makes the browser\n * compute a bogus scroll position (e.g. the panel opens scrolled partway down). This waits, frame\n * by frame, until the element's visual height is stable before scrolling.\n *\n * Returns a cancel function to abort the pending scroll (e.g. when the highlight moves elsewhere).\n */\nexport function scrollIntoViewOnceReady(element: HTMLElement, injector: Injector, options?: () => ScrollIntoViewOptions | undefined): () => void {\n\tlet rafId: number | null = null;\n\tlet lastHeight = -1;\n\n\tconst renderRef = afterNextRender(\n\t\t() => {\n\t\t\tconst tryScroll = () => {\n\t\t\t\trafId = null;\n\t\t\t\tif (!element.isConnected) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { height } = element.getBoundingClientRect();\n\t\t\t\tif (height > 0 && height === lastHeight) {\n\t\t\t\t\telement.scrollIntoView(options?.());\n\t\t\t\t} else {\n\t\t\t\t\tlastHeight = height;\n\t\t\t\t\trafId = requestAnimationFrame(tryScroll);\n\t\t\t\t}\n\t\t\t};\n\t\t\ttryScroll();\n\t\t},\n\t\t{ injector },\n\t);\n\n\treturn () => {\n\t\trenderRef.destroy();\n\t\tif (rafId !== null) {\n\t\t\tcancelAnimationFrame(rafId);\n\t\t}\n\t};\n}\n\nexport type GroupTemplateLocation = 'group-header' | 'option' | 'none';\n\n/**\n * In order to avoid a blinking (and a stale option list rendered under the wrong layout)\n * when we go from an empty clue to a clue — or back — we delay switching the group displayer\n * location until the options have actually been updated. We keep showing `group-header` while\n * the options are being (re)fetched, then flip to the final location on the next options emission.\n */\nexport function getGroupTemplateLocation(hasGrouping: Signal<boolean>, clue: Signal<string>, options: Signal<readonly unknown[]>, searchable = true): Signal<GroupTemplateLocation> {\n\t// `toObservable` must run in an injection context, so convert every signal up front\n\t// (this function is called during panel construction) rather than lazily inside `switchMap`.\n\tconst hasGrouping$ = toObservable(hasGrouping);\n\tconst clue$ = toObservable(clue);\n\tconst options$ = toObservable(options);\n\n\t// Wait for the options to update (skip the current, stale emission and take the next one)\n\t// before committing to the target location; meanwhile hold on `group-header`.\n\tconst locationOnceOptionsUpdate$ = (hasClue: boolean) =>\n\t\toptions$.pipe(\n\t\t\tskip(1),\n\t\t\ttake(1),\n\t\t\tmap((): GroupTemplateLocation => (hasClue ? 'option' : 'group-header')),\n\t\t\tstartWith('group-header' as const satisfies GroupTemplateLocation),\n\t\t);\n\n\tconst location$ = hasGrouping$.pipe(\n\t\tswitchMap((grouping) => {\n\t\t\tif (!grouping) {\n\t\t\t\treturn of<GroupTemplateLocation>('none');\n\t\t\t}\n\n\t\t\treturn searchable\n\t\t\t\t? clue$.pipe(\n\t\t\t\t\t\tmap((value) => !!value),\n\t\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\t\tswitchMap(locationOnceOptionsUpdate$),\n\t\t\t\t\t)\n\t\t\t\t: locationOnceOptionsUpdate$(false);\n\t\t}),\n\t);\n\n\treturn toSignal(location$, { initialValue: hasGrouping() ? 'group-header' : 'none' });\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { afterRenderEffect, computed, DestroyRef, EventEmitter, inject, Injectable, Injector, Signal, untracked } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { isNotNil } from '@lucca-front/ng/core';\nimport { asyncScheduler, filter, map, Observable, observeOn, take } from 'rxjs';\nimport { LuOptionComparer } from '../select.model';\nimport { CoreSelectPanelElement } from './selectable-item';\n\ninterface CoreSelectKeyManagerOptions<T> {\n\tqueryList: Signal<readonly CoreSelectPanelElement<T>[]>;\n\toptions: Signal<readonly T[]>;\n\toptionComparer: LuOptionComparer<T>;\n\tactiveOptionIdChanged$: EventEmitter<string>;\n\tclueChange$: Observable<string>;\n}\n\n@Injectable()\nexport class CoreSelectKeyManager<T> {\n\t#destroyRef = inject(DestroyRef);\n\t#cdkKeyManager?: ActiveDescendantKeyManager<CoreSelectPanelElement<T>>;\n\t#hasSearchChanged = false;\n\t#options?: CoreSelectKeyManagerOptions<T>;\n\t#injector = inject(Injector);\n\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\n\t#queryList: Signal<CoreSelectPanelElement<T>[]>;\n\t#queryList$: Observable<CoreSelectPanelElement<T>[]>;\n\n\tinit(options: CoreSelectKeyManagerOptions<T>): void {\n\t\tthis.#options = options;\n\t\tthis.#queryList = computed(() => {\n\t\t\treturn [...options.queryList()].sort((a, b) => {\n\t\t\t\tconst comparison = a.elementRef.nativeElement.compareDocumentPosition(b.elementRef.nativeElement);\n\t\t\t\tif (comparison & Node.DOCUMENT_POSITION_FOLLOWING) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif (comparison & Node.DOCUMENT_POSITION_PRECEDING) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t});\n\t\tthis.#queryList$ = toObservable(this.#queryList, { injector: this.#injector });\n\t\tthis.#cdkKeyManager = new ActiveDescendantKeyManager(this.#queryList, this.#injector).withHomeAndEnd();\n\t\tthis.#bindClueChange(options.clueChange$);\n\t\tthis.#bindOptionsChange(options);\n\t\tthis.#bindActiveOptionIdChanged(options.activeOptionIdChanged$);\n\t\tthis.#cdkKeyManager.setFirstItemActive();\n\t}\n\n\tonKeydown(event: KeyboardEvent): void {\n\t\tthis.#cdkKeyManager?.onKeydown(event);\n\t}\n\n\tget activeItem(): CoreSelectPanelElement<T> | undefined {\n\t\treturn this.#cdkKeyManager?.activeItem ?? undefined;\n\t}\n\n\tget activeItemIndex(): number {\n\t\treturn this.#cdkKeyManager?.activeItemIndex ?? -1;\n\t}\n\n\tsetActiveItem(index: number): void {\n\t\tthis.#cdkKeyManager?.setActiveItem(index);\n\t}\n\n\tsetActiveItemByElement(item: CoreSelectPanelElement<T>): void {\n\t\tconst index = this.#queryList().indexOf(item);\n\t\tif (index !== -1) {\n\t\t\tthis.#cdkKeyManager?.setActiveItem(index);\n\t\t}\n\t}\n\n\thighlightOption(option: T): void {\n\t\tif (!this.#options) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { optionComparer } = this.#options;\n\n\t\tthis.#queryList$\n\t\t\t.pipe(\n\t\t\t\tobserveOn(asyncScheduler),\n\t\t\t\tmap((options) =>\n\t\t\t\t\toptions.findIndex((el) => {\n\t\t\t\t\t\tconst elOption = el.option();\n\t\t\t\t\t\treturn isNotNil(elOption) && optionComparer(elOption, option);\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\tfilter((index) => index !== -1),\n\t\t\t\ttake(1),\n\t\t\t\ttakeUntilDestroyed(this.#destroyRef),\n\t\t\t)\n\t\t\t.subscribe((selectedIndex) => this.setActiveItem(selectedIndex));\n\t}\n\n\t#bindClueChange(clueChange$: Observable<string>): void {\n\t\tclueChange$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(() => {\n\t\t\tthis.#hasSearchChanged = true;\n\t\t});\n\t}\n\n\t#bindActiveOptionIdChanged(activeOptionIdChanged$: EventEmitter<string>): void {\n\t\tconst keyManager = this.#cdkKeyManager;\n\t\tif (!keyManager) {\n\t\t\treturn;\n\t\t}\n\n\t\tkeyManager.change\n\t\t\t.pipe(\n\t\t\t\tmap(() => keyManager.activeItem?.idAttribute() ?? ''),\n\t\t\t\ttakeUntilDestroyed(this.#destroyRef),\n\t\t\t)\n\t\t\t.subscribe((activeDescendant) => activeOptionIdChanged$.emit(activeDescendant));\n\t}\n\n\t/**\n\t * Ensure always have the correct highlighted item:\n\t * \t- reset to null if no options\n\t * \t- set to first item if search has changed\n\t * \t- set to first item if no active item\n\t */\n\t#bindOptionsChange({ options }: CoreSelectKeyManagerOptions<T>): void {\n\t\tconst keyManager = this.#cdkKeyManager;\n\t\tif (!keyManager) {\n\t\t\treturn;\n\t\t}\n\n\t\tafterRenderEffect(\n\t\t\t() => {\n\t\t\t\toptions(); // Track option change\n\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tif (this.#queryList().length === 0) {\n\t\t\t\t\t\tkeyManager.setActiveItem(-1);\n\t\t\t\t\t} else if (this.#hasSearchChanged) {\n\t\t\t\t\t\tthis.#hasSearchChanged = false;\n\t\t\t\t\t\tkeyManager.setFirstItemActive();\n\t\t\t\t\t} else if (!keyManager.activeItem) {\n\t\t\t\t\t\tkeyManager.setFirstItemActive();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ injector: this.#injector },\n\t\t);\n\t}\n}\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { computed, Directive, ElementRef, inject, input, linkedSignal, model, OnDestroy, output, signal, untracked } from '@angular/core';\nimport { ALuSelectInputComponent } from '../input/select-input.component';\nimport { CoreSelectKeyManager } from './key-manager';\nimport { CoreSelectPanelInstance, SELECT_PANEL_INSTANCE } from './panel.instance';\n\n@Directive({\n\tselector: '[luCoreSelectPanelElement]',\n\texportAs: 'luCoreSelectPanelElement',\n\thost: {\n\t\t'[class.is-highlighted]': 'isHighlighted()',\n\t\t'(mouseover)': 'onMouseOver($event)',\n\t\trole: 'presentation',\n\t},\n})\nexport class CoreSelectPanelElement<T> implements Highlightable, OnDestroy {\n\treadonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\treadonly #panelRef = inject<CoreSelectPanelInstance<T>>(SELECT_PANEL_INSTANCE);\n\treadonly #keyManager = inject<CoreSelectKeyManager<T>>(CoreSelectKeyManager, { optional: true });\n\n\treadonly #selectRef = inject<ALuSelectInputComponent<T, T>>(ALuSelectInputComponent);\n\n\treadonly id = signal<string>('');\n\n\treadonly elementId = input<string>('');\n\n\treadonly idAttribute = computed(() => this.id() || this.elementId());\n\n\treadonly isSelected = model(false);\n\n\treadonly option = input<T>();\n\n\treadonly disabledInput = input<boolean>(false, { alias: 'disabled' });\n\n\treadonly disabledRef = linkedSignal(() => this.disabledInput());\n\n\treadonly isHighlighted = signal(false);\n\n\tselected = output<void>();\n\n\tget disabled() {\n\t\treturn this.disabledRef();\n\t}\n\n\tset disabled(disabled: boolean) {\n\t\tthis.disabledRef.set(disabled);\n\t}\n\n\tconstructor() {\n\t\tthis.#panelRef.options.set([...this.#panelRef.options(), this]);\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.#panelRef.options.set(this.#panelRef.options().filter((opt) => opt !== this));\n\t}\n\n\tsetActiveStyles(): void {\n\t\tthis.isHighlighted.set(true);\n\t\tconst option = this.option();\n\t\tif (option !== undefined) {\n\t\t\tthis.#selectRef.highlightedOption.emit(option);\n\t\t}\n\t}\n\n\tsetInactiveStyles(): void {\n\t\tthis.isHighlighted.set(false);\n\t}\n\n\tonMouseOver(event: MouseEvent): void {\n\t\tif (!this.#keyManager || this.disabled || !untracked(this.#panelRef.pointerNavigation)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Tree options nest their children inside their own host, so the event bubbles through every\n\t\t// ancestor option. mouseover (unlike mouseenter) re-fires as the pointer moves, so activate\n\t\t// only the option whose own row is directly under the pointer. Keying off the row — and not\n\t\t// the host — mirrors the native `.listboxOption-content:hover`: the gap between nested options\n\t\t// lives in the wrapper, not in any row, so hovering it must not highlight the parent.\n\t\tconst row = (event.target as HTMLElement).closest('.listboxOption-content');\n\t\tif (!row || row.closest('[luCoreSelectPanelElement]') !== this.elementRef.nativeElement) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#keyManager.setActiveItemByElement(this);\n\t}\n}\n","import { Injectable, InjectionToken } from '@angular/core';\nimport { PortalContent } from '@lucca-front/ng/core';\nimport { Observable } from 'rxjs';\n\nexport interface SelectDataSourceParams {\n\tclue: string;\n\tpage: number;\n}\n\nexport interface SelectDataSource<TOption, TGroup = never> {\n\tparamsChange?: Observable<unknown>;\n\t/** Optional debounce in ms for clue-based re-queries (useful for API data sources) */\n\tclueDebounceMs?: number;\n\tgetOptions(params: SelectDataSourceParams): Observable<readonly TOption[]>;\n\t/**\n\t * Optional post-processing applied to the whole list of loaded options (all pages accumulated),\n\t * every time it changes. Use it for decorations that can't be computed page by page —\n\t * for example flagging homonyms, which requires seeing every loaded option at once.\n\t */\n\ttransformOptions?(options: readonly TOption[]): Observable<readonly TOption[]>;\n\tgetTotalCount?(params: SelectDataSourceParams): Observable<number>;\n\tgetGroupOptions?: [TGroup] extends [never] ? never : (group: TGroup) => Observable<TOption[]>;\n\treset?(): void;\n}\n\nexport interface LuOptionContext<T> {\n\t$implicit: T;\n}\n\nexport interface LuOptionGroupByContext<T, TGroup> {\n\t$implicit: LuOptionGroup<T, TGroup>;\n}\n\nexport interface LuOptionGrouping<TOption, TGroup> {\n\tselector: (option: TOption) => TGroup;\n\tcontent: PortalContent<LuOptionGroupByContext<TOption, TGroup>>;\n}\n\nexport interface LuOptionGroup<T, TGroup> {\n\tkey: TGroup;\n\toptions: T[];\n}\n\nexport type LuOptionComparer<T> = (a: T, b: T) => boolean;\n\nexport type CoreSelectAddOptionStrategy = 'never' | 'always' | 'if-empty-clue' | 'if-not-empty-clue';\n\nexport const SELECT_ID = new InjectionToken<number>('LuSelectPanelData');\nexport const SELECT_LABEL = new InjectionToken<HTMLLabelElement | undefined>('LuSelectLabel');\nexport const SELECT_LABEL_ID = new InjectionToken<string>('LuSelectLabelId');\n\nexport interface CoreSelectApiTotalCountProvider {\n\ttotalCount$: Observable<number>;\n}\n\nexport const CORE_SELECT_API_TOTAL_COUNT_PROVIDER = new InjectionToken<CoreSelectApiTotalCountProvider>('CoreSelectApiTotalCountProvider');\n\n@Injectable({\n\tprovidedIn: 'root',\n\tuseFactory: () => new DefaultIsSelectedStrategy(),\n})\nexport abstract class ɵIsSelectedStrategy<TOption> {\n\tabstract isSelected(option: TOption, selectedOptions: TOption[], optionComparer: LuOptionComparer<TOption>): boolean;\n\tabstract isGroupSelected(options: TOption[], notSelectedOptions: TOption[]): boolean;\n}\n\nclass DefaultIsSelectedStrategy<TOption> extends ɵIsSelectedStrategy<TOption> {\n\tisSelected(option: TOption, selectedOptions: TOption[], optionComparer: LuOptionComparer<TOption>): boolean {\n\t\treturn selectedOptions.some((o) => optionComparer(o, option));\n\t}\n\n\tisGroupSelected(options: TOption[], notSelectedOptions: TOption[]): boolean {\n\t\treturn !notSelectedOptions.length && notSelectedOptions.length !== options.length;\n\t}\n}\n","export const Translations = {\n\tfr: {\n\t\tonlyParent: 'Seulement le parent (Ctrl + Entrée)',\n\t\tonlyChildren: 'Seulement les enfants (Shift + Entrée)',\n\t},\n\ten: {\n\t\tonlyParent: 'Only parent (Ctrl + Enter)',\n\t\tonlyChildren: 'Only children (Shift + Enter)',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_OPTION_TRANSLATIONS = new InjectionToken('LuOptionTranslations', {\n\tfactory: () => luOptionTranslations,\n});\n\nexport interface OptionTranslate {\n\tonlyParent: string;\n\tonlyChildren: string;\n}\n\nexport const luOptionTranslations: LuTranslation<OptionTranslate> = Translations;\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, contentChild, ElementRef, inject, Injector, input, OnInit, output, TemplateRef, Type, untracked, viewChild } from '@angular/core';\nimport { intlInputOptions, isNil, luBooleanAttribute, luOptionalNumberAttribute, PortalDirective, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { OptionComponent as ListboxOptionComponent, Treeitem } from '@lucca-front/ng/listbox';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { asyncScheduler, observeOn } from 'rxjs';\nimport { CoreSelectPanelInstance, SELECT_PANEL_INSTANCE } from '../panel/panel.instance';\nimport { GroupTemplateLocation, scrollIntoViewOnceReady } from '../panel/panel.utils';\nimport { CoreSelectPanelElement } from '../panel/selectable-item';\nimport { LuOptionContext, LuOptionGrouping, SELECT_ID } from '../select.model';\nimport { LuOptionGroupPipe } from './group.pipe';\nimport { LuOptionOutletDirective } from './option-outlet.directive';\nimport { LU_OPTION_CONTEXT } from './option.token';\nimport { LU_OPTION_TRANSLATIONS } from './option.translate';\n\n@Component({\n\tselector: 'lu-select-option',\n\ttemplateUrl: './option.component.html',\n\tstyleUrl: './option.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [LuOptionOutletDirective, PortalDirective, LuOptionGroupPipe, LuTooltipTriggerDirective, NgTemplateOutlet, ListboxOptionComponent],\n})\nexport class LuOptionComponent<T> implements OnInit {\n\treadonly #panelRef = inject<CoreSelectPanelInstance<T>>(SELECT_PANEL_INSTANCE);\n\tprotected selectableItem = inject(CoreSelectPanelElement);\n\treadonly intl = input(...intlInputOptions(LU_OPTION_TRANSLATIONS));\n\n\treadonly optionTpl = input<TemplateRef<LuOptionContext<T>> | Type<unknown>>();\n\n\treadonly option = input<T>();\n\n\treadonly grouping = input<LuOptionGrouping<T, unknown>>();\n\n\treadonly hasChildren = input(false, { transform: luBooleanAttribute });\n\n\treadonly onlyParent = output<void>();\n\n\treadonly onlyChildren = output<void>();\n\n\treadonly groupIndex = input(undefined, { transform: luOptionalNumberAttribute });\n\n\tpublic readonly optionIndex = input.required({ transform: (value: string | number) => `${value}` });\n\n\treadonly scrollIntoViewOptions = input<ScrollIntoViewOptions>({});\n\n\treadonly groupTemplateLocation = input<GroupTemplateLocation>();\n\n\t/**\n\t * Present only when the consumer projects nested `[treeitem]` content (tree selects).\n\t * Detected here — and not on the inner `lu-listbox-option` — because Angular content\n\t * queries do not traverse the `ng-content` re-projection boundary.\n\t */\n\treadonly treeitemContent = contentChild(Treeitem);\n\n\treadonly #parentOption = inject<LuOptionComponent<T>>(LuOptionComponent, { skipSelf: true, optional: true });\n\n\t/**\n\t * Depth this option sits at, handed to the listbox option that wraps the projected\n\t * `[treeitem]` children: option indentation is absolute, so the stylesheet cannot work out a\n\t * depth it has no rule for, and every level below its deepest one would share an indentation.\n\t */\n\treadonly level: number = (this.#parentOption?.level ?? 0) + 1;\n\n\treadonly optionContext = viewChild(LU_OPTION_CONTEXT);\n\n\tprivate cdr = inject(ChangeDetectorRef);\n\treadonly #injector = inject(Injector);\n\n\tget id(): string {\n\t\tconst groupPart = this.groupIndex() === undefined ? `` : `-group-${this.groupIndex()}`;\n\n\t\treturn `lu-select-${this.selectId}${groupPart}-option-${this.optionIndex()}`;\n\t}\n\n\tprotected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprotected selectId = inject(SELECT_ID);\n\n\tconstructor() {\n\t\tɵeffectWithDeps([this.selectableItem.isHighlighted], (isHighlighted, onCleanup) => {\n\t\t\tif (isHighlighted && !untracked(this.#panelRef.pointerNavigation)) {\n\t\t\t\t// Wait for the panel layout to settle (opening animation) before scrolling,\n\t\t\t\t// otherwise the browser computes a bogus scroll position.\n\t\t\t\tonCleanup(scrollIntoViewOnceReady(this.elementRef.nativeElement, this.#injector, () => this.scrollIntoViewOptions()));\n\t\t\t}\n\t\t});\n\n\t\tɵeffectWithDeps([this.optionContext], (optionContext, onCleanup) => {\n\t\t\tif (isNil(optionContext)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst subscription = optionContext.isDisabled$.pipe(observeOn(asyncScheduler)).subscribe((isDisabled) => {\n\t\t\t\tthis.selectableItem.disabled = isDisabled;\n\t\t\t\tthis.cdr.markForCheck();\n\t\t\t});\n\t\t\tonCleanup(() => subscription.unsubscribe());\n\t\t});\n\t}\n\n\tngOnInit(): void {\n\t\tthis.selectableItem.id.set(this.id);\n\t}\n\n\tselectOption($event: Event): void {\n\t\tif (this.selectableItem.disabled) {\n\t\t\t$event.stopPropagation();\n\t\t}\n\t}\n}\n","<lu-listbox-option\n\t[checked]=\"selectableItem.isSelected()\"\n\t[hovered]=\"selectableItem.isHighlighted()\"\n\t[disabled]=\"selectableItem.disabled\"\n\t(click)=\"selectOption($event)\"\n\t[elementId]=\"selectableItem.idAttribute()\"\n\t[treeitemLevel]=\"treeitemContent() ? level : null\"\n>\n\t<ng-container [ngTemplateOutlet]=\"optionContent\" />\n\t<!-- Re-projected into the option's own wrapper, so the tree rows are stacked by the listbox\n\titself: the level has to be passed along because a content query stops at this ng-content -->\n\t<ng-content select=\"[treeitem]\" ngProjectAs=\"[treeitem]\" />\n</lu-listbox-option>\n\n<ng-template #optionContent>\n\t<div class=\"listboxOption-content-value\">\n\t\t<ng-container *luOptionOutlet=\"optionTpl(); value: selectableItem.option()\" />\n\n\t\t@if (groupTemplateLocation() === \"option\") {\n\t\t\t@if (grouping(); as grouping) {\n\t\t\t\t<div class=\"listboxOption-content-group\">\n\t\t\t\t\t<ng-container *luPortal=\"grouping.content; context: { $implicit: selectableItem.option() | luOptionGroup: grouping.selector }\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\t</div>\n\n\t@if (hasChildren() && !selectableItem.disabled) {\n\t\t<div class=\"optionItem-icons\">\n\t\t\t<span\n\t\t\t\tclass=\"optionItem-icon parentOnly\"\n\t\t\t\t(click)=\"$event.stopPropagation(); onlyParent.emit()\"\n\t\t\t\t[luTooltip]=\"intl().onlyParent\"\n\t\t\t\tluTooltipOnlyForDisplay\n\t\t\t>\n\t\t\t\t<svg class=\"optionItem-icon-shape\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\n\t\t\t\t\t<path\n\t\t\t\t\t\topacity=\"0.2\"\n\t\t\t\t\t\td=\"M8 13C8.55 13 9 12.55 9 12C9 11.45 8.55 11 8 11C7.45 11 7 11.45 7 12C7 12.55 7.45 13 8 13ZM8 18C8.55 18 9 17.55 9 17C9 16.45 8.55 16 8 16C7.45 16 7 16.45 7 17C7 17.55 7.45 18 8 18ZM12 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H12C11.45 11 11 11.45 11 12C11 12.55 11.45 13 12 13ZM12 18H20C20.55 18 21 17.55 21 17C21 16.45 20.55 16 20 16H12C11.45 16 11 16.45 11 17C11 17.55 11.45 18 12 18ZM8 13C8.55 13 9 12.55 9 12C9 11.45 8.55 11 8 11C7.45 11 7 11.45 7 12C7 12.55 7.45 13 8 13ZM8 18C8.55 18 9 17.55 9 17C9 16.45 8.55 16 8 16C7.45 16 7 16.45 7 17C7 17.55 7.45 18 8 18ZM12 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H12C11.45 11 11 11.45 11 12C11 12.55 11.45 13 12 13ZM12 18H20C20.55 18 21 17.55 21 17C21 16.45 20.55 16 20 16H12C11.45 16 11 16.45 11 17C11 17.55 11.45 18 12 18Z\"\n\t\t\t\t\t/>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M4 8C4.55 8 5 7.55 5 7C5 6.45 4.55 6 4 6C3.45 6 3 6.45 3 7C3 7.55 3.45 8 4 8ZM7 7C7 7.55 7.45 8 8 8H20C20.55 8 21 7.55 21 7C21 6.45 20.55 6 20 6H8C7.45 6 7 6.45 7 7ZM4 8C4.55 8 5 7.55 5 7C5 6.45 4.55 6 4 6C3.45 6 3 6.45 3 7C3 7.55 3.45 8 4 8ZM7 7C7 7.55 7.45 8 8 8H20C20.55 8 21 7.55 21 7C21 6.45 20.55 6 20 6H8C7.45 6 7 6.45 7 7Z\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t\t<span class=\"pr-u-mask\">{{ intl().onlyParent }}</span>\n\t\t\t</span>\n\t\t\t<span\n\t\t\t\tclass=\"optionItem-icon childrenOnly\"\n\t\t\t\t(click)=\"$event.stopPropagation(); onlyChildren.emit()\"\n\t\t\t\t[luTooltip]=\"intl().onlyChildren\"\n\t\t\t\tluTooltipOnlyForDisplay\n\t\t\t>\n\t\t\t\t<svg class=\"optionItem-icon-shape\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\">\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M8 13C8.55 13 9 12.55 9 12C9 11.45 8.55 11 8 11C7.45 11 7 11.45 7 12C7 12.55 7.45 13 8 13ZM8 18C8.55 18 9 17.55 9 17C9 16.45 8.55 16 8 16C7.45 16 7 16.45 7 17C7 17.55 7.45 18 8 18ZM12 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H12C11.45 11 11 11.45 11 12C11 12.55 11.45 13 12 13ZM12 18H20C20.55 18 21 17.55 21 17C21 16.45 20.55 16 20 16H12C11.45 16 11 16.45 11 17C11 17.55 11.45 18 12 18ZM8 13C8.55 13 9 12.55 9 12C9 11.45 8.55 11 8 11C7.45 11 7 11.45 7 12C7 12.55 7.45 13 8 13ZM8 18C8.55 18 9 17.55 9 17C9 16.45 8.55 16 8 16C7.45 16 7 16.45 7 17C7 17.55 7.45 18 8 18ZM12 13H20C20.55 13 21 12.55 21 12C21 11.45 20.55 11 20 11H12C11.45 11 11 11.45 11 12C11 12.55 11.45 13 12 13ZM12 18H20C20.55 18 21 17.55 21 17C21 16.45 20.55 16 20 16H12C11.45 16 11 16.45 11 17C11 17.55 11.45 18 12 18Z\"\n\t\t\t\t\t/>\n\t\t\t\t\t<path\n\t\t\t\t\t\topacity=\"0.2\"\n\t\t\t\t\t\td=\"M4 8C4.55 8 5 7.55 5 7C5 6.45 4.55 6 4 6C3.45 6 3 6.45 3 7C3 7.55 3.45 8 4 8ZM7 7C7 7.55 7.45 8 8 8H20C20.55 8 21 7.55 21 7C21 6.45 20.55 6 20 6H8C7.45 6 7 6.45 7 7ZM4 8C4.55 8 5 7.55 5 7C5 6.45 4.55 6 4 6C3.45 6 3 6.45 3 7C3 7.55 3.45 8 4 8ZM7 7C7 7.55 7.45 8 8 8H20C20.55 8 21 7.55 21 7C21 6.45 20.55 6 20 6H8C7.45 6 7 6.45 7 7Z\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t\t<span class=\"pr-u-mask\">{{ intl().onlyChildren }}</span>\n\t\t\t</span>\n\t\t</div>\n\t}\n</ng-template>\n","import { Directive, input, TemplateRef } from '@angular/core';\nimport { ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport type { ALuSelectInputComponent } from '../input';\nimport type { LuOptionContext } from '../select.model';\n\n@Directive({\n\tselector: '[luOption]',\n})\nexport class LuOptionDirective<TOption, TValue> {\n\treadonly select = input<ALuSelectInputComponent<TOption, TValue>>(undefined, { alias: 'luOptionSelect' });\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<TOption>>) {\n\t\tɵeffectWithDeps([this.select], (select) => select?.optionTpl.set(this.templateRef));\n\t}\n\n\tpublic static ngTemplateContextGuard<TOption, TValue>(_dir: LuOptionDirective<TOption, TValue>, _ctx: unknown): _ctx is LuOptionContext<TOption> {\n\t\treturn true;\n\t}\n}\n","import { catchError, concatMap, defer, distinctUntilChanged, finalize, map, Observable, of, scan, startWith, switchMap, takeWhile, tap, timer } from 'rxjs';\nimport { SelectDataSource } from '../select.model';\n\nexport interface BuildOptionsFromDataSourceDeps {\n\tnextPage$: Observable<void>;\n\tclue$: Observable<string | null>;\n\tisPanelOpen$: Observable<boolean>;\n\tsetLoading: (loading: boolean) => void;\n}\n\nexport function buildOptionsFromDataSource<TOption>(ds: SelectDataSource<TOption>, deps: BuildOptionsFromDataSourceDeps): Observable<readonly TOption[]> {\n\tconst { nextPage$, clue$, isPanelOpen$, setLoading } = deps;\n\n\tconst page$ = nextPage$.pipe(\n\t\tscan((page) => page + 1, 0),\n\t\tstartWith(0),\n\t);\n\n\tconst normalizedClue$ = clue$.pipe(\n\t\tmap((clue) => clue ?? ''),\n\t\tdistinctUntilChanged(),\n\t);\n\n\t// If a debounce is specified:\n\t// - empty clue ('') passes through immediately (initial state / clear)\n\t// - non-empty clue is debounced (user is typing)\n\tconst debouncedClue$ = ds.clueDebounceMs ? normalizedClue$.pipe(switchMap((clue) => (clue ? timer(ds.clueDebounceMs!).pipe(map(() => clue)) : of(clue)))) : normalizedClue$;\n\n\treturn isPanelOpen$.pipe(\n\t\tdistinctUntilChanged(),\n\t\tswitchMap((isOpen) => {\n\t\t\tif (!isOpen) {\n\t\t\t\treturn of([] as readonly TOption[]);\n\t\t\t}\n\n\t\t\treturn debouncedClue$.pipe(\n\t\t\t\tswitchMap((clue) => {\n\t\t\t\t\tds.reset?.();\n\t\t\t\t\treturn page$.pipe(\n\t\t\t\t\t\tconcatMap((page) => {\n\t\t\t\t\t\t\tsetLoading(true);\n\t\t\t\t\t\t\treturn ds.getOptions({ clue, page }).pipe(\n\t\t\t\t\t\t\t\tcatchError(() => of([] as readonly TOption[])),\n\t\t\t\t\t\t\t\ttap(() => setLoading(false)),\n\t\t\t\t\t\t\t\tstartWith([] as readonly TOption[]),\n\t\t\t\t\t\t\t\tmap((items) => ({ items, page })),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tscan(\n\t\t\t\t\t\t\t(acc, { items, page }) => {\n\t\t\t\t\t\t\t\tacc[page] = items;\n\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{} as Record<number, readonly TOption[]>,\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// Stop calling pages when last two pages are empty\n\t\t\t\t\t\ttakeWhile((pages) => {\n\t\t\t\t\t\t\tconst indexes = Object.keys(pages)\n\t\t\t\t\t\t\t\t.map((p) => parseInt(p))\n\t\t\t\t\t\t\t\t.sort((a, b) => a - b);\n\t\t\t\t\t\t\tconst lastIndexes = indexes.slice(-2);\n\t\t\t\t\t\t\treturn lastIndexes.length < 2 || !lastIndexes.every((i) => pages[i]?.length === 0);\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tmap((pages) => Object.values(pages).flat()),\n\t\t\t\t\t\t// Applied on the accumulated list so cross-page decorations (eg. homonyms) can be computed\n\t\t\t\t\t\t// Falls back to the raw accumulated options so a failing decoration doesn't kill the whole stream\n\t\t\t\t\t\tswitchMap((options) => defer(() => ds.transformOptions?.(options) ?? of(options)).pipe(catchError(() => of(options)))),\n\t\t\t\t\t\tfinalize(() => setLoading(false)), // Avoid infinite loading on complete API or error\n\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t);\n\t\t}),\n\t);\n}\n","import { OverlayConfig, OverlayContainer } from '@angular/cdk/overlay';\nimport {\n\tafterNextRender,\n\tChangeDetectorRef,\n\tcomputed,\n\tDirective,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tOnDestroy,\n\tOnInit,\n\toutput,\n\tSignal,\n\tsignal,\n\tTemplateRef,\n\tType,\n\tviewChild,\n} from '@angular/core';\nimport { outputFromObservable, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { isNotNil, luBooleanAttribute, luNumberAttribute, PortalContent, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { FILTER_PILL_HOST_COMPONENT, FILTER_PILL_INPUT_COMPONENT, FilterPillInputComponent } from '@lucca-front/ng/filter-pills';\nimport { BehaviorSubject, defer, finalize, map, of, ReplaySubject, startWith, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { LuSimpleSelectDefaultOptionComponent } from '../option';\nimport { LuSelectPanelRef } from '../panel';\nimport { CoreSelectAddOptionStrategy, LuOptionComparer, LuOptionContext, LuOptionGrouping, SELECT_LABEL, SELECT_LABEL_ID, SelectDataSource, SelectDataSourceParams } from '../select.model';\nimport { LuCoreSelectLabel } from '../select.translate';\nimport { TreeNode } from './model';\nimport { buildOptionsFromDataSource } from './select-input.utils';\nimport { TreeGenerator } from './tree-generator';\n\nexport const coreSelectDefaultOptionComparer: LuOptionComparer<unknown> = (option1, option2) => JSON.stringify(option1) === JSON.stringify(option2);\nexport const coreSelectDefaultOptionKey: (option: unknown) => unknown = (option) => option;\n\n@Directive({\n\thost: {\n\t\t'[class.colorPicker]': 'colorPicker()',\n\t\t'[class.mod-compact]': 'compact()',\n\t\t'[class.is-clearable]': 'isClearable()',\n\t\t'[class.is-selected]': 'isSelectedClass',\n\t\t'[class.is-searchFilled]': 'isSearchFilledClass',\n\t\t'[class.mod-noClueIcon]': 'isNoClueIconClass',\n\t\t'(click)': 'onClickOpenPanel($event)',\n\t\t'(keydown)': 'onKeyDownNavigation($event)',\n\t},\n})\nexport abstract class ALuSelectInputComponent<TOption, TValue> implements OnDestroy, OnInit, ControlValueAccessor, FilterPillInputComponent {\n\tpublic parentInput = inject(FILTER_PILL_INPUT_COMPONENT, { optional: true, skipSelf: true });\n\tprotected changeDetectorRef = inject(ChangeDetectorRef);\n\tprotected overlayContainerRef: HTMLElement = inject(OverlayContainer).getContainerElement();\n\n\tprotected labelElement: HTMLElement | undefined = inject(SELECT_LABEL);\n\tprotected labelId: string = inject(SELECT_LABEL_ID);\n\n\tprotected abstract intl: Signal<LuCoreSelectLabel>;\n\n\tprotected filterPillHost = inject(FILTER_PILL_HOST_COMPONENT, { optional: true });\n\tprotected afterCloseFn?: () => void;\n\tprotected updatePositionFn?: () => void;\n\tpublic filterPillMode = false;\n\n\tpublic readonly ignorePresentation = input(false, { transform: luBooleanAttribute });\n\n\tpublic selectParent$?: Subject<void>;\n\tpublic selectChildren$?: Subject<void>;\n\n\tpublic readonly panelClosed = output<void>();\n\tpublic readonly panelOpened = output<void>();\n\n\tpublic readonly highlightedOption = output<TOption>();\n\n\tprivate readonly inputElementRef = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n\treadonly disabled$ = new BehaviorSubject(false);\n\treadonly filterPillDisabled = toSignal(this.disabled$, { initialValue: false });\n\n\treadonly prefix = input<PortalContent | null>(null);\n\n\treadonly placeholder = input<string>();\n\n\treadonly clearableInput = input<boolean | null>(null, { transform: luBooleanAttribute, alias: 'clearable' });\n\n\treadonly isClearable = computed(() => this.clearableInput() ?? this.#defaultFilterPillClearable() ?? this.#defaultClearable);\n\treadonly #defaultFilterPillClearable = signal<boolean | null>(null);\n\t#defaultClearable = false;\n\n\tget searchable(): boolean {\n\t\treturn this.clueChange$.observed;\n\t}\n\n\tprotected readonly computedAddOptionLabel = computed(() => this.addOptionLabelInput() ?? this.intl().addOption);\n\n\treadonly addOptionLabelInput = input<PortalContent | null>(null, { alias: 'addOptionLabel' });\n\n\tget addOptionLabel(): PortalContent {\n\t\treturn this.computedAddOptionLabel();\n\t}\n\n\treadonly addOptionStrategy = input<CoreSelectAddOptionStrategy>('never');\n\n\tprotected get isSelectedClass(): boolean {\n\t\treturn this.hasValue();\n\t}\n\n\tprotected get isSearchFilledClass(): boolean {\n\t\treturn (this.clue?.length ?? 0) > 0;\n\t}\n\n\tprotected abstract hasValue(): boolean;\n\n\tpublic get isPanelOpen(): boolean {\n\t\treturn this.isPanelOpen$.value;\n\t}\n\n\treadonly isPanelOpen$ = new BehaviorSubject(false);\n\n\t// TODO Might be temporary, check after merging signalize PR\n\treadonly panelOpenSignal = toSignal(this.isPanelOpen$);\n\n\treadonly activeDescendant$ = new BehaviorSubject('');\n\n\tprotected manualOptions$ = new ReplaySubject<readonly TOption[]>(1);\n\n\tget ariaControls(): string {\n\t\treturn this.overlayContainerRef.id;\n\t}\n\n\treadonly overlayConfig = input<OverlayConfig>({ hasBackdrop: true, backdropClass: 'cdk-overlay-transparent-backdrop' });\n\n\treadonly loadingInput = input<boolean>(false, { alias: 'loading' });\n\n\treadonly optionsInput = input<readonly TOption[] | null>(null, { alias: 'options' });\n\n\treadonly optionComparerInput = input<LuOptionComparer<TOption>>(coreSelectDefaultOptionComparer, { alias: 'optionComparer' });\n\n\treadonly optionKeyInput = input<(option: TOption) => unknown>(coreSelectDefaultOptionKey, { alias: 'optionKey' });\n\n\treadonly noClueIcon = input(false, { transform: luBooleanAttribute });\n\n\treadonly inputTabindex = input(0, { transform: luNumberAttribute });\n\n\treadonly compact = input(false, { transform: luBooleanAttribute });\n\n\treadonly colorPicker = input(false, { transform: luBooleanAttribute });\n\n\tprotected get isNoClueIconClass(): boolean {\n\t\treturn this.noClueIcon();\n\t}\n\n\treadonly options = linkedSignal(() => this.optionsInput());\n\treadonly loading = linkedSignal(() => this.loadingInput());\n\treadonly clearable = linkedSignal(() => this.clearableInput());\n\treadonly optionComparer = linkedSignal(() => this.optionComparerInput());\n\treadonly optionKey = linkedSignal(() => this.optionKeyInput());\n\n\treadonly optionTpl = model<TemplateRef<LuOptionContext<TOption>> | Type<unknown>>(LuSimpleSelectDefaultOptionComponent);\n\treadonly valueTpl = model<TemplateRef<LuOptionContext<TOption>> | Type<unknown> | undefined>();\n\treadonly panelHeaderTpl = model<TemplateRef<void> | Type<unknown> | undefined>();\n\treadonly panelFooterTpl = model<TemplateRef<void> | Type<unknown> | undefined>();\n\n\treadonly displayerTpl = computed(() => this.valueTpl() || this.optionTpl());\n\n\treadonly groupingSignal = signal<LuOptionGrouping<TOption, unknown> | undefined>(undefined);\n\n\t/**\n\t * @deprecated use groupingSignal\n\t */\n\tget grouping() {\n\t\treturn this.groupingSignal();\n\t}\n\t/**\n\t * @deprecated use groupingSignal\n\t */\n\tset grouping(grouping: LuOptionGrouping<TOption, unknown> | undefined) {\n\t\tthis.groupingSignal.set(grouping);\n\t}\n\n\ttreeGenerator?: TreeGenerator<TOption, TreeNode<TOption>>;\n\n\treadonly clueChange$ = new Subject<string>();\n\tclueChange = outputFromObservable(this.clueChange$);\n\t// searchable is derived from clueChange$.observed, so internal consumers must use this stream instead:\n\t// subscribing to clueChange$ would make every select look searchable.\n\treadonly #internalClueChange$ = new Subject<string>();\n\treadonly nextPage$ = new Subject<void>();\n\tnextPage = outputFromObservable(this.nextPage$);\n\treadonly addOption = output<string>();\n\n\tpublic readonly valueSignal = signal<TValue | null>(null);\n\treadonly isFilterPillEmpty = computed(() => this.valueSignal() === null);\n\treadonly isFilterPillClearable = computed(() => this.isClearable());\n\n\tpublic get value(): TValue | null {\n\t\treturn this._value;\n\t}\n\n\tprotected set value(value: TValue | null) {\n\t\t// TODO remove once migrated to signal, but there's an override\n\t\tthis._value = value;\n\t\tthis.valueSignal.set(value);\n\t\tthis.changeDetectorRef.markForCheck();\n\t}\n\n\tpublic get inputPlaceholder(): string | null | undefined {\n\t\treturn this.value ? null : this.placeholder();\n\t}\n\n\tpublic clueChanged(clue: string, skipPanelOpen = false): void {\n\t\tthis.clue = clue;\n\n\t\tif (!skipPanelOpen && !this.isPanelOpen) {\n\t\t\tthis.openPanel(clue);\n\t\t} else if (this.lastEmittedClue !== clue) {\n\t\t\tthis.clueChange$.next(clue);\n\t\t\tthis.#internalClueChange$.next(clue);\n\t\t\tthis.lastEmittedClue = clue;\n\t\t}\n\t}\n\n\tprotected _value: TValue | null = null;\n\n\tprivate getDefaultDataSource(): SelectDataSource<TOption> {\n\t\tlet emittedKeys = new Set<unknown>();\n\n\t\treturn {\n\t\t\tgetOptions: (_params: SelectDataSourceParams) => {\n\t\t\t\tlet lastEmittedThisPage: readonly TOption[] = [];\n\t\t\t\treturn this.manualOptions$.pipe(\n\t\t\t\t\ttap((options) => (lastEmittedThisPage = options)),\n\t\t\t\t\ttakeUntil(this.nextPage$),\n\t\t\t\t\tfinalize(() => (emittedKeys = new Set(lastEmittedThisPage.map((p) => this.optionKey()(p))))),\n\t\t\t\t\tmap((options) => options.filter((c) => !emittedKeys.has(this.optionKey()(c)))),\n\t\t\t\t);\n\t\t\t},\n\t\t\treset() {\n\t\t\t\temittedKeys.clear();\n\t\t\t},\n\t\t};\n\t}\n\n\treadonly dataSource = model<SelectDataSource<TOption, unknown>>(this.getDefaultDataSource());\n\n\treadonly dataSourceOptions = toSignal(\n\t\ttoObservable(this.dataSource).pipe(\n\t\t\tswitchMap((ds) =>\n\t\t\t\tbuildOptionsFromDataSource(ds, {\n\t\t\t\t\tnextPage$: this.nextPage$,\n\t\t\t\t\tclue$: this.clue$,\n\t\t\t\t\tisPanelOpen$: this.isPanelOpen$,\n\t\t\t\t\tsetLoading: (v) => this.loading.set(v),\n\t\t\t\t}),\n\t\t\t),\n\t\t),\n\t\t{ initialValue: [] as readonly TOption[] },\n\t);\n\tclue: string | null = null;\n\t// This is the clue stored after we selected an option to know if we should emit an empty clue on open or not\n\tlastEmittedClue: string = '';\n\treadonly clue$ = defer(() => this.#internalClueChange$.pipe(startWith(this.clue)));\n\n\treadonly shouldDisplayAddOption = toSignal(\n\t\ttoObservable(this.addOptionStrategy).pipe(\n\t\t\tswitchMap((strategy) => {\n\t\t\t\tswitch (strategy) {\n\t\t\t\t\tcase 'always':\n\t\t\t\t\t\treturn of(true);\n\t\t\t\t\tcase 'never':\n\t\t\t\t\t\treturn of(false);\n\t\t\t\t\tcase 'if-empty-clue':\n\t\t\t\t\t\treturn this.clue$.pipe(map((clue) => !clue));\n\t\t\t\t\tcase 'if-not-empty-clue':\n\t\t\t\t\t\treturn this.clue$.pipe(map((clue) => !!clue));\n\t\t\t\t}\n\t\t\t}),\n\t\t),\n\t);\n\n\tprotected onChange?: (value: TValue | null) => void;\n\tprotected onTouched?: () => void;\n\n\tpublic get panelRef(): LuSelectPanelRef<TOption, TValue> | undefined {\n\t\treturn this._panelRef;\n\t}\n\n\tprotected _panelRef?: LuSelectPanelRef<TOption, TValue>;\n\n\tprotected readonly destroyed$ = new Subject<void>();\n\n\tprivate readonly injector = inject(Injector);\n\n\tconstructor() {\n\t\tif (this.filterPillHost) {\n\t\t\tthis.filterPillHost.registerInput(this);\n\t\t}\n\n\t\tɵeffectWithDeps([this.options], (options) => {\n\t\t\tif (isNotNil(options)) {\n\t\t\t\tthis.manualOptions$.next(options);\n\t\t\t}\n\t\t});\n\n\t\t// When options arrive asynchronously via a dataSource, dataSourceOptions changes but options doesn't.\n\t\t// We need to reposition the panel after the DOM updates in both cases.\n\t\tɵeffectWithDeps([this.dataSourceOptions], (_options, onCleanup) => {\n\t\t\tif (isNotNil(this.panelRef)) {\n\t\t\t\tconst ref = afterNextRender(\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.panelRef?.updatePosition();\n\t\t\t\t\t\tthis.updatePositionFn?.();\n\t\t\t\t\t},\n\t\t\t\t\t{ injector: this.injector },\n\t\t\t\t);\n\t\t\t\tonCleanup(() => ref.destroy());\n\t\t\t}\n\t\t});\n\t}\n\n\tonClickOpenPanel($event: Event) {\n\t\tif (!this.isPanelOpen) {\n\t\t\tthis.openPanel();\n\t\t\t$event.stopPropagation();\n\t\t\t$event.preventDefault();\n\t\t}\n\t}\n\n\tonKeyDownNavigation(event: Event): void {\n\t\tconst $event = event as KeyboardEvent;\n\t\tswitch ($event.key) {\n\t\t\tcase 'Escape':\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\t$event.stopPropagation();\n\t\t\t\t}\n\t\t\t\tthis.panelRef?.close();\n\t\t\t\tbreak;\n\t\t\tcase 'Tab':\n\t\t\t\t// If we are in a filterpill, this will close it on tab press, but we want it to not lose any\n\t\t\t\t// displayed stuff and properly close on focus exit\n\t\t\t\tthis.panelRef?.close();\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tif ($event.ctrlKey || $event.shiftKey) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\t// Prevent form submission when selecting a value with Enter\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t\tthis.panelRef?.selectCurrentlyHighlightedValue();\n\t\t\t\t} else {\n\t\t\t\t\tthis.panelRef?.handleKeyManagerEvent($event);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ' ':\n\t\t\tcase 'ArrowDown':\n\t\t\tcase 'ArrowUp':\n\t\t\t\t// Initial space should just open the panel, not trigger a clue change\n\t\t\t\tif (!this.clue && $event.key === ' ') {\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t}\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\tthis.panelRef?.handleKeyManagerEvent($event);\n\t\t\t\t} else {\n\t\t\t\t\tthis.openPanel();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Let the browser handle modifier chords like Ctrl/Cmd+V (paste) or Ctrl/Cmd+C (copy)\n\t\t\t\t// instead of treating the chord's letter (e.g. the \"v\" of Ctrl+V) as typeahead input.\n\t\t\t\t// AltGr (Ctrl+Alt on Windows) is excluded so accented/special characters still work.\n\t\t\t\tif (($event.ctrlKey || $event.metaKey) && !$event.altKey) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// For any other key, forward it to the panel if it's open\n\t\t\t\tif (this.isPanelOpen) {\n\t\t\t\t\tthis.panelRef?.handleKeyManagerEvent($event);\n\t\t\t\t} else if ($event.key.length === 1) {\n\t\t\t\t\tthis.openPanel($event.key);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tregisterOnChange(onChange: (value: TValue | null) => void): void {\n\t\tthis.onChange = onChange;\n\t}\n\n\tregisterOnTouched(onTouched: () => void): void {\n\t\tthis.onTouched = onTouched;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabled$.next(isDisabled);\n\t\tthis.changeDetectorRef.markForCheck();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.closePanel();\n\t}\n\n\tngOnInit(): void {\n\t\tif (this.labelElement) {\n\t\t\tthis.labelElement.id = this.labelId;\n\t\t}\n\t}\n\n\tclearValue(event?: Event): void {\n\t\tif (event) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\tthis.updateValue(null, true);\n\t\tthis.inputElementRef()?.nativeElement.focus();\n\t}\n\n\t// Re-entrancy guard: opening the panel (focus, clueChanged, overlay creation) can synchronously\n\t// trigger openPanel again, which used to cause a double tap.\n\t#isOpeningPanel = false;\n\n\topenPanel(clue: string = ''): void {\n\t\tif (this.filterPillMode || this.isPanelOpen || this.disabled$.value || this.#isOpeningPanel) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#isOpeningPanel = true;\n\t\ttry {\n\t\t\tthis.focusInput();\n\n\t\t\tconst isSearchable = this.searchable;\n\t\t\tthis.isPanelOpen$.next(true);\n\t\t\tthis.panelOpened.emit();\n\n\t\t\tif (isSearchable) {\n\t\t\t\tthis.clueChanged(clue);\n\t\t\t}\n\n\t\t\tthis._panelRef = this.buildPanelRef();\n\t\t\tthis.bindInputToPanelRefEvents();\n\t\t} finally {\n\t\t\tthis.#isOpeningPanel = false;\n\t\t}\n\t}\n\n\temitAddOption(): void {\n\t\tthis.addOption.emit(this.clue ?? '');\n\t\tthis.panelRef?.close();\n\t}\n\n\tprotected abstract buildPanelRef(): this['panelRef'];\n\n\tprotected bindInputToPanelRefEvents(): void {\n\t\tif (!this.panelRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.panelRef.valueChanged.subscribe((value) => this.updateValue(value));\n\t\tthis.panelRef.nextPage.subscribe(() => this.nextPage$.next());\n\n\t\tthis.panelRef.activeOptionIdChanged.subscribe((optionId) => {\n\t\t\tthis.activeDescendant$.next(optionId);\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t});\n\t\tthis.panelRef.closed.subscribe(() => this.closePanel());\n\t}\n\n\tfocusInput(): void {\n\t\tif (this.inputElementRef()) {\n\t\t\tthis.inputElementRef()?.nativeElement.focus();\n\t\t}\n\t}\n\n\tprotected emptyClue(): void {\n\t\tif (this.clue) {\n\t\t\tthis.clue = null;\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t}\n\t}\n\n\tpublic closePanel(): void {\n\t\tthis.dataSource().reset?.();\n\n\t\tif (!this.isPanelOpen) {\n\t\t\treturn;\n\t\t}\n\t\tthis.panelClosed.emit();\n\t\tthis.emptyClue();\n\t\tthis.activeDescendant$.next('');\n\t\tthis.changeDetectorRef.markForCheck();\n\t\tthis.onTouched?.();\n\t\tif (!this.filterPillMode) {\n\t\t\tthis.isPanelOpen$.next(false);\n\t\t\tthis.panelRef?.close();\n\t\t\tthis._panelRef = undefined;\n\t\t\tthis.focusInput();\n\t\t}\n\t\tthis.afterCloseFn?.();\n\t}\n\n\tpublic writeValue(value: TValue | null): void {\n\t\tthis.value = value;\n\t}\n\n\tpublic updateValue(value: TValue | null, skipPanelOpen = false, noClear = false): void {\n\t\tthis.value = value;\n\t\tif (!noClear) {\n\t\t\tthis.emptyClue();\n\t\t\tthis.clueChanged('', skipPanelOpen);\n\t\t}\n\t\tthis.onChange?.(value);\n\t\tthis.onTouched?.();\n\t}\n\n\t// Filter pill interface\n\tclearFilterPillValue(): void {\n\t\tthis.clearValue();\n\t}\n\n\tregisterFilterPillClosePopover(closeFn: () => void): void {\n\t\tthis.afterCloseFn = closeFn;\n\t}\n\n\tregisterFilterPillUpdatePosition(updatePositionFn: () => void): void {\n\t\tthis.updatePositionFn = updatePositionFn;\n\t}\n\n\tenableFilterPillMode() {\n\t\tthis.filterPillMode = true;\n\t\tthis.#defaultFilterPillClearable.set(true);\n\t\tthis._panelRef?.closed.subscribe(this.afterCloseFn);\n\t\tthis.bindInputToPanelRefEvents();\n\t}\n\n\tonFilterPillOpened(): void {\n\t\tthis.isPanelOpen$.next(true);\n\t}\n\n\tonFilterPillClosed(): void {\n\t\tthis.isPanelOpen$.next(false);\n\t}\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { ElementRef, Provider, inject } from '@angular/core';\nimport { SELECT_ID, SELECT_LABEL, SELECT_LABEL_ID } from '../select.model';\n\nlet selectId = 0;\n\nfunction selectIdFactory(): number {\n\treturn selectId++;\n}\n\nfunction selectLabelFactory(): HTMLLabelElement | undefined {\n\tconst elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tfunction getLabel(node: HTMLElement): HTMLLabelElement | undefined {\n\t\tif (node instanceof HTMLLabelElement) {\n\t\t\treturn node;\n\t\t}\n\n\t\tif (!node.parentElement) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn getLabel(node.parentElement);\n\t}\n\n\treturn getLabel(elementRef.nativeElement);\n}\n\nfunction selectLabelIdFactory(): string {\n\treturn inject(SELECT_LABEL)?.id || `lu-select-label-${inject(SELECT_ID)}`;\n}\n\nexport function provideLuSelectLabelsAndIds(): Provider[] {\n\treturn [\n\t\t{ provide: SELECT_ID, useFactory: selectIdFactory },\n\t\t{ provide: SELECT_LABEL, useFactory: selectLabelFactory },\n\t\t{ provide: SELECT_LABEL_ID, useFactory: selectLabelIdFactory },\n\t];\n}\n\nexport function addAttributesOnCdkContainer(overlayRef: OverlayRef, selectLabelId: string, selectId: number) {\n\tconst potentialCdkOverlayContainer = overlayRef?.overlayElement?.parentElement?.parentElement;\n\tif (potentialCdkOverlayContainer && potentialCdkOverlayContainer.className.includes('cdk-overlay-container')) {\n\t\tpotentialCdkOverlayContainer.setAttribute('aria-labelledby', selectLabelId);\n\t\tpotentialCdkOverlayContainer.id = `lu-select-overlay-container-${selectId}`;\n\t}\n}\n","import { Directive, forwardRef, input } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { CORE_SELECT_API_TOTAL_COUNT_PROVIDER, CoreSelectApiTotalCountProvider } from '../select.model';\n\n@Directive({\n\t// The attribute is already prefixed with \"lu-simple-select\"\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[totalCount],lu-multi-select[totalCount]',\n\tproviders: [\n\t\t{\n\t\t\tprovide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,\n\t\t\tuseExisting: forwardRef(() => LuCoreSelectTotalCountDirective),\n\t\t},\n\t],\n})\nexport class LuCoreSelectTotalCountDirective implements CoreSelectApiTotalCountProvider {\n\treadonly totalCount = input.required<number>({ alias: 'totalCount' });\n\n\treadonly totalCount$ = toObservable(this.totalCount);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TreeGenerator } from './tree-generator';\nimport { TreeNode } from './model';\n\n@Pipe({\n\tname: 'luTreeDisplay',\n\tpure: true,\n})\nexport class TreeDisplayPipe<T> implements PipeTransform {\n\ttransform(items: T[], treeGenerator: TreeGenerator<T, TreeNode<T>>): TreeNode<T>[] {\n\t\treturn treeGenerator.generateTrees(items);\n\t}\n}\n","import { Directive, inject } from '@angular/core';\nimport { ALuSelectInputComponent } from '../input/index';\n\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[noClue],lu-multi-select[noClue]',\n})\nexport class LuCoreSelectNoClueDirective {\n\tconstructor() {\n\t\tinject(ALuSelectInputComponent).clueChange$.complete();\n\t}\n}\n","import { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, input, output, ViewEncapsulation } from '@angular/core';\n\n/**\n * Shared floating surface for the simple/multi select panels.\n *\n * Carries the popover surface (elevation, scroll viewport, positioning) that used to live on the\n * deprecated `.lu-picker-panel` / `.lu-picker-content` styles, so panels no longer depend on them.\n * The projected content (a `lu-listbox`, an \"add option\" row, a footer…) is laid out inside the\n * scrollable content area.\n */\n@Component({\n\tselector: 'lu-select-panel-layout',\n\ttemplateUrl: './panel-layout.component.html',\n\tstyleUrl: './panel-layout.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'lu-select-panel-layout',\n\t},\n\timports: [CdkTrapFocus],\n})\nexport class LuSelectPanelLayoutComponent {\n\t/** Applies the `is-loading` state on the scroll content while options are being fetched. */\n\treadonly loading = input(false, { transform: booleanAttribute });\n\n\t/** Enables a focus trap on the scroll content (used by the single select panel). */\n\treadonly trapFocus = input(false, { transform: booleanAttribute });\n\n\t/** `tabindex` to set on the scroll content, or `null` to leave it non-focusable. */\n\treadonly contentTabIndex = input<number | null>(null);\n\n\t/** Emitted when the scroll content is scrolled (used to trigger pagination). */\n\treadonly scrolled = output<Event>();\n}\n","<div\n\tclass=\"lu-select-panel-layout-content\"\n\t[class.is-loading]=\"loading()\"\n\t[attr.tabindex]=\"contentTabIndex()\"\n\t[cdkTrapFocus]=\"trapFocus()\"\n\t(scroll)=\"scrolled.emit($event)\"\n>\n\t<ng-content />\n</div>\n","import { Directive, TemplateRef, effect, inject, input, untracked } from '@angular/core';\nimport { ALuSelectInputComponent } from '../input';\n\n@Directive({\n\tselector: '[luSelectPanelHeader]',\n})\nexport class LuCoreSelectPanelHeaderDirective {\n\treadonly templateRef = inject<TemplateRef<void>>(TemplateRef);\n\n\treadonly select = input.required<ALuSelectInputComponent<unknown, unknown> | ALuSelectInputComponent<unknown, unknown[]>>({ alias: 'luSelectPanelHeader' });\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst select = this.select();\n\t\t\tuntracked(() => select.panelHeaderTpl.set(this.templateRef));\n\t\t});\n\t}\n\n\tpublic static ngTemplateContextGuard(_dir: LuCoreSelectPanelHeaderDirective, _ctx: unknown): _ctx is void {\n\t\treturn true;\n\t}\n}\n","import { EventEmitter } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport abstract class LuSelectPanelRef<TOption, TValue> {\n\tclosed = new EventEmitter<void>();\n\tnextPage = new EventEmitter<void>();\n\tvalueChanged = new EventEmitter<TValue>();\n\tclueChanged = new EventEmitter<string>();\n\tactiveOptionIdChanged = new EventEmitter<string>();\n\toptions$: Observable<TOption>;\n\n\tabstract updatePosition(): void;\n\n\tabstract handleKeyManagerEvent(event: KeyboardEvent): void;\n\n\tabstract emitValue(value: TValue): void;\n\n\tabstract selectCurrentlyHighlightedValue(): void;\n\n\tclose(): void {\n\t\tthis.closed.next();\n\t\tthis.closed.complete();\n\t\tthis.nextPage.complete();\n\t\tthis.valueChanged.complete();\n\t\tthis.clueChanged.emit('');\n\t\tthis.clueChanged.complete();\n\t\tthis.activeOptionIdChanged.complete();\n\t}\n}\n","import { DestroyRef, DOCUMENT, inject, NgZone, Signal, signal, untracked } from '@angular/core';\n\n/**\n * Tracks whether the user is currently navigating with the pointer or with the keyboard.\n *\n * Both listeners are registered natively and outside of the Angular zone, and the signal is only\n * written when the value actually changes: `mousemove` fires on every frame the mouse moves, and\n * going through Angular's event system there schedules a change detection run each time — for a\n * value that almost never changes.\n *\n * `scope` bounds pointer navigation to an element — pass the panel host. Moving the mouse anywhere\n * else on the page then doesn't drop the keyboard highlight, and leaving the scope switches back to\n * keyboard navigation: pointer mode paints the active item through `:hover` alone, which vanishes\n * with the pointer, whereas the key manager keeps that item active and keyboard navigation resumes\n * from it. `keydown` always listens on the document, since focus stays on the input, outside of the\n * panel.\n *\n * Must be called from an injection context.\n */\nexport function injectPointerNavigation(scope?: HTMLElement): Signal<boolean> {\n\tconst document = inject(DOCUMENT);\n\tconst ngZone = inject(NgZone);\n\tconst pointerNavigation = signal(false);\n\n\tconst abortController = new AbortController();\n\tinject(DestroyRef).onDestroy(() => abortController.abort());\n\n\tngZone.runOutsideAngular(() => {\n\t\tconst options: AddEventListenerOptions = { passive: true, signal: abortController.signal };\n\n\t\t(scope ?? document).addEventListener(\n\t\t\t'mousemove',\n\t\t\t() => {\n\t\t\t\tif (!untracked(pointerNavigation)) {\n\t\t\t\t\tpointerNavigation.set(true);\n\t\t\t\t}\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\n\t\tscope?.addEventListener(\n\t\t\t'mouseleave',\n\t\t\t() => {\n\t\t\t\tif (untracked(pointerNavigation)) {\n\t\t\t\t\tpointerNavigation.set(false);\n\t\t\t\t}\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\n\t\tdocument.addEventListener(\n\t\t\t'keydown',\n\t\t\t() => {\n\t\t\t\tif (untracked(pointerNavigation)) {\n\t\t\t\t\tpointerNavigation.set(false);\n\t\t\t\t}\n\t\t\t},\n\t\t\toptions,\n\t\t);\n\t});\n\n\treturn pointerNavigation.asReadonly();\n}\n","export const Translations = {\n\t'nl-BE': {\n\t\taddOption: 'Een optie toevoegen',\n\t},\n\tnl: {\n\t\taddOption: 'Een optie toevoegen',\n\t},\n\tit: {\n\t\taddOption: 'Aggiungere un’opzione',\n\t},\n\tfr: {\n\t\taddOption: 'Ajouter une option',\n\t},\n\tpt: {\n\t\taddOption: 'Adicionar opção',\n\t},\n\tes: {\n\t\taddOption: 'Añadir una opción',\n\t},\n\tde: {\n\t\taddOption: 'Option hinzufügen',\n\t},\n\ten: {\n\t\taddOption: 'Add option',\n\t},\n\tpl: {\n\t\taddOption: 'Dodaj opcję',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_CORE_SELECT_TRANSLATIONS = new InjectionToken('LuCoreSelectTranslations', {\n\tfactory: () => luCoreSelectTranslations,\n});\n\nexport interface LuCoreSelectLabel {\n\taddOption: string;\n}\n\nexport const luCoreSelectTranslations: LuTranslation<LuCoreSelectLabel> = Translations;\n","export const applySearchDelimiter = (clue: string, delimiter: string): string => clue.split(' ').join(delimiter);\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { LuOptionComparer, ɵIsSelectedStrategy } from './select.model';\n\n@Pipe({\n\tname: 'luIsOptionSelected',\n})\nexport class LuIsOptionSelectedPipe<T> implements PipeTransform {\n\t#selectionStrategy = inject<ɵIsSelectedStrategy<T>>(ɵIsSelectedStrategy);\n\n\ttransform(option: T, comparer: LuOptionComparer<T>, selectedOptions: T[]): boolean {\n\t\treturn this.#selectionStrategy.isSelected(option, selectedOptions, comparer);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵeffectWithDeps","Translations","ListboxOptionComponent"],"mappings":"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"}
|