@frame-ui-ng/components 0.4.0-beta.0 → 0.4.1

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 (161) hide show
  1. package/confirm-popover/src/styles/confirm-popover.css +20 -0
  2. package/drag-drop/src/styles/_vars.css +28 -0
  3. package/drag-drop/src/styles/drag-drop.css +132 -0
  4. package/fesm2022/frame-ui-ng-components-accordion.mjs +26 -21
  5. package/fesm2022/frame-ui-ng-components-accordion.mjs.map +1 -1
  6. package/fesm2022/frame-ui-ng-components-alert.mjs +4 -0
  7. package/fesm2022/frame-ui-ng-components-alert.mjs.map +1 -1
  8. package/fesm2022/frame-ui-ng-components-avatar.mjs +7 -0
  9. package/fesm2022/frame-ui-ng-components-avatar.mjs.map +1 -1
  10. package/fesm2022/frame-ui-ng-components-badge.mjs +4 -0
  11. package/fesm2022/frame-ui-ng-components-badge.mjs.map +1 -1
  12. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs +13 -6
  13. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs.map +1 -1
  14. package/fesm2022/frame-ui-ng-components-button-group.mjs +1 -0
  15. package/fesm2022/frame-ui-ng-components-button-group.mjs.map +1 -1
  16. package/fesm2022/frame-ui-ng-components-button.mjs +5 -0
  17. package/fesm2022/frame-ui-ng-components-button.mjs.map +1 -1
  18. package/fesm2022/frame-ui-ng-components-calendar.mjs +4 -0
  19. package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
  20. package/fesm2022/frame-ui-ng-components-card.mjs +15 -15
  21. package/fesm2022/frame-ui-ng-components-card.mjs.map +1 -1
  22. package/fesm2022/frame-ui-ng-components-carousel.mjs +33 -16
  23. package/fesm2022/frame-ui-ng-components-carousel.mjs.map +1 -1
  24. package/fesm2022/frame-ui-ng-components-checkbox.mjs +7 -9
  25. package/fesm2022/frame-ui-ng-components-checkbox.mjs.map +1 -1
  26. package/fesm2022/frame-ui-ng-components-collapsible.mjs +24 -23
  27. package/fesm2022/frame-ui-ng-components-collapsible.mjs.map +1 -1
  28. package/fesm2022/frame-ui-ng-components-combobox.mjs +66 -18
  29. package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
  30. package/fesm2022/frame-ui-ng-components-command.mjs +47 -16
  31. package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
  32. package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +3 -0
  33. package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -1
  34. package/fesm2022/frame-ui-ng-components-confirm-popover.mjs +423 -0
  35. package/fesm2022/frame-ui-ng-components-confirm-popover.mjs.map +1 -0
  36. package/fesm2022/frame-ui-ng-components-context-menu.mjs +71 -45
  37. package/fesm2022/frame-ui-ng-components-context-menu.mjs.map +1 -1
  38. package/fesm2022/frame-ui-ng-components-date-picker.mjs +3 -0
  39. package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
  40. package/fesm2022/frame-ui-ng-components-drag-drop.mjs +293 -0
  41. package/fesm2022/frame-ui-ng-components-drag-drop.mjs.map +1 -0
  42. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +73 -36
  43. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
  44. package/fesm2022/frame-ui-ng-components-empty.mjs +6 -0
  45. package/fesm2022/frame-ui-ng-components-empty.mjs.map +1 -1
  46. package/fesm2022/frame-ui-ng-components-field.mjs +21 -12
  47. package/fesm2022/frame-ui-ng-components-field.mjs.map +1 -1
  48. package/fesm2022/frame-ui-ng-components-forms.mjs +1 -0
  49. package/fesm2022/frame-ui-ng-components-forms.mjs.map +1 -1
  50. package/fesm2022/frame-ui-ng-components-hover-card.mjs +49 -43
  51. package/fesm2022/frame-ui-ng-components-hover-card.mjs.map +1 -1
  52. package/fesm2022/frame-ui-ng-components-input-otp.mjs +5 -0
  53. package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
  54. package/fesm2022/frame-ui-ng-components-input.mjs +13 -0
  55. package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
  56. package/fesm2022/frame-ui-ng-components-item.mjs +10 -0
  57. package/fesm2022/frame-ui-ng-components-item.mjs.map +1 -1
  58. package/fesm2022/frame-ui-ng-components-menubar.mjs +15 -0
  59. package/fesm2022/frame-ui-ng-components-menubar.mjs.map +1 -1
  60. package/fesm2022/frame-ui-ng-components-modal.mjs +128 -114
  61. package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
  62. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs +14 -0
  63. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs.map +1 -1
  64. package/fesm2022/frame-ui-ng-components-pagination.mjs +8 -0
  65. package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
  66. package/fesm2022/frame-ui-ng-components-popover.mjs +63 -51
  67. package/fesm2022/frame-ui-ng-components-popover.mjs.map +1 -1
  68. package/fesm2022/frame-ui-ng-components-progress.mjs +2 -0
  69. package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
  70. package/fesm2022/frame-ui-ng-components-radio-group.mjs +5 -0
  71. package/fesm2022/frame-ui-ng-components-radio-group.mjs.map +1 -1
  72. package/fesm2022/frame-ui-ng-components-resizable.mjs +6 -0
  73. package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
  74. package/fesm2022/frame-ui-ng-components-select.mjs +62 -14
  75. package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
  76. package/fesm2022/frame-ui-ng-components-separator.mjs +1 -0
  77. package/fesm2022/frame-ui-ng-components-separator.mjs.map +1 -1
  78. package/fesm2022/frame-ui-ng-components-sheet.mjs +99 -88
  79. package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
  80. package/fesm2022/frame-ui-ng-components-sidebar.mjs +27 -12
  81. package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
  82. package/fesm2022/frame-ui-ng-components-skeleton.mjs +1 -0
  83. package/fesm2022/frame-ui-ng-components-skeleton.mjs.map +1 -1
  84. package/fesm2022/frame-ui-ng-components-slider.mjs +29 -16
  85. package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
  86. package/fesm2022/frame-ui-ng-components-spinner.mjs +1 -0
  87. package/fesm2022/frame-ui-ng-components-spinner.mjs.map +1 -1
  88. package/fesm2022/frame-ui-ng-components-switch.mjs +6 -0
  89. package/fesm2022/frame-ui-ng-components-switch.mjs.map +1 -1
  90. package/fesm2022/frame-ui-ng-components-table.mjs +76 -50
  91. package/fesm2022/frame-ui-ng-components-table.mjs.map +1 -1
  92. package/fesm2022/frame-ui-ng-components-tabs.mjs +4 -0
  93. package/fesm2022/frame-ui-ng-components-tabs.mjs.map +1 -1
  94. package/fesm2022/frame-ui-ng-components-textarea.mjs +1 -0
  95. package/fesm2022/frame-ui-ng-components-textarea.mjs.map +1 -1
  96. package/fesm2022/frame-ui-ng-components-toast.mjs +2 -0
  97. package/fesm2022/frame-ui-ng-components-toast.mjs.map +1 -1
  98. package/fesm2022/frame-ui-ng-components-toggle.mjs +23 -16
  99. package/fesm2022/frame-ui-ng-components-toggle.mjs.map +1 -1
  100. package/fesm2022/frame-ui-ng-components-tooltip.mjs +30 -25
  101. package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
  102. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +26 -8
  103. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
  104. package/fesm2022/frame-ui-ng-components.mjs +1387 -552
  105. package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
  106. package/package.json +10 -2
  107. package/popover/src/styles/popover.css +106 -101
  108. package/src/styles/components.css +6 -4
  109. package/styles/components.css +6 -4
  110. package/styles.css +6 -4
  111. package/types/frame-ui-ng-components-accordion.d.ts +11 -4
  112. package/types/frame-ui-ng-components-alert.d.ts +4 -0
  113. package/types/frame-ui-ng-components-avatar.d.ts +7 -0
  114. package/types/frame-ui-ng-components-badge.d.ts +4 -0
  115. package/types/frame-ui-ng-components-breadcrumb.d.ts +7 -0
  116. package/types/frame-ui-ng-components-button-group.d.ts +1 -0
  117. package/types/frame-ui-ng-components-button.d.ts +5 -0
  118. package/types/frame-ui-ng-components-calendar.d.ts +1 -0
  119. package/types/frame-ui-ng-components-card.d.ts +8 -3
  120. package/types/frame-ui-ng-components-carousel.d.ts +11 -2
  121. package/types/frame-ui-ng-components-checkbox.d.ts +3 -2
  122. package/types/frame-ui-ng-components-collapsible.d.ts +9 -4
  123. package/types/frame-ui-ng-components-combobox.d.ts +32 -3
  124. package/types/frame-ui-ng-components-command.d.ts +26 -4
  125. package/types/frame-ui-ng-components-confirm-modal.d.ts +2 -0
  126. package/types/frame-ui-ng-components-confirm-popover.d.ts +87 -0
  127. package/types/frame-ui-ng-components-context-menu.d.ts +29 -10
  128. package/types/frame-ui-ng-components-date-picker.d.ts +1 -0
  129. package/types/frame-ui-ng-components-drag-drop.d.ts +103 -0
  130. package/types/frame-ui-ng-components-dropdown-menu.d.ts +32 -9
  131. package/types/frame-ui-ng-components-empty.d.ts +6 -0
  132. package/types/frame-ui-ng-components-field.d.ts +9 -0
  133. package/types/frame-ui-ng-components-forms.d.ts +1 -0
  134. package/types/frame-ui-ng-components-hover-card.d.ts +8 -2
  135. package/types/frame-ui-ng-components-input-otp.d.ts +4 -0
  136. package/types/frame-ui-ng-components-input.d.ts +13 -0
  137. package/types/frame-ui-ng-components-item.d.ts +10 -0
  138. package/types/frame-ui-ng-components-menubar.d.ts +15 -0
  139. package/types/frame-ui-ng-components-modal.d.ts +12 -0
  140. package/types/frame-ui-ng-components-navigation-menu.d.ts +14 -0
  141. package/types/frame-ui-ng-components-pagination.d.ts +8 -0
  142. package/types/frame-ui-ng-components-popover.d.ts +14 -2
  143. package/types/frame-ui-ng-components-progress.d.ts +2 -0
  144. package/types/frame-ui-ng-components-radio-group.d.ts +5 -0
  145. package/types/frame-ui-ng-components-resizable.d.ts +3 -0
  146. package/types/frame-ui-ng-components-select.d.ts +23 -2
  147. package/types/frame-ui-ng-components-separator.d.ts +1 -0
  148. package/types/frame-ui-ng-components-sheet.d.ts +11 -0
  149. package/types/frame-ui-ng-components-sidebar.d.ts +21 -0
  150. package/types/frame-ui-ng-components-skeleton.d.ts +1 -0
  151. package/types/frame-ui-ng-components-slider.d.ts +5 -2
  152. package/types/frame-ui-ng-components-spinner.d.ts +1 -0
  153. package/types/frame-ui-ng-components-switch.d.ts +6 -0
  154. package/types/frame-ui-ng-components-table.d.ts +26 -0
  155. package/types/frame-ui-ng-components-tabs.d.ts +4 -0
  156. package/types/frame-ui-ng-components-textarea.d.ts +1 -0
  157. package/types/frame-ui-ng-components-toast.d.ts +2 -0
  158. package/types/frame-ui-ng-components-toggle.d.ts +8 -2
  159. package/types/frame-ui-ng-components-tooltip.d.ts +6 -2
  160. package/types/frame-ui-ng-components-virtual-scroll.d.ts +11 -2
  161. package/types/frame-ui-ng-components.d.ts +492 -76
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, numberAttribute, inject, ElementRef, signal, input, booleanAttribute, output, computed, effect, Directive, NgModule } from '@angular/core';
2
+ import { InjectionToken, numberAttribute, inject, ElementRef, linkedSignal, signal, input, booleanAttribute, output, computed, Directive, NgModule } from '@angular/core';
3
3
  import { DOCUMENT } from '@angular/common';
