@flyingrobots/bijou-tui 7.1.0 → 7.2.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/README.md +27 -4
- package/dist/accordion.d.ts +3 -108
- package/dist/accordion.d.ts.map +1 -1
- package/dist/accordion.js +2 -161
- package/dist/accordion.js.map +1 -1
- package/dist/accordion.part01.d.ts +25 -0
- package/dist/accordion.part01.d.ts.map +1 -0
- package/dist/accordion.part01.js +61 -0
- package/dist/accordion.part01.js.map +1 -0
- package/dist/accordion.part02.d.ts +8 -0
- package/dist/accordion.part02.d.ts.map +1 -0
- package/dist/accordion.part02.js +15 -0
- package/dist/accordion.part02.js.map +1 -0
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +5 -6
- package/dist/animate.js.map +1 -1
- package/dist/app-frame-actions.d.ts +1 -18
- package/dist/app-frame-actions.d.ts.map +1 -1
- package/dist/app-frame-actions.js +44 -42
- package/dist/app-frame-actions.js.map +1 -1
- package/dist/app-frame-i18n.d.ts.map +1 -1
- package/dist/app-frame-i18n.js +19 -2
- package/dist/app-frame-i18n.js.map +1 -1
- package/dist/app-frame-overlays.d.ts +1 -8
- package/dist/app-frame-overlays.d.ts.map +1 -1
- package/dist/app-frame-overlays.js +54 -24
- package/dist/app-frame-overlays.js.map +1 -1
- package/dist/app-frame-palette.d.ts +1 -11
- package/dist/app-frame-palette.d.ts.map +1 -1
- package/dist/app-frame-palette.js +19 -18
- package/dist/app-frame-palette.js.map +1 -1
- package/dist/app-frame-render.d.ts +0 -7
- package/dist/app-frame-render.d.ts.map +1 -1
- package/dist/app-frame-render.js +17 -26
- package/dist/app-frame-render.js.map +1 -1
- package/dist/app-frame-types.d.ts +8 -4
- package/dist/app-frame-types.d.ts.map +1 -1
- package/dist/app-frame-types.js +5 -5
- package/dist/app-frame-types.js.map +1 -1
- package/dist/app-frame-utils.d.ts +2 -1
- package/dist/app-frame-utils.d.ts.map +1 -1
- package/dist/app-frame-utils.js +8 -1
- package/dist/app-frame-utils.js.map +1 -1
- package/dist/app-frame.d.ts +14 -3
- package/dist/app-frame.d.ts.map +1 -1
- package/dist/app-frame.js +295 -231
- package/dist/app-frame.js.map +1 -1
- package/dist/app-frame.test-support.part01.d.ts +149 -0
- package/dist/app-frame.test-support.part01.d.ts.map +1 -0
- package/dist/app-frame.test-support.part01.js +106 -0
- package/dist/app-frame.test-support.part01.js.map +1 -0
- package/dist/app-frame.test-support.part02.d.ts +15 -0
- package/dist/app-frame.test-support.part02.d.ts.map +1 -0
- package/dist/app-frame.test-support.part02.js +89 -0
- package/dist/app-frame.test-support.part02.js.map +1 -0
- package/dist/browsable-list.d.ts +5 -5
- package/dist/browsable-list.d.ts.map +1 -1
- package/dist/browsable-list.js.map +1 -1
- package/dist/canvas.d.ts +2 -34
- package/dist/canvas.d.ts.map +1 -1
- package/dist/canvas.js +43 -47
- package/dist/canvas.js.map +1 -1
- package/dist/cell-glyph-fit.js +1 -1
- package/dist/cell-glyph-fit.js.map +1 -1
- package/dist/collection-surface-types.d.ts +12 -0
- package/dist/collection-surface-types.d.ts.map +1 -0
- package/dist/collection-surface-types.js +2 -0
- package/dist/collection-surface-types.js.map +1 -0
- package/dist/collection-surface.d.ts +2 -7
- package/dist/collection-surface.d.ts.map +1 -1
- package/dist/collection-surface.js +8 -18
- package/dist/collection-surface.js.map +1 -1
- package/dist/command-palette.d.ts.map +1 -1
- package/dist/command-palette.js +2 -1
- package/dist/command-palette.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +1 -1
- package/dist/commands.js.map +1 -1
- package/dist/css/install.js.map +1 -1
- package/dist/css/parser.js +9 -3
- package/dist/css/parser.js.map +1 -1
- package/dist/css/resolver-types.d.ts +13 -0
- package/dist/css/resolver-types.d.ts.map +1 -0
- package/dist/css/resolver-types.js +2 -0
- package/dist/css/resolver-types.js.map +1 -0
- package/dist/css/resolver.d.ts +2 -12
- package/dist/css/resolver.d.ts.map +1 -1
- package/dist/css/resolver.js +13 -20
- package/dist/css/resolver.js.map +1 -1
- package/dist/css/text-style.d.ts +4 -8
- package/dist/css/text-style.d.ts.map +1 -1
- package/dist/css/text-style.js +13 -18
- package/dist/css/text-style.js.map +1 -1
- package/dist/dag-pane.d.ts +4 -224
- package/dist/dag-pane.d.ts.map +1 -1
- package/dist/dag-pane.js +3 -516
- package/dist/dag-pane.js.map +1 -1
- package/dist/dag-pane.part01.d.ts +58 -0
- package/dist/dag-pane.part01.d.ts.map +1 -0
- package/dist/dag-pane.part01.js +2 -0
- package/dist/dag-pane.part01.js.map +1 -0
- package/dist/dag-pane.part02.d.ts +4 -0
- package/dist/dag-pane.part02.d.ts.map +1 -0
- package/dist/dag-pane.part02.js +56 -0
- package/dist/dag-pane.part02.js.map +1 -0
- package/dist/dag-pane.part03.d.ts +6 -0
- package/dist/dag-pane.part03.d.ts.map +1 -0
- package/dist/dag-pane.part03.js +76 -0
- package/dist/dag-pane.part03.js.map +1 -0
- package/dist/dag-pane.part04.d.ts +7 -0
- package/dist/dag-pane.part04.d.ts.map +1 -0
- package/dist/dag-pane.part04.js +66 -0
- package/dist/dag-pane.part04.js.map +1 -0
- package/dist/dag-pane.part05.d.ts +7 -0
- package/dist/dag-pane.part05.d.ts.map +1 -0
- package/dist/dag-pane.part05.js +78 -0
- package/dist/dag-pane.part05.js.map +1 -0
- package/dist/dag-pane.part06.d.ts +14 -0
- package/dist/dag-pane.part06.d.ts.map +1 -0
- package/dist/dag-pane.part06.js +65 -0
- package/dist/dag-pane.part06.js.map +1 -0
- package/dist/dag-pane.part07.d.ts +18 -0
- package/dist/dag-pane.part07.d.ts.map +1 -0
- package/dist/dag-pane.part07.js +22 -0
- package/dist/dag-pane.part07.js.map +1 -0
- package/dist/driver.d.ts +35 -21
- package/dist/driver.d.ts.map +1 -1
- package/dist/driver.js +69 -39
- package/dist/driver.js.map +1 -1
- package/dist/eventbus.d.ts.map +1 -1
- package/dist/eventbus.js +13 -23
- package/dist/eventbus.js.map +1 -1
- package/dist/file-picker.d.ts +4 -164
- package/dist/file-picker.d.ts.map +1 -1
- package/dist/file-picker.js +3 -292
- package/dist/file-picker.js.map +1 -1
- package/dist/file-picker.part01.d.ts +54 -0
- package/dist/file-picker.part01.d.ts.map +1 -0
- package/dist/file-picker.part01.js +47 -0
- package/dist/file-picker.part01.js.map +1 -0
- package/dist/file-picker.part02.d.ts +9 -0
- package/dist/file-picker.part02.d.ts.map +1 -0
- package/dist/file-picker.part02.js +77 -0
- package/dist/file-picker.part02.js.map +1 -0
- package/dist/file-picker.part03.d.ts +12 -0
- package/dist/file-picker.part03.d.ts.map +1 -0
- package/dist/file-picker.part03.js +35 -0
- package/dist/file-picker.part03.js.map +1 -0
- package/dist/flex.d.ts +0 -61
- package/dist/flex.d.ts.map +1 -1
- package/dist/flex.js +11 -161
- package/dist/flex.js.map +1 -1
- package/dist/focus-area.d.ts +6 -210
- package/dist/focus-area.d.ts.map +1 -1
- package/dist/focus-area.js +5 -425
- package/dist/focus-area.js.map +1 -1
- package/dist/focus-area.part01.d.ts +57 -0
- package/dist/focus-area.part01.d.ts.map +1 -0
- package/dist/focus-area.part01.js +23 -0
- package/dist/focus-area.part01.js.map +1 -0
- package/dist/focus-area.part02.d.ts +13 -0
- package/dist/focus-area.part02.d.ts.map +1 -0
- package/dist/focus-area.part02.js +65 -0
- package/dist/focus-area.part02.js.map +1 -0
- package/dist/focus-area.part03.d.ts +5 -0
- package/dist/focus-area.part03.d.ts.map +1 -0
- package/dist/focus-area.part03.js +42 -0
- package/dist/focus-area.part03.js.map +1 -0
- package/dist/focus-area.part04.d.ts +5 -0
- package/dist/focus-area.part04.d.ts.map +1 -0
- package/dist/focus-area.part04.js +49 -0
- package/dist/focus-area.part04.js.map +1 -0
- package/dist/focus-area.part05.d.ts +10 -0
- package/dist/focus-area.part05.d.ts.map +1 -0
- package/dist/focus-area.part05.js +66 -0
- package/dist/focus-area.part05.js.map +1 -0
- package/dist/focus-area.part06.d.ts +17 -0
- package/dist/focus-area.part06.d.ts.map +1 -0
- package/dist/focus-area.part06.js +48 -0
- package/dist/focus-area.part06.js.map +1 -0
- package/dist/focus-map.d.ts.map +1 -1
- package/dist/focus-map.js +8 -10
- package/dist/focus-map.js.map +1 -1
- package/dist/index.d.ts +8 -80
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -107
- package/dist/index.js.map +1 -1
- package/dist/index.part01.d.ts +15 -0
- package/dist/index.part01.d.ts.map +1 -0
- package/dist/index.part01.js +11 -0
- package/dist/index.part01.js.map +1 -0
- package/dist/index.part02.d.ts +26 -0
- package/dist/index.part02.d.ts.map +1 -0
- package/dist/index.part02.js +24 -0
- package/dist/index.part02.js.map +1 -0
- package/dist/index.part03.d.ts +17 -0
- package/dist/index.part03.d.ts.map +1 -0
- package/dist/index.part03.js +11 -0
- package/dist/index.part03.js.map +1 -0
- package/dist/index.part04.d.ts +6 -0
- package/dist/index.part04.d.ts.map +1 -0
- package/dist/index.part04.js +11 -0
- package/dist/index.part04.js.map +1 -0
- package/dist/index.part05.d.ts +10 -0
- package/dist/index.part05.d.ts.map +1 -0
- package/dist/index.part05.js +26 -0
- package/dist/index.part05.js.map +1 -0
- package/dist/index.part06.d.ts +9 -0
- package/dist/index.part06.d.ts.map +1 -0
- package/dist/index.part06.js +16 -0
- package/dist/index.part06.js.map +1 -0
- package/dist/index.part07.d.ts +8 -0
- package/dist/index.part07.d.ts.map +1 -0
- package/dist/index.part07.js +15 -0
- package/dist/index.part07.js.map +1 -0
- package/dist/index.part08.d.ts +5 -0
- package/dist/index.part08.d.ts.map +1 -0
- package/dist/index.part08.js +9 -0
- package/dist/index.part08.js.map +1 -0
- package/dist/input-map.d.ts.map +1 -1
- package/dist/input-map.js +1 -2
- package/dist/input-map.js.map +1 -1
- package/dist/input-parser.d.ts +3 -0
- package/dist/input-parser.d.ts.map +1 -0
- package/dist/input-parser.js +95 -0
- package/dist/input-parser.js.map +1 -0
- package/dist/input-routing-inspector.js +3 -3
- package/dist/input-routing-inspector.js.map +1 -1
- package/dist/inputstack.d.ts.map +1 -1
- package/dist/inputstack.js +2 -0
- package/dist/inputstack.js.map +1 -1
- package/dist/keybindings.d.ts.map +1 -1
- package/dist/keybindings.js +5 -2
- package/dist/keybindings.js.map +1 -1
- package/dist/keys.d.ts +0 -36
- package/dist/keys.d.ts.map +1 -1
- package/dist/keys.js +11 -66
- package/dist/keys.js.map +1 -1
- package/dist/layout-inspector.d.ts +2 -30
- package/dist/layout-inspector.d.ts.map +1 -1
- package/dist/layout-inspector.js +1 -132
- package/dist/layout-inspector.js.map +1 -1
- package/dist/layout-inspector.part01.d.ts +52 -0
- package/dist/layout-inspector.part01.d.ts.map +1 -0
- package/dist/layout-inspector.part01.js +48 -0
- package/dist/layout-inspector.part01.js.map +1 -0
- package/dist/layout-inspector.part02.d.ts +11 -0
- package/dist/layout-inspector.part02.d.ts.map +1 -0
- package/dist/layout-inspector.part02.js +80 -0
- package/dist/layout-inspector.part02.js.map +1 -0
- package/dist/layout-inspector.part03.d.ts +5 -0
- package/dist/layout-inspector.part03.d.ts.map +1 -0
- package/dist/layout-inspector.part03.js +11 -0
- package/dist/layout-inspector.part03.js.map +1 -0
- package/dist/layout-preset.js +4 -4
- package/dist/layout-preset.js.map +1 -1
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +5 -3
- package/dist/layout.js.map +1 -1
- package/dist/motion/motion.js +8 -4
- package/dist/motion/motion.js.map +1 -1
- package/dist/motion/reconciler.d.ts.map +1 -1
- package/dist/motion/reconciler.js +9 -7
- package/dist/motion/reconciler.js.map +1 -1
- package/dist/mouse-mode.d.ts +5 -0
- package/dist/mouse-mode.d.ts.map +1 -0
- package/dist/mouse-mode.js +17 -0
- package/dist/mouse-mode.js.map +1 -0
- package/dist/navigable-table.d.ts +3 -136
- package/dist/navigable-table.d.ts.map +1 -1
- package/dist/navigable-table.js +2 -234
- package/dist/navigable-table.js.map +1 -1
- package/dist/navigable-table.part01.d.ts +42 -0
- package/dist/navigable-table.part01.d.ts.map +1 -0
- package/dist/navigable-table.part01.js +42 -0
- package/dist/navigable-table.part01.js.map +1 -0
- package/dist/navigable-table.part02.d.ts +16 -0
- package/dist/navigable-table.part02.d.ts.map +1 -0
- package/dist/navigable-table.part02.js +83 -0
- package/dist/navigable-table.part02.js.map +1 -0
- package/dist/notification-card.d.ts +11 -0
- package/dist/notification-card.d.ts.map +1 -0
- package/dist/notification-card.js +157 -0
- package/dist/notification-card.js.map +1 -0
- package/dist/notification-stack.d.ts +6 -0
- package/dist/notification-stack.d.ts.map +1 -0
- package/dist/notification-stack.js +257 -0
- package/dist/notification-stack.js.map +1 -0
- package/dist/notification.d.ts +14 -112
- package/dist/notification.d.ts.map +1 -1
- package/dist/notification.js +12 -1087
- package/dist/notification.js.map +1 -1
- package/dist/notification.part01.d.ts +77 -0
- package/dist/notification.part01.d.ts.map +1 -0
- package/dist/notification.part01.js +19 -0
- package/dist/notification.part01.js.map +1 -0
- package/dist/notification.part02.d.ts +42 -0
- package/dist/notification.part02.d.ts.map +1 -0
- package/dist/notification.part02.js +44 -0
- package/dist/notification.part02.js.map +1 -0
- package/dist/notification.part03.d.ts +6 -0
- package/dist/notification.part03.d.ts.map +1 -0
- package/dist/notification.part03.js +81 -0
- package/dist/notification.part03.js.map +1 -0
- package/dist/notification.part04.d.ts +4 -0
- package/dist/notification.part04.d.ts.map +1 -0
- package/dist/notification.part04.js +32 -0
- package/dist/notification.part04.js.map +1 -0
- package/dist/notification.part05.d.ts +6 -0
- package/dist/notification.part05.d.ts.map +1 -0
- package/dist/notification.part05.js +95 -0
- package/dist/notification.part05.js.map +1 -0
- package/dist/notification.part06.d.ts +9 -0
- package/dist/notification.part06.d.ts.map +1 -0
- package/dist/notification.part06.js +65 -0
- package/dist/notification.part06.js.map +1 -0
- package/dist/notification.part07.d.ts +10 -0
- package/dist/notification.part07.d.ts.map +1 -0
- package/dist/notification.part07.js +70 -0
- package/dist/notification.part07.js.map +1 -0
- package/dist/notification.part08.d.ts +5 -0
- package/dist/notification.part08.d.ts.map +1 -0
- package/dist/notification.part08.js +79 -0
- package/dist/notification.part08.js.map +1 -0
- package/dist/notification.part09.d.ts +14 -0
- package/dist/notification.part09.d.ts.map +1 -0
- package/dist/notification.part09.js +96 -0
- package/dist/notification.part09.js.map +1 -0
- package/dist/notification.part10.d.ts +13 -0
- package/dist/notification.part10.d.ts.map +1 -0
- package/dist/notification.part10.js +94 -0
- package/dist/notification.part10.js.map +1 -0
- package/dist/notification.part11.d.ts +6 -0
- package/dist/notification.part11.d.ts.map +1 -0
- package/dist/notification.part11.js +42 -0
- package/dist/notification.part11.js.map +1 -0
- package/dist/overlay.d.ts +8 -232
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +5 -629
- package/dist/overlay.js.map +1 -1
- package/dist/overlay.part01.d.ts +71 -0
- package/dist/overlay.part01.d.ts.map +1 -0
- package/dist/overlay.part01.js +34 -0
- package/dist/overlay.part01.js.map +1 -0
- package/dist/overlay.part02.d.ts +8 -0
- package/dist/overlay.part02.d.ts.map +1 -0
- package/dist/overlay.part02.js +81 -0
- package/dist/overlay.part02.js.map +1 -0
- package/dist/overlay.part03.d.ts +27 -0
- package/dist/overlay.part03.d.ts.map +1 -0
- package/dist/overlay.part03.js +83 -0
- package/dist/overlay.part03.js.map +1 -0
- package/dist/overlay.part04.d.ts +8 -0
- package/dist/overlay.part04.d.ts.map +1 -0
- package/dist/overlay.part04.js +103 -0
- package/dist/overlay.part04.js.map +1 -0
- package/dist/overlay.part05.d.ts +8 -0
- package/dist/overlay.part05.d.ts.map +1 -0
- package/dist/overlay.part05.js +66 -0
- package/dist/overlay.part05.js.map +1 -0
- package/dist/overlay.part06.d.ts +46 -0
- package/dist/overlay.part06.d.ts.map +1 -0
- package/dist/overlay.part06.js +35 -0
- package/dist/overlay.part06.js.map +1 -0
- package/dist/overlay.part07.d.ts +4 -0
- package/dist/overlay.part07.d.ts.map +1 -0
- package/dist/overlay.part07.js +64 -0
- package/dist/overlay.part07.js.map +1 -0
- package/dist/overlay.part08.d.ts +34 -0
- package/dist/overlay.part08.d.ts.map +1 -0
- package/dist/overlay.part08.js +54 -0
- package/dist/overlay.part08.js.map +1 -0
- package/dist/overlay.part09.d.ts +6 -0
- package/dist/overlay.part09.d.ts.map +1 -0
- package/dist/overlay.part09.js +42 -0
- package/dist/overlay.part09.js.map +1 -0
- package/dist/pager.d.ts.map +1 -1
- package/dist/pager.js +2 -4
- package/dist/pager.js.map +1 -1
- package/dist/panel-dock.d.ts.map +1 -1
- package/dist/panel-dock.js +9 -11
- package/dist/panel-dock.js.map +1 -1
- package/dist/panels.d.ts.map +1 -1
- package/dist/panels.js +2 -0
- package/dist/panels.js.map +1 -1
- package/dist/pipeline/middleware/css.d.ts +3 -5
- package/dist/pipeline/middleware/css.d.ts.map +1 -1
- package/dist/pipeline/middleware/css.js +12 -6
- package/dist/pipeline/middleware/css.js.map +1 -1
- package/dist/pipeline/middleware/grayscale.js +15 -10
- package/dist/pipeline/middleware/grayscale.js.map +1 -1
- package/dist/pipeline/middleware/motion.js +9 -1
- package/dist/pipeline/middleware/motion.js.map +1 -1
- package/dist/pipeline/middleware/paint.js +9 -1
- package/dist/pipeline/middleware/paint.js.map +1 -1
- package/dist/pipeline/middleware/surface-shaders.js +13 -11
- package/dist/pipeline/middleware/surface-shaders.js.map +1 -1
- package/dist/pipeline/pipeline.d.ts +7 -52
- package/dist/pipeline/pipeline.d.ts.map +1 -1
- package/dist/pipeline/pipeline.js +37 -27
- package/dist/pipeline/pipeline.js.map +1 -1
- package/dist/raster-glyph.d.ts +2 -44
- package/dist/raster-glyph.d.ts.map +1 -1
- package/dist/raster-glyph.js +1 -404
- package/dist/raster-glyph.js.map +1 -1
- package/dist/raster-glyph.part01.d.ts +75 -0
- package/dist/raster-glyph.part01.d.ts.map +1 -0
- package/dist/raster-glyph.part01.js +25 -0
- package/dist/raster-glyph.part01.js.map +1 -0
- package/dist/raster-glyph.part02.d.ts +12 -0
- package/dist/raster-glyph.part02.d.ts.map +1 -0
- package/dist/raster-glyph.part02.js +81 -0
- package/dist/raster-glyph.part02.js.map +1 -0
- package/dist/raster-glyph.part03.d.ts +6 -0
- package/dist/raster-glyph.part03.d.ts.map +1 -0
- package/dist/raster-glyph.part03.js +60 -0
- package/dist/raster-glyph.part03.js.map +1 -0
- package/dist/raster-glyph.part04.d.ts +7 -0
- package/dist/raster-glyph.part04.d.ts.map +1 -0
- package/dist/raster-glyph.part04.js +59 -0
- package/dist/raster-glyph.part04.js.map +1 -0
- package/dist/raster-glyph.part05.d.ts +6 -0
- package/dist/raster-glyph.part05.d.ts.map +1 -0
- package/dist/raster-glyph.part05.js +71 -0
- package/dist/raster-glyph.part05.js.map +1 -0
- package/dist/raster-glyph.part06.d.ts +18 -0
- package/dist/raster-glyph.part06.d.ts.map +1 -0
- package/dist/raster-glyph.part06.js +78 -0
- package/dist/raster-glyph.part06.js.map +1 -0
- package/dist/raster-glyph.part07.d.ts +11 -0
- package/dist/raster-glyph.part07.d.ts.map +1 -0
- package/dist/raster-glyph.part07.js +55 -0
- package/dist/raster-glyph.part07.js.map +1 -0
- package/dist/raytrace.d.ts +3 -58
- package/dist/raytrace.d.ts.map +1 -1
- package/dist/raytrace.js +2 -120
- package/dist/raytrace.js.map +1 -1
- package/dist/raytrace.part01.d.ts +47 -0
- package/dist/raytrace.part01.d.ts.map +1 -0
- package/dist/raytrace.part01.js +45 -0
- package/dist/raytrace.part01.js.map +1 -0
- package/dist/raytrace.part02.d.ts +12 -0
- package/dist/raytrace.part02.d.ts.map +1 -0
- package/dist/raytrace.part02.js +73 -0
- package/dist/raytrace.part02.js.map +1 -0
- package/dist/runtime-binding.d.ts +2 -3
- package/dist/runtime-binding.d.ts.map +1 -1
- package/dist/runtime-binding.js +49 -38
- package/dist/runtime-binding.js.map +1 -1
- package/dist/runtime-engine.d.ts +2 -2
- package/dist/runtime-engine.d.ts.map +1 -1
- package/dist/runtime-engine.js +15 -4
- package/dist/runtime-engine.js.map +1 -1
- package/dist/runtime.d.ts +2 -18
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +33 -59
- package/dist/runtime.js.map +1 -1
- package/dist/screen.js +1 -1
- package/dist/screen.js.map +1 -1
- package/dist/shell-quit.d.ts.map +1 -1
- package/dist/shell-quit.js +48 -5
- package/dist/shell-quit.js.map +1 -1
- package/dist/split-pane.d.ts +3 -104
- package/dist/split-pane.d.ts.map +1 -1
- package/dist/split-pane.js +2 -190
- package/dist/split-pane.js.map +1 -1
- package/dist/split-pane.part01.d.ts +60 -0
- package/dist/split-pane.part01.d.ts.map +1 -0
- package/dist/split-pane.part01.js +45 -0
- package/dist/split-pane.part01.js.map +1 -0
- package/dist/split-pane.part02.d.ts +8 -0
- package/dist/split-pane.part02.d.ts.map +1 -0
- package/dist/split-pane.part02.js +73 -0
- package/dist/split-pane.part02.js.map +1 -0
- package/dist/split-pane.part03.d.ts +4 -0
- package/dist/split-pane.part03.d.ts.map +1 -0
- package/dist/split-pane.part03.js +40 -0
- package/dist/split-pane.part03.js.map +1 -0
- package/dist/spring.d.ts +4 -187
- package/dist/spring.d.ts.map +1 -1
- package/dist/spring.js +2 -142
- package/dist/spring.js.map +1 -1
- package/dist/spring.part01.d.ts +90 -0
- package/dist/spring.part01.d.ts.map +1 -0
- package/dist/spring.part01.js +58 -0
- package/dist/spring.part01.js.map +1 -0
- package/dist/spring.part02.d.ts +25 -0
- package/dist/spring.part02.d.ts.map +1 -0
- package/dist/spring.part02.js +21 -0
- package/dist/spring.part02.js.map +1 -0
- package/dist/status-bar.js +1 -1
- package/dist/status-bar.js.map +1 -1
- package/dist/subapp/mount.d.ts +6 -6
- package/dist/subapp/mount.d.ts.map +1 -1
- package/dist/subapp/mount.js +19 -14
- package/dist/subapp/mount.js.map +1 -1
- package/dist/surface-budget-types.d.ts +26 -0
- package/dist/surface-budget-types.d.ts.map +1 -0
- package/dist/surface-budget-types.js +2 -0
- package/dist/surface-budget-types.js.map +1 -0
- package/dist/surface-budget.d.ts +2 -25
- package/dist/surface-budget.d.ts.map +1 -1
- package/dist/surface-budget.js.map +1 -1
- package/dist/surface-diff.js +26 -28
- package/dist/surface-diff.js.map +1 -1
- package/dist/surface-layout.d.ts.map +1 -1
- package/dist/surface-layout.js +1 -2
- package/dist/surface-layout.js.map +1 -1
- package/dist/timeline.d.ts +1 -1
- package/dist/timeline.d.ts.map +1 -1
- package/dist/timeline.js +17 -15
- package/dist/timeline.js.map +1 -1
- package/dist/transition-shaders.d.ts +5 -142
- package/dist/transition-shaders.d.ts.map +1 -1
- package/dist/transition-shaders.js +4 -391
- package/dist/transition-shaders.js.map +1 -1
- package/dist/transition-shaders.part01.d.ts +41 -0
- package/dist/transition-shaders.part01.d.ts.map +1 -0
- package/dist/transition-shaders.part01.js +38 -0
- package/dist/transition-shaders.part01.js.map +1 -0
- package/dist/transition-shaders.part02.d.ts +12 -0
- package/dist/transition-shaders.part02.d.ts.map +1 -0
- package/dist/transition-shaders.part02.js +88 -0
- package/dist/transition-shaders.part02.js.map +1 -0
- package/dist/transition-shaders.part03.d.ts +6 -0
- package/dist/transition-shaders.part03.d.ts.map +1 -0
- package/dist/transition-shaders.part03.js +82 -0
- package/dist/transition-shaders.part03.js.map +1 -0
- package/dist/transition-shaders.part04.d.ts +16 -0
- package/dist/transition-shaders.part04.d.ts.map +1 -0
- package/dist/transition-shaders.part04.js +98 -0
- package/dist/transition-shaders.part04.js.map +1 -0
- package/dist/types.d.ts +10 -42
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +9 -36
- package/dist/types.js.map +1 -1
- package/dist/view-output.d.ts +1 -1
- package/dist/view-output.d.ts.map +1 -1
- package/dist/view-output.js +3 -2
- package/dist/view-output.js.map +1 -1
- package/dist/viewport.d.ts +7 -213
- package/dist/viewport.d.ts.map +1 -1
- package/dist/viewport.js +6 -470
- package/dist/viewport.js.map +1 -1
- package/dist/viewport.part01.d.ts +51 -0
- package/dist/viewport.part01.d.ts.map +1 -0
- package/dist/viewport.part01.js +10 -0
- package/dist/viewport.part01.js.map +1 -0
- package/dist/viewport.part02.d.ts +2 -0
- package/dist/viewport.part02.d.ts.map +1 -0
- package/dist/viewport.part02.js +69 -0
- package/dist/viewport.part02.js.map +1 -0
- package/dist/viewport.part03.d.ts +10 -0
- package/dist/viewport.part03.d.ts.map +1 -0
- package/dist/viewport.part03.js +78 -0
- package/dist/viewport.part03.js.map +1 -0
- package/dist/viewport.part04.d.ts +4 -0
- package/dist/viewport.part04.d.ts.map +1 -0
- package/dist/viewport.part04.js +50 -0
- package/dist/viewport.part04.js.map +1 -0
- package/dist/viewport.part05.d.ts +5 -0
- package/dist/viewport.part05.d.ts.map +1 -0
- package/dist/viewport.part05.js +59 -0
- package/dist/viewport.part05.js.map +1 -0
- package/dist/viewport.part06.d.ts +14 -0
- package/dist/viewport.part06.d.ts.map +1 -0
- package/dist/viewport.part06.js +58 -0
- package/dist/viewport.part06.js.map +1 -0
- package/package.json +3 -3
package/dist/shell-quit.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { resolveSafeCtx, stringToSurface } from '@flyingrobots/bijou';
|
|
1
|
+
import { createSurface, graphemeClusterWidth, resolveSafeCtx, segmentGraphemes, stringToSurface, } from '@flyingrobots/bijou';
|
|
2
2
|
import { modal } from './overlay.js';
|
|
3
3
|
import { frameMessage } from './app-frame-i18n.js';
|
|
4
4
|
export function resolveShellQuitPolicy(ctx) {
|
|
@@ -28,18 +28,61 @@ export function isShellQuitConfirmDismiss(msg) {
|
|
|
28
28
|
return true;
|
|
29
29
|
return !msg.shift && (msg.key === 'escape' || msg.key === 'q');
|
|
30
30
|
}
|
|
31
|
+
function textWidth(text) {
|
|
32
|
+
return segmentGraphemes(text).reduce((width, grapheme) => width + Math.max(1, graphemeClusterWidth(grapheme)), 0);
|
|
33
|
+
}
|
|
34
|
+
function writeHintText(surface, x, text, style) {
|
|
35
|
+
let cursor = x;
|
|
36
|
+
for (const grapheme of segmentGraphemes(text)) {
|
|
37
|
+
const width = Math.max(1, graphemeClusterWidth(grapheme));
|
|
38
|
+
surface.set(cursor, 0, { char: grapheme, ...style, empty: false });
|
|
39
|
+
for (let offset = 1; offset < width; offset++) {
|
|
40
|
+
surface.set(cursor + offset, 0, { char: '', ...style, empty: false });
|
|
41
|
+
}
|
|
42
|
+
cursor += width;
|
|
43
|
+
}
|
|
44
|
+
return cursor;
|
|
45
|
+
}
|
|
46
|
+
function renderQuitHintSurface(i18n, ctx) {
|
|
47
|
+
const quitLabel = frameMessage(i18n, 'help.key.quit', 'Quit');
|
|
48
|
+
const stayLabel = frameMessage(i18n, 'help.key.stay', 'Stay');
|
|
49
|
+
const text = `Y ${quitLabel} • N ${stayLabel}`;
|
|
50
|
+
const surface = createSurface(textWidth(text), 1);
|
|
51
|
+
const keyStyle = {
|
|
52
|
+
fg: ctx?.semantic('accent').hex,
|
|
53
|
+
fgRGB: ctx?.semantic('accent').fgRGB,
|
|
54
|
+
modifiers: ['bold'],
|
|
55
|
+
};
|
|
56
|
+
const actionStyle = {
|
|
57
|
+
fg: ctx?.semantic('primary').hex,
|
|
58
|
+
fgRGB: ctx?.semantic('primary').fgRGB,
|
|
59
|
+
modifiers: ['bold'],
|
|
60
|
+
};
|
|
61
|
+
const mutedStyle = {
|
|
62
|
+
fg: ctx?.semantic('muted').hex,
|
|
63
|
+
fgRGB: ctx?.semantic('muted').fgRGB,
|
|
64
|
+
};
|
|
65
|
+
let x = 0;
|
|
66
|
+
x = writeHintText(surface, x, 'Y', keyStyle);
|
|
67
|
+
x = writeHintText(surface, x, ` ${quitLabel}`, actionStyle);
|
|
68
|
+
x = writeHintText(surface, x, ' • ', mutedStyle);
|
|
69
|
+
x = writeHintText(surface, x, 'N', keyStyle);
|
|
70
|
+
writeHintText(surface, x, ` ${stayLabel}`, actionStyle);
|
|
71
|
+
return surface;
|
|
72
|
+
}
|
|
31
73
|
export function renderShellQuitOverlay(screenWidth, screenHeight, i18n, ctx) {
|
|
32
74
|
const title = frameMessage(i18n, 'quit.title', 'Quit?');
|
|
33
75
|
const bodyText = frameMessage(i18n, 'quit.body', 'Quit this app?');
|
|
34
|
-
const
|
|
76
|
+
const modalWidth = Math.min(40, Math.max(8, screenWidth - 4));
|
|
77
|
+
const bodyWidth = Math.max(0, modalWidth - 4);
|
|
35
78
|
return modal({
|
|
36
79
|
title,
|
|
37
|
-
body: stringToSurface(bodyText,
|
|
38
|
-
hint,
|
|
80
|
+
body: stringToSurface(bodyText, bodyWidth, 1),
|
|
81
|
+
hint: renderQuitHintSurface(i18n, ctx),
|
|
39
82
|
borderToken: ctx?.border('primary'),
|
|
40
83
|
bgToken: ctx?.surface('elevated'),
|
|
41
84
|
ctx,
|
|
42
|
-
width:
|
|
85
|
+
width: modalWidth,
|
|
43
86
|
screenWidth,
|
|
44
87
|
screenHeight,
|
|
45
88
|
});
|
package/dist/shell-quit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-quit.js","sourceRoot":"","sources":["../src/shell-quit.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"shell-quit.js","sourceRoot":"","sources":["../src/shell-quit.ts"],"names":[],"mappings":"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"}
|
package/dist/split-pane.d.ts
CHANGED
|
@@ -1,105 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* Stateful ratio + focus model with pure reducers and deterministic layout
|
|
5
|
-
* solving for horizontal (`row`) and vertical (`column`) splits.
|
|
6
|
-
*/
|
|
7
|
-
import type { LayoutRect } from './layout-rect.js';
|
|
8
|
-
import { type SplitLayoutDirection, type Surface, type WritePort } from '@flyingrobots/bijou';
|
|
9
|
-
/** Split direction. */
|
|
10
|
-
export type SplitPaneDirection = SplitLayoutDirection;
|
|
11
|
-
/** Focused pane identifier. */
|
|
12
|
-
export type SplitPaneFocus = 'a' | 'b';
|
|
13
|
-
/** Immutable split pane state. */
|
|
14
|
-
export interface SplitPaneState {
|
|
15
|
-
/** Relative size of pane A in the range `[0, 1]`. */
|
|
16
|
-
readonly ratio: number;
|
|
17
|
-
/** Currently focused pane. */
|
|
18
|
-
readonly focused: SplitPaneFocus;
|
|
19
|
-
}
|
|
20
|
-
/** Solved pane and divider rectangles. */
|
|
21
|
-
export interface SplitPaneLayout {
|
|
22
|
-
/** Rectangle for pane A. */
|
|
23
|
-
readonly paneA: LayoutRect;
|
|
24
|
-
/** Rectangle for pane B. */
|
|
25
|
-
readonly paneB: LayoutRect;
|
|
26
|
-
/** Rectangle for divider area between panes. */
|
|
27
|
-
readonly divider: LayoutRect;
|
|
28
|
-
}
|
|
29
|
-
/** Options for rendering split panes. */
|
|
30
|
-
export interface SplitPaneOptions {
|
|
31
|
-
/** Split direction. Default: `'row'`. */
|
|
32
|
-
readonly direction?: SplitPaneDirection;
|
|
33
|
-
/** Total available width. */
|
|
34
|
-
readonly width: number;
|
|
35
|
-
/** Total available height. */
|
|
36
|
-
readonly height: number;
|
|
37
|
-
/** Minimum size for pane A in the main axis. Default: 0. */
|
|
38
|
-
readonly minA?: number;
|
|
39
|
-
/** Minimum size for pane B in the main axis. Default: 0. */
|
|
40
|
-
readonly minB?: number;
|
|
41
|
-
/** Divider thickness in the main axis. Default: 1. */
|
|
42
|
-
readonly dividerSize?: number;
|
|
43
|
-
/** Divider character (single terminal column). Default: `│` or `─` based on direction. */
|
|
44
|
-
readonly dividerChar?: string;
|
|
45
|
-
/** Pane A renderer. */
|
|
46
|
-
readonly paneA: (width: number, height: number) => string;
|
|
47
|
-
/** Pane B renderer. */
|
|
48
|
-
readonly paneB: (width: number, height: number) => string;
|
|
49
|
-
}
|
|
50
|
-
/** Options for rendering split panes from structured surfaces. */
|
|
51
|
-
export interface SplitPaneSurfaceOptions extends Omit<SplitPaneOptions, 'paneA' | 'paneB'> {
|
|
52
|
-
/** Pane A renderer. */
|
|
53
|
-
readonly paneA: (width: number, height: number) => Surface;
|
|
54
|
-
/** Pane B renderer. */
|
|
55
|
-
readonly paneB: (width: number, height: number) => Surface;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Create split-pane state.
|
|
59
|
-
*
|
|
60
|
-
* @param options - Optional initial ratio, focus, and warning output.
|
|
61
|
-
* @param options.io - Optional `WritePort` for developer warnings. When omitted, warnings are silently skipped.
|
|
62
|
-
*/
|
|
63
|
-
export declare function createSplitPaneState(options?: {
|
|
64
|
-
ratio?: number;
|
|
65
|
-
focused?: SplitPaneFocus;
|
|
66
|
-
io?: WritePort;
|
|
67
|
-
}): SplitPaneState;
|
|
68
|
-
/**
|
|
69
|
-
* Update split ratio directly (clamped to `[0, 1]`).
|
|
70
|
-
*/
|
|
71
|
-
export declare function splitPaneSetRatio(state: SplitPaneState, ratio: number): SplitPaneState;
|
|
72
|
-
/**
|
|
73
|
-
* Resize pane A by `delta` main-axis units and derive the new ratio.
|
|
74
|
-
*/
|
|
75
|
-
export declare function splitPaneResizeBy(state: SplitPaneState, delta: number, limits: {
|
|
76
|
-
total: number;
|
|
77
|
-
minA?: number;
|
|
78
|
-
minB?: number;
|
|
79
|
-
dividerSize?: number;
|
|
80
|
-
}): SplitPaneState;
|
|
81
|
-
/**
|
|
82
|
-
* Toggle focus between pane A and pane B.
|
|
83
|
-
*/
|
|
84
|
-
export declare function splitPaneToggleFocus(state: SplitPaneState): SplitPaneState;
|
|
85
|
-
/**
|
|
86
|
-
* Focus the next pane (equivalent to toggle for a 2-pane split).
|
|
87
|
-
*/
|
|
88
|
-
export declare function splitPaneFocusNext(state: SplitPaneState): SplitPaneState;
|
|
89
|
-
/**
|
|
90
|
-
* Focus the previous pane (equivalent to toggle for a 2-pane split).
|
|
91
|
-
*/
|
|
92
|
-
export declare function splitPaneFocusPrev(state: SplitPaneState): SplitPaneState;
|
|
93
|
-
/**
|
|
94
|
-
* Solve split-pane geometry for the provided bounds.
|
|
95
|
-
*/
|
|
96
|
-
export declare function splitPaneLayout(state: SplitPaneState, options: Omit<SplitPaneOptions, 'paneA' | 'paneB'>): SplitPaneLayout;
|
|
97
|
-
/**
|
|
98
|
-
* Render a split-pane view string.
|
|
99
|
-
*/
|
|
100
|
-
export declare function splitPane(state: SplitPaneState, options: SplitPaneOptions): string;
|
|
101
|
-
/**
|
|
102
|
-
* Render a split-pane surface.
|
|
103
|
-
*/
|
|
104
|
-
export declare function splitPaneSurface(state: SplitPaneState, options: SplitPaneSurfaceOptions): Surface;
|
|
1
|
+
export { createSplitPaneState, splitPaneFocusNext, splitPaneFocusPrev, splitPaneResizeBy, splitPaneSetRatio, splitPaneToggleFocus } from './split-pane.part01.js';
|
|
2
|
+
export type { SplitPaneDirection, SplitPaneFocus, SplitPaneLayout, SplitPaneOptions, SplitPaneState, SplitPaneSurfaceOptions } from './split-pane.part01.js';
|
|
3
|
+
export { splitPane, splitPaneLayout, splitPaneSurface } from './split-pane.part02.js';
|
|
105
4
|
//# sourceMappingURL=split-pane.d.ts.map
|
package/dist/split-pane.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split-pane.d.ts","sourceRoot":"","sources":["../src/split-pane.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"split-pane.d.ts","sourceRoot":"","sources":["../src/split-pane.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAClK,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC7J,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/split-pane.js
CHANGED
|
@@ -1,191 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* Stateful ratio + focus model with pure reducers and deterministic layout
|
|
5
|
-
* solving for horizontal (`row`) and vertical (`column`) splits.
|
|
6
|
-
*/
|
|
7
|
-
import { fitBlock } from './layout-utils.js';
|
|
8
|
-
import { createSurface, graphemeClusterWidth, graphemeWidth, sanitizeNonNegativeInt, solveSplitAxisSizes, solveSplitPaneRects, segmentGraphemes, } from '@flyingrobots/bijou';
|
|
9
|
-
import { placeSurface } from './surface-layout.js';
|
|
10
|
-
/**
|
|
11
|
-
* Create split-pane state.
|
|
12
|
-
*
|
|
13
|
-
* @param options - Optional initial ratio, focus, and warning output.
|
|
14
|
-
* @param options.io - Optional `WritePort` for developer warnings. When omitted, warnings are silently skipped.
|
|
15
|
-
*/
|
|
16
|
-
export function createSplitPaneState(options) {
|
|
17
|
-
if (options?.ratio != null && !Number.isFinite(options.ratio)) {
|
|
18
|
-
warnInvalidRatio(options.ratio, options.io);
|
|
19
|
-
}
|
|
20
|
-
return {
|
|
21
|
-
ratio: clampRatio(options?.ratio ?? 0.5),
|
|
22
|
-
focused: options?.focused ?? 'a',
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Update split ratio directly (clamped to `[0, 1]`).
|
|
27
|
-
*/
|
|
28
|
-
export function splitPaneSetRatio(state, ratio) {
|
|
29
|
-
return { ...state, ratio: clampRatio(ratio) };
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Resize pane A by `delta` main-axis units and derive the new ratio.
|
|
33
|
-
*/
|
|
34
|
-
export function splitPaneResizeBy(state, delta, limits) {
|
|
35
|
-
const safeDelta = Number.isFinite(delta) ? Math.trunc(delta) : 0;
|
|
36
|
-
const dividerSize = sanitizeNonNegativeInt(limits.dividerSize, 1);
|
|
37
|
-
const total = sanitizeNonNegativeInt(limits.total, 0);
|
|
38
|
-
const available = Math.max(0, total - dividerSize);
|
|
39
|
-
if (available <= 0)
|
|
40
|
-
return { ...state, ratio: 0 };
|
|
41
|
-
const minA = sanitizeNonNegativeInt(limits.minA, 0);
|
|
42
|
-
const minB = sanitizeNonNegativeInt(limits.minB, 0);
|
|
43
|
-
const { paneA: currA } = solveSplitAxisSizes({
|
|
44
|
-
available,
|
|
45
|
-
ratio: state.ratio,
|
|
46
|
-
minA,
|
|
47
|
-
minB,
|
|
48
|
-
});
|
|
49
|
-
const maxA = Math.max(0, available - Math.min(minB, available));
|
|
50
|
-
const clampedMinA = Math.min(minA, maxA);
|
|
51
|
-
const nextA = clamp(currA + safeDelta, clampedMinA, maxA);
|
|
52
|
-
return { ...state, ratio: nextA / available };
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Toggle focus between pane A and pane B.
|
|
56
|
-
*/
|
|
57
|
-
export function splitPaneToggleFocus(state) {
|
|
58
|
-
return { ...state, focused: state.focused === 'a' ? 'b' : 'a' };
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Focus the next pane (equivalent to toggle for a 2-pane split).
|
|
62
|
-
*/
|
|
63
|
-
export function splitPaneFocusNext(state) {
|
|
64
|
-
return splitPaneToggleFocus(state);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Focus the previous pane (equivalent to toggle for a 2-pane split).
|
|
68
|
-
*/
|
|
69
|
-
export function splitPaneFocusPrev(state) {
|
|
70
|
-
return splitPaneToggleFocus(state);
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Solve split-pane geometry for the provided bounds.
|
|
74
|
-
*/
|
|
75
|
-
export function splitPaneLayout(state, options) {
|
|
76
|
-
const layout = solveSplitPaneRects({
|
|
77
|
-
direction: options.direction,
|
|
78
|
-
width: options.width,
|
|
79
|
-
height: options.height,
|
|
80
|
-
ratio: state.ratio,
|
|
81
|
-
minA: options.minA,
|
|
82
|
-
minB: options.minB,
|
|
83
|
-
dividerSize: options.dividerSize,
|
|
84
|
-
});
|
|
85
|
-
return {
|
|
86
|
-
paneA: { row: layout.paneA.y, col: layout.paneA.x, width: layout.paneA.width, height: layout.paneA.height },
|
|
87
|
-
divider: { row: layout.divider.y, col: layout.divider.x, width: layout.divider.width, height: layout.divider.height },
|
|
88
|
-
paneB: { row: layout.paneB.y, col: layout.paneB.x, width: layout.paneB.width, height: layout.paneB.height },
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Render a split-pane view string.
|
|
93
|
-
*/
|
|
94
|
-
export function splitPane(state, options) {
|
|
95
|
-
const direction = options.direction ?? 'row';
|
|
96
|
-
const fallbackDividerChar = direction === 'row' ? '│' : '─';
|
|
97
|
-
const dividerUnit = resolveDividerChar(options.dividerChar, fallbackDividerChar);
|
|
98
|
-
const layout = splitPaneLayout(state, options);
|
|
99
|
-
const aLines = fitBlock(options.paneA(layout.paneA.width, layout.paneA.height), layout.paneA.width, layout.paneA.height);
|
|
100
|
-
const bLines = fitBlock(options.paneB(layout.paneB.width, layout.paneB.height), layout.paneB.width, layout.paneB.height);
|
|
101
|
-
if (direction === 'row') {
|
|
102
|
-
const dividerLine = repeatToWidth(dividerUnit, Math.max(0, layout.divider.width));
|
|
103
|
-
const lines = [];
|
|
104
|
-
for (let r = 0; r < layout.paneA.height; r++) {
|
|
105
|
-
lines.push((aLines[r] ?? '') + dividerLine + (bLines[r] ?? ''));
|
|
106
|
-
}
|
|
107
|
-
return lines.join('\n');
|
|
108
|
-
}
|
|
109
|
-
const dividerLines = Array.from({ length: layout.divider.height }, () => repeatToWidth(dividerUnit, Math.max(0, layout.divider.width)));
|
|
110
|
-
return [...aLines, ...dividerLines, ...bLines].join('\n');
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Render a split-pane surface.
|
|
114
|
-
*/
|
|
115
|
-
export function splitPaneSurface(state, options) {
|
|
116
|
-
const width = sanitizeNonNegativeInt(options.width, 0);
|
|
117
|
-
const height = sanitizeNonNegativeInt(options.height, 0);
|
|
118
|
-
if (width === 0 || height === 0)
|
|
119
|
-
return createSurface(0, 0);
|
|
120
|
-
const direction = options.direction ?? 'row';
|
|
121
|
-
const fallbackDividerChar = direction === 'row' ? '│' : '─';
|
|
122
|
-
const dividerUnit = resolveDividerChar(options.dividerChar, fallbackDividerChar);
|
|
123
|
-
const layout = splitPaneLayout(state, options);
|
|
124
|
-
const result = createSurface(width, height);
|
|
125
|
-
const paneA = placeSurface(options.paneA(layout.paneA.width, layout.paneA.height), {
|
|
126
|
-
width: layout.paneA.width,
|
|
127
|
-
height: layout.paneA.height,
|
|
128
|
-
});
|
|
129
|
-
const paneB = placeSurface(options.paneB(layout.paneB.width, layout.paneB.height), {
|
|
130
|
-
width: layout.paneB.width,
|
|
131
|
-
height: layout.paneB.height,
|
|
132
|
-
});
|
|
133
|
-
result.blit(paneA, layout.paneA.col, layout.paneA.row, 0, 0, layout.paneA.width, layout.paneA.height);
|
|
134
|
-
result.blit(paneB, layout.paneB.col, layout.paneB.row, 0, 0, layout.paneB.width, layout.paneB.height);
|
|
135
|
-
if (layout.divider.width > 0 && layout.divider.height > 0) {
|
|
136
|
-
const divider = createSurface(layout.divider.width, layout.divider.height, { char: dividerUnit, empty: false });
|
|
137
|
-
result.blit(divider, layout.divider.col, layout.divider.row, 0, 0, layout.divider.width, layout.divider.height);
|
|
138
|
-
}
|
|
139
|
-
return result;
|
|
140
|
-
}
|
|
141
|
-
/** Normalize a ratio to the 0–1 range, defaulting non-finite values to 0.5. */
|
|
142
|
-
function clampRatio(ratio) {
|
|
143
|
-
if (!Number.isFinite(ratio))
|
|
144
|
-
return 0.5;
|
|
145
|
-
return clamp(ratio, 0, 1);
|
|
146
|
-
}
|
|
147
|
-
/** Log a dev-mode warning when a non-finite ratio is supplied. */
|
|
148
|
-
function warnInvalidRatio(ratio, io) {
|
|
149
|
-
io?.writeError(`[bijou-tui] createSplitPaneState(): received non-finite ratio "${String(ratio)}"; falling back to 0.5.\n`);
|
|
150
|
-
}
|
|
151
|
-
/** Pick a single-width grapheme from the divider string, falling back to a default. */
|
|
152
|
-
function resolveDividerChar(dividerChar, fallback) {
|
|
153
|
-
if (dividerChar == null || dividerChar.length === 0)
|
|
154
|
-
return fallback;
|
|
155
|
-
const graphemes = segmentGraphemes(dividerChar);
|
|
156
|
-
if (graphemes.length === 0)
|
|
157
|
-
return fallback;
|
|
158
|
-
if (graphemes.length === 1 && graphemeClusterWidth(graphemes[0]) === 1) {
|
|
159
|
-
return graphemes[0];
|
|
160
|
-
}
|
|
161
|
-
for (const grapheme of graphemes) {
|
|
162
|
-
if (graphemeClusterWidth(grapheme) === 1)
|
|
163
|
-
return grapheme;
|
|
164
|
-
}
|
|
165
|
-
return fallback;
|
|
166
|
-
}
|
|
167
|
-
/** Repeat a grapheme unit to fill exactly `targetWidth` columns, padding with spaces if needed. */
|
|
168
|
-
function repeatToWidth(unit, targetWidth) {
|
|
169
|
-
const width = Math.max(0, targetWidth);
|
|
170
|
-
if (width === 0)
|
|
171
|
-
return '';
|
|
172
|
-
const unitWidth = graphemeWidth(unit);
|
|
173
|
-
if (unitWidth <= 0)
|
|
174
|
-
return ' '.repeat(width);
|
|
175
|
-
if (unitWidth === 1)
|
|
176
|
-
return unit.repeat(width);
|
|
177
|
-
let out = '';
|
|
178
|
-
let remaining = width;
|
|
179
|
-
while (remaining >= unitWidth) {
|
|
180
|
-
out += unit;
|
|
181
|
-
remaining -= unitWidth;
|
|
182
|
-
}
|
|
183
|
-
if (remaining > 0)
|
|
184
|
-
out += ' '.repeat(remaining);
|
|
185
|
-
return out;
|
|
186
|
-
}
|
|
187
|
-
/** Clamp a number between min and max. */
|
|
188
|
-
function clamp(value, min, max) {
|
|
189
|
-
return Math.max(min, Math.min(max, value));
|
|
190
|
-
}
|
|
1
|
+
export { createSplitPaneState, splitPaneFocusNext, splitPaneFocusPrev, splitPaneResizeBy, splitPaneSetRatio, splitPaneToggleFocus } from './split-pane.part01.js';
|
|
2
|
+
export { splitPane, splitPaneLayout, splitPaneSurface } from './split-pane.part02.js';
|
|
191
3
|
//# sourceMappingURL=split-pane.js.map
|
package/dist/split-pane.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split-pane.js","sourceRoot":"","sources":["../src/split-pane.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"split-pane.js","sourceRoot":"","sources":["../src/split-pane.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAElK,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { LayoutRect } from './layout-rect.js';
|
|
2
|
+
import type { SplitLayoutDirection, Surface, WritePort } from '@flyingrobots/bijou';
|
|
3
|
+
export type SplitPaneDirection = SplitLayoutDirection;
|
|
4
|
+
export type SplitPaneFocus = 'a' | 'b';
|
|
5
|
+
export interface SplitPaneState {
|
|
6
|
+
/** Relative size of pane A in the range `[0, 1]`. */
|
|
7
|
+
readonly ratio: number;
|
|
8
|
+
/** Currently focused pane. */
|
|
9
|
+
readonly focused: SplitPaneFocus;
|
|
10
|
+
}
|
|
11
|
+
export interface SplitPaneLayout {
|
|
12
|
+
/** Rectangle for pane A. */
|
|
13
|
+
readonly paneA: LayoutRect;
|
|
14
|
+
/** Rectangle for pane B. */
|
|
15
|
+
readonly paneB: LayoutRect;
|
|
16
|
+
/** Rectangle for divider area between panes. */
|
|
17
|
+
readonly divider: LayoutRect;
|
|
18
|
+
}
|
|
19
|
+
export interface SplitPaneOptions {
|
|
20
|
+
/** Split direction. Default: `'row'`. */
|
|
21
|
+
readonly direction?: SplitPaneDirection;
|
|
22
|
+
/** Total available width. */
|
|
23
|
+
readonly width: number;
|
|
24
|
+
/** Total available height. */
|
|
25
|
+
readonly height: number;
|
|
26
|
+
/** Minimum size for pane A in the main axis. Default: 0. */
|
|
27
|
+
readonly minA?: number;
|
|
28
|
+
/** Minimum size for pane B in the main axis. Default: 0. */
|
|
29
|
+
readonly minB?: number;
|
|
30
|
+
/** Divider thickness in the main axis. Default: 1. */
|
|
31
|
+
readonly dividerSize?: number;
|
|
32
|
+
/** Divider character (single terminal column). Default: `│` or `─` based on direction. */
|
|
33
|
+
readonly dividerChar?: string;
|
|
34
|
+
/** Pane A renderer. */
|
|
35
|
+
readonly paneA: (width: number, height: number) => string;
|
|
36
|
+
/** Pane B renderer. */
|
|
37
|
+
readonly paneB: (width: number, height: number) => string;
|
|
38
|
+
}
|
|
39
|
+
export interface SplitPaneSurfaceOptions extends Omit<SplitPaneOptions, 'paneA' | 'paneB'> {
|
|
40
|
+
/** Pane A renderer. */
|
|
41
|
+
readonly paneA: (width: number, height: number) => Surface;
|
|
42
|
+
/** Pane B renderer. */
|
|
43
|
+
readonly paneB: (width: number, height: number) => Surface;
|
|
44
|
+
}
|
|
45
|
+
export declare function createSplitPaneState(options?: {
|
|
46
|
+
ratio?: number;
|
|
47
|
+
focused?: SplitPaneFocus;
|
|
48
|
+
io?: WritePort;
|
|
49
|
+
}): SplitPaneState;
|
|
50
|
+
export declare function splitPaneSetRatio(state: SplitPaneState, ratio: number): SplitPaneState;
|
|
51
|
+
export declare function splitPaneResizeBy(state: SplitPaneState, delta: number, limits: {
|
|
52
|
+
total: number;
|
|
53
|
+
minA?: number;
|
|
54
|
+
minB?: number;
|
|
55
|
+
dividerSize?: number;
|
|
56
|
+
}): SplitPaneState;
|
|
57
|
+
export declare function splitPaneToggleFocus(state: SplitPaneState): SplitPaneState;
|
|
58
|
+
export declare function splitPaneFocusNext(state: SplitPaneState): SplitPaneState;
|
|
59
|
+
export declare function splitPaneFocusPrev(state: SplitPaneState): SplitPaneState;
|
|
60
|
+
//# sourceMappingURL=split-pane.part01.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-pane.part01.d.ts","sourceRoot":"","sources":["../src/split-pane.part01.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,OAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKpF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AACtD,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,GAAG,CAAC;AACvC,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AACD,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B;AACD,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IACxC,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB;IACvB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,uBAAuB;IACvB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3D;AACD,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC;IACxF,uBAAuB;IACvB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3D,uBAAuB;IACvB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5D;AACD,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IAAC,EAAE,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,cAAc,CAS3H;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAEtF;AACD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,cAAc,CAoBhB;AACD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAE1E;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAExE;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAExE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { sanitizeNonNegativeInt, solveSplitAxisSizes } from '@flyingrobots/bijou';
|
|
2
|
+
import { clampRatio, warnInvalidRatio } from './split-pane.part02.js';
|
|
3
|
+
import { clamp } from './split-pane.part03.js';
|
|
4
|
+
export function createSplitPaneState(options) {
|
|
5
|
+
if (options?.ratio != null && !Number.isFinite(options.ratio)) {
|
|
6
|
+
warnInvalidRatio(options.ratio, options.io);
|
|
7
|
+
}
|
|
8
|
+
return {
|
|
9
|
+
ratio: clampRatio(options?.ratio ?? 0.5),
|
|
10
|
+
focused: options?.focused ?? 'a',
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function splitPaneSetRatio(state, ratio) {
|
|
14
|
+
return { ...state, ratio: clampRatio(ratio) };
|
|
15
|
+
}
|
|
16
|
+
export function splitPaneResizeBy(state, delta, limits) {
|
|
17
|
+
const safeDelta = Number.isFinite(delta) ? Math.trunc(delta) : 0;
|
|
18
|
+
const dividerSize = sanitizeNonNegativeInt(limits.dividerSize, 1);
|
|
19
|
+
const total = sanitizeNonNegativeInt(limits.total, 0);
|
|
20
|
+
const available = Math.max(0, total - dividerSize);
|
|
21
|
+
if (available <= 0)
|
|
22
|
+
return { ...state, ratio: 0 };
|
|
23
|
+
const minA = sanitizeNonNegativeInt(limits.minA, 0);
|
|
24
|
+
const minB = sanitizeNonNegativeInt(limits.minB, 0);
|
|
25
|
+
const { paneA: currA } = solveSplitAxisSizes({
|
|
26
|
+
available,
|
|
27
|
+
ratio: state.ratio,
|
|
28
|
+
minA,
|
|
29
|
+
minB,
|
|
30
|
+
});
|
|
31
|
+
const maxA = Math.max(0, available - Math.min(minB, available));
|
|
32
|
+
const clampedMinA = Math.min(minA, maxA);
|
|
33
|
+
const nextA = clamp(currA + safeDelta, clampedMinA, maxA);
|
|
34
|
+
return { ...state, ratio: nextA / available };
|
|
35
|
+
}
|
|
36
|
+
export function splitPaneToggleFocus(state) {
|
|
37
|
+
return { ...state, focused: state.focused === 'a' ? 'b' : 'a' };
|
|
38
|
+
}
|
|
39
|
+
export function splitPaneFocusNext(state) {
|
|
40
|
+
return splitPaneToggleFocus(state);
|
|
41
|
+
}
|
|
42
|
+
export function splitPaneFocusPrev(state) {
|
|
43
|
+
return splitPaneToggleFocus(state);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=split-pane.part01.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-pane.part01.js","sourceRoot":"","sources":["../src/split-pane.part01.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAIlF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AA2C/C,MAAM,UAAU,oBAAoB,CAAC,OAAsE;IACzG,IAAI,OAAO,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC;QACxC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG;KACjC,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,KAAqB,EAAE,KAAa;IACpE,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;AAChD,CAAC;AACD,MAAM,UAAU,iBAAiB,CAC/B,KAAqB,EACrB,KAAa,EACb,MAA6E;IAE7E,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,sBAAsB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;IACnD,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAElD,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC;QAC3C,SAAS;QACT,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC1D,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,CAAC;AAChD,CAAC;AACD,MAAM,UAAU,oBAAoB,CAAC,KAAqB;IACxD,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAClE,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,KAAqB;IACtD,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,KAAqB;IACtD,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Surface, WritePort } from '@flyingrobots/bijou';
|
|
2
|
+
import type { SplitPaneLayout, SplitPaneOptions, SplitPaneState, SplitPaneSurfaceOptions } from './split-pane.part01.js';
|
|
3
|
+
export declare function splitPaneLayout(state: SplitPaneState, options: Omit<SplitPaneOptions, 'paneA' | 'paneB'>): SplitPaneLayout;
|
|
4
|
+
export declare function splitPane(state: SplitPaneState, options: SplitPaneOptions): string;
|
|
5
|
+
export declare function splitPaneSurface(state: SplitPaneState, options: SplitPaneSurfaceOptions): Surface;
|
|
6
|
+
export declare function clampRatio(ratio: number): number;
|
|
7
|
+
export declare function warnInvalidRatio(ratio: number, io?: WritePort): void;
|
|
8
|
+
//# sourceMappingURL=split-pane.part02.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-pane.part02.d.ts","sourceRoot":"","sources":["../src/split-pane.part02.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAI9D,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGzH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,GACjD,eAAe,CAgBjB;AACD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAuBlF;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CA6BjG;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,GAAG,IAAI,CAIpE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { fitBlock } from './layout-utils.js';
|
|
2
|
+
import { createSurface, sanitizeNonNegativeInt, solveSplitPaneRects } from '@flyingrobots/bijou';
|
|
3
|
+
import { placeSurface } from './surface-layout.js';
|
|
4
|
+
import { clamp, repeatToWidth, resolveDividerChar } from './split-pane.part03.js';
|
|
5
|
+
export function splitPaneLayout(state, options) {
|
|
6
|
+
const layout = solveSplitPaneRects({
|
|
7
|
+
direction: options.direction,
|
|
8
|
+
width: options.width,
|
|
9
|
+
height: options.height,
|
|
10
|
+
ratio: state.ratio,
|
|
11
|
+
minA: options.minA,
|
|
12
|
+
minB: options.minB,
|
|
13
|
+
dividerSize: options.dividerSize,
|
|
14
|
+
});
|
|
15
|
+
return {
|
|
16
|
+
paneA: { row: layout.paneA.y, col: layout.paneA.x, width: layout.paneA.width, height: layout.paneA.height },
|
|
17
|
+
divider: { row: layout.divider.y, col: layout.divider.x, width: layout.divider.width, height: layout.divider.height },
|
|
18
|
+
paneB: { row: layout.paneB.y, col: layout.paneB.x, width: layout.paneB.width, height: layout.paneB.height },
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function splitPane(state, options) {
|
|
22
|
+
const direction = options.direction ?? 'row';
|
|
23
|
+
const fallbackDividerChar = direction === 'row' ? '│' : '─';
|
|
24
|
+
const dividerUnit = resolveDividerChar(options.dividerChar, fallbackDividerChar);
|
|
25
|
+
const layout = splitPaneLayout(state, options);
|
|
26
|
+
const aLines = fitBlock(options.paneA(layout.paneA.width, layout.paneA.height), layout.paneA.width, layout.paneA.height);
|
|
27
|
+
const bLines = fitBlock(options.paneB(layout.paneB.width, layout.paneB.height), layout.paneB.width, layout.paneB.height);
|
|
28
|
+
if (direction === 'row') {
|
|
29
|
+
const dividerLine = repeatToWidth(dividerUnit, Math.max(0, layout.divider.width));
|
|
30
|
+
const lines = [];
|
|
31
|
+
for (let r = 0; r < layout.paneA.height; r++) {
|
|
32
|
+
lines.push((aLines[r] ?? '') + dividerLine + (bLines[r] ?? ''));
|
|
33
|
+
}
|
|
34
|
+
return lines.join('\n');
|
|
35
|
+
}
|
|
36
|
+
const dividerLines = Array.from({ length: layout.divider.height }, () => repeatToWidth(dividerUnit, Math.max(0, layout.divider.width)));
|
|
37
|
+
return [...aLines, ...dividerLines, ...bLines].join('\n');
|
|
38
|
+
}
|
|
39
|
+
export function splitPaneSurface(state, options) {
|
|
40
|
+
const width = sanitizeNonNegativeInt(options.width, 0);
|
|
41
|
+
const height = sanitizeNonNegativeInt(options.height, 0);
|
|
42
|
+
if (width === 0 || height === 0)
|
|
43
|
+
return createSurface(0, 0);
|
|
44
|
+
const direction = options.direction ?? 'row';
|
|
45
|
+
const fallbackDividerChar = direction === 'row' ? '│' : '─';
|
|
46
|
+
const dividerUnit = resolveDividerChar(options.dividerChar, fallbackDividerChar);
|
|
47
|
+
const layout = splitPaneLayout(state, options);
|
|
48
|
+
const result = createSurface(width, height);
|
|
49
|
+
const paneA = placeSurface(options.paneA(layout.paneA.width, layout.paneA.height), {
|
|
50
|
+
width: layout.paneA.width,
|
|
51
|
+
height: layout.paneA.height,
|
|
52
|
+
});
|
|
53
|
+
const paneB = placeSurface(options.paneB(layout.paneB.width, layout.paneB.height), {
|
|
54
|
+
width: layout.paneB.width,
|
|
55
|
+
height: layout.paneB.height,
|
|
56
|
+
});
|
|
57
|
+
result.blit(paneA, layout.paneA.col, layout.paneA.row, 0, 0, layout.paneA.width, layout.paneA.height);
|
|
58
|
+
result.blit(paneB, layout.paneB.col, layout.paneB.row, 0, 0, layout.paneB.width, layout.paneB.height);
|
|
59
|
+
if (layout.divider.width > 0 && layout.divider.height > 0) {
|
|
60
|
+
const divider = createSurface(layout.divider.width, layout.divider.height, { char: dividerUnit, empty: false });
|
|
61
|
+
result.blit(divider, layout.divider.col, layout.divider.row, 0, 0, layout.divider.width, layout.divider.height);
|
|
62
|
+
}
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
export function clampRatio(ratio) {
|
|
66
|
+
if (!Number.isFinite(ratio))
|
|
67
|
+
return 0.5;
|
|
68
|
+
return clamp(ratio, 0, 1);
|
|
69
|
+
}
|
|
70
|
+
export function warnInvalidRatio(ratio, io) {
|
|
71
|
+
io?.writeError(`[bijou-tui] createSplitPaneState(): received non-finite ratio "${String(ratio)}"; falling back to 0.5.\n`);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=split-pane.part02.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-pane.part02.js","sourceRoot":"","sources":["../src/split-pane.part02.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function resolveDividerChar(dividerChar: string | undefined, fallback: string): string;
|
|
2
|
+
export declare function repeatToWidth(unit: string, targetWidth: number): string;
|
|
3
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
|
4
|
+
//# sourceMappingURL=split-pane.part03.d.ts.map
|