@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,338 @@
1
+ export const CONTENT_EXPRESSION_MAX_DEPTH = 128;
2
+ export const DEFAULT_CONTENT_MAX_NODES = 10_000;
3
+ const MAX_AUTOMATON_STATES = 10_000;
4
+ const MAX_REPETITION_BOUND = 10_000;
5
+
6
+ type Expression =
7
+ | { kind: 'empty' }
8
+ | { kind: 'symbol'; symbol: string }
9
+ | { kind: 'sequence'; expressions: Expression[] }
10
+ | { kind: 'alternation'; expressions: Expression[] }
11
+ | { kind: 'repeat'; expression: Expression; min: number; max: number | null };
12
+
13
+ interface State {
14
+ epsilon: number[];
15
+ transitions: Array<{ symbol: string; target: number }>;
16
+ }
17
+
18
+ function collectExpressionSymbols(expression: Expression, symbols: Set<string>): void {
19
+ if (expression.kind === 'symbol') {
20
+ symbols.add(expression.symbol);
21
+ } else if (expression.kind !== 'empty') {
22
+ if (expression.kind === 'repeat') collectExpressionSymbols(expression.expression, symbols);
23
+ else for (const nested of expression.expressions) collectExpressionSymbols(nested, symbols);
24
+ }
25
+ }
26
+
27
+ /** Return every referenced node/group symbol, or null for an invalid expression. */
28
+ export function contentExpressionSymbols(content: string): string[] | null {
29
+ try {
30
+ const expression = new ContentExpressionParser(content).parse();
31
+ const compiler = new ContentExpressionCompiler();
32
+ compiler.compile(expression);
33
+ const symbols = new Set<string>();
34
+ collectExpressionSymbols(expression, symbols);
35
+ return [...symbols];
36
+ } catch {
37
+ return null;
38
+ }
39
+ }
40
+
41
+ class ContentExpressionParser {
42
+ private position = 0;
43
+ private depth = 0;
44
+
45
+ constructor(private readonly source: string) {}
46
+
47
+ parse(): Expression {
48
+ if (this.source.trim() === '') return { kind: 'empty' };
49
+ const expression = this.parseAlternation();
50
+ this.skipWhitespace();
51
+ if (!this.atEnd()) throw new Error(`unexpected '${this.peek()}'`);
52
+ return expression;
53
+ }
54
+
55
+ private parseAlternation(): Expression {
56
+ const expressions = [this.parseSequence()];
57
+ while (true) {
58
+ this.skipWhitespace();
59
+ if (!this.consume('|')) break;
60
+ this.skipWhitespace();
61
+ if (this.atEnd() || this.peek() === ')' || this.peek() === '|') {
62
+ throw new Error("missing expression after '|'");
63
+ }
64
+ expressions.push(this.parseSequence());
65
+ }
66
+ return expressions.length === 1 ? expressions[0] : { kind: 'alternation', expressions };
67
+ }
68
+
69
+ private parseSequence(): Expression {
70
+ const expressions: Expression[] = [];
71
+ while (true) {
72
+ this.skipWhitespace();
73
+ if (this.atEnd() || this.peek() === ')' || this.peek() === '|') break;
74
+ expressions.push(this.parseRepeated());
75
+ }
76
+ if (expressions.length === 0) throw new Error('expected expression');
77
+ return expressions.length === 1 ? expressions[0] : { kind: 'sequence', expressions };
78
+ }
79
+
80
+ private parseRepeated(): Expression {
81
+ const atom = this.parseAtom();
82
+ this.skipWhitespace();
83
+ let expression = atom;
84
+ if (this.consume('?')) expression = { kind: 'repeat', expression: atom, min: 0, max: 1 };
85
+ else if (this.consume('*'))
86
+ expression = { kind: 'repeat', expression: atom, min: 0, max: null };
87
+ else if (this.consume('+'))
88
+ expression = { kind: 'repeat', expression: atom, min: 1, max: null };
89
+ else if (this.consume('{')) expression = this.parseRange(atom);
90
+ this.skipWhitespace();
91
+ if (['?', '*', '+', '{'].includes(this.peek() ?? '')) {
92
+ throw new Error('multiple quantifiers');
93
+ }
94
+ return expression;
95
+ }
96
+
97
+ private parseAtom(): Expression {
98
+ this.skipWhitespace();
99
+ if (this.consume('(')) {
100
+ if (this.depth >= CONTENT_EXPRESSION_MAX_DEPTH)
101
+ throw new Error('expression nesting too deep');
102
+ this.depth += 1;
103
+ try {
104
+ this.skipWhitespace();
105
+ if (this.peek() === ')') throw new Error('empty group');
106
+ const expression = this.parseAlternation();
107
+ this.skipWhitespace();
108
+ if (!this.consume(')')) throw new Error("missing ')'");
109
+ return expression;
110
+ } finally {
111
+ this.depth -= 1;
112
+ }
113
+ }
114
+
115
+ const start = this.position;
116
+ while (this.peek() != null && /[A-Za-z0-9_-]/.test(this.peek()!)) this.position += 1;
117
+ if (start === this.position) throw new Error('expected node or group name');
118
+ return { kind: 'symbol', symbol: this.source.slice(start, this.position) };
119
+ }
120
+
121
+ private parseRange(expression: Expression): Expression {
122
+ const min = this.parseNumber();
123
+ let max: number | null;
124
+ if (this.consume('}')) max = min;
125
+ else {
126
+ if (!this.consume(',')) throw new Error("expected ',' or '}'");
127
+ if (this.consume('}')) max = null;
128
+ else {
129
+ max = this.parseNumber();
130
+ if (!this.consume('}')) throw new Error("expected '}'");
131
+ }
132
+ }
133
+ if (max != null && max < min) throw new Error('range maximum is smaller than minimum');
134
+ if ((max ?? min) > MAX_REPETITION_BOUND) throw new Error('repetition bound too large');
135
+ return { kind: 'repeat', expression, min, max };
136
+ }
137
+
138
+ private parseNumber(): number {
139
+ const start = this.position;
140
+ while (this.peek() != null && /[0-9]/.test(this.peek()!)) this.position += 1;
141
+ if (start === this.position) throw new Error('expected number');
142
+ const value = Number(this.source.slice(start, this.position));
143
+ if (!Number.isSafeInteger(value) || value > 0xffff_ffff) throw new Error('invalid count');
144
+ return value;
145
+ }
146
+
147
+ private skipWhitespace(): void {
148
+ while (this.peek() != null && /\s/.test(this.peek()!)) this.position += 1;
149
+ }
150
+
151
+ private peek(): string | undefined {
152
+ return this.source[this.position];
153
+ }
154
+
155
+ private consume(character: string): boolean {
156
+ if (this.peek() !== character) return false;
157
+ this.position += 1;
158
+ return true;
159
+ }
160
+
161
+ private atEnd(): boolean {
162
+ return this.position === this.source.length;
163
+ }
164
+ }
165
+
166
+ class ContentExpressionCompiler {
167
+ readonly states: State[] = [];
168
+
169
+ compile(expression: Expression, depth = 0): [number, number] {
170
+ if (depth > CONTENT_EXPRESSION_MAX_DEPTH) throw new Error('expression nesting too deep');
171
+ if (expression.kind === 'empty') {
172
+ const start = this.state();
173
+ const end = this.state();
174
+ this.states[start].epsilon.push(end);
175
+ return [start, end];
176
+ }
177
+ if (expression.kind === 'symbol') {
178
+ const start = this.state();
179
+ const end = this.state();
180
+ this.states[start].transitions.push({ symbol: expression.symbol, target: end });
181
+ return [start, end];
182
+ }
183
+ if (expression.kind === 'sequence') {
184
+ const start = this.state();
185
+ let tail = start;
186
+ for (const nested of expression.expressions) {
187
+ const [nestedStart, nestedEnd] = this.compile(nested, depth + 1);
188
+ this.states[tail].epsilon.push(nestedStart);
189
+ tail = nestedEnd;
190
+ }
191
+ return [start, tail];
192
+ }
193
+ if (expression.kind === 'alternation') {
194
+ const start = this.state();
195
+ const end = this.state();
196
+ for (const nested of expression.expressions) {
197
+ const [nestedStart, nestedEnd] = this.compile(nested, depth + 1);
198
+ this.states[start].epsilon.push(nestedStart);
199
+ this.states[nestedEnd].epsilon.push(end);
200
+ }
201
+ return [start, end];
202
+ }
203
+ return this.compileRepeat(expression.expression, expression.min, expression.max, depth + 1);
204
+ }
205
+
206
+ private compileRepeat(
207
+ expression: Expression,
208
+ min: number,
209
+ max: number | null,
210
+ depth: number
211
+ ): [number, number] {
212
+ const start = this.state();
213
+ const end = this.state();
214
+ let tail = start;
215
+ for (let count = 0; count < min; count += 1) {
216
+ const [itemStart, itemEnd] = this.compile(expression, depth);
217
+ this.states[tail].epsilon.push(itemStart);
218
+ tail = itemEnd;
219
+ }
220
+ if (max == null) {
221
+ this.states[tail].epsilon.push(end);
222
+ const [itemStart, itemEnd] = this.compile(expression, depth);
223
+ this.states[tail].epsilon.push(itemStart);
224
+ this.states[itemEnd].epsilon.push(tail);
225
+ } else {
226
+ for (let count = min; count < max; count += 1) {
227
+ this.states[tail].epsilon.push(end);
228
+ const [itemStart, itemEnd] = this.compile(expression, depth);
229
+ this.states[tail].epsilon.push(itemStart);
230
+ tail = itemEnd;
231
+ }
232
+ this.states[tail].epsilon.push(end);
233
+ }
234
+ return [start, end];
235
+ }
236
+
237
+ private state(): number {
238
+ if (this.states.length >= MAX_AUTOMATON_STATES)
239
+ throw new Error('too many automaton states');
240
+ this.states.push({ epsilon: [], transitions: [] });
241
+ return this.states.length - 1;
242
+ }
243
+ }
244
+
245
+ function epsilonClosure(states: State[], initial: Iterable<number>): Set<number> {
246
+ const result = new Set<number>();
247
+ const pending = [...initial];
248
+ while (pending.length > 0) {
249
+ const state = pending.pop()!;
250
+ if (result.has(state)) continue;
251
+ result.add(state);
252
+ pending.push(...states[state].epsilon);
253
+ }
254
+ return result;
255
+ }
256
+
257
+ export function acceptingContentSymbols(
258
+ content: string,
259
+ existingChildTypes: readonly string[] = [],
260
+ symbolMatches: (childType: string, symbol: string) => boolean = (child, symbol) =>
261
+ child === symbol
262
+ ): string[] {
263
+ try {
264
+ const expression = new ContentExpressionParser(content).parse();
265
+ const compiler = new ContentExpressionCompiler();
266
+ const [start] = compiler.compile(expression);
267
+ let current = epsilonClosure(compiler.states, [start]);
268
+ for (const childType of existingChildTypes) {
269
+ const next = new Set<number>();
270
+ for (const state of current) {
271
+ for (const transition of compiler.states[state].transitions) {
272
+ if (symbolMatches(childType, transition.symbol)) next.add(transition.target);
273
+ }
274
+ }
275
+ current = epsilonClosure(compiler.states, next);
276
+ }
277
+ const symbols = new Set<string>();
278
+ for (const state of current) {
279
+ for (const transition of compiler.states[state].transitions) {
280
+ symbols.add(transition.symbol);
281
+ }
282
+ }
283
+ return [...symbols].sort();
284
+ } catch {
285
+ return [];
286
+ }
287
+ }
288
+
289
+ export function minimalContentMatch<T>(
290
+ content: string,
291
+ choose: (symbol: string) => T | undefined,
292
+ consumeWork: () => boolean = () => true
293
+ ): T[] | undefined {
294
+ try {
295
+ const expression = new ContentExpressionParser(content).parse();
296
+ const compiler = new ContentExpressionCompiler();
297
+ const [start, accept] = compiler.compile(expression);
298
+ interface Path {
299
+ value: T;
300
+ previous?: Path;
301
+ }
302
+ let current = new Map<number, Path | undefined>([[start, undefined]]);
303
+ const visited = new Set<number>();
304
+ while (current.size > 0) {
305
+ const closure = new Map<number, Path | undefined>();
306
+ const pending = [...current.entries()];
307
+ while (pending.length > 0) {
308
+ if (!consumeWork()) return undefined;
309
+ const [state, path] = pending.pop()!;
310
+ if (closure.has(state)) continue;
311
+ closure.set(state, path);
312
+ for (const target of compiler.states[state].epsilon) pending.push([target, path]);
313
+ }
314
+ const accepted = closure.get(accept);
315
+ if (closure.has(accept)) {
316
+ const result: T[] = [];
317
+ for (let path = accepted; path; path = path.previous) result.push(path.value);
318
+ return result.reverse();
319
+ }
320
+ const next = new Map<number, Path | undefined>();
321
+ for (const [state, path] of closure) {
322
+ if (visited.has(state)) continue;
323
+ visited.add(state);
324
+ for (const transition of compiler.states[state].transitions) {
325
+ if (!consumeWork()) return undefined;
326
+ const value = choose(transition.symbol);
327
+ if (value !== undefined && !next.has(transition.target)) {
328
+ next.set(transition.target, { value, previous: path });
329
+ }
330
+ }
331
+ }
332
+ current = next;
333
+ }
334
+ return undefined;
335
+ } catch {
336
+ return undefined;
337
+ }
338
+ }
package/src/index.ts ADDED
@@ -0,0 +1,295 @@
1
+ export {
2
+ RichTextEditor,
3
+ type RichTextEditorProps,
4
+ type RichTextEditorRef,
5
+ type RichTextEditorCaretRect,
6
+ type RichTextEditorHeightBehavior,
7
+ type RichTextEditorToolbarPlacement,
8
+ type RichTextEditorValueJSONUpdateMode,
9
+ type RichTextEditorAutoCapitalize,
10
+ type RichTextEditorKeyboardType,
11
+ type RichTextEditorAndroidInputOptions,
12
+ type RichTextEditorFocusPreservingElement,
13
+ type RichTextEditorFocusPreservingRef,
14
+ type RichTextEditorFocusPreservingRefs,
15
+ type RemoteSelectionDecoration,
16
+ type LinkRequestContext,
17
+ type ImageRequestContext,
18
+ NativeRichTextEditor,
19
+ type NativeRichTextEditorProps,
20
+ type NativeRichTextEditorRef,
21
+ type NativeRichTextEditorCaretRect,
22
+ type NativeRichTextEditorHeightBehavior,
23
+ type NativeRichTextEditorToolbarPlacement,
24
+ type NativeRichTextEditorValueJSONUpdateMode,
25
+ type NativeRichTextEditorAutoCapitalize,
26
+ type NativeRichTextEditorKeyboardType,
27
+ type NativeRichTextEditorAndroidInputOptions,
28
+ type NativeRichTextEditorFocusPreservingElement,
29
+ type NativeRichTextEditorFocusPreservingRef,
30
+ type NativeRichTextEditorFocusPreservingRefs,
31
+ } from './NativeRichTextEditor';
32
+
33
+ export type {
34
+ ExternalTextCompositionEndCause,
35
+ ExternalTextCompositionEndEvent,
36
+ ExternalTextCompositionOptions,
37
+ ExternalTextCompositionSession,
38
+ } from './ExternalTextComposition';
39
+
40
+ export {
41
+ RichTextViewer,
42
+ type RichTextViewerProps,
43
+ type RichTextViewerAddons,
44
+ type RichTextViewerBaseProps,
45
+ type RichTextViewerMentionsConfig,
46
+ type RichTextViewerLinkPressEvent,
47
+ type RichTextViewerMentionPressEvent,
48
+ type RichTextViewerErrorEvent,
49
+ type RichTextViewerAtomAttrsUpdateEvent,
50
+ NativeProseViewer,
51
+ type NativeProseViewerProps,
52
+ type NativeProseViewerAddons,
53
+ type NativeProseViewerBaseProps,
54
+ type NativeProseViewerMentionsConfig,
55
+ type NativeProseViewerLinkPressEvent,
56
+ type NativeProseViewerMentionPressEvent,
57
+ type NativeProseViewerErrorEvent,
58
+ type NativeProseViewerAtomAttrsUpdateEvent,
59
+ } from './NativeProseViewer';
60
+
61
+ export {
62
+ EditorToolbar,
63
+ DEFAULT_EDITOR_TOOLBAR_ITEMS,
64
+ type EditorToolbarProps,
65
+ type EditorToolbarItem,
66
+ type EditorToolbarLeafItem,
67
+ type EditorToolbarGroupChildItem,
68
+ type EditorToolbarGroupItem,
69
+ type EditorToolbarGroupPresentation,
70
+ type EditorToolbarIcon,
71
+ type EditorToolbarButtonStyle,
72
+ type EditorToolbarDefaultIconId,
73
+ type EditorToolbarSFSymbolIcon,
74
+ type EditorToolbarMaterialIcon,
75
+ type EditorToolbarCommand,
76
+ type EditorToolbarHeadingLevel,
77
+ type EditorToolbarListType,
78
+ type EditorToolbarItemPlacement,
79
+ } from './EditorToolbar';
80
+ export type {
81
+ EditorContentInsets,
82
+ EditorTheme,
83
+ EditorTextStyle,
84
+ EditorLinkTheme,
85
+ EditorHeadingTheme,
86
+ EditorListTheme,
87
+ EditorOrderedListNumberingScheme,
88
+ EditorOrderedListMarkerTheme,
89
+ EditorHorizontalRuleTheme,
90
+ EditorBlockquoteTheme,
91
+ EditorCodeBlockTheme,
92
+ EditorMentionTheme,
93
+ EditorMentionNodeTheme,
94
+ EditorMentionSuggestionsTheme,
95
+ EditorMentionSuggestionOptionTheme,
96
+ EditorToolbarTheme,
97
+ EditorToolbarAppearance,
98
+ EditorFontStyle,
99
+ EditorFontWeight,
100
+ } from './EditorTheme';
101
+ export { serializeEditorTheme } from './EditorTheme';
102
+
103
+ export { EditorStyleSheet } from './EditorStyleSheet';
104
+ export type {
105
+ EditorStyleProp,
106
+ EditorStyleMap,
107
+ EditorTypographyStyle,
108
+ EditorBorderStyle,
109
+ EditorPaddingStyle,
110
+ EditorMarginStyle,
111
+ EditorSurfaceStyle,
112
+ EditorBoxStyle,
113
+ EditorInlineStyle,
114
+ EditorImageStyle,
115
+ EditorListStyle,
116
+ EditorListMarkerStyle,
117
+ EditorCheckboxAppearance,
118
+ EditorTaskCheckboxStyle,
119
+ EditorHorizontalRuleStyle,
120
+ EditorMentionStyle,
121
+ } from './EditorStyleSheetTypes';
122
+
123
+ export {
124
+ createMentionsAddon,
125
+ type EditorAddon,
126
+ type EditorAddonEntry,
127
+ type MentionsAddon,
128
+ type MentionsAddonOptions,
129
+ type MentionPressEvent,
130
+ type CodeHighlightingAddon,
131
+ type CodeHighlightingAddonOptions,
132
+ } from './EditorAddon';
133
+
134
+ export {
135
+ MENTION_NODE_NAME,
136
+ mentionNodeSpec,
137
+ withMentionsSchema,
138
+ buildMentionFragmentJson,
139
+ type EditorAddons,
140
+ type MentionsAddonConfig,
141
+ type MentionSuggestion,
142
+ type MentionQueryChangeEvent,
143
+ type MentionFragmentOptions,
144
+ type MentionSelectionAttrsEvent,
145
+ type MentionThemeResolveEvent,
146
+ type MentionSelectEvent,
147
+ type EditorAddonEvent,
148
+ } from './addons';
149
+
150
+ export {
151
+ defineAtomNode,
152
+ withAtomsSchema,
153
+ serializeEditorAtoms,
154
+ type AtomAttrsUpdate,
155
+ type AtomEditorActions,
156
+ type InferAtomAttrs,
157
+ type AtomComponent,
158
+ type AtomComponentProps,
159
+ type AtomNodeConfig,
160
+ type AtomNodeDefinition,
161
+ type SerializedEditorAtoms,
162
+ } from './atoms';
163
+
164
+ export {
165
+ AtomUpdateAttrsError,
166
+ DEFAULT_ATOM_CHIP_HEIGHT,
167
+ NATIVE_VOID_BLOCK_TYPES,
168
+ applyRenderPatch,
169
+ atomSelected,
170
+ collectAtomInstances,
171
+ type AtomInstance,
172
+ type AtomUpdateAttrsErrorCode,
173
+ } from './atomInstances';
174
+
175
+ export {
176
+ defineSchema,
177
+ defaultSchema,
178
+ defaultSchemaSpec,
179
+ prosemirrorSchema,
180
+ prosemirrorSchemaSpec,
181
+ tiptapCompatibleSchema,
182
+ tiptapCompatibleSchemaSpec,
183
+ IMAGE_NODE_NAME,
184
+ imageNodeSpec,
185
+ withImagesSchema,
186
+ buildDocumentFragmentJson,
187
+ buildImageFragmentJson,
188
+ resolveDocumentDescriptor,
189
+ type ResolvedDocumentSchema,
190
+ type SchemaDefinition,
191
+ type SchemaSpec,
192
+ type SchemaNodeSpec,
193
+ type SchemaMarkSpec,
194
+ type NodeSpec,
195
+ type NodeHtmlRules,
196
+ type NodeJSONProjection,
197
+ type MarkSpec,
198
+ type AttrSpec,
199
+ type ParseDOMRule,
200
+ type DOMOutputSpec,
201
+ type AttributeDOMOutputSpec,
202
+ type ImageNodeAttributes,
203
+ } from './schemas';
204
+
205
+ export {
206
+ createYjsCollaborationController,
207
+ useYjsCollaboration,
208
+ type YjsCollaborationOptions,
209
+ type YjsCollaborationState,
210
+ type YjsTransportStatus,
211
+ type LocalAwarenessState,
212
+ type LocalAwarenessUser,
213
+ type UseYjsCollaborationResult,
214
+ type YjsCollaborationController,
215
+ type YjsCollaborationEditorBindings,
216
+ } from './YjsCollaboration';
217
+
218
+ export {
219
+ useNativeEditorDocument,
220
+ type UseNativeEditorDocumentOptions,
221
+ type UseNativeEditorDocumentReturn,
222
+ } from './useNativeEditor';
223
+
224
+ export type {
225
+ Selection,
226
+ ActiveState,
227
+ ReadonlyActiveState,
228
+ HistoryState,
229
+ EditorUpdate,
230
+ RenderBlocksPatch,
231
+ NativeEditorAtomicRenderSnapshot,
232
+ DocumentJSON,
233
+ CollaborationPeer,
234
+ } from './NativeEditorBridge';
235
+
236
+ export {
237
+ createNativeEditorDocumentHandle,
238
+ createNativeEditorLocalAwarenessSelection,
239
+ type NativeEditorDocumentHandle,
240
+ type NativeCollaborationProtocolAdapter,
241
+ type NativeCollaborationProtocolAdapterAction,
242
+ type NativeCollaborationProtocolAdapterContext,
243
+ type NativeCollaborationProtocolAdapterEvent,
244
+ type NativeCollaborationProtocolAdapterResult,
245
+ type NativeCollaborationProtocolFrame,
246
+ type NativeCollaborationTransportConfig,
247
+ type NativeCollaborationTransportDiagnostics,
248
+ type NativeCollaborationTransportEvent,
249
+ type NativeEditorLocalAwarenessIntent,
250
+ type NativeEditorLocalAwarenessSelection,
251
+ type NativeEditorCreateConfig,
252
+ type NativeEditorState,
253
+ type NativeEditorInitialization,
254
+ type NativeEditorPeerInfo,
255
+ type NativeEditorRoomSnapshot,
256
+ type NativeEditorSnapshotMetadata,
257
+ } from './NativeEditorBridge';
258
+
259
+ export {
260
+ DEFAULT_EDITOR_IMAGE_LOADING_POLICY,
261
+ HARD_EDITOR_IMAGE_LOADING_POLICY,
262
+ resolveEditorImageLoadingPolicy,
263
+ type EditorImageLoadingPolicy,
264
+ type ResolvedEditorImageLoadingPolicy,
265
+ } from './ImageLoadingPolicy';
266
+
267
+ export {
268
+ DEFAULT_EDITOR_RESOURCE_LIMITS,
269
+ HARD_EDITOR_RESOURCE_LIMITS,
270
+ resolveEditorResourceLimits,
271
+ type EditorCollaborationLimits,
272
+ type EditorEditingLimits,
273
+ type EditorResourceLimits,
274
+ type ResolvedEditorResourceLimits,
275
+ } from './ResourceLimits';
276
+
277
+ export {
278
+ NATIVE_EDITOR_BOUNDARY_ERROR_CODES,
279
+ NATIVE_EDITOR_NON_RETRYABLE_CODES,
280
+ NativeEditorBoundaryError,
281
+ NativeEditorErrorBase,
282
+ NativeEditorEngineBoundaryError,
283
+ NativeEditorDocumentError,
284
+ NativeEditorOperationError,
285
+ NativeEditorLifecycleError,
286
+ NativeEditorSnapshotError,
287
+ NativeEditorTransportError,
288
+ NativeEditorNonRetryableError,
289
+ parseNativeBoundaryError,
290
+ type NativeEditorBoundaryErrorCode,
291
+ type NativeEditorErrorDomain,
292
+ type NativeEditorError,
293
+ } from './NativeEditorBoundaryError';
294
+
295
+ export type { AtomViewport } from './AtomHost';
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Rendered list-marker strings.
3
+ *
4
+ * CROSS-LAYER CONTRACT: these values must match the Rust core
5
+ * (rust/editor-core/src/render/mod.rs: task_list_marker_string /
6
+ * list_marker_string — pinned by marker_strings_are_the_cross_layer_contract
7
+ * in render_test.rs), Android (LayoutConstants.TASK_LIST_MARKER_* /
8
+ * UNORDERED_LIST_BULLET), and iOS (RenderBridge.listMarkerString). The
9
+ * marker's scalar length feeds position mapping; a mismatch corrupts
10
+ * selection and IME edits.
11
+ */
12
+ export const TASK_LIST_MARKER_CHECKED = '☑ ';
13
+ export const TASK_LIST_MARKER_UNCHECKED = '☐ ';
14
+ export const UNORDERED_LIST_MARKER = '• ';
15
+
16
+ export function orderedListMarker(index: number): string {
17
+ return `${index}. `;
18
+ }