@markii/ansi 0.17.0-next.2 → 0.17.0-next.3
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/dist/ansi.d.ts +1 -2
- package/dist/ansi.js +1 -2
- package/dist/components/card.d.ts +1 -2
- package/dist/components/card.js +1 -2
- package/dist/components/row.d.ts +1 -1
- package/dist/components/row.js +1 -1
- package/dist/ink-string.d.ts +1 -2
- package/dist/ink-string.js +1 -2
- package/dist/interactive.d.ts +2 -2
- package/dist/interactive.js +1 -1
- package/dist/registry.d.ts +3 -6
- package/dist/registry.js +1 -1
- package/dist/render.d.ts +2 -3
- package/dist/render.js +14 -19
- package/dist/text-grid.d.ts +4 -6
- package/dist/text-grid.js +4 -6
- package/dist/value-types.d.ts +1 -1
- package/dist/value-types.js +1 -1
- package/package.json +5 -5
package/dist/ansi.d.ts
CHANGED
|
@@ -46,8 +46,7 @@ export declare const inverse: (text: string, level: ColorLevel) => string;
|
|
|
46
46
|
* at a line boundary are closed with a reset before the `\n` and reopened
|
|
47
47
|
* at the start of the next line.
|
|
48
48
|
*
|
|
49
|
-
* This is the
|
|
50
|
-
* batch 10's post-phase-2 review: Ink's `<Text>` does not treat an embedded
|
|
49
|
+
* This is the systematic fix for an Ink behavior: Ink's `<Text>` does not treat an embedded
|
|
51
50
|
* raw ANSI escape as transparent across an embedded newline the way a
|
|
52
51
|
* terminal receiving the same bytes directly would — it resets SGR state
|
|
53
52
|
* at every line boundary within one `<Text>` value and does not reopen it.
|
package/dist/ansi.js
CHANGED
|
@@ -72,8 +72,7 @@ const SGR_TOKEN = /\x1b\[([0-9;]*)m/g;
|
|
|
72
72
|
* at a line boundary are closed with a reset before the `\n` and reopened
|
|
73
73
|
* at the start of the next line.
|
|
74
74
|
*
|
|
75
|
-
* This is the
|
|
76
|
-
* batch 10's post-phase-2 review: Ink's `<Text>` does not treat an embedded
|
|
75
|
+
* This is the systematic fix for an Ink behavior: Ink's `<Text>` does not treat an embedded
|
|
77
76
|
* raw ANSI escape as transparent across an embedded newline the way a
|
|
78
77
|
* terminal receiving the same bytes directly would — it resets SGR state
|
|
79
78
|
* at every line boundary within one `<Text>` value and does not reopen it.
|
|
@@ -18,8 +18,7 @@ export declare function resolveCardBoxWidth(attributes: DirectiveAttributes, lay
|
|
|
18
18
|
* children are built ONCE, directly at the correct inner width, and never
|
|
19
19
|
* built wide and re-wrapped narrower afterward.
|
|
20
20
|
*
|
|
21
|
-
* That re-wrap-afterward shape was a real, shipped regression
|
|
22
|
-
* post-phase-2 review): re-wrapping an ALREADY-RENDERED child block with a
|
|
21
|
+
* That re-wrap-afterward shape was a real, shipped regression: re-wrapping an ALREADY-RENDERED child block with a
|
|
23
22
|
* word-based wrapper corrupts anything in it that draws its own fixed-width
|
|
24
23
|
* glyphs (a nested `card`/`callout`'s frame, a nested `row`'s columns) — the
|
|
25
24
|
* word-wrapper has no notion that a run of box-drawing characters is not
|
package/dist/components/card.js
CHANGED
|
@@ -31,8 +31,7 @@ export function resolveCardBoxWidth(attributes, layout, outerWidth) {
|
|
|
31
31
|
* children are built ONCE, directly at the correct inner width, and never
|
|
32
32
|
* built wide and re-wrapped narrower afterward.
|
|
33
33
|
*
|
|
34
|
-
* That re-wrap-afterward shape was a real, shipped regression
|
|
35
|
-
* post-phase-2 review): re-wrapping an ALREADY-RENDERED child block with a
|
|
34
|
+
* That re-wrap-afterward shape was a real, shipped regression: re-wrapping an ALREADY-RENDERED child block with a
|
|
36
35
|
* word-based wrapper corrupts anything in it that draws its own fixed-width
|
|
37
36
|
* glyphs (a nested `card`/`callout`'s frame, a nested `row`'s columns) — the
|
|
38
37
|
* word-wrapper has no notion that a run of box-drawing characters is not
|
package/dist/components/row.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AnsiComponent, DirectiveAttributes } from '../registry.js';
|
|
2
2
|
declare const TEXT_ALIGNS: readonly ["left", "center", "right"];
|
|
3
3
|
export type RowTextAlign = (typeof TEXT_ALIGNS)[number];
|
|
4
|
-
/** Below this width, cells stack vertically instead of sitting side by side — a named constant
|
|
4
|
+
/** Below this width, cells stack vertically instead of sitting side by side — a named constant, not a magic number. */
|
|
5
5
|
export declare const ROW_COLUMN_THRESHOLD = 60;
|
|
6
6
|
/** The blank columns between two cells of a grid row. Shared by both emitters (the Ink flex `Box` and the flattened string). */
|
|
7
7
|
export declare const ROW_GUTTER = 1;
|
package/dist/components/row.js
CHANGED
|
@@ -6,7 +6,7 @@ const TEXT_ALIGNS = ['left', 'center', 'right'];
|
|
|
6
6
|
function isTextAlign(value) {
|
|
7
7
|
return TEXT_ALIGNS.includes(value);
|
|
8
8
|
}
|
|
9
|
-
/** Below this width, cells stack vertically instead of sitting side by side — a named constant
|
|
9
|
+
/** Below this width, cells stack vertically instead of sitting side by side — a named constant, not a magic number. */
|
|
10
10
|
export const ROW_COLUMN_THRESHOLD = 60;
|
|
11
11
|
/** The blank columns between two cells of a grid row. Shared by both emitters (the Ink flex `Box` and the flattened string). */
|
|
12
12
|
export const ROW_GUTTER = 1;
|
package/dist/ink-string.d.ts
CHANGED
|
@@ -3,8 +3,7 @@ import type { ReactElement } from 'react';
|
|
|
3
3
|
* Mounts `element` with Ink at `columns` wide, captures the first (and only)
|
|
4
4
|
* frame as a plain string, and unmounts. `ink` is imported dynamically
|
|
5
5
|
* because `yoga-layout` (Ink's layout engine) resolves its WASM module via a
|
|
6
|
-
* top-level `await` at ES-module-evaluation time
|
|
7
|
-
* "Item 3"): the first call to this function pays that one-time cost, and
|
|
6
|
+
* top-level `await` at ES-module-evaluation time: the first call to this function pays that one-time cost, and
|
|
8
7
|
* every exported entry point that reaches here is therefore `async`. A
|
|
9
8
|
* later call in the same process reuses the already-evaluated module graph,
|
|
10
9
|
* the ordinary ESM module-cache guarantee.
|
package/dist/ink-string.js
CHANGED
|
@@ -20,8 +20,7 @@ function makeCollectingStream(columns) {
|
|
|
20
20
|
* Mounts `element` with Ink at `columns` wide, captures the first (and only)
|
|
21
21
|
* frame as a plain string, and unmounts. `ink` is imported dynamically
|
|
22
22
|
* because `yoga-layout` (Ink's layout engine) resolves its WASM module via a
|
|
23
|
-
* top-level `await` at ES-module-evaluation time
|
|
24
|
-
* "Item 3"): the first call to this function pays that one-time cost, and
|
|
23
|
+
* top-level `await` at ES-module-evaluation time: the first call to this function pays that one-time cost, and
|
|
25
24
|
* every exported entry point that reaches here is therefore `async`. A
|
|
26
25
|
* later call in the same process reuses the already-evaluated module graph,
|
|
27
26
|
* the ordinary ESM module-cache guarantee.
|
package/dist/interactive.d.ts
CHANGED
|
@@ -53,7 +53,7 @@ export interface FocusableDescriptor {
|
|
|
53
53
|
export interface InteractiveRootProps {
|
|
54
54
|
/** Every focusable component the walk assigned a `focusId` to, in `focusId` order (empty for none). */
|
|
55
55
|
focusables: readonly FocusableDescriptor[];
|
|
56
|
-
/** Called when the reader presses `q`. The engine owns no process state: it never calls `process.exit` itself
|
|
56
|
+
/** Called when the reader presses `q`. The engine owns no process state: it never calls `process.exit` itself. */
|
|
57
57
|
onExit?: () => void;
|
|
58
58
|
color: ColorLevel;
|
|
59
59
|
theme: AnsiTheme;
|
|
@@ -73,7 +73,7 @@ export interface InteractiveRootProps {
|
|
|
73
73
|
/**
|
|
74
74
|
* The root of an interactive render: owns which `focusId` is focused, moves
|
|
75
75
|
* it on up/down/j/k, calls `onExit` on `q`, and renders the one-line status
|
|
76
|
-
* bar
|
|
76
|
+
* bar naming the focused block and the key legend. Rendered
|
|
77
77
|
* only when the caller actually wants a live, keyboard-driven view:
|
|
78
78
|
* `buildMarkElement` mounts this when `interactive` is true, but the
|
|
79
79
|
* render-ONCE string path (`ink-string.ts`, `renderRootToString`) never
|
package/dist/interactive.js
CHANGED
|
@@ -78,7 +78,7 @@ export function useFocusAnchor(focusId) {
|
|
|
78
78
|
/**
|
|
79
79
|
* The root of an interactive render: owns which `focusId` is focused, moves
|
|
80
80
|
* it on up/down/j/k, calls `onExit` on `q`, and renders the one-line status
|
|
81
|
-
* bar
|
|
81
|
+
* bar naming the focused block and the key legend. Rendered
|
|
82
82
|
* only when the caller actually wants a live, keyboard-driven view:
|
|
83
83
|
* `buildMarkElement` mounts this when `interactive` is true, but the
|
|
84
84
|
* render-ONCE string path (`ink-string.ts`, `renderRootToString`) never
|
package/dist/registry.d.ts
CHANGED
|
@@ -8,14 +8,11 @@ import type { ResolvedLayoutAttributes } from './layout.js';
|
|
|
8
8
|
import type { ResolveImageSrc } from './image-resolve.js';
|
|
9
9
|
import type { ResolveHref } from './href-resolve.js';
|
|
10
10
|
/**
|
|
11
|
-
* The registry contract for the terminal engine
|
|
12
|
-
* rewrite): a component is a React function component receiving
|
|
11
|
+
* The registry contract for the terminal engine: a component is a React function component receiving
|
|
13
12
|
* `{ attributes, children, ctx }`, where `children` is ALREADY a built Ink
|
|
14
13
|
* element tree (a `ReactNode`) rather than the lazy string-producing
|
|
15
14
|
* `AnsiChildren` handle the pre-Ink engine used. Building children eagerly
|
|
16
|
-
* is
|
|
17
|
-
* section is silent on this; the brief is explicit: "Delete... the lazy-
|
|
18
|
-
* children machinery"): Ink/Yoga lays a tree out AFTER it is built, exactly
|
|
15
|
+
* is how this engine works: Ink/Yoga lays a tree out AFTER it is built, exactly
|
|
19
16
|
* like a browser reflows HTML, so a component no longer needs to ask for a
|
|
20
17
|
* narrower re-render of its own body the way the old string engine did —
|
|
21
18
|
* the one standard component that still needs a per-cell WIDTH NUMBER before
|
|
@@ -233,7 +230,7 @@ export declare function resolveDirectiveAlias(registry: AnsiRegistry, name: stri
|
|
|
233
230
|
* top comment on why those three are the only ones that get a real Ink
|
|
234
231
|
* element tree instead. `children` is still typed `ReactNode` on
|
|
235
232
|
* `AnsiComponentProps` (the honest public contract: "an Ink element tree",
|
|
236
|
-
*
|
|
233
|
+
* and a string IS a valid `ReactNode`), so a
|
|
237
234
|
* component that needs its body AS TEXT (to measure it, frame it, indent
|
|
238
235
|
* it, or check whether it is empty) reads it through this helper rather
|
|
239
236
|
* than assuming the type; a non-string `children` degrades to `''` rather
|
package/dist/registry.js
CHANGED
|
@@ -117,7 +117,7 @@ export function resolveDirectiveAlias(registry, name, attributes) {
|
|
|
117
117
|
* top comment on why those three are the only ones that get a real Ink
|
|
118
118
|
* element tree instead. `children` is still typed `ReactNode` on
|
|
119
119
|
* `AnsiComponentProps` (the honest public contract: "an Ink element tree",
|
|
120
|
-
*
|
|
120
|
+
* and a string IS a valid `ReactNode`), so a
|
|
121
121
|
* component that needs its body AS TEXT (to measure it, frame it, indent
|
|
122
122
|
* it, or check whether it is empty) reads it through this helper rather
|
|
123
123
|
* than assuming the type; a non-string `children` degrades to `''` rather
|
package/dist/render.d.ts
CHANGED
|
@@ -99,8 +99,7 @@ export interface RenderMarkOptions {
|
|
|
99
99
|
* defaults to `defaultAnsiRegistry`.
|
|
100
100
|
*
|
|
101
101
|
* `async` since the first call in a process pays Ink/Yoga's one-time module-
|
|
102
|
-
* evaluation cost (`ink-string.ts`'s doc comment
|
|
103
|
-
* "Item 3"). Never throws: parsing is tolerant, unknown names always render
|
|
102
|
+
* evaluation cost (`ink-string.ts`'s doc comment). Never throws: parsing is tolerant, unknown names always render
|
|
104
103
|
* a fallback, and any unexpected internal error degrades to the "failed to
|
|
105
104
|
* render document" line.
|
|
106
105
|
*
|
|
@@ -125,7 +124,7 @@ export declare function renderMarkNodeToAnsi(node: MarkNode | MarkRoot, registry
|
|
|
125
124
|
*/
|
|
126
125
|
export declare function renderMarkInlineToAnsi(text: string, registry?: AnsiRegistry, store?: AnsiValueStore, vault?: AnsiVaultStore, options?: RenderMarkOptions): Promise<string>;
|
|
127
126
|
/**
|
|
128
|
-
* The live-viewer entry point
|
|
127
|
+
* The live-viewer entry point: builds the same Ink
|
|
129
128
|
* element tree `renderMarkToAnsi` would render to a string, but returns the
|
|
130
129
|
* element itself so a host (the CLI's `markii view`) can mount it directly
|
|
131
130
|
* with Ink's own `render()` instead of re-rendering a string on every
|
package/dist/render.js
CHANGED
|
@@ -26,12 +26,12 @@ import { glyphsFor } from './glyphs.js';
|
|
|
26
26
|
import { InteractiveTabs } from './components/tabs.js';
|
|
27
27
|
import { InteractiveDetails } from './components/details.js';
|
|
28
28
|
/**
|
|
29
|
-
* The hast walk for the terminal engine (
|
|
29
|
+
* The hast walk for the terminal engine (the Ink rewrite). Every
|
|
30
30
|
* DECISION this walk makes is unchanged from the pre-Ink engine (alias
|
|
31
31
|
* resolution, layout resolution, data binding, form mismatch, invalid-enum
|
|
32
32
|
* notice, empty-inline notice, never-throw component containment, script-
|
|
33
33
|
* fence markers, link and image handling) — see AGENTS.md's architecture
|
|
34
|
-
* rules
|
|
34
|
+
* rules. The OUTPUT is a tree of Ink elements: instead of
|
|
35
35
|
* building one big plain string, the walk builds a tree of Ink elements
|
|
36
36
|
* (`Box`/`Text`) and hands it to `ink-string.ts` (the render-once path) or
|
|
37
37
|
* returns it directly (the new live-viewer export, `buildMarkElement`).
|
|
@@ -82,7 +82,7 @@ const ROW_NAME = 'row';
|
|
|
82
82
|
const TABS_NAME = 'tabs';
|
|
83
83
|
const DETAILS_NAME = 'details';
|
|
84
84
|
/**
|
|
85
|
-
* `card` and `figure` join this list
|
|
85
|
+
* `card` and `figure` join this list: both are
|
|
86
86
|
* containers whose body previously only ever reached STRING mode, so a
|
|
87
87
|
* `tabs`/`details` nested inside one could never become focusable. `card`
|
|
88
88
|
* draws its frame with an Ink `Box` border (`renderCardElement`); `figure`
|
|
@@ -877,7 +877,7 @@ function renderDirectiveString(element, width, indent, walk) {
|
|
|
877
877
|
// own attributes (never from the body), so the walk resolves it here,
|
|
878
878
|
// BEFORE building children, and builds children exactly ONCE at that
|
|
879
879
|
// final width — never at the outer width followed by a re-wrap. A
|
|
880
|
-
// re-wrap-afterward shipped as a
|
|
880
|
+
// re-wrap-afterward shipped as a regression:
|
|
881
881
|
// it corrupts anything self-drawing nested inside (a card's frame, a
|
|
882
882
|
// row's columns), since a word-based re-wrapper has no notion that a run
|
|
883
883
|
// of box-drawing characters is not prose. See `resolveCardInnerWidth`'s
|
|
@@ -1012,13 +1012,11 @@ function renderAlignedBodyElement(nodes, width, indent, wctx, align) {
|
|
|
1012
1012
|
* Renders one `row` cell at `cellWidth`. `text=left` (the default) keeps
|
|
1013
1013
|
* the cell a real Ink element tree (`renderBlockElement`), so anything
|
|
1014
1014
|
* focusable inside it stays focusable. `text=center`/`text=right` instead
|
|
1015
|
-
* falls back to a flattened, pre-justified STRING —
|
|
1015
|
+
* falls back to a flattened, pre-justified STRING — the justification
|
|
1016
1016
|
* rule: exactly ONE implementation, `text-grid.ts`'s `padText`, never a
|
|
1017
|
-
* second Ink-`alignItems`-based mechanism.
|
|
1018
|
-
*
|
|
1019
|
-
*
|
|
1020
|
-
* container, honored it); this closes that gap using the SAME helper the
|
|
1021
|
-
* STRING mode already uses, rather than inventing a second mechanism.
|
|
1017
|
+
* second Ink-`alignItems`-based mechanism. The ELEMENT-mode grid and the STRING-mode fallback (reached when a `row`
|
|
1018
|
+
* is nested inside a self-drawing container) both honor `text=` through
|
|
1019
|
+
* that one helper.
|
|
1022
1020
|
*/
|
|
1023
1021
|
function renderRowCellElement(node, cellWidth, indent, wctx, align) {
|
|
1024
1022
|
if (align === 'left')
|
|
@@ -1129,7 +1127,7 @@ function selfLayoutAlignElement(element, boxWidth, layout, width) {
|
|
|
1129
1127
|
}
|
|
1130
1128
|
/**
|
|
1131
1129
|
* `:::card{title="..." text=left|center|right} ... :::` as a real Ink
|
|
1132
|
-
* element (
|
|
1130
|
+
* element (card moves off `frameBlock`'s hand-drawn string frame
|
|
1133
1131
|
* onto Ink's own `Box` border, so a `tabs`/`details` nested in its body can
|
|
1134
1132
|
* become a real focusable — this function's `body` is built through
|
|
1135
1133
|
* `renderBlocksElement`, ELEMENT mode, whenever that is possible).
|
|
@@ -1141,9 +1139,7 @@ function selfLayoutAlignElement(element, boxWidth, layout, width) {
|
|
|
1141
1139
|
* `frameGlyphs`'s character set makes byte-identical to `frameBlock`'s own
|
|
1142
1140
|
* untitled output (proven against the committed fixtures).
|
|
1143
1141
|
*
|
|
1144
|
-
* `text=center`/`text=right`
|
|
1145
|
-
* implementation, `text-grid.ts`'s `padText`, pre-justifying a STRING before
|
|
1146
|
-
* Ink ever sees it, never a second Ink-`alignItems`-based mechanism) falls
|
|
1142
|
+
* `text=center`/`text=right` falls
|
|
1147
1143
|
* back to building the body as one flattened, pre-justified string, exactly
|
|
1148
1144
|
* like the pre-Ink engine did — an accepted, documented trade: a `tabs`/
|
|
1149
1145
|
* `details` nested inside a CENTERED or RIGHT-aligned card body is not
|
|
@@ -1226,7 +1222,7 @@ function renderCalloutElement(element, attributes, width, indent, wctx, layout)
|
|
|
1226
1222
|
}
|
|
1227
1223
|
/**
|
|
1228
1224
|
* `:::figure{src="..." alt="..."} caption markdown :::` as a real Ink
|
|
1229
|
-
* element (
|
|
1225
|
+
* element (`figure` never drew a hand-drawn frame — it is a plain
|
|
1230
1226
|
* dim alt/src line followed by its caption body — but its body still only
|
|
1231
1227
|
* ever reached STRING mode before this change, so a `tabs`/`details` in its
|
|
1232
1228
|
* caption could never become focusable. `body` here is built through
|
|
@@ -1498,7 +1494,7 @@ function diagnosticsFor(options) {
|
|
|
1498
1494
|
}
|
|
1499
1495
|
/** The columns assumed when a caller supplies no `width` option. */
|
|
1500
1496
|
const DEFAULT_WIDTH = 80;
|
|
1501
|
-
/** Builds the root Ink element for `root`, given every resolved render input. Exported for `buildMarkElement` (the live-viewer entry point
|
|
1497
|
+
/** Builds the root Ink element for `root`, given every resolved render input. Exported for `buildMarkElement` (the live-viewer entry point) as well as this module's own three string-producing entry points. */
|
|
1502
1498
|
function buildRootElement(root, registry, scope, color, theme, glyphs, interactive, resolveImageSrc, resolveHref, onDiagnostic, unavailable, width, renderCode) {
|
|
1503
1499
|
const wctx = buildWalkContext(registry, scope, color, theme, glyphs, interactive, resolveImageSrc, resolveHref, onDiagnostic, unavailable, renderCode);
|
|
1504
1500
|
const body = renderBlocksElement(root.children, width, '', wctx);
|
|
@@ -1516,8 +1512,7 @@ async function renderRootToString(root, registry, scope, color, theme, glyphs, i
|
|
|
1516
1512
|
* defaults to `defaultAnsiRegistry`.
|
|
1517
1513
|
*
|
|
1518
1514
|
* `async` since the first call in a process pays Ink/Yoga's one-time module-
|
|
1519
|
-
* evaluation cost (`ink-string.ts`'s doc comment
|
|
1520
|
-
* "Item 3"). Never throws: parsing is tolerant, unknown names always render
|
|
1515
|
+
* evaluation cost (`ink-string.ts`'s doc comment). Never throws: parsing is tolerant, unknown names always render
|
|
1521
1516
|
* a fallback, and any unexpected internal error degrades to the "failed to
|
|
1522
1517
|
* render document" line.
|
|
1523
1518
|
*
|
|
@@ -1584,7 +1579,7 @@ export async function renderMarkInlineToAnsi(text, registry = defaultAnsiRegistr
|
|
|
1584
1579
|
return renderMarkToAnsi(text, registry, store, vault, options);
|
|
1585
1580
|
}
|
|
1586
1581
|
/**
|
|
1587
|
-
* The live-viewer entry point
|
|
1582
|
+
* The live-viewer entry point: builds the same Ink
|
|
1588
1583
|
* element tree `renderMarkToAnsi` would render to a string, but returns the
|
|
1589
1584
|
* element itself so a host (the CLI's `markii view`) can mount it directly
|
|
1590
1585
|
* with Ink's own `render()` instead of re-rendering a string on every
|
package/dist/text-grid.d.ts
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
* handful of STANDARD COMPONENTS that draw their own fixed-width glyphs
|
|
4
4
|
* (`card`, `callout`, `divider`, `chart`, `table`, and the plain-markdown
|
|
5
5
|
* table grid in `render.tsx`). Everything else in this engine wraps prose
|
|
6
|
-
* through Ink's own layout (`ink-string.ts`'s doc comment
|
|
7
|
-
*
|
|
8
|
-
* them").
|
|
6
|
+
* through Ink's own layout (`ink-string.ts`'s doc comment): Ink's layout replaces
|
|
7
|
+
* wrap, pad, columns, frame and rule.
|
|
9
8
|
*
|
|
10
9
|
* A self-drawing component cannot lean on Ink for this: the string it builds
|
|
11
10
|
* (a box-drawing frame, a sparkline, a table grid) is a fixed block of
|
|
@@ -13,9 +12,8 @@
|
|
|
13
12
|
* `<Text>` renders it verbatim rather than reflowing pre-drawn glyphs. This
|
|
14
13
|
* module is therefore kept as a small, PRIVATE (not exported from
|
|
15
14
|
* `src/index.ts`) implementation detail of those few components, replacing
|
|
16
|
-
* the old public `measure.ts`/`box.ts` modules
|
|
17
|
-
*
|
|
18
|
-
* old `measure.ts`: Latin/CJK/emoji/combining-mark ranges, not a full
|
|
15
|
+
* the old public `measure.ts`/`box.ts` modules. The width-measurement
|
|
16
|
+
* approximation covers Latin/CJK/emoji/combining-mark ranges, not a full
|
|
19
17
|
* Unicode grapheme-segmentation table (see the doc comment below for the one
|
|
20
18
|
* documented limitation).
|
|
21
19
|
*/
|
package/dist/text-grid.js
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
* handful of STANDARD COMPONENTS that draw their own fixed-width glyphs
|
|
4
4
|
* (`card`, `callout`, `divider`, `chart`, `table`, and the plain-markdown
|
|
5
5
|
* table grid in `render.tsx`). Everything else in this engine wraps prose
|
|
6
|
-
* through Ink's own layout (`ink-string.ts`'s doc comment
|
|
7
|
-
*
|
|
8
|
-
* them").
|
|
6
|
+
* through Ink's own layout (`ink-string.ts`'s doc comment): Ink's layout replaces
|
|
7
|
+
* wrap, pad, columns, frame and rule.
|
|
9
8
|
*
|
|
10
9
|
* A self-drawing component cannot lean on Ink for this: the string it builds
|
|
11
10
|
* (a box-drawing frame, a sparkline, a table grid) is a fixed block of
|
|
@@ -13,9 +12,8 @@
|
|
|
13
12
|
* `<Text>` renders it verbatim rather than reflowing pre-drawn glyphs. This
|
|
14
13
|
* module is therefore kept as a small, PRIVATE (not exported from
|
|
15
14
|
* `src/index.ts`) implementation detail of those few components, replacing
|
|
16
|
-
* the old public `measure.ts`/`box.ts` modules
|
|
17
|
-
*
|
|
18
|
-
* old `measure.ts`: Latin/CJK/emoji/combining-mark ranges, not a full
|
|
15
|
+
* the old public `measure.ts`/`box.ts` modules. The width-measurement
|
|
16
|
+
* approximation covers Latin/CJK/emoji/combining-mark ranges, not a full
|
|
19
17
|
* Unicode grapheme-segmentation table (see the doc comment below for the one
|
|
20
18
|
* documented limitation).
|
|
21
19
|
*/
|
package/dist/value-types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `@markii/ansi`'s own structural view of `@markii/runtime`'s value-store
|
|
3
3
|
* contract. This package's dependency list is deliberately minimal (exactly
|
|
4
|
-
* `@markii/core` and `@markii/stdlib`; see AGENTS.md
|
|
4
|
+
* `@markii/core` and `@markii/stdlib`; see AGENTS.md),
|
|
5
5
|
* so it never imports `@markii/runtime` at runtime: declaring the shapes it
|
|
6
6
|
* needs here, rather than importing them, keeps a terminal render usable in
|
|
7
7
|
* a context that never pulled in the runtime package at all (a CLI that
|
package/dist/value-types.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `@markii/ansi`'s own structural view of `@markii/runtime`'s value-store
|
|
3
3
|
* contract. This package's dependency list is deliberately minimal (exactly
|
|
4
|
-
* `@markii/core` and `@markii/stdlib`; see AGENTS.md
|
|
4
|
+
* `@markii/core` and `@markii/stdlib`; see AGENTS.md),
|
|
5
5
|
* so it never imports `@markii/runtime` at runtime: declaring the shapes it
|
|
6
6
|
* needs here, rather than importing them, keeps a terminal render usable in
|
|
7
7
|
* a context that never pulled in the runtime package at all (a CLI that
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@markii/ansi",
|
|
3
|
-
"version": "0.17.0-next.
|
|
3
|
+
"version": "0.17.0-next.3",
|
|
4
4
|
"description": "The terminal renderer for Markii (.mk.md): a registry-driven hast-to-terminal engine built on Ink. Renders a note once as a string with optional color, for a pipe or a log, or as a live Ink tree a host can mount.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"markdown",
|
|
@@ -51,15 +51,15 @@
|
|
|
51
51
|
"regenerate:fixtures": "npm run build:dist && node scripts/regenerate-ansi-fixtures.ts"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@markii/core": "^0.17.0-next.
|
|
55
|
-
"@markii/pack": "^0.17.0-next.
|
|
56
|
-
"@markii/stdlib": "^0.17.0-next.
|
|
54
|
+
"@markii/core": "^0.17.0-next.3",
|
|
55
|
+
"@markii/pack": "^0.17.0-next.3",
|
|
56
|
+
"@markii/stdlib": "^0.17.0-next.3",
|
|
57
57
|
"ink": "^7.1.1",
|
|
58
58
|
"react": "^19.2.0"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@types/hast": "^3.0.4",
|
|
62
|
-
"@markii/runtime": "^0.17.0-next.
|
|
62
|
+
"@markii/runtime": "^0.17.0-next.3",
|
|
63
63
|
"@types/react": "^19.2.0"
|
|
64
64
|
}
|
|
65
65
|
}
|