@arsedizioni/ars-utils 22.5.47 → 22.5.48
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/arsedizioni-ars-utils-ui.dialogs.select.mjs +100 -14
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/arsedizioni-ars-utils-ui.d.ts +31 -2
- package/types/arsedizioni-ars-utils-ui.dialogs.select.d.ts +49 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arsedizioni-ars-utils-ui.mjs","sources":["../../../projects/ars-utils/ui/dialog.definitions.ts","../../../projects/ars-utils/ui/ui.service.ts","../../../projects/ars-utils/ui/flex/breakpoints.ts","../../../projects/ars-utils/ui/flex/media-observer.service.ts","../../../projects/ars-utils/ui/flex/if-bp.directive.ts","../../../projects/ars-utils/ui/flex/responsive-base.directive.ts","../../../projects/ars-utils/ui/flex/fx-layout.directive.ts","../../../projects/ars-utils/ui/flex/fx-flex-extras.directives.ts","../../../projects/ars-utils/ui/flex/fx-flex.directive.ts","../../../projects/ars-utils/ui/flex/fx-grid.directives.ts","../../../projects/ars-utils/ui/flex/fx-layout-align.directive.ts","../../../projects/ars-utils/ui/flex/fx-layout-gap.directive.ts","../../../projects/ars-utils/ui/flex/fx-show-hide.directives.ts","../../../projects/ars-utils/ui/flex/fx-style-class.directives.ts","../../../projects/ars-utils/ui/flex/flex-module.ts","../../../projects/ars-utils/ui/public_api.ts","../../../projects/ars-utils/ui/arsedizioni-ars-utils-ui.ts"],"sourcesContent":["\nimport { Searchable, SearchBag, NameValueItem, DateInterval, INode } from '@arsedizioni/ars-utils/core';\nimport type { MatFormFieldAppearance } from '@angular/material/form-field';\n\nexport interface SelectDialogResult {\n selectedItems: SelectableItem[];\n}\n\nexport interface SelectTreeDialogResult {\n selectedItems: ItemNode[];\n}\n\nexport interface SelectDialogLookup {\n items: SelectableItem[];\n filter?: string;\n params?: any;\n owner?: any;\n}\n\nexport interface SelectDialogFilter {\n items?: SelectableItem[];\n filter?: string;\n filterOption?: SelectableFilter;\n owner?: any;\n}\n\nexport interface SelectDialogAppend {\n items: SelectableItem[];\n owner?: any;\n}\n\nexport interface SelectDialogEdit extends SelectDialogAppend {\n item: SelectableItem;\n}\n\nexport interface SelectDialogDelete {\n items: SelectableItem[];\n selectedItems: SelectableItem[];\n owner?: any;\n}\n\nexport interface SelectFileOption {\n description: string;\n value: boolean;\n}\n\nexport interface SelectFile {\n file: File;\n options?: SelectFileOption[];\n}\n\nexport interface SelectableFilter {\n divider?: boolean;\n description?: string;\n group?: number;\n groupName?: string;\n radio?: boolean;\n checked?: boolean;\n value?: any;\n icon?: string;\n title?: string;\n}\n\nexport interface SelectDialogData {\n title: string;\n description?: string;\n okCaption?: string;\n maxItems?: number;\n multipleSelection?: boolean;\n mustSelect?: boolean;\n width?: number;\n filter?: string;\n filters?: SelectableFilter[];\n items?: SelectableItem[];\n lookupFields?: NameValueItem<string>[];\n lookupOnInit?: boolean;\n emptyMessage?: string;\n canLookupWithOptions?: boolean;\n canLookupWithInlineOptions?: boolean;\n canLookup?: boolean;\n canDelete?: boolean;\n canAppend?: boolean;\n canEdit?: boolean;\n canView?: boolean;\n canFilter?: boolean;\n canPaginate?: boolean;\n pageSize?: number;\n appearance?: MatFormFieldAppearance;\n header?: string;\n searchLabel?: string;\n searchButtonLabel?: string;\n}\n\nexport interface SelectTreeDialogData {\n title: string;\n description?: string;\n okCaption?: string;\n nodes?: ItemNode[];\n initialFilter?: string;\n appearance?: MatFormFieldAppearance;\n owner?: any;\n canAppend?: boolean;\n}\n\n\nexport interface SelectFileDialogData {\n title: string;\n description?: string;\n okCaption?: string;\n helpLink?: string;\n helpCaption?: string;\n maxSize?: number;\n options?: any;\n owner?: any;\n accept?: string;\n appearance?: MatFormFieldAppearance;\n}\n\nexport interface SelectPictureFileDialogData extends SelectFileDialogData {\n maxWidth?: number;\n maxHeight?: number;\n}\n\nexport interface ISelectableItem extends Searchable {\n bag: any;\n template: string;\n}\n\nexport class SelectableItem implements ISelectableItem {\n bag: any;\n template!: string;\n\n /** Searchable index bag. */\n searchBag!: SearchBag;\n}\n\nexport class ItemNode implements INode {\n id!: string;\n name!: string;\n count?: number;\n parent?: INode;\n children?: INode[];\n bag?: any;\n}\n\nexport class SelectableNode extends ItemNode implements Searchable {\n expandable: boolean;\n level: number;\n\n /** Searchable index bag. */\n searchBag!: SearchBag;\n\n /**\n * Create a flattened tree node from a source ItemNode.\n * @param item - The source tree node.\n * @param level - The depth level of this node in the tree.\n */\n constructor(item: ItemNode, level: number) {\n super();\n\n this.expandable = !!(item.children?.length);\n this.level = level;\n\n this.id = item.id;\n this.name = item.name;\n this.count = item.count;\n this.parent = item.parent;\n this.bag = item.bag;\n this.children = item.children;\n }\n}\n/**\n * Minimal contract exposed by the send-to dialog to its host.\n * Declared here (and not on the component) so that `ui` never depends on\n * `ui.dialogs.select`, which would create a circular entry point dependency.\n */\nexport interface ISendToDialog {\n /**\n * Replaces the recipient list shown in the dialog.\n * @param recipients - The semicolon separated recipient list.\n */\n updateRecipients(recipients: string): void;\n}\n\nexport interface SendToPopulateData {\n item: SendToDialogResult;\n source: ISendToDialog;\n}\n\nexport interface SendToDialogResult {\n recipients?: string;\n subject?: string;\n text?: string;\n options?: any;\n}\n\nexport interface PromptDialogResult {\n value?: string;\n type?: PromptDialogType;\n options?: any;\n}\n\nexport interface PromptDateDialogResult {\n value?: Date | DateInterval;\n type?: PromptDialogType;\n options?: any;\n}\n\nexport interface PromptOtpDialogResult {\n value?: string;\n}\n\nexport enum PromptDialogType {\n Default = 0,\n Date = 1,\n Number = 2,\n Text = 3,\n DateInterval = 4,\n List = 5,\n Time = 6\n\n}\n\nexport interface PromptDialogData {\n title: string;\n type: PromptDialogType;\n description?: string;\n okCaption?: string;\n cancelCaption?: string;\n initialValue?: any;\n minValue?: number;\n maxValue?: number;\n required?: boolean;\n appearance?: MatFormFieldAppearance;\n options?: any;\n}\n\nexport interface PromptTimeDialogData extends PromptDialogData {\n slots?: string;\n}\n\n","import { Service, signal } from '@angular/core';\r\n\r\n\r\n@Service()\r\nexport class UIService {\r\n\r\n /**\r\n * The default Material form-field appearance used across dialogs and forms.\r\n * Defaults to `'fill'`.\r\n */\r\n readonly appearance = signal<'fill' | 'outline'>('fill');\r\n\r\n /**\r\n * Updates the global form-field appearance.\r\n * @param value - The new appearance value. Falls back to `'fill'` when `undefined` is passed.\r\n */\r\n setAppearance(value: 'fill' | 'outline' | undefined): void {\r\n this.appearance.set(value ?? 'fill');\r\n }\r\n}\r\n","/**\n * @file breakpoints.ts\n * Angular CDK (v22) breakpoint definitions.\n *\n * The canonical tiers map 1:1 to the CDK `Breakpoints` constants from\n * '@angular/cdk/layout' (Material Design specification):\n *\n * xs = Breakpoints.XSmall < 600px\n * sm = Breakpoints.Small >= 600px and < 960px\n * md = Breakpoints.Medium >= 960px and < 1280px\n * lg = Breakpoints.Large >= 1280px and < 1920px\n * xl = Breakpoints.XLarge >= 1920px\n *\n * These are the SAME tiers used by @ngbracket/ngx-layout, so responsive\n * suffixes (fxHide.xs, fxFlex.lt-sm, ...) behave exactly like the legacy\n * library — no breakpoint drift on migrated templates.\n *\n * Derived alias families (composed on the same CDK pixel boundaries; the CDK\n * does not publish range-combining constants):\n *\n * \"and up\" gt-xs | gt-sm | gt-md | gt-lg (ngx-layout compat)\n * \"and down\" lt-sm | lt-md | lt-lg | lt-xl (ngx-layout compat)\n *\n * Device aliases (CDK constants, point-in-time only): usable with\n * MediaObserver.isActive() / isActive$() and *ifBp — NOT as input suffixes:\n *\n * handset | tablet | web |\n * handset-portrait | tablet-portrait | web-portrait |\n * handset-landscape | tablet-landscape | web-landscape\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { Breakpoints } from '@angular/cdk/layout';\n\nexport const CDK_LAYOUT_BREAKPOINTS: Record<string, string> = {\n // ── Canonical ranges — CDK constants verbatim ──────────────────────────────\n 'xs': Breakpoints.XSmall,\n 'sm': Breakpoints.Small,\n 'md': Breakpoints.Medium,\n 'lg': Breakpoints.Large,\n 'xl': Breakpoints.XLarge,\n\n // ── \"and up\" — ngx-layout gt-* style ───────────────────────────────────────\n 'gt-xs': '(min-width: 600px)',\n 'gt-sm': '(min-width: 960px)',\n 'gt-md': '(min-width: 1280px)',\n 'gt-lg': '(min-width: 1920px)',\n\n // ── \"and down\" — ngx-layout lt-* style ─────────────────────────────────────\n // lt-sm = everything below sm = xs only\n 'lt-sm': '(max-width: 599.98px)',\n // lt-md = xs + sm\n 'lt-md': '(max-width: 959.98px)',\n // lt-lg = xs + sm + md\n 'lt-lg': '(max-width: 1279.98px)',\n // lt-xl = xs through lg\n 'lt-xl': '(max-width: 1919.98px)',\n\n // ── CDK device aliases (point-in-time: MediaObserver.isActive / *ifBp) ─────\n 'handset': Breakpoints.Handset,\n 'tablet': Breakpoints.Tablet,\n 'web': Breakpoints.Web,\n 'handset-portrait': Breakpoints.HandsetPortrait,\n 'tablet-portrait': Breakpoints.TabletPortrait,\n 'web-portrait': Breakpoints.WebPortrait,\n 'handset-landscape': Breakpoints.HandsetLandscape,\n 'tablet-landscape': Breakpoints.TabletLandscape,\n 'web-landscape': Breakpoints.WebLandscape,\n};\n\n/**\n * @deprecated Renamed to `CDK_LAYOUT_BREAKPOINTS`: the module now follows the\n * Angular CDK breakpoint scale, not Bootstrap 5. Kept as an alias so existing\n * imports keep compiling; update references when convenient.\n */\nexport const BS5_BREAKPOINTS: Record<string, string> = CDK_LAYOUT_BREAKPOINTS;\n\n/** InjectionToken — override to customise or extend breakpoints */\nexport const LAYOUT_BREAKPOINTS = new InjectionToken<Record<string, string>>(\n 'LAYOUT_BREAKPOINTS',\n { providedIn: 'root', factory: () => CDK_LAYOUT_BREAKPOINTS }\n);\n\n/** Ordered canonical aliases, smallest → largest (the MediaObserver picks the widest match) */\nexport const CANONICAL_ALIASES = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\nexport type BreakpointAlias = typeof CANONICAL_ALIASES[number];\n\n/**\n * All non-canonical alias families.\n * Used by ResponsiveBaseDirective.resolveNonCanonical() to handle lt-* / gt-*\n * inputs without polluting the canonical resolution logic.\n * Device aliases (handset/tablet/web*) are intentionally excluded: they are\n * point-in-time queries for *ifBp / MediaObserver, not directive input suffixes.\n */\nexport const ALIAS_FAMILIES = {\n gt: ['gt-xs', 'gt-sm', 'gt-md', 'gt-lg'],\n lt: ['lt-sm', 'lt-md', 'lt-lg', 'lt-xl'],\n} as const;\n","/**\n * @file media-observer.service.ts (v2 — optimized)\n *\n * ── Optimizations over v1 ─────────────────────────────────────────────────\n *\n * ✅ Single bo.observe() call for all 5 canonical CDK breakpoints.\n * CDK internally uses one MediaQueryList listener per query string.\n * Calling observe() N times creates N listeners — here we create only one.\n *\n * ✅ currentBp$ is shared (shareReplay(1)): all subscribers (effects in\n * directives) receive the same value without redundant re-computations.\n *\n * ✅ The currentBp Signal is derived from the Observable via toSignal():\n * Angular manages the subscription internally and tears it down with root.\n *\n * ✅ isActive() delegates to bo.isMatched() — synchronous, O(1), no extra observer.\n *\n * ✅ isActive$() reuses the shared currentBp$ stream instead of opening\n * a new bo.observe() for every requested alias.\n */\n\nimport { inject, Signal, Service } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Observable, map, distinctUntilChanged, shareReplay } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { LAYOUT_BREAKPOINTS, CANONICAL_ALIASES, BreakpointAlias } from './breakpoints';\n\n@Service()\nexport class MediaObserver {\n private readonly bo = inject(BreakpointObserver);\n private readonly bp = inject(LAYOUT_BREAKPOINTS);\n\n /**\n * A SINGLE CDK observation for all 5 canonical CDK breakpoints.\n * Each breakpoint change emits → we resolve the current alias → shared.\n *\n * shareReplay(1): all subscribers (N directives in the DOM) receive\n * the same value without N separate recomputations.\n */\n readonly currentBp$: Observable<BreakpointAlias> = this.bo\n .observe(CANONICAL_ALIASES.map(a => this.bp[a]))\n .pipe(\n map(() => this._resolve()),\n distinctUntilChanged(), // does not emit if the breakpoint hasn't actually changed\n shareReplay(1) // multicast: N directives, 1 single execution\n );\n\n /**\n * Signal derived from currentBp$.\n * Directives read it via effect() — zero manual subscriptions.\n * providedIn: 'root' ensures the Signal is a singleton.\n */\n readonly currentBp: Signal<BreakpointAlias> = toSignal(this.currentBp$, {\n initialValue: this._resolve()\n });\n\n /**\n * Returns true if the given alias (or raw media query) is currently active.\n * Delegates to bo.isMatched() — synchronous, O(1), no extra observer created.\n *\n * @example\n * media.isActive('md') // true on 960–1279px screens\n * media.isActive('gt-md') // true on 1280px+\n * media.isActive('handset') // CDK device alias (orientation-aware)\n */\n isActive(alias: string): boolean {\n const query = this.bp[alias] ?? alias; // fallback: treat as raw media query\n return this.bo.isMatched(query);\n }\n\n /**\n * Observable true/false for a specific alias.\n * Reuses currentBp$ instead of opening a new bo.observe():\n * no additional MediaQueryList listener is created.\n */\n isActive$(alias: string): Observable<boolean> {\n return this.currentBp$.pipe(\n map(() => this.isActive(alias)),\n distinctUntilChanged()\n );\n }\n\n /** Resolves the active canonical alias (from xl down to xs, mobile-first) */\n private _resolve(): BreakpointAlias {\n for (let i = CANONICAL_ALIASES.length - 1; i >= 0; i--) {\n if (this.bo.isMatched(this.bp[CANONICAL_ALIASES[i]])) {\n return CANONICAL_ALIASES[i];\n }\n }\n return 'xs';\n }\n}\n","/**\n * @file if-bp.directive.ts (Angular 21 — signals)\n *\n * *ifBp — structural directive that adds/removes an element from the DOM\n * based on the active Bootstrap 5 breakpoint.\n *\n * Unlike [fxShow]/[fxHide] (which use display:none), *ifBp actually adds and\n * removes the element from the DOM — ideal for heavy components like mat-sidenav.\n *\n * Angular 21 changes:\n * • @Input setters replaced by input() / input.required()\n * • computed() derives alias list and active state reactively\n * • effect() in constructor handles DOM add/remove (no OnInit/OnChanges)\n * • No Injector, EffectRef, _initialized guard or manual subscriptions\n *\n * Usage:\n * <mat-sidenav *ifBp=\"'gt-md'\"> only rendered on lg and above\n * <div *ifBp=\"'xs'\">Mobile only</div>\n * <div *ifBp=\"'sm md'\">sm and md only (space-separated list of aliases)</div>\n * <div *ifBp=\"'gt-md'; else mobileRef\">Desktop view</div>\n * <ng-template #mobileRef>Mobile fallback</ng-template>\n *\n * Accepted alias values (Angular CDK tiers):\n * xs | sm | md | lg | xl\n * gt-xs … gt-lg ('and up' ranges)\n * lt-sm … lt-xl ('and down' ranges)\n * handset | tablet | web (+ -portrait / -landscape) — CDK device aliases\n * Space-separated list of any of the above\n */\n\nimport {\n Directive, TemplateRef, ViewContainerRef,\n computed, effect, inject, input\n} from '@angular/core';\nimport { MediaObserver } from './media-observer.service';\n\n@Directive({\n selector: '[ifBp]',\n standalone: true\n})\nexport class IfBpDirective {\n private readonly tpl = inject(TemplateRef<unknown>);\n private readonly vcr = inject(ViewContainerRef);\n private readonly media = inject(MediaObserver);\n\n /** Space-separated list of breakpoint aliases, e.g. `'lg gt-lg handset'` */\n readonly ifBp = input.required<string>();\n /** Optional else-template shown when no alias is active */\n readonly ifBpElse = input<TemplateRef<unknown>>();\n\n private readonly _aliases = computed(() => this.ifBp().trim().split(/\\s+/));\n private readonly _isActive = computed(() => {\n this.media.currentBp(); // reactive dependency — re-evaluates on breakpoint change\n return this._aliases().some(alias => this.media.isActive(alias));\n });\n\n /** Which template is currently rendered. `undefined` = nothing decided yet. */\n private _rendered: 'main' | 'else' | 'none' | undefined;\n /** The TemplateRef instance currently rendered (detects [ifBpElse] swaps). */\n private _renderedTpl: TemplateRef<unknown> | null = null;\n\n constructor() {\n effect(() => {\n const active = this._isActive();\n const elseTpl = this.ifBpElse();\n const next: 'main' | 'else' | 'none' = active ? 'main' : elseTpl ? 'else' : 'none';\n const nextTpl: TemplateRef<unknown> | null =\n next === 'main' ? this.tpl : next === 'else' ? elseTpl! : null;\n\n // Dirty-check on BOTH state and template instance: a swapped [ifBpElse]\n // reference must re-render even when the state stays 'else'.\n if (next === this._rendered && nextTpl === this._renderedTpl) return;\n\n this.vcr.clear();\n if (nextTpl) {\n this.vcr.createEmbeddedView(nextTpl);\n }\n this._rendered = next;\n this._renderedTpl = nextTpl;\n });\n }\n}\n","/**\n * @file responsive-base.directive.ts (v5 — Angular 21 signals)\n *\n * ── What changed in v5 ────────────────────────────────────────────────────\n *\n * Full Angular 21 signals refactor:\n *\n * • resolve(), resolveNonCanonical(), resolveAll() are now PURE EXPORTED\n * FUNCTIONS that accept currentBp and isActive as parameters.\n * Directives call them from computed() or effect() with no \"this\" binding.\n *\n * • ResponsiveBaseDirective is now a thin utility base:\n * – Only injects ElementRef, Renderer2, MediaObserver, PLATFORM_ID.\n * – Exposes safeSetStyle() helper.\n * – No lifecycle hooks, no Injector, no EffectRef, no abstract apply().\n *\n * • Each concrete directive uses:\n * – input() for every @Input (signals, no more setters + _v/_nc maps)\n * – computed() to build BpValues / NcValues maps and derive resolved CSS\n * – effect() in the constructor to write to the DOM\n *\n * Benefits vs v4:\n * ✅ Zero manual lifecycle/subscription management (no OnInit/OnChanges/EffectRef)\n * ✅ Angular's reactive graph provides built-in dirty-checking and memoization\n * ✅ DOM writes happen only when the resolved CSS value actually changes\n * ✅ No more Injector injection just to create effects\n *\n * ── Resolution strategy (unchanged) ──────────────────────────────────────\n *\n * Canonical aliases (xs … xl, CDK tiers) → exact match, then the unsuffixed value\n * Non-canonical (lt-*, gt-*) → point-in-time isActive() checks\n * Final order: resolveNonCanonical() wins over resolve()\n */\n\nimport {\n Directive,\n inject, ElementRef, Renderer2, PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { MediaObserver } from './media-observer.service';\nimport { BreakpointAlias } from './breakpoints';\nimport { BpValues, NcValues } from './responsive-inputs.mixin';\n\n/**\n * All non-canonical alias keys in priority order (most specific first).\n * lt-sm is \"below sm\" (= xs only), lt-md is \"below md\" (= xs+sm), etc.\n * Narrower range = higher priority = checked first.\n */\nexport const NON_CANONICAL_PRIORITY = [\n // lt-* from narrowest to widest\n 'lt-sm', 'lt-md', 'lt-lg', 'lt-xl',\n // gt-* from widest to narrowest\n 'gt-xs', 'gt-sm', 'gt-md', 'gt-lg',\n] as const;\n\n// ── Pure resolution functions ─────────────────────────────────────────────────\n// These are standalone functions (not class methods) so they can be called\n// from computed() closures without capturing `this`.\n\n/**\n * Resolution with two-tier priority:\n *\n * 1. Exact breakpoint match (e.g. currentBp='sm' → values['sm'])\n * 2. Generic `default` value (the unsuffixed input, e.g. [fxFlex]=\"49\")\n *\n * There is deliberately NO cascade between canonical tiers. A suffixed value belongs to its own\n * breakpoint and to no other, which is what ngx-layout does and what fxShow/fxHide already did\n * here. The cascade this replaces made `fxFlex.xs=\"100\"` with no base `fxFlex` apply at every\n * width — the exact opposite of what the `.xs` suffix reads like.\n *\n * So `[fxFlex]=\"49\" [fxFlex.xs]=\"100\"` gives xs→100 and sm+→49, while `[fxFlex.xs]=\"100\"` on its\n * own gives xs→100 and sm+→no style at all.\n * @param values - The value declared for each canonical alias, plus the unsuffixed `default`.\n * @param currentBp - The canonical alias currently active.\n * @returns The value to apply, or `undefined` when no rule covers the current breakpoint.\n */\nexport function resolve<T>(\n values: BpValues<T>,\n currentBp: BreakpointAlias,\n): T | undefined {\n // 1. Exact match\n const exact = values[currentBp as keyof BpValues<T>];\n if (exact !== undefined) return exact;\n\n // 2. The unsuffixed value, which applies wherever nothing more specific does\n return (values as Record<string, T | undefined>)['default'];\n}\n\n/**\n * Non-canonical point-in-time check: iterates NON_CANONICAL_PRIORITY and\n * returns the value for the first alias that isActive().\n */\nexport function resolveNonCanonical<T>(\n nc: NcValues<T>,\n isActive: (alias: string) => boolean,\n): T | undefined {\n for (const alias of NON_CANONICAL_PRIORITY) {\n const v = (nc as Record<string, T | undefined>)[alias];\n if (v !== undefined && isActive(alias)) return v;\n }\n return undefined;\n}\n\n/**\n * Full resolution: non-canonical overrides win over the canonical cascade.\n *\n * Usage inside computed():\n * const resolved = computed(() =>\n * resolveAll(this._v(), this._nc(), this.media.currentBp(), a => this.media.isActive(a))\n * );\n */\nexport function resolveAll<T>(\n canonical: BpValues<T>,\n nonCanonical: NcValues<T>,\n currentBp: BreakpointAlias,\n isActive: (alias: string) => boolean,\n): T | undefined {\n return resolveNonCanonical(nonCanonical, isActive) ?? resolve(canonical, currentBp);\n}\n\n// ── Base directive ─────────────────────────────────────────────────────────────\n\n@Directive()\nexport abstract class ResponsiveBaseDirective {\n protected readonly el = inject(ElementRef<HTMLElement>);\n protected readonly r2 = inject(Renderer2);\n protected readonly media = inject(MediaObserver);\n\n /** true in browser, false in SSR */\n protected readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /** SSR-safe style setter. Pass null/empty string to remove the property. */\n protected safeSetStyle(prop: string, value: string | null): void {\n if (value === null || value === '') {\n this.r2.removeStyle(this.el.nativeElement, prop);\n } else {\n this.r2.setStyle(this.el.nativeElement, prop, value);\n }\n }\n}\n","/**\n * @file fx-layout.directive.ts (Angular 22 — signals)\n *\n * [fxLayout] — sets display + flex-direction (+ optional flex-wrap) on the host.\n * [fxLayoutWrap] — dedicated alias for flex-wrap (original ngx-layout compat).\n *\n * ngx-layout parity (ported from @ngbracket layout-validator.ts):\n * • Value format: \"<direction> [wrap] [inline]\" in any ngx-accepted spelling\n * • Wrap aliases: reverse | wrap-reverse | reverse-wrap → wrap-reverse,\n * no | none | nowrap → nowrap, anything else truthy → wrap\n * • 'inline' modifier → display: inline-flex\n * • No wrap token → flex-wrap REMOVED (ngx emits null), not forced to nowrap\n * • box-sizing: border-box on the container\n * • display preserved when currently 'none' (so fxHide is never overridden)\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nexport const LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse'] as const;\nconst INLINE = 'inline';\n\n/** Port of ngx-layout validateWrapValue(). */\nexport function validateWrapValue(value: string): string {\n if (value) {\n switch (value.toLowerCase()) {\n case 'reverse':\n case 'wrap-reverse':\n case 'reverse-wrap':\n return 'wrap-reverse';\n case 'no':\n case 'none':\n case 'nowrap':\n return 'nowrap';\n default:\n return 'wrap';\n }\n }\n return value;\n}\n\n/** Port of ngx-layout validateValue(): [direction, wrap, inline]. */\nexport function validateLayoutValue(value: string): [string, string, boolean] {\n value = value?.toLowerCase() ?? '';\n let [direction, wrap = '', inline = ''] = value.split(' ');\n if (!LAYOUT_VALUES.find(x => x === direction)) direction = LAYOUT_VALUES[0];\n if (wrap === INLINE) {\n wrap = inline !== INLINE ? inline : '';\n inline = INLINE;\n }\n // Always return a string for wrap: undefined here used to make\n // resolveParentFlow report hasWrap=true on plain \"row\"/\"column\" containers.\n return [direction, validateWrapValue(wrap) || '', !!inline];\n}\n\n/** Port of ngx-layout buildLayoutCSS(): null values mean \"remove the property\". */\nexport function buildLayoutCSS(value: string): Record<string, string | null> {\n const [direction, wrap, inline] = validateLayoutValue(value);\n return {\n 'display': inline ? 'inline-flex' : 'flex',\n 'box-sizing': 'border-box',\n 'flex-direction': direction,\n 'flex-wrap': wrap || null\n };\n}\n\n/**\n * Resolves the flex flow of the parent container for a flex child.\n * Prefers the reactive FxLayoutDirective instance when it sits on the DIRECT\n * parent element (signal read → re-evaluates with the parent); falls back to\n * getComputedStyle for plain-CSS flex parents; SSR-safe defaults.\n */\nexport function resolveParentFlow(\n host: HTMLElement,\n parentLayout: FxLayoutDirective | null,\n isBrowser: boolean\n): { direction: string; hasWrap: boolean } {\n if (parentLayout && parentLayout.hostElement === host.parentElement) {\n return {\n direction: parentLayout.direction(), // signal: reactive\n hasWrap: parentLayout.wrap() !== '' && parentLayout.wrap() !== 'nowrap'\n };\n }\n if (isBrowser && host.parentElement) {\n const cs = getComputedStyle(host.parentElement);\n return {\n direction: cs.flexDirection || 'row',\n hasWrap: !!cs.flexWrap && cs.flexWrap !== 'nowrap'\n };\n }\n return { direction: 'row', hasWrap: false };\n}\n\n@Directive({\n selector: `\n [fxLayout],\n [fxLayout.xs],\n [fxLayout.sm],\n [fxLayout.md],\n [fxLayout.lg],\n [fxLayout.xl],\n [fxLayout.lt-sm],\n [fxLayout.lt-md],\n [fxLayout.lt-lg],\n [fxLayout.lt-xl],\n [fxLayout.gt-xs],\n [fxLayout.gt-sm],\n [fxLayout.gt-md],\n [fxLayout.gt-lg]\n `,\n standalone: true\n})\nexport class FxLayoutDirective extends ResponsiveBaseDirective {\n readonly fxLayout = input<string>('row', { alias: 'fxLayout' });\n readonly xs = input<string>(undefined, { alias: 'fxLayout.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayout.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayout.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayout.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayout.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayout.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayout.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayout.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayout.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayout.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayout.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayout.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayout.gt-lg' });\n\n private readonly _parsed = computed(() =>\n validateLayoutValue(resolveAll(\n { default: this.fxLayout(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'row')\n );\n\n /** Reactive layout parts — readable by FxFlex / FxLayoutAlign / FxFlexOffset. */\n readonly direction = computed(() => this._parsed()[0]);\n readonly wrap = computed(() => this._parsed()[1]);\n readonly inline = computed(() => this._parsed()[2]);\n\n /** Host element, exposed for direct-parent matching by child directives. */\n get hostElement(): HTMLElement { return this.el.nativeElement; }\n\n constructor() {\n super();\n effect(() => {\n const [dir, wrap, inline] = this._parsed();\n // ngx-layout parity: never override display:none set by fxHide\n // (LayoutStyleBuilder: display === 'none' ? display : css.display)\n if (this.el.nativeElement.style.display !== 'none') {\n this.safeSetStyle('display', inline ? 'inline-flex' : 'flex');\n }\n this.safeSetStyle('box-sizing', 'border-box');\n this.safeSetStyle('flex-direction', dir);\n this.safeSetStyle('flex-wrap', wrap || null);\n });\n }\n}\n\n@Directive({\n selector: `\n [fxLayoutWrap],\n [fxLayoutWrap.xs],\n [fxLayoutWrap.sm],\n [fxLayoutWrap.md],\n [fxLayoutWrap.lg],\n [fxLayoutWrap.xl],\n [fxLayoutWrap.lt-sm],\n [fxLayoutWrap.lt-md],\n [fxLayoutWrap.lt-lg],\n [fxLayoutWrap.lt-xl],\n [fxLayoutWrap.gt-xs],\n [fxLayoutWrap.gt-sm],\n [fxLayoutWrap.gt-md],\n [fxLayoutWrap.gt-lg]\n `,\n standalone: true\n})\nexport class FxLayoutWrapDirective extends ResponsiveBaseDirective {\n readonly fxLayoutWrap = input<string>('wrap', { alias: 'fxLayoutWrap' });\n readonly xs = input<string>(undefined, { alias: 'fxLayoutWrap.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayoutWrap.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayoutWrap.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayoutWrap.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayoutWrap.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutWrap.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutWrap.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutWrap.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutWrap.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutWrap.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutWrap.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutWrap.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutWrap.gt-lg' });\n\n private readonly _wrap = computed(() =>\n validateWrapValue(resolveAll(\n { default: this.fxLayoutWrap(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) || 'wrap')\n );\n\n constructor() {\n super();\n effect(() => { this.safeSetStyle('flex-wrap', this._wrap()); });\n }\n}\n","/**\n * @file fx-flex-extras.directives.ts (Angular 21 — signals)\n *\n * Flex child helper directives:\n * [fxFlexOrder] — CSS order\n * [fxFlexOffset] — margin-inline-start (RTL-safe)\n * [fxFlexAlign] — align-self override\n * [fxFlexFill] — fills the container (width/height 100%)\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() derives the resolved CSS values\n * • effect() in constructor writes to DOM — no lifecycle hooks\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, inject, input, isDevMode } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\nimport { FxLayoutDirective, resolveParentFlow } from './fx-layout.directive';\n\n@Directive({\n selector: `\n [fxFlexOrder],\n [fxFlexOrder.xs],\n [fxFlexOrder.sm],\n [fxFlexOrder.md],\n [fxFlexOrder.lg],\n [fxFlexOrder.xl],\n [fxFlexOrder.lt-sm],\n [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg],\n [fxFlexOrder.lt-xl],\n [fxFlexOrder.gt-xs],\n [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md],\n [fxFlexOrder.gt-lg]\n `,\n standalone: true\n})\nexport class FxFlexOrderDirective extends ResponsiveBaseDirective {\n readonly fxFlexOrder = input<string>(undefined, { alias: 'fxFlexOrder' });\n readonly xs = input<string>(undefined, { alias: 'fxFlexOrder.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlexOrder.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlexOrder.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlexOrder.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlexOrder.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxFlexOrder.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlexOrder.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlexOrder.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlexOrder.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxFlexOrder.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlexOrder.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlexOrder.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlexOrder.gt-lg' });\n\n private readonly _order = computed(() =>\n resolveAll(\n { default: this.fxFlexOrder(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? '0'\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._order();\n if (isDevMode() && isNaN(Number(v))) console.warn(`[fxFlexOrder] Non-numeric value: \"${v}\"`);\n this.safeSetStyle('order', v);\n });\n }\n}\n\n// ─── fxFlexOffset ────────────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxFlexOffset],\n [fxFlexOffset.xs],\n [fxFlexOffset.sm],\n [fxFlexOffset.md],\n [fxFlexOffset.lg],\n [fxFlexOffset.xl],\n [fxFlexOffset.lt-sm],\n [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg],\n [fxFlexOffset.lt-xl],\n [fxFlexOffset.gt-xs],\n [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md],\n [fxFlexOffset.gt-lg]\n `,\n standalone: true\n})\nexport class FxFlexOffsetDirective extends ResponsiveBaseDirective {\n /** Ancestor FxLayout (matched to the direct parent inside resolveParentFlow). */\n private readonly parentLayout = inject(FxLayoutDirective, { skipSelf: true, optional: true });\n\n readonly fxFlexOffset = input<string>(undefined, { alias: 'fxFlexOffset' });\n readonly xs = input<string>(undefined, { alias: 'fxFlexOffset.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlexOffset.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlexOffset.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlexOffset.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlexOffset.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxFlexOffset.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlexOffset.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlexOffset.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlexOffset.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxFlexOffset.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlexOffset.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlexOffset.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlexOffset.gt-lg' });\n\n private readonly _offset = computed(() =>\n resolveAll(\n { default: this.fxFlexOffset(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? '0'\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._offset();\n // ngx-layout parity: when the parent flex container is a column, offset\n // pushes down (margin-top); otherwise it pushes on the inline axis\n // (margin-inline-start, RTL-safe). Direction comes reactively from the\n // parent FxLayoutDirective when present, else from getComputedStyle.\n const { direction } = resolveParentFlow(this.el.nativeElement, this.parentLayout, this.isBrowser);\n const isColumn = direction.indexOf('column') > -1;\n if (isColumn) {\n this.safeSetStyle('margin-inline-start', null);\n this.safeSetStyle('margin-top', v);\n } else {\n this.safeSetStyle('margin-top', null);\n this.safeSetStyle('margin-inline-start', v);\n }\n });\n }\n}\n\n// ─── fxFlexAlign ─────────────────────────────────────────────────────────────\n\ntype AlignSelf = 'auto' | 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nconst ALIGN_SELF_MAP: Record<string, string> = {\n start: 'flex-start', end: 'flex-end', center: 'center',\n stretch: 'stretch', baseline: 'baseline', auto: 'auto'\n};\n\n@Directive({\n selector: `\n [fxFlexAlign],\n [fxFlexAlign.xs],\n [fxFlexAlign.sm],\n [fxFlexAlign.md],\n [fxFlexAlign.lg],\n [fxFlexAlign.xl],\n [fxFlexAlign.lt-sm],\n [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg],\n [fxFlexAlign.lt-xl],\n [fxFlexAlign.gt-xs],\n [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md],\n [fxFlexAlign.gt-lg]\n `,\n standalone: true\n})\nexport class FxFlexAlignDirective extends ResponsiveBaseDirective {\n readonly fxFlexAlign = input<AlignSelf>(undefined, { alias: 'fxFlexAlign' });\n readonly xs = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xs' });\n readonly sm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm' });\n readonly md = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md' });\n readonly lg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg' });\n readonly xl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xl' });\n readonly ltSm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-sm' });\n readonly ltMd = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-md' });\n readonly ltLg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-lg' });\n readonly ltXl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-xl' });\n readonly gtXs = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-xs' });\n readonly gtSm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-sm' });\n readonly gtMd = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-md' });\n readonly gtLg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-lg' });\n\n private readonly _alignSelf = computed(() => {\n const v = resolveAll(\n { default: this.fxFlexAlign(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'stretch';\n if (isDevMode() && !ALIGN_SELF_MAP[v]) console.warn(`[fxFlexAlign] Unknown value: \"${v}\". Valid: ${Object.keys(ALIGN_SELF_MAP).join(', ')}`);\n return ALIGN_SELF_MAP[v] ?? v;\n });\n\n constructor() {\n super();\n effect(() => { this.safeSetStyle('align-self', this._alignSelf()); });\n }\n}\n\n// ─── fxFlexFill ──────────────────────────────────────────────────────────────\n// fxFlexFill is intentionally non-responsive in its most common usage,\n// but supports breakpoint suffixes for edge cases where fill must be toggled.\n\ntype FillValue = 'fill' | 'none' | '' | boolean;\nfunction toBool(v: FillValue | undefined): boolean | undefined {\n if (v === undefined) return undefined;\n if (typeof v === 'boolean') return v;\n if (v === '') return true;\n return v !== 'none';\n}\n\n@Directive({\n selector: `\n [fxFlexFill],\n [fxFill],\n [fxFlexFill.xs],\n [fxFlexFill.sm],\n [fxFlexFill.md],\n [fxFlexFill.lg],\n [fxFlexFill.xl],\n [fxFlexFill.lt-sm],\n [fxFlexFill.lt-md],\n [fxFlexFill.lt-lg],\n [fxFlexFill.lt-xl],\n [fxFlexFill.gt-xs],\n [fxFlexFill.gt-sm],\n [fxFlexFill.gt-md],\n [fxFlexFill.gt-lg]\n `,\n standalone: true\n})\nexport class FxFlexFillDirective extends ResponsiveBaseDirective {\n readonly fxFlexFill = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill', transform: toBool });\n readonly fxFill = input<boolean, FillValue>(undefined, { alias: 'fxFill', transform: toBool });\n readonly xs = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xs', transform: toBool });\n readonly sm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm', transform: toBool });\n readonly md = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md', transform: toBool });\n readonly lg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg', transform: toBool });\n readonly xl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xl', transform: toBool });\n readonly ltSm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-sm', transform: toBool });\n readonly ltMd = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-md', transform: toBool });\n readonly ltLg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-lg', transform: toBool });\n readonly ltXl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-xl', transform: toBool });\n readonly gtXs = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-xs', transform: toBool });\n readonly gtSm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-sm', transform: toBool });\n readonly gtMd = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-md', transform: toBool });\n readonly gtLg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-lg', transform: toBool });\n\n private readonly _active = computed(() =>\n (resolveAll(\n // fxFill is a shorthand alias for the default; fxFlexFill wins if both set\n { default: this.fxFlexFill() ?? this.fxFill(),\n xs: this.xs() as boolean | undefined, sm: this.sm() as boolean | undefined,\n md: this.md() as boolean | undefined, lg: this.lg() as boolean | undefined,\n xl: this.xl() as boolean | undefined },\n { 'lt-sm': this.ltSm() as boolean | undefined, 'lt-md': this.ltMd() as boolean | undefined,\n 'lt-lg': this.ltLg() as boolean | undefined, 'lt-xl': this.ltXl() as boolean | undefined,\n 'gt-xs': this.gtXs() as boolean | undefined, 'gt-sm': this.gtSm() as boolean | undefined,\n 'gt-md': this.gtMd() as boolean | undefined, 'gt-lg': this.gtLg() as boolean | undefined },\n this.media.currentBp(), a => this.media.isActive(a)\n ) as boolean | undefined) ?? true\n );\n\n constructor() {\n super();\n effect(() => {\n const active = this._active();\n const v = active ? '100%' : null;\n this.safeSetStyle('margin', active ? '0' : null);\n this.safeSetStyle('width', v);\n this.safeSetStyle('height', v);\n this.safeSetStyle('min-width', v);\n this.safeSetStyle('min-height', v);\n });\n }\n}\n","/**\n * @file fx-flex.directive.ts (Angular 22 — signals)\n *\n * [fxFlex] — flex shorthand on a flex child element.\n *\n * The CSS builder is a faithful port of @ngbracket/ngx-layout\n * FlexStyleBuilder.buildStyles + validateBasis, including:\n * • direction-aware min/max (max-width vs max-height by parent flow)\n * • percentage basis → flex: G S 100% + max-* capped to the percentage\n * • fixed units → flex: G S <px> + min/max-* locks\n * • empty basis → '0%' in row, '0.000000001px' in column (useColumnBasisZero)\n * • calc() support (flex-grow/shrink/basis split, operator padding)\n * • wrap-container basis rewrite (ngx issue 660)\n *\n * Extensions beyond ngx-layout (documented):\n * • fxFlex=\"*\" → fills like fxFlex=\"grow\" (1 1 100%).\n * A bare fxFlex keeps the ngx default: 1 1 0%.\n * • addFlexToParent → if the direct parent is not a flex container, this directive\n * sets display:flex on it so children work without fxLayout\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, inject, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\nimport { FxLayoutDirective, resolveParentFlow } from './fx-layout.directive';\n\n// ─── Ports of ngx-layout basis-validator.ts ──────────────────────────────────\n\n/** Pads calc() operators with whitespace (ngx _validateCalcValue). */\nfunction validateCalcValue(calc: string): string {\n return calc.replace(/[\\s]/g, '').replace(/[\\/\\*\\+\\-]/g, ' $& ');\n}\n\n/** Port of ngx validateBasis(): returns [grow, shrink, basis]. */\nexport function validateBasis(basis: string, grow = '1', shrink = '1'): string[] {\n let parts = [grow, shrink, basis];\n const j = basis.indexOf('calc');\n if (j > 0) {\n parts[2] = validateCalcValue(basis.substring(j).trim());\n const matches = basis.substring(0, j).trim().split(' ');\n if (matches.length === 2) {\n parts[0] = matches[0];\n parts[1] = matches[1];\n }\n } else if (j === 0) {\n parts[2] = validateCalcValue(basis.trim());\n } else {\n const matches = basis.split(' ');\n parts = matches.length === 3 ? matches : [grow, shrink, basis];\n }\n return parts;\n}\n\n// ─── Port of ngx-layout FlexStyleBuilder.buildStyles ─────────────────────────\n\nconst CLEAR_STYLES: Record<string, string | null> = {\n 'max-width': null, 'max-height': null, 'min-width': null, 'min-height': null\n};\n\n/**\n * Builds the complete flex style map for a child, given the raw fxFlex value\n * and the parent flow. `null` values mean \"remove this property\".\n * Matches ngx-layout output exactly (useColumnBasisZero = true, the default).\n */\nexport function buildFlexStyles(\n value: string,\n direction: string,\n hasWrap: boolean\n): Record<string, string | null> {\n const isHorizontal = direction.indexOf('row') > -1 || direction.indexOf('column') === -1;\n const parts = validateBasis(String(value).replace(';', ''));\n let grow: string | number = parts[0];\n let shrink: string | number = parts[1];\n let basis = parts[2];\n\n const max = isHorizontal ? 'max-width' : 'max-height';\n const min = isHorizontal ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || basis === 'auto';\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits =\n String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n let isValue = hasCalc || hasUnits;\n\n // eslint-disable-next-line eqeqeq\n grow = grow == '0' ? 0 : grow;\n // eslint-disable-next-line eqeqeq\n shrink = shrink == '0' ? 0 : shrink;\n const isFixed = !grow && !shrink;\n\n let css: Record<string, string | number | null> = {};\n\n switch (basis || '') {\n case '':\n // useColumnBasisZero default = true (ngx LAYOUT_CONFIG default)\n basis = isHorizontal ? '0%' : '0.000000001px';\n break;\n case 'initial':\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n if (!isValue && !isPercent && !isNaN(basis as unknown as number)) {\n basis = basis + '%';\n }\n if (basis === '0%') isValue = true; // ngx fix #280\n if (basis === '0px') basis = '0%';\n if (hasCalc) { // ngx fix #5345\n css = { ...CLEAR_STYLES, 'flex-grow': grow, 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%' };\n } else {\n css = { ...CLEAR_STYLES, flex: `${grow} ${shrink} ${isValue ? basis : '100%'}` };\n }\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = { ...CLEAR_STYLES, 'flex-grow': grow, 'flex-shrink': shrink, 'flex-basis': basis };\n } else {\n css = { ...CLEAR_STYLES, flex: `${grow} ${shrink} ${basis}` };\n }\n }\n\n // ngx fixes #277 / #534 / #728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n if (!css[min] && !css[max]) {\n // ngx fix #528\n if (hasCalc) {\n css = { ...CLEAR_STYLES, 'flex-grow': grow, 'flex-shrink': shrink, 'flex-basis': basis };\n } else {\n css = { ...CLEAR_STYLES, flex: `${grow} ${shrink} ${basis}` };\n }\n } else if (hasWrap) {\n // ngx fix #660\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max]\n ? (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`)\n : (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n\n // Normalize numbers to strings for the renderer\n const out: Record<string, string | null> = {};\n for (const [k, v] of Object.entries(css)) out[k] = v === null ? null : String(v);\n return out;\n}\n\n/**\n * Resolves the non-ngx `fxFlex=\"*\"` extension to `grow` (`flex: 1 1 100%`, max-* 100%).\n * Every other value — including a bare `fxFlex` ('') — is returned unchanged, so a bare\n * fxFlex keeps the ngx-layout default (`1 1 0%` in row, `1 1 0.000000001px` in column).\n * @param raw - The resolved fxFlex value for the active breakpoint.\n * @returns The value to pass to `buildFlexStyles`.\n */\nexport function resolveFlexInput(raw: string): string {\n return raw === '*' ? 'grow' : raw;\n}\n\n@Directive({\n selector: `\n [fxFlex],\n [fxFlex.xs],\n [fxFlex.sm],\n [fxFlex.md],\n [fxFlex.lg],\n [fxFlex.xl],\n [fxFlex.lt-sm],\n [fxFlex.lt-md],\n [fxFlex.lt-lg],\n [fxFlex.lt-xl],\n [fxFlex.gt-xs],\n [fxFlex.gt-sm],\n [fxFlex.gt-md],\n [fxFlex.gt-lg]\n `,\n standalone: true\n})\nexport class FxFlexDirective extends ResponsiveBaseDirective {\n /** Direct ancestor FxLayout (any level); matched to the direct parent in the effect. */\n private readonly parentLayout = inject(FxLayoutDirective, { skipSelf: true, optional: true });\n\n readonly fxFlex = input<string>(undefined, { alias: 'fxFlex' });\n readonly xs = input<string>(undefined, { alias: 'fxFlex.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlex.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlex.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlex.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlex.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxFlex.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlex.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlex.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlex.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxFlex.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlex.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlex.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlex.gt-lg' });\n\n private readonly _rawFlex = computed(() =>\n resolveAll(\n { default: this.fxFlex(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n /** CSS properties applied on the last effect run (for stale cleanup). */\n private _applied = new Set<string>();\n\n constructor() {\n super();\n effect(() => {\n let raw = this._rawFlex();\n const el = this.el.nativeElement;\n\n // No rule matches the current breakpoint → remove everything we applied\n if (raw === undefined) {\n for (const prop of this._applied) this.r2.removeStyle(el, prop);\n this._applied.clear();\n return;\n }\n\n // addFlexToParent (ngx-layout parity): when the direct parent is not a flex\n // container, make it one so fxFlex children behave even without an explicit fxLayout.\n const directParentHasLayout = !!this.parentLayout && this.parentLayout.hostElement === el.parentElement;\n if (this.isBrowser && el.parentElement && !directParentHasLayout) {\n const pdisplay = getComputedStyle(el.parentElement).display;\n if (pdisplay !== 'flex' && pdisplay !== 'inline-flex') {\n this.r2.setStyle(el.parentElement, 'display', 'flex');\n }\n }\n\n // `*` => grow (1 1 100%); a bare fxFlex keeps the ngx default (1 1 0%).\n raw = resolveFlexInput(raw);\n\n // Parent flow: reactive via FxLayoutDirective signals when it is the\n // direct parent; getComputedStyle fallback for plain-CSS flex parents.\n const { direction, hasWrap } = resolveParentFlow(el, this.parentLayout, this.isBrowser);\n\n const styles = buildFlexStyles(raw, direction, hasWrap);\n const nextKeys = new Set<string>(\n Object.entries(styles).filter(([, v]) => v !== null).map(([k]) => k)\n );\n\n // Remove previously-applied styles that are no longer set BEFORE writing the new\n // ones. Order matters: when the value toggles between the `flex` shorthand (e.g.\n // \"100\" / \"50%\") and the split longhands `flex-grow/flex-shrink/flex-basis` (e.g. a\n // calc() value), removing the stale longhands *after* setting `flex` would wipe the\n // shorthand. Cleaning up first keeps the final `flex` (or longhands) intact.\n for (const prop of this._applied) {\n if (!nextKeys.has(prop)) this.r2.removeStyle(el, prop);\n }\n for (const [prop, value] of Object.entries(styles)) {\n if (value === null) this.r2.removeStyle(el, prop);\n else this.r2.setStyle(el, prop, value);\n }\n this._applied = nextKeys;\n });\n }\n}\n","/**\n * @file fx-grid.directives.ts (Angular 21 — signals)\n *\n * CSS Grid responsive directives.\n *\n * [fxGrid] — display:grid + responsive grid-template-columns.\n * Accepts [fxGridRows] and [fxGridGap] inputs on same host.\n * [fxGridColumn] — grid-column on a child\n * [fxGridArea] — grid-area on a child\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • FxGridDirective uses 3 pairs of computed() for cols/rows/gap maps\n * • Single effect() in constructor writes all 3 CSS props\n * • Null/undefined props are removed (no style leak)\n *\n * Unitless numeric gap values are normalized to px (\"16\" → \"16px\").\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nfunction normalizeGap(raw: string | undefined): string | undefined {\n if (!raw) return undefined;\n return raw.trim().split(/\\s+/)\n .map(v => /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v)\n .join(' ');\n}\n\n// ─── fxGrid (container) ──────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxGrid],\n [fxGrid.xs],\n [fxGrid.sm],\n [fxGrid.md],\n [fxGrid.lg],\n [fxGrid.xl],\n [fxGrid.lt-sm],\n [fxGrid.lt-md],\n [fxGrid.lt-lg],\n [fxGrid.lt-xl],\n [fxGrid.gt-xs],\n [fxGrid.gt-sm],\n [fxGrid.gt-md],\n [fxGrid.gt-lg]\n `,\n standalone: true,\n host: { '[style.display]': '\"grid\"' }\n})\nexport class FxGridDirective extends ResponsiveBaseDirective {\n // ── grid-template-columns ──────────────────────────────────────────────────\n readonly fxGrid = input<string>(undefined, { alias: 'fxGrid' });\n readonly xs = input<string>(undefined, { alias: 'fxGrid.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxGrid.sm' });\n readonly md = input<string>(undefined, { alias: 'fxGrid.md' });\n readonly lg = input<string>(undefined, { alias: 'fxGrid.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxGrid.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxGrid.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxGrid.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxGrid.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxGrid.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxGrid.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxGrid.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxGrid.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxGrid.gt-lg' });\n\n // ── grid-template-rows ────────────────────────────────────────────────────\n readonly fxGridRows = input<string>(undefined, { alias: 'fxGridRows' });\n readonly rowsXs = input<string>(undefined, { alias: 'fxGridRows.xs' });\n readonly rowsSm = input<string>(undefined, { alias: 'fxGridRows.sm' });\n readonly rowsMd = input<string>(undefined, { alias: 'fxGridRows.md' });\n readonly rowsLg = input<string>(undefined, { alias: 'fxGridRows.lg' });\n readonly rowsXl = input<string>(undefined, { alias: 'fxGridRows.xl' });\n readonly rowsLtSm = input<string>(undefined, { alias: 'fxGridRows.lt-sm' });\n readonly rowsLtMd = input<string>(undefined, { alias: 'fxGridRows.lt-md' });\n readonly rowsLtLg = input<string>(undefined, { alias: 'fxGridRows.lt-lg' });\n readonly rowsLtXl = input<string>(undefined, { alias: 'fxGridRows.lt-xl' });\n readonly rowsGtXs = input<string>(undefined, { alias: 'fxGridRows.gt-xs' });\n readonly rowsGtSm = input<string>(undefined, { alias: 'fxGridRows.gt-sm' });\n readonly rowsGtMd = input<string>(undefined, { alias: 'fxGridRows.gt-md' });\n readonly rowsGtLg = input<string>(undefined, { alias: 'fxGridRows.gt-lg' });\n\n // ── gap ───────────────────────────────────────────────────────────────────\n readonly fxGridGap = input<string>(undefined, { alias: 'fxGridGap' });\n readonly gapXs = input<string>(undefined, { alias: 'fxGridGap.xs' });\n readonly gapSm = input<string>(undefined, { alias: 'fxGridGap.sm' });\n readonly gapMd = input<string>(undefined, { alias: 'fxGridGap.md' });\n readonly gapLg = input<string>(undefined, { alias: 'fxGridGap.lg' });\n readonly gapXl = input<string>(undefined, { alias: 'fxGridGap.xl' });\n readonly gapLtSm = input<string>(undefined, { alias: 'fxGridGap.lt-sm' });\n readonly gapLtMd = input<string>(undefined, { alias: 'fxGridGap.lt-md' });\n readonly gapLtLg = input<string>(undefined, { alias: 'fxGridGap.lt-lg' });\n readonly gapLtXl = input<string>(undefined, { alias: 'fxGridGap.lt-xl' });\n readonly gapGtXs = input<string>(undefined, { alias: 'fxGridGap.gt-xs' });\n readonly gapGtSm = input<string>(undefined, { alias: 'fxGridGap.gt-sm' });\n readonly gapGtMd = input<string>(undefined, { alias: 'fxGridGap.gt-md' });\n readonly gapGtLg = input<string>(undefined, { alias: 'fxGridGap.gt-lg' });\n\n // ── resolved values (flat computed — no intermediate object computed) ──────\n private readonly _cols = computed(() =>\n resolveAll<string>(\n { default: this.fxGrid(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n private readonly _rows = computed(() =>\n resolveAll<string>(\n { default: this.fxGridRows(), xs: this.rowsXs(), sm: this.rowsSm(),\n md: this.rowsMd(), lg: this.rowsLg(), xl: this.rowsXl() },\n { 'lt-sm': this.rowsLtSm(), 'lt-md': this.rowsLtMd(), 'lt-lg': this.rowsLtLg(),\n 'lt-xl': this.rowsLtXl(), 'gt-xs': this.rowsGtXs(), 'gt-sm': this.rowsGtSm(), 'gt-md': this.rowsGtMd(),\n 'gt-lg': this.rowsGtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n private readonly _gap = computed(() =>\n normalizeGap(resolveAll<string>(\n { default: this.fxGridGap(), xs: this.gapXs(), sm: this.gapSm(),\n md: this.gapMd(), lg: this.gapLg(), xl: this.gapXl() },\n { 'lt-sm': this.gapLtSm(), 'lt-md': this.gapLtMd(), 'lt-lg': this.gapLtLg(),\n 'lt-xl': this.gapLtXl(), 'gt-xs': this.gapGtXs(), 'gt-sm': this.gapGtSm(), 'gt-md': this.gapGtMd(),\n 'gt-lg': this.gapGtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ))\n );\n\n constructor() {\n super();\n effect(() => {\n const cols = this._cols();\n const rows = this._rows();\n const gap = this._gap();\n cols ? this.safeSetStyle('grid-template-columns', cols)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-template-columns');\n rows ? this.safeSetStyle('grid-template-rows', rows)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-template-rows');\n gap ? this.safeSetStyle('gap', gap)\n : this.r2.removeStyle(this.el.nativeElement, 'gap');\n });\n }\n}\n\n// ─── fxGridColumn ─────────────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxGridColumn],\n [fxGridColumn.xs],\n [fxGridColumn.sm],\n [fxGridColumn.md],\n [fxGridColumn.lg],\n [fxGridColumn.xl],\n [fxGridColumn.lt-sm],\n [fxGridColumn.lt-md],\n [fxGridColumn.lt-lg],\n [fxGridColumn.lt-xl],\n [fxGridColumn.gt-xs],\n [fxGridColumn.gt-sm],\n [fxGridColumn.gt-md],\n [fxGridColumn.gt-lg]\n `,\n standalone: true\n})\nexport class FxGridColumnDirective extends ResponsiveBaseDirective {\n readonly fxGridColumn = input<string>(undefined, { alias: 'fxGridColumn' });\n readonly xs = input<string>(undefined, { alias: 'fxGridColumn.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxGridColumn.sm' });\n readonly md = input<string>(undefined, { alias: 'fxGridColumn.md' });\n readonly lg = input<string>(undefined, { alias: 'fxGridColumn.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxGridColumn.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxGridColumn.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxGridColumn.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxGridColumn.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxGridColumn.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxGridColumn.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxGridColumn.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxGridColumn.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxGridColumn.gt-lg' });\n\n private readonly _resolved = computed(() =>\n resolveAll<string>(\n { default: this.fxGridColumn(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._resolved();\n v ? this.safeSetStyle('grid-column', v)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-column');\n });\n }\n}\n\n// ─── fxGridArea ───────────────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxGridArea],\n [fxGridArea.xs],\n [fxGridArea.sm],\n [fxGridArea.md],\n [fxGridArea.lg],\n [fxGridArea.xl],\n [fxGridArea.lt-sm],\n [fxGridArea.lt-md],\n [fxGridArea.lt-lg],\n [fxGridArea.lt-xl],\n [fxGridArea.gt-xs],\n [fxGridArea.gt-sm],\n [fxGridArea.gt-md],\n [fxGridArea.gt-lg]\n `,\n standalone: true\n})\nexport class FxGridAreaDirective extends ResponsiveBaseDirective {\n readonly fxGridArea = input<string>(undefined, { alias: 'fxGridArea' });\n readonly xs = input<string>(undefined, { alias: 'fxGridArea.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxGridArea.sm' });\n readonly md = input<string>(undefined, { alias: 'fxGridArea.md' });\n readonly lg = input<string>(undefined, { alias: 'fxGridArea.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxGridArea.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxGridArea.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxGridArea.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxGridArea.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxGridArea.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxGridArea.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxGridArea.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxGridArea.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxGridArea.gt-lg' });\n\n private readonly _resolved = computed(() =>\n resolveAll<string>(\n { default: this.fxGridArea(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._resolved();\n v ? this.safeSetStyle('grid-area', v)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-area');\n });\n }\n}\n","/**\n * @file fx-layout-align.directive.ts (Angular 22 — signals)\n *\n * [fxLayoutAlign] — sets justify-content + align-items + align-content\n * on a flex container. Faithful port of @ngbracket LayoutAlignStyleBuilder:\n *\n * • mainAxis : start|flex-start | center | end|flex-end |\n * space-between | space-around | space-evenly (default: flex-start)\n * • crossAxis: start|flex-start | center | end|flex-end | baseline |\n * space-between | space-around | stretch (default: stretch)\n * • align-content is set alongside align-items (multi-line wrap alignment)\n * • crossAxis 'stretch' → max-width:100% (column flow) / max-height:100% (row flow)\n * • display flex/inline-flex + box-sizing, preserving display:none (fxHide)\n *\n * Direction/inline are read reactively from the FxLayoutDirective on the SAME\n * host when present (signals), defaulting to row / non-inline otherwise.\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, inject, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\nimport { FxLayoutDirective } from './fx-layout.directive';\n\n/**\n * Port of ngx LayoutAlignStyleBuilder.buildStyles.\n * `null` values mean \"remove the property\".\n */\nexport function buildAlignStyles(\n align: string,\n layoutDirection: string,\n inline: boolean\n): Record<string, string | null> {\n const css: Record<string, string | null> = {};\n const [mainAxis, crossAxis] = align.split(' ');\n\n switch (mainAxis) {\n case 'center': css['justify-content'] = 'center'; break;\n case 'space-around': css['justify-content'] = 'space-around'; break;\n case 'space-between': css['justify-content'] = 'space-between'; break;\n case 'space-evenly': css['justify-content'] = 'space-evenly'; break;\n case 'end':\n case 'flex-end': css['justify-content'] = 'flex-end'; break;\n case 'start':\n case 'flex-start':\n default: css['justify-content'] = 'flex-start'; break;\n }\n\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start'; break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center'; break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end'; break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch'; break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch'; break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline'; break;\n case 'stretch':\n default:\n css['align-items'] = css['align-content'] = 'stretch'; break;\n }\n\n const isHorizontal = layoutDirection.indexOf('row') > -1 || layoutDirection.indexOf('column') === -1;\n return {\n ...css,\n 'display': inline ? 'inline-flex' : 'flex',\n 'flex-direction': layoutDirection,\n 'box-sizing': 'border-box',\n 'max-width': crossAxis === 'stretch' ? (!isHorizontal ? '100%' : null) : null,\n 'max-height': crossAxis === 'stretch' ? (isHorizontal ? '100%' : null) : null\n };\n}\n\n@Directive({\n selector: `\n [fxLayoutAlign],\n [fxLayoutAlign.xs],\n [fxLayoutAlign.sm],\n [fxLayoutAlign.md],\n [fxLayoutAlign.lg],\n [fxLayoutAlign.xl],\n [fxLayoutAlign.lt-sm],\n [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg],\n [fxLayoutAlign.lt-xl],\n [fxLayoutAlign.gt-xs],\n [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md],\n [fxLayoutAlign.gt-lg]\n `,\n standalone: true\n})\nexport class FxLayoutAlignDirective extends ResponsiveBaseDirective {\n /** FxLayout on the same host (optional): direction/inline read reactively. */\n private readonly selfLayout = inject(FxLayoutDirective, { self: true, optional: true });\n\n readonly fxLayoutAlign = input<string>(undefined, { alias: 'fxLayoutAlign' });\n readonly xs = input<string>(undefined, { alias: 'fxLayoutAlign.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayoutAlign.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayoutAlign.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayoutAlign.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayoutAlign.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutAlign.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutAlign.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutAlign.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutAlign.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutAlign.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutAlign.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutAlign.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutAlign.gt-lg' });\n\n private readonly _align = computed(() =>\n resolveAll(\n { default: this.fxLayoutAlign(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'start stretch'\n );\n\n constructor() {\n super();\n effect(() => {\n const direction = this.selfLayout?.direction() ?? 'row';\n const inline = this.selfLayout?.inline() ?? false;\n const styles = buildAlignStyles(this._align(), direction, inline);\n const el = this.el.nativeElement;\n for (const [prop, value] of Object.entries(styles)) {\n // ngx parity: never override display:none set by fxHide\n if (prop === 'display' && el.style.display === 'none') continue;\n this.safeSetStyle(prop, value);\n }\n });\n }\n}\n","/**\n * @file fx-layout-gap.directive.ts (Angular 21 — signals)\n *\n * [fxLayoutGap] — sets gap on a flex or grid container.\n * Unitless numbers are normalized to px (e.g. \"16\" → \"16px\").\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() derives the normalized gap value\n * • effect() in constructor writes to DOM\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nfunction normalizeGap(raw: string): string {\n return raw.trim().split(/\\s+/)\n .map(v => /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v)\n .join(' ');\n}\n\n@Directive({\n selector: `\n [fxLayoutGap],\n [fxLayoutGap.xs],\n [fxLayoutGap.sm],\n [fxLayoutGap.md],\n [fxLayoutGap.lg],\n [fxLayoutGap.xl],\n [fxLayoutGap.lt-sm],\n [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg],\n [fxLayoutGap.lt-xl],\n [fxLayoutGap.gt-xs],\n [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md],\n [fxLayoutGap.gt-lg]\n `,\n standalone: true\n})\nexport class FxLayoutGapDirective extends ResponsiveBaseDirective {\n readonly fxLayoutGap = input<string>(undefined, { alias: 'fxLayoutGap' });\n readonly xs = input<string>(undefined, { alias: 'fxLayoutGap.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayoutGap.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayoutGap.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayoutGap.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayoutGap.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutGap.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutGap.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutGap.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutGap.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutGap.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutGap.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutGap.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutGap.gt-lg' });\n\n private readonly _gap = computed(() =>\n normalizeGap(resolveAll(\n { default: this.fxLayoutGap(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? '0')\n );\n\n constructor() {\n super();\n effect(() => { this.safeSetStyle('gap', this._gap()); });\n }\n}\n","/**\n * @file fx-show-hide.directives.ts (Angular 21 — signals)\n *\n * [fxShow] / [fxHide] — responsive visibility via display:none.\n * Elements stay in the DOM (unlike *ifBp which removes them).\n *\n * IMPORTANT: fxShow and fxHide are implemented as a SINGLE directive class\n * (FxShowHideDirective) so that mixed patterns like\n * <div fxHide fxShow.xs> ← hidden everywhere, shown on xs\n * <div fxShow fxHide.lt-lg> ← shown everywhere, hidden below lg\n * work correctly.\n *\n * Resolution algorithm (no mobile-first cascade — semantics for show/hide\n * are point-in-time, not cumulative):\n * 1. Non-canonical (lt-*, gt-*) isActive checks — most specific first\n * 2. Exact canonical match for current bp\n * 3. Default values (fxShow / fxHide without suffix)\n * 4. Fallback: visible (true)\n *\n * When both show and hide match at the same priority level, show wins.\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, effect, input, computed } from '@angular/core';\nimport { ResponsiveBaseDirective, NON_CANONICAL_PRIORITY } from './responsive-base.directive';\n\n/**\n * Pure visibility transition (exported for tests).\n * Captures the inline display before hiding and restores it when shown again,\n * so display:flex|grid written by FxLayout/FxGrid effects is never lost.\n * @returns the new \"previous display\" state to carry to the next transition\n */\nexport function applyVisibility(\n el: { style: { display: string } },\n setStyle: (prop: string, value: string) => void,\n removeStyle: (prop: string) => void,\n visible: boolean,\n prevDisplay: string | null\n): string | null {\n if (!visible) {\n const current = el.style.display;\n if (current !== 'none') prevDisplay = current || null;\n setStyle('display', 'none');\n return prevDisplay;\n }\n // Visible: touch the DOM only if we are the ones who hid it\n if (el.style.display === 'none') {\n if (prevDisplay) setStyle('display', prevDisplay);\n else removeStyle('display');\n }\n return prevDisplay;\n}\n\nfunction toBool(v: string | boolean | '' | undefined | null): boolean | undefined {\n if (v === undefined || v === null) return undefined;\n if (typeof v === 'boolean') return v;\n if (v === '') return true;\n if (v === 'false' || v === '0') return false;\n return true;\n}\n\n// ─── Unified fxShow + fxHide ─────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxShow],\n [fxHide],\n [fxShow.xs],\n [fxShow.sm],\n [fxShow.md],\n [fxShow.lg],\n [fxShow.xl],\n [fxShow.lt-sm],\n [fxShow.lt-md],\n [fxShow.lt-lg],\n [fxShow.lt-xl],\n [fxShow.gt-xs],\n [fxShow.gt-sm],\n [fxShow.gt-md],\n [fxShow.gt-lg],\n [fxHide.xs],\n [fxHide.sm],\n [fxHide.md],\n [fxHide.lg],\n [fxHide.xl],\n [fxHide.lt-sm],\n [fxHide.lt-md],\n [fxHide.lt-lg],\n [fxHide.lt-xl],\n [fxHide.gt-xs],\n [fxHide.gt-sm],\n [fxHide.gt-md],\n [fxHide.gt-lg]\n `,\n standalone: true\n})\nexport class FxShowHideDirective extends ResponsiveBaseDirective {\n // ── fxShow inputs ─────────────────────────────────────────────────────────\n readonly fxShow = input<boolean, string | boolean>(undefined, { alias: 'fxShow', transform: toBool });\n readonly showXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xs', transform: toBool });\n readonly showSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm', transform: toBool });\n readonly showMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md', transform: toBool });\n readonly showLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg', transform: toBool });\n readonly showXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl', transform: toBool });\n readonly showLtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-sm', transform: toBool });\n readonly showLtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-md', transform: toBool });\n readonly showLtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-lg', transform: toBool });\n readonly showLtXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-xl', transform: toBool });\n readonly showGtXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-xs', transform: toBool });\n readonly showGtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-sm', transform: toBool });\n readonly showGtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-md', transform: toBool });\n readonly showGtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-lg', transform: toBool });\n\n // ── fxHide inputs ─────────────────────────────────────────────────────────\n readonly fxHide = input<boolean, string | boolean>(undefined, { alias: 'fxHide', transform: toBool });\n readonly hideXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xs', transform: toBool });\n readonly hideSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm', transform: toBool });\n readonly hideMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md', transform: toBool });\n readonly hideLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg', transform: toBool });\n readonly hideXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl', transform: toBool });\n readonly hideLtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-sm', transform: toBool });\n readonly hideLtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-md', transform: toBool });\n readonly hideLtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-lg', transform: toBool });\n readonly hideLtXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-xl', transform: toBool });\n readonly hideGtXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-xs', transform: toBool });\n readonly hideGtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-sm', transform: toBool });\n readonly hideGtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-md', transform: toBool });\n readonly hideGtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-lg', transform: toBool });\n\n private readonly _visible = computed((): boolean => {\n const bp = this.media.currentBp();\n const isActive = (a: string) => this.media.isActive(a);\n\n // Non-canonical maps (alias → show value / hide value)\n const showNc: Record<string, boolean | undefined> = {\n 'lt-sm': this.showLtSm(), 'lt-md': this.showLtMd(), 'lt-lg': this.showLtLg(),\n 'lt-xl': this.showLtXl(), 'gt-xs': this.showGtXs(), 'gt-sm': this.showGtSm(), 'gt-md': this.showGtMd(),\n 'gt-lg': this.showGtLg() };\n const hideNc: Record<string, boolean | undefined> = {\n 'lt-sm': this.hideLtSm(), 'lt-md': this.hideLtMd(), 'lt-lg': this.hideLtLg(),\n 'lt-xl': this.hideLtXl(), 'gt-xs': this.hideGtXs(), 'gt-sm': this.hideGtSm(), 'gt-md': this.hideGtMd(),\n 'gt-lg': this.hideGtLg() };\n\n // 1. Non-canonical (lt-*, gt-*) — most specific first\n for (const alias of NON_CANONICAL_PRIORITY) {\n const sv = showNc[alias];\n const hv = hideNc[alias];\n if ((sv !== undefined || hv !== undefined) && isActive(alias)) {\n if (sv !== undefined) return sv; // show beats hide at same priority\n return !hv!;\n }\n }\n\n // Canonical maps (bp → value) — exact only, NO cascade\n const showV: Record<string, boolean | undefined> = {\n xs: this.showXs(), sm: this.showSm(), md: this.showMd(),\n lg: this.showLg(), xl: this.showXl() };\n const hideV: Record<string, boolean | undefined> = {\n xs: this.hideXs(), sm: this.hideSm(), md: this.hideMd(),\n lg: this.hideLg(), xl: this.hideXl() };\n\n // 2. Exact canonical match for current bp\n const showExact = showV[bp];\n const hideExact = hideV[bp];\n if (showExact !== undefined) return showExact;\n if (hideExact !== undefined) return !hideExact;\n\n // 3. Default values (fxShow / fxHide without suffix)\n const showDef = this.fxShow();\n const hideDef = this.fxHide();\n if (showDef !== undefined) return showDef;\n if (hideDef !== undefined) return !hideDef;\n\n // 4. Neither directive active → visible\n return true;\n });\n\n /** Inline display captured before the last hide — restored on show. */\n private _prevDisplay: string | null = null;\n\n constructor() {\n super();\n effect(() => {\n this._prevDisplay = applyVisibility(\n this.el.nativeElement,\n (p, v) => this.r2.setStyle(this.el.nativeElement, p, v),\n p => this.r2.removeStyle(this.el.nativeElement, p),\n this._visible(),\n this._prevDisplay\n );\n });\n }\n}\n\n","/**\n * @file fx-style-class.directives.ts (Angular 21 — signals)\n *\n * [fxStyle] — responsive inline style binding (Record<string,string>)\n * [fxClass] — responsive CSS class binding (string | string[] | Record<string,boolean>)\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() derives resolved StyleMap / ClassInput value\n * • effect() in constructor handles DOM writes with diff\n *\n * Style/class leak prevention:\n * _appliedProps / _appliedClasses are regular Set<string> fields\n * (NOT signals) — they track what was actively applied so the\n * effect can remove stale properties/classes on the next run.\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\n// ─── fxStyle ─────────────────────────────────────────────────────────────────\n\ntype StyleMap = Record<string, string>;\n\n@Directive({\n selector: `\n [fxStyle],\n [fxStyle.xs],\n [fxStyle.sm],\n [fxStyle.md],\n [fxStyle.lg],\n [fxStyle.xl],\n [fxStyle.lt-sm],\n [fxStyle.lt-md],\n [fxStyle.lt-lg],\n [fxStyle.lt-xl],\n [fxStyle.gt-xs],\n [fxStyle.gt-sm],\n [fxStyle.gt-md],\n [fxStyle.gt-lg]\n `,\n standalone: true\n})\nexport class FxStyleDirective extends ResponsiveBaseDirective {\n readonly fxStyle = input<StyleMap>(undefined, { alias: 'fxStyle' });\n readonly xs = input<StyleMap>(undefined, { alias: 'fxStyle.xs' });\n readonly sm = input<StyleMap>(undefined, { alias: 'fxStyle.sm' });\n readonly md = input<StyleMap>(undefined, { alias: 'fxStyle.md' });\n readonly lg = input<StyleMap>(undefined, { alias: 'fxStyle.lg' });\n readonly xl = input<StyleMap>(undefined, { alias: 'fxStyle.xl' });\n readonly ltSm = input<StyleMap>(undefined, { alias: 'fxStyle.lt-sm' });\n readonly ltMd = input<StyleMap>(undefined, { alias: 'fxStyle.lt-md' });\n readonly ltLg = input<StyleMap>(undefined, { alias: 'fxStyle.lt-lg' });\n readonly ltXl = input<StyleMap>(undefined, { alias: 'fxStyle.lt-xl' });\n readonly gtXs = input<StyleMap>(undefined, { alias: 'fxStyle.gt-xs' });\n readonly gtSm = input<StyleMap>(undefined, { alias: 'fxStyle.gt-sm' });\n readonly gtMd = input<StyleMap>(undefined, { alias: 'fxStyle.gt-md' });\n readonly gtLg = input<StyleMap>(undefined, { alias: 'fxStyle.gt-lg' });\n\n private readonly _resolved = computed(() =>\n (resolveAll<StyleMap>(\n { default: this.fxStyle(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? {})\n );\n\n /** Tracks which CSS properties were last applied — plain field, not a signal. */\n private _appliedProps = new Set<string>();\n\n constructor() {\n super();\n effect(() => {\n if (!this.isBrowser) return;\n const next = this._resolved();\n const nextKeys = new Set(Object.keys(next));\n for (const prop of this._appliedProps) {\n if (!nextKeys.has(prop)) this.r2.removeStyle(this.el.nativeElement, prop);\n }\n for (const [prop, value] of Object.entries(next)) {\n this.r2.setStyle(this.el.nativeElement, prop, value);\n }\n this._appliedProps = nextKeys;\n });\n }\n}\n\n// ─── fxClass ─────────────────────────────────────────────────────────────────\n\ntype ClassInput = string | string[] | Record<string, boolean>;\n\nfunction toClassSet(v: ClassInput | undefined): Set<string> {\n if (!v) return new Set();\n if (typeof v === 'string') return new Set(v.split(/\\s+/).filter(Boolean));\n if (Array.isArray(v)) return new Set(v.filter(Boolean));\n return new Set(Object.entries(v).filter(([, on]) => on).map(([cls]) => cls));\n}\n\n@Directive({\n selector: `\n [fxClass],\n [fxClass.xs],\n [fxClass.sm],\n [fxClass.md],\n [fxClass.lg],\n [fxClass.xl],\n [fxClass.lt-sm],\n [fxClass.lt-md],\n [fxClass.lt-lg],\n [fxClass.lt-xl],\n [fxClass.gt-xs],\n [fxClass.gt-sm],\n [fxClass.gt-md],\n [fxClass.gt-lg]\n `,\n standalone: true\n})\nexport class FxClassDirective extends ResponsiveBaseDirective {\n readonly fxClass = input<ClassInput>(undefined, { alias: 'fxClass' });\n readonly xs = input<ClassInput>(undefined, { alias: 'fxClass.xs' });\n readonly sm = input<ClassInput>(undefined, { alias: 'fxClass.sm' });\n readonly md = input<ClassInput>(undefined, { alias: 'fxClass.md' });\n readonly lg = input<ClassInput>(undefined, { alias: 'fxClass.lg' });\n readonly xl = input<ClassInput>(undefined, { alias: 'fxClass.xl' });\n readonly ltSm = input<ClassInput>(undefined, { alias: 'fxClass.lt-sm' });\n readonly ltMd = input<ClassInput>(undefined, { alias: 'fxClass.lt-md' });\n readonly ltLg = input<ClassInput>(undefined, { alias: 'fxClass.lt-lg' });\n readonly ltXl = input<ClassInput>(undefined, { alias: 'fxClass.lt-xl' });\n readonly gtXs = input<ClassInput>(undefined, { alias: 'fxClass.gt-xs' });\n readonly gtSm = input<ClassInput>(undefined, { alias: 'fxClass.gt-sm' });\n readonly gtMd = input<ClassInput>(undefined, { alias: 'fxClass.gt-md' });\n readonly gtLg = input<ClassInput>(undefined, { alias: 'fxClass.gt-lg' });\n\n private readonly _resolved = computed(() =>\n toClassSet(resolveAll<ClassInput>(\n { default: this.fxClass(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ))\n );\n\n /** Tracks which CSS classes were last applied — plain field, not a signal. */\n private _appliedClasses = new Set<string>();\n\n constructor() {\n super();\n effect(() => {\n if (!this.isBrowser) return;\n const next = this._resolved();\n for (const cls of this._appliedClasses) {\n if (!next.has(cls)) this.r2.removeClass(this.el.nativeElement, cls);\n }\n for (const cls of next) {\n this.r2.addClass(this.el.nativeElement, cls);\n }\n this._appliedClasses = next;\n });\n }\n}\n","import { NgModule } from \"@angular/core\";\n// ── Tokens ───────────────────────────────────────────────────────────────────\nexport { BS5_BREAKPOINTS, LAYOUT_BREAKPOINTS, CANONICAL_ALIASES } from './breakpoints';\nexport type { BreakpointAlias } from './breakpoints';\nexport { ALIAS_FAMILIES } from './breakpoints';\n\n// ── Input type helpers (useful for custom directive extensions) ──────────────\nexport type { CanonicalKey, NonCanonicalKey, BpValues, NcValues } from './responsive-inputs.mixin';\n\n// ── Service ──────────────────────────────────────────────────────────────────\nexport { MediaObserver } from './media-observer.service';\n\n// ── Base (re-export for extension) ───────────────────────────────────────────\nexport { ResponsiveBaseDirective, NON_CANONICAL_PRIORITY } from './responsive-base.directive';\n\n// ── Flex directives ──────────────────────────────────────────────────────────\nexport { FxLayoutDirective, FxLayoutWrapDirective } from './fx-layout.directive';\nexport { FxFlexDirective } from './fx-flex.directive';\nexport { FxLayoutAlignDirective } from './fx-layout-align.directive';\nexport { FxLayoutGapDirective } from './fx-layout-gap.directive';\nexport {\n FxFlexOrderDirective,\n FxFlexOffsetDirective,\n FxFlexAlignDirective,\n FxFlexFillDirective,\n} from './fx-flex-extras.directives';\n\n// ── Visibility directives ─────────────────────────────────────────────────────\nexport { FxShowHideDirective } from './fx-show-hide.directives';\n\n// ── Style / Class directives ─────────────────────────────────────────────────\nexport { FxStyleDirective, FxClassDirective } from './fx-style-class.directives';\n\n// ── Grid directives (bonus — not in original ngx-layout) ─────────────────────\nexport {\n FxGridDirective,\n FxGridColumnDirective,\n FxGridAreaDirective,\n} from './fx-grid.directives';\n\n// ── Structural directives ─────────────────────────────────────────────────────\nexport { IfBpDirective } from './if-bp.directive';\n\n// ── Convenience module (for non-standalone NgModule apps) ────────────────────\nimport { FxLayoutDirective, FxLayoutWrapDirective } from './fx-layout.directive';\nimport { FxFlexDirective } from './fx-flex.directive';\nimport { FxLayoutAlignDirective } from './fx-layout-align.directive';\nimport { FxLayoutGapDirective } from './fx-layout-gap.directive';\nimport {\n FxFlexOrderDirective, FxFlexOffsetDirective,\n FxFlexAlignDirective, FxFlexFillDirective,\n} from './fx-flex-extras.directives';\nimport { FxStyleDirective, FxClassDirective } from './fx-style-class.directives';\nimport {\n FxGridDirective, FxGridColumnDirective, FxGridAreaDirective,\n} from './fx-grid.directives';\nimport { IfBpDirective } from './if-bp.directive';\nimport { FxShowHideDirective } from \"./fx-show-hide.directives\";\n\n@NgModule({\n imports: [\n FxLayoutDirective,\n FxLayoutWrapDirective,\n FxFlexDirective,\n FxShowHideDirective,\n FxLayoutAlignDirective,\n FxLayoutGapDirective,\n FxFlexOrderDirective,\n FxFlexOffsetDirective,\n FxFlexAlignDirective,\n FxFlexFillDirective,\n FxStyleDirective,\n FxClassDirective,\n FxGridDirective,\n FxGridColumnDirective,\n FxGridAreaDirective,\n IfBpDirective,\n ],\n exports: [\n FxLayoutDirective,\n FxLayoutWrapDirective,\n FxFlexDirective,\n FxShowHideDirective,\n FxLayoutAlignDirective,\n FxLayoutGapDirective,\n FxFlexOrderDirective,\n FxFlexOffsetDirective,\n FxFlexAlignDirective,\n FxFlexFillDirective,\n FxStyleDirective,\n FxClassDirective,\n FxGridDirective,\n FxGridColumnDirective,\n FxGridAreaDirective,\n IfBpDirective,\n ],\n\n})\nexport class FlexLayoutModule { }\n\n","/*\n * Public API Surface of @arsedizioni/ars-utils/ui\n */\nexport * from './definitions';\nexport * from './dialog.definitions';\nexport * from './ui.service';\nexport * from './flex/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["toBool","normalizeGap"],"mappings":"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IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,I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AA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAA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MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,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A,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA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AA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA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AAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA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,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,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AA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAA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A,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA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AAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAnB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;AAeT,EAAA,CAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCvBY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YArCrB,iBAAiB;YACjB,qBAAqB;YACrB,eAAe;YACf,mBAAmB;YACnB,sBAAsB;YACtB,oBAAoB;YACpB,oBAAoB;YACpB,qBAAqB;YACrB,oBAAoB;YACpB,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;YACf,qBAAqB;YACrB,mBAAmB;AACnB,YAAA,aAAa,aAGb,iBAAiB;YACjB,qBAAqB;YACrB,eAAe;YACf,mBAAmB;YACnB,sBAAsB;YACtB,oBAAoB;YACpB,oBAAoB;YACpB,qBAAqB;YACrB,oBAAoB;YACpB,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;YACf,qBAAqB;YACrB,mBAAmB;YACnB,aAAa,CAAA,EAAA,CAAA,CAAA;+GAIR,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAvC5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,iBAAiB;wBACjB,qBAAqB;wBACrB,eAAe;wBACf,mBAAmB;wBACnB,sBAAsB;wBACtB,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;wBACrB,oBAAoB;wBACpB,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,aAAa;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,iBAAiB;wBACjB,qBAAqB;wBACrB,eAAe;wBACf,mBAAmB;wBACnB,sBAAsB;wBACtB,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;wBACrB,oBAAoB;wBACpB,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,aAAa;AAChB,qBAAA;AAEJ,iBAAA;;;ACjGD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"arsedizioni-ars-utils-ui.mjs","sources":["../../../projects/ars-utils/ui/dialog.definitions.ts","../../../projects/ars-utils/ui/ui.service.ts","../../../projects/ars-utils/ui/flex/breakpoints.ts","../../../projects/ars-utils/ui/flex/media-observer.service.ts","../../../projects/ars-utils/ui/flex/if-bp.directive.ts","../../../projects/ars-utils/ui/flex/responsive-base.directive.ts","../../../projects/ars-utils/ui/flex/fx-layout.directive.ts","../../../projects/ars-utils/ui/flex/fx-flex-extras.directives.ts","../../../projects/ars-utils/ui/flex/fx-flex.directive.ts","../../../projects/ars-utils/ui/flex/fx-grid.directives.ts","../../../projects/ars-utils/ui/flex/fx-layout-align.directive.ts","../../../projects/ars-utils/ui/flex/fx-layout-gap.directive.ts","../../../projects/ars-utils/ui/flex/fx-show-hide.directives.ts","../../../projects/ars-utils/ui/flex/fx-style-class.directives.ts","../../../projects/ars-utils/ui/flex/flex-module.ts","../../../projects/ars-utils/ui/public_api.ts","../../../projects/ars-utils/ui/arsedizioni-ars-utils-ui.ts"],"sourcesContent":["\nimport { Searchable, SearchBag, NameValueItem, DateInterval, INode } from '@arsedizioni/ars-utils/core';\nimport type { MatFormFieldAppearance } from '@angular/material/form-field';\n\nexport interface SelectDialogResult {\n selectedItems: SelectableItem[];\n}\n\nexport interface SelectTreeDialogResult {\n selectedItems: ItemNode[];\n}\n\nexport interface SelectDialogLookup {\n items: SelectableItem[];\n filter?: string;\n params?: any;\n owner?: any;\n}\n\nexport interface SelectDialogFilter {\n items?: SelectableItem[];\n filter?: string;\n filterOption?: SelectableFilter;\n owner?: any;\n}\n\nexport interface SelectDialogAppend {\n items: SelectableItem[];\n owner?: any;\n}\n\nexport interface SelectDialogEdit extends SelectDialogAppend {\n item: SelectableItem;\n}\n\nexport interface SelectDialogDelete {\n items: SelectableItem[];\n selectedItems: SelectableItem[];\n owner?: any;\n}\n\nexport interface SelectFileOption {\n description: string;\n value: boolean;\n}\n\nexport interface SelectFile {\n file: File;\n options?: SelectFileOption[];\n}\n\nexport interface SelectableFilter {\n divider?: boolean;\n description?: string;\n group?: number;\n groupName?: string;\n radio?: boolean;\n checked?: boolean;\n value?: any;\n icon?: string;\n title?: string;\n}\n\nexport interface SelectDialogData {\n title: string;\n description?: string;\n okCaption?: string;\n maxItems?: number;\n multipleSelection?: boolean;\n mustSelect?: boolean;\n width?: number;\n filter?: string;\n filters?: SelectableFilter[];\n items?: SelectableItem[];\n lookupFields?: NameValueItem<string>[];\n lookupOnInit?: boolean;\n emptyMessage?: string;\n canLookupWithOptions?: boolean;\n canLookupWithInlineOptions?: boolean;\n canLookup?: boolean;\n canDelete?: boolean;\n canAppend?: boolean;\n canEdit?: boolean;\n canView?: boolean;\n canFilter?: boolean;\n canPaginate?: boolean;\n pageSize?: number;\n appearance?: MatFormFieldAppearance;\n header?: string;\n searchLabel?: string;\n searchButtonLabel?: string;\n}\n\n/**\n * Data of `ListDialogComponent`: the read-only sibling of {@link SelectDialogData}.\n *\n * It carries no `can*` flag on purpose — the dialog shows a searchable list and closes, so there\n * is nothing to enable — and no `mustSelect` / `okCaption` either, because there is no\n * confirmation step to gate.\n */\nexport interface ListDialogData {\n /** Dialog title, rendered as HTML. */\n title: string;\n /** Optional description shown under the title, rendered as HTML. */\n description?: string;\n /** Optional header shown above the list, rendered as HTML. Hidden while the list is empty. */\n header?: string;\n /** Items to display. */\n items?: SelectableItem[];\n /** Initial search text. */\n filter?: string;\n /** Message shown in place of the list when there is nothing to display. Rendered as HTML. */\n emptyMessage?: string;\n /** Caption of the close button, which is always available. Defaults to `Chiudi`. */\n closeCaption?: string;\n /** Label of the search field. Defaults to `Cerca...`. */\n searchLabel?: string;\n /** Appearance of the search field. Defaults to `outline`. */\n appearance?: MatFormFieldAppearance;\n /** Preferred dialog width, in pixels, for the caller that opens it. */\n width?: number;\n}\n\nexport interface SelectTreeDialogData {\n title: string;\n description?: string;\n okCaption?: string;\n nodes?: ItemNode[];\n initialFilter?: string;\n appearance?: MatFormFieldAppearance;\n owner?: any;\n canAppend?: boolean;\n}\n\n\nexport interface SelectFileDialogData {\n title: string;\n description?: string;\n okCaption?: string;\n helpLink?: string;\n helpCaption?: string;\n maxSize?: number;\n options?: any;\n owner?: any;\n accept?: string;\n appearance?: MatFormFieldAppearance;\n}\n\nexport interface SelectPictureFileDialogData extends SelectFileDialogData {\n maxWidth?: number;\n maxHeight?: number;\n}\n\nexport interface ISelectableItem extends Searchable {\n bag: any;\n template: string;\n}\n\nexport class SelectableItem implements ISelectableItem {\n bag: any;\n template!: string;\n\n /** Searchable index bag. */\n searchBag!: SearchBag;\n}\n\nexport class ItemNode implements INode {\n id!: string;\n name!: string;\n count?: number;\n parent?: INode;\n children?: INode[];\n bag?: any;\n}\n\nexport class SelectableNode extends ItemNode implements Searchable {\n expandable: boolean;\n level: number;\n\n /** Searchable index bag. */\n searchBag!: SearchBag;\n\n /**\n * Create a flattened tree node from a source ItemNode.\n * @param item - The source tree node.\n * @param level - The depth level of this node in the tree.\n */\n constructor(item: ItemNode, level: number) {\n super();\n\n this.expandable = !!(item.children?.length);\n this.level = level;\n\n this.id = item.id;\n this.name = item.name;\n this.count = item.count;\n this.parent = item.parent;\n this.bag = item.bag;\n this.children = item.children;\n }\n}\n/**\n * Minimal contract exposed by the send-to dialog to its host.\n * Declared here (and not on the component) so that `ui` never depends on\n * `ui.dialogs.select`, which would create a circular entry point dependency.\n */\nexport interface ISendToDialog {\n /**\n * Replaces the recipient list shown in the dialog.\n * @param recipients - The semicolon separated recipient list.\n */\n updateRecipients(recipients: string): void;\n}\n\nexport interface SendToPopulateData {\n item: SendToDialogResult;\n source: ISendToDialog;\n}\n\nexport interface SendToDialogResult {\n recipients?: string;\n subject?: string;\n text?: string;\n options?: any;\n}\n\nexport interface PromptDialogResult {\n value?: string;\n type?: PromptDialogType;\n options?: any;\n}\n\nexport interface PromptDateDialogResult {\n value?: Date | DateInterval;\n type?: PromptDialogType;\n options?: any;\n}\n\nexport interface PromptOtpDialogResult {\n value?: string;\n}\n\nexport enum PromptDialogType {\n Default = 0,\n Date = 1,\n Number = 2,\n Text = 3,\n DateInterval = 4,\n List = 5,\n Time = 6\n\n}\n\nexport interface PromptDialogData {\n title: string;\n type: PromptDialogType;\n description?: string;\n okCaption?: string;\n cancelCaption?: string;\n initialValue?: any;\n minValue?: number;\n maxValue?: number;\n required?: boolean;\n appearance?: MatFormFieldAppearance;\n options?: any;\n}\n\nexport interface PromptTimeDialogData extends PromptDialogData {\n slots?: string;\n}\n\n","import { Service, signal } from '@angular/core';\r\n\r\n\r\n@Service()\r\nexport class UIService {\r\n\r\n /**\r\n * The default Material form-field appearance used across dialogs and forms.\r\n * Defaults to `'fill'`.\r\n */\r\n readonly appearance = signal<'fill' | 'outline'>('fill');\r\n\r\n /**\r\n * Updates the global form-field appearance.\r\n * @param value - The new appearance value. Falls back to `'fill'` when `undefined` is passed.\r\n */\r\n setAppearance(value: 'fill' | 'outline' | undefined): void {\r\n this.appearance.set(value ?? 'fill');\r\n }\r\n}\r\n","/**\n * @file breakpoints.ts\n * Angular CDK (v22) breakpoint definitions.\n *\n * The canonical tiers map 1:1 to the CDK `Breakpoints` constants from\n * '@angular/cdk/layout' (Material Design specification):\n *\n * xs = Breakpoints.XSmall < 600px\n * sm = Breakpoints.Small >= 600px and < 960px\n * md = Breakpoints.Medium >= 960px and < 1280px\n * lg = Breakpoints.Large >= 1280px and < 1920px\n * xl = Breakpoints.XLarge >= 1920px\n *\n * These are the SAME tiers used by @ngbracket/ngx-layout, so responsive\n * suffixes (fxHide.xs, fxFlex.lt-sm, ...) behave exactly like the legacy\n * library — no breakpoint drift on migrated templates.\n *\n * Derived alias families (composed on the same CDK pixel boundaries; the CDK\n * does not publish range-combining constants):\n *\n * \"and up\" gt-xs | gt-sm | gt-md | gt-lg (ngx-layout compat)\n * \"and down\" lt-sm | lt-md | lt-lg | lt-xl (ngx-layout compat)\n *\n * Device aliases (CDK constants, point-in-time only): usable with\n * MediaObserver.isActive() / isActive$() and *ifBp — NOT as input suffixes:\n *\n * handset | tablet | web |\n * handset-portrait | tablet-portrait | web-portrait |\n * handset-landscape | tablet-landscape | web-landscape\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { Breakpoints } from '@angular/cdk/layout';\n\nexport const CDK_LAYOUT_BREAKPOINTS: Record<string, string> = {\n // ── Canonical ranges — CDK constants verbatim ──────────────────────────────\n 'xs': Breakpoints.XSmall,\n 'sm': Breakpoints.Small,\n 'md': Breakpoints.Medium,\n 'lg': Breakpoints.Large,\n 'xl': Breakpoints.XLarge,\n\n // ── \"and up\" — ngx-layout gt-* style ───────────────────────────────────────\n 'gt-xs': '(min-width: 600px)',\n 'gt-sm': '(min-width: 960px)',\n 'gt-md': '(min-width: 1280px)',\n 'gt-lg': '(min-width: 1920px)',\n\n // ── \"and down\" — ngx-layout lt-* style ─────────────────────────────────────\n // lt-sm = everything below sm = xs only\n 'lt-sm': '(max-width: 599.98px)',\n // lt-md = xs + sm\n 'lt-md': '(max-width: 959.98px)',\n // lt-lg = xs + sm + md\n 'lt-lg': '(max-width: 1279.98px)',\n // lt-xl = xs through lg\n 'lt-xl': '(max-width: 1919.98px)',\n\n // ── CDK device aliases (point-in-time: MediaObserver.isActive / *ifBp) ─────\n 'handset': Breakpoints.Handset,\n 'tablet': Breakpoints.Tablet,\n 'web': Breakpoints.Web,\n 'handset-portrait': Breakpoints.HandsetPortrait,\n 'tablet-portrait': Breakpoints.TabletPortrait,\n 'web-portrait': Breakpoints.WebPortrait,\n 'handset-landscape': Breakpoints.HandsetLandscape,\n 'tablet-landscape': Breakpoints.TabletLandscape,\n 'web-landscape': Breakpoints.WebLandscape,\n};\n\n/**\n * @deprecated Renamed to `CDK_LAYOUT_BREAKPOINTS`: the module now follows the\n * Angular CDK breakpoint scale, not Bootstrap 5. Kept as an alias so existing\n * imports keep compiling; update references when convenient.\n */\nexport const BS5_BREAKPOINTS: Record<string, string> = CDK_LAYOUT_BREAKPOINTS;\n\n/** InjectionToken — override to customise or extend breakpoints */\nexport const LAYOUT_BREAKPOINTS = new InjectionToken<Record<string, string>>(\n 'LAYOUT_BREAKPOINTS',\n { providedIn: 'root', factory: () => CDK_LAYOUT_BREAKPOINTS }\n);\n\n/** Ordered canonical aliases, smallest → largest (the MediaObserver picks the widest match) */\nexport const CANONICAL_ALIASES = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\nexport type BreakpointAlias = typeof CANONICAL_ALIASES[number];\n\n/**\n * All non-canonical alias families.\n * Used by ResponsiveBaseDirective.resolveNonCanonical() to handle lt-* / gt-*\n * inputs without polluting the canonical resolution logic.\n * Device aliases (handset/tablet/web*) are intentionally excluded: they are\n * point-in-time queries for *ifBp / MediaObserver, not directive input suffixes.\n */\nexport const ALIAS_FAMILIES = {\n gt: ['gt-xs', 'gt-sm', 'gt-md', 'gt-lg'],\n lt: ['lt-sm', 'lt-md', 'lt-lg', 'lt-xl'],\n} as const;\n","/**\n * @file media-observer.service.ts (v2 — optimized)\n *\n * ── Optimizations over v1 ─────────────────────────────────────────────────\n *\n * ✅ Single bo.observe() call for all 5 canonical CDK breakpoints.\n * CDK internally uses one MediaQueryList listener per query string.\n * Calling observe() N times creates N listeners — here we create only one.\n *\n * ✅ currentBp$ is shared (shareReplay(1)): all subscribers (effects in\n * directives) receive the same value without redundant re-computations.\n *\n * ✅ The currentBp Signal is derived from the Observable via toSignal():\n * Angular manages the subscription internally and tears it down with root.\n *\n * ✅ isActive() delegates to bo.isMatched() — synchronous, O(1), no extra observer.\n *\n * ✅ isActive$() reuses the shared currentBp$ stream instead of opening\n * a new bo.observe() for every requested alias.\n */\n\nimport { inject, Signal, Service } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Observable, map, distinctUntilChanged, shareReplay } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { LAYOUT_BREAKPOINTS, CANONICAL_ALIASES, BreakpointAlias } from './breakpoints';\n\n@Service()\nexport class MediaObserver {\n private readonly bo = inject(BreakpointObserver);\n private readonly bp = inject(LAYOUT_BREAKPOINTS);\n\n /**\n * A SINGLE CDK observation for all 5 canonical CDK breakpoints.\n * Each breakpoint change emits → we resolve the current alias → shared.\n *\n * shareReplay(1): all subscribers (N directives in the DOM) receive\n * the same value without N separate recomputations.\n */\n readonly currentBp$: Observable<BreakpointAlias> = this.bo\n .observe(CANONICAL_ALIASES.map(a => this.bp[a]))\n .pipe(\n map(() => this._resolve()),\n distinctUntilChanged(), // does not emit if the breakpoint hasn't actually changed\n shareReplay(1) // multicast: N directives, 1 single execution\n );\n\n /**\n * Signal derived from currentBp$.\n * Directives read it via effect() — zero manual subscriptions.\n * providedIn: 'root' ensures the Signal is a singleton.\n */\n readonly currentBp: Signal<BreakpointAlias> = toSignal(this.currentBp$, {\n initialValue: this._resolve()\n });\n\n /**\n * Returns true if the given alias (or raw media query) is currently active.\n * Delegates to bo.isMatched() — synchronous, O(1), no extra observer created.\n *\n * @example\n * media.isActive('md') // true on 960–1279px screens\n * media.isActive('gt-md') // true on 1280px+\n * media.isActive('handset') // CDK device alias (orientation-aware)\n */\n isActive(alias: string): boolean {\n const query = this.bp[alias] ?? alias; // fallback: treat as raw media query\n return this.bo.isMatched(query);\n }\n\n /**\n * Observable true/false for a specific alias.\n * Reuses currentBp$ instead of opening a new bo.observe():\n * no additional MediaQueryList listener is created.\n */\n isActive$(alias: string): Observable<boolean> {\n return this.currentBp$.pipe(\n map(() => this.isActive(alias)),\n distinctUntilChanged()\n );\n }\n\n /** Resolves the active canonical alias (from xl down to xs, mobile-first) */\n private _resolve(): BreakpointAlias {\n for (let i = CANONICAL_ALIASES.length - 1; i >= 0; i--) {\n if (this.bo.isMatched(this.bp[CANONICAL_ALIASES[i]])) {\n return CANONICAL_ALIASES[i];\n }\n }\n return 'xs';\n }\n}\n","/**\n * @file if-bp.directive.ts (Angular 21 — signals)\n *\n * *ifBp — structural directive that adds/removes an element from the DOM\n * based on the active Bootstrap 5 breakpoint.\n *\n * Unlike [fxShow]/[fxHide] (which use display:none), *ifBp actually adds and\n * removes the element from the DOM — ideal for heavy components like mat-sidenav.\n *\n * Angular 21 changes:\n * • @Input setters replaced by input() / input.required()\n * • computed() derives alias list and active state reactively\n * • effect() in constructor handles DOM add/remove (no OnInit/OnChanges)\n * • No Injector, EffectRef, _initialized guard or manual subscriptions\n *\n * Usage:\n * <mat-sidenav *ifBp=\"'gt-md'\"> only rendered on lg and above\n * <div *ifBp=\"'xs'\">Mobile only</div>\n * <div *ifBp=\"'sm md'\">sm and md only (space-separated list of aliases)</div>\n * <div *ifBp=\"'gt-md'; else mobileRef\">Desktop view</div>\n * <ng-template #mobileRef>Mobile fallback</ng-template>\n *\n * Accepted alias values (Angular CDK tiers):\n * xs | sm | md | lg | xl\n * gt-xs … gt-lg ('and up' ranges)\n * lt-sm … lt-xl ('and down' ranges)\n * handset | tablet | web (+ -portrait / -landscape) — CDK device aliases\n * Space-separated list of any of the above\n */\n\nimport {\n Directive, TemplateRef, ViewContainerRef,\n computed, effect, inject, input\n} from '@angular/core';\nimport { MediaObserver } from './media-observer.service';\n\n@Directive({\n selector: '[ifBp]',\n standalone: true\n})\nexport class IfBpDirective {\n private readonly tpl = inject(TemplateRef<unknown>);\n private readonly vcr = inject(ViewContainerRef);\n private readonly media = inject(MediaObserver);\n\n /** Space-separated list of breakpoint aliases, e.g. `'lg gt-lg handset'` */\n readonly ifBp = input.required<string>();\n /** Optional else-template shown when no alias is active */\n readonly ifBpElse = input<TemplateRef<unknown>>();\n\n private readonly _aliases = computed(() => this.ifBp().trim().split(/\\s+/));\n private readonly _isActive = computed(() => {\n this.media.currentBp(); // reactive dependency — re-evaluates on breakpoint change\n return this._aliases().some(alias => this.media.isActive(alias));\n });\n\n /** Which template is currently rendered. `undefined` = nothing decided yet. */\n private _rendered: 'main' | 'else' | 'none' | undefined;\n /** The TemplateRef instance currently rendered (detects [ifBpElse] swaps). */\n private _renderedTpl: TemplateRef<unknown> | null = null;\n\n constructor() {\n effect(() => {\n const active = this._isActive();\n const elseTpl = this.ifBpElse();\n const next: 'main' | 'else' | 'none' = active ? 'main' : elseTpl ? 'else' : 'none';\n const nextTpl: TemplateRef<unknown> | null =\n next === 'main' ? this.tpl : next === 'else' ? elseTpl! : null;\n\n // Dirty-check on BOTH state and template instance: a swapped [ifBpElse]\n // reference must re-render even when the state stays 'else'.\n if (next === this._rendered && nextTpl === this._renderedTpl) return;\n\n this.vcr.clear();\n if (nextTpl) {\n this.vcr.createEmbeddedView(nextTpl);\n }\n this._rendered = next;\n this._renderedTpl = nextTpl;\n });\n }\n}\n","/**\n * @file responsive-base.directive.ts (v5 — Angular 21 signals)\n *\n * ── What changed in v5 ────────────────────────────────────────────────────\n *\n * Full Angular 21 signals refactor:\n *\n * • resolve(), resolveNonCanonical(), resolveAll() are now PURE EXPORTED\n * FUNCTIONS that accept currentBp and isActive as parameters.\n * Directives call them from computed() or effect() with no \"this\" binding.\n *\n * • ResponsiveBaseDirective is now a thin utility base:\n * – Only injects ElementRef, Renderer2, MediaObserver, PLATFORM_ID.\n * – Exposes safeSetStyle() helper.\n * – No lifecycle hooks, no Injector, no EffectRef, no abstract apply().\n *\n * • Each concrete directive uses:\n * – input() for every @Input (signals, no more setters + _v/_nc maps)\n * – computed() to build BpValues / NcValues maps and derive resolved CSS\n * – effect() in the constructor to write to the DOM\n *\n * Benefits vs v4:\n * ✅ Zero manual lifecycle/subscription management (no OnInit/OnChanges/EffectRef)\n * ✅ Angular's reactive graph provides built-in dirty-checking and memoization\n * ✅ DOM writes happen only when the resolved CSS value actually changes\n * ✅ No more Injector injection just to create effects\n *\n * ── Resolution strategy (unchanged) ──────────────────────────────────────\n *\n * Canonical aliases (xs … xl, CDK tiers) → exact match, then the unsuffixed value\n * Non-canonical (lt-*, gt-*) → point-in-time isActive() checks\n * Final order: resolveNonCanonical() wins over resolve()\n */\n\nimport {\n Directive,\n inject, ElementRef, Renderer2, PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { MediaObserver } from './media-observer.service';\nimport { BreakpointAlias } from './breakpoints';\nimport { BpValues, NcValues } from './responsive-inputs.mixin';\n\n/**\n * All non-canonical alias keys in priority order (most specific first).\n * lt-sm is \"below sm\" (= xs only), lt-md is \"below md\" (= xs+sm), etc.\n * Narrower range = higher priority = checked first.\n */\nexport const NON_CANONICAL_PRIORITY = [\n // lt-* from narrowest to widest\n 'lt-sm', 'lt-md', 'lt-lg', 'lt-xl',\n // gt-* from widest to narrowest\n 'gt-xs', 'gt-sm', 'gt-md', 'gt-lg',\n] as const;\n\n// ── Pure resolution functions ─────────────────────────────────────────────────\n// These are standalone functions (not class methods) so they can be called\n// from computed() closures without capturing `this`.\n\n/**\n * Resolution with two-tier priority:\n *\n * 1. Exact breakpoint match (e.g. currentBp='sm' → values['sm'])\n * 2. Generic `default` value (the unsuffixed input, e.g. [fxFlex]=\"49\")\n *\n * There is deliberately NO cascade between canonical tiers. A suffixed value belongs to its own\n * breakpoint and to no other, which is what ngx-layout does and what fxShow/fxHide already did\n * here. The cascade this replaces made `fxFlex.xs=\"100\"` with no base `fxFlex` apply at every\n * width — the exact opposite of what the `.xs` suffix reads like.\n *\n * So `[fxFlex]=\"49\" [fxFlex.xs]=\"100\"` gives xs→100 and sm+→49, while `[fxFlex.xs]=\"100\"` on its\n * own gives xs→100 and sm+→no style at all.\n * @param values - The value declared for each canonical alias, plus the unsuffixed `default`.\n * @param currentBp - The canonical alias currently active.\n * @returns The value to apply, or `undefined` when no rule covers the current breakpoint.\n */\nexport function resolve<T>(\n values: BpValues<T>,\n currentBp: BreakpointAlias,\n): T | undefined {\n // 1. Exact match\n const exact = values[currentBp as keyof BpValues<T>];\n if (exact !== undefined) return exact;\n\n // 2. The unsuffixed value, which applies wherever nothing more specific does\n return (values as Record<string, T | undefined>)['default'];\n}\n\n/**\n * Non-canonical point-in-time check: iterates NON_CANONICAL_PRIORITY and\n * returns the value for the first alias that isActive().\n */\nexport function resolveNonCanonical<T>(\n nc: NcValues<T>,\n isActive: (alias: string) => boolean,\n): T | undefined {\n for (const alias of NON_CANONICAL_PRIORITY) {\n const v = (nc as Record<string, T | undefined>)[alias];\n if (v !== undefined && isActive(alias)) return v;\n }\n return undefined;\n}\n\n/**\n * Full resolution: non-canonical overrides win over the canonical cascade.\n *\n * Usage inside computed():\n * const resolved = computed(() =>\n * resolveAll(this._v(), this._nc(), this.media.currentBp(), a => this.media.isActive(a))\n * );\n */\nexport function resolveAll<T>(\n canonical: BpValues<T>,\n nonCanonical: NcValues<T>,\n currentBp: BreakpointAlias,\n isActive: (alias: string) => boolean,\n): T | undefined {\n return resolveNonCanonical(nonCanonical, isActive) ?? resolve(canonical, currentBp);\n}\n\n// ── Base directive ─────────────────────────────────────────────────────────────\n\n@Directive()\nexport abstract class ResponsiveBaseDirective {\n protected readonly el = inject(ElementRef<HTMLElement>);\n protected readonly r2 = inject(Renderer2);\n protected readonly media = inject(MediaObserver);\n\n /** true in browser, false in SSR */\n protected readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /** SSR-safe style setter. Pass null/empty string to remove the property. */\n protected safeSetStyle(prop: string, value: string | null): void {\n if (value === null || value === '') {\n this.r2.removeStyle(this.el.nativeElement, prop);\n } else {\n this.r2.setStyle(this.el.nativeElement, prop, value);\n }\n }\n}\n","/**\n * @file fx-layout.directive.ts (Angular 22 — signals)\n *\n * [fxLayout] — sets display + flex-direction (+ optional flex-wrap) on the host.\n * [fxLayoutWrap] — dedicated alias for flex-wrap (original ngx-layout compat).\n *\n * ngx-layout parity (ported from @ngbracket layout-validator.ts):\n * • Value format: \"<direction> [wrap] [inline]\" in any ngx-accepted spelling\n * • Wrap aliases: reverse | wrap-reverse | reverse-wrap → wrap-reverse,\n * no | none | nowrap → nowrap, anything else truthy → wrap\n * • 'inline' modifier → display: inline-flex\n * • No wrap token → flex-wrap REMOVED (ngx emits null), not forced to nowrap\n * • box-sizing: border-box on the container\n * • display preserved when currently 'none' (so fxHide is never overridden)\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nexport const LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse'] as const;\nconst INLINE = 'inline';\n\n/** Port of ngx-layout validateWrapValue(). */\nexport function validateWrapValue(value: string): string {\n if (value) {\n switch (value.toLowerCase()) {\n case 'reverse':\n case 'wrap-reverse':\n case 'reverse-wrap':\n return 'wrap-reverse';\n case 'no':\n case 'none':\n case 'nowrap':\n return 'nowrap';\n default:\n return 'wrap';\n }\n }\n return value;\n}\n\n/** Port of ngx-layout validateValue(): [direction, wrap, inline]. */\nexport function validateLayoutValue(value: string): [string, string, boolean] {\n value = value?.toLowerCase() ?? '';\n let [direction, wrap = '', inline = ''] = value.split(' ');\n if (!LAYOUT_VALUES.find(x => x === direction)) direction = LAYOUT_VALUES[0];\n if (wrap === INLINE) {\n wrap = inline !== INLINE ? inline : '';\n inline = INLINE;\n }\n // Always return a string for wrap: undefined here used to make\n // resolveParentFlow report hasWrap=true on plain \"row\"/\"column\" containers.\n return [direction, validateWrapValue(wrap) || '', !!inline];\n}\n\n/** Port of ngx-layout buildLayoutCSS(): null values mean \"remove the property\". */\nexport function buildLayoutCSS(value: string): Record<string, string | null> {\n const [direction, wrap, inline] = validateLayoutValue(value);\n return {\n 'display': inline ? 'inline-flex' : 'flex',\n 'box-sizing': 'border-box',\n 'flex-direction': direction,\n 'flex-wrap': wrap || null\n };\n}\n\n/**\n * Resolves the flex flow of the parent container for a flex child.\n * Prefers the reactive FxLayoutDirective instance when it sits on the DIRECT\n * parent element (signal read → re-evaluates with the parent); falls back to\n * getComputedStyle for plain-CSS flex parents; SSR-safe defaults.\n */\nexport function resolveParentFlow(\n host: HTMLElement,\n parentLayout: FxLayoutDirective | null,\n isBrowser: boolean\n): { direction: string; hasWrap: boolean } {\n if (parentLayout && parentLayout.hostElement === host.parentElement) {\n return {\n direction: parentLayout.direction(), // signal: reactive\n hasWrap: parentLayout.wrap() !== '' && parentLayout.wrap() !== 'nowrap'\n };\n }\n if (isBrowser && host.parentElement) {\n const cs = getComputedStyle(host.parentElement);\n return {\n direction: cs.flexDirection || 'row',\n hasWrap: !!cs.flexWrap && cs.flexWrap !== 'nowrap'\n };\n }\n return { direction: 'row', hasWrap: false };\n}\n\n@Directive({\n selector: `\n [fxLayout],\n [fxLayout.xs],\n [fxLayout.sm],\n [fxLayout.md],\n [fxLayout.lg],\n [fxLayout.xl],\n [fxLayout.lt-sm],\n [fxLayout.lt-md],\n [fxLayout.lt-lg],\n [fxLayout.lt-xl],\n [fxLayout.gt-xs],\n [fxLayout.gt-sm],\n [fxLayout.gt-md],\n [fxLayout.gt-lg]\n `,\n standalone: true\n})\nexport class FxLayoutDirective extends ResponsiveBaseDirective {\n readonly fxLayout = input<string>('row', { alias: 'fxLayout' });\n readonly xs = input<string>(undefined, { alias: 'fxLayout.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayout.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayout.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayout.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayout.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayout.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayout.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayout.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayout.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayout.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayout.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayout.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayout.gt-lg' });\n\n private readonly _parsed = computed(() =>\n validateLayoutValue(resolveAll(\n { default: this.fxLayout(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'row')\n );\n\n /** Reactive layout parts — readable by FxFlex / FxLayoutAlign / FxFlexOffset. */\n readonly direction = computed(() => this._parsed()[0]);\n readonly wrap = computed(() => this._parsed()[1]);\n readonly inline = computed(() => this._parsed()[2]);\n\n /** Host element, exposed for direct-parent matching by child directives. */\n get hostElement(): HTMLElement { return this.el.nativeElement; }\n\n constructor() {\n super();\n effect(() => {\n const [dir, wrap, inline] = this._parsed();\n // ngx-layout parity: never override display:none set by fxHide\n // (LayoutStyleBuilder: display === 'none' ? display : css.display)\n if (this.el.nativeElement.style.display !== 'none') {\n this.safeSetStyle('display', inline ? 'inline-flex' : 'flex');\n }\n this.safeSetStyle('box-sizing', 'border-box');\n this.safeSetStyle('flex-direction', dir);\n this.safeSetStyle('flex-wrap', wrap || null);\n });\n }\n}\n\n@Directive({\n selector: `\n [fxLayoutWrap],\n [fxLayoutWrap.xs],\n [fxLayoutWrap.sm],\n [fxLayoutWrap.md],\n [fxLayoutWrap.lg],\n [fxLayoutWrap.xl],\n [fxLayoutWrap.lt-sm],\n [fxLayoutWrap.lt-md],\n [fxLayoutWrap.lt-lg],\n [fxLayoutWrap.lt-xl],\n [fxLayoutWrap.gt-xs],\n [fxLayoutWrap.gt-sm],\n [fxLayoutWrap.gt-md],\n [fxLayoutWrap.gt-lg]\n `,\n standalone: true\n})\nexport class FxLayoutWrapDirective extends ResponsiveBaseDirective {\n readonly fxLayoutWrap = input<string>('wrap', { alias: 'fxLayoutWrap' });\n readonly xs = input<string>(undefined, { alias: 'fxLayoutWrap.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayoutWrap.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayoutWrap.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayoutWrap.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayoutWrap.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutWrap.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutWrap.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutWrap.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutWrap.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutWrap.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutWrap.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutWrap.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutWrap.gt-lg' });\n\n private readonly _wrap = computed(() =>\n validateWrapValue(resolveAll(\n { default: this.fxLayoutWrap(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) || 'wrap')\n );\n\n constructor() {\n super();\n effect(() => { this.safeSetStyle('flex-wrap', this._wrap()); });\n }\n}\n","/**\n * @file fx-flex-extras.directives.ts (Angular 21 — signals)\n *\n * Flex child helper directives:\n * [fxFlexOrder] — CSS order\n * [fxFlexOffset] — margin-inline-start (RTL-safe)\n * [fxFlexAlign] — align-self override\n * [fxFlexFill] — fills the container (width/height 100%)\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() derives the resolved CSS values\n * • effect() in constructor writes to DOM — no lifecycle hooks\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, inject, input, isDevMode } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\nimport { FxLayoutDirective, resolveParentFlow } from './fx-layout.directive';\n\n@Directive({\n selector: `\n [fxFlexOrder],\n [fxFlexOrder.xs],\n [fxFlexOrder.sm],\n [fxFlexOrder.md],\n [fxFlexOrder.lg],\n [fxFlexOrder.xl],\n [fxFlexOrder.lt-sm],\n [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg],\n [fxFlexOrder.lt-xl],\n [fxFlexOrder.gt-xs],\n [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md],\n [fxFlexOrder.gt-lg]\n `,\n standalone: true\n})\nexport class FxFlexOrderDirective extends ResponsiveBaseDirective {\n readonly fxFlexOrder = input<string>(undefined, { alias: 'fxFlexOrder' });\n readonly xs = input<string>(undefined, { alias: 'fxFlexOrder.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlexOrder.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlexOrder.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlexOrder.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlexOrder.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxFlexOrder.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlexOrder.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlexOrder.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlexOrder.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxFlexOrder.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlexOrder.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlexOrder.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlexOrder.gt-lg' });\n\n private readonly _order = computed(() =>\n resolveAll(\n { default: this.fxFlexOrder(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? '0'\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._order();\n if (isDevMode() && isNaN(Number(v))) console.warn(`[fxFlexOrder] Non-numeric value: \"${v}\"`);\n this.safeSetStyle('order', v);\n });\n }\n}\n\n// ─── fxFlexOffset ────────────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxFlexOffset],\n [fxFlexOffset.xs],\n [fxFlexOffset.sm],\n [fxFlexOffset.md],\n [fxFlexOffset.lg],\n [fxFlexOffset.xl],\n [fxFlexOffset.lt-sm],\n [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg],\n [fxFlexOffset.lt-xl],\n [fxFlexOffset.gt-xs],\n [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md],\n [fxFlexOffset.gt-lg]\n `,\n standalone: true\n})\nexport class FxFlexOffsetDirective extends ResponsiveBaseDirective {\n /** Ancestor FxLayout (matched to the direct parent inside resolveParentFlow). */\n private readonly parentLayout = inject(FxLayoutDirective, { skipSelf: true, optional: true });\n\n readonly fxFlexOffset = input<string>(undefined, { alias: 'fxFlexOffset' });\n readonly xs = input<string>(undefined, { alias: 'fxFlexOffset.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlexOffset.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlexOffset.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlexOffset.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlexOffset.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxFlexOffset.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlexOffset.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlexOffset.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlexOffset.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxFlexOffset.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlexOffset.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlexOffset.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlexOffset.gt-lg' });\n\n private readonly _offset = computed(() =>\n resolveAll(\n { default: this.fxFlexOffset(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? '0'\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._offset();\n // ngx-layout parity: when the parent flex container is a column, offset\n // pushes down (margin-top); otherwise it pushes on the inline axis\n // (margin-inline-start, RTL-safe). Direction comes reactively from the\n // parent FxLayoutDirective when present, else from getComputedStyle.\n const { direction } = resolveParentFlow(this.el.nativeElement, this.parentLayout, this.isBrowser);\n const isColumn = direction.indexOf('column') > -1;\n if (isColumn) {\n this.safeSetStyle('margin-inline-start', null);\n this.safeSetStyle('margin-top', v);\n } else {\n this.safeSetStyle('margin-top', null);\n this.safeSetStyle('margin-inline-start', v);\n }\n });\n }\n}\n\n// ─── fxFlexAlign ─────────────────────────────────────────────────────────────\n\ntype AlignSelf = 'auto' | 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nconst ALIGN_SELF_MAP: Record<string, string> = {\n start: 'flex-start', end: 'flex-end', center: 'center',\n stretch: 'stretch', baseline: 'baseline', auto: 'auto'\n};\n\n@Directive({\n selector: `\n [fxFlexAlign],\n [fxFlexAlign.xs],\n [fxFlexAlign.sm],\n [fxFlexAlign.md],\n [fxFlexAlign.lg],\n [fxFlexAlign.xl],\n [fxFlexAlign.lt-sm],\n [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg],\n [fxFlexAlign.lt-xl],\n [fxFlexAlign.gt-xs],\n [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md],\n [fxFlexAlign.gt-lg]\n `,\n standalone: true\n})\nexport class FxFlexAlignDirective extends ResponsiveBaseDirective {\n readonly fxFlexAlign = input<AlignSelf>(undefined, { alias: 'fxFlexAlign' });\n readonly xs = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xs' });\n readonly sm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm' });\n readonly md = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md' });\n readonly lg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg' });\n readonly xl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xl' });\n readonly ltSm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-sm' });\n readonly ltMd = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-md' });\n readonly ltLg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-lg' });\n readonly ltXl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-xl' });\n readonly gtXs = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-xs' });\n readonly gtSm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-sm' });\n readonly gtMd = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-md' });\n readonly gtLg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-lg' });\n\n private readonly _alignSelf = computed(() => {\n const v = resolveAll(\n { default: this.fxFlexAlign(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'stretch';\n if (isDevMode() && !ALIGN_SELF_MAP[v]) console.warn(`[fxFlexAlign] Unknown value: \"${v}\". Valid: ${Object.keys(ALIGN_SELF_MAP).join(', ')}`);\n return ALIGN_SELF_MAP[v] ?? v;\n });\n\n constructor() {\n super();\n effect(() => { this.safeSetStyle('align-self', this._alignSelf()); });\n }\n}\n\n// ─── fxFlexFill ──────────────────────────────────────────────────────────────\n// fxFlexFill is intentionally non-responsive in its most common usage,\n// but supports breakpoint suffixes for edge cases where fill must be toggled.\n\ntype FillValue = 'fill' | 'none' | '' | boolean;\nfunction toBool(v: FillValue | undefined): boolean | undefined {\n if (v === undefined) return undefined;\n if (typeof v === 'boolean') return v;\n if (v === '') return true;\n return v !== 'none';\n}\n\n@Directive({\n selector: `\n [fxFlexFill],\n [fxFill],\n [fxFlexFill.xs],\n [fxFlexFill.sm],\n [fxFlexFill.md],\n [fxFlexFill.lg],\n [fxFlexFill.xl],\n [fxFlexFill.lt-sm],\n [fxFlexFill.lt-md],\n [fxFlexFill.lt-lg],\n [fxFlexFill.lt-xl],\n [fxFlexFill.gt-xs],\n [fxFlexFill.gt-sm],\n [fxFlexFill.gt-md],\n [fxFlexFill.gt-lg]\n `,\n standalone: true\n})\nexport class FxFlexFillDirective extends ResponsiveBaseDirective {\n readonly fxFlexFill = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill', transform: toBool });\n readonly fxFill = input<boolean, FillValue>(undefined, { alias: 'fxFill', transform: toBool });\n readonly xs = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xs', transform: toBool });\n readonly sm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm', transform: toBool });\n readonly md = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md', transform: toBool });\n readonly lg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg', transform: toBool });\n readonly xl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xl', transform: toBool });\n readonly ltSm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-sm', transform: toBool });\n readonly ltMd = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-md', transform: toBool });\n readonly ltLg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-lg', transform: toBool });\n readonly ltXl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-xl', transform: toBool });\n readonly gtXs = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-xs', transform: toBool });\n readonly gtSm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-sm', transform: toBool });\n readonly gtMd = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-md', transform: toBool });\n readonly gtLg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-lg', transform: toBool });\n\n private readonly _active = computed(() =>\n (resolveAll(\n // fxFill is a shorthand alias for the default; fxFlexFill wins if both set\n { default: this.fxFlexFill() ?? this.fxFill(),\n xs: this.xs() as boolean | undefined, sm: this.sm() as boolean | undefined,\n md: this.md() as boolean | undefined, lg: this.lg() as boolean | undefined,\n xl: this.xl() as boolean | undefined },\n { 'lt-sm': this.ltSm() as boolean | undefined, 'lt-md': this.ltMd() as boolean | undefined,\n 'lt-lg': this.ltLg() as boolean | undefined, 'lt-xl': this.ltXl() as boolean | undefined,\n 'gt-xs': this.gtXs() as boolean | undefined, 'gt-sm': this.gtSm() as boolean | undefined,\n 'gt-md': this.gtMd() as boolean | undefined, 'gt-lg': this.gtLg() as boolean | undefined },\n this.media.currentBp(), a => this.media.isActive(a)\n ) as boolean | undefined) ?? true\n );\n\n constructor() {\n super();\n effect(() => {\n const active = this._active();\n const v = active ? '100%' : null;\n this.safeSetStyle('margin', active ? '0' : null);\n this.safeSetStyle('width', v);\n this.safeSetStyle('height', v);\n this.safeSetStyle('min-width', v);\n this.safeSetStyle('min-height', v);\n });\n }\n}\n","/**\n * @file fx-flex.directive.ts (Angular 22 — signals)\n *\n * [fxFlex] — flex shorthand on a flex child element.\n *\n * The CSS builder is a faithful port of @ngbracket/ngx-layout\n * FlexStyleBuilder.buildStyles + validateBasis, including:\n * • direction-aware min/max (max-width vs max-height by parent flow)\n * • percentage basis → flex: G S 100% + max-* capped to the percentage\n * • fixed units → flex: G S <px> + min/max-* locks\n * • empty basis → '0%' in row, '0.000000001px' in column (useColumnBasisZero)\n * • calc() support (flex-grow/shrink/basis split, operator padding)\n * • wrap-container basis rewrite (ngx issue 660)\n *\n * Extensions beyond ngx-layout (documented):\n * • fxFlex=\"*\" → fills like fxFlex=\"grow\" (1 1 100%).\n * A bare fxFlex keeps the ngx default: 1 1 0%.\n * • addFlexToParent → if the direct parent is not a flex container, this directive\n * sets display:flex on it so children work without fxLayout\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, inject, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\nimport { FxLayoutDirective, resolveParentFlow } from './fx-layout.directive';\n\n// ─── Ports of ngx-layout basis-validator.ts ──────────────────────────────────\n\n/** Pads calc() operators with whitespace (ngx _validateCalcValue). */\nfunction validateCalcValue(calc: string): string {\n return calc.replace(/[\\s]/g, '').replace(/[\\/\\*\\+\\-]/g, ' $& ');\n}\n\n/** Port of ngx validateBasis(): returns [grow, shrink, basis]. */\nexport function validateBasis(basis: string, grow = '1', shrink = '1'): string[] {\n let parts = [grow, shrink, basis];\n const j = basis.indexOf('calc');\n if (j > 0) {\n parts[2] = validateCalcValue(basis.substring(j).trim());\n const matches = basis.substring(0, j).trim().split(' ');\n if (matches.length === 2) {\n parts[0] = matches[0];\n parts[1] = matches[1];\n }\n } else if (j === 0) {\n parts[2] = validateCalcValue(basis.trim());\n } else {\n const matches = basis.split(' ');\n parts = matches.length === 3 ? matches : [grow, shrink, basis];\n }\n return parts;\n}\n\n// ─── Port of ngx-layout FlexStyleBuilder.buildStyles ─────────────────────────\n\nconst CLEAR_STYLES: Record<string, string | null> = {\n 'max-width': null, 'max-height': null, 'min-width': null, 'min-height': null\n};\n\n/**\n * Builds the complete flex style map for a child, given the raw fxFlex value\n * and the parent flow. `null` values mean \"remove this property\".\n * Matches ngx-layout output exactly (useColumnBasisZero = true, the default).\n */\nexport function buildFlexStyles(\n value: string,\n direction: string,\n hasWrap: boolean\n): Record<string, string | null> {\n const isHorizontal = direction.indexOf('row') > -1 || direction.indexOf('column') === -1;\n const parts = validateBasis(String(value).replace(';', ''));\n let grow: string | number = parts[0];\n let shrink: string | number = parts[1];\n let basis = parts[2];\n\n const max = isHorizontal ? 'max-width' : 'max-height';\n const min = isHorizontal ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || basis === 'auto';\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits =\n String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n let isValue = hasCalc || hasUnits;\n\n // eslint-disable-next-line eqeqeq\n grow = grow == '0' ? 0 : grow;\n // eslint-disable-next-line eqeqeq\n shrink = shrink == '0' ? 0 : shrink;\n const isFixed = !grow && !shrink;\n\n let css: Record<string, string | number | null> = {};\n\n switch (basis || '') {\n case '':\n // useColumnBasisZero default = true (ngx LAYOUT_CONFIG default)\n basis = isHorizontal ? '0%' : '0.000000001px';\n break;\n case 'initial':\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n if (!isValue && !isPercent && !isNaN(basis as unknown as number)) {\n basis = basis + '%';\n }\n if (basis === '0%') isValue = true; // ngx fix #280\n if (basis === '0px') basis = '0%';\n if (hasCalc) { // ngx fix #5345\n css = { ...CLEAR_STYLES, 'flex-grow': grow, 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%' };\n } else {\n css = { ...CLEAR_STYLES, flex: `${grow} ${shrink} ${isValue ? basis : '100%'}` };\n }\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = { ...CLEAR_STYLES, 'flex-grow': grow, 'flex-shrink': shrink, 'flex-basis': basis };\n } else {\n css = { ...CLEAR_STYLES, flex: `${grow} ${shrink} ${basis}` };\n }\n }\n\n // ngx fixes #277 / #534 / #728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n if (!css[min] && !css[max]) {\n // ngx fix #528\n if (hasCalc) {\n css = { ...CLEAR_STYLES, 'flex-grow': grow, 'flex-shrink': shrink, 'flex-basis': basis };\n } else {\n css = { ...CLEAR_STYLES, flex: `${grow} ${shrink} ${basis}` };\n }\n } else if (hasWrap) {\n // ngx fix #660\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max]\n ? (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`)\n : (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n\n // Normalize numbers to strings for the renderer\n const out: Record<string, string | null> = {};\n for (const [k, v] of Object.entries(css)) out[k] = v === null ? null : String(v);\n return out;\n}\n\n/**\n * Resolves the non-ngx `fxFlex=\"*\"` extension to `grow` (`flex: 1 1 100%`, max-* 100%).\n * Every other value — including a bare `fxFlex` ('') — is returned unchanged, so a bare\n * fxFlex keeps the ngx-layout default (`1 1 0%` in row, `1 1 0.000000001px` in column).\n * @param raw - The resolved fxFlex value for the active breakpoint.\n * @returns The value to pass to `buildFlexStyles`.\n */\nexport function resolveFlexInput(raw: string): string {\n return raw === '*' ? 'grow' : raw;\n}\n\n@Directive({\n selector: `\n [fxFlex],\n [fxFlex.xs],\n [fxFlex.sm],\n [fxFlex.md],\n [fxFlex.lg],\n [fxFlex.xl],\n [fxFlex.lt-sm],\n [fxFlex.lt-md],\n [fxFlex.lt-lg],\n [fxFlex.lt-xl],\n [fxFlex.gt-xs],\n [fxFlex.gt-sm],\n [fxFlex.gt-md],\n [fxFlex.gt-lg]\n `,\n standalone: true\n})\nexport class FxFlexDirective extends ResponsiveBaseDirective {\n /** Direct ancestor FxLayout (any level); matched to the direct parent in the effect. */\n private readonly parentLayout = inject(FxLayoutDirective, { skipSelf: true, optional: true });\n\n readonly fxFlex = input<string>(undefined, { alias: 'fxFlex' });\n readonly xs = input<string>(undefined, { alias: 'fxFlex.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlex.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlex.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlex.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlex.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxFlex.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlex.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlex.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlex.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxFlex.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlex.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlex.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlex.gt-lg' });\n\n private readonly _rawFlex = computed(() =>\n resolveAll(\n { default: this.fxFlex(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n /** CSS properties applied on the last effect run (for stale cleanup). */\n private _applied = new Set<string>();\n\n constructor() {\n super();\n effect(() => {\n let raw = this._rawFlex();\n const el = this.el.nativeElement;\n\n // No rule matches the current breakpoint → remove everything we applied\n if (raw === undefined) {\n for (const prop of this._applied) this.r2.removeStyle(el, prop);\n this._applied.clear();\n return;\n }\n\n // addFlexToParent (ngx-layout parity): when the direct parent is not a flex\n // container, make it one so fxFlex children behave even without an explicit fxLayout.\n const directParentHasLayout = !!this.parentLayout && this.parentLayout.hostElement === el.parentElement;\n if (this.isBrowser && el.parentElement && !directParentHasLayout) {\n const pdisplay = getComputedStyle(el.parentElement).display;\n if (pdisplay !== 'flex' && pdisplay !== 'inline-flex') {\n this.r2.setStyle(el.parentElement, 'display', 'flex');\n }\n }\n\n // `*` => grow (1 1 100%); a bare fxFlex keeps the ngx default (1 1 0%).\n raw = resolveFlexInput(raw);\n\n // Parent flow: reactive via FxLayoutDirective signals when it is the\n // direct parent; getComputedStyle fallback for plain-CSS flex parents.\n const { direction, hasWrap } = resolveParentFlow(el, this.parentLayout, this.isBrowser);\n\n const styles = buildFlexStyles(raw, direction, hasWrap);\n const nextKeys = new Set<string>(\n Object.entries(styles).filter(([, v]) => v !== null).map(([k]) => k)\n );\n\n // Remove previously-applied styles that are no longer set BEFORE writing the new\n // ones. Order matters: when the value toggles between the `flex` shorthand (e.g.\n // \"100\" / \"50%\") and the split longhands `flex-grow/flex-shrink/flex-basis` (e.g. a\n // calc() value), removing the stale longhands *after* setting `flex` would wipe the\n // shorthand. Cleaning up first keeps the final `flex` (or longhands) intact.\n for (const prop of this._applied) {\n if (!nextKeys.has(prop)) this.r2.removeStyle(el, prop);\n }\n for (const [prop, value] of Object.entries(styles)) {\n if (value === null) this.r2.removeStyle(el, prop);\n else this.r2.setStyle(el, prop, value);\n }\n this._applied = nextKeys;\n });\n }\n}\n","/**\n * @file fx-grid.directives.ts (Angular 21 — signals)\n *\n * CSS Grid responsive directives.\n *\n * [fxGrid] — display:grid + responsive grid-template-columns.\n * Accepts [fxGridRows] and [fxGridGap] inputs on same host.\n * [fxGridColumn] — grid-column on a child\n * [fxGridArea] — grid-area on a child\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • FxGridDirective uses 3 pairs of computed() for cols/rows/gap maps\n * • Single effect() in constructor writes all 3 CSS props\n * • Null/undefined props are removed (no style leak)\n *\n * Unitless numeric gap values are normalized to px (\"16\" → \"16px\").\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nfunction normalizeGap(raw: string | undefined): string | undefined {\n if (!raw) return undefined;\n return raw.trim().split(/\\s+/)\n .map(v => /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v)\n .join(' ');\n}\n\n// ─── fxGrid (container) ──────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxGrid],\n [fxGrid.xs],\n [fxGrid.sm],\n [fxGrid.md],\n [fxGrid.lg],\n [fxGrid.xl],\n [fxGrid.lt-sm],\n [fxGrid.lt-md],\n [fxGrid.lt-lg],\n [fxGrid.lt-xl],\n [fxGrid.gt-xs],\n [fxGrid.gt-sm],\n [fxGrid.gt-md],\n [fxGrid.gt-lg]\n `,\n standalone: true,\n host: { '[style.display]': '\"grid\"' }\n})\nexport class FxGridDirective extends ResponsiveBaseDirective {\n // ── grid-template-columns ──────────────────────────────────────────────────\n readonly fxGrid = input<string>(undefined, { alias: 'fxGrid' });\n readonly xs = input<string>(undefined, { alias: 'fxGrid.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxGrid.sm' });\n readonly md = input<string>(undefined, { alias: 'fxGrid.md' });\n readonly lg = input<string>(undefined, { alias: 'fxGrid.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxGrid.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxGrid.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxGrid.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxGrid.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxGrid.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxGrid.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxGrid.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxGrid.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxGrid.gt-lg' });\n\n // ── grid-template-rows ────────────────────────────────────────────────────\n readonly fxGridRows = input<string>(undefined, { alias: 'fxGridRows' });\n readonly rowsXs = input<string>(undefined, { alias: 'fxGridRows.xs' });\n readonly rowsSm = input<string>(undefined, { alias: 'fxGridRows.sm' });\n readonly rowsMd = input<string>(undefined, { alias: 'fxGridRows.md' });\n readonly rowsLg = input<string>(undefined, { alias: 'fxGridRows.lg' });\n readonly rowsXl = input<string>(undefined, { alias: 'fxGridRows.xl' });\n readonly rowsLtSm = input<string>(undefined, { alias: 'fxGridRows.lt-sm' });\n readonly rowsLtMd = input<string>(undefined, { alias: 'fxGridRows.lt-md' });\n readonly rowsLtLg = input<string>(undefined, { alias: 'fxGridRows.lt-lg' });\n readonly rowsLtXl = input<string>(undefined, { alias: 'fxGridRows.lt-xl' });\n readonly rowsGtXs = input<string>(undefined, { alias: 'fxGridRows.gt-xs' });\n readonly rowsGtSm = input<string>(undefined, { alias: 'fxGridRows.gt-sm' });\n readonly rowsGtMd = input<string>(undefined, { alias: 'fxGridRows.gt-md' });\n readonly rowsGtLg = input<string>(undefined, { alias: 'fxGridRows.gt-lg' });\n\n // ── gap ───────────────────────────────────────────────────────────────────\n readonly fxGridGap = input<string>(undefined, { alias: 'fxGridGap' });\n readonly gapXs = input<string>(undefined, { alias: 'fxGridGap.xs' });\n readonly gapSm = input<string>(undefined, { alias: 'fxGridGap.sm' });\n readonly gapMd = input<string>(undefined, { alias: 'fxGridGap.md' });\n readonly gapLg = input<string>(undefined, { alias: 'fxGridGap.lg' });\n readonly gapXl = input<string>(undefined, { alias: 'fxGridGap.xl' });\n readonly gapLtSm = input<string>(undefined, { alias: 'fxGridGap.lt-sm' });\n readonly gapLtMd = input<string>(undefined, { alias: 'fxGridGap.lt-md' });\n readonly gapLtLg = input<string>(undefined, { alias: 'fxGridGap.lt-lg' });\n readonly gapLtXl = input<string>(undefined, { alias: 'fxGridGap.lt-xl' });\n readonly gapGtXs = input<string>(undefined, { alias: 'fxGridGap.gt-xs' });\n readonly gapGtSm = input<string>(undefined, { alias: 'fxGridGap.gt-sm' });\n readonly gapGtMd = input<string>(undefined, { alias: 'fxGridGap.gt-md' });\n readonly gapGtLg = input<string>(undefined, { alias: 'fxGridGap.gt-lg' });\n\n // ── resolved values (flat computed — no intermediate object computed) ──────\n private readonly _cols = computed(() =>\n resolveAll<string>(\n { default: this.fxGrid(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n private readonly _rows = computed(() =>\n resolveAll<string>(\n { default: this.fxGridRows(), xs: this.rowsXs(), sm: this.rowsSm(),\n md: this.rowsMd(), lg: this.rowsLg(), xl: this.rowsXl() },\n { 'lt-sm': this.rowsLtSm(), 'lt-md': this.rowsLtMd(), 'lt-lg': this.rowsLtLg(),\n 'lt-xl': this.rowsLtXl(), 'gt-xs': this.rowsGtXs(), 'gt-sm': this.rowsGtSm(), 'gt-md': this.rowsGtMd(),\n 'gt-lg': this.rowsGtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n private readonly _gap = computed(() =>\n normalizeGap(resolveAll<string>(\n { default: this.fxGridGap(), xs: this.gapXs(), sm: this.gapSm(),\n md: this.gapMd(), lg: this.gapLg(), xl: this.gapXl() },\n { 'lt-sm': this.gapLtSm(), 'lt-md': this.gapLtMd(), 'lt-lg': this.gapLtLg(),\n 'lt-xl': this.gapLtXl(), 'gt-xs': this.gapGtXs(), 'gt-sm': this.gapGtSm(), 'gt-md': this.gapGtMd(),\n 'gt-lg': this.gapGtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ))\n );\n\n constructor() {\n super();\n effect(() => {\n const cols = this._cols();\n const rows = this._rows();\n const gap = this._gap();\n cols ? this.safeSetStyle('grid-template-columns', cols)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-template-columns');\n rows ? this.safeSetStyle('grid-template-rows', rows)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-template-rows');\n gap ? this.safeSetStyle('gap', gap)\n : this.r2.removeStyle(this.el.nativeElement, 'gap');\n });\n }\n}\n\n// ─── fxGridColumn ─────────────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxGridColumn],\n [fxGridColumn.xs],\n [fxGridColumn.sm],\n [fxGridColumn.md],\n [fxGridColumn.lg],\n [fxGridColumn.xl],\n [fxGridColumn.lt-sm],\n [fxGridColumn.lt-md],\n [fxGridColumn.lt-lg],\n [fxGridColumn.lt-xl],\n [fxGridColumn.gt-xs],\n [fxGridColumn.gt-sm],\n [fxGridColumn.gt-md],\n [fxGridColumn.gt-lg]\n `,\n standalone: true\n})\nexport class FxGridColumnDirective extends ResponsiveBaseDirective {\n readonly fxGridColumn = input<string>(undefined, { alias: 'fxGridColumn' });\n readonly xs = input<string>(undefined, { alias: 'fxGridColumn.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxGridColumn.sm' });\n readonly md = input<string>(undefined, { alias: 'fxGridColumn.md' });\n readonly lg = input<string>(undefined, { alias: 'fxGridColumn.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxGridColumn.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxGridColumn.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxGridColumn.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxGridColumn.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxGridColumn.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxGridColumn.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxGridColumn.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxGridColumn.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxGridColumn.gt-lg' });\n\n private readonly _resolved = computed(() =>\n resolveAll<string>(\n { default: this.fxGridColumn(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._resolved();\n v ? this.safeSetStyle('grid-column', v)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-column');\n });\n }\n}\n\n// ─── fxGridArea ───────────────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxGridArea],\n [fxGridArea.xs],\n [fxGridArea.sm],\n [fxGridArea.md],\n [fxGridArea.lg],\n [fxGridArea.xl],\n [fxGridArea.lt-sm],\n [fxGridArea.lt-md],\n [fxGridArea.lt-lg],\n [fxGridArea.lt-xl],\n [fxGridArea.gt-xs],\n [fxGridArea.gt-sm],\n [fxGridArea.gt-md],\n [fxGridArea.gt-lg]\n `,\n standalone: true\n})\nexport class FxGridAreaDirective extends ResponsiveBaseDirective {\n readonly fxGridArea = input<string>(undefined, { alias: 'fxGridArea' });\n readonly xs = input<string>(undefined, { alias: 'fxGridArea.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxGridArea.sm' });\n readonly md = input<string>(undefined, { alias: 'fxGridArea.md' });\n readonly lg = input<string>(undefined, { alias: 'fxGridArea.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxGridArea.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxGridArea.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxGridArea.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxGridArea.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxGridArea.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxGridArea.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxGridArea.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxGridArea.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxGridArea.gt-lg' });\n\n private readonly _resolved = computed(() =>\n resolveAll<string>(\n { default: this.fxGridArea(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._resolved();\n v ? this.safeSetStyle('grid-area', v)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-area');\n });\n }\n}\n","/**\n * @file fx-layout-align.directive.ts (Angular 22 — signals)\n *\n * [fxLayoutAlign] — sets justify-content + align-items + align-content\n * on a flex container. Faithful port of @ngbracket LayoutAlignStyleBuilder:\n *\n * • mainAxis : start|flex-start | center | end|flex-end |\n * space-between | space-around | space-evenly (default: flex-start)\n * • crossAxis: start|flex-start | center | end|flex-end | baseline |\n * space-between | space-around | stretch (default: stretch)\n * • align-content is set alongside align-items (multi-line wrap alignment)\n * • crossAxis 'stretch' → max-width:100% (column flow) / max-height:100% (row flow)\n * • display flex/inline-flex + box-sizing, preserving display:none (fxHide)\n *\n * Direction/inline are read reactively from the FxLayoutDirective on the SAME\n * host when present (signals), defaulting to row / non-inline otherwise.\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, inject, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\nimport { FxLayoutDirective } from './fx-layout.directive';\n\n/**\n * Port of ngx LayoutAlignStyleBuilder.buildStyles.\n * `null` values mean \"remove the property\".\n */\nexport function buildAlignStyles(\n align: string,\n layoutDirection: string,\n inline: boolean\n): Record<string, string | null> {\n const css: Record<string, string | null> = {};\n const [mainAxis, crossAxis] = align.split(' ');\n\n switch (mainAxis) {\n case 'center': css['justify-content'] = 'center'; break;\n case 'space-around': css['justify-content'] = 'space-around'; break;\n case 'space-between': css['justify-content'] = 'space-between'; break;\n case 'space-evenly': css['justify-content'] = 'space-evenly'; break;\n case 'end':\n case 'flex-end': css['justify-content'] = 'flex-end'; break;\n case 'start':\n case 'flex-start':\n default: css['justify-content'] = 'flex-start'; break;\n }\n\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start'; break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center'; break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end'; break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch'; break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch'; break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline'; break;\n case 'stretch':\n default:\n css['align-items'] = css['align-content'] = 'stretch'; break;\n }\n\n const isHorizontal = layoutDirection.indexOf('row') > -1 || layoutDirection.indexOf('column') === -1;\n return {\n ...css,\n 'display': inline ? 'inline-flex' : 'flex',\n 'flex-direction': layoutDirection,\n 'box-sizing': 'border-box',\n 'max-width': crossAxis === 'stretch' ? (!isHorizontal ? '100%' : null) : null,\n 'max-height': crossAxis === 'stretch' ? (isHorizontal ? '100%' : null) : null\n };\n}\n\n@Directive({\n selector: `\n [fxLayoutAlign],\n [fxLayoutAlign.xs],\n [fxLayoutAlign.sm],\n [fxLayoutAlign.md],\n [fxLayoutAlign.lg],\n [fxLayoutAlign.xl],\n [fxLayoutAlign.lt-sm],\n [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg],\n [fxLayoutAlign.lt-xl],\n [fxLayoutAlign.gt-xs],\n [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md],\n [fxLayoutAlign.gt-lg]\n `,\n standalone: true\n})\nexport class FxLayoutAlignDirective extends ResponsiveBaseDirective {\n /** FxLayout on the same host (optional): direction/inline read reactively. */\n private readonly selfLayout = inject(FxLayoutDirective, { self: true, optional: true });\n\n readonly fxLayoutAlign = input<string>(undefined, { alias: 'fxLayoutAlign' });\n readonly xs = input<string>(undefined, { alias: 'fxLayoutAlign.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayoutAlign.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayoutAlign.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayoutAlign.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayoutAlign.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutAlign.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutAlign.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutAlign.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutAlign.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutAlign.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutAlign.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutAlign.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutAlign.gt-lg' });\n\n private readonly _align = computed(() =>\n resolveAll(\n { default: this.fxLayoutAlign(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'start stretch'\n );\n\n constructor() {\n super();\n effect(() => {\n const direction = this.selfLayout?.direction() ?? 'row';\n const inline = this.selfLayout?.inline() ?? false;\n const styles = buildAlignStyles(this._align(), direction, inline);\n const el = this.el.nativeElement;\n for (const [prop, value] of Object.entries(styles)) {\n // ngx parity: never override display:none set by fxHide\n if (prop === 'display' && el.style.display === 'none') continue;\n this.safeSetStyle(prop, value);\n }\n });\n }\n}\n","/**\n * @file fx-layout-gap.directive.ts (Angular 21 — signals)\n *\n * [fxLayoutGap] — sets gap on a flex or grid container.\n * Unitless numbers are normalized to px (e.g. \"16\" → \"16px\").\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() derives the normalized gap value\n * • effect() in constructor writes to DOM\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nfunction normalizeGap(raw: string): string {\n return raw.trim().split(/\\s+/)\n .map(v => /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v)\n .join(' ');\n}\n\n@Directive({\n selector: `\n [fxLayoutGap],\n [fxLayoutGap.xs],\n [fxLayoutGap.sm],\n [fxLayoutGap.md],\n [fxLayoutGap.lg],\n [fxLayoutGap.xl],\n [fxLayoutGap.lt-sm],\n [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg],\n [fxLayoutGap.lt-xl],\n [fxLayoutGap.gt-xs],\n [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md],\n [fxLayoutGap.gt-lg]\n `,\n standalone: true\n})\nexport class FxLayoutGapDirective extends ResponsiveBaseDirective {\n readonly fxLayoutGap = input<string>(undefined, { alias: 'fxLayoutGap' });\n readonly xs = input<string>(undefined, { alias: 'fxLayoutGap.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayoutGap.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayoutGap.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayoutGap.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayoutGap.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutGap.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutGap.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutGap.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutGap.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutGap.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutGap.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutGap.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutGap.gt-lg' });\n\n private readonly _gap = computed(() =>\n normalizeGap(resolveAll(\n { default: this.fxLayoutGap(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? '0')\n );\n\n constructor() {\n super();\n effect(() => { this.safeSetStyle('gap', this._gap()); });\n }\n}\n","/**\n * @file fx-show-hide.directives.ts (Angular 21 — signals)\n *\n * [fxShow] / [fxHide] — responsive visibility via display:none.\n * Elements stay in the DOM (unlike *ifBp which removes them).\n *\n * IMPORTANT: fxShow and fxHide are implemented as a SINGLE directive class\n * (FxShowHideDirective) so that mixed patterns like\n * <div fxHide fxShow.xs> ← hidden everywhere, shown on xs\n * <div fxShow fxHide.lt-lg> ← shown everywhere, hidden below lg\n * work correctly.\n *\n * Resolution algorithm (no mobile-first cascade — semantics for show/hide\n * are point-in-time, not cumulative):\n * 1. Non-canonical (lt-*, gt-*) isActive checks — most specific first\n * 2. Exact canonical match for current bp\n * 3. Default values (fxShow / fxHide without suffix)\n * 4. Fallback: visible (true)\n *\n * When both show and hide match at the same priority level, show wins.\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, effect, input, computed } from '@angular/core';\nimport { ResponsiveBaseDirective, NON_CANONICAL_PRIORITY } from './responsive-base.directive';\n\n/**\n * Pure visibility transition (exported for tests).\n * Captures the inline display before hiding and restores it when shown again,\n * so display:flex|grid written by FxLayout/FxGrid effects is never lost.\n * @returns the new \"previous display\" state to carry to the next transition\n */\nexport function applyVisibility(\n el: { style: { display: string } },\n setStyle: (prop: string, value: string) => void,\n removeStyle: (prop: string) => void,\n visible: boolean,\n prevDisplay: string | null\n): string | null {\n if (!visible) {\n const current = el.style.display;\n if (current !== 'none') prevDisplay = current || null;\n setStyle('display', 'none');\n return prevDisplay;\n }\n // Visible: touch the DOM only if we are the ones who hid it\n if (el.style.display === 'none') {\n if (prevDisplay) setStyle('display', prevDisplay);\n else removeStyle('display');\n }\n return prevDisplay;\n}\n\nfunction toBool(v: string | boolean | '' | undefined | null): boolean | undefined {\n if (v === undefined || v === null) return undefined;\n if (typeof v === 'boolean') return v;\n if (v === '') return true;\n if (v === 'false' || v === '0') return false;\n return true;\n}\n\n// ─── Unified fxShow + fxHide ─────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxShow],\n [fxHide],\n [fxShow.xs],\n [fxShow.sm],\n [fxShow.md],\n [fxShow.lg],\n [fxShow.xl],\n [fxShow.lt-sm],\n [fxShow.lt-md],\n [fxShow.lt-lg],\n [fxShow.lt-xl],\n [fxShow.gt-xs],\n [fxShow.gt-sm],\n [fxShow.gt-md],\n [fxShow.gt-lg],\n [fxHide.xs],\n [fxHide.sm],\n [fxHide.md],\n [fxHide.lg],\n [fxHide.xl],\n [fxHide.lt-sm],\n [fxHide.lt-md],\n [fxHide.lt-lg],\n [fxHide.lt-xl],\n [fxHide.gt-xs],\n [fxHide.gt-sm],\n [fxHide.gt-md],\n [fxHide.gt-lg]\n `,\n standalone: true\n})\nexport class FxShowHideDirective extends ResponsiveBaseDirective {\n // ── fxShow inputs ─────────────────────────────────────────────────────────\n readonly fxShow = input<boolean, string | boolean>(undefined, { alias: 'fxShow', transform: toBool });\n readonly showXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xs', transform: toBool });\n readonly showSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm', transform: toBool });\n readonly showMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md', transform: toBool });\n readonly showLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg', transform: toBool });\n readonly showXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl', transform: toBool });\n readonly showLtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-sm', transform: toBool });\n readonly showLtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-md', transform: toBool });\n readonly showLtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-lg', transform: toBool });\n readonly showLtXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-xl', transform: toBool });\n readonly showGtXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-xs', transform: toBool });\n readonly showGtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-sm', transform: toBool });\n readonly showGtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-md', transform: toBool });\n readonly showGtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-lg', transform: toBool });\n\n // ── fxHide inputs ─────────────────────────────────────────────────────────\n readonly fxHide = input<boolean, string | boolean>(undefined, { alias: 'fxHide', transform: toBool });\n readonly hideXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xs', transform: toBool });\n readonly hideSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm', transform: toBool });\n readonly hideMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md', transform: toBool });\n readonly hideLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg', transform: toBool });\n readonly hideXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl', transform: toBool });\n readonly hideLtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-sm', transform: toBool });\n readonly hideLtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-md', transform: toBool });\n readonly hideLtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-lg', transform: toBool });\n readonly hideLtXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-xl', transform: toBool });\n readonly hideGtXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-xs', transform: toBool });\n readonly hideGtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-sm', transform: toBool });\n readonly hideGtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-md', transform: toBool });\n readonly hideGtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-lg', transform: toBool });\n\n private readonly _visible = computed((): boolean => {\n const bp = this.media.currentBp();\n const isActive = (a: string) => this.media.isActive(a);\n\n // Non-canonical maps (alias → show value / hide value)\n const showNc: Record<string, boolean | undefined> = {\n 'lt-sm': this.showLtSm(), 'lt-md': this.showLtMd(), 'lt-lg': this.showLtLg(),\n 'lt-xl': this.showLtXl(), 'gt-xs': this.showGtXs(), 'gt-sm': this.showGtSm(), 'gt-md': this.showGtMd(),\n 'gt-lg': this.showGtLg() };\n const hideNc: Record<string, boolean | undefined> = {\n 'lt-sm': this.hideLtSm(), 'lt-md': this.hideLtMd(), 'lt-lg': this.hideLtLg(),\n 'lt-xl': this.hideLtXl(), 'gt-xs': this.hideGtXs(), 'gt-sm': this.hideGtSm(), 'gt-md': this.hideGtMd(),\n 'gt-lg': this.hideGtLg() };\n\n // 1. Non-canonical (lt-*, gt-*) — most specific first\n for (const alias of NON_CANONICAL_PRIORITY) {\n const sv = showNc[alias];\n const hv = hideNc[alias];\n if ((sv !== undefined || hv !== undefined) && isActive(alias)) {\n if (sv !== undefined) return sv; // show beats hide at same priority\n return !hv!;\n }\n }\n\n // Canonical maps (bp → value) — exact only, NO cascade\n const showV: Record<string, boolean | undefined> = {\n xs: this.showXs(), sm: this.showSm(), md: this.showMd(),\n lg: this.showLg(), xl: this.showXl() };\n const hideV: Record<string, boolean | undefined> = {\n xs: this.hideXs(), sm: this.hideSm(), md: this.hideMd(),\n lg: this.hideLg(), xl: this.hideXl() };\n\n // 2. Exact canonical match for current bp\n const showExact = showV[bp];\n const hideExact = hideV[bp];\n if (showExact !== undefined) return showExact;\n if (hideExact !== undefined) return !hideExact;\n\n // 3. Default values (fxShow / fxHide without suffix)\n const showDef = this.fxShow();\n const hideDef = this.fxHide();\n if (showDef !== undefined) return showDef;\n if (hideDef !== undefined) return !hideDef;\n\n // 4. Neither directive active → visible\n return true;\n });\n\n /** Inline display captured before the last hide — restored on show. */\n private _prevDisplay: string | null = null;\n\n constructor() {\n super();\n effect(() => {\n this._prevDisplay = applyVisibility(\n this.el.nativeElement,\n (p, v) => this.r2.setStyle(this.el.nativeElement, p, v),\n p => this.r2.removeStyle(this.el.nativeElement, p),\n this._visible(),\n this._prevDisplay\n );\n });\n }\n}\n\n","/**\n * @file fx-style-class.directives.ts (Angular 21 — signals)\n *\n * [fxStyle] — responsive inline style binding (Record<string,string>)\n * [fxClass] — responsive CSS class binding (string | string[] | Record<string,boolean>)\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() derives resolved StyleMap / ClassInput value\n * • effect() in constructor handles DOM writes with diff\n *\n * Style/class leak prevention:\n * _appliedProps / _appliedClasses are regular Set<string> fields\n * (NOT signals) — they track what was actively applied so the\n * effect can remove stale properties/classes on the next run.\n *\n * Breakpoint suffixes: canonical + lt-* + gt-*\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\n// ─── fxStyle ─────────────────────────────────────────────────────────────────\n\ntype StyleMap = Record<string, string>;\n\n@Directive({\n selector: `\n [fxStyle],\n [fxStyle.xs],\n [fxStyle.sm],\n [fxStyle.md],\n [fxStyle.lg],\n [fxStyle.xl],\n [fxStyle.lt-sm],\n [fxStyle.lt-md],\n [fxStyle.lt-lg],\n [fxStyle.lt-xl],\n [fxStyle.gt-xs],\n [fxStyle.gt-sm],\n [fxStyle.gt-md],\n [fxStyle.gt-lg]\n `,\n standalone: true\n})\nexport class FxStyleDirective extends ResponsiveBaseDirective {\n readonly fxStyle = input<StyleMap>(undefined, { alias: 'fxStyle' });\n readonly xs = input<StyleMap>(undefined, { alias: 'fxStyle.xs' });\n readonly sm = input<StyleMap>(undefined, { alias: 'fxStyle.sm' });\n readonly md = input<StyleMap>(undefined, { alias: 'fxStyle.md' });\n readonly lg = input<StyleMap>(undefined, { alias: 'fxStyle.lg' });\n readonly xl = input<StyleMap>(undefined, { alias: 'fxStyle.xl' });\n readonly ltSm = input<StyleMap>(undefined, { alias: 'fxStyle.lt-sm' });\n readonly ltMd = input<StyleMap>(undefined, { alias: 'fxStyle.lt-md' });\n readonly ltLg = input<StyleMap>(undefined, { alias: 'fxStyle.lt-lg' });\n readonly ltXl = input<StyleMap>(undefined, { alias: 'fxStyle.lt-xl' });\n readonly gtXs = input<StyleMap>(undefined, { alias: 'fxStyle.gt-xs' });\n readonly gtSm = input<StyleMap>(undefined, { alias: 'fxStyle.gt-sm' });\n readonly gtMd = input<StyleMap>(undefined, { alias: 'fxStyle.gt-md' });\n readonly gtLg = input<StyleMap>(undefined, { alias: 'fxStyle.gt-lg' });\n\n private readonly _resolved = computed(() =>\n (resolveAll<StyleMap>(\n { default: this.fxStyle(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? {})\n );\n\n /** Tracks which CSS properties were last applied — plain field, not a signal. */\n private _appliedProps = new Set<string>();\n\n constructor() {\n super();\n effect(() => {\n if (!this.isBrowser) return;\n const next = this._resolved();\n const nextKeys = new Set(Object.keys(next));\n for (const prop of this._appliedProps) {\n if (!nextKeys.has(prop)) this.r2.removeStyle(this.el.nativeElement, prop);\n }\n for (const [prop, value] of Object.entries(next)) {\n this.r2.setStyle(this.el.nativeElement, prop, value);\n }\n this._appliedProps = nextKeys;\n });\n }\n}\n\n// ─── fxClass ─────────────────────────────────────────────────────────────────\n\ntype ClassInput = string | string[] | Record<string, boolean>;\n\nfunction toClassSet(v: ClassInput | undefined): Set<string> {\n if (!v) return new Set();\n if (typeof v === 'string') return new Set(v.split(/\\s+/).filter(Boolean));\n if (Array.isArray(v)) return new Set(v.filter(Boolean));\n return new Set(Object.entries(v).filter(([, on]) => on).map(([cls]) => cls));\n}\n\n@Directive({\n selector: `\n [fxClass],\n [fxClass.xs],\n [fxClass.sm],\n [fxClass.md],\n [fxClass.lg],\n [fxClass.xl],\n [fxClass.lt-sm],\n [fxClass.lt-md],\n [fxClass.lt-lg],\n [fxClass.lt-xl],\n [fxClass.gt-xs],\n [fxClass.gt-sm],\n [fxClass.gt-md],\n [fxClass.gt-lg]\n `,\n standalone: true\n})\nexport class FxClassDirective extends ResponsiveBaseDirective {\n readonly fxClass = input<ClassInput>(undefined, { alias: 'fxClass' });\n readonly xs = input<ClassInput>(undefined, { alias: 'fxClass.xs' });\n readonly sm = input<ClassInput>(undefined, { alias: 'fxClass.sm' });\n readonly md = input<ClassInput>(undefined, { alias: 'fxClass.md' });\n readonly lg = input<ClassInput>(undefined, { alias: 'fxClass.lg' });\n readonly xl = input<ClassInput>(undefined, { alias: 'fxClass.xl' });\n readonly ltSm = input<ClassInput>(undefined, { alias: 'fxClass.lt-sm' });\n readonly ltMd = input<ClassInput>(undefined, { alias: 'fxClass.lt-md' });\n readonly ltLg = input<ClassInput>(undefined, { alias: 'fxClass.lt-lg' });\n readonly ltXl = input<ClassInput>(undefined, { alias: 'fxClass.lt-xl' });\n readonly gtXs = input<ClassInput>(undefined, { alias: 'fxClass.gt-xs' });\n readonly gtSm = input<ClassInput>(undefined, { alias: 'fxClass.gt-sm' });\n readonly gtMd = input<ClassInput>(undefined, { alias: 'fxClass.gt-md' });\n readonly gtLg = input<ClassInput>(undefined, { alias: 'fxClass.gt-lg' });\n\n private readonly _resolved = computed(() =>\n toClassSet(resolveAll<ClassInput>(\n { default: this.fxClass(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg() },\n this.media.currentBp(), a => this.media.isActive(a)\n ))\n );\n\n /** Tracks which CSS classes were last applied — plain field, not a signal. */\n private _appliedClasses = new Set<string>();\n\n constructor() {\n super();\n effect(() => {\n if (!this.isBrowser) return;\n const next = this._resolved();\n for (const cls of this._appliedClasses) {\n if (!next.has(cls)) this.r2.removeClass(this.el.nativeElement, cls);\n }\n for (const cls of next) {\n this.r2.addClass(this.el.nativeElement, cls);\n }\n this._appliedClasses = next;\n });\n }\n}\n","import { NgModule } from \"@angular/core\";\n// ── Tokens ───────────────────────────────────────────────────────────────────\nexport { BS5_BREAKPOINTS, LAYOUT_BREAKPOINTS, CANONICAL_ALIASES } from './breakpoints';\nexport type { BreakpointAlias } from './breakpoints';\nexport { ALIAS_FAMILIES } from './breakpoints';\n\n// ── Input type helpers (useful for custom directive extensions) ──────────────\nexport type { CanonicalKey, NonCanonicalKey, BpValues, NcValues } from './responsive-inputs.mixin';\n\n// ── Service ──────────────────────────────────────────────────────────────────\nexport { MediaObserver } from './media-observer.service';\n\n// ── Base (re-export for extension) ───────────────────────────────────────────\nexport { ResponsiveBaseDirective, NON_CANONICAL_PRIORITY } from './responsive-base.directive';\n\n// ── Flex directives ──────────────────────────────────────────────────────────\nexport { FxLayoutDirective, FxLayoutWrapDirective } from './fx-layout.directive';\nexport { FxFlexDirective } from './fx-flex.directive';\nexport { FxLayoutAlignDirective } from './fx-layout-align.directive';\nexport { FxLayoutGapDirective } from './fx-layout-gap.directive';\nexport {\n FxFlexOrderDirective,\n FxFlexOffsetDirective,\n FxFlexAlignDirective,\n FxFlexFillDirective,\n} from './fx-flex-extras.directives';\n\n// ── Visibility directives ─────────────────────────────────────────────────────\nexport { FxShowHideDirective } from './fx-show-hide.directives';\n\n// ── Style / Class directives ─────────────────────────────────────────────────\nexport { FxStyleDirective, FxClassDirective } from './fx-style-class.directives';\n\n// ── Grid directives (bonus — not in original ngx-layout) ─────────────────────\nexport {\n FxGridDirective,\n FxGridColumnDirective,\n FxGridAreaDirective,\n} from './fx-grid.directives';\n\n// ── Structural directives ─────────────────────────────────────────────────────\nexport { IfBpDirective } from './if-bp.directive';\n\n// ── Convenience module (for non-standalone NgModule apps) ────────────────────\nimport { FxLayoutDirective, FxLayoutWrapDirective } from './fx-layout.directive';\nimport { FxFlexDirective } from './fx-flex.directive';\nimport { FxLayoutAlignDirective } from './fx-layout-align.directive';\nimport { FxLayoutGapDirective } from './fx-layout-gap.directive';\nimport {\n FxFlexOrderDirective, FxFlexOffsetDirective,\n FxFlexAlignDirective, FxFlexFillDirective,\n} from './fx-flex-extras.directives';\nimport { FxStyleDirective, FxClassDirective } from './fx-style-class.directives';\nimport {\n FxGridDirective, FxGridColumnDirective, FxGridAreaDirective,\n} from './fx-grid.directives';\nimport { IfBpDirective } from './if-bp.directive';\nimport { FxShowHideDirective } from \"./fx-show-hide.directives\";\n\n@NgModule({\n imports: [\n FxLayoutDirective,\n FxLayoutWrapDirective,\n FxFlexDirective,\n FxShowHideDirective,\n FxLayoutAlignDirective,\n FxLayoutGapDirective,\n FxFlexOrderDirective,\n FxFlexOffsetDirective,\n FxFlexAlignDirective,\n FxFlexFillDirective,\n FxStyleDirective,\n FxClassDirective,\n FxGridDirective,\n FxGridColumnDirective,\n FxGridAreaDirective,\n IfBpDirective,\n ],\n exports: [\n FxLayoutDirective,\n FxLayoutWrapDirective,\n FxFlexDirective,\n FxShowHideDirective,\n FxLayoutAlignDirective,\n FxLayoutGapDirective,\n FxFlexOrderDirective,\n FxFlexOffsetDirective,\n FxFlexAlignDirective,\n FxFlexFillDirective,\n FxStyleDirective,\n FxClassDirective,\n FxGridDirective,\n FxGridColumnDirective,\n FxGridAreaDirective,\n IfBpDirective,\n ],\n\n})\nexport class FlexLayoutModule { }\n\n","/*\n * Public API Surface of @arsedizioni/ars-utils/ui\n */\nexport * from './definitions';\nexport * from './dialog.definitions';\nexport * from './ui.service';\nexport * from './flex/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["toBool","normalizeGap"],"mappings":"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IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,I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AA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAA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MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,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A,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA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AA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA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AAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA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,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,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AA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAA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A,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA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AAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAnB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;AAeT,EAAA,CAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCvBY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YArCrB,iBAAiB;YACjB,qBAAqB;YACrB,eAAe;YACf,mBAAmB;YACnB,sBAAsB;YACtB,oBAAoB;YACpB,oBAAoB;YACpB,qBAAqB;YACrB,oBAAoB;YACpB,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;YACf,qBAAqB;YACrB,mBAAmB;AACnB,YAAA,aAAa,aAGb,iBAAiB;YACjB,qBAAqB;YACrB,eAAe;YACf,mBAAmB;YACnB,sBAAsB;YACtB,oBAAoB;YACpB,oBAAoB;YACpB,qBAAqB;YACrB,oBAAoB;YACpB,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;YACf,qBAAqB;YACrB,mBAAmB;YACnB,aAAa,CAAA,EAAA,CAAA,CAAA;+GAIR,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAvC5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,iBAAiB;wBACjB,qBAAqB;wBACrB,eAAe;wBACf,mBAAmB;wBACnB,sBAAsB;wBACtB,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;wBACrB,oBAAoB;wBACpB,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,aAAa;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,iBAAiB;wBACjB,qBAAqB;wBACrB,eAAe;wBACf,mBAAmB;wBACnB,sBAAsB;wBACtB,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;wBACrB,oBAAoB;wBACpB,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,aAAa;AAChB,qBAAA;AAEJ,iBAAA;;;ACjGD;;AAEG;;ACFH;;AAEG;;;;"}
|