@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,72 @@
1
+ import { NativeEditorErrorBase } from './NativeEditorBoundaryError';
2
+ import { type NativeCollaborationTransportConfig, type NativeCollaborationTransportEvent } from './NativeEditorCollaborationTransport';
3
+ import { type NativeEditorState, type NativeEditorCommitInfo, type NativeEditorMutationOutcome } from './NativeEditorResultNormalization';
4
+ import { type DocumentJSON, type ContentSnapshot, type NativeEditorAtomicRenderSnapshot, type NativeEditorReplaceDocumentRequest, type NativeEditorInputRequest, type NativeEditorCommandRequest, type NativeEditorLocalApiRequest, type NativeEditorSelectionRequest, type NativeEditorSnapshotMetadata, type NativeEditorLocalAwarenessIntent } from './NativeEditorTypes';
5
+ import { type NativeEditorSnapshotExport } from './NativeEditorRenderNormalization';
6
+ /**
7
+ * Typed imperative v2 bridge bound to one decimal-string editor id. Every
8
+ * entry normalizes the frozen result record, keeps revisions as decimal
9
+ * strings, and throws typed errors; results that arrive for a destroyed
10
+ * handle (including re-entrant destroy races) are classified non-retryable.
11
+ */
12
+ export declare class NativeEditorDocumentBridge {
13
+ private readonly _editorId;
14
+ private _destroyed;
15
+ /** @internal Reset intent waiting for the interactive view handoff. */
16
+ _pendingViewReset: {
17
+ json: string;
18
+ } | null;
19
+ private _nextRequestId;
20
+ private readonly _errorListeners;
21
+ private _collaborationProtocolAdapter;
22
+ private _collaborationProtocolAdapterSubscription;
23
+ /** @internal Created by createNativeEditorDocumentHandle. */
24
+ constructor(editorId: string);
25
+ get editorId(): string;
26
+ get isDestroyed(): boolean;
27
+ private assertAlive;
28
+ private callV2;
29
+ private nextRequestId;
30
+ /**
31
+ * Serialize a request envelope with canonical decimal-string u64 fields.
32
+ */
33
+ private buildEnvelopeJson;
34
+ /** Destroy the session. Repeated destroy is safe. */
35
+ destroy(): void;
36
+ /** Subscribe to autonomous native failures; returns the unsubscribe. */
37
+ addErrorListener(listener: (error: NativeEditorErrorBase) => void): () => void;
38
+ /**
39
+ * @internal Route one autonomous native failure (input/accessibility) to
40
+ * the error listeners exactly once. Accepts a bare error record or the
41
+ * frozen envelope form; malformed payloads surface as a non-retryable
42
+ * contract violation so the view stays usable.
43
+ */
44
+ _emitAutonomousError(raw: unknown): void;
45
+ getState(): NativeEditorState;
46
+ getDocumentJson(): DocumentJSON;
47
+ getDocumentHtml(): string;
48
+ getContentSnapshot(): ContentSnapshot;
49
+ /**
50
+ * Fetch the complete typed, immutable render snapshot a bound native view
51
+ * applies after a JS-driven engine change. Without a scalar mirror, its
52
+ * selection is the engine-authoritative selection; a mirror resolves only
53
+ * this snapshot's selection into document and scalar positions.
54
+ */
55
+ renderUpdate(mirrorScalarSelection?: {
56
+ anchor: number;
57
+ head: number;
58
+ }): NativeEditorAtomicRenderSnapshot;
59
+ replaceDocument(request: NativeEditorReplaceDocumentRequest): NativeEditorCommitInfo;
60
+ applyInput(request: NativeEditorInputRequest): NativeEditorMutationOutcome;
61
+ applyCommand(request: NativeEditorCommandRequest): NativeEditorMutationOutcome;
62
+ applyLocalApi(request: NativeEditorLocalApiRequest): NativeEditorMutationOutcome;
63
+ setSelection(request: NativeEditorSelectionRequest): NativeEditorMutationOutcome;
64
+ undo(): boolean;
65
+ redo(): boolean;
66
+ snapshotExport(): NativeEditorSnapshotExport;
67
+ snapshotRestore(metadata: NativeEditorSnapshotMetadata, encodedState: Uint8Array): NativeEditorCommitInfo;
68
+ configureCollaborationTransport(config: NativeCollaborationTransportConfig | null): void;
69
+ private handleCollaborationProtocolAdapterEvent;
70
+ setLocalAwareness(intent: NativeEditorLocalAwarenessIntent | null): void;
71
+ addCollaborationTransportListener(listener: (event: NativeCollaborationTransportEvent) => void): () => void;
72
+ }
@@ -0,0 +1,305 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NativeEditorDocumentBridge = void 0;
4
+ const NativeEditorBoundaryError_1 = require("./NativeEditorBoundaryError");
5
+ const NativeEditorCollaborationTransport_1 = require("./NativeEditorCollaborationTransport");
6
+ const NativeEditorResultNormalization_1 = require("./NativeEditorResultNormalization");
7
+ const NativeEditorNativeModule_1 = require("./NativeEditorNativeModule");
8
+ const NativeEditorRenderNormalization_1 = require("./NativeEditorRenderNormalization");
9
+ const NativeEditorLocalAwareness_1 = require("./NativeEditorLocalAwareness");
10
+ /**
11
+ * Typed imperative v2 bridge bound to one decimal-string editor id. Every
12
+ * entry normalizes the frozen result record, keeps revisions as decimal
13
+ * strings, and throws typed errors; results that arrive for a destroyed
14
+ * handle (including re-entrant destroy races) are classified non-retryable.
15
+ */
16
+ class NativeEditorDocumentBridge {
17
+ /** @internal Created by createNativeEditorDocumentHandle. */
18
+ constructor(editorId) {
19
+ this._destroyed = false;
20
+ /** @internal Reset intent waiting for the interactive view handoff. */
21
+ this._pendingViewReset = null;
22
+ this._nextRequestId = 0n;
23
+ this._errorListeners = new Set();
24
+ this._collaborationProtocolAdapter = null;
25
+ this._collaborationProtocolAdapterSubscription = null;
26
+ this._editorId = editorId;
27
+ }
28
+ get editorId() {
29
+ return this._editorId;
30
+ }
31
+ get isDestroyed() {
32
+ return this._destroyed;
33
+ }
34
+ assertAlive() {
35
+ if (this._destroyed)
36
+ throw (0, NativeEditorResultNormalization_1.destroyedHandleError)();
37
+ }
38
+ callV2(invoke, normalizeValue) {
39
+ this.assertAlive();
40
+ const raw = invoke();
41
+ // A re-entrant destroy racing the native call makes any result
42
+ // arriving now a result for a destroyed handle: non-retryable.
43
+ if (this._destroyed)
44
+ throw (0, NativeEditorResultNormalization_1.destroyedHandleError)();
45
+ return (0, NativeEditorResultNormalization_1.unwrapNativeEditorV2Result)(raw, normalizeValue);
46
+ }
47
+ nextRequestId() {
48
+ if (this._nextRequestId >= 18446744073709551615n) {
49
+ throw (0, NativeEditorResultNormalization_1.invalidV2RequestError)('NativeEditorBridge: v2 request id exhausted');
50
+ }
51
+ this._nextRequestId += 1n;
52
+ return this._nextRequestId.toString();
53
+ }
54
+ /**
55
+ * Serialize a request envelope with canonical decimal-string u64 fields.
56
+ */
57
+ buildEnvelopeJson(payload, baseDocumentRevision) {
58
+ const parts = [
59
+ `"version":${NativeEditorNativeModule_1.V2_ENVELOPE_VERSION}`,
60
+ `"requestId":"${this.nextRequestId()}"`,
61
+ ];
62
+ if (baseDocumentRevision !== undefined) {
63
+ const digits = (0, NativeEditorResultNormalization_1.requireV2DecimalId)(baseDocumentRevision, 'baseDocumentRevision');
64
+ parts.push(`"baseDocumentRevision":"${digits}"`);
65
+ }
66
+ const payloadJson = JSON.stringify(payload);
67
+ const inner = payloadJson.slice(1, payloadJson.length - 1);
68
+ if (inner.length > 0)
69
+ parts.push(inner);
70
+ return `{${parts.join(',')}}`;
71
+ }
72
+ /** Destroy the session. Repeated destroy is safe. */
73
+ destroy() {
74
+ if (this._destroyed)
75
+ return;
76
+ try {
77
+ (0, NativeEditorResultNormalization_1.unwrapNativeEditorV2Result)((0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2Destroy', this._editorId), NativeEditorResultNormalization_1.normalizeNativeEditorV2Unit);
78
+ }
79
+ catch (error) {
80
+ // An already-destroyed native session still satisfies the
81
+ // caller's goal; every other failure is reported.
82
+ if (error instanceof NativeEditorBoundaryError_1.NativeEditorNonRetryableError &&
83
+ (error.code === 'ENGINE_DESTROYED' || error.code === 'ENGINE_DESTROYING')) {
84
+ // An already-destroyed native session still commits the
85
+ // local teardown below.
86
+ }
87
+ else {
88
+ throw error;
89
+ }
90
+ }
91
+ this._destroyed = true;
92
+ this._collaborationProtocolAdapter = null;
93
+ this._collaborationProtocolAdapterSubscription?.remove();
94
+ this._collaborationProtocolAdapterSubscription = null;
95
+ this._errorListeners.clear();
96
+ }
97
+ /** Subscribe to autonomous native failures; returns the unsubscribe. */
98
+ addErrorListener(listener) {
99
+ this._errorListeners.add(listener);
100
+ return () => {
101
+ this._errorListeners.delete(listener);
102
+ };
103
+ }
104
+ /**
105
+ * @internal Route one autonomous native failure (input/accessibility) to
106
+ * the error listeners exactly once. Accepts a bare error record or the
107
+ * frozen envelope form; malformed payloads surface as a non-retryable
108
+ * contract violation so the view stays usable.
109
+ */
110
+ _emitAutonomousError(raw) {
111
+ if (this._destroyed)
112
+ return;
113
+ const candidate = (0, NativeEditorResultNormalization_1.isPlainRecord)(raw) && 'error' in raw ? raw : { error: raw };
114
+ const normalized = (0, NativeEditorBoundaryError_1.normalizeNativeEditorV2Error)(candidate);
115
+ const exception = normalized == null
116
+ ? (0, NativeEditorResultNormalization_1.invalidV2ResultError)()
117
+ : (0, NativeEditorBoundaryError_1.nativeEditorV2ErrorToException)(normalized);
118
+ for (const listener of this._errorListeners) {
119
+ listener(exception);
120
+ }
121
+ }
122
+ getState() {
123
+ return this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2GetState', this._editorId), NativeEditorResultNormalization_1.normalizeNativeEditorV2StateValue);
124
+ }
125
+ getDocumentJson() {
126
+ return this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2GetDocumentJson', this._editorId), NativeEditorRenderNormalization_1.normalizeNativeEditorV2DocumentJsonValue);
127
+ }
128
+ getDocumentHtml() {
129
+ return this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2GetDocumentHtml', this._editorId), NativeEditorResultNormalization_1.normalizeNativeEditorV2HtmlValue);
130
+ }
131
+ getContentSnapshot() {
132
+ return this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2GetContentSnapshot', this._editorId), NativeEditorRenderNormalization_1.normalizeNativeEditorV2ContentSnapshotValue);
133
+ }
134
+ /**
135
+ * Fetch the complete typed, immutable render snapshot a bound native view
136
+ * applies after a JS-driven engine change. Without a scalar mirror, its
137
+ * selection is the engine-authoritative selection; a mirror resolves only
138
+ * this snapshot's selection into document and scalar positions.
139
+ */
140
+ renderUpdate(mirrorScalarSelection) {
141
+ this.assertAlive();
142
+ const mirrorAnchor = mirrorScalarSelection?.anchor ?? null;
143
+ const mirrorHead = mirrorScalarSelection?.head ?? null;
144
+ if ((mirrorAnchor == null) !== (mirrorHead == null)) {
145
+ throw (0, NativeEditorResultNormalization_1.invalidV2RequestError)('NativeEditorBridge: render update mirror requires both scalar anchor and head');
146
+ }
147
+ if (mirrorAnchor != null)
148
+ (0, NativeEditorResultNormalization_1.requireNativeEditorV2U32)(mirrorAnchor, 'mirrorScalarAnchor');
149
+ if (mirrorHead != null)
150
+ (0, NativeEditorResultNormalization_1.requireNativeEditorV2U32)(mirrorHead, 'mirrorScalarHead');
151
+ return this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2RenderUpdate', this._editorId, mirrorAnchor, mirrorHead), NativeEditorRenderNormalization_1.normalizeNativeEditorV2RenderUpdateValue);
152
+ }
153
+ replaceDocument(request) {
154
+ this.assertAlive();
155
+ const payload = {};
156
+ if (request.setJson !== undefined)
157
+ payload.setJson = request.setJson;
158
+ if (request.setHtml !== undefined)
159
+ payload.setHtml = request.setHtml;
160
+ payload.history = request.history;
161
+ const requestJson = this.buildEnvelopeJson(payload);
162
+ const result = this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2ReplaceDocument', this._editorId, requestJson), NativeEditorResultNormalization_1.normalizeNativeEditorV2CommitValue);
163
+ if (request.history === 'resetAndClear' && 'documentRevision' in result) {
164
+ this._pendingViewReset = {
165
+ json: JSON.stringify({ ...payload, documentRevision: result.documentRevision }),
166
+ };
167
+ }
168
+ else {
169
+ this._pendingViewReset = null;
170
+ }
171
+ return result;
172
+ }
173
+ applyInput(request) {
174
+ this.assertAlive();
175
+ const requestJson = this.buildEnvelopeJson({ text: request.text }, request.baseDocumentRevision);
176
+ return this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2ApplyInput', this._editorId, requestJson), NativeEditorResultNormalization_1.normalizeNativeEditorV2MutationOutcomeValue);
177
+ }
178
+ applyCommand(request) {
179
+ this.assertAlive();
180
+ const requestJson = this.buildEnvelopeJson({ command: request.command }, request.baseDocumentRevision);
181
+ return this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2ApplyCommand', this._editorId, requestJson), NativeEditorResultNormalization_1.normalizeNativeEditorV2MutationOutcomeValue);
182
+ }
183
+ applyLocalApi(request) {
184
+ this.assertAlive();
185
+ const payload = {};
186
+ if (request.setJson !== undefined)
187
+ payload.setJson = request.setJson;
188
+ if (request.setHtml !== undefined)
189
+ payload.setHtml = request.setHtml;
190
+ payload.history = request.history;
191
+ const requestJson = this.buildEnvelopeJson(payload, request.baseDocumentRevision);
192
+ const result = this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2ApplyLocalApi', this._editorId, requestJson), NativeEditorResultNormalization_1.normalizeNativeEditorV2MutationOutcomeValue);
193
+ if (request.history === 'resetAndClear' && 'documentRevision' in result) {
194
+ this._pendingViewReset = {
195
+ json: JSON.stringify({ ...payload, documentRevision: result.documentRevision }),
196
+ };
197
+ }
198
+ else {
199
+ this._pendingViewReset = null;
200
+ }
201
+ return result;
202
+ }
203
+ setSelection(request) {
204
+ this.assertAlive();
205
+ const requestJson = this.buildEnvelopeJson({ selection: request.selection }, request.baseDocumentRevision);
206
+ return this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2SetSelection', this._editorId, requestJson), NativeEditorResultNormalization_1.normalizeNativeEditorV2MutationOutcomeValue);
207
+ }
208
+ undo() {
209
+ this.assertAlive();
210
+ const requestJson = this.buildEnvelopeJson({});
211
+ return this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2Undo', this._editorId, requestJson), NativeEditorResultNormalization_1.normalizeNativeEditorV2ChangedValue);
212
+ }
213
+ redo() {
214
+ this.assertAlive();
215
+ const requestJson = this.buildEnvelopeJson({});
216
+ return this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2Redo', this._editorId, requestJson), NativeEditorResultNormalization_1.normalizeNativeEditorV2ChangedValue);
217
+ }
218
+ snapshotExport() {
219
+ return this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2SnapshotExport', this._editorId), NativeEditorRenderNormalization_1.normalizeNativeEditorV2SnapshotExportValue);
220
+ }
221
+ snapshotRestore(metadata, encodedState) {
222
+ this.assertAlive();
223
+ const bytes = (0, NativeEditorResultNormalization_1.requireV2Bytes)(encodedState, 'snapshot encodedState');
224
+ return this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2SnapshotRestore', this._editorId, JSON.stringify(metadata), bytes), NativeEditorResultNormalization_1.normalizeNativeEditorV2CommitValue);
225
+ }
226
+ configureCollaborationTransport(config) {
227
+ this.assertAlive();
228
+ const wireConfig = config === null ? null : (0, NativeEditorCollaborationTransport_1.collaborationTransportWireConfig)(config);
229
+ const previousAdapter = this._collaborationProtocolAdapter;
230
+ const nextAdapter = config?.protocolAdapter ?? null;
231
+ if (nextAdapter !== null && this._collaborationProtocolAdapterSubscription === null) {
232
+ this._collaborationProtocolAdapterSubscription = (0, NativeEditorNativeModule_1.getNativeModule)().addListener('onCollaborationTransportEvent', (rawEvent) => this.handleCollaborationProtocolAdapterEvent(rawEvent));
233
+ }
234
+ this._collaborationProtocolAdapter = nextAdapter;
235
+ try {
236
+ this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2CollaborationConfigureTransport', this._editorId, wireConfig === null ? null : JSON.stringify(wireConfig)), NativeEditorResultNormalization_1.normalizeNativeEditorV2Unit);
237
+ }
238
+ catch (error) {
239
+ this._collaborationProtocolAdapter = previousAdapter;
240
+ if (previousAdapter === null &&
241
+ this._collaborationProtocolAdapterSubscription !== null) {
242
+ this._collaborationProtocolAdapterSubscription.remove();
243
+ this._collaborationProtocolAdapterSubscription = null;
244
+ }
245
+ throw error;
246
+ }
247
+ if (nextAdapter === null && this._collaborationProtocolAdapterSubscription !== null) {
248
+ this._collaborationProtocolAdapterSubscription.remove();
249
+ this._collaborationProtocolAdapterSubscription = null;
250
+ }
251
+ }
252
+ handleCollaborationProtocolAdapterEvent(rawEvent) {
253
+ if (this._destroyed || this._collaborationProtocolAdapter === null)
254
+ return;
255
+ const event = (0, NativeEditorCollaborationTransport_1.normalizeNativeCollaborationTransportEvent)(rawEvent);
256
+ if (event?.editorId !== this._editorId || event.kind !== 'protocolAdapter') {
257
+ return;
258
+ }
259
+ const adapter = this._collaborationProtocolAdapter;
260
+ const context = {
261
+ attemptId: event.attemptId,
262
+ generation: event.generation,
263
+ negotiatedProtocol: event.negotiatedProtocol,
264
+ };
265
+ const callback = event.phase === 'open'
266
+ ? () => adapter.onOpen(context)
267
+ : () => adapter.onMessage(context, event.frame);
268
+ void Promise.resolve()
269
+ .then(callback)
270
+ .then((result) => (0, NativeEditorCollaborationTransport_1.serializeCollaborationProtocolAdapterResult)(result))
271
+ .catch(() => '{"action":"reject"}')
272
+ .then((responseJson) => {
273
+ if (this._destroyed)
274
+ return;
275
+ try {
276
+ this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2CollaborationResolveProtocolAdapter', this._editorId, event.attemptId, event.eventId, responseJson), NativeEditorResultNormalization_1.normalizeNativeEditorV2Unit);
277
+ }
278
+ catch {
279
+ // Native treats stale attempt responses as no-ops. A live
280
+ // resolution failure is surfaced by its transport event;
281
+ // adapter payloads and callback errors are never logged.
282
+ }
283
+ });
284
+ }
285
+ setLocalAwareness(intent) {
286
+ this.assertAlive();
287
+ const awarenessJson = intent === null
288
+ ? 'null'
289
+ : (0, NativeEditorLocalAwareness_1.serializeLocalAwarenessIntent)((0, NativeEditorLocalAwareness_1.validateLocalAwarenessIntent)(intent));
290
+ this.callV2(() => (0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2CollaborationSetAwareness', this._editorId, awarenessJson), NativeEditorResultNormalization_1.normalizeNativeEditorV2Unit);
291
+ }
292
+ addCollaborationTransportListener(listener) {
293
+ this.assertAlive();
294
+ const subscription = (0, NativeEditorNativeModule_1.getNativeModule)().addListener('onCollaborationTransportEvent', (rawEvent) => {
295
+ if (this._destroyed)
296
+ return;
297
+ const event = (0, NativeEditorCollaborationTransport_1.normalizeNativeCollaborationTransportEvent)(rawEvent);
298
+ if (event?.editorId === this._editorId) {
299
+ listener(event);
300
+ }
301
+ });
302
+ return () => subscription.remove();
303
+ }
304
+ }
305
+ exports.NativeEditorDocumentBridge = NativeEditorDocumentBridge;
@@ -0,0 +1,70 @@
1
+ import { type ResolvedDocumentSchema } from './schemas';
2
+ import { NativeEditorErrorBase } from './NativeEditorBoundaryError';
3
+ import { NativeEditorDocumentBridge } from './NativeEditorDocumentBridge';
4
+ import { type NativeCollaborationTransportConfig, type NativeCollaborationTransportEvent } from './NativeEditorCollaborationTransport';
5
+ import { type NativeEditorLocalAwarenessIntent, type NativeEditorCreateConfig } from './NativeEditorTypes';
6
+ export declare const NATIVE_EDITOR_DOCUMENT_HANDLE_BRAND: unique symbol;
7
+ export declare const NATIVE_EDITOR_DOCUMENT_HANDLE_TOKEN: Readonly<{}>;
8
+ export declare const AUTHENTIC_NATIVE_EDITOR_DOCUMENT_HANDLES: WeakSet<object>;
9
+ export declare const NATIVE_EDITOR_DOCUMENT_HANDLE_DESCRIPTORS: WeakMap<object, ResolvedDocumentSchema>;
10
+ /**
11
+ * One native document session, shared by everything that touches the
12
+ * document: the editor view, the headless `useNativeEditorDocument` binding,
13
+ * and the collaboration controller. Obtain one from
14
+ * {@link createNativeEditorDocumentHandle} — it cannot be constructed
15
+ * directly — and `destroy()` it when its owner unmounts.
16
+ */
17
+ export interface NativeEditorDocumentHandle {
18
+ readonly [NATIVE_EDITOR_DOCUMENT_HANDLE_BRAND]: true;
19
+ /** Decimal-string session id, shared with the native view. */
20
+ readonly editorId: string;
21
+ /** Typed imperative access to the engine. The React APIs use this for you. */
22
+ readonly bridge: NativeEditorDocumentBridge;
23
+ readonly isDestroyed: boolean;
24
+ /** Release the native session. Every later call fails as non-retryable. */
25
+ destroy(): void;
26
+ /** Observe engine failures raised outside a caller's own call. Returns an unsubscribe function. */
27
+ addErrorListener(listener: (error: NativeEditorErrorBase) => void): () => void;
28
+ /** Point the native transport at a server, or pass null to detach. */
29
+ configureCollaborationTransport(config: NativeCollaborationTransportConfig | null): void;
30
+ /** Publish local presence, or pass null to withdraw it. */
31
+ setLocalAwareness(intent: NativeEditorLocalAwarenessIntent | null): void;
32
+ /** Observe transport state, errors, and protocol-adapter requests. Returns an unsubscribe function. */
33
+ addCollaborationTransportListener(listener: (event: NativeCollaborationTransportEvent) => void): () => void;
34
+ }
35
+ export declare class NativeEditorDocumentHandleImpl implements NativeEditorDocumentHandle {
36
+ readonly editorId: string;
37
+ readonly bridge: NativeEditorDocumentBridge;
38
+ readonly [NATIVE_EDITOR_DOCUMENT_HANDLE_BRAND]: true;
39
+ constructor(token: typeof NATIVE_EDITOR_DOCUMENT_HANDLE_TOKEN, editorId: string, bridge: NativeEditorDocumentBridge, documentDescriptor: ResolvedDocumentSchema);
40
+ get isDestroyed(): boolean;
41
+ destroy(): void;
42
+ addErrorListener(listener: (error: NativeEditorErrorBase) => void): () => void;
43
+ configureCollaborationTransport(config: NativeCollaborationTransportConfig | null): void;
44
+ setLocalAwareness(intent: NativeEditorLocalAwarenessIntent | null): void;
45
+ addCollaborationTransportListener(listener: (event: NativeCollaborationTransportEvent) => void): () => void;
46
+ }
47
+ /** @internal Handle-owned schema metadata for source-module view bindings. */
48
+ export declare function _getNativeEditorDocumentHandleDescriptor(handle: NativeEditorDocumentHandle): ResolvedDocumentSchema;
49
+ /** @internal Source-module boundary assertion; intentionally absent from the package index. */
50
+ export declare function _assertNativeEditorDocumentHandle(value: unknown): asserts value is NativeEditorDocumentHandle;
51
+ /**
52
+ * Create the native document session every other API binds to. Create it once
53
+ * per document — `useMemo`, not on each render — and destroy it when its
54
+ * owner unmounts.
55
+ *
56
+ * @throws NativeEditorErrorBase when the config is rejected: a malformed
57
+ * schema, an out-of-range limit, or content the engine cannot parse.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const documentHandle = useMemo(
62
+ * () => createNativeEditorDocumentHandle({
63
+ * initialization: { type: 'localHtml', html: '<p>Hello world</p>' },
64
+ * }),
65
+ * []
66
+ * );
67
+ * useEffect(() => () => documentHandle.destroy(), [documentHandle]);
68
+ * ```
69
+ */
70
+ export declare function createNativeEditorDocumentHandle(config: NativeEditorCreateConfig): NativeEditorDocumentHandle;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NativeEditorDocumentHandleImpl = exports.NATIVE_EDITOR_DOCUMENT_HANDLE_DESCRIPTORS = exports.AUTHENTIC_NATIVE_EDITOR_DOCUMENT_HANDLES = exports.NATIVE_EDITOR_DOCUMENT_HANDLE_TOKEN = exports.NATIVE_EDITOR_DOCUMENT_HANDLE_BRAND = void 0;
5
+ exports._getNativeEditorDocumentHandleDescriptor = _getNativeEditorDocumentHandleDescriptor;
6
+ exports._assertNativeEditorDocumentHandle = _assertNativeEditorDocumentHandle;
7
+ exports.createNativeEditorDocumentHandle = createNativeEditorDocumentHandle;
8
+ const NativeEditorDocumentBridge_1 = require("./NativeEditorDocumentBridge");
9
+ const NativeEditorResultNormalization_1 = require("./NativeEditorResultNormalization");
10
+ const NativeEditorCreateConfig_1 = require("./NativeEditorCreateConfig");
11
+ const NativeEditorNativeModule_1 = require("./NativeEditorNativeModule");
12
+ const NativeEditorRenderNormalization_1 = require("./NativeEditorRenderNormalization");
13
+ exports.NATIVE_EDITOR_DOCUMENT_HANDLE_BRAND = Symbol('NativeEditorDocumentHandle.brand');
14
+ exports.NATIVE_EDITOR_DOCUMENT_HANDLE_TOKEN = Object.freeze({});
15
+ exports.AUTHENTIC_NATIVE_EDITOR_DOCUMENT_HANDLES = new WeakSet();
16
+ exports.NATIVE_EDITOR_DOCUMENT_HANDLE_DESCRIPTORS = new WeakMap();
17
+ class NativeEditorDocumentHandleImpl {
18
+ constructor(token, editorId, bridge, documentDescriptor) {
19
+ this.editorId = editorId;
20
+ this.bridge = bridge;
21
+ this[_a] = true;
22
+ if (token !== exports.NATIVE_EDITOR_DOCUMENT_HANDLE_TOKEN) {
23
+ throw (0, NativeEditorResultNormalization_1.invalidV2RequestError)('NativeEditorBridge: NativeEditorDocumentHandle cannot be constructed directly');
24
+ }
25
+ exports.AUTHENTIC_NATIVE_EDITOR_DOCUMENT_HANDLES.add(this);
26
+ exports.NATIVE_EDITOR_DOCUMENT_HANDLE_DESCRIPTORS.set(this, documentDescriptor);
27
+ }
28
+ get isDestroyed() {
29
+ return this.bridge.isDestroyed;
30
+ }
31
+ destroy() {
32
+ this.bridge.destroy();
33
+ }
34
+ addErrorListener(listener) {
35
+ return this.bridge.addErrorListener(listener);
36
+ }
37
+ configureCollaborationTransport(config) {
38
+ this.bridge.configureCollaborationTransport(config);
39
+ }
40
+ setLocalAwareness(intent) {
41
+ this.bridge.setLocalAwareness(intent);
42
+ }
43
+ addCollaborationTransportListener(listener) {
44
+ return this.bridge.addCollaborationTransportListener(listener);
45
+ }
46
+ }
47
+ exports.NativeEditorDocumentHandleImpl = NativeEditorDocumentHandleImpl;
48
+ _a = exports.NATIVE_EDITOR_DOCUMENT_HANDLE_BRAND;
49
+ /** @internal Handle-owned schema metadata for source-module view bindings. */
50
+ function _getNativeEditorDocumentHandleDescriptor(handle) {
51
+ _assertNativeEditorDocumentHandle(handle);
52
+ const documentDescriptor = exports.NATIVE_EDITOR_DOCUMENT_HANDLE_DESCRIPTORS.get(handle);
53
+ if (documentDescriptor === undefined) {
54
+ throw (0, NativeEditorResultNormalization_1.invalidV2RequestError)('NativeEditorBridge: authentic NativeEditorDocumentHandle has no document descriptor');
55
+ }
56
+ return documentDescriptor;
57
+ }
58
+ /** @internal Source-module boundary assertion; intentionally absent from the package index. */
59
+ function _assertNativeEditorDocumentHandle(value) {
60
+ if ((typeof value !== 'object' && typeof value !== 'function') ||
61
+ value === null ||
62
+ !exports.AUTHENTIC_NATIVE_EDITOR_DOCUMENT_HANDLES.has(value)) {
63
+ throw (0, NativeEditorResultNormalization_1.invalidV2RequestError)('NativeEditorBridge: expected an authentic NativeEditorDocumentHandle');
64
+ }
65
+ }
66
+ /**
67
+ * Create the native document session every other API binds to. Create it once
68
+ * per document — `useMemo`, not on each render — and destroy it when its
69
+ * owner unmounts.
70
+ *
71
+ * @throws NativeEditorErrorBase when the config is rejected: a malformed
72
+ * schema, an out-of-range limit, or content the engine cannot parse.
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * const documentHandle = useMemo(
77
+ * () => createNativeEditorDocumentHandle({
78
+ * initialization: { type: 'localHtml', html: '<p>Hello world</p>' },
79
+ * }),
80
+ * []
81
+ * );
82
+ * useEffect(() => () => documentHandle.destroy(), [documentHandle]);
83
+ * ```
84
+ */
85
+ function createNativeEditorDocumentHandle(config) {
86
+ const { configJson, snapshotState, documentDescriptor } = (0, NativeEditorCreateConfig_1.buildV2CreateRequest)(config);
87
+ const value = (0, NativeEditorResultNormalization_1.unwrapNativeEditorV2Result)((0, NativeEditorNativeModule_1.invokeNativeEditorV2)('editorV2Create', configJson, snapshotState), NativeEditorRenderNormalization_1.normalizeNativeEditorV2CreateValue);
88
+ return new NativeEditorDocumentHandleImpl(exports.NATIVE_EDITOR_DOCUMENT_HANDLE_TOKEN, value.editorId, new NativeEditorDocumentBridge_1.NativeEditorDocumentBridge(value.editorId), documentDescriptor);
89
+ }
@@ -0,0 +1,34 @@
1
+ import { type NativeEditorLocalAwarenessSelection } from './NativeEditorTypes';
2
+ export declare const LOCAL_AWARENESS_INTENT_KEYS: Set<string>;
3
+ export declare const LOCAL_AWARENESS_SELECTION_VALUES: WeakMap<object, Readonly<{
4
+ anchor: number;
5
+ head: number;
6
+ }>>;
7
+ export declare function invalidLocalAwarenessIntent(message?: string): never;
8
+ /**
9
+ * Create the only caller-owned local-awareness selection accepted at the
10
+ * JavaScript-to-native boundary. The private WeakMap makes provenance an API
11
+ * capability instead of a structural object-shape check.
12
+ */
13
+ export declare function createNativeEditorLocalAwarenessSelection(anchor: number, head: number): NativeEditorLocalAwarenessSelection;
14
+ export declare function isLocalAwarenessRecord(value: unknown): value is Record<string, unknown>;
15
+ export declare function localAwarenessOwnDataValue(record: Record<string, unknown>, key: string): unknown;
16
+ export declare function validateLocalAwarenessSelection(selection: unknown): {
17
+ anchor: number;
18
+ head: number;
19
+ };
20
+ /** Reject caller-owned sticky cursor data before a native call can occur. */
21
+ export declare function rejectReservedAwarenessCursor(value: unknown): void;
22
+ export declare function normalizeLocalAwarenessState(value: unknown): Record<string, unknown>;
23
+ export interface NativeEditorLocalAwarenessWireIntent {
24
+ state: Record<string, unknown>;
25
+ focused: boolean;
26
+ /** Absent retains the Rust-owned cursor; `null` clears it. */
27
+ selection?: {
28
+ type: 'text';
29
+ anchor: number;
30
+ head: number;
31
+ } | null;
32
+ }
33
+ export declare function validateLocalAwarenessIntent(intent: unknown): NativeEditorLocalAwarenessWireIntent;
34
+ export declare function serializeLocalAwarenessIntent(intent: NativeEditorLocalAwarenessWireIntent): string;