@gjermundgaraba/pixel-paper 0.0.0-stage → 0.1.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 (387) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -2
  3. package/dist/_virtual/_rolldown/runtime.js +13 -0
  4. package/dist/announcer/announcer.d.ts +35 -0
  5. package/dist/announcer/announcer.js +121 -0
  6. package/dist/announcer/index.d.ts +5 -0
  7. package/dist/announcer/index.js +11 -0
  8. package/dist/attributes/attributes.d.ts +4 -0
  9. package/dist/banner/banner.d.ts +20 -0
  10. package/dist/banner/banner.js +18 -0
  11. package/dist/banner/index.d.ts +5 -0
  12. package/dist/banner/index.js +6 -0
  13. package/dist/bench/bench.d.ts +16 -0
  14. package/dist/bench/bench.js +12 -0
  15. package/dist/bench/index.d.ts +5 -0
  16. package/dist/bench/index.js +6 -0
  17. package/dist/board/board.d.ts +1151 -0
  18. package/dist/board/board.js +449 -0
  19. package/dist/board/index.d.ts +6 -0
  20. package/dist/board/index.js +21 -0
  21. package/dist/button/button.d.ts +54 -0
  22. package/dist/button/button.js +50 -0
  23. package/dist/button/index.d.ts +5 -0
  24. package/dist/button/index.js +9 -0
  25. package/dist/card/card.d.ts +66 -0
  26. package/dist/card/card.js +70 -0
  27. package/dist/card/index.d.ts +5 -0
  28. package/dist/card/index.js +10 -0
  29. package/dist/chip/chip.d.ts +27 -0
  30. package/dist/chip/chip.js +34 -0
  31. package/dist/chip/index.d.ts +5 -0
  32. package/dist/chip/index.js +9 -0
  33. package/dist/choice/choice.d.ts +16 -0
  34. package/dist/choice/choice.js +17 -0
  35. package/dist/choice/index.d.ts +5 -0
  36. package/dist/choice/index.js +6 -0
  37. package/dist/code-editor/code-editor.d.ts +15 -0
  38. package/dist/code-editor/code-editor.js +22 -0
  39. package/dist/code-editor/index.d.ts +5 -0
  40. package/dist/code-editor/index.js +6 -0
  41. package/dist/code-surface/code-surface.d.ts +12 -0
  42. package/dist/code-surface/code-surface.js +12 -0
  43. package/dist/code-surface/index.d.ts +5 -0
  44. package/dist/code-surface/index.js +6 -0
  45. package/dist/command-palette/command-palette.d.ts +579 -0
  46. package/dist/command-palette/command-palette.js +600 -0
  47. package/dist/command-palette/index.d.ts +9 -0
  48. package/dist/command-palette/index.js +32 -0
  49. package/dist/command-palette/keys.d.ts +13 -0
  50. package/dist/command-palette/keys.js +71 -0
  51. package/dist/command-palette/match.d.ts +43 -0
  52. package/dist/command-palette/match.js +45 -0
  53. package/dist/command-palette/message.d.ts +94 -0
  54. package/dist/command-palette/message.js +46 -0
  55. package/dist/confirm-dialog/confirm-dialog.d.ts +287 -0
  56. package/dist/confirm-dialog/confirm-dialog.js +115 -0
  57. package/dist/confirm-dialog/index.d.ts +5 -0
  58. package/dist/confirm-dialog/index.js +17 -0
  59. package/dist/copy-button/copy-button.d.ts +99 -0
  60. package/dist/copy-button/copy-button.js +96 -0
  61. package/dist/copy-button/index.d.ts +5 -0
  62. package/dist/copy-button/index.js +13 -0
  63. package/dist/crumbs/crumbs.d.ts +15 -0
  64. package/dist/crumbs/crumbs.js +11 -0
  65. package/dist/crumbs/index.d.ts +5 -0
  66. package/dist/crumbs/index.js +6 -0
  67. package/dist/deck/deck.d.ts +9 -0
  68. package/dist/deck/deck.js +9 -0
  69. package/dist/deck/index.d.ts +5 -0
  70. package/dist/deck/index.js +6 -0
  71. package/dist/dialog/dialog.d.ts +278 -0
  72. package/dist/dialog/dialog.js +145 -0
  73. package/dist/dialog/fold.d.ts +58 -0
  74. package/dist/dialog/fold.js +63 -0
  75. package/dist/dialog/index.d.ts +6 -0
  76. package/dist/dialog/index.js +21 -0
  77. package/dist/disclosure/disclosure.d.ts +24 -0
  78. package/dist/disclosure/disclosure.js +25 -0
  79. package/dist/disclosure/index.d.ts +5 -0
  80. package/dist/disclosure/index.js +6 -0
  81. package/dist/dom/html-element.js +8 -0
  82. package/dist/drag/drag.d.ts +15 -0
  83. package/dist/drag/drag.js +123 -0
  84. package/dist/drop-zone/drop-zone.d.ts +119 -0
  85. package/dist/drop-zone/drop-zone.js +64 -0
  86. package/dist/drop-zone/index.d.ts +5 -0
  87. package/dist/drop-zone/index.js +14 -0
  88. package/dist/empty-state/empty-state.d.ts +18 -0
  89. package/dist/empty-state/empty-state.js +16 -0
  90. package/dist/empty-state/index.d.ts +5 -0
  91. package/dist/empty-state/index.js +6 -0
  92. package/dist/error-summary/error-summary.d.ts +34 -0
  93. package/dist/error-summary/error-summary.js +33 -0
  94. package/dist/error-summary/index.d.ts +5 -0
  95. package/dist/error-summary/index.js +6 -0
  96. package/dist/field/field.d.ts +35 -0
  97. package/dist/field/field.js +34 -0
  98. package/dist/field/index.d.ts +5 -0
  99. package/dist/field/index.js +6 -0
  100. package/dist/field-grid/field-grid.d.ts +8 -0
  101. package/dist/field-grid/field-grid.js +8 -0
  102. package/dist/field-grid/index.d.ts +5 -0
  103. package/dist/field-grid/index.js +6 -0
  104. package/dist/fields/fields.js +9 -0
  105. package/dist/fieldset/fieldset.d.ts +13 -0
  106. package/dist/fieldset/fieldset.js +13 -0
  107. package/dist/fieldset/index.d.ts +5 -0
  108. package/dist/fieldset/index.js +6 -0
  109. package/dist/filter-chip/filter-chip.d.ts +21 -0
  110. package/dist/filter-chip/filter-chip.js +28 -0
  111. package/dist/filter-chip/index.d.ts +5 -0
  112. package/dist/filter-chip/index.js +6 -0
  113. package/dist/filter-strip/filter-strip.d.ts +12 -0
  114. package/dist/filter-strip/filter-strip.js +13 -0
  115. package/dist/filter-strip/index.d.ts +5 -0
  116. package/dist/filter-strip/index.js +6 -0
  117. package/dist/flash-word/flash-word.d.ts +31 -0
  118. package/dist/flash-word/flash-word.js +31 -0
  119. package/dist/flash-word/index.d.ts +5 -0
  120. package/dist/flash-word/index.js +9 -0
  121. package/dist/focus/focus.d.ts +15 -0
  122. package/dist/focus/focus.js +17 -0
  123. package/dist/focus/index.d.ts +5 -0
  124. package/dist/focus/index.js +9 -0
  125. package/dist/format/format.js +52 -0
  126. package/dist/format/index.d.ts +5 -0
  127. package/dist/format/index.js +6 -0
  128. package/dist/glyph/glyph.d.ts +9 -0
  129. package/dist/glyph/glyph.js +25 -0
  130. package/dist/glyph/glyphs.d.ts +381 -0
  131. package/dist/glyph/glyphs.js +2603 -0
  132. package/dist/glyph/index.d.ts +5 -0
  133. package/dist/glyph/index.js +6 -0
  134. package/dist/group/group.d.ts +8 -0
  135. package/dist/group/group.js +9 -0
  136. package/dist/group/index.d.ts +5 -0
  137. package/dist/group/index.js +6 -0
  138. package/dist/history/history.d.ts +34 -0
  139. package/dist/history/history.js +15 -0
  140. package/dist/history/index.d.ts +5 -0
  141. package/dist/history/index.js +6 -0
  142. package/dist/icon-button/icon-button.d.ts +23 -0
  143. package/dist/icon-button/icon-button.js +23 -0
  144. package/dist/icon-button/index.d.ts +5 -0
  145. package/dist/icon-button/index.js +6 -0
  146. package/dist/identity/identity.d.ts +15 -0
  147. package/dist/identity/identity.js +15 -0
  148. package/dist/identity/index.d.ts +5 -0
  149. package/dist/identity/index.js +6 -0
  150. package/dist/index.d.ts +85 -0
  151. package/dist/index.js +85 -0
  152. package/dist/inline-input/index.d.ts +5 -0
  153. package/dist/inline-input/index.js +20 -0
  154. package/dist/inline-input/inline-input.d.ts +196 -0
  155. package/dist/inline-input/inline-input.js +212 -0
  156. package/dist/key-help/index.d.ts +5 -0
  157. package/dist/key-help/index.js +18 -0
  158. package/dist/key-help/key-help.d.ts +255 -0
  159. package/dist/key-help/key-help.js +137 -0
  160. package/dist/key-hint/index.d.ts +6 -0
  161. package/dist/key-hint/index.js +12 -0
  162. package/dist/key-hint/key-hint.d.ts +13 -0
  163. package/dist/key-hint/key-hint.js +7 -0
  164. package/dist/key-hint/key-label.d.ts +18 -0
  165. package/dist/key-hint/key-label.js +77 -0
  166. package/dist/keymap/keymap.d.ts +11 -0
  167. package/dist/keymap/keymap.js +9 -0
  168. package/dist/keys/keys.js +4 -0
  169. package/dist/line-diff/diff.d.ts +2 -0
  170. package/dist/line-diff/diff.js +73 -0
  171. package/dist/line-diff/index.d.ts +6 -0
  172. package/dist/line-diff/index.js +10 -0
  173. package/dist/line-diff/line-diff.d.ts +21 -0
  174. package/dist/line-diff/line-diff.js +75 -0
  175. package/dist/line-diff/patch.d.ts +15 -0
  176. package/dist/line-diff/patch.js +120 -0
  177. package/dist/link-button/index.d.ts +5 -0
  178. package/dist/link-button/index.js +6 -0
  179. package/dist/link-button/link-button.d.ts +11 -0
  180. package/dist/link-button/link-button.js +10 -0
  181. package/dist/link-state/index.d.ts +5 -0
  182. package/dist/link-state/index.js +6 -0
  183. package/dist/link-state/link-state.d.ts +15 -0
  184. package/dist/link-state/link-state.js +17 -0
  185. package/dist/live-region/index.d.ts +5 -0
  186. package/dist/live-region/index.js +9 -0
  187. package/dist/live-region/live-region.d.ts +39 -0
  188. package/dist/live-region/live-region.js +33 -0
  189. package/dist/loading/index.d.ts +5 -0
  190. package/dist/loading/index.js +6 -0
  191. package/dist/loading/loading.d.ts +19 -0
  192. package/dist/loading/loading.js +16 -0
  193. package/dist/locale/locale.d.ts +3 -0
  194. package/dist/locale/locale.js +5 -0
  195. package/dist/mark/index.d.ts +5 -0
  196. package/dist/mark/index.js +6 -0
  197. package/dist/mark/mark.d.ts +15 -0
  198. package/dist/mark/mark.js +30 -0
  199. package/dist/menu/index.d.ts +7 -0
  200. package/dist/menu/index.js +25 -0
  201. package/dist/menu/item.d.ts +236 -0
  202. package/dist/menu/item.js +19 -0
  203. package/dist/menu/menu.d.ts +206 -0
  204. package/dist/menu/menu.js +208 -0
  205. package/dist/menu/slip.js +163 -0
  206. package/dist/meter/index.d.ts +5 -0
  207. package/dist/meter/index.js +6 -0
  208. package/dist/meter/meter.d.ts +38 -0
  209. package/dist/meter/meter.js +69 -0
  210. package/dist/monogram/monogram.js +33 -0
  211. package/dist/nav-strip/index.d.ts +5 -0
  212. package/dist/nav-strip/index.js +6 -0
  213. package/dist/nav-strip/nav-strip.d.ts +19 -0
  214. package/dist/nav-strip/nav-strip.js +21 -0
  215. package/dist/notice/index.d.ts +5 -0
  216. package/dist/notice/index.js +6 -0
  217. package/dist/notice/notice.d.ts +23 -0
  218. package/dist/notice/notice.js +35 -0
  219. package/dist/outcome/index.d.ts +5 -0
  220. package/dist/outcome/index.js +6 -0
  221. package/dist/outcome/outcome.d.ts +19 -0
  222. package/dist/outcome/outcome.js +14 -0
  223. package/dist/page-head/index.d.ts +5 -0
  224. package/dist/page-head/index.js +6 -0
  225. package/dist/page-head/page-head.d.ts +13 -0
  226. package/dist/page-head/page-head.js +10 -0
  227. package/dist/panel/index.d.ts +5 -0
  228. package/dist/panel/index.js +6 -0
  229. package/dist/panel/panel.d.ts +35 -0
  230. package/dist/panel/panel.js +25 -0
  231. package/dist/password-field/index.d.ts +5 -0
  232. package/dist/password-field/index.js +6 -0
  233. package/dist/password-field/password-field.d.ts +33 -0
  234. package/dist/password-field/password-field.js +39 -0
  235. package/dist/places/index.d.ts +5 -0
  236. package/dist/places/index.js +6 -0
  237. package/dist/places/places.d.ts +32 -0
  238. package/dist/places/places.js +22 -0
  239. package/dist/props-list/index.d.ts +5 -0
  240. package/dist/props-list/index.js +6 -0
  241. package/dist/props-list/props-list.d.ts +18 -0
  242. package/dist/props-list/props-list.js +12 -0
  243. package/dist/prose/index.d.ts +5 -0
  244. package/dist/prose/index.js +6 -0
  245. package/dist/prose/prose.d.ts +14 -0
  246. package/dist/prose/prose.js +6 -0
  247. package/dist/query-chip/index.d.ts +5 -0
  248. package/dist/query-chip/index.js +6 -0
  249. package/dist/query-chip/query-chip.d.ts +18 -0
  250. package/dist/query-chip/query-chip.js +17 -0
  251. package/dist/radio-choices/index.d.ts +5 -0
  252. package/dist/radio-choices/index.js +12 -0
  253. package/dist/radio-choices/radio-choices.d.ts +105 -0
  254. package/dist/radio-choices/radio-choices.js +56 -0
  255. package/dist/rail/index.d.ts +5 -0
  256. package/dist/rail/index.js +22 -0
  257. package/dist/rail/rail.d.ts +403 -0
  258. package/dist/rail/rail.js +355 -0
  259. package/dist/reel/index.d.ts +6 -0
  260. package/dist/reel/index.js +26 -0
  261. package/dist/reel/layout.d.ts +58 -0
  262. package/dist/reel/layout.js +378 -0
  263. package/dist/reel/reel.d.ts +1070 -0
  264. package/dist/reel/reel.js +1019 -0
  265. package/dist/remote/index.d.ts +5 -0
  266. package/dist/remote/index.js +6 -0
  267. package/dist/remote/remote.d.ts +28 -0
  268. package/dist/remote/remote.js +41 -0
  269. package/dist/rows/index.d.ts +5 -0
  270. package/dist/rows/index.js +12 -0
  271. package/dist/rows/rows.d.ts +116 -0
  272. package/dist/rows/rows.js +67 -0
  273. package/dist/scheme/index.d.ts +6 -0
  274. package/dist/scheme/index.js +10 -0
  275. package/dist/scheme/scheme-switch.d.ts +98 -0
  276. package/dist/scheme/scheme-switch.js +118 -0
  277. package/dist/scheme/scheme.d.ts +5 -0
  278. package/dist/scheme/scheme.js +16 -0
  279. package/dist/scheme/script.d.ts +8 -0
  280. package/dist/scheme/script.js +10 -0
  281. package/dist/secret/index.d.ts +5 -0
  282. package/dist/secret/index.js +6 -0
  283. package/dist/secret/secret.d.ts +13 -0
  284. package/dist/secret/secret.js +9 -0
  285. package/dist/segmented/index.d.ts +5 -0
  286. package/dist/segmented/index.js +6 -0
  287. package/dist/segmented/segmented.d.ts +17 -0
  288. package/dist/segmented/segmented.js +17 -0
  289. package/dist/select-field/index.d.ts +5 -0
  290. package/dist/select-field/index.js +6 -0
  291. package/dist/select-field/select-field.d.ts +38 -0
  292. package/dist/select-field/select-field.js +29 -0
  293. package/dist/sheet/index.d.ts +5 -0
  294. package/dist/sheet/index.js +6 -0
  295. package/dist/sheet/sheet.d.ts +16 -0
  296. package/dist/sheet/sheet.js +15 -0
  297. package/dist/skip-link/index.d.ts +5 -0
  298. package/dist/skip-link/index.js +9 -0
  299. package/dist/skip-link/skip-link.d.ts +23 -0
  300. package/dist/skip-link/skip-link.js +36 -0
  301. package/dist/slot/slot.js +8 -0
  302. package/dist/sortable/index.d.ts +5 -0
  303. package/dist/sortable/index.js +16 -0
  304. package/dist/sortable/sortable.d.ts +1125 -0
  305. package/dist/sortable/sortable.js +431 -0
  306. package/dist/stack/index.d.ts +5 -0
  307. package/dist/stack/index.js +6 -0
  308. package/dist/stack/stack.d.ts +15 -0
  309. package/dist/stack/stack.js +12 -0
  310. package/dist/stage/index.d.ts +5 -0
  311. package/dist/stage/index.js +6 -0
  312. package/dist/stage/stage.d.ts +14 -0
  313. package/dist/stage/stage.js +11 -0
  314. package/dist/stat/index.d.ts +5 -0
  315. package/dist/stat/index.js +6 -0
  316. package/dist/stat/stat.d.ts +18 -0
  317. package/dist/stat/stat.js +13 -0
  318. package/dist/status-bar/index.d.ts +6 -0
  319. package/dist/status-bar/index.js +11 -0
  320. package/dist/status-bar/status-bar.d.ts +28 -0
  321. package/dist/status-bar/status-bar.js +19 -0
  322. package/dist/subscription/prefix-keys.js +12 -0
  323. package/dist/table/index.d.ts +5 -0
  324. package/dist/table/index.js +6 -0
  325. package/dist/table/table.d.ts +26 -0
  326. package/dist/table/table.js +18 -0
  327. package/dist/tabs/index.d.ts +5 -0
  328. package/dist/tabs/index.js +14 -0
  329. package/dist/tabs/tabs.d.ts +125 -0
  330. package/dist/tabs/tabs.js +57 -0
  331. package/dist/tag/index.d.ts +5 -0
  332. package/dist/tag/index.js +6 -0
  333. package/dist/tag/tag.d.ts +16 -0
  334. package/dist/tag/tag.js +25 -0
  335. package/dist/text-button/index.d.ts +5 -0
  336. package/dist/text-button/index.js +6 -0
  337. package/dist/text-button/text-button.d.ts +8 -0
  338. package/dist/text-button/text-button.js +12 -0
  339. package/dist/textarea-field/index.d.ts +5 -0
  340. package/dist/textarea-field/index.js +6 -0
  341. package/dist/textarea-field/textarea-field.d.ts +28 -0
  342. package/dist/textarea-field/textarea-field.js +30 -0
  343. package/dist/time/index.d.ts +5 -0
  344. package/dist/time/index.js +9 -0
  345. package/dist/time/time.d.ts +38 -0
  346. package/dist/time/time.js +63 -0
  347. package/dist/tips/index.d.ts +5 -0
  348. package/dist/tips/index.js +14 -0
  349. package/dist/tips/tips.d.ts +339 -0
  350. package/dist/tips/tips.js +308 -0
  351. package/dist/toast/index.d.ts +5 -0
  352. package/dist/toast/index.js +17 -0
  353. package/dist/toast/stack.d.ts +7 -0
  354. package/dist/toast/stack.js +23 -0
  355. package/dist/toast/toast.d.ts +559 -0
  356. package/dist/toast/toast.js +269 -0
  357. package/dist/toc/index.d.ts +5 -0
  358. package/dist/toc/index.js +9 -0
  359. package/dist/toc/toc.d.ts +42 -0
  360. package/dist/toc/toc.js +35 -0
  361. package/dist/top-bar/bar-height.d.ts +26 -0
  362. package/dist/top-bar/bar-height.js +43 -0
  363. package/dist/top-bar/index.d.ts +6 -0
  364. package/dist/top-bar/index.js +12 -0
  365. package/dist/top-bar/top-bar.d.ts +19 -0
  366. package/dist/top-bar/top-bar.js +18 -0
  367. package/dist/wall/index.d.ts +5 -0
  368. package/dist/wall/index.js +9 -0
  369. package/dist/wall/wall.d.ts +16 -0
  370. package/dist/wall/wall.js +15 -0
  371. package/dist/window/index.d.ts +5 -0
  372. package/dist/window/index.js +6 -0
  373. package/dist/window/window.d.ts +28 -0
  374. package/dist/window/window.js +29 -0
  375. package/dist/wordmark/index.d.ts +5 -0
  376. package/dist/wordmark/index.js +6 -0
  377. package/dist/wordmark/wordmark.d.ts +10 -0
  378. package/dist/wordmark/wordmark.js +10 -0
  379. package/dist/wrap/index.d.ts +5 -0
  380. package/dist/wrap/index.js +6 -0
  381. package/dist/wrap/wrap.d.ts +12 -0
  382. package/dist/wrap/wrap.js +9 -0
  383. package/fonts/DepartureMono-Regular.woff2 +0 -0
  384. package/fonts/LICENSE.txt +2 -0
  385. package/package.json +57 -3
  386. package/src/pixel-paper.css +4611 -0
  387. package/src/tokens.css +151 -0
@@ -0,0 +1,1125 @@
1
+ import { Effect, Option, Schema } from "effect";
2
+ import * as Command from "foldkit/command";
3
+ import { Html } from "foldkit/html";
4
+ import "foldkit/mount";
5
+ import * as Subscription from "foldkit/subscription";
6
+ import * as Update from "foldkit/update";
7
+ /** Schema for one item as the list knows it: its id, unique in the list, and its name in
8
+ * words, which the grip and screen readers use. */
9
+ export declare const Item: Schema.Struct<{
10
+ readonly id: Schema.String;
11
+ readonly label: Schema.String;
12
+ }>;
13
+ export type Item = typeof Item.Type;
14
+ /** Schema for a sortable: the `@foldkit/ui` DragAndDrop it moves items with, and what it keeps
15
+ * while an item is held. The items are the parent's. */
16
+ export declare const Model: Schema.Struct<{
17
+ readonly dragAndDrop: Schema.Struct<{
18
+ readonly id: Schema.String;
19
+ readonly orientation: Schema.Literals<readonly ["Horizontal", "Vertical"]>;
20
+ readonly activationThreshold: Schema.Number;
21
+ readonly dragState: import("foldkit/schema").TaggedUnion<{
22
+ readonly Idle: {};
23
+ readonly Pending: {
24
+ itemId: Schema.String;
25
+ containerId: Schema.String;
26
+ index: Schema.Number;
27
+ origin: Schema.Struct<{
28
+ readonly screenX: Schema.Number;
29
+ readonly screenY: Schema.Number;
30
+ }>;
31
+ };
32
+ readonly Dragging: {
33
+ itemId: Schema.String;
34
+ sourceContainerId: Schema.String;
35
+ sourceIndex: Schema.Number;
36
+ origin: Schema.Struct<{
37
+ readonly screenX: Schema.Number;
38
+ readonly screenY: Schema.Number;
39
+ }>;
40
+ current: Schema.Struct<{
41
+ readonly clientX: Schema.Number;
42
+ readonly clientY: Schema.Number;
43
+ }>;
44
+ maybeDropTarget: Schema.Option<Schema.Struct<{
45
+ readonly containerId: Schema.String;
46
+ readonly index: Schema.Number;
47
+ }>>;
48
+ };
49
+ readonly KeyboardDragging: {
50
+ itemId: Schema.String;
51
+ sourceContainerId: Schema.String;
52
+ sourceIndex: Schema.Number;
53
+ targetContainerId: Schema.String;
54
+ targetIndex: Schema.Number;
55
+ };
56
+ }>;
57
+ }>;
58
+ readonly maybeHeld: Schema.Option<Schema.Struct<{
59
+ readonly item: Schema.Struct<{
60
+ readonly id: Schema.String;
61
+ readonly label: Schema.String;
62
+ }>;
63
+ readonly items: Schema.$Array<Schema.Struct<{
64
+ readonly id: Schema.String;
65
+ readonly label: Schema.String;
66
+ }>>;
67
+ readonly maybePress: Schema.Option<Schema.Struct<{
68
+ readonly pointerId: Schema.Finite;
69
+ readonly clientX: Schema.Finite;
70
+ readonly clientY: Schema.Finite;
71
+ }>>;
72
+ }>>;
73
+ }>;
74
+ export type Model = typeof Model.Type;
75
+ /** Union of all Messages a sortable can produce. */
76
+ export declare const Message: import("foldkit/message").MessageUnion<{
77
+ readonly GotDragAndDropMessage: {
78
+ message: import("foldkit/message").MessageUnion<{
79
+ readonly PressedDraggable: {
80
+ itemId: Schema.String;
81
+ containerId: Schema.String;
82
+ index: Schema.Number;
83
+ screenX: Schema.Number;
84
+ screenY: Schema.Number;
85
+ };
86
+ readonly MovedPointer: {
87
+ screenX: Schema.Number;
88
+ screenY: Schema.Number;
89
+ clientX: Schema.Number;
90
+ clientY: Schema.Number;
91
+ maybeDropTarget: Schema.Option<Schema.Struct<{
92
+ readonly containerId: Schema.String;
93
+ readonly index: Schema.Number;
94
+ }>>;
95
+ };
96
+ readonly ReleasedPointer: {};
97
+ readonly CancelledDrag: {};
98
+ readonly ActivatedKeyboardDrag: {
99
+ itemId: Schema.String;
100
+ containerId: Schema.String;
101
+ index: Schema.Number;
102
+ };
103
+ readonly CompletedResolveKeyboardMove: {
104
+ targetContainerId: Schema.String;
105
+ targetIndex: Schema.Number;
106
+ };
107
+ readonly ConfirmedKeyboardDrop: {};
108
+ readonly PressedArrowKey: {
109
+ direction: Schema.Literals<readonly ["Up", "Down", "Left", "Right", "NextContainer", "PreviousContainer"]>;
110
+ };
111
+ readonly AdvancedAutoScrollFrame: {};
112
+ readonly CompletedFocusItem: {};
113
+ }>;
114
+ };
115
+ readonly PressedItem: {
116
+ itemId: Schema.String;
117
+ pointerId: Schema.Finite;
118
+ screenX: Schema.Finite;
119
+ screenY: Schema.Finite;
120
+ clientX: Schema.Finite;
121
+ clientY: Schema.Finite;
122
+ items: Schema.$Array<Schema.Struct<{
123
+ readonly id: Schema.String;
124
+ readonly label: Schema.String;
125
+ }>>;
126
+ };
127
+ readonly PressedGripKey: {
128
+ itemId: Schema.String;
129
+ items: Schema.$Array<Schema.Struct<{
130
+ readonly id: Schema.String;
131
+ readonly label: Schema.String;
132
+ }>>;
133
+ };
134
+ readonly MovedPointer: {
135
+ screenX: Schema.Finite;
136
+ screenY: Schema.Finite;
137
+ clientX: Schema.Finite;
138
+ clientY: Schema.Finite;
139
+ maybeIndex: Schema.Option<Schema.Finite>;
140
+ };
141
+ readonly ReleasedPointer: {
142
+ screenX: Schema.Finite;
143
+ screenY: Schema.Finite;
144
+ clientX: Schema.Finite;
145
+ clientY: Schema.Finite;
146
+ maybeIndex: Schema.Option<Schema.Finite>;
147
+ };
148
+ readonly CancelledPointer: {};
149
+ readonly PressedEscape: {};
150
+ readonly CompletedAnnounceReorder: {};
151
+ readonly CompletedSizeLiftedItem: {};
152
+ }>;
153
+ export type Message = typeof Message.Type;
154
+ /** Union of OutMessages a sortable reports. `Moved`: an item was dropped somewhere new.
155
+ * `toIndex` is its place in the list once moved; `maybeAfterItemId` and `maybeBeforeItemId`
156
+ * name the items it now sits between, the anchors a list ordered by neighbours needs. A drop
157
+ * where the item already was, outside the list, or while items may not move reports nothing.
158
+ * The parent moves the item (or decides not to): the data is its own. */
159
+ export declare const OutMessage: import("foldkit/message").MessageUnion<{
160
+ readonly Moved: {
161
+ itemId: Schema.String;
162
+ fromIndex: Schema.Finite;
163
+ toIndex: Schema.Finite;
164
+ maybeAfterItemId: Schema.Option<Schema.String>;
165
+ maybeBeforeItemId: Schema.Option<Schema.String>;
166
+ };
167
+ }>;
168
+ export type OutMessage = typeof OutMessage.Type;
169
+ /** Configuration for creating a sortable with `init`. The `id` must be unique in the document;
170
+ * the list's DOM hooks are scoped by it. */
171
+ export type InitConfig = Readonly<{
172
+ id: string;
173
+ }>;
174
+ /** Creates a sortable with nothing held. */
175
+ export declare const init: (config: InitConfig) => Model;
176
+ /** Says a step of a move through the page's live region (as `Announcer.Announce` does). */
177
+ export declare const AnnounceReorder: Command.CommandDefinitionWithArgs<"AnnounceReorder", {
178
+ text: Schema.String;
179
+ }, Effect.Effect<{
180
+ readonly _tag: "CompletedAnnounceReorder";
181
+ }, never, never>>;
182
+ /** Processes a sortable Message and returns the next Model, Commands and OutMessage. */
183
+ export declare const update: (model: Model, message: Message) => Readonly<{
184
+ model: {
185
+ readonly dragAndDrop: {
186
+ readonly id: string;
187
+ readonly orientation: "Horizontal" | "Vertical";
188
+ readonly activationThreshold: number;
189
+ readonly dragState: {
190
+ readonly _tag: "Idle";
191
+ } | {
192
+ readonly _tag: "Dragging";
193
+ readonly itemId: string;
194
+ readonly sourceContainerId: string;
195
+ readonly sourceIndex: number;
196
+ readonly origin: {
197
+ readonly screenX: number;
198
+ readonly screenY: number;
199
+ };
200
+ readonly current: {
201
+ readonly clientX: number;
202
+ readonly clientY: number;
203
+ };
204
+ readonly maybeDropTarget: Option.Option<{
205
+ readonly containerId: string;
206
+ readonly index: number;
207
+ }>;
208
+ } | {
209
+ readonly _tag: "KeyboardDragging";
210
+ readonly itemId: string;
211
+ readonly sourceContainerId: string;
212
+ readonly sourceIndex: number;
213
+ readonly targetContainerId: string;
214
+ readonly targetIndex: number;
215
+ } | {
216
+ readonly _tag: "Pending";
217
+ readonly itemId: string;
218
+ readonly containerId: string;
219
+ readonly index: number;
220
+ readonly origin: {
221
+ readonly screenX: number;
222
+ readonly screenY: number;
223
+ };
224
+ };
225
+ };
226
+ readonly maybeHeld: Option.Option<{
227
+ readonly item: {
228
+ readonly id: string;
229
+ readonly label: string;
230
+ };
231
+ readonly items: readonly {
232
+ readonly id: string;
233
+ readonly label: string;
234
+ }[];
235
+ readonly maybePress: Option.Option<{
236
+ readonly pointerId: number;
237
+ readonly clientX: number;
238
+ readonly clientY: number;
239
+ }>;
240
+ }>;
241
+ };
242
+ commands?: Update.Commands<{
243
+ readonly _tag: "CompletedAnnounceReorder";
244
+ } | {
245
+ readonly _tag: "CancelledPointer";
246
+ } | {
247
+ readonly _tag: "CompletedSizeLiftedItem";
248
+ } | {
249
+ readonly _tag: "GotDragAndDropMessage";
250
+ readonly message: {
251
+ readonly _tag: "ActivatedKeyboardDrag";
252
+ readonly itemId: string;
253
+ readonly containerId: string;
254
+ readonly index: number;
255
+ } | {
256
+ readonly _tag: "AdvancedAutoScrollFrame";
257
+ } | {
258
+ readonly _tag: "CancelledDrag";
259
+ } | {
260
+ readonly _tag: "CompletedFocusItem";
261
+ } | {
262
+ readonly _tag: "CompletedResolveKeyboardMove";
263
+ readonly targetContainerId: string;
264
+ readonly targetIndex: number;
265
+ } | {
266
+ readonly _tag: "ConfirmedKeyboardDrop";
267
+ } | {
268
+ readonly _tag: "MovedPointer";
269
+ readonly screenX: number;
270
+ readonly screenY: number;
271
+ readonly clientX: number;
272
+ readonly clientY: number;
273
+ readonly maybeDropTarget: Option.Option<{
274
+ readonly containerId: string;
275
+ readonly index: number;
276
+ }>;
277
+ } | {
278
+ readonly _tag: "PressedArrowKey";
279
+ readonly direction: "Down" | "Left" | "NextContainer" | "PreviousContainer" | "Right" | "Up";
280
+ } | {
281
+ readonly _tag: "PressedDraggable";
282
+ readonly itemId: string;
283
+ readonly containerId: string;
284
+ readonly index: number;
285
+ readonly screenX: number;
286
+ readonly screenY: number;
287
+ } | {
288
+ readonly _tag: "ReleasedPointer";
289
+ };
290
+ } | {
291
+ readonly _tag: "MovedPointer";
292
+ readonly screenX: number;
293
+ readonly screenY: number;
294
+ readonly clientX: number;
295
+ readonly clientY: number;
296
+ readonly maybeIndex: Option.Option<number>;
297
+ } | {
298
+ readonly _tag: "PressedEscape";
299
+ } | {
300
+ readonly _tag: "PressedGripKey";
301
+ readonly itemId: string;
302
+ readonly items: readonly {
303
+ readonly id: string;
304
+ readonly label: string;
305
+ }[];
306
+ } | {
307
+ readonly _tag: "PressedItem";
308
+ readonly itemId: string;
309
+ readonly pointerId: number;
310
+ readonly screenX: number;
311
+ readonly screenY: number;
312
+ readonly clientX: number;
313
+ readonly clientY: number;
314
+ readonly items: readonly {
315
+ readonly id: string;
316
+ readonly label: string;
317
+ }[];
318
+ } | {
319
+ readonly _tag: "ReleasedPointer";
320
+ readonly screenX: number;
321
+ readonly screenY: number;
322
+ readonly clientX: number;
323
+ readonly clientY: number;
324
+ readonly maybeIndex: Option.Option<number>;
325
+ }, never>;
326
+ outMessage?: {
327
+ readonly _tag: "Moved";
328
+ readonly itemId: string;
329
+ readonly fromIndex: number;
330
+ readonly toIndex: number;
331
+ readonly maybeAfterItemId: Option.Option<string>;
332
+ readonly maybeBeforeItemId: Option.Option<string>;
333
+ };
334
+ }>;
335
+ /** A held item follows the pointer, the arrows and Space move and drop it, Escape puts it back
336
+ * and the page scrolls near its edges, from listeners that run only while an item is pressed
337
+ * or held. Lift them into the application's Subscriptions, once per list, behind a key prefix
338
+ * of the parent's: `subscriptions("order")` is keyed `orderPointer`, `orderEscape`,
339
+ * `orderKeyboard` and `orderAutoScroll`. */
340
+ export declare const subscriptions: <Prefix extends string>(keyPrefix: Prefix) => {
341
+ readonly pointer: Subscription.EntryWithoutKeepAlive<{
342
+ readonly dragAndDrop: {
343
+ readonly id: string;
344
+ readonly orientation: "Horizontal" | "Vertical";
345
+ readonly activationThreshold: number;
346
+ readonly dragState: {
347
+ readonly _tag: "Idle";
348
+ } | {
349
+ readonly _tag: "Dragging";
350
+ readonly itemId: string;
351
+ readonly sourceContainerId: string;
352
+ readonly sourceIndex: number;
353
+ readonly origin: {
354
+ readonly screenX: number;
355
+ readonly screenY: number;
356
+ };
357
+ readonly current: {
358
+ readonly clientX: number;
359
+ readonly clientY: number;
360
+ };
361
+ readonly maybeDropTarget: Option.Option<{
362
+ readonly containerId: string;
363
+ readonly index: number;
364
+ }>;
365
+ } | {
366
+ readonly _tag: "KeyboardDragging";
367
+ readonly itemId: string;
368
+ readonly sourceContainerId: string;
369
+ readonly sourceIndex: number;
370
+ readonly targetContainerId: string;
371
+ readonly targetIndex: number;
372
+ } | {
373
+ readonly _tag: "Pending";
374
+ readonly itemId: string;
375
+ readonly containerId: string;
376
+ readonly index: number;
377
+ readonly origin: {
378
+ readonly screenX: number;
379
+ readonly screenY: number;
380
+ };
381
+ };
382
+ };
383
+ readonly maybeHeld: Option.Option<{
384
+ readonly item: {
385
+ readonly id: string;
386
+ readonly label: string;
387
+ };
388
+ readonly items: readonly {
389
+ readonly id: string;
390
+ readonly label: string;
391
+ }[];
392
+ readonly maybePress: Option.Option<{
393
+ readonly pointerId: number;
394
+ readonly clientX: number;
395
+ readonly clientY: number;
396
+ }>;
397
+ }>;
398
+ }, {
399
+ readonly _tag: "CompletedAnnounceReorder";
400
+ } | {
401
+ readonly _tag: "CancelledPointer";
402
+ } | {
403
+ readonly _tag: "CompletedSizeLiftedItem";
404
+ } | {
405
+ readonly _tag: "GotDragAndDropMessage";
406
+ readonly message: {
407
+ readonly _tag: "ActivatedKeyboardDrag";
408
+ readonly itemId: string;
409
+ readonly containerId: string;
410
+ readonly index: number;
411
+ } | {
412
+ readonly _tag: "AdvancedAutoScrollFrame";
413
+ } | {
414
+ readonly _tag: "CancelledDrag";
415
+ } | {
416
+ readonly _tag: "CompletedFocusItem";
417
+ } | {
418
+ readonly _tag: "CompletedResolveKeyboardMove";
419
+ readonly targetContainerId: string;
420
+ readonly targetIndex: number;
421
+ } | {
422
+ readonly _tag: "ConfirmedKeyboardDrop";
423
+ } | {
424
+ readonly _tag: "MovedPointer";
425
+ readonly screenX: number;
426
+ readonly screenY: number;
427
+ readonly clientX: number;
428
+ readonly clientY: number;
429
+ readonly maybeDropTarget: Option.Option<{
430
+ readonly containerId: string;
431
+ readonly index: number;
432
+ }>;
433
+ } | {
434
+ readonly _tag: "PressedArrowKey";
435
+ readonly direction: "Down" | "Left" | "NextContainer" | "PreviousContainer" | "Right" | "Up";
436
+ } | {
437
+ readonly _tag: "PressedDraggable";
438
+ readonly itemId: string;
439
+ readonly containerId: string;
440
+ readonly index: number;
441
+ readonly screenX: number;
442
+ readonly screenY: number;
443
+ } | {
444
+ readonly _tag: "ReleasedPointer";
445
+ };
446
+ } | {
447
+ readonly _tag: "MovedPointer";
448
+ readonly screenX: number;
449
+ readonly screenY: number;
450
+ readonly clientX: number;
451
+ readonly clientY: number;
452
+ readonly maybeIndex: Option.Option<number>;
453
+ } | {
454
+ readonly _tag: "PressedEscape";
455
+ } | {
456
+ readonly _tag: "PressedGripKey";
457
+ readonly itemId: string;
458
+ readonly items: readonly {
459
+ readonly id: string;
460
+ readonly label: string;
461
+ }[];
462
+ } | {
463
+ readonly _tag: "PressedItem";
464
+ readonly itemId: string;
465
+ readonly pointerId: number;
466
+ readonly screenX: number;
467
+ readonly screenY: number;
468
+ readonly clientX: number;
469
+ readonly clientY: number;
470
+ readonly items: readonly {
471
+ readonly id: string;
472
+ readonly label: string;
473
+ }[];
474
+ } | {
475
+ readonly _tag: "ReleasedPointer";
476
+ readonly screenX: number;
477
+ readonly screenY: number;
478
+ readonly clientX: number;
479
+ readonly clientY: number;
480
+ readonly maybeIndex: Option.Option<number>;
481
+ }, {
482
+ readonly maybeHold: Option.Option<{
483
+ readonly listId: string;
484
+ readonly heldHook: string;
485
+ readonly pointerId: number;
486
+ }>;
487
+ }, never> & {
488
+ readonly __subscription: never;
489
+ };
490
+ } & {
491
+ readonly escape: Subscription.EntryWithoutKeepAlive<{
492
+ readonly dragAndDrop: {
493
+ readonly id: string;
494
+ readonly orientation: "Horizontal" | "Vertical";
495
+ readonly activationThreshold: number;
496
+ readonly dragState: {
497
+ readonly _tag: "Idle";
498
+ } | {
499
+ readonly _tag: "Dragging";
500
+ readonly itemId: string;
501
+ readonly sourceContainerId: string;
502
+ readonly sourceIndex: number;
503
+ readonly origin: {
504
+ readonly screenX: number;
505
+ readonly screenY: number;
506
+ };
507
+ readonly current: {
508
+ readonly clientX: number;
509
+ readonly clientY: number;
510
+ };
511
+ readonly maybeDropTarget: Option.Option<{
512
+ readonly containerId: string;
513
+ readonly index: number;
514
+ }>;
515
+ } | {
516
+ readonly _tag: "KeyboardDragging";
517
+ readonly itemId: string;
518
+ readonly sourceContainerId: string;
519
+ readonly sourceIndex: number;
520
+ readonly targetContainerId: string;
521
+ readonly targetIndex: number;
522
+ } | {
523
+ readonly _tag: "Pending";
524
+ readonly itemId: string;
525
+ readonly containerId: string;
526
+ readonly index: number;
527
+ readonly origin: {
528
+ readonly screenX: number;
529
+ readonly screenY: number;
530
+ };
531
+ };
532
+ };
533
+ readonly maybeHeld: Option.Option<{
534
+ readonly item: {
535
+ readonly id: string;
536
+ readonly label: string;
537
+ };
538
+ readonly items: readonly {
539
+ readonly id: string;
540
+ readonly label: string;
541
+ }[];
542
+ readonly maybePress: Option.Option<{
543
+ readonly pointerId: number;
544
+ readonly clientX: number;
545
+ readonly clientY: number;
546
+ }>;
547
+ }>;
548
+ }, {
549
+ readonly _tag: "CompletedAnnounceReorder";
550
+ } | {
551
+ readonly _tag: "CancelledPointer";
552
+ } | {
553
+ readonly _tag: "CompletedSizeLiftedItem";
554
+ } | {
555
+ readonly _tag: "GotDragAndDropMessage";
556
+ readonly message: {
557
+ readonly _tag: "ActivatedKeyboardDrag";
558
+ readonly itemId: string;
559
+ readonly containerId: string;
560
+ readonly index: number;
561
+ } | {
562
+ readonly _tag: "AdvancedAutoScrollFrame";
563
+ } | {
564
+ readonly _tag: "CancelledDrag";
565
+ } | {
566
+ readonly _tag: "CompletedFocusItem";
567
+ } | {
568
+ readonly _tag: "CompletedResolveKeyboardMove";
569
+ readonly targetContainerId: string;
570
+ readonly targetIndex: number;
571
+ } | {
572
+ readonly _tag: "ConfirmedKeyboardDrop";
573
+ } | {
574
+ readonly _tag: "MovedPointer";
575
+ readonly screenX: number;
576
+ readonly screenY: number;
577
+ readonly clientX: number;
578
+ readonly clientY: number;
579
+ readonly maybeDropTarget: Option.Option<{
580
+ readonly containerId: string;
581
+ readonly index: number;
582
+ }>;
583
+ } | {
584
+ readonly _tag: "PressedArrowKey";
585
+ readonly direction: "Down" | "Left" | "NextContainer" | "PreviousContainer" | "Right" | "Up";
586
+ } | {
587
+ readonly _tag: "PressedDraggable";
588
+ readonly itemId: string;
589
+ readonly containerId: string;
590
+ readonly index: number;
591
+ readonly screenX: number;
592
+ readonly screenY: number;
593
+ } | {
594
+ readonly _tag: "ReleasedPointer";
595
+ };
596
+ } | {
597
+ readonly _tag: "MovedPointer";
598
+ readonly screenX: number;
599
+ readonly screenY: number;
600
+ readonly clientX: number;
601
+ readonly clientY: number;
602
+ readonly maybeIndex: Option.Option<number>;
603
+ } | {
604
+ readonly _tag: "PressedEscape";
605
+ } | {
606
+ readonly _tag: "PressedGripKey";
607
+ readonly itemId: string;
608
+ readonly items: readonly {
609
+ readonly id: string;
610
+ readonly label: string;
611
+ }[];
612
+ } | {
613
+ readonly _tag: "PressedItem";
614
+ readonly itemId: string;
615
+ readonly pointerId: number;
616
+ readonly screenX: number;
617
+ readonly screenY: number;
618
+ readonly clientX: number;
619
+ readonly clientY: number;
620
+ readonly items: readonly {
621
+ readonly id: string;
622
+ readonly label: string;
623
+ }[];
624
+ } | {
625
+ readonly _tag: "ReleasedPointer";
626
+ readonly screenX: number;
627
+ readonly screenY: number;
628
+ readonly clientX: number;
629
+ readonly clientY: number;
630
+ readonly maybeIndex: Option.Option<number>;
631
+ }, {
632
+ readonly isHolding: boolean;
633
+ }, never> & {
634
+ readonly __subscription: never;
635
+ };
636
+ } & {
637
+ readonly autoScroll: Subscription.Subscription<{
638
+ readonly dragAndDrop: {
639
+ readonly id: string;
640
+ readonly orientation: "Horizontal" | "Vertical";
641
+ readonly activationThreshold: number;
642
+ readonly dragState: {
643
+ readonly _tag: "Idle";
644
+ } | {
645
+ readonly _tag: "Dragging";
646
+ readonly itemId: string;
647
+ readonly sourceContainerId: string;
648
+ readonly sourceIndex: number;
649
+ readonly origin: {
650
+ readonly screenX: number;
651
+ readonly screenY: number;
652
+ };
653
+ readonly current: {
654
+ readonly clientX: number;
655
+ readonly clientY: number;
656
+ };
657
+ readonly maybeDropTarget: Option.Option<{
658
+ readonly containerId: string;
659
+ readonly index: number;
660
+ }>;
661
+ } | {
662
+ readonly _tag: "KeyboardDragging";
663
+ readonly itemId: string;
664
+ readonly sourceContainerId: string;
665
+ readonly sourceIndex: number;
666
+ readonly targetContainerId: string;
667
+ readonly targetIndex: number;
668
+ } | {
669
+ readonly _tag: "Pending";
670
+ readonly itemId: string;
671
+ readonly containerId: string;
672
+ readonly index: number;
673
+ readonly origin: {
674
+ readonly screenX: number;
675
+ readonly screenY: number;
676
+ };
677
+ };
678
+ };
679
+ readonly maybeHeld: Option.Option<{
680
+ readonly item: {
681
+ readonly id: string;
682
+ readonly label: string;
683
+ };
684
+ readonly items: readonly {
685
+ readonly id: string;
686
+ readonly label: string;
687
+ }[];
688
+ readonly maybePress: Option.Option<{
689
+ readonly pointerId: number;
690
+ readonly clientX: number;
691
+ readonly clientY: number;
692
+ }>;
693
+ }>;
694
+ }, {
695
+ readonly _tag: "CompletedAnnounceReorder";
696
+ } | {
697
+ readonly _tag: "CancelledPointer";
698
+ } | {
699
+ readonly _tag: "CompletedSizeLiftedItem";
700
+ } | {
701
+ readonly _tag: "GotDragAndDropMessage";
702
+ readonly message: {
703
+ readonly _tag: "ActivatedKeyboardDrag";
704
+ readonly itemId: string;
705
+ readonly containerId: string;
706
+ readonly index: number;
707
+ } | {
708
+ readonly _tag: "AdvancedAutoScrollFrame";
709
+ } | {
710
+ readonly _tag: "CancelledDrag";
711
+ } | {
712
+ readonly _tag: "CompletedFocusItem";
713
+ } | {
714
+ readonly _tag: "CompletedResolveKeyboardMove";
715
+ readonly targetContainerId: string;
716
+ readonly targetIndex: number;
717
+ } | {
718
+ readonly _tag: "ConfirmedKeyboardDrop";
719
+ } | {
720
+ readonly _tag: "MovedPointer";
721
+ readonly screenX: number;
722
+ readonly screenY: number;
723
+ readonly clientX: number;
724
+ readonly clientY: number;
725
+ readonly maybeDropTarget: Option.Option<{
726
+ readonly containerId: string;
727
+ readonly index: number;
728
+ }>;
729
+ } | {
730
+ readonly _tag: "PressedArrowKey";
731
+ readonly direction: "Down" | "Left" | "NextContainer" | "PreviousContainer" | "Right" | "Up";
732
+ } | {
733
+ readonly _tag: "PressedDraggable";
734
+ readonly itemId: string;
735
+ readonly containerId: string;
736
+ readonly index: number;
737
+ readonly screenX: number;
738
+ readonly screenY: number;
739
+ } | {
740
+ readonly _tag: "ReleasedPointer";
741
+ };
742
+ } | {
743
+ readonly _tag: "MovedPointer";
744
+ readonly screenX: number;
745
+ readonly screenY: number;
746
+ readonly clientX: number;
747
+ readonly clientY: number;
748
+ readonly maybeIndex: Option.Option<number>;
749
+ } | {
750
+ readonly _tag: "PressedEscape";
751
+ } | {
752
+ readonly _tag: "PressedGripKey";
753
+ readonly itemId: string;
754
+ readonly items: readonly {
755
+ readonly id: string;
756
+ readonly label: string;
757
+ }[];
758
+ } | {
759
+ readonly _tag: "PressedItem";
760
+ readonly itemId: string;
761
+ readonly pointerId: number;
762
+ readonly screenX: number;
763
+ readonly screenY: number;
764
+ readonly clientX: number;
765
+ readonly clientY: number;
766
+ readonly items: readonly {
767
+ readonly id: string;
768
+ readonly label: string;
769
+ }[];
770
+ } | {
771
+ readonly _tag: "ReleasedPointer";
772
+ readonly screenX: number;
773
+ readonly screenY: number;
774
+ readonly clientX: number;
775
+ readonly clientY: number;
776
+ readonly maybeIndex: Option.Option<number>;
777
+ }, Readonly<{
778
+ maybeDependencies: Option.Option<{
779
+ readonly isDragging: boolean;
780
+ readonly clientY: number;
781
+ }>;
782
+ }>, never>;
783
+ readonly keyboard: Subscription.Subscription<{
784
+ readonly dragAndDrop: {
785
+ readonly id: string;
786
+ readonly orientation: "Horizontal" | "Vertical";
787
+ readonly activationThreshold: number;
788
+ readonly dragState: {
789
+ readonly _tag: "Idle";
790
+ } | {
791
+ readonly _tag: "Dragging";
792
+ readonly itemId: string;
793
+ readonly sourceContainerId: string;
794
+ readonly sourceIndex: number;
795
+ readonly origin: {
796
+ readonly screenX: number;
797
+ readonly screenY: number;
798
+ };
799
+ readonly current: {
800
+ readonly clientX: number;
801
+ readonly clientY: number;
802
+ };
803
+ readonly maybeDropTarget: Option.Option<{
804
+ readonly containerId: string;
805
+ readonly index: number;
806
+ }>;
807
+ } | {
808
+ readonly _tag: "KeyboardDragging";
809
+ readonly itemId: string;
810
+ readonly sourceContainerId: string;
811
+ readonly sourceIndex: number;
812
+ readonly targetContainerId: string;
813
+ readonly targetIndex: number;
814
+ } | {
815
+ readonly _tag: "Pending";
816
+ readonly itemId: string;
817
+ readonly containerId: string;
818
+ readonly index: number;
819
+ readonly origin: {
820
+ readonly screenX: number;
821
+ readonly screenY: number;
822
+ };
823
+ };
824
+ };
825
+ readonly maybeHeld: Option.Option<{
826
+ readonly item: {
827
+ readonly id: string;
828
+ readonly label: string;
829
+ };
830
+ readonly items: readonly {
831
+ readonly id: string;
832
+ readonly label: string;
833
+ }[];
834
+ readonly maybePress: Option.Option<{
835
+ readonly pointerId: number;
836
+ readonly clientX: number;
837
+ readonly clientY: number;
838
+ }>;
839
+ }>;
840
+ }, {
841
+ readonly _tag: "CompletedAnnounceReorder";
842
+ } | {
843
+ readonly _tag: "CancelledPointer";
844
+ } | {
845
+ readonly _tag: "CompletedSizeLiftedItem";
846
+ } | {
847
+ readonly _tag: "GotDragAndDropMessage";
848
+ readonly message: {
849
+ readonly _tag: "ActivatedKeyboardDrag";
850
+ readonly itemId: string;
851
+ readonly containerId: string;
852
+ readonly index: number;
853
+ } | {
854
+ readonly _tag: "AdvancedAutoScrollFrame";
855
+ } | {
856
+ readonly _tag: "CancelledDrag";
857
+ } | {
858
+ readonly _tag: "CompletedFocusItem";
859
+ } | {
860
+ readonly _tag: "CompletedResolveKeyboardMove";
861
+ readonly targetContainerId: string;
862
+ readonly targetIndex: number;
863
+ } | {
864
+ readonly _tag: "ConfirmedKeyboardDrop";
865
+ } | {
866
+ readonly _tag: "MovedPointer";
867
+ readonly screenX: number;
868
+ readonly screenY: number;
869
+ readonly clientX: number;
870
+ readonly clientY: number;
871
+ readonly maybeDropTarget: Option.Option<{
872
+ readonly containerId: string;
873
+ readonly index: number;
874
+ }>;
875
+ } | {
876
+ readonly _tag: "PressedArrowKey";
877
+ readonly direction: "Down" | "Left" | "NextContainer" | "PreviousContainer" | "Right" | "Up";
878
+ } | {
879
+ readonly _tag: "PressedDraggable";
880
+ readonly itemId: string;
881
+ readonly containerId: string;
882
+ readonly index: number;
883
+ readonly screenX: number;
884
+ readonly screenY: number;
885
+ } | {
886
+ readonly _tag: "ReleasedPointer";
887
+ };
888
+ } | {
889
+ readonly _tag: "MovedPointer";
890
+ readonly screenX: number;
891
+ readonly screenY: number;
892
+ readonly clientX: number;
893
+ readonly clientY: number;
894
+ readonly maybeIndex: Option.Option<number>;
895
+ } | {
896
+ readonly _tag: "PressedEscape";
897
+ } | {
898
+ readonly _tag: "PressedGripKey";
899
+ readonly itemId: string;
900
+ readonly items: readonly {
901
+ readonly id: string;
902
+ readonly label: string;
903
+ }[];
904
+ } | {
905
+ readonly _tag: "PressedItem";
906
+ readonly itemId: string;
907
+ readonly pointerId: number;
908
+ readonly screenX: number;
909
+ readonly screenY: number;
910
+ readonly clientX: number;
911
+ readonly clientY: number;
912
+ readonly items: readonly {
913
+ readonly id: string;
914
+ readonly label: string;
915
+ }[];
916
+ } | {
917
+ readonly _tag: "ReleasedPointer";
918
+ readonly screenX: number;
919
+ readonly screenY: number;
920
+ readonly clientX: number;
921
+ readonly clientY: number;
922
+ readonly maybeIndex: Option.Option<number>;
923
+ }, Readonly<{
924
+ maybeDependencies: Option.Option<{
925
+ readonly dragActivity: "Active" | "Idle";
926
+ }>;
927
+ }>, never>;
928
+ } extends (infer T) ? { readonly [Key in keyof T as `${Prefix}${Capitalize<Key>}`]: T[Key]; } : never;
929
+ /** How the items lay out: a column of rows, tiles that wrap, or the parent's own panels. */
930
+ export type Layout = "List" | "Grid" | "Panels";
931
+ /** What the list hands `toItemView` for each item. */
932
+ export type ItemRender = Readonly<{
933
+ /** This render is the held copy: hidden from screen readers and inert. Leave out ids and
934
+ * anything the page must find once. */
935
+ isLifted: boolean;
936
+ /** The item's grip, for the `"Panels"` layout, where the item places it: in its panel's
937
+ * `lead`. The other layouts print it before the item themselves. */
938
+ grip: Html;
939
+ }>;
940
+ /** Per-render inputs passed to `view` through `h.submodel`'s `viewInputs`. The `to*` members
941
+ * are functions because they may carry the parent's handlers. */
942
+ export type ViewInputs = Readonly<{
943
+ items: readonly Item[];
944
+ /** Names the list for screen readers. */
945
+ label: string;
946
+ /** `"List"` (the default): rows between 1px rules, for a flush panel. `"Grid"`: tiles that
947
+ * wrap, 180px and up. `"Panels"`: each item is a Panel the parent prints, with `render.grip`
948
+ * in its `lead`, up to three across in the deck's gutter, 300px and up. */
949
+ layout?: Layout;
950
+ /** The reader may look but not reorder, as a read-only sign-in: every grip prints held, as
951
+ * while moves are held, and nothing lifts. */
952
+ isReadOnly?: boolean;
953
+ /** One item's content, beside its grip. Also called for the held copy, with
954
+ * `render.isLifted`. */
955
+ toItemView: (item: Item, render: ItemRender) => readonly Html[];
956
+ }>;
957
+ /**
958
+ * Items the reader puts in order, as rows, as tiles or as panels, built on `@foldkit/ui`'s
959
+ * DragAndDrop: `div.sortable` holding `ul.sortable-items` (named by `label`) of
960
+ * `li.sortable-item`, each its grip and the parent's content (a panel holds its grip in its
961
+ * title bar). The items are the parent's; a drop reports `Moved`.
962
+ *
963
+ * Only the grip lifts an item, under every pointer, so the item's own text selects and a
964
+ * finger on it scrolls the page; the keyboard takes the grip too: Space or Enter picks the
965
+ * item up, every arrow moves it one place in reading order, Space drops it and Escape puts it back.
966
+ * The held item dims in place; a copy, lifted onto the card shadow, follows the pointer or
967
+ * prints where the keyboard would drop it; each step is said through the page's live region.
968
+ * Lift `subscriptions(keyPrefix)` into the application's, or nothing follows the pointer or
969
+ * the keys.
970
+ */
971
+ export declare const view: import("foldkit/submodel").View<{
972
+ readonly dragAndDrop: {
973
+ readonly id: string;
974
+ readonly orientation: "Horizontal" | "Vertical";
975
+ readonly activationThreshold: number;
976
+ readonly dragState: {
977
+ readonly _tag: "Idle";
978
+ } | {
979
+ readonly _tag: "Dragging";
980
+ readonly itemId: string;
981
+ readonly sourceContainerId: string;
982
+ readonly sourceIndex: number;
983
+ readonly origin: {
984
+ readonly screenX: number;
985
+ readonly screenY: number;
986
+ };
987
+ readonly current: {
988
+ readonly clientX: number;
989
+ readonly clientY: number;
990
+ };
991
+ readonly maybeDropTarget: Option.Option<{
992
+ readonly containerId: string;
993
+ readonly index: number;
994
+ }>;
995
+ } | {
996
+ readonly _tag: "KeyboardDragging";
997
+ readonly itemId: string;
998
+ readonly sourceContainerId: string;
999
+ readonly sourceIndex: number;
1000
+ readonly targetContainerId: string;
1001
+ readonly targetIndex: number;
1002
+ } | {
1003
+ readonly _tag: "Pending";
1004
+ readonly itemId: string;
1005
+ readonly containerId: string;
1006
+ readonly index: number;
1007
+ readonly origin: {
1008
+ readonly screenX: number;
1009
+ readonly screenY: number;
1010
+ };
1011
+ };
1012
+ };
1013
+ readonly maybeHeld: Option.Option<{
1014
+ readonly item: {
1015
+ readonly id: string;
1016
+ readonly label: string;
1017
+ };
1018
+ readonly items: readonly {
1019
+ readonly id: string;
1020
+ readonly label: string;
1021
+ }[];
1022
+ readonly maybePress: Option.Option<{
1023
+ readonly pointerId: number;
1024
+ readonly clientX: number;
1025
+ readonly clientY: number;
1026
+ }>;
1027
+ }>;
1028
+ }, {
1029
+ readonly _tag: "CompletedAnnounceReorder";
1030
+ } | {
1031
+ readonly _tag: "CancelledPointer";
1032
+ } | {
1033
+ readonly _tag: "CompletedSizeLiftedItem";
1034
+ } | {
1035
+ readonly _tag: "GotDragAndDropMessage";
1036
+ readonly message: {
1037
+ readonly _tag: "ActivatedKeyboardDrag";
1038
+ readonly itemId: string;
1039
+ readonly containerId: string;
1040
+ readonly index: number;
1041
+ } | {
1042
+ readonly _tag: "AdvancedAutoScrollFrame";
1043
+ } | {
1044
+ readonly _tag: "CancelledDrag";
1045
+ } | {
1046
+ readonly _tag: "CompletedFocusItem";
1047
+ } | {
1048
+ readonly _tag: "CompletedResolveKeyboardMove";
1049
+ readonly targetContainerId: string;
1050
+ readonly targetIndex: number;
1051
+ } | {
1052
+ readonly _tag: "ConfirmedKeyboardDrop";
1053
+ } | {
1054
+ readonly _tag: "MovedPointer";
1055
+ readonly screenX: number;
1056
+ readonly screenY: number;
1057
+ readonly clientX: number;
1058
+ readonly clientY: number;
1059
+ readonly maybeDropTarget: Option.Option<{
1060
+ readonly containerId: string;
1061
+ readonly index: number;
1062
+ }>;
1063
+ } | {
1064
+ readonly _tag: "PressedArrowKey";
1065
+ readonly direction: "Down" | "Left" | "NextContainer" | "PreviousContainer" | "Right" | "Up";
1066
+ } | {
1067
+ readonly _tag: "PressedDraggable";
1068
+ readonly itemId: string;
1069
+ readonly containerId: string;
1070
+ readonly index: number;
1071
+ readonly screenX: number;
1072
+ readonly screenY: number;
1073
+ } | {
1074
+ readonly _tag: "ReleasedPointer";
1075
+ };
1076
+ } | {
1077
+ readonly _tag: "MovedPointer";
1078
+ readonly screenX: number;
1079
+ readonly screenY: number;
1080
+ readonly clientX: number;
1081
+ readonly clientY: number;
1082
+ readonly maybeIndex: Option.Option<number>;
1083
+ } | {
1084
+ readonly _tag: "PressedEscape";
1085
+ } | {
1086
+ readonly _tag: "PressedGripKey";
1087
+ readonly itemId: string;
1088
+ readonly items: readonly {
1089
+ readonly id: string;
1090
+ readonly label: string;
1091
+ }[];
1092
+ } | {
1093
+ readonly _tag: "PressedItem";
1094
+ readonly itemId: string;
1095
+ readonly pointerId: number;
1096
+ readonly screenX: number;
1097
+ readonly screenY: number;
1098
+ readonly clientX: number;
1099
+ readonly clientY: number;
1100
+ readonly items: readonly {
1101
+ readonly id: string;
1102
+ readonly label: string;
1103
+ }[];
1104
+ } | {
1105
+ readonly _tag: "ReleasedPointer";
1106
+ readonly screenX: number;
1107
+ readonly screenY: number;
1108
+ readonly clientX: number;
1109
+ readonly clientY: number;
1110
+ readonly maybeIndex: Option.Option<number>;
1111
+ }, Readonly<{
1112
+ items: readonly Item[];
1113
+ /** Names the list for screen readers. */
1114
+ label: string;
1115
+ /** `"List"` (the default): rows between 1px rules, for a flush panel. `"Grid"`: tiles that
1116
+ * wrap, 180px and up. `"Panels"`: each item is a Panel the parent prints, with `render.grip`
1117
+ * in its `lead`, up to three across in the deck's gutter, 300px and up. */
1118
+ layout?: Layout;
1119
+ /** The reader may look but not reorder, as a read-only sign-in: every grip prints held, as
1120
+ * while moves are held, and nothing lifts. */
1121
+ isReadOnly?: boolean;
1122
+ /** One item's content, beside its grip. Also called for the held copy, with
1123
+ * `render.isLifted`. */
1124
+ toItemView: (item: Item, render: ItemRender) => readonly Html[];
1125
+ }>>;