@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,21 @@
1
+ export { RichTextEditor, type RichTextEditorProps, type RichTextEditorRef, type RichTextEditorCaretRect, type RichTextEditorHeightBehavior, type RichTextEditorToolbarPlacement, type RichTextEditorValueJSONUpdateMode, type RichTextEditorAutoCapitalize, type RichTextEditorKeyboardType, type RichTextEditorAndroidInputOptions, type RichTextEditorFocusPreservingElement, type RichTextEditorFocusPreservingRef, type RichTextEditorFocusPreservingRefs, type RemoteSelectionDecoration, type LinkRequestContext, type ImageRequestContext, NativeRichTextEditor, type NativeRichTextEditorProps, type NativeRichTextEditorRef, type NativeRichTextEditorCaretRect, type NativeRichTextEditorHeightBehavior, type NativeRichTextEditorToolbarPlacement, type NativeRichTextEditorValueJSONUpdateMode, type NativeRichTextEditorAutoCapitalize, type NativeRichTextEditorKeyboardType, type NativeRichTextEditorAndroidInputOptions, type NativeRichTextEditorFocusPreservingElement, type NativeRichTextEditorFocusPreservingRef, type NativeRichTextEditorFocusPreservingRefs, } from './NativeRichTextEditor';
2
+ export type { ExternalTextCompositionEndCause, ExternalTextCompositionEndEvent, ExternalTextCompositionOptions, ExternalTextCompositionSession, } from './ExternalTextComposition';
3
+ export { RichTextViewer, type RichTextViewerProps, type RichTextViewerAddons, type RichTextViewerBaseProps, type RichTextViewerMentionsConfig, type RichTextViewerLinkPressEvent, type RichTextViewerMentionPressEvent, type RichTextViewerErrorEvent, type RichTextViewerAtomAttrsUpdateEvent, NativeProseViewer, type NativeProseViewerProps, type NativeProseViewerAddons, type NativeProseViewerBaseProps, type NativeProseViewerMentionsConfig, type NativeProseViewerLinkPressEvent, type NativeProseViewerMentionPressEvent, type NativeProseViewerErrorEvent, type NativeProseViewerAtomAttrsUpdateEvent, } from './NativeProseViewer';
4
+ export { EditorToolbar, DEFAULT_EDITOR_TOOLBAR_ITEMS, type EditorToolbarProps, type EditorToolbarItem, type EditorToolbarLeafItem, type EditorToolbarGroupChildItem, type EditorToolbarGroupItem, type EditorToolbarGroupPresentation, type EditorToolbarIcon, type EditorToolbarButtonStyle, type EditorToolbarDefaultIconId, type EditorToolbarSFSymbolIcon, type EditorToolbarMaterialIcon, type EditorToolbarCommand, type EditorToolbarHeadingLevel, type EditorToolbarListType, type EditorToolbarItemPlacement, } from './EditorToolbar';
5
+ export type { EditorContentInsets, EditorTheme, EditorTextStyle, EditorLinkTheme, EditorHeadingTheme, EditorListTheme, EditorOrderedListNumberingScheme, EditorOrderedListMarkerTheme, EditorHorizontalRuleTheme, EditorBlockquoteTheme, EditorCodeBlockTheme, EditorMentionTheme, EditorMentionNodeTheme, EditorMentionSuggestionsTheme, EditorMentionSuggestionOptionTheme, EditorToolbarTheme, EditorToolbarAppearance, EditorFontStyle, EditorFontWeight, } from './EditorTheme';
6
+ export { serializeEditorTheme } from './EditorTheme';
7
+ export { EditorStyleSheet } from './EditorStyleSheet';
8
+ export type { EditorStyleProp, EditorStyleMap, EditorTypographyStyle, EditorBorderStyle, EditorPaddingStyle, EditorMarginStyle, EditorSurfaceStyle, EditorBoxStyle, EditorInlineStyle, EditorImageStyle, EditorListStyle, EditorListMarkerStyle, EditorCheckboxAppearance, EditorTaskCheckboxStyle, EditorHorizontalRuleStyle, EditorMentionStyle, } from './EditorStyleSheetTypes';
9
+ export { createMentionsAddon, type EditorAddon, type EditorAddonEntry, type MentionsAddon, type MentionsAddonOptions, type MentionPressEvent, type CodeHighlightingAddon, type CodeHighlightingAddonOptions, } from './EditorAddon';
10
+ export { MENTION_NODE_NAME, mentionNodeSpec, withMentionsSchema, buildMentionFragmentJson, type EditorAddons, type MentionsAddonConfig, type MentionSuggestion, type MentionQueryChangeEvent, type MentionFragmentOptions, type MentionSelectionAttrsEvent, type MentionThemeResolveEvent, type MentionSelectEvent, type EditorAddonEvent, } from './addons';
11
+ export { defineAtomNode, withAtomsSchema, serializeEditorAtoms, type AtomAttrsUpdate, type AtomEditorActions, type InferAtomAttrs, type AtomComponent, type AtomComponentProps, type AtomNodeConfig, type AtomNodeDefinition, type SerializedEditorAtoms, } from './atoms';
12
+ export { AtomUpdateAttrsError, DEFAULT_ATOM_CHIP_HEIGHT, NATIVE_VOID_BLOCK_TYPES, applyRenderPatch, atomSelected, collectAtomInstances, type AtomInstance, type AtomUpdateAttrsErrorCode, } from './atomInstances';
13
+ export { defineSchema, defaultSchema, defaultSchemaSpec, prosemirrorSchema, prosemirrorSchemaSpec, tiptapCompatibleSchema, tiptapCompatibleSchemaSpec, IMAGE_NODE_NAME, imageNodeSpec, withImagesSchema, buildDocumentFragmentJson, buildImageFragmentJson, resolveDocumentDescriptor, type ResolvedDocumentSchema, type SchemaDefinition, type SchemaSpec, type SchemaNodeSpec, type SchemaMarkSpec, type NodeSpec, type NodeHtmlRules, type NodeJSONProjection, type MarkSpec, type AttrSpec, type ParseDOMRule, type DOMOutputSpec, type AttributeDOMOutputSpec, type ImageNodeAttributes, } from './schemas';
14
+ export { createYjsCollaborationController, useYjsCollaboration, type YjsCollaborationOptions, type YjsCollaborationState, type YjsTransportStatus, type LocalAwarenessState, type LocalAwarenessUser, type UseYjsCollaborationResult, type YjsCollaborationController, type YjsCollaborationEditorBindings, } from './YjsCollaboration';
15
+ export { useNativeEditorDocument, type UseNativeEditorDocumentOptions, type UseNativeEditorDocumentReturn, } from './useNativeEditor';
16
+ export type { Selection, ActiveState, ReadonlyActiveState, HistoryState, EditorUpdate, RenderBlocksPatch, NativeEditorAtomicRenderSnapshot, DocumentJSON, CollaborationPeer, } from './NativeEditorBridge';
17
+ export { createNativeEditorDocumentHandle, createNativeEditorLocalAwarenessSelection, type NativeEditorDocumentHandle, type NativeCollaborationProtocolAdapter, type NativeCollaborationProtocolAdapterAction, type NativeCollaborationProtocolAdapterContext, type NativeCollaborationProtocolAdapterEvent, type NativeCollaborationProtocolAdapterResult, type NativeCollaborationProtocolFrame, type NativeCollaborationTransportConfig, type NativeCollaborationTransportDiagnostics, type NativeCollaborationTransportEvent, type NativeEditorLocalAwarenessIntent, type NativeEditorLocalAwarenessSelection, type NativeEditorCreateConfig, type NativeEditorState, type NativeEditorInitialization, type NativeEditorPeerInfo, type NativeEditorRoomSnapshot, type NativeEditorSnapshotMetadata, } from './NativeEditorBridge';
18
+ export { DEFAULT_EDITOR_IMAGE_LOADING_POLICY, HARD_EDITOR_IMAGE_LOADING_POLICY, resolveEditorImageLoadingPolicy, type EditorImageLoadingPolicy, type ResolvedEditorImageLoadingPolicy, } from './ImageLoadingPolicy';
19
+ export { DEFAULT_EDITOR_RESOURCE_LIMITS, HARD_EDITOR_RESOURCE_LIMITS, resolveEditorResourceLimits, type EditorCollaborationLimits, type EditorEditingLimits, type EditorResourceLimits, type ResolvedEditorResourceLimits, } from './ResourceLimits';
20
+ export { NATIVE_EDITOR_BOUNDARY_ERROR_CODES, NATIVE_EDITOR_NON_RETRYABLE_CODES, NativeEditorBoundaryError, NativeEditorErrorBase, NativeEditorEngineBoundaryError, NativeEditorDocumentError, NativeEditorOperationError, NativeEditorLifecycleError, NativeEditorSnapshotError, NativeEditorTransportError, NativeEditorNonRetryableError, parseNativeBoundaryError, type NativeEditorBoundaryErrorCode, type NativeEditorErrorDomain, type NativeEditorError, } from './NativeEditorBoundaryError';
21
+ export type { AtomViewport } from './AtomHost';
package/dist/index.js ADDED
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NativeEditorErrorBase = exports.NativeEditorBoundaryError = exports.NATIVE_EDITOR_NON_RETRYABLE_CODES = exports.NATIVE_EDITOR_BOUNDARY_ERROR_CODES = exports.resolveEditorResourceLimits = exports.HARD_EDITOR_RESOURCE_LIMITS = exports.DEFAULT_EDITOR_RESOURCE_LIMITS = exports.resolveEditorImageLoadingPolicy = exports.HARD_EDITOR_IMAGE_LOADING_POLICY = exports.DEFAULT_EDITOR_IMAGE_LOADING_POLICY = exports.createNativeEditorLocalAwarenessSelection = exports.createNativeEditorDocumentHandle = exports.useNativeEditorDocument = exports.useYjsCollaboration = exports.createYjsCollaborationController = exports.resolveDocumentDescriptor = exports.buildImageFragmentJson = exports.buildDocumentFragmentJson = exports.withImagesSchema = exports.imageNodeSpec = exports.IMAGE_NODE_NAME = exports.tiptapCompatibleSchemaSpec = exports.tiptapCompatibleSchema = exports.prosemirrorSchemaSpec = exports.prosemirrorSchema = exports.defaultSchemaSpec = exports.defaultSchema = exports.defineSchema = exports.collectAtomInstances = exports.atomSelected = exports.applyRenderPatch = exports.NATIVE_VOID_BLOCK_TYPES = exports.DEFAULT_ATOM_CHIP_HEIGHT = exports.AtomUpdateAttrsError = exports.serializeEditorAtoms = exports.withAtomsSchema = exports.defineAtomNode = exports.buildMentionFragmentJson = exports.withMentionsSchema = exports.mentionNodeSpec = exports.MENTION_NODE_NAME = exports.createMentionsAddon = exports.EditorStyleSheet = exports.serializeEditorTheme = exports.DEFAULT_EDITOR_TOOLBAR_ITEMS = exports.EditorToolbar = exports.NativeProseViewer = exports.RichTextViewer = exports.NativeRichTextEditor = exports.RichTextEditor = void 0;
4
+ exports.parseNativeBoundaryError = exports.NativeEditorNonRetryableError = exports.NativeEditorTransportError = exports.NativeEditorSnapshotError = exports.NativeEditorLifecycleError = exports.NativeEditorOperationError = exports.NativeEditorDocumentError = exports.NativeEditorEngineBoundaryError = void 0;
5
+ var NativeRichTextEditor_1 = require("./NativeRichTextEditor");
6
+ Object.defineProperty(exports, "RichTextEditor", { enumerable: true, get: function () { return NativeRichTextEditor_1.RichTextEditor; } });
7
+ Object.defineProperty(exports, "NativeRichTextEditor", { enumerable: true, get: function () { return NativeRichTextEditor_1.NativeRichTextEditor; } });
8
+ var NativeProseViewer_1 = require("./NativeProseViewer");
9
+ Object.defineProperty(exports, "RichTextViewer", { enumerable: true, get: function () { return NativeProseViewer_1.RichTextViewer; } });
10
+ Object.defineProperty(exports, "NativeProseViewer", { enumerable: true, get: function () { return NativeProseViewer_1.NativeProseViewer; } });
11
+ var EditorToolbar_1 = require("./EditorToolbar");
12
+ Object.defineProperty(exports, "EditorToolbar", { enumerable: true, get: function () { return EditorToolbar_1.EditorToolbar; } });
13
+ Object.defineProperty(exports, "DEFAULT_EDITOR_TOOLBAR_ITEMS", { enumerable: true, get: function () { return EditorToolbar_1.DEFAULT_EDITOR_TOOLBAR_ITEMS; } });
14
+ var EditorTheme_1 = require("./EditorTheme");
15
+ Object.defineProperty(exports, "serializeEditorTheme", { enumerable: true, get: function () { return EditorTheme_1.serializeEditorTheme; } });
16
+ var EditorStyleSheet_1 = require("./EditorStyleSheet");
17
+ Object.defineProperty(exports, "EditorStyleSheet", { enumerable: true, get: function () { return EditorStyleSheet_1.EditorStyleSheet; } });
18
+ var EditorAddon_1 = require("./EditorAddon");
19
+ Object.defineProperty(exports, "createMentionsAddon", { enumerable: true, get: function () { return EditorAddon_1.createMentionsAddon; } });
20
+ var addons_1 = require("./addons");
21
+ Object.defineProperty(exports, "MENTION_NODE_NAME", { enumerable: true, get: function () { return addons_1.MENTION_NODE_NAME; } });
22
+ Object.defineProperty(exports, "mentionNodeSpec", { enumerable: true, get: function () { return addons_1.mentionNodeSpec; } });
23
+ Object.defineProperty(exports, "withMentionsSchema", { enumerable: true, get: function () { return addons_1.withMentionsSchema; } });
24
+ Object.defineProperty(exports, "buildMentionFragmentJson", { enumerable: true, get: function () { return addons_1.buildMentionFragmentJson; } });
25
+ var atoms_1 = require("./atoms");
26
+ Object.defineProperty(exports, "defineAtomNode", { enumerable: true, get: function () { return atoms_1.defineAtomNode; } });
27
+ Object.defineProperty(exports, "withAtomsSchema", { enumerable: true, get: function () { return atoms_1.withAtomsSchema; } });
28
+ Object.defineProperty(exports, "serializeEditorAtoms", { enumerable: true, get: function () { return atoms_1.serializeEditorAtoms; } });
29
+ var atomInstances_1 = require("./atomInstances");
30
+ Object.defineProperty(exports, "AtomUpdateAttrsError", { enumerable: true, get: function () { return atomInstances_1.AtomUpdateAttrsError; } });
31
+ Object.defineProperty(exports, "DEFAULT_ATOM_CHIP_HEIGHT", { enumerable: true, get: function () { return atomInstances_1.DEFAULT_ATOM_CHIP_HEIGHT; } });
32
+ Object.defineProperty(exports, "NATIVE_VOID_BLOCK_TYPES", { enumerable: true, get: function () { return atomInstances_1.NATIVE_VOID_BLOCK_TYPES; } });
33
+ Object.defineProperty(exports, "applyRenderPatch", { enumerable: true, get: function () { return atomInstances_1.applyRenderPatch; } });
34
+ Object.defineProperty(exports, "atomSelected", { enumerable: true, get: function () { return atomInstances_1.atomSelected; } });
35
+ Object.defineProperty(exports, "collectAtomInstances", { enumerable: true, get: function () { return atomInstances_1.collectAtomInstances; } });
36
+ var schemas_1 = require("./schemas");
37
+ Object.defineProperty(exports, "defineSchema", { enumerable: true, get: function () { return schemas_1.defineSchema; } });
38
+ Object.defineProperty(exports, "defaultSchema", { enumerable: true, get: function () { return schemas_1.defaultSchema; } });
39
+ Object.defineProperty(exports, "defaultSchemaSpec", { enumerable: true, get: function () { return schemas_1.defaultSchemaSpec; } });
40
+ Object.defineProperty(exports, "prosemirrorSchema", { enumerable: true, get: function () { return schemas_1.prosemirrorSchema; } });
41
+ Object.defineProperty(exports, "prosemirrorSchemaSpec", { enumerable: true, get: function () { return schemas_1.prosemirrorSchemaSpec; } });
42
+ Object.defineProperty(exports, "tiptapCompatibleSchema", { enumerable: true, get: function () { return schemas_1.tiptapCompatibleSchema; } });
43
+ Object.defineProperty(exports, "tiptapCompatibleSchemaSpec", { enumerable: true, get: function () { return schemas_1.tiptapCompatibleSchemaSpec; } });
44
+ Object.defineProperty(exports, "IMAGE_NODE_NAME", { enumerable: true, get: function () { return schemas_1.IMAGE_NODE_NAME; } });
45
+ Object.defineProperty(exports, "imageNodeSpec", { enumerable: true, get: function () { return schemas_1.imageNodeSpec; } });
46
+ Object.defineProperty(exports, "withImagesSchema", { enumerable: true, get: function () { return schemas_1.withImagesSchema; } });
47
+ Object.defineProperty(exports, "buildDocumentFragmentJson", { enumerable: true, get: function () { return schemas_1.buildDocumentFragmentJson; } });
48
+ Object.defineProperty(exports, "buildImageFragmentJson", { enumerable: true, get: function () { return schemas_1.buildImageFragmentJson; } });
49
+ Object.defineProperty(exports, "resolveDocumentDescriptor", { enumerable: true, get: function () { return schemas_1.resolveDocumentDescriptor; } });
50
+ var YjsCollaboration_1 = require("./YjsCollaboration");
51
+ Object.defineProperty(exports, "createYjsCollaborationController", { enumerable: true, get: function () { return YjsCollaboration_1.createYjsCollaborationController; } });
52
+ Object.defineProperty(exports, "useYjsCollaboration", { enumerable: true, get: function () { return YjsCollaboration_1.useYjsCollaboration; } });
53
+ var useNativeEditor_1 = require("./useNativeEditor");
54
+ Object.defineProperty(exports, "useNativeEditorDocument", { enumerable: true, get: function () { return useNativeEditor_1.useNativeEditorDocument; } });
55
+ var NativeEditorBridge_1 = require("./NativeEditorBridge");
56
+ Object.defineProperty(exports, "createNativeEditorDocumentHandle", { enumerable: true, get: function () { return NativeEditorBridge_1.createNativeEditorDocumentHandle; } });
57
+ Object.defineProperty(exports, "createNativeEditorLocalAwarenessSelection", { enumerable: true, get: function () { return NativeEditorBridge_1.createNativeEditorLocalAwarenessSelection; } });
58
+ var ImageLoadingPolicy_1 = require("./ImageLoadingPolicy");
59
+ Object.defineProperty(exports, "DEFAULT_EDITOR_IMAGE_LOADING_POLICY", { enumerable: true, get: function () { return ImageLoadingPolicy_1.DEFAULT_EDITOR_IMAGE_LOADING_POLICY; } });
60
+ Object.defineProperty(exports, "HARD_EDITOR_IMAGE_LOADING_POLICY", { enumerable: true, get: function () { return ImageLoadingPolicy_1.HARD_EDITOR_IMAGE_LOADING_POLICY; } });
61
+ Object.defineProperty(exports, "resolveEditorImageLoadingPolicy", { enumerable: true, get: function () { return ImageLoadingPolicy_1.resolveEditorImageLoadingPolicy; } });
62
+ var ResourceLimits_1 = require("./ResourceLimits");
63
+ Object.defineProperty(exports, "DEFAULT_EDITOR_RESOURCE_LIMITS", { enumerable: true, get: function () { return ResourceLimits_1.DEFAULT_EDITOR_RESOURCE_LIMITS; } });
64
+ Object.defineProperty(exports, "HARD_EDITOR_RESOURCE_LIMITS", { enumerable: true, get: function () { return ResourceLimits_1.HARD_EDITOR_RESOURCE_LIMITS; } });
65
+ Object.defineProperty(exports, "resolveEditorResourceLimits", { enumerable: true, get: function () { return ResourceLimits_1.resolveEditorResourceLimits; } });
66
+ var NativeEditorBoundaryError_1 = require("./NativeEditorBoundaryError");
67
+ Object.defineProperty(exports, "NATIVE_EDITOR_BOUNDARY_ERROR_CODES", { enumerable: true, get: function () { return NativeEditorBoundaryError_1.NATIVE_EDITOR_BOUNDARY_ERROR_CODES; } });
68
+ Object.defineProperty(exports, "NATIVE_EDITOR_NON_RETRYABLE_CODES", { enumerable: true, get: function () { return NativeEditorBoundaryError_1.NATIVE_EDITOR_NON_RETRYABLE_CODES; } });
69
+ Object.defineProperty(exports, "NativeEditorBoundaryError", { enumerable: true, get: function () { return NativeEditorBoundaryError_1.NativeEditorBoundaryError; } });
70
+ Object.defineProperty(exports, "NativeEditorErrorBase", { enumerable: true, get: function () { return NativeEditorBoundaryError_1.NativeEditorErrorBase; } });
71
+ Object.defineProperty(exports, "NativeEditorEngineBoundaryError", { enumerable: true, get: function () { return NativeEditorBoundaryError_1.NativeEditorEngineBoundaryError; } });
72
+ Object.defineProperty(exports, "NativeEditorDocumentError", { enumerable: true, get: function () { return NativeEditorBoundaryError_1.NativeEditorDocumentError; } });
73
+ Object.defineProperty(exports, "NativeEditorOperationError", { enumerable: true, get: function () { return NativeEditorBoundaryError_1.NativeEditorOperationError; } });
74
+ Object.defineProperty(exports, "NativeEditorLifecycleError", { enumerable: true, get: function () { return NativeEditorBoundaryError_1.NativeEditorLifecycleError; } });
75
+ Object.defineProperty(exports, "NativeEditorSnapshotError", { enumerable: true, get: function () { return NativeEditorBoundaryError_1.NativeEditorSnapshotError; } });
76
+ Object.defineProperty(exports, "NativeEditorTransportError", { enumerable: true, get: function () { return NativeEditorBoundaryError_1.NativeEditorTransportError; } });
77
+ Object.defineProperty(exports, "NativeEditorNonRetryableError", { enumerable: true, get: function () { return NativeEditorBoundaryError_1.NativeEditorNonRetryableError; } });
78
+ Object.defineProperty(exports, "parseNativeBoundaryError", { enumerable: true, get: function () { return NativeEditorBoundaryError_1.parseNativeBoundaryError; } });
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Rendered list-marker strings.
3
+ *
4
+ * CROSS-LAYER CONTRACT: these values must match the Rust core
5
+ * (rust/editor-core/src/render/mod.rs: task_list_marker_string /
6
+ * list_marker_string — pinned by marker_strings_are_the_cross_layer_contract
7
+ * in render_test.rs), Android (LayoutConstants.TASK_LIST_MARKER_* /
8
+ * UNORDERED_LIST_BULLET), and iOS (RenderBridge.listMarkerString). The
9
+ * marker's scalar length feeds position mapping; a mismatch corrupts
10
+ * selection and IME edits.
11
+ */
12
+ export declare const TASK_LIST_MARKER_CHECKED = "\u2611 ";
13
+ export declare const TASK_LIST_MARKER_UNCHECKED = "\u2610 ";
14
+ export declare const UNORDERED_LIST_MARKER = "\u2022 ";
15
+ export declare function orderedListMarker(index: number): string;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UNORDERED_LIST_MARKER = exports.TASK_LIST_MARKER_UNCHECKED = exports.TASK_LIST_MARKER_CHECKED = void 0;
4
+ exports.orderedListMarker = orderedListMarker;
5
+ /**
6
+ * Rendered list-marker strings.
7
+ *
8
+ * CROSS-LAYER CONTRACT: these values must match the Rust core
9
+ * (rust/editor-core/src/render/mod.rs: task_list_marker_string /
10
+ * list_marker_string — pinned by marker_strings_are_the_cross_layer_contract
11
+ * in render_test.rs), Android (LayoutConstants.TASK_LIST_MARKER_* /
12
+ * UNORDERED_LIST_BULLET), and iOS (RenderBridge.listMarkerString). The
13
+ * marker's scalar length feeds position mapping; a mismatch corrupts
14
+ * selection and IME edits.
15
+ */
16
+ exports.TASK_LIST_MARKER_CHECKED = '☑ ';
17
+ exports.TASK_LIST_MARKER_UNCHECKED = '☐ ';
18
+ exports.UNORDERED_LIST_MARKER = '• ';
19
+ function orderedListMarker(index) {
20
+ return `${index}. `;
21
+ }
@@ -0,0 +1,143 @@
1
+ import { type AtomNodeDefinition } from './atoms';
2
+ /** Declaration of one node or mark attribute. */
3
+ export interface AttrSpec {
4
+ /** Value used when the attribute is absent. Omit to make the attribute required. */
5
+ default?: unknown;
6
+ type?: 'string' | 'number' | 'boolean' | 'object' | 'array';
7
+ enum?: readonly unknown[];
8
+ min?: number;
9
+ max?: number;
10
+ }
11
+ /** Static DOM output supported by the native HTML serializer. */
12
+ export type DOMOutputSpec = readonly [tag: string] | readonly [tag: string, content: 0];
13
+ /** Declarative DOM rule supported by the native HTML parser. */
14
+ export interface ParseDOMRule {
15
+ tag: string;
16
+ attrs?: Record<string, unknown>;
17
+ }
18
+ /** Select a DOM output from one declared node attribute. */
19
+ export interface AttributeDOMOutputSpec {
20
+ switchOn: string;
21
+ cases: Readonly<Record<string, DOMOutputSpec>>;
22
+ }
23
+ /** JSON representation projected from one native node variant. */
24
+ export interface NodeJSONProjection {
25
+ type: string;
26
+ attrs?: Record<string, unknown>;
27
+ }
28
+ /** Declarative HTML parsing and serialization rules for a void node. */
29
+ export interface NodeHtmlRules {
30
+ tag: string;
31
+ staticAttrs?: Record<string, string>;
32
+ attrMap?: Record<string, string>;
33
+ }
34
+ /** Declaration of one node type in a {@link SchemaDefinition}. */
35
+ export interface NodeSpec {
36
+ /** Native node type name. `json` may expose a different public document type. */
37
+ name: string;
38
+ /** ProseMirror-style content expression, e.g. `'block+'`, `'inline*'`, or `''` for a leaf. */
39
+ content: string;
40
+ /** Content group this node belongs to, e.g. `'block'` or `'inline'`. */
41
+ group?: string;
42
+ /** Attributes this node declares. Undeclared attributes are filtered out on
43
+ * ingestion unless `allowUndeclaredAttrs` is set. */
44
+ attrs?: Record<string, AttrSpec>;
45
+ /**
46
+ * How the engine treats this node: `'doc'`, `'textBlock'`, `'list'`,
47
+ * `'listItem'`, `'text'`, `'hardBreak'`, `'inline'`, or `'block'`. Any
48
+ * unrecognized value is treated as `'block'`. Exactly one node must use
49
+ * `'doc'`. An ordered list is a `'list'` node whose name contains
50
+ * `ordered`.
51
+ */
52
+ role: string;
53
+ /** Tag used when serializing this node to HTML. */
54
+ htmlTag?: string;
55
+ /** Declarative HTML rules used for lossless void-node round trips. */
56
+ html?: NodeHtmlRules;
57
+ /** Whether the node holds no content of its own (an image or rule, say). */
58
+ isVoid?: boolean;
59
+ /** Whether collapsed backspace may remove this void block from an adjacent caret. */
60
+ deletableOnBackspace?: boolean;
61
+ /**
62
+ * Opt-in escape hatch: when `true`, JSON ingestion (`set_json` /
63
+ * `insert_content_json`) admits attrs on this node that are not declared
64
+ * in `attrs`, instead of filtering them out. Default `false`. Intended
65
+ * for node types with an intentional pass-through-metadata contract
66
+ * (e.g. the mention node — see `mentionNodeSpec()` in addons.ts).
67
+ */
68
+ allowUndeclaredAttrs?: boolean;
69
+ /** Public JSON representation when it differs from the native node name. */
70
+ json?: NodeJSONProjection;
71
+ }
72
+ /** Declaration of one mark type in a {@link SchemaDefinition}. */
73
+ export interface MarkSpec {
74
+ /** Mark type name, as it appears in document JSON. */
75
+ name: string;
76
+ /** Attributes this mark declares. */
77
+ attrs?: Record<string, AttrSpec>;
78
+ /** Mark names that cannot coexist with this one on the same text range. */
79
+ excludes?: string;
80
+ /**
81
+ * Serializer tag for a custom mark. Native accepts only the inert allowlist:
82
+ * span, strong, em, u, s, code, a, sub, sup, mark.
83
+ */
84
+ htmlTag?: 'span' | 'strong' | 'em' | 'u' | 's' | 'code' | 'a' | 'sub' | 'sup' | 'mark';
85
+ /**
86
+ * Opt-in escape hatch: when `true`, JSON ingestion (`set_json` /
87
+ * `insert_content_json`) admits attrs on this mark that are not declared
88
+ * in `attrs`, instead of filtering them out. Default `false`. Mirrors
89
+ * `NodeSpec.allowUndeclaredAttrs` for mark types with an intentional
90
+ * pass-through-metadata contract.
91
+ */
92
+ allowUndeclaredAttrs?: boolean;
93
+ }
94
+ /**
95
+ * The node and mark types a document may contain. Fixed when the document
96
+ * handle is created (`NativeEditorCreateConfig.schema`), or per render for
97
+ * `RichTextViewer`. Start from {@link defaultSchema},
98
+ * {@link prosemirrorSchema}, or {@link tiptapCompatibleSchema} rather than
99
+ * assembling one from scratch.
100
+ */
101
+ export interface SchemaDefinition {
102
+ /** Node types. Exactly one must have `role: 'doc'`. */
103
+ nodes: NodeSpec[];
104
+ /** Mark types. */
105
+ marks: MarkSpec[];
106
+ }
107
+ /** Keyed node declaration accepted by {@link defineSchema}. */
108
+ export interface SchemaNodeSpec {
109
+ content?: string;
110
+ group?: string;
111
+ attrs?: Record<string, AttrSpec>;
112
+ /** Native semantic role. Common `doc`, `paragraph`, and `text` shapes are inferred. */
113
+ role?: NodeSpec['role'] | 'heading';
114
+ parseDOM?: readonly ParseDOMRule[];
115
+ toDOM?: DOMOutputSpec | AttributeDOMOutputSpec;
116
+ html?: NodeHtmlRules;
117
+ isVoid?: boolean;
118
+ deletableOnBackspace?: boolean;
119
+ allowUndeclaredAttrs?: boolean;
120
+ }
121
+ /** Keyed mark declaration accepted by {@link defineSchema}. */
122
+ export interface SchemaMarkSpec {
123
+ attrs?: Record<string, AttrSpec>;
124
+ excludes?: string;
125
+ parseDOM?: readonly ParseDOMRule[];
126
+ toDOM?: DOMOutputSpec;
127
+ allowUndeclaredAttrs?: boolean;
128
+ }
129
+ /** ProseMirror-shaped authoring schema compiled for the native engine. */
130
+ export interface SchemaSpec {
131
+ nodes: Readonly<Record<string, SchemaNodeSpec>>;
132
+ marks?: Readonly<Record<string, SchemaMarkSpec>>;
133
+ atoms?: readonly AtomNodeDefinition<any>[];
134
+ }
135
+ export declare const ALLOWED_MARK_HTML_TAGS: Set<string>;
136
+ export declare function outputTag(spec: DOMOutputSpec): string;
137
+ export declare function appendGroup(group: string | undefined, name: string): string;
138
+ export declare function schemaNodeRole(name: string, node: SchemaNodeSpec): string;
139
+ export declare function caseAttributeValue(key: string, attribute: string, tag: string, parseDOM: readonly ParseDOMRule[] | undefined, defaultValue: unknown): unknown;
140
+ export declare function validateAttributeDOMRules(name: string, switched: AttributeDOMOutputSpec, parseDOM: readonly ParseDOMRule[] | undefined, defaultValue: unknown): void;
141
+ export declare function staticDOMTag(kind: 'node' | 'mark', name: string, parseDOM: readonly ParseDOMRule[] | undefined, toDOM: DOMOutputSpec | undefined): string | undefined;
142
+ /** Compile a keyed, ProseMirror-shaped schema into the serializable native form. */
143
+ export declare function defineSchema(spec: SchemaSpec): SchemaDefinition;
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ALLOWED_MARK_HTML_TAGS = void 0;
4
+ exports.outputTag = outputTag;
5
+ exports.appendGroup = appendGroup;
6
+ exports.schemaNodeRole = schemaNodeRole;
7
+ exports.caseAttributeValue = caseAttributeValue;
8
+ exports.validateAttributeDOMRules = validateAttributeDOMRules;
9
+ exports.staticDOMTag = staticDOMTag;
10
+ exports.defineSchema = defineSchema;
11
+ const atoms_1 = require("./atoms");
12
+ const atomPolicy_1 = require("./atomPolicy");
13
+ exports.ALLOWED_MARK_HTML_TAGS = new Set([
14
+ 'span',
15
+ 'strong',
16
+ 'em',
17
+ 'u',
18
+ 's',
19
+ 'code',
20
+ 'a',
21
+ 'sub',
22
+ 'sup',
23
+ 'mark',
24
+ ]);
25
+ function outputTag(spec) {
26
+ return spec[0];
27
+ }
28
+ function appendGroup(group, name) {
29
+ const groups = group?.split(/\s+/).filter(Boolean) ?? [];
30
+ if (!groups.includes(name))
31
+ groups.push(name);
32
+ return groups.join(' ');
33
+ }
34
+ function schemaNodeRole(name, node) {
35
+ if (node.role != null)
36
+ return node.role === 'heading' ? 'textBlock' : node.role;
37
+ if (name === 'doc')
38
+ return 'doc';
39
+ if (name === 'text')
40
+ return 'text';
41
+ if (node.content === 'inline*' && node.group?.split(/\s+/).includes('block')) {
42
+ return 'textBlock';
43
+ }
44
+ if (node.group?.split(/\s+/).includes('inline'))
45
+ return 'inline';
46
+ return 'block';
47
+ }
48
+ function caseAttributeValue(key, attribute, tag, parseDOM, defaultValue) {
49
+ const rule = parseDOM?.find((candidate) => candidate.tag === tag &&
50
+ candidate.attrs != null &&
51
+ String(candidate.attrs[attribute]) === key);
52
+ if (rule?.attrs && Object.prototype.hasOwnProperty.call(rule.attrs, attribute)) {
53
+ return rule.attrs[attribute];
54
+ }
55
+ if (typeof defaultValue === 'number')
56
+ return Number(key);
57
+ if (typeof defaultValue === 'boolean')
58
+ return key === 'true';
59
+ return key;
60
+ }
61
+ function validateAttributeDOMRules(name, switched, parseDOM, defaultValue) {
62
+ const cases = Object.entries(switched.cases);
63
+ let discriminatorType = typeof defaultValue === 'string' ||
64
+ typeof defaultValue === 'number' ||
65
+ typeof defaultValue === 'boolean'
66
+ ? typeof defaultValue
67
+ : undefined;
68
+ if (discriminatorType == null && parseDOM != null) {
69
+ const parsedTypes = parseDOM.map((rule) => {
70
+ const value = rule.attrs?.[switched.switchOn];
71
+ return typeof value === 'string' ||
72
+ typeof value === 'number' ||
73
+ typeof value === 'boolean'
74
+ ? typeof value
75
+ : undefined;
76
+ });
77
+ const firstType = parsedTypes[0];
78
+ if (firstType != null && parsedTypes.every((type) => type === firstType)) {
79
+ discriminatorType = firstType;
80
+ }
81
+ }
82
+ if (discriminatorType == null) {
83
+ throw new Error(`node '${name}' DOM discriminator '${switched.switchOn}' must have a scalar type`);
84
+ }
85
+ if (parseDOM == null) {
86
+ const validCases = cases.every(([caseKey]) => {
87
+ if (discriminatorType === 'number') {
88
+ return /^-?(?:0|[1-9]\d*)(?:\.\d+)?$/.test(caseKey);
89
+ }
90
+ return discriminatorType !== 'boolean' || caseKey === 'true' || caseKey === 'false';
91
+ });
92
+ if (!validCases) {
93
+ throw new Error(`node '${name}' DOM discriminator '${switched.switchOn}' must use ${discriminatorType} values`);
94
+ }
95
+ return;
96
+ }
97
+ const matchesCase = ([caseKey, output]) => parseDOM.filter((rule) => rule.tag === outputTag(output) &&
98
+ rule.attrs != null &&
99
+ Object.prototype.hasOwnProperty.call(rule.attrs, switched.switchOn) &&
100
+ String(rule.attrs[switched.switchOn]) === caseKey).length === 1;
101
+ if (parseDOM.length !== cases.length || !cases.every(matchesCase)) {
102
+ throw new Error(`node '${name}' DOM parse rules must map one-to-one with '${switched.switchOn}' output cases`);
103
+ }
104
+ if (discriminatorType != null &&
105
+ parseDOM.some((rule) => rule.attrs != null && typeof rule.attrs[switched.switchOn] !== discriminatorType)) {
106
+ throw new Error(`node '${name}' DOM discriminator '${switched.switchOn}' must use ${discriminatorType} values`);
107
+ }
108
+ }
109
+ function staticDOMTag(kind, name, parseDOM, toDOM) {
110
+ if ((parseDOM?.length ?? 0) > 1) {
111
+ throw new Error(`${kind} '${name}' has multiple static DOM parse rules`);
112
+ }
113
+ const parsed = parseDOM?.[0]?.tag;
114
+ const serialized = toDOM == null ? undefined : outputTag(toDOM);
115
+ if (parsed != null && serialized != null && parsed !== serialized) {
116
+ throw new Error(`${kind} '${name}' parses '${parsed}' but serializes '${serialized}'`);
117
+ }
118
+ return serialized ?? parsed;
119
+ }
120
+ /** Compile a keyed, ProseMirror-shaped schema into the serializable native form. */
121
+ function defineSchema(spec) {
122
+ const nodes = [];
123
+ const names = new Set();
124
+ for (const [name, node] of Object.entries(spec.nodes)) {
125
+ const common = {
126
+ content: node.content ?? '',
127
+ ...(node.group == null ? {} : { group: node.group }),
128
+ ...(node.attrs == null ? {} : { attrs: node.attrs }),
129
+ role: schemaNodeRole(name, node),
130
+ ...(node.html == null ? {} : { html: node.html }),
131
+ ...(node.isVoid == null ? {} : { isVoid: node.isVoid }),
132
+ ...(node.deletableOnBackspace == null
133
+ ? {}
134
+ : { deletableOnBackspace: node.deletableOnBackspace }),
135
+ ...(node.allowUndeclaredAttrs == null
136
+ ? {}
137
+ : { allowUndeclaredAttrs: node.allowUndeclaredAttrs }),
138
+ };
139
+ if (node.toDOM != null && !Array.isArray(node.toDOM)) {
140
+ const switched = node.toDOM;
141
+ if (atomPolicy_1.RESERVED_WIRE_NODE_TYPES.has(name)) {
142
+ throw new Error(`node '${name}' uses a reserved wire projection type`);
143
+ }
144
+ if (node.attrs == null ||
145
+ !Object.prototype.hasOwnProperty.call(node.attrs, switched.switchOn)) {
146
+ throw new Error(`node '${name}' switches on undeclared attribute '${switched.switchOn}'`);
147
+ }
148
+ if (Object.keys(switched.cases).length === 0) {
149
+ throw new Error(`node '${name}' has no DOM output cases`);
150
+ }
151
+ const discriminatorDefault = node.attrs[switched.switchOn]?.default;
152
+ validateAttributeDOMRules(name, switched, node.parseDOM, discriminatorDefault);
153
+ const { attrs: _attrs, ...variantCommon } = common;
154
+ for (const [caseKey, output] of Object.entries(switched.cases)) {
155
+ const tag = outputTag(output);
156
+ if (names.has(tag))
157
+ throw new Error(`schema produces duplicate native node '${tag}'`);
158
+ names.add(tag);
159
+ const { [switched.switchOn]: _discriminator, ...variantAttrs } = node.attrs ?? {};
160
+ nodes.push({
161
+ name: tag,
162
+ ...variantCommon,
163
+ group: appendGroup(node.group, name),
164
+ ...(Object.keys(variantAttrs).length === 0 ? {} : { attrs: variantAttrs }),
165
+ htmlTag: tag,
166
+ json: {
167
+ type: name,
168
+ attrs: {
169
+ [switched.switchOn]: caseAttributeValue(caseKey, switched.switchOn, tag, node.parseDOM, discriminatorDefault),
170
+ },
171
+ },
172
+ });
173
+ }
174
+ continue;
175
+ }
176
+ if (names.has(name))
177
+ throw new Error(`schema produces duplicate native node '${name}'`);
178
+ names.add(name);
179
+ const tag = staticDOMTag('node', name, node.parseDOM, node.toDOM);
180
+ nodes.push({
181
+ name,
182
+ ...common,
183
+ ...(tag == null ? {} : { htmlTag: tag }),
184
+ });
185
+ }
186
+ const marks = Object.entries(spec.marks ?? {}).map(([name, mark]) => {
187
+ const tag = staticDOMTag('mark', name, mark.parseDOM, mark.toDOM);
188
+ const normalizedTag = tag?.toLowerCase();
189
+ if (normalizedTag != null && !exports.ALLOWED_MARK_HTML_TAGS.has(normalizedTag)) {
190
+ throw new Error(`mark '${name}' has disallowed HTML tag '${tag}'`);
191
+ }
192
+ return {
193
+ name,
194
+ ...(mark.attrs == null ? {} : { attrs: mark.attrs }),
195
+ ...(mark.excludes == null ? {} : { excludes: mark.excludes }),
196
+ ...(normalizedTag == null ? {} : { htmlTag: normalizedTag }),
197
+ ...(mark.allowUndeclaredAttrs == null
198
+ ? {}
199
+ : { allowUndeclaredAttrs: mark.allowUndeclaredAttrs }),
200
+ };
201
+ });
202
+ const schema = { nodes, marks };
203
+ return spec.atoms == null || spec.atoms.length === 0
204
+ ? schema
205
+ : (0, atoms_1.withAtomsSchema)(schema, spec.atoms);
206
+ }
@@ -0,0 +1,17 @@
1
+ import type { DocumentJSON } from './NativeEditorBridge';
2
+ import type { SchemaDefinition } from './schemaDefinition';
3
+ import { type DocumentDescriptorLimits, type ResolvedDocumentSchema } from './schemaPresets';
4
+ export declare function defaultEmptyDocument(schema?: SchemaDefinition, limits?: DocumentDescriptorLimits): DocumentJSON;
5
+ /**
6
+ * Validate a schema and derive its document node name and empty document,
7
+ * mirroring what the Rust core does when a handle is created. Use it to build
8
+ * fragments or empty documents for a custom schema.
9
+ *
10
+ * @param schema Defaults to {@link defaultSchema}.
11
+ * @param limits Schema and document bounds. Defaults to
12
+ * {@link DEFAULT_EDITOR_RESOURCE_LIMITS}.
13
+ * @throws NativeEditorBoundaryError `SCHEMA_INVALID` when the schema is
14
+ * malformed, exceeds its limits, or declares no `role: 'doc'` node.
15
+ */
16
+ export declare function resolveDocumentDescriptor(schema?: SchemaDefinition, limits?: DocumentDescriptorLimits): ResolvedDocumentSchema;
17
+ export declare function normalizeDocumentJson(doc: DocumentJSON, schemaOrDescriptor?: SchemaDefinition | ResolvedDocumentSchema, limits?: DocumentDescriptorLimits): DocumentJSON;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultEmptyDocument = defaultEmptyDocument;
4
+ exports.resolveDocumentDescriptor = resolveDocumentDescriptor;
5
+ exports.normalizeDocumentJson = normalizeDocumentJson;
6
+ const NativeEditorBoundaryError_1 = require("./NativeEditorBoundaryError");
7
+ const schemaNormalization_1 = require("./schemaNormalization");
8
+ const schemaDocumentConstruction_1 = require("./schemaDocumentConstruction");
9
+ const schemaResolution_1 = require("./schemaResolution");
10
+ const schemaPresets_1 = require("./schemaPresets");
11
+ function defaultEmptyDocument(schema = schemaPresets_1.defaultSchema, limits) {
12
+ const resolvedLimits = (0, schemaResolution_1.resolveDescriptorLimits)(limits);
13
+ if (schema.nodes.length > resolvedLimits.maxSchemaNodes) {
14
+ throw (0, schemaNormalization_1.schemaBoundaryError)(resolvedLimits.maxSchemaNodes, schema.nodes.length);
15
+ }
16
+ let expressionBytes = 0;
17
+ for (const node of schema.nodes) {
18
+ if (node != null && typeof node.content === 'string') {
19
+ expressionBytes += (0, schemaNormalization_1.utf8ByteLengthUpTo)(node.content, resolvedLimits.maxSchemaExpressionBytes - expressionBytes);
20
+ if (expressionBytes > resolvedLimits.maxSchemaExpressionBytes) {
21
+ throw (0, schemaNormalization_1.schemaBoundaryError)(resolvedLimits.maxSchemaExpressionBytes, expressionBytes);
22
+ }
23
+ }
24
+ }
25
+ const admissionBudget = (0, schemaResolution_1.createSchemaWorkBudget)(resolvedLimits);
26
+ const admittedCollections = (0, schemaResolution_1.admitSchemaCollections)(schema, admissionBudget);
27
+ if (admittedCollections == null) {
28
+ throw new Error('schema cannot construct a default document: invalid schema collections');
29
+ }
30
+ return (0, schemaDocumentConstruction_1.constructDefaultEmptyDocument)(schema, resolvedLimits, admittedCollections);
31
+ }
32
+ /**
33
+ * Validate a schema and derive its document node name and empty document,
34
+ * mirroring what the Rust core does when a handle is created. Use it to build
35
+ * fragments or empty documents for a custom schema.
36
+ *
37
+ * @param schema Defaults to {@link defaultSchema}.
38
+ * @param limits Schema and document bounds. Defaults to
39
+ * {@link DEFAULT_EDITOR_RESOURCE_LIMITS}.
40
+ * @throws NativeEditorBoundaryError `SCHEMA_INVALID` when the schema is
41
+ * malformed, exceeds its limits, or declares no `role: 'doc'` node.
42
+ */
43
+ function resolveDocumentDescriptor(schema, limits) {
44
+ const resolvedLimits = (0, schemaResolution_1.resolveDescriptorLimits)(limits);
45
+ const resolvedSchema = (0, schemaResolution_1.resolveDocumentSchema)(schema, resolvedLimits);
46
+ const documentNode = resolvedSchema.nodes.find((node) => node.role === 'doc');
47
+ if (!documentNode) {
48
+ throw new NativeEditorBoundaryError_1.NativeEditorBoundaryError('SCHEMA_INVALID', 'schema has no document-role node');
49
+ }
50
+ return {
51
+ schema: resolvedSchema,
52
+ documentNodeName: documentNode.name,
53
+ emptyDocument: defaultEmptyDocument(resolvedSchema, resolvedLimits),
54
+ };
55
+ }
56
+ function normalizeDocumentJson(doc, schemaOrDescriptor = schemaPresets_1.defaultSchema, limits) {
57
+ const descriptor = 'documentNodeName' in schemaOrDescriptor
58
+ ? schemaOrDescriptor
59
+ : resolveDocumentDescriptor(schemaOrDescriptor, limits);
60
+ const root = doc;
61
+ if (root?.type !== descriptor.documentNodeName) {
62
+ return doc;
63
+ }
64
+ const content = root?.content;
65
+ if (Array.isArray(content) && content.length > 0) {
66
+ return doc;
67
+ }
68
+ return descriptor.emptyDocument;
69
+ }
@@ -0,0 +1,5 @@
1
+ import type { ResolvedEditorResourceLimits } from './ResourceLimits';
2
+ import type { DocumentJSON } from './NativeEditorBridge';
3
+ import type { SchemaDefinition } from './schemaDefinition';
4
+ import { type AdmittedSchemaCollections } from './schemaNormalization';
5
+ export declare function constructDefaultEmptyDocument(schema: SchemaDefinition, resolvedLimits: ResolvedEditorResourceLimits, admittedCollections: AdmittedSchemaCollections): DocumentJSON;