@fendent/react-native-enriched 0.5.2-fork.1

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 (278) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +343 -0
  3. package/ReactNativeEnriched.podspec +31 -0
  4. package/android/build.gradle +106 -0
  5. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerDelegate.java +197 -0
  6. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerInterface.java +72 -0
  7. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ComponentDescriptors.cpp +22 -0
  8. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ComponentDescriptors.h +24 -0
  9. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.cpp +434 -0
  10. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.h +391 -0
  11. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/Props.cpp +173 -0
  12. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/Props.h +833 -0
  13. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ShadowNodes.cpp +17 -0
  14. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ShadowNodes.h +23 -0
  15. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/States.cpp +16 -0
  16. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/States.h +20 -0
  17. package/android/gradle.properties +5 -0
  18. package/android/lint.gradle +70 -0
  19. package/android/src/main/AndroidManifest.xml +3 -0
  20. package/android/src/main/AndroidManifestNew.xml +2 -0
  21. package/android/src/main/java/com/swmansion/enriched/ReactNativeEnrichedPackage.kt +20 -0
  22. package/android/src/main/java/com/swmansion/enriched/common/AsyncDrawable.kt +126 -0
  23. package/android/src/main/java/com/swmansion/enriched/common/CheckboxDrawable.kt +81 -0
  24. package/android/src/main/java/com/swmansion/enriched/common/EnrichedConstants.kt +11 -0
  25. package/android/src/main/java/com/swmansion/enriched/common/EnrichedStyle.kt +57 -0
  26. package/android/src/main/java/com/swmansion/enriched/common/ForceRedrawSpan.kt +14 -0
  27. package/android/src/main/java/com/swmansion/enriched/common/GumboNormalizer.kt +5 -0
  28. package/android/src/main/java/com/swmansion/enriched/common/MentionStyle.kt +7 -0
  29. package/android/src/main/java/com/swmansion/enriched/common/ResourceManager.kt +26 -0
  30. package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java +956 -0
  31. package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedSpanFactory.kt +79 -0
  32. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedBlockQuoteSpan.kt +53 -0
  33. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedBoldSpan.kt +12 -0
  34. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedCheckboxListSpan.kt +92 -0
  35. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedCodeBlockSpan.kt +81 -0
  36. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH1Span.kt +20 -0
  37. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH2Span.kt +20 -0
  38. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH3Span.kt +20 -0
  39. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH4Span.kt +21 -0
  40. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH5Span.kt +20 -0
  41. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH6Span.kt +20 -0
  42. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedImageSpan.kt +184 -0
  43. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedInlineCodeSpan.kt +24 -0
  44. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedItalicSpan.kt +12 -0
  45. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedLinkSpan.kt +29 -0
  46. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedMentionSpan.kt +35 -0
  47. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedOrderedListSpan.kt +79 -0
  48. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedStrikeThroughSpan.kt +11 -0
  49. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedUnderlineSpan.kt +11 -0
  50. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedUnorderedListSpan.kt +62 -0
  51. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedBlockSpan.kt +5 -0
  52. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedHeadingSpan.kt +3 -0
  53. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedInlineSpan.kt +3 -0
  54. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedParagraphSpan.kt +5 -0
  55. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedSpan.kt +3 -0
  56. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedZeroWidthSpaceSpan.kt +4 -0
  57. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputConnectionWrapper.kt +140 -0
  58. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputSpannableFactory.kt +83 -0
  59. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt +1120 -0
  60. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputViewLayoutManager.kt +27 -0
  61. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputViewManager.kt +478 -0
  62. package/android/src/main/java/com/swmansion/enriched/textinput/MeasurementStore.kt +225 -0
  63. package/android/src/main/java/com/swmansion/enriched/textinput/events/MentionHandler.kt +55 -0
  64. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeHtmlEvent.kt +27 -0
  65. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeSelectionEvent.kt +30 -0
  66. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeStateEvent.kt +21 -0
  67. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeTextEvent.kt +30 -0
  68. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnContextMenuItemPressEvent.kt +35 -0
  69. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputBlurEvent.kt +25 -0
  70. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputFocusEvent.kt +25 -0
  71. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputKeyPressEvent.kt +27 -0
  72. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnLinkDetectedEvent.kt +32 -0
  73. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnMentionDetectedEvent.kt +30 -0
  74. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnMentionEvent.kt +34 -0
  75. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnPasteImagesEvent.kt +47 -0
  76. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnRequestHtmlResultEvent.kt +32 -0
  77. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnSubmitEditingEvent.kt +29 -0
  78. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputBlockQuoteSpan.kt +14 -0
  79. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputBoldSpan.kt +14 -0
  80. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputCheckboxListSpan.kt +15 -0
  81. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputCodeBlockSpan.kt +14 -0
  82. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH1Span.kt +14 -0
  83. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH2Span.kt +14 -0
  84. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH3Span.kt +14 -0
  85. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH4Span.kt +14 -0
  86. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH5Span.kt +14 -0
  87. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH6Span.kt +14 -0
  88. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputImageSpan.kt +36 -0
  89. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputInlineCodeSpan.kt +14 -0
  90. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputItalicSpan.kt +14 -0
  91. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputLinkSpan.kt +16 -0
  92. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputMentionSpan.kt +18 -0
  93. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputOrderedListSpan.kt +21 -0
  94. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputStrikeThroughSpan.kt +14 -0
  95. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputUnderlineSpan.kt +14 -0
  96. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputUnorderedListSpan.kt +14 -0
  97. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedLineHeightSpan.kt +44 -0
  98. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedSpans.kt +241 -0
  99. package/android/src/main/java/com/swmansion/enriched/textinput/spans/interfaces/EnrichedInputSpan.kt +10 -0
  100. package/android/src/main/java/com/swmansion/enriched/textinput/styles/HtmlStyle.kt +372 -0
  101. package/android/src/main/java/com/swmansion/enriched/textinput/styles/InlineStyles.kt +164 -0
  102. package/android/src/main/java/com/swmansion/enriched/textinput/styles/ListStyles.kt +263 -0
  103. package/android/src/main/java/com/swmansion/enriched/textinput/styles/ParagraphStyles.kt +434 -0
  104. package/android/src/main/java/com/swmansion/enriched/textinput/styles/ParametrizedStyles.kt +394 -0
  105. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedEditableFactory.kt +17 -0
  106. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSelection.kt +320 -0
  107. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpanState.kt +310 -0
  108. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannable.kt +106 -0
  109. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannableStringBuilder.kt +24 -0
  110. package/android/src/main/java/com/swmansion/enriched/textinput/utils/RichContentReceiver.kt +127 -0
  111. package/android/src/main/java/com/swmansion/enriched/textinput/utils/Utils.kt +106 -0
  112. package/android/src/main/java/com/swmansion/enriched/textinput/watchers/EnrichedSpanWatcher.kt +107 -0
  113. package/android/src/main/java/com/swmansion/enriched/textinput/watchers/EnrichedTextWatcher.kt +74 -0
  114. package/android/src/main/new_arch/CMakeLists.txt +62 -0
  115. package/android/src/main/new_arch/GumboNormalizerJni.cpp +14 -0
  116. package/android/src/main/new_arch/ReactNativeEnrichedSpec.cpp +11 -0
  117. package/android/src/main/new_arch/ReactNativeEnrichedSpec.h +15 -0
  118. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputComponentDescriptor.h +35 -0
  119. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputMeasurementManager.cpp +53 -0
  120. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputMeasurementManager.h +25 -0
  121. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputShadowNode.cpp +35 -0
  122. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputShadowNode.h +53 -0
  123. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputState.cpp +9 -0
  124. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputState.h +24 -0
  125. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/conversions.h +27 -0
  126. package/android/src/main/res/drawable/broken_image.xml +10 -0
  127. package/cpp/CMakeLists.txt +50 -0
  128. package/cpp/GumboParser/GumboParser.h +34043 -0
  129. package/cpp/README.md +59 -0
  130. package/cpp/parser/GumboNormalizer.c +915 -0
  131. package/cpp/parser/GumboParser.cpp +16 -0
  132. package/cpp/parser/GumboParser.hpp +23 -0
  133. package/cpp/tests/GumboParserTest.cpp +457 -0
  134. package/ios/EnrichedTextInputView.h +53 -0
  135. package/ios/EnrichedTextInputView.mm +2360 -0
  136. package/ios/EnrichedTextInputViewManager.mm +13 -0
  137. package/ios/attributesManager/AttributesManager.h +17 -0
  138. package/ios/attributesManager/AttributesManager.mm +195 -0
  139. package/ios/config/InputConfig.h +104 -0
  140. package/ios/config/InputConfig.mm +664 -0
  141. package/ios/extensions/ColorExtension.h +7 -0
  142. package/ios/extensions/ColorExtension.mm +38 -0
  143. package/ios/extensions/FontExtension.h +11 -0
  144. package/ios/extensions/FontExtension.mm +72 -0
  145. package/ios/extensions/ImageExtension.h +34 -0
  146. package/ios/extensions/ImageExtension.mm +165 -0
  147. package/ios/extensions/LayoutManagerExtension.h +6 -0
  148. package/ios/extensions/LayoutManagerExtension.mm +443 -0
  149. package/ios/extensions/StringExtension.h +15 -0
  150. package/ios/extensions/StringExtension.mm +69 -0
  151. package/ios/generated/ReactNativeEnrichedSpec/ComponentDescriptors.cpp +22 -0
  152. package/ios/generated/ReactNativeEnrichedSpec/ComponentDescriptors.h +24 -0
  153. package/ios/generated/ReactNativeEnrichedSpec/EventEmitters.cpp +434 -0
  154. package/ios/generated/ReactNativeEnrichedSpec/EventEmitters.h +391 -0
  155. package/ios/generated/ReactNativeEnrichedSpec/Props.cpp +173 -0
  156. package/ios/generated/ReactNativeEnrichedSpec/Props.h +833 -0
  157. package/ios/generated/ReactNativeEnrichedSpec/RCTComponentViewHelpers.h +582 -0
  158. package/ios/generated/ReactNativeEnrichedSpec/ShadowNodes.cpp +17 -0
  159. package/ios/generated/ReactNativeEnrichedSpec/ShadowNodes.h +23 -0
  160. package/ios/generated/ReactNativeEnrichedSpec/States.cpp +16 -0
  161. package/ios/generated/ReactNativeEnrichedSpec/States.h +20 -0
  162. package/ios/inputParser/InputParser.h +11 -0
  163. package/ios/inputParser/InputParser.mm +1463 -0
  164. package/ios/inputTextView/InputTextView.h +6 -0
  165. package/ios/inputTextView/InputTextView.mm +285 -0
  166. package/ios/interfaces/AttributeEntry.h +9 -0
  167. package/ios/interfaces/AttributeEntry.mm +4 -0
  168. package/ios/interfaces/BaseStyleProtocol.h +17 -0
  169. package/ios/interfaces/ImageAttachment.h +11 -0
  170. package/ios/interfaces/ImageAttachment.mm +107 -0
  171. package/ios/interfaces/ImageData.h +10 -0
  172. package/ios/interfaces/ImageData.mm +4 -0
  173. package/ios/interfaces/LinkData.h +11 -0
  174. package/ios/interfaces/LinkData.mm +29 -0
  175. package/ios/interfaces/LinkRegexConfig.h +19 -0
  176. package/ios/interfaces/LinkRegexConfig.mm +37 -0
  177. package/ios/interfaces/MediaAttachment.h +23 -0
  178. package/ios/interfaces/MediaAttachment.mm +31 -0
  179. package/ios/interfaces/MentionParams.h +8 -0
  180. package/ios/interfaces/MentionParams.mm +4 -0
  181. package/ios/interfaces/MentionStyleProps.h +13 -0
  182. package/ios/interfaces/MentionStyleProps.mm +63 -0
  183. package/ios/interfaces/StyleBase.h +36 -0
  184. package/ios/interfaces/StyleBase.mm +256 -0
  185. package/ios/interfaces/StyleHeaders.h +102 -0
  186. package/ios/interfaces/StylePair.h +9 -0
  187. package/ios/interfaces/StylePair.mm +4 -0
  188. package/ios/interfaces/StyleTypeEnum.h +26 -0
  189. package/ios/interfaces/TextDecorationLineEnum.h +6 -0
  190. package/ios/interfaces/TextDecorationLineEnum.mm +4 -0
  191. package/ios/internals/EnrichedTextInputViewComponentDescriptor.h +19 -0
  192. package/ios/internals/EnrichedTextInputViewShadowNode.h +44 -0
  193. package/ios/internals/EnrichedTextInputViewShadowNode.mm +103 -0
  194. package/ios/internals/EnrichedTextInputViewState.cpp +10 -0
  195. package/ios/internals/EnrichedTextInputViewState.h +22 -0
  196. package/ios/styles/BlockQuoteStyle.mm +55 -0
  197. package/ios/styles/BoldStyle.mm +37 -0
  198. package/ios/styles/CheckboxListStyle.mm +153 -0
  199. package/ios/styles/CodeBlockStyle.mm +49 -0
  200. package/ios/styles/H1Style.mm +20 -0
  201. package/ios/styles/H2Style.mm +20 -0
  202. package/ios/styles/H3Style.mm +20 -0
  203. package/ios/styles/H4Style.mm +20 -0
  204. package/ios/styles/H5Style.mm +20 -0
  205. package/ios/styles/H6Style.mm +20 -0
  206. package/ios/styles/HeadingStyleBase.mm +65 -0
  207. package/ios/styles/ImageStyle.mm +146 -0
  208. package/ios/styles/InlineCodeStyle.mm +65 -0
  209. package/ios/styles/ItalicStyle.mm +37 -0
  210. package/ios/styles/LinkStyle.mm +532 -0
  211. package/ios/styles/MentionStyle.mm +538 -0
  212. package/ios/styles/OrderedListStyle.mm +86 -0
  213. package/ios/styles/StrikethroughStyle.mm +25 -0
  214. package/ios/styles/UnderlineStyle.mm +24 -0
  215. package/ios/styles/UnorderedListStyle.mm +86 -0
  216. package/ios/utils/CheckboxHitTestUtils.h +10 -0
  217. package/ios/utils/CheckboxHitTestUtils.mm +122 -0
  218. package/ios/utils/DotReplacementUtils.h +10 -0
  219. package/ios/utils/DotReplacementUtils.mm +68 -0
  220. package/ios/utils/KeyboardUtils.h +7 -0
  221. package/ios/utils/KeyboardUtils.mm +31 -0
  222. package/ios/utils/OccurenceUtils.h +44 -0
  223. package/ios/utils/OccurenceUtils.mm +179 -0
  224. package/ios/utils/ParagraphAttributesUtils.h +15 -0
  225. package/ios/utils/ParagraphAttributesUtils.mm +257 -0
  226. package/ios/utils/RangeUtils.h +12 -0
  227. package/ios/utils/RangeUtils.mm +183 -0
  228. package/ios/utils/TextBlockTapGestureRecognizer.h +17 -0
  229. package/ios/utils/TextBlockTapGestureRecognizer.mm +56 -0
  230. package/ios/utils/TextInsertionUtils.h +17 -0
  231. package/ios/utils/TextInsertionUtils.mm +64 -0
  232. package/ios/utils/WordsUtils.h +7 -0
  233. package/ios/utils/WordsUtils.mm +98 -0
  234. package/ios/utils/ZeroWidthSpaceUtils.h +9 -0
  235. package/ios/utils/ZeroWidthSpaceUtils.mm +270 -0
  236. package/lib/module/index.js +4 -0
  237. package/lib/module/index.js.map +1 -0
  238. package/lib/module/native/EnrichedTextInput.js +304 -0
  239. package/lib/module/native/EnrichedTextInput.js.map +1 -0
  240. package/lib/module/package.json +1 -0
  241. package/lib/module/spec/EnrichedTextInputNativeComponent.ts +517 -0
  242. package/lib/module/types.js +4 -0
  243. package/lib/module/types.js.map +1 -0
  244. package/lib/module/utils/EnrichedTextInputDefaultProps.js +12 -0
  245. package/lib/module/utils/EnrichedTextInputDefaultProps.js.map +1 -0
  246. package/lib/module/utils/normalizeHtmlStyle.js +155 -0
  247. package/lib/module/utils/normalizeHtmlStyle.js.map +1 -0
  248. package/lib/module/utils/nullthrows.js +9 -0
  249. package/lib/module/utils/nullthrows.js.map +1 -0
  250. package/lib/module/utils/regexParser.js +46 -0
  251. package/lib/module/utils/regexParser.js.map +1 -0
  252. package/lib/typescript/package.json +1 -0
  253. package/lib/typescript/src/index.d.ts +3 -0
  254. package/lib/typescript/src/index.d.ts.map +1 -0
  255. package/lib/typescript/src/native/EnrichedTextInput.d.ts +3 -0
  256. package/lib/typescript/src/native/EnrichedTextInput.d.ts.map +1 -0
  257. package/lib/typescript/src/spec/EnrichedTextInputNativeComponent.d.ts +397 -0
  258. package/lib/typescript/src/spec/EnrichedTextInputNativeComponent.d.ts.map +1 -0
  259. package/lib/typescript/src/types.d.ts +447 -0
  260. package/lib/typescript/src/types.d.ts.map +1 -0
  261. package/lib/typescript/src/utils/EnrichedTextInputDefaultProps.d.ts +10 -0
  262. package/lib/typescript/src/utils/EnrichedTextInputDefaultProps.d.ts.map +1 -0
  263. package/lib/typescript/src/utils/normalizeHtmlStyle.d.ts +4 -0
  264. package/lib/typescript/src/utils/normalizeHtmlStyle.d.ts.map +1 -0
  265. package/lib/typescript/src/utils/nullthrows.d.ts +2 -0
  266. package/lib/typescript/src/utils/nullthrows.d.ts.map +1 -0
  267. package/lib/typescript/src/utils/regexParser.d.ts +3 -0
  268. package/lib/typescript/src/utils/regexParser.d.ts.map +1 -0
  269. package/package.json +226 -0
  270. package/react-native.config.js +13 -0
  271. package/src/index.tsx +20 -0
  272. package/src/native/EnrichedTextInput.tsx +370 -0
  273. package/src/spec/EnrichedTextInputNativeComponent.ts +517 -0
  274. package/src/types.ts +499 -0
  275. package/src/utils/EnrichedTextInputDefaultProps.ts +9 -0
  276. package/src/utils/normalizeHtmlStyle.ts +199 -0
  277. package/src/utils/nullthrows.ts +7 -0
  278. package/src/utils/regexParser.ts +56 -0
@@ -0,0 +1,517 @@
1
+ import { codegenNativeComponent, codegenNativeCommands } from 'react-native';
2
+ import type {
3
+ BubblingEventHandler,
4
+ DirectEventHandler,
5
+ Float,
6
+ Int32,
7
+ UnsafeMixed,
8
+ } from 'react-native/Libraries/Types/CodegenTypes';
9
+ import type { ColorValue, HostComponent, ViewProps } from 'react-native';
10
+ import React from 'react';
11
+
12
+ export interface LinkNativeRegex {
13
+ pattern: string;
14
+ caseInsensitive: boolean;
15
+ dotAll: boolean;
16
+ // Link detection will be disabled
17
+ isDisabled: boolean;
18
+ // Use default native link regex
19
+ isDefault: boolean;
20
+ }
21
+
22
+ export interface OnChangeTextEvent {
23
+ value: string;
24
+ }
25
+
26
+ export interface OnChangeHtmlEvent {
27
+ value: string;
28
+ }
29
+
30
+ export interface OnChangeStateEvent {
31
+ bold: {
32
+ isActive: boolean;
33
+ isConflicting: boolean;
34
+ isBlocking: boolean;
35
+ };
36
+ italic: {
37
+ isActive: boolean;
38
+ isConflicting: boolean;
39
+ isBlocking: boolean;
40
+ };
41
+ underline: {
42
+ isActive: boolean;
43
+ isConflicting: boolean;
44
+ isBlocking: boolean;
45
+ };
46
+ strikeThrough: {
47
+ isActive: boolean;
48
+ isConflicting: boolean;
49
+ isBlocking: boolean;
50
+ };
51
+ inlineCode: {
52
+ isActive: boolean;
53
+ isConflicting: boolean;
54
+ isBlocking: boolean;
55
+ };
56
+ h1: {
57
+ isActive: boolean;
58
+ isConflicting: boolean;
59
+ isBlocking: boolean;
60
+ };
61
+ h2: {
62
+ isActive: boolean;
63
+ isConflicting: boolean;
64
+ isBlocking: boolean;
65
+ };
66
+ h3: {
67
+ isActive: boolean;
68
+ isConflicting: boolean;
69
+ isBlocking: boolean;
70
+ };
71
+ h4: {
72
+ isActive: boolean;
73
+ isConflicting: boolean;
74
+ isBlocking: boolean;
75
+ };
76
+ h5: {
77
+ isActive: boolean;
78
+ isConflicting: boolean;
79
+ isBlocking: boolean;
80
+ };
81
+ h6: {
82
+ isActive: boolean;
83
+ isConflicting: boolean;
84
+ isBlocking: boolean;
85
+ };
86
+ codeBlock: {
87
+ isActive: boolean;
88
+ isConflicting: boolean;
89
+ isBlocking: boolean;
90
+ };
91
+ blockQuote: {
92
+ isActive: boolean;
93
+ isConflicting: boolean;
94
+ isBlocking: boolean;
95
+ };
96
+ orderedList: {
97
+ isActive: boolean;
98
+ isConflicting: boolean;
99
+ isBlocking: boolean;
100
+ };
101
+ unorderedList: {
102
+ isActive: boolean;
103
+ isConflicting: boolean;
104
+ isBlocking: boolean;
105
+ };
106
+ link: {
107
+ isActive: boolean;
108
+ isConflicting: boolean;
109
+ isBlocking: boolean;
110
+ };
111
+ image: {
112
+ isActive: boolean;
113
+ isConflicting: boolean;
114
+ isBlocking: boolean;
115
+ };
116
+ mention: {
117
+ isActive: boolean;
118
+ isConflicting: boolean;
119
+ isBlocking: boolean;
120
+ };
121
+ checkboxList: {
122
+ isActive: boolean;
123
+ isConflicting: boolean;
124
+ isBlocking: boolean;
125
+ };
126
+ }
127
+
128
+ export interface OnLinkDetected {
129
+ text: string;
130
+ url: string;
131
+ start: Int32;
132
+ end: Int32;
133
+ }
134
+
135
+ export interface OnMentionDetectedInternal {
136
+ text: string;
137
+ indicator: string;
138
+ payload: string;
139
+ }
140
+
141
+ export interface OnMentionDetected {
142
+ text: string;
143
+ indicator: string;
144
+ attributes: Record<string, string>;
145
+ }
146
+
147
+ export interface OnMentionEvent {
148
+ indicator: string;
149
+ text: UnsafeMixed;
150
+ }
151
+
152
+ export interface OnChangeSelectionEvent {
153
+ start: Int32;
154
+ end: Int32;
155
+ text: string;
156
+ }
157
+
158
+ export interface OnRequestHtmlResultEvent {
159
+ requestId: Int32;
160
+ html: UnsafeMixed;
161
+ }
162
+
163
+ export interface OnSubmitEditing {
164
+ text: string;
165
+ }
166
+
167
+ export interface OnKeyPressEvent {
168
+ key: string;
169
+ }
170
+
171
+ export interface ContextMenuItemConfig {
172
+ text: string;
173
+ }
174
+
175
+ export interface OnContextMenuItemPressEvent {
176
+ itemText: string;
177
+ selectedText: string;
178
+ selectionStart: Int32;
179
+ selectionEnd: Int32;
180
+ styleState: {
181
+ bold: {
182
+ isActive: boolean;
183
+ isConflicting: boolean;
184
+ isBlocking: boolean;
185
+ };
186
+ italic: {
187
+ isActive: boolean;
188
+ isConflicting: boolean;
189
+ isBlocking: boolean;
190
+ };
191
+ underline: {
192
+ isActive: boolean;
193
+ isConflicting: boolean;
194
+ isBlocking: boolean;
195
+ };
196
+ strikeThrough: {
197
+ isActive: boolean;
198
+ isConflicting: boolean;
199
+ isBlocking: boolean;
200
+ };
201
+ inlineCode: {
202
+ isActive: boolean;
203
+ isConflicting: boolean;
204
+ isBlocking: boolean;
205
+ };
206
+ h1: {
207
+ isActive: boolean;
208
+ isConflicting: boolean;
209
+ isBlocking: boolean;
210
+ };
211
+ h2: {
212
+ isActive: boolean;
213
+ isConflicting: boolean;
214
+ isBlocking: boolean;
215
+ };
216
+ h3: {
217
+ isActive: boolean;
218
+ isConflicting: boolean;
219
+ isBlocking: boolean;
220
+ };
221
+ h4: {
222
+ isActive: boolean;
223
+ isConflicting: boolean;
224
+ isBlocking: boolean;
225
+ };
226
+ h5: {
227
+ isActive: boolean;
228
+ isConflicting: boolean;
229
+ isBlocking: boolean;
230
+ };
231
+ h6: {
232
+ isActive: boolean;
233
+ isConflicting: boolean;
234
+ isBlocking: boolean;
235
+ };
236
+ codeBlock: {
237
+ isActive: boolean;
238
+ isConflicting: boolean;
239
+ isBlocking: boolean;
240
+ };
241
+ blockQuote: {
242
+ isActive: boolean;
243
+ isConflicting: boolean;
244
+ isBlocking: boolean;
245
+ };
246
+ orderedList: {
247
+ isActive: boolean;
248
+ isConflicting: boolean;
249
+ isBlocking: boolean;
250
+ };
251
+ unorderedList: {
252
+ isActive: boolean;
253
+ isConflicting: boolean;
254
+ isBlocking: boolean;
255
+ };
256
+ link: {
257
+ isActive: boolean;
258
+ isConflicting: boolean;
259
+ isBlocking: boolean;
260
+ };
261
+ image: {
262
+ isActive: boolean;
263
+ isConflicting: boolean;
264
+ isBlocking: boolean;
265
+ };
266
+ mention: {
267
+ isActive: boolean;
268
+ isConflicting: boolean;
269
+ isBlocking: boolean;
270
+ };
271
+ checkboxList: {
272
+ isActive: boolean;
273
+ isConflicting: boolean;
274
+ isBlocking: boolean;
275
+ };
276
+ };
277
+ }
278
+
279
+ interface TargetedEvent {
280
+ target: Int32;
281
+ }
282
+
283
+ export interface PastedImage {
284
+ uri: string;
285
+ type: string;
286
+ width: Float;
287
+ height: Float;
288
+ }
289
+
290
+ export interface OnPasteImagesEvent {
291
+ images: {
292
+ uri: string;
293
+ type: string;
294
+ width: Float;
295
+ height: Float;
296
+ }[];
297
+ }
298
+
299
+ type Heading = {
300
+ fontSize?: Float;
301
+ bold?: boolean;
302
+ };
303
+
304
+ export interface HtmlStyleInternal {
305
+ h1?: Heading;
306
+ h2?: Heading;
307
+ h3?: Heading;
308
+ h4?: Heading;
309
+ h5?: Heading;
310
+ h6?: Heading;
311
+ blockquote?: {
312
+ borderColor?: ColorValue;
313
+ borderWidth?: Float;
314
+ gapWidth?: Float;
315
+ color?: ColorValue;
316
+ };
317
+ codeblock?: {
318
+ color?: ColorValue;
319
+ borderRadius?: Float;
320
+ backgroundColor?: ColorValue;
321
+ };
322
+ code?: {
323
+ color?: ColorValue;
324
+ backgroundColor?: ColorValue;
325
+ };
326
+ a?: {
327
+ color?: ColorValue;
328
+ textDecorationLine?: string;
329
+ };
330
+ // This is a workaround for the fact that codegen does not support Records.
331
+ // On native Android side this will become a ReadableMap, on native iOS we can work with a folly::dynamic object.
332
+ mention?: UnsafeMixed;
333
+ ol?: {
334
+ gapWidth?: Float;
335
+ marginLeft?: Float;
336
+ markerFontWeight?: string;
337
+ markerColor?: ColorValue;
338
+ };
339
+ ul?: {
340
+ bulletColor?: ColorValue;
341
+ bulletSize?: Float;
342
+ marginLeft?: Float;
343
+ gapWidth?: Float;
344
+ };
345
+ ulCheckbox?: {
346
+ gapWidth?: Float;
347
+ boxSize?: Float;
348
+ marginLeft?: Float;
349
+ boxColor?: ColorValue;
350
+ };
351
+ }
352
+
353
+ export interface NativeProps extends ViewProps {
354
+ // base props
355
+ autoFocus?: boolean;
356
+ editable?: boolean;
357
+ defaultValue?: string;
358
+ placeholder?: string;
359
+ placeholderTextColor?: ColorValue;
360
+ mentionIndicators: string[];
361
+ cursorColor?: ColorValue;
362
+ selectionColor?: ColorValue;
363
+ autoCapitalize?: string;
364
+ htmlStyle?: HtmlStyleInternal;
365
+ scrollEnabled?: boolean;
366
+ linkRegex?: LinkNativeRegex;
367
+ contextMenuItems?: ReadonlyArray<Readonly<ContextMenuItemConfig>>;
368
+ returnKeyType?: string;
369
+ returnKeyLabel?: string;
370
+ submitBehavior?: string;
371
+
372
+ // event callbacks
373
+ onInputFocus?: DirectEventHandler<TargetedEvent>;
374
+ onInputBlur?: DirectEventHandler<TargetedEvent>;
375
+ onChangeText?: DirectEventHandler<OnChangeTextEvent>;
376
+ onChangeHtml?: DirectEventHandler<OnChangeHtmlEvent>;
377
+ onChangeState?: DirectEventHandler<OnChangeStateEvent>;
378
+ onLinkDetected?: DirectEventHandler<OnLinkDetected>;
379
+ onMentionDetected?: DirectEventHandler<OnMentionDetectedInternal>;
380
+ onMention?: DirectEventHandler<OnMentionEvent>;
381
+ onChangeSelection?: DirectEventHandler<OnChangeSelectionEvent>;
382
+ onRequestHtmlResult?: DirectEventHandler<OnRequestHtmlResultEvent>;
383
+ onInputKeyPress?: DirectEventHandler<OnKeyPressEvent>;
384
+ onPasteImages?: DirectEventHandler<OnPasteImagesEvent>;
385
+ onContextMenuItemPress?: DirectEventHandler<OnContextMenuItemPressEvent>;
386
+ onSubmitEditing?: BubblingEventHandler<OnSubmitEditing>;
387
+
388
+ // Style related props - used for generating proper setters in component's manager
389
+ // These should not be passed as regular props
390
+ color?: ColorValue;
391
+ fontSize?: Float;
392
+ lineHeight?: Float;
393
+ fontFamily?: string;
394
+ fontWeight?: string;
395
+ fontStyle?: string;
396
+
397
+ // Used for onChangeHtml event performance optimization
398
+ isOnChangeHtmlSet: boolean;
399
+ // Used for onChangeText event performance optimization
400
+ isOnChangeTextSet: boolean;
401
+
402
+ // Experimental
403
+ androidExperimentalSynchronousEvents: boolean;
404
+ useHtmlNormalizer: boolean;
405
+ }
406
+
407
+ type ComponentType = HostComponent<NativeProps>;
408
+
409
+ interface NativeCommands {
410
+ // General commands
411
+ focus: (viewRef: React.ElementRef<ComponentType>) => void;
412
+ blur: (viewRef: React.ElementRef<ComponentType>) => void;
413
+ setValue: (viewRef: React.ElementRef<ComponentType>, text: string) => void;
414
+ insertText: (
415
+ viewRef: React.ElementRef<ComponentType>,
416
+ text: string,
417
+ start: Int32,
418
+ end: Int32
419
+ ) => void;
420
+ setSelection: (
421
+ viewRef: React.ElementRef<ComponentType>,
422
+ start: Int32,
423
+ end: Int32
424
+ ) => void;
425
+
426
+ // Text formatting commands
427
+ toggleBold: (viewRef: React.ElementRef<ComponentType>) => void;
428
+ toggleItalic: (viewRef: React.ElementRef<ComponentType>) => void;
429
+ toggleUnderline: (viewRef: React.ElementRef<ComponentType>) => void;
430
+ toggleStrikeThrough: (viewRef: React.ElementRef<ComponentType>) => void;
431
+ toggleInlineCode: (viewRef: React.ElementRef<ComponentType>) => void;
432
+ toggleH1: (viewRef: React.ElementRef<ComponentType>) => void;
433
+ toggleH2: (viewRef: React.ElementRef<ComponentType>) => void;
434
+ toggleH3: (viewRef: React.ElementRef<ComponentType>) => void;
435
+ toggleH4: (viewRef: React.ElementRef<ComponentType>) => void;
436
+ toggleH5: (viewRef: React.ElementRef<ComponentType>) => void;
437
+ toggleH6: (viewRef: React.ElementRef<ComponentType>) => void;
438
+ toggleCodeBlock: (viewRef: React.ElementRef<ComponentType>) => void;
439
+ toggleBlockQuote: (viewRef: React.ElementRef<ComponentType>) => void;
440
+ toggleOrderedList: (viewRef: React.ElementRef<ComponentType>) => void;
441
+ toggleUnorderedList: (viewRef: React.ElementRef<ComponentType>) => void;
442
+ toggleCheckboxList: (
443
+ viewRef: React.ElementRef<ComponentType>,
444
+ checked: boolean
445
+ ) => void;
446
+ addLink: (
447
+ viewRef: React.ElementRef<ComponentType>,
448
+ start: Int32,
449
+ end: Int32,
450
+ text: string,
451
+ url: string
452
+ ) => void;
453
+ removeLink: (
454
+ viewRef: React.ElementRef<ComponentType>,
455
+ start: Int32,
456
+ end: Int32
457
+ ) => void;
458
+ addImage: (
459
+ viewRef: React.ElementRef<ComponentType>,
460
+ uri: string,
461
+ width: Float,
462
+ height: Float
463
+ ) => void;
464
+ startMention: (
465
+ viewRef: React.ElementRef<ComponentType>,
466
+ indicator: string
467
+ ) => void;
468
+ addMention: (
469
+ viewRef: React.ElementRef<ComponentType>,
470
+ indicator: string,
471
+ text: string,
472
+ payload: string
473
+ ) => void;
474
+ requestHTML: (
475
+ viewRef: React.ElementRef<ComponentType>,
476
+ requestId: Int32
477
+ ) => void;
478
+ }
479
+
480
+ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
481
+ supportedCommands: [
482
+ // General commands
483
+ 'focus',
484
+ 'blur',
485
+ 'setValue',
486
+ 'insertText',
487
+ 'setSelection',
488
+
489
+ // Text formatting commands
490
+ 'toggleBold',
491
+ 'toggleItalic',
492
+ 'toggleUnderline',
493
+ 'toggleStrikeThrough',
494
+ 'toggleInlineCode',
495
+ 'toggleH1',
496
+ 'toggleH2',
497
+ 'toggleH3',
498
+ 'toggleH4',
499
+ 'toggleH5',
500
+ 'toggleH6',
501
+ 'toggleCodeBlock',
502
+ 'toggleBlockQuote',
503
+ 'toggleOrderedList',
504
+ 'toggleUnorderedList',
505
+ 'toggleCheckboxList',
506
+ 'addLink',
507
+ 'removeLink',
508
+ 'addImage',
509
+ 'startMention',
510
+ 'addMention',
511
+ 'requestHTML',
512
+ ],
513
+ });
514
+
515
+ export default codegenNativeComponent<NativeProps>('EnrichedTextInputView', {
516
+ interfaceOnly: true,
517
+ }) as HostComponent<NativeProps>;