@foldkit/ui 0.112.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 (201) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +67 -0
  3. package/dist/anchor.d.ts +38 -0
  4. package/dist/anchor.d.ts.map +1 -0
  5. package/dist/anchor.js +142 -0
  6. package/dist/animation/index.d.ts +49 -0
  7. package/dist/animation/index.d.ts.map +1 -0
  8. package/dist/animation/index.js +75 -0
  9. package/dist/animation/public.d.ts +3 -0
  10. package/dist/animation/public.d.ts.map +1 -0
  11. package/dist/animation/public.js +1 -0
  12. package/dist/animation/schema.d.ts +43 -0
  13. package/dist/animation/schema.d.ts.map +1 -0
  14. package/dist/animation/schema.js +41 -0
  15. package/dist/animation/update.d.ts +24 -0
  16. package/dist/animation/update.d.ts.map +1 -0
  17. package/dist/animation/update.js +67 -0
  18. package/dist/button/index.d.ts +17 -0
  19. package/dist/button/index.d.ts.map +1 -0
  20. package/dist/button/index.js +22 -0
  21. package/dist/button/public.d.ts +3 -0
  22. package/dist/button/public.d.ts.map +1 -0
  23. package/dist/button/public.js +1 -0
  24. package/dist/calendar/index.d.ts +462 -0
  25. package/dist/calendar/index.d.ts.map +1 -0
  26. package/dist/calendar/index.js +825 -0
  27. package/dist/calendar/public.d.ts +3 -0
  28. package/dist/calendar/public.d.ts.map +1 -0
  29. package/dist/calendar/public.js +1 -0
  30. package/dist/checkbox/index.d.ts +119 -0
  31. package/dist/checkbox/index.d.ts.map +1 -0
  32. package/dist/checkbox/index.js +111 -0
  33. package/dist/checkbox/public.d.ts +3 -0
  34. package/dist/checkbox/public.d.ts.map +1 -0
  35. package/dist/checkbox/public.js +1 -0
  36. package/dist/combobox/multi.d.ts +183 -0
  37. package/dist/combobox/multi.d.ts.map +1 -0
  38. package/dist/combobox/multi.js +81 -0
  39. package/dist/combobox/multiPublic.d.ts +3 -0
  40. package/dist/combobox/multiPublic.d.ts.map +1 -0
  41. package/dist/combobox/multiPublic.js +1 -0
  42. package/dist/combobox/public.d.ts +7 -0
  43. package/dist/combobox/public.d.ts.map +1 -0
  44. package/dist/combobox/public.js +3 -0
  45. package/dist/combobox/shared.d.ts +423 -0
  46. package/dist/combobox/shared.d.ts.map +1 -0
  47. package/dist/combobox/shared.js +708 -0
  48. package/dist/combobox/single.d.ts +198 -0
  49. package/dist/combobox/single.d.ts.map +1 -0
  50. package/dist/combobox/single.js +106 -0
  51. package/dist/datePicker/index.d.ts +457 -0
  52. package/dist/datePicker/index.d.ts.map +1 -0
  53. package/dist/datePicker/index.js +318 -0
  54. package/dist/datePicker/public.d.ts +3 -0
  55. package/dist/datePicker/public.d.ts.map +1 -0
  56. package/dist/datePicker/public.js +1 -0
  57. package/dist/dialog/index.d.ts +160 -0
  58. package/dist/dialog/index.d.ts.map +1 -0
  59. package/dist/dialog/index.js +211 -0
  60. package/dist/dialog/public.d.ts +3 -0
  61. package/dist/dialog/public.d.ts.map +1 -0
  62. package/dist/dialog/public.js +1 -0
  63. package/dist/disclosure/index.d.ts +110 -0
  64. package/dist/disclosure/index.d.ts.map +1 -0
  65. package/dist/disclosure/index.js +111 -0
  66. package/dist/disclosure/public.d.ts +3 -0
  67. package/dist/disclosure/public.d.ts.map +1 -0
  68. package/dist/disclosure/public.js +1 -0
  69. package/dist/dragAndDrop/index.d.ts +540 -0
  70. package/dist/dragAndDrop/index.d.ts.map +1 -0
  71. package/dist/dragAndDrop/index.js +535 -0
  72. package/dist/dragAndDrop/public.d.ts +3 -0
  73. package/dist/dragAndDrop/public.d.ts.map +1 -0
  74. package/dist/dragAndDrop/public.js +1 -0
  75. package/dist/fieldset/index.d.ts +21 -0
  76. package/dist/fieldset/index.d.ts.map +1 -0
  77. package/dist/fieldset/index.js +25 -0
  78. package/dist/fieldset/public.d.ts +3 -0
  79. package/dist/fieldset/public.d.ts.map +1 -0
  80. package/dist/fieldset/public.js +1 -0
  81. package/dist/fileDrop/index.d.ts +109 -0
  82. package/dist/fileDrop/index.d.ts.map +1 -0
  83. package/dist/fileDrop/index.js +127 -0
  84. package/dist/fileDrop/public.d.ts +3 -0
  85. package/dist/fileDrop/public.d.ts.map +1 -0
  86. package/dist/fileDrop/public.js +1 -0
  87. package/dist/group.d.ts +8 -0
  88. package/dist/group.d.ts.map +1 -0
  89. package/dist/group.js +13 -0
  90. package/dist/index.d.ts +25 -0
  91. package/dist/index.d.ts.map +1 -0
  92. package/dist/index.js +24 -0
  93. package/dist/input/index.d.ts +26 -0
  94. package/dist/input/index.d.ts.map +1 -0
  95. package/dist/input/index.js +43 -0
  96. package/dist/input/public.d.ts +3 -0
  97. package/dist/input/public.d.ts.map +1 -0
  98. package/dist/input/public.js +1 -0
  99. package/dist/internal/optionExtensions.d.ts +6 -0
  100. package/dist/internal/optionExtensions.d.ts.map +1 -0
  101. package/dist/internal/optionExtensions.js +2 -0
  102. package/dist/keyboard.d.ts +6 -0
  103. package/dist/keyboard.d.ts.map +1 -0
  104. package/dist/keyboard.js +9 -0
  105. package/dist/listbox/multi.d.ts +189 -0
  106. package/dist/listbox/multi.d.ts.map +1 -0
  107. package/dist/listbox/multi.js +65 -0
  108. package/dist/listbox/multiPublic.d.ts +3 -0
  109. package/dist/listbox/multiPublic.d.ts.map +1 -0
  110. package/dist/listbox/multiPublic.js +1 -0
  111. package/dist/listbox/public.d.ts +7 -0
  112. package/dist/listbox/public.d.ts.map +1 -0
  113. package/dist/listbox/public.js +3 -0
  114. package/dist/listbox/shared.d.ts +432 -0
  115. package/dist/listbox/shared.d.ts.map +1 -0
  116. package/dist/listbox/shared.js +670 -0
  117. package/dist/listbox/single.d.ts +207 -0
  118. package/dist/listbox/single.d.ts.map +1 -0
  119. package/dist/listbox/single.js +73 -0
  120. package/dist/menu/index.d.ts +368 -0
  121. package/dist/menu/index.d.ts.map +1 -0
  122. package/dist/menu/index.js +682 -0
  123. package/dist/menu/public.d.ts +4 -0
  124. package/dist/menu/public.d.ts.map +1 -0
  125. package/dist/menu/public.js +1 -0
  126. package/dist/popover/index.d.ts +267 -0
  127. package/dist/popover/index.d.ts.map +1 -0
  128. package/dist/popover/index.js +346 -0
  129. package/dist/popover/public.d.ts +4 -0
  130. package/dist/popover/public.d.ts.map +1 -0
  131. package/dist/popover/public.js +1 -0
  132. package/dist/radioGroup/index.d.ts +169 -0
  133. package/dist/radioGroup/index.d.ts.map +1 -0
  134. package/dist/radioGroup/index.js +197 -0
  135. package/dist/radioGroup/public.d.ts +3 -0
  136. package/dist/radioGroup/public.d.ts.map +1 -0
  137. package/dist/radioGroup/public.js +1 -0
  138. package/dist/select/index.d.ts +24 -0
  139. package/dist/select/index.d.ts.map +1 -0
  140. package/dist/select/index.js +40 -0
  141. package/dist/select/public.d.ts +3 -0
  142. package/dist/select/public.d.ts.map +1 -0
  143. package/dist/select/public.js +1 -0
  144. package/dist/slider/index.d.ts +318 -0
  145. package/dist/slider/index.d.ts.map +1 -0
  146. package/dist/slider/index.js +337 -0
  147. package/dist/slider/public.d.ts +3 -0
  148. package/dist/slider/public.d.ts.map +1 -0
  149. package/dist/slider/public.js +1 -0
  150. package/dist/switch/index.d.ts +99 -0
  151. package/dist/switch/index.d.ts.map +1 -0
  152. package/dist/switch/index.js +107 -0
  153. package/dist/switch/public.d.ts +3 -0
  154. package/dist/switch/public.d.ts.map +1 -0
  155. package/dist/switch/public.js +1 -0
  156. package/dist/tabs/index.d.ts +155 -0
  157. package/dist/tabs/index.d.ts.map +1 -0
  158. package/dist/tabs/index.js +185 -0
  159. package/dist/tabs/public.d.ts +3 -0
  160. package/dist/tabs/public.d.ts.map +1 -0
  161. package/dist/tabs/public.js +1 -0
  162. package/dist/test/apps/disabledButton.d.ts +38 -0
  163. package/dist/test/apps/disabledButton.d.ts.map +1 -0
  164. package/dist/test/apps/disabledButton.js +71 -0
  165. package/dist/textarea/index.d.ts +26 -0
  166. package/dist/textarea/index.d.ts.map +1 -0
  167. package/dist/textarea/index.js +44 -0
  168. package/dist/textarea/public.d.ts +3 -0
  169. package/dist/textarea/public.d.ts.map +1 -0
  170. package/dist/textarea/public.js +1 -0
  171. package/dist/toast/index.d.ts +608 -0
  172. package/dist/toast/index.d.ts.map +1 -0
  173. package/dist/toast/index.js +146 -0
  174. package/dist/toast/public.d.ts +4 -0
  175. package/dist/toast/public.d.ts.map +1 -0
  176. package/dist/toast/public.js +1 -0
  177. package/dist/toast/schema.d.ts +154 -0
  178. package/dist/toast/schema.d.ts.map +1 -0
  179. package/dist/toast/schema.js +93 -0
  180. package/dist/toast/update.d.ts +510 -0
  181. package/dist/toast/update.d.ts.map +1 -0
  182. package/dist/toast/update.js +225 -0
  183. package/dist/tooltip/index.d.ts +170 -0
  184. package/dist/tooltip/index.d.ts.map +1 -0
  185. package/dist/tooltip/index.js +253 -0
  186. package/dist/tooltip/public.d.ts +4 -0
  187. package/dist/tooltip/public.d.ts.map +1 -0
  188. package/dist/tooltip/public.js +1 -0
  189. package/dist/typeahead.d.ts +4 -0
  190. package/dist/typeahead.d.ts.map +1 -0
  191. package/dist/typeahead.js +14 -0
  192. package/dist/virtualList/index.d.ts +203 -0
  193. package/dist/virtualList/index.d.ts.map +1 -0
  194. package/dist/virtualList/index.js +392 -0
  195. package/dist/virtualList/public.d.ts +3 -0
  196. package/dist/virtualList/public.d.ts.map +1 -0
  197. package/dist/virtualList/public.js +1 -0
  198. package/dist/vitest-setup.d.ts +2 -0
  199. package/dist/vitest-setup.d.ts.map +1 -0
  200. package/dist/vitest-setup.js +2 -0
  201. package/package.json +161 -0
@@ -0,0 +1,540 @@
1
+ import { Effect, Equivalence, Option, Schema as S, Stream } from 'effect';
2
+ import * as Command from 'foldkit/command';
3
+ import { type Attribute } from 'foldkit/html';
4
+ import * as Subscription from 'foldkit/subscription';
5
+ declare const DropTarget: S.Struct<{
6
+ readonly containerId: S.String;
7
+ readonly index: S.Number;
8
+ }>;
9
+ /** Schema for the drag-and-drop component's state, tracking its unique ID, orientation, and current drag phase. */
10
+ export declare const Model: S.Struct<{
11
+ readonly id: S.String;
12
+ readonly orientation: S.Literals<readonly ["Horizontal", "Vertical"]>;
13
+ readonly activationThreshold: S.Number;
14
+ readonly dragState: S.Union<readonly [import("foldkit/schema").CallableTaggedStruct<"Idle", {}>, import("foldkit/schema").CallableTaggedStruct<"Pending", {
15
+ itemId: S.String;
16
+ containerId: S.String;
17
+ index: S.Number;
18
+ origin: S.Struct<{
19
+ readonly screenX: S.Number;
20
+ readonly screenY: S.Number;
21
+ }>;
22
+ }>, import("foldkit/schema").CallableTaggedStruct<"Dragging", {
23
+ itemId: S.String;
24
+ sourceContainerId: S.String;
25
+ sourceIndex: S.Number;
26
+ origin: S.Struct<{
27
+ readonly screenX: S.Number;
28
+ readonly screenY: S.Number;
29
+ }>;
30
+ current: S.Struct<{
31
+ readonly clientX: S.Number;
32
+ readonly clientY: S.Number;
33
+ }>;
34
+ maybeDropTarget: S.Option<S.Struct<{
35
+ readonly containerId: S.String;
36
+ readonly index: S.Number;
37
+ }>>;
38
+ }>, import("foldkit/schema").CallableTaggedStruct<"KeyboardDragging", {
39
+ itemId: S.String;
40
+ sourceContainerId: S.String;
41
+ sourceIndex: S.Number;
42
+ targetContainerId: S.String;
43
+ targetIndex: S.Number;
44
+ }>]>;
45
+ }>;
46
+ export type Model = typeof Model.Type;
47
+ /** The user pressed a pointer on a draggable item. */
48
+ export declare const PressedDraggable: import("foldkit/schema").CallableTaggedStruct<"PressedDraggable", {
49
+ itemId: S.String;
50
+ containerId: S.String;
51
+ index: S.Number;
52
+ screenX: S.Number;
53
+ screenY: S.Number;
54
+ }>;
55
+ /** The pointer moved during a drag, with collision detection results. */
56
+ export declare const MovedPointer: import("foldkit/schema").CallableTaggedStruct<"MovedPointer", {
57
+ screenX: S.Number;
58
+ screenY: S.Number;
59
+ clientX: S.Number;
60
+ clientY: S.Number;
61
+ maybeDropTarget: S.Option<S.Struct<{
62
+ readonly containerId: S.String;
63
+ readonly index: S.Number;
64
+ }>>;
65
+ }>;
66
+ /** The pointer was released. */
67
+ export declare const ReleasedPointer: import("foldkit/schema").CallableTaggedStruct<"ReleasedPointer", {}>;
68
+ /** Escape was pressed during a drag. */
69
+ export declare const CancelledDrag: import("foldkit/schema").CallableTaggedStruct<"CancelledDrag", {}>;
70
+ /** The user activated keyboard drag with Space or Enter on a focused draggable. */
71
+ export declare const ActivatedKeyboardDrag: import("foldkit/schema").CallableTaggedStruct<"ActivatedKeyboardDrag", {
72
+ itemId: S.String;
73
+ containerId: S.String;
74
+ index: S.Number;
75
+ }>;
76
+ /** The ResolveKeyboardMove Command resolved the next keyboard drag position. */
77
+ export declare const ResolvedKeyboardMove: import("foldkit/schema").CallableTaggedStruct<"ResolvedKeyboardMove", {
78
+ targetContainerId: S.String;
79
+ targetIndex: S.Number;
80
+ }>;
81
+ /** The user confirmed a keyboard drop with Space or Enter. */
82
+ export declare const ConfirmedKeyboardDrop: import("foldkit/schema").CallableTaggedStruct<"ConfirmedKeyboardDrop", {}>;
83
+ /** The user pressed an arrow key during keyboard drag. */
84
+ export declare const PressedArrowKey: import("foldkit/schema").CallableTaggedStruct<"PressedArrowKey", {
85
+ direction: S.Literals<readonly ["Up", "Down", "Left", "Right", "NextContainer", "PreviousContainer"]>;
86
+ }>;
87
+ /** An animation frame fired during auto-scroll. */
88
+ export declare const AdvancedAutoScrollFrame: import("foldkit/schema").CallableTaggedStruct<"AdvancedAutoScrollFrame", {}>;
89
+ /** The FocusItem Command completed. */
90
+ export declare const CompletedFocusItem: import("foldkit/schema").CallableTaggedStruct<"CompletedFocusItem", {}>;
91
+ /** Union of all messages the drag-and-drop component can produce. */
92
+ export declare const Message: S.Union<[
93
+ typeof PressedDraggable,
94
+ typeof MovedPointer,
95
+ typeof ReleasedPointer,
96
+ typeof CancelledDrag,
97
+ typeof ActivatedKeyboardDrag,
98
+ typeof ResolvedKeyboardMove,
99
+ typeof ConfirmedKeyboardDrop,
100
+ typeof PressedArrowKey,
101
+ typeof AdvancedAutoScrollFrame,
102
+ typeof CompletedFocusItem
103
+ ]>;
104
+ export type Message = typeof Message.Type;
105
+ /** Emitted when a drag completes with a valid drop target. The parent uses this to commit the reorder. */
106
+ export declare const Reordered: import("foldkit/schema").CallableTaggedStruct<"Reordered", {
107
+ itemId: S.String;
108
+ fromContainerId: S.String;
109
+ fromIndex: S.Number;
110
+ toContainerId: S.String;
111
+ toIndex: S.Number;
112
+ }>;
113
+ /** Emitted when a drag is cancelled via Escape or pointer release without a drop target. */
114
+ export declare const Cancelled: import("foldkit/schema").CallableTaggedStruct<"Cancelled", {}>;
115
+ /** Union of all out-messages the drag-and-drop component can emit to its parent. */
116
+ export declare const OutMessage: S.Union<readonly [import("foldkit/schema").CallableTaggedStruct<"Reordered", {
117
+ itemId: S.String;
118
+ fromContainerId: S.String;
119
+ fromIndex: S.Number;
120
+ toContainerId: S.String;
121
+ toIndex: S.Number;
122
+ }>, import("foldkit/schema").CallableTaggedStruct<"Cancelled", {}>]>;
123
+ export type OutMessage = typeof OutMessage.Type;
124
+ export type InitConfig = Readonly<{
125
+ id: string;
126
+ orientation?: 'Horizontal' | 'Vertical';
127
+ activationThreshold?: number;
128
+ }>;
129
+ /** Creates an initial drag-and-drop model. Starts in the Idle state with Vertical orientation and 5px activation threshold by default. */
130
+ export declare const init: (config: InitConfig) => Model;
131
+ /** Focuses a draggable item by ID after keyboard drop or cancel. */
132
+ export declare const FocusItem: Command.CommandDefinitionWithArgs<"FocusItem", {
133
+ itemId: S.String;
134
+ }, Effect.Effect<{
135
+ readonly _tag: "CompletedFocusItem";
136
+ }, never, never>>;
137
+ /** Resolves the next keyboard drag position by querying the DOM for adjacent sortable items and containers. */
138
+ export declare const ResolveKeyboardMove: Command.CommandDefinitionWithArgs<"ResolveKeyboardMove", {
139
+ itemId: S.String;
140
+ currentContainerId: S.String;
141
+ currentIndex: S.Number;
142
+ direction: S.Literals<readonly ["Up", "Down", "Left", "Right", "NextContainer", "PreviousContainer"]>;
143
+ }, Effect.Effect<{
144
+ readonly _tag: "ResolvedKeyboardMove";
145
+ readonly targetContainerId: string;
146
+ readonly targetIndex: number;
147
+ }, never, never>>;
148
+ type UpdateReturn = readonly [
149
+ Model,
150
+ ReadonlyArray<Command.Command<Message>>,
151
+ Option.Option<OutMessage>
152
+ ];
153
+ /** Processes a drag-and-drop message and returns the next model, commands, and an optional out-message for the parent. */
154
+ export declare const update: (model: Model, message: Message) => UpdateReturn;
155
+ /** Document-level subscriptions for pointer and keyboard events during drag operations. */
156
+ export declare const subscriptions: {
157
+ readonly documentPointer: Subscription.EntryWithoutKeepAlive<{
158
+ readonly id: string;
159
+ readonly orientation: "Horizontal" | "Vertical";
160
+ readonly activationThreshold: number;
161
+ readonly dragState: {
162
+ readonly _tag: "Idle";
163
+ } | {
164
+ readonly _tag: "Pending";
165
+ readonly itemId: string;
166
+ readonly containerId: string;
167
+ readonly index: number;
168
+ readonly origin: {
169
+ readonly screenX: number;
170
+ readonly screenY: number;
171
+ };
172
+ } | {
173
+ readonly _tag: "Dragging";
174
+ readonly itemId: string;
175
+ readonly sourceContainerId: string;
176
+ readonly sourceIndex: number;
177
+ readonly origin: {
178
+ readonly screenX: number;
179
+ readonly screenY: number;
180
+ };
181
+ readonly current: {
182
+ readonly clientX: number;
183
+ readonly clientY: number;
184
+ };
185
+ readonly maybeDropTarget: Option.Option<{
186
+ readonly containerId: string;
187
+ readonly index: number;
188
+ }>;
189
+ } | {
190
+ readonly _tag: "KeyboardDragging";
191
+ readonly itemId: string;
192
+ readonly sourceContainerId: string;
193
+ readonly sourceIndex: number;
194
+ readonly targetContainerId: string;
195
+ readonly targetIndex: number;
196
+ };
197
+ }, {
198
+ readonly _tag: "PressedDraggable";
199
+ readonly itemId: string;
200
+ readonly containerId: string;
201
+ readonly index: number;
202
+ readonly screenX: number;
203
+ readonly screenY: number;
204
+ } | {
205
+ readonly _tag: "MovedPointer";
206
+ readonly screenX: number;
207
+ readonly screenY: number;
208
+ readonly clientX: number;
209
+ readonly clientY: number;
210
+ readonly maybeDropTarget: Option.Option<{
211
+ readonly containerId: string;
212
+ readonly index: number;
213
+ }>;
214
+ } | {
215
+ readonly _tag: "ReleasedPointer";
216
+ } | {
217
+ readonly _tag: "CancelledDrag";
218
+ } | {
219
+ readonly _tag: "ActivatedKeyboardDrag";
220
+ readonly itemId: string;
221
+ readonly containerId: string;
222
+ readonly index: number;
223
+ } | {
224
+ readonly _tag: "ResolvedKeyboardMove";
225
+ readonly targetContainerId: string;
226
+ readonly targetIndex: number;
227
+ } | {
228
+ readonly _tag: "ConfirmedKeyboardDrop";
229
+ } | {
230
+ readonly _tag: "PressedArrowKey";
231
+ readonly direction: "Up" | "Down" | "Left" | "Right" | "NextContainer" | "PreviousContainer";
232
+ } | {
233
+ readonly _tag: "AdvancedAutoScrollFrame";
234
+ } | {
235
+ readonly _tag: "CompletedFocusItem";
236
+ }, {
237
+ readonly dragActivity: "Idle" | "Active";
238
+ readonly orientation: "Horizontal" | "Vertical";
239
+ }, never> & {
240
+ readonly __subscription: never;
241
+ };
242
+ readonly documentEscape: Subscription.EntryWithoutKeepAlive<{
243
+ readonly id: string;
244
+ readonly orientation: "Horizontal" | "Vertical";
245
+ readonly activationThreshold: number;
246
+ readonly dragState: {
247
+ readonly _tag: "Idle";
248
+ } | {
249
+ readonly _tag: "Pending";
250
+ readonly itemId: string;
251
+ readonly containerId: string;
252
+ readonly index: number;
253
+ readonly origin: {
254
+ readonly screenX: number;
255
+ readonly screenY: number;
256
+ };
257
+ } | {
258
+ readonly _tag: "Dragging";
259
+ readonly itemId: string;
260
+ readonly sourceContainerId: string;
261
+ readonly sourceIndex: number;
262
+ readonly origin: {
263
+ readonly screenX: number;
264
+ readonly screenY: number;
265
+ };
266
+ readonly current: {
267
+ readonly clientX: number;
268
+ readonly clientY: number;
269
+ };
270
+ readonly maybeDropTarget: Option.Option<{
271
+ readonly containerId: string;
272
+ readonly index: number;
273
+ }>;
274
+ } | {
275
+ readonly _tag: "KeyboardDragging";
276
+ readonly itemId: string;
277
+ readonly sourceContainerId: string;
278
+ readonly sourceIndex: number;
279
+ readonly targetContainerId: string;
280
+ readonly targetIndex: number;
281
+ };
282
+ }, {
283
+ readonly _tag: "PressedDraggable";
284
+ readonly itemId: string;
285
+ readonly containerId: string;
286
+ readonly index: number;
287
+ readonly screenX: number;
288
+ readonly screenY: number;
289
+ } | {
290
+ readonly _tag: "MovedPointer";
291
+ readonly screenX: number;
292
+ readonly screenY: number;
293
+ readonly clientX: number;
294
+ readonly clientY: number;
295
+ readonly maybeDropTarget: Option.Option<{
296
+ readonly containerId: string;
297
+ readonly index: number;
298
+ }>;
299
+ } | {
300
+ readonly _tag: "ReleasedPointer";
301
+ } | {
302
+ readonly _tag: "CancelledDrag";
303
+ } | {
304
+ readonly _tag: "ActivatedKeyboardDrag";
305
+ readonly itemId: string;
306
+ readonly containerId: string;
307
+ readonly index: number;
308
+ } | {
309
+ readonly _tag: "ResolvedKeyboardMove";
310
+ readonly targetContainerId: string;
311
+ readonly targetIndex: number;
312
+ } | {
313
+ readonly _tag: "ConfirmedKeyboardDrop";
314
+ } | {
315
+ readonly _tag: "PressedArrowKey";
316
+ readonly direction: "Up" | "Down" | "Left" | "Right" | "NextContainer" | "PreviousContainer";
317
+ } | {
318
+ readonly _tag: "AdvancedAutoScrollFrame";
319
+ } | {
320
+ readonly _tag: "CompletedFocusItem";
321
+ }, {
322
+ readonly dragActivity: "Idle" | "Active";
323
+ }, never> & {
324
+ readonly __subscription: never;
325
+ };
326
+ readonly documentKeyboard: Subscription.EntryWithoutKeepAlive<{
327
+ readonly id: string;
328
+ readonly orientation: "Horizontal" | "Vertical";
329
+ readonly activationThreshold: number;
330
+ readonly dragState: {
331
+ readonly _tag: "Idle";
332
+ } | {
333
+ readonly _tag: "Pending";
334
+ readonly itemId: string;
335
+ readonly containerId: string;
336
+ readonly index: number;
337
+ readonly origin: {
338
+ readonly screenX: number;
339
+ readonly screenY: number;
340
+ };
341
+ } | {
342
+ readonly _tag: "Dragging";
343
+ readonly itemId: string;
344
+ readonly sourceContainerId: string;
345
+ readonly sourceIndex: number;
346
+ readonly origin: {
347
+ readonly screenX: number;
348
+ readonly screenY: number;
349
+ };
350
+ readonly current: {
351
+ readonly clientX: number;
352
+ readonly clientY: number;
353
+ };
354
+ readonly maybeDropTarget: Option.Option<{
355
+ readonly containerId: string;
356
+ readonly index: number;
357
+ }>;
358
+ } | {
359
+ readonly _tag: "KeyboardDragging";
360
+ readonly itemId: string;
361
+ readonly sourceContainerId: string;
362
+ readonly sourceIndex: number;
363
+ readonly targetContainerId: string;
364
+ readonly targetIndex: number;
365
+ };
366
+ }, {
367
+ readonly _tag: "PressedDraggable";
368
+ readonly itemId: string;
369
+ readonly containerId: string;
370
+ readonly index: number;
371
+ readonly screenX: number;
372
+ readonly screenY: number;
373
+ } | {
374
+ readonly _tag: "MovedPointer";
375
+ readonly screenX: number;
376
+ readonly screenY: number;
377
+ readonly clientX: number;
378
+ readonly clientY: number;
379
+ readonly maybeDropTarget: Option.Option<{
380
+ readonly containerId: string;
381
+ readonly index: number;
382
+ }>;
383
+ } | {
384
+ readonly _tag: "ReleasedPointer";
385
+ } | {
386
+ readonly _tag: "CancelledDrag";
387
+ } | {
388
+ readonly _tag: "ActivatedKeyboardDrag";
389
+ readonly itemId: string;
390
+ readonly containerId: string;
391
+ readonly index: number;
392
+ } | {
393
+ readonly _tag: "ResolvedKeyboardMove";
394
+ readonly targetContainerId: string;
395
+ readonly targetIndex: number;
396
+ } | {
397
+ readonly _tag: "ConfirmedKeyboardDrop";
398
+ } | {
399
+ readonly _tag: "PressedArrowKey";
400
+ readonly direction: "Up" | "Down" | "Left" | "Right" | "NextContainer" | "PreviousContainer";
401
+ } | {
402
+ readonly _tag: "AdvancedAutoScrollFrame";
403
+ } | {
404
+ readonly _tag: "CompletedFocusItem";
405
+ }, {
406
+ readonly dragActivity: "Idle" | "Active";
407
+ }, never> & {
408
+ readonly __subscription: never;
409
+ };
410
+ readonly autoScroll: {
411
+ readonly dependenciesSchema: S.Schema<{
412
+ readonly isDragging: boolean;
413
+ readonly clientY: number;
414
+ }> & {
415
+ readonly fields: S.Struct.Fields;
416
+ };
417
+ readonly modelToDependencies: (model: {
418
+ readonly id: string;
419
+ readonly orientation: "Horizontal" | "Vertical";
420
+ readonly activationThreshold: number;
421
+ readonly dragState: {
422
+ readonly _tag: "Idle";
423
+ } | {
424
+ readonly _tag: "Pending";
425
+ readonly itemId: string;
426
+ readonly containerId: string;
427
+ readonly index: number;
428
+ readonly origin: {
429
+ readonly screenX: number;
430
+ readonly screenY: number;
431
+ };
432
+ } | {
433
+ readonly _tag: "Dragging";
434
+ readonly itemId: string;
435
+ readonly sourceContainerId: string;
436
+ readonly sourceIndex: number;
437
+ readonly origin: {
438
+ readonly screenX: number;
439
+ readonly screenY: number;
440
+ };
441
+ readonly current: {
442
+ readonly clientX: number;
443
+ readonly clientY: number;
444
+ };
445
+ readonly maybeDropTarget: Option.Option<{
446
+ readonly containerId: string;
447
+ readonly index: number;
448
+ }>;
449
+ } | {
450
+ readonly _tag: "KeyboardDragging";
451
+ readonly itemId: string;
452
+ readonly sourceContainerId: string;
453
+ readonly sourceIndex: number;
454
+ readonly targetContainerId: string;
455
+ readonly targetIndex: number;
456
+ };
457
+ }) => {
458
+ readonly isDragging: boolean;
459
+ readonly clientY: number;
460
+ };
461
+ readonly keepAliveEquivalence: Equivalence.Equivalence<{
462
+ readonly isDragging: boolean;
463
+ readonly clientY: number;
464
+ }>;
465
+ readonly dependenciesToStream: (dependencies: {
466
+ readonly isDragging: boolean;
467
+ readonly clientY: number;
468
+ }, readDependencies: () => {
469
+ readonly isDragging: boolean;
470
+ readonly clientY: number;
471
+ }) => Stream.Stream<{
472
+ readonly _tag: "PressedDraggable";
473
+ readonly itemId: string;
474
+ readonly containerId: string;
475
+ readonly index: number;
476
+ readonly screenX: number;
477
+ readonly screenY: number;
478
+ } | {
479
+ readonly _tag: "MovedPointer";
480
+ readonly screenX: number;
481
+ readonly screenY: number;
482
+ readonly clientX: number;
483
+ readonly clientY: number;
484
+ readonly maybeDropTarget: Option.Option<{
485
+ readonly containerId: string;
486
+ readonly index: number;
487
+ }>;
488
+ } | {
489
+ readonly _tag: "ReleasedPointer";
490
+ } | {
491
+ readonly _tag: "CancelledDrag";
492
+ } | {
493
+ readonly _tag: "ActivatedKeyboardDrag";
494
+ readonly itemId: string;
495
+ readonly containerId: string;
496
+ readonly index: number;
497
+ } | {
498
+ readonly _tag: "ResolvedKeyboardMove";
499
+ readonly targetContainerId: string;
500
+ readonly targetIndex: number;
501
+ } | {
502
+ readonly _tag: "ConfirmedKeyboardDrop";
503
+ } | {
504
+ readonly _tag: "PressedArrowKey";
505
+ readonly direction: "Up" | "Down" | "Left" | "Right" | "NextContainer" | "PreviousContainer";
506
+ } | {
507
+ readonly _tag: "AdvancedAutoScrollFrame";
508
+ } | {
509
+ readonly _tag: "CompletedFocusItem";
510
+ }, never, never>;
511
+ } & {
512
+ readonly __subscription: never;
513
+ };
514
+ };
515
+ /** Messages the draggable view helper can dispatch. */
516
+ export type DraggableMessage = typeof PressedDraggable.Type | typeof ActivatedKeyboardDrag.Type;
517
+ /** Configuration for creating draggable attributes with `draggable`. */
518
+ export type DraggableConfig<ParentMessage> = Readonly<{
519
+ model: Model;
520
+ toParentMessage: (message: DraggableMessage) => ParentMessage;
521
+ itemId: string;
522
+ containerId: string;
523
+ index: number;
524
+ }>;
525
+ /** Returns attributes the parent attaches to a draggable element. Handles pointer-down, keyboard activation, and ARIA. */
526
+ export declare const draggable: <ParentMessage>(config: DraggableConfig<ParentMessage>) => ReadonlyArray<Attribute<ParentMessage>>;
527
+ /** Returns attributes the parent attaches to a droppable container element. */
528
+ export declare const droppable: <ParentMessage>(containerId: string, label?: string) => ReadonlyArray<Attribute<ParentMessage>>;
529
+ /** Returns attributes the parent attaches to a sortable item element. Typically combined with `draggable`. */
530
+ export declare const sortable: <ParentMessage>(itemId: string) => ReadonlyArray<Attribute<ParentMessage>>;
531
+ /** Returns positioning styles for the ghost element, or None when not dragging with a pointer. */
532
+ export declare const ghostStyle: (model: Model) => Option.Option<Record<string, string>>;
533
+ /** Returns true when the component is actively dragging (pointer or keyboard). */
534
+ export declare const isDragging: ({ dragState: { _tag } }: Model) => boolean;
535
+ /** Returns the ID of the item currently being dragged or pending, if any. */
536
+ export declare const maybeDraggedItemId: (model: Model) => Option.Option<string>;
537
+ /** Returns the current drop target, if any. Populated during pointer drag (from collision detection) and keyboard drag (from resolved position). */
538
+ export declare const maybeDropTarget: (model: Model) => Option.Option<typeof DropTarget.Type>;
539
+ export {};
540
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dragAndDrop/index.ts"],"names":[],"mappings":"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"}