@fendent/react-native-enriched 0.5.2-fork.1

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 (278) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +343 -0
  3. package/ReactNativeEnriched.podspec +31 -0
  4. package/android/build.gradle +106 -0
  5. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerDelegate.java +197 -0
  6. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerInterface.java +72 -0
  7. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ComponentDescriptors.cpp +22 -0
  8. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ComponentDescriptors.h +24 -0
  9. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.cpp +434 -0
  10. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.h +391 -0
  11. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/Props.cpp +173 -0
  12. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/Props.h +833 -0
  13. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ShadowNodes.cpp +17 -0
  14. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ShadowNodes.h +23 -0
  15. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/States.cpp +16 -0
  16. package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/States.h +20 -0
  17. package/android/gradle.properties +5 -0
  18. package/android/lint.gradle +70 -0
  19. package/android/src/main/AndroidManifest.xml +3 -0
  20. package/android/src/main/AndroidManifestNew.xml +2 -0
  21. package/android/src/main/java/com/swmansion/enriched/ReactNativeEnrichedPackage.kt +20 -0
  22. package/android/src/main/java/com/swmansion/enriched/common/AsyncDrawable.kt +126 -0
  23. package/android/src/main/java/com/swmansion/enriched/common/CheckboxDrawable.kt +81 -0
  24. package/android/src/main/java/com/swmansion/enriched/common/EnrichedConstants.kt +11 -0
  25. package/android/src/main/java/com/swmansion/enriched/common/EnrichedStyle.kt +57 -0
  26. package/android/src/main/java/com/swmansion/enriched/common/ForceRedrawSpan.kt +14 -0
  27. package/android/src/main/java/com/swmansion/enriched/common/GumboNormalizer.kt +5 -0
  28. package/android/src/main/java/com/swmansion/enriched/common/MentionStyle.kt +7 -0
  29. package/android/src/main/java/com/swmansion/enriched/common/ResourceManager.kt +26 -0
  30. package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java +956 -0
  31. package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedSpanFactory.kt +79 -0
  32. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedBlockQuoteSpan.kt +53 -0
  33. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedBoldSpan.kt +12 -0
  34. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedCheckboxListSpan.kt +92 -0
  35. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedCodeBlockSpan.kt +81 -0
  36. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH1Span.kt +20 -0
  37. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH2Span.kt +20 -0
  38. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH3Span.kt +20 -0
  39. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH4Span.kt +21 -0
  40. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH5Span.kt +20 -0
  41. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH6Span.kt +20 -0
  42. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedImageSpan.kt +184 -0
  43. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedInlineCodeSpan.kt +24 -0
  44. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedItalicSpan.kt +12 -0
  45. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedLinkSpan.kt +29 -0
  46. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedMentionSpan.kt +35 -0
  47. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedOrderedListSpan.kt +79 -0
  48. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedStrikeThroughSpan.kt +11 -0
  49. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedUnderlineSpan.kt +11 -0
  50. package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedUnorderedListSpan.kt +62 -0
  51. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedBlockSpan.kt +5 -0
  52. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedHeadingSpan.kt +3 -0
  53. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedInlineSpan.kt +3 -0
  54. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedParagraphSpan.kt +5 -0
  55. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedSpan.kt +3 -0
  56. package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedZeroWidthSpaceSpan.kt +4 -0
  57. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputConnectionWrapper.kt +140 -0
  58. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputSpannableFactory.kt +83 -0
  59. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt +1120 -0
  60. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputViewLayoutManager.kt +27 -0
  61. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputViewManager.kt +478 -0
  62. package/android/src/main/java/com/swmansion/enriched/textinput/MeasurementStore.kt +225 -0
  63. package/android/src/main/java/com/swmansion/enriched/textinput/events/MentionHandler.kt +55 -0
  64. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeHtmlEvent.kt +27 -0
  65. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeSelectionEvent.kt +30 -0
  66. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeStateEvent.kt +21 -0
  67. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeTextEvent.kt +30 -0
  68. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnContextMenuItemPressEvent.kt +35 -0
  69. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputBlurEvent.kt +25 -0
  70. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputFocusEvent.kt +25 -0
  71. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputKeyPressEvent.kt +27 -0
  72. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnLinkDetectedEvent.kt +32 -0
  73. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnMentionDetectedEvent.kt +30 -0
  74. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnMentionEvent.kt +34 -0
  75. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnPasteImagesEvent.kt +47 -0
  76. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnRequestHtmlResultEvent.kt +32 -0
  77. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnSubmitEditingEvent.kt +29 -0
  78. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputBlockQuoteSpan.kt +14 -0
  79. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputBoldSpan.kt +14 -0
  80. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputCheckboxListSpan.kt +15 -0
  81. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputCodeBlockSpan.kt +14 -0
  82. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH1Span.kt +14 -0
  83. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH2Span.kt +14 -0
  84. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH3Span.kt +14 -0
  85. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH4Span.kt +14 -0
  86. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH5Span.kt +14 -0
  87. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH6Span.kt +14 -0
  88. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputImageSpan.kt +36 -0
  89. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputInlineCodeSpan.kt +14 -0
  90. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputItalicSpan.kt +14 -0
  91. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputLinkSpan.kt +16 -0
  92. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputMentionSpan.kt +18 -0
  93. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputOrderedListSpan.kt +21 -0
  94. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputStrikeThroughSpan.kt +14 -0
  95. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputUnderlineSpan.kt +14 -0
  96. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputUnorderedListSpan.kt +14 -0
  97. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedLineHeightSpan.kt +44 -0
  98. package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedSpans.kt +241 -0
  99. package/android/src/main/java/com/swmansion/enriched/textinput/spans/interfaces/EnrichedInputSpan.kt +10 -0
  100. package/android/src/main/java/com/swmansion/enriched/textinput/styles/HtmlStyle.kt +372 -0
  101. package/android/src/main/java/com/swmansion/enriched/textinput/styles/InlineStyles.kt +164 -0
  102. package/android/src/main/java/com/swmansion/enriched/textinput/styles/ListStyles.kt +263 -0
  103. package/android/src/main/java/com/swmansion/enriched/textinput/styles/ParagraphStyles.kt +434 -0
  104. package/android/src/main/java/com/swmansion/enriched/textinput/styles/ParametrizedStyles.kt +394 -0
  105. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedEditableFactory.kt +17 -0
  106. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSelection.kt +320 -0
  107. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpanState.kt +310 -0
  108. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannable.kt +106 -0
  109. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannableStringBuilder.kt +24 -0
  110. package/android/src/main/java/com/swmansion/enriched/textinput/utils/RichContentReceiver.kt +127 -0
  111. package/android/src/main/java/com/swmansion/enriched/textinput/utils/Utils.kt +106 -0
  112. package/android/src/main/java/com/swmansion/enriched/textinput/watchers/EnrichedSpanWatcher.kt +107 -0
  113. package/android/src/main/java/com/swmansion/enriched/textinput/watchers/EnrichedTextWatcher.kt +74 -0
  114. package/android/src/main/new_arch/CMakeLists.txt +62 -0
  115. package/android/src/main/new_arch/GumboNormalizerJni.cpp +14 -0
  116. package/android/src/main/new_arch/ReactNativeEnrichedSpec.cpp +11 -0
  117. package/android/src/main/new_arch/ReactNativeEnrichedSpec.h +15 -0
  118. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputComponentDescriptor.h +35 -0
  119. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputMeasurementManager.cpp +53 -0
  120. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputMeasurementManager.h +25 -0
  121. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputShadowNode.cpp +35 -0
  122. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputShadowNode.h +53 -0
  123. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputState.cpp +9 -0
  124. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputState.h +24 -0
  125. package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/conversions.h +27 -0
  126. package/android/src/main/res/drawable/broken_image.xml +10 -0
  127. package/cpp/CMakeLists.txt +50 -0
  128. package/cpp/GumboParser/GumboParser.h +34043 -0
  129. package/cpp/README.md +59 -0
  130. package/cpp/parser/GumboNormalizer.c +915 -0
  131. package/cpp/parser/GumboParser.cpp +16 -0
  132. package/cpp/parser/GumboParser.hpp +23 -0
  133. package/cpp/tests/GumboParserTest.cpp +457 -0
  134. package/ios/EnrichedTextInputView.h +53 -0
  135. package/ios/EnrichedTextInputView.mm +2360 -0
  136. package/ios/EnrichedTextInputViewManager.mm +13 -0
  137. package/ios/attributesManager/AttributesManager.h +17 -0
  138. package/ios/attributesManager/AttributesManager.mm +195 -0
  139. package/ios/config/InputConfig.h +104 -0
  140. package/ios/config/InputConfig.mm +664 -0
  141. package/ios/extensions/ColorExtension.h +7 -0
  142. package/ios/extensions/ColorExtension.mm +38 -0
  143. package/ios/extensions/FontExtension.h +11 -0
  144. package/ios/extensions/FontExtension.mm +72 -0
  145. package/ios/extensions/ImageExtension.h +34 -0
  146. package/ios/extensions/ImageExtension.mm +165 -0
  147. package/ios/extensions/LayoutManagerExtension.h +6 -0
  148. package/ios/extensions/LayoutManagerExtension.mm +443 -0
  149. package/ios/extensions/StringExtension.h +15 -0
  150. package/ios/extensions/StringExtension.mm +69 -0
  151. package/ios/generated/ReactNativeEnrichedSpec/ComponentDescriptors.cpp +22 -0
  152. package/ios/generated/ReactNativeEnrichedSpec/ComponentDescriptors.h +24 -0
  153. package/ios/generated/ReactNativeEnrichedSpec/EventEmitters.cpp +434 -0
  154. package/ios/generated/ReactNativeEnrichedSpec/EventEmitters.h +391 -0
  155. package/ios/generated/ReactNativeEnrichedSpec/Props.cpp +173 -0
  156. package/ios/generated/ReactNativeEnrichedSpec/Props.h +833 -0
  157. package/ios/generated/ReactNativeEnrichedSpec/RCTComponentViewHelpers.h +582 -0
  158. package/ios/generated/ReactNativeEnrichedSpec/ShadowNodes.cpp +17 -0
  159. package/ios/generated/ReactNativeEnrichedSpec/ShadowNodes.h +23 -0
  160. package/ios/generated/ReactNativeEnrichedSpec/States.cpp +16 -0
  161. package/ios/generated/ReactNativeEnrichedSpec/States.h +20 -0
  162. package/ios/inputParser/InputParser.h +11 -0
  163. package/ios/inputParser/InputParser.mm +1463 -0
  164. package/ios/inputTextView/InputTextView.h +6 -0
  165. package/ios/inputTextView/InputTextView.mm +285 -0
  166. package/ios/interfaces/AttributeEntry.h +9 -0
  167. package/ios/interfaces/AttributeEntry.mm +4 -0
  168. package/ios/interfaces/BaseStyleProtocol.h +17 -0
  169. package/ios/interfaces/ImageAttachment.h +11 -0
  170. package/ios/interfaces/ImageAttachment.mm +107 -0
  171. package/ios/interfaces/ImageData.h +10 -0
  172. package/ios/interfaces/ImageData.mm +4 -0
  173. package/ios/interfaces/LinkData.h +11 -0
  174. package/ios/interfaces/LinkData.mm +29 -0
  175. package/ios/interfaces/LinkRegexConfig.h +19 -0
  176. package/ios/interfaces/LinkRegexConfig.mm +37 -0
  177. package/ios/interfaces/MediaAttachment.h +23 -0
  178. package/ios/interfaces/MediaAttachment.mm +31 -0
  179. package/ios/interfaces/MentionParams.h +8 -0
  180. package/ios/interfaces/MentionParams.mm +4 -0
  181. package/ios/interfaces/MentionStyleProps.h +13 -0
  182. package/ios/interfaces/MentionStyleProps.mm +63 -0
  183. package/ios/interfaces/StyleBase.h +36 -0
  184. package/ios/interfaces/StyleBase.mm +256 -0
  185. package/ios/interfaces/StyleHeaders.h +102 -0
  186. package/ios/interfaces/StylePair.h +9 -0
  187. package/ios/interfaces/StylePair.mm +4 -0
  188. package/ios/interfaces/StyleTypeEnum.h +26 -0
  189. package/ios/interfaces/TextDecorationLineEnum.h +6 -0
  190. package/ios/interfaces/TextDecorationLineEnum.mm +4 -0
  191. package/ios/internals/EnrichedTextInputViewComponentDescriptor.h +19 -0
  192. package/ios/internals/EnrichedTextInputViewShadowNode.h +44 -0
  193. package/ios/internals/EnrichedTextInputViewShadowNode.mm +103 -0
  194. package/ios/internals/EnrichedTextInputViewState.cpp +10 -0
  195. package/ios/internals/EnrichedTextInputViewState.h +22 -0
  196. package/ios/styles/BlockQuoteStyle.mm +55 -0
  197. package/ios/styles/BoldStyle.mm +37 -0
  198. package/ios/styles/CheckboxListStyle.mm +153 -0
  199. package/ios/styles/CodeBlockStyle.mm +49 -0
  200. package/ios/styles/H1Style.mm +20 -0
  201. package/ios/styles/H2Style.mm +20 -0
  202. package/ios/styles/H3Style.mm +20 -0
  203. package/ios/styles/H4Style.mm +20 -0
  204. package/ios/styles/H5Style.mm +20 -0
  205. package/ios/styles/H6Style.mm +20 -0
  206. package/ios/styles/HeadingStyleBase.mm +65 -0
  207. package/ios/styles/ImageStyle.mm +146 -0
  208. package/ios/styles/InlineCodeStyle.mm +65 -0
  209. package/ios/styles/ItalicStyle.mm +37 -0
  210. package/ios/styles/LinkStyle.mm +532 -0
  211. package/ios/styles/MentionStyle.mm +538 -0
  212. package/ios/styles/OrderedListStyle.mm +86 -0
  213. package/ios/styles/StrikethroughStyle.mm +25 -0
  214. package/ios/styles/UnderlineStyle.mm +24 -0
  215. package/ios/styles/UnorderedListStyle.mm +86 -0
  216. package/ios/utils/CheckboxHitTestUtils.h +10 -0
  217. package/ios/utils/CheckboxHitTestUtils.mm +122 -0
  218. package/ios/utils/DotReplacementUtils.h +10 -0
  219. package/ios/utils/DotReplacementUtils.mm +68 -0
  220. package/ios/utils/KeyboardUtils.h +7 -0
  221. package/ios/utils/KeyboardUtils.mm +31 -0
  222. package/ios/utils/OccurenceUtils.h +44 -0
  223. package/ios/utils/OccurenceUtils.mm +179 -0
  224. package/ios/utils/ParagraphAttributesUtils.h +15 -0
  225. package/ios/utils/ParagraphAttributesUtils.mm +257 -0
  226. package/ios/utils/RangeUtils.h +12 -0
  227. package/ios/utils/RangeUtils.mm +183 -0
  228. package/ios/utils/TextBlockTapGestureRecognizer.h +17 -0
  229. package/ios/utils/TextBlockTapGestureRecognizer.mm +56 -0
  230. package/ios/utils/TextInsertionUtils.h +17 -0
  231. package/ios/utils/TextInsertionUtils.mm +64 -0
  232. package/ios/utils/WordsUtils.h +7 -0
  233. package/ios/utils/WordsUtils.mm +98 -0
  234. package/ios/utils/ZeroWidthSpaceUtils.h +9 -0
  235. package/ios/utils/ZeroWidthSpaceUtils.mm +270 -0
  236. package/lib/module/index.js +4 -0
  237. package/lib/module/index.js.map +1 -0
  238. package/lib/module/native/EnrichedTextInput.js +304 -0
  239. package/lib/module/native/EnrichedTextInput.js.map +1 -0
  240. package/lib/module/package.json +1 -0
  241. package/lib/module/spec/EnrichedTextInputNativeComponent.ts +517 -0
  242. package/lib/module/types.js +4 -0
  243. package/lib/module/types.js.map +1 -0
  244. package/lib/module/utils/EnrichedTextInputDefaultProps.js +12 -0
  245. package/lib/module/utils/EnrichedTextInputDefaultProps.js.map +1 -0
  246. package/lib/module/utils/normalizeHtmlStyle.js +155 -0
  247. package/lib/module/utils/normalizeHtmlStyle.js.map +1 -0
  248. package/lib/module/utils/nullthrows.js +9 -0
  249. package/lib/module/utils/nullthrows.js.map +1 -0
  250. package/lib/module/utils/regexParser.js +46 -0
  251. package/lib/module/utils/regexParser.js.map +1 -0
  252. package/lib/typescript/package.json +1 -0
  253. package/lib/typescript/src/index.d.ts +3 -0
  254. package/lib/typescript/src/index.d.ts.map +1 -0
  255. package/lib/typescript/src/native/EnrichedTextInput.d.ts +3 -0
  256. package/lib/typescript/src/native/EnrichedTextInput.d.ts.map +1 -0
  257. package/lib/typescript/src/spec/EnrichedTextInputNativeComponent.d.ts +397 -0
  258. package/lib/typescript/src/spec/EnrichedTextInputNativeComponent.d.ts.map +1 -0
  259. package/lib/typescript/src/types.d.ts +447 -0
  260. package/lib/typescript/src/types.d.ts.map +1 -0
  261. package/lib/typescript/src/utils/EnrichedTextInputDefaultProps.d.ts +10 -0
  262. package/lib/typescript/src/utils/EnrichedTextInputDefaultProps.d.ts.map +1 -0
  263. package/lib/typescript/src/utils/normalizeHtmlStyle.d.ts +4 -0
  264. package/lib/typescript/src/utils/normalizeHtmlStyle.d.ts.map +1 -0
  265. package/lib/typescript/src/utils/nullthrows.d.ts +2 -0
  266. package/lib/typescript/src/utils/nullthrows.d.ts.map +1 -0
  267. package/lib/typescript/src/utils/regexParser.d.ts +3 -0
  268. package/lib/typescript/src/utils/regexParser.d.ts.map +1 -0
  269. package/package.json +226 -0
  270. package/react-native.config.js +13 -0
  271. package/src/index.tsx +20 -0
  272. package/src/native/EnrichedTextInput.tsx +370 -0
  273. package/src/spec/EnrichedTextInputNativeComponent.ts +517 -0
  274. package/src/types.ts +499 -0
  275. package/src/utils/EnrichedTextInputDefaultProps.ts +9 -0
  276. package/src/utils/normalizeHtmlStyle.ts +199 -0
  277. package/src/utils/nullthrows.ts +7 -0
  278. package/src/utils/regexParser.ts +56 -0
