@expensify/react-native-live-markdown 0.1.18 → 0.1.19
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/web/parserUtils.js +27 -10
- package/lib/commonjs/web/parserUtils.js.map +1 -1
- package/lib/module/web/parserUtils.js +27 -10
- package/lib/module/web/parserUtils.js.map +1 -1
- package/lib/typescript/src/web/parserUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/web/parserUtils.ts +32 -10
|
@@ -151,6 +151,17 @@ function parseRangesToHTMLNodes(text, ranges, markdownStyle = {}, disableInlineS
|
|
|
151
151
|
addSubstringAsTextNode(root, text, lastRangeEndIndex, textLength);
|
|
152
152
|
return root;
|
|
153
153
|
}
|
|
154
|
+
function moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, target) {
|
|
155
|
+
if (!isFocused) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if (alwaysMoveCursorToTheEnd || cursorPosition === null) {
|
|
159
|
+
CursorUtils.moveCursorToEnd(target);
|
|
160
|
+
} else if (cursorPosition !== null) {
|
|
161
|
+
CursorUtils.setCursorPosition(target, cursorPosition);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
const isChromium = ('chrome' in window);
|
|
154
165
|
function parseText(target, text, curosrPositionIndex, markdownStyle = {}, alwaysMoveCursorToTheEnd = false) {
|
|
155
166
|
const targetElement = target;
|
|
156
167
|
let cursorPosition = curosrPositionIndex;
|
|
@@ -161,19 +172,25 @@ function parseText(target, text, curosrPositionIndex, markdownStyle = {}, always
|
|
|
161
172
|
}
|
|
162
173
|
const ranges = global.parseExpensiMarkToRanges(text);
|
|
163
174
|
const markdownRanges = ranges;
|
|
164
|
-
|
|
165
|
-
targetElement.
|
|
175
|
+
const rootSpan = targetElement.firstChild;
|
|
176
|
+
if (targetElement.innerHTML === '<br>' || rootSpan && rootSpan.innerHTML === '\n') {
|
|
177
|
+
targetElement.innerHTML = '';
|
|
178
|
+
targetElement.innerText = '';
|
|
179
|
+
}
|
|
166
180
|
|
|
167
181
|
// We don't want to parse text with single '\n', because contentEditable represents it as invisible <br />
|
|
168
|
-
if (
|
|
182
|
+
if (text) {
|
|
169
183
|
const dom = parseRangesToHTMLNodes(text, markdownRanges, markdownStyle);
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
184
|
+
if (!rootSpan || rootSpan.innerHTML !== dom.innerHTML) {
|
|
185
|
+
targetElement.innerHTML = '';
|
|
186
|
+
targetElement.innerText = '';
|
|
187
|
+
target.appendChild(dom);
|
|
188
|
+
if (isChromium) {
|
|
189
|
+
moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, target);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (!isChromium) {
|
|
193
|
+
moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, target);
|
|
177
194
|
}
|
|
178
195
|
}
|
|
179
196
|
return {
|
|
@@ -1 +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","ungroupRanges","ranges","ungroupedRanges","forEach","range","depth","push","rangeWithoutDepth","Array","from","parseRangesToHTMLNodes","disableInlineStyles","createElement","className","textLength","stack","nestedStack","lastRangeEndIndex","shift","currentRoot","endOfCurrentRange","start","nextRangeStartIndex","span","prevRoot","pop","lastNestedNode","
|
|
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","ungroupRanges","ranges","ungroupedRanges","forEach","range","depth","push","rangeWithoutDepth","Array","from","parseRangesToHTMLNodes","disableInlineStyles","createElement","className","textLength","stack","nestedStack","lastRangeEndIndex","shift","currentRoot","endOfCurrentRange","start","nextRangeStartIndex","span","prevRoot","pop","lastNestedNode","moveCursor","isFocused","alwaysMoveCursorToTheEnd","cursorPosition","target","moveCursorToEnd","setCursorPosition","isChromium","window","parseText","curosrPositionIndex","activeElement","selection","getCurrentCursorPosition","end","global","parseExpensiMarkToRanges","markdownRanges","rootSpan","firstChild","innerHTML","innerText","dom"],"sourceRoot":"../../../src","sources":["web/parserUtils.ts"],"mappings":"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"}
|
|
@@ -142,6 +142,17 @@ function parseRangesToHTMLNodes(text, ranges, markdownStyle = {}, disableInlineS
|
|
|
142
142
|
addSubstringAsTextNode(root, text, lastRangeEndIndex, textLength);
|
|
143
143
|
return root;
|
|
144
144
|
}
|
|
145
|
+
function moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, target) {
|
|
146
|
+
if (!isFocused) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
if (alwaysMoveCursorToTheEnd || cursorPosition === null) {
|
|
150
|
+
CursorUtils.moveCursorToEnd(target);
|
|
151
|
+
} else if (cursorPosition !== null) {
|
|
152
|
+
CursorUtils.setCursorPosition(target, cursorPosition);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
const isChromium = ('chrome' in window);
|
|
145
156
|
function parseText(target, text, curosrPositionIndex, markdownStyle = {}, alwaysMoveCursorToTheEnd = false) {
|
|
146
157
|
const targetElement = target;
|
|
147
158
|
let cursorPosition = curosrPositionIndex;
|
|
@@ -152,19 +163,25 @@ function parseText(target, text, curosrPositionIndex, markdownStyle = {}, always
|
|
|
152
163
|
}
|
|
153
164
|
const ranges = global.parseExpensiMarkToRanges(text);
|
|
154
165
|
const markdownRanges = ranges;
|
|
155
|
-
|
|
156
|
-
targetElement.
|
|
166
|
+
const rootSpan = targetElement.firstChild;
|
|
167
|
+
if (targetElement.innerHTML === '<br>' || rootSpan && rootSpan.innerHTML === '\n') {
|
|
168
|
+
targetElement.innerHTML = '';
|
|
169
|
+
targetElement.innerText = '';
|
|
170
|
+
}
|
|
157
171
|
|
|
158
172
|
// We don't want to parse text with single '\n', because contentEditable represents it as invisible <br />
|
|
159
|
-
if (
|
|
173
|
+
if (text) {
|
|
160
174
|
const dom = parseRangesToHTMLNodes(text, markdownRanges, markdownStyle);
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
175
|
+
if (!rootSpan || rootSpan.innerHTML !== dom.innerHTML) {
|
|
176
|
+
targetElement.innerHTML = '';
|
|
177
|
+
targetElement.innerText = '';
|
|
178
|
+
target.appendChild(dom);
|
|
179
|
+
if (isChromium) {
|
|
180
|
+
moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, target);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (!isChromium) {
|
|
184
|
+
moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, target);
|
|
168
185
|
}
|
|
169
186
|
}
|
|
170
187
|
return {
|
|
@@ -1 +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","ungroupRanges","ranges","ungroupedRanges","forEach","range","depth","push","rangeWithoutDepth","Array","from","parseRangesToHTMLNodes","disableInlineStyles","createElement","className","textLength","stack","nestedStack","lastRangeEndIndex","shift","currentRoot","endOfCurrentRange","start","nextRangeStartIndex","span","prevRoot","pop","lastNestedNode","
|
|
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","ungroupRanges","ranges","ungroupedRanges","forEach","range","depth","push","rangeWithoutDepth","Array","from","parseRangesToHTMLNodes","disableInlineStyles","createElement","className","textLength","stack","nestedStack","lastRangeEndIndex","shift","currentRoot","endOfCurrentRange","start","nextRangeStartIndex","span","prevRoot","pop","lastNestedNode","moveCursor","isFocused","alwaysMoveCursorToTheEnd","cursorPosition","target","moveCursorToEnd","setCursorPosition","isChromium","window","parseText","curosrPositionIndex","activeElement","selection","getCurrentCursorPosition","end","global","parseExpensiMarkToRanges","markdownRanges","rootSpan","firstChild","innerHTML","innerText","dom"],"sourceRoot":"../../../src","sources":["web/parserUtils.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parserUtils.d.ts","sourceRoot":"","sources":["../../../../src/web/parserUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,eAAe,MAAM,eAAe,CAAC;AAEtD,KAAK,oBAAoB,GAAG,eAAe,CAAC,oBAAoB,CAAC;AAEjE,KAAK,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,GAAG,IAAI,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC;AAErJ,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAkFF,iBAAS,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,aAAa,GAAE,oBAAyB,EAAE,mBAAmB,UAAQ,GAAG,WAAW,CAkEzJ;
|
|
1
|
+
{"version":3,"file":"parserUtils.d.ts","sourceRoot":"","sources":["../../../../src/web/parserUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,eAAe,MAAM,eAAe,CAAC;AAEtD,KAAK,oBAAoB,GAAG,eAAe,CAAC,oBAAoB,CAAC;AAEjE,KAAK,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,GAAG,IAAI,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC;AAErJ,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAkFF,iBAAS,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,aAAa,GAAE,oBAAyB,EAAE,mBAAmB,UAAQ,GAAG,WAAW,CAkEzJ;AAgBD,iBAAS,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,GAAE,oBAAyB,EAAE,wBAAwB,UAAQ;;;EAuCnK;AAED,OAAO,EAAC,SAAS,EAAE,sBAAsB,EAAC,CAAC;AAE3C,YAAY,EAAC,aAAa,EAAE,YAAY,EAAC,CAAC"}
|
package/package.json
CHANGED
package/src/web/parserUtils.ts
CHANGED
|
@@ -160,6 +160,20 @@ function parseRangesToHTMLNodes(text: string, ranges: MarkdownRange[], markdownS
|
|
|
160
160
|
return root;
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
+
function moveCursor(isFocused: boolean, alwaysMoveCursorToTheEnd: boolean, cursorPosition: number | null, target: HTMLElement) {
|
|
164
|
+
if (!isFocused) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
if (alwaysMoveCursorToTheEnd || cursorPosition === null) {
|
|
169
|
+
CursorUtils.moveCursorToEnd(target);
|
|
170
|
+
} else if (cursorPosition !== null) {
|
|
171
|
+
CursorUtils.setCursorPosition(target, cursorPosition);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const isChromium = 'chrome' in window;
|
|
176
|
+
|
|
163
177
|
function parseText(target: HTMLElement, text: string, curosrPositionIndex: number | null, markdownStyle: PartialMarkdownStyle = {}, alwaysMoveCursorToTheEnd = false) {
|
|
164
178
|
const targetElement = target;
|
|
165
179
|
|
|
@@ -172,21 +186,29 @@ function parseText(target: HTMLElement, text: string, curosrPositionIndex: numbe
|
|
|
172
186
|
const ranges = global.parseExpensiMarkToRanges(text);
|
|
173
187
|
|
|
174
188
|
const markdownRanges: MarkdownRange[] = ranges as MarkdownRange[];
|
|
189
|
+
const rootSpan = targetElement.firstChild as HTMLElement | null;
|
|
175
190
|
|
|
176
|
-
targetElement.innerHTML
|
|
177
|
-
|
|
191
|
+
if (targetElement.innerHTML === '<br>' || (rootSpan && rootSpan.innerHTML === '\n')) {
|
|
192
|
+
targetElement.innerHTML = '';
|
|
193
|
+
targetElement.innerText = '';
|
|
194
|
+
}
|
|
178
195
|
|
|
179
196
|
// We don't want to parse text with single '\n', because contentEditable represents it as invisible <br />
|
|
180
|
-
if (
|
|
197
|
+
if (text) {
|
|
181
198
|
const dom = parseRangesToHTMLNodes(text, markdownRanges, markdownStyle);
|
|
182
|
-
target.appendChild(dom);
|
|
183
|
-
}
|
|
184
199
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
200
|
+
if (!rootSpan || rootSpan.innerHTML !== dom.innerHTML) {
|
|
201
|
+
targetElement.innerHTML = '';
|
|
202
|
+
targetElement.innerText = '';
|
|
203
|
+
target.appendChild(dom);
|
|
204
|
+
|
|
205
|
+
if (isChromium) {
|
|
206
|
+
moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, target);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (!isChromium) {
|
|
211
|
+
moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, target);
|
|
190
212
|
}
|
|
191
213
|
}
|
|
192
214
|
|