@fairyhunter13/opentui-core 0.1.114 → 0.1.115
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/3d/SpriteResourceManager.d.ts +74 -0
- package/3d/SpriteUtils.d.ts +13 -0
- package/3d/TextureUtils.d.ts +24 -0
- package/3d/ThreeRenderable.d.ts +40 -0
- package/3d/WGPURenderer.d.ts +61 -0
- package/3d/animation/ExplodingSpriteEffect.d.ts +71 -0
- package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +76 -0
- package/3d/animation/SpriteAnimator.d.ts +124 -0
- package/3d/animation/SpriteParticleGenerator.d.ts +62 -0
- package/3d/canvas.d.ts +44 -0
- package/3d/index.d.ts +12 -0
- package/3d/physics/PlanckPhysicsAdapter.d.ts +19 -0
- package/3d/physics/RapierPhysicsAdapter.d.ts +19 -0
- package/3d/physics/physics-interface.d.ts +27 -0
- package/3d.d.ts +2 -0
- package/3d.js +34041 -0
- package/3d.js.map +155 -0
- package/LICENSE +21 -0
- package/NativeSpanFeed.d.ts +41 -0
- package/Renderable.d.ts +334 -0
- package/animation/Timeline.d.ts +126 -0
- package/ansi.d.ts +13 -0
- package/buffer.d.ts +111 -0
- package/console.d.ts +144 -0
- package/edit-buffer.d.ts +98 -0
- package/editor-view.d.ts +73 -0
- package/index-j4m38kjn.js +411 -0
- package/index-j4m38kjn.js.map +10 -0
- package/index-tse8gzh0.js +20614 -0
- package/index-tse8gzh0.js.map +67 -0
- package/index-vv2jcd4r.js +12299 -0
- package/index-vv2jcd4r.js.map +42 -0
- package/index.d.ts +23 -0
- package/index.js +478 -0
- package/index.js.map +9 -0
- package/lib/KeyHandler.d.ts +61 -0
- package/lib/RGBA.d.ts +25 -0
- package/lib/ascii.font.d.ts +508 -0
- package/lib/border.d.ts +51 -0
- package/lib/bunfs.d.ts +7 -0
- package/lib/clipboard.d.ts +17 -0
- package/lib/clock.d.ts +15 -0
- package/lib/data-paths.d.ts +26 -0
- package/lib/debounce.d.ts +42 -0
- package/lib/detect-links.d.ts +6 -0
- package/lib/env.d.ts +42 -0
- package/lib/extmarks-history.d.ts +17 -0
- package/lib/extmarks.d.ts +89 -0
- package/lib/hast-styled-text.d.ts +17 -0
- package/lib/index.d.ts +21 -0
- package/lib/keymapping.d.ts +25 -0
- package/lib/objects-in-viewport.d.ts +24 -0
- package/lib/output.capture.d.ts +24 -0
- package/lib/parse.keypress-kitty.d.ts +2 -0
- package/lib/parse.keypress.d.ts +26 -0
- package/lib/parse.mouse.d.ts +30 -0
- package/lib/paste.d.ts +7 -0
- package/lib/queue.d.ts +15 -0
- package/lib/renderable.validations.d.ts +12 -0
- package/lib/scroll-acceleration.d.ts +43 -0
- package/lib/selection.d.ts +63 -0
- package/lib/singleton.d.ts +7 -0
- package/lib/stdin-parser.d.ts +87 -0
- package/lib/styled-text.d.ts +63 -0
- package/lib/terminal-capability-detection.d.ts +30 -0
- package/lib/terminal-palette.d.ts +50 -0
- package/lib/tree-sitter/assets/update.d.ts +11 -0
- package/lib/tree-sitter/client.d.ts +47 -0
- package/lib/tree-sitter/default-parsers.d.ts +2 -0
- package/lib/tree-sitter/download-utils.d.ts +21 -0
- package/lib/tree-sitter/index.d.ts +8 -0
- package/lib/tree-sitter/parser.worker.d.ts +1 -0
- package/lib/tree-sitter/parsers-config.d.ts +53 -0
- package/lib/tree-sitter/resolve-ft.d.ts +5 -0
- package/lib/tree-sitter/types.d.ts +82 -0
- package/lib/tree-sitter-styled-text.d.ts +14 -0
- package/lib/validate-dir-name.d.ts +1 -0
- package/lib/yoga.options.d.ts +32 -0
- package/package.json +50 -62
- package/parser.worker.js +899 -0
- package/parser.worker.js.map +12 -0
- package/plugins/core-slot.d.ts +72 -0
- package/plugins/registry.d.ts +42 -0
- package/plugins/types.d.ts +34 -0
- package/post/effects.d.ts +147 -0
- package/post/filters.d.ts +65 -0
- package/post/matrices.d.ts +20 -0
- package/renderables/ASCIIFont.d.ts +52 -0
- package/renderables/Box.d.ts +81 -0
- package/renderables/Code.d.ts +78 -0
- package/renderables/Diff.d.ts +142 -0
- package/renderables/EditBufferRenderable.d.ts +237 -0
- package/renderables/FrameBuffer.d.ts +16 -0
- package/renderables/Input.d.ts +67 -0
- package/renderables/LineNumberRenderable.d.ts +78 -0
- package/renderables/Markdown.d.ts +185 -0
- package/renderables/ScrollBar.d.ts +77 -0
- package/renderables/ScrollBox.d.ts +124 -0
- package/renderables/Select.d.ts +115 -0
- package/renderables/Slider.d.ts +47 -0
- package/renderables/TabSelect.d.ts +96 -0
- package/renderables/Text.d.ts +36 -0
- package/renderables/TextBufferRenderable.d.ts +105 -0
- package/renderables/TextNode.d.ts +91 -0
- package/renderables/TextTable.d.ts +140 -0
- package/renderables/Textarea.d.ts +63 -0
- package/renderables/TimeToFirstDraw.d.ts +24 -0
- package/renderables/__tests__/renderable-test-utils.d.ts +12 -0
- package/renderables/composition/VRenderable.d.ts +16 -0
- package/renderables/composition/constructs.d.ts +35 -0
- package/renderables/composition/vnode.d.ts +46 -0
- package/renderables/index.d.ts +23 -0
- package/renderables/markdown-parser.d.ts +10 -0
- package/renderer.d.ts +419 -0
- package/runtime-plugin-support.d.ts +3 -0
- package/runtime-plugin-support.js +29 -0
- package/runtime-plugin-support.js.map +10 -0
- package/runtime-plugin.d.ts +16 -0
- package/runtime-plugin.js +16 -0
- package/runtime-plugin.js.map +9 -0
- package/syntax-style.d.ts +54 -0
- package/testing/manual-clock.d.ts +17 -0
- package/testing/mock-keys.d.ts +81 -0
- package/testing/mock-mouse.d.ts +38 -0
- package/testing/mock-tree-sitter-client.d.ts +23 -0
- package/testing/spy.d.ts +7 -0
- package/testing/test-recorder.d.ts +61 -0
- package/testing/test-renderer.d.ts +23 -0
- package/testing.d.ts +6 -0
- package/testing.js +697 -0
- package/testing.js.map +15 -0
- package/text-buffer-view.d.ts +42 -0
- package/text-buffer.d.ts +67 -0
- package/types.d.ts +139 -0
- package/utils.d.ts +14 -0
- package/zig-structs.d.ts +155 -0
- package/zig.d.ts +353 -0
- package/dev/keypress-debug-renderer.ts +0 -148
- package/dev/keypress-debug.ts +0 -43
- package/dev/print-env-vars.ts +0 -32
- package/dev/test-tmux-graphics-334.sh +0 -68
- package/dev/thai-debug-test.ts +0 -68
- package/docs/development.md +0 -144
- package/scripts/build.ts +0 -400
- package/scripts/publish.ts +0 -60
- package/src/3d/SpriteResourceManager.ts +0 -286
- package/src/3d/SpriteUtils.ts +0 -70
- package/src/3d/TextureUtils.ts +0 -196
- package/src/3d/ThreeRenderable.ts +0 -197
- package/src/3d/WGPURenderer.ts +0 -294
- package/src/3d/animation/ExplodingSpriteEffect.ts +0 -513
- package/src/3d/animation/PhysicsExplodingSpriteEffect.ts +0 -429
- package/src/3d/animation/SpriteAnimator.ts +0 -633
- package/src/3d/animation/SpriteParticleGenerator.ts +0 -435
- package/src/3d/canvas.ts +0 -464
- package/src/3d/index.ts +0 -12
- package/src/3d/physics/PlanckPhysicsAdapter.ts +0 -72
- package/src/3d/physics/RapierPhysicsAdapter.ts +0 -66
- package/src/3d/physics/physics-interface.ts +0 -31
- package/src/3d/shaders/supersampling.wgsl +0 -201
- package/src/3d.ts +0 -3
- package/src/NativeSpanFeed.ts +0 -300
- package/src/Renderable.ts +0 -1704
- package/src/__snapshots__/buffer.test.ts.snap +0 -28
- package/src/animation/Timeline.test.ts +0 -2709
- package/src/animation/Timeline.ts +0 -598
- package/src/ansi.ts +0 -18
- package/src/benchmark/attenuation-benchmark.ts +0 -81
- package/src/benchmark/colormatrix-benchmark.ts +0 -128
- package/src/benchmark/gain-benchmark.ts +0 -80
- package/src/benchmark/latest-all-bench-run.json +0 -707
- package/src/benchmark/latest-async-bench-run.json +0 -336
- package/src/benchmark/latest-default-bench-run.json +0 -657
- package/src/benchmark/latest-large-bench-run.json +0 -707
- package/src/benchmark/latest-quick-bench-run.json +0 -207
- package/src/benchmark/markdown-benchmark.ts +0 -1796
- package/src/benchmark/native-span-feed-async-benchmark.ts +0 -355
- package/src/benchmark/native-span-feed-benchmark.md +0 -56
- package/src/benchmark/native-span-feed-benchmark.ts +0 -596
- package/src/benchmark/native-span-feed-compare.ts +0 -280
- package/src/benchmark/renderer-benchmark.ts +0 -754
- package/src/benchmark/text-table-benchmark.ts +0 -948
- package/src/buffer.test.ts +0 -291
- package/src/buffer.ts +0 -554
- package/src/console.test.ts +0 -612
- package/src/console.ts +0 -1254
- package/src/edit-buffer.test.ts +0 -1769
- package/src/edit-buffer.ts +0 -411
- package/src/editor-view.test.ts +0 -1032
- package/src/editor-view.ts +0 -284
- package/src/examples/ascii-font-selection-demo.ts +0 -245
- package/src/examples/assets/Water_2_M_Normal.jpg +0 -0
- package/src/examples/assets/concrete.png +0 -0
- package/src/examples/assets/crate.png +0 -0
- package/src/examples/assets/crate_emissive.png +0 -0
- package/src/examples/assets/forrest_background.png +0 -0
- package/src/examples/assets/hast-example.json +0 -1018
- package/src/examples/assets/heart.png +0 -0
- package/src/examples/assets/main_char_heavy_attack.png +0 -0
- package/src/examples/assets/main_char_idle.png +0 -0
- package/src/examples/assets/main_char_jump_end.png +0 -0
- package/src/examples/assets/main_char_jump_landing.png +0 -0
- package/src/examples/assets/main_char_jump_start.png +0 -0
- package/src/examples/assets/main_char_run_loop.png +0 -0
- package/src/examples/assets/roughness_map.jpg +0 -0
- package/src/examples/build.ts +0 -115
- package/src/examples/code-demo.ts +0 -924
- package/src/examples/console-demo.ts +0 -358
- package/src/examples/core-plugin-slots-demo.ts +0 -759
- package/src/examples/diff-demo.ts +0 -701
- package/src/examples/draggable-three-demo.ts +0 -259
- package/src/examples/editor-demo.ts +0 -322
- package/src/examples/extmarks-demo.ts +0 -196
- package/src/examples/focus-restore-demo.ts +0 -310
- package/src/examples/fonts.ts +0 -245
- package/src/examples/fractal-shader-demo.ts +0 -268
- package/src/examples/framebuffer-demo.ts +0 -674
- package/src/examples/full-unicode-demo.ts +0 -241
- package/src/examples/golden-star-demo.ts +0 -933
- package/src/examples/grayscale-buffer-demo.ts +0 -249
- package/src/examples/hast-syntax-highlighting-demo.ts +0 -129
- package/src/examples/index.ts +0 -926
- package/src/examples/input-demo.ts +0 -377
- package/src/examples/input-select-layout-demo.ts +0 -425
- package/src/examples/install.sh +0 -143
- package/src/examples/keypress-debug-demo.ts +0 -452
- package/src/examples/lib/HexList.ts +0 -122
- package/src/examples/lib/PaletteGrid.ts +0 -125
- package/src/examples/lib/standalone-keys.ts +0 -25
- package/src/examples/lib/tab-controller.ts +0 -243
- package/src/examples/lights-phong-demo.ts +0 -290
- package/src/examples/link-demo.ts +0 -220
- package/src/examples/live-state-demo.ts +0 -480
- package/src/examples/markdown-demo.ts +0 -725
- package/src/examples/mouse-interaction-demo.ts +0 -428
- package/src/examples/nested-zindex-demo.ts +0 -357
- package/src/examples/opacity-example.ts +0 -235
- package/src/examples/opentui-demo.ts +0 -1057
- package/src/examples/physx-planck-2d-demo.ts +0 -623
- package/src/examples/physx-rapier-2d-demo.ts +0 -655
- package/src/examples/relative-positioning-demo.ts +0 -323
- package/src/examples/scroll-example.ts +0 -214
- package/src/examples/scrollbox-mouse-test.ts +0 -112
- package/src/examples/scrollbox-overlay-hit-test.ts +0 -206
- package/src/examples/select-demo.ts +0 -237
- package/src/examples/shader-cube-demo.ts +0 -1015
- package/src/examples/simple-layout-example.ts +0 -591
- package/src/examples/slider-demo.ts +0 -617
- package/src/examples/split-mode-demo.ts +0 -453
- package/src/examples/sprite-animation-demo.ts +0 -443
- package/src/examples/sprite-particle-generator-demo.ts +0 -486
- package/src/examples/static-sprite-demo.ts +0 -193
- package/src/examples/sticky-scroll-example.ts +0 -308
- package/src/examples/styled-text-demo.ts +0 -282
- package/src/examples/tab-select-demo.ts +0 -219
- package/src/examples/terminal-title.ts +0 -29
- package/src/examples/terminal.ts +0 -305
- package/src/examples/text-node-demo.ts +0 -416
- package/src/examples/text-selection-demo.ts +0 -377
- package/src/examples/text-table-demo.ts +0 -503
- package/src/examples/text-truncation-demo.ts +0 -481
- package/src/examples/text-wrap.ts +0 -757
- package/src/examples/texture-loading-demo.ts +0 -259
- package/src/examples/timeline-example.ts +0 -670
- package/src/examples/transparency-demo.ts +0 -400
- package/src/examples/vnode-composition-demo.ts +0 -404
- package/src/examples/wide-grapheme-overlay-demo.ts +0 -280
- package/src/index.ts +0 -24
- package/src/lib/KeyHandler.integration.test.ts +0 -292
- package/src/lib/KeyHandler.stopPropagation.test.ts +0 -289
- package/src/lib/KeyHandler.test.ts +0 -662
- package/src/lib/KeyHandler.ts +0 -222
- package/src/lib/RGBA.test.ts +0 -984
- package/src/lib/RGBA.ts +0 -204
- package/src/lib/ascii.font.ts +0 -330
- package/src/lib/border.test.ts +0 -83
- package/src/lib/border.ts +0 -170
- package/src/lib/bunfs.test.ts +0 -27
- package/src/lib/bunfs.ts +0 -18
- package/src/lib/clipboard.test.ts +0 -41
- package/src/lib/clipboard.ts +0 -47
- package/src/lib/clock.ts +0 -35
- package/src/lib/data-paths.test.ts +0 -133
- package/src/lib/data-paths.ts +0 -109
- package/src/lib/debounce.ts +0 -106
- package/src/lib/detect-links.test.ts +0 -98
- package/src/lib/detect-links.ts +0 -56
- package/src/lib/env.test.ts +0 -228
- package/src/lib/env.ts +0 -209
- package/src/lib/extmarks-history.ts +0 -51
- package/src/lib/extmarks-multiwidth.test.ts +0 -322
- package/src/lib/extmarks.test.ts +0 -3457
- package/src/lib/extmarks.ts +0 -843
- package/src/lib/fonts/block.json +0 -405
- package/src/lib/fonts/grid.json +0 -265
- package/src/lib/fonts/huge.json +0 -741
- package/src/lib/fonts/pallet.json +0 -314
- package/src/lib/fonts/shade.json +0 -591
- package/src/lib/fonts/slick.json +0 -321
- package/src/lib/fonts/tiny.json +0 -69
- package/src/lib/hast-styled-text.ts +0 -59
- package/src/lib/index.ts +0 -21
- package/src/lib/keymapping.test.ts +0 -317
- package/src/lib/keymapping.ts +0 -115
- package/src/lib/objects-in-viewport.test.ts +0 -787
- package/src/lib/objects-in-viewport.ts +0 -153
- package/src/lib/output.capture.ts +0 -58
- package/src/lib/parse.keypress-kitty.protocol.test.ts +0 -340
- package/src/lib/parse.keypress-kitty.test.ts +0 -663
- package/src/lib/parse.keypress-kitty.ts +0 -439
- package/src/lib/parse.keypress.test.ts +0 -1849
- package/src/lib/parse.keypress.ts +0 -397
- package/src/lib/parse.mouse.test.ts +0 -552
- package/src/lib/parse.mouse.ts +0 -232
- package/src/lib/paste.ts +0 -16
- package/src/lib/queue.ts +0 -65
- package/src/lib/renderable.validations.test.ts +0 -87
- package/src/lib/renderable.validations.ts +0 -83
- package/src/lib/scroll-acceleration.ts +0 -98
- package/src/lib/selection.ts +0 -240
- package/src/lib/singleton.ts +0 -28
- package/src/lib/stdin-parser.test.ts +0 -2290
- package/src/lib/stdin-parser.ts +0 -1810
- package/src/lib/styled-text.ts +0 -178
- package/src/lib/terminal-capability-detection.test.ts +0 -202
- package/src/lib/terminal-capability-detection.ts +0 -79
- package/src/lib/terminal-palette.test.ts +0 -878
- package/src/lib/terminal-palette.ts +0 -383
- package/src/lib/tree-sitter/assets/README.md +0 -118
- package/src/lib/tree-sitter/assets/update.ts +0 -334
- package/src/lib/tree-sitter/assets.d.ts +0 -9
- package/src/lib/tree-sitter/cache.test.ts +0 -273
- package/src/lib/tree-sitter/client.test.ts +0 -1165
- package/src/lib/tree-sitter/client.ts +0 -607
- package/src/lib/tree-sitter/default-parsers.ts +0 -86
- package/src/lib/tree-sitter/download-utils.ts +0 -148
- package/src/lib/tree-sitter/index.ts +0 -28
- package/src/lib/tree-sitter/parser.worker.ts +0 -1042
- package/src/lib/tree-sitter/parsers-config.ts +0 -81
- package/src/lib/tree-sitter/resolve-ft.test.ts +0 -55
- package/src/lib/tree-sitter/resolve-ft.ts +0 -189
- package/src/lib/tree-sitter/types.ts +0 -82
- package/src/lib/tree-sitter-styled-text.test.ts +0 -1253
- package/src/lib/tree-sitter-styled-text.ts +0 -306
- package/src/lib/validate-dir-name.ts +0 -55
- package/src/lib/yoga.options.test.ts +0 -628
- package/src/lib/yoga.options.ts +0 -346
- package/src/plugins/core-slot.ts +0 -579
- package/src/plugins/registry.ts +0 -402
- package/src/plugins/types.ts +0 -46
- package/src/post/effects.ts +0 -930
- package/src/post/filters.ts +0 -489
- package/src/post/matrices.ts +0 -288
- package/src/renderables/ASCIIFont.ts +0 -219
- package/src/renderables/Box.test.ts +0 -205
- package/src/renderables/Box.ts +0 -326
- package/src/renderables/Code.test.ts +0 -2062
- package/src/renderables/Code.ts +0 -357
- package/src/renderables/Diff.regression.test.ts +0 -226
- package/src/renderables/Diff.test.ts +0 -3101
- package/src/renderables/Diff.ts +0 -1211
- package/src/renderables/EditBufferRenderable.test.ts +0 -288
- package/src/renderables/EditBufferRenderable.ts +0 -1166
- package/src/renderables/FrameBuffer.ts +0 -47
- package/src/renderables/Input.test.ts +0 -1228
- package/src/renderables/Input.ts +0 -247
- package/src/renderables/LineNumberRenderable.ts +0 -724
- package/src/renderables/Markdown.ts +0 -1393
- package/src/renderables/ScrollBar.ts +0 -422
- package/src/renderables/ScrollBox.ts +0 -883
- package/src/renderables/Select.test.ts +0 -1033
- package/src/renderables/Select.ts +0 -524
- package/src/renderables/Slider.test.ts +0 -456
- package/src/renderables/Slider.ts +0 -342
- package/src/renderables/TabSelect.test.ts +0 -197
- package/src/renderables/TabSelect.ts +0 -455
- package/src/renderables/Text.selection-buffer.test.ts +0 -123
- package/src/renderables/Text.test.ts +0 -2660
- package/src/renderables/Text.ts +0 -147
- package/src/renderables/TextBufferRenderable.ts +0 -518
- package/src/renderables/TextNode.test.ts +0 -1058
- package/src/renderables/TextNode.ts +0 -325
- package/src/renderables/TextTable.test.ts +0 -1421
- package/src/renderables/TextTable.ts +0 -1344
- package/src/renderables/Textarea.ts +0 -430
- package/src/renderables/TimeToFirstDraw.ts +0 -89
- package/src/renderables/__snapshots__/Code.test.ts.snap +0 -13
- package/src/renderables/__snapshots__/Diff.test.ts.snap +0 -785
- package/src/renderables/__snapshots__/Text.test.ts.snap +0 -421
- package/src/renderables/__snapshots__/TextTable.test.ts.snap +0 -215
- package/src/renderables/__tests__/LineNumberRenderable.scrollbox-simple.test.ts +0 -144
- package/src/renderables/__tests__/LineNumberRenderable.scrollbox.test.ts +0 -816
- package/src/renderables/__tests__/LineNumberRenderable.test.ts +0 -1865
- package/src/renderables/__tests__/LineNumberRenderable.wrapping.test.ts +0 -85
- package/src/renderables/__tests__/Markdown.code-colors.test.ts +0 -242
- package/src/renderables/__tests__/Markdown.test.ts +0 -2518
- package/src/renderables/__tests__/MultiRenderable.selection.test.ts +0 -87
- package/src/renderables/__tests__/Textarea.buffer.test.ts +0 -682
- package/src/renderables/__tests__/Textarea.destroyed-events.test.ts +0 -675
- package/src/renderables/__tests__/Textarea.editing.test.ts +0 -2041
- package/src/renderables/__tests__/Textarea.error-handling.test.ts +0 -35
- package/src/renderables/__tests__/Textarea.events.test.ts +0 -738
- package/src/renderables/__tests__/Textarea.highlights.test.ts +0 -590
- package/src/renderables/__tests__/Textarea.keybinding.test.ts +0 -3149
- package/src/renderables/__tests__/Textarea.paste.test.ts +0 -357
- package/src/renderables/__tests__/Textarea.rendering.test.ts +0 -1866
- package/src/renderables/__tests__/Textarea.scroll.test.ts +0 -733
- package/src/renderables/__tests__/Textarea.selection.test.ts +0 -1590
- package/src/renderables/__tests__/Textarea.stress.test.ts +0 -670
- package/src/renderables/__tests__/Textarea.undo-redo.test.ts +0 -383
- package/src/renderables/__tests__/Textarea.visual-lines.test.ts +0 -310
- package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.code.test.ts.snap +0 -221
- package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.scrollbox-simple.test.ts.snap +0 -89
- package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.scrollbox.test.ts.snap +0 -457
- package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.test.ts.snap +0 -158
- package/src/renderables/__tests__/__snapshots__/Textarea.rendering.test.ts.snap +0 -387
- package/src/renderables/__tests__/markdown-parser.test.ts +0 -217
- package/src/renderables/__tests__/renderable-test-utils.ts +0 -60
- package/src/renderables/composition/README.md +0 -8
- package/src/renderables/composition/VRenderable.ts +0 -32
- package/src/renderables/composition/constructs.ts +0 -127
- package/src/renderables/composition/vnode.ts +0 -289
- package/src/renderables/index.ts +0 -23
- package/src/renderables/markdown-parser.ts +0 -66
- package/src/renderer.ts +0 -2681
- package/src/runtime-plugin-support.ts +0 -39
- package/src/runtime-plugin.ts +0 -615
- package/src/syntax-style.test.ts +0 -841
- package/src/syntax-style.ts +0 -257
- package/src/testing/README.md +0 -210
- package/src/testing/capture-spans.test.ts +0 -194
- package/src/testing/integration.test.ts +0 -276
- package/src/testing/manual-clock.ts +0 -117
- package/src/testing/mock-keys.test.ts +0 -1378
- package/src/testing/mock-keys.ts +0 -457
- package/src/testing/mock-mouse.test.ts +0 -218
- package/src/testing/mock-mouse.ts +0 -247
- package/src/testing/mock-tree-sitter-client.ts +0 -73
- package/src/testing/spy.ts +0 -13
- package/src/testing/test-recorder.test.ts +0 -415
- package/src/testing/test-recorder.ts +0 -145
- package/src/testing/test-renderer.ts +0 -132
- package/src/testing.ts +0 -7
- package/src/tests/__snapshots__/absolute-positioning.snapshot.test.ts.snap +0 -481
- package/src/tests/__snapshots__/renderable.snapshot.test.ts.snap +0 -19
- package/src/tests/__snapshots__/scrollbox.test.ts.snap +0 -29
- package/src/tests/absolute-positioning.snapshot.test.ts +0 -638
- package/src/tests/allocator-stats.test.ts +0 -38
- package/src/tests/destroy-during-render.test.ts +0 -200
- package/src/tests/destroy-on-exit.fixture.ts +0 -36
- package/src/tests/destroy-on-exit.test.ts +0 -41
- package/src/tests/hover-cursor.test.ts +0 -98
- package/src/tests/native-span-feed-async.test.ts +0 -173
- package/src/tests/native-span-feed-close.test.ts +0 -120
- package/src/tests/native-span-feed-coverage.test.ts +0 -227
- package/src/tests/native-span-feed-edge-cases.test.ts +0 -352
- package/src/tests/native-span-feed-use-after-free.test.ts +0 -45
- package/src/tests/opacity.test.ts +0 -123
- package/src/tests/renderable.snapshot.test.ts +0 -524
- package/src/tests/renderable.test.ts +0 -1281
- package/src/tests/renderer.clock.test.ts +0 -158
- package/src/tests/renderer.console-startup.test.ts +0 -185
- package/src/tests/renderer.control.test.ts +0 -425
- package/src/tests/renderer.core-slot-binding.test.ts +0 -952
- package/src/tests/renderer.cursor.test.ts +0 -26
- package/src/tests/renderer.destroy-during-render.test.ts +0 -147
- package/src/tests/renderer.focus-restore.test.ts +0 -257
- package/src/tests/renderer.focus.test.ts +0 -294
- package/src/tests/renderer.idle.test.ts +0 -219
- package/src/tests/renderer.input.test.ts +0 -2237
- package/src/tests/renderer.kitty-flags.test.ts +0 -195
- package/src/tests/renderer.mouse.test.ts +0 -1274
- package/src/tests/renderer.palette.test.ts +0 -629
- package/src/tests/renderer.selection.test.ts +0 -49
- package/src/tests/renderer.slot-registry.test.ts +0 -684
- package/src/tests/renderer.useMouse.test.ts +0 -47
- package/src/tests/runtime-plugin-node-modules-cycle.fixture.ts +0 -76
- package/src/tests/runtime-plugin-node-modules-mjs.fixture.ts +0 -43
- package/src/tests/runtime-plugin-node-modules-no-bare-rewrite.fixture.ts +0 -67
- package/src/tests/runtime-plugin-node-modules-package-type-cache.fixture.ts +0 -72
- package/src/tests/runtime-plugin-node-modules-runtime-specifier.fixture.ts +0 -44
- package/src/tests/runtime-plugin-node-modules-scoped-package-bare-rewrite.fixture.ts +0 -85
- package/src/tests/runtime-plugin-path-alias.fixture.ts +0 -43
- package/src/tests/runtime-plugin-resolve-roots.fixture.ts +0 -65
- package/src/tests/runtime-plugin-support.fixture.ts +0 -11
- package/src/tests/runtime-plugin-support.test.ts +0 -19
- package/src/tests/runtime-plugin-windows-file-url.fixture.ts +0 -30
- package/src/tests/runtime-plugin.fixture.ts +0 -40
- package/src/tests/runtime-plugin.test.ts +0 -354
- package/src/tests/scrollbox-culling-bug.test.ts +0 -114
- package/src/tests/scrollbox-hitgrid-resize.test.ts +0 -136
- package/src/tests/scrollbox-hitgrid.test.ts +0 -909
- package/src/tests/scrollbox.test.ts +0 -1530
- package/src/tests/wrap-resize-perf.test.ts +0 -276
- package/src/tests/yoga-setters.test.ts +0 -921
- package/src/text-buffer-view.test.ts +0 -705
- package/src/text-buffer-view.ts +0 -189
- package/src/text-buffer.test.ts +0 -347
- package/src/text-buffer.ts +0 -250
- package/src/types.ts +0 -161
- package/src/utils.ts +0 -88
- package/src/zig/ansi.zig +0 -268
- package/src/zig/bench/README.md +0 -50
- package/src/zig/bench/buffer-draw-text-buffer_bench.zig +0 -887
- package/src/zig/bench/edit-buffer_bench.zig +0 -476
- package/src/zig/bench/native-span-feed_bench.zig +0 -100
- package/src/zig/bench/rope-markers_bench.zig +0 -713
- package/src/zig/bench/rope_bench.zig +0 -514
- package/src/zig/bench/styled-text_bench.zig +0 -470
- package/src/zig/bench/text-buffer-coords_bench.zig +0 -362
- package/src/zig/bench/text-buffer-view_bench.zig +0 -459
- package/src/zig/bench/text-chunk-graphemes_bench.zig +0 -273
- package/src/zig/bench/utf8_bench.zig +0 -799
- package/src/zig/bench-utils.zig +0 -431
- package/src/zig/bench.zig +0 -217
- package/src/zig/buffer-methods.zig +0 -211
- package/src/zig/buffer.zig +0 -2281
- package/src/zig/build.zig +0 -289
- package/src/zig/build.zig.zon +0 -16
- package/src/zig/edit-buffer.zig +0 -825
- package/src/zig/editor-view.zig +0 -802
- package/src/zig/event-bus.zig +0 -13
- package/src/zig/event-emitter.zig +0 -65
- package/src/zig/file-logger.zig +0 -92
- package/src/zig/grapheme.zig +0 -599
- package/src/zig/lib.zig +0 -1854
- package/src/zig/link.zig +0 -333
- package/src/zig/logger.zig +0 -43
- package/src/zig/mem-registry.zig +0 -125
- package/src/zig/native-span-feed-bench-lib.zig +0 -7
- package/src/zig/native-span-feed.zig +0 -708
- package/src/zig/renderer.zig +0 -1393
- package/src/zig/rope.zig +0 -1220
- package/src/zig/syntax-style.zig +0 -161
- package/src/zig/terminal.zig +0 -987
- package/src/zig/test.zig +0 -72
- package/src/zig/tests/README.md +0 -18
- package/src/zig/tests/buffer-methods_test.zig +0 -1109
- package/src/zig/tests/buffer_test.zig +0 -2557
- package/src/zig/tests/edit-buffer-history_test.zig +0 -271
- package/src/zig/tests/edit-buffer_test.zig +0 -1689
- package/src/zig/tests/editor-view_test.zig +0 -3299
- package/src/zig/tests/event-emitter_test.zig +0 -249
- package/src/zig/tests/grapheme_test.zig +0 -1304
- package/src/zig/tests/link_test.zig +0 -190
- package/src/zig/tests/mem-registry_test.zig +0 -473
- package/src/zig/tests/memory_leak_regression_test.zig +0 -159
- package/src/zig/tests/native-span-feed_test.zig +0 -1264
- package/src/zig/tests/renderer_test.zig +0 -1017
- package/src/zig/tests/rope-nested_test.zig +0 -712
- package/src/zig/tests/rope_fuzz_test.zig +0 -238
- package/src/zig/tests/rope_test.zig +0 -2362
- package/src/zig/tests/segment-merge.test.zig +0 -148
- package/src/zig/tests/syntax-style_test.zig +0 -557
- package/src/zig/tests/terminal_test.zig +0 -754
- package/src/zig/tests/text-buffer-drawing_test.zig +0 -3237
- package/src/zig/tests/text-buffer-highlights_test.zig +0 -666
- package/src/zig/tests/text-buffer-iterators_test.zig +0 -776
- package/src/zig/tests/text-buffer-segment_test.zig +0 -320
- package/src/zig/tests/text-buffer-selection_test.zig +0 -1035
- package/src/zig/tests/text-buffer-selection_viewport_test.zig +0 -358
- package/src/zig/tests/text-buffer-view_test.zig +0 -3649
- package/src/zig/tests/text-buffer_test.zig +0 -2191
- package/src/zig/tests/unicode-width-map.zon +0 -3909
- package/src/zig/tests/utf8_no_zwj_test.zig +0 -260
- package/src/zig/tests/utf8_test.zig +0 -4057
- package/src/zig/tests/utf8_wcwidth_cursor_test.zig +0 -267
- package/src/zig/tests/utf8_wcwidth_test.zig +0 -357
- package/src/zig/tests/word-wrap-editing_test.zig +0 -498
- package/src/zig/tests/wrap-cache-perf_test.zig +0 -113
- package/src/zig/text-buffer-iterators.zig +0 -499
- package/src/zig/text-buffer-segment.zig +0 -404
- package/src/zig/text-buffer-view.zig +0 -1371
- package/src/zig/text-buffer.zig +0 -1180
- package/src/zig/utf8.zig +0 -1948
- package/src/zig/utils.zig +0 -9
- package/src/zig-structs.ts +0 -261
- package/src/zig.ts +0 -3884
- package/tsconfig.build.json +0 -24
- package/tsconfig.json +0 -27
- /package/{src/lib/tree-sitter/assets → assets}/javascript/highlights.scm +0 -0
- /package/{src/lib/tree-sitter/assets → assets}/javascript/tree-sitter-javascript.wasm +0 -0
- /package/{src/lib/tree-sitter/assets → assets}/markdown/highlights.scm +0 -0
- /package/{src/lib/tree-sitter/assets → assets}/markdown/injections.scm +0 -0
- /package/{src/lib/tree-sitter/assets → assets}/markdown/tree-sitter-markdown.wasm +0 -0
- /package/{src/lib/tree-sitter/assets → assets}/markdown_inline/highlights.scm +0 -0
- /package/{src/lib/tree-sitter/assets → assets}/markdown_inline/tree-sitter-markdown_inline.wasm +0 -0
- /package/{src/lib/tree-sitter/assets → assets}/typescript/highlights.scm +0 -0
- /package/{src/lib/tree-sitter/assets → assets}/typescript/tree-sitter-typescript.wasm +0 -0
- /package/{src/lib/tree-sitter/assets → assets}/zig/highlights.scm +0 -0
- /package/{src/lib/tree-sitter/assets → assets}/zig/tree-sitter-zig.wasm +0 -0
package/src/post/matrices.ts
DELETED
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
// Standard sepia transformation matrix (4x4 RGBA with alpha identity)
|
|
2
|
-
export const SEPIA_MATRIX = new Float32Array([
|
|
3
|
-
0.393,
|
|
4
|
-
0.769,
|
|
5
|
-
0.189,
|
|
6
|
-
0, // Red output (r->r, g->r, b->r, a->r)
|
|
7
|
-
0.349,
|
|
8
|
-
0.686,
|
|
9
|
-
0.168,
|
|
10
|
-
0, // Green output (r->g, g->g, b->g, a->g)
|
|
11
|
-
0.272,
|
|
12
|
-
0.534,
|
|
13
|
-
0.131,
|
|
14
|
-
0, // Blue output (r->b, g->b, b->b, a->b)
|
|
15
|
-
0,
|
|
16
|
-
0,
|
|
17
|
-
0,
|
|
18
|
-
1, // Alpha output (r->a, g->a, b->a, a->a) - identity
|
|
19
|
-
])
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Colorblindness simulation and compensation filters using color matrix transformations.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
// Protanopia (Red-blind) simulation matrix - shows how colors appear to someone with red-blindness
|
|
26
|
-
export const PROTANOPIA_SIM_MATRIX = new Float32Array([
|
|
27
|
-
0.567,
|
|
28
|
-
0.433,
|
|
29
|
-
0.0,
|
|
30
|
-
0, // Red output
|
|
31
|
-
0.558,
|
|
32
|
-
0.442,
|
|
33
|
-
0.0,
|
|
34
|
-
0, // Green output
|
|
35
|
-
0.0,
|
|
36
|
-
0.242,
|
|
37
|
-
0.758,
|
|
38
|
-
0, // Blue output
|
|
39
|
-
0,
|
|
40
|
-
0,
|
|
41
|
-
0,
|
|
42
|
-
1, // Alpha output - identity
|
|
43
|
-
])
|
|
44
|
-
|
|
45
|
-
// Deuteranopia (Green-blind) simulation matrix - shows how colors appear to someone with green-blindness
|
|
46
|
-
export const DEUTERANOPIA_SIM_MATRIX = new Float32Array([
|
|
47
|
-
0.625,
|
|
48
|
-
0.375,
|
|
49
|
-
0.0,
|
|
50
|
-
0, // Red output
|
|
51
|
-
0.7,
|
|
52
|
-
0.3,
|
|
53
|
-
0.0,
|
|
54
|
-
0, // Green output
|
|
55
|
-
0.0,
|
|
56
|
-
0.3,
|
|
57
|
-
0.7,
|
|
58
|
-
0, // Blue output
|
|
59
|
-
0,
|
|
60
|
-
0,
|
|
61
|
-
0,
|
|
62
|
-
1, // Alpha output - identity
|
|
63
|
-
])
|
|
64
|
-
|
|
65
|
-
// Tritanopia (Blue-blind) simulation matrix - shows how colors appear to someone with blue-blindness
|
|
66
|
-
export const TRITANOPIA_SIM_MATRIX = new Float32Array([
|
|
67
|
-
0.95,
|
|
68
|
-
0.05,
|
|
69
|
-
0.0,
|
|
70
|
-
0, // Red output
|
|
71
|
-
0.0,
|
|
72
|
-
0.433,
|
|
73
|
-
0.567,
|
|
74
|
-
0, // Green output
|
|
75
|
-
0.0,
|
|
76
|
-
0.475,
|
|
77
|
-
0.525,
|
|
78
|
-
0, // Blue output
|
|
79
|
-
0,
|
|
80
|
-
0,
|
|
81
|
-
0,
|
|
82
|
-
1, // Alpha output - identity
|
|
83
|
-
])
|
|
84
|
-
|
|
85
|
-
// Achromatopsia (Complete color blindness) - grayscale
|
|
86
|
-
export const ACHROMATOPSIA_MATRIX = new Float32Array([
|
|
87
|
-
0.299,
|
|
88
|
-
0.587,
|
|
89
|
-
0.114,
|
|
90
|
-
0, // Red output (luminance)
|
|
91
|
-
0.299,
|
|
92
|
-
0.587,
|
|
93
|
-
0.114,
|
|
94
|
-
0, // Green output (luminance)
|
|
95
|
-
0.299,
|
|
96
|
-
0.587,
|
|
97
|
-
0.114,
|
|
98
|
-
0, // Blue output (luminance)
|
|
99
|
-
0,
|
|
100
|
-
0,
|
|
101
|
-
0,
|
|
102
|
-
1, // Alpha output - identity
|
|
103
|
-
])
|
|
104
|
-
|
|
105
|
-
// Protanopia compensation matrix - shifts colors to make them more distinguishable
|
|
106
|
-
export const PROTANOPIA_COMP_MATRIX = new Float32Array([
|
|
107
|
-
1.0,
|
|
108
|
-
0.2,
|
|
109
|
-
0.0,
|
|
110
|
-
0, // Boost red channel
|
|
111
|
-
0.0,
|
|
112
|
-
0.9,
|
|
113
|
-
0.1,
|
|
114
|
-
0, // Adjust green
|
|
115
|
-
0.0,
|
|
116
|
-
0.1,
|
|
117
|
-
0.9,
|
|
118
|
-
0, // Enhance blue
|
|
119
|
-
0,
|
|
120
|
-
0,
|
|
121
|
-
0,
|
|
122
|
-
1, // Alpha output - identity
|
|
123
|
-
])
|
|
124
|
-
|
|
125
|
-
// Deuteranopia compensation matrix - shifts colors to make them more distinguishable
|
|
126
|
-
export const DEUTERANOPIA_COMP_MATRIX = new Float32Array([
|
|
127
|
-
0.9,
|
|
128
|
-
0.1,
|
|
129
|
-
0.0,
|
|
130
|
-
0, // Adjust red
|
|
131
|
-
0.2,
|
|
132
|
-
0.8,
|
|
133
|
-
0.0,
|
|
134
|
-
0, // Boost green channel
|
|
135
|
-
0.0,
|
|
136
|
-
0.0,
|
|
137
|
-
1.0,
|
|
138
|
-
0, // Keep blue
|
|
139
|
-
0,
|
|
140
|
-
0,
|
|
141
|
-
0,
|
|
142
|
-
1, // Alpha output - identity
|
|
143
|
-
])
|
|
144
|
-
|
|
145
|
-
// Tritanopia compensation matrix - shifts colors to make them more distinguishable
|
|
146
|
-
export const TRITANOPIA_COMP_MATRIX = new Float32Array([
|
|
147
|
-
1.0,
|
|
148
|
-
0.0,
|
|
149
|
-
0.0,
|
|
150
|
-
0, // Keep red
|
|
151
|
-
0.0,
|
|
152
|
-
0.9,
|
|
153
|
-
0.1,
|
|
154
|
-
0, // Adjust green
|
|
155
|
-
0.1,
|
|
156
|
-
0.0,
|
|
157
|
-
0.9,
|
|
158
|
-
0, // Boost blue channel
|
|
159
|
-
0,
|
|
160
|
-
0,
|
|
161
|
-
0,
|
|
162
|
-
1, // Alpha output - identity
|
|
163
|
-
])
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Creative color effect matrices.
|
|
167
|
-
*/
|
|
168
|
-
|
|
169
|
-
// Technicolor effect - enhances reds and greens for a vintage Hollywood look
|
|
170
|
-
export const TECHNICOLOR_MATRIX = new Float32Array([
|
|
171
|
-
1.5,
|
|
172
|
-
-0.2,
|
|
173
|
-
-0.3,
|
|
174
|
-
0, // Red output - boosted with reduced green/blue influence
|
|
175
|
-
-0.3,
|
|
176
|
-
1.4,
|
|
177
|
-
-0.1,
|
|
178
|
-
0, // Green output - boosted with reduced red/blue influence
|
|
179
|
-
-0.2,
|
|
180
|
-
-0.2,
|
|
181
|
-
1.4,
|
|
182
|
-
0, // Blue output - slightly boosted
|
|
183
|
-
0,
|
|
184
|
-
0,
|
|
185
|
-
0,
|
|
186
|
-
1, // Alpha output - identity
|
|
187
|
-
])
|
|
188
|
-
|
|
189
|
-
// Solarization effect - partial negative that creates a surreal look
|
|
190
|
-
// Inverts blue channel strongly, partially inverts others
|
|
191
|
-
export const SOLARIZATION_MATRIX = new Float32Array([
|
|
192
|
-
-0.5,
|
|
193
|
-
0.5,
|
|
194
|
-
0.5,
|
|
195
|
-
0, // Red output - partial negative
|
|
196
|
-
0.5,
|
|
197
|
-
-0.5,
|
|
198
|
-
0.5,
|
|
199
|
-
0, // Green output - partial negative
|
|
200
|
-
0.5,
|
|
201
|
-
0.5,
|
|
202
|
-
-0.5,
|
|
203
|
-
0, // Blue output - partial negative
|
|
204
|
-
0,
|
|
205
|
-
0,
|
|
206
|
-
0,
|
|
207
|
-
1, // Alpha output - identity
|
|
208
|
-
])
|
|
209
|
-
|
|
210
|
-
// Synthwave effect - eliminates green and shifts red toward magenta for that retro neon aesthetic
|
|
211
|
-
export const SYNTHWAVE_MATRIX = new Float32Array([
|
|
212
|
-
1.0,
|
|
213
|
-
0.0,
|
|
214
|
-
0.25,
|
|
215
|
-
0, // Red output - full red + some blue = magenta when bright
|
|
216
|
-
0.1,
|
|
217
|
-
0.1,
|
|
218
|
-
0.1,
|
|
219
|
-
0, // Green output - heavily suppressed, minimal contribution
|
|
220
|
-
0.25,
|
|
221
|
-
0.0,
|
|
222
|
-
1.0,
|
|
223
|
-
0, // Blue output - full blue + some red = enhances magenta tones
|
|
224
|
-
0,
|
|
225
|
-
0,
|
|
226
|
-
0,
|
|
227
|
-
1, // Alpha output - identity
|
|
228
|
-
])
|
|
229
|
-
|
|
230
|
-
// Greenscale effect - converts image to monochrome green by mapping luminance to green channel only
|
|
231
|
-
export const GREENSCALE_MATRIX = new Float32Array([
|
|
232
|
-
0,
|
|
233
|
-
0,
|
|
234
|
-
0,
|
|
235
|
-
0, // Red output - zeroed out
|
|
236
|
-
0.299,
|
|
237
|
-
0.587,
|
|
238
|
-
0.114,
|
|
239
|
-
0, // Green output - full luminance from all channels
|
|
240
|
-
0,
|
|
241
|
-
0,
|
|
242
|
-
0,
|
|
243
|
-
0, // Blue output - zeroed out
|
|
244
|
-
0,
|
|
245
|
-
0,
|
|
246
|
-
0,
|
|
247
|
-
1, // Alpha output - identity
|
|
248
|
-
])
|
|
249
|
-
|
|
250
|
-
// Grayscale effect - converts image to monochrome gray using luminance weights
|
|
251
|
-
export const GRAYSCALE_MATRIX = new Float32Array([
|
|
252
|
-
0.299,
|
|
253
|
-
0.587,
|
|
254
|
-
0.114,
|
|
255
|
-
0, // Red output - luminance from all channels
|
|
256
|
-
0.299,
|
|
257
|
-
0.587,
|
|
258
|
-
0.114,
|
|
259
|
-
0, // Green output - luminance from all channels
|
|
260
|
-
0.299,
|
|
261
|
-
0.587,
|
|
262
|
-
0.114,
|
|
263
|
-
0, // Blue output - luminance from all channels
|
|
264
|
-
0,
|
|
265
|
-
0,
|
|
266
|
-
0,
|
|
267
|
-
1, // Alpha output - identity
|
|
268
|
-
])
|
|
269
|
-
|
|
270
|
-
// Invert effect - inverts all color channels (photographic negative)
|
|
271
|
-
export const INVERT_MATRIX = new Float32Array([
|
|
272
|
-
-1,
|
|
273
|
-
0,
|
|
274
|
-
0,
|
|
275
|
-
1, // Red output = 1 - R
|
|
276
|
-
0,
|
|
277
|
-
-1,
|
|
278
|
-
0,
|
|
279
|
-
1, // Green output = 1 - G
|
|
280
|
-
0,
|
|
281
|
-
0,
|
|
282
|
-
-1,
|
|
283
|
-
1, // Blue output = 1 - B
|
|
284
|
-
0,
|
|
285
|
-
0,
|
|
286
|
-
0,
|
|
287
|
-
1, // Alpha output - identity
|
|
288
|
-
])
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getCharacterPositions,
|
|
3
|
-
measureText,
|
|
4
|
-
renderFontToFrameBuffer,
|
|
5
|
-
type ASCIIFontName,
|
|
6
|
-
type fonts,
|
|
7
|
-
} from "../lib/ascii.font.js"
|
|
8
|
-
import { parseColor, type ColorInput } from "../lib/RGBA.js"
|
|
9
|
-
import {
|
|
10
|
-
ASCIIFontSelectionHelper,
|
|
11
|
-
convertGlobalToLocalSelection,
|
|
12
|
-
Selection,
|
|
13
|
-
type LocalSelectionBounds,
|
|
14
|
-
} from "../lib/selection.js"
|
|
15
|
-
import type { RenderableOptions } from "../Renderable.js"
|
|
16
|
-
import type { RenderContext } from "../types.js"
|
|
17
|
-
import { FrameBufferRenderable, type FrameBufferOptions } from "./FrameBuffer.js"
|
|
18
|
-
|
|
19
|
-
export interface ASCIIFontOptions extends Omit<RenderableOptions<ASCIIFontRenderable>, "width" | "height"> {
|
|
20
|
-
text?: string
|
|
21
|
-
font?: ASCIIFontName
|
|
22
|
-
color?: ColorInput | ColorInput[]
|
|
23
|
-
backgroundColor?: ColorInput
|
|
24
|
-
selectionBg?: ColorInput
|
|
25
|
-
selectionFg?: ColorInput
|
|
26
|
-
selectable?: boolean
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export class ASCIIFontRenderable extends FrameBufferRenderable {
|
|
30
|
-
public override selectable: boolean = true
|
|
31
|
-
|
|
32
|
-
protected static readonly _defaultOptions = {
|
|
33
|
-
text: "",
|
|
34
|
-
font: "tiny",
|
|
35
|
-
color: "#FFFFFF",
|
|
36
|
-
backgroundColor: "transparent",
|
|
37
|
-
selectionBg: undefined,
|
|
38
|
-
selectionFg: undefined,
|
|
39
|
-
selectable: true,
|
|
40
|
-
} satisfies Partial<ASCIIFontOptions>
|
|
41
|
-
|
|
42
|
-
protected _text: string
|
|
43
|
-
protected _font: keyof typeof fonts
|
|
44
|
-
protected _color: ColorInput | ColorInput[]
|
|
45
|
-
protected _backgroundColor: ColorInput
|
|
46
|
-
protected _selectionBg: ColorInput | undefined
|
|
47
|
-
protected _selectionFg: ColorInput | undefined
|
|
48
|
-
protected lastLocalSelection: LocalSelectionBounds | null = null
|
|
49
|
-
|
|
50
|
-
private selectionHelper: ASCIIFontSelectionHelper
|
|
51
|
-
|
|
52
|
-
constructor(ctx: RenderContext, options: ASCIIFontOptions) {
|
|
53
|
-
const defaultOptions = ASCIIFontRenderable._defaultOptions
|
|
54
|
-
const font = options.font || defaultOptions.font
|
|
55
|
-
const text = options.text || defaultOptions.text
|
|
56
|
-
const measurements = measureText({ text: text, font })
|
|
57
|
-
|
|
58
|
-
super(ctx, {
|
|
59
|
-
flexShrink: 0,
|
|
60
|
-
...options,
|
|
61
|
-
width: measurements.width || 1,
|
|
62
|
-
height: measurements.height || 1,
|
|
63
|
-
respectAlpha: true,
|
|
64
|
-
} as FrameBufferOptions)
|
|
65
|
-
|
|
66
|
-
this._text = text
|
|
67
|
-
this._font = font
|
|
68
|
-
this._color = options.color || defaultOptions.color
|
|
69
|
-
this._backgroundColor = options.backgroundColor || defaultOptions.backgroundColor
|
|
70
|
-
this._selectionBg = options.selectionBg ? parseColor(options.selectionBg) : undefined
|
|
71
|
-
this._selectionFg = options.selectionFg ? parseColor(options.selectionFg) : undefined
|
|
72
|
-
this.selectable = options.selectable ?? true
|
|
73
|
-
|
|
74
|
-
this.selectionHelper = new ASCIIFontSelectionHelper(
|
|
75
|
-
() => this._text,
|
|
76
|
-
() => this._font,
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
this.renderFontToBuffer()
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
get text(): string {
|
|
83
|
-
return this._text
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
set text(value: string) {
|
|
87
|
-
this._text = value
|
|
88
|
-
this.updateDimensions()
|
|
89
|
-
|
|
90
|
-
if (this.lastLocalSelection) {
|
|
91
|
-
this.selectionHelper.onLocalSelectionChanged(this.lastLocalSelection, this.width, this.height)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
this.renderFontToBuffer()
|
|
95
|
-
this.requestRender()
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
get font(): keyof typeof fonts {
|
|
99
|
-
return this._font
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
set font(value: keyof typeof fonts) {
|
|
103
|
-
this._font = value
|
|
104
|
-
this.updateDimensions()
|
|
105
|
-
|
|
106
|
-
if (this.lastLocalSelection) {
|
|
107
|
-
this.selectionHelper.onLocalSelectionChanged(this.lastLocalSelection, this.width, this.height)
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
this.renderFontToBuffer()
|
|
111
|
-
this.requestRender()
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
get color(): ColorInput | ColorInput[] {
|
|
115
|
-
return this._color
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
set color(value: ColorInput | ColorInput[]) {
|
|
119
|
-
this._color = value
|
|
120
|
-
this.renderFontToBuffer()
|
|
121
|
-
this.requestRender()
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
get backgroundColor(): ColorInput {
|
|
125
|
-
return this._backgroundColor
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
set backgroundColor(value: ColorInput) {
|
|
129
|
-
this._backgroundColor = value
|
|
130
|
-
this.renderFontToBuffer()
|
|
131
|
-
this.requestRender()
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
private updateDimensions(): void {
|
|
135
|
-
const measurements = measureText({ text: this._text, font: this._font })
|
|
136
|
-
this.width = measurements.width
|
|
137
|
-
this.height = measurements.height
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
override shouldStartSelection(x: number, y: number): boolean {
|
|
141
|
-
const localX = x - this.x
|
|
142
|
-
const localY = y - this.y
|
|
143
|
-
return this.selectionHelper.shouldStartSelection(localX, localY, this.width, this.height)
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
override onSelectionChanged(selection: Selection | null): boolean {
|
|
147
|
-
const localSelection = convertGlobalToLocalSelection(selection, this.x, this.y)
|
|
148
|
-
this.lastLocalSelection = localSelection
|
|
149
|
-
const changed = this.selectionHelper.onLocalSelectionChanged(localSelection, this.width, this.height)
|
|
150
|
-
if (changed) {
|
|
151
|
-
this.renderFontToBuffer()
|
|
152
|
-
this.requestRender()
|
|
153
|
-
}
|
|
154
|
-
return changed
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
override getSelectedText(): string {
|
|
158
|
-
const selection = this.selectionHelper.getSelection()
|
|
159
|
-
if (!selection) return ""
|
|
160
|
-
return this._text.slice(selection.start, selection.end)
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
override hasSelection(): boolean {
|
|
164
|
-
return this.selectionHelper.hasSelection()
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
protected override onResize(width: number, height: number): void {
|
|
168
|
-
super.onResize(width, height)
|
|
169
|
-
this.renderFontToBuffer()
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
private renderFontToBuffer(): void {
|
|
173
|
-
if (this.isDestroyed) return
|
|
174
|
-
this.frameBuffer.clear(parseColor(this._backgroundColor))
|
|
175
|
-
|
|
176
|
-
renderFontToFrameBuffer(this.frameBuffer, {
|
|
177
|
-
text: this._text,
|
|
178
|
-
x: 0,
|
|
179
|
-
y: 0,
|
|
180
|
-
color: this.color,
|
|
181
|
-
backgroundColor: this._backgroundColor,
|
|
182
|
-
font: this._font,
|
|
183
|
-
})
|
|
184
|
-
|
|
185
|
-
const selection = this.selectionHelper.getSelection()
|
|
186
|
-
if (selection && (this._selectionBg || this._selectionFg)) {
|
|
187
|
-
this.renderSelectionHighlight(selection)
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
private renderSelectionHighlight(selection: { start: number; end: number }): void {
|
|
192
|
-
if (!this._selectionBg && !this._selectionFg) return
|
|
193
|
-
|
|
194
|
-
const selectedText = this._text.slice(selection.start, selection.end)
|
|
195
|
-
if (!selectedText) return
|
|
196
|
-
|
|
197
|
-
const positions = getCharacterPositions(this._text, this._font)
|
|
198
|
-
const startX = positions[selection.start] || 0
|
|
199
|
-
const endX =
|
|
200
|
-
selection.end < positions.length
|
|
201
|
-
? positions[selection.end]
|
|
202
|
-
: measureText({ text: this._text, font: this._font }).width
|
|
203
|
-
|
|
204
|
-
if (this._selectionBg) {
|
|
205
|
-
this.frameBuffer.fillRect(startX, 0, endX - startX, this.height, parseColor(this._selectionBg))
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
if (this._selectionFg || this._selectionBg) {
|
|
209
|
-
renderFontToFrameBuffer(this.frameBuffer, {
|
|
210
|
-
text: selectedText,
|
|
211
|
-
x: startX,
|
|
212
|
-
y: 0,
|
|
213
|
-
color: this._selectionFg ? this._selectionFg : this._color,
|
|
214
|
-
backgroundColor: this._selectionBg ? this._selectionBg : this._backgroundColor,
|
|
215
|
-
font: this._font,
|
|
216
|
-
})
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import { test, expect, describe, beforeEach, afterEach, spyOn } from "bun:test"
|
|
2
|
-
import { BoxRenderable, type BoxOptions } from "./Box.js"
|
|
3
|
-
import { createTestRenderer, type TestRenderer } from "../testing/test-renderer.js"
|
|
4
|
-
import type { BorderStyle } from "../lib/border.js"
|
|
5
|
-
|
|
6
|
-
let testRenderer: TestRenderer
|
|
7
|
-
let renderOnce: () => Promise<void>
|
|
8
|
-
let captureFrame: () => string
|
|
9
|
-
let warnSpy: ReturnType<typeof spyOn>
|
|
10
|
-
|
|
11
|
-
beforeEach(async () => {
|
|
12
|
-
;({ renderer: testRenderer, renderOnce, captureCharFrame: captureFrame } = await createTestRenderer({}))
|
|
13
|
-
warnSpy = spyOn(console, "warn").mockImplementation(() => {})
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
afterEach(() => {
|
|
17
|
-
testRenderer.destroy()
|
|
18
|
-
warnSpy.mockRestore()
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
describe("BoxRenderable - focusable option", () => {
|
|
22
|
-
test("is not focusable by default", async () => {
|
|
23
|
-
const box = new BoxRenderable(testRenderer, {
|
|
24
|
-
id: "test-box",
|
|
25
|
-
width: 10,
|
|
26
|
-
height: 5,
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
expect(box.focusable).toBe(false)
|
|
30
|
-
box.focus()
|
|
31
|
-
expect(box.focused).toBe(false)
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
test("can be made focusable via option", async () => {
|
|
35
|
-
const box = new BoxRenderable(testRenderer, {
|
|
36
|
-
id: "test-box",
|
|
37
|
-
focusable: true,
|
|
38
|
-
width: 10,
|
|
39
|
-
height: 5,
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
expect(box.focusable).toBe(true)
|
|
43
|
-
box.focus()
|
|
44
|
-
expect(box.focused).toBe(true)
|
|
45
|
-
})
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
describe("BoxRenderable - borderStyle validation", () => {
|
|
49
|
-
describe("regression: invalid borderStyle via constructor does not crash", () => {
|
|
50
|
-
test("handles invalid string borderStyle in constructor", async () => {
|
|
51
|
-
const box = new BoxRenderable(testRenderer, {
|
|
52
|
-
id: "test-box",
|
|
53
|
-
borderStyle: "invalid-style" as BorderStyle,
|
|
54
|
-
border: true,
|
|
55
|
-
width: 10,
|
|
56
|
-
height: 5,
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
testRenderer.root.add(box)
|
|
60
|
-
await renderOnce()
|
|
61
|
-
|
|
62
|
-
expect(box.borderStyle).toBe("single")
|
|
63
|
-
expect(box.isDestroyed).toBe(false)
|
|
64
|
-
})
|
|
65
|
-
|
|
66
|
-
test("handles undefined borderStyle in constructor", async () => {
|
|
67
|
-
const box = new BoxRenderable(testRenderer, {
|
|
68
|
-
id: "test-box",
|
|
69
|
-
borderStyle: undefined,
|
|
70
|
-
border: true,
|
|
71
|
-
width: 10,
|
|
72
|
-
height: 5,
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
testRenderer.root.add(box)
|
|
76
|
-
await renderOnce()
|
|
77
|
-
|
|
78
|
-
expect(box.borderStyle).toBe("single")
|
|
79
|
-
expect(box.isDestroyed).toBe(false)
|
|
80
|
-
})
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
describe("regression: invalid borderStyle via setter does not crash", () => {
|
|
84
|
-
test("handles invalid string borderStyle via setter", async () => {
|
|
85
|
-
const box = new BoxRenderable(testRenderer, {
|
|
86
|
-
id: "test-box",
|
|
87
|
-
borderStyle: "double",
|
|
88
|
-
border: true,
|
|
89
|
-
width: 10,
|
|
90
|
-
height: 5,
|
|
91
|
-
})
|
|
92
|
-
|
|
93
|
-
testRenderer.root.add(box)
|
|
94
|
-
await renderOnce()
|
|
95
|
-
|
|
96
|
-
expect(box.borderStyle).toBe("double")
|
|
97
|
-
|
|
98
|
-
box.borderStyle = "invalid-style" as BorderStyle
|
|
99
|
-
await renderOnce()
|
|
100
|
-
|
|
101
|
-
expect(box.borderStyle).toBe("single")
|
|
102
|
-
expect(box.isDestroyed).toBe(false)
|
|
103
|
-
})
|
|
104
|
-
|
|
105
|
-
test("renders correctly after fallback from invalid borderStyle", async () => {
|
|
106
|
-
const box = new BoxRenderable(testRenderer, {
|
|
107
|
-
id: "test-box",
|
|
108
|
-
borderStyle: "invalid" as BorderStyle,
|
|
109
|
-
border: true,
|
|
110
|
-
width: 10,
|
|
111
|
-
height: 5,
|
|
112
|
-
})
|
|
113
|
-
|
|
114
|
-
testRenderer.root.add(box)
|
|
115
|
-
|
|
116
|
-
// Should not throw during render
|
|
117
|
-
await expect(renderOnce()).resolves.toBeUndefined()
|
|
118
|
-
expect(box.isDestroyed).toBe(false)
|
|
119
|
-
})
|
|
120
|
-
})
|
|
121
|
-
|
|
122
|
-
describe("valid borderStyle values work correctly", () => {
|
|
123
|
-
test.each(["single", "double", "rounded", "heavy"] as BorderStyle[])(
|
|
124
|
-
"accepts valid borderStyle '%s' in constructor",
|
|
125
|
-
async (style) => {
|
|
126
|
-
const box = new BoxRenderable(testRenderer, {
|
|
127
|
-
id: "test-box",
|
|
128
|
-
borderStyle: style,
|
|
129
|
-
border: true,
|
|
130
|
-
width: 10,
|
|
131
|
-
height: 5,
|
|
132
|
-
})
|
|
133
|
-
|
|
134
|
-
testRenderer.root.add(box)
|
|
135
|
-
await renderOnce()
|
|
136
|
-
|
|
137
|
-
expect(box.borderStyle).toBe(style)
|
|
138
|
-
},
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
test.each(["single", "double", "rounded", "heavy"] as BorderStyle[])(
|
|
142
|
-
"accepts valid borderStyle '%s' via setter",
|
|
143
|
-
async (style) => {
|
|
144
|
-
const box = new BoxRenderable(testRenderer, {
|
|
145
|
-
id: "test-box",
|
|
146
|
-
border: true,
|
|
147
|
-
width: 10,
|
|
148
|
-
height: 5,
|
|
149
|
-
})
|
|
150
|
-
|
|
151
|
-
testRenderer.root.add(box)
|
|
152
|
-
await renderOnce()
|
|
153
|
-
|
|
154
|
-
box.borderStyle = style
|
|
155
|
-
await renderOnce()
|
|
156
|
-
|
|
157
|
-
expect(box.borderStyle).toBe(style)
|
|
158
|
-
},
|
|
159
|
-
)
|
|
160
|
-
})
|
|
161
|
-
})
|
|
162
|
-
|
|
163
|
-
describe("BoxRenderable - border titles (top and bottom)", () => {
|
|
164
|
-
test("renders top and bottom titles on their respective borders", async () => {
|
|
165
|
-
const box = new BoxRenderable(testRenderer, {
|
|
166
|
-
id: "border-title-box",
|
|
167
|
-
border: true,
|
|
168
|
-
width: 16,
|
|
169
|
-
height: 5,
|
|
170
|
-
title: "Top",
|
|
171
|
-
titleAlignment: "left",
|
|
172
|
-
bottomTitle: "Bot",
|
|
173
|
-
bottomTitleAlignment: "right",
|
|
174
|
-
})
|
|
175
|
-
|
|
176
|
-
testRenderer.root.add(box)
|
|
177
|
-
await renderOnce()
|
|
178
|
-
|
|
179
|
-
const lines = captureFrame().split("\n")
|
|
180
|
-
|
|
181
|
-
expect(lines[0].slice(0, 16)).toBe("┌─Top──────────┐")
|
|
182
|
-
expect(lines[4].slice(0, 16)).toBe("└──────────Bot─┘")
|
|
183
|
-
})
|
|
184
|
-
|
|
185
|
-
test.each([
|
|
186
|
-
["left", "└─Bot────────────┘"],
|
|
187
|
-
["center", "└──────Bot───────┘"],
|
|
188
|
-
["right", "└────────────Bot─┘"],
|
|
189
|
-
] as const)("renders bottom title with %s alignment", async (alignment, expectedBorder) => {
|
|
190
|
-
const box = new BoxRenderable(testRenderer, {
|
|
191
|
-
id: `bottom-title-${alignment}`,
|
|
192
|
-
border: true,
|
|
193
|
-
width: 18,
|
|
194
|
-
height: 5,
|
|
195
|
-
bottomTitle: "Bot",
|
|
196
|
-
bottomTitleAlignment: alignment,
|
|
197
|
-
})
|
|
198
|
-
|
|
199
|
-
testRenderer.root.add(box)
|
|
200
|
-
await renderOnce()
|
|
201
|
-
|
|
202
|
-
const lines = captureFrame().split("\n")
|
|
203
|
-
expect(lines[4].slice(0, 18)).toBe(expectedBorder)
|
|
204
|
-
})
|
|
205
|
-
})
|