@expensify/react-native-live-markdown 0.1.115 → 0.1.117
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/lib/commonjs/MarkdownTextInput.js +2 -4
- package/lib/commonjs/MarkdownTextInput.js.map +1 -1
- package/lib/commonjs/MarkdownTextInput.web.js +105 -149
- package/lib/commonjs/MarkdownTextInput.web.js.map +1 -1
- package/lib/commonjs/styleUtils.js.map +1 -1
- package/lib/commonjs/web/utils/blockUtils.js +77 -0
- package/lib/commonjs/web/utils/blockUtils.js.map +1 -0
- package/lib/commonjs/web/utils/browserUtils.js +18 -0
- package/lib/commonjs/web/utils/browserUtils.js.map +1 -0
- package/lib/commonjs/web/utils/cursorUtils.js +111 -0
- package/lib/commonjs/web/utils/cursorUtils.js.map +1 -0
- package/lib/commonjs/web/utils/inputUtils.js +108 -0
- package/lib/commonjs/web/utils/inputUtils.js.map +1 -0
- package/lib/commonjs/web/utils/parserUtils.js +266 -0
- package/lib/commonjs/web/utils/parserUtils.js.map +1 -0
- package/lib/commonjs/web/utils/treeUtils.js +85 -0
- package/lib/commonjs/web/utils/treeUtils.js.map +1 -0
- package/lib/commonjs/web/utils/webStyleUtils.js +51 -0
- package/lib/commonjs/web/utils/webStyleUtils.js.map +1 -0
- package/lib/module/MarkdownTextInput.js +2 -2
- package/lib/module/MarkdownTextInput.js.map +1 -1
- package/lib/module/MarkdownTextInput.web.js +101 -145
- package/lib/module/MarkdownTextInput.web.js.map +1 -1
- package/lib/module/styleUtils.js.map +1 -1
- package/lib/module/web/utils/blockUtils.js +72 -0
- package/lib/module/web/utils/blockUtils.js.map +1 -0
- package/lib/module/web/utils/browserUtils.js +12 -0
- package/lib/module/web/utils/browserUtils.js.map +1 -0
- package/lib/module/web/utils/cursorUtils.js +102 -0
- package/lib/module/web/utils/cursorUtils.js.map +1 -0
- package/lib/module/web/utils/inputUtils.js +99 -0
- package/lib/module/web/utils/inputUtils.js.map +1 -0
- package/lib/module/web/utils/parserUtils.js +260 -0
- package/lib/module/web/utils/parserUtils.js.map +1 -0
- package/lib/module/web/utils/treeUtils.js +78 -0
- package/lib/module/web/utils/treeUtils.js.map +1 -0
- package/lib/module/web/utils/webStyleUtils.js +45 -0
- package/lib/module/web/utils/webStyleUtils.js.map +1 -0
- package/lib/typescript/src/MarkdownTextInput.d.ts +1 -2
- package/lib/typescript/src/MarkdownTextInput.d.ts.map +1 -1
- package/lib/typescript/src/MarkdownTextInput.web.d.ts +9 -3
- package/lib/typescript/src/MarkdownTextInput.web.d.ts.map +1 -1
- package/lib/typescript/src/styleUtils.d.ts +1 -2
- package/lib/typescript/src/styleUtils.d.ts.map +1 -1
- package/lib/typescript/src/web/utils/blockUtils.d.ts +5 -0
- package/lib/typescript/src/web/utils/blockUtils.d.ts.map +1 -0
- package/lib/typescript/src/web/utils/browserUtils.d.ts +12 -0
- package/lib/typescript/src/web/utils/browserUtils.d.ts.map +1 -0
- package/lib/typescript/src/web/utils/cursorUtils.d.ts +12 -0
- package/lib/typescript/src/web/utils/cursorUtils.d.ts.map +1 -0
- package/lib/typescript/src/web/utils/inputUtils.d.ts +9 -0
- package/lib/typescript/src/web/utils/inputUtils.d.ts.map +1 -0
- package/lib/typescript/src/web/utils/parserUtils.d.ts +22 -0
- package/lib/typescript/src/web/utils/parserUtils.d.ts.map +1 -0
- package/lib/typescript/src/web/utils/treeUtils.d.ts +17 -0
- package/lib/typescript/src/web/utils/treeUtils.d.ts.map +1 -0
- package/lib/typescript/src/web/utils/webStyleUtils.d.ts +6 -0
- package/lib/typescript/src/web/utils/webStyleUtils.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/MarkdownTextInput.tsx +4 -7
- package/src/MarkdownTextInput.web.tsx +142 -171
- package/src/styleUtils.ts +1 -3
- package/src/web/utils/blockUtils.ts +72 -0
- package/src/web/utils/browserUtils.ts +13 -0
- package/src/web/utils/cursorUtils.ts +116 -0
- package/src/web/utils/inputUtils.ts +106 -0
- package/src/web/utils/parserUtils.ts +302 -0
- package/src/web/utils/treeUtils.ts +103 -0
- package/src/web/utils/webStyleUtils.ts +54 -0
- package/lib/commonjs/web/browserUtils.js +0 -16
- package/lib/commonjs/web/browserUtils.js.map +0 -1
- package/lib/commonjs/web/cursorUtils.js +0 -156
- package/lib/commonjs/web/cursorUtils.js.map +0 -1
- package/lib/commonjs/web/parserUtils.js +0 -214
- package/lib/commonjs/web/parserUtils.js.map +0 -1
- package/lib/module/web/browserUtils.js +0 -11
- package/lib/module/web/browserUtils.js.map +0 -1
- package/lib/module/web/cursorUtils.js +0 -143
- package/lib/module/web/cursorUtils.js.map +0 -1
- package/lib/module/web/parserUtils.js +0 -206
- package/lib/module/web/parserUtils.js.map +0 -1
- package/lib/typescript/src/web/browserUtils.d.ts +0 -10
- package/lib/typescript/src/web/browserUtils.d.ts.map +0 -1
- package/lib/typescript/src/web/cursorUtils.d.ts +0 -12
- package/lib/typescript/src/web/cursorUtils.d.ts.map +0 -1
- package/lib/typescript/src/web/parserUtils.d.ts +0 -17
- package/lib/typescript/src/web/parserUtils.d.ts.map +0 -1
- package/src/web/browserUtils.ts +0 -11
- package/src/web/cursorUtils.ts +0 -165
- package/src/web/parserUtils.ts +0 -228
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseRangesToHTMLNodes = parseRangesToHTMLNodes;
|
|
7
|
+
exports.updateInputStructure = updateInputStructure;
|
|
8
|
+
var _treeUtils = require("./treeUtils");
|
|
9
|
+
var _cursorUtils = require("./cursorUtils");
|
|
10
|
+
var _blockUtils = require("./blockUtils");
|
|
11
|
+
function ungroupRanges(ranges) {
|
|
12
|
+
const ungroupedRanges = [];
|
|
13
|
+
ranges.forEach(range => {
|
|
14
|
+
if (!range.depth) {
|
|
15
|
+
ungroupedRanges.push(range);
|
|
16
|
+
}
|
|
17
|
+
const {
|
|
18
|
+
depth,
|
|
19
|
+
...rangeWithoutDepth
|
|
20
|
+
} = range;
|
|
21
|
+
Array.from({
|
|
22
|
+
length: depth
|
|
23
|
+
}).forEach(() => {
|
|
24
|
+
ungroupedRanges.push(rangeWithoutDepth);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
return ungroupedRanges;
|
|
28
|
+
}
|
|
29
|
+
function splitTextIntoLines(text) {
|
|
30
|
+
let lineStartIndex = 0;
|
|
31
|
+
const lines = text.split('\n').map(line => {
|
|
32
|
+
const lineObject = {
|
|
33
|
+
text: line,
|
|
34
|
+
start: lineStartIndex,
|
|
35
|
+
length: line.length,
|
|
36
|
+
markdownRanges: []
|
|
37
|
+
};
|
|
38
|
+
lineStartIndex += line.length + 1; // Adding 1 for the newline character
|
|
39
|
+
return lineObject;
|
|
40
|
+
});
|
|
41
|
+
return lines;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Merges lines that contain multiline markdown tags into one line */
|
|
45
|
+
function mergeLinesWithMultilineTags(lines, ranges) {
|
|
46
|
+
let mergedLines = [...lines];
|
|
47
|
+
const lineIndexes = mergedLines.map((_line, index) => index);
|
|
48
|
+
ranges.forEach(range => {
|
|
49
|
+
const beginLineIndex = mergedLines.findLastIndex(line => line.start <= range.start);
|
|
50
|
+
const endLineIndex = mergedLines.findIndex(line => line.start + line.length >= range.start + range.length);
|
|
51
|
+
const correspondingLineIndexes = lineIndexes.slice(beginLineIndex, endLineIndex + 1);
|
|
52
|
+
if (correspondingLineIndexes.length > 0) {
|
|
53
|
+
const mainLineIndex = correspondingLineIndexes[0];
|
|
54
|
+
const mainLine = mergedLines[mainLineIndex];
|
|
55
|
+
mainLine.markdownRanges.push(range);
|
|
56
|
+
const otherLineIndexes = correspondingLineIndexes.slice(1);
|
|
57
|
+
otherLineIndexes.forEach(lineIndex => {
|
|
58
|
+
const otherLine = mergedLines[lineIndex];
|
|
59
|
+
mainLine.text += `\n${otherLine.text}`;
|
|
60
|
+
mainLine.length += otherLine.length + 1;
|
|
61
|
+
mainLine.markdownRanges.push(...otherLine.markdownRanges);
|
|
62
|
+
});
|
|
63
|
+
if (otherLineIndexes.length > 0) {
|
|
64
|
+
mergedLines = mergedLines.filter((_line, index) => !otherLineIndexes.includes(index));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
return mergedLines;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** Adds a value prop to the element and appends the value to the parent node element */
|
|
72
|
+
function appendValueToElement(element, parentTreeNode, value) {
|
|
73
|
+
const targetElement = element;
|
|
74
|
+
const parentNode = parentTreeNode;
|
|
75
|
+
targetElement.value = value;
|
|
76
|
+
parentNode.element.value = (parentNode.element.value || '') + value;
|
|
77
|
+
}
|
|
78
|
+
function appendNode(element, parentTreeNode, type, length) {
|
|
79
|
+
const node = (0, _treeUtils.addNodeToTree)(element, parentTreeNode, type, length);
|
|
80
|
+
parentTreeNode.element.appendChild(element);
|
|
81
|
+
return node;
|
|
82
|
+
}
|
|
83
|
+
function addBrElement(node) {
|
|
84
|
+
const span = document.createElement('span');
|
|
85
|
+
span.setAttribute('data-type', 'br');
|
|
86
|
+
appendValueToElement(span, node, '\n');
|
|
87
|
+
const spanNode = appendNode(span, node, 'br', 1);
|
|
88
|
+
appendNode(document.createElement('br'), spanNode, 'br', 1);
|
|
89
|
+
return spanNode;
|
|
90
|
+
}
|
|
91
|
+
function addTextToElement(node, text) {
|
|
92
|
+
const lines = text.split('\n');
|
|
93
|
+
lines.forEach((line, index) => {
|
|
94
|
+
if (line !== '') {
|
|
95
|
+
const span = document.createElement('span');
|
|
96
|
+
appendValueToElement(span, node, line);
|
|
97
|
+
span.setAttribute('data-type', 'text');
|
|
98
|
+
span.appendChild(document.createTextNode(line));
|
|
99
|
+
appendNode(span, node, 'text', line.length);
|
|
100
|
+
}
|
|
101
|
+
if (index < lines.length - 1 || index === 0 && line === '') {
|
|
102
|
+
addBrElement(node);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function addParagraph(node, text = null, length, disableInlineStyles = false) {
|
|
107
|
+
const p = document.createElement('p');
|
|
108
|
+
p.setAttribute('data-type', 'line');
|
|
109
|
+
if (!disableInlineStyles) {
|
|
110
|
+
(0, _blockUtils.addStyleToBlock)(p, 'line', {});
|
|
111
|
+
}
|
|
112
|
+
const pNode = appendNode(p, node, 'line', length);
|
|
113
|
+
if (text === '') {
|
|
114
|
+
// If the line is empty, we still need to add a br element to keep the line height
|
|
115
|
+
addBrElement(pNode);
|
|
116
|
+
} else if (text) {
|
|
117
|
+
addTextToElement(pNode, text);
|
|
118
|
+
}
|
|
119
|
+
return pNode;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** Builds HTML DOM structure based on passed text and markdown ranges */
|
|
123
|
+
function parseRangesToHTMLNodes(text, ranges, markdownStyle = {}, disableInlineStyles = false) {
|
|
124
|
+
const rootElement = document.createElement('span');
|
|
125
|
+
const textLength = text.replace(/\n/g, '\\n').length;
|
|
126
|
+
const rootNode = {
|
|
127
|
+
element: rootElement,
|
|
128
|
+
start: 0,
|
|
129
|
+
length: textLength,
|
|
130
|
+
parentNode: null,
|
|
131
|
+
childNodes: [],
|
|
132
|
+
type: 'root',
|
|
133
|
+
orderIndex: '',
|
|
134
|
+
isGeneratingNewline: false
|
|
135
|
+
};
|
|
136
|
+
let currentParentNode = rootNode;
|
|
137
|
+
let lines = splitTextIntoLines(text);
|
|
138
|
+
if (ranges.length === 0) {
|
|
139
|
+
lines.forEach(line => {
|
|
140
|
+
addParagraph(rootNode, line.text, line.length, disableInlineStyles);
|
|
141
|
+
});
|
|
142
|
+
return {
|
|
143
|
+
dom: rootElement,
|
|
144
|
+
tree: rootNode
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
const markdownRanges = ungroupRanges(ranges);
|
|
148
|
+
lines = mergeLinesWithMultilineTags(lines, markdownRanges);
|
|
149
|
+
let lastRangeEndIndex = 0;
|
|
150
|
+
while (lines.length > 0) {
|
|
151
|
+
const line = lines.shift();
|
|
152
|
+
if (!line) {
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// preparing line paragraph element for markdown text
|
|
157
|
+
currentParentNode = addParagraph(rootNode, null, line.length, disableInlineStyles);
|
|
158
|
+
rootElement.value = (rootElement.value || '') + line.text;
|
|
159
|
+
if (lines.length > 0) {
|
|
160
|
+
rootElement.value = `${rootElement.value || ''}\n`;
|
|
161
|
+
}
|
|
162
|
+
if (line.markdownRanges.length === 0) {
|
|
163
|
+
addTextToElement(currentParentNode, line.text);
|
|
164
|
+
}
|
|
165
|
+
lastRangeEndIndex = line.start;
|
|
166
|
+
const lineMarkdownRanges = line.markdownRanges;
|
|
167
|
+
// go through all markdown ranges in the line
|
|
168
|
+
while (lineMarkdownRanges.length > 0) {
|
|
169
|
+
const range = lineMarkdownRanges.shift();
|
|
170
|
+
if (!range) {
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
const endOfCurrentRange = range.start + range.length;
|
|
174
|
+
const nextRangeStartIndex = lineMarkdownRanges.length > 0 && !!lineMarkdownRanges[0] ? lineMarkdownRanges[0].start || 0 : textLength;
|
|
175
|
+
|
|
176
|
+
// add text before the markdown range
|
|
177
|
+
const textBeforeRange = line.text.substring(lastRangeEndIndex - line.start, range.start - line.start);
|
|
178
|
+
if (textBeforeRange) {
|
|
179
|
+
addTextToElement(currentParentNode, textBeforeRange);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// create markdown span element
|
|
183
|
+
const span = document.createElement('span');
|
|
184
|
+
span.setAttribute('data-type', range.type);
|
|
185
|
+
if (!disableInlineStyles) {
|
|
186
|
+
(0, _blockUtils.addStyleToBlock)(span, range.type, markdownStyle);
|
|
187
|
+
}
|
|
188
|
+
const spanNode = appendNode(span, currentParentNode, range.type, range.length);
|
|
189
|
+
if (lineMarkdownRanges.length > 0 && nextRangeStartIndex < endOfCurrentRange && range.type !== 'syntax') {
|
|
190
|
+
// tag nesting
|
|
191
|
+
currentParentNode = spanNode;
|
|
192
|
+
lastRangeEndIndex = range.start;
|
|
193
|
+
} else {
|
|
194
|
+
// adding markdown tag
|
|
195
|
+
addTextToElement(spanNode, text.substring(range.start, endOfCurrentRange));
|
|
196
|
+
currentParentNode.element.value = (currentParentNode.element.value || '') + (spanNode.element.value || '');
|
|
197
|
+
lastRangeEndIndex = endOfCurrentRange;
|
|
198
|
+
// tag unnesting and adding text after the tag
|
|
199
|
+
while (currentParentNode.parentNode !== null && nextRangeStartIndex >= currentParentNode.start + currentParentNode.length) {
|
|
200
|
+
const textAfterRange = line.text.substring(lastRangeEndIndex - line.start, currentParentNode.start - line.start + currentParentNode.length);
|
|
201
|
+
if (textAfterRange) {
|
|
202
|
+
addTextToElement(currentParentNode, textAfterRange);
|
|
203
|
+
}
|
|
204
|
+
lastRangeEndIndex = currentParentNode.start + currentParentNode.length;
|
|
205
|
+
if (currentParentNode.parentNode.type !== 'root') {
|
|
206
|
+
currentParentNode.parentNode.element.value = currentParentNode.element.value || '';
|
|
207
|
+
}
|
|
208
|
+
currentParentNode = currentParentNode.parentNode || rootNode;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
dom: rootElement,
|
|
215
|
+
tree: rootNode
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
function moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, target) {
|
|
219
|
+
if (!isFocused) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
if (alwaysMoveCursorToTheEnd || cursorPosition === null) {
|
|
223
|
+
(0, _cursorUtils.moveCursorToEnd)(target);
|
|
224
|
+
} else if (cursorPosition !== null) {
|
|
225
|
+
(0, _cursorUtils.setCursorPosition)(target, cursorPosition);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
function updateInputStructure(target, text, cursorPositionIndex, markdownStyle = {}, alwaysMoveCursorToTheEnd = false, shouldForceDOMUpdate = false) {
|
|
229
|
+
const targetElement = target;
|
|
230
|
+
|
|
231
|
+
// in case the cursorPositionIndex is larger than text length, cursorPosition will be null, i.e: move the caret to the end
|
|
232
|
+
let cursorPosition = cursorPositionIndex !== null && cursorPositionIndex <= text.length ? cursorPositionIndex : null;
|
|
233
|
+
const isFocused = document.activeElement === target;
|
|
234
|
+
if (isFocused && cursorPositionIndex === null) {
|
|
235
|
+
const selection = (0, _cursorUtils.getCurrentCursorPosition)(target);
|
|
236
|
+
cursorPosition = selection ? selection.start : null;
|
|
237
|
+
}
|
|
238
|
+
const ranges = global.parseExpensiMarkToRanges(text);
|
|
239
|
+
const markdownRanges = ranges;
|
|
240
|
+
if (!text || targetElement.innerHTML === '<br>' || targetElement && targetElement.innerHTML === '\n') {
|
|
241
|
+
targetElement.innerHTML = '';
|
|
242
|
+
targetElement.innerText = '';
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// We don't want to parse text with single '\n', because contentEditable represents it as invisible <br />
|
|
246
|
+
if (text) {
|
|
247
|
+
const {
|
|
248
|
+
dom,
|
|
249
|
+
tree
|
|
250
|
+
} = parseRangesToHTMLNodes(text, markdownRanges, markdownStyle);
|
|
251
|
+
if (shouldForceDOMUpdate || targetElement.innerHTML !== dom.innerHTML) {
|
|
252
|
+
targetElement.innerHTML = '';
|
|
253
|
+
targetElement.innerText = '';
|
|
254
|
+
Array.from(dom.children).forEach(child => {
|
|
255
|
+
targetElement.appendChild(child);
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
targetElement.tree = tree;
|
|
259
|
+
moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, targetElement);
|
|
260
|
+
}
|
|
261
|
+
return {
|
|
262
|
+
text,
|
|
263
|
+
cursorPosition: cursorPosition || 0
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=parserUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_treeUtils","require","_cursorUtils","_blockUtils","ungroupRanges","ranges","ungroupedRanges","forEach","range","depth","push","rangeWithoutDepth","Array","from","length","splitTextIntoLines","text","lineStartIndex","lines","split","map","line","lineObject","start","markdownRanges","mergeLinesWithMultilineTags","mergedLines","lineIndexes","_line","index","beginLineIndex","findLastIndex","endLineIndex","findIndex","correspondingLineIndexes","slice","mainLineIndex","mainLine","otherLineIndexes","lineIndex","otherLine","filter","includes","appendValueToElement","element","parentTreeNode","value","targetElement","parentNode","appendNode","type","node","addNodeToTree","appendChild","addBrElement","span","document","createElement","setAttribute","spanNode","addTextToElement","createTextNode","addParagraph","disableInlineStyles","p","addStyleToBlock","pNode","parseRangesToHTMLNodes","markdownStyle","rootElement","textLength","replace","rootNode","childNodes","orderIndex","isGeneratingNewline","currentParentNode","dom","tree","lastRangeEndIndex","shift","lineMarkdownRanges","endOfCurrentRange","nextRangeStartIndex","textBeforeRange","substring","textAfterRange","moveCursor","isFocused","alwaysMoveCursorToTheEnd","cursorPosition","target","moveCursorToEnd","setCursorPosition","updateInputStructure","cursorPositionIndex","shouldForceDOMUpdate","activeElement","selection","getCurrentCursorPosition","global","parseExpensiMarkToRanges","innerHTML","innerText","children","child"],"sourceRoot":"../../../../src","sources":["web/utils/parserUtils.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.addNodeToTree = addNodeToTree;
|
|
7
|
+
exports.findHTMLElementInTree = findHTMLElementInTree;
|
|
8
|
+
exports.getTreeNodeByIndex = getTreeNodeByIndex;
|
|
9
|
+
function addNodeToTree(element, parentTreeNode, type, length = null) {
|
|
10
|
+
var _element$value, _element$childNodes$, _element$childNodes$$;
|
|
11
|
+
const contentLength = length || (element.nodeName === 'BR' || type === 'br' ? 1 : (_element$value = element.value) === null || _element$value === void 0 ? void 0 : _element$value.length) || 0;
|
|
12
|
+
const isGeneratingNewline = type === 'line' && !(element.childNodes.length === 1 && ((_element$childNodes$ = element.childNodes[0]) === null || _element$childNodes$ === void 0 || (_element$childNodes$$ = _element$childNodes$.getAttribute) === null || _element$childNodes$$ === void 0 ? void 0 : _element$childNodes$$.call(_element$childNodes$, 'data-type')) === 'br');
|
|
13
|
+
const parentChildrenCount = (parentTreeNode === null || parentTreeNode === void 0 ? void 0 : parentTreeNode.childNodes.length) || 0;
|
|
14
|
+
let startIndex = parentTreeNode.start;
|
|
15
|
+
if (parentChildrenCount > 0) {
|
|
16
|
+
const lastParentChild = parentTreeNode.childNodes[parentChildrenCount - 1];
|
|
17
|
+
if (lastParentChild) {
|
|
18
|
+
startIndex = lastParentChild.start + lastParentChild.length;
|
|
19
|
+
startIndex += lastParentChild.isGeneratingNewline || element.style.display === 'block' ? 1 : 0;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const item = {
|
|
23
|
+
element,
|
|
24
|
+
parentNode: parentTreeNode,
|
|
25
|
+
childNodes: [],
|
|
26
|
+
start: startIndex,
|
|
27
|
+
length: contentLength,
|
|
28
|
+
type,
|
|
29
|
+
orderIndex: parentTreeNode.parentNode === null ? `${parentChildrenCount}` : `${parentTreeNode.orderIndex},${parentChildrenCount}`,
|
|
30
|
+
isGeneratingNewline
|
|
31
|
+
};
|
|
32
|
+
element.setAttribute('data-id', item.orderIndex);
|
|
33
|
+
parentTreeNode.childNodes.push(item);
|
|
34
|
+
return item;
|
|
35
|
+
}
|
|
36
|
+
function findHTMLElementInTree(treeRoot, element) {
|
|
37
|
+
var _element$hasAttribute, _element$hasAttribute2, _element$getAttribute;
|
|
38
|
+
if ((_element$hasAttribute = element.hasAttribute) !== null && _element$hasAttribute !== void 0 && _element$hasAttribute.call(element, 'contenteditable')) {
|
|
39
|
+
return treeRoot;
|
|
40
|
+
}
|
|
41
|
+
if (!element || !((_element$hasAttribute2 = element.hasAttribute) !== null && _element$hasAttribute2 !== void 0 && _element$hasAttribute2.call(element, 'data-id'))) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const indexes = (_element$getAttribute = element.getAttribute('data-id')) === null || _element$getAttribute === void 0 ? void 0 : _element$getAttribute.split(',');
|
|
45
|
+
let el = treeRoot;
|
|
46
|
+
while (el && indexes && indexes.length > 0) {
|
|
47
|
+
const index = Number(indexes.shift() || -1);
|
|
48
|
+
if (index < 0) {
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
if (el) {
|
|
52
|
+
el = el.childNodes[index] || null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return el;
|
|
56
|
+
}
|
|
57
|
+
function getTreeNodeByIndex(treeRoot, index) {
|
|
58
|
+
let el = treeRoot;
|
|
59
|
+
let i = 0;
|
|
60
|
+
let newLineGenerated = false;
|
|
61
|
+
while (el && el.childNodes.length > 0 && i < el.childNodes.length) {
|
|
62
|
+
const child = el.childNodes[i];
|
|
63
|
+
if (!child) {
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
if (index >= child.start && index < child.start + child.length) {
|
|
67
|
+
if (child.childNodes.length === 0) {
|
|
68
|
+
return child;
|
|
69
|
+
}
|
|
70
|
+
el = child;
|
|
71
|
+
i = 0;
|
|
72
|
+
} else if ((child.isGeneratingNewline || newLineGenerated || i === el.childNodes.length - 1) && index === child.start + child.length) {
|
|
73
|
+
newLineGenerated = true;
|
|
74
|
+
if (child.childNodes.length === 0) {
|
|
75
|
+
return child;
|
|
76
|
+
}
|
|
77
|
+
el = child;
|
|
78
|
+
i = 0;
|
|
79
|
+
} else {
|
|
80
|
+
i++;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=treeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["addNodeToTree","element","parentTreeNode","type","length","_element$value","_element$childNodes$","_element$childNodes$$","contentLength","nodeName","value","isGeneratingNewline","childNodes","getAttribute","call","parentChildrenCount","startIndex","start","lastParentChild","style","display","item","parentNode","orderIndex","setAttribute","push","findHTMLElementInTree","treeRoot","_element$hasAttribute","_element$hasAttribute2","_element$getAttribute","hasAttribute","indexes","split","el","index","Number","shift","getTreeNodeByIndex","i","newLineGenerated","child"],"sourceRoot":"../../../../src","sources":["web/utils/treeUtils.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseToReactDOMStyle = parseToReactDOMStyle;
|
|
7
|
+
exports.processMarkdownStyle = processMarkdownStyle;
|
|
8
|
+
var _styleUtils = require("../../styleUtils");
|
|
9
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
10
|
+
|
|
11
|
+
let createReactDOMStyle;
|
|
12
|
+
try {
|
|
13
|
+
createReactDOMStyle =
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
15
|
+
require('react-native-web/dist/exports/StyleSheet/compiler/createReactDOMStyle').default;
|
|
16
|
+
} catch (e) {
|
|
17
|
+
throw new Error('[react-native-live-markdown] Function `createReactDOMStyle` from react-native-web not found. Please make sure that you are using React Native Web 0.18 or newer.');
|
|
18
|
+
}
|
|
19
|
+
let preprocessStyle;
|
|
20
|
+
try {
|
|
21
|
+
preprocessStyle =
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
23
|
+
require('react-native-web/dist/exports/StyleSheet/preprocess').default;
|
|
24
|
+
} catch (e) {
|
|
25
|
+
throw new Error('[react-native-live-markdown] Function `preprocessStyle` from react-native-web not found.');
|
|
26
|
+
}
|
|
27
|
+
let dangerousStyleValue;
|
|
28
|
+
try {
|
|
29
|
+
dangerousStyleValue =
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
31
|
+
require('react-native-web/dist/modules/setValueForStyles/dangerousStyleValue').default;
|
|
32
|
+
} catch (e) {
|
|
33
|
+
throw new Error('[react-native-live-markdown] Function `dangerousStyleValue` from react-native-web not found.');
|
|
34
|
+
}
|
|
35
|
+
function processUnitsInMarkdownStyle(input) {
|
|
36
|
+
const output = JSON.parse(JSON.stringify(input));
|
|
37
|
+
Object.keys(output).forEach(key => {
|
|
38
|
+
const obj = output[key];
|
|
39
|
+
Object.keys(obj).forEach(prop => {
|
|
40
|
+
obj[prop] = dangerousStyleValue(prop, obj[prop], false);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
return output;
|
|
44
|
+
}
|
|
45
|
+
function processMarkdownStyle(input) {
|
|
46
|
+
return processUnitsInMarkdownStyle((0, _styleUtils.mergeMarkdownStyleWithDefault)(input));
|
|
47
|
+
}
|
|
48
|
+
function parseToReactDOMStyle(style) {
|
|
49
|
+
return createReactDOMStyle(preprocessStyle(style));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=webStyleUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_styleUtils","require","createReactDOMStyle","default","e","Error","preprocessStyle","dangerousStyleValue","processUnitsInMarkdownStyle","input","output","JSON","parse","stringify","Object","keys","forEach","key","obj","prop","processMarkdownStyle","mergeMarkdownStyleWithDefault","parseToReactDOMStyle","style"],"sourceRoot":"../../../../src","sources":["web/utils/webStyleUtils.ts"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAHA;;AAKA,IAAIC,mBAAwC;AAC5C,IAAI;EACFA,mBAAmB;EACjB;EACAD,OAAO,CAAC,uEAAuE,CAAC,CAACE,OAAO;AAC5F,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV,MAAM,IAAIC,KAAK,CAAC,kKAAkK,CAAC;AACrL;AAEA,IAAIC,eAAoC;AACxC,IAAI;EACFA,eAAe;EACb;EACAL,OAAO,CAAC,qDAAqD,CAAC,CAACE,OAAO;AAC1E,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV,MAAM,IAAIC,KAAK,CAAC,0FAA0F,CAAC;AAC7G;AAEA,IAAIE,mBAAiF;AACrF,IAAI;EACFA,mBAAmB;EACjB;EACAN,OAAO,CAAC,qEAAqE,CAAC,CAACE,OAAO;AAC1F,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV,MAAM,IAAIC,KAAK,CAAC,8FAA8F,CAAC;AACjH;AAEA,SAASG,2BAA2BA,CAACC,KAAoB,EAAiB;EACxE,MAAMC,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,KAAK,CAAC,CAAC;EAEhDK,MAAM,CAACC,IAAI,CAACL,MAAM,CAAC,CAACM,OAAO,CAAEC,GAAG,IAAK;IACnC,MAAMC,GAAG,GAAGR,MAAM,CAACO,GAAG,CAAC;IACvBH,MAAM,CAACC,IAAI,CAACG,GAAG,CAAC,CAACF,OAAO,CAAEG,IAAI,IAAK;MACjCD,GAAG,CAACC,IAAI,CAAC,GAAGZ,mBAAmB,CAACY,IAAI,EAAED,GAAG,CAACC,IAAI,CAAC,EAAE,KAAK,CAAC;IACzD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,OAAOT,MAAM;AACf;AAEA,SAASU,oBAAoBA,CAACX,KAAgC,EAAiB;EAC7E,OAAOD,2BAA2B,CAAC,IAAAa,yCAA6B,EAACZ,KAAK,CAAC,CAAC;AAC1E;AAEA,SAASa,oBAAoBA,CAACC,KAAgB,EAAO;EACnD,OAAOrB,mBAAmB,CAACI,eAAe,CAACiB,KAAK,CAAC,CAAC;AACpD"}
|
|
@@ -3,7 +3,7 @@ import { StyleSheet, TextInput, processColor } from 'react-native';
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import MarkdownTextInputDecoratorViewNativeComponent from './MarkdownTextInputDecoratorViewNativeComponent';
|
|
5
5
|
import NativeLiveMarkdownModule from './NativeLiveMarkdownModule';
|
|
6
|
-
import
|
|
6
|
+
import { mergeMarkdownStyleWithDefault } from './styleUtils';
|
|
7
7
|
if (NativeLiveMarkdownModule) {
|
|
8
8
|
NativeLiveMarkdownModule.install();
|
|
9
9
|
}
|
|
@@ -22,7 +22,7 @@ function processColorsInMarkdownStyle(input) {
|
|
|
22
22
|
return output;
|
|
23
23
|
}
|
|
24
24
|
function processMarkdownStyle(input) {
|
|
25
|
-
return processColorsInMarkdownStyle(
|
|
25
|
+
return processColorsInMarkdownStyle(mergeMarkdownStyleWithDefault(input));
|
|
26
26
|
}
|
|
27
27
|
const MarkdownTextInput = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
28
28
|
const IS_FABRIC = ('nativeFabricUIManager' in global);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","TextInput","processColor","React","MarkdownTextInputDecoratorViewNativeComponent","NativeLiveMarkdownModule","
|
|
1
|
+
{"version":3,"names":["StyleSheet","TextInput","processColor","React","MarkdownTextInputDecoratorViewNativeComponent","NativeLiveMarkdownModule","mergeMarkdownStyleWithDefault","install","processColorsInMarkdownStyle","input","output","JSON","parse","stringify","Object","keys","forEach","key","obj","prop","endsWith","processMarkdownStyle","MarkdownTextInput","forwardRef","props","ref","IS_FABRIC","global","markdownStyle","useMemo","createElement","Fragment","_extends","style","styles","farAway","displayNone","create","display","position","top","left"],"sourceRoot":"../../src","sources":["MarkdownTextInput.tsx"],"mappings":";AAAA,SAAQA,UAAU,EAAEC,SAAS,EAAEC,YAAY,QAAO,cAAc;AAChE,OAAOC,KAAK,MAAM,OAAO;AAEzB,OAAOC,6CAA6C,MAAM,iDAAiD;AAE3G,OAAOC,wBAAwB,MAAM,4BAA4B;AACjE,SAAQC,6BAA6B,QAAO,cAAc;AAG1D,IAAID,wBAAwB,EAAE;EAC5BA,wBAAwB,CAACE,OAAO,CAAC,CAAC;AACpC;AAMA,SAASC,4BAA4BA,CAACC,KAAoB,EAAiB;EACzE,MAAMC,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,KAAK,CAAC,CAAC;EAEhDK,MAAM,CAACC,IAAI,CAACL,MAAM,CAAC,CAACM,OAAO,CAAEC,GAAG,IAAK;IACnC,MAAMC,GAAG,GAAGR,MAAM,CAACO,GAAG,CAAC;IACvBH,MAAM,CAACC,IAAI,CAACG,GAAG,CAAC,CAACF,OAAO,CAAEG,IAAI,IAAK;MACjC;MACA,IAAI,EAAEA,IAAI,KAAK,OAAO,IAAIA,IAAI,CAACC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE;QACjD;MACF;MACAF,GAAG,CAACC,IAAI,CAAC,GAAGjB,YAAY,CAACgB,GAAG,CAACC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,OAAOT,MAAM;AACf;AAEA,SAASW,oBAAoBA,CAACZ,KAAuC,EAAiB;EACpF,OAAOD,4BAA4B,CAACF,6BAA6B,CAACG,KAAK,CAAC,CAAC;AAC3E;AAEA,MAAMa,iBAAiB,gBAAGnB,KAAK,CAACoB,UAAU,CAAoC,CAACC,KAAK,EAAEC,GAAG,KAAK;EAC5F,MAAMC,SAAS,IAAG,uBAAuB,IAAIC,MAAM;EAEnD,MAAMC,aAAa,GAAGzB,KAAK,CAAC0B,OAAO,CAAC,MAAMR,oBAAoB,CAACG,KAAK,CAACI,aAAa,CAAC,EAAE,CAACJ,KAAK,CAACI,aAAa,CAAC,CAAC;EAE3G,oBACEzB,KAAA,CAAA2B,aAAA,CAAA3B,KAAA,CAAA4B,QAAA,qBACE5B,KAAA,CAAA2B,aAAA,CAAC7B,SAAS,EAAA+B,QAAA,KACJR,KAAK;IACTC,GAAG,EAAEA;EAAI,EACV,CAAC,eACFtB,KAAA,CAAA2B,aAAA,CAAC1B,6CAA6C;IAC5C6B,KAAK,EAAEP,SAAS,GAAGQ,MAAM,CAACC,OAAO,GAAGD,MAAM,CAACE,WAAY;IACvDR,aAAa,EAAEA;EAAc,CAC9B,CACD,CAAC;AAEP,CAAC,CAAC;AAEF,MAAMM,MAAM,GAAGlC,UAAU,CAACqC,MAAM,CAAC;EAC/BD,WAAW,EAAE;IACXE,OAAO,EAAE;EACX,CAAC;EACDH,OAAO,EAAE;IACPI,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,GAAG;IACRC,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAIF,eAAenB,iBAAiB"}
|