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
@@ -0,0 +1,56 @@
1
+ import type { LinkNativeRegex } from '../spec/EnrichedTextInputNativeComponent';
2
+
3
+ const DISABLED_REGEX: LinkNativeRegex = {
4
+ pattern: '',
5
+ caseInsensitive: false,
6
+ dotAll: false,
7
+ isDisabled: true,
8
+ isDefault: false,
9
+ };
10
+
11
+ const DEFAULT_REGEX: LinkNativeRegex = {
12
+ pattern: '',
13
+ caseInsensitive: false,
14
+ dotAll: false,
15
+ isDisabled: false,
16
+ isDefault: true,
17
+ };
18
+
19
+ export const toNativeRegexConfig = (
20
+ regex: RegExp | undefined | null
21
+ ): LinkNativeRegex => {
22
+ if (regex === null) {
23
+ return DISABLED_REGEX;
24
+ }
25
+
26
+ if (regex === undefined) {
27
+ return DEFAULT_REGEX;
28
+ }
29
+
30
+ const source = regex.source;
31
+
32
+ // iOS fails on variable-width lookbehinds like (?<=a+)
33
+ const hasLookbehind = source.includes('(?<=') || source.includes('(?<!');
34
+
35
+ if (hasLookbehind) {
36
+ // Basic detection for quantifiers inside a group
37
+ const lookbehindContent = source.match(/\(\?<[=!](.*?)\)/)?.[1] || '';
38
+ if (/[*+{]/.test(lookbehindContent)) {
39
+ if (__DEV__) {
40
+ console.error(
41
+ 'Variable-width lookbehinds are not supported. Using default link regex.'
42
+ );
43
+ }
44
+
45
+ return DEFAULT_REGEX;
46
+ }
47
+ }
48
+
49
+ return {
50
+ pattern: source,
51
+ caseInsensitive: regex.ignoreCase,
52
+ dotAll: regex.dotAll,
53
+ isDisabled: false,
54
+ isDefault: false,
55
+ };
56
+ };
@@ -1,128 +0,0 @@
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", [](jsi::Runtime &runtime) {
18
- auto payload = jsi::Object(runtime);
19
-
20
- return payload;
21
- });
22
- }
23
-
24
-
25
- void EnrichedTextInputViewEventEmitter::onInputBlur(OnInputBlur event) const {
26
- dispatchEvent("inputBlur", [](jsi::Runtime &runtime) {
27
- auto payload = jsi::Object(runtime);
28
-
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
- payload.setProperty(runtime, "isBold", event.isBold);
56
- payload.setProperty(runtime, "isItalic", event.isItalic);
57
- payload.setProperty(runtime, "isUnderline", event.isUnderline);
58
- payload.setProperty(runtime, "isStrikeThrough", event.isStrikeThrough);
59
- payload.setProperty(runtime, "isInlineCode", event.isInlineCode);
60
- payload.setProperty(runtime, "isH1", event.isH1);
61
- payload.setProperty(runtime, "isH2", event.isH2);
62
- payload.setProperty(runtime, "isH3", event.isH3);
63
- payload.setProperty(runtime, "isCodeBlock", event.isCodeBlock);
64
- payload.setProperty(runtime, "isBlockQuote", event.isBlockQuote);
65
- payload.setProperty(runtime, "isOrderedList", event.isOrderedList);
66
- payload.setProperty(runtime, "isUnorderedList", event.isUnorderedList);
67
- payload.setProperty(runtime, "isLink", event.isLink);
68
- payload.setProperty(runtime, "isImage", event.isImage);
69
- payload.setProperty(runtime, "isMention", event.isMention);
70
- return payload;
71
- });
72
- }
73
-
74
-
75
- void EnrichedTextInputViewEventEmitter::onLinkDetected(OnLinkDetected event) const {
76
- dispatchEvent("linkDetected", [event=std::move(event)](jsi::Runtime &runtime) {
77
- auto payload = jsi::Object(runtime);
78
- payload.setProperty(runtime, "text", event.text);
79
- payload.setProperty(runtime, "url", event.url);
80
- payload.setProperty(runtime, "start", event.start);
81
- payload.setProperty(runtime, "end", event.end);
82
- return payload;
83
- });
84
- }
85
-
86
-
87
- void EnrichedTextInputViewEventEmitter::onMentionDetected(OnMentionDetected event) const {
88
- dispatchEvent("mentionDetected", [event=std::move(event)](jsi::Runtime &runtime) {
89
- auto payload = jsi::Object(runtime);
90
- payload.setProperty(runtime, "text", event.text);
91
- payload.setProperty(runtime, "indicator", event.indicator);
92
- payload.setProperty(runtime, "payload", event.payload);
93
- return payload;
94
- });
95
- }
96
-
97
-
98
- void EnrichedTextInputViewEventEmitter::onMention(OnMention event) const {
99
- dispatchEvent("mention", [event=std::move(event)](jsi::Runtime &runtime) {
100
- auto payload = jsi::Object(runtime);
101
- payload.setProperty(runtime, "indicator", event.indicator);
102
- payload.setProperty(runtime, "text", jsi::valueFromDynamic(runtime, event.text));
103
- return payload;
104
- });
105
- }
106
-
107
-
108
- void EnrichedTextInputViewEventEmitter::onChangeSelection(OnChangeSelection event) const {
109
- dispatchEvent("changeSelection", [event=std::move(event)](jsi::Runtime &runtime) {
110
- auto payload = jsi::Object(runtime);
111
- payload.setProperty(runtime, "start", event.start);
112
- payload.setProperty(runtime, "end", event.end);
113
- payload.setProperty(runtime, "text", event.text);
114
- return payload;
115
- });
116
- }
117
-
118
-
119
- void EnrichedTextInputViewEventEmitter::onRequestHtmlResult(OnRequestHtmlResult event) const {
120
- dispatchEvent("requestHtmlResult", [event=std::move(event)](jsi::Runtime &runtime) {
121
- auto payload = jsi::Object(runtime);
122
- payload.setProperty(runtime, "requestId", event.requestId);
123
- payload.setProperty(runtime, "html", jsi::valueFromDynamic(runtime, event.html));
124
- return payload;
125
- });
126
- }
127
-
128
- } // namespace facebook::react
@@ -1,102 +0,0 @@
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: GenerateEventEmitterH.js
9
- */
10
- #pragma once
11
-
12
- #include <react/renderer/components/view/ViewEventEmitter.h>
13
- #include <folly/dynamic.h>
14
-
15
- namespace facebook::react {
16
- class EnrichedTextInputViewEventEmitter : public ViewEventEmitter {
17
- public:
18
- using ViewEventEmitter::ViewEventEmitter;
19
-
20
- struct OnInputFocus {
21
-
22
- };
23
-
24
- struct OnInputBlur {
25
-
26
- };
27
-
28
- struct OnChangeText {
29
- std::string value;
30
- };
31
-
32
- struct OnChangeHtml {
33
- std::string value;
34
- };
35
-
36
- struct OnChangeState {
37
- bool isBold;
38
- bool isItalic;
39
- bool isUnderline;
40
- bool isStrikeThrough;
41
- bool isInlineCode;
42
- bool isH1;
43
- bool isH2;
44
- bool isH3;
45
- bool isCodeBlock;
46
- bool isBlockQuote;
47
- bool isOrderedList;
48
- bool isUnorderedList;
49
- bool isLink;
50
- bool isImage;
51
- bool isMention;
52
- };
53
-
54
- struct OnLinkDetected {
55
- std::string text;
56
- std::string url;
57
- int start;
58
- int end;
59
- };
60
-
61
- struct OnMentionDetected {
62
- std::string text;
63
- std::string indicator;
64
- std::string payload;
65
- };
66
-
67
- struct OnMention {
68
- std::string indicator;
69
- folly::dynamic text;
70
- };
71
-
72
- struct OnChangeSelection {
73
- int start;
74
- int end;
75
- std::string text;
76
- };
77
-
78
- struct OnRequestHtmlResult {
79
- int requestId;
80
- folly::dynamic html;
81
- };
82
- void onInputFocus(OnInputFocus value) const;
83
-
84
- void onInputBlur(OnInputBlur value) const;
85
-
86
- void onChangeText(OnChangeText value) const;
87
-
88
- void onChangeHtml(OnChangeHtml value) const;
89
-
90
- void onChangeState(OnChangeState value) const;
91
-
92
- void onLinkDetected(OnLinkDetected value) const;
93
-
94
- void onMentionDetected(OnMentionDetected value) const;
95
-
96
- void onMention(OnMention value) const;
97
-
98
- void onChangeSelection(OnChangeSelection value) const;
99
-
100
- void onRequestHtmlResult(OnRequestHtmlResult value) const;
101
- };
102
- } // namespace facebook::react
@@ -1,28 +0,0 @@
1
- package com.swmansion.enriched.events
2
-
3
- import com.facebook.react.bridge.Arguments
4
- import com.facebook.react.bridge.WritableMap
5
- import com.facebook.react.uimanager.events.Event
6
-
7
- class OnChangeHtmlEvent(surfaceId: Int, viewId: Int, private val html: String, private val experimentalSynchronousEvents: Boolean) :
8
- Event<OnChangeHtmlEvent>(surfaceId, viewId) {
9
-
10
- override fun getEventName(): String {
11
- return EVENT_NAME
12
- }
13
-
14
- override fun getEventData(): WritableMap {
15
- val eventData: WritableMap = Arguments.createMap()
16
- eventData.putString("value", html)
17
-
18
- return eventData
19
- }
20
-
21
- override fun experimental_isSynchronous(): Boolean {
22
- return experimentalSynchronousEvents
23
- }
24
-
25
- companion object {
26
- const val EVENT_NAME: String = "onChangeHtml"
27
- }
28
- }
@@ -1,24 +0,0 @@
1
- package com.swmansion.enriched.events
2
-
3
- import com.facebook.react.bridge.WritableMap
4
- import com.facebook.react.uimanager.events.Event
5
-
6
- class OnChangeStateEvent(surfaceId: Int, viewId: Int, private val state: WritableMap, private val experimentalSynchronousEvents: Boolean) :
7
- Event<OnChangeStateEvent>(surfaceId, viewId) {
8
-
9
- override fun getEventName(): String {
10
- return EVENT_NAME
11
- }
12
-
13
- override fun getEventData(): WritableMap {
14
- return state
15
- }
16
-
17
- override fun experimental_isSynchronous(): Boolean {
18
- return experimentalSynchronousEvents
19
- }
20
-
21
- companion object {
22
- const val EVENT_NAME: String = "onChangeState"
23
- }
24
- }
@@ -1,30 +0,0 @@
1
- package com.swmansion.enriched.events
2
-
3
- import android.text.Editable
4
- import com.facebook.react.bridge.Arguments
5
- import com.facebook.react.bridge.WritableMap
6
- import com.facebook.react.uimanager.events.Event
7
-
8
- class OnChangeTextEvent(surfaceId: Int, viewId: Int, private val editable: Editable, private val experimentalSynchronousEvents: Boolean) :
9
- Event<OnChangeTextEvent>(surfaceId, viewId) {
10
-
11
- override fun getEventName(): String {
12
- return EVENT_NAME
13
- }
14
-
15
- override fun getEventData(): WritableMap {
16
- val eventData: WritableMap = Arguments.createMap()
17
- val text = editable.toString()
18
- val normalizedText = text.replace(Regex("\\u200B"), "")
19
- eventData.putString("value", normalizedText)
20
- return eventData
21
- }
22
-
23
- override fun experimental_isSynchronous(): Boolean {
24
- return experimentalSynchronousEvents
25
- }
26
-
27
- companion object {
28
- const val EVENT_NAME: String = "onChangeText"
29
- }
30
- }
@@ -1,27 +0,0 @@
1
- package com.swmansion.enriched.events
2
-
3
- import com.facebook.react.bridge.Arguments
4
- import com.facebook.react.bridge.WritableMap
5
- import com.facebook.react.uimanager.events.Event
6
-
7
- class OnInputBlurEvent(surfaceId: Int, viewId: Int, private val experimentalSynchronousEvents: Boolean) :
8
- Event<OnInputBlurEvent>(surfaceId, viewId) {
9
-
10
- override fun getEventName(): String {
11
- return EVENT_NAME
12
- }
13
-
14
- override fun getEventData(): WritableMap {
15
- val eventData: WritableMap = Arguments.createMap()
16
-
17
- return eventData
18
- }
19
-
20
- override fun experimental_isSynchronous(): Boolean {
21
- return experimentalSynchronousEvents
22
- }
23
-
24
- companion object {
25
- const val EVENT_NAME: String = "onInputBlur"
26
- }
27
- }
@@ -1,27 +0,0 @@
1
- package com.swmansion.enriched.events
2
-
3
- import com.facebook.react.bridge.Arguments
4
- import com.facebook.react.bridge.WritableMap
5
- import com.facebook.react.uimanager.events.Event
6
-
7
- class OnInputFocusEvent(surfaceId: Int, viewId: Int, private val experimentalSynchronousEvents: Boolean) :
8
- Event<OnInputFocusEvent>(surfaceId, viewId) {
9
-
10
- override fun getEventName(): String {
11
- return EVENT_NAME
12
- }
13
-
14
- override fun getEventData(): WritableMap {
15
- val eventData: WritableMap = Arguments.createMap()
16
-
17
- return eventData
18
- }
19
-
20
- override fun experimental_isSynchronous(): Boolean {
21
- return experimentalSynchronousEvents
22
- }
23
-
24
- companion object {
25
- const val EVENT_NAME: String = "onInputFocus"
26
- }
27
- }
@@ -1,30 +0,0 @@
1
- package com.swmansion.enriched.events
2
-
3
- import com.facebook.react.bridge.Arguments
4
- import com.facebook.react.bridge.WritableMap
5
- import com.facebook.react.uimanager.events.Event
6
-
7
- class OnLinkDetectedEvent(surfaceId: Int, viewId: Int, private val text: String, private val url: String, private val start: Int, private val end: Int, private val experimentalSynchronousEvents: Boolean) :
8
- Event<OnLinkDetectedEvent>(surfaceId, viewId) {
9
-
10
- override fun getEventName(): String {
11
- return EVENT_NAME
12
- }
13
-
14
- override fun getEventData(): WritableMap {
15
- val eventData: WritableMap = Arguments.createMap()
16
- eventData.putString("text", text)
17
- eventData.putString("url", url)
18
- eventData.putInt("start", start);
19
- eventData.putInt("end", end);
20
- return eventData
21
- }
22
-
23
- override fun experimental_isSynchronous(): Boolean {
24
- return experimentalSynchronousEvents
25
- }
26
-
27
- companion object {
28
- const val EVENT_NAME: String = "onLinkDetected"
29
- }
30
- }
@@ -1,44 +0,0 @@
1
- package com.swmansion.enriched.spans
2
-
3
- import android.graphics.Canvas
4
- import android.graphics.Paint
5
- import android.text.Layout
6
- import android.text.TextPaint
7
- import android.text.style.LeadingMarginSpan
8
- import android.text.style.MetricAffectingSpan
9
- import com.swmansion.enriched.spans.interfaces.EnrichedBlockSpan
10
- import com.swmansion.enriched.styles.HtmlStyle
11
-
12
- // https://android.googlesource.com/platform/frameworks/base/+/refs/heads/main/core/java/android/text/style/QuoteSpan.java
13
- class EnrichedBlockQuoteSpan(private val htmlStyle: HtmlStyle) : MetricAffectingSpan(), LeadingMarginSpan, EnrichedBlockSpan {
14
- override val dependsOnHtmlStyle: Boolean = true
15
-
16
- override fun updateMeasureState(p0: TextPaint) {
17
- // Do nothing, but inform layout that this span affects text metrics
18
- }
19
-
20
- override fun getLeadingMargin(p0: Boolean): Int {
21
- return htmlStyle.blockquoteStripeWidth + htmlStyle.blockquoteGapWidth
22
- }
23
-
24
- override fun drawLeadingMargin(c: Canvas, p: Paint, x: Int, dir: Int, top: Int, baseline: Int, bottom: Int, text: CharSequence?, start: Int, end: Int, first: Boolean, layout: Layout?) {
25
- val style = p.style
26
- val color = p.color
27
- p.style = Paint.Style.FILL
28
- p.color = htmlStyle.blockquoteBorderColor
29
- c.drawRect(x.toFloat(), top.toFloat(), x + dir * htmlStyle.blockquoteStripeWidth.toFloat(), bottom.toFloat(), p)
30
- p.style = style
31
- p.color = color
32
- }
33
-
34
- override fun updateDrawState(textPaint: TextPaint?) {
35
- val color = htmlStyle.blockquoteColor
36
- if (color != null) {
37
- textPaint?.color = color
38
- }
39
- }
40
-
41
- override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedBlockQuoteSpan {
42
- return EnrichedBlockQuoteSpan(htmlStyle)
43
- }
44
- }
@@ -1,16 +0,0 @@
1
- package com.swmansion.enriched.spans
2
-
3
- import android.graphics.Typeface
4
- import android.text.style.StyleSpan
5
- import com.swmansion.enriched.spans.interfaces.EnrichedBlockSpan
6
- import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
7
- import com.swmansion.enriched.styles.HtmlStyle
8
-
9
- @Suppress("UNUSED_PARAMETER")
10
- class EnrichedBoldSpan(htmlStyle: HtmlStyle) : StyleSpan(Typeface.BOLD), EnrichedInlineSpan {
11
- override val dependsOnHtmlStyle: Boolean = false
12
-
13
- override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedBoldSpan {
14
- return EnrichedBoldSpan(htmlStyle)
15
- }
16
- }
@@ -1,23 +0,0 @@
1
- package com.swmansion.enriched.spans
2
-
3
- import android.graphics.Typeface
4
- import android.text.TextPaint
5
- import android.text.style.AbsoluteSizeSpan
6
- import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
7
- import com.swmansion.enriched.styles.HtmlStyle
8
-
9
- class EnrichedH1Span(private val style: HtmlStyle) : AbsoluteSizeSpan(style.h1FontSize), EnrichedHeadingSpan {
10
- override val dependsOnHtmlStyle: Boolean = true
11
-
12
- override fun updateDrawState(tp: TextPaint) {
13
- super.updateDrawState(tp)
14
- val bold = style.h1Bold
15
- if (bold) {
16
- tp.typeface = Typeface.create(tp.typeface, Typeface.BOLD)
17
- }
18
- }
19
-
20
- override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH1Span {
21
- return EnrichedH1Span(htmlStyle)
22
- }
23
- }
@@ -1,23 +0,0 @@
1
- package com.swmansion.enriched.spans
2
-
3
- import android.graphics.Typeface
4
- import android.text.TextPaint
5
- import android.text.style.AbsoluteSizeSpan
6
- import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
7
- import com.swmansion.enriched.styles.HtmlStyle
8
-
9
- class EnrichedH2Span(private val htmlStyle: HtmlStyle) : AbsoluteSizeSpan(htmlStyle.h2FontSize), EnrichedHeadingSpan {
10
- override val dependsOnHtmlStyle: Boolean = true
11
-
12
- override fun updateDrawState(tp: TextPaint) {
13
- super.updateDrawState(tp)
14
- val bold = htmlStyle.h2Bold
15
- if (bold) {
16
- tp.typeface = Typeface.create(tp.typeface, Typeface.BOLD)
17
- }
18
- }
19
-
20
- override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH2Span {
21
- return EnrichedH2Span(htmlStyle)
22
- }
23
- }
@@ -1,23 +0,0 @@
1
- package com.swmansion.enriched.spans
2
-
3
- import android.graphics.Typeface
4
- import android.text.TextPaint
5
- import android.text.style.AbsoluteSizeSpan
6
- import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
7
- import com.swmansion.enriched.styles.HtmlStyle
8
-
9
- class EnrichedH3Span(private val htmlStyle: HtmlStyle) : AbsoluteSizeSpan(htmlStyle.h3FontSize), EnrichedHeadingSpan {
10
- override val dependsOnHtmlStyle: Boolean = true
11
-
12
- override fun updateDrawState(tp: TextPaint) {
13
- super.updateDrawState(tp)
14
- val bold = htmlStyle.h3Bold
15
- if (bold) {
16
- tp.typeface = Typeface.create(tp.typeface, Typeface.BOLD)
17
- }
18
- }
19
-
20
- override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH3Span {
21
- return EnrichedH3Span(htmlStyle)
22
- }
23
- }
@@ -1,27 +0,0 @@
1
- package com.swmansion.enriched.spans
2
-
3
- import android.graphics.Typeface
4
- import android.text.TextPaint
5
- import android.text.style.MetricAffectingSpan
6
- import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
7
- import com.swmansion.enriched.styles.HtmlStyle
8
-
9
- class EnrichedInlineCodeSpan(private val htmlStyle: HtmlStyle) : MetricAffectingSpan(), EnrichedInlineSpan {
10
- override val dependsOnHtmlStyle: Boolean = true
11
-
12
- override fun updateDrawState(textPaint: TextPaint) {
13
- val typeface = Typeface.create(Typeface.MONOSPACE, Typeface.NORMAL)
14
- textPaint.typeface = typeface
15
- textPaint.color = htmlStyle.inlineCodeColor
16
- textPaint.bgColor = htmlStyle.inlineCodeBackgroundColor
17
- }
18
-
19
- override fun updateMeasureState(textPaint: TextPaint) {
20
- val typeface = Typeface.create(Typeface.MONOSPACE, Typeface.NORMAL)
21
- textPaint.typeface = typeface
22
- }
23
-
24
- override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedInlineCodeSpan {
25
- return EnrichedInlineCodeSpan(htmlStyle)
26
- }
27
- }
@@ -1,15 +0,0 @@
1
- package com.swmansion.enriched.spans
2
-
3
- import android.graphics.Typeface
4
- import android.text.style.StyleSpan
5
- import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
6
- import com.swmansion.enriched.styles.HtmlStyle
7
-
8
- @Suppress("UNUSED_PARAMETER")
9
- class EnrichedItalicSpan(private val htmlStyle: HtmlStyle) : StyleSpan(Typeface.ITALIC), EnrichedInlineSpan {
10
- override val dependsOnHtmlStyle: Boolean = false
11
-
12
- override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedItalicSpan {
13
- return EnrichedItalicSpan(htmlStyle)
14
- }
15
- }
@@ -1,30 +0,0 @@
1
- package com.swmansion.enriched.spans
2
-
3
- import android.text.TextPaint
4
- import android.text.style.ClickableSpan
5
- import android.view.View
6
- import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
7
- import com.swmansion.enriched.styles.HtmlStyle
8
-
9
- class EnrichedLinkSpan(private val url: String, private val htmlStyle: HtmlStyle) : ClickableSpan(), EnrichedInlineSpan {
10
- override val dependsOnHtmlStyle: Boolean = true
11
-
12
- override fun onClick(view: View) {
13
- // Do nothing, links inside the input are not clickable.
14
- // We are using `ClickableSpan` to allow the text to be styled as a link.
15
- }
16
-
17
- override fun updateDrawState(textPaint: TextPaint) {
18
- super.updateDrawState(textPaint)
19
- textPaint.color = htmlStyle.aColor
20
- textPaint.isUnderlineText = htmlStyle.aUnderline
21
- }
22
-
23
- fun getUrl(): String {
24
- return url
25
- }
26
-
27
- override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedLinkSpan {
28
- return EnrichedLinkSpan(url, htmlStyle)
29
- }
30
- }