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