@expensify/react-native-live-markdown 0.1.3 → 0.1.5
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 +5 -55
- package/lib/commonjs/MarkdownTextInput.js.map +1 -1
- package/lib/commonjs/MarkdownTextInput.web.js +399 -9
- package/lib/commonjs/MarkdownTextInput.web.js.map +1 -1
- package/lib/commonjs/react-native-web.d.js +2 -0
- package/lib/commonjs/react-native-web.d.js.map +1 -0
- package/lib/commonjs/styleUtils.js +61 -0
- package/lib/commonjs/styleUtils.js.map +1 -0
- package/lib/commonjs/web/InputHistory.js +92 -0
- package/lib/commonjs/web/InputHistory.js.map +1 -0
- package/lib/commonjs/web/MarkdownTextInput.css +24 -0
- package/lib/commonjs/web/cursorUtils.js +90 -0
- package/lib/commonjs/web/cursorUtils.js.map +1 -0
- package/lib/commonjs/web/parserUtils.js +170 -0
- package/lib/commonjs/web/parserUtils.js.map +1 -0
- package/lib/module/MarkdownTextInput.js +3 -55
- package/lib/module/MarkdownTextInput.js.map +1 -1
- package/lib/module/MarkdownTextInput.web.js +399 -12
- package/lib/module/MarkdownTextInput.web.js.map +1 -1
- package/lib/module/react-native-web.d.js +2 -0
- package/lib/module/react-native-web.d.js.map +1 -0
- package/lib/module/styleUtils.js +56 -0
- package/lib/module/styleUtils.js.map +1 -0
- package/lib/module/web/InputHistory.js +85 -0
- package/lib/module/web/InputHistory.js.map +1 -0
- package/lib/module/web/MarkdownTextInput.css +24 -0
- package/lib/module/web/cursorUtils.js +83 -0
- package/lib/module/web/cursorUtils.js.map +1 -0
- package/lib/module/web/parserUtils.js +162 -0
- package/lib/module/web/parserUtils.js.map +1 -0
- package/lib/parser/react-native-live-markdown-parser.js +34 -0
- package/lib/typescript/src/MarkdownTextInput.d.ts +3 -6
- package/lib/typescript/src/MarkdownTextInput.d.ts.map +1 -1
- package/lib/typescript/src/MarkdownTextInput.web.d.ts +9 -2
- package/lib/typescript/src/MarkdownTextInput.web.d.ts.map +1 -1
- package/lib/typescript/src/styleUtils.d.ts +9 -0
- package/lib/typescript/src/styleUtils.d.ts.map +1 -0
- package/lib/typescript/src/web/InputHistory.d.ts +24 -0
- package/lib/typescript/src/web/InputHistory.d.ts.map +1 -0
- package/lib/typescript/src/web/cursorUtils.d.ts +8 -0
- package/lib/typescript/src/web/cursorUtils.d.ts.map +1 -0
- package/lib/typescript/src/web/parserUtils.d.ts +16 -0
- package/lib/typescript/src/web/parserUtils.d.ts.map +1 -0
- package/package.json +6 -3
- package/parser/react-native-live-markdown-parser.js +7 -7
- package/src/MarkdownTextInput.tsx +9 -69
- package/src/MarkdownTextInput.web.tsx +516 -16
- package/src/react-native-web.d.ts +1 -0
- package/src/styleUtils.ts +70 -0
- package/src/web/InputHistory.ts +114 -0
- package/src/web/MarkdownTextInput.css +24 -0
- package/src/web/cursorUtils.ts +87 -0
- package/src/web/parserUtils.ts +194 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
class InputHistory {
|
|
8
|
+
currentText = null;
|
|
9
|
+
timeout = null;
|
|
10
|
+
constructor(depth, debounceTime = 200) {
|
|
11
|
+
this.depth = depth;
|
|
12
|
+
this.history = [];
|
|
13
|
+
this.historyIndex = 0;
|
|
14
|
+
this.debounceTime = debounceTime;
|
|
15
|
+
}
|
|
16
|
+
getCurrentItem() {
|
|
17
|
+
return this.history[this.historyIndex] || null;
|
|
18
|
+
}
|
|
19
|
+
setHistory(newHistory) {
|
|
20
|
+
this.history = newHistory.slice(newHistory.length - this.depth);
|
|
21
|
+
this.historyIndex = newHistory.length - 1;
|
|
22
|
+
}
|
|
23
|
+
setHistoryIndex(index) {
|
|
24
|
+
this.historyIndex = index;
|
|
25
|
+
}
|
|
26
|
+
clear() {
|
|
27
|
+
this.history = [];
|
|
28
|
+
this.historyIndex = 0;
|
|
29
|
+
}
|
|
30
|
+
debouncedAdd(text, cursorPosition) {
|
|
31
|
+
this.currentText = text;
|
|
32
|
+
if (this.timeout) {
|
|
33
|
+
clearTimeout(this.timeout);
|
|
34
|
+
}
|
|
35
|
+
this.timeout = setTimeout(() => {
|
|
36
|
+
if (this.currentText == null) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.add(this.currentText, cursorPosition);
|
|
40
|
+
this.currentText = null;
|
|
41
|
+
}, this.debounceTime);
|
|
42
|
+
}
|
|
43
|
+
add(text, cursorPosition) {
|
|
44
|
+
if (this.history.length > 0) {
|
|
45
|
+
const lastItem = this.history[this.history.length - 1];
|
|
46
|
+
if (lastItem && text === lastItem.text) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (this.historyIndex < this.history.length - 1) {
|
|
51
|
+
this.history.splice(this.historyIndex + 1);
|
|
52
|
+
}
|
|
53
|
+
this.history.push({
|
|
54
|
+
text,
|
|
55
|
+
cursorPosition
|
|
56
|
+
});
|
|
57
|
+
if (this.history.length > this.depth) {
|
|
58
|
+
this.history.shift();
|
|
59
|
+
}
|
|
60
|
+
this.historyIndex = this.history.length - 1;
|
|
61
|
+
}
|
|
62
|
+
undo() {
|
|
63
|
+
if (this.currentText !== null && this.timeout) {
|
|
64
|
+
clearTimeout(this.timeout);
|
|
65
|
+
return this.history[this.history.length - 1] || null;
|
|
66
|
+
}
|
|
67
|
+
if (this.history.length === 0 || this.historyIndex - 1 < 0) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
if (this.historyIndex > 0) {
|
|
71
|
+
this.historyIndex -= 1;
|
|
72
|
+
}
|
|
73
|
+
return this.history[this.historyIndex] || null;
|
|
74
|
+
}
|
|
75
|
+
redo() {
|
|
76
|
+
if (this.currentText !== null && this.timeout) {
|
|
77
|
+
clearTimeout(this.timeout);
|
|
78
|
+
return this.history[this.history.length - 1] || null;
|
|
79
|
+
}
|
|
80
|
+
if (this.history.length === 0 || this.historyIndex + 1 > this.history.length) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
if (this.historyIndex < this.history.length - 1) {
|
|
84
|
+
this.historyIndex += 1;
|
|
85
|
+
} else {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
return this.history[this.historyIndex] || null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.default = InputHistory;
|
|
92
|
+
//# sourceMappingURL=InputHistory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["InputHistory","currentText","timeout","constructor","depth","debounceTime","history","historyIndex","getCurrentItem","setHistory","newHistory","slice","length","setHistoryIndex","index","clear","debouncedAdd","text","cursorPosition","clearTimeout","setTimeout","add","lastItem","splice","push","shift","undo","redo","exports","default"],"sourceRoot":"../../../src","sources":["web/InputHistory.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
.react-native-live-markdown-input-singleline {
|
|
2
|
+
white-space: nowrap;
|
|
3
|
+
overflow: auto;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.react-native-live-markdown-input-singleline::-webkit-scrollbar {
|
|
7
|
+
display: none;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.react-native-live-markdown-input-singleline br {
|
|
11
|
+
display: none;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.react-native-live-markdown-input-singleline * {
|
|
15
|
+
display: inline;
|
|
16
|
+
white-space: nowrap;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.react-native-live-markdown-input-singleline:empty::before,
|
|
20
|
+
.react-native-live-markdown-input-multiline:empty::before {
|
|
21
|
+
pointer-events: none;
|
|
22
|
+
display: block; /* For Firefox */
|
|
23
|
+
content: attr(placeholder);
|
|
24
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getCurrentCursorPosition = getCurrentCursorPosition;
|
|
7
|
+
exports.moveCursorToEnd = moveCursorToEnd;
|
|
8
|
+
exports.setCursorPosition = setCursorPosition;
|
|
9
|
+
function createRange(node, targetPosition, ignoreNewLines = false) {
|
|
10
|
+
const range = document.createRange();
|
|
11
|
+
range.selectNode(node);
|
|
12
|
+
let pos = 0;
|
|
13
|
+
const stack = [node];
|
|
14
|
+
while (stack.length > 0) {
|
|
15
|
+
const current = stack.pop();
|
|
16
|
+
if (!current) {
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
if (current.nodeType === Node.TEXT_NODE || current.nodeName === 'BR') {
|
|
20
|
+
const textContentLength = current.textContent ? current.textContent.length : 0;
|
|
21
|
+
const len = current.nodeName === 'BR' ? 1 : textContentLength;
|
|
22
|
+
if (pos + len >= targetPosition) {
|
|
23
|
+
if (current.nodeName === 'BR') {
|
|
24
|
+
range.setStartAfter(current);
|
|
25
|
+
current.scrollIntoView();
|
|
26
|
+
} else {
|
|
27
|
+
range.setStart(current, targetPosition - pos);
|
|
28
|
+
}
|
|
29
|
+
return range;
|
|
30
|
+
}
|
|
31
|
+
pos += len;
|
|
32
|
+
} else if (current.childNodes && current.childNodes.length > 0) {
|
|
33
|
+
for (let i = current.childNodes.length - 1; i >= 0; i--) {
|
|
34
|
+
const currentNode = current.childNodes[i];
|
|
35
|
+
if (currentNode && (!ignoreNewLines || ignoreNewLines && currentNode.nodeName !== 'BR')) {
|
|
36
|
+
stack.push(currentNode);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
range.setStart(node, node.childNodes.length);
|
|
42
|
+
return range;
|
|
43
|
+
}
|
|
44
|
+
function setCursorPosition(target, targetPosition, ignoreNewLines = false) {
|
|
45
|
+
const range = createRange(target, targetPosition, ignoreNewLines);
|
|
46
|
+
const selection = window.getSelection();
|
|
47
|
+
if (selection) {
|
|
48
|
+
range.collapse(true);
|
|
49
|
+
selection.removeAllRanges();
|
|
50
|
+
selection.addRange(range);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function moveCursorToEnd(target) {
|
|
54
|
+
const range = document.createRange();
|
|
55
|
+
const selection = window.getSelection();
|
|
56
|
+
if (selection) {
|
|
57
|
+
range.setStart(target, target.childNodes.length);
|
|
58
|
+
range.collapse(true);
|
|
59
|
+
selection.removeAllRanges();
|
|
60
|
+
selection.addRange(range);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function getIndexedPosition(target, range, isStart) {
|
|
64
|
+
const marker = document.createTextNode('\0');
|
|
65
|
+
const rangeClone = range.cloneRange();
|
|
66
|
+
rangeClone.collapse(isStart);
|
|
67
|
+
rangeClone.insertNode(marker);
|
|
68
|
+
const position = target.innerText.indexOf('\0');
|
|
69
|
+
if (marker.parentNode) {
|
|
70
|
+
marker.parentNode.removeChild(marker);
|
|
71
|
+
}
|
|
72
|
+
return position;
|
|
73
|
+
}
|
|
74
|
+
function getCurrentCursorPosition(target) {
|
|
75
|
+
const selection = document.getSelection();
|
|
76
|
+
if (!selection || selection.rangeCount === 0) {
|
|
77
|
+
return {
|
|
78
|
+
start: target.innerText.length,
|
|
79
|
+
end: target.innerText.length
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const range = selection.getRangeAt(0);
|
|
83
|
+
const start = getIndexedPosition(target, range, true);
|
|
84
|
+
const end = getIndexedPosition(target, range, false);
|
|
85
|
+
return {
|
|
86
|
+
start,
|
|
87
|
+
end
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=cursorUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createRange","node","targetPosition","ignoreNewLines","range","document","selectNode","pos","stack","length","current","pop","nodeType","Node","TEXT_NODE","nodeName","textContentLength","textContent","len","setStartAfter","scrollIntoView","setStart","childNodes","i","currentNode","push","setCursorPosition","target","selection","window","getSelection","collapse","removeAllRanges","addRange","moveCursorToEnd","getIndexedPosition","isStart","marker","createTextNode","rangeClone","cloneRange","insertNode","position","innerText","indexOf","parentNode","removeChild","getCurrentCursorPosition","rangeCount","start","end","getRangeAt"],"sourceRoot":"../../../src","sources":["web/cursorUtils.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseRangesToHTMLNodes = parseRangesToHTMLNodes;
|
|
7
|
+
exports.parseText = parseText;
|
|
8
|
+
var CursorUtils = _interopRequireWildcard(require("./cursorUtils"));
|
|
9
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
10
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
11
|
+
function addStyling(targetElement, type, markdownStyle) {
|
|
12
|
+
const node = targetElement;
|
|
13
|
+
switch (type) {
|
|
14
|
+
case 'syntax':
|
|
15
|
+
Object.assign(node.style, markdownStyle.syntax);
|
|
16
|
+
break;
|
|
17
|
+
case 'bold':
|
|
18
|
+
node.style.fontWeight = 'bold';
|
|
19
|
+
break;
|
|
20
|
+
case 'italic':
|
|
21
|
+
node.style.fontStyle = 'italic';
|
|
22
|
+
break;
|
|
23
|
+
case 'strikethrough':
|
|
24
|
+
node.style.textDecoration = 'line-through';
|
|
25
|
+
break;
|
|
26
|
+
case 'mention-here':
|
|
27
|
+
Object.assign(node.style, markdownStyle.mentionHere);
|
|
28
|
+
break;
|
|
29
|
+
case 'mention-user':
|
|
30
|
+
Object.assign(node.style, markdownStyle.mentionUser);
|
|
31
|
+
break;
|
|
32
|
+
case 'link':
|
|
33
|
+
Object.assign(node.style, {
|
|
34
|
+
...markdownStyle.link,
|
|
35
|
+
textDecoration: 'underline'
|
|
36
|
+
});
|
|
37
|
+
break;
|
|
38
|
+
case 'code':
|
|
39
|
+
Object.assign(node.style, markdownStyle.code);
|
|
40
|
+
break;
|
|
41
|
+
case 'pre':
|
|
42
|
+
Object.assign(node.style, markdownStyle.pre);
|
|
43
|
+
break;
|
|
44
|
+
case 'blockquote':
|
|
45
|
+
Object.assign(node.style, {
|
|
46
|
+
...markdownStyle.blockquote,
|
|
47
|
+
borderLeftStyle: 'solid',
|
|
48
|
+
display: 'inline-block',
|
|
49
|
+
maxWidth: '100%',
|
|
50
|
+
boxSizing: 'border-box'
|
|
51
|
+
});
|
|
52
|
+
break;
|
|
53
|
+
case 'h1':
|
|
54
|
+
Object.assign(node.style, {
|
|
55
|
+
...markdownStyle.h1,
|
|
56
|
+
fontWeight: 'bold'
|
|
57
|
+
});
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function addSubstringAsTextNode(root, text, startIndex, endIndex) {
|
|
64
|
+
const substring = text.substring(startIndex, endIndex);
|
|
65
|
+
if (substring.length > 0) {
|
|
66
|
+
root.appendChild(document.createTextNode(substring));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function parseRangesToHTMLNodes(text, ranges, markdownStyle = {}, disableInlineStyles = false) {
|
|
70
|
+
const root = document.createElement('span');
|
|
71
|
+
root.className = 'root';
|
|
72
|
+
const textLength = text.length;
|
|
73
|
+
if (ranges.length === 0) {
|
|
74
|
+
addSubstringAsTextNode(root, text, 0, textLength);
|
|
75
|
+
return root;
|
|
76
|
+
}
|
|
77
|
+
const stack = [...ranges];
|
|
78
|
+
const nestedStack = [{
|
|
79
|
+
node: root,
|
|
80
|
+
endIndex: textLength
|
|
81
|
+
}];
|
|
82
|
+
let lastRangeEndIndex = 0;
|
|
83
|
+
while (stack.length > 0) {
|
|
84
|
+
const range = stack.shift();
|
|
85
|
+
if (!range) {
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
let currentRoot = nestedStack[nestedStack.length - 1];
|
|
89
|
+
if (!currentRoot) {
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
const endOfCurrentRange = range.startIndex + range.length;
|
|
93
|
+
const nextRangeStartIndex = stack.length > 0 && !!stack[0] ? stack[0].startIndex || 0 : textLength;
|
|
94
|
+
addSubstringAsTextNode(currentRoot.node, text, lastRangeEndIndex, range.startIndex); // add text with newlines before current range
|
|
95
|
+
|
|
96
|
+
const span = document.createElement('span');
|
|
97
|
+
if (disableInlineStyles) {
|
|
98
|
+
span.className = range.type;
|
|
99
|
+
} else {
|
|
100
|
+
addStyling(span, range.type, markdownStyle);
|
|
101
|
+
}
|
|
102
|
+
if (stack.length > 0 && nextRangeStartIndex < endOfCurrentRange && range.type !== 'syntax') {
|
|
103
|
+
// tag nesting
|
|
104
|
+
currentRoot.node.appendChild(span);
|
|
105
|
+
nestedStack.push({
|
|
106
|
+
node: span,
|
|
107
|
+
endIndex: endOfCurrentRange
|
|
108
|
+
});
|
|
109
|
+
lastRangeEndIndex = range.startIndex;
|
|
110
|
+
} else {
|
|
111
|
+
addSubstringAsTextNode(span, text, range.startIndex, endOfCurrentRange);
|
|
112
|
+
currentRoot.node.appendChild(span);
|
|
113
|
+
lastRangeEndIndex = endOfCurrentRange;
|
|
114
|
+
|
|
115
|
+
// end of tag nesting
|
|
116
|
+
while (nestedStack.length - 1 > 0 && nextRangeStartIndex >= currentRoot.endIndex) {
|
|
117
|
+
addSubstringAsTextNode(currentRoot.node, text, lastRangeEndIndex, currentRoot.endIndex);
|
|
118
|
+
const prevRoot = nestedStack.pop();
|
|
119
|
+
if (!prevRoot) {
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
lastRangeEndIndex = prevRoot.endIndex;
|
|
123
|
+
currentRoot = nestedStack[nestedStack.length - 1] || currentRoot;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (nestedStack.length > 1) {
|
|
128
|
+
const lastNestedNode = nestedStack[nestedStack.length - 1];
|
|
129
|
+
if (lastNestedNode) {
|
|
130
|
+
root.appendChild(lastNestedNode.node);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
addSubstringAsTextNode(root, text, lastRangeEndIndex, textLength);
|
|
134
|
+
return root;
|
|
135
|
+
}
|
|
136
|
+
function parseText(target, text, curosrPositionIndex, markdownStyle = {}, disableNewLinesInCursorPositioning = false, alwaysMoveCursorToTheEnd = false) {
|
|
137
|
+
const targetElement = target;
|
|
138
|
+
let cursorPosition = curosrPositionIndex;
|
|
139
|
+
const isFocused = document.activeElement === target;
|
|
140
|
+
if (isFocused && curosrPositionIndex === null) {
|
|
141
|
+
cursorPosition = CursorUtils.getCurrentCursorPosition(target).start;
|
|
142
|
+
}
|
|
143
|
+
const ranges = global.parseExpensiMarkToRanges(text);
|
|
144
|
+
const markdownRanges = ranges.map(range => {
|
|
145
|
+
const [type, startIndex, length] = range;
|
|
146
|
+
return {
|
|
147
|
+
type: type,
|
|
148
|
+
startIndex,
|
|
149
|
+
length
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
targetElement.innerHTML = '';
|
|
153
|
+
targetElement.innerText = '';
|
|
154
|
+
|
|
155
|
+
// We don't want to parse text with single '\n', because contentEditable represents it as invisible <br />
|
|
156
|
+
if (!!text && text !== '\n') {
|
|
157
|
+
const dom = parseRangesToHTMLNodes(text, markdownRanges, markdownStyle);
|
|
158
|
+
target.appendChild(dom);
|
|
159
|
+
}
|
|
160
|
+
if (alwaysMoveCursorToTheEnd) {
|
|
161
|
+
CursorUtils.moveCursorToEnd(target);
|
|
162
|
+
} else if (isFocused && cursorPosition !== null) {
|
|
163
|
+
CursorUtils.setCursorPosition(target, cursorPosition, disableNewLinesInCursorPositioning);
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
text: target.innerText,
|
|
167
|
+
cursorPosition: cursorPosition || 0
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=parserUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CursorUtils","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","addStyling","targetElement","type","markdownStyle","node","assign","style","syntax","fontWeight","fontStyle","textDecoration","mentionHere","mentionUser","link","code","pre","blockquote","borderLeftStyle","display","maxWidth","boxSizing","h1","addSubstringAsTextNode","root","text","startIndex","endIndex","substring","length","appendChild","document","createTextNode","parseRangesToHTMLNodes","ranges","disableInlineStyles","createElement","className","textLength","stack","nestedStack","lastRangeEndIndex","range","shift","currentRoot","endOfCurrentRange","nextRangeStartIndex","span","push","prevRoot","pop","lastNestedNode","parseText","target","curosrPositionIndex","disableNewLinesInCursorPositioning","alwaysMoveCursorToTheEnd","cursorPosition","isFocused","activeElement","getCurrentCursorPosition","start","global","parseExpensiMarkToRanges","markdownRanges","map","innerHTML","innerText","dom","moveCursorToEnd","setCursorPosition"],"sourceRoot":"../../../src","sources":["web/parserUtils.ts"],"mappings":"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"}
|
|
@@ -1,60 +1,8 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
import { StyleSheet, TextInput, processColor } from 'react-native';
|
|
2
3
|
import React from 'react';
|
|
3
|
-
import { Platform, StyleSheet, TextInput, processColor } from 'react-native';
|
|
4
4
|
import MarkdownTextInputDecoratorViewNativeComponent from './MarkdownTextInputDecoratorViewNativeComponent';
|
|
5
|
-
|
|
6
|
-
ios: 'Courier',
|
|
7
|
-
default: 'monospace'
|
|
8
|
-
});
|
|
9
|
-
function makeDefaultMarkdownStyle() {
|
|
10
|
-
return {
|
|
11
|
-
syntax: {
|
|
12
|
-
color: 'gray'
|
|
13
|
-
},
|
|
14
|
-
link: {
|
|
15
|
-
color: 'blue'
|
|
16
|
-
},
|
|
17
|
-
h1: {
|
|
18
|
-
fontSize: 25
|
|
19
|
-
},
|
|
20
|
-
blockquote: {
|
|
21
|
-
borderColor: 'gray',
|
|
22
|
-
borderWidth: 6,
|
|
23
|
-
marginLeft: 6,
|
|
24
|
-
paddingLeft: 6
|
|
25
|
-
},
|
|
26
|
-
code: {
|
|
27
|
-
fontFamily: FONT_FAMILY_MONOSPACE,
|
|
28
|
-
color: 'black',
|
|
29
|
-
backgroundColor: 'lightgray'
|
|
30
|
-
},
|
|
31
|
-
pre: {
|
|
32
|
-
fontFamily: FONT_FAMILY_MONOSPACE,
|
|
33
|
-
color: 'black',
|
|
34
|
-
backgroundColor: 'lightgray'
|
|
35
|
-
},
|
|
36
|
-
mentionHere: {
|
|
37
|
-
color: 'green',
|
|
38
|
-
backgroundColor: 'lime'
|
|
39
|
-
},
|
|
40
|
-
mentionUser: {
|
|
41
|
-
color: 'blue',
|
|
42
|
-
backgroundColor: 'cyan'
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
function mergeMarkdownStyleWithDefault(input) {
|
|
47
|
-
const output = makeDefaultMarkdownStyle();
|
|
48
|
-
if (input !== undefined) {
|
|
49
|
-
Object.keys(input).forEach(key => {
|
|
50
|
-
if (!(key in output)) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
Object.assign(output[key], input[key]);
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
return output;
|
|
57
|
-
}
|
|
5
|
+
import * as StyleUtils from './styleUtils';
|
|
58
6
|
function processColorsInMarkdownStyle(input) {
|
|
59
7
|
const output = JSON.parse(JSON.stringify(input));
|
|
60
8
|
Object.keys(output).forEach(key => {
|
|
@@ -70,7 +18,7 @@ function processColorsInMarkdownStyle(input) {
|
|
|
70
18
|
return output;
|
|
71
19
|
}
|
|
72
20
|
function processMarkdownStyle(input) {
|
|
73
|
-
return processColorsInMarkdownStyle(mergeMarkdownStyleWithDefault(input));
|
|
21
|
+
return processColorsInMarkdownStyle(StyleUtils.mergeMarkdownStyleWithDefault(input));
|
|
74
22
|
}
|
|
75
23
|
const MarkdownTextInput = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
76
24
|
const IS_FABRIC = ('nativeFabricUIManager' in global);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["StyleSheet","TextInput","processColor","React","MarkdownTextInputDecoratorViewNativeComponent","StyleUtils","processColorsInMarkdownStyle","input","output","JSON","parse","stringify","Object","keys","forEach","key","obj","prop","endsWith","processMarkdownStyle","mergeMarkdownStyleWithDefault","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,OAAO,KAAKC,UAAU,MAAM,cAAc;AAU1C,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,GAAGf,YAAY,CAACc,GAAG,CAACC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,OAAOT,MAAM;AACf;AAEA,SAASW,oBAAoBA,CAACZ,KAAuC,EAAiB;EACpF,OAAOD,4BAA4B,CAACD,UAAU,CAACe,6BAA6B,CAACb,KAAK,CAAC,CAAC;AACtF;AAEA,MAAMc,iBAAiB,gBAAGlB,KAAK,CAACmB,UAAU,CAAoC,CAACC,KAAK,EAAEC,GAAG,KAAK;EAC5F,MAAMC,SAAS,IAAG,uBAAuB,IAAIC,MAAM;EAEnD,MAAMC,aAAa,GAAGxB,KAAK,CAACyB,OAAO,CAAC,MAAMT,oBAAoB,CAACI,KAAK,CAACI,aAAa,CAAC,EAAE,CAACJ,KAAK,CAACI,aAAa,CAAC,CAAC;EAE3G,oBACExB,KAAA,CAAA0B,aAAA,CAAA1B,KAAA,CAAA2B,QAAA,qBACE3B,KAAA,CAAA0B,aAAA,CAAC5B,SAAS,EAAA8B,QAAA,KACJR,KAAK;IACTC,GAAG,EAAEA;EAAI,EACV,CAAC,eACFrB,KAAA,CAAA0B,aAAA,CAACzB,6CAA6C;IAC5C4B,KAAK,EAAEP,SAAS,GAAGQ,MAAM,CAACC,OAAO,GAAGD,MAAM,CAACE,WAAY;IACvDR,aAAa,EAAEA;EAAc,CAC9B,CACD,CAAC;AAEP,CAAC,CAAC;AAEF,MAAMM,MAAM,GAAGjC,UAAU,CAACoC,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"}
|