@almadar/ui 2.54.0 → 2.55.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/avl/index.cjs +90 -48
- package/dist/avl/index.js +90 -48
- package/dist/components/index.cjs +90 -48
- package/dist/components/index.js +90 -48
- package/dist/components/molecules/markdown/CodeBlock.d.ts +8 -0
- package/dist/providers/index.cjs +90 -48
- package/dist/providers/index.js +90 -48
- package/dist/runtime/index.cjs +90 -48
- package/dist/runtime/index.js +90 -48
- package/package.json +1 -1
package/dist/avl/index.cjs
CHANGED
|
@@ -21,25 +21,25 @@ var ReactMarkdown = require('react-markdown');
|
|
|
21
21
|
var remarkGfm = require('remark-gfm');
|
|
22
22
|
var remarkMath = require('remark-math');
|
|
23
23
|
var rehypeKatex = require('rehype-katex');
|
|
24
|
-
var SyntaxHighlighter = require('react-syntax-highlighter/dist/esm/prism-light');
|
|
25
|
-
var dark = require('react-syntax-highlighter/dist/esm/styles/prism/vsc-dark-plus');
|
|
24
|
+
var SyntaxHighlighter = require('react-syntax-highlighter/dist/esm/prism-light.js');
|
|
25
|
+
var dark = require('react-syntax-highlighter/dist/esm/styles/prism/vsc-dark-plus.js');
|
|
26
26
|
var syntax = require('@almadar/syntax');
|
|
27
|
-
var langJson = require('react-syntax-highlighter/dist/esm/languages/prism/json');
|
|
28
|
-
var langJavascript = require('react-syntax-highlighter/dist/esm/languages/prism/javascript');
|
|
29
|
-
var langTypescript = require('react-syntax-highlighter/dist/esm/languages/prism/typescript');
|
|
30
|
-
var langJsx = require('react-syntax-highlighter/dist/esm/languages/prism/jsx');
|
|
31
|
-
var langTsx = require('react-syntax-highlighter/dist/esm/languages/prism/tsx');
|
|
32
|
-
var langCss = require('react-syntax-highlighter/dist/esm/languages/prism/css');
|
|
33
|
-
var langMarkdown = require('react-syntax-highlighter/dist/esm/languages/prism/markdown');
|
|
34
|
-
var langBash = require('react-syntax-highlighter/dist/esm/languages/prism/bash');
|
|
35
|
-
var langYaml = require('react-syntax-highlighter/dist/esm/languages/prism/yaml');
|
|
36
|
-
var langRust = require('react-syntax-highlighter/dist/esm/languages/prism/rust');
|
|
37
|
-
var langPython = require('react-syntax-highlighter/dist/esm/languages/prism/python');
|
|
38
|
-
var langSql = require('react-syntax-highlighter/dist/esm/languages/prism/sql');
|
|
39
|
-
var langDiff = require('react-syntax-highlighter/dist/esm/languages/prism/diff');
|
|
40
|
-
var langToml = require('react-syntax-highlighter/dist/esm/languages/prism/toml');
|
|
41
|
-
var langGo = require('react-syntax-highlighter/dist/esm/languages/prism/go');
|
|
42
|
-
var langGraphql = require('react-syntax-highlighter/dist/esm/languages/prism/graphql');
|
|
27
|
+
var langJson = require('react-syntax-highlighter/dist/esm/languages/prism/json.js');
|
|
28
|
+
var langJavascript = require('react-syntax-highlighter/dist/esm/languages/prism/javascript.js');
|
|
29
|
+
var langTypescript = require('react-syntax-highlighter/dist/esm/languages/prism/typescript.js');
|
|
30
|
+
var langJsx = require('react-syntax-highlighter/dist/esm/languages/prism/jsx.js');
|
|
31
|
+
var langTsx = require('react-syntax-highlighter/dist/esm/languages/prism/tsx.js');
|
|
32
|
+
var langCss = require('react-syntax-highlighter/dist/esm/languages/prism/css.js');
|
|
33
|
+
var langMarkdown = require('react-syntax-highlighter/dist/esm/languages/prism/markdown.js');
|
|
34
|
+
var langBash = require('react-syntax-highlighter/dist/esm/languages/prism/bash.js');
|
|
35
|
+
var langYaml = require('react-syntax-highlighter/dist/esm/languages/prism/yaml.js');
|
|
36
|
+
var langRust = require('react-syntax-highlighter/dist/esm/languages/prism/rust.js');
|
|
37
|
+
var langPython = require('react-syntax-highlighter/dist/esm/languages/prism/python.js');
|
|
38
|
+
var langSql = require('react-syntax-highlighter/dist/esm/languages/prism/sql.js');
|
|
39
|
+
var langDiff = require('react-syntax-highlighter/dist/esm/languages/prism/diff.js');
|
|
40
|
+
var langToml = require('react-syntax-highlighter/dist/esm/languages/prism/toml.js');
|
|
41
|
+
var langGo = require('react-syntax-highlighter/dist/esm/languages/prism/go.js');
|
|
42
|
+
var langGraphql = require('react-syntax-highlighter/dist/esm/languages/prism/graphql.js');
|
|
43
43
|
var core = require('@almadar/core');
|
|
44
44
|
require('@tanstack/react-query');
|
|
45
45
|
var runtime = require('@almadar/runtime');
|
|
@@ -22120,7 +22120,8 @@ var CodeBlock = React125__namespace.default.memo(
|
|
|
22120
22120
|
foldable: foldableProp,
|
|
22121
22121
|
className,
|
|
22122
22122
|
editable = false,
|
|
22123
|
-
onChange
|
|
22123
|
+
onChange,
|
|
22124
|
+
errorLines
|
|
22124
22125
|
}) => {
|
|
22125
22126
|
const code = typeof rawCode === "string" ? rawCode : String(rawCode ?? "");
|
|
22126
22127
|
const isOrb = language === "orb";
|
|
@@ -22152,6 +22153,28 @@ var CodeBlock = React125__namespace.default.memo(
|
|
|
22152
22153
|
ov.scrollLeft = ta.scrollLeft;
|
|
22153
22154
|
}
|
|
22154
22155
|
}, []);
|
|
22156
|
+
const errorLineProps = React125.useMemo(() => {
|
|
22157
|
+
if (!errorLines || errorLines.size === 0) {
|
|
22158
|
+
return LINE_PROPS_FN;
|
|
22159
|
+
}
|
|
22160
|
+
return (lineNumber) => {
|
|
22161
|
+
const severity = errorLines.get(lineNumber);
|
|
22162
|
+
if (!severity) {
|
|
22163
|
+
return { "data-line": String(lineNumber - 1) };
|
|
22164
|
+
}
|
|
22165
|
+
return {
|
|
22166
|
+
"data-line": String(lineNumber - 1),
|
|
22167
|
+
style: {
|
|
22168
|
+
display: "block",
|
|
22169
|
+
backgroundColor: severity === "error" ? "rgba(248, 113, 113, 0.18)" : "rgba(251, 191, 36, 0.18)",
|
|
22170
|
+
// amber-400 @ 18%
|
|
22171
|
+
borderLeft: `3px solid ${severity === "error" ? "#ef4444" : "#f59e0b"}`,
|
|
22172
|
+
paddingLeft: "0.5rem",
|
|
22173
|
+
marginLeft: "-0.5rem"
|
|
22174
|
+
}
|
|
22175
|
+
};
|
|
22176
|
+
};
|
|
22177
|
+
}, [errorLines]);
|
|
22155
22178
|
const isFoldable = foldableProp ?? (language === "orb" || language === "json");
|
|
22156
22179
|
const [collapsed, setCollapsed] = React125.useState(() => /* @__PURE__ */ new Set());
|
|
22157
22180
|
const foldRegions = React125.useMemo(
|
|
@@ -22312,24 +22335,40 @@ var CodeBlock = React125__namespace.default.memo(
|
|
|
22312
22335
|
}
|
|
22313
22336
|
),
|
|
22314
22337
|
editable ? (
|
|
22315
|
-
/* GAP-77: editable mode = transparent
|
|
22316
|
-
|
|
22317
|
-
|
|
22318
|
-
|
|
22319
|
-
|
|
22320
|
-
|
|
22338
|
+
/* GAP-77 / GAP-82 / GAP-83: editable mode = transparent textarea on
|
|
22339
|
+
top of a Prism-highlighted SyntaxHighlighter overlay.
|
|
22340
|
+
|
|
22341
|
+
Layout: BOTH children are `position: absolute, inset: 0` so neither
|
|
22342
|
+
contributes to flow. The parent Box has `height: 100%` so it fills
|
|
22343
|
+
whatever container the consumer provides (the consumer is
|
|
22344
|
+
responsible for giving the parent a real height — usually via flex
|
|
22345
|
+
column with `minHeight: 0`).
|
|
22346
|
+
|
|
22347
|
+
Stacking: the overlay is FIRST in DOM order so it paints first
|
|
22348
|
+
(behind), the textarea is SECOND so it paints second (on top). No
|
|
22349
|
+
explicit z-index — DOM order alone determines stacking inside the
|
|
22350
|
+
parent's stacking context. The textarea has `color: transparent`
|
|
22351
|
+
plus `WebkitTextFillColor: transparent` (Safari) so its glyphs
|
|
22352
|
+
never paint, but the caret stays visible via `caretColor`.
|
|
22321
22353
|
|
|
22322
|
-
Scroll sync:
|
|
22323
|
-
|
|
22354
|
+
Scroll sync: textarea scrolls naturally; `handleEditableScroll`
|
|
22355
|
+
mirrors its scrollTop/scrollLeft onto the overlay div so the
|
|
22356
|
+
highlighted spans stay aligned with the textarea content.
|
|
22357
|
+
|
|
22358
|
+
Error highlights (GAP-80): `errorLines` prop accepts a Map of
|
|
22359
|
+
1-based line numbers → severity. The overlay's SyntaxHighlighter
|
|
22360
|
+
uses `wrapLines` + `lineProps` to paint a colored background on
|
|
22361
|
+
those lines. */
|
|
22324
22362
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
22325
22363
|
Box,
|
|
22326
22364
|
{
|
|
22327
22365
|
style: {
|
|
22328
22366
|
position: "relative",
|
|
22329
|
-
|
|
22330
|
-
borderRadius: hasHeader ? "0 0 0.5rem 0.5rem" : "0.5rem",
|
|
22367
|
+
height: "100%",
|
|
22331
22368
|
minHeight: "160px",
|
|
22332
22369
|
maxHeight,
|
|
22370
|
+
backgroundColor: "#1e1e1e",
|
|
22371
|
+
borderRadius: hasHeader ? "0 0 0.5rem 0.5rem" : "0.5rem",
|
|
22333
22372
|
overflow: "hidden"
|
|
22334
22373
|
},
|
|
22335
22374
|
children: [
|
|
@@ -22340,10 +22379,12 @@ var CodeBlock = React125__namespace.default.memo(
|
|
|
22340
22379
|
"aria-hidden": true,
|
|
22341
22380
|
style: {
|
|
22342
22381
|
position: "absolute",
|
|
22343
|
-
|
|
22382
|
+
top: 0,
|
|
22383
|
+
left: 0,
|
|
22384
|
+
width: "100%",
|
|
22385
|
+
height: "100%",
|
|
22344
22386
|
overflow: "hidden",
|
|
22345
|
-
pointerEvents: "none"
|
|
22346
|
-
maxHeight
|
|
22387
|
+
pointerEvents: "none"
|
|
22347
22388
|
},
|
|
22348
22389
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
22349
22390
|
SyntaxHighlighter__default.default,
|
|
@@ -22351,6 +22392,8 @@ var CodeBlock = React125__namespace.default.memo(
|
|
|
22351
22392
|
PreTag: "div",
|
|
22352
22393
|
language,
|
|
22353
22394
|
style: activeStyle,
|
|
22395
|
+
wrapLines: errorLines && errorLines.size > 0,
|
|
22396
|
+
lineProps: errorLineProps,
|
|
22354
22397
|
customStyle: {
|
|
22355
22398
|
backgroundColor: "transparent",
|
|
22356
22399
|
borderRadius: 0,
|
|
@@ -22358,7 +22401,6 @@ var CodeBlock = React125__namespace.default.memo(
|
|
|
22358
22401
|
margin: 0,
|
|
22359
22402
|
whiteSpace: "pre",
|
|
22360
22403
|
minWidth: "100%",
|
|
22361
|
-
minHeight: "160px",
|
|
22362
22404
|
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Courier New", monospace',
|
|
22363
22405
|
fontSize: "13px",
|
|
22364
22406
|
lineHeight: "1.5"
|
|
@@ -22387,23 +22429,23 @@ var CodeBlock = React125__namespace.default.memo(
|
|
|
22387
22429
|
onScroll: handleEditableScroll,
|
|
22388
22430
|
spellCheck: false,
|
|
22389
22431
|
style: {
|
|
22390
|
-
position: "
|
|
22391
|
-
|
|
22392
|
-
|
|
22393
|
-
fontSize: "13px",
|
|
22394
|
-
lineHeight: "1.5",
|
|
22395
|
-
backgroundColor: "transparent",
|
|
22396
|
-
color: "transparent",
|
|
22397
|
-
caretColor: "#e6e6e6",
|
|
22398
|
-
borderRadius: hasHeader ? "0 0 0.5rem 0.5rem" : "0.5rem",
|
|
22399
|
-
border: "none",
|
|
22400
|
-
padding: "1rem",
|
|
22401
|
-
resize: "none",
|
|
22402
|
-
minHeight: "160px",
|
|
22403
|
-
maxHeight,
|
|
22432
|
+
position: "absolute",
|
|
22433
|
+
top: 0,
|
|
22434
|
+
left: 0,
|
|
22404
22435
|
width: "100%",
|
|
22405
22436
|
height: "100%",
|
|
22437
|
+
padding: "1rem",
|
|
22438
|
+
margin: 0,
|
|
22439
|
+
border: "none",
|
|
22406
22440
|
outline: "none",
|
|
22441
|
+
resize: "none",
|
|
22442
|
+
backgroundColor: "transparent",
|
|
22443
|
+
color: "transparent",
|
|
22444
|
+
caretColor: "#e6e6e6",
|
|
22445
|
+
WebkitTextFillColor: "transparent",
|
|
22446
|
+
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Courier New", monospace',
|
|
22447
|
+
fontSize: "13px",
|
|
22448
|
+
lineHeight: "1.5",
|
|
22407
22449
|
whiteSpace: "pre",
|
|
22408
22450
|
overflowWrap: "normal",
|
|
22409
22451
|
overflow: "auto"
|
|
@@ -22434,7 +22476,7 @@ var CodeBlock = React125__namespace.default.memo(
|
|
|
22434
22476
|
)
|
|
22435
22477
|
] });
|
|
22436
22478
|
},
|
|
22437
|
-
(prev, next) => prev.language === next.language && prev.code === next.code && prev.showCopyButton === next.showCopyButton && prev.maxHeight === next.maxHeight && prev.foldable === next.foldable && prev.editable === next.editable && prev.onChange === next.onChange
|
|
22479
|
+
(prev, next) => prev.language === next.language && prev.code === next.code && prev.showCopyButton === next.showCopyButton && prev.maxHeight === next.maxHeight && prev.foldable === next.foldable && prev.editable === next.editable && prev.onChange === next.onChange && prev.errorLines === next.errorLines
|
|
22438
22480
|
);
|
|
22439
22481
|
CodeBlock.displayName = "CodeBlock";
|
|
22440
22482
|
|
package/dist/avl/index.js
CHANGED
|
@@ -22,25 +22,25 @@ import ReactMarkdown from 'react-markdown';
|
|
|
22
22
|
import remarkGfm from 'remark-gfm';
|
|
23
23
|
import remarkMath from 'remark-math';
|
|
24
24
|
import rehypeKatex from 'rehype-katex';
|
|
25
|
-
import SyntaxHighlighter from 'react-syntax-highlighter/dist/esm/prism-light';
|
|
26
|
-
import dark from 'react-syntax-highlighter/dist/esm/styles/prism/vsc-dark-plus';
|
|
25
|
+
import SyntaxHighlighter from 'react-syntax-highlighter/dist/esm/prism-light.js';
|
|
26
|
+
import dark from 'react-syntax-highlighter/dist/esm/styles/prism/vsc-dark-plus.js';
|
|
27
27
|
import { orbLanguage, loloLanguage, ORB_COLORS } from '@almadar/syntax';
|
|
28
|
-
import langJson from 'react-syntax-highlighter/dist/esm/languages/prism/json';
|
|
29
|
-
import langJavascript from 'react-syntax-highlighter/dist/esm/languages/prism/javascript';
|
|
30
|
-
import langTypescript from 'react-syntax-highlighter/dist/esm/languages/prism/typescript';
|
|
31
|
-
import langJsx from 'react-syntax-highlighter/dist/esm/languages/prism/jsx';
|
|
32
|
-
import langTsx from 'react-syntax-highlighter/dist/esm/languages/prism/tsx';
|
|
33
|
-
import langCss from 'react-syntax-highlighter/dist/esm/languages/prism/css';
|
|
34
|
-
import langMarkdown from 'react-syntax-highlighter/dist/esm/languages/prism/markdown';
|
|
35
|
-
import langBash from 'react-syntax-highlighter/dist/esm/languages/prism/bash';
|
|
36
|
-
import langYaml from 'react-syntax-highlighter/dist/esm/languages/prism/yaml';
|
|
37
|
-
import langRust from 'react-syntax-highlighter/dist/esm/languages/prism/rust';
|
|
38
|
-
import langPython from 'react-syntax-highlighter/dist/esm/languages/prism/python';
|
|
39
|
-
import langSql from 'react-syntax-highlighter/dist/esm/languages/prism/sql';
|
|
40
|
-
import langDiff from 'react-syntax-highlighter/dist/esm/languages/prism/diff';
|
|
41
|
-
import langToml from 'react-syntax-highlighter/dist/esm/languages/prism/toml';
|
|
42
|
-
import langGo from 'react-syntax-highlighter/dist/esm/languages/prism/go';
|
|
43
|
-
import langGraphql from 'react-syntax-highlighter/dist/esm/languages/prism/graphql';
|
|
28
|
+
import langJson from 'react-syntax-highlighter/dist/esm/languages/prism/json.js';
|
|
29
|
+
import langJavascript from 'react-syntax-highlighter/dist/esm/languages/prism/javascript.js';
|
|
30
|
+
import langTypescript from 'react-syntax-highlighter/dist/esm/languages/prism/typescript.js';
|
|
31
|
+
import langJsx from 'react-syntax-highlighter/dist/esm/languages/prism/jsx.js';
|
|
32
|
+
import langTsx from 'react-syntax-highlighter/dist/esm/languages/prism/tsx.js';
|
|
33
|
+
import langCss from 'react-syntax-highlighter/dist/esm/languages/prism/css.js';
|
|
34
|
+
import langMarkdown from 'react-syntax-highlighter/dist/esm/languages/prism/markdown.js';
|
|
35
|
+
import langBash from 'react-syntax-highlighter/dist/esm/languages/prism/bash.js';
|
|
36
|
+
import langYaml from 'react-syntax-highlighter/dist/esm/languages/prism/yaml.js';
|
|
37
|
+
import langRust from 'react-syntax-highlighter/dist/esm/languages/prism/rust.js';
|
|
38
|
+
import langPython from 'react-syntax-highlighter/dist/esm/languages/prism/python.js';
|
|
39
|
+
import langSql from 'react-syntax-highlighter/dist/esm/languages/prism/sql.js';
|
|
40
|
+
import langDiff from 'react-syntax-highlighter/dist/esm/languages/prism/diff.js';
|
|
41
|
+
import langToml from 'react-syntax-highlighter/dist/esm/languages/prism/toml.js';
|
|
42
|
+
import langGo from 'react-syntax-highlighter/dist/esm/languages/prism/go.js';
|
|
43
|
+
import langGraphql from 'react-syntax-highlighter/dist/esm/languages/prism/graphql.js';
|
|
44
44
|
import { FieldTypeSchema, isEntityCall, schemaToIR, getPage, isCircuitEvent } from '@almadar/core';
|
|
45
45
|
import '@tanstack/react-query';
|
|
46
46
|
import { StateMachineManager, createContextFromBindings, interpolateValue, EffectExecutor } from '@almadar/runtime';
|
|
@@ -22074,7 +22074,8 @@ var CodeBlock = React125__default.memo(
|
|
|
22074
22074
|
foldable: foldableProp,
|
|
22075
22075
|
className,
|
|
22076
22076
|
editable = false,
|
|
22077
|
-
onChange
|
|
22077
|
+
onChange,
|
|
22078
|
+
errorLines
|
|
22078
22079
|
}) => {
|
|
22079
22080
|
const code = typeof rawCode === "string" ? rawCode : String(rawCode ?? "");
|
|
22080
22081
|
const isOrb = language === "orb";
|
|
@@ -22106,6 +22107,28 @@ var CodeBlock = React125__default.memo(
|
|
|
22106
22107
|
ov.scrollLeft = ta.scrollLeft;
|
|
22107
22108
|
}
|
|
22108
22109
|
}, []);
|
|
22110
|
+
const errorLineProps = useMemo(() => {
|
|
22111
|
+
if (!errorLines || errorLines.size === 0) {
|
|
22112
|
+
return LINE_PROPS_FN;
|
|
22113
|
+
}
|
|
22114
|
+
return (lineNumber) => {
|
|
22115
|
+
const severity = errorLines.get(lineNumber);
|
|
22116
|
+
if (!severity) {
|
|
22117
|
+
return { "data-line": String(lineNumber - 1) };
|
|
22118
|
+
}
|
|
22119
|
+
return {
|
|
22120
|
+
"data-line": String(lineNumber - 1),
|
|
22121
|
+
style: {
|
|
22122
|
+
display: "block",
|
|
22123
|
+
backgroundColor: severity === "error" ? "rgba(248, 113, 113, 0.18)" : "rgba(251, 191, 36, 0.18)",
|
|
22124
|
+
// amber-400 @ 18%
|
|
22125
|
+
borderLeft: `3px solid ${severity === "error" ? "#ef4444" : "#f59e0b"}`,
|
|
22126
|
+
paddingLeft: "0.5rem",
|
|
22127
|
+
marginLeft: "-0.5rem"
|
|
22128
|
+
}
|
|
22129
|
+
};
|
|
22130
|
+
};
|
|
22131
|
+
}, [errorLines]);
|
|
22109
22132
|
const isFoldable = foldableProp ?? (language === "orb" || language === "json");
|
|
22110
22133
|
const [collapsed, setCollapsed] = useState(() => /* @__PURE__ */ new Set());
|
|
22111
22134
|
const foldRegions = useMemo(
|
|
@@ -22266,24 +22289,40 @@ var CodeBlock = React125__default.memo(
|
|
|
22266
22289
|
}
|
|
22267
22290
|
),
|
|
22268
22291
|
editable ? (
|
|
22269
|
-
/* GAP-77: editable mode = transparent
|
|
22270
|
-
|
|
22271
|
-
|
|
22272
|
-
|
|
22273
|
-
|
|
22274
|
-
|
|
22292
|
+
/* GAP-77 / GAP-82 / GAP-83: editable mode = transparent textarea on
|
|
22293
|
+
top of a Prism-highlighted SyntaxHighlighter overlay.
|
|
22294
|
+
|
|
22295
|
+
Layout: BOTH children are `position: absolute, inset: 0` so neither
|
|
22296
|
+
contributes to flow. The parent Box has `height: 100%` so it fills
|
|
22297
|
+
whatever container the consumer provides (the consumer is
|
|
22298
|
+
responsible for giving the parent a real height — usually via flex
|
|
22299
|
+
column with `minHeight: 0`).
|
|
22300
|
+
|
|
22301
|
+
Stacking: the overlay is FIRST in DOM order so it paints first
|
|
22302
|
+
(behind), the textarea is SECOND so it paints second (on top). No
|
|
22303
|
+
explicit z-index — DOM order alone determines stacking inside the
|
|
22304
|
+
parent's stacking context. The textarea has `color: transparent`
|
|
22305
|
+
plus `WebkitTextFillColor: transparent` (Safari) so its glyphs
|
|
22306
|
+
never paint, but the caret stays visible via `caretColor`.
|
|
22275
22307
|
|
|
22276
|
-
Scroll sync:
|
|
22277
|
-
|
|
22308
|
+
Scroll sync: textarea scrolls naturally; `handleEditableScroll`
|
|
22309
|
+
mirrors its scrollTop/scrollLeft onto the overlay div so the
|
|
22310
|
+
highlighted spans stay aligned with the textarea content.
|
|
22311
|
+
|
|
22312
|
+
Error highlights (GAP-80): `errorLines` prop accepts a Map of
|
|
22313
|
+
1-based line numbers → severity. The overlay's SyntaxHighlighter
|
|
22314
|
+
uses `wrapLines` + `lineProps` to paint a colored background on
|
|
22315
|
+
those lines. */
|
|
22278
22316
|
/* @__PURE__ */ jsxs(
|
|
22279
22317
|
Box,
|
|
22280
22318
|
{
|
|
22281
22319
|
style: {
|
|
22282
22320
|
position: "relative",
|
|
22283
|
-
|
|
22284
|
-
borderRadius: hasHeader ? "0 0 0.5rem 0.5rem" : "0.5rem",
|
|
22321
|
+
height: "100%",
|
|
22285
22322
|
minHeight: "160px",
|
|
22286
22323
|
maxHeight,
|
|
22324
|
+
backgroundColor: "#1e1e1e",
|
|
22325
|
+
borderRadius: hasHeader ? "0 0 0.5rem 0.5rem" : "0.5rem",
|
|
22287
22326
|
overflow: "hidden"
|
|
22288
22327
|
},
|
|
22289
22328
|
children: [
|
|
@@ -22294,10 +22333,12 @@ var CodeBlock = React125__default.memo(
|
|
|
22294
22333
|
"aria-hidden": true,
|
|
22295
22334
|
style: {
|
|
22296
22335
|
position: "absolute",
|
|
22297
|
-
|
|
22336
|
+
top: 0,
|
|
22337
|
+
left: 0,
|
|
22338
|
+
width: "100%",
|
|
22339
|
+
height: "100%",
|
|
22298
22340
|
overflow: "hidden",
|
|
22299
|
-
pointerEvents: "none"
|
|
22300
|
-
maxHeight
|
|
22341
|
+
pointerEvents: "none"
|
|
22301
22342
|
},
|
|
22302
22343
|
children: /* @__PURE__ */ jsx(
|
|
22303
22344
|
SyntaxHighlighter,
|
|
@@ -22305,6 +22346,8 @@ var CodeBlock = React125__default.memo(
|
|
|
22305
22346
|
PreTag: "div",
|
|
22306
22347
|
language,
|
|
22307
22348
|
style: activeStyle,
|
|
22349
|
+
wrapLines: errorLines && errorLines.size > 0,
|
|
22350
|
+
lineProps: errorLineProps,
|
|
22308
22351
|
customStyle: {
|
|
22309
22352
|
backgroundColor: "transparent",
|
|
22310
22353
|
borderRadius: 0,
|
|
@@ -22312,7 +22355,6 @@ var CodeBlock = React125__default.memo(
|
|
|
22312
22355
|
margin: 0,
|
|
22313
22356
|
whiteSpace: "pre",
|
|
22314
22357
|
minWidth: "100%",
|
|
22315
|
-
minHeight: "160px",
|
|
22316
22358
|
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Courier New", monospace',
|
|
22317
22359
|
fontSize: "13px",
|
|
22318
22360
|
lineHeight: "1.5"
|
|
@@ -22341,23 +22383,23 @@ var CodeBlock = React125__default.memo(
|
|
|
22341
22383
|
onScroll: handleEditableScroll,
|
|
22342
22384
|
spellCheck: false,
|
|
22343
22385
|
style: {
|
|
22344
|
-
position: "
|
|
22345
|
-
|
|
22346
|
-
|
|
22347
|
-
fontSize: "13px",
|
|
22348
|
-
lineHeight: "1.5",
|
|
22349
|
-
backgroundColor: "transparent",
|
|
22350
|
-
color: "transparent",
|
|
22351
|
-
caretColor: "#e6e6e6",
|
|
22352
|
-
borderRadius: hasHeader ? "0 0 0.5rem 0.5rem" : "0.5rem",
|
|
22353
|
-
border: "none",
|
|
22354
|
-
padding: "1rem",
|
|
22355
|
-
resize: "none",
|
|
22356
|
-
minHeight: "160px",
|
|
22357
|
-
maxHeight,
|
|
22386
|
+
position: "absolute",
|
|
22387
|
+
top: 0,
|
|
22388
|
+
left: 0,
|
|
22358
22389
|
width: "100%",
|
|
22359
22390
|
height: "100%",
|
|
22391
|
+
padding: "1rem",
|
|
22392
|
+
margin: 0,
|
|
22393
|
+
border: "none",
|
|
22360
22394
|
outline: "none",
|
|
22395
|
+
resize: "none",
|
|
22396
|
+
backgroundColor: "transparent",
|
|
22397
|
+
color: "transparent",
|
|
22398
|
+
caretColor: "#e6e6e6",
|
|
22399
|
+
WebkitTextFillColor: "transparent",
|
|
22400
|
+
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Courier New", monospace',
|
|
22401
|
+
fontSize: "13px",
|
|
22402
|
+
lineHeight: "1.5",
|
|
22361
22403
|
whiteSpace: "pre",
|
|
22362
22404
|
overflowWrap: "normal",
|
|
22363
22405
|
overflow: "auto"
|
|
@@ -22388,7 +22430,7 @@ var CodeBlock = React125__default.memo(
|
|
|
22388
22430
|
)
|
|
22389
22431
|
] });
|
|
22390
22432
|
},
|
|
22391
|
-
(prev, next) => prev.language === next.language && prev.code === next.code && prev.showCopyButton === next.showCopyButton && prev.maxHeight === next.maxHeight && prev.foldable === next.foldable && prev.editable === next.editable && prev.onChange === next.onChange
|
|
22433
|
+
(prev, next) => prev.language === next.language && prev.code === next.code && prev.showCopyButton === next.showCopyButton && prev.maxHeight === next.maxHeight && prev.foldable === next.foldable && prev.editable === next.editable && prev.onChange === next.onChange && prev.errorLines === next.errorLines
|
|
22392
22434
|
);
|
|
22393
22435
|
CodeBlock.displayName = "CodeBlock";
|
|
22394
22436
|
|
|
@@ -12,25 +12,25 @@ var ReactMarkdown = require('react-markdown');
|
|
|
12
12
|
var remarkGfm = require('remark-gfm');
|
|
13
13
|
var remarkMath = require('remark-math');
|
|
14
14
|
var rehypeKatex = require('rehype-katex');
|
|
15
|
-
var SyntaxHighlighter = require('react-syntax-highlighter/dist/esm/prism-light');
|
|
16
|
-
var dark = require('react-syntax-highlighter/dist/esm/styles/prism/vsc-dark-plus');
|
|
15
|
+
var SyntaxHighlighter = require('react-syntax-highlighter/dist/esm/prism-light.js');
|
|
16
|
+
var dark = require('react-syntax-highlighter/dist/esm/styles/prism/vsc-dark-plus.js');
|
|
17
17
|
var syntax = require('@almadar/syntax');
|
|
18
|
-
var langJson = require('react-syntax-highlighter/dist/esm/languages/prism/json');
|
|
19
|
-
var langJavascript = require('react-syntax-highlighter/dist/esm/languages/prism/javascript');
|
|
20
|
-
var langTypescript = require('react-syntax-highlighter/dist/esm/languages/prism/typescript');
|
|
21
|
-
var langJsx = require('react-syntax-highlighter/dist/esm/languages/prism/jsx');
|
|
22
|
-
var langTsx = require('react-syntax-highlighter/dist/esm/languages/prism/tsx');
|
|
23
|
-
var langCss = require('react-syntax-highlighter/dist/esm/languages/prism/css');
|
|
24
|
-
var langMarkdown = require('react-syntax-highlighter/dist/esm/languages/prism/markdown');
|
|
25
|
-
var langBash = require('react-syntax-highlighter/dist/esm/languages/prism/bash');
|
|
26
|
-
var langYaml = require('react-syntax-highlighter/dist/esm/languages/prism/yaml');
|
|
27
|
-
var langRust = require('react-syntax-highlighter/dist/esm/languages/prism/rust');
|
|
28
|
-
var langPython = require('react-syntax-highlighter/dist/esm/languages/prism/python');
|
|
29
|
-
var langSql = require('react-syntax-highlighter/dist/esm/languages/prism/sql');
|
|
30
|
-
var langDiff = require('react-syntax-highlighter/dist/esm/languages/prism/diff');
|
|
31
|
-
var langToml = require('react-syntax-highlighter/dist/esm/languages/prism/toml');
|
|
32
|
-
var langGo = require('react-syntax-highlighter/dist/esm/languages/prism/go');
|
|
33
|
-
var langGraphql = require('react-syntax-highlighter/dist/esm/languages/prism/graphql');
|
|
18
|
+
var langJson = require('react-syntax-highlighter/dist/esm/languages/prism/json.js');
|
|
19
|
+
var langJavascript = require('react-syntax-highlighter/dist/esm/languages/prism/javascript.js');
|
|
20
|
+
var langTypescript = require('react-syntax-highlighter/dist/esm/languages/prism/typescript.js');
|
|
21
|
+
var langJsx = require('react-syntax-highlighter/dist/esm/languages/prism/jsx.js');
|
|
22
|
+
var langTsx = require('react-syntax-highlighter/dist/esm/languages/prism/tsx.js');
|
|
23
|
+
var langCss = require('react-syntax-highlighter/dist/esm/languages/prism/css.js');
|
|
24
|
+
var langMarkdown = require('react-syntax-highlighter/dist/esm/languages/prism/markdown.js');
|
|
25
|
+
var langBash = require('react-syntax-highlighter/dist/esm/languages/prism/bash.js');
|
|
26
|
+
var langYaml = require('react-syntax-highlighter/dist/esm/languages/prism/yaml.js');
|
|
27
|
+
var langRust = require('react-syntax-highlighter/dist/esm/languages/prism/rust.js');
|
|
28
|
+
var langPython = require('react-syntax-highlighter/dist/esm/languages/prism/python.js');
|
|
29
|
+
var langSql = require('react-syntax-highlighter/dist/esm/languages/prism/sql.js');
|
|
30
|
+
var langDiff = require('react-syntax-highlighter/dist/esm/languages/prism/diff.js');
|
|
31
|
+
var langToml = require('react-syntax-highlighter/dist/esm/languages/prism/toml.js');
|
|
32
|
+
var langGo = require('react-syntax-highlighter/dist/esm/languages/prism/go.js');
|
|
33
|
+
var langGraphql = require('react-syntax-highlighter/dist/esm/languages/prism/graphql.js');
|
|
34
34
|
var context = require('@almadar/ui/context');
|
|
35
35
|
var patterns = require('@almadar/patterns');
|
|
36
36
|
var reactRouterDom = require('react-router-dom');
|
|
@@ -9211,7 +9211,8 @@ var CodeBlock = React90__namespace.default.memo(
|
|
|
9211
9211
|
foldable: foldableProp,
|
|
9212
9212
|
className,
|
|
9213
9213
|
editable = false,
|
|
9214
|
-
onChange
|
|
9214
|
+
onChange,
|
|
9215
|
+
errorLines
|
|
9215
9216
|
}) => {
|
|
9216
9217
|
const code = typeof rawCode === "string" ? rawCode : String(rawCode ?? "");
|
|
9217
9218
|
const isOrb = language === "orb";
|
|
@@ -9243,6 +9244,28 @@ var CodeBlock = React90__namespace.default.memo(
|
|
|
9243
9244
|
ov.scrollLeft = ta.scrollLeft;
|
|
9244
9245
|
}
|
|
9245
9246
|
}, []);
|
|
9247
|
+
const errorLineProps = React90.useMemo(() => {
|
|
9248
|
+
if (!errorLines || errorLines.size === 0) {
|
|
9249
|
+
return LINE_PROPS_FN;
|
|
9250
|
+
}
|
|
9251
|
+
return (lineNumber) => {
|
|
9252
|
+
const severity = errorLines.get(lineNumber);
|
|
9253
|
+
if (!severity) {
|
|
9254
|
+
return { "data-line": String(lineNumber - 1) };
|
|
9255
|
+
}
|
|
9256
|
+
return {
|
|
9257
|
+
"data-line": String(lineNumber - 1),
|
|
9258
|
+
style: {
|
|
9259
|
+
display: "block",
|
|
9260
|
+
backgroundColor: severity === "error" ? "rgba(248, 113, 113, 0.18)" : "rgba(251, 191, 36, 0.18)",
|
|
9261
|
+
// amber-400 @ 18%
|
|
9262
|
+
borderLeft: `3px solid ${severity === "error" ? "#ef4444" : "#f59e0b"}`,
|
|
9263
|
+
paddingLeft: "0.5rem",
|
|
9264
|
+
marginLeft: "-0.5rem"
|
|
9265
|
+
}
|
|
9266
|
+
};
|
|
9267
|
+
};
|
|
9268
|
+
}, [errorLines]);
|
|
9246
9269
|
const isFoldable = foldableProp ?? (language === "orb" || language === "json");
|
|
9247
9270
|
const [collapsed, setCollapsed] = React90.useState(() => /* @__PURE__ */ new Set());
|
|
9248
9271
|
const foldRegions = React90.useMemo(
|
|
@@ -9403,24 +9426,40 @@ var CodeBlock = React90__namespace.default.memo(
|
|
|
9403
9426
|
}
|
|
9404
9427
|
),
|
|
9405
9428
|
editable ? (
|
|
9406
|
-
/* GAP-77: editable mode = transparent
|
|
9407
|
-
|
|
9408
|
-
|
|
9409
|
-
|
|
9410
|
-
|
|
9411
|
-
|
|
9429
|
+
/* GAP-77 / GAP-82 / GAP-83: editable mode = transparent textarea on
|
|
9430
|
+
top of a Prism-highlighted SyntaxHighlighter overlay.
|
|
9431
|
+
|
|
9432
|
+
Layout: BOTH children are `position: absolute, inset: 0` so neither
|
|
9433
|
+
contributes to flow. The parent Box has `height: 100%` so it fills
|
|
9434
|
+
whatever container the consumer provides (the consumer is
|
|
9435
|
+
responsible for giving the parent a real height — usually via flex
|
|
9436
|
+
column with `minHeight: 0`).
|
|
9437
|
+
|
|
9438
|
+
Stacking: the overlay is FIRST in DOM order so it paints first
|
|
9439
|
+
(behind), the textarea is SECOND so it paints second (on top). No
|
|
9440
|
+
explicit z-index — DOM order alone determines stacking inside the
|
|
9441
|
+
parent's stacking context. The textarea has `color: transparent`
|
|
9442
|
+
plus `WebkitTextFillColor: transparent` (Safari) so its glyphs
|
|
9443
|
+
never paint, but the caret stays visible via `caretColor`.
|
|
9412
9444
|
|
|
9413
|
-
Scroll sync:
|
|
9414
|
-
|
|
9445
|
+
Scroll sync: textarea scrolls naturally; `handleEditableScroll`
|
|
9446
|
+
mirrors its scrollTop/scrollLeft onto the overlay div so the
|
|
9447
|
+
highlighted spans stay aligned with the textarea content.
|
|
9448
|
+
|
|
9449
|
+
Error highlights (GAP-80): `errorLines` prop accepts a Map of
|
|
9450
|
+
1-based line numbers → severity. The overlay's SyntaxHighlighter
|
|
9451
|
+
uses `wrapLines` + `lineProps` to paint a colored background on
|
|
9452
|
+
those lines. */
|
|
9415
9453
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
9416
9454
|
Box,
|
|
9417
9455
|
{
|
|
9418
9456
|
style: {
|
|
9419
9457
|
position: "relative",
|
|
9420
|
-
|
|
9421
|
-
borderRadius: hasHeader ? "0 0 0.5rem 0.5rem" : "0.5rem",
|
|
9458
|
+
height: "100%",
|
|
9422
9459
|
minHeight: "160px",
|
|
9423
9460
|
maxHeight,
|
|
9461
|
+
backgroundColor: "#1e1e1e",
|
|
9462
|
+
borderRadius: hasHeader ? "0 0 0.5rem 0.5rem" : "0.5rem",
|
|
9424
9463
|
overflow: "hidden"
|
|
9425
9464
|
},
|
|
9426
9465
|
children: [
|
|
@@ -9431,10 +9470,12 @@ var CodeBlock = React90__namespace.default.memo(
|
|
|
9431
9470
|
"aria-hidden": true,
|
|
9432
9471
|
style: {
|
|
9433
9472
|
position: "absolute",
|
|
9434
|
-
|
|
9473
|
+
top: 0,
|
|
9474
|
+
left: 0,
|
|
9475
|
+
width: "100%",
|
|
9476
|
+
height: "100%",
|
|
9435
9477
|
overflow: "hidden",
|
|
9436
|
-
pointerEvents: "none"
|
|
9437
|
-
maxHeight
|
|
9478
|
+
pointerEvents: "none"
|
|
9438
9479
|
},
|
|
9439
9480
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9440
9481
|
SyntaxHighlighter__default.default,
|
|
@@ -9442,6 +9483,8 @@ var CodeBlock = React90__namespace.default.memo(
|
|
|
9442
9483
|
PreTag: "div",
|
|
9443
9484
|
language,
|
|
9444
9485
|
style: activeStyle,
|
|
9486
|
+
wrapLines: errorLines && errorLines.size > 0,
|
|
9487
|
+
lineProps: errorLineProps,
|
|
9445
9488
|
customStyle: {
|
|
9446
9489
|
backgroundColor: "transparent",
|
|
9447
9490
|
borderRadius: 0,
|
|
@@ -9449,7 +9492,6 @@ var CodeBlock = React90__namespace.default.memo(
|
|
|
9449
9492
|
margin: 0,
|
|
9450
9493
|
whiteSpace: "pre",
|
|
9451
9494
|
minWidth: "100%",
|
|
9452
|
-
minHeight: "160px",
|
|
9453
9495
|
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Courier New", monospace',
|
|
9454
9496
|
fontSize: "13px",
|
|
9455
9497
|
lineHeight: "1.5"
|
|
@@ -9478,23 +9520,23 @@ var CodeBlock = React90__namespace.default.memo(
|
|
|
9478
9520
|
onScroll: handleEditableScroll,
|
|
9479
9521
|
spellCheck: false,
|
|
9480
9522
|
style: {
|
|
9481
|
-
position: "
|
|
9482
|
-
|
|
9483
|
-
|
|
9484
|
-
fontSize: "13px",
|
|
9485
|
-
lineHeight: "1.5",
|
|
9486
|
-
backgroundColor: "transparent",
|
|
9487
|
-
color: "transparent",
|
|
9488
|
-
caretColor: "#e6e6e6",
|
|
9489
|
-
borderRadius: hasHeader ? "0 0 0.5rem 0.5rem" : "0.5rem",
|
|
9490
|
-
border: "none",
|
|
9491
|
-
padding: "1rem",
|
|
9492
|
-
resize: "none",
|
|
9493
|
-
minHeight: "160px",
|
|
9494
|
-
maxHeight,
|
|
9523
|
+
position: "absolute",
|
|
9524
|
+
top: 0,
|
|
9525
|
+
left: 0,
|
|
9495
9526
|
width: "100%",
|
|
9496
9527
|
height: "100%",
|
|
9528
|
+
padding: "1rem",
|
|
9529
|
+
margin: 0,
|
|
9530
|
+
border: "none",
|
|
9497
9531
|
outline: "none",
|
|
9532
|
+
resize: "none",
|
|
9533
|
+
backgroundColor: "transparent",
|
|
9534
|
+
color: "transparent",
|
|
9535
|
+
caretColor: "#e6e6e6",
|
|
9536
|
+
WebkitTextFillColor: "transparent",
|
|
9537
|
+
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Courier New", monospace',
|
|
9538
|
+
fontSize: "13px",
|
|
9539
|
+
lineHeight: "1.5",
|
|
9498
9540
|
whiteSpace: "pre",
|
|
9499
9541
|
overflowWrap: "normal",
|
|
9500
9542
|
overflow: "auto"
|
|
@@ -9525,7 +9567,7 @@ var CodeBlock = React90__namespace.default.memo(
|
|
|
9525
9567
|
)
|
|
9526
9568
|
] });
|
|
9527
9569
|
},
|
|
9528
|
-
(prev, next) => prev.language === next.language && prev.code === next.code && prev.showCopyButton === next.showCopyButton && prev.maxHeight === next.maxHeight && prev.foldable === next.foldable && prev.editable === next.editable && prev.onChange === next.onChange
|
|
9570
|
+
(prev, next) => prev.language === next.language && prev.code === next.code && prev.showCopyButton === next.showCopyButton && prev.maxHeight === next.maxHeight && prev.foldable === next.foldable && prev.editable === next.editable && prev.onChange === next.onChange && prev.errorLines === next.errorLines
|
|
9529
9571
|
);
|
|
9530
9572
|
CodeBlock.displayName = "CodeBlock";
|
|
9531
9573
|
init_Typography();
|