@expensify/react-native-live-markdown 0.1.299 → 0.1.300

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 (51) hide show
  1. package/lib/commonjs/MarkdownTextInput.web.js +1 -1
  2. package/lib/commonjs/MarkdownTextInput.web.js.map +1 -1
  3. package/lib/commonjs/MarkdownTextInputDecoratorViewNativeComponent.js.map +1 -1
  4. package/lib/commonjs/parseExpensiMark.js +9 -3
  5. package/lib/commonjs/parseExpensiMark.js.map +1 -1
  6. package/lib/commonjs/styleUtils.js +15 -2
  7. package/lib/commonjs/styleUtils.js.map +1 -1
  8. package/lib/commonjs/web/MarkdownTextInput.css +28 -5
  9. package/lib/commonjs/web/utils/blockUtils.js +60 -5
  10. package/lib/commonjs/web/utils/blockUtils.js.map +1 -1
  11. package/lib/commonjs/web/utils/cursorUtils.js +28 -3
  12. package/lib/commonjs/web/utils/cursorUtils.js.map +1 -1
  13. package/lib/commonjs/web/utils/inputUtils.js +49 -11
  14. package/lib/commonjs/web/utils/inputUtils.js.map +1 -1
  15. package/lib/module/MarkdownTextInput.web.js +1 -1
  16. package/lib/module/MarkdownTextInput.web.js.map +1 -1
  17. package/lib/module/MarkdownTextInputDecoratorViewNativeComponent.js.map +1 -1
  18. package/lib/module/parseExpensiMark.js +9 -3
  19. package/lib/module/parseExpensiMark.js.map +1 -1
  20. package/lib/module/styleUtils.js +15 -2
  21. package/lib/module/styleUtils.js.map +1 -1
  22. package/lib/module/web/MarkdownTextInput.css +28 -5
  23. package/lib/module/web/utils/blockUtils.js +58 -6
  24. package/lib/module/web/utils/blockUtils.js.map +1 -1
  25. package/lib/module/web/utils/cursorUtils.js +28 -3
  26. package/lib/module/web/utils/cursorUtils.js.map +1 -1
  27. package/lib/module/web/utils/inputUtils.js +48 -11
  28. package/lib/module/web/utils/inputUtils.js.map +1 -1
  29. package/lib/typescript/src/MarkdownTextInput.web.d.ts.map +1 -1
  30. package/lib/typescript/src/MarkdownTextInputDecoratorViewNativeComponent.d.ts +16 -11
  31. package/lib/typescript/src/MarkdownTextInputDecoratorViewNativeComponent.d.ts.map +1 -1
  32. package/lib/typescript/src/commonTypes.d.ts +1 -1
  33. package/lib/typescript/src/commonTypes.d.ts.map +1 -1
  34. package/lib/typescript/src/parseExpensiMark.d.ts.map +1 -1
  35. package/lib/typescript/src/styleUtils.d.ts +1 -1
  36. package/lib/typescript/src/styleUtils.d.ts.map +1 -1
  37. package/lib/typescript/src/web/utils/blockUtils.d.ts +5 -2
  38. package/lib/typescript/src/web/utils/blockUtils.d.ts.map +1 -1
  39. package/lib/typescript/src/web/utils/cursorUtils.d.ts.map +1 -1
  40. package/lib/typescript/src/web/utils/inputUtils.d.ts +3 -0
  41. package/lib/typescript/src/web/utils/inputUtils.d.ts.map +1 -1
  42. package/package.json +3 -3
  43. package/src/MarkdownTextInput.web.tsx +3 -2
  44. package/src/MarkdownTextInputDecoratorViewNativeComponent.ts +17 -11
  45. package/src/commonTypes.ts +2 -1
  46. package/src/parseExpensiMark.ts +5 -3
  47. package/src/styleUtils.ts +14 -1
  48. package/src/web/MarkdownTextInput.css +28 -5
  49. package/src/web/utils/blockUtils.ts +74 -8
  50. package/src/web/utils/cursorUtils.ts +29 -3
  51. package/src/web/utils/inputUtils.ts +61 -12
@@ -1 +1 @@
1
- {"version":3,"names":["findHTMLElementInTree","getTreeNodeByIndex","setCursorPosition","target","startIndex","endIndex","shouldScrollIntoView","tree","document","activeElement","start","Math","max","min","length","end","range","createRange","selectNodeContents","startTreeNode","endTreeNode","console","error","type","setStartBefore","element","startElement","setStart","childNodes","setEndBefore","endElement","setEnd","collapse","selection","window","getSelection","setBaseAndExtent","startContainer","startOffset","endContainer","endOffset","scrollIntoView","node","targetElement","orderIndex","Number","split","currentLine","scrollTargetElement","caretRect","getBoundingClientRect","targetRect","top","height","scrollTop","block","moveCursorToEnd","getCurrentCursorPosition","getHTMLElement","Text","parentElement","rangeCount","getRangeAt","parentNode","value","removeSelection","removeAllRanges"],"sourceRoot":"../../../../src","sources":["web/utils/cursorUtils.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isChildOfMultilineMarkdownElement","findHTMLElementInTree","getTreeNodeByIndex","setCursorPosition","target","startIndex","endIndex","shouldScrollIntoView","tree","document","activeElement","start","Math","max","min","length","end","range","createRange","selectNodeContents","startTreeNode","endTreeNode","console","error","type","setStartBefore","element","startElement","setStart","childNodes","setEndBefore","endElement","setEnd","collapse","selection","window","getSelection","setBaseAndExtent","startContainer","startOffset","endContainer","endOffset","scrollIntoView","node","scrollTargetElement","targetElement","orderIndex","Number","split","currentLine","nodeName","addRange","span","createElement","textContent","insertNode","block","remove","caretRect","getBoundingClientRect","targetRect","top","height","scrollTop","moveCursorToEnd","getCurrentCursorPosition","getHTMLElement","Text","parentElement","rangeCount","getRangeAt","parentNode","value","removeSelection","removeAllRanges"],"sourceRoot":"../../../../src","sources":["web/utils/cursorUtils.ts"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ import { isChildOfMarkdownElement, isChildOfMultilineMarkdownElement } from "./blockUtils.js";
4
+ import BrowserUtils from "./browserUtils.js";
3
5
  const ZERO_WIDTH_SPACE = '\u200B';
4
6
 
5
7
  // If an Input Method Editor is processing key input, the 'keyCode' is 229.
@@ -32,16 +34,33 @@ function normalizeValue(value) {
32
34
  return value.replaceAll('\r\n', '\n');
33
35
  }
34
36
 
35
- // Parses the HTML structure of a MarkdownTextInputElement to a plain text string. Used for getting the correct value of the input element.
36
- function parseInnerHTMLToText(target, cursorPosition, inputType, isMultiline = true) {
37
- // Returns the parent of a given node that is higher in the hierarchy and is of a different type than 'text', 'br' or 'line'
38
- function getTopParentNode(node) {
39
- let currentParentNode = node.parentNode;
40
- while (currentParentNode && ['text', 'br', 'line'].includes(currentParentNode.parentElement?.getAttribute('data-type') || '')) {
41
- currentParentNode = currentParentNode?.parentNode || null;
42
- }
43
- return currentParentNode;
37
+ /**
38
+ * Returns the parent of a given node that is higher in the hierarchy and is of a different type than 'text', 'br' or 'line'
39
+ */
40
+ function getTopParentNode(node) {
41
+ let currentParentNode = node.parentNode;
42
+ while (currentParentNode && ['text', 'br', 'line'].includes(currentParentNode.parentElement?.getAttribute('data-type') || '')) {
43
+ currentParentNode = currentParentNode?.parentNode || null;
44
+ }
45
+ return currentParentNode;
46
+ }
47
+
48
+ /**
49
+ * On Firefox, when breaking one codeblock, its syntax and the <br> after it can be merged into the closing syntax of the previous codeblock.
50
+ */
51
+ function didTwoCodeblocksMerge(node) {
52
+ if (!node || !BrowserUtils.isFirefox) {
53
+ return;
44
54
  }
55
+ // To identify that two codeblock has merged, we check if current line ends with <br> tag, that previously was second codeblock's opening syntax line break
56
+ const hasPartOfBrokenCodeblock = node.lastChild?.lastChild?.lastChild?.lastChild?.nodeName === 'BR';
57
+ return BrowserUtils.isFirefox && node.lastChild?.getAttribute('data-type') === 'codeblock' && hasPartOfBrokenCodeblock;
58
+ }
59
+
60
+ /**
61
+ * Parses the HTML structure of a MarkdownTextInputElement to a plain text string. Used for getting the correct value of the input element.
62
+ */
63
+ function parseInnerHTMLToText(target, cursorPosition, inputType, isMultiline = true) {
45
64
  const stack = [target];
46
65
  let text = '';
47
66
  let shouldAddNewline = false;
@@ -66,7 +85,7 @@ function parseInnerHTMLToText(target, cursorPosition, inputType, isMultiline = t
66
85
  } else {
67
86
  const firstChild = node.firstChild;
68
87
  const containsEmptyBlockElement = firstChild?.getAttribute?.('data-type') === 'block' && firstChild.textContent === '';
69
- if (shouldAddNewline && !containsEmptyBlockElement) {
88
+ if (firstChild && shouldAddNewline && !containsEmptyBlockElement && !didTwoCodeblocksMerge(node.previousSibling)) {
70
89
  text += '\n';
71
90
  shouldAddNewline = false;
72
91
  }
@@ -74,11 +93,29 @@ function parseInnerHTMLToText(target, cursorPosition, inputType, isMultiline = t
74
93
  }
75
94
  }
76
95
  if (node.nodeType === Node.TEXT_NODE) {
96
+ let hasAddedNewline = false;
97
+ // Fix for codeblocks: Removing last codeblock newline, moves codeblock syntax too far into the codeblock content
98
+ // skipping one <br> after the codeblock syntax. We need to force parsing it before the text node is added.
99
+ if (node.parentElement && !node.parentElement.getAttribute?.('data-type') && isChildOfMarkdownElement(node, 'pre')) {
100
+ text += '\n';
101
+ const nextBR = node.parentElement?.nextElementSibling?.firstElementChild ?? node.parentElement?.nextElementSibling;
102
+ if (nextBR && nextBR.tagName === 'BR') {
103
+ nextBR.remove();
104
+ }
105
+ hasAddedNewline = true;
106
+ }
107
+
77
108
  // Parse text nodes into text
78
109
  text += node.textContent;
110
+
111
+ // Fix for codeblocks: If we are adding text at the end of a multiline markdown type element, we need to add a newline
112
+ // because the new text can replace the last <br> element and it will not be added to the text.
113
+ if (node.parentElement && node.parentNode?.parentElement?.nextSibling && !node.parentNode?.nextSibling && isChildOfMultilineMarkdownElement(node) && (!hasAddedNewline && isChildOfMarkdownElement(node, 'br') || !node.parentElement.getAttribute?.('data-type') && isChildOfMarkdownElement(node, 'syntax'))) {
114
+ text += '\n';
115
+ }
79
116
  } else if (node.nodeName === 'BR') {
80
117
  const parentNode = getTopParentNode(node);
81
- if (isMultiline && parentNode && parentNode.parentElement?.contentEditable !== 'true' && !!node.getAttribute('data-id')) {
118
+ if (isMultiline && parentNode && parentNode.parentElement?.contentEditable !== 'true' && !!(node.getAttribute('data-id') || node.parentElement.getAttribute('data-type') === 'br') || node.parentElement?.getAttribute('data-type') === 'text' && isChildOfMultilineMarkdownElement(node)) {
82
119
  // Parse br elements into newlines only if their parent is not a child of the MarkdownTextInputElement (a paragraph when writing or a div when pasting).
83
120
  // It prevents adding extra newlines when entering text - and now only for multiline inputs
84
121
  text += '\n';
@@ -1 +1 @@
1
- {"version":3,"names":["ZERO_WIDTH_SPACE","isEventComposing","nativeEvent","isComposing","keyCode","getPlaceholderValue","placeholder","length","getElementHeight","node","styles","numberOfLines","tempElement","document","createElement","setAttribute","Object","assign","style","textContent","Array","fill","join","parentElement","appendChild","height","clientHeight","removeChild","normalizeValue","value","replaceAll","parseInnerHTMLToText","target","cursorPosition","inputType","isMultiline","getTopParentNode","currentParentNode","parentNode","includes","getAttribute","stack","text","shouldAddNewline","lastNode","childNodes","nodeName","innerHTML","pop","isTopComponent","contentEditable","nodeType","Node","TEXT_NODE","firstChild","containsEmptyBlockElement","i","child","push","slice"],"sourceRoot":"../../../../src","sources":["web/utils/inputUtils.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isChildOfMarkdownElement","isChildOfMultilineMarkdownElement","BrowserUtils","ZERO_WIDTH_SPACE","isEventComposing","nativeEvent","isComposing","keyCode","getPlaceholderValue","placeholder","length","getElementHeight","node","styles","numberOfLines","tempElement","document","createElement","setAttribute","Object","assign","style","textContent","Array","fill","join","parentElement","appendChild","height","clientHeight","removeChild","normalizeValue","value","replaceAll","getTopParentNode","currentParentNode","parentNode","includes","getAttribute","didTwoCodeblocksMerge","isFirefox","hasPartOfBrokenCodeblock","lastChild","nodeName","parseInnerHTMLToText","target","cursorPosition","inputType","isMultiline","stack","text","shouldAddNewline","lastNode","childNodes","innerHTML","pop","isTopComponent","contentEditable","nodeType","Node","TEXT_NODE","firstChild","containsEmptyBlockElement","previousSibling","hasAddedNewline","nextBR","nextElementSibling","firstElementChild","tagName","remove","nextSibling","i","child","push","slice"],"sourceRoot":"../../../../src","sources":["web/utils/inputUtils.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownTextInput.web.d.ts","sourceRoot":"","sources":["../../../src/MarkdownTextInput.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EAKT,cAAc,EAKf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAiE,MAAM,OAAO,CAAC;AACtF,OAAO,KAAK,EAAwE,UAAU,EAAmE,MAAM,OAAO,CAAC;AAI/K,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iDAAiD,CAAC;AAInF,OAAO,KAAK,EAAC,aAAa,EAAE,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAIzE,UAAU,sBAAuB,SAAQ,cAAc,EAAE,sBAAsB;IAC7E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,EAAE,CAAC;IAC1C,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,qBAAqB,CAAC;IAC/H,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,mBAAoB,SAAQ,KAAK;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,iBAAiB,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;AAE7E,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAOF,KAAK,qBAAqB,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AASF,KAAK,wBAAwB,GAAG,cAAc,GAC5C,gBAAgB,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC,CAAC;AAEJ,KAAK,mBAAmB,GAAG,WAAW,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,QAAA,MAAM,iBAAiB,kGAwtBtB,CAAC;AAwBF,eAAe,iBAAiB,CAAC;AAEjC,YAAY,EAAC,mBAAmB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,mBAAmB,EAAC,CAAC;AAEzG,iBAAS,iBAAiB,SAEzB;AAED,OAAO,EAAC,iBAAiB,EAAC,CAAC"}
1
+ {"version":3,"file":"MarkdownTextInput.web.d.ts","sourceRoot":"","sources":["../../../src/MarkdownTextInput.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EAKT,cAAc,EAKf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAiE,MAAM,OAAO,CAAC;AACtF,OAAO,KAAK,EAAwE,UAAU,EAAmE,MAAM,OAAO,CAAC;AAI/K,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iDAAiD,CAAC;AAInF,OAAO,KAAK,EAAC,aAAa,EAAE,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAIzE,UAAU,sBAAuB,SAAQ,cAAc,EAAE,sBAAsB;IAC7E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,EAAE,CAAC;IAC1C,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,qBAAqB,CAAC;IAC/H,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,mBAAoB,SAAQ,KAAK;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,iBAAiB,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;AAE7E,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAOF,KAAK,qBAAqB,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AASF,KAAK,wBAAwB,GAAG,cAAc,GAC5C,gBAAgB,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC,CAAC;AAEJ,KAAK,mBAAmB,GAAG,WAAW,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,QAAA,MAAM,iBAAiB,kGAytBtB,CAAC;AAwBF,eAAe,iBAAiB,CAAC;AAEjC,YAAY,EAAC,mBAAmB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,mBAAmB,EAAC,CAAC;AAEzG,iBAAS,iBAAiB,SAEzB;AAED,OAAO,EAAC,iBAAiB,EAAC,CAAC"}
@@ -1,6 +1,19 @@
1
1
  /// <reference types="react-native/types/modules/Codegen" />
2
2
  import type { ColorValue, ViewProps } from 'react-native';
3
3
  import type { Float, Int32 } from 'react-native/Libraries/Types/CodegenTypes';
4
+ interface CodeBlockStyle {
5
+ fontFamily: string;
6
+ fontSize: Float;
7
+ color: ColorValue;
8
+ backgroundColor: ColorValue;
9
+ borderColor?: ColorValue;
10
+ borderWidth?: Float;
11
+ borderRadius?: Float;
12
+ borderStyle?: string;
13
+ padding?: Float;
14
+ paddingVertical?: Float;
15
+ paddingHorizontal?: Float;
16
+ }
4
17
  interface MarkdownStyle {
5
18
  syntax: {
6
19
  color: ColorValue;
@@ -21,18 +34,10 @@ interface MarkdownStyle {
21
34
  marginLeft: Float;
22
35
  paddingLeft: Float;
23
36
  };
24
- code: {
25
- fontFamily: string;
26
- fontSize: Float;
27
- color: ColorValue;
28
- backgroundColor: ColorValue;
29
- };
30
- pre: {
31
- fontFamily: string;
32
- fontSize: Float;
33
- color: ColorValue;
34
- backgroundColor: ColorValue;
37
+ code: CodeBlockStyle & {
38
+ h1NestedFontSize?: Float;
35
39
  };
40
+ pre: CodeBlockStyle;
36
41
  mentionHere: {
37
42
  color: ColorValue;
38
43
  backgroundColor: ColorValue;
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownTextInputDecoratorViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/MarkdownTextInputDecoratorViewNativeComponent.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EAAC,KAAK,EAAE,KAAK,EAAC,MAAM,2CAA2C,CAAC;AAG5E,UAAU,aAAa;IACrB,MAAM,EAAE;QACN,KAAK,EAAE,UAAU,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QACL,QAAQ,EAAE,KAAK,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,EAAE;QACJ,KAAK,EAAE,UAAU,CAAC;KACnB,CAAC;IACF,EAAE,EAAE;QACF,QAAQ,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,UAAU,EAAE;QACV,WAAW,EAAE,UAAU,CAAC;QACxB,WAAW,EAAE,KAAK,CAAC;QACnB,UAAU,EAAE,KAAK,CAAC;QAClB,WAAW,EAAE,KAAK,CAAC;KACpB,CAAC;IACF,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,KAAK,CAAC;QAChB,KAAK,EAAE,UAAU,CAAC;QAClB,eAAe,EAAE,UAAU,CAAC;KAC7B,CAAC;IACF,GAAG,EAAE;QACH,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,KAAK,CAAC;QAChB,KAAK,EAAE,UAAU,CAAC;QAClB,eAAe,EAAE,UAAU,CAAC;KAC7B,CAAC;IACF,WAAW,EAAE;QACX,KAAK,EAAE,UAAU,CAAC;QAClB,eAAe,EAAE,UAAU,CAAC;QAC5B,YAAY,CAAC,EAAE,KAAK,CAAC;KACtB,CAAC;IACF,WAAW,EAAE;QACX,KAAK,EAAE,UAAU,CAAC;QAClB,eAAe,EAAE,UAAU,CAAC;QAC5B,YAAY,CAAC,EAAE,KAAK,CAAC;KACtB,CAAC;IACF,aAAa,EAAE;QACb,KAAK,EAAE,UAAU,CAAC;QAClB,eAAe,EAAE,UAAU,CAAC;QAC5B,YAAY,CAAC,EAAE,KAAK,CAAC;KACtB,CAAC;IACF,WAAW,EAAE;QACX,QAAQ,EAAE,KAAK,CAAC;QAChB,SAAS,EAAE,KAAK,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC;QAChB,SAAS,EAAE,KAAK,CAAC;QACjB,SAAS,EAAE,KAAK,CAAC;QACjB,YAAY,EAAE,KAAK,CAAC;QACpB,YAAY,EAAE,KAAK,CAAC;KACrB,CAAC;IACF,yBAAyB,CAAC,EAAE;QAC1B,eAAe,CAAC,EAAE,UAAU,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,WAAW,CAAC,EAAE,UAAU,CAAC;QACzB,YAAY,CAAC,EAAE,KAAK,CAAC;QACrB,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,CAAC,EAAE,KAAK,CAAC;KAChB,CAAC;IACF,gBAAgB,CAAC,EAAE;QACjB,YAAY,CAAC,EAAE,UAAU,CAAC;QAC1B,cAAc,CAAC,EAAE,UAAU,CAAC;QAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,WAAW,CAAC,EAAE,KAAK,CAAC;KACrB,CAAC;CACH;AAED,UAAU,WAAY,SAAQ,SAAS;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC;CACjB;;AAED,wBAEG;AAEH,YAAY,EAAC,aAAa,EAAC,CAAC"}
1
+ {"version":3,"file":"MarkdownTextInputDecoratorViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/MarkdownTextInputDecoratorViewNativeComponent.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EAAC,KAAK,EAAE,KAAK,EAAC,MAAM,2CAA2C,CAAC;AAG5E,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,UAAU,CAAC;IAC5B,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,iBAAiB,CAAC,EAAE,KAAK,CAAC;CAC3B;AAED,UAAU,aAAa;IACrB,MAAM,EAAE;QACN,KAAK,EAAE,UAAU,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QACL,QAAQ,EAAE,KAAK,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,EAAE;QACJ,KAAK,EAAE,UAAU,CAAC;KACnB,CAAC;IACF,EAAE,EAAE;QACF,QAAQ,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,UAAU,EAAE;QACV,WAAW,EAAE,UAAU,CAAC;QACxB,WAAW,EAAE,KAAK,CAAC;QACnB,UAAU,EAAE,KAAK,CAAC;QAClB,WAAW,EAAE,KAAK,CAAC;KACpB,CAAC;IACF,IAAI,EAAE,cAAc,GAAG;QACrB,gBAAgB,CAAC,EAAE,KAAK,CAAC;KAC1B,CAAC;IACF,GAAG,EAAE,cAAc,CAAC;IACpB,WAAW,EAAE;QACX,KAAK,EAAE,UAAU,CAAC;QAClB,eAAe,EAAE,UAAU,CAAC;QAC5B,YAAY,CAAC,EAAE,KAAK,CAAC;KACtB,CAAC;IACF,WAAW,EAAE;QACX,KAAK,EAAE,UAAU,CAAC;QAClB,eAAe,EAAE,UAAU,CAAC;QAC5B,YAAY,CAAC,EAAE,KAAK,CAAC;KACtB,CAAC;IACF,aAAa,EAAE;QACb,KAAK,EAAE,UAAU,CAAC;QAClB,eAAe,EAAE,UAAU,CAAC;QAC5B,YAAY,CAAC,EAAE,KAAK,CAAC;KACtB,CAAC;IACF,WAAW,EAAE;QACX,QAAQ,EAAE,KAAK,CAAC;QAChB,SAAS,EAAE,KAAK,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC;QAChB,SAAS,EAAE,KAAK,CAAC;QACjB,SAAS,EAAE,KAAK,CAAC;QACjB,YAAY,EAAE,KAAK,CAAC;QACpB,YAAY,EAAE,KAAK,CAAC;KACrB,CAAC;IACF,yBAAyB,CAAC,EAAE;QAC1B,eAAe,CAAC,EAAE,UAAU,CAAC;QAC7B,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,WAAW,CAAC,EAAE,UAAU,CAAC;QACzB,YAAY,CAAC,EAAE,KAAK,CAAC;QACrB,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,CAAC,EAAE,KAAK,CAAC;KAChB,CAAC;IACF,gBAAgB,CAAC,EAAE;QACjB,YAAY,CAAC,EAAE,UAAU,CAAC;QAC1B,cAAc,CAAC,EAAE,UAAU,CAAC;QAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,WAAW,CAAC,EAAE,KAAK,CAAC;KACrB,CAAC;CACH;AAED,UAAU,WAAY,SAAQ,SAAS;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC;CACjB;;AAED,wBAEG;AAEH,YAAY,EAAC,aAAa,EAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- type MarkdownType = 'bold' | 'italic' | 'strikethrough' | 'emoji' | 'mention-here' | 'mention-user' | 'mention-short' | 'mention-report' | 'link' | 'code' | 'pre' | 'blockquote' | 'h1' | 'syntax' | 'inline-image';
1
+ type MarkdownType = 'bold' | 'italic' | 'strikethrough' | 'emoji' | 'mention-here' | 'mention-user' | 'mention-short' | 'mention-report' | 'link' | 'code' | 'pre' | 'blockquote' | 'h1' | 'syntax' | 'inline-image' | 'codeblock';
2
2
  interface MarkdownRange {
3
3
  type: MarkdownType;
4
4
  start: number;
@@ -1 +1 @@
1
- {"version":3,"file":"commonTypes.d.ts","sourceRoot":"","sources":["../../../src/commonTypes.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GACb,MAAM,GACN,QAAQ,GACR,eAAe,GACf,OAAO,GACP,cAAc,GACd,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,MAAM,GACN,MAAM,GACN,KAAK,GACL,YAAY,GACZ,IAAI,GACJ,QAAQ,GACR,cAAc,CAAC;AAEnB,UAAU,aAAa;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,sBAAsB,GAAG;IAC5B,8BAA8B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAC;CACzC,CAAC;AAEF,YAAY,EAAC,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAC,CAAC"}
1
+ {"version":3,"file":"commonTypes.d.ts","sourceRoot":"","sources":["../../../src/commonTypes.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GACb,MAAM,GACN,QAAQ,GACR,eAAe,GACf,OAAO,GACP,cAAc,GACd,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,MAAM,GACN,MAAM,GACN,KAAK,GACL,YAAY,GACZ,IAAI,GACJ,QAAQ,GACR,cAAc,GACd,WAAW,CAAC;AAEhB,UAAU,aAAa;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,sBAAsB,GAAG;IAC5B,8BAA8B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAC;CACzC,CAAC;AAEF,YAAY,EAAC,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parseExpensiMark.d.ts","sourceRoot":"","sources":["../../../src/parseExpensiMark.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAe,aAAa,EAAC,MAAM,eAAe,CAAC;AAyO/D,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CA0B3D;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"parseExpensiMark.d.ts","sourceRoot":"","sources":["../../../src/parseExpensiMark.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAe,aAAa,EAAC,MAAM,eAAe,CAAC;AA2O/D,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CA0B3D;AAED,eAAe,gBAAgB,CAAC"}
@@ -3,7 +3,7 @@ type PartialMarkdownStyle = Partial<{
3
3
  [K in keyof MarkdownStyle]: Partial<MarkdownStyle[K]>;
4
4
  }>;
5
5
  declare function mergeMarkdownStyleWithDefault(input: PartialMarkdownStyle | undefined): MarkdownStyle;
6
- declare function parseStringWithUnitToNumber(value: string | null): number;
6
+ declare function parseStringWithUnitToNumber(value: string | number | null): number;
7
7
  export type { PartialMarkdownStyle };
8
8
  export { mergeMarkdownStyleWithDefault, parseStringWithUnitToNumber };
9
9
  //# sourceMappingURL=styleUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styleUtils.d.ts","sourceRoot":"","sources":["../../../src/styleUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iDAAiD,CAAC;AAEnF,KAAK,oBAAoB,GAAG,OAAO,CAAC;KACjC,CAAC,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC,CAAC;AA0EH,iBAAS,6BAA6B,CAAC,KAAK,EAAE,oBAAoB,GAAG,SAAS,GAAG,aAAa,CAiB7F;AAED,iBAAS,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEjE;AAED,YAAY,EAAC,oBAAoB,EAAC,CAAC;AAEnC,OAAO,EAAC,6BAA6B,EAAE,2BAA2B,EAAC,CAAC"}
1
+ {"version":3,"file":"styleUtils.d.ts","sourceRoot":"","sources":["../../../src/styleUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iDAAiD,CAAC;AAEnF,KAAK,oBAAoB,GAAG,OAAO,CAAC;KACjC,CAAC,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC,CAAC;AAoFH,iBAAS,6BAA6B,CAAC,KAAK,EAAE,oBAAoB,GAAG,SAAS,GAAG,aAAa,CAiB7F;AAED,iBAAS,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAK1E;AAED,YAAY,EAAC,oBAAoB,EAAC,CAAC;AAEnC,OAAO,EAAC,6BAA6B,EAAE,2BAA2B,EAAC,CAAC"}
@@ -1,11 +1,14 @@
1
- import type { MarkdownTextInputElement } from '../../MarkdownTextInput.web';
2
1
  import type { InlineImagesInputProps, MarkdownRange } from '../../commonTypes';
2
+ import type { MarkdownTextInputElement } from '../../MarkdownTextInput.web';
3
3
  import type { PartialMarkdownStyle } from '../../styleUtils';
4
4
  import type { NodeType, TreeNode } from './treeUtils';
5
5
  declare function addStyleToBlock(targetElement: HTMLElement, type: NodeType, markdownStyle: PartialMarkdownStyle, isMultiline?: boolean): void;
6
+ declare const MULTILINE_MARKDOWN_TYPES: string[];
6
7
  declare function isBlockMarkdownType(type: NodeType): boolean;
7
8
  declare function isMultilineMarkdownType(type: NodeType): boolean;
8
9
  declare function getFirstBlockMarkdownRange(ranges: MarkdownRange[]): MarkdownRange | undefined;
9
10
  declare function extendBlockStructure(currentInput: MarkdownTextInputElement, targetNode: TreeNode, currentRange: MarkdownRange, ranges: MarkdownRange[], text: string, markdownStyle: PartialMarkdownStyle, inlineImagesProps: InlineImagesInputProps): TreeNode;
10
- export { addStyleToBlock, extendBlockStructure, isBlockMarkdownType, isMultilineMarkdownType, getFirstBlockMarkdownRange };
11
+ declare function isChildOfMarkdownElement(node: HTMLElement, elementType: NodeType): boolean;
12
+ declare function isChildOfMultilineMarkdownElement(node: HTMLElement): boolean;
13
+ export { addStyleToBlock, extendBlockStructure, isBlockMarkdownType, isMultilineMarkdownType, getFirstBlockMarkdownRange, isChildOfMarkdownElement, isChildOfMultilineMarkdownElement, MULTILINE_MARKDOWN_TYPES, };
11
14
  //# sourceMappingURL=blockUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blockUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/blockUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAC,sBAAsB,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAE3D,OAAO,KAAK,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAEpD,iBAAS,eAAe,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,WAAW,UAAO,QAwF3H;AAMD,iBAAS,mBAAmB,CAAC,IAAI,EAAE,QAAQ,WAE1C;AAED,iBAAS,uBAAuB,CAAC,IAAI,EAAE,QAAQ,WAE9C;AAED,iBAAS,0BAA0B,CAAC,MAAM,EAAE,aAAa,EAAE,6BAG1D;AAED,iBAAS,oBAAoB,CAC3B,YAAY,EAAE,wBAAwB,EACtC,UAAU,EAAE,QAAQ,EACpB,YAAY,EAAE,aAAa,EAC3B,MAAM,EAAE,aAAa,EAAE,EACvB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,oBAAoB,EACnC,iBAAiB,EAAE,sBAAsB,YAU1C;AAED,OAAO,EAAC,eAAe,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,0BAA0B,EAAC,CAAC"}
1
+ {"version":3,"file":"blockUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/blockUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,sBAAsB,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAE1E,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAE3D,OAAO,KAAK,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAEpD,iBAAS,eAAe,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,EAAE,WAAW,UAAO,QAqF3H;AA4CD,QAAA,MAAM,wBAAwB,UAAgB,CAAC;AAE/C,iBAAS,mBAAmB,CAAC,IAAI,EAAE,QAAQ,WAE1C;AAED,iBAAS,uBAAuB,CAAC,IAAI,EAAE,QAAQ,WAE9C;AAED,iBAAS,0BAA0B,CAAC,MAAM,EAAE,aAAa,EAAE,6BAG1D;AAED,iBAAS,oBAAoB,CAC3B,YAAY,EAAE,wBAAwB,EACtC,UAAU,EAAE,QAAQ,EACpB,YAAY,EAAE,aAAa,EAC3B,MAAM,EAAE,aAAa,EAAE,EACvB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,oBAAoB,EACnC,iBAAiB,EAAE,sBAAsB,YAU1C;AAcD,iBAAS,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAEnF;AACD,iBAAS,iCAAiC,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAErE;AAED,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,iCAAiC,EACjC,wBAAwB,GACzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cursorUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/cursorUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAE1E,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAE1C,iBAAS,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,EAAE,oBAAoB,UAAQ,QAgD5I;AAED,iBAAS,cAAc,CAAC,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,QAiBvE;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,WAAW,QAQ3C;AAED,iBAAS,wBAAwB,CAAC,MAAM,EAAE,wBAAwB;;;SAiCjE;AAED,iBAAS,eAAe,SAKvB;AAED,OAAO,EAAC,wBAAwB,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAC,CAAC"}
1
+ {"version":3,"file":"cursorUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/cursorUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAG1E,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAE1C,iBAAS,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,EAAE,oBAAoB,UAAQ,QAgD5I;AAED,iBAAS,cAAc,CAAC,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,QA0CvE;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,WAAW,QAQ3C;AAED,iBAAS,wBAAwB,CAAC,MAAM,EAAE,wBAAwB;;;SAiCjE;AAED,iBAAS,eAAe,SAKvB;AAED,OAAO,EAAC,wBAAwB,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAC,CAAC"}
@@ -4,6 +4,9 @@ declare function isEventComposing(nativeEvent: globalThis.KeyboardEvent | Markdo
4
4
  declare function getPlaceholderValue(placeholder: string | undefined): string;
5
5
  declare function getElementHeight(node: HTMLDivElement, styles: CSSProperties, numberOfLines: number | undefined): string;
6
6
  declare function normalizeValue(value: string): string;
7
+ /**
8
+ * Parses the HTML structure of a MarkdownTextInputElement to a plain text string. Used for getting the correct value of the input element.
9
+ */
7
10
  declare function parseInnerHTMLToText(target: MarkdownTextInputElement, cursorPosition: number, inputType?: string, isMultiline?: boolean): string;
8
11
  export { isEventComposing, getPlaceholderValue, getElementHeight, parseInnerHTMLToText, normalizeValue };
9
12
  //# sourceMappingURL=inputUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inputUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/inputUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAC,mBAAmB,EAAE,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAM/F,iBAAS,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,aAAa,GAAG,mBAAmB,WAEpF;AAED,iBAAS,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,UAK3D;AAED,iBAAS,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,UAcvG;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,MAAM,UAEpC;AAGD,iBAAS,oBAAoB,CAAC,MAAM,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,UAAO,GAAG,MAAM,CAwEtI;AAED,OAAO,EAAC,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAC,CAAC"}
1
+ {"version":3,"file":"inputUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/inputUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAC,mBAAmB,EAAE,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAQ/F,iBAAS,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,aAAa,GAAG,mBAAmB,WAEpF;AAED,iBAAS,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,UAK3D;AAED,iBAAS,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,UAcvG;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,MAAM,UAEpC;AAyBD;;GAEG;AACH,iBAAS,oBAAoB,CAAC,MAAM,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,UAAO,GAAG,MAAM,CA8FtI;AAED,OAAO,EAAC,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expensify/react-native-live-markdown",
3
- "version": "0.1.299",
3
+ "version": "0.1.300",
4
4
  "description": "Drop-in replacement for React Native's TextInput component with Markdown formatting.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -87,7 +87,7 @@
87
87
  "eslint-plugin-prettier": "^4.0.0",
88
88
  "eslint-plugin-promise": "^6.1.1",
89
89
  "eslint-plugin-tsdoc": "^0.2.17",
90
- "expensify-common": "2.0.134",
90
+ "expensify-common": "2.0.148",
91
91
  "jest": "^29.6.3",
92
92
  "jest-environment-jsdom": "^29.7.0",
93
93
  "nodemon": "^3.1.3",
@@ -104,7 +104,7 @@
104
104
  "typescript": "~5.3.3"
105
105
  },
106
106
  "peerDependencies": {
107
- "expensify-common": ">=2.0.115",
107
+ "expensify-common": ">=2.0.148",
108
108
  "react": "*",
109
109
  "react-native": "*",
110
110
  "react-native-reanimated": ">=3.17.0"
@@ -451,8 +451,9 @@ const MarkdownTextInput = React.forwardRef<MarkdownTextInput, MarkdownTextInputP
451
451
  handleContentSizeChange();
452
452
  },
453
453
  [
454
- parser,
455
454
  updateTextColor,
455
+ multiline,
456
+ maxLength,
456
457
  updateSelection,
457
458
  onChange,
458
459
  onChangeText,
@@ -461,9 +462,9 @@ const MarkdownTextInput = React.forwardRef<MarkdownTextInput, MarkdownTextInputP
461
462
  redo,
462
463
  handleFormatSelection,
463
464
  parseText,
465
+ parser,
464
466
  processedMarkdownStyle,
465
467
  setEventProps,
466
- maxLength,
467
468
  ],
468
469
  );
469
470
 
@@ -3,6 +3,20 @@ import type {ColorValue, ViewProps} from 'react-native';
3
3
  import type {Float, Int32} from 'react-native/Libraries/Types/CodegenTypes';
4
4
  import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
5
5
 
6
+ interface CodeBlockStyle {
7
+ fontFamily: string;
8
+ fontSize: Float;
9
+ color: ColorValue;
10
+ backgroundColor: ColorValue;
11
+ borderColor?: ColorValue;
12
+ borderWidth?: Float;
13
+ borderRadius?: Float;
14
+ borderStyle?: string;
15
+ padding?: Float;
16
+ paddingVertical?: Float;
17
+ paddingHorizontal?: Float;
18
+ }
19
+
6
20
  interface MarkdownStyle {
7
21
  syntax: {
8
22
  color: ColorValue;
@@ -23,18 +37,10 @@ interface MarkdownStyle {
23
37
  marginLeft: Float;
24
38
  paddingLeft: Float;
25
39
  };
26
- code: {
27
- fontFamily: string;
28
- fontSize: Float;
29
- color: ColorValue;
30
- backgroundColor: ColorValue;
31
- };
32
- pre: {
33
- fontFamily: string;
34
- fontSize: Float;
35
- color: ColorValue;
36
- backgroundColor: ColorValue;
40
+ code: CodeBlockStyle & {
41
+ h1NestedFontSize?: Float;
37
42
  };
43
+ pre: CodeBlockStyle;
38
44
  mentionHere: {
39
45
  color: ColorValue;
40
46
  backgroundColor: ColorValue;
@@ -13,7 +13,8 @@ type MarkdownType =
13
13
  | 'blockquote'
14
14
  | 'h1'
15
15
  | 'syntax'
16
- | 'inline-image';
16
+ | 'inline-image'
17
+ | 'codeblock';
17
18
 
18
19
  interface MarkdownRange {
19
20
  type: MarkdownType;
@@ -174,9 +174,11 @@ function parseTreeToTextAndRanges(tree: StackItem): [string, MarkdownRange[]] {
174
174
  } else if (node.tag === '<br />') {
175
175
  text += '\n';
176
176
  } else if (node.tag.startsWith('<pre')) {
177
- appendSyntax('```');
178
- const content = node.children.join('');
179
- addChildrenWithStyle(content, 'pre');
177
+ const [_, lb, content] = node.children.join('').match(/^(\r?\n)([\s\S]*)$/) ?? [];
178
+ // Adding opening ("```${lb}") and closing ("```") codeblock syntax length, equal to 7, to the content length
179
+ ranges.push({type: 'codeblock', start: text.length, length: (content?.length ?? 0) + 7});
180
+ appendSyntax(`\`\`\`${lb}`);
181
+ addChildrenWithStyle(`${content}`, 'pre');
180
182
  appendSyntax('```');
181
183
  } else if (node.tag.startsWith('<a href="')) {
182
184
  const rawHref = node.tag.match(/href="([^"]*)"/)![1]!; // always present
package/src/styleUtils.ts CHANGED
@@ -42,12 +42,22 @@ function makeDefaultMarkdownStyle(): MarkdownStyle {
42
42
  fontSize: 20,
43
43
  color: 'black',
44
44
  backgroundColor: 'lightgray',
45
+ borderColor: 'gray',
46
+ borderWidth: 1,
47
+ borderRadius: 4,
48
+ borderStyle: 'solid',
49
+ padding: 0,
45
50
  },
46
51
  pre: {
47
52
  fontFamily: FONT_FAMILY_MONOSPACE,
48
53
  fontSize: 20,
49
54
  color: 'black',
50
55
  backgroundColor: 'lightgray',
56
+ borderColor: 'gray',
57
+ borderWidth: 1,
58
+ borderRadius: 4,
59
+ borderStyle: 'solid',
60
+ padding: 2,
51
61
  },
52
62
  mentionHere: {
53
63
  color: 'green',
@@ -96,7 +106,10 @@ function mergeMarkdownStyleWithDefault(input: PartialMarkdownStyle | undefined):
96
106
  return output;
97
107
  }
98
108
 
99
- function parseStringWithUnitToNumber(value: string | null): number {
109
+ function parseStringWithUnitToNumber(value: string | number | null): number {
110
+ if (typeof value === 'number') {
111
+ return value;
112
+ }
100
113
  return value ? parseInt(value.replace('px', ''), 10) : 0;
101
114
  }
102
115
 
@@ -30,11 +30,34 @@
30
30
  padding-right: 1px !important;
31
31
  }
32
32
 
33
- .react-native-live-markdown-input-singleline:empty::before,
34
- .react-native-live-markdown-input-multiline:empty::before {
35
- pointer-events: none;
36
- display: block; /* For Firefox */
37
- content: attr(placeholder);
33
+ .react-native-live-markdown-input-multiline *[data-type='pre'] {
34
+ line-height: 1.3;
35
+ display: block;
36
+ width: fit-content;
37
+ max-width: 100%;
38
+ box-sizing: border-box;
39
+ }
40
+
41
+ .react-native-live-markdown-input-multiline *[data-type='codeblock'] {
42
+ position: relative;
43
+ width: fit-content;
44
+ max-width: 100%;
45
+ box-sizing: border-box;
46
+ z-index: 2;
47
+ display: block;
48
+ }
49
+
50
+ .react-native-live-markdown-input-singleline *[data-type='code'] > *[data-type='emoji'],
51
+ .react-native-live-markdown-input-multiline *[data-type='code'] > *[data-type='emoji'] {
52
+ font-size: inherit !important;
53
+ line-height: inherit !important;
54
+ vertical-align: unset !important;
55
+ }
56
+
57
+ .react-native-live-markdown-input-multiline *[data-type='line'] *[data-type='syntax']:has(+ *[data-type='pre']),
58
+ .react-native-live-markdown-input-multiline *[data-type='line'] *[data-type='pre'] + *[data-type='syntax'] {
59
+ display: block;
60
+ line-height: 1.3;
38
61
  }
39
62
 
40
63
  @keyframes react-native-live-markdown-spin {
@@ -1,5 +1,6 @@
1
- import type {MarkdownTextInputElement} from '../../MarkdownTextInput.web';
2
1
  import type {InlineImagesInputProps, MarkdownRange} from '../../commonTypes';
2
+ import type {MarkdownTextInputElement} from '../../MarkdownTextInput.web';
3
+ import {parseStringWithUnitToNumber} from '../../styleUtils';
3
4
  import type {PartialMarkdownStyle} from '../../styleUtils';
4
5
  import {addInlineImagePreview} from '../inputElements/inlineImage';
5
6
  import type {NodeType, TreeNode} from './treeUtils';
@@ -51,12 +52,9 @@ function addStyleToBlock(targetElement: HTMLElement, type: NodeType, markdownSty
51
52
  });
52
53
  break;
53
54
  case 'code':
54
- Object.assign(node.style, markdownStyle.code);
55
- break;
56
55
  case 'pre':
57
- Object.assign(node.style, markdownStyle.pre);
56
+ addCodeBlockStyles(targetElement, type, markdownStyle, isMultiline);
58
57
  break;
59
-
60
58
  case 'blockquote':
61
59
  Object.assign(node.style, {
62
60
  ...markdownStyle.blockquote,
@@ -94,9 +92,49 @@ function addStyleToBlock(targetElement: HTMLElement, type: NodeType, markdownSty
94
92
  }
95
93
  }
96
94
 
95
+ function addCodeBlockStyles(targetElement: HTMLElement, type: NodeType, markdownStyle: PartialMarkdownStyle, isMultiline = true) {
96
+ const node = targetElement;
97
+
98
+ const defaultPrePadding = markdownStyle.pre?.padding ?? 2;
99
+ const preHorizontalPadding = parseStringWithUnitToNumber(markdownStyle.pre?.paddingHorizontal ?? defaultPrePadding).toString();
100
+ const preVerticalPadding = parseStringWithUnitToNumber(markdownStyle.pre?.paddingVertical ?? defaultPrePadding).toString();
101
+
102
+ const defaultCodePadding = markdownStyle.code?.padding ?? 0;
103
+ const codeHorizontalPadding = parseStringWithUnitToNumber(markdownStyle.code?.paddingHorizontal ?? defaultCodePadding).toString();
104
+ const codeVerticalPadding = parseStringWithUnitToNumber(markdownStyle.code?.paddingVertical ?? defaultCodePadding).toString();
105
+
106
+ switch (type) {
107
+ case 'code':
108
+ Object.assign(node.style, {
109
+ ...markdownStyle.code,
110
+ fontSize: markdownStyle.code?.h1NestedFontSize && isChildOfMarkdownElement(node, 'h1') ? markdownStyle.code.h1NestedFontSize : markdownStyle.code?.fontSize,
111
+ padding: `${codeVerticalPadding}px ${codeHorizontalPadding}px`,
112
+ lineHeight: 1.5,
113
+ });
114
+ break;
115
+ case 'pre':
116
+ // In multiline style the pre block using pseudoelements, otherwise default to inline
117
+ if (isMultiline) {
118
+ Object.assign(node.style, {
119
+ ...markdownStyle.pre,
120
+ padding: `${preVerticalPadding}px ${preHorizontalPadding}px`,
121
+ });
122
+ } else {
123
+ Object.assign(node.style, {
124
+ ...markdownStyle.code,
125
+ padding: `${codeVerticalPadding}px ${codeHorizontalPadding}px`,
126
+ lineHeight: 1.5,
127
+ });
128
+ }
129
+ break;
130
+ default:
131
+ break;
132
+ }
133
+ }
134
+
97
135
  const BLOCK_MARKDOWN_TYPES = ['inline-image'];
98
136
  const FULL_LINE_MARKDOWN_TYPES = ['blockquote'];
99
- const MULTILINE_MARKDOWN_TYPES = ['pre'];
137
+ const MULTILINE_MARKDOWN_TYPES = ['codeblock'];
100
138
 
101
139
  function isBlockMarkdownType(type: NodeType) {
102
140
  return BLOCK_MARKDOWN_TYPES.includes(type);
@@ -108,7 +146,7 @@ function isMultilineMarkdownType(type: NodeType) {
108
146
 
109
147
  function getFirstBlockMarkdownRange(ranges: MarkdownRange[]) {
110
148
  const blockMarkdownRange = ranges.find((r) => isBlockMarkdownType(r.type) || FULL_LINE_MARKDOWN_TYPES.includes(r.type));
111
- return FULL_LINE_MARKDOWN_TYPES.includes(blockMarkdownRange?.type || '') ? undefined : blockMarkdownRange;
149
+ return blockMarkdownRange && FULL_LINE_MARKDOWN_TYPES.includes(blockMarkdownRange.type) ? undefined : blockMarkdownRange;
112
150
  }
113
151
 
114
152
  function extendBlockStructure(
@@ -130,4 +168,32 @@ function extendBlockStructure(
130
168
  return targetNode;
131
169
  }
132
170
 
133
- export {addStyleToBlock, extendBlockStructure, isBlockMarkdownType, isMultilineMarkdownType, getFirstBlockMarkdownRange};
171
+ function isDescendantOfMarkdownElement(node: HTMLElement, predicate: (type: string | null) => boolean): boolean {
172
+ let currentNode = node.parentNode;
173
+ while (currentNode && (currentNode as HTMLElement)?.contentEditable !== 'true') {
174
+ const elementType = (currentNode as HTMLElement).getAttribute?.('data-type');
175
+ if (predicate(elementType)) {
176
+ return true;
177
+ }
178
+ currentNode = currentNode.parentNode;
179
+ }
180
+ return false;
181
+ }
182
+
183
+ function isChildOfMarkdownElement(node: HTMLElement, elementType: NodeType): boolean {
184
+ return isDescendantOfMarkdownElement(node, (type) => type === elementType);
185
+ }
186
+ function isChildOfMultilineMarkdownElement(node: HTMLElement): boolean {
187
+ return isDescendantOfMarkdownElement(node, (type) => MULTILINE_MARKDOWN_TYPES.includes(type as NodeType));
188
+ }
189
+
190
+ export {
191
+ addStyleToBlock,
192
+ extendBlockStructure,
193
+ isBlockMarkdownType,
194
+ isMultilineMarkdownType,
195
+ getFirstBlockMarkdownRange,
196
+ isChildOfMarkdownElement,
197
+ isChildOfMultilineMarkdownElement,
198
+ MULTILINE_MARKDOWN_TYPES,
199
+ };