@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.
- package/LICENSE +160 -0
- package/README.md +259 -0
- package/RUST-STANDARD-LIBRARY-NOTICES.html +8266 -0
- package/ReactNativeProseEditor.podspec +59 -0
- package/THIRD_PARTY_NOTICES.md +31155 -0
- package/android/build.gradle +188 -0
- package/android/consumer-rules.pro +18 -0
- package/android/expo/build.gradle +17 -0
- package/android/src/debug/java/com/apollohg/editor/viewer/PreparedProseDrawInstrumentation.kt +7 -0
- package/android/src/main/assets/editor-icons/MaterialIcons.json +2236 -0
- package/android/src/main/assets/editor-icons/MaterialIcons.ttf +0 -0
- package/android/src/main/java/com/apollohg/editor/AndroidApiCompat.kt +19 -0
- package/android/src/main/java/com/apollohg/editor/AndroidCollaborationTransport.kt +860 -0
- package/android/src/main/java/com/apollohg/editor/CaretGeometry.kt +91 -0
- package/android/src/main/java/com/apollohg/editor/CodeHighlighting.kt +141 -0
- package/android/src/main/java/com/apollohg/editor/DecodedBitmapBudget.kt +250 -0
- package/android/src/main/java/com/apollohg/editor/EditorAddons.kt +133 -0
- package/android/src/main/java/com/apollohg/editor/EditorBlockSpacing.kt +51 -0
- package/android/src/main/java/com/apollohg/editor/EditorBoxDrawable.kt +16 -0
- package/android/src/main/java/com/apollohg/editor/EditorBoxDrawing.kt +234 -0
- package/android/src/main/java/com/apollohg/editor/EditorCheckboxSpan.kt +87 -0
- package/android/src/main/java/com/apollohg/editor/EditorCodeHighlighting.kt +120 -0
- package/android/src/main/java/com/apollohg/editor/EditorDecorationLayer.java +18 -0
- package/android/src/main/java/com/apollohg/editor/EditorDocumentLayout.kt +626 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditText.kt +1042 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextAnnotations.kt +191 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextCaret.kt +100 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextClipboard.kt +101 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextComposition.kt +220 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextConfiguration.kt +316 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextCorrection.kt +303 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextDeferredUpdates.kt +327 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextDeletion.kt +258 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextDiagnostics.kt +83 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextDragDrop.kt +67 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextExternalComposition.kt +357 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextHardwareInput.kt +277 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextImages.kt +280 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextInputLifecycle.kt +183 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextInputPreparation.kt +79 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextInputTraits.kt +384 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextLayout.kt +100 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextNativeMutation.kt +243 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextPlaceholder.kt +154 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextRenderPatch.kt +347 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextRendering.kt +313 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextRustCommands.kt +281 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextSelection.kt +352 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextState.kt +113 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextTaskMarkers.kt +92 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextTextCommit.kt +327 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextToolbar.kt +84 -0
- package/android/src/main/java/com/apollohg/editor/EditorEditTextUpdates.kt +245 -0
- package/android/src/main/java/com/apollohg/editor/EditorGlyphHeightCursorDrawable.kt +42 -0
- package/android/src/main/java/com/apollohg/editor/EditorHeightBehavior.kt +13 -0
- package/android/src/main/java/com/apollohg/editor/EditorInputConnection.kt +923 -0
- package/android/src/main/java/com/apollohg/editor/EditorInputCoordinates.kt +191 -0
- package/android/src/main/java/com/apollohg/editor/EditorInputCorrection.kt +107 -0
- package/android/src/main/java/com/apollohg/editor/EditorInputCursorGeometry.kt +128 -0
- package/android/src/main/java/com/apollohg/editor/EditorInputSnapshots.kt +134 -0
- package/android/src/main/java/com/apollohg/editor/EditorInputSurroundingDeletion.kt +321 -0
- package/android/src/main/java/com/apollohg/editor/EditorKeyboardToolbarView.kt +851 -0
- package/android/src/main/java/com/apollohg/editor/EditorMentionStyle.kt +192 -0
- package/android/src/main/java/com/apollohg/editor/EditorReconciliationWatcher.kt +46 -0
- package/android/src/main/java/com/apollohg/editor/EditorStyleSheet.kt +303 -0
- package/android/src/main/java/com/apollohg/editor/EditorStyleSheetSpans.kt +253 -0
- package/android/src/main/java/com/apollohg/editor/EditorSurfaceInputConnection.kt +67 -0
- package/android/src/main/java/com/apollohg/editor/EditorTextDecorationDrawing.kt +143 -0
- package/android/src/main/java/com/apollohg/editor/EditorTextSurface.kt +712 -0
- package/android/src/main/java/com/apollohg/editor/EditorTextSurfaceDragDrop.kt +94 -0
- package/android/src/main/java/com/apollohg/editor/EditorTextSurfaceInteraction.kt +708 -0
- package/android/src/main/java/com/apollohg/editor/EditorTheme.kt +650 -0
- package/android/src/main/java/com/apollohg/editor/EditorV2Adapter.kt +912 -0
- package/android/src/main/java/com/apollohg/editor/EditorV2AdapterMutations.kt +402 -0
- package/android/src/main/java/com/apollohg/editor/EditorV2AdapterRendering.kt +123 -0
- package/android/src/main/java/com/apollohg/editor/EditorV2AdapterSelection.kt +203 -0
- package/android/src/main/java/com/apollohg/editor/EditorV2Backend.kt +120 -0
- package/android/src/main/java/com/apollohg/editor/EditorV2Driver.kt +87 -0
- package/android/src/main/java/com/apollohg/editor/EditorV2Registry.kt +97 -0
- package/android/src/main/java/com/apollohg/editor/EditorV2RenderValidation.kt +409 -0
- package/android/src/main/java/com/apollohg/editor/ExpoAutoGrowStyleSizePublisher.kt +34 -0
- package/android/src/main/java/com/apollohg/editor/ImageResizeOverlayView.kt +266 -0
- package/android/src/main/java/com/apollohg/editor/ImeTextCoordinateMapper.kt +102 -0
- package/android/src/main/java/com/apollohg/editor/KeyboardToolbarImeAnimationController.kt +101 -0
- package/android/src/main/java/com/apollohg/editor/MentionSuggestionChipView.kt +234 -0
- package/android/src/main/java/com/apollohg/editor/NativeCollaborationTransportRegistry.kt +493 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoView.kt +813 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewAtoms.kt +68 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewBinding.kt +126 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewDiagnostics.kt +208 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewErrors.kt +146 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewEvents.kt +150 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewExternalComposition.kt +39 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewFocus.kt +176 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewLifecycle.kt +302 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewMentions.kt +259 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewNativeActions.kt +179 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewOutsideTap.kt +214 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewPendingUpdates.kt +376 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewProperties.kt +234 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewPropertyRetries.kt +197 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewToolbar.kt +285 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewTypes.kt +28 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorExpoViewUpdates.kt +271 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorModule.kt +687 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorOutsideTapDispatcher.kt +380 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorV2Numbers.kt +45 -0
- package/android/src/main/java/com/apollohg/editor/NativeEditorViewRegistry.kt +372 -0
- package/android/src/main/java/com/apollohg/editor/NativeImagePipeline.kt +22 -0
- package/android/src/main/java/com/apollohg/editor/NativeToolbar.kt +193 -0
- package/android/src/main/java/com/apollohg/editor/NativeToolbarIcons.kt +177 -0
- package/android/src/main/java/com/apollohg/editor/NativeToolbarItem.kt +274 -0
- package/android/src/main/java/com/apollohg/editor/OkHttpCollaborationSocket.kt +102 -0
- package/android/src/main/java/com/apollohg/editor/OrderedListMarkerFormatter.kt +130 -0
- package/android/src/main/java/com/apollohg/editor/PointerTransparentView.java +18 -0
- package/android/src/main/java/com/apollohg/editor/PositionBridge.kt +128 -0
- package/android/src/main/java/com/apollohg/editor/ProseViewerView.kt +854 -0
- package/android/src/main/java/com/apollohg/editor/RemoteSelectionOverlayView.kt +314 -0
- package/android/src/main/java/com/apollohg/editor/RenderBlockSpans.kt +314 -0
- package/android/src/main/java/com/apollohg/editor/RenderBridge.kt +224 -0
- package/android/src/main/java/com/apollohg/editor/RenderBridgeBlockStyles.kt +407 -0
- package/android/src/main/java/com/apollohg/editor/RenderBridgeElements.kt +544 -0
- package/android/src/main/java/com/apollohg/editor/RenderBridgeInlineAndAtoms.kt +631 -0
- package/android/src/main/java/com/apollohg/editor/RenderBridgeParagraphs.kt +215 -0
- package/android/src/main/java/com/apollohg/editor/RenderImageDecoder.kt +748 -0
- package/android/src/main/java/com/apollohg/editor/RenderImageLoader.kt +900 -0
- package/android/src/main/java/com/apollohg/editor/RenderLayoutConstants.kt +117 -0
- package/android/src/main/java/com/apollohg/editor/RenderMediaSpans.kt +337 -0
- package/android/src/main/java/com/apollohg/editor/RenderParagraphSpans.kt +182 -0
- package/android/src/main/java/com/apollohg/editor/RichTextEditorView.kt +951 -0
- package/android/src/main/java/com/apollohg/editor/SharedNativeImagePipeline.kt +78 -0
- package/android/src/main/java/com/apollohg/editor/UniffiEditorV2Backend.kt +261 -0
- package/android/src/main/java/com/apollohg/editor/viewer/AndroidProseLayoutEngine.kt +1656 -0
- package/android/src/main/java/com/apollohg/editor/viewer/FabricAttachmentSidecars.kt +80 -0
- package/android/src/main/java/com/apollohg/editor/viewer/FabricLeaseHandleBridge.kt +59 -0
- package/android/src/main/java/com/apollohg/editor/viewer/FallbackSelectionGeometry.kt +450 -0
- package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseDrawingView.kt +678 -0
- package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseInstrumentation.kt +608 -0
- package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseLayout.kt +186 -0
- package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseLayoutCache.kt +393 -0
- package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseLayoutRegistry.kt +828 -0
- package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseTheme.kt +316 -0
- package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseViewerManager.kt +900 -0
- package/android/src/main/java/com/apollohg/editor/viewer/PreparedProseViewerPackage.kt +16 -0
- package/android/src/main/java/com/apollohg/editor/viewer/PreparedViewerAtoms.kt +89 -0
- package/android/src/main/java/com/apollohg/editor/viewer/ViewerCodeHighlighting.kt +91 -0
- package/android/src/main/java/com/apollohg/editor/viewer/ViewerDocument.kt +453 -0
- package/android/src/main/java/com/apollohg/editor/viewer/ViewerFontEnvironment.kt +282 -0
- package/android/src/main/java/com/apollohg/editor/viewer/ViewerImagePipeline.kt +460 -0
- package/android/src/main/jni/CMakeLists.txt +85 -0
- package/android/src/main/jni/PreparedProseViewerMeasurementsManager.cpp +334 -0
- package/android/src/main/jni/ReactNativeProseEditorSpec.h +17 -0
- package/android/src/main/jni/reactnativeproseeditor.h +6 -0
- package/android/src/main/res/values/attrs.xml +6 -0
- package/android/src/release/java/com/apollohg/editor/viewer/PreparedProseDrawInstrumentation.kt +9 -0
- package/app.plugin.js +62 -0
- package/common/cpp/react/renderer/components/PreparedProseViewer/PreparedProseMeasurementsManager.h +62 -0
- package/common/cpp/react/renderer/components/PreparedProseViewer/PreparedProseViewerComponentDescriptor.h +30 -0
- package/common/cpp/react/renderer/components/PreparedProseViewer/PreparedProseViewerShadowNode.cpp +192 -0
- package/common/cpp/react/renderer/components/PreparedProseViewer/PreparedProseViewerShadowNode.h +46 -0
- package/common/cpp/react/renderer/components/PreparedProseViewer/PreparedProseViewerState.h +145 -0
- package/dist/AtomHost.d.ts +17 -0
- package/dist/AtomHost.js +135 -0
- package/dist/DefaultAtomChip.d.ts +2 -0
- package/dist/DefaultAtomChip.js +22 -0
- package/dist/EditorAddon.d.ts +32 -0
- package/dist/EditorAddon.js +29 -0
- package/dist/EditorAddonNormalization.d.ts +6 -0
- package/dist/EditorAddonNormalization.js +48 -0
- package/dist/EditorMentionThemeNormalization.d.ts +8 -0
- package/dist/EditorMentionThemeNormalization.js +22 -0
- package/dist/EditorMentionThemeValidation.d.ts +12 -0
- package/dist/EditorMentionThemeValidation.js +95 -0
- package/dist/EditorStyleSheet.d.ts +4 -0
- package/dist/EditorStyleSheet.js +10 -0
- package/dist/EditorStyleSheetNormalization.d.ts +3 -0
- package/dist/EditorStyleSheetNormalization.js +226 -0
- package/dist/EditorStyleSheetTypes.d.ts +151 -0
- package/dist/EditorStyleSheetTypes.js +2 -0
- package/dist/EditorTheme.d.ts +117 -0
- package/dist/EditorTheme.js +41 -0
- package/dist/EditorToolbar.d.ts +4 -0
- package/dist/EditorToolbar.js +17 -0
- package/dist/EditorToolbarComponent.d.ts +13 -0
- package/dist/EditorToolbarComponent.js +24 -0
- package/dist/EditorToolbarItems.d.ts +9 -0
- package/dist/EditorToolbarItems.js +58 -0
- package/dist/EditorToolbarRegistry.d.ts +59 -0
- package/dist/EditorToolbarRegistry.js +175 -0
- package/dist/EditorToolbarTypes.d.ts +273 -0
- package/dist/EditorToolbarTypes.js +2 -0
- package/dist/EditorToolbarVisuals.d.ts +154 -0
- package/dist/EditorToolbarVisuals.js +228 -0
- package/dist/EditorUpdateRevision.d.ts +8 -0
- package/dist/EditorUpdateRevision.js +22 -0
- package/dist/ExternalTextComposition.d.ts +45 -0
- package/dist/ExternalTextComposition.js +537 -0
- package/dist/ImageLoadingPolicy.d.ts +54 -0
- package/dist/ImageLoadingPolicy.js +60 -0
- package/dist/NativeEditorBoundaryError.d.ts +111 -0
- package/dist/NativeEditorBoundaryError.js +268 -0
- package/dist/NativeEditorBridge.d.ts +9 -0
- package/dist/NativeEditorBridge.js +37 -0
- package/dist/NativeEditorCollaborationTransport.d.ts +154 -0
- package/dist/NativeEditorCollaborationTransport.js +275 -0
- package/dist/NativeEditorCreateConfig.d.ts +16 -0
- package/dist/NativeEditorCreateConfig.js +249 -0
- package/dist/NativeEditorCreateJson.d.ts +76 -0
- package/dist/NativeEditorCreateJson.js +474 -0
- package/dist/NativeEditorCreateValidation.d.ts +32 -0
- package/dist/NativeEditorCreateValidation.js +150 -0
- package/dist/NativeEditorDocumentBridge.d.ts +72 -0
- package/dist/NativeEditorDocumentBridge.js +305 -0
- package/dist/NativeEditorDocumentHandle.d.ts +70 -0
- package/dist/NativeEditorDocumentHandle.js +89 -0
- package/dist/NativeEditorLocalAwareness.d.ts +34 -0
- package/dist/NativeEditorLocalAwareness.js +153 -0
- package/dist/NativeEditorNativeModule.d.ts +48 -0
- package/dist/NativeEditorNativeModule.js +34 -0
- package/dist/NativeEditorRenderNormalization.d.ts +22 -0
- package/dist/NativeEditorRenderNormalization.js +274 -0
- package/dist/NativeEditorResultNormalization.d.ts +108 -0
- package/dist/NativeEditorResultNormalization.js +400 -0
- package/dist/NativeEditorTypes.d.ts +318 -0
- package/dist/NativeEditorTypes.js +15 -0
- package/dist/NativeEditorV2Decimal.d.ts +5 -0
- package/dist/NativeEditorV2Decimal.js +18 -0
- package/dist/NativeProseViewer.d.ts +122 -0
- package/dist/NativeProseViewer.js +130 -0
- package/dist/NativeRichTextEditor.d.ts +3 -0
- package/dist/NativeRichTextEditor.js +6 -0
- package/dist/ResourceLimits.d.ts +100 -0
- package/dist/ResourceLimits.js +80 -0
- package/dist/RichTextEditor.d.ts +4 -0
- package/dist/RichTextEditor.js +25 -0
- package/dist/RichTextEditorNativeTypes.d.ts +122 -0
- package/dist/RichTextEditorNativeTypes.js +2 -0
- package/dist/RichTextEditorNativeView.d.ts +12 -0
- package/dist/RichTextEditorNativeView.js +15 -0
- package/dist/RichTextEditorSerialization.d.ts +53 -0
- package/dist/RichTextEditorSerialization.js +283 -0
- package/dist/RichTextEditorTypes.d.ts +281 -0
- package/dist/RichTextEditorTypes.js +2 -0
- package/dist/ViewerConfiguration.d.ts +22 -0
- package/dist/ViewerConfiguration.js +6 -0
- package/dist/YjsCollaboration.d.ts +146 -0
- package/dist/YjsCollaboration.js +496 -0
- package/dist/addons.d.ts +193 -0
- package/dist/addons.js +122 -0
- package/dist/atomConstants.d.ts +3 -0
- package/dist/atomConstants.js +6 -0
- package/dist/atomInstances.d.ts +35 -0
- package/dist/atomInstances.js +79 -0
- package/dist/atomPolicy.d.ts +4 -0
- package/dist/atomPolicy.js +47 -0
- package/dist/atomUpdates.d.ts +2 -0
- package/dist/atomUpdates.js +38 -0
- package/dist/atoms.d.ts +92 -0
- package/dist/atoms.js +222 -0
- package/dist/attributeValidation.d.ts +4 -0
- package/dist/attributeValidation.js +97 -0
- package/dist/contentExpression.d.ts +6 -0
- package/dist/contentExpression.js +335 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +78 -0
- package/dist/listMarkers.d.ts +15 -0
- package/dist/listMarkers.js +21 -0
- package/dist/schemaDefinition.d.ts +143 -0
- package/dist/schemaDefinition.js +206 -0
- package/dist/schemaDocument.d.ts +17 -0
- package/dist/schemaDocument.js +69 -0
- package/dist/schemaDocumentConstruction.d.ts +5 -0
- package/dist/schemaDocumentConstruction.js +125 -0
- package/dist/schemaNormalization.d.ts +29 -0
- package/dist/schemaNormalization.js +313 -0
- package/dist/schemaPresets.d.ts +68 -0
- package/dist/schemaPresets.js +198 -0
- package/dist/schemaResolution.d.ts +9 -0
- package/dist/schemaResolution.js +211 -0
- package/dist/schemas.d.ts +5 -0
- package/dist/schemas.js +28 -0
- package/dist/specs/PreparedProseViewerNativeComponent.d.ts +37 -0
- package/dist/specs/PreparedProseViewerNativeComponent.js +6 -0
- package/dist/useEditorToolbarInteractions.d.ts +12 -0
- package/dist/useEditorToolbarInteractions.js +218 -0
- package/dist/useEditorToolbarItems.d.ts +8 -0
- package/dist/useEditorToolbarItems.js +280 -0
- package/dist/useEditorToolbarPresentation.d.ts +4 -0
- package/dist/useEditorToolbarPresentation.js +203 -0
- package/dist/useEditorToolbarState.d.ts +63 -0
- package/dist/useEditorToolbarState.js +108 -0
- package/dist/useFocusPreservingFrames.d.ts +17 -0
- package/dist/useFocusPreservingFrames.js +108 -0
- package/dist/useNativeEditor.d.ts +66 -0
- package/dist/useNativeEditor.js +370 -0
- package/dist/useRichTextEditorCommands.d.ts +21 -0
- package/dist/useRichTextEditorCommands.js +299 -0
- package/dist/useRichTextEditorEvents.d.ts +18 -0
- package/dist/useRichTextEditorEvents.js +216 -0
- package/dist/useRichTextEditorMentions.d.ts +11 -0
- package/dist/useRichTextEditorMentions.js +316 -0
- package/dist/useRichTextEditorPresentation.d.ts +5 -0
- package/dist/useRichTextEditorPresentation.js +178 -0
- package/dist/useRichTextEditorState.d.ts +180 -0
- package/dist/useRichTextEditorState.js +405 -0
- package/dist/useRichTextEditorUpdates.d.ts +10 -0
- package/dist/useRichTextEditorUpdates.js +308 -0
- package/dist/useViewerAtoms.d.ts +38 -0
- package/dist/useViewerAtoms.js +288 -0
- package/expo-module.config.json +13 -0
- package/ios/EditorAddons.swift +354 -0
- package/ios/EditorCodeHighlighting.swift +184 -0
- package/ios/EditorCore.xcframework/Info.plist +44 -0
- package/ios/EditorCore.xcframework/ios-arm64/libeditor_core.a +0 -0
- package/ios/EditorCore.xcframework/ios-arm64_x86_64-simulator/libeditor_core.a +0 -0
- package/ios/EditorInteractionOverlays.swift +697 -0
- package/ios/EditorLayoutManager.swift +971 -0
- package/ios/EditorNodeTypes.swift +37 -0
- package/ios/EditorStyleSheet.swift +461 -0
- package/ios/EditorTextView+AttributedPatch.swift +305 -0
- package/ios/EditorTextView+Binding.swift +61 -0
- package/ios/EditorTextView+Caret.swift +333 -0
- package/ios/EditorTextView+Commands.swift +203 -0
- package/ios/EditorTextView+Delegate.swift +65 -0
- package/ios/EditorTextView+Diagnostics.swift +225 -0
- package/ios/EditorTextView+DragDrop.swift +290 -0
- package/ios/EditorTextView+ExternalComposition.swift +364 -0
- package/ios/EditorTextView+Images.swift +354 -0
- package/ios/EditorTextView+InputTraits.swift +200 -0
- package/ios/EditorTextView+KeyboardInput.swift +318 -0
- package/ios/EditorTextView+Layout.swift +245 -0
- package/ios/EditorTextView+MarkedText.swift +267 -0
- package/ios/EditorTextView+NativeInputLifecycle.swift +372 -0
- package/ios/EditorTextView+NativeMutation.swift +471 -0
- package/ios/EditorTextView+Reconciliation.swift +97 -0
- package/ios/EditorTextView+RenderPatch.swift +573 -0
- package/ios/EditorTextView+Rendering.swift +539 -0
- package/ios/EditorTextView+Selection.swift +542 -0
- package/ios/EditorTextView.swift +953 -0
- package/ios/EditorTheme.swift +626 -0
- package/ios/EditorV2Adapter+Commands.swift +204 -0
- package/ios/EditorV2Adapter+Envelope.swift +238 -0
- package/ios/EditorV2Adapter+Mutation.swift +392 -0
- package/ios/EditorV2Adapter+Registry.swift +185 -0
- package/ios/EditorV2Adapter+RenderState.swift +360 -0
- package/ios/EditorV2Adapter+RenderValidation.swift +420 -0
- package/ios/EditorV2Adapter+Selection.swift +329 -0
- package/ios/EditorV2Adapter+TextCommands.swift +430 -0
- package/ios/EditorV2Adapter.swift +376 -0
- package/ios/EditorV2Shadow.swift +353 -0
- package/ios/Generated_editor_core.swift +2378 -0
- package/ios/NativeCodeHighlighting.swift +159 -0
- package/ios/NativeCollaborationSocket.swift +144 -0
- package/ios/NativeCollaborationTransport+Protocol.swift +258 -0
- package/ios/NativeCollaborationTransport+Socket.swift +379 -0
- package/ios/NativeCollaborationTransport+Validation.swift +103 -0
- package/ios/NativeCollaborationTransport.swift +322 -0
- package/ios/NativeCollaborationTransportRegistry.swift +521 -0
- package/ios/NativeEditorExpoView+AccessoryRetry.swift +219 -0
- package/ios/NativeEditorExpoView+Binding.swift +268 -0
- package/ios/NativeEditorExpoView+Diagnostics.swift +66 -0
- package/ios/NativeEditorExpoView+Events.swift +131 -0
- package/ios/NativeEditorExpoView+Focus.swift +169 -0
- package/ios/NativeEditorExpoView+MentionRetry.swift +288 -0
- package/ios/NativeEditorExpoView+Mentions.swift +288 -0
- package/ios/NativeEditorExpoView+Properties.swift +300 -0
- package/ios/NativeEditorExpoView+Toolbar.swift +86 -0
- package/ios/NativeEditorExpoView+Updates.swift +312 -0
- package/ios/NativeEditorExpoView.swift +349 -0
- package/ios/NativeEditorModule.swift +856 -0
- package/ios/NativeEditorViewRegistry.swift +226 -0
- package/ios/NativeToolbar+ButtonStyle.swift +214 -0
- package/ios/NativeToolbar+Buttons.swift +228 -0
- package/ios/NativeToolbar+Diagnostics.swift +114 -0
- package/ios/NativeToolbar+Menu.swift +101 -0
- package/ios/NativeToolbar+Models.swift +519 -0
- package/ios/NativeToolbar+Placeholder.swift +39 -0
- package/ios/NativeToolbar.swift +612 -0
- package/ios/OrderedListMarkerFormatter.swift +103 -0
- package/ios/PositionBridge.swift +596 -0
- package/ios/ProseViewerView.swift +462 -0
- package/ios/RenderBridge+Atoms.swift +288 -0
- package/ios/RenderBridge+Attachments.swift +246 -0
- package/ios/RenderBridge+BlockBoundaries.swift +313 -0
- package/ios/RenderBridge+Style.swift +343 -0
- package/ios/RenderBridge.swift +704 -0
- package/ios/RichTextEditorView.swift +930 -0
- package/ios/SharedNativeImagePipeline+Cache.swift +189 -0
- package/ios/SharedNativeImagePipeline+Transport.swift +328 -0
- package/ios/SharedNativeImagePipeline.swift +533 -0
- package/ios/Viewer/CoreTextProseLayoutEngine+AttributedText.swift +436 -0
- package/ios/Viewer/CoreTextProseLayoutEngine+Models.swift +322 -0
- package/ios/Viewer/CoreTextProseLayoutEngine.swift +635 -0
- package/ios/Viewer/Fabric/PREPPreparedProseViewerComponentView.h +4 -0
- package/ios/Viewer/Fabric/PREPPreparedProseViewerComponentView.mm +767 -0
- package/ios/Viewer/Fabric/PreparedProseMeasurementsManager.mm +118 -0
- package/ios/Viewer/NativeSVGImageDecoder.h +9 -0
- package/ios/Viewer/NativeSVGImageDecoder.mm +106 -0
- package/ios/Viewer/NativeSVGPreflight.h +11 -0
- package/ios/Viewer/NativeSVGPreflight.mm +219 -0
- package/ios/Viewer/PreparedProseDrawingView.swift +639 -0
- package/ios/Viewer/PreparedProseInstrumentation.swift +387 -0
- package/ios/Viewer/PreparedProseLayout.swift +326 -0
- package/ios/Viewer/PreparedProseLayoutCache.swift +766 -0
- package/ios/Viewer/PreparedProseLayoutRegistry+Artifacts.swift +377 -0
- package/ios/Viewer/PreparedProseLayoutRegistry+Fabric.swift +582 -0
- package/ios/Viewer/PreparedProseLayoutRegistry+FabricOwnership.swift +128 -0
- package/ios/Viewer/PreparedProseLayoutRegistry.swift +381 -0
- package/ios/Viewer/ViewerDocument.swift +575 -0
- package/ios/Viewer/ViewerFontEnvironment.swift +283 -0
- package/ios/Viewer/ViewerImagePipeline.swift +478 -0
- package/ios/editor_coreFFI/editor_coreFFI.h +1023 -0
- package/ios/editor_coreFFI/module.modulemap +7 -0
- package/package.json +151 -0
- package/react-native.config.js +17 -0
- package/rust/android/arm64-v8a/libeditor_core.so +0 -0
- package/rust/android/armeabi-v7a/libeditor_core.so +0 -0
- package/rust/android/x86/libeditor_core.so +0 -0
- package/rust/android/x86_64/libeditor_core.so +0 -0
- package/rust/bindings/kotlin/uniffi/editor_core/editor_core.kt +3146 -0
- package/src/AtomHost.tsx +180 -0
- package/src/DefaultAtomChip.tsx +27 -0
- package/src/EditorAddon.ts +65 -0
- package/src/EditorAddonNormalization.ts +49 -0
- package/src/EditorMentionThemeNormalization.ts +25 -0
- package/src/EditorMentionThemeValidation.ts +133 -0
- package/src/EditorStyleSheet.ts +9 -0
- package/src/EditorStyleSheetNormalization.ts +219 -0
- package/src/EditorStyleSheetTypes.ts +189 -0
- package/src/EditorTheme.ts +196 -0
- package/src/EditorToolbar.tsx +31 -0
- package/src/EditorToolbarComponent.tsx +23 -0
- package/src/EditorToolbarItems.tsx +64 -0
- package/src/EditorToolbarRegistry.tsx +254 -0
- package/src/EditorToolbarTypes.tsx +322 -0
- package/src/EditorToolbarVisuals.tsx +270 -0
- package/src/EditorUpdateRevision.ts +26 -0
- package/src/ExternalTextComposition.ts +658 -0
- package/src/ImageLoadingPolicy.ts +125 -0
- package/src/NativeEditorBoundaryError.ts +345 -0
- package/src/NativeEditorBridge.ts +93 -0
- package/src/NativeEditorCollaborationTransport.ts +493 -0
- package/src/NativeEditorCreateConfig.ts +326 -0
- package/src/NativeEditorCreateJson.ts +579 -0
- package/src/NativeEditorCreateValidation.ts +178 -0
- package/src/NativeEditorDocumentBridge.ts +485 -0
- package/src/NativeEditorDocumentHandle.ts +168 -0
- package/src/NativeEditorLocalAwareness.ts +168 -0
- package/src/NativeEditorNativeModule.ts +97 -0
- package/src/NativeEditorRenderNormalization.ts +320 -0
- package/src/NativeEditorResultNormalization.ts +469 -0
- package/src/NativeEditorTypes.ts +366 -0
- package/src/NativeEditorV2Decimal.ts +13 -0
- package/src/NativeProseViewer.tsx +356 -0
- package/src/NativeRichTextEditor.tsx +33 -0
- package/src/ResourceLimits.ts +187 -0
- package/src/RichTextEditor.tsx +27 -0
- package/src/RichTextEditorNativeTypes.tsx +144 -0
- package/src/RichTextEditorNativeView.tsx +21 -0
- package/src/RichTextEditorSerialization.tsx +381 -0
- package/src/RichTextEditorTypes.tsx +327 -0
- package/src/ViewerConfiguration.ts +23 -0
- package/src/YjsCollaboration.ts +692 -0
- package/src/addons.ts +311 -0
- package/src/atomConstants.ts +3 -0
- package/src/atomInstances.ts +123 -0
- package/src/atomPolicy.ts +47 -0
- package/src/atomUpdates.ts +52 -0
- package/src/atoms.ts +379 -0
- package/src/attributeValidation.ts +116 -0
- package/src/contentExpression.ts +338 -0
- package/src/index.ts +295 -0
- package/src/listMarkers.ts +18 -0
- package/src/schemaDefinition.ts +395 -0
- package/src/schemaDocument.ts +92 -0
- package/src/schemaDocumentConstruction.ts +148 -0
- package/src/schemaNormalization.ts +367 -0
- package/src/schemaPresets.ts +250 -0
- package/src/schemaResolution.ts +242 -0
- package/src/schemas.ts +43 -0
- package/src/specs/PreparedProseViewerNativeComponent.ts +40 -0
- package/src/useEditorToolbarInteractions.tsx +329 -0
- package/src/useEditorToolbarItems.tsx +390 -0
- package/src/useEditorToolbarPresentation.tsx +483 -0
- package/src/useEditorToolbarState.tsx +172 -0
- package/src/useFocusPreservingFrames.ts +171 -0
- package/src/useNativeEditor.ts +534 -0
- package/src/useRichTextEditorCommands.tsx +478 -0
- package/src/useRichTextEditorEvents.tsx +342 -0
- package/src/useRichTextEditorMentions.tsx +441 -0
- package/src/useRichTextEditorPresentation.tsx +563 -0
- package/src/useRichTextEditorState.tsx +620 -0
- package/src/useRichTextEditorUpdates.tsx +403 -0
- package/src/useViewerAtoms.tsx +427 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import type { SerializedEditorMentionTheme } from './EditorMentionThemeNormalization';
|
|
2
|
+
import { type SchemaDefinition } from './schemas';
|
|
3
|
+
import { type EditorCollaborationLimits, type EditorEditingLimits, type EditorResourceLimits } from './ResourceLimits';
|
|
4
|
+
/**
|
|
5
|
+
* A selection in engine document positions.
|
|
6
|
+
*
|
|
7
|
+
* `anchor`/`head` are set for a `'text'` selection, `pos` for a `'node'` one,
|
|
8
|
+
* and neither for `'all'`. The `*Scalar` variants carry the same points
|
|
9
|
+
* measured in Unicode scalars instead of document positions.
|
|
10
|
+
*/
|
|
11
|
+
export interface Selection {
|
|
12
|
+
type: 'text' | 'node' | 'all';
|
|
13
|
+
/** Fixed end of a text selection. */
|
|
14
|
+
anchor?: number;
|
|
15
|
+
/** Moving end of a text selection. Equals `anchor` for a collapsed caret. */
|
|
16
|
+
head?: number;
|
|
17
|
+
/** Position of the selected node, for a `'node'` selection. */
|
|
18
|
+
pos?: number;
|
|
19
|
+
/** `anchor` in Unicode scalars. */
|
|
20
|
+
anchorScalar?: number;
|
|
21
|
+
/** `head` in Unicode scalars. */
|
|
22
|
+
headScalar?: number;
|
|
23
|
+
/** `pos` in Unicode scalars. */
|
|
24
|
+
posScalar?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* An opaque, factory-created document range for local awareness publication.
|
|
28
|
+
* Its provenance is verified at runtime before a native call; the type brand
|
|
29
|
+
* prevents accidental literal construction in TypeScript consumers.
|
|
30
|
+
*/
|
|
31
|
+
export declare class NativeEditorLocalAwarenessSelectionValue {
|
|
32
|
+
readonly anchor: number;
|
|
33
|
+
readonly head: number;
|
|
34
|
+
private readonly _nativeEditorLocalAwarenessSelectionBrand;
|
|
35
|
+
constructor(anchor: number, head: number);
|
|
36
|
+
}
|
|
37
|
+
export type NativeEditorLocalAwarenessSelection = NativeEditorLocalAwarenessSelectionValue;
|
|
38
|
+
/** What this client publishes to other peers in one awareness update. */
|
|
39
|
+
export interface NativeEditorLocalAwarenessIntent {
|
|
40
|
+
/**
|
|
41
|
+
* Application-defined presence payload, e.g. `{ user: { name, color } }`.
|
|
42
|
+
* Published at the awareness root, so `cursor` and `focused` are reserved.
|
|
43
|
+
*/
|
|
44
|
+
state: Record<string, unknown>;
|
|
45
|
+
/** Whether this client currently holds editing focus. */
|
|
46
|
+
focused: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* How this intent treats the local cursor. Rust owns it as a sticky
|
|
49
|
+
* index, so the three cases are deliberately distinct:
|
|
50
|
+
*
|
|
51
|
+
* - **omitted** — retain the cursor already published. Use this for
|
|
52
|
+
* focus-only or state-only updates: restating a document position
|
|
53
|
+
* that the document has since invalidated would be refused.
|
|
54
|
+
* - **`null`** — publish presence with no cursor at all.
|
|
55
|
+
* - **a factory selection** — set the cursor to these positions, which
|
|
56
|
+
* must resolve against the current document.
|
|
57
|
+
*/
|
|
58
|
+
selection?: NativeEditorLocalAwarenessSelection | null;
|
|
59
|
+
}
|
|
60
|
+
/** Where a list item sits in its list, supplied with every rendered list block. */
|
|
61
|
+
export interface ListContext {
|
|
62
|
+
/** Whether the enclosing list is numbered. */
|
|
63
|
+
ordered: boolean;
|
|
64
|
+
/** Zero-based position of this item among its siblings. */
|
|
65
|
+
index: number;
|
|
66
|
+
/** Number of sibling items in the enclosing list. */
|
|
67
|
+
total: number;
|
|
68
|
+
/** The list's `start` attribute — the number the first item takes. */
|
|
69
|
+
start: number;
|
|
70
|
+
isFirst: boolean;
|
|
71
|
+
isLast: boolean;
|
|
72
|
+
/** List variant, e.g. `'task'` for a checklist. */
|
|
73
|
+
kind?: string | null;
|
|
74
|
+
/** Checked state, for a task list item. */
|
|
75
|
+
checked?: boolean | null;
|
|
76
|
+
}
|
|
77
|
+
/** A mark carrying attributes, e.g. a link with its `href`. */
|
|
78
|
+
export interface RenderMarkWithAttrs {
|
|
79
|
+
type: string;
|
|
80
|
+
[key: string]: unknown;
|
|
81
|
+
}
|
|
82
|
+
/** A mark on a rendered text run: its name alone, or its name plus attributes. */
|
|
83
|
+
export type RenderMark = string | RenderMarkWithAttrs;
|
|
84
|
+
/** One piece of the flattened render stream the engine produces for a document. */
|
|
85
|
+
export interface RenderElement {
|
|
86
|
+
type: 'textRun' | 'blockStart' | 'blockEnd' | 'voidInline' | 'voidBlock' | 'opaqueInlineAtom' | 'opaqueBlockAtom';
|
|
87
|
+
text?: string;
|
|
88
|
+
marks?: RenderMark[];
|
|
89
|
+
nodeType?: string;
|
|
90
|
+
depth?: number;
|
|
91
|
+
docPos?: number;
|
|
92
|
+
atomId?: string;
|
|
93
|
+
label?: string;
|
|
94
|
+
attrs?: Record<string, unknown>;
|
|
95
|
+
mentionTheme?: SerializedEditorMentionTheme;
|
|
96
|
+
listContext?: ListContext;
|
|
97
|
+
language?: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* A splice against the previously rendered block list: replace `deleteCount`
|
|
101
|
+
* blocks at `startIndex` with `renderBlocks`. Lets a view redraw only the
|
|
102
|
+
* blocks that changed.
|
|
103
|
+
*/
|
|
104
|
+
export interface RenderBlocksPatch {
|
|
105
|
+
baseDocumentVersion: string;
|
|
106
|
+
startIndex: number;
|
|
107
|
+
deleteCount: number;
|
|
108
|
+
renderBlocks: RenderElement[][];
|
|
109
|
+
}
|
|
110
|
+
/** What the current selection can do — the state a toolbar renders from. */
|
|
111
|
+
export interface ActiveState {
|
|
112
|
+
/** Marks active at the selection, keyed by mark name. */
|
|
113
|
+
marks: Record<string, boolean>;
|
|
114
|
+
/** Attributes of each active mark, e.g. `{ link: { href } }`. */
|
|
115
|
+
markAttrs: Record<string, Record<string, unknown>>;
|
|
116
|
+
/** Node types enclosing the selection, keyed by node name. */
|
|
117
|
+
nodes: Record<string, boolean>;
|
|
118
|
+
/** Whether each command would apply at the selection, keyed by command name. */
|
|
119
|
+
commands: Record<string, boolean>;
|
|
120
|
+
/** Mark names the schema permits at the selection. */
|
|
121
|
+
allowedMarks: string[];
|
|
122
|
+
/** Node names that can be inserted at the selection. */
|
|
123
|
+
insertableNodes: string[];
|
|
124
|
+
}
|
|
125
|
+
/** Undo and redo availability. */
|
|
126
|
+
export interface HistoryState {
|
|
127
|
+
canUndo: boolean;
|
|
128
|
+
canRedo: boolean;
|
|
129
|
+
}
|
|
130
|
+
export type DeepReadonly<T> = T extends ReadonlyArray<infer Item> ? ReadonlyArray<DeepReadonly<Item>> : T extends object ? {
|
|
131
|
+
readonly [Key in keyof T]: DeepReadonly<T[Key]>;
|
|
132
|
+
} : T;
|
|
133
|
+
/** A recursively immutable active-state view supplied by atomic render snapshots. */
|
|
134
|
+
export type ReadonlyActiveState = DeepReadonly<ActiveState>;
|
|
135
|
+
export type NativeEditorAtomicRenderPayload = {
|
|
136
|
+
renderBlocks: RenderElement[][];
|
|
137
|
+
renderPatch: null;
|
|
138
|
+
} | {
|
|
139
|
+
renderBlocks: null;
|
|
140
|
+
renderPatch: RenderBlocksPatch;
|
|
141
|
+
};
|
|
142
|
+
export type NativeEditorAtomicRenderSnapshotShape = NativeEditorAtomicRenderPayload & {
|
|
143
|
+
selection: Selection;
|
|
144
|
+
activeState: ActiveState;
|
|
145
|
+
historyState: HistoryState;
|
|
146
|
+
documentVersion: string;
|
|
147
|
+
stateRevision: string;
|
|
148
|
+
scalarLength: number;
|
|
149
|
+
/** The core's own answer for whether the document holds no content. */
|
|
150
|
+
documentIsEmpty: boolean;
|
|
151
|
+
};
|
|
152
|
+
/** A recursively immutable view of the value frozen by renderUpdate(). */
|
|
153
|
+
export type NativeEditorAtomicRenderSnapshot = DeepReadonly<NativeEditorAtomicRenderSnapshotShape>;
|
|
154
|
+
/** One coherent view of the document after a change: what to draw, plus selection and state. */
|
|
155
|
+
export interface EditorUpdate {
|
|
156
|
+
/** The whole document as a flat render stream. */
|
|
157
|
+
renderElements: RenderElement[];
|
|
158
|
+
/** The same content grouped into blocks. */
|
|
159
|
+
renderBlocks?: RenderElement[][];
|
|
160
|
+
/** Blocks that changed since the previous update, when the engine could compute a splice. */
|
|
161
|
+
renderPatch?: RenderBlocksPatch;
|
|
162
|
+
selection: Selection;
|
|
163
|
+
activeState: ActiveState;
|
|
164
|
+
historyState: HistoryState;
|
|
165
|
+
/** Decimal-string engine document revision this update describes. */
|
|
166
|
+
documentVersion?: string;
|
|
167
|
+
}
|
|
168
|
+
/** The document in both serialized forms, read in one pass. */
|
|
169
|
+
export interface ContentSnapshot {
|
|
170
|
+
html: string;
|
|
171
|
+
json: DocumentJSON;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* A ProseMirror-style JSON document or fragment. Deliberately open: the shape
|
|
175
|
+
* is whatever the active {@link SchemaDefinition} admits, so nodes carry
|
|
176
|
+
* `type`, optional `attrs`, `content`, `marks`, and `text`.
|
|
177
|
+
*/
|
|
178
|
+
export interface DocumentJSON {
|
|
179
|
+
[key: string]: unknown;
|
|
180
|
+
}
|
|
181
|
+
/** A participant in a collaboration room. */
|
|
182
|
+
export interface CollaborationPeer {
|
|
183
|
+
/** Yjs client identity, as a decimal string. */
|
|
184
|
+
clientId: string;
|
|
185
|
+
/** Whether this record describes this device. */
|
|
186
|
+
isLocal: boolean;
|
|
187
|
+
/** The peer's published awareness state. */
|
|
188
|
+
state: Record<string, unknown> | null;
|
|
189
|
+
}
|
|
190
|
+
export type CommandBlockedReason = 'composition' | 'detached' | 'pendingUpdate' | 'destroyed' | 'unknown';
|
|
191
|
+
export interface CommandBlockedInfo {
|
|
192
|
+
blocked: boolean;
|
|
193
|
+
reason: CommandBlockedReason | null;
|
|
194
|
+
}
|
|
195
|
+
export type NativeEditorHistoryMode = 'undoableBoundary' | 'resetAndClear';
|
|
196
|
+
/**
|
|
197
|
+
* Provenance of an exported room snapshot. A snapshot only restores into a
|
|
198
|
+
* handle whose document, lineage, fragment, and schema match.
|
|
199
|
+
*/
|
|
200
|
+
export interface NativeEditorSnapshotMetadata {
|
|
201
|
+
/** Snapshot format version, so older exports can be recognized. */
|
|
202
|
+
formatVersion: number;
|
|
203
|
+
documentId: string;
|
|
204
|
+
lineageId: string;
|
|
205
|
+
fragmentName: string;
|
|
206
|
+
/** Digest of the schema the snapshot was taken under. */
|
|
207
|
+
schemaFingerprint: string;
|
|
208
|
+
}
|
|
209
|
+
/** An exported room document: its provenance plus the encoded Yjs state. */
|
|
210
|
+
export interface NativeEditorRoomSnapshot {
|
|
211
|
+
metadata: NativeEditorSnapshotMetadata;
|
|
212
|
+
/** Encoded Yjs state. Bounded by `EditorResourceLimits.maxEncodedStateBytes`. */
|
|
213
|
+
encodedState: Uint8Array;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* How a document handle's content starts out. Fixed at creation — there is no
|
|
217
|
+
* prop equivalent.
|
|
218
|
+
*
|
|
219
|
+
* - `localEmpty` — the schema's empty document.
|
|
220
|
+
* - `localJson` / `localHtml` — seeded from the given content.
|
|
221
|
+
* - `room` — a collaborative document. It renders nothing until the server's
|
|
222
|
+
* document arrives, unless a `snapshot` seeds it offline.
|
|
223
|
+
*/
|
|
224
|
+
export type NativeEditorInitialization = {
|
|
225
|
+
type: 'localEmpty';
|
|
226
|
+
} | {
|
|
227
|
+
type: 'localJson';
|
|
228
|
+
json: DocumentJSON;
|
|
229
|
+
} | {
|
|
230
|
+
type: 'localHtml';
|
|
231
|
+
html: string;
|
|
232
|
+
} | {
|
|
233
|
+
type: 'room';
|
|
234
|
+
/** Room identity. Must match the collaboration controller's `documentId`. */
|
|
235
|
+
documentId: string;
|
|
236
|
+
/** Application-owned lineage tag, e.g. `` `my-app|${documentId}` ``. A
|
|
237
|
+
* snapshot only restores into a handle declaring the same lineage. */
|
|
238
|
+
lineageId: string;
|
|
239
|
+
/** Previously exported state, for offline restore. */
|
|
240
|
+
snapshot?: NativeEditorRoomSnapshot;
|
|
241
|
+
};
|
|
242
|
+
/**
|
|
243
|
+
* Everything fixed for the lifetime of a document handle. Initialization,
|
|
244
|
+
* schema, editing policy, and limits all live here rather than on the view,
|
|
245
|
+
* so an editor and its collaboration controller cannot disagree about them.
|
|
246
|
+
*/
|
|
247
|
+
export interface NativeEditorCreateConfig {
|
|
248
|
+
initialization: NativeEditorInitialization;
|
|
249
|
+
/** Node and mark types this document admits. Defaults to `defaultSchema`. */
|
|
250
|
+
schema?: SchemaDefinition;
|
|
251
|
+
/** Yjs fragment the document lives in. Defaults to `'prosemirror'`. */
|
|
252
|
+
fragmentName?: string;
|
|
253
|
+
/** Engine-enforced editing policy. `RichTextEditor.editable` is a separate, per-view interaction gate. */
|
|
254
|
+
policy?: {
|
|
255
|
+
/** Maximum document text length in Unicode scalars. A change that would exceed it is rejected. */
|
|
256
|
+
maxLength?: number;
|
|
257
|
+
/** Whether the engine refuses every mutation, raising `MUTATION_REJECTED`. */
|
|
258
|
+
readOnly?: boolean;
|
|
259
|
+
/** Regular expression applied per character to typed input; characters that do not match are dropped. */
|
|
260
|
+
inputFilter?: string;
|
|
261
|
+
/** Whether `data:` image sources are admitted. Defaults to false. */
|
|
262
|
+
allowBase64Images?: boolean;
|
|
263
|
+
};
|
|
264
|
+
/** Resource bounds. See {@link EditorResourceLimits}. */
|
|
265
|
+
limits?: {
|
|
266
|
+
resource?: EditorResourceLimits;
|
|
267
|
+
editing?: EditorEditingLimits;
|
|
268
|
+
collaboration?: EditorCollaborationLimits;
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
export interface NativeEditorInputRequest {
|
|
272
|
+
baseDocumentRevision: string;
|
|
273
|
+
text: string;
|
|
274
|
+
}
|
|
275
|
+
export interface NativeEditorCommandRequest {
|
|
276
|
+
baseDocumentRevision: string;
|
|
277
|
+
command: Record<string, unknown>;
|
|
278
|
+
}
|
|
279
|
+
export interface NativeEditorLocalApiRequest {
|
|
280
|
+
baseDocumentRevision: string;
|
|
281
|
+
setJson?: DocumentJSON;
|
|
282
|
+
setHtml?: string;
|
|
283
|
+
history: NativeEditorHistoryMode;
|
|
284
|
+
}
|
|
285
|
+
export type NativeEditorOffsetKind = 'scalar' | 'utf16';
|
|
286
|
+
export type NativeEditorPositionAffinity = 'before' | 'after';
|
|
287
|
+
/**
|
|
288
|
+
* Mirrors the Rust `PositionEnvelope`. `offset` is measured in the currency
|
|
289
|
+
* named by `kind` — scalar offsets are Unicode scalars, not document positions.
|
|
290
|
+
*/
|
|
291
|
+
export interface NativeEditorPositionEnvelope {
|
|
292
|
+
offset: number;
|
|
293
|
+
kind: NativeEditorOffsetKind;
|
|
294
|
+
affinity?: NativeEditorPositionAffinity;
|
|
295
|
+
}
|
|
296
|
+
export type NativeEditorSelectionEnvelope = {
|
|
297
|
+
type: 'text';
|
|
298
|
+
anchor: NativeEditorPositionEnvelope;
|
|
299
|
+
head: NativeEditorPositionEnvelope;
|
|
300
|
+
} | {
|
|
301
|
+
type: 'node';
|
|
302
|
+
at: NativeEditorPositionEnvelope;
|
|
303
|
+
} | {
|
|
304
|
+
type: 'atom';
|
|
305
|
+
docPos: number;
|
|
306
|
+
edge: 'node' | 'before' | 'after';
|
|
307
|
+
} | {
|
|
308
|
+
type: 'all';
|
|
309
|
+
};
|
|
310
|
+
export interface NativeEditorSelectionRequest {
|
|
311
|
+
baseDocumentRevision: string;
|
|
312
|
+
selection: NativeEditorSelectionEnvelope;
|
|
313
|
+
}
|
|
314
|
+
export interface NativeEditorReplaceDocumentRequest {
|
|
315
|
+
setJson?: DocumentJSON;
|
|
316
|
+
setHtml?: string;
|
|
317
|
+
history: NativeEditorHistoryMode;
|
|
318
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NativeEditorLocalAwarenessSelectionValue = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* An opaque, factory-created document range for local awareness publication.
|
|
6
|
+
* Its provenance is verified at runtime before a native call; the type brand
|
|
7
|
+
* prevents accidental literal construction in TypeScript consumers.
|
|
8
|
+
*/
|
|
9
|
+
class NativeEditorLocalAwarenessSelectionValue {
|
|
10
|
+
constructor(anchor, head) {
|
|
11
|
+
this.anchor = anchor;
|
|
12
|
+
this.head = head;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.NativeEditorLocalAwarenessSelectionValue = NativeEditorLocalAwarenessSelectionValue;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeNativeEditorV2U64 = normalizeNativeEditorV2U64;
|
|
4
|
+
const CANONICAL_V2_U64 = /^(0|[1-9]\d*)$/;
|
|
5
|
+
const V2_U64_MAX = '18446744073709551615';
|
|
6
|
+
/**
|
|
7
|
+
* Canonical v2 u64 wire values are decimal strings only. The range check is
|
|
8
|
+
* lexical after syntax validation, so JavaScript never coerces the value.
|
|
9
|
+
*/
|
|
10
|
+
function normalizeNativeEditorV2U64(value) {
|
|
11
|
+
if (typeof value !== 'string' || !CANONICAL_V2_U64.test(value))
|
|
12
|
+
return null;
|
|
13
|
+
if (value.length < V2_U64_MAX.length)
|
|
14
|
+
return value;
|
|
15
|
+
if (value.length > V2_U64_MAX.length || value > V2_U64_MAX)
|
|
16
|
+
return null;
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { AtomViewport } from './AtomHost';
|
|
2
|
+
import { type ViewProps } from 'react-native';
|
|
3
|
+
import { type EditorImageLoadingPolicy } from './ImageLoadingPolicy';
|
|
4
|
+
import { type EditorResourceLimits } from './ResourceLimits';
|
|
5
|
+
import { type EditorTheme } from './EditorTheme';
|
|
6
|
+
import type { DocumentJSON } from './NativeEditorBridge';
|
|
7
|
+
import type { EditorAddons, MentionPressEvent, MentionsAddonOptions } from './EditorAddon';
|
|
8
|
+
import { type AtomNodeDefinition } from './atoms';
|
|
9
|
+
import { type RichTextViewerAtomAttrsUpdateEvent } from './useViewerAtoms';
|
|
10
|
+
import { type SchemaDefinition } from './schemas';
|
|
11
|
+
export type { RichTextViewerAtomAttrsUpdateEvent, NativeProseViewerAtomAttrsUpdateEvent, } from './useViewerAtoms';
|
|
12
|
+
/** A parse, layout, or rendering failure reported by the native viewer. */
|
|
13
|
+
export interface RichTextViewerErrorEvent {
|
|
14
|
+
/** Native subsystem that raised the failure, e.g. `'viewer'`. */
|
|
15
|
+
domain: string;
|
|
16
|
+
/** Stable failure code, e.g. `'INVALID_MENTION_ATTRIBUTES'`. */
|
|
17
|
+
code: string;
|
|
18
|
+
message: string;
|
|
19
|
+
/** Whether the viewer gave up on this content, as opposed to skipping one element. */
|
|
20
|
+
fatal: boolean;
|
|
21
|
+
}
|
|
22
|
+
/** A tap on a mention node. Requires a mention addon with `onPress`. */
|
|
23
|
+
export type RichTextViewerMentionPressEvent = MentionPressEvent;
|
|
24
|
+
/** A tap on link-marked text. Requires `enableLinkTaps` and `onPressLink`. */
|
|
25
|
+
export interface RichTextViewerLinkPressEvent {
|
|
26
|
+
/** The link mark's `href` attribute. */
|
|
27
|
+
href: string;
|
|
28
|
+
/** The text the link mark covers. */
|
|
29
|
+
text: string;
|
|
30
|
+
}
|
|
31
|
+
/** Mention rendering and press handling for the viewer. */
|
|
32
|
+
export type RichTextViewerMentionsConfig = MentionsAddonOptions;
|
|
33
|
+
export type RichTextViewerAddons = EditorAddons;
|
|
34
|
+
/** Props shared by both content forms of {@link RichTextViewerProps}. */
|
|
35
|
+
export interface RichTextViewerBaseProps extends ViewProps {
|
|
36
|
+
/** Schema the content is parsed against. Defaults to {@link defaultSchema}; the mention node is always added. */
|
|
37
|
+
schema?: SchemaDefinition;
|
|
38
|
+
/** React renderers for custom block atoms; their node specs are added to the schema. */
|
|
39
|
+
atoms?: readonly AtomNodeDefinition<any>[];
|
|
40
|
+
/** Whether persisted atom attributes are read-only. Defaults to true; prose is always read-only. */
|
|
41
|
+
readOnly?: boolean;
|
|
42
|
+
/** Whether atom controls receive input. Defaults to true, independently of readOnly. */
|
|
43
|
+
atomsInteractive?: boolean;
|
|
44
|
+
/** Opt-in atom virtualization; range is relative to the native viewer content. */
|
|
45
|
+
atomViewport?: AtomViewport;
|
|
46
|
+
/** Handles an atom update request. Persist it in the app and supply updated content. */
|
|
47
|
+
onUpdateAtomAttrs?: (event: RichTextViewerAtomAttrsUpdateEvent) => void | Promise<void>;
|
|
48
|
+
/** Native content theme. See {@link EditorTheme}. */
|
|
49
|
+
theme?: EditorTheme;
|
|
50
|
+
/** Whether `data:` image sources are admitted. Defaults to false. */
|
|
51
|
+
allowBase64Images?: boolean;
|
|
52
|
+
/** Bounds image fetching and decoding. See {@link EditorImageLoadingPolicy}. */
|
|
53
|
+
imageLoadingPolicy?: EditorImageLoadingPolicy;
|
|
54
|
+
/** Bounds the content the viewer will parse. See {@link EditorResourceLimits}. */
|
|
55
|
+
resourceLimits?: EditorResourceLimits;
|
|
56
|
+
/** Whether content with no text measures to zero height. Defaults to true. */
|
|
57
|
+
collapseTrailingEmptyParagraphs?: boolean;
|
|
58
|
+
/** Whether link-marked text is tappable. Defaults to true. */
|
|
59
|
+
enableLinkTaps?: boolean;
|
|
60
|
+
/** Whether image nodes are fetched and drawn. Defaults to true. */
|
|
61
|
+
renderImages?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Bump this to discard the prepared layout after the app's font
|
|
64
|
+
* environment changes (a newly registered font, a font-scale change).
|
|
65
|
+
* Defaults to 0.
|
|
66
|
+
*/
|
|
67
|
+
fontEnvironmentRevision?: number;
|
|
68
|
+
addons?: RichTextViewerAddons;
|
|
69
|
+
/** Called when link-marked text is tapped. */
|
|
70
|
+
onPressLink?: (event: RichTextViewerLinkPressEvent) => void;
|
|
71
|
+
/** Called when the viewer cannot parse, lay out, or render the content. */
|
|
72
|
+
onError?: (error: RichTextViewerErrorEvent) => void;
|
|
73
|
+
}
|
|
74
|
+
interface RichTextViewerJsonProps extends RichTextViewerBaseProps {
|
|
75
|
+
/** ProseMirror JSON document, or a JSON string holding one. */
|
|
76
|
+
contentJSON: DocumentJSON | string;
|
|
77
|
+
contentHTML?: never;
|
|
78
|
+
}
|
|
79
|
+
interface RichTextViewerHtmlProps extends RichTextViewerBaseProps {
|
|
80
|
+
/** HTML document. Sanitize untrusted HTML before passing it here. */
|
|
81
|
+
contentHTML: string;
|
|
82
|
+
contentJSON?: never;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Props for {@link RichTextViewer}. Supply exactly one content source:
|
|
86
|
+
* `contentJSON` or `contentHTML`.
|
|
87
|
+
*/
|
|
88
|
+
export type RichTextViewerProps = RichTextViewerJsonProps | RichTextViewerHtmlProps;
|
|
89
|
+
/**
|
|
90
|
+
* Read-only renderer for HTML or ProseMirror JSON. It prepares a native
|
|
91
|
+
* layout and measures to that layout's exact size, so the host must give it a
|
|
92
|
+
* finite width; no editor session is created and no document handle is
|
|
93
|
+
* needed.
|
|
94
|
+
*
|
|
95
|
+
* Requires the New Architecture.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```tsx
|
|
99
|
+
* <RichTextViewer
|
|
100
|
+
* contentHTML='<p>Read-only content</p>'
|
|
101
|
+
* theme={{ text: { fontSize: 16 } }}
|
|
102
|
+
* onPressLink={({ href }) => openLink(href)}
|
|
103
|
+
* />
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export declare function RichTextViewer(props: RichTextViewerProps): import("react/jsx-runtime").JSX.Element;
|
|
107
|
+
/** @deprecated Use RichTextViewerErrorEvent instead. */
|
|
108
|
+
export type NativeProseViewerErrorEvent = RichTextViewerErrorEvent;
|
|
109
|
+
/** @deprecated Use RichTextViewerMentionPressEvent instead. */
|
|
110
|
+
export type NativeProseViewerMentionPressEvent = RichTextViewerMentionPressEvent;
|
|
111
|
+
/** @deprecated Use RichTextViewerLinkPressEvent instead. */
|
|
112
|
+
export type NativeProseViewerLinkPressEvent = RichTextViewerLinkPressEvent;
|
|
113
|
+
/** @deprecated Use RichTextViewerMentionsConfig instead. */
|
|
114
|
+
export type NativeProseViewerMentionsConfig = RichTextViewerMentionsConfig;
|
|
115
|
+
/** @deprecated Use RichTextViewerAddons instead. */
|
|
116
|
+
export type NativeProseViewerAddons = RichTextViewerAddons;
|
|
117
|
+
/** @deprecated Use RichTextViewerBaseProps instead. */
|
|
118
|
+
export type NativeProseViewerBaseProps = RichTextViewerBaseProps;
|
|
119
|
+
/** @deprecated Use RichTextViewerProps instead. */
|
|
120
|
+
export type NativeProseViewerProps = RichTextViewerProps;
|
|
121
|
+
/** @deprecated Use RichTextViewer instead. */
|
|
122
|
+
export declare const NativeProseViewer: typeof RichTextViewer;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.NativeProseViewer = void 0;
|
|
7
|
+
exports.RichTextViewer = RichTextViewer;
|
|
8
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const react_native_1 = require("react-native");
|
|
11
|
+
const ImageLoadingPolicy_1 = require("./ImageLoadingPolicy");
|
|
12
|
+
const ResourceLimits_1 = require("./ResourceLimits");
|
|
13
|
+
const EditorTheme_1 = require("./EditorTheme");
|
|
14
|
+
const addons_1 = require("./addons");
|
|
15
|
+
const atoms_1 = require("./atoms");
|
|
16
|
+
const useViewerAtoms_1 = require("./useViewerAtoms");
|
|
17
|
+
const PreparedProseViewerNativeComponent_1 = __importDefault(require("./specs/PreparedProseViewerNativeComponent"));
|
|
18
|
+
const ViewerConfiguration_1 = require("./ViewerConfiguration");
|
|
19
|
+
const schemas_1 = require("./schemas");
|
|
20
|
+
const serializedJsonCache = new WeakMap();
|
|
21
|
+
function stringifyCachedJson(value) {
|
|
22
|
+
const cached = serializedJsonCache.get(value);
|
|
23
|
+
if (cached != null) {
|
|
24
|
+
return cached;
|
|
25
|
+
}
|
|
26
|
+
const serialized = JSON.stringify(value);
|
|
27
|
+
serializedJsonCache.set(value, serialized);
|
|
28
|
+
return serialized;
|
|
29
|
+
}
|
|
30
|
+
function resolveViewerConfiguration(schema, allowBase64Images, resourceLimits, mentions, atoms, codeHighlighting) {
|
|
31
|
+
return {
|
|
32
|
+
initialization: { type: 'localEmpty' },
|
|
33
|
+
...(codeHighlighting ? { codeHighlighting } : {}),
|
|
34
|
+
schema: (0, atoms_1.withAtomsSchema)((0, addons_1.withMentionsSchema)(schema ?? schemas_1.defaultSchema), atoms ?? []),
|
|
35
|
+
...(allowBase64Images ? { policy: { allowBase64Images: true } } : {}),
|
|
36
|
+
...(resourceLimits ? { limits: { resource: resourceLimits } } : {}),
|
|
37
|
+
...(mentions?.trigger || mentions?.prefix
|
|
38
|
+
? {
|
|
39
|
+
mentions: {
|
|
40
|
+
...(mentions.trigger ? { trigger: mentions.trigger } : {}),
|
|
41
|
+
...(mentions.prefix ? { prefix: mentions.prefix } : {}),
|
|
42
|
+
},
|
|
43
|
+
}
|
|
44
|
+
: {}),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Read-only renderer for HTML or ProseMirror JSON. It prepares a native
|
|
49
|
+
* layout and measures to that layout's exact size, so the host must give it a
|
|
50
|
+
* finite width; no editor session is created and no document handle is
|
|
51
|
+
* needed.
|
|
52
|
+
*
|
|
53
|
+
* Requires the New Architecture.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```tsx
|
|
57
|
+
* <RichTextViewer
|
|
58
|
+
* contentHTML='<p>Read-only content</p>'
|
|
59
|
+
* theme={{ text: { fontSize: 16 } }}
|
|
60
|
+
* onPressLink={({ href }) => openLink(href)}
|
|
61
|
+
* />
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
function RichTextViewer(props) {
|
|
65
|
+
const { contentJSON, contentHTML, schema, atoms, readOnly = true, atomsInteractive = true, atomViewport, onUpdateAtomAttrs, theme, allowBase64Images = false, imageLoadingPolicy, resourceLimits, collapseTrailingEmptyParagraphs = true, enableLinkTaps = true, renderImages = true, fontEnvironmentRevision = 0, addons, onPressLink, onError, ...viewProps } = props;
|
|
66
|
+
const { mentions, codeHighlighting } = (0, react_1.useMemo)(() => (0, addons_1.normalizeEditorAddons)(addons), [addons]);
|
|
67
|
+
const resolvedResourceLimits = (0, react_1.useMemo)(() => (resourceLimits ? (0, ResourceLimits_1.resolveEditorResourceLimits)(resourceLimits) : undefined), [resourceLimits]);
|
|
68
|
+
const configJson = (0, react_1.useMemo)(() => (0, ViewerConfiguration_1.serializePreparedProseViewerConfiguration)(resolveViewerConfiguration(schema, allowBase64Images, resolvedResourceLimits, mentions, atoms, codeHighlighting)), [allowBase64Images, mentions, resolvedResourceLimits, schema, atoms, codeHighlighting]);
|
|
69
|
+
const themeJson = (0, react_1.useMemo)(() => (0, EditorTheme_1.serializeEditorTheme)(theme, mentions?.theme), [mentions?.theme, theme]);
|
|
70
|
+
const imagePolicyJson = (0, react_1.useMemo)(() => (0, ImageLoadingPolicy_1.serializeEditorImageLoadingPolicy)(imageLoadingPolicy), [imageLoadingPolicy]);
|
|
71
|
+
const sourceKind = contentJSON === undefined ? 'html' : 'json';
|
|
72
|
+
const source = (0, react_1.useMemo)(() => {
|
|
73
|
+
if (contentJSON === undefined) {
|
|
74
|
+
return contentHTML ?? '';
|
|
75
|
+
}
|
|
76
|
+
return typeof contentJSON === 'string' ? contentJSON : stringifyCachedJson(contentJSON);
|
|
77
|
+
}, [contentHTML, contentJSON]);
|
|
78
|
+
const atomIdentity = (0, react_1.useMemo)(() => ({}), [
|
|
79
|
+
sourceKind,
|
|
80
|
+
source,
|
|
81
|
+
configJson,
|
|
82
|
+
themeJson,
|
|
83
|
+
imagePolicyJson,
|
|
84
|
+
renderImages,
|
|
85
|
+
collapseTrailingEmptyParagraphs,
|
|
86
|
+
fontEnvironmentRevision,
|
|
87
|
+
]);
|
|
88
|
+
const viewerAtoms = (0, useViewerAtoms_1.useViewerAtoms)({
|
|
89
|
+
atoms,
|
|
90
|
+
identity: atomIdentity,
|
|
91
|
+
themeJson,
|
|
92
|
+
readOnly,
|
|
93
|
+
interactive: atomsInteractive,
|
|
94
|
+
viewport: atomViewport,
|
|
95
|
+
onUpdateAtomAttrs,
|
|
96
|
+
onError,
|
|
97
|
+
});
|
|
98
|
+
const handlePressLink = (0, react_1.useCallback)((event) => {
|
|
99
|
+
onPressLink?.(event.nativeEvent);
|
|
100
|
+
}, [onPressLink]);
|
|
101
|
+
const handlePressMention = (0, react_1.useCallback)((event) => {
|
|
102
|
+
const { docPos, label, attrsJson } = event.nativeEvent;
|
|
103
|
+
let attrs;
|
|
104
|
+
try {
|
|
105
|
+
attrs = JSON.parse(attrsJson);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
attrs = null;
|
|
109
|
+
}
|
|
110
|
+
if (attrs === null || typeof attrs !== 'object' || Array.isArray(attrs)) {
|
|
111
|
+
onError?.({
|
|
112
|
+
domain: 'viewer',
|
|
113
|
+
code: 'INVALID_MENTION_ATTRIBUTES',
|
|
114
|
+
message: 'The prepared mention attributes are not a JSON object.',
|
|
115
|
+
fatal: false,
|
|
116
|
+
});
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
mentions?.onPress?.({ docPos, label, attrs: attrs });
|
|
120
|
+
}, [mentions, onError]);
|
|
121
|
+
const handleError = (0, react_1.useCallback)((event) => {
|
|
122
|
+
onError?.(event.nativeEvent);
|
|
123
|
+
}, [onError]);
|
|
124
|
+
const nativeViewer = ((0, jsx_runtime_1.jsx)(PreparedProseViewerNativeComponent_1.default, { ...(viewerAtoms.enabled ? { style: { alignSelf: 'stretch' } } : viewProps), sourceKind: sourceKind, source: source, configJson: configJson, themeJson: viewerAtoms.themeJson, onAtomLayout: viewerAtoms.enabled ? viewerAtoms.onAtomLayout : undefined, imagePolicyJson: imagePolicyJson, imagesEnabled: renderImages, collapsesWhenEmpty: collapseTrailingEmptyParagraphs, enableLinkTaps: enableLinkTaps && onPressLink != null, mentionInteractionsEnabled: mentions?.onPress != null, fontEnvironmentRevision: fontEnvironmentRevision, onPressLink: onPressLink ? handlePressLink : undefined, onPressMention: mentions?.onPress ? handlePressMention : undefined, onError: onError ? handleError : undefined }));
|
|
125
|
+
if (!viewerAtoms.enabled)
|
|
126
|
+
return nativeViewer;
|
|
127
|
+
return ((0, jsx_runtime_1.jsx)(react_native_1.View, { ...viewProps, children: (0, jsx_runtime_1.jsxs)(react_native_1.View, { style: { alignSelf: 'stretch' }, onLayout: viewerAtoms.onContainerLayout, children: [nativeViewer, viewerAtoms.children] }) }));
|
|
128
|
+
}
|
|
129
|
+
/** @deprecated Use RichTextViewer instead. */
|
|
130
|
+
exports.NativeProseViewer = RichTextViewer;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { type RichTextEditorHeightBehavior, type RichTextEditorToolbarPlacement, type RichTextEditorValueJSONUpdateMode, type RichTextEditorAutoCapitalize, type RichTextEditorKeyboardType, type RichTextEditorAndroidInputOptions, type RemoteSelectionDecoration, type LinkRequestContext, type ImageRequestContext, type RichTextEditorProps, type RichTextEditorRef, type RichTextEditorCaretRect, type NativeRichTextEditorHeightBehavior, type NativeRichTextEditorToolbarPlacement, type NativeRichTextEditorValueJSONUpdateMode, type NativeRichTextEditorAutoCapitalize, type NativeRichTextEditorKeyboardType, type NativeRichTextEditorAndroidInputOptions, type NativeRichTextEditorProps, type NativeRichTextEditorRef, type NativeRichTextEditorCaretRect, } from './RichTextEditorTypes';
|
|
2
|
+
export { RichTextEditor, NativeRichTextEditor } from './RichTextEditor';
|
|
3
|
+
export type { NativeRichTextEditorFocusPreservingElement, NativeRichTextEditorFocusPreservingRef, NativeRichTextEditorFocusPreservingRefs, RichTextEditorFocusPreservingElement, RichTextEditorFocusPreservingRef, RichTextEditorFocusPreservingRefs, } from './useFocusPreservingFrames';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NativeRichTextEditor = exports.RichTextEditor = void 0;
|
|
4
|
+
var RichTextEditor_1 = require("./RichTextEditor");
|
|
5
|
+
Object.defineProperty(exports, "RichTextEditor", { enumerable: true, get: function () { return RichTextEditor_1.RichTextEditor; } });
|
|
6
|
+
Object.defineProperty(exports, "NativeRichTextEditor", { enumerable: true, get: function () { return RichTextEditor_1.NativeRichTextEditor; } });
|