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-drag-drop.mjs","sources":["../../../projects/forty-cdk/drag-drop/src/drag-drop-context.ts","../../../projects/forty-cdk/drag-drop/src/drag-drop-defaults.ts","../../../projects/forty-cdk/drag-drop/src/drop-list-group.ts","../../../projects/forty-cdk/drag-drop/src/placeholder-sorter.ts","../../../projects/forty-cdk/drag-drop/src/reorder-animator.ts","../../../projects/forty-cdk/drag-drop/src/drop-list.ts","../../../projects/forty-cdk/drag-drop/src/drag-preview.ts","../../../projects/forty-cdk/drag-drop/src/drag-placeholder.ts","../../../projects/forty-cdk/drag-drop/src/draggable.ts","../../../projects/forty-cdk/drag-drop/src/free-drag.ts","../../../projects/forty-cdk/drag-drop/src/drag-handle.ts","../../../projects/forty-cdk/drag-drop/src/move-item-in-array.ts","../../../projects/forty-cdk/drag-drop/src/forty-cdk-drag-drop.ts"],"sourcesContent":["import { inject, InjectionToken, type Signal } from '@angular/core';\nimport { type ListNavigationAction, type WritingDirection, type DragPreview } from 'forty-cdk/core';\n\n/** A registered draggable item, as seen by its drop list. */\nexport interface ForDraggableHandle {\n readonly host: HTMLElement;\n /** The consumer-supplied data payload for this item. */\n readonly data: Signal<unknown>;\n /** Effective disabled (item's own `dragDisabled` OR the list being disabled). */\n readonly disabled: Signal<boolean>;\n}\n\n/**\n * Coordination contract owned by `ForDropList` and consumed by each `ForDraggable`. Also the\n * public handle type used by `[connectedTo]` and the `dragDrop` event's\n * `previousContainer` / `container` — advanced consumers may read `host` / `items`; the\n * interaction methods exist for the directive pieces.\n */\nexport interface ForDropListContext {\n readonly host: HTMLElement;\n readonly orientation: Signal<'horizontal' | 'vertical' | 'mixed'>;\n readonly dir: Signal<WritingDirection>;\n /** Effective disabled of the whole list. */\n readonly disabled: Signal<boolean>;\n readonly items: Signal<readonly ForDraggableHandle[]>;\n /** Insertion index this list is the current drop target at, else `null`. */\n readonly dragOverIndex: Signal<number | null>;\n\n setDragOver(index: number | null): void;\n\n registerItem(handle: ForDraggableHandle): void;\n unregisterItem(handle: ForDraggableHandle): void;\n\n /** Roving tab-stop value for `el` before/after roving engages (mirror Listbox's pattern). */\n itemTabindex(el: HTMLElement): -1 | 0 | null;\n isFirstFocusableItem(el: HTMLElement): boolean;\n isItemHighlighted(el: HTMLElement): boolean;\n setActiveItem(el: HTMLElement): void;\n\n /** Idle roving focus move from `el`. */\n navigate(el: HTMLElement, action: ListNavigationAction): void;\n\n /** Start a keyboard drag for `el`; returns its source index, or `-1` if it could not lift. */\n lift(el: HTMLElement): number;\n /** Whether `el` is the currently lifted item. */\n isLifted(el: HTMLElement): boolean;\n /** Step the logical drop target while lifted. */\n moveLifted(action: ListNavigationAction): void;\n /** Commit the current drag (emits `dragDrop` on the source list). No-op if nothing lifted. */\n drop(): void;\n /** Abort the current drag without emitting `dragDrop`. */\n cancel(): void;\n /**\n * Begin a pointer drag for `el` at viewport point `point`. Sets up the same session state as a\n * keyboard lift. `preview` is the floating element supplied by the draggable (a consumer\n * `[forDragPreview]` template) — either a full {@link DragPreview} or the minimal\n * `{ moveTo, destroy }` shape; when omitted, the list creates the default cloned preview.\n * Returns the source index, or `-1` if it could not lift.\n */\n pointerLift(\n el: HTMLElement,\n point: { x: number; y: number },\n preview?: DragPreview | { moveTo(x: number, y: number): void; destroy(): void } | null,\n ): number;\n /** Update the live pointer drop target + preview position. No-op if nothing is lifted. */\n pointerMove(point: { x: number; y: number }): void;\n /**\n * Register the rendered placeholder's root nodes with the source list so it can reposition\n * them to the live drop index during a `liveSort` pointer drag. Pass `null` to clear. The\n * list ignores the nodes when `liveSort` is off. Called by `ForDraggable`.\n */\n setLivePlaceholder(nodes: readonly Node[] | null): void;\n}\n\nexport const FOR_DRAG_DROP_CONTEXT = new InjectionToken<ForDropListContext>(\n 'FOR_DRAG_DROP_CONTEXT',\n);\n\nexport function injectDropListContext(piece: string): ForDropListContext {\n const ctx = inject(FOR_DRAG_DROP_CONTEXT, { optional: true });\n if (!ctx) {\n throw new Error(`[forty-cdk/drag-drop] ${piece} must be used inside a [forDropList] element.`);\n }\n return ctx;\n}\n\n/** Emitted by the **source** `ForDropList` on a committed drop (keyboard or pointer). */\nexport interface ForDragDropEvent<T = unknown> {\n readonly item: T;\n readonly previousContainer: ForDropListContext;\n readonly container: ForDropListContext;\n readonly previousIndex: number;\n readonly currentIndex: number;\n}\n\n/** Emitted by `ForDraggable` when a drag (keyboard or pointer) starts. */\nexport interface ForDragStartEvent {\n readonly source: ForDropListContext;\n readonly index: number;\n}\n\n/** Emitted by `ForDraggable` when a drag ends (committed or cancelled). */\nexport interface ForDragEndEvent {\n /** `true` on a committed drop, `false` on cancel. */\n readonly dropped: boolean;\n}\n\n/**\n * Internal coordination surface a `ForDraggable` / `ForFreeDrag` exposes to its\n * `[forDragHandle]` children.\n */\nexport interface ForDraggableContext {\n /** Register a handle element; while any handle is registered, pointer drags may only start on one. */\n registerHandle(el: HTMLElement): void;\n unregisterHandle(el: HTMLElement): void;\n}\n\nexport const FOR_DRAGGABLE_CONTEXT = new InjectionToken<ForDraggableContext>(\n 'FOR_DRAGGABLE_CONTEXT',\n);\n\nexport function injectDraggableContext(piece: string): ForDraggableContext {\n const ctx = inject(FOR_DRAGGABLE_CONTEXT, { optional: true });\n if (!ctx) {\n throw new Error(\n `[forty-cdk/drag-drop] ${piece} must be used inside a [forDraggable] or [forFreeDrag] element.`,\n );\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 drag-drop lists in the surrounding injector\n * scope. Configure with `provideForDragDropDefaults` either at the application\n * root or in any component's `providers` array; partial overrides merge with\n * the parent scope.\n */\nexport interface ForDragDropDefaults {\n /**\n * `aria-roledescription` applied to each draggable item. Empty string disables\n * the attribute.\n */\n itemRoleDescription: string;\n /**\n * Announcement when an item is lifted. `index` and `total` describe the source\n * list and are 1-based.\n */\n announceLift: (label: string, index: number, total: number) => string;\n /**\n * Announcement when the drop target position changes. `index` and `total`\n * describe the target list and are 1-based.\n */\n announceMove: (label: string, index: number, total: number) => string;\n /**\n * Announcement on a committed drop. `index` and `total` describe the\n * destination list and are 1-based.\n */\n announceDrop: (label: string, index: number, total: number) => string;\n /** Announcement when a drag is cancelled. */\n announceCancel: (label: string) => string;\n /** Distance in px from a scroll edge that arms auto-scroll during a pointer drag. */\n autoScrollEdgeSize: number;\n /** Maximum scroll delta in px applied per animation frame while auto-scrolling. */\n autoScrollMaxSpeed: number;\n}\n\n/**\n * Library fallback for drag-drop defaults, read at the root injector when no\n * consumer has called `provideForDragDropDefaults`. Exported for the shared\n * defaults contract spec; not re-exported from the primitive's public entry.\n */\nexport const FOR_DRAG_DROP_FALLBACK_DEFAULTS: ForDragDropDefaults = {\n itemRoleDescription: 'sortable',\n announceLift: (label, index, total) => `${label}, lifted. ${index} of ${total}.`,\n announceMove: (label, index, total) => `${label}, moved to position ${index} of ${total}.`,\n announceDrop: (label, index, total) => `${label}, dropped at position ${index} of ${total}.`,\n announceCancel: (label) => `${label}, movement cancelled.`,\n autoScrollEdgeSize: 50,\n autoScrollMaxSpeed: 16,\n};\n\nconst { token, provideDefaults } = createDefaults<ForDragDropDefaults>(\n 'FOR_DRAG_DROP_DEFAULTS',\n FOR_DRAG_DROP_FALLBACK_DEFAULTS,\n);\n\n/** Token holding the resolved drag-drop defaults for the current scope. */\nexport const FOR_DRAG_DROP_DEFAULTS = token;\n\n/**\n * Configures forty-cdk drag-drop 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 provideForDragDropDefaults(\n defaults: Partial<ForDragDropDefaults> = {},\n): Provider[] {\n return provideDefaults(defaults);\n}\n","import { Directive, InjectionToken, signal, type Signal } from '@angular/core';\n\nimport type { ForDropListContext } from './drag-drop-context';\n\nexport const FOR_DROP_LIST_GROUP = new InjectionToken<ForDropListGroup>('FOR_DROP_LIST_GROUP');\n\n/**\n * Groups sibling `[forDropList]` elements so items can be transferred between\n * them without hand-wiring `[connectedTo]` on each list. Every list nested\n * under `[forDropListGroup]` automatically becomes a connected transfer target\n * for every other member of the group.\n */\n@Directive({\n selector: '[forDropListGroup]',\n exportAs: 'forDropListGroup',\n providers: [{ provide: FOR_DROP_LIST_GROUP, useExisting: ForDropListGroup }],\n})\nexport class ForDropListGroup {\n readonly #members = signal<readonly ForDropListContext[]>([]);\n\n /** All registered drop lists in this group, in registration order. */\n readonly members: Signal<readonly ForDropListContext[]> = this.#members.asReadonly();\n\n /** @internal */\n register(ctx: ForDropListContext): void {\n const current = this.#members();\n if (current.includes(ctx)) {\n return;\n }\n this.#members.set([...current, ctx]);\n }\n\n /** @internal */\n unregister(ctx: ForDropListContext): void {\n this.#members.set(this.#members().filter((c) => c !== ctx));\n }\n}\n","import { fencePlaceholderIndex, placeholderInsertion } from 'forty-cdk/core';\nimport type { ForDraggableHandle, ForDropListContext } from './drag-drop-context';\n\n/** Options handed to {@link PlaceholderSorter} at lift time. */\nexport interface PlaceholderSorterOptions {\n /** The source list the drag originates from (the fence is computed against its items). */\n readonly source: ForDropListContext;\n /** The lifted item's host element (excluded from the target item rects). */\n readonly lifted: HTMLElement;\n /** The owning document (a fragment is built from it to batch the node move). */\n readonly doc: Document;\n /** The source list's items, by host, used to compute the `dragDisabled` fence. */\n readonly sourceItems: () => readonly ForDraggableHandle[];\n /** Index of `lifted` within the source list's items (the fence origin). */\n readonly originIndex: () => number;\n}\n\n/**\n * Lazy `liveSort` strategy: relocates the rendered placeholder's root nodes to the live resolved\n * drop index during a pointer drag — within the source list and across connected lists — so\n * siblings part to reveal where the item will land.\n *\n * Created at `pointerLift` only when `liveSort` is on (and on a browser platform); when it is off\n * the list creates no sorter and `#resolveDrop` skips placeholder movement entirely, replacing the\n * former inline `if (this.liveSort())` gate. A `dragDisabled` sibling in the source list acts as a\n * hard visual fence: the placeholder stops at the first pinned item instead of travelling past it.\n *\n * Constructed directly (`new PlaceholderSorter(options)`); it holds no injection context.\n */\nexport class PlaceholderSorter {\n readonly #source: ForDropListContext;\n readonly #lifted: HTMLElement;\n readonly #doc: Document;\n readonly #sourceItems: () => readonly ForDraggableHandle[];\n readonly #originIndex: () => number;\n #nodes: readonly Node[] | null = null;\n\n constructor(options: PlaceholderSorterOptions) {\n this.#source = options.source;\n this.#lifted = options.lifted;\n this.#doc = options.doc;\n this.#sourceItems = options.sourceItems;\n this.#originIndex = options.originIndex;\n }\n\n /** Store (or clear) the placeholder's root nodes supplied by the draggable. */\n setNodes(nodes: readonly Node[] | null): void {\n this.#nodes = nodes;\n }\n\n /** Move the placeholder to the fenced resolved drop index in `targetCtx`. */\n onTargetChange(targetCtx: ForDropListContext, index: number): void {\n this.#move(targetCtx, this.#fencedIndex(targetCtx, index));\n }\n\n #fencedIndex(targetCtx: ForDropListContext, index: number): number {\n if (targetCtx !== this.#source) {\n return index;\n }\n const disabled = this.#sourceItems()\n .filter((h) => h.host !== this.#lifted)\n .map((h) => h.disabled());\n const origin = this.#originIndex();\n return fencePlaceholderIndex(index, disabled, origin < 0 ? 0 : origin);\n }\n\n #move(targetCtx: ForDropListContext, index: number): void {\n const nodes = this.#nodes;\n if (nodes === null || nodes.length === 0) {\n return;\n }\n const fragment = this.#doc.createDocumentFragment();\n for (const node of nodes) {\n fragment.appendChild(node);\n }\n const hosts = targetCtx\n .items()\n .map((h) => h.host)\n .filter((h) => h !== this.#lifted);\n const { parent, ref } = placeholderInsertion(hosts, index, targetCtx.host);\n parent.insertBefore(fragment, ref);\n }\n}\n","import { afterNextRender, type Injector } from '@angular/core';\n\nimport { playFlip, type FlipRect, type DragPreview } from 'forty-cdk/core';\nimport type { ForDropListContext } from './drag-drop-context';\n\n/** Options handed to {@link ReorderAnimator} at drop time. */\nexport interface ReorderAnimatorOptions {\n /** The source list plus its connected lists, whose items participate in the FLIP. */\n readonly containers: readonly ForDropListContext[];\n /** Injector for the post-commit `afterNextRender` Last-rect capture. */\n readonly injector: Injector;\n /** The browser window (reflow + timeout), or `null` in non-DOM environments. */\n readonly win: Window | null;\n}\n\n/**\n * Lazy `animateReorder` strategy: runs the FLIP reflow of displaced sibling items and settles the\n * floating preview into the final slot on a committed drop.\n *\n * Created in `drop()` only when the animation gate is satisfied (`animateReorder` on, a browser\n * platform, motion not reduced, and the item actually moved); when it is not, the list creates no\n * animator and tears down instantly, replacing the former inline `animate && first` gate.\n *\n * {@link captureFirst} measures every item's pre-change position and must run **before** the\n * `dragDrop` event mutates the DOM; {@link schedule} runs the Invert + Play after the consumer's\n * data change has rendered. Constructed directly (`new ReorderAnimator(options)`); it holds no\n * injection context beyond the injector handed in for `afterNextRender`.\n */\nexport class ReorderAnimator {\n readonly #containers: readonly ForDropListContext[];\n readonly #injector: Injector;\n readonly #win: Window | null;\n #first: ReadonlyMap<HTMLElement, FlipRect> | null = null;\n\n constructor(options: ReorderAnimatorOptions) {\n this.#containers = options.containers;\n this.#injector = options.injector;\n this.#win = options.win;\n }\n\n /** Capture each item's First (pre-change) rect across all containers. Run before the data change. */\n captureFirst(): void {\n const map = new Map<HTMLElement, FlipRect>();\n for (const ctx of this.#containers) {\n for (const h of ctx.items()) {\n const r = h.host.getBoundingClientRect();\n map.set(h.host, { left: r.left, top: r.top });\n }\n }\n this.#first = map;\n }\n\n /**\n * Schedule the FLIP play (and preview settle, when a preview was kept) after the next render —\n * once the consumer's data change has reflowed the displaced siblings into their new positions.\n */\n schedule(liftedHost: HTMLElement, preview: DragPreview | null): void {\n const first = this.#first;\n if (first === null) {\n return;\n }\n const win = this.#win;\n afterNextRender(\n () => {\n playFlip({ first, win, exclude: preview ? liftedHost : null });\n if (preview) {\n if (liftedHost.isConnected && win) {\n const r = liftedHost.getBoundingClientRect();\n preview.settle(r.left, r.top, win);\n } else {\n preview.destroy();\n }\n }\n },\n { injector: this.#injector },\n );\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n DOCUMENT,\n ElementRef,\n inject,\n InjectionToken,\n Injector,\n input,\n output,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nimport {\n Collection,\n firstEnabledHost,\n registerHandle,\n buildDragSlots,\n indexOfSlot,\n stepSlot,\n resolveDropTarget,\n type DropContainerGeometry,\n type DragPreview,\n injectPrefersReducedMotion,\n type ListNavigationAction,\n moveIndex,\n type WritingDirection,\n LiveAnnouncer,\n reconcileRovingActive,\n RovingTabindex,\n injectTextDirection,\n createAutoScroller,\n type AutoScroller,\n PreviewController,\n} from 'forty-cdk/core';\nimport {\n FOR_DRAG_DROP_CONTEXT,\n type ForDragDropEvent,\n type ForDraggableHandle,\n type ForDropListContext,\n} from './drag-drop-context';\nimport { FOR_DRAG_DROP_DEFAULTS } from './drag-drop-defaults';\nimport { FOR_DROP_LIST_GROUP } from './drop-list-group';\nimport { PlaceholderSorter } from './placeholder-sorter';\nimport { ReorderAnimator } from './reorder-animator';\n\n/**\n * Optional DI seam overriding the fallback `orientation` of every `[forDropList]` in scope.\n * `ForDropList`'s `orientation` input falls back to this token's value (`'vertical'` when the\n * token is not provided); a consumer `orientation` binding always wins over it. Wrappers\n * compose a horizontal list without leaking `orientation=\"horizontal\"` boilerplate into the\n * consumer's template — `ForTableColumnReorder` provides `'horizontal'` so column reordering\n * resolves along the row axis out of the box.\n */\nexport const FOR_DROP_LIST_DEFAULT_ORIENTATION = new InjectionToken<\n 'horizontal' | 'vertical' | 'mixed'\n>('FOR_DROP_LIST_DEFAULT_ORIENTATION');\n\n/**\n * Root directive of the drag-drop primitive. Apply on any container element to\n * create a reorderable list. Items inside are declared with `[forDraggable]`.\n *\n * Supports both keyboard dragging and pointer (mouse / touch / pen) dragging.\n */\n@Directive({\n selector: '[forDropList]',\n exportAs: 'forDropList',\n host: {\n '[attr.data-orientation]': 'orientation()',\n '[attr.dir]': 'dir()',\n '[attr.data-disabled]': \"effectiveDisabled() ? '' : null\",\n '[attr.data-dragging]': \"isDragging() ? '' : null\",\n '[attr.data-drag-over]': \"dragOverIndex() !== null ? '' : null\",\n },\n providers: [{ provide: FOR_DRAG_DROP_CONTEXT, useExisting: ForDropList }],\n})\nexport class ForDropList implements ForDropListContext {\n readonly #hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly #defaults = inject(FOR_DRAG_DROP_DEFAULTS);\n readonly #announcer = inject(LiveAnnouncer);\n readonly #group = inject(FOR_DROP_LIST_GROUP, { optional: true });\n readonly #document = inject(DOCUMENT);\n readonly #isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n readonly #destroyRef = inject(DestroyRef);\n readonly #injector = inject(Injector);\n readonly #prefersReducedMotion = injectPrefersReducedMotion();\n readonly #defaultOrientation =\n inject(FOR_DROP_LIST_DEFAULT_ORIENTATION, { optional: true }) ?? 'vertical';\n\n /**\n * Layout orientation of the list. Affects which arrow keys move focus and the lifted item, and\n * how a pointer drag resolves the live drop index. Defaults to `'vertical'`, or to\n * `FOR_DROP_LIST_DEFAULT_ORIENTATION` when an in-scope provider sets it (e.g.\n * `ForTableColumnReorder` defaults it to `'horizontal'`).\n *\n * `'mixed'` is for wrapping grids (`flex-wrap` / CSS grid) of uniformly-sized items: the drop\n * index is resolved in 2D so an item flowing across rows lands in the slot under the pointer's\n * row and column, and every arrow key steps the lifted item linearly in DOM order. A `'mixed'`\n * list that happens to render as a single row or single column resolves identically to\n * `'horizontal'` / `'vertical'`.\n */\n readonly orientation = input<'horizontal' | 'vertical' | 'mixed'>(this.#defaultOrientation);\n\n /**\n * Writing direction. When unset (default `null`), the inherited ambient direction is\n * resolved from the nearest ancestor carrying a `dir` attribute (or `<html dir>`),\n * defaulting to `'ltr'`.\n */\n readonly _dirInput = input<WritingDirection | null>(null, { alias: 'dir' });\n readonly dir = injectTextDirection(this._dirInput);\n\n /** When true, the entire list and all its items are disabled. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Other lists this one can transfer items into. Union'd with any `[forDropListGroup]`\n * members. Disabled lists are excluded from the effective connected set.\n */\n readonly connectedTo = input<readonly ForDropListContext[]>([]);\n\n /**\n * When true (the default), a pointer drag that nears the edge of the nearest scrollable\n * container (the list, a scrollable ancestor, or the viewport) auto-scrolls it toward that\n * edge so off-screen drop targets become reachable. Set `false` to opt out. Edge size and\n * max speed are configured via `provideForDragDropDefaults`. Keyboard dragging is unaffected.\n */\n readonly autoScroll = input(true, { transform: booleanAttribute });\n\n /**\n * When true, the `[forDragPlaceholder]` follows the live resolved drop index during a\n * **pointer** drag — within this list and across connected lists — so siblings part to\n * reveal where the item will land. When false (the default), the placeholder stays in the\n * dragged item's source slot (the #806 behaviour). Has no effect without a\n * `[forDragPlaceholder]` template, and none on keyboard dragging.\n *\n * A `dragDisabled` sibling acts as a hard fence: the placeholder stops at the first\n * pinned item instead of travelling past it. This is purely visual — the committed drop\n * index emitted by `dragDrop` is resolved separately and unaffected.\n */\n readonly liveSort = input(false, { transform: booleanAttribute });\n\n /**\n * When true, a committed drop (keyboard or pointer) animates: displaced sibling items\n * transition from their old positions to their new ones (FLIP), and — on a pointer drag — the\n * floating preview settles into the final slot before it is removed. Opt-in and default off.\n * Duration / easing are styled by the consumer via CSS on the published hooks\n * (`[data-drag-animating]` on items, `[data-settling]` on the preview); the library imposes\n * none. Fully skipped under `prefers-reduced-motion: reduce` (teardown stays instant).\n */\n readonly animateReorder = input(false, { transform: booleanAttribute });\n\n /**\n * Confine the pointer-drag preview within a boundary during a pointer drag. Accepts an\n * `HTMLElement`, or a selector string resolved via `closest()` from the list host. `null`\n * (the default) leaves the preview unbounded. Affects the visual preview only — the resolved\n * drop index is unchanged. Has no effect on keyboard dragging (no floating preview).\n */\n readonly boundary = input<HTMLElement | string | null>(null);\n\n /**\n * Constrain pointer-drag preview movement to one axis. `'x'` keeps the preview at its lift-time\n * `y` (horizontal movement); `'y'` keeps it at its lift-time `x` (vertical movement). `null`\n * (the default) is free movement. Independent of `orientation` (which drives the drop index);\n * this is a purely visual constraint, and has no effect on keyboard dragging.\n */\n readonly lockAxis = input<'x' | 'y' | null>(null);\n\n /**\n * Emitted by the **source** list when a drop commits (keyboard or pointer) — whether\n * the item stays in this list (reorder) or moves to a connected list (transfer). Apply\n * `moveItemInArray` or `transferArrayItem` to your data signal inside the handler.\n */\n readonly dragDrop = output<ForDragDropEvent>();\n\n readonly host = this.#hostRef.nativeElement;\n\n /** Effective disabled — the list's own `disabled` input (fieldset wiring deferred to v2). */\n readonly effectiveDisabled = computed(() => this.disabled());\n\n readonly roving = new RovingTabindex();\n readonly #items = new Collection<ForDraggableHandle>();\n readonly items = this.#items.items;\n\n readonly #liftedHost = signal<HTMLElement | null>(null);\n readonly #flatIndex = signal(0);\n readonly #dragOver = signal<number | null>(null);\n\n #previewController: PreviewController | null = null;\n #sorter: PlaceholderSorter | null = null;\n #autoScroller: AutoScroller | null = null;\n #lastPoint: { x: number; y: number } | null = null;\n\n /** Insertion index this list is the current drop target at, else `null`. */\n readonly dragOverIndex = this.#dragOver.asReadonly();\n\n /** `true` while a drag originating from this list is in progress. */\n readonly isDragging = computed(() => this.#liftedHost() !== null);\n\n constructor() {\n reconcileRovingActive(this.roving, this.#items.items);\n const group = this.#group;\n if (group) {\n registerHandle(\n this as ForDropListContext,\n (ctx) => group.register(ctx),\n (ctx) => group.unregister(ctx),\n );\n }\n if (this.#isBrowser) {\n this.#autoScroller = createAutoScroller({\n host: this.host,\n win: this.#document.defaultView,\n edgeSize: this.#defaults.autoScrollEdgeSize,\n maxSpeed: this.#defaults.autoScrollMaxSpeed,\n onFrame: () => this.#onAutoScrollFrame(),\n });\n this.#destroyRef.onDestroy(() => this.#autoScroller?.stop());\n }\n }\n\n registerItem(handle: ForDraggableHandle): void {\n this.#items.register(handle);\n }\n\n unregisterItem(handle: ForDraggableHandle): void {\n this.#items.unregister(handle);\n this.roving.unregister(handle.host);\n }\n\n itemTabindex(el: HTMLElement): -1 | 0 | null {\n return this.roving.hasActive() ? this.roving.tabindexFor(el) : null;\n }\n\n isFirstFocusableItem(el: HTMLElement): boolean {\n return firstEnabledHost(this.#items.items()) === el;\n }\n\n isItemHighlighted(el: HTMLElement): boolean {\n return this.roving.active() === el;\n }\n\n setActiveItem(el: HTMLElement): void {\n this.roving.setActive(el);\n }\n\n navigate(el: HTMLElement, action: ListNavigationAction): void {\n if (this.effectiveDisabled()) {\n return;\n }\n const items = this.#items.items();\n if (items.length === 0) {\n return;\n }\n const currentIndex = items.findIndex((h) => h.host === el);\n const next = moveIndex(currentIndex < 0 ? 0 : currentIndex, items.length, action, {\n loop: false,\n isDisabled: (i) => items[i]!.disabled(),\n });\n if (next === null) {\n return;\n }\n items[next]?.host.focus();\n }\n\n #beginLift(el: HTMLElement): number {\n if (this.effectiveDisabled() || this.#liftedHost() !== null) {\n return -1;\n }\n const items = this.#items.items();\n const handle = items.find((h) => h.host === el);\n if (!handle || handle.disabled()) {\n return -1;\n }\n const from = this.#items.indexOfHost(el);\n if (from < 0) {\n return -1;\n }\n const connected = this.#effectiveConnected();\n const slots = buildDragSlots(\n items.length,\n connected.map((c) => c.items().length),\n );\n const flatIndex = indexOfSlot(slots, 0, from);\n this.#liftedHost.set(el);\n this.#flatIndex.set(flatIndex < 0 ? 0 : flatIndex);\n this.#dragOver.set(from);\n const label = (el.textContent ?? '').trim();\n this.#announcer.announce(\n this.#defaults.announceLift(label, from + 1, items.length),\n 'assertive',\n );\n return from;\n }\n\n lift(el: HTMLElement): number {\n return this.#beginLift(el);\n }\n\n pointerLift(\n el: HTMLElement,\n point: { x: number; y: number },\n preview?: DragPreview | { moveTo(x: number, y: number): void; destroy(): void } | null,\n ): number {\n const from = this.#beginLift(el);\n if (from < 0) {\n return -1;\n }\n if (this.#isBrowser) {\n this.#previewController = new PreviewController({\n source: el,\n point,\n preview,\n doc: this.#document,\n boundary: this.#resolveBoundary(),\n lockAxis: this.lockAxis,\n });\n if (this.liveSort()) {\n this.#sorter = new PlaceholderSorter({\n source: this,\n lifted: el,\n doc: this.#document,\n sourceItems: this.#items.items,\n originIndex: () => this.#items.indexOfHost(el),\n });\n }\n }\n return from;\n }\n\n pointerMove(point: { x: number; y: number }): void {\n const lifted = this.#liftedHost();\n if (lifted === null || !this.#isBrowser) {\n return;\n }\n this.#lastPoint = point;\n this.#resolveDrop(point, lifted);\n if (this.autoScroll()) {\n this.#autoScroller?.update(point);\n } else {\n this.#autoScroller?.stop();\n }\n }\n\n #resolveDrop(point: { x: number; y: number }, lifted: HTMLElement): void {\n const connected = this.#effectiveConnected();\n const containers = [this as ForDropListContext, ...connected];\n const geoms: DropContainerGeometry[] = containers.map((ctx) => ({\n rect: ctx.host.getBoundingClientRect(),\n itemRects: ctx\n .items()\n .filter((h) => h.host !== lifted)\n .map((h) => h.host.getBoundingClientRect()),\n }));\n const target = resolveDropTarget(point, geoms, this.orientation(), this.dir());\n this.#previewController?.moveTo(point);\n if (!target) {\n return;\n }\n const slots = buildDragSlots(\n this.#items.items().length,\n connected.map((c) => c.items().length),\n );\n const flat = indexOfSlot(slots, target.containerIndex, target.index);\n if (flat < 0) {\n return;\n }\n containers.forEach((ctx, i) =>\n ctx.setDragOver(i === target.containerIndex ? target.index : null),\n );\n const changed = flat !== this.#flatIndex();\n this.#flatIndex.set(flat);\n if (changed) {\n const targetCtx = containers[target.containerIndex]!;\n this.#sorter?.onTargetChange(targetCtx, target.index);\n const label = (lifted.textContent ?? '').trim();\n this.#announcer.announce(\n this.#defaults.announceMove(label, target.index + 1, targetCtx.items().length),\n 'polite',\n );\n }\n }\n\n #resolveBoundary(): HTMLElement | null {\n const boundary = this.boundary();\n if (boundary === null) {\n return null;\n }\n return typeof boundary === 'string' ? this.host.closest<HTMLElement>(boundary) : boundary;\n }\n\n #onAutoScrollFrame(): void {\n const lifted = this.#liftedHost();\n const point = this.#lastPoint;\n if (lifted === null || point === null) {\n return;\n }\n this.#resolveDrop(point, lifted);\n }\n\n isLifted(el: HTMLElement): boolean {\n return this.#liftedHost() === el;\n }\n\n moveLifted(action: ListNavigationAction): void {\n const liftedHost = this.#liftedHost();\n if (liftedHost === null) {\n return;\n }\n const delta: 1 | -1 = action === 'next' || action === 'last' ? 1 : -1;\n const connected = this.#effectiveConnected();\n const slots = buildDragSlots(\n this.#items.items().length,\n connected.map((c) => c.items().length),\n );\n const current = this.#flatIndex();\n const next = stepSlot(slots, current, delta);\n if (next === current) {\n return;\n }\n const prevSlot = slots[current];\n const nextSlot = slots[next];\n if (!prevSlot || !nextSlot) {\n return;\n }\n const prevTarget =\n prevSlot.containerIndex === 0 ? this : connected[prevSlot.containerIndex - 1];\n const nextTarget =\n nextSlot.containerIndex === 0 ? this : connected[nextSlot.containerIndex - 1];\n if (prevTarget && prevTarget !== nextTarget) {\n prevTarget.setDragOver(null);\n }\n if (nextTarget) {\n nextTarget.setDragOver(nextSlot.index);\n }\n this.#flatIndex.set(next);\n if (nextTarget) {\n const targetItems = nextTarget.items();\n const label = (liftedHost.textContent ?? '').trim();\n this.#announcer.announce(\n this.#defaults.announceMove(label, nextSlot.index + 1, targetItems.length),\n 'polite',\n );\n }\n }\n\n drop(): void {\n const liftedHost = this.#liftedHost();\n if (liftedHost === null) {\n return;\n }\n const connected = this.#effectiveConnected();\n const items = this.#items.items();\n const slots = buildDragSlots(\n items.length,\n connected.map((c) => c.items().length),\n );\n const slot = slots[this.#flatIndex()];\n if (!slot) {\n this.#teardown(connected);\n return;\n }\n const previousIndex = this.#items.indexOfHost(liftedHost);\n const currentIndex = slot.index;\n const container: ForDropListContext =\n slot.containerIndex === 0 ? this : (connected[slot.containerIndex - 1] ?? this);\n const handle = items.find((h) => h.host === liftedHost);\n const item = handle ? handle.data() : undefined;\n const label = (liftedHost.textContent ?? '').trim();\n const targetItems = container.items();\n\n const moved = !(previousIndex === currentIndex && container === (this as ForDropListContext));\n const animate =\n this.animateReorder() && this.#isBrowser && !this.#prefersReducedMotion() && moved;\n const preview = this.#previewController?.preview ?? null;\n const animator = animate\n ? new ReorderAnimator({\n containers: [this, ...connected],\n injector: this.#injector,\n win: this.#document.defaultView,\n })\n : null;\n animator?.captureFirst();\n\n this.dragDrop.emit({\n item,\n previousContainer: this,\n container,\n previousIndex,\n currentIndex,\n });\n this.#announcer.announce(\n this.#defaults.announceDrop(label, currentIndex + 1, targetItems.length),\n 'assertive',\n );\n\n if (animator) {\n animator.schedule(liftedHost, preview);\n this.#teardown(connected, true);\n } else {\n this.#teardown(connected);\n }\n }\n\n cancel(): void {\n const liftedHost = this.#liftedHost();\n if (liftedHost === null) {\n return;\n }\n const label = (liftedHost.textContent ?? '').trim();\n this.#announcer.announce(this.#defaults.announceCancel(label), 'assertive');\n this.#teardown(this.#effectiveConnected());\n }\n\n setDragOver(index: number | null): void {\n this.#dragOver.set(index);\n }\n\n setLivePlaceholder(nodes: readonly Node[] | null): void {\n this.#sorter?.setNodes(nodes);\n }\n\n readonly #effectiveConnected = computed((): readonly ForDropListContext[] => {\n const explicit = this.connectedTo();\n const groupMembers = this.#group?.members() ?? [];\n const seen = new Set<ForDropListContext>();\n seen.add(this);\n const result: ForDropListContext[] = [];\n for (const ctx of [...explicit, ...groupMembers]) {\n if (!seen.has(ctx) && !ctx.disabled()) {\n seen.add(ctx);\n result.push(ctx);\n }\n }\n return result;\n });\n\n #teardown(connected: readonly ForDropListContext[], keepPreview = false): void {\n this.#autoScroller?.stop();\n this.#lastPoint = null;\n this.#dragOver.set(null);\n for (const ctx of connected) {\n ctx.setDragOver(null);\n }\n this.#liftedHost.set(null);\n this.#flatIndex.set(0);\n if (!keepPreview) {\n this.#previewController?.destroy();\n }\n this.#previewController = null;\n this.#sorter = null;\n }\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\nimport { injectDraggableContext } from './drag-drop-context';\n\n/**\n * Optional custom drag preview. Apply `[forDragPreview]` on an `<ng-template>` inside a\n * `[forDraggable]`; its content renders as the floating element that follows the pointer during a\n * pointer drag, replacing the default cloned preview. Has no effect on keyboard dragging.\n */\n@Directive({\n selector: 'ng-template[forDragPreview]',\n exportAs: 'forDragPreview',\n})\nexport class ForDragPreview {\n /** The template rendered as the floating pointer-drag preview. */\n readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n\n constructor() {\n injectDraggableContext('ForDragPreview');\n }\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\nimport { injectDraggableContext } from './drag-drop-context';\n\n/**\n * Optional custom drag placeholder. Apply `[forDragPlaceholder]` on an `<ng-template>` inside a\n * `[forDraggable]`; during a **pointer** drag the dragged item's host is hidden and this template\n * renders in its slot, preserving the gap. Keyboard dragging keeps the default (the lifted item\n * stays in place, reflecting `data-dragging`).\n */\n@Directive({\n selector: 'ng-template[forDragPlaceholder]',\n exportAs: 'forDragPlaceholder',\n})\nexport class ForDragPlaceholder {\n /** The template rendered in the dragged item's slot during a pointer drag. */\n readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n\n constructor() {\n injectDraggableContext('ForDragPlaceholder');\n }\n}\n","import {\n booleanAttribute,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n DOCUMENT,\n ElementRef,\n type EmbeddedViewRef,\n inject,\n input,\n output,\n PLATFORM_ID,\n signal,\n ViewContainerRef,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nimport {\n registerHandle,\n resolveListNavigation,\n createPointerDragSession,\n type PointerDragSession,\n createTemplatePreview,\n type DragPreview,\n} from 'forty-cdk/core';\nimport {\n FOR_DRAGGABLE_CONTEXT,\n injectDropListContext,\n type ForDragEndEvent,\n type ForDragStartEvent,\n type ForDraggableContext,\n type ForDraggableHandle,\n} from './drag-drop-context';\nimport { FOR_DRAG_DROP_DEFAULTS } from './drag-drop-defaults';\nimport { ForDragPreview } from './drag-preview';\nimport { ForDragPlaceholder } from './drag-placeholder';\n\nconst POINTER_ARM_THRESHOLD_PX = 5;\n\n/**\n * Marks an element as a draggable item inside a `[forDropList]`. Handles\n * keyboard and pointer interaction for lift, move, drop, and cancel.\n */\n@Directive({\n selector: '[forDraggable]',\n exportAs: 'forDraggable',\n providers: [{ provide: FOR_DRAGGABLE_CONTEXT, useExisting: ForDraggable }],\n host: {\n '[attr.tabindex]': 'tabindex()',\n '[attr.aria-roledescription]': 'roleDescription() || null',\n '[attr.aria-disabled]': \"effectiveDisabled() ? 'true' : null\",\n '[attr.data-dragging]': \"lifted() ? '' : null\",\n '[attr.data-disabled]': \"effectiveDisabled() ? '' : null\",\n '[style.touch-action]': 'touchAction()',\n '[style.display]': \"placeholderActive() ? 'none' : null\",\n '(dragstart)': 'onNativeDragStart($event)',\n '(keydown)': 'onKeyDown($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n },\n})\nexport class ForDraggable implements ForDraggableContext {\n readonly #list = injectDropListContext('ForDraggable');\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly #defaults = inject(FOR_DRAG_DROP_DEFAULTS);\n readonly #destroyRef = inject(DestroyRef);\n readonly #isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n readonly #document = inject(DOCUMENT);\n readonly #vcr = inject(ViewContainerRef);\n protected readonly previewTpl = contentChild(ForDragPreview);\n protected readonly placeholderTpl = contentChild(ForDragPlaceholder);\n #placeholderView: EmbeddedViewRef<unknown> | null = null;\n\n /** `true` while a pointer-drag placeholder template occupies this item's slot (host hidden). */\n protected readonly placeholderActive = signal(false);\n\n readonly #handles = new Set<HTMLElement>();\n #pointerDragging = false;\n #pointerSession: PointerDragSession | null = null;\n\n /** Data payload handed back in the `dragDrop` event when this item is dropped. */\n readonly dragData = input.required<unknown>();\n\n /**\n * When true, this item cannot be lifted. The item remains focusable. It also acts as a\n * hard fence for the `liveSort` placeholder: a sibling being dragged cannot move its\n * placeholder across a pinned item (the committed drop index is unaffected).\n */\n readonly dragDisabled = input(false, { transform: booleanAttribute });\n\n /** Emitted when a drag (keyboard or pointer) starts from this item. */\n readonly dragStart = output<ForDragStartEvent>();\n\n /** Emitted when a drag originating from this item ends (committed or cancelled). */\n readonly dragEnd = output<ForDragEndEvent>();\n\n readonly effectiveDisabled = computed(() => this.dragDisabled() || this.#list.disabled());\n\n /** `true` when this item is the currently lifted draggable. Reflected as `data-dragging`. */\n readonly lifted = computed(() => this.#list.isLifted(this.#host.nativeElement));\n\n /** `true` when this item is the roving-tabindex active candidate. */\n protected readonly highlighted = computed(() =>\n this.#list.isItemHighlighted(this.#host.nativeElement),\n );\n\n /** `aria-roledescription` value from defaults. */\n protected readonly roleDescription = computed(() => this.#defaults.itemRoleDescription);\n\n protected readonly tabindex = computed<-1 | 0>(() => {\n if (this.effectiveDisabled()) {\n return -1;\n }\n const rovingTabindex = this.#list.itemTabindex(this.#host.nativeElement);\n if (rovingTabindex !== null) {\n return rovingTabindex;\n }\n return this.#list.isFirstFocusableItem(this.#host.nativeElement) ? 0 : -1;\n });\n\n protected readonly touchAction = computed<'none' | null>(() =>\n !this.effectiveDisabled() && this.#handles.size === 0 ? 'none' : null,\n );\n\n constructor() {\n const handle: ForDraggableHandle = {\n host: this.#host.nativeElement,\n data: this.dragData,\n disabled: this.effectiveDisabled,\n };\n registerHandle(\n handle,\n (h) => this.#list.registerItem(h),\n (h) => this.#list.unregisterItem(h),\n );\n\n if (this.#isBrowser) {\n this.#pointerSession = createPointerDragSession({\n host: this.#host.nativeElement,\n document: this.#document,\n armThreshold: POINTER_ARM_THRESHOLD_PX,\n cancelOnEscape: true,\n capturePointer: true,\n canStart: (event) => this.#canStartPointer(event),\n onLift: (event) => this.#onPointerLift(event),\n onMove: (event) => this.#onPointerMove(event),\n onCommit: () => this.#onPointerCommit(),\n onCancel: () => this.#onPointerCancel(),\n });\n this.#destroyRef.onDestroy(() => this.#pointerSession?.destroy());\n this.#destroyRef.onDestroy(() => this.#clearPlaceholder());\n }\n }\n\n registerHandle(el: HTMLElement): void {\n this.#handles.add(el);\n }\n\n unregisterHandle(el: HTMLElement): void {\n this.#handles.delete(el);\n }\n\n #canStartPointer(event: PointerEvent): boolean {\n if (this.effectiveDisabled()) {\n return false;\n }\n if (event.pointerType === 'mouse' && event.button !== 0) {\n return false;\n }\n if (this.#handles.size === 0) {\n return true;\n }\n const target = event.target as Node | null;\n return target !== null && [...this.#handles].some((h) => h.contains(target));\n }\n\n #onPointerLift(event: PointerEvent): boolean {\n const preview = this.#buildPreview();\n const index = this.#list.pointerLift(\n this.#host.nativeElement,\n { x: event.clientX, y: event.clientY },\n preview,\n );\n if (index < 0) {\n preview?.destroy();\n return false;\n }\n this.#renderPlaceholder();\n this.#pointerDragging = true;\n this.dragStart.emit({ source: this.#list, index });\n return true;\n }\n\n #onPointerMove(event: PointerEvent): void {\n this.#list.pointerMove({ x: event.clientX, y: event.clientY });\n }\n\n #onPointerCommit(): void {\n this.#pointerDragging = false;\n this.#clearPlaceholder();\n this.#list.drop();\n this.dragEnd.emit({ dropped: true });\n }\n\n #onPointerCancel(): void {\n if (!this.#pointerDragging) {\n return;\n }\n this.#pointerDragging = false;\n this.#clearPlaceholder();\n this.#list.cancel();\n this.dragEnd.emit({ dropped: false });\n }\n\n #buildPreview(): DragPreview | null {\n const preview = this.previewTpl();\n if (!preview || !this.#isBrowser) {\n return null;\n }\n const viewRef = this.#vcr.createEmbeddedView(preview.templateRef);\n viewRef.detectChanges();\n return createTemplatePreview(viewRef.rootNodes, this.#document, () => viewRef.destroy());\n }\n\n #renderPlaceholder(): void {\n const placeholder = this.placeholderTpl();\n if (!placeholder || !this.#isBrowser) {\n return;\n }\n this.#placeholderView = this.#vcr.createEmbeddedView(placeholder.templateRef);\n this.#placeholderView.detectChanges();\n this.placeholderActive.set(true);\n this.#list.setLivePlaceholder(this.#placeholderView.rootNodes);\n }\n\n #clearPlaceholder(): void {\n this.#list.setLivePlaceholder(null);\n this.placeholderActive.set(false);\n this.#placeholderView?.destroy();\n this.#placeholderView = null;\n }\n\n protected onNativeDragStart(event: Event): void {\n if (this.#pointerDragging) {\n event.preventDefault();\n }\n }\n\n protected onFocus(): void {\n if (!this.effectiveDisabled()) {\n this.#list.setActiveItem(this.#host.nativeElement);\n }\n }\n\n protected onBlur(): void {\n if (this.lifted() && !this.#pointerDragging) {\n this.#list.cancel();\n this.dragEnd.emit({ dropped: false });\n }\n }\n\n protected onKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled() || this.#pointerDragging) {\n return;\n }\n const host = this.#host.nativeElement;\n if (this.lifted()) {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.#list.drop();\n this.dragEnd.emit({ dropped: true });\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n this.#list.cancel();\n this.dragEnd.emit({ dropped: false });\n return;\n }\n const action = resolveListNavigation(event, {\n orientation: this.#list.orientation(),\n dir: this.#list.dir(),\n });\n if (action) {\n event.preventDefault();\n this.#list.moveLifted(action);\n }\n return;\n }\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n const index = this.#list.lift(host);\n if (index >= 0) {\n this.dragStart.emit({ source: this.#list, index });\n }\n return;\n }\n const action = resolveListNavigation(event, {\n orientation: this.#list.orientation(),\n dir: this.#list.dir(),\n });\n if (action) {\n event.preventDefault();\n this.#list.navigate(host, action);\n }\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n DOCUMENT,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nimport {\n clampPreviewPosition,\n createPointerDragSession,\n type PointerDragSession,\n} from 'forty-cdk/core';\nimport { FOR_DRAGGABLE_CONTEXT, type ForDraggableContext } from './drag-drop-context';\n\nconst POINTER_ARM_THRESHOLD_PX = 5;\n\ninterface Point {\n readonly x: number;\n readonly y: number;\n}\n\ninterface LiftSnapshot {\n readonly point: Point;\n readonly position: Point;\n readonly topLeft: Point;\n readonly natural: Point;\n readonly size: { readonly width: number; readonly height: number };\n}\n\n/**\n * Standalone free-drag directive: repositions its host (or a resolved `rootElement`) by pointer\n * drag via a CSS `transform: translate(...)`, with **no** `[forDropList]` dependency. Unlike\n * `[forDraggable]`, it never commits a reorder — it only moves an arbitrary element around,\n * optionally confined to a `boundary` and locked to one axis. Composes the shared\n * `createPointerDragSession` transport and accepts `[forDragHandle]` children.\n *\n * Pointer-only: there is no WAI-ARIA APG pattern for \"freely reposition an element\", so this is\n * a documented headless exception (see `.claude/rules/conventions.md`). It owns no role or ARIA\n * state and must not destroy the moved element's semantics — the consumer keeps the moved\n * element operable at its default position (e.g. a repositionable dialog stays usable by\n * keyboard); dragging is a pointer convenience, not the only way to use it.\n */\n@Directive({\n selector: '[forFreeDrag]',\n exportAs: 'forFreeDrag',\n providers: [{ provide: FOR_DRAGGABLE_CONTEXT, useExisting: ForFreeDrag }],\n host: {\n '[attr.data-dragging]': \"dragging() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[style.touch-action]': 'touchAction()',\n },\n})\nexport class ForFreeDrag implements ForDraggableContext {\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly #document = inject(DOCUMENT);\n readonly #destroyRef = inject(DestroyRef);\n readonly #isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n readonly #handles = new Set<HTMLElement>();\n readonly #lift = signal<LiftSnapshot | null>(null);\n #pointerSession: PointerDragSession | null = null;\n\n /** When true, the element can't be dragged (it stays focusable; the transform doesn't change). */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * The element actually moved: an `HTMLElement`, or a selector resolved via `closest()` from the\n * host. `null` (the default) moves the host itself. Mirrors CDK's `cdkDragRootElement` — drag a\n * child handle, move an ancestor (e.g. drag a whole dialog by its header).\n */\n readonly rootElement = input<HTMLElement | string | null>(null);\n\n /**\n * Confine movement within an `HTMLElement`, a `closest()` selector resolved from the host, or\n * `null` (the default) for unbounded movement. Unlike `[forDropList]`'s boundary (which clamps a\n * floating clone), this clamps the **real moved element** so its box stays fully inside.\n */\n readonly boundary = input<HTMLElement | string | null>(null);\n\n /**\n * Constrain movement to one axis. `'x'` pins the element at its lift-time `y` (horizontal-only);\n * `'y'` pins it at its lift-time `x` (vertical-only). `null` (the default) is free.\n */\n readonly lockAxis = input<'x' | 'y' | null>(null);\n\n /** Two-way translate offset (px) from the element's natural position. Controllable / restorable. */\n readonly position = model<{ x: number; y: number }>({ x: 0, y: 0 });\n\n /** Emitted when a pointer drag starts, with the lift-time position. */\n readonly dragStart = output<{ x: number; y: number }>();\n\n /**\n * Emitted on every armed move with the live position. (Non-native verb — `dragMove`, not\n * `drag` / `dragMoved` — so `@angular-eslint/no-output-native` stays clear.)\n */\n readonly dragMove = output<{ x: number; y: number }>();\n\n /** Emitted when the drag ends, with the final position. */\n readonly dragEnd = output<{ x: number; y: number }>();\n\n /** True while a pointer drag is armed. Reflected as `data-dragging`. */\n readonly dragging = computed(() => this.#lift() !== null);\n\n protected readonly touchAction = computed<'none' | null>(() =>\n !this.disabled() && this.#handles.size === 0 ? 'none' : null,\n );\n\n constructor() {\n if (this.#isBrowser) {\n effect(() => {\n const { x, y } = this.position();\n const el = this.#resolvedRoot();\n el.style.transform = x === 0 && y === 0 ? '' : `translate(${x}px, ${y}px)`;\n });\n this.#pointerSession = createPointerDragSession({\n host: this.#host.nativeElement,\n document: this.#document,\n armThreshold: POINTER_ARM_THRESHOLD_PX,\n cancelOnEscape: true,\n capturePointer: true,\n canStart: (event) => this.#canStartPointer(event),\n onLift: (event) => this.#onLift(event),\n onMove: (event) => this.#onMove(event),\n onCommit: () => this.#onCommit(),\n onCancel: () => this.#onCancel(),\n });\n this.#destroyRef.onDestroy(() => this.#pointerSession?.destroy());\n }\n }\n\n registerHandle(el: HTMLElement): void {\n this.#handles.add(el);\n }\n\n unregisterHandle(el: HTMLElement): void {\n this.#handles.delete(el);\n }\n\n readonly #resolvedRoot = computed<HTMLElement>(() => {\n const root = this.rootElement();\n const host = this.#host.nativeElement;\n if (root === null) {\n return host;\n }\n return typeof root === 'string' ? (host.closest<HTMLElement>(root) ?? host) : root;\n });\n\n #resolveBoundary(): HTMLElement | null {\n const boundary = this.boundary();\n if (boundary === null) {\n return null;\n }\n return typeof boundary === 'string'\n ? this.#host.nativeElement.closest<HTMLElement>(boundary)\n : boundary;\n }\n\n #canStartPointer(event: PointerEvent): boolean {\n if (this.disabled()) {\n return false;\n }\n if (event.pointerType === 'mouse' && event.button !== 0) {\n return false;\n }\n if (this.#handles.size === 0) {\n return true;\n }\n const target = event.target as Node | null;\n return target !== null && [...this.#handles].some((h) => h.contains(target));\n }\n\n #onLift(event: PointerEvent): boolean {\n const rect = this.#resolvedRoot().getBoundingClientRect();\n const position = this.position();\n this.#lift.set({\n point: { x: event.clientX, y: event.clientY },\n position,\n topLeft: { x: rect.left, y: rect.top },\n natural: { x: rect.left - position.x, y: rect.top - position.y },\n size: { width: rect.width, height: rect.height },\n });\n this.dragStart.emit(position);\n return true;\n }\n\n #onMove(event: PointerEvent): void {\n const lift = this.#lift();\n if (!lift) {\n return;\n }\n const desired = {\n x: lift.topLeft.x + (event.clientX - lift.point.x),\n y: lift.topLeft.y + (event.clientY - lift.point.y),\n };\n const boundaryRect = this.#resolveBoundary()?.getBoundingClientRect() ?? null;\n const clamped = clampPreviewPosition(\n desired,\n lift.size,\n boundaryRect,\n this.lockAxis(),\n lift.topLeft,\n );\n const next = { x: clamped.x - lift.natural.x, y: clamped.y - lift.natural.y };\n this.position.set(next);\n this.dragMove.emit(next);\n }\n\n #onCommit(): void {\n this.#lift.set(null);\n this.dragEnd.emit(this.position());\n }\n\n #onCancel(): void {\n const lift = this.#lift();\n if (lift) {\n this.position.set(lift.position);\n }\n this.#lift.set(null);\n this.dragEnd.emit(this.position());\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\nimport { registerHandle } from 'forty-cdk/core';\nimport { injectDraggableContext } from './drag-drop-context';\n\n/**\n * Optional drag handle inside a `[forDraggable]`. When at least one handle is present on an item, a pointer\n * drag may only start from within a handle (keyboard dragging is unaffected). Apply on a child element.\n */\n@Directive({\n selector: '[forDragHandle]',\n exportAs: 'forDragHandle',\n host: {\n '[style.touch-action]': \"'none'\",\n '[attr.data-drag-handle]': \"''\",\n },\n})\nexport class ForDragHandle {\n readonly #context = injectDraggableContext('ForDragHandle');\n readonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n registerHandle(\n this.#host.nativeElement,\n (el) => this.#context.registerHandle(el),\n (el) => this.#context.unregisterHandle(el),\n );\n }\n}\n","/**\n * Returns a copy of `array` with the item at `from` moved to `to`. Indices are clamped to\n * the array bounds; an out-of-range or no-op move returns a shallow copy unchanged.\n */\nexport function moveItemInArray<T>(array: readonly T[], from: number, to: number): T[] {\n const len = array.length;\n if (len === 0) {\n return [];\n }\n const clampedFrom = Math.max(0, Math.min(len - 1, from));\n const clampedTo = Math.max(0, Math.min(len - 1, to));\n const copy = [...array];\n if (clampedFrom === clampedTo) {\n return copy;\n }\n const [item] = copy.splice(clampedFrom, 1);\n copy.splice(clampedTo, 0, item!);\n return copy;\n}\n\n/**\n * Moves the item at `fromIndex` of `from` into `to` at `toIndex`, returning new arrays for\n * both. Does not mutate the inputs. Indices are clamped (`toIndex` may equal `to.length`,\n * i.e. append).\n */\nexport function transferArrayItem<T>(\n from: readonly T[],\n to: readonly T[],\n fromIndex: number,\n toIndex: number,\n): { from: T[]; to: T[] } {\n if (from.length === 0) {\n return { from: [], to: [...to] };\n }\n const clampedFrom = Math.max(0, Math.min(from.length - 1, fromIndex));\n const clampedTo = Math.max(0, Math.min(to.length, toIndex));\n const nextFrom = [...from];\n const [item] = nextFrom.splice(clampedFrom, 1);\n const nextTo = [...to];\n nextTo.splice(clampedTo, 0, item!);\n return { from: nextFrom, to: nextTo };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["POINTER_ARM_THRESHOLD_PX"],"mappings":"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"}