@spartan-ng/brain 0.0.1-alpha.709 → 0.0.1-alpha.710

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.
@@ -46,12 +46,13 @@ class BrnCollapsible {
46
46
  this.expanded.update((expanded) => !expanded);
47
47
  }
48
48
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnCollapsible, deps: [], target: i0.ɵɵFactoryTarget.Directive });
49
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: BrnCollapsible, isStandalone: true, selector: "[brnCollapsible],brn-collapsible", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "attr.data-state": "state()", "attr.disabled": "disabled() ? true : undefined" } }, providers: [provideBrnCollapsible(BrnCollapsible)], ngImport: i0 });
49
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: BrnCollapsible, isStandalone: true, selector: "[brnCollapsible],brn-collapsible", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "attr.data-state": "state()", "attr.disabled": "disabled() ? true : undefined" } }, providers: [provideBrnCollapsible(BrnCollapsible)], exportAs: ["brnCollapsible"], ngImport: i0 });
50
50
  }
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnCollapsible, decorators: [{
52
52
  type: Directive,
53
53
  args: [{
54
54
  selector: '[brnCollapsible],brn-collapsible',
55
+ exportAs: 'brnCollapsible',
55
56
  providers: [provideBrnCollapsible(BrnCollapsible)],
56
57
  host: {
57
58
  '[attr.data-state]': 'state()',
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-collapsible.mjs","sources":["../../../../libs/brain/collapsible/src/lib/brn-collapsible-token.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible-content.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible-trigger.ts","../../../../libs/brain/collapsible/src/index.ts","../../../../libs/brain/collapsible/src/spartan-ng-brain-collapsible.ts"],"sourcesContent":["import type { ValueProvider } from '@angular/core';\nimport { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { MeasurementDisplay } from '@spartan-ng/brain/core';\nimport type { BrnCollapsible } from './brn-collapsible';\n\nexport const BrnCollapsibleToken = new InjectionToken<BrnCollapsible>('BrnCollapsibleToken');\n\nexport function injectBrnCollapsible() {\n\treturn inject(BrnCollapsibleToken, { optional: true });\n}\n\nexport function provideBrnCollapsible(collapsible: Type<BrnCollapsible>): ExistingProvider {\n\treturn { provide: BrnCollapsibleToken, useExisting: collapsible };\n}\n\nexport interface BrCollapsibleConfig {\n\t/**\n\t * The display style to use when measuring element dimensions.\n\t * @default 'block'\n\t */\n\tmeasurementDisplay: MeasurementDisplay;\n}\n\nconst defaultConfig: BrCollapsibleConfig = {\n\tmeasurementDisplay: 'block',\n};\n\nconst BrnCollapsibleConfigToken = new InjectionToken<BrCollapsibleConfig>('BrnCollapsibleConfig');\n\nexport function provideBrnCollapsibleConfig(config: Partial<BrCollapsibleConfig>): ValueProvider {\n\treturn { provide: BrnCollapsibleConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectBrnCollapsibleConfig(): BrCollapsibleConfig {\n\treturn inject(BrnCollapsibleConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import type { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, booleanAttribute, computed, input, model, signal } from '@angular/core';\nimport { provideBrnCollapsible } from './brn-collapsible-token';\n\nlet collapsibleContentIdSequence = 0;\n\nexport type BrnCollapsibleState = 'open' | 'closed';\n\n@Directive({\n\tselector: '[brnCollapsible],brn-collapsible',\n\tproviders: [provideBrnCollapsible(BrnCollapsible)],\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.disabled]': 'disabled() ? true : undefined',\n\t},\n})\nexport class BrnCollapsible {\n\tpublic readonly contentId = signal(`brn-collapsible-content-${++collapsibleContentIdSequence}`);\n\n\t/**\n\t * The expanded or collapsed state of the collapsible component.\n\t */\n\tpublic readonly expanded = model<boolean>(false);\n\n\t/**\n\t * The current state of the collapsible component as 'open' or 'closed'.\n\t */\n\tpublic readonly state = computed<BrnCollapsibleState>(() => (this.expanded() ? 'open' : 'closed'));\n\n\t/**\n\t * The disabled state of the collapsible component.\n\t */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/**\n\t * Toggles the expanded state of the collapsible component.\n\t */\n\tpublic toggle(): void {\n\t\tif (this.disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.expanded.update((expanded) => !expanded);\n\t}\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n\tDestroyRef,\n\tDirective,\n\tElementRef,\n\tNgZone,\n\tPLATFORM_ID,\n\tafterNextRender,\n\teffect,\n\tinject,\n\tinput,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { measureDimensions } from '@spartan-ng/brain/core';\nimport { injectBrnCollapsible, injectBrnCollapsibleConfig } from './brn-collapsible-token';\n\n@Directive({\n\tselector: '[brnCollapsibleContent],brn-collapsible-content',\n\thost: {\n\t\t'[attr.inert]': \"_collapsible?.state() === 'closed' ? true : undefined\",\n\t\t'[attr.data-state]': '_collapsible?.state()',\n\t\t'[id]': '_collapsible?.contentId()',\n\t\t'[style.--brn-collapsible-content-width.px]': '_width()',\n\t\t'[style.--brn-collapsible-content-height.px]': '_height()',\n\t},\n})\nexport class BrnCollapsibleContent {\n\tprivate readonly _config = injectBrnCollapsibleConfig();\n\tprivate readonly _elementRef = inject<ElementRef>(ElementRef);\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly _ngZone = inject(NgZone);\n\tprivate readonly _platformId = inject(PLATFORM_ID);\n\tprotected readonly _collapsible = injectBrnCollapsible();\n\n\tprotected readonly _width = signal<number | null>(null);\n\tprotected readonly _height = signal<number | null>(null);\n\n\t/**\n\t * The id of the collapsible content element.\n\t */\n\tpublic readonly id = input<string | null | undefined>();\n\n\tconstructor() {\n\t\tif (!this._collapsible) {\n\t\t\tthrow Error('Collapsible trigger directive can only be used inside a brn-collapsible element.');\n\t\t}\n\n\t\teffect(() => {\n\t\t\tconst id = this.id();\n\t\t\tconst collapsible = this._collapsible;\n\t\t\tif (!id || !collapsible) return;\n\t\t\tuntracked(() => collapsible.contentId.set(id));\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\tconst hasValidDimensions = this._measureAndSetDimensions();\n\t\t\tif (!hasValidDimensions) {\n\t\t\t\tthis._setupVisibilityObserver();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _measureAndSetDimensions(): boolean {\n\t\tconst { width, height } = measureDimensions(this._elementRef.nativeElement, this._config.measurementDisplay);\n\t\tthis._width.set(width);\n\t\tthis._height.set(height);\n\n\t\treturn width > 0 && height > 0;\n\t}\n\n\tprivate _setupVisibilityObserver(): void {\n\t\tif (!isPlatformBrowser(this._platformId)) return;\n\t\tif (typeof IntersectionObserver === 'undefined') return;\n\n\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\tconst observer = new IntersectionObserver(\n\t\t\t\t(entries) => {\n\t\t\t\t\tif (entries[0].isIntersecting) {\n\t\t\t\t\t\tthis._ngZone.run(() => {\n\t\t\t\t\t\t\tif (this._measureAndSetDimensions()) {\n\t\t\t\t\t\t\t\tobserver.disconnect();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ root: null, threshold: 0 },\n\t\t\t);\n\n\t\t\tobserver.observe(this._elementRef.nativeElement);\n\t\t\tthis._destroyRef.onDestroy(() => observer.disconnect());\n\t\t});\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { injectBrnCollapsible } from './brn-collapsible-token';\n\n@Directive({\n\tselector: 'button[brnCollapsibleTrigger]',\n\thost: {\n\t\t'[attr.data-state]': '_collapsible?.state()',\n\t\t'[attr.disabled]': '_collapsible?.disabled() ? true : undefined',\n\t\t'[attr.aria-expanded]': '_collapsible?.expanded()',\n\t\t'[attr.aria-controls]': '_collapsible?.contentId()',\n\t\t'[type]': 'type()',\n\t\t'(click)': 'toggle()',\n\t},\n})\nexport class BrnCollapsibleTrigger {\n\tprotected readonly _collapsible = injectBrnCollapsible();\n\n\tpublic readonly type = input<'button' | 'submit' | 'reset'>('button');\n\n\tconstructor() {\n\t\tif (!this._collapsible) {\n\t\t\tthrow Error('Collapsible trigger directive can only be used inside a brn-collapsible element.');\n\t\t}\n\t}\n\n\ttoggle(): void {\n\t\tthis._collapsible?.toggle();\n\t}\n}\n","import { BrnCollapsible } from './lib/brn-collapsible';\nimport { BrnCollapsibleContent } from './lib/brn-collapsible-content';\nimport { BrnCollapsibleTrigger } from './lib/brn-collapsible-trigger';\n\nexport * from './lib/brn-collapsible';\nexport * from './lib/brn-collapsible-content';\nexport * from './lib/brn-collapsible-token';\nexport * from './lib/brn-collapsible-trigger';\n\nexport const BrnCollapsibleImports = [BrnCollapsible, BrnCollapsibleTrigger, BrnCollapsibleContent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-collapsible.mjs","sources":["../../../../libs/brain/collapsible/src/lib/brn-collapsible-token.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible-content.ts","../../../../libs/brain/collapsible/src/lib/brn-collapsible-trigger.ts","../../../../libs/brain/collapsible/src/index.ts","../../../../libs/brain/collapsible/src/spartan-ng-brain-collapsible.ts"],"sourcesContent":["import type { ValueProvider } from '@angular/core';\nimport { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { MeasurementDisplay } from '@spartan-ng/brain/core';\nimport type { BrnCollapsible } from './brn-collapsible';\n\nexport const BrnCollapsibleToken = new InjectionToken<BrnCollapsible>('BrnCollapsibleToken');\n\nexport function injectBrnCollapsible() {\n\treturn inject(BrnCollapsibleToken, { optional: true });\n}\n\nexport function provideBrnCollapsible(collapsible: Type<BrnCollapsible>): ExistingProvider {\n\treturn { provide: BrnCollapsibleToken, useExisting: collapsible };\n}\n\nexport interface BrCollapsibleConfig {\n\t/**\n\t * The display style to use when measuring element dimensions.\n\t * @default 'block'\n\t */\n\tmeasurementDisplay: MeasurementDisplay;\n}\n\nconst defaultConfig: BrCollapsibleConfig = {\n\tmeasurementDisplay: 'block',\n};\n\nconst BrnCollapsibleConfigToken = new InjectionToken<BrCollapsibleConfig>('BrnCollapsibleConfig');\n\nexport function provideBrnCollapsibleConfig(config: Partial<BrCollapsibleConfig>): ValueProvider {\n\treturn { provide: BrnCollapsibleConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectBrnCollapsibleConfig(): BrCollapsibleConfig {\n\treturn inject(BrnCollapsibleConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import type { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, booleanAttribute, computed, input, model, signal } from '@angular/core';\nimport { provideBrnCollapsible } from './brn-collapsible-token';\n\nlet collapsibleContentIdSequence = 0;\n\nexport type BrnCollapsibleState = 'open' | 'closed';\n\n@Directive({\n\tselector: '[brnCollapsible],brn-collapsible',\n\texportAs: 'brnCollapsible',\n\tproviders: [provideBrnCollapsible(BrnCollapsible)],\n\thost: {\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.disabled]': 'disabled() ? true : undefined',\n\t},\n})\nexport class BrnCollapsible {\n\tpublic readonly contentId = signal(`brn-collapsible-content-${++collapsibleContentIdSequence}`);\n\n\t/**\n\t * The expanded or collapsed state of the collapsible component.\n\t */\n\tpublic readonly expanded = model<boolean>(false);\n\n\t/**\n\t * The current state of the collapsible component as 'open' or 'closed'.\n\t */\n\tpublic readonly state = computed<BrnCollapsibleState>(() => (this.expanded() ? 'open' : 'closed'));\n\n\t/**\n\t * The disabled state of the collapsible component.\n\t */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/**\n\t * Toggles the expanded state of the collapsible component.\n\t */\n\tpublic toggle(): void {\n\t\tif (this.disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.expanded.update((expanded) => !expanded);\n\t}\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n\tDestroyRef,\n\tDirective,\n\tElementRef,\n\tNgZone,\n\tPLATFORM_ID,\n\tafterNextRender,\n\teffect,\n\tinject,\n\tinput,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { measureDimensions } from '@spartan-ng/brain/core';\nimport { injectBrnCollapsible, injectBrnCollapsibleConfig } from './brn-collapsible-token';\n\n@Directive({\n\tselector: '[brnCollapsibleContent],brn-collapsible-content',\n\thost: {\n\t\t'[attr.inert]': \"_collapsible?.state() === 'closed' ? true : undefined\",\n\t\t'[attr.data-state]': '_collapsible?.state()',\n\t\t'[id]': '_collapsible?.contentId()',\n\t\t'[style.--brn-collapsible-content-width.px]': '_width()',\n\t\t'[style.--brn-collapsible-content-height.px]': '_height()',\n\t},\n})\nexport class BrnCollapsibleContent {\n\tprivate readonly _config = injectBrnCollapsibleConfig();\n\tprivate readonly _elementRef = inject<ElementRef>(ElementRef);\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly _ngZone = inject(NgZone);\n\tprivate readonly _platformId = inject(PLATFORM_ID);\n\tprotected readonly _collapsible = injectBrnCollapsible();\n\n\tprotected readonly _width = signal<number | null>(null);\n\tprotected readonly _height = signal<number | null>(null);\n\n\t/**\n\t * The id of the collapsible content element.\n\t */\n\tpublic readonly id = input<string | null | undefined>();\n\n\tconstructor() {\n\t\tif (!this._collapsible) {\n\t\t\tthrow Error('Collapsible trigger directive can only be used inside a brn-collapsible element.');\n\t\t}\n\n\t\teffect(() => {\n\t\t\tconst id = this.id();\n\t\t\tconst collapsible = this._collapsible;\n\t\t\tif (!id || !collapsible) return;\n\t\t\tuntracked(() => collapsible.contentId.set(id));\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\tconst hasValidDimensions = this._measureAndSetDimensions();\n\t\t\tif (!hasValidDimensions) {\n\t\t\t\tthis._setupVisibilityObserver();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _measureAndSetDimensions(): boolean {\n\t\tconst { width, height } = measureDimensions(this._elementRef.nativeElement, this._config.measurementDisplay);\n\t\tthis._width.set(width);\n\t\tthis._height.set(height);\n\n\t\treturn width > 0 && height > 0;\n\t}\n\n\tprivate _setupVisibilityObserver(): void {\n\t\tif (!isPlatformBrowser(this._platformId)) return;\n\t\tif (typeof IntersectionObserver === 'undefined') return;\n\n\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\tconst observer = new IntersectionObserver(\n\t\t\t\t(entries) => {\n\t\t\t\t\tif (entries[0].isIntersecting) {\n\t\t\t\t\t\tthis._ngZone.run(() => {\n\t\t\t\t\t\t\tif (this._measureAndSetDimensions()) {\n\t\t\t\t\t\t\t\tobserver.disconnect();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ root: null, threshold: 0 },\n\t\t\t);\n\n\t\t\tobserver.observe(this._elementRef.nativeElement);\n\t\t\tthis._destroyRef.onDestroy(() => observer.disconnect());\n\t\t});\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { injectBrnCollapsible } from './brn-collapsible-token';\n\n@Directive({\n\tselector: 'button[brnCollapsibleTrigger]',\n\thost: {\n\t\t'[attr.data-state]': '_collapsible?.state()',\n\t\t'[attr.disabled]': '_collapsible?.disabled() ? true : undefined',\n\t\t'[attr.aria-expanded]': '_collapsible?.expanded()',\n\t\t'[attr.aria-controls]': '_collapsible?.contentId()',\n\t\t'[type]': 'type()',\n\t\t'(click)': 'toggle()',\n\t},\n})\nexport class BrnCollapsibleTrigger {\n\tprotected readonly _collapsible = injectBrnCollapsible();\n\n\tpublic readonly type = input<'button' | 'submit' | 'reset'>('button');\n\n\tconstructor() {\n\t\tif (!this._collapsible) {\n\t\t\tthrow Error('Collapsible trigger directive can only be used inside a brn-collapsible element.');\n\t\t}\n\t}\n\n\ttoggle(): void {\n\t\tthis._collapsible?.toggle();\n\t}\n}\n","import { BrnCollapsible } from './lib/brn-collapsible';\nimport { BrnCollapsibleContent } from './lib/brn-collapsible-content';\nimport { BrnCollapsibleTrigger } from './lib/brn-collapsible-trigger';\n\nexport * from './lib/brn-collapsible';\nexport * from './lib/brn-collapsible-content';\nexport * from './lib/brn-collapsible-token';\nexport * from './lib/brn-collapsible-trigger';\n\nexport const BrnCollapsibleImports = [BrnCollapsible, BrnCollapsibleTrigger, BrnCollapsibleContent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { Directionality } from '@angular/cdk/bidi';
1
2
  import { OverlayOutsideClickDispatcher, OverlayPositionBuilder, ScrollStrategyOptions } from '@angular/cdk/overlay';
2
3
  import * as i0 from '@angular/core';
3
4
  import { InjectionToken, inject, signal, RendererFactory2, Injector, computed, runInInjectionContext, effect, Injectable, DestroyRef, ViewContainerRef, output, input, booleanAttribute, linkedSignal, afterNextRender, untracked, numberAttribute, Directive, TemplateRef } from '@angular/core';
@@ -160,6 +161,7 @@ class BrnDialogService {
160
161
  $implicit: contextOrData,
161
162
  }),
162
163
  data: contextOrData,
164
+ direction: options?.direction,
163
165
  hasBackdrop: options?.hasBackdrop ?? this._defaultOptions.hasBackdrop,
164
166
  panelClass: options?.panelClass,
165
167
  backdropClass: options?.backdropClass,
@@ -284,6 +286,7 @@ class BrnDialog {
284
286
  positionBuilder = inject(OverlayPositionBuilder);
285
287
  ssos = inject(ScrollStrategyOptions);
286
288
  _injector = inject(Injector);
289
+ _directionality = inject(Directionality);
287
290
  _defaultOptions = injectBrnDialogDefaultOptions();
288
291
  _context = {};
289
292
  stateComputed = computed(() => this._dialogRef()?.state() ?? 'closed', ...(ngDevMode ? [{ debugName: "stateComputed" }] : /* istanbul ignore next */ []));
@@ -314,6 +317,7 @@ class BrnDialog {
314
317
  }
315
318
  return {
316
319
  role: this.role(),
320
+ direction: this._directionality.valueSignal(),
317
321
  hasBackdrop: this.hasBackdrop(),
318
322
  positionStrategy: this.mutablePositionStrategy(),
319
323
  scrollStrategy,
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-dialog.mjs","sources":["../../../../libs/brain/dialog/src/lib/brn-dialog-token.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-utils.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-ref.ts","../../../../libs/brain/dialog/src/lib/brn-dialog.service.ts","../../../../libs/brain/dialog/src/lib/brn-dialog.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-close.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-content.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-description.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-overlay.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-title.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-trigger.ts","../../../../libs/brain/dialog/src/index.ts","../../../../libs/brain/dialog/src/spartan-ng-brain-dialog.ts"],"sourcesContent":["import { inject, InjectionToken, type ValueProvider } from '@angular/core';\nimport type { BrnDialogOptions } from './brn-dialog-options';\n\nexport interface BrnDialogDefaultOptions {\n\t/** Aria label to assign to the dialog element. */\n\tariaLabel: BrnDialogOptions['ariaLabel'];\n\n\t/** Whether the dialog should be considered a modal dialog. */\n\tariaModal: BrnDialogOptions['ariaModal'];\n\n\t/** A connected position as specified by the user. */\n\tattachPositions: BrnDialogOptions['attachPositions'];\n\n\t/** Element to which the dialog should be attached. */\n\tattachTo: BrnDialogOptions['attachTo'];\n\n\t/** Options for where to set focus to automatically on dialog open */\n\tautoFocus: BrnDialogOptions['autoFocus'];\n\n\t/** CSS class to be applied to the backdrop. */\n\tbackdropClass: BrnDialogOptions['backdropClass'];\n\n\t/** The delay in milliseconds before the dialog closes. */\n\tcloseDelay: BrnDialogOptions['closeDelay'];\n\n\t/** Close dialog on backdrop click */\n\tcloseOnBackdropClick: BrnDialogOptions['closeOnBackdropClick'];\n\n\t/** Close dialog on outside pointer event */\n\tcloseOnOutsidePointerEvents: BrnDialogOptions['closeOnOutsidePointerEvents'];\n\n\t/** Whether the dialog closes with the escape key or pointer events outside the panel element. */\n\tdisableClose: BrnDialogOptions['disableClose'];\n\n\t/** Whether the dialog has a backdrop. */\n\thasBackdrop: BrnDialogOptions['hasBackdrop'];\n\n\t/** CSS class applied to the panel. */\n\tpanelClass: BrnDialogOptions['panelClass'];\n\n\t/** Strategy to use when positioning the dialog */\n\tpositionStrategy: BrnDialogOptions['positionStrategy'];\n\n\t/** Whether the dialog should restore focus to the previously-focused element upon closing. */\n\trestoreFocus: BrnDialogOptions['restoreFocus'];\n\n\t/** The role of the dialog */\n\trole: BrnDialogOptions['role'];\n\n\t/** Scroll strategy to be used for the dialog. */\n\tscrollStrategy: BrnDialogOptions['scrollStrategy'] | 'close' | 'reposition';\n}\n\nexport const defaultOptions: BrnDialogDefaultOptions = {\n\tariaLabel: undefined,\n\tariaModal: true,\n\tattachPositions: [],\n\tattachTo: null,\n\tautoFocus: 'first-tabbable',\n\tbackdropClass: '',\n\tcloseDelay: 100,\n\tcloseOnBackdropClick: true,\n\tcloseOnOutsidePointerEvents: false,\n\tdisableClose: false,\n\thasBackdrop: true,\n\tpanelClass: '',\n\tpositionStrategy: null,\n\trestoreFocus: true,\n\trole: 'dialog',\n\tscrollStrategy: null,\n};\n\nconst BRN_DIALOG_DEFAULT_OPTIONS = new InjectionToken<BrnDialogDefaultOptions>('brn-dialog-default-options', {\n\tprovidedIn: 'root',\n\tfactory: () => defaultOptions,\n});\n\nexport function provideBrnDialogDefaultOptions(options: Partial<BrnDialogDefaultOptions>): ValueProvider {\n\treturn { provide: BRN_DIALOG_DEFAULT_OPTIONS, useValue: { ...defaultOptions, ...options } };\n}\n\nexport function injectBrnDialogDefaultOptions(): BrnDialogDefaultOptions {\n\treturn inject(BRN_DIALOG_DEFAULT_OPTIONS, { optional: true }) ?? defaultOptions;\n}\n","// brn-dialog-utils.ts\n\nexport const cssClassesToArray = (classes: string | string[] | undefined | null, defaultClass = ''): string[] => {\n\tif (typeof classes === 'string') {\n\t\tconst splitClasses = classes.trim().split(' ');\n\t\tif (splitClasses.length === 0) {\n\t\t\treturn [defaultClass];\n\t\t}\n\t\treturn splitClasses;\n\t}\n\treturn classes ?? [];\n};\n","import type { DialogRef } from '@angular/cdk/dialog';\nimport type { Signal, WritableSignal } from '@angular/core';\nimport { signal } from '@angular/core';\nimport { type Observable, Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport type { BrnDialogOptions } from './brn-dialog-options';\nimport type { BrnDialogState } from './brn-dialog-state';\nimport { cssClassesToArray } from './brn-dialog-utils';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class BrnDialogRef<DialogResult = any> {\n\tprivate readonly _closing$ = new Subject<void>();\n\tpublic readonly closing$ = this._closing$.asObservable();\n\n\tpublic readonly closed$: Observable<DialogResult | undefined>;\n\n\tprivate _previousTimeout: ReturnType<typeof setTimeout> | undefined;\n\n\tpublic get open() {\n\t\treturn this.state() === 'open';\n\t}\n\n\tprivate readonly _options = signal<undefined | BrnDialogOptions>(undefined);\n\tpublic readonly options = this._options.asReadonly();\n\n\tconstructor(\n\t\tprivate readonly _cdkDialogRef: DialogRef<DialogResult>,\n\t\tprivate readonly _open: WritableSignal<boolean>,\n\t\tpublic readonly state: Signal<BrnDialogState>,\n\t\tpublic readonly dialogId: number,\n\t\t_options?: BrnDialogOptions,\n\t) {\n\t\tif (_options) {\n\t\t\tthis._options.set(_options);\n\t\t}\n\t\tthis.closed$ = this._cdkDialogRef.closed.pipe(take(1));\n\t}\n\n\tpublic updateOptions(options: Partial<BrnDialogOptions>): void {\n\t\tthis._options.update((prev) => ({ ...(prev ?? {}), ...options }) as BrnDialogOptions);\n\t}\n\n\tpublic close(result?: DialogResult, delay: number = this._options()?.closeDelay ?? 0): void {\n\t\tif (!this.open || this._options()?.disableClose) return;\n\n\t\tthis._closing$.next();\n\t\tthis._open.set(false);\n\n\t\tif (this._previousTimeout) {\n\t\t\tclearTimeout(this._previousTimeout);\n\t\t}\n\n\t\tthis._previousTimeout = setTimeout(() => {\n\t\t\tthis._cdkDialogRef.close(result);\n\t\t}, delay);\n\t}\n\n\tpublic setPanelClass(paneClass: string | null | undefined): void {\n\t\tthis._cdkDialogRef.config.panelClass = cssClassesToArray(paneClass);\n\t}\n\n\tpublic setOverlayClass(overlayClass: string | null | undefined): void {\n\t\tthis._cdkDialogRef.config.backdropClass = cssClassesToArray(overlayClass);\n\t}\n\n\tpublic setAriaDescribedBy(ariaDescribedBy: string | null | undefined): void {\n\t\tthis._cdkDialogRef.config.ariaDescribedBy = ariaDescribedBy;\n\t}\n\n\tpublic setAriaLabelledBy(ariaLabelledBy: string | null | undefined): void {\n\t\tthis._cdkDialogRef.config.ariaLabelledBy = ariaLabelledBy;\n\t}\n\n\tpublic setAriaLabel(ariaLabel: string | null | undefined): void {\n\t\tthis._cdkDialogRef.config.ariaLabel = ariaLabel;\n\t}\n\n\tpublic updatePosition(): void {\n\t\tthis._cdkDialogRef.overlayRef?.updatePosition();\n\t}\n}\n","import { Dialog, DIALOG_DATA } from '@angular/cdk/dialog';\nimport {\n\ttype ComponentType,\n\tFlexibleConnectedPositionStrategy,\n\tOverlayOutsideClickDispatcher,\n\tOverlayPositionBuilder,\n\tOverlayRef,\n\tScrollStrategyOptions,\n} from '@angular/cdk/overlay';\nimport { BasePortalOutlet } from '@angular/cdk/portal';\nimport {\n\tChangeDetectorRef,\n\tcomputed,\n\teffect,\n\ttype EffectRef,\n\tElementRef,\n\tinject,\n\tInjectable,\n\ttype InjectOptions,\n\tInjector,\n\tRendererFactory2,\n\trunInInjectionContext,\n\tsignal,\n\ttype StaticProvider,\n\ttype TemplateRef,\n\ttype ViewContainerRef,\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport type { BrnDialogOptions } from './brn-dialog-options';\nimport { BrnDialogRef } from './brn-dialog-ref';\nimport type { BrnDialogState } from './brn-dialog-state';\nimport { injectBrnDialogDefaultOptions } from './brn-dialog-token';\n\nlet dialogSequence = 0;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type BrnDialogContext<T> = T & { close: (result?: any) => void };\n\n/** @deprecated `injectBrnDialogCtx` will no longer be supported once components are stable. Use `injectBrnDialogContext` instead. */\nexport const injectBrnDialogCtx = <T>(): BrnDialogContext<T> => {\n\treturn inject(DIALOG_DATA);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const injectBrnDialogContext = <DialogContext = any>(options: InjectOptions = {}) => {\n\treturn inject(DIALOG_DATA, options) as DialogContext;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class BrnDialogService {\n\tprivate readonly _overlayCloseDispatcher = inject(OverlayOutsideClickDispatcher);\n\tprivate readonly _cdkDialog = inject(Dialog);\n\tprivate readonly _rendererFactory = inject(RendererFactory2);\n\tprivate readonly _renderer = this._rendererFactory.createRenderer(null, null);\n\tprivate readonly _positionBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _sso = inject(ScrollStrategyOptions);\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _defaultOptions = injectBrnDialogDefaultOptions();\n\n\tpublic open<DialogContext>(\n\t\tcontent: ComponentType<unknown> | TemplateRef<unknown>,\n\t\tvcr?: ViewContainerRef,\n\t\tcontext?: DialogContext,\n\t\toptions?: Partial<BrnDialogOptions>,\n\t) {\n\t\tif (options?.id && this._cdkDialog.getDialogById(options.id)) {\n\t\t\tthrow new Error(`Dialog with ID: ${options.id} already exists`);\n\t\t}\n\n\t\tconst attachTo = options?.attachTo ?? this._defaultOptions.attachTo;\n\n\t\tconst positionStrategy =\n\t\t\toptions?.positionStrategy ??\n\t\t\tthis._defaultOptions.positionStrategy ??\n\t\t\t(attachTo && options?.attachPositions && options?.attachPositions?.length > 0\n\t\t\t\t? this._positionBuilder?.flexibleConnectedTo(attachTo).withPositions(options.attachPositions ?? [])\n\t\t\t\t: this._positionBuilder.global().centerHorizontally().centerVertically());\n\n\t\tlet brnDialogRef!: BrnDialogRef;\n\t\tconst effectRefs: EffectRef[] = [];\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst contextOrData: BrnDialogContext<any> = {\n\t\t\t...context,\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tclose: (result: any = undefined) => brnDialogRef.close(result, options?.closeDelay),\n\t\t};\n\n\t\tconst destroyed$ = new Subject<void>();\n\t\tconst optionsChanged$ = new Subject<void>();\n\t\tconst open = signal<boolean>(true);\n\t\tconst state = computed<BrnDialogState>(() => (open() ? 'open' : 'closed'));\n\t\tconst dialogId = ++dialogSequence;\n\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t// @ts-ignore\n\t\tconst cdkDialogRef = this._cdkDialog.open(content, {\n\t\t\tid: options?.id ?? `brn-dialog-${dialogId}`,\n\t\t\trole: options?.role ?? this._defaultOptions.role,\n\t\t\tviewContainerRef: vcr,\n\t\t\ttemplateContext: () => ({\n\t\t\t\t$implicit: contextOrData,\n\t\t\t}),\n\t\t\tdata: contextOrData,\n\t\t\thasBackdrop: options?.hasBackdrop ?? this._defaultOptions.hasBackdrop,\n\t\t\tpanelClass: options?.panelClass,\n\t\t\tbackdropClass: options?.backdropClass,\n\t\t\tpositionStrategy,\n\t\t\tscrollStrategy: options?.scrollStrategy ?? this._defaultOptions.scrollStrategy ?? this._sso?.block(),\n\t\t\trestoreFocus: options?.restoreFocus ?? this._defaultOptions.restoreFocus,\n\t\t\tdisableClose: true,\n\t\t\tautoFocus: options?.autoFocus ?? this._defaultOptions.autoFocus,\n\t\t\tariaDescribedBy: options?.ariaDescribedBy ?? `brn-dialog-description-${dialogId}`,\n\t\t\tariaLabelledBy: options?.ariaLabelledBy ?? `brn-dialog-title-${dialogId}`,\n\t\t\tariaLabel: options?.ariaLabel ?? this._defaultOptions.ariaLabel,\n\t\t\tariaModal: options?.ariaModal ?? this._defaultOptions.ariaModal,\n\t\t\tproviders: (cdkDialogRef) => {\n\t\t\t\tbrnDialogRef = new BrnDialogRef(cdkDialogRef, open, state, dialogId, options as BrnDialogOptions);\n\n\t\t\t\trunInInjectionContext(this._injector, () => {\n\t\t\t\t\tconst ref = effect(() => {\n\t\t\t\t\t\tif (overlay) {\n\t\t\t\t\t\t\tthis._renderer.setAttribute(overlay, 'data-state', state());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (backdrop) {\n\t\t\t\t\t\t\tthis._renderer.setAttribute(backdrop, 'data-state', state());\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\teffectRefs.push(ref);\n\t\t\t\t});\n\n\t\t\t\tconst providers: StaticProvider[] = [\n\t\t\t\t\t{\n\t\t\t\t\t\tprovide: BrnDialogRef,\n\t\t\t\t\t\tuseValue: brnDialogRef,\n\t\t\t\t\t},\n\t\t\t\t];\n\n\t\t\t\tif (options?.providers) {\n\t\t\t\t\tif (typeof options.providers === 'function') {\n\t\t\t\t\t\tproviders.push(...options.providers());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Array.isArray(options.providers)) {\n\t\t\t\t\t\tproviders.push(...options.providers);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn providers;\n\t\t\t},\n\t\t});\n\n\t\tconst overlay = cdkDialogRef.overlayRef.overlayElement;\n\t\tconst backdrop = cdkDialogRef.overlayRef.backdropElement;\n\n\t\trunInInjectionContext(this._injector, () => {\n\t\t\tconst optionChangeEffect = effect(() => {\n\t\t\t\tconst options = brnDialogRef.options();\n\t\t\t\toptionsChanged$.next();\n\t\t\t\tconst closeOnOutsidePointerEvents =\n\t\t\t\t\toptions?.closeOnOutsidePointerEvents ?? this._defaultOptions.closeOnOutsidePointerEvents;\n\t\t\t\tif (closeOnOutsidePointerEvents) {\n\t\t\t\t\tcdkDialogRef.outsidePointerEvents.pipe(takeUntil(merge(destroyed$, optionsChanged$))).subscribe(() => {\n\t\t\t\t\t\tconst overlays = this._overlayCloseDispatcher._attachedOverlays;\n\t\t\t\t\t\tconst index = overlays.indexOf(cdkDialogRef.overlayRef);\n\t\t\t\t\t\t// close if this is the topmost overlay\n\t\t\t\t\t\t// but prevent closing if this overlay contains the top overlay (which will be closed)\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tindex === overlays.length - 1 ||\n\t\t\t\t\t\t\t(overlays.length > 1 && !this.isNested(cdkDialogRef.overlayRef, overlays.at(-1)!))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tbrnDialogRef.close(undefined, options?.closeDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst closeOnBackdropClick = options?.closeOnBackdropClick ?? this._defaultOptions.closeOnBackdropClick;\n\t\t\t\tif (closeOnBackdropClick) {\n\t\t\t\t\tcdkDialogRef.backdropClick.pipe(takeUntil(merge(destroyed$, optionsChanged$))).subscribe(() => {\n\t\t\t\t\t\tbrnDialogRef.close(undefined, options?.closeDelay);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst disableClose = options?.disableClose ?? this._defaultOptions.disableClose;\n\t\t\t\tif (!disableClose) {\n\t\t\t\t\tcdkDialogRef.keydownEvents\n\t\t\t\t\t\t.pipe(\n\t\t\t\t\t\t\tfilter((e) => e.key === 'Escape'),\n\t\t\t\t\t\t\ttakeUntil(merge(destroyed$, optionsChanged$)),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\t\tbrnDialogRef.close(undefined, options?.closeDelay);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\teffectRefs.push(optionChangeEffect);\n\t\t});\n\t\tcdkDialogRef.closed.pipe(takeUntil(destroyed$)).subscribe(() => {\n\t\t\teffectRefs.forEach((a) => a.destroy());\n\t\t\tdestroyed$.next();\n\t\t\toptionsChanged$.next();\n\t\t});\n\n\t\t// this is not ideal, but we need to force change detection to run in the dialog,\n\t\t// otherwise in some conditions (like menu launching a dialog) the dialog content\n\t\t// does not render.\n\t\tif ('_changeDetectorRef' in cdkDialogRef.containerInstance) {\n\t\t\tconst containerInstance = cdkDialogRef.containerInstance as BasePortalOutlet & {\n\t\t\t\t_changeDetectorRef: ChangeDetectorRef;\n\t\t\t};\n\t\t\tcontainerInstance._changeDetectorRef.detectChanges();\n\t\t}\n\n\t\treturn brnDialogRef;\n\t}\n\n\tprivate isNested(parent: OverlayRef, child: OverlayRef): boolean {\n\t\tconst childOrigin = (child.getConfig().positionStrategy as FlexibleConnectedPositionStrategy)._origin;\n\t\tif (!childOrigin) {\n\t\t\treturn false;\n\t\t} else if ('width' in childOrigin && 'height' in childOrigin) {\n\t\t\tconst rect = parent.hostElement.getBoundingClientRect();\n\t\t\treturn (\n\t\t\t\tchildOrigin.x >= rect.left &&\n\t\t\t\tchildOrigin.x <= rect.right &&\n\t\t\t\tchildOrigin.y >= rect.top &&\n\t\t\t\tchildOrigin.y <= rect.bottom\n\t\t\t);\n\t\t} else {\n\t\t\tconst element: Element = (childOrigin as ElementRef).nativeElement || childOrigin;\n\t\t\treturn parent.hostElement.contains(element);\n\t\t}\n\t}\n}\n","import { type BooleanInput, type NumberInput } from '@angular/cdk/coercion';\nimport { OverlayPositionBuilder, type ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\ttype EffectRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tnumberAttribute,\n\toutput,\n\trunInInjectionContext,\n\tsignal,\n\ttype TemplateRef,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { take } from 'rxjs/operators';\nimport type { BrnDialogOptions } from './brn-dialog-options';\nimport type { BrnDialogRef } from './brn-dialog-ref';\nimport type { BrnDialogState } from './brn-dialog-state';\nimport { injectBrnDialogDefaultOptions } from './brn-dialog-token';\nimport { cssClassesToArray } from './brn-dialog-utils';\nimport { BrnDialogService } from './brn-dialog.service';\n\n@Directive({\n\tselector: '[brnDialog],brn-dialog',\n\texportAs: 'brnDialog',\n})\nexport class BrnDialog<TResult = unknown, TContext extends Record<string, unknown> = Record<string, unknown>> {\n\tprivate readonly _dialogService = inject(BrnDialogService);\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tpublic readonly positionBuilder = inject(OverlayPositionBuilder);\n\tpublic readonly ssos = inject(ScrollStrategyOptions);\n\tprivate readonly _injector = inject(Injector);\n\n\tprotected readonly _defaultOptions = injectBrnDialogDefaultOptions();\n\n\tprivate _context: TContext = {} as TContext;\n\tpublic readonly stateComputed = computed(() => this._dialogRef()?.state() ?? 'closed');\n\n\tprivate _contentTemplate: TemplateRef<unknown> | undefined;\n\tprivate readonly _dialogRef = signal<BrnDialogRef | undefined>(undefined);\n\tprivate readonly _dialogStateEffectRefs: EffectRef[] = [];\n\tprivate readonly _backdropClass = signal<string | null | undefined>(null);\n\tprivate readonly _panelClass = signal<string | null | undefined>(null);\n\n\tpublic readonly closed = output<TResult>();\n\n\tpublic readonly stateChanged = output<BrnDialogState>();\n\n\tpublic readonly state = input<BrnDialogState | null>(null);\n\n\tpublic readonly role = input<BrnDialogOptions['role']>(this._defaultOptions.role);\n\n\tpublic readonly hasBackdrop = input<boolean, BooleanInput>(this._defaultOptions.hasBackdrop, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tpublic readonly positionStrategy = input<BrnDialogOptions['positionStrategy']>(this._defaultOptions.positionStrategy);\n\tpublic readonly mutablePositionStrategy = linkedSignal(() => this.positionStrategy());\n\n\tpublic readonly scrollStrategy = input<BrnDialogOptions['scrollStrategy'] | 'close' | 'reposition' | null>(\n\t\tthis._defaultOptions.scrollStrategy,\n\t);\n\n\tprotected readonly _options = computed<Partial<BrnDialogOptions>>(() => {\n\t\tconst scrollStrategyInput = this.scrollStrategy();\n\t\tlet scrollStrategy: ScrollStrategy | null | undefined;\n\n\t\tif (scrollStrategyInput === 'close') {\n\t\t\tscrollStrategy = this.ssos.close();\n\t\t} else if (scrollStrategyInput === 'reposition') {\n\t\t\tscrollStrategy = this.ssos.reposition();\n\t\t} else {\n\t\t\tscrollStrategy = scrollStrategyInput;\n\t\t}\n\n\t\treturn {\n\t\t\trole: this.role(),\n\t\t\thasBackdrop: this.hasBackdrop(),\n\t\t\tpositionStrategy: this.mutablePositionStrategy(),\n\t\t\tscrollStrategy,\n\t\t\trestoreFocus: this.restoreFocus(),\n\t\t\tcloseOnOutsidePointerEvents: this.mutableCloseOnOutsidePointerEvents(),\n\t\t\tcloseOnBackdropClick: this.closeOnBackdropClick(),\n\t\t\tattachTo: this.mutableAttachTo(),\n\t\t\tattachPositions: this.mutableAttachPositions(),\n\t\t\tautoFocus: this.autoFocus(),\n\t\t\tcloseDelay: this.closeDelay(),\n\t\t\tdisableClose: this.disableClose(),\n\t\t\tbackdropClass: cssClassesToArray(this._backdropClass() ?? this._defaultOptions.backdropClass),\n\t\t\tpanelClass: cssClassesToArray(this._panelClass() ?? this._defaultOptions.panelClass),\n\t\t\tariaDescribedBy: this._mutableAriaDescribedBy(),\n\t\t\tariaLabelledBy: this._mutableAriaLabelledBy(),\n\t\t\tariaLabel: this._mutableAriaLabel(),\n\t\t\tariaModal: this._mutableAriaModal(),\n\t\t};\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tconst state = this.state();\n\t\t\t\t\tif (state === 'open') {\n\t\t\t\t\t\tuntracked(() => this.open());\n\t\t\t\t\t}\n\t\t\t\t\tif (state === 'closed') {\n\t\t\t\t\t\tuntracked(() => this.close());\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tinjector: this._injector,\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic readonly restoreFocus = input<BrnDialogOptions['restoreFocus']>(this._defaultOptions.restoreFocus);\n\n\tpublic readonly closeOnOutsidePointerEvents = input<boolean, BooleanInput>(\n\t\tthis._defaultOptions.closeOnOutsidePointerEvents,\n\t\t{\n\t\t\ttransform: booleanAttribute,\n\t\t},\n\t);\n\tpublic readonly mutableCloseOnOutsidePointerEvents = linkedSignal(() => this.closeOnOutsidePointerEvents());\n\n\tpublic readonly closeOnBackdropClick = input<boolean, BooleanInput>(this._defaultOptions.closeOnBackdropClick, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tpublic readonly attachTo = input<BrnDialogOptions['attachTo']>(null);\n\tpublic readonly mutableAttachTo = linkedSignal(() => this.attachTo());\n\n\tpublic readonly attachPositions = input<BrnDialogOptions['attachPositions']>(this._defaultOptions.attachPositions);\n\tpublic readonly mutableAttachPositions = linkedSignal(() => this.attachPositions());\n\n\tpublic readonly autoFocus = input<BrnDialogOptions['autoFocus']>(this._defaultOptions.autoFocus);\n\n\tpublic readonly closeDelay = input<number, NumberInput>(this._defaultOptions.closeDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\n\tpublic readonly disableClose = input<boolean, BooleanInput>(this._defaultOptions.disableClose, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tpublic readonly ariaDescribedBy = input<BrnDialogOptions['ariaDescribedBy']>(null, {\n\t\talias: 'aria-describedby',\n\t});\n\tprivate readonly _mutableAriaDescribedBy = linkedSignal(() => this.ariaDescribedBy());\n\n\tpublic readonly ariaLabelledBy = input<BrnDialogOptions['ariaLabelledBy']>(null, { alias: 'aria-labelledby' });\n\tprivate readonly _mutableAriaLabelledBy = linkedSignal(() => this.ariaLabelledBy());\n\n\tpublic readonly ariaLabel = input<BrnDialogOptions['ariaLabel']>(null, { alias: 'aria-label' });\n\tprivate readonly _mutableAriaLabel = linkedSignal(() => this.ariaLabel());\n\n\tpublic readonly ariaModal = input<boolean, BooleanInput>(true, { alias: 'aria-modal', transform: booleanAttribute });\n\tprivate readonly _mutableAriaModal = linkedSignal(() => this.ariaModal());\n\n\tpublic open(): void {\n\t\tif (!this._contentTemplate || this._dialogRef()) return;\n\n\t\tthis._dialogStateEffectRefs.forEach((ref) => ref.destroy());\n\n\t\tconst dialogRef = this._dialogService.open<TContext>(\n\t\t\tthis._contentTemplate,\n\t\t\tthis._vcr,\n\t\t\tthis._context,\n\t\t\tthis._options(),\n\t\t);\n\n\t\tthis._dialogRef.set(dialogRef);\n\n\t\trunInInjectionContext(this._injector, () => {\n\t\t\tthis._dialogStateEffectRefs.push(\n\t\t\t\teffect(() => {\n\t\t\t\t\tconst state = dialogRef.state();\n\t\t\t\t\tuntracked(() => this.stateChanged.emit(state));\n\t\t\t\t}),\n\t\t\t\teffect(() => dialogRef.updateOptions(this._options())),\n\t\t\t);\n\t\t});\n\n\t\tdialogRef.closed$.pipe(take(1), takeUntilDestroyed(this._destroyRef)).subscribe((result) => {\n\t\t\tthis._dialogRef.set(undefined);\n\t\t\tthis.closed.emit(result);\n\t\t});\n\t}\n\n\tpublic close(result?: TResult, delay?: number): void {\n\t\tthis._dialogRef()?.close(result, delay ?? this._options().closeDelay);\n\t}\n\n\tpublic registerTemplate(template: TemplateRef<unknown>): void {\n\t\tthis._contentTemplate = template;\n\t}\n\n\tpublic setOverlayClass(overlayClass: string | null | undefined): void {\n\t\tthis._backdropClass.set(overlayClass);\n\t\tthis._dialogRef()?.setOverlayClass(overlayClass);\n\t}\n\n\tpublic setPanelClass(panelClass: string | null | undefined): void {\n\t\tthis._panelClass.set(panelClass ?? '');\n\t\tthis._dialogRef()?.setPanelClass(panelClass);\n\t}\n\n\tpublic setContext(context: TContext): void {\n\t\tthis._context = { ...this._context, ...context };\n\t}\n\n\tpublic setAriaDescribedBy(ariaDescribedBy: string | null | undefined): void {\n\t\tthis._mutableAriaDescribedBy.set(ariaDescribedBy);\n\t\tthis._dialogRef()?.setAriaDescribedBy(ariaDescribedBy);\n\t}\n\n\tpublic setAriaLabelledBy(ariaLabelledBy: string | null | undefined): void {\n\t\tthis._mutableAriaLabelledBy.set(ariaLabelledBy);\n\t\tthis._dialogRef()?.setAriaLabelledBy(ariaLabelledBy);\n\t}\n\n\tpublic setAriaLabel(ariaLabel: string | null | undefined): void {\n\t\tthis._mutableAriaLabel.set(ariaLabel);\n\t\tthis._dialogRef()?.setAriaLabel(ariaLabel);\n\t}\n\n\tpublic setAriaModal(ariaModal: boolean): void {\n\t\tthis._mutableAriaModal.set(ariaModal);\n\t}\n\n\tpublic updatePosition(): void {\n\t\tthis._dialogRef()?.updatePosition();\n\t}\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Directive, inject, input } from '@angular/core';\nimport { BrnDialogRef } from './brn-dialog-ref';\n\n@Directive({\n\tselector: 'button[brnDialogClose]',\n\thost: {\n\t\t'(click)': 'close()',\n\t},\n})\nexport class BrnDialogClose {\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef);\n\n\tpublic readonly delay = input<number | undefined, number>(undefined, { transform: coerceNumberProperty });\n\n\tpublic close() {\n\t\tthis._brnDialogRef.close(undefined, this.delay());\n\t}\n}\n","import { computed, Directive, effect, inject, input, TemplateRef, untracked } from '@angular/core';\nimport { provideExposesStateProviderExisting } from '@spartan-ng/brain/core';\nimport { BrnDialog } from './brn-dialog';\nimport { BrnDialogRef } from './brn-dialog-ref';\n\n@Directive({\n\tselector: '[brnDialogContent]',\n\tproviders: [provideExposesStateProviderExisting(() => BrnDialogContent)],\n})\nexport class BrnDialogContent<T> {\n\tprivate readonly _brnDialog = inject(BrnDialog, { optional: true });\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef, { optional: true });\n\tprivate readonly _template = inject(TemplateRef);\n\tpublic readonly state = computed(() => this._brnDialog?.stateComputed() ?? this._brnDialogRef?.state() ?? 'closed');\n\n\tpublic readonly className = input<string | null | undefined>(undefined, { alias: 'class' });\n\n\tpublic readonly context = input<T | undefined>(undefined);\n\n\tconstructor() {\n\t\tif (!this._brnDialog) return;\n\t\tthis._brnDialog.registerTemplate(this._template);\n\t\teffect(() => {\n\t\t\tconst context = this.context();\n\t\t\tif (!this._brnDialog || !context) return;\n\t\t\tuntracked(() => this._brnDialog?.setContext(context));\n\t\t});\n\t\teffect(() => {\n\t\t\tif (!this._brnDialog) return;\n\t\t\tconst newClass = this.className();\n\t\t\tuntracked(() => this._brnDialog?.setPanelClass(newClass));\n\t\t});\n\t}\n}\n","import { Directive, effect, inject, signal } from '@angular/core';\nimport { BrnDialogRef } from './brn-dialog-ref';\n\n@Directive({\n\tselector: '[brnDialogDescription]',\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnDialogDescription {\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef);\n\n\tprotected readonly _id = signal(`brn-dialog-description-${this._brnDialogRef?.dialogId}`);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._brnDialogRef.setAriaDescribedBy(this._id());\n\t\t});\n\t}\n}\n","import { Directive, effect, inject, input, untracked } from '@angular/core';\nimport { provideCustomClassSettableExisting } from '@spartan-ng/brain/core';\nimport { BrnDialog } from './brn-dialog';\n\n@Directive({\n\tselector: '[brnDialogOverlay],brn-dialog-overlay',\n\tproviders: [provideCustomClassSettableExisting(() => BrnDialogOverlay)],\n})\nexport class BrnDialogOverlay {\n\tprivate readonly _brnDialog = inject(BrnDialog);\n\n\tpublic readonly className = input<string | null | undefined>(undefined, { alias: 'class' });\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tif (!this._brnDialog) return;\n\t\t\tconst newClass = this.className();\n\t\t\tuntracked(() => this._brnDialog.setOverlayClass(newClass));\n\t\t});\n\t}\n\n\tsetClassToCustomElement(newClass: string) {\n\t\tthis._brnDialog.setOverlayClass(newClass);\n\t}\n}\n","import { Directive, effect, inject, signal } from '@angular/core';\nimport { BrnDialogRef } from './brn-dialog-ref';\n\n@Directive({\n\tselector: '[brnDialogTitle]',\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnDialogTitle {\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef);\n\n\tprotected readonly _id = signal(`brn-dialog-title-${this._brnDialogRef?.dialogId}`);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._brnDialogRef.setAriaLabelledBy(this._id());\n\t\t});\n\t}\n}\n","import { computed, Directive, effect, inject, input, signal } from '@angular/core';\nimport { BrnDialog } from './brn-dialog';\nimport { BrnDialogRef } from './brn-dialog-ref';\nimport type { BrnDialogState } from './brn-dialog-state';\n\nlet idSequence = 0;\n\n@Directive({\n\tselector: 'button[brnDialogTrigger],button[brnDialogTriggerFor]',\n\texportAs: 'brnDialogTrigger',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'(click)': 'open()',\n\t\t'aria-haspopup': 'dialog',\n\t\t'[attr.aria-expanded]': \"state() === 'open' ? 'true': 'false'\",\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-controls]': 'dialogId',\n\t\t'[type]': 'type()',\n\t},\n})\nexport class BrnDialogTrigger {\n\tprotected _brnDialog = inject(BrnDialog, { optional: true });\n\tprotected readonly _brnDialogRef = inject(BrnDialogRef, { optional: true });\n\n\tpublic readonly id = input<string>(`brn-dialog-trigger-${++idSequence}`);\n\tpublic readonly type = input<'button' | 'submit' | 'reset'>('button');\n\n\tpublic readonly state = computed<BrnDialogState>(() => {\n\t\t// If we have a dialog component from the input, use its state (the highest priority)\n\t\tconst dialogFromInput = this.brnDialogTriggerForState();\n\t\tif (dialogFromInput) {\n\t\t\treturn dialogFromInput.stateComputed();\n\t\t}\n\n\t\t// If we have a dialog component, use its state\n\t\tif (this._brnDialog) {\n\t\t\treturn this._brnDialog.stateComputed();\n\t\t}\n\n\t\t// If we have a dialog ref, use its state\n\t\tif (this._brnDialogRef) {\n\t\t\treturn this._brnDialogRef.state();\n\t\t}\n\n\t\treturn 'closed';\n\t});\n\n\tpublic readonly dialogId = `brn-dialog-${this._brnDialogRef?.dialogId ?? ++idSequence}`;\n\n\tpublic readonly brnDialogTriggerFor = input<BrnDialog | undefined>(undefined, {\n\t\talias: 'brnDialogTriggerFor',\n\t});\n\tpublic readonly mutableBrnDialogTriggerFor = computed(() => signal(this.brnDialogTriggerFor()));\n\tpublic readonly brnDialogTriggerForState = computed(() => this.mutableBrnDialogTriggerFor()());\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst brnDialog = this.brnDialogTriggerForState();\n\t\t\tif (!brnDialog) return;\n\t\t\tthis._brnDialog = brnDialog;\n\t\t});\n\t}\n\n\topen() {\n\t\tthis._brnDialog?.open();\n\t}\n}\n","import { BrnDialog } from './lib/brn-dialog';\nimport { BrnDialogClose } from './lib/brn-dialog-close';\nimport { BrnDialogContent } from './lib/brn-dialog-content';\nimport { BrnDialogDescription } from './lib/brn-dialog-description';\nimport { BrnDialogOverlay } from './lib/brn-dialog-overlay';\nimport { BrnDialogTitle } from './lib/brn-dialog-title';\nimport { BrnDialogTrigger } from './lib/brn-dialog-trigger';\n\nexport * from './lib/brn-dialog';\nexport * from './lib/brn-dialog-close';\nexport * from './lib/brn-dialog-content';\nexport * from './lib/brn-dialog-description';\nexport * from './lib/brn-dialog-options';\nexport * from './lib/brn-dialog-overlay';\nexport * from './lib/brn-dialog-ref';\nexport * from './lib/brn-dialog-state';\nexport * from './lib/brn-dialog-title';\nexport * from './lib/brn-dialog-token';\nexport * from './lib/brn-dialog-trigger';\nexport * from './lib/brn-dialog-utils';\nexport * from './lib/brn-dialog.service';\n\nexport const BrnDialogImports = [\n\tBrnDialog,\n\tBrnDialogOverlay,\n\tBrnDialogTrigger,\n\tBrnDialogClose,\n\tBrnDialogContent,\n\tBrnDialogTitle,\n\tBrnDialogDescription,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-dialog.mjs","sources":["../../../../libs/brain/dialog/src/lib/brn-dialog-token.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-utils.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-ref.ts","../../../../libs/brain/dialog/src/lib/brn-dialog.service.ts","../../../../libs/brain/dialog/src/lib/brn-dialog.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-close.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-content.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-description.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-overlay.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-title.ts","../../../../libs/brain/dialog/src/lib/brn-dialog-trigger.ts","../../../../libs/brain/dialog/src/index.ts","../../../../libs/brain/dialog/src/spartan-ng-brain-dialog.ts"],"sourcesContent":["import { inject, InjectionToken, type ValueProvider } from '@angular/core';\nimport type { BrnDialogOptions } from './brn-dialog-options';\n\nexport interface BrnDialogDefaultOptions {\n\t/** Aria label to assign to the dialog element. */\n\tariaLabel: BrnDialogOptions['ariaLabel'];\n\n\t/** Whether the dialog should be considered a modal dialog. */\n\tariaModal: BrnDialogOptions['ariaModal'];\n\n\t/** A connected position as specified by the user. */\n\tattachPositions: BrnDialogOptions['attachPositions'];\n\n\t/** Element to which the dialog should be attached. */\n\tattachTo: BrnDialogOptions['attachTo'];\n\n\t/** Options for where to set focus to automatically on dialog open */\n\tautoFocus: BrnDialogOptions['autoFocus'];\n\n\t/** CSS class to be applied to the backdrop. */\n\tbackdropClass: BrnDialogOptions['backdropClass'];\n\n\t/** The delay in milliseconds before the dialog closes. */\n\tcloseDelay: BrnDialogOptions['closeDelay'];\n\n\t/** Close dialog on backdrop click */\n\tcloseOnBackdropClick: BrnDialogOptions['closeOnBackdropClick'];\n\n\t/** Close dialog on outside pointer event */\n\tcloseOnOutsidePointerEvents: BrnDialogOptions['closeOnOutsidePointerEvents'];\n\n\t/** Whether the dialog closes with the escape key or pointer events outside the panel element. */\n\tdisableClose: BrnDialogOptions['disableClose'];\n\n\t/** Whether the dialog has a backdrop. */\n\thasBackdrop: BrnDialogOptions['hasBackdrop'];\n\n\t/** CSS class applied to the panel. */\n\tpanelClass: BrnDialogOptions['panelClass'];\n\n\t/** Strategy to use when positioning the dialog */\n\tpositionStrategy: BrnDialogOptions['positionStrategy'];\n\n\t/** Whether the dialog should restore focus to the previously-focused element upon closing. */\n\trestoreFocus: BrnDialogOptions['restoreFocus'];\n\n\t/** The role of the dialog */\n\trole: BrnDialogOptions['role'];\n\n\t/** Scroll strategy to be used for the dialog. */\n\tscrollStrategy: BrnDialogOptions['scrollStrategy'] | 'close' | 'reposition';\n}\n\nexport const defaultOptions: BrnDialogDefaultOptions = {\n\tariaLabel: undefined,\n\tariaModal: true,\n\tattachPositions: [],\n\tattachTo: null,\n\tautoFocus: 'first-tabbable',\n\tbackdropClass: '',\n\tcloseDelay: 100,\n\tcloseOnBackdropClick: true,\n\tcloseOnOutsidePointerEvents: false,\n\tdisableClose: false,\n\thasBackdrop: true,\n\tpanelClass: '',\n\tpositionStrategy: null,\n\trestoreFocus: true,\n\trole: 'dialog',\n\tscrollStrategy: null,\n};\n\nconst BRN_DIALOG_DEFAULT_OPTIONS = new InjectionToken<BrnDialogDefaultOptions>('brn-dialog-default-options', {\n\tprovidedIn: 'root',\n\tfactory: () => defaultOptions,\n});\n\nexport function provideBrnDialogDefaultOptions(options: Partial<BrnDialogDefaultOptions>): ValueProvider {\n\treturn { provide: BRN_DIALOG_DEFAULT_OPTIONS, useValue: { ...defaultOptions, ...options } };\n}\n\nexport function injectBrnDialogDefaultOptions(): BrnDialogDefaultOptions {\n\treturn inject(BRN_DIALOG_DEFAULT_OPTIONS, { optional: true }) ?? defaultOptions;\n}\n","// brn-dialog-utils.ts\n\nexport const cssClassesToArray = (classes: string | string[] | undefined | null, defaultClass = ''): string[] => {\n\tif (typeof classes === 'string') {\n\t\tconst splitClasses = classes.trim().split(' ');\n\t\tif (splitClasses.length === 0) {\n\t\t\treturn [defaultClass];\n\t\t}\n\t\treturn splitClasses;\n\t}\n\treturn classes ?? [];\n};\n","import type { DialogRef } from '@angular/cdk/dialog';\nimport type { Signal, WritableSignal } from '@angular/core';\nimport { signal } from '@angular/core';\nimport { type Observable, Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport type { BrnDialogOptions } from './brn-dialog-options';\nimport type { BrnDialogState } from './brn-dialog-state';\nimport { cssClassesToArray } from './brn-dialog-utils';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class BrnDialogRef<DialogResult = any> {\n\tprivate readonly _closing$ = new Subject<void>();\n\tpublic readonly closing$ = this._closing$.asObservable();\n\n\tpublic readonly closed$: Observable<DialogResult | undefined>;\n\n\tprivate _previousTimeout: ReturnType<typeof setTimeout> | undefined;\n\n\tpublic get open() {\n\t\treturn this.state() === 'open';\n\t}\n\n\tprivate readonly _options = signal<undefined | BrnDialogOptions>(undefined);\n\tpublic readonly options = this._options.asReadonly();\n\n\tconstructor(\n\t\tprivate readonly _cdkDialogRef: DialogRef<DialogResult>,\n\t\tprivate readonly _open: WritableSignal<boolean>,\n\t\tpublic readonly state: Signal<BrnDialogState>,\n\t\tpublic readonly dialogId: number,\n\t\t_options?: BrnDialogOptions,\n\t) {\n\t\tif (_options) {\n\t\t\tthis._options.set(_options);\n\t\t}\n\t\tthis.closed$ = this._cdkDialogRef.closed.pipe(take(1));\n\t}\n\n\tpublic updateOptions(options: Partial<BrnDialogOptions>): void {\n\t\tthis._options.update((prev) => ({ ...(prev ?? {}), ...options }) as BrnDialogOptions);\n\t}\n\n\tpublic close(result?: DialogResult, delay: number = this._options()?.closeDelay ?? 0): void {\n\t\tif (!this.open || this._options()?.disableClose) return;\n\n\t\tthis._closing$.next();\n\t\tthis._open.set(false);\n\n\t\tif (this._previousTimeout) {\n\t\t\tclearTimeout(this._previousTimeout);\n\t\t}\n\n\t\tthis._previousTimeout = setTimeout(() => {\n\t\t\tthis._cdkDialogRef.close(result);\n\t\t}, delay);\n\t}\n\n\tpublic setPanelClass(paneClass: string | null | undefined): void {\n\t\tthis._cdkDialogRef.config.panelClass = cssClassesToArray(paneClass);\n\t}\n\n\tpublic setOverlayClass(overlayClass: string | null | undefined): void {\n\t\tthis._cdkDialogRef.config.backdropClass = cssClassesToArray(overlayClass);\n\t}\n\n\tpublic setAriaDescribedBy(ariaDescribedBy: string | null | undefined): void {\n\t\tthis._cdkDialogRef.config.ariaDescribedBy = ariaDescribedBy;\n\t}\n\n\tpublic setAriaLabelledBy(ariaLabelledBy: string | null | undefined): void {\n\t\tthis._cdkDialogRef.config.ariaLabelledBy = ariaLabelledBy;\n\t}\n\n\tpublic setAriaLabel(ariaLabel: string | null | undefined): void {\n\t\tthis._cdkDialogRef.config.ariaLabel = ariaLabel;\n\t}\n\n\tpublic updatePosition(): void {\n\t\tthis._cdkDialogRef.overlayRef?.updatePosition();\n\t}\n}\n","import { Dialog, DIALOG_DATA } from '@angular/cdk/dialog';\nimport {\n\ttype ComponentType,\n\tFlexibleConnectedPositionStrategy,\n\tOverlayOutsideClickDispatcher,\n\tOverlayPositionBuilder,\n\tOverlayRef,\n\tScrollStrategyOptions,\n} from '@angular/cdk/overlay';\nimport { BasePortalOutlet } from '@angular/cdk/portal';\nimport {\n\tChangeDetectorRef,\n\tcomputed,\n\teffect,\n\ttype EffectRef,\n\tElementRef,\n\tinject,\n\tInjectable,\n\ttype InjectOptions,\n\tInjector,\n\tRendererFactory2,\n\trunInInjectionContext,\n\tsignal,\n\ttype StaticProvider,\n\ttype TemplateRef,\n\ttype ViewContainerRef,\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport type { BrnDialogOptions } from './brn-dialog-options';\nimport { BrnDialogRef } from './brn-dialog-ref';\nimport type { BrnDialogState } from './brn-dialog-state';\nimport { injectBrnDialogDefaultOptions } from './brn-dialog-token';\n\nlet dialogSequence = 0;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type BrnDialogContext<T> = T & { close: (result?: any) => void };\n\n/** @deprecated `injectBrnDialogCtx` will no longer be supported once components are stable. Use `injectBrnDialogContext` instead. */\nexport const injectBrnDialogCtx = <T>(): BrnDialogContext<T> => {\n\treturn inject(DIALOG_DATA);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const injectBrnDialogContext = <DialogContext = any>(options: InjectOptions = {}) => {\n\treturn inject(DIALOG_DATA, options) as DialogContext;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class BrnDialogService {\n\tprivate readonly _overlayCloseDispatcher = inject(OverlayOutsideClickDispatcher);\n\tprivate readonly _cdkDialog = inject(Dialog);\n\tprivate readonly _rendererFactory = inject(RendererFactory2);\n\tprivate readonly _renderer = this._rendererFactory.createRenderer(null, null);\n\tprivate readonly _positionBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _sso = inject(ScrollStrategyOptions);\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _defaultOptions = injectBrnDialogDefaultOptions();\n\n\tpublic open<DialogContext>(\n\t\tcontent: ComponentType<unknown> | TemplateRef<unknown>,\n\t\tvcr?: ViewContainerRef,\n\t\tcontext?: DialogContext,\n\t\toptions?: Partial<BrnDialogOptions>,\n\t) {\n\t\tif (options?.id && this._cdkDialog.getDialogById(options.id)) {\n\t\t\tthrow new Error(`Dialog with ID: ${options.id} already exists`);\n\t\t}\n\n\t\tconst attachTo = options?.attachTo ?? this._defaultOptions.attachTo;\n\n\t\tconst positionStrategy =\n\t\t\toptions?.positionStrategy ??\n\t\t\tthis._defaultOptions.positionStrategy ??\n\t\t\t(attachTo && options?.attachPositions && options?.attachPositions?.length > 0\n\t\t\t\t? this._positionBuilder?.flexibleConnectedTo(attachTo).withPositions(options.attachPositions ?? [])\n\t\t\t\t: this._positionBuilder.global().centerHorizontally().centerVertically());\n\n\t\tlet brnDialogRef!: BrnDialogRef;\n\t\tconst effectRefs: EffectRef[] = [];\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst contextOrData: BrnDialogContext<any> = {\n\t\t\t...context,\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tclose: (result: any = undefined) => brnDialogRef.close(result, options?.closeDelay),\n\t\t};\n\n\t\tconst destroyed$ = new Subject<void>();\n\t\tconst optionsChanged$ = new Subject<void>();\n\t\tconst open = signal<boolean>(true);\n\t\tconst state = computed<BrnDialogState>(() => (open() ? 'open' : 'closed'));\n\t\tconst dialogId = ++dialogSequence;\n\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t// @ts-ignore\n\t\tconst cdkDialogRef = this._cdkDialog.open(content, {\n\t\t\tid: options?.id ?? `brn-dialog-${dialogId}`,\n\t\t\trole: options?.role ?? this._defaultOptions.role,\n\t\t\tviewContainerRef: vcr,\n\t\t\ttemplateContext: () => ({\n\t\t\t\t$implicit: contextOrData,\n\t\t\t}),\n\t\t\tdata: contextOrData,\n\t\t\tdirection: options?.direction,\n\t\t\thasBackdrop: options?.hasBackdrop ?? this._defaultOptions.hasBackdrop,\n\t\t\tpanelClass: options?.panelClass,\n\t\t\tbackdropClass: options?.backdropClass,\n\t\t\tpositionStrategy,\n\t\t\tscrollStrategy: options?.scrollStrategy ?? this._defaultOptions.scrollStrategy ?? this._sso?.block(),\n\t\t\trestoreFocus: options?.restoreFocus ?? this._defaultOptions.restoreFocus,\n\t\t\tdisableClose: true,\n\t\t\tautoFocus: options?.autoFocus ?? this._defaultOptions.autoFocus,\n\t\t\tariaDescribedBy: options?.ariaDescribedBy ?? `brn-dialog-description-${dialogId}`,\n\t\t\tariaLabelledBy: options?.ariaLabelledBy ?? `brn-dialog-title-${dialogId}`,\n\t\t\tariaLabel: options?.ariaLabel ?? this._defaultOptions.ariaLabel,\n\t\t\tariaModal: options?.ariaModal ?? this._defaultOptions.ariaModal,\n\t\t\tproviders: (cdkDialogRef) => {\n\t\t\t\tbrnDialogRef = new BrnDialogRef(cdkDialogRef, open, state, dialogId, options as BrnDialogOptions);\n\n\t\t\t\trunInInjectionContext(this._injector, () => {\n\t\t\t\t\tconst ref = effect(() => {\n\t\t\t\t\t\tif (overlay) {\n\t\t\t\t\t\t\tthis._renderer.setAttribute(overlay, 'data-state', state());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (backdrop) {\n\t\t\t\t\t\t\tthis._renderer.setAttribute(backdrop, 'data-state', state());\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\teffectRefs.push(ref);\n\t\t\t\t});\n\n\t\t\t\tconst providers: StaticProvider[] = [\n\t\t\t\t\t{\n\t\t\t\t\t\tprovide: BrnDialogRef,\n\t\t\t\t\t\tuseValue: brnDialogRef,\n\t\t\t\t\t},\n\t\t\t\t];\n\n\t\t\t\tif (options?.providers) {\n\t\t\t\t\tif (typeof options.providers === 'function') {\n\t\t\t\t\t\tproviders.push(...options.providers());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Array.isArray(options.providers)) {\n\t\t\t\t\t\tproviders.push(...options.providers);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn providers;\n\t\t\t},\n\t\t});\n\n\t\tconst overlay = cdkDialogRef.overlayRef.overlayElement;\n\t\tconst backdrop = cdkDialogRef.overlayRef.backdropElement;\n\n\t\trunInInjectionContext(this._injector, () => {\n\t\t\tconst optionChangeEffect = effect(() => {\n\t\t\t\tconst options = brnDialogRef.options();\n\t\t\t\toptionsChanged$.next();\n\t\t\t\tconst closeOnOutsidePointerEvents =\n\t\t\t\t\toptions?.closeOnOutsidePointerEvents ?? this._defaultOptions.closeOnOutsidePointerEvents;\n\t\t\t\tif (closeOnOutsidePointerEvents) {\n\t\t\t\t\tcdkDialogRef.outsidePointerEvents.pipe(takeUntil(merge(destroyed$, optionsChanged$))).subscribe(() => {\n\t\t\t\t\t\tconst overlays = this._overlayCloseDispatcher._attachedOverlays;\n\t\t\t\t\t\tconst index = overlays.indexOf(cdkDialogRef.overlayRef);\n\t\t\t\t\t\t// close if this is the topmost overlay\n\t\t\t\t\t\t// but prevent closing if this overlay contains the top overlay (which will be closed)\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tindex === overlays.length - 1 ||\n\t\t\t\t\t\t\t(overlays.length > 1 && !this.isNested(cdkDialogRef.overlayRef, overlays.at(-1)!))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tbrnDialogRef.close(undefined, options?.closeDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst closeOnBackdropClick = options?.closeOnBackdropClick ?? this._defaultOptions.closeOnBackdropClick;\n\t\t\t\tif (closeOnBackdropClick) {\n\t\t\t\t\tcdkDialogRef.backdropClick.pipe(takeUntil(merge(destroyed$, optionsChanged$))).subscribe(() => {\n\t\t\t\t\t\tbrnDialogRef.close(undefined, options?.closeDelay);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst disableClose = options?.disableClose ?? this._defaultOptions.disableClose;\n\t\t\t\tif (!disableClose) {\n\t\t\t\t\tcdkDialogRef.keydownEvents\n\t\t\t\t\t\t.pipe(\n\t\t\t\t\t\t\tfilter((e) => e.key === 'Escape'),\n\t\t\t\t\t\t\ttakeUntil(merge(destroyed$, optionsChanged$)),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\t\tbrnDialogRef.close(undefined, options?.closeDelay);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\teffectRefs.push(optionChangeEffect);\n\t\t});\n\t\tcdkDialogRef.closed.pipe(takeUntil(destroyed$)).subscribe(() => {\n\t\t\teffectRefs.forEach((a) => a.destroy());\n\t\t\tdestroyed$.next();\n\t\t\toptionsChanged$.next();\n\t\t});\n\n\t\t// this is not ideal, but we need to force change detection to run in the dialog,\n\t\t// otherwise in some conditions (like menu launching a dialog) the dialog content\n\t\t// does not render.\n\t\tif ('_changeDetectorRef' in cdkDialogRef.containerInstance) {\n\t\t\tconst containerInstance = cdkDialogRef.containerInstance as BasePortalOutlet & {\n\t\t\t\t_changeDetectorRef: ChangeDetectorRef;\n\t\t\t};\n\t\t\tcontainerInstance._changeDetectorRef.detectChanges();\n\t\t}\n\n\t\treturn brnDialogRef;\n\t}\n\n\tprivate isNested(parent: OverlayRef, child: OverlayRef): boolean {\n\t\tconst childOrigin = (child.getConfig().positionStrategy as FlexibleConnectedPositionStrategy)._origin;\n\t\tif (!childOrigin) {\n\t\t\treturn false;\n\t\t} else if ('width' in childOrigin && 'height' in childOrigin) {\n\t\t\tconst rect = parent.hostElement.getBoundingClientRect();\n\t\t\treturn (\n\t\t\t\tchildOrigin.x >= rect.left &&\n\t\t\t\tchildOrigin.x <= rect.right &&\n\t\t\t\tchildOrigin.y >= rect.top &&\n\t\t\t\tchildOrigin.y <= rect.bottom\n\t\t\t);\n\t\t} else {\n\t\t\tconst element: Element = (childOrigin as ElementRef).nativeElement || childOrigin;\n\t\t\treturn parent.hostElement.contains(element);\n\t\t}\n\t}\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport { type BooleanInput, type NumberInput } from '@angular/cdk/coercion';\nimport { OverlayPositionBuilder, type ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\ttype EffectRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tnumberAttribute,\n\toutput,\n\trunInInjectionContext,\n\tsignal,\n\ttype TemplateRef,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { take } from 'rxjs/operators';\nimport type { BrnDialogOptions } from './brn-dialog-options';\nimport type { BrnDialogRef } from './brn-dialog-ref';\nimport type { BrnDialogState } from './brn-dialog-state';\nimport { injectBrnDialogDefaultOptions } from './brn-dialog-token';\nimport { cssClassesToArray } from './brn-dialog-utils';\nimport { BrnDialogService } from './brn-dialog.service';\n\n@Directive({\n\tselector: '[brnDialog],brn-dialog',\n\texportAs: 'brnDialog',\n})\nexport class BrnDialog<TResult = unknown, TContext extends Record<string, unknown> = Record<string, unknown>> {\n\tprivate readonly _dialogService = inject(BrnDialogService);\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tpublic readonly positionBuilder = inject(OverlayPositionBuilder);\n\tpublic readonly ssos = inject(ScrollStrategyOptions);\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _directionality = inject(Directionality);\n\n\tprotected readonly _defaultOptions = injectBrnDialogDefaultOptions();\n\n\tprivate _context: TContext = {} as TContext;\n\tpublic readonly stateComputed = computed(() => this._dialogRef()?.state() ?? 'closed');\n\n\tprivate _contentTemplate: TemplateRef<unknown> | undefined;\n\tprivate readonly _dialogRef = signal<BrnDialogRef | undefined>(undefined);\n\tprivate readonly _dialogStateEffectRefs: EffectRef[] = [];\n\tprivate readonly _backdropClass = signal<string | null | undefined>(null);\n\tprivate readonly _panelClass = signal<string | null | undefined>(null);\n\n\tpublic readonly closed = output<TResult>();\n\n\tpublic readonly stateChanged = output<BrnDialogState>();\n\n\tpublic readonly state = input<BrnDialogState | null>(null);\n\n\tpublic readonly role = input<BrnDialogOptions['role']>(this._defaultOptions.role);\n\n\tpublic readonly hasBackdrop = input<boolean, BooleanInput>(this._defaultOptions.hasBackdrop, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tpublic readonly positionStrategy = input<BrnDialogOptions['positionStrategy']>(this._defaultOptions.positionStrategy);\n\tpublic readonly mutablePositionStrategy = linkedSignal(() => this.positionStrategy());\n\n\tpublic readonly scrollStrategy = input<BrnDialogOptions['scrollStrategy'] | 'close' | 'reposition' | null>(\n\t\tthis._defaultOptions.scrollStrategy,\n\t);\n\n\tprotected readonly _options = computed<Partial<BrnDialogOptions>>(() => {\n\t\tconst scrollStrategyInput = this.scrollStrategy();\n\t\tlet scrollStrategy: ScrollStrategy | null | undefined;\n\n\t\tif (scrollStrategyInput === 'close') {\n\t\t\tscrollStrategy = this.ssos.close();\n\t\t} else if (scrollStrategyInput === 'reposition') {\n\t\t\tscrollStrategy = this.ssos.reposition();\n\t\t} else {\n\t\t\tscrollStrategy = scrollStrategyInput;\n\t\t}\n\n\t\treturn {\n\t\t\trole: this.role(),\n\t\t\tdirection: this._directionality.valueSignal(),\n\t\t\thasBackdrop: this.hasBackdrop(),\n\t\t\tpositionStrategy: this.mutablePositionStrategy(),\n\t\t\tscrollStrategy,\n\t\t\trestoreFocus: this.restoreFocus(),\n\t\t\tcloseOnOutsidePointerEvents: this.mutableCloseOnOutsidePointerEvents(),\n\t\t\tcloseOnBackdropClick: this.closeOnBackdropClick(),\n\t\t\tattachTo: this.mutableAttachTo(),\n\t\t\tattachPositions: this.mutableAttachPositions(),\n\t\t\tautoFocus: this.autoFocus(),\n\t\t\tcloseDelay: this.closeDelay(),\n\t\t\tdisableClose: this.disableClose(),\n\t\t\tbackdropClass: cssClassesToArray(this._backdropClass() ?? this._defaultOptions.backdropClass),\n\t\t\tpanelClass: cssClassesToArray(this._panelClass() ?? this._defaultOptions.panelClass),\n\t\t\tariaDescribedBy: this._mutableAriaDescribedBy(),\n\t\t\tariaLabelledBy: this._mutableAriaLabelledBy(),\n\t\t\tariaLabel: this._mutableAriaLabel(),\n\t\t\tariaModal: this._mutableAriaModal(),\n\t\t};\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tconst state = this.state();\n\t\t\t\t\tif (state === 'open') {\n\t\t\t\t\t\tuntracked(() => this.open());\n\t\t\t\t\t}\n\t\t\t\t\tif (state === 'closed') {\n\t\t\t\t\t\tuntracked(() => this.close());\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tinjector: this._injector,\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic readonly restoreFocus = input<BrnDialogOptions['restoreFocus']>(this._defaultOptions.restoreFocus);\n\n\tpublic readonly closeOnOutsidePointerEvents = input<boolean, BooleanInput>(\n\t\tthis._defaultOptions.closeOnOutsidePointerEvents,\n\t\t{\n\t\t\ttransform: booleanAttribute,\n\t\t},\n\t);\n\tpublic readonly mutableCloseOnOutsidePointerEvents = linkedSignal(() => this.closeOnOutsidePointerEvents());\n\n\tpublic readonly closeOnBackdropClick = input<boolean, BooleanInput>(this._defaultOptions.closeOnBackdropClick, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tpublic readonly attachTo = input<BrnDialogOptions['attachTo']>(null);\n\tpublic readonly mutableAttachTo = linkedSignal(() => this.attachTo());\n\n\tpublic readonly attachPositions = input<BrnDialogOptions['attachPositions']>(this._defaultOptions.attachPositions);\n\tpublic readonly mutableAttachPositions = linkedSignal(() => this.attachPositions());\n\n\tpublic readonly autoFocus = input<BrnDialogOptions['autoFocus']>(this._defaultOptions.autoFocus);\n\n\tpublic readonly closeDelay = input<number, NumberInput>(this._defaultOptions.closeDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\n\tpublic readonly disableClose = input<boolean, BooleanInput>(this._defaultOptions.disableClose, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\tpublic readonly ariaDescribedBy = input<BrnDialogOptions['ariaDescribedBy']>(null, {\n\t\talias: 'aria-describedby',\n\t});\n\tprivate readonly _mutableAriaDescribedBy = linkedSignal(() => this.ariaDescribedBy());\n\n\tpublic readonly ariaLabelledBy = input<BrnDialogOptions['ariaLabelledBy']>(null, { alias: 'aria-labelledby' });\n\tprivate readonly _mutableAriaLabelledBy = linkedSignal(() => this.ariaLabelledBy());\n\n\tpublic readonly ariaLabel = input<BrnDialogOptions['ariaLabel']>(null, { alias: 'aria-label' });\n\tprivate readonly _mutableAriaLabel = linkedSignal(() => this.ariaLabel());\n\n\tpublic readonly ariaModal = input<boolean, BooleanInput>(true, { alias: 'aria-modal', transform: booleanAttribute });\n\tprivate readonly _mutableAriaModal = linkedSignal(() => this.ariaModal());\n\n\tpublic open(): void {\n\t\tif (!this._contentTemplate || this._dialogRef()) return;\n\n\t\tthis._dialogStateEffectRefs.forEach((ref) => ref.destroy());\n\n\t\tconst dialogRef = this._dialogService.open<TContext>(\n\t\t\tthis._contentTemplate,\n\t\t\tthis._vcr,\n\t\t\tthis._context,\n\t\t\tthis._options(),\n\t\t);\n\n\t\tthis._dialogRef.set(dialogRef);\n\n\t\trunInInjectionContext(this._injector, () => {\n\t\t\tthis._dialogStateEffectRefs.push(\n\t\t\t\teffect(() => {\n\t\t\t\t\tconst state = dialogRef.state();\n\t\t\t\t\tuntracked(() => this.stateChanged.emit(state));\n\t\t\t\t}),\n\t\t\t\teffect(() => dialogRef.updateOptions(this._options())),\n\t\t\t);\n\t\t});\n\n\t\tdialogRef.closed$.pipe(take(1), takeUntilDestroyed(this._destroyRef)).subscribe((result) => {\n\t\t\tthis._dialogRef.set(undefined);\n\t\t\tthis.closed.emit(result);\n\t\t});\n\t}\n\n\tpublic close(result?: TResult, delay?: number): void {\n\t\tthis._dialogRef()?.close(result, delay ?? this._options().closeDelay);\n\t}\n\n\tpublic registerTemplate(template: TemplateRef<unknown>): void {\n\t\tthis._contentTemplate = template;\n\t}\n\n\tpublic setOverlayClass(overlayClass: string | null | undefined): void {\n\t\tthis._backdropClass.set(overlayClass);\n\t\tthis._dialogRef()?.setOverlayClass(overlayClass);\n\t}\n\n\tpublic setPanelClass(panelClass: string | null | undefined): void {\n\t\tthis._panelClass.set(panelClass ?? '');\n\t\tthis._dialogRef()?.setPanelClass(panelClass);\n\t}\n\n\tpublic setContext(context: TContext): void {\n\t\tthis._context = { ...this._context, ...context };\n\t}\n\n\tpublic setAriaDescribedBy(ariaDescribedBy: string | null | undefined): void {\n\t\tthis._mutableAriaDescribedBy.set(ariaDescribedBy);\n\t\tthis._dialogRef()?.setAriaDescribedBy(ariaDescribedBy);\n\t}\n\n\tpublic setAriaLabelledBy(ariaLabelledBy: string | null | undefined): void {\n\t\tthis._mutableAriaLabelledBy.set(ariaLabelledBy);\n\t\tthis._dialogRef()?.setAriaLabelledBy(ariaLabelledBy);\n\t}\n\n\tpublic setAriaLabel(ariaLabel: string | null | undefined): void {\n\t\tthis._mutableAriaLabel.set(ariaLabel);\n\t\tthis._dialogRef()?.setAriaLabel(ariaLabel);\n\t}\n\n\tpublic setAriaModal(ariaModal: boolean): void {\n\t\tthis._mutableAriaModal.set(ariaModal);\n\t}\n\n\tpublic updatePosition(): void {\n\t\tthis._dialogRef()?.updatePosition();\n\t}\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Directive, inject, input } from '@angular/core';\nimport { BrnDialogRef } from './brn-dialog-ref';\n\n@Directive({\n\tselector: 'button[brnDialogClose]',\n\thost: {\n\t\t'(click)': 'close()',\n\t},\n})\nexport class BrnDialogClose {\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef);\n\n\tpublic readonly delay = input<number | undefined, number>(undefined, { transform: coerceNumberProperty });\n\n\tpublic close() {\n\t\tthis._brnDialogRef.close(undefined, this.delay());\n\t}\n}\n","import { computed, Directive, effect, inject, input, TemplateRef, untracked } from '@angular/core';\nimport { provideExposesStateProviderExisting } from '@spartan-ng/brain/core';\nimport { BrnDialog } from './brn-dialog';\nimport { BrnDialogRef } from './brn-dialog-ref';\n\n@Directive({\n\tselector: '[brnDialogContent]',\n\tproviders: [provideExposesStateProviderExisting(() => BrnDialogContent)],\n})\nexport class BrnDialogContent<T> {\n\tprivate readonly _brnDialog = inject(BrnDialog, { optional: true });\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef, { optional: true });\n\tprivate readonly _template = inject(TemplateRef);\n\tpublic readonly state = computed(() => this._brnDialog?.stateComputed() ?? this._brnDialogRef?.state() ?? 'closed');\n\n\tpublic readonly className = input<string | null | undefined>(undefined, { alias: 'class' });\n\n\tpublic readonly context = input<T | undefined>(undefined);\n\n\tconstructor() {\n\t\tif (!this._brnDialog) return;\n\t\tthis._brnDialog.registerTemplate(this._template);\n\t\teffect(() => {\n\t\t\tconst context = this.context();\n\t\t\tif (!this._brnDialog || !context) return;\n\t\t\tuntracked(() => this._brnDialog?.setContext(context));\n\t\t});\n\t\teffect(() => {\n\t\t\tif (!this._brnDialog) return;\n\t\t\tconst newClass = this.className();\n\t\t\tuntracked(() => this._brnDialog?.setPanelClass(newClass));\n\t\t});\n\t}\n}\n","import { Directive, effect, inject, signal } from '@angular/core';\nimport { BrnDialogRef } from './brn-dialog-ref';\n\n@Directive({\n\tselector: '[brnDialogDescription]',\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnDialogDescription {\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef);\n\n\tprotected readonly _id = signal(`brn-dialog-description-${this._brnDialogRef?.dialogId}`);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._brnDialogRef.setAriaDescribedBy(this._id());\n\t\t});\n\t}\n}\n","import { Directive, effect, inject, input, untracked } from '@angular/core';\nimport { provideCustomClassSettableExisting } from '@spartan-ng/brain/core';\nimport { BrnDialog } from './brn-dialog';\n\n@Directive({\n\tselector: '[brnDialogOverlay],brn-dialog-overlay',\n\tproviders: [provideCustomClassSettableExisting(() => BrnDialogOverlay)],\n})\nexport class BrnDialogOverlay {\n\tprivate readonly _brnDialog = inject(BrnDialog);\n\n\tpublic readonly className = input<string | null | undefined>(undefined, { alias: 'class' });\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tif (!this._brnDialog) return;\n\t\t\tconst newClass = this.className();\n\t\t\tuntracked(() => this._brnDialog.setOverlayClass(newClass));\n\t\t});\n\t}\n\n\tsetClassToCustomElement(newClass: string) {\n\t\tthis._brnDialog.setOverlayClass(newClass);\n\t}\n}\n","import { Directive, effect, inject, signal } from '@angular/core';\nimport { BrnDialogRef } from './brn-dialog-ref';\n\n@Directive({\n\tselector: '[brnDialogTitle]',\n\thost: {\n\t\t'[id]': '_id()',\n\t},\n})\nexport class BrnDialogTitle {\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef);\n\n\tprotected readonly _id = signal(`brn-dialog-title-${this._brnDialogRef?.dialogId}`);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._brnDialogRef.setAriaLabelledBy(this._id());\n\t\t});\n\t}\n}\n","import { computed, Directive, effect, inject, input, signal } from '@angular/core';\nimport { BrnDialog } from './brn-dialog';\nimport { BrnDialogRef } from './brn-dialog-ref';\nimport type { BrnDialogState } from './brn-dialog-state';\n\nlet idSequence = 0;\n\n@Directive({\n\tselector: 'button[brnDialogTrigger],button[brnDialogTriggerFor]',\n\texportAs: 'brnDialogTrigger',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'(click)': 'open()',\n\t\t'aria-haspopup': 'dialog',\n\t\t'[attr.aria-expanded]': \"state() === 'open' ? 'true': 'false'\",\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-controls]': 'dialogId',\n\t\t'[type]': 'type()',\n\t},\n})\nexport class BrnDialogTrigger {\n\tprotected _brnDialog = inject(BrnDialog, { optional: true });\n\tprotected readonly _brnDialogRef = inject(BrnDialogRef, { optional: true });\n\n\tpublic readonly id = input<string>(`brn-dialog-trigger-${++idSequence}`);\n\tpublic readonly type = input<'button' | 'submit' | 'reset'>('button');\n\n\tpublic readonly state = computed<BrnDialogState>(() => {\n\t\t// If we have a dialog component from the input, use its state (the highest priority)\n\t\tconst dialogFromInput = this.brnDialogTriggerForState();\n\t\tif (dialogFromInput) {\n\t\t\treturn dialogFromInput.stateComputed();\n\t\t}\n\n\t\t// If we have a dialog component, use its state\n\t\tif (this._brnDialog) {\n\t\t\treturn this._brnDialog.stateComputed();\n\t\t}\n\n\t\t// If we have a dialog ref, use its state\n\t\tif (this._brnDialogRef) {\n\t\t\treturn this._brnDialogRef.state();\n\t\t}\n\n\t\treturn 'closed';\n\t});\n\n\tpublic readonly dialogId = `brn-dialog-${this._brnDialogRef?.dialogId ?? ++idSequence}`;\n\n\tpublic readonly brnDialogTriggerFor = input<BrnDialog | undefined>(undefined, {\n\t\talias: 'brnDialogTriggerFor',\n\t});\n\tpublic readonly mutableBrnDialogTriggerFor = computed(() => signal(this.brnDialogTriggerFor()));\n\tpublic readonly brnDialogTriggerForState = computed(() => this.mutableBrnDialogTriggerFor()());\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst brnDialog = this.brnDialogTriggerForState();\n\t\t\tif (!brnDialog) return;\n\t\t\tthis._brnDialog = brnDialog;\n\t\t});\n\t}\n\n\topen() {\n\t\tthis._brnDialog?.open();\n\t}\n}\n","import { BrnDialog } from './lib/brn-dialog';\nimport { BrnDialogClose } from './lib/brn-dialog-close';\nimport { BrnDialogContent } from './lib/brn-dialog-content';\nimport { BrnDialogDescription } from './lib/brn-dialog-description';\nimport { BrnDialogOverlay } from './lib/brn-dialog-overlay';\nimport { BrnDialogTitle } from './lib/brn-dialog-title';\nimport { BrnDialogTrigger } from './lib/brn-dialog-trigger';\n\nexport * from './lib/brn-dialog';\nexport * from './lib/brn-dialog-close';\nexport * from './lib/brn-dialog-content';\nexport * from './lib/brn-dialog-description';\nexport * from './lib/brn-dialog-options';\nexport * from './lib/brn-dialog-overlay';\nexport * from './lib/brn-dialog-ref';\nexport * from './lib/brn-dialog-state';\nexport * from './lib/brn-dialog-title';\nexport * from './lib/brn-dialog-token';\nexport * from './lib/brn-dialog-trigger';\nexport * from './lib/brn-dialog-utils';\nexport * from './lib/brn-dialog.service';\n\nexport const BrnDialogImports = [\n\tBrnDialog,\n\tBrnDialogOverlay,\n\tBrnDialogTrigger,\n\tBrnDialogClose,\n\tBrnDialogContent,\n\tBrnDialogTitle,\n\tBrnDialogDescription,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, TemplateRef, Directive, NgZone, signal, Injectable, ViewContainerRef, ElementRef, input, numberAttribute, computed, effect, untracked, contentChild } from '@angular/core';
2
+ import { InjectionToken, inject, TemplateRef, Directive, NgZone, signal, effect, untracked, Injectable, ViewContainerRef, ElementRef, input, numberAttribute, computed, contentChild } from '@angular/core';
3
3
  import { FocusMonitor } from '@angular/cdk/a11y';
4
+ import { Directionality } from '@angular/cdk/bidi';
4
5
  import { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';
5
6
  import { TemplatePortal } from '@angular/cdk/portal';
6
7
  import { toSignal } from '@angular/core/rxjs-interop';
@@ -146,6 +147,7 @@ class BrnHoverCardContentService {
146
147
  _overlay = inject(Overlay);
147
148
  _zone = inject(NgZone);
148
149
  _psBuilder = inject(OverlayPositionBuilder);
150
+ _directionality = inject(Directionality);
149
151
  _content = signal(null, ...(ngDevMode ? [{ debugName: "_content" }] : /* istanbul ignore next */ []));
150
152
  _state = signal('closed', ...(ngDevMode ? [{ debugName: "_state" }] : /* istanbul ignore next */ []));
151
153
  _config = {};
@@ -164,6 +166,12 @@ class BrnHoverCardContentService {
164
166
  ? 'left'
165
167
  : 'right'
166
168
  : change.connectionPair.originY)), { initialValue: 'bottom' });
169
+ constructor() {
170
+ effect(() => {
171
+ const direction = this._directionality.valueSignal();
172
+ untracked(() => this._overlayRef?.setDirection(direction));
173
+ });
174
+ }
167
175
  setConfig(config) {
168
176
  this._config = config;
169
177
  if (config.attachTo) {
@@ -184,6 +192,7 @@ class BrnHoverCardContentService {
184
192
  };
185
193
  this._positionChangesObservables$.next(this._positionStrategy.positionChanges);
186
194
  }
195
+ this._config = { ...this._config, direction: this._directionality.valueSignal() };
187
196
  this._overlayRef = this._overlay.create(this._config);
188
197
  }
189
198
  setContent(value, vcr) {
@@ -215,7 +224,7 @@ class BrnHoverCardContentService {
215
224
  }
216
225
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnHoverCardContentService, decorators: [{
217
226
  type: Injectable
218
- }] });
227
+ }], ctorParameters: () => [] });
219
228
  class BrnHoverCardTrigger {
220
229
  _destroy$ = new Subject();
221
230
  _vcr = inject(ViewContainerRef);
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-hover-card.mjs","sources":["../../../../libs/brain/hover-card/src/lib/brn-hover-card.token.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card-content.service.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card.ts","../../../../libs/brain/hover-card/src/index.ts","../../../../libs/brain/hover-card/src/spartan-ng-brain-hover-card.ts"],"sourcesContent":["import { inject, InjectionToken, type ValueProvider } from '@angular/core';\n\nexport interface BrnHoverCardDefaultOptions {\n\tshowDelay: number;\n\thideDelay: number;\n\tanimationDelay: number;\n\tsideOffset: number;\n\talign: 'top' | 'bottom';\n}\n\nexport const defaultOptions: BrnHoverCardDefaultOptions = {\n\tshowDelay: 300,\n\thideDelay: 500,\n\tanimationDelay: 100,\n\tsideOffset: 5,\n\talign: 'bottom',\n};\n\nconst BRN_HOVER_CARD_DEFAULT_OPTIONS = new InjectionToken<BrnHoverCardDefaultOptions>(\n\t'brn-hover-card-default-options',\n\t{\n\t\tprovidedIn: 'root',\n\t\tfactory: () => defaultOptions,\n\t},\n);\n\nexport function provideBrnHoverCardDefaultOptions(options: Partial<BrnHoverCardDefaultOptions>): ValueProvider {\n\treturn { provide: BRN_HOVER_CARD_DEFAULT_OPTIONS, useValue: { ...defaultOptions, ...options } };\n}\n\nexport function injectBrnHoverCardDefaultOptions(): BrnHoverCardDefaultOptions {\n\treturn inject(BRN_HOVER_CARD_DEFAULT_OPTIONS, { optional: true }) ?? defaultOptions;\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { NumberInput } from '@angular/cdk/coercion';\nimport {\n\ttype ConnectedOverlayPositionChange,\n\ttype ConnectedPosition,\n\ttype FlexibleConnectedPositionStrategy,\n\tOverlay,\n\ttype OverlayConfig,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjectable,\n\tinput,\n\tNgZone,\n\tnumberAttribute,\n\ttype OnDestroy,\n\ttype OnInit,\n\ttype Signal,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport {\n\tcreateHoverObservable,\n\ttype ExposesSide,\n\ttype ExposesState,\n\tprovideExposedSideProviderExisting,\n\tprovideExposesStateProviderExisting,\n} from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, merge, type Observable, of, Subject } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, share, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { injectBrnHoverCardDefaultOptions } from './brn-hover-card.token';\n\n@Directive({\n\tselector: '[brnHoverCardContent]',\n\texportAs: 'brnHoverCardContent',\n\tproviders: [\n\t\tprovideExposedSideProviderExisting(() => BrnHoverCardContent),\n\t\tprovideExposesStateProviderExisting(() => BrnHoverCardContent),\n\t],\n})\nexport class BrnHoverCardContent implements ExposesState, ExposesSide {\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tpublic readonly state = this._contentService.state;\n\tpublic readonly side = this._contentService.side;\n\tpublic readonly template = inject(TemplateRef);\n}\n\n/**\n * We are building on shoulders of giants here and use the implementation provided by the incredible TaigaUI\n * team: https://github.com/taiga-family/taiga-ui/blob/main/projects/core/directives/dropdown/dropdown-hover.directive.ts\n * Check them out! Give them a try! Leave a star! Their work is incredible!\n */\n\nexport type BrnHoverCardOptions = Partial<\n\t{\n\t\tattachTo: ElementRef;\n\t\tattachPositions: ConnectedPosition[];\n\t\talign: 'top' | 'bottom' | 'left' | 'right';\n\t\tsideOffset: number;\n\t} & OverlayConfig\n>;\n\nconst topFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n];\nconst bottomFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\nconst leftFirstPositions: ConnectedPosition[] = [\n\t// left side\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 1: right (opposite horizontal)\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 2: bottom (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t// Fallback 3: top (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\nconst rightFirstPositions: ConnectedPosition[] = [\n\t// right side\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 1: left (opposite horizontal)\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 2: bottom (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t// Fallback 3: top (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\nconst POSITION_MAP: Record<'top' | 'bottom' | 'left' | 'right', ConnectedPosition[]> = {\n\ttop: topFirstPositions,\n\tbottom: bottomFirstPositions,\n\tleft: leftFirstPositions,\n\tright: rightFirstPositions,\n};\n\n@Injectable()\nexport class BrnHoverCardContentService {\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\tprivate readonly _state = signal<'open' | 'closed'>('closed');\n\n\tprivate _config: BrnHoverCardOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _positionChangesObservables$ = new BehaviorSubject<\n\t\tObservable<ConnectedOverlayPositionChange> | undefined\n\t>(undefined);\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tpublic readonly positionChanges$: Observable<ConnectedOverlayPositionChange> = this._positionChangesObservables$.pipe(\n\t\tswitchMap((positionChangeObservable) => (positionChangeObservable ? positionChangeObservable : of(undefined))),\n\t\tfilter((change): change is NonNullable<ConnectedOverlayPositionChange> => change !== undefined && change !== null),\n\t);\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable ? overlayHoveredObservable : of(false))),\n\t);\n\n\tpublic readonly state = this._state.asReadonly();\n\tpublic readonly side: Signal<'top' | 'bottom' | 'left' | 'right'> = toSignal(\n\t\tthis.positionChanges$.pipe(\n\t\t\tmap<ConnectedOverlayPositionChange, 'top' | 'bottom' | 'left' | 'right'>((change) =>\n\t\t\t\t// todo: better translation or adjusting hlm to take that into account\n\t\t\t\tchange.connectionPair.originY === 'center'\n\t\t\t\t\t? change.connectionPair.originX === 'start'\n\t\t\t\t\t\t? 'left'\n\t\t\t\t\t\t: 'right'\n\t\t\t\t\t: change.connectionPair.originY,\n\t\t\t),\n\t\t),\n\t\t{ initialValue: 'bottom' },\n\t);\n\n\tpublic setConfig(config: BrnHoverCardOptions) {\n\t\tthis._config = config;\n\t\tif (config.attachTo) {\n\t\t\tconst align = config.align ?? 'bottom';\n\t\t\tconst positions = config.attachPositions ?? POSITION_MAP[align];\n\n\t\t\tthis._positionStrategy = this._psBuilder.flexibleConnectedTo(config.attachTo).withPositions(positions);\n\n\t\t\tconst offset = config.sideOffset ?? 0;\n\t\t\tif (align === 'left' || align === 'right') {\n\t\t\t\tthis._positionStrategy.withDefaultOffsetX(align === 'left' ? -offset : offset);\n\t\t\t} else {\n\t\t\t\tthis._positionStrategy.withDefaultOffsetY(align === 'top' ? -offset : offset);\n\t\t\t}\n\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t\tthis._positionChangesObservables$.next(this._positionStrategy.positionChanges);\n\t\t}\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown> | BrnHoverCardContent, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value instanceof TemplateRef ? value : value.template, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic setState(newState: 'open' | 'closed') {\n\t\tthis._state.set(newState);\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$).pipe(map((e) => e.hover)),\n\t\t);\n\t}\n\n\tpublic hide() {\n\t\tthis._overlayRef?.detach();\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t}\n}\n\n@Directive({\n\tselector: '[brnHoverCardTrigger]:not(ng-container),[brnHoverCardTriggerFor]:not(ng-container)',\n\texportAs: 'brnHoverCardTrigger',\n})\nexport class BrnHoverCardTrigger implements OnInit, OnDestroy {\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\n\tpublic readonly focused$: Observable<boolean> = this._focusMonitor.monitor(this._el).pipe(map((e) => e !== null));\n\n\tpublic readonly hovered$: Observable<boolean> = merge(\n\t\tfromEvent(this._el.nativeElement, 'click').pipe(map(() => false)),\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$).pipe(map((e) => e.hover)),\n\t\tthis._contentService.hovered$,\n\t\tthis.focused$,\n\t).pipe(distinctUntilChanged());\n\tpublic readonly showing$: Observable<boolean> = this.hovered$.pipe(\n\t\t// we set the state to open here because we are about to open show the content\n\t\ttap((visible) => visible && this._contentService.setState('open')),\n\t\tswitchMap((visible) => {\n\t\t\t// we are delaying based on the configure-able input\n\t\t\treturn of(visible).pipe(delay(visible ? this.showDelay() : this.hideDelay()));\n\t\t}),\n\t\tswitchMap((visible) => {\n\t\t\t// don't do anything when we are in the process of showing the content\n\t\t\tif (visible) return of(visible);\n\t\t\t// we set the state to closed here to trigger any animations for the element leaving\n\t\t\tthis._contentService.setState('closed');\n\t\t\t// then delay to wait for the leaving animation to finish\n\t\t\treturn of(visible).pipe(delay(this.animationDelay()));\n\t\t}),\n\t\tdistinctUntilChanged(),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tprivate readonly _defaultOptions = injectBrnHoverCardDefaultOptions();\n\tpublic readonly showDelay = input<number, NumberInput>(this._defaultOptions.showDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly hideDelay = input<number, NumberInput>(this._defaultOptions.hideDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly animationDelay = input<number, NumberInput>(this._defaultOptions.animationDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly sideOffset = input<number, NumberInput>(this._defaultOptions.sideOffset, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly align = input<'top' | 'bottom' | 'left' | 'right'>(this._defaultOptions.align);\n\n\tpublic readonly brnHoverCardTriggerFor = input<TemplateRef<unknown> | BrnHoverCardContent | undefined>(undefined);\n\tpublic readonly mutableBrnHoverCardTriggerFor = computed(() => signal(this.brnHoverCardTriggerFor()));\n\tprivate readonly _brnHoverCardTriggerForState = computed(() => this.mutableBrnHoverCardTriggerFor()());\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._brnHoverCardTriggerForState();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({ attachTo: this._el, align: this.align(), sideOffset: this.sideOffset() });\n\t\tthis.showing$.subscribe((isHovered) => {\n\t\t\tif (isHovered) {\n\t\t\t\tthis._contentService.show();\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tthis._focusMonitor.stopMonitoring(this._el);\n\t}\n}\n","import { type AfterContentInit, contentChild, Directive } from '@angular/core';\nimport { BrnHoverCardContent, BrnHoverCardContentService, BrnHoverCardTrigger } from './brn-hover-card-content.service';\n\n@Directive({\n\tselector: '[brnHoverCard],brn-hover-card',\n\tproviders: [BrnHoverCardContentService],\n})\nexport class BrnHoverCard implements AfterContentInit {\n\tprivate readonly _trigger = contentChild(BrnHoverCardTrigger);\n\tprivate readonly _content = contentChild(BrnHoverCardContent);\n\n\tpublic ngAfterContentInit() {\n\t\tif (!this._trigger() || !this._content()) return;\n\t\tthis._trigger()?.mutableBrnHoverCardTriggerFor().set(this._content());\n\t}\n}\n","import { BrnHoverCard } from './lib/brn-hover-card';\nimport { BrnHoverCardContent, BrnHoverCardTrigger } from './lib/brn-hover-card-content.service';\n\nexport * from './lib/brn-hover-card';\nexport * from './lib/brn-hover-card-content.service';\nexport * from './lib/brn-hover-card.token';\n\nexport const BrnHoverCardImports = [BrnHoverCard, BrnHoverCardContent, BrnHoverCardTrigger] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-hover-card.mjs","sources":["../../../../libs/brain/hover-card/src/lib/brn-hover-card.token.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card-content.service.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card.ts","../../../../libs/brain/hover-card/src/index.ts","../../../../libs/brain/hover-card/src/spartan-ng-brain-hover-card.ts"],"sourcesContent":["import { inject, InjectionToken, type ValueProvider } from '@angular/core';\n\nexport interface BrnHoverCardDefaultOptions {\n\tshowDelay: number;\n\thideDelay: number;\n\tanimationDelay: number;\n\tsideOffset: number;\n\talign: 'top' | 'bottom';\n}\n\nexport const defaultOptions: BrnHoverCardDefaultOptions = {\n\tshowDelay: 300,\n\thideDelay: 500,\n\tanimationDelay: 100,\n\tsideOffset: 5,\n\talign: 'bottom',\n};\n\nconst BRN_HOVER_CARD_DEFAULT_OPTIONS = new InjectionToken<BrnHoverCardDefaultOptions>(\n\t'brn-hover-card-default-options',\n\t{\n\t\tprovidedIn: 'root',\n\t\tfactory: () => defaultOptions,\n\t},\n);\n\nexport function provideBrnHoverCardDefaultOptions(options: Partial<BrnHoverCardDefaultOptions>): ValueProvider {\n\treturn { provide: BRN_HOVER_CARD_DEFAULT_OPTIONS, useValue: { ...defaultOptions, ...options } };\n}\n\nexport function injectBrnHoverCardDefaultOptions(): BrnHoverCardDefaultOptions {\n\treturn inject(BRN_HOVER_CARD_DEFAULT_OPTIONS, { optional: true }) ?? defaultOptions;\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { NumberInput } from '@angular/cdk/coercion';\nimport {\n\ttype ConnectedOverlayPositionChange,\n\ttype ConnectedPosition,\n\ttype FlexibleConnectedPositionStrategy,\n\tOverlay,\n\ttype OverlayConfig,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjectable,\n\tinput,\n\tNgZone,\n\tnumberAttribute,\n\ttype OnDestroy,\n\ttype OnInit,\n\ttype Signal,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport {\n\tcreateHoverObservable,\n\ttype ExposesSide,\n\ttype ExposesState,\n\tprovideExposedSideProviderExisting,\n\tprovideExposesStateProviderExisting,\n} from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, merge, type Observable, of, Subject } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, share, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { injectBrnHoverCardDefaultOptions } from './brn-hover-card.token';\n\n@Directive({\n\tselector: '[brnHoverCardContent]',\n\texportAs: 'brnHoverCardContent',\n\tproviders: [\n\t\tprovideExposedSideProviderExisting(() => BrnHoverCardContent),\n\t\tprovideExposesStateProviderExisting(() => BrnHoverCardContent),\n\t],\n})\nexport class BrnHoverCardContent implements ExposesState, ExposesSide {\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tpublic readonly state = this._contentService.state;\n\tpublic readonly side = this._contentService.side;\n\tpublic readonly template = inject(TemplateRef);\n}\n\n/**\n * We are building on shoulders of giants here and use the implementation provided by the incredible TaigaUI\n * team: https://github.com/taiga-family/taiga-ui/blob/main/projects/core/directives/dropdown/dropdown-hover.directive.ts\n * Check them out! Give them a try! Leave a star! Their work is incredible!\n */\n\nexport type BrnHoverCardOptions = Partial<\n\t{\n\t\tattachTo: ElementRef;\n\t\tattachPositions: ConnectedPosition[];\n\t\talign: 'top' | 'bottom' | 'left' | 'right';\n\t\tsideOffset: number;\n\t} & OverlayConfig\n>;\n\nconst topFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n];\nconst bottomFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\nconst leftFirstPositions: ConnectedPosition[] = [\n\t// left side\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 1: right (opposite horizontal)\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 2: bottom (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t// Fallback 3: top (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\nconst rightFirstPositions: ConnectedPosition[] = [\n\t// right side\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 1: left (opposite horizontal)\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 2: bottom (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t// Fallback 3: top (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\nconst POSITION_MAP: Record<'top' | 'bottom' | 'left' | 'right', ConnectedPosition[]> = {\n\ttop: topFirstPositions,\n\tbottom: bottomFirstPositions,\n\tleft: leftFirstPositions,\n\tright: rightFirstPositions,\n};\n\n@Injectable()\nexport class BrnHoverCardContentService {\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _directionality = inject(Directionality);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\tprivate readonly _state = signal<'open' | 'closed'>('closed');\n\n\tprivate _config: BrnHoverCardOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _positionChangesObservables$ = new BehaviorSubject<\n\t\tObservable<ConnectedOverlayPositionChange> | undefined\n\t>(undefined);\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tpublic readonly positionChanges$: Observable<ConnectedOverlayPositionChange> = this._positionChangesObservables$.pipe(\n\t\tswitchMap((positionChangeObservable) => (positionChangeObservable ? positionChangeObservable : of(undefined))),\n\t\tfilter((change): change is NonNullable<ConnectedOverlayPositionChange> => change !== undefined && change !== null),\n\t);\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable ? overlayHoveredObservable : of(false))),\n\t);\n\n\tpublic readonly state = this._state.asReadonly();\n\tpublic readonly side: Signal<'top' | 'bottom' | 'left' | 'right'> = toSignal(\n\t\tthis.positionChanges$.pipe(\n\t\t\tmap<ConnectedOverlayPositionChange, 'top' | 'bottom' | 'left' | 'right'>((change) =>\n\t\t\t\t// todo: better translation or adjusting hlm to take that into account\n\t\t\t\tchange.connectionPair.originY === 'center'\n\t\t\t\t\t? change.connectionPair.originX === 'start'\n\t\t\t\t\t\t? 'left'\n\t\t\t\t\t\t: 'right'\n\t\t\t\t\t: change.connectionPair.originY,\n\t\t\t),\n\t\t),\n\t\t{ initialValue: 'bottom' },\n\t);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst direction = this._directionality.valueSignal();\n\t\t\tuntracked(() => this._overlayRef?.setDirection(direction));\n\t\t});\n\t}\n\n\tpublic setConfig(config: BrnHoverCardOptions) {\n\t\tthis._config = config;\n\t\tif (config.attachTo) {\n\t\t\tconst align = config.align ?? 'bottom';\n\t\t\tconst positions = config.attachPositions ?? POSITION_MAP[align];\n\n\t\t\tthis._positionStrategy = this._psBuilder.flexibleConnectedTo(config.attachTo).withPositions(positions);\n\n\t\t\tconst offset = config.sideOffset ?? 0;\n\t\t\tif (align === 'left' || align === 'right') {\n\t\t\t\tthis._positionStrategy.withDefaultOffsetX(align === 'left' ? -offset : offset);\n\t\t\t} else {\n\t\t\t\tthis._positionStrategy.withDefaultOffsetY(align === 'top' ? -offset : offset);\n\t\t\t}\n\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t\tthis._positionChangesObservables$.next(this._positionStrategy.positionChanges);\n\t\t}\n\t\tthis._config = { ...this._config, direction: this._directionality.valueSignal() };\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown> | BrnHoverCardContent, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value instanceof TemplateRef ? value : value.template, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic setState(newState: 'open' | 'closed') {\n\t\tthis._state.set(newState);\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$).pipe(map((e) => e.hover)),\n\t\t);\n\t}\n\n\tpublic hide() {\n\t\tthis._overlayRef?.detach();\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t}\n}\n\n@Directive({\n\tselector: '[brnHoverCardTrigger]:not(ng-container),[brnHoverCardTriggerFor]:not(ng-container)',\n\texportAs: 'brnHoverCardTrigger',\n})\nexport class BrnHoverCardTrigger implements OnInit, OnDestroy {\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\n\tpublic readonly focused$: Observable<boolean> = this._focusMonitor.monitor(this._el).pipe(map((e) => e !== null));\n\n\tpublic readonly hovered$: Observable<boolean> = merge(\n\t\tfromEvent(this._el.nativeElement, 'click').pipe(map(() => false)),\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$).pipe(map((e) => e.hover)),\n\t\tthis._contentService.hovered$,\n\t\tthis.focused$,\n\t).pipe(distinctUntilChanged());\n\tpublic readonly showing$: Observable<boolean> = this.hovered$.pipe(\n\t\t// we set the state to open here because we are about to open show the content\n\t\ttap((visible) => visible && this._contentService.setState('open')),\n\t\tswitchMap((visible) => {\n\t\t\t// we are delaying based on the configure-able input\n\t\t\treturn of(visible).pipe(delay(visible ? this.showDelay() : this.hideDelay()));\n\t\t}),\n\t\tswitchMap((visible) => {\n\t\t\t// don't do anything when we are in the process of showing the content\n\t\t\tif (visible) return of(visible);\n\t\t\t// we set the state to closed here to trigger any animations for the element leaving\n\t\t\tthis._contentService.setState('closed');\n\t\t\t// then delay to wait for the leaving animation to finish\n\t\t\treturn of(visible).pipe(delay(this.animationDelay()));\n\t\t}),\n\t\tdistinctUntilChanged(),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tprivate readonly _defaultOptions = injectBrnHoverCardDefaultOptions();\n\tpublic readonly showDelay = input<number, NumberInput>(this._defaultOptions.showDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly hideDelay = input<number, NumberInput>(this._defaultOptions.hideDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly animationDelay = input<number, NumberInput>(this._defaultOptions.animationDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly sideOffset = input<number, NumberInput>(this._defaultOptions.sideOffset, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly align = input<'top' | 'bottom' | 'left' | 'right'>(this._defaultOptions.align);\n\n\tpublic readonly brnHoverCardTriggerFor = input<TemplateRef<unknown> | BrnHoverCardContent | undefined>(undefined);\n\tpublic readonly mutableBrnHoverCardTriggerFor = computed(() => signal(this.brnHoverCardTriggerFor()));\n\tprivate readonly _brnHoverCardTriggerForState = computed(() => this.mutableBrnHoverCardTriggerFor()());\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._brnHoverCardTriggerForState();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({ attachTo: this._el, align: this.align(), sideOffset: this.sideOffset() });\n\t\tthis.showing$.subscribe((isHovered) => {\n\t\t\tif (isHovered) {\n\t\t\t\tthis._contentService.show();\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tthis._focusMonitor.stopMonitoring(this._el);\n\t}\n}\n","import { type AfterContentInit, contentChild, Directive } from '@angular/core';\nimport { BrnHoverCardContent, BrnHoverCardContentService, BrnHoverCardTrigger } from './brn-hover-card-content.service';\n\n@Directive({\n\tselector: '[brnHoverCard],brn-hover-card',\n\tproviders: [BrnHoverCardContentService],\n})\nexport class BrnHoverCard implements AfterContentInit {\n\tprivate readonly _trigger = contentChild(BrnHoverCardTrigger);\n\tprivate readonly _content = contentChild(BrnHoverCardContent);\n\n\tpublic ngAfterContentInit() {\n\t\tif (!this._trigger() || !this._content()) return;\n\t\tthis._trigger()?.mutableBrnHoverCardTriggerFor().set(this._content());\n\t}\n}\n","import { BrnHoverCard } from './lib/brn-hover-card';\nimport { BrnHoverCardContent, BrnHoverCardTrigger } from './lib/brn-hover-card-content.service';\n\nexport * from './lib/brn-hover-card';\nexport * from './lib/brn-hover-card-content.service';\nexport * from './lib/brn-hover-card.token';\n\nexport const BrnHoverCardImports = [BrnHoverCard, BrnHoverCardContent, BrnHoverCardTrigger] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { Directionality } from '@angular/cdk/bidi';
1
2
  import * as i0 from '@angular/core';
2
3
  import { input, inject, ElementRef, numberAttribute, booleanAttribute, signal, computed, Directive, contentChildren, output, model, DOCUMENT, NgZone, afterNextRender } from '@angular/core';
3
4
 
@@ -64,6 +65,8 @@ class BrnResizableGroup {
64
65
  id = input(`brn-resizable-group-${++nextId}`, ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
65
66
  /** Host element reference. */
66
67
  _el = inject((ElementRef));
68
+ /** Layout direction, used to mirror horizontal resizing under RTL. */
69
+ _dir = inject(Directionality);
67
70
  /** Group orientation */
68
71
  direction = input('horizontal', ...(ngDevMode ? [{ debugName: "direction" }] : /* istanbul ignore next */ []));
69
72
  /** @internal Access all the panels within the group */
@@ -109,9 +112,12 @@ class BrnResizableGroup {
109
112
  this.dragStart.emit();
110
113
  const startPosition = this._getEventPosition(event);
111
114
  const startSizes = [...sizes];
115
+ // Horizontal resizing is mirrored under RTL: the panel order is reversed, so the pixel
116
+ // delta is inverted in _handleResize to keep the handle tracking the pointer correctly.
117
+ const isRtl = this.direction() === 'horizontal' && this._dir.valueSignal() === 'rtl';
112
118
  const handleMove = (moveEvent) => {
113
119
  this._zone.runOutsideAngular(() => {
114
- this._handleResize(moveEvent, handleIndex, startPosition, startSizes);
120
+ this._handleResize(moveEvent, handleIndex, startPosition, startSizes, isRtl);
115
121
  });
116
122
  };
117
123
  const handleEnd = () => {
@@ -129,9 +135,9 @@ class BrnResizableGroup {
129
135
  this._document.addEventListener('touchend', handleEnd);
130
136
  });
131
137
  }
132
- _handleResize(event, handleIndex, startPosition, startSizes) {
138
+ _handleResize(event, handleIndex, startPosition, startSizes, isRtl = false) {
133
139
  const currentPosition = this._getEventPosition(event);
134
- const delta = currentPosition - startPosition;
140
+ const delta = (currentPosition - startPosition) * (isRtl ? -1 : 1);
135
141
  const containerSize = this._getContainerSize();
136
142
  const deltaPercentage = (delta / containerSize) * 100;
137
143
  const newSizes = [...startSizes];
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-resizable.mjs","sources":["../../../../libs/brain/resizable/src/lib/brn-resizable-panel.ts","../../../../libs/brain/resizable/src/lib/brn-resizable-group.ts","../../../../libs/brain/resizable/src/lib/brn-resizable-handle.ts","../../../../libs/brain/resizable/src/spartan-ng-brain-resizable.ts"],"sourcesContent":["import { BooleanInput, type NumberInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tcomputed,\n\tDirective,\n\tElementRef,\n\tinject,\n\tinput,\n\tnumberAttribute,\n\tsignal,\n} from '@angular/core';\nimport { BrnResizableGroup } from './brn-resizable-group';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: 'brn-resizable-panel, [brnResizablePanel]',\n\texportAs: 'brnResizablePanel',\n\thost: {\n\t\t'[attr.data-panel-group-id]': '_panelGroup.id()',\n\t\t'[attr.data-panel-id]': 'id()',\n\t\t'[attr.data-panel-size]': '_panelSize()',\n\t\t'[id]': 'id()',\n\t\t'[style.flex]': '_flex()',\n\t\t'[style.overflow]': '\"hidden\"',\n\t\t'data-panel': '',\n\t\t'data-slot': 'resizable-panel',\n\t},\n})\nexport class BrnResizablePanel {\n\t/** Unique ID for the panel. */\n\tpublic readonly id = input<string>(`brn-resizable-panel-${++nextId}`);\n\n\t/** Reference to the parent {@link BrnResizableGroup}. */\n\tprotected readonly _panelGroup = inject(BrnResizableGroup);\n\n\t/** Host DOM element reference. */\n\tpublic readonly el = inject(ElementRef<HTMLElement>);\n\n\t/**\n\t * The default size of the panel (percentage of container space).\n\t * - `undefined` → group decides initial size.\n\t * - Number → interpreted as percentage (0–100).\n\t */\n\tpublic readonly defaultSize = input<number, NumberInput>(undefined, { transform: numberAttribute });\n\n\t/** The minimum size this panel can shrink to (percentage). */\n\n\tpublic readonly minSize = input<number, NumberInput>(0, { transform: numberAttribute });\n\n\t/**\t The maximum size this panel can grow to (percentage). */\n\tpublic readonly maxSize = input<number, NumberInput>(100, { transform: numberAttribute });\n\n\t/** Whether this panel can be collapsed entirely. */\n\tpublic readonly collapsible = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n\t/** Reactive signal holding the current size of the panel. */\n\tprotected readonly _panelSize = signal<number>(100);\n\n\t/**\n\t * CSS flex style for this panel, derived from its current size.\n\t * Format: `\"flex-grow flex-shrink flex-basis\"`.\n\t *\n\t * Example: `\"25 1 0\"` means 25% width (or height in vertical layout).\n\t */\n\tprotected readonly _flex = computed(() => `${this._panelSize()} 1 0`);\n\n\t/**\n\t * Sets the size of the panel.\n\t * @param size New size (percentage of container space).\n\t */\n\tpublic setSize(size: number) {\n\t\tthis._panelSize.set(size);\n\t}\n}\n","import {\n\tafterNextRender,\n\tcontentChildren,\n\tDirective,\n\tDOCUMENT,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tNgZone,\n\toutput,\n} from '@angular/core';\nimport { BrnResizablePanel } from './brn-resizable-panel';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: 'brn-resizable-group, [brnResizableGroup]',\n\texportAs: 'brnResizableGroup',\n\thost: {\n\t\t'[attr.data-panel-group-direction]': 'direction()',\n\t\t'[attr.data-panel-group-id]': 'id()',\n\t\t'[id]': 'id()',\n\t\t'data-panel-group': '',\n\t\t'data-slot': 'resizable-panel-group',\n\t},\n})\nexport class BrnResizableGroup {\n\t/** The id of the BrnResizableGroup */\n\tpublic readonly id = input<string>(`brn-resizable-group-${++nextId}`);\n\n\t/** Host element reference. */\n\tprivate readonly _el = inject(ElementRef<HTMLElement>);\n\n\t/** Group orientation */\n\tpublic readonly direction = input<'horizontal' | 'vertical'>('horizontal');\n\n\t/** @internal Access all the panels within the group */\n\tpublic readonly panels = contentChildren(BrnResizablePanel);\n\n\t/** event when resize starts */\n\tpublic readonly dragStart = output<void>();\n\n\t/** event when resize ends */\n\tpublic readonly dragEnd = output<void>();\n\n\t/** Resize panel group to the specified layout ([1 - 100, ...]). */\n\tpublic readonly layout = model<number[]>([]);\n\n\t/** Called when group layout changes */\n\tpublic readonly layoutChanged = output<number[]>();\n\n\tprivate readonly _document = inject(DOCUMENT);\n\n\tprivate readonly _zone = inject(NgZone);\n\n\tprivate _resizeRaf: number | null = null;\n\n\tprivate _pendingSizes: number[] | null = null;\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis._initializePanelSizes();\n\t\t});\n\t}\n\n\tprivate _initializePanelSizes(): void {\n\t\tconst panels = this.panels();\n\t\tconst totalPanels = panels.length;\n\n\t\tif (totalPanels === 0) return;\n\n\t\tconst sizes: number[] = [];\n\n\t\tpanels.forEach((panel, index) => {\n\t\t\tconst defaultSize = panel.defaultSize() ?? this.layout()[index];\n\t\t\tconst size = defaultSize !== undefined ? defaultSize : 100 / totalPanels;\n\t\t\tsizes.push(size);\n\t\t\tpanel.setSize(size);\n\t\t});\n\n\t\tif (this.layout().toString() !== sizes.toString()) {\n\t\t\tthis._setLayout(sizes);\n\t\t}\n\t}\n\n\tpublic startResize(handleIndex: number, event: MouseEvent | TouchEvent): void {\n\t\tevent.preventDefault();\n\n\t\tconst cursor = this.direction() === 'vertical' ? 'ns-resize' : 'ew-resize';\n\t\tthis._document.body.style.cursor = `${cursor}`;\n\t\tconst sizes = [...this.layout()];\n\t\tthis.dragStart.emit();\n\n\t\tconst startPosition = this._getEventPosition(event);\n\t\tconst startSizes = [...sizes];\n\n\t\tconst handleMove = (moveEvent: MouseEvent | TouchEvent) => {\n\t\t\tthis._zone.runOutsideAngular(() => {\n\t\t\t\tthis._handleResize(moveEvent, handleIndex, startPosition, startSizes);\n\t\t\t});\n\t\t};\n\n\t\tconst handleEnd = () => {\n\t\t\tthis._zone.run(() => this._endResize());\n\n\t\t\tthis._document.body.style.cursor = 'default';\n\t\t\tthis._document.removeEventListener('mousemove', handleMove);\n\t\t\tthis._document.removeEventListener('touchmove', handleMove);\n\t\t\tthis._document.removeEventListener('mouseup', handleEnd);\n\t\t\tthis._document.removeEventListener('touchend', handleEnd);\n\t\t};\n\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tthis._document.addEventListener('mousemove', handleMove);\n\t\t\tthis._document.addEventListener('touchmove', handleMove);\n\t\t\tthis._document.addEventListener('mouseup', handleEnd);\n\t\t\tthis._document.addEventListener('touchend', handleEnd);\n\t\t});\n\t}\n\n\tprivate _handleResize(\n\t\tevent: MouseEvent | TouchEvent,\n\t\thandleIndex: number,\n\t\tstartPosition: number,\n\t\tstartSizes: number[],\n\t): void {\n\t\tconst currentPosition = this._getEventPosition(event);\n\t\tconst delta = currentPosition - startPosition;\n\t\tconst containerSize = this._getContainerSize();\n\t\tconst deltaPercentage = (delta / containerSize) * 100;\n\n\t\tconst newSizes = [...startSizes];\n\t\tconst panels = this.panels();\n\n\t\tconst leftPanel = panels[handleIndex];\n\t\tconst rightPanel = panels[handleIndex + 1];\n\n\t\tif (!leftPanel || !rightPanel) return;\n\n\t\tconst leftMin = leftPanel.minSize();\n\t\tconst leftMax = leftPanel.maxSize();\n\t\tconst rightMin = rightPanel.minSize();\n\t\tconst rightMax = rightPanel.maxSize();\n\n\t\tlet newLeftSize = startSizes[handleIndex] + deltaPercentage;\n\t\tlet newRightSize = startSizes[handleIndex + 1] - deltaPercentage;\n\n\t\tnewLeftSize = Math.max(leftMin, Math.min(leftMax, newLeftSize));\n\t\tnewRightSize = Math.max(rightMin, Math.min(rightMax, newRightSize));\n\n\t\tconst totalSize = newLeftSize + newRightSize;\n\t\tconst originalTotal = startSizes[handleIndex] + startSizes[handleIndex + 1];\n\n\t\tif (Math.abs(totalSize - originalTotal) < 0.01) {\n\t\t\tnewSizes[handleIndex] = newLeftSize;\n\t\t\tnewSizes[handleIndex + 1] = newRightSize;\n\n\t\t\t// batch update\n\t\t\tthis._queueResize(newSizes);\n\t\t}\n\t}\n\n\tprivate _queueResize(sizes: number[]): void {\n\t\tthis._pendingSizes = sizes;\n\n\t\tif (this._resizeRaf !== null) return;\n\n\t\tthis._resizeRaf = requestAnimationFrame(() => {\n\t\t\tthis._resizeRaf = null;\n\t\t\tif (this._pendingSizes) {\n\t\t\t\tthis._setLayout(this._pendingSizes);\n\t\t\t\tthis.updatePanelStyles();\n\t\t\t\tthis._pendingSizes = null;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _endResize(): void {\n\t\tif (this._resizeRaf !== null) {\n\t\t\tcancelAnimationFrame(this._resizeRaf);\n\t\t\tthis._resizeRaf = null;\n\t\t\tthis._pendingSizes = null;\n\t\t}\n\t\tthis.dragEnd.emit();\n\t}\n\n\tpublic updatePanelStyles(): void {\n\t\tconst panels = this.panels();\n\t\tconst sizes = this.layout();\n\n\t\tpanels.forEach((panel, index) => {\n\t\t\tconst size = sizes[index];\n\t\t\tif (size !== undefined) {\n\t\t\t\tpanel.setSize(size);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _getEventPosition(event: MouseEvent | TouchEvent): number {\n\t\tconst layout = this.direction();\n\t\tif (event instanceof MouseEvent) {\n\t\t\treturn layout === 'vertical' ? event.clientY : event.clientX;\n\t\t} else {\n\t\t\tconst touch = event.touches[0];\n\t\t\treturn layout === 'vertical' ? touch.clientY : touch.clientX;\n\t\t}\n\t}\n\n\tprivate _getContainerSize(): number {\n\t\tconst element = this._el.nativeElement as HTMLElement;\n\t\tconst layout = this.direction();\n\t\treturn layout === 'vertical' ? element.offsetHeight : element.offsetWidth;\n\t}\n\n\tpublic collapsePanel(index: number): void {\n\t\tconst panels = this.panels();\n\t\tconst panel = panels[index];\n\n\t\tif (!panel || !panel.collapsible()) return;\n\n\t\tconst sizes = [...this.layout()];\n\t\tconst isCollapsed = sizes[index] === 0;\n\n\t\tif (isCollapsed) {\n\t\t\tconst panelDefaultSize = panel.defaultSize();\n\t\t\tconst defaultSize = panelDefaultSize !== undefined ? panelDefaultSize / panels.length : 100 / panels.length;\n\t\t\tsizes[index] = defaultSize;\n\n\t\t\tconst totalOthers = sizes.reduce((sum, size, i) => (i !== index ? sum + size : sum), 0);\n\t\t\tconst scale = (100 - defaultSize) / totalOthers;\n\n\t\t\tsizes.forEach((size, i) => {\n\t\t\t\tif (i !== index) {\n\t\t\t\t\tsizes[i] = size * scale;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst collapsedSize = sizes[index];\n\t\t\tsizes[index] = 0;\n\n\t\t\tconst totalOthers = sizes.reduce((sum, size, i) => (i !== index ? sum + size : sum), 0);\n\t\t\tconst scale = (totalOthers + collapsedSize) / totalOthers;\n\n\t\t\tsizes.forEach((size, i) => {\n\t\t\t\tif (i !== index) {\n\t\t\t\t\tsizes[i] = size * scale;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._setLayout(sizes);\n\t\tthis.updatePanelStyles();\n\t}\n\n\tprivate _setLayout(sizes: number[]): void {\n\t\tthis.layout.set(sizes);\n\t\tthis.layoutChanged.emit(sizes);\n\t}\n}\n","import { type BooleanInput } from '@angular/cdk/coercion';\nimport { afterNextRender, booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnResizableGroup } from './brn-resizable-group';\n\n@Directive({\n\tselector: 'brn-resizable-handle, [brnResizeHandle]',\n\texportAs: 'brnResizableHandle',\n\thost: {\n\t\t'[attr.data-layout]': '_layout()',\n\t\t'[attr.tabindex]': 'disabled() ? null : 0',\n\t\t'[attr.role]': '\"separator\"',\n\t\t'[attr.data-panel-group-direction]': '_direction()',\n\t\t'[attr.aria-orientation]': '_layout() === \"vertical\" ? \"horizontal\" : \"vertical\"',\n\t\t'[attr.aria-disabled]': 'disabled()',\n\t\t'(mousedown)': '_handleMouseDown($event)',\n\t\t'(keydown)': '_handleKeyDown($event)',\n\t},\n})\nexport class BrnResizableHandle {\n\t/** Parent resizable group. */\n\tprivate readonly _resizable = inject(BrnResizableGroup);\n\n\t/** Host element reference. */\n\tprivate readonly _el = inject(ElementRef<HTMLElement>);\n\n\t/** Whether a visual handle is rendered inside the separator. */\n\tpublic readonly withHandle = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/** Whether the handle is disabled (not interactive). */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/** The direction of the resizable group (`horizontal` or `vertical`). */\n\tprotected readonly _direction = this._resizable.direction;\n\n\t/** Computed layout orientation based on the parent group. */\n\tprotected readonly _layout = computed(() => this._resizable?.direction() || 'horizontal');\n\n\t/** Index of this handle relative to panels in the group. */\n\tprivate _handleIndex = 0;\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis._handleIndex = this._getHandleIndex();\n\n\t\t\tthis._el.nativeElement.onpointerdown = (e: PointerEvent) => {\n\t\t\t\tthis._el.nativeElement.setPointerCapture(e.pointerId);\n\t\t\t};\n\n\t\t\tthis._el.nativeElement.onpointerup = (e: PointerEvent) => {\n\t\t\t\tthis._el.nativeElement.releasePointerCapture(e.pointerId);\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate _getHandleIndex(): number {\n\t\tconst host = this._el.nativeElement;\n\t\tconst parent = host.parentElement;\n\t\tif (!parent) return -1;\n\n\t\t// Collect all panels under this group\n\t\tconst panels = Array.from(parent.querySelectorAll('[data-slot=\"resizable-panel\"]'));\n\n\t\t// Find the previous panel (the closest one before this handle)\n\t\tconst prevPanel = host.previousElementSibling;\n\t\tif (!prevPanel) return -1;\n\n\t\t// Return its index among all panels\n\t\treturn panels.indexOf(prevPanel as HTMLElement);\n\t}\n\n\tprotected _handleMouseDown(event: MouseEvent): void {\n\t\tif (this.disabled() || !this._resizable) return;\n\n\t\tthis._resizable.startResize(this._handleIndex, event);\n\t}\n\n\tprotected _handleKeyDown(event: KeyboardEvent): void {\n\t\tif (this.disabled()) return;\n\n\t\tconst panels = this._resizable.panels();\n\t\tconst handleIndex = this._handleIndex;\n\t\tconst layout = this._layout();\n\n\t\tlet delta = 0;\n\t\tconst step = event.shiftKey ? 10 : 1;\n\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tif (layout === 'horizontal') delta = -step;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tif (layout === 'horizontal') delta = step;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tif (layout === 'vertical') delta = -step;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tif (layout === 'vertical') delta = step;\n\t\t\t\tbreak;\n\t\t\tcase 'Home':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis._moveToExtreme(true);\n\t\t\t\treturn;\n\t\t\tcase 'End':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis._moveToExtreme(false);\n\t\t\t\treturn;\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (panels[handleIndex]?.collapsible() || panels[handleIndex + 1]?.collapsible()) {\n\t\t\t\t\tconst collapsibleIndex = panels[handleIndex]?.collapsible() ? handleIndex : handleIndex + 1;\n\t\t\t\t\tthis._resizable.collapsePanel(collapsibleIndex);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (delta !== 0) {\n\t\t\tevent.preventDefault();\n\t\t\tthis._adjustSizes(delta);\n\t\t}\n\t}\n\n\tprivate _getPanelContext() {\n\t\tconst panels = this._resizable.panels();\n\t\tconst li = this._handleIndex;\n\t\tconst ri = li + 1;\n\n\t\tconst left = panels[li];\n\t\tconst right = panels[ri];\n\t\tif (!left || !right) return null;\n\n\t\tconst sizes = [...this._resizable.layout()];\n\n\t\treturn {\n\t\t\tsizes,\n\t\t\tli,\n\t\t\tri,\n\t\t\tleft,\n\t\t\tright,\n\t\t\tleftMin: left.minSize(),\n\t\t\tleftMax: left.maxSize(),\n\t\t\trightMin: right.minSize(),\n\t\t\trightMax: right.maxSize(),\n\t\t};\n\t}\n\n\tprivate _adjustSizes(delta: number): void {\n\t\tconst ctx = this._getPanelContext();\n\t\tif (!ctx) return;\n\n\t\tlet newLeftSize = ctx.sizes[ctx.li] + delta;\n\t\tlet newRightSize = ctx.sizes[ctx.ri] - delta;\n\n\t\tnewLeftSize = Math.max(ctx.leftMin, Math.min(ctx.leftMax, newLeftSize));\n\t\tnewRightSize = Math.max(ctx.rightMin, Math.min(ctx.rightMax, newRightSize));\n\n\t\tconst totalSize = newLeftSize + newRightSize;\n\t\tconst originalTotal = ctx.sizes[ctx.li] + ctx.sizes[ctx.ri];\n\n\t\tif (Math.abs(totalSize - originalTotal) < 0.01) {\n\t\t\tctx.sizes[ctx.li] = newLeftSize;\n\t\t\tctx.sizes[ctx.ri] = newRightSize;\n\n\t\t\tthis._resizable.layout.set(ctx.sizes);\n\t\t\tthis._resizable.updatePanelStyles();\n\t\t}\n\t}\n\n\tprivate _moveToExtreme(toMin: boolean): void {\n\t\tconst ctx = this._getPanelContext();\n\t\tif (!ctx) return;\n\n\t\tconst totalSize = ctx.sizes[ctx.li] + ctx.sizes[ctx.ri];\n\n\t\tif (toMin) {\n\t\t\tctx.sizes[ctx.li] = ctx.leftMin;\n\t\t\tctx.sizes[ctx.ri] = Math.min(totalSize - ctx.leftMin, ctx.rightMax);\n\t\t} else {\n\t\t\tctx.sizes[ctx.li] = Math.min(totalSize - ctx.rightMin, ctx.leftMax);\n\t\t\tctx.sizes[ctx.ri] = ctx.rightMin;\n\t\t}\n\n\t\tthis._resizable.layout.set(ctx.sizes);\n\t\tthis._resizable.updatePanelStyles();\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-resizable.mjs","sources":["../../../../libs/brain/resizable/src/lib/brn-resizable-panel.ts","../../../../libs/brain/resizable/src/lib/brn-resizable-group.ts","../../../../libs/brain/resizable/src/lib/brn-resizable-handle.ts","../../../../libs/brain/resizable/src/spartan-ng-brain-resizable.ts"],"sourcesContent":["import { BooleanInput, type NumberInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tcomputed,\n\tDirective,\n\tElementRef,\n\tinject,\n\tinput,\n\tnumberAttribute,\n\tsignal,\n} from '@angular/core';\nimport { BrnResizableGroup } from './brn-resizable-group';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: 'brn-resizable-panel, [brnResizablePanel]',\n\texportAs: 'brnResizablePanel',\n\thost: {\n\t\t'[attr.data-panel-group-id]': '_panelGroup.id()',\n\t\t'[attr.data-panel-id]': 'id()',\n\t\t'[attr.data-panel-size]': '_panelSize()',\n\t\t'[id]': 'id()',\n\t\t'[style.flex]': '_flex()',\n\t\t'[style.overflow]': '\"hidden\"',\n\t\t'data-panel': '',\n\t\t'data-slot': 'resizable-panel',\n\t},\n})\nexport class BrnResizablePanel {\n\t/** Unique ID for the panel. */\n\tpublic readonly id = input<string>(`brn-resizable-panel-${++nextId}`);\n\n\t/** Reference to the parent {@link BrnResizableGroup}. */\n\tprotected readonly _panelGroup = inject(BrnResizableGroup);\n\n\t/** Host DOM element reference. */\n\tpublic readonly el = inject(ElementRef<HTMLElement>);\n\n\t/**\n\t * The default size of the panel (percentage of container space).\n\t * - `undefined` → group decides initial size.\n\t * - Number → interpreted as percentage (0–100).\n\t */\n\tpublic readonly defaultSize = input<number, NumberInput>(undefined, { transform: numberAttribute });\n\n\t/** The minimum size this panel can shrink to (percentage). */\n\n\tpublic readonly minSize = input<number, NumberInput>(0, { transform: numberAttribute });\n\n\t/**\t The maximum size this panel can grow to (percentage). */\n\tpublic readonly maxSize = input<number, NumberInput>(100, { transform: numberAttribute });\n\n\t/** Whether this panel can be collapsed entirely. */\n\tpublic readonly collapsible = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n\t/** Reactive signal holding the current size of the panel. */\n\tprotected readonly _panelSize = signal<number>(100);\n\n\t/**\n\t * CSS flex style for this panel, derived from its current size.\n\t * Format: `\"flex-grow flex-shrink flex-basis\"`.\n\t *\n\t * Example: `\"25 1 0\"` means 25% width (or height in vertical layout).\n\t */\n\tprotected readonly _flex = computed(() => `${this._panelSize()} 1 0`);\n\n\t/**\n\t * Sets the size of the panel.\n\t * @param size New size (percentage of container space).\n\t */\n\tpublic setSize(size: number) {\n\t\tthis._panelSize.set(size);\n\t}\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport {\n\tafterNextRender,\n\tcontentChildren,\n\tDirective,\n\tDOCUMENT,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tNgZone,\n\toutput,\n} from '@angular/core';\nimport { BrnResizablePanel } from './brn-resizable-panel';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: 'brn-resizable-group, [brnResizableGroup]',\n\texportAs: 'brnResizableGroup',\n\thost: {\n\t\t'[attr.data-panel-group-direction]': 'direction()',\n\t\t'[attr.data-panel-group-id]': 'id()',\n\t\t'[id]': 'id()',\n\t\t'data-panel-group': '',\n\t\t'data-slot': 'resizable-panel-group',\n\t},\n})\nexport class BrnResizableGroup {\n\t/** The id of the BrnResizableGroup */\n\tpublic readonly id = input<string>(`brn-resizable-group-${++nextId}`);\n\n\t/** Host element reference. */\n\tprivate readonly _el = inject(ElementRef<HTMLElement>);\n\n\t/** Layout direction, used to mirror horizontal resizing under RTL. */\n\tprivate readonly _dir = inject(Directionality);\n\n\t/** Group orientation */\n\tpublic readonly direction = input<'horizontal' | 'vertical'>('horizontal');\n\n\t/** @internal Access all the panels within the group */\n\tpublic readonly panels = contentChildren(BrnResizablePanel);\n\n\t/** event when resize starts */\n\tpublic readonly dragStart = output<void>();\n\n\t/** event when resize ends */\n\tpublic readonly dragEnd = output<void>();\n\n\t/** Resize panel group to the specified layout ([1 - 100, ...]). */\n\tpublic readonly layout = model<number[]>([]);\n\n\t/** Called when group layout changes */\n\tpublic readonly layoutChanged = output<number[]>();\n\n\tprivate readonly _document = inject(DOCUMENT);\n\n\tprivate readonly _zone = inject(NgZone);\n\n\tprivate _resizeRaf: number | null = null;\n\n\tprivate _pendingSizes: number[] | null = null;\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis._initializePanelSizes();\n\t\t});\n\t}\n\n\tprivate _initializePanelSizes(): void {\n\t\tconst panels = this.panels();\n\t\tconst totalPanels = panels.length;\n\n\t\tif (totalPanels === 0) return;\n\n\t\tconst sizes: number[] = [];\n\n\t\tpanels.forEach((panel, index) => {\n\t\t\tconst defaultSize = panel.defaultSize() ?? this.layout()[index];\n\t\t\tconst size = defaultSize !== undefined ? defaultSize : 100 / totalPanels;\n\t\t\tsizes.push(size);\n\t\t\tpanel.setSize(size);\n\t\t});\n\n\t\tif (this.layout().toString() !== sizes.toString()) {\n\t\t\tthis._setLayout(sizes);\n\t\t}\n\t}\n\n\tpublic startResize(handleIndex: number, event: MouseEvent | TouchEvent): void {\n\t\tevent.preventDefault();\n\n\t\tconst cursor = this.direction() === 'vertical' ? 'ns-resize' : 'ew-resize';\n\t\tthis._document.body.style.cursor = `${cursor}`;\n\t\tconst sizes = [...this.layout()];\n\t\tthis.dragStart.emit();\n\n\t\tconst startPosition = this._getEventPosition(event);\n\t\tconst startSizes = [...sizes];\n\t\t// Horizontal resizing is mirrored under RTL: the panel order is reversed, so the pixel\n\t\t// delta is inverted in _handleResize to keep the handle tracking the pointer correctly.\n\t\tconst isRtl = this.direction() === 'horizontal' && this._dir.valueSignal() === 'rtl';\n\n\t\tconst handleMove = (moveEvent: MouseEvent | TouchEvent) => {\n\t\t\tthis._zone.runOutsideAngular(() => {\n\t\t\t\tthis._handleResize(moveEvent, handleIndex, startPosition, startSizes, isRtl);\n\t\t\t});\n\t\t};\n\n\t\tconst handleEnd = () => {\n\t\t\tthis._zone.run(() => this._endResize());\n\n\t\t\tthis._document.body.style.cursor = 'default';\n\t\t\tthis._document.removeEventListener('mousemove', handleMove);\n\t\t\tthis._document.removeEventListener('touchmove', handleMove);\n\t\t\tthis._document.removeEventListener('mouseup', handleEnd);\n\t\t\tthis._document.removeEventListener('touchend', handleEnd);\n\t\t};\n\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tthis._document.addEventListener('mousemove', handleMove);\n\t\t\tthis._document.addEventListener('touchmove', handleMove);\n\t\t\tthis._document.addEventListener('mouseup', handleEnd);\n\t\t\tthis._document.addEventListener('touchend', handleEnd);\n\t\t});\n\t}\n\n\tprivate _handleResize(\n\t\tevent: MouseEvent | TouchEvent,\n\t\thandleIndex: number,\n\t\tstartPosition: number,\n\t\tstartSizes: number[],\n\t\tisRtl = false,\n\t): void {\n\t\tconst currentPosition = this._getEventPosition(event);\n\t\tconst delta = (currentPosition - startPosition) * (isRtl ? -1 : 1);\n\t\tconst containerSize = this._getContainerSize();\n\t\tconst deltaPercentage = (delta / containerSize) * 100;\n\n\t\tconst newSizes = [...startSizes];\n\t\tconst panels = this.panels();\n\n\t\tconst leftPanel = panels[handleIndex];\n\t\tconst rightPanel = panels[handleIndex + 1];\n\n\t\tif (!leftPanel || !rightPanel) return;\n\n\t\tconst leftMin = leftPanel.minSize();\n\t\tconst leftMax = leftPanel.maxSize();\n\t\tconst rightMin = rightPanel.minSize();\n\t\tconst rightMax = rightPanel.maxSize();\n\n\t\tlet newLeftSize = startSizes[handleIndex] + deltaPercentage;\n\t\tlet newRightSize = startSizes[handleIndex + 1] - deltaPercentage;\n\n\t\tnewLeftSize = Math.max(leftMin, Math.min(leftMax, newLeftSize));\n\t\tnewRightSize = Math.max(rightMin, Math.min(rightMax, newRightSize));\n\n\t\tconst totalSize = newLeftSize + newRightSize;\n\t\tconst originalTotal = startSizes[handleIndex] + startSizes[handleIndex + 1];\n\n\t\tif (Math.abs(totalSize - originalTotal) < 0.01) {\n\t\t\tnewSizes[handleIndex] = newLeftSize;\n\t\t\tnewSizes[handleIndex + 1] = newRightSize;\n\n\t\t\t// batch update\n\t\t\tthis._queueResize(newSizes);\n\t\t}\n\t}\n\n\tprivate _queueResize(sizes: number[]): void {\n\t\tthis._pendingSizes = sizes;\n\n\t\tif (this._resizeRaf !== null) return;\n\n\t\tthis._resizeRaf = requestAnimationFrame(() => {\n\t\t\tthis._resizeRaf = null;\n\t\t\tif (this._pendingSizes) {\n\t\t\t\tthis._setLayout(this._pendingSizes);\n\t\t\t\tthis.updatePanelStyles();\n\t\t\t\tthis._pendingSizes = null;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _endResize(): void {\n\t\tif (this._resizeRaf !== null) {\n\t\t\tcancelAnimationFrame(this._resizeRaf);\n\t\t\tthis._resizeRaf = null;\n\t\t\tthis._pendingSizes = null;\n\t\t}\n\t\tthis.dragEnd.emit();\n\t}\n\n\tpublic updatePanelStyles(): void {\n\t\tconst panels = this.panels();\n\t\tconst sizes = this.layout();\n\n\t\tpanels.forEach((panel, index) => {\n\t\t\tconst size = sizes[index];\n\t\t\tif (size !== undefined) {\n\t\t\t\tpanel.setSize(size);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _getEventPosition(event: MouseEvent | TouchEvent): number {\n\t\tconst layout = this.direction();\n\t\tif (event instanceof MouseEvent) {\n\t\t\treturn layout === 'vertical' ? event.clientY : event.clientX;\n\t\t} else {\n\t\t\tconst touch = event.touches[0];\n\t\t\treturn layout === 'vertical' ? touch.clientY : touch.clientX;\n\t\t}\n\t}\n\n\tprivate _getContainerSize(): number {\n\t\tconst element = this._el.nativeElement as HTMLElement;\n\t\tconst layout = this.direction();\n\t\treturn layout === 'vertical' ? element.offsetHeight : element.offsetWidth;\n\t}\n\n\tpublic collapsePanel(index: number): void {\n\t\tconst panels = this.panels();\n\t\tconst panel = panels[index];\n\n\t\tif (!panel || !panel.collapsible()) return;\n\n\t\tconst sizes = [...this.layout()];\n\t\tconst isCollapsed = sizes[index] === 0;\n\n\t\tif (isCollapsed) {\n\t\t\tconst panelDefaultSize = panel.defaultSize();\n\t\t\tconst defaultSize = panelDefaultSize !== undefined ? panelDefaultSize / panels.length : 100 / panels.length;\n\t\t\tsizes[index] = defaultSize;\n\n\t\t\tconst totalOthers = sizes.reduce((sum, size, i) => (i !== index ? sum + size : sum), 0);\n\t\t\tconst scale = (100 - defaultSize) / totalOthers;\n\n\t\t\tsizes.forEach((size, i) => {\n\t\t\t\tif (i !== index) {\n\t\t\t\t\tsizes[i] = size * scale;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst collapsedSize = sizes[index];\n\t\t\tsizes[index] = 0;\n\n\t\t\tconst totalOthers = sizes.reduce((sum, size, i) => (i !== index ? sum + size : sum), 0);\n\t\t\tconst scale = (totalOthers + collapsedSize) / totalOthers;\n\n\t\t\tsizes.forEach((size, i) => {\n\t\t\t\tif (i !== index) {\n\t\t\t\t\tsizes[i] = size * scale;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._setLayout(sizes);\n\t\tthis.updatePanelStyles();\n\t}\n\n\tprivate _setLayout(sizes: number[]): void {\n\t\tthis.layout.set(sizes);\n\t\tthis.layoutChanged.emit(sizes);\n\t}\n}\n","import { type BooleanInput } from '@angular/cdk/coercion';\nimport { afterNextRender, booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnResizableGroup } from './brn-resizable-group';\n\n@Directive({\n\tselector: 'brn-resizable-handle, [brnResizeHandle]',\n\texportAs: 'brnResizableHandle',\n\thost: {\n\t\t'[attr.data-layout]': '_layout()',\n\t\t'[attr.tabindex]': 'disabled() ? null : 0',\n\t\t'[attr.role]': '\"separator\"',\n\t\t'[attr.data-panel-group-direction]': '_direction()',\n\t\t'[attr.aria-orientation]': '_layout() === \"vertical\" ? \"horizontal\" : \"vertical\"',\n\t\t'[attr.aria-disabled]': 'disabled()',\n\t\t'(mousedown)': '_handleMouseDown($event)',\n\t\t'(keydown)': '_handleKeyDown($event)',\n\t},\n})\nexport class BrnResizableHandle {\n\t/** Parent resizable group. */\n\tprivate readonly _resizable = inject(BrnResizableGroup);\n\n\t/** Host element reference. */\n\tprivate readonly _el = inject(ElementRef<HTMLElement>);\n\n\t/** Whether a visual handle is rendered inside the separator. */\n\tpublic readonly withHandle = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/** Whether the handle is disabled (not interactive). */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/** The direction of the resizable group (`horizontal` or `vertical`). */\n\tprotected readonly _direction = this._resizable.direction;\n\n\t/** Computed layout orientation based on the parent group. */\n\tprotected readonly _layout = computed(() => this._resizable?.direction() || 'horizontal');\n\n\t/** Index of this handle relative to panels in the group. */\n\tprivate _handleIndex = 0;\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis._handleIndex = this._getHandleIndex();\n\n\t\t\tthis._el.nativeElement.onpointerdown = (e: PointerEvent) => {\n\t\t\t\tthis._el.nativeElement.setPointerCapture(e.pointerId);\n\t\t\t};\n\n\t\t\tthis._el.nativeElement.onpointerup = (e: PointerEvent) => {\n\t\t\t\tthis._el.nativeElement.releasePointerCapture(e.pointerId);\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate _getHandleIndex(): number {\n\t\tconst host = this._el.nativeElement;\n\t\tconst parent = host.parentElement;\n\t\tif (!parent) return -1;\n\n\t\t// Collect all panels under this group\n\t\tconst panels = Array.from(parent.querySelectorAll('[data-slot=\"resizable-panel\"]'));\n\n\t\t// Find the previous panel (the closest one before this handle)\n\t\tconst prevPanel = host.previousElementSibling;\n\t\tif (!prevPanel) return -1;\n\n\t\t// Return its index among all panels\n\t\treturn panels.indexOf(prevPanel as HTMLElement);\n\t}\n\n\tprotected _handleMouseDown(event: MouseEvent): void {\n\t\tif (this.disabled() || !this._resizable) return;\n\n\t\tthis._resizable.startResize(this._handleIndex, event);\n\t}\n\n\tprotected _handleKeyDown(event: KeyboardEvent): void {\n\t\tif (this.disabled()) return;\n\n\t\tconst panels = this._resizable.panels();\n\t\tconst handleIndex = this._handleIndex;\n\t\tconst layout = this._layout();\n\n\t\tlet delta = 0;\n\t\tconst step = event.shiftKey ? 10 : 1;\n\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tif (layout === 'horizontal') delta = -step;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tif (layout === 'horizontal') delta = step;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tif (layout === 'vertical') delta = -step;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tif (layout === 'vertical') delta = step;\n\t\t\t\tbreak;\n\t\t\tcase 'Home':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis._moveToExtreme(true);\n\t\t\t\treturn;\n\t\t\tcase 'End':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis._moveToExtreme(false);\n\t\t\t\treturn;\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (panels[handleIndex]?.collapsible() || panels[handleIndex + 1]?.collapsible()) {\n\t\t\t\t\tconst collapsibleIndex = panels[handleIndex]?.collapsible() ? handleIndex : handleIndex + 1;\n\t\t\t\t\tthis._resizable.collapsePanel(collapsibleIndex);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (delta !== 0) {\n\t\t\tevent.preventDefault();\n\t\t\tthis._adjustSizes(delta);\n\t\t}\n\t}\n\n\tprivate _getPanelContext() {\n\t\tconst panels = this._resizable.panels();\n\t\tconst li = this._handleIndex;\n\t\tconst ri = li + 1;\n\n\t\tconst left = panels[li];\n\t\tconst right = panels[ri];\n\t\tif (!left || !right) return null;\n\n\t\tconst sizes = [...this._resizable.layout()];\n\n\t\treturn {\n\t\t\tsizes,\n\t\t\tli,\n\t\t\tri,\n\t\t\tleft,\n\t\t\tright,\n\t\t\tleftMin: left.minSize(),\n\t\t\tleftMax: left.maxSize(),\n\t\t\trightMin: right.minSize(),\n\t\t\trightMax: right.maxSize(),\n\t\t};\n\t}\n\n\tprivate _adjustSizes(delta: number): void {\n\t\tconst ctx = this._getPanelContext();\n\t\tif (!ctx) return;\n\n\t\tlet newLeftSize = ctx.sizes[ctx.li] + delta;\n\t\tlet newRightSize = ctx.sizes[ctx.ri] - delta;\n\n\t\tnewLeftSize = Math.max(ctx.leftMin, Math.min(ctx.leftMax, newLeftSize));\n\t\tnewRightSize = Math.max(ctx.rightMin, Math.min(ctx.rightMax, newRightSize));\n\n\t\tconst totalSize = newLeftSize + newRightSize;\n\t\tconst originalTotal = ctx.sizes[ctx.li] + ctx.sizes[ctx.ri];\n\n\t\tif (Math.abs(totalSize - originalTotal) < 0.01) {\n\t\t\tctx.sizes[ctx.li] = newLeftSize;\n\t\t\tctx.sizes[ctx.ri] = newRightSize;\n\n\t\t\tthis._resizable.layout.set(ctx.sizes);\n\t\t\tthis._resizable.updatePanelStyles();\n\t\t}\n\t}\n\n\tprivate _moveToExtreme(toMin: boolean): void {\n\t\tconst ctx = this._getPanelContext();\n\t\tif (!ctx) return;\n\n\t\tconst totalSize = ctx.sizes[ctx.li] + ctx.sizes[ctx.ri];\n\n\t\tif (toMin) {\n\t\t\tctx.sizes[ctx.li] = ctx.leftMin;\n\t\t\tctx.sizes[ctx.ri] = Math.min(totalSize - ctx.leftMin, ctx.rightMax);\n\t\t} else {\n\t\t\tctx.sizes[ctx.li] = Math.min(totalSize - ctx.rightMin, ctx.leftMax);\n\t\t\tctx.sizes[ctx.ri] = ctx.rightMin;\n\t\t}\n\n\t\tthis._resizable.layout.set(ctx.sizes);\n\t\tthis._resizable.updatePanelStyles();\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spartan-ng/brain",
3
- "version": "0.0.1-alpha.709",
3
+ "version": "0.0.1-alpha.710",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/spartan-ng/spartan"
@@ -24,7 +24,7 @@ declare class BrnCollapsible {
24
24
  */
25
25
  toggle(): void;
26
26
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnCollapsible, never>;
27
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnCollapsible, "[brnCollapsible],brn-collapsible", never, { "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, never, true, never>;
27
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnCollapsible, "[brnCollapsible],brn-collapsible", ["brnCollapsible"], { "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, never, true, never>;
28
28
  }
29
29
 
30
30
  declare class BrnCollapsibleContent {
@@ -6,6 +6,7 @@ import * as _angular_core from '@angular/core';
6
6
  import { StaticProvider, ElementRef, TemplateRef, Signal, WritableSignal, ValueProvider, ViewContainerRef, InjectOptions } from '@angular/core';
7
7
  import * as _spartan_ng_brain_dialog from '@spartan-ng/brain/dialog';
8
8
  import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
9
+ import { Direction } from '@angular/cdk/bidi';
9
10
  import { Observable } from 'rxjs';
10
11
 
11
12
  type BrnDialogOptions = {
@@ -18,6 +19,7 @@ type BrnDialogOptions = {
18
19
  autoFocus: AutoFocusTarget | (Record<never, never> & string);
19
20
  backdropClass: string | string[];
20
21
  closeDelay: number;
22
+ direction?: Direction;
21
23
  closeOnBackdropClick: boolean;
22
24
  closeOnOutsidePointerEvents: boolean;
23
25
  disableClose: boolean;
@@ -40,6 +42,7 @@ declare class BrnDialog<TResult = unknown, TContext extends Record<string, unkno
40
42
  readonly positionBuilder: OverlayPositionBuilder;
41
43
  readonly ssos: ScrollStrategyOptions;
42
44
  private readonly _injector;
45
+ private readonly _directionality;
43
46
  protected readonly _defaultOptions: _spartan_ng_brain_dialog.BrnDialogDefaultOptions;
44
47
  private _context;
45
48
  readonly stateComputed: _angular_core.Signal<BrnDialogState>;
@@ -36,6 +36,7 @@ declare class BrnHoverCardContentService {
36
36
  private readonly _overlay;
37
37
  private readonly _zone;
38
38
  private readonly _psBuilder;
39
+ private readonly _directionality;
39
40
  private readonly _content;
40
41
  private readonly _state;
41
42
  private _config;
@@ -48,6 +49,7 @@ declare class BrnHoverCardContentService {
48
49
  readonly hovered$: Observable<boolean>;
49
50
  readonly state: Signal<"open" | "closed">;
50
51
  readonly side: Signal<'top' | 'bottom' | 'left' | 'right'>;
52
+ constructor();
51
53
  setConfig(config: BrnHoverCardOptions): void;
52
54
  setContent(value: TemplateRef<unknown> | BrnHoverCardContent, vcr: ViewContainerRef): void;
53
55
  setState(newState: 'open' | 'closed'): void;
@@ -44,6 +44,8 @@ declare class BrnResizableGroup {
44
44
  readonly id: _angular_core.InputSignal<string>;
45
45
  /** Host element reference. */
46
46
  private readonly _el;
47
+ /** Layout direction, used to mirror horizontal resizing under RTL. */
48
+ private readonly _dir;
47
49
  /** Group orientation */
48
50
  readonly direction: _angular_core.InputSignal<"horizontal" | "vertical">;
49
51
  /** @internal Access all the panels within the group */