forty-cdk 0.2.0 → 0.3.0

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 (220) hide show
  1. package/accordion/README.md +122 -0
  2. package/aspect-ratio/README.md +76 -0
  3. package/avatar/README.md +100 -0
  4. package/breadcrumbs/README.md +49 -0
  5. package/breakpoints/README.md +81 -0
  6. package/button/README.md +49 -0
  7. package/calendar/README.md +458 -0
  8. package/carousel/README.md +358 -0
  9. package/checkbox/README.md +146 -0
  10. package/combobox/README.md +535 -0
  11. package/context-menu/README.md +139 -0
  12. package/date-field/README.md +184 -0
  13. package/date-picker/README.md +338 -0
  14. package/dialog/README.md +388 -0
  15. package/disclosure/README.md +114 -0
  16. package/drag-drop/README.md +359 -0
  17. package/drawer/README.md +560 -0
  18. package/dropdown-menu/README.md +176 -0
  19. package/fesm2022/forty-cdk-accordion.mjs +348 -0
  20. package/fesm2022/forty-cdk-accordion.mjs.map +1 -0
  21. package/fesm2022/forty-cdk-aspect-ratio.mjs +74 -0
  22. package/fesm2022/forty-cdk-aspect-ratio.mjs.map +1 -0
  23. package/fesm2022/forty-cdk-avatar.mjs +308 -0
  24. package/fesm2022/forty-cdk-avatar.mjs.map +1 -0
  25. package/fesm2022/forty-cdk-breadcrumbs.mjs +125 -0
  26. package/fesm2022/forty-cdk-breadcrumbs.mjs.map +1 -0
  27. package/fesm2022/forty-cdk-breakpoints.mjs +117 -0
  28. package/fesm2022/forty-cdk-breakpoints.mjs.map +1 -0
  29. package/fesm2022/forty-cdk-button.mjs +134 -0
  30. package/fesm2022/forty-cdk-button.mjs.map +1 -0
  31. package/fesm2022/forty-cdk-calendar.mjs +2034 -0
  32. package/fesm2022/forty-cdk-calendar.mjs.map +1 -0
  33. package/fesm2022/forty-cdk-carousel.mjs +968 -0
  34. package/fesm2022/forty-cdk-carousel.mjs.map +1 -0
  35. package/fesm2022/forty-cdk-checkbox.mjs +226 -0
  36. package/fesm2022/forty-cdk-checkbox.mjs.map +1 -0
  37. package/fesm2022/forty-cdk-combobox.mjs +2596 -0
  38. package/fesm2022/forty-cdk-combobox.mjs.map +1 -0
  39. package/fesm2022/forty-cdk-context-menu.mjs +413 -0
  40. package/fesm2022/forty-cdk-context-menu.mjs.map +1 -0
  41. package/fesm2022/forty-cdk-core.mjs +9022 -0
  42. package/fesm2022/forty-cdk-core.mjs.map +1 -0
  43. package/fesm2022/forty-cdk-date-field.mjs +744 -0
  44. package/fesm2022/forty-cdk-date-field.mjs.map +1 -0
  45. package/fesm2022/forty-cdk-date-picker.mjs +1011 -0
  46. package/fesm2022/forty-cdk-date-picker.mjs.map +1 -0
  47. package/fesm2022/forty-cdk-dialog.mjs +707 -0
  48. package/fesm2022/forty-cdk-dialog.mjs.map +1 -0
  49. package/fesm2022/forty-cdk-disclosure.mjs +190 -0
  50. package/fesm2022/forty-cdk-disclosure.mjs.map +1 -0
  51. package/fesm2022/forty-cdk-drag-drop.mjs +1180 -0
  52. package/fesm2022/forty-cdk-drag-drop.mjs.map +1 -0
  53. package/fesm2022/forty-cdk-drawer.mjs +1641 -0
  54. package/fesm2022/forty-cdk-drawer.mjs.map +1 -0
  55. package/fesm2022/forty-cdk-dropdown-menu.mjs +350 -0
  56. package/fesm2022/forty-cdk-dropdown-menu.mjs.map +1 -0
  57. package/fesm2022/forty-cdk-field.mjs +425 -0
  58. package/fesm2022/forty-cdk-field.mjs.map +1 -0
  59. package/fesm2022/forty-cdk-fieldset.mjs +164 -0
  60. package/fesm2022/forty-cdk-fieldset.mjs.map +1 -0
  61. package/fesm2022/forty-cdk-file-upload.mjs +221 -0
  62. package/fesm2022/forty-cdk-file-upload.mjs.map +1 -0
  63. package/fesm2022/forty-cdk-hover-card.mjs +496 -0
  64. package/fesm2022/forty-cdk-hover-card.mjs.map +1 -0
  65. package/fesm2022/forty-cdk-input.mjs +274 -0
  66. package/fesm2022/forty-cdk-input.mjs.map +1 -0
  67. package/fesm2022/forty-cdk-internationalized-date.mjs +1 -1
  68. package/fesm2022/forty-cdk-internationalized-date.mjs.map +1 -1
  69. package/fesm2022/forty-cdk-listbox.mjs +1279 -0
  70. package/fesm2022/forty-cdk-listbox.mjs.map +1 -0
  71. package/fesm2022/forty-cdk-menu.mjs +1439 -0
  72. package/fesm2022/forty-cdk-menu.mjs.map +1 -0
  73. package/fesm2022/forty-cdk-menubar.mjs +787 -0
  74. package/fesm2022/forty-cdk-menubar.mjs.map +1 -0
  75. package/fesm2022/forty-cdk-meter.mjs +211 -0
  76. package/fesm2022/forty-cdk-meter.mjs.map +1 -0
  77. package/fesm2022/forty-cdk-navigation-menu.mjs +1145 -0
  78. package/fesm2022/forty-cdk-navigation-menu.mjs.map +1 -0
  79. package/fesm2022/forty-cdk-number-input.mjs +559 -0
  80. package/fesm2022/forty-cdk-number-input.mjs.map +1 -0
  81. package/fesm2022/forty-cdk-otp-input.mjs +527 -0
  82. package/fesm2022/forty-cdk-otp-input.mjs.map +1 -0
  83. package/fesm2022/forty-cdk-pagination.mjs +323 -0
  84. package/fesm2022/forty-cdk-pagination.mjs.map +1 -0
  85. package/fesm2022/forty-cdk-pane-resizer.mjs +297 -0
  86. package/fesm2022/forty-cdk-pane-resizer.mjs.map +1 -0
  87. package/fesm2022/forty-cdk-popover.mjs +698 -0
  88. package/fesm2022/forty-cdk-popover.mjs.map +1 -0
  89. package/fesm2022/forty-cdk-progress.mjs +226 -0
  90. package/fesm2022/forty-cdk-progress.mjs.map +1 -0
  91. package/fesm2022/forty-cdk-radio-group.mjs +378 -0
  92. package/fesm2022/forty-cdk-radio-group.mjs.map +1 -0
  93. package/fesm2022/forty-cdk-scroll-area.mjs +640 -0
  94. package/fesm2022/forty-cdk-scroll-area.mjs.map +1 -0
  95. package/fesm2022/forty-cdk-search.mjs +205 -0
  96. package/fesm2022/forty-cdk-search.mjs.map +1 -0
  97. package/fesm2022/forty-cdk-select.mjs +1661 -0
  98. package/fesm2022/forty-cdk-select.mjs.map +1 -0
  99. package/fesm2022/forty-cdk-separator.mjs +82 -0
  100. package/fesm2022/forty-cdk-separator.mjs.map +1 -0
  101. package/fesm2022/forty-cdk-signal-forms.mjs +97 -0
  102. package/fesm2022/forty-cdk-signal-forms.mjs.map +1 -0
  103. package/fesm2022/forty-cdk-slider.mjs +803 -0
  104. package/fesm2022/forty-cdk-slider.mjs.map +1 -0
  105. package/fesm2022/forty-cdk-stepper.mjs +886 -0
  106. package/fesm2022/forty-cdk-stepper.mjs.map +1 -0
  107. package/fesm2022/forty-cdk-switch.mjs +137 -0
  108. package/fesm2022/forty-cdk-switch.mjs.map +1 -0
  109. package/fesm2022/forty-cdk-table.mjs +1518 -0
  110. package/fesm2022/forty-cdk-table.mjs.map +1 -0
  111. package/fesm2022/forty-cdk-tabs.mjs +400 -0
  112. package/fesm2022/forty-cdk-tabs.mjs.map +1 -0
  113. package/fesm2022/forty-cdk-time-field.mjs +593 -0
  114. package/fesm2022/forty-cdk-time-field.mjs.map +1 -0
  115. package/fesm2022/forty-cdk-time-picker.mjs +1013 -0
  116. package/fesm2022/forty-cdk-time-picker.mjs.map +1 -0
  117. package/fesm2022/forty-cdk-toast.mjs +1153 -0
  118. package/fesm2022/forty-cdk-toast.mjs.map +1 -0
  119. package/fesm2022/forty-cdk-toggle.mjs +516 -0
  120. package/fesm2022/forty-cdk-toggle.mjs.map +1 -0
  121. package/fesm2022/forty-cdk-toolbar.mjs +374 -0
  122. package/fesm2022/forty-cdk-toolbar.mjs.map +1 -0
  123. package/fesm2022/forty-cdk-tooltip.mjs +672 -0
  124. package/fesm2022/forty-cdk-tooltip.mjs.map +1 -0
  125. package/fesm2022/forty-cdk-tree.mjs +2007 -0
  126. package/fesm2022/forty-cdk-tree.mjs.map +1 -0
  127. package/fesm2022/forty-cdk-virtualization.mjs +1 -1
  128. package/fesm2022/forty-cdk-virtualization.mjs.map +1 -1
  129. package/fesm2022/forty-cdk.mjs +0 -43310
  130. package/fesm2022/forty-cdk.mjs.map +1 -1
  131. package/field/README.md +97 -0
  132. package/fieldset/README.md +86 -0
  133. package/file-upload/README.md +73 -0
  134. package/hover-card/README.md +171 -0
  135. package/input/README.md +156 -0
  136. package/listbox/README.md +424 -0
  137. package/menu/README.md +181 -0
  138. package/menubar/README.md +140 -0
  139. package/meter/README.md +128 -0
  140. package/navigation-menu/README.md +253 -0
  141. package/number-input/README.md +171 -0
  142. package/otp-input/README.md +198 -0
  143. package/package.json +213 -1
  144. package/pagination/README.md +61 -0
  145. package/pane-resizer/README.md +136 -0
  146. package/popover/README.md +262 -0
  147. package/progress/README.md +115 -0
  148. package/radio-group/README.md +129 -0
  149. package/scroll-area/README.md +184 -0
  150. package/search/README.md +42 -0
  151. package/select/README.md +488 -0
  152. package/separator/README.md +84 -0
  153. package/signal-forms/README.md +72 -0
  154. package/slider/README.md +152 -0
  155. package/stepper/README.md +292 -0
  156. package/switch/README.md +116 -0
  157. package/table/README.md +769 -0
  158. package/tabs/README.md +130 -0
  159. package/time-field/README.md +157 -0
  160. package/time-picker/README.md +172 -0
  161. package/toast/README.md +398 -0
  162. package/toggle/README.md +224 -0
  163. package/toolbar/README.md +109 -0
  164. package/tooltip/README.md +274 -0
  165. package/tree/README.md +708 -0
  166. package/types/forty-cdk-accordion.d.ts +242 -0
  167. package/types/forty-cdk-aspect-ratio.d.ts +59 -0
  168. package/types/forty-cdk-avatar.d.ts +133 -0
  169. package/types/forty-cdk-breadcrumbs.d.ts +92 -0
  170. package/types/forty-cdk-breakpoints.d.ts +141 -0
  171. package/types/forty-cdk-button.d.ts +80 -0
  172. package/types/forty-cdk-calendar.d.ts +914 -0
  173. package/types/forty-cdk-carousel.d.ts +530 -0
  174. package/types/forty-cdk-checkbox.d.ts +141 -0
  175. package/types/forty-cdk-combobox.d.ts +1259 -0
  176. package/types/forty-cdk-context-menu.d.ts +313 -0
  177. package/types/forty-cdk-core.d.ts +5774 -0
  178. package/types/forty-cdk-date-field.d.ts +307 -0
  179. package/types/forty-cdk-date-picker.d.ts +622 -0
  180. package/types/forty-cdk-dialog.d.ts +546 -0
  181. package/types/forty-cdk-disclosure.d.ts +127 -0
  182. package/types/forty-cdk-drag-drop.d.ts +456 -0
  183. package/types/forty-cdk-drawer.d.ts +871 -0
  184. package/types/forty-cdk-dropdown-menu.d.ts +242 -0
  185. package/types/forty-cdk-field.d.ts +236 -0
  186. package/types/forty-cdk-fieldset.d.ts +119 -0
  187. package/types/forty-cdk-file-upload.d.ts +124 -0
  188. package/types/forty-cdk-hover-card.d.ts +320 -0
  189. package/types/forty-cdk-input.d.ts +169 -0
  190. package/types/forty-cdk-internationalized-date.d.ts +1 -1
  191. package/types/forty-cdk-listbox.d.ts +513 -0
  192. package/types/forty-cdk-menu.d.ts +629 -0
  193. package/types/forty-cdk-menubar.d.ts +451 -0
  194. package/types/forty-cdk-meter.d.ts +122 -0
  195. package/types/forty-cdk-navigation-menu.d.ts +514 -0
  196. package/types/forty-cdk-number-input.d.ts +319 -0
  197. package/types/forty-cdk-otp-input.d.ts +248 -0
  198. package/types/forty-cdk-pagination.d.ts +214 -0
  199. package/types/forty-cdk-pane-resizer.d.ts +145 -0
  200. package/types/forty-cdk-popover.d.ts +509 -0
  201. package/types/forty-cdk-progress.d.ts +143 -0
  202. package/types/forty-cdk-radio-group.d.ts +222 -0
  203. package/types/forty-cdk-scroll-area.d.ts +258 -0
  204. package/types/forty-cdk-search.d.ts +142 -0
  205. package/types/forty-cdk-select.d.ts +899 -0
  206. package/types/forty-cdk-separator.d.ts +59 -0
  207. package/types/forty-cdk-signal-forms.d.ts +58 -0
  208. package/types/forty-cdk-slider.d.ts +379 -0
  209. package/types/forty-cdk-stepper.d.ts +650 -0
  210. package/types/forty-cdk-switch.d.ts +87 -0
  211. package/types/forty-cdk-table.d.ts +723 -0
  212. package/types/forty-cdk-tabs.d.ts +235 -0
  213. package/types/forty-cdk-time-field.d.ts +307 -0
  214. package/types/forty-cdk-time-picker.d.ts +578 -0
  215. package/types/forty-cdk-toast.d.ts +598 -0
  216. package/types/forty-cdk-toggle.d.ts +310 -0
  217. package/types/forty-cdk-toolbar.d.ts +217 -0
  218. package/types/forty-cdk-tooltip.d.ts +436 -0
  219. package/types/forty-cdk-tree.d.ts +688 -0
  220. package/types/forty-cdk.d.ts +1 -19743
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forty-cdk-slider.mjs","sources":["../../../projects/forty-cdk/slider/src/slider-context.ts","../../../projects/forty-cdk/slider/src/slider-defaults.ts","../../../projects/forty-cdk/slider/src/slider.ts","../../../projects/forty-cdk/slider/src/slider-track.ts","../../../projects/forty-cdk/slider/src/slider-range.ts","../../../projects/forty-cdk/slider/src/slider-thumb.ts","../../../projects/forty-cdk/slider/src/slider-host-directive.ts","../../../projects/forty-cdk/slider/src/forty-cdk-slider.ts"],"sourcesContent":["import { inject, InjectionToken, type Signal } from '@angular/core';\n\nimport { type WritingDirection } from 'forty-cdk/core';\n\n/**\n * One thumb registered with `ForSlider`. The handle exposes the host element\n * (so the root can focus it) and the live `index` signal so reordering or\n * adding/removing thumbs works without re-registration.\n */\nexport interface ForSliderThumbHandle {\n readonly host: HTMLElement;\n readonly index: Signal<number>;\n}\n\n/**\n * Coordination contract owned by `ForSlider`. Track and thumb pieces inject\n * this to read configuration, push value updates, and start drag flows.\n */\nexport interface ForSliderContext {\n // configuration (effective values — already defaulted)\n readonly minValue: Signal<number>;\n readonly maxValue: Signal<number>;\n readonly step: Signal<number>;\n readonly largeStep: Signal<number>;\n readonly orientation: Signal<'horizontal' | 'vertical'>;\n readonly dir: Signal<WritingDirection>;\n /**\n * The slider's effective disabled — its own `disabled` input OR'd with a\n * surrounding disabled `[forFieldset]`. Thumb, track, and range pieces read\n * this so a disabled slider (or fieldset) is inert and exposes `aria-disabled`.\n */\n readonly effectiveDisabled: Signal<boolean>;\n readonly readonly: Signal<boolean>;\n readonly minStepsBetweenThumbs: Signal<number>;\n readonly inverted: Signal<boolean>;\n\n // state\n readonly value: Signal<readonly number[]>;\n /** Per-thumb position as fraction `[0, 1]`, already inverted-aware. */\n readonly fractions: Signal<readonly number[]>;\n /** Range start fraction `[0, 1]` for `[forSliderRange]`. */\n readonly rangeStart: Signal<number>;\n /** Range end fraction `[0, 1]` for `[forSliderRange]`. */\n readonly rangeEnd: Signal<number>;\n\n // operations\n /**\n * Set the value for a specific thumb. Snaps to step, clamps to `[min, max]`,\n * and respects `minStepsBetweenThumbs` against neighbors. No-op while\n * `disabled` or `readonly`.\n */\n setValueAt(index: number, raw: number): void;\n /**\n * Bump a thumb by `step` (or `largeStep`) in the requested direction,\n * resolved against `orientation`, `dir`, and `inverted`.\n */\n bumpAt(index: number, key: SliderArrowKey, large: boolean): void;\n /** Set thumb to absolute `min` or `max` extreme (Home / End). */\n setExtreme(index: number, which: 'min' | 'max'): void;\n\n // pointer\n /**\n * Map a pointer's client coordinates to a value in `[min, max]`,\n * respecting orientation, direction, and inversion.\n */\n pointerToValue(clientX: number, clientY: number): number;\n /** Index of the thumb whose value is closest to `target`. */\n nearestThumbIndex(target: number): number;\n /**\n * Begin a drag for the given thumb. Attaches global pointermove / pointerup\n * listeners; the thumb's own `(pointerdown)` calls this directly, and the\n * track's calls it after picking the nearest thumb.\n */\n beginDrag(index: number, event: PointerEvent): void;\n\n // track el (registered by `ForSliderTrack`)\n setTrack(el: HTMLElement | null): void;\n trackElement(): HTMLElement | null;\n\n // form\n markTouched(): void;\n /**\n * Trailing-edge hook for value-changing interactions. Emits `(valueCommit)`\n * with the final value array if the running interaction has mutated the\n * value, then resets the internal flag. No-op otherwise. Pointer drags call\n * this on pointerup with no argument. Thumbs call it on keyup of a navigation\n * key, passing their own `thumbIndex` so only the thumb that armed the\n * pending commit can commit it (a keyup on a different thumb is a no-op).\n */\n commitInteraction(thumbIndex?: number): void;\n\n // registry\n registerThumb(handle: ForSliderThumbHandle): void;\n unregisterThumb(handle: ForSliderThumbHandle): void;\n}\n\nexport type SliderArrowKey = 'ArrowUp' | 'ArrowDown' | 'ArrowLeft' | 'ArrowRight';\n\nexport const FOR_SLIDER_CONTEXT = new InjectionToken<ForSliderContext>('FOR_SLIDER_CONTEXT');\n\nexport function injectSliderContext(piece: string): ForSliderContext {\n const ctx = inject(FOR_SLIDER_CONTEXT, { optional: true });\n if (!ctx) {\n throw new Error(`[forty-cdk/slider] ${piece} must be used inside a [forSlider] element.`);\n }\n return ctx;\n}\n","import { type Provider } from '@angular/core';\n\nimport { createDefaults } from 'forty-cdk/core';\n\n/**\n * Defaults inherited by descendant sliders in the surrounding injector\n * scope. Configure with `provideForSliderDefaults` either at the\n * application root or in any component's `providers` array; partial\n * overrides merge with the parent scope.\n */\nexport interface ForSliderDefaults {\n /** Step used for `PageUp` / `PageDown`. Defaults to 10× `step`. */\n largeStep: number;\n}\n\n/**\n * Library fallback for slider defaults, read at the root injector when no\n * consumer has called `provideForSliderDefaults`. Exported for the shared defaults\n * contract spec; not re-exported from the primitive's public entry.\n */\nexport const FOR_SLIDER_FALLBACK_DEFAULTS: ForSliderDefaults = {\n largeStep: 10,\n};\n\nconst { token, provideDefaults } = createDefaults<ForSliderDefaults>(\n 'FOR_SLIDER_DEFAULTS',\n FOR_SLIDER_FALLBACK_DEFAULTS,\n);\n\n/** Token holding the resolved slider defaults for the current scope. */\nexport const FOR_SLIDER_DEFAULTS = token;\n\n/**\n * Configures forty-cdk slider defaults for this injector scope. Partial\n * overrides inherit unspecified keys from the parent scope (or library\n * defaults at the root).\n */\nexport function provideForSliderDefaults(defaults: Partial<ForSliderDefaults> = {}): Provider[] {\n return provideDefaults(defaults);\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n DOCUMENT,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\n\nimport {\n Collection,\n FormUiControlBase,\n injectHiddenInput,\n type WritingDirection,\n snapToStep,\n injectTextDirection,\n} from 'forty-cdk/core';\nimport {\n FOR_SLIDER_CONTEXT,\n type ForSliderContext,\n type ForSliderThumbHandle,\n type SliderArrowKey,\n} from './slider-context';\nimport { FOR_SLIDER_DEFAULTS } from './slider-defaults';\n\n/**\n * Headless implementation of the [WAI-ARIA Slider pattern](https://www.w3.org/WAI/ARIA/apg/patterns/slider/)\n * (single thumb) and [Slider (Multi-Thumb)](https://www.w3.org/WAI/ARIA/apg/patterns/slider-multi-thumb/)\n * (range / N thumbs). Implements `FormValueControl<readonly number[]>` from\n * `@angular/forms/signals` for `[formField]` auto-wiring.\n *\n * Selection is always modeled as `readonly number[]`:\n * - 1 entry → single-thumb slider.\n * - 2 entries → range slider.\n * - N entries → multi-thumb slider.\n *\n * Values are kept clamped to `[min, max]` and snapped to `step` increments.\n * In multi-thumb mode they're constrained between neighbors so thumbs can't\n * cross (`minStepsBetweenThumbs` forces a minimum gap, in step units).\n *\n * The `model()` change emitter (`(valueChange)`) fires only on internal\n * updates (drag, keyboard, track click), never on consumer writes via\n * `[(value)]` — observe transitions without binding back.\n *\n * For trailing-edge work (network calls, undo entries) bind `(valueCommit)`\n * instead — it fires once at the end of an interaction with the final value\n * array, never per drag step.\n */\n@Directive({\n selector: '[forSlider]',\n exportAs: 'forSlider',\n host: {\n role: 'group',\n '[attr.aria-disabled]': 'effectiveDisabled() ? \"true\" : null',\n '[attr.aria-readonly]': 'readonly() ? \"true\" : null',\n '[attr.aria-required]': 'required() ? \"true\" : null',\n '[attr.aria-invalid]': 'invalid() ? \"true\" : null',\n '[attr.aria-busy]': 'pending() ? \"true\" : null',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-disabled]': 'effectiveDisabled() ? \"\" : null',\n '[attr.data-readonly]': 'readonly() ? \"\" : null',\n '[attr.dir]': 'dir()',\n '(focusout)': 'onFocusOut($event)',\n },\n providers: [{ provide: FOR_SLIDER_CONTEXT, useExisting: ForSlider }],\n})\nexport class ForSlider\n extends FormUiControlBase\n implements Omit<FormValueControl<readonly number[]>, 'min' | 'max'>, ForSliderContext\n{\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly #document = inject(DOCUMENT);\n readonly #defaults = inject(FOR_SLIDER_DEFAULTS);\n\n /**\n * Two-way bindable. Selected values, one per thumb. Single-thumb sliders\n * keep one entry, range sliders two, multi-thumb N. Values must be sorted\n * ascending for multi-thumb; thumb-by-thumb clamping keeps the order\n * during interaction. Defaults to `[0]`; set an explicit `[(value)]`\n * when `min` is non-zero.\n */\n readonly value = model<readonly number[]>([0]);\n\n /**\n * Minimum value. Falls back to `0` internally. A slider's bounds are scalar\n * by the ARIA slider pattern, but since Signal Forms v22 `FormUiControl.min`\n * is typed `NonNullable<TValue>` — an array for this control — so `min` and\n * `max` are excluded from the `FormValueControl` `implements` clause, and\n * the transform widens the write type to satisfy the `[formField]` template\n * type-check (which pushes `readonly number[] | undefined`). The form never\n * produces a `min`/`max` state for an array-valued field at runtime (the\n * `min()`/`max()` validators only apply to numeric fields), so non-number\n * writes normalize to `undefined`.\n */\n readonly min = input(0 as number | undefined, {\n transform: (value: number | readonly number[] | undefined): number | undefined =>\n typeof value === 'number' ? value : undefined,\n });\n /**\n * Maximum value. Falls back to `100` internally. Excluded from the\n * `FormValueControl` `implements` clause and write-type-widened — see\n * {@link min}.\n */\n readonly max = input(100 as number | undefined, {\n transform: (value: number | readonly number[] | undefined): number | undefined =>\n typeof value === 'number' ? value : undefined,\n });\n /**\n * Increment values snap to. Fractional steps (e.g. `0.1`) are supported: the\n * snapped value is rounded to the step's decimal precision so float noise\n * (`0.1 * 3`) can't spuriously emit `valueCommit` or leak into\n * `aria-valuenow`.\n */\n readonly step = input<number>(1);\n /**\n * Step used for PageUp / PageDown. Defaults to 10× `step`. The default is\n * read from `provideForSliderDefaults` for the surrounding scope.\n */\n readonly largeStep = input<number>(this.#defaults.largeStep);\n\n /** Effective minimum (defaults `0` when input is unset). Exposed to children via context. */\n readonly minValue = computed(() => this.min() ?? 0);\n /** Effective maximum (defaults `100`). Exposed to children via context. */\n readonly maxValue = computed(() => this.max() ?? 100);\n\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n /**\n * Writing direction. When unset (default `null`), the inherited ambient\n * direction is resolved from the nearest ancestor carrying a `dir` attribute\n * (or `<html dir>`), defaulting to `'ltr'`. An explicit `[dir]` always wins.\n * The resolved value is reflected to the host `dir` attribute and flips the\n * horizontal increase direction in RTL.\n */\n readonly _dirInput = input<WritingDirection | null>(null, { alias: 'dir' });\n readonly dir = injectTextDirection(this._dirInput);\n\n /**\n * Visual inversion. Flips the mapping between value and screen position\n * (e.g. horizontal LTR with `inverted=true`: max sits on the left).\n * Keyboard semantics still target \"toward max\" with ArrowUp / ArrowRight\n * (LTR), independent of visual flip.\n */\n readonly inverted = input(false, { transform: booleanAttribute });\n\n /**\n * Multi-thumb only: minimum gap between adjacent thumbs, in step units.\n * Default `0` (touch but never cross — non-passing per APG).\n */\n readonly minStepsBetweenThumbs = input<number>(0);\n\n /**\n * Emitted at the end of a value-changing interaction — pointerup /\n * pointercancel after a drag, or keyup after one or more keyboard\n * adjustments — with the final value array. Use it to defer expensive work\n * (network calls,\n * history entries) to the trailing edge of the interaction instead of\n * running it per step. Stays silent when nothing changed (e.g. press +\n * release without movement, or a non-navigation key on a focused thumb).\n */\n readonly valueCommit = output<readonly number[]>();\n\n readonly #thumbs = new Collection<ForSliderThumbHandle>();\n readonly #trackEl = signal<HTMLElement | null>(null);\n readonly #destroyRef = inject(DestroyRef);\n readonly #activeDragCleanups = new Set<() => void>();\n #interactionMutated = false;\n #armedThumb: number | null = null;\n\n readonly fractions = computed(() => {\n const min = this.minValue();\n const max = this.maxValue();\n const inv = this.inverted();\n const span = max - min;\n if (span <= 0) {\n return this.value().map(() => 0);\n }\n return this.value().map((v) => {\n const f = (v - min) / span;\n const clamped = f < 0 ? 0 : f > 1 ? 1 : f;\n return inv ? 1 - clamped : clamped;\n });\n });\n\n /**\n * Range start fraction. Visual semantics: in single-thumb mode the range\n * always grows from the min edge to the thumb (`0 → fraction[0]`); in\n * multi-thumb mode it spans `min(values) → max(values)`. `inverted` is\n * already baked into the fractions, so consumers can paint blindly.\n */\n readonly rangeStart = computed(() => {\n const fr = this.fractions();\n if (fr.length === 0) {\n return 0;\n }\n if (fr.length === 1) {\n return Math.min(fr[0]!, this.inverted() ? 1 : 0);\n }\n return Math.min(...fr);\n });\n\n readonly rangeEnd = computed(() => {\n const fr = this.fractions();\n if (fr.length === 0) {\n return 0;\n }\n if (fr.length === 1) {\n return Math.max(fr[0]!, this.inverted() ? 1 : 0);\n }\n return Math.max(...fr);\n });\n\n constructor() {\n super();\n const stringValues = computed(() => this.value().map((v) => String(v)));\n injectHiddenInput({\n name: this.name,\n values: stringValues,\n disabled: this.effectiveDisabled,\n });\n this.#destroyRef.onDestroy(() => {\n for (const cleanup of this.#activeDragCleanups) {\n cleanup();\n }\n this.#activeDragCleanups.clear();\n });\n }\n\n setValueAt(index: number, raw: number): void {\n if (this.effectiveDisabled() || this.readonly()) {\n return;\n }\n const current = this.value();\n if (index < 0 || index >= current.length) {\n return;\n }\n const next = this.#clampForIndex(current, index, raw);\n if (next === current[index]) {\n return;\n }\n const updated = current.slice();\n updated[index] = next;\n this.value.set(updated);\n this.#interactionMutated = true;\n this.#armedThumb = index;\n }\n\n bumpAt(index: number, key: SliderArrowKey, large: boolean): void {\n if (this.effectiveDisabled() || this.readonly()) {\n return;\n }\n const current = this.value();\n if (index < 0 || index >= current.length) {\n return;\n }\n const direction = this.#directionFor(key);\n if (direction === 0) {\n return;\n }\n const stepUnit = large ? this.largeStep() : this.step();\n const target = current[index]! + direction * stepUnit;\n this.setValueAt(index, target);\n }\n\n setExtreme(index: number, which: 'min' | 'max'): void {\n if (this.effectiveDisabled() || this.readonly()) {\n return;\n }\n this.setValueAt(index, which === 'min' ? this.minValue() : this.maxValue());\n }\n\n pointerToValue(clientX: number, clientY: number): number {\n const track = this.#trackEl();\n const min = this.minValue();\n const max = this.maxValue();\n if (!track) {\n return min;\n }\n const rect = track.getBoundingClientRect();\n const horizontal = this.orientation() === 'horizontal';\n let fraction: number;\n if (horizontal) {\n const width = rect.width || 1;\n fraction = (clientX - rect.left) / width;\n if (this.dir() === 'rtl') {\n fraction = 1 - fraction;\n }\n } else {\n const height = rect.height || 1;\n // Vertical default: bottom = min, top = max.\n fraction = (rect.bottom - clientY) / height;\n }\n if (this.inverted()) {\n fraction = 1 - fraction;\n }\n fraction = fraction < 0 ? 0 : fraction > 1 ? 1 : fraction;\n return min + fraction * (max - min);\n }\n\n nearestThumbIndex(target: number): number {\n const values = this.value();\n if (values.length === 0) {\n return -1;\n }\n let bestIndex = 0;\n let bestDelta = Math.abs(values[0]! - target);\n let bestValue = values[0]!;\n for (let i = 1; i < values.length; i++) {\n const value = values[i]!;\n const delta = Math.abs(value - target);\n if (delta < bestDelta) {\n bestIndex = i;\n bestDelta = delta;\n bestValue = value;\n } else if (delta === bestDelta) {\n if (target > bestValue) {\n bestIndex = i;\n bestValue = value;\n }\n }\n }\n return bestIndex;\n }\n\n beginDrag(index: number, event: PointerEvent): void {\n if (this.effectiveDisabled() || this.readonly()) {\n return;\n }\n const pointerId = event.pointerId;\n const move = (e: PointerEvent) => {\n if (e.pointerId !== pointerId) {\n return;\n }\n e.preventDefault();\n this.setValueAt(index, this.pointerToValue(e.clientX, e.clientY));\n };\n // Drag tracking listens on the document's defaultView (the window)\n // so the pointer can leave the slider track without losing the drag.\n // Read it through the injected DOCUMENT to stay SSR-friendly — pointer\n // events themselves only fire in the browser, so the optional chain\n // simply makes this a no-op on the server.\n const win = this.#document.defaultView;\n const cleanup = () => {\n win?.removeEventListener('pointermove', move);\n win?.removeEventListener('pointerup', stop);\n win?.removeEventListener('pointercancel', stop);\n this.#activeDragCleanups.delete(cleanup);\n };\n const stop = (e: PointerEvent) => {\n if (e.pointerId !== pointerId) {\n return;\n }\n cleanup();\n this.markTouched();\n this.commitInteraction();\n };\n win?.addEventListener('pointermove', move);\n win?.addEventListener('pointerup', stop);\n win?.addEventListener('pointercancel', stop);\n this.#activeDragCleanups.add(cleanup);\n }\n\n setTrack(el: HTMLElement | null): void {\n this.#trackEl.set(el);\n }\n\n trackElement(): HTMLElement | null {\n return this.#trackEl();\n }\n\n override markTouched(): void {\n if (!this.touched()) {\n super.markTouched();\n }\n }\n\n /**\n * Emit `valueCommit` if the running interaction mutated the value at least\n * once, and clear the flag. Pointer drags call this on pointerup with no\n * argument (the drag's own pointerup is already scoped to one thumb). Thumbs\n * call it on keyup of a navigation key, passing their own `thumbIndex` so a\n * keyup on a thumb that did not arm the pending commit (e.g. a second thumb\n * focused and released without moving) cannot mis-attribute or steal another\n * thumb's pending commit — only the thumb that armed it commits.\n */\n commitInteraction(thumbIndex?: number): void {\n if (!this.#interactionMutated) {\n return;\n }\n if (thumbIndex !== undefined && this.#armedThumb !== thumbIndex) {\n return;\n }\n this.#interactionMutated = false;\n this.#armedThumb = null;\n this.valueCommit.emit(this.value());\n }\n\n /**\n * Move focus to a thumb, implementing `FormUiControl.focus` from\n * `@angular/forms/signals`. Without this override Signal Forms would focus\n * the host `role=\"group\"` wrapper — which is not focusable and carries no\n * keyboard map — so focus-on-error would silently go nowhere. Targets the\n * first registered thumb (the roving-tabindex entry point); no-op when the\n * slider is disabled or has no thumbs.\n */\n focus(options?: FocusOptions): void {\n if (this.effectiveDisabled()) {\n return;\n }\n this.#thumbs.items()[0]?.host.focus(options);\n }\n\n registerThumb(handle: ForSliderThumbHandle): void {\n this.#thumbs.register(handle);\n }\n\n unregisterThumb(handle: ForSliderThumbHandle): void {\n this.#thumbs.unregister(handle);\n }\n\n protected onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as HTMLElement | null;\n if (next && this.#host.nativeElement.contains(next)) {\n return;\n }\n this.markTouched();\n }\n\n /** Snap, clamp, and (multi-thumb) keep within neighbor bounds. */\n #clampForIndex(values: readonly number[], index: number, raw: number): number {\n const min = this.minValue();\n const max = this.maxValue();\n const step = this.step();\n const gap = this.minStepsBetweenThumbs() * step;\n const snapped = snapToStep(raw, step, min);\n let lo = min;\n let hi = max;\n if (index > 0) {\n lo = Math.max(lo, values[index - 1]! + gap);\n }\n if (index < values.length - 1) {\n hi = Math.min(hi, values[index + 1]! - gap);\n }\n return snapped < lo ? lo : snapped > hi ? hi : snapped;\n }\n\n /**\n * Returns +1 / -1 / 0 for the keyboard direction's effect on the value,\n * resolving orientation × dir × inverted. Up / Right (LTR) increase by\n * default; `inverted` flips both axes.\n */\n #directionFor(key: SliderArrowKey): 1 | -1 | 0 {\n let positive: boolean;\n switch (key) {\n case 'ArrowUp':\n positive = true;\n break;\n case 'ArrowDown':\n positive = false;\n break;\n case 'ArrowRight':\n positive = this.dir() !== 'rtl';\n break;\n case 'ArrowLeft':\n positive = this.dir() === 'rtl';\n break;\n default:\n return 0;\n }\n if (this.inverted()) {\n positive = !positive;\n }\n return positive ? 1 : -1;\n }\n}\n","import { DestroyRef, Directive, ElementRef, inject } from '@angular/core';\n\nimport { injectSliderContext } from './slider-context';\n\n/**\n * The clickable track surface. PointerDown anywhere on the track that isn't\n * a thumb finds the nearest thumb, jumps it to the clicked position, focuses\n * it, and starts a drag (so the user can keep refining without releasing).\n *\n * Thumbs handle their own pointerdown, so a click directly on a thumb\n * skips the \"nearest\" lookup and drags that specific thumb.\n *\n * Reflects `data-orientation` and `data-disabled` so consumers can paint\n * the track from CSS. Position the visible track however you want — this\n * directive just owns the bounding-rect for the math.\n */\n@Directive({\n selector: '[forSliderTrack]',\n exportAs: 'forSliderTrack',\n host: {\n '[attr.data-orientation]': 'ctx.orientation()',\n '[attr.data-disabled]': 'ctx.effectiveDisabled() ? \"\" : null',\n '(pointerdown)': 'onPointerDown($event)',\n },\n})\nexport class ForSliderTrack {\n protected readonly ctx = injectSliderContext('ForSliderTrack');\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n this.ctx.setTrack(this.#host.nativeElement);\n inject(DestroyRef).onDestroy(() => this.ctx.setTrack(null));\n }\n\n protected onPointerDown(event: PointerEvent): void {\n if (this.ctx.effectiveDisabled() || this.ctx.readonly()) {\n return;\n }\n // Only react to primary button / touch / pen contact.\n if (event.button !== undefined && event.button !== 0) {\n return;\n }\n // Direct thumb clicks are handled by the thumb's own listener; the thumb\n // calls `stopPropagation()` so we don't double-handle.\n event.preventDefault();\n const target = this.ctx.pointerToValue(event.clientX, event.clientY);\n const index = this.ctx.nearestThumbIndex(target);\n if (index < 0) {\n return;\n }\n this.ctx.setValueAt(index, target);\n this.ctx.beginDrag(index, event);\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { injectSliderContext } from './slider-context';\n\n/**\n * Optional decorative band between the slider's lowest and highest thumbs\n * (or `0 → thumb` for single-thumb sliders). The directive doesn't paint\n * anything — it exposes start / end fractions as CSS variables and `data-*`\n * so the consumer can size and position it from styles.\n *\n * Custom properties on the host:\n * - `--for-slider-range-start` — fraction `[0, 1]`.\n * - `--for-slider-range-end` — fraction `[0, 1]`.\n * - `--for-slider-range-size` — `end - start`, useful for `width` / `height`.\n *\n * The fractions already account for `inverted`, so painting can be blind.\n * Combine with `data-orientation` to pick the right CSS axis.\n */\n@Directive({\n selector: '[forSliderRange]',\n exportAs: 'forSliderRange',\n host: {\n '[attr.data-orientation]': 'ctx.orientation()',\n '[attr.data-disabled]': 'ctx.effectiveDisabled() ? \"\" : null',\n '[style.--for-slider-range-start]': 'ctx.rangeStart()',\n '[style.--for-slider-range-end]': 'ctx.rangeEnd()',\n '[style.--for-slider-range-size]': 'ctx.rangeEnd() - ctx.rangeStart()',\n },\n})\nexport class ForSliderRange {\n protected readonly ctx = injectSliderContext('ForSliderRange');\n}\n","import { computed, Directive, ElementRef, inject, input, numberAttribute } from '@angular/core';\n\nimport { registerHandle } from 'forty-cdk/core';\nimport { injectSliderContext, type SliderArrowKey } from './slider-context';\n\n/**\n * One slider thumb. Apply on any focusable element (commonly `<span>` /\n * `<div>` with the directive's auto-injected `tabindex`). The directive\n * sets `role=\"slider\"`, the live `aria-value*` attributes, keyboard\n * handling, and starts a drag on pointerdown.\n *\n * `[index]` is the 0-based position in the parent slider's `value()` array\n * — pass the loop index when rendering N thumbs:\n *\n * ```html\n * @for (v of value(); let i = $index; track i) {\n * <span forSliderThumb [index]=\"i\" [label]=\"i === 0 ? 'Min' : 'Max'\"></span>\n * }\n * ```\n *\n * Custom property exposed:\n * - `--for-slider-thumb-position` — fraction `[0, 1]` already accounting\n * for `inverted`. Use it via e.g.\n * `inset-inline-start: calc(var(--for-slider-thumb-position) * 100%)`.\n */\n@Directive({\n selector: '[forSliderThumb]',\n exportAs: 'forSliderThumb',\n host: {\n role: 'slider',\n '[attr.tabindex]': 'tabindex()',\n '[attr.aria-valuemin]': 'ariaValueMin()',\n '[attr.aria-valuemax]': 'ariaValueMax()',\n '[attr.aria-valuenow]': 'ariaValueNow()',\n '[attr.aria-valuetext]': 'ariaValueText()',\n '[attr.aria-orientation]': 'ctx.orientation()',\n '[attr.aria-label]': 'label() || null',\n '[attr.aria-labelledby]': 'labelledby() || null',\n '[attr.aria-disabled]': 'ctx.effectiveDisabled() ? \"true\" : null',\n '[attr.aria-readonly]': 'ctx.readonly() ? \"true\" : null',\n '[attr.data-orientation]': 'ctx.orientation()',\n '[attr.data-disabled]': 'ctx.effectiveDisabled() ? \"\" : null',\n '[attr.data-readonly]': 'ctx.readonly() ? \"\" : null',\n '[attr.data-index]': 'index()',\n '[style.--for-slider-thumb-position]': 'fraction()',\n '(keydown)': 'onKeyDown($event)',\n '(keyup)': 'onKeyUp($event)',\n '(pointerdown)': 'onPointerDown($event)',\n },\n})\nexport class ForSliderThumb {\n protected readonly ctx = injectSliderContext('ForSliderThumb');\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Position in the parent slider's `value()` array (0-based). */\n readonly index = input.required({ transform: numberAttribute });\n\n /**\n * Optional fixed label for assistive tech (e.g. \"Minimum price\",\n * \"Maximum price\"). Mirrored as `aria-label`. Use `[labelledby]`\n * instead if the label lives elsewhere in the DOM.\n */\n readonly label = input<string>('');\n readonly labelledby = input<string>('');\n\n /**\n * Optional human-readable value override (e.g. \"$1,200\" instead of \"1200\").\n * Mirrored as `aria-valuetext` only when non-empty; when omitted, no\n * `aria-valuetext` is emitted so assistive tech reads `aria-valuenow`.\n */\n readonly valueText = input<string>('');\n\n protected readonly tabindex = computed(() => (this.ctx.effectiveDisabled() ? -1 : 0));\n\n protected readonly currentValue = computed(() => {\n const i = this.index();\n const values = this.ctx.value();\n if (i < 0 || i >= values.length) {\n return this.ctx.minValue();\n }\n return values[i]!;\n });\n\n protected readonly fraction = computed(() => {\n const i = this.index();\n const fr = this.ctx.fractions();\n if (i < 0 || i >= fr.length) {\n return 0;\n }\n return fr[i]!;\n });\n\n protected readonly ariaValueNow = computed(() => this.currentValue());\n\n protected readonly ariaValueText = computed(() => this.valueText() || null);\n\n protected readonly ariaValueMin = computed(() => {\n const i = this.index();\n const values = this.ctx.value();\n if (i > 0 && i < values.length) {\n // Multi-thumb non-passing: this thumb's lower bound is the previous\n // thumb's value (matches APG multi-thumb guidance).\n return values[i - 1]!;\n }\n return this.ctx.minValue();\n });\n\n protected readonly ariaValueMax = computed(() => {\n const i = this.index();\n const values = this.ctx.value();\n if (i >= 0 && i < values.length - 1) {\n return values[i + 1]!;\n }\n return this.ctx.maxValue();\n });\n\n constructor() {\n const handle = {\n host: this.#host.nativeElement,\n index: this.index,\n };\n registerHandle(\n handle,\n (h) => this.ctx.registerThumb(h),\n (h) => this.ctx.unregisterThumb(h),\n );\n }\n\n protected onKeyDown(event: KeyboardEvent): void {\n if (this.ctx.effectiveDisabled() || this.ctx.readonly()) {\n return;\n }\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n event.preventDefault();\n this.ctx.bumpAt(this.index(), event.key as SliderArrowKey, false);\n return;\n case 'PageUp':\n event.preventDefault();\n this.ctx.bumpAt(this.index(), 'ArrowUp', true);\n return;\n case 'PageDown':\n event.preventDefault();\n this.ctx.bumpAt(this.index(), 'ArrowDown', true);\n return;\n case 'Home':\n event.preventDefault();\n this.ctx.setExtreme(this.index(), 'min');\n return;\n case 'End':\n event.preventDefault();\n this.ctx.setExtreme(this.index(), 'max');\n return;\n default:\n return;\n }\n }\n\n protected onKeyUp(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'PageUp':\n case 'PageDown':\n case 'Home':\n case 'End':\n this.ctx.commitInteraction(this.index());\n return;\n default:\n return;\n }\n }\n\n protected onPointerDown(event: PointerEvent): void {\n if (this.ctx.effectiveDisabled() || this.ctx.readonly()) {\n return;\n }\n if (event.button !== undefined && event.button !== 0) {\n return;\n }\n // Stop the track's pointerdown handler from re-running \"nearest thumb\"\n // — clicking directly on a thumb should drag *that* thumb.\n event.stopPropagation();\n event.preventDefault();\n this.#host.nativeElement.focus();\n this.ctx.beginDrag(this.index(), event);\n }\n}\n","/**\n * Exact public names of every `ForSlider` input, its models included. Spread it into the\n * `inputs` array of a `hostDirectives` entry so a wrapper component re-exposes the\n * primitive's full surface — the Signal Forms members `[formField]` binds among them —\n * without hand-maintaining the list. Always spread into an inline object literal as shown\n * below: the literal is what keeps the entry statically analyzable for consumers compiling\n * against the published package. An anti-drift spec fails when this list no longer matches\n * the directive's actual API. See `docs/wrapping-form-primitives.md` for both supported\n * wrapping patterns.\n *\n * @example\n * ```ts\n * @Component({\n * selector: 'div[mySlider]',\n * template: '',\n * hostDirectives: [\n * {\n * directive: ForSlider,\n * inputs: [...FOR_SLIDER_HOST_DIRECTIVE_INPUTS],\n * outputs: [...FOR_SLIDER_HOST_DIRECTIVE_OUTPUTS],\n * },\n * ],\n * })\n * export class MySlider {}\n * ```\n */\nexport const FOR_SLIDER_HOST_DIRECTIVE_INPUTS = [\n 'value',\n 'dir',\n 'dirty',\n 'disabled',\n 'errors',\n 'invalid',\n 'inverted',\n 'largeStep',\n 'max',\n 'min',\n 'minStepsBetweenThumbs',\n 'name',\n 'orientation',\n 'pending',\n 'readonly',\n 'required',\n 'step',\n 'touched',\n] as const;\n\n/**\n * Exact public names of every `ForSlider` output, the Signal Forms `touch` output\n * included. Spread it into the `outputs` array of the same `hostDirectives` entry as\n * {@link FOR_SLIDER_HOST_DIRECTIVE_INPUTS}.\n */\nexport const FOR_SLIDER_HOST_DIRECTIVE_OUTPUTS = [\n 'valueChange',\n 'valueCommit',\n 'touchedChange',\n 'touch',\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}