@apollohg/react-native-rich-text-editor 2.0.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 (494) hide show
  1. package/LICENSE +160 -0
  2. package/README.md +259 -0
  3. package/RUST-STANDARD-LIBRARY-NOTICES.html +8266 -0
  4. package/ReactNativeProseEditor.podspec +59 -0
  5. package/THIRD_PARTY_NOTICES.md +31155 -0
  6. package/android/build.gradle +188 -0
  7. package/android/consumer-rules.pro +18 -0
  8. package/android/expo/build.gradle +17 -0
  9. package/android/src/debug/java/com/apollohg/editor/viewer/PreparedProseDrawInstrumentation.kt +7 -0
  10. package/android/src/main/assets/editor-icons/MaterialIcons.json +2236 -0
  11. package/android/src/main/assets/editor-icons/MaterialIcons.ttf +0 -0
  12. package/android/src/main/java/com/apollohg/editor/AndroidApiCompat.kt +19 -0
  13. package/android/src/main/java/com/apollohg/editor/AndroidCollaborationTransport.kt +860 -0
  14. package/android/src/main/java/com/apollohg/editor/CaretGeometry.kt +91 -0
  15. package/android/src/main/java/com/apollohg/editor/CodeHighlighting.kt +141 -0
  16. package/android/src/main/java/com/apollohg/editor/DecodedBitmapBudget.kt +250 -0
  17. package/android/src/main/java/com/apollohg/editor/EditorAddons.kt +133 -0
  18. package/android/src/main/java/com/apollohg/editor/EditorBlockSpacing.kt +51 -0
  19. package/android/src/main/java/com/apollohg/editor/EditorBoxDrawable.kt +16 -0
  20. package/android/src/main/java/com/apollohg/editor/EditorBoxDrawing.kt +234 -0
  21. package/android/src/main/java/com/apollohg/editor/EditorCheckboxSpan.kt +87 -0
  22. package/android/src/main/java/com/apollohg/editor/EditorCodeHighlighting.kt +120 -0
  23. package/android/src/main/java/com/apollohg/editor/EditorDecorationLayer.java +18 -0
  24. package/android/src/main/java/com/apollohg/editor/EditorDocumentLayout.kt +626 -0
  25. package/android/src/main/java/com/apollohg/editor/EditorEditText.kt +1042 -0
  26. package/android/src/main/java/com/apollohg/editor/EditorEditTextAnnotations.kt +191 -0
  27. package/android/src/main/java/com/apollohg/editor/EditorEditTextCaret.kt +100 -0
  28. package/android/src/main/java/com/apollohg/editor/EditorEditTextClipboard.kt +101 -0
  29. package/android/src/main/java/com/apollohg/editor/EditorEditTextComposition.kt +220 -0
  30. package/android/src/main/java/com/apollohg/editor/EditorEditTextConfiguration.kt +316 -0
  31. package/android/src/main/java/com/apollohg/editor/EditorEditTextCorrection.kt +303 -0
  32. package/android/src/main/java/com/apollohg/editor/EditorEditTextDeferredUpdates.kt +327 -0
  33. package/android/src/main/java/com/apollohg/editor/EditorEditTextDeletion.kt +258 -0
  34. package/android/src/main/java/com/apollohg/editor/EditorEditTextDiagnostics.kt +83 -0
  35. package/android/src/main/java/com/apollohg/editor/EditorEditTextDragDrop.kt +67 -0
  36. package/android/src/main/java/com/apollohg/editor/EditorEditTextExternalComposition.kt +357 -0
  37. package/android/src/main/java/com/apollohg/editor/EditorEditTextHardwareInput.kt +277 -0
  38. package/android/src/main/java/com/apollohg/editor/EditorEditTextImages.kt +280 -0
  39. package/android/src/main/java/com/apollohg/editor/EditorEditTextInputLifecycle.kt +183 -0
  40. package/android/src/main/java/com/apollohg/editor/EditorEditTextInputPreparation.kt +79 -0
  41. package/android/src/main/java/com/apollohg/editor/EditorEditTextInputTraits.kt +384 -0
  42. package/android/src/main/java/com/apollohg/editor/EditorEditTextLayout.kt +100 -0
  43. package/android/src/main/java/com/apollohg/editor/EditorEditTextNativeMutation.kt +243 -0
  44. package/android/src/main/java/com/apollohg/editor/EditorEditTextPlaceholder.kt +154 -0
  45. package/android/src/main/java/com/apollohg/editor/EditorEditTextRenderPatch.kt +347 -0
  46. package/android/src/main/java/com/apollohg/editor/EditorEditTextRendering.kt +313 -0
  47. package/android/src/main/java/com/apollohg/editor/EditorEditTextRustCommands.kt +281 -0
  48. package/android/src/main/java/com/apollohg/editor/EditorEditTextSelection.kt +352 -0
  49. package/android/src/main/java/com/apollohg/editor/EditorEditTextState.kt +113 -0
  50. package/android/src/main/java/com/apollohg/editor/EditorEditTextTaskMarkers.kt +92 -0
  51. package/android/src/main/java/com/apollohg/editor/EditorEditTextTextCommit.kt +327 -0
  52. package/android/src/main/java/com/apollohg/editor/EditorEditTextToolbar.kt +84 -0
  53. package/android/src/main/java/com/apollohg/editor/EditorEditTextUpdates.kt +245 -0
  54. package/android/src/main/java/com/apollohg/editor/EditorGlyphHeightCursorDrawable.kt +42 -0
  55. package/android/src/main/java/com/apollohg/editor/EditorHeightBehavior.kt +13 -0
  56. package/android/src/main/java/com/apollohg/editor/EditorInputConnection.kt +923 -0
  57. package/android/src/main/java/com/apollohg/editor/EditorInputCoordinates.kt +191 -0
  58. package/android/src/main/java/com/apollohg/editor/EditorInputCorrection.kt +107 -0
  59. package/android/src/main/java/com/apollohg/editor/EditorInputCursorGeometry.kt +128 -0
  60. package/android/src/main/java/com/apollohg/editor/EditorInputSnapshots.kt +134 -0
  61. package/android/src/main/java/com/apollohg/editor/EditorInputSurroundingDeletion.kt +321 -0
  62. package/android/src/main/java/com/apollohg/editor/EditorKeyboardToolbarView.kt +851 -0
  63. package/android/src/main/java/com/apollohg/editor/EditorMentionStyle.kt +192 -0
  64. package/android/src/main/java/com/apollohg/editor/EditorReconciliationWatcher.kt +46 -0
  65. package/android/src/main/java/com/apollohg/editor/EditorStyleSheet.kt +303 -0
  66. package/android/src/main/java/com/apollohg/editor/EditorStyleSheetSpans.kt +253 -0
  67. package/android/src/main/java/com/apollohg/editor/EditorSurfaceInputConnection.kt +67 -0
  68. package/android/src/main/java/com/apollohg/editor/EditorTextDecorationDrawing.kt +143 -0
  69. package/android/src/main/java/com/apollohg/editor/EditorTextSurface.kt +712 -0
  70. package/android/src/main/java/com/apollohg/editor/EditorTextSurfaceDragDrop.kt +94 -0
  71. package/android/src/main/java/com/apollohg/editor/EditorTextSurfaceInteraction.kt +708 -0
  72. package/android/src/main/java/com/apollohg/editor/EditorTheme.kt +650 -0
  73. package/android/src/main/java/com/apollohg/editor/EditorV2Adapter.kt +912 -0
  74. package/android/src/main/java/com/apollohg/editor/EditorV2AdapterMutations.kt +402 -0
  75. package/android/src/main/java/com/apollohg/editor/EditorV2AdapterRendering.kt +123 -0
  76. package/android/src/main/java/com/apollohg/editor/EditorV2AdapterSelection.kt +203 -0
  77. package/android/src/main/java/com/apollohg/editor/EditorV2Backend.kt +120 -0
  78. package/android/src/main/java/com/apollohg/editor/EditorV2Driver.kt +87 -0
  79. package/android/src/main/java/com/apollohg/editor/EditorV2Registry.kt +97 -0
  80. package/android/src/main/java/com/apollohg/editor/EditorV2RenderValidation.kt +409 -0
  81. package/android/src/main/java/com/apollohg/editor/ExpoAutoGrowStyleSizePublisher.kt +34 -0
  82. package/android/src/main/java/com/apollohg/editor/ImageResizeOverlayView.kt +266 -0
  83. package/android/src/main/java/com/apollohg/editor/ImeTextCoordinateMapper.kt +102 -0
  84. package/android/src/main/java/com/apollohg/editor/KeyboardToolbarImeAnimationController.kt +101 -0
  85. package/android/src/main/java/com/apollohg/editor/MentionSuggestionChipView.kt +234 -0
  86. package/android/src/main/java/com/apollohg/editor/NativeCollaborationTransportRegistry.kt +493 -0
  87. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoView.kt +813 -0
  88. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewAtoms.kt +68 -0
  89. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewBinding.kt +126 -0
  90. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewDiagnostics.kt +208 -0
  91. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewErrors.kt +146 -0
  92. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewEvents.kt +150 -0
  93. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewExternalComposition.kt +39 -0
  94. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewFocus.kt +176 -0
  95. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewLifecycle.kt +302 -0
  96. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewMentions.kt +259 -0
  97. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewNativeActions.kt +179 -0
  98. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewOutsideTap.kt +214 -0
  99. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewPendingUpdates.kt +376 -0
  100. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewProperties.kt +234 -0
  101. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewPropertyRetries.kt +197 -0
  102. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewToolbar.kt +285 -0
  103. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewTypes.kt +28 -0
  104. package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewUpdates.kt +271 -0
  105. package/android/src/main/java/com/apollohg/editor/NativeEditorModule.kt +687 -0
  106. package/android/src/main/java/com/apollohg/editor/NativeEditorOutsideTapDispatcher.kt +380 -0
  107. package/android/src/main/java/com/apollohg/editor/NativeEditorV2Numbers.kt +45 -0
  108. package/android/src/main/java/com/apollohg/editor/NativeEditorViewRegistry.kt +372 -0
  109. package/android/src/main/java/com/apollohg/editor/NativeImagePipeline.kt +22 -0
  110. package/android/src/main/java/com/apollohg/editor/NativeToolbar.kt +193 -0
  111. package/android/src/main/java/com/apollohg/editor/NativeToolbarIcons.kt +177 -0
  112. package/android/src/main/java/com/apollohg/editor/NativeToolbarItem.kt +274 -0
  113. package/android/src/main/java/com/apollohg/editor/OkHttpCollaborationSocket.kt +102 -0
  114. package/android/src/main/java/com/apollohg/editor/OrderedListMarkerFormatter.kt +130 -0
  115. package/android/src/main/java/com/apollohg/editor/PointerTransparentView.java +18 -0
  116. package/android/src/main/java/com/apollohg/editor/PositionBridge.kt +128 -0
  117. package/android/src/main/java/com/apollohg/editor/ProseViewerView.kt +854 -0
  118. package/android/src/main/java/com/apollohg/editor/RemoteSelectionOverlayView.kt +314 -0
  119. package/android/src/main/java/com/apollohg/editor/RenderBlockSpans.kt +314 -0
  120. package/android/src/main/java/com/apollohg/editor/RenderBridge.kt +224 -0
  121. package/android/src/main/java/com/apollohg/editor/RenderBridgeBlockStyles.kt +407 -0
  122. package/android/src/main/java/com/apollohg/editor/RenderBridgeElements.kt +544 -0
  123. package/android/src/main/java/com/apollohg/editor/RenderBridgeInlineAndAtoms.kt +631 -0
  124. package/android/src/main/java/com/apollohg/editor/RenderBridgeParagraphs.kt +215 -0
  125. package/android/src/main/java/com/apollohg/editor/RenderImageDecoder.kt +748 -0
  126. package/android/src/main/java/com/apollohg/editor/RenderImageLoader.kt +900 -0
  127. package/android/src/main/java/com/apollohg/editor/RenderLayoutConstants.kt +117 -0
  128. package/android/src/main/java/com/apollohg/editor/RenderMediaSpans.kt +337 -0
  129. package/android/src/main/java/com/apollohg/editor/RenderParagraphSpans.kt +182 -0
  130. package/android/src/main/java/com/apollohg/editor/RichTextEditorView.kt +951 -0
  131. package/android/src/main/java/com/apollohg/editor/SharedNativeImagePipeline.kt +78 -0
  132. package/android/src/main/java/com/apollohg/editor/UniffiEditorV2Backend.kt +261 -0
  133. package/android/src/main/java/com/apollohg/editor/viewer/AndroidProseLayoutEngine.kt +1656 -0
  134. package/android/src/main/java/com/apollohg/editor/viewer/FabricAttachmentSidecars.kt +80 -0
  135. package/android/src/main/java/com/apollohg/editor/viewer/FabricLeaseHandleBridge.kt +59 -0
  136. package/android/src/main/java/com/apollohg/editor/viewer/FallbackSelectionGeometry.kt +450 -0
  137. package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseDrawingView.kt +678 -0
  138. package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseInstrumentation.kt +608 -0
  139. package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseLayout.kt +186 -0
  140. package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseLayoutCache.kt +393 -0
  141. package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseLayoutRegistry.kt +828 -0
  142. package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseTheme.kt +316 -0
  143. package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseViewerManager.kt +900 -0
  144. package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseViewerPackage.kt +16 -0
  145. package/android/src/main/java/com/apollohg/editor/viewer/PreparedViewerAtoms.kt +89 -0
  146. package/android/src/main/java/com/apollohg/editor/viewer/ViewerCodeHighlighting.kt +91 -0
  147. package/android/src/main/java/com/apollohg/editor/viewer/ViewerDocument.kt +453 -0
  148. package/android/src/main/java/com/apollohg/editor/viewer/ViewerFontEnvironment.kt +282 -0
  149. package/android/src/main/java/com/apollohg/editor/viewer/ViewerImagePipeline.kt +460 -0
  150. package/android/src/main/jni/CMakeLists.txt +85 -0
  151. package/android/src/main/jni/PreparedProseViewerMeasurementsManager.cpp +334 -0
  152. package/android/src/main/jni/ReactNativeProseEditorSpec.h +17 -0
  153. package/android/src/main/jni/reactnativeproseeditor.h +6 -0
  154. package/android/src/main/res/values/attrs.xml +6 -0
  155. package/android/src/release/java/com/apollohg/editor/viewer/PreparedProseDrawInstrumentation.kt +9 -0
  156. package/app.plugin.js +62 -0
  157. package/common/cpp/react/renderer/components/PreparedProseViewer/PreparedProseMeasurementsManager.h +62 -0
  158. package/common/cpp/react/renderer/components/PreparedProseViewer/PreparedProseViewerComponentDescriptor.h +30 -0
  159. package/common/cpp/react/renderer/components/PreparedProseViewer/PreparedProseViewerShadowNode.cpp +192 -0
  160. package/common/cpp/react/renderer/components/PreparedProseViewer/PreparedProseViewerShadowNode.h +46 -0
  161. package/common/cpp/react/renderer/components/PreparedProseViewer/PreparedProseViewerState.h +145 -0
  162. package/dist/AtomHost.d.ts +17 -0
  163. package/dist/AtomHost.js +135 -0
  164. package/dist/DefaultAtomChip.d.ts +2 -0
  165. package/dist/DefaultAtomChip.js +22 -0
  166. package/dist/EditorAddon.d.ts +32 -0
  167. package/dist/EditorAddon.js +29 -0
  168. package/dist/EditorAddonNormalization.d.ts +6 -0
  169. package/dist/EditorAddonNormalization.js +48 -0
  170. package/dist/EditorMentionThemeNormalization.d.ts +8 -0
  171. package/dist/EditorMentionThemeNormalization.js +22 -0
  172. package/dist/EditorMentionThemeValidation.d.ts +12 -0
  173. package/dist/EditorMentionThemeValidation.js +95 -0
  174. package/dist/EditorStyleSheet.d.ts +4 -0
  175. package/dist/EditorStyleSheet.js +10 -0
  176. package/dist/EditorStyleSheetNormalization.d.ts +3 -0
  177. package/dist/EditorStyleSheetNormalization.js +226 -0
  178. package/dist/EditorStyleSheetTypes.d.ts +151 -0
  179. package/dist/EditorStyleSheetTypes.js +2 -0
  180. package/dist/EditorTheme.d.ts +117 -0
  181. package/dist/EditorTheme.js +41 -0
  182. package/dist/EditorToolbar.d.ts +4 -0
  183. package/dist/EditorToolbar.js +17 -0
  184. package/dist/EditorToolbarComponent.d.ts +13 -0
  185. package/dist/EditorToolbarComponent.js +24 -0
  186. package/dist/EditorToolbarItems.d.ts +9 -0
  187. package/dist/EditorToolbarItems.js +58 -0
  188. package/dist/EditorToolbarRegistry.d.ts +59 -0
  189. package/dist/EditorToolbarRegistry.js +175 -0
  190. package/dist/EditorToolbarTypes.d.ts +273 -0
  191. package/dist/EditorToolbarTypes.js +2 -0
  192. package/dist/EditorToolbarVisuals.d.ts +154 -0
  193. package/dist/EditorToolbarVisuals.js +228 -0
  194. package/dist/EditorUpdateRevision.d.ts +8 -0
  195. package/dist/EditorUpdateRevision.js +22 -0
  196. package/dist/ExternalTextComposition.d.ts +45 -0
  197. package/dist/ExternalTextComposition.js +537 -0
  198. package/dist/ImageLoadingPolicy.d.ts +54 -0
  199. package/dist/ImageLoadingPolicy.js +60 -0
  200. package/dist/NativeEditorBoundaryError.d.ts +111 -0
  201. package/dist/NativeEditorBoundaryError.js +268 -0
  202. package/dist/NativeEditorBridge.d.ts +9 -0
  203. package/dist/NativeEditorBridge.js +37 -0
  204. package/dist/NativeEditorCollaborationTransport.d.ts +154 -0
  205. package/dist/NativeEditorCollaborationTransport.js +275 -0
  206. package/dist/NativeEditorCreateConfig.d.ts +16 -0
  207. package/dist/NativeEditorCreateConfig.js +249 -0
  208. package/dist/NativeEditorCreateJson.d.ts +76 -0
  209. package/dist/NativeEditorCreateJson.js +474 -0
  210. package/dist/NativeEditorCreateValidation.d.ts +32 -0
  211. package/dist/NativeEditorCreateValidation.js +150 -0
  212. package/dist/NativeEditorDocumentBridge.d.ts +72 -0
  213. package/dist/NativeEditorDocumentBridge.js +305 -0
  214. package/dist/NativeEditorDocumentHandle.d.ts +70 -0
  215. package/dist/NativeEditorDocumentHandle.js +89 -0
  216. package/dist/NativeEditorLocalAwareness.d.ts +34 -0
  217. package/dist/NativeEditorLocalAwareness.js +153 -0
  218. package/dist/NativeEditorNativeModule.d.ts +48 -0
  219. package/dist/NativeEditorNativeModule.js +34 -0
  220. package/dist/NativeEditorRenderNormalization.d.ts +22 -0
  221. package/dist/NativeEditorRenderNormalization.js +274 -0
  222. package/dist/NativeEditorResultNormalization.d.ts +108 -0
  223. package/dist/NativeEditorResultNormalization.js +400 -0
  224. package/dist/NativeEditorTypes.d.ts +318 -0
  225. package/dist/NativeEditorTypes.js +15 -0
  226. package/dist/NativeEditorV2Decimal.d.ts +5 -0
  227. package/dist/NativeEditorV2Decimal.js +18 -0
  228. package/dist/NativeProseViewer.d.ts +122 -0
  229. package/dist/NativeProseViewer.js +130 -0
  230. package/dist/NativeRichTextEditor.d.ts +3 -0
  231. package/dist/NativeRichTextEditor.js +6 -0
  232. package/dist/ResourceLimits.d.ts +100 -0
  233. package/dist/ResourceLimits.js +80 -0
  234. package/dist/RichTextEditor.d.ts +4 -0
  235. package/dist/RichTextEditor.js +25 -0
  236. package/dist/RichTextEditorNativeTypes.d.ts +122 -0
  237. package/dist/RichTextEditorNativeTypes.js +2 -0
  238. package/dist/RichTextEditorNativeView.d.ts +12 -0
  239. package/dist/RichTextEditorNativeView.js +15 -0
  240. package/dist/RichTextEditorSerialization.d.ts +53 -0
  241. package/dist/RichTextEditorSerialization.js +283 -0
  242. package/dist/RichTextEditorTypes.d.ts +281 -0
  243. package/dist/RichTextEditorTypes.js +2 -0
  244. package/dist/ViewerConfiguration.d.ts +22 -0
  245. package/dist/ViewerConfiguration.js +6 -0
  246. package/dist/YjsCollaboration.d.ts +146 -0
  247. package/dist/YjsCollaboration.js +496 -0
  248. package/dist/addons.d.ts +193 -0
  249. package/dist/addons.js +122 -0
  250. package/dist/atomConstants.d.ts +3 -0
  251. package/dist/atomConstants.js +6 -0
  252. package/dist/atomInstances.d.ts +35 -0
  253. package/dist/atomInstances.js +79 -0
  254. package/dist/atomPolicy.d.ts +4 -0
  255. package/dist/atomPolicy.js +47 -0
  256. package/dist/atomUpdates.d.ts +2 -0
  257. package/dist/atomUpdates.js +38 -0
  258. package/dist/atoms.d.ts +92 -0
  259. package/dist/atoms.js +222 -0
  260. package/dist/attributeValidation.d.ts +4 -0
  261. package/dist/attributeValidation.js +97 -0
  262. package/dist/contentExpression.d.ts +6 -0
  263. package/dist/contentExpression.js +335 -0
  264. package/dist/index.d.ts +21 -0
  265. package/dist/index.js +78 -0
  266. package/dist/listMarkers.d.ts +15 -0
  267. package/dist/listMarkers.js +21 -0
  268. package/dist/schemaDefinition.d.ts +143 -0
  269. package/dist/schemaDefinition.js +206 -0
  270. package/dist/schemaDocument.d.ts +17 -0
  271. package/dist/schemaDocument.js +69 -0
  272. package/dist/schemaDocumentConstruction.d.ts +5 -0
  273. package/dist/schemaDocumentConstruction.js +125 -0
  274. package/dist/schemaNormalization.d.ts +29 -0
  275. package/dist/schemaNormalization.js +313 -0
  276. package/dist/schemaPresets.d.ts +68 -0
  277. package/dist/schemaPresets.js +198 -0
  278. package/dist/schemaResolution.d.ts +9 -0
  279. package/dist/schemaResolution.js +211 -0
  280. package/dist/schemas.d.ts +5 -0
  281. package/dist/schemas.js +28 -0
  282. package/dist/specs/PreparedProseViewerNativeComponent.d.ts +37 -0
  283. package/dist/specs/PreparedProseViewerNativeComponent.js +6 -0
  284. package/dist/useEditorToolbarInteractions.d.ts +12 -0
  285. package/dist/useEditorToolbarInteractions.js +218 -0
  286. package/dist/useEditorToolbarItems.d.ts +8 -0
  287. package/dist/useEditorToolbarItems.js +280 -0
  288. package/dist/useEditorToolbarPresentation.d.ts +4 -0
  289. package/dist/useEditorToolbarPresentation.js +203 -0
  290. package/dist/useEditorToolbarState.d.ts +63 -0
  291. package/dist/useEditorToolbarState.js +108 -0
  292. package/dist/useFocusPreservingFrames.d.ts +17 -0
  293. package/dist/useFocusPreservingFrames.js +108 -0
  294. package/dist/useNativeEditor.d.ts +66 -0
  295. package/dist/useNativeEditor.js +370 -0
  296. package/dist/useRichTextEditorCommands.d.ts +21 -0
  297. package/dist/useRichTextEditorCommands.js +299 -0
  298. package/dist/useRichTextEditorEvents.d.ts +18 -0
  299. package/dist/useRichTextEditorEvents.js +216 -0
  300. package/dist/useRichTextEditorMentions.d.ts +11 -0
  301. package/dist/useRichTextEditorMentions.js +316 -0
  302. package/dist/useRichTextEditorPresentation.d.ts +5 -0
  303. package/dist/useRichTextEditorPresentation.js +178 -0
  304. package/dist/useRichTextEditorState.d.ts +180 -0
  305. package/dist/useRichTextEditorState.js +405 -0
  306. package/dist/useRichTextEditorUpdates.d.ts +10 -0
  307. package/dist/useRichTextEditorUpdates.js +308 -0
  308. package/dist/useViewerAtoms.d.ts +38 -0
  309. package/dist/useViewerAtoms.js +288 -0
  310. package/expo-module.config.json +13 -0
  311. package/ios/EditorAddons.swift +354 -0
  312. package/ios/EditorCodeHighlighting.swift +184 -0
  313. package/ios/EditorCore.xcframework/Info.plist +44 -0
  314. package/ios/EditorCore.xcframework/ios-arm64/libeditor_core.a +0 -0
  315. package/ios/EditorCore.xcframework/ios-arm64_x86_64-simulator/libeditor_core.a +0 -0
  316. package/ios/EditorInteractionOverlays.swift +697 -0
  317. package/ios/EditorLayoutManager.swift +971 -0
  318. package/ios/EditorNodeTypes.swift +37 -0
  319. package/ios/EditorStyleSheet.swift +461 -0
  320. package/ios/EditorTextView+AttributedPatch.swift +305 -0
  321. package/ios/EditorTextView+Binding.swift +61 -0
  322. package/ios/EditorTextView+Caret.swift +333 -0
  323. package/ios/EditorTextView+Commands.swift +203 -0
  324. package/ios/EditorTextView+Delegate.swift +65 -0
  325. package/ios/EditorTextView+Diagnostics.swift +225 -0
  326. package/ios/EditorTextView+DragDrop.swift +290 -0
  327. package/ios/EditorTextView+ExternalComposition.swift +364 -0
  328. package/ios/EditorTextView+Images.swift +354 -0
  329. package/ios/EditorTextView+InputTraits.swift +200 -0
  330. package/ios/EditorTextView+KeyboardInput.swift +318 -0
  331. package/ios/EditorTextView+Layout.swift +245 -0
  332. package/ios/EditorTextView+MarkedText.swift +267 -0
  333. package/ios/EditorTextView+NativeInputLifecycle.swift +372 -0
  334. package/ios/EditorTextView+NativeMutation.swift +471 -0
  335. package/ios/EditorTextView+Reconciliation.swift +97 -0
  336. package/ios/EditorTextView+RenderPatch.swift +573 -0
  337. package/ios/EditorTextView+Rendering.swift +539 -0
  338. package/ios/EditorTextView+Selection.swift +542 -0
  339. package/ios/EditorTextView.swift +953 -0
  340. package/ios/EditorTheme.swift +626 -0
  341. package/ios/EditorV2Adapter+Commands.swift +204 -0
  342. package/ios/EditorV2Adapter+Envelope.swift +238 -0
  343. package/ios/EditorV2Adapter+Mutation.swift +392 -0
  344. package/ios/EditorV2Adapter+Registry.swift +185 -0
  345. package/ios/EditorV2Adapter+RenderState.swift +360 -0
  346. package/ios/EditorV2Adapter+RenderValidation.swift +420 -0
  347. package/ios/EditorV2Adapter+Selection.swift +329 -0
  348. package/ios/EditorV2Adapter+TextCommands.swift +430 -0
  349. package/ios/EditorV2Adapter.swift +376 -0
  350. package/ios/EditorV2Shadow.swift +353 -0
  351. package/ios/Generated_editor_core.swift +2378 -0
  352. package/ios/NativeCodeHighlighting.swift +159 -0
  353. package/ios/NativeCollaborationSocket.swift +144 -0
  354. package/ios/NativeCollaborationTransport+Protocol.swift +258 -0
  355. package/ios/NativeCollaborationTransport+Socket.swift +379 -0
  356. package/ios/NativeCollaborationTransport+Validation.swift +103 -0
  357. package/ios/NativeCollaborationTransport.swift +322 -0
  358. package/ios/NativeCollaborationTransportRegistry.swift +521 -0
  359. package/ios/NativeEditorExpoView+AccessoryRetry.swift +219 -0
  360. package/ios/NativeEditorExpoView+Binding.swift +268 -0
  361. package/ios/NativeEditorExpoView+Diagnostics.swift +66 -0
  362. package/ios/NativeEditorExpoView+Events.swift +131 -0
  363. package/ios/NativeEditorExpoView+Focus.swift +169 -0
  364. package/ios/NativeEditorExpoView+MentionRetry.swift +288 -0
  365. package/ios/NativeEditorExpoView+Mentions.swift +288 -0
  366. package/ios/NativeEditorExpoView+Properties.swift +300 -0
  367. package/ios/NativeEditorExpoView+Toolbar.swift +86 -0
  368. package/ios/NativeEditorExpoView+Updates.swift +312 -0
  369. package/ios/NativeEditorExpoView.swift +349 -0
  370. package/ios/NativeEditorModule.swift +856 -0
  371. package/ios/NativeEditorViewRegistry.swift +226 -0
  372. package/ios/NativeToolbar+ButtonStyle.swift +214 -0
  373. package/ios/NativeToolbar+Buttons.swift +228 -0
  374. package/ios/NativeToolbar+Diagnostics.swift +114 -0
  375. package/ios/NativeToolbar+Menu.swift +101 -0
  376. package/ios/NativeToolbar+Models.swift +519 -0
  377. package/ios/NativeToolbar+Placeholder.swift +39 -0
  378. package/ios/NativeToolbar.swift +612 -0
  379. package/ios/OrderedListMarkerFormatter.swift +103 -0
  380. package/ios/PositionBridge.swift +596 -0
  381. package/ios/ProseViewerView.swift +462 -0
  382. package/ios/RenderBridge+Atoms.swift +288 -0
  383. package/ios/RenderBridge+Attachments.swift +246 -0
  384. package/ios/RenderBridge+BlockBoundaries.swift +313 -0
  385. package/ios/RenderBridge+Style.swift +343 -0
  386. package/ios/RenderBridge.swift +704 -0
  387. package/ios/RichTextEditorView.swift +930 -0
  388. package/ios/SharedNativeImagePipeline+Cache.swift +189 -0
  389. package/ios/SharedNativeImagePipeline+Transport.swift +328 -0
  390. package/ios/SharedNativeImagePipeline.swift +533 -0
  391. package/ios/Viewer/CoreTextProseLayoutEngine+AttributedText.swift +436 -0
  392. package/ios/Viewer/CoreTextProseLayoutEngine+Models.swift +322 -0
  393. package/ios/Viewer/CoreTextProseLayoutEngine.swift +635 -0
  394. package/ios/Viewer/Fabric/PREPPreparedProseViewerComponentView.h +4 -0
  395. package/ios/Viewer/Fabric/PREPPreparedProseViewerComponentView.mm +767 -0
  396. package/ios/Viewer/Fabric/PreparedProseMeasurementsManager.mm +118 -0
  397. package/ios/Viewer/NativeSVGImageDecoder.h +9 -0
  398. package/ios/Viewer/NativeSVGImageDecoder.mm +106 -0
  399. package/ios/Viewer/NativeSVGPreflight.h +11 -0
  400. package/ios/Viewer/NativeSVGPreflight.mm +219 -0
  401. package/ios/Viewer/PreparedProseDrawingView.swift +639 -0
  402. package/ios/Viewer/PreparedProseInstrumentation.swift +387 -0
  403. package/ios/Viewer/PreparedProseLayout.swift +326 -0
  404. package/ios/Viewer/PreparedProseLayoutCache.swift +766 -0
  405. package/ios/Viewer/PreparedProseLayoutRegistry+Artifacts.swift +377 -0
  406. package/ios/Viewer/PreparedProseLayoutRegistry+Fabric.swift +582 -0
  407. package/ios/Viewer/PreparedProseLayoutRegistry+FabricOwnership.swift +128 -0
  408. package/ios/Viewer/PreparedProseLayoutRegistry.swift +381 -0
  409. package/ios/Viewer/ViewerDocument.swift +575 -0
  410. package/ios/Viewer/ViewerFontEnvironment.swift +283 -0
  411. package/ios/Viewer/ViewerImagePipeline.swift +478 -0
  412. package/ios/editor_coreFFI/editor_coreFFI.h +1023 -0
  413. package/ios/editor_coreFFI/module.modulemap +7 -0
  414. package/package.json +151 -0
  415. package/react-native.config.js +17 -0
  416. package/rust/android/arm64-v8a/libeditor_core.so +0 -0
  417. package/rust/android/armeabi-v7a/libeditor_core.so +0 -0
  418. package/rust/android/x86/libeditor_core.so +0 -0
  419. package/rust/android/x86_64/libeditor_core.so +0 -0
  420. package/rust/bindings/kotlin/uniffi/editor_core/editor_core.kt +3146 -0
  421. package/src/AtomHost.tsx +180 -0
  422. package/src/DefaultAtomChip.tsx +27 -0
  423. package/src/EditorAddon.ts +65 -0
  424. package/src/EditorAddonNormalization.ts +49 -0
  425. package/src/EditorMentionThemeNormalization.ts +25 -0
  426. package/src/EditorMentionThemeValidation.ts +133 -0
  427. package/src/EditorStyleSheet.ts +9 -0
  428. package/src/EditorStyleSheetNormalization.ts +219 -0
  429. package/src/EditorStyleSheetTypes.ts +189 -0
  430. package/src/EditorTheme.ts +196 -0
  431. package/src/EditorToolbar.tsx +31 -0
  432. package/src/EditorToolbarComponent.tsx +23 -0
  433. package/src/EditorToolbarItems.tsx +64 -0
  434. package/src/EditorToolbarRegistry.tsx +254 -0
  435. package/src/EditorToolbarTypes.tsx +322 -0
  436. package/src/EditorToolbarVisuals.tsx +270 -0
  437. package/src/EditorUpdateRevision.ts +26 -0
  438. package/src/ExternalTextComposition.ts +658 -0
  439. package/src/ImageLoadingPolicy.ts +125 -0
  440. package/src/NativeEditorBoundaryError.ts +345 -0
  441. package/src/NativeEditorBridge.ts +93 -0
  442. package/src/NativeEditorCollaborationTransport.ts +493 -0
  443. package/src/NativeEditorCreateConfig.ts +326 -0
  444. package/src/NativeEditorCreateJson.ts +579 -0
  445. package/src/NativeEditorCreateValidation.ts +178 -0
  446. package/src/NativeEditorDocumentBridge.ts +485 -0
  447. package/src/NativeEditorDocumentHandle.ts +168 -0
  448. package/src/NativeEditorLocalAwareness.ts +168 -0
  449. package/src/NativeEditorNativeModule.ts +97 -0
  450. package/src/NativeEditorRenderNormalization.ts +320 -0
  451. package/src/NativeEditorResultNormalization.ts +469 -0
  452. package/src/NativeEditorTypes.ts +366 -0
  453. package/src/NativeEditorV2Decimal.ts +13 -0
  454. package/src/NativeProseViewer.tsx +356 -0
  455. package/src/NativeRichTextEditor.tsx +33 -0
  456. package/src/ResourceLimits.ts +187 -0
  457. package/src/RichTextEditor.tsx +27 -0
  458. package/src/RichTextEditorNativeTypes.tsx +144 -0
  459. package/src/RichTextEditorNativeView.tsx +21 -0
  460. package/src/RichTextEditorSerialization.tsx +381 -0
  461. package/src/RichTextEditorTypes.tsx +327 -0
  462. package/src/ViewerConfiguration.ts +23 -0
  463. package/src/YjsCollaboration.ts +692 -0
  464. package/src/addons.ts +311 -0
  465. package/src/atomConstants.ts +3 -0
  466. package/src/atomInstances.ts +123 -0
  467. package/src/atomPolicy.ts +47 -0
  468. package/src/atomUpdates.ts +52 -0
  469. package/src/atoms.ts +379 -0
  470. package/src/attributeValidation.ts +116 -0
  471. package/src/contentExpression.ts +338 -0
  472. package/src/index.ts +295 -0
  473. package/src/listMarkers.ts +18 -0
  474. package/src/schemaDefinition.ts +395 -0
  475. package/src/schemaDocument.ts +92 -0
  476. package/src/schemaDocumentConstruction.ts +148 -0
  477. package/src/schemaNormalization.ts +367 -0
  478. package/src/schemaPresets.ts +250 -0
  479. package/src/schemaResolution.ts +242 -0
  480. package/src/schemas.ts +43 -0
  481. package/src/specs/PreparedProseViewerNativeComponent.ts +40 -0
  482. package/src/useEditorToolbarInteractions.tsx +329 -0
  483. package/src/useEditorToolbarItems.tsx +390 -0
  484. package/src/useEditorToolbarPresentation.tsx +483 -0
  485. package/src/useEditorToolbarState.tsx +172 -0
  486. package/src/useFocusPreservingFrames.ts +171 -0
  487. package/src/useNativeEditor.ts +534 -0
  488. package/src/useRichTextEditorCommands.tsx +478 -0
  489. package/src/useRichTextEditorEvents.tsx +342 -0
  490. package/src/useRichTextEditorMentions.tsx +441 -0
  491. package/src/useRichTextEditorPresentation.tsx +563 -0
  492. package/src/useRichTextEditorState.tsx +620 -0
  493. package/src/useRichTextEditorUpdates.tsx +403 -0
  494. package/src/useViewerAtoms.tsx +427 -0
