@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,125 @@
1
+ import { NativeEditorBoundaryError } from './NativeEditorBoundaryError';
2
+
3
+ /**
4
+ * Bounds on the native image pipeline that fetches and decodes remote and
5
+ * data-URL images. Set it on `RichTextEditor.imageLoadingPolicy` or
6
+ * `RichTextViewer.imageLoadingPolicy`.
7
+ *
8
+ * Every field is optional; an omitted one uses
9
+ * {@link DEFAULT_EDITOR_IMAGE_LOADING_POLICY}. Each value must be a positive
10
+ * integer no greater than the matching
11
+ * {@link HARD_EDITOR_IMAGE_LOADING_POLICY} ceiling — anything else throws
12
+ * `NativeEditorBoundaryError` (`IMAGE_POLICY_INVALID`).
13
+ */
14
+ export interface EditorImageLoadingPolicy {
15
+ /** Byte ceiling for one image source, applied to remote responses and decoded data-URL payloads alike. */
16
+ maxSourceBytes?: number;
17
+ /** Socket connect timeout for a remote image request, in milliseconds. */
18
+ connectTimeoutMs?: number;
19
+ /** Socket read timeout for a remote image request, in milliseconds. */
20
+ readTimeoutMs?: number;
21
+ /** Overall deadline for one image request, in milliseconds. */
22
+ requestTimeoutMs?: number;
23
+ /** Image requests allowed in flight at once. Further requests queue. */
24
+ maxConcurrentRequests?: number;
25
+ /** Queued requests allowed while the in-flight slots are full. Requests beyond this are dropped. */
26
+ maxPendingRequests?: number;
27
+ /** Ceiling on decoded image width and height, in pixels. Larger images are downsampled. */
28
+ maxDecodeDimensionPx?: number;
29
+ /** Decoded pixel bytes this editor or viewer may retain at once. */
30
+ maxDecodedBytes?: number;
31
+ }
32
+
33
+ /** {@link EditorImageLoadingPolicy} with every default filled in. */
34
+ export interface ResolvedEditorImageLoadingPolicy {
35
+ maxSourceBytes: number;
36
+ connectTimeoutMs: number;
37
+ readTimeoutMs: number;
38
+ requestTimeoutMs: number;
39
+ maxConcurrentRequests: number;
40
+ maxPendingRequests: number;
41
+ maxDecodeDimensionPx: number;
42
+ maxDecodedBytes: number;
43
+ }
44
+
45
+ /** The value used for each {@link EditorImageLoadingPolicy} field left unset. */
46
+ export const DEFAULT_EDITOR_IMAGE_LOADING_POLICY: Readonly<ResolvedEditorImageLoadingPolicy> = {
47
+ maxSourceBytes: 10 * 1024 * 1024,
48
+ connectTimeoutMs: 10_000,
49
+ readTimeoutMs: 20_000,
50
+ requestTimeoutMs: 60_000,
51
+ maxConcurrentRequests: 2,
52
+ maxPendingRequests: 64,
53
+ maxDecodeDimensionPx: 2_048,
54
+ maxDecodedBytes: 32 * 1024 * 1024,
55
+ };
56
+
57
+ /** The ceiling each {@link EditorImageLoadingPolicy} field may not exceed. */
58
+ export const HARD_EDITOR_IMAGE_LOADING_POLICY: Readonly<ResolvedEditorImageLoadingPolicy> = {
59
+ maxSourceBytes: 64 * 1024 * 1024,
60
+ connectTimeoutMs: 600_000,
61
+ readTimeoutMs: 600_000,
62
+ requestTimeoutMs: 600_000,
63
+ maxConcurrentRequests: 16,
64
+ maxPendingRequests: 512,
65
+ maxDecodeDimensionPx: 8_192,
66
+ maxDecodedBytes: 256 * 1024 * 1024,
67
+ };
68
+
69
+ function resolveImagePolicyValue(
70
+ name: keyof ResolvedEditorImageLoadingPolicy,
71
+ value: number | undefined
72
+ ): number {
73
+ const resolved = value ?? DEFAULT_EDITOR_IMAGE_LOADING_POLICY[name];
74
+ if (
75
+ !Number.isSafeInteger(resolved) ||
76
+ resolved <= 0 ||
77
+ resolved > HARD_EDITOR_IMAGE_LOADING_POLICY[name]
78
+ ) {
79
+ throw new NativeEditorBoundaryError(
80
+ 'IMAGE_POLICY_INVALID',
81
+ `${name} must be a positive integer no greater than ${HARD_EDITOR_IMAGE_LOADING_POLICY[name]}`,
82
+ HARD_EDITOR_IMAGE_LOADING_POLICY[name],
83
+ resolved
84
+ );
85
+ }
86
+ return resolved;
87
+ }
88
+
89
+ /**
90
+ * Fill in every unset {@link EditorImageLoadingPolicy} field from
91
+ * {@link DEFAULT_EDITOR_IMAGE_LOADING_POLICY}, validating each value against
92
+ * {@link HARD_EDITOR_IMAGE_LOADING_POLICY}.
93
+ *
94
+ * @throws NativeEditorBoundaryError `IMAGE_POLICY_INVALID` when a value is
95
+ * not a positive integer within its ceiling.
96
+ */
97
+ export function resolveEditorImageLoadingPolicy(
98
+ policy?: EditorImageLoadingPolicy
99
+ ): ResolvedEditorImageLoadingPolicy {
100
+ return {
101
+ maxSourceBytes: resolveImagePolicyValue('maxSourceBytes', policy?.maxSourceBytes),
102
+ connectTimeoutMs: resolveImagePolicyValue('connectTimeoutMs', policy?.connectTimeoutMs),
103
+ readTimeoutMs: resolveImagePolicyValue('readTimeoutMs', policy?.readTimeoutMs),
104
+ requestTimeoutMs: resolveImagePolicyValue('requestTimeoutMs', policy?.requestTimeoutMs),
105
+ maxConcurrentRequests: resolveImagePolicyValue(
106
+ 'maxConcurrentRequests',
107
+ policy?.maxConcurrentRequests
108
+ ),
109
+ maxPendingRequests: resolveImagePolicyValue(
110
+ 'maxPendingRequests',
111
+ policy?.maxPendingRequests
112
+ ),
113
+ maxDecodeDimensionPx: resolveImagePolicyValue(
114
+ 'maxDecodeDimensionPx',
115
+ policy?.maxDecodeDimensionPx
116
+ ),
117
+ maxDecodedBytes: resolveImagePolicyValue('maxDecodedBytes', policy?.maxDecodedBytes),
118
+ };
119
+ }
120
+
121
+ export function serializeEditorImageLoadingPolicy(
122
+ policy?: EditorImageLoadingPolicy
123
+ ): string | undefined {
124
+ return policy == null ? undefined : JSON.stringify(resolveEditorImageLoadingPolicy(policy));
125
+ }
@@ -0,0 +1,345 @@
1
+ import { normalizeNativeEditorV2U64 } from './NativeEditorV2Decimal';
2
+
3
+ /** The boundary failure codes this package knows about at build time. */
4
+ export const NATIVE_EDITOR_BOUNDARY_ERROR_CODES = [
5
+ 'INVALID_RESOURCE_LIMIT',
6
+ 'CONFIG_INVALID',
7
+ 'INPUT_LIMIT_EXCEEDED',
8
+ 'CONFIG_PARSE_FAILED',
9
+ 'DOCUMENT_PARSE_FAILED',
10
+ 'DOCUMENT_INVALID',
11
+ 'DOCUMENT_LIMIT_EXCEEDED',
12
+ 'POSITION_LIMIT_EXCEEDED',
13
+ 'SCHEMA_INVALID',
14
+ 'REQUIRED_ATTRIBUTE_MISSING',
15
+ 'UNKNOWN_MARK',
16
+ 'MAX_LENGTH_EXCEEDED',
17
+ 'MUTATION_REJECTED',
18
+ 'COLLABORATION_DECODE_FAILED',
19
+ 'COLLABORATION_APPLY_FAILED',
20
+ 'SESSION_NOT_FOUND',
21
+ 'IMAGE_POLICY_INVALID',
22
+ 'IMAGE_REQUEST_TIMEOUT',
23
+ ] as const;
24
+
25
+ export type KnownNativeEditorBoundaryErrorCode =
26
+ (typeof NATIVE_EDITOR_BOUNDARY_ERROR_CODES)[number];
27
+
28
+ /** Known codes remain suggested while future native codes can cross the boundary losslessly. */
29
+ export type NativeEditorBoundaryErrorCode = KnownNativeEditorBoundaryErrorCode | (string & {});
30
+
31
+ /** The subsystems a typed error can come from. Each maps to its own error class. */
32
+ export const NATIVE_EDITOR_ERROR_DOMAINS = [
33
+ 'boundary',
34
+ 'document',
35
+ 'operation',
36
+ 'lifecycle',
37
+ 'snapshot',
38
+ 'transport',
39
+ ] as const;
40
+
41
+ /**
42
+ * Which subsystem raised a failure:
43
+ *
44
+ * - `boundary` — the value never reached the engine (bad config, oversized input).
45
+ * - `document` — the document or schema was rejected.
46
+ * - `operation` — a mutation could not be applied (stale revision, invalid position).
47
+ * - `lifecycle` — the session was destroyed or is being destroyed.
48
+ * - `snapshot` — a room snapshot could not be exported or restored.
49
+ * - `transport` — collaboration transport failure.
50
+ */
51
+ export type NativeEditorErrorDomain = (typeof NATIVE_EDITOR_ERROR_DOMAINS)[number];
52
+
53
+ /** Codes carried by `operation`-domain failures. */
54
+ export const NATIVE_EDITOR_OPERATION_ERROR_CODES = [
55
+ 'ENGINE_NOT_READY',
56
+ 'REVISION_MISMATCH',
57
+ 'POSITION_INVALID',
58
+ 'TRANSACTION_INVALID',
59
+ 'OPERATION_INVALID',
60
+ 'OPERATION_LIMIT_EXCEEDED',
61
+ 'OPERATION_RESOURCE_EXHAUSTED',
62
+ 'DOCUMENT_INVALID',
63
+ 'DOCUMENT_LIMIT_EXCEEDED',
64
+ 'ENGINE_INVARIANT_FAILED',
65
+ ] as const;
66
+
67
+ /**
68
+ * A failure record from the native boundary, normalized for JavaScript. It is
69
+ * carried on every {@link NativeEditorErrorBase}; the numeric fields stay
70
+ * decimal strings because they span the full Rust `u64` range.
71
+ */
72
+ export interface NativeEditorError {
73
+ domain: NativeEditorErrorDomain;
74
+ code: NativeEditorBoundaryErrorCode;
75
+ message: string;
76
+ /** Identity of the request that failed. */
77
+ requestId: string | null;
78
+ /** Index of the failing operation within a multi-operation transaction. */
79
+ operationIndex: string | null;
80
+ /** The bound that was exceeded, for limit failures. */
81
+ limit: string | null;
82
+ /** The value that exceeded it. */
83
+ actual: string | null;
84
+ /** Code-specific context, e.g. `expectedRevision`/`actualRevision` for `REVISION_MISMATCH`. */
85
+ details: Record<string, unknown> | null;
86
+ }
87
+
88
+ /**
89
+ * A value rejected before it reached the engine — an out-of-range resource
90
+ * limit, an invalid image policy, an oversized input. Thrown synchronously by
91
+ * the validating helpers in this package.
92
+ */
93
+ export class NativeEditorBoundaryError extends Error {
94
+ constructor(
95
+ readonly code: NativeEditorBoundaryErrorCode,
96
+ message: string,
97
+ readonly limit?: number,
98
+ readonly actual?: number,
99
+ readonly details?: Record<string, unknown>
100
+ ) {
101
+ super(message);
102
+ this.name = 'NativeEditorBoundaryError';
103
+ }
104
+ }
105
+
106
+ /**
107
+ * Turn a raw native error envelope into a {@link NativeEditorBoundaryError},
108
+ * or null when the value is not one.
109
+ */
110
+ export function parseNativeBoundaryError(value: unknown): NativeEditorBoundaryError | null {
111
+ const envelope = value as { error?: Record<string, unknown> };
112
+ const nativeError = envelope?.error;
113
+ const code = nativeError?.code;
114
+ if (typeof code !== 'string' || typeof nativeError?.message !== 'string') {
115
+ return null;
116
+ }
117
+ return new NativeEditorBoundaryError(
118
+ code,
119
+ nativeError.message,
120
+ typeof nativeError.limit === 'number' ? nativeError.limit : undefined,
121
+ typeof nativeError.actual === 'number' ? nativeError.actual : undefined,
122
+ nativeError.details != null && typeof nativeError.details === 'object'
123
+ ? (nativeError.details as Record<string, unknown>)
124
+ : undefined
125
+ );
126
+ }
127
+
128
+ function nullableCanonicalDecimal(value: unknown): string | null | undefined {
129
+ if (value == null) return null;
130
+ return normalizeNativeEditorV2U64(value) ?? undefined;
131
+ }
132
+
133
+ function parseDetails(
134
+ nativeError: Record<string, unknown>
135
+ ): Record<string, unknown> | null | undefined {
136
+ if (nativeError.details != null) {
137
+ if (typeof nativeError.details !== 'object' || Array.isArray(nativeError.details)) {
138
+ return undefined;
139
+ }
140
+ return nativeError.details as Record<string, unknown>;
141
+ }
142
+ if (nativeError.detailsJson == null) return null;
143
+ if (typeof nativeError.detailsJson !== 'string') return undefined;
144
+ try {
145
+ const details: unknown = JSON.parse(nativeError.detailsJson);
146
+ return details != null && typeof details === 'object' && !Array.isArray(details)
147
+ ? (details as Record<string, unknown>)
148
+ : undefined;
149
+ } catch {
150
+ return undefined;
151
+ }
152
+ }
153
+
154
+ function isCanonicalDecimalDetail(value: unknown): value is string {
155
+ return normalizeNativeEditorV2U64(value) != null;
156
+ }
157
+
158
+ /**
159
+ * Error details are otherwise forward-compatible, but known v2 structures
160
+ * carry u64 values and must not let JSON.parse silently admit rounded numbers.
161
+ */
162
+ function hasValidKnownDetails(code: string, details: Record<string, unknown> | null): boolean {
163
+ switch (code) {
164
+ case 'REVISION_MISMATCH':
165
+ return (
166
+ details != null &&
167
+ isCanonicalDecimalDetail(details.expectedRevision) &&
168
+ isCanonicalDecimalDetail(details.actualRevision)
169
+ );
170
+ case 'TRANSPORT_STALE_GENERATION':
171
+ return (
172
+ details != null &&
173
+ isCanonicalDecimalDetail(details.presentedGeneration) &&
174
+ (details.liveGeneration === null ||
175
+ isCanonicalDecimalDetail(details.liveGeneration))
176
+ );
177
+ default:
178
+ return true;
179
+ }
180
+ }
181
+
182
+ /** Normalize a raw FFI v2 error record without changing the legacy error parser contract. */
183
+ export function normalizeNativeEditorV2Error(value: unknown): NativeEditorError | null {
184
+ const envelope = value as { error?: unknown };
185
+ const nativeError = envelope?.error as Record<string, unknown> | undefined;
186
+ if (nativeError == null || typeof nativeError !== 'object') return null;
187
+
188
+ const { domain, code, message } = nativeError;
189
+ if (
190
+ typeof domain !== 'string' ||
191
+ !NATIVE_EDITOR_ERROR_DOMAINS.includes(domain as NativeEditorErrorDomain) ||
192
+ typeof code !== 'string' ||
193
+ typeof message !== 'string'
194
+ ) {
195
+ return null;
196
+ }
197
+
198
+ const requestId = nullableCanonicalDecimal(nativeError.requestId);
199
+ const operationIndex = nullableCanonicalDecimal(nativeError.operationIndex);
200
+ const limit = nullableCanonicalDecimal(nativeError.limit);
201
+ const actual = nullableCanonicalDecimal(nativeError.actual);
202
+ const details = parseDetails(nativeError);
203
+ if (
204
+ requestId === undefined ||
205
+ operationIndex === undefined ||
206
+ limit === undefined ||
207
+ actual === undefined ||
208
+ details === undefined ||
209
+ !hasValidKnownDetails(code, details)
210
+ ) {
211
+ return null;
212
+ }
213
+
214
+ return {
215
+ domain: domain as NativeEditorErrorDomain,
216
+ code,
217
+ message,
218
+ requestId,
219
+ operationIndex,
220
+ limit,
221
+ actual,
222
+ details,
223
+ };
224
+ }
225
+
226
+ // FFI v2 typed imperative error classes (additive; the legacy parsing path
227
+ // above is unchanged). Recoverable engine errors throw the structured
228
+ // per-domain class; ENGINE_INVARIANT_FAILED and lifecycle-destroyed states
229
+ // throw the distinct non-retryable class.
230
+
231
+ /** Codes that mark a failure as permanently non-retryable for this handle. */
232
+ export const NATIVE_EDITOR_NON_RETRYABLE_CODES = [
233
+ 'ENGINE_INVARIANT_FAILED',
234
+ 'ENGINE_DESTROYING',
235
+ 'ENGINE_DESTROYED',
236
+ ] as const;
237
+
238
+ export function isNativeEditorV2NonRetryableCode(code: string): boolean {
239
+ return (NATIVE_EDITOR_NON_RETRYABLE_CODES as readonly string[]).includes(code);
240
+ }
241
+
242
+ /** Base class for every typed error raised from a normalized FFI v2 error record. */
243
+ export class NativeEditorErrorBase extends Error {
244
+ readonly domain: NativeEditorErrorDomain;
245
+ readonly code: NativeEditorBoundaryErrorCode;
246
+ readonly requestId: string | null;
247
+ readonly operationIndex: string | null;
248
+ readonly limit: string | null;
249
+ readonly actual: string | null;
250
+ readonly details: Record<string, unknown> | null;
251
+
252
+ constructor(
253
+ readonly error: NativeEditorError,
254
+ name: string
255
+ ) {
256
+ super(error.message);
257
+ this.name = name;
258
+ this.domain = error.domain;
259
+ this.code = error.code;
260
+ this.requestId = error.requestId;
261
+ this.operationIndex = error.operationIndex;
262
+ this.limit = error.limit;
263
+ this.actual = error.actual;
264
+ this.details = error.details;
265
+ }
266
+ }
267
+
268
+ /** A value the engine refused to admit. */
269
+ export class NativeEditorEngineBoundaryError extends NativeEditorErrorBase {
270
+ constructor(error: NativeEditorError) {
271
+ super(error, 'NativeEditorEngineBoundaryError');
272
+ }
273
+ }
274
+
275
+ /** The document or schema was rejected. */
276
+ export class NativeEditorDocumentError extends NativeEditorErrorBase {
277
+ constructor(error: NativeEditorError) {
278
+ super(error, 'NativeEditorDocumentError');
279
+ }
280
+ }
281
+
282
+ /**
283
+ * A mutation could not be applied. `REVISION_MISMATCH` is the routine one:
284
+ * the document moved on, so re-read it and retry against the fresh revision.
285
+ */
286
+ export class NativeEditorOperationError extends NativeEditorErrorBase {
287
+ constructor(error: NativeEditorError) {
288
+ super(error, 'NativeEditorOperationError');
289
+ }
290
+ }
291
+
292
+ /** The session is not in a state that permits this call. */
293
+ export class NativeEditorLifecycleError extends NativeEditorErrorBase {
294
+ constructor(error: NativeEditorError) {
295
+ super(error, 'NativeEditorLifecycleError');
296
+ }
297
+ }
298
+
299
+ /** A room snapshot could not be exported or restored. */
300
+ export class NativeEditorSnapshotError extends NativeEditorErrorBase {
301
+ constructor(error: NativeEditorError) {
302
+ super(error, 'NativeEditorSnapshotError');
303
+ }
304
+ }
305
+
306
+ /** The collaboration transport failed. */
307
+ export class NativeEditorTransportError extends NativeEditorErrorBase {
308
+ constructor(error: NativeEditorError) {
309
+ super(error, 'NativeEditorTransportError');
310
+ }
311
+ }
312
+
313
+ /**
314
+ * Distinct class for failures that can never succeed on retry for this
315
+ * handle: ENGINE_INVARIANT_FAILED and the lifecycle-destroyed states
316
+ * (ENGINE_DESTROYING / ENGINE_DESTROYED).
317
+ */
318
+ export class NativeEditorNonRetryableError extends NativeEditorErrorBase {
319
+ constructor(error: NativeEditorError) {
320
+ super(error, 'NativeEditorNonRetryableError');
321
+ }
322
+ }
323
+
324
+ const NATIVE_EDITOR_V2_DOMAIN_ERROR_CLASSES: Record<
325
+ NativeEditorErrorDomain,
326
+ new (error: NativeEditorError) => NativeEditorErrorBase
327
+ > = {
328
+ boundary: NativeEditorEngineBoundaryError,
329
+ document: NativeEditorDocumentError,
330
+ operation: NativeEditorOperationError,
331
+ lifecycle: NativeEditorLifecycleError,
332
+ snapshot: NativeEditorSnapshotError,
333
+ transport: NativeEditorTransportError,
334
+ };
335
+
336
+ /** Map a normalized FFI v2 error record to its typed imperative exception. */
337
+ export function nativeEditorV2ErrorToException(
338
+ error: NativeEditorError
339
+ ): NativeEditorErrorBase {
340
+ if (isNativeEditorV2NonRetryableCode(error.code)) {
341
+ return new NativeEditorNonRetryableError(error);
342
+ }
343
+ const ErrorClass = NATIVE_EDITOR_V2_DOMAIN_ERROR_CLASSES[error.domain];
344
+ return new ErrorClass(error);
345
+ }
@@ -0,0 +1,93 @@
1
+ export {
2
+ type Selection,
3
+ type NativeEditorLocalAwarenessSelection,
4
+ type NativeEditorLocalAwarenessIntent,
5
+ type ListContext,
6
+ type RenderMarkWithAttrs,
7
+ type RenderMark,
8
+ type RenderElement,
9
+ type RenderBlocksPatch,
10
+ type ActiveState,
11
+ type HistoryState,
12
+ type ReadonlyActiveState,
13
+ type NativeEditorAtomicRenderSnapshot,
14
+ type EditorUpdate,
15
+ type ContentSnapshot,
16
+ type DocumentJSON,
17
+ type CollaborationPeer,
18
+ type CommandBlockedReason,
19
+ type CommandBlockedInfo,
20
+ type NativeEditorHistoryMode,
21
+ type NativeEditorSnapshotMetadata,
22
+ type NativeEditorRoomSnapshot,
23
+ type NativeEditorInitialization,
24
+ type NativeEditorCreateConfig,
25
+ type NativeEditorInputRequest,
26
+ type NativeEditorCommandRequest,
27
+ type NativeEditorLocalApiRequest,
28
+ type NativeEditorOffsetKind,
29
+ type NativeEditorPositionAffinity,
30
+ type NativeEditorPositionEnvelope,
31
+ type NativeEditorSelectionEnvelope,
32
+ type NativeEditorSelectionRequest,
33
+ type NativeEditorReplaceDocumentRequest,
34
+ } from './NativeEditorTypes';
35
+ export {
36
+ _resetNativeModuleCache,
37
+ type NativeEditorModule,
38
+ type NativeEditorResult,
39
+ } from './NativeEditorNativeModule';
40
+ export {
41
+ normalizeNativeEditorV2Result,
42
+ parseNativeEditorV2JsonValue,
43
+ normalizeNativeEditorV2Bytes,
44
+ normalizeNativeEditorV2Unit,
45
+ normalizeNativeEditorV2DecimalId,
46
+ requireNativeEditorV2U32,
47
+ type NativeEditorDocumentState,
48
+ type NativeEditorTransportState,
49
+ type NativeEditorRenderState,
50
+ type NativeEditorDocumentOrigin,
51
+ type NativeEditorState,
52
+ normalizeNativeEditorV2StateValue,
53
+ type NativeEditorMutationOutcome,
54
+ normalizeNativeEditorV2MutationOutcomeValue,
55
+ type NativeEditorCommitInfo,
56
+ normalizeNativeEditorV2CommitValue,
57
+ normalizeNativeEditorV2ChangedValue,
58
+ normalizeNativeEditorV2HtmlValue,
59
+ normalizeNativeEditorV2PeersValue,
60
+ unwrapNativeEditorV2Result,
61
+ } from './NativeEditorResultNormalization';
62
+ export { validEditorMentionTheme } from './EditorMentionThemeValidation';
63
+ export {
64
+ normalizeNativeEditorV2RenderUpdateValue,
65
+ normalizeNativeEditorV2DocumentJsonValue,
66
+ normalizeNativeEditorV2ContentSnapshotValue,
67
+ type NativeEditorSnapshotExport,
68
+ normalizeNativeEditorV2SnapshotExportValue,
69
+ normalizeNativeEditorV2CreateValue,
70
+ } from './NativeEditorRenderNormalization';
71
+ export {
72
+ type NativeEditorPeerInfo,
73
+ type NativeCollaborationProtocolFrame,
74
+ type NativeCollaborationProtocolAdapterAction,
75
+ type NativeCollaborationProtocolAdapterResult,
76
+ type NativeCollaborationProtocolAdapterContext,
77
+ type NativeCollaborationProtocolAdapter,
78
+ type NativeCollaborationTransportConfig,
79
+ type NativeCollaborationTransportDiagnostics,
80
+ type NativeCollaborationTransportStateEvent,
81
+ type NativeCollaborationTransportErrorEvent,
82
+ type NativeCollaborationProtocolAdapterEvent,
83
+ type NativeCollaborationTransportEvent,
84
+ normalizeNativeCollaborationTransportEvent,
85
+ } from './NativeEditorCollaborationTransport';
86
+ export { createNativeEditorLocalAwarenessSelection } from './NativeEditorLocalAwareness';
87
+ export { NativeEditorDocumentBridge } from './NativeEditorDocumentBridge';
88
+ export {
89
+ type NativeEditorDocumentHandle,
90
+ _getNativeEditorDocumentHandleDescriptor,
91
+ _assertNativeEditorDocumentHandle,
92
+ createNativeEditorDocumentHandle,
93
+ } from './NativeEditorDocumentHandle';