react-native-nitro-markdown 0.4.2 → 0.5.0
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/README.md +605 -318
- package/android/src/main/java/com/margelo/nitro/com/nitromarkdown/HybridMarkdownSession.kt +27 -8
- package/cpp/bindings/HybridMarkdownParser.cpp +216 -66
- package/cpp/bindings/HybridMarkdownParser.hpp +2 -0
- package/ios/HybridMarkdownSession.swift +33 -7
- package/lib/commonjs/MarkdownContext.js +2 -1
- package/lib/commonjs/MarkdownContext.js.map +1 -1
- package/lib/commonjs/headless.js +41 -5
- package/lib/commonjs/headless.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/markdown-stream.js +109 -13
- package/lib/commonjs/markdown-stream.js.map +1 -1
- package/lib/commonjs/markdown.js +215 -44
- package/lib/commonjs/markdown.js.map +1 -1
- package/lib/commonjs/renderers/code.js +4 -3
- package/lib/commonjs/renderers/code.js.map +1 -1
- package/lib/commonjs/renderers/heading.js +1 -1
- package/lib/commonjs/renderers/heading.js.map +1 -1
- package/lib/commonjs/renderers/image.js +7 -5
- package/lib/commonjs/renderers/image.js.map +1 -1
- package/lib/commonjs/renderers/link.js +15 -3
- package/lib/commonjs/renderers/link.js.map +1 -1
- package/lib/commonjs/renderers/list.js +2 -2
- package/lib/commonjs/renderers/list.js.map +1 -1
- package/lib/commonjs/renderers/table.js +126 -21
- package/lib/commonjs/renderers/table.js.map +1 -1
- package/lib/commonjs/use-markdown-stream.js +16 -14
- package/lib/commonjs/use-markdown-stream.js.map +1 -1
- package/lib/commonjs/utils/incremental-ast.js +153 -0
- package/lib/commonjs/utils/incremental-ast.js.map +1 -0
- package/lib/commonjs/utils/link-security.js +21 -0
- package/lib/commonjs/utils/link-security.js.map +1 -0
- package/lib/commonjs/utils/stream-timeline.js +62 -0
- package/lib/commonjs/utils/stream-timeline.js.map +1 -0
- package/lib/module/MarkdownContext.js +2 -1
- package/lib/module/MarkdownContext.js.map +1 -1
- package/lib/module/headless.js +37 -4
- package/lib/module/headless.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/markdown-stream.js +110 -14
- package/lib/module/markdown-stream.js.map +1 -1
- package/lib/module/markdown.js +217 -46
- package/lib/module/markdown.js.map +1 -1
- package/lib/module/renderers/blockquote.js.map +1 -1
- package/lib/module/renderers/code.js +4 -3
- package/lib/module/renderers/code.js.map +1 -1
- package/lib/module/renderers/heading.js +1 -1
- package/lib/module/renderers/heading.js.map +1 -1
- package/lib/module/renderers/image.js +7 -5
- package/lib/module/renderers/image.js.map +1 -1
- package/lib/module/renderers/link.js +15 -3
- package/lib/module/renderers/link.js.map +1 -1
- package/lib/module/renderers/list.js +2 -2
- package/lib/module/renderers/list.js.map +1 -1
- package/lib/module/renderers/paragraph.js.map +1 -1
- package/lib/module/renderers/table.js +127 -22
- package/lib/module/renderers/table.js.map +1 -1
- package/lib/module/use-markdown-stream.js +16 -14
- package/lib/module/use-markdown-stream.js.map +1 -1
- package/lib/module/utils/incremental-ast.js +147 -0
- package/lib/module/utils/incremental-ast.js.map +1 -0
- package/lib/module/utils/link-security.js +15 -0
- package/lib/module/utils/link-security.js.map +1 -0
- package/lib/module/utils/stream-timeline.js +56 -0
- package/lib/module/utils/stream-timeline.js.map +1 -0
- package/lib/typescript/commonjs/Markdown.nitro.d.ts +5 -3
- package/lib/typescript/commonjs/Markdown.nitro.d.ts.map +1 -1
- package/lib/typescript/commonjs/MarkdownContext.d.ts +26 -25
- package/lib/typescript/commonjs/MarkdownContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/headless.d.ts +15 -2
- package/lib/typescript/commonjs/headless.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +3 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/markdown-stream.d.ts +7 -2
- package/lib/typescript/commonjs/markdown-stream.d.ts.map +1 -1
- package/lib/typescript/commonjs/markdown.d.ts +62 -5
- package/lib/typescript/commonjs/markdown.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/blockquote.d.ts +3 -3
- package/lib/typescript/commonjs/renderers/blockquote.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/code.d.ts +5 -5
- package/lib/typescript/commonjs/renderers/code.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/heading.d.ts +3 -3
- package/lib/typescript/commonjs/renderers/heading.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/horizontal-rule.d.ts +2 -2
- package/lib/typescript/commonjs/renderers/horizontal-rule.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/image.d.ts +2 -2
- package/lib/typescript/commonjs/renderers/image.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/link.d.ts +3 -3
- package/lib/typescript/commonjs/renderers/link.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/list.d.ts +7 -7
- package/lib/typescript/commonjs/renderers/list.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/math.d.ts +4 -4
- package/lib/typescript/commonjs/renderers/math.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/paragraph.d.ts +3 -3
- package/lib/typescript/commonjs/renderers/paragraph.d.ts.map +1 -1
- package/lib/typescript/commonjs/renderers/table.d.ts +3 -3
- package/lib/typescript/commonjs/renderers/table.d.ts.map +1 -1
- package/lib/typescript/commonjs/specs/MarkdownSession.nitro.d.ts +5 -2
- package/lib/typescript/commonjs/specs/MarkdownSession.nitro.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme.d.ts +2 -2
- package/lib/typescript/commonjs/theme.d.ts.map +1 -1
- package/lib/typescript/commonjs/use-markdown-stream.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/incremental-ast.d.ts +12 -0
- package/lib/typescript/commonjs/utils/incremental-ast.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/link-security.d.ts +3 -0
- package/lib/typescript/commonjs/utils/link-security.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/stream-timeline.d.ts +11 -0
- package/lib/typescript/commonjs/utils/stream-timeline.d.ts.map +1 -0
- package/lib/typescript/module/Markdown.nitro.d.ts +5 -3
- package/lib/typescript/module/Markdown.nitro.d.ts.map +1 -1
- package/lib/typescript/module/MarkdownContext.d.ts +26 -25
- package/lib/typescript/module/MarkdownContext.d.ts.map +1 -1
- package/lib/typescript/module/headless.d.ts +15 -2
- package/lib/typescript/module/headless.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +3 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/markdown-stream.d.ts +7 -2
- package/lib/typescript/module/markdown-stream.d.ts.map +1 -1
- package/lib/typescript/module/markdown.d.ts +62 -5
- package/lib/typescript/module/markdown.d.ts.map +1 -1
- package/lib/typescript/module/renderers/blockquote.d.ts +3 -3
- package/lib/typescript/module/renderers/blockquote.d.ts.map +1 -1
- package/lib/typescript/module/renderers/code.d.ts +5 -5
- package/lib/typescript/module/renderers/code.d.ts.map +1 -1
- package/lib/typescript/module/renderers/heading.d.ts +3 -3
- package/lib/typescript/module/renderers/heading.d.ts.map +1 -1
- package/lib/typescript/module/renderers/horizontal-rule.d.ts +2 -2
- package/lib/typescript/module/renderers/horizontal-rule.d.ts.map +1 -1
- package/lib/typescript/module/renderers/image.d.ts +2 -2
- package/lib/typescript/module/renderers/image.d.ts.map +1 -1
- package/lib/typescript/module/renderers/link.d.ts +3 -3
- package/lib/typescript/module/renderers/link.d.ts.map +1 -1
- package/lib/typescript/module/renderers/list.d.ts +7 -7
- package/lib/typescript/module/renderers/list.d.ts.map +1 -1
- package/lib/typescript/module/renderers/math.d.ts +4 -4
- package/lib/typescript/module/renderers/math.d.ts.map +1 -1
- package/lib/typescript/module/renderers/paragraph.d.ts +3 -3
- package/lib/typescript/module/renderers/paragraph.d.ts.map +1 -1
- package/lib/typescript/module/renderers/table.d.ts +3 -3
- package/lib/typescript/module/renderers/table.d.ts.map +1 -1
- package/lib/typescript/module/specs/MarkdownSession.nitro.d.ts +5 -2
- package/lib/typescript/module/specs/MarkdownSession.nitro.d.ts.map +1 -1
- package/lib/typescript/module/theme.d.ts +2 -2
- package/lib/typescript/module/theme.d.ts.map +1 -1
- package/lib/typescript/module/use-markdown-stream.d.ts.map +1 -1
- package/lib/typescript/module/utils/incremental-ast.d.ts +12 -0
- package/lib/typescript/module/utils/incremental-ast.d.ts.map +1 -0
- package/lib/typescript/module/utils/link-security.d.ts +3 -0
- package/lib/typescript/module/utils/link-security.d.ts.map +1 -0
- package/lib/typescript/module/utils/stream-timeline.d.ts +11 -0
- package/lib/typescript/module/utils/stream-timeline.d.ts.map +1 -0
- package/nitrogen/generated/android/NitroMarkdownOnLoad.cpp +2 -0
- package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +75 -0
- package/nitrogen/generated/android/c++/JHybridMarkdownSessionSpec.cpp +18 -6
- package/nitrogen/generated/android/c++/JHybridMarkdownSessionSpec.hpp +4 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitromarkdown/Func_void_double_double.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/com/nitromarkdown/HybridMarkdownSessionSpec.kt +11 -3
- package/nitrogen/generated/ios/NitroMarkdown-Swift-Cxx-Bridge.cpp +8 -0
- package/nitrogen/generated/ios/NitroMarkdown-Swift-Cxx-Bridge.hpp +31 -0
- package/nitrogen/generated/ios/c++/HybridMarkdownSessionSpecSwift.hpp +20 -2
- package/nitrogen/generated/ios/swift/Func_void.swift +0 -1
- package/nitrogen/generated/ios/swift/Func_void_double_double.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridMarkdownSessionSpec.swift +4 -3
- package/nitrogen/generated/ios/swift/HybridMarkdownSessionSpec_cxx.swift +34 -10
- package/nitrogen/generated/shared/c++/HybridMarkdownParserSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridMarkdownParserSpec.hpp +2 -0
- package/nitrogen/generated/shared/c++/HybridMarkdownSessionSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridMarkdownSessionSpec.hpp +4 -2
- package/package.json +7 -5
- package/src/Markdown.nitro.ts +7 -3
- package/src/MarkdownContext.ts +31 -25
- package/src/headless.ts +44 -6
- package/src/index.ts +8 -0
- package/src/markdown-stream.tsx +159 -15
- package/src/markdown.tsx +406 -50
- package/src/renderers/blockquote.tsx +4 -4
- package/src/renderers/code.tsx +16 -10
- package/src/renderers/heading.tsx +4 -4
- package/src/renderers/horizontal-rule.tsx +3 -3
- package/src/renderers/image.tsx +11 -9
- package/src/renderers/link.tsx +25 -7
- package/src/renderers/list.tsx +9 -12
- package/src/renderers/math.tsx +4 -4
- package/src/renderers/paragraph.tsx +3 -3
- package/src/renderers/table.tsx +270 -98
- package/src/specs/MarkdownSession.nitro.ts +6 -2
- package/src/theme.ts +3 -3
- package/src/use-markdown-stream.ts +22 -16
- package/src/utils/incremental-ast.ts +224 -0
- package/src/utils/link-security.ts +22 -0
- package/src/utils/stream-timeline.ts +72 -0
|
@@ -118,10 +118,10 @@ export const TaskListItem = ({
|
|
|
118
118
|
style: [styles.taskListItem, style],
|
|
119
119
|
children: [/*#__PURE__*/_jsx(View, {
|
|
120
120
|
style: [styles.taskCheckbox, checked && styles.taskCheckboxChecked],
|
|
121
|
-
children: checked
|
|
121
|
+
children: checked ? /*#__PURE__*/_jsx(Text, {
|
|
122
122
|
style: styles.taskCheckboxText,
|
|
123
123
|
children: "\u2713"
|
|
124
|
-
})
|
|
124
|
+
}) : null
|
|
125
125
|
}), /*#__PURE__*/_jsx(View, {
|
|
126
126
|
style: styles.taskContent,
|
|
127
127
|
children: children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","View","Text","StyleSheet","Platform","useMarkdownContext","jsx","_jsx","jsxs","_jsxs","List","depth","children","style","theme","styles","create","list","marginBottom","spacing","m","listNested","marginLeft","s","ListItem","index","ordered","start","listItem","flexDirection","alignItems","listBullet","color","colors","accent","fontSize","fontSizes","lineHeight","marginRight","minWidth","textAlign","fontFamily","fontFamilies","regular","OS","includeFontPadding","listItemContent","flex","bullet","TaskListItem","checked","taskListItem","taskCheckbox","width","height","borderRadius","borderWidth","borderColor","justifyContent","marginTop","taskCheckboxChecked","backgroundColor","taskCheckboxText","surface","fontWeight","taskContent"],"sourceRoot":"../../../src","sources":["renderers/list.tsx"],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"names":["useMemo","View","Text","StyleSheet","Platform","useMarkdownContext","jsx","_jsx","jsxs","_jsxs","List","depth","children","style","theme","styles","create","list","marginBottom","spacing","m","listNested","marginLeft","s","ListItem","index","ordered","start","listItem","flexDirection","alignItems","listBullet","color","colors","accent","fontSize","fontSizes","lineHeight","marginRight","minWidth","textAlign","fontFamily","fontFamilies","regular","OS","includeFontPadding","listItemContent","flex","bullet","TaskListItem","checked","taskListItem","taskCheckbox","width","height","borderRadius","borderWidth","borderColor","justifyContent","marginTop","taskCheckboxChecked","backgroundColor","taskCheckboxText","surface","fontWeight","taskContent"],"sourceRoot":"../../../src","sources":["renderers/list.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","View","StyleSheet","useMarkdownContext","jsx","_jsx","Paragraph","children","inListItem","style","theme","styles","create","paragraph","flexDirection","flexWrap","marginBottom","spacing","l","gap","paragraphInListItem","marginTop"],"sourceRoot":"../../../src","sources":["renderers/paragraph.tsx"],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"names":["useMemo","View","StyleSheet","useMarkdownContext","jsx","_jsx","Paragraph","children","inListItem","style","theme","styles","create","paragraph","flexDirection","flexWrap","marginBottom","spacing","l","gap","paragraphInListItem","marginTop"],"sourceRoot":"../../../src","sources":["renderers/paragraph.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAiC,OAAO;AACxD,SAASC,IAAI,EAAEC,UAAU,QAAwC,cAAc;AAC/E,SAASC,kBAAkB,QAAQ,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQxD,OAAO,MAAMC,SAA6B,GAAGA,CAAC;EAC5CC,QAAQ;EACRC,UAAU;EACVC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEC;EAAM,CAAC,GAAGP,kBAAkB,CAAC,CAAC;EACtC,MAAMQ,MAAM,GAAGX,OAAO,CACpB,MACEE,UAAU,CAACU,MAAM,CAAC;IAChBC,SAAS,EAAE;MACTC,aAAa,EAAE,KAAK;MACpBC,QAAQ,EAAE,MAAM;MAChBC,YAAY,EAAEN,KAAK,CAACO,OAAO,CAACC,CAAC;MAC7BC,GAAG,EAAE;IACP,CAAC;IACDC,mBAAmB,EAAE;MACnBJ,YAAY,EAAE,CAAC;MACfK,SAAS,EAAE;IACb;EACF,CAAC,CAAC,EACJ,CAACX,KAAK,CACR,CAAC;EAED,oBACEL,IAAA,CAACJ,IAAI;IACHQ,KAAK,EAAE,CACLE,MAAM,CAACE,SAAS,EAChBL,UAAU,IAAIG,MAAM,CAACS,mBAAmB,EACxCX,KAAK,CACL;IAAAF,QAAA,EAEDA;EAAQ,CACL,CAAC;AAEX,CAAC","ignoreList":[]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useMemo, useRef, useReducer, useCallback } from "react";
|
|
3
|
+
import { useEffect, useMemo, useRef, useReducer, useCallback } from "react";
|
|
4
4
|
import { View, Text, StyleSheet, ScrollView, Platform } from "react-native";
|
|
5
|
+
import { getTextContent } from "../headless.js";
|
|
5
6
|
import { useMarkdownContext } from "../MarkdownContext.js";
|
|
6
7
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
8
|
const extractTableData = node => {
|
|
@@ -36,10 +37,55 @@ const extractTableData = node => {
|
|
|
36
37
|
alignments
|
|
37
38
|
};
|
|
38
39
|
};
|
|
40
|
+
const MIN_COLUMN_WIDTH = 60;
|
|
41
|
+
const COLUMN_MEASUREMENT_PADDING = 8;
|
|
42
|
+
const APPROX_CHAR_WIDTH = 7;
|
|
43
|
+
const MAX_ESTIMATED_CHARS = 120;
|
|
44
|
+
const ESTIMATED_WIDTH_STEP = 24;
|
|
45
|
+
const MEASUREMENT_STABILIZE_MS = 140;
|
|
46
|
+
const IS_ACT_TEST_ENVIRONMENT = Reflect.get(globalThis, "IS_REACT_ACT_ENVIRONMENT") === true;
|
|
47
|
+
const SHOULD_DEBOUNCE_MEASUREMENT = !IS_ACT_TEST_ENVIRONMENT;
|
|
39
48
|
const columnWidthsReducer = (state, action) => {
|
|
40
|
-
if (action.type === "
|
|
49
|
+
if (action.type === "RESET_WIDTHS") {
|
|
50
|
+
if (state.length === action.payload.length && state.every((width, index) => width === action.payload[index])) {
|
|
51
|
+
return state;
|
|
52
|
+
}
|
|
53
|
+
return action.payload;
|
|
54
|
+
}
|
|
55
|
+
if (action.type === "SET_MONOTONIC_WIDTHS") {
|
|
56
|
+
if (state.length !== action.payload.length) {
|
|
57
|
+
return action.payload;
|
|
58
|
+
}
|
|
59
|
+
const merged = action.payload.map((width, index) => Math.max(width, state[index] ?? width));
|
|
60
|
+
if (state.every((width, index) => width === merged[index])) {
|
|
61
|
+
return state;
|
|
62
|
+
}
|
|
63
|
+
return merged;
|
|
64
|
+
}
|
|
41
65
|
return state;
|
|
42
66
|
};
|
|
67
|
+
const estimateColumnWidths = (headers, rows, columnCount) => {
|
|
68
|
+
const widths = new Array(columnCount).fill(MIN_COLUMN_WIDTH);
|
|
69
|
+
for (let col = 0; col < columnCount; col++) {
|
|
70
|
+
const headerChars = Math.min(getTextContent(headers[col] ?? {
|
|
71
|
+
type: "text",
|
|
72
|
+
content: ""
|
|
73
|
+
}).trim().length, MAX_ESTIMATED_CHARS);
|
|
74
|
+
let maxChars = headerChars;
|
|
75
|
+
for (let row = 0; row < rows.length; row++) {
|
|
76
|
+
const cell = rows[row][col];
|
|
77
|
+
if (!cell) continue;
|
|
78
|
+
const cellChars = Math.min(getTextContent(cell).trim().length, MAX_ESTIMATED_CHARS);
|
|
79
|
+
if (cellChars > maxChars) {
|
|
80
|
+
maxChars = cellChars;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const estimatedWidth = maxChars * APPROX_CHAR_WIDTH + COLUMN_MEASUREMENT_PADDING;
|
|
84
|
+
const steppedEstimatedWidth = Math.ceil(estimatedWidth / ESTIMATED_WIDTH_STEP) * ESTIMATED_WIDTH_STEP;
|
|
85
|
+
widths[col] = Math.max(MIN_COLUMN_WIDTH, steppedEstimatedWidth);
|
|
86
|
+
}
|
|
87
|
+
return widths;
|
|
88
|
+
};
|
|
43
89
|
export const TableRenderer = ({
|
|
44
90
|
node,
|
|
45
91
|
Renderer,
|
|
@@ -55,44 +101,102 @@ export const TableRenderer = ({
|
|
|
55
101
|
} = useMemo(() => extractTableData(node), [node]);
|
|
56
102
|
const columnCount = headers.length;
|
|
57
103
|
const styles = useMemo(() => createTableStyles(theme), [theme]);
|
|
58
|
-
const
|
|
104
|
+
const estimatedColumnWidths = useMemo(() => estimateColumnWidths(headers, rows, columnCount), [headers, rows, columnCount]);
|
|
105
|
+
const [columnWidths, dispatch] = useReducer(columnWidthsReducer, estimatedColumnWidths);
|
|
59
106
|
const measuredWidths = useRef(new Map());
|
|
60
107
|
const measuredCells = useRef(new Set());
|
|
61
108
|
const widthsCalculated = useRef(false);
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
109
|
+
const columnWidthsRef = useRef(columnWidths);
|
|
110
|
+
const lastCellKeySignatureRef = useRef("");
|
|
111
|
+
const measurementTimerRef = useRef(null);
|
|
112
|
+
const [needsMeasurement, setNeedsMeasurement] = useReducer((_previous, nextValue) => nextValue, false);
|
|
113
|
+
const expectedCellKeys = useMemo(() => {
|
|
114
|
+
const keys = [];
|
|
115
|
+
headers.forEach((_, colIndex) => {
|
|
116
|
+
keys.push(`header-${colIndex}`);
|
|
117
|
+
});
|
|
118
|
+
rows.forEach((row, rowIndex) => {
|
|
119
|
+
row.forEach((_, colIndex) => {
|
|
120
|
+
keys.push(`cell-${rowIndex}-${colIndex}`);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
return keys;
|
|
124
|
+
}, [headers, rows]);
|
|
125
|
+
const expectedCellKeySignature = useMemo(() => expectedCellKeys.join("|"), [expectedCellKeys]);
|
|
126
|
+
useEffect(() => {
|
|
127
|
+
columnWidthsRef.current = columnWidths;
|
|
128
|
+
}, [columnWidths]);
|
|
129
|
+
useEffect(() => {
|
|
130
|
+
const structureChanged = lastCellKeySignatureRef.current !== expectedCellKeySignature;
|
|
131
|
+
lastCellKeySignatureRef.current = expectedCellKeySignature;
|
|
132
|
+
if (measurementTimerRef.current) {
|
|
133
|
+
clearTimeout(measurementTimerRef.current);
|
|
134
|
+
measurementTimerRef.current = null;
|
|
68
135
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
136
|
+
if (structureChanged) {
|
|
137
|
+
measuredWidths.current.clear();
|
|
138
|
+
measuredCells.current.clear();
|
|
139
|
+
widthsCalculated.current = false;
|
|
140
|
+
setNeedsMeasurement(false);
|
|
141
|
+
dispatch({
|
|
142
|
+
type: "RESET_WIDTHS",
|
|
143
|
+
payload: estimatedColumnWidths
|
|
144
|
+
});
|
|
145
|
+
} else {
|
|
146
|
+
dispatch({
|
|
147
|
+
type: "SET_MONOTONIC_WIDTHS",
|
|
148
|
+
payload: estimatedColumnWidths
|
|
149
|
+
});
|
|
150
|
+
if (widthsCalculated.current) {
|
|
151
|
+
return;
|
|
72
152
|
}
|
|
73
153
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
154
|
+
if (!SHOULD_DEBOUNCE_MEASUREMENT) {
|
|
155
|
+
setNeedsMeasurement(true);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
measurementTimerRef.current = setTimeout(() => {
|
|
159
|
+
measurementTimerRef.current = null;
|
|
160
|
+
setNeedsMeasurement(true);
|
|
161
|
+
}, MEASUREMENT_STABILIZE_MS);
|
|
162
|
+
return () => {
|
|
163
|
+
if (measurementTimerRef.current) {
|
|
164
|
+
clearTimeout(measurementTimerRef.current);
|
|
165
|
+
measurementTimerRef.current = null;
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
}, [estimatedColumnWidths, expectedCellKeySignature]);
|
|
169
|
+
const onCellLayout = useCallback((cellKey, width) => {
|
|
170
|
+
if (width <= 0 || widthsCalculated.current || !needsMeasurement) return;
|
|
171
|
+
measuredWidths.current.set(cellKey, width);
|
|
172
|
+
if (!measuredCells.current.has(cellKey)) {
|
|
173
|
+
measuredCells.current.add(cellKey);
|
|
174
|
+
}
|
|
175
|
+
if (measuredCells.current.size < expectedCellKeys.length) return;
|
|
176
|
+
const allCellsMeasured = expectedCellKeys.every(key => measuredCells.current.has(key));
|
|
177
|
+
if (!allCellsMeasured) return;
|
|
178
|
+
const maxWidths = [...columnWidthsRef.current];
|
|
77
179
|
for (let col = 0; col < columnCount; col++) {
|
|
78
180
|
const headerWidth = measuredWidths.current.get(`header-${col}`);
|
|
79
181
|
if (headerWidth && headerWidth > 0) {
|
|
80
182
|
maxWidths[col] = Math.max(maxWidths[col], headerWidth);
|
|
81
183
|
}
|
|
82
184
|
for (let row = 0; row < rows.length; row++) {
|
|
185
|
+
if (col >= rows[row].length) continue;
|
|
83
186
|
const cellWidth = measuredWidths.current.get(`cell-${row}-${col}`);
|
|
84
187
|
if (cellWidth && cellWidth > 0) {
|
|
85
188
|
maxWidths[col] = Math.max(maxWidths[col], cellWidth);
|
|
86
189
|
}
|
|
87
190
|
}
|
|
88
|
-
maxWidths[col] = Math.max(maxWidths[col] +
|
|
191
|
+
maxWidths[col] = Math.max(maxWidths[col] + COLUMN_MEASUREMENT_PADDING, MIN_COLUMN_WIDTH);
|
|
89
192
|
}
|
|
90
193
|
widthsCalculated.current = true;
|
|
194
|
+
setNeedsMeasurement(false);
|
|
91
195
|
dispatch({
|
|
92
|
-
type: "
|
|
196
|
+
type: "RESET_WIDTHS",
|
|
93
197
|
payload: maxWidths
|
|
94
198
|
});
|
|
95
|
-
}, [columnCount, rows
|
|
199
|
+
}, [columnCount, expectedCellKeys, needsMeasurement, rows]);
|
|
96
200
|
const getAlignment = index => {
|
|
97
201
|
const align = alignments[index];
|
|
98
202
|
if (align === "center") return "center";
|
|
@@ -101,9 +205,10 @@ export const TableRenderer = ({
|
|
|
101
205
|
};
|
|
102
206
|
if (columnCount === 0) return null;
|
|
103
207
|
const hasWidths = columnWidths.length === columnCount;
|
|
208
|
+
const resolvedWidths = hasWidths ? columnWidths : estimatedColumnWidths;
|
|
104
209
|
return /*#__PURE__*/_jsxs(View, {
|
|
105
210
|
style: [styles.container, style],
|
|
106
|
-
children: [/*#__PURE__*/_jsxs(View, {
|
|
211
|
+
children: [needsMeasurement ? /*#__PURE__*/_jsxs(View, {
|
|
107
212
|
style: styles.measurementContainer,
|
|
108
213
|
children: [/*#__PURE__*/_jsx(View, {
|
|
109
214
|
style: styles.measurementRow,
|
|
@@ -132,7 +237,7 @@ export const TableRenderer = ({
|
|
|
132
237
|
})
|
|
133
238
|
}, `measure-cell-${rowIndex}-${colIndex}`))
|
|
134
239
|
}, `measure-row-${rowIndex}`))]
|
|
135
|
-
})
|
|
240
|
+
}) : null, /*#__PURE__*/_jsx(ScrollView, {
|
|
136
241
|
horizontal: true,
|
|
137
242
|
showsHorizontalScrollIndicator: true,
|
|
138
243
|
style: styles.tableScroll,
|
|
@@ -145,7 +250,7 @@ export const TableRenderer = ({
|
|
|
145
250
|
style: styles.headerRow,
|
|
146
251
|
children: headers.map((cell, colIndex) => /*#__PURE__*/_jsx(View, {
|
|
147
252
|
style: [styles.headerCell, {
|
|
148
|
-
width:
|
|
253
|
+
width: resolvedWidths[colIndex] ?? MIN_COLUMN_WIDTH,
|
|
149
254
|
alignItems: getAlignment(colIndex)
|
|
150
255
|
}, colIndex === columnCount - 1 && styles.lastCell],
|
|
151
256
|
children: /*#__PURE__*/_jsx(CellContent, {
|
|
@@ -159,7 +264,7 @@ export const TableRenderer = ({
|
|
|
159
264
|
style: [styles.bodyRow, rowIndex === rows.length - 1 && styles.lastRow, rowIndex % 2 === 0 ? styles.evenRow : styles.oddRow],
|
|
160
265
|
children: row.map((cell, colIndex) => /*#__PURE__*/_jsx(View, {
|
|
161
266
|
style: [styles.bodyCell, {
|
|
162
|
-
width:
|
|
267
|
+
width: resolvedWidths[colIndex] ?? MIN_COLUMN_WIDTH,
|
|
163
268
|
alignItems: getAlignment(colIndex)
|
|
164
269
|
}, colIndex === columnCount - 1 && styles.lastCell],
|
|
165
270
|
children: /*#__PURE__*/_jsx(CellContent, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","useRef","useReducer","useCallback","View","Text","StyleSheet","ScrollView","Platform","useMarkdownContext","jsx","_jsx","jsxs","_jsxs","extractTableData","node","headers","rows","alignments","child","children","type","row","cell","push","align","rowCells","columnWidthsReducer","state","action","payload","TableRenderer","Renderer","style","theme","columnCount","length","styles","createTableStyles","columnWidths","dispatch","measuredWidths","Map","measuredCells","Set","widthsCalculated","onCellLayout","cellKey","width","current","set","add","expectedCells","col","allCellsMeasured","every","key","has","maxWidths","Array","fill","headerWidth","get","Math","max","cellWidth","getAlignment","index","hasWidths","container","measurementContainer","measurementRow","map","colIndex","measurementCell","onLayout","e","nativeEvent","layout","CellContent","rowIndex","horizontal","showsHorizontalScrollIndicator","tableScroll","bounces","table","backgroundColor","colors","surface","headerRow","headerCell","alignItems","lastCell","textStyle","headerText","bodyRow","lastRow","evenRow","oddRow","bodyCell","cellText","content","cellContentWrapper","idx","depth","inListItem","parentIsText","borderRadius","m","create","marginVertical","spacing","s","position","opacity","pointerEvents","left","flexDirection","paddingVertical","paddingHorizontal","flexGrow","overflow","borderWidth","borderColor","tableBorder","tableHeader","borderBottomWidth","borderBottomColor","tableRowEven","tableRowOdd","flexShrink","minWidth","borderRightWidth","borderRightColor","justifyContent","color","tableHeaderText","fontSize","fontWeight","fontFamily","fontFamilies","regular","OS","includeFontPadding","text","lineHeight","flexWrap"],"sourceRoot":"../../../src","sources":["renderers/table.tsx"],"mappings":";;AAAA,SACEA,OAAO,EACPC,MAAM,EACNC,UAAU,EACVC,WAAW,QAIN,OAAO;AACd,SACEC,IAAI,EACJC,IAAI,EACJC,UAAU,EACVC,UAAU,EACVC,QAAQ,QAKH,cAAc;AAGrB,SAASC,kBAAkB,QAAgC,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAShF,MAAMC,gBAAgB,GAAIC,IAAkB,IAAgB;EAC1D,MAAMC,OAAuB,GAAG,EAAE;EAClC,MAAMC,IAAsB,GAAG,EAAE;EACjC,MAAMC,UAAkC,GAAG,EAAE;EAE7C,KAAK,MAAMC,KAAK,IAAIJ,IAAI,CAACK,QAAQ,IAAI,EAAE,EAAE;IACvC,IAAID,KAAK,CAACE,IAAI,KAAK,YAAY,EAAE;MAC/B,KAAK,MAAMC,GAAG,IAAIH,KAAK,CAACC,QAAQ,IAAI,EAAE,EAAE;QACtC,IAAIE,GAAG,CAACD,IAAI,KAAK,WAAW,EAAE;UAC5B,KAAK,MAAME,IAAI,IAAID,GAAG,CAACF,QAAQ,IAAI,EAAE,EAAE;YACrCJ,OAAO,CAACQ,IAAI,CAACD,IAAI,CAAC;YAClBL,UAAU,CAACM,IAAI,CAACD,IAAI,CAACE,KAAK,CAAC;UAC7B;QACF;MACF;IACF,CAAC,MAAM,IAAIN,KAAK,CAACE,IAAI,KAAK,YAAY,EAAE;MACtC,KAAK,MAAMC,GAAG,IAAIH,KAAK,CAACC,QAAQ,IAAI,EAAE,EAAE;QACtC,IAAIE,GAAG,CAACD,IAAI,KAAK,WAAW,EAAE;UAC5B,MAAMK,QAAwB,GAAG,EAAE;UACnC,KAAK,MAAMH,IAAI,IAAID,GAAG,CAACF,QAAQ,IAAI,EAAE,EAAE;YACrCM,QAAQ,CAACF,IAAI,CAACD,IAAI,CAAC;UACrB;UACAN,IAAI,CAACO,IAAI,CAACE,QAAQ,CAAC;QACrB;MACF;IACF;EACF;EAEA,OAAO;IAAEV,OAAO;IAAEC,IAAI;IAAEC;EAAW,CAAC;AACtC,CAAC;AAaD,MAAMS,mBAAmB,GAAGA,CAACC,KAAe,EAAEC,MAA0B,KAAK;EAC3E,IAAIA,MAAM,CAACR,IAAI,KAAK,YAAY,EAAE,OAAOQ,MAAM,CAACC,OAAO;EACvD,OAAOF,KAAK;AACd,CAAC;AAED,OAAO,MAAMG,aAAqC,GAAGA,CAAC;EACpDhB,IAAI;EACJiB,QAAQ;EACRC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEC;EAAM,CAAC,GAAGzB,kBAAkB,CAAC,CAAC;EACtC,MAAM;IAAEO,OAAO;IAAEC,IAAI;IAAEC;EAAW,CAAC,GAAGlB,OAAO,CAC3C,MAAMc,gBAAgB,CAACC,IAAI,CAAC,EAC5B,CAACA,IAAI,CACP,CAAC;EAED,MAAMoB,WAAW,GAAGnB,OAAO,CAACoB,MAAM;EAClC,MAAMC,MAAM,GAAGrC,OAAO,CAAC,MAAMsC,iBAAiB,CAACJ,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAE/D,MAAM,CAACK,YAAY,EAAEC,QAAQ,CAAC,GAAGtC,UAAU,CAACyB,mBAAmB,EAAE,EAAE,CAAC;EACpE,MAAMc,cAAc,GAAGxC,MAAM,CAAsB,IAAIyC,GAAG,CAAC,CAAC,CAAC;EAC7D,MAAMC,aAAa,GAAG1C,MAAM,CAAc,IAAI2C,GAAG,CAAC,CAAC,CAAC;EACpD,MAAMC,gBAAgB,GAAG5C,MAAM,CAAC,KAAK,CAAC;EAEtC,MAAM6C,YAAY,GAAG3C,WAAW,CAC9B,CAAC4C,OAAe,EAAEC,KAAa,KAAK;IAClCP,cAAc,CAACQ,OAAO,CAACC,GAAG,CAACH,OAAO,EAAEC,KAAK,CAAC;IAC1CL,aAAa,CAACM,OAAO,CAACE,GAAG,CAACJ,OAAO,CAAC;IAElC,MAAMK,aAAa,GAAG,IAAIR,GAAG,CAAS,CAAC;IACvC,KAAK,IAAIS,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGlB,WAAW,EAAEkB,GAAG,EAAE,EAAE;MAC1CD,aAAa,CAACD,GAAG,CAAC,UAAUE,GAAG,EAAE,CAAC;IACpC;IACA,KAAK,IAAI/B,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGL,IAAI,CAACmB,MAAM,EAAEd,GAAG,EAAE,EAAE;MAC1C,KAAK,IAAI+B,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGlB,WAAW,EAAEkB,GAAG,EAAE,EAAE;QAC1CD,aAAa,CAACD,GAAG,CAAC,QAAQ7B,GAAG,IAAI+B,GAAG,EAAE,CAAC;MACzC;IACF;IAEA,MAAMC,gBAAgB,GAAG,CAAC,GAAGF,aAAa,CAAC,CAACG,KAAK,CAAEC,GAAG,IACpDb,aAAa,CAACM,OAAO,CAACQ,GAAG,CAACD,GAAG,CAC/B,CAAC;IACD,IAAI,CAACF,gBAAgB,IAAIT,gBAAgB,CAACI,OAAO,EAAE;IAEnD,MAAMS,SAAmB,GAAG,IAAIC,KAAK,CAACxB,WAAW,CAAC,CAACyB,IAAI,CAAC,CAAC,CAAC;IAE1D,KAAK,IAAIP,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGlB,WAAW,EAAEkB,GAAG,EAAE,EAAE;MAC1C,MAAMQ,WAAW,GAAGpB,cAAc,CAACQ,OAAO,CAACa,GAAG,CAAC,UAAUT,GAAG,EAAE,CAAC;MAC/D,IAAIQ,WAAW,IAAIA,WAAW,GAAG,CAAC,EAAE;QAClCH,SAAS,CAACL,GAAG,CAAC,GAAGU,IAAI,CAACC,GAAG,CAACN,SAAS,CAACL,GAAG,CAAC,EAAEQ,WAAW,CAAC;MACxD;MAEA,KAAK,IAAIvC,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGL,IAAI,CAACmB,MAAM,EAAEd,GAAG,EAAE,EAAE;QAC1C,MAAM2C,SAAS,GAAGxB,cAAc,CAACQ,OAAO,CAACa,GAAG,CAAC,QAAQxC,GAAG,IAAI+B,GAAG,EAAE,CAAC;QAClE,IAAIY,SAAS,IAAIA,SAAS,GAAG,CAAC,EAAE;UAC9BP,SAAS,CAACL,GAAG,CAAC,GAAGU,IAAI,CAACC,GAAG,CAACN,SAAS,CAACL,GAAG,CAAC,EAAEY,SAAS,CAAC;QACtD;MACF;MAEAP,SAAS,CAACL,GAAG,CAAC,GAAGU,IAAI,CAACC,GAAG,CAACN,SAAS,CAACL,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IACnD;IAEAR,gBAAgB,CAACI,OAAO,GAAG,IAAI;IAC/BT,QAAQ,CAAC;MAAEnB,IAAI,EAAE,YAAY;MAAES,OAAO,EAAE4B;IAAU,CAAC,CAAC;EACtD,CAAC,EACD,CAACvB,WAAW,EAAElB,IAAI,CAACmB,MAAM,CAC3B,CAAC;EAED,MAAM8B,YAAY,GAChBC,KAAa,IAC4B;IACzC,MAAM1C,KAAK,GAAGP,UAAU,CAACiD,KAAK,CAAC;IAC/B,IAAI1C,KAAK,KAAK,QAAQ,EAAE,OAAO,QAAQ;IACvC,IAAIA,KAAK,KAAK,OAAO,EAAE,OAAO,UAAU;IACxC,OAAO,YAAY;EACrB,CAAC;EAED,IAAIU,WAAW,KAAK,CAAC,EAAE,OAAO,IAAI;EAElC,MAAMiC,SAAS,GAAG7B,YAAY,CAACH,MAAM,KAAKD,WAAW;EAErD,oBACEtB,KAAA,CAACT,IAAI;IAAC6B,KAAK,EAAE,CAACI,MAAM,CAACgC,SAAS,EAAEpC,KAAK,CAAE;IAAAb,QAAA,gBACrCP,KAAA,CAACT,IAAI;MAAC6B,KAAK,EAAEI,MAAM,CAACiC,oBAAqB;MAAAlD,QAAA,gBACvCT,IAAA,CAACP,IAAI;QAAC6B,KAAK,EAAEI,MAAM,CAACkC,cAAe;QAAAnD,QAAA,EAChCJ,OAAO,CAACwD,GAAG,CAAC,CAACjD,IAAI,EAAEkD,QAAQ,kBAC1B9D,IAAA,CAACP,IAAI;UAEH6B,KAAK,EAAEI,MAAM,CAACqC,eAAgB;UAC9BC,QAAQ,EAAGC,CAAoB,IAAK;YAClC9B,YAAY,CAAC,UAAU2B,QAAQ,EAAE,EAAEG,CAAC,CAACC,WAAW,CAACC,MAAM,CAAC9B,KAAK,CAAC;UAChE,CAAE;UAAA5B,QAAA,eAEFT,IAAA,CAACoE,WAAW;YAAChE,IAAI,EAAEQ,IAAK;YAACS,QAAQ,EAAEA,QAAS;YAACK,MAAM,EAAEA;UAAO,CAAE;QAAC,GAN1D,kBAAkBoC,QAAQ,EAO3B,CACP;MAAC,CACE,CAAC,EACNxD,IAAI,CAACuD,GAAG,CAAC,CAAClD,GAAG,EAAE0D,QAAQ,kBACtBrE,IAAA,CAACP,IAAI;QAAiC6B,KAAK,EAAEI,MAAM,CAACkC,cAAe;QAAAnD,QAAA,EAChEE,GAAG,CAACkD,GAAG,CAAC,CAACjD,IAAI,EAAEkD,QAAQ,kBACtB9D,IAAA,CAACP,IAAI;UAEH6B,KAAK,EAAEI,MAAM,CAACqC,eAAgB;UAC9BC,QAAQ,EAAGC,CAAoB,IAAK;YAClC9B,YAAY,CACV,QAAQkC,QAAQ,IAAIP,QAAQ,EAAE,EAC9BG,CAAC,CAACC,WAAW,CAACC,MAAM,CAAC9B,KACvB,CAAC;UACH,CAAE;UAAA5B,QAAA,eAEFT,IAAA,CAACoE,WAAW;YAAChE,IAAI,EAAEQ,IAAK;YAACS,QAAQ,EAAEA,QAAS;YAACK,MAAM,EAAEA;UAAO,CAAE;QAAC,GAT1D,gBAAgB2C,QAAQ,IAAIP,QAAQ,EAUrC,CACP;MAAC,GAdO,eAAeO,QAAQ,EAe5B,CACP,CAAC;IAAA,CACE,CAAC,EAENZ,SAAS,iBACRzD,IAAA,CAACJ,UAAU;MACT0E,UAAU;MACVC,8BAA8B;MAC9BjD,KAAK,EAAEI,MAAM,CAAC8C,WAAY;MAC1BC,OAAO,EAAE,KAAM;MAAAhE,QAAA,eAEfP,KAAA,CAACT,IAAI;QAAC6B,KAAK,EAAE,CAACI,MAAM,CAACgD,KAAK,EAAE;UAAEC,eAAe,EAAErD,KAAK,EAAEqD,eAAe,IAAIpD,KAAK,CAACqD,MAAM,CAACC,OAAO,IAAI;QAAU,CAAC,CAAE;QAAApE,QAAA,gBAC5GT,IAAA,CAACP,IAAI;UAAC6B,KAAK,EAAEI,MAAM,CAACoD,SAAU;UAAArE,QAAA,EAC3BJ,OAAO,CAACwD,GAAG,CAAC,CAACjD,IAAI,EAAEkD,QAAQ,kBAC1B9D,IAAA,CAACP,IAAI;YAEH6B,KAAK,EAAE,CACLI,MAAM,CAACqD,UAAU,EACjB;cACE1C,KAAK,EAAET,YAAY,CAACkC,QAAQ,CAAC;cAC7BkB,UAAU,EAAEzB,YAAY,CAACO,QAAQ;YACnC,CAAC,EACDA,QAAQ,KAAKtC,WAAW,GAAG,CAAC,IAAIE,MAAM,CAACuD,QAAQ,CAC/C;YAAAxE,QAAA,eAEFT,IAAA,CAACoE,WAAW;cACVhE,IAAI,EAAEQ,IAAK;cACXS,QAAQ,EAAEA,QAAS;cACnBK,MAAM,EAAEA,MAAO;cACfwD,SAAS,EAAExD,MAAM,CAACyD;YAAW,CAC9B;UAAC,GAfG,UAAUrB,QAAQ,EAgBnB,CACP;QAAC,CACE,CAAC,EAENxD,IAAI,CAACuD,GAAG,CAAC,CAAClD,GAAG,EAAE0D,QAAQ,kBACtBrE,IAAA,CAACP,IAAI;UAEH6B,KAAK,EAAE,CACLI,MAAM,CAAC0D,OAAO,EACdf,QAAQ,KAAK/D,IAAI,CAACmB,MAAM,GAAG,CAAC,IAAIC,MAAM,CAAC2D,OAAO,EAC9ChB,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG3C,MAAM,CAAC4D,OAAO,GAAG5D,MAAM,CAAC6D,MAAM,CACnD;UAAA9E,QAAA,EAEDE,GAAG,CAACkD,GAAG,CAAC,CAACjD,IAAI,EAAEkD,QAAQ,kBACtB9D,IAAA,CAACP,IAAI;YAEH6B,KAAK,EAAE,CACLI,MAAM,CAAC8D,QAAQ,EACf;cACEnD,KAAK,EAAET,YAAY,CAACkC,QAAQ,CAAC;cAC7BkB,UAAU,EAAEzB,YAAY,CAACO,QAAQ;YACnC,CAAC,EACDA,QAAQ,KAAKtC,WAAW,GAAG,CAAC,IAAIE,MAAM,CAACuD,QAAQ,CAC/C;YAAAxE,QAAA,eAEFT,IAAA,CAACoE,WAAW;cACVhE,IAAI,EAAEQ,IAAK;cACXS,QAAQ,EAAEA,QAAS;cACnBK,MAAM,EAAEA,MAAO;cACfwD,SAAS,EAAExD,MAAM,CAAC+D;YAAS,CAC5B;UAAC,GAfG,QAAQpB,QAAQ,IAAIP,QAAQ,EAgB7B,CACP;QAAC,GA1BG,OAAOO,QAAQ,EA2BhB,CACP,CAAC;MAAA,CACE;IAAC,CACG,CACb;EAAA,CACG,CAAC;AAEX,CAAC;AAED,MAAMD,WAKJ,GAAGA,CAAC;EAAEhE,IAAI;EAAEiB,QAAQ;EAAEK,MAAM;EAAEwD;AAAU,CAAC,KAAK;EAC9C,IAAI,CAAC9E,IAAI,CAACK,QAAQ,IAAIL,IAAI,CAACK,QAAQ,CAACgB,MAAM,KAAK,CAAC,EAAE;IAChD,oBAAOzB,IAAA,CAACN,IAAI;MAAC4B,KAAK,EAAE4D,SAAU;MAAAzE,QAAA,EAAEL,IAAI,CAACsF,OAAO,IAAI;IAAE,CAAO,CAAC;EAC5D;EAEA,oBACE1F,IAAA,CAACP,IAAI;IAAC6B,KAAK,EAAEI,MAAM,CAACiE,kBAAmB;IAAAlF,QAAA,EACpCL,IAAI,CAACK,QAAQ,CAACoD,GAAG,CAAC,CAACrD,KAAK,EAAEoF,GAAG,kBAC5B5F,IAAA,CAACqB,QAAQ;MAEPjB,IAAI,EAAEI,KAAM;MACZqF,KAAK,EAAE,CAAE;MACTC,UAAU,EAAE,KAAM;MAClBC,YAAY,EAAE;IAAM,GAJfH,GAKN,CACF;EAAC,CACE,CAAC;AAEX,CAAC;AAED,MAAMjE,iBAAiB,GAAIJ,KAAoB,IAAK;EAClD,MAAMqD,MAAM,GAAGrD,KAAK,EAAEqD,MAAM,IAAI,CAAC,CAAC;EAClC,MAAMoB,YAAY,GAAGzE,KAAK,EAAEyE,YAAY,IAAI;IAAEC,CAAC,EAAE;EAAE,CAAC;EAEpD,OAAOtG,UAAU,CAACuG,MAAM,CAAC;IACvBxC,SAAS,EAAE;MACTyC,cAAc,EAAE5E,KAAK,CAAC6E,OAAO,CAACC;IAChC,CAAC;IACD1C,oBAAoB,EAAE;MACpB2C,QAAQ,EAAE,UAAU;MACpBC,OAAO,EAAE,CAAC;MACVC,aAAa,EAAE,MAAM;MACrBC,IAAI,EAAE,CAAC;IACT,CAAC;IACD7C,cAAc,EAAE;MACd8C,aAAa,EAAE;IACjB,CAAC;IACD3C,eAAe,EAAE;MACf4C,eAAe,EAAE,EAAE;MACnBC,iBAAiB,EAAE;IACrB,CAAC;IACDpC,WAAW,EAAE;MACXqC,QAAQ,EAAE;IACZ,CAAC;IACDnC,KAAK,EAAE;MACLsB,YAAY,EAAEA,YAAY,CAACC,CAAC;MAC5Ba,QAAQ,EAAE,QAAQ;MAClBC,WAAW,EAAE,CAAC;MACdC,WAAW,EAAEpC,MAAM,CAACqC,WAAW,IAAI;IACrC,CAAC;IACDnC,SAAS,EAAE;MACT4B,aAAa,EAAE,KAAK;MACpB/B,eAAe,EAAEC,MAAM,CAACsC,WAAW,IAAI,SAAS;MAChDC,iBAAiB,EAAE,CAAC;MACpBC,iBAAiB,EAAExC,MAAM,CAACqC,WAAW,IAAI;IAC3C,CAAC;IACD7B,OAAO,EAAE;MACPsB,aAAa,EAAE,KAAK;MACpBS,iBAAiB,EAAE,CAAC;MACpBC,iBAAiB,EAAExC,MAAM,CAACqC,WAAW,IAAI;IAC3C,CAAC;IACD3B,OAAO,EAAE;MACPX,eAAe,EAAEC,MAAM,CAACyC,YAAY,IAAI;IAC1C,CAAC;IACD9B,MAAM,EAAE;MACNZ,eAAe,EAAEC,MAAM,CAAC0C,WAAW,IAAI;IACzC,CAAC;IACDjC,OAAO,EAAE;MACP8B,iBAAiB,EAAE;IACrB,CAAC;IACDpC,UAAU,EAAE;MACVwC,UAAU,EAAE,CAAC;MACbZ,eAAe,EAAE,EAAE;MACnBC,iBAAiB,EAAE,EAAE;MACrBY,QAAQ,EAAE,EAAE;MACZC,gBAAgB,EAAE,CAAC;MACnBC,gBAAgB,EAAE9C,MAAM,CAACqC,WAAW,IAAI;IAC1C,CAAC;IACDzB,QAAQ,EAAE;MACR+B,UAAU,EAAE,CAAC;MACbZ,eAAe,EAAE,EAAE;MACnBC,iBAAiB,EAAE,EAAE;MACrBY,QAAQ,EAAE,EAAE;MACZC,gBAAgB,EAAE,CAAC;MACnBC,gBAAgB,EAAE9C,MAAM,CAACqC,WAAW,IAAI,SAAS;MACjDU,cAAc,EAAE;IAClB,CAAC;IACD1C,QAAQ,EAAE;MACRwC,gBAAgB,EAAE;IACpB,CAAC;IACDtC,UAAU,EAAE;MACVyC,KAAK,EAAEhD,MAAM,CAACiD,eAAe,IAAI,SAAS;MAC1CC,QAAQ,EAAE,EAAE;MACZC,UAAU,EAAE,KAAK;MACjBC,UAAU,EAAEzG,KAAK,CAAC0G,YAAY,EAAEC,OAAO;MACvC,IAAIrI,QAAQ,CAACsI,EAAE,KAAK,SAAS,IAAI;QAAEC,kBAAkB,EAAE;MAAM,CAAC;IAChE,CAAC;IACD3C,QAAQ,EAAE;MACRmC,KAAK,EAAEhD,MAAM,CAACyD,IAAI,IAAI,SAAS;MAC/BP,QAAQ,EAAE,EAAE;MACZQ,UAAU,EAAE,EAAE;MACdN,UAAU,EAAEzG,KAAK,CAAC0G,YAAY,EAAEC,OAAO;MACvC,IAAIrI,QAAQ,CAACsI,EAAE,KAAK,SAAS,IAAI;QAAEC,kBAAkB,EAAE;MAAM,CAAC;IAChE,CAAC;IACDzC,kBAAkB,EAAE;MAClBe,aAAa,EAAE,KAAK;MACpB6B,QAAQ,EAAE,MAAM;MAChBvD,UAAU,EAAE;IACd;EACF,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useEffect","useMemo","useRef","useReducer","useCallback","View","Text","StyleSheet","ScrollView","Platform","getTextContent","useMarkdownContext","jsx","_jsx","jsxs","_jsxs","extractTableData","node","headers","rows","alignments","child","children","type","row","cell","push","align","rowCells","MIN_COLUMN_WIDTH","COLUMN_MEASUREMENT_PADDING","APPROX_CHAR_WIDTH","MAX_ESTIMATED_CHARS","ESTIMATED_WIDTH_STEP","MEASUREMENT_STABILIZE_MS","IS_ACT_TEST_ENVIRONMENT","Reflect","get","globalThis","SHOULD_DEBOUNCE_MEASUREMENT","columnWidthsReducer","state","action","length","payload","every","width","index","merged","map","Math","max","estimateColumnWidths","columnCount","widths","Array","fill","col","headerChars","min","content","trim","maxChars","cellChars","estimatedWidth","steppedEstimatedWidth","ceil","TableRenderer","Renderer","style","theme","styles","createTableStyles","estimatedColumnWidths","columnWidths","dispatch","measuredWidths","Map","measuredCells","Set","widthsCalculated","columnWidthsRef","lastCellKeySignatureRef","measurementTimerRef","needsMeasurement","setNeedsMeasurement","_previous","nextValue","expectedCellKeys","keys","forEach","_","colIndex","rowIndex","expectedCellKeySignature","join","current","structureChanged","clearTimeout","clear","setTimeout","onCellLayout","cellKey","set","has","add","size","allCellsMeasured","key","maxWidths","headerWidth","cellWidth","getAlignment","hasWidths","resolvedWidths","container","measurementContainer","measurementRow","measurementCell","onLayout","e","nativeEvent","layout","CellContent","horizontal","showsHorizontalScrollIndicator","tableScroll","bounces","table","backgroundColor","colors","surface","headerRow","headerCell","alignItems","lastCell","textStyle","headerText","bodyRow","lastRow","evenRow","oddRow","bodyCell","cellText","cellContentWrapper","idx","depth","inListItem","parentIsText","borderRadius","m","create","marginVertical","spacing","s","position","opacity","pointerEvents","left","flexDirection","paddingVertical","paddingHorizontal","flexGrow","overflow","borderWidth","borderColor","tableBorder","tableHeader","borderBottomWidth","borderBottomColor","tableRowEven","tableRowOdd","flexShrink","minWidth","borderRightWidth","borderRightColor","justifyContent","color","tableHeaderText","fontSize","fontWeight","fontFamily","fontFamilies","regular","OS","includeFontPadding","text","lineHeight","flexWrap"],"sourceRoot":"../../../src","sources":["renderers/table.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useRef, useCallback, useState, useEffect } from "react";
|
|
4
4
|
import { createMarkdownSession } from "./MarkdownSession.js";
|
|
5
|
+
import { createTimestampTimeline, resolveHighlightPosition } from "./utils/stream-timeline.js";
|
|
5
6
|
export function useMarkdownSession() {
|
|
6
7
|
const sessionRef = useRef(null);
|
|
7
8
|
if (sessionRef.current === null) {
|
|
@@ -37,25 +38,26 @@ export function useMarkdownSession() {
|
|
|
37
38
|
}
|
|
38
39
|
export function useStream(timestamps) {
|
|
39
40
|
const engine = useMarkdownSession();
|
|
41
|
+
const {
|
|
42
|
+
setHighlight
|
|
43
|
+
} = engine;
|
|
40
44
|
const [isPlaying, setIsPlaying] = useState(false);
|
|
41
|
-
const
|
|
45
|
+
const timelineRef = useRef({
|
|
46
|
+
entries: [],
|
|
47
|
+
monotonic: true
|
|
48
|
+
});
|
|
49
|
+
const lastHighlightRef = useRef(-1);
|
|
42
50
|
useEffect(() => {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
51
|
+
timelineRef.current = createTimestampTimeline(timestamps);
|
|
52
|
+
lastHighlightRef.current = -1;
|
|
46
53
|
}, [timestamps]);
|
|
47
54
|
const sync = useCallback(currentTimeMs => {
|
|
48
55
|
if (!timestamps) return;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
engine.setHighlight(wordIdx);
|
|
58
|
-
}, [timestamps, engine]);
|
|
56
|
+
const nextHighlight = resolveHighlightPosition(timelineRef.current, currentTimeMs);
|
|
57
|
+
if (nextHighlight === lastHighlightRef.current) return;
|
|
58
|
+
lastHighlightRef.current = nextHighlight;
|
|
59
|
+
setHighlight(nextHighlight);
|
|
60
|
+
}, [setHighlight, timestamps]);
|
|
59
61
|
return {
|
|
60
62
|
...engine,
|
|
61
63
|
isPlaying,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","useCallback","useState","useEffect","createMarkdownSession","useMarkdownSession","sessionRef","current","isStreaming","setIsStreaming","session","clear","stop","highlightPosition","setHighlight","position","getSession","useStream","timestamps","engine","isPlaying","setIsPlaying","
|
|
1
|
+
{"version":3,"names":["useRef","useCallback","useState","useEffect","createMarkdownSession","createTimestampTimeline","resolveHighlightPosition","useMarkdownSession","sessionRef","current","isStreaming","setIsStreaming","session","clear","stop","highlightPosition","setHighlight","position","getSession","useStream","timestamps","engine","isPlaying","setIsPlaying","timelineRef","entries","monotonic","lastHighlightRef","sync","currentTimeMs","nextHighlight"],"sourceRoot":"../../src","sources":["use-markdown-stream.ts"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,WAAW,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAChE,SAASC,qBAAqB,QAAQ,sBAAmB;AACzD,SACEC,uBAAuB,EACvBC,wBAAwB,QAEnB,4BAAyB;AAIhC,OAAO,SAASC,kBAAkBA,CAAA,EAAG;EACnC,MAAMC,UAAU,GAAGR,MAAM,CAAyB,IAAI,CAAC;EACvD,IAAIQ,UAAU,CAACC,OAAO,KAAK,IAAI,EAAE;IAC/BD,UAAU,CAACC,OAAO,GAAGL,qBAAqB,CAAC,CAAC;EAC9C;EAEA,MAAM,CAACM,WAAW,EAAEC,cAAc,CAAC,GAAGT,QAAQ,CAAC,KAAK,CAAC;EAErDC,SAAS,CAAC,MAAM;IACd,MAAMS,OAAO,GAAGJ,UAAU,CAACC,OAAQ;IACnC,OAAO,MAAM;MACXG,OAAO,CAACC,KAAK,CAAC,CAAC;IACjB,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,IAAI,GAAGb,WAAW,CAAC,MAAM;IAC7BU,cAAc,CAAC,KAAK,CAAC;EACvB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,KAAK,GAAGZ,WAAW,CAAC,MAAM;IAC9Ba,IAAI,CAAC,CAAC;IACNN,UAAU,CAACC,OAAO,CAAEI,KAAK,CAAC,CAAC;IAC3BL,UAAU,CAACC,OAAO,CAAEM,iBAAiB,GAAG,CAAC;EAC3C,CAAC,EAAE,CAACD,IAAI,CAAC,CAAC;EAEV,MAAME,YAAY,GAAGf,WAAW,CAAEgB,QAAgB,IAAK;IACrDT,UAAU,CAACC,OAAO,CAAEM,iBAAiB,GAAGE,QAAQ;EAClD,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,UAAU,GAAGjB,WAAW,CAAC,MAAMO,UAAU,CAACC,OAAQ,EAAE,EAAE,CAAC;EAE7D,OAAO;IACLS,UAAU;IACVR,WAAW;IACXC,cAAc;IACdG,IAAI;IACJD,KAAK;IACLG;EACF,CAAC;AACH;AAEA,OAAO,SAASG,SAASA,CAACC,UAAmC,EAAE;EAC7D,MAAMC,MAAM,GAAGd,kBAAkB,CAAC,CAAC;EACnC,MAAM;IAAES;EAAa,CAAC,GAAGK,MAAM;EAC/B,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGrB,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAMsB,WAAW,GAAGxB,MAAM,CAAoB;IAC5CyB,OAAO,EAAE,EAAE;IACXC,SAAS,EAAE;EACb,CAAC,CAAC;EACF,MAAMC,gBAAgB,GAAG3B,MAAM,CAAS,CAAC,CAAC,CAAC;EAE3CG,SAAS,CAAC,MAAM;IACdqB,WAAW,CAACf,OAAO,GAAGJ,uBAAuB,CAACe,UAAU,CAAC;IACzDO,gBAAgB,CAAClB,OAAO,GAAG,CAAC,CAAC;EAC/B,CAAC,EAAE,CAACW,UAAU,CAAC,CAAC;EAEhB,MAAMQ,IAAI,GAAG3B,WAAW,CACrB4B,aAAqB,IAAK;IACzB,IAAI,CAACT,UAAU,EAAE;IAEjB,MAAMU,aAAa,GAAGxB,wBAAwB,CAC5CkB,WAAW,CAACf,OAAO,EACnBoB,aACF,CAAC;IACD,IAAIC,aAAa,KAAKH,gBAAgB,CAAClB,OAAO,EAAE;IAEhDkB,gBAAgB,CAAClB,OAAO,GAAGqB,aAAa;IACxCd,YAAY,CAACc,aAAa,CAAC;EAC7B,CAAC,EACD,CAACd,YAAY,EAAEI,UAAU,CAC3B,CAAC;EAED,OAAO;IACL,GAAGC,MAAM;IACTC,SAAS;IACTC,YAAY;IACZK;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { parseMarkdown, parseMarkdownWithOptions } from "../headless.js";
|
|
4
|
+
const PLAIN_TEXT_APPEND_PATTERN = /[`*_~[\]#!<>()|$\n\r]/;
|
|
5
|
+
const FENCE_LINE_PATTERN = /^ {0,3}(```+|~~~+)/;
|
|
6
|
+
const parseAst = (text, options) => {
|
|
7
|
+
if (options) {
|
|
8
|
+
return parseMarkdownWithOptions(text, options);
|
|
9
|
+
}
|
|
10
|
+
return parseMarkdown(text);
|
|
11
|
+
};
|
|
12
|
+
const isInsideFencedCodeBlock = text => {
|
|
13
|
+
const lines = text.split(/\r?\n/);
|
|
14
|
+
let openFenceChar = null;
|
|
15
|
+
let openFenceLength = 0;
|
|
16
|
+
for (const line of lines) {
|
|
17
|
+
const fenceMatch = line.match(FENCE_LINE_PATTERN);
|
|
18
|
+
if (!fenceMatch) continue;
|
|
19
|
+
const marker = fenceMatch[1];
|
|
20
|
+
const markerChar = marker[0];
|
|
21
|
+
const markerLength = marker.length;
|
|
22
|
+
if (!openFenceChar) {
|
|
23
|
+
openFenceChar = markerChar;
|
|
24
|
+
openFenceLength = markerLength;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (markerChar === openFenceChar && markerLength >= openFenceLength) {
|
|
28
|
+
openFenceChar = null;
|
|
29
|
+
openFenceLength = 0;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return openFenceChar !== null;
|
|
33
|
+
};
|
|
34
|
+
const containsFenceLine = text => {
|
|
35
|
+
return text.split(/\r?\n/).some(line => FENCE_LINE_PATTERN.test(line));
|
|
36
|
+
};
|
|
37
|
+
const getTrailingLine = text => {
|
|
38
|
+
const lastLineBreak = Math.max(text.lastIndexOf("\n"), text.lastIndexOf("\r"));
|
|
39
|
+
if (lastLineBreak === -1) return text;
|
|
40
|
+
return text.slice(lastLineBreak + 1);
|
|
41
|
+
};
|
|
42
|
+
const getLeadingLine = text => {
|
|
43
|
+
const newlineIndex = text.indexOf("\n");
|
|
44
|
+
const carriageReturnIndex = text.indexOf("\r");
|
|
45
|
+
const hasNewline = newlineIndex !== -1;
|
|
46
|
+
const hasCarriageReturn = carriageReturnIndex !== -1;
|
|
47
|
+
if (!hasNewline && !hasCarriageReturn) return text;
|
|
48
|
+
if (!hasNewline) return text.slice(0, carriageReturnIndex);
|
|
49
|
+
if (!hasCarriageReturn) return text.slice(0, newlineIndex);
|
|
50
|
+
return text.slice(0, Math.min(newlineIndex, carriageReturnIndex));
|
|
51
|
+
};
|
|
52
|
+
const hasSplitFenceBoundary = (previousText, appendedChunk) => {
|
|
53
|
+
if (appendedChunk.length === 0) return false;
|
|
54
|
+
const candidateLine = `${getTrailingLine(previousText)}${getLeadingLine(appendedChunk)}`;
|
|
55
|
+
if (candidateLine.length === 0) return false;
|
|
56
|
+
return FENCE_LINE_PATTERN.test(candidateLine);
|
|
57
|
+
};
|
|
58
|
+
const findTrailingLeafPath = (node, path = []) => {
|
|
59
|
+
const children = node.children;
|
|
60
|
+
if (!children || children.length === 0) {
|
|
61
|
+
return path;
|
|
62
|
+
}
|
|
63
|
+
const lastIndex = children.length - 1;
|
|
64
|
+
return findTrailingLeafPath(children[lastIndex], [...path, lastIndex]);
|
|
65
|
+
};
|
|
66
|
+
const getNodeAtPath = (node, path) => {
|
|
67
|
+
let current = node;
|
|
68
|
+
for (const index of path) {
|
|
69
|
+
const child = current.children?.[index];
|
|
70
|
+
if (!child) return null;
|
|
71
|
+
current = child;
|
|
72
|
+
}
|
|
73
|
+
return current;
|
|
74
|
+
};
|
|
75
|
+
const appendPlainTextToAst = (ast, appendedChunk, previousTextLength) => {
|
|
76
|
+
if (appendedChunk.length === 0) return ast;
|
|
77
|
+
const path = findTrailingLeafPath(ast);
|
|
78
|
+
const leaf = getNodeAtPath(ast, path);
|
|
79
|
+
if (leaf?.type !== "text") return null;
|
|
80
|
+
if (typeof leaf.end !== "number" || leaf.end !== previousTextLength) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const delta = appendedChunk.length;
|
|
84
|
+
const update = (node, depth) => {
|
|
85
|
+
if (depth === path.length) {
|
|
86
|
+
return {
|
|
87
|
+
...node,
|
|
88
|
+
content: (node.content ?? "") + appendedChunk,
|
|
89
|
+
end: typeof node.end === "number" ? node.end + delta : node.end
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const childIndex = path[depth];
|
|
93
|
+
const children = node.children?.map((child, index) => index === childIndex ? update(child, depth + 1) : child);
|
|
94
|
+
return {
|
|
95
|
+
...node,
|
|
96
|
+
end: typeof node.end === "number" ? node.end + delta : node.end,
|
|
97
|
+
children
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
return update(ast, 0);
|
|
101
|
+
};
|
|
102
|
+
const endsAtBlockBoundary = text => {
|
|
103
|
+
return text.endsWith("\n") || text.endsWith("\r");
|
|
104
|
+
};
|
|
105
|
+
export const getNextStreamAst = ({
|
|
106
|
+
allowIncremental = true,
|
|
107
|
+
nextText,
|
|
108
|
+
options,
|
|
109
|
+
previousAst,
|
|
110
|
+
previousText
|
|
111
|
+
}) => {
|
|
112
|
+
if (!allowIncremental || !nextText.startsWith(previousText)) {
|
|
113
|
+
return parseAst(nextText, options);
|
|
114
|
+
}
|
|
115
|
+
const appendedChunk = nextText.slice(previousText.length);
|
|
116
|
+
if (appendedChunk.length === 0) {
|
|
117
|
+
return previousAst;
|
|
118
|
+
}
|
|
119
|
+
const insideFencedCodeBlock = isInsideFencedCodeBlock(previousText);
|
|
120
|
+
const hasFenceBoundary = containsFenceLine(appendedChunk) || hasSplitFenceBoundary(previousText, appendedChunk);
|
|
121
|
+
if (insideFencedCodeBlock && !hasFenceBoundary) {
|
|
122
|
+
const fencedTextAppendAst = appendPlainTextToAst(previousAst, appendedChunk, previousText.length);
|
|
123
|
+
if (fencedTextAppendAst) {
|
|
124
|
+
return fencedTextAppendAst;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (!PLAIN_TEXT_APPEND_PATTERN.test(appendedChunk)) {
|
|
128
|
+
if (endsAtBlockBoundary(previousText)) {
|
|
129
|
+
return parseAst(nextText, options);
|
|
130
|
+
}
|
|
131
|
+
const textAppendedAst = appendPlainTextToAst(previousAst, appendedChunk, previousText.length);
|
|
132
|
+
if (textAppendedAst) {
|
|
133
|
+
return textAppendedAst;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (insideFencedCodeBlock) {
|
|
137
|
+
return parseAst(nextText, options);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Correctness-first fallback: full reparse for all non-trivial appends.
|
|
141
|
+
// Incremental append is only used for plain text chunks at the true trailing leaf.
|
|
142
|
+
return parseAst(nextText, options);
|
|
143
|
+
};
|
|
144
|
+
export const parseMarkdownAst = (text, options) => {
|
|
145
|
+
return parseAst(text, options);
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=incremental-ast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["parseMarkdown","parseMarkdownWithOptions","PLAIN_TEXT_APPEND_PATTERN","FENCE_LINE_PATTERN","parseAst","text","options","isInsideFencedCodeBlock","lines","split","openFenceChar","openFenceLength","line","fenceMatch","match","marker","markerChar","markerLength","length","containsFenceLine","some","test","getTrailingLine","lastLineBreak","Math","max","lastIndexOf","slice","getLeadingLine","newlineIndex","indexOf","carriageReturnIndex","hasNewline","hasCarriageReturn","min","hasSplitFenceBoundary","previousText","appendedChunk","candidateLine","findTrailingLeafPath","node","path","children","lastIndex","getNodeAtPath","current","index","child","appendPlainTextToAst","ast","previousTextLength","leaf","type","end","delta","update","depth","content","childIndex","map","endsAtBlockBoundary","endsWith","getNextStreamAst","allowIncremental","nextText","previousAst","startsWith","insideFencedCodeBlock","hasFenceBoundary","fencedTextAppendAst","textAppendedAst","parseMarkdownAst"],"sourceRoot":"../../../src","sources":["utils/incremental-ast.ts"],"mappings":";;AAAA,SACEA,aAAa,EACbC,wBAAwB,QAEnB,gBAAa;AAGpB,MAAMC,yBAAyB,GAAG,uBAAuB;AACzD,MAAMC,kBAAkB,GAAG,oBAAoB;AAE/C,MAAMC,QAAQ,GAAGA,CAACC,IAAY,EAAEC,OAAuB,KAAmB;EACxE,IAAIA,OAAO,EAAE;IACX,OAAOL,wBAAwB,CAACI,IAAI,EAAEC,OAAO,CAAC;EAChD;EACA,OAAON,aAAa,CAACK,IAAI,CAAC;AAC5B,CAAC;AAED,MAAME,uBAAuB,GAAIF,IAAY,IAAc;EACzD,MAAMG,KAAK,GAAGH,IAAI,CAACI,KAAK,CAAC,OAAO,CAAC;EACjC,IAAIC,aAA+B,GAAG,IAAI;EAC1C,IAAIC,eAAe,GAAG,CAAC;EAEvB,KAAK,MAAMC,IAAI,IAAIJ,KAAK,EAAE;IACxB,MAAMK,UAAU,GAAGD,IAAI,CAACE,KAAK,CAACX,kBAAkB,CAAC;IACjD,IAAI,CAACU,UAAU,EAAE;IAEjB,MAAME,MAAM,GAAGF,UAAU,CAAC,CAAC,CAAC;IAC5B,MAAMG,UAAU,GAAGD,MAAM,CAAC,CAAC,CAAc;IACzC,MAAME,YAAY,GAAGF,MAAM,CAACG,MAAM;IAElC,IAAI,CAACR,aAAa,EAAE;MAClBA,aAAa,GAAGM,UAAU;MAC1BL,eAAe,GAAGM,YAAY;MAC9B;IACF;IAEA,IAAID,UAAU,KAAKN,aAAa,IAAIO,YAAY,IAAIN,eAAe,EAAE;MACnED,aAAa,GAAG,IAAI;MACpBC,eAAe,GAAG,CAAC;IACrB;EACF;EAEA,OAAOD,aAAa,KAAK,IAAI;AAC/B,CAAC;AAED,MAAMS,iBAAiB,GAAId,IAAY,IAAc;EACnD,OAAOA,IAAI,CAACI,KAAK,CAAC,OAAO,CAAC,CAACW,IAAI,CAAER,IAAI,IAAKT,kBAAkB,CAACkB,IAAI,CAACT,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,MAAMU,eAAe,GAAIjB,IAAY,IAAa;EAChD,MAAMkB,aAAa,GAAGC,IAAI,CAACC,GAAG,CAC5BpB,IAAI,CAACqB,WAAW,CAAC,IAAI,CAAC,EACtBrB,IAAI,CAACqB,WAAW,CAAC,IAAI,CACvB,CAAC;EACD,IAAIH,aAAa,KAAK,CAAC,CAAC,EAAE,OAAOlB,IAAI;EACrC,OAAOA,IAAI,CAACsB,KAAK,CAACJ,aAAa,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,MAAMK,cAAc,GAAIvB,IAAY,IAAa;EAC/C,MAAMwB,YAAY,GAAGxB,IAAI,CAACyB,OAAO,CAAC,IAAI,CAAC;EACvC,MAAMC,mBAAmB,GAAG1B,IAAI,CAACyB,OAAO,CAAC,IAAI,CAAC;EAE9C,MAAME,UAAU,GAAGH,YAAY,KAAK,CAAC,CAAC;EACtC,MAAMI,iBAAiB,GAAGF,mBAAmB,KAAK,CAAC,CAAC;EAEpD,IAAI,CAACC,UAAU,IAAI,CAACC,iBAAiB,EAAE,OAAO5B,IAAI;EAClD,IAAI,CAAC2B,UAAU,EAAE,OAAO3B,IAAI,CAACsB,KAAK,CAAC,CAAC,EAAEI,mBAAmB,CAAC;EAC1D,IAAI,CAACE,iBAAiB,EAAE,OAAO5B,IAAI,CAACsB,KAAK,CAAC,CAAC,EAAEE,YAAY,CAAC;EAE1D,OAAOxB,IAAI,CAACsB,KAAK,CAAC,CAAC,EAAEH,IAAI,CAACU,GAAG,CAACL,YAAY,EAAEE,mBAAmB,CAAC,CAAC;AACnE,CAAC;AAED,MAAMI,qBAAqB,GAAGA,CAC5BC,YAAoB,EACpBC,aAAqB,KACT;EACZ,IAAIA,aAAa,CAACnB,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;EAE5C,MAAMoB,aAAa,GAAG,GAAGhB,eAAe,CAACc,YAAY,CAAC,GAAGR,cAAc,CACrES,aACF,CAAC,EAAE;EACH,IAAIC,aAAa,CAACpB,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;EAE5C,OAAOf,kBAAkB,CAACkB,IAAI,CAACiB,aAAa,CAAC;AAC/C,CAAC;AAED,MAAMC,oBAAoB,GAAGA,CAC3BC,IAAkB,EAClBC,IAAc,GAAG,EAAE,KACN;EACb,MAAMC,QAAQ,GAAGF,IAAI,CAACE,QAAQ;EAC9B,IAAI,CAACA,QAAQ,IAAIA,QAAQ,CAACxB,MAAM,KAAK,CAAC,EAAE;IACtC,OAAOuB,IAAI;EACb;EAEA,MAAME,SAAS,GAAGD,QAAQ,CAACxB,MAAM,GAAG,CAAC;EACrC,OAAOqB,oBAAoB,CAACG,QAAQ,CAACC,SAAS,CAAC,EAAE,CAAC,GAAGF,IAAI,EAAEE,SAAS,CAAC,CAAC;AACxE,CAAC;AAED,MAAMC,aAAa,GAAGA,CACpBJ,IAAkB,EAClBC,IAAuB,KACC;EACxB,IAAII,OAAqB,GAAGL,IAAI;EAChC,KAAK,MAAMM,KAAK,IAAIL,IAAI,EAAE;IACxB,MAAMM,KAAK,GAAGF,OAAO,CAACH,QAAQ,GAAGI,KAAK,CAAC;IACvC,IAAI,CAACC,KAAK,EAAE,OAAO,IAAI;IACvBF,OAAO,GAAGE,KAAK;EACjB;EACA,OAAOF,OAAO;AAChB,CAAC;AAED,MAAMG,oBAAoB,GAAGA,CAC3BC,GAAiB,EACjBZ,aAAqB,EACrBa,kBAA0B,KACF;EACxB,IAAIb,aAAa,CAACnB,MAAM,KAAK,CAAC,EAAE,OAAO+B,GAAG;EAC1C,MAAMR,IAAI,GAAGF,oBAAoB,CAACU,GAAG,CAAC;EACtC,MAAME,IAAI,GAAGP,aAAa,CAACK,GAAG,EAAER,IAAI,CAAC;EACrC,IAAIU,IAAI,EAAEC,IAAI,KAAK,MAAM,EAAE,OAAO,IAAI;EACtC,IAAI,OAAOD,IAAI,CAACE,GAAG,KAAK,QAAQ,IAAIF,IAAI,CAACE,GAAG,KAAKH,kBAAkB,EAAE;IACnE,OAAO,IAAI;EACb;EAEA,MAAMI,KAAK,GAAGjB,aAAa,CAACnB,MAAM;EAClC,MAAMqC,MAAM,GAAGA,CAACf,IAAkB,EAAEgB,KAAa,KAAmB;IAClE,IAAIA,KAAK,KAAKf,IAAI,CAACvB,MAAM,EAAE;MACzB,OAAO;QACL,GAAGsB,IAAI;QACPiB,OAAO,EAAE,CAACjB,IAAI,CAACiB,OAAO,IAAI,EAAE,IAAIpB,aAAa;QAC7CgB,GAAG,EAAE,OAAOb,IAAI,CAACa,GAAG,KAAK,QAAQ,GAAGb,IAAI,CAACa,GAAG,GAAGC,KAAK,GAAGd,IAAI,CAACa;MAC9D,CAAC;IACH;IAEA,MAAMK,UAAU,GAAGjB,IAAI,CAACe,KAAK,CAAC;IAC9B,MAAMd,QAAQ,GAAGF,IAAI,CAACE,QAAQ,EAAEiB,GAAG,CAAC,CAACZ,KAAK,EAAED,KAAK,KAC/CA,KAAK,KAAKY,UAAU,GAAGH,MAAM,CAACR,KAAK,EAAES,KAAK,GAAG,CAAC,CAAC,GAAGT,KACpD,CAAC;IAED,OAAO;MACL,GAAGP,IAAI;MACPa,GAAG,EAAE,OAAOb,IAAI,CAACa,GAAG,KAAK,QAAQ,GAAGb,IAAI,CAACa,GAAG,GAAGC,KAAK,GAAGd,IAAI,CAACa,GAAG;MAC/DX;IACF,CAAC;EACH,CAAC;EAED,OAAOa,MAAM,CAACN,GAAG,EAAE,CAAC,CAAC;AACvB,CAAC;AAED,MAAMW,mBAAmB,GAAIvD,IAAY,IAAc;EACrD,OAAOA,IAAI,CAACwD,QAAQ,CAAC,IAAI,CAAC,IAAIxD,IAAI,CAACwD,QAAQ,CAAC,IAAI,CAAC;AACnD,CAAC;AAUD,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAC/BC,gBAAgB,GAAG,IAAI;EACvBC,QAAQ;EACR1D,OAAO;EACP2D,WAAW;EACX7B;AACmB,CAAC,KAAmB;EACvC,IAAI,CAAC2B,gBAAgB,IAAI,CAACC,QAAQ,CAACE,UAAU,CAAC9B,YAAY,CAAC,EAAE;IAC3D,OAAOhC,QAAQ,CAAC4D,QAAQ,EAAE1D,OAAO,CAAC;EACpC;EAEA,MAAM+B,aAAa,GAAG2B,QAAQ,CAACrC,KAAK,CAACS,YAAY,CAAClB,MAAM,CAAC;EACzD,IAAImB,aAAa,CAACnB,MAAM,KAAK,CAAC,EAAE;IAC9B,OAAO+C,WAAW;EACpB;EAEA,MAAME,qBAAqB,GAAG5D,uBAAuB,CAAC6B,YAAY,CAAC;EACnE,MAAMgC,gBAAgB,GACpBjD,iBAAiB,CAACkB,aAAa,CAAC,IAChCF,qBAAqB,CAACC,YAAY,EAAEC,aAAa,CAAC;EAEpD,IAAI8B,qBAAqB,IAAI,CAACC,gBAAgB,EAAE;IAC9C,MAAMC,mBAAmB,GAAGrB,oBAAoB,CAC9CiB,WAAW,EACX5B,aAAa,EACbD,YAAY,CAAClB,MACf,CAAC;IACD,IAAImD,mBAAmB,EAAE;MACvB,OAAOA,mBAAmB;IAC5B;EACF;EAEA,IAAI,CAACnE,yBAAyB,CAACmB,IAAI,CAACgB,aAAa,CAAC,EAAE;IAClD,IAAIuB,mBAAmB,CAACxB,YAAY,CAAC,EAAE;MACrC,OAAOhC,QAAQ,CAAC4D,QAAQ,EAAE1D,OAAO,CAAC;IACpC;IAEA,MAAMgE,eAAe,GAAGtB,oBAAoB,CAC1CiB,WAAW,EACX5B,aAAa,EACbD,YAAY,CAAClB,MACf,CAAC;IACD,IAAIoD,eAAe,EAAE;MACnB,OAAOA,eAAe;IACxB;EACF;EAEA,IAAIH,qBAAqB,EAAE;IACzB,OAAO/D,QAAQ,CAAC4D,QAAQ,EAAE1D,OAAO,CAAC;EACpC;;EAEA;EACA;EACA,OAAOF,QAAQ,CAAC4D,QAAQ,EAAE1D,OAAO,CAAC;AACpC,CAAC;AAED,OAAO,MAAMiE,gBAAgB,GAAGA,CAC9BlE,IAAY,EACZC,OAAuB,KACN;EACjB,OAAOF,QAAQ,CAACC,IAAI,EAAEC,OAAO,CAAC;AAChC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const ALLOWED_LINK_PROTOCOLS = new Set(["http:", "https:", "mailto:", "tel:", "sms:"]);
|
|
4
|
+
export const normalizeLinkHref = href => {
|
|
5
|
+
const normalizedHref = href.trim();
|
|
6
|
+
return normalizedHref.length > 0 ? normalizedHref : null;
|
|
7
|
+
};
|
|
8
|
+
export const getAllowedExternalHref = href => {
|
|
9
|
+
const protocolMatch = href.match(/^([a-z][a-z0-9+.-]*):/i);
|
|
10
|
+
if (!protocolMatch) return null;
|
|
11
|
+
const protocol = `${protocolMatch[1].toLowerCase()}:`;
|
|
12
|
+
if (!ALLOWED_LINK_PROTOCOLS.has(protocol)) return null;
|
|
13
|
+
return href;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=link-security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ALLOWED_LINK_PROTOCOLS","Set","normalizeLinkHref","href","normalizedHref","trim","length","getAllowedExternalHref","protocolMatch","match","protocol","toLowerCase","has"],"sourceRoot":"../../../src","sources":["utils/link-security.ts"],"mappings":";;AAAA,MAAMA,sBAAsB,GAAG,IAAIC,GAAG,CAAC,CACrC,OAAO,EACP,QAAQ,EACR,SAAS,EACT,MAAM,EACN,MAAM,CACP,CAAC;AAEF,OAAO,MAAMC,iBAAiB,GAAIC,IAAY,IAAoB;EAChE,MAAMC,cAAc,GAAGD,IAAI,CAACE,IAAI,CAAC,CAAC;EAClC,OAAOD,cAAc,CAACE,MAAM,GAAG,CAAC,GAAGF,cAAc,GAAG,IAAI;AAC1D,CAAC;AAED,OAAO,MAAMG,sBAAsB,GAAIJ,IAAY,IAAoB;EACrE,MAAMK,aAAa,GAAGL,IAAI,CAACM,KAAK,CAAC,wBAAwB,CAAC;EAC1D,IAAI,CAACD,aAAa,EAAE,OAAO,IAAI;EAE/B,MAAME,QAAQ,GAAG,GAAGF,aAAa,CAAC,CAAC,CAAC,CAACG,WAAW,CAAC,CAAC,GAAG;EACrD,IAAI,CAACX,sBAAsB,CAACY,GAAG,CAACF,QAAQ,CAAC,EAAE,OAAO,IAAI;EAEtD,OAAOP,IAAI;AACb,CAAC","ignoreList":[]}
|