@dxos/react-ui-syntax-highlighter 0.8.2-staging.7ac8446 → 0.8.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.
@@ -1,4 +1,5 @@
1
1
  // packages/ui/react-ui-syntax-highlighter/src/JsonFilter/JsonFilter.tsx
2
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
2
3
  import jp from "jsonpath";
3
4
  import React2, { useEffect, useState } from "react";
4
5
  import { Input } from "@dxos/react-ui";
@@ -8,197 +9,82 @@ import { mx as mx2 } from "@dxos/react-ui-theme";
8
9
  import createElement from "react-syntax-highlighter/dist/esm/create-element";
9
10
 
10
11
  // packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/SyntaxHighlighter.tsx
12
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
11
13
  import React from "react";
12
14
  import NativeSyntaxHighlighter from "react-syntax-highlighter/dist/esm/light-async";
15
+ import { github as light, a11yDark as dark } from "react-syntax-highlighter/dist/esm/styles/hljs";
13
16
  import { useThemeContext } from "@dxos/react-ui";
14
17
  import { mx } from "@dxos/react-ui-theme";
15
-
16
- // packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/styles.ts
17
- var alabasterDark = {
18
- hljs: {
19
- display: "block",
20
- overflowX: "auto",
21
- color: "#CECECE",
22
- padding: "0.5em"
23
- },
24
- "hljs-comment": {
25
- color: "#DFDF8E"
26
- },
27
- "hljs-string": {
28
- color: "#95CB82"
29
- },
30
- "hljs-meta-string": {
31
- color: "#95CB82"
32
- },
33
- "hljs-regexp": {
34
- color: "#95CB82"
35
- },
36
- "hljs-number": {
37
- color: "#CC8BC9"
38
- },
39
- "hljs-literal": {
40
- color: "#CC8BC9"
41
- },
42
- "hljs-title": {
43
- color: "#71ADE7"
44
- },
45
- "hljs-deletion": {
46
- backgroundColor: "#ffdddd",
47
- color: "#434343"
48
- },
49
- "hljs-addition": {
50
- backgroundColor: "#ddffdd",
51
- color: "#434343"
52
- }
53
- };
54
- var githubLight = {
55
- hljs: {
56
- display: "block",
57
- overflowX: "auto",
58
- color: "#545454",
59
- padding: "0.5em"
60
- },
61
- "hljs-comment": {
62
- color: "#696969"
63
- },
64
- "hljs-quote": {
65
- color: "#696969"
66
- },
67
- "hljs-variable": {
68
- color: "#d91e18"
69
- },
70
- "hljs-template-variable": {
71
- color: "#d91e18"
72
- },
73
- "hljs-tag": {
74
- color: "#d91e18"
75
- },
76
- "hljs-name": {
77
- color: "#d91e18"
78
- },
79
- "hljs-selector-id": {
80
- color: "#d91e18"
81
- },
82
- "hljs-selector-class": {
83
- color: "#d91e18"
84
- },
85
- "hljs-regexp": {
86
- color: "#d91e18"
87
- },
88
- "hljs-deletion": {
89
- color: "#d91e18"
90
- },
91
- "hljs-number": {
92
- color: "#aa5d00"
93
- },
94
- "hljs-built_in": {
95
- color: "#aa5d00"
96
- },
97
- "hljs-builtin-name": {
98
- color: "#aa5d00"
99
- },
100
- "hljs-literal": {
101
- color: "#aa5d00"
102
- },
103
- "hljs-type": {
104
- color: "#aa5d00"
105
- },
106
- "hljs-params": {
107
- color: "#aa5d00"
108
- },
109
- "hljs-meta": {
110
- color: "#aa5d00"
111
- },
112
- "hljs-link": {
113
- color: "#aa5d00"
114
- },
115
- "hljs-attribute": {
116
- color: "#aa5d00"
117
- },
118
- "hljs-string": {
119
- color: "#008000"
120
- },
121
- "hljs-symbol": {
122
- color: "#008000"
123
- },
124
- "hljs-bullet": {
125
- color: "#008000"
126
- },
127
- "hljs-addition": {
128
- color: "#008000"
129
- },
130
- "hljs-title": {
131
- color: "#007faa"
132
- },
133
- "hljs-section": {
134
- color: "#007faa"
135
- },
136
- "hljs-keyword": {
137
- color: "#7928a1"
138
- },
139
- "hljs-selector-tag": {
140
- color: "#7928a1"
141
- },
142
- "hljs-emphasis": {
143
- fontStyle: "italic"
144
- },
145
- "hljs-strong": {
146
- fontWeight: "bold"
147
- }
148
- };
149
-
150
- // packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/SyntaxHighlighter.tsx
151
18
  var zeroWidthSpace = "\u200B";
