@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.
Files changed (53) hide show
  1. package/lib/commonjs/MarkdownTextInput.js +5 -55
  2. package/lib/commonjs/MarkdownTextInput.js.map +1 -1
  3. package/lib/commonjs/MarkdownTextInput.web.js +399 -9
  4. package/lib/commonjs/MarkdownTextInput.web.js.map +1 -1
  5. package/lib/commonjs/react-native-web.d.js +2 -0
  6. package/lib/commonjs/react-native-web.d.js.map +1 -0
  7. package/lib/commonjs/styleUtils.js +61 -0
  8. package/lib/commonjs/styleUtils.js.map +1 -0
  9. package/lib/commonjs/web/InputHistory.js +92 -0
  10. package/lib/commonjs/web/InputHistory.js.map +1 -0
  11. package/lib/commonjs/web/MarkdownTextInput.css +24 -0
  12. package/lib/commonjs/web/cursorUtils.js +90 -0
  13. package/lib/commonjs/web/cursorUtils.js.map +1 -0
  14. package/lib/commonjs/web/parserUtils.js +170 -0
  15. package/lib/commonjs/web/parserUtils.js.map +1 -0
  16. package/lib/module/MarkdownTextInput.js +3 -55
  17. package/lib/module/MarkdownTextInput.js.map +1 -1
  18. package/lib/module/MarkdownTextInput.web.js +399 -12
  19. package/lib/module/MarkdownTextInput.web.js.map +1 -1
  20. package/lib/module/react-native-web.d.js +2 -0
  21. package/lib/module/react-native-web.d.js.map +1 -0
  22. package/lib/module/styleUtils.js +56 -0
  23. package/lib/module/styleUtils.js.map +1 -0
  24. package/lib/module/web/InputHistory.js +85 -0
  25. package/lib/module/web/InputHistory.js.map +1 -0
  26. package/lib/module/web/MarkdownTextInput.css +24 -0
  27. package/lib/module/web/cursorUtils.js +83 -0
  28. package/lib/module/web/cursorUtils.js.map +1 -0
  29. package/lib/module/web/parserUtils.js +162 -0
  30. package/lib/module/web/parserUtils.js.map +1 -0
  31. package/lib/parser/react-native-live-markdown-parser.js +34 -0
  32. package/lib/typescript/src/MarkdownTextInput.d.ts +3 -6
  33. package/lib/typescript/src/MarkdownTextInput.d.ts.map +1 -1
  34. package/lib/typescript/src/MarkdownTextInput.web.d.ts +9 -2
  35. package/lib/typescript/src/MarkdownTextInput.web.d.ts.map +1 -1
  36. package/lib/typescript/src/styleUtils.d.ts +9 -0
  37. package/lib/typescript/src/styleUtils.d.ts.map +1 -0
  38. package/lib/typescript/src/web/InputHistory.d.ts +24 -0
  39. package/lib/typescript/src/web/InputHistory.d.ts.map +1 -0
  40. package/lib/typescript/src/web/cursorUtils.d.ts +8 -0
  41. package/lib/typescript/src/web/cursorUtils.d.ts.map +1 -0
  42. package/lib/typescript/src/web/parserUtils.d.ts +16 -0
  43. package/lib/typescript/src/web/parserUtils.d.ts.map +1 -0
  44. package/package.json +6 -3
  45. package/parser/react-native-live-markdown-parser.js +7 -7
  46. package/src/MarkdownTextInput.tsx +9 -69
  47. package/src/MarkdownTextInput.web.tsx +516 -16
  48. package/src/react-native-web.d.ts +1 -0
  49. package/src/styleUtils.ts +70 -0
  50. package/src/web/InputHistory.ts +114 -0
  51. package/src/web/MarkdownTextInput.css +24 -0
  52. package/src/web/cursorUtils.ts +87 -0
  53. 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
- const FONT_FAMILY_MONOSPACE = Platform.select({
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":["React","Platform","StyleSheet","TextInput","processColor","MarkdownTextInputDecoratorViewNativeComponent","FONT_FAMILY_MONOSPACE","select","ios","default","makeDefaultMarkdownStyle","syntax","color","link","h1","fontSize","blockquote","borderColor","borderWidth","marginLeft","paddingLeft","code","fontFamily","backgroundColor","pre","mentionHere","mentionUser","mergeMarkdownStyleWithDefault","input","output","undefined","Object","keys","forEach","key","assign","processColorsInMarkdownStyle","JSON","parse","stringify","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":"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"}
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"}