react-native-enriched 0.2.1 → 0.4.0

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 (263) hide show
  1. package/README.md +21 -16
  2. package/android/build.gradle +77 -72
  3. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerDelegate.java +21 -0
  4. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerInterface.java +7 -0
  5. package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ComponentDescriptors.cpp +1 -1
  6. package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ComponentDescriptors.h +1 -1
  7. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.cpp +276 -0
  8. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.h +239 -0
  9. package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/Props.cpp +10 -0
  10. package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/Props.h +251 -0
  11. package/android/gradle.properties +5 -5
  12. package/android/lint.gradle +70 -0
  13. package/android/src/main/java/com/swmansion/enriched/{EnrichedTextInputViewPackage.kt → ReactNativeEnrichedPackage.kt} +4 -5
  14. package/android/src/main/java/com/swmansion/enriched/{utils → common}/AsyncDrawable.kt +50 -15
  15. package/android/src/main/java/com/swmansion/enriched/common/CheckboxDrawable.kt +81 -0
  16. package/android/src/main/java/com/swmansion/enriched/common/EnrichedConstants.kt +11 -0
  17. package/android/src/main/java/com/swmansion/enriched/common/EnrichedStyle.kt +57 -0
  18. package/android/src/main/java/com/swmansion/enriched/{spans/utils → common}/ForceRedrawSpan.kt +3 -2
  19. package/android/src/main/java/com/swmansion/enriched/common/MentionStyle.kt +7 -0
  20. package/android/src/main/java/com/swmansion/enriched/{utils → common}/ResourceManager.kt +1 -1
  21. package/android/src/main/java/com/swmansion/enriched/{utils → common/parser}/EnrichedParser.java +228 -160
  22. package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedSpanFactory.kt +79 -0
  23. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedBlockQuoteSpan.kt +53 -0
  24. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedBoldSpan.kt +12 -0
  25. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedCheckboxListSpan.kt +91 -0
  26. package/android/src/main/java/com/swmansion/enriched/{spans → common/spans}/EnrichedCodeBlockSpan.kt +12 -14
  27. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH1Span.kt +20 -0
  28. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH2Span.kt +20 -0
  29. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH3Span.kt +20 -0
  30. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH4Span.kt +21 -0
  31. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH5Span.kt +20 -0
  32. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH6Span.kt +20 -0
  33. package/android/src/main/java/com/swmansion/enriched/{spans → common/spans}/EnrichedImageSpan.kt +68 -51
  34. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedInlineCodeSpan.kt +24 -0
  35. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedItalicSpan.kt +12 -0
  36. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedLinkSpan.kt +26 -0
  37. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedMentionSpan.kt +35 -0
  38. package/android/src/main/java/com/swmansion/enriched/{spans → common/spans}/EnrichedOrderedListSpan.kt +21 -29
  39. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedStrikeThroughSpan.kt +11 -0
  40. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedUnderlineSpan.kt +11 -0
  41. package/android/src/main/java/com/swmansion/enriched/{spans → common/spans}/EnrichedUnorderedListSpan.kt +13 -17
  42. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedBlockSpan.kt +5 -0
  43. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedHeadingSpan.kt +3 -0
  44. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedInlineSpan.kt +3 -0
  45. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedParagraphSpan.kt +5 -0
  46. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedSpan.kt +3 -0
  47. package/android/src/main/java/com/swmansion/enriched/{spans → common/spans}/interfaces/EnrichedZeroWidthSpaceSpan.kt +2 -3
  48. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputConnectionWrapper.kt +140 -0
  49. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputSpannableFactory.kt +83 -0
  50. package/android/src/main/java/com/swmansion/enriched/{EnrichedTextInputView.kt → textinput/EnrichedTextInputView.kt} +322 -157
  51. package/android/src/main/java/com/swmansion/enriched/{EnrichedTextInputViewLayoutManager.kt → textinput/EnrichedTextInputViewLayoutManager.kt} +4 -2
  52. package/android/src/main/java/com/swmansion/enriched/{EnrichedTextInputViewManager.kt → textinput/EnrichedTextInputViewManager.kt} +182 -66
  53. package/android/src/main/java/com/swmansion/enriched/{MeasurementStore.kt → textinput/MeasurementStore.kt} +75 -25
  54. package/android/src/main/java/com/swmansion/enriched/{events → textinput/events}/MentionHandler.kt +22 -12
  55. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeHtmlEvent.kt +27 -0
  56. package/android/src/main/java/com/swmansion/enriched/{events → textinput/events}/OnChangeSelectionEvent.kt +11 -10
  57. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeStateEvent.kt +21 -0
  58. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeTextEvent.kt +30 -0
  59. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputBlurEvent.kt +25 -0
  60. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputFocusEvent.kt +25 -0
  61. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputKeyPressEvent.kt +27 -0
  62. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnLinkDetectedEvent.kt +32 -0
  63. package/android/src/main/java/com/swmansion/enriched/{events → textinput/events}/OnMentionDetectedEvent.kt +11 -10
  64. package/android/src/main/java/com/swmansion/enriched/{events → textinput/events}/OnMentionEvent.kt +10 -9
  65. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnPasteImagesEvent.kt +47 -0
  66. package/android/src/main/java/com/swmansion/enriched/{events → textinput/events}/OnRequestHtmlResultEvent.kt +2 -3
  67. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputBlockQuoteSpan.kt +14 -0
  68. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputBoldSpan.kt +14 -0
  69. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputCheckboxListSpan.kt +15 -0
  70. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputCodeBlockSpan.kt +14 -0
  71. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH1Span.kt +14 -0
  72. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH2Span.kt +14 -0
  73. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH3Span.kt +14 -0
  74. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH4Span.kt +14 -0
  75. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH5Span.kt +14 -0
  76. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH6Span.kt +14 -0
  77. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputImageSpan.kt +36 -0
  78. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputInlineCodeSpan.kt +14 -0
  79. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputItalicSpan.kt +14 -0
  80. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputLinkSpan.kt +15 -0
  81. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputMentionSpan.kt +18 -0
  82. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputOrderedListSpan.kt +21 -0
  83. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputStrikeThroughSpan.kt +14 -0
  84. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputUnderlineSpan.kt +14 -0
  85. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputUnorderedListSpan.kt +14 -0
  86. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedSpans.kt +241 -0
  87. package/android/src/main/java/com/swmansion/enriched/textinput/spans/interfaces/EnrichedInputSpan.kt +10 -0
  88. package/android/src/main/java/com/swmansion/enriched/{styles → textinput/styles}/HtmlStyle.kt +129 -57
  89. package/android/src/main/java/com/swmansion/enriched/{styles → textinput/styles}/InlineStyles.kt +30 -13
  90. package/android/src/main/java/com/swmansion/enriched/textinput/styles/ListStyles.kt +263 -0
  91. package/android/src/main/java/com/swmansion/enriched/{styles → textinput/styles}/ParagraphStyles.kt +94 -34
  92. package/android/src/main/java/com/swmansion/enriched/{styles → textinput/styles}/ParametrizedStyles.kt +143 -67
  93. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedEditableFactory.kt +17 -0
  94. package/android/src/main/java/com/swmansion/enriched/{utils → textinput/utils}/EnrichedSelection.kt +84 -54
  95. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpanState.kt +304 -0
  96. package/android/src/main/java/com/swmansion/enriched/{utils/Utils.kt → textinput/utils/EnrichedSpannable.kt} +22 -31
  97. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannableStringBuilder.kt +16 -0
  98. package/android/src/main/java/com/swmansion/enriched/textinput/utils/RichContentReceiver.kt +127 -0
  99. package/android/src/main/java/com/swmansion/enriched/textinput/utils/Utils.kt +106 -0
  100. package/android/src/main/java/com/swmansion/enriched/{watchers → textinput/watchers}/EnrichedSpanWatcher.kt +56 -24
  101. package/android/src/main/java/com/swmansion/enriched/{watchers → textinput/watchers}/EnrichedTextWatcher.kt +37 -14
  102. package/android/src/main/new_arch/CMakeLists.txt +7 -1
  103. package/android/src/main/new_arch/ReactNativeEnrichedSpec.cpp +11 -0
  104. package/android/src/main/new_arch/ReactNativeEnrichedSpec.h +15 -0
  105. package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputMeasurementManager.h +1 -1
  106. package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputShadowNode.h +2 -2
  107. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/conversions.h +46 -0
  108. package/ios/EnrichedTextInputView.h +2 -1
  109. package/ios/EnrichedTextInputView.mm +603 -60
  110. package/ios/config/InputConfig.h +28 -0
  111. package/ios/config/InputConfig.mm +237 -8
  112. package/ios/extensions/ImageExtension.h +35 -0
  113. package/ios/extensions/ImageExtension.mm +156 -0
  114. package/ios/{utils → extensions}/LayoutManagerExtension.mm +115 -95
  115. package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ComponentDescriptors.cpp +1 -1
  116. package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ComponentDescriptors.h +1 -1
  117. package/ios/generated/ReactNativeEnrichedSpec/EventEmitters.cpp +276 -0
  118. package/ios/generated/ReactNativeEnrichedSpec/EventEmitters.h +239 -0
  119. package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/Props.cpp +10 -0
  120. package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/Props.h +251 -0
  121. package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/RCTComponentViewHelpers.h +95 -0
  122. package/ios/inputParser/InputParser.mm +218 -18
  123. package/ios/inputTextView/InputTextView.mm +118 -0
  124. package/ios/{attachments → interfaces}/ImageAttachment.h +1 -0
  125. package/ios/interfaces/ImageAttachment.mm +46 -0
  126. package/ios/interfaces/LinkRegexConfig.h +19 -0
  127. package/ios/interfaces/LinkRegexConfig.mm +37 -0
  128. package/ios/{utils → interfaces}/MentionStyleProps.mm +2 -2
  129. package/ios/{utils → interfaces}/StyleHeaders.h +22 -1
  130. package/ios/{utils → interfaces}/StyleTypeEnum.h +4 -0
  131. package/ios/internals/EnrichedTextInputViewState.cpp +6 -6
  132. package/ios/styles/BlockQuoteStyle.mm +5 -5
  133. package/ios/styles/BoldStyle.mm +21 -6
  134. package/ios/styles/CheckboxListStyle.mm +321 -0
  135. package/ios/styles/CodeBlockStyle.mm +5 -5
  136. package/ios/styles/H1Style.mm +3 -0
  137. package/ios/styles/H2Style.mm +3 -0
  138. package/ios/styles/H3Style.mm +3 -0
  139. package/ios/styles/H4Style.mm +20 -0
  140. package/ios/styles/H5Style.mm +20 -0
  141. package/ios/styles/H6Style.mm +20 -0
  142. package/ios/styles/HeadingStyleBase.mm +161 -72
  143. package/ios/styles/ImageStyle.mm +5 -5
  144. package/ios/styles/InlineCodeStyle.mm +30 -19
  145. package/ios/styles/ItalicStyle.mm +5 -5
  146. package/ios/styles/LinkStyle.mm +98 -40
  147. package/ios/styles/MentionStyle.mm +4 -4
  148. package/ios/styles/OrderedListStyle.mm +5 -5
  149. package/ios/styles/StrikethroughStyle.mm +5 -5
  150. package/ios/styles/UnderlineStyle.mm +5 -5
  151. package/ios/styles/UnorderedListStyle.mm +5 -5
  152. package/ios/utils/CheckboxHitTestUtils.h +10 -0
  153. package/ios/utils/CheckboxHitTestUtils.mm +123 -0
  154. package/ios/utils/ParagraphAttributesUtils.h +4 -0
  155. package/ios/utils/ParagraphAttributesUtils.mm +142 -45
  156. package/ios/utils/ParagraphsUtils.mm +4 -4
  157. package/ios/utils/TextBlockTapGestureRecognizer.h +17 -0
  158. package/ios/utils/TextBlockTapGestureRecognizer.mm +56 -0
  159. package/ios/utils/ZeroWidthSpaceUtils.mm +14 -3
  160. package/lib/module/EnrichedTextInput.js +57 -11
  161. package/lib/module/EnrichedTextInput.js.map +1 -1
  162. package/lib/module/{EnrichedTextInputNativeComponent.ts → spec/EnrichedTextInputNativeComponent.ts} +175 -18
  163. package/lib/module/types.js +4 -0
  164. package/lib/module/types.js.map +1 -0
  165. package/lib/module/{normalizeHtmlStyle.js → utils/normalizeHtmlStyle.js} +18 -0
  166. package/lib/module/utils/normalizeHtmlStyle.js.map +1 -0
  167. package/lib/module/utils/nullthrows.js +9 -0
  168. package/lib/module/utils/nullthrows.js.map +1 -0
  169. package/lib/module/utils/regexParser.js +46 -0
  170. package/lib/module/utils/regexParser.js.map +1 -0
  171. package/lib/typescript/src/EnrichedTextInput.d.ts +20 -51
  172. package/lib/typescript/src/EnrichedTextInput.d.ts.map +1 -1
  173. package/lib/typescript/src/index.d.ts +2 -1
  174. package/lib/typescript/src/index.d.ts.map +1 -1
  175. package/lib/typescript/src/{EnrichedTextInputNativeComponent.d.ts → spec/EnrichedTextInputNativeComponent.d.ts} +154 -18
  176. package/lib/typescript/src/spec/EnrichedTextInputNativeComponent.d.ts.map +1 -0
  177. package/lib/typescript/src/types.d.ts +58 -0
  178. package/lib/typescript/src/types.d.ts.map +1 -0
  179. package/lib/typescript/src/utils/normalizeHtmlStyle.d.ts +4 -0
  180. package/lib/typescript/src/utils/normalizeHtmlStyle.d.ts.map +1 -0
  181. package/lib/typescript/src/utils/nullthrows.d.ts +2 -0
  182. package/lib/typescript/src/utils/nullthrows.d.ts.map +1 -0
  183. package/lib/typescript/src/utils/regexParser.d.ts +3 -0
  184. package/lib/typescript/src/utils/regexParser.d.ts.map +1 -0
  185. package/package.json +13 -9
  186. package/src/EnrichedTextInput.tsx +88 -63
  187. package/src/index.tsx +5 -1
  188. package/src/{EnrichedTextInputNativeComponent.ts → spec/EnrichedTextInputNativeComponent.ts} +175 -18
  189. package/src/types.ts +59 -0
  190. package/src/{normalizeHtmlStyle.ts → utils/normalizeHtmlStyle.ts} +20 -5
  191. package/src/utils/nullthrows.ts +7 -0
  192. package/src/utils/regexParser.ts +56 -0
  193. package/android/generated/jni/react/renderer/components/RNEnrichedTextInputViewSpec/EventEmitters.cpp +0 -128
  194. package/android/generated/jni/react/renderer/components/RNEnrichedTextInputViewSpec/EventEmitters.h +0 -102
  195. package/android/src/main/java/com/swmansion/enriched/events/OnChangeHtmlEvent.kt +0 -28
  196. package/android/src/main/java/com/swmansion/enriched/events/OnChangeStateEvent.kt +0 -24
  197. package/android/src/main/java/com/swmansion/enriched/events/OnChangeTextEvent.kt +0 -30
  198. package/android/src/main/java/com/swmansion/enriched/events/OnInputBlurEvent.kt +0 -27
  199. package/android/src/main/java/com/swmansion/enriched/events/OnInputFocusEvent.kt +0 -27
  200. package/android/src/main/java/com/swmansion/enriched/events/OnLinkDetectedEvent.kt +0 -30
  201. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedBlockQuoteSpan.kt +0 -44
  202. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedBoldSpan.kt +0 -16
  203. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH1Span.kt +0 -23
  204. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH2Span.kt +0 -23
  205. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH3Span.kt +0 -23
  206. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedInlineCodeSpan.kt +0 -27
  207. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedItalicSpan.kt +0 -15
  208. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedLinkSpan.kt +0 -30
  209. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedMentionSpan.kt +0 -42
  210. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedSpans.kt +0 -136
  211. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedStrikeThroughSpan.kt +0 -14
  212. package/android/src/main/java/com/swmansion/enriched/spans/EnrichedUnderlineSpan.kt +0 -14
  213. package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedBlockSpan.kt +0 -4
  214. package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedHeadingSpan.kt +0 -4
  215. package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedInlineSpan.kt +0 -4
  216. package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedParagraphSpan.kt +0 -4
  217. package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedSpan.kt +0 -8
  218. package/android/src/main/java/com/swmansion/enriched/styles/ListStyles.kt +0 -172
  219. package/android/src/main/java/com/swmansion/enriched/utils/EnrichedSpanState.kt +0 -204
  220. package/android/src/main/new_arch/RNEnrichedTextInputViewSpec.cpp +0 -22
  221. package/android/src/main/new_arch/RNEnrichedTextInputViewSpec.h +0 -26
  222. package/android/src/main/new_arch/react/renderer/components/RNEnrichedTextInputViewSpec/conversions.h +0 -26
  223. package/ios/attachments/ImageAttachment.mm +0 -34
  224. package/ios/generated/RNEnrichedTextInputViewSpec/EventEmitters.cpp +0 -128
  225. package/ios/generated/RNEnrichedTextInputViewSpec/EventEmitters.h +0 -102
  226. package/lib/module/normalizeHtmlStyle.js.map +0 -1
  227. package/lib/typescript/src/EnrichedTextInputNativeComponent.d.ts.map +0 -1
  228. package/lib/typescript/src/normalizeHtmlStyle.d.ts +0 -4
  229. package/lib/typescript/src/normalizeHtmlStyle.d.ts.map +0 -1
  230. /package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ShadowNodes.cpp +0 -0
  231. /package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ShadowNodes.h +0 -0
  232. /package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/States.cpp +0 -0
  233. /package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/States.h +0 -0
  234. /package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputComponentDescriptor.h +0 -0
  235. /package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputMeasurementManager.cpp +0 -0
  236. /package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputShadowNode.cpp +0 -0
  237. /package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputState.cpp +0 -0
  238. /package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputState.h +0 -0
  239. /package/ios/{utils → extensions}/ColorExtension.h +0 -0
  240. /package/ios/{utils → extensions}/ColorExtension.mm +0 -0
  241. /package/ios/{utils → extensions}/FontExtension.h +0 -0
  242. /package/ios/{utils → extensions}/FontExtension.mm +0 -0
  243. /package/ios/{utils → extensions}/LayoutManagerExtension.h +0 -0
  244. /package/ios/{utils → extensions}/StringExtension.h +0 -0
  245. /package/ios/{utils → extensions}/StringExtension.mm +0 -0
  246. /package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ShadowNodes.cpp +0 -0
  247. /package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ShadowNodes.h +0 -0
  248. /package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/States.cpp +0 -0
  249. /package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/States.h +0 -0
  250. /package/ios/{utils → interfaces}/BaseStyleProtocol.h +0 -0
  251. /package/ios/{utils → interfaces}/ImageData.h +0 -0
  252. /package/ios/{utils → interfaces}/ImageData.mm +0 -0
  253. /package/ios/{utils → interfaces}/LinkData.h +0 -0
  254. /package/ios/{utils → interfaces}/LinkData.mm +0 -0
  255. /package/ios/{attachments → interfaces}/MediaAttachment.h +0 -0
  256. /package/ios/{attachments → interfaces}/MediaAttachment.mm +0 -0
  257. /package/ios/{utils → interfaces}/MentionParams.h +0 -0
  258. /package/ios/{utils → interfaces}/MentionParams.mm +0 -0
  259. /package/ios/{utils → interfaces}/MentionStyleProps.h +0 -0
  260. /package/ios/{utils → interfaces}/StylePair.h +0 -0
  261. /package/ios/{utils → interfaces}/StylePair.mm +0 -0
  262. /package/ios/{utils → interfaces}/TextDecorationLineEnum.h +0 -0
  263. /package/ios/{utils → interfaces}/TextDecorationLineEnum.mm +0 -0
@@ -1,47 +1,74 @@
1
- package com.swmansion.enriched.watchers
1
+ package com.swmansion.enriched.textinput.watchers
2
2
 
3
3
  import android.text.SpanWatcher
4
4
  import android.text.Spannable
5
5
  import android.text.style.ParagraphStyle
6
6
  import com.facebook.react.bridge.ReactContext
7
7
  import com.facebook.react.uimanager.UIManagerHelper
8
- import com.swmansion.enriched.EnrichedTextInputView
9
- import com.swmansion.enriched.events.OnChangeHtmlEvent
10
- import com.swmansion.enriched.spans.EnrichedOrderedListSpan
11
- import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
12
- import com.swmansion.enriched.spans.interfaces.EnrichedSpan
13
- import com.swmansion.enriched.utils.EnrichedParser
14
- import com.swmansion.enriched.utils.getSafeSpanBoundaries
8
+ import com.swmansion.enriched.common.parser.EnrichedParser
9
+ import com.swmansion.enriched.common.spans.interfaces.EnrichedHeadingSpan
10
+ import com.swmansion.enriched.textinput.EnrichedTextInputView
11
+ import com.swmansion.enriched.textinput.events.OnChangeHtmlEvent
12
+ import com.swmansion.enriched.textinput.spans.EnrichedInputOrderedListSpan
13
+ import com.swmansion.enriched.textinput.spans.interfaces.EnrichedInputSpan
14
+ import com.swmansion.enriched.textinput.utils.getSafeSpanBoundaries
15
15
 
16
- class EnrichedSpanWatcher(private val view: EnrichedTextInputView) : SpanWatcher {
16
+ class EnrichedSpanWatcher(
17
+ private val view: EnrichedTextInputView,
18
+ ) : SpanWatcher {
17
19
  private var previousHtml: String? = null
18
20
 
19
- override fun onSpanAdded(text: Spannable, what: Any, start: Int, end: Int) {
21
+ override fun onSpanAdded(
22
+ text: Spannable,
23
+ what: Any,
24
+ start: Int,
25
+ end: Int,
26
+ ) {
20
27
  updateNextLineLayout(what, text, end)
21
28
  updateUnorderedListSpans(what, text, end)
22
29
  emitEvent(text, what)
23
30
  }
24
31
 
25
- override fun onSpanRemoved(text: Spannable, what: Any, start: Int, end: Int) {
32
+ override fun onSpanRemoved(
33
+ text: Spannable,
34
+ what: Any,
35
+ start: Int,
36
+ end: Int,
37
+ ) {
26
38
  updateNextLineLayout(what, text, end)
27
39
  updateUnorderedListSpans(what, text, end)
28
40
  emitEvent(text, what)
29
41
  }
30
42
 
31
- override fun onSpanChanged(text: Spannable, what: Any, ostart: Int, oend: Int, nstart: Int, nend: Int) {
43
+ override fun onSpanChanged(
44
+ text: Spannable,
45
+ what: Any,
46
+ ostart: Int,
47
+ oend: Int,
48
+ nstart: Int,
49
+ nend: Int,
50
+ ) {
32
51
  // Do nothing for now
33
52
  }
34
53
 
35
- private fun updateUnorderedListSpans(what: Any, text: Spannable, end: Int) {
36
- if (what is EnrichedOrderedListSpan) {
54
+ private fun updateUnorderedListSpans(
55
+ what: Any,
56
+ text: Spannable,
57
+ end: Int,
58
+ ) {
59
+ if (what is EnrichedInputOrderedListSpan) {
37
60
  view.listStyles?.updateOrderedListIndexes(text, end)
38
61
  }
39
62
  }
40
63
 
41
64
  // After adding/removing heading span, we have to manually set empty paragraph span to the following text
42
65
  // This allows us to update the layout (as it's not updated automatically - looks like an Android issue)
43
- private fun updateNextLineLayout(what: Any, text: Spannable, end: Int) {
44
- class EmptySpan : ParagraphStyle {}
66
+ private fun updateNextLineLayout(
67
+ what: Any,
68
+ text: Spannable,
69
+ end: Int,
70
+ ) {
71
+ class EmptySpan : ParagraphStyle
45
72
 
46
73
  if (what is EnrichedHeadingSpan) {
47
74
  val finalStart = (end + 1)
@@ -51,12 +78,15 @@ class EnrichedSpanWatcher(private val view: EnrichedTextInputView) : SpanWatcher
51
78
  }
52
79
  }
53
80
 
54
- fun emitEvent(s: Spannable, what: Any?) {
81
+ fun emitEvent(
82
+ s: Spannable,
83
+ what: Any?,
84
+ ) {
55
85
  // Do not parse spannable and emit event if onChangeHtml is not provided
56
86
  if (!view.shouldEmitHtml) return
57
87
 
58
88
  // Emit event only if we change one of ours spans
59
- if (what != null && what !is EnrichedSpan) return
89
+ if (what != null && what !is EnrichedInputSpan) return
60
90
 
61
91
  val html = EnrichedParser.toHtml(s)
62
92
  if (html == previousHtml) return
@@ -65,11 +95,13 @@ class EnrichedSpanWatcher(private val view: EnrichedTextInputView) : SpanWatcher
65
95
  val context = view.context as ReactContext
66
96
  val surfaceId = UIManagerHelper.getSurfaceId(context)
67
97
  val dispatcher = UIManagerHelper.getEventDispatcherForReactTag(context, view.id)
68
- dispatcher?.dispatchEvent(OnChangeHtmlEvent(
69
- surfaceId,
70
- view.id,
71
- html,
72
- view.experimentalSynchronousEvents,
73
- ))
98
+ dispatcher?.dispatchEvent(
99
+ OnChangeHtmlEvent(
100
+ surfaceId,
101
+ view.id,
102
+ html,
103
+ view.experimentalSynchronousEvents,
104
+ ),
105
+ )
74
106
  }
75
107
  }
@@ -1,21 +1,35 @@
1
- package com.swmansion.enriched.watchers
1
+ package com.swmansion.enriched.textinput.watchers
2
2
 
3
3
  import android.text.Editable
4
4
  import android.text.TextWatcher
5
5
  import com.facebook.react.bridge.ReactContext
6
6
  import com.facebook.react.uimanager.UIManagerHelper
7
- import com.swmansion.enriched.EnrichedTextInputView
8
- import com.swmansion.enriched.events.OnChangeTextEvent
7
+ import com.swmansion.enriched.textinput.EnrichedTextInputView
8
+ import com.swmansion.enriched.textinput.events.OnChangeTextEvent
9
9
 
10
- class EnrichedTextWatcher(private val view: EnrichedTextInputView) : TextWatcher {
10
+ class EnrichedTextWatcher(
11
+ private val view: EnrichedTextInputView,
12
+ ) : TextWatcher {
11
13
  private var endCursorPosition: Int = 0
14
+ private var startCursorPosition: Int = 0
12
15
  private var previousTextLength: Int = 0
13
16
 
14
- override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
17
+ override fun beforeTextChanged(
18
+ s: CharSequence?,
19
+ start: Int,
20
+ count: Int,
21
+ after: Int,
22
+ ) {
15
23
  previousTextLength = s?.length ?: 0
16
24
  }
17
25
 
18
- override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
26
+ override fun onTextChanged(
27
+ s: CharSequence?,
28
+ start: Int,
29
+ before: Int,
30
+ count: Int,
31
+ ) {
32
+ startCursorPosition = start
19
33
  endCursorPosition = start + count
20
34
  view.layoutManager.invalidateLayout()
21
35
  view.isRemovingMany = !view.isDuringTransaction && before > count + 1
@@ -33,19 +47,28 @@ class EnrichedTextWatcher(private val view: EnrichedTextInputView) : TextWatcher
33
47
  view.inlineStyles?.afterTextChanged(s, endCursorPosition)
34
48
  view.paragraphStyles?.afterTextChanged(s, endCursorPosition, previousTextLength)
35
49
  view.listStyles?.afterTextChanged(s, endCursorPosition, previousTextLength)
36
- view.parametrizedStyles?.afterTextChanged(s, endCursorPosition)
50
+ view.parametrizedStyles?.afterTextChanged(s, startCursorPosition, endCursorPosition)
37
51
  }
38
52
 
39
- private fun emitEvents(s: Editable) {
53
+ private fun emitChangeText(editable: Editable) {
54
+ if (!view.shouldEmitOnChangeText) {
55
+ return
56
+ }
40
57
  val context = view.context as ReactContext
41
58
  val surfaceId = UIManagerHelper.getSurfaceId(context)
42
59
  val dispatcher = UIManagerHelper.getEventDispatcherForReactTag(context, view.id)
43
- dispatcher?.dispatchEvent(OnChangeTextEvent(
44
- surfaceId,
45
- view.id,
46
- s,
47
- view.experimentalSynchronousEvents,
48
- ))
60
+ dispatcher?.dispatchEvent(
61
+ OnChangeTextEvent(
62
+ surfaceId,
63
+ view.id,
64
+ editable,
65
+ view.experimentalSynchronousEvents,
66
+ ),
67
+ )
68
+ }
69
+
70
+ private fun emitEvents(s: Editable) {
71
+ emitChangeText(s)
49
72
  view.spanWatcher?.emitEvent(s, null)
50
73
  }
51
74
  }
@@ -1,7 +1,7 @@
1
1
  cmake_minimum_required(VERSION 3.13)
2
2
  set(CMAKE_VERBOSE_MAKEFILE on)
3
3
 
4
- set(LIB_LITERAL RNEnrichedTextInputViewSpec)
4
+ set(LIB_LITERAL ReactNativeEnrichedSpec)
5
5
  set(LIB_TARGET_NAME react_codegen_${LIB_LITERAL})
6
6
 
7
7
  set(LIB_ANDROID_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
@@ -11,6 +11,12 @@ set(LIB_ANDROID_GENERATED_COMPONENTS_DIR ${LIB_ANDROID_GENERATED_JNI_DIR}/react/
11
11
  file(GLOB LIB_MODULE_SRCS CONFIGURE_DEPENDS *.cpp react/renderer/components/${LIB_LITERAL}/*.cpp)
12
12
  file(GLOB LIB_CODEGEN_SRCS CONFIGURE_DEPENDS ${LIB_ANDROID_GENERATED_COMPONENTS_DIR}/*.cpp)
13
13
 
14
+ if(NOT DEFINED REACT_NATIVE_MINOR_VERSION)
15
+ set(REACT_NATIVE_MINOR_VERSION ${ReactAndroid_VERSION_MINOR})
16
+ endif()
17
+
18
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DREACT_NATIVE_MINOR_VERSION=${REACT_NATIVE_MINOR_VERSION}")
19
+
14
20
  add_library(
15
21
  ${LIB_TARGET_NAME}
16
22
  SHARED
@@ -0,0 +1,11 @@
1
+ #include "ReactNativeEnrichedSpec.h"
2
+
3
+ namespace facebook::react {
4
+
5
+ std::shared_ptr<TurboModule> ReactNativeEnrichedSpec_ModuleProvider(
6
+ const std::string &moduleName, const JavaTurboModule::InitParams &params) {
7
+
8
+ return nullptr;
9
+ }
10
+
11
+ } // namespace facebook::react
@@ -0,0 +1,15 @@
1
+ #pragma once
2
+
3
+ #include <ReactCommon/JavaTurboModule.h>
4
+ #include <ReactCommon/TurboModule.h>
5
+ #include <jsi/jsi.h>
6
+
7
+ #include <react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputComponentDescriptor.h>
8
+
9
+ namespace facebook::react {
10
+
11
+ JSI_EXPORT
12
+ std::shared_ptr<TurboModule> ReactNativeEnrichedSpec_ModuleProvider(
13
+ const std::string &moduleName, const JavaTurboModule::InitParams &params);
14
+
15
+ } // namespace facebook::react
@@ -2,7 +2,7 @@
2
2
 
3
3
  #include "ComponentDescriptors.h"
4
4
 
5
- #include <react/renderer/components/RNEnrichedTextInputViewSpec/Props.h>
5
+ #include <react/renderer/components/ReactNativeEnrichedSpec/Props.h>
6
6
  #include <react/renderer/core/LayoutConstraints.h>
7
7
  #include <react/utils/ContextContainer.h>
8
8
 
@@ -3,8 +3,8 @@
3
3
  #include "EnrichedTextInputMeasurementManager.h"
4
4
  #include "EnrichedTextInputState.h"
5
5
 
6
- #include <react/renderer/components/RNEnrichedTextInputViewSpec/EventEmitters.h>
7
- #include <react/renderer/components/RNEnrichedTextInputViewSpec/Props.h>
6
+ #include <react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.h>
7
+ #include <react/renderer/components/ReactNativeEnrichedSpec/Props.h>
8
8
  #include <react/renderer/components/view/ConcreteViewShadowNode.h>
9
9
 
10
10
  namespace facebook::react {
@@ -0,0 +1,46 @@
1
+ #pragma once
2
+
3
+ #include <folly/dynamic.h>
4
+ #include <react/renderer/components/ReactNativeEnrichedSpec/Props.h>
5
+ #include <react/renderer/core/propsConversions.h>
6
+
7
+ #if REACT_NATIVE_MINOR_VERSION >= 81
8
+ #include <react/renderer/components/FBReactNativeSpec/Props.h>
9
+ #else
10
+ #include <react/renderer/components/rncore/Props.h>
11
+ #endif
12
+
13
+ namespace facebook::react {
14
+
15
+ #ifdef RN_SERIALIZABLE_STATE
16
+ inline folly::dynamic toDynamic(const EnrichedTextInputViewProps &props) {
17
+ // Serialize only metrics affecting props
18
+ folly::dynamic serializedProps = folly::dynamic::object();
19
+ serializedProps["defaultValue"] = props.defaultValue;
20
+ serializedProps["placeholder"] = props.placeholder;
21
+ serializedProps["fontSize"] = props.fontSize;
22
+ serializedProps["fontWeight"] = props.fontWeight;
23
+ serializedProps["fontStyle"] = props.fontStyle;
24
+ serializedProps["fontFamily"] = props.fontFamily;
25
+ serializedProps["htmlStyle"] = toDynamic(props.htmlStyle);
26
+
27
+ return serializedProps;
28
+ }
29
+ #elif REACT_NATIVE_MINOR_VERSION >= 79
30
+ inline folly::dynamic toDynamic(const EnrichedTextInputViewProps &props) {
31
+ folly::dynamic serializedProps = folly::dynamic::object();
32
+ serializedProps["defaultValue"] = props.defaultValue;
33
+ serializedProps["placeholder"] = props.placeholder;
34
+ serializedProps["fontSize"] = props.fontSize;
35
+ serializedProps["fontWeight"] = props.fontWeight;
36
+ serializedProps["fontStyle"] = props.fontStyle;
37
+ serializedProps["fontFamily"] = props.fontFamily;
38
+ // Ideally we should also serialize htmlStyle, but toDynamic function is not
39
+ // generated in this RN version
40
+ // As RN 0.79 and 0.80 is no longer supported, we can skip it for now
41
+
42
+ return serializedProps;
43
+ }
44
+ #endif
45
+
46
+ } // namespace facebook::react
@@ -27,7 +27,7 @@ NS_ASSUME_NONNULL_BEGIN
27
27
  @public
28
28
  NSDictionary<NSNumber *, id<BaseStyleProtocol>> *stylesDict;
29
29
  NSDictionary<NSNumber *, NSArray<NSNumber *> *> *conflictingStyles;
30
- NSDictionary<NSNumber *, NSArray<NSNumber *> *> *blockingStyles;
30
+ NSMutableDictionary<NSNumber *, NSArray<NSNumber *> *> *blockingStyles;
31
31
  @public
32
32
  BOOL blockEmitting;
33
33
  }
@@ -36,6 +36,7 @@ NS_ASSUME_NONNULL_BEGIN
36
36
  url:(NSString *)url
37
37
  range:(NSRange)range;
38
38
  - (void)emitOnMentionEvent:(NSString *)indicator text:(nullable NSString *)text;
39
+ - (void)emitOnPasteImagesEvent:(NSArray<NSDictionary *> *)images;
39
40
  - (void)anyTextMayHaveBeenModified;
40
41
  - (BOOL)handleStyleBlocksAndConflicts:(StyleType)type range:(NSRange)range;
41
42
  - (NSArray<NSNumber *> *)getPresentStyleTypesFrom:(NSArray<NSNumber *> *)types