@spartan-ng/brain 0.0.1-alpha.715 → 0.0.1-alpha.716

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.
@@ -11,13 +11,13 @@ class BrnAvatarImage {
11
11
  }
12
12
  canShow = computed(() => this._loaded(), ...(ngDevMode ? [{ debugName: "canShow" }] : /* istanbul ignore next */ []));
13
13
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnAvatarImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnAvatarImage, isStandalone: true, selector: "img[brnAvatarImage]", host: { listeners: { "load": "_onLoad()", "error": "_onError()" } }, exportAs: ["avatarImage"], ngImport: i0 });
14
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnAvatarImage, isStandalone: true, selector: "img[brnAvatarImage]", host: { listeners: { "load": "_onLoad()", "error": "_onError()" } }, exportAs: ["brnAvatarImage"], ngImport: i0 });
15
15
  }
16
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnAvatarImage, decorators: [{
17
17
  type: Directive,
18
18
  args: [{
19
19
  selector: 'img[brnAvatarImage]',
20
- exportAs: 'avatarImage',
20
+ exportAs: 'brnAvatarImage',
21
21
  host: {
22
22
  '(load)': '_onLoad()',
23
23
  '(error)': '_onError()',
@@ -53,13 +53,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
53
53
 
54
54
  class BrnAvatarFallback {
55
55
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnAvatarFallback, deps: [], target: i0.ɵɵFactoryTarget.Directive });
56
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnAvatarFallback, isStandalone: true, selector: "[brnAvatarFallback]", exportAs: ["avatarFallback"], ngImport: i0 });
56
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnAvatarFallback, isStandalone: true, selector: "[brnAvatarFallback]", exportAs: ["brnAvatarFallback"], ngImport: i0 });
57
57
  }
58
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnAvatarFallback, decorators: [{
59
59
  type: Directive,
60
60
  args: [{
61
61
  selector: '[brnAvatarFallback]',
62
- exportAs: 'avatarFallback',
62
+ exportAs: 'brnAvatarFallback',
63
63
  }]
64
64
  }] });
65
65
 
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-avatar.mjs","sources":["../../../../libs/brain/avatar/src/lib/image/brn-avatar-image.ts","../../../../libs/brain/avatar/src/lib/brn-avatar.ts","../../../../libs/brain/avatar/src/lib/fallback/brn-avatar-fallback.ts","../../../../libs/brain/avatar/src/lib/util/hex-color-for.ts","../../../../libs/brain/avatar/src/lib/util/initials.pipe.ts","../../../../libs/brain/avatar/src/lib/util/is-bright.ts","../../../../libs/brain/avatar/src/index.ts","../../../../libs/brain/avatar/src/spartan-ng-brain-avatar.ts"],"sourcesContent":["import { Directive, computed, signal } from '@angular/core';\n\n@Directive({\n\tselector: 'img[brnAvatarImage]',\n\texportAs: 'avatarImage',\n\thost: {\n\t\t'(load)': '_onLoad()',\n\t\t'(error)': '_onError()',\n\t},\n})\nexport class BrnAvatarImage {\n\tprivate readonly _loaded = signal(false);\n\n\tprotected _onError() {\n\t\tthis._loaded.set(false);\n\t}\n\n\tprotected _onLoad() {\n\t\tthis._loaded.set(true);\n\t}\n\n\tpublic readonly canShow = computed(() => this._loaded());\n}\n","import { ChangeDetectionStrategy, Component, contentChild } from '@angular/core';\nimport { BrnAvatarImage } from './image';\n\n@Component({\n\tselector: 'brn-avatar',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t@if (_image()?.canShow()) {\n\t\t\t<ng-content select=\"[brnAvatarImage]\" />\n\t\t} @else {\n\t\t\t<ng-content select=\"[brnAvatarFallback]\" />\n\t\t}\n\t`,\n})\nexport class BrnAvatar {\n\tprotected readonly _image = contentChild(BrnAvatarImage);\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAvatarFallback]',\n\texportAs: 'avatarFallback',\n})\nexport class BrnAvatarFallback {}\n","function hashString(str: string) {\n\tlet h;\n\tfor (let i = 0; i < str.length; i++) h = (Math.imul(31, h || 0) + str.charCodeAt(i)) | 0;\n\n\treturn h || 0;\n}\n\nfunction hashManyTimes(times: number, str: string) {\n\tlet h = hashString(str);\n\n\tfor (let i = 0; i < times; i++) h = hashString(String(h));\n\n\treturn h;\n}\n\nexport function hexColorFor(str: string) {\n\tconst hash = str.length <= 2 ? hashManyTimes(5, str) : hashString(str);\n\n\tlet color = '#';\n\n\tfor (let i = 0; i < 3; i += 1) {\n\t\tconst value = (hash >> (i * 8)) & 0xff;\n\t\tcolor += `00${value.toString(16)}`.slice(-2);\n\t}\n\n\treturn color;\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\n\nconst toInitial =\n\t(capitalize = true) =>\n\t(word: string) => {\n\t\tconst initial = word.charAt(0);\n\t\treturn capitalize ? initial.toLocaleUpperCase() : initial;\n\t};\n\nconst firstAndLast = (initials: string[]) => `${initials[0]}${initials[initials.length - 1]}`;\n\n@Pipe({\n\tname: 'initials',\n})\nexport class InitialsPipe implements PipeTransform {\n\ttransform(name: string, capitalize = true, firstAndLastOnly = true, delimiter = ' '): string {\n\t\tif (!name) return '';\n\n\t\tconst initials = name.trim().split(delimiter).filter(Boolean).map(toInitial(capitalize));\n\n\t\tif (firstAndLastOnly && initials.length > 1) return firstAndLast(initials);\n\n\t\treturn initials.join('');\n\t}\n}\n","const isShortHand = (hex: string) => hex.length === 3;\n\nconst cleanup = (hex: string) => {\n\tconst noHash = hex.replace('#', '').trim().toLowerCase();\n\n\tif (!isShortHand(noHash)) return noHash;\n\n\treturn noHash\n\t\t.split('')\n\t\t.map((char) => char + char)\n\t\t.join('');\n};\n\nexport const isBright = (hex: string) => Number.parseInt(cleanup(hex), 16) > 0xffffff / 1.25;\n","import { BrnAvatar } from './lib/brn-avatar';\nimport { BrnAvatarFallback } from './lib/fallback';\nimport { BrnAvatarImage } from './lib/image';\n\nexport * from './lib/brn-avatar';\nexport * from './lib/fallback';\nexport * from './lib/image';\nexport * from './lib/util';\n\nexport const BrnAvatarImports = [BrnAvatar, BrnAvatarFallback, BrnAvatarImage] 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-avatar.mjs","sources":["../../../../libs/brain/avatar/src/lib/image/brn-avatar-image.ts","../../../../libs/brain/avatar/src/lib/brn-avatar.ts","../../../../libs/brain/avatar/src/lib/fallback/brn-avatar-fallback.ts","../../../../libs/brain/avatar/src/lib/util/hex-color-for.ts","../../../../libs/brain/avatar/src/lib/util/initials.pipe.ts","../../../../libs/brain/avatar/src/lib/util/is-bright.ts","../../../../libs/brain/avatar/src/index.ts","../../../../libs/brain/avatar/src/spartan-ng-brain-avatar.ts"],"sourcesContent":["import { Directive, computed, signal } from '@angular/core';\n\n@Directive({\n\tselector: 'img[brnAvatarImage]',\n\texportAs: 'brnAvatarImage',\n\thost: {\n\t\t'(load)': '_onLoad()',\n\t\t'(error)': '_onError()',\n\t},\n})\nexport class BrnAvatarImage {\n\tprivate readonly _loaded = signal(false);\n\n\tprotected _onError() {\n\t\tthis._loaded.set(false);\n\t}\n\n\tprotected _onLoad() {\n\t\tthis._loaded.set(true);\n\t}\n\n\tpublic readonly canShow = computed(() => this._loaded());\n}\n","import { ChangeDetectionStrategy, Component, contentChild } from '@angular/core';\nimport { BrnAvatarImage } from './image';\n\n@Component({\n\tselector: 'brn-avatar',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t@if (_image()?.canShow()) {\n\t\t\t<ng-content select=\"[brnAvatarImage]\" />\n\t\t} @else {\n\t\t\t<ng-content select=\"[brnAvatarFallback]\" />\n\t\t}\n\t`,\n})\nexport class BrnAvatar {\n\tprotected readonly _image = contentChild(BrnAvatarImage);\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAvatarFallback]',\n\texportAs: 'brnAvatarFallback',\n})\nexport class BrnAvatarFallback {}\n","function hashString(str: string) {\n\tlet h;\n\tfor (let i = 0; i < str.length; i++) h = (Math.imul(31, h || 0) + str.charCodeAt(i)) | 0;\n\n\treturn h || 0;\n}\n\nfunction hashManyTimes(times: number, str: string) {\n\tlet h = hashString(str);\n\n\tfor (let i = 0; i < times; i++) h = hashString(String(h));\n\n\treturn h;\n}\n\nexport function hexColorFor(str: string) {\n\tconst hash = str.length <= 2 ? hashManyTimes(5, str) : hashString(str);\n\n\tlet color = '#';\n\n\tfor (let i = 0; i < 3; i += 1) {\n\t\tconst value = (hash >> (i * 8)) & 0xff;\n\t\tcolor += `00${value.toString(16)}`.slice(-2);\n\t}\n\n\treturn color;\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\n\nconst toInitial =\n\t(capitalize = true) =>\n\t(word: string) => {\n\t\tconst initial = word.charAt(0);\n\t\treturn capitalize ? initial.toLocaleUpperCase() : initial;\n\t};\n\nconst firstAndLast = (initials: string[]) => `${initials[0]}${initials[initials.length - 1]}`;\n\n@Pipe({\n\tname: 'initials',\n})\nexport class InitialsPipe implements PipeTransform {\n\ttransform(name: string, capitalize = true, firstAndLastOnly = true, delimiter = ' '): string {\n\t\tif (!name) return '';\n\n\t\tconst initials = name.trim().split(delimiter).filter(Boolean).map(toInitial(capitalize));\n\n\t\tif (firstAndLastOnly && initials.length > 1) return firstAndLast(initials);\n\n\t\treturn initials.join('');\n\t}\n}\n","const isShortHand = (hex: string) => hex.length === 3;\n\nconst cleanup = (hex: string) => {\n\tconst noHash = hex.replace('#', '').trim().toLowerCase();\n\n\tif (!isShortHand(noHash)) return noHash;\n\n\treturn noHash\n\t\t.split('')\n\t\t.map((char) => char + char)\n\t\t.join('');\n};\n\nexport const isBright = (hex: string) => Number.parseInt(cleanup(hex), 16) > 0xffffff / 1.25;\n","import { BrnAvatar } from './lib/brn-avatar';\nimport { BrnAvatarFallback } from './lib/fallback';\nimport { BrnAvatarImage } from './lib/image';\n\nexport * from './lib/brn-avatar';\nexport * from './lib/fallback';\nexport * from './lib/image';\nexport * from './lib/util';\n\nexport const BrnAvatarImports = [BrnAvatar, BrnAvatarFallback, BrnAvatarImage] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -155,7 +155,7 @@ class BrnCommandGroup {
155
155
  /** Determine if there are any visible items in the group */
156
156
  _visible = computed(() => this._items().some((item) => item.visible()), ...(ngDevMode ? [{ debugName: "_visible" }] : /* istanbul ignore next */ []));
157
157
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnCommandGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
158
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.16", type: BrnCommandGroup, isStandalone: true, selector: "[brnCommandGroup]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "group" }, properties: { "attr.data-hidden": "!_visible() ? \"\" : null", "id": "id()" } }, queries: [{ propertyName: "_items", predicate: BrnCommandItemToken, descendants: true, isSignal: true }], ngImport: i0 });
158
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.16", type: BrnCommandGroup, isStandalone: true, selector: "[brnCommandGroup]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "group" }, properties: { "attr.data-hidden": "!_visible() ? true : null", "id": "id()" } }, queries: [{ propertyName: "_items", predicate: BrnCommandItemToken, descendants: true, isSignal: true }], ngImport: i0 });
159
159
  }
160
160
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnCommandGroup, decorators: [{
161
161
  type: Directive,
@@ -163,7 +163,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
163
163
  selector: '[brnCommandGroup]',
164
164
  host: {
165
165
  role: 'group',
166
- '[attr.data-hidden]': '!_visible() ? "" : null',
166
+ '[attr.data-hidden]': '!_visible() ? true : null',
167
167
  '[id]': 'id()',
168
168
  },
169
169
  }]
@@ -296,7 +296,7 @@ class BrnCommandItem {
296
296
  this._initialized.set(true);
297
297
  }
298
298
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnCommandItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
299
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: BrnCommandItem, isStandalone: true, selector: "button[brnCommandItem]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { attributes: { "type": "button", "role": "option", "tabIndex": "-1" }, listeners: { "click": "onClick()", "mouseenter": "activate()" }, properties: { "id": "id()", "attr.disabled": "_disabled() ? true : null", "attr.data-disabled": "_disabled() ? \"\" : null", "attr.data-value": "value()", "attr.data-hidden": "!visible() ? '' : null", "attr.aria-selected": "_active()", "attr.data-selected": "_active() ? '' : null" } }, providers: [provideBrnCommandItem(BrnCommandItem)], ngImport: i0 });
299
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: BrnCommandItem, isStandalone: true, selector: "button[brnCommandItem]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { attributes: { "type": "button", "role": "option", "tabIndex": "-1" }, listeners: { "click": "onClick()", "mouseenter": "activate()" }, properties: { "id": "id()", "attr.disabled": "_disabled() ? true : null", "attr.data-disabled": "_disabled() ? \"\" : null", "attr.data-value": "value()", "attr.data-hidden": "!visible() ? true : null", "attr.aria-selected": "_active()", "attr.data-selected": "_active() ? true : null" } }, providers: [provideBrnCommandItem(BrnCommandItem)], ngImport: i0 });
300
300
  }
301
301
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnCommandItem, decorators: [{
302
302
  type: Directive,
@@ -311,9 +311,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
311
311
  '[attr.disabled]': '_disabled() ? true : null',
312
312
  '[attr.data-disabled]': '_disabled() ? "" : null',
313
313
  '[attr.data-value]': 'value()',
314
- '[attr.data-hidden]': "!visible() ? '' : null",
314
+ '[attr.data-hidden]': '!visible() ? true : null',
315
315
  '[attr.aria-selected]': '_active()',
316
- '[attr.data-selected]': "_active() ? '' : null",
316
+ '[attr.data-selected]': '_active() ? true : null',
317
317
  '(click)': 'onClick()',
318
318
  '(mouseenter)': 'activate()',
319
319
  },
@@ -340,10 +340,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
340
340
 
341
341
  class BrnCommandSeparator {
342
342
  _command = injectBrnCommand();
343
- /** Determine if the command has any visible items */
344
- _visible = computed(() => this._command.items().some((item) => item.visible()), ...(ngDevMode ? [{ debugName: "_visible" }] : /* istanbul ignore next */ []));
343
+ /** Determine if the command has any search input */
344
+ _hasSearchInput = computed(() => this._command.search().length > 0, ...(ngDevMode ? [{ debugName: "_hasSearchInput" }] : /* istanbul ignore next */ []));
345
345
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnCommandSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
346
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnCommandSeparator, isStandalone: true, selector: "[brnCommandSeparator]", host: { attributes: { "role": "separator" }, properties: { "attr.data-hidden": "!_visible() ? \"\" : null" } }, ngImport: i0 });
346
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnCommandSeparator, isStandalone: true, selector: "[brnCommandSeparator]", host: { attributes: { "role": "separator" }, properties: { "attr.data-hidden": "_hasSearchInput() ? true : null" } }, ngImport: i0 });
347
347
  }
