@loomwork/ui-renderer-terminal 0.0.0-stage → 0.1.1
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 +202 -0
- package/NOTICE +8 -0
- package/README.md +369 -2
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/inert.js +13 -0
- package/dist/esm/inert.js.map +1 -0
- package/dist/esm/interactive.js +677 -0
- package/dist/esm/interactive.js.map +1 -0
- package/dist/esm/registry.js +428 -0
- package/dist/esm/registry.js.map +1 -0
- package/dist/esm/status.js +64 -0
- package/dist/esm/status.js.map +1 -0
- package/dist/esm/watch.js +17 -0
- package/dist/esm/watch.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/inert.d.ts +12 -0
- package/dist/inert.d.ts.map +1 -0
- package/dist/inert.js +17 -0
- package/dist/inert.js.map +1 -0
- package/dist/interactive.d.ts +142 -0
- package/dist/interactive.d.ts.map +1 -0
- package/dist/interactive.js +685 -0
- package/dist/interactive.js.map +1 -0
- package/dist/registry.d.ts +55 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +434 -0
- package/dist/registry.js.map +1 -0
- package/dist/status.d.ts +49 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +69 -0
- package/dist/status.js.map +1 -0
- package/dist/watch.d.ts +9 -0
- package/dist/watch.d.ts.map +1 -0
- package/dist/watch.js +20 -0
- package/dist/watch.js.map +1 -0
- package/package.json +60 -3
- package/src/index.ts +25 -0
- package/src/inert.ts +14 -0
- package/src/interactive.ts +868 -0
- package/src/registry.ts +630 -0
- package/src/status.ts +103 -0
- package/src/watch.ts +22 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/watch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE1E;;;GAGG;AACH,MAAM,UAAU,KAAK,CACnB,SAAoB,EACpB,KAAqB,EACrB,OAAgC,EAChC,OAAgC,EAAE;IAElC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,GAAS,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IACxF,OAAO,GAAG,EAAE;QACV,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,IAAI,EAAE,CAAC;IACnC,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { createLoomUiTerminalRegistry, loomUiTerminalRegistry, sparkline, terminalRegistry, } from "./registry";
|
|
2
|
+
export { DEFAULT_TERMINAL_LOCALE } from "./registry";
|
|
3
|
+
export type { TerminalMediaOptions, TerminalRegistryOptions, TitleChrome } from "./registry";
|
|
4
|
+
export { kindValueCheck, kindValueCheckFor, renderExperience } from "./status";
|
|
5
|
+
export type { RenderExperienceOptions } from "./status";
|
|
6
|
+
export { watch } from "./watch";
|
|
7
|
+
export { decodeKeys, diffFrames, interactiveTerminal, paintPatches } from "./interactive";
|
|
8
|
+
export type { Control, ControlKind, InteractiveLabels, InteractiveOptions, InteractiveTerminal, Key, KeyName, LinePatch, PaintStats, TerminalInput, TerminalOutput, } from "./interactive";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,SAAS,EACT,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC/E,YAAY,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1F,YAAY,EACV,OAAO,EACP,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,GAAG,EACH,OAAO,EACP,SAAS,EACT,UAAU,EACV,aAAa,EACb,cAAc,GACf,MAAM,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.paintPatches = exports.interactiveTerminal = exports.diffFrames = exports.decodeKeys = exports.watch = exports.renderExperience = exports.kindValueCheckFor = exports.kindValueCheck = exports.DEFAULT_TERMINAL_LOCALE = exports.terminalRegistry = exports.sparkline = exports.loomUiTerminalRegistry = exports.createLoomUiTerminalRegistry = void 0;
|
|
4
|
+
var registry_1 = require("./registry");
|
|
5
|
+
Object.defineProperty(exports, "createLoomUiTerminalRegistry", { enumerable: true, get: function () { return registry_1.createLoomUiTerminalRegistry; } });
|
|
6
|
+
Object.defineProperty(exports, "loomUiTerminalRegistry", { enumerable: true, get: function () { return registry_1.loomUiTerminalRegistry; } });
|
|
7
|
+
Object.defineProperty(exports, "sparkline", { enumerable: true, get: function () { return registry_1.sparkline; } });
|
|
8
|
+
Object.defineProperty(exports, "terminalRegistry", { enumerable: true, get: function () { return registry_1.terminalRegistry; } });
|
|
9
|
+
var registry_2 = require("./registry");
|
|
10
|
+
Object.defineProperty(exports, "DEFAULT_TERMINAL_LOCALE", { enumerable: true, get: function () { return registry_2.DEFAULT_TERMINAL_LOCALE; } });
|
|
11
|
+
var status_1 = require("./status");
|
|
12
|
+
Object.defineProperty(exports, "kindValueCheck", { enumerable: true, get: function () { return status_1.kindValueCheck; } });
|
|
13
|
+
Object.defineProperty(exports, "kindValueCheckFor", { enumerable: true, get: function () { return status_1.kindValueCheckFor; } });
|
|
14
|
+
Object.defineProperty(exports, "renderExperience", { enumerable: true, get: function () { return status_1.renderExperience; } });
|
|
15
|
+
var watch_1 = require("./watch");
|
|
16
|
+
Object.defineProperty(exports, "watch", { enumerable: true, get: function () { return watch_1.watch; } });
|
|
17
|
+
var interactive_1 = require("./interactive");
|
|
18
|
+
Object.defineProperty(exports, "decodeKeys", { enumerable: true, get: function () { return interactive_1.decodeKeys; } });
|
|
19
|
+
Object.defineProperty(exports, "diffFrames", { enumerable: true, get: function () { return interactive_1.diffFrames; } });
|
|
20
|
+
Object.defineProperty(exports, "interactiveTerminal", { enumerable: true, get: function () { return interactive_1.interactiveTerminal; } });
|
|
21
|
+
Object.defineProperty(exports, "paintPatches", { enumerable: true, get: function () { return interactive_1.paintPatches; } });
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAKoB;AAJlB,wHAAA,4BAA4B,OAAA;AAC5B,kHAAA,sBAAsB,OAAA;AACtB,qGAAA,SAAS,OAAA;AACT,4GAAA,gBAAgB,OAAA;AAElB,uCAAqD;AAA5C,mHAAA,uBAAuB,OAAA;AAEhC,mCAA+E;AAAtE,wGAAA,cAAc,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAE5D,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,6CAA0F;AAAjF,yGAAA,UAAU,OAAA;AAAE,yGAAA,UAAU,OAAA;AAAE,kHAAA,mBAAmB,OAAA;AAAE,2GAAA,YAAY,OAAA"}
|
package/dist/inert.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Make text inert for a terminal: core's ONE unsafe set (`stripUnsafeChars` — the same class
|
|
3
|
+
* `sanitizeChatText` removes: C0/C1 controls incl. ESC and NUL, bidi overrides/isolates, zero-width
|
|
4
|
+
* and invisible marks, soft hyphen, TAG characters), plus tab, carriage return and the Unicode line
|
|
5
|
+
* separators. Newline is the only control kept: it is the frame's own line structure.
|
|
6
|
+
*
|
|
7
|
+
* It STRIPS; it does not parse. The bytes after a stripped ESC are ordinary printable text, so
|
|
8
|
+
* `ESC ]8;;http://x BEL` leaves a harmless visible `]8;;http://x`. Idempotent; printable text is
|
|
9
|
+
* never touched.
|
|
10
|
+
*/
|
|
11
|
+
export declare const inert: (text: string) => string;
|
|
12
|
+
//# sourceMappingURL=inert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inert.d.ts","sourceRoot":"","sources":["../src/inert.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,MAC2B,CAAC"}
|
package/dist/inert.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.inert = void 0;
|
|
4
|
+
const chat_ui_1 = require("@loomwork/ui-core/chat-ui");
|
|
5
|
+
/**
|
|
6
|
+
* Make text inert for a terminal: core's ONE unsafe set (`stripUnsafeChars` — the same class
|
|
7
|
+
* `sanitizeChatText` removes: C0/C1 controls incl. ESC and NUL, bidi overrides/isolates, zero-width
|
|
8
|
+
* and invisible marks, soft hyphen, TAG characters), plus tab, carriage return and the Unicode line
|
|
9
|
+
* separators. Newline is the only control kept: it is the frame's own line structure.
|
|
10
|
+
*
|
|
11
|
+
* It STRIPS; it does not parse. The bytes after a stripped ESC are ordinary printable text, so
|
|
12
|
+
* `ESC ]8;;http://x BEL` leaves a harmless visible `]8;;http://x`. Idempotent; printable text is
|
|
13
|
+
* never touched.
|
|
14
|
+
*/
|
|
15
|
+
const inert = (text) => (0, chat_ui_1.stripUnsafeChars)(text).replace(/[\t\r\u{2028}\u{2029}]/gu, "");
|
|
16
|
+
exports.inert = inert;
|
|
17
|
+
//# sourceMappingURL=inert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inert.js","sourceRoot":"","sources":["../src/inert.ts"],"names":[],"mappings":";;;AAAA,uDAA6D;AAE7D;;;;;;;;;GASG;AACI,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE,CAC5C,IAAA,0BAAgB,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;AADpD,QAAA,KAAK,SAC+C"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import type { Blueprint } from "@loomwork/blueprint-runtime";
|
|
2
|
+
import { type StampedAction } from "@loomwork/ui-core";
|
|
3
|
+
import type { HydrationStore } from "@loomwork/ui-hydration/client";
|
|
4
|
+
import { type RenderExperienceOptions } from "./status";
|
|
5
|
+
/** What the session reads keys from: a TTY's `process.stdin`, or any emitter of `data` chunks. */
|
|
6
|
+
export interface TerminalInput {
|
|
7
|
+
on(event: "data", listener: (chunk: string | Uint8Array) => void): unknown;
|
|
8
|
+
off?(event: "data", listener: (chunk: string | Uint8Array) => void): unknown;
|
|
9
|
+
removeListener?(event: "data", listener: (chunk: string | Uint8Array) => void): unknown;
|
|
10
|
+
/** A TTY's raw mode: set while the session is live so keys arrive unbuffered. Optional. */
|
|
11
|
+
setRawMode?(raw: boolean): unknown;
|
|
12
|
+
resume?(): unknown;
|
|
13
|
+
}
|
|
14
|
+
/** Where frames are painted: a TTY's `process.stdout`, or any sink with `write`. */
|
|
15
|
+
export interface TerminalOutput {
|
|
16
|
+
write(chunk: string): unknown;
|
|
17
|
+
}
|
|
18
|
+
export type KeyName = "tab" | "shift-tab" | "up" | "down" | "enter" | "escape" | "backspace" | "interrupt" | "paste" | "ignored" | "char";
|
|
19
|
+
export interface Key {
|
|
20
|
+
readonly name: KeyName;
|
|
21
|
+
/** The printable character, for `name: "char"`. */
|
|
22
|
+
readonly char?: string;
|
|
23
|
+
/** The pasted text, for `name: "paste"`: already inert, newlines normalised to `\n`. It is TEXT only, never a command. */
|
|
24
|
+
readonly text?: string;
|
|
25
|
+
}
|
|
26
|
+
/** One printable code point: what a `char` key may carry. Anything else is not typed text. */
|
|
27
|
+
export declare function isPrintableChar(ch: unknown): ch is string;
|
|
28
|
+
export interface KeyDecoderOptions {
|
|
29
|
+
/** The clock the paste idle bound reads (ms). Default `Date.now`. Injected so a test needs no sleep. */
|
|
30
|
+
readonly now?: () => number;
|
|
31
|
+
/** A paste with no byte for this long is discarded and paste mode left. Default 2000. */
|
|
32
|
+
readonly pasteIdleMs?: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A decoder that remembers an unfinished bracketed paste across chunks. `decodeKeys` is the
|
|
36
|
+
* stateless form (one chunk, a fresh decoder). It returns EVERY input unit, dropped sequences and
|
|
37
|
+
* non-printables included as `ignored`, so a caller can tell a lone key from one with company.
|
|
38
|
+
*
|
|
39
|
+
* Paste mode always ends: at the end marker (even split across chunks), at Ctrl-C (the paste is
|
|
40
|
+
* discarded and the interrupt delivered), when the paste outgrows MAX_PASTE (it is discarded, and
|
|
41
|
+
* the rest is swallowed up to the end marker, never typed), or after `pasteIdleMs` of silence, when the
|
|
42
|
+
* remainder (if any) is drained: discarded up to the end marker, Ctrl-C, or MAX_PASTE more UTF-16
|
|
43
|
+
* code units AND `pasteIdleMs` of silence (a still-flowing paste keeps draining). A drain or an
|
|
44
|
+
* overflowed paste that ends inside a chunk emits an `ignored` key, so what follows is never sole.
|
|
45
|
+
* Nothing it discards ever becomes a key.
|
|
46
|
+
*/
|
|
47
|
+
export declare function createKeyDecoder(opts?: KeyDecoderOptions): (chunk: string) => Key[];
|
|
48
|
+
/**
|
|
49
|
+
* Split a chunk of terminal input into keys. Unknown escape sequences (arrows left/right, function
|
|
50
|
+
* keys, mouse reports, OSC strings) are dropped whole rather than leaking their bytes in as
|
|
51
|
+
* characters; a lone ESC is `escape`. Printable code points become `char` keys; a bracketed paste
|
|
52
|
+
* (`ESC[200~ … ESC[201~`) is ONE `paste` key, text only.
|
|
53
|
+
*/
|
|
54
|
+
export declare function decodeKeys(chunk: string): Key[];
|
|
55
|
+
/** One changed line of a repaint. `text: undefined` = the line no longer exists. */
|
|
56
|
+
export interface LinePatch {
|
|
57
|
+
/** 0-based line index within the frame. */
|
|
58
|
+
readonly line: number;
|
|
59
|
+
readonly text: string | undefined;
|
|
60
|
+
}
|
|
61
|
+
/** The lines that differ between two frames, in order. Equal frames diff to nothing. */
|
|
62
|
+
export declare function diffFrames(prev: readonly string[], next: readonly string[]): LinePatch[];
|
|
63
|
+
/** The escape sequences that apply `patches`, then park the cursor under the frame. */
|
|
64
|
+
export declare function paintPatches(patches: readonly LinePatch[], nextLength: number): string;
|
|
65
|
+
/** The fixed words the controls footer uses beyond `LU_MESSAGES`: symbols, host-overridable. */
|
|
66
|
+
export interface InteractiveLabels {
|
|
67
|
+
/** The key legend under the controls. Default: symbols only (no words to translate). */
|
|
68
|
+
readonly hint?: string;
|
|
69
|
+
/** The marker before the focused control. Default `▸`. */
|
|
70
|
+
readonly focus?: string;
|
|
71
|
+
/** Shown after a first `y` / `n` when `confirmConsent` is on. Default: a symbols-only prompt. */
|
|
72
|
+
readonly confirm?: string;
|
|
73
|
+
}
|
|
74
|
+
export interface InteractiveOptions extends RenderExperienceOptions {
|
|
75
|
+
readonly store: HydrationStore;
|
|
76
|
+
/**
|
|
77
|
+
* Every `WidgetAction` a control emits, stamped with `viewedVersion` like the web's. It MAY return
|
|
78
|
+
* (a promise of) an `ActionOutcome`; nothing returned is success, `ok: false` / a throw is failure.
|
|
79
|
+
* No handler = "not available here": nothing is pretended to be sent.
|
|
80
|
+
*/
|
|
81
|
+
readonly onAction?: (action: StampedAction) => unknown;
|
|
82
|
+
readonly input?: TerminalInput;
|
|
83
|
+
readonly output?: TerminalOutput;
|
|
84
|
+
/** Called after each repaint with what changed (the incremental-render evidence). */
|
|
85
|
+
readonly onPaint?: (stats: PaintStats) => void;
|
|
86
|
+
/** Called on Ctrl-C. Default: `stop()`. */
|
|
87
|
+
readonly onInterrupt?: () => void;
|
|
88
|
+
readonly labels?: InteractiveLabels;
|
|
89
|
+
/** The compile fingerprint stamped on every action (`viewedVersion.compile`). */
|
|
90
|
+
readonly compile?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Require a SECOND, deliberate key for an approval: the first `y` / `n` only arms it (the frame
|
|
93
|
+
* says "press again"), and the same key, alone in a LATER chunk on the same frame, acts. Any other
|
|
94
|
+
* key disarms it. Default off. RECOMMENDED when the host reads a raw byte stream (see the known
|
|
95
|
+
* limits on `interactiveTerminal`).
|
|
96
|
+
*/
|
|
97
|
+
readonly confirmConsent?: boolean;
|
|
98
|
+
/** The clock (ms) the bracketed-paste idle bound reads. Default `Date.now`; injected by tests. */
|
|
99
|
+
readonly now?: () => number;
|
|
100
|
+
/** A bracketed paste with no byte for this long is discarded. Default 2000. */
|
|
101
|
+
readonly pasteIdleMs?: number;
|
|
102
|
+
}
|
|
103
|
+
export interface PaintStats {
|
|
104
|
+
/** `full` is the first paint (or a forced one); `patch` rewrote only the changed lines. */
|
|
105
|
+
readonly mode: "full" | "patch" | "none";
|
|
106
|
+
readonly changedLines: number;
|
|
107
|
+
readonly totalLines: number;
|
|
108
|
+
}
|
|
109
|
+
export type ControlKind = "approval" | "select" | "multi" | "text";
|
|
110
|
+
export interface Control {
|
|
111
|
+
readonly id: string;
|
|
112
|
+
readonly kind: ControlKind;
|
|
113
|
+
readonly label: string;
|
|
114
|
+
}
|
|
115
|
+
export interface InteractiveTerminal {
|
|
116
|
+
/** The current frame: the snapshot, then the controls footer when there are controls. */
|
|
117
|
+
frame(): string;
|
|
118
|
+
/** The controls in reading order, with the focused one's id. */
|
|
119
|
+
controls(): readonly Control[];
|
|
120
|
+
focused(): string | undefined;
|
|
121
|
+
/** Feed raw input (what a TTY would deliver). Resolves when every effect, incl. an action, has settled. */
|
|
122
|
+
send(chunk: string): Promise<void>;
|
|
123
|
+
/** Feed decoded keys. */
|
|
124
|
+
press(...keys: Key[]): Promise<void>;
|
|
125
|
+
/** Land a revised Blueprint: only the lines that changed are repainted; focus follows the control's id. */
|
|
126
|
+
update(next: Blueprint): void;
|
|
127
|
+
/** Detach from the input, the store and the output. Idempotent. */
|
|
128
|
+
stop(): void;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Run the renderer as a live, keyboard-driven session.
|
|
132
|
+
*
|
|
133
|
+
* Consent (`y` / `n`, a submit) acts only as the SOLE unit of an input chunk: every decoded unit
|
|
134
|
+
* counts, dropped escape sequences and non-printables included. KNOWN LIMITS, because a chunk
|
|
135
|
+
* boundary is all the terminal gives us: (1) a terminal WITHOUT bracketed paste delivers a one-char
|
|
136
|
+
* paste (`y`) as a one-key chunk, indistinguishable from a keypress; (2) a host that reads byte by
|
|
137
|
+
* byte (slow serial / ssh) makes every key a one-key chunk, so a multi-line non-bracketed paste can
|
|
138
|
+
* reach `\t`, `y`. For such hosts turn on `confirmConsent`, which asks for the same key again in a
|
|
139
|
+
* later chunk. Default off.
|
|
140
|
+
*/
|
|
141
|
+
export declare function interactiveTerminal(initial: Blueprint, opts: InteractiveOptions): InteractiveTerminal;
|
|
142
|
+
//# sourceMappingURL=interactive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"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"}
|