@inhuman.tools/quickdraw 0.0.0-stage → 0.3.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/LICENSE.md +7 -0
- package/README.md +101 -2
- package/aurora.vert +168 -0
- package/dist/bench/host.d.ts +62 -0
- package/dist/bench/host.d.ts.map +1 -0
- package/dist/bench/host.js +77 -0
- package/dist/bench/host.js.map +1 -0
- package/dist/bench/main.d.ts +6 -0
- package/dist/bench/main.d.ts.map +1 -0
- package/dist/bench/main.js +118 -0
- package/dist/bench/main.js.map +1 -0
- package/dist/bench/model.d.ts +36 -0
- package/dist/bench/model.d.ts.map +1 -0
- package/dist/bench/model.js +112 -0
- package/dist/bench/model.js.map +1 -0
- package/dist/bench/tea.d.ts +14 -0
- package/dist/bench/tea.d.ts.map +1 -0
- package/dist/bench/tea.js +6 -0
- package/dist/bench/tea.js.map +1 -0
- package/dist/bench/view.d.ts +9 -0
- package/dist/bench/view.d.ts.map +1 -0
- package/dist/bench/view.js +88 -0
- package/dist/bench/view.js.map +1 -0
- package/dist/bench/worker.d.ts +6 -0
- package/dist/bench/worker.d.ts.map +1 -0
- package/dist/bench/worker.js +46 -0
- package/dist/bench/worker.js.map +1 -0
- package/dist/buffer/bgfx-mark.d.ts +32 -0
- package/dist/buffer/bgfx-mark.d.ts.map +1 -0
- package/dist/buffer/bgfx-mark.js +43 -0
- package/dist/buffer/bgfx-mark.js.map +1 -0
- package/dist/buffer/index.d.ts +191 -0
- package/dist/buffer/index.d.ts.map +1 -0
- package/dist/buffer/index.js +353 -0
- package/dist/buffer/index.js.map +1 -0
- package/dist/capabilities/env.d.ts +23 -0
- package/dist/capabilities/env.d.ts.map +1 -0
- package/dist/capabilities/env.js +35 -0
- package/dist/capabilities/env.js.map +1 -0
- package/dist/capabilities/index.d.ts +13 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +13 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/parse.d.ts +41 -0
- package/dist/capabilities/parse.d.ts.map +1 -0
- package/dist/capabilities/parse.js +86 -0
- package/dist/capabilities/parse.js.map +1 -0
- package/dist/capabilities/probe.d.ts +37 -0
- package/dist/capabilities/probe.d.ts.map +1 -0
- package/dist/capabilities/probe.js +75 -0
- package/dist/capabilities/probe.js.map +1 -0
- package/dist/capabilities/sequences.d.ts +33 -0
- package/dist/capabilities/sequences.d.ts.map +1 -0
- package/dist/capabilities/sequences.js +36 -0
- package/dist/capabilities/sequences.js.map +1 -0
- package/dist/capabilities/types.d.ts +25 -0
- package/dist/capabilities/types.d.ts.map +1 -0
- package/dist/capabilities/types.js +5 -0
- package/dist/capabilities/types.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/input/decode.d.ts +167 -0
- package/dist/input/decode.d.ts.map +1 -0
- package/dist/input/decode.js +825 -0
- package/dist/input/decode.js.map +1 -0
- package/dist/input/draft.d.ts +85 -0
- package/dist/input/draft.d.ts.map +1 -0
- package/dist/input/draft.js +276 -0
- package/dist/input/draft.js.map +1 -0
- package/dist/input/index.d.ts +3 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/index.js +3 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/prompt-blocks.d.ts +58 -0
- package/dist/input/prompt-blocks.d.ts.map +1 -0
- package/dist/input/prompt-blocks.js +48 -0
- package/dist/input/prompt-blocks.js.map +1 -0
- package/dist/input/rich-draft.d.ts +46 -0
- package/dist/input/rich-draft.d.ts.map +1 -0
- package/dist/input/rich-draft.js +391 -0
- package/dist/input/rich-draft.js.map +1 -0
- package/dist/input/rich-hit.d.ts +17 -0
- package/dist/input/rich-hit.d.ts.map +1 -0
- package/dist/input/rich-hit.js +89 -0
- package/dist/input/rich-hit.js.map +1 -0
- package/dist/input/rich-intake.d.ts +16 -0
- package/dist/input/rich-intake.d.ts.map +1 -0
- package/dist/input/rich-intake.js +22 -0
- package/dist/input/rich-intake.js.map +1 -0
- package/dist/input/rich-paint.d.ts +13 -0
- package/dist/input/rich-paint.d.ts.map +1 -0
- package/dist/input/rich-paint.js +18 -0
- package/dist/input/rich-paint.js.map +1 -0
- package/dist/internals/bgfx/index.d.ts +17 -0
- package/dist/internals/bgfx/index.d.ts.map +1 -0
- package/dist/internals/bgfx/index.js +17 -0
- package/dist/internals/bgfx/index.js.map +1 -0
- package/dist/internals/bgfx/materialize.d.ts +31 -0
- package/dist/internals/bgfx/materialize.d.ts.map +1 -0
- package/dist/internals/bgfx/materialize.js +117 -0
- package/dist/internals/bgfx/materialize.js.map +1 -0
- package/dist/internals/bgfx/opacity.d.ts +37 -0
- package/dist/internals/bgfx/opacity.d.ts.map +1 -0
- package/dist/internals/bgfx/opacity.js +76 -0
- package/dist/internals/bgfx/opacity.js.map +1 -0
- package/dist/internals/bgfx/registry.d.ts +13 -0
- package/dist/internals/bgfx/registry.d.ts.map +1 -0
- package/dist/internals/bgfx/registry.js +24 -0
- package/dist/internals/bgfx/registry.js.map +1 -0
- package/dist/internals/bgfx/sab-layout.d.ts +61 -0
- package/dist/internals/bgfx/sab-layout.d.ts.map +1 -0
- package/dist/internals/bgfx/sab-layout.js +107 -0
- package/dist/internals/bgfx/sab-layout.js.map +1 -0
- package/dist/internals/bgfx/shader-frame-host.d.ts +22 -0
- package/dist/internals/bgfx/shader-frame-host.d.ts.map +1 -0
- package/dist/internals/bgfx/shader-frame-host.js +165 -0
- package/dist/internals/bgfx/shader-frame-host.js.map +1 -0
- package/dist/internals/bgfx/shadertoy-catalog.d.ts +41 -0
- package/dist/internals/bgfx/shadertoy-catalog.d.ts.map +1 -0
- package/dist/internals/bgfx/shadertoy-catalog.js +200 -0
- package/dist/internals/bgfx/shadertoy-catalog.js.map +1 -0
- package/dist/internals/bgfx/shadertoy-gl.d.ts +38 -0
- package/dist/internals/bgfx/shadertoy-gl.d.ts.map +1 -0
- package/dist/internals/bgfx/shadertoy-gl.js +283 -0
- package/dist/internals/bgfx/shadertoy-gl.js.map +1 -0
- package/dist/internals/bgfx/types.d.ts +51 -0
- package/dist/internals/bgfx/types.d.ts.map +1 -0
- package/dist/internals/bgfx/types.js +14 -0
- package/dist/internals/bgfx/types.js.map +1 -0
- package/dist/internals/bgfx-worker.d.ts +6 -0
- package/dist/internals/bgfx-worker.d.ts.map +1 -0
- package/dist/internals/bgfx-worker.js +131 -0
- package/dist/internals/bgfx-worker.js.map +1 -0
- package/dist/layout/birth.d.ts +77 -0
- package/dist/layout/birth.d.ts.map +1 -0
- package/dist/layout/birth.js +148 -0
- package/dist/layout/birth.js.map +1 -0
- package/dist/layout/children.d.ts +5 -0
- package/dist/layout/children.d.ts.map +1 -0
- package/dist/layout/children.js +19 -0
- package/dist/layout/children.js.map +1 -0
- package/dist/layout/chrome_frame.d.ts +254 -0
- package/dist/layout/chrome_frame.d.ts.map +1 -0
- package/dist/layout/chrome_frame.js +1080 -0
- package/dist/layout/chrome_frame.js.map +1 -0
- package/dist/layout/chrome_mask.d.ts +40 -0
- package/dist/layout/chrome_mask.d.ts.map +1 -0
- package/dist/layout/chrome_mask.js +150 -0
- package/dist/layout/chrome_mask.js.map +1 -0
- package/dist/layout/engine.d.ts +49 -0
- package/dist/layout/engine.d.ts.map +1 -0
- package/dist/layout/engine.js +1269 -0
- package/dist/layout/engine.js.map +1 -0
- package/dist/layout/flex.d.ts +36 -0
- package/dist/layout/flex.d.ts.map +1 -0
- package/dist/layout/flex.js +111 -0
- package/dist/layout/flex.js.map +1 -0
- package/dist/layout/grid.d.ts +36 -0
- package/dist/layout/grid.d.ts.map +1 -0
- package/dist/layout/grid.js +126 -0
- package/dist/layout/grid.js.map +1 -0
- package/dist/layout/index.d.ts +30 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +30 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/indication.d.ts +34 -0
- package/dist/layout/indication.d.ts.map +1 -0
- package/dist/layout/indication.js +68 -0
- package/dist/layout/indication.js.map +1 -0
- package/dist/layout/length.d.ts +18 -0
- package/dist/layout/length.d.ts.map +1 -0
- package/dist/layout/length.js +24 -0
- package/dist/layout/length.js.map +1 -0
- package/dist/layout/live_paint.d.ts +145 -0
- package/dist/layout/live_paint.d.ts.map +1 -0
- package/dist/layout/live_paint.js +255 -0
- package/dist/layout/live_paint.js.map +1 -0
- package/dist/layout/markdown.d.ts +22 -0
- package/dist/layout/markdown.d.ts.map +1 -0
- package/dist/layout/markdown.js +167 -0
- package/dist/layout/markdown.js.map +1 -0
- package/dist/layout/measure.d.ts +46 -0
- package/dist/layout/measure.d.ts.map +1 -0
- package/dist/layout/measure.js +307 -0
- package/dist/layout/measure.js.map +1 -0
- package/dist/layout/paint-hotkey.d.ts +45 -0
- package/dist/layout/paint-hotkey.d.ts.map +1 -0
- package/dist/layout/paint-hotkey.js +152 -0
- package/dist/layout/paint-hotkey.js.map +1 -0
- package/dist/layout/paint.d.ts +25 -0
- package/dist/layout/paint.d.ts.map +1 -0
- package/dist/layout/paint.js +189 -0
- package/dist/layout/paint.js.map +1 -0
- package/dist/layout/paint_theme.d.ts +85 -0
- package/dist/layout/paint_theme.d.ts.map +1 -0
- package/dist/layout/paint_theme.js +76 -0
- package/dist/layout/paint_theme.js.map +1 -0
- package/dist/layout/progress.d.ts +31 -0
- package/dist/layout/progress.d.ts.map +1 -0
- package/dist/layout/progress.js +83 -0
- package/dist/layout/progress.js.map +1 -0
- package/dist/layout/selection.d.ts +136 -0
- package/dist/layout/selection.d.ts.map +1 -0
- package/dist/layout/selection.js +312 -0
- package/dist/layout/selection.js.map +1 -0
- package/dist/layout/selection_gesture.d.ts +88 -0
- package/dist/layout/selection_gesture.d.ts.map +1 -0
- package/dist/layout/selection_gesture.js +239 -0
- package/dist/layout/selection_gesture.js.map +1 -0
- package/dist/layout/selection_paint.d.ts +47 -0
- package/dist/layout/selection_paint.d.ts.map +1 -0
- package/dist/layout/selection_paint.js +320 -0
- package/dist/layout/selection_paint.js.map +1 -0
- package/dist/layout/serialize.d.ts +49 -0
- package/dist/layout/serialize.d.ts.map +1 -0
- package/dist/layout/serialize.js +437 -0
- package/dist/layout/serialize.js.map +1 -0
- package/dist/layout/squeeze.d.ts +58 -0
- package/dist/layout/squeeze.d.ts.map +1 -0
- package/dist/layout/squeeze.js +239 -0
- package/dist/layout/squeeze.js.map +1 -0
- package/dist/layout/text.d.ts +44 -0
- package/dist/layout/text.d.ts.map +1 -0
- package/dist/layout/text.js +230 -0
- package/dist/layout/text.js.map +1 -0
- package/dist/layout/theme_store.d.ts +21 -0
- package/dist/layout/theme_store.d.ts.map +1 -0
- package/dist/layout/theme_store.js +133 -0
- package/dist/layout/theme_store.js.map +1 -0
- package/dist/layout/types.d.ts +564 -0
- package/dist/layout/types.d.ts.map +1 -0
- package/dist/layout/types.js +2 -0
- package/dist/layout/types.js.map +1 -0
- package/dist/layout/visual_draft.d.ts +60 -0
- package/dist/layout/visual_draft.d.ts.map +1 -0
- package/dist/layout/visual_draft.js +199 -0
- package/dist/layout/visual_draft.js.map +1 -0
- package/dist/lexicon/color.d.ts +22 -0
- package/dist/lexicon/color.d.ts.map +1 -0
- package/dist/lexicon/color.js +6 -0
- package/dist/lexicon/color.js.map +1 -0
- package/dist/lexicon/index.d.ts +15 -0
- package/dist/lexicon/index.d.ts.map +1 -0
- package/dist/lexicon/index.js +15 -0
- package/dist/lexicon/index.js.map +1 -0
- package/dist/lexicon/prominence.d.ts +46 -0
- package/dist/lexicon/prominence.d.ts.map +1 -0
- package/dist/lexicon/prominence.js +73 -0
- package/dist/lexicon/prominence.js.map +1 -0
- package/dist/lexicon/quarantine.d.ts +21 -0
- package/dist/lexicon/quarantine.d.ts.map +1 -0
- package/dist/lexicon/quarantine.js +15 -0
- package/dist/lexicon/quarantine.js.map +1 -0
- package/dist/lexicon/roles.d.ts +37 -0
- package/dist/lexicon/roles.d.ts.map +1 -0
- package/dist/lexicon/roles.js +52 -0
- package/dist/lexicon/roles.js.map +1 -0
- package/dist/lexicon/tiers.d.ts +18 -0
- package/dist/lexicon/tiers.d.ts.map +1 -0
- package/dist/lexicon/tiers.js +17 -0
- package/dist/lexicon/tiers.js.map +1 -0
- package/dist/measure/index.d.ts +43 -0
- package/dist/measure/index.d.ts.map +1 -0
- package/dist/measure/index.js +120 -0
- package/dist/measure/index.js.map +1 -0
- package/dist/render.d.ts +72 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +164 -0
- package/dist/render.js.map +1 -0
- package/dist/runtime/agents_keys.d.ts +8 -0
- package/dist/runtime/agents_keys.d.ts.map +1 -0
- package/dist/runtime/agents_keys.js +24 -0
- package/dist/runtime/agents_keys.js.map +1 -0
- package/dist/runtime/agents_peek.d.ts +44 -0
- package/dist/runtime/agents_peek.d.ts.map +1 -0
- package/dist/runtime/agents_peek.js +96 -0
- package/dist/runtime/agents_peek.js.map +1 -0
- package/dist/runtime/agents_preview.d.ts +25 -0
- package/dist/runtime/agents_preview.d.ts.map +1 -0
- package/dist/runtime/agents_preview.js +118 -0
- package/dist/runtime/agents_preview.js.map +1 -0
- package/dist/runtime/box_bus.d.ts +144 -0
- package/dist/runtime/box_bus.d.ts.map +1 -0
- package/dist/runtime/box_bus.js +74 -0
- package/dist/runtime/box_bus.js.map +1 -0
- package/dist/runtime/clipboard-image.d.ts +20 -0
- package/dist/runtime/clipboard-image.d.ts.map +1 -0
- package/dist/runtime/clipboard-image.js +62 -0
- package/dist/runtime/clipboard-image.js.map +1 -0
- package/dist/runtime/copy_toast.d.ts +46 -0
- package/dist/runtime/copy_toast.d.ts.map +1 -0
- package/dist/runtime/copy_toast.js +117 -0
- package/dist/runtime/copy_toast.js.map +1 -0
- package/dist/runtime/echo.d.ts +41 -0
- package/dist/runtime/echo.d.ts.map +1 -0
- package/dist/runtime/echo.js +112 -0
- package/dist/runtime/echo.js.map +1 -0
- package/dist/runtime/frame.d.ts +79 -0
- package/dist/runtime/frame.d.ts.map +1 -0
- package/dist/runtime/frame.js +258 -0
- package/dist/runtime/frame.js.map +1 -0
- package/dist/runtime/index.d.ts +16 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +16 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/key_buffer.d.ts +19 -0
- package/dist/runtime/key_buffer.d.ts.map +1 -0
- package/dist/runtime/key_buffer.js +24 -0
- package/dist/runtime/key_buffer.js.map +1 -0
- package/dist/runtime/keys.d.ts +66 -0
- package/dist/runtime/keys.d.ts.map +1 -0
- package/dist/runtime/keys.js +220 -0
- package/dist/runtime/keys.js.map +1 -0
- package/dist/runtime/paint_snapshot.d.ts +9 -0
- package/dist/runtime/paint_snapshot.d.ts.map +1 -0
- package/dist/runtime/paint_snapshot.js +8 -0
- package/dist/runtime/paint_snapshot.js.map +1 -0
- package/dist/runtime/paint_source.d.ts +266 -0
- package/dist/runtime/paint_source.d.ts.map +1 -0
- package/dist/runtime/paint_source.js +532 -0
- package/dist/runtime/paint_source.js.map +1 -0
- package/dist/runtime/present_loop.d.ts +11 -0
- package/dist/runtime/present_loop.d.ts.map +1 -0
- package/dist/runtime/present_loop.js +46 -0
- package/dist/runtime/present_loop.js.map +1 -0
- package/dist/runtime/present_profile.d.ts +58 -0
- package/dist/runtime/present_profile.d.ts.map +1 -0
- package/dist/runtime/present_profile.js +130 -0
- package/dist/runtime/present_profile.js.map +1 -0
- package/dist/runtime/raster.d.ts +24 -0
- package/dist/runtime/raster.d.ts.map +1 -0
- package/dist/runtime/raster.js +43 -0
- package/dist/runtime/raster.js.map +1 -0
- package/dist/runtime/renderer.d.ts +151 -0
- package/dist/runtime/renderer.d.ts.map +1 -0
- package/dist/runtime/renderer.js +1607 -0
- package/dist/runtime/renderer.js.map +1 -0
- package/dist/runtime/screenshot.d.ts +9 -0
- package/dist/runtime/screenshot.d.ts.map +1 -0
- package/dist/runtime/screenshot.js +111 -0
- package/dist/runtime/screenshot.js.map +1 -0
- package/dist/runtime/selection_host.d.ts +41 -0
- package/dist/runtime/selection_host.d.ts.map +1 -0
- package/dist/runtime/selection_host.js +190 -0
- package/dist/runtime/selection_host.js.map +1 -0
- package/dist/runtime/stderr_hold.d.ts +16 -0
- package/dist/runtime/stderr_hold.d.ts.map +1 -0
- package/dist/runtime/stderr_hold.js +23 -0
- package/dist/runtime/stderr_hold.js.map +1 -0
- package/dist/runtime/thought_birth.d.ts +25 -0
- package/dist/runtime/thought_birth.d.ts.map +1 -0
- package/dist/runtime/thought_birth.js +122 -0
- package/dist/runtime/thought_birth.js.map +1 -0
- package/dist/runtime/thought_collapsed.d.ts +35 -0
- package/dist/runtime/thought_collapsed.d.ts.map +1 -0
- package/dist/runtime/thought_collapsed.js +94 -0
- package/dist/runtime/thought_collapsed.js.map +1 -0
- package/dist/runtime/tty.d.ts +58 -0
- package/dist/runtime/tty.d.ts.map +1 -0
- package/dist/runtime/tty.js +130 -0
- package/dist/runtime/tty.js.map +1 -0
- package/dist/theme/ansi16.d.ts +34 -0
- package/dist/theme/ansi16.d.ts.map +1 -0
- package/dist/theme/ansi16.js +181 -0
- package/dist/theme/ansi16.js.map +1 -0
- package/dist/theme/ansi256.d.ts +15 -0
- package/dist/theme/ansi256.d.ts.map +1 -0
- package/dist/theme/ansi256.js +94 -0
- package/dist/theme/ansi256.js.map +1 -0
- package/dist/theme/ground.d.ts +8 -0
- package/dist/theme/ground.d.ts.map +1 -0
- package/dist/theme/ground.js +11 -0
- package/dist/theme/ground.js.map +1 -0
- package/dist/theme/index.d.ts +10 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +10 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/region.d.ts +42 -0
- package/dist/theme/region.d.ts.map +1 -0
- package/dist/theme/region.js +105 -0
- package/dist/theme/region.js.map +1 -0
- package/dist/theme/resolver.d.ts +126 -0
- package/dist/theme/resolver.d.ts.map +1 -0
- package/dist/theme/resolver.js +366 -0
- package/dist/theme/resolver.js.map +1 -0
- package/dist/theme/salience.d.ts +90 -0
- package/dist/theme/salience.d.ts.map +1 -0
- package/dist/theme/salience.js +208 -0
- package/dist/theme/salience.js.map +1 -0
- package/dist/theme/seeds.d.ts +113 -0
- package/dist/theme/seeds.d.ts.map +1 -0
- package/dist/theme/seeds.js +52 -0
- package/dist/theme/seeds.js.map +1 -0
- package/dist/theme/selection.d.ts +94 -0
- package/dist/theme/selection.d.ts.map +1 -0
- package/dist/theme/selection.js +135 -0
- package/dist/theme/selection.js.map +1 -0
- package/dist/theme/theme.d.ts +41 -0
- package/dist/theme/theme.d.ts.map +1 -0
- package/dist/theme/theme.js +34 -0
- package/dist/theme/theme.js.map +1 -0
- package/dist/widgets/composer-caret.d.ts +47 -0
- package/dist/widgets/composer-caret.d.ts.map +1 -0
- package/dist/widgets/composer-caret.js +90 -0
- package/dist/widgets/composer-caret.js.map +1 -0
- package/dist/widgets/composer-click.d.ts +30 -0
- package/dist/widgets/composer-click.d.ts.map +1 -0
- package/dist/widgets/composer-click.js +89 -0
- package/dist/widgets/composer-click.js.map +1 -0
- package/dist/widgets/composer-command.d.ts +64 -0
- package/dist/widgets/composer-command.d.ts.map +1 -0
- package/dist/widgets/composer-command.js +127 -0
- package/dist/widgets/composer-command.js.map +1 -0
- package/dist/widgets/composer-frame.d.ts +74 -0
- package/dist/widgets/composer-frame.d.ts.map +1 -0
- package/dist/widgets/composer-frame.js +284 -0
- package/dist/widgets/composer-frame.js.map +1 -0
- package/dist/widgets/composer-picker.d.ts +89 -0
- package/dist/widgets/composer-picker.d.ts.map +1 -0
- package/dist/widgets/composer-picker.js +240 -0
- package/dist/widgets/composer-picker.js.map +1 -0
- package/dist/widgets/diff.d.ts +11 -0
- package/dist/widgets/diff.d.ts.map +1 -0
- package/dist/widgets/diff.js +19 -0
- package/dist/widgets/diff.js.map +1 -0
- package/dist/widgets/expand.d.ts +28 -0
- package/dist/widgets/expand.d.ts.map +1 -0
- package/dist/widgets/expand.js +94 -0
- package/dist/widgets/expand.js.map +1 -0
- package/dist/widgets/index.d.ts +126 -0
- package/dist/widgets/index.d.ts.map +1 -0
- package/dist/widgets/index.js +455 -0
- package/dist/widgets/index.js.map +1 -0
- package/dist/widgets/internals/arrival-lang.d.ts +88 -0
- package/dist/widgets/internals/arrival-lang.d.ts.map +1 -0
- package/dist/widgets/internals/arrival-lang.js +211 -0
- package/dist/widgets/internals/arrival-lang.js.map +1 -0
- package/dist/widgets/internals/diff-expand.d.ts +93 -0
- package/dist/widgets/internals/diff-expand.d.ts.map +1 -0
- package/dist/widgets/internals/diff-expand.js +1106 -0
- package/dist/widgets/internals/diff-expand.js.map +1 -0
- package/dist/widgets/internals/embedded-syntax.d.ts +62 -0
- package/dist/widgets/internals/embedded-syntax.d.ts.map +1 -0
- package/dist/widgets/internals/embedded-syntax.js +465 -0
- package/dist/widgets/internals/embedded-syntax.js.map +1 -0
- package/dist/widgets/internals/markdown-expand.d.ts +57 -0
- package/dist/widgets/internals/markdown-expand.d.ts.map +1 -0
- package/dist/widgets/internals/markdown-expand.js +980 -0
- package/dist/widgets/internals/markdown-expand.js.map +1 -0
- package/dist/widgets/internals/overlay-syntax.d.ts +24 -0
- package/dist/widgets/internals/overlay-syntax.d.ts.map +1 -0
- package/dist/widgets/internals/overlay-syntax.js +90 -0
- package/dist/widgets/internals/overlay-syntax.js.map +1 -0
- package/dist/widgets/internals/pierre-parse/cleanLastNewline.d.ts +6 -0
- package/dist/widgets/internals/pierre-parse/cleanLastNewline.d.ts.map +1 -0
- package/dist/widgets/internals/pierre-parse/cleanLastNewline.js +8 -0
- package/dist/widgets/internals/pierre-parse/cleanLastNewline.js.map +1 -0
- package/dist/widgets/internals/pierre-parse/constants.d.ts +13 -0
- package/dist/widgets/internals/pierre-parse/constants.d.ts.map +1 -0
- package/dist/widgets/internals/pierre-parse/constants.js +13 -0
- package/dist/widgets/internals/pierre-parse/constants.js.map +1 -0
- package/dist/widgets/internals/pierre-parse/detachString.d.ts +3 -0
- package/dist/widgets/internals/pierre-parse/detachString.d.ts.map +1 -0
- package/dist/widgets/internals/pierre-parse/detachString.js +24 -0
- package/dist/widgets/internals/pierre-parse/detachString.js.map +1 -0
- package/dist/widgets/internals/pierre-parse/index.d.ts +8 -0
- package/dist/widgets/internals/pierre-parse/index.d.ts.map +1 -0
- package/dist/widgets/internals/pierre-parse/index.js +8 -0
- package/dist/widgets/internals/pierre-parse/index.js.map +1 -0
- package/dist/widgets/internals/pierre-parse/parseDiffFromFile.d.ts +15 -0
- package/dist/widgets/internals/pierre-parse/parseDiffFromFile.d.ts.map +1 -0
- package/dist/widgets/internals/pierre-parse/parseDiffFromFile.js +39 -0
- package/dist/widgets/internals/pierre-parse/parseDiffFromFile.js.map +1 -0
- package/dist/widgets/internals/pierre-parse/parsePatchFiles.d.ts +11 -0
- package/dist/widgets/internals/pierre-parse/parsePatchFiles.d.ts.map +1 -0
- package/dist/widgets/internals/pierre-parse/parsePatchFiles.js +621 -0
- package/dist/widgets/internals/pierre-parse/parsePatchFiles.js.map +1 -0
- package/dist/widgets/internals/pierre-parse/types.d.ts +73 -0
- package/dist/widgets/internals/pierre-parse/types.d.ts.map +1 -0
- package/dist/widgets/internals/pierre-parse/types.js +7 -0
- package/dist/widgets/internals/pierre-parse/types.js.map +1 -0
- package/dist/widgets/internals/syntax.d.ts +55 -0
- package/dist/widgets/internals/syntax.d.ts.map +1 -0
- package/dist/widgets/internals/syntax.js +261 -0
- package/dist/widgets/internals/syntax.js.map +1 -0
- package/dist/widgets/markdown.d.ts +14 -0
- package/dist/widgets/markdown.d.ts.map +1 -0
- package/dist/widgets/markdown.js +9 -0
- package/dist/widgets/markdown.js.map +1 -0
- package/dist/widgets/shadow-stream.d.ts +88 -0
- package/dist/widgets/shadow-stream.d.ts.map +1 -0
- package/dist/widgets/shadow-stream.js +359 -0
- package/dist/widgets/shadow-stream.js.map +1 -0
- package/dist/widgets/speech.d.ts +36 -0
- package/dist/widgets/speech.d.ts.map +1 -0
- package/dist/widgets/speech.js +238 -0
- package/dist/widgets/speech.js.map +1 -0
- package/dist/widgets/stream-birth.d.ts +13 -0
- package/dist/widgets/stream-birth.d.ts.map +1 -0
- package/dist/widgets/stream-birth.js +70 -0
- package/dist/widgets/stream-birth.js.map +1 -0
- package/dist/widgets/syntax-boot.d.ts +25 -0
- package/dist/widgets/syntax-boot.d.ts.map +1 -0
- package/dist/widgets/syntax-boot.js +181 -0
- package/dist/widgets/syntax-boot.js.map +1 -0
- package/dist/widgets/text.d.ts +16 -0
- package/dist/widgets/text.d.ts.map +1 -0
- package/dist/widgets/text.js +14 -0
- package/dist/widgets/text.js.map +1 -0
- package/dist/widgets/transcript.d.ts +44 -0
- package/dist/widgets/transcript.d.ts.map +1 -0
- package/dist/widgets/transcript.js +106 -0
- package/dist/widgets/transcript.js.map +1 -0
- package/doom.vert +1840 -0
- package/fonts/DejaVuSans.ttf +0 -0
- package/fonts/DejaVuSansMono.ttf +0 -0
- package/fonts/LICENSE-DejaVu.txt +187 -0
- package/fonts/README.md +6 -0
- package/gradient.vert +75 -0
- package/package.json +146 -3
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the vendored @pierre/diffs@1.2.12 parse surface (Apache-2.0).
|
|
3
|
+
* Origin types: package dist/types.d.ts — FileContents / hunk metadata only.
|
|
4
|
+
* See NOTICE in this directory.
|
|
5
|
+
*/
|
|
6
|
+
export interface FileContents {
|
|
7
|
+
name: string;
|
|
8
|
+
contents: string;
|
|
9
|
+
lang?: string;
|
|
10
|
+
header?: string;
|
|
11
|
+
cacheKey?: string;
|
|
12
|
+
}
|
|
13
|
+
export type ChangeTypes = "change" | "rename-pure" | "rename-changed" | "new" | "deleted";
|
|
14
|
+
export interface ContextContent {
|
|
15
|
+
type: "context";
|
|
16
|
+
lines: number;
|
|
17
|
+
additionLineIndex: number;
|
|
18
|
+
deletionLineIndex: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ChangeContent {
|
|
21
|
+
type: "change";
|
|
22
|
+
deletions: number;
|
|
23
|
+
deletionLineIndex: number;
|
|
24
|
+
additions: number;
|
|
25
|
+
additionLineIndex: number;
|
|
26
|
+
}
|
|
27
|
+
export interface Hunk {
|
|
28
|
+
collapsedBefore: number;
|
|
29
|
+
additionStart: number;
|
|
30
|
+
additionCount: number;
|
|
31
|
+
additionLines: number;
|
|
32
|
+
additionLineIndex: number;
|
|
33
|
+
deletionStart: number;
|
|
34
|
+
deletionCount: number;
|
|
35
|
+
deletionLines: number;
|
|
36
|
+
deletionLineIndex: number;
|
|
37
|
+
hunkContent: (ContextContent | ChangeContent)[];
|
|
38
|
+
hunkContext?: string;
|
|
39
|
+
hunkSpecs?: string;
|
|
40
|
+
splitLineStart: number;
|
|
41
|
+
splitLineCount: number;
|
|
42
|
+
unifiedLineStart: number;
|
|
43
|
+
unifiedLineCount: number;
|
|
44
|
+
noEOFCRDeletions: boolean;
|
|
45
|
+
noEOFCRAdditions: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface FileDiffMetadata {
|
|
48
|
+
name: string;
|
|
49
|
+
prevName?: string;
|
|
50
|
+
lang?: string;
|
|
51
|
+
newObjectId?: string;
|
|
52
|
+
prevObjectId?: string;
|
|
53
|
+
mode?: string;
|
|
54
|
+
prevMode?: string;
|
|
55
|
+
type: ChangeTypes;
|
|
56
|
+
hunks: Hunk[];
|
|
57
|
+
splitLineCount: number;
|
|
58
|
+
unifiedLineCount: number;
|
|
59
|
+
/**
|
|
60
|
+
* LINE BUFFERS. Full-file sides iff `!isPartial`. Compact hunk-touched
|
|
61
|
+
* lines iff `isPartial`. Treating a partial parse as a whole file invents
|
|
62
|
+
* context Pierre never saw.
|
|
63
|
+
*/
|
|
64
|
+
isPartial: boolean;
|
|
65
|
+
deletionLines: string[];
|
|
66
|
+
additionLines: string[];
|
|
67
|
+
cacheKey?: string;
|
|
68
|
+
}
|
|
69
|
+
export interface ParsedPatch {
|
|
70
|
+
patchMetadata?: string;
|
|
71
|
+
files: FileDiffMetadata[];
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/widgets/internals/pierre-parse/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,gBAAgB,GAAG,KAAK,GAAG,SAAS,CAAC;AAE1F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,IAAI;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,CAAC,cAAc,GAAG,aAAa,CAAC,EAAE,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/widgets/internals/pierre-parse/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./syntax.js — shiki tokens → Style runs → LayoutNode lines.
|
|
3
|
+
*
|
|
4
|
+
* Prefer warmHighlighter() once at app boot, then highlightCodeSync in paint path.
|
|
5
|
+
*/
|
|
6
|
+
import type { Style } from "../../buffer/index.js";
|
|
7
|
+
export type TokenRun = {
|
|
8
|
+
text: string;
|
|
9
|
+
color?: string;
|
|
10
|
+
bold?: boolean;
|
|
11
|
+
italic?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export type HighlightLine = TokenRun[];
|
|
14
|
+
/**
|
|
15
|
+
* Syntax policy stage 1 (quickdraw-color-hygiene): shiki theme is
|
|
16
|
+
* polarity-selected, not hardcoded. `"dark"|"light"` matches theme's
|
|
17
|
+
* `CanvasPolarity` structurally — callers pass `canvasPolarity(ground)`
|
|
18
|
+
* straight through without this package depending on quickdraw-theme.
|
|
19
|
+
*/
|
|
20
|
+
export type SyntaxPolarity = "dark" | "light";
|
|
21
|
+
/**
|
|
22
|
+
* Bind the highlighter's default shiki theme polarity (dark/light ground).
|
|
23
|
+
* The value is MobX-observable: retained widgets read it (via
|
|
24
|
+
* {@link syntaxPolarity}) inside their `reaction` data function, so a flip
|
|
25
|
+
* marks their baked-token subtree dirty without any manual invalidation.
|
|
26
|
+
*/
|
|
27
|
+
export declare function setHighlightPolarity(polarity: SyntaxPolarity): void;
|
|
28
|
+
/**
|
|
29
|
+
* Ambient highlighter state, MobX-observable. Retained widgets
|
|
30
|
+
* (harness `WorkCellWidget` / `SpeechWidget` / `ComposerWidget`) read these
|
|
31
|
+
* inside their `reaction` data function, so MobX tracks them and re-marks
|
|
32
|
+
* the baked-token subtree dirty when either changes — no manual
|
|
33
|
+
* invalidation counter. Both genuinely affect the bytes a
|
|
34
|
+
* `highlightCodeSync` call returns for identical input:
|
|
35
|
+
* - polarity selects the shiki theme (`github-dark` ↔ `github-light`), and
|
|
36
|
+
* - warmth decides whether tokens are returned at all (cold → plain lines).
|
|
37
|
+
*/
|
|
38
|
+
export declare function syntaxPolarity(): SyntaxPolarity;
|
|
39
|
+
export declare function syntaxWarm(): boolean;
|
|
40
|
+
/** Warm shared highlighter (idempotent). Call at app boot. */
|
|
41
|
+
export declare function warmHighlighter(langs?: string[]): Promise<void>;
|
|
42
|
+
export declare function isHighlighterReady(): boolean;
|
|
43
|
+
export declare function highlightCodeSync(code: string, opts?: {
|
|
44
|
+
lang?: string;
|
|
45
|
+
theme?: string;
|
|
46
|
+
polarity?: SyntaxPolarity;
|
|
47
|
+
}): HighlightLine[];
|
|
48
|
+
/**
|
|
49
|
+
* Best-effort language guess for fences without an info string. Cheap signal
|
|
50
|
+
* scoring, not parsing — returns undefined when no signal clears the bar, so
|
|
51
|
+
* callers fall back to plain rendering rather than mis-highlighting.
|
|
52
|
+
*/
|
|
53
|
+
export declare function guessLang(code: string): string | undefined;
|
|
54
|
+
export declare function runsToStyle(run: TokenRun): Style;
|
|
55
|
+
//# sourceMappingURL=syntax.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../../../src/widgets/internals/syntax.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,QAAQ,EAAE,CAAC;AAKvC;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAkB9C;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAEnE;AAkDD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,cAAc,CAE/C;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,8DAA8D;AAC9D,wBAAsB,eAAe,CAAC,KAAK,GAAE,MAAM,EAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBtF;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAgBD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAE,GAClE,aAAa,EAAE,CA0CjB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA2C1D;AASD,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,KAAK,CAUhD"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./syntax.js — shiki tokens → Style runs → LayoutNode lines.
|
|
3
|
+
*
|
|
4
|
+
* Prefer warmHighlighter() once at app boot, then highlightCodeSync in paint path.
|
|
5
|
+
*/
|
|
6
|
+
import { observable } from "mobx";
|
|
7
|
+
import { createHighlighter } from "shiki";
|
|
8
|
+
import { ARRIVAL_LANG } from "./arrival-lang.js";
|
|
9
|
+
import { detectShellEmbeds, spliceEmbeds } from "./embedded-syntax.js";
|
|
10
|
+
const FONT_ITALIC = 1;
|
|
11
|
+
const FONT_BOLD = 2;
|
|
12
|
+
const THEME_DARK = "github-dark";
|
|
13
|
+
const THEME_LIGHT = "github-light";
|
|
14
|
+
const DEFAULT_POLARITY = "dark";
|
|
15
|
+
const DEFAULT_LANG = "text";
|
|
16
|
+
/**
|
|
17
|
+
* Ambient syntax polarity (stage-1 syntax policy). Hosts set this at theme
|
|
18
|
+
* attunement via {@link setHighlightPolarity} from `canvasPolarity(ground)` —
|
|
19
|
+
* widgets (markdown fences, diff) then inherit without threading polarity
|
|
20
|
+
* through every call site. Explicit `opts.polarity` still wins per call.
|
|
21
|
+
*/
|
|
22
|
+
const ambientPolarity = observable.box(DEFAULT_POLARITY, { deep: false });
|
|
23
|
+
/** True once {@link warmHighlighter} loaded the shared highlighter. */
|
|
24
|
+
const highlighterWarm = observable.box(false, { deep: false });
|
|
25
|
+
/**
|
|
26
|
+
* Bind the highlighter's default shiki theme polarity (dark/light ground).
|
|
27
|
+
* The value is MobX-observable: retained widgets read it (via
|
|
28
|
+
* {@link syntaxPolarity}) inside their `reaction` data function, so a flip
|
|
29
|
+
* marks their baked-token subtree dirty without any manual invalidation.
|
|
30
|
+
*/
|
|
31
|
+
export function setHighlightPolarity(polarity) {
|
|
32
|
+
ambientPolarity.set(polarity === "light" ? "light" : "dark");
|
|
33
|
+
}
|
|
34
|
+
function themeForPolarity(polarity) {
|
|
35
|
+
return polarity === "light" ? THEME_LIGHT : THEME_DARK;
|
|
36
|
+
}
|
|
37
|
+
function resolvePolarity(opts) {
|
|
38
|
+
return opts?.polarity ?? ambientPolarity.get();
|
|
39
|
+
}
|
|
40
|
+
const WARM_LANGS = [
|
|
41
|
+
"typescript",
|
|
42
|
+
"javascript",
|
|
43
|
+
"tsx",
|
|
44
|
+
"jsx",
|
|
45
|
+
"json",
|
|
46
|
+
"markdown",
|
|
47
|
+
"elixir",
|
|
48
|
+
"python",
|
|
49
|
+
"rust",
|
|
50
|
+
"go",
|
|
51
|
+
"bash",
|
|
52
|
+
"shell",
|
|
53
|
+
"css",
|
|
54
|
+
"html",
|
|
55
|
+
"yaml",
|
|
56
|
+
"toml",
|
|
57
|
+
"text",
|
|
58
|
+
];
|
|
59
|
+
let highlighter = null;
|
|
60
|
+
let warmPromise = null;
|
|
61
|
+
function plainLines(code) {
|
|
62
|
+
return code.split("\n").map((line) => [{ text: line }]);
|
|
63
|
+
}
|
|
64
|
+
function tokenToRun(content, color, fontStyle) {
|
|
65
|
+
const run = { text: content };
|
|
66
|
+
if (color)
|
|
67
|
+
run.color = color;
|
|
68
|
+
const fs = fontStyle ?? 0;
|
|
69
|
+
if (fs & FONT_BOLD)
|
|
70
|
+
run.bold = true;
|
|
71
|
+
if (fs & FONT_ITALIC)
|
|
72
|
+
run.italic = true;
|
|
73
|
+
return run;
|
|
74
|
+
}
|
|
75
|
+
function mapTokens(tokens) {
|
|
76
|
+
return tokens.map((line) => line.map((tok) => tokenToRun(tok.content, tok.color, tok.fontStyle)));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Ambient highlighter state, MobX-observable. Retained widgets
|
|
80
|
+
* (harness `WorkCellWidget` / `SpeechWidget` / `ComposerWidget`) read these
|
|
81
|
+
* inside their `reaction` data function, so MobX tracks them and re-marks
|
|
82
|
+
* the baked-token subtree dirty when either changes — no manual
|
|
83
|
+
* invalidation counter. Both genuinely affect the bytes a
|
|
84
|
+
* `highlightCodeSync` call returns for identical input:
|
|
85
|
+
* - polarity selects the shiki theme (`github-dark` ↔ `github-light`), and
|
|
86
|
+
* - warmth decides whether tokens are returned at all (cold → plain lines).
|
|
87
|
+
*/
|
|
88
|
+
export function syntaxPolarity() {
|
|
89
|
+
return ambientPolarity.get();
|
|
90
|
+
}
|
|
91
|
+
export function syntaxWarm() {
|
|
92
|
+
return highlighterWarm.get();
|
|
93
|
+
}
|
|
94
|
+
/** Warm shared highlighter (idempotent). Call at app boot. */
|
|
95
|
+
export async function warmHighlighter(langs = [...WARM_LANGS]) {
|
|
96
|
+
if (highlighter)
|
|
97
|
+
return;
|
|
98
|
+
if (!warmPromise) {
|
|
99
|
+
warmPromise = createHighlighter({
|
|
100
|
+
themes: [THEME_DARK, THEME_LIGHT],
|
|
101
|
+
langs: [...langs, ARRIVAL_LANG],
|
|
102
|
+
})
|
|
103
|
+
.then((h) => {
|
|
104
|
+
highlighter = h;
|
|
105
|
+
highlighterWarm.set(true);
|
|
106
|
+
return h;
|
|
107
|
+
})
|
|
108
|
+
.catch((error) => {
|
|
109
|
+
// Clear the cached promise on failure so the next warm() retries
|
|
110
|
+
// instead of returning the same rejected promise forever.
|
|
111
|
+
warmPromise = null;
|
|
112
|
+
throw error;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
await warmPromise;
|
|
116
|
+
}
|
|
117
|
+
export function isHighlighterReady() {
|
|
118
|
+
return highlighter !== null;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Sync highlight after warmHighlighter(). Falls back to plain if not warm
|
|
122
|
+
* or lang unknown. `theme` overrides `polarity` when both are given;
|
|
123
|
+
* `polarity` (dark default) is the intent-level knob callers should reach for.
|
|
124
|
+
*/
|
|
125
|
+
const HIGHLIGHT_CACHE_LIMIT = 128;
|
|
126
|
+
/** Skip shiki for pathological sources — first paint of a huge always-open diff. */
|
|
127
|
+
const HIGHLIGHT_MAX_CHARS = 128 * 1024;
|
|
128
|
+
const highlightCache = new Map();
|
|
129
|
+
function highlightCacheKey(code, lang, theme) {
|
|
130
|
+
return `${theme}\0${lang}\0${code}`;
|
|
131
|
+
}
|
|
132
|
+
export function highlightCodeSync(code, opts) {
|
|
133
|
+
const lang = opts?.lang ?? DEFAULT_LANG;
|
|
134
|
+
const theme = (opts?.theme ?? themeForPolarity(resolvePolarity(opts)));
|
|
135
|
+
if (code.length > HIGHLIGHT_MAX_CHARS)
|
|
136
|
+
return plainLines(code);
|
|
137
|
+
if (!highlighter)
|
|
138
|
+
return plainLines(code);
|
|
139
|
+
const cacheKey = highlightCacheKey(code, lang, theme);
|
|
140
|
+
const cached = highlightCache.get(cacheKey);
|
|
141
|
+
if (cached !== undefined) {
|
|
142
|
+
highlightCache.delete(cacheKey);
|
|
143
|
+
highlightCache.set(cacheKey, cached);
|
|
144
|
+
return cached;
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
const result = highlighter.codeToTokens(code, {
|
|
148
|
+
lang: lang,
|
|
149
|
+
theme,
|
|
150
|
+
});
|
|
151
|
+
const baseline = mapTokens(result.tokens);
|
|
152
|
+
// Shell commands carry other languages inside them (heredocs writing a
|
|
153
|
+
// file, `python -c "…"`). Color those spans with their own language,
|
|
154
|
+
// spliced back into the bash baseline by offset. Only languages that are
|
|
155
|
+
// actually loaded — a cold language tokenizes to plain runs and would
|
|
156
|
+
// trade the bash string color for nothing.
|
|
157
|
+
let lines = baseline;
|
|
158
|
+
if (lang === "bash" || lang === "shell") {
|
|
159
|
+
const loaded = new Set(highlighter.getLoadedLanguages());
|
|
160
|
+
const regions = detectShellEmbeds(code).filter((r) => loaded.has(r.lang));
|
|
161
|
+
if (regions.length > 0) {
|
|
162
|
+
lines = spliceEmbeds(baseline, code, regions, (slice, sliceLang) => highlightCodeSync(slice, { lang: sliceLang, theme }));
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (highlightCache.size >= HIGHLIGHT_CACHE_LIMIT) {
|
|
166
|
+
const oldest = highlightCache.keys().next().value;
|
|
167
|
+
if (oldest !== undefined)
|
|
168
|
+
highlightCache.delete(oldest);
|
|
169
|
+
}
|
|
170
|
+
highlightCache.set(cacheKey, lines);
|
|
171
|
+
return lines;
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return plainLines(code);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Best-effort language guess for fences without an info string. Cheap signal
|
|
179
|
+
* scoring, not parsing — returns undefined when no signal clears the bar, so
|
|
180
|
+
* callers fall back to plain rendering rather than mis-highlighting.
|
|
181
|
+
*/
|
|
182
|
+
export function guessLang(code) {
|
|
183
|
+
const head = code.slice(0, 2000);
|
|
184
|
+
const shebang = /^#!\s*(?:\S*\/)?(?:env\s+)?(bash|sh|zsh|node|python3?|ruby)\b/.exec(head);
|
|
185
|
+
if (shebang) {
|
|
186
|
+
const bin = shebang[1];
|
|
187
|
+
if (bin === "node")
|
|
188
|
+
return "javascript";
|
|
189
|
+
if (bin.startsWith("python"))
|
|
190
|
+
return "python";
|
|
191
|
+
if (bin === "ruby")
|
|
192
|
+
return "ruby";
|
|
193
|
+
return "bash";
|
|
194
|
+
}
|
|
195
|
+
const trimmed = head.trim();
|
|
196
|
+
if (/^[{[]/.test(trimmed)) {
|
|
197
|
+
try {
|
|
198
|
+
JSON.parse(code);
|
|
199
|
+
return "json";
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// fall through — JS object literals land in the keyword scoring below
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (/^<!doctype\s|^<html\b|^<\?xml\b/i.test(trimmed))
|
|
206
|
+
return "html";
|
|
207
|
+
const scores = {};
|
|
208
|
+
const bump = (lang, n = 1) => (scores[lang] = (scores[lang] ?? 0) + n);
|
|
209
|
+
if (/\b(interface|type)\s+\w+\s*(?:=\s*)?[{<]|:\s*(string|number|boolean|void)\b|\bas\s+const\b/.test(head))
|
|
210
|
+
bump("typescript", 2);
|
|
211
|
+
if (/\b(const|let|=>|function|import\s.+\sfrom)\b/.test(head))
|
|
212
|
+
bump("typescript", 1);
|
|
213
|
+
if (/\bdef\s+\w+\s*\(|\bself\b|^\s*(from|import)\s+\w+(\s+import\s)?/m.test(head))
|
|
214
|
+
bump("python", 2);
|
|
215
|
+
if (/\bfn\s+\w+|\blet\s+mut\b|::\w+|#\[\w+/.test(head))
|
|
216
|
+
bump("rust", 2);
|
|
217
|
+
if (/\bfunc\s+\w+\(|:=|\bpackage\s+\w+$/m.test(head))
|
|
218
|
+
bump("go", 2);
|
|
219
|
+
if (/^\s*(SELECT|INSERT|UPDATE|DELETE|CREATE\s+TABLE)\b/im.test(head))
|
|
220
|
+
bump("sql", 2);
|
|
221
|
+
if (/^[.#]?[\w-]+\s*\{[^:}]*:[^}]*;/m.test(head))
|
|
222
|
+
bump("css", 2);
|
|
223
|
+
if (/^\s*<[a-z][\w-]*(\s|>)/m.test(head))
|
|
224
|
+
bump("html", 1);
|
|
225
|
+
if (/^\w[\w-]*:\s+\S/m.test(head) && !/[{;]/.test(head))
|
|
226
|
+
bump("yaml", 2);
|
|
227
|
+
if (/^\s*(if|for|while)\s+\[\[|\becho\s|\$\{?\w+/m.test(head))
|
|
228
|
+
bump("bash", 1);
|
|
229
|
+
const MIN_SCORE = 2;
|
|
230
|
+
let best;
|
|
231
|
+
let bestScore = 0;
|
|
232
|
+
for (const [lang, s] of Object.entries(scores)) {
|
|
233
|
+
if (s >= MIN_SCORE && s > bestScore) {
|
|
234
|
+
best = lang;
|
|
235
|
+
bestScore = s;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return best;
|
|
239
|
+
}
|
|
240
|
+
function parseHexRgb(color) {
|
|
241
|
+
const m = /^#?([0-9a-f]{6})$/i.exec(color.trim());
|
|
242
|
+
if (!m)
|
|
243
|
+
return undefined;
|
|
244
|
+
const n = Number.parseInt(m[1], 16);
|
|
245
|
+
return { r: (n >> 16) & 0xff, g: (n >> 8) & 0xff, b: n & 0xff };
|
|
246
|
+
}
|
|
247
|
+
export function runsToStyle(run) {
|
|
248
|
+
const style = {};
|
|
249
|
+
if (run.color) {
|
|
250
|
+
// Token RGB is hue/chroma. Resolver recasts AL onto the paired role.
|
|
251
|
+
const rgb = parseHexRgb(run.color);
|
|
252
|
+
if (rgb)
|
|
253
|
+
style.fgRgb = rgb;
|
|
254
|
+
}
|
|
255
|
+
if (run.bold)
|
|
256
|
+
style.bold = true;
|
|
257
|
+
if (run.italic)
|
|
258
|
+
style.italic = true;
|
|
259
|
+
return style;
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=syntax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntax.js","sourceRoot":"","sources":["../../../src/widgets/internals/syntax.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prior markdown node — layout expands at measure/place.
|
|
3
|
+
*
|
|
4
|
+
* WIDTH: `opts.width` is ignored. Allocation is layout's. Honoring it
|
|
5
|
+
* here fights measure/place. Diff is the opposite (`diff.ts`).
|
|
6
|
+
*/
|
|
7
|
+
import type { Style } from "../buffer/index.js";
|
|
8
|
+
import type { LayoutNode } from "../layout/types.js";
|
|
9
|
+
export declare function Markdown(content: string, opts?: {
|
|
10
|
+
key?: string;
|
|
11
|
+
width?: number;
|
|
12
|
+
style?: Style;
|
|
13
|
+
}): LayoutNode;
|
|
14
|
+
//# sourceMappingURL=markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/widgets/markdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAO,GAAG,UAAU,CAOhH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/widgets/markdown.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,OAAwD,EAAE;IAClG,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO;QACP,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ShadowStream — labeled, height-bounded, gradient-faded window over a live
|
|
3
|
+
* text stream (`ShadowStream`, 2026-07-18).
|
|
4
|
+
*
|
|
5
|
+
* Render-side only: pure `LayoutNode` construction. Caller owns state cycle
|
|
6
|
+
* and collapse. Not a "thinking" feature — any streaming process with a header
|
|
7
|
+
* you want to peek-bound (thinking / searching / compiling / log tail).
|
|
8
|
+
*
|
|
9
|
+
* ## Dominating primitive
|
|
10
|
+
*
|
|
11
|
+
* Always rendered, always at `base` prominence. What changes is how much of
|
|
12
|
+
* the stream is shown.
|
|
13
|
+
*
|
|
14
|
+
* ## Three states
|
|
15
|
+
*
|
|
16
|
+
* - `fully_collapsed` — only the primitive (`▸ thinking`).
|
|
17
|
+
* - `peek` — the shadow window (default live render).
|
|
18
|
+
* - `expanded` — `▾ primitive` + full lines (caller may wrap in a rule gutter).
|
|
19
|
+
*
|
|
20
|
+
* ## Peek shadow (two axes)
|
|
21
|
+
*
|
|
22
|
+
* Paint dissolves FG toward local surface / theme ground. Axes:
|
|
23
|
+
*
|
|
24
|
+
* 1. **Vertical age (lanes):** each body row is **full-width uniform** dim by
|
|
25
|
+
* age — oldest darkest, gradually de-dims toward newest (`kLine`). Older
|
|
26
|
+
* lanes never get a horizontal birth ramp.
|
|
27
|
+
* 2. **Opacity wavefront:** host steps wavefront `W` on the newest line only.
|
|
28
|
+
* Full left of W, gradient after W. Older lanes never wait for W.
|
|
29
|
+
* 3. **Squeeze oldest:** primitive at `base` + per-char horizontal dissolve
|
|
30
|
+
* on the oldest tail (`floor → shadowCap`).
|
|
31
|
+
*
|
|
32
|
+
* Peek always ghost-overlays the oldest visible line onto the primitive row.
|
|
33
|
+
* One-line peek: that row is also the birth tip. Taller peeks: oldest
|
|
34
|
+
* squeezes; middle lanes age; newest carries the wavefront.
|
|
35
|
+
*/
|
|
36
|
+
import { type LayoutNode, type LivePaint } from "../layout/index.js";
|
|
37
|
+
import type { SemanticRole } from "../lexicon/index.js";
|
|
38
|
+
export type ShadowStreamState = "fully_collapsed" | "peek" | "expanded";
|
|
39
|
+
export type ShadowStreamProps = {
|
|
40
|
+
/** Dominating label — "thinking", "searching", a translation, … */
|
|
41
|
+
primitive?: string;
|
|
42
|
+
/** Stream body as string (split on `\n`) or pre-split lines. */
|
|
43
|
+
lines?: string | readonly string[];
|
|
44
|
+
state?: ShadowStreamState;
|
|
45
|
+
width?: number;
|
|
46
|
+
/** Peek window height in lines (default 3). */
|
|
47
|
+
height?: number;
|
|
48
|
+
/** Newest-line / primitive prominence (default 0.6). */
|
|
49
|
+
base?: number;
|
|
50
|
+
floor?: number;
|
|
51
|
+
/** Horizontal fade ceiling on the squeezed oldest tail (default 0.4). */
|
|
52
|
+
shadowCap?: number;
|
|
53
|
+
/** Softest tip prominence after the wavefront. */
|
|
54
|
+
birthFloor?: number;
|
|
55
|
+
/** Rest lag of wavefront behind tip when hot. */
|
|
56
|
+
tipWindow?: number;
|
|
57
|
+
/** Role for all stream paint (default muted). */
|
|
58
|
+
role?: SemanticRole;
|
|
59
|
+
/**
|
|
60
|
+
* Local surface the stream sits on — FG opacity dissolves toward this
|
|
61
|
+
* furniture (e.g. `surface` + BgP.panel when inside a Panel), not theme
|
|
62
|
+
* ground. Omit on transparent transcript cells (theme ground is correct).
|
|
63
|
+
*/
|
|
64
|
+
surfaceRole?: SemanticRole;
|
|
65
|
+
/** Solidity of surfaceRole (default 1 / solid). */
|
|
66
|
+
surfaceProminence?: number;
|
|
67
|
+
key?: string;
|
|
68
|
+
collapsedIcon?: string;
|
|
69
|
+
expandedIcon?: string;
|
|
70
|
+
/** Live paint on the primitive (e.g. elapsed label). */
|
|
71
|
+
primitiveLive?: LivePaint;
|
|
72
|
+
/**
|
|
73
|
+
* Newest-line opacity wavefront. Off by default — peek paints at age
|
|
74
|
+
* prominence as-is. Pass true to crawl W on the newest line.
|
|
75
|
+
*/
|
|
76
|
+
wavefront?: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* When true, expanded body is left empty (caller supplies markdown etc.).
|
|
79
|
+
* Default false: plain lines at base prominence.
|
|
80
|
+
*/
|
|
81
|
+
expandedBodyExternal?: boolean;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Pure LayoutNode tree for a ShadowStream.
|
|
85
|
+
* Root is a column flex; does not wrap Indication — caller composes.
|
|
86
|
+
*/
|
|
87
|
+
export declare function ShadowStream(props?: ShadowStreamProps): LayoutNode;
|
|
88
|
+
//# sourceMappingURL=shadow-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-stream.d.ts","sourceRoot":"","sources":["../../src/widgets/shadow-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EAA2B,KAAK,UAAU,EAAa,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,MAAM,GAAG,UAAU,CAAC;AAExE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAuXF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,GAAE,iBAAsB,GAAG,UAAU,CAyCtE"}
|