@spartan-ng/brain 0.0.1-alpha.707 → 0.0.1-alpha.708

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.
Files changed (109) hide show
  1. package/fesm2022/spartan-ng-brain-accordion.mjs +30 -30
  2. package/fesm2022/spartan-ng-brain-accordion.mjs.map +1 -1
  3. package/fesm2022/spartan-ng-brain-alert-dialog.mjs +19 -19
  4. package/fesm2022/spartan-ng-brain-alert-dialog.mjs.map +1 -1
  5. package/fesm2022/spartan-ng-brain-autocomplete.mjs +89 -102
  6. package/fesm2022/spartan-ng-brain-autocomplete.mjs.map +1 -1
  7. package/fesm2022/spartan-ng-brain-avatar.mjs +15 -15
  8. package/fesm2022/spartan-ng-brain-avatar.mjs.map +1 -1
  9. package/fesm2022/spartan-ng-brain-button.mjs +4 -4
  10. package/fesm2022/spartan-ng-brain-button.mjs.map +1 -1
  11. package/fesm2022/spartan-ng-brain-calendar.mjs +120 -127
  12. package/fesm2022/spartan-ng-brain-calendar.mjs.map +1 -1
  13. package/fesm2022/spartan-ng-brain-checkbox.mjs +24 -24
  14. package/fesm2022/spartan-ng-brain-checkbox.mjs.map +1 -1
  15. package/fesm2022/spartan-ng-brain-collapsible.mjs +17 -17
  16. package/fesm2022/spartan-ng-brain-collapsible.mjs.map +1 -1
  17. package/fesm2022/spartan-ng-brain-combobox.mjs +151 -178
  18. package/fesm2022/spartan-ng-brain-combobox.mjs.map +1 -1
  19. package/fesm2022/spartan-ng-brain-command.mjs +43 -52
  20. package/fesm2022/spartan-ng-brain-command.mjs.map +1 -1
  21. package/fesm2022/spartan-ng-brain-core.mjs +5 -5
  22. package/fesm2022/spartan-ng-brain-core.mjs.map +1 -1
  23. package/fesm2022/spartan-ng-brain-date-time-luxon.mjs.map +1 -1
  24. package/fesm2022/spartan-ng-brain-date-time.mjs.map +1 -1
  25. package/fesm2022/spartan-ng-brain-dialog.mjs +72 -86
  26. package/fesm2022/spartan-ng-brain-dialog.mjs.map +1 -1
  27. package/fesm2022/spartan-ng-brain-field.mjs +38 -43
  28. package/fesm2022/spartan-ng-brain-field.mjs.map +1 -1
  29. package/fesm2022/spartan-ng-brain-forms.mjs +20 -20
  30. package/fesm2022/spartan-ng-brain-forms.mjs.map +1 -1
  31. package/fesm2022/spartan-ng-brain-hover-card.mjs +24 -32
  32. package/fesm2022/spartan-ng-brain-hover-card.mjs.map +1 -1
  33. package/fesm2022/spartan-ng-brain-input-otp.mjs +23 -25
  34. package/fesm2022/spartan-ng-brain-input-otp.mjs.map +1 -1
  35. package/fesm2022/spartan-ng-brain-input.mjs +6 -6
  36. package/fesm2022/spartan-ng-brain-input.mjs.map +1 -1
  37. package/fesm2022/spartan-ng-brain-label.mjs +6 -6
  38. package/fesm2022/spartan-ng-brain-label.mjs.map +1 -1
  39. package/fesm2022/spartan-ng-brain-navigation-menu.mjs +49 -53
  40. package/fesm2022/spartan-ng-brain-navigation-menu.mjs.map +1 -1
  41. package/fesm2022/spartan-ng-brain-popover.mjs +13 -15
  42. package/fesm2022/spartan-ng-brain-popover.mjs.map +1 -1
  43. package/fesm2022/spartan-ng-brain-progress.mjs +11 -13
  44. package/fesm2022/spartan-ng-brain-progress.mjs.map +1 -1
  45. package/fesm2022/spartan-ng-brain-radio-group.mjs +28 -34
  46. package/fesm2022/spartan-ng-brain-radio-group.mjs.map +1 -1
  47. package/fesm2022/spartan-ng-brain-resizable.mjs +23 -23
  48. package/fesm2022/spartan-ng-brain-resizable.mjs.map +1 -1
  49. package/fesm2022/spartan-ng-brain-select.mjs +102 -105
  50. package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
  51. package/fesm2022/spartan-ng-brain-separator.mjs +7 -7
  52. package/fesm2022/spartan-ng-brain-separator.mjs.map +1 -1
  53. package/fesm2022/spartan-ng-brain-sheet.mjs +24 -24
  54. package/fesm2022/spartan-ng-brain-sheet.mjs.map +1 -1
  55. package/fesm2022/spartan-ng-brain-slider.mjs +52 -76
  56. package/fesm2022/spartan-ng-brain-slider.mjs.map +1 -1
  57. package/fesm2022/spartan-ng-brain-sonner.mjs +108 -132
  58. package/fesm2022/spartan-ng-brain-sonner.mjs.map +1 -1
  59. package/fesm2022/spartan-ng-brain-switch.mjs +21 -23
  60. package/fesm2022/spartan-ng-brain-switch.mjs.map +1 -1
  61. package/fesm2022/spartan-ng-brain-tabs.mjs +36 -39
  62. package/fesm2022/spartan-ng-brain-tabs.mjs.map +1 -1
  63. package/fesm2022/spartan-ng-brain-textarea.mjs +6 -6
  64. package/fesm2022/spartan-ng-brain-textarea.mjs.map +1 -1
  65. package/fesm2022/spartan-ng-brain-toggle-group.mjs +21 -27
  66. package/fesm2022/spartan-ng-brain-toggle-group.mjs.map +1 -1
  67. package/fesm2022/spartan-ng-brain-toggle.mjs +10 -12
  68. package/fesm2022/spartan-ng-brain-toggle.mjs.map +1 -1
  69. package/fesm2022/spartan-ng-brain-tooltip.mjs +27 -27
  70. package/fesm2022/spartan-ng-brain-tooltip.mjs.map +1 -1
  71. package/hlm-tailwind-preset.css +6 -6
  72. package/package.json +44 -43
  73. package/{autocomplete/index.d.ts → types/spartan-ng-brain-autocomplete.d.ts} +10 -10
  74. package/{calendar/index.d.ts → types/spartan-ng-brain-calendar.d.ts} +2 -2
  75. package/{combobox/index.d.ts → types/spartan-ng-brain-combobox.d.ts} +10 -10
  76. package/{dialog/index.d.ts → types/spartan-ng-brain-dialog.d.ts} +1 -1
  77. package/{hover-card/index.d.ts → types/spartan-ng-brain-hover-card.d.ts} +1 -1
  78. package/{select/index.d.ts → types/spartan-ng-brain-select.d.ts} +11 -11
  79. /package/{accordion/index.d.ts → types/spartan-ng-brain-accordion.d.ts} +0 -0
  80. /package/{alert-dialog/index.d.ts → types/spartan-ng-brain-alert-dialog.d.ts} +0 -0
  81. /package/{avatar/index.d.ts → types/spartan-ng-brain-avatar.d.ts} +0 -0
  82. /package/{button/index.d.ts → types/spartan-ng-brain-button.d.ts} +0 -0
  83. /package/{checkbox/index.d.ts → types/spartan-ng-brain-checkbox.d.ts} +0 -0
  84. /package/{collapsible/index.d.ts → types/spartan-ng-brain-collapsible.d.ts} +0 -0
  85. /package/{command/index.d.ts → types/spartan-ng-brain-command.d.ts} +0 -0
  86. /package/{core/index.d.ts → types/spartan-ng-brain-core.d.ts} +0 -0
  87. /package/{date-time-luxon/index.d.ts → types/spartan-ng-brain-date-time-luxon.d.ts} +0 -0
  88. /package/{date-time/index.d.ts → types/spartan-ng-brain-date-time.d.ts} +0 -0
  89. /package/{field/index.d.ts → types/spartan-ng-brain-field.d.ts} +0 -0
  90. /package/{forms/index.d.ts → types/spartan-ng-brain-forms.d.ts} +0 -0
  91. /package/{input-otp/index.d.ts → types/spartan-ng-brain-input-otp.d.ts} +0 -0
  92. /package/{input/index.d.ts → types/spartan-ng-brain-input.d.ts} +0 -0
  93. /package/{label/index.d.ts → types/spartan-ng-brain-label.d.ts} +0 -0
  94. /package/{navigation-menu/index.d.ts → types/spartan-ng-brain-navigation-menu.d.ts} +0 -0
  95. /package/{popover/index.d.ts → types/spartan-ng-brain-popover.d.ts} +0 -0
  96. /package/{progress/index.d.ts → types/spartan-ng-brain-progress.d.ts} +0 -0
  97. /package/{radio-group/index.d.ts → types/spartan-ng-brain-radio-group.d.ts} +0 -0
  98. /package/{resizable/index.d.ts → types/spartan-ng-brain-resizable.d.ts} +0 -0
  99. /package/{separator/index.d.ts → types/spartan-ng-brain-separator.d.ts} +0 -0
  100. /package/{sheet/index.d.ts → types/spartan-ng-brain-sheet.d.ts} +0 -0
  101. /package/{slider/index.d.ts → types/spartan-ng-brain-slider.d.ts} +0 -0
  102. /package/{sonner/index.d.ts → types/spartan-ng-brain-sonner.d.ts} +0 -0
  103. /package/{switch/index.d.ts → types/spartan-ng-brain-switch.d.ts} +0 -0
  104. /package/{tabs/index.d.ts → types/spartan-ng-brain-tabs.d.ts} +0 -0
  105. /package/{textarea/index.d.ts → types/spartan-ng-brain-textarea.d.ts} +0 -0
  106. /package/{toggle-group/index.d.ts → types/spartan-ng-brain-toggle-group.d.ts} +0 -0
  107. /package/{toggle/index.d.ts → types/spartan-ng-brain-toggle.d.ts} +0 -0
  108. /package/{tooltip/index.d.ts → types/spartan-ng-brain-tooltip.d.ts} +0 -0
  109. /package/{index.d.ts → types/spartan-ng-brain.d.ts} +0 -0
