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,42 +0,0 @@
1
- package com.swmansion.enriched.spans
2
-
3
- import android.text.TextPaint
4
- import android.text.style.ClickableSpan
5
- import android.view.View
6
- import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
7
- import com.swmansion.enriched.styles.HtmlStyle
8
-
9
- class EnrichedMentionSpan(private val text: String, private val indicator: String, private val attributes: Map<String, String>, private val htmlStyle: HtmlStyle) :
10
- ClickableSpan(), EnrichedInlineSpan {
11
- override val dependsOnHtmlStyle: Boolean = true
12
-
13
- override fun onClick(view: View) {
14
- // Do nothing. Mentions inside the input are not clickable.
15
- // We are using `ClickableSpan` to allow the text to be styled as a clickable element.
16
- }
17
-
18
- override fun updateDrawState(textPaint: TextPaint) {
19
- super.updateDrawState(textPaint)
20
-
21
- val mentionsStyle = htmlStyle.mentionsStyle[indicator] ?: return
22
- textPaint.color = mentionsStyle.color
23
- textPaint.bgColor = mentionsStyle.backgroundColor
24
- textPaint.isUnderlineText = mentionsStyle.underline
25
- }
26
-
27
- fun getAttributes(): Map<String, String> {
28
- return attributes
29
- }
30
-
31
- fun getText(): String {
32
- return text
33
- }
34
-
35
- fun getIndicator(): String {
36
- return indicator
37
- }
38
-
39
- override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedMentionSpan {
40
- return EnrichedMentionSpan(text, indicator, attributes, htmlStyle)
41
- }
42
- }
@@ -1,136 +0,0 @@
1
- package com.swmansion.enriched.spans
2
-
3
- import com.swmansion.enriched.styles.HtmlStyle
4
-
5
- interface ISpanConfig {
6
- val clazz: Class<*>
7
- }
8
-
9
- data class BaseSpanConfig(override val clazz: Class<*>): ISpanConfig
10
- data class ParagraphSpanConfig(override val clazz: Class<*>, val isContinuous: Boolean): ISpanConfig
11
- data class ListSpanConfig(override val clazz: Class<*>, val shortcut: String) : ISpanConfig
12
-
13
- data class StylesMergingConfig(
14
- // styles that should be removed when we apply specific style
15
- val conflictingStyles: Array<String> = emptyArray(),
16
- // styles that should block setting specific style
17
- val blockingStyles: Array<String> = emptyArray(),
18
- )
19
-
20
- object EnrichedSpans {
21
- // inline styles
22
- const val BOLD = "bold"
23
- const val ITALIC = "italic"
24
- const val UNDERLINE = "underline"
25
- const val STRIKETHROUGH = "strikethrough"
26
- const val INLINE_CODE = "inline_code"
27
-
28
- // paragraph styles
29
- const val H1 = "h1"
30
- const val H2 = "h2"
31
- const val H3 = "h3"
32
- const val BLOCK_QUOTE = "block_quote"
33
- const val CODE_BLOCK = "code_block"
34
-
35
- // list styles
36
- const val UNORDERED_LIST = "unordered_list"
37
- const val ORDERED_LIST = "ordered_list"
38
-
39
- // parametrized styles
40
- const val LINK = "link"
41
- const val IMAGE = "image"
42
- const val MENTION = "mention"
43
-
44
- val inlineSpans: Map<String, BaseSpanConfig> = mapOf(
45
- BOLD to BaseSpanConfig(EnrichedBoldSpan::class.java),
46
- ITALIC to BaseSpanConfig(EnrichedItalicSpan::class.java),
47
- UNDERLINE to BaseSpanConfig(EnrichedUnderlineSpan::class.java),
48
- STRIKETHROUGH to BaseSpanConfig(EnrichedStrikeThroughSpan::class.java),
49
- INLINE_CODE to BaseSpanConfig(EnrichedInlineCodeSpan::class.java),
50
- )
51
-
52
- val paragraphSpans: Map<String, ParagraphSpanConfig> = mapOf(
53
- H1 to ParagraphSpanConfig(EnrichedH1Span::class.java, false),
54
- H2 to ParagraphSpanConfig(EnrichedH2Span::class.java, false),
55
- H3 to ParagraphSpanConfig(EnrichedH3Span::class.java, false),
56
- BLOCK_QUOTE to ParagraphSpanConfig(EnrichedBlockQuoteSpan::class.java, true),
57
- CODE_BLOCK to ParagraphSpanConfig(EnrichedCodeBlockSpan::class.java, true),
58
- )
59
-
60
- val listSpans: Map<String, ListSpanConfig> = mapOf(
61
- UNORDERED_LIST to ListSpanConfig(EnrichedUnorderedListSpan::class.java, "- "),
62
- ORDERED_LIST to ListSpanConfig(EnrichedOrderedListSpan::class.java, "1. "),
63
- )
64
-
65
- val parametrizedStyles: Map<String, BaseSpanConfig> = mapOf(
66
- LINK to BaseSpanConfig(EnrichedLinkSpan::class.java),
67
- IMAGE to BaseSpanConfig(EnrichedImageSpan::class.java),
68
- MENTION to BaseSpanConfig(EnrichedMentionSpan::class.java),
69
- )
70
-
71
- val allSpans: Map<String, ISpanConfig> = inlineSpans + paragraphSpans + listSpans + parametrizedStyles
72
-
73
- fun getMergingConfigForStyle(style: String, htmlStyle: HtmlStyle): StylesMergingConfig? {
74
- return when (style) {
75
- BOLD -> {
76
- val blockingStyles = mutableListOf(CODE_BLOCK)
77
- if (htmlStyle.h1Bold) blockingStyles.add(H1)
78
- if (htmlStyle.h2Bold) blockingStyles.add(H2)
79
- if (htmlStyle.h3Bold) blockingStyles.add(H3)
80
- StylesMergingConfig(blockingStyles = blockingStyles.toTypedArray())
81
- }
82
- ITALIC -> StylesMergingConfig(
83
- blockingStyles = arrayOf(CODE_BLOCK)
84
- )
85
- UNDERLINE -> StylesMergingConfig(
86
- blockingStyles = arrayOf(CODE_BLOCK)
87
- )
88
- STRIKETHROUGH -> StylesMergingConfig(
89
- blockingStyles = arrayOf(CODE_BLOCK)
90
- )
91
- INLINE_CODE -> StylesMergingConfig(
92
- conflictingStyles = arrayOf(MENTION, LINK),
93
- blockingStyles = arrayOf(CODE_BLOCK)
94
- )
95
- H1 -> {
96
- val conflictingStyles = mutableListOf(H2, H3, ORDERED_LIST, UNORDERED_LIST, BLOCK_QUOTE, CODE_BLOCK)
97
- if (htmlStyle.h1Bold) conflictingStyles.add(BOLD)
98
- StylesMergingConfig(conflictingStyles = conflictingStyles.toTypedArray())
99
- }
100
- H2 -> {
101
- val conflictingStyles = mutableListOf(H1, H3, ORDERED_LIST, UNORDERED_LIST, BLOCK_QUOTE, CODE_BLOCK)
102
- if (htmlStyle.h2Bold) conflictingStyles.add(BOLD)
103
- StylesMergingConfig(conflictingStyles = conflictingStyles.toTypedArray())
104
- }
105
- H3 -> {
106
- val conflictingStyles = mutableListOf(H1, H2, ORDERED_LIST, UNORDERED_LIST, BLOCK_QUOTE, CODE_BLOCK)
107
- if (htmlStyle.h3Bold) conflictingStyles.add(BOLD)
108
- StylesMergingConfig(conflictingStyles = conflictingStyles.toTypedArray())
109
- }
110
- BLOCK_QUOTE -> StylesMergingConfig(
111
- conflictingStyles = arrayOf(H1, H2, H3, CODE_BLOCK, ORDERED_LIST, UNORDERED_LIST)
112
- )
113
- CODE_BLOCK -> StylesMergingConfig(
114
- conflictingStyles = arrayOf(H1, H2, H3, BOLD, ITALIC, UNDERLINE, STRIKETHROUGH, UNORDERED_LIST, ORDERED_LIST, BLOCK_QUOTE, INLINE_CODE)
115
- )
116
- UNORDERED_LIST -> StylesMergingConfig(
117
- conflictingStyles = arrayOf(H1, H2, H3, ORDERED_LIST, CODE_BLOCK, BLOCK_QUOTE)
118
- )
119
- ORDERED_LIST -> StylesMergingConfig(
120
- conflictingStyles = arrayOf(H1, H2, H3, UNORDERED_LIST, CODE_BLOCK, BLOCK_QUOTE),
121
- )
122
- LINK -> StylesMergingConfig(
123
- blockingStyles = arrayOf(INLINE_CODE, CODE_BLOCK, MENTION)
124
- )
125
- IMAGE -> StylesMergingConfig()
126
- MENTION -> StylesMergingConfig(
127
- blockingStyles = arrayOf(INLINE_CODE, CODE_BLOCK, LINK)
128
- )
129
- else -> null
130
- }
131
- }
132
-
133
- fun isTypeContinuous(type: Class<*>): Boolean {
134
- return paragraphSpans.values.find { it.clazz == type }?.isContinuous == true
135
- }
136
- }
@@ -1,14 +0,0 @@
1
- package com.swmansion.enriched.spans
2
-
3
- import android.text.style.StrikethroughSpan
4
- import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
5
- import com.swmansion.enriched.styles.HtmlStyle
6
-
7
- @Suppress("UNUSED_PARAMETER")
8
- class EnrichedStrikeThroughSpan(private val htmlStyle: HtmlStyle) : StrikethroughSpan(), EnrichedInlineSpan {
9
- override val dependsOnHtmlStyle: Boolean = false
10
-
11
- override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedStrikeThroughSpan {
12
- return EnrichedStrikeThroughSpan(htmlStyle)
13
- }
14
- }
@@ -1,14 +0,0 @@
1
- package com.swmansion.enriched.spans
2
-
3
- import android.text.style.UnderlineSpan
4
- import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
5
- import com.swmansion.enriched.styles.HtmlStyle
6
-
7
- @Suppress("UNUSED_PARAMETER")
8
- class EnrichedUnderlineSpan(private val htmlStyle: HtmlStyle) : UnderlineSpan(), EnrichedInlineSpan {
9
- override val dependsOnHtmlStyle: Boolean = false
10
-
11
- override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedUnderlineSpan {
12
- return EnrichedUnderlineSpan(htmlStyle)
13
- }
14
- }
@@ -1,4 +0,0 @@
1
- package com.swmansion.enriched.spans.interfaces
2
-
3
- interface EnrichedBlockSpan : EnrichedSpan, EnrichedZeroWidthSpaceSpan {
4
- }
@@ -1,4 +0,0 @@
1
- package com.swmansion.enriched.spans.interfaces
2
-
3
- interface EnrichedHeadingSpan : EnrichedParagraphSpan {
4
- }
@@ -1,4 +0,0 @@
1
- package com.swmansion.enriched.spans.interfaces
2
-
3
- interface EnrichedInlineSpan : EnrichedSpan {
4
- }
@@ -1,4 +0,0 @@
1
- package com.swmansion.enriched.spans.interfaces
2
-
3
- interface EnrichedParagraphSpan : EnrichedSpan, EnrichedZeroWidthSpaceSpan {
4
- }
@@ -1,8 +0,0 @@
1
- package com.swmansion.enriched.spans.interfaces
2
-
3
- import com.swmansion.enriched.styles.HtmlStyle
4
-
5
- interface EnrichedSpan {
6
- val dependsOnHtmlStyle: Boolean
7
- fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedSpan
8
- }
@@ -1,172 +0,0 @@
1
- package com.swmansion.enriched.styles
2
-
3
- import android.text.Editable
4
- import android.text.Spannable
5
- import android.text.SpannableStringBuilder
6
- import android.text.Spanned
7
- import com.swmansion.enriched.EnrichedTextInputView
8
- import com.swmansion.enriched.spans.EnrichedOrderedListSpan
9
- import com.swmansion.enriched.spans.EnrichedSpans
10
- import com.swmansion.enriched.spans.EnrichedUnorderedListSpan
11
- import com.swmansion.enriched.utils.getParagraphBounds
12
- import com.swmansion.enriched.utils.getSafeSpanBoundaries
13
-
14
- class ListStyles(private val view: EnrichedTextInputView) {
15
- private fun <T>getPreviousParagraphSpan(spannable: Spannable, s: Int, type: Class<T>): T? {
16
- if (s <= 0) return null
17
-
18
- val (previousParagraphStart, previousParagraphEnd) = spannable.getParagraphBounds(s - 1)
19
- val spans = spannable.getSpans(previousParagraphStart, previousParagraphEnd, type)
20
-
21
- if (spans.isNotEmpty()) {
22
- return spans.last()
23
- }
24
-
25
- return null
26
- }
27
-
28
- private fun <T>isPreviousParagraphList(spannable: Spannable, s: Int, type: Class<T>): Boolean {
29
- val previousSpan = getPreviousParagraphSpan(spannable, s, type)
30
-
31
- return previousSpan != null
32
- }
33
-
34
- private fun getOrderedListIndex(spannable: Spannable, s: Int): Int {
35
- val span = getPreviousParagraphSpan(spannable, s, EnrichedOrderedListSpan::class.java)
36
- val index = span?.getIndex() ?: 0
37
- return index + 1
38
- }
39
-
40
- private fun setSpan(spannable: Spannable, name: String, start: Int, end: Int) {
41
- val (safeStart, safeEnd) = spannable.getSafeSpanBoundaries(start, end)
42
-
43
- if (name == EnrichedSpans.UNORDERED_LIST) {
44
- val span = EnrichedUnorderedListSpan(view.htmlStyle)
45
- spannable.setSpan(span, safeStart, safeEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
46
- return
47
- }
48
-
49
- if (name == EnrichedSpans.ORDERED_LIST) {
50
- val index = getOrderedListIndex(spannable, safeStart)
51
- val span = EnrichedOrderedListSpan(index, view.htmlStyle)
52
- spannable.setSpan(span, safeStart, safeEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
53
- }
54
- }
55
-
56
- private fun <T>removeSpansForRange(spannable: Spannable, start: Int, end: Int, clazz: Class<T>): Boolean {
57
- val ssb = spannable as SpannableStringBuilder
58
- val spans = ssb.getSpans(start, end, clazz)
59
- if (spans.isEmpty()) return false
60
-
61
- for (span in spans) {
62
- ssb.removeSpan(span)
63
- }
64
-
65
- ssb.replace(start, end, ssb.substring(start, end).replace("\u200B", ""))
66
- return true
67
- }
68
-
69
- fun updateOrderedListIndexes(text: Spannable, position: Int) {
70
- val spans = text.getSpans(position + 1, text.length, EnrichedOrderedListSpan::class.java)
71
- for (span in spans) {
72
- val spanStart = text.getSpanStart(span)
73
- val index = getOrderedListIndex(text, spanStart)
74
- span.setIndex(index)
75
- }
76
- }
77
-
78
- fun toggleStyle(name: String) {
79
- if (view.selection == null) return
80
- val config = EnrichedSpans.listSpans[name] ?: return
81
- val spannable = view.text as SpannableStringBuilder
82
- val (start, end) = view.selection.getParagraphSelection()
83
- val styleStart = view.spanState?.getStart(name)
84
-
85
- if (styleStart != null) {
86
- view.spanState.setStart(name, null)
87
- removeSpansForRange(spannable, start, end, config.clazz)
88
- view.selection.validateStyles()
89
-
90
- return
91
- }
92
-
93
- if (start == end) {
94
- spannable.insert(start, "\u200B")
95
- view.spanState?.setStart(name, start + 1)
96
- removeSpansForRange(spannable, start, end, config.clazz)
97
- setSpan(spannable, name, start, end + 1)
98
-
99
- return
100
- }
101
-
102
- var currentStart = start
103
- val paragraphs = spannable.substring(start, end).split("\n")
104
- removeSpansForRange(spannable, start, end, config.clazz)
105
-
106
- for (paragraph in paragraphs) {
107
- spannable.insert(currentStart, "\u200B")
108
- val currentEnd = currentStart + paragraph.length + 1
109
- setSpan(spannable, name, currentStart, currentEnd)
110
-
111
- currentStart = currentEnd + 1
112
- }
113
-
114
- view.spanState?.setStart(name, currentStart)
115
- }
116
-
117
- private fun handleAfterTextChanged(s: Editable, name: String, endCursorPosition: Int, previousTextLength: Int) {
118
- val config = EnrichedSpans.listSpans[name] ?: return
119
- val cursorPosition = endCursorPosition.coerceAtMost(s.length)
120
- val (start, end) = s.getParagraphBounds(cursorPosition)
121
-
122
- val isBackspace = previousTextLength > s.length
123
- val isNewLine = cursorPosition > 0 && s[cursorPosition - 1] == '\n'
124
- val isShortcut = s.substring(start, end).startsWith(config.shortcut)
125
- val spans = s.getSpans(start, end, config.clazz)
126
-
127
- // Remove spans if cursor is at the start of the paragraph and spans exist
128
- if (isBackspace && start == cursorPosition && spans.isNotEmpty()) {
129
- removeSpansForRange(s, start, end, config.clazz)
130
- return
131
- }
132
-
133
- if (!isBackspace && isShortcut) {
134
- s.replace(start, cursorPosition, "\u200B")
135
- setSpan(s, name, start, start + 1)
136
- // Inform that new span has been added
137
- view.selection?.validateStyles()
138
- return
139
- }
140
-
141
- if (!isBackspace && isNewLine && isPreviousParagraphList(s, start, config.clazz)) {
142
- s.insert(cursorPosition, "\u200B")
143
- setSpan(s, name, start, end + 1)
144
- // Inform that new span has been added
145
- view.selection?.validateStyles()
146
- return
147
- }
148
-
149
- if (spans.isNotEmpty()) {
150
- for (span in spans) {
151
- s.removeSpan(span)
152
- }
153
-
154
- setSpan(s, name, start, end)
155
- }
156
- }
157
-
158
- fun afterTextChanged(s: Editable, endCursorPosition: Int, previousTextLength: Int) {
159
- handleAfterTextChanged(s, EnrichedSpans.ORDERED_LIST, endCursorPosition, previousTextLength)
160
- handleAfterTextChanged(s, EnrichedSpans.UNORDERED_LIST, endCursorPosition, previousTextLength)
161
- }
162
-
163
- fun getStyleRange(): Pair<Int, Int> {
164
- return view.selection?.getParagraphSelection() ?: Pair(0, 0)
165
- }
166
-
167
- fun removeStyle(name: String, start: Int, end: Int): Boolean {
168
- val config = EnrichedSpans.listSpans[name] ?: return false
169
- val spannable = view.text as Spannable
170
- return removeSpansForRange(spannable, start, end, config.clazz)
171
- }
172
- }
@@ -1,204 +0,0 @@
1
- package com.swmansion.enriched.utils
2
-
3
- import com.facebook.react.bridge.Arguments
4
- import com.facebook.react.bridge.ReactContext
5
- import com.facebook.react.bridge.WritableMap
6
- import com.facebook.react.uimanager.UIManagerHelper
7
- import com.swmansion.enriched.EnrichedTextInputView
8
- import com.swmansion.enriched.events.OnChangeStateEvent
9
- import com.swmansion.enriched.spans.EnrichedSpans
10
-
11
- class EnrichedSpanState(private val view: EnrichedTextInputView) {
12
- private var previousPayload: WritableMap? = null
13
-
14
- var boldStart: Int? = null
15
- private set
16
- var italicStart: Int? = null
17
- private set
18
- var underlineStart: Int? = null
19
- private set
20
- var strikethroughStart: Int? = null
21
- private set
22
- var inlineCodeStart: Int? = null
23
- private set
24
- var h1Start: Int? = null
25
- private set
26
- var h2Start: Int? = null
27
- private set
28
- var h3Start: Int? = null
29
- private set
30
- var codeBlockStart: Int? = null
31
- private set
32
- var blockQuoteStart: Int? = null
33
- private set
34
- var orderedListStart: Int? = null
35
- private set
36
- var unorderedListStart: Int? = null
37
- private set
38
- var linkStart: Int? = null
39
- private set
40
- var imageStart: Int? = null
41
- private set
42
- var mentionStart: Int? = null
43
- private set
44
-
45
- fun setBoldStart(start: Int?) {
46
- this.boldStart = start
47
- emitStateChangeEvent()
48
- }
49
-
50
- fun setItalicStart(start: Int?) {
51
- this.italicStart = start
52
- emitStateChangeEvent()
53
- }
54
-
55
- fun setUnderlineStart(start: Int?) {
56
- this.underlineStart = start
57
- emitStateChangeEvent()
58
- }
59
-
60
- fun setStrikethroughStart(start: Int?) {
61
- this.strikethroughStart = start
62
- emitStateChangeEvent()
63
- }
64
-
65
- fun setInlineCodeStart(start: Int?) {
66
- this.inlineCodeStart = start
67
- emitStateChangeEvent()
68
- }
69
-
70
- fun setH1Start(start: Int?) {
71
- this.h1Start = start
72
- emitStateChangeEvent()
73
- }
74
-
75
- fun setH2Start(start: Int?) {
76
- this.h2Start = start
77
- emitStateChangeEvent()
78
- }
79
-
80
- fun setH3Start(start: Int?) {
81
- this.h3Start = start
82
- emitStateChangeEvent()
83
- }
84
-
85
- fun setCodeBlockStart(start: Int?) {
86
- this.codeBlockStart = start
87
- emitStateChangeEvent()
88
- }
89
-
90
- fun setBlockQuoteStart(start: Int?) {
91
- this.blockQuoteStart = start
92
- emitStateChangeEvent()
93
- }
94
-
95
- fun setOrderedListStart(start: Int?) {
96
- this.orderedListStart = start
97
- emitStateChangeEvent()
98
- }
99
-
100
- fun setUnorderedListStart(start: Int?) {
101
- this.unorderedListStart = start
102
- emitStateChangeEvent()
103
- }
104
-
105
- fun setLinkStart(start: Int?) {
106
- this.linkStart = start
107
- emitStateChangeEvent()
108
- }
109
-
110
- fun setImageStart(start: Int?) {
111
- this.imageStart = start
112
- emitStateChangeEvent()
113
- }
114
-
115
- fun setMentionStart(start: Int?) {
116
- this.mentionStart = start
117
- emitStateChangeEvent()
118
- }
119
-
120
- fun getStart(name: String): Int? {
121
- val start = when (name) {
122
- EnrichedSpans.BOLD -> boldStart
123
- EnrichedSpans.ITALIC -> italicStart
124
- EnrichedSpans.UNDERLINE -> underlineStart
125
- EnrichedSpans.STRIKETHROUGH -> strikethroughStart
126
- EnrichedSpans.INLINE_CODE -> inlineCodeStart
127
- EnrichedSpans.H1 -> h1Start
128
- EnrichedSpans.H2 -> h2Start
129
- EnrichedSpans.H3 -> h3Start
130
- EnrichedSpans.CODE_BLOCK -> codeBlockStart
131
- EnrichedSpans.BLOCK_QUOTE -> blockQuoteStart
132
- EnrichedSpans.ORDERED_LIST -> orderedListStart
133
- EnrichedSpans.UNORDERED_LIST -> unorderedListStart
134
- EnrichedSpans.LINK -> linkStart
135
- EnrichedSpans.IMAGE -> imageStart
136
- EnrichedSpans.MENTION -> mentionStart
137
- else -> null
138
- }
139
-
140
- return start
141
- }
142
-
143
- fun setStart(name: String, start: Int?) {
144
- when (name) {
145
- EnrichedSpans.BOLD -> setBoldStart(start)
146
- EnrichedSpans.ITALIC -> setItalicStart(start)
147
- EnrichedSpans.UNDERLINE -> setUnderlineStart(start)
148
- EnrichedSpans.STRIKETHROUGH -> setStrikethroughStart(start)
149
- EnrichedSpans.INLINE_CODE -> setInlineCodeStart(start)
150
- EnrichedSpans.H1 -> setH1Start(start)
151
- EnrichedSpans.H2 -> setH2Start(start)
152
- EnrichedSpans.H3 -> setH3Start(start)
153
- EnrichedSpans.CODE_BLOCK -> setCodeBlockStart(start)
154
- EnrichedSpans.BLOCK_QUOTE -> setBlockQuoteStart(start)
155
- EnrichedSpans.ORDERED_LIST -> setOrderedListStart(start)
156
- EnrichedSpans.UNORDERED_LIST -> setUnorderedListStart(start)
157
- EnrichedSpans.LINK -> setLinkStart(start)
158
- EnrichedSpans.IMAGE -> setImageStart(start)
159
- EnrichedSpans.MENTION -> setMentionStart(start)
160
- }
161
- }
162
-
163
- private fun emitStateChangeEvent() {
164
- val payload: WritableMap = Arguments.createMap()
165
- payload.putBoolean("isBold", boldStart != null)
166
- payload.putBoolean("isItalic", italicStart != null)
167
- payload.putBoolean("isUnderline", underlineStart != null)
168
- payload.putBoolean("isStrikeThrough", strikethroughStart != null)
169
- payload.putBoolean("isInlineCode", inlineCodeStart != null)
170
- payload.putBoolean("isH1", h1Start != null)
171
- payload.putBoolean("isH2", h2Start != null)
172
- payload.putBoolean("isH3", h3Start != null)
173
- payload.putBoolean("isCodeBlock", codeBlockStart != null)
174
- payload.putBoolean("isBlockQuote", blockQuoteStart != null)
175
- payload.putBoolean("isOrderedList", orderedListStart != null)
176
- payload.putBoolean("isUnorderedList", unorderedListStart != null)
177
- payload.putBoolean("isLink", linkStart != null)
178
- payload.putBoolean("isImage", imageStart != null)
179
- payload.putBoolean("isMention", mentionStart != null)
180
-
181
- // Do not emit event if payload is the same
182
- if (previousPayload == payload) {
183
- return
184
- }
185
-
186
- previousPayload = Arguments.createMap().apply {
187
- merge(payload)
188
- }
189
-
190
- val context = view.context as ReactContext
191
- val surfaceId = UIManagerHelper.getSurfaceId(context)
192
- val dispatcher = UIManagerHelper.getEventDispatcherForReactTag(context, view.id)
193
- dispatcher?.dispatchEvent(OnChangeStateEvent(
194
- surfaceId,
195
- view.id,
196
- payload,
197
- view.experimentalSynchronousEvents,
198
- ))
199
- }
200
-
201
- companion object {
202
- const val NAME = "ReactNativeEnrichedView"
203
- }
204
- }
@@ -1,22 +0,0 @@
1
-
2
- /**
3
- * This code was generated by
4
- * [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
5
- *
6
- * Do not edit this file as changes may cause incorrect behavior and will be
7
- * lost once the code is regenerated.
8
- *
9
- * @generated by codegen project: GenerateModuleJniCpp.js
10
- */
11
-
12
- #include "RNEnrichedTextInputViewSpec.h"
13
-
14
- namespace facebook::react {
15
-
16
- std::shared_ptr<TurboModule> RNEnrichedTextInputViewSpec_ModuleProvider(
17
- const std::string &moduleName, const JavaTurboModule::InitParams &params) {
18
-
19
- return nullptr;
20
- }
21
-
22
- } // namespace facebook::react
@@ -1,26 +0,0 @@
1
-
2
- /**
3
- * This code was generated by
4
- * [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
5
- *
6
- * Do not edit this file as changes may cause incorrect behavior and will be
7
- * lost once the code is regenerated.
8
- *
9
- * @generated by codegen project: GenerateModuleJniH.js
10
- */
11
-
12
- #pragma once
13
-
14
- #include <ReactCommon/JavaTurboModule.h>
15
- #include <ReactCommon/TurboModule.h>
16
- #include <jsi/jsi.h>
17
-
18
- #include <react/renderer/components/RNEnrichedTextInputViewSpec/EnrichedTextInputComponentDescriptor.h>
19
-
20
- namespace facebook::react {
21
-
22
- JSI_EXPORT
23
- std::shared_ptr<TurboModule> RNEnrichedTextInputViewSpec_ModuleProvider(
24
- const std::string &moduleName, const JavaTurboModule::InitParams &params);
25
-
26
- } // namespace facebook::react