@inhuman.tools/quickdraw 0.0.0-bootstrap.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +7 -0
- package/README.md +102 -1
- 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 +27 -0
- package/dist/runtime/agents_preview.d.ts.map +1 -0
- package/dist/runtime/agents_preview.js +122 -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 +147 -4
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Polarity-preserving ANSI16 degradation for semantic roles.
|
|
3
|
+
*
|
|
4
|
+
* Nearest-RGB quantization collapses hue (error→yellow, etc.). This table
|
|
5
|
+
* pins each role to a hue-preserving slot so category is never lost.
|
|
6
|
+
* Legibility > category preservation > tier separation.
|
|
7
|
+
*
|
|
8
|
+
* Literal RGB (syntax highlight, no role) degrades via nearest-RGB on the
|
|
9
|
+
* classic 0–15 xterm palette — hue-preserving slots stay role-only.
|
|
10
|
+
*/
|
|
11
|
+
import invariant from "tiny-invariant";
|
|
12
|
+
import { REFERENCE_GROUND } from "./salience.js";
|
|
13
|
+
/**
|
|
14
|
+
* Named ANSI slot → theme role whose hue/chroma we keep. Bright and dim
|
|
15
|
+
* share a role; SGR 1 is weight. Inverse of {@link ansi16Slot} (role → slot).
|
|
16
|
+
* Black/white land on furniture/voice, not a claimed gray RGB.
|
|
17
|
+
*/
|
|
18
|
+
export const ANSI16_ROLE = [
|
|
19
|
+
"muted",
|
|
20
|
+
"error",
|
|
21
|
+
"success",
|
|
22
|
+
"warning",
|
|
23
|
+
"code",
|
|
24
|
+
"running",
|
|
25
|
+
"auto",
|
|
26
|
+
"foreground",
|
|
27
|
+
"muted",
|
|
28
|
+
"error",
|
|
29
|
+
"success",
|
|
30
|
+
"emphasis",
|
|
31
|
+
"code",
|
|
32
|
+
"running",
|
|
33
|
+
"accent",
|
|
34
|
+
"foreground",
|
|
35
|
+
];
|
|
36
|
+
/** Prominence ≥ this → loud tier; below → soft. */
|
|
37
|
+
export const LOUD_THRESHOLD = 0.8;
|
|
38
|
+
/** Classic + bright xterm defaults for indices 0–15 (same as ansi256 decode). */
|
|
39
|
+
const ANSI16_RGB = [
|
|
40
|
+
{ r: 0, g: 0, b: 0 },
|
|
41
|
+
{ r: 205, g: 0, b: 0 },
|
|
42
|
+
{ r: 0, g: 205, b: 0 },
|
|
43
|
+
{ r: 205, g: 205, b: 0 },
|
|
44
|
+
{ r: 0, g: 0, b: 238 },
|
|
45
|
+
{ r: 205, g: 0, b: 205 },
|
|
46
|
+
{ r: 0, g: 205, b: 205 },
|
|
47
|
+
{ r: 229, g: 229, b: 229 },
|
|
48
|
+
{ r: 127, g: 127, b: 127 },
|
|
49
|
+
{ r: 255, g: 0, b: 0 },
|
|
50
|
+
{ r: 0, g: 255, b: 0 },
|
|
51
|
+
{ r: 255, g: 255, b: 0 },
|
|
52
|
+
{ r: 92, g: 92, b: 255 },
|
|
53
|
+
{ r: 255, g: 0, b: 255 },
|
|
54
|
+
{ r: 0, g: 255, b: 255 },
|
|
55
|
+
{ r: 255, g: 255, b: 255 },
|
|
56
|
+
];
|
|
57
|
+
/** Nearest ANSI16 index for an sRGB triple (0–255). Euclidean in sRGB. */
|
|
58
|
+
export function nearestAnsi16(r, g, b) {
|
|
59
|
+
let best = 0;
|
|
60
|
+
let bestD = Infinity;
|
|
61
|
+
for (let i = 0; i < 16; i++) {
|
|
62
|
+
const p = ANSI16_RGB[i];
|
|
63
|
+
const dr = r - p.r;
|
|
64
|
+
const dg = g - p.g;
|
|
65
|
+
const db = b - p.b;
|
|
66
|
+
const d = dr * dr + dg * dg + db * db;
|
|
67
|
+
if (d < bestD) {
|
|
68
|
+
bestD = d;
|
|
69
|
+
best = i;
|
|
70
|
+
if (d === 0)
|
|
71
|
+
return best;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return best;
|
|
75
|
+
}
|
|
76
|
+
export function nearestAnsi16FromRgb(rgb) {
|
|
77
|
+
return nearestAnsi16(rgb.r, rgb.g, rgb.b);
|
|
78
|
+
}
|
|
79
|
+
/** Decode ANSI16 index to approximate RGB (xterm defaults). */
|
|
80
|
+
export function ansi16ToRgb(index) {
|
|
81
|
+
invariant(index >= 0, `ansi16 index cannot be negative: ${index}`);
|
|
82
|
+
invariant(index <= 15, `ansi16 index cannot overflow: ${index}`);
|
|
83
|
+
return { ...ANSI16_RGB[index] };
|
|
84
|
+
}
|
|
85
|
+
const SLOT_TABLE = {
|
|
86
|
+
dark: {
|
|
87
|
+
loud: {
|
|
88
|
+
error: 9,
|
|
89
|
+
diff_del: 9,
|
|
90
|
+
success: 10,
|
|
91
|
+
diff_add: 10,
|
|
92
|
+
warning: 11,
|
|
93
|
+
accent: 14,
|
|
94
|
+
running: 13,
|
|
95
|
+
auto: 14,
|
|
96
|
+
attention: 11,
|
|
97
|
+
emphasis: 15,
|
|
98
|
+
code: 12,
|
|
99
|
+
foreground: 7,
|
|
100
|
+
chrome: 7,
|
|
101
|
+
surface: 8,
|
|
102
|
+
muted: 8,
|
|
103
|
+
border: 8,
|
|
104
|
+
},
|
|
105
|
+
soft: {
|
|
106
|
+
error: 1,
|
|
107
|
+
diff_del: 1,
|
|
108
|
+
success: 2,
|
|
109
|
+
diff_add: 2,
|
|
110
|
+
warning: 3,
|
|
111
|
+
accent: 6,
|
|
112
|
+
running: 5,
|
|
113
|
+
auto: 6,
|
|
114
|
+
attention: 3,
|
|
115
|
+
emphasis: 7,
|
|
116
|
+
code: 4,
|
|
117
|
+
foreground: 8,
|
|
118
|
+
chrome: 8,
|
|
119
|
+
surface: 8,
|
|
120
|
+
muted: 8,
|
|
121
|
+
border: 8,
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
light: {
|
|
125
|
+
loud: {
|
|
126
|
+
error: 1,
|
|
127
|
+
diff_del: 1,
|
|
128
|
+
success: 2,
|
|
129
|
+
diff_add: 2,
|
|
130
|
+
warning: 3,
|
|
131
|
+
accent: 4,
|
|
132
|
+
running: 5,
|
|
133
|
+
auto: 6,
|
|
134
|
+
attention: 3,
|
|
135
|
+
emphasis: 0,
|
|
136
|
+
code: 4,
|
|
137
|
+
foreground: 8,
|
|
138
|
+
chrome: 8,
|
|
139
|
+
surface: 7,
|
|
140
|
+
muted: 7,
|
|
141
|
+
border: 7,
|
|
142
|
+
},
|
|
143
|
+
soft: {
|
|
144
|
+
error: 9,
|
|
145
|
+
diff_del: 9,
|
|
146
|
+
success: 2,
|
|
147
|
+
diff_add: 2,
|
|
148
|
+
warning: 3,
|
|
149
|
+
accent: 12,
|
|
150
|
+
running: 5,
|
|
151
|
+
auto: 6,
|
|
152
|
+
attention: 3,
|
|
153
|
+
emphasis: 8,
|
|
154
|
+
code: 12,
|
|
155
|
+
foreground: 8,
|
|
156
|
+
chrome: 8,
|
|
157
|
+
surface: 7,
|
|
158
|
+
muted: 7,
|
|
159
|
+
border: 7,
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* Canvas polarity from ground OKLCH L.
|
|
165
|
+
* `null` / undefined → reference ground polarity (dark).
|
|
166
|
+
*/
|
|
167
|
+
export function canvasPolarity(groundLightness) {
|
|
168
|
+
const g = groundLightness ?? REFERENCE_GROUND;
|
|
169
|
+
return g < 0.5 ? "dark" : "light";
|
|
170
|
+
}
|
|
171
|
+
function tierOf(prominence) {
|
|
172
|
+
return prominence >= LOUD_THRESHOLD ? "loud" : "soft";
|
|
173
|
+
}
|
|
174
|
+
/** Resolve role → ANSI16 slot for polarity + prominence. */
|
|
175
|
+
export function ansi16Slot(role, polarity, prominence = 1) {
|
|
176
|
+
const tier = tierOf(prominence);
|
|
177
|
+
const slot = SLOT_TABLE[polarity][tier][role];
|
|
178
|
+
invariant(slot !== undefined, `unknown ANSI16 role: ${role}`);
|
|
179
|
+
return slot;
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=ansi16.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi16.js","sourceRoot":"","sources":["../../src/theme/ansi16.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* xterm 256-color nearest match for non-truecolor terminals.
|
|
3
|
+
*
|
|
4
|
+
* Palette: 0–15 system (skipped for matching — cube+gray only for
|
|
5
|
+
* semantic colors; 16–231 6³ cube; 232–255 grayscale). Matching in
|
|
6
|
+
* sRGB Euclidean distance is good enough for TUI chrome; OKLCH match
|
|
7
|
+
* would be nicer but cube steps dominate error either way.
|
|
8
|
+
*/
|
|
9
|
+
import type { Rgb } from "../lexicon/index.js";
|
|
10
|
+
/** Nearest xterm-256 index for an sRGB triple (0–255). */
|
|
11
|
+
export declare function nearestAnsi256(r: number, g: number, b: number): number;
|
|
12
|
+
export declare function nearestAnsi256FromRgb(rgb: Rgb): number;
|
|
13
|
+
/** Decode a 256-index back to approximate RGB (for tests / dimming). */
|
|
14
|
+
export declare function ansi256ToRgb(index: number): Rgb;
|
|
15
|
+
//# sourceMappingURL=ansi256.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi256.d.ts","sourceRoot":"","sources":["../../src/theme/ansi256.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AA8B/C,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAetE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAEtD;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAmC/C"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* xterm 256-color nearest match for non-truecolor terminals.
|
|
3
|
+
*
|
|
4
|
+
* Palette: 0–15 system (skipped for matching — cube+gray only for
|
|
5
|
+
* semantic colors; 16–231 6³ cube; 232–255 grayscale). Matching in
|
|
6
|
+
* sRGB Euclidean distance is good enough for TUI chrome; OKLCH match
|
|
7
|
+
* would be nicer but cube steps dominate error either way.
|
|
8
|
+
*/
|
|
9
|
+
import invariant from "tiny-invariant";
|
|
10
|
+
/** Build the 240 matchable entries (cube + gray). System 0–15 omitted. */
|
|
11
|
+
function buildPalette() {
|
|
12
|
+
const out = [];
|
|
13
|
+
// 6×6×6 cube: levels 0,95,135,175,215,255
|
|
14
|
+
const levels = [0, 95, 135, 175, 215, 255];
|
|
15
|
+
for (let ri = 0; ri < 6; ri++) {
|
|
16
|
+
for (let gi = 0; gi < 6; gi++) {
|
|
17
|
+
for (let bi = 0; bi < 6; bi++) {
|
|
18
|
+
const index = 16 + 36 * ri + 6 * gi + bi;
|
|
19
|
+
out.push({
|
|
20
|
+
index,
|
|
21
|
+
r: levels[ri],
|
|
22
|
+
g: levels[gi],
|
|
23
|
+
b: levels[bi],
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// grayscale ramp 232–255
|
|
29
|
+
for (let i = 0; i < 24; i++) {
|
|
30
|
+
const v = 8 + i * 10;
|
|
31
|
+
out.push({ index: 232 + i, r: v, g: v, b: v });
|
|
32
|
+
}
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
const PALETTE = buildPalette();
|
|
36
|
+
/** Nearest xterm-256 index for an sRGB triple (0–255). */
|
|
37
|
+
export function nearestAnsi256(r, g, b) {
|
|
38
|
+
let best = 16;
|
|
39
|
+
let bestD = Infinity;
|
|
40
|
+
for (const p of PALETTE) {
|
|
41
|
+
const dr = r - p.r;
|
|
42
|
+
const dg = g - p.g;
|
|
43
|
+
const db = b - p.b;
|
|
44
|
+
const d = dr * dr + dg * dg + db * db;
|
|
45
|
+
if (d < bestD) {
|
|
46
|
+
bestD = d;
|
|
47
|
+
best = p.index;
|
|
48
|
+
if (d === 0)
|
|
49
|
+
return best;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return best;
|
|
53
|
+
}
|
|
54
|
+
export function nearestAnsi256FromRgb(rgb) {
|
|
55
|
+
return nearestAnsi256(rgb.r, rgb.g, rgb.b);
|
|
56
|
+
}
|
|
57
|
+
/** Decode a 256-index back to approximate RGB (for tests / dimming). */
|
|
58
|
+
export function ansi256ToRgb(index) {
|
|
59
|
+
invariant(index >= 0, `ansi256 index cannot be negative: ${index}`);
|
|
60
|
+
invariant(index <= 255, `ansi256 index cannot overflow: ${index}`);
|
|
61
|
+
if (index < 16) {
|
|
62
|
+
// classic + bright — xterm defaults
|
|
63
|
+
const basic = [
|
|
64
|
+
{ r: 0, g: 0, b: 0 },
|
|
65
|
+
{ r: 205, g: 0, b: 0 },
|
|
66
|
+
{ r: 0, g: 205, b: 0 },
|
|
67
|
+
{ r: 205, g: 205, b: 0 },
|
|
68
|
+
{ r: 0, g: 0, b: 238 },
|
|
69
|
+
{ r: 205, g: 0, b: 205 },
|
|
70
|
+
{ r: 0, g: 205, b: 205 },
|
|
71
|
+
{ r: 229, g: 229, b: 229 },
|
|
72
|
+
{ r: 127, g: 127, b: 127 },
|
|
73
|
+
{ r: 255, g: 0, b: 0 },
|
|
74
|
+
{ r: 0, g: 255, b: 0 },
|
|
75
|
+
{ r: 255, g: 255, b: 0 },
|
|
76
|
+
{ r: 92, g: 92, b: 255 },
|
|
77
|
+
{ r: 255, g: 0, b: 255 },
|
|
78
|
+
{ r: 0, g: 255, b: 255 },
|
|
79
|
+
{ r: 255, g: 255, b: 255 },
|
|
80
|
+
];
|
|
81
|
+
return basic[index];
|
|
82
|
+
}
|
|
83
|
+
if (index < 232) {
|
|
84
|
+
const n = index - 16;
|
|
85
|
+
const levels = [0, 95, 135, 175, 215, 255];
|
|
86
|
+
const ri = Math.floor(n / 36);
|
|
87
|
+
const gi = Math.floor((n % 36) / 6);
|
|
88
|
+
const bi = n % 6;
|
|
89
|
+
return { r: levels[ri], g: levels[gi], b: levels[bi] };
|
|
90
|
+
}
|
|
91
|
+
const v = 8 + (index - 232) * 10;
|
|
92
|
+
return { r: v, g: v, b: v };
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=ansi256.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi256.js","sourceRoot":"","sources":["../../src/theme/ansi256.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal ground attunement (theme math).
|
|
3
|
+
*
|
|
4
|
+
* OSC 11 parse lives in ../capabilities/index.js; OKLCH L conversion here.
|
|
5
|
+
*/
|
|
6
|
+
/** OKLCH L from OSC 11 / any sRGB background (0–255 channels). */
|
|
7
|
+
export declare function groundFromRgb(r: number, g: number, b: number): number;
|
|
8
|
+
//# sourceMappingURL=ground.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ground.d.ts","sourceRoot":"","sources":["../../src/theme/ground.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAErE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal ground attunement (theme math).
|
|
3
|
+
*
|
|
4
|
+
* OSC 11 parse lives in ../capabilities/index.js; OKLCH L conversion here.
|
|
5
|
+
*/
|
|
6
|
+
import { rgbToOklch } from "./salience.js";
|
|
7
|
+
/** OKLCH L from OSC 11 / any sRGB background (0–255 channels). */
|
|
8
|
+
export function groundFromRgb(r, g, b) {
|
|
9
|
+
return rgbToOklch(r, g, b).l;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=ground.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ground.js","sourceRoot":"","sources":["../../src/theme/ground.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC3D,OAAO,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from "./salience.js";
|
|
2
|
+
export * from "./seeds.js";
|
|
3
|
+
export * from "./ansi16.js";
|
|
4
|
+
export * from "./theme.js";
|
|
5
|
+
export * from "./ansi256.js";
|
|
6
|
+
export * from "./region.js";
|
|
7
|
+
export * from "./selection.js";
|
|
8
|
+
export * from "./resolver.js";
|
|
9
|
+
export * from "./ground.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from "./salience.js";
|
|
2
|
+
export * from "./seeds.js";
|
|
3
|
+
export * from "./ansi16.js";
|
|
4
|
+
export * from "./theme.js";
|
|
5
|
+
export * from "./ansi256.js";
|
|
6
|
+
export * from "./region.js";
|
|
7
|
+
export * from "./selection.js";
|
|
8
|
+
export * from "./resolver.js";
|
|
9
|
+
export * from "./ground.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Region prominence dimming — fade colors toward terminal ground.
|
|
3
|
+
*
|
|
4
|
+
* When a region is de-emphasized (modal backdrop, unfocused pane), both
|
|
5
|
+
* fg and bg fade: apparent lightness toward ground, chroma by p^γ.
|
|
6
|
+
* γ = ln(0.65)/ln(0.45): at overlay keep 0.45, chroma is 0.65 of source
|
|
7
|
+
* (0.45^γ = 0.65).
|
|
8
|
+
*
|
|
9
|
+
* p == 1.0 is identity (no work). Transparent bg (absent) never dims.
|
|
10
|
+
*/
|
|
11
|
+
import { type Rgb } from "../lexicon/index.js";
|
|
12
|
+
/** Closed-form chroma exponent: ln(0.65)/ln(0.45). */
|
|
13
|
+
export declare const REGION_GAMMA: number;
|
|
14
|
+
/**
|
|
15
|
+
* Fade a hex color toward ground OKLCH L at prominence p.
|
|
16
|
+
* Returns new hex. At p=1 returns input unchanged (byte-identity path).
|
|
17
|
+
*/
|
|
18
|
+
export declare function regionDimHex(hex: string, groundL: number, prominence: number): string;
|
|
19
|
+
export declare function regionDimRgb(rgb: Rgb, groundL: number, prominence: number): Rgb;
|
|
20
|
+
/**
|
|
21
|
+
* Opacity substitute over an arbitrary **local surface** (panel, wash, cell
|
|
22
|
+
* bg) — not only the terminal theme ground.
|
|
23
|
+
*
|
|
24
|
+
* At `p = 1` the fg is identity; at `p = 0` the result is the surface color
|
|
25
|
+
* (true "into opacity" against that backdrop). Intermediate: apparent
|
|
26
|
+
* lightness and chroma lerp toward the surface (chroma with REGION_GAMMA);
|
|
27
|
+
* hue stays the fg's until fully dissolved so identity reads while fading.
|
|
28
|
+
*
|
|
29
|
+
* Use this whenever text sits on painted furniture. {@link regionDimRgb}
|
|
30
|
+
* toward theme ground is wrong there — it dissolves into a different
|
|
31
|
+
* color than the cell behind the glyph.
|
|
32
|
+
*/
|
|
33
|
+
export declare function fadeTowardSurfaceRgb(fg: Rgb, surface: Rgb, prominence: number, opts?: {
|
|
34
|
+
chromaExp?: number;
|
|
35
|
+
}): Rgb;
|
|
36
|
+
/**
|
|
37
|
+
* Mix a fill toward a hotter role. Hue takes the tint's identity immediately
|
|
38
|
+
* so chroma growth reads as one glow, not a hue sweep through red. Chroma
|
|
39
|
+
* and apparent lightness lerp with `t`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function mixTowardTintRgb(base: Rgb, tint: Rgb, t: number): Rgb;
|
|
42
|
+
//# sourceMappingURL=region.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"region.d.ts","sourceRoot":"","sources":["../../src/theme/region.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE/C,sDAAsD;AACtD,eAAO,MAAM,YAAY,QAAkC,CAAC;AAiB5D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAYrF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG,CAI/E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAmBlH;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAarE"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Region prominence dimming — fade colors toward terminal ground.
|
|
3
|
+
*
|
|
4
|
+
* When a region is de-emphasized (modal backdrop, unfocused pane), both
|
|
5
|
+
* fg and bg fade: apparent lightness toward ground, chroma by p^γ.
|
|
6
|
+
* γ = ln(0.65)/ln(0.45): at overlay keep 0.45, chroma is 0.65 of source
|
|
7
|
+
* (0.45^γ = 0.65).
|
|
8
|
+
*
|
|
9
|
+
* p == 1.0 is identity (no work). Transparent bg (absent) never dims.
|
|
10
|
+
*/
|
|
11
|
+
import { apparentLightness, hexToOklch, hexToRgb, oklchToHex, rgbToOklch, solveLightness } from "./salience.js";
|
|
12
|
+
/** Closed-form chroma exponent: ln(0.65)/ln(0.45). */
|
|
13
|
+
export const REGION_GAMMA = Math.log(0.65) / Math.log(0.45);
|
|
14
|
+
function clamp01(p) {
|
|
15
|
+
if (!Number.isFinite(p))
|
|
16
|
+
return 1;
|
|
17
|
+
return Math.min(1, Math.max(0, p));
|
|
18
|
+
}
|
|
19
|
+
function rgbToHex(rgb) {
|
|
20
|
+
return `#${[rgb.r, rgb.g, rgb.b]
|
|
21
|
+
.map((x) => Math.max(0, Math.min(255, Math.round(x)))
|
|
22
|
+
.toString(16)
|
|
23
|
+
.padStart(2, "0"))
|
|
24
|
+
.join("")}`;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Fade a hex color toward ground OKLCH L at prominence p.
|
|
28
|
+
* Returns new hex. At p=1 returns input unchanged (byte-identity path).
|
|
29
|
+
*/
|
|
30
|
+
export function regionDimHex(hex, groundL, prominence) {
|
|
31
|
+
const p = clamp01(prominence);
|
|
32
|
+
if (p >= 1)
|
|
33
|
+
return hex;
|
|
34
|
+
if (p <= 0) {
|
|
35
|
+
return oklchToHex(groundL, 0, 0);
|
|
36
|
+
}
|
|
37
|
+
const { l, c, h } = hexToOklch(hex);
|
|
38
|
+
const al = apparentLightness(l, c, h);
|
|
39
|
+
const fadedAl = groundL + (al - groundL) * p;
|
|
40
|
+
const fadedC = c * p ** REGION_GAMMA;
|
|
41
|
+
const fadedL = solveLightness(fadedAl, fadedC, h);
|
|
42
|
+
return oklchToHex(fadedL, fadedC, h);
|
|
43
|
+
}
|
|
44
|
+
export function regionDimRgb(rgb, groundL, prominence) {
|
|
45
|
+
const p = clamp01(prominence);
|
|
46
|
+
if (p >= 1)
|
|
47
|
+
return rgb;
|
|
48
|
+
return hexToRgb(regionDimHex(rgbToHex(rgb), groundL, p));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Opacity substitute over an arbitrary **local surface** (panel, wash, cell
|
|
52
|
+
* bg) — not only the terminal theme ground.
|
|
53
|
+
*
|
|
54
|
+
* At `p = 1` the fg is identity; at `p = 0` the result is the surface color
|
|
55
|
+
* (true "into opacity" against that backdrop). Intermediate: apparent
|
|
56
|
+
* lightness and chroma lerp toward the surface (chroma with REGION_GAMMA);
|
|
57
|
+
* hue stays the fg's until fully dissolved so identity reads while fading.
|
|
58
|
+
*
|
|
59
|
+
* Use this whenever text sits on painted furniture. {@link regionDimRgb}
|
|
60
|
+
* toward theme ground is wrong there — it dissolves into a different
|
|
61
|
+
* color than the cell behind the glyph.
|
|
62
|
+
*/
|
|
63
|
+
export function fadeTowardSurfaceRgb(fg, surface, prominence, opts) {
|
|
64
|
+
const p = clamp01(prominence);
|
|
65
|
+
if (p >= 1)
|
|
66
|
+
return { ...fg };
|
|
67
|
+
if (p <= 0)
|
|
68
|
+
return { ...surface };
|
|
69
|
+
const f = rgbToOklch(fg.r, fg.g, fg.b);
|
|
70
|
+
const s = rgbToOklch(surface.r, surface.g, surface.b);
|
|
71
|
+
const fgAl = apparentLightness(f.l, f.c, f.h);
|
|
72
|
+
const sAl = apparentLightness(s.l, s.c, s.h);
|
|
73
|
+
const fadedAl = sAl + (fgAl - sAl) * p;
|
|
74
|
+
// Default: region-dim γ (sublinear — chroma lingers). Fuse-into-contour
|
|
75
|
+
// passes 2 so chroma dies faster than lightness (no late orange step).
|
|
76
|
+
const exp = opts?.chromaExp ?? REGION_GAMMA;
|
|
77
|
+
const tC = p ** exp;
|
|
78
|
+
const fadedC = s.c + (f.c - s.c) * tC;
|
|
79
|
+
// Hue: keep fg identity while any of the ink remains.
|
|
80
|
+
const fadedH = f.h;
|
|
81
|
+
const fadedL = solveLightness(fadedAl, fadedC, fadedH);
|
|
82
|
+
return hexToRgb(oklchToHex(fadedL, fadedC, fadedH));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Mix a fill toward a hotter role. Hue takes the tint's identity immediately
|
|
86
|
+
* so chroma growth reads as one glow, not a hue sweep through red. Chroma
|
|
87
|
+
* and apparent lightness lerp with `t`.
|
|
88
|
+
*/
|
|
89
|
+
export function mixTowardTintRgb(base, tint, t) {
|
|
90
|
+
const p = typeof t === "number" && Number.isFinite(t) ? Math.max(0, Math.min(1, t)) : 0;
|
|
91
|
+
if (p <= 0)
|
|
92
|
+
return { ...base };
|
|
93
|
+
if (p >= 1)
|
|
94
|
+
return { ...tint };
|
|
95
|
+
const b = rgbToOklch(base.r, base.g, base.b);
|
|
96
|
+
const hot = rgbToOklch(tint.r, tint.g, tint.b);
|
|
97
|
+
const bAl = apparentLightness(b.l, b.c, b.h);
|
|
98
|
+
const hotAl = apparentLightness(hot.l, hot.c, hot.h);
|
|
99
|
+
const fadedAl = bAl + (hotAl - bAl) * p;
|
|
100
|
+
const fadedC = b.c + (hot.c - b.c) * p;
|
|
101
|
+
const fadedH = hot.h;
|
|
102
|
+
const fadedL = solveLightness(fadedAl, fadedC, fadedH);
|
|
103
|
+
return hexToRgb(oklchToHex(fadedL, fadedC, fadedH));
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=region.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"region.js","sourceRoot":"","sources":["../../src/theme/region.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
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 type { Theme } from "./theme.js";
|
|
54
|
+
import type { ColorDepth } from "../capabilities/index.js";
|
|
55
|
+
import { type Rgb } from "../lexicon/index.js";
|
|
56
|
+
/** Buffer-compatible style fragment (mirrors ../buffer/index.js Style). */
|
|
57
|
+
export type StyleLike = {
|
|
58
|
+
bold?: boolean;
|
|
59
|
+
dim?: boolean;
|
|
60
|
+
strike?: boolean;
|
|
61
|
+
italic?: boolean;
|
|
62
|
+
underline?: boolean;
|
|
63
|
+
href?: string;
|
|
64
|
+
fg?: number;
|
|
65
|
+
fgRgb?: Rgb;
|
|
66
|
+
bg?: number;
|
|
67
|
+
bgRgb?: Rgb;
|
|
68
|
+
bgFx?: string;
|
|
69
|
+
bgFxU?: number;
|
|
70
|
+
bgFxV?: number;
|
|
71
|
+
role?: string;
|
|
72
|
+
prominence?: number;
|
|
73
|
+
bgRole?: string;
|
|
74
|
+
bgProminence?: number;
|
|
75
|
+
surfaceRole?: string;
|
|
76
|
+
surfaceRgb?: Rgb;
|
|
77
|
+
surfaceProminence?: number;
|
|
78
|
+
fuseRole?: string;
|
|
79
|
+
fuseProminence?: number;
|
|
80
|
+
tintRole?: string;
|
|
81
|
+
tint?: number;
|
|
82
|
+
regionProminence?: number;
|
|
83
|
+
selected?: boolean;
|
|
84
|
+
cast?: "transparent";
|
|
85
|
+
};
|
|
86
|
+
export type ResolveCtx = {
|
|
87
|
+
theme: Theme;
|
|
88
|
+
depth?: ColorDepth;
|
|
89
|
+
/** Default region prominence when style has none (1.0 = full). */
|
|
90
|
+
regionProminence?: number;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Bold H-K compensation (enabler 7). Irradiation (Helmholtz 1867, observed by
|
|
94
|
+
* Galileo 1632) makes light-on-dark strokes look brighter/heavier than their
|
|
95
|
+
* measured lightness; on dark surfaces this compounds with sRGB gamma
|
|
96
|
+
* spreading (`typography.md`: "the double effect means dark theme display
|
|
97
|
+
* text at conventional bold weights appears significantly over-weighted").
|
|
98
|
+
* The resolver counters by nudging the solved apparent lightness back toward
|
|
99
|
+
* ground by a fixed budget so bold reads as *weight*, not as an accent bump.
|
|
100
|
+
* Polarity-aware: the shift is toward ground on EITHER polarity (dark ground
|
|
101
|
+
* pulls down, light ground pushes up) — never away from it.
|
|
102
|
+
*
|
|
103
|
+
* Delta derivation anchor (G10): Delta's surface-adaptive weight already
|
|
104
|
+
* solves the same irradiation family for font weight — `--font-weight`
|
|
105
|
+
* (`delta/delta-css/src/typography.css:78-81`) linearly interpolates
|
|
106
|
+
* `--⚙️weight-dark-surface` (360) → `--⚙️weight-light-surface` (420) by
|
|
107
|
+
* surface lightness (`typography-configuration-properties.css:30-58`); that
|
|
108
|
+
* 360/420 ratio is ≈0.85, the "0.85 multiplier" family cited in
|
|
109
|
+
* design-science typography notes (CSS-Tricks anchor, irradiation
|
|
110
|
+
* illusion). Font weight and terminal apparent-lightness are
|
|
111
|
+
* different render channels for the same perceptual correction, so the
|
|
112
|
+
* multiplier doesn't transfer directly — `BOLD_AL_COMPENSATION` is the AL
|
|
113
|
+
* budget's own starting point (an ~4% AL pull, not a weight ratio), picked
|
|
114
|
+
* as a small fraction of the JND (0.074, `dark-theme.md`) so it visibly
|
|
115
|
+
* de-weights bold without crossing into a second contrast step. Tunable —
|
|
116
|
+
* see the `bold-compensation` storybook story for the eyeball-tuning rig.
|
|
117
|
+
*/
|
|
118
|
+
export declare const BOLD_AL_COMPENSATION = 0.04;
|
|
119
|
+
/**
|
|
120
|
+
* Resolve one style: role → concrete color at depth; apply region dim.
|
|
121
|
+
* Returns a new style with concrete fg/fgRgb (role kept for dual-dirty).
|
|
122
|
+
*/
|
|
123
|
+
export declare function resolveStyle(style: StyleLike, ctx: ResolveCtx): StyleLike;
|
|
124
|
+
/** Bind a resolveStyle callback for paintFrame / dual-dirty. */
|
|
125
|
+
export declare function makeStyleResolver(ctx: ResolveCtx): (style: StyleLike) => StyleLike;
|
|
126
|
+
//# sourceMappingURL=resolver.d.ts.map
|