@@ -18,7 +18,7 @@ class ReactiveStateTracker {
18
18
  _matcher;
19
19
  _parentFormGroup;
20
20
  _parentForm;
21
- _stateVersion = signal(0, ...(ngDevMode ? [{ debugName: "_stateVersion" }] : []));
21
+ _stateVersion = signal(0, ...(ngDevMode ? [{ debugName: "_stateVersion" }] : /* istanbul ignore next */ []));
22
22
  _eventsSubscription;
23
23
  controlState = computed(() => {
24
24
  const control = this._ngControl.control;
@@ -33,12 +33,12 @@ class ReactiveStateTracker {
33
33
  spartanInvalid,
34
34
  touched: control.touched,
35
35
  };
36
- }, ...(ngDevMode ? [{ debugName: "controlState", equal: controlStateEqual }] : [{ equal: controlStateEqual }]));
37
- errors = computed(() => this.controlState()?.errors ?? null, ...(ngDevMode ? [{ debugName: "errors" }] : []));
38
- dirty = computed(() => this.controlState()?.dirty ?? null, ...(ngDevMode ? [{ debugName: "dirty" }] : []));
39
- invalid = computed(() => this.controlState()?.invalid ?? null, ...(ngDevMode ? [{ debugName: "invalid" }] : []));
40
- spartanInvalid = computed(() => this.controlState()?.spartanInvalid ?? null, ...(ngDevMode ? [{ debugName: "spartanInvalid" }] : []));
41
- touched = computed(() => this.controlState()?.touched ?? null, ...(ngDevMode ? [{ debugName: "touched" }] : []));
36
+ }, { ...(ngDevMode ? { debugName: "controlState" } : /* istanbul ignore next */ {}), equal: controlStateEqual });
37
+ errors = computed(() => this.controlState()?.errors ?? null, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
38
+ dirty = computed(() => this.controlState()?.dirty ?? null, ...(ngDevMode ? [{ debugName: "dirty" }] : /* istanbul ignore next */ []));
39
+ invalid = computed(() => this.controlState()?.invalid ?? null, ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
40
+ spartanInvalid = computed(() => this.controlState()?.spartanInvalid ?? null, ...(ngDevMode ? [{ debugName: "spartanInvalid" }] : /* istanbul ignore next */ []));
41
+ touched = computed(() => this.controlState()?.touched ?? null, ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
42
42
  get _controlParent() {
43
43
  return this._parentFormGroup || this._parentForm;
44
44
  }
@@ -69,22 +69,22 @@ class SignalStateTracker {
69
69
  if (!control)
70
70
  return null;
71
71
  return control;
72
- }, ...(ngDevMode ? [{ debugName: "_control" }] : []));
72
+ }, ...(ngDevMode ? [{ debugName: "_control" }] : /* istanbul ignore next */ []));
73
73
  // With signal forms, AbstractControl is implemented by InteropNgControl, whose control state
74
74
  // properties (e.g. dirty, touched, invalid) are getter functions that internally read FormField state signals.
75
75
  // Accessing them inside a computed() therefore creates reactive signal dependencies automatically.
76
76
  // See: https://github.com/angular/angular/blob/39e382a756b552d2b7bd3ce2c364daee9d7a0056/packages/forms/signals/src/controls/interop_ng_control.ts#L68-L129
77
- dirty = computed(() => this._control()?.dirty ?? null, ...(ngDevMode ? [{ debugName: "dirty" }] : []));
78
- touched = computed(() => this._control()?.touched ?? null, ...(ngDevMode ? [{ debugName: "touched" }] : []));
79
- invalid = computed(() => this._control()?.invalid ?? null, ...(ngDevMode ? [{ debugName: "invalid" }] : []));
80
- errors = computed(() => this._control()?.errors ?? null, ...(ngDevMode ? [{ debugName: "errors" }] : []));
77
+ dirty = computed(() => this._control()?.dirty ?? null, ...(ngDevMode ? [{ debugName: "dirty" }] : /* istanbul ignore next */ []));
78
+ touched = computed(() => this._control()?.touched ?? null, ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
79
+ invalid = computed(() => this._control()?.invalid ?? null, ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
80
+ errors = computed(() => this._control()?.errors ?? null, ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
81
81
  spartanInvalid = computed(() => {
82
82
  const control = this._control();
83
83
  if (!control) {
84
84
  return null;
85
85
  }
86
86
  return this._matcher?.isInvalid(control, this._controlParent) ?? false;
87
- }, ...(ngDevMode ? [{ debugName: "spartanInvalid" }] : []));
87
+ }, ...(ngDevMode ? [{ debugName: "spartanInvalid" }] : /* istanbul ignore next */ []));
88
88
  controlState = computed(() => {
89
89
  const dirty = this.dirty();
90
90
  const invalid = this.invalid();
@@ -94,7 +94,7 @@ class SignalStateTracker {
94
94
  if (dirty === null || invalid === null || touched === null || spartanInvalid === null)
95
95
  return null;
96
96
  return { dirty, errors, invalid, spartanInvalid, touched };
97
- }, ...(ngDevMode ? [{ debugName: "controlState", equal: controlStateEqual }] : [{ equal: controlStateEqual }]));
97
+ }, { ...(ngDevMode ? { debugName: "controlState" } : /* istanbul ignore next */ {}), equal: controlStateEqual });
98
98
  get _controlParent() {
99
99
  return this._parentFormGroup || this._parentForm;
100
100
  }
@@ -137,10 +137,10 @@ class ShowOnDirtyErrorStateMatcher {
137
137
  isInvalid(control, form) {
138
138
  return !!(control && control.invalid && (control.dirty || (form instanceof NgForm && form.submitted)));
139
139
  }
140
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
141
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ShowOnDirtyErrorStateMatcher });
140
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
141
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ShowOnDirtyErrorStateMatcher });
142
142
  }
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, decorators: [{
144
144
  type: Injectable
145
145
  }] });
146
146
  /**
@@ -160,10 +160,10 @@ class ErrorStateMatcher {
160
160
  isInvalid(control, form) {
161
161
  return !!(control && control.invalid && (control.touched || (form instanceof NgForm && form.submitted)));
162
162
  }
163
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
164
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ErrorStateMatcher, providedIn: 'root' });
163
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
164
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ErrorStateMatcher, providedIn: 'root' });
165
165
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ErrorStateMatcher, decorators: [{
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: ErrorStateMatcher, decorators: [{
167
167
  type: Injectable,
168
168
  args: [{ providedIn: 'root' }]
169
169
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-forms.mjs","sources":["../../../../libs/brain/forms/src/lib/state-tracker.ts","../../../../libs/brain/forms/src/lib/reactive-state-tracker.ts","../../../../libs/brain/forms/src/lib/signal-state-tracker.ts","../../../../libs/brain/forms/src/lib/create-state-tracker.ts","../../../../libs/brain/forms/src/lib/error-options.ts","../../../../libs/brain/forms/src/spartan-ng-brain-forms.ts"],"sourcesContent":["import type { Signal } from '@angular/core';\nimport type { ValidationErrors } from '@angular/forms';\nimport type { ControlState } from './control-state';\n\nexport interface StateTracker {\n\treadonly controlState: Signal<ControlState | null>;\n\treadonly errors: Signal<ValidationErrors | null>;\n\treadonly dirty: Signal<boolean | null>;\n\treadonly invalid: Signal<boolean | null>;\n\treadonly spartanInvalid: Signal<boolean | null>;\n\treadonly touched: Signal<boolean | null>;\n\n\tdestroy(): void;\n}\n\nexport function controlStateEqual(a: ControlState | null, b: ControlState | null): boolean {\n\treturn (\n\t\ta === b ||\n\t\t(a != null &&\n\t\t\tb != null &&\n\t\t\ta.dirty === b.dirty &&\n\t\t\ta.invalid === b.invalid &&\n\t\t\ta.touched === b.touched &&\n\t\t\ta.spartanInvalid === b.spartanInvalid &&\n\t\t\ta.errors === b.errors)\n\t);\n}\n","import { computed, signal } from '@angular/core';\nimport type { AbstractControl, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport type { Subscription } from 'rxjs';\nimport type { ControlState } from './control-state';\nimport type { ErrorStateMatcher } from './error-options';\nimport { controlStateEqual, type StateTracker } from './state-tracker';\n\nexport class ReactiveStateTracker implements StateTracker {\n\tprivate readonly _stateVersion = signal(0);\n\tprivate readonly _eventsSubscription?: Subscription;\n\n\tpublic readonly controlState = computed<ControlState | null>(\n\t\t() => {\n\t\t\tconst control = this._ngControl.control as AbstractControl | null | undefined;\n\t\t\tif (!control) return null;\n\n\t\t\tthis._stateVersion();\n\n\t\t\tconst spartanInvalid = this._matcher?.isInvalid(control, this._controlParent) ?? false;\n\n\t\t\treturn {\n\t\t\t\tdirty: control.dirty,\n\t\t\t\terrors: control.errors,\n\t\t\t\tinvalid: control.invalid,\n\t\t\t\tspartanInvalid,\n\t\t\t\ttouched: control.touched,\n\t\t\t};\n\t\t},\n\t\t{ equal: controlStateEqual },\n\t);\n\n\tpublic readonly errors = computed(() => this.controlState()?.errors ?? null);\n\tpublic readonly dirty = computed(() => this.controlState()?.dirty ?? null);\n\tpublic readonly invalid = computed(() => this.controlState()?.invalid ?? null);\n\tpublic readonly spartanInvalid = computed(() => this.controlState()?.spartanInvalid ?? null);\n\tpublic readonly touched = computed(() => this.controlState()?.touched ?? null);\n\n\tprivate get _controlParent() {\n\t\treturn this._parentFormGroup || this._parentForm;\n\t}\n\n\tconstructor(\n\t\tprivate readonly _ngControl: NgControl,\n\t\tprivate readonly _matcher: ErrorStateMatcher | null,\n\t\tprivate readonly _parentFormGroup: FormGroupDirective | null,\n\t\tprivate readonly _parentForm: NgForm | null,\n\t) {\n\t\tconst control = _ngControl.control;\n\t\tif (control) {\n\t\t\tthis._eventsSubscription = control.events.subscribe(() => {\n\t\t\t\tthis._stateVersion.update((v) => v + 1);\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic destroy(): void {\n\t\tthis._eventsSubscription?.unsubscribe();\n\t}\n}\n","import { computed } from '@angular/core';\nimport type { AbstractControl, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport type { ControlState } from './control-state';\nimport type { ErrorStateMatcher } from './error-options';\nimport { controlStateEqual, type StateTracker } from './state-tracker';\n\nexport class SignalStateTracker implements StateTracker {\n\tprivate readonly _control = computed(() => {\n\t\tconst control = this._ngControl.control as AbstractControl | null | undefined;\n\t\tif (!control) return null;\n\t\treturn control;\n\t});\n\t// With signal forms, AbstractControl is implemented by InteropNgControl, whose control state\n\t// properties (e.g. dirty, touched, invalid) are getter functions that internally read FormField state signals.\n\t// Accessing them inside a computed() therefore creates reactive signal dependencies automatically.\n\t// See: https://github.com/angular/angular/blob/39e382a756b552d2b7bd3ce2c364daee9d7a0056/packages/forms/signals/src/controls/interop_ng_control.ts#L68-L129\n\tpublic readonly dirty = computed<boolean | null>(() => this._control()?.dirty ?? null);\n\tpublic readonly touched = computed<boolean | null>(() => this._control()?.touched ?? null);\n\tpublic readonly invalid = computed<boolean | null>(() => this._control()?.invalid ?? null);\n\tpublic readonly errors = computed(() => this._control()?.errors ?? null);\n\tpublic readonly spartanInvalid = computed<boolean | null>(() => {\n\t\tconst control = this._control();\n\t\tif (!control) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._matcher?.isInvalid(control, this._controlParent) ?? false;\n\t});\n\n\tpublic readonly controlState = computed<ControlState | null>(\n\t\t() => {\n\t\t\tconst dirty = this.dirty();\n\t\t\tconst invalid = this.invalid();\n\t\t\tconst touched = this.touched();\n\t\t\tconst spartanInvalid = this.spartanInvalid();\n\t\t\tconst errors = this.errors();\n\t\t\tif (dirty === null || invalid === null || touched === null || spartanInvalid === null) return null;\n\t\t\treturn { dirty, errors, invalid, spartanInvalid, touched };\n\t\t},\n\t\t{ equal: controlStateEqual },\n\t);\n\n\tprivate get _controlParent() {\n\t\treturn this._parentFormGroup || this._parentForm;\n\t}\n\n\tconstructor(\n\t\tprivate readonly _ngControl: NgControl,\n\t\tprivate readonly _matcher: ErrorStateMatcher | null,\n\t\tprivate readonly _parentFormGroup: FormGroupDirective | null,\n\t\tprivate readonly _parentForm: NgForm | null,\n\t) {}\n\n\tpublic destroy(): void {\n\t\t// No subscriptions to clean up for signal-based controls\n\t}\n}\n","import { isSignal } from '@angular/core';\nimport type { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport type { ErrorStateMatcher } from './error-options';\nimport { ReactiveStateTracker } from './reactive-state-tracker';\nimport { SignalStateTracker } from './signal-state-tracker';\nimport type { StateTracker } from './state-tracker';\n\nexport function createStateTracker(\n\tngControl: NgControl,\n\tmatcher: ErrorStateMatcher | null,\n\tparentFormGroup: FormGroupDirective | null,\n\tparentForm: NgForm | null,\n): StateTracker {\n\tif (ngControl.control && 'field' in ngControl.control && isSignal(ngControl.control.field)) {\n\t\treturn new SignalStateTracker(ngControl, matcher, parentFormGroup, parentForm);\n\t}\n\treturn new ReactiveStateTracker(ngControl, matcher, parentFormGroup, parentForm);\n}\n","import { Injectable, type Provider, type Type } from '@angular/core';\nimport { type AbstractControl, type FormGroupDirective, NgForm } from '@angular/forms';\n\n/**\n * Provides a custom {@link ErrorStateMatcher} at the component or application level.\n *\n * @example <caption>Application-level (appConfig)</caption>\n * ```ts\n * provideErrorStateMatcher(ShowOnDirtyErrorStateMatcher)\n * ```\n *\n * @example <caption>Component-level</caption>\n * ```ts\n * providers: [provideErrorStateMatcher(ShowOnDirtyErrorStateMatcher)]\n * ```\n */\nexport function provideErrorStateMatcher(matcher: Type<ErrorStateMatcher>): Provider {\n\treturn { provide: ErrorStateMatcher, useClass: matcher };\n}\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n\tisInvalid(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n\t\treturn !!(control && control.invalid && (control.dirty || (form instanceof NgForm && form.submitted)));\n\t}\n}\n\n/**\n * Determines when a form control should be considered in an invalid (error) state.\n *\n * The return value of `isInvalid` is reflected as the `data-matches-spartan-invalid` attribute\n * on field components, which drives both error styling and the visibility of `HlmFieldError`\n * messages.\n *\n * The default implementation matches when the control is invalid and either touched or, for\n * template-driven forms, the parent `NgForm` has been submitted.\n *\n * Provide a custom implementation (e.g. `ShowOnDirtyErrorStateMatcher`) at the component or\n * application level to change when errors are shown.\n */\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher {\n\tisInvalid(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n\t\treturn !!(control && control.invalid && (control.touched || (form instanceof NgForm && form.submitted)));\n\t}\n}\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-forms.mjs","sources":["../../../../libs/brain/forms/src/lib/state-tracker.ts","../../../../libs/brain/forms/src/lib/reactive-state-tracker.ts","../../../../libs/brain/forms/src/lib/signal-state-tracker.ts","../../../../libs/brain/forms/src/lib/create-state-tracker.ts","../../../../libs/brain/forms/src/lib/error-options.ts","../../../../libs/brain/forms/src/spartan-ng-brain-forms.ts"],"sourcesContent":["import type { Signal } from '@angular/core';\nimport type { ValidationErrors } from '@angular/forms';\nimport type { ControlState } from './control-state';\n\nexport interface StateTracker {\n\treadonly controlState: Signal<ControlState | null>;\n\treadonly errors: Signal<ValidationErrors | null>;\n\treadonly dirty: Signal<boolean | null>;\n\treadonly invalid: Signal<boolean | null>;\n\treadonly spartanInvalid: Signal<boolean | null>;\n\treadonly touched: Signal<boolean | null>;\n\n\tdestroy(): void;\n}\n\nexport function controlStateEqual(a: ControlState | null, b: ControlState | null): boolean {\n\treturn (\n\t\ta === b ||\n\t\t(a != null &&\n\t\t\tb != null &&\n\t\t\ta.dirty === b.dirty &&\n\t\t\ta.invalid === b.invalid &&\n\t\t\ta.touched === b.touched &&\n\t\t\ta.spartanInvalid === b.spartanInvalid &&\n\t\t\ta.errors === b.errors)\n\t);\n}\n","import { computed, signal } from '@angular/core';\nimport type { AbstractControl, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport type { Subscription } from 'rxjs';\nimport type { ControlState } from './control-state';\nimport type { ErrorStateMatcher } from './error-options';\nimport { controlStateEqual, type StateTracker } from './state-tracker';\n\nexport class ReactiveStateTracker implements StateTracker {\n\tprivate readonly _stateVersion = signal(0);\n\tprivate readonly _eventsSubscription?: Subscription;\n\n\tpublic readonly controlState = computed<ControlState | null>(\n\t\t() => {\n\t\t\tconst control = this._ngControl.control as AbstractControl | null | undefined;\n\t\t\tif (!control) return null;\n\n\t\t\tthis._stateVersion();\n\n\t\t\tconst spartanInvalid = this._matcher?.isInvalid(control, this._controlParent) ?? false;\n\n\t\t\treturn {\n\t\t\t\tdirty: control.dirty,\n\t\t\t\terrors: control.errors,\n\t\t\t\tinvalid: control.invalid,\n\t\t\t\tspartanInvalid,\n\t\t\t\ttouched: control.touched,\n\t\t\t};\n\t\t},\n\t\t{ equal: controlStateEqual },\n\t);\n\n\tpublic readonly errors = computed(() => this.controlState()?.errors ?? null);\n\tpublic readonly dirty = computed(() => this.controlState()?.dirty ?? null);\n\tpublic readonly invalid = computed(() => this.controlState()?.invalid ?? null);\n\tpublic readonly spartanInvalid = computed(() => this.controlState()?.spartanInvalid ?? null);\n\tpublic readonly touched = computed(() => this.controlState()?.touched ?? null);\n\n\tprivate get _controlParent() {\n\t\treturn this._parentFormGroup || this._parentForm;\n\t}\n\n\tconstructor(\n\t\tprivate readonly _ngControl: NgControl,\n\t\tprivate readonly _matcher: ErrorStateMatcher | null,\n\t\tprivate readonly _parentFormGroup: FormGroupDirective | null,\n\t\tprivate readonly _parentForm: NgForm | null,\n\t) {\n\t\tconst control = _ngControl.control;\n\t\tif (control) {\n\t\t\tthis._eventsSubscription = control.events.subscribe(() => {\n\t\t\t\tthis._stateVersion.update((v) => v + 1);\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic destroy(): void {\n\t\tthis._eventsSubscription?.unsubscribe();\n\t}\n}\n","import { computed } from '@angular/core';\nimport type { AbstractControl, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport type { ControlState } from './control-state';\nimport type { ErrorStateMatcher } from './error-options';\nimport { controlStateEqual, type StateTracker } from './state-tracker';\n\nexport class SignalStateTracker implements StateTracker {\n\tprivate readonly _control = computed(() => {\n\t\tconst control = this._ngControl.control as AbstractControl | null | undefined;\n\t\tif (!control) return null;\n\t\treturn control;\n\t});\n\t// With signal forms, AbstractControl is implemented by InteropNgControl, whose control state\n\t// properties (e.g. dirty, touched, invalid) are getter functions that internally read FormField state signals.\n\t// Accessing them inside a computed() therefore creates reactive signal dependencies automatically.\n\t// See: https://github.com/angular/angular/blob/39e382a756b552d2b7bd3ce2c364daee9d7a0056/packages/forms/signals/src/controls/interop_ng_control.ts#L68-L129\n\tpublic readonly dirty = computed<boolean | null>(() => this._control()?.dirty ?? null);\n\tpublic readonly touched = computed<boolean | null>(() => this._control()?.touched ?? null);\n\tpublic readonly invalid = computed<boolean | null>(() => this._control()?.invalid ?? null);\n\tpublic readonly errors = computed(() => this._control()?.errors ?? null);\n\tpublic readonly spartanInvalid = computed<boolean | null>(() => {\n\t\tconst control = this._control();\n\t\tif (!control) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._matcher?.isInvalid(control, this._controlParent) ?? false;\n\t});\n\n\tpublic readonly controlState = computed<ControlState | null>(\n\t\t() => {\n\t\t\tconst dirty = this.dirty();\n\t\t\tconst invalid = this.invalid();\n\t\t\tconst touched = this.touched();\n\t\t\tconst spartanInvalid = this.spartanInvalid();\n\t\t\tconst errors = this.errors();\n\t\t\tif (dirty === null || invalid === null || touched === null || spartanInvalid === null) return null;\n\t\t\treturn { dirty, errors, invalid, spartanInvalid, touched };\n\t\t},\n\t\t{ equal: controlStateEqual },\n\t);\n\n\tprivate get _controlParent() {\n\t\treturn this._parentFormGroup || this._parentForm;\n\t}\n\n\tconstructor(\n\t\tprivate readonly _ngControl: NgControl,\n\t\tprivate readonly _matcher: ErrorStateMatcher | null,\n\t\tprivate readonly _parentFormGroup: FormGroupDirective | null,\n\t\tprivate readonly _parentForm: NgForm | null,\n\t) {}\n\n\tpublic destroy(): void {\n\t\t// No subscriptions to clean up for signal-based controls\n\t}\n}\n","import { isSignal } from '@angular/core';\nimport type { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport type { ErrorStateMatcher } from './error-options';\nimport { ReactiveStateTracker } from './reactive-state-tracker';\nimport { SignalStateTracker } from './signal-state-tracker';\nimport type { StateTracker } from './state-tracker';\n\nexport function createStateTracker(\n\tngControl: NgControl,\n\tmatcher: ErrorStateMatcher | null,\n\tparentFormGroup: FormGroupDirective | null,\n\tparentForm: NgForm | null,\n): StateTracker {\n\tif (ngControl.control && 'field' in ngControl.control && isSignal(ngControl.control.field)) {\n\t\treturn new SignalStateTracker(ngControl, matcher, parentFormGroup, parentForm);\n\t}\n\treturn new ReactiveStateTracker(ngControl, matcher, parentFormGroup, parentForm);\n}\n","import { Injectable, type Provider, type Type } from '@angular/core';\nimport { type AbstractControl, type FormGroupDirective, NgForm } from '@angular/forms';\n\n/**\n * Provides a custom {@link ErrorStateMatcher} at the component or application level.\n *\n * @example <caption>Application-level (appConfig)</caption>\n * ```ts\n * provideErrorStateMatcher(ShowOnDirtyErrorStateMatcher)\n * ```\n *\n * @example <caption>Component-level</caption>\n * ```ts\n * providers: [provideErrorStateMatcher(ShowOnDirtyErrorStateMatcher)]\n * ```\n */\nexport function provideErrorStateMatcher(matcher: Type<ErrorStateMatcher>): Provider {\n\treturn { provide: ErrorStateMatcher, useClass: matcher };\n}\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n\tisInvalid(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n\t\treturn !!(control && control.invalid && (control.dirty || (form instanceof NgForm && form.submitted)));\n\t}\n}\n\n/**\n * Determines when a form control should be considered in an invalid (error) state.\n *\n * The return value of `isInvalid` is reflected as the `data-matches-spartan-invalid` attribute\n * on field components, which drives both error styling and the visibility of `HlmFieldError`\n * messages.\n *\n * The default implementation matches when the control is invalid and either touched or, for\n * template-driven forms, the parent `NgForm` has been submitted.\n *\n * Provide a custom implementation (e.g. `ShowOnDirtyErrorStateMatcher`) at the component or\n * application level to change when errors are shown.\n */\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher {\n\tisInvalid(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n\t\treturn !!(control && control.invalid && (control.touched || (form instanceof NgForm && form.submitted)));\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAeM,SAAU,iBAAiB,CAAC,CAAsB,EAAE,CAAsB,EAAA;IAC/E,QACC,CAAC,KAAK,CAAC;SACN,CAAC,IAAI,IAAI;AACT,YAAA,CAAC,IAAI,IAAI;AACT,YAAA,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;AACnB,YAAA,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;AACvB,YAAA,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;AACvB,YAAA,CAAC,CAAC,cAAc,KAAK,CAAC,CAAC,cAAc;YACrC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC;AAEzB;;MCnBa,oBAAoB,CAAA;AAmCd,IAAA,UAAA;AACA,IAAA,QAAA;AACA,IAAA,gBAAA;AACA,IAAA,WAAA;AArCD,IAAA,aAAa,GAAG,MAAM,CAAC,CAAC,oFAAC;AACzB,IAAA,mBAAmB;AAEpB,IAAA,YAAY,GAAG,QAAQ,CACtC,MAAK;AACJ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAA6C;AAC7E,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;QAEzB,IAAI,CAAC,aAAa,EAAE;AAEpB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK;QAEtF,OAAO;YACN,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,cAAc;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;SACxB;AACF,IAAA,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EACC,KAAK,EAAE,iBAAiB,GAC1B;AAEe,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,IAAI,IAAI,6EAAC;AAC5D,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,IAAI,IAAI,4EAAC;AAC1D,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,IAAI,IAAI,8EAAC;AAC9D,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,cAAc,IAAI,IAAI,qFAAC;AAC5E,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,IAAI,IAAI,8EAAC;AAE9E,IAAA,IAAY,cAAc,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW;IACjD;AAEA,IAAA,WAAA,CACkB,UAAqB,EACrB,QAAkC,EAClC,gBAA2C,EAC3C,WAA0B,EAAA;QAH1B,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,WAAW,GAAX,WAAW;AAE5B,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO;QAClC,IAAI,OAAO,EAAE;YACZ,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;AACxD,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,YAAA,CAAC,CAAC;QACH;IACD;IAEO,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE;IACxC;AACA;;MCpDY,kBAAkB,CAAA;AAwCZ,IAAA,UAAA;AACA,IAAA,QAAA;AACA,IAAA,gBAAA;AACA,IAAA,WAAA;AA1CD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAA6C;AAC7E,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AACzB,QAAA,OAAO,OAAO;AACf,IAAA,CAAC,+EAAC;;;;;AAKc,IAAA,KAAK,GAAG,QAAQ,CAAiB,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,IAAI,4EAAC;AACtE,IAAA,OAAO,GAAG,QAAQ,CAAiB,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,IAAI,IAAI,8EAAC;AAC1E,IAAA,OAAO,GAAG,QAAQ,CAAiB,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,IAAI,IAAI,8EAAC;AAC1E,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,IAAI,IAAI,6EAAC;AACxD,IAAA,cAAc,GAAG,QAAQ,CAAiB,MAAK;AAC9D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC/B,IAAI,CAAC,OAAO,EAAE;AACb,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK;AACvE,IAAA,CAAC,qFAAC;AAEc,IAAA,YAAY,GAAG,QAAQ,CACtC,MAAK;AACJ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,cAAc,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;QAClG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE;AAC3D,IAAA,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EACC,KAAK,EAAE,iBAAiB,GAC1B;AAED,IAAA,IAAY,cAAc,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW;IACjD;AAEA,IAAA,WAAA,CACkB,UAAqB,EACrB,QAAkC,EAClC,gBAA2C,EAC3C,WAA0B,EAAA;QAH1B,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,WAAW,GAAX,WAAW;IAC1B;IAEI,OAAO,GAAA;;IAEd;AACA;;AChDK,SAAU,kBAAkB,CACjC,SAAoB,EACpB,OAAiC,EACjC,eAA0C,EAC1C,UAAyB,EAAA;AAEzB,IAAA,IAAI,SAAS,CAAC,OAAO,IAAI,OAAO,IAAI,SAAS,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC3F,OAAO,IAAI,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC;IAC/E;IACA,OAAO,IAAI,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC;AACjF;;ACdA;;;;;;;;;;;;AAYG;AACG,SAAU,wBAAwB,CAAC,OAAgC,EAAA;IACxE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE;AACzD;AAEA;MAEa,4BAA4B,CAAA;IACxC,SAAS,CAAC,OAA+B,EAAE,IAAwC,EAAA;QAClF,OAAO,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,KAAK,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACvG;2HAHY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;+HAA5B,4BAA4B,EAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;AAOD;;;;;;;;;;;;AAYG;MAEU,iBAAiB,CAAA;IAC7B,SAAS,CAAC,OAA+B,EAAE,IAAwC,EAAA;QAClF,OAAO,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,KAAK,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACzG;2HAHY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,uBAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA;;4FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACzClC;;AAEG;;;;"}
@@ -31,13 +31,13 @@ class BrnHoverCardContent {
31
31
  state = this._contentService.state;
32
32
  side = this._contentService.side;
33
33
  template = inject(TemplateRef);
34
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnHoverCardContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
35
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.17", type: BrnHoverCardContent, isStandalone: true, selector: "[brnHoverCardContent]", providers: [
34
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnHoverCardContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
35
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnHoverCardContent, isStandalone: true, selector: "[brnHoverCardContent]", providers: [
36
36
  provideExposedSideProviderExisting((() => BrnHoverCardContent)),
37
37
  provideExposesStateProviderExisting((() => BrnHoverCardContent)),
38
38
  ], exportAs: ["brnHoverCardContent"], ngImport: i0 });
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnHoverCardContent, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnHoverCardContent, decorators: [{
41
41
  type: Directive,
42
42
  args: [{
43
43
  selector: '[brnHoverCardContent]',
@@ -146,8 +146,8 @@ class BrnHoverCardContentService {
146
146
  _overlay = inject(Overlay);
147
147
  _zone = inject(NgZone);
148
148
  _psBuilder = inject(OverlayPositionBuilder);
149
- _content = signal(null, ...(ngDevMode ? [{ debugName: "_content" }] : []));
150
- _state = signal('closed', ...(ngDevMode ? [{ debugName: "_state" }] : []));
149
+ _content = signal(null, ...(ngDevMode ? [{ debugName: "_content" }] : /* istanbul ignore next */ []));
150
+ _state = signal('closed', ...(ngDevMode ? [{ debugName: "_state" }] : /* istanbul ignore next */ []));
151
151
  _config = {};
152
152
  _overlayRef;
153
153
  _positionStrategy;
@@ -210,10 +210,10 @@ class BrnHoverCardContentService {
210
210
  this._destroyed$.complete();
211
211
  this._destroyed$ = new Subject();
212
212
  }
213
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnHoverCardContentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
214
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnHoverCardContentService });
213
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnHoverCardContentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
214
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnHoverCardContentService });
215
215
  }
216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnHoverCardContentService, decorators: [{
216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnHoverCardContentService, decorators: [{
217
217
  type: Injectable
218
218
  }] });
219
219
  class BrnHoverCardTrigger {
@@ -240,22 +240,14 @@ class BrnHoverCardTrigger {
240
240
  return of(visible).pipe(delay(this.animationDelay()));
241
241
  }), distinctUntilChanged(), share(), takeUntil(this._destroy$));
242
242
  _defaultOptions = injectBrnHoverCardDefaultOptions();
243
- showDelay = input(this._defaultOptions.showDelay, ...(ngDevMode ? [{ debugName: "showDelay", transform: numberAttribute }] : [{
244
- transform: numberAttribute,
245
- }]));
246
- hideDelay = input(this._defaultOptions.hideDelay, ...(ngDevMode ? [{ debugName: "hideDelay", transform: numberAttribute }] : [{
247
- transform: numberAttribute,
248
- }]));
249
- animationDelay = input(this._defaultOptions.animationDelay, ...(ngDevMode ? [{ debugName: "animationDelay", transform: numberAttribute }] : [{
250
- transform: numberAttribute,
251
- }]));
252
- sideOffset = input(this._defaultOptions.sideOffset, ...(ngDevMode ? [{ debugName: "sideOffset", transform: numberAttribute }] : [{
253
- transform: numberAttribute,
254
- }]));
255
- align = input(this._defaultOptions.align, ...(ngDevMode ? [{ debugName: "align" }] : []));
256
- brnHoverCardTriggerFor = input(undefined, ...(ngDevMode ? [{ debugName: "brnHoverCardTriggerFor" }] : []));
257
- mutableBrnHoverCardTriggerFor = computed(() => signal(this.brnHoverCardTriggerFor()), ...(ngDevMode ? [{ debugName: "mutableBrnHoverCardTriggerFor" }] : []));
258
- _brnHoverCardTriggerForState = computed(() => this.mutableBrnHoverCardTriggerFor()(), ...(ngDevMode ? [{ debugName: "_brnHoverCardTriggerForState" }] : []));
243
+ showDelay = input(this._defaultOptions.showDelay, { ...(ngDevMode ? { debugName: "showDelay" } : /* istanbul ignore next */ {}), transform: numberAttribute });
244
+ hideDelay = input(this._defaultOptions.hideDelay, { ...(ngDevMode ? { debugName: "hideDelay" } : /* istanbul ignore next */ {}), transform: numberAttribute });
245
+ animationDelay = input(this._defaultOptions.animationDelay, { ...(ngDevMode ? { debugName: "animationDelay" } : /* istanbul ignore next */ {}), transform: numberAttribute });
246
+ sideOffset = input(this._defaultOptions.sideOffset, { ...(ngDevMode ? { debugName: "sideOffset" } : /* istanbul ignore next */ {}), transform: numberAttribute });
247
+ align = input(this._defaultOptions.align, ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
248
+ brnHoverCardTriggerFor = input(undefined, ...(ngDevMode ? [{ debugName: "brnHoverCardTriggerFor" }] : /* istanbul ignore next */ []));
249
+ mutableBrnHoverCardTriggerFor = computed(() => signal(this.brnHoverCardTriggerFor()), ...(ngDevMode ? [{ debugName: "mutableBrnHoverCardTriggerFor" }] : /* istanbul ignore next */ []));
250
+ _brnHoverCardTriggerForState = computed(() => this.mutableBrnHoverCardTriggerFor()(), ...(ngDevMode ? [{ debugName: "_brnHoverCardTriggerForState" }] : /* istanbul ignore next */ []));
259
251
  constructor() {
260
252
  effect(() => {
261
253
  const value = this._brnHoverCardTriggerForState();
@@ -282,10 +274,10 @@ class BrnHoverCardTrigger {
282
274
  this._destroy$.complete();
283
275
  this._focusMonitor.stopMonitoring(this._el);
284
276
  }
285
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnHoverCardTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
286
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.17", type: BrnHoverCardTrigger, isStandalone: true, selector: "[brnHoverCardTrigger]:not(ng-container),[brnHoverCardTriggerFor]:not(ng-container)", inputs: { showDelay: { classPropertyName: "showDelay", publicName: "showDelay", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "hideDelay", isSignal: true, isRequired: false, transformFunction: null }, animationDelay: { classPropertyName: "animationDelay", publicName: "animationDelay", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, brnHoverCardTriggerFor: { classPropertyName: "brnHoverCardTriggerFor", publicName: "brnHoverCardTriggerFor", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["brnHoverCardTrigger"], ngImport: i0 });
277
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnHoverCardTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
278
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: BrnHoverCardTrigger, isStandalone: true, selector: "[brnHoverCardTrigger]:not(ng-container),[brnHoverCardTriggerFor]:not(ng-container)", inputs: { showDelay: { classPropertyName: "showDelay", publicName: "showDelay", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "hideDelay", isSignal: true, isRequired: false, transformFunction: null }, animationDelay: { classPropertyName: "animationDelay", publicName: "animationDelay", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, brnHoverCardTriggerFor: { classPropertyName: "brnHoverCardTriggerFor", publicName: "brnHoverCardTriggerFor", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["brnHoverCardTrigger"], ngImport: i0 });
287
279
  }
288
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnHoverCardTrigger, decorators: [{
280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnHoverCardTrigger, decorators: [{
289
281
  type: Directive,
290
282
  args: [{
291
283
  selector: '[brnHoverCardTrigger]:not(ng-container),[brnHoverCardTriggerFor]:not(ng-container)',
@@ -294,17 +286,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
294
286
  }], ctorParameters: () => [], propDecorators: { showDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDelay", required: false }] }], hideDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideDelay", required: false }] }], animationDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationDelay", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], brnHoverCardTriggerFor: [{ type: i0.Input, args: [{ isSignal: true, alias: "brnHoverCardTriggerFor", required: false }] }] } });
295
287
 
296
288
  class BrnHoverCard {
297
- _trigger = contentChild(BrnHoverCardTrigger, ...(ngDevMode ? [{ debugName: "_trigger" }] : []));
298
- _content = contentChild(BrnHoverCardContent, ...(ngDevMode ? [{ debugName: "_content" }] : []));
289
+ _trigger = contentChild(BrnHoverCardTrigger, ...(ngDevMode ? [{ debugName: "_trigger" }] : /* istanbul ignore next */ []));
290
+ _content = contentChild(BrnHoverCardContent, ...(ngDevMode ? [{ debugName: "_content" }] : /* istanbul ignore next */ []));
299
291
  ngAfterContentInit() {
300
292
  if (!this._trigger() || !this._content())
301
293
  return;
302
294
  this._trigger()?.mutableBrnHoverCardTriggerFor().set(this._content());
303
295
  }
304
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnHoverCard, deps: [], target: i0.ɵɵFactoryTarget.Directive });
305
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.17", type: BrnHoverCard, isStandalone: true, selector: "[brnHoverCard],brn-hover-card", providers: [BrnHoverCardContentService], queries: [{ propertyName: "_trigger", first: true, predicate: BrnHoverCardTrigger, descendants: true, isSignal: true }, { propertyName: "_content", first: true, predicate: BrnHoverCardContent, descendants: true, isSignal: true }], ngImport: i0 });
296
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnHoverCard, deps: [], target: i0.ɵɵFactoryTarget.Directive });
297
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.16", type: BrnHoverCard, isStandalone: true, selector: "[brnHoverCard],brn-hover-card", providers: [BrnHoverCardContentService], queries: [{ propertyName: "_trigger", first: true, predicate: BrnHoverCardTrigger, descendants: true, isSignal: true }, { propertyName: "_content", first: true, predicate: BrnHoverCardContent, descendants: true, isSignal: true }], ngImport: i0 });
306
298
  }
307
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnHoverCard, decorators: [{
299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnHoverCard, decorators: [{
308
300
  type: Directive,
309
301
  args: [{
310
302
  selector: '[brnHoverCard],brn-hover-card',
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-hover-card.mjs","sources":["../../../../libs/brain/hover-card/src/lib/brn-hover-card.token.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card-content.service.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card.ts","../../../../libs/brain/hover-card/src/index.ts","../../../../libs/brain/hover-card/src/spartan-ng-brain-hover-card.ts"],"sourcesContent":["import { inject, InjectionToken, type ValueProvider } from '@angular/core';\n\nexport interface BrnHoverCardDefaultOptions {\n\tshowDelay: number;\n\thideDelay: number;\n\tanimationDelay: number;\n\tsideOffset: number;\n\talign: 'top' | 'bottom';\n}\n\nexport const defaultOptions: BrnHoverCardDefaultOptions = {\n\tshowDelay: 300,\n\thideDelay: 500,\n\tanimationDelay: 100,\n\tsideOffset: 5,\n\talign: 'bottom',\n};\n\nconst BRN_HOVER_CARD_DEFAULT_OPTIONS = new InjectionToken<BrnHoverCardDefaultOptions>(\n\t'brn-hover-card-default-options',\n\t{\n\t\tprovidedIn: 'root',\n\t\tfactory: () => defaultOptions,\n\t},\n);\n\nexport function provideBrnHoverCardDefaultOptions(options: Partial<BrnHoverCardDefaultOptions>): ValueProvider {\n\treturn { provide: BRN_HOVER_CARD_DEFAULT_OPTIONS, useValue: { ...defaultOptions, ...options } };\n}\n\nexport function injectBrnHoverCardDefaultOptions(): BrnHoverCardDefaultOptions {\n\treturn inject(BRN_HOVER_CARD_DEFAULT_OPTIONS, { optional: true }) ?? defaultOptions;\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { NumberInput } from '@angular/cdk/coercion';\nimport {\n\ttype ConnectedOverlayPositionChange,\n\ttype ConnectedPosition,\n\ttype FlexibleConnectedPositionStrategy,\n\tOverlay,\n\ttype OverlayConfig,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjectable,\n\tinput,\n\tNgZone,\n\tnumberAttribute,\n\ttype OnDestroy,\n\ttype OnInit,\n\ttype Signal,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport {\n\tcreateHoverObservable,\n\ttype ExposesSide,\n\ttype ExposesState,\n\tprovideExposedSideProviderExisting,\n\tprovideExposesStateProviderExisting,\n} from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, merge, type Observable, of, Subject } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, share, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { injectBrnHoverCardDefaultOptions } from './brn-hover-card.token';\n\n@Directive({\n\tselector: '[brnHoverCardContent]',\n\texportAs: 'brnHoverCardContent',\n\tproviders: [\n\t\tprovideExposedSideProviderExisting(() => BrnHoverCardContent),\n\t\tprovideExposesStateProviderExisting(() => BrnHoverCardContent),\n\t],\n})\nexport class BrnHoverCardContent implements ExposesState, ExposesSide {\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tpublic readonly state = this._contentService.state;\n\tpublic readonly side = this._contentService.side;\n\tpublic readonly template = inject(TemplateRef);\n}\n\n/**\n * We are building on shoulders of giants here and use the implementation provided by the incredible TaigaUI\n * team: https://github.com/taiga-family/taiga-ui/blob/main/projects/core/directives/dropdown/dropdown-hover.directive.ts\n * Check them out! Give them a try! Leave a star! Their work is incredible!\n */\n\nexport type BrnHoverCardOptions = Partial<\n\t{\n\t\tattachTo: ElementRef;\n\t\tattachPositions: ConnectedPosition[];\n\t\talign: 'top' | 'bottom' | 'left' | 'right';\n\t\tsideOffset: number;\n\t} & OverlayConfig\n>;\n\nconst topFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n];\nconst bottomFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\nconst leftFirstPositions: ConnectedPosition[] = [\n\t// left side\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 1: right (opposite horizontal)\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 2: bottom (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t// Fallback 3: top (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\nconst rightFirstPositions: ConnectedPosition[] = [\n\t// right side\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 1: left (opposite horizontal)\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 2: bottom (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t// Fallback 3: top (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\nconst POSITION_MAP: Record<'top' | 'bottom' | 'left' | 'right', ConnectedPosition[]> = {\n\ttop: topFirstPositions,\n\tbottom: bottomFirstPositions,\n\tleft: leftFirstPositions,\n\tright: rightFirstPositions,\n};\n\n@Injectable()\nexport class BrnHoverCardContentService {\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\tprivate readonly _state = signal<'open' | 'closed'>('closed');\n\n\tprivate _config: BrnHoverCardOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _positionChangesObservables$ = new BehaviorSubject<\n\t\tObservable<ConnectedOverlayPositionChange> | undefined\n\t>(undefined);\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tpublic readonly positionChanges$: Observable<ConnectedOverlayPositionChange> = this._positionChangesObservables$.pipe(\n\t\tswitchMap((positionChangeObservable) => (positionChangeObservable ? positionChangeObservable : of(undefined))),\n\t\tfilter((change): change is NonNullable<ConnectedOverlayPositionChange> => change !== undefined && change !== null),\n\t);\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable ? overlayHoveredObservable : of(false))),\n\t);\n\n\tpublic readonly state = this._state.asReadonly();\n\tpublic readonly side: Signal<'top' | 'bottom' | 'left' | 'right'> = toSignal(\n\t\tthis.positionChanges$.pipe(\n\t\t\tmap<ConnectedOverlayPositionChange, 'top' | 'bottom' | 'left' | 'right'>((change) =>\n\t\t\t\t// todo: better translation or adjusting hlm to take that into account\n\t\t\t\tchange.connectionPair.originY === 'center'\n\t\t\t\t\t? change.connectionPair.originX === 'start'\n\t\t\t\t\t\t? 'left'\n\t\t\t\t\t\t: 'right'\n\t\t\t\t\t: change.connectionPair.originY,\n\t\t\t),\n\t\t),\n\t\t{ initialValue: 'bottom' },\n\t);\n\n\tpublic setConfig(config: BrnHoverCardOptions) {\n\t\tthis._config = config;\n\t\tif (config.attachTo) {\n\t\t\tconst align = config.align ?? 'bottom';\n\t\t\tconst positions = config.attachPositions ?? POSITION_MAP[align];\n\n\t\t\tthis._positionStrategy = this._psBuilder.flexibleConnectedTo(config.attachTo).withPositions(positions);\n\n\t\t\tconst offset = config.sideOffset ?? 0;\n\t\t\tif (align === 'left' || align === 'right') {\n\t\t\t\tthis._positionStrategy.withDefaultOffsetX(align === 'left' ? -offset : offset);\n\t\t\t} else {\n\t\t\t\tthis._positionStrategy.withDefaultOffsetY(align === 'top' ? -offset : offset);\n\t\t\t}\n\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t\tthis._positionChangesObservables$.next(this._positionStrategy.positionChanges);\n\t\t}\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown> | BrnHoverCardContent, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value instanceof TemplateRef ? value : value.template, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic setState(newState: 'open' | 'closed') {\n\t\tthis._state.set(newState);\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$).pipe(map((e) => e.hover)),\n\t\t);\n\t}\n\n\tpublic hide() {\n\t\tthis._overlayRef?.detach();\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t}\n}\n\n@Directive({\n\tselector: '[brnHoverCardTrigger]:not(ng-container),[brnHoverCardTriggerFor]:not(ng-container)',\n\texportAs: 'brnHoverCardTrigger',\n})\nexport class BrnHoverCardTrigger implements OnInit, OnDestroy {\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\n\tpublic readonly focused$: Observable<boolean> = this._focusMonitor.monitor(this._el).pipe(map((e) => e !== null));\n\n\tpublic readonly hovered$: Observable<boolean> = merge(\n\t\tfromEvent(this._el.nativeElement, 'click').pipe(map(() => false)),\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$).pipe(map((e) => e.hover)),\n\t\tthis._contentService.hovered$,\n\t\tthis.focused$,\n\t).pipe(distinctUntilChanged());\n\tpublic readonly showing$: Observable<boolean> = this.hovered$.pipe(\n\t\t// we set the state to open here because we are about to open show the content\n\t\ttap((visible) => visible && this._contentService.setState('open')),\n\t\tswitchMap((visible) => {\n\t\t\t// we are delaying based on the configure-able input\n\t\t\treturn of(visible).pipe(delay(visible ? this.showDelay() : this.hideDelay()));\n\t\t}),\n\t\tswitchMap((visible) => {\n\t\t\t// don't do anything when we are in the process of showing the content\n\t\t\tif (visible) return of(visible);\n\t\t\t// we set the state to closed here to trigger any animations for the element leaving\n\t\t\tthis._contentService.setState('closed');\n\t\t\t// then delay to wait for the leaving animation to finish\n\t\t\treturn of(visible).pipe(delay(this.animationDelay()));\n\t\t}),\n\t\tdistinctUntilChanged(),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tprivate readonly _defaultOptions = injectBrnHoverCardDefaultOptions();\n\tpublic readonly showDelay = input<number, NumberInput>(this._defaultOptions.showDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly hideDelay = input<number, NumberInput>(this._defaultOptions.hideDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly animationDelay = input<number, NumberInput>(this._defaultOptions.animationDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly sideOffset = input<number, NumberInput>(this._defaultOptions.sideOffset, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly align = input<'top' | 'bottom' | 'left' | 'right'>(this._defaultOptions.align);\n\n\tpublic readonly brnHoverCardTriggerFor = input<TemplateRef<unknown> | BrnHoverCardContent | undefined>(undefined);\n\tpublic readonly mutableBrnHoverCardTriggerFor = computed(() => signal(this.brnHoverCardTriggerFor()));\n\tprivate readonly _brnHoverCardTriggerForState = computed(() => this.mutableBrnHoverCardTriggerFor()());\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._brnHoverCardTriggerForState();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({ attachTo: this._el, align: this.align(), sideOffset: this.sideOffset() });\n\t\tthis.showing$.subscribe((isHovered) => {\n\t\t\tif (isHovered) {\n\t\t\t\tthis._contentService.show();\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tthis._focusMonitor.stopMonitoring(this._el);\n\t}\n}\n","import { type AfterContentInit, contentChild, Directive } from '@angular/core';\nimport { BrnHoverCardContent, BrnHoverCardContentService, BrnHoverCardTrigger } from './brn-hover-card-content.service';\n\n@Directive({\n\tselector: '[brnHoverCard],brn-hover-card',\n\tproviders: [BrnHoverCardContentService],\n})\nexport class BrnHoverCard implements AfterContentInit {\n\tprivate readonly _trigger = contentChild(BrnHoverCardTrigger);\n\tprivate readonly _content = contentChild(BrnHoverCardContent);\n\n\tpublic ngAfterContentInit() {\n\t\tif (!this._trigger() || !this._content()) return;\n\t\tthis._trigger()?.mutableBrnHoverCardTriggerFor().set(this._content());\n\t}\n}\n","import { BrnHoverCard } from './lib/brn-hover-card';\nimport { BrnHoverCardContent, BrnHoverCardTrigger } from './lib/brn-hover-card-content.service';\n\nexport * from './lib/brn-hover-card';\nexport * from './lib/brn-hover-card-content.service';\nexport * from './lib/brn-hover-card.token';\n\nexport const BrnHoverCardImports = [BrnHoverCard, BrnHoverCardContent, BrnHoverCardTrigger] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-hover-card.mjs","sources":["../../../../libs/brain/hover-card/src/lib/brn-hover-card.token.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card-content.service.ts","../../../../libs/brain/hover-card/src/lib/brn-hover-card.ts","../../../../libs/brain/hover-card/src/index.ts","../../../../libs/brain/hover-card/src/spartan-ng-brain-hover-card.ts"],"sourcesContent":["import { inject, InjectionToken, type ValueProvider } from '@angular/core';\n\nexport interface BrnHoverCardDefaultOptions {\n\tshowDelay: number;\n\thideDelay: number;\n\tanimationDelay: number;\n\tsideOffset: number;\n\talign: 'top' | 'bottom';\n}\n\nexport const defaultOptions: BrnHoverCardDefaultOptions = {\n\tshowDelay: 300,\n\thideDelay: 500,\n\tanimationDelay: 100,\n\tsideOffset: 5,\n\talign: 'bottom',\n};\n\nconst BRN_HOVER_CARD_DEFAULT_OPTIONS = new InjectionToken<BrnHoverCardDefaultOptions>(\n\t'brn-hover-card-default-options',\n\t{\n\t\tprovidedIn: 'root',\n\t\tfactory: () => defaultOptions,\n\t},\n);\n\nexport function provideBrnHoverCardDefaultOptions(options: Partial<BrnHoverCardDefaultOptions>): ValueProvider {\n\treturn { provide: BRN_HOVER_CARD_DEFAULT_OPTIONS, useValue: { ...defaultOptions, ...options } };\n}\n\nexport function injectBrnHoverCardDefaultOptions(): BrnHoverCardDefaultOptions {\n\treturn inject(BRN_HOVER_CARD_DEFAULT_OPTIONS, { optional: true }) ?? defaultOptions;\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { NumberInput } from '@angular/cdk/coercion';\nimport {\n\ttype ConnectedOverlayPositionChange,\n\ttype ConnectedPosition,\n\ttype FlexibleConnectedPositionStrategy,\n\tOverlay,\n\ttype OverlayConfig,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjectable,\n\tinput,\n\tNgZone,\n\tnumberAttribute,\n\ttype OnDestroy,\n\ttype OnInit,\n\ttype Signal,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport {\n\tcreateHoverObservable,\n\ttype ExposesSide,\n\ttype ExposesState,\n\tprovideExposedSideProviderExisting,\n\tprovideExposesStateProviderExisting,\n} from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, merge, type Observable, of, Subject } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, share, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { injectBrnHoverCardDefaultOptions } from './brn-hover-card.token';\n\n@Directive({\n\tselector: '[brnHoverCardContent]',\n\texportAs: 'brnHoverCardContent',\n\tproviders: [\n\t\tprovideExposedSideProviderExisting(() => BrnHoverCardContent),\n\t\tprovideExposesStateProviderExisting(() => BrnHoverCardContent),\n\t],\n})\nexport class BrnHoverCardContent implements ExposesState, ExposesSide {\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tpublic readonly state = this._contentService.state;\n\tpublic readonly side = this._contentService.side;\n\tpublic readonly template = inject(TemplateRef);\n}\n\n/**\n * We are building on shoulders of giants here and use the implementation provided by the incredible TaigaUI\n * team: https://github.com/taiga-family/taiga-ui/blob/main/projects/core/directives/dropdown/dropdown-hover.directive.ts\n * Check them out! Give them a try! Leave a star! Their work is incredible!\n */\n\nexport type BrnHoverCardOptions = Partial<\n\t{\n\t\tattachTo: ElementRef;\n\t\tattachPositions: ConnectedPosition[];\n\t\talign: 'top' | 'bottom' | 'left' | 'right';\n\t\tsideOffset: number;\n\t} & OverlayConfig\n>;\n\nconst topFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n];\nconst bottomFirstPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\nconst leftFirstPositions: ConnectedPosition[] = [\n\t// left side\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 1: right (opposite horizontal)\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 2: bottom (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t// Fallback 3: top (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\nconst rightFirstPositions: ConnectedPosition[] = [\n\t// right side\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 1: left (opposite horizontal)\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t},\n\t// Fallback 2: bottom (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t},\n\t// Fallback 3: top (vertical fallback)\n\t{\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t},\n];\n\nconst POSITION_MAP: Record<'top' | 'bottom' | 'left' | 'right', ConnectedPosition[]> = {\n\ttop: topFirstPositions,\n\tbottom: bottomFirstPositions,\n\tleft: leftFirstPositions,\n\tright: rightFirstPositions,\n};\n\n@Injectable()\nexport class BrnHoverCardContentService {\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\tprivate readonly _state = signal<'open' | 'closed'>('closed');\n\n\tprivate _config: BrnHoverCardOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _positionChangesObservables$ = new BehaviorSubject<\n\t\tObservable<ConnectedOverlayPositionChange> | undefined\n\t>(undefined);\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tpublic readonly positionChanges$: Observable<ConnectedOverlayPositionChange> = this._positionChangesObservables$.pipe(\n\t\tswitchMap((positionChangeObservable) => (positionChangeObservable ? positionChangeObservable : of(undefined))),\n\t\tfilter((change): change is NonNullable<ConnectedOverlayPositionChange> => change !== undefined && change !== null),\n\t);\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable ? overlayHoveredObservable : of(false))),\n\t);\n\n\tpublic readonly state = this._state.asReadonly();\n\tpublic readonly side: Signal<'top' | 'bottom' | 'left' | 'right'> = toSignal(\n\t\tthis.positionChanges$.pipe(\n\t\t\tmap<ConnectedOverlayPositionChange, 'top' | 'bottom' | 'left' | 'right'>((change) =>\n\t\t\t\t// todo: better translation or adjusting hlm to take that into account\n\t\t\t\tchange.connectionPair.originY === 'center'\n\t\t\t\t\t? change.connectionPair.originX === 'start'\n\t\t\t\t\t\t? 'left'\n\t\t\t\t\t\t: 'right'\n\t\t\t\t\t: change.connectionPair.originY,\n\t\t\t),\n\t\t),\n\t\t{ initialValue: 'bottom' },\n\t);\n\n\tpublic setConfig(config: BrnHoverCardOptions) {\n\t\tthis._config = config;\n\t\tif (config.attachTo) {\n\t\t\tconst align = config.align ?? 'bottom';\n\t\t\tconst positions = config.attachPositions ?? POSITION_MAP[align];\n\n\t\t\tthis._positionStrategy = this._psBuilder.flexibleConnectedTo(config.attachTo).withPositions(positions);\n\n\t\t\tconst offset = config.sideOffset ?? 0;\n\t\t\tif (align === 'left' || align === 'right') {\n\t\t\t\tthis._positionStrategy.withDefaultOffsetX(align === 'left' ? -offset : offset);\n\t\t\t} else {\n\t\t\t\tthis._positionStrategy.withDefaultOffsetY(align === 'top' ? -offset : offset);\n\t\t\t}\n\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t\tthis._positionChangesObservables$.next(this._positionStrategy.positionChanges);\n\t\t}\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown> | BrnHoverCardContent, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value instanceof TemplateRef ? value : value.template, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic setState(newState: 'open' | 'closed') {\n\t\tthis._state.set(newState);\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$).pipe(map((e) => e.hover)),\n\t\t);\n\t}\n\n\tpublic hide() {\n\t\tthis._overlayRef?.detach();\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t}\n}\n\n@Directive({\n\tselector: '[brnHoverCardTrigger]:not(ng-container),[brnHoverCardTriggerFor]:not(ng-container)',\n\texportAs: 'brnHoverCardTrigger',\n})\nexport class BrnHoverCardTrigger implements OnInit, OnDestroy {\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _contentService = inject(BrnHoverCardContentService);\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\n\tpublic readonly focused$: Observable<boolean> = this._focusMonitor.monitor(this._el).pipe(map((e) => e !== null));\n\n\tpublic readonly hovered$: Observable<boolean> = merge(\n\t\tfromEvent(this._el.nativeElement, 'click').pipe(map(() => false)),\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$).pipe(map((e) => e.hover)),\n\t\tthis._contentService.hovered$,\n\t\tthis.focused$,\n\t).pipe(distinctUntilChanged());\n\tpublic readonly showing$: Observable<boolean> = this.hovered$.pipe(\n\t\t// we set the state to open here because we are about to open show the content\n\t\ttap((visible) => visible && this._contentService.setState('open')),\n\t\tswitchMap((visible) => {\n\t\t\t// we are delaying based on the configure-able input\n\t\t\treturn of(visible).pipe(delay(visible ? this.showDelay() : this.hideDelay()));\n\t\t}),\n\t\tswitchMap((visible) => {\n\t\t\t// don't do anything when we are in the process of showing the content\n\t\t\tif (visible) return of(visible);\n\t\t\t// we set the state to closed here to trigger any animations for the element leaving\n\t\t\tthis._contentService.setState('closed');\n\t\t\t// then delay to wait for the leaving animation to finish\n\t\t\treturn of(visible).pipe(delay(this.animationDelay()));\n\t\t}),\n\t\tdistinctUntilChanged(),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tprivate readonly _defaultOptions = injectBrnHoverCardDefaultOptions();\n\tpublic readonly showDelay = input<number, NumberInput>(this._defaultOptions.showDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly hideDelay = input<number, NumberInput>(this._defaultOptions.hideDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly animationDelay = input<number, NumberInput>(this._defaultOptions.animationDelay, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly sideOffset = input<number, NumberInput>(this._defaultOptions.sideOffset, {\n\t\ttransform: numberAttribute,\n\t});\n\tpublic readonly align = input<'top' | 'bottom' | 'left' | 'right'>(this._defaultOptions.align);\n\n\tpublic readonly brnHoverCardTriggerFor = input<TemplateRef<unknown> | BrnHoverCardContent | undefined>(undefined);\n\tpublic readonly mutableBrnHoverCardTriggerFor = computed(() => signal(this.brnHoverCardTriggerFor()));\n\tprivate readonly _brnHoverCardTriggerForState = computed(() => this.mutableBrnHoverCardTriggerFor()());\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._brnHoverCardTriggerForState();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({ attachTo: this._el, align: this.align(), sideOffset: this.sideOffset() });\n\t\tthis.showing$.subscribe((isHovered) => {\n\t\t\tif (isHovered) {\n\t\t\t\tthis._contentService.show();\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tthis._focusMonitor.stopMonitoring(this._el);\n\t}\n}\n","import { type AfterContentInit, contentChild, Directive } from '@angular/core';\nimport { BrnHoverCardContent, BrnHoverCardContentService, BrnHoverCardTrigger } from './brn-hover-card-content.service';\n\n@Directive({\n\tselector: '[brnHoverCard],brn-hover-card',\n\tproviders: [BrnHoverCardContentService],\n})\nexport class BrnHoverCard implements AfterContentInit {\n\tprivate readonly _trigger = contentChild(BrnHoverCardTrigger);\n\tprivate readonly _content = contentChild(BrnHoverCardContent);\n\n\tpublic ngAfterContentInit() {\n\t\tif (!this._trigger() || !this._content()) return;\n\t\tthis._trigger()?.mutableBrnHoverCardTriggerFor().set(this._content());\n\t}\n}\n","import { BrnHoverCard } from './lib/brn-hover-card';\nimport { BrnHoverCardContent, BrnHoverCardTrigger } from './lib/brn-hover-card-content.service';\n\nexport * from './lib/brn-hover-card';\nexport * from './lib/brn-hover-card-content.service';\nexport * from './lib/brn-hover-card.token';\n\nexport const BrnHoverCardImports = [BrnHoverCard, BrnHoverCardContent, BrnHoverCardTrigger] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -19,29 +19,27 @@ const BRN_INPUT_OTP_VALUE_ACCESSOR = {
19
19
  class BrnInputOtp {
20
20
  static _id = 0;
21
21
  /** Whether the input has focus. */
22
- _focused = signal(false, ...(ngDevMode ? [{ debugName: "_focused" }] : []));
22
+ _focused = signal(false, ...(ngDevMode ? [{ debugName: "_focused" }] : /* istanbul ignore next */ []));
23
23
  /** Styles applied to the host element. */
24
- hostStyles = input('position: relative; cursor: text; user-select: none; pointer-events: none;', ...(ngDevMode ? [{ debugName: "hostStyles" }] : []));
24
+ hostStyles = input('position: relative; cursor: text; user-select: none; pointer-events: none;', ...(ngDevMode ? [{ debugName: "hostStyles" }] : /* istanbul ignore next */ []));
25
25
  /** Custom id applied to the input element */
26
- inputId = input(`brn-input-otp-${++BrnInputOtp._id}`, ...(ngDevMode ? [{ debugName: "inputId" }] : []));
26
+ inputId = input(`brn-input-otp-${++BrnInputOtp._id}`, ...(ngDevMode ? [{ debugName: "inputId" }] : /* istanbul ignore next */ []));
27
27
  /** Custom autocomplete attribute applied to the input element */
28
- inputAutocomplete = input('one-time-code', ...(ngDevMode ? [{ debugName: "inputAutocomplete" }] : []));
28
+ inputAutocomplete = input('one-time-code', ...(ngDevMode ? [{ debugName: "inputAutocomplete" }] : /* istanbul ignore next */ []));
29
29
  /** Styles applied to the input element to make it invisible and clickable. */
30
- inputStyles = input('position: absolute; inset: 0; width: 100%; height: 100%; display: flex; textAlign: left; opacity: 1; color: transparent; pointerEvents: all; background: transparent; caret-color: transparent; border: 0px solid transparent; outline: transparent solid 0px; box-shadow: none; line-height: 1; letter-spacing: -0.5em; font-family: monospace; font-variant-numeric: tabular-nums;', ...(ngDevMode ? [{ debugName: "inputStyles" }] : []));
30
+ inputStyles = input('position: absolute; inset: 0; width: 100%; height: 100%; display: flex; textAlign: left; opacity: 1; color: transparent; pointerEvents: all; background: transparent; caret-color: transparent; border: 0px solid transparent; outline: transparent solid 0px; box-shadow: none; line-height: 1; letter-spacing: -0.5em; font-family: monospace; font-variant-numeric: tabular-nums;', ...(ngDevMode ? [{ debugName: "inputStyles" }] : /* istanbul ignore next */ []));
31
31
  /** Styles applied to the container element. */
32
- containerStyles = input('position: absolute; inset: 0; pointer-events: none;', ...(ngDevMode ? [{ debugName: "containerStyles" }] : []));
32
+ containerStyles = input('position: absolute; inset: 0; pointer-events: none;', ...(ngDevMode ? [{ debugName: "containerStyles" }] : /* istanbul ignore next */ []));
33
33
  /** Determine if the date picker is disabled. */
34
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{
35
- transform: booleanAttribute,
36
- }]));
37
- _disabled = linkedSignal(this.disabled, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
34
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
35
+ _disabled = linkedSignal(this.disabled, ...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
38
36
  /** The number of slots. */
39
- maxLength = input.required(...(ngDevMode ? [{ debugName: "maxLength", transform: numberAttribute }] : [{ transform: numberAttribute }]));
37
+ maxLength = input.required({ ...(ngDevMode ? { debugName: "maxLength" } : /* istanbul ignore next */ {}), transform: numberAttribute });
40
38
  /** Virtual keyboard appearance on mobile */
41
- inputMode = input('numeric', ...(ngDevMode ? [{ debugName: "inputMode" }] : []));
42
- inputClass = input('', ...(ngDevMode ? [{ debugName: "inputClass" }] : []));
39
+ inputMode = input('numeric', ...(ngDevMode ? [{ debugName: "inputMode" }] : /* istanbul ignore next */ []));
40
+ inputClass = input('', ...(ngDevMode ? [{ debugName: "inputClass" }] : /* istanbul ignore next */ []));
43
41
  /** If true, the element is focused automatically on init **/
44
- autofocus = input(false, ...(ngDevMode ? [{ debugName: "autofocus", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
42
+ autofocus = input(false, { ...(ngDevMode ? { debugName: "autofocus" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
45
43
  /**
46
44
  * Defines how the pasted text should be transformed before saving to model/form.
47
45
  * Allows pasting text which contains extra characters like spaces, dashes, etc. and are longer than the maxLength.
@@ -49,9 +47,9 @@ class BrnInputOtp {
49
47
  * "XXX-XXX": (pastedText) => pastedText.replaceAll('-', '')
50
48
  * "XXX XXX": (pastedText) => pastedText.replaceAll(/\s+/g, '')
51
49
  */
52
- transformPaste = input((text) => text, ...(ngDevMode ? [{ debugName: "transformPaste" }] : []));
50
+ transformPaste = input((text) => text, ...(ngDevMode ? [{ debugName: "transformPaste" }] : /* istanbul ignore next */ []));
53
51
  /** The value controlling the input */
54
- value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
52
+ value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
55
53
  /** Emits when the value changes. */
56
54
  valueChange = output();
57
55
  context = computed(() => {
@@ -68,7 +66,7 @@ class BrnInputOtp {
68
66
  };
69
67
  });
70
68
  return slots;
71
- }, ...(ngDevMode ? [{ debugName: "context" }] : []));
69
+ }, ...(ngDevMode ? [{ debugName: "context" }] : /* istanbul ignore next */ []));
72
70
  /** Emitted when the input is complete, triggered through input or paste. */
73
71
  completed = output();
74
72
  _onChange;
@@ -125,8 +123,8 @@ class BrnInputOtp {
125
123
  this.completed.emit(newValue);
126
124
  }
127
125
  }
128
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnInputOtp, deps: [], target: i0.ɵɵFactoryTarget.Component });
129
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.17", type: BrnInputOtp, isStandalone: true, selector: "brn-input-otp", inputs: { hostStyles: { classPropertyName: "hostStyles", publicName: "hostStyles", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, inputAutocomplete: { classPropertyName: "inputAutocomplete", publicName: "inputAutocomplete", isSignal: true, isRequired: false, transformFunction: null }, inputStyles: { classPropertyName: "inputStyles", publicName: "inputStyles", isSignal: true, isRequired: false, transformFunction: null }, containerStyles: { classPropertyName: "containerStyles", publicName: "containerStyles", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: true, transformFunction: null }, inputMode: { classPropertyName: "inputMode", publicName: "inputMode", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, transformPaste: { classPropertyName: "transformPaste", publicName: "transformPaste", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", valueChange: "valueChange", completed: "completed" }, host: { attributes: { "data-input-otp-container": "true" }, properties: { "style": "hostStyles()" } }, providers: [BRN_INPUT_OTP_VALUE_ACCESSOR, provideBrnInputOtp(BrnInputOtp)], viewQueries: [{ propertyName: "_inputComponentRef", first: true, predicate: ["otpInput"], descendants: true, isSignal: true }], ngImport: i0, template: `
126
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnInputOtp, deps: [], target: i0.ɵɵFactoryTarget.Component });
127
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.16", type: BrnInputOtp, isStandalone: true, selector: "brn-input-otp", inputs: { hostStyles: { classPropertyName: "hostStyles", publicName: "hostStyles", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, inputAutocomplete: { classPropertyName: "inputAutocomplete", publicName: "inputAutocomplete", isSignal: true, isRequired: false, transformFunction: null }, inputStyles: { classPropertyName: "inputStyles", publicName: "inputStyles", isSignal: true, isRequired: false, transformFunction: null }, containerStyles: { classPropertyName: "containerStyles", publicName: "containerStyles", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: true, transformFunction: null }, inputMode: { classPropertyName: "inputMode", publicName: "inputMode", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, transformPaste: { classPropertyName: "transformPaste", publicName: "transformPaste", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", valueChange: "valueChange", completed: "completed" }, host: { attributes: { "data-input-otp-container": "true" }, properties: { "style": "hostStyles()" } }, providers: [BRN_INPUT_OTP_VALUE_ACCESSOR, provideBrnInputOtp(BrnInputOtp)], viewQueries: [{ propertyName: "_inputComponentRef", first: true, predicate: ["otpInput"], descendants: true, isSignal: true }], ngImport: i0, template: `
130
128
  <ng-content />
131
129
  <div [style]="containerStyles()">
132
130
  <input
@@ -147,7 +145,7 @@ class BrnInputOtp {
147
145
  </div>
148
146
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
149
147
  }
150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnInputOtp, decorators: [{
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnInputOtp, decorators: [{
151
149
  type: Component,
152
150
  args: [{
153
151
  selector: 'brn-input-otp',
@@ -185,10 +183,10 @@ class BrnInputOtpSlot {
185
183
  /** Access the input-otp component */
186
184
  _inputOtp = injectBrnInputOtp();
187
185
  /** The index of the slot to render the char or a fake caret */
188
- index = input.required(...(ngDevMode ? [{ debugName: "index", transform: numberAttribute }] : [{ transform: numberAttribute }]));
189
- _slot = computed(() => this._inputOtp.context()[this.index()], ...(ngDevMode ? [{ debugName: "_slot" }] : []));
190
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnInputOtpSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });
191
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: BrnInputOtpSlot, isStandalone: true, selector: "brn-input-otp-slot", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "attr.data-active": "_slot().isActive" } }, ngImport: i0, template: `
186
+ index = input.required({ ...(ngDevMode ? { debugName: "index" } : /* istanbul ignore next */ {}), transform: numberAttribute });
187
+ _slot = computed(() => this._inputOtp.context()[this.index()], ...(ngDevMode ? [{ debugName: "_slot" }] : /* istanbul ignore next */ []));
188
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnInputOtpSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });
189
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: BrnInputOtpSlot, isStandalone: true, selector: "brn-input-otp-slot", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "attr.data-active": "_slot().isActive" } }, ngImport: i0, template: `
192
190
  {{ _slot().char }}
193
191
 
194
192
  @if (_slot().hasFakeCaret) {
@@ -196,7 +194,7 @@ class BrnInputOtpSlot {
196
194
  }
197
195
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
198
196
  }
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: BrnInputOtpSlot, decorators: [{
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnInputOtpSlot, decorators: [{
200
198
  type: Component,
201
199
  args: [{
202
200
  selector: 'brn-input-otp-slot',