@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.
- package/DESIGN.md +28 -3
- package/dist/src/adapters/diagram.d.ts +38 -0
- package/dist/src/adapters/diagram.d.ts.map +1 -0
- package/dist/src/adapters/diagram.js +206 -0
- package/dist/src/adapters/mermaid.d.ts +2 -20
- package/dist/src/adapters/mermaid.d.ts.map +1 -1
- package/dist/src/adapters/mermaid.js +9 -229
- package/dist/src/announcer/announcer.d.ts +0 -4
- package/dist/src/announcer/announcer.d.ts.map +1 -1
- package/dist/src/announcer/announcer.js +19 -18
- package/dist/src/attributes/attributes.d.ts.map +1 -1
- package/dist/src/{audioFrame/audioFrame.d.ts → audio-frame/audio-frame.d.ts} +1 -1
- package/dist/src/audio-frame/audio-frame.d.ts.map +1 -0
- package/dist/src/{audioFrame/audioFrame.js → audio-frame/audio-frame.js} +1 -1
- package/dist/src/audio-frame/index.d.ts +3 -0
- package/dist/src/audio-frame/index.d.ts.map +1 -0
- package/dist/src/audio-frame/index.js +1 -0
- package/dist/src/banner/banner.d.ts.map +1 -1
- package/dist/src/banner/index.d.ts.map +1 -1
- package/dist/src/{barChart/barChart.d.ts → bar-chart/bar-chart.d.ts} +2 -2
- package/dist/src/bar-chart/bar-chart.d.ts.map +1 -0
- package/dist/src/{barChart/barChart.js → bar-chart/bar-chart.js} +40 -35
- package/dist/src/bar-chart/index.d.ts +3 -0
- package/dist/src/bar-chart/index.d.ts.map +1 -0
- package/dist/src/bar-chart/index.js +1 -0
- package/dist/src/bench/bench.d.ts.map +1 -1
- package/dist/src/bench/index.d.ts.map +1 -1
- package/dist/src/board/board.d.ts +45 -46
- package/dist/src/board/board.d.ts.map +1 -1
- package/dist/src/board/board.js +76 -102
- package/dist/src/board/index.d.ts +1 -1
- package/dist/src/board/index.d.ts.map +1 -1
- package/dist/src/button/button.d.ts +1 -2
- package/dist/src/button/button.d.ts.map +1 -1
- package/dist/src/button/button.js +7 -5
- package/dist/src/button/index.d.ts +1 -1
- package/dist/src/button/index.d.ts.map +1 -1
- package/dist/src/card/card.d.ts.map +1 -1
- package/dist/src/card/card.js +4 -2
- package/dist/src/card/index.d.ts.map +1 -1
- package/dist/src/{chartTable/chartTable.d.ts → chart-table/chart-table.d.ts} +4 -14
- package/dist/src/chart-table/chart-table.d.ts.map +1 -0
- package/dist/src/{chartTable/chartTable.js → chart-table/chart-table.js} +9 -16
- package/dist/src/chip/chip.d.ts.map +1 -1
- package/dist/src/chip/chip.js +4 -2
- package/dist/src/chip/index.d.ts.map +1 -1
- package/dist/src/choice/choice.d.ts.map +1 -1
- package/dist/src/choice/choice.js +3 -1
- package/dist/src/choice/index.d.ts.map +1 -1
- package/dist/src/choices/choices.d.ts.map +1 -1
- package/dist/src/choices/index.d.ts.map +1 -1
- package/dist/src/{codeEditor/codeEditor.d.ts → code-editor/code-editor.d.ts} +1 -1
- package/dist/src/code-editor/code-editor.d.ts.map +1 -0
- package/dist/src/{codeEditor/codeEditor.js → code-editor/code-editor.js} +2 -2
- package/dist/src/code-editor/index.d.ts +3 -0
- package/dist/src/code-editor/index.d.ts.map +1 -0
- package/dist/src/code-editor/index.js +1 -0
- package/dist/src/{codeSurface/codeSurface.d.ts → code-surface/code-surface.d.ts} +1 -1
- package/dist/src/code-surface/code-surface.d.ts.map +1 -0
- package/dist/src/{codeSurface/codeSurface.js → code-surface/code-surface.js} +6 -1
- package/dist/src/code-surface/index.d.ts +3 -0
- package/dist/src/code-surface/index.d.ts.map +1 -0
- package/dist/src/code-surface/index.js +1 -0
- package/dist/src/{commandPalette/commandPalette.d.ts → command-palette/command-palette.d.ts} +85 -77
- package/dist/src/command-palette/command-palette.d.ts.map +1 -0
- package/dist/src/command-palette/command-palette.js +625 -0
- package/dist/src/{commandPalette → command-palette}/index.d.ts +2 -2
- package/dist/src/command-palette/index.d.ts.map +1 -0
- package/dist/src/{commandPalette → command-palette}/index.js +1 -1
- package/dist/src/{commandPalette → command-palette}/keys.d.ts +0 -21
- package/dist/src/command-palette/keys.d.ts.map +1 -0
- package/dist/src/command-palette/keys.js +85 -0
- package/dist/src/{commandPalette → command-palette}/match.d.ts +5 -11
- package/dist/src/command-palette/match.d.ts.map +1 -0
- package/dist/src/{commandPalette → command-palette}/match.js +20 -24
- package/dist/src/{commandPalette → command-palette}/message.d.ts +37 -26
- package/dist/src/command-palette/message.d.ts.map +1 -0
- package/dist/src/{commandPalette → command-palette}/message.js +8 -20
- package/dist/src/{confirmDialog/confirmDialog.d.ts → confirm-dialog/confirm-dialog.d.ts} +1 -1
- package/dist/src/confirm-dialog/confirm-dialog.d.ts.map +1 -0
- package/dist/src/{confirmDialog/confirmDialog.js → confirm-dialog/confirm-dialog.js} +18 -23
- package/dist/src/confirm-dialog/index.d.ts +3 -0
- package/dist/src/confirm-dialog/index.d.ts.map +1 -0
- package/dist/src/{confirmDialog → confirm-dialog}/index.js +1 -1
- package/dist/src/{contextMenu/contextMenu.d.ts → context-menu/context-menu.d.ts} +18 -21
- package/dist/src/context-menu/context-menu.d.ts.map +1 -0
- package/dist/src/{contextMenu/contextMenu.js → context-menu/context-menu.js} +45 -57
- package/dist/src/{contextMenu → context-menu}/index.d.ts +2 -2
- package/dist/src/context-menu/index.d.ts.map +1 -0
- package/dist/src/{contextMenu → context-menu}/index.js +1 -1
- package/dist/src/{copyButton/copyButton.d.ts → copy-button/copy-button.d.ts} +5 -7
- package/dist/src/copy-button/copy-button.d.ts.map +1 -0
- package/dist/src/{copyButton/copyButton.js → copy-button/copy-button.js} +18 -27
- package/dist/src/copy-button/index.d.ts +3 -0
- package/dist/src/copy-button/index.d.ts.map +1 -0
- package/dist/src/copy-button/index.js +1 -0
- package/dist/src/crumbs/crumbs.d.ts +1 -1
- package/dist/src/crumbs/crumbs.d.ts.map +1 -1
- package/dist/src/crumbs/index.d.ts.map +1 -1
- package/dist/src/deck/deck.d.ts.map +1 -1
- package/dist/src/deck/index.d.ts.map +1 -1
- package/dist/src/dialog/dialog.d.ts +6 -14
- package/dist/src/dialog/dialog.d.ts.map +1 -1
- package/dist/src/dialog/dialog.js +29 -36
- package/dist/src/dialog/fold.d.ts +3 -3
- package/dist/src/dialog/fold.d.ts.map +1 -1
- package/dist/src/dialog/fold.js +5 -4
- package/dist/src/dialog/index.d.ts +1 -1
- package/dist/src/dialog/index.d.ts.map +1 -1
- package/dist/src/disclosure/disclosure.d.ts.map +1 -1
- package/dist/src/disclosure/disclosure.js +3 -1
- package/dist/src/disclosure/index.d.ts.map +1 -1
- package/dist/src/dom/html-element.d.ts +3 -0
- package/dist/src/dom/html-element.d.ts.map +1 -0
- package/dist/src/dom/html-element.js +6 -0
- package/dist/src/drag/drag.d.ts +0 -34
- package/dist/src/drag/drag.d.ts.map +1 -1
- package/dist/src/drag/drag.js +27 -73
- package/dist/src/{dropZone/dropZone.d.ts → drop-zone/drop-zone.d.ts} +3 -3
- package/dist/src/drop-zone/drop-zone.d.ts.map +1 -0
- package/dist/src/{dropZone/dropZone.js → drop-zone/drop-zone.js} +13 -19
- package/dist/src/drop-zone/index.d.ts +3 -0
- package/dist/src/drop-zone/index.d.ts.map +1 -0
- package/dist/src/drop-zone/index.js +1 -0
- package/dist/src/{editableTitle/editableTitle.d.ts → editable-title/editable-title.d.ts} +14 -12
- package/dist/src/editable-title/editable-title.d.ts.map +1 -0
- package/dist/src/{editableTitle/editableTitle.js → editable-title/editable-title.js} +33 -39
- package/dist/src/editable-title/index.d.ts +4 -0
- package/dist/src/editable-title/index.d.ts.map +1 -0
- package/dist/src/{editableTitle → editable-title}/index.js +1 -1
- package/dist/src/{emptyState/emptyState.d.ts → empty-state/empty-state.d.ts} +1 -1
- package/dist/src/empty-state/empty-state.d.ts.map +1 -0
- package/dist/src/{emptyState/emptyState.js → empty-state/empty-state.js} +5 -2
- package/dist/src/empty-state/index.d.ts +3 -0
- package/dist/src/empty-state/index.d.ts.map +1 -0
- package/dist/src/empty-state/index.js +1 -0
- package/dist/src/{errorSummary/errorSummary.d.ts → error-summary/error-summary.d.ts} +2 -2
- package/dist/src/error-summary/error-summary.d.ts.map +1 -0
- package/dist/src/{errorSummary/errorSummary.js → error-summary/error-summary.js} +7 -5
- package/dist/src/error-summary/index.d.ts +3 -0
- package/dist/src/error-summary/index.d.ts.map +1 -0
- package/dist/src/error-summary/index.js +1 -0
- package/dist/src/field/field.d.ts +2 -7
- package/dist/src/field/field.d.ts.map +1 -1
- package/dist/src/field/field.js +12 -13
- package/dist/src/field/index.d.ts.map +1 -1
- package/dist/src/{fieldGrid/fieldGrid.d.ts → field-grid/field-grid.d.ts} +1 -1
- package/dist/src/field-grid/field-grid.d.ts.map +1 -0
- package/dist/src/{fieldGrid/fieldGrid.js → field-grid/field-grid.js} +1 -1
- package/dist/src/field-grid/index.d.ts +3 -0
- package/dist/src/field-grid/index.d.ts.map +1 -0
- package/dist/src/field-grid/index.js +1 -0
- package/dist/src/fields/fields.d.ts.map +1 -1
- package/dist/src/fields/fields.js +4 -1
- package/dist/src/fields/index.d.ts.map +1 -1
- package/dist/src/fieldset/fieldset.d.ts.map +1 -1
- package/dist/src/fieldset/index.d.ts.map +1 -1
- package/dist/src/{fileTree/fileTree.d.ts → file-tree/file-tree.d.ts} +5 -5
- package/dist/src/file-tree/file-tree.d.ts.map +1 -0
- package/dist/src/file-tree/file-tree.js +242 -0
- package/dist/src/file-tree/index.d.ts +3 -0
- package/dist/src/file-tree/index.d.ts.map +1 -0
- package/dist/src/{fileTree → file-tree}/index.js +1 -1
- package/dist/src/{filterChip/filterChip.d.ts → filter-chip/filter-chip.d.ts} +1 -1
- package/dist/src/filter-chip/filter-chip.d.ts.map +1 -0
- package/dist/src/{filterChip/filterChip.js → filter-chip/filter-chip.js} +11 -7
- package/dist/src/filter-chip/index.d.ts +3 -0
- package/dist/src/filter-chip/index.d.ts.map +1 -0
- package/dist/src/filter-chip/index.js +1 -0
- package/dist/src/{filterStrip/filterStrip.d.ts → filter-strip/filter-strip.d.ts} +1 -1
- package/dist/src/filter-strip/filter-strip.d.ts.map +1 -0
- package/dist/src/{filterStrip/filterStrip.js → filter-strip/filter-strip.js} +1 -1
- package/dist/src/filter-strip/index.d.ts +3 -0
- package/dist/src/filter-strip/index.d.ts.map +1 -0
- package/dist/src/filter-strip/index.js +1 -0
- package/dist/src/{flashWord/flashWord.d.ts → flash-word/flash-word.d.ts} +2 -2
- package/dist/src/flash-word/flash-word.d.ts.map +1 -0
- package/dist/src/{flashWord/flashWord.js → flash-word/flash-word.js} +2 -3
- package/dist/src/flash-word/index.d.ts +3 -0
- package/dist/src/flash-word/index.d.ts.map +1 -0
- package/dist/src/flash-word/index.js +1 -0
- package/dist/src/focus/focus.d.ts.map +1 -1
- package/dist/src/focus/focus.js +0 -2
- package/dist/src/format/format.d.ts +0 -7
- package/dist/src/format/format.d.ts.map +1 -1
- package/dist/src/format/format.js +7 -16
- package/dist/src/format/index.d.ts.map +1 -1
- package/dist/src/glyph/glyph.d.ts +1 -2
- package/dist/src/glyph/glyph.d.ts.map +1 -1
- package/dist/src/glyph/glyph.js +0 -2
- package/dist/src/glyph/glyphs.d.ts +19 -4
- package/dist/src/glyph/glyphs.d.ts.map +1 -1
- package/dist/src/glyph/glyphs.js +2577 -2594
- package/dist/src/glyph/index.d.ts.map +1 -1
- package/dist/src/group/group.d.ts.map +1 -1
- package/dist/src/group/index.d.ts.map +1 -1
- package/dist/src/history/history.d.ts +1 -1
- package/dist/src/history/history.d.ts.map +1 -1
- package/dist/src/history/history.js +6 -3
- package/dist/src/history/index.d.ts.map +1 -1
- package/dist/src/{iconButton/iconButton.d.ts → icon-button/icon-button.d.ts} +1 -1
- package/dist/src/icon-button/icon-button.d.ts.map +1 -0
- package/dist/src/{iconButton/iconButton.js → icon-button/icon-button.js} +6 -4
- package/dist/src/icon-button/index.d.ts +3 -0
- package/dist/src/icon-button/index.d.ts.map +1 -0
- package/dist/src/icon-button/index.js +1 -0
- package/dist/src/identity/identity.d.ts.map +1 -1
- package/dist/src/identity/index.d.ts.map +1 -1
- package/dist/src/{imageFrame/imageFrame.d.ts → image-frame/image-frame.d.ts} +1 -1
- package/dist/src/image-frame/image-frame.d.ts.map +1 -0
- package/dist/src/{imageFrame/imageFrame.js → image-frame/image-frame.js} +19 -12
- package/dist/src/image-frame/index.d.ts +3 -0
- package/dist/src/image-frame/index.d.ts.map +1 -0
- package/dist/src/image-frame/index.js +1 -0
- package/dist/src/index.d.ts +41 -41
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +41 -41
- package/dist/src/inline-input/index.d.ts +3 -0
- package/dist/src/inline-input/index.d.ts.map +1 -0
- package/dist/src/{inlineInput → inline-input}/index.js +1 -1
- package/dist/src/{inlineInput/inlineInput.d.ts → inline-input/inline-input.d.ts} +8 -12
- package/dist/src/inline-input/inline-input.d.ts.map +1 -0
- package/dist/src/{inlineInput/inlineInput.js → inline-input/inline-input.js} +60 -75
- package/dist/src/key-help/index.d.ts +3 -0
- package/dist/src/key-help/index.d.ts.map +1 -0
- package/dist/src/{keyHelp → key-help}/index.js +1 -1
- package/dist/src/{keyHelp/keyHelp.d.ts → key-help/key-help.d.ts} +7 -7
- package/dist/src/key-help/key-help.d.ts.map +1 -0
- package/dist/src/{keyHelp/keyHelp.js → key-help/key-help.js} +48 -47
- package/dist/src/key-hint/index.d.ts +4 -0
- package/dist/src/key-hint/index.d.ts.map +1 -0
- package/dist/src/key-hint/index.js +2 -0
- package/dist/src/{keyHint/keyHint.d.ts → key-hint/key-hint.d.ts} +2 -2
- package/dist/src/key-hint/key-hint.d.ts.map +1 -0
- package/dist/src/{keyHint/keyHint.js → key-hint/key-hint.js} +2 -2
- package/dist/src/{keyHint/keyLabel.d.ts → key-hint/key-label.d.ts} +2 -3
- package/dist/src/key-hint/key-label.d.ts.map +1 -0
- package/dist/src/{keyHint/keyLabel.js → key-hint/key-label.js} +29 -24
- package/dist/src/keymap/index.d.ts.map +1 -1
- package/dist/src/keymap/keymap.d.ts +2 -2
- package/dist/src/keymap/keymap.d.ts.map +1 -1
- package/dist/src/keymap/keymap.js +3 -1
- package/dist/src/keys/keys.d.ts +0 -2
- package/dist/src/keys/keys.d.ts.map +1 -1
- package/dist/src/keys/keys.js +0 -2
- package/dist/src/line-chart/index.d.ts +3 -0
- package/dist/src/line-chart/index.d.ts.map +1 -0
- package/dist/src/line-chart/index.js +1 -0
- package/dist/src/{lineChart/lineChart.d.ts → line-chart/line-chart.d.ts} +2 -2
- package/dist/src/line-chart/line-chart.d.ts.map +1 -0
- package/dist/src/{lineChart/lineChart.js → line-chart/line-chart.js} +52 -44
- package/dist/src/line-diff/diff.d.ts +29 -0
- package/dist/src/line-diff/diff.d.ts.map +1 -0
- package/dist/src/line-diff/diff.js +85 -0
- package/dist/src/line-diff/index.d.ts +5 -0
- package/dist/src/line-diff/index.d.ts.map +1 -0
- package/dist/src/line-diff/index.js +2 -0
- package/dist/src/{lineDiff/lineDiff.d.ts → line-diff/line-diff.d.ts} +1 -1
- package/dist/src/line-diff/line-diff.d.ts.map +1 -0
- package/dist/src/{lineDiff/lineDiff.js → line-diff/line-diff.js} +26 -19
- package/dist/src/{lineDiff → line-diff}/patch.d.ts +5 -9
- package/dist/src/line-diff/patch.d.ts.map +1 -0
- package/dist/src/{lineDiff → line-diff}/patch.js +54 -62
- package/dist/src/link-button/index.d.ts +3 -0
- package/dist/src/link-button/index.d.ts.map +1 -0
- package/dist/src/link-button/index.js +1 -0
- package/dist/src/{linkButton/linkButton.d.ts → link-button/link-button.d.ts} +2 -2
- package/dist/src/link-button/link-button.d.ts.map +1 -0
- package/dist/src/{linkButton/linkButton.js → link-button/link-button.js} +1 -1
- package/dist/src/link-state/index.d.ts +3 -0
- package/dist/src/link-state/index.d.ts.map +1 -0
- package/dist/src/link-state/index.js +1 -0
- package/dist/src/{linkState/linkState.d.ts → link-state/link-state.d.ts} +1 -1
- package/dist/src/link-state/link-state.d.ts.map +1 -0
- package/dist/src/link-state/link-state.js +24 -0
- package/dist/src/live-region/index.d.ts +3 -0
- package/dist/src/live-region/index.d.ts.map +1 -0
- package/dist/src/live-region/index.js +1 -0
- package/dist/src/{liveRegion/liveRegion.d.ts → live-region/live-region.d.ts} +6 -3
- package/dist/src/live-region/live-region.d.ts.map +1 -0
- package/dist/src/{liveRegion/liveRegion.js → live-region/live-region.js} +7 -5
- package/dist/src/loading/index.d.ts.map +1 -1
- package/dist/src/loading/loading.d.ts.map +1 -1
- package/dist/src/loading/loading.js +5 -1
- package/dist/src/mark/index.d.ts.map +1 -1
- package/dist/src/mark/mark.d.ts +0 -4
- package/dist/src/mark/mark.d.ts.map +1 -1
- package/dist/src/mark/mark.js +6 -3
- package/dist/src/media/index.d.ts.map +1 -1
- package/dist/src/media/media.d.ts +17 -42
- package/dist/src/media/media.d.ts.map +1 -1
- package/dist/src/media/media.js +106 -104
- package/dist/src/menu/index.d.ts.map +1 -1
- package/dist/src/menu/item.d.ts +8 -8
- package/dist/src/menu/item.d.ts.map +1 -1
- package/dist/src/menu/menu.d.ts +2 -5
- package/dist/src/menu/menu.d.ts.map +1 -1
- package/dist/src/menu/menu.js +19 -30
- package/dist/src/menu/slip.d.ts +4 -18
- package/dist/src/menu/slip.d.ts.map +1 -1
- package/dist/src/menu/slip.js +36 -36
- package/dist/src/meter/index.d.ts.map +1 -1
- package/dist/src/meter/meter.d.ts +1 -1
- package/dist/src/meter/meter.d.ts.map +1 -1
- package/dist/src/meter/meter.js +12 -15
- package/dist/src/monogram/index.d.ts.map +1 -1
- package/dist/src/monogram/monogram.d.ts.map +1 -1
- package/dist/src/monogram/monogram.js +9 -8
- package/dist/src/nav-strip/index.d.ts +3 -0
- package/dist/src/nav-strip/index.d.ts.map +1 -0
- package/dist/src/nav-strip/index.js +1 -0
- package/dist/src/{navStrip/navStrip.d.ts → nav-strip/nav-strip.d.ts} +3 -6
- package/dist/src/nav-strip/nav-strip.d.ts.map +1 -0
- package/dist/src/nav-strip/nav-strip.js +25 -0
- package/dist/src/notice/index.d.ts.map +1 -1
- package/dist/src/notice/notice.d.ts +0 -4
- package/dist/src/notice/notice.d.ts.map +1 -1
- package/dist/src/notice/notice.js +1 -4
- package/dist/src/outcome/index.d.ts.map +1 -1
- package/dist/src/outcome/outcome.d.ts.map +1 -1
- package/dist/src/outcome/outcome.js +1 -1
- package/dist/src/page-head/index.d.ts +3 -0
- package/dist/src/page-head/index.d.ts.map +1 -0
- package/dist/src/page-head/index.js +1 -0
- package/dist/src/{pageHead/pageHead.d.ts → page-head/page-head.d.ts} +1 -1
- package/dist/src/page-head/page-head.d.ts.map +1 -0
- package/dist/src/{pageHead/pageHead.js → page-head/page-head.js} +1 -1
- package/dist/src/panel/index.d.ts.map +1 -1
- package/dist/src/panel/panel.d.ts +0 -1
- package/dist/src/panel/panel.d.ts.map +1 -1
- package/dist/src/panel/panel.js +0 -1
- package/dist/src/password-field/index.d.ts +3 -0
- package/dist/src/password-field/index.d.ts.map +1 -0
- package/dist/src/password-field/index.js +1 -0
- package/dist/src/{passwordField/passwordField.d.ts → password-field/password-field.d.ts} +1 -1
- package/dist/src/password-field/password-field.d.ts.map +1 -0
- package/dist/src/{passwordField/passwordField.js → password-field/password-field.js} +4 -5
- package/dist/src/places/index.d.ts.map +1 -1
- package/dist/src/places/places.d.ts +3 -4
- package/dist/src/places/places.d.ts.map +1 -1
- package/dist/src/places/places.js +8 -2
- package/dist/src/props-list/index.d.ts +3 -0
- package/dist/src/props-list/index.d.ts.map +1 -0
- package/dist/src/props-list/index.js +1 -0
- package/dist/src/{propsList/propsList.d.ts → props-list/props-list.d.ts} +2 -2
- package/dist/src/props-list/props-list.d.ts.map +1 -0
- package/dist/src/{propsList/propsList.js → props-list/props-list.js} +2 -2
- package/dist/src/prose/index.d.ts.map +1 -1
- package/dist/src/prose/prose.d.ts.map +1 -1
- package/dist/src/query-chip/index.d.ts +3 -0
- package/dist/src/query-chip/index.d.ts.map +1 -0
- package/dist/src/query-chip/index.js +1 -0
- package/dist/src/{queryChip/queryChip.d.ts → query-chip/query-chip.d.ts} +1 -1
- package/dist/src/query-chip/query-chip.d.ts.map +1 -0
- package/dist/src/{queryChip/queryChip.js → query-chip/query-chip.js} +7 -4
- package/dist/src/{radioChoices → radio-choices}/index.d.ts +2 -2
- package/dist/src/radio-choices/index.d.ts.map +1 -0
- package/dist/src/{radioChoices → radio-choices}/index.js +1 -1
- package/dist/src/{radioChoices/radioChoices.d.ts → radio-choices/radio-choices.d.ts} +3 -3
- package/dist/src/radio-choices/radio-choices.d.ts.map +1 -0
- package/dist/src/{radioChoices/radioChoices.js → radio-choices/radio-choices.js} +25 -24
- package/dist/src/rail/index.d.ts.map +1 -1
- package/dist/src/rail/rail.d.ts +16 -32
- package/dist/src/rail/rail.d.ts.map +1 -1
- package/dist/src/rail/rail.js +97 -65
- package/dist/src/reel/index.d.ts +1 -1
- package/dist/src/reel/index.d.ts.map +1 -1
- package/dist/src/reel/layout.d.ts +12 -54
- package/dist/src/reel/layout.d.ts.map +1 -1
- package/dist/src/reel/layout.js +120 -145
- package/dist/src/reel/reel.d.ts +35 -34
- package/dist/src/reel/reel.d.ts.map +1 -1
- package/dist/src/reel/reel.js +253 -233
- package/dist/src/remote/index.d.ts.map +1 -1
- package/dist/src/remote/remote.d.ts +2 -2
- package/dist/src/remote/remote.d.ts.map +1 -1
- package/dist/src/remote/remote.js +6 -2
- package/dist/src/rows/index.d.ts.map +1 -1
- package/dist/src/rows/rows.d.ts +2 -2
- package/dist/src/rows/rows.d.ts.map +1 -1
- package/dist/src/rows/rows.js +16 -7
- package/dist/src/scheme/index.d.ts +1 -1
- package/dist/src/scheme/index.d.ts.map +1 -1
- package/dist/src/scheme/index.js +1 -1
- package/dist/src/scheme/{schemeSwitch.d.ts → scheme-switch.d.ts} +2 -2
- package/dist/src/scheme/scheme-switch.d.ts.map +1 -0
- package/dist/src/scheme/{schemeSwitch.js → scheme-switch.js} +33 -38
- package/dist/src/scheme/scheme.d.ts +0 -2
- package/dist/src/scheme/scheme.d.ts.map +1 -1
- package/dist/src/scheme/scheme.js +0 -2
- package/dist/src/secret/index.d.ts.map +1 -1
- package/dist/src/secret/secret.d.ts.map +1 -1
- package/dist/src/segmented/index.d.ts.map +1 -1
- package/dist/src/segmented/segmented.d.ts.map +1 -1
- package/dist/src/segmented/segmented.js +14 -3
- package/dist/src/select-all/index.d.ts +3 -0
- package/dist/src/select-all/index.d.ts.map +1 -0
- package/dist/src/select-all/index.js +1 -0
- package/dist/src/{selectAll/selectAll.d.ts → select-all/select-all.d.ts} +1 -1
- package/dist/src/select-all/select-all.d.ts.map +1 -0
- package/dist/src/{selectAll/selectAll.js → select-all/select-all.js} +2 -2
- package/dist/src/select-field/index.d.ts +3 -0
- package/dist/src/select-field/index.d.ts.map +1 -0
- package/dist/src/select-field/index.js +1 -0
- package/dist/src/{selectField/selectField.d.ts → select-field/select-field.d.ts} +2 -2
- package/dist/src/select-field/select-field.d.ts.map +1 -0
- package/dist/src/{selectField/selectField.js → select-field/select-field.js} +10 -7
- package/dist/src/sheet/index.d.ts.map +1 -1
- package/dist/src/sheet/sheet.d.ts.map +1 -1
- package/dist/src/sheet/sheet.js +4 -1
- package/dist/src/skip-link/index.d.ts +2 -0
- package/dist/src/skip-link/index.d.ts.map +1 -0
- package/dist/src/skip-link/index.js +1 -0
- package/dist/src/{skipLink/skipLink.d.ts → skip-link/skip-link.d.ts} +1 -3
- package/dist/src/skip-link/skip-link.d.ts.map +1 -0
- package/dist/src/{skipLink/skipLink.js → skip-link/skip-link.js} +7 -11
- package/dist/src/slot/slot.d.ts +1 -4
- package/dist/src/slot/slot.d.ts.map +1 -1
- package/dist/src/slot/slot.js +3 -3
- package/dist/src/sortable/index.d.ts.map +1 -1
- package/dist/src/sortable/sortable.d.ts +44 -44
- package/dist/src/sortable/sortable.d.ts.map +1 -1
- package/dist/src/sortable/sortable.js +60 -93
- package/dist/src/stack/index.d.ts.map +1 -1
- package/dist/src/stack/stack.d.ts.map +1 -1
- package/dist/src/stack/stack.js +0 -2
- package/dist/src/stage/index.d.ts.map +1 -1
- package/dist/src/stage/stage.d.ts +1 -1
- package/dist/src/stage/stage.d.ts.map +1 -1
- package/dist/src/stage/stage.js +4 -1
- package/dist/src/stat/index.d.ts.map +1 -1
- package/dist/src/stat/stat.d.ts +1 -1
- package/dist/src/stat/stat.d.ts.map +1 -1
- package/dist/src/stat/stat.js +17 -8
- package/dist/src/status-bar/index.d.ts +4 -0
- package/dist/src/status-bar/index.d.ts.map +1 -0
- package/dist/src/status-bar/index.js +2 -0
- package/dist/src/{statusBar/statusBar.d.ts → status-bar/status-bar.d.ts} +4 -4
- package/dist/src/status-bar/status-bar.d.ts.map +1 -0
- package/dist/src/{statusBar/statusBar.js → status-bar/status-bar.js} +5 -6
- package/dist/src/subscription/{prefixKeys.d.ts → prefix-keys.d.ts} +1 -2
- package/dist/src/subscription/prefix-keys.d.ts.map +1 -0
- package/dist/src/subscription/{prefixKeys.js → prefix-keys.js} +2 -5
- package/dist/src/table/index.d.ts.map +1 -1
- package/dist/src/table/table.d.ts +1 -1
- package/dist/src/table/table.d.ts.map +1 -1
- package/dist/src/table/table.js +19 -7
- package/dist/src/tabs/index.d.ts.map +1 -1
- package/dist/src/tabs/tabs.d.ts +4 -4
- package/dist/src/tabs/tabs.d.ts.map +1 -1
- package/dist/src/tabs/tabs.js +1 -6
- package/dist/src/tag/index.d.ts.map +1 -1
- package/dist/src/tag/tag.d.ts.map +1 -1
- package/dist/src/tag/tag.js +4 -1
- package/dist/src/text-button/index.d.ts +3 -0
- package/dist/src/text-button/index.d.ts.map +1 -0
- package/dist/src/text-button/index.js +1 -0
- package/dist/src/{textButton/textButton.d.ts → text-button/text-button.d.ts} +1 -1
- package/dist/src/text-button/text-button.d.ts.map +1 -0
- package/dist/src/{textButton/textButton.js → text-button/text-button.js} +2 -2
- package/dist/src/textarea-field/index.d.ts +3 -0
- package/dist/src/textarea-field/index.d.ts.map +1 -0
- package/dist/src/textarea-field/index.js +1 -0
- package/dist/src/{textareaField/textareaField.d.ts → textarea-field/textarea-field.d.ts} +1 -1
- package/dist/src/textarea-field/textarea-field.d.ts.map +1 -0
- package/dist/src/{textareaField/textareaField.js → textarea-field/textarea-field.js} +2 -2
- package/dist/src/time/index.d.ts.map +1 -1
- package/dist/src/time/time.d.ts.map +1 -1
- package/dist/src/time/time.js +16 -9
- package/dist/src/tips/index.d.ts.map +1 -1
- package/dist/src/tips/tips.d.ts +7 -18
- package/dist/src/tips/tips.d.ts.map +1 -1
- package/dist/src/tips/tips.js +67 -65
- package/dist/src/toast/index.d.ts.map +1 -1
- package/dist/src/toast/stack.d.ts +1 -8
- package/dist/src/toast/stack.d.ts.map +1 -1
- package/dist/src/toast/stack.js +5 -18
- package/dist/src/toast/toast.d.ts +3 -5
- package/dist/src/toast/toast.d.ts.map +1 -1
- package/dist/src/toast/toast.js +42 -39
- package/dist/src/toc/index.d.ts.map +1 -1
- package/dist/src/toc/toc.d.ts +3 -3
- package/dist/src/toc/toc.d.ts.map +1 -1
- package/dist/src/toc/toc.js +10 -7
- package/dist/src/toolbar/index.d.ts.map +1 -1
- package/dist/src/toolbar/toolbar.d.ts +1 -1
- package/dist/src/toolbar/toolbar.d.ts.map +1 -1
- package/dist/src/toolbar/toolbar.js +27 -24
- package/dist/src/{topBar/barHeight.d.ts → top-bar/bar-height.d.ts} +1 -2
- package/dist/src/top-bar/bar-height.d.ts.map +1 -0
- package/dist/src/{topBar/barHeight.js → top-bar/bar-height.js} +20 -13
- package/dist/src/top-bar/index.d.ts +4 -0
- package/dist/src/top-bar/index.d.ts.map +1 -0
- package/dist/src/top-bar/index.js +2 -0
- package/dist/src/{topBar/topBar.d.ts → top-bar/top-bar.d.ts} +3 -3
- package/dist/src/top-bar/top-bar.d.ts.map +1 -0
- package/dist/src/{topBar/topBar.js → top-bar/top-bar.js} +2 -2
- package/dist/src/video-frame/index.d.ts +3 -0
- package/dist/src/video-frame/index.d.ts.map +1 -0
- package/dist/src/video-frame/index.js +1 -0
- package/dist/src/{videoFrame/videoFrame.d.ts → video-frame/video-frame.d.ts} +1 -1
- package/dist/src/video-frame/video-frame.d.ts.map +1 -0
- package/dist/src/{videoFrame/videoFrame.js → video-frame/video-frame.js} +11 -7
- package/dist/src/wall/index.d.ts.map +1 -1
- package/dist/src/wall/wall.d.ts.map +1 -1
- package/dist/src/window/index.d.ts.map +1 -1
- package/dist/src/window/window.d.ts +2 -2
- package/dist/src/window/window.d.ts.map +1 -1
- package/dist/src/window/window.js +4 -2
- package/dist/src/wordmark/index.d.ts.map +1 -1
- package/dist/src/wordmark/wordmark.d.ts.map +1 -1
- package/dist/src/wrap/index.d.ts.map +1 -1
- package/dist/src/wrap/wrap.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/adapters/diagram.ts +278 -0
- package/src/adapters/mermaid.ts +13 -273
- package/src/announcer/announcer.ts +54 -35
- package/src/attributes/attributes.ts +3 -1
- package/src/{audioFrame/audioFrame.ts → audio-frame/audio-frame.ts} +4 -6
- package/src/audio-frame/index.ts +3 -0
- package/src/banner/banner.ts +5 -4
- package/src/banner/index.ts +1 -0
- package/src/{barChart/barChart.ts → bar-chart/bar-chart.ts} +81 -43
- package/src/bar-chart/index.ts +3 -0
- package/src/bench/bench.ts +5 -4
- package/src/bench/index.ts +1 -0
- package/src/board/board.ts +338 -243
- package/src/board/index.ts +8 -1
- package/src/button/button.ts +24 -16
- package/src/button/index.ts +8 -1
- package/src/card/card.ts +23 -21
- package/src/card/index.ts +1 -0
- package/src/chart-table/chart-table.ts +87 -0
- package/src/chip/chip.ts +13 -9
- package/src/chip/index.ts +1 -0
- package/src/choice/choice.ts +13 -7
- package/src/choice/index.ts +1 -0
- package/src/choices/choices.ts +4 -3
- package/src/choices/index.ts +1 -0
- package/src/{codeEditor/codeEditor.ts → code-editor/code-editor.ts} +5 -4
- package/src/code-editor/index.ts +3 -0
- package/src/{codeSurface/codeSurface.ts → code-surface/code-surface.ts} +11 -5
- package/src/code-surface/index.ts +3 -0
- package/src/{commandPalette/commandPalette.ts → command-palette/command-palette.ts} +470 -295
- package/src/{commandPalette → command-palette}/index.ts +12 -2
- package/src/{commandPalette → command-palette}/keys.ts +44 -43
- package/src/{commandPalette → command-palette}/match.ts +42 -30
- package/src/{commandPalette → command-palette}/message.ts +13 -20
- package/src/{confirmDialog/confirmDialog.ts → confirm-dialog/confirm-dialog.ts} +51 -46
- package/src/{confirmDialog → confirm-dialog}/index.ts +3 -2
- package/src/{contextMenu/contextMenu.ts → context-menu/context-menu.ts} +71 -70
- package/src/{contextMenu → context-menu}/index.ts +4 -2
- package/src/{copyButton/copyButton.ts → copy-button/copy-button.ts} +51 -54
- package/src/{copyButton → copy-button}/index.ts +3 -2
- package/src/crumbs/crumbs.ts +7 -6
- package/src/crumbs/index.ts +1 -0
- package/src/deck/deck.ts +4 -3
- package/src/deck/index.ts +1 -0
- package/src/dialog/dialog.ts +135 -113
- package/src/dialog/fold.ts +44 -25
- package/src/dialog/index.ts +9 -1
- package/src/disclosure/disclosure.ts +14 -8
- package/src/disclosure/index.ts +1 -0
- package/src/dom/html-element.ts +10 -0
- package/src/drag/drag.ts +102 -119
- package/src/{dropZone/dropZone.ts → drop-zone/drop-zone.ts} +43 -43
- package/src/drop-zone/index.ts +11 -0
- package/src/{editableTitle/editableTitle.ts → editable-title/editable-title.ts} +29 -32
- package/src/{editableTitle → editable-title}/index.ts +4 -2
- package/src/{emptyState/emptyState.ts → empty-state/empty-state.ts} +9 -5
- package/src/empty-state/index.ts +3 -0
- package/src/{errorSummary/errorSummary.ts → error-summary/error-summary.ts} +16 -7
- package/src/error-summary/index.ts +3 -0
- package/src/field/field.ts +38 -28
- package/src/field/index.ts +1 -0
- package/src/{fieldGrid/fieldGrid.ts → field-grid/field-grid.ts} +4 -3
- package/src/field-grid/index.ts +3 -0
- package/src/fields/fields.ts +9 -5
- package/src/fields/index.ts +1 -0
- package/src/fieldset/fieldset.ts +6 -5
- package/src/fieldset/index.ts +1 -0
- package/src/{fileTree/fileTree.ts → file-tree/file-tree.ts} +241 -166
- package/src/file-tree/index.ts +12 -0
- package/src/{filterChip/filterChip.ts → filter-chip/filter-chip.ts} +32 -13
- package/src/filter-chip/index.ts +3 -0
- package/src/{filterStrip/filterStrip.ts → filter-strip/filter-strip.ts} +4 -3
- package/src/filter-strip/index.ts +3 -0
- package/src/{flashWord/flashWord.ts → flash-word/flash-word.ts} +9 -7
- package/src/flash-word/index.ts +3 -0
- package/src/focus/focus.ts +5 -5
- package/src/format/format.ts +37 -31
- package/src/format/index.ts +1 -0
- package/src/glyph/glyph.ts +7 -6
- package/src/glyph/glyphs.ts +2601 -2611
- package/src/glyph/index.ts +3 -0
- package/src/group/group.ts +4 -3
- package/src/group/index.ts +1 -0
- package/src/history/history.ts +18 -10
- package/src/history/index.ts +1 -0
- package/src/{iconButton/iconButton.ts → icon-button/icon-button.ts} +13 -7
- package/src/icon-button/index.ts +3 -0
- package/src/identity/identity.ts +7 -6
- package/src/identity/index.ts +1 -0
- package/src/{imageFrame/imageFrame.ts → image-frame/image-frame.ts} +43 -25
- package/src/image-frame/index.ts +3 -0
- package/src/index.ts +139 -41
- package/src/{inlineInput → inline-input}/index.ts +3 -2
- package/src/{inlineInput/inlineInput.ts → inline-input/inline-input.ts} +97 -88
- package/src/{keyHelp → key-help}/index.ts +3 -2
- package/src/{keyHelp/keyHelp.ts → key-help/key-help.ts} +74 -62
- package/src/key-hint/index.ts +5 -0
- package/src/{keyHint/keyHint.ts → key-hint/key-hint.ts} +10 -5
- package/src/{keyHint/keyLabel.ts → key-hint/key-label.ts} +43 -22
- package/src/keymap/index.ts +1 -0
- package/src/keymap/keymap.ts +23 -9
- package/src/keys/keys.ts +0 -2
- package/src/line-chart/index.ts +3 -0
- package/src/{lineChart/lineChart.ts → line-chart/line-chart.ts} +71 -49
- package/src/line-diff/diff.ts +196 -0
- package/src/line-diff/index.ts +7 -0
- package/src/{lineDiff/lineDiff.ts → line-diff/line-diff.ts} +45 -23
- package/src/{lineDiff → line-diff}/patch.ts +104 -76
- package/src/link-button/index.ts +3 -0
- package/src/{linkButton/linkButton.ts → link-button/link-button.ts} +7 -5
- package/src/link-state/index.ts +3 -0
- package/src/{linkState/linkState.ts → link-state/link-state.ts} +20 -9
- package/src/live-region/index.ts +3 -0
- package/src/{liveRegion/liveRegion.ts → live-region/live-region.ts} +15 -11
- package/src/loading/index.ts +1 -0
- package/src/loading/loading.ts +10 -5
- package/src/mark/index.ts +1 -0
- package/src/mark/mark.ts +17 -15
- package/src/media/index.ts +1 -0
- package/src/media/media.ts +255 -157
- package/src/menu/index.ts +4 -0
- package/src/menu/item.ts +10 -11
- package/src/menu/menu.ts +110 -97
- package/src/menu/slip.ts +129 -92
- package/src/meter/index.ts +1 -0
- package/src/meter/meter.ts +52 -33
- package/src/monogram/index.ts +1 -0
- package/src/monogram/monogram.ts +27 -19
- package/src/nav-strip/index.ts +3 -0
- package/src/{navStrip/navStrip.ts → nav-strip/nav-strip.ts} +21 -13
- package/src/notice/index.ts +1 -0
- package/src/notice/notice.ts +24 -16
- package/src/outcome/index.ts +1 -0
- package/src/outcome/outcome.ts +14 -6
- package/src/page-head/index.ts +3 -0
- package/src/{pageHead/pageHead.ts → page-head/page-head.ts} +6 -5
- package/src/panel/index.ts +1 -0
- package/src/panel/panel.ts +6 -6
- package/src/password-field/index.ts +3 -0
- package/src/{passwordField/passwordField.ts → password-field/password-field.ts} +13 -13
- package/src/pixel-paper.css +26 -508
- package/src/places/index.ts +1 -0
- package/src/places/places.ts +22 -11
- package/src/props-list/index.ts +3 -0
- package/src/{propsList/propsList.ts → props-list/props-list.ts} +6 -6
- package/src/prose/index.ts +1 -0
- package/src/prose/prose.ts +4 -4
- package/src/query-chip/index.ts +3 -0
- package/src/{queryChip/queryChip.ts → query-chip/query-chip.ts} +18 -7
- package/src/{radioChoices → radio-choices}/index.ts +3 -2
- package/src/{radioChoices/radioChoices.ts → radio-choices/radio-choices.ts} +79 -65
- package/src/rail/index.ts +1 -0
- package/src/rail/rail.ts +291 -225
- package/src/reel/index.ts +8 -1
- package/src/reel/layout.ts +393 -238
- package/src/reel/reel.ts +750 -452
- package/src/remote/index.ts +1 -0
- package/src/remote/remote.ts +18 -11
- package/src/rows/index.ts +1 -0
- package/src/rows/rows.ts +83 -47
- package/src/scheme/index.ts +3 -1
- package/src/scheme/{schemeSwitch.ts → scheme-switch.ts} +24 -35
- package/src/scheme/scheme.ts +4 -4
- package/src/secret/index.ts +1 -0
- package/src/secret/secret.ts +5 -4
- package/src/segmented/index.ts +1 -0
- package/src/segmented/segmented.ts +22 -10
- package/src/select-all/index.ts +3 -0
- package/src/{selectAll/selectAll.ts → select-all/select-all.ts} +9 -8
- package/src/{selectField → select-field}/index.ts +3 -2
- package/src/{selectField/selectField.ts → select-field/select-field.ts} +25 -11
- package/src/sheet/index.ts +1 -0
- package/src/sheet/sheet.ts +9 -5
- package/src/skip-link/index.ts +1 -0
- package/src/{skipLink/skipLink.ts → skip-link/skip-link.ts} +9 -15
- package/src/slot/slot.ts +5 -6
- package/src/sortable/index.ts +1 -0
- package/src/sortable/sortable.ts +287 -206
- package/src/stack/index.ts +1 -0
- package/src/stack/stack.ts +6 -7
- package/src/stage/index.ts +1 -0
- package/src/stage/stage.ts +12 -8
- package/src/stat/index.ts +1 -0
- package/src/stat/stat.ts +39 -20
- package/src/status-bar/index.ts +5 -0
- package/src/{statusBar/statusBar.ts → status-bar/status-bar.ts} +18 -11
- package/src/subscription/{prefixKeys.ts → prefix-keys.ts} +5 -6
- package/src/table/index.ts +1 -0
- package/src/table/table.ts +49 -24
- package/src/tabs/index.ts +1 -0
- package/src/tabs/tabs.ts +58 -60
- package/src/tag/index.ts +1 -0
- package/src/tag/tag.ts +14 -7
- package/src/text-button/index.ts +3 -0
- package/src/{textButton/textButton.ts → text-button/text-button.ts} +7 -5
- package/src/textarea-field/index.ts +3 -0
- package/src/{textareaField/textareaField.ts → textarea-field/textarea-field.ts} +15 -7
- package/src/time/index.ts +1 -0
- package/src/time/time.ts +58 -25
- package/src/tips/index.ts +1 -0
- package/src/tips/tips.ts +183 -127
- package/src/toast/index.ts +3 -0
- package/src/toast/stack.ts +22 -23
- package/src/toast/toast.ts +168 -100
- package/src/toc/index.ts +1 -0
- package/src/toc/toc.ts +42 -27
- package/src/tokens.css +7 -24
- package/src/toolbar/index.ts +1 -0
- package/src/toolbar/toolbar.ts +78 -40
- package/src/{topBar/barHeight.ts → top-bar/bar-height.ts} +26 -12
- package/src/top-bar/index.ts +5 -0
- package/src/{topBar/topBar.ts → top-bar/top-bar.ts} +13 -7
- package/src/video-frame/index.ts +3 -0
- package/src/{videoFrame/videoFrame.ts → video-frame/video-frame.ts} +31 -18
- package/src/wall/index.ts +1 -0
- package/src/wall/wall.ts +13 -10
- package/src/window/index.ts +1 -0
- package/src/window/window.ts +15 -9
- package/src/wordmark/index.ts +1 -0
- package/src/wordmark/wordmark.ts +4 -3
- package/src/wrap/index.ts +1 -0
- package/src/wrap/wrap.ts +4 -3
- package/dist/src/audioFrame/audioFrame.d.ts.map +0 -1
- package/dist/src/audioFrame/index.d.ts +0 -3
- package/dist/src/audioFrame/index.d.ts.map +0 -1
- package/dist/src/audioFrame/index.js +0 -1
- package/dist/src/barChart/barChart.d.ts.map +0 -1
- package/dist/src/barChart/index.d.ts +0 -3
- package/dist/src/barChart/index.d.ts.map +0 -1
- package/dist/src/barChart/index.js +0 -1
- package/dist/src/chartTable/chartTable.d.ts.map +0 -1
- package/dist/src/codeEditor/codeEditor.d.ts.map +0 -1
- package/dist/src/codeEditor/index.d.ts +0 -3
- package/dist/src/codeEditor/index.d.ts.map +0 -1
- package/dist/src/codeEditor/index.js +0 -1
- package/dist/src/codeSurface/codeSurface.d.ts.map +0 -1
- package/dist/src/codeSurface/index.d.ts +0 -3
- package/dist/src/codeSurface/index.d.ts.map +0 -1
- package/dist/src/codeSurface/index.js +0 -1
- package/dist/src/commandPalette/commandPalette.d.ts.map +0 -1
- package/dist/src/commandPalette/commandPalette.js +0 -611
- package/dist/src/commandPalette/index.d.ts.map +0 -1
- package/dist/src/commandPalette/keys.d.ts.map +0 -1
- package/dist/src/commandPalette/keys.js +0 -102
- package/dist/src/commandPalette/match.d.ts.map +0 -1
- package/dist/src/commandPalette/message.d.ts.map +0 -1
- package/dist/src/confirmDialog/confirmDialog.d.ts.map +0 -1
- package/dist/src/confirmDialog/index.d.ts +0 -3
- package/dist/src/confirmDialog/index.d.ts.map +0 -1
- package/dist/src/contextMenu/contextMenu.d.ts.map +0 -1
- package/dist/src/contextMenu/index.d.ts.map +0 -1
- package/dist/src/copyButton/copyButton.d.ts.map +0 -1
- package/dist/src/copyButton/index.d.ts +0 -3
- package/dist/src/copyButton/index.d.ts.map +0 -1
- package/dist/src/copyButton/index.js +0 -1
- package/dist/src/dropZone/dropZone.d.ts.map +0 -1
- package/dist/src/dropZone/index.d.ts +0 -3
- package/dist/src/dropZone/index.d.ts.map +0 -1
- package/dist/src/dropZone/index.js +0 -1
- package/dist/src/editableTitle/editableTitle.d.ts.map +0 -1
- package/dist/src/editableTitle/index.d.ts +0 -4
- package/dist/src/editableTitle/index.d.ts.map +0 -1
- package/dist/src/emptyState/emptyState.d.ts.map +0 -1
- package/dist/src/emptyState/index.d.ts +0 -3
- package/dist/src/emptyState/index.d.ts.map +0 -1
- package/dist/src/emptyState/index.js +0 -1
- package/dist/src/errorSummary/errorSummary.d.ts.map +0 -1
- package/dist/src/errorSummary/index.d.ts +0 -3
- package/dist/src/errorSummary/index.d.ts.map +0 -1
- package/dist/src/errorSummary/index.js +0 -1
- package/dist/src/fieldGrid/fieldGrid.d.ts.map +0 -1
- package/dist/src/fieldGrid/index.d.ts +0 -3
- package/dist/src/fieldGrid/index.d.ts.map +0 -1
- package/dist/src/fieldGrid/index.js +0 -1
- package/dist/src/fileTree/fileTree.d.ts.map +0 -1
- package/dist/src/fileTree/fileTree.js +0 -230
- package/dist/src/fileTree/index.d.ts +0 -3
- package/dist/src/fileTree/index.d.ts.map +0 -1
- package/dist/src/filterChip/filterChip.d.ts.map +0 -1
- package/dist/src/filterChip/index.d.ts +0 -3
- package/dist/src/filterChip/index.d.ts.map +0 -1
- package/dist/src/filterChip/index.js +0 -1
- package/dist/src/filterStrip/filterStrip.d.ts.map +0 -1
- package/dist/src/filterStrip/index.d.ts +0 -3
- package/dist/src/filterStrip/index.d.ts.map +0 -1
- package/dist/src/filterStrip/index.js +0 -1
- package/dist/src/flashWord/flashWord.d.ts.map +0 -1
- package/dist/src/flashWord/index.d.ts +0 -3
- package/dist/src/flashWord/index.d.ts.map +0 -1
- package/dist/src/flashWord/index.js +0 -1
- package/dist/src/iconButton/iconButton.d.ts.map +0 -1
- package/dist/src/iconButton/index.d.ts +0 -3
- package/dist/src/iconButton/index.d.ts.map +0 -1
- package/dist/src/iconButton/index.js +0 -1
- package/dist/src/imageFrame/imageFrame.d.ts.map +0 -1
- package/dist/src/imageFrame/index.d.ts +0 -3
- package/dist/src/imageFrame/index.d.ts.map +0 -1
- package/dist/src/imageFrame/index.js +0 -1
- package/dist/src/inlineInput/index.d.ts +0 -3
- package/dist/src/inlineInput/index.d.ts.map +0 -1
- package/dist/src/inlineInput/inlineInput.d.ts.map +0 -1
- package/dist/src/keyHelp/index.d.ts +0 -3
- package/dist/src/keyHelp/index.d.ts.map +0 -1
- package/dist/src/keyHelp/keyHelp.d.ts.map +0 -1
- package/dist/src/keyHint/index.d.ts +0 -4
- package/dist/src/keyHint/index.d.ts.map +0 -1
- package/dist/src/keyHint/index.js +0 -2
- package/dist/src/keyHint/keyHint.d.ts.map +0 -1
- package/dist/src/keyHint/keyLabel.d.ts.map +0 -1
- package/dist/src/lineChart/index.d.ts +0 -3
- package/dist/src/lineChart/index.d.ts.map +0 -1
- package/dist/src/lineChart/index.js +0 -1
- package/dist/src/lineChart/lineChart.d.ts.map +0 -1
- package/dist/src/lineDiff/diff.d.ts +0 -41
- package/dist/src/lineDiff/diff.d.ts.map +0 -1
- package/dist/src/lineDiff/diff.js +0 -92
- package/dist/src/lineDiff/index.d.ts +0 -5
- package/dist/src/lineDiff/index.d.ts.map +0 -1
- package/dist/src/lineDiff/index.js +0 -2
- package/dist/src/lineDiff/lineDiff.d.ts.map +0 -1
- package/dist/src/lineDiff/patch.d.ts.map +0 -1
- package/dist/src/linkButton/index.d.ts +0 -3
- package/dist/src/linkButton/index.d.ts.map +0 -1
- package/dist/src/linkButton/index.js +0 -1
- package/dist/src/linkButton/linkButton.d.ts.map +0 -1
- package/dist/src/linkState/index.d.ts +0 -3
- package/dist/src/linkState/index.d.ts.map +0 -1
- package/dist/src/linkState/index.js +0 -1
- package/dist/src/linkState/linkState.d.ts.map +0 -1
- package/dist/src/linkState/linkState.js +0 -14
- package/dist/src/liveRegion/index.d.ts +0 -3
- package/dist/src/liveRegion/index.d.ts.map +0 -1
- package/dist/src/liveRegion/index.js +0 -1
- package/dist/src/liveRegion/liveRegion.d.ts.map +0 -1
- package/dist/src/navStrip/index.d.ts +0 -3
- package/dist/src/navStrip/index.d.ts.map +0 -1
- package/dist/src/navStrip/index.js +0 -1
- package/dist/src/navStrip/navStrip.d.ts.map +0 -1
- package/dist/src/navStrip/navStrip.js +0 -27
- package/dist/src/pageHead/index.d.ts +0 -3
- package/dist/src/pageHead/index.d.ts.map +0 -1
- package/dist/src/pageHead/index.js +0 -1
- package/dist/src/pageHead/pageHead.d.ts.map +0 -1
- package/dist/src/passwordField/index.d.ts +0 -3
- package/dist/src/passwordField/index.d.ts.map +0 -1
- package/dist/src/passwordField/index.js +0 -1
- package/dist/src/passwordField/passwordField.d.ts.map +0 -1
- package/dist/src/propsList/index.d.ts +0 -3
- package/dist/src/propsList/index.d.ts.map +0 -1
- package/dist/src/propsList/index.js +0 -1
- package/dist/src/propsList/propsList.d.ts.map +0 -1
- package/dist/src/queryChip/index.d.ts +0 -3
- package/dist/src/queryChip/index.d.ts.map +0 -1
- package/dist/src/queryChip/index.js +0 -1
- package/dist/src/queryChip/queryChip.d.ts.map +0 -1
- package/dist/src/radioChoices/index.d.ts.map +0 -1
- package/dist/src/radioChoices/radioChoices.d.ts.map +0 -1
- package/dist/src/scheme/schemeSwitch.d.ts.map +0 -1
- package/dist/src/selectAll/index.d.ts +0 -3
- package/dist/src/selectAll/index.d.ts.map +0 -1
- package/dist/src/selectAll/index.js +0 -1
- package/dist/src/selectAll/selectAll.d.ts.map +0 -1
- package/dist/src/selectField/index.d.ts +0 -3
- package/dist/src/selectField/index.d.ts.map +0 -1
- package/dist/src/selectField/index.js +0 -1
- package/dist/src/selectField/selectField.d.ts.map +0 -1
- package/dist/src/skipLink/index.d.ts +0 -2
- package/dist/src/skipLink/index.d.ts.map +0 -1
- package/dist/src/skipLink/index.js +0 -1
- package/dist/src/skipLink/skipLink.d.ts.map +0 -1
- package/dist/src/statusBar/index.d.ts +0 -4
- package/dist/src/statusBar/index.d.ts.map +0 -1
- package/dist/src/statusBar/index.js +0 -2
- package/dist/src/statusBar/statusBar.d.ts.map +0 -1
- package/dist/src/subscription/prefixKeys.d.ts.map +0 -1
- package/dist/src/textButton/index.d.ts +0 -3
- package/dist/src/textButton/index.d.ts.map +0 -1
- package/dist/src/textButton/index.js +0 -1
- package/dist/src/textButton/textButton.d.ts.map +0 -1
- package/dist/src/textareaField/index.d.ts +0 -3
- package/dist/src/textareaField/index.d.ts.map +0 -1
- package/dist/src/textareaField/index.js +0 -1
- package/dist/src/textareaField/textareaField.d.ts.map +0 -1
- package/dist/src/topBar/barHeight.d.ts.map +0 -1
- package/dist/src/topBar/index.d.ts +0 -4
- package/dist/src/topBar/index.d.ts.map +0 -1
- package/dist/src/topBar/index.js +0 -2
- package/dist/src/topBar/topBar.d.ts.map +0 -1
- package/dist/src/videoFrame/index.d.ts +0 -3
- package/dist/src/videoFrame/index.d.ts.map +0 -1
- package/dist/src/videoFrame/index.js +0 -1
- package/dist/src/videoFrame/videoFrame.d.ts.map +0 -1
- package/src/audioFrame/index.ts +0 -2
- package/src/barChart/index.ts +0 -2
- package/src/chartTable/chartTable.ts +0 -88
- package/src/codeEditor/index.ts +0 -2
- package/src/codeSurface/index.ts +0 -2
- package/src/dropZone/index.ts +0 -2
- package/src/emptyState/index.ts +0 -2
- package/src/errorSummary/index.ts +0 -2
- package/src/fieldGrid/index.ts +0 -2
- package/src/fileTree/index.ts +0 -2
- package/src/filterChip/index.ts +0 -2
- package/src/filterStrip/index.ts +0 -2
- package/src/flashWord/index.ts +0 -2
- package/src/iconButton/index.ts +0 -2
- package/src/imageFrame/index.ts +0 -2
- package/src/keyHint/index.ts +0 -3
- package/src/lineChart/index.ts +0 -2
- package/src/lineDiff/diff.ts +0 -182
- package/src/lineDiff/index.ts +0 -4
- package/src/linkButton/index.ts +0 -2
- package/src/linkState/index.ts +0 -2
- package/src/liveRegion/index.ts +0 -2
- package/src/navStrip/index.ts +0 -2
- package/src/pageHead/index.ts +0 -2
- package/src/passwordField/index.ts +0 -2
- package/src/propsList/index.ts +0 -2
- package/src/queryChip/index.ts +0 -2
- package/src/selectAll/index.ts +0 -2
- package/src/skipLink/index.ts +0 -1
- package/src/statusBar/index.ts +0 -3
- package/src/textButton/index.ts +0 -2
- package/src/textareaField/index.ts +0 -2
- package/src/topBar/index.ts +0 -3
- package/src/videoFrame/index.ts +0 -2
package/src/board/board.ts
CHANGED
|
@@ -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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
56
|
-
|
|
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({
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
117
|
-
screenY: Schema.
|
|
118
|
-
clientX: Schema.
|
|
119
|
-
clientY: Schema.
|
|
120
|
-
|
|
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
|
-
|
|
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.
|
|
135
|
+
fromIndex: Schema.Finite,
|
|
147
136
|
toColumnId: Schema.String,
|
|
148
|
-
toIndex: Schema.
|
|
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
|
-
|
|
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
|
-
|
|
181
|
-
|
|
166
|
+
export const isDragging = (model: Model): boolean =>
|
|
167
|
+
UiDragAndDrop.isDragging(model.dragAndDrop);
|
|
182
168
|
|
|
183
|
-
|
|
169
|
+
const hookId = (boardId: string, localId: string): string =>
|
|
170
|
+
`${boardId}/${localId}`;
|
|
184
171
|
|
|
185
|
-
const
|
|
172
|
+
const cardHook = (model: Model, cardId: string): string =>
|
|
173
|
+
hookId(id(model), cardId);
|
|
186
174
|
|
|
187
|
-
const
|
|
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 }) =>
|
|
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 =
|
|
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 = (
|
|
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 = (
|
|
225
|
-
|
|
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(
|
|
230
|
-
|
|
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.
|
|
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
|
-
|
|
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(
|
|
261
|
-
|
|
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
|
|
306
|
+
const { label } = held.card;
|
|
304
307
|
const before = phaseOf(previous.dragAndDrop);
|
|
305
308
|
const after = phaseOf(next.dragAndDrop);
|
|
306
|
-
|
|
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 = (
|
|
364
|
-
|
|
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
|
-
|
|
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:
|
|
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) =>
|
|
428
|
+
Option.exists(model.maybeHeld, (held) =>
|
|
429
|
+
Option.isSome(columnOfHook(model, held, hook))
|
|
430
|
+
);
|
|
420
431
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
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 = (
|
|
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 }) =>
|
|
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
|
-
|
|
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
|
-
|
|
472
|
+
|
|
473
|
+
const isLifting =
|
|
474
|
+
canLift(model) && (spot === "Grip" || pointerType === "mouse");
|
|
458
475
|
|
|
459
476
|
const press = Option.match(
|
|
460
|
-
Option.filter(placeOf(
|
|
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
|
-
|
|
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,
|
|
522
|
+
PressedGripKey: ({ cardId, columnsAtPress }) =>
|
|
499
523
|
Option.match(
|
|
500
|
-
Option.filter(placeOf(
|
|
524
|
+
Option.filter(placeOf(columnsAtPress, cardId), () => canLift(model)),
|
|
501
525
|
{
|
|
502
526
|
onNone: () => ({ model }),
|
|
503
|
-
onSome: (place) => liftByKeyboard(model, place,
|
|
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: {
|
|
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(
|
|
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:
|
|
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:
|
|
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:
|
|
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) =>
|
|
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) =>
|
|
619
|
+
toColumnActions?: (column: Column) => readonly Html[];
|
|
601
620
|
}>;
|
|
602
621
|
|
|
603
|
-
const INNER_CONTROL = innerControls(
|
|
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(
|
|
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:
|
|
655
|
+
columns: readonly Column[];
|
|
632
656
|
toCardView: (card: Card, render: CardRender) => Html;
|
|
633
|
-
toEmptyView: (column: Column) =>
|
|
634
|
-
toColumnActions: (column: Column) =>
|
|
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>(
|
|
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
|
-
[
|
|
653
|
-
|
|
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 = (
|
|
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
|
-
(
|
|
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(
|
|
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 = ({
|
|
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 {
|
|
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
|
-
[
|
|
773
|
-
|
|
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 = (
|
|
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
|
-
):
|
|
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 = (
|
|
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) =>
|
|
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(
|
|
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
|
-
|
|
860
|
-
|
|
861
|
-
|
|
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 = (
|
|
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>(
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
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
|
+
);
|