@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/reel/layout.ts
CHANGED
|
@@ -1,55 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import {
|
|
2
|
+
Array,
|
|
3
|
+
Equal,
|
|
4
|
+
Match,
|
|
5
|
+
Number,
|
|
6
|
+
Option,
|
|
7
|
+
Predicate,
|
|
8
|
+
Record,
|
|
9
|
+
Schema,
|
|
10
|
+
pipe,
|
|
11
|
+
} from "effect";
|
|
5
12
|
import { defineMessageUnion } from "foldkit/message";
|
|
6
13
|
import { defineTaggedUnion } from "foldkit/schema";
|
|
7
14
|
|
|
8
15
|
import { LOCALE } from "../locale/locale.ts";
|
|
9
16
|
|
|
10
|
-
// LAYOUT SCHEMAS
|
|
11
|
-
|
|
12
17
|
/** Schema for one pane as the reel knows it: its id, unique in the reel and the application's
|
|
13
18
|
* to keep, its name in words (its grip, its splitter and what screen readers hear), and its
|
|
14
19
|
* share of its column's height, a weight against its neighbours'. */
|
|
15
20
|
export const Pane = Schema.Struct({
|
|
16
21
|
id: Schema.String,
|
|
17
22
|
label: Schema.String,
|
|
18
|
-
weight: Schema.
|
|
23
|
+
weight: Schema.Finite,
|
|
19
24
|
});
|
|
25
|
+
|
|
20
26
|
export type Pane = typeof Pane.Type;
|
|
21
27
|
|
|
22
|
-
/** Schema for one column: its id, unique among the reel's columns and the application's to
|
|
23
|
-
* keep, its width, a fraction of the reel's visible width (1 fills it), and its panes, top
|
|
24
|
-
* to bottom. A column `apply` makes for a pane pulled out takes the pane's id (`notes`, or
|
|
25
|
-
* `notes/2` where a column has it), so pane and column ids share one namespace. */
|
|
26
28
|
export const Column = Schema.Struct({
|
|
27
29
|
id: Schema.String,
|
|
28
|
-
width: Schema.
|
|
30
|
+
width: Schema.Finite,
|
|
29
31
|
panes: Schema.NonEmptyArray(Pane),
|
|
30
32
|
});
|
|
33
|
+
|
|
31
34
|
export type Column = typeof Column.Type;
|
|
32
35
|
|
|
33
36
|
/** Schema for a reel's layout: its columns, left to right. The application's to keep. */
|
|
34
37
|
export const Layout = Schema.Array(Column);
|
|
38
|
+
|
|
35
39
|
export type Layout = typeof Layout.Type;
|
|
36
40
|
|
|
37
|
-
/** What a move is said of: a pane, or a column (a key moves one), by its id. */
|
|
38
41
|
export const Subject = defineTaggedUnion({
|
|
39
42
|
Pane: { paneId: Schema.String },
|
|
40
43
|
Column: { columnId: Schema.String },
|
|
41
44
|
});
|
|
45
|
+
|
|
42
46
|
export type Subject = typeof Subject.Type;
|
|
43
47
|
|
|
44
|
-
/** Where a held pane would land: into a column, at a place among its other panes, or in the
|
|
45
|
-
* gap before a column (none: after the last), as a column of its own. */
|
|
46
48
|
export const Target = defineTaggedUnion({
|
|
47
|
-
Into: { columnId: Schema.String, index: Schema.
|
|
49
|
+
Into: { columnId: Schema.String, index: Schema.Finite },
|
|
48
50
|
Gap: { maybeBeforeColumnId: Schema.Option(Schema.String) },
|
|
49
51
|
});
|
|
50
|
-
export type Target = typeof Target.Type;
|
|
51
52
|
|
|
52
|
-
|
|
53
|
+
export type Target = typeof Target.Type;
|
|
53
54
|
|
|
54
55
|
/** Union of what a reel asks the application to do to its layout, which the application
|
|
55
56
|
* applies (`apply` does it) or not, by id, so a request still means what it meant after the
|
|
@@ -58,131 +59,189 @@ export type Target = typeof Target.Type;
|
|
|
58
59
|
* (none: after the last). `MovedColumn`: a column to before another (none: last).
|
|
59
60
|
* `ResizedColumn`: a column's width. `ResizedPanes`: a column's panes' weights, by pane id. */
|
|
60
61
|
export const OutMessage = defineMessageUnion({
|
|
61
|
-
MovedPane: {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
MovedPane: {
|
|
63
|
+
paneId: Schema.String,
|
|
64
|
+
toColumnId: Schema.String,
|
|
65
|
+
toIndex: Schema.Finite,
|
|
66
|
+
},
|
|
67
|
+
PulledOutPane: {
|
|
68
|
+
paneId: Schema.String,
|
|
69
|
+
maybeBeforeColumnId: Schema.Option(Schema.String),
|
|
70
|
+
},
|
|
71
|
+
MovedColumn: {
|
|
72
|
+
columnId: Schema.String,
|
|
73
|
+
maybeBeforeColumnId: Schema.Option(Schema.String),
|
|
74
|
+
},
|
|
75
|
+
ResizedColumn: { columnId: Schema.String, width: Schema.Finite },
|
|
65
76
|
ResizedPanes: {
|
|
66
77
|
columnId: Schema.String,
|
|
67
|
-
weights: Schema.Record(Schema.String, Schema.
|
|
78
|
+
weights: Schema.Record(Schema.String, Schema.Finite),
|
|
68
79
|
},
|
|
69
80
|
});
|
|
81
|
+
|
|
70
82
|
export type OutMessage = typeof OutMessage.Type;
|
|
71
83
|
|
|
72
|
-
/** A splitter: the one after a column, which sizes its width, or the one below a pane, which
|
|
73
|
-
* shares the height between it and the pane under it. */
|
|
74
84
|
export const Splitter = defineTaggedUnion({
|
|
75
85
|
Width: { columnId: Schema.String },
|
|
76
86
|
Split: { abovePaneId: Schema.String },
|
|
77
87
|
});
|
|
88
|
+
|
|
78
89
|
export type Splitter = typeof Splitter.Type;
|
|
79
90
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
91
|
+
export const Resize = Schema.Union([
|
|
92
|
+
OutMessage.ResizedColumn,
|
|
93
|
+
OutMessage.ResizedPanes,
|
|
94
|
+
]);
|
|
83
95
|
|
|
84
|
-
|
|
96
|
+
export type Resize = typeof Resize.Type;
|
|
85
97
|
|
|
86
|
-
|
|
87
|
-
|
|
98
|
+
export type Place = Readonly<{
|
|
99
|
+
column: Column;
|
|
100
|
+
columnIndex: number;
|
|
101
|
+
row: number;
|
|
102
|
+
pane: Pane;
|
|
103
|
+
}>;
|
|
88
104
|
|
|
89
|
-
const placesOf = (layout: Layout):
|
|
105
|
+
const placesOf = (layout: Layout): readonly Place[] =>
|
|
90
106
|
Array.flatMap(layout, (column, columnIndex) =>
|
|
91
|
-
Array.map(column.panes, (pane, row) => ({ column, columnIndex, row, pane }))
|
|
107
|
+
Array.map(column.panes, (pane, row) => ({ column, columnIndex, row, pane }))
|
|
92
108
|
);
|
|
93
109
|
|
|
94
110
|
export const placeOf = (layout: Layout, paneId: string): Option.Option<Place> =>
|
|
95
111
|
Array.findFirst(placesOf(layout), (place) => place.pane.id === paneId);
|
|
96
112
|
|
|
97
|
-
export const placeAt = (
|
|
113
|
+
export const placeAt = (
|
|
114
|
+
layout: Layout,
|
|
115
|
+
columnIndex: number,
|
|
116
|
+
row: number
|
|
117
|
+
): Option.Option<Place> =>
|
|
98
118
|
Option.flatMap(Array.get(layout, columnIndex), (column) =>
|
|
99
|
-
Option.map(Array.get(column.panes, row), (pane) => ({
|
|
119
|
+
Option.map(Array.get(column.panes, row), (pane) => ({
|
|
120
|
+
column,
|
|
121
|
+
columnIndex,
|
|
122
|
+
row,
|
|
123
|
+
pane,
|
|
124
|
+
}))
|
|
100
125
|
);
|
|
101
126
|
|
|
102
|
-
export const firstPlace = (layout: Layout): Option.Option<Place> =>
|
|
127
|
+
export const firstPlace = (layout: Layout): Option.Option<Place> =>
|
|
128
|
+
placeAt(layout, 0, 0);
|
|
103
129
|
|
|
104
|
-
const columnIndexOf = (
|
|
130
|
+
const columnIndexOf = (
|
|
131
|
+
layout: Layout,
|
|
132
|
+
columnId: string
|
|
133
|
+
): Option.Option<number> =>
|
|
105
134
|
Array.findFirstIndex(layout, (column) => column.id === columnId);
|
|
106
135
|
|
|
107
136
|
const columnOf = (layout: Layout, columnId: string): Option.Option<Column> =>
|
|
108
137
|
Array.findFirst(layout, (column) => column.id === columnId);
|
|
109
138
|
|
|
110
|
-
|
|
111
|
-
|
|
139
|
+
const nextColumnId = (
|
|
140
|
+
layout: Layout,
|
|
141
|
+
columnIndex: number
|
|
142
|
+
): Option.Option<string> =>
|
|
112
143
|
Option.map(Array.get(layout, columnIndex + 1), (column) => column.id);
|
|
113
144
|
|
|
114
|
-
|
|
115
|
-
const meanWeight = (panes: ReadonlyArray<Pane>): number =>
|
|
145
|
+
const meanWeight = (panes: readonly Pane[]): number =>
|
|
116
146
|
Array.match(panes, {
|
|
117
147
|
onEmpty: () => 1,
|
|
118
148
|
onNonEmpty: (some) =>
|
|
119
|
-
Array.reduce(
|
|
149
|
+
Array.reduce(
|
|
150
|
+
some,
|
|
151
|
+
0,
|
|
152
|
+
(mean, pane, index) => mean + (pane.weight - mean) / (index + 1)
|
|
153
|
+
),
|
|
120
154
|
});
|
|
121
155
|
|
|
122
|
-
const othersIn = (column: Column, paneId: string):
|
|
156
|
+
const othersIn = (column: Column, paneId: string): readonly Pane[] =>
|
|
123
157
|
Array.filter(column.panes, (pane) => pane.id !== paneId);
|
|
124
158
|
|
|
125
|
-
const insertAt = <A>(
|
|
159
|
+
const insertAt = <A>(
|
|
160
|
+
items: readonly A[],
|
|
161
|
+
index: number,
|
|
162
|
+
item: A
|
|
163
|
+
): Array.NonEmptyArray<A> => {
|
|
126
164
|
const [before, after] = Array.splitAt(
|
|
127
165
|
items,
|
|
128
|
-
Number.clamp(index, { minimum: 0, maximum: items.length })
|
|
166
|
+
Number.clamp(index, { minimum: 0, maximum: items.length })
|
|
129
167
|
);
|
|
168
|
+
|
|
130
169
|
return Array.appendAll(Array.append(before, item), after);
|
|
131
170
|
};
|
|
132
171
|
|
|
133
|
-
/** `layout` with the pane `paneId` taken out, and any column it leaves empty gone. */
|
|
134
172
|
const without = (layout: Layout, paneId: string): Layout =>
|
|
135
173
|
Array.flatMap(layout, (column) => {
|
|
136
174
|
const others = othersIn(column, paneId);
|
|
137
|
-
|
|
175
|
+
|
|
176
|
+
return Array.isReadonlyArrayNonEmpty(others)
|
|
177
|
+
? [{ ...column, panes: others }]
|
|
178
|
+
: [];
|
|
138
179
|
});
|
|
139
180
|
|
|
140
|
-
/** Where a column goes when it is put before `maybeBeforeColumnId`: none when that column is
|
|
141
|
-
* not in `layout`. */
|
|
142
181
|
const gapIndex = (
|
|
143
182
|
layout: Layout,
|
|
144
|
-
maybeBeforeColumnId: Option.Option<string
|
|
183
|
+
maybeBeforeColumnId: Option.Option<string>
|
|
145
184
|
): Option.Option<number> =>
|
|
146
185
|
Option.match(maybeBeforeColumnId, {
|
|
147
186
|
onNone: () => Option.some(layout.length),
|
|
148
187
|
onSome: (columnId) => columnIndexOf(layout, columnId),
|
|
149
188
|
});
|
|
150
189
|
|
|
151
|
-
/** A column id for a column made for `paneId`: the pane's own id, or the first `id/2`,
|
|
152
|
-
* `id/3`… no column in `layout` has. */
|
|
153
190
|
const freshColumnId = (layout: Layout, paneId: string, suffix = 1): string => {
|
|
154
191
|
const candidate = suffix === 1 ? paneId : `${paneId}/${suffix}`;
|
|
192
|
+
|
|
155
193
|
return Array.some(layout, (column) => column.id === candidate)
|
|
156
194
|
? freshColumnId(layout, paneId, suffix + 1)
|
|
157
195
|
: candidate;
|
|
158
196
|
};
|
|
159
197
|
|
|
160
|
-
const movePane = (
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
198
|
+
const movePane = (
|
|
199
|
+
layout: Layout,
|
|
200
|
+
paneId: string,
|
|
201
|
+
toColumnId: string,
|
|
202
|
+
toIndex: number
|
|
203
|
+
): Layout =>
|
|
204
|
+
Option.match(
|
|
205
|
+
Option.all({
|
|
206
|
+
from: placeOf(layout, paneId),
|
|
207
|
+
to: columnOf(layout, toColumnId),
|
|
208
|
+
}),
|
|
209
|
+
{
|
|
210
|
+
onNone: () => layout,
|
|
211
|
+
onSome: ({ from, to }) => {
|
|
212
|
+
const others = othersIn(to, paneId);
|
|
213
|
+
|
|
214
|
+
const weight =
|
|
215
|
+
to.id === from.column.id ? from.pane.weight : meanWeight(others);
|
|
216
|
+
|
|
217
|
+
const panes = insertAt(others, toIndex, { ...from.pane, weight });
|
|
218
|
+
|
|
219
|
+
return Array.flatMap(layout, (column) =>
|
|
220
|
+
column.id === toColumnId
|
|
221
|
+
? [{ ...column, panes }]
|
|
222
|
+
: without([column], paneId)
|
|
223
|
+
);
|
|
224
|
+
},
|
|
225
|
+
}
|
|
226
|
+
);
|
|
173
227
|
|
|
174
228
|
const pullOutPane = (
|
|
175
229
|
layout: Layout,
|
|
176
230
|
paneId: string,
|
|
177
|
-
maybeBeforeColumnId: Option.Option<string
|
|
231
|
+
maybeBeforeColumnId: Option.Option<string>
|
|
178
232
|
): Layout =>
|
|
179
233
|
Option.match(placeOf(layout, paneId), {
|
|
180
234
|
onNone: () => layout,
|
|
181
235
|
onSome: (from) => {
|
|
182
236
|
const isAlone = from.column.panes.length === 1;
|
|
237
|
+
|
|
183
238
|
const isWhereItIs =
|
|
184
239
|
Equal.equals(maybeBeforeColumnId, Option.some(from.column.id)) ||
|
|
185
|
-
Equal.equals(
|
|
240
|
+
Equal.equals(
|
|
241
|
+
maybeBeforeColumnId,
|
|
242
|
+
nextColumnId(layout, from.columnIndex)
|
|
243
|
+
);
|
|
244
|
+
|
|
186
245
|
const rest = without(layout, paneId);
|
|
187
246
|
|
|
188
247
|
if (isAlone && isWhereItIs) {
|
|
@@ -204,9 +263,10 @@ const pullOutPane = (
|
|
|
204
263
|
const moveColumn = (
|
|
205
264
|
layout: Layout,
|
|
206
265
|
columnId: string,
|
|
207
|
-
maybeBeforeColumnId: Option.Option<string
|
|
266
|
+
maybeBeforeColumnId: Option.Option<string>
|
|
208
267
|
): Layout => {
|
|
209
268
|
const rest = Array.filter(layout, (column) => column.id !== columnId);
|
|
269
|
+
|
|
210
270
|
return Option.match(
|
|
211
271
|
Option.all({
|
|
212
272
|
column: columnOf(layout, columnId),
|
|
@@ -215,11 +275,15 @@ const moveColumn = (
|
|
|
215
275
|
{
|
|
216
276
|
onNone: () => layout,
|
|
217
277
|
onSome: ({ column, gap }) => insertAt(rest, gap, column),
|
|
218
|
-
}
|
|
278
|
+
}
|
|
219
279
|
);
|
|
220
280
|
};
|
|
221
281
|
|
|
222
|
-
const modifyColumn = (
|
|
282
|
+
const modifyColumn = (
|
|
283
|
+
layout: Layout,
|
|
284
|
+
columnId: string,
|
|
285
|
+
f: (column: Column) => Column
|
|
286
|
+
): Layout =>
|
|
223
287
|
Array.map(layout, (column) => (column.id === columnId ? f(column) : column));
|
|
224
288
|
|
|
225
289
|
/**
|
|
@@ -230,7 +294,8 @@ const modifyColumn = (layout: Layout, columnId: string, f: (column: Column) => C
|
|
|
230
294
|
*/
|
|
231
295
|
export const apply = (layout: Layout, request: OutMessage): Layout =>
|
|
232
296
|
OutMessage.match(request, {
|
|
233
|
-
MovedPane: ({ paneId, toColumnId, toIndex }) =>
|
|
297
|
+
MovedPane: ({ paneId, toColumnId, toIndex }) =>
|
|
298
|
+
movePane(layout, paneId, toColumnId, toIndex),
|
|
234
299
|
PulledOutPane: ({ paneId, maybeBeforeColumnId }) =>
|
|
235
300
|
pullOutPane(layout, paneId, maybeBeforeColumnId),
|
|
236
301
|
MovedColumn: ({ columnId, maybeBeforeColumnId }) =>
|
|
@@ -242,25 +307,22 @@ export const apply = (layout: Layout, request: OutMessage): Layout =>
|
|
|
242
307
|
...column,
|
|
243
308
|
panes: Array.map(column.panes, (pane) => ({
|
|
244
309
|
...pane,
|
|
245
|
-
weight: Option.getOrElse(
|
|
310
|
+
weight: Option.getOrElse(
|
|
311
|
+
Record.get(weights, pane.id),
|
|
312
|
+
() => pane.weight
|
|
313
|
+
),
|
|
246
314
|
})),
|
|
247
315
|
})),
|
|
248
316
|
});
|
|
249
317
|
|
|
250
|
-
/** Whether `request` changes `layout`: a move, a drop or a stop that would leave it as it is
|
|
251
|
-
* is passed over. */
|
|
252
318
|
export const isChange = (layout: Layout, request: OutMessage): boolean =>
|
|
253
319
|
!Equal.equals(apply(layout, request), layout);
|
|
254
320
|
|
|
255
|
-
// WIDTHS
|
|
256
|
-
|
|
257
|
-
/** How close a width is to a preset to count as it. */
|
|
258
321
|
const PRESET_TOLERANCE = 0.01;
|
|
259
322
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
const PRESETS: Array.NonEmptyReadonlyArray<Readonly<{ width: number; words: string }>> = [
|
|
323
|
+
const PRESETS: Array.NonEmptyReadonlyArray<
|
|
324
|
+
Readonly<{ width: number; words: string }>
|
|
325
|
+
> = [
|
|
264
326
|
{ width: 1 / 3, words: "a third of the width" },
|
|
265
327
|
{ width: 1 / 2, words: "half the width" },
|
|
266
328
|
{ width: 2 / 3, words: "two thirds of the width" },
|
|
@@ -268,9 +330,13 @@ const PRESETS: Array.NonEmptyReadonlyArray<Readonly<{ width: number; words: stri
|
|
|
268
330
|
];
|
|
269
331
|
|
|
270
332
|
const presetOf = (width: number) =>
|
|
271
|
-
Array.findFirst(
|
|
333
|
+
Array.findFirst(
|
|
334
|
+
PRESETS,
|
|
335
|
+
(preset) => Math.abs(preset.width - width) < PRESET_TOLERANCE
|
|
336
|
+
);
|
|
272
337
|
|
|
273
|
-
const percent = (width: number): string =>
|
|
338
|
+
const percent = (width: number): string =>
|
|
339
|
+
Math.round(width * 100).toLocaleString(LOCALE);
|
|
274
340
|
|
|
275
341
|
export const widthWords = (width: number): string =>
|
|
276
342
|
Option.match(presetOf(width), {
|
|
@@ -278,146 +344,192 @@ export const widthWords = (width: number): string =>
|
|
|
278
344
|
onSome: ({ words }) => words,
|
|
279
345
|
});
|
|
280
346
|
|
|
281
|
-
/** The next preset wider than `width`, or the narrowest past the widest. */
|
|
282
347
|
export const nextPreset = (width: number): number =>
|
|
283
348
|
Option.getOrElse(
|
|
284
|
-
Array.findFirst(
|
|
285
|
-
|
|
349
|
+
Array.findFirst(
|
|
350
|
+
PRESETS,
|
|
351
|
+
(preset) => preset.width > width + PRESET_TOLERANCE
|
|
352
|
+
),
|
|
353
|
+
() => Array.headNonEmpty(PRESETS)
|
|
286
354
|
).width;
|
|
287
355
|
|
|
288
|
-
// WORDS
|
|
289
|
-
|
|
290
|
-
/** The words a place is said in. `{pane}` is a pane's label and `{column}` a column's
|
|
291
|
-
* number, counted from one. */
|
|
292
356
|
const WORDS = {
|
|
293
357
|
columnSubject: "column with {pane}",
|
|
294
358
|
place: "column {column} of {columns}",
|
|
295
359
|
stackedPlace: "{row} of {rows} in column {column} of {columns}",
|
|
296
360
|
};
|
|
297
361
|
|
|
298
|
-
/** What a place is called when a drop or a move would leave the pane or column where it is. */
|
|
299
362
|
export const WHERE_IT_WAS = "where it was";
|
|
300
363
|
|
|
301
|
-
export const fill = (
|
|
364
|
+
export const fill = (
|
|
365
|
+
template: string,
|
|
366
|
+
fields: Readonly<Record<string, string | number>>
|
|
367
|
+
): string =>
|
|
302
368
|
Array.reduce(Object.entries(fields), template, (text, [key, value]) =>
|
|
303
|
-
text.replaceAll(
|
|
369
|
+
text.replaceAll(
|
|
370
|
+
`{${key}}`,
|
|
371
|
+
Predicate.isNumber(value) ? value.toLocaleString(LOCALE) : value
|
|
372
|
+
)
|
|
304
373
|
);
|
|
305
374
|
|
|
306
|
-
export const subjectWords = (
|
|
375
|
+
export const subjectWords = (
|
|
376
|
+
layout: Layout,
|
|
377
|
+
subject: Subject
|
|
378
|
+
): Option.Option<string> =>
|
|
307
379
|
Subject.match(subject, {
|
|
308
|
-
Pane: ({ paneId }) =>
|
|
380
|
+
Pane: ({ paneId }) =>
|
|
381
|
+
Option.map(placeOf(layout, paneId), ({ pane }) => pane.label),
|
|
309
382
|
Column: ({ columnId }) =>
|
|
310
383
|
Option.map(columnOf(layout, columnId), (column) =>
|
|
311
|
-
fill(WORDS.columnSubject, {
|
|
384
|
+
fill(WORDS.columnSubject, {
|
|
385
|
+
pane: Array.headNonEmpty(column.panes).label,
|
|
386
|
+
})
|
|
312
387
|
),
|
|
313
388
|
});
|
|
314
389
|
|
|
315
390
|
export const placeWords = (layout: Layout, place: Place): string => {
|
|
316
391
|
const rows = place.column.panes.length;
|
|
392
|
+
|
|
317
393
|
const fields = {
|
|
318
394
|
column: place.columnIndex + 1,
|
|
319
395
|
columns: layout.length,
|
|
320
396
|
row: place.row + 1,
|
|
321
397
|
rows,
|
|
322
398
|
};
|
|
323
|
-
|
|
399
|
+
|
|
400
|
+
return rows > 1
|
|
401
|
+
? fill(WORDS.stackedPlace, fields)
|
|
402
|
+
: fill(WORDS.place, fields);
|
|
324
403
|
};
|
|
325
404
|
|
|
326
|
-
|
|
327
|
-
|
|
405
|
+
export const whereWords = (
|
|
406
|
+
layout: Layout,
|
|
407
|
+
subject: Subject
|
|
408
|
+
): Option.Option<string> =>
|
|
328
409
|
Subject.match(subject, {
|
|
329
|
-
Pane: ({ paneId }) =>
|
|
410
|
+
Pane: ({ paneId }) =>
|
|
411
|
+
Option.map(placeOf(layout, paneId), (place) => placeWords(layout, place)),
|
|
330
412
|
Column: ({ columnId }) =>
|
|
331
413
|
Option.map(columnIndexOf(layout, columnId), (column) =>
|
|
332
|
-
fill(WORDS.place, { column: column + 1, columns: layout.length })
|
|
414
|
+
fill(WORDS.place, { column: column + 1, columns: layout.length })
|
|
333
415
|
),
|
|
334
416
|
});
|
|
335
417
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
418
|
+
export const originOf = (
|
|
419
|
+
layout: Layout,
|
|
420
|
+
paneId: string
|
|
421
|
+
): Option.Option<Target> =>
|
|
340
422
|
Option.map(placeOf(layout, paneId), ({ column, row }) =>
|
|
341
|
-
Target.Into({ columnId: column.id, index: row })
|
|
423
|
+
Target.Into({ columnId: column.id, index: row })
|
|
342
424
|
);
|
|
343
425
|
|
|
344
|
-
/** What dropping the pane `paneId` at `target` asks of the layout: none where it would
|
|
345
|
-
* change nothing (where it is, or a target whose column is gone). */
|
|
346
426
|
export const requestOf = (
|
|
347
427
|
layout: Layout,
|
|
348
428
|
paneId: string,
|
|
349
|
-
target: Target
|
|
429
|
+
target: Target
|
|
350
430
|
): Option.Option<OutMessage> =>
|
|
351
431
|
Option.liftPredicate(
|
|
352
432
|
Target.match(target, {
|
|
353
433
|
Into: ({ columnId, index }) =>
|
|
354
434
|
OutMessage.MovedPane({ paneId, toColumnId: columnId, toIndex: index }),
|
|
355
|
-
Gap: ({ maybeBeforeColumnId }) =>
|
|
435
|
+
Gap: ({ maybeBeforeColumnId }) =>
|
|
436
|
+
OutMessage.PulledOutPane({ paneId, maybeBeforeColumnId }),
|
|
356
437
|
}),
|
|
357
|
-
(request) => isChange(layout, request)
|
|
438
|
+
(request) => isChange(layout, request)
|
|
358
439
|
);
|
|
359
440
|
|
|
360
|
-
|
|
361
|
-
|
|
441
|
+
export const landingWords = (
|
|
442
|
+
layout: Layout,
|
|
443
|
+
paneId: string,
|
|
444
|
+
target: Target
|
|
445
|
+
): string =>
|
|
362
446
|
Option.match(requestOf(layout, paneId, target), {
|
|
363
447
|
onNone: () => WHERE_IT_WAS,
|
|
364
448
|
onSome: (request) =>
|
|
365
449
|
Option.getOrElse(
|
|
366
450
|
whereWords(apply(layout, request), Subject.Pane({ paneId })),
|
|
367
|
-
() => WHERE_IT_WAS
|
|
451
|
+
() => WHERE_IT_WAS
|
|
368
452
|
),
|
|
369
453
|
});
|
|
370
454
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
455
|
+
export const columnOfTarget = (
|
|
456
|
+
layout: Layout,
|
|
457
|
+
target: Target
|
|
458
|
+
): Option.Option<string> =>
|
|
374
459
|
Target.match(target, {
|
|
375
460
|
Into: ({ columnId }) => Option.some(columnId),
|
|
376
461
|
Gap: ({ maybeBeforeColumnId }) =>
|
|
377
|
-
Option.orElse(maybeBeforeColumnId, () =>
|
|
462
|
+
Option.orElse(maybeBeforeColumnId, () =>
|
|
463
|
+
Option.map(Array.last(layout), ({ id }) => id)
|
|
464
|
+
),
|
|
378
465
|
});
|
|
379
466
|
|
|
380
467
|
export const Step = Schema.Literals(["Up", "Down", "Left", "Right"]);
|
|
468
|
+
|
|
381
469
|
export type Step = typeof Step.Type;
|
|
382
470
|
|
|
383
|
-
// A keyboard step reads the layout as a row of stops: the gap before each column (even), then
|
|
384
|
-
// the column itself (odd), and the gap after the last.
|
|
385
471
|
const stopOf = (layout: Layout, target: Target): Option.Option<number> =>
|
|
386
472
|
Target.match(target, {
|
|
387
|
-
Into: ({ columnId }) =>
|
|
473
|
+
Into: ({ columnId }) =>
|
|
474
|
+
Option.map(columnIndexOf(layout, columnId), (column) => column * 2 + 1),
|
|
388
475
|
Gap: ({ maybeBeforeColumnId }) =>
|
|
389
476
|
Option.map(gapIndex(layout, maybeBeforeColumnId), (gap) => gap * 2),
|
|
390
477
|
});
|
|
391
478
|
|
|
392
|
-
/** Whether the column `target` names (into it, or the gap before it) is still in `layout`. */
|
|
393
479
|
export const isTargetPresent = (layout: Layout, target: Target): boolean =>
|
|
394
480
|
Option.isSome(stopOf(layout, target));
|
|
395
481
|
|
|
396
|
-
const
|
|
482
|
+
const roomIn = (column: Column, paneId: string): number =>
|
|
483
|
+
othersIn(column, paneId).length;
|
|
484
|
+
|
|
485
|
+
const targetAtStop = (
|
|
486
|
+
layout: Layout,
|
|
487
|
+
paneId: string,
|
|
488
|
+
stop: number,
|
|
489
|
+
row: number
|
|
490
|
+
): Target =>
|
|
397
491
|
stop % 2 === 0
|
|
398
492
|
? Target.Gap({
|
|
399
|
-
maybeBeforeColumnId: Option.map(
|
|
493
|
+
maybeBeforeColumnId: Option.map(
|
|
494
|
+
Array.get(layout, stop / 2),
|
|
495
|
+
({ id }) => id
|
|
496
|
+
),
|
|
400
497
|
})
|
|
401
498
|
: Option.match(Array.get(layout, (stop - 1) / 2), {
|
|
402
499
|
onNone: () => Target.Gap({ maybeBeforeColumnId: Option.none() }),
|
|
403
500
|
onSome: (column) =>
|
|
404
|
-
Target.Into({
|
|
501
|
+
Target.Into({
|
|
502
|
+
columnId: column.id,
|
|
503
|
+
index: Math.min(row, roomIn(column, paneId)),
|
|
504
|
+
}),
|
|
405
505
|
});
|
|
406
506
|
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
507
|
+
const stepOnce = (
|
|
508
|
+
layout: Layout,
|
|
509
|
+
paneId: string,
|
|
510
|
+
target: Target,
|
|
511
|
+
step: Step
|
|
512
|
+
): Target => {
|
|
513
|
+
const row = Target.match(target, {
|
|
514
|
+
Into: ({ index }) => index,
|
|
515
|
+
Gap: () => 0,
|
|
516
|
+
});
|
|
412
517
|
|
|
413
518
|
return Option.match(stopOf(layout, target), {
|
|
414
519
|
onNone: () => target,
|
|
415
520
|
onSome: (stop) =>
|
|
416
521
|
Match.value(step).pipe(
|
|
417
522
|
Match.withReturnType<Target>(),
|
|
418
|
-
Match.when("Left", () =>
|
|
523
|
+
Match.when("Left", () =>
|
|
524
|
+
targetAtStop(layout, paneId, Math.max(stop - 1, 0), row)
|
|
525
|
+
),
|
|
419
526
|
Match.when("Right", () =>
|
|
420
|
-
targetAtStop(
|
|
527
|
+
targetAtStop(
|
|
528
|
+
layout,
|
|
529
|
+
paneId,
|
|
530
|
+
Math.min(stop + 1, layout.length * 2),
|
|
531
|
+
row
|
|
532
|
+
)
|
|
421
533
|
),
|
|
422
534
|
Match.whenOr("Up", "Down", () =>
|
|
423
535
|
Target.match(target, {
|
|
@@ -434,157 +546,200 @@ const stepOnce = (layout: Layout, paneId: string, target: Target, step: Step): T
|
|
|
434
546
|
}),
|
|
435
547
|
}),
|
|
436
548
|
}),
|
|
437
|
-
})
|
|
549
|
+
})
|
|
438
550
|
),
|
|
439
|
-
Match.exhaustive
|
|
551
|
+
Match.exhaustive
|
|
440
552
|
),
|
|
441
553
|
});
|
|
442
554
|
};
|
|
443
555
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
556
|
+
const presentOrOrigin = (
|
|
557
|
+
layout: Layout,
|
|
558
|
+
target: Target,
|
|
559
|
+
origin: Option.Option<Target>
|
|
560
|
+
): Target =>
|
|
561
|
+
isTargetPresent(layout, target)
|
|
562
|
+
? target
|
|
563
|
+
: Option.getOrElse(origin, () => target);
|
|
564
|
+
|
|
565
|
+
const isChangingDropOrOrigin = (
|
|
566
|
+
layout: Layout,
|
|
567
|
+
paneId: string,
|
|
568
|
+
origin: Option.Option<Target>,
|
|
569
|
+
candidate: Target
|
|
570
|
+
): boolean =>
|
|
571
|
+
Option.isSome(requestOf(layout, paneId, candidate)) ||
|
|
572
|
+
Option.exists(origin, (place) => Equal.equals(place, candidate));
|
|
573
|
+
|
|
574
|
+
const stopAndRowCount = (layout: Layout): number =>
|
|
575
|
+
layout.length * 2 + Array.length(placesOf(layout));
|
|
576
|
+
|
|
449
577
|
export const steppedTarget = (
|
|
450
578
|
layout: Layout,
|
|
451
579
|
paneId: string,
|
|
452
580
|
target: Target,
|
|
453
|
-
step: Step
|
|
581
|
+
step: Step
|
|
454
582
|
): Target => {
|
|
455
583
|
const origin = originOf(layout, paneId);
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
const
|
|
459
|
-
Option.isSome(requestOf(layout, paneId, candidate)) ||
|
|
460
|
-
Option.exists(origin, (place) => Equal.equals(place, candidate));
|
|
461
|
-
const walk = (from: Target, left: number): Target => {
|
|
584
|
+
const start = presentOrOrigin(layout, target, origin);
|
|
585
|
+
|
|
586
|
+
const walkPastUnchangingStops = (from: Target, left: number): Target => {
|
|
462
587
|
const next = stepOnce(layout, paneId, from, step);
|
|
588
|
+
|
|
463
589
|
if (Equal.equals(next, from) || left === 0) {
|
|
464
590
|
return start;
|
|
465
591
|
}
|
|
466
|
-
|
|
592
|
+
|
|
593
|
+
return isChangingDropOrOrigin(layout, paneId, origin, next)
|
|
594
|
+
? next
|
|
595
|
+
: walkPastUnchangingStops(next, left - 1);
|
|
467
596
|
};
|
|
468
|
-
|
|
597
|
+
|
|
598
|
+
return walkPastUnchangingStops(start, stopAndRowCount(layout));
|
|
469
599
|
};
|
|
470
600
|
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
* pixels. */
|
|
474
|
-
const EDGE_SHARE = 0.2;
|
|
475
|
-
const EDGE_MAX = 48;
|
|
601
|
+
const GAP_BAND_SHARE = 0.2;
|
|
602
|
+
const GAP_BAND_MAX = 48;
|
|
476
603
|
|
|
477
|
-
/** A column as a pointer reads it: its id and its left and right edges. */
|
|
478
604
|
export type ColumnBox = Readonly<{
|
|
479
605
|
id: string;
|
|
480
606
|
left: number;
|
|
481
607
|
right: number;
|
|
482
608
|
}>;
|
|
483
609
|
|
|
484
|
-
const gapBefore = (columns:
|
|
485
|
-
Target.Gap({
|
|
610
|
+
const gapBefore = (columns: readonly ColumnBox[], gap: number): Target =>
|
|
611
|
+
Target.Gap({
|
|
612
|
+
maybeBeforeColumnId: Option.map(Array.get(columns, gap), ({ id }) => id),
|
|
613
|
+
});
|
|
614
|
+
|
|
615
|
+
const gapBandOf = ({ left, right }: ColumnBox): number =>
|
|
616
|
+
Math.min((right - left) * GAP_BAND_SHARE, GAP_BAND_MAX);
|
|
617
|
+
|
|
618
|
+
const columnUnderOrRightOf = (
|
|
619
|
+
columns: readonly ColumnBox[],
|
|
620
|
+
clientX: number
|
|
621
|
+
): Option.Option<Readonly<{ index: number; box: ColumnBox }>> =>
|
|
622
|
+
pipe(
|
|
623
|
+
Array.findFirstIndex(columns, ({ right }) => clientX <= right),
|
|
624
|
+
Option.flatMap((index) =>
|
|
625
|
+
Option.map(Array.get(columns, index), (box) => ({ index, box }))
|
|
626
|
+
)
|
|
627
|
+
);
|
|
628
|
+
|
|
629
|
+
const slotsAbove = (slotMiddles: readonly number[], clientY: number): number =>
|
|
630
|
+
Array.filter(slotMiddles, (middle) => middle < clientY).length;
|
|
486
631
|
|
|
487
|
-
/** Where a pointer at (`clientX`, `clientY`) over a reel whose columns sit at `columns`, left
|
|
488
|
-
* to right, would drop a pane. Over a column's edge band (or over a gap, or past the last
|
|
489
|
-
* column) it lands in that gap, as a column of its own; over the rest of a column it lands
|
|
490
|
-
* among that column's other panes, after each whose middle is above the pointer.
|
|
491
|
-
* `slotMiddlesOf` gives the vertical middles of a column's slots, by its index, the held
|
|
492
|
-
* pane's left out: it is asked for the column the pointer is over alone, and only when the
|
|
493
|
-
* pointer is among its panes. */
|
|
494
632
|
export const targetAtPoint = (
|
|
495
|
-
columns:
|
|
633
|
+
columns: readonly ColumnBox[],
|
|
496
634
|
clientX: number,
|
|
497
635
|
clientY: number,
|
|
498
|
-
slotMiddlesOf: (index: number) =>
|
|
636
|
+
slotMiddlesOf: (index: number) => readonly number[]
|
|
499
637
|
): Target =>
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
return gapBefore(columns, index + 1);
|
|
511
|
-
} else {
|
|
512
|
-
return Target.Into({
|
|
513
|
-
columnId: id,
|
|
514
|
-
index: Array.filter(slotMiddlesOf(index), (middle) => middle < clientY).length,
|
|
515
|
-
});
|
|
516
|
-
}
|
|
517
|
-
},
|
|
518
|
-
}),
|
|
519
|
-
);
|
|
638
|
+
Option.match(columnUnderOrRightOf(columns, clientX), {
|
|
639
|
+
onNone: () => gapBefore(columns, columns.length),
|
|
640
|
+
onSome: ({ index, box }) => {
|
|
641
|
+
const band = gapBandOf(box);
|
|
642
|
+
|
|
643
|
+
if (clientX < box.left + band) {
|
|
644
|
+
return gapBefore(columns, index);
|
|
645
|
+
} else if (clientX > box.right - band) {
|
|
646
|
+
return gapBefore(columns, index + 1);
|
|
647
|
+
}
|
|
520
648
|
|
|
521
|
-
|
|
649
|
+
return Target.Into({
|
|
650
|
+
columnId: box.id,
|
|
651
|
+
index: slotsAbove(slotMiddlesOf(index), clientY),
|
|
652
|
+
});
|
|
653
|
+
},
|
|
654
|
+
});
|
|
522
655
|
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
* size from reaching nothing. */
|
|
526
|
-
const WIDTH_FLOOR = 0.1;
|
|
527
|
-
const SHARE_FLOOR = 0.05;
|
|
656
|
+
const COLUMN_WIDTH_FLOOR = 0.1;
|
|
657
|
+
const PANE_SHARE_FLOOR = 0.05;
|
|
528
658
|
const PRECISION = 10_000;
|
|
529
659
|
|
|
530
|
-
const rounded = (value: number): number =>
|
|
660
|
+
const rounded = (value: number): number =>
|
|
661
|
+
Math.round(value * PRECISION) / PRECISION;
|
|
662
|
+
|
|
663
|
+
const precisionFinerThan = (floor: number): number =>
|
|
664
|
+
Math.max(PRECISION, 10 ** Math.ceil(-Math.log10(floor)));
|
|
531
665
|
|
|
532
|
-
/** `weight`, at least `floor`, to four decimals, or, where a step of four decimals is more than
|
|
533
|
-
* `floor` (a column whose weights total under a five-hundredth, or two panes that small), to
|
|
534
|
-
* the first power of ten no more than it, so that it never rounds to nothing. A weight too
|
|
535
|
-
* large or a floor too small to scale by that power is left as it is. */
|
|
536
666
|
const roundedOver = (weight: number, floor: number): number => {
|
|
537
|
-
const precision =
|
|
667
|
+
const precision = precisionFinerThan(floor);
|
|
538
668
|
const scaled = weight * precision;
|
|
539
|
-
|
|
669
|
+
const isScalable = globalThis.Number.isFinite(scaled);
|
|
670
|
+
|
|
671
|
+
return isScalable ? Math.round(scaled) / precision : weight;
|
|
672
|
+
};
|
|
673
|
+
|
|
674
|
+
const resizedColumn = (
|
|
675
|
+
layout: Layout,
|
|
676
|
+
columnId: string,
|
|
677
|
+
share: number
|
|
678
|
+
): Option.Option<Resize> =>
|
|
679
|
+
Option.map(columnOf(layout, columnId), (column) =>
|
|
680
|
+
OutMessage.ResizedColumn({
|
|
681
|
+
columnId,
|
|
682
|
+
width: rounded(
|
|
683
|
+
Number.clamp(column.width + share, {
|
|
684
|
+
minimum: COLUMN_WIDTH_FLOOR,
|
|
685
|
+
maximum: 1,
|
|
686
|
+
})
|
|
687
|
+
),
|
|
688
|
+
})
|
|
689
|
+
);
|
|
690
|
+
|
|
691
|
+
const paneWeightFloor = (total: number, pair: number): number =>
|
|
692
|
+
Math.max(
|
|
693
|
+
Math.min(total * PANE_SHARE_FLOOR, pair / 2),
|
|
694
|
+
globalThis.Number.MIN_VALUE
|
|
695
|
+
);
|
|
696
|
+
|
|
697
|
+
const sharedPair = (
|
|
698
|
+
column: Column,
|
|
699
|
+
above: Pane,
|
|
700
|
+
below: Pane,
|
|
701
|
+
share: number
|
|
702
|
+
): Resize => {
|
|
703
|
+
const total = Number.sumAll(Array.map(column.panes, ({ weight }) => weight));
|
|
704
|
+
const pair = above.weight + below.weight;
|
|
705
|
+
const floor = paneWeightFloor(total, pair);
|
|
706
|
+
|
|
707
|
+
const nextAbove = Number.clamp(above.weight + share * total, {
|
|
708
|
+
minimum: floor,
|
|
709
|
+
maximum: pair - floor,
|
|
710
|
+
});
|
|
711
|
+
|
|
712
|
+
const isShareMovable = globalThis.Number.isFinite(total);
|
|
713
|
+
|
|
714
|
+
return OutMessage.ResizedPanes({
|
|
715
|
+
columnId: column.id,
|
|
716
|
+
weights: isShareMovable
|
|
717
|
+
? {
|
|
718
|
+
[above.id]: roundedOver(nextAbove, floor),
|
|
719
|
+
[below.id]: roundedOver(pair - nextAbove, floor),
|
|
720
|
+
}
|
|
721
|
+
: { [above.id]: above.weight, [below.id]: below.weight },
|
|
722
|
+
});
|
|
540
723
|
};
|
|
541
724
|
|
|
542
|
-
/** What moving `splitter` by `share` asks of the layout, from the sizes the layout holds (not
|
|
543
|
-
* the sizes printed, which the stylesheet may hold at a minimum): a width splitter adds
|
|
544
|
-
* `share` to its column's width; a pane splitter moves `share` of its column's height from
|
|
545
|
-
* the pane below it to the pane above, leaving each a weight above nothing however small the
|
|
546
|
-
* column. None when what it sizes is gone. */
|
|
547
725
|
export const resizeOf = (
|
|
548
726
|
layout: Layout,
|
|
549
727
|
splitter: Splitter,
|
|
550
|
-
share: number
|
|
728
|
+
share: number
|
|
551
729
|
): Option.Option<Resize> =>
|
|
552
730
|
Splitter.match(splitter, {
|
|
553
|
-
Width: ({ columnId }) =>
|
|
554
|
-
Option.map(columnOf(layout, columnId), (column) =>
|
|
555
|
-
OutMessage.ResizedColumn({
|
|
556
|
-
columnId,
|
|
557
|
-
width: rounded(Number.clamp(column.width + share, { minimum: WIDTH_FLOOR, maximum: 1 })),
|
|
558
|
-
}),
|
|
559
|
-
),
|
|
731
|
+
Width: ({ columnId }) => resizedColumn(layout, columnId, share),
|
|
560
732
|
Split: ({ abovePaneId }) =>
|
|
561
|
-
Option.flatMap(
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
Math.min(total * SHARE_FLOOR, pair / 2),
|
|
568
|
-
globalThis.Number.MIN_VALUE,
|
|
569
|
-
);
|
|
570
|
-
const nextAbove = Number.clamp(above.weight + share * total, {
|
|
571
|
-
minimum: floor,
|
|
572
|
-
maximum: pair - floor,
|
|
573
|
-
});
|
|
574
|
-
return OutMessage.ResizedPanes({
|
|
575
|
-
columnId: column.id,
|
|
576
|
-
weights: globalThis.Number.isFinite(total)
|
|
577
|
-
? {
|
|
578
|
-
[above.id]: roundedOver(nextAbove, floor),
|
|
579
|
-
[below.id]: roundedOver(pair - nextAbove, floor),
|
|
580
|
-
}
|
|
581
|
-
: // weights that total past the largest number have no share to move: they stay
|
|
582
|
-
{ [above.id]: above.weight, [below.id]: below.weight },
|
|
583
|
-
});
|
|
584
|
-
}),
|
|
733
|
+
Option.flatMap(
|
|
734
|
+
placeOf(layout, abovePaneId),
|
|
735
|
+
({ column, row, pane: above }) =>
|
|
736
|
+
Option.map(Array.get(column.panes, row + 1), (below) =>
|
|
737
|
+
sharedPair(column, above, below, share)
|
|
738
|
+
)
|
|
585
739
|
),
|
|
586
740
|
});
|
|
587
741
|
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
742
|
+
export const isSplitterPresent = (
|
|
743
|
+
layout: Layout,
|
|
744
|
+
splitter: Splitter
|
|
745
|
+
): boolean => Option.isSome(resizeOf(layout, splitter, 0));
|