@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 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/theme/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AASH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,KAAK,GAAG,EAA4B,MAAM,qBAAqB,CAAC;AAEzE,2EAA2E;AAC3E,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAUF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAqGzC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,SAAS,CA8KzE;AAED,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,CAElF"}
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ColorResolver — single choke-point resolve of role intents → concrete
|
|
3
|
+
* style fields. Dual-dirty: re-run on an existing Frame without layout().
|
|
4
|
+
*
|
|
5
|
+
* Style may carry:
|
|
6
|
+
* - role (+ prominence) — re-solved against current Theme + depth
|
|
7
|
+
* - bgRole (+ bgProminence) — background identity, resolved via the BG ladder
|
|
8
|
+
* - literal fg / fgRgb / bg / bgRgb — passed through, optionally region-dimmed.
|
|
9
|
+
* fgRgb + role: hue/chroma from the literal (syntax tokens), apparent
|
|
10
|
+
* lightness from the role — same weight as body at that FgP. fgRgb
|
|
11
|
+
* alone stays claimed color.
|
|
12
|
+
*
|
|
13
|
+
* Layout stays theme-free: it only needs a resolveStyle callback.
|
|
14
|
+
*
|
|
15
|
+
* ## Pipeline (fixed order — G2)
|
|
16
|
+
*
|
|
17
|
+
* 1. solve(role, tier, ground) — baked into `Theme.rgb`/`colors` at
|
|
18
|
+
* build time (buildTheme/solvePalette);
|
|
19
|
+
* this resolver only *consumes* it.
|
|
20
|
+
* 2. prominence compose (own × region) — `effectiveP = ownP * regionP`.
|
|
21
|
+
* Region is the multiplicative fade of ALL paint (backdrop model, decision
|
|
22
|
+
* 1): a de-emphasized region fades fg AND bg by the same `regionProminence`.
|
|
23
|
+
* 3. bold H-K compensation — {@link compensateBoldRgb} on the
|
|
24
|
+
* role FG path (role alone, or fgRgb recast onto a role). Never
|
|
25
|
+
* bgRole/bgRgb, never fgRgb with no role.
|
|
26
|
+
* 4. bg resolve — `bgRole`+`bgProminence` (BgP: fill
|
|
27
|
+
* solidity of painted furniture, composed with region only — never with
|
|
28
|
+
* FG's own prominence) via the ELEVATION law ({@link elevateBgRgb}):
|
|
29
|
+
* ground raised a small AL step toward the role's hue, never the role's
|
|
30
|
+
* text color faded. Else literal `bg`/`bgRgb` (region-faded, never
|
|
31
|
+
* role-faded).
|
|
32
|
+
* 5. selection recolor — perception-preserving highlight on
|
|
33
|
+
* the solved RGB (identity-preserving AL shift on fg, fill/recolor on
|
|
34
|
+
* bg) *before* depth emit so ansi16/256 get a real shift, not a no-op
|
|
35
|
+
* on missing fgRgb. Composing after bold compensation means a
|
|
36
|
+
* bold+selected cell shifts once, from the already-compensated base —
|
|
37
|
+
* no double-shift.
|
|
38
|
+
* 6. depth degradation — truecolor rgb → ansi256 index →
|
|
39
|
+
* ansi16 hue-preserving slot → mono (no color SGR at all, NO_COLOR);
|
|
40
|
+
* `dim` is *emitted* here as the ansi16-and-mono-shared degradation of
|
|
41
|
+
* low FG prominence, never *authored* by a role. Mono still runs the
|
|
42
|
+
* full solve upstream (tier/prominence math, bold H-K compensation,
|
|
43
|
+
* selection) — only the final color escape is withheld; bold/italic/
|
|
44
|
+
* strike/underline attributes are untouched and always pass through
|
|
45
|
+
* (capabilities/src/types.ts:5-10 is the mono attribute-policy SSOT).
|
|
46
|
+
* Selected roles at ansi16 emit via nearest-RGB (not the role slot
|
|
47
|
+
* table) so the AL shift is visible in the index.
|
|
48
|
+
*
|
|
49
|
+
* Region (step 2) vs bg (step 4) are never interchangeable: region says "how
|
|
50
|
+
* much of the room is present", bg says "how solid is the furniture painted
|
|
51
|
+
* into it". A call site names which one it means.
|
|
52
|
+
*/
|
|
53
|
+
import invariant from "tiny-invariant";
|
|
54
|
+
import { ansi16Slot, ansi16ToRgb, canvasPolarity, nearestAnsi16FromRgb } from "./ansi16.js";
|
|
55
|
+
import { ansi256ToRgb, nearestAnsi256FromRgb } from "./ansi256.js";
|
|
56
|
+
import { fadeTowardSurfaceRgb, mixTowardTintRgb, regionDimRgb } from "./region.js";
|
|
57
|
+
import { apparentLightness, hexToRgb, oklchToHex, rgbToOklch, solveLightness } from "./salience.js";
|
|
58
|
+
import { selectionFillRgb, selectionRecolorBgRgb, selectionRecolorRgb } from "./selection.js";
|
|
59
|
+
import { FgP, ROLES } from "../lexicon/index.js";
|
|
60
|
+
/** Foreground prominence at/below which ansi16 degrades to `dim` (G2 step 6). */
|
|
61
|
+
const DIM_THRESHOLD = FgP.ghost;
|
|
62
|
+
function clamp01(p) {
|
|
63
|
+
if (!Number.isFinite(p))
|
|
64
|
+
return 1;
|
|
65
|
+
return Math.min(1, Math.max(0, p));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Bold H-K compensation (enabler 7). Irradiation (Helmholtz 1867, observed by
|
|
69
|
+
* Galileo 1632) makes light-on-dark strokes look brighter/heavier than their
|
|
70
|
+
* measured lightness; on dark surfaces this compounds with sRGB gamma
|
|
71
|
+
* spreading (`typography.md`: "the double effect means dark theme display
|
|
72
|
+
* text at conventional bold weights appears significantly over-weighted").
|
|
73
|
+
* The resolver counters by nudging the solved apparent lightness back toward
|
|
74
|
+
* ground by a fixed budget so bold reads as *weight*, not as an accent bump.
|
|
75
|
+
* Polarity-aware: the shift is toward ground on EITHER polarity (dark ground
|
|
76
|
+
* pulls down, light ground pushes up) — never away from it.
|
|
77
|
+
*
|
|
78
|
+
* Delta derivation anchor (G10): Delta's surface-adaptive weight already
|
|
79
|
+
* solves the same irradiation family for font weight — `--font-weight`
|
|
80
|
+
* (`delta/delta-css/src/typography.css:78-81`) linearly interpolates
|
|
81
|
+
* `--⚙️weight-dark-surface` (360) → `--⚙️weight-light-surface` (420) by
|
|
82
|
+
* surface lightness (`typography-configuration-properties.css:30-58`); that
|
|
83
|
+
* 360/420 ratio is ≈0.85, the "0.85 multiplier" family cited in
|
|
84
|
+
* design-science typography notes (CSS-Tricks anchor, irradiation
|
|
85
|
+
* illusion). Font weight and terminal apparent-lightness are
|
|
86
|
+
* different render channels for the same perceptual correction, so the
|
|
87
|
+
* multiplier doesn't transfer directly — `BOLD_AL_COMPENSATION` is the AL
|
|
88
|
+
* budget's own starting point (an ~4% AL pull, not a weight ratio), picked
|
|
89
|
+
* as a small fraction of the JND (0.074, `dark-theme.md`) so it visibly
|
|
90
|
+
* de-weights bold without crossing into a second contrast step. Tunable —
|
|
91
|
+
* see the `bold-compensation` storybook story for the eyeball-tuning rig.
|
|
92
|
+
*/
|
|
93
|
+
export const BOLD_AL_COMPENSATION = 0.04;
|
|
94
|
+
function compensateBoldRgb(rgb, ground) {
|
|
95
|
+
const { l, c, h } = rgbToOklch(rgb.r, rgb.g, rgb.b);
|
|
96
|
+
const al = apparentLightness(l, c, h);
|
|
97
|
+
const sign = canvasPolarity(ground) === "dark" ? 1 : -1;
|
|
98
|
+
const newAl = al - sign * BOLD_AL_COMPENSATION;
|
|
99
|
+
const newL = solveLightness(newAl, c, h);
|
|
100
|
+
return hexToRgb(oklchToHex(newL, c, h));
|
|
101
|
+
}
|
|
102
|
+
/** Keep token H/C; land on the role's apparent lightness (body-weight syntax). */
|
|
103
|
+
function recastToRoleAl(literal, roleRgb) {
|
|
104
|
+
const tok = rgbToOklch(literal.r, literal.g, literal.b);
|
|
105
|
+
const role = rgbToOklch(roleRgb.r, roleRgb.g, roleRgb.b);
|
|
106
|
+
const targetAl = apparentLightness(role.l, role.c, role.h);
|
|
107
|
+
const l = solveLightness(targetAl, tok.c, tok.h);
|
|
108
|
+
return hexToRgb(oklchToHex(l, tok.c, tok.h));
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Max apparent-lightness elevation of a solid background above ground.
|
|
112
|
+
* Backgrounds obey the ELEVATION law, not the contrast law: a surface is the
|
|
113
|
+
* ground raised a small step toward the role's identity — never the role's
|
|
114
|
+
* text color faded. Deriving bg from the FG tier solve painted panels at
|
|
115
|
+
* text contrast (recede ≈ AL 0.55): huge mid-gray slabs on a dark terminal.
|
|
116
|
+
* Anchors (dark-theme design notes): Material
|
|
117
|
+
* elevation overlays run 5–15% lightness above base, each step clearing the
|
|
118
|
+
* ~7.4% brightness JND; the reference panel (xterm 235 over a #121212
|
|
119
|
+
* ground) sat ≈ +0.07 AL — reproduced here at BgP.panel (0.85 × 0.09).
|
|
120
|
+
* (Historical hex above is comment prose: color-parity-ignore.)
|
|
121
|
+
*/
|
|
122
|
+
const BG_ELEVATION_MAX = 0.09;
|
|
123
|
+
/**
|
|
124
|
+
* Background chroma budget: fraction of the role's chroma kept at p=0, plus
|
|
125
|
+
* slope × p. 0.35 left even a mist Diff wash at ~45% of role C — a tinted
|
|
126
|
+
* slab, not atmosphere toward ground. 0.12 lets low-p washes dissolve;
|
|
127
|
+
* panel still picks up identity through the slope (0.12 + 0.35 × 0.85).
|
|
128
|
+
*/
|
|
129
|
+
const BG_CHROMA_BASE = 0.12;
|
|
130
|
+
const BG_CHROMA_SLOPE = 0.35;
|
|
131
|
+
/**
|
|
132
|
+
* Elevate ground toward a role's identity: target AL = ground ± elevation
|
|
133
|
+
* (away from ground on either polarity), hue kept, chroma cut to an
|
|
134
|
+
* atmospheric fraction. H-K-correct via solveLightness.
|
|
135
|
+
*/
|
|
136
|
+
function elevateBgRgb(roleRgb, ground, solidity) {
|
|
137
|
+
const p = clamp01(solidity);
|
|
138
|
+
const { c, h } = rgbToOklch(roleRgb.r, roleRgb.g, roleRgb.b);
|
|
139
|
+
const sign = canvasPolarity(ground) === "dark" ? 1 : -1;
|
|
140
|
+
const targetAl = ground + sign * BG_ELEVATION_MAX * p;
|
|
141
|
+
const bgC = c * (BG_CHROMA_BASE + BG_CHROMA_SLOPE * p);
|
|
142
|
+
const l = solveLightness(targetAl, bgC, h);
|
|
143
|
+
return hexToRgb(oklchToHex(l, bgC, h));
|
|
144
|
+
}
|
|
145
|
+
function emitFg(rgb, depth, role, effectiveP, ground, out) {
|
|
146
|
+
if (depth === "mono") {
|
|
147
|
+
// NO_COLOR (capabilities/src/types.ts:5-10): role/prominence solving
|
|
148
|
+
// still ran (tier math, bold H-K compensation happened upstream) but no
|
|
149
|
+
// fg color escape is emitted at all — not even an index. Attributes
|
|
150
|
+
// (bold/italic/strike/underline) are untouched by this function and
|
|
151
|
+
// pass through on `out` unconditionally; `dim` is still applied by the
|
|
152
|
+
// caller as the mono/ansi16-shared low-prominence degradation (step 5).
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (depth === "ansi16") {
|
|
156
|
+
// Roles: hue-preserving slot table. Literals (syntax): nearest RGB.
|
|
157
|
+
out.fg = role ? ansi16Slot(role, canvasPolarity(ground), effectiveP) : nearestAnsi16FromRgb(rgb);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (depth === "ansi256") {
|
|
161
|
+
out.fg = nearestAnsi256FromRgb(rgb);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
out.fgRgb = rgb;
|
|
165
|
+
}
|
|
166
|
+
/** Emit bg at declared depth — never truecolor under ansi16/256, never any
|
|
167
|
+
* color field under mono (NO_COLOR: attributes only, see emitFg). */
|
|
168
|
+
function emitBg(rgb, depth, out) {
|
|
169
|
+
if (depth === "mono") {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (depth === "truecolor") {
|
|
173
|
+
out.bgRgb = rgb;
|
|
174
|
+
}
|
|
175
|
+
else if (depth === "ansi16") {
|
|
176
|
+
out.bg = nearestAnsi16FromRgb(rgb);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
out.bg = nearestAnsi256FromRgb(rgb);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Resolve one style: role → concrete color at depth; apply region dim.
|
|
184
|
+
* Returns a new style with concrete fg/fgRgb (role kept for dual-dirty).
|
|
185
|
+
*/
|
|
186
|
+
export function resolveStyle(style, ctx) {
|
|
187
|
+
const depth = ctx.depth ?? "truecolor";
|
|
188
|
+
const regionP = clamp01(style.regionProminence ?? ctx.regionProminence ?? 1);
|
|
189
|
+
const ownP = clamp01(style.prominence ?? 1);
|
|
190
|
+
const effectiveP = ownP * regionP;
|
|
191
|
+
const out = {
|
|
192
|
+
bold: style.bold,
|
|
193
|
+
strike: style.strike,
|
|
194
|
+
italic: style.italic,
|
|
195
|
+
underline: style.underline,
|
|
196
|
+
href: style.href,
|
|
197
|
+
role: style.role,
|
|
198
|
+
prominence: style.prominence,
|
|
199
|
+
bgRole: style.bgRole,
|
|
200
|
+
bgProminence: style.bgProminence,
|
|
201
|
+
surfaceRole: style.surfaceRole,
|
|
202
|
+
surfaceProminence: style.surfaceProminence,
|
|
203
|
+
fuseRole: style.fuseRole,
|
|
204
|
+
fuseProminence: style.fuseProminence,
|
|
205
|
+
tintRole: style.tintRole,
|
|
206
|
+
tint: style.tint,
|
|
207
|
+
regionProminence: style.regionProminence,
|
|
208
|
+
selected: style.selected,
|
|
209
|
+
cast: style.cast,
|
|
210
|
+
// Procedural bg is present-loop concern — never resolve away
|
|
211
|
+
bgFx: style.bgFx,
|
|
212
|
+
bgFxU: style.bgFxU,
|
|
213
|
+
bgFxV: style.bgFxV,
|
|
214
|
+
};
|
|
215
|
+
const ground = ctx.theme.ground;
|
|
216
|
+
// ── Surface / BG first: opacity target for FG prominence ──────────────
|
|
217
|
+
// Local surface (panel under ShadowStream, cell bgRole, etc.) beats theme
|
|
218
|
+
// ground. Order: explicit surfaceRole → cell bgRole/bgRgb → theme ground.
|
|
219
|
+
let bgRgb;
|
|
220
|
+
let bgIndexPassthrough;
|
|
221
|
+
if (style.bgRole && ROLES.has(style.bgRole)) {
|
|
222
|
+
const bgRole = style.bgRole;
|
|
223
|
+
invariant(ctx.theme.colors[bgRole], `theme missing role: ${bgRole}`);
|
|
224
|
+
const bgOwnP = clamp01(style.bgProminence ?? 1);
|
|
225
|
+
bgRgb = elevateBgRgb(ctx.theme.rgb[bgRole], ground, bgOwnP * regionP);
|
|
226
|
+
}
|
|
227
|
+
else if (style.bgRgb) {
|
|
228
|
+
bgRgb = { ...style.bgRgb };
|
|
229
|
+
if (regionP < 1) {
|
|
230
|
+
bgRgb = regionDimRgb(bgRgb, ground, regionP);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
else if (style.bg !== undefined) {
|
|
234
|
+
if (style.selected) {
|
|
235
|
+
bgRgb = style.bg <= 15 ? ansi16ToRgb(style.bg) : ansi256ToRgb(style.bg);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
bgIndexPassthrough = style.bg;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
let fadeSurface;
|
|
242
|
+
if (style.fuseRole && ROLES.has(style.fuseRole)) {
|
|
243
|
+
// FG→FG fuse (progress rail into contour). Not BG elevation.
|
|
244
|
+
// Target is fuseProminence × region so the dissolve matches the
|
|
245
|
+
// already-dimmed contour; omitting region leaves the rail at full-room
|
|
246
|
+
// brightness behind a modal.
|
|
247
|
+
const fr = style.fuseRole;
|
|
248
|
+
invariant(ctx.theme.colors[fr], `theme missing role: ${fr}`);
|
|
249
|
+
const fp = clamp01(style.fuseProminence ?? FgP.ghost) * regionP;
|
|
250
|
+
const full = ctx.theme.rgb[fr];
|
|
251
|
+
fadeSurface = fp >= 1 ? { ...full } : regionDimRgb(full, ground, fp);
|
|
252
|
+
}
|
|
253
|
+
else if (style.surfaceRole && ROLES.has(style.surfaceRole)) {
|
|
254
|
+
const sr = style.surfaceRole;
|
|
255
|
+
invariant(ctx.theme.colors[sr], `theme missing role: ${sr}`);
|
|
256
|
+
const sp = clamp01(style.surfaceProminence ?? 1);
|
|
257
|
+
fadeSurface = elevateBgRgb(ctx.theme.rgb[sr], ground, sp * regionP);
|
|
258
|
+
}
|
|
259
|
+
else if (bgRgb) {
|
|
260
|
+
fadeSurface = bgRgb;
|
|
261
|
+
}
|
|
262
|
+
else if (style.surfaceRgb) {
|
|
263
|
+
fadeSurface = style.surfaceRgb;
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
fadeSurface = ctx.theme.groundRgb;
|
|
267
|
+
}
|
|
268
|
+
function tintFg(rgb) {
|
|
269
|
+
const amount = typeof style.tint === "number" && Number.isFinite(style.tint) ? clamp01(style.tint) : 0;
|
|
270
|
+
if (!(amount > 0) || !style.tintRole || !ROLES.has(style.tintRole))
|
|
271
|
+
return rgb;
|
|
272
|
+
const hot = ctx.theme.rgb[style.tintRole];
|
|
273
|
+
return hot ? mixTowardTintRgb(rgb, hot, amount) : rgb;
|
|
274
|
+
}
|
|
275
|
+
/** Prominence fade: toward local surface when known, else theme ground L. */
|
|
276
|
+
function fadeFg(rgb, p) {
|
|
277
|
+
if (p >= 1)
|
|
278
|
+
return rgb;
|
|
279
|
+
if (fadeSurface) {
|
|
280
|
+
return fadeTowardSurfaceRgb(rgb, fadeSurface, p, {
|
|
281
|
+
// Quadratic de-chroma on FG→FG fuse so the hot hue doesn't
|
|
282
|
+
// plateau then drop as a last step (region γ is sublinear).
|
|
283
|
+
chromaExp: style.fuseRole ? 2 : undefined,
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
return regionDimRgb(rgb, ground, p);
|
|
287
|
+
}
|
|
288
|
+
// fgRgb + role: token hue/chroma, role apparent-lightness (syntax).
|
|
289
|
+
// fgRgb alone: claimed color. Role alone: semantic chrome.
|
|
290
|
+
let fgRgb;
|
|
291
|
+
let fgRole;
|
|
292
|
+
let fgIsRole = false;
|
|
293
|
+
if (style.fgRgb) {
|
|
294
|
+
fgRgb = { ...style.fgRgb };
|
|
295
|
+
const withRole = style.role && ROLES.has(style.role);
|
|
296
|
+
if (withRole) {
|
|
297
|
+
const role = style.role;
|
|
298
|
+
const roleRgb = ctx.theme.rgb[role];
|
|
299
|
+
invariant(roleRgb, `theme missing role: ${role}`);
|
|
300
|
+
fgRgb = recastToRoleAl(fgRgb, roleRgb);
|
|
301
|
+
// Nearest-RGB at ansi16 — a role slot would collapse every token.
|
|
302
|
+
}
|
|
303
|
+
fgRgb = tintFg(fgRgb);
|
|
304
|
+
if (effectiveP < 1) {
|
|
305
|
+
fgRgb = fadeFg(fgRgb, effectiveP);
|
|
306
|
+
}
|
|
307
|
+
if (withRole && style.bold) {
|
|
308
|
+
fgRgb = compensateBoldRgb(fgRgb, ground);
|
|
309
|
+
}
|
|
310
|
+
out.dim = withRole && (depth === "ansi16" || depth === "mono") && effectiveP <= DIM_THRESHOLD ? true : style.dim;
|
|
311
|
+
}
|
|
312
|
+
else if (style.role && ROLES.has(style.role)) {
|
|
313
|
+
const role = style.role;
|
|
314
|
+
const fullHex = ctx.theme.colors[role];
|
|
315
|
+
invariant(fullHex, `theme missing role: ${role}`);
|
|
316
|
+
fgRole = role;
|
|
317
|
+
fgIsRole = true;
|
|
318
|
+
fgRgb = tintFg(ctx.theme.rgb[role]);
|
|
319
|
+
if (effectiveP < 1) {
|
|
320
|
+
fgRgb = fadeFg(fgRgb, effectiveP);
|
|
321
|
+
}
|
|
322
|
+
// FG only — never touch bgRole/bgRgb (elevation law owns surfaces).
|
|
323
|
+
if (style.bold) {
|
|
324
|
+
fgRgb = compensateBoldRgb(fgRgb, ground);
|
|
325
|
+
}
|
|
326
|
+
// dim is banned as an authoring channel for roles (enabler 6).
|
|
327
|
+
if ((depth === "ansi16" || depth === "mono") && effectiveP <= DIM_THRESHOLD) {
|
|
328
|
+
out.dim = true;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
else if (style.fg === undefined) {
|
|
332
|
+
out.dim = style.dim;
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
if (style.selected) {
|
|
336
|
+
fgRgb = style.fg <= 15 ? ansi16ToRgb(style.fg) : ansi256ToRgb(style.fg);
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
out.fg = style.fg;
|
|
340
|
+
}
|
|
341
|
+
out.dim = style.dim;
|
|
342
|
+
}
|
|
343
|
+
if (style.selected && fgRgb) {
|
|
344
|
+
fgRgb = selectionRecolorRgb(fgRgb, ground);
|
|
345
|
+
}
|
|
346
|
+
if (fgRgb) {
|
|
347
|
+
const emitRole = style.selected && fgIsRole ? undefined : fgRole;
|
|
348
|
+
emitFg(fgRgb, depth, emitRole, effectiveP, ground, out);
|
|
349
|
+
}
|
|
350
|
+
// BG emit (already resolved above for fade target).
|
|
351
|
+
if (style.selected) {
|
|
352
|
+
bgRgb = bgRgb ? selectionRecolorBgRgb(bgRgb, ground) : selectionFillRgb(ground);
|
|
353
|
+
}
|
|
354
|
+
if (bgRgb) {
|
|
355
|
+
emitBg(bgRgb, depth, out);
|
|
356
|
+
}
|
|
357
|
+
else if (bgIndexPassthrough !== undefined) {
|
|
358
|
+
out.bg = bgIndexPassthrough;
|
|
359
|
+
}
|
|
360
|
+
return out;
|
|
361
|
+
}
|
|
362
|
+
/** Bind a resolveStyle callback for paintFrame / dual-dirty. */
|
|
363
|
+
export function makeStyleResolver(ctx) {
|
|
364
|
+
return (style) => resolveStyle(style, ctx);
|
|
365
|
+
}
|
|
366
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/theme/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helmholtz–Kohlrausch salience solver.
|
|
3
|
+
*
|
|
4
|
+
* Palette seeds are (hue, chroma, tier). Each tier is an apparent-lightness
|
|
5
|
+
* contrast delta from ground; the solver compensates H-K so chromatic colors
|
|
6
|
+
* match achromatic brightness on the same tier.
|
|
7
|
+
*
|
|
8
|
+
* perceived_AL = L + 0.14 · C · hue_factor(h) // chromatic looks brighter
|
|
9
|
+
* L_nominal = target_AL − 0.14 · C · hue_factor(h)
|
|
10
|
+
*
|
|
11
|
+
* Hue weight is the **Nayatani 3-harmonic** (SSOT: Delta foundation.css +
|
|
12
|
+
* postcss-oklch-plus / helmholtz-kohlrausch-models.md).
|
|
13
|
+
*
|
|
14
|
+
* Ground is runtime input — pair with OSC 11 for terminal-attuned palettes.
|
|
15
|
+
* Color math via culori (OKLCH ↔ sRGB).
|
|
16
|
+
*/
|
|
17
|
+
import type { Oklch, Polarity, Rgb, Tier } from "../lexicon/index.js";
|
|
18
|
+
/** H-K chroma scale (≈ Fairchild–Pirrotta k; magnitude is Delta's budget). */
|
|
19
|
+
export declare const HK_K = 0.14;
|
|
20
|
+
/**
|
|
21
|
+
* Apparent-lightness contrast deltas per tier at the reference ground.
|
|
22
|
+
* At L_ground = 0.2 these target recede≈0.55 … anchor≈0.85.
|
|
23
|
+
* Tier names are vocabulary (../lexicon/index.js); the deltas are
|
|
24
|
+
* solver calibration and live here.
|
|
25
|
+
*/
|
|
26
|
+
export declare const TIER_DELTAS: {
|
|
27
|
+
readonly alarm: 0.33;
|
|
28
|
+
readonly recede: 0.35;
|
|
29
|
+
readonly differentiate: 0.42;
|
|
30
|
+
readonly baseline: 0.57;
|
|
31
|
+
readonly anchor: 0.65;
|
|
32
|
+
};
|
|
33
|
+
/** Reference near-black ground the tier deltas were derived against. */
|
|
34
|
+
export declare const REFERENCE_GROUND = 0.2;
|
|
35
|
+
export declare function hueFactor(h: number): number;
|
|
36
|
+
/** Amount of L to subtract so a chromatic color sits level with gray at same L. */
|
|
37
|
+
export declare function hkCompensation(c: number, h: number): number;
|
|
38
|
+
/**
|
|
39
|
+
* Perceived / apparent lightness (chromatic looks *brighter* than measured L).
|
|
40
|
+
* Inverse of solveLightness for fixed (C,h).
|
|
41
|
+
*/
|
|
42
|
+
export declare function apparentLightness(l: number, c: number, h: number): number;
|
|
43
|
+
/**
|
|
44
|
+
* Nominal OKLCH L that lands (C, h) on a target apparent lightness.
|
|
45
|
+
* Chromatic → lower measured L (same as bake-darcula / Delta CSS subtract).
|
|
46
|
+
*/
|
|
47
|
+
export declare function solveLightness(targetAl: number, c: number, h: number): number;
|
|
48
|
+
/**
|
|
49
|
+
* Target apparent lightness for a tier against ground, with headroom
|
|
50
|
+
* compression when the ground leaves less than the full delta range.
|
|
51
|
+
*/
|
|
52
|
+
export declare function tierTarget(tier: Tier, ground: number, polarity?: Polarity): number;
|
|
53
|
+
export type SolveOpts = {
|
|
54
|
+
ground?: number;
|
|
55
|
+
polarity?: Polarity;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Solve (C, h) on a salience tier against ground → sRGB hex.
|
|
59
|
+
*/
|
|
60
|
+
export declare function solve(tier: Tier, c: number, h: number, opts?: SolveOpts): string;
|
|
61
|
+
export type Seed = {
|
|
62
|
+
name: string;
|
|
63
|
+
h: number;
|
|
64
|
+
c: number;
|
|
65
|
+
tier: Tier;
|
|
66
|
+
};
|
|
67
|
+
/** Solve a seed list into `{ name → hex }`. */
|
|
68
|
+
export declare function solvePalette(seeds: readonly Seed[], opts?: SolveOpts): Record<string, string>;
|
|
69
|
+
/**
|
|
70
|
+
* True when OKLCH (l,c,h) is inside sRGB (linear channels in [0,1]).
|
|
71
|
+
* Culori `formatHex` / RGB conversion is *not* this check — it channel-clips.
|
|
72
|
+
*/
|
|
73
|
+
export declare function inSrgb(l: number, c: number, h: number): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Map OKLCH into sRGB by shrinking chroma at fixed hue, then re-solving L
|
|
76
|
+
* so H-K apparent lightness matches the request. Channel-clip (culori
|
|
77
|
+
* formatHex, nearest-legal RGB) rotates hue — yellow at low L becomes
|
|
78
|
+
* rust `#542400` (h 77 → 51). We never do that.
|
|
79
|
+
*/
|
|
80
|
+
export declare function fitOklchToSrgb(l: number, c: number, h: number): {
|
|
81
|
+
l: number;
|
|
82
|
+
c: number;
|
|
83
|
+
h: number;
|
|
84
|
+
};
|
|
85
|
+
export declare function oklchToHex(l: number, c: number, h: number): string;
|
|
86
|
+
export declare function hexToOklch(hex: string): Oklch;
|
|
87
|
+
export declare function hexToRgb(hex: string): Rgb;
|
|
88
|
+
/** sRGB → OKLCH L from 0–255 channel triple (OSC 11 ground path). */
|
|
89
|
+
export declare function rgbToOklch(r: number, g: number, b: number): Oklch;
|
|
90
|
+
//# sourceMappingURL=salience.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"salience.d.ts","sourceRoot":"","sources":["../../src/theme/salience.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAKtE,8EAA8E;AAC9E,eAAO,MAAM,IAAI,OAAO,CAAC;AAEzB;;;;;GAKG;AACH,eAAO,MAAM,WAAW;;;;;;CAMiB,CAAC;AAE1C,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAiBpC,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ3C;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7E;AAQD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,GAAG,MAAM,CAK1F;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,SAAc,GAAG,MAAM,CAMpF;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,IAAI,GAAE,SAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMjG;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAU/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAuBnG;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAYlE;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAW7C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAUzC;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAUjE"}
|