@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,193 @@
1
+ import { type NormalizedEditorAddons } from './EditorAddonNormalization';
2
+ import type { EditorAddons, CodeHighlightingAddonOptions } from './EditorAddon';
3
+ export { normalizeEditorAddons } from './EditorAddonNormalization';
4
+ export { createMentionsAddon, type EditorAddons } from './EditorAddon';
5
+ import type { EditorMentionTheme } from './EditorTheme';
6
+ import { type SerializedEditorMentionTheme } from './EditorMentionThemeNormalization';
7
+ import type { DocumentJSON, ReadonlyActiveState } from './NativeEditorBridge';
8
+ import { type ResolvedDocumentSchema, type SchemaDefinition, type NodeSpec } from './schemas';
9
+ /** One row offered in the mention suggestion list. */
10
+ export interface MentionSuggestion {
11
+ /** Identity of this suggestion. Must be unique within the offered list. */
12
+ key: string;
13
+ /** Primary text shown in the suggestion row. */
14
+ title: string;
15
+ /** Secondary text shown in the suggestion row. */
16
+ subtitle?: string;
17
+ /** Text rendered in the document once inserted. Defaults to `title`. */
18
+ label?: string;
19
+ /** Extra attributes stored on the inserted mention node, e.g. a user id. */
20
+ attrs?: Record<string, unknown>;
21
+ }
22
+ /** The mention query under the caret changed. */
23
+ export interface MentionQueryChangeEvent {
24
+ /** Text typed after the trigger, without the trigger itself. */
25
+ query: string;
26
+ /** Trigger character that opened this query. */
27
+ trigger: string;
28
+ /** Engine document positions the mention would replace. */
29
+ range: {
30
+ anchor: number;
31
+ head: number;
32
+ };
33
+ /** False once the query closed — supply an empty suggestion list. */
34
+ isActive: boolean;
35
+ /** Engine document revision the query was computed against. */
36
+ documentVersion?: string;
37
+ }
38
+ /** A suggestion was inserted into the document. */
39
+ export interface MentionSelectEvent {
40
+ trigger: string;
41
+ suggestion: MentionSuggestion;
42
+ /** The attributes actually written onto the mention node. */
43
+ attrs: Record<string, unknown>;
44
+ documentVersion?: string;
45
+ }
46
+ /**
47
+ * A suggestion is about to be inserted. Passed to
48
+ * {@link MentionsAddonConfig.resolveSelectionAttrs} and
49
+ * {@link MentionsAddonConfig.resolveTheme} so the host can decide the node's
50
+ * attributes and styling from live document context.
51
+ */
52
+ export interface MentionSelectionAttrsEvent {
53
+ trigger: string;
54
+ suggestion: MentionSuggestion;
55
+ /** Attributes resolved so far — the suggestion's own, plus `label` and `mentionSuggestionChar`. */
56
+ attrs: Record<string, unknown>;
57
+ /** Mark attributes active at the insertion point. */
58
+ markAttrs: ReadonlyActiveState['markAttrs'];
59
+ /** Engine document positions the mention will replace. */
60
+ range: {
61
+ anchor: number;
62
+ head: number;
63
+ };
64
+ documentVersion?: string;
65
+ }
66
+ /** Payload of {@link MentionsAddonConfig.resolveTheme}, carrying the attributes
67
+ * `resolveSelectionAttrs` already resolved. */
68
+ export type MentionThemeResolveEvent = MentionSelectionAttrsEvent;
69
+ /**
70
+ * Mentions for `RichTextEditor`. The schema belongs to the document
71
+ * handle, so create the handle with {@link withMentionsSchema} applied to
72
+ * your schema — this config alone does not add the `mention` node.
73
+ * (`RichTextViewer` adds it for you.)
74
+ *
75
+ * The host owns the suggestion list: react to `onQueryChange` by filtering
76
+ * your own data, then pass the result back through `suggestions`.
77
+ */
78
+ export interface MentionsAddonConfig {
79
+ /** Character that opens a mention query. Defaults to `'@'`. */
80
+ trigger?: string;
81
+ /** Rows currently offered for the open query. */
82
+ suggestions?: readonly MentionSuggestion[];
83
+ /** Default mention styling. See {@link EditorMentionTheme}. */
84
+ theme?: EditorMentionTheme;
85
+ /**
86
+ * Extra attributes merged over the suggestion's own, just before
87
+ * insertion. Return `null`/`undefined` to keep them unchanged. Throwing
88
+ * is caught and treated the same way.
89
+ */
90
+ resolveSelectionAttrs?: (event: MentionSelectionAttrsEvent) => Record<string, unknown> | null | undefined;
91
+ /**
92
+ * Per-mention styling, stored on the inserted node and used in place of
93
+ * `theme`. Runs after `resolveSelectionAttrs`. A value that is not a
94
+ * valid {@link EditorMentionTheme} is dropped rather than written into
95
+ * the document.
96
+ */
97
+ resolveTheme?: (event: MentionThemeResolveEvent) => EditorMentionTheme | null | undefined;
98
+ /** Called whenever the open query changes, including when it closes. */
99
+ onQueryChange?: (event: MentionQueryChangeEvent) => void;
100
+ /** Called after a suggestion has been inserted. */
101
+ onSelect?: (event: MentionSelectEvent) => void;
102
+ }
103
+ export interface SerializedMentionSuggestion {
104
+ key: string;
105
+ title: string;
106
+ subtitle?: string;
107
+ label: string;
108
+ attrs: Record<string, unknown>;
109
+ }
110
+ export interface SerializedMentionsAddonConfig {
111
+ trigger: string;
112
+ theme?: SerializedEditorMentionTheme;
113
+ resolveSelectionAttrs?: boolean;
114
+ resolveTheme?: boolean;
115
+ suggestions: SerializedMentionSuggestion[];
116
+ }
117
+ export interface SerializedEditorAddons {
118
+ mentions?: SerializedMentionsAddonConfig;
119
+ codeHighlighting?: CodeHighlightingAddonOptions;
120
+ }
121
+ /**
122
+ * The raw addon event the native view emits, before the editor turns it into
123
+ * the typed {@link MentionsAddonConfig} callbacks. Exported for hosts that
124
+ * inspect the native stream directly; ordinary use needs `onQueryChange` and
125
+ * `onSelect` instead.
126
+ */
127
+ export type EditorAddonEvent = {
128
+ type: 'mentionsQueryChange';
129
+ query: string;
130
+ trigger: string;
131
+ range: {
132
+ anchor: number;
133
+ head: number;
134
+ };
135
+ isActive: boolean;
136
+ documentVersion?: string;
137
+ } | {
138
+ type: 'mentionsSelectRequest';
139
+ trigger: string;
140
+ suggestionKey: string;
141
+ attrs: Record<string, unknown>;
142
+ range: {
143
+ anchor: number;
144
+ head: number;
145
+ };
146
+ documentVersion?: string;
147
+ updateJson?: string;
148
+ } | {
149
+ type: 'mentionsSelect';
150
+ trigger: string;
151
+ suggestionKey: string;
152
+ attrs: Record<string, unknown>;
153
+ documentVersion?: string;
154
+ };
155
+ /** Node name mentions are stored under in the document. */
156
+ export declare const MENTION_NODE_NAME = "mention";
157
+ /**
158
+ * The mention node spec: a void inline node that round-trips arbitrary
159
+ * app-defined attributes. Add it through {@link withMentionsSchema} rather
160
+ * than assembling it by hand.
161
+ */
162
+ export declare function mentionNodeSpec(): NodeSpec;
163
+ /**
164
+ * Return `schema` with the mention node added, or `schema` unchanged when it
165
+ * already declares one. Apply it when creating the document handle for an
166
+ * editor that uses mentions.
167
+ *
168
+ * @example
169
+ * ```ts
170
+ * createNativeEditorDocumentHandle({
171
+ * initialization: { type: 'localEmpty' },
172
+ * schema: withMentionsSchema(defaultSchema),
173
+ * });
174
+ * ```
175
+ */
176
+ export declare function withMentionsSchema(schema: SchemaDefinition): SchemaDefinition;
177
+ export declare function normalizeNativeEditorAddons(addons?: NormalizedEditorAddons): SerializedEditorAddons | undefined;
178
+ export declare function serializeEditorAddons(addons?: EditorAddons): string | undefined;
179
+ export declare function serializeNormalizedEditorAddons(addons?: NormalizedEditorAddons): string | undefined;
180
+ /** Options for {@link buildMentionFragmentJson}. */
181
+ export interface MentionFragmentOptions {
182
+ /** Append a plain, unmarked space so typing continues after the mention. */
183
+ trailingSpace?: boolean;
184
+ }
185
+ /**
186
+ * Build a document fragment holding one mention node, ready for
187
+ * `insertContentJson`. Use it to insert a mention outside the suggestion
188
+ * flow — from a picker, say.
189
+ *
190
+ * @param attrs Attributes for the mention node, e.g. `{ label, id }`.
191
+ * @param descriptor Document node name to wrap the fragment in. Defaults to `doc`.
192
+ */
193
+ export declare function buildMentionFragmentJson(attrs: Record<string, unknown>, descriptor?: Pick<ResolvedDocumentSchema, 'documentNodeName'>, options?: MentionFragmentOptions): DocumentJSON;
package/dist/addons.js ADDED
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MENTION_NODE_NAME = exports.createMentionsAddon = exports.normalizeEditorAddons = void 0;
4
+ exports.mentionNodeSpec = mentionNodeSpec;
5
+ exports.withMentionsSchema = withMentionsSchema;
6
+ exports.normalizeNativeEditorAddons = normalizeNativeEditorAddons;
7
+ exports.serializeEditorAddons = serializeEditorAddons;
8
+ exports.serializeNormalizedEditorAddons = serializeNormalizedEditorAddons;
9
+ exports.buildMentionFragmentJson = buildMentionFragmentJson;
10
+ const EditorAddonNormalization_1 = require("./EditorAddonNormalization");
11
+ var EditorAddonNormalization_2 = require("./EditorAddonNormalization");
12
+ Object.defineProperty(exports, "normalizeEditorAddons", { enumerable: true, get: function () { return EditorAddonNormalization_2.normalizeEditorAddons; } });
13
+ var EditorAddon_1 = require("./EditorAddon");
14
+ Object.defineProperty(exports, "createMentionsAddon", { enumerable: true, get: function () { return EditorAddon_1.createMentionsAddon; } });
15
+ const EditorMentionThemeNormalization_1 = require("./EditorMentionThemeNormalization");
16
+ const schemas_1 = require("./schemas");
17
+ /** Node name mentions are stored under in the document. */
18
+ exports.MENTION_NODE_NAME = 'mention';
19
+ const DEFAULT_MENTION_TRIGGER = '@';
20
+ /**
21
+ * The mention node spec: a void inline node that round-trips arbitrary
22
+ * app-defined attributes. Add it through {@link withMentionsSchema} rather
23
+ * than assembling it by hand.
24
+ */
25
+ function mentionNodeSpec() {
26
+ return {
27
+ name: exports.MENTION_NODE_NAME,
28
+ content: '',
29
+ group: 'inline',
30
+ role: 'inline',
31
+ isVoid: true,
32
+ // Mention nodes round-trip arbitrary app-defined metadata (id, kind,
33
+ // mentionSuggestionChar, mentionTheme, and anything supplied via
34
+ // MentionSuggestion.attrs / resolveSelectionAttrs) that this fixed
35
+ // attrs map cannot enumerate. Opt out of the schema-declared-attrs
36
+ // filter that Rust's set_json ingestion otherwise applies.
37
+ allowUndeclaredAttrs: true,
38
+ attrs: {
39
+ label: { default: null },
40
+ },
41
+ };
42
+ }
43
+ /**
44
+ * Return `schema` with the mention node added, or `schema` unchanged when it
45
+ * already declares one. Apply it when creating the document handle for an
46
+ * editor that uses mentions.
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * createNativeEditorDocumentHandle({
51
+ * initialization: { type: 'localEmpty' },
52
+ * schema: withMentionsSchema(defaultSchema),
53
+ * });
54
+ * ```
55
+ */
56
+ function withMentionsSchema(schema) {
57
+ const hasMentionNode = schema.nodes.some((node) => node.name === exports.MENTION_NODE_NAME);
58
+ if (hasMentionNode) {
59
+ return schema;
60
+ }
61
+ return {
62
+ ...schema,
63
+ nodes: [...schema.nodes, mentionNodeSpec()],
64
+ };
65
+ }
66
+ function normalizeNativeEditorAddons(addons) {
67
+ if (!addons?.mentions) {
68
+ return addons?.codeHighlighting ? { codeHighlighting: addons.codeHighlighting } : undefined;
69
+ }
70
+ const trigger = addons.mentions.trigger?.trim() || DEFAULT_MENTION_TRIGGER;
71
+ const suggestions = (addons.mentions.suggestions ?? []).map((suggestion) => {
72
+ const label = suggestion.label?.trim() || suggestion.title;
73
+ const attrs = {
74
+ label,
75
+ mentionSuggestionChar: trigger,
76
+ ...(suggestion.attrs ?? {}),
77
+ };
78
+ return {
79
+ key: suggestion.key,
80
+ title: suggestion.title,
81
+ subtitle: suggestion.subtitle,
82
+ label,
83
+ attrs,
84
+ };
85
+ });
86
+ return {
87
+ mentions: {
88
+ trigger,
89
+ theme: (0, EditorMentionThemeNormalization_1.normalizeEditorMentionTheme)(addons.mentions.theme),
90
+ ...(typeof addons.mentions.resolveSelectionAttrs === 'function'
91
+ ? { resolveSelectionAttrs: true }
92
+ : {}),
93
+ ...(typeof addons.mentions.resolveTheme === 'function' ? { resolveTheme: true } : {}),
94
+ suggestions,
95
+ },
96
+ ...(addons.codeHighlighting ? { codeHighlighting: addons.codeHighlighting } : {}),
97
+ };
98
+ }
99
+ function serializeEditorAddons(addons) {
100
+ return serializeNormalizedEditorAddons((0, EditorAddonNormalization_1.normalizeEditorAddons)(addons));
101
+ }
102
+ function serializeNormalizedEditorAddons(addons) {
103
+ const normalized = normalizeNativeEditorAddons(addons);
104
+ return normalized ? JSON.stringify(normalized) : undefined;
105
+ }
106
+ /**
107
+ * Build a document fragment holding one mention node, ready for
108
+ * `insertContentJson`. Use it to insert a mention outside the suggestion
109
+ * flow — from a picker, say.
110
+ *
111
+ * @param attrs Attributes for the mention node, e.g. `{ label, id }`.
112
+ * @param descriptor Document node name to wrap the fragment in. Defaults to `doc`.
113
+ */
114
+ function buildMentionFragmentJson(attrs, descriptor, options) {
115
+ return (0, schemas_1.buildDocumentFragmentJson)([
116
+ {
117
+ type: exports.MENTION_NODE_NAME,
118
+ attrs,
119
+ },
120
+ ...(options?.trailingSpace ? [{ type: 'text', text: ' ' }] : []),
121
+ ], descriptor);
122
+ }
@@ -0,0 +1,3 @@
1
+ export declare const DEFAULT_ATOM_CHIP_HEIGHT = 32;
2
+ export declare const ATOM_NATIVE_ID_PREFIX = "prose-atom:";
3
+ export declare const ATOM_CONTENT_NATIVE_ID_PREFIX = "prose-atom-content:";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ATOM_CONTENT_NATIVE_ID_PREFIX = exports.ATOM_NATIVE_ID_PREFIX = exports.DEFAULT_ATOM_CHIP_HEIGHT = void 0;
4
+ exports.DEFAULT_ATOM_CHIP_HEIGHT = 32;
5
+ exports.ATOM_NATIVE_ID_PREFIX = 'prose-atom:';
6
+ exports.ATOM_CONTENT_NATIVE_ID_PREFIX = 'prose-atom-content:';
@@ -0,0 +1,35 @@
1
+ import type { Selection } from './NativeEditorBridge';
2
+ export { DEFAULT_ATOM_CHIP_HEIGHT } from './atomConstants';
3
+ export interface AtomInstance {
4
+ key: string;
5
+ hasStableKey: boolean;
6
+ nodeType: string;
7
+ attrs: Readonly<Record<string, unknown>>;
8
+ docPos: number;
9
+ }
10
+ export interface AtomInstanceCollection {
11
+ instanceBlocks: AtomInstance[][];
12
+ instances: AtomInstance[];
13
+ hasOnlyStableKeys: boolean;
14
+ }
15
+ export declare const NATIVE_VOID_BLOCK_TYPES: ReadonlySet<string>;
16
+ export type AtomUpdateAttrsErrorCode = 'not-applicable' | 'stale-revision' | 'not-ready' | 'engine-error';
17
+ export declare class AtomUpdateAttrsError extends Error {
18
+ readonly code: AtomUpdateAttrsErrorCode;
19
+ constructor(code: AtomUpdateAttrsErrorCode, message: string);
20
+ }
21
+ interface AtomRenderElement {
22
+ readonly type: string;
23
+ readonly nodeType?: string;
24
+ readonly docPos?: number;
25
+ readonly atomId?: string;
26
+ readonly attrs?: Readonly<Record<string, unknown>>;
27
+ }
28
+ export declare function collectAtomInstanceBlocks(renderBlocks: ReadonlyArray<ReadonlyArray<AtomRenderElement>>, registeredTypes: ReadonlySet<string>): AtomInstanceCollection;
29
+ export declare function collectAtomInstances(renderBlocks: ReadonlyArray<ReadonlyArray<AtomRenderElement>>, registeredTypes: ReadonlySet<string>): AtomInstance[];
30
+ export declare function applyRenderPatch<Element>(previousBlocks: ReadonlyArray<ReadonlyArray<Element>>, patch: {
31
+ readonly startIndex: number;
32
+ readonly deleteCount: number;
33
+ readonly renderBlocks: ReadonlyArray<ReadonlyArray<Element>>;
34
+ }): Array<ReadonlyArray<Element>>;
35
+ export declare function atomSelected(selection: Selection, docPos: number): boolean;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AtomUpdateAttrsError = exports.NATIVE_VOID_BLOCK_TYPES = exports.DEFAULT_ATOM_CHIP_HEIGHT = void 0;
4
+ exports.collectAtomInstanceBlocks = collectAtomInstanceBlocks;
5
+ exports.collectAtomInstances = collectAtomInstances;
6
+ exports.applyRenderPatch = applyRenderPatch;
7
+ exports.atomSelected = atomSelected;
8
+ var atomConstants_1 = require("./atomConstants");
9
+ Object.defineProperty(exports, "DEFAULT_ATOM_CHIP_HEIGHT", { enumerable: true, get: function () { return atomConstants_1.DEFAULT_ATOM_CHIP_HEIGHT; } });
10
+ exports.NATIVE_VOID_BLOCK_TYPES = new Set([
11
+ 'horizontalRule',
12
+ 'horizontal_rule',
13
+ 'image',
14
+ ]);
15
+ class AtomUpdateAttrsError extends Error {
16
+ constructor(code, message) {
17
+ super(message);
18
+ this.name = 'AtomUpdateAttrsError';
19
+ this.code = code;
20
+ }
21
+ }
22
+ exports.AtomUpdateAttrsError = AtomUpdateAttrsError;
23
+ const EMPTY_ATOM_ATTRS = Object.freeze({});
24
+ function collectAtomInstanceBlocks(renderBlocks, registeredTypes) {
25
+ const occurrences = new Map();
26
+ const instanceBlocks = [];
27
+ const instances = [];
28
+ let hasOnlyStableKeys = true;
29
+ for (const block of renderBlocks) {
30
+ const blockInstances = [];
31
+ for (const element of block) {
32
+ if (element.type !== 'voidBlock' ||
33
+ typeof element.nodeType !== 'string' ||
34
+ typeof element.docPos !== 'number') {
35
+ continue;
36
+ }
37
+ const occurrence = occurrences.get(element.nodeType) ?? 0;
38
+ occurrences.set(element.nodeType, occurrence + 1);
39
+ if (!registeredTypes.has(element.nodeType) &&
40
+ exports.NATIVE_VOID_BLOCK_TYPES.has(element.nodeType)) {
41
+ continue;
42
+ }
43
+ const hasStableKey = typeof element.atomId === 'string';
44
+ const instance = {
45
+ key: hasStableKey ? element.atomId : `${element.nodeType}:${occurrence}`,
46
+ hasStableKey,
47
+ nodeType: element.nodeType,
48
+ attrs: element.attrs ?? EMPTY_ATOM_ATTRS,
49
+ docPos: element.docPos,
50
+ };
51
+ hasOnlyStableKeys && (hasOnlyStableKeys = hasStableKey);
52
+ blockInstances.push(instance);
53
+ instances.push(instance);
54
+ }
55
+ instanceBlocks.push(blockInstances);
56
+ }
57
+ return { instanceBlocks, instances, hasOnlyStableKeys };
58
+ }
59
+ function collectAtomInstances(renderBlocks, registeredTypes) {
60
+ return collectAtomInstanceBlocks(renderBlocks, registeredTypes).instances;
61
+ }
62
+ function applyRenderPatch(previousBlocks, patch) {
63
+ return [
64
+ ...previousBlocks.slice(0, patch.startIndex),
65
+ ...patch.renderBlocks,
66
+ ...previousBlocks.slice(patch.startIndex + patch.deleteCount),
67
+ ];
68
+ }
69
+ function atomSelected(selection, docPos) {
70
+ if (selection.type === 'all')
71
+ return true;
72
+ if (selection.type === 'node')
73
+ return selection.pos === docPos;
74
+ const { anchor, head } = selection;
75
+ if (anchor == null || head == null)
76
+ return false;
77
+ const [from, to] = anchor <= head ? [anchor, head] : [head, anchor];
78
+ return from <= docPos && docPos + 1 <= to;
79
+ }
@@ -0,0 +1,4 @@
1
+ export declare const RESERVED_WIRE_NODE_TYPES: ReadonlySet<string>;
2
+ export declare const ATOM_HTML_IDENTIFIER: RegExp;
3
+ export declare const ATOM_HTML_DENIED_TAGS: ReadonlySet<string>;
4
+ export declare const ATOM_HTML_DENIED_ATTRS: ReadonlySet<string>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ATOM_HTML_DENIED_ATTRS = exports.ATOM_HTML_DENIED_TAGS = exports.ATOM_HTML_IDENTIFIER = exports.RESERVED_WIRE_NODE_TYPES = void 0;
4
+ exports.RESERVED_WIRE_NODE_TYPES = new Set([
5
+ '__opaque',
6
+ '__opaque_json',
7
+ '__skip',
8
+ ]);
9
+ exports.ATOM_HTML_IDENTIFIER = /^[a-z][a-z0-9-]*$/;
10
+ exports.ATOM_HTML_DENIED_TAGS = new Set([
11
+ 'script',
12
+ 'style',
13
+ 'iframe',
14
+ 'object',
15
+ 'embed',
16
+ 'link',
17
+ 'meta',
18
+ 'base',
19
+ 'title',
20
+ 'head',
21
+ 'html',
22
+ 'body',
23
+ 'form',
24
+ 'textarea',
25
+ 'select',
26
+ 'option',
27
+ 'button',
28
+ 'area',
29
+ 'br',
30
+ 'col',
31
+ 'hr',
32
+ 'img',
33
+ 'input',
34
+ 'param',
35
+ 'source',
36
+ 'track',
37
+ 'wbr',
38
+ ]);
39
+ exports.ATOM_HTML_DENIED_ATTRS = new Set([
40
+ 'style',
41
+ 'srcdoc',
42
+ 'href',
43
+ 'src',
44
+ 'srcset',
45
+ 'action',
46
+ 'formaction',
47
+ ]);
@@ -0,0 +1,2 @@
1
+ import type { AtomAttrsUpdate } from './atoms';
2
+ export declare function resolveAtomAttrsUpdate(attrs: Readonly<Record<string, unknown>>, update: AtomAttrsUpdate): Record<string, unknown>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveAtomAttrsUpdate = resolveAtomAttrsUpdate;
4
+ const atomInstances_1 = require("./atomInstances");
5
+ function copyJson(value, ancestors = new Set()) {
6
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
7
+ return value;
8
+ if (typeof value === 'number' && Number.isFinite(value))
9
+ return value;
10
+ if (typeof value !== 'object' || ancestors.has(value) || ancestors.size > 128) {
11
+ throw new atomInstances_1.AtomUpdateAttrsError('not-applicable', 'Atom attributes must contain finite JSON values.');
12
+ }
13
+ if (!Array.isArray(value) &&
14
+ Object.getPrototypeOf(value) !== Object.prototype &&
15
+ Object.getPrototypeOf(value) !== null) {
16
+ throw new atomInstances_1.AtomUpdateAttrsError('not-applicable', 'Atom attributes must contain plain JSON objects.');
17
+ }
18
+ ancestors.add(value);
19
+ const result = Array.isArray(value)
20
+ ? Array.from(value, (entry) => copyJson(entry, ancestors))
21
+ : Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, copyJson(entry, ancestors)]));
22
+ ancestors.delete(value);
23
+ return Object.freeze(result);
24
+ }
25
+ function resolveAtomAttrsUpdate(attrs, update) {
26
+ let current = copyJson(attrs);
27
+ let patch = {};
28
+ for (const entry of Array.isArray(update) ? update : [update]) {
29
+ const value = typeof entry === 'function' ? entry(current) : entry;
30
+ if (value == null || typeof value !== 'object' || Array.isArray(value)) {
31
+ throw new atomInstances_1.AtomUpdateAttrsError('not-applicable', 'Atom updates must return an attribute object.');
32
+ }
33
+ const partial = copyJson(value);
34
+ patch = { ...patch, ...partial };
35
+ current = Object.freeze({ ...current, ...partial });
36
+ }
37
+ return patch;
38
+ }
@@ -0,0 +1,92 @@
1
+ import type { ComponentType } from 'react';
2
+ import type { DocumentJSON } from './NativeEditorBridge';
3
+ import type { AttrSpec, NodeHtmlRules, NodeSpec, ResolvedDocumentSchema, SchemaDefinition } from './schemas';
4
+ export type AtomAttrsUpdate<A = Record<string, unknown>> = Partial<A> | ((current: Readonly<A>) => Partial<A>) | readonly (Partial<A> | ((current: Readonly<A>) => Partial<A>))[];
5
+ export interface AtomEditorActions {
6
+ select(): Promise<void>;
7
+ delete(): Promise<void>;
8
+ focusBefore(): Promise<void>;
9
+ focusAfter(): Promise<void>;
10
+ }
11
+ export interface AtomComponentProps<A = Record<string, unknown>> {
12
+ attrs: Readonly<A>;
13
+ selected: boolean;
14
+ readOnly: boolean;
15
+ isViewer: boolean;
16
+ nodeType: string;
17
+ updateAttrs: (update: AtomAttrsUpdate<A>) => Promise<void>;
18
+ interactive: boolean;
19
+ updatePending: boolean;
20
+ updateError: Error | null;
21
+ editor?: AtomEditorActions;
22
+ setActive: (active: boolean) => void;
23
+ }
24
+ export type AtomComponent<A = Record<string, unknown>> = ComponentType<AtomComponentProps<A>>;
25
+ type JsonAttributeKind<T> = T extends string ? 'string' : T extends number ? 'number' : T extends boolean ? 'boolean' : T extends readonly unknown[] ? 'array' : T extends object ? 'object' : never;
26
+ type AttributeKind<T> = unknown extends T ? AttrSpec['type'] : JsonAttributeKind<NonNullable<T>>;
27
+ type AtomAttributeSpecs<A> = {
28
+ [K in keyof A]-?: Omit<AttrSpec, 'default' | 'type' | 'enum'> & {
29
+ default?: A[K];
30
+ type?: AttributeKind<A[K]>;
31
+ enum?: readonly A[K][];
32
+ };
33
+ };
34
+ type WidenDefault<T> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T extends readonly (infer Item)[] ? [Item] extends [never] ? unknown[] : WidenDefault<Item>[] : T extends object ? {
35
+ -readonly [K in keyof T]: WidenDefault<T[K]>;
36
+ } : T;
37
+ type HasDefault<S> = S extends {
38
+ default: infer D;
39
+ } ? (undefined extends D ? false : true) : false;
40
+ export interface AtomNodeConfig<A = Record<string, unknown>> {
41
+ name: string;
42
+ attrs?: AtomAttributeSpecs<A>;
43
+ html: NodeHtmlRules;
44
+ component: AtomComponent<A>;
45
+ estimatedHeight?: number;
46
+ idAttribute?: string;
47
+ }
48
+ type RequiredKeys<A> = {
49
+ [K in keyof A]-?: {} extends Pick<A, K> ? never : K;
50
+ }[keyof A];
51
+ export interface AtomNodeDefinition<A = Record<string, unknown>, Input = A> extends Readonly<AtomNodeConfig<A>> {
52
+ readonly nodeSpec: NodeSpec;
53
+ buildFragmentJson(...args: RequiredKeys<Input> extends never ? [attrs?: Input, descriptor?: Pick<ResolvedDocumentSchema, 'documentNodeName'>] : [attrs: Input, descriptor?: Pick<ResolvedDocumentSchema, 'documentNodeName'>]): DocumentJSON;
54
+ }
55
+ type AttrValue<S> = S extends {
56
+ enum: readonly (infer E)[];
57
+ } ? E : S extends {
58
+ type: 'string';
59
+ } ? string : S extends {
60
+ type: 'number';
61
+ } ? number : S extends {
62
+ type: 'boolean';
63
+ } ? boolean : S extends {
64
+ type: 'object';
65
+ } ? Record<string, unknown> : S extends {
66
+ type: 'array';
67
+ } ? unknown[] : S extends {
68
+ default: infer D;
69
+ } ? WidenDefault<D> : unknown;
70
+ export type InferAtomAttrs<S extends Record<string, AttrSpec>> = {
71
+ -readonly [K in keyof S]: AttrValue<S[K]>;
72
+ };
73
+ type AtomInput<S extends Record<string, AttrSpec>> = {
74
+ -readonly [K in keyof S as HasDefault<S[K]> extends true ? never : K]: AttrValue<S[K]>;
75
+ } & {
76
+ -readonly [K in keyof S as HasDefault<S[K]> extends true ? K : never]?: AttrValue<S[K]>;
77
+ };
78
+ export interface SerializedEditorAtoms {
79
+ nodeTypes: string[];
80
+ estimatedHeights: Record<string, number>;
81
+ }
82
+ export declare function defineAtomNode<const S extends Record<string, AttrSpec>>(config: Omit<AtomNodeConfig<NoInfer<InferAtomAttrs<S>>>, 'attrs'> & {
83
+ attrs: S;
84
+ }): AtomNodeDefinition<InferAtomAttrs<S>, AtomInput<S>> & {
85
+ readonly attrs: S;
86
+ };
87
+ export declare function defineAtomNode<A = Record<string, unknown>>(config: AtomNodeConfig<A> & (string extends keyof A ? {} : {
88
+ attrs: AtomAttributeSpecs<A>;
89
+ })): AtomNodeDefinition<A, Required<A>>;
90
+ export declare function withAtomsSchema(schema: SchemaDefinition, atoms: readonly AtomNodeDefinition<any>[]): SchemaDefinition;
91
+ export declare function serializeEditorAtoms(atoms?: readonly AtomNodeDefinition<any>[]): string | undefined;
92
+ export {};