react-native-enriched-markdown-scaffold 0.7.4-scaffold.9 → 1.0.2-scaffold.10
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/README.md +54 -8
- package/ReactNativeEnrichedMarkdown.podspec +82 -73
- package/android/build.gradle +188 -1
- package/android/consumer-rules.pro +1 -1
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownManagerDelegate.java +27 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownManagerInterface.java +7 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownTextInputManagerDelegate.java +24 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownTextInputManagerInterface.java +8 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownTextManagerDelegate.java +27 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownTextManagerInterface.java +7 -0
- package/android/generated/jni/react/renderer/components/EnrichedMarkdownTextSpec/EventEmitters.cpp +223 -0
- package/android/generated/jni/react/renderer/components/EnrichedMarkdownTextSpec/EventEmitters.h +183 -0
- package/android/generated/jni/react/renderer/components/EnrichedMarkdownTextSpec/Props.cpp +65 -0
- package/android/generated/jni/react/renderer/components/EnrichedMarkdownTextSpec/Props.h +1086 -61
- package/android/src/main/baseline-prof.txt +1 -1
- package/android/src/main/cpp/jni-adapter.cpp +74 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdown.kt +351 -13
- package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownInternalText.kt +62 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownManager.kt +85 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownText.kt +160 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownTextLayoutManager.kt +10 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownTextManager.kt +76 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/MeasurementStore.kt +126 -10
- package/android/src/main/java/com/swmansion/enriched/markdown/events/CopyPressEvent.kt +24 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/events/CopyRequestEvent.kt +28 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/events/LinkLayoutEvent.kt +36 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/events/SelectionChangeEvent.kt +43 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/EnrichedMarkdownTextInputManager.kt +54 -4
- package/android/src/main/java/com/swmansion/enriched/markdown/input/EnrichedMarkdownTextInputView.kt +923 -462
- package/android/src/main/java/com/swmansion/enriched/markdown/input/MarkdownClipboard.kt +42 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/BlockEditCoordinator.kt +196 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/ClipboardCoordinator.kt +73 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/EditContext.kt +19 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/EditPipeline.kt +248 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/EditSession.kt +52 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/InputConnectionWrapper.kt +108 -7
- package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/LinkCoordinator.kt +69 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/MarkdownTextWatcher.kt +3 -3
- package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/MentionCoordinator.kt +118 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/events/OnChangeStateEvent.kt +26 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/events/OnContextMenuItemPressEvent.kt +26 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/events/OnInputKeyPressEvent.kt +24 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/events/OnPasteEvent.kt +24 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/BlockStore.kt +254 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/FormattingStore.kt +80 -87
- package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/InputFormatter.kt +109 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/InputParser.kt +116 -22
- package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/MarkdownSerializer.kt +167 -38
- package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/RangeEditAdjustment.kt +149 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/layout/InputEventEmitter.kt +66 -5
- package/android/src/main/java/com/swmansion/enriched/markdown/input/layout/InputMeasurementStore.kt +4 -2
- package/android/src/main/java/com/swmansion/enriched/markdown/input/model/BlockRange.kt +27 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/model/BlockType.kt +48 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/model/FormattingRange.kt +9 -4
- package/android/src/main/java/com/swmansion/enriched/markdown/input/model/InputFormatterStyle.kt +39 -2
- package/android/src/main/java/com/swmansion/enriched/markdown/input/model/MathAtom.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/model/MathChipStyle.kt +1 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/input/model/MutableRangeBounds.kt +11 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/spans/InputBulletSpan.kt +82 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/spans/InputHeadingSpan.kt +58 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/spans/InputListItemSpacingSpan.kt +37 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/spans/InputOrderedListMarkerSpan.kt +63 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/styles/BlockHandler.kt +54 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/styles/HeadingBlockHandler.kt +27 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/styles/OrderedListBlockHandler.kt +38 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/styles/UnorderedListBlockHandler.kt +37 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/toolbar/InputContextMenu.kt +8 -26
- package/android/src/main/java/com/swmansion/enriched/markdown/parser/MarkdownASTNode.kt +1 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/parser/Parser.kt +1 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlockStyleContext.kt +9 -2
- package/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlockquoteRenderer.kt +100 -12
- package/android/src/main/java/com/swmansion/enriched/markdown/renderer/CodeBlockRenderer.kt +16 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/renderer/HeadingRenderer.kt +4 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/renderer/LinkRenderer.kt +37 -7
- package/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListContextManager.kt +2 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListItemRenderer.kt +74 -18
- package/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListRenderer.kt +43 -4
- package/android/src/main/java/com/swmansion/enriched/markdown/renderer/NodeRenderer.kt +9 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/renderer/SoftBreakRenderer.kt +16 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/renderer/SpanStyleCache.kt +35 -28
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/BaseListSpan.kt +24 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/BlockquoteSpan.kt +174 -24
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/CodeBackgroundSpan.kt +20 -82
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/CodeBlockSpan.kt +13 -16
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/CodeSpan.kt +1 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/EmphasisSpan.kt +1 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/ImageSpan.kt +182 -46
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/InlineChipPainter.kt +140 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/LinkChipSpans.kt +177 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/LinkSpan.kt +1 -6
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/ListItemSpacingSpan.kt +33 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/ListMarkerAnchorSpan.kt +38 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/OrderedListSpan.kt +2 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/StrongSpan.kt +1 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/TaskListSpan.kt +3 -2
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/UnorderedListSpan.kt +3 -2
- package/android/src/main/java/com/swmansion/enriched/markdown/styles/BlockquoteStyle.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/styles/CodeBlockStyle.kt +26 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/styles/ImageStyle.kt +7 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/styles/InlineMathStyle.kt +16 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/styles/LinkStyle.kt +36 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/styles/LinkVariantEntry.kt +7 -3
- package/android/src/main/java/com/swmansion/enriched/markdown/styles/ListStyle.kt +4 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/styles/MathStyle.kt +3 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/styles/StyleConfig.kt +13 -4
- package/android/src/main/java/com/swmansion/enriched/markdown/styles/TableStyle.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/CodeBlockHighlighter.kt +90 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/CodeBlockNode.kt +57 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/FeatureFlags.kt +1 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/MarkdownSegment.kt +9 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/MarkdownViewManagerUtils.kt +84 -7
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/ReadableMapExtensions.kt +3 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/RenderedSegment.kt +10 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/SegmentSignature.kt +1 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/StreamingMarkdownFilter.kt +83 -5
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/serialization/MarkdownASTSerializer.kt +4 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/input/MarkdownStyleParser.kt +74 -44
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/input/PasteTextUtils.kt +52 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/ImageCache.kt +26 -3
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/ImageDownloader.kt +22 -9
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/LocalImageLoader.kt +161 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/conversion/HTMLGenerator.kt +2 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/conversion/MarkdownExtractor.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/extensions/TextPaintExtensions.kt +23 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/interaction/CheckboxTouchHelper.kt +7 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/interaction/TaskListTapUtils.kt +41 -21
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/span/BlockSpacing.kt +15 -8
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/HeadlessActionMode.kt +88 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/LinkLayoutCollector.kt +100 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/LinkLongPressMovementMethod.kt +58 -27
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/SelectionActionMode.kt +72 -16
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/SelectionChangeReporter.kt +232 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/views/BlockMenuOptions.kt +64 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/views/CodeBlockContainerView.kt +414 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/views/ContextMenuPopup.kt +9 -6
- package/android/src/main/java/com/swmansion/enriched/markdown/views/CopyGlyph.kt +101 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/views/TableContainerView.kt +61 -11
- package/android/src/main/jni/CMakeLists.txt +53 -0
- package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/MarkdownContainerShadowNode.cpp +10 -0
- package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/MarkdownContainerShadowNode.h +11 -2
- package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/MarkdownTextShadowNode.cpp +10 -0
- package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/MarkdownTextShadowNode.h +12 -2
- package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/MarkdownTextState.cpp +9 -0
- package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/MarkdownTextState.h +24 -0
- package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/conversions.h +16 -0
- package/android/src/math/java/com/swmansion/enriched/markdown/input/math/MathChipControllerImpl.kt +21 -4
- package/android/src/math/java/com/swmansion/enriched/markdown/renderer/MathInlineRenderer.kt +8 -2
- package/android/src/math/java/com/swmansion/enriched/markdown/spans/MathChipSpan.kt +1 -1
- package/android/src/math/java/com/swmansion/enriched/markdown/spans/MathInlineSpan.kt +13 -6
- package/android/src/math/java/com/swmansion/enriched/markdown/spans/MathMeasureHelper.kt +2 -1
- package/android/src/math/java/com/swmansion/enriched/markdown/views/MathContainerView.kt +26 -8
- package/cpp/highlight/CodeBlockHighlighter.cpp +284 -0
- package/cpp/highlight/CodeBlockHighlighter.hpp +66 -0
- package/cpp/highlight/CodeBlockLanguages.cpp +138 -0
- package/cpp/highlight/CodeBlockLanguages.hpp +25 -0
- package/cpp/highlight/HighlightGrammars.hpp +28 -0
- package/cpp/highlight/code_highlight_podspec.rb +211 -0
- package/cpp/highlight/gen-registry.mjs +155 -0
- package/cpp/highlight/grammar-versions.json +159 -0
- package/cpp/highlight/vendor/generated/generated_queries.h +1665 -0
- package/cpp/highlight/vendor/generated/generated_registry.cpp +59 -0
- package/cpp/parser/MD4CParser.cpp +173 -61
- package/cpp/parser/MD4CParser.hpp +1 -0
- package/cpp/parser/MarkdownASTNode.hpp +2 -1
- package/cpp/wasm/ASTSerializer.cpp +2 -0
- package/cpp/wasm/build.sh +1 -0
- package/cpp/wasm/md4c_wasm.cpp +3 -1
- package/docs/ACCESSIBILITY.md +14 -2
- package/docs/API_REFERENCE.md +405 -12
- package/docs/BREAKING_CHANGES.md +129 -0
- package/docs/CODE_HIGHLIGHT.md +133 -0
- package/docs/COPY_OPTIONS.md +61 -3
- package/docs/ELEMENTS_STRUCTURE.md +52 -4
- package/docs/IMAGE_CACHING.md +30 -0
- package/docs/INPUT.md +110 -11
- package/docs/LATEX_MATH.md +87 -45
- package/docs/MACOS.md +1 -1
- package/docs/MARKDOWN_STREAMING.md +27 -1
- package/docs/MENTIONS.md +8 -1
- package/docs/NATIVE_ASSETS.md +127 -0
- package/docs/RTL.md +1 -1
- package/docs/STYLES.md +73 -6
- package/docs/TESTING.md +112 -0
- package/docs/TEXT.md +18 -6
- package/docs/WEB.md +4 -1
- package/ios/EnrichedMarkdown.h +7 -0
- package/ios/EnrichedMarkdown.mm +583 -76
- package/ios/EnrichedMarkdownText.h +7 -0
- package/ios/EnrichedMarkdownText.mm +299 -73
- package/ios/attachments/ENRMImageAttachment.h +9 -0
- package/ios/attachments/ENRMImageAttachment.m +143 -40
- package/ios/attachments/ENRMMathInlineAttachment+macOS.m +2 -1
- package/ios/attachments/ENRMMathInlineAttachment.h +5 -0
- package/ios/attachments/ENRMMathInlineAttachment.m +50 -82
- package/ios/attachments/ENRMMathInlineAttachmentShared.h +2 -0
- package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/EventEmitters.cpp +223 -0
- package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/EventEmitters.h +183 -0
- package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/Props.cpp +65 -0
- package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/Props.h +1086 -61
- package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/RCTComponentViewHelpers.h +181 -2
- package/ios/input/ENRMAutoLinkDetector.h +2 -1
- package/ios/input/ENRMAutoLinkDetector.mm +79 -41
- package/ios/input/ENRMBlockEditCoordinator.h +71 -0
- package/ios/input/ENRMBlockEditCoordinator.mm +195 -0
- package/ios/input/ENRMBlockRange.h +28 -0
- package/ios/input/ENRMBlockRange.mm +30 -0
- package/ios/input/ENRMBlockStore.h +56 -0
- package/ios/input/ENRMBlockStore.mm +275 -0
- package/ios/input/ENRMClipboardCoordinator.h +45 -0
- package/ios/input/ENRMClipboardCoordinator.mm +120 -0
- package/ios/input/ENRMDetectorPipeline.h +2 -1
- package/ios/input/ENRMEditPipeline.h +76 -0
- package/ios/input/ENRMEditPipeline.mm +228 -0
- package/ios/input/ENRMEditSession.h +36 -0
- package/ios/input/ENRMEditSession.mm +63 -0
- package/ios/input/ENRMFormattingStore.h +17 -0
- package/ios/input/ENRMFormattingStore.mm +95 -105
- package/ios/input/ENRMInputBlockType.h +91 -0
- package/ios/input/ENRMInputBlockType.mm +5 -0
- package/ios/input/ENRMInputDecorationDrawer.h +18 -0
- package/ios/input/ENRMInputEventEmitter.h +56 -0
- package/ios/input/ENRMInputEventEmitter.mm +308 -0
- package/ios/input/ENRMInputFormatter.h +29 -69
- package/ios/input/ENRMInputFormatter.mm +216 -124
- package/ios/input/ENRMInputFormatterStyle.h +99 -0
- package/ios/input/ENRMInputFormatterStyle.mm +188 -0
- package/ios/input/ENRMInputLayoutManager.h +9 -0
- package/ios/input/ENRMInputLayoutManager.mm +30 -0
- package/ios/input/ENRMInputListMarkerDrawer.h +32 -0
- package/ios/input/ENRMInputListMarkerDrawer.mm +426 -0
- package/ios/input/ENRMInputParser.h +5 -6
- package/ios/input/ENRMInputParser.mm +461 -178
- package/ios/input/ENRMInputRemend.mm +2 -2
- package/ios/input/ENRMInputStyleStateBuilder.h +40 -0
- package/ios/input/ENRMInputStyleStateBuilder.mm +60 -0
- package/ios/input/ENRMInputTextView.mm +103 -8
- package/ios/input/ENRMInputTypingAttributesController.h +42 -0
- package/ios/input/ENRMInputTypingAttributesController.mm +203 -0
- package/ios/input/ENRMLinkCoordinator.h +41 -0
- package/ios/input/ENRMLinkCoordinator.mm +89 -0
- package/ios/input/ENRMMarkdownSerializer.h +29 -5
- package/ios/input/ENRMMarkdownSerializer.mm +170 -48
- package/ios/input/ENRMMathAtom.h +26 -0
- package/ios/input/ENRMMathAtom.mm +12 -0
- package/ios/input/ENRMMentionCoordinator.h +45 -0
- package/ios/input/ENRMMentionCoordinator.mm +167 -0
- package/ios/input/ENRMRangeEditAdjustment.h +38 -0
- package/ios/input/ENRMRangeEditAdjustment.mm +91 -0
- package/ios/input/ENRMRangeStoreUtils.h +39 -0
- package/ios/input/EnrichedMarkdownTextInput+ContextMenu.mm +6 -6
- package/ios/input/EnrichedMarkdownTextInput+Internal.h +11 -3
- package/ios/input/EnrichedMarkdownTextInput.h +7 -1
- package/ios/input/EnrichedMarkdownTextInput.mm +1089 -1023
- package/ios/input/InputStylePropsUtils.h +109 -68
- package/ios/input/internals/EnrichedMarkdownTextInputShadowNode.mm +2 -1
- package/ios/input/styles/ENRMBlockHandler.h +46 -0
- package/ios/input/styles/ENRMHeadingBlockHandler.h +15 -0
- package/ios/input/styles/ENRMHeadingBlockHandler.mm +38 -0
- package/ios/input/styles/ENRMOrderedListBlockHandler.h +14 -0
- package/ios/input/styles/ENRMOrderedListBlockHandler.mm +48 -0
- package/ios/input/styles/ENRMUnorderedListBlockHandler.h +15 -0
- package/ios/input/styles/ENRMUnorderedListBlockHandler.mm +51 -0
- package/ios/internals/ENRMViewFreeMeasurement.h +331 -0
- package/ios/internals/EnrichedMarkdownShadowNode.h +1 -3
- package/ios/internals/EnrichedMarkdownShadowNode.mm +16 -20
- package/ios/internals/EnrichedMarkdownTextShadowNode.h +1 -3
- package/ios/internals/EnrichedMarkdownTextShadowNode.mm +15 -20
- package/ios/internals/MeasurementCache.h +41 -9
- package/ios/internals/ShadowMeasurementUtils.h +63 -58
- package/ios/math/ENRMMathChipController.h +74 -0
- package/ios/math/ENRMMathChipController.mm +476 -0
- package/ios/math/ENRMRaTeXBridge.swift +27 -6
- package/ios/parser/ENRMMarkdownParser.h +1 -8
- package/ios/parser/ENRMMarkdownParser.mm +2 -11
- package/ios/parser/MarkdownASTNode.h +2 -1
- package/ios/parser/MarkdownParserBridge.mm +4 -0
- package/ios/renderer/AttributedRenderer.m +20 -2
- package/ios/renderer/BaseRenderer.h +17 -2
- package/ios/renderer/BaseRenderer.m +30 -0
- package/ios/renderer/BlockquoteRenderer.h +1 -1
- package/ios/renderer/BlockquoteRenderer.m +144 -35
- package/ios/renderer/CodeBlockRenderer.h +1 -1
- package/ios/renderer/CodeBlockRenderer.m +27 -23
- package/ios/renderer/CodeRenderer.h +1 -1
- package/ios/renderer/CodeRenderer.m +3 -1
- package/ios/renderer/ENRMImageRenderer.h +1 -1
- package/ios/renderer/ENRMImageRenderer.m +5 -1
- package/ios/renderer/ENRMMathInlineRenderer.h +1 -1
- package/ios/renderer/ENRMMathInlineRenderer.m +6 -1
- package/ios/renderer/ENRMSpoilerRenderer.h +1 -1
- package/ios/renderer/ENRMSpoilerRenderer.m +3 -1
- package/ios/renderer/EmphasisRenderer.h +1 -1
- package/ios/renderer/EmphasisRenderer.m +3 -1
- package/ios/renderer/HeadingRenderer.h +1 -1
- package/ios/renderer/HeadingRenderer.m +13 -6
- package/ios/renderer/HighlightRenderer.h +1 -1
- package/ios/renderer/HighlightRenderer.m +3 -1
- package/ios/renderer/LinkRenderer.h +1 -1
- package/ios/renderer/LinkRenderer.m +50 -16
- package/ios/renderer/ListItemRenderer.h +13 -1
- package/ios/renderer/ListItemRenderer.m +102 -44
- package/ios/renderer/ListRenderer.h +2 -2
- package/ios/renderer/ListRenderer.m +63 -25
- package/ios/renderer/ParagraphRenderer.h +1 -1
- package/ios/renderer/ParagraphRenderer.m +16 -8
- package/ios/renderer/RenderContext.h +10 -0
- package/ios/renderer/RenderContext.m +44 -0
- package/ios/renderer/RendererFactory.m +14 -0
- package/ios/renderer/StrikethroughRenderer.h +1 -1
- package/ios/renderer/StrikethroughRenderer.m +3 -1
- package/ios/renderer/StrongRenderer.h +1 -1
- package/ios/renderer/StrongRenderer.m +3 -1
- package/ios/renderer/SubscriptRenderer.h +1 -1
- package/ios/renderer/SubscriptRenderer.m +3 -1
- package/ios/renderer/SuperscriptRenderer.h +1 -1
- package/ios/renderer/SuperscriptRenderer.m +3 -1
- package/ios/renderer/TextRenderer.h +2 -2
- package/ios/renderer/TextRenderer.m +3 -1
- package/ios/renderer/ThematicBreakRenderer.h +1 -1
- package/ios/renderer/ThematicBreakRenderer.m +3 -1
- package/ios/renderer/UnderlineRenderer.h +1 -1
- package/ios/renderer/UnderlineRenderer.m +3 -1
- package/ios/styles/StyleConfig.h +42 -0
- package/ios/styles/StyleConfig.mm +216 -0
- package/ios/utils/BlockquoteBorder.h +6 -0
- package/ios/utils/BlockquoteBorder.m +249 -52
- package/ios/utils/CodeBackground.m +3 -65
- package/ios/utils/CodeBlockBackground.m +16 -2
- package/ios/utils/ENRMAtomicSize.h +65 -0
- package/ios/utils/ENRMBlockMenu.h +66 -0
- package/ios/utils/ENRMChipDrawing.h +24 -0
- package/ios/utils/ENRMChipDrawing.m +83 -0
- package/ios/utils/ENRMCodeBlockContent.h +37 -0
- package/ios/utils/ENRMCodeBlockContent.mm +79 -0
- package/ios/utils/ENRMCodeBlockHighlighter.h +37 -0
- package/ios/utils/ENRMCodeBlockHighlighter.mm +51 -0
- package/ios/utils/ENRMFeatureFlags.h +7 -0
- package/ios/utils/ENRMImageDownloader.h +11 -1
- package/ios/utils/ENRMImageDownloader.m +60 -16
- package/ios/utils/ENRMLinkChip.h +70 -0
- package/ios/utils/ENRMLinkChip.m +213 -0
- package/ios/utils/ENRMLinkLayout.h +50 -0
- package/ios/utils/ENRMLinkLayout.m +45 -0
- package/ios/utils/ENRMLocalImageLoader.h +31 -0
- package/ios/utils/ENRMLocalImageLoader.m +68 -0
- package/ios/utils/ENRMMathFallback.h +26 -0
- package/ios/utils/ENRMMathFallback.m +18 -0
- package/ios/utils/ENRMSelectionChange.h +120 -0
- package/ios/utils/ENRMSelectionChange.m +282 -0
- package/ios/utils/ENRMTextViewSetup.h +35 -17
- package/ios/utils/EditMenuUtils+macOS.m +4 -1
- package/ios/utils/EditMenuUtils.h +35 -6
- package/ios/utils/EditMenuUtils.m +188 -11
- package/ios/utils/HTMLGenerator.m +2 -1
- package/ios/utils/ImageRequestHeaderUtils.h +35 -0
- package/ios/utils/LastElementUtils.h +1 -0
- package/ios/utils/ListMarkerDrawer.m +29 -42
- package/ios/utils/MarkdownASTSerializer.m +4 -0
- package/ios/utils/MarkdownAccessibilityElementBuilder.m +3 -1
- package/ios/utils/MarkdownExtractor.m +2 -1
- package/ios/utils/ParagraphStyleUtils.h +5 -0
- package/ios/utils/ParagraphStyleUtils.m +77 -17
- package/ios/utils/RTFExportUtils.m +2 -0
- package/ios/utils/RenderedMarkdownSegment.h +13 -1
- package/ios/utils/RenderedMarkdownSegment.m +20 -0
- package/ios/utils/SegmentRenderer.m +17 -4
- package/ios/utils/StreamingMarkdownFilter.h +11 -1
- package/ios/utils/StreamingMarkdownFilter.m +98 -2
- package/ios/utils/StylePropsUtils.h +110 -1
- package/ios/utils/TaskListTapUtils.m +24 -0
- package/ios/utils/TextViewLayoutManager.mm +3 -0
- package/ios/views/ENRMCodeBlockContainerView.h +60 -0
- package/ios/views/ENRMCodeBlockContainerView.m +569 -0
- package/ios/views/ENRMMathContainerView.h +23 -0
- package/ios/views/ENRMMathContainerView.m +87 -20
- package/ios/views/TableContainerView.h +32 -0
- package/ios/views/TableContainerView.m +291 -175
- package/jest.d.ts +1 -0
- package/jest.js +5 -0
- package/lib/module/EnrichedMarkdownNativeComponent.ts +203 -1
- package/lib/module/EnrichedMarkdownTextInput.js +84 -5
- package/lib/module/EnrichedMarkdownTextInput.js.map +1 -1
- package/lib/module/EnrichedMarkdownTextInputNativeComponent.ts +78 -5
- package/lib/module/EnrichedMarkdownTextNativeComponent.ts +204 -1
- package/lib/module/headingDefaults.js +34 -0
- package/lib/module/headingDefaults.js.map +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/jest/index.js +205 -0
- package/lib/module/jest/index.js.map +1 -0
- package/lib/module/native/EnrichedMarkdownText.js +199 -15
- package/lib/module/native/EnrichedMarkdownText.js.map +1 -1
- package/lib/module/normalizeMarkdownStyle.js +98 -23
- package/lib/module/normalizeMarkdownStyle.js.map +1 -1
- package/lib/module/normalizeMarkdownStyle.web.js +73 -22
- package/lib/module/normalizeMarkdownStyle.web.js.map +1 -1
- package/lib/module/normalizeMarkdownTextInputStyle.js +62 -15
- package/lib/module/normalizeMarkdownTextInputStyle.js.map +1 -1
- package/lib/module/normalizeMenuItem.js +1 -1
- package/lib/module/utils/textInputState.js +26 -0
- package/lib/module/utils/textInputState.js.map +1 -0
- package/lib/module/web/EnrichedMarkdownText.js +15 -8
- package/lib/module/web/EnrichedMarkdownText.js.map +1 -1
- package/lib/module/web/parseMarkdown.js +4 -3
- package/lib/module/web/parseMarkdown.js.map +1 -1
- package/lib/module/web/renderers/InlineRenderers.js +102 -3
- package/lib/module/web/renderers/InlineRenderers.js.map +1 -1
- package/lib/module/web/renderers/ListRenderers.js +7 -2
- package/lib/module/web/renderers/ListRenderers.js.map +1 -1
- package/lib/module/web/renderers/index.js +7 -4
- package/lib/module/web/renderers/index.js.map +1 -1
- package/lib/module/web/styles.js +101 -6
- package/lib/module/web/styles.js.map +1 -1
- package/lib/module/web/utils.js +14 -0
- package/lib/module/web/utils.js.map +1 -1
- package/lib/module/web/wasm/md4c.js +0 -0
- package/lib/module/web/wasm/md4c.js.map +1 -1
- package/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts +185 -2
- package/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/EnrichedMarkdownTextInput.d.ts +94 -9
- package/lib/typescript/src/EnrichedMarkdownTextInput.d.ts.map +1 -1
- package/lib/typescript/src/EnrichedMarkdownTextInputNativeComponent.d.ts +69 -5
- package/lib/typescript/src/EnrichedMarkdownTextInputNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts +185 -2
- package/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/headingDefaults.d.ts +9 -0
- package/lib/typescript/src/headingDefaults.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +3 -3
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/index.web.d.ts +2 -2
- package/lib/typescript/src/index.web.d.ts.map +1 -1
- package/lib/typescript/src/jest/index.d.ts +6 -0
- package/lib/typescript/src/jest/index.d.ts.map +1 -0
- package/lib/typescript/src/native/EnrichedMarkdownText.d.ts +5 -5
- package/lib/typescript/src/native/EnrichedMarkdownText.d.ts.map +1 -1
- package/lib/typescript/src/normalizeMarkdownStyle.d.ts.map +1 -1
- package/lib/typescript/src/normalizeMarkdownStyle.web.d.ts.map +1 -1
- package/lib/typescript/src/normalizeMarkdownTextInputStyle.d.ts +19 -5
- package/lib/typescript/src/normalizeMarkdownTextInputStyle.d.ts.map +1 -1
- package/lib/typescript/src/types/MarkdownStyle.d.ts +122 -5
- package/lib/typescript/src/types/MarkdownStyle.d.ts.map +1 -1
- package/lib/typescript/src/types/MarkdownStyleInternal.d.ts +39 -0
- package/lib/typescript/src/types/MarkdownStyleInternal.d.ts.map +1 -1
- package/lib/typescript/src/types/MarkdownTextProps.d.ts +207 -10
- package/lib/typescript/src/types/MarkdownTextProps.d.ts.map +1 -1
- package/lib/typescript/src/types/MarkdownTextProps.web.d.ts +60 -1
- package/lib/typescript/src/types/MarkdownTextProps.web.d.ts.map +1 -1
- package/lib/typescript/src/types/events.d.ts +85 -0
- package/lib/typescript/src/types/events.d.ts.map +1 -1
- package/lib/typescript/src/utils/textInputState.d.ts +24 -0
- package/lib/typescript/src/utils/textInputState.d.ts.map +1 -0
- package/lib/typescript/src/web/EnrichedMarkdownText.d.ts +1 -1
- package/lib/typescript/src/web/EnrichedMarkdownText.d.ts.map +1 -1
- package/lib/typescript/src/web/parseMarkdown.d.ts +1 -1
- package/lib/typescript/src/web/parseMarkdown.d.ts.map +1 -1
- package/lib/typescript/src/web/renderers/InlineRenderers.d.ts.map +1 -1
- package/lib/typescript/src/web/renderers/ListRenderers.d.ts.map +1 -1
- package/lib/typescript/src/web/renderers/index.d.ts +2 -1
- package/lib/typescript/src/web/renderers/index.d.ts.map +1 -1
- package/lib/typescript/src/web/styles.d.ts +2 -1
- package/lib/typescript/src/web/styles.d.ts.map +1 -1
- package/lib/typescript/src/web/types.d.ts +10 -2
- package/lib/typescript/src/web/types.d.ts.map +1 -1
- package/lib/typescript/src/web/utils.d.ts +4 -0
- package/lib/typescript/src/web/utils.d.ts.map +1 -1
- package/package.json +36 -9
- package/postinstall.mjs +131 -0
- package/ratex-version.json +21 -0
- package/src/EnrichedMarkdownNativeComponent.ts +203 -1
- package/src/EnrichedMarkdownTextInput.tsx +159 -8
- package/src/EnrichedMarkdownTextInputNativeComponent.ts +78 -5
- package/src/EnrichedMarkdownTextNativeComponent.ts +204 -1
- package/src/headingDefaults.ts +21 -0
- package/src/index.tsx +15 -0
- package/src/index.web.tsx +6 -1
- package/src/jest/index.tsx +236 -0
- package/src/native/EnrichedMarkdownText.tsx +260 -11
- package/src/normalizeMarkdownStyle.ts +117 -16
- package/src/normalizeMarkdownStyle.web.ts +76 -15
- package/src/normalizeMarkdownTextInputStyle.ts +110 -35
- package/src/normalizeMenuItem.ts +1 -1
- package/src/types/MarkdownStyle.ts +125 -5
- package/src/types/MarkdownStyleInternal.ts +51 -0
- package/src/types/MarkdownTextProps.ts +215 -10
- package/src/types/MarkdownTextProps.web.ts +62 -1
- package/src/types/events.ts +90 -0
- package/src/utils/textInputState.ts +35 -0
- package/src/web/EnrichedMarkdownText.tsx +26 -5
- package/src/web/parseMarkdown.ts +6 -2
- package/src/web/renderers/InlineRenderers.tsx +116 -3
- package/src/web/renderers/ListRenderers.tsx +14 -2
- package/src/web/renderers/index.tsx +6 -2
- package/src/web/styles.ts +114 -5
- package/src/web/types.ts +10 -1
- package/src/web/utils.ts +9 -0
- package/src/web/wasm/md4c.js +0 -0
- package/vendor-grammars.mjs +511 -0
- package/vendor-ratex.mjs +173 -0
- package/app.plugin.js +0 -2
- package/plugin/build/withAndroidMath.js +0 -19
- package/plugin/build/withIosMath.js +0 -28
- package/plugin/build/withReactNativeEnrichedMarkdown.js +0 -11
- package/plugin/src/withAndroidMath.ts +0 -24
- package/plugin/src/withIosMath.ts +0 -35
- package/plugin/src/withReactNativeEnrichedMarkdown.ts +0 -17
- package/plugin/tsconfig.build.json +0 -16
|
@@ -2,8 +2,9 @@ import type { ComponentType, ReactNode } from 'react';
|
|
|
2
2
|
import type { MarkdownStyleInternal } from '../types/MarkdownStyleInternal';
|
|
3
3
|
import type { Styles } from './styles';
|
|
4
4
|
import type { LinkPressEvent, LinkLongPressEvent, TaskListItemPressEvent } from '../types/events';
|
|
5
|
+
import type { LinkDecorationInfo } from '../types/MarkdownTextProps.web';
|
|
5
6
|
import type { KaTeXInstance } from './katex';
|
|
6
|
-
export type NodeType = 'Document' | 'Paragraph' | 'Text' | 'Link' | 'Heading' | 'LineBreak' | 'Strong' | 'Emphasis' | 'Strikethrough' | 'Underline' | 'Superscript' | 'Subscript' | 'Highlight' | 'Code' | 'Image' | 'Blockquote' | 'UnorderedList' | 'OrderedList' | 'ListItem' | 'CodeBlock' | 'ThematicBreak' | 'Table' | 'TableHead' | 'TableBody' | 'TableRow' | 'TableHeaderCell' | 'TableCell' | 'LatexMathInline' | 'LatexMathDisplay';
|
|
7
|
+
export type NodeType = 'Document' | 'Paragraph' | 'Text' | 'Link' | 'Heading' | 'LineBreak' | 'SoftBreak' | 'Strong' | 'Emphasis' | 'Strikethrough' | 'Underline' | 'Superscript' | 'Subscript' | 'Highlight' | 'Code' | 'Image' | 'Blockquote' | 'UnorderedList' | 'OrderedList' | 'ListItem' | 'CodeBlock' | 'ThematicBreak' | 'Table' | 'TableHead' | 'TableBody' | 'TableRow' | 'TableHeaderCell' | 'TableCell' | 'LatexMathInline' | 'LatexMathDisplay';
|
|
7
8
|
export interface NodeAttributes {
|
|
8
9
|
level?: string;
|
|
9
10
|
url?: string;
|
|
@@ -16,6 +17,8 @@ export interface NodeAttributes {
|
|
|
16
17
|
taskIndex?: number;
|
|
17
18
|
/** Stamped by markInlineImages() — not present in the raw WASM output. */
|
|
18
19
|
isInline?: boolean;
|
|
20
|
+
/** Stamped by indexLinks() — document-order link index, not in the raw WASM output. */
|
|
21
|
+
linkIndex?: number;
|
|
19
22
|
colCount?: string;
|
|
20
23
|
headRowCount?: string;
|
|
21
24
|
bodyRowCount?: string;
|
|
@@ -27,22 +30,27 @@ export interface ASTNode {
|
|
|
27
30
|
content?: string;
|
|
28
31
|
/** Present on nodes that carry structural metadata (Heading, Link, etc.). */
|
|
29
32
|
attributes?: NodeAttributes;
|
|
30
|
-
/** Child nodes; absent on leaf nodes (Text, LineBreak, ThematicBreak). */
|
|
33
|
+
/** Child nodes; absent on leaf nodes (Text, LineBreak, SoftBreak, ThematicBreak). */
|
|
31
34
|
children?: ASTNode[];
|
|
32
35
|
}
|
|
33
36
|
export interface RendererCallbacks {
|
|
34
37
|
onLinkPress?: (event: LinkPressEvent) => void;
|
|
35
38
|
onLinkLongPress?: (event: LinkLongPressEvent) => void;
|
|
36
39
|
onTaskListItemPress?: (event: TaskListItemPressEvent) => void;
|
|
40
|
+
renderLinkDecoration?: (info: LinkDecorationInfo) => ReactNode | null;
|
|
37
41
|
}
|
|
38
42
|
export interface RenderCapabilities {
|
|
39
43
|
katex: KaTeXInstance | null;
|
|
44
|
+
/** When false, task list checkboxes render read-only and ignore clicks. */
|
|
45
|
+
enableTaskListItemToggle: boolean;
|
|
40
46
|
}
|
|
41
47
|
export interface RendererProps {
|
|
42
48
|
node: ASTNode;
|
|
43
49
|
style: MarkdownStyleInternal;
|
|
44
50
|
styles: Styles;
|
|
45
51
|
parentType?: NodeType;
|
|
52
|
+
/** Position among the parent node's children. */
|
|
53
|
+
index?: number;
|
|
46
54
|
callbacks: RendererCallbacks;
|
|
47
55
|
capabilities: RenderCapabilities;
|
|
48
56
|
renderChildren: (node: ASTNode) => ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/web/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,QAAQ,GAChB,UAAU,GACV,WAAW,GACX,MAAM,GACN,MAAM,GACN,SAAS,GACT,WAAW,GACX,QAAQ,GACR,UAAU,GACV,eAAe,GACf,WAAW,GACX,aAAa,GACb,WAAW,GACX,WAAW,GACX,MAAM,GACN,OAAO,GACP,YAAY,GACZ,eAAe,GACf,aAAa,GACb,UAAU,GACV,WAAW,GACX,eAAe,GACf,OAAO,GACP,WAAW,GACX,WAAW,GACX,UAAU,GACV,iBAAiB,GACjB,WAAW,GACX,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/web/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,QAAQ,GAChB,UAAU,GACV,WAAW,GACX,MAAM,GACN,MAAM,GACN,SAAS,GACT,WAAW,GACX,WAAW,GACX,QAAQ,GACR,UAAU,GACV,eAAe,GACf,WAAW,GACX,aAAa,GACb,WAAW,GACX,WAAW,GACX,MAAM,GACN,OAAO,GACP,YAAY,GACZ,eAAe,GACf,aAAa,GACb,UAAU,GACV,WAAW,GACX,eAAe,GACf,OAAO,GACP,WAAW,GACX,WAAW,GACX,UAAU,GACV,iBAAiB,GACjB,WAAW,GACX,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC9D,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,SAAS,GAAG,IAAI,CAAC;CACvE;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,2EAA2E;IAC3E,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,qBAAqB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,iBAAiB,CAAC;IAC7B,YAAY,EAAE,kBAAkB,CAAC;IACjC,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,CAAC;CAC9C;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,CAC/B,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAC/C,CAAC"}
|
|
@@ -11,6 +11,10 @@ export declare function filenameFromUrl(url: string): string;
|
|
|
11
11
|
export declare function indexTaskItems(node: ASTNode, counter?: {
|
|
12
12
|
value: number;
|
|
13
13
|
}): void;
|
|
14
|
+
/** Stamps Link nodes with their document-order index (the `renderLinkDecoration` key). */
|
|
15
|
+
export declare function indexLinks(node: ASTNode, counter?: {
|
|
16
|
+
value: number;
|
|
17
|
+
}): void;
|
|
14
18
|
/**
|
|
15
19
|
* Stamps Image nodes with `isInline` when they appear inside a paragraph
|
|
16
20
|
* that also contains other content (text, links, etc.).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/web/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/web/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAIrD;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO;;CAAe,GAAG,IAAI,CAK1E;AAED,0FAA0F;AAC1F,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO;;CAAe,GAAG,IAAI,CAKtE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAcpD"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-enriched-markdown-scaffold",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Markdown Text
|
|
3
|
+
"version": "1.0.2-scaffold.10",
|
|
4
|
+
"description": "Markdown-based Rich Text solution for React Native",
|
|
5
5
|
"main": "./lib/module/index",
|
|
6
6
|
"module": "./lib/module/index",
|
|
7
7
|
"source": "./src/index.tsx",
|
|
@@ -13,8 +13,15 @@
|
|
|
13
13
|
"ios",
|
|
14
14
|
"cpp",
|
|
15
15
|
"*.podspec",
|
|
16
|
+
"jest.js",
|
|
17
|
+
"jest.d.ts",
|
|
16
18
|
"react-native.config.js",
|
|
19
|
+
"postinstall.mjs",
|
|
20
|
+
"vendor-grammars.mjs",
|
|
21
|
+
"vendor-ratex.mjs",
|
|
22
|
+
"ratex-version.json",
|
|
17
23
|
"!ios/build",
|
|
24
|
+
"!ios/vendor",
|
|
18
25
|
"!android/build",
|
|
19
26
|
"!android/gradle",
|
|
20
27
|
"!android/gradlew",
|
|
@@ -24,10 +31,11 @@
|
|
|
24
31
|
"!**/__fixtures__",
|
|
25
32
|
"!**/__mocks__",
|
|
26
33
|
"!**/.*",
|
|
27
|
-
"app.plugin.js",
|
|
28
|
-
"plugin",
|
|
29
34
|
"docs"
|
|
30
35
|
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"postinstall": "node postinstall.mjs"
|
|
38
|
+
},
|
|
31
39
|
"keywords": [
|
|
32
40
|
"react-native",
|
|
33
41
|
"expo",
|
|
@@ -45,29 +53,48 @@
|
|
|
45
53
|
"registry": "https://registry.npmjs.org/"
|
|
46
54
|
},
|
|
47
55
|
"peerDependencies": {
|
|
48
|
-
"@expo/config-plugins": ">=50.0.0",
|
|
49
56
|
"katex": ">=0.16.0",
|
|
50
57
|
"react": "*",
|
|
51
58
|
"react-native": "*"
|
|
52
59
|
},
|
|
53
60
|
"peerDependenciesMeta": {
|
|
54
|
-
"@expo/config-plugins": {
|
|
55
|
-
"optional": true
|
|
56
|
-
},
|
|
57
61
|
"katex": {
|
|
58
62
|
"optional": true
|
|
59
63
|
}
|
|
60
64
|
},
|
|
61
65
|
"devDependencies": {
|
|
62
|
-
"@
|
|
66
|
+
"@babel/core": "^7.25.0",
|
|
63
67
|
"@react-native/babel-preset": "0.85.0",
|
|
68
|
+
"@react-native/jest-preset": "0.85.0",
|
|
69
|
+
"@tree-sitter-grammars/tree-sitter-markdown": "0.3.2",
|
|
70
|
+
"@tree-sitter-grammars/tree-sitter-yaml": "0.7.1",
|
|
71
|
+
"@types/jest": "^29.5.0",
|
|
64
72
|
"@types/node": "^22.0.0",
|
|
65
73
|
"@types/react": "^19.2.0",
|
|
74
|
+
"babel-jest": "^29.7.0",
|
|
66
75
|
"clang-format": "^1.8.0",
|
|
67
76
|
"del-cli": "^7.0.0",
|
|
77
|
+
"jest": "^29.7.0",
|
|
68
78
|
"react": "19.2.3",
|
|
69
79
|
"react-native": "0.85.0",
|
|
70
80
|
"react-native-builder-bob": "^0.41.0",
|
|
81
|
+
"test-renderer": "^1.0.0",
|
|
82
|
+
"tree-sitter-bash": "0.23.3",
|
|
83
|
+
"tree-sitter-c": "0.23.5",
|
|
84
|
+
"tree-sitter-c-sharp": "0.23.1",
|
|
85
|
+
"tree-sitter-cpp": "0.23.4",
|
|
86
|
+
"tree-sitter-css": "0.23.2",
|
|
87
|
+
"tree-sitter-go": "0.23.4",
|
|
88
|
+
"tree-sitter-html": "0.23.2",
|
|
89
|
+
"tree-sitter-java": "0.23.5",
|
|
90
|
+
"tree-sitter-javascript": "0.23.1",
|
|
91
|
+
"tree-sitter-json": "0.24.8",
|
|
92
|
+
"tree-sitter-php": "0.24.2",
|
|
93
|
+
"tree-sitter-python": "0.23.6",
|
|
94
|
+
"tree-sitter-ruby": "0.23.1",
|
|
95
|
+
"tree-sitter-rust": "0.23.2",
|
|
96
|
+
"tree-sitter-swift": "0.7.0",
|
|
97
|
+
"tree-sitter-typescript": "0.23.2",
|
|
71
98
|
"typescript": "^6.0.2"
|
|
72
99
|
},
|
|
73
100
|
"react-native-builder-bob": {
|
package/postinstall.mjs
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Thin wrapper that invokes vendor-grammars.mjs and vendor-ratex.mjs in
|
|
3
|
+
// consumer mode (--from-npm) to download vendored native assets after install.
|
|
4
|
+
//
|
|
5
|
+
// In the monorepo, grammar-versions.json is not present at the expected path
|
|
6
|
+
// (it is only copied during prepack), so this script is a no-op -- the
|
|
7
|
+
// `prepare` script handles vendoring via the same scripts with monorepo paths.
|
|
8
|
+
|
|
9
|
+
import fs from 'node:fs';
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
import { fileURLToPath } from 'node:url';
|
|
12
|
+
import { spawnSync } from 'node:child_process';
|
|
13
|
+
|
|
14
|
+
const PKG_ROOT = path.dirname(fileURLToPath(import.meta.url));
|
|
15
|
+
const LOG = '[react-native-enriched-markdown-scaffold]';
|
|
16
|
+
|
|
17
|
+
const grammarManifest = path.join(PKG_ROOT, 'cpp/highlight/grammar-versions.json');
|
|
18
|
+
if (!fs.existsSync(grammarManifest)) {
|
|
19
|
+
console.log(`${LOG} grammar-versions.json not found; skipping postinstall.`);
|
|
20
|
+
console.log(`${LOG} This is expected in monorepo development (use \`yarn prepare\`).`);
|
|
21
|
+
process.exit(0);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Consumer opt-out. npm/yarn/pnpm set INIT_CWD to the project root running the
|
|
25
|
+
// install, so the consumer declares which heavy native assets to skip downloading
|
|
26
|
+
// via an `enriched-markdown` block in their own package.json:
|
|
27
|
+
//
|
|
28
|
+
// { "enriched-markdown": { "enableCodeHighlight": false, "enableMath": false } }
|
|
29
|
+
//
|
|
30
|
+
// Both features default to enabled (opt-out, not opt-in). Any resolution failure
|
|
31
|
+
// (INIT_CWD unset, unreadable/malformed JSON, absent key) falls back to downloading
|
|
32
|
+
// everything -- a skipped download is far cheaper to recover from than a silently
|
|
33
|
+
// missing feature. In a monorepo INIT_CWD is the workspace root where the install
|
|
34
|
+
// ran, so the download opt-out lives in the root package.json (one shared node_modules).
|
|
35
|
+
//
|
|
36
|
+
// The native build reads the *app* package.json directly (via the podspec's
|
|
37
|
+
// installation root / gradle's build root -- see the podspecs and android/build.gradle),
|
|
38
|
+
// which is a separate per-app decision. It reconciles that flag with asset presence on
|
|
39
|
+
// disk: an explicit opt-in with the asset missing fails loud, a default-on with it
|
|
40
|
+
// missing degrades to a clean build.
|
|
41
|
+
function resolveConsumerConfig() {
|
|
42
|
+
const initCwd = process.env.INIT_CWD;
|
|
43
|
+
if (!initCwd) {
|
|
44
|
+
return {};
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(initCwd, 'package.json'), 'utf8'));
|
|
48
|
+
const config = pkg['enriched-markdown'];
|
|
49
|
+
return config && typeof config === 'object' ? config : {};
|
|
50
|
+
} catch {
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const consumerConfig = resolveConsumerConfig();
|
|
56
|
+
|
|
57
|
+
// This script only decides what to DOWNLOAD into node_modules. The native build
|
|
58
|
+
// (podspec + build.gradle) reads the app package.json directly to decide what to
|
|
59
|
+
// compile/link, so nothing is written here for it to consume. The `codeHighlightLanguages`
|
|
60
|
+
// subset is a build-time concern (a language subset is selected from the full downloaded
|
|
61
|
+
// grammar set), so it is intentionally not read here. ENV vars are a deprecated fallback,
|
|
62
|
+
// honored only when package.json has no explicit value.
|
|
63
|
+
let enableCodeHighlight = consumerConfig.enableCodeHighlight;
|
|
64
|
+
let enableMath = consumerConfig.enableMath;
|
|
65
|
+
|
|
66
|
+
if (enableCodeHighlight === undefined && process.env.ENRICHED_MARKDOWN_ENABLE_CODE_HIGHLIGHT) {
|
|
67
|
+
console.warn(`${LOG} DEPRECATED: ENRICHED_MARKDOWN_ENABLE_CODE_HIGHLIGHT env var will be removed in a future version. Configure via "enriched-markdown".enableCodeHighlight in your package.json instead.`);
|
|
68
|
+
enableCodeHighlight = process.env.ENRICHED_MARKDOWN_ENABLE_CODE_HIGHLIGHT !== '0';
|
|
69
|
+
}
|
|
70
|
+
if (enableMath === undefined && process.env.ENRICHED_MARKDOWN_ENABLE_MATH) {
|
|
71
|
+
console.warn(`${LOG} DEPRECATED: ENRICHED_MARKDOWN_ENABLE_MATH env var will be removed in a future version. Configure via "enriched-markdown".enableMath in your package.json instead.`);
|
|
72
|
+
enableMath = process.env.ENRICHED_MARKDOWN_ENABLE_MATH !== '0';
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
enableCodeHighlight = enableCodeHighlight !== false;
|
|
76
|
+
enableMath = enableMath !== false;
|
|
77
|
+
|
|
78
|
+
if (!enableCodeHighlight && !enableMath) {
|
|
79
|
+
console.log(`${LOG} both code highlighting and math are disabled via package.json ("enriched-markdown"); skipping postinstall.`);
|
|
80
|
+
process.exit(0);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
console.log(`${LOG} restoring vendored native assets ...`);
|
|
84
|
+
|
|
85
|
+
const vendorGrammars = path.join(PKG_ROOT, 'vendor-grammars.mjs');
|
|
86
|
+
const vendorRatex = path.join(PKG_ROOT, 'vendor-ratex.mjs');
|
|
87
|
+
const vendorDir = path.join(PKG_ROOT, 'cpp/highlight/vendor');
|
|
88
|
+
const ratexManifest = path.join(PKG_ROOT, 'ratex-version.json');
|
|
89
|
+
const iosVendor = path.join(PKG_ROOT, 'ios/vendor');
|
|
90
|
+
|
|
91
|
+
let failed = false;
|
|
92
|
+
|
|
93
|
+
// Tree-sitter runtime + grammar C sources
|
|
94
|
+
if (enableCodeHighlight) {
|
|
95
|
+
const r1 = spawnSync(process.execPath, [
|
|
96
|
+
vendorGrammars,
|
|
97
|
+
'--from-npm',
|
|
98
|
+
'--vendor-dir', vendorDir,
|
|
99
|
+
'--manifest', grammarManifest,
|
|
100
|
+
], { stdio: 'inherit' });
|
|
101
|
+
if (r1.status !== 0) {
|
|
102
|
+
console.warn(`${LOG} WARNING: vendor-grammars failed. Code highlighting may not work.`);
|
|
103
|
+
failed = true;
|
|
104
|
+
}
|
|
105
|
+
} else {
|
|
106
|
+
console.log(`${LOG} code highlighting disabled via package.json ("enriched-markdown".enableCodeHighlight = false); skipping tree-sitter grammars.`);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// RaTeX XCFramework + Swift sources + fonts (iOS math)
|
|
110
|
+
if (!enableMath) {
|
|
111
|
+
console.log(`${LOG} math disabled via package.json ("enriched-markdown".enableMath = false); skipping RaTeX.`);
|
|
112
|
+
} else if (fs.existsSync(ratexManifest) && fs.existsSync(vendorRatex)) {
|
|
113
|
+
const r2 = spawnSync(process.execPath, [
|
|
114
|
+
vendorRatex,
|
|
115
|
+
'--manifest', ratexManifest,
|
|
116
|
+
'--output', iosVendor,
|
|
117
|
+
], { stdio: 'inherit' });
|
|
118
|
+
if (r2.status !== 0) {
|
|
119
|
+
console.warn(`${LOG} WARNING: vendor-ratex failed. iOS math rendering may not work.`);
|
|
120
|
+
failed = true;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (failed) {
|
|
125
|
+
console.warn(
|
|
126
|
+
`${LOG} Some downloads failed. Ensure network access to registry.npmjs.org and github.com, ` +
|
|
127
|
+
`then re-run: node node_modules/react-native-enriched-markdown-scaffold/postinstall.mjs`
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
console.log(`${LOG} postinstall complete.`);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "Pins the RaTeX Apple integration for vendor-ratex.mjs. Instead of React Native's spm_dependency (which builds/signs RaTeX's Swift wrapper from SPM source at build time and caused #491/#527), we vendor the prebuilt static XCFramework plus RaTeX's four core Swift sources and KaTeX fonts into packages/react-native-enriched-markdown/ios/vendor/ (gitignored, reproduced on demand, shipped in the npm tarball via prepack). Same mechanism as the tree-sitter runtime pin in grammar-versions.json. To re-pin: bump tag, download the two assets, run `node vendor/vendor-ratex.mjs --force`, and paste the sha256 it prints on mismatch. The swiftSources list mirrors erweixin/RaTeX's RaTeXCore.podspec; PlatformCompat.swift and RaTeXView.swift are intentionally omitted (the four files typecheck standalone and pull in no React Native/UI surface).",
|
|
3
|
+
"tag": "v0.1.14",
|
|
4
|
+
"xcframework": {
|
|
5
|
+
"url": "https://github.com/erweixin/RaTeX/releases/download/v0.1.14/RaTeX.xcframework.zip",
|
|
6
|
+
"sha256": "16b84a5e9b9f80ed4910c490f96dda047662e9bdd0934817ecf4464cf02581f2"
|
|
7
|
+
},
|
|
8
|
+
"source": {
|
|
9
|
+
"url": "https://github.com/erweixin/RaTeX/archive/refs/tags/v0.1.14.tar.gz",
|
|
10
|
+
"sha256": "2da907eb5dfcb464c7eef3b4c657fbdee144e3c6633e81efb1e56dcf1c76e01b",
|
|
11
|
+
"prefix": "RaTeX-0.1.14",
|
|
12
|
+
"swiftSources": [
|
|
13
|
+
"platforms/ios/Sources/Ratex/DisplayList.swift",
|
|
14
|
+
"platforms/ios/Sources/Ratex/RaTeXEngine.swift",
|
|
15
|
+
"platforms/ios/Sources/Ratex/RaTeXFontLoader.swift",
|
|
16
|
+
"platforms/ios/Sources/Ratex/RaTeXRenderer.swift"
|
|
17
|
+
],
|
|
18
|
+
"fontsDir": "platforms/ios/Sources/Ratex/Fonts",
|
|
19
|
+
"license": "LICENSE"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
codegenNativeComponent,
|
|
3
|
+
codegenNativeCommands,
|
|
3
4
|
type ViewProps,
|
|
4
5
|
type CodegenTypes,
|
|
5
6
|
type ColorValue,
|
|
7
|
+
type HostComponent,
|
|
6
8
|
} from 'react-native';
|
|
9
|
+
import type React from 'react';
|
|
7
10
|
|
|
8
11
|
// All block styles extend this interface
|
|
9
12
|
interface BaseBlockStyleInternal {
|
|
@@ -29,6 +32,8 @@ interface BlockquoteStyleInternal extends BaseBlockStyleInternal {
|
|
|
29
32
|
borderWidth: CodegenTypes.Float;
|
|
30
33
|
gapWidth: CodegenTypes.Float;
|
|
31
34
|
backgroundColor: ColorValue;
|
|
35
|
+
borderRadius: CodegenTypes.Float;
|
|
36
|
+
padding: CodegenTypes.Float;
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
interface ListStyleInternal extends BaseBlockStyleInternal {
|
|
@@ -39,6 +44,24 @@ interface ListStyleInternal extends BaseBlockStyleInternal {
|
|
|
39
44
|
markerFontWeight: string;
|
|
40
45
|
gapWidth: CodegenTypes.Float;
|
|
41
46
|
marginLeft: CodegenTypes.Float;
|
|
47
|
+
itemSpacing: CodegenTypes.Float;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
interface CodeBlockSyntaxColorsInternal {
|
|
51
|
+
keyword: ColorValue;
|
|
52
|
+
operatorColor: ColorValue;
|
|
53
|
+
punctuation: ColorValue;
|
|
54
|
+
string: ColorValue;
|
|
55
|
+
number: ColorValue;
|
|
56
|
+
constant: ColorValue;
|
|
57
|
+
comment: ColorValue;
|
|
58
|
+
function: ColorValue;
|
|
59
|
+
type: ColorValue;
|
|
60
|
+
variable: ColorValue;
|
|
61
|
+
property: ColorValue;
|
|
62
|
+
tag: ColorValue;
|
|
63
|
+
attribute: ColorValue;
|
|
64
|
+
embedded: ColorValue;
|
|
42
65
|
}
|
|
43
66
|
|
|
44
67
|
interface CodeBlockStyleInternal extends BaseBlockStyleInternal {
|
|
@@ -47,6 +70,7 @@ interface CodeBlockStyleInternal extends BaseBlockStyleInternal {
|
|
|
47
70
|
borderRadius: CodegenTypes.Float;
|
|
48
71
|
borderWidth: CodegenTypes.Float;
|
|
49
72
|
padding: CodegenTypes.Float;
|
|
73
|
+
syntaxColors: CodeBlockSyntaxColorsInternal;
|
|
50
74
|
}
|
|
51
75
|
|
|
52
76
|
interface LinkStyleInternal {
|
|
@@ -54,6 +78,11 @@ interface LinkStyleInternal {
|
|
|
54
78
|
color: ColorValue;
|
|
55
79
|
underline: boolean;
|
|
56
80
|
backgroundColor: ColorValue;
|
|
81
|
+
borderRadius: CodegenTypes.Float;
|
|
82
|
+
paddingHorizontal: CodegenTypes.Float;
|
|
83
|
+
paddingVertical: CodegenTypes.Float;
|
|
84
|
+
borderColor: ColorValue;
|
|
85
|
+
borderWidth: CodegenTypes.Float;
|
|
57
86
|
}
|
|
58
87
|
|
|
59
88
|
// Mirrors EnrichedMarkdownTextNativeComponent.ts — kept in sync manually (codegen spec files must be self-contained).
|
|
@@ -62,6 +91,11 @@ interface LinkVariantEntryInternal {
|
|
|
62
91
|
color: ColorValue;
|
|
63
92
|
underline: boolean;
|
|
64
93
|
backgroundColor: ColorValue;
|
|
94
|
+
borderRadius: CodegenTypes.Float;
|
|
95
|
+
paddingHorizontal: CodegenTypes.Float;
|
|
96
|
+
paddingVertical: CodegenTypes.Float;
|
|
97
|
+
borderColor: ColorValue;
|
|
98
|
+
borderWidth: CodegenTypes.Float;
|
|
65
99
|
}
|
|
66
100
|
|
|
67
101
|
interface StrongStyleInternal {
|
|
@@ -94,6 +128,9 @@ interface CodeStyleInternal {
|
|
|
94
128
|
|
|
95
129
|
interface ImageStyleInternal {
|
|
96
130
|
height: CodegenTypes.Float;
|
|
131
|
+
maxHeight: CodegenTypes.Float;
|
|
132
|
+
aspectRatio: CodegenTypes.Float;
|
|
133
|
+
resizeMode: string;
|
|
97
134
|
borderRadius: CodegenTypes.Float;
|
|
98
135
|
marginTop: CodegenTypes.Float;
|
|
99
136
|
marginBottom: CodegenTypes.Float;
|
|
@@ -121,6 +158,8 @@ interface TableStyleInternal extends BaseBlockStyleInternal {
|
|
|
121
158
|
borderRadius: CodegenTypes.Float;
|
|
122
159
|
cellPaddingHorizontal: CodegenTypes.Float;
|
|
123
160
|
cellPaddingVertical: CodegenTypes.Float;
|
|
161
|
+
horizontalOverflow: CodegenTypes.Float;
|
|
162
|
+
align: string;
|
|
124
163
|
}
|
|
125
164
|
|
|
126
165
|
interface TaskListStyleInternal {
|
|
@@ -142,12 +181,14 @@ interface MathStyleInternal {
|
|
|
142
181
|
marginBottom: CodegenTypes.Float;
|
|
143
182
|
textAlign: string;
|
|
144
183
|
fontWeight: string;
|
|
184
|
+
glyphOverflow: CodegenTypes.Float;
|
|
145
185
|
}
|
|
146
186
|
|
|
147
187
|
interface InlineMathStyleInternal {
|
|
148
188
|
color: ColorValue;
|
|
149
189
|
paddingVertical: CodegenTypes.Float;
|
|
150
190
|
fontWeight: string;
|
|
191
|
+
glyphOverflow: CodegenTypes.Float;
|
|
151
192
|
}
|
|
152
193
|
|
|
153
194
|
interface SpoilerParticlesStyleInternal {
|
|
@@ -219,17 +260,88 @@ export interface LinkLongPressEvent {
|
|
|
219
260
|
url: string;
|
|
220
261
|
}
|
|
221
262
|
|
|
263
|
+
/**
|
|
264
|
+
* `fragments` holds one entry per laid-out line of a link (a wrapping link
|
|
265
|
+
* yields several). Rects are in dp, relative to the native view's origin, and
|
|
266
|
+
* cover the drawn chip (glyphs + padding). Flattened rather than nested per
|
|
267
|
+
* link, and written inline, because codegen only accepts inline object
|
|
268
|
+
* literals as event array elements.
|
|
269
|
+
*/
|
|
270
|
+
export interface LinkLayoutEvent {
|
|
271
|
+
fragments: {
|
|
272
|
+
linkIndex: CodegenTypes.Int32;
|
|
273
|
+
url: string;
|
|
274
|
+
text: string;
|
|
275
|
+
x: CodegenTypes.Double;
|
|
276
|
+
y: CodegenTypes.Double;
|
|
277
|
+
width: CodegenTypes.Double;
|
|
278
|
+
height: CodegenTypes.Double;
|
|
279
|
+
}[];
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Current text selection, or a long-pressed table / math / code block while
|
|
284
|
+
* `contextMenuHidden` is on. `active: false` means the selection was cleared
|
|
285
|
+
* (every other field is then empty / zero). Rects are in dp / pt, relative to
|
|
286
|
+
* the native view's origin; rect objects are written inline because codegen
|
|
287
|
+
* only accepts inline object literals in event payloads.
|
|
288
|
+
*/
|
|
289
|
+
export interface SelectionChangeEvent {
|
|
290
|
+
active: boolean;
|
|
291
|
+
source: string;
|
|
292
|
+
text: string;
|
|
293
|
+
markdown: string;
|
|
294
|
+
whole: boolean;
|
|
295
|
+
rect: {
|
|
296
|
+
x: CodegenTypes.Double;
|
|
297
|
+
y: CodegenTypes.Double;
|
|
298
|
+
width: CodegenTypes.Double;
|
|
299
|
+
height: CodegenTypes.Double;
|
|
300
|
+
};
|
|
301
|
+
startRect: {
|
|
302
|
+
x: CodegenTypes.Double;
|
|
303
|
+
y: CodegenTypes.Double;
|
|
304
|
+
width: CodegenTypes.Double;
|
|
305
|
+
height: CodegenTypes.Double;
|
|
306
|
+
};
|
|
307
|
+
endRect: {
|
|
308
|
+
x: CodegenTypes.Double;
|
|
309
|
+
y: CodegenTypes.Double;
|
|
310
|
+
width: CodegenTypes.Double;
|
|
311
|
+
height: CodegenTypes.Double;
|
|
312
|
+
};
|
|
313
|
+
adjusting: boolean;
|
|
314
|
+
}
|
|
315
|
+
|
|
222
316
|
export interface TaskListItemPressEvent {
|
|
223
317
|
index: CodegenTypes.Int32;
|
|
224
318
|
checked: boolean;
|
|
225
319
|
text: string;
|
|
226
320
|
}
|
|
227
321
|
|
|
322
|
+
export interface CopyPressEvent {
|
|
323
|
+
code: string;
|
|
324
|
+
language: string;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
export interface CopyRequestEvent {
|
|
328
|
+
// 'selection' | 'math' | 'table' | 'code'
|
|
329
|
+
source: string;
|
|
330
|
+
markdown: string;
|
|
331
|
+
text: string;
|
|
332
|
+
whole: boolean;
|
|
333
|
+
}
|
|
334
|
+
|
|
228
335
|
export interface ContextMenuItemConfig {
|
|
229
336
|
text: string;
|
|
230
337
|
icon?: string;
|
|
231
338
|
}
|
|
232
339
|
|
|
340
|
+
export interface ImageRequestHeaderInternal {
|
|
341
|
+
name: string;
|
|
342
|
+
value: string;
|
|
343
|
+
}
|
|
344
|
+
|
|
233
345
|
export interface SelectionMenuConfig {
|
|
234
346
|
copyAsMarkdown: boolean;
|
|
235
347
|
copyImageUrl: boolean;
|
|
@@ -240,6 +352,16 @@ export interface SelectionMenuConfig {
|
|
|
240
352
|
// Precomputed plural templates indexed by image count (0..100). Empty when no
|
|
241
353
|
// pluralLabels are set; native then uses copyImageUrlLabel/copyImageUrlsLabel.
|
|
242
354
|
copyImageUrlPluralTemplates: ReadonlyArray<string>;
|
|
355
|
+
// false removes the Copy item from the text and block menus.
|
|
356
|
+
copyEnabled: boolean;
|
|
357
|
+
// true: Copy writes Markdown (plain text) instead of rich text / raw block content.
|
|
358
|
+
copyFormatMarkdown: boolean;
|
|
359
|
+
// true: the text selection menu drops every system-provided item.
|
|
360
|
+
systemItemsNone: boolean;
|
|
361
|
+
// false hides the copy button in the code block header.
|
|
362
|
+
codeBlockCopyButton: boolean;
|
|
363
|
+
// true: the Copy item emits onCopyRequest instead of writing the clipboard.
|
|
364
|
+
interceptCopy: boolean;
|
|
243
365
|
}
|
|
244
366
|
|
|
245
367
|
export interface OnContextMenuItemPressEvent {
|
|
@@ -311,10 +433,16 @@ export interface Md4cFlagsInternal {
|
|
|
311
433
|
* @default false
|
|
312
434
|
*/
|
|
313
435
|
highlight: boolean;
|
|
436
|
+
/**
|
|
437
|
+
* Treat soft breaks (single newlines) as hard breaks (visible line breaks).
|
|
438
|
+
* @default false
|
|
439
|
+
*/
|
|
440
|
+
hardSoftBreaks: boolean;
|
|
314
441
|
}
|
|
315
442
|
|
|
316
443
|
interface StreamingConfigInternal {
|
|
317
444
|
tableMode: string;
|
|
445
|
+
codeBlockMode: string;
|
|
318
446
|
}
|
|
319
447
|
|
|
320
448
|
export interface NativeProps extends ViewProps {
|
|
@@ -340,11 +468,56 @@ export interface NativeProps extends ViewProps {
|
|
|
340
468
|
* - Android: Handles long press gestures on links.
|
|
341
469
|
*/
|
|
342
470
|
onLinkLongPress?: CodegenTypes.BubblingEventHandler<LinkLongPressEvent>;
|
|
471
|
+
/**
|
|
472
|
+
* When true, the view reports the laid-out rects of every link through
|
|
473
|
+
* `onLinkLayout` (after each render and whenever its size changes).
|
|
474
|
+
* Set by the JS wrapper only when `renderLinkDecoration` is provided.
|
|
475
|
+
* @default false
|
|
476
|
+
*/
|
|
477
|
+
emitLinkLayout?: CodegenTypes.WithDefault<boolean, false>;
|
|
478
|
+
/**
|
|
479
|
+
* Fired with the rects of every link fragment while `emitLinkLayout` is on.
|
|
480
|
+
* Deduplicated: not re-fired when the payload is unchanged.
|
|
481
|
+
*/
|
|
482
|
+
onLinkLayout?: CodegenTypes.DirectEventHandler<LinkLayoutEvent>;
|
|
483
|
+
/**
|
|
484
|
+
* When true, the view reports selection changes (and, with
|
|
485
|
+
* `contextMenuHidden`, block long-presses) through `onSelectionChange`.
|
|
486
|
+
* Set by the JS wrapper only when `onSelectionChange` is provided.
|
|
487
|
+
* @default false
|
|
488
|
+
*/
|
|
489
|
+
emitSelectionChange?: CodegenTypes.WithDefault<boolean, false>;
|
|
490
|
+
/**
|
|
491
|
+
* Fired while `emitSelectionChange` is on: coalesced to one event per frame,
|
|
492
|
+
* deduplicated, and `active: false` once the selection is gone.
|
|
493
|
+
*/
|
|
494
|
+
onSelectionChange?: CodegenTypes.DirectEventHandler<SelectionChangeEvent>;
|
|
343
495
|
/**
|
|
344
496
|
* Callback fired when a task list checkbox is tapped.
|
|
345
497
|
* Receives the 0-based task index, current checked state, and the item's plain text.
|
|
346
498
|
*/
|
|
347
499
|
onTaskListItemPress?: CodegenTypes.BubblingEventHandler<TaskListItemPressEvent>;
|
|
500
|
+
/**
|
|
501
|
+
* Controls whether tapping a task list checkbox toggles its checked state.
|
|
502
|
+
*
|
|
503
|
+
* When `false`, the tap is fully inert: no visual toggle and no
|
|
504
|
+
* `onTaskListItemPress` emission. Text selection and links are unaffected.
|
|
505
|
+
*
|
|
506
|
+
* @default true
|
|
507
|
+
*/
|
|
508
|
+
enableTaskListItemToggle?: CodegenTypes.WithDefault<boolean, true>;
|
|
509
|
+
/**
|
|
510
|
+
* Callback fired when code is copied from a fenced code block's header copy
|
|
511
|
+
* button, its long-press context-menu "Copy" action, or the VoiceOver copy
|
|
512
|
+
* action. Receives the copied code and its language.
|
|
513
|
+
*/
|
|
514
|
+
onCopyPress?: CodegenTypes.BubblingEventHandler<CopyPressEvent>;
|
|
515
|
+
/**
|
|
516
|
+
* Fired instead of writing the clipboard when the Copy item of the text
|
|
517
|
+
* selection menu or a table / math / code block menu is pressed while
|
|
518
|
+
* `selectionMenuConfig.interceptCopy` is set.
|
|
519
|
+
*/
|
|
520
|
+
onCopyRequest?: CodegenTypes.BubblingEventHandler<CopyRequestEvent>;
|
|
348
521
|
/**
|
|
349
522
|
* Controls whether the system link preview is shown on long press (iOS only).
|
|
350
523
|
*
|
|
@@ -358,6 +531,16 @@ export interface NativeProps extends ViewProps {
|
|
|
358
531
|
* @default true
|
|
359
532
|
*/
|
|
360
533
|
enableLinkPreview?: CodegenTypes.WithDefault<boolean, true>;
|
|
534
|
+
/**
|
|
535
|
+
* When `true`, long-pressing a link selects its label and shows the
|
|
536
|
+
* selection edit menu instead of the system link preview (iOS only).
|
|
537
|
+
* Takes precedence over `enableLinkPreview` and `onLinkLongPress`.
|
|
538
|
+
*
|
|
539
|
+
* Android: No-op.
|
|
540
|
+
*
|
|
541
|
+
* @default false
|
|
542
|
+
*/
|
|
543
|
+
linkLongPressSelects?: CodegenTypes.WithDefault<boolean, false>;
|
|
361
544
|
/**
|
|
362
545
|
* - iOS: Controls text selection and link previews on long press.
|
|
363
546
|
* - Android: Controls text selection.
|
|
@@ -425,10 +608,18 @@ export interface NativeProps extends ViewProps {
|
|
|
425
608
|
*/
|
|
426
609
|
spoilerOverlay?: CodegenTypes.WithDefault<string, 'particles'>;
|
|
427
610
|
|
|
611
|
+
/**
|
|
612
|
+
* Hides the text selection context menu while keeping text selectable.
|
|
613
|
+
*/
|
|
614
|
+
contextMenuHidden?: CodegenTypes.WithDefault<boolean, false>;
|
|
428
615
|
/**
|
|
429
616
|
* Custom items to show in the text selection context menu.
|
|
430
617
|
*/
|
|
431
618
|
contextMenuItems?: ReadonlyArray<Readonly<ContextMenuItemConfig>>;
|
|
619
|
+
/**
|
|
620
|
+
* HTTP headers attached to remote image requests, as name/value pairs.
|
|
621
|
+
*/
|
|
622
|
+
imageRequestHeaders?: ReadonlyArray<Readonly<ImageRequestHeaderInternal>>;
|
|
432
623
|
/**
|
|
433
624
|
* Built-in items to show in the text selection context menu.
|
|
434
625
|
*/
|
|
@@ -464,6 +655,17 @@ export interface NativeProps extends ViewProps {
|
|
|
464
655
|
writingDirection?: CodegenTypes.WithDefault<string, 'first-strong'>;
|
|
465
656
|
}
|
|
466
657
|
|
|
658
|
+
type ComponentType = HostComponent<NativeProps>;
|
|
659
|
+
|
|
660
|
+
interface NativeCommands {
|
|
661
|
+
/** Clears the text selection (and any active block) and fires `onSelectionChange` with `active: false`. */
|
|
662
|
+
clearSelection: (viewRef: React.ElementRef<ComponentType>) => void;
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
|
|
666
|
+
supportedCommands: ['clearSelection'],
|
|
667
|
+
});
|
|
668
|
+
|
|
467
669
|
export default codegenNativeComponent<NativeProps>('EnrichedMarkdown', {
|
|
468
670
|
interfaceOnly: true,
|
|
469
|
-
})
|
|
671
|
+
}) as HostComponent<NativeProps>;
|