152
- var SyntaxHighlighter = ({ classNames, fallback = zeroWidthSpace, children, ...props }) => {
153
- const { themeMode } = useThemeContext();
154
- return /* @__PURE__ */ React.createElement(NativeSyntaxHighlighter, {
155
- className: mx("w-full p-0", classNames),
156
- style: themeMode === "dark" ? alabasterDark : githubLight,
157
- ...props
158
- }, children || fallback);
19
+ light.hljs.background = "";
20
+ dark.hljs.background = "";
21
+ var SyntaxHighlighter = ({ classNames, children, fallback = zeroWidthSpace, ...props }) => {
22
+ var _effect = _useSignals();
23
+ try {
24
+ const { themeMode } = useThemeContext();
25
+ return /* @__PURE__ */ React.createElement(NativeSyntaxHighlighter, {
26
+ className: mx("w-full p-0 bg-baseSurface font-thin", classNames),
27
+ style: themeMode === "dark" ? dark : light,
28
+ ...props
29
+ }, children || fallback);
30
+ } finally {
31
+ _effect.f();
32
+ }
159
33
  };
160
34
 
161
35
  // packages/ui/react-ui-syntax-highlighter/src/JsonFilter/JsonFilter.tsx
162
- var Json = ({ data, classNames }) => {
163
- return /* @__PURE__ */ React2.createElement(SyntaxHighlighter, {
164
- language: "json",
165
- classNames
166
- }, JSON.stringify(data, null, 2));
36
+ var Json = ({ data, classNames, testId }) => {
37
+ var _effect = _useSignals2();
38
+ try {
39
+ return /* @__PURE__ */ React2.createElement(SyntaxHighlighter, {
40
+ language: "json",
41
+ classNames,
42
+ "data-testid": testId
43
+ }, JSON.stringify(data, null, 2));
44
+ } finally {
45
+ _effect.f();
46
+ }
167
47
  };
168
- var JsonFilter = ({ data: initialData, classNames }) => {
169
- const [data, setData] = useState(initialData);
170
- const [text, setText] = useState("");
171
- const [error, setError] = useState(null);
172
- useEffect(() => {
173
- if (!initialData || !text.trim().length) {
174
- setData(initialData);
175
- } else {
176
- try {
177
- setData(jp.query(initialData, text));
178
- setError(null);
179
- } catch (err) {
48
+ var JsonFilter = ({ data: initialData, classNames, testId }) => {
49
+ var _effect = _useSignals2();
50
+ try {
51
+ const [data, setData] = useState(initialData);
52
+ const [text, setText] = useState("");
53
+ const [error, setError] = useState(null);
54
+ useEffect(() => {
55
+ if (!initialData || !text.trim().length) {
180
56
  setData(initialData);
181
- setError(err);
57
+ } else {
58
+ try {
59
+ setData(jp.query(initialData, text));
60
+ setError(null);
61
+ } catch (err) {
62
+ setData(initialData);
63
+ setError(err);
64
+ }
182
65
  }
183
- }
184
- }, [
185
- initialData,
186
- text
187
- ]);
188
- return /* @__PURE__ */ React2.createElement("div", {
189
- className: "flex flex-col grow overflow-hidden"
190
- }, /* @__PURE__ */ React2.createElement(Input.Root, {
191
- validationValence: error ? "error" : "success"
192
- }, /* @__PURE__ */ React2.createElement(Input.TextInput, {
193
- classNames: mx2("p-1 px-2 font-mono", error && "border-red-500"),
194
- variant: "subdued",
195
- value: text,
196
- onChange: (event) => setText(event.target.value),
197
- placeholder: "JSONPath (e.g., $.graph.nodes)"
198
- })), /* @__PURE__ */ React2.createElement(SyntaxHighlighter, {
199
- language: "json",
200
- classNames: mx2("grow overflow-y-auto", classNames)
201
- }, JSON.stringify(data, null, 2)));
66
+ }, [
67
+ initialData,
68
+ text
69
+ ]);
70
+ return /* @__PURE__ */ React2.createElement("div", {
71
+ className: "flex flex-col grow overflow-hidden"
72
+ }, /* @__PURE__ */ React2.createElement(Input.Root, {
73
+ validationValence: error ? "error" : "success"
74
+ }, /* @__PURE__ */ React2.createElement(Input.TextInput, {
75
+ classNames: mx2("p-1 px-2 font-mono", error && "border-red-500"),
76
+ variant: "subdued",
77
+ value: text,
78
+ onChange: (event) => setText(event.target.value),
79
+ placeholder: "JSONPath (e.g., $.graph.nodes)"
80
+ })), /* @__PURE__ */ React2.createElement(SyntaxHighlighter, {
81
+ language: "json",
82
+ classNames: mx2("grow overflow-y-auto", classNames),
83
+ "data-testid": testId
84
+ }, JSON.stringify(data, null, 2)));
85
+ } finally {
86
+ _effect.f();
87
+ }
202
88
  };
203
89
  export {
204
90
  Json,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/JsonFilter/JsonFilter.tsx", "../../../src/SyntaxHighlighter/index.ts", "../../../src/SyntaxHighlighter/SyntaxHighlighter.tsx", "../../../src/SyntaxHighlighter/styles.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// TODO(burdon): Move to jsonpath-plus.\nimport jp from 'jsonpath';\nimport React, { useEffect, useState } from 'react';\n\nimport { Input, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { SyntaxHighlighter } from '../SyntaxHighlighter';\n\nexport type JsonProps = ThemedClassName<{ data?: any }>;\n\nexport const Json = ({ data, classNames }: JsonProps) => {\n return (\n <SyntaxHighlighter language='json' classNames={classNames}>\n {JSON.stringify(data, null, 2)}\n </SyntaxHighlighter>\n );\n};\n\nexport const JsonFilter = ({ data: initialData, classNames }: JsonProps) => {\n const [data, setData] = useState(initialData);\n const [text, setText] = useState('');\n const [error, setError] = useState<Error | null>(null);\n useEffect(() => {\n if (!initialData || !text.trim().length) {\n setData(initialData);\n } else {\n try {\n setData(jp.query(initialData, text));\n setError(null);\n } catch (err) {\n setData(initialData);\n setError(err as Error);\n }\n }\n }, [initialData, text]);\n\n return (\n <div className='flex flex-col grow overflow-hidden'>\n <Input.Root validationValence={error ? 'error' : 'success'}>\n <Input.TextInput\n classNames={mx('p-1 px-2 font-mono', error && 'border-red-500')}\n variant='subdued'\n value={text}\n onChange={(event) => setText(event.target.value)}\n placeholder='JSONPath (e.g., $.graph.nodes)'\n />\n </Input.Root>\n <SyntaxHighlighter language='json' classNames={mx('grow overflow-y-auto', classNames)}>\n {JSON.stringify(data, null, 2)}\n </SyntaxHighlighter>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// eslint-disable-next-line no-restricted-imports\nimport createElement from 'react-syntax-highlighter/dist/esm/create-element';\n\nexport { createElement };\n\nexport * from './SyntaxHighlighter';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\nimport { type SyntaxHighlighterProps as NativeSyntaxHighlighterProps } from 'react-syntax-highlighter';\n// Lightweight version will load specific language parsers asynchronously.\n// Using `light-async` version directly from dist to avoid any chance of the heavy one being loaded.\n// eslint-disable-next-line no-restricted-imports\nimport NativeSyntaxHighlighter from 'react-syntax-highlighter/dist/esm/light-async';\n\nimport { type ThemedClassName, useThemeContext } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { alabasterDark, githubLight } from './styles';\n\nconst zeroWidthSpace = '\\u200b';\n\nexport type SyntaxHighlighterProps = ThemedClassName<\n NativeSyntaxHighlighterProps & {\n fallback?: string;\n }\n>;\n\n/**\n * https://github.com/react-syntax-highlighter/react-syntax-highlighter\n */\nexport const SyntaxHighlighter = ({\n classNames,\n fallback = zeroWidthSpace,\n children,\n ...props\n}: SyntaxHighlighterProps) => {\n const { themeMode } = useThemeContext();\n\n return (\n <NativeSyntaxHighlighter\n className={mx('w-full p-0', classNames)}\n style={themeMode === 'dark' ? alabasterDark : githubLight}\n {...props}\n >\n {/* Non-empty fallback prevents collapse. */}\n {children || fallback}\n </NativeSyntaxHighlighter>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type CSSProperties } from 'react';\n\n// https://highlightjs.org/examples\n// https://react-syntax-highlighter.github.io/react-syntax-highlighter/demo\n// https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_STYLES_HLJS.MD\n\n/**\n * https://github.com/findrakecil/hljs-alabaster-dark/blob/master/readme.md\n */\nexport const alabasterDark: Record<string, CSSProperties> = {\n hljs: {\n display: 'block',\n overflowX: 'auto',\n color: '#CECECE',\n padding: '0.5em',\n },\n 'hljs-comment': {\n color: '#DFDF8E',\n },\n 'hljs-string': {\n color: '#95CB82',\n },\n 'hljs-meta-string': {\n color: '#95CB82',\n },\n 'hljs-regexp': {\n color: '#95CB82',\n },\n 'hljs-number': {\n color: '#CC8BC9',\n },\n 'hljs-literal': {\n color: '#CC8BC9',\n },\n 'hljs-title': {\n color: '#71ADE7',\n },\n 'hljs-deletion': {\n backgroundColor: '#ffdddd',\n color: '#434343',\n },\n 'hljs-addition': {\n backgroundColor: '#ddffdd',\n color: '#434343',\n },\n};\n\n/**\n * https://github.com/highlightjs/highlight.js/blob/main/src/styles/github.css\n */\nexport const githubLight: Record<string, CSSProperties> = {\n hljs: {\n display: 'block',\n overflowX: 'auto',\n color: '#545454',\n padding: '0.5em',\n },\n 'hljs-comment': {\n color: '#696969',\n },\n 'hljs-quote': {\n color: '#696969',\n },\n 'hljs-variable': {\n color: '#d91e18',\n },\n 'hljs-template-variable': {\n color: '#d91e18',\n },\n 'hljs-tag': {\n color: '#d91e18',\n },\n 'hljs-name': {\n color: '#d91e18',\n },\n 'hljs-selector-id': {\n color: '#d91e18',\n },\n 'hljs-selector-class': {\n color: '#d91e18',\n },\n 'hljs-regexp': {\n color: '#d91e18',\n },\n 'hljs-deletion': {\n color: '#d91e18',\n },\n 'hljs-number': {\n color: '#aa5d00',\n },\n 'hljs-built_in': {\n color: '#aa5d00',\n },\n 'hljs-builtin-name': {\n color: '#aa5d00',\n },\n 'hljs-literal': {\n color: '#aa5d00',\n },\n 'hljs-type': {\n color: '#aa5d00',\n },\n 'hljs-params': {\n color: '#aa5d00',\n },\n 'hljs-meta': {\n color: '#aa5d00',\n },\n 'hljs-link': {\n color: '#aa5d00',\n },\n 'hljs-attribute': {\n color: '#aa5d00',\n },\n 'hljs-string': {\n color: '#008000',\n },\n 'hljs-symbol': {\n color: '#008000',\n },\n 'hljs-bullet': {\n color: '#008000',\n },\n 'hljs-addition': {\n color: '#008000',\n },\n 'hljs-title': {\n color: '#007faa',\n },\n 'hljs-section': {\n color: '#007faa',\n },\n 'hljs-keyword': {\n color: '#7928a1',\n },\n 'hljs-selector-tag': {\n color: '#7928a1',\n },\n 'hljs-emphasis': {\n fontStyle: 'italic',\n },\n 'hljs-strong': {\n fontWeight: 'bold',\n },\n};\n"],
5
- "mappings": "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",
6
- "names": ["jp", "React", "useEffect", "useState", "Input", "mx", "createElement", "React", "NativeSyntaxHighlighter", "useThemeContext", "mx", "alabasterDark", "hljs", "display", "overflowX", "color", "padding", "backgroundColor", "githubLight", "fontStyle", "fontWeight", "zeroWidthSpace", "SyntaxHighlighter", "classNames", "fallback", "children", "props", "themeMode", "useThemeContext", "NativeSyntaxHighlighter", "className", "mx", "style", "alabasterDark", "githubLight", "Json", "data", "classNames", "React", "SyntaxHighlighter", "language", "JSON", "stringify", "JsonFilter", "initialData", "setData", "useState", "text", "setText", "error", "setError", "useEffect", "trim", "length", "jp", "query", "err", "div", "className", "Input", "Root", "validationValence", "TextInput", "mx", "variant", "value", "onChange", "event", "target", "placeholder"]
3
+ "sources": ["../../../src/JsonFilter/JsonFilter.tsx", "../../../src/SyntaxHighlighter/index.ts", "../../../src/SyntaxHighlighter/SyntaxHighlighter.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// TODO(burdon): Move to jsonpath-plus.\nimport jp from 'jsonpath';\nimport React, { useEffect, useState } from 'react';\n\nimport { Input, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { SyntaxHighlighter } from '../SyntaxHighlighter';\n\nexport type JsonProps = ThemedClassName<{ data?: any; testId?: string }>;\n\nexport const Json = ({ data, classNames, testId }: JsonProps) => {\n return (\n <SyntaxHighlighter language='json' classNames={classNames} data-testid={testId}>\n {JSON.stringify(data, null, 2)}\n </SyntaxHighlighter>\n );\n};\n\nexport const JsonFilter = ({ data: initialData, classNames, testId }: JsonProps) => {\n const [data, setData] = useState(initialData);\n const [text, setText] = useState('');\n const [error, setError] = useState<Error | null>(null);\n useEffect(() => {\n if (!initialData || !text.trim().length) {\n setData(initialData);\n } else {\n try {\n setData(jp.query(initialData, text));\n setError(null);\n } catch (err) {\n setData(initialData);\n setError(err as Error);\n }\n }\n }, [initialData, text]); // TODO(burdon): Need structural diff.\n\n return (\n <div className='flex flex-col grow overflow-hidden'>\n <Input.Root validationValence={error ? 'error' : 'success'}>\n <Input.TextInput\n classNames={mx('p-1 px-2 font-mono', error && 'border-red-500')}\n variant='subdued'\n value={text}\n onChange={(event) => setText(event.target.value)}\n placeholder='JSONPath (e.g., $.graph.nodes)'\n />\n </Input.Root>\n <SyntaxHighlighter language='json' classNames={mx('grow overflow-y-auto', classNames)} data-testid={testId}>\n {JSON.stringify(data, null, 2)}\n </SyntaxHighlighter>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// eslint-disable-next-line no-restricted-imports\nimport createElement from 'react-syntax-highlighter/dist/esm/create-element';\n\nexport { createElement };\n\nexport * from './SyntaxHighlighter';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\nimport { type SyntaxHighlighterProps as NativeSyntaxHighlighterProps } from 'react-syntax-highlighter';\n// Using `light-async` version directly from dist to avoid any chance of the heavy one being loaded.\n// Lightweight version will load specific language parsers asynchronously.\n// eslint-disable-next-line no-restricted-imports\nimport NativeSyntaxHighlighter from 'react-syntax-highlighter/dist/esm/light-async';\n// eslint-disable-next-line no-restricted-imports\nimport { github as light, a11yDark as dark } from 'react-syntax-highlighter/dist/esm/styles/hljs';\n\nimport { type ThemedClassName, useThemeContext } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nconst zeroWidthSpace = '\\u200b';\n\nexport type SyntaxHighlighterProps = ThemedClassName<\n NativeSyntaxHighlighterProps & {\n fallback?: string;\n }\n>;\n\nlight.hljs.background = '';\ndark.hljs.background = '';\n\n/**\n * https://github.com/react-syntax-highlighter/react-syntax-highlighter\n */\nexport const SyntaxHighlighter = ({\n classNames,\n children,\n fallback = zeroWidthSpace,\n ...props\n}: SyntaxHighlighterProps) => {\n const { themeMode } = useThemeContext();\n\n return (\n <NativeSyntaxHighlighter\n className={mx('w-full p-0 bg-baseSurface font-thin', classNames)}\n style={themeMode === 'dark' ? dark : light}\n {...props}\n >\n {/* Non-empty fallback prevents collapse. */}\n {children || fallback}\n </NativeSyntaxHighlighter>\n );\n};\n"],
5
+ "mappings": ";;AAKA,OAAOA,QAAQ;AACf,OAAOC,UAASC,WAAWC,gBAAgB;AAE3C,SAASC,aAAmC;AAC5C,SAASC,MAAAA,WAAU;;;ACJnB,OAAOC,mBAAmB;;;;ACD1B,OAAOC,WAAW;AAKlB,OAAOC,6BAA6B;AAEpC,SAASC,UAAUC,OAAOC,YAAYC,YAAY;AAElD,SAA+BC,uBAAuB;AACtD,SAASC,UAAU;AAEnB,IAAMC,iBAAiB;AAQvBC,MAAMC,KAAKC,aAAa;AACxBC,KAAKF,KAAKC,aAAa;AAKhB,IAAME,oBAAoB,CAAC,EAChCC,YACAC,UACAC,WAAWR,gBACX,GAAGS,MAAAA,MACoB;;;AACvB,UAAM,EAAEC,UAAS,IAAKC,gBAAAA;AAEtB,WACE,sBAAA,cAACC,yBAAAA;MACCC,WAAWC,GAAG,uCAAuCR,UAAAA;MACrDS,OAAOL,cAAc,SAASN,OAAOH;MACpC,GAAGQ;OAGHF,YAAYC,QAAAA;;;;AAGnB;;;AFjCO,IAAMQ,OAAO,CAAC,EAAEC,MAAMC,YAAYC,OAAM,MAAa;;;AAC1D,WACE,gBAAAC,OAAA,cAACC,mBAAAA;MAAkBC,UAAS;MAAOJ;MAAwBK,eAAaJ;OACrEK,KAAKC,UAAUR,MAAM,MAAM,CAAA,CAAA;;;;AAGlC;AAEO,IAAMS,aAAa,CAAC,EAAET,MAAMU,aAAaT,YAAYC,OAAM,MAAa;;;AAC7E,UAAM,CAACF,MAAMW,OAAAA,IAAWC,SAASF,WAAAA;AACjC,UAAM,CAACG,MAAMC,OAAAA,IAAWF,SAAS,EAAA;AACjC,UAAM,CAACG,OAAOC,QAAAA,IAAYJ,SAAuB,IAAA;AACjDK,cAAU,MAAA;AACR,UAAI,CAACP,eAAe,CAACG,KAAKK,KAAI,EAAGC,QAAQ;AACvCR,gBAAQD,WAAAA;MACV,OAAO;AACL,YAAI;AACFC,kBAAQS,GAAGC,MAAMX,aAAaG,IAAAA,CAAAA;AAC9BG,mBAAS,IAAA;QACX,SAASM,KAAK;AACZX,kBAAQD,WAAAA;AACRM,mBAASM,GAAAA;QACX;MACF;IACF,GAAG;MAACZ;MAAaG;KAAK;AAEtB,WACE,gBAAAV,OAAA,cAACoB,OAAAA;MAAIC,WAAU;OACb,gBAAArB,OAAA,cAACsB,MAAMC,MAAI;MAACC,mBAAmBZ,QAAQ,UAAU;OAC/C,gBAAAZ,OAAA,cAACsB,MAAMG,WAAS;MACd3B,YAAY4B,IAAG,sBAAsBd,SAAS,gBAAA;MAC9Ce,SAAQ;MACRC,OAAOlB;MACPmB,UAAU,CAACC,UAAUnB,QAAQmB,MAAMC,OAAOH,KAAK;MAC/CI,aAAY;SAGhB,gBAAAhC,OAAA,cAACC,mBAAAA;MAAkBC,UAAS;MAAOJ,YAAY4B,IAAG,wBAAwB5B,UAAAA;MAAaK,eAAaJ;OACjGK,KAAKC,UAAUR,MAAM,MAAM,CAAA,CAAA,CAAA;;;;AAIpC;",
6
+ "names": ["jp", "React", "useEffect", "useState", "Input", "mx", "createElement", "React", "NativeSyntaxHighlighter", "github", "light", "a11yDark", "dark", "useThemeContext", "mx", "zeroWidthSpace", "light", "hljs", "background", "dark", "SyntaxHighlighter", "classNames", "children", "fallback", "props", "themeMode", "useThemeContext", "NativeSyntaxHighlighter", "className", "mx", "style", "Json", "data", "classNames", "testId", "React", "SyntaxHighlighter", "language", "data-testid", "JSON", "stringify", "JsonFilter", "initialData", "setData", "useState", "text", "setText", "error", "setError", "useEffect", "trim", "length", "jp", "query", "err", "div", "className", "Input", "Root", "validationValence", "TextInput", "mx", "variant", "value", "onChange", "event", "target", "placeholder"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/styles.ts":{"bytes":9093,"imports":[],"format":"esm"},"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/SyntaxHighlighter.tsx":{"bytes":4160,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"react-syntax-highlighter/dist/esm/light-async","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/styles.ts","kind":"import-statement","original":"./styles"}],"format":"esm"},"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/index.ts":{"bytes":1028,"imports":[{"path":"react-syntax-highlighter/dist/esm/create-element","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/SyntaxHighlighter.tsx","kind":"import-statement","original":"./SyntaxHighlighter"}],"format":"esm"},"packages/ui/react-ui-syntax-highlighter/src/JsonFilter/JsonFilter.tsx":{"bytes":6481,"imports":[{"path":"jsonpath","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/index.ts","kind":"import-statement","original":"../SyntaxHighlighter"}],"format":"esm"},"packages/ui/react-ui-syntax-highlighter/src/JsonFilter/index.ts":{"bytes":528,"imports":[{"path":"packages/ui/react-ui-syntax-highlighter/src/JsonFilter/JsonFilter.tsx","kind":"import-statement","original":"./JsonFilter"}],"format":"esm"},"packages/ui/react-ui-syntax-highlighter/src/index.ts":{"bytes":630,"imports":[{"path":"packages/ui/react-ui-syntax-highlighter/src/JsonFilter/index.ts","kind":"import-statement","original":"./JsonFilter"},{"path":"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/index.ts","kind":"import-statement","original":"./SyntaxHighlighter"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-syntax-highlighter/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10051},"packages/ui/react-ui-syntax-highlighter/dist/lib/browser/index.mjs":{"imports":[{"path":"jsonpath","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react-syntax-highlighter/dist/esm/create-element","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-syntax-highlighter/dist/esm/light-async","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["Json","JsonFilter","SyntaxHighlighter","createElement"],"entryPoint":"packages/ui/react-ui-syntax-highlighter/src/index.ts","inputs":{"packages/ui/react-ui-syntax-highlighter/src/JsonFilter/JsonFilter.tsx":{"bytesInOutput":1536},"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/index.ts":{"bytesInOutput":78},"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/SyntaxHighlighter.tsx":{"bytesInOutput":596},"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/styles.ts":{"bytesInOutput":2081},"packages/ui/react-ui-syntax-highlighter/src/JsonFilter/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-syntax-highlighter/src/index.ts":{"bytesInOutput":0}},"bytes":4871}}}
1
+ {"inputs":{"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/SyntaxHighlighter.tsx":{"bytes":4837,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-syntax-highlighter/dist/esm/light-async","kind":"import-statement","external":true},{"path":"react-syntax-highlighter/dist/esm/styles/hljs","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/index.ts":{"bytes":992,"imports":[{"path":"react-syntax-highlighter/dist/esm/create-element","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/SyntaxHighlighter.tsx","kind":"import-statement","original":"./SyntaxHighlighter"}],"format":"esm"},"packages/ui/react-ui-syntax-highlighter/src/JsonFilter/JsonFilter.tsx":{"bytes":7197,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"jsonpath","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/index.ts","kind":"import-statement","original":"../SyntaxHighlighter"}],"format":"esm"},"packages/ui/react-ui-syntax-highlighter/src/JsonFilter/index.ts":{"bytes":496,"imports":[{"path":"packages/ui/react-ui-syntax-highlighter/src/JsonFilter/JsonFilter.tsx","kind":"import-statement","original":"./JsonFilter"}],"format":"esm"},"packages/ui/react-ui-syntax-highlighter/src/index.ts":{"bytes":598,"imports":[{"path":"packages/ui/react-ui-syntax-highlighter/src/JsonFilter/index.ts","kind":"import-statement","original":"./JsonFilter"},{"path":"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/index.ts","kind":"import-statement","original":"./SyntaxHighlighter"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-syntax-highlighter/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6299},"packages/ui/react-ui-syntax-highlighter/dist/lib/browser/index.mjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"jsonpath","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react-syntax-highlighter/dist/esm/create-element","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-syntax-highlighter/dist/esm/light-async","kind":"import-statement","external":true},{"path":"react-syntax-highlighter/dist/esm/styles/hljs","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["Json","JsonFilter","SyntaxHighlighter","createElement"],"entryPoint":"packages/ui/react-ui-syntax-highlighter/src/index.ts","inputs":{"packages/ui/react-ui-syntax-highlighter/src/JsonFilter/JsonFilter.tsx":{"bytesInOutput":1916},"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/index.ts":{"bytesInOutput":78},"packages/ui/react-ui-syntax-highlighter/src/SyntaxHighlighter/SyntaxHighlighter.tsx":{"bytesInOutput":927},"packages/ui/react-ui-syntax-highlighter/src/JsonFilter/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-syntax-highlighter/src/index.ts":{"bytesInOutput":0}},"bytes":3337}}}
@@ -34,196 +34,86 @@ __export(node_exports, {
34
34
  createElement: () => import_create_element.default
35
35
  });
36
36
  module.exports = __toCommonJS(node_exports);
37
+ var import_tracking = require("@preact-signals/safe-react/tracking");
37
38
  var import_jsonpath = __toESM(require("jsonpath"));
38
39
  var import_react = __toESM(require("react"));
39
40
  var import_react_ui = require("@dxos/react-ui");
40
41
  var import_react_ui_theme = require("@dxos/react-ui-theme");
41
42
  var import_create_element = __toESM(require("react-syntax-highlighter/dist/esm/create-element"));
43
+ var import_tracking2 = require("@preact-signals/safe-react/tracking");
42
44
  var import_react2 = __toESM(require("react"));
43
45
  var import_light_async = __toESM(require("react-syntax-highlighter/dist/esm/light-async"));
46
+ var import_hljs = require("react-syntax-highlighter/dist/esm/styles/hljs");
44
47
  var import_react_ui2 = require("@dxos/react-ui");
45
48
  var import_react_ui_theme2 = require("@dxos/react-ui-theme");
46
- var alabasterDark = {
47
- hljs: {
48
- display: "block",
49
- overflowX: "auto",
50
- color: "#CECECE",
51
- padding: "0.5em"
52
- },
53
- "hljs-comment": {
54
- color: "#DFDF8E"
55
- },
56
- "hljs-string": {
57
- color: "#95CB82"
58
- },
59
- "hljs-meta-string": {
60
- color: "#95CB82"
61
- },
62
- "hljs-regexp": {
63
- color: "#95CB82"
64
- },
65
- "hljs-number": {
66
- color: "#CC8BC9"
67
- },
68
- "hljs-literal": {
69
- color: "#CC8BC9"
70
- },
71
- "hljs-title": {
72
- color: "#71ADE7"
73
- },
74
- "hljs-deletion": {
75
- backgroundColor: "#ffdddd",
76
- color: "#434343"
77
- },
78
- "hljs-addition": {
79
- backgroundColor: "#ddffdd",
80
- color: "#434343"
49
+ var zeroWidthSpace = "\u200B";
50
+ import_hljs.github.hljs.background = "";
51
+ import_hljs.a11yDark.hljs.background = "";
52
+ var SyntaxHighlighter = ({ classNames, children, fallback = zeroWidthSpace, ...props }) => {
53
+ var _effect = (0, import_tracking2.useSignals)();
54
+ try {
55
+ const { themeMode } = (0, import_react_ui2.useThemeContext)();
56
+ return /* @__PURE__ */ import_react2.default.createElement(import_light_async.default, {
57
+ className: (0, import_react_ui_theme2.mx)("w-full p-0 bg-baseSurface font-thin", classNames),
58
+ style: themeMode === "dark" ? import_hljs.a11yDark : import_hljs.github,
59
+ ...props
60
+ }, children || fallback);
61
+ } finally {
62
+ _effect.f();
81
63
  }
82
64
  };
83
- var githubLight = {
84
- hljs: {
85
- display: "block",
86
- overflowX: "auto",
87
- color: "#545454",
88
- padding: "0.5em"
89
- },
90
- "hljs-comment": {
91
- color: "#696969"
92
- },
93
- "hljs-quote": {
94
- color: "#696969"
95
- },
96
- "hljs-variable": {
97
- color: "#d91e18"
98
- },
99
- "hljs-template-variable": {
100
- color: "#d91e18"
101
- },
102
- "hljs-tag": {
103
- color: "#d91e18"
104
- },
105
- "hljs-name": {
106
- color: "#d91e18"
107
- },
108
- "hljs-selector-id": {
109
- color: "#d91e18"
110
- },
111
- "hljs-selector-class": {
112
- color: "#d91e18"
113
- },
114
- "hljs-regexp": {
115
- color: "#d91e18"
116
- },
117
- "hljs-deletion": {
118
- color: "#d91e18"
119
- },
120
- "hljs-number": {
121
- color: "#aa5d00"
122
- },
123
- "hljs-built_in": {
124
- color: "#aa5d00"
125
- },
126
- "hljs-builtin-name": {
127
- color: "#aa5d00"
128
- },
129
- "hljs-literal": {
130
- color: "#aa5d00"
131
- },
132
- "hljs-type": {
133
- color: "#aa5d00"
134
- },
135
- "hljs-params": {
136
- color: "#aa5d00"
137
- },
138
- "hljs-meta": {
139
- color: "#aa5d00"
140
- },
141
- "hljs-link": {
142
- color: "#aa5d00"
143
- },
144
- "hljs-attribute": {
145
- color: "#aa5d00"
146
- },
147
- "hljs-string": {
148
- color: "#008000"
149
- },
150
- "hljs-symbol": {
151
- color: "#008000"
152
- },
153
- "hljs-bullet": {
154
- color: "#008000"
155
- },
156
- "hljs-addition": {
157
- color: "#008000"
158
- },
159
- "hljs-title": {
160
- color: "#007faa"
161
- },
162
- "hljs-section": {
163
- color: "#007faa"
164
- },
165
- "hljs-keyword": {
166
- color: "#7928a1"
167
- },
168
- "hljs-selector-tag": {
169
- color: "#7928a1"
170
- },
171
- "hljs-emphasis": {
172
- fontStyle: "italic"
173
- },
174
- "hljs-strong": {
175
- fontWeight: "bold"
65
+ var Json = ({ data, classNames, testId }) => {
66
+ var _effect = (0, import_tracking.useSignals)();
67
+ try {
68
+ return /* @__PURE__ */ import_react.default.createElement(SyntaxHighlighter, {
69
+ language: "json",
70
+ classNames,
71
+ "data-testid": testId
72
+ }, JSON.stringify(data, null, 2));
73
+ } finally {
74
+ _effect.f();
176
75
  }
177
76
  };
178
- var zeroWidthSpace = "\u200B";
179
- var SyntaxHighlighter = ({ classNames, fallback = zeroWidthSpace, children, ...props }) => {
180
- const { themeMode } = (0, import_react_ui2.useThemeContext)();
181
- return /* @__PURE__ */ import_react2.default.createElement(import_light_async.default, {
182
- className: (0, import_react_ui_theme2.mx)("w-full p-0", classNames),
183
- style: themeMode === "dark" ? alabasterDark : githubLight,
184
- ...props
185
- }, children || fallback);
186
- };
187
- var Json = ({ data, classNames }) => {
188
- return /* @__PURE__ */ import_react.default.createElement(SyntaxHighlighter, {
189
- language: "json",
190
- classNames
191
- }, JSON.stringify(data, null, 2));
192
- };
193
- var JsonFilter = ({ data: initialData, classNames }) => {
194
- const [data, setData] = (0, import_react.useState)(initialData);
195
- const [text, setText] = (0, import_react.useState)("");
196
- const [error, setError] = (0, import_react.useState)(null);
197
- (0, import_react.useEffect)(() => {
198
- if (!initialData || !text.trim().length) {
199
- setData(initialData);
200
- } else {
201
- try {
202
- setData(import_jsonpath.default.query(initialData, text));
203
- setError(null);
204
- } catch (err) {
77
+ var JsonFilter = ({ data: initialData, classNames, testId }) => {
78
+ var _effect = (0, import_tracking.useSignals)();
79
+ try {
80
+ const [data, setData] = (0, import_react.useState)(initialData);
81
+ const [text, setText] = (0, import_react.useState)("");
82
+ const [error, setError] = (0, import_react.useState)(null);
83
+ (0, import_react.useEffect)(() => {
84
+ if (!initialData || !text.trim().length) {
205
85
  setData(initialData);
206
- setError(err);
86
+ } else {
87
+ try {
88
+ setData(import_jsonpath.default.query(initialData, text));
89
+ setError(null);
90
+ } catch (err) {
91
+ setData(initialData);
92
+ setError(err);
93
+ }
207
94
  }
208
- }
209
- }, [
210
- initialData,
211
- text
212
- ]);
213
- return /* @__PURE__ */ import_react.default.createElement("div", {
214
- className: "flex flex-col grow overflow-hidden"
215
- }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Root, {
216
- validationValence: error ? "error" : "success"
217
- }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.TextInput, {
218
- classNames: (0, import_react_ui_theme.mx)("p-1 px-2 font-mono", error && "border-red-500"),
219
- variant: "subdued",
220
- value: text,
221
- onChange: (event) => setText(event.target.value),
222
- placeholder: "JSONPath (e.g., $.graph.nodes)"
223
- })), /* @__PURE__ */ import_react.default.createElement(SyntaxHighlighter, {
224
- language: "json",
225
- classNames: (0, import_react_ui_theme.mx)("grow overflow-y-auto", classNames)
226
- }, JSON.stringify(data, null, 2)));
95
+ }, [
96
+ initialData,
97
+ text
98
+ ]);
99
+ return /* @__PURE__ */ import_react.default.createElement("div", {
100
+ className: "flex flex-col grow overflow-hidden"
101
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Root, {
102
+ validationValence: error ? "error" : "success"
103
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.TextInput, {
104
+ classNames: (0, import_react_ui_theme.mx)("p-1 px-2 font-mono", error && "border-red-500"),
105
+ variant: "subdued",
106
+ value: text,
107
+ onChange: (event) => setText(event.target.value),
108
+ placeholder: "JSONPath (e.g., $.graph.nodes)"
109
+ })), /* @__PURE__ */ import_react.default.createElement(SyntaxHighlighter, {
110
+ language: "json",
111
+ classNames: (0, import_react_ui_theme.mx)("grow overflow-y-auto", classNames),
112
+ "data-testid": testId
113
+ }, JSON.stringify(data, null, 2)));
114
+ } finally {
115
+ _effect.f();
116
+ }
227
117
  };
228
118
  // Annotate the CommonJS export names for ESM import in node:
229
119
  0 && (module.exports = {