@expensify/react-native-live-markdown 0.1.116 → 0.1.117

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 (90) hide show
  1. package/lib/commonjs/MarkdownTextInput.js +2 -4
  2. package/lib/commonjs/MarkdownTextInput.js.map +1 -1
  3. package/lib/commonjs/MarkdownTextInput.web.js +105 -149
  4. package/lib/commonjs/MarkdownTextInput.web.js.map +1 -1
  5. package/lib/commonjs/styleUtils.js.map +1 -1
  6. package/lib/commonjs/web/utils/blockUtils.js +77 -0
  7. package/lib/commonjs/web/utils/blockUtils.js.map +1 -0
  8. package/lib/commonjs/web/utils/browserUtils.js +18 -0
  9. package/lib/commonjs/web/utils/browserUtils.js.map +1 -0
  10. package/lib/commonjs/web/utils/cursorUtils.js +111 -0
  11. package/lib/commonjs/web/utils/cursorUtils.js.map +1 -0
  12. package/lib/commonjs/web/utils/inputUtils.js +108 -0
  13. package/lib/commonjs/web/utils/inputUtils.js.map +1 -0
  14. package/lib/commonjs/web/utils/parserUtils.js +266 -0
  15. package/lib/commonjs/web/utils/parserUtils.js.map +1 -0
  16. package/lib/commonjs/web/utils/treeUtils.js +85 -0
  17. package/lib/commonjs/web/utils/treeUtils.js.map +1 -0
  18. package/lib/commonjs/web/utils/webStyleUtils.js +51 -0
  19. package/lib/commonjs/web/utils/webStyleUtils.js.map +1 -0
  20. package/lib/module/MarkdownTextInput.js +2 -2
  21. package/lib/module/MarkdownTextInput.js.map +1 -1
  22. package/lib/module/MarkdownTextInput.web.js +101 -145
  23. package/lib/module/MarkdownTextInput.web.js.map +1 -1
  24. package/lib/module/styleUtils.js.map +1 -1
  25. package/lib/module/web/utils/blockUtils.js +72 -0
  26. package/lib/module/web/utils/blockUtils.js.map +1 -0
  27. package/lib/module/web/utils/browserUtils.js +12 -0
  28. package/lib/module/web/utils/browserUtils.js.map +1 -0
  29. package/lib/module/web/utils/cursorUtils.js +102 -0
  30. package/lib/module/web/utils/cursorUtils.js.map +1 -0
  31. package/lib/module/web/utils/inputUtils.js +99 -0
  32. package/lib/module/web/utils/inputUtils.js.map +1 -0
  33. package/lib/module/web/utils/parserUtils.js +260 -0
  34. package/lib/module/web/utils/parserUtils.js.map +1 -0
  35. package/lib/module/web/utils/treeUtils.js +78 -0
  36. package/lib/module/web/utils/treeUtils.js.map +1 -0
  37. package/lib/module/web/utils/webStyleUtils.js +45 -0
  38. package/lib/module/web/utils/webStyleUtils.js.map +1 -0
  39. package/lib/typescript/src/MarkdownTextInput.d.ts +1 -2
  40. package/lib/typescript/src/MarkdownTextInput.d.ts.map +1 -1
  41. package/lib/typescript/src/MarkdownTextInput.web.d.ts +9 -3
  42. package/lib/typescript/src/MarkdownTextInput.web.d.ts.map +1 -1
  43. package/lib/typescript/src/styleUtils.d.ts +1 -2
  44. package/lib/typescript/src/styleUtils.d.ts.map +1 -1
  45. package/lib/typescript/src/web/utils/blockUtils.d.ts +5 -0
  46. package/lib/typescript/src/web/utils/blockUtils.d.ts.map +1 -0
  47. package/lib/typescript/src/web/utils/browserUtils.d.ts +12 -0
  48. package/lib/typescript/src/web/utils/browserUtils.d.ts.map +1 -0
  49. package/lib/typescript/src/web/utils/cursorUtils.d.ts +12 -0
  50. package/lib/typescript/src/web/utils/cursorUtils.d.ts.map +1 -0
  51. package/lib/typescript/src/web/utils/inputUtils.d.ts +9 -0
  52. package/lib/typescript/src/web/utils/inputUtils.d.ts.map +1 -0
  53. package/lib/typescript/src/web/utils/parserUtils.d.ts +22 -0
  54. package/lib/typescript/src/web/utils/parserUtils.d.ts.map +1 -0
  55. package/lib/typescript/src/web/utils/treeUtils.d.ts +17 -0
  56. package/lib/typescript/src/web/utils/treeUtils.d.ts.map +1 -0
  57. package/lib/typescript/src/web/utils/webStyleUtils.d.ts +6 -0
  58. package/lib/typescript/src/web/utils/webStyleUtils.d.ts.map +1 -0
  59. package/package.json +1 -1
  60. package/src/MarkdownTextInput.tsx +4 -7
  61. package/src/MarkdownTextInput.web.tsx +142 -171
  62. package/src/styleUtils.ts +1 -3
  63. package/src/web/utils/blockUtils.ts +72 -0
  64. package/src/web/utils/browserUtils.ts +13 -0
  65. package/src/web/utils/cursorUtils.ts +116 -0
  66. package/src/web/utils/inputUtils.ts +106 -0
  67. package/src/web/utils/parserUtils.ts +302 -0
  68. package/src/web/utils/treeUtils.ts +103 -0
  69. package/src/web/utils/webStyleUtils.ts +54 -0
  70. package/lib/commonjs/web/browserUtils.js +0 -16
  71. package/lib/commonjs/web/browserUtils.js.map +0 -1
  72. package/lib/commonjs/web/cursorUtils.js +0 -167
  73. package/lib/commonjs/web/cursorUtils.js.map +0 -1
  74. package/lib/commonjs/web/parserUtils.js +0 -214
  75. package/lib/commonjs/web/parserUtils.js.map +0 -1
  76. package/lib/module/web/browserUtils.js +0 -11
  77. package/lib/module/web/browserUtils.js.map +0 -1
  78. package/lib/module/web/cursorUtils.js +0 -154
  79. package/lib/module/web/cursorUtils.js.map +0 -1
  80. package/lib/module/web/parserUtils.js +0 -206
  81. package/lib/module/web/parserUtils.js.map +0 -1
  82. package/lib/typescript/src/web/browserUtils.d.ts +0 -10
  83. package/lib/typescript/src/web/browserUtils.d.ts.map +0 -1
  84. package/lib/typescript/src/web/cursorUtils.d.ts +0 -12
  85. package/lib/typescript/src/web/cursorUtils.d.ts.map +0 -1
  86. package/lib/typescript/src/web/parserUtils.d.ts +0 -17
  87. package/lib/typescript/src/web/parserUtils.d.ts.map +0 -1
  88. package/src/web/browserUtils.ts +0 -11
  89. package/src/web/cursorUtils.ts +0 -177
  90. package/src/web/parserUtils.ts +0 -228
@@ -0,0 +1,45 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+
3
+ import { mergeMarkdownStyleWithDefault } from '../../styleUtils';
4
+ let createReactDOMStyle;
5
+ try {
6
+ createReactDOMStyle =
7
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
8
+ require('react-native-web/dist/exports/StyleSheet/compiler/createReactDOMStyle').default;
9
+ } catch (e) {
10
+ throw new Error('[react-native-live-markdown] Function `createReactDOMStyle` from react-native-web not found. Please make sure that you are using React Native Web 0.18 or newer.');
11
+ }
12
+ let preprocessStyle;
13
+ try {
14
+ preprocessStyle =
15
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
16
+ require('react-native-web/dist/exports/StyleSheet/preprocess').default;
17
+ } catch (e) {
18
+ throw new Error('[react-native-live-markdown] Function `preprocessStyle` from react-native-web not found.');
19
+ }
20
+ let dangerousStyleValue;
21
+ try {
22
+ dangerousStyleValue =
23
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
24
+ require('react-native-web/dist/modules/setValueForStyles/dangerousStyleValue').default;
25
+ } catch (e) {
26
+ throw new Error('[react-native-live-markdown] Function `dangerousStyleValue` from react-native-web not found.');
27
+ }
28
+ function processUnitsInMarkdownStyle(input) {
29
+ const output = JSON.parse(JSON.stringify(input));
30
+ Object.keys(output).forEach(key => {
31
+ const obj = output[key];
32
+ Object.keys(obj).forEach(prop => {
33
+ obj[prop] = dangerousStyleValue(prop, obj[prop], false);
34
+ });
35
+ });
36
+ return output;
37
+ }
38
+ function processMarkdownStyle(input) {
39
+ return processUnitsInMarkdownStyle(mergeMarkdownStyleWithDefault(input));
40
+ }
41
+ function parseToReactDOMStyle(style) {
42
+ return createReactDOMStyle(preprocessStyle(style));
43
+ }
44
+ export { parseToReactDOMStyle, processMarkdownStyle };
45
+ //# sourceMappingURL=webStyleUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mergeMarkdownStyleWithDefault","createReactDOMStyle","require","default","e","Error","preprocessStyle","dangerousStyleValue","processUnitsInMarkdownStyle","input","output","JSON","parse","stringify","Object","keys","forEach","key","obj","prop","processMarkdownStyle","parseToReactDOMStyle","style"],"sourceRoot":"../../../../src","sources":["web/utils/webStyleUtils.ts"],"mappings":"AAAA;;AAGA,SAAQA,6BAA6B,QAAO,kBAAkB;AAE9D,IAAIC,mBAAwC;AAC5C,IAAI;EACFA,mBAAmB;EACjB;EACAC,OAAO,CAAC,uEAAuE,CAAC,CAACC,OAAO;AAC5F,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV,MAAM,IAAIC,KAAK,CAAC,kKAAkK,CAAC;AACrL;AAEA,IAAIC,eAAoC;AACxC,IAAI;EACFA,eAAe;EACb;EACAJ,OAAO,CAAC,qDAAqD,CAAC,CAACC,OAAO;AAC1E,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV,MAAM,IAAIC,KAAK,CAAC,0FAA0F,CAAC;AAC7G;AAEA,IAAIE,mBAAiF;AACrF,IAAI;EACFA,mBAAmB;EACjB;EACAL,OAAO,CAAC,qEAAqE,CAAC,CAACC,OAAO;AAC1F,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV,MAAM,IAAIC,KAAK,CAAC,8FAA8F,CAAC;AACjH;AAEA,SAASG,2BAA2BA,CAACC,KAAoB,EAAiB;EACxE,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;MACjCD,GAAG,CAACC,IAAI,CAAC,GAAGZ,mBAAmB,CAACY,IAAI,EAAED,GAAG,CAACC,IAAI,CAAC,EAAE,KAAK,CAAC;IACzD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,OAAOT,MAAM;AACf;AAEA,SAASU,oBAAoBA,CAACX,KAAgC,EAAiB;EAC7E,OAAOD,2BAA2B,CAACR,6BAA6B,CAACS,KAAK,CAAC,CAAC;AAC1E;AAEA,SAASY,oBAAoBA,CAACC,KAAgB,EAAO;EACnD,OAAOrB,mBAAmB,CAACK,eAAe,CAACgB,KAAK,CAAC,CAAC;AACpD;AAEA,SAAQD,oBAAoB,EAAED,oBAAoB"}
@@ -1,8 +1,7 @@
1
1
  import { TextInput } from 'react-native';
2
2
  import React from 'react';
3
3
  import type { TextInputProps } from 'react-native';
4
- import type * as StyleUtilsTypes from './styleUtils';
5
- type PartialMarkdownStyle = StyleUtilsTypes.PartialMarkdownStyle;
4
+ import type { PartialMarkdownStyle } from './styleUtils';
6
5
  interface MarkdownTextInputProps extends TextInputProps {
7
6
  markdownStyle?: PartialMarkdownStyle;
8
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownTextInput.d.ts","sourceRoot":"","sources":["../../../src/MarkdownTextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAe,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAKjD,OAAO,KAAK,KAAK,eAAe,MAAM,cAAc,CAAC;AAMrD,KAAK,oBAAoB,GAAG,eAAe,CAAC,oBAAoB,CAAC;AAGjE,UAAU,sBAAuB,SAAQ,cAAc;IACrD,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAuBD,QAAA,MAAM,iBAAiB,0FAiBrB,CAAC;AAaH,YAAY,EAAC,oBAAoB,IAAI,aAAa,EAAE,sBAAsB,EAAC,CAAC;AAE5E,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"MarkdownTextInput.d.ts","sourceRoot":"","sources":["../../../src/MarkdownTextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAe,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAKjD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,cAAc,CAAC;AAMvD,UAAU,sBAAuB,SAAQ,cAAc;IACrD,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAuBD,QAAA,MAAM,iBAAiB,0FAiBrB,CAAC;AAaH,YAAY,EAAC,oBAAoB,IAAI,aAAa,EAAE,sBAAsB,EAAC,CAAC;AAE5E,eAAe,iBAAiB,CAAC"}
@@ -1,16 +1,22 @@
1
1
  import type { TextInput, TextInputProps } from 'react-native';
2
2
  import React from 'react';
3
3
  import type { MouseEvent } from 'react';
4
- import type * as MarkdownTextInputDecoratorViewNativeComponent from './MarkdownTextInputDecoratorViewNativeComponent';
4
+ import type { TreeNode } from './web/utils/treeUtils';
5
5
  import './web/MarkdownTextInput.css';
6
- type MarkdownStyle = MarkdownTextInputDecoratorViewNativeComponent.MarkdownStyle;
6
+ import type { MarkdownStyle } from './MarkdownTextInputDecoratorViewNativeComponent';
7
7
  interface MarkdownTextInputProps extends TextInputProps {
8
8
  markdownStyle?: MarkdownStyle;
9
9
  onClick?: (e: MouseEvent<HTMLDivElement>) => void;
10
10
  dir?: string;
11
11
  disabled?: boolean;
12
12
  }
13
+ type MarkdownTextInputElement = HTMLDivElement & HTMLInputElement & {
14
+ tree: TreeNode;
15
+ };
16
+ type HTMLMarkdownElement = HTMLElement & {
17
+ value: string;
18
+ };
13
19
  declare const MarkdownTextInput: React.ForwardRefExoticComponent<MarkdownTextInputProps & React.RefAttributes<TextInput>>;
14
20
  export default MarkdownTextInput;
15
- export type { MarkdownTextInputProps };
21
+ export type { MarkdownTextInputProps, MarkdownTextInputElement, HTMLMarkdownElement };
16
22
  //# sourceMappingURL=MarkdownTextInput.web.d.ts.map
@@ -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,EAIf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAiE,MAAM,OAAO,CAAC;AACtF,OAAO,KAAK,EAAwE,UAAU,EAAgC,MAAM,OAAO,CAAC;AAK5I,OAAO,KAAK,KAAK,6CAA6C,MAAM,iDAAiD,CAAC;AACtH,OAAO,6BAA6B,CAAC;AAkCrC,KAAK,aAAa,GAAG,6CAA6C,CAAC,aAAa,CAAC;AAEjF,UAAU,sBAAuB,SAAQ,cAAc;IACrD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,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;AAgFD,QAAA,MAAM,iBAAiB,0FAsjBtB,CAAC;AAqBF,eAAe,iBAAiB,CAAC;AAEjC,YAAY,EAAC,sBAAsB,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,EAIf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAiE,MAAM,OAAO,CAAC;AACtF,OAAO,KAAK,EAAwE,UAAU,EAAuD,MAAM,OAAO,CAAC;AAInK,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iDAAiD,CAAC;AAQnF,UAAU,sBAAuB,SAAQ,cAAc;IACrD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,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;AAuBD,KAAK,wBAAwB,GAAG,cAAc,GAC5C,gBAAgB,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEJ,KAAK,mBAAmB,GAAG,WAAW,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,QAAA,MAAM,iBAAiB,0FAomBtB,CAAC;AAqBF,eAAe,iBAAiB,CAAC;AAEjC,YAAY,EAAC,sBAAsB,EAAE,wBAAwB,EAAE,mBAAmB,EAAC,CAAC"}
@@ -1,5 +1,4 @@
1
- import type * as MarkdownTextInputDecoractorView from './MarkdownTextInputDecoratorViewNativeComponent';
2
- type MarkdownStyle = MarkdownTextInputDecoractorView.MarkdownStyle;
1
+ import type { MarkdownStyle } from './MarkdownTextInputDecoratorViewNativeComponent';
3
2
  type PartialMarkdownStyle = Partial<{
4
3
  [K in keyof MarkdownStyle]: Partial<MarkdownStyle[K]>;
5
4
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"styleUtils.d.ts","sourceRoot":"","sources":["../../../src/styleUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,+BAA+B,MAAM,iDAAiD,CAAC;AAExG,KAAK,aAAa,GAAG,+BAA+B,CAAC,aAAa,CAAC;AAEnE,KAAK,oBAAoB,GAAG,OAAO,CAAC;KACjC,CAAC,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC,CAAC;AAsDH,iBAAS,6BAA6B,CAAC,KAAK,EAAE,oBAAoB,GAAG,SAAS,GAAG,aAAa,CAa7F;AAED,YAAY,EAAC,oBAAoB,EAAC,CAAC;AAEnC,OAAO,EAAC,6BAA6B,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;AAsDH,iBAAS,6BAA6B,CAAC,KAAK,EAAE,oBAAoB,GAAG,SAAS,GAAG,aAAa,CAa7F;AAED,YAAY,EAAC,oBAAoB,EAAC,CAAC;AAEnC,OAAO,EAAC,6BAA6B,EAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { PartialMarkdownStyle } from '../../styleUtils';
2
+ import type { NodeType } from './treeUtils';
3
+ declare function addStyleToBlock(targetElement: HTMLElement, type: NodeType, markdownStyle: PartialMarkdownStyle): void;
4
+ export { addStyleToBlock };
5
+ //# sourceMappingURL=blockUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/blockUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAE1C,iBAAS,eAAe,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,oBAAoB,QAiEvG;AAGD,OAAO,EAAC,eAAe,EAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ declare const BrowserUtils: {
2
+ isFirefox: boolean;
3
+ isChromium: boolean;
4
+ /**
5
+ * Whether the platform is a mobile browser.
6
+ * Copied from Expensify App https://github.com/Expensify/App/blob/90dee7accae79c49debf30354c160cab6c52c423/src/libs/Browser/index.website.ts#L41
7
+ *
8
+ */
9
+ isMobile: boolean;
10
+ };
11
+ export default BrowserUtils;
12
+ //# sourceMappingURL=browserUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/browserUtils.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,YAAY;;;IAIhB;;;;OAIG;;CAEJ,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { MarkdownTextInputElement } from '../../MarkdownTextInput.web';
2
+ import type { TreeNode } from './treeUtils';
3
+ declare function setCursorPosition(target: MarkdownTextInputElement, startIndex: number, endIndex?: number | null): void;
4
+ declare function scrollIntoView(node: TreeNode): void;
5
+ declare function moveCursorToEnd(target: HTMLElement): void;
6
+ declare function getCurrentCursorPosition(target: MarkdownTextInputElement): {
7
+ start: number;
8
+ end: number;
9
+ } | null;
10
+ declare function removeSelection(): void;
11
+ export { getCurrentCursorPosition, moveCursorToEnd, setCursorPosition, removeSelection, scrollIntoView };
12
+ //# sourceMappingURL=cursorUtils.d.ts.map
@@ -0,0 +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,QA4C9G;AAED,iBAAS,cAAc,CAAC,IAAI,EAAE,QAAQ,QAWrC;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"}
@@ -0,0 +1,9 @@
1
+ import type { CSSProperties } from 'react';
2
+ import type { MarkdownTextInputElement } from '../../MarkdownTextInput.web';
3
+ declare function isEventComposing(nativeEvent: globalThis.KeyboardEvent): boolean;
4
+ declare function getPlaceholderValue(placeholder: string | undefined): string;
5
+ declare function getElementHeight(node: HTMLDivElement, styles: CSSProperties, numberOfLines: number | undefined): string;
6
+ declare function normalizeValue(value: string): string;
7
+ declare function parseInnerHTMLToText(target: MarkdownTextInputElement): string;
8
+ export { isEventComposing, getPlaceholderValue, getElementHeight, parseInnerHTMLToText, normalizeValue };
9
+ //# sourceMappingURL=inputUtils.d.ts.map
@@ -0,0 +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,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAM1E,iBAAS,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,aAAa,WAE9D;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,GAAG,MAAM,CAgEtE;AAED,OAAO,EAAC,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { HTMLMarkdownElement, MarkdownTextInputElement } from '../../MarkdownTextInput.web';
2
+ import type { TreeNode } from './treeUtils';
3
+ import type { PartialMarkdownStyle } from '../../styleUtils';
4
+ type MarkdownType = 'bold' | 'italic' | 'strikethrough' | 'emoji' | 'link' | 'code' | 'pre' | 'blockquote' | 'h1' | 'syntax' | 'mention-here' | 'mention-user' | 'mention-report';
5
+ type MarkdownRange = {
6
+ type: MarkdownType;
7
+ start: number;
8
+ length: number;
9
+ depth?: number;
10
+ };
11
+ /** Builds HTML DOM structure based on passed text and markdown ranges */
12
+ declare function parseRangesToHTMLNodes(text: string, ranges: MarkdownRange[], markdownStyle?: PartialMarkdownStyle, disableInlineStyles?: boolean): {
13
+ dom: HTMLMarkdownElement;
14
+ tree: TreeNode;
15
+ };
16
+ declare function updateInputStructure(target: MarkdownTextInputElement, text: string, cursorPositionIndex: number | null, markdownStyle?: PartialMarkdownStyle, alwaysMoveCursorToTheEnd?: boolean, shouldForceDOMUpdate?: boolean): {
17
+ text: string;
18
+ cursorPosition: number;
19
+ };
20
+ export { updateInputStructure, parseRangesToHTMLNodes };
21
+ export type { MarkdownRange, MarkdownType };
22
+ //# sourceMappingURL=parserUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parserUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/parserUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAE,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAE/F,OAAO,KAAK,EAAW,QAAQ,EAAC,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAI3D,KAAK,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,GAAG,IAAI,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAElL,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;AAmIF,yEAAyE;AACzE,iBAAS,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,aAAa,GAAE,oBAAyB,EAAE,mBAAmB,UAAQ;;;EAiG3I;AAaD,iBAAS,oBAAoB,CAC3B,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,MAAM,EACZ,mBAAmB,EAAE,MAAM,GAAG,IAAI,EAClC,aAAa,GAAE,oBAAyB,EACxC,wBAAwB,UAAQ,EAChC,oBAAoB,UAAQ;;;EAmC7B;AAED,OAAO,EAAC,oBAAoB,EAAE,sBAAsB,EAAC,CAAC;AAEtD,YAAY,EAAC,aAAa,EAAE,YAAY,EAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { HTMLMarkdownElement } from '../../MarkdownTextInput.web';
2
+ import type { MarkdownRange, MarkdownType } from './parserUtils';
3
+ type NodeType = MarkdownType | 'line' | 'text' | 'br' | 'root';
4
+ type TreeNode = Omit<MarkdownRange, 'type'> & {
5
+ element: HTMLMarkdownElement;
6
+ parentNode: TreeNode | null;
7
+ childNodes: TreeNode[];
8
+ type: NodeType;
9
+ orderIndex: string;
10
+ isGeneratingNewline: boolean;
11
+ };
12
+ declare function addNodeToTree(element: HTMLMarkdownElement, parentTreeNode: TreeNode, type: NodeType, length?: number | null): TreeNode;
13
+ declare function findHTMLElementInTree(treeRoot: TreeNode, element: HTMLElement): TreeNode | null;
14
+ declare function getTreeNodeByIndex(treeRoot: TreeNode, index: number): TreeNode | null;
15
+ export { addNodeToTree, findHTMLElementInTree, getTreeNodeByIndex };
16
+ export type { TreeNode, NodeType };
17
+ //# sourceMappingURL=treeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/treeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAE/D,KAAK,QAAQ,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAE/D,KAAK,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG;IAC5C,OAAO,EAAE,mBAAmB,CAAC;IAC7B,UAAU,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,iBAAS,aAAa,CAAC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAE,MAAM,GAAG,IAAW,YA2B1H;AAED,iBAAS,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,QAAQ,GAAG,IAAI,CAuBxF;AAED,iBAAS,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CA8B9E;AAED,OAAO,EAAC,aAAa,EAAE,qBAAqB,EAAE,kBAAkB,EAAC,CAAC;AAElE,YAAY,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { TextStyle } from 'react-native';
2
+ import type { MarkdownStyle } from '../../MarkdownTextInputDecoratorViewNativeComponent';
3
+ declare function processMarkdownStyle(input: MarkdownStyle | undefined): MarkdownStyle;
4
+ declare function parseToReactDOMStyle(style: TextStyle): any;
5
+ export { parseToReactDOMStyle, processMarkdownStyle };
6
+ //# sourceMappingURL=webStyleUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webStyleUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/webStyleUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qDAAqD,CAAC;AA2CvF,iBAAS,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,aAAa,CAE7E;AAED,iBAAS,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG,CAEnD;AAED,OAAO,EAAC,oBAAoB,EAAE,oBAAoB,EAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expensify/react-native-live-markdown",
3
- "version": "0.1.116",
3
+ "version": "0.1.117",
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",
@@ -2,18 +2,15 @@ import {StyleSheet, TextInput, processColor} from 'react-native';
2
2
  import React from 'react';
3
3
  import type {TextInputProps} from 'react-native';
4
4
  import MarkdownTextInputDecoratorViewNativeComponent from './MarkdownTextInputDecoratorViewNativeComponent';
5
+ import type {MarkdownStyle} from './MarkdownTextInputDecoratorViewNativeComponent';
5
6
  import NativeLiveMarkdownModule from './NativeLiveMarkdownModule';
6
- import type * as MarkdownTextInputDecoratorViewNativeComponentTypes from './MarkdownTextInputDecoratorViewNativeComponent';
7
- import * as StyleUtils from './styleUtils';
8
- import type * as StyleUtilsTypes from './styleUtils';
7
+ import {mergeMarkdownStyleWithDefault} from './styleUtils';
8
+ import type {PartialMarkdownStyle} from './styleUtils';
9
9
 
10
10
  if (NativeLiveMarkdownModule) {
11
11
  NativeLiveMarkdownModule.install();
12
12
  }
13
13
 
14
- type PartialMarkdownStyle = StyleUtilsTypes.PartialMarkdownStyle;
15
- type MarkdownStyle = MarkdownTextInputDecoratorViewNativeComponentTypes.MarkdownStyle;
16
-
17
14
  interface MarkdownTextInputProps extends TextInputProps {
18
15
  markdownStyle?: PartialMarkdownStyle;
19
16
  }
@@ -36,7 +33,7 @@ function processColorsInMarkdownStyle(input: MarkdownStyle): MarkdownStyle {
36
33
  }
37
34
 
38
35
  function processMarkdownStyle(input: PartialMarkdownStyle | undefined): MarkdownStyle {
39
- return processColorsInMarkdownStyle(StyleUtils.mergeMarkdownStyleWithDefault(input));
36
+ return processColorsInMarkdownStyle(mergeMarkdownStyleWithDefault(input));
40
37
  }
41
38
 
42
39
  const MarkdownTextInput = React.forwardRef<TextInput, MarkdownTextInputProps>((props, ref) => {