@expensify/react-native-live-markdown 0.1.3 → 0.1.4
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,83 @@
|
|
|
1
|
+
function createRange(node, targetPosition, ignoreNewLines = false) {
|
|
2
|
+
const range = document.createRange();
|
|
3
|
+
range.selectNode(node);
|
|
4
|
+
let pos = 0;
|
|
5
|
+
const stack = [node];
|
|
6
|
+
while (stack.length > 0) {
|
|
7
|
+
const current = stack.pop();
|
|
8
|
+
if (!current) {
|
|
9
|
+
break;
|
|
10
|
+
}
|
|
11
|
+
if (current.nodeType === Node.TEXT_NODE || current.nodeName === 'BR') {
|
|
12
|
+
const textContentLength = current.textContent ? current.textContent.length : 0;
|
|
13
|
+
const len = current.nodeName === 'BR' ? 1 : textContentLength;
|
|
14
|
+
if (pos + len >= targetPosition) {
|
|
15
|
+
if (current.nodeName === 'BR') {
|
|
16
|
+
range.setStartAfter(current);
|
|
17
|
+
current.scrollIntoView();
|
|
18
|
+
} else {
|
|
19
|
+
range.setStart(current, targetPosition - pos);
|
|
20
|
+
}
|
|
21
|
+
return range;
|
|
22
|
+
}
|
|
23
|
+
pos += len;
|
|
24
|
+
} else if (current.childNodes && current.childNodes.length > 0) {
|
|
25
|
+
for (let i = current.childNodes.length - 1; i >= 0; i--) {
|
|
26
|
+
const currentNode = current.childNodes[i];
|
|
27
|
+
if (currentNode && (!ignoreNewLines || ignoreNewLines && currentNode.nodeName !== 'BR')) {
|
|
28
|
+
stack.push(currentNode);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
range.setStart(node, node.childNodes.length);
|
|
34
|
+
return range;
|
|
35
|
+
}
|
|
36
|
+
function setCursorPosition(target, targetPosition, ignoreNewLines = false) {
|
|
37
|
+
const range = createRange(target, targetPosition, ignoreNewLines);
|
|
38
|
+
const selection = window.getSelection();
|
|
39
|
+
if (selection) {
|
|
40
|
+
range.collapse(true);
|
|
41
|
+
selection.removeAllRanges();
|
|
42
|
+
selection.addRange(range);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function moveCursorToEnd(target) {
|
|
46
|
+
const range = document.createRange();
|
|
47
|
+
const selection = window.getSelection();
|
|
48
|
+
if (selection) {
|
|
49
|
+
range.setStart(target, target.childNodes.length);
|
|
50
|
+
range.collapse(true);
|
|
51
|
+
selection.removeAllRanges();
|
|
52
|
+
selection.addRange(range);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function getIndexedPosition(target, range, isStart) {
|
|
56
|
+
const marker = document.createTextNode('\0');
|
|
57
|
+
const rangeClone = range.cloneRange();
|
|
58
|
+
rangeClone.collapse(isStart);
|
|
59
|
+
rangeClone.insertNode(marker);
|
|
60
|
+
const position = target.innerText.indexOf('\0');
|
|
61
|
+
if (marker.parentNode) {
|
|
62
|
+
marker.parentNode.removeChild(marker);
|
|
63
|
+
}
|
|
64
|
+
return position;
|
|
65
|
+
}
|
|
66
|
+
function getCurrentCursorPosition(target) {
|
|
67
|
+
const selection = document.getSelection();
|
|
68
|
+
if (!selection || selection.rangeCount === 0) {
|
|
69
|
+
return {
|
|
70
|
+
start: target.innerText.length,
|
|
71
|
+
end: target.innerText.length
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const range = selection.getRangeAt(0);
|
|
75
|
+
const start = getIndexedPosition(target, range, true);
|
|
76
|
+
const end = getIndexedPosition(target, range, false);
|
|
77
|
+
return {
|
|
78
|
+
start,
|
|
79
|
+
end
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export { getCurrentCursorPosition, moveCursorToEnd, setCursorPosition };
|
|
83
|
+
//# 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,162 @@
|
|
|
1
|
+
import * as CursorUtils from './cursorUtils';
|
|
2
|
+
function addStyling(targetElement, type, markdownStyle) {
|
|
3
|
+
const node = targetElement;
|
|
4
|
+
switch (type) {
|
|
5
|
+
case 'syntax':
|
|
6
|
+
Object.assign(node.style, markdownStyle.syntax);
|
|
7
|
+
break;
|
|
8
|
+
case 'bold':
|
|
9
|
+
node.style.fontWeight = 'bold';
|
|
10
|
+
break;
|
|
11
|
+
case 'italic':
|
|
12
|
+
node.style.fontStyle = 'italic';
|
|
13
|
+
break;
|
|
14
|
+
case 'strikethrough':
|
|
15
|
+
node.style.textDecoration = 'line-through';
|
|
16
|
+
break;
|
|
17
|
+
case 'mention-here':
|
|
18
|
+
Object.assign(node.style, markdownStyle.mentionHere);
|
|
19
|
+
break;
|
|
20
|
+
case 'mention-user':
|
|
21
|
+
Object.assign(node.style, markdownStyle.mentionUser);
|
|
22
|
+
break;
|
|
23
|
+
case 'link':
|
|
24
|
+
Object.assign(node.style, {
|
|
25
|
+
...markdownStyle.link,
|
|
26
|
+
textDecoration: 'underline'
|
|
27
|
+
});
|
|
28
|
+
break;
|
|
29
|
+
case 'code':
|
|
30
|
+
Object.assign(node.style, markdownStyle.code);
|
|
31
|
+
break;
|
|
32
|
+
case 'pre':
|
|
33
|
+
Object.assign(node.style, markdownStyle.pre);
|
|
34
|
+
break;
|
|
35
|
+
case 'blockquote':
|
|
36
|
+
Object.assign(node.style, {
|
|
37
|
+
...markdownStyle.blockquote,
|
|
38
|
+
borderLeftStyle: 'solid',
|
|
39
|
+
display: 'inline-block',
|
|
40
|
+
maxWidth: '100%',
|
|
41
|
+
boxSizing: 'border-box'
|
|
42
|
+
});
|
|
43
|
+
break;
|
|
44
|
+
case 'h1':
|
|
45
|
+
Object.assign(node.style, {
|
|
46
|
+
...markdownStyle.h1,
|
|
47
|
+
fontWeight: 'bold'
|
|
48
|
+
});
|
|
49
|
+
break;
|
|
50
|
+
default:
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function addSubstringAsTextNode(root, text, startIndex, endIndex) {
|
|
55
|
+
const substring = text.substring(startIndex, endIndex);
|
|
56
|
+
if (substring.length > 0) {
|
|
57
|
+
root.appendChild(document.createTextNode(substring));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function parseRangesToHTMLNodes(text, ranges, markdownStyle = {}, disableInlineStyles = false) {
|
|
61
|
+
const root = document.createElement('span');
|
|
62
|
+
root.className = 'root';
|
|
63
|
+
const textLength = text.length;
|
|
64
|
+
if (ranges.length === 0) {
|
|
65
|
+
addSubstringAsTextNode(root, text, 0, textLength);
|
|
66
|
+
return root;
|
|
67
|
+
}
|
|
68
|
+
const stack = [...ranges];
|
|
69
|
+
const nestedStack = [{
|
|
70
|
+
node: root,
|
|
71
|
+
endIndex: textLength
|
|
72
|
+
}];
|
|
73
|
+
let lastRangeEndIndex = 0;
|
|
74
|
+
while (stack.length > 0) {
|
|
75
|
+
const range = stack.shift();
|
|
76
|
+
if (!range) {
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
let currentRoot = nestedStack[nestedStack.length - 1];
|
|
80
|
+
if (!currentRoot) {
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
const endOfCurrentRange = range.startIndex + range.length;
|
|
84
|
+
const nextRangeStartIndex = stack.length > 0 && !!stack[0] ? stack[0].startIndex || 0 : textLength;
|
|
85
|
+
addSubstringAsTextNode(currentRoot.node, text, lastRangeEndIndex, range.startIndex); // add text with newlines before current range
|
|
86
|
+
|
|
87
|
+
const span = document.createElement('span');
|
|
88
|
+
if (disableInlineStyles) {
|
|
89
|
+
span.className = range.type;
|
|
90
|
+
} else {
|
|
91
|
+
addStyling(span, range.type, markdownStyle);
|
|
92
|
+
}
|
|
93
|
+
if (stack.length > 0 && nextRangeStartIndex < endOfCurrentRange && range.type !== 'syntax') {
|
|
94
|
+
// tag nesting
|
|
95
|
+
currentRoot.node.appendChild(span);
|
|
96
|
+
nestedStack.push({
|
|
97
|
+
node: span,
|
|
98
|
+
endIndex: endOfCurrentRange
|
|
99
|
+
});
|
|
100
|
+
lastRangeEndIndex = range.startIndex;
|
|
101
|
+
} else {
|
|
102
|
+
addSubstringAsTextNode(span, text, range.startIndex, endOfCurrentRange);
|
|
103
|
+
currentRoot.node.appendChild(span);
|
|
104
|
+
lastRangeEndIndex = endOfCurrentRange;
|
|
105
|
+
|
|
106
|
+
// end of tag nesting
|
|
107
|
+
while (nestedStack.length - 1 > 0 && nextRangeStartIndex >= currentRoot.endIndex) {
|
|
108
|
+
addSubstringAsTextNode(currentRoot.node, text, lastRangeEndIndex, currentRoot.endIndex);
|
|
109
|
+
const prevRoot = nestedStack.pop();
|
|
110
|
+
if (!prevRoot) {
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
lastRangeEndIndex = prevRoot.endIndex;
|
|
114
|
+
currentRoot = nestedStack[nestedStack.length - 1] || currentRoot;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (nestedStack.length > 1) {
|
|
119
|
+
const lastNestedNode = nestedStack[nestedStack.length - 1];
|
|
120
|
+
if (lastNestedNode) {
|
|
121
|
+
root.appendChild(lastNestedNode.node);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
addSubstringAsTextNode(root, text, lastRangeEndIndex, textLength);
|
|
125
|
+
return root;
|
|
126
|
+
}
|
|
127
|
+
function parseText(target, text, curosrPositionIndex, markdownStyle = {}, disableNewLinesInCursorPositioning = false, alwaysMoveCursorToTheEnd = false) {
|
|
128
|
+
const targetElement = target;
|
|
129
|
+
let cursorPosition = curosrPositionIndex;
|
|
130
|
+
const isFocused = document.activeElement === target;
|
|
131
|
+
if (isFocused && curosrPositionIndex === null) {
|
|
132
|
+
cursorPosition = CursorUtils.getCurrentCursorPosition(target).start;
|
|
133
|
+
}
|
|
134
|
+
const ranges = global.parseExpensiMarkToRanges(text);
|
|
135
|
+
const markdownRanges = ranges.map(range => {
|
|
136
|
+
const [type, startIndex, length] = range;
|
|
137
|
+
return {
|
|
138
|
+
type: type,
|
|
139
|
+
startIndex,
|
|
140
|
+
length
|
|
141
|
+
};
|
|
142
|
+
});
|
|
143
|
+
targetElement.innerHTML = '';
|
|
144
|
+
targetElement.innerText = '';
|
|
145
|
+
|
|
146
|
+
// We don't want to parse text with single '\n', because contentEditable represents it as invisible <br />
|
|
147
|
+
if (!!text && text !== '\n') {
|
|
148
|
+
const dom = parseRangesToHTMLNodes(text, markdownRanges, markdownStyle);
|
|
149
|
+
target.appendChild(dom);
|
|
150
|
+
}
|
|
151
|
+
if (alwaysMoveCursorToTheEnd) {
|
|
152
|
+
CursorUtils.moveCursorToEnd(target);
|
|
153
|
+
} else if (isFocused && cursorPosition !== null) {
|
|
154
|
+
CursorUtils.setCursorPosition(target, cursorPosition, disableNewLinesInCursorPositioning);
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
text: target.innerText,
|
|
158
|
+
cursorPosition: cursorPosition || 0
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
export { parseText, parseRangesToHTMLNodes };
|
|
162
|
+
//# sourceMappingURL=parserUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CursorUtils","addStyling","targetElement","type","markdownStyle","node","Object","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":"AAAA,OAAO,KAAKA,WAAW,MAAM,eAAe;AAkB5C,SAASC,UAAUA,CAACC,aAA0B,EAAEC,IAAkB,EAAEC,aAAmC,EAAE;EACvG,MAAMC,IAAI,GAAGH,aAAa;EAC1B,QAAQC,IAAI;IACV,KAAK,QAAQ;MACXG,MAAM,CAACC,MAAM,CAACF,IAAI,CAACG,KAAK,EAAEJ,aAAa,CAACK,MAAM,CAAC;MAC/C;IACF,KAAK,MAAM;MACTJ,IAAI,CAACG,KAAK,CAACE,UAAU,GAAG,MAAM;MAC9B;IACF,KAAK,QAAQ;MACXL,IAAI,CAACG,KAAK,CAACG,SAAS,GAAG,QAAQ;MAC/B;IACF,KAAK,eAAe;MAClBN,IAAI,CAACG,KAAK,CAACI,cAAc,GAAG,cAAc;MAC1C;IACF,KAAK,cAAc;MACjBN,MAAM,CAACC,MAAM,CAACF,IAAI,CAACG,KAAK,EAAEJ,aAAa,CAACS,WAAW,CAAC;MACpD;IACF,KAAK,cAAc;MACjBP,MAAM,CAACC,MAAM,CAACF,IAAI,CAACG,KAAK,EAAEJ,aAAa,CAACU,WAAW,CAAC;MACpD;IACF,KAAK,MAAM;MACTR,MAAM,CAACC,MAAM,CAACF,IAAI,CAACG,KAAK,EAAE;QACxB,GAAGJ,aAAa,CAACW,IAAI;QACrBH,cAAc,EAAE;MAClB,CAAC,CAAC;MACF;IACF,KAAK,MAAM;MACTN,MAAM,CAACC,MAAM,CAACF,IAAI,CAACG,KAAK,EAAEJ,aAAa,CAACY,IAAI,CAAC;MAC7C;IACF,KAAK,KAAK;MACRV,MAAM,CAACC,MAAM,CAACF,IAAI,CAACG,KAAK,EAAEJ,aAAa,CAACa,GAAG,CAAC;MAC5C;IAEF,KAAK,YAAY;MACfX,MAAM,CAACC,MAAM,CAACF,IAAI,CAACG,KAAK,EAAE;QACxB,GAAGJ,aAAa,CAACc,UAAU;QAC3BC,eAAe,EAAE,OAAO;QACxBC,OAAO,EAAE,cAAc;QACvBC,QAAQ,EAAE,MAAM;QAChBC,SAAS,EAAE;MACb,CAAC,CAAC;MACF;IACF,KAAK,IAAI;MACPhB,MAAM,CAACC,MAAM,CAACF,IAAI,CAACG,KAAK,EAAE;QACxB,GAAGJ,aAAa,CAACmB,EAAE;QACnBb,UAAU,EAAE;MACd,CAAC,CAAC;MACF;IACF;MACE;EACJ;AACF;AAEA,SAASc,sBAAsBA,CAACC,IAAiB,EAAEC,IAAY,EAAEC,UAAkB,EAAEC,QAAgB,EAAE;EACrG,MAAMC,SAAS,GAAGH,IAAI,CAACG,SAAS,CAACF,UAAU,EAAEC,QAAQ,CAAC;EACtD,IAAIC,SAAS,CAACC,MAAM,GAAG,CAAC,EAAE;IACxBL,IAAI,CAACM,WAAW,CAACC,QAAQ,CAACC,cAAc,CAACJ,SAAS,CAAC,CAAC;EACtD;AACF;AAEA,SAASK,sBAAsBA,CAACR,IAAY,EAAES,MAAuB,EAAE/B,aAAmC,GAAG,CAAC,CAAC,EAAEgC,mBAAmB,GAAG,KAAK,EAAe;EACzJ,MAAMX,IAAiB,GAAGO,QAAQ,CAACK,aAAa,CAAC,MAAM,CAAC;EACxDZ,IAAI,CAACa,SAAS,GAAG,MAAM;EACvB,MAAMC,UAAU,GAAGb,IAAI,CAACI,MAAM;EAC9B,IAAIK,MAAM,CAACL,MAAM,KAAK,CAAC,EAAE;IACvBN,sBAAsB,CAACC,IAAI,EAAEC,IAAI,EAAE,CAAC,EAAEa,UAAU,CAAC;IACjD,OAAOd,IAAI;EACb;EAEA,MAAMe,KAAK,GAAG,CAAC,GAAGL,MAAM,CAAC;EACzB,MAAMM,WAAyB,GAAG,CAAC;IAACpC,IAAI,EAAEoB,IAAI;IAAEG,QAAQ,EAAEW;EAAU,CAAC,CAAC;EACtE,IAAIG,iBAAiB,GAAG,CAAC;EACzB,OAAOF,KAAK,CAACV,MAAM,GAAG,CAAC,EAAE;IACvB,MAAMa,KAAK,GAAGH,KAAK,CAACI,KAAK,CAAC,CAAC;IAC3B,IAAI,CAACD,KAAK,EAAE;MACV;IACF;IACA,IAAIE,WAAW,GAAGJ,WAAW,CAACA,WAAW,CAACX,MAAM,GAAG,CAAC,CAAC;IACrD,IAAI,CAACe,WAAW,EAAE;MAChB;IACF;IAEA,MAAMC,iBAAiB,GAAGH,KAAK,CAAChB,UAAU,GAAGgB,KAAK,CAACb,MAAM;IACzD,MAAMiB,mBAAmB,GAAGP,KAAK,CAACV,MAAM,GAAG,CAAC,IAAI,CAAC,CAACU,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAACb,UAAU,IAAI,CAAC,GAAGY,UAAU;IAElGf,sBAAsB,CAACqB,WAAW,CAACxC,IAAI,EAAEqB,IAAI,EAAEgB,iBAAiB,EAAEC,KAAK,CAAChB,UAAU,CAAC,CAAC,CAAC;;IAErF,MAAMqB,IAAI,GAAGhB,QAAQ,CAACK,aAAa,CAAC,MAAM,CAAC;IAC3C,IAAID,mBAAmB,EAAE;MACvBY,IAAI,CAACV,SAAS,GAAGK,KAAK,CAACxC,IAAI;IAC7B,CAAC,MAAM;MACLF,UAAU,CAAC+C,IAAI,EAAEL,KAAK,CAACxC,IAAI,EAAEC,aAAa,CAAC;IAC7C;IAEA,IAAIoC,KAAK,CAACV,MAAM,GAAG,CAAC,IAAIiB,mBAAmB,GAAGD,iBAAiB,IAAIH,KAAK,CAACxC,IAAI,KAAK,QAAQ,EAAE;MAC1F;MACA0C,WAAW,CAACxC,IAAI,CAAC0B,WAAW,CAACiB,IAAI,CAAC;MAClCP,WAAW,CAACQ,IAAI,CAAC;QAAC5C,IAAI,EAAE2C,IAAI;QAAEpB,QAAQ,EAAEkB;MAAiB,CAAC,CAAC;MAC3DJ,iBAAiB,GAAGC,KAAK,CAAChB,UAAU;IACtC,CAAC,MAAM;MACLH,sBAAsB,CAACwB,IAAI,EAAEtB,IAAI,EAAEiB,KAAK,CAAChB,UAAU,EAAEmB,iBAAiB,CAAC;MACvED,WAAW,CAACxC,IAAI,CAAC0B,WAAW,CAACiB,IAAI,CAAC;MAClCN,iBAAiB,GAAGI,iBAAiB;;MAErC;MACA,OAAOL,WAAW,CAACX,MAAM,GAAG,CAAC,GAAG,CAAC,IAAIiB,mBAAmB,IAAIF,WAAW,CAACjB,QAAQ,EAAE;QAChFJ,sBAAsB,CAACqB,WAAW,CAACxC,IAAI,EAAEqB,IAAI,EAAEgB,iBAAiB,EAAEG,WAAW,CAACjB,QAAQ,CAAC;QACvF,MAAMsB,QAAQ,GAAGT,WAAW,CAACU,GAAG,CAAC,CAAC;QAClC,IAAI,CAACD,QAAQ,EAAE;UACb;QACF;QACAR,iBAAiB,GAAGQ,QAAQ,CAACtB,QAAQ;QACrCiB,WAAW,GAAGJ,WAAW,CAACA,WAAW,CAACX,MAAM,GAAG,CAAC,CAAC,IAAIe,WAAW;MAClE;IACF;EACF;EAEA,IAAIJ,WAAW,CAACX,MAAM,GAAG,CAAC,EAAE;IAC1B,MAAMsB,cAAc,GAAGX,WAAW,CAACA,WAAW,CAACX,MAAM,GAAG,CAAC,CAAC;IAC1D,IAAIsB,cAAc,EAAE;MAClB3B,IAAI,CAACM,WAAW,CAACqB,cAAc,CAAC/C,IAAI,CAAC;IACvC;EACF;EAEAmB,sBAAsB,CAACC,IAAI,EAAEC,IAAI,EAAEgB,iBAAiB,EAAEH,UAAU,CAAC;EACjE,OAAOd,IAAI;AACb;AAEA,SAAS4B,SAASA,CAChBC,MAAmB,EACnB5B,IAAY,EACZ6B,mBAAkC,EAClCnD,aAAmC,GAAG,CAAC,CAAC,EACxCoD,kCAAkC,GAAG,KAAK,EAC1CC,wBAAwB,GAAG,KAAK,EAChC;EACA,MAAMvD,aAAa,GAAGoD,MAAM;EAE5B,IAAII,cAA6B,GAAGH,mBAAmB;EACvD,MAAMI,SAAS,GAAG3B,QAAQ,CAAC4B,aAAa,KAAKN,MAAM;EACnD,IAAIK,SAAS,IAAIJ,mBAAmB,KAAK,IAAI,EAAE;IAC7CG,cAAc,GAAG1D,WAAW,CAAC6D,wBAAwB,CAACP,MAAM,CAAC,CAACQ,KAAK;EACrE;EACA,MAAM3B,MAAM,GAAG4B,MAAM,CAACC,wBAAwB,CAACtC,IAAI,CAAC;EAEpD,MAAMuC,cAA+B,GAAG9B,MAAM,CAAC+B,GAAG,CAAEvB,KAAK,IAAK;IAC5D,MAAM,CAACxC,IAAI,EAAEwB,UAAU,EAAEG,MAAM,CAAC,GAAGa,KAAK;IACxC,OAAO;MACLxC,IAAI,EAAEA,IAAoB;MAC1BwB,UAAU;MACVG;IACF,CAAC;EACH,CAAC,CAAC;EAEF5B,aAAa,CAACiE,SAAS,GAAG,EAAE;EAC5BjE,aAAa,CAACkE,SAAS,GAAG,EAAE;;EAE5B;EACA,IAAI,CAAC,CAAC1C,IAAI,IAAIA,IAAI,KAAK,IAAI,EAAE;IAC3B,MAAM2C,GAAG,GAAGnC,sBAAsB,CAACR,IAAI,EAAEuC,cAAc,EAAE7D,aAAa,CAAC;IACvEkD,MAAM,CAACvB,WAAW,CAACsC,GAAG,CAAC;EACzB;EAEA,IAAIZ,wBAAwB,EAAE;IAC5BzD,WAAW,CAACsE,eAAe,CAAChB,MAAM,CAAC;EACrC,CAAC,MAAM,IAAIK,SAAS,IAAID,cAAc,KAAK,IAAI,EAAE;IAC/C1D,WAAW,CAACuE,iBAAiB,CAACjB,MAAM,EAAEI,cAAc,EAAEF,kCAAkC,CAAC;EAC3F;EAEA,OAAO;IAAC9B,IAAI,EAAE4B,MAAM,CAACc,SAAS;IAAEV,cAAc,EAAEA,cAAc,IAAI;EAAC,CAAC;AACtE;AAEA,SAAQL,SAAS,EAAEnB,sBAAsB"}
|