@buoy-gg/console 4.0.2
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 +58 -0
- package/README.md +55 -0
- package/lib/commonjs/components/ConsoleIcon.js +47 -0
- package/lib/commonjs/components/ConsoleIcon.js.map +1 -0
- package/lib/commonjs/components/ConsoleLogList.js +145 -0
- package/lib/commonjs/components/ConsoleLogList.js.map +1 -0
- package/lib/commonjs/components/ConsoleModal.js +48 -0
- package/lib/commonjs/components/ConsoleModal.js.map +1 -0
- package/lib/commonjs/components/ConsoleRoot.js +28 -0
- package/lib/commonjs/components/ConsoleRoot.js.map +1 -0
- package/lib/commonjs/devtools/ConsoleBody.js +235 -0
- package/lib/commonjs/devtools/ConsoleBody.js.map +1 -0
- package/lib/commonjs/devtools/ConsoleHeader.js +146 -0
- package/lib/commonjs/devtools/ConsoleHeader.js.map +1 -0
- package/lib/commonjs/devtools/ConsoleMessageRow.js +338 -0
- package/lib/commonjs/devtools/ConsoleMessageRow.js.map +1 -0
- package/lib/commonjs/devtools/ConsoleValue.js +254 -0
- package/lib/commonjs/devtools/ConsoleValue.js.map +1 -0
- package/lib/commonjs/devtools/ConsoleView.js +51 -0
- package/lib/commonjs/devtools/ConsoleView.js.map +1 -0
- package/lib/commonjs/devtools/consoleFilter.js +125 -0
- package/lib/commonjs/devtools/consoleFilter.js.map +1 -0
- package/lib/commonjs/devtools/consoleFormat.js +313 -0
- package/lib/commonjs/devtools/consoleFormat.js.map +1 -0
- package/lib/commonjs/devtools/origin.js +191 -0
- package/lib/commonjs/devtools/origin.js.map +1 -0
- package/lib/commonjs/devtools/theme.js +143 -0
- package/lib/commonjs/devtools/theme.js.map +1 -0
- package/lib/commonjs/devtools/useConsoleController.js +82 -0
- package/lib/commonjs/devtools/useConsoleController.js.map +1 -0
- package/lib/commonjs/devtools/useConsoleMessages.js +241 -0
- package/lib/commonjs/devtools/useConsoleMessages.js.map +1 -0
- package/lib/commonjs/hooks/useConsoleLogs.js +23 -0
- package/lib/commonjs/hooks/useConsoleLogs.js.map +1 -0
- package/lib/commonjs/index.js +175 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/preset.js +45 -0
- package/lib/commonjs/preset.js.map +1 -0
- package/lib/commonjs/store/consoleLogStore.js +298 -0
- package/lib/commonjs/store/consoleLogStore.js.map +1 -0
- package/lib/commonjs/store/sanitize.js +64 -0
- package/lib/commonjs/store/sanitize.js.map +1 -0
- package/lib/commonjs/sync/consoleSyncAdapter.js +47 -0
- package/lib/commonjs/sync/consoleSyncAdapter.js.map +1 -0
- package/lib/module/components/ConsoleIcon.js +42 -0
- package/lib/module/components/ConsoleIcon.js.map +1 -0
- package/lib/module/components/ConsoleLogList.js +140 -0
- package/lib/module/components/ConsoleLogList.js.map +1 -0
- package/lib/module/components/ConsoleModal.js +44 -0
- package/lib/module/components/ConsoleModal.js.map +1 -0
- package/lib/module/components/ConsoleRoot.js +25 -0
- package/lib/module/components/ConsoleRoot.js.map +1 -0
- package/lib/module/devtools/ConsoleBody.js +230 -0
- package/lib/module/devtools/ConsoleBody.js.map +1 -0
- package/lib/module/devtools/ConsoleHeader.js +141 -0
- package/lib/module/devtools/ConsoleHeader.js.map +1 -0
- package/lib/module/devtools/ConsoleMessageRow.js +333 -0
- package/lib/module/devtools/ConsoleMessageRow.js.map +1 -0
- package/lib/module/devtools/ConsoleValue.js +249 -0
- package/lib/module/devtools/ConsoleValue.js.map +1 -0
- package/lib/module/devtools/ConsoleView.js +46 -0
- package/lib/module/devtools/ConsoleView.js.map +1 -0
- package/lib/module/devtools/consoleFilter.js +119 -0
- package/lib/module/devtools/consoleFilter.js.map +1 -0
- package/lib/module/devtools/consoleFormat.js +309 -0
- package/lib/module/devtools/consoleFormat.js.map +1 -0
- package/lib/module/devtools/origin.js +183 -0
- package/lib/module/devtools/origin.js.map +1 -0
- package/lib/module/devtools/theme.js +140 -0
- package/lib/module/devtools/theme.js.map +1 -0
- package/lib/module/devtools/useConsoleController.js +79 -0
- package/lib/module/devtools/useConsoleController.js.map +1 -0
- package/lib/module/devtools/useConsoleMessages.js +238 -0
- package/lib/module/devtools/useConsoleMessages.js.map +1 -0
- package/lib/module/hooks/useConsoleLogs.js +19 -0
- package/lib/module/hooks/useConsoleLogs.js.map +1 -0
- package/lib/module/index.js +52 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/preset.js +40 -0
- package/lib/module/preset.js.map +1 -0
- package/lib/module/store/consoleLogStore.js +284 -0
- package/lib/module/store/consoleLogStore.js.map +1 -0
- package/lib/module/store/sanitize.js +60 -0
- package/lib/module/store/sanitize.js.map +1 -0
- package/lib/module/sync/consoleSyncAdapter.js +43 -0
- package/lib/module/sync/consoleSyncAdapter.js.map +1 -0
- package/lib/typescript/components/ConsoleIcon.d.ts +14 -0
- package/lib/typescript/components/ConsoleIcon.d.ts.map +1 -0
- package/lib/typescript/components/ConsoleLogList.d.ts +8 -0
- package/lib/typescript/components/ConsoleLogList.d.ts.map +1 -0
- package/lib/typescript/components/ConsoleModal.d.ts +18 -0
- package/lib/typescript/components/ConsoleModal.d.ts.map +1 -0
- package/lib/typescript/components/ConsoleRoot.d.ts +14 -0
- package/lib/typescript/components/ConsoleRoot.d.ts.map +1 -0
- package/lib/typescript/devtools/ConsoleBody.d.ts +11 -0
- package/lib/typescript/devtools/ConsoleBody.d.ts.map +1 -0
- package/lib/typescript/devtools/ConsoleHeader.d.ts +17 -0
- package/lib/typescript/devtools/ConsoleHeader.d.ts.map +1 -0
- package/lib/typescript/devtools/ConsoleMessageRow.d.ts +20 -0
- package/lib/typescript/devtools/ConsoleMessageRow.d.ts.map +1 -0
- package/lib/typescript/devtools/ConsoleValue.d.ts +21 -0
- package/lib/typescript/devtools/ConsoleValue.d.ts.map +1 -0
- package/lib/typescript/devtools/ConsoleView.d.ts +10 -0
- package/lib/typescript/devtools/ConsoleView.d.ts.map +1 -0
- package/lib/typescript/devtools/consoleFilter.d.ts +31 -0
- package/lib/typescript/devtools/consoleFilter.d.ts.map +1 -0
- package/lib/typescript/devtools/consoleFormat.d.ts +29 -0
- package/lib/typescript/devtools/consoleFormat.d.ts.map +1 -0
- package/lib/typescript/devtools/origin.d.ts +39 -0
- package/lib/typescript/devtools/origin.d.ts.map +1 -0
- package/lib/typescript/devtools/theme.d.ts +57 -0
- package/lib/typescript/devtools/theme.d.ts.map +1 -0
- package/lib/typescript/devtools/useConsoleController.d.ts +35 -0
- package/lib/typescript/devtools/useConsoleController.d.ts.map +1 -0
- package/lib/typescript/devtools/useConsoleMessages.d.ts +74 -0
- package/lib/typescript/devtools/useConsoleMessages.d.ts.map +1 -0
- package/lib/typescript/hooks/useConsoleLogs.d.ts +11 -0
- package/lib/typescript/hooks/useConsoleLogs.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +26 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/preset.d.ts +38 -0
- package/lib/typescript/preset.d.ts.map +1 -0
- package/lib/typescript/store/consoleLogStore.d.ts +71 -0
- package/lib/typescript/store/consoleLogStore.d.ts.map +1 -0
- package/lib/typescript/store/sanitize.d.ts +11 -0
- package/lib/typescript/store/sanitize.d.ts.map +1 -0
- package/lib/typescript/sync/consoleSyncAdapter.d.ts +30 -0
- package/lib/typescript/sync/consoleSyncAdapter.d.ts.map +1 -0
- package/package.json +56 -0
- package/src/components/ConsoleIcon.tsx +49 -0
- package/src/components/ConsoleLogList.tsx +133 -0
- package/src/components/ConsoleModal.tsx +48 -0
- package/src/components/ConsoleRoot.tsx +25 -0
- package/src/devtools/ConsoleBody.tsx +225 -0
- package/src/devtools/ConsoleHeader.tsx +149 -0
- package/src/devtools/ConsoleMessageRow.tsx +345 -0
- package/src/devtools/ConsoleValue.tsx +265 -0
- package/src/devtools/ConsoleView.tsx +41 -0
- package/src/devtools/consoleFilter.ts +123 -0
- package/src/devtools/consoleFormat.ts +314 -0
- package/src/devtools/origin.ts +190 -0
- package/src/devtools/theme.ts +137 -0
- package/src/devtools/useConsoleController.ts +104 -0
- package/src/devtools/useConsoleMessages.ts +337 -0
- package/src/hooks/useConsoleLogs.ts +26 -0
- package/src/index.tsx +69 -0
- package/src/preset.tsx +35 -0
- package/src/store/consoleLogStore.ts +346 -0
- package/src/store/sanitize.ts +58 -0
- package/src/sync/consoleSyncAdapter.ts +49 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Console palette — a dark theme matched to Buoy's shared design tokens
|
|
5
|
+
* (`macOSColors` in @buoy-gg/shared-ui) so the console reads as part of the
|
|
6
|
+
* tool suite, tuned for contrast per WCAG AA:
|
|
7
|
+
* - body text #F5F5F7 on #0A0A0C ≈ 17:1
|
|
8
|
+
* - secondary #A1A1A6 on #0A0A0C ≈ 7:1
|
|
9
|
+
* - links #40CCFF on #0A0A0C ≈ 9:1
|
|
10
|
+
* - dividers / nesting guides lightened to ~#3A3A40 so lines are clearly
|
|
11
|
+
* visible against the near-black surface.
|
|
12
|
+
* The light values (the exact DevTools light tokens) are kept for a future
|
|
13
|
+
* toggle.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { Platform } from "react-native";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Monospace font. On the desktop dashboard (react-native-web) the generic
|
|
20
|
+
* `"monospace"` resolves to a thin, poorly-hinted browser default that's hard
|
|
21
|
+
* to read at small sizes — so we use a curated mono stack there. Native (mobile)
|
|
22
|
+
* keeps its system monospace, which already renders well.
|
|
23
|
+
*/
|
|
24
|
+
export const monoFont = Platform.select({
|
|
25
|
+
web: 'ui-monospace, "SF Mono", "SFMono-Regular", Menlo, Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Liberation Mono", monospace',
|
|
26
|
+
default: "monospace"
|
|
27
|
+
}) ?? "monospace";
|
|
28
|
+
/** Light theme (active) — resolved DevTools light-theme tokens. */
|
|
29
|
+
export const lightTheme = {
|
|
30
|
+
baseContainer: "#ffffff",
|
|
31
|
+
// --sys-color-cdt-base-container (neutral99 ≈ white)
|
|
32
|
+
surfaceError: "#fceaea",
|
|
33
|
+
// --sys-color-surface-error rgb(252 235 235)
|
|
34
|
+
surfaceYellow: "#fef6d5",
|
|
35
|
+
// --sys-color-surface-yellow rgb(254 246 213)
|
|
36
|
+
divider: "#e8eaed",
|
|
37
|
+
// --sys-color-divider (primary90, lightened for contrast)
|
|
38
|
+
inputBackground: "#f1f3f4",
|
|
39
|
+
menuBackground: "#ffffff",
|
|
40
|
+
onSurface: "#1f1f1f",
|
|
41
|
+
// neutral10
|
|
42
|
+
onSurfaceYellow: "#3e2f00",
|
|
43
|
+
// yellow20
|
|
44
|
+
onErrorContainer: "#410e0b",
|
|
45
|
+
// error10
|
|
46
|
+
tokenSubtle: "#757575",
|
|
47
|
+
// neutral50
|
|
48
|
+
primary: "#0b57d0",
|
|
49
|
+
// primary40 (links)
|
|
50
|
+
valueNumber: "#0842a0",
|
|
51
|
+
// token-attribute-value (blue30)
|
|
52
|
+
valueString: "#c5221f",
|
|
53
|
+
// token-property-special (error50, slightly deepened)
|
|
54
|
+
valueBigint: "#146c2e",
|
|
55
|
+
// token-comment (green40)
|
|
56
|
+
valueNode: "#1f1f1f",
|
|
57
|
+
// token-variable (= on-surface)
|
|
58
|
+
valueNullish: "rgba(31,31,31,0.5)",
|
|
59
|
+
// state-disabled
|
|
60
|
+
valuePreview: "rgba(31,31,31,0.62)"
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/** Dark theme (active) — matched to Buoy macOSColors, contrast-tuned. */
|
|
64
|
+
export const darkTheme = {
|
|
65
|
+
baseContainer: "#0A0A0C",
|
|
66
|
+
// macOSColors.background.base
|
|
67
|
+
surfaceError: "rgba(255,69,58,0.15)",
|
|
68
|
+
// semantic.errorBackground
|
|
69
|
+
surfaceYellow: "rgba(255,235,59,0.13)",
|
|
70
|
+
// semantic.warningBackground
|
|
71
|
+
divider: "#3A3A40",
|
|
72
|
+
// lightened from border.default (#2D2D2F) for visible lines
|
|
73
|
+
inputBackground: "#26262A",
|
|
74
|
+
// background.input
|
|
75
|
+
menuBackground: "#1A1A1C",
|
|
76
|
+
// background.card
|
|
77
|
+
onSurface: "#F5F5F7",
|
|
78
|
+
// text.primary (~17:1)
|
|
79
|
+
onSurfaceYellow: "#FFE9A3",
|
|
80
|
+
// light warm yellow on dark warning row
|
|
81
|
+
onErrorContainer: "#FFB4AB",
|
|
82
|
+
// light red on dark error row
|
|
83
|
+
tokenSubtle: "#A1A1A6",
|
|
84
|
+
// text.secondary (~7:1 — timestamps, previews)
|
|
85
|
+
primary: "#40CCFF",
|
|
86
|
+
// semantic.infoLight (links, ~9:1)
|
|
87
|
+
valueNumber: "#FF9F1C",
|
|
88
|
+
// orange (number + boolean)
|
|
89
|
+
valueString: "#7EE787",
|
|
90
|
+
// green (string/regexp/symbol)
|
|
91
|
+
valueBigint: "#A1A1A6",
|
|
92
|
+
// muted (bigint)
|
|
93
|
+
valueNode: "#F5F5F7",
|
|
94
|
+
// default text (DOM node / variable)
|
|
95
|
+
valueNullish: "#8E8E93",
|
|
96
|
+
// text.muted (null/undefined)
|
|
97
|
+
valuePreview: "#A1A1A6" // object preview (italic)
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/** The active console palette. */
|
|
101
|
+
export const consoleTheme = darkTheme;
|
|
102
|
+
|
|
103
|
+
/** ANSI 16-color palette (dark theme), from consoleView.css `--console-color-*`. */
|
|
104
|
+
export const ansiColors = {
|
|
105
|
+
black: "#000",
|
|
106
|
+
red: "rgb(237 78 76)",
|
|
107
|
+
green: "rgb(1 200 1)",
|
|
108
|
+
yellow: "rgb(210 192 87)",
|
|
109
|
+
blue: "rgb(39 116 240)",
|
|
110
|
+
magenta: "rgb(161 66 244)",
|
|
111
|
+
cyan: "rgb(18 181 203)",
|
|
112
|
+
gray: "rgb(207 208 208)",
|
|
113
|
+
darkgray: "rgb(137 137 137)",
|
|
114
|
+
lightred: "rgb(242 139 130)",
|
|
115
|
+
lightgreen: "rgb(161 247 181)",
|
|
116
|
+
lightyellow: "rgb(221 251 85)",
|
|
117
|
+
lightblue: "rgb(102 157 246)",
|
|
118
|
+
lightmagenta: "rgb(214 112 214)",
|
|
119
|
+
lightcyan: "rgb(132 240 255)",
|
|
120
|
+
white: "#fff"
|
|
121
|
+
};
|
|
122
|
+
export const levelStyles = {
|
|
123
|
+
verbose: {
|
|
124
|
+
text: consoleTheme.tokenSubtle
|
|
125
|
+
},
|
|
126
|
+
info: {
|
|
127
|
+
text: consoleTheme.onSurface
|
|
128
|
+
},
|
|
129
|
+
warning: {
|
|
130
|
+
background: consoleTheme.surfaceYellow,
|
|
131
|
+
text: consoleTheme.onSurfaceYellow,
|
|
132
|
+
icon: "warning"
|
|
133
|
+
},
|
|
134
|
+
error: {
|
|
135
|
+
background: consoleTheme.surfaceError,
|
|
136
|
+
text: consoleTheme.onErrorContainer,
|
|
137
|
+
icon: "error"
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Platform","monoFont","select","web","default","lightTheme","baseContainer","surfaceError","surfaceYellow","divider","inputBackground","menuBackground","onSurface","onSurfaceYellow","onErrorContainer","tokenSubtle","primary","valueNumber","valueString","valueBigint","valueNode","valueNullish","valuePreview","darkTheme","consoleTheme","ansiColors","black","red","green","yellow","blue","magenta","cyan","gray","darkgray","lightred","lightgreen","lightyellow","lightblue","lightmagenta","lightcyan","white","levelStyles","verbose","text","info","warning","background","icon","error"],"sourceRoot":"../../../src","sources":["devtools/theme.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* useConsoleController — owns all Console view state so the header and the body
|
|
5
|
+
* can be composed separately (the shared ModalHeader pattern: controls live in
|
|
6
|
+
* the modal header's `customContent`, the list/sub-views live in the body).
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { useCallback, useState } from "react";
|
|
10
|
+
import { useConsoleMessages } from "./useConsoleMessages";
|
|
11
|
+
import { DEFAULT_LEVELS, levelMenuSummary } from "./consoleFilter";
|
|
12
|
+
import { clearEntries } from "../store/consoleLogStore";
|
|
13
|
+
|
|
14
|
+
/** Which screen the modal body shows (list, or the back-navigable filters page). */
|
|
15
|
+
|
|
16
|
+
export function useConsoleController() {
|
|
17
|
+
const [query, setQuery] = useState("");
|
|
18
|
+
const [searchActive, setSearchActive] = useState(false);
|
|
19
|
+
const [levelsMask, setLevelsMask] = useState({
|
|
20
|
+
...DEFAULT_LEVELS
|
|
21
|
+
});
|
|
22
|
+
const [showTimestamps, setShowTimestamps] = useState(false);
|
|
23
|
+
const [collapsedOverrides, setCollapsedOverrides] = useState({});
|
|
24
|
+
const [layoutMode, setLayoutMode] = useState("chrono");
|
|
25
|
+
const [view, setView] = useState("list");
|
|
26
|
+
const [clusterExpanded, setClusterExpanded] = useState({});
|
|
27
|
+
const {
|
|
28
|
+
rows,
|
|
29
|
+
hiddenCount
|
|
30
|
+
} = useConsoleMessages({
|
|
31
|
+
levelsMask,
|
|
32
|
+
query,
|
|
33
|
+
showTimestamps,
|
|
34
|
+
collapsedOverrides,
|
|
35
|
+
groupDimension: "function",
|
|
36
|
+
layoutMode,
|
|
37
|
+
clusterExpanded
|
|
38
|
+
});
|
|
39
|
+
const onToggleGroup = useCallback((groupId, currentlyCollapsed) => {
|
|
40
|
+
setCollapsedOverrides(prev => ({
|
|
41
|
+
...prev,
|
|
42
|
+
[groupId]: !currentlyCollapsed
|
|
43
|
+
}));
|
|
44
|
+
}, []);
|
|
45
|
+
const onToggleCluster = useCallback(key => {
|
|
46
|
+
setClusterExpanded(prev => ({
|
|
47
|
+
...prev,
|
|
48
|
+
[key]: !(prev[key] ?? false)
|
|
49
|
+
}));
|
|
50
|
+
}, []);
|
|
51
|
+
const clear = useCallback(() => {
|
|
52
|
+
clearEntries();
|
|
53
|
+
setCollapsedOverrides({});
|
|
54
|
+
}, []);
|
|
55
|
+
const levelSummary = levelMenuSummary(levelsMask);
|
|
56
|
+
const isLevelCustom = levelSummary !== "All levels" && levelSummary !== "Default levels";
|
|
57
|
+
return {
|
|
58
|
+
query,
|
|
59
|
+
setQuery,
|
|
60
|
+
searchActive,
|
|
61
|
+
setSearchActive,
|
|
62
|
+
levelsMask,
|
|
63
|
+
setLevelsMask,
|
|
64
|
+
showTimestamps,
|
|
65
|
+
setShowTimestamps,
|
|
66
|
+
layoutMode,
|
|
67
|
+
setLayoutMode,
|
|
68
|
+
view,
|
|
69
|
+
setView,
|
|
70
|
+
rows,
|
|
71
|
+
hiddenCount,
|
|
72
|
+
onToggleGroup,
|
|
73
|
+
onToggleCluster,
|
|
74
|
+
clear,
|
|
75
|
+
levelSummary,
|
|
76
|
+
isLevelCustom
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=useConsoleController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useState","useConsoleMessages","DEFAULT_LEVELS","levelMenuSummary","clearEntries","useConsoleController","query","setQuery","searchActive","setSearchActive","levelsMask","setLevelsMask","showTimestamps","setShowTimestamps","collapsedOverrides","setCollapsedOverrides","layoutMode","setLayoutMode","view","setView","clusterExpanded","setClusterExpanded","rows","hiddenCount","groupDimension","onToggleGroup","groupId","currentlyCollapsed","prev","onToggleCluster","key","clear","levelSummary","isLevelCustom"],"sourceRoot":"../../../src","sources":["devtools/useConsoleController.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,EAAEC,QAAQ,QAA4C,OAAO;AACjF,SACEC,kBAAkB,QAGb,sBAAsB;AAC7B,SACEC,cAAc,EACdC,gBAAgB,QAEX,iBAAiB;AACxB,SAASC,YAAY,QAAQ,0BAA0B;;AAEvD;;AA2BA,OAAO,SAASC,oBAAoBA,CAAA,EAAsB;EACxD,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGP,QAAQ,CAAC,EAAE,CAAC;EACtC,MAAM,CAACQ,YAAY,EAAEC,eAAe,CAAC,GAAGT,QAAQ,CAAC,KAAK,CAAC;EACvD,MAAM,CAACU,UAAU,EAAEC,aAAa,CAAC,GAAGX,QAAQ,CAAa;IAAE,GAAGE;EAAe,CAAC,CAAC;EAC/E,MAAM,CAACU,cAAc,EAAEC,iBAAiB,CAAC,GAAGb,QAAQ,CAAC,KAAK,CAAC;EAC3D,MAAM,CAACc,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGf,QAAQ,CAA0B,CAAC,CAAC,CAAC;EACzF,MAAM,CAACgB,UAAU,EAAEC,aAAa,CAAC,GAAGjB,QAAQ,CAAa,QAAQ,CAAC;EAClE,MAAM,CAACkB,IAAI,EAAEC,OAAO,CAAC,GAAGnB,QAAQ,CAAmB,MAAM,CAAC;EAC1D,MAAM,CAACoB,eAAe,EAAEC,kBAAkB,CAAC,GAAGrB,QAAQ,CAA0B,CAAC,CAAC,CAAC;EAEnF,MAAM;IAAEsB,IAAI;IAAEC;EAAY,CAAC,GAAGtB,kBAAkB,CAAC;IAC/CS,UAAU;IACVJ,KAAK;IACLM,cAAc;IACdE,kBAAkB;IAClBU,cAAc,EAAE,UAAU;IAC1BR,UAAU;IACVI;EACF,CAAC,CAAC;EAEF,MAAMK,aAAa,GAAG1B,WAAW,CAAC,CAAC2B,OAAe,EAAEC,kBAA2B,KAAK;IAClFZ,qBAAqB,CAAEa,IAAI,KAAM;MAAE,GAAGA,IAAI;MAAE,CAACF,OAAO,GAAG,CAACC;IAAmB,CAAC,CAAC,CAAC;EAChF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,eAAe,GAAG9B,WAAW,CAAE+B,GAAW,IAAK;IACnDT,kBAAkB,CAAEO,IAAI,KAAM;MAAE,GAAGA,IAAI;MAAE,CAACE,GAAG,GAAG,EAAEF,IAAI,CAACE,GAAG,CAAC,IAAI,KAAK;IAAE,CAAC,CAAC,CAAC;EAC3E,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,KAAK,GAAGhC,WAAW,CAAC,MAAM;IAC9BK,YAAY,CAAC,CAAC;IACdW,qBAAqB,CAAC,CAAC,CAAC,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMiB,YAAY,GAAG7B,gBAAgB,CAACO,UAAU,CAAC;EACjD,MAAMuB,aAAa,GAAGD,YAAY,KAAK,YAAY,IAAIA,YAAY,KAAK,gBAAgB;EAExF,OAAO;IACL1B,KAAK;IACLC,QAAQ;IACRC,YAAY;IACZC,eAAe;IACfC,UAAU;IACVC,aAAa;IACbC,cAAc;IACdC,iBAAiB;IACjBG,UAAU;IACVC,aAAa;IACbC,IAAI;IACJC,OAAO;IACPG,IAAI;IACJC,WAAW;IACXE,aAAa;IACbI,eAAe;IACfE,KAAK;IACLC,YAAY;IACZC;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* useConsoleMessages — derives the displayed row model from raw captured
|
|
5
|
+
* entries, mirroring DevTools `ConsoleView.updateMessageList`:
|
|
6
|
+
*
|
|
7
|
+
* - level + text filtering (consoleFilter)
|
|
8
|
+
* - consecutive-identical collapse into a repeat-count badge (when timestamps
|
|
9
|
+
* are off, matching `tryToCollapseMessages`)
|
|
10
|
+
* - console.group / groupCollapsed nesting + collapse/expand
|
|
11
|
+
*
|
|
12
|
+
* Returns the visible rows plus the count of messages hidden by filters
|
|
13
|
+
* ("N hidden"), and per-level totals for the toolbar.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { useMemo, useSyncExternalStore } from "react";
|
|
17
|
+
import { subscribe, getEntries } from "../store/consoleLogStore";
|
|
18
|
+
import { parseFilterQuery, shouldBeVisible } from "./consoleFilter";
|
|
19
|
+
import { sourceKey, sourceLabel, colorForKey, bracketGlyph } from "./origin";
|
|
20
|
+
|
|
21
|
+
/** How the origin gutter is laid out. */
|
|
22
|
+
|
|
23
|
+
/** One swimlane gutter cell. */
|
|
24
|
+
|
|
25
|
+
const MAX_LANES = 5;
|
|
26
|
+
|
|
27
|
+
/** Grouped mode collapses any source cluster larger than this into a header. */
|
|
28
|
+
const CLUSTER_THRESHOLD = 5;
|
|
29
|
+
|
|
30
|
+
/** First pass: tag each row with its origin source key, color, and label. */
|
|
31
|
+
function computeSourceInfo(rows, dim) {
|
|
32
|
+
for (const row of rows) {
|
|
33
|
+
const key = sourceKey(row.entry.origin, dim);
|
|
34
|
+
row.sourceKey = key;
|
|
35
|
+
row.originColor = key ? colorForKey(key) : undefined;
|
|
36
|
+
row.originLabel = dim === "off" ? undefined : sourceLabel(row.entry.origin, dim);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** lnav single-column gutter: bracket consecutive same-source runs. */
|
|
41
|
+
function attachContiguousBrackets(rows) {
|
|
42
|
+
for (let i = 0; i < rows.length; i++) {
|
|
43
|
+
const key = rows[i].sourceKey;
|
|
44
|
+
if (key == null) {
|
|
45
|
+
rows[i].bracketGlyph = undefined;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const sameAsPrev = i > 0 && rows[i - 1].sourceKey === key;
|
|
49
|
+
const sameAsNext = i < rows.length - 1 && rows[i + 1].sourceKey === key;
|
|
50
|
+
const bracket = !sameAsPrev && !sameAsNext ? "single" : !sameAsPrev ? "top" : !sameAsNext ? "bottom" : "mid";
|
|
51
|
+
rows[i].bracketGlyph = bracketGlyph(bracket);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Re-order rows so all rows of one source are contiguous (groups ordered by
|
|
57
|
+
* first appearance, chronological within each). Clusters larger than
|
|
58
|
+
* CLUSTER_THRESHOLD collapse into a single expandable header (Chrome-style),
|
|
59
|
+
* unless the user has expanded that cluster.
|
|
60
|
+
*/
|
|
61
|
+
function clusterRows(rows, expanded) {
|
|
62
|
+
const order = [];
|
|
63
|
+
const groups = new Map();
|
|
64
|
+
for (const r of rows) {
|
|
65
|
+
const k = r.sourceKey ?? "—";
|
|
66
|
+
let g = groups.get(k);
|
|
67
|
+
if (!g) {
|
|
68
|
+
g = [];
|
|
69
|
+
groups.set(k, g);
|
|
70
|
+
order.push(k);
|
|
71
|
+
}
|
|
72
|
+
g.push(r);
|
|
73
|
+
}
|
|
74
|
+
const out = [];
|
|
75
|
+
for (const k of order) {
|
|
76
|
+
const group = groups.get(k);
|
|
77
|
+
for (const r of group) r.depth = 0; // clustering ignores console.group nesting
|
|
78
|
+
|
|
79
|
+
const isLarge = group.length > CLUSTER_THRESHOLD;
|
|
80
|
+
const isExpanded = expanded[k] ?? false;
|
|
81
|
+
if (isLarge) {
|
|
82
|
+
out.push({
|
|
83
|
+
key: `cluster:${k}`,
|
|
84
|
+
entry: group[0].entry,
|
|
85
|
+
depth: 0,
|
|
86
|
+
repeatCount: 1,
|
|
87
|
+
isGroupHeader: false,
|
|
88
|
+
sourceKey: k,
|
|
89
|
+
originColor: group[0].originColor,
|
|
90
|
+
originLabel: group[0].originLabel,
|
|
91
|
+
clusterHeader: {
|
|
92
|
+
key: k,
|
|
93
|
+
count: group.length,
|
|
94
|
+
expanded: isExpanded
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
if (!isExpanded) continue;
|
|
98
|
+
}
|
|
99
|
+
group.forEach((r, i) => {
|
|
100
|
+
const single = group.length === 1;
|
|
101
|
+
const bracket = single ? "single" : i === 0 ? "top" : i === group.length - 1 ? "bottom" : "mid";
|
|
102
|
+
r.bracketGlyph = bracketGlyph(bracket);
|
|
103
|
+
out.push(r);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return out;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Git-graph swimlanes: each source gets a continuous vertical track so its
|
|
110
|
+
* line stays unbroken when other sources interrupt it. */
|
|
111
|
+
function attachSwimlanes(rows) {
|
|
112
|
+
const first = new Map();
|
|
113
|
+
const last = new Map();
|
|
114
|
+
rows.forEach((r, i) => {
|
|
115
|
+
const k = r.sourceKey;
|
|
116
|
+
if (k == null) return;
|
|
117
|
+
if (!first.has(k)) first.set(k, i);
|
|
118
|
+
last.set(k, i);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// Assign each source a lane, reusing a lane once its occupant's run ended.
|
|
122
|
+
const sources = [...first.keys()].sort((a, b) => first.get(a) - first.get(b));
|
|
123
|
+
const laneOf = new Map();
|
|
124
|
+
const laneEnd = [];
|
|
125
|
+
for (const s of sources) {
|
|
126
|
+
let lane = laneEnd.findIndex(end => end < first.get(s));
|
|
127
|
+
if (lane === -1) {
|
|
128
|
+
lane = laneEnd.length < MAX_LANES ? laneEnd.length : MAX_LANES - 1;
|
|
129
|
+
if (lane >= laneEnd.length) laneEnd.push(0);
|
|
130
|
+
}
|
|
131
|
+
laneOf.set(s, lane);
|
|
132
|
+
laneEnd[lane] = Math.max(laneEnd[lane] ?? 0, last.get(s));
|
|
133
|
+
}
|
|
134
|
+
const laneCount = Math.max(1, Math.min(laneEnd.length, MAX_LANES));
|
|
135
|
+
rows.forEach((r, i) => {
|
|
136
|
+
const cells = Array.from({
|
|
137
|
+
length: laneCount
|
|
138
|
+
}, () => ({
|
|
139
|
+
glyph: " "
|
|
140
|
+
}));
|
|
141
|
+
for (const s of sources) {
|
|
142
|
+
const lane = laneOf.get(s);
|
|
143
|
+
if (lane >= laneCount) continue;
|
|
144
|
+
if (i >= first.get(s) && i <= last.get(s)) {
|
|
145
|
+
cells[lane] = {
|
|
146
|
+
glyph: r.sourceKey === s ? "●" : "│",
|
|
147
|
+
color: colorForKey(s)
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
r.lanes = cells;
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
const GROUP_STARTS = new Set(["group", "groupCollapsed"]);
|
|
155
|
+
function buildDisplayRows(entries, opts) {
|
|
156
|
+
const {
|
|
157
|
+
levelsMask,
|
|
158
|
+
query,
|
|
159
|
+
showTimestamps,
|
|
160
|
+
collapsedOverrides
|
|
161
|
+
} = opts;
|
|
162
|
+
const parsed = parseFilterQuery(query.trim());
|
|
163
|
+
const rows = [];
|
|
164
|
+
const levelCounts = {
|
|
165
|
+
verbose: 0,
|
|
166
|
+
info: 0,
|
|
167
|
+
warning: 0,
|
|
168
|
+
error: 0
|
|
169
|
+
};
|
|
170
|
+
let hiddenCount = 0;
|
|
171
|
+
const stack = [];
|
|
172
|
+
const anyAncestorCollapsed = () => stack.some(g => g.collapsed);
|
|
173
|
+
for (const entry of entries) {
|
|
174
|
+
levelCounts[entry.level]++;
|
|
175
|
+
if (entry.method === "groupEnd") {
|
|
176
|
+
stack.pop();
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
const isHeader = GROUP_STARTS.has(entry.method);
|
|
180
|
+
const hiddenByGroup = anyAncestorCollapsed();
|
|
181
|
+
const passesFilter = shouldBeVisible(entry, levelsMask, parsed);
|
|
182
|
+
if (!passesFilter) {
|
|
183
|
+
hiddenCount++;
|
|
184
|
+
} else if (!hiddenByGroup) {
|
|
185
|
+
// Repeat-count collapse: only when timestamps are hidden and the previous
|
|
186
|
+
// visible row is an identical, non-header message at the same depth.
|
|
187
|
+
const prev = rows[rows.length - 1];
|
|
188
|
+
if (!showTimestamps && !isHeader && prev && !prev.isGroupHeader && prev.depth === stack.length && prev.entry.method === entry.method && prev.entry.message === entry.message) {
|
|
189
|
+
prev.repeatCount++;
|
|
190
|
+
} else {
|
|
191
|
+
rows.push({
|
|
192
|
+
key: String(entry.id),
|
|
193
|
+
entry,
|
|
194
|
+
depth: stack.length,
|
|
195
|
+
repeatCount: 1,
|
|
196
|
+
isGroupHeader: isHeader,
|
|
197
|
+
groupId: isHeader ? entry.id : undefined,
|
|
198
|
+
groupCollapsed: undefined
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (isHeader) {
|
|
203
|
+
const defaultCollapsed = entry.method === "groupCollapsed";
|
|
204
|
+
const collapsed = collapsedOverrides[entry.id] ?? defaultCollapsed;
|
|
205
|
+
// Record the collapse state on the just-pushed header row (if visible).
|
|
206
|
+
const headerRow = rows[rows.length - 1];
|
|
207
|
+
if (headerRow && headerRow.groupId === entry.id) {
|
|
208
|
+
headerRow.groupCollapsed = collapsed;
|
|
209
|
+
}
|
|
210
|
+
stack.push({
|
|
211
|
+
id: entry.id,
|
|
212
|
+
collapsed: collapsed || hiddenByGroup
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
computeSourceInfo(rows, opts.groupDimension);
|
|
217
|
+
let finalRows = rows;
|
|
218
|
+
if (opts.groupDimension !== "off") {
|
|
219
|
+
if (opts.layoutMode === "cluster") {
|
|
220
|
+
finalRows = clusterRows(rows, opts.clusterExpanded);
|
|
221
|
+
} else if (opts.layoutMode === "swimlane") {
|
|
222
|
+
attachSwimlanes(rows);
|
|
223
|
+
} else {
|
|
224
|
+
attachContiguousBrackets(rows);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
rows: finalRows,
|
|
229
|
+
hiddenCount,
|
|
230
|
+
levelCounts,
|
|
231
|
+
totalCount: entries.length
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
export function useConsoleMessages(opts) {
|
|
235
|
+
const entries = useSyncExternalStore(subscribe, getEntries, getEntries);
|
|
236
|
+
return useMemo(() => buildDisplayRows(entries, opts), [entries, opts.levelsMask, opts.query, opts.showTimestamps, opts.collapsedOverrides, opts.groupDimension, opts.layoutMode, opts.clusterExpanded]);
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=useConsoleMessages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useMemo","useSyncExternalStore","subscribe","getEntries","parseFilterQuery","shouldBeVisible","sourceKey","sourceLabel","colorForKey","bracketGlyph","MAX_LANES","CLUSTER_THRESHOLD","computeSourceInfo","rows","dim","row","key","entry","origin","originColor","undefined","originLabel","attachContiguousBrackets","i","length","sameAsPrev","sameAsNext","bracket","clusterRows","expanded","order","groups","Map","r","k","g","get","set","push","out","group","depth","isLarge","isExpanded","repeatCount","isGroupHeader","clusterHeader","count","forEach","single","attachSwimlanes","first","last","has","sources","keys","sort","a","b","laneOf","laneEnd","s","lane","findIndex","end","Math","max","laneCount","min","cells","Array","from","glyph","color","lanes","GROUP_STARTS","Set","buildDisplayRows","entries","opts","levelsMask","query","showTimestamps","collapsedOverrides","parsed","trim","levelCounts","verbose","info","warning","error","hiddenCount","stack","anyAncestorCollapsed","some","collapsed","level","method","pop","isHeader","hiddenByGroup","passesFilter","prev","message","String","id","groupId","groupCollapsed","defaultCollapsed","headerRow","groupDimension","finalRows","layoutMode","clusterExpanded","totalCount","useConsoleMessages"],"sourceRoot":"../../../src","sources":["devtools/useConsoleMessages.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useSyncExternalStore, useEffect } from "react";
|
|
4
|
+
import { subscribe, getEntries, installConsoleCapture } from "../store/consoleLogStore";
|
|
5
|
+
/**
|
|
6
|
+
* Subscribe to captured console logs. Installs the console interceptor on mount
|
|
7
|
+
* (idempotent) and re-renders whenever a new entry is captured or the buffer is
|
|
8
|
+
* cleared.
|
|
9
|
+
*/
|
|
10
|
+
export function useConsoleLogs() {
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
installConsoleCapture();
|
|
13
|
+
}, []);
|
|
14
|
+
const logs = useSyncExternalStore(subscribe, getEntries, getEntries);
|
|
15
|
+
return {
|
|
16
|
+
logs
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=useConsoleLogs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useSyncExternalStore","useEffect","subscribe","getEntries","installConsoleCapture","useConsoleLogs","logs"],"sourceRoot":"../../../src","sources":["hooks/useConsoleLogs.ts"],"mappings":";;AAAA,SAASA,oBAAoB,EAAEC,SAAS,QAAQ,OAAO;AACvD,SACEC,SAAS,EACTC,UAAU,EACVC,qBAAqB,QAEhB,0BAA0B;AAMjC;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAAyB;EACrDJ,SAAS,CAAC,MAAM;IACdG,qBAAqB,CAAC,CAAC;EACzB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,IAAI,GAAGN,oBAAoB,CAACE,SAAS,EAAEC,UAAU,EAAEA,UAAU,CAAC;EAEpE,OAAO;IAAEG;EAAK,CAAC;AACjB","ignoreList":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @buoy-gg/console
|
|
5
|
+
*
|
|
6
|
+
* Captures global `console.*` output and renders it as a Buoy devtool.
|
|
7
|
+
*
|
|
8
|
+
* This is the BASIC version: direct console patching + a flat list, used to
|
|
9
|
+
* verify the capture pipeline end to end. Next step is a 1:1 port of Chrome
|
|
10
|
+
* DevTools' console view.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// PRESET (Primary entry point — pass to <FloatingDevTools apps={[...]} />)
|
|
15
|
+
// =============================================================================
|
|
16
|
+
export { consoleToolPreset, createConsoleTool } from "./preset";
|
|
17
|
+
|
|
18
|
+
// =============================================================================
|
|
19
|
+
// ROOT (Mount once at app root to capture logs from startup)
|
|
20
|
+
// =============================================================================
|
|
21
|
+
export { ConsoleRoot } from "./components/ConsoleRoot";
|
|
22
|
+
|
|
23
|
+
// =============================================================================
|
|
24
|
+
// COMPONENTS
|
|
25
|
+
// =============================================================================
|
|
26
|
+
export { ConsoleModal } from "./components/ConsoleModal";
|
|
27
|
+
export { ConsoleIcon, CONSOLE_ICON_COLOR } from "./components/ConsoleIcon";
|
|
28
|
+
|
|
29
|
+
// DevTools-style console panel (the 1:1 Chrome console port)
|
|
30
|
+
export { ConsoleView } from "./devtools/ConsoleView";
|
|
31
|
+
export { ConsoleMessageRow } from "./devtools/ConsoleMessageRow";
|
|
32
|
+
export { ConsoleValue } from "./devtools/ConsoleValue";
|
|
33
|
+
export { useConsoleMessages } from "./devtools/useConsoleMessages";
|
|
34
|
+
export { consoleTheme, levelStyles } from "./devtools/theme";
|
|
35
|
+
|
|
36
|
+
// Basic flat list (kept for simple/embedded use)
|
|
37
|
+
export { ConsoleLogList } from "./components/ConsoleLogList";
|
|
38
|
+
|
|
39
|
+
// =============================================================================
|
|
40
|
+
// HOOK
|
|
41
|
+
// =============================================================================
|
|
42
|
+
export { useConsoleLogs } from "./hooks/useConsoleLogs";
|
|
43
|
+
// =============================================================================
|
|
44
|
+
// EXTERNAL SYNC (device → desktop dashboard)
|
|
45
|
+
// =============================================================================
|
|
46
|
+
export { consoleSyncAdapter } from "./sync/consoleSyncAdapter";
|
|
47
|
+
|
|
48
|
+
// =============================================================================
|
|
49
|
+
// CAPTURE STORE (install/teardown + types)
|
|
50
|
+
// =============================================================================
|
|
51
|
+
export { installConsoleCapture, uninstallConsoleCapture, clearEntries, getEntries, subscribe, replaceEntries, onClear, initConsolePersistence, getPreserveLog, setPreserveLog, subscribePreserveLog } from "./store/consoleLogStore";
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["consoleToolPreset","createConsoleTool","ConsoleRoot","ConsoleModal","ConsoleIcon","CONSOLE_ICON_COLOR","ConsoleView","ConsoleMessageRow","ConsoleValue","useConsoleMessages","consoleTheme","levelStyles","ConsoleLogList","useConsoleLogs","consoleSyncAdapter","installConsoleCapture","uninstallConsoleCapture","clearEntries","getEntries","subscribe","replaceEntries","onClear","initConsolePersistence","getPreserveLog","setPreserveLog","subscribePreserveLog"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAASA,iBAAiB,EAAEC,iBAAiB,QAAQ,UAAU;;AAE/D;AACA;AACA;AACA,SAASC,WAAW,QAAQ,0BAA0B;;AAEtD;AACA;AACA;AACA,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,WAAW,EAAEC,kBAAkB,QAAQ,0BAA0B;;AAE1E;AACA,SAASC,WAAW,QAAQ,wBAAwB;AACpD,SAASC,iBAAiB,QAAQ,8BAA8B;AAChE,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,kBAAkB,QAAQ,+BAA+B;AAElE,SAASC,YAAY,EAAEC,WAAW,QAAQ,kBAAkB;;AAE5D;AACA,SAASC,cAAc,QAAQ,6BAA6B;;AAE5D;AACA;AACA;AACA,SAASC,cAAc,QAAQ,wBAAwB;AAGvD;AACA;AACA;AACA,SAASC,kBAAkB,QAAQ,2BAA2B;;AAE9D;AACA;AACA;AACA,SACEC,qBAAqB,EACrBC,uBAAuB,EACvBC,YAAY,EACZC,UAAU,EACVC,SAAS,EACTC,cAAc,EACdC,OAAO,EACPC,sBAAsB,EACtBC,cAAc,EACdC,cAAc,EACdC,oBAAoB,QACf,yBAAyB","ignoreList":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Pre-configured Console tool for FloatingDevTools.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* import { consoleToolPreset } from '@buoy-gg/console';
|
|
9
|
+
*
|
|
10
|
+
* <FloatingDevTools apps={[consoleToolPreset]} />
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { ConsoleIcon, CONSOLE_ICON_COLOR } from "./components/ConsoleIcon";
|
|
15
|
+
import { ConsoleModal } from "./components/ConsoleModal";
|
|
16
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
17
|
+
export const consoleToolPreset = {
|
|
18
|
+
id: "console",
|
|
19
|
+
name: "CONSOLE",
|
|
20
|
+
description: "Captured console.* output",
|
|
21
|
+
slot: "both",
|
|
22
|
+
icon: ({
|
|
23
|
+
size,
|
|
24
|
+
color
|
|
25
|
+
}) => /*#__PURE__*/_jsx(ConsoleIcon, {
|
|
26
|
+
size: size,
|
|
27
|
+
color: color || CONSOLE_ICON_COLOR
|
|
28
|
+
}),
|
|
29
|
+
component: ConsoleModal
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/** Create a custom Console tool configuration. */
|
|
33
|
+
export function createConsoleTool(options = {}) {
|
|
34
|
+
return {
|
|
35
|
+
...consoleToolPreset,
|
|
36
|
+
name: options.name ?? consoleToolPreset.name,
|
|
37
|
+
description: options.description ?? consoleToolPreset.description
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=preset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ConsoleIcon","CONSOLE_ICON_COLOR","ConsoleModal","jsx","_jsx","consoleToolPreset","id","name","description","slot","icon","size","color","component","createConsoleTool","options"],"sourceRoot":"../../src","sources":["preset.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,EAAEC,kBAAkB,QAAQ,0BAA0B;AAC1E,SAASC,YAAY,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEzD,OAAO,MAAMC,iBAAiB,GAAG;EAC/BC,EAAE,EAAE,SAAS;EACbC,IAAI,EAAE,SAAS;EACfC,WAAW,EAAE,2BAA2B;EACxCC,IAAI,EAAE,MAAe;EACrBC,IAAI,EAAEA,CAAC;IAAEC,IAAI;IAAEC;EAAwC,CAAC,kBACtDR,IAAA,CAACJ,WAAW;IAACW,IAAI,EAAEA,IAAK;IAACC,KAAK,EAAEA,KAAK,IAAIX;EAAmB,CAAE,CAC/D;EACDY,SAAS,EAAEX;AACb,CAAC;;AAED;AACA,OAAO,SAASY,iBAAiBA,CAC/BC,OAAgD,GAAG,CAAC,CAAC,EACrD;EACA,OAAO;IACL,GAAGV,iBAAiB;IACpBE,IAAI,EAAEQ,OAAO,CAACR,IAAI,IAAIF,iBAAiB,CAACE,IAAI;IAC5CC,WAAW,EAAEO,OAAO,CAACP,WAAW,IAAIH,iBAAiB,CAACG;EACxD,CAAC;AACH","ignoreList":[]}
|