@@ -0,0 +1,443 @@
1
+ #import "LayoutManagerExtension.h"
2
+ #import "ColorExtension.h"
3
+ #import "EnrichedTextInputView.h"
4
+ #import "RangeUtils.h"
5
+ #import "StyleHeaders.h"
6
+ #import <objc/runtime.h>
7
+
8
+ @implementation NSLayoutManager (LayoutManagerExtension)
9
+
10
+ static void const *kInputKey = &kInputKey;
11
+
12
+ - (id)input {
13
+ return objc_getAssociatedObject(self, kInputKey);
14
+ }
15
+
16
+ - (void)setInput:(id)value {
17
+ objc_setAssociatedObject(self, kInputKey, value,
18
+ OBJC_ASSOCIATION_RETAIN_NONATOMIC);
19
+ }
20
+
21
+ + (void)load {
22
+ static dispatch_once_t onceToken;
23
+ dispatch_once(&onceToken, ^{
24
+ Class myClass = [NSLayoutManager class];
25
+ SEL originalSelector = @selector(drawBackgroundForGlyphRange:atPoint:);
26
+ SEL swizzledSelector = @selector(my_drawBackgroundForGlyphRange:atPoint:);
27
+ Method originalMethod = class_getInstanceMethod(myClass, originalSelector);
28
+ Method swizzledMethod = class_getInstanceMethod(myClass, swizzledSelector);
29
+
30
+ BOOL didAddMethod = class_addMethod(
31
+ myClass, originalSelector, method_getImplementation(swizzledMethod),
32
+ method_getTypeEncoding(swizzledMethod));
33
+
34
+ if (didAddMethod) {
35
+ class_replaceMethod(myClass, swizzledSelector,
36
+ method_getImplementation(originalMethod),
37
+ method_getTypeEncoding(originalMethod));
38
+ } else {
39
+ method_exchangeImplementations(originalMethod, swizzledMethod);
40
+ }
41
+ });
42
+ }
43
+
44
+ - (void)my_drawBackgroundForGlyphRange:(NSRange)glyphRange
45
+ atPoint:(CGPoint)origin {
46
+ [self my_drawBackgroundForGlyphRange:glyphRange atPoint:origin];
47
+
48
+ EnrichedTextInputView *typedInput = (EnrichedTextInputView *)self.input;
49
+ if (typedInput == nullptr) {
50
+ return;
51
+ }
52
+
53
+ NSRange visibleCharRange = [self characterRangeForGlyphRange:glyphRange
54
+ actualGlyphRange:NULL];
55
+
56
+ [self drawBlockQuotes:typedInput
57
+ origin:origin
58
+ visibleCharRange:visibleCharRange];
59
+ [self drawLists:typedInput origin:origin visibleCharRange:visibleCharRange];
60
+ [self drawCodeBlocks:typedInput
61
+ origin:origin
62
+ visibleCharRange:visibleCharRange];
63
+ }
64
+
65
+ - (void)drawCodeBlocks:(EnrichedTextInputView *)typedInput
66
+ origin:(CGPoint)origin
67
+ visibleCharRange:(NSRange)visibleCharRange {
68
+ CodeBlockStyle *codeBlockStyle =
69
+ typedInput->stylesDict[@([CodeBlockStyle getType])];
70
+ if (codeBlockStyle == nullptr) {
71
+ return;
72
+ }
73
+
74
+ NSArray<StylePair *> *allCodeBlocks = [codeBlockStyle all:visibleCharRange];
75
+ NSArray<StylePair *> *mergedCodeBlocks =
76
+ [self mergeContiguousStylePairs:allCodeBlocks];
77
+ UIColor *bgColor = [[typedInput->config codeBlockBgColor]
78
+ colorWithAlphaIfNotTransparent:0.4];
79
+ CGFloat radius = [typedInput->config codeBlockBorderRadius];
80
+ [bgColor setFill];
81
+
82
+ for (StylePair *pair in mergedCodeBlocks) {
83
+ NSRange blockCharacterRange = [pair.rangeValue rangeValue];
84
+ if (blockCharacterRange.length == 0)
85
+ continue;
86
+
87
+ NSArray *paragraphs =
88
+ [RangeUtils getSeparateParagraphsRangesIn:typedInput->textView
89
+ range:blockCharacterRange];
90
+ if (paragraphs.count == 0)
91
+ continue;
92
+
93
+ NSRange firstParagraphRange =
94
+ [((NSValue *)[paragraphs firstObject]) rangeValue];
95
+ NSRange lastParagraphRange =
96
+ [((NSValue *)[paragraphs lastObject]) rangeValue];
97
+
98
+ for (NSValue *paragraphValue in paragraphs) {
99
+ NSRange paragraphCharacterRange = [paragraphValue rangeValue];
100
+
101
+ BOOL isFirstParagraph =
102
+ NSEqualRanges(paragraphCharacterRange, firstParagraphRange);
103
+ BOOL isLastParagraph =
104
+ NSEqualRanges(paragraphCharacterRange, lastParagraphRange);
105
+
106
+ NSRange paragraphGlyphRange =
107
+ [self glyphRangeForCharacterRange:paragraphCharacterRange
108
+ actualCharacterRange:NULL];
109
+
110
+ __block BOOL isFirstLineOfParagraph = YES;
111
+
112
+ [self
113
+ enumerateLineFragmentsForGlyphRange:paragraphGlyphRange
114
+ usingBlock:^(
115
+ CGRect rect, CGRect usedRect,
116
+ NSTextContainer *_Nonnull textContainer,
117
+ NSRange glyphRange,
118
+ BOOL *_Nonnull stop) {
119
+ CGRect lineBgRect = rect;
120
+ lineBgRect.origin.x = origin.x;
121
+ lineBgRect.origin.y += origin.y;
122
+ lineBgRect.size.width =
123
+ textContainer.size.width;
124
+
125
+ UIRectCorner cornersForThisLine = 0;
126
+
127
+ if (isFirstParagraph &&
128
+ isFirstLineOfParagraph) {
129
+ cornersForThisLine =
130
+ UIRectCornerTopLeft |
131
+ UIRectCornerTopRight;
132
+ }
133
+
134
+ BOOL isLastLineOfParagraph =
135
+ (NSMaxRange(glyphRange) >=
136
+ NSMaxRange(paragraphGlyphRange));
137
+
138
+ if (isLastParagraph &&
139
+ isLastLineOfParagraph) {
140
+ cornersForThisLine =
141
+ cornersForThisLine |
142
+ UIRectCornerBottomLeft |
143
+ UIRectCornerBottomRight;
144
+ }
145
+
146
+ UIBezierPath *path = [UIBezierPath
147
+ bezierPathWithRoundedRect:lineBgRect
148
+ byRoundingCorners:
149
+ cornersForThisLine
150
+ cornerRadii:CGSizeMake(
151
+ radius,
152
+ radius)];
153
+ [path fill];
154
+
155
+ isFirstLineOfParagraph = NO;
156
+ }];
157
+ }
158
+ }
159
+ }
160
+
161
+ - (NSArray<StylePair *> *)mergeContiguousStylePairs:
162
+ (NSArray<StylePair *> *)pairs {
163
+ if (pairs.count == 0) {
164
+ return @[];
165
+ }
166
+
167
+ NSMutableArray<StylePair *> *mergedPairs = [[NSMutableArray alloc] init];
168
+ StylePair *currentPair = pairs[0];
169
+ NSRange currentRange = [currentPair.rangeValue rangeValue];
170
+ for (NSUInteger i = 1; i < pairs.count; i++) {
171
+ StylePair *nextPair = pairs[i];
172
+ NSRange nextRange = [nextPair.rangeValue rangeValue];
173
+
174
+ // The Gap Check:
175
+ // NSMaxRange(currentRange) is where the current block ends.
176
+ // nextRange.location is where the next block starts.
177
+ if (NSMaxRange(currentRange) == nextRange.location) {
178
+ // They touch perfectly (no gap). Merge them.
179
+ currentRange.length += nextRange.length;
180
+ } else {
181
+ // There is a gap (indices don't match).
182
+ // 1. Save the finished block.
183
+ StylePair *mergedPair = [[StylePair alloc] init];
184
+ mergedPair.rangeValue = [NSValue valueWithRange:currentRange];
185
+ mergedPair.styleValue = currentPair.styleValue;
186
+ [mergedPairs addObject:mergedPair];
187
+
188
+ // 2. Start a brand new block.
189
+ currentPair = nextPair;
190
+ currentRange = nextRange;
191
+ }
192
+ }
193
+
194
+ // Add the final block
195
+ StylePair *lastPair = [[StylePair alloc] init];
196
+ lastPair.rangeValue = [NSValue valueWithRange:currentRange];
197
+ lastPair.styleValue = currentPair.styleValue;
198
+ [mergedPairs addObject:lastPair];
199
+
200
+ return mergedPairs;
201
+ }
202
+
203
+ - (void)drawBlockQuotes:(EnrichedTextInputView *)typedInput
204
+ origin:(CGPoint)origin
205
+ visibleCharRange:(NSRange)visibleCharRange {
206
+ BlockQuoteStyle *bqStyle =
207
+ typedInput->stylesDict[@([BlockQuoteStyle getType])];
208
+ if (bqStyle == nullptr) {
209
+ return;
210
+ }
211
+
212
+ NSArray *allBlockquotes = [bqStyle all:visibleCharRange];
213
+
214
+ for (StylePair *pair in allBlockquotes) {
215
+ NSRange paragraphRange = [typedInput->textView.textStorage.string
216
+ paragraphRangeForRange:[pair.rangeValue rangeValue]];
217
+ NSRange paragraphGlyphRange =
218
+ [self glyphRangeForCharacterRange:paragraphRange
219
+ actualCharacterRange:nullptr];
220
+ [self
221
+ enumerateLineFragmentsForGlyphRange:paragraphGlyphRange
222
+ usingBlock:^(
223
+ CGRect rect, CGRect usedRect,
224
+ NSTextContainer *_Nonnull textContainer,
225
+ NSRange glyphRange, BOOL *_Nonnull stop) {
226
+ CGFloat paddingLeft = origin.x;
227
+ CGFloat paddingTop = origin.y;
228
+ CGFloat x = paddingLeft;
229
+ CGFloat y = paddingTop + rect.origin.y;
230
+ CGFloat width =
231
+ [typedInput
232
+ ->config blockquoteBorderWidth];
233
+ CGFloat height = rect.size.height;
234
+
235
+ CGRect lineRect =
236
+ CGRectMake(x, y, width, height);
237
+ [[typedInput->config blockquoteBorderColor]
238
+ setFill];
239
+ UIRectFill(lineRect);
240
+ }];
241
+ }
242
+ }
243
+
244
+ - (void)drawLists:(EnrichedTextInputView *)typedInput
245
+ origin:(CGPoint)origin
246
+ visibleCharRange:(NSRange)visibleCharRange {
247
+ UnorderedListStyle *ulStyle =
248
+ typedInput->stylesDict[@([UnorderedListStyle getType])];
249
+ OrderedListStyle *olStyle =
250
+ typedInput->stylesDict[@([OrderedListStyle getType])];
251
+ CheckboxListStyle *cbStyle =
252
+ typedInput->stylesDict[@([CheckboxListStyle getType])];
253
+ if (ulStyle == nullptr || olStyle == nullptr || cbStyle == nullptr) {
254
+ return;
255
+ }
256
+
257
+ NSMutableArray *allLists = [[NSMutableArray alloc] init];
258
+
259
+ [allLists addObjectsFromArray:[ulStyle all:visibleCharRange]];
260
+ [allLists addObjectsFromArray:[olStyle all:visibleCharRange]];
261
+ [allLists addObjectsFromArray:[cbStyle all:visibleCharRange]];
262
+
263
+ for (StylePair *pair in allLists) {
264
+ NSParagraphStyle *pStyle = (NSParagraphStyle *)pair.styleValue;
265
+ NSDictionary *markerAttributes = @{
266
+ NSFontAttributeName : [typedInput->config orderedListMarkerFont],
267
+ NSForegroundColorAttributeName :
268
+ [typedInput->config orderedListMarkerColor]
269
+ };
270
+
271
+ NSArray *paragraphs =
272
+ [RangeUtils getSeparateParagraphsRangesIn:typedInput->textView
273
+ range:[pair.rangeValue rangeValue]];
274
+
275
+ for (NSValue *paragraph in paragraphs) {
276
+ NSRange paragraphGlyphRange =
277
+ [self glyphRangeForCharacterRange:[paragraph rangeValue]
278
+ actualCharacterRange:nullptr];
279
+
280
+ [self
281
+ enumerateLineFragmentsForGlyphRange:paragraphGlyphRange
282
+ usingBlock:^(CGRect rect, CGRect usedRect,
283
+ NSTextContainer *container,
284
+ NSRange lineGlyphRange,
285
+ BOOL *stop) {
286
+ NSUInteger charIdx =
287
+ [self characterIndexForGlyphAtIndex:
288
+ lineGlyphRange.location];
289
+ UIFont *font =
290
+ [typedInput->textView.textStorage
291
+ attribute:NSFontAttributeName
292
+ atIndex:charIdx
293
+ effectiveRange:nil];
294
+ CGRect textUsedRect =
295
+ [self getTextAlignedUsedRect:usedRect
296
+ font:font];
297
+
298
+ NSString *markerFormat =
299
+ pStyle.textLists.firstObject
300
+ .markerFormat;
301
+
302
+ if ([markerFormat
303
+ isEqualToString:
304
+ @"EnrichedOrderedList"]) {
305
+ NSString *marker = [self
306
+ getDecimalMarkerForList:typedInput
307
+ charIndex:charIdx];
308
+ [self drawDecimal:typedInput
309
+ marker:marker
310
+ markerAttributes:markerAttributes
311
+ origin:origin
312
+ usedRect:usedRect];
313
+ } else if ([markerFormat
314
+ isEqualToString:
315
+ @"EnrichedUnorderedLis"
316
+ @"t"]) {
317
+ [self drawBullet:typedInput
318
+ origin:origin
319
+ usedRect:textUsedRect];
320
+ } else if ([markerFormat
321
+ hasPrefix:
322
+ @"EnrichedCheckbox"]) {
323
+ [self drawCheckbox:typedInput
324
+ markerFormat:markerFormat
325
+ origin:origin
326
+ usedRect:textUsedRect];
327
+ }
328
+ // only first line of a list gets its
329
+ // marker drawn
330
+ *stop = YES;
331
+ }];
332
+ }
333
+ }
334
+ }
335
+
336
+ - (NSString *)getDecimalMarkerForList:(EnrichedTextInputView *)input
337
+ charIndex:(NSUInteger)index {
338
+ NSString *fullText = input->textView.textStorage.string;
339
+ NSInteger itemNumber = 1;
340
+
341
+ NSRange currentParagraph =
342
+ [fullText paragraphRangeForRange:NSMakeRange(index, 0)];
343
+ if (currentParagraph.location > 0) {
344
+ OrderedListStyle *olStyle =
345
+ input->stylesDict[@([OrderedListStyle getType])];
346
+
347
+ NSInteger prevParagraphsCount = 0;
348
+ NSInteger recentParagraphLocation =
349
+ [fullText paragraphRangeForRange:NSMakeRange(
350
+ currentParagraph.location - 1, 0)]
351
+ .location;
352
+
353
+ // seek for previous lists
354
+ while (true) {
355
+ if ([olStyle detect:NSMakeRange(recentParagraphLocation, 0)]) {
356
+ prevParagraphsCount += 1;
357
+
358
+ if (recentParagraphLocation > 0) {
359
+ recentParagraphLocation =
360
+ [fullText
361
+ paragraphRangeForRange:NSMakeRange(
362
+ recentParagraphLocation - 1, 0)]
363
+ .location;
364
+ } else {
365
+ break;
366
+ }
367
+ } else {
368
+ break;
369
+ }
370
+ }
371
+
372
+ itemNumber = prevParagraphsCount + 1;
373
+ }
374
+
375
+ return [NSString stringWithFormat:@"%ld.", (long)(itemNumber)];
376
+ }
377
+
378
+ // Returns a usedRect adjusted to cover only the text portion of the line.
379
+ // When minimumLineHeight expands the line box, extra space is added at the top
380
+ // and text stays at the bottom. This strips that padding so markers align with
381
+ // the text, not the full line box.
382
+ - (CGRect)getTextAlignedUsedRect:(CGRect)usedRect font:(UIFont *)font {
383
+ if (font && usedRect.size.height > font.lineHeight) {
384
+ CGFloat extraSpace = usedRect.size.height - font.lineHeight;
385
+ usedRect.origin.y += extraSpace;
386
+ usedRect.size.height = font.lineHeight;
387
+ }
388
+ return usedRect;
389
+ }
390
+
391
+ - (void)drawCheckbox:(EnrichedTextInputView *)typedInput
392
+ markerFormat:(NSString *)markerFormat
393
+ origin:(CGPoint)origin
394
+ usedRect:(CGRect)usedRect {
395
+ BOOL isChecked = [markerFormat isEqualToString:@"EnrichedCheckbox1"];
396
+
397
+ UIImage *image = isChecked ? typedInput->config.checkboxCheckedImage
398
+ : typedInput->config.checkboxUncheckedImage;
399
+ CGFloat gapWidth = [typedInput->config checkboxListGapWidth];
400
+ CGFloat boxSize = [typedInput->config checkboxListBoxSize];
401
+
402
+ CGFloat centerY = CGRectGetMidY(usedRect) + origin.y;
403
+ CGFloat boxX = origin.x + usedRect.origin.x - gapWidth - boxSize;
404
+ CGFloat boxY = centerY - boxSize / 2.0;
405
+
406
+ [image drawAtPoint:CGPointMake(boxX, boxY)];
407
+ }
408
+
409
+ - (void)drawBullet:(EnrichedTextInputView *)typedInput
410
+ origin:(CGPoint)origin
411
+ usedRect:(CGRect)usedRect {
412
+ CGFloat gapWidth = [typedInput->config unorderedListGapWidth];
413
+ CGFloat bulletSize = [typedInput->config unorderedListBulletSize];
414
+ CGFloat bulletX = origin.x + usedRect.origin.x - gapWidth - bulletSize / 2;
415
+ CGFloat centerY = CGRectGetMidY(usedRect) + origin.y;
416
+
417
+ CGContextRef context = UIGraphicsGetCurrentContext();
418
+ CGContextSaveGState(context);
419
+ {
420
+ [[typedInput->config unorderedListBulletColor] setFill];
421
+ CGContextAddArc(context, bulletX, centerY, bulletSize / 2, 0, 2 * M_PI,
422
+ YES);
423
+ CGContextFillPath(context);
424
+ }
425
+ CGContextRestoreGState(context);
426
+ }
427
+
428
+ - (void)drawDecimal:(EnrichedTextInputView *)typedInput
429
+ marker:(NSString *)marker
430
+ markerAttributes:(NSDictionary *)markerAttributes
431
+ origin:(CGPoint)origin
432
+ usedRect:(CGRect)usedRect {
433
+ CGFloat gapWidth = [typedInput->config orderedListGapWidth];
434
+ CGSize markerSize = [marker sizeWithAttributes:markerAttributes];
435
+ CGFloat markerX = usedRect.origin.x - gapWidth - markerSize.width / 2;
436
+ CGFloat centerY = CGRectGetMidY(usedRect) + origin.y;
437
+ CGFloat markerY = centerY - markerSize.height / 2.0;
438
+
439
+ [marker drawAtPoint:CGPointMake(markerX, markerY)
440
+ withAttributes:markerAttributes];
441
+ }
442
+
443
+ @end
@@ -0,0 +1,15 @@
1
+ #include "string"
2
+ #import <UIKit/UIKit.h>
3
+ #pragma once
4
+
5
+ @interface NSString (StringExtension)
6
+ - (std::string)toCppString;
7
+ + (NSString *)fromCppString:(std::string)string;
8
+ + (NSString *)stringByEscapingHtml:(NSString *)html;
9
+ + (NSDictionary *)getEscapedCharactersInfoFrom:(NSString *)text;
10
+ @end
11
+
12
+ @interface NSMutableString (StringExtension)
13
+ - (std::string)toCppString;
14
+ + (NSMutableString *)fromCppString:(std::string)string;
15
+ @end
@@ -0,0 +1,69 @@
1
+ #import "StringExtension.h"
2
+
3
+ @implementation NSString (StringExtension)
4
+
5
+ - (std::string)toCppString {
6
+ return std::string([self UTF8String]);
7
+ }
8
+
9
+ + (NSString *)fromCppString:(std::string)string {
10
+ return [NSString stringWithUTF8String:string.c_str()];
11
+ }
12
+
13
+ + (NSString *)stringByEscapingHtml:(NSString *)html {
14
+ NSMutableString *escaped = [html mutableCopy];
15
+ NSDictionary *escapeMap = @{
16
+ @"&" : @"&amp;",
17
+ @"<" : @"&lt;",
18
+ @">" : @"&gt;",
19
+ };
20
+
21
+ for (NSString *key in escapeMap) {
22
+ [escaped replaceOccurrencesOfString:key
23
+ withString:escapeMap[key]
24
+ options:NSLiteralSearch
25
+ range:NSMakeRange(0, escaped.length)];
26
+ }
27
+ return escaped;
28
+ }
29
+
30
+ + (NSDictionary *)getEscapedCharactersInfoFrom:(NSString *)text {
31
+ NSDictionary *unescapeMap = @{
32
+ @"&amp;" : @"&",
33
+ @"&lt;" : @"<",
34
+ @"&gt;" : @">",
35
+ };
36
+
37
+ NSMutableDictionary *results = [[NSMutableDictionary alloc] init];
38
+
39
+ for (NSString *key in unescapeMap) {
40
+ NSRange searchRange = NSMakeRange(0, text.length);
41
+ NSRange foundRange;
42
+
43
+ while (searchRange.location < text.length) {
44
+ foundRange = [text rangeOfString:key options:0 range:searchRange];
45
+ if (foundRange.location == NSNotFound) {
46
+ break;
47
+ }
48
+ results[@(foundRange.location)] = @[ key, unescapeMap[key] ];
49
+ searchRange.location = foundRange.location + foundRange.length;
50
+ searchRange.length = text.length - searchRange.location;
51
+ }
52
+ }
53
+
54
+ return results;
55
+ }
56
+
57
+ @end
58
+
59
+ @implementation NSMutableString (StringExtension)
60
+
61
+ - (std::string)toCppString {
62
+ return std::string([self UTF8String]);
63
+ }
64
+
65
+ + (NSMutableString *)fromCppString:(std::string)string {
66
+ return [NSMutableString stringWithUTF8String:string.c_str()];
67
+ }
68
+
69
+ @end
@@ -0,0 +1,22 @@
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: GenerateComponentDescriptorCpp.js
9
+ */
10
+
11
+ #include "ComponentDescriptors.h"
12
+ #include <react/renderer/core/ConcreteComponentDescriptor.h>
13
+ #include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
14
+
15
+ namespace facebook::react {
16
+
17
+ void ReactNativeEnrichedSpec_registerComponentDescriptorsFromCodegen(
18
+ std::shared_ptr<const ComponentDescriptorProviderRegistry> registry) {
19
+
20
+ }
21
+
22
+ } // namespace facebook::react
@@ -0,0 +1,24 @@
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: GenerateComponentDescriptorH.js
9
+ */
10
+
11
+ #pragma once
12
+
13
+ #include "ShadowNodes.h"
14
+ #include <react/renderer/core/ConcreteComponentDescriptor.h>
15
+ #include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
16
+
17
+ namespace facebook::react {
18
+
19
+
20
+
21
+ void ReactNativeEnrichedSpec_registerComponentDescriptorsFromCodegen(
22
+ std::shared_ptr<const ComponentDescriptorProviderRegistry> registry);
23
+
24
+ } // namespace facebook::react