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
@@ -249,13 +249,16 @@ static void const *kInputKey = &kInputKey;
249
249
  typedInput->stylesDict[@([UnorderedListStyle getStyleType])];
250
250
  OrderedListStyle *olStyle =
251
251
  typedInput->stylesDict[@([OrderedListStyle getStyleType])];
252
- if (ulStyle == nullptr || olStyle == nullptr) {
252
+ CheckboxListStyle *cbStyle =
253
+ typedInput->stylesDict[@([CheckboxListStyle getStyleType])];
254
+ if (ulStyle == nullptr || olStyle == nullptr || cbStyle == nullptr) {
253
255
  return;
254
256
  }
255
257
 
256
258
  NSMutableArray *allLists = [[NSMutableArray alloc] init];
257
259
  [allLists addObjectsFromArray:[ulStyle findAllOccurences:visibleCharRange]];
258
260
  [allLists addObjectsFromArray:[olStyle findAllOccurences:visibleCharRange]];
261
+ [allLists addObjectsFromArray:[cbStyle findAllOccurences:visibleCharRange]];
259
262
 
260
263
  for (StylePair *pair in allLists) {
261
264
  NSParagraphStyle *pStyle = (NSParagraphStyle *)pair.styleValue;
@@ -280,62 +283,35 @@ static void const *kInputKey = &kInputKey;
280
283
  NSTextContainer *container,
281
284
  NSRange lineGlyphRange,
282
285
  BOOL *stop) {
283
- NSString *marker = [self
284
- markerForList:pStyle.textLists
285
- .firstObject
286
- charIndex:
287
- [self
288
- characterIndexForGlyphAtIndex:
289
- lineGlyphRange
290
- .location]
291
- input:typedInput];
292
-
293
- if (pStyle.textLists.firstObject
294
- .markerFormat ==
286
+ NSString *markerFormat =
287
+ pStyle.textLists.firstObject
288
+ .markerFormat;
289
+
290
+ if (markerFormat ==
295
291
  NSTextListMarkerDecimal) {
296
- CGFloat gapWidth =
297
- [typedInput->config
298
- orderedListGapWidth];
299
- CGFloat markerWidth =
300
- [marker sizeWithAttributes:
301
- markerAttributes]
302
- .width;
303
- CGFloat markerX = usedRect.origin.x -
304
- gapWidth -
305
- markerWidth / 2;
306
-
307
- [marker drawAtPoint:CGPointMake(
308
- markerX,
309
- usedRect.origin
310
- .y +
311
- origin.y)
312
- withAttributes:markerAttributes];
313
- } else {
314
- CGFloat gapWidth =
315
- [typedInput->config
316
- unorderedListGapWidth];
317
- CGFloat bulletSize =
318
- [typedInput->config
319
- unorderedListBulletSize];
320
- CGFloat bulletX = usedRect.origin.x -
321
- gapWidth -
322
- bulletSize / 2;
323
- CGFloat centerY =
324
- CGRectGetMidY(usedRect);
325
-
326
- CGContextRef context =
327
- UIGraphicsGetCurrentContext();
328
- CGContextSaveGState(context);
329
- {
330
- [[typedInput->config
331
- unorderedListBulletColor]
332
- setFill];
333
- CGContextAddArc(
334
- context, bulletX, centerY,
335
- bulletSize / 2, 0, 2 * M_PI, YES);
336
- CGContextFillPath(context);
337
- }
338
- CGContextRestoreGState(context);
292
+ NSString *marker = [self
293
+ getDecimalMarkerForList:typedInput
294
+ charIndex:
295
+ [self
296
+ characterIndexForGlyphAtIndex:
297
+ lineGlyphRange
298
+ .location]];
299
+ [self drawDecimal:typedInput
300
+ marker:marker
301
+ markerAttributes:markerAttributes
302
+ origin:origin
303
+ usedRect:usedRect];
304
+ } else if (markerFormat ==
305
+ NSTextListMarkerDisc) {
306
+ [self drawBullet:typedInput
307
+ origin:origin
308
+ usedRect:usedRect];
309
+ } else if ([markerFormat
310
+ hasPrefix:@"{checkbox"]) {
311
+ [self drawCheckbox:typedInput
312
+ markerFormat:markerFormat
313
+ origin:origin
314
+ usedRect:usedRect];
339
315
  }
340
316
  // only first line of a list gets its
341
317
  // marker drawn
@@ -345,52 +321,96 @@ static void const *kInputKey = &kInputKey;
345
321
  }
346
322
  }
347
323
 
348
- - (NSString *)markerForList:(NSTextList *)list
349
- charIndex:(NSUInteger)index
350
- input:(EnrichedTextInputView *)input {
351
- if (list.markerFormat == NSTextListMarkerDecimal) {
352
- NSString *fullText = input->textView.textStorage.string;
353
- NSInteger itemNumber = 1;
354
-
355
- NSRange currentParagraph =
356
- [fullText paragraphRangeForRange:NSMakeRange(index, 0)];
357
- if (currentParagraph.location > 0) {
358
- OrderedListStyle *olStyle =
359
- input->stylesDict[@([OrderedListStyle getStyleType])];
360
-
361
- NSInteger prevParagraphsCount = 0;
362
- NSInteger recentParagraphLocation =
363
- [fullText
364
- paragraphRangeForRange:NSMakeRange(currentParagraph.location - 1,
365
- 0)]
366
- .location;
367
-
368
- // seek for previous lists
369
- while (true) {
370
- if ([olStyle detectStyle:NSMakeRange(recentParagraphLocation, 0)]) {
371
- prevParagraphsCount += 1;
372
-
373
- if (recentParagraphLocation > 0) {
374
- recentParagraphLocation =
375
- [fullText
376
- paragraphRangeForRange:NSMakeRange(
377
- recentParagraphLocation - 1, 0)]
378
- .location;
379
- } else {
380
- break;
381
- }
324
+ - (NSString *)getDecimalMarkerForList:(EnrichedTextInputView *)input
325
+ charIndex:(NSUInteger)index {
326
+ NSString *fullText = input->textView.textStorage.string;
327
+ NSInteger itemNumber = 1;
328
+
329
+ NSRange currentParagraph =
330
+ [fullText paragraphRangeForRange:NSMakeRange(index, 0)];
331
+ if (currentParagraph.location > 0) {
332
+ OrderedListStyle *olStyle =
333
+ input->stylesDict[@([OrderedListStyle getStyleType])];
334
+
335
+ NSInteger prevParagraphsCount = 0;
336
+ NSInteger recentParagraphLocation =
337
+ [fullText paragraphRangeForRange:NSMakeRange(
338
+ currentParagraph.location - 1, 0)]
339
+ .location;
340
+
341
+ // seek for previous lists
342
+ while (true) {
343
+ if ([olStyle detectStyle:NSMakeRange(recentParagraphLocation, 0)]) {
344
+ prevParagraphsCount += 1;
345
+
346
+ if (recentParagraphLocation > 0) {
347
+ recentParagraphLocation =
348
+ [fullText
349
+ paragraphRangeForRange:NSMakeRange(
350
+ recentParagraphLocation - 1, 0)]
351
+ .location;
382
352
  } else {
383
353
  break;
384
354
  }
355
+ } else {
356
+ break;
385
357
  }
386
-
387
- itemNumber = prevParagraphsCount + 1;
388
358
  }
389
359
 
390
- return [NSString stringWithFormat:@"%ld.", (long)(itemNumber)];
391
- } else {
392
- return @"•";
360
+ itemNumber = prevParagraphsCount + 1;
361
+ }
362
+
363
+ return [NSString stringWithFormat:@"%ld.", (long)(itemNumber)];
364
+ }
365
+
366
+ - (void)drawCheckbox:(EnrichedTextInputView *)typedInput
367
+ markerFormat:(NSString *)markerFormat
368
+ origin:(CGPoint)origin
369
+ usedRect:(CGRect)usedRect {
370
+ BOOL isChecked = [markerFormat isEqualToString:@"{checkbox:1}"];
371
+
372
+ UIImage *image = isChecked ? typedInput->config.checkboxCheckedImage
373
+ : typedInput->config.checkboxUncheckedImage;
374
+ CGFloat gapWidth = [typedInput->config checkboxListGapWidth];
375
+ CGFloat boxSize = [typedInput->config checkboxListBoxSize];
376
+
377
+ CGFloat centerY = CGRectGetMidY(usedRect) + origin.y;
378
+ CGFloat boxX = origin.x + usedRect.origin.x - gapWidth - boxSize;
379
+ CGFloat boxY = centerY - boxSize / 2.0;
380
+
381
+ [image drawAtPoint:CGPointMake(boxX, boxY)];
382
+ }
383
+
384
+ - (void)drawBullet:(EnrichedTextInputView *)typedInput
385
+ origin:(CGPoint)origin
386
+ usedRect:(CGRect)usedRect {
387
+ CGFloat gapWidth = [typedInput->config unorderedListGapWidth];
388
+ CGFloat bulletSize = [typedInput->config unorderedListBulletSize];
389
+ CGFloat bulletX = origin.x + usedRect.origin.x - gapWidth - bulletSize / 2;
390
+ CGFloat centerY = CGRectGetMidY(usedRect) + origin.y;
391
+
392
+ CGContextRef context = UIGraphicsGetCurrentContext();
393
+ CGContextSaveGState(context);
394
+ {
395
+ [[typedInput->config unorderedListBulletColor] setFill];
396
+ CGContextAddArc(context, bulletX, centerY, bulletSize / 2, 0, 2 * M_PI,
397
+ YES);
398
+ CGContextFillPath(context);
393
399
  }
400
+ CGContextRestoreGState(context);
401
+ }
402
+
403
+ - (void)drawDecimal:(EnrichedTextInputView *)typedInput
404
+ marker:(NSString *)marker
405
+ markerAttributes:(NSDictionary *)markerAttributes
406
+ origin:(CGPoint)origin
407
+ usedRect:(CGRect)usedRect {
408
+ CGFloat gapWidth = [typedInput->config orderedListGapWidth];
409
+ CGFloat markerWidth = [marker sizeWithAttributes:markerAttributes].width;
410
+ CGFloat markerX = usedRect.origin.x - gapWidth - markerWidth / 2;
411
+
412
+ [marker drawAtPoint:CGPointMake(markerX, usedRect.origin.y + origin.y)
413
+ withAttributes:markerAttributes];
394
414
  }
395
415
 
396
416
  @end
@@ -14,7 +14,7 @@
14
14
 
15
15
  namespace facebook::react {
16
16
 
17
- void RNEnrichedTextInputViewSpec_registerComponentDescriptorsFromCodegen(
17
+ void ReactNativeEnrichedSpec_registerComponentDescriptorsFromCodegen(
18
18
  std::shared_ptr<const ComponentDescriptorProviderRegistry> registry) {
19
19
 
20
20
  }
@@ -18,7 +18,7 @@ namespace facebook::react {
18
18
 
19
19
 
20
20
 
21
- void RNEnrichedTextInputViewSpec_registerComponentDescriptorsFromCodegen(
21
+ void ReactNativeEnrichedSpec_registerComponentDescriptorsFromCodegen(
22
22
  std::shared_ptr<const ComponentDescriptorProviderRegistry> registry);
23
23
 
24
24
  } // namespace facebook::react
@@ -0,0 +1,276 @@
1
+
2
+ /**
3
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
4
+ *
5
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
6
+ * once the code is regenerated.
7
+ *
8
+ * @generated by codegen project: GenerateEventEmitterCpp.js
9
+ */
10
+
11
+ #include "EventEmitters.h"
12
+ #include <jsi/JSIDynamic.h>
13
+
14
+ namespace facebook::react {
15
+
16
+ void EnrichedTextInputViewEventEmitter::onInputFocus(OnInputFocus event) const {
17
+ dispatchEvent("inputFocus", [event=std::move(event)](jsi::Runtime &runtime) {
18
+ auto payload = jsi::Object(runtime);
19
+ payload.setProperty(runtime, "target", event.target);
20
+ return payload;
21
+ });
22
+ }
23
+
24
+
25
+ void EnrichedTextInputViewEventEmitter::onInputBlur(OnInputBlur event) const {
26
+ dispatchEvent("inputBlur", [event=std::move(event)](jsi::Runtime &runtime) {
27
+ auto payload = jsi::Object(runtime);
28
+ payload.setProperty(runtime, "target", event.target);
29
+ return payload;
30
+ });
31
+ }
32
+
33
+
34
+ void EnrichedTextInputViewEventEmitter::onChangeText(OnChangeText event) const {
35
+ dispatchEvent("changeText", [event=std::move(event)](jsi::Runtime &runtime) {
36
+ auto payload = jsi::Object(runtime);
37
+ payload.setProperty(runtime, "value", event.value);
38
+ return payload;
39
+ });
40
+ }
41
+
42
+
43
+ void EnrichedTextInputViewEventEmitter::onChangeHtml(OnChangeHtml event) const {
44
+ dispatchEvent("changeHtml", [event=std::move(event)](jsi::Runtime &runtime) {
45
+ auto payload = jsi::Object(runtime);
46
+ payload.setProperty(runtime, "value", event.value);
47
+ return payload;
48
+ });
49
+ }
50
+
51
+
52
+ void EnrichedTextInputViewEventEmitter::onChangeState(OnChangeState event) const {
53
+ dispatchEvent("changeState", [event=std::move(event)](jsi::Runtime &runtime) {
54
+ auto payload = jsi::Object(runtime);
55
+ {
56
+ auto bold = jsi::Object(runtime);
57
+ bold.setProperty(runtime, "isActive", event.bold.isActive);
58
+ bold.setProperty(runtime, "isConflicting", event.bold.isConflicting);
59
+ bold.setProperty(runtime, "isBlocking", event.bold.isBlocking);
60
+ payload.setProperty(runtime, "bold", bold);
61
+ }
62
+ {
63
+ auto italic = jsi::Object(runtime);
64
+ italic.setProperty(runtime, "isActive", event.italic.isActive);
65
+ italic.setProperty(runtime, "isConflicting", event.italic.isConflicting);
66
+ italic.setProperty(runtime, "isBlocking", event.italic.isBlocking);
67
+ payload.setProperty(runtime, "italic", italic);
68
+ }
69
+ {
70
+ auto underline = jsi::Object(runtime);
71
+ underline.setProperty(runtime, "isActive", event.underline.isActive);
72
+ underline.setProperty(runtime, "isConflicting", event.underline.isConflicting);
73
+ underline.setProperty(runtime, "isBlocking", event.underline.isBlocking);
74
+ payload.setProperty(runtime, "underline", underline);
75
+ }
76
+ {
77
+ auto strikeThrough = jsi::Object(runtime);
78
+ strikeThrough.setProperty(runtime, "isActive", event.strikeThrough.isActive);
79
+ strikeThrough.setProperty(runtime, "isConflicting", event.strikeThrough.isConflicting);
80
+ strikeThrough.setProperty(runtime, "isBlocking", event.strikeThrough.isBlocking);
81
+ payload.setProperty(runtime, "strikeThrough", strikeThrough);
82
+ }
83
+ {
84
+ auto inlineCode = jsi::Object(runtime);
85
+ inlineCode.setProperty(runtime, "isActive", event.inlineCode.isActive);
86
+ inlineCode.setProperty(runtime, "isConflicting", event.inlineCode.isConflicting);
87
+ inlineCode.setProperty(runtime, "isBlocking", event.inlineCode.isBlocking);
88
+ payload.setProperty(runtime, "inlineCode", inlineCode);
89
+ }
90
+ {
91
+ auto h1 = jsi::Object(runtime);
92
+ h1.setProperty(runtime, "isActive", event.h1.isActive);
93
+ h1.setProperty(runtime, "isConflicting", event.h1.isConflicting);
94
+ h1.setProperty(runtime, "isBlocking", event.h1.isBlocking);
95
+ payload.setProperty(runtime, "h1", h1);
96
+ }
97
+ {
98
+ auto h2 = jsi::Object(runtime);
99
+ h2.setProperty(runtime, "isActive", event.h2.isActive);
100
+ h2.setProperty(runtime, "isConflicting", event.h2.isConflicting);
101
+ h2.setProperty(runtime, "isBlocking", event.h2.isBlocking);
102
+ payload.setProperty(runtime, "h2", h2);
103
+ }
104
+ {
105
+ auto h3 = jsi::Object(runtime);
106
+ h3.setProperty(runtime, "isActive", event.h3.isActive);
107
+ h3.setProperty(runtime, "isConflicting", event.h3.isConflicting);
108
+ h3.setProperty(runtime, "isBlocking", event.h3.isBlocking);
109
+ payload.setProperty(runtime, "h3", h3);
110
+ }
111
+ {
112
+ auto h4 = jsi::Object(runtime);
113
+ h4.setProperty(runtime, "isActive", event.h4.isActive);
114
+ h4.setProperty(runtime, "isConflicting", event.h4.isConflicting);
115
+ h4.setProperty(runtime, "isBlocking", event.h4.isBlocking);
116
+ payload.setProperty(runtime, "h4", h4);
117
+ }
118
+ {
119
+ auto h5 = jsi::Object(runtime);
120
+ h5.setProperty(runtime, "isActive", event.h5.isActive);
121
+ h5.setProperty(runtime, "isConflicting", event.h5.isConflicting);
122
+ h5.setProperty(runtime, "isBlocking", event.h5.isBlocking);
123
+ payload.setProperty(runtime, "h5", h5);
124
+ }
125
+ {
126
+ auto h6 = jsi::Object(runtime);
127
+ h6.setProperty(runtime, "isActive", event.h6.isActive);
128
+ h6.setProperty(runtime, "isConflicting", event.h6.isConflicting);
129
+ h6.setProperty(runtime, "isBlocking", event.h6.isBlocking);
130
+ payload.setProperty(runtime, "h6", h6);
131
+ }
132
+ {
133
+ auto codeBlock = jsi::Object(runtime);
134
+ codeBlock.setProperty(runtime, "isActive", event.codeBlock.isActive);
135
+ codeBlock.setProperty(runtime, "isConflicting", event.codeBlock.isConflicting);
136
+ codeBlock.setProperty(runtime, "isBlocking", event.codeBlock.isBlocking);
137
+ payload.setProperty(runtime, "codeBlock", codeBlock);
138
+ }
139
+ {
140
+ auto blockQuote = jsi::Object(runtime);
141
+ blockQuote.setProperty(runtime, "isActive", event.blockQuote.isActive);
142
+ blockQuote.setProperty(runtime, "isConflicting", event.blockQuote.isConflicting);
143
+ blockQuote.setProperty(runtime, "isBlocking", event.blockQuote.isBlocking);
144
+ payload.setProperty(runtime, "blockQuote", blockQuote);
145
+ }
146
+ {
147
+ auto orderedList = jsi::Object(runtime);
148
+ orderedList.setProperty(runtime, "isActive", event.orderedList.isActive);
149
+ orderedList.setProperty(runtime, "isConflicting", event.orderedList.isConflicting);
150
+ orderedList.setProperty(runtime, "isBlocking", event.orderedList.isBlocking);
151
+ payload.setProperty(runtime, "orderedList", orderedList);
152
+ }
153
+ {
154
+ auto unorderedList = jsi::Object(runtime);
155
+ unorderedList.setProperty(runtime, "isActive", event.unorderedList.isActive);
156
+ unorderedList.setProperty(runtime, "isConflicting", event.unorderedList.isConflicting);
157
+ unorderedList.setProperty(runtime, "isBlocking", event.unorderedList.isBlocking);
158
+ payload.setProperty(runtime, "unorderedList", unorderedList);
159
+ }
160
+ {
161
+ auto link = jsi::Object(runtime);
162
+ link.setProperty(runtime, "isActive", event.link.isActive);
163
+ link.setProperty(runtime, "isConflicting", event.link.isConflicting);
164
+ link.setProperty(runtime, "isBlocking", event.link.isBlocking);
165
+ payload.setProperty(runtime, "link", link);
166
+ }
167
+ {
168
+ auto image = jsi::Object(runtime);
169
+ image.setProperty(runtime, "isActive", event.image.isActive);
170
+ image.setProperty(runtime, "isConflicting", event.image.isConflicting);
171
+ image.setProperty(runtime, "isBlocking", event.image.isBlocking);
172
+ payload.setProperty(runtime, "image", image);
173
+ }
174
+ {
175
+ auto mention = jsi::Object(runtime);
176
+ mention.setProperty(runtime, "isActive", event.mention.isActive);
177
+ mention.setProperty(runtime, "isConflicting", event.mention.isConflicting);
178
+ mention.setProperty(runtime, "isBlocking", event.mention.isBlocking);
179
+ payload.setProperty(runtime, "mention", mention);
180
+ }
181
+ {
182
+ auto checkboxList = jsi::Object(runtime);
183
+ checkboxList.setProperty(runtime, "isActive", event.checkboxList.isActive);
184
+ checkboxList.setProperty(runtime, "isConflicting", event.checkboxList.isConflicting);
185
+ checkboxList.setProperty(runtime, "isBlocking", event.checkboxList.isBlocking);
186
+ payload.setProperty(runtime, "checkboxList", checkboxList);
187
+ }
188
+ return payload;
189
+ });
190
+ }
191
+
192
+
193
+ void EnrichedTextInputViewEventEmitter::onLinkDetected(OnLinkDetected event) const {
194
+ dispatchEvent("linkDetected", [event=std::move(event)](jsi::Runtime &runtime) {
195
+ auto payload = jsi::Object(runtime);
196
+ payload.setProperty(runtime, "text", event.text);
197
+ payload.setProperty(runtime, "url", event.url);
198
+ payload.setProperty(runtime, "start", event.start);
199
+ payload.setProperty(runtime, "end", event.end);
200
+ return payload;
201
+ });
202
+ }
203
+
204
+
205
+ void EnrichedTextInputViewEventEmitter::onMentionDetected(OnMentionDetected event) const {
206
+ dispatchEvent("mentionDetected", [event=std::move(event)](jsi::Runtime &runtime) {
207
+ auto payload = jsi::Object(runtime);
208
+ payload.setProperty(runtime, "text", event.text);
209
+ payload.setProperty(runtime, "indicator", event.indicator);
210
+ payload.setProperty(runtime, "payload", event.payload);
211
+ return payload;
212
+ });
213
+ }
214
+
215
+
216
+ void EnrichedTextInputViewEventEmitter::onMention(OnMention event) const {
217
+ dispatchEvent("mention", [event=std::move(event)](jsi::Runtime &runtime) {
218
+ auto payload = jsi::Object(runtime);
219
+ payload.setProperty(runtime, "indicator", event.indicator);
220
+ payload.setProperty(runtime, "text", jsi::valueFromDynamic(runtime, event.text));
221
+ return payload;
222
+ });
223
+ }
224
+
225
+
226
+ void EnrichedTextInputViewEventEmitter::onChangeSelection(OnChangeSelection event) const {
227
+ dispatchEvent("changeSelection", [event=std::move(event)](jsi::Runtime &runtime) {
228
+ auto payload = jsi::Object(runtime);
229
+ payload.setProperty(runtime, "start", event.start);
230
+ payload.setProperty(runtime, "end", event.end);
231
+ payload.setProperty(runtime, "text", event.text);
232
+ return payload;
233
+ });
234
+ }
235
+
236
+
237
+ void EnrichedTextInputViewEventEmitter::onRequestHtmlResult(OnRequestHtmlResult event) const {
238
+ dispatchEvent("requestHtmlResult", [event=std::move(event)](jsi::Runtime &runtime) {
239
+ auto payload = jsi::Object(runtime);
240
+ payload.setProperty(runtime, "requestId", event.requestId);
241
+ payload.setProperty(runtime, "html", jsi::valueFromDynamic(runtime, event.html));
242
+ return payload;
243
+ });
244
+ }
245
+
246
+
247
+ void EnrichedTextInputViewEventEmitter::onInputKeyPress(OnInputKeyPress event) const {
248
+ dispatchEvent("inputKeyPress", [event=std::move(event)](jsi::Runtime &runtime) {
249
+ auto payload = jsi::Object(runtime);
250
+ payload.setProperty(runtime, "key", event.key);
251
+ return payload;
252
+ });
253
+ }
254
+
255
+
256
+ void EnrichedTextInputViewEventEmitter::onPasteImages(OnPasteImages event) const {
257
+ dispatchEvent("pasteImages", [event=std::move(event)](jsi::Runtime &runtime) {
258
+ auto payload = jsi::Object(runtime);
259
+
260
+ auto images = jsi::Array(runtime, event.images.size());
261
+ size_t imagesIndex = 0;
262
+ for (auto imagesValue : event.images) {
263
+ auto imagesObject = jsi::Object(runtime);
264
+ imagesObject.setProperty(runtime, "uri", imagesValue.uri);
265
+ imagesObject.setProperty(runtime, "type", imagesValue.type);
266
+ imagesObject.setProperty(runtime, "width", imagesValue.width);
267
+ imagesObject.setProperty(runtime, "height", imagesValue.height);
268
+ images.setValueAtIndex(runtime, imagesIndex++, imagesObject);
269
+ }
270
+ payload.setProperty(runtime, "images", images);
271
+
272
+ return payload;
273
+ });
274
+ }
275
+
276
+ } // namespace facebook::react