@@ -0,0 +1,8 @@
1
+ import type { EditorMentionTheme } from './EditorTheme';
2
+ import type { NormalizedEditorStyle } from './EditorStyleSheetTypes';
3
+ export type SerializedEditorMentionTheme = Omit<EditorMentionTheme, 'node'> & {
4
+ node?: NonNullable<EditorMentionTheme['node']> & {
5
+ style?: NormalizedEditorStyle;
6
+ };
7
+ };
8
+ export declare function normalizeEditorMentionTheme(theme?: EditorMentionTheme): SerializedEditorMentionTheme | undefined;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeEditorMentionTheme = normalizeEditorMentionTheme;
4
+ const EditorStyleSheetNormalization_1 = require("./EditorStyleSheetNormalization");
5
+ const EditorMentionThemeValidation_1 = require("./EditorMentionThemeValidation");
6
+ function normalizeEditorMentionTheme(theme) {
7
+ if (theme === undefined)
8
+ return undefined;
9
+ if (!(0, EditorMentionThemeValidation_1.validEditorMentionTheme)(theme))
10
+ throw new TypeError('Invalid mention theme');
11
+ if (!theme.node)
12
+ return theme;
13
+ const node = theme.node;
14
+ const { textColor, style: existingStyle, ...appearance } = node;
15
+ const style = (0, EditorStyleSheetNormalization_1.normalizeEditorTheme)({
16
+ mention: [{ color: textColor }, appearance, existingStyle],
17
+ }).styles?.mention;
18
+ return {
19
+ ...theme,
20
+ node: { style },
21
+ };
22
+ }
@@ -0,0 +1,12 @@
1
+ import type { EditorMentionNodeTheme, EditorMentionTheme } from './EditorTheme';
2
+ export declare const MENTION_NODE_STRING_FIELDS: readonly ["textColor", "backgroundColor", "borderColor"];
3
+ export declare const MENTION_NODE_NUMBER_FIELDS: readonly ["borderWidth", "borderRadius"];
4
+ export declare const MENTION_OPTION_STRING_FIELDS: readonly ["textColor", "secondaryTextColor", "backgroundColor", "borderColor", "highlightedBackgroundColor", "highlightedTextColor"];
5
+ export declare const MENTION_OPTION_NUMBER_FIELDS: readonly ["borderWidth", "borderRadius"];
6
+ export declare const MENTION_SUGGESTIONS_STRING_FIELDS: readonly ["backgroundColor", "borderColor", "shadowColor"];
7
+ export declare const MENTION_SUGGESTIONS_NUMBER_FIELDS: readonly ["borderWidth", "borderRadius"];
8
+ export declare const EDITOR_MENTION_THEME_FONT_WEIGHTS: ReadonlySet<NonNullable<EditorMentionNodeTheme['fontWeight']>>;
9
+ export declare const EDITOR_MENTION_THEME_FIELDS: readonly ["node", "suggestions"];
10
+ export declare function validMentionFontWeight(value: unknown): boolean;
11
+ export declare function validMentionThemeSection(value: unknown, stringFields: readonly string[], numberFields: readonly string[], extraFields: readonly string[]): value is Record<string, unknown>;
12
+ export declare function validEditorMentionTheme(value: unknown): value is EditorMentionTheme;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EDITOR_MENTION_THEME_FIELDS = exports.EDITOR_MENTION_THEME_FONT_WEIGHTS = exports.MENTION_SUGGESTIONS_NUMBER_FIELDS = exports.MENTION_SUGGESTIONS_STRING_FIELDS = exports.MENTION_OPTION_NUMBER_FIELDS = exports.MENTION_OPTION_STRING_FIELDS = exports.MENTION_NODE_NUMBER_FIELDS = exports.MENTION_NODE_STRING_FIELDS = void 0;
4
+ exports.validMentionFontWeight = validMentionFontWeight;
5
+ exports.validMentionThemeSection = validMentionThemeSection;
6
+ exports.validEditorMentionTheme = validEditorMentionTheme;
7
+ const EditorStyleSheetNormalization_1 = require("./EditorStyleSheetNormalization");
8
+ function isPlainRecord(value) {
9
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
10
+ }
11
+ function hasOnlyOwnKeys(value, fields) {
12
+ return Reflect.ownKeys(value).every((key) => typeof key === 'string' && fields.includes(key));
13
+ }
14
+ exports.MENTION_NODE_STRING_FIELDS = [
15
+ 'textColor',
16
+ 'backgroundColor',
17
+ 'borderColor',
18
+ ];
19
+ exports.MENTION_NODE_NUMBER_FIELDS = [
20
+ 'borderWidth',
21
+ 'borderRadius',
22
+ ];
23
+ exports.MENTION_OPTION_STRING_FIELDS = [
24
+ 'textColor',
25
+ 'secondaryTextColor',
26
+ 'backgroundColor',
27
+ 'borderColor',
28
+ 'highlightedBackgroundColor',
29
+ 'highlightedTextColor',
30
+ ];
31
+ exports.MENTION_OPTION_NUMBER_FIELDS = [
32
+ 'borderWidth',
33
+ 'borderRadius',
34
+ ];
35
+ exports.MENTION_SUGGESTIONS_STRING_FIELDS = [
36
+ 'backgroundColor',
37
+ 'borderColor',
38
+ 'shadowColor',
39
+ ];
40
+ exports.MENTION_SUGGESTIONS_NUMBER_FIELDS = [
41
+ 'borderWidth',
42
+ 'borderRadius',
43
+ ];
44
+ exports.EDITOR_MENTION_THEME_FONT_WEIGHTS = new Set(['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900']);
45
+ exports.EDITOR_MENTION_THEME_FIELDS = [
46
+ 'node',
47
+ 'suggestions',
48
+ ];
49
+ function validMentionFontWeight(value) {
50
+ return (value === undefined ||
51
+ (typeof value === 'string' &&
52
+ exports.EDITOR_MENTION_THEME_FONT_WEIGHTS.has(value)));
53
+ }
54
+ function validMentionThemeSection(value, stringFields, numberFields, extraFields) {
55
+ if (!isPlainRecord(value))
56
+ return false;
57
+ if (!hasOnlyOwnKeys(value, [...stringFields, ...numberFields, ...extraFields]))
58
+ return false;
59
+ return (stringFields.every((field) => value[field] === undefined || typeof value[field] === 'string') &&
60
+ numberFields.every((field) => value[field] === undefined ||
61
+ (typeof value[field] === 'number' && Number.isFinite(value[field]))));
62
+ }
63
+ function validEditorMentionTheme(value) {
64
+ if (!isPlainRecord(value) || !hasOnlyOwnKeys(value, exports.EDITOR_MENTION_THEME_FIELDS)) {
65
+ return false;
66
+ }
67
+ const { node, suggestions } = value;
68
+ if (node !== undefined) {
69
+ if (!isPlainRecord(node))
70
+ return false;
71
+ const { textColor, style, ...appearance } = node;
72
+ if (textColor !== undefined && typeof textColor !== 'string')
73
+ return false;
74
+ try {
75
+ (0, EditorStyleSheetNormalization_1.normalizeEditorTheme)({ mention: [{ color: textColor }, appearance] });
76
+ if (style !== undefined) {
77
+ if (!isPlainRecord(style))
78
+ return false;
79
+ (0, EditorStyleSheetNormalization_1.normalizeEditorTheme)({ mention: style });
80
+ }
81
+ }
82
+ catch {
83
+ return false;
84
+ }
85
+ }
86
+ if (suggestions === undefined)
87
+ return true;
88
+ if (!validMentionThemeSection(suggestions, exports.MENTION_SUGGESTIONS_STRING_FIELDS, exports.MENTION_SUGGESTIONS_NUMBER_FIELDS, ['option'])) {
89
+ return false;
90
+ }
91
+ const option = suggestions.option;
92
+ if (option === undefined)
93
+ return true;
94
+ return (validMentionThemeSection(option, exports.MENTION_OPTION_STRING_FIELDS, exports.MENTION_OPTION_NUMBER_FIELDS, ['fontWeight']) && validMentionFontWeight(option.fontWeight));
95
+ }
@@ -0,0 +1,4 @@
1
+ import type { ExactEditorTheme } from './EditorStyleSheetTypes';
2
+ export declare const EditorStyleSheet: {
3
+ create<const T extends object>(styles: T & ExactEditorTheme<T>): T;
4
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EditorStyleSheet = void 0;
4
+ const EditorStyleSheetNormalization_1 = require("./EditorStyleSheetNormalization");
5
+ exports.EditorStyleSheet = {
6
+ create(styles) {
7
+ (0, EditorStyleSheetNormalization_1.normalizeEditorTheme)(styles);
8
+ return styles;
9
+ },
10
+ };
@@ -0,0 +1,3 @@
1
+ import type { NormalizedEditorTheme } from './EditorStyleSheetTypes';
2
+ export declare function normalizeEditorColor(value: unknown, path: string): string;
3
+ export declare function normalizeEditorTheme(theme: unknown): NormalizedEditorTheme;
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeEditorColor = normalizeEditorColor;
4
+ exports.normalizeEditorTheme = normalizeEditorTheme;
5
+ const react_native_1 = require("react-native");
6
+ const typography = [
7
+ 'fontFamily',
8
+ 'fontSize',
9
+ 'fontWeight',
10
+ 'fontStyle',
11
+ 'color',
12
+ 'lineHeight',
13
+ 'letterSpacing',
14
+ 'textDecorationLine',
15
+ 'textDecorationColor',
16
+ 'textDecorationStyle',
17
+ ];
18
+ const sides = ['Top', 'Right', 'Bottom', 'Left'];
19
+ const corners = ['TopLeft', 'TopRight', 'BottomRight', 'BottomLeft'];
20
+ const border = [
21
+ 'borderWidth',
22
+ 'borderColor',
23
+ 'borderStyle',
24
+ 'borderRadius',
25
+ ...sides.flatMap((side) => [`border${side}Width`, `border${side}Color`]),
26
+ ...corners.map((corner) => `border${corner}Radius`),
27
+ ];
28
+ const spacing = (prefix) => [
29
+ prefix,
30
+ `${prefix}Horizontal`,
31
+ `${prefix}Vertical`,
32
+ ...sides.map((side) => `${prefix}${side}`),
33
+ ];
34
+ const surface = ['backgroundColor', ...border, ...spacing('padding')];
35
+ const box = [...surface, ...spacing('margin')];
36
+ const block = [...typography, ...box, 'textAlign'];
37
+ const inline = [...typography, 'backgroundColor'];
38
+ const checkbox = [...border, 'backgroundColor', 'checkColor'];
39
+ const fields = {
40
+ content: surface,
41
+ text: typography,
42
+ paragraph: block,
43
+ h1: block,
44
+ h2: block,
45
+ h3: block,
46
+ h4: block,
47
+ h5: block,
48
+ h6: block,
49
+ blockquote: block,
50
+ codeBlock: block,
51
+ bulletList: [...block, 'indent', 'baseIndentMultiplier'],
52
+ orderedList: [...block, 'indent', 'baseIndentMultiplier'],
53
+ taskList: [...block, 'indent', 'baseIndentMultiplier'],
54
+ listItem: block,
55
+ taskItem: block,
56
+ listMarker: ['color', 'scale', 'gap', 'ordered'],
57
+ taskCheckbox: [...checkbox, 'size', 'gap', 'checked'],
58
+ horizontalRule: [...border, ...spacing('margin'), 'backgroundColor', 'height'],
59
+ image: [...box, 'resizeMode'],
60
+ link: inline,
61
+ inlineCode: inline,
62
+ bold: inline,
63
+ italic: inline,
64
+ underline: inline,
65
+ strike: inline,
66
+ mention: [...inline, ...border],
67
+ placeholder: typography,
68
+ };
69
+ const enums = {
70
+ fontStyle: ['normal', 'italic'],
71
+ fontWeight: ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'],
72
+ textAlign: ['auto', 'left', 'right', 'center', 'justify'],
73
+ textDecorationLine: ['none', 'underline', 'line-through', 'underline line-through'],
74
+ textDecorationStyle: ['solid', 'double', 'dotted', 'dashed'],
75
+ borderStyle: ['solid', 'dashed', 'dotted'],
76
+ resizeMode: ['contain', 'cover', 'stretch'],
77
+ };
78
+ function invalid(path, reason) {
79
+ throw new TypeError(`Invalid editor style ${path}: ${reason}`);
80
+ }
81
+ function record(value) {
82
+ if (value == null || typeof value !== 'object' || Array.isArray(value))
83
+ return false;
84
+ const prototype = Object.getPrototypeOf(value);
85
+ return prototype === Object.prototype || prototype === null;
86
+ }
87
+ function normalizeEditorColor(value, path) {
88
+ if (typeof value !== 'string')
89
+ return invalid(path, 'expected a color string');
90
+ const argb = (0, react_native_1.processColor)(value);
91
+ if (typeof argb !== 'number')
92
+ return invalid(path, 'unrecognized color');
93
+ const rgba = ((argb << 8) | (argb >>> 24)) >>> 0;
94
+ return `#${rgba.toString(16).padStart(8, '0')}`;
95
+ }
96
+ function orderedMarker(value, path) {
97
+ if (!record(value))
98
+ return invalid(path, 'expected an ordered marker object');
99
+ const result = {};
100
+ for (const [key, entry] of Object.entries(value)) {
101
+ if (key !== 'schemes' && key !== 'suffix')
102
+ invalid(`${path}.${key}`, 'unsupported property');
103
+ if (entry === undefined)
104
+ continue;
105
+ if (key === 'suffix') {
106
+ if (entry !== '.' && entry !== ')')
107
+ invalid(`${path}.${key}`, 'expected . or )');
108
+ result[key] = entry;
109
+ }
110
+ else {
111
+ const schemes = ['decimal', 'lowerAlpha', 'upperAlpha', 'lowerRoman', 'upperRoman'];
112
+ if (!Array.isArray(entry) ||
113
+ entry.length === 0 ||
114
+ !entry.every((item) => typeof item === 'string' && schemes.includes(item))) {
115
+ invalid(`${path}.${key}`, 'expected a nonempty array of numbering schemes');
116
+ }
117
+ result[key] = [...entry];
118
+ }
119
+ }
120
+ return result;
121
+ }
122
+ function property(key, value, path) {
123
+ if (value === undefined)
124
+ return undefined;
125
+ if (key === 'ordered')
126
+ return orderedMarker(value, path);
127
+ if (key === 'checked')
128
+ return normalizeStyle(value, checkbox, path);
129
+ if (key === 'color' || key.endsWith('Color'))
130
+ return normalizeEditorColor(value, path);
131
+ if (key === 'fontFamily') {
132
+ if (typeof value !== 'string' || value.length === 0)
133
+ invalid(path, 'expected a nonempty font family');
134
+ return value;
135
+ }
136
+ if (enums[key]) {
137
+ const candidate = key === 'fontWeight' && typeof value === 'number' ? String(value) : value;
138
+ if (typeof candidate !== 'string' || !enums[key].includes(candidate))
139
+ invalid(path, 'unsupported value');
140
+ return candidate;
141
+ }
142
+ if (typeof value !== 'number' || !Number.isFinite(value))
143
+ invalid(path, 'expected a finite number');
144
+ if (['fontSize', 'lineHeight', 'size', 'scale'].includes(key) && value <= 0)
145
+ invalid(path, 'expected a positive number');
146
+ if (!key.startsWith('margin') && key !== 'letterSpacing' && value < 0)
147
+ invalid(path, 'expected a nonnegative number');
148
+ return value;
149
+ }
150
+ function normalizeStyle(value, allowed, path) {
151
+ const raw = {};
152
+ const ancestors = new Set();
153
+ function append(entry, depth) {
154
+ if (entry === false || entry == null)
155
+ return;
156
+ if (depth > 64)
157
+ invalid(path, 'style arrays are nested too deeply');
158
+ if (Array.isArray(entry)) {
159
+ if (ancestors.has(entry))
160
+ invalid(path, 'cyclic style array');
161
+ ancestors.add(entry);
162
+ entry.forEach((item) => append(item, depth + 1));
163
+ ancestors.delete(entry);
164
+ return;
165
+ }
166
+ if (!record(entry))
167
+ invalid(path, 'expected a style object or array');
168
+ for (const [key, field] of Object.entries(entry)) {
169
+ if (!allowed.includes(key))
170
+ invalid(`${path}.${key}`, 'unsupported property');
171
+ raw[key] = property(key, field, `${path}.${key}`);
172
+ }
173
+ }
174
+ append(value, 0);
175
+ const result = Object.fromEntries(Object.entries(raw).filter(([, value]) => value !== undefined));
176
+ for (const prefix of ['margin', 'padding']) {
177
+ for (const side of sides) {
178
+ const axis = side === 'Top' || side === 'Bottom' ? 'Vertical' : 'Horizontal';
179
+ const resolved = raw[`${prefix}${side}`] ?? raw[`${prefix}${axis}`] ?? raw[prefix];
180
+ if (resolved !== undefined)
181
+ result[`${prefix}${side}`] = resolved;
182
+ }
183
+ delete result[prefix];
184
+ delete result[`${prefix}Horizontal`];
185
+ delete result[`${prefix}Vertical`];
186
+ }
187
+ for (const suffix of ['Width', 'Color']) {
188
+ for (const side of sides) {
189
+ const resolved = raw[`border${side}${suffix}`] ?? raw[`border${suffix}`];
190
+ if (resolved !== undefined)
191
+ result[`border${side}${suffix}`] = resolved;
192
+ }
193
+ delete result[`border${suffix}`];
194
+ }
195
+ for (const corner of corners) {
196
+ const resolved = raw[`border${corner}Radius`] ?? raw.borderRadius;
197
+ if (resolved !== undefined)
198
+ result[`border${corner}Radius`] = resolved;
199
+ }
200
+ delete result.borderRadius;
201
+ return result;
202
+ }
203
+ function normalizeEditorTheme(theme) {
204
+ if (!record(theme))
205
+ invalid('theme', 'expected a named style map');
206
+ const styles = {};
207
+ const result = { version: 1 };
208
+ for (const [key, value] of Object.entries(theme)) {
209
+ if (key === 'toolbar') {
210
+ if (value !== undefined) {
211
+ if (!record(value))
212
+ invalid('toolbar', 'expected toolbar configuration');
213
+ result.toolbar = { ...value };
214
+ }
215
+ continue;
216
+ }
217
+ if (!Object.prototype.hasOwnProperty.call(fields, key))
218
+ invalid(key, 'unsupported element');
219
+ const style = normalizeStyle(value, fields[key], key);
220
+ if (Object.keys(style).length)
221
+ styles[key] = style;
222
+ }
223
+ if (Object.keys(styles).length)
224
+ result.styles = styles;
225
+ return result;
226
+ }
@@ -0,0 +1,151 @@
1
+ import type { TextStyle } from 'react-native';
2
+ import type { EditorToolbarTheme, EditorFontWeight } from './EditorTheme';
3
+ export type EditorStyleProp<T> = T | false | null | undefined | readonly EditorStyleProp<T>[];
4
+ export interface EditorTypographyStyle {
5
+ fontFamily?: string;
6
+ fontSize?: number;
7
+ fontWeight?: EditorFontWeight | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
8
+ fontStyle?: 'normal' | 'italic';
9
+ color?: string;
10
+ lineHeight?: number;
11
+ letterSpacing?: number;
12
+ textDecorationLine?: TextStyle['textDecorationLine'];
13
+ textDecorationColor?: string;
14
+ textDecorationStyle?: 'solid' | 'double' | 'dotted' | 'dashed';
15
+ }
16
+ export interface EditorBorderStyle {
17
+ borderWidth?: number;
18
+ borderColor?: string;
19
+ borderStyle?: 'solid' | 'dashed' | 'dotted';
20
+ borderTopWidth?: number;
21
+ borderRightWidth?: number;
22
+ borderBottomWidth?: number;
23
+ borderLeftWidth?: number;
24
+ borderTopColor?: string;
25
+ borderRightColor?: string;
26
+ borderBottomColor?: string;
27
+ borderLeftColor?: string;
28
+ borderRadius?: number;
29
+ borderTopLeftRadius?: number;
30
+ borderTopRightRadius?: number;
31
+ borderBottomLeftRadius?: number;
32
+ borderBottomRightRadius?: number;
33
+ }
34
+ export interface EditorPaddingStyle {
35
+ padding?: number;
36
+ paddingHorizontal?: number;
37
+ paddingVertical?: number;
38
+ paddingTop?: number;
39
+ paddingRight?: number;
40
+ paddingBottom?: number;
41
+ paddingLeft?: number;
42
+ }
43
+ export interface EditorMarginStyle {
44
+ margin?: number;
45
+ marginHorizontal?: number;
46
+ marginVertical?: number;
47
+ marginTop?: number;
48
+ marginRight?: number;
49
+ marginBottom?: number;
50
+ marginLeft?: number;
51
+ }
52
+ export interface EditorSurfaceStyle extends EditorBorderStyle, EditorPaddingStyle {
53
+ backgroundColor?: string;
54
+ }
55
+ export interface EditorBoxStyle extends EditorSurfaceStyle, EditorMarginStyle {
56
+ }
57
+ export interface EditorTextStyle extends EditorTypographyStyle, EditorBoxStyle {
58
+ textAlign?: TextStyle['textAlign'];
59
+ }
60
+ export interface EditorInlineStyle extends EditorTypographyStyle {
61
+ backgroundColor?: string;
62
+ }
63
+ export interface EditorImageStyle extends EditorBoxStyle {
64
+ resizeMode?: 'contain' | 'cover' | 'stretch';
65
+ }
66
+ export interface EditorListStyle extends EditorTextStyle {
67
+ indent?: number;
68
+ baseIndentMultiplier?: number;
69
+ }
70
+ export type EditorOrderedListNumberingScheme = 'decimal' | 'lowerAlpha' | 'upperAlpha' | 'lowerRoman' | 'upperRoman';
71
+ export interface EditorOrderedListMarkerTheme {
72
+ schemes?: readonly EditorOrderedListNumberingScheme[];
73
+ suffix?: '.' | ')';
74
+ }
75
+ export interface EditorListMarkerStyle {
76
+ color?: string;
77
+ scale?: number;
78
+ gap?: number;
79
+ ordered?: EditorOrderedListMarkerTheme;
80
+ }
81
+ export interface EditorCheckboxAppearance extends EditorBorderStyle {
82
+ backgroundColor?: string;
83
+ checkColor?: string;
84
+ }
85
+ export interface EditorTaskCheckboxStyle extends EditorCheckboxAppearance {
86
+ size?: number;
87
+ gap?: number;
88
+ checked?: EditorStyleProp<EditorCheckboxAppearance>;
89
+ }
90
+ export interface EditorHorizontalRuleStyle extends EditorBorderStyle, EditorMarginStyle {
91
+ backgroundColor?: string;
92
+ height?: number;
93
+ }
94
+ export interface EditorMentionStyle extends EditorInlineStyle, EditorBorderStyle {
95
+ }
96
+ export interface EditorStyleMap {
97
+ content: EditorSurfaceStyle;
98
+ text: EditorTypographyStyle;
99
+ paragraph: EditorTextStyle;
100
+ h1: EditorTextStyle;
101
+ h2: EditorTextStyle;
102
+ h3: EditorTextStyle;
103
+ h4: EditorTextStyle;
104
+ h5: EditorTextStyle;
105
+ h6: EditorTextStyle;
106
+ blockquote: EditorTextStyle;
107
+ codeBlock: EditorTextStyle;
108
+ bulletList: EditorListStyle;
109
+ orderedList: EditorListStyle;
110
+ taskList: EditorListStyle;
111
+ listItem: EditorTextStyle;
112
+ taskItem: EditorTextStyle;
113
+ listMarker: EditorListMarkerStyle;
114
+ taskCheckbox: EditorTaskCheckboxStyle;
115
+ horizontalRule: EditorHorizontalRuleStyle;
116
+ image: EditorImageStyle;
117
+ link: EditorInlineStyle;
118
+ inlineCode: EditorInlineStyle;
119
+ bold: EditorInlineStyle;
120
+ italic: EditorInlineStyle;
121
+ underline: EditorInlineStyle;
122
+ strike: EditorInlineStyle;
123
+ mention: EditorMentionStyle;
124
+ placeholder: EditorTypographyStyle;
125
+ }
126
+ export type EditorTheme = {
127
+ [K in keyof EditorStyleMap]?: EditorStyleProp<EditorStyleMap[K]>;
128
+ } & {
129
+ toolbar?: EditorToolbarTheme;
130
+ };
131
+ export type EditorLinkTheme = EditorInlineStyle;
132
+ export type EditorHeadingTheme = Partial<Record<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', EditorStyleProp<EditorTextStyle>>>;
133
+ export type EditorListTheme = EditorListStyle;
134
+ export type EditorHorizontalRuleTheme = EditorHorizontalRuleStyle;
135
+ export type EditorBlockquoteTheme = EditorTextStyle;
136
+ export type EditorCodeBlockTheme = EditorTextStyle;
137
+ export type NormalizedEditorStyle = Readonly<Record<string, unknown>>;
138
+ export interface NormalizedEditorTheme {
139
+ version: 1;
140
+ styles?: Partial<Record<keyof EditorStyleMap, NormalizedEditorStyle>>;
141
+ toolbar?: EditorToolbarTheme;
142
+ }
143
+ type ExactStyle<T, Shape> = T extends false | null | undefined ? T : T extends readonly unknown[] ? {
144
+ [K in keyof T]: ExactStyle<T[K], Shape>;
145
+ } : Shape & {
146
+ [K in keyof T]: K extends keyof Shape ? K extends 'checked' ? ExactStyle<T[K], EditorCheckboxAppearance> : K extends 'ordered' ? ExactStyle<T[K], EditorOrderedListMarkerTheme> : Shape[K] : never;
147
+ };
148
+ export type ExactEditorTheme<T> = {
149
+ [K in keyof T]: K extends keyof EditorStyleMap ? ExactStyle<T[K], EditorStyleMap[K]> : K extends 'toolbar' ? EditorToolbarTheme : never;
150
+ };
151
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,117 @@
1
+ import type { EditorTheme, EditorMentionStyle } from './EditorStyleSheetTypes';
2
+ export type { EditorTheme, EditorTextStyle, EditorLinkTheme, EditorHeadingTheme, EditorListTheme, EditorOrderedListNumberingScheme, EditorOrderedListMarkerTheme, EditorHorizontalRuleTheme, EditorBlockquoteTheme, EditorCodeBlockTheme, } from './EditorStyleSheetTypes';
3
+ /**
4
+ * Font weight accepted by every themed text style. Numeric weights are
5
+ * strings, matching React Native's `fontWeight`.
6
+ */
7
+ export type EditorFontWeight = 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';
8
+ /** Font slant accepted by every themed text style. */
9
+ export type EditorFontStyle = 'normal' | 'italic';
10
+ /** The mention itself, rendered inline in the document. */
11
+ export interface EditorMentionNodeTheme extends EditorMentionStyle {
12
+ /** @deprecated Use color. Retained for persisted mention themes. */
13
+ textColor?: string;
14
+ }
15
+ /** A single row in the suggestion list. */
16
+ export interface EditorMentionSuggestionOptionTheme {
17
+ /** Color of the row's primary text (`MentionSuggestion.title`). */
18
+ textColor?: string;
19
+ /** Color of the row's secondary text (`MentionSuggestion.subtitle`). */
20
+ secondaryTextColor?: string;
21
+ /** Fill drawn behind an unhighlighted row. */
22
+ backgroundColor?: string;
23
+ borderColor?: string;
24
+ /** Row border width, in layout units. */
25
+ borderWidth?: number;
26
+ /** Row corner radius, in layout units. */
27
+ borderRadius?: number;
28
+ /** Weight of the row's primary text. */
29
+ fontWeight?: EditorFontWeight;
30
+ /** Fill drawn behind the row under the cursor or pointer. */
31
+ highlightedBackgroundColor?: string;
32
+ /** Primary text color for the row under the cursor or pointer. */
33
+ highlightedTextColor?: string;
34
+ }
35
+ /** The container behind the suggestion rows. Honored by the JavaScript
36
+ * `EditorToolbar`; the native keyboard toolbar styles rows only. */
37
+ export interface EditorMentionSuggestionsTheme {
38
+ backgroundColor?: string;
39
+ borderColor?: string;
40
+ /** Container border width, in layout units. */
41
+ borderWidth?: number;
42
+ /** Container corner radius, in layout units. */
43
+ borderRadius?: number;
44
+ shadowColor?: string;
45
+ /** Styling for each suggestion row inside the container. */
46
+ option?: EditorMentionSuggestionOptionTheme;
47
+ }
48
+ /**
49
+ * Mention styling. It is configured on the mentions addon
50
+ * through `createMentionsAddon({ theme })`, and can be overridden per mention through
51
+ * `MentionsAddonConfig.resolveTheme`.
52
+ */
53
+ export interface EditorMentionTheme {
54
+ node?: EditorMentionNodeTheme;
55
+ suggestions?: EditorMentionSuggestionsTheme;
56
+ }
57
+ /**
58
+ * Toolbar chrome style. `'custom'` renders the package's own chrome from
59
+ * this theme; `'native'` adopts the platform keyboard-accessory look, so the
60
+ * platform supplies chrome metrics this theme would otherwise set.
61
+ */
62
+ export type EditorToolbarAppearance = 'custom' | 'native';
63
+ /**
64
+ * Toolbar chrome and button colors. Honored by both the JavaScript
65
+ * `EditorToolbar` and the native keyboard toolbar unless a field says
66
+ * otherwise.
67
+ */
68
+ export interface EditorToolbarTheme {
69
+ /** Chrome style. Defaults to `'custom'`. */
70
+ appearance?: EditorToolbarAppearance;
71
+ /** Toolbar height, in layout units. Defaults to a height that fits the buttons. */
72
+ height?: number;
73
+ backgroundColor?: string;
74
+ borderColor?: string;
75
+ /** Toolbar border width, in layout units. */
76
+ borderWidth?: number;
77
+ /** Toolbar corner radius, in layout units. */
78
+ borderRadius?: number;
79
+ /** Gap above an inline-placed toolbar, in layout units. Defaults to 8.
80
+ * Ignored for `toolbarPlacement="keyboard"`. */
81
+ marginTop?: number;
82
+ /** Whether the JavaScript toolbar draws its top separator line. Defaults to
83
+ * false through `RichTextEditor`, true for a standalone `EditorToolbar`. */
84
+ showTopBorder?: boolean;
85
+ /** Gap between the keyboard and the toolbar, in layout units. Applies to
86
+ * `toolbarPlacement="keyboard"`; the platform default depends on `appearance`. */
87
+ keyboardOffset?: number;
88
+ /** Inset on each side of the keyboard-attached toolbar, in layout units.
89
+ * The platform default depends on `appearance`. */
90
+ horizontalInset?: number;
91
+ /** Color of `separator` toolbar items. */
92
+ separatorColor?: string;
93
+ /** Icon color of an idle button. */
94
+ buttonColor?: string;
95
+ /** Fill drawn behind an idle button. */
96
+ buttonBackgroundColor?: string;
97
+ /** Icon size for toolbar buttons, in layout units. */
98
+ buttonIconSize?: number;
99
+ /** Icon color of a button whose mark or node is active at the selection. */
100
+ buttonActiveColor?: string;
101
+ /** Icon color of a button the current selection cannot apply. */
102
+ buttonDisabledColor?: string;
103
+ /** Fill drawn behind an active button. */
104
+ buttonActiveBackgroundColor?: string;
105
+ /** Fill drawn behind a disabled button. */
106
+ buttonDisabledBackgroundColor?: string;
107
+ /** Button corner radius, in layout units. */
108
+ buttonBorderRadius?: number;
109
+ }
110
+ /** Padding between the editor's edges and its content, in layout units. */
111
+ export interface EditorContentInsets {
112
+ top?: number;
113
+ right?: number;
114
+ bottom?: number;
115
+ left?: number;
116
+ }
117
+ export declare function serializeEditorTheme(theme?: EditorTheme, mentionTheme?: EditorMentionTheme): string | undefined;