348
348
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnCommandSeparator, decorators: [{
349
349
  type: Directive,
@@ -351,7 +351,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
351
351
  selector: '[brnCommandSeparator]',
352
352
  host: {
353
353
  role: 'separator',
354
- '[attr.data-hidden]': '!_visible() ? "" : null',
354
+ '[attr.data-hidden]': '_hasSearchInput() ? true : null',
355
355
  },
356
356
  }]
357
357
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-command.mjs","sources":["../../../../libs/brain/command/src/lib/brn-command-item.token.ts","../../../../libs/brain/command/src/lib/brn-command.token.ts","../../../../libs/brain/command/src/lib/brn-command.ts","../../../../libs/brain/command/src/lib/brn-command-empty.ts","../../../../libs/brain/command/src/lib/brn-command-group.ts","../../../../libs/brain/command/src/lib/brn-command-input.token.ts","../../../../libs/brain/command/src/lib/brn-command-input.ts","../../../../libs/brain/command/src/lib/brn-command-item.ts","../../../../libs/brain/command/src/lib/brn-command-list.ts","../../../../libs/brain/command/src/lib/brn-command-separator.ts","../../../../libs/brain/command/src/index.ts","../../../../libs/brain/command/src/spartan-ng-brain-command.ts"],"sourcesContent":["import { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\nimport type { BrnCommandItem } from './brn-command-item';\n\nexport const BrnCommandItemToken = new InjectionToken<BrnCommandItem>('BrnCommandItemToken');\n\nexport function provideBrnCommandItem(command: Type<BrnCommandItem>): ExistingProvider {\n\treturn { provide: BrnCommandItemToken, useExisting: command };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type, type ValueProvider } from '@angular/core';\nimport type { BrnCommand } from './brn-command';\n\nexport const BrnCommandToken = new InjectionToken<BrnCommand>('BrnCommandToken');\n\nexport function provideBrnCommand(command: Type<BrnCommand>): ExistingProvider {\n\treturn { provide: BrnCommandToken, useExisting: command };\n}\n\nexport function injectBrnCommand(): BrnCommand {\n\treturn inject(BrnCommandToken);\n}\n\n// config\nexport type CommandFilter = (value: string, search: string) => boolean;\n\nexport interface BrnCommandConfig {\n\tfilter: CommandFilter;\n}\n\nconst defaultConfig: BrnCommandConfig = {\n\tfilter: (value: string, search: string) => value.toLowerCase().includes(search.toLowerCase()),\n};\n\nconst BrnCommandConfigToken = new InjectionToken<BrnCommandConfig>('BrnCommandConfig');\n\nexport function provideBrnCommandConfig(config: Partial<BrnCommandConfig>): ValueProvider {\n\treturn { provide: BrnCommandConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectBrnCommandConfig(): BrnCommandConfig {\n\treturn inject(BrnCommandConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\toutput,\n\tuntracked,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnCommandItemToken } from './brn-command-item.token';\nimport { type CommandFilter, injectBrnCommandConfig, provideBrnCommand } from './brn-command.token';\n\nexport const BRN_COMMAND_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnCommand),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnCommand]',\n\tproviders: [provideBrnCommand(BrnCommand), BRN_COMMAND_VALUE_ACCESSOR],\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'(keydown.enter)': 'selectActiveItem()',\n\t},\n})\nexport class BrnCommand implements ControlValueAccessor {\n\tprivate static _id = 0;\n\n\tprivate readonly _injector = inject(Injector);\n\n\tprivate readonly _config = injectBrnCommandConfig();\n\n\t/** The id of the command */\n\tpublic readonly id = input<string>(`brn-command-${++BrnCommand._id}`);\n\n\t/** A custom filter function to use when searching. */\n\tpublic readonly filter = input<CommandFilter>(this._config.filter);\n\n\t/** Whether the command is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprivate readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** when the selection has changed */\n\tpublic readonly valueChange = output<string>();\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\t/** @internal Access all the items within the command */\n\tpublic readonly items = contentChildren(BrnCommandItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\tprotected _onChange?: ChangeFn<string | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled || !item.visible());\n\n\t\t// When clearing the search input we also want to reset the active item to the first one\n\t\teffect(() => {\n\t\t\tconst searchInput = this.search();\n\t\t\tuntracked(() => {\n\t\t\t\tconst activeItemIsVisible = this.keyManager.activeItem?.visible();\n\t\t\t\tif ((searchInput !== undefined && searchInput.length === 0) || !activeItemIsVisible) {\n\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tthis.keyManager.change.pipe(takeUntilDestroyed()).subscribe(() => {\n\t\t\tconst value = this.keyManager.activeItem?.safeValue();\n\t\t\tif (value) {\n\t\t\t\tthis.valueChange.emit(value);\n\t\t\t}\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\tif (this.items().length) {\n\t\t\t\tthis.keyManager.setActiveItem(0);\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected selectActiveItem(): void {\n\t\tthis.keyManager.activeItem?.selected.emit();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\twriteValue(value: string | null): void {\n\t\tif (value) {\n\t\t\tthis.search.set(value);\n\t\t}\n\t}\n\n\tregisterOnChange(fn: ChangeFn<string | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis._disabled.set(isDisabled);\n\t}\n}\n","import { computed, Directive, effect, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: '[brnCommandEmpty]',\n})\nexport class BrnCommandEmpty {\n\tprivate readonly _templateRef = inject<TemplateRef<void>>(TemplateRef);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\tprivate readonly _command = injectBrnCommand();\n\n\t/** Determine if the command has any visible items */\n\tprivate readonly _visible = computed(() => this._command.items().some((item) => item.visible()));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tif (this._visible()) {\n\t\t\t\tthis._viewContainerRef.clear();\n\t\t\t} else {\n\t\t\t\tthis._viewContainerRef.createEmbeddedView(this._templateRef);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { computed, contentChildren, Directive, input } from '@angular/core';\nimport { BrnCommandItemToken } from './brn-command-item.token';\n\n@Directive({\n\tselector: '[brnCommandGroup]',\n\thost: {\n\t\trole: 'group',\n\t\t'[attr.data-hidden]': '!_visible() ? \"\" : null',\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnCommandGroup {\n\tprivate static _id = 0;\n\n\t/** The id of the command list */\n\tpublic readonly id = input<string>(`brn-command-group-${++BrnCommandGroup._id}`);\n\n\t/** Get the items in the group */\n\tprivate readonly _items = contentChildren(BrnCommandItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if there are any visible items in the group */\n\tprotected readonly _visible = computed(() => this._items().some((item) => item.visible()));\n}\n","import { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\nimport type { BrnCommandInput } from './brn-command-input';\n\nexport const BrnCommandInputToken = new InjectionToken<BrnCommandInput>('BrnCommandInputToken');\n\nexport function provideBrnCommandInput(command: Type<BrnCommandInput>): ExistingProvider {\n\treturn { provide: BrnCommandInputToken, useExisting: command };\n}\n","import { Directive, effect, ElementRef, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { startWith } from 'rxjs/operators';\nimport { provideBrnCommandInput } from './brn-command-input.token';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: 'input[brnCommandInput]',\n\tproviders: [provideBrnCommandInput(BrnCommandInput)],\n\thost: {\n\t\t'[id]': 'id()',\n\t\trole: 'combobox',\n\t\t'aria-autocomplete': 'list',\n\t\t'[attr.aria-activedescendant]': '_activeDescendant()',\n\t\t'[attr.disabled]': '_disabled() ? \"\" : null',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t\t'(input)': 'onInput()',\n\t\ttype: 'text',\n\t\tautocomplete: 'off',\n\t\tautocorrect: 'off',\n\t\tspellcheck: 'false',\n\t},\n})\nexport class BrnCommandInput {\n\tprivate static _id = 0;\n\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _command = injectBrnCommand();\n\n\tprivate readonly _initialId = `brn-command-input-${++BrnCommandInput._id}`;\n\n\t/** The id of the command input */\n\tpublic readonly id = input<string, string | undefined>(this._initialId, {\n\t\ttransform: (value) => value || this._initialId,\n\t});\n\n\tprotected readonly _disabled = this._command.disabledState;\n\n\t/** The id of the active option */\n\tprotected readonly _activeDescendant = signal<string | undefined>(undefined);\n\n\tconstructor() {\n\t\tthis._command.keyManager.change\n\t\t\t.pipe(startWith(this._command.keyManager.activeItemIndex), takeUntilDestroyed())\n\t\t\t.subscribe(() => this._activeDescendant.set(this._command.keyManager.activeItem?.id()));\n\n\t\teffect(() => {\n\t\t\tconst search = this._command.search();\n\n\t\t\tif (this._el.nativeElement.value !== search) {\n\t\t\t\tthis._el.nativeElement.value = search;\n\t\t\t}\n\t\t});\n\t}\n\t/** Listen for changes to the input value */\n\tprotected onInput(): void {\n\t\tthis._command.search.set(this._el.nativeElement.value);\n\t}\n\n\t/** Listen for keydown events */\n\tprotected onKeyDown(event: KeyboardEvent): void {\n\t\tthis._command.keyManager.onKeydown(event);\n\t}\n}\n","import type { Highlightable } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tcomputed,\n\tDirective,\n\tElementRef,\n\tinject,\n\tinput,\n\ttype OnInit,\n\toutput,\n\tPLATFORM_ID,\n\tsignal,\n} from '@angular/core';\nimport { provideBrnCommandItem } from './brn-command-item.token';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: 'button[brnCommandItem]',\n\tproviders: [provideBrnCommandItem(BrnCommandItem)],\n\thost: {\n\t\ttype: 'button',\n\t\trole: 'option',\n\t\ttabIndex: '-1',\n\t\t'[id]': 'id()',\n\t\t'[attr.disabled]': '_disabled() ? true : null',\n\t\t'[attr.data-disabled]': '_disabled() ? \"\" : null',\n\t\t'[attr.data-value]': 'value()',\n\t\t'[attr.data-hidden]': \"!visible() ? '' : null\",\n\t\t'[attr.aria-selected]': '_active()',\n\t\t'[attr.data-selected]': \"_active() ? '' : null\",\n\t\t'(click)': 'onClick()',\n\t\t'(mouseenter)': 'activate()',\n\t},\n})\nexport class BrnCommandItem implements Highlightable, OnInit {\n\tprivate static _id = 0;\n\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t/** Access the command component */\n\tprivate readonly _command = injectBrnCommand();\n\n\t/** A unique id for the item */\n\tpublic readonly id = input<string>(`brn-command-item-${++BrnCommandItem._id}`);\n\n\t/** The value this item represents. */\n\tpublic readonly value = input.required<string>();\n\n\t/** Whether the item is disabled. */\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tpublic readonly _disabled = input<boolean, BooleanInput>(false, {\n\t\talias: 'disabled',\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Expose disabled as a value - used by the Highlightable interface */\n\tpublic get disabled() {\n\t\treturn this._disabled();\n\t}\n\n\t/** Whether the item is initialized, this is to prevent accessing the value-input before the component is initialized.\n\t * The brn-command-empty directive accesses the value before the component is initialized, which causes an error.\n\t */\n\tprivate readonly _initialized = signal(false);\n\n\t/** Whether the item is selected. */\n\tprotected readonly _active = signal(false);\n\n\t/** Emits when the item is selected. */\n\tpublic readonly selected = output<void>();\n\n\t/** @internal Determine if this item is visible based on the current search query */\n\tpublic readonly visible = computed(() => {\n\t\treturn this._command.filter()(this.safeValue(), this._command.search());\n\t});\n\n\t/** @internal Get the value of the item, with check if it has been initialized to avoid errors */\n\tpublic readonly safeValue = computed(() => {\n\t\tif (!this._initialized()) {\n\t\t\treturn '';\n\t\t}\n\t\treturn this.value();\n\t});\n\n\t/** @internal Get the display value */\n\tpublic getLabel(): string {\n\t\treturn this.safeValue();\n\t}\n\n\t/** @internal */\n\tsetActiveStyles(): void {\n\t\tthis._active.set(true);\n\n\t\t// ensure the item is in view\n\t\tif (isPlatformBrowser(this._platform)) {\n\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'nearest' });\n\t\t}\n\t}\n\n\t/** @internal */\n\tsetInactiveStyles(): void {\n\t\tthis._active.set(false);\n\t}\n\n\tprotected onClick(): void {\n\t\tthis._command.keyManager.setActiveItem(this);\n\t\tthis.selected.emit();\n\t}\n\n\tprotected activate(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._command.keyManager.setActiveItem(this);\n\t}\n\n\tngOnInit(): void {\n\t\tthis._initialized.set(true);\n\t}\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnCommandList]',\n\thost: {\n\t\trole: 'listbox',\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnCommandList {\n\tprivate static _id = 0;\n\n\t/** The id of the command list */\n\tpublic readonly id = input<string>(`brn-command-list-${++BrnCommandList._id}`);\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: '[brnCommandSeparator]',\n\thost: {\n\t\trole: 'separator',\n\t\t'[attr.data-hidden]': '!_visible() ? \"\" : null',\n\t},\n})\nexport class BrnCommandSeparator {\n\tprivate readonly _command = injectBrnCommand();\n\n\t/** Determine if the command has any visible items */\n\tprotected readonly _visible = computed(() => this._command.items().some((item) => item.visible()));\n}\n","import { BrnCommand } from './lib/brn-command';\nimport { BrnCommandEmpty } from './lib/brn-command-empty';\nimport { BrnCommandGroup } from './lib/brn-command-group';\nimport { BrnCommandInput } from './lib/brn-command-input';\nimport { BrnCommandItem } from './lib/brn-command-item';\nimport { BrnCommandList } from './lib/brn-command-list';\nimport { BrnCommandSeparator } from './lib/brn-command-separator';\n\nexport * from './lib/brn-command';\nexport * from './lib/brn-command-empty';\nexport * from './lib/brn-command-group';\nexport * from './lib/brn-command-input';\nexport * from './lib/brn-command-input.token';\nexport * from './lib/brn-command-item';\nexport * from './lib/brn-command-item.token';\nexport * from './lib/brn-command-list';\nexport * from './lib/brn-command-separator';\nexport * from './lib/brn-command.token';\n\nexport const BrnCommandImports = [\n\tBrnCommand,\n\tBrnCommandEmpty,\n\tBrnCommandGroup,\n\tBrnCommandInput,\n\tBrnCommandItem,\n\tBrnCommandList,\n\tBrnCommandSeparator,\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-command.mjs","sources":["../../../../libs/brain/command/src/lib/brn-command-item.token.ts","../../../../libs/brain/command/src/lib/brn-command.token.ts","../../../../libs/brain/command/src/lib/brn-command.ts","../../../../libs/brain/command/src/lib/brn-command-empty.ts","../../../../libs/brain/command/src/lib/brn-command-group.ts","../../../../libs/brain/command/src/lib/brn-command-input.token.ts","../../../../libs/brain/command/src/lib/brn-command-input.ts","../../../../libs/brain/command/src/lib/brn-command-item.ts","../../../../libs/brain/command/src/lib/brn-command-list.ts","../../../../libs/brain/command/src/lib/brn-command-separator.ts","../../../../libs/brain/command/src/index.ts","../../../../libs/brain/command/src/spartan-ng-brain-command.ts"],"sourcesContent":["import { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\nimport type { BrnCommandItem } from './brn-command-item';\n\nexport const BrnCommandItemToken = new InjectionToken<BrnCommandItem>('BrnCommandItemToken');\n\nexport function provideBrnCommandItem(command: Type<BrnCommandItem>): ExistingProvider {\n\treturn { provide: BrnCommandItemToken, useExisting: command };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type, type ValueProvider } from '@angular/core';\nimport type { BrnCommand } from './brn-command';\n\nexport const BrnCommandToken = new InjectionToken<BrnCommand>('BrnCommandToken');\n\nexport function provideBrnCommand(command: Type<BrnCommand>): ExistingProvider {\n\treturn { provide: BrnCommandToken, useExisting: command };\n}\n\nexport function injectBrnCommand(): BrnCommand {\n\treturn inject(BrnCommandToken);\n}\n\n// config\nexport type CommandFilter = (value: string, search: string) => boolean;\n\nexport interface BrnCommandConfig {\n\tfilter: CommandFilter;\n}\n\nconst defaultConfig: BrnCommandConfig = {\n\tfilter: (value: string, search: string) => value.toLowerCase().includes(search.toLowerCase()),\n};\n\nconst BrnCommandConfigToken = new InjectionToken<BrnCommandConfig>('BrnCommandConfig');\n\nexport function provideBrnCommandConfig(config: Partial<BrnCommandConfig>): ValueProvider {\n\treturn { provide: BrnCommandConfigToken, useValue: { ...defaultConfig, ...config } };\n}\n\nexport function injectBrnCommandConfig(): BrnCommandConfig {\n\treturn inject(BrnCommandConfigToken, { optional: true }) ?? defaultConfig;\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\toutput,\n\tuntracked,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnCommandItemToken } from './brn-command-item.token';\nimport { type CommandFilter, injectBrnCommandConfig, provideBrnCommand } from './brn-command.token';\n\nexport const BRN_COMMAND_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnCommand),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnCommand]',\n\tproviders: [provideBrnCommand(BrnCommand), BRN_COMMAND_VALUE_ACCESSOR],\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'(keydown.enter)': 'selectActiveItem()',\n\t},\n})\nexport class BrnCommand implements ControlValueAccessor {\n\tprivate static _id = 0;\n\n\tprivate readonly _injector = inject(Injector);\n\n\tprivate readonly _config = injectBrnCommandConfig();\n\n\t/** The id of the command */\n\tpublic readonly id = input<string>(`brn-command-${++BrnCommand._id}`);\n\n\t/** A custom filter function to use when searching. */\n\tpublic readonly filter = input<CommandFilter>(this._config.filter);\n\n\t/** Whether the command is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprivate readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** when the selection has changed */\n\tpublic readonly valueChange = output<string>();\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\t/** @internal Access all the items within the command */\n\tpublic readonly items = contentChildren(BrnCommandItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\tprotected _onChange?: ChangeFn<string | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled || !item.visible());\n\n\t\t// When clearing the search input we also want to reset the active item to the first one\n\t\teffect(() => {\n\t\t\tconst searchInput = this.search();\n\t\t\tuntracked(() => {\n\t\t\t\tconst activeItemIsVisible = this.keyManager.activeItem?.visible();\n\t\t\t\tif ((searchInput !== undefined && searchInput.length === 0) || !activeItemIsVisible) {\n\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tthis.keyManager.change.pipe(takeUntilDestroyed()).subscribe(() => {\n\t\t\tconst value = this.keyManager.activeItem?.safeValue();\n\t\t\tif (value) {\n\t\t\t\tthis.valueChange.emit(value);\n\t\t\t}\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\tif (this.items().length) {\n\t\t\t\tthis.keyManager.setActiveItem(0);\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected selectActiveItem(): void {\n\t\tthis.keyManager.activeItem?.selected.emit();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\twriteValue(value: string | null): void {\n\t\tif (value) {\n\t\t\tthis.search.set(value);\n\t\t}\n\t}\n\n\tregisterOnChange(fn: ChangeFn<string | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis._disabled.set(isDisabled);\n\t}\n}\n","import { computed, Directive, effect, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: '[brnCommandEmpty]',\n})\nexport class BrnCommandEmpty {\n\tprivate readonly _templateRef = inject<TemplateRef<void>>(TemplateRef);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\tprivate readonly _command = injectBrnCommand();\n\n\t/** Determine if the command has any visible items */\n\tprivate readonly _visible = computed(() => this._command.items().some((item) => item.visible()));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tif (this._visible()) {\n\t\t\t\tthis._viewContainerRef.clear();\n\t\t\t} else {\n\t\t\t\tthis._viewContainerRef.createEmbeddedView(this._templateRef);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { computed, contentChildren, Directive, input } from '@angular/core';\nimport { BrnCommandItemToken } from './brn-command-item.token';\n\n@Directive({\n\tselector: '[brnCommandGroup]',\n\thost: {\n\t\trole: 'group',\n\t\t'[attr.data-hidden]': '!_visible() ? true : null',\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnCommandGroup {\n\tprivate static _id = 0;\n\n\t/** The id of the command list */\n\tpublic readonly id = input<string>(`brn-command-group-${++BrnCommandGroup._id}`);\n\n\t/** Get the items in the group */\n\tprivate readonly _items = contentChildren(BrnCommandItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if there are any visible items in the group */\n\tprotected readonly _visible = computed(() => this._items().some((item) => item.visible()));\n}\n","import { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\nimport type { BrnCommandInput } from './brn-command-input';\n\nexport const BrnCommandInputToken = new InjectionToken<BrnCommandInput>('BrnCommandInputToken');\n\nexport function provideBrnCommandInput(command: Type<BrnCommandInput>): ExistingProvider {\n\treturn { provide: BrnCommandInputToken, useExisting: command };\n}\n","import { Directive, effect, ElementRef, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { startWith } from 'rxjs/operators';\nimport { provideBrnCommandInput } from './brn-command-input.token';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: 'input[brnCommandInput]',\n\tproviders: [provideBrnCommandInput(BrnCommandInput)],\n\thost: {\n\t\t'[id]': 'id()',\n\t\trole: 'combobox',\n\t\t'aria-autocomplete': 'list',\n\t\t'[attr.aria-activedescendant]': '_activeDescendant()',\n\t\t'[attr.disabled]': '_disabled() ? \"\" : null',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t\t'(input)': 'onInput()',\n\t\ttype: 'text',\n\t\tautocomplete: 'off',\n\t\tautocorrect: 'off',\n\t\tspellcheck: 'false',\n\t},\n})\nexport class BrnCommandInput {\n\tprivate static _id = 0;\n\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _command = injectBrnCommand();\n\n\tprivate readonly _initialId = `brn-command-input-${++BrnCommandInput._id}`;\n\n\t/** The id of the command input */\n\tpublic readonly id = input<string, string | undefined>(this._initialId, {\n\t\ttransform: (value) => value || this._initialId,\n\t});\n\n\tprotected readonly _disabled = this._command.disabledState;\n\n\t/** The id of the active option */\n\tprotected readonly _activeDescendant = signal<string | undefined>(undefined);\n\n\tconstructor() {\n\t\tthis._command.keyManager.change\n\t\t\t.pipe(startWith(this._command.keyManager.activeItemIndex), takeUntilDestroyed())\n\t\t\t.subscribe(() => this._activeDescendant.set(this._command.keyManager.activeItem?.id()));\n\n\t\teffect(() => {\n\t\t\tconst search = this._command.search();\n\n\t\t\tif (this._el.nativeElement.value !== search) {\n\t\t\t\tthis._el.nativeElement.value = search;\n\t\t\t}\n\t\t});\n\t}\n\t/** Listen for changes to the input value */\n\tprotected onInput(): void {\n\t\tthis._command.search.set(this._el.nativeElement.value);\n\t}\n\n\t/** Listen for keydown events */\n\tprotected onKeyDown(event: KeyboardEvent): void {\n\t\tthis._command.keyManager.onKeydown(event);\n\t}\n}\n","import type { Highlightable } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tcomputed,\n\tDirective,\n\tElementRef,\n\tinject,\n\tinput,\n\ttype OnInit,\n\toutput,\n\tPLATFORM_ID,\n\tsignal,\n} from '@angular/core';\nimport { provideBrnCommandItem } from './brn-command-item.token';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: 'button[brnCommandItem]',\n\tproviders: [provideBrnCommandItem(BrnCommandItem)],\n\thost: {\n\t\ttype: 'button',\n\t\trole: 'option',\n\t\ttabIndex: '-1',\n\t\t'[id]': 'id()',\n\t\t'[attr.disabled]': '_disabled() ? true : null',\n\t\t'[attr.data-disabled]': '_disabled() ? \"\" : null',\n\t\t'[attr.data-value]': 'value()',\n\t\t'[attr.data-hidden]': '!visible() ? true : null',\n\t\t'[attr.aria-selected]': '_active()',\n\t\t'[attr.data-selected]': '_active() ? true : null',\n\t\t'(click)': 'onClick()',\n\t\t'(mouseenter)': 'activate()',\n\t},\n})\nexport class BrnCommandItem implements Highlightable, OnInit {\n\tprivate static _id = 0;\n\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t/** Access the command component */\n\tprivate readonly _command = injectBrnCommand();\n\n\t/** A unique id for the item */\n\tpublic readonly id = input<string>(`brn-command-item-${++BrnCommandItem._id}`);\n\n\t/** The value this item represents. */\n\tpublic readonly value = input.required<string>();\n\n\t/** Whether the item is disabled. */\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tpublic readonly _disabled = input<boolean, BooleanInput>(false, {\n\t\talias: 'disabled',\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Expose disabled as a value - used by the Highlightable interface */\n\tpublic get disabled() {\n\t\treturn this._disabled();\n\t}\n\n\t/** Whether the item is initialized, this is to prevent accessing the value-input before the component is initialized.\n\t * The brn-command-empty directive accesses the value before the component is initialized, which causes an error.\n\t */\n\tprivate readonly _initialized = signal(false);\n\n\t/** Whether the item is selected. */\n\tprotected readonly _active = signal(false);\n\n\t/** Emits when the item is selected. */\n\tpublic readonly selected = output<void>();\n\n\t/** @internal Determine if this item is visible based on the current search query */\n\tpublic readonly visible = computed(() => {\n\t\treturn this._command.filter()(this.safeValue(), this._command.search());\n\t});\n\n\t/** @internal Get the value of the item, with check if it has been initialized to avoid errors */\n\tpublic readonly safeValue = computed(() => {\n\t\tif (!this._initialized()) {\n\t\t\treturn '';\n\t\t}\n\t\treturn this.value();\n\t});\n\n\t/** @internal Get the display value */\n\tpublic getLabel(): string {\n\t\treturn this.safeValue();\n\t}\n\n\t/** @internal */\n\tsetActiveStyles(): void {\n\t\tthis._active.set(true);\n\n\t\t// ensure the item is in view\n\t\tif (isPlatformBrowser(this._platform)) {\n\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'nearest' });\n\t\t}\n\t}\n\n\t/** @internal */\n\tsetInactiveStyles(): void {\n\t\tthis._active.set(false);\n\t}\n\n\tprotected onClick(): void {\n\t\tthis._command.keyManager.setActiveItem(this);\n\t\tthis.selected.emit();\n\t}\n\n\tprotected activate(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._command.keyManager.setActiveItem(this);\n\t}\n\n\tngOnInit(): void {\n\t\tthis._initialized.set(true);\n\t}\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnCommandList]',\n\thost: {\n\t\trole: 'listbox',\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnCommandList {\n\tprivate static _id = 0;\n\n\t/** The id of the command list */\n\tpublic readonly id = input<string>(`brn-command-list-${++BrnCommandList._id}`);\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: '[brnCommandSeparator]',\n\thost: {\n\t\trole: 'separator',\n\t\t'[attr.data-hidden]': '_hasSearchInput() ? true : null',\n\t},\n})\nexport class BrnCommandSeparator {\n\tprivate readonly _command = injectBrnCommand();\n\n\t/** Determine if the command has any search input */\n\tprotected readonly _hasSearchInput = computed(() => this._command.search().length > 0);\n}\n","import { BrnCommand } from './lib/brn-command';\nimport { BrnCommandEmpty } from './lib/brn-command-empty';\nimport { BrnCommandGroup } from './lib/brn-command-group';\nimport { BrnCommandInput } from './lib/brn-command-input';\nimport { BrnCommandItem } from './lib/brn-command-item';\nimport { BrnCommandList } from './lib/brn-command-list';\nimport { BrnCommandSeparator } from './lib/brn-command-separator';\n\nexport * from './lib/brn-command';\nexport * from './lib/brn-command-empty';\nexport * from './lib/brn-command-group';\nexport * from './lib/brn-command-input';\nexport * from './lib/brn-command-input.token';\nexport * from './lib/brn-command-item';\nexport * from './lib/brn-command-item.token';\nexport * from './lib/brn-command-list';\nexport * from './lib/brn-command-separator';\nexport * from './lib/brn-command.token';\n\nexport const BrnCommandImports = [\n\tBrnCommand,\n\tBrnCommandEmpty,\n\tBrnCommandGroup,\n\tBrnCommandInput,\n\tBrnCommandItem,\n\tBrnCommandList,\n\tBrnCommandSeparator,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAGa,mBAAmB,GAAG,IAAI,cAAc,CAAiB,qBAAqB;AAErF,SAAU,qBAAqB,CAAC,OAA6B,EAAA;IAClE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE;AAC9D;;MCJa,eAAe,GAAG,IAAI,cAAc,CAAa,iBAAiB;AAEzE,SAAU,iBAAiB,CAAC,OAAyB,EAAA;IAC1D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE;AAC1D;SAEgB,gBAAgB,GAAA;AAC/B,IAAA,OAAO,MAAM,CAAC,eAAe,CAAC;AAC/B;AASA,MAAM,aAAa,GAAqB;AACvC,IAAA,MAAM,EAAE,CAAC,KAAa,EAAE,MAAc,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;CAC7F;AAED,MAAM,qBAAqB,GAAG,IAAI,cAAc,CAAmB,kBAAkB,CAAC;AAEhF,SAAU,uBAAuB,CAAC,MAAiC,EAAA;AACxE,IAAA,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,EAAE;AACrF;SAEgB,sBAAsB,GAAA;AACrC,IAAA,OAAO,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,aAAa;AAC1E;;ACTO,MAAM,0BAA0B,GAAG;AACzC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,UAAU,CAAC;AACzC,IAAA,KAAK,EAAE,IAAI;;MAWC,UAAU,CAAA;AACd,IAAA,OAAO,GAAG,GAAG,CAAC;AAEL,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE5B,OAAO,GAAG,sBAAsB,EAAE;;IAGnC,EAAE,GAAG,KAAK,CAAS,CAAA,YAAA,EAAe,EAAE,UAAU,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;IAGrD,MAAM,GAAG,KAAK,CAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;IAGlD,QAAQ,GAAG,KAAK,CAAwB,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE9E,IAAA,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,gFAAC;;AAGxC,IAAA,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;;IAG3C,WAAW,GAAG,MAAM,EAAU;;AAG9B,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,6EAAC;;IAG1B,KAAK,GAAG,eAAe,CAAC,mBAAmB,6EAC1D,WAAW,EAAE,IAAI,EAAA,CAChB;;AAGc,IAAA,UAAU,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;AAE7E,IAAA,SAAS;AACT,IAAA,UAAU;AAEpB,IAAA,WAAA,GAAA;AACC,QAAA,IAAI,CAAC;AACH,aAAA,uBAAuB;AACvB,aAAA,cAAc;AACd,aAAA,QAAQ;AACR,aAAA,aAAa,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;;QAG3D,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;YACjC,SAAS,CAAC,MAAK;gBACd,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE;AACjE,gBAAA,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE;AACpF,oBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;gBACrC;AACD,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;YAChE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE;YACrD,IAAI,KAAK,EAAE;AACV,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B;AACD,QAAA,CAAC,CAAC;QAEF,eAAe,CAAC,MAAK;AACpB,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;AACxB,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;YACjC;AACD,QAAA,CAAC,CAAC;IACH;IAEU,gBAAgB,GAAA;QACzB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE;IAC5C;;AAGA,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC9B,IAAI,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB;IACD;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B;2HA3FY,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EANX,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,0BAA0B,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAkC9B,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FA5B/C,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,SAAS,EAAE,CAAC,iBAAiB,CAAA,UAAA,CAAY,EAAE,0BAA0B,CAAC;AACtE,oBAAA,IAAI,EAAE;AACL,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,qBAAA;AACD,iBAAA;AA6BwC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,mBAAmB,CAAA,EAAA,EAAA,GAAE;AAC5D,4BAAA,WAAW,EAAE,IAAI;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MC7DW,eAAe,CAAA;AACV,IAAA,YAAY,GAAG,MAAM,CAAoB,WAAW,CAAC;AACrD,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC5C,QAAQ,GAAG,gBAAgB,EAAE;;IAG7B,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEhG,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAC/B;iBAAO;gBACN,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;YAC7D;AACD,QAAA,CAAC,CAAC;IACH;2HAhBY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,iBAAA;;;MCMY,eAAe,CAAA;AACnB,IAAA,OAAO,GAAG,GAAG,CAAC;;IAGN,EAAE,GAAG,KAAK,CAAS,CAAA,kBAAA,EAAqB,EAAE,eAAe,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;IAG/D,MAAM,GAAG,eAAe,CAAC,mBAAmB,8EAC5D,WAAW,EAAE,IAAI,EAAA,CAChB;;IAGiB,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;2HAZ9E,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,yVAOe,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAPjD,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,oBAAoB,EAAE,2BAA2B;AACjD,wBAAA,MAAM,EAAE,MAAM;AACd,qBAAA;AACD,iBAAA;AAQ0C,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,EAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,mBAAmB,CAAA,EAAA,EAAA,GAAE;AAC9D,4BAAA,WAAW,EAAE,IAAI;AACjB,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCjBW,oBAAoB,GAAG,IAAI,cAAc,CAAkB,sBAAsB;AAExF,SAAU,sBAAsB,CAAC,OAA8B,EAAA;IACpE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,OAAO,EAAE;AAC/D;;MCgBa,eAAe,CAAA;AACnB,IAAA,OAAO,GAAG,GAAG,CAAC;AAEL,IAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,GAAG,gBAAgB,EAAE;AAE7B,IAAA,UAAU,GAAG,CAAA,kBAAA,EAAqB,EAAE,eAAe,CAAC,GAAG,EAAE;;IAG1D,EAAE,GAAG,KAAK,CAA6B,IAAI,CAAC,UAAU,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAAA,EAAA,CAAA,EACrE,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,GAC7C;AAEiB,IAAA,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;;AAGvC,IAAA,iBAAiB,GAAG,MAAM,CAAqB,SAAS,wFAAC;AAE5E,IAAA,WAAA,GAAA;AACC,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,kBAAkB,EAAE;aAC9E,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAExF,MAAM,CAAC,MAAK;YACX,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAErC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,KAAK,MAAM,EAAE;gBAC5C,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM;YACtC;AACD,QAAA,CAAC,CAAC;IACH;;IAEU,OAAO,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC;IACvD;;AAGU,IAAA,SAAS,CAAC,KAAoB,EAAA;QACvC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAC1C;2HAvCY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,qiBAfhB,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAexC,eAAe,EAAA,UAAA,EAAA,CAAA;kBAjB3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,SAAS,EAAE,CAAC,sBAAsB,CAAA,eAAA,CAAiB,CAAC;AACpD,oBAAA,IAAI,EAAE;AACL,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,8BAA8B,EAAE,qBAAqB;AACrD,wBAAA,iBAAiB,EAAE,yBAAyB;AAC5C,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,UAAU,EAAE,OAAO;AACnB,qBAAA;AACD,iBAAA;;;MCcY,cAAc,CAAA;AAClB,IAAA,OAAO,GAAG,GAAG,CAAC;AAEL,IAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;AAE/B,IAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC;;IAGzD,QAAQ,GAAG,gBAAgB,EAAE;;IAG9B,EAAE,GAAG,KAAK,CAAS,CAAA,iBAAA,EAAoB,EAAE,cAAc,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;AAG9D,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;;;AAIhC,IAAA,SAAS,GAAG,KAAK,CAAwB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EAC7D,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,EAAA,CAC1B;;AAGF,IAAA,IAAW,QAAQ,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;IACxB;AAEA;;AAEG;AACc,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;;AAG1B,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;;IAG1B,QAAQ,GAAG,MAAM,EAAQ;;AAGzB,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACxE,IAAA,CAAC,8EAAC;;AAGc,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;AACzB,YAAA,OAAO,EAAE;QACV;AACA,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE;AACpB,IAAA,CAAC,gFAAC;;IAGK,QAAQ,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;IACxB;;IAGA,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGtB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACpE;IACD;;IAGA,iBAAiB,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;IAEU,OAAO,GAAA;QAChB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACrB;IAEU,QAAQ,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB;QACD;QAEA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;IAC7C;IAEA,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;2HAvFY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,+4BAhBf,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAgBtC,cAAc,EAAA,UAAA,EAAA,CAAA;kBAlB1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,SAAS,EAAE,CAAC,qBAAqB,CAAA,cAAA,CAAgB,CAAC;AAClD,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,iBAAiB,EAAE,2BAA2B;AAC9C,wBAAA,sBAAsB,EAAE,yBAAyB;AACjD,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,oBAAoB,EAAE,0BAA0B;AAChD,wBAAA,sBAAsB,EAAE,WAAW;AACnC,wBAAA,sBAAsB,EAAE,yBAAyB;AACjD,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,cAAc,EAAE,YAAY;AAC5B,qBAAA;AACD,iBAAA;;;MC1BY,cAAc,CAAA;AAClB,IAAA,OAAO,GAAG,GAAG,CAAC;;IAGN,EAAE,GAAG,KAAK,CAAS,CAAA,iBAAA,EAAoB,EAAE,cAAc,CAAC,GAAG,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;2HAJlE,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,MAAM,EAAE,MAAM;AACd,qBAAA;AACD,iBAAA;;;MCEY,mBAAmB,CAAA;IACd,QAAQ,GAAG,gBAAgB,EAAE;;AAG3B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,sFAAC;2HAJ1E,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,oBAAoB,EAAE,iCAAiC;AACvD,qBAAA;AACD,iBAAA;;;ACUM,MAAM,iBAAiB,GAAG;IAChC,UAAU;IACV,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;IACd,cAAc;IACd,mBAAmB;;;AC1BpB;;AAEG;;;;"}
@@ -111,10 +111,6 @@ class BrnDialogRef {
111
111
  }
112
112
 
113
113
  let dialogSequence = 0;
114
- /** @deprecated `injectBrnDialogCtx` will no longer be supported once components are stable. Use `injectBrnDialogContext` instead. */
115
- const injectBrnDialogCtx = () => {
116
- return inject(DIALOG_DATA);
117
- };
118
114
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
119
115
  const injectBrnDialogContext = (options = {}) => {
120
116
  return inject(DIALOG_DATA, options);
@@ -626,5 +622,5 @@ const BrnDialogImports = [
626
622
  * Generated bundle index. Do not edit.
627
623
  */
628
624
 
629
- export { BrnDialog, BrnDialogClose, BrnDialogContent, BrnDialogDescription, BrnDialogImports, BrnDialogOverlay, BrnDialogRef, BrnDialogService, BrnDialogTitle, BrnDialogTrigger, cssClassesToArray, defaultOptions, injectBrnDialogContext, injectBrnDialogCtx, injectBrnDialogDefaultOptions, provideBrnDialogDefaultOptions };
625
+ export { BrnDialog, BrnDialogClose, BrnDialogContent, BrnDialogDescription, BrnDialogImports, BrnDialogOverlay, BrnDialogRef, BrnDialogService, BrnDialogTitle, BrnDialogTrigger, cssClassesToArray, defaultOptions, injectBrnDialogContext, injectBrnDialogDefaultOptions, provideBrnDialogDefaultOptions };
630
626
  //# sourceMappingURL=spartan-ng-brain-dialog.mjs.map
@@ -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\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
+ {"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// 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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"}
@@ -111,7 +111,12 @@ class BrnDrawerHandle {
111
111
  _destroyRef = inject(DestroyRef);
112
112
  _pointerId = -1;
113
113
  constructor() {
114
- this._destroyRef.onDestroy(() => this._cleanup());
114
+ this._destroyRef.onDestroy(() => {
115
+ this._cleanup();
116
+ // Cancel any pending reset timeout: on destroy its target elements are gone, so the
117
+ // deferred style write is a stale no-op that also retains this directive for ~500ms.
118
+ this._clearResetTimeout();
119
+ });
115
120
  effect(() => {
116
121
  const state = this._brnDialogRef?.state();
117
122
  untracked(() => {
@@ -138,6 +143,7 @@ class BrnDrawerHandle {
138
143
  _openTime = null;
139
144
  _lastTimeDragPrevented = null;
140
145
  _dragStartTime = null;
146
+ _resetTimeout = null;
141
147
  closeThreshold = input(DEFAULT_CLOSE_THRESHOLD, ...(ngDevMode ? [{ debugName: "closeThreshold" }] : /* istanbul ignore next */ []));
142
148
  get _isVertical() {
143
149
  return this._direction === 'bottom' || this._direction === 'top';
@@ -348,13 +354,21 @@ class BrnDrawerHandle {
348
354
  this._backdropEl.style.transition = animate ? OVERLAY_TRANSITION : 'none';
349
355
  this._backdropEl.style.opacity = String(this._initialBackdropOpacity);
350
356
  }
351
- setTimeout(() => {
357
+ this._clearResetTimeout();
358
+ this._resetTimeout = setTimeout(() => {
359
+ this._resetTimeout = null;
352
360
  if (this._drawerEl)
353
361
  this._drawerEl.style.transition = '';
354
362
  if (this._backdropEl)
355
363
  this._backdropEl.style.transition = '';
356
364
  }, 500);
357
365
  }
366
+ _clearResetTimeout() {
367
+ if (this._resetTimeout !== null) {
368
+ clearTimeout(this._resetTimeout);
369
+ this._resetTimeout = null;
370
+ }
371
+ }
358
372
  _animateAndClose() {
359
373
  if (!this._drawerEl)
360
374
  return;
@@ -385,6 +399,11 @@ class BrnDrawerHandle {
385
399
  this._pointerId = -1;
386
400
  }
387
401
  this._document.removeEventListener('pointermove', this._onPointerMove);
402
+ // pointerup/pointercancel are registered with `{ once: true }`, but a destroy-during-drag (or a
403
+ // normal end where pointercancel never fired) would otherwise leave them on `document`, pinning
404
+ // this directive until the next global pointer release auto-removes them.
405
+ this._document.removeEventListener('pointerup', this._onPointerUp);
406
+ this._document.removeEventListener('pointercancel', this._onPointerCancel);
388
407
  }
389
408
  _findScrollableAncestor(element) {
390
409
  if (!element)
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-drawer.mjs","sources":["../../../../libs/brain/drawer/src/lib/brn-drawer.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-close.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-content.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-description.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-handle.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-overlay.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-title.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-trigger.ts","../../../../libs/brain/drawer/src/index.ts","../../../../libs/brain/drawer/src/spartan-ng-brain-drawer.ts"],"sourcesContent":["import { Directive, effect, forwardRef, input, linkedSignal, untracked } from '@angular/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnDrawer],brn-drawer',\n\texportAs: 'brnDrawer',\n\tproviders: [\n\t\t{\n\t\t\tprovide: BrnDialog,\n\t\t\tuseExisting: forwardRef(() => BrnDrawer),\n\t\t},\n\t],\n})\nexport class BrnDrawer extends BrnDialog {\n\tpublic readonly direction = input<'bottom' | 'top' | 'left' | 'right'>('bottom');\n\tpublic readonly directionState = linkedSignal(() => this.direction());\n\n\tconstructor() {\n\t\tsuper();\n\t\teffect(() => {\n\t\t\tconst direction = this.directionState();\n\t\t\tuntracked(() => {\n\t\t\t\tif (direction === 'bottom') {\n\t\t\t\t\tthis.mutablePositionStrategy.set(this.positionBuilder.global().bottom());\n\t\t\t\t}\n\t\t\t\tif (direction === 'top') {\n\t\t\t\t\tthis.mutablePositionStrategy.set(this.positionBuilder.global().top());\n\t\t\t\t}\n\t\t\t\tif (direction === 'left') {\n\t\t\t\t\tthis.mutablePositionStrategy.set(this.positionBuilder.global().left());\n\t\t\t\t}\n\t\t\t\tif (direction === 'right') {\n\t\t\t\t\tthis.mutablePositionStrategy.set(this.positionBuilder.global().right());\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { BrnDialogClose } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: 'button[brnDrawerClose]',\n})\nexport class BrnDrawerClose extends BrnDialogClose {}\n","import { Directive, inject } from '@angular/core';\nimport {\n\ttype ExposesSide,\n\tprovideExposedSideProviderExisting,\n\tprovideExposesStateProviderExisting,\n} from '@spartan-ng/brain/core';\nimport { BrnDialogContent } from '@spartan-ng/brain/dialog';\nimport { BrnDrawer } from './brn-drawer';\n\n@Directive({\n\tselector: '[brnDrawerContent]',\n\tproviders: [\n\t\tprovideExposesStateProviderExisting(() => BrnDrawerContent),\n\t\tprovideExposedSideProviderExisting(() => BrnDrawerContent),\n\t],\n})\nexport class BrnDrawerContent<T> extends BrnDialogContent<T> implements ExposesSide {\n\tpublic readonly side = inject(BrnDrawer).directionState;\n}\n","import { Directive } from '@angular/core';\nimport { BrnDialogDescription } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnDrawerDescription]',\n\thostDirectives: [BrnDialogDescription],\n})\nexport class BrnDrawerDescription {}\n","import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, Directive, effect, ElementRef, inject, input, untracked } from '@angular/core';\nimport { BrnDialogRef } from '@spartan-ng/brain/dialog';\nimport { BrnDrawer } from './brn-drawer';\n\nconst VELOCITY_THRESHOLD = 0.4;\nconst DEFAULT_CLOSE_THRESHOLD = 0.25;\nconst SCROLL_LOCK_TIMEOUT = 100;\nconst TOUCH_SWIPE_THRESHOLD = 10;\nconst MOUSE_SWIPE_THRESHOLD = 2;\nconst OPEN_TIME_COOLDOWN = 500;\nconst TRANSITION = 'transform 0.5s cubic-bezier(0.32, 0.72, 0, 1)';\nconst OVERLAY_TRANSITION = 'opacity 0.5s cubic-bezier(0.32, 0.72, 0, 1)';\n\nfunction dampenValue(v: number): number {\n\treturn 8 * (Math.log(v + 1) - 2);\n}\n\n@Directive({\n\tselector: '[brnDrawerHandle]',\n\thost: {\n\t\trole: 'presentation',\n\t\t'(pointerdown)': '_onPointerDown($event)',\n\t},\n})\nexport class BrnDrawerHandle {\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef, { optional: true });\n\tprivate readonly _brnDrawer = inject(BrnDrawer, { optional: true });\n\tprivate readonly _element: ElementRef<HTMLElement> = inject(ElementRef);\n\tprivate readonly _document = inject(DOCUMENT);\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate _pointerId = -1;\n\n\tconstructor() {\n\t\tthis._destroyRef.onDestroy(() => this._cleanup());\n\t\teffect(() => {\n\t\t\tconst state = this._brnDialogRef?.state();\n\t\t\tuntracked(() => {\n\t\t\t\tif (state === 'open') {\n\t\t\t\t\tthis._openTime = Date.now();\n\t\t\t\t} else if (state === 'closed') {\n\t\t\t\t\tthis._openTime = null;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate _drawerEl: HTMLElement | null = null;\n\tprivate _backdropEl: HTMLElement | null = null;\n\tprivate _direction: 'bottom' | 'top' | 'left' | 'right' = 'bottom';\n\tprivate _initialBackdropOpacity = 1;\n\n\tprivate _pointerStartX = 0;\n\tprivate _pointerStartY = 0;\n\tprivate _pointerStart = 0;\n\tprivate _pointerType = '';\n\tprivate _isDragging = false;\n\tprivate _isAllowedToDrag = false;\n\tprivate _wasBeyondThreshold = false;\n\n\tprivate _openTime: number | null = null;\n\tprivate _lastTimeDragPrevented: number | null = null;\n\tprivate _dragStartTime: number | null = null;\n\n\tpublic readonly closeThreshold = input<number>(DEFAULT_CLOSE_THRESHOLD);\n\n\tprivate get _isVertical(): boolean {\n\t\treturn this._direction === 'bottom' || this._direction === 'top';\n\t}\n\n\tprivate get _isPositive(): boolean {\n\t\treturn this._direction === 'bottom' || this._direction === 'right';\n\t}\n\n\tprivate get _dimensionMultiplier(): number {\n\t\treturn this._isPositive ? 1 : -1;\n\t}\n\n\tprivate get _swipeThreshold(): number {\n\t\treturn this._pointerType === 'touch' ? TOUCH_SWIPE_THRESHOLD : MOUSE_SWIPE_THRESHOLD;\n\t}\n\n\tprotected _onPointerDown(event: PointerEvent): void {\n\t\tif (!this._brnDialogRef || !this._brnDrawer || this._isDragging) return;\n\n\t\tthis._direction = this._brnDrawer.directionState();\n\t\tthis._drawerEl = this._element.nativeElement.closest('[data-vaul-drawer-direction]');\n\t\tif (!this._drawerEl) return;\n\n\t\tthis._pointerType = event.pointerType;\n\t\tthis._pointerStartX = event.pageX;\n\t\tthis._pointerStartY = event.pageY;\n\t\tthis._pointerStart = this._isVertical ? event.pageY : event.pageX;\n\t\tthis._isDragging = true;\n\t\tthis._isAllowedToDrag = false;\n\t\tthis._wasBeyondThreshold = false;\n\t\tthis._dragStartTime = Date.now();\n\n\t\tthis._drawerEl.style.transition = 'none';\n\n\t\tif (!this._findScrollableAncestor(event.target as HTMLElement)) {\n\t\t\tthis._drawerEl.style.touchAction = 'none';\n\t\t}\n\n\t\tconst overlayWrapper = this._drawerEl.closest('.cdk-global-overlay-wrapper');\n\t\tthis._backdropEl = overlayWrapper?.querySelector('.cdk-overlay-backdrop') as HTMLElement | null;\n\t\tif (this._backdropEl) {\n\t\t\tthis._initialBackdropOpacity = parseFloat(getComputedStyle(this._backdropEl).opacity) || 1;\n\t\t}\n\n\t\tthis._pointerId = event.pointerId;\n\n\t\tthis._document.addEventListener('pointermove', this._onPointerMove, { passive: false });\n\t\tthis._document.addEventListener('pointerup', this._onPointerUp, { once: true });\n\t\tthis._document.addEventListener('pointercancel', this._onPointerCancel, { once: true });\n\t}\n\n\tprivate readonly _onPointerMove = (e: PointerEvent) => {\n\t\tif (!this._isDragging || !this._drawerEl) return;\n\n\t\tconst currentX = e.pageX;\n\t\tconst currentY = e.pageY;\n\t\tconst xDelta = currentX - this._pointerStartX;\n\t\tconst yDelta = currentY - this._pointerStartY;\n\n\t\tif (!this._wasBeyondThreshold) {\n\t\t\tconst absX = Math.abs(xDelta);\n\t\t\tconst absY = Math.abs(yDelta);\n\t\t\tif (this._isVertical) {\n\t\t\t\tif (absY < this._swipeThreshold) {\n\t\t\t\t\tif (absX >= this._swipeThreshold) {\n\t\t\t\t\t\tthis._pointerStartX = currentX;\n\t\t\t\t\t\tthis._pointerStartY = currentY;\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (absX > absY) return;\n\t\t\t} else {\n\t\t\t\tif (absX < this._swipeThreshold) {\n\t\t\t\t\tif (absY >= this._swipeThreshold) {\n\t\t\t\t\t\tthis._pointerStartX = currentX;\n\t\t\t\t\t\tthis._pointerStartY = currentY;\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (absY > absX) return;\n\t\t\t}\n\t\t\tthis._wasBeyondThreshold = true;\n\t\t}\n\n\t\tconst currentPosition = this._isVertical ? currentY : currentX;\n\t\tconst draggedDistance = (this._pointerStart - currentPosition) * this._dimensionMultiplier;\n\t\tconst isDraggingInDirection = draggedDistance > 0;\n\t\tconst absDraggedDistance = Math.abs(draggedDistance);\n\n\t\tif (!this._isAllowedToDrag && !this._shouldDrag(e.target ?? this._element.nativeElement, isDraggingInDirection))\n\t\t\treturn;\n\n\t\tthis._isAllowedToDrag = true;\n\t\ttry {\n\t\t\tthis._element.nativeElement.setPointerCapture(e.pointerId);\n\t\t} catch {\n\t\t\t/* empty - pointer capture not supported */\n\t\t}\n\t\tthis._drawerEl.classList.add('vaul-dragging');\n\n\t\tconst dimension = this._isVertical ? this._drawerEl.offsetHeight : this._drawerEl.offsetWidth;\n\n\t\tconst progress = dimension > 0 ? Math.min(absDraggedDistance / dimension, 1) : 0;\n\n\t\tif (isDraggingInDirection) {\n\t\t\tconst dampened = dampenValue(draggedDistance);\n\t\t\tconst translateValue = Math.min(dampened * -1, 0) * this._dimensionMultiplier;\n\t\t\tconst prop = this._isVertical ? 'translateY' : 'translateX';\n\t\t\tthis._drawerEl.style.transform = `${prop}(${translateValue}px)`;\n\t\t\tif (this._backdropEl) {\n\t\t\t\tthis._backdropEl.style.opacity = String(Math.max(this._initialBackdropOpacity - progress * 0.3, 0));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tconst translateValue = absDraggedDistance * this._dimensionMultiplier;\n\t\tconst prop = this._isVertical ? 'translateY' : 'translateX';\n\t\tthis._drawerEl.style.transform = `${prop}(${translateValue}px)`;\n\n\t\tif (this._backdropEl) {\n\t\t\tthis._backdropEl.style.opacity = String(Math.max(this._initialBackdropOpacity - progress, 0));\n\t\t}\n\t};\n\n\tprivate readonly _onPointerUp = (e: PointerEvent) => {\n\t\tif (!this._isDragging || !this._drawerEl) {\n\t\t\tthis._cleanup();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._drawerEl.classList.remove('vaul-dragging');\n\n\t\tconst swipeAmount = this._getTranslate();\n\n\t\tif (!this._isAllowedToDrag || swipeAmount === null || Number.isNaN(swipeAmount)) {\n\t\t\tthis._resetDrawer(true);\n\t\t\tthis._cleanup();\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentPosition = this._isVertical ? e.pageY : e.pageX;\n\t\tconst distMoved = this._pointerStart - currentPosition;\n\t\tconst timeTaken = Date.now() - (this._dragStartTime ?? Date.now());\n\t\tconst velocity = timeTaken > 0 ? Math.abs(distMoved) / timeTaken : 0;\n\n\t\tif (this._isPositive ? distMoved > 0 : distMoved < 0) {\n\t\t\tthis._resetDrawer(true);\n\t\t\tthis._cleanup();\n\t\t\treturn;\n\t\t}\n\n\t\tif (velocity > VELOCITY_THRESHOLD) {\n\t\t\tthis._animateAndClose();\n\t\t\tthis._cleanup();\n\t\t\tthis._brnDialogRef?.close();\n\t\t\treturn;\n\t\t}\n\n\t\tconst dimension = this._isVertical ? this._drawerEl.offsetHeight : this._drawerEl.offsetWidth;\n\t\tif (Math.abs(swipeAmount) >= dimension * this.closeThreshold()) {\n\t\t\tthis._animateAndClose();\n\t\t\tthis._cleanup();\n\t\t\tthis._brnDialogRef?.close();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._resetDrawer(true);\n\t\tthis._cleanup();\n\t};\n\n\tprivate readonly _onPointerCancel = () => {\n\t\tthis._resetDrawer(true);\n\t\tthis._cleanup();\n\t};\n\n\tprivate _shouldDrag(el: EventTarget, isDraggingInDirection: boolean): boolean {\n\t\tif (this._direction === 'left' || this._direction === 'right') return true;\n\n\t\tconst now = Date.now();\n\n\t\tif (this._openTime !== null && now - this._openTime < OPEN_TIME_COOLDOWN) return false;\n\n\t\tconst currentTranslate = this._getTranslate();\n\t\tif (this._isPositive ? currentTranslate > 0 : currentTranslate < 0) return true;\n\n\t\tif (\n\t\t\tthis._lastTimeDragPrevented !== null &&\n\t\t\tnow - this._lastTimeDragPrevented < SCROLL_LOCK_TIMEOUT &&\n\t\t\tcurrentTranslate === 0\n\t\t) {\n\t\t\tthis._lastTimeDragPrevented = now;\n\t\t\treturn false;\n\t\t}\n\n\t\tif (isDraggingInDirection) {\n\t\t\tthis._lastTimeDragPrevented = now;\n\t\t\treturn false;\n\t\t}\n\n\t\tlet element = el as HTMLElement | null;\n\t\twhile (element) {\n\t\t\tif (element.scrollHeight > element.clientHeight) {\n\t\t\t\tif (element.scrollTop !== 0) {\n\t\t\t\t\tthis._lastTimeDragPrevented = now;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (element.getAttribute('role') === 'dialog') return true;\n\t\t\t}\n\t\t\telement = element.parentElement;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tprivate _getTranslate(): number {\n\t\tif (!this._drawerEl) return 0;\n\t\tconst style = getComputedStyle(this._drawerEl);\n\t\tconst transform = style.transform || (style as any).webkitTransform;\n\t\tif (!transform || transform === 'none') return 0;\n\t\tlet mat = transform.match(/^matrix3d\\((.+)\\)$/);\n\t\tif (mat) {\n\t\t\treturn parseFloat(mat[1].split(', ')[this._isVertical ? 13 : 12]);\n\t\t}\n\t\tmat = transform.match(/^matrix\\((.+)\\)$/);\n\t\tif (mat) {\n\t\t\treturn parseFloat(mat[1].split(', ')[this._isVertical ? 5 : 4]);\n\t\t}\n\t\treturn 0;\n\t}\n\n\tprivate _resetDrawer(animate = true): void {\n\t\tif (this._drawerEl) {\n\t\t\tthis._drawerEl.style.transition = animate ? TRANSITION : 'none';\n\t\t\tthis._drawerEl.style.transform = '';\n\t\t}\n\t\tif (this._backdropEl) {\n\t\t\tthis._backdropEl.style.transition = animate ? OVERLAY_TRANSITION : 'none';\n\t\t\tthis._backdropEl.style.opacity = String(this._initialBackdropOpacity);\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\tif (this._drawerEl) this._drawerEl.style.transition = '';\n\t\t\tif (this._backdropEl) this._backdropEl.style.transition = '';\n\t\t}, 500);\n\t}\n\n\tprivate _animateAndClose(): void {\n\t\tif (!this._drawerEl) return;\n\t\tconst dimension = this._isVertical ? this._drawerEl.offsetHeight : this._drawerEl.offsetWidth;\n\t\tconst targetClose = this._isPositive ? dimension : -dimension;\n\t\tconst prop = this._isVertical ? 'translateY' : 'translateX';\n\t\tthis._drawerEl.style.transition = 'transform 0.3s cubic-bezier(0.32, 0.72, 0, 1)';\n\t\tthis._drawerEl.style.transform = `${prop}(${targetClose}px)`;\n\t\tthis._drawerEl.style.animation = 'none';\n\t\tif (this._backdropEl) {\n\t\t\tthis._backdropEl.style.transition = 'opacity 0.3s cubic-bezier(0.32, 0.72, 0, 1)';\n\t\t\tthis._backdropEl.style.opacity = '0';\n\t\t}\n\t}\n\n\tprivate _cleanup(): void {\n\t\tthis._isDragging = false;\n\t\tthis._isAllowedToDrag = false;\n\t\tif (this._drawerEl) {\n\t\t\tthis._drawerEl.style.touchAction = '';\n\t\t}\n\t\tif (this._pointerId !== -1) {\n\t\t\ttry {\n\t\t\t\tthis._element.nativeElement.releasePointerCapture(this._pointerId);\n\t\t\t} catch {\n\t\t\t\t/* empty */\n\t\t\t}\n\t\t\tthis._pointerId = -1;\n\t\t}\n\t\tthis._document.removeEventListener('pointermove', this._onPointerMove);\n\t}\n\n\tprivate _findScrollableAncestor(element: HTMLElement | null): HTMLElement | null {\n\t\tif (!element) return null;\n\t\tconst scrollProp = this._isVertical ? 'overflow-y' : 'overflow-x';\n\t\tconst sizeProp = this._isVertical ? 'scrollHeight' : 'scrollWidth';\n\t\tconst clientProp = this._isVertical ? 'clientHeight' : 'clientWidth';\n\t\tlet el: HTMLElement | null = element.parentElement;\n\t\twhile (el) {\n\t\t\tconst overflow = getComputedStyle(el)[scrollProp as any];\n\t\t\tif ((overflow === 'auto' || overflow === 'scroll') && (el as any)[sizeProp] > (el as any)[clientProp]) {\n\t\t\t\treturn el;\n\t\t\t}\n\t\t\tel = el.parentElement;\n\t\t}\n\t\treturn null;\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { provideCustomClassSettableExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogOverlay } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnDrawerOverlay],brn-drawer-overlay',\n\tproviders: [provideCustomClassSettableExisting(() => BrnDrawerOverlay)],\n})\nexport class BrnDrawerOverlay extends BrnDialogOverlay {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogTitle } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnDrawerTitle]',\n\thostDirectives: [BrnDialogTitle],\n})\nexport class BrnDrawerTitle {}\n","import { Directive, inject, input } from '@angular/core';\nimport { BrnDialogTrigger } from '@spartan-ng/brain/dialog';\nimport { BrnDrawer } from './brn-drawer';\n\n@Directive({\n\tselector: 'button[brnDrawerTrigger]',\n})\nexport class BrnDrawerTrigger extends BrnDialogTrigger {\n\tprivate readonly _drawer = inject(BrnDrawer, { optional: true });\n\n\tpublic readonly direction = input<'bottom' | 'top' | 'left' | 'right' | undefined>(undefined);\n\n\toverride open() {\n\t\tconst direction = this.direction();\n\t\tif (this._drawer && direction) {\n\t\t\tthis._drawer.directionState.set(direction);\n\t\t}\n\t\tsuper.open();\n\t}\n}\n","import { BrnDrawer } from './lib/brn-drawer';\nimport { BrnDrawerClose } from './lib/brn-drawer-close';\nimport { BrnDrawerContent } from './lib/brn-drawer-content';\nimport { BrnDrawerDescription } from './lib/brn-drawer-description';\nimport { BrnDrawerHandle } from './lib/brn-drawer-handle';\nimport { BrnDrawerOverlay } from './lib/brn-drawer-overlay';\nimport { BrnDrawerTitle } from './lib/brn-drawer-title';\nimport { BrnDrawerTrigger } from './lib/brn-drawer-trigger';\n\nexport * from './lib/brn-drawer';\nexport * from './lib/brn-drawer-close';\nexport * from './lib/brn-drawer-content';\nexport * from './lib/brn-drawer-description';\nexport * from './lib/brn-drawer-handle';\nexport * from './lib/brn-drawer-overlay';\nexport * from './lib/brn-drawer-title';\nexport * from './lib/brn-drawer-trigger';\n\nexport const BrnDrawerImports = [\n\tBrnDrawer,\n\tBrnDrawerOverlay,\n\tBrnDrawerTrigger,\n\tBrnDrawerClose,\n\tBrnDrawerContent,\n\tBrnDrawerTitle,\n\tBrnDrawerDescription,\n\tBrnDrawerHandle,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAaM,MAAO,SAAU,SAAQ,SAAS,CAAA;AACvB,IAAA,SAAS,GAAG,KAAK,CAAsC,QAAQ,gFAAC;IAChE,cAAc,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAErE,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE;YACvC,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;AAC3B,oBAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;gBACzE;AACA,gBAAA,IAAI,SAAS,KAAK,KAAK,EAAE;AACxB,oBAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;gBACtE;AACA,gBAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AACzB,oBAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;gBACvE;AACA,gBAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AAC1B,oBAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;gBACxE;AACD,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;2HAvBY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAPV;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,WAAW,EAAE,UAAU,EAAC,MAAM,SAAS,EAAC;AACxC,aAAA;AACD,SAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAEW,SAAS,EAAA,UAAA,EAAA,CAAA;kBAVrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,SAAS,EAAE;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,SAAS;AAClB,4BAAA,WAAW,EAAE,UAAU,EAAC,eAAe,EAAC;AACxC,yBAAA;AACD,qBAAA;AACD,iBAAA;;;ACNK,MAAO,cAAe,SAAQ,cAAc,CAAA;2HAArC,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,iBAAA;;;ACWK,MAAO,gBAAoB,SAAQ,gBAAmB,CAAA;AAC3C,IAAA,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc;2HAD3C,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,SAAA,EALjB;AACV,YAAA,mCAAmC,EAAC,MAAM,gBAAgB,EAAC;AAC3D,YAAA,kCAAkC,EAAC,MAAM,gBAAgB,EAAC;AAC1D,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAEW,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE;AACV,wBAAA,mCAAmC,EAAC,MAAK,gBAAiB,EAAC;AAC3D,wBAAA,kCAAkC,EAAC,MAAK,gBAAiB,EAAC;AAC1D,qBAAA;AACD,iBAAA;;;MCRY,oBAAoB,CAAA;2HAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,cAAc,EAAE,CAAC,oBAAoB,CAAC;AACtC,iBAAA;;;ACDD,MAAM,kBAAkB,GAAG,GAAG;AAC9B,MAAM,uBAAuB,GAAG,IAAI;AACpC,MAAM,mBAAmB,GAAG,GAAG;AAC/B,MAAM,qBAAqB,GAAG,EAAE;AAChC,MAAM,qBAAqB,GAAG,CAAC;AAC/B,MAAM,kBAAkB,GAAG,GAAG;AAC9B,MAAM,UAAU,GAAG,+CAA+C;AAClE,MAAM,kBAAkB,GAAG,6CAA6C;AAExE,SAAS,WAAW,CAAC,CAAS,EAAA;AAC7B,IAAA,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACjC;MASa,eAAe,CAAA;IACV,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxD,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAClD,IAAA,QAAQ,GAA4B,MAAM,CAAC,UAAU,CAAC;AACtD,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IACzC,UAAU,GAAG,CAAC,CAAC;AAEvB,IAAA,WAAA,GAAA;AACC,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjD,MAAM,CAAC,MAAK;YACX,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE;YACzC,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACrB,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;gBAC5B;AAAO,qBAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AAC9B,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;gBACtB;AACD,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;IAEQ,SAAS,GAAuB,IAAI;IACpC,WAAW,GAAuB,IAAI;IACtC,UAAU,GAAwC,QAAQ;IAC1D,uBAAuB,GAAG,CAAC;IAE3B,cAAc,GAAG,CAAC;IAClB,cAAc,GAAG,CAAC;IAClB,aAAa,GAAG,CAAC;IACjB,YAAY,GAAG,EAAE;IACjB,WAAW,GAAG,KAAK;IACnB,gBAAgB,GAAG,KAAK;IACxB,mBAAmB,GAAG,KAAK;IAE3B,SAAS,GAAkB,IAAI;IAC/B,sBAAsB,GAAkB,IAAI;IAC5C,cAAc,GAAkB,IAAI;AAE5B,IAAA,cAAc,GAAG,KAAK,CAAS,uBAAuB,qFAAC;AAEvE,IAAA,IAAY,WAAW,GAAA;QACtB,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;IACjE;AAEA,IAAA,IAAY,WAAW,GAAA;QACtB,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO;IACnE;AAEA,IAAA,IAAY,oBAAoB,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC;AAEA,IAAA,IAAY,eAAe,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,OAAO,GAAG,qBAAqB,GAAG,qBAAqB;IACrF;AAEU,IAAA,cAAc,CAAC,KAAmB,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW;YAAE;QAEjE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;AAClD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,8BAA8B,CAAC;QACpF,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AAErB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW;AACrC,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,KAAK;AACjC,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,KAAK;AACjC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AACjE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;QAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM;QAExC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,MAAqB,CAAC,EAAE;YAC/D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM;QAC1C;QAEA,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,6BAA6B,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,cAAc,EAAE,aAAa,CAAC,uBAAuB,CAAuB;AAC/F,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3F;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS;AAEjC,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACvF,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC/E,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxF;AAEiB,IAAA,cAAc,GAAG,CAAC,CAAe,KAAI;QACrD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AAE1C,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK;AACxB,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK;AACxB,QAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,cAAc;AAC7C,QAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,cAAc;AAE7C,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7B,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AAChC,oBAAA,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AACjC,wBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;AAC9B,wBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;oBAC/B;oBACA;gBACD;gBACA,IAAI,IAAI,GAAG,IAAI;oBAAE;YAClB;iBAAO;AACN,gBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AAChC,oBAAA,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AACjC,wBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;AAC9B,wBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;oBAC/B;oBACA;gBACD;gBACA,IAAI,IAAI,GAAG,IAAI;oBAAE;YAClB;AACA,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QAChC;AAEA,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,GAAG,QAAQ;AAC9D,QAAA,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,eAAe,IAAI,IAAI,CAAC,oBAAoB;AAC1F,QAAA,MAAM,qBAAqB,GAAG,eAAe,GAAG,CAAC;QACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;QAEpD,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;YAC9G;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI;YACH,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D;AAAE,QAAA,MAAM;;QAER;QACA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;QAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;QAE7F,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,GAAG,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC;QAEhF,IAAI,qBAAqB,EAAE;AAC1B,YAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,eAAe,CAAC;AAC7C,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB;AAC7E,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,YAAY,GAAG,YAAY;AAC3D,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,cAAc,CAAA,GAAA,CAAK;AAC/D,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YACpG;YACA;QACD;QAEA,CAAC,CAAC,cAAc,EAAE;AAElB,QAAA,MAAM,cAAc,GAAG,kBAAkB,GAAG,IAAI,CAAC,oBAAoB;AACrE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,YAAY,GAAG,YAAY;AAC3D,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,cAAc,CAAA,GAAA,CAAK;AAE/D,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC9F;AACD,IAAA,CAAC;AAEgB,IAAA,YAAY,GAAG,CAAC,CAAe,KAAI;QACnD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACzC,IAAI,CAAC,QAAQ,EAAE;YACf;QACD;QAEA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC;AAEhD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE;AAExC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,WAAW,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AAChF,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,QAAQ,EAAE;YACf;QACD;AAEA,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AAC5D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,eAAe;AACtD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,CAAC;AAEpE,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE;AACrD,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,QAAQ,EAAE;YACf;QACD;AAEA,QAAA,IAAI,QAAQ,GAAG,kBAAkB,EAAE;YAClC,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE;YAC3B;QACD;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;AAC7F,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE;YAC/D,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE;YAC3B;QACD;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,QAAQ,EAAE;AAChB,IAAA,CAAC;IAEgB,gBAAgB,GAAG,MAAK;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,QAAQ,EAAE;AAChB,IAAA,CAAC;IAEO,WAAW,CAAC,EAAe,EAAE,qBAA8B,EAAA;QAClE,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO;AAAE,YAAA,OAAO,IAAI;AAE1E,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAEtB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,kBAAkB;AAAE,YAAA,OAAO,KAAK;AAEtF,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE;AAC7C,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,gBAAgB,GAAG,CAAC,GAAG,gBAAgB,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI;AAE/E,QAAA,IACC,IAAI,CAAC,sBAAsB,KAAK,IAAI;AACpC,YAAA,GAAG,GAAG,IAAI,CAAC,sBAAsB,GAAG,mBAAmB;YACvD,gBAAgB,KAAK,CAAC,EACrB;AACD,YAAA,IAAI,CAAC,sBAAsB,GAAG,GAAG;AACjC,YAAA,OAAO,KAAK;QACb;QAEA,IAAI,qBAAqB,EAAE;AAC1B,YAAA,IAAI,CAAC,sBAAsB,GAAG,GAAG;AACjC,YAAA,OAAO,KAAK;QACb;QAEA,IAAI,OAAO,GAAG,EAAwB;QACtC,OAAO,OAAO,EAAE;YACf,IAAI,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE;AAChD,gBAAA,IAAI,OAAO,CAAC,SAAS,KAAK,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,sBAAsB,GAAG,GAAG;AACjC,oBAAA,OAAO,KAAK;gBACb;AACA,gBAAA,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ;AAAE,oBAAA,OAAO,IAAI;YAC3D;AACA,YAAA,OAAO,GAAG,OAAO,CAAC,aAAa;QAChC;AAEA,QAAA,OAAO,IAAI;IACZ;IAEQ,aAAa,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,CAAC;QAC7B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAK,KAAa,CAAC,eAAe;AACnE,QAAA,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,MAAM;AAAE,YAAA,OAAO,CAAC;QAChD,IAAI,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC;QAC/C,IAAI,GAAG,EAAE;YACR,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAClE;AACA,QAAA,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACzC,IAAI,GAAG,EAAE;YACR,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE;AACA,QAAA,OAAO,CAAC;IACT;IAEQ,YAAY,CAAC,OAAO,GAAG,IAAI,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM;YAC/D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;QACpC;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,GAAG,kBAAkB,GAAG,MAAM;AACzE,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC;QACtE;QACA,UAAU,CAAC,MAAK;YACf,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;YACxD,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;QAC7D,CAAC,EAAE,GAAG,CAAC;IACR;IAEQ,gBAAgB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;AAC7F,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,SAAS,GAAG,CAAC,SAAS;AAC7D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,YAAY,GAAG,YAAY;QAC3D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,+CAA+C;AACjF,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,WAAW,CAAA,GAAA,CAAK;QAC5D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM;AACvC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,6CAA6C;YACjF,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;QACrC;IACD;IAEQ,QAAQ,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE;QACtC;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,EAAE;AAC3B,YAAA,IAAI;gBACH,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC;YACnE;AAAE,YAAA,MAAM;;YAER;AACA,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACrB;QACA,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC;IACvE;AAEQ,IAAA,uBAAuB,CAAC,OAA2B,EAAA;AAC1D,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AACzB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,YAAY,GAAG,YAAY;AACjE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,cAAc,GAAG,aAAa;AAClE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,cAAc,GAAG,aAAa;AACpE,QAAA,IAAI,EAAE,GAAuB,OAAO,CAAC,aAAa;QAClD,OAAO,EAAE,EAAE;YACV,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,UAAiB,CAAC;YACxD,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,QAAQ,KAAM,EAAU,CAAC,QAAQ,CAAC,GAAI,EAAU,CAAC,UAAU,CAAC,EAAE;AACtG,gBAAA,OAAO,EAAE;YACV;AACA,YAAA,EAAE,GAAG,EAAE,CAAC,aAAa;QACtB;AACA,QAAA,OAAO,IAAI;IACZ;2HA7UY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACL,wBAAA,IAAI,EAAE,cAAc;AACpB,wBAAA,eAAe,EAAE,wBAAwB;AACzC,qBAAA;AACD,iBAAA;;;AChBK,MAAO,gBAAiB,SAAQ,gBAAgB,CAAA;2HAAzC,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,SAAA,EAFjB,CAAC,kCAAkC,EAAC,MAAM,gBAAgB,EAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAE3D,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,uCAAuC;oBACjD,SAAS,EAAE,CAAC,kCAAkC,EAAC,MAAK,gBAAiB,EAAC,CAAC;AACvE,iBAAA;;;MCAY,cAAc,CAAA;2HAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,cAAc,EAAE,CAAC,cAAc,CAAC;AAChC,iBAAA;;;ACCK,MAAO,gBAAiB,SAAQ,gBAAgB,CAAA;IACpC,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEhD,IAAA,SAAS,GAAG,KAAK,CAAkD,SAAS,gFAAC;IAEpF,IAAI,GAAA;AACZ,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE;YAC9B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;QAC3C;QACA,KAAK,CAAC,IAAI,EAAE;IACb;2HAXY,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,iBAAA;;;ACYM,MAAM,gBAAgB,GAAG;IAC/B,SAAS;IACT,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,oBAAoB;IACpB,eAAe;;;AC1BhB;;AAEG;;;;"}
1
+ {"version":3,"file":"spartan-ng-brain-drawer.mjs","sources":["../../../../libs/brain/drawer/src/lib/brn-drawer.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-close.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-content.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-description.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-handle.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-overlay.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-title.ts","../../../../libs/brain/drawer/src/lib/brn-drawer-trigger.ts","../../../../libs/brain/drawer/src/index.ts","../../../../libs/brain/drawer/src/spartan-ng-brain-drawer.ts"],"sourcesContent":["import { Directive, effect, forwardRef, input, linkedSignal, untracked } from '@angular/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnDrawer],brn-drawer',\n\texportAs: 'brnDrawer',\n\tproviders: [\n\t\t{\n\t\t\tprovide: BrnDialog,\n\t\t\tuseExisting: forwardRef(() => BrnDrawer),\n\t\t},\n\t],\n})\nexport class BrnDrawer extends BrnDialog {\n\tpublic readonly direction = input<'bottom' | 'top' | 'left' | 'right'>('bottom');\n\tpublic readonly directionState = linkedSignal(() => this.direction());\n\n\tconstructor() {\n\t\tsuper();\n\t\teffect(() => {\n\t\t\tconst direction = this.directionState();\n\t\t\tuntracked(() => {\n\t\t\t\tif (direction === 'bottom') {\n\t\t\t\t\tthis.mutablePositionStrategy.set(this.positionBuilder.global().bottom());\n\t\t\t\t}\n\t\t\t\tif (direction === 'top') {\n\t\t\t\t\tthis.mutablePositionStrategy.set(this.positionBuilder.global().top());\n\t\t\t\t}\n\t\t\t\tif (direction === 'left') {\n\t\t\t\t\tthis.mutablePositionStrategy.set(this.positionBuilder.global().left());\n\t\t\t\t}\n\t\t\t\tif (direction === 'right') {\n\t\t\t\t\tthis.mutablePositionStrategy.set(this.positionBuilder.global().right());\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { BrnDialogClose } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: 'button[brnDrawerClose]',\n})\nexport class BrnDrawerClose extends BrnDialogClose {}\n","import { Directive, inject } from '@angular/core';\nimport {\n\ttype ExposesSide,\n\tprovideExposedSideProviderExisting,\n\tprovideExposesStateProviderExisting,\n} from '@spartan-ng/brain/core';\nimport { BrnDialogContent } from '@spartan-ng/brain/dialog';\nimport { BrnDrawer } from './brn-drawer';\n\n@Directive({\n\tselector: '[brnDrawerContent]',\n\tproviders: [\n\t\tprovideExposesStateProviderExisting(() => BrnDrawerContent),\n\t\tprovideExposedSideProviderExisting(() => BrnDrawerContent),\n\t],\n})\nexport class BrnDrawerContent<T> extends BrnDialogContent<T> implements ExposesSide {\n\tpublic readonly side = inject(BrnDrawer).directionState;\n}\n","import { Directive } from '@angular/core';\nimport { BrnDialogDescription } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnDrawerDescription]',\n\thostDirectives: [BrnDialogDescription],\n})\nexport class BrnDrawerDescription {}\n","import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, Directive, effect, ElementRef, inject, input, untracked } from '@angular/core';\nimport { BrnDialogRef } from '@spartan-ng/brain/dialog';\nimport { BrnDrawer } from './brn-drawer';\n\nconst VELOCITY_THRESHOLD = 0.4;\nconst DEFAULT_CLOSE_THRESHOLD = 0.25;\nconst SCROLL_LOCK_TIMEOUT = 100;\nconst TOUCH_SWIPE_THRESHOLD = 10;\nconst MOUSE_SWIPE_THRESHOLD = 2;\nconst OPEN_TIME_COOLDOWN = 500;\nconst TRANSITION = 'transform 0.5s cubic-bezier(0.32, 0.72, 0, 1)';\nconst OVERLAY_TRANSITION = 'opacity 0.5s cubic-bezier(0.32, 0.72, 0, 1)';\n\nfunction dampenValue(v: number): number {\n\treturn 8 * (Math.log(v + 1) - 2);\n}\n\n@Directive({\n\tselector: '[brnDrawerHandle]',\n\thost: {\n\t\trole: 'presentation',\n\t\t'(pointerdown)': '_onPointerDown($event)',\n\t},\n})\nexport class BrnDrawerHandle {\n\tprivate readonly _brnDialogRef = inject(BrnDialogRef, { optional: true });\n\tprivate readonly _brnDrawer = inject(BrnDrawer, { optional: true });\n\tprivate readonly _element: ElementRef<HTMLElement> = inject(ElementRef);\n\tprivate readonly _document = inject(DOCUMENT);\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate _pointerId = -1;\n\n\tconstructor() {\n\t\tthis._destroyRef.onDestroy(() => {\n\t\t\tthis._cleanup();\n\t\t\t// Cancel any pending reset timeout: on destroy its target elements are gone, so the\n\t\t\t// deferred style write is a stale no-op that also retains this directive for ~500ms.\n\t\t\tthis._clearResetTimeout();\n\t\t});\n\t\teffect(() => {\n\t\t\tconst state = this._brnDialogRef?.state();\n\t\t\tuntracked(() => {\n\t\t\t\tif (state === 'open') {\n\t\t\t\t\tthis._openTime = Date.now();\n\t\t\t\t} else if (state === 'closed') {\n\t\t\t\t\tthis._openTime = null;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate _drawerEl: HTMLElement | null = null;\n\tprivate _backdropEl: HTMLElement | null = null;\n\tprivate _direction: 'bottom' | 'top' | 'left' | 'right' = 'bottom';\n\tprivate _initialBackdropOpacity = 1;\n\n\tprivate _pointerStartX = 0;\n\tprivate _pointerStartY = 0;\n\tprivate _pointerStart = 0;\n\tprivate _pointerType = '';\n\tprivate _isDragging = false;\n\tprivate _isAllowedToDrag = false;\n\tprivate _wasBeyondThreshold = false;\n\n\tprivate _openTime: number | null = null;\n\tprivate _lastTimeDragPrevented: number | null = null;\n\tprivate _dragStartTime: number | null = null;\n\tprivate _resetTimeout: ReturnType<typeof setTimeout> | null = null;\n\n\tpublic readonly closeThreshold = input<number>(DEFAULT_CLOSE_THRESHOLD);\n\n\tprivate get _isVertical(): boolean {\n\t\treturn this._direction === 'bottom' || this._direction === 'top';\n\t}\n\n\tprivate get _isPositive(): boolean {\n\t\treturn this._direction === 'bottom' || this._direction === 'right';\n\t}\n\n\tprivate get _dimensionMultiplier(): number {\n\t\treturn this._isPositive ? 1 : -1;\n\t}\n\n\tprivate get _swipeThreshold(): number {\n\t\treturn this._pointerType === 'touch' ? TOUCH_SWIPE_THRESHOLD : MOUSE_SWIPE_THRESHOLD;\n\t}\n\n\tprotected _onPointerDown(event: PointerEvent): void {\n\t\tif (!this._brnDialogRef || !this._brnDrawer || this._isDragging) return;\n\n\t\tthis._direction = this._brnDrawer.directionState();\n\t\tthis._drawerEl = this._element.nativeElement.closest('[data-vaul-drawer-direction]');\n\t\tif (!this._drawerEl) return;\n\n\t\tthis._pointerType = event.pointerType;\n\t\tthis._pointerStartX = event.pageX;\n\t\tthis._pointerStartY = event.pageY;\n\t\tthis._pointerStart = this._isVertical ? event.pageY : event.pageX;\n\t\tthis._isDragging = true;\n\t\tthis._isAllowedToDrag = false;\n\t\tthis._wasBeyondThreshold = false;\n\t\tthis._dragStartTime = Date.now();\n\n\t\tthis._drawerEl.style.transition = 'none';\n\n\t\tif (!this._findScrollableAncestor(event.target as HTMLElement)) {\n\t\t\tthis._drawerEl.style.touchAction = 'none';\n\t\t}\n\n\t\tconst overlayWrapper = this._drawerEl.closest('.cdk-global-overlay-wrapper');\n\t\tthis._backdropEl = overlayWrapper?.querySelector('.cdk-overlay-backdrop') as HTMLElement | null;\n\t\tif (this._backdropEl) {\n\t\t\tthis._initialBackdropOpacity = parseFloat(getComputedStyle(this._backdropEl).opacity) || 1;\n\t\t}\n\n\t\tthis._pointerId = event.pointerId;\n\n\t\tthis._document.addEventListener('pointermove', this._onPointerMove, { passive: false });\n\t\tthis._document.addEventListener('pointerup', this._onPointerUp, { once: true });\n\t\tthis._document.addEventListener('pointercancel', this._onPointerCancel, { once: true });\n\t}\n\n\tprivate readonly _onPointerMove = (e: PointerEvent) => {\n\t\tif (!this._isDragging || !this._drawerEl) return;\n\n\t\tconst currentX = e.pageX;\n\t\tconst currentY = e.pageY;\n\t\tconst xDelta = currentX - this._pointerStartX;\n\t\tconst yDelta = currentY - this._pointerStartY;\n\n\t\tif (!this._wasBeyondThreshold) {\n\t\t\tconst absX = Math.abs(xDelta);\n\t\t\tconst absY = Math.abs(yDelta);\n\t\t\tif (this._isVertical) {\n\t\t\t\tif (absY < this._swipeThreshold) {\n\t\t\t\t\tif (absX >= this._swipeThreshold) {\n\t\t\t\t\t\tthis._pointerStartX = currentX;\n\t\t\t\t\t\tthis._pointerStartY = currentY;\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (absX > absY) return;\n\t\t\t} else {\n\t\t\t\tif (absX < this._swipeThreshold) {\n\t\t\t\t\tif (absY >= this._swipeThreshold) {\n\t\t\t\t\t\tthis._pointerStartX = currentX;\n\t\t\t\t\t\tthis._pointerStartY = currentY;\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (absY > absX) return;\n\t\t\t}\n\t\t\tthis._wasBeyondThreshold = true;\n\t\t}\n\n\t\tconst currentPosition = this._isVertical ? currentY : currentX;\n\t\tconst draggedDistance = (this._pointerStart - currentPosition) * this._dimensionMultiplier;\n\t\tconst isDraggingInDirection = draggedDistance > 0;\n\t\tconst absDraggedDistance = Math.abs(draggedDistance);\n\n\t\tif (!this._isAllowedToDrag && !this._shouldDrag(e.target ?? this._element.nativeElement, isDraggingInDirection))\n\t\t\treturn;\n\n\t\tthis._isAllowedToDrag = true;\n\t\ttry {\n\t\t\tthis._element.nativeElement.setPointerCapture(e.pointerId);\n\t\t} catch {\n\t\t\t/* empty - pointer capture not supported */\n\t\t}\n\t\tthis._drawerEl.classList.add('vaul-dragging');\n\n\t\tconst dimension = this._isVertical ? this._drawerEl.offsetHeight : this._drawerEl.offsetWidth;\n\n\t\tconst progress = dimension > 0 ? Math.min(absDraggedDistance / dimension, 1) : 0;\n\n\t\tif (isDraggingInDirection) {\n\t\t\tconst dampened = dampenValue(draggedDistance);\n\t\t\tconst translateValue = Math.min(dampened * -1, 0) * this._dimensionMultiplier;\n\t\t\tconst prop = this._isVertical ? 'translateY' : 'translateX';\n\t\t\tthis._drawerEl.style.transform = `${prop}(${translateValue}px)`;\n\t\t\tif (this._backdropEl) {\n\t\t\t\tthis._backdropEl.style.opacity = String(Math.max(this._initialBackdropOpacity - progress * 0.3, 0));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tconst translateValue = absDraggedDistance * this._dimensionMultiplier;\n\t\tconst prop = this._isVertical ? 'translateY' : 'translateX';\n\t\tthis._drawerEl.style.transform = `${prop}(${translateValue}px)`;\n\n\t\tif (this._backdropEl) {\n\t\t\tthis._backdropEl.style.opacity = String(Math.max(this._initialBackdropOpacity - progress, 0));\n\t\t}\n\t};\n\n\tprivate readonly _onPointerUp = (e: PointerEvent) => {\n\t\tif (!this._isDragging || !this._drawerEl) {\n\t\t\tthis._cleanup();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._drawerEl.classList.remove('vaul-dragging');\n\n\t\tconst swipeAmount = this._getTranslate();\n\n\t\tif (!this._isAllowedToDrag || swipeAmount === null || Number.isNaN(swipeAmount)) {\n\t\t\tthis._resetDrawer(true);\n\t\t\tthis._cleanup();\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentPosition = this._isVertical ? e.pageY : e.pageX;\n\t\tconst distMoved = this._pointerStart - currentPosition;\n\t\tconst timeTaken = Date.now() - (this._dragStartTime ?? Date.now());\n\t\tconst velocity = timeTaken > 0 ? Math.abs(distMoved) / timeTaken : 0;\n\n\t\tif (this._isPositive ? distMoved > 0 : distMoved < 0) {\n\t\t\tthis._resetDrawer(true);\n\t\t\tthis._cleanup();\n\t\t\treturn;\n\t\t}\n\n\t\tif (velocity > VELOCITY_THRESHOLD) {\n\t\t\tthis._animateAndClose();\n\t\t\tthis._cleanup();\n\t\t\tthis._brnDialogRef?.close();\n\t\t\treturn;\n\t\t}\n\n\t\tconst dimension = this._isVertical ? this._drawerEl.offsetHeight : this._drawerEl.offsetWidth;\n\t\tif (Math.abs(swipeAmount) >= dimension * this.closeThreshold()) {\n\t\t\tthis._animateAndClose();\n\t\t\tthis._cleanup();\n\t\t\tthis._brnDialogRef?.close();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._resetDrawer(true);\n\t\tthis._cleanup();\n\t};\n\n\tprivate readonly _onPointerCancel = () => {\n\t\tthis._resetDrawer(true);\n\t\tthis._cleanup();\n\t};\n\n\tprivate _shouldDrag(el: EventTarget, isDraggingInDirection: boolean): boolean {\n\t\tif (this._direction === 'left' || this._direction === 'right') return true;\n\n\t\tconst now = Date.now();\n\n\t\tif (this._openTime !== null && now - this._openTime < OPEN_TIME_COOLDOWN) return false;\n\n\t\tconst currentTranslate = this._getTranslate();\n\t\tif (this._isPositive ? currentTranslate > 0 : currentTranslate < 0) return true;\n\n\t\tif (\n\t\t\tthis._lastTimeDragPrevented !== null &&\n\t\t\tnow - this._lastTimeDragPrevented < SCROLL_LOCK_TIMEOUT &&\n\t\t\tcurrentTranslate === 0\n\t\t) {\n\t\t\tthis._lastTimeDragPrevented = now;\n\t\t\treturn false;\n\t\t}\n\n\t\tif (isDraggingInDirection) {\n\t\t\tthis._lastTimeDragPrevented = now;\n\t\t\treturn false;\n\t\t}\n\n\t\tlet element = el as HTMLElement | null;\n\t\twhile (element) {\n\t\t\tif (element.scrollHeight > element.clientHeight) {\n\t\t\t\tif (element.scrollTop !== 0) {\n\t\t\t\t\tthis._lastTimeDragPrevented = now;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (element.getAttribute('role') === 'dialog') return true;\n\t\t\t}\n\t\t\telement = element.parentElement;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tprivate _getTranslate(): number {\n\t\tif (!this._drawerEl) return 0;\n\t\tconst style = getComputedStyle(this._drawerEl);\n\t\tconst transform = style.transform || (style as any).webkitTransform;\n\t\tif (!transform || transform === 'none') return 0;\n\t\tlet mat = transform.match(/^matrix3d\\((.+)\\)$/);\n\t\tif (mat) {\n\t\t\treturn parseFloat(mat[1].split(', ')[this._isVertical ? 13 : 12]);\n\t\t}\n\t\tmat = transform.match(/^matrix\\((.+)\\)$/);\n\t\tif (mat) {\n\t\t\treturn parseFloat(mat[1].split(', ')[this._isVertical ? 5 : 4]);\n\t\t}\n\t\treturn 0;\n\t}\n\n\tprivate _resetDrawer(animate = true): void {\n\t\tif (this._drawerEl) {\n\t\t\tthis._drawerEl.style.transition = animate ? TRANSITION : 'none';\n\t\t\tthis._drawerEl.style.transform = '';\n\t\t}\n\t\tif (this._backdropEl) {\n\t\t\tthis._backdropEl.style.transition = animate ? OVERLAY_TRANSITION : 'none';\n\t\t\tthis._backdropEl.style.opacity = String(this._initialBackdropOpacity);\n\t\t}\n\t\tthis._clearResetTimeout();\n\t\tthis._resetTimeout = setTimeout(() => {\n\t\t\tthis._resetTimeout = null;\n\t\t\tif (this._drawerEl) this._drawerEl.style.transition = '';\n\t\t\tif (this._backdropEl) this._backdropEl.style.transition = '';\n\t\t}, 500);\n\t}\n\n\tprivate _clearResetTimeout(): void {\n\t\tif (this._resetTimeout !== null) {\n\t\t\tclearTimeout(this._resetTimeout);\n\t\t\tthis._resetTimeout = null;\n\t\t}\n\t}\n\n\tprivate _animateAndClose(): void {\n\t\tif (!this._drawerEl) return;\n\t\tconst dimension = this._isVertical ? this._drawerEl.offsetHeight : this._drawerEl.offsetWidth;\n\t\tconst targetClose = this._isPositive ? dimension : -dimension;\n\t\tconst prop = this._isVertical ? 'translateY' : 'translateX';\n\t\tthis._drawerEl.style.transition = 'transform 0.3s cubic-bezier(0.32, 0.72, 0, 1)';\n\t\tthis._drawerEl.style.transform = `${prop}(${targetClose}px)`;\n\t\tthis._drawerEl.style.animation = 'none';\n\t\tif (this._backdropEl) {\n\t\t\tthis._backdropEl.style.transition = 'opacity 0.3s cubic-bezier(0.32, 0.72, 0, 1)';\n\t\t\tthis._backdropEl.style.opacity = '0';\n\t\t}\n\t}\n\n\tprivate _cleanup(): void {\n\t\tthis._isDragging = false;\n\t\tthis._isAllowedToDrag = false;\n\t\tif (this._drawerEl) {\n\t\t\tthis._drawerEl.style.touchAction = '';\n\t\t}\n\t\tif (this._pointerId !== -1) {\n\t\t\ttry {\n\t\t\t\tthis._element.nativeElement.releasePointerCapture(this._pointerId);\n\t\t\t} catch {\n\t\t\t\t/* empty */\n\t\t\t}\n\t\t\tthis._pointerId = -1;\n\t\t}\n\t\tthis._document.removeEventListener('pointermove', this._onPointerMove);\n\t\t// pointerup/pointercancel are registered with `{ once: true }`, but a destroy-during-drag (or a\n\t\t// normal end where pointercancel never fired) would otherwise leave them on `document`, pinning\n\t\t// this directive until the next global pointer release auto-removes them.\n\t\tthis._document.removeEventListener('pointerup', this._onPointerUp);\n\t\tthis._document.removeEventListener('pointercancel', this._onPointerCancel);\n\t}\n\n\tprivate _findScrollableAncestor(element: HTMLElement | null): HTMLElement | null {\n\t\tif (!element) return null;\n\t\tconst scrollProp = this._isVertical ? 'overflow-y' : 'overflow-x';\n\t\tconst sizeProp = this._isVertical ? 'scrollHeight' : 'scrollWidth';\n\t\tconst clientProp = this._isVertical ? 'clientHeight' : 'clientWidth';\n\t\tlet el: HTMLElement | null = element.parentElement;\n\t\twhile (el) {\n\t\t\tconst overflow = getComputedStyle(el)[scrollProp as any];\n\t\t\tif ((overflow === 'auto' || overflow === 'scroll') && (el as any)[sizeProp] > (el as any)[clientProp]) {\n\t\t\t\treturn el;\n\t\t\t}\n\t\t\tel = el.parentElement;\n\t\t}\n\t\treturn null;\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { provideCustomClassSettableExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogOverlay } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnDrawerOverlay],brn-drawer-overlay',\n\tproviders: [provideCustomClassSettableExisting(() => BrnDrawerOverlay)],\n})\nexport class BrnDrawerOverlay extends BrnDialogOverlay {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogTitle } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnDrawerTitle]',\n\thostDirectives: [BrnDialogTitle],\n})\nexport class BrnDrawerTitle {}\n","import { Directive, inject, input } from '@angular/core';\nimport { BrnDialogTrigger } from '@spartan-ng/brain/dialog';\nimport { BrnDrawer } from './brn-drawer';\n\n@Directive({\n\tselector: 'button[brnDrawerTrigger]',\n})\nexport class BrnDrawerTrigger extends BrnDialogTrigger {\n\tprivate readonly _drawer = inject(BrnDrawer, { optional: true });\n\n\tpublic readonly direction = input<'bottom' | 'top' | 'left' | 'right' | undefined>(undefined);\n\n\toverride open() {\n\t\tconst direction = this.direction();\n\t\tif (this._drawer && direction) {\n\t\t\tthis._drawer.directionState.set(direction);\n\t\t}\n\t\tsuper.open();\n\t}\n}\n","import { BrnDrawer } from './lib/brn-drawer';\nimport { BrnDrawerClose } from './lib/brn-drawer-close';\nimport { BrnDrawerContent } from './lib/brn-drawer-content';\nimport { BrnDrawerDescription } from './lib/brn-drawer-description';\nimport { BrnDrawerHandle } from './lib/brn-drawer-handle';\nimport { BrnDrawerOverlay } from './lib/brn-drawer-overlay';\nimport { BrnDrawerTitle } from './lib/brn-drawer-title';\nimport { BrnDrawerTrigger } from './lib/brn-drawer-trigger';\n\nexport * from './lib/brn-drawer';\nexport * from './lib/brn-drawer-close';\nexport * from './lib/brn-drawer-content';\nexport * from './lib/brn-drawer-description';\nexport * from './lib/brn-drawer-handle';\nexport * from './lib/brn-drawer-overlay';\nexport * from './lib/brn-drawer-title';\nexport * from './lib/brn-drawer-trigger';\n\nexport const BrnDrawerImports = [\n\tBrnDrawer,\n\tBrnDrawerOverlay,\n\tBrnDrawerTrigger,\n\tBrnDrawerClose,\n\tBrnDrawerContent,\n\tBrnDrawerTitle,\n\tBrnDrawerDescription,\n\tBrnDrawerHandle,\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,6 @@
1
1
  import { Directionality } from '@angular/cdk/bidi';
2
2
  import * as i0 from '@angular/core';
3
- import { input, inject, ElementRef, numberAttribute, booleanAttribute, signal, computed, Directive, contentChildren, output, model, DOCUMENT, NgZone, afterNextRender } from '@angular/core';
3
+ import { input, inject, ElementRef, numberAttribute, booleanAttribute, signal, computed, Directive, contentChildren, output, model, DOCUMENT, NgZone, DestroyRef, afterNextRender } from '@angular/core';
4
4
 
5
5
  let nextId$1 = 0;
6
6
  class BrnResizablePanel {
@@ -83,7 +83,12 @@ class BrnResizableGroup {
83
83
  _zone = inject(NgZone);
84
84
  _resizeRaf = null;
85
85
  _pendingSizes = null;
86
+ /** Tears down the in-flight drag (document listeners, queued frame, cursor); null when idle. */
87
+ _stopResize = null;
86
88
  constructor() {
89
+ // If the group is destroyed mid-drag, the document listeners would otherwise stay attached
90
+ // (document is never GC'd), pinning this directive and firing against a torn-down view.
91
+ inject(DestroyRef).onDestroy(() => this._stopResize?.());
87
92
  afterNextRender(() => {
88
93
  this._initializePanelSizes();
89
94
  });
@@ -106,6 +111,8 @@ class BrnResizableGroup {
106
111
  }
107
112
  startResize(handleIndex, event) {
108
113
  event.preventDefault();
114
+ // tear down any in-flight drag before starting a new one
115
+ this._stopResize?.();
109
116
  const cursor = this.direction() === 'vertical' ? 'ns-resize' : 'ew-resize';
110
117
  this._document.body.style.cursor = `${cursor}`;
111
118
  const sizes = [...this.layout()];
@@ -120,19 +127,35 @@ class BrnResizableGroup {
120
127
  this._handleResize(moveEvent, handleIndex, startPosition, startSizes, isRtl);
121
128
  });
122
129
  };
123
- const handleEnd = () => {
124
- this._zone.run(() => this._endResize());
125
- this._document.body.style.cursor = 'default';
130
+ // Detaches the document listeners, cancels any queued frame and restores the cursor. Stored
131
+ // on the instance so it runs on normal drag-end and on destroy-during-drag alike.
132
+ const cleanup = () => {
126
133
  this._document.removeEventListener('mousemove', handleMove);
127
134
  this._document.removeEventListener('touchmove', handleMove);
128
135
  this._document.removeEventListener('mouseup', handleEnd);
129
136
  this._document.removeEventListener('touchend', handleEnd);
137
+ this._document.removeEventListener('touchcancel', handleEnd);
138
+ this._document.body.style.cursor = 'default';
139
+ if (this._resizeRaf !== null) {
140
+ cancelAnimationFrame(this._resizeRaf);
141
+ this._resizeRaf = null;
142
+ this._pendingSizes = null;
143
+ }
144
+ this._stopResize = null;
145
+ };
146
+ const handleEnd = () => {
147
+ this._zone.run(() => this._endResize());
148
+ cleanup();
130
149
  };
150
+ this._stopResize = cleanup;
131
151
  this._zone.runOutsideAngular(() => {
132
152
  this._document.addEventListener('mousemove', handleMove);
133
153
  this._document.addEventListener('touchmove', handleMove);
134
154
  this._document.addEventListener('mouseup', handleEnd);
135
155
  this._document.addEventListener('touchend', handleEnd);
156
+ // touch drags can be interrupted by the system (touchcancel) without firing touchend;
157
+ // end the resize on it too so listeners + cursor are not left dangling.
158
+ this._document.addEventListener('touchcancel', handleEnd);
136
159
  });
137
160
  }
138
161
  _handleResize(event, handleIndex, startPosition, startSizes, isRtl = false) {
@@ -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 { 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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"}
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\tDestroyRef,\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\t/** Tears down the in-flight drag (document listeners, queued frame, cursor); null when idle. */\n\tprivate _stopResize: (() => void) | null = null;\n\n\tconstructor() {\n\t\t// If the group is destroyed mid-drag, the document listeners would otherwise stay attached\n\t\t// (document is never GC'd), pinning this directive and firing against a torn-down view.\n\t\tinject(DestroyRef).onDestroy(() => this._stopResize?.());\n\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\t// tear down any in-flight drag before starting a new one\n\t\tthis._stopResize?.();\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\t// Detaches the document listeners, cancels any queued frame and restores the cursor. Stored\n\t\t// on the instance so it runs on normal drag-end and on destroy-during-drag alike.\n\t\tconst cleanup = () => {\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\tthis._document.removeEventListener('touchcancel', handleEnd);\n\t\t\tthis._document.body.style.cursor = 'default';\n\n\t\t\tif (this._resizeRaf !== null) {\n\t\t\t\tcancelAnimationFrame(this._resizeRaf);\n\t\t\t\tthis._resizeRaf = null;\n\t\t\t\tthis._pendingSizes = null;\n\t\t\t}\n\n\t\t\tthis._stopResize = null;\n\t\t};\n\n\t\tconst handleEnd = () => {\n\t\t\tthis._zone.run(() => this._endResize());\n\t\t\tcleanup();\n\t\t};\n\n\t\tthis._stopResize = cleanup;\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\t// touch drags can be interrupted by the system (touchcancel) without firing touchend;\n\t\t\t// end the resize on it too so listeners + cursor are not left dangling.\n\t\t\tthis._document.addEventListener('touchcancel', 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.715",
3
+ "version": "0.0.1-alpha.716",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/spartan-ng/spartan"
@@ -7,7 +7,7 @@ declare class BrnAvatarImage {
7
7
  protected _onLoad(): void;
8
8
  readonly canShow: i0.Signal<boolean>;
9
9
  static ɵfac: i0.ɵɵFactoryDeclaration<BrnAvatarImage, never>;
10
- static ɵdir: i0.ɵɵDirectiveDeclaration<BrnAvatarImage, "img[brnAvatarImage]", ["avatarImage"], {}, {}, never, never, true, never>;
10
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BrnAvatarImage, "img[brnAvatarImage]", ["brnAvatarImage"], {}, {}, never, never, true, never>;
11
11
  }
12
12
 
13
13
  declare class BrnAvatar {
@@ -18,7 +18,7 @@ declare class BrnAvatar {
18
18
 
19
19
  declare class BrnAvatarFallback {
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<BrnAvatarFallback, never>;
21
- static ɵdir: i0.ɵɵDirectiveDeclaration<BrnAvatarFallback, "[brnAvatarFallback]", ["avatarFallback"], {}, {}, never, never, true, never>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BrnAvatarFallback, "[brnAvatarFallback]", ["brnAvatarFallback"], {}, {}, never, never, true, never>;
22
22
  }
23
23
 
24
24
  declare function hexColorFor(str: string): string;
@@ -146,8 +146,8 @@ declare class BrnCommandList {
146
146
 
147
147
  declare class BrnCommandSeparator {
148
148
  private readonly _command;
149
- /** Determine if the command has any visible items */
150
- protected readonly _visible: _angular_core.Signal<boolean>;
149
+ /** Determine if the command has any search input */
150
+ protected readonly _hasSearchInput: _angular_core.Signal<boolean>;
151
151
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnCommandSeparator, never>;
152
152
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnCommandSeparator, "[brnCommandSeparator]", never, {}, {}, never, never, true, never>;
153
153
  }
@@ -222,8 +222,6 @@ declare const cssClassesToArray: (classes: string | string[] | undefined | null,
222
222
  type BrnDialogContext<T> = T & {
223
223
  close: (result?: any) => void;
224
224
  };
225
- /** @deprecated `injectBrnDialogCtx` will no longer be supported once components are stable. Use `injectBrnDialogContext` instead. */
226
- declare const injectBrnDialogCtx: <T>() => BrnDialogContext<T>;
227
225
  declare const injectBrnDialogContext: <DialogContext = any>(options?: InjectOptions) => DialogContext;
228
226
  declare class BrnDialogService {
229
227
  private readonly _overlayCloseDispatcher;
@@ -242,5 +240,5 @@ declare class BrnDialogService {
242
240
 
243
241
  declare const BrnDialogImports: readonly [typeof BrnDialog, typeof BrnDialogOverlay, typeof BrnDialogTrigger, typeof BrnDialogClose, typeof BrnDialogContent, typeof BrnDialogTitle, typeof BrnDialogDescription];
244
242
 
245
- export { BrnDialog, BrnDialogClose, BrnDialogContent, BrnDialogDescription, BrnDialogImports, BrnDialogOverlay, BrnDialogRef, BrnDialogService, BrnDialogTitle, BrnDialogTrigger, cssClassesToArray, defaultOptions, injectBrnDialogContext, injectBrnDialogCtx, injectBrnDialogDefaultOptions, provideBrnDialogDefaultOptions };
243
+ export { BrnDialog, BrnDialogClose, BrnDialogContent, BrnDialogDescription, BrnDialogImports, BrnDialogOverlay, BrnDialogRef, BrnDialogService, BrnDialogTitle, BrnDialogTrigger, cssClassesToArray, defaultOptions, injectBrnDialogContext, injectBrnDialogDefaultOptions, provideBrnDialogDefaultOptions };
246
244
  export type { BrnDialogContext, BrnDialogDefaultOptions, BrnDialogOptions, BrnDialogState };
@@ -49,6 +49,7 @@ declare class BrnDrawerHandle {
49
49
  private _openTime;
50
50
  private _lastTimeDragPrevented;
51
51
  private _dragStartTime;
52
+ private _resetTimeout;
52
53
  readonly closeThreshold: i0.InputSignal<number>;
53
54
  private get _isVertical();
54
55
  private get _isPositive();
@@ -61,6 +62,7 @@ declare class BrnDrawerHandle {
61
62
  private _shouldDrag;
62
63
  private _getTranslate;
63
64
  private _resetDrawer;
65
+ private _clearResetTimeout;
64
66
  private _animateAndClose;
65
67
  private _cleanup;
66
68
  private _findScrollableAncestor;
@@ -62,6 +62,8 @@ declare class BrnResizableGroup {
62
62
  private readonly _zone;
63
63
  private _resizeRaf;
64
64
  private _pendingSizes;
65
+ /** Tears down the in-flight drag (document listeners, queued frame, cursor); null when idle. */
66
+ private _stopResize;
65
67
  constructor();
66
68
  private _initializePanelSizes;
67
69
  startResize(handleIndex: number, event: MouseEvent | TouchEvent): void;