@spartan-ng/brain 0.0.1-alpha.714 → 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":"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"}
@@ -263,9 +263,243 @@ function provideUtcDateAdapter() {
263
263
  return provideDateAdapter(BrnUtcDateAdapter);
264
264
  }
265
265
 
266
+ const PersianDate = {
267
+ gregorianDaysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
268
+ jalaliDaysInMonth: [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29],
269
+ jalaliToGregorian: function (jalaliYear, jalaliMonth, jalaliDay) {
270
+ const jalaliYearDelta = jalaliYear - 979;
271
+ const jalaliMonthIdx = jalaliMonth - 1;
272
+ const jalaliDayIdx = jalaliDay - 1;
273
+ let jalaliDayNo = 365 * jalaliYearDelta + Math.floor(jalaliYearDelta / 33) * 8 + Math.floor(((jalaliYearDelta % 33) + 3) / 4);
274
+ for (let i = 0; i < jalaliMonthIdx; ++i)
275
+ jalaliDayNo += this.jalaliDaysInMonth[i];
276
+ jalaliDayNo += jalaliDayIdx;
277
+ let gregorianDayNo = jalaliDayNo + 79;
278
+ let gregorianYear = 1600 + 400 * Math.floor(gregorianDayNo / 146097);
279
+ gregorianDayNo = gregorianDayNo % 146097;
280
+ let leap = true;
281
+ if (gregorianDayNo >= 36525) {
282
+ gregorianDayNo--;
283
+ gregorianYear += 100 * Math.floor(gregorianDayNo / 36524);
284
+ gregorianDayNo = gregorianDayNo % 36524;
285
+ if (gregorianDayNo >= 365)
286
+ gregorianDayNo++;
287
+ else
288
+ leap = false;
289
+ }
290
+ gregorianYear += 4 * Math.floor(gregorianDayNo / 1461);
291
+ gregorianDayNo %= 1461;
292
+ if (gregorianDayNo >= 366) {
293
+ leap = false;
294
+ gregorianDayNo--;
295
+ gregorianYear += Math.floor(gregorianDayNo / 365);
296
+ gregorianDayNo = gregorianDayNo % 365;
297
+ }
298
+ let i = 0;
299
+ for (; gregorianDayNo >= this.gregorianDaysInMonth[i] + (i === 1 && leap ? 1 : 0); i++) {
300
+ gregorianDayNo -= this.gregorianDaysInMonth[i] + (i === 1 && leap ? 1 : 0);
301
+ }
302
+ const gregorianMonth = i + 1;
303
+ const gregorianDay = gregorianDayNo + 1;
304
+ return [gregorianYear, gregorianMonth, gregorianDay];
305
+ },
306
+ gregorianToJalali: function (gregorianYear, gregorianMonth, gregorianDay) {
307
+ const gregorianYearDelta = gregorianYear - 1600;
308
+ const gregorianMonthIdx = gregorianMonth - 1;
309
+ const gregorianDayIdx = gregorianDay - 1;
310
+ let gregorianDayNo = 365 * gregorianYearDelta +
311
+ Math.floor((gregorianYearDelta + 3) / 4) -
312
+ Math.floor((gregorianYearDelta + 99) / 100) +
313
+ Math.floor((gregorianYearDelta + 399) / 400);
314
+ for (let i = 0; i < gregorianMonthIdx; ++i)
315
+ gregorianDayNo += this.gregorianDaysInMonth[i];
316
+ if (gregorianMonthIdx > 1 &&
317
+ ((gregorianYearDelta % 4 === 0 && gregorianYearDelta % 100 !== 0) || gregorianYearDelta % 400 === 0))
318
+ gregorianDayNo++;
319
+ gregorianDayNo += gregorianDayIdx;
320
+ let jalaliDayNo = gregorianDayNo - 79;
321
+ const jalaliCycleCount = Math.floor(jalaliDayNo / 12053);
322
+ jalaliDayNo = jalaliDayNo % 12053;
323
+ let jalaliYear = 979 + 33 * jalaliCycleCount + 4 * Math.floor(jalaliDayNo / 1461);
324
+ jalaliDayNo %= 1461;
325
+ if (jalaliDayNo >= 366) {
326
+ jalaliYear += Math.floor((jalaliDayNo - 1) / 365);
327
+ jalaliDayNo = (jalaliDayNo - 1) % 365;
328
+ }
329
+ let i = 0;
330
+ for (; i < 11 && jalaliDayNo >= this.jalaliDaysInMonth[i]; ++i) {
331
+ jalaliDayNo -= this.jalaliDaysInMonth[i];
332
+ }
333
+ const jalaliMonth = i + 1;
334
+ const jalaliDay = jalaliDayNo + 1;
335
+ return [jalaliYear, jalaliMonth, jalaliDay];
336
+ },
337
+ isLeapJalaliYear: function (year) {
338
+ const breaks = [1, 5, 9, 13, 17, 22, 26, 30];
339
+ return breaks.includes(year % 33);
340
+ },
341
+ getDaysInMonth: function (year, month) {
342
+ if (month < 1 || month > 12)
343
+ return 0;
344
+ if (month <= 6)
345
+ return 31;
346
+ if (month <= 11)
347
+ return 30;
348
+ return this.isLeapJalaliYear(year) ? 30 : 29;
349
+ },
350
+ getDayOfWeek: function (jalaliYear, jalaliMonth, jalaliDay) {
351
+ const [gregorianYear, gregorianMonth, gregorianDay] = this.jalaliToGregorian(jalaliYear, jalaliMonth, jalaliDay);
352
+ const date = new Date(gregorianYear, gregorianMonth - 1, gregorianDay);
353
+ return date.getDay();
354
+ },
355
+ getDaysInYear: function (year) {
356
+ return this.isLeapJalaliYear(year) ? 366 : 365;
357
+ },
358
+ isValidDate: function (year, month, day) {
359
+ if (year < 0 || month < 1 || month > 12 || day < 1)
360
+ return false;
361
+ return day <= this.getDaysInMonth(year, month);
362
+ },
363
+ };
364
+
365
+ class JalaliDate {
366
+ year;
367
+ month;
368
+ day;
369
+ constructor(year, month, day) {
370
+ this.year = year;
371
+ this.month = month;
372
+ this.day = day;
373
+ }
374
+ valueOf() {
375
+ const [gregorianYear, gregorianMonth, gregorianDay] = PersianDate.jalaliToGregorian(this.year, this.month, this.day);
376
+ return new Date(gregorianYear, gregorianMonth - 1, gregorianDay).getTime();
377
+ }
378
+ toString() {
379
+ return `${this.year}/${String(this.month).padStart(2, '0')}/${String(this.day).padStart(2, '0')}`;
380
+ }
381
+ }
382
+
383
+ class BrnJalaliDateAdapter {
384
+ create({ year, month, day }) {
385
+ const now = this.now();
386
+ const m = month !== undefined ? month + 1 : now.month;
387
+ return this._constrain(year ?? now.year, m, day ?? now.day);
388
+ }
389
+ now() {
390
+ const today = new Date();
391
+ const [jalaliYear, jalaliMonth, jalaliDay] = PersianDate.gregorianToJalali(today.getFullYear(), today.getMonth() + 1, today.getDate());
392
+ return this._constrain(jalaliYear, jalaliMonth, jalaliDay);
393
+ }
394
+ set(date, values) {
395
+ const year = values.year ?? date.year;
396
+ const month = values.month !== undefined ? values.month + 1 : date.month;
397
+ const day = values.day ?? date.day;
398
+ return this._constrain(year, month, day);
399
+ }
400
+ add(date, duration) {
401
+ let { year, month, day } = date;
402
+ if (duration.years) {
403
+ year += duration.years;
404
+ }
405
+ if (duration.months) {
406
+ month += duration.months;
407
+ if (month > 12) {
408
+ year += Math.floor((month - 1) / 12);
409
+ month = ((month - 1) % 12) + 1;
410
+ }
411
+ else if (month < 1) {
412
+ year += Math.floor((month - 1) / 12);
413
+ month = ((((month - 1) % 12) + 12) % 12) + 1;
414
+ }
415
+ day = Math.min(day, PersianDate.getDaysInMonth(year, month));
416
+ }
417
+ if (duration.days) {
418
+ const [gregorianYear, gregorianMonth, gregorianDay] = PersianDate.jalaliToGregorian(year, month, day);
419
+ const jsDate = new Date(gregorianYear, gregorianMonth - 1, gregorianDay);
420
+ jsDate.setDate(jsDate.getDate() + duration.days);
421
+ [year, month, day] = PersianDate.gregorianToJalali(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());
422
+ }
423
+ return this._constrain(year, month, day);
424
+ }
425
+ subtract(date, duration) {
426
+ return this.add(date, {
427
+ years: duration.years ? -duration.years : undefined,
428
+ months: duration.months ? -duration.months : undefined,
429
+ days: duration.days ? -duration.days : undefined,
430
+ });
431
+ }
432
+ compare(a, b) {
433
+ const diff = a.valueOf() - b.valueOf();
434
+ return diff === 0 ? 0 : diff > 0 ? 1 : -1;
435
+ }
436
+ isEqual(a, b) {
437
+ return a.valueOf() === b.valueOf();
438
+ }
439
+ isBefore(a, b) {
440
+ return a.valueOf() < b.valueOf();
441
+ }
442
+ isAfter(a, b) {
443
+ return a.valueOf() > b.valueOf();
444
+ }
445
+ isSameDay(a, b) {
446
+ return a.year === b.year && a.month === b.month && a.day === b.day;
447
+ }
448
+ isSameMonth(a, b) {
449
+ return a.year === b.year && a.month === b.month;
450
+ }
451
+ isSameYear(a, b) {
452
+ return a.year === b.year;
453
+ }
454
+ getYear(date) {
455
+ return date.year;
456
+ }
457
+ getMonth(date) {
458
+ return date.month - 1;
459
+ }
460
+ getDate(date) {
461
+ return date.day;
462
+ }
463
+ getDay(date) {
464
+ const [gregorianYear, gregorianMonth, gregorianDay] = PersianDate.jalaliToGregorian(date.year, date.month, date.day);
465
+ return new Date(gregorianYear, gregorianMonth - 1, gregorianDay).getDay();
466
+ }
467
+ getHours(_date) {
468
+ return 0;
469
+ }
470
+ getMinutes(_date) {
471
+ return 0;
472
+ }
473
+ getSeconds(_date) {
474
+ return 0;
475
+ }
476
+ getMilliseconds(_date) {
477
+ return 0;
478
+ }
479
+ getTime(date) {
480
+ return date.valueOf();
481
+ }
482
+ startOfMonth(date) {
483
+ return new JalaliDate(date.year, date.month, 1);
484
+ }
485
+ endOfMonth(date) {
486
+ return new JalaliDate(date.year, date.month, PersianDate.getDaysInMonth(date.year, date.month));
487
+ }
488
+ startOfDay(date) {
489
+ return date;
490
+ }
491
+ endOfDay(date) {
492
+ return date;
493
+ }
494
+ _constrain(year, month, day) {
495
+ const maxDay = PersianDate.getDaysInMonth(year, month);
496
+ return new JalaliDate(year, month, Math.min(day, maxDay));
497
+ }
498
+ }
499
+
266
500
  /**
267
501
  * Generated bundle index. Do not edit.
268
502
  */
269
503
 
270
- export { BrnDateAdapterToken, BrnNativeDateAdapter, BrnUtcDateAdapter, injectDateAdapter, provideDateAdapter, provideNativeDateAdapter, provideUtcDateAdapter };
504
+ export { BrnDateAdapterToken, BrnJalaliDateAdapter, BrnNativeDateAdapter, BrnUtcDateAdapter, JalaliDate, PersianDate, injectDateAdapter, provideDateAdapter, provideNativeDateAdapter, provideUtcDateAdapter };
271
505
  //# sourceMappingURL=spartan-ng-brain-date-time.mjs.map