4
4
  import { clampNumber } from '@frame-ui-ng/components/utils';
5
5
 
@@ -31,10 +31,11 @@ function coerceOptionalNumber(value) {
31
31
  const coerced = numberAttribute(value, Number.NaN);
32
32
  return Number.isFinite(coerced) ? coerced : null;
33
33
  }
34
+ /** Shared state provider for sidebar. */
34
35
  class FrSidebarProvider {
35
36
  document = inject(DOCUMENT);
36
37
  elementRef = inject(ElementRef);
37
- internalOpen = signal(true, ...(ngDevMode ? [{ debugName: "internalOpen" }] : /* istanbul ignore next */ []));
38
+ internalOpen = linkedSignal(() => this.defaultOpen(), ...(ngDevMode ? [{ debugName: "internalOpen" }] : /* istanbul ignore next */ []));
38
39
  internalOpenMobile = signal(false, ...(ngDevMode ? [{ debugName: "internalOpenMobile" }] : /* istanbul ignore next */ []));
39
40
  resizing = signal(false, ...(ngDevMode ? [{ debugName: "resizing" }] : /* istanbul ignore next */ []));
40
41
  defaultOpen = input(true, { ...(ngDevMode ? { debugName: "defaultOpen" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -48,15 +49,6 @@ class FrSidebarProvider {
48
49
  openMobile = computed(() => this.internalOpenMobile(), ...(ngDevMode ? [{ debugName: "openMobile" }] : /* istanbul ignore next */ []));
49
50
  state = computed(() => (this.open() ? 'expanded' : 'collapsed'), ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
50
51
  constructor() {
51
- this.internalOpen.set(this.defaultOpen());
52
- effect(() => {
53
- if (this.openInput() === null) {
54
- this.internalOpen.set(this.defaultOpen());
55
- }
56
- });
57
- effect(() => {
58
- this.elementRef.nativeElement.style.setProperty('--frame-sidebar-state', this.state());
59
- });
60
52
  const defaultView = this.document.defaultView;
61
53
  if (!defaultView?.matchMedia) {
62
54
  return;
@@ -101,7 +93,7 @@ class FrSidebarProvider {
101
93
  this.toggleSidebar();
102
94
  }
103
95
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarProvider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
104
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSidebarProvider, isStandalone: true, selector: "[frSidebarProvider], frame-sidebar-provider", inputs: { defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, openInput: { classPropertyName: "openInput", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, shortcut: { classPropertyName: "shortcut", publicName: "shortcut", isSignal: true, isRequired: false, transformFunction: null }, keyboardShortcut: { classPropertyName: "keyboardShortcut", publicName: "keyboardShortcut", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openChange: "openChange", openMobileChange: "openMobileChange" }, host: { listeners: { "document:keydown": "handleKeydown($event)" }, properties: { "attr.data-state": "state()", "attr.data-open": "open()", "attr.data-mobile-open": "openMobile()", "attr.data-mobile": "isMobile() ? \"\" : null", "attr.data-resizing": "resizing() ? \"\" : null" }, classAttribute: "frame-sidebar-provider" }, providers: [
96
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrSidebarProvider, isStandalone: true, selector: "[frSidebarProvider], frame-sidebar-provider", inputs: { defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, openInput: { classPropertyName: "openInput", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, shortcut: { classPropertyName: "shortcut", publicName: "shortcut", isSignal: true, isRequired: false, transformFunction: null }, keyboardShortcut: { classPropertyName: "keyboardShortcut", publicName: "keyboardShortcut", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openChange: "openChange", openMobileChange: "openMobileChange" }, host: { listeners: { "document:keydown": "handleKeydown($event)" }, properties: { "attr.data-state": "state()", "attr.data-open": "open()", "attr.data-mobile-open": "openMobile()", "attr.data-mobile": "isMobile() ? \"\" : null", "attr.data-resizing": "resizing() ? \"\" : null", "style.--frame-sidebar-state": "state()" }, classAttribute: "frame-sidebar-provider" }, providers: [
105
97
  {
106
98
  provide: FR_SIDEBAR_PROVIDER,
107
99
  useExisting: FrSidebarProvider,
@@ -126,10 +118,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
126
118
  '[attr.data-mobile-open]': 'openMobile()',
127
119
  '[attr.data-mobile]': 'isMobile() ? "" : null',
128
120
  '[attr.data-resizing]': 'resizing() ? "" : null',
121
+ '[style.--frame-sidebar-state]': 'state()',
129
122
  '(document:keydown)': 'handleKeydown($event)',
130
123
  },
131
124
  }]
132
125
  }], ctorParameters: () => [], propDecorators: { defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], openInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }], openMobileChange: [{ type: i0.Output, args: ["openMobileChange"] }], shortcut: [{ type: i0.Input, args: [{ isSignal: true, alias: "shortcut", required: false }] }], keyboardShortcut: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyboardShortcut", required: false }] }] } });
126
+ /** Sidebar root driven by provider state. */
133
127
  class FrSidebar {
134
128
  elementRef = inject(ElementRef);
135
129
  provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });
@@ -157,6 +151,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
157
151
  },
158
152
  }]
159
153
  }], propDecorators: { side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], minSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "minSize", required: false }] }], maxSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxSize", required: false }] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }] } });
154
+ /** Trigger control for sidebar. */
160
155
  class FrSidebarTrigger {
161
156
  provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });
162
157
  ariaLabel = input('Toggle sidebar', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
@@ -179,6 +174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
179
174
  },
180
175
  }]
181
176
  }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }] } });
177
+ /** Rail slot for sidebar. */
182
178
  class FrSidebarRail {
183
179
  document = inject(DOCUMENT);
184
180
  sidebar = inject(FrSidebar, { optional: true });
@@ -248,6 +244,7 @@ class FrSidebarRail {
248
244
  if (this.frameId !== -1) {
249
245
  return;
250
246
  }
247
+ // Batch rapid pointer moves into one width write per animation frame.
251
248
  this.frameId = requestAnimationFrame(() => {
252
249
  this.provider?.setSidebarWidth(this.pendingWidth);
253
250
  this.frameId = -1;
@@ -275,6 +272,7 @@ class FrSidebarRail {
275
272
  if (!this.sidebar) {
276
273
  return 192;
277
274
  }
275
+ // Use rendered child width as a fallback min-size when consumers do not provide one.
278
276
  const sidebarElement = this.sidebar.elementRef.nativeElement;
279
277
  const sidebarRect = sidebarElement.getBoundingClientRect();
280
278
  let measuredWidth = 0;
@@ -308,6 +306,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
308
306
  },
309
307
  }]
310
308
  }] });
309
+ /** Inset slot for sidebar. */
311
310
  class FrSidebarInset {
312
311
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarInset, deps: [], target: i0.ɵɵFactoryTarget.Directive });
313
312
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarInset, isStandalone: true, selector: "[frSidebarInset], frame-sidebar-inset", host: { classAttribute: "frame-sidebar-inset" }, ngImport: i0 });
@@ -321,6 +320,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
321
320
  },
322
321
  }]
323
322
  }] });
323
+ /** Header slot for sidebar. */
324
324
  class FrSidebarHeader {
325
325
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
326
326
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarHeader, isStandalone: true, selector: "[frSidebarHeader], frame-sidebar-header", host: { classAttribute: "frame-sidebar__header" }, ngImport: i0 });
@@ -334,6 +334,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
334
334
  },
335
335
  }]
336
336
  }] });
337
+ /** Footer slot for sidebar. */
337
338
  class FrSidebarFooter {
338
339
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
339
340
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarFooter, isStandalone: true, selector: "[frSidebarFooter], frame-sidebar-footer", host: { classAttribute: "frame-sidebar__footer" }, ngImport: i0 });
@@ -347,6 +348,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
347
348
  },
348
349
  }]
349
350
  }] });
351
+ /** Content slot for sidebar. */
350
352
  class FrSidebarContent {
351
353
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
352
354
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarContent, isStandalone: true, selector: "[frSidebarContent], frame-sidebar-content", host: { classAttribute: "frame-sidebar__content" }, ngImport: i0 });
@@ -360,6 +362,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
360
362
  },
361
363
  }]
362
364
  }] });
365
+ /** Group slot for sidebar. */
363
366
  class FrSidebarGroup {
364
367
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
365
368
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarGroup, isStandalone: true, selector: "[frSidebarGroup], frame-sidebar-group", host: { classAttribute: "frame-sidebar__group" }, ngImport: i0 });
@@ -373,6 +376,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
373
376
  },
374
377
  }]
375
378
  }] });
379
+ /** Label slot for sidebar group. */
376
380
  class FrSidebarGroupLabel {
377
381
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarGroupLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
378
382
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarGroupLabel, isStandalone: true, selector: "[frSidebarGroupLabel], frame-sidebar-group-label", host: { classAttribute: "frame-sidebar__group-label" }, ngImport: i0 });
@@ -386,6 +390,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
386
390
  },
387
391
  }]
388
392
  }] });
393
+ /** Action slot for sidebar group. */
389
394
  class FrSidebarGroupAction {
390
395
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarGroupAction, deps: [], target: i0.ɵɵFactoryTarget.Directive });
391
396
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarGroupAction, isStandalone: true, selector: "[frSidebarGroupAction], frame-sidebar-group-action", host: { attributes: { "type": "button" }, classAttribute: "frame-sidebar__group-action" }, ngImport: i0 });
@@ -400,6 +405,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
400
405
  },
401
406
  }]
402
407
  }] });
408
+ /** Content slot for sidebar group. */
403
409
  class FrSidebarGroupContent {
404
410
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarGroupContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
405
411
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarGroupContent, isStandalone: true, selector: "[frSidebarGroupContent], frame-sidebar-group-content", host: { classAttribute: "frame-sidebar__group-content" }, ngImport: i0 });
@@ -413,6 +419,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
413
419
  },
414
420
  }]
415
421
  }] });
422
+ /** Menu list inside sidebar navigation. */
416
423
  class FrSidebarMenu {
417
424
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive });
418
425
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarMenu, isStandalone: true, selector: "[frSidebarMenu], frame-sidebar-menu", host: { attributes: { "role": "list" }, classAttribute: "frame-sidebar__menu" }, ngImport: i0 });
@@ -427,6 +434,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
427
434
  },
428
435
  }]
429
436
  }] });
437
+ /** Item slot for sidebar menu. */
430
438
  class FrSidebarMenuItem {
431
439
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
432
440
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarMenuItem, isStandalone: true, selector: "[frSidebarMenuItem], frame-sidebar-menu-item", host: { attributes: { "role": "listitem" }, classAttribute: "frame-sidebar__menu-item" }, ngImport: i0 });
@@ -441,6 +449,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
441
449
  },
442
450
  }]
443
451
  }] });
452
+ /** Interactive button or link inside a sidebar menu item. */
444
453
  class FrSidebarMenuButton {
445
454
  active = input(false, { ...(ngDevMode ? { debugName: "active" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
446
455
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -472,6 +481,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
472
481
  },
473
482
  }]
474
483
  }], propDecorators: { active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }] } });
484
+ /** Action slot for sidebar menu. */
475
485
  class FrSidebarMenuAction {
476
486
  showOnHover = input(false, { ...(ngDevMode ? { debugName: "showOnHover" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
477
487
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarMenuAction, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -488,6 +498,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
488
498
  },
489
499
  }]
490
500
  }], propDecorators: { showOnHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "showOnHover", required: false }] }] } });
501
+ /** Badge slot for sidebar menu. */
491
502
  class FrSidebarMenuBadge {
492
503
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarMenuBadge, deps: [], target: i0.ɵɵFactoryTarget.Directive });
493
504
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarMenuBadge, isStandalone: true, selector: "[frSidebarMenuBadge], frame-sidebar-menu-badge", host: { classAttribute: "frame-sidebar__menu-badge" }, ngImport: i0 });
@@ -501,6 +512,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
501
512
  },
502
513
  }]
503
514
  }] });
515
+ /** Nested menu list inside sidebar navigation. */
504
516
  class FrSidebarMenuSub {
505
517
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarMenuSub, deps: [], target: i0.ɵɵFactoryTarget.Directive });
506
518
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarMenuSub, isStandalone: true, selector: "[frSidebarMenuSub], frame-sidebar-menu-sub", host: { attributes: { "role": "list" }, classAttribute: "frame-sidebar__menu-sub" }, ngImport: i0 });
@@ -515,6 +527,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
515
527
  },
516
528
  }]
517
529
  }] });
530
+ /** Item slot for sidebar menu sub. */
518
531
  class FrSidebarMenuSubItem {
519
532
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSidebarMenuSubItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
520
533
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSidebarMenuSubItem, isStandalone: true, selector: "[frSidebarMenuSubItem], frame-sidebar-menu-sub-item", host: { attributes: { "role": "listitem" }, classAttribute: "frame-sidebar__menu-sub-item" }, ngImport: i0 });
@@ -529,6 +542,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
529
542
  },
530
543
  }]
531
544
  }] });
545
+ /** Interactive button or link inside a sidebar submenu. */
532
546
  class FrSidebarMenuSubButton {
533
547
  active = input(false, { ...(ngDevMode ? { debugName: "active" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
534
548
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -554,6 +568,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
554
568
  },
555
569
  }]
556
570
  }], propDecorators: { active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
571
+ /** Skeleton slot for sidebar menu. */
557
572
  class FrSidebarMenuSkeleton {
558
573
  showIcon = input(false, { ...(ngDevMode ? { debugName: "showIcon" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
559
574
  width = input('72%', ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-sidebar.mjs","sources":["../../../projects/components/sidebar/src/sidebar.ts","../../../projects/components/sidebar/sidebar.module.ts","../../../projects/components/sidebar/frame-ui-ng-components-sidebar.ts"],"sourcesContent":["import {\r\n Directive,\r\n ElementRef,\r\n InjectionToken,\r\n booleanAttribute,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n numberAttribute,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { clampNumber } from '@frame-ui-ng/components/utils';\r\n\r\nexport const FR_SIDEBAR_SIDES = ['left', 'right'] as const;\r\nexport const FR_SIDEBAR_VARIANTS = ['sidebar', 'floating', 'inset'] as const;\r\nexport const FR_SIDEBAR_COLLAPSIBLES = ['offcanvas', 'icon', 'none'] as const;\r\nexport const FR_SIDEBAR_MENU_BUTTON_SIZES = ['default', 'sm', 'lg'] as const;\r\nexport const FR_SIDEBAR_MENU_BUTTON_VARIANTS = ['default', 'outline'] as const;\r\n\r\nexport type FrSidebarSide = (typeof FR_SIDEBAR_SIDES)[number];\r\nexport type FrSidebarVariant = (typeof FR_SIDEBAR_VARIANTS)[number];\r\nexport type FrSidebarCollapsible = (typeof FR_SIDEBAR_COLLAPSIBLES)[number];\r\nexport type FrSidebarState = 'expanded' | 'collapsed';\r\nexport type FrSidebarMenuButtonSize = (typeof FR_SIDEBAR_MENU_BUTTON_SIZES)[number];\r\nexport type FrSidebarMenuButtonVariant = (typeof FR_SIDEBAR_MENU_BUTTON_VARIANTS)[number];\r\n\r\nexport const FR_SIDEBAR_PROVIDER = new InjectionToken<FrSidebarProvider>('FR_SIDEBAR_PROVIDER');\r\n\r\nfunction coerceSide(value: unknown): FrSidebarSide {\r\n return value === 'right' ? 'right' : 'left';\r\n}\r\n\r\nfunction coerceVariant(value: unknown): FrSidebarVariant {\r\n return value === 'floating' || value === 'inset' ? value : 'sidebar';\r\n}\r\n\r\nfunction coerceCollapsible(value: unknown): FrSidebarCollapsible {\r\n return value === 'icon' || value === 'none' ? value : 'offcanvas';\r\n}\r\n\r\nfunction coerceMenuButtonSize(value: unknown): FrSidebarMenuButtonSize {\r\n return value === 'sm' || value === 'lg' ? value : 'default';\r\n}\r\n\r\nfunction coerceMenuButtonVariant(value: unknown): FrSidebarMenuButtonVariant {\r\n return value === 'outline' ? 'outline' : 'default';\r\n}\r\n\r\nfunction coerceOptionalNumber(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') {\r\n return null;\r\n }\r\n\r\n const coerced = numberAttribute(value, Number.NaN);\r\n return Number.isFinite(coerced) ? coerced : null;\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarProvider], frame-sidebar-provider',\r\n exportAs: 'frSidebarProvider',\r\n providers: [\r\n {\r\n provide: FR_SIDEBAR_PROVIDER,\r\n useExisting: FrSidebarProvider,\r\n },\r\n ],\r\n host: {\r\n class: 'frame-sidebar-provider',\r\n '[attr.data-state]': 'state()',\r\n '[attr.data-open]': 'open()',\r\n '[attr.data-mobile-open]': 'openMobile()',\r\n '[attr.data-mobile]': 'isMobile() ? \"\" : null',\r\n '[attr.data-resizing]': 'resizing() ? \"\" : null',\r\n '(document:keydown)': 'handleKeydown($event)',\r\n },\r\n})\r\nexport class FrSidebarProvider {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly internalOpen = signal(true);\r\n private readonly internalOpenMobile = signal(false);\r\n protected readonly resizing = signal(false);\r\n\r\n readonly defaultOpen = input(true, { transform: booleanAttribute });\r\n readonly openInput = input<boolean | null>(null, { alias: 'open' });\r\n readonly openChange = output<boolean>();\r\n readonly openMobileChange = output<boolean>();\r\n readonly shortcut = input('b');\r\n readonly keyboardShortcut = input(true, { transform: booleanAttribute });\r\n readonly isMobile = signal(false);\r\n\r\n readonly open = computed(() => this.openInput() ?? this.internalOpen());\r\n readonly openMobile = computed(() => this.internalOpenMobile());\r\n readonly state = computed<FrSidebarState>(() => (this.open() ? 'expanded' : 'collapsed'));\r\n\r\n constructor() {\r\n this.internalOpen.set(this.defaultOpen());\r\n\r\n effect(() => {\r\n if (this.openInput() === null) {\r\n this.internalOpen.set(this.defaultOpen());\r\n }\r\n });\r\n\r\n effect(() => {\r\n this.elementRef.nativeElement.style.setProperty('--frame-sidebar-state', this.state());\r\n });\r\n\r\n const defaultView = this.document.defaultView;\r\n if (!defaultView?.matchMedia) {\r\n return;\r\n }\r\n\r\n const mediaQuery = defaultView.matchMedia('(max-width: 768px)');\r\n const updateMobile = () => this.isMobile.set(mediaQuery.matches);\r\n updateMobile();\r\n mediaQuery.addEventListener?.('change', updateMobile);\r\n }\r\n\r\n setOpen(open: boolean): void {\r\n if (this.openInput() === null) {\r\n this.internalOpen.set(open);\r\n }\r\n\r\n this.openChange.emit(open);\r\n }\r\n\r\n setOpenMobile(open: boolean): void {\r\n this.internalOpenMobile.set(open);\r\n this.openMobileChange.emit(open);\r\n }\r\n\r\n setSidebarWidth(width: number): void {\r\n this.elementRef.nativeElement.style.setProperty('--frame-sidebar-width', `${width}px`);\r\n }\r\n\r\n setResizing(resizing: boolean): void {\r\n this.resizing.set(resizing);\r\n }\r\n\r\n toggleSidebar(): void {\r\n if (this.isMobile()) {\r\n this.setOpenMobile(!this.openMobile());\r\n return;\r\n }\r\n\r\n this.setOpen(!this.open());\r\n }\r\n\r\n handleKeydown(event: KeyboardEvent): void {\r\n if (!this.keyboardShortcut()) {\r\n return;\r\n }\r\n\r\n const key = this.shortcut().toLowerCase();\r\n if (event.key.toLowerCase() !== key || (!event.metaKey && !event.ctrlKey)) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n this.toggleSidebar();\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebar], frame-sidebar',\r\n host: {\r\n class: 'frame-sidebar',\r\n '[attr.data-side]': 'side()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.data-collapsible]': 'collapsible()',\r\n '[attr.data-resizable]': 'resizable() ? \"\" : null',\r\n '[attr.data-state]': 'provider?.state() ?? \"expanded\"',\r\n '[attr.data-mobile-open]': 'provider?.openMobile() ?? false',\r\n },\r\n})\r\nexport class FrSidebar {\r\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\r\n readonly side = input<FrSidebarSide, unknown>('left', { transform: coerceSide });\r\n readonly variant = input<FrSidebarVariant, unknown>('sidebar', { transform: coerceVariant });\r\n readonly collapsible = input<FrSidebarCollapsible, unknown>('offcanvas', {\r\n transform: coerceCollapsible,\r\n });\r\n readonly minSize = input<number | null, unknown>(null, { transform: coerceOptionalNumber });\r\n readonly maxSize = input<number | null, unknown>(384, { transform: coerceOptionalNumber });\r\n readonly resizable = input(true, { transform: booleanAttribute });\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarTrigger]',\r\n host: {\r\n class: 'frame-sidebar__trigger',\r\n type: 'button',\r\n '[attr.aria-expanded]': 'provider?.open() ?? true',\r\n '[attr.aria-label]': 'ariaLabel()',\r\n '(click)': 'toggle()',\r\n },\r\n})\r\nexport class FrSidebarTrigger {\r\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\r\n readonly ariaLabel = input('Toggle sidebar', { alias: 'aria-label' });\r\n\r\n toggle(): void {\r\n this.provider?.toggleSidebar();\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarRail], frame-sidebar-rail',\r\n host: {\r\n class: 'frame-sidebar__rail',\r\n role: 'separator',\r\n tabindex: '0',\r\n 'aria-label': 'Resize sidebar',\r\n 'aria-orientation': 'vertical',\r\n '(click)': 'toggle()',\r\n '(pointerdown)': 'startResize($event)',\r\n '(keydown.enter)': 'toggle()',\r\n '(keydown.space)': 'toggle(); $event.preventDefault()',\r\n },\r\n})\r\nexport class FrSidebarRail {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly sidebar = inject(FrSidebar, { optional: true });\r\n private startX = 0;\r\n private startWidth = 0;\r\n private dragging = false;\r\n private suppressClick = false;\r\n private frameId = -1;\r\n private pendingWidth = 0;\r\n private resizeMinSize = 192;\r\n private resizeMaxSize = 384;\r\n\r\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\r\n\r\n toggle(): void {\r\n if (this.suppressClick) {\r\n return;\r\n }\r\n\r\n if (this.sidebar?.collapsible() === 'icon') {\r\n return;\r\n }\r\n\r\n this.provider?.toggleSidebar();\r\n }\r\n\r\n startResize(event: PointerEvent): void {\r\n if (!this.sidebar || !this.provider || this.provider.isMobile() || !this.sidebar.resizable()) {\r\n return;\r\n }\r\n\r\n this.startX = event.clientX;\r\n this.startWidth = this.sidebar.elementRef.nativeElement.getBoundingClientRect().width;\r\n this.dragging = false;\r\n this.pendingWidth = this.startWidth;\r\n this.captureResizeBounds();\r\n this.provider.setResizing(true);\r\n event.preventDefault();\r\n\r\n const move = (moveEvent: PointerEvent) => this.resize(moveEvent);\r\n const up = () => {\r\n this.document.removeEventListener('pointermove', move);\r\n this.document.removeEventListener('pointerup', up);\r\n if (this.dragging) {\r\n this.flushResize();\r\n }\r\n this.provider?.setResizing(false);\r\n this.suppressClick = this.dragging;\r\n this.dragging = false;\r\n this.pendingWidth = 0;\r\n this.resizeMinSize = 192;\r\n this.resizeMaxSize = 384;\r\n setTimeout(() => {\r\n this.suppressClick = false;\r\n });\r\n };\r\n\r\n this.document.addEventListener('pointermove', move);\r\n this.document.addEventListener('pointerup', up, { once: true });\r\n }\r\n\r\n private resize(event: PointerEvent): void {\r\n if (!this.sidebar || !this.provider) {\r\n return;\r\n }\r\n\r\n const delta = event.clientX - this.startX;\r\n const direction = this.sidebar.side() === 'right' ? -1 : 1;\r\n const nextWidth = clampNumber(this.startWidth + delta * direction, this.resizeMinSize, this.resizeMaxSize);\r\n\r\n if (Math.abs(delta) > 3) {\r\n this.dragging = true;\r\n\r\n if (this.sidebar.collapsible() === 'icon' && !this.provider.open()) {\r\n this.provider.setOpen(true);\r\n }\r\n }\r\n\r\n this.pendingWidth = nextWidth;\r\n\r\n if (this.frameId !== -1) {\r\n return;\r\n }\r\n\r\n this.frameId = requestAnimationFrame(() => {\r\n this.provider?.setSidebarWidth(this.pendingWidth);\r\n this.frameId = -1;\r\n });\r\n }\r\n\r\n private flushResize(): void {\r\n if (this.frameId !== -1) {\r\n cancelAnimationFrame(this.frameId);\r\n this.frameId = -1;\r\n }\r\n\r\n if (this.pendingWidth) {\r\n this.provider?.setSidebarWidth(this.pendingWidth);\r\n }\r\n }\r\n\r\n private captureResizeBounds(): void {\r\n if (!this.sidebar) {\r\n return;\r\n }\r\n\r\n const minSize = this.sidebar.minSize() ?? this.measureContentMinSize();\r\n const maxSize = this.sidebar.maxSize() ?? Number.POSITIVE_INFINITY;\r\n\r\n this.resizeMinSize = minSize;\r\n this.resizeMaxSize = Math.max(minSize, maxSize);\r\n }\r\n\r\n private measureContentMinSize(): number {\r\n if (!this.sidebar) {\r\n return 192;\r\n }\r\n\r\n const sidebarElement = this.sidebar.elementRef.nativeElement;\r\n const sidebarRect = sidebarElement.getBoundingClientRect();\r\n let measuredWidth = 0;\r\n\r\n for (const element of Array.from(sidebarElement.querySelectorAll<HTMLElement>('*'))) {\r\n if (element.hasAttribute('frSidebarRail') || element.tagName.toLowerCase() === 'frame-sidebar-rail') {\r\n continue;\r\n }\r\n\r\n const rect = element.getBoundingClientRect();\r\n const inlineStart = Math.max(0, rect.left - sidebarRect.left);\r\n measuredWidth = Math.max(measuredWidth, inlineStart + element.scrollWidth);\r\n }\r\n\r\n return Math.max(Math.ceil(measuredWidth), 192);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarInset], frame-sidebar-inset',\r\n host: {\r\n class: 'frame-sidebar-inset',\r\n },\r\n})\r\nexport class FrSidebarInset {}\r\n\r\n@Directive({\r\n selector: '[frSidebarHeader], frame-sidebar-header',\r\n host: {\r\n class: 'frame-sidebar__header',\r\n },\r\n})\r\nexport class FrSidebarHeader {}\r\n\r\n@Directive({\r\n selector: '[frSidebarFooter], frame-sidebar-footer',\r\n host: {\r\n class: 'frame-sidebar__footer',\r\n },\r\n})\r\nexport class FrSidebarFooter {}\r\n\r\n@Directive({\r\n selector: '[frSidebarContent], frame-sidebar-content',\r\n host: {\r\n class: 'frame-sidebar__content',\r\n },\r\n})\r\nexport class FrSidebarContent {}\r\n\r\n@Directive({\r\n selector: '[frSidebarGroup], frame-sidebar-group',\r\n host: {\r\n class: 'frame-sidebar__group',\r\n },\r\n})\r\nexport class FrSidebarGroup {}\r\n\r\n@Directive({\r\n selector: '[frSidebarGroupLabel], frame-sidebar-group-label',\r\n host: {\r\n class: 'frame-sidebar__group-label',\r\n },\r\n})\r\nexport class FrSidebarGroupLabel {}\r\n\r\n@Directive({\r\n selector: '[frSidebarGroupAction], frame-sidebar-group-action',\r\n host: {\r\n class: 'frame-sidebar__group-action',\r\n type: 'button',\r\n },\r\n})\r\nexport class FrSidebarGroupAction {}\r\n\r\n@Directive({\r\n selector: '[frSidebarGroupContent], frame-sidebar-group-content',\r\n host: {\r\n class: 'frame-sidebar__group-content',\r\n },\r\n})\r\nexport class FrSidebarGroupContent {}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenu], frame-sidebar-menu',\r\n host: {\r\n class: 'frame-sidebar__menu',\r\n role: 'list',\r\n },\r\n})\r\nexport class FrSidebarMenu {}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuItem], frame-sidebar-menu-item',\r\n host: {\r\n class: 'frame-sidebar__menu-item',\r\n role: 'listitem',\r\n },\r\n})\r\nexport class FrSidebarMenuItem {}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuButton], a[frSidebarMenuButton], button[frSidebarMenuButton]',\r\n host: {\r\n class: 'frame-sidebar__menu-button',\r\n '[attr.data-active]': 'active() ? \"\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.tabindex]': 'disabled() ? -1 : null',\r\n '(click)': 'handleClick($event)',\r\n },\r\n})\r\nexport class FrSidebarMenuButton {\r\n readonly active = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly size = input<FrSidebarMenuButtonSize, unknown>('default', {\r\n transform: coerceMenuButtonSize,\r\n });\r\n readonly variant = input<FrSidebarMenuButtonVariant, unknown>('default', {\r\n transform: coerceMenuButtonVariant,\r\n });\r\n readonly tooltip = input<string | null>(null);\r\n\r\n handleClick(event: Event): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuAction], frame-sidebar-menu-action',\r\n host: {\r\n class: 'frame-sidebar__menu-action',\r\n type: 'button',\r\n '[attr.data-show-on-hover]': 'showOnHover() ? \"\" : null',\r\n },\r\n})\r\nexport class FrSidebarMenuAction {\r\n readonly showOnHover = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuBadge], frame-sidebar-menu-badge',\r\n host: {\r\n class: 'frame-sidebar__menu-badge',\r\n },\r\n})\r\nexport class FrSidebarMenuBadge {}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuSub], frame-sidebar-menu-sub',\r\n host: {\r\n class: 'frame-sidebar__menu-sub',\r\n role: 'list',\r\n },\r\n})\r\nexport class FrSidebarMenuSub {}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuSubItem], frame-sidebar-menu-sub-item',\r\n host: {\r\n class: 'frame-sidebar__menu-sub-item',\r\n role: 'listitem',\r\n },\r\n})\r\nexport class FrSidebarMenuSubItem {}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuSubButton], a[frSidebarMenuSubButton], button[frSidebarMenuSubButton]',\r\n host: {\r\n class: 'frame-sidebar__menu-sub-button',\r\n '[attr.data-active]': 'active() ? \"\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '(click)': 'handleClick($event)',\r\n },\r\n})\r\nexport class FrSidebarMenuSubButton {\r\n readonly active = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n handleClick(event: Event): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frSidebarMenuSkeleton], frame-sidebar-menu-skeleton',\r\n host: {\r\n class: 'frame-sidebar__menu-skeleton',\r\n '[attr.data-show-icon]': 'showIcon() ? \"\" : null',\r\n '[style.--frame-sidebar-skeleton-width]': 'width()',\r\n },\r\n})\r\nexport class FrSidebarMenuSkeleton {\r\n readonly showIcon = input(false, { transform: booleanAttribute });\r\n readonly width = input('72%');\r\n}\r\n","import { NgModule } from '@angular/core';\nimport {\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n} from './src/sidebar';\n\n@NgModule({\n imports: [\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n ],\n exports: [\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n ],\n})\nexport class FrSidebarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-ui-ng-components-sidebar.mjs","sources":["../../../projects/components/sidebar/src/sidebar.ts","../../../projects/components/sidebar/sidebar.module.ts","../../../projects/components/sidebar/frame-ui-ng-components-sidebar.ts"],"sourcesContent":["import {\r\n Directive,\r\n ElementRef,\r\n InjectionToken,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n linkedSignal,\r\n numberAttribute,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { clampNumber } from '@frame-ui-ng/components/utils';\r\n\r\nexport const FR_SIDEBAR_SIDES = ['left', 'right'] as const;\r\nexport const FR_SIDEBAR_VARIANTS = ['sidebar', 'floating', 'inset'] as const;\r\nexport const FR_SIDEBAR_COLLAPSIBLES = ['offcanvas', 'icon', 'none'] as const;\r\nexport const FR_SIDEBAR_MENU_BUTTON_SIZES = ['default', 'sm', 'lg'] as const;\r\nexport const FR_SIDEBAR_MENU_BUTTON_VARIANTS = ['default', 'outline'] as const;\r\n\r\nexport type FrSidebarSide = (typeof FR_SIDEBAR_SIDES)[number];\r\nexport type FrSidebarVariant = (typeof FR_SIDEBAR_VARIANTS)[number];\r\nexport type FrSidebarCollapsible = (typeof FR_SIDEBAR_COLLAPSIBLES)[number];\r\nexport type FrSidebarState = 'expanded' | 'collapsed';\r\nexport type FrSidebarMenuButtonSize = (typeof FR_SIDEBAR_MENU_BUTTON_SIZES)[number];\r\nexport type FrSidebarMenuButtonVariant = (typeof FR_SIDEBAR_MENU_BUTTON_VARIANTS)[number];\r\n\r\nexport const FR_SIDEBAR_PROVIDER = new InjectionToken<FrSidebarProvider>('FR_SIDEBAR_PROVIDER');\r\n\r\nfunction coerceSide(value: unknown): FrSidebarSide {\r\n return value === 'right' ? 'right' : 'left';\r\n}\r\n\r\nfunction coerceVariant(value: unknown): FrSidebarVariant {\r\n return value === 'floating' || value === 'inset' ? value : 'sidebar';\r\n}\r\n\r\nfunction coerceCollapsible(value: unknown): FrSidebarCollapsible {\r\n return value === 'icon' || value === 'none' ? value : 'offcanvas';\r\n}\r\n\r\nfunction coerceMenuButtonSize(value: unknown): FrSidebarMenuButtonSize {\r\n return value === 'sm' || value === 'lg' ? value : 'default';\r\n}\r\n\r\nfunction coerceMenuButtonVariant(value: unknown): FrSidebarMenuButtonVariant {\r\n return value === 'outline' ? 'outline' : 'default';\r\n}\r\n\r\nfunction coerceOptionalNumber(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') {\r\n return null;\r\n }\r\n\r\n const coerced = numberAttribute(value, Number.NaN);\r\n return Number.isFinite(coerced) ? coerced : null;\r\n}\r\n\r\n/** Shared state provider for sidebar. */\r\n@Directive({\r\n selector: '[frSidebarProvider], frame-sidebar-provider',\r\n exportAs: 'frSidebarProvider',\r\n providers: [\r\n {\r\n provide: FR_SIDEBAR_PROVIDER,\r\n useExisting: FrSidebarProvider,\r\n },\r\n ],\r\n host: {\r\n class: 'frame-sidebar-provider',\r\n '[attr.data-state]': 'state()',\r\n '[attr.data-open]': 'open()',\r\n '[attr.data-mobile-open]': 'openMobile()',\r\n '[attr.data-mobile]': 'isMobile() ? \"\" : null',\r\n '[attr.data-resizing]': 'resizing() ? \"\" : null',\r\n '[style.--frame-sidebar-state]': 'state()',\r\n '(document:keydown)': 'handleKeydown($event)',\r\n },\r\n})\r\nexport class FrSidebarProvider {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly internalOpen = linkedSignal(() => this.defaultOpen());\r\n private readonly internalOpenMobile = signal(false);\r\n protected readonly resizing = signal(false);\r\n\r\n readonly defaultOpen = input(true, { transform: booleanAttribute });\r\n readonly openInput = input<boolean | null>(null, { alias: 'open' });\r\n readonly openChange = output<boolean>();\r\n readonly openMobileChange = output<boolean>();\r\n readonly shortcut = input('b');\r\n readonly keyboardShortcut = input(true, { transform: booleanAttribute });\r\n readonly isMobile = signal(false);\r\n\r\n readonly open = computed(() => this.openInput() ?? this.internalOpen());\r\n readonly openMobile = computed(() => this.internalOpenMobile());\r\n readonly state = computed<FrSidebarState>(() => (this.open() ? 'expanded' : 'collapsed'));\r\n\r\n constructor() {\r\n const defaultView = this.document.defaultView;\r\n if (!defaultView?.matchMedia) {\r\n return;\r\n }\r\n\r\n const mediaQuery = defaultView.matchMedia('(max-width: 768px)');\r\n const updateMobile = () => this.isMobile.set(mediaQuery.matches);\r\n updateMobile();\r\n mediaQuery.addEventListener?.('change', updateMobile);\r\n }\r\n\r\n setOpen(open: boolean): void {\r\n if (this.openInput() === null) {\r\n this.internalOpen.set(open);\r\n }\r\n\r\n this.openChange.emit(open);\r\n }\r\n\r\n setOpenMobile(open: boolean): void {\r\n this.internalOpenMobile.set(open);\r\n this.openMobileChange.emit(open);\r\n }\r\n\r\n setSidebarWidth(width: number): void {\r\n this.elementRef.nativeElement.style.setProperty('--frame-sidebar-width', `${width}px`);\r\n }\r\n\r\n setResizing(resizing: boolean): void {\r\n this.resizing.set(resizing);\r\n }\r\n\r\n toggleSidebar(): void {\r\n if (this.isMobile()) {\r\n this.setOpenMobile(!this.openMobile());\r\n return;\r\n }\r\n\r\n this.setOpen(!this.open());\r\n }\r\n\r\n handleKeydown(event: KeyboardEvent): void {\r\n if (!this.keyboardShortcut()) {\r\n return;\r\n }\r\n\r\n const key = this.shortcut().toLowerCase();\r\n if (event.key.toLowerCase() !== key || (!event.metaKey && !event.ctrlKey)) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n this.toggleSidebar();\r\n }\r\n}\r\n\r\n/** Sidebar root driven by provider state. */\r\n@Directive({\r\n selector: '[frSidebar], frame-sidebar',\r\n host: {\r\n class: 'frame-sidebar',\r\n '[attr.data-side]': 'side()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.data-collapsible]': 'collapsible()',\r\n '[attr.data-resizable]': 'resizable() ? \"\" : null',\r\n '[attr.data-state]': 'provider?.state() ?? \"expanded\"',\r\n '[attr.data-mobile-open]': 'provider?.openMobile() ?? false',\r\n },\r\n})\r\nexport class FrSidebar {\r\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\r\n readonly side = input<FrSidebarSide, unknown>('left', { transform: coerceSide });\r\n readonly variant = input<FrSidebarVariant, unknown>('sidebar', { transform: coerceVariant });\r\n readonly collapsible = input<FrSidebarCollapsible, unknown>('offcanvas', {\r\n transform: coerceCollapsible,\r\n });\r\n readonly minSize = input<number | null, unknown>(null, { transform: coerceOptionalNumber });\r\n readonly maxSize = input<number | null, unknown>(384, { transform: coerceOptionalNumber });\r\n readonly resizable = input(true, { transform: booleanAttribute });\r\n}\r\n\r\n/** Trigger control for sidebar. */\r\n@Directive({\r\n selector: '[frSidebarTrigger]',\r\n host: {\r\n class: 'frame-sidebar__trigger',\r\n type: 'button',\r\n '[attr.aria-expanded]': 'provider?.open() ?? true',\r\n '[attr.aria-label]': 'ariaLabel()',\r\n '(click)': 'toggle()',\r\n },\r\n})\r\nexport class FrSidebarTrigger {\r\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\r\n readonly ariaLabel = input('Toggle sidebar', { alias: 'aria-label' });\r\n\r\n toggle(): void {\r\n this.provider?.toggleSidebar();\r\n }\r\n}\r\n\r\n/** Rail slot for sidebar. */\r\n@Directive({\r\n selector: '[frSidebarRail], frame-sidebar-rail',\r\n host: {\r\n class: 'frame-sidebar__rail',\r\n role: 'separator',\r\n tabindex: '0',\r\n 'aria-label': 'Resize sidebar',\r\n 'aria-orientation': 'vertical',\r\n '(click)': 'toggle()',\r\n '(pointerdown)': 'startResize($event)',\r\n '(keydown.enter)': 'toggle()',\r\n '(keydown.space)': 'toggle(); $event.preventDefault()',\r\n },\r\n})\r\nexport class FrSidebarRail {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly sidebar = inject(FrSidebar, { optional: true });\r\n private startX = 0;\r\n private startWidth = 0;\r\n private dragging = false;\r\n private suppressClick = false;\r\n private frameId = -1;\r\n private pendingWidth = 0;\r\n private resizeMinSize = 192;\r\n private resizeMaxSize = 384;\r\n\r\n readonly provider = inject(FR_SIDEBAR_PROVIDER, { optional: true });\r\n\r\n toggle(): void {\r\n if (this.suppressClick) {\r\n return;\r\n }\r\n\r\n if (this.sidebar?.collapsible() === 'icon') {\r\n return;\r\n }\r\n\r\n this.provider?.toggleSidebar();\r\n }\r\n\r\n startResize(event: PointerEvent): void {\r\n if (!this.sidebar || !this.provider || this.provider.isMobile() || !this.sidebar.resizable()) {\r\n return;\r\n }\r\n\r\n this.startX = event.clientX;\r\n this.startWidth = this.sidebar.elementRef.nativeElement.getBoundingClientRect().width;\r\n this.dragging = false;\r\n this.pendingWidth = this.startWidth;\r\n this.captureResizeBounds();\r\n this.provider.setResizing(true);\r\n event.preventDefault();\r\n\r\n const move = (moveEvent: PointerEvent) => this.resize(moveEvent);\r\n const up = () => {\r\n this.document.removeEventListener('pointermove', move);\r\n this.document.removeEventListener('pointerup', up);\r\n if (this.dragging) {\r\n this.flushResize();\r\n }\r\n this.provider?.setResizing(false);\r\n this.suppressClick = this.dragging;\r\n this.dragging = false;\r\n this.pendingWidth = 0;\r\n this.resizeMinSize = 192;\r\n this.resizeMaxSize = 384;\r\n setTimeout(() => {\r\n this.suppressClick = false;\r\n });\r\n };\r\n\r\n this.document.addEventListener('pointermove', move);\r\n this.document.addEventListener('pointerup', up, { once: true });\r\n }\r\n\r\n private resize(event: PointerEvent): void {\r\n if (!this.sidebar || !this.provider) {\r\n return;\r\n }\r\n\r\n const delta = event.clientX - this.startX;\r\n const direction = this.sidebar.side() === 'right' ? -1 : 1;\r\n const nextWidth = clampNumber(this.startWidth + delta * direction, this.resizeMinSize, this.resizeMaxSize);\r\n\r\n if (Math.abs(delta) > 3) {\r\n this.dragging = true;\r\n\r\n if (this.sidebar.collapsible() === 'icon' && !this.provider.open()) {\r\n this.provider.setOpen(true);\r\n }\r\n }\r\n\r\n this.pendingWidth = nextWidth;\r\n\r\n if (this.frameId !== -1) {\r\n return;\r\n }\r\n\r\n // Batch rapid pointer moves into one width write per animation frame.\r\n this.frameId = requestAnimationFrame(() => {\r\n this.provider?.setSidebarWidth(this.pendingWidth);\r\n this.frameId = -1;\r\n });\r\n }\r\n\r\n private flushResize(): void {\r\n if (this.frameId !== -1) {\r\n cancelAnimationFrame(this.frameId);\r\n this.frameId = -1;\r\n }\r\n\r\n if (this.pendingWidth) {\r\n this.provider?.setSidebarWidth(this.pendingWidth);\r\n }\r\n }\r\n\r\n private captureResizeBounds(): void {\r\n if (!this.sidebar) {\r\n return;\r\n }\r\n\r\n const minSize = this.sidebar.minSize() ?? this.measureContentMinSize();\r\n const maxSize = this.sidebar.maxSize() ?? Number.POSITIVE_INFINITY;\r\n\r\n this.resizeMinSize = minSize;\r\n this.resizeMaxSize = Math.max(minSize, maxSize);\r\n }\r\n\r\n private measureContentMinSize(): number {\r\n if (!this.sidebar) {\r\n return 192;\r\n }\r\n\r\n // Use rendered child width as a fallback min-size when consumers do not provide one.\r\n const sidebarElement = this.sidebar.elementRef.nativeElement;\r\n const sidebarRect = sidebarElement.getBoundingClientRect();\r\n let measuredWidth = 0;\r\n\r\n for (const element of Array.from(sidebarElement.querySelectorAll<HTMLElement>('*'))) {\r\n if (element.hasAttribute('frSidebarRail') || element.tagName.toLowerCase() === 'frame-sidebar-rail') {\r\n continue;\r\n }\r\n\r\n const rect = element.getBoundingClientRect();\r\n const inlineStart = Math.max(0, rect.left - sidebarRect.left);\r\n measuredWidth = Math.max(measuredWidth, inlineStart + element.scrollWidth);\r\n }\r\n\r\n return Math.max(Math.ceil(measuredWidth), 192);\r\n }\r\n}\r\n\r\n/** Inset slot for sidebar. */\r\n@Directive({\r\n selector: '[frSidebarInset], frame-sidebar-inset',\r\n host: {\r\n class: 'frame-sidebar-inset',\r\n },\r\n})\r\nexport class FrSidebarInset {}\r\n\r\n/** Header slot for sidebar. */\r\n@Directive({\r\n selector: '[frSidebarHeader], frame-sidebar-header',\r\n host: {\r\n class: 'frame-sidebar__header',\r\n },\r\n})\r\nexport class FrSidebarHeader {}\r\n\r\n/** Footer slot for sidebar. */\r\n@Directive({\r\n selector: '[frSidebarFooter], frame-sidebar-footer',\r\n host: {\r\n class: 'frame-sidebar__footer',\r\n },\r\n})\r\nexport class FrSidebarFooter {}\r\n\r\n/** Content slot for sidebar. */\r\n@Directive({\r\n selector: '[frSidebarContent], frame-sidebar-content',\r\n host: {\r\n class: 'frame-sidebar__content',\r\n },\r\n})\r\nexport class FrSidebarContent {}\r\n\r\n/** Group slot for sidebar. */\r\n@Directive({\r\n selector: '[frSidebarGroup], frame-sidebar-group',\r\n host: {\r\n class: 'frame-sidebar__group',\r\n },\r\n})\r\nexport class FrSidebarGroup {}\r\n\r\n/** Label slot for sidebar group. */\r\n@Directive({\r\n selector: '[frSidebarGroupLabel], frame-sidebar-group-label',\r\n host: {\r\n class: 'frame-sidebar__group-label',\r\n },\r\n})\r\nexport class FrSidebarGroupLabel {}\r\n\r\n/** Action slot for sidebar group. */\r\n@Directive({\r\n selector: '[frSidebarGroupAction], frame-sidebar-group-action',\r\n host: {\r\n class: 'frame-sidebar__group-action',\r\n type: 'button',\r\n },\r\n})\r\nexport class FrSidebarGroupAction {}\r\n\r\n/** Content slot for sidebar group. */\r\n@Directive({\r\n selector: '[frSidebarGroupContent], frame-sidebar-group-content',\r\n host: {\r\n class: 'frame-sidebar__group-content',\r\n },\r\n})\r\nexport class FrSidebarGroupContent {}\r\n\r\n/** Menu list inside sidebar navigation. */\r\n@Directive({\r\n selector: '[frSidebarMenu], frame-sidebar-menu',\r\n host: {\r\n class: 'frame-sidebar__menu',\r\n role: 'list',\r\n },\r\n})\r\nexport class FrSidebarMenu {}\r\n\r\n/** Item slot for sidebar menu. */\r\n@Directive({\r\n selector: '[frSidebarMenuItem], frame-sidebar-menu-item',\r\n host: {\r\n class: 'frame-sidebar__menu-item',\r\n role: 'listitem',\r\n },\r\n})\r\nexport class FrSidebarMenuItem {}\r\n\r\n/** Interactive button or link inside a sidebar menu item. */\r\n@Directive({\r\n selector: '[frSidebarMenuButton], a[frSidebarMenuButton], button[frSidebarMenuButton]',\r\n host: {\r\n class: 'frame-sidebar__menu-button',\r\n '[attr.data-active]': 'active() ? \"\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.tabindex]': 'disabled() ? -1 : null',\r\n '(click)': 'handleClick($event)',\r\n },\r\n})\r\nexport class FrSidebarMenuButton {\r\n readonly active = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly size = input<FrSidebarMenuButtonSize, unknown>('default', {\r\n transform: coerceMenuButtonSize,\r\n });\r\n readonly variant = input<FrSidebarMenuButtonVariant, unknown>('default', {\r\n transform: coerceMenuButtonVariant,\r\n });\r\n readonly tooltip = input<string | null>(null);\r\n\r\n handleClick(event: Event): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n\r\n/** Action slot for sidebar menu. */\r\n@Directive({\r\n selector: '[frSidebarMenuAction], frame-sidebar-menu-action',\r\n host: {\r\n class: 'frame-sidebar__menu-action',\r\n type: 'button',\r\n '[attr.data-show-on-hover]': 'showOnHover() ? \"\" : null',\r\n },\r\n})\r\nexport class FrSidebarMenuAction {\r\n readonly showOnHover = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n/** Badge slot for sidebar menu. */\r\n@Directive({\r\n selector: '[frSidebarMenuBadge], frame-sidebar-menu-badge',\r\n host: {\r\n class: 'frame-sidebar__menu-badge',\r\n },\r\n})\r\nexport class FrSidebarMenuBadge {}\r\n\r\n/** Nested menu list inside sidebar navigation. */\r\n@Directive({\r\n selector: '[frSidebarMenuSub], frame-sidebar-menu-sub',\r\n host: {\r\n class: 'frame-sidebar__menu-sub',\r\n role: 'list',\r\n },\r\n})\r\nexport class FrSidebarMenuSub {}\r\n\r\n/** Item slot for sidebar menu sub. */\r\n@Directive({\r\n selector: '[frSidebarMenuSubItem], frame-sidebar-menu-sub-item',\r\n host: {\r\n class: 'frame-sidebar__menu-sub-item',\r\n role: 'listitem',\r\n },\r\n})\r\nexport class FrSidebarMenuSubItem {}\r\n\r\n/** Interactive button or link inside a sidebar submenu. */\r\n@Directive({\r\n selector: '[frSidebarMenuSubButton], a[frSidebarMenuSubButton], button[frSidebarMenuSubButton]',\r\n host: {\r\n class: 'frame-sidebar__menu-sub-button',\r\n '[attr.data-active]': 'active() ? \"\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '(click)': 'handleClick($event)',\r\n },\r\n})\r\nexport class FrSidebarMenuSubButton {\r\n readonly active = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n handleClick(event: Event): void {\r\n if (this.disabled()) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n\r\n/** Skeleton slot for sidebar menu. */\r\n@Directive({\r\n selector: '[frSidebarMenuSkeleton], frame-sidebar-menu-skeleton',\r\n host: {\r\n class: 'frame-sidebar__menu-skeleton',\r\n '[attr.data-show-icon]': 'showIcon() ? \"\" : null',\r\n '[style.--frame-sidebar-skeleton-width]': 'width()',\r\n },\r\n})\r\nexport class FrSidebarMenuSkeleton {\r\n readonly showIcon = input(false, { transform: booleanAttribute });\r\n readonly width = input('72%');\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n} from './src/sidebar';\n\n@NgModule({\n imports: [\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n ],\n exports: [\n FrSidebar,\n FrSidebarContent,\n FrSidebarFooter,\n FrSidebarGroup,\n FrSidebarGroupAction,\n FrSidebarGroupContent,\n FrSidebarGroupLabel,\n FrSidebarHeader,\n FrSidebarInset,\n FrSidebarMenu,\n FrSidebarMenuAction,\n FrSidebarMenuBadge,\n FrSidebarMenuButton,\n FrSidebarMenuItem,\n FrSidebarMenuSkeleton,\n FrSidebarMenuSub,\n FrSidebarMenuSubButton,\n FrSidebarMenuSubItem,\n FrSidebarProvider,\n FrSidebarRail,\n FrSidebarTrigger,\n ],\n})\nexport class FrSidebarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAgBa,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO;AACzC,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO;AAC3D,MAAM,uBAAuB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM;AAC5D,MAAM,4BAA4B,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI;MACrD,+BAA+B,GAAG,CAAC,SAAS,EAAE,SAAS;MASvD,mBAAmB,GAAG,IAAI,cAAc,CAAoB,qBAAqB;AAE9F,SAAS,UAAU,CAAC,KAAc,EAAA;IAChC,OAAO,KAAK,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM;AAC7C;AAEA,SAAS,aAAa,CAAC,KAAc,EAAA;AACnC,IAAA,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,OAAO,GAAG,KAAK,GAAG,SAAS;AACtE;AAEA,SAAS,iBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,GAAG,KAAK,GAAG,WAAW;AACnE;AAEA,SAAS,oBAAoB,CAAC,KAAc,EAAA;AAC1C,IAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,SAAS;AAC7D;AAEA,SAAS,uBAAuB,CAAC,KAAc,EAAA;IAC7C,OAAO,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS;AACpD;AAEA,SAAS,oBAAoB,CAAC,KAAc,EAAA;AAC1C,IAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;AACzD,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;AAClD,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI;AAClD;AAEA;MAqBa,iBAAiB,CAAA;AACX,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;IACxD,YAAY,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACrD,IAAA,kBAAkB,GAAG,MAAM,CAAC,KAAK,yFAAC;AAChC,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;IAElC,WAAW,GAAG,KAAK,CAAC,IAAI,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC1D,SAAS,GAAG,KAAK,CAAiB,IAAI,iFAAI,KAAK,EAAE,MAAM,EAAA,CAAG;IAC1D,UAAU,GAAG,MAAM,EAAW;IAC9B,gBAAgB,GAAG,MAAM,EAAW;AACpC,IAAA,QAAQ,GAAG,KAAK,CAAC,GAAG,+EAAC;IACrB,gBAAgB,GAAG,KAAK,CAAC,IAAI,wFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC/D,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;AAExB,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,2EAAC;IAC9D,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IACtD,KAAK,GAAG,QAAQ,CAAiB,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,GAAG,WAAW,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEzF,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;AAC7C,QAAA,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE;YAC5B;QACF;QAEA,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAC/D,QAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;AAChE,QAAA,YAAY,EAAE;QACd,UAAU,CAAC,gBAAgB,GAAG,QAAQ,EAAE,YAAY,CAAC;IACvD;AAEA,IAAA,OAAO,CAAC,IAAa,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;AAC7B,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7B;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;AAEA,IAAA,aAAa,CAAC,IAAa,EAAA;AACzB,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC;IACxF;AAEA,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC7B;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC;QACF;QAEA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B;AAEA,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC5B;QACF;QAEA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;QACzC,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACzE;QACF;QAEA,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,aAAa,EAAE;IACtB;wGAzEW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,SAAA,EAjBjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,WAAW,EAAE,iBAAiB;AAC/B,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAYU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6CAA6C;AACvD,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,WAAW,EAAA,iBAAmB;AAC/B,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAC/B,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,yBAAyB,EAAE,cAAc;AACzC,wBAAA,oBAAoB,EAAE,wBAAwB;AAC9C,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,+BAA+B,EAAE,SAAS;AAC1C,wBAAA,oBAAoB,EAAE,uBAAuB;AAC9C,qBAAA;AACF,iBAAA;;AA6ED;MAaa,SAAS,CAAA;AACX,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;IACxD,QAAQ,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,GAAG,KAAK,CAAyB,MAAM,4EAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IACvE,OAAO,GAAG,KAAK,CAA4B,SAAS,+EAAI,SAAS,EAAE,aAAa,EAAA,CAAG;IACnF,WAAW,GAAG,KAAK,CAAgC,WAAW,mFACrE,SAAS,EAAE,iBAAiB,EAAA,CAC5B;IACO,OAAO,GAAG,KAAK,CAAyB,IAAI,+EAAI,SAAS,EAAE,oBAAoB,EAAA,CAAG;IAClF,OAAO,GAAG,KAAK,CAAyB,GAAG,+EAAI,SAAS,EAAE,oBAAoB,EAAA,CAAG;IACjF,SAAS,GAAG,KAAK,CAAC,IAAI,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;wGAVtD,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,mCAAA,EAAA,uBAAA,EAAA,iCAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAZrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,uBAAuB,EAAE,yBAAyB;AAClD,wBAAA,mBAAmB,EAAE,iCAAiC;AACtD,wBAAA,yBAAyB,EAAE,iCAAiC;AAC7D,qBAAA;AACF,iBAAA;;AAcD;MAWa,gBAAgB,CAAA;IAClB,QAAQ,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1D,SAAS,GAAG,KAAK,CAAC,gBAAgB,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;IAErE,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE;IAChC;wGANW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAC/B,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,sBAAsB,EAAE,0BAA0B;AAClD,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,SAAS,EAAE,UAAU;AACtB,qBAAA;AACF,iBAAA;;AAUD;MAea,aAAa,CAAA;AACP,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC3B,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxD,MAAM,GAAG,CAAC;IACV,UAAU,GAAG,CAAC;IACd,QAAQ,GAAG,KAAK;IAChB,aAAa,GAAG,KAAK;IACrB,OAAO,GAAG,CAAC,CAAC;IACZ,YAAY,GAAG,CAAC;IAChB,aAAa,GAAG,GAAG;IACnB,aAAa,GAAG,GAAG;IAElB,QAAQ,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEnE,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB;QACF;QAEA,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,MAAM,EAAE;YAC1C;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE;IAChC;AAEA,IAAA,WAAW,CAAC,KAAmB,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE;YAC5F;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;AACrF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU;QACnC,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/B,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,MAAM,IAAI,GAAG,CAAC,SAAuB,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAChE,MAAM,EAAE,GAAG,MAAK;YACd,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,CAAC;AAClD,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,WAAW,EAAE;YACpB;AACA,YAAA,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG;AACxB,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG;YACxB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC5B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjE;AAEQ,IAAA,MAAM,CAAC,KAAmB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnC;QACF;QAEA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM;AACzC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;QAC1D,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;QAE1G,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AAEpB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;AAClE,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;YAC7B;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAE7B,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE;YACvB;QACF;;AAGA,QAAA,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,MAAK;YACxC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;AACjD,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACnB,QAAA,CAAC,CAAC;IACJ;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE;AACvB,YAAA,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACnB;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;QACnD;IACF;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACtE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,iBAAiB;AAElE,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;IACjD;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,GAAG;QACZ;;QAGA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa;AAC5D,QAAA,MAAM,WAAW,GAAG,cAAc,CAAC,qBAAqB,EAAE;QAC1D,IAAI,aAAa,GAAG,CAAC;AAErB,QAAA,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAc,GAAG,CAAC,CAAC,EAAE;AACnF,YAAA,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,oBAAoB,EAAE;gBACnG;YACF;AAEA,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC5C,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;AAC7D,YAAA,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAC5E;AAEA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC;IAChD;wGAvIW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,GAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mCAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAdzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,YAAY,EAAE,gBAAgB;AAC9B,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,eAAe,EAAE,qBAAqB;AACtC,wBAAA,iBAAiB,EAAE,UAAU;AAC7B,wBAAA,iBAAiB,EAAE,mCAAmC;AACvD,qBAAA;AACF,iBAAA;;AA2ID;MAOa,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC7B,qBAAA;AACF,iBAAA;;AAGD;MAOa,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA;AACF,iBAAA;;AAGD;MAOa,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA;AACF,iBAAA;;AAGD;MAOa,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2CAA2C;AACrD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAChC,qBAAA;AACF,iBAAA;;AAGD;MAOa,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,sBAAsB;AAC9B,qBAAA;AACF,iBAAA;;AAGD;MAOa,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kDAAkD;AAC5D,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,4BAA4B;AACpC,qBAAA;AACF,iBAAA;;AAGD;MAQa,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oDAAoD;AAC9D,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,6BAA6B;AACpC,wBAAA,IAAI,EAAE,QAAQ;AACf,qBAAA;AACF,iBAAA;;AAGD;MAOa,qBAAqB,CAAA;wGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sDAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sDAAsD;AAChE,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,8BAA8B;AACtC,qBAAA;AACF,iBAAA;;AAGD;MAQa,aAAa,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA;AACF,iBAAA;;AAGD;MAQa,iBAAiB,CAAA;wGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,0BAA0B;AACjC,wBAAA,IAAI,EAAE,UAAU;AACjB,qBAAA;AACF,iBAAA;;AAGD;MAca,mBAAmB,CAAA;IACrB,MAAM,GAAG,KAAK,CAAC,KAAK,8EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACtD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,IAAI,GAAG,KAAK,CAAmC,SAAS,4EAC/D,SAAS,EAAE,oBAAoB,EAAA,CAC/B;IACO,OAAO,GAAG,KAAK,CAAsC,SAAS,+EACrE,SAAS,EAAE,uBAAuB,EAAA,CAClC;AACO,IAAA,OAAO,GAAG,KAAK,CAAgB,IAAI,8EAAC;AAE7C,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;QACzB;IACF;wGAhBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4EAA4E;AACtF,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,4BAA4B;AACnC,wBAAA,oBAAoB,EAAE,sBAAsB;AAC5C,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,iBAAiB,EAAE,wBAAwB;AAC3C,wBAAA,SAAS,EAAE,qBAAqB;AACjC,qBAAA;AACF,iBAAA;;AAoBD;MASa,mBAAmB,CAAA;IACrB,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;wGADzD,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,6BAAA,EAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kDAAkD;AAC5D,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,4BAA4B;AACnC,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,2BAA2B,EAAE,2BAA2B;AACzD,qBAAA;AACF,iBAAA;;AAKD;MAOa,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gDAAgD;AAC1D,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,2BAA2B;AACnC,qBAAA;AACF,iBAAA;;AAGD;MAQa,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,yBAAyB;AAChC,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA;AACF,iBAAA;;AAGD;MAQa,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qDAAqD;AAC/D,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,8BAA8B;AACrC,wBAAA,IAAI,EAAE,UAAU;AACjB,qBAAA;AACF,iBAAA;;AAGD;MAWa,sBAAsB,CAAA;IACxB,MAAM,GAAG,KAAK,CAAC,KAAK,8EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACtD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEjE,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;QACzB;IACF;wGATW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qFAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,EAAA,cAAA,EAAA,gCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qFAAqF;AAC/F,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,gCAAgC;AACvC,wBAAA,oBAAoB,EAAE,sBAAsB;AAC5C,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,SAAS,EAAE,qBAAqB;AACjC,qBAAA;AACF,iBAAA;;AAaD;MASa,qBAAqB,CAAA;IACvB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,4EAAC;wGAFlB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sDAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,sCAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sDAAsD;AAChE,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,8BAA8B;AACrC,wBAAA,uBAAuB,EAAE,wBAAwB;AACjD,wBAAA,wCAAwC,EAAE,SAAS;AACpD,qBAAA;AACF,iBAAA;;;MCleY,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YA9CxB,SAAS;YACT,gBAAgB;YAChB,eAAe;YACf,cAAc;YACd,oBAAoB;YACpB,qBAAqB;YACrB,mBAAmB;YACnB,eAAe;YACf,cAAc;YACd,aAAa;YACb,mBAAmB;YACnB,kBAAkB;YAClB,mBAAmB;YACnB,iBAAiB;YACjB,qBAAqB;YACrB,gBAAgB;YAChB,sBAAsB;YACtB,oBAAoB;YACpB,iBAAiB;YACjB,aAAa;AACb,YAAA,gBAAgB,aAGhB,SAAS;YACT,gBAAgB;YAChB,eAAe;YACf,cAAc;YACd,oBAAoB;YACpB,qBAAqB;YACrB,mBAAmB;YACnB,eAAe;YACf,cAAc;YACd,aAAa;YACb,mBAAmB;YACnB,kBAAkB;YAClB,mBAAmB;YACnB,iBAAiB;YACjB,qBAAqB;YACrB,gBAAgB;YAChB,sBAAsB;YACtB,oBAAoB;YACpB,iBAAiB;YACjB,aAAa;YACb,gBAAgB,CAAA,EAAA,CAAA;yGAGP,eAAe,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhD3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,SAAS;wBACT,gBAAgB;wBAChB,eAAe;wBACf,cAAc;wBACd,oBAAoB;wBACpB,qBAAqB;wBACrB,mBAAmB;wBACnB,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,mBAAmB;wBACnB,kBAAkB;wBAClB,mBAAmB;wBACnB,iBAAiB;wBACjB,qBAAqB;wBACrB,gBAAgB;wBAChB,sBAAsB;wBACtB,oBAAoB;wBACpB,iBAAiB;wBACjB,aAAa;wBACb,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,SAAS;wBACT,gBAAgB;wBAChB,eAAe;wBACf,cAAc;wBACd,oBAAoB;wBACpB,qBAAqB;wBACrB,mBAAmB;wBACnB,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,mBAAmB;wBACnB,kBAAkB;wBAClB,mBAAmB;wBACnB,iBAAiB;wBACjB,qBAAqB;wBACrB,gBAAgB;wBAChB,sBAAsB;wBACtB,oBAAoB;wBACpB,iBAAiB;wBACjB,aAAa;wBACb,gBAAgB;AACjB,qBAAA;AACF,iBAAA;;;ACxED;;AAEG;;;;"}
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { input, booleanAttribute, Directive, NgModule } from '@angular/core';
3
3
 
4
+ /** Skeleton placeholder for loading content. */
4
5
  class FrSkeleton {
5
6
  animated = input(true, { ...(ngDevMode ? { debugName: "animated" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6
7
  width = input(null, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-skeleton.mjs","sources":["../../../projects/components/skeleton/src/skeleton.ts","../../../projects/components/skeleton/skeleton.module.ts","../../../projects/components/skeleton/frame-ui-ng-components-skeleton.ts"],"sourcesContent":["import { booleanAttribute, Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[frSkeleton], frame-skeleton',\n exportAs: 'frSkeleton',\n host: {\n class: 'frame-skeleton',\n 'aria-hidden': 'true',\n '[attr.data-animated]': 'animated()',\n '[style.--frame-skeleton-width]': 'width()',\n '[style.--frame-skeleton-height]': 'height()',\n '[style.--frame-skeleton-radius]': 'radius()',\n },\n})\nexport class FrSkeleton {\n readonly animated = input(true, { transform: booleanAttribute });\n readonly width = input<string | null>(null);\n readonly height = input<string | null>(null);\n readonly radius = input<string | null>(null);\n}\n","import { NgModule } from '@angular/core';\n\nimport { FrSkeleton } from './src/skeleton';\n\n@NgModule({\n imports: [FrSkeleton],\n exports: [FrSkeleton],\n})\nexport class FrSkeletonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAca,UAAU,CAAA;IACZ,QAAQ,GAAG,KAAK,CAAC,IAAI,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACvD,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,4EAAC;AAClC,IAAA,MAAM,GAAG,KAAK,CAAgB,IAAI,6EAAC;AACnC,IAAA,MAAM,GAAG,KAAK,CAAgB,IAAI,6EAAC;wGAJjC,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,SAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAZtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,gCAAgC,EAAE,SAAS;AAC3C,wBAAA,iCAAiC,EAAE,UAAU;AAC7C,wBAAA,iCAAiC,EAAE,UAAU;AAC9C,qBAAA;AACF,iBAAA;;;MCLY,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAhB,gBAAgB,EAAA,OAAA,EAAA,CAHjB,UAAU,CAAA,EAAA,OAAA,EAAA,CACV,UAAU,CAAA,EAAA,CAAA;yGAET,gBAAgB,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,UAAU,CAAC;oBACrB,OAAO,EAAE,CAAC,UAAU,CAAC;AACtB,iBAAA;;;ACPD;;AAEG;;;;"}
1
+ {"version":3,"file":"frame-ui-ng-components-skeleton.mjs","sources":["../../../projects/components/skeleton/src/skeleton.ts","../../../projects/components/skeleton/skeleton.module.ts","../../../projects/components/skeleton/frame-ui-ng-components-skeleton.ts"],"sourcesContent":["import { booleanAttribute, Directive, input } from '@angular/core';\r\n\r\n/** Skeleton placeholder for loading content. */\r\n@Directive({\r\n selector: '[frSkeleton], frame-skeleton',\r\n exportAs: 'frSkeleton',\r\n host: {\r\n class: 'frame-skeleton',\r\n 'aria-hidden': 'true',\r\n '[attr.data-animated]': 'animated()',\r\n '[style.--frame-skeleton-width]': 'width()',\r\n '[style.--frame-skeleton-height]': 'height()',\r\n '[style.--frame-skeleton-radius]': 'radius()',\r\n },\r\n})\r\nexport class FrSkeleton {\r\n readonly animated = input(true, { transform: booleanAttribute });\r\n readonly width = input<string | null>(null);\r\n readonly height = input<string | null>(null);\r\n readonly radius = input<string | null>(null);\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\n\nimport { FrSkeleton } from './src/skeleton';\n\n@NgModule({\n imports: [FrSkeleton],\n exports: [FrSkeleton],\n})\nexport class FrSkeletonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAEA;MAaa,UAAU,CAAA;IACZ,QAAQ,GAAG,KAAK,CAAC,IAAI,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACvD,IAAA,KAAK,GAAG,KAAK,CAAgB,IAAI,4EAAC;AAClC,IAAA,MAAM,GAAG,KAAK,CAAgB,IAAI,6EAAC;AACnC,IAAA,MAAM,GAAG,KAAK,CAAgB,IAAI,6EAAC;wGAJjC,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,SAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAZtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,gCAAgC,EAAE,SAAS;AAC3C,wBAAA,iCAAiC,EAAE,UAAU;AAC7C,wBAAA,iCAAiC,EAAE,UAAU;AAC9C,qBAAA;AACF,iBAAA;;;MCNY,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAhB,gBAAgB,EAAA,OAAA,EAAA,CAHjB,UAAU,CAAA,EAAA,OAAA,EAAA,CACV,UAAU,CAAA,EAAA,CAAA;yGAET,gBAAgB,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,UAAU,CAAC;oBACrB,OAAO,EAAE,CAAC,UAAU,CAAC;AACtB,iBAAA;;;ACPD;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, input, numberAttribute, booleanAttribute, output, signal, computed, effect, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
2
+ import { inject, ElementRef, input, numberAttribute, booleanAttribute, output, signal, computed, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
3
  import { DOCUMENT } from '@angular/common';
4
4
  import { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';
5
5
  import { coerceNumber, clampNumber } from '@frame-ui-ng/components/utils';
@@ -17,10 +17,12 @@ function coerceValue(value) {
17
17
  }
18
18
  return [coerceNumber(value, 0)];
19
19
  }
20
+ /** Slider control with single and range value support. */
20
21
  class FrSlider extends FrControlValueAccessor {
21
22
  elementRef = inject(ElementRef);
22
23
  document = inject(DOCUMENT);
23
24
  controlledByInput = false;
25
+ lastInputKey = '';
24
26
  min = input(0, { ...(ngDevMode ? { debugName: "min" } : /* istanbul ignore next */ {}), transform: numberAttribute });
25
27
  max = input(100, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), transform: numberAttribute });
26
28
  step = input(1, { ...(ngDevMode ? { debugName: "step" } : /* istanbul ignore next */ {}), transform: numberAttribute });
@@ -46,19 +48,28 @@ class FrSlider extends FrControlValueAccessor {
46
48
  const values = this.values();
47
49
  return this.percentForValue(values.at(-1) ?? this.min());
48
50
  }, ...(ngDevMode ? [{ debugName: "rangeEndPercent" }] : /* istanbul ignore next */ []));
49
- constructor() {
50
- super();
51
- effect(() => {
52
- const controlledValue = this.valueInput();
53
- if (controlledValue !== null) {
54
- this.controlledByInput = true;
55
- this.values.set(this.normalizeValues(coerceValue(controlledValue)));
56
- return;
57
- }
58
- if (!this.controlledByInput) {
59
- this.values.set(this.normalizeValues(coerceValue(this.defaultValue())));
60
- }
61
- });
51
+ ngDoCheck() {
52
+ const inputKey = [
53
+ this.valueInput(),
54
+ this.defaultValue(),
55
+ this.min(),
56
+ this.max(),
57
+ this.step(),
58
+ this.minStepsBetweenThumbs(),
59
+ ].map((value) => (Array.isArray(value) ? value.join(',') : String(value))).join('|');
60
+ if (inputKey === this.lastInputKey) {
61
+ return;
62
+ }
63
+ this.lastInputKey = inputKey;
64
+ const controlledValue = this.valueInput();
65
+ if (controlledValue !== null) {
66
+ this.controlledByInput = true;
67
+ this.values.set(this.normalizeValues(coerceValue(controlledValue)));
68
+ return;
69
+ }
70
+ if (!this.controlledByInput) {
71
+ this.values.set(this.normalizeValues(coerceValue(this.defaultValue())));
72
+ }
62
73
  }
63
74
  setViewValue(value) {
64
75
  if (value === null || value === undefined) {
@@ -138,6 +149,7 @@ class FrSlider extends FrControlValueAccessor {
138
149
  const step = Math.max(this.step(), 0.000001);
139
150
  const minDistance = Math.max(this.minStepsBetweenThumbs(), 0) * step;
140
151
  const normalized = values.length ? values : [min];
152
+ // Only the active thumb is bounded by neighbors; passive thumbs keep their full range.
141
153
  return normalized.map((value, index) => {
142
154
  const previous = index > 0 ? normalized[index - 1] + minDistance : min;
143
155
  const next = index < normalized.length - 1 ? normalized[index + 1] - minDistance : max;
@@ -160,6 +172,7 @@ class FrSlider extends FrControlValueAccessor {
160
172
  const offset = horizontal ? event.clientX - rect.left : rect.bottom - event.clientY;
161
173
  const direction = horizontal && this.isRtl() ? -1 : 1;
162
174
  let percent = size > 0 ? offset / size : 0;
175
+ // Convert visual position into logical value direction for RTL and inverted sliders.
163
176
  if (direction === -1) {
164
177
  percent = 1 - percent;
165
178
  }
@@ -178,7 +191,7 @@ class FrSlider extends FrControlValueAccessor {
178
191
  isRtl() {
179
192
  return getComputedStyle(this.elementRef.nativeElement).direction === 'rtl';
180
193
  }
181
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSlider, deps: [], target: i0.ɵɵFactoryTarget.Component });
194
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSlider, deps: null, target: i0.ɵɵFactoryTarget.Component });
182
195
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrSlider, isStandalone: true, selector: "frame-slider", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, minStepsBetweenThumbs: { classPropertyName: "minStepsBetweenThumbs", publicName: "minStepsBetweenThumbs", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalidInput: { classPropertyName: "invalidInput", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, valueInput: { classPropertyName: "valueInput", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, formatValue: { classPropertyName: "formatValue", publicName: "formatValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { listeners: { "pointerdown": "handlePointerDown($event)" }, properties: { "attr.data-orientation": "orientation()", "attr.data-disabled": "disabled() ? \"\" : null", "attr.data-invalid": "invalid() ? \"\" : null", "attr.data-inverted": "inverted() ? \"\" : null", "style.--frame-slider-start-percent": "rangeStartPercent() + \"%\"", "style.--frame-slider-end-percent": "rangeEndPercent() + \"%\"" }, classAttribute: "frame-slider" }, providers: [provideDsValueAccessor(FrSlider)], exportAs: ["frSlider"], usesInheritance: true, ngImport: i0, template: `
183
196
  <span class="frame-slider__track">
184
197
  <span class="frame-slider__range"></span>
@@ -250,7 +263,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
250
263
  }
251
264
  `,
252
265
  }]
253
- }], ctorParameters: () => [], propDecorators: { min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], minStepsBetweenThumbs: [{ type: i0.Input, args: [{ isSignal: true, alias: "minStepsBetweenThumbs", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], inverted: [{ type: i0.Input, args: [{ isSignal: true, alias: "inverted", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], formatValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatValue", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
266
+ }], propDecorators: { min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], minStepsBetweenThumbs: [{ type: i0.Input, args: [{ isSignal: true, alias: "minStepsBetweenThumbs", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalidInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], inverted: [{ type: i0.Input, args: [{ isSignal: true, alias: "inverted", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], formatValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatValue", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
254
267
 
255
268
  class FrSliderModule {
256
269
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });