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
@@ -22,6 +22,8 @@
22
22
  typedInput->stylesDict[@([BlockQuoteStyle getStyleType])];
23
23
  CodeBlockStyle *cbStyle =
24
24
  typedInput->stylesDict[@([CodeBlockStyle getStyleType])];
25
+ CheckboxListStyle *cbLStyle =
26
+ typedInput->stylesDict[@([CheckboxListStyle getStyleType])];
25
27
 
26
28
  if (typedInput == nullptr) {
27
29
  return NO;
@@ -57,17 +59,35 @@
57
59
  // applied
58
60
  // - reapply the paragraph style that was present so that a zero width space
59
61
  // appears here
60
- NSArray *handledStyles = @[ ulStyle, olStyle, bqStyle, cbStyle ];
62
+ NSArray *handledStyles = @[ ulStyle, olStyle, bqStyle, cbStyle, cbLStyle ];
61
63
  for (id<BaseStyleProtocol> style in handledStyles) {
62
64
  if ([style detectStyle:nonNewlineRange]) {
63
- [TextInsertionUtils replaceText:text
64
- at:range
65
- additionalAttributes:nullptr
66
- input:typedInput
67
- withSelection:YES];
68
- typedInput->textView.typingAttributes =
69
- typedInput->defaultTypingAttributes;
70
- [style addAttributes:NSMakeRange(range.location, 0) withTypingAttr:YES];
65
+ // For checkbox lists, preserve the current checked state
66
+ if (style == cbLStyle) {
67
+ BOOL isCurrentlyChecked =
68
+ [cbLStyle getCheckboxStateAt:range.location];
69
+ [TextInsertionUtils replaceText:text
70
+ at:range
71
+ additionalAttributes:nullptr
72
+ input:typedInput
73
+ withSelection:YES];
74
+ typedInput->textView.typingAttributes =
75
+ typedInput->defaultTypingAttributes;
76
+ [cbLStyle addAttributesWithCheckedValue:isCurrentlyChecked
77
+ inRange:NSMakeRange(range.location, 0)
78
+ withTypingAttr:YES];
79
+ } else {
80
+ [TextInsertionUtils replaceText:text
81
+ at:range
82
+ additionalAttributes:nullptr
83
+ input:typedInput
84
+ withSelection:YES];
85
+ typedInput->textView.typingAttributes =
86
+ typedInput->defaultTypingAttributes;
87
+ [style addAttributes:NSMakeRange(range.location, 0)
88
+ withTypingAttr:YES];
89
+ }
90
+
71
91
  return YES;
72
92
  }
73
93
  }
@@ -116,63 +136,140 @@
116
136
  return NO;
117
137
  }
118
138
 
119
- if (text.length == 0) {
120
- NSRange leftRange = [typedInput->textView.textStorage.string
121
- paragraphRangeForRange:NSMakeRange(range.location, 0)];
139
+ // Must be a backspace.
140
+ if (text.length > 0) {
141
+ return NO;
142
+ }
122
143
 
123
- id<BaseStyleProtocol> leftParagraphStyle = nullptr;
124
- for (NSNumber *key in typedInput->stylesDict) {
125
- id<BaseStyleProtocol> style = typedInput->stylesDict[key];
126
- if ([[style class] isParagraphStyle] && [style detectStyle:leftRange]) {
127
- leftParagraphStyle = style;
128
- }
129
- }
144
+ // Backspace must have removed a newline character.
145
+ NSString *removedString =
146
+ [typedInput->textView.textStorage.string substringWithRange:range];
147
+ if ([removedString
148
+ rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]]
149
+ .location == NSNotFound) {
150
+ return NO;
151
+ }
130
152
 
131
- if (leftParagraphStyle == nullptr) {
132
- return NO;
133
- }
153
+ NSRange leftRange = [typedInput->textView.textStorage.string
154
+ paragraphRangeForRange:NSMakeRange(range.location, 0)];
134
155
 
135
- // index out of bounds
136
- NSUInteger rightRangeStart = range.location + range.length;
137
- if (rightRangeStart >= typedInput->textView.textStorage.string.length) {
138
- return NO;
156
+ id<BaseStyleProtocol> leftParagraphStyle = nullptr;
157
+ for (NSNumber *key in typedInput->stylesDict) {
158
+ id<BaseStyleProtocol> style = typedInput->stylesDict[key];
159
+ if ([[style class] isParagraphStyle] && [style detectStyle:leftRange]) {
160
+ leftParagraphStyle = style;
139
161
  }
162
+ }
163
+
164
+ if (leftParagraphStyle == nullptr) {
165
+ return NO;
166
+ }
167
+
168
+ // index out of bounds
169
+ NSUInteger rightRangeStart = range.location + range.length;
170
+ if (rightRangeStart >= typedInput->textView.textStorage.string.length) {
171
+ return NO;
172
+ }
140
173
 
141
- NSRange rightRange = [typedInput->textView.textStorage.string
142
- paragraphRangeForRange:NSMakeRange(rightRangeStart, 1)];
174
+ NSRange rightRange = [typedInput->textView.textStorage.string
175
+ paragraphRangeForRange:NSMakeRange(rightRangeStart, 1)];
143
176
 
144
- StyleType type = [[leftParagraphStyle class] getStyleType];
177
+ StyleType type = [[leftParagraphStyle class] getStyleType];
145
178
 
146
- NSArray *conflictingStyles = [typedInput
147
- getPresentStyleTypesFrom:typedInput->conflictingStyles[@(type)]
148
- range:rightRange];
149
- NSArray *blockingStyles =
150
- [typedInput getPresentStyleTypesFrom:typedInput->blockingStyles[@(type)]
151
- range:rightRange];
152
- NSArray *allToBeRemoved =
153
- [conflictingStyles arrayByAddingObjectsFromArray:blockingStyles];
179
+ NSArray *conflictingStyles = [typedInput
180
+ getPresentStyleTypesFrom:typedInput->conflictingStyles[@(type)]
181
+ range:rightRange];
182
+ NSArray *blockingStyles =
183
+ [typedInput getPresentStyleTypesFrom:typedInput->blockingStyles[@(type)]
184
+ range:rightRange];
185
+ NSArray *allToBeRemoved =
186
+ [conflictingStyles arrayByAddingObjectsFromArray:blockingStyles];
154
187
 
155
- for (NSNumber *style in allToBeRemoved) {
156
- id<BaseStyleProtocol> styleClass = typedInput->stylesDict[style];
188
+ for (NSNumber *style in allToBeRemoved) {
189
+ id<BaseStyleProtocol> styleClass = typedInput->stylesDict[style];
157
190
 
158
- // for ranges, we need to remove each occurence
159
- NSArray<StylePair *> *allOccurences =
160
- [styleClass findAllOccurences:rightRange];
191
+ // for ranges, we need to remove each occurence
192
+ NSArray<StylePair *> *allOccurences =
193
+ [styleClass findAllOccurences:rightRange];
161
194
 
162
- for (StylePair *pair in allOccurences) {
163
- [styleClass removeAttributes:[pair.rangeValue rangeValue]];
164
- }
195
+ for (StylePair *pair in allOccurences) {
196
+ [styleClass removeAttributes:[pair.rangeValue rangeValue]];
165
197
  }
198
+ }
199
+
200
+ [TextInsertionUtils replaceText:text
201
+ at:range
202
+ additionalAttributes:nullptr
203
+ input:typedInput
204
+ withSelection:YES];
205
+ return YES;
206
+ }
207
+
208
+ /**
209
+ * Resets typing attributes to defaults when the cursor lands on an empty line
210
+ * after a deletion.
211
+ *
212
+ * This override is necessary because `UITextView` automatically inherits
213
+ * attributes from the preceding newline. This prevents scenarios where a
214
+ * restrictive style (like CodeBlock) "leaks" into the next empty paragraph.
215
+ */
216
+ + (BOOL)handleResetTypingAttributesOnBackspace:(NSRange)range
217
+ replacementText:(NSString *)text
218
+ input:(id)input {
219
+ EnrichedTextInputView *typedInput = (EnrichedTextInputView *)input;
220
+ if (typedInput == nullptr) {
221
+ return NO;
222
+ }
223
+
224
+ NSString *storageString = typedInput->textView.textStorage.string;
225
+
226
+ if (text.length > 0 || range.location >= storageString.length) {
227
+ return NO;
228
+ }
229
+
230
+ unichar firstCharToDelete = [storageString characterAtIndex:range.location];
231
+ if (![[NSCharacterSet newlineCharacterSet]
232
+ characterIsMember:firstCharToDelete]) {
233
+ return NO;
234
+ }
235
+
236
+ NSRange leftParagraphRange =
237
+ [storageString paragraphRangeForRange:NSMakeRange(range.location, 0)];
238
+ BOOL isLeftLineEmpty = [self isParagraphEmpty:leftParagraphRange
239
+ inString:storageString];
240
+
241
+ BOOL isRightLineEmpty = YES;
242
+ NSUInteger rightRangeStart = range.location + range.length;
166
243
 
244
+ if (rightRangeStart < storageString.length) {
245
+ NSRange rightParagraphRange =
246
+ [storageString paragraphRangeForRange:NSMakeRange(rightRangeStart, 0)];
247
+ isRightLineEmpty = [self isParagraphEmpty:rightParagraphRange
248
+ inString:storageString];
249
+ }
250
+
251
+ if (isLeftLineEmpty && isRightLineEmpty) {
167
252
  [TextInsertionUtils replaceText:text
168
253
  at:range
169
254
  additionalAttributes:nullptr
170
255
  input:typedInput
171
256
  withSelection:YES];
257
+
258
+ typedInput->textView.typingAttributes = typedInput->defaultTypingAttributes;
172
259
  return YES;
173
260
  }
174
261
 
175
262
  return NO;
176
263
  }
177
264
 
265
+ + (BOOL)isParagraphEmpty:(NSRange)range inString:(NSString *)string {
266
+ if (range.length == 0)
267
+ return YES;
268
+
269
+ NSString *paragraphText = [string substringWithRange:range];
270
+ NSString *trimmed = [paragraphText
271
+ stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
272
+ return trimmed.length == 0;
273
+ }
274
+
178
275
  @end
@@ -16,8 +16,8 @@
16
16
  NSMutableArray *results = [[NSMutableArray alloc] init];
17
17
 
18
18
  NSInteger lastStart = fullRange.location;
19
- for (int i = fullRange.location; i < fullRange.location + fullRange.length;
20
- i++) {
19
+ for (int i = int(fullRange.location);
20
+ i < fullRange.location + fullRange.length; i++) {
21
21
  unichar currentChar = [textView.textStorage.string characterAtIndex:i];
22
22
  if ([[NSCharacterSet newlineCharacterSet] characterIsMember:currentChar]) {
23
23
  NSRange paragraphRange = [textView.textStorage.string
@@ -40,9 +40,9 @@
40
40
 
41
41
  + (NSArray *)getNonNewlineRangesIn:(UITextView *)textView range:(NSRange)range {
42
42
  NSMutableArray *nonNewlineRanges = [[NSMutableArray alloc] init];
43
- int lastRangeLocation = range.location;
43
+ int lastRangeLocation = int(range.location);
44
44
 
45
- for (int i = range.location; i < range.location + range.length; i++) {
45
+ for (int i = int(range.location); i < range.location + range.length; i++) {
46
46
  unichar currentChar = [textView.textStorage.string characterAtIndex:i];
47
47
  if ([[NSCharacterSet newlineCharacterSet] characterIsMember:currentChar]) {
48
48
  if (i - lastRangeLocation > 0) {
@@ -0,0 +1,17 @@
1
+ typedef NS_ENUM(NSInteger, TextBlockTapKind) {
2
+ TextBlockTapKindNone = 0,
3
+ TextBlockTapKindCheckbox,
4
+ };
5
+
6
+ @class EnrichedTextInputView;
7
+
8
+ @interface TextBlockTapGestureRecognizer : UITapGestureRecognizer
9
+ - (instancetype _Nonnull)initWithInput:(id _Nonnull)input
10
+ action:(SEL _Nonnull)action;
11
+
12
+ @property(nonatomic, weak) EnrichedTextInputView *input;
13
+
14
+ @property(nonatomic, assign, readonly) TextBlockTapKind tapKind;
15
+ @property(nonatomic, assign, readonly) NSInteger characterIndex;
16
+
17
+ @end
@@ -0,0 +1,56 @@
1
+ #import "TextBlockTapGestureRecognizer.h"
2
+ #import "CheckboxHitTestUtils.h"
3
+ #import "EnrichedTextInputView.h"
4
+
5
+ @implementation TextBlockTapGestureRecognizer {
6
+ TextBlockTapKind _tapKind;
7
+ NSInteger _characterIndex;
8
+ }
9
+
10
+ - (instancetype)initWithInput:(id)input action:(SEL)action {
11
+ self = [super initWithTarget:input action:action];
12
+ _input = input;
13
+
14
+ self.cancelsTouchesInView = YES;
15
+ self.delaysTouchesBegan = YES;
16
+ self.delaysTouchesEnded = YES;
17
+
18
+ for (UIGestureRecognizer *gr in _input->textView.gestureRecognizers) {
19
+ [gr requireGestureRecognizerToFail:self];
20
+ }
21
+
22
+ return self;
23
+ }
24
+
25
+ - (TextBlockTapKind)tapKind {
26
+ return _tapKind;
27
+ }
28
+
29
+ - (NSInteger)characterIndex {
30
+ return _characterIndex;
31
+ }
32
+
33
+ - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
34
+ _tapKind = TextBlockTapKindNone;
35
+ _characterIndex = NSNotFound;
36
+
37
+ if (!self.input) {
38
+ self.state = UIGestureRecognizerStateFailed;
39
+ return;
40
+ }
41
+
42
+ UITouch *touch = touches.anyObject;
43
+ CGPoint point = [touch locationInView:self.input->textView];
44
+ NSInteger checkboxIndex =
45
+ [CheckboxHitTestUtils hitTestCheckboxAtPoint:point inInput:self.input];
46
+
47
+ if (checkboxIndex >= 0) {
48
+ _tapKind = TextBlockTapKindCheckbox;
49
+ _characterIndex = checkboxIndex;
50
+ [super touchesBegan:touches withEvent:event];
51
+ return;
52
+ }
53
+ self.state = UIGestureRecognizerStateFailed;
54
+ }
55
+
56
+ @end
@@ -51,13 +51,16 @@
51
51
  input->stylesDict[@([BlockQuoteStyle getStyleType])];
52
52
  CodeBlockStyle *cbStyle =
53
53
  input->stylesDict[@([CodeBlockStyle getStyleType])];
54
+ CheckboxListStyle *cbLStyle =
55
+ input->stylesDict[@([CheckboxListStyle getStyleType])];
54
56
 
55
57
  // zero width spaces with no lists/blockquotes/codeblocks on them get
56
58
  // removed
57
59
  if (![ulStyle detectStyle:characterRange] &&
58
60
  ![olStyle detectStyle:characterRange] &&
59
61
  ![bqStyle detectStyle:characterRange] &&
60
- ![cbStyle detectStyle:characterRange]) {
62
+ ![cbStyle detectStyle:characterRange] &&
63
+ ![cbLStyle detectStyle:characterRange]) {
61
64
  [indexesToBeRemoved addObject:@(characterRange.location)];
62
65
  }
63
66
  }
@@ -100,6 +103,8 @@
100
103
  BlockQuoteStyle *bqStyle =
101
104
  input->stylesDict[@([BlockQuoteStyle getStyleType])];
102
105
  CodeBlockStyle *cbStyle = input->stylesDict[@([CodeBlockStyle getStyleType])];
106
+ CheckboxListStyle *cbLStyle =
107
+ input->stylesDict[@([CheckboxListStyle getStyleType])];
103
108
  NSMutableArray *indexesToBeInserted = [[NSMutableArray alloc] init];
104
109
  NSRange preAddSelection = input->textView.selectedRange;
105
110
 
@@ -115,7 +120,8 @@
115
120
  if ([ulStyle detectStyle:characterRange] ||
116
121
  [olStyle detectStyle:characterRange] ||
117
122
  [bqStyle detectStyle:characterRange] ||
118
- [cbStyle detectStyle:characterRange]) {
123
+ [cbStyle detectStyle:characterRange] ||
124
+ [cbLStyle detectStyle:characterRange]) {
119
125
  // we have an empty list or quote item with no space: add it!
120
126
  [indexesToBeInserted addObject:@(paragraphRange.location)];
121
127
  }
@@ -150,7 +156,8 @@
150
156
  [input->textView.textStorage.string paragraphRangeForRange:lastRange];
151
157
  if (lastParagraphRange.length == 0 &&
152
158
  ([ulStyle detectStyle:lastRange] || [olStyle detectStyle:lastRange] ||
153
- [bqStyle detectStyle:lastRange] || [cbStyle detectStyle:lastRange])) {
159
+ [bqStyle detectStyle:lastRange] || [cbStyle detectStyle:lastRange] ||
160
+ [cbLStyle detectStyle:lastRange])) {
154
161
  [TextInsertionUtils insertText:@"\u200B"
155
162
  at:lastRange.location
156
163
  additionalAttributes:nullptr
@@ -210,6 +217,8 @@
210
217
  typedInput->stylesDict[@([BlockQuoteStyle getStyleType])];
211
218
  CodeBlockStyle *cbStyle =
212
219
  typedInput->stylesDict[@([CodeBlockStyle getStyleType])];
220
+ CheckboxListStyle *cbLStyle =
221
+ typedInput->stylesDict[@([CheckboxListStyle getStyleType])];
213
222
 
214
223
  if ([cbStyle detectStyle:removalRange]) {
215
224
  // code blocks are being handled differently; we want to remove previous
@@ -238,6 +247,8 @@
238
247
  [olStyle removeAttributes:styleRemovalRange];
239
248
  } else if ([bqStyle detectStyle:styleRemovalRange]) {
240
249
  [bqStyle removeAttributes:styleRemovalRange];
250
+ } else if ([cbLStyle detectStyle:styleRemovalRange]) {
251
+ [cbLStyle removeAttributes:styleRemovalRange];
241
252
  }
242
253
 
243
254
  return YES;
@@ -1,16 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  import { useEffect, useImperativeHandle, useMemo, useRef } from 'react';
4
- import EnrichedTextInputNativeComponent, { Commands } from './EnrichedTextInputNativeComponent';
5
- import { normalizeHtmlStyle } from "./normalizeHtmlStyle.js";
4
+ import EnrichedTextInputNativeComponent, { Commands } from './spec/EnrichedTextInputNativeComponent';
5
+ import { normalizeHtmlStyle } from "./utils/normalizeHtmlStyle.js";
6
+ import { toNativeRegexConfig } from "./utils/regexParser.js";
7
+ import { nullthrows } from "./utils/nullthrows.js";
6
8
  import { jsx as _jsx } from "react/jsx-runtime";
7
- const nullthrows = value => {
8
- if (value == null) {
9
- throw new Error('Unexpected null or undefined value');
10
- }
11
- return value;
12
- };
13
- const warnAboutMissconfiguredMentions = indicator => {
9
+ const warnMentionIndicators = indicator => {
14
10
  console.warn(`Looks like you are trying to set a "${indicator}" but it's not in the mentionIndicators prop`);
15
11
  };
16
12
  export const EnrichedTextInput = ({
@@ -26,17 +22,20 @@ export const EnrichedTextInput = ({
26
22
  style,
27
23
  autoCapitalize = 'sentences',
28
24
  htmlStyle = {},
25
+ linkRegex: _linkRegex,
29
26
  onFocus,
30
27
  onBlur,
31
28
  onChangeText,
32
29
  onChangeHtml,
33
30
  onChangeState,
31
+ onChangeStateDeprecated,
34
32
  onLinkDetected,
35
33
  onMentionDetected,
36
34
  onStartMention,
37
35
  onChangeMention,
38
36
  onEndMention,
39
37
  onChangeSelection,
38
+ onKeyPress,
40
39
  androidExperimentalSynchronousEvents = false,
41
40
  scrollEnabled = true,
42
41
  ...rest
@@ -56,6 +55,7 @@ export const EnrichedTextInput = ({
56
55
  };
57
56
  }, []);
58
57
  const normalizedHtmlStyle = useMemo(() => normalizeHtmlStyle(htmlStyle, mentionIndicators), [htmlStyle, mentionIndicators]);
58
+ const linkRegex = useMemo(() => toNativeRegexConfig(_linkRegex), [_linkRegex]);
59
59
  useImperativeHandle(ref, () => ({
60
60
  measureInWindow: callback => {
61
61
  nullthrows(nativeRef.current).measureInWindow(callback);
@@ -112,6 +112,15 @@ export const EnrichedTextInput = ({
112
112
  toggleH3: () => {
113
113
  Commands.toggleH3(nullthrows(nativeRef.current));
114
114
  },
115
+ toggleH4: () => {
116
+ Commands.toggleH4(nullthrows(nativeRef.current));
117
+ },
118
+ toggleH5: () => {
119
+ Commands.toggleH5(nullthrows(nativeRef.current));
120
+ },
121
+ toggleH6: () => {
122
+ Commands.toggleH6(nullthrows(nativeRef.current));
123
+ },
115
124
  toggleCodeBlock: () => {
116
125
  Commands.toggleCodeBlock(nullthrows(nativeRef.current));
117
126
  },
@@ -124,6 +133,9 @@ export const EnrichedTextInput = ({
124
133
  toggleUnorderedList: () => {
125
134
  Commands.toggleUnorderedList(nullthrows(nativeRef.current));
126
135
  },
136
+ toggleCheckboxList: checked => {
137
+ Commands.toggleCheckboxList(nullthrows(nativeRef.current), checked);
138
+ },
127
139
  setLink: (start, end, text, url) => {
128
140
  Commands.addLink(nullthrows(nativeRef.current), start, end, text, url);
129
141
  },
@@ -137,9 +149,12 @@ export const EnrichedTextInput = ({
137
149
  },
138
150
  startMention: indicator => {
139
151
  if (!mentionIndicators?.includes(indicator)) {
140
- warnAboutMissconfiguredMentions(indicator);
152
+ warnMentionIndicators(indicator);
141
153
  }
142
154
  Commands.startMention(nullthrows(nativeRef.current), indicator);
155
+ },
156
+ setSelection: (start, end) => {
157
+ Commands.setSelection(nullthrows(nativeRef.current), start, end);
143
158
  }
144
159
  }));
145
160
  const handleMentionEvent = e => {
@@ -199,6 +214,34 @@ export const EnrichedTextInput = ({
199
214
  }
200
215
  pendingHtmlRequests.current.delete(requestId);
201
216
  };
217
+ const onChangeStateWithDeprecated = e => {
218
+ onChangeState?.(e);
219
+ // TODO: remove in 0.5.0 release
220
+ onChangeStateDeprecated?.({
221
+ ...e,
222
+ nativeEvent: {
223
+ isBold: e.nativeEvent.bold.isActive,
224
+ isItalic: e.nativeEvent.italic.isActive,
225
+ isUnderline: e.nativeEvent.underline.isActive,
226
+ isStrikeThrough: e.nativeEvent.strikeThrough.isActive,
227
+ isInlineCode: e.nativeEvent.inlineCode.isActive,
228
+ isH1: e.nativeEvent.h1.isActive,
229
+ isH2: e.nativeEvent.h2.isActive,
230
+ isH3: e.nativeEvent.h3.isActive,
231
+ isH4: e.nativeEvent.h4.isActive,
232
+ isH5: e.nativeEvent.h5.isActive,
233
+ isH6: e.nativeEvent.h6.isActive,
234
+ isCodeBlock: e.nativeEvent.codeBlock.isActive,
235
+ isBlockQuote: e.nativeEvent.blockQuote.isActive,
236
+ isOrderedList: e.nativeEvent.orderedList.isActive,
237
+ isUnorderedList: e.nativeEvent.unorderedList.isActive,
238
+ isCheckboxList: e.nativeEvent.checkboxList.isActive,
239
+ isLink: e.nativeEvent.link.isActive,
240
+ isImage: e.nativeEvent.image.isActive,
241
+ isMention: e.nativeEvent.mention.isActive
242
+ }
243
+ });
244
+ };
202
245
  return /*#__PURE__*/_jsx(EnrichedTextInputNativeComponent, {
203
246
  ref: nativeRef,
204
247
  mentionIndicators: mentionIndicators,
@@ -212,17 +255,20 @@ export const EnrichedTextInput = ({
212
255
  style: style,
213
256
  autoCapitalize: autoCapitalize,
214
257
  htmlStyle: normalizedHtmlStyle,
258
+ linkRegex: linkRegex,
215
259
  onInputFocus: onFocus,
216
260
  onInputBlur: onBlur,
217
261
  onChangeText: onChangeText,
218
262
  onChangeHtml: onChangeHtml,
219
263
  isOnChangeHtmlSet: onChangeHtml !== undefined,
220
- onChangeState: onChangeState,
264
+ isOnChangeTextSet: onChangeText !== undefined,
265
+ onChangeState: onChangeStateWithDeprecated,
221
266
  onLinkDetected: handleLinkDetected,
222
267
  onMentionDetected: handleMentionDetected,
223
268
  onMention: handleMentionEvent,
224
269
  onChangeSelection: onChangeSelection,
225
270
  onRequestHtmlResult: handleRequestHtmlResult,
271
+ onInputKeyPress: onKeyPress,
226
272
  androidExperimentalSynchronousEvents: androidExperimentalSynchronousEvents,
227
273
  scrollEnabled: scrollEnabled,
228
274
  ...rest
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useImperativeHandle","useMemo","useRef","EnrichedTextInputNativeComponent","Commands","normalizeHtmlStyle","jsx","_jsx","nullthrows","value","Error","warnAboutMissconfiguredMentions","indicator","console","warn","EnrichedTextInput","ref","autoFocus","editable","mentionIndicators","defaultValue","placeholder","placeholderTextColor","cursorColor","selectionColor","style","autoCapitalize","htmlStyle","onFocus","onBlur","onChangeText","onChangeHtml","onChangeState","onLinkDetected","onMentionDetected","onStartMention","onChangeMention","onEndMention","onChangeSelection","androidExperimentalSynchronousEvents","scrollEnabled","rest","nativeRef","nextHtmlRequestId","pendingHtmlRequests","Map","pendingRequests","current","forEach","reject","clear","normalizedHtmlStyle","measureInWindow","callback","measure","measureLayout","relativeToNativeComponentRef","onSuccess","onFail","setNativeProps","nativeProps","focus","blur","setValue","getHTML","Promise","resolve","requestId","set","requestHTML","toggleBold","toggleItalic","toggleUnderline","toggleStrikeThrough","toggleInlineCode","toggleH1","toggleH2","toggleH3","toggleCodeBlock","toggleBlockQuote","toggleOrderedList","toggleUnorderedList","setLink","start","end","text","url","addLink","setImage","uri","width","height","addImage","setMention","attributes","parsedAttributes","JSON","stringify","addMention","startMention","includes","handleMentionEvent","e","mentionText","nativeEvent","mentionIndicator","handleLinkDetected","handleMentionDetected","payload","parse","handleRequestHtmlResult","html","pending","get","delete","onInputFocus","onInputBlur","isOnChangeHtmlSet","undefined","onMention","onRequestHtmlResult"],"sourceRoot":"../../src","sources":["EnrichedTextInput.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useImperativeHandle","useMemo","useRef","EnrichedTextInputNativeComponent","Commands","normalizeHtmlStyle","toNativeRegexConfig","nullthrows","jsx","_jsx","warnMentionIndicators","indicator","console","warn","EnrichedTextInput","ref","autoFocus","editable","mentionIndicators","defaultValue","placeholder","placeholderTextColor","cursorColor","selectionColor","style","autoCapitalize","htmlStyle","linkRegex","_linkRegex","onFocus","onBlur","onChangeText","onChangeHtml","onChangeState","onChangeStateDeprecated","onLinkDetected","onMentionDetected","onStartMention","onChangeMention","onEndMention","onChangeSelection","onKeyPress","androidExperimentalSynchronousEvents","scrollEnabled","rest","nativeRef","nextHtmlRequestId","pendingHtmlRequests","Map","pendingRequests","current","forEach","reject","Error","clear","normalizedHtmlStyle","measureInWindow","callback","measure","measureLayout","relativeToNativeComponentRef","onSuccess","onFail","setNativeProps","nativeProps","focus","blur","setValue","value","getHTML","Promise","resolve","requestId","set","requestHTML","toggleBold","toggleItalic","toggleUnderline","toggleStrikeThrough","toggleInlineCode","toggleH1","toggleH2","toggleH3","toggleH4","toggleH5","toggleH6","toggleCodeBlock","toggleBlockQuote","toggleOrderedList","toggleUnorderedList","toggleCheckboxList","checked","setLink","start","end","text","url","addLink","setImage","uri","width","height","addImage","setMention","attributes","parsedAttributes","JSON","stringify","addMention","startMention","includes","setSelection","handleMentionEvent","e","mentionText","nativeEvent","mentionIndicator","handleLinkDetected","handleMentionDetected","payload","parse","handleRequestHtmlResult","html","pending","get","delete","onChangeStateWithDeprecated","isBold","bold","isActive","isItalic","italic","isUnderline","underline","isStrikeThrough","strikeThrough","isInlineCode","inlineCode","isH1","h1","isH2","h2","isH3","h3","isH4","h4","isH5","h5","isH6","h6","isCodeBlock","codeBlock","isBlockQuote","blockQuote","isOrderedList","orderedList","isUnorderedList","unorderedList","isCheckboxList","checkboxList","isLink","link","isImage","image","isMention","mention","onInputFocus","onInputBlur","isOnChangeHtmlSet","undefined","isOnChangeTextSet","onMention","onRequestHtmlResult","onInputKeyPress"],"sourceRoot":"../../src","sources":["EnrichedTextInput.tsx"],"mappings":"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","ignoreList":[]}