arc402-cli 1.6.6 → 1.7.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/dist/renderer/ThemeProvider.d.ts +46 -0
- package/dist/renderer/ThemeProvider.d.ts.map +1 -0
- package/dist/renderer/ThemeProvider.js +57 -0
- package/dist/renderer/ThemeProvider.js.map +1 -0
- package/dist/renderer/ThemedBox.d.ts +8 -0
- package/dist/renderer/ThemedBox.d.ts.map +1 -0
- package/dist/renderer/ThemedBox.js +14 -0
- package/dist/renderer/ThemedBox.js.map +1 -0
- package/dist/renderer/ThemedText.d.ts +27 -0
- package/dist/renderer/ThemedText.d.ts.map +1 -0
- package/dist/renderer/ThemedText.js +34 -0
- package/dist/renderer/ThemedText.js.map +1 -0
- package/dist/renderer/cell.d.ts +56 -0
- package/dist/renderer/cell.d.ts.map +1 -0
- package/dist/renderer/cell.js +54 -0
- package/dist/renderer/cell.js.map +1 -0
- package/dist/renderer/diff.d.ts +9 -0
- package/dist/renderer/diff.d.ts.map +1 -0
- package/dist/renderer/diff.js +55 -0
- package/dist/renderer/diff.js.map +1 -0
- package/dist/renderer/dom.d.ts +21 -0
- package/dist/renderer/dom.d.ts.map +1 -0
- package/dist/renderer/dom.js +31 -0
- package/dist/renderer/dom.js.map +1 -0
- package/dist/renderer/index.d.ts +11 -0
- package/dist/renderer/index.d.ts.map +1 -0
- package/dist/renderer/index.js +29 -0
- package/dist/renderer/index.js.map +1 -0
- package/dist/renderer/ink.d.ts +40 -0
- package/dist/renderer/ink.d.ts.map +1 -0
- package/dist/renderer/ink.js +59 -0
- package/dist/renderer/ink.js.map +1 -0
- package/dist/renderer/input.d.ts +22 -0
- package/dist/renderer/input.d.ts.map +1 -0
- package/dist/renderer/input.js +175 -0
- package/dist/renderer/input.js.map +1 -0
- package/dist/renderer/layout.d.ts +31 -0
- package/dist/renderer/layout.d.ts.map +1 -0
- package/dist/renderer/layout.js +119 -0
- package/dist/renderer/layout.js.map +1 -0
- package/dist/renderer/loop.d.ts +6 -0
- package/dist/renderer/loop.d.ts.map +1 -0
- package/dist/renderer/loop.js +57 -0
- package/dist/renderer/loop.js.map +1 -0
- package/dist/renderer/reconciler.d.ts +3 -0
- package/dist/renderer/reconciler.d.ts.map +1 -0
- package/dist/renderer/reconciler.js +86 -0
- package/dist/renderer/reconciler.js.map +1 -0
- package/dist/renderer/screen.d.ts +25 -0
- package/dist/renderer/screen.d.ts.map +1 -0
- package/dist/renderer/screen.js +74 -0
- package/dist/renderer/screen.js.map +1 -0
- package/dist/renderer/terminal.d.ts +5 -0
- package/dist/renderer/terminal.d.ts.map +1 -0
- package/dist/renderer/terminal.js +49 -0
- package/dist/renderer/terminal.js.map +1 -0
- package/dist/renderer/theme.d.ts +51 -0
- package/dist/renderer/theme.d.ts.map +1 -0
- package/dist/renderer/theme.js +28 -0
- package/dist/renderer/theme.js.map +1 -0
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +2 -1
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/Footer.js +2 -2
- package/dist/tui/Footer.js.map +1 -1
- package/dist/tui/Header.js +2 -2
- package/dist/tui/Header.js.map +1 -1
- package/dist/tui/InputLine.d.ts +1 -0
- package/dist/tui/InputLine.d.ts.map +1 -1
- package/dist/tui/InputLine.js +145 -85
- package/dist/tui/InputLine.js.map +1 -1
- package/dist/tui/KernelPayloadRenderer.js +4 -4
- package/dist/tui/KernelPayloadRenderer.js.map +1 -1
- package/dist/tui/Viewport.js +2 -2
- package/dist/tui/Viewport.js.map +1 -1
- package/dist/tui/WalletConnectPairing.js +2 -2
- package/dist/tui/WalletConnectPairing.js.map +1 -1
- package/dist/tui/components/Button.d.ts.map +1 -1
- package/dist/tui/components/Button.js +2 -1
- package/dist/tui/components/Button.js.map +1 -1
- package/dist/tui/components/CeremonyView.js +2 -2
- package/dist/tui/components/CeremonyView.js.map +1 -1
- package/dist/tui/components/CompletionDropdown.js +4 -4
- package/dist/tui/components/CompletionDropdown.js.map +1 -1
- package/dist/tui/components/ConfirmPrompt.js +2 -2
- package/dist/tui/components/ConfirmPrompt.js.map +1 -1
- package/dist/tui/components/CustomTextInput.d.ts.map +1 -1
- package/dist/tui/components/CustomTextInput.js +3 -2
- package/dist/tui/components/CustomTextInput.js.map +1 -1
- package/dist/tui/components/InteractiveTable.d.ts.map +1 -1
- package/dist/tui/components/InteractiveTable.js +4 -3
- package/dist/tui/components/InteractiveTable.js.map +1 -1
- package/dist/tui/components/StepSpinner.js +5 -5
- package/dist/tui/components/StepSpinner.js.map +1 -1
- package/dist/tui/components/Toast.js +3 -3
- package/dist/tui/components/Toast.js.map +1 -1
- package/dist/tui/components/commerce/AgentPicker.d.ts.map +1 -1
- package/dist/tui/components/commerce/AgentPicker.js +4 -3
- package/dist/tui/components/commerce/AgentPicker.js.map +1 -1
- package/dist/tui/components/commerce/DiscoverList.js +5 -5
- package/dist/tui/components/commerce/DiscoverList.js.map +1 -1
- package/dist/tui/components/commerce/HireCard.js +2 -2
- package/dist/tui/components/commerce/HireCard.js.map +1 -1
- package/dist/tui/components/commerce/ProfileCard.js +2 -2
- package/dist/tui/components/commerce/ProfileCard.js.map +1 -1
- package/dist/tui/components/commerce/SquadCard.js +2 -2
- package/dist/tui/components/commerce/SquadCard.js.map +1 -1
- package/dist/tui/components/commerce/StatusCard.js +2 -2
- package/dist/tui/components/commerce/StatusCard.js.map +1 -1
- package/dist/tui/components/commerce/SubscribeCard.js +2 -2
- package/dist/tui/components/commerce/SubscribeCard.js.map +1 -1
- package/dist/tui/components/commerce/WorkroomCard.js +2 -2
- package/dist/tui/components/commerce/WorkroomCard.js.map +1 -1
- package/dist/tui/components/commerce/common.js +7 -7
- package/dist/tui/components/commerce/common.js.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +9 -2
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/useScroll.d.ts.map +1 -1
- package/dist/tui/useScroll.js +15 -9
- package/dist/tui/useScroll.js.map +1 -1
- package/dist/tui/useTerminalSize.d.ts.map +1 -1
- package/dist/tui/useTerminalSize.js +2 -3
- package/dist/tui/useTerminalSize.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type Theme } from './theme.js';
|
|
3
|
+
export declare function ThemeProvider({ theme, children }: {
|
|
4
|
+
theme?: Theme;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
}): React.FunctionComponentElement<React.ProviderProps<Theme>>;
|
|
7
|
+
export declare function useTheme(): Theme;
|
|
8
|
+
export declare function useColor(name: keyof Theme['colors']): import("./cell.js").Color;
|
|
9
|
+
export declare function useComponentStyle<K extends keyof Theme['components']>(name: K): {
|
|
10
|
+
header: {
|
|
11
|
+
fg: import("./cell.js").Color;
|
|
12
|
+
bold: boolean;
|
|
13
|
+
};
|
|
14
|
+
label: {
|
|
15
|
+
fg: import("./cell.js").Color;
|
|
16
|
+
};
|
|
17
|
+
value: {
|
|
18
|
+
fg: import("./cell.js").Color | null;
|
|
19
|
+
};
|
|
20
|
+
badge: {
|
|
21
|
+
fg: import("./cell.js").Color | null;
|
|
22
|
+
bg: import("./cell.js").Color;
|
|
23
|
+
bold: boolean;
|
|
24
|
+
};
|
|
25
|
+
separator: {
|
|
26
|
+
fg: import("./cell.js").Color;
|
|
27
|
+
};
|
|
28
|
+
prompt: {
|
|
29
|
+
fg: import("./cell.js").Color;
|
|
30
|
+
bold: boolean;
|
|
31
|
+
};
|
|
32
|
+
cursor: {
|
|
33
|
+
fg: import("./cell.js").Color | null;
|
|
34
|
+
bg: import("./cell.js").Color;
|
|
35
|
+
};
|
|
36
|
+
success: {
|
|
37
|
+
fg: import("./cell.js").Color;
|
|
38
|
+
};
|
|
39
|
+
warning: {
|
|
40
|
+
fg: import("./cell.js").Color;
|
|
41
|
+
};
|
|
42
|
+
danger: {
|
|
43
|
+
fg: import("./cell.js").Color;
|
|
44
|
+
};
|
|
45
|
+
}[K];
|
|
46
|
+
//# sourceMappingURL=ThemeProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/renderer/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,YAAY,CAAC;AAItD,wBAAgB,aAAa,CAAC,EAAE,KAAoB,EAAE,QAAQ,EAAE,EAAE;IAChE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,8DAEA;AAED,wBAAgB,QAAQ,IAAI,KAAK,CAEhC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,QAAQ,CAAC,6BAGnD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAG7E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ThemeProvider = ThemeProvider;
|
|
37
|
+
exports.useTheme = useTheme;
|
|
38
|
+
exports.useColor = useColor;
|
|
39
|
+
exports.useComponentStyle = useComponentStyle;
|
|
40
|
+
const react_1 = __importStar(require("react"));
|
|
41
|
+
const theme_js_1 = require("./theme.js");
|
|
42
|
+
const ThemeContext = (0, react_1.createContext)(theme_js_1.defaultTheme);
|
|
43
|
+
function ThemeProvider({ theme = theme_js_1.defaultTheme, children }) {
|
|
44
|
+
return react_1.default.createElement(ThemeContext.Provider, { value: theme }, children);
|
|
45
|
+
}
|
|
46
|
+
function useTheme() {
|
|
47
|
+
return (0, react_1.useContext)(ThemeContext);
|
|
48
|
+
}
|
|
49
|
+
function useColor(name) {
|
|
50
|
+
const theme = useTheme();
|
|
51
|
+
return theme.colors[name];
|
|
52
|
+
}
|
|
53
|
+
function useComponentStyle(name) {
|
|
54
|
+
const theme = useTheme();
|
|
55
|
+
return theme.components[name];
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=ThemeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/renderer/ThemeProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,sCAKC;AAED,4BAEC;AAED,4BAGC;AAED,8CAGC;AAxBD,+CAAyD;AACzD,yCAAsD;AAEtD,MAAM,YAAY,GAAG,IAAA,qBAAa,EAAQ,uBAAY,CAAC,CAAC;AAExD,SAAgB,aAAa,CAAC,EAAE,KAAK,GAAG,uBAAY,EAAE,QAAQ,EAG7D;IACC,OAAO,eAAK,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChF,CAAC;AAED,SAAgB,QAAQ;IACtB,OAAO,IAAA,kBAAU,EAAC,YAAY,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,QAAQ,CAAC,IAA2B;IAClD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAgB,iBAAiB,CAAsC,IAAO;IAC5E,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { BoxStyle } from './layout.js';
|
|
3
|
+
interface ThemedBoxProps extends BoxStyle {
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export declare function ThemedBox({ children, ...style }: ThemedBoxProps): React.DetailedReactHTMLElement<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=ThemedBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemedBox.d.ts","sourceRoot":"","sources":["../../src/renderer/ThemedBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C,UAAU,cAAe,SAAQ,QAAQ;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,iGAI/D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ThemedBox = ThemedBox;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const ink_js_1 = require("./ink.js");
|
|
9
|
+
function ThemedBox({ children, ...style }) {
|
|
10
|
+
// Spread BoxStyle props directly — Ink's Box accepts them as top-level props
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
+
return react_1.default.createElement(ink_js_1.Box, style, children);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ThemedBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemedBox.js","sourceRoot":"","sources":["../../src/renderer/ThemedBox.tsx"],"names":[],"mappings":";;;;;AAUA,8BAIC;AAdD,kDAA0B;AAC1B,qCAA+B;AAS/B,SAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAkB;IAC9D,6EAA6E;IAC7E,8DAA8D;IAC9D,OAAO,eAAK,CAAC,aAAa,CAAC,YAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Color } from './cell.js';
|
|
3
|
+
import type { Theme } from './theme.js';
|
|
4
|
+
interface ThemedTextProps {
|
|
5
|
+
variant?: keyof Theme['components'];
|
|
6
|
+
color?: Color | null;
|
|
7
|
+
bold?: boolean;
|
|
8
|
+
dim?: boolean;
|
|
9
|
+
italic?: boolean;
|
|
10
|
+
underline?: boolean;
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
}
|
|
13
|
+
export declare function ThemedText({ variant, color, bold, dim, italic, underline, children }: ThemedTextProps): React.CElement<{
|
|
14
|
+
color: string | undefined;
|
|
15
|
+
bold: boolean | undefined;
|
|
16
|
+
dimColor: boolean | undefined;
|
|
17
|
+
italic: boolean | undefined;
|
|
18
|
+
underline: boolean | undefined;
|
|
19
|
+
}, React.Component<{
|
|
20
|
+
color: string | undefined;
|
|
21
|
+
bold: boolean | undefined;
|
|
22
|
+
dimColor: boolean | undefined;
|
|
23
|
+
italic: boolean | undefined;
|
|
24
|
+
underline: boolean | undefined;
|
|
25
|
+
}, any, any>>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=ThemedText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemedText.d.ts","sourceRoot":"","sources":["../../src/renderer/ThemedText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,UAAU,eAAe;IAEvB,OAAO,CAAC,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IAEpC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,eAAe;;;;;;;;;;;;cAyBrG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ThemedText = ThemedText;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const ThemeProvider_js_1 = require("./ThemeProvider.js");
|
|
9
|
+
const ink_js_1 = require("./ink.js");
|
|
10
|
+
function ThemedText({ variant, color, bold, dim, italic, underline, children }) {
|
|
11
|
+
const theme = (0, ThemeProvider_js_1.useTheme)();
|
|
12
|
+
let resolvedColor = color;
|
|
13
|
+
let resolvedBold = bold;
|
|
14
|
+
let resolvedDim = dim;
|
|
15
|
+
if (variant) {
|
|
16
|
+
const style = theme.components[variant];
|
|
17
|
+
if (resolvedColor === undefined)
|
|
18
|
+
resolvedColor = style.fg ?? null;
|
|
19
|
+
if (resolvedBold === undefined && style.bold)
|
|
20
|
+
resolvedBold = style.bold;
|
|
21
|
+
}
|
|
22
|
+
const colorStr = resolvedColor != null
|
|
23
|
+
? `#${resolvedColor.r.toString(16).padStart(2, '0')}${resolvedColor.g.toString(16).padStart(2, '0')}${resolvedColor.b.toString(16).padStart(2, '0')}`
|
|
24
|
+
: undefined;
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
|
+
return react_1.default.createElement(ink_js_1.Text, {
|
|
27
|
+
color: colorStr,
|
|
28
|
+
bold: resolvedBold,
|
|
29
|
+
dimColor: resolvedDim,
|
|
30
|
+
italic,
|
|
31
|
+
underline,
|
|
32
|
+
}, children);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=ThemedText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemedText.js","sourceRoot":"","sources":["../../src/renderer/ThemedText.tsx"],"names":[],"mappings":";;;;;AAkBA,gCAyBC;AA3CD,kDAA0B;AAC1B,yDAAiE;AACjE,qCAAgC;AAgBhC,SAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAmB;IACpG,MAAM,KAAK,GAAG,IAAA,2BAAQ,GAAE,CAAC;IAEzB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,WAAW,GAAG,GAAG,CAAC;IAEtB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAA4B,CAAC;QACnE,IAAI,aAAa,KAAK,SAAS;YAAE,aAAa,GAAI,KAAK,CAAC,EAA+B,IAAI,IAAI,CAAC;QAChG,IAAI,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI;YAAE,YAAY,GAAG,KAAK,CAAC,IAAe,CAAC;IACrF,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,IAAI,IAAI;QACpC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QACrJ,CAAC,CAAC,SAAS,CAAC;IAEd,8DAA8D;IAC9D,OAAO,eAAK,CAAC,aAAa,CAAC,aAAW,EAAE;QACtC,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,WAAW;QACrB,MAAM;QACN,SAAS;KACV,EAAE,QAAQ,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export interface Color {
|
|
2
|
+
r: number;
|
|
3
|
+
g: number;
|
|
4
|
+
b: number;
|
|
5
|
+
}
|
|
6
|
+
export declare const COLORS: {
|
|
7
|
+
readonly cyan: {
|
|
8
|
+
readonly r: 34;
|
|
9
|
+
readonly g: 211;
|
|
10
|
+
readonly b: 238;
|
|
11
|
+
};
|
|
12
|
+
readonly green: {
|
|
13
|
+
readonly r: 74;
|
|
14
|
+
readonly g: 222;
|
|
15
|
+
readonly b: 128;
|
|
16
|
+
};
|
|
17
|
+
readonly yellow: {
|
|
18
|
+
readonly r: 251;
|
|
19
|
+
readonly g: 191;
|
|
20
|
+
readonly b: 36;
|
|
21
|
+
};
|
|
22
|
+
readonly red: {
|
|
23
|
+
readonly r: 248;
|
|
24
|
+
readonly g: 113;
|
|
25
|
+
readonly b: 113;
|
|
26
|
+
};
|
|
27
|
+
readonly slate: {
|
|
28
|
+
readonly r: 148;
|
|
29
|
+
readonly g: 163;
|
|
30
|
+
readonly b: 184;
|
|
31
|
+
};
|
|
32
|
+
readonly dim: {
|
|
33
|
+
readonly r: 71;
|
|
34
|
+
readonly g: 85;
|
|
35
|
+
readonly b: 105;
|
|
36
|
+
};
|
|
37
|
+
readonly white: {
|
|
38
|
+
readonly r: 255;
|
|
39
|
+
readonly g: 255;
|
|
40
|
+
readonly b: 255;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export interface Cell {
|
|
44
|
+
char: string;
|
|
45
|
+
fg: Color | null;
|
|
46
|
+
bg: Color | null;
|
|
47
|
+
bold: boolean;
|
|
48
|
+
dim: boolean;
|
|
49
|
+
italic: boolean;
|
|
50
|
+
underline: boolean;
|
|
51
|
+
}
|
|
52
|
+
export type Frame = Cell[][];
|
|
53
|
+
export declare function emptyCell(): Cell;
|
|
54
|
+
export declare function createFrame(rows: number, cols: number): Frame;
|
|
55
|
+
export declare function cellsEqual(a: Cell, b: Cell): boolean;
|
|
56
|
+
//# sourceMappingURL=cell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../src/renderer/cell.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CACjC;AAGD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQT,CAAC;AAEX,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC;IACjB,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,KAAK,GAAG,IAAI,EAAE,EAAE,CAAC;AAE7B,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAI7D;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAmBpD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.COLORS = void 0;
|
|
4
|
+
exports.emptyCell = emptyCell;
|
|
5
|
+
exports.createFrame = createFrame;
|
|
6
|
+
exports.cellsEqual = cellsEqual;
|
|
7
|
+
// Named ANSI colors as Color-compatible values
|
|
8
|
+
exports.COLORS = {
|
|
9
|
+
cyan: { r: 34, g: 211, b: 238 }, // #22d3ee — ARC-402 primary
|
|
10
|
+
green: { r: 74, g: 222, b: 128 }, // #4ade80
|
|
11
|
+
yellow: { r: 251, g: 191, b: 36 }, // #fbbf24
|
|
12
|
+
red: { r: 248, g: 113, b: 113 }, // #f87171
|
|
13
|
+
slate: { r: 148, g: 163, b: 184 }, // #94a3b8
|
|
14
|
+
dim: { r: 71, g: 85, b: 105 }, // #475569
|
|
15
|
+
white: { r: 255, g: 255, b: 255 },
|
|
16
|
+
};
|
|
17
|
+
function emptyCell() {
|
|
18
|
+
return { char: ' ', fg: null, bg: null, bold: false, dim: false, italic: false, underline: false };
|
|
19
|
+
}
|
|
20
|
+
function createFrame(rows, cols) {
|
|
21
|
+
return Array.from({ length: rows }, () => Array.from({ length: cols }, () => emptyCell()));
|
|
22
|
+
}
|
|
23
|
+
function cellsEqual(a, b) {
|
|
24
|
+
if (a.char !== b.char)
|
|
25
|
+
return false;
|
|
26
|
+
if (a.bold !== b.bold)
|
|
27
|
+
return false;
|
|
28
|
+
if (a.dim !== b.dim)
|
|
29
|
+
return false;
|
|
30
|
+
if (a.italic !== b.italic)
|
|
31
|
+
return false;
|
|
32
|
+
if (a.underline !== b.underline)
|
|
33
|
+
return false;
|
|
34
|
+
// fg comparison
|
|
35
|
+
if (a.fg === null && b.fg !== null)
|
|
36
|
+
return false;
|
|
37
|
+
if (a.fg !== null && b.fg === null)
|
|
38
|
+
return false;
|
|
39
|
+
if (a.fg !== null && b.fg !== null) {
|
|
40
|
+
if (a.fg.r !== b.fg.r || a.fg.g !== b.fg.g || a.fg.b !== b.fg.b)
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
// bg comparison
|
|
44
|
+
if (a.bg === null && b.bg !== null)
|
|
45
|
+
return false;
|
|
46
|
+
if (a.bg !== null && b.bg === null)
|
|
47
|
+
return false;
|
|
48
|
+
if (a.bg !== null && b.bg !== null) {
|
|
49
|
+
if (a.bg.r !== b.bg.r || a.bg.g !== b.bg.g || a.bg.b !== b.bg.b)
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell.js","sourceRoot":"","sources":["../../src/renderer/cell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Frame, Cell } from './cell.js';
|
|
2
|
+
export interface Patch {
|
|
3
|
+
row: number;
|
|
4
|
+
col: number;
|
|
5
|
+
cells: Cell[];
|
|
6
|
+
}
|
|
7
|
+
export declare function diff(front: Frame, back: Frame): Patch[];
|
|
8
|
+
export declare function optimizePatches(patches: Patch[]): Patch[];
|
|
9
|
+
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/renderer/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAc,MAAM,WAAW,CAAC;AAEpD,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAID,wBAAgB,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,CA6BvD;AAGD,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAkBzD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.diff = diff;
|
|
4
|
+
exports.optimizePatches = optimizePatches;
|
|
5
|
+
const cell_js_1 = require("./cell.js");
|
|
6
|
+
// Compare front (current screen) vs back (desired screen)
|
|
7
|
+
// Return minimal set of patches needed to update the screen
|
|
8
|
+
function diff(front, back) {
|
|
9
|
+
const patches = [];
|
|
10
|
+
const rows = Math.min(front.length, back.length);
|
|
11
|
+
for (let row = 0; row < rows; row++) {
|
|
12
|
+
const frontRow = front[row];
|
|
13
|
+
const backRow = back[row];
|
|
14
|
+
const cols = Math.min(frontRow.length, backRow.length);
|
|
15
|
+
let currentPatch = null;
|
|
16
|
+
for (let col = 0; col < cols; col++) {
|
|
17
|
+
if (!(0, cell_js_1.cellsEqual)(frontRow[col], backRow[col])) {
|
|
18
|
+
if (currentPatch && currentPatch.row === row && currentPatch.col + currentPatch.cells.length === col) {
|
|
19
|
+
// Extend current run
|
|
20
|
+
currentPatch.cells.push(backRow[col]);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
// Start a new patch
|
|
24
|
+
currentPatch = { row, col, cells: [backRow[col]] };
|
|
25
|
+
patches.push(currentPatch);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
// Unchanged — break the current run
|
|
30
|
+
currentPatch = null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return patches;
|
|
35
|
+
}
|
|
36
|
+
// Merge patches that are adjacent in the same row
|
|
37
|
+
function optimizePatches(patches) {
|
|
38
|
+
if (patches.length === 0)
|
|
39
|
+
return [];
|
|
40
|
+
const result = [];
|
|
41
|
+
let current = { ...patches[0], cells: [...patches[0].cells] };
|
|
42
|
+
for (let i = 1; i < patches.length; i++) {
|
|
43
|
+
const next = patches[i];
|
|
44
|
+
if (next.row === current.row && current.col + current.cells.length === next.col) {
|
|
45
|
+
current.cells = current.cells.concat(next.cells);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
result.push(current);
|
|
49
|
+
current = { ...next, cells: [...next.cells] };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
result.push(current);
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/renderer/diff.ts"],"names":[],"mappings":";;AAUA,oBA6BC;AAGD,0CAkBC;AA5DD,uCAAoD;AAQpD,0DAA0D;AAC1D,4DAA4D;AAC5D,SAAgB,IAAI,CAAC,KAAY,EAAE,IAAW;IAC5C,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEjD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAEvD,IAAI,YAAY,GAAiB,IAAI,CAAC;QAEtC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,IAAA,oBAAU,EAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7C,IAAI,YAAY,IAAI,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACrG,qBAAqB;oBACrB,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,oBAAoB;oBACpB,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACnD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,oCAAoC;gBACpC,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kDAAkD;AAClD,SAAgB,eAAe,CAAC,OAAgB;IAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IAE9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YAChF,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAErB,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type NodeType = 'root' | 'box' | 'text';
|
|
2
|
+
export interface DOMNode {
|
|
3
|
+
type: NodeType;
|
|
4
|
+
parent: DOMNode | null;
|
|
5
|
+
children: DOMNode[];
|
|
6
|
+
style?: import('./layout.js').BoxStyle;
|
|
7
|
+
text?: string;
|
|
8
|
+
textStyle?: {
|
|
9
|
+
fg?: import('./cell.js').Color | null;
|
|
10
|
+
bg?: import('./cell.js').Color | null;
|
|
11
|
+
bold?: boolean;
|
|
12
|
+
dim?: boolean;
|
|
13
|
+
italic?: boolean;
|
|
14
|
+
underline?: boolean;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export declare function createNode(type: NodeType): DOMNode;
|
|
18
|
+
export declare function appendChild(parent: DOMNode, child: DOMNode): void;
|
|
19
|
+
export declare function removeChild(parent: DOMNode, child: DOMNode): void;
|
|
20
|
+
export declare function insertBefore(parent: DOMNode, child: DOMNode, before: DOMNode): void;
|
|
21
|
+
//# sourceMappingURL=dom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/renderer/dom.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,OAAO,EAAE,CAAC;IAGpB,KAAK,CAAC,EAAE,OAAO,aAAa,EAAE,QAAQ,CAAC;IAGvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE;QACV,EAAE,CAAC,EAAE,OAAO,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC;QACtC,EAAE,CAAC,EAAE,OAAO,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAElD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAGjE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAMjE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAQnF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createNode = createNode;
|
|
4
|
+
exports.appendChild = appendChild;
|
|
5
|
+
exports.removeChild = removeChild;
|
|
6
|
+
exports.insertBefore = insertBefore;
|
|
7
|
+
function createNode(type) {
|
|
8
|
+
return { type, parent: null, children: [] };
|
|
9
|
+
}
|
|
10
|
+
function appendChild(parent, child) {
|
|
11
|
+
child.parent = parent;
|
|
12
|
+
parent.children.push(child);
|
|
13
|
+
}
|
|
14
|
+
function removeChild(parent, child) {
|
|
15
|
+
const idx = parent.children.indexOf(child);
|
|
16
|
+
if (idx !== -1) {
|
|
17
|
+
parent.children.splice(idx, 1);
|
|
18
|
+
child.parent = null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function insertBefore(parent, child, before) {
|
|
22
|
+
const idx = parent.children.indexOf(before);
|
|
23
|
+
if (idx !== -1) {
|
|
24
|
+
parent.children.splice(idx, 0, child);
|
|
25
|
+
child.parent = parent;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
appendChild(parent, child);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=dom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/renderer/dom.ts"],"names":[],"mappings":";;AAsBA,gCAEC;AAED,kCAGC;AAED,kCAMC;AAED,oCAQC;AAzBD,SAAgB,UAAU,CAAC,IAAc;IACvC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC9C,CAAC;AAED,SAAgB,WAAW,CAAC,MAAe,EAAE,KAAc;IACzD,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,WAAW,CAAC,MAAe,EAAE,KAAc;IACzD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC/B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,MAAe,EAAE,KAAc,EAAE,MAAe;IAC3E,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACtC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './cell.js';
|
|
2
|
+
export * from './diff.js';
|
|
3
|
+
export * from './terminal.js';
|
|
4
|
+
export * from './loop.js';
|
|
5
|
+
export * from './input.js';
|
|
6
|
+
export * from './screen.js';
|
|
7
|
+
export * from './layout.js';
|
|
8
|
+
export * from './dom.js';
|
|
9
|
+
export * from './reconciler.js';
|
|
10
|
+
export * from './ink.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Re-export everything from Phase 1
|
|
18
|
+
__exportStar(require("./cell.js"), exports);
|
|
19
|
+
__exportStar(require("./diff.js"), exports);
|
|
20
|
+
__exportStar(require("./terminal.js"), exports);
|
|
21
|
+
__exportStar(require("./loop.js"), exports);
|
|
22
|
+
__exportStar(require("./input.js"), exports);
|
|
23
|
+
__exportStar(require("./screen.js"), exports);
|
|
24
|
+
__exportStar(require("./layout.js"), exports);
|
|
25
|
+
// Phase 4: React reconciler + virtual DOM
|
|
26
|
+
__exportStar(require("./dom.js"), exports);
|
|
27
|
+
__exportStar(require("./reconciler.js"), exports);
|
|
28
|
+
__exportStar(require("./ink.js"), exports);
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,4CAA0B;AAC1B,4CAA0B;AAC1B,gDAA8B;AAC9B,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B;AAC5B,8CAA4B;AAC5B,0CAA0C;AAC1C,2CAAyB;AACzB,kDAAgC;AAChC,2CAAyB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { BoxStyle } from './layout.js';
|
|
3
|
+
import type { Color } from './cell.js';
|
|
4
|
+
export interface RenderOptions {
|
|
5
|
+
stdout?: NodeJS.WriteStream;
|
|
6
|
+
rows?: number;
|
|
7
|
+
cols?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface RenderInstance {
|
|
10
|
+
update(node: React.ReactElement): void;
|
|
11
|
+
unmount(): void;
|
|
12
|
+
waitUntilExit(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export declare function render(node: React.ReactElement, options?: RenderOptions): RenderInstance;
|
|
15
|
+
export interface BoxProps extends BoxStyle {
|
|
16
|
+
style?: BoxStyle;
|
|
17
|
+
children?: React.ReactNode;
|
|
18
|
+
}
|
|
19
|
+
export declare function Box({ style, children, ...flatProps }: BoxProps): React.ReactElement<{
|
|
20
|
+
style: BoxStyle;
|
|
21
|
+
}, string | React.JSXElementConstructor<any>>;
|
|
22
|
+
export interface TextProps {
|
|
23
|
+
color?: Color | string;
|
|
24
|
+
bold?: boolean;
|
|
25
|
+
dim?: boolean;
|
|
26
|
+
dimColor?: boolean;
|
|
27
|
+
italic?: boolean;
|
|
28
|
+
underline?: boolean;
|
|
29
|
+
inverse?: boolean;
|
|
30
|
+
children?: React.ReactNode;
|
|
31
|
+
}
|
|
32
|
+
export declare function Text({ color, bold, dim, dimColor, italic, underline, inverse, children }: TextProps): React.ReactElement<{
|
|
33
|
+
color: string | Color | undefined;
|
|
34
|
+
bold: boolean | undefined;
|
|
35
|
+
dim: boolean | undefined;
|
|
36
|
+
italic: boolean | undefined;
|
|
37
|
+
underline: boolean | undefined;
|
|
38
|
+
inverse: boolean | undefined;
|
|
39
|
+
}, string | React.JSXElementConstructor<any>>;
|
|
40
|
+
//# sourceMappingURL=ink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ink.d.ts","sourceRoot":"","sources":["../../src/renderer/ink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IACvC,OAAO,IAAI,IAAI,CAAC;IAChB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,GAAE,aAAkB,GAAG,cAAc,CAsC5F;AAGD,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAGD,wBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,EAAE,QAAQ;;8CAI9D;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS;;;;;;;8CAInG"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.render = render;
|
|
7
|
+
exports.Box = Box;
|
|
8
|
+
exports.Text = Text;
|
|
9
|
+
const react_1 = __importDefault(require("react"));
|
|
10
|
+
const reconciler_js_1 = require("./reconciler.js");
|
|
11
|
+
const dom_js_1 = require("./dom.js");
|
|
12
|
+
const cell_js_1 = require("./cell.js");
|
|
13
|
+
const diff_js_1 = require("./diff.js");
|
|
14
|
+
const terminal_js_1 = require("./terminal.js");
|
|
15
|
+
const loop_js_1 = require("./loop.js");
|
|
16
|
+
function render(node, options = {}) {
|
|
17
|
+
const stdout = options.stdout ?? process.stdout;
|
|
18
|
+
const rows = options.rows ?? stdout.rows ?? 24;
|
|
19
|
+
const cols = options.cols ?? stdout.columns ?? 80;
|
|
20
|
+
let frontFrame = (0, cell_js_1.createFrame)(rows, cols);
|
|
21
|
+
const container = (0, dom_js_1.createNode)('root');
|
|
22
|
+
const { schedule } = (0, loop_js_1.createRenderLoop)(() => {
|
|
23
|
+
// Phase 4 stub — full render implementation in Phase 6
|
|
24
|
+
const backFrame = (0, cell_js_1.createFrame)(rows, cols);
|
|
25
|
+
const patches = (0, diff_js_1.diff)(frontFrame, backFrame);
|
|
26
|
+
(0, terminal_js_1.writePatches)(patches, stdout);
|
|
27
|
+
frontFrame = backFrame;
|
|
28
|
+
});
|
|
29
|
+
(0, reconciler_js_1.setOnCommit)(schedule);
|
|
30
|
+
// react-reconciler v0.26 createContainer(containerInfo, tag, hydrate, hydrationCallbacks)
|
|
31
|
+
const fiberRoot = reconciler_js_1.reconciler.createContainer(container, 0, false, null);
|
|
32
|
+
reconciler_js_1.reconciler.updateContainer(node, fiberRoot, null, null);
|
|
33
|
+
let exitResolve;
|
|
34
|
+
const exitPromise = new Promise(resolve => { exitResolve = resolve; });
|
|
35
|
+
return {
|
|
36
|
+
update(newNode) {
|
|
37
|
+
reconciler_js_1.reconciler.updateContainer(newNode, fiberRoot, null, null);
|
|
38
|
+
},
|
|
39
|
+
unmount() {
|
|
40
|
+
reconciler_js_1.reconciler.updateContainer(null, fiberRoot, null, null);
|
|
41
|
+
exitResolve();
|
|
42
|
+
},
|
|
43
|
+
waitUntilExit() {
|
|
44
|
+
return exitPromise;
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// Primitive components — translated by the reconciler
|
|
49
|
+
function Box({ style, children, ...flatProps }) {
|
|
50
|
+
// Merge flat layout props into style
|
|
51
|
+
const mergedStyle = { ...flatProps, ...style };
|
|
52
|
+
return react_1.default.createElement('arc-box', { style: mergedStyle }, children);
|
|
53
|
+
}
|
|
54
|
+
function Text({ color, bold, dim, dimColor, italic, underline, inverse, children }) {
|
|
55
|
+
// dimColor is an ink-compat alias for dim
|
|
56
|
+
const resolvedDim = dim ?? dimColor;
|
|
57
|
+
return react_1.default.createElement('arc-text', { color, bold, dim: resolvedDim, italic, underline, inverse }, children);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=ink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ink.js","sourceRoot":"","sources":["../../src/renderer/ink.ts"],"names":[],"mappings":";;;;;AAsBA,wBAsCC;AASD,kBAIC;AAaD,oBAIC;AA1FD,kDAA0B;AAC1B,mDAA0D;AAC1D,qCAA+C;AAC/C,uCAA+C;AAC/C,uCAAiC;AACjC,+CAA6C;AAC7C,uCAA6C;AAgB7C,SAAgB,MAAM,CAAC,IAAwB,EAAE,UAAyB,EAAE;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAK,MAAiD,CAAC,IAAI,IAAI,EAAE,CAAC;IAC3F,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAK,MAAoD,CAAC,OAAO,IAAI,EAAE,CAAC;IAEjG,IAAI,UAAU,GAAU,IAAA,qBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,SAAS,GAAY,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;IAE9C,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,0BAAgB,EAAC,GAAG,EAAE;QACzC,uDAAuD;QACvD,MAAM,SAAS,GAAG,IAAA,qBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAA,cAAI,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5C,IAAA,0BAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9B,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAA,2BAAW,EAAC,QAAQ,CAAC,CAAC;IAEtB,0FAA0F;IAC1F,MAAM,SAAS,GAAG,0BAAU,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAExE,0BAAU,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAExD,IAAI,WAAwB,CAAC;IAC7B,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7E,OAAO;QACL,MAAM,CAAC,OAA2B;YAChC,0BAAU,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO;YACL,0BAAU,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACxD,WAAW,EAAE,CAAC;QAChB,CAAC;QACD,aAAa;YACX,OAAO,WAAW,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AAQD,sDAAsD;AACtD,SAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAY;IAC7D,qCAAqC;IACrC,MAAM,WAAW,GAAa,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC;IACzD,OAAO,eAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAaD,SAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAa;IAClG,0CAA0C;IAC1C,MAAM,WAAW,GAAG,GAAG,IAAI,QAAQ,CAAC;IACpC,OAAO,eAAK,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAClH,CAAC"}
|