@gjermundgaraba-designs/pixel-paper 0.26.0 → 0.27.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 (940) hide show
  1. package/DESIGN.md +28 -3
  2. package/dist/src/adapters/diagram.d.ts +38 -0
  3. package/dist/src/adapters/diagram.d.ts.map +1 -0
  4. package/dist/src/adapters/diagram.js +206 -0
  5. package/dist/src/adapters/mermaid.d.ts +2 -20
  6. package/dist/src/adapters/mermaid.d.ts.map +1 -1
  7. package/dist/src/adapters/mermaid.js +9 -229
  8. package/dist/src/announcer/announcer.d.ts +0 -4
  9. package/dist/src/announcer/announcer.d.ts.map +1 -1
  10. package/dist/src/announcer/announcer.js +19 -18
  11. package/dist/src/attributes/attributes.d.ts.map +1 -1
  12. package/dist/src/{audioFrame/audioFrame.d.ts → audio-frame/audio-frame.d.ts} +1 -1
  13. package/dist/src/audio-frame/audio-frame.d.ts.map +1 -0
  14. package/dist/src/{audioFrame/audioFrame.js → audio-frame/audio-frame.js} +1 -1
  15. package/dist/src/audio-frame/index.d.ts +3 -0
  16. package/dist/src/audio-frame/index.d.ts.map +1 -0
  17. package/dist/src/audio-frame/index.js +1 -0
  18. package/dist/src/banner/banner.d.ts.map +1 -1
  19. package/dist/src/banner/index.d.ts.map +1 -1
  20. package/dist/src/{barChart/barChart.d.ts → bar-chart/bar-chart.d.ts} +2 -2
  21. package/dist/src/bar-chart/bar-chart.d.ts.map +1 -0
  22. package/dist/src/{barChart/barChart.js → bar-chart/bar-chart.js} +40 -35
  23. package/dist/src/bar-chart/index.d.ts +3 -0
  24. package/dist/src/bar-chart/index.d.ts.map +1 -0
  25. package/dist/src/bar-chart/index.js +1 -0
  26. package/dist/src/bench/bench.d.ts.map +1 -1
  27. package/dist/src/bench/index.d.ts.map +1 -1
  28. package/dist/src/board/board.d.ts +45 -46
  29. package/dist/src/board/board.d.ts.map +1 -1
  30. package/dist/src/board/board.js +76 -102
  31. package/dist/src/board/index.d.ts +1 -1
  32. package/dist/src/board/index.d.ts.map +1 -1
  33. package/dist/src/button/button.d.ts +1 -2
  34. package/dist/src/button/button.d.ts.map +1 -1
  35. package/dist/src/button/button.js +7 -5
  36. package/dist/src/button/index.d.ts +1 -1
  37. package/dist/src/button/index.d.ts.map +1 -1
  38. package/dist/src/card/card.d.ts.map +1 -1
  39. package/dist/src/card/card.js +4 -2
  40. package/dist/src/card/index.d.ts.map +1 -1
  41. package/dist/src/{chartTable/chartTable.d.ts → chart-table/chart-table.d.ts} +4 -14
  42. package/dist/src/chart-table/chart-table.d.ts.map +1 -0
  43. package/dist/src/{chartTable/chartTable.js → chart-table/chart-table.js} +9 -16
  44. package/dist/src/chip/chip.d.ts.map +1 -1
  45. package/dist/src/chip/chip.js +4 -2
  46. package/dist/src/chip/index.d.ts.map +1 -1
  47. package/dist/src/choice/choice.d.ts.map +1 -1
  48. package/dist/src/choice/choice.js +3 -1
  49. package/dist/src/choice/index.d.ts.map +1 -1
  50. package/dist/src/choices/choices.d.ts.map +1 -1
  51. package/dist/src/choices/index.d.ts.map +1 -1
  52. package/dist/src/{codeEditor/codeEditor.d.ts → code-editor/code-editor.d.ts} +1 -1
  53. package/dist/src/code-editor/code-editor.d.ts.map +1 -0
  54. package/dist/src/{codeEditor/codeEditor.js → code-editor/code-editor.js} +2 -2
  55. package/dist/src/code-editor/index.d.ts +3 -0
  56. package/dist/src/code-editor/index.d.ts.map +1 -0
  57. package/dist/src/code-editor/index.js +1 -0
  58. package/dist/src/{codeSurface/codeSurface.d.ts → code-surface/code-surface.d.ts} +1 -1
  59. package/dist/src/code-surface/code-surface.d.ts.map +1 -0
  60. package/dist/src/{codeSurface/codeSurface.js → code-surface/code-surface.js} +6 -1
  61. package/dist/src/code-surface/index.d.ts +3 -0
  62. package/dist/src/code-surface/index.d.ts.map +1 -0
  63. package/dist/src/code-surface/index.js +1 -0
  64. package/dist/src/{commandPalette/commandPalette.d.ts → command-palette/command-palette.d.ts} +85 -77
  65. package/dist/src/command-palette/command-palette.d.ts.map +1 -0
  66. package/dist/src/command-palette/command-palette.js +625 -0
  67. package/dist/src/{commandPalette → command-palette}/index.d.ts +2 -2
  68. package/dist/src/command-palette/index.d.ts.map +1 -0
  69. package/dist/src/{commandPalette → command-palette}/index.js +1 -1
  70. package/dist/src/{commandPalette → command-palette}/keys.d.ts +0 -21
  71. package/dist/src/command-palette/keys.d.ts.map +1 -0
  72. package/dist/src/command-palette/keys.js +85 -0
  73. package/dist/src/{commandPalette → command-palette}/match.d.ts +5 -11
  74. package/dist/src/command-palette/match.d.ts.map +1 -0
  75. package/dist/src/{commandPalette → command-palette}/match.js +20 -24
  76. package/dist/src/{commandPalette → command-palette}/message.d.ts +37 -26
  77. package/dist/src/command-palette/message.d.ts.map +1 -0
  78. package/dist/src/{commandPalette → command-palette}/message.js +8 -20
  79. package/dist/src/{confirmDialog/confirmDialog.d.ts → confirm-dialog/confirm-dialog.d.ts} +1 -1
  80. package/dist/src/confirm-dialog/confirm-dialog.d.ts.map +1 -0
  81. package/dist/src/{confirmDialog/confirmDialog.js → confirm-dialog/confirm-dialog.js} +18 -23
  82. package/dist/src/confirm-dialog/index.d.ts +3 -0
  83. package/dist/src/confirm-dialog/index.d.ts.map +1 -0
  84. package/dist/src/{confirmDialog → confirm-dialog}/index.js +1 -1
  85. package/dist/src/{contextMenu/contextMenu.d.ts → context-menu/context-menu.d.ts} +18 -21
  86. package/dist/src/context-menu/context-menu.d.ts.map +1 -0
  87. package/dist/src/{contextMenu/contextMenu.js → context-menu/context-menu.js} +45 -57
  88. package/dist/src/{contextMenu → context-menu}/index.d.ts +2 -2
  89. package/dist/src/context-menu/index.d.ts.map +1 -0
  90. package/dist/src/{contextMenu → context-menu}/index.js +1 -1
  91. package/dist/src/{copyButton/copyButton.d.ts → copy-button/copy-button.d.ts} +5 -7
  92. package/dist/src/copy-button/copy-button.d.ts.map +1 -0
  93. package/dist/src/{copyButton/copyButton.js → copy-button/copy-button.js} +18 -27
  94. package/dist/src/copy-button/index.d.ts +3 -0
  95. package/dist/src/copy-button/index.d.ts.map +1 -0
  96. package/dist/src/copy-button/index.js +1 -0
  97. package/dist/src/crumbs/crumbs.d.ts +1 -1
  98. package/dist/src/crumbs/crumbs.d.ts.map +1 -1
  99. package/dist/src/crumbs/index.d.ts.map +1 -1
  100. package/dist/src/deck/deck.d.ts.map +1 -1
  101. package/dist/src/deck/index.d.ts.map +1 -1
  102. package/dist/src/dialog/dialog.d.ts +6 -14
  103. package/dist/src/dialog/dialog.d.ts.map +1 -1
  104. package/dist/src/dialog/dialog.js +29 -36
  105. package/dist/src/dialog/fold.d.ts +3 -3
  106. package/dist/src/dialog/fold.d.ts.map +1 -1
  107. package/dist/src/dialog/fold.js +5 -4
  108. package/dist/src/dialog/index.d.ts +1 -1
  109. package/dist/src/dialog/index.d.ts.map +1 -1
  110. package/dist/src/disclosure/disclosure.d.ts.map +1 -1
  111. package/dist/src/disclosure/disclosure.js +3 -1
  112. package/dist/src/disclosure/index.d.ts.map +1 -1
  113. package/dist/src/dom/html-element.d.ts +3 -0
  114. package/dist/src/dom/html-element.d.ts.map +1 -0
  115. package/dist/src/dom/html-element.js +6 -0
  116. package/dist/src/drag/drag.d.ts +0 -34
  117. package/dist/src/drag/drag.d.ts.map +1 -1
  118. package/dist/src/drag/drag.js +27 -73
  119. package/dist/src/{dropZone/dropZone.d.ts → drop-zone/drop-zone.d.ts} +3 -3
  120. package/dist/src/drop-zone/drop-zone.d.ts.map +1 -0
  121. package/dist/src/{dropZone/dropZone.js → drop-zone/drop-zone.js} +13 -19
  122. package/dist/src/drop-zone/index.d.ts +3 -0
  123. package/dist/src/drop-zone/index.d.ts.map +1 -0
  124. package/dist/src/drop-zone/index.js +1 -0
  125. package/dist/src/{editableTitle/editableTitle.d.ts → editable-title/editable-title.d.ts} +14 -12
  126. package/dist/src/editable-title/editable-title.d.ts.map +1 -0
  127. package/dist/src/{editableTitle/editableTitle.js → editable-title/editable-title.js} +33 -39
  128. package/dist/src/editable-title/index.d.ts +4 -0
  129. package/dist/src/editable-title/index.d.ts.map +1 -0
  130. package/dist/src/{editableTitle → editable-title}/index.js +1 -1
  131. package/dist/src/{emptyState/emptyState.d.ts → empty-state/empty-state.d.ts} +1 -1
  132. package/dist/src/empty-state/empty-state.d.ts.map +1 -0
  133. package/dist/src/{emptyState/emptyState.js → empty-state/empty-state.js} +5 -2
  134. package/dist/src/empty-state/index.d.ts +3 -0
  135. package/dist/src/empty-state/index.d.ts.map +1 -0
  136. package/dist/src/empty-state/index.js +1 -0
  137. package/dist/src/{errorSummary/errorSummary.d.ts → error-summary/error-summary.d.ts} +2 -2
  138. package/dist/src/error-summary/error-summary.d.ts.map +1 -0
  139. package/dist/src/{errorSummary/errorSummary.js → error-summary/error-summary.js} +7 -5
  140. package/dist/src/error-summary/index.d.ts +3 -0
  141. package/dist/src/error-summary/index.d.ts.map +1 -0
  142. package/dist/src/error-summary/index.js +1 -0
  143. package/dist/src/field/field.d.ts +2 -7
  144. package/dist/src/field/field.d.ts.map +1 -1
  145. package/dist/src/field/field.js +12 -13
  146. package/dist/src/field/index.d.ts.map +1 -1
  147. package/dist/src/{fieldGrid/fieldGrid.d.ts → field-grid/field-grid.d.ts} +1 -1
  148. package/dist/src/field-grid/field-grid.d.ts.map +1 -0
  149. package/dist/src/{fieldGrid/fieldGrid.js → field-grid/field-grid.js} +1 -1
  150. package/dist/src/field-grid/index.d.ts +3 -0
  151. package/dist/src/field-grid/index.d.ts.map +1 -0
  152. package/dist/src/field-grid/index.js +1 -0
  153. package/dist/src/fields/fields.d.ts.map +1 -1
  154. package/dist/src/fields/fields.js +4 -1
  155. package/dist/src/fields/index.d.ts.map +1 -1
  156. package/dist/src/fieldset/fieldset.d.ts.map +1 -1
  157. package/dist/src/fieldset/index.d.ts.map +1 -1
  158. package/dist/src/{fileTree/fileTree.d.ts → file-tree/file-tree.d.ts} +5 -5
  159. package/dist/src/file-tree/file-tree.d.ts.map +1 -0
  160. package/dist/src/file-tree/file-tree.js +242 -0
  161. package/dist/src/file-tree/index.d.ts +3 -0
  162. package/dist/src/file-tree/index.d.ts.map +1 -0
  163. package/dist/src/{fileTree → file-tree}/index.js +1 -1
  164. package/dist/src/{filterChip/filterChip.d.ts → filter-chip/filter-chip.d.ts} +1 -1
  165. package/dist/src/filter-chip/filter-chip.d.ts.map +1 -0
  166. package/dist/src/{filterChip/filterChip.js → filter-chip/filter-chip.js} +11 -7
  167. package/dist/src/filter-chip/index.d.ts +3 -0
  168. package/dist/src/filter-chip/index.d.ts.map +1 -0
  169. package/dist/src/filter-chip/index.js +1 -0
  170. package/dist/src/{filterStrip/filterStrip.d.ts → filter-strip/filter-strip.d.ts} +1 -1
  171. package/dist/src/filter-strip/filter-strip.d.ts.map +1 -0
  172. package/dist/src/{filterStrip/filterStrip.js → filter-strip/filter-strip.js} +1 -1
  173. package/dist/src/filter-strip/index.d.ts +3 -0
  174. package/dist/src/filter-strip/index.d.ts.map +1 -0
  175. package/dist/src/filter-strip/index.js +1 -0
  176. package/dist/src/{flashWord/flashWord.d.ts → flash-word/flash-word.d.ts} +2 -2
  177. package/dist/src/flash-word/flash-word.d.ts.map +1 -0
  178. package/dist/src/{flashWord/flashWord.js → flash-word/flash-word.js} +2 -3
  179. package/dist/src/flash-word/index.d.ts +3 -0
  180. package/dist/src/flash-word/index.d.ts.map +1 -0
  181. package/dist/src/flash-word/index.js +1 -0
  182. package/dist/src/focus/focus.d.ts.map +1 -1
  183. package/dist/src/focus/focus.js +0 -2
  184. package/dist/src/format/format.d.ts +0 -7
  185. package/dist/src/format/format.d.ts.map +1 -1
  186. package/dist/src/format/format.js +7 -16
  187. package/dist/src/format/index.d.ts.map +1 -1
  188. package/dist/src/glyph/glyph.d.ts +1 -2
  189. package/dist/src/glyph/glyph.d.ts.map +1 -1
  190. package/dist/src/glyph/glyph.js +0 -2
  191. package/dist/src/glyph/glyphs.d.ts +19 -4
  192. package/dist/src/glyph/glyphs.d.ts.map +1 -1
  193. package/dist/src/glyph/glyphs.js +2577 -2594
  194. package/dist/src/glyph/index.d.ts.map +1 -1
  195. package/dist/src/group/group.d.ts.map +1 -1
  196. package/dist/src/group/index.d.ts.map +1 -1
  197. package/dist/src/history/history.d.ts +1 -1
  198. package/dist/src/history/history.d.ts.map +1 -1
  199. package/dist/src/history/history.js +6 -3
  200. package/dist/src/history/index.d.ts.map +1 -1
  201. package/dist/src/{iconButton/iconButton.d.ts → icon-button/icon-button.d.ts} +1 -1
  202. package/dist/src/icon-button/icon-button.d.ts.map +1 -0
  203. package/dist/src/{iconButton/iconButton.js → icon-button/icon-button.js} +6 -4
  204. package/dist/src/icon-button/index.d.ts +3 -0
  205. package/dist/src/icon-button/index.d.ts.map +1 -0
  206. package/dist/src/icon-button/index.js +1 -0
  207. package/dist/src/identity/identity.d.ts.map +1 -1
  208. package/dist/src/identity/index.d.ts.map +1 -1
  209. package/dist/src/{imageFrame/imageFrame.d.ts → image-frame/image-frame.d.ts} +1 -1
  210. package/dist/src/image-frame/image-frame.d.ts.map +1 -0
  211. package/dist/src/{imageFrame/imageFrame.js → image-frame/image-frame.js} +19 -12
  212. package/dist/src/image-frame/index.d.ts +3 -0
  213. package/dist/src/image-frame/index.d.ts.map +1 -0
  214. package/dist/src/image-frame/index.js +1 -0
  215. package/dist/src/index.d.ts +41 -41
  216. package/dist/src/index.d.ts.map +1 -1
  217. package/dist/src/index.js +41 -41
  218. package/dist/src/inline-input/index.d.ts +3 -0
  219. package/dist/src/inline-input/index.d.ts.map +1 -0
  220. package/dist/src/{inlineInput → inline-input}/index.js +1 -1
  221. package/dist/src/{inlineInput/inlineInput.d.ts → inline-input/inline-input.d.ts} +8 -12
  222. package/dist/src/inline-input/inline-input.d.ts.map +1 -0
  223. package/dist/src/{inlineInput/inlineInput.js → inline-input/inline-input.js} +60 -75
  224. package/dist/src/key-help/index.d.ts +3 -0
  225. package/dist/src/key-help/index.d.ts.map +1 -0
  226. package/dist/src/{keyHelp → key-help}/index.js +1 -1
  227. package/dist/src/{keyHelp/keyHelp.d.ts → key-help/key-help.d.ts} +7 -7
  228. package/dist/src/key-help/key-help.d.ts.map +1 -0
  229. package/dist/src/{keyHelp/keyHelp.js → key-help/key-help.js} +48 -47
  230. package/dist/src/key-hint/index.d.ts +4 -0
  231. package/dist/src/key-hint/index.d.ts.map +1 -0
  232. package/dist/src/key-hint/index.js +2 -0
  233. package/dist/src/{keyHint/keyHint.d.ts → key-hint/key-hint.d.ts} +2 -2
  234. package/dist/src/key-hint/key-hint.d.ts.map +1 -0
  235. package/dist/src/{keyHint/keyHint.js → key-hint/key-hint.js} +2 -2
  236. package/dist/src/{keyHint/keyLabel.d.ts → key-hint/key-label.d.ts} +2 -3
  237. package/dist/src/key-hint/key-label.d.ts.map +1 -0
  238. package/dist/src/{keyHint/keyLabel.js → key-hint/key-label.js} +29 -24
  239. package/dist/src/keymap/index.d.ts.map +1 -1
  240. package/dist/src/keymap/keymap.d.ts +2 -2
  241. package/dist/src/keymap/keymap.d.ts.map +1 -1
  242. package/dist/src/keymap/keymap.js +3 -1
  243. package/dist/src/keys/keys.d.ts +0 -2
  244. package/dist/src/keys/keys.d.ts.map +1 -1
  245. package/dist/src/keys/keys.js +0 -2
  246. package/dist/src/line-chart/index.d.ts +3 -0
  247. package/dist/src/line-chart/index.d.ts.map +1 -0
  248. package/dist/src/line-chart/index.js +1 -0
  249. package/dist/src/{lineChart/lineChart.d.ts → line-chart/line-chart.d.ts} +2 -2
  250. package/dist/src/line-chart/line-chart.d.ts.map +1 -0
  251. package/dist/src/{lineChart/lineChart.js → line-chart/line-chart.js} +52 -44
  252. package/dist/src/line-diff/diff.d.ts +29 -0
  253. package/dist/src/line-diff/diff.d.ts.map +1 -0
  254. package/dist/src/line-diff/diff.js +85 -0
  255. package/dist/src/line-diff/index.d.ts +5 -0
  256. package/dist/src/line-diff/index.d.ts.map +1 -0
  257. package/dist/src/line-diff/index.js +2 -0
  258. package/dist/src/{lineDiff/lineDiff.d.ts → line-diff/line-diff.d.ts} +1 -1
  259. package/dist/src/line-diff/line-diff.d.ts.map +1 -0
  260. package/dist/src/{lineDiff/lineDiff.js → line-diff/line-diff.js} +26 -19
  261. package/dist/src/{lineDiff → line-diff}/patch.d.ts +5 -9
  262. package/dist/src/line-diff/patch.d.ts.map +1 -0
  263. package/dist/src/{lineDiff → line-diff}/patch.js +54 -62
  264. package/dist/src/link-button/index.d.ts +3 -0
  265. package/dist/src/link-button/index.d.ts.map +1 -0
  266. package/dist/src/link-button/index.js +1 -0
  267. package/dist/src/{linkButton/linkButton.d.ts → link-button/link-button.d.ts} +2 -2
  268. package/dist/src/link-button/link-button.d.ts.map +1 -0
  269. package/dist/src/{linkButton/linkButton.js → link-button/link-button.js} +1 -1
  270. package/dist/src/link-state/index.d.ts +3 -0
  271. package/dist/src/link-state/index.d.ts.map +1 -0
  272. package/dist/src/link-state/index.js +1 -0
  273. package/dist/src/{linkState/linkState.d.ts → link-state/link-state.d.ts} +1 -1
  274. package/dist/src/link-state/link-state.d.ts.map +1 -0
  275. package/dist/src/link-state/link-state.js +24 -0
  276. package/dist/src/live-region/index.d.ts +3 -0
  277. package/dist/src/live-region/index.d.ts.map +1 -0
  278. package/dist/src/live-region/index.js +1 -0
  279. package/dist/src/{liveRegion/liveRegion.d.ts → live-region/live-region.d.ts} +6 -3
  280. package/dist/src/live-region/live-region.d.ts.map +1 -0
  281. package/dist/src/{liveRegion/liveRegion.js → live-region/live-region.js} +7 -5
  282. package/dist/src/loading/index.d.ts.map +1 -1
  283. package/dist/src/loading/loading.d.ts.map +1 -1
  284. package/dist/src/loading/loading.js +5 -1
  285. package/dist/src/mark/index.d.ts.map +1 -1
  286. package/dist/src/mark/mark.d.ts +0 -4
  287. package/dist/src/mark/mark.d.ts.map +1 -1
  288. package/dist/src/mark/mark.js +6 -3
  289. package/dist/src/media/index.d.ts.map +1 -1
  290. package/dist/src/media/media.d.ts +17 -42
  291. package/dist/src/media/media.d.ts.map +1 -1
  292. package/dist/src/media/media.js +106 -104
  293. package/dist/src/menu/index.d.ts.map +1 -1
  294. package/dist/src/menu/item.d.ts +8 -8
  295. package/dist/src/menu/item.d.ts.map +1 -1
  296. package/dist/src/menu/menu.d.ts +2 -5
  297. package/dist/src/menu/menu.d.ts.map +1 -1
  298. package/dist/src/menu/menu.js +19 -30
  299. package/dist/src/menu/slip.d.ts +4 -18
  300. package/dist/src/menu/slip.d.ts.map +1 -1
  301. package/dist/src/menu/slip.js +36 -36
  302. package/dist/src/meter/index.d.ts.map +1 -1
  303. package/dist/src/meter/meter.d.ts +1 -1
  304. package/dist/src/meter/meter.d.ts.map +1 -1
  305. package/dist/src/meter/meter.js +12 -15
  306. package/dist/src/monogram/index.d.ts.map +1 -1
  307. package/dist/src/monogram/monogram.d.ts.map +1 -1
  308. package/dist/src/monogram/monogram.js +9 -8
  309. package/dist/src/nav-strip/index.d.ts +3 -0
  310. package/dist/src/nav-strip/index.d.ts.map +1 -0
  311. package/dist/src/nav-strip/index.js +1 -0
  312. package/dist/src/{navStrip/navStrip.d.ts → nav-strip/nav-strip.d.ts} +3 -6
  313. package/dist/src/nav-strip/nav-strip.d.ts.map +1 -0
  314. package/dist/src/nav-strip/nav-strip.js +25 -0
  315. package/dist/src/notice/index.d.ts.map +1 -1
  316. package/dist/src/notice/notice.d.ts +0 -4
  317. package/dist/src/notice/notice.d.ts.map +1 -1
  318. package/dist/src/notice/notice.js +1 -4
  319. package/dist/src/outcome/index.d.ts.map +1 -1
  320. package/dist/src/outcome/outcome.d.ts.map +1 -1
  321. package/dist/src/outcome/outcome.js +1 -1
  322. package/dist/src/page-head/index.d.ts +3 -0
  323. package/dist/src/page-head/index.d.ts.map +1 -0
  324. package/dist/src/page-head/index.js +1 -0
  325. package/dist/src/{pageHead/pageHead.d.ts → page-head/page-head.d.ts} +1 -1
  326. package/dist/src/page-head/page-head.d.ts.map +1 -0
  327. package/dist/src/{pageHead/pageHead.js → page-head/page-head.js} +1 -1
  328. package/dist/src/panel/index.d.ts.map +1 -1
  329. package/dist/src/panel/panel.d.ts +0 -1
  330. package/dist/src/panel/panel.d.ts.map +1 -1
  331. package/dist/src/panel/panel.js +0 -1
  332. package/dist/src/password-field/index.d.ts +3 -0
  333. package/dist/src/password-field/index.d.ts.map +1 -0
  334. package/dist/src/password-field/index.js +1 -0
  335. package/dist/src/{passwordField/passwordField.d.ts → password-field/password-field.d.ts} +1 -1
  336. package/dist/src/password-field/password-field.d.ts.map +1 -0
  337. package/dist/src/{passwordField/passwordField.js → password-field/password-field.js} +4 -5
  338. package/dist/src/places/index.d.ts.map +1 -1
  339. package/dist/src/places/places.d.ts +3 -4
  340. package/dist/src/places/places.d.ts.map +1 -1
  341. package/dist/src/places/places.js +8 -2
  342. package/dist/src/props-list/index.d.ts +3 -0
  343. package/dist/src/props-list/index.d.ts.map +1 -0
  344. package/dist/src/props-list/index.js +1 -0
  345. package/dist/src/{propsList/propsList.d.ts → props-list/props-list.d.ts} +2 -2
  346. package/dist/src/props-list/props-list.d.ts.map +1 -0
  347. package/dist/src/{propsList/propsList.js → props-list/props-list.js} +2 -2
  348. package/dist/src/prose/index.d.ts.map +1 -1
  349. package/dist/src/prose/prose.d.ts.map +1 -1
  350. package/dist/src/query-chip/index.d.ts +3 -0
  351. package/dist/src/query-chip/index.d.ts.map +1 -0
  352. package/dist/src/query-chip/index.js +1 -0
  353. package/dist/src/{queryChip/queryChip.d.ts → query-chip/query-chip.d.ts} +1 -1
  354. package/dist/src/query-chip/query-chip.d.ts.map +1 -0
  355. package/dist/src/{queryChip/queryChip.js → query-chip/query-chip.js} +7 -4
  356. package/dist/src/{radioChoices → radio-choices}/index.d.ts +2 -2
  357. package/dist/src/radio-choices/index.d.ts.map +1 -0
  358. package/dist/src/{radioChoices → radio-choices}/index.js +1 -1
  359. package/dist/src/{radioChoices/radioChoices.d.ts → radio-choices/radio-choices.d.ts} +3 -3
  360. package/dist/src/radio-choices/radio-choices.d.ts.map +1 -0
  361. package/dist/src/{radioChoices/radioChoices.js → radio-choices/radio-choices.js} +25 -24
  362. package/dist/src/rail/index.d.ts.map +1 -1
  363. package/dist/src/rail/rail.d.ts +16 -32
  364. package/dist/src/rail/rail.d.ts.map +1 -1
  365. package/dist/src/rail/rail.js +97 -65
  366. package/dist/src/reel/index.d.ts +1 -1
  367. package/dist/src/reel/index.d.ts.map +1 -1
  368. package/dist/src/reel/layout.d.ts +12 -54
  369. package/dist/src/reel/layout.d.ts.map +1 -1
  370. package/dist/src/reel/layout.js +120 -145
  371. package/dist/src/reel/reel.d.ts +35 -34
  372. package/dist/src/reel/reel.d.ts.map +1 -1
  373. package/dist/src/reel/reel.js +253 -233
  374. package/dist/src/remote/index.d.ts.map +1 -1
  375. package/dist/src/remote/remote.d.ts +2 -2
  376. package/dist/src/remote/remote.d.ts.map +1 -1
  377. package/dist/src/remote/remote.js +6 -2
  378. package/dist/src/rows/index.d.ts.map +1 -1
  379. package/dist/src/rows/rows.d.ts +2 -2
  380. package/dist/src/rows/rows.d.ts.map +1 -1
  381. package/dist/src/rows/rows.js +16 -7
  382. package/dist/src/scheme/index.d.ts +1 -1
  383. package/dist/src/scheme/index.d.ts.map +1 -1
  384. package/dist/src/scheme/index.js +1 -1
  385. package/dist/src/scheme/{schemeSwitch.d.ts → scheme-switch.d.ts} +2 -2
  386. package/dist/src/scheme/scheme-switch.d.ts.map +1 -0
  387. package/dist/src/scheme/{schemeSwitch.js → scheme-switch.js} +33 -38
  388. package/dist/src/scheme/scheme.d.ts +0 -2
  389. package/dist/src/scheme/scheme.d.ts.map +1 -1
  390. package/dist/src/scheme/scheme.js +0 -2
  391. package/dist/src/secret/index.d.ts.map +1 -1
  392. package/dist/src/secret/secret.d.ts.map +1 -1
  393. package/dist/src/segmented/index.d.ts.map +1 -1
  394. package/dist/src/segmented/segmented.d.ts.map +1 -1
  395. package/dist/src/segmented/segmented.js +14 -3
  396. package/dist/src/select-all/index.d.ts +3 -0
  397. package/dist/src/select-all/index.d.ts.map +1 -0
  398. package/dist/src/select-all/index.js +1 -0
  399. package/dist/src/{selectAll/selectAll.d.ts → select-all/select-all.d.ts} +1 -1
  400. package/dist/src/select-all/select-all.d.ts.map +1 -0
  401. package/dist/src/{selectAll/selectAll.js → select-all/select-all.js} +2 -2
  402. package/dist/src/select-field/index.d.ts +3 -0
  403. package/dist/src/select-field/index.d.ts.map +1 -0
  404. package/dist/src/select-field/index.js +1 -0
  405. package/dist/src/{selectField/selectField.d.ts → select-field/select-field.d.ts} +2 -2
  406. package/dist/src/select-field/select-field.d.ts.map +1 -0
  407. package/dist/src/{selectField/selectField.js → select-field/select-field.js} +10 -7
  408. package/dist/src/sheet/index.d.ts.map +1 -1
  409. package/dist/src/sheet/sheet.d.ts.map +1 -1
  410. package/dist/src/sheet/sheet.js +4 -1
  411. package/dist/src/skip-link/index.d.ts +2 -0
  412. package/dist/src/skip-link/index.d.ts.map +1 -0
  413. package/dist/src/skip-link/index.js +1 -0
  414. package/dist/src/{skipLink/skipLink.d.ts → skip-link/skip-link.d.ts} +1 -3
  415. package/dist/src/skip-link/skip-link.d.ts.map +1 -0
  416. package/dist/src/{skipLink/skipLink.js → skip-link/skip-link.js} +7 -11
  417. package/dist/src/slot/slot.d.ts +1 -4
  418. package/dist/src/slot/slot.d.ts.map +1 -1
  419. package/dist/src/slot/slot.js +3 -3
  420. package/dist/src/sortable/index.d.ts.map +1 -1
  421. package/dist/src/sortable/sortable.d.ts +44 -44
  422. package/dist/src/sortable/sortable.d.ts.map +1 -1
  423. package/dist/src/sortable/sortable.js +60 -93
  424. package/dist/src/stack/index.d.ts.map +1 -1
  425. package/dist/src/stack/stack.d.ts.map +1 -1
  426. package/dist/src/stack/stack.js +0 -2
  427. package/dist/src/stage/index.d.ts.map +1 -1
  428. package/dist/src/stage/stage.d.ts +1 -1
  429. package/dist/src/stage/stage.d.ts.map +1 -1
  430. package/dist/src/stage/stage.js +4 -1
  431. package/dist/src/stat/index.d.ts.map +1 -1
  432. package/dist/src/stat/stat.d.ts +1 -1
  433. package/dist/src/stat/stat.d.ts.map +1 -1
  434. package/dist/src/stat/stat.js +17 -8
  435. package/dist/src/status-bar/index.d.ts +4 -0
  436. package/dist/src/status-bar/index.d.ts.map +1 -0
  437. package/dist/src/status-bar/index.js +2 -0
  438. package/dist/src/{statusBar/statusBar.d.ts → status-bar/status-bar.d.ts} +4 -4
  439. package/dist/src/status-bar/status-bar.d.ts.map +1 -0
  440. package/dist/src/{statusBar/statusBar.js → status-bar/status-bar.js} +5 -6
  441. package/dist/src/subscription/{prefixKeys.d.ts → prefix-keys.d.ts} +1 -2
  442. package/dist/src/subscription/prefix-keys.d.ts.map +1 -0
  443. package/dist/src/subscription/{prefixKeys.js → prefix-keys.js} +2 -5
  444. package/dist/src/table/index.d.ts.map +1 -1
  445. package/dist/src/table/table.d.ts +1 -1
  446. package/dist/src/table/table.d.ts.map +1 -1
  447. package/dist/src/table/table.js +19 -7
  448. package/dist/src/tabs/index.d.ts.map +1 -1
  449. package/dist/src/tabs/tabs.d.ts +4 -4
  450. package/dist/src/tabs/tabs.d.ts.map +1 -1
  451. package/dist/src/tabs/tabs.js +1 -6
  452. package/dist/src/tag/index.d.ts.map +1 -1
  453. package/dist/src/tag/tag.d.ts.map +1 -1
  454. package/dist/src/tag/tag.js +4 -1
  455. package/dist/src/text-button/index.d.ts +3 -0
  456. package/dist/src/text-button/index.d.ts.map +1 -0
  457. package/dist/src/text-button/index.js +1 -0
  458. package/dist/src/{textButton/textButton.d.ts → text-button/text-button.d.ts} +1 -1
  459. package/dist/src/text-button/text-button.d.ts.map +1 -0
  460. package/dist/src/{textButton/textButton.js → text-button/text-button.js} +2 -2
  461. package/dist/src/textarea-field/index.d.ts +3 -0
  462. package/dist/src/textarea-field/index.d.ts.map +1 -0
  463. package/dist/src/textarea-field/index.js +1 -0
  464. package/dist/src/{textareaField/textareaField.d.ts → textarea-field/textarea-field.d.ts} +1 -1
  465. package/dist/src/textarea-field/textarea-field.d.ts.map +1 -0
  466. package/dist/src/{textareaField/textareaField.js → textarea-field/textarea-field.js} +2 -2
  467. package/dist/src/time/index.d.ts.map +1 -1
  468. package/dist/src/time/time.d.ts.map +1 -1
  469. package/dist/src/time/time.js +16 -9
  470. package/dist/src/tips/index.d.ts.map +1 -1
  471. package/dist/src/tips/tips.d.ts +7 -18
  472. package/dist/src/tips/tips.d.ts.map +1 -1
  473. package/dist/src/tips/tips.js +67 -65
  474. package/dist/src/toast/index.d.ts.map +1 -1
  475. package/dist/src/toast/stack.d.ts +1 -8
  476. package/dist/src/toast/stack.d.ts.map +1 -1
  477. package/dist/src/toast/stack.js +5 -18
  478. package/dist/src/toast/toast.d.ts +3 -5
  479. package/dist/src/toast/toast.d.ts.map +1 -1
  480. package/dist/src/toast/toast.js +42 -39
  481. package/dist/src/toc/index.d.ts.map +1 -1
  482. package/dist/src/toc/toc.d.ts +3 -3
  483. package/dist/src/toc/toc.d.ts.map +1 -1
  484. package/dist/src/toc/toc.js +10 -7
  485. package/dist/src/toolbar/index.d.ts.map +1 -1
  486. package/dist/src/toolbar/toolbar.d.ts +1 -1
  487. package/dist/src/toolbar/toolbar.d.ts.map +1 -1
  488. package/dist/src/toolbar/toolbar.js +27 -24
  489. package/dist/src/{topBar/barHeight.d.ts → top-bar/bar-height.d.ts} +1 -2
  490. package/dist/src/top-bar/bar-height.d.ts.map +1 -0
  491. package/dist/src/{topBar/barHeight.js → top-bar/bar-height.js} +20 -13
  492. package/dist/src/top-bar/index.d.ts +4 -0
  493. package/dist/src/top-bar/index.d.ts.map +1 -0
  494. package/dist/src/top-bar/index.js +2 -0
  495. package/dist/src/{topBar/topBar.d.ts → top-bar/top-bar.d.ts} +3 -3
  496. package/dist/src/top-bar/top-bar.d.ts.map +1 -0
  497. package/dist/src/{topBar/topBar.js → top-bar/top-bar.js} +2 -2
  498. package/dist/src/video-frame/index.d.ts +3 -0
  499. package/dist/src/video-frame/index.d.ts.map +1 -0
  500. package/dist/src/video-frame/index.js +1 -0
  501. package/dist/src/{videoFrame/videoFrame.d.ts → video-frame/video-frame.d.ts} +1 -1
  502. package/dist/src/video-frame/video-frame.d.ts.map +1 -0
  503. package/dist/src/{videoFrame/videoFrame.js → video-frame/video-frame.js} +11 -7
  504. package/dist/src/wall/index.d.ts.map +1 -1
  505. package/dist/src/wall/wall.d.ts.map +1 -1
  506. package/dist/src/window/index.d.ts.map +1 -1
  507. package/dist/src/window/window.d.ts +2 -2
  508. package/dist/src/window/window.d.ts.map +1 -1
  509. package/dist/src/window/window.js +4 -2
  510. package/dist/src/wordmark/index.d.ts.map +1 -1
  511. package/dist/src/wordmark/wordmark.d.ts.map +1 -1
  512. package/dist/src/wrap/index.d.ts.map +1 -1
  513. package/dist/src/wrap/wrap.d.ts.map +1 -1
  514. package/package.json +6 -6
  515. package/src/adapters/diagram.ts +278 -0
  516. package/src/adapters/mermaid.ts +13 -273
  517. package/src/announcer/announcer.ts +54 -35
  518. package/src/attributes/attributes.ts +3 -1
  519. package/src/{audioFrame/audioFrame.ts → audio-frame/audio-frame.ts} +4 -6
  520. package/src/audio-frame/index.ts +3 -0
  521. package/src/banner/banner.ts +5 -4
  522. package/src/banner/index.ts +1 -0
  523. package/src/{barChart/barChart.ts → bar-chart/bar-chart.ts} +81 -43
  524. package/src/bar-chart/index.ts +3 -0
  525. package/src/bench/bench.ts +5 -4
  526. package/src/bench/index.ts +1 -0
  527. package/src/board/board.ts +338 -243
  528. package/src/board/index.ts +8 -1
  529. package/src/button/button.ts +24 -16
  530. package/src/button/index.ts +8 -1
  531. package/src/card/card.ts +23 -21
  532. package/src/card/index.ts +1 -0
  533. package/src/chart-table/chart-table.ts +87 -0
  534. package/src/chip/chip.ts +13 -9
  535. package/src/chip/index.ts +1 -0
  536. package/src/choice/choice.ts +13 -7
  537. package/src/choice/index.ts +1 -0
  538. package/src/choices/choices.ts +4 -3
  539. package/src/choices/index.ts +1 -0
  540. package/src/{codeEditor/codeEditor.ts → code-editor/code-editor.ts} +5 -4
  541. package/src/code-editor/index.ts +3 -0
  542. package/src/{codeSurface/codeSurface.ts → code-surface/code-surface.ts} +11 -5
  543. package/src/code-surface/index.ts +3 -0
  544. package/src/{commandPalette/commandPalette.ts → command-palette/command-palette.ts} +470 -295
  545. package/src/{commandPalette → command-palette}/index.ts +12 -2
  546. package/src/{commandPalette → command-palette}/keys.ts +44 -43
  547. package/src/{commandPalette → command-palette}/match.ts +42 -30
  548. package/src/{commandPalette → command-palette}/message.ts +13 -20
  549. package/src/{confirmDialog/confirmDialog.ts → confirm-dialog/confirm-dialog.ts} +51 -46
  550. package/src/{confirmDialog → confirm-dialog}/index.ts +3 -2
  551. package/src/{contextMenu/contextMenu.ts → context-menu/context-menu.ts} +71 -70
  552. package/src/{contextMenu → context-menu}/index.ts +4 -2
  553. package/src/{copyButton/copyButton.ts → copy-button/copy-button.ts} +51 -54
  554. package/src/{copyButton → copy-button}/index.ts +3 -2
  555. package/src/crumbs/crumbs.ts +7 -6
  556. package/src/crumbs/index.ts +1 -0
  557. package/src/deck/deck.ts +4 -3
  558. package/src/deck/index.ts +1 -0
  559. package/src/dialog/dialog.ts +135 -113
  560. package/src/dialog/fold.ts +44 -25
  561. package/src/dialog/index.ts +9 -1
  562. package/src/disclosure/disclosure.ts +14 -8
  563. package/src/disclosure/index.ts +1 -0
  564. package/src/dom/html-element.ts +10 -0
  565. package/src/drag/drag.ts +102 -119
  566. package/src/{dropZone/dropZone.ts → drop-zone/drop-zone.ts} +43 -43
  567. package/src/drop-zone/index.ts +11 -0
  568. package/src/{editableTitle/editableTitle.ts → editable-title/editable-title.ts} +29 -32
  569. package/src/{editableTitle → editable-title}/index.ts +4 -2
  570. package/src/{emptyState/emptyState.ts → empty-state/empty-state.ts} +9 -5
  571. package/src/empty-state/index.ts +3 -0
  572. package/src/{errorSummary/errorSummary.ts → error-summary/error-summary.ts} +16 -7
  573. package/src/error-summary/index.ts +3 -0
  574. package/src/field/field.ts +38 -28
  575. package/src/field/index.ts +1 -0
  576. package/src/{fieldGrid/fieldGrid.ts → field-grid/field-grid.ts} +4 -3
  577. package/src/field-grid/index.ts +3 -0
  578. package/src/fields/fields.ts +9 -5
  579. package/src/fields/index.ts +1 -0
  580. package/src/fieldset/fieldset.ts +6 -5
  581. package/src/fieldset/index.ts +1 -0
  582. package/src/{fileTree/fileTree.ts → file-tree/file-tree.ts} +241 -166
  583. package/src/file-tree/index.ts +12 -0
  584. package/src/{filterChip/filterChip.ts → filter-chip/filter-chip.ts} +32 -13
  585. package/src/filter-chip/index.ts +3 -0
  586. package/src/{filterStrip/filterStrip.ts → filter-strip/filter-strip.ts} +4 -3
  587. package/src/filter-strip/index.ts +3 -0
  588. package/src/{flashWord/flashWord.ts → flash-word/flash-word.ts} +9 -7
  589. package/src/flash-word/index.ts +3 -0
  590. package/src/focus/focus.ts +5 -5
  591. package/src/format/format.ts +37 -31
  592. package/src/format/index.ts +1 -0
  593. package/src/glyph/glyph.ts +7 -6
  594. package/src/glyph/glyphs.ts +2601 -2611
  595. package/src/glyph/index.ts +3 -0
  596. package/src/group/group.ts +4 -3
  597. package/src/group/index.ts +1 -0
  598. package/src/history/history.ts +18 -10
  599. package/src/history/index.ts +1 -0
  600. package/src/{iconButton/iconButton.ts → icon-button/icon-button.ts} +13 -7
  601. package/src/icon-button/index.ts +3 -0
  602. package/src/identity/identity.ts +7 -6
  603. package/src/identity/index.ts +1 -0
  604. package/src/{imageFrame/imageFrame.ts → image-frame/image-frame.ts} +43 -25
  605. package/src/image-frame/index.ts +3 -0
  606. package/src/index.ts +139 -41
  607. package/src/{inlineInput → inline-input}/index.ts +3 -2
  608. package/src/{inlineInput/inlineInput.ts → inline-input/inline-input.ts} +97 -88
  609. package/src/{keyHelp → key-help}/index.ts +3 -2
  610. package/src/{keyHelp/keyHelp.ts → key-help/key-help.ts} +74 -62
  611. package/src/key-hint/index.ts +5 -0
  612. package/src/{keyHint/keyHint.ts → key-hint/key-hint.ts} +10 -5
  613. package/src/{keyHint/keyLabel.ts → key-hint/key-label.ts} +43 -22
  614. package/src/keymap/index.ts +1 -0
  615. package/src/keymap/keymap.ts +23 -9
  616. package/src/keys/keys.ts +0 -2
  617. package/src/line-chart/index.ts +3 -0
  618. package/src/{lineChart/lineChart.ts → line-chart/line-chart.ts} +71 -49
  619. package/src/line-diff/diff.ts +196 -0
  620. package/src/line-diff/index.ts +7 -0
  621. package/src/{lineDiff/lineDiff.ts → line-diff/line-diff.ts} +45 -23
  622. package/src/{lineDiff → line-diff}/patch.ts +104 -76
  623. package/src/link-button/index.ts +3 -0
  624. package/src/{linkButton/linkButton.ts → link-button/link-button.ts} +7 -5
  625. package/src/link-state/index.ts +3 -0
  626. package/src/{linkState/linkState.ts → link-state/link-state.ts} +20 -9
  627. package/src/live-region/index.ts +3 -0
  628. package/src/{liveRegion/liveRegion.ts → live-region/live-region.ts} +15 -11
  629. package/src/loading/index.ts +1 -0
  630. package/src/loading/loading.ts +10 -5
  631. package/src/mark/index.ts +1 -0
  632. package/src/mark/mark.ts +17 -15
  633. package/src/media/index.ts +1 -0
  634. package/src/media/media.ts +255 -157
  635. package/src/menu/index.ts +4 -0
  636. package/src/menu/item.ts +10 -11
  637. package/src/menu/menu.ts +110 -97
  638. package/src/menu/slip.ts +129 -92
  639. package/src/meter/index.ts +1 -0
  640. package/src/meter/meter.ts +52 -33
  641. package/src/monogram/index.ts +1 -0
  642. package/src/monogram/monogram.ts +27 -19
  643. package/src/nav-strip/index.ts +3 -0
  644. package/src/{navStrip/navStrip.ts → nav-strip/nav-strip.ts} +21 -13
  645. package/src/notice/index.ts +1 -0
  646. package/src/notice/notice.ts +24 -16
  647. package/src/outcome/index.ts +1 -0
  648. package/src/outcome/outcome.ts +14 -6
  649. package/src/page-head/index.ts +3 -0
  650. package/src/{pageHead/pageHead.ts → page-head/page-head.ts} +6 -5
  651. package/src/panel/index.ts +1 -0
  652. package/src/panel/panel.ts +6 -6
  653. package/src/password-field/index.ts +3 -0
  654. package/src/{passwordField/passwordField.ts → password-field/password-field.ts} +13 -13
  655. package/src/pixel-paper.css +26 -508
  656. package/src/places/index.ts +1 -0
  657. package/src/places/places.ts +22 -11
  658. package/src/props-list/index.ts +3 -0
  659. package/src/{propsList/propsList.ts → props-list/props-list.ts} +6 -6
  660. package/src/prose/index.ts +1 -0
  661. package/src/prose/prose.ts +4 -4
  662. package/src/query-chip/index.ts +3 -0
  663. package/src/{queryChip/queryChip.ts → query-chip/query-chip.ts} +18 -7
  664. package/src/{radioChoices → radio-choices}/index.ts +3 -2
  665. package/src/{radioChoices/radioChoices.ts → radio-choices/radio-choices.ts} +79 -65
  666. package/src/rail/index.ts +1 -0
  667. package/src/rail/rail.ts +291 -225
  668. package/src/reel/index.ts +8 -1
  669. package/src/reel/layout.ts +393 -238
  670. package/src/reel/reel.ts +750 -452
  671. package/src/remote/index.ts +1 -0
  672. package/src/remote/remote.ts +18 -11
  673. package/src/rows/index.ts +1 -0
  674. package/src/rows/rows.ts +83 -47
  675. package/src/scheme/index.ts +3 -1
  676. package/src/scheme/{schemeSwitch.ts → scheme-switch.ts} +24 -35
  677. package/src/scheme/scheme.ts +4 -4
  678. package/src/secret/index.ts +1 -0
  679. package/src/secret/secret.ts +5 -4
  680. package/src/segmented/index.ts +1 -0
  681. package/src/segmented/segmented.ts +22 -10
  682. package/src/select-all/index.ts +3 -0
  683. package/src/{selectAll/selectAll.ts → select-all/select-all.ts} +9 -8
  684. package/src/{selectField → select-field}/index.ts +3 -2
  685. package/src/{selectField/selectField.ts → select-field/select-field.ts} +25 -11
  686. package/src/sheet/index.ts +1 -0
  687. package/src/sheet/sheet.ts +9 -5
  688. package/src/skip-link/index.ts +1 -0
  689. package/src/{skipLink/skipLink.ts → skip-link/skip-link.ts} +9 -15
  690. package/src/slot/slot.ts +5 -6
  691. package/src/sortable/index.ts +1 -0
  692. package/src/sortable/sortable.ts +287 -206
  693. package/src/stack/index.ts +1 -0
  694. package/src/stack/stack.ts +6 -7
  695. package/src/stage/index.ts +1 -0
  696. package/src/stage/stage.ts +12 -8
  697. package/src/stat/index.ts +1 -0
  698. package/src/stat/stat.ts +39 -20
  699. package/src/status-bar/index.ts +5 -0
  700. package/src/{statusBar/statusBar.ts → status-bar/status-bar.ts} +18 -11
  701. package/src/subscription/{prefixKeys.ts → prefix-keys.ts} +5 -6
  702. package/src/table/index.ts +1 -0
  703. package/src/table/table.ts +49 -24
  704. package/src/tabs/index.ts +1 -0
  705. package/src/tabs/tabs.ts +58 -60
  706. package/src/tag/index.ts +1 -0
  707. package/src/tag/tag.ts +14 -7
  708. package/src/text-button/index.ts +3 -0
  709. package/src/{textButton/textButton.ts → text-button/text-button.ts} +7 -5
  710. package/src/textarea-field/index.ts +3 -0
  711. package/src/{textareaField/textareaField.ts → textarea-field/textarea-field.ts} +15 -7
  712. package/src/time/index.ts +1 -0
  713. package/src/time/time.ts +58 -25
  714. package/src/tips/index.ts +1 -0
  715. package/src/tips/tips.ts +183 -127
  716. package/src/toast/index.ts +3 -0
  717. package/src/toast/stack.ts +22 -23
  718. package/src/toast/toast.ts +168 -100
  719. package/src/toc/index.ts +1 -0
  720. package/src/toc/toc.ts +42 -27
  721. package/src/tokens.css +7 -24
  722. package/src/toolbar/index.ts +1 -0
  723. package/src/toolbar/toolbar.ts +78 -40
  724. package/src/{topBar/barHeight.ts → top-bar/bar-height.ts} +26 -12
  725. package/src/top-bar/index.ts +5 -0
  726. package/src/{topBar/topBar.ts → top-bar/top-bar.ts} +13 -7
  727. package/src/video-frame/index.ts +3 -0
  728. package/src/{videoFrame/videoFrame.ts → video-frame/video-frame.ts} +31 -18
  729. package/src/wall/index.ts +1 -0
  730. package/src/wall/wall.ts +13 -10
  731. package/src/window/index.ts +1 -0
  732. package/src/window/window.ts +15 -9
  733. package/src/wordmark/index.ts +1 -0
  734. package/src/wordmark/wordmark.ts +4 -3
  735. package/src/wrap/index.ts +1 -0
  736. package/src/wrap/wrap.ts +4 -3
  737. package/dist/src/audioFrame/audioFrame.d.ts.map +0 -1
  738. package/dist/src/audioFrame/index.d.ts +0 -3
  739. package/dist/src/audioFrame/index.d.ts.map +0 -1
  740. package/dist/src/audioFrame/index.js +0 -1
  741. package/dist/src/barChart/barChart.d.ts.map +0 -1
  742. package/dist/src/barChart/index.d.ts +0 -3
  743. package/dist/src/barChart/index.d.ts.map +0 -1
  744. package/dist/src/barChart/index.js +0 -1
  745. package/dist/src/chartTable/chartTable.d.ts.map +0 -1
  746. package/dist/src/codeEditor/codeEditor.d.ts.map +0 -1
  747. package/dist/src/codeEditor/index.d.ts +0 -3
  748. package/dist/src/codeEditor/index.d.ts.map +0 -1
  749. package/dist/src/codeEditor/index.js +0 -1
  750. package/dist/src/codeSurface/codeSurface.d.ts.map +0 -1
  751. package/dist/src/codeSurface/index.d.ts +0 -3
  752. package/dist/src/codeSurface/index.d.ts.map +0 -1
  753. package/dist/src/codeSurface/index.js +0 -1
  754. package/dist/src/commandPalette/commandPalette.d.ts.map +0 -1
  755. package/dist/src/commandPalette/commandPalette.js +0 -611
  756. package/dist/src/commandPalette/index.d.ts.map +0 -1
  757. package/dist/src/commandPalette/keys.d.ts.map +0 -1
  758. package/dist/src/commandPalette/keys.js +0 -102
  759. package/dist/src/commandPalette/match.d.ts.map +0 -1
  760. package/dist/src/commandPalette/message.d.ts.map +0 -1
  761. package/dist/src/confirmDialog/confirmDialog.d.ts.map +0 -1
  762. package/dist/src/confirmDialog/index.d.ts +0 -3
  763. package/dist/src/confirmDialog/index.d.ts.map +0 -1
  764. package/dist/src/contextMenu/contextMenu.d.ts.map +0 -1
  765. package/dist/src/contextMenu/index.d.ts.map +0 -1
  766. package/dist/src/copyButton/copyButton.d.ts.map +0 -1
  767. package/dist/src/copyButton/index.d.ts +0 -3
  768. package/dist/src/copyButton/index.d.ts.map +0 -1
  769. package/dist/src/copyButton/index.js +0 -1
  770. package/dist/src/dropZone/dropZone.d.ts.map +0 -1
  771. package/dist/src/dropZone/index.d.ts +0 -3
  772. package/dist/src/dropZone/index.d.ts.map +0 -1
  773. package/dist/src/dropZone/index.js +0 -1
  774. package/dist/src/editableTitle/editableTitle.d.ts.map +0 -1
  775. package/dist/src/editableTitle/index.d.ts +0 -4
  776. package/dist/src/editableTitle/index.d.ts.map +0 -1
  777. package/dist/src/emptyState/emptyState.d.ts.map +0 -1
  778. package/dist/src/emptyState/index.d.ts +0 -3
  779. package/dist/src/emptyState/index.d.ts.map +0 -1
  780. package/dist/src/emptyState/index.js +0 -1
  781. package/dist/src/errorSummary/errorSummary.d.ts.map +0 -1
  782. package/dist/src/errorSummary/index.d.ts +0 -3
  783. package/dist/src/errorSummary/index.d.ts.map +0 -1
  784. package/dist/src/errorSummary/index.js +0 -1
  785. package/dist/src/fieldGrid/fieldGrid.d.ts.map +0 -1
  786. package/dist/src/fieldGrid/index.d.ts +0 -3
  787. package/dist/src/fieldGrid/index.d.ts.map +0 -1
  788. package/dist/src/fieldGrid/index.js +0 -1
  789. package/dist/src/fileTree/fileTree.d.ts.map +0 -1
  790. package/dist/src/fileTree/fileTree.js +0 -230
  791. package/dist/src/fileTree/index.d.ts +0 -3
  792. package/dist/src/fileTree/index.d.ts.map +0 -1
  793. package/dist/src/filterChip/filterChip.d.ts.map +0 -1
  794. package/dist/src/filterChip/index.d.ts +0 -3
  795. package/dist/src/filterChip/index.d.ts.map +0 -1
  796. package/dist/src/filterChip/index.js +0 -1
  797. package/dist/src/filterStrip/filterStrip.d.ts.map +0 -1
  798. package/dist/src/filterStrip/index.d.ts +0 -3
  799. package/dist/src/filterStrip/index.d.ts.map +0 -1
  800. package/dist/src/filterStrip/index.js +0 -1
  801. package/dist/src/flashWord/flashWord.d.ts.map +0 -1
  802. package/dist/src/flashWord/index.d.ts +0 -3
  803. package/dist/src/flashWord/index.d.ts.map +0 -1
  804. package/dist/src/flashWord/index.js +0 -1
  805. package/dist/src/iconButton/iconButton.d.ts.map +0 -1
  806. package/dist/src/iconButton/index.d.ts +0 -3
  807. package/dist/src/iconButton/index.d.ts.map +0 -1
  808. package/dist/src/iconButton/index.js +0 -1
  809. package/dist/src/imageFrame/imageFrame.d.ts.map +0 -1
  810. package/dist/src/imageFrame/index.d.ts +0 -3
  811. package/dist/src/imageFrame/index.d.ts.map +0 -1
  812. package/dist/src/imageFrame/index.js +0 -1
  813. package/dist/src/inlineInput/index.d.ts +0 -3
  814. package/dist/src/inlineInput/index.d.ts.map +0 -1
  815. package/dist/src/inlineInput/inlineInput.d.ts.map +0 -1
  816. package/dist/src/keyHelp/index.d.ts +0 -3
  817. package/dist/src/keyHelp/index.d.ts.map +0 -1
  818. package/dist/src/keyHelp/keyHelp.d.ts.map +0 -1
  819. package/dist/src/keyHint/index.d.ts +0 -4
  820. package/dist/src/keyHint/index.d.ts.map +0 -1
  821. package/dist/src/keyHint/index.js +0 -2
  822. package/dist/src/keyHint/keyHint.d.ts.map +0 -1
  823. package/dist/src/keyHint/keyLabel.d.ts.map +0 -1
  824. package/dist/src/lineChart/index.d.ts +0 -3
  825. package/dist/src/lineChart/index.d.ts.map +0 -1
  826. package/dist/src/lineChart/index.js +0 -1
  827. package/dist/src/lineChart/lineChart.d.ts.map +0 -1
  828. package/dist/src/lineDiff/diff.d.ts +0 -41
  829. package/dist/src/lineDiff/diff.d.ts.map +0 -1
  830. package/dist/src/lineDiff/diff.js +0 -92
  831. package/dist/src/lineDiff/index.d.ts +0 -5
  832. package/dist/src/lineDiff/index.d.ts.map +0 -1
  833. package/dist/src/lineDiff/index.js +0 -2
  834. package/dist/src/lineDiff/lineDiff.d.ts.map +0 -1
  835. package/dist/src/lineDiff/patch.d.ts.map +0 -1
  836. package/dist/src/linkButton/index.d.ts +0 -3
  837. package/dist/src/linkButton/index.d.ts.map +0 -1
  838. package/dist/src/linkButton/index.js +0 -1
  839. package/dist/src/linkButton/linkButton.d.ts.map +0 -1
  840. package/dist/src/linkState/index.d.ts +0 -3
  841. package/dist/src/linkState/index.d.ts.map +0 -1
  842. package/dist/src/linkState/index.js +0 -1
  843. package/dist/src/linkState/linkState.d.ts.map +0 -1
  844. package/dist/src/linkState/linkState.js +0 -14
  845. package/dist/src/liveRegion/index.d.ts +0 -3
  846. package/dist/src/liveRegion/index.d.ts.map +0 -1
  847. package/dist/src/liveRegion/index.js +0 -1
  848. package/dist/src/liveRegion/liveRegion.d.ts.map +0 -1
  849. package/dist/src/navStrip/index.d.ts +0 -3
  850. package/dist/src/navStrip/index.d.ts.map +0 -1
  851. package/dist/src/navStrip/index.js +0 -1
  852. package/dist/src/navStrip/navStrip.d.ts.map +0 -1
  853. package/dist/src/navStrip/navStrip.js +0 -27
  854. package/dist/src/pageHead/index.d.ts +0 -3
  855. package/dist/src/pageHead/index.d.ts.map +0 -1
  856. package/dist/src/pageHead/index.js +0 -1
  857. package/dist/src/pageHead/pageHead.d.ts.map +0 -1
  858. package/dist/src/passwordField/index.d.ts +0 -3
  859. package/dist/src/passwordField/index.d.ts.map +0 -1
  860. package/dist/src/passwordField/index.js +0 -1
  861. package/dist/src/passwordField/passwordField.d.ts.map +0 -1
  862. package/dist/src/propsList/index.d.ts +0 -3
  863. package/dist/src/propsList/index.d.ts.map +0 -1
  864. package/dist/src/propsList/index.js +0 -1
  865. package/dist/src/propsList/propsList.d.ts.map +0 -1
  866. package/dist/src/queryChip/index.d.ts +0 -3
  867. package/dist/src/queryChip/index.d.ts.map +0 -1
  868. package/dist/src/queryChip/index.js +0 -1
  869. package/dist/src/queryChip/queryChip.d.ts.map +0 -1
  870. package/dist/src/radioChoices/index.d.ts.map +0 -1
  871. package/dist/src/radioChoices/radioChoices.d.ts.map +0 -1
  872. package/dist/src/scheme/schemeSwitch.d.ts.map +0 -1
  873. package/dist/src/selectAll/index.d.ts +0 -3
  874. package/dist/src/selectAll/index.d.ts.map +0 -1
  875. package/dist/src/selectAll/index.js +0 -1
  876. package/dist/src/selectAll/selectAll.d.ts.map +0 -1
  877. package/dist/src/selectField/index.d.ts +0 -3
  878. package/dist/src/selectField/index.d.ts.map +0 -1
  879. package/dist/src/selectField/index.js +0 -1
  880. package/dist/src/selectField/selectField.d.ts.map +0 -1
  881. package/dist/src/skipLink/index.d.ts +0 -2
  882. package/dist/src/skipLink/index.d.ts.map +0 -1
  883. package/dist/src/skipLink/index.js +0 -1
  884. package/dist/src/skipLink/skipLink.d.ts.map +0 -1
  885. package/dist/src/statusBar/index.d.ts +0 -4
  886. package/dist/src/statusBar/index.d.ts.map +0 -1
  887. package/dist/src/statusBar/index.js +0 -2
  888. package/dist/src/statusBar/statusBar.d.ts.map +0 -1
  889. package/dist/src/subscription/prefixKeys.d.ts.map +0 -1
  890. package/dist/src/textButton/index.d.ts +0 -3
  891. package/dist/src/textButton/index.d.ts.map +0 -1
  892. package/dist/src/textButton/index.js +0 -1
  893. package/dist/src/textButton/textButton.d.ts.map +0 -1
  894. package/dist/src/textareaField/index.d.ts +0 -3
  895. package/dist/src/textareaField/index.d.ts.map +0 -1
  896. package/dist/src/textareaField/index.js +0 -1
  897. package/dist/src/textareaField/textareaField.d.ts.map +0 -1
  898. package/dist/src/topBar/barHeight.d.ts.map +0 -1
  899. package/dist/src/topBar/index.d.ts +0 -4
  900. package/dist/src/topBar/index.d.ts.map +0 -1
  901. package/dist/src/topBar/index.js +0 -2
  902. package/dist/src/topBar/topBar.d.ts.map +0 -1
  903. package/dist/src/videoFrame/index.d.ts +0 -3
  904. package/dist/src/videoFrame/index.d.ts.map +0 -1
  905. package/dist/src/videoFrame/index.js +0 -1
  906. package/dist/src/videoFrame/videoFrame.d.ts.map +0 -1
  907. package/src/audioFrame/index.ts +0 -2
  908. package/src/barChart/index.ts +0 -2
  909. package/src/chartTable/chartTable.ts +0 -88
  910. package/src/codeEditor/index.ts +0 -2
  911. package/src/codeSurface/index.ts +0 -2
  912. package/src/dropZone/index.ts +0 -2
  913. package/src/emptyState/index.ts +0 -2
  914. package/src/errorSummary/index.ts +0 -2
  915. package/src/fieldGrid/index.ts +0 -2
  916. package/src/fileTree/index.ts +0 -2
  917. package/src/filterChip/index.ts +0 -2
  918. package/src/filterStrip/index.ts +0 -2
  919. package/src/flashWord/index.ts +0 -2
  920. package/src/iconButton/index.ts +0 -2
  921. package/src/imageFrame/index.ts +0 -2
  922. package/src/keyHint/index.ts +0 -3
  923. package/src/lineChart/index.ts +0 -2
  924. package/src/lineDiff/diff.ts +0 -182
  925. package/src/lineDiff/index.ts +0 -4
  926. package/src/linkButton/index.ts +0 -2
  927. package/src/linkState/index.ts +0 -2
  928. package/src/liveRegion/index.ts +0 -2
  929. package/src/navStrip/index.ts +0 -2
  930. package/src/pageHead/index.ts +0 -2
  931. package/src/passwordField/index.ts +0 -2
  932. package/src/propsList/index.ts +0 -2
  933. package/src/queryChip/index.ts +0 -2
  934. package/src/selectAll/index.ts +0 -2
  935. package/src/skipLink/index.ts +0 -1
  936. package/src/statusBar/index.ts +0 -3
  937. package/src/textButton/index.ts +0 -2
  938. package/src/textareaField/index.ts +0 -2
  939. package/src/topBar/index.ts +0 -3
  940. package/src/videoFrame/index.ts +0 -2
@@ -1,12 +1,12 @@
1
1
  import { Button as UiButton, DragAndDrop as UiDragAndDrop } from "@foldkit/ui";
2
2
  import { Array, Effect, Equal, Match, Option, Schema, pipe } from "effect";
3
3
  import * as Command from "foldkit/command";
4
- import {
5
- type Attribute,
6
- type ChildAttribute,
7
- type Html,
8
- type HtmlBuilder,
9
- childAttributes,
4
+ import { childAttributes } from "foldkit/html";
5
+ import type {
6
+ Attribute,
7
+ ChildAttribute,
8
+ Html,
9
+ HtmlBuilder,
10
10
  } from "foldkit/html";
11
11
  import { defineMessageUnion } from "foldkit/message";
12
12
  import * as Mount from "foldkit/mount";
@@ -16,13 +16,8 @@ import * as Subscription from "foldkit/subscription";
16
16
  import * as Update from "foldkit/update";
17
17
 
18
18
  import * as Announcer from "../announcer/announcer.ts";
19
- import * as Button from "../button/button.ts";
20
19
  import type { Attributes } from "../attributes/attributes.ts";
21
- import * as Glyph from "../glyph/glyph.ts";
22
- import * as IconButton from "../iconButton/iconButton.ts";
23
- import { LOCALE } from "../locale/locale.ts";
24
- import { slotView } from "../slot/slot.ts";
25
- import { prefixKeys } from "../subscription/prefixKeys.ts";
20
+ import * as Button from "../button/button.ts";
26
21
  import {
27
22
  LEFT_BUTTON,
28
23
  activatedKeyboardDrag,
@@ -36,12 +31,16 @@ import {
36
31
  pressedDraggable,
37
32
  settle as settleDrag,
38
33
  } from "../drag/drag.ts";
39
-
40
- // MODEL
34
+ import * as Glyph from "../glyph/glyph.ts";
35
+ import * as IconButton from "../icon-button/icon-button.ts";
36
+ import { LOCALE } from "../locale/locale.ts";
37
+ import { slotView } from "../slot/slot.ts";
38
+ import { prefixKeys } from "../subscription/prefix-keys.ts";
41
39
 
42
40
  /** Schema for one card as the board knows it: its id, unique across the board, and its name
43
41
  * in words, which the grip and screen readers use. */
44
42
  export const Card = Schema.Struct({ id: Schema.String, label: Schema.String });
43
+
45
44
  export type Card = typeof Card.Type;
46
45
 
47
46
  /** Schema for one column: its id, its title, and its cards in order. */
@@ -50,45 +49,34 @@ export const Column = Schema.Struct({
50
49
  title: Schema.String,
51
50
  cards: Schema.Array(Card),
52
51
  });
52
+
53
53
  export type Column = typeof Column.Type;
54
54
 
55
- /** How the keyboard carries what it holds: said on the grip and once it is picked up. */
56
- const KEYBOARD_MOVES = "Arrow keys move it to another column, space drops it, escape cancels.";
55
+ const KEYBOARD_MOVES =
56
+ "Arrow keys move it to another column, space drops it, escape cancels.";
57
57
 
58
- /** The words a board says. `{card}` stands for the card's label and `{column}` for a
59
- * column's title. */
60
58
  const COPY = {
61
- /** The grip's name. */
62
59
  gripLabel: "Move {card}",
63
- /** What the grip describes: how to move a card from the keyboard. */
64
60
  gripHelp: `Press space to pick the card up. ${KEYBOARD_MOVES}`,
65
- /** A pointer has lifted the card. */
66
61
  pickedUp: "Picked up {card}.",
67
- /** The keyboard has lifted the card: say how to go on. */
68
62
  pickedUpByKeyboard: `Picked up {card}. ${KEYBOARD_MOVES}`,
69
- /** The held card is over another column. */
70
63
  over: "{card} is over {column}.",
71
- /** The card was dropped in a column. */
72
64
  dropped: "{card} dropped in {column}.",
73
- /** The card was let go where it already was, or over no column. */
74
65
  putBack: "{card} put back where it was.",
75
- /** Escape, or the application, cancelled the move. */
76
66
  cancelled: "Move cancelled. {card} put back where it was.",
77
67
  };
78
68
 
79
- const PressPoint = Schema.Struct({ clientX: Schema.Number, clientY: Schema.Number });
69
+ const PressPoint = Schema.Struct({
70
+ clientX: Schema.Finite,
71
+ clientY: Schema.Finite,
72
+ });
80
73
 
81
- /** What the board keeps while a card is pressed or held: the card, the columns as the view had
82
- * them when it was pressed, and where a pointer pressed it (none for the keyboard). The
83
- * columns are the parent's and reach the board only through its view, so the press carries
84
- * them and they are kept: a drop is placed against them (the destination's other cards give
85
- * `toIndex` and the neighbours), as the reader saw them when picking the card up, and each
86
- * step is said with their titles. */
87
74
  const Held = Schema.Struct({
88
75
  card: Card,
89
- columns: Schema.Array(Column),
76
+ columnsAtPress: Schema.Array(Column),
90
77
  maybePressPoint: Schema.Option(PressPoint),
91
78
  });
79
+
92
80
  type Held = typeof Held.Type;
93
81
 
94
82
  /** Schema for a board: the `@foldkit/ui` DragAndDrop it moves cards with, whether cards may
@@ -98,12 +86,11 @@ export const Model = Schema.Struct({
98
86
  isMovable: Schema.Boolean,
99
87
  maybeHeld: Schema.Option(Held),
100
88
  });
101
- export type Model = typeof Model.Type;
102
89
 
103
- // MESSAGE
90
+ export type Model = typeof Model.Type;
104
91
 
105
- /** Where on a card a press landed: its body (which selects it) or its grip. */
106
92
  const PressSpot = Schema.Literals(["Body", "Grip"]);
93
+
107
94
  type PressSpot = typeof PressSpot.Type;
108
95
 
109
96
  /** Union of all Messages a board can produce. */
@@ -113,20 +100,22 @@ export const Message = defineMessageUnion({
113
100
  cardId: Schema.String,
114
101
  spot: PressSpot,
115
102
  pointerType: Schema.String,
116
- screenX: Schema.Number,
117
- screenY: Schema.Number,
118
- clientX: Schema.Number,
119
- clientY: Schema.Number,
120
- columns: Schema.Array(Column),
103
+ screenX: Schema.Finite,
104
+ screenY: Schema.Finite,
105
+ clientX: Schema.Finite,
106
+ clientY: Schema.Finite,
107
+ columnsAtPress: Schema.Array(Column),
108
+ },
109
+ PressedGripKey: {
110
+ cardId: Schema.String,
111
+ columnsAtPress: Schema.Array(Column),
121
112
  },
122
- PressedGripKey: { cardId: Schema.String, columns: Schema.Array(Column) },
123
113
  PressedEscape: {},
124
114
  CompletedAnnounceMove: {},
125
115
  CompletedSizeLiftedCard: {},
126
116
  });
127
- export type Message = typeof Message.Type;
128
117
 
129
- // OUT MESSAGE
118
+ export type Message = typeof Message.Type;
130
119
 
131
120
  /**
132
121
  * Union of OutMessages a board reports.
@@ -143,17 +132,16 @@ export const OutMessage = defineMessageUnion({
143
132
  Moved: {
144
133
  cardId: Schema.String,
145
134
  fromColumnId: Schema.String,
146
- fromIndex: Schema.Number,
135
+ fromIndex: Schema.Finite,
147
136
  toColumnId: Schema.String,
148
- toIndex: Schema.Number,
137
+ toIndex: Schema.Finite,
149
138
  maybeAfterCardId: Schema.Option(Schema.String),
150
139
  maybeBeforeCardId: Schema.Option(Schema.String),
151
140
  },
152
141
  SelectedCard: { cardId: Schema.String },
153
142
  });
154
- export type OutMessage = typeof OutMessage.Type;
155
143
 
156
- // INIT
144
+ export type OutMessage = typeof OutMessage.Type;
157
145
 
158
146
  /** Configuration for creating a board with `init`. The `id` must be unique in the document;
159
147
  * the board's DOM hooks are scoped by it, so two boards on a page keep to their own cards. */
@@ -172,78 +160,89 @@ export const init = (config: InitConfig): Model => ({
172
160
  maybeHeld: Option.none(),
173
161
  });
174
162
 
175
- // ACCESSORS
176
-
177
163
  /** The board's id, unique in the document. */
178
164
  export const id = (model: Model): string => model.dragAndDrop.id;
179
165
 
180
- /** Whether a card is held by a pointer or the keyboard. */
181
- export const isDragging = (model: Model): boolean => UiDragAndDrop.isDragging(model.dragAndDrop);
166
+ export const isDragging = (model: Model): boolean =>
167
+ UiDragAndDrop.isDragging(model.dragAndDrop);
182
168
 
183
- // DOM HOOKS
169
+ const hookId = (boardId: string, localId: string): string =>
170
+ `${boardId}/${localId}`;
184
171
 
185
- const hookId = (boardId: string, localId: string): string => `${boardId}/${localId}`;
172
+ const cardHook = (model: Model, cardId: string): string =>
173
+ hookId(id(model), cardId);
186
174
 
187
- const cardHook = (model: Model, cardId: string): string => hookId(id(model), cardId);
188
-
189
- const columnHook = (model: Model, columnId: string): string => hookId(id(model), columnId);
175
+ const columnHook = (model: Model, columnId: string): string =>
176
+ hookId(id(model), columnId);
190
177
 
191
178
  const CARD_ATTRIBUTE = "board-card";
192
179
  const TITLE_ATTRIBUTE = "board-title";
193
180
  const GRIP_ATTRIBUTE = "board-grip";
194
181
 
195
- // COMMAND
196
-
197
182
  /** Says a step of a move through the page's live region (as `Announcer.Announce` does), which is
198
183
  * inside the topmost open dialog when there is one. */
199
184
  export const AnnounceMove = Command.define("AnnounceMove", {
200
185
  args: { text: Schema.String },
201
186
  messages: [Message.CompletedAnnounceMove],
202
- execute: ({ text }) => Announcer.announce(text).pipe(Effect.as(Message.CompletedAnnounceMove())),
187
+ execute: ({ text }) =>
188
+ Announcer.announce(text).pipe(Effect.as(Message.CompletedAnnounceMove())),
203
189
  });
204
190
 
205
- // UPDATE
206
-
207
191
  type UpdateReturn = Update.ReturnWithOutMessage<Model, Message, OutMessage>;
208
192
 
209
- type Direction = (typeof UiDragAndDrop.Message.PressedArrowKey.Type)["direction"];
193
+ type Direction =
194
+ (typeof UiDragAndDrop.Message.PressedArrowKey.Type)["direction"];
210
195
 
211
196
  type Place = Readonly<{ card: Card; column: Column; index: number }>;
212
197
 
213
- const placeOf = (columns: ReadonlyArray<Column>, cardId: string): Option.Option<Place> =>
198
+ const placeOf = (
199
+ columns: readonly Column[],
200
+ cardId: string
201
+ ): Option.Option<Place> =>
214
202
  Array.findFirst(columns, (column) =>
215
203
  Array.findFirst(
216
204
  Array.map(column.cards, (card, index) => ({ card, column, index })),
217
- ({ card }) => card.id === cardId,
218
- ),
205
+ ({ card }) => card.id === cardId
206
+ )
219
207
  );
220
208
 
221
209
  const fill = (template: string, card: string, column = ""): string =>
222
210
  template.replaceAll("{card}", card).replaceAll("{column}", column);
223
211
 
224
- const columnOfHook = (model: Model, held: Held, hook: string): Option.Option<Column> =>
225
- Array.findFirst(held.columns, (column) => columnHook(model, column.id) === hook);
212
+ const columnOfHook = (
213
+ model: Model,
214
+ held: Held,
215
+ hook: string
216
+ ): Option.Option<Column> =>
217
+ Array.findFirst(
218
+ held.columnsAtPress,
219
+ (column) => columnHook(model, column.id) === hook
220
+ );
226
221
 
227
222
  const overColumn = (model: Model): Option.Option<Column> =>
228
223
  Option.flatMap(model.maybeHeld, (held) =>
229
- Option.flatMap(UiDragAndDrop.maybeDropTarget(model.dragAndDrop), ({ containerId }) =>
230
- columnOfHook(model, held, containerId),
231
- ),
224
+ Option.flatMap(
225
+ UiDragAndDrop.maybeDropTarget(model.dragAndDrop),
226
+ ({ containerId }) => columnOfHook(model, held, containerId)
227
+ )
232
228
  );
233
229
 
234
230
  const placementOf = (
235
231
  model: Model,
236
232
  held: Held,
237
233
  toContainerId: string,
238
- rawIndex: number,
234
+ rawIndex: number
239
235
  ): Option.Option<OutMessage> =>
240
236
  Option.gen(function* () {
241
- const from = yield* placeOf(held.columns, held.card.id);
237
+ const from = yield* placeOf(held.columnsAtPress, held.card.id);
242
238
  const to = yield* columnOfHook(model, held, toContainerId);
243
239
  const others = Array.filter(to.cards, (card) => card.id !== held.card.id);
244
240
  const isSameColumn = to.id === from.column.id;
245
241
  const isKeyboard = Option.isNone(held.maybePressPoint);
246
- const pastItself = isSameColumn && rawIndex > from.index ? rawIndex - 1 : rawIndex;
242
+
243
+ const pastItself =
244
+ isSameColumn && rawIndex > from.index ? rawIndex - 1 : rawIndex;
245
+
247
246
  const toIndex = Math.min(Math.max(pastItself, 0), others.length);
248
247
  const isWhereItWas = isSameColumn && (isKeyboard || toIndex === from.index);
249
248
 
@@ -257,8 +256,14 @@ const placementOf = (
257
256
  fromIndex: from.index,
258
257
  toColumnId: to.id,
259
258
  toIndex,
260
- maybeAfterCardId: Option.map(Array.get(others, toIndex - 1), (card) => card.id),
261
- maybeBeforeCardId: Option.map(Array.get(others, toIndex), (card) => card.id),
259
+ maybeAfterCardId: Option.map(
260
+ Array.get(others, toIndex - 1),
261
+ (card) => card.id
262
+ ),
263
+ maybeBeforeCardId: Option.map(
264
+ Array.get(others, toIndex),
265
+ (card) => card.id
266
+ ),
262
267
  });
263
268
  });
264
269
 
@@ -272,9 +277,9 @@ const foldDragAndDropOutMessage = UiDragAndDrop.OutMessage.match<
272
277
  { model: stepModel },
273
278
  Option.getOrUndefined(
274
279
  Option.flatMap(stepModel.maybeHeld, (held) =>
275
- placementOf(stepModel, held, toContainerId, toIndex),
276
- ),
277
- ),
280
+ placementOf(stepModel, held, toContainerId, toIndex)
281
+ )
282
+ )
278
283
  ),
279
284
  Cancelled: () => (stepModel) => ({ model: stepModel }),
280
285
  });
@@ -291,19 +296,21 @@ const foldDragAndDrop = Update.foldChild({
291
296
  foldOutMessage: foldDragAndDropOutMessage,
292
297
  });
293
298
 
294
- /** What screen readers hear for one step of a move, from the phase before and after it.
295
- * `putBack` is what a card set down without a move says: put back, or cancelled. */
296
299
  const moveText = (
297
300
  held: Held,
298
301
  previous: Model,
299
302
  next: Model,
300
303
  maybeOutMessage: Option.Option<OutMessage>,
301
- putBack: string,
304
+ putBack: string
302
305
  ): Option.Option<string> => {
303
- const label = held.card.label;
306
+ const { label } = held.card;
304
307
  const before = phaseOf(previous.dragAndDrop);
305
308
  const after = phaseOf(next.dragAndDrop);
306
- const maybeMoved = Option.filter(maybeOutMessage, (outMessage) => outMessage._tag === "Moved");
309
+
310
+ const maybeMoved = Option.filter(
311
+ maybeOutMessage,
312
+ (outMessage) => outMessage._tag === "Moved"
313
+ );
307
314
 
308
315
  if (after === "Idle") {
309
316
  return isCarrying(before)
@@ -313,31 +320,29 @@ const moveText = (
313
320
  {
314
321
  onNone: () => fill(putBack, label),
315
322
  onSome: (column) => fill(COPY.dropped, label, column.title),
316
- },
317
- ),
323
+ }
324
+ )
318
325
  )
319
326
  : Option.none();
320
327
  } else if (before === "Pressed" && after === "PointerDragging") {
321
328
  return Option.some(fill(COPY.pickedUp, label));
322
329
  } else if (before === "Idle" && after === "KeyboardDragging") {
323
330
  return Option.some(fill(COPY.pickedUpByKeyboard, label));
324
- } else {
325
- return pipe(
326
- overColumn(next),
327
- Option.filter(
328
- (column) =>
329
- !Equal.equals(
330
- Option.map(overColumn(previous), ({ id }) => id),
331
- Option.some(column.id),
332
- ),
333
- ),
334
- Option.map((column) => fill(COPY.over, label, column.title)),
335
- );
336
331
  }
332
+
333
+ return pipe(
334
+ overColumn(next),
335
+ Option.filter(
336
+ (column) =>
337
+ !Equal.equals(
338
+ Option.map(overColumn(previous), (over) => over.id),
339
+ Option.some(column.id)
340
+ )
341
+ ),
342
+ Option.map((column) => fill(COPY.over, label, column.title))
343
+ );
337
344
  };
338
345
 
339
- /** Announces the step a DragAndDrop update took and forgets the held card once it is down.
340
- * A card set down without a move says `putBack`. */
341
346
  const settle =
342
347
  (previous: Model, putBack = COPY.putBack) =>
343
348
  (dragAndDropUpdate: UpdateReturn): UpdateReturn =>
@@ -350,18 +355,27 @@ const settle =
350
355
  previous,
351
356
  dragAndDropUpdate.model,
352
357
  Option.fromNullishOr(dragAndDropUpdate.outMessage),
353
- putBack,
354
- ),
358
+ putBack
359
+ )
355
360
  ),
356
- (text) => AnnounceMove({ text }),
357
- ),
361
+ (text) => AnnounceMove({ text })
362
+ )
358
363
  );
359
364
 
360
365
  const holding = (model: Model, held: Held): Model =>
361
366
  modifyFields(model, { maybeHeld: () => Option.some(held) });
362
367
 
363
- const liftByKeyboard = (model: Model, place: Place, columns: ReadonlyArray<Column>) => {
364
- const pressed = holding(model, { card: place.card, columns, maybePressPoint: Option.none() });
368
+ const liftByKeyboard = (
369
+ model: Model,
370
+ place: Place,
371
+ columnsAtPress: readonly Column[]
372
+ ) => {
373
+ const pressed = holding(model, {
374
+ card: place.card,
375
+ columnsAtPress,
376
+ maybePressPoint: Option.none(),
377
+ });
378
+
365
379
  return settle(pressed)(
366
380
  foldDragAndDrop(
367
381
  pressed,
@@ -369,19 +383,17 @@ const liftByKeyboard = (model: Model, place: Place, columns: ReadonlyArray<Colum
369
383
  itemId: cardHook(model, place.card.id),
370
384
  containerId: columnHook(model, place.column.id),
371
385
  index: place.index,
372
- }),
373
- ),
386
+ })
387
+ )
374
388
  );
375
389
  };
376
390
 
377
- // NOTE: every arrow jumps a column in reading order, so one press is one column whether the
378
- // columns sit side by side or stack on a phone. The ui's own arrows move within a column.
379
- const toColumnDirection = (direction: Direction): Direction =>
391
+ const toColumnStepInReadingOrder = (direction: Direction): Direction =>
380
392
  Match.value(direction).pipe(
381
393
  Match.withReturnType<Direction>(),
382
394
  Match.whenOr("Left", "Up", () => "PreviousContainer"),
383
395
  Match.whenOr("Right", "Down", () => "NextContainer"),
384
- Match.orElse(() => direction),
396
+ Match.orElse(() => direction)
385
397
  );
386
398
 
387
399
  const moveByKeyboard = (model: Model, direction: Direction): UpdateReturn =>
@@ -391,7 +403,7 @@ const moveByKeyboard = (model: Model, direction: Direction): UpdateReturn =>
391
403
  itemId: UiDragAndDrop.maybeDraggedItemId(model.dragAndDrop),
392
404
  target: UiDragAndDrop.maybeDropTarget(model.dragAndDrop),
393
405
  }),
394
- () => phaseOf(model.dragAndDrop) === "KeyboardDragging",
406
+ () => phaseOf(model.dragAndDrop) === "KeyboardDragging"
395
407
  ),
396
408
  {
397
409
  onNone: () => ({ model }),
@@ -403,41 +415,44 @@ const moveByKeyboard = (model: Model, direction: Direction): UpdateReturn =>
403
415
  itemId,
404
416
  currentContainerId: target.containerId,
405
417
  currentIndex: target.index,
406
- direction: toColumnDirection(direction),
418
+ direction: toColumnStepInReadingOrder(direction),
407
419
  }),
408
- toDragAndDropMessage,
420
+ toDragAndDropMessage
409
421
  ),
410
422
  ],
411
423
  }),
412
- },
424
+ }
413
425
  );
414
426
 
415
- // NOTE: @foldkit/ui gap: DragAndDrop's ResolveKeyboardMove walks every `[data-droppable-id]`
416
- // in the document. A column it finds past this board's first or last is another list's, so
417
- // that step is not taken.
418
427
  const isOwnColumnHook = (model: Model, hook: string): boolean =>
419
- Option.exists(model.maybeHeld, (held) => Option.isSome(columnOfHook(model, held, hook)));
428
+ Option.exists(model.maybeHeld, (held) =>
429
+ Option.isSome(columnOfHook(model, held, hook))
430
+ );
420
431
 
421
- /** DragAndDrop's own cancel (the card back where it was, focus back on a keyboard-held card's
422
- * grip), said as a cancel rather than a card put back. */
423
- const cancelDrag = (model: Model, message: UiDragAndDrop.Message): UpdateReturn =>
432
+ const cancelDrag = (
433
+ model: Model,
434
+ message: UiDragAndDrop.Message
435
+ ): UpdateReturn =>
424
436
  settle(model, COPY.cancelled)(foldDragAndDrop(model, message));
425
437
 
426
- const updateDragAndDrop = (model: Model, message: UiDragAndDrop.Message): UpdateReturn =>
438
+ const updateDragAndDrop = (
439
+ model: Model,
440
+ message: UiDragAndDrop.Message
441
+ ): UpdateReturn =>
427
442
  Match.value(message).pipe(
428
443
  Match.withReturnType<UpdateReturn>(),
429
- Match.tag("PressedArrowKey", ({ direction }) => moveByKeyboard(model, direction)),
444
+ Match.tag("PressedArrowKey", ({ direction }) =>
445
+ moveByKeyboard(model, direction)
446
+ ),
430
447
  Match.tag("CompletedResolveKeyboardMove", ({ targetContainerId }) =>
431
448
  isOwnColumnHook(model, targetContainerId)
432
449
  ? settle(model)(foldDragAndDrop(model, message))
433
- : { model },
450
+ : { model }
434
451
  ),
435
452
  Match.tag("CancelledDrag", () => cancelDrag(model, message)),
436
- Match.orElse(() => settle(model)(foldDragAndDrop(model, message))),
453
+ Match.orElse(() => settle(model)(foldDragAndDrop(model, message)))
437
454
  );
438
455
 
439
- /** A press on a card: on its body it selects the card (while nothing is held); under a mouse,
440
- * or on the grip, it also presses the card for a drag while cards may move. */
441
456
  const pressCard =
442
457
  (model: Model) =>
443
458
  ({
@@ -448,24 +463,27 @@ const pressCard =
448
463
  screenY,
449
464
  clientX,
450
465
  clientY,
451
- columns,
466
+ columnsAtPress,
452
467
  }: typeof Message.PressedCard.Type): UpdateReturn => {
453
468
  const maybeSelected = Option.liftPredicate(
454
469
  OutMessage.SelectedCard({ cardId }),
455
- () => spot === "Body" && phaseOf(model.dragAndDrop) === "Idle",
470
+ () => spot === "Body" && phaseOf(model.dragAndDrop) === "Idle"
456
471
  );
457
- const isLifting = canLift(model) && (spot === "Grip" || pointerType === "mouse");
472
+
473
+ const isLifting =
474
+ canLift(model) && (spot === "Grip" || pointerType === "mouse");
458
475
 
459
476
  const press = Option.match(
460
- Option.filter(placeOf(columns, cardId), () => isLifting),
477
+ Option.filter(placeOf(columnsAtPress, cardId), () => isLifting),
461
478
  {
462
479
  onNone: (): UpdateReturn => ({ model }),
463
480
  onSome: (place) => {
464
481
  const pressed = holding(model, {
465
482
  card: place.card,
466
- columns,
483
+ columnsAtPress,
467
484
  maybePressPoint: Option.some({ clientX, clientY }),
468
485
  });
486
+
469
487
  return settle(pressed)(
470
488
  foldDragAndDrop(
471
489
  pressed,
@@ -475,60 +493,55 @@ const pressCard =
475
493
  index: place.index,
476
494
  screenX,
477
495
  screenY,
478
- }),
479
- ),
496
+ })
497
+ )
480
498
  );
481
499
  },
482
- },
500
+ }
483
501
  );
484
502
 
485
- // a press reports nothing of its own, so the selection is the step's one OutMessage
486
503
  return Option.match(maybeSelected, {
487
504
  onNone: () => press,
488
505
  onSome: (selected) => ({ ...press, outMessage: selected }),
489
506
  });
490
507
  };
491
508
 
509
+ /**
510
+ * Puts a pressed or held card back where it was, says so, and reports no move. A keyboard
511
+ * move hands focus back to the card's grip. Call it when the layout changes under the board.
512
+ */
513
+ export const cancel = (model: Model): UpdateReturn =>
514
+ cancelDrag(model, cancelledDrag());
515
+
492
516
  /** Processes a board Message and returns the next Model, Commands and OutMessage. */
493
517
  export const update = (model: Model, message: Message) =>
494
518
  Message.match<UpdateReturn>(message, {
495
519
  GotDragAndDropMessage: ({ message: dragAndDropMessage }) =>
496
520
  updateDragAndDrop(model, dragAndDropMessage),
497
521
  PressedCard: pressCard(model),
498
- PressedGripKey: ({ cardId, columns }) =>
522
+ PressedGripKey: ({ cardId, columnsAtPress }) =>
499
523
  Option.match(
500
- Option.filter(placeOf(columns, cardId), () => canLift(model)),
524
+ Option.filter(placeOf(columnsAtPress, cardId), () => canLift(model)),
501
525
  {
502
526
  onNone: () => ({ model }),
503
- onSome: (place) => liftByKeyboard(model, place, columns),
504
- },
527
+ onSome: (place) => liftByKeyboard(model, place, columnsAtPress),
528
+ }
505
529
  ),
506
530
  PressedEscape: () => cancel(model),
507
531
  CompletedAnnounceMove: () => ({ model }),
508
532
  CompletedSizeLiftedCard: () => ({ model }),
509
533
  });
510
534
 
511
- // CAPABILITIES
512
-
513
- /**
514
- * Puts a pressed or held card back where it was, says so, and reports no move. A keyboard
515
- * move hands focus back to the card's grip. Call it when the layout changes under the board.
516
- */
517
- export const cancel = (model: Model): UpdateReturn => cancelDrag(model, cancelledDrag());
518
-
519
535
  /**
520
536
  * Lets cards move, or stops them: while work runs, nothing moves. Stopping cancels a card
521
537
  * that is pressed or held, so no `Moved` arrives for it.
522
538
  */
523
539
  export const setMovable = (model: Model, isMovable: boolean): UpdateReturn => {
524
540
  const next = modifyFields(model, { isMovable: () => isMovable });
541
+
525
542
  return isMovable ? { model: next } : cancel(next);
526
543
  };
527
544
 
528
- // SUBSCRIPTION
529
-
530
- // NOTE: @foldkit/ui gap: DragAndDrop's Subscription keys are fixed, so two of its users on a
531
- // page would share them. The board lifts them under its own names, behind the parent's prefix.
532
545
  const dragSubscriptions = Subscription.lift({
533
546
  pointer: UiDragAndDrop.subscriptions.documentPointer,
534
547
  keyboard: UiDragAndDrop.subscriptions.documentKeyboard,
@@ -540,7 +553,7 @@ const dragSubscriptions = Subscription.lift({
540
553
 
541
554
  const boardSubscriptions = Subscription.aggregate(
542
555
  escapeSubscriptions<Model, Message>(Message.PressedEscape()),
543
- dragSubscriptions,
556
+ dragSubscriptions
544
557
  );
545
558
 
546
559
  /** A held card follows the pointer, the arrows and Space move and drop it, Escape puts it
@@ -553,33 +566,39 @@ const boardSubscriptions = Subscription.aggregate(
553
566
  export const subscriptions = <Prefix extends string>(keyPrefix: Prefix) =>
554
567
  prefixKeys(keyPrefix, boardSubscriptions);
555
568
 
556
- // LIFTED CARD
557
-
558
569
  /** Sizes the copy that follows the pointer to the card it lifts, and keeps the pointer where
559
570
  * it pressed the card. Measures the card once, when the copy appears. */
560
571
  export const SizeLiftedCard = Mount.define("SizeLiftedCard", {
561
- args: { cardHook: Schema.String, pressX: Schema.Number, pressY: Schema.Number },
572
+ args: {
573
+ cardHook: Schema.String,
574
+ pressX: Schema.Finite,
575
+ pressY: Schema.Finite,
576
+ },
562
577
  messages: [Message.CompletedSizeLiftedCard],
563
578
  execute: ({ element, cardHook: hook, pressX, pressY }) =>
564
579
  Effect.sync(() => {
565
- measureLift(element, `[data-sortable-id="${CSS.escape(hook)}"]`, pressX, pressY);
580
+ measureLift(
581
+ element,
582
+ `[data-sortable-id="${CSS.escape(hook)}"]`,
583
+ pressX,
584
+ pressY
585
+ );
586
+
566
587
  return Message.CompletedSizeLiftedCard();
567
588
  }),
568
589
  });
569
590
 
570
- // VIEW
571
-
572
591
  /** What the board hands `toCardView` for each card. Pass it to `cardView` as `render`. */
573
592
  export type CardRender = Readonly<{
574
593
  /** For the card's root: the press that selects it, and lifts it under a mouse. */
575
- attributes: ReadonlyArray<ChildAttribute>;
594
+ attributes: readonly ChildAttribute[];
576
595
  /** Cards may move: the card prints the grab cursor (`movable`). */
577
596
  isMovable: boolean;
578
597
  /** The card is the one held: it dims in place (`drag-dim`). */
579
598
  isHeld: boolean;
580
599
  /** The grip, last in the meta row: a quiet glyph button named "Move <label>" that touch and
581
600
  * the keyboard take. Empty when cards may not move. */
582
- grip: ReadonlyArray<Html>;
601
+ grip: readonly Html[];
583
602
  /** This render is the held copy (`lifted`): hidden from screen readers and inert, taking
584
603
  * none of the caller's attributes. */
585
604
  isLifted: boolean;
@@ -590,48 +609,53 @@ export type CardRender = Readonly<{
590
609
  * level: Foldkit runs them in the parent's boundary, so handlers in what they return
591
610
  * dispatch the parent's Messages. */
592
611
  export type ViewInputs = Readonly<{
593
- columns: ReadonlyArray<Column>;
612
+ columns: readonly Column[];
594
613
  /** Renders one card, usually with `Board.cardView`. It is also called for the held copy,
595
614
  * with `render.isLifted`. */
596
615
  toCardView: (card: Card, render: CardRender) => Html;
597
616
  /** What a column holding nothing prints, usually an EmptyState. */
598
- toEmptyView?: (column: Column) => ReadonlyArray<Html>;
617
+ toEmptyView?: (column: Column) => readonly Html[];
599
618
  /** Controls at the right of a column's head, after its count ("capture here"). */
600
- toColumnActions?: (column: Column) => ReadonlyArray<Html>;
619
+ toColumnActions?: (column: Column) => readonly Html[];
601
620
  }>;
602
621
 
603
- const INNER_CONTROL = innerControls(`[data-${TITLE_ATTRIBUTE}], [data-${GRIP_ATTRIBUTE}]`);
622
+ const INNER_CONTROL = innerControls(
623
+ `[data-${TITLE_ATTRIBUTE}], [data-${GRIP_ATTRIBUTE}]`
624
+ );
604
625
 
605
626
  const isInside = (outer: Element, inner: Element | null): boolean =>
606
627
  inner !== null && outer.contains(inner);
607
628
 
608
- /** Where a press on a card landed: its body, its grip, or a control inside it (none). */
609
629
  const pressSpotOf = (target: EventTarget | null): Option.Option<PressSpot> => {
610
630
  if (!(target instanceof Element)) {
611
631
  return Option.some("Body");
612
632
  }
613
633
 
614
- const maybeCard = Option.fromNullishOr(target.closest(`[data-${CARD_ATTRIBUTE}]`));
634
+ const maybeCard = Option.fromNullishOr(
635
+ target.closest(`[data-${CARD_ATTRIBUTE}]`)
636
+ );
637
+
615
638
  const isOnControl = Option.exists(maybeCard, (card) =>
616
- isInside(card, target.closest(INNER_CONTROL)),
639
+ isInside(card, target.closest(INNER_CONTROL))
617
640
  );
641
+
618
642
  const isOnGrip = target.closest(`[data-${GRIP_ATTRIBUTE}]`) !== null;
619
643
 
620
644
  if (isOnControl) {
621
645
  return Option.none();
622
646
  } else if (isOnGrip) {
623
647
  return Option.some("Grip");
624
- } else {
625
- return Option.some("Body");
626
648
  }
649
+
650
+ return Option.some("Body");
627
651
  };
628
652
 
629
653
  type PlaceInfo = Readonly<{
630
654
  model: Model;
631
- columns: ReadonlyArray<Column>;
655
+ columns: readonly Column[];
632
656
  toCardView: (card: Card, render: CardRender) => Html;
633
- toEmptyView: (column: Column) => ReadonlyArray<Html>;
634
- toColumnActions: (column: Column) => ReadonlyArray<Html>;
657
+ toEmptyView: (column: Column) => readonly Html[];
658
+ toColumnActions: (column: Column) => readonly Html[];
635
659
  }>;
636
660
 
637
661
  const gripHelpId = (model: Model): string => `${id(model)}-grip-help`;
@@ -640,32 +664,55 @@ const isHeldCard = (model: Model, cardId: string): boolean =>
640
664
  isDragging(model) &&
641
665
  Option.exists(
642
666
  UiDragAndDrop.maybeDraggedItemId(model.dragAndDrop),
643
- (heldHook) => heldHook === cardHook(model, cardId),
667
+ (heldHook) => heldHook === cardHook(model, cardId)
644
668
  );
645
669
 
646
- const liftedRender = <ParentMessage>(h: HtmlBuilder<ParentMessage>): CardRender => ({
670
+ const liftedRender = <ParentMessage>(
671
+ h: HtmlBuilder<ParentMessage>
672
+ ): CardRender => ({
647
673
  attributes: childAttributes([h.AriaHidden(true), h.Inert(true)]),
648
674
  isMovable: false,
649
675
  isHeld: false,
650
676
  grip: [
651
677
  h.span(
652
- [h.Class("iconbtn"), h.DataAttribute(GRIP_ATTRIBUTE, ""), h.AriaHidden(true)],
653
- [Glyph.view({ name: "grip" }, h)],
678
+ [
679
+ h.Class("iconbtn"),
680
+ h.DataAttribute(GRIP_ATTRIBUTE, ""),
681
+ h.AriaHidden(true),
682
+ ],
683
+ [Glyph.view({ name: "grip" }, h)]
654
684
  ),
655
685
  ],
656
686
  isLifted: true,
657
687
  });
658
688
 
659
- const cardRender = (info: PlaceInfo, place: Place, h: HtmlBuilder<Message>): CardRender => {
689
+ const cardRender = (
690
+ info: PlaceInfo,
691
+ place: Place,
692
+ h: HtmlBuilder<Message>
693
+ ): CardRender => {
660
694
  const { model, columns } = info;
661
695
  const { card } = place;
662
696
  const isIdleNow = phaseOf(model.dragAndDrop) === "Idle";
663
697
  const isHeld = isHeldCard(model, card.id);
664
698
 
665
699
  const onPress: Attribute<Message> = h.OnPointerDown(
666
- (pointerType, button, screenX, screenY, _time, clientX, clientY, _pointerId, target) =>
700
+ (
701
+ pointerType,
702
+ button,
703
+ screenX,
704
+ screenY,
705
+ _time,
706
+ clientX,
707
+ clientY,
708
+ _pointerId,
709
+ target
710
+ ) =>
667
711
  Option.map(
668
- Option.filter(pressSpotOf(target), () => isIdleNow && button === LEFT_BUTTON),
712
+ Option.filter(
713
+ pressSpotOf(target),
714
+ () => isIdleNow && button === LEFT_BUTTON
715
+ ),
669
716
  (spot) =>
670
717
  Message.PressedCard({
671
718
  cardId: card.id,
@@ -675,22 +722,18 @@ const cardRender = (info: PlaceInfo, place: Place, h: HtmlBuilder<Message>): Car
675
722
  screenY,
676
723
  clientX,
677
724
  clientY,
678
- columns,
679
- }),
680
- ),
725
+ columnsAtPress: columns,
726
+ })
727
+ )
681
728
  );
682
729
 
683
730
  const onGripKey = h.OnKeyDownPreventDefault((key) =>
684
731
  Option.liftPredicate(
685
- Message.PressedGripKey({ cardId: card.id, columns }),
686
- () => isIdleNow && (key === " " || key === "Enter"),
687
- ),
732
+ Message.PressedGripKey({ cardId: card.id, columnsAtPress: columns }),
733
+ () => isIdleNow && (key === " " || key === "Enter")
734
+ )
688
735
  );
689
736
 
690
- // NOTE: @foldkit/ui gap: DragAndDrop's `draggable` bundle forces `role="option"` and
691
- // `data-sortable-id`, which belong on a list's own items, and the card's `li` already
692
- // carries `sortable`. So the grip carries the ui's `data-draggable-id` by hand, and
693
- // FocusItem finds the grip by it.
694
737
  const grip = model.isMovable
695
738
  ? [
696
739
  IconButton.view(
@@ -707,7 +750,7 @@ const cardRender = (info: PlaceInfo, place: Place, h: HtmlBuilder<Message>): Car
707
750
  onGripKey,
708
751
  ],
709
752
  },
710
- h,
753
+ h
711
754
  ),
712
755
  ]
713
756
  : [];
@@ -721,7 +764,11 @@ const cardRender = (info: PlaceInfo, place: Place, h: HtmlBuilder<Message>): Car
721
764
  };
722
765
  };
723
766
 
724
- const cardClass = ({ isMovable: movable, isHeld, isLifted }: CardRender): string =>
767
+ const cardClass = ({
768
+ isMovable: movable,
769
+ isHeld,
770
+ isLifted,
771
+ }: CardRender): string =>
725
772
  `board-card${movable ? " movable" : ""}${isHeld ? " drag-dim" : ""}${isLifted ? " lifted" : ""}`;
726
773
 
727
774
  /** Configuration for rendering one card with `cardView`. */
@@ -754,9 +801,17 @@ export type CardViewConfig<ParentMessage> = Readonly<{
754
801
  */
755
802
  export const cardView = <ParentMessage>(
756
803
  config: CardViewConfig<ParentMessage>,
757
- h: HtmlBuilder<ParentMessage>,
804
+ h: HtmlBuilder<ParentMessage>
758
805
  ): Html => {
759
- const { render, title, onOpen, isDisabled = false, editor = [], meta = [] } = config;
806
+ const {
807
+ render,
808
+ title,
809
+ onOpen,
810
+ isDisabled = false,
811
+ editor = [],
812
+ meta = [],
813
+ } = config;
814
+
760
815
  const attributes = render.isLifted ? [] : (config.attributes ?? []);
761
816
  const isEditing = !render.isLifted && Array.isReadonlyArrayNonEmpty(editor);
762
817
 
@@ -769,11 +824,15 @@ export const cardView = <ParentMessage>(
769
824
  isDisabled,
770
825
  toView: (groups) =>
771
826
  h.button(
772
- [...groups.button, h.DataAttribute(TITLE_ATTRIBUTE, ""), h.Class("title")],
773
- [title],
827
+ [
828
+ ...groups.button,
829
+ h.DataAttribute(TITLE_ATTRIBUTE, ""),
830
+ h.Class("title"),
831
+ ],
832
+ [title]
774
833
  ),
775
834
  },
776
- h,
835
+ h
777
836
  );
778
837
 
779
838
  return h.article(
@@ -781,31 +840,36 @@ export const cardView = <ParentMessage>(
781
840
  [
782
841
  ...(isEditing ? editor : [titleView]),
783
842
  ...slotView("div", "meta-row", [...meta, ...render.grip], h),
784
- ],
843
+ ]
785
844
  );
786
845
  };
787
846
 
788
- const cardItemView = (info: PlaceInfo, place: Place, h: HtmlBuilder<Message>): Html =>
847
+ const cardItemView = (
848
+ info: PlaceInfo,
849
+ place: Place,
850
+ h: HtmlBuilder<Message>
851
+ ): Html =>
789
852
  h.keyed("li")(
790
853
  place.card.id,
791
854
  [...UiDragAndDrop.sortable(cardHook(info.model, place.card.id))],
792
- [info.toCardView(place.card, cardRender(info, place, h))],
855
+ [info.toCardView(place.card, cardRender(info, place, h))]
793
856
  );
794
857
 
795
858
  const keyboardSlot = (
796
859
  info: PlaceInfo,
797
860
  column: Column,
798
- h: HtmlBuilder<Message>,
799
- ): ReadonlyArray<Html> => {
861
+ h: HtmlBuilder<Message>
862
+ ): readonly Html[] => {
800
863
  const { model } = info;
864
+
801
865
  const maybeSlot = pipe(
802
866
  Option.all({ held: model.maybeHeld, over: overColumn(model) }),
803
867
  Option.filter(
804
868
  ({ held, over }) =>
805
869
  phaseOf(model.dragAndDrop) === "KeyboardDragging" &&
806
870
  over.id === column.id &&
807
- !Array.some(column.cards, (card) => card.id === held.card.id),
808
- ),
871
+ !Array.some(column.cards, (card) => card.id === held.card.id)
872
+ )
809
873
  );
810
874
 
811
875
  return Array.fromOption(
@@ -813,29 +877,34 @@ const keyboardSlot = (
813
877
  h.keyed("li")(
814
878
  "board-lift-slot",
815
879
  [h.Class("board-lift-slot"), h.AriaHidden(true)],
816
- [info.toCardView(held.card, liftedRender(h))],
817
- ),
818
- ),
880
+ [info.toCardView(held.card, liftedRender(h))]
881
+ )
882
+ )
819
883
  );
820
884
  };
821
885
 
822
- const columnView = (info: PlaceInfo, column: Column, h: HtmlBuilder<Message>): Html => {
886
+ const columnView = (
887
+ info: PlaceInfo,
888
+ column: Column,
889
+ h: HtmlBuilder<Message>
890
+ ): Html => {
823
891
  const { model } = info;
824
892
  const headingId = `${id(model)}-${column.id}-title`;
893
+
825
894
  const items = [
826
895
  ...keyboardSlot(info, column, h),
827
- ...Array.map(column.cards, (card, index) => cardItemView(info, { card, column, index }, h)),
896
+ ...Array.map(column.cards, (card, index) =>
897
+ cardItemView(info, { card, column, index }, h)
898
+ ),
828
899
  ];
900
+
829
901
  const isTarget =
830
902
  isDragging(model) &&
831
903
  Equal.equals(
832
904
  Option.map(overColumn(model), ({ id: overId }) => overId),
833
- Option.some(column.id),
905
+ Option.some(column.id)
834
906
  );
835
907
 
836
- // NOTE: @foldkit/ui gap: DragAndDrop's `droppable` bundle forces `role="listbox"`, which
837
- // would claim cards that are not options. So the column carries the ui's
838
- // `data-droppable-id` by hand, and drops are found by it.
839
908
  return h.keyed("div")(
840
909
  column.id,
841
910
  [
@@ -850,24 +919,31 @@ const columnView = (info: PlaceInfo, column: Column, h: HtmlBuilder<Message>): H
850
919
  [h.Class("panel-tb")],
851
920
  [
852
921
  h.h2([h.Id(headingId)], [column.title]),
853
- h.span([h.Class("meta")], [column.cards.length.toLocaleString(LOCALE)]),
922
+ h.span(
923
+ [h.Class("meta")],
924
+ [column.cards.length.toLocaleString(LOCALE)]
925
+ ),
854
926
  ...info.toColumnActions(column),
855
- ],
927
+ ]
856
928
  ),
857
929
  ...Array.match(items, {
858
930
  onEmpty: () => info.toEmptyView(column),
859
- // NOTE: Safari takes list semantics from a list printed without markers, so the
860
- // list says it is one
861
- onNonEmpty: (cards) => [h.ul([h.Role("list"), h.Class("board-cards")], cards)],
931
+ onNonEmpty: (cards) => [
932
+ h.ul([h.Role("list"), h.Class("board-cards")], cards),
933
+ ],
862
934
  }),
863
- ],
935
+ ]
864
936
  ),
865
- ],
937
+ ]
866
938
  );
867
939
  };
868
940
 
869
- const liftedCopyView = (info: PlaceInfo, h: HtmlBuilder<Message>): ReadonlyArray<Html> => {
941
+ const liftedCopyView = (
942
+ info: PlaceInfo,
943
+ h: HtmlBuilder<Message>
944
+ ): readonly Html[] => {
870
945
  const { model } = info;
946
+
871
947
  const maybeLifted = Option.all({
872
948
  style: UiDragAndDrop.ghostStyle(model.dragAndDrop),
873
949
  held: model.maybeHeld,
@@ -886,12 +962,12 @@ const liftedCopyView = (info: PlaceInfo, h: HtmlBuilder<Message>): ReadonlyArray
886
962
  cardHook: cardHook(model, held.card.id),
887
963
  pressX: pressPoint.clientX,
888
964
  pressY: pressPoint.clientY,
889
- }),
965
+ })
890
966
  ),
891
967
  ],
892
- [info.toCardView(held.card, liftedRender(h))],
893
- ),
894
- ),
968
+ [info.toCardView(held.card, liftedRender(h))]
969
+ )
970
+ )
895
971
  );
896
972
  };
897
973
 
@@ -910,18 +986,37 @@ const liftedCopyView = (info: PlaceInfo, h: HtmlBuilder<Message>): ReadonlyArray
910
986
  * reports `Moved`; lift `subscriptions(keyPrefix)` into the application's, or nothing
911
987
  * follows the pointer or the keys.
912
988
  */
913
- export const view = defineView<Model, Message, ViewInputs>((model, viewInputs, h): Html => {
914
- const { columns, toCardView, toEmptyView = () => [], toColumnActions = () => [] } = viewInputs;
915
- const info: PlaceInfo = { model, columns, toCardView, toEmptyView, toColumnActions };
916
-
917
- return h.div(
918
- [h.Class("board"), h.Style({ "--cols": `${columns.length}` })],
919
- [
920
- ...Array.map(columns, (column) => columnView(info, column, h)),
921
- ...(model.isMovable
922
- ? [h.p([h.Id(gripHelpId(model)), h.Class("sr-only")], [COPY.gripHelp])]
923
- : []),
924
- ...liftedCopyView(info, h),
925
- ],
926
- );
927
- });
989
+ export const view = defineView<Model, Message, ViewInputs>(
990
+ (model, viewInputs, h): Html => {
991
+ const {
992
+ columns,
993
+ toCardView,
994
+ toEmptyView = () => [],
995
+ toColumnActions = () => [],
996
+ } = viewInputs;
997
+
998
+ const info: PlaceInfo = {
999
+ model,
1000
+ columns,
1001
+ toCardView,
1002
+ toEmptyView,
1003
+ toColumnActions,
1004
+ };
1005
+
1006
+ return h.div(
1007
+ [h.Class("board"), h.Style({ "--cols": `${columns.length}` })],
1008
+ [
1009
+ ...Array.map(columns, (column) => columnView(info, column, h)),
1010
+ ...(model.isMovable
1011
+ ? [
1012
+ h.p(
1013
+ [h.Id(gripHelpId(model)), h.Class("sr-only")],
1014
+ [COPY.gripHelp]
1015
+ ),
1016
+ ]
1017
+ : []),
1018
+ ...liftedCopyView(info, h),
1019
+ ]
1020
+ );
1021
+ }
1022
+ );