@promptctl/rich-js 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +418 -0
- package/dist/core/box.d.ts +91 -0
- package/dist/core/box.d.ts.map +1 -0
- package/dist/core/box.js +534 -0
- package/dist/core/box.js.map +1 -0
- package/dist/core/cells.d.ts +24 -0
- package/dist/core/cells.d.ts.map +1 -0
- package/dist/core/cells.js +114 -0
- package/dist/core/cells.js.map +1 -0
- package/dist/core/color.d.ts +158 -0
- package/dist/core/color.d.ts.map +1 -0
- package/dist/core/color.js +825 -0
- package/dist/core/color.js.map +1 -0
- package/dist/core/console.d.ts +100 -0
- package/dist/core/console.d.ts.map +1 -0
- package/dist/core/console.js +353 -0
- package/dist/core/console.js.map +1 -0
- package/dist/core/emoji.d.ts +25 -0
- package/dist/core/emoji.d.ts.map +1 -0
- package/dist/core/emoji.js +392 -0
- package/dist/core/emoji.js.map +1 -0
- package/dist/core/highlighter.d.ts +33 -0
- package/dist/core/highlighter.d.ts.map +1 -0
- package/dist/core/highlighter.js +103 -0
- package/dist/core/highlighter.js.map +1 -0
- package/dist/core/markup.d.ts +69 -0
- package/dist/core/markup.d.ts.map +1 -0
- package/dist/core/markup.js +401 -0
- package/dist/core/markup.js.map +1 -0
- package/dist/core/measure.d.ts +17 -0
- package/dist/core/measure.d.ts.map +1 -0
- package/dist/core/measure.js +50 -0
- package/dist/core/measure.js.map +1 -0
- package/dist/core/protocol.d.ts +32 -0
- package/dist/core/protocol.d.ts.map +1 -0
- package/dist/core/protocol.js +17 -0
- package/dist/core/protocol.js.map +1 -0
- package/dist/core/render.d.ts +51 -0
- package/dist/core/render.d.ts.map +1 -0
- package/dist/core/render.js +69 -0
- package/dist/core/render.js.map +1 -0
- package/dist/core/segment.d.ts +104 -0
- package/dist/core/segment.d.ts.map +1 -0
- package/dist/core/segment.js +364 -0
- package/dist/core/segment.js.map +1 -0
- package/dist/core/spinnerData.d.ts +11 -0
- package/dist/core/spinnerData.d.ts.map +1 -0
- package/dist/core/spinnerData.js +116 -0
- package/dist/core/spinnerData.js.map +1 -0
- package/dist/core/strip.d.ts +159 -0
- package/dist/core/strip.d.ts.map +1 -0
- package/dist/core/strip.js +237 -0
- package/dist/core/strip.js.map +1 -0
- package/dist/core/style.d.ts +115 -0
- package/dist/core/style.d.ts.map +1 -0
- package/dist/core/style.js +662 -0
- package/dist/core/style.js.map +1 -0
- package/dist/core/text.d.ts +91 -0
- package/dist/core/text.d.ts.map +1 -0
- package/dist/core/text.js +610 -0
- package/dist/core/text.js.map +1 -0
- package/dist/index.d.ts +99 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/renderables/align.d.ts +17 -0
- package/dist/renderables/align.d.ts.map +1 -0
- package/dist/renderables/align.js +47 -0
- package/dist/renderables/align.js.map +1 -0
- package/dist/renderables/columns.d.ts +28 -0
- package/dist/renderables/columns.d.ts.map +1 -0
- package/dist/renderables/columns.js +92 -0
- package/dist/renderables/columns.js.map +1 -0
- package/dist/renderables/constrain.d.ts +16 -0
- package/dist/renderables/constrain.d.ts.map +1 -0
- package/dist/renderables/constrain.js +38 -0
- package/dist/renderables/constrain.js.map +1 -0
- package/dist/renderables/flexStrip.d.ts +42 -0
- package/dist/renderables/flexStrip.d.ts.map +1 -0
- package/dist/renderables/flexStrip.js +201 -0
- package/dist/renderables/flexStrip.js.map +1 -0
- package/dist/renderables/group.d.ts +12 -0
- package/dist/renderables/group.d.ts.map +1 -0
- package/dist/renderables/group.js +16 -0
- package/dist/renderables/group.js.map +1 -0
- package/dist/renderables/json.d.ts +23 -0
- package/dist/renderables/json.d.ts.map +1 -0
- package/dist/renderables/json.js +49 -0
- package/dist/renderables/json.js.map +1 -0
- package/dist/renderables/layout.d.ts +37 -0
- package/dist/renderables/layout.d.ts.map +1 -0
- package/dist/renderables/layout.js +151 -0
- package/dist/renderables/layout.js.map +1 -0
- package/dist/renderables/live.d.ts +48 -0
- package/dist/renderables/live.d.ts.map +1 -0
- package/dist/renderables/live.js +131 -0
- package/dist/renderables/live.js.map +1 -0
- package/dist/renderables/markdown.d.ts +25 -0
- package/dist/renderables/markdown.d.ts.map +1 -0
- package/dist/renderables/markdown.js +190 -0
- package/dist/renderables/markdown.js.map +1 -0
- package/dist/renderables/padding.d.ts +26 -0
- package/dist/renderables/padding.d.ts.map +1 -0
- package/dist/renderables/padding.js +92 -0
- package/dist/renderables/padding.js.map +1 -0
- package/dist/renderables/panel.d.ts +42 -0
- package/dist/renderables/panel.d.ts.map +1 -0
- package/dist/renderables/panel.js +202 -0
- package/dist/renderables/panel.js.map +1 -0
- package/dist/renderables/pretty.d.ts +29 -0
- package/dist/renderables/pretty.d.ts.map +1 -0
- package/dist/renderables/pretty.js +141 -0
- package/dist/renderables/pretty.js.map +1 -0
- package/dist/renderables/progress.d.ts +91 -0
- package/dist/renderables/progress.d.ts.map +1 -0
- package/dist/renderables/progress.js +234 -0
- package/dist/renderables/progress.js.map +1 -0
- package/dist/renderables/progressBar.d.ts +32 -0
- package/dist/renderables/progressBar.d.ts.map +1 -0
- package/dist/renderables/progressBar.js +59 -0
- package/dist/renderables/progressBar.js.map +1 -0
- package/dist/renderables/prompt.d.ts +25 -0
- package/dist/renderables/prompt.d.ts.map +1 -0
- package/dist/renderables/prompt.js +109 -0
- package/dist/renderables/prompt.js.map +1 -0
- package/dist/renderables/rule.d.ts +25 -0
- package/dist/renderables/rule.d.ts.map +1 -0
- package/dist/renderables/rule.js +96 -0
- package/dist/renderables/rule.js.map +1 -0
- package/dist/renderables/spinner.d.ts +30 -0
- package/dist/renderables/spinner.d.ts.map +1 -0
- package/dist/renderables/spinner.js +70 -0
- package/dist/renderables/spinner.js.map +1 -0
- package/dist/renderables/status.d.ts +24 -0
- package/dist/renderables/status.d.ts.map +1 -0
- package/dist/renderables/status.js +67 -0
- package/dist/renderables/status.js.map +1 -0
- package/dist/renderables/syntax.d.ts +36 -0
- package/dist/renderables/syntax.d.ts.map +1 -0
- package/dist/renderables/syntax.js +115 -0
- package/dist/renderables/syntax.js.map +1 -0
- package/dist/renderables/table.d.ts +109 -0
- package/dist/renderables/table.d.ts.map +1 -0
- package/dist/renderables/table.js +434 -0
- package/dist/renderables/table.js.map +1 -0
- package/dist/renderables/traceback.d.ts +26 -0
- package/dist/renderables/traceback.d.ts.map +1 -0
- package/dist/renderables/traceback.js +108 -0
- package/dist/renderables/traceback.js.map +1 -0
- package/dist/renderables/tree.d.ts +30 -0
- package/dist/renderables/tree.d.ts.map +1 -0
- package/dist/renderables/tree.js +107 -0
- package/dist/renderables/tree.js.map +1 -0
- package/dist/template-bindings/index.d.ts +61 -0
- package/dist/template-bindings/index.d.ts.map +1 -0
- package/dist/template-bindings/index.js +70 -0
- package/dist/template-bindings/index.js.map +1 -0
- package/dist/template-bindings/style-funcs.d.ts +30 -0
- package/dist/template-bindings/style-funcs.d.ts.map +1 -0
- package/dist/template-bindings/style-funcs.js +172 -0
- package/dist/template-bindings/style-funcs.js.map +1 -0
- package/dist/themes/buildPalette.d.ts +31 -0
- package/dist/themes/buildPalette.d.ts.map +1 -0
- package/dist/themes/buildPalette.js +43 -0
- package/dist/themes/buildPalette.js.map +1 -0
- package/dist/themes/colorMath.d.ts +23 -0
- package/dist/themes/colorMath.d.ts.map +1 -0
- package/dist/themes/colorMath.js +99 -0
- package/dist/themes/colorMath.js.map +1 -0
- package/dist/themes/data/atom-one-dark.d.ts +4 -0
- package/dist/themes/data/atom-one-dark.d.ts.map +1 -0
- package/dist/themes/data/atom-one-dark.js +159 -0
- package/dist/themes/data/atom-one-dark.js.map +1 -0
- package/dist/themes/data/atom-one-light.d.ts +4 -0
- package/dist/themes/data/atom-one-light.d.ts.map +1 -0
- package/dist/themes/data/atom-one-light.js +159 -0
- package/dist/themes/data/atom-one-light.js.map +1 -0
- package/dist/themes/data/catppuccin-latte.d.ts +4 -0
- package/dist/themes/data/catppuccin-latte.d.ts.map +1 -0
- package/dist/themes/data/catppuccin-latte.js +159 -0
- package/dist/themes/data/catppuccin-latte.js.map +1 -0
- package/dist/themes/data/catppuccin-mocha.d.ts +4 -0
- package/dist/themes/data/catppuccin-mocha.d.ts.map +1 -0
- package/dist/themes/data/catppuccin-mocha.js +159 -0
- package/dist/themes/data/catppuccin-mocha.js.map +1 -0
- package/dist/themes/data/dracula.d.ts +4 -0
- package/dist/themes/data/dracula.d.ts.map +1 -0
- package/dist/themes/data/dracula.js +159 -0
- package/dist/themes/data/dracula.js.map +1 -0
- package/dist/themes/data/flexoki.d.ts +4 -0
- package/dist/themes/data/flexoki.d.ts.map +1 -0
- package/dist/themes/data/flexoki.js +159 -0
- package/dist/themes/data/flexoki.js.map +1 -0
- package/dist/themes/data/gruvbox.d.ts +4 -0
- package/dist/themes/data/gruvbox.d.ts.map +1 -0
- package/dist/themes/data/gruvbox.js +159 -0
- package/dist/themes/data/gruvbox.js.map +1 -0
- package/dist/themes/data/index.d.ts +29 -0
- package/dist/themes/data/index.d.ts.map +1 -0
- package/dist/themes/data/index.js +48 -0
- package/dist/themes/data/index.js.map +1 -0
- package/dist/themes/data/monokai.d.ts +4 -0
- package/dist/themes/data/monokai.d.ts.map +1 -0
- package/dist/themes/data/monokai.js +159 -0
- package/dist/themes/data/monokai.js.map +1 -0
- package/dist/themes/data/nord.d.ts +4 -0
- package/dist/themes/data/nord.d.ts.map +1 -0
- package/dist/themes/data/nord.js +159 -0
- package/dist/themes/data/nord.js.map +1 -0
- package/dist/themes/data/rose-pine-dawn.d.ts +4 -0
- package/dist/themes/data/rose-pine-dawn.d.ts.map +1 -0
- package/dist/themes/data/rose-pine-dawn.js +159 -0
- package/dist/themes/data/rose-pine-dawn.js.map +1 -0
- package/dist/themes/data/rose-pine-moon.d.ts +4 -0
- package/dist/themes/data/rose-pine-moon.d.ts.map +1 -0
- package/dist/themes/data/rose-pine-moon.js +159 -0
- package/dist/themes/data/rose-pine-moon.js.map +1 -0
- package/dist/themes/data/rose-pine.d.ts +4 -0
- package/dist/themes/data/rose-pine.d.ts.map +1 -0
- package/dist/themes/data/rose-pine.js +159 -0
- package/dist/themes/data/rose-pine.js.map +1 -0
- package/dist/themes/data/solarized-dark.d.ts +4 -0
- package/dist/themes/data/solarized-dark.d.ts.map +1 -0
- package/dist/themes/data/solarized-dark.js +159 -0
- package/dist/themes/data/solarized-dark.js.map +1 -0
- package/dist/themes/data/solarized-light.d.ts +4 -0
- package/dist/themes/data/solarized-light.d.ts.map +1 -0
- package/dist/themes/data/solarized-light.js +159 -0
- package/dist/themes/data/solarized-light.js.map +1 -0
- package/dist/themes/data/textual-ansi.d.ts +4 -0
- package/dist/themes/data/textual-ansi.d.ts.map +1 -0
- package/dist/themes/data/textual-ansi.js +159 -0
- package/dist/themes/data/textual-ansi.js.map +1 -0
- package/dist/themes/data/textual-dark.d.ts +4 -0
- package/dist/themes/data/textual-dark.d.ts.map +1 -0
- package/dist/themes/data/textual-dark.js +159 -0
- package/dist/themes/data/textual-dark.js.map +1 -0
- package/dist/themes/data/textual-light.d.ts +4 -0
- package/dist/themes/data/textual-light.d.ts.map +1 -0
- package/dist/themes/data/textual-light.js +159 -0
- package/dist/themes/data/textual-light.js.map +1 -0
- package/dist/themes/data/tokyo-night.d.ts +4 -0
- package/dist/themes/data/tokyo-night.d.ts.map +1 -0
- package/dist/themes/data/tokyo-night.js +159 -0
- package/dist/themes/data/tokyo-night.js.map +1 -0
- package/dist/themes/data/types.d.ts +15 -0
- package/dist/themes/data/types.d.ts.map +1 -0
- package/dist/themes/data/types.js +2 -0
- package/dist/themes/data/types.js.map +1 -0
- package/dist/themes/palette.d.ts +20 -0
- package/dist/themes/palette.d.ts.map +1 -0
- package/dist/themes/palette.js +27 -0
- package/dist/themes/palette.js.map +1 -0
- package/dist/themes/paletteResolver.d.ts +35 -0
- package/dist/themes/paletteResolver.d.ts.map +1 -0
- package/dist/themes/paletteResolver.js +88 -0
- package/dist/themes/paletteResolver.js.map +1 -0
- package/dist/themes/registry.d.ts +17 -0
- package/dist/themes/registry.d.ts.map +1 -0
- package/dist/themes/registry.js +33 -0
- package/dist/themes/registry.js.map +1 -0
- package/dist/themes/terminalThemes.d.ts +46 -0
- package/dist/themes/terminalThemes.d.ts.map +1 -0
- package/dist/themes/terminalThemes.js +268 -0
- package/dist/themes/terminalThemes.js.map +1 -0
- package/dist/widgets/button.d.ts +47 -0
- package/dist/widgets/button.d.ts.map +1 -0
- package/dist/widgets/button.js +183 -0
- package/dist/widgets/button.js.map +1 -0
- package/dist/widgets/checkbox.d.ts +43 -0
- package/dist/widgets/checkbox.d.ts.map +1 -0
- package/dist/widgets/checkbox.js +144 -0
- package/dist/widgets/checkbox.js.map +1 -0
- package/dist/widgets/dropdown.d.ts +67 -0
- package/dist/widgets/dropdown.d.ts.map +1 -0
- package/dist/widgets/dropdown.js +373 -0
- package/dist/widgets/dropdown.js.map +1 -0
- package/dist/widgets/event-router.d.ts +73 -0
- package/dist/widgets/event-router.d.ts.map +1 -0
- package/dist/widgets/event-router.js +479 -0
- package/dist/widgets/event-router.js.map +1 -0
- package/dist/widgets/focus-manager.d.ts +26 -0
- package/dist/widgets/focus-manager.d.ts.map +1 -0
- package/dist/widgets/focus-manager.js +179 -0
- package/dist/widgets/focus-manager.js.map +1 -0
- package/dist/widgets/index.d.ts +23 -0
- package/dist/widgets/index.d.ts.map +1 -0
- package/dist/widgets/index.js +13 -0
- package/dist/widgets/index.js.map +1 -0
- package/dist/widgets/screen.d.ts +90 -0
- package/dist/widgets/screen.d.ts.map +1 -0
- package/dist/widgets/screen.js +440 -0
- package/dist/widgets/screen.js.map +1 -0
- package/dist/widgets/slider.d.ts +55 -0
- package/dist/widgets/slider.d.ts.map +1 -0
- package/dist/widgets/slider.js +248 -0
- package/dist/widgets/slider.js.map +1 -0
- package/dist/widgets/static-item.d.ts +41 -0
- package/dist/widgets/static-item.d.ts.map +1 -0
- package/dist/widgets/static-item.js +62 -0
- package/dist/widgets/static-item.js.map +1 -0
- package/dist/widgets/text-input.d.ts +50 -0
- package/dist/widgets/text-input.d.ts.map +1 -0
- package/dist/widgets/text-input.js +242 -0
- package/dist/widgets/text-input.js.map +1 -0
- package/dist/widgets/toggle.d.ts +46 -0
- package/dist/widgets/toggle.d.ts.map +1 -0
- package/dist/widgets/toggle.js +169 -0
- package/dist/widgets/toggle.js.map +1 -0
- package/dist/widgets/types.d.ts +92 -0
- package/dist/widgets/types.d.ts.map +1 -0
- package/dist/widgets/types.js +13 -0
- package/dist/widgets/types.js.map +1 -0
- package/dist/widgets/widget-base.d.ts +41 -0
- package/dist/widgets/widget-base.d.ts.map +1 -0
- package/dist/widgets/widget-base.js +159 -0
- package/dist/widgets/widget-base.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in spinner frame data.
|
|
3
|
+
* [LAW:one-type-per-behavior] All spinners are instances of SpinnerData — differ only by frame data.
|
|
4
|
+
*/
|
|
5
|
+
// [LAW:one-source-of-truth] Single authoritative collection of spinner definitions
|
|
6
|
+
export const SPINNERS = {
|
|
7
|
+
dots: { frames: ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"], interval: 80 },
|
|
8
|
+
dots2: { frames: ["⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷"], interval: 80 },
|
|
9
|
+
dots3: { frames: ["⠋", "⠙", "⠚", "⠞", "⠖", "⠦", "⠴", "⠲", "⠳", "⠓"], interval: 80 },
|
|
10
|
+
line: { frames: ["-", "\\", "|", "/"], interval: 130 },
|
|
11
|
+
line2: { frames: ["⠂", "-", "–", "—", "–", "-"], interval: 100 },
|
|
12
|
+
pipe: { frames: ["┤", "┘", "┴", "└", "├", "┌", "┬", "┐"], interval: 100 },
|
|
13
|
+
simpleDots: { frames: [". ", ".. ", "...", " "], interval: 400 },
|
|
14
|
+
simpleDotsScrolling: { frames: [". ", ".. ", "...", " ..", " .", " "], interval: 200 },
|
|
15
|
+
star: { frames: ["✶", "✸", "✹", "✺", "✹", "✷"], interval: 70 },
|
|
16
|
+
star2: { frames: ["+", "x", "*"], interval: 80 },
|
|
17
|
+
flip: { frames: ["_", "_", "_", "-", "`", "`", "'", "´", "-", "_", "_", "_"], interval: 70 },
|
|
18
|
+
hamburger: { frames: ["☱", "☲", "☴"], interval: 100 },
|
|
19
|
+
growVertical: { frames: ["▁", "▃", "▄", "▅", "▆", "▇", "▆", "▅", "▄", "▃"], interval: 120 },
|
|
20
|
+
growHorizontal: { frames: ["▏", "▎", "▍", "▌", "▋", "▊", "▉", "▊", "▋", "▌", "▍", "▎"], interval: 120 },
|
|
21
|
+
balloon: { frames: [" ", ".", "o", "O", "@", "*", " "], interval: 140 },
|
|
22
|
+
balloon2: { frames: [".", "o", "O", "°", "O", "o", "."], interval: 120 },
|
|
23
|
+
noise: { frames: ["▓", "▒", "░"], interval: 100 },
|
|
24
|
+
bounce: { frames: ["⠁", "⠂", "⠄", "⠂"], interval: 120 },
|
|
25
|
+
boxBounce: { frames: ["▖", "▘", "▝", "▗"], interval: 120 },
|
|
26
|
+
boxBounce2: { frames: ["▌", "▀", "▐", "▄"], interval: 100 },
|
|
27
|
+
triangle: { frames: ["◢", "◣", "◤", "◥"], interval: 50 },
|
|
28
|
+
arc: { frames: ["◜", "◠", "◝", "◞", "◡", "◟"], interval: 100 },
|
|
29
|
+
circle: { frames: ["◡", "⊙", "◠"], interval: 120 },
|
|
30
|
+
squareCorners: { frames: ["◰", "◳", "◲", "◱"], interval: 180 },
|
|
31
|
+
circleQuarters: { frames: ["◴", "◷", "◶", "◵"], interval: 120 },
|
|
32
|
+
circleHalves: { frames: ["◐", "◓", "◑", "◒"], interval: 50 },
|
|
33
|
+
squish: { frames: ["╫", "╪"], interval: 100 },
|
|
34
|
+
toggle: { frames: ["⊶", "⊷"], interval: 250 },
|
|
35
|
+
toggle2: { frames: ["▫", "▪"], interval: 80 },
|
|
36
|
+
toggle3: { frames: ["□", "■"], interval: 120 },
|
|
37
|
+
toggle4: { frames: ["■", "□", "▪", "▫"], interval: 100 },
|
|
38
|
+
toggle5: { frames: ["▮", "▯"], interval: 100 },
|
|
39
|
+
toggle6: { frames: ["ဝ", "၀"], interval: 300 },
|
|
40
|
+
toggle7: { frames: ["⦾", "⦿"], interval: 80 },
|
|
41
|
+
toggle8: { frames: ["◍", "◌"], interval: 100 },
|
|
42
|
+
toggle9: { frames: ["◉", "◎"], interval: 100 },
|
|
43
|
+
toggle10: { frames: ["㊂", "㊀", "㊁"], interval: 100 },
|
|
44
|
+
toggle11: { frames: ["⧇", "⧆"], interval: 50 },
|
|
45
|
+
toggle12: { frames: ["☗", "☖"], interval: 120 },
|
|
46
|
+
toggle13: { frames: ["=", "*", "-"], interval: 80 },
|
|
47
|
+
arrow: { frames: ["←", "↖", "↑", "↗", "→", "↘", "↓", "↙"], interval: 100 },
|
|
48
|
+
arrow2: { frames: ["⬆️ ", "↗️ ", "➡️ ", "↘️ ", "⬇️ ", "↙️ ", "⬅️ ", "↖️ "], interval: 80 },
|
|
49
|
+
arrow3: { frames: ["▹▹▹▹▹", "▸▹▹▹▹", "▹▸▹▹▹", "▹▹▸▹▹", "▹▹▹▸▹", "▹▹▹▹▸"], interval: 120 },
|
|
50
|
+
bouncingBar: { frames: [
|
|
51
|
+
"[ ]", "[= ]", "[== ]", "[=== ]", "[ ===]", "[ ==]", "[ =]", "[ ]",
|
|
52
|
+
"[ =]", "[ ==]", "[ ===]", "[====]", "[=== ]", "[== ]", "[= ]",
|
|
53
|
+
], interval: 80 },
|
|
54
|
+
bouncingBall: { frames: [
|
|
55
|
+
"( ● )", "( ● )", "( ● )", "( ● )", "( ●)", "( ● )",
|
|
56
|
+
"( ● )", "( ● )", "( ● )", "(● )",
|
|
57
|
+
], interval: 80 },
|
|
58
|
+
smiley: { frames: ["😄 ", "😝 "], interval: 200 },
|
|
59
|
+
monkey: { frames: ["🙈 ", "🙈 ", "🙉 ", "🙊 "], interval: 300 },
|
|
60
|
+
hearts: { frames: ["💛 ", "💙 ", "💜 ", "💚 ", "❤️ "], interval: 100 },
|
|
61
|
+
clock: { frames: ["🕛 ", "🕐 ", "🕑 ", "🕒 ", "🕓 ", "🕔 ", "🕕 ", "🕖 ", "🕗 ", "🕘 ", "🕙 ", "🕚 "], interval: 100 },
|
|
62
|
+
earth: { frames: ["🌍 ", "🌎 ", "🌏 "], interval: 180 },
|
|
63
|
+
moon: { frames: ["🌑 ", "🌒 ", "🌓 ", "🌔 ", "🌕 ", "🌖 ", "🌗 ", "🌘 "], interval: 80 },
|
|
64
|
+
runner: { frames: ["🚶 ", "🏃 "], interval: 140 },
|
|
65
|
+
pong: { frames: [
|
|
66
|
+
"▐⠂ ▌", "▐⠈ ▌", "▐ ⠂ ▌", "▐ ⠠ ▌", "▐ ⡀ ▌",
|
|
67
|
+
"▐ ⠠ ▌", "▐ ⠂ ▌", "▐ ⠈ ▌", "▐ ⠂ ▌", "▐ ⠠ ▌",
|
|
68
|
+
"▐ ⡀ ▌", "▐ ⠠ ▌", "▐ ⠂ ▌", "▐ ⠈ ▌", "▐ ⠂▌",
|
|
69
|
+
"▐ ⠠▌", "▐ ⡀▌", "▐ ⠠ ▌", "▐ ⠂ ▌", "▐ ⠈ ▌",
|
|
70
|
+
"▐ ⠂ ▌", "▐ ⠠ ▌", "▐ ⡀ ▌", "▐ ⠠ ▌", "▐ ⠂ ▌",
|
|
71
|
+
"▐ ⠈ ▌", "▐ ⠂ ▌", "▐ ⠠ ▌", "▐ ⡀ ▌", "▐⠠ ▌",
|
|
72
|
+
], interval: 80 },
|
|
73
|
+
material: { frames: [
|
|
74
|
+
"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
75
|
+
"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
76
|
+
"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁", "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
77
|
+
"███████▁▁▁▁▁▁▁▁▁▁▁▁▁", "████████▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
78
|
+
"█████████▁▁▁▁▁▁▁▁▁▁▁", "█████████▁▁▁▁▁▁▁▁▁▁▁",
|
|
79
|
+
"██████████▁▁▁▁▁▁▁▁▁▁", "███████████▁▁▁▁▁▁▁▁▁",
|
|
80
|
+
"█████████████▁▁▁▁▁▁▁", "██████████████▁▁▁▁▁▁",
|
|
81
|
+
"██████████████▁▁▁▁▁▁", "▁██████████████▁▁▁▁▁",
|
|
82
|
+
"▁██████████████▁▁▁▁▁", "▁██████████████▁▁▁▁▁",
|
|
83
|
+
"▁▁██████████████▁▁▁▁", "▁▁▁██████████████▁▁▁",
|
|
84
|
+
"▁▁▁▁█████████████▁▁▁", "▁▁▁▁██████████████▁▁",
|
|
85
|
+
"▁▁▁▁██████████████▁▁", "▁▁▁▁▁██████████████▁",
|
|
86
|
+
"▁▁▁▁▁██████████████▁", "▁▁▁▁▁██████████████▁",
|
|
87
|
+
"▁▁▁▁▁▁██████████████", "▁▁▁▁▁▁██████████████",
|
|
88
|
+
"▁▁▁▁▁▁▁█████████████", "▁▁▁▁▁▁▁█████████████",
|
|
89
|
+
"▁▁▁▁▁▁▁▁████████████", "▁▁▁▁▁▁▁▁████████████",
|
|
90
|
+
"▁▁▁▁▁▁▁▁▁███████████", "▁▁▁▁▁▁▁▁▁███████████",
|
|
91
|
+
"▁▁▁▁▁▁▁▁▁▁██████████", "▁▁▁▁▁▁▁▁▁▁██████████",
|
|
92
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁████████", "▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
|
|
93
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████", "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
|
|
94
|
+
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
|
|
95
|
+
"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
|
|
96
|
+
"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
|
|
97
|
+
"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
|
|
98
|
+
"██████▁▁▁▁▁▁▁▁▁▁▁▁▁█", "████████▁▁▁▁▁▁▁▁▁▁▁▁",
|
|
99
|
+
"█████████▁▁▁▁▁▁▁▁▁▁▁", "█████████▁▁▁▁▁▁▁▁▁▁▁",
|
|
100
|
+
"█████████▁▁▁▁▁▁▁▁▁▁▁", "█████████▁▁▁▁▁▁▁▁▁▁▁",
|
|
101
|
+
"███████████▁▁▁▁▁▁▁▁▁", "████████████▁▁▁▁▁▁▁▁",
|
|
102
|
+
"████████████▁▁▁▁▁▁▁▁", "██████████████▁▁▁▁▁▁",
|
|
103
|
+
"██████████████▁▁▁▁▁▁", "▁██████████████▁▁▁▁▁",
|
|
104
|
+
"▁██████████████▁▁▁▁▁", "▁▁▁██████████████▁▁▁",
|
|
105
|
+
"▁▁▁▁▁████████████▁▁▁", "▁▁▁▁▁████████████▁▁▁",
|
|
106
|
+
"▁▁▁▁▁▁███████████▁▁▁", "▁▁▁▁▁▁▁▁█████████▁▁▁",
|
|
107
|
+
"▁▁▁▁▁▁▁▁█████████▁▁▁", "▁▁▁▁▁▁▁▁▁█████████▁▁",
|
|
108
|
+
"▁▁▁▁▁▁▁▁▁█████████▁▁", "▁▁▁▁▁▁▁▁▁▁█████████▁",
|
|
109
|
+
], interval: 17 },
|
|
110
|
+
aesthetic: { frames: [
|
|
111
|
+
"▰▱▱▱▱▱▱", "▰▰▱▱▱▱▱", "▰▰▰▱▱▱▱", "▰▰▰▰▱▱▱",
|
|
112
|
+
"▰▰▰▰▰▱▱", "▰▰▰▰▰▰▱", "▰▰▰▰▰▰▰", "▰▱▱▱▱▱▱",
|
|
113
|
+
], interval: 80 },
|
|
114
|
+
};
|
|
115
|
+
export const DEFAULT_SPINNER = "dots";
|
|
116
|
+
//# sourceMappingURL=spinnerData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinnerData.js","sourceRoot":"","sources":["../../src/core/spinnerData.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strip + Joiner — edge-aware horizontal layout primitive.
|
|
3
|
+
*
|
|
4
|
+
* A `Strip` renders a horizontal sequence of styled items with a `Joiner`
|
|
5
|
+
* deciding how each transition between adjacent items looks. The joiner is
|
|
6
|
+
* a pure function of `(leftItem | null, rightItem | null) -> Renderable`,
|
|
7
|
+
* so endpoint joins (the start and end of the strip) are explicit positions
|
|
8
|
+
* in the protocol — the joiner names what an endpoint looks like rather than
|
|
9
|
+
* the strip guessing.
|
|
10
|
+
*
|
|
11
|
+
* [LAW:one-source-of-truth] The render walk
|
|
12
|
+
* joiner(null, items[0]), items[0],
|
|
13
|
+
* joiner(items[0], items[1]), items[1], ...,
|
|
14
|
+
* joiner(items[N-1], null)
|
|
15
|
+
* is the single authority for how strips lay out. Every joiner participates
|
|
16
|
+
* in the same protocol; "look up the previous segment's bg" is no longer a
|
|
17
|
+
* powerline-specific hack but the contract every joiner shares.
|
|
18
|
+
*/
|
|
19
|
+
import { Segment } from "./segment.js";
|
|
20
|
+
import { Style } from "./style.js";
|
|
21
|
+
import type { Renderable, RenderOptions } from "./protocol.js";
|
|
22
|
+
/**
|
|
23
|
+
* Items in a `Strip` expose a single dominant `style` so joiners can read
|
|
24
|
+
* fg/bg without inspecting the rendered output.
|
|
25
|
+
*
|
|
26
|
+
* ## Single-style invariant (load-bearing)
|
|
27
|
+
*
|
|
28
|
+
* Joiners — `PowerlineJoiner`, `CapsuleJoiner`, `GradientJoiner` — paint edges
|
|
29
|
+
* by reading `item.style.bgcolor` for adjacent items. If `render()` emits a
|
|
30
|
+
* `Segment` whose `style.bgcolor` diverges from `this.style.bgcolor`, the
|
|
31
|
+
* arrow/cap glyph between this item and its neighbour will use the *declared*
|
|
32
|
+
* bg even though the item *displayed* a different bg. The result is a
|
|
33
|
+
* visually wrong transition (e.g. a powerline arrow whose source colour
|
|
34
|
+
* doesn't match the cell it's bleeding out of).
|
|
35
|
+
*
|
|
36
|
+
* **The invariant**: for every `Segment` yielded by `render()`, either
|
|
37
|
+
* - `segment.style.bgcolor === this.style.bgcolor`, or
|
|
38
|
+
* - `segment.style.bgcolor === undefined` (transparent — terminal default).
|
|
39
|
+
*
|
|
40
|
+
* Foreground colour and text attributes (bold, italic, underline, etc.) may
|
|
41
|
+
* vary freely within a single item — only `bgcolor` is constrained, because
|
|
42
|
+
* that's the only field joiners read.
|
|
43
|
+
*
|
|
44
|
+
* ## What breaks the invariant
|
|
45
|
+
*
|
|
46
|
+
* - Yielding inline `Segment`s with their own `bgcolor` set to a different
|
|
47
|
+
* value (e.g. an embedded "warning" highlight with a yellow background).
|
|
48
|
+
* - Wrapping a renderable that paints its own background — `Panel`, a styled
|
|
49
|
+
* `Group`, or any `RichText` whose base style includes a bg.
|
|
50
|
+
*
|
|
51
|
+
* ## The safe path
|
|
52
|
+
*
|
|
53
|
+
* Use `StripCell(text, style)` for plain styled text — it satisfies the
|
|
54
|
+
* invariant by construction. For richer items, implement this interface
|
|
55
|
+
* directly and ensure your `render()` only emits Segments whose bg matches
|
|
56
|
+
* `this.style.bgcolor` (or is undefined). Inline fg variation is fine; bg
|
|
57
|
+
* variation is not.
|
|
58
|
+
*/
|
|
59
|
+
export interface StyledRenderable extends Renderable {
|
|
60
|
+
readonly style: Style;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* A styled run within a `StripCell` — text plus an optional foreground /
|
|
64
|
+
* text-attribute overlay. Used to express inline fg variation inside a single
|
|
65
|
+
* cell (e.g. a status string where some characters render green and others
|
|
66
|
+
* red, all on the same cell-level bg).
|
|
67
|
+
*
|
|
68
|
+
* The overlay must NOT set `bgcolor`. Cell-level bg is the joiner-visible bg
|
|
69
|
+
* per the single-style invariant on `StyledRenderable`; allowing parts to
|
|
70
|
+
* override it would silently violate that invariant. `StripCell` rejects parts
|
|
71
|
+
* with a `bgcolor` overlay at construction.
|
|
72
|
+
*/
|
|
73
|
+
export interface StripCellPart {
|
|
74
|
+
readonly text: string;
|
|
75
|
+
readonly style?: Style;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Canonical safe implementation of `StyledRenderable`. Two construction
|
|
79
|
+
* shapes:
|
|
80
|
+
*
|
|
81
|
+
* - `new StripCell(text, style)` — a single styled run. One segment out.
|
|
82
|
+
* - `new StripCell(parts, style)` — multiple runs sharing one cell-level
|
|
83
|
+
* `style`. Each part may carry its own fg / attribute overlay; cell-level
|
|
84
|
+
* `style` always governs the bg. Consumers needing inline fg variation
|
|
85
|
+
* (e.g. `[ main S +3 -2 ]` where `S`/`+3` are green, `-2` is red, all on
|
|
86
|
+
* the same blue bg) use this shape instead of writing a custom
|
|
87
|
+
* `StyledRenderable`.
|
|
88
|
+
*
|
|
89
|
+
* Both shapes satisfy the single-style invariant by construction: parts with
|
|
90
|
+
* `bgcolor` set are rejected, so every emitted `Segment`'s bg matches
|
|
91
|
+
* `this.style.bgcolor` (or is undefined when the cell has no bg).
|
|
92
|
+
*/
|
|
93
|
+
export declare class StripCell implements StyledRenderable {
|
|
94
|
+
readonly text: string;
|
|
95
|
+
readonly style: Style;
|
|
96
|
+
private readonly _parts;
|
|
97
|
+
constructor(text: string, style?: Style);
|
|
98
|
+
constructor(parts: readonly StripCellPart[], style?: Style);
|
|
99
|
+
render(_options: RenderOptions): Iterable<Segment>;
|
|
100
|
+
}
|
|
101
|
+
export interface Joiner<T extends StyledRenderable = StyledRenderable> {
|
|
102
|
+
/**
|
|
103
|
+
* `left === null` marks the start endpoint; `right === null` marks the end
|
|
104
|
+
* endpoint. The joiner decides what an endpoint looks like — typically
|
|
105
|
+
* fg-only with no bg so the strip blends into the terminal background.
|
|
106
|
+
*/
|
|
107
|
+
join(left: T | null, right: T | null): Renderable;
|
|
108
|
+
}
|
|
109
|
+
export declare class Strip<T extends StyledRenderable = StyledRenderable> implements Renderable {
|
|
110
|
+
readonly items: readonly T[];
|
|
111
|
+
readonly joiner: Joiner<T>;
|
|
112
|
+
constructor(items: readonly T[], joiner: Joiner<T>);
|
|
113
|
+
render(options: RenderOptions): Iterable<Segment>;
|
|
114
|
+
}
|
|
115
|
+
export interface PowerlineJoinerOptions {
|
|
116
|
+
/** Glyph used for every join (default: U+E0B0, the powerline right-arrow). */
|
|
117
|
+
glyph?: string;
|
|
118
|
+
}
|
|
119
|
+
export declare class PowerlineJoiner<T extends StyledRenderable = StyledRenderable> implements Joiner<T> {
|
|
120
|
+
private readonly _glyph;
|
|
121
|
+
constructor(options?: PowerlineJoinerOptions);
|
|
122
|
+
join(left: T | null, right: T | null): Renderable;
|
|
123
|
+
}
|
|
124
|
+
export interface CapsuleJoinerOptions {
|
|
125
|
+
/** Left-cap glyph (default: U+E0B6, powerline rounded left). */
|
|
126
|
+
left?: string;
|
|
127
|
+
/** Right-cap glyph (default: U+E0B4, powerline rounded right). */
|
|
128
|
+
right?: string;
|
|
129
|
+
/** Separator inserted between adjacent capsules in the middle position. */
|
|
130
|
+
separator?: string;
|
|
131
|
+
}
|
|
132
|
+
export declare class CapsuleJoiner<T extends StyledRenderable = StyledRenderable> implements Joiner<T> {
|
|
133
|
+
private readonly _left;
|
|
134
|
+
private readonly _right;
|
|
135
|
+
private readonly _separator;
|
|
136
|
+
constructor(options?: CapsuleJoinerOptions);
|
|
137
|
+
_emit(left: T | null, right: T | null, options: RenderOptions): Iterable<Segment>;
|
|
138
|
+
join(left: T | null, right: T | null): Renderable;
|
|
139
|
+
}
|
|
140
|
+
export interface PlainJoinerOptions {
|
|
141
|
+
separator?: string;
|
|
142
|
+
style?: Style;
|
|
143
|
+
}
|
|
144
|
+
export declare class PlainJoiner<T extends StyledRenderable = StyledRenderable> implements Joiner<T> {
|
|
145
|
+
private readonly _separator;
|
|
146
|
+
private readonly _style;
|
|
147
|
+
constructor(options?: PlainJoinerOptions);
|
|
148
|
+
join(left: T | null, right: T | null): Renderable;
|
|
149
|
+
}
|
|
150
|
+
export interface GradientJoinerOptions {
|
|
151
|
+
/** Number of cells between adjacent items (default: 4). */
|
|
152
|
+
steps?: number;
|
|
153
|
+
}
|
|
154
|
+
export declare class GradientJoiner<T extends StyledRenderable = StyledRenderable> implements Joiner<T> {
|
|
155
|
+
private readonly _steps;
|
|
156
|
+
constructor(options?: GradientJoinerOptions);
|
|
157
|
+
join(left: T | null, right: T | null): Renderable;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=strip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strip.d.ts","sourceRoot":"","sources":["../../src/core/strip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAc,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAID;;;;;;;;;;GAUG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACxB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAU,YAAW,gBAAgB;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;gBAEtC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;gBAC3B,KAAK,EAAE,SAAS,aAAa,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK;IAsBzD,MAAM,CAAC,QAAQ,EAAE,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;CAapD;AAID,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB;IACnE;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC;CACnD;AAID,qBAAa,KAAK,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,YAAW,UAAU;IACrF,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEf,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAKjD,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;CAgBnD;AAkCD,MAAM,WAAW,sBAAsB;IACrC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,eAAe,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,CAAC,EAAE,sBAAsB;IAI5C,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,UAAU;CAgBlD;AAID,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;IAC5F,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,CAAC,EAAE,oBAAoB;IAMzC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;IAiBlF,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,UAAU;CAQlD;AAID,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,WAAW,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAEnB,OAAO,CAAC,EAAE,kBAAkB;IAKxC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,UAAU;CAKlD;AAID,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD,qBAAa,cAAc,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;IAC7F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,CAAC,EAAE,qBAAqB;IAI3C,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,UAAU;CA6BlD"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strip + Joiner — edge-aware horizontal layout primitive.
|
|
3
|
+
*
|
|
4
|
+
* A `Strip` renders a horizontal sequence of styled items with a `Joiner`
|
|
5
|
+
* deciding how each transition between adjacent items looks. The joiner is
|
|
6
|
+
* a pure function of `(leftItem | null, rightItem | null) -> Renderable`,
|
|
7
|
+
* so endpoint joins (the start and end of the strip) are explicit positions
|
|
8
|
+
* in the protocol — the joiner names what an endpoint looks like rather than
|
|
9
|
+
* the strip guessing.
|
|
10
|
+
*
|
|
11
|
+
* [LAW:one-source-of-truth] The render walk
|
|
12
|
+
* joiner(null, items[0]), items[0],
|
|
13
|
+
* joiner(items[0], items[1]), items[1], ...,
|
|
14
|
+
* joiner(items[N-1], null)
|
|
15
|
+
* is the single authority for how strips lay out. Every joiner participates
|
|
16
|
+
* in the same protocol; "look up the previous segment's bg" is no longer a
|
|
17
|
+
* powerline-specific hack but the contract every joiner shares.
|
|
18
|
+
*/
|
|
19
|
+
import { Segment } from "./segment.js";
|
|
20
|
+
import { Style, NULL_STYLE } from "./style.js";
|
|
21
|
+
import { ColorSpec, blendRgb } from "./color.js";
|
|
22
|
+
/**
|
|
23
|
+
* Canonical safe implementation of `StyledRenderable`. Two construction
|
|
24
|
+
* shapes:
|
|
25
|
+
*
|
|
26
|
+
* - `new StripCell(text, style)` — a single styled run. One segment out.
|
|
27
|
+
* - `new StripCell(parts, style)` — multiple runs sharing one cell-level
|
|
28
|
+
* `style`. Each part may carry its own fg / attribute overlay; cell-level
|
|
29
|
+
* `style` always governs the bg. Consumers needing inline fg variation
|
|
30
|
+
* (e.g. `[ main S +3 -2 ]` where `S`/`+3` are green, `-2` is red, all on
|
|
31
|
+
* the same blue bg) use this shape instead of writing a custom
|
|
32
|
+
* `StyledRenderable`.
|
|
33
|
+
*
|
|
34
|
+
* Both shapes satisfy the single-style invariant by construction: parts with
|
|
35
|
+
* `bgcolor` set are rejected, so every emitted `Segment`'s bg matches
|
|
36
|
+
* `this.style.bgcolor` (or is undefined when the cell has no bg).
|
|
37
|
+
*/
|
|
38
|
+
export class StripCell {
|
|
39
|
+
text;
|
|
40
|
+
style;
|
|
41
|
+
_parts;
|
|
42
|
+
constructor(textOrParts, style) {
|
|
43
|
+
this.style = style ?? NULL_STYLE;
|
|
44
|
+
if (typeof textOrParts === "string") {
|
|
45
|
+
this.text = textOrParts;
|
|
46
|
+
this._parts = [{ text: textOrParts }];
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// [LAW:single-enforcer] cell-level bg is the only joiner-visible bg.
|
|
50
|
+
// Reject parts that try to set their own bg at construction so the
|
|
51
|
+
// invariant cannot be silently broken downstream.
|
|
52
|
+
for (const part of textOrParts) {
|
|
53
|
+
if (part.style?.bgcolor !== undefined) {
|
|
54
|
+
throw new Error("StripCell part style must not set bgcolor — cell-level style governs the bg (single-style invariant). Use the cell `style` argument for bg.");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
this._parts = textOrParts.slice();
|
|
58
|
+
this.text = textOrParts.map((p) => p.text).join("");
|
|
59
|
+
}
|
|
60
|
+
*render(_options) {
|
|
61
|
+
// [LAW:dataflow-not-control-flow] The walk is identical for both
|
|
62
|
+
// construction shapes: one part for the (text, style) form, N parts for
|
|
63
|
+
// the parts form. Variability lives in `_parts`, not in branching here.
|
|
64
|
+
for (const part of this._parts) {
|
|
65
|
+
const partStyle = part.style;
|
|
66
|
+
// `Style.add` keeps `this.style.bgcolor` whenever the overlay's bg is
|
|
67
|
+
// undefined — and the constructor guarantees that. So the merged style
|
|
68
|
+
// always satisfies `merged.bgcolor === this.style.bgcolor`.
|
|
69
|
+
const style = partStyle ? this.style.add(partStyle) : this.style;
|
|
70
|
+
yield new Segment(part.text, style);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// --- Strip ---
|
|
75
|
+
export class Strip {
|
|
76
|
+
items;
|
|
77
|
+
joiner;
|
|
78
|
+
constructor(items, joiner) {
|
|
79
|
+
this.items = items;
|
|
80
|
+
this.joiner = joiner;
|
|
81
|
+
}
|
|
82
|
+
*render(options) {
|
|
83
|
+
const items = this.items;
|
|
84
|
+
if (items.length === 0)
|
|
85
|
+
return;
|
|
86
|
+
// [LAW:dataflow-not-control-flow] The walk is the same shape every render:
|
|
87
|
+
// start-cap, item, mid-join, item, ..., item, end-cap. Variability lives
|
|
88
|
+
// in `items` and in what the joiner emits at each position — never in
|
|
89
|
+
// whether a join runs.
|
|
90
|
+
yield* this.joiner.join(null, items[0]).render(options);
|
|
91
|
+
for (let i = 0; i < items.length; i++) {
|
|
92
|
+
const item = items[i];
|
|
93
|
+
yield* item.render(options);
|
|
94
|
+
const next = i + 1 < items.length ? items[i + 1] : null;
|
|
95
|
+
yield* this.joiner.join(item, next).render(options);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// --- Helpers ---
|
|
100
|
+
const EMPTY = {
|
|
101
|
+
*render(_options) {
|
|
102
|
+
// intentionally empty
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
class FixedSegment {
|
|
106
|
+
_text;
|
|
107
|
+
_style;
|
|
108
|
+
constructor(text, style) {
|
|
109
|
+
this._text = text;
|
|
110
|
+
this._style = style;
|
|
111
|
+
}
|
|
112
|
+
*render(_options) {
|
|
113
|
+
yield new Segment(this._text, this._style);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function bgAsFg(item) {
|
|
117
|
+
// Endpoint and powerline join glyphs paint the previous/next item's bg
|
|
118
|
+
// *as* their fg. If the source item has no bgcolor, the glyph degrades to
|
|
119
|
+
// the default fg — which renders as nothing visible against the terminal
|
|
120
|
+
// background, the right outcome for an unstyled cell.
|
|
121
|
+
return new Style({ color: item.style.bgcolor });
|
|
122
|
+
}
|
|
123
|
+
export class PowerlineJoiner {
|
|
124
|
+
_glyph;
|
|
125
|
+
constructor(options) {
|
|
126
|
+
this._glyph = options?.glyph ?? "\ue0b0";
|
|
127
|
+
}
|
|
128
|
+
join(left, right) {
|
|
129
|
+
// Start cap: empty. A right-pointing arrow with no source segment to its
|
|
130
|
+
// left has nothing to bleed out *from*, so the first segment just begins
|
|
131
|
+
// cleanly. This matches vim-airline / tmux-powerline / claude-powerline.
|
|
132
|
+
if (left === null)
|
|
133
|
+
return EMPTY;
|
|
134
|
+
if (right === null) {
|
|
135
|
+
// End cap: fg = left.bg, no bg — last segment bleeds out into the
|
|
136
|
+
// terminal background.
|
|
137
|
+
return new FixedSegment(this._glyph, bgAsFg(left));
|
|
138
|
+
}
|
|
139
|
+
// Middle: fg = left.bg, bg = right.bg.
|
|
140
|
+
return new FixedSegment(this._glyph, new Style({ color: left.style.bgcolor, bgcolor: right.style.bgcolor }));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
export class CapsuleJoiner {
|
|
144
|
+
_left;
|
|
145
|
+
_right;
|
|
146
|
+
_separator;
|
|
147
|
+
constructor(options) {
|
|
148
|
+
this._left = options?.left ?? "\ue0b6";
|
|
149
|
+
this._right = options?.right ?? "\ue0b4";
|
|
150
|
+
this._separator = options?.separator ?? " ";
|
|
151
|
+
}
|
|
152
|
+
*_emit(left, right, options) {
|
|
153
|
+
if (left === null && right === null)
|
|
154
|
+
return;
|
|
155
|
+
if (left === null) {
|
|
156
|
+
yield new Segment(this._left, bgAsFg(right));
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (right === null) {
|
|
160
|
+
yield new Segment(this._right, bgAsFg(left));
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
// Middle: close the left capsule, separator (unstyled), open the right.
|
|
164
|
+
yield new Segment(this._right, bgAsFg(left));
|
|
165
|
+
if (this._separator.length > 0)
|
|
166
|
+
yield new Segment(this._separator);
|
|
167
|
+
yield new Segment(this._left, bgAsFg(right));
|
|
168
|
+
void options;
|
|
169
|
+
}
|
|
170
|
+
join(left, right) {
|
|
171
|
+
const emit = this._emit.bind(this);
|
|
172
|
+
return {
|
|
173
|
+
*render(options) {
|
|
174
|
+
yield* emit(left, right, options);
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
export class PlainJoiner {
|
|
180
|
+
_separator;
|
|
181
|
+
_style;
|
|
182
|
+
constructor(options) {
|
|
183
|
+
this._separator = options?.separator ?? " | ";
|
|
184
|
+
this._style = options?.style ?? Style.parse("dim");
|
|
185
|
+
}
|
|
186
|
+
join(left, right) {
|
|
187
|
+
// Endpoints are empty — a fixed separator has no natural cap.
|
|
188
|
+
if (left === null || right === null)
|
|
189
|
+
return EMPTY;
|
|
190
|
+
return new FixedSegment(this._separator, this._style);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Half-block dithering glyph: paints the cell's left half with the foreground
|
|
195
|
+
* colour and the right half with the background colour. Lets each cell carry
|
|
196
|
+
* two colour samples — `2 * steps` samples in `steps` cells — so the gradient
|
|
197
|
+
* looks twice as smooth as one-colour-per-cell at the same width.
|
|
198
|
+
*/
|
|
199
|
+
const HALF_BLOCK = "\u258c"; // ▌
|
|
200
|
+
export class GradientJoiner {
|
|
201
|
+
_steps;
|
|
202
|
+
constructor(options) {
|
|
203
|
+
this._steps = options?.steps ?? 4;
|
|
204
|
+
}
|
|
205
|
+
join(left, right) {
|
|
206
|
+
// [LAW:dataflow-not-control-flow] Endpoints have no opposite anchor to
|
|
207
|
+
// interpolate toward — the data (a missing neighbor) makes the gradient
|
|
208
|
+
// empty. Same for items lacking a bgcolor: nothing to blend between.
|
|
209
|
+
if (left === null || right === null)
|
|
210
|
+
return EMPTY;
|
|
211
|
+
const lbg = left.style.bgcolor;
|
|
212
|
+
const rbg = right.style.bgcolor;
|
|
213
|
+
if (!lbg || !rbg)
|
|
214
|
+
return EMPTY;
|
|
215
|
+
const lTrip = lbg.getTruecolor();
|
|
216
|
+
const rTrip = rbg.getTruecolor();
|
|
217
|
+
const steps = this._steps;
|
|
218
|
+
const samples = 2 * steps;
|
|
219
|
+
// Midpoint sampling across `2 * steps` half-cell positions: sample j has
|
|
220
|
+
// t = (j + 0.5) / samples. Cell i takes samples 2i (left half) and 2i+1
|
|
221
|
+
// (right half). No sample ever equals either anchor.
|
|
222
|
+
const segments = [];
|
|
223
|
+
for (let i = 0; i < steps; i++) {
|
|
224
|
+
const tLeft = (2 * i + 0.5) / samples;
|
|
225
|
+
const tRight = (2 * i + 1.5) / samples;
|
|
226
|
+
const fg = ColorSpec.fromRgba(blendRgb(lTrip, rTrip, tLeft));
|
|
227
|
+
const bg = ColorSpec.fromRgba(blendRgb(lTrip, rTrip, tRight));
|
|
228
|
+
segments.push(new Segment(HALF_BLOCK, new Style({ color: fg, bgcolor: bg })));
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
*render(_options) {
|
|
232
|
+
yield* segments;
|
|
233
|
+
},
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=strip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strip.js","sourceRoot":"","sources":["../../src/core/strip.ts"],"names":[],"mappings":"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"}
|