react-native-enriched-markdown-scaffold 0.6.0-scaffold.6 → 0.7.4-scaffold.1
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/ReactNativeEnrichedMarkdown.podspec +62 -11
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownManagerDelegate.java +3 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownManagerInterface.java +1 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownTextInputManagerDelegate.java +9 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownTextInputManagerInterface.java +3 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownTextManagerDelegate.java +3 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownTextManagerInterface.java +1 -0
- package/android/generated/jni/react/renderer/components/EnrichedMarkdownTextSpec/Props.cpp +20 -0
- package/android/generated/jni/react/renderer/components/EnrichedMarkdownTextSpec/Props.h +744 -36
- package/android/src/main/baseline-prof.txt +75 -2
- package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdown.kt +62 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownInternalText.kt +10 -2
- package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownManager.kt +10 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownText.kt +9 -2
- package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownTextManager.kt +10 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/MeasurementStore.kt +0 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/accessibility/AccessibilityLabels.kt +15 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/accessibility/MarkdownAccessibilityHelper.kt +44 -7
- package/android/src/main/java/com/swmansion/enriched/markdown/input/EnrichedMarkdownTextInputManager.kt +52 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/EnrichedMarkdownTextInputView.kt +55 -3
- package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/FormattingStore.kt +19 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/InputParser.kt +22 -3
- package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/InputRemend.kt +1 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/input/layout/InputMeasurementStore.kt +7 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/input/model/MathChipStyle.kt +0 -3
- package/android/src/main/java/com/swmansion/enriched/markdown/input/toolbar/InputContextMenu.kt +54 -13
- package/android/src/main/java/com/swmansion/enriched/markdown/parser/MarkdownASTNode.kt +17 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/renderer/SpanStyleCache.kt +4 -4
- package/android/src/main/java/com/swmansion/enriched/markdown/spans/MathModels.kt +0 -1
- package/android/src/main/java/com/swmansion/enriched/markdown/styles/InlineMathStyle.kt +1 -3
- package/android/src/main/java/com/swmansion/enriched/markdown/styles/MathStyle.kt +1 -3
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/MarkdownViewManagerUtils.kt +30 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/input/MarkdownStyleParser.kt +0 -14
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/LinkEvents.kt +22 -0
- package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/SelectionActionMode.kt +36 -7
- package/android/src/main/java/com/swmansion/enriched/markdown/views/TableContainerView.kt +73 -3
- package/android/src/main/jni/CMakeLists.txt +15 -1
- package/android/src/math/java/com/swmansion/enriched/markdown/renderer/MathInlineRenderer.kt +0 -1
- package/android/src/math/java/com/swmansion/enriched/markdown/spans/MathChipSpan.kt +1 -2
- package/android/src/math/java/com/swmansion/enriched/markdown/spans/MathInlineSpan.kt +1 -3
- package/android/src/math/java/com/swmansion/enriched/markdown/spans/MathMeasureHelper.kt +1 -2
- package/android/src/math/java/com/swmansion/enriched/markdown/views/MathContainerView.kt +25 -10
- package/app.plugin.js +2 -1
- package/cpp/parser/MD4CParser.cpp +1 -1
- package/cpp/wasm/build.sh +9 -9
- package/docs/ACCESSIBILITY.md +172 -0
- package/docs/API_REFERENCE.md +948 -0
- package/docs/COPY_OPTIONS.md +127 -0
- package/docs/ELEMENTS_STRUCTURE.md +112 -0
- package/docs/IMAGE_CACHING.md +25 -0
- package/docs/INPUT.md +233 -0
- package/docs/LATEX_MATH.md +136 -0
- package/docs/MACOS.md +19 -0
- package/docs/MARKDOWN_STREAMING.md +36 -0
- package/docs/MENTIONS.md +97 -0
- package/docs/RTL.md +82 -0
- package/docs/STYLES.md +519 -0
- package/docs/TEXT.md +110 -0
- package/docs/WEB.md +49 -0
- package/ios/EnrichedMarkdown.mm +82 -25
- package/ios/EnrichedMarkdownText.mm +37 -5
- package/ios/attachments/ENRMMathInlineAttachment+macOS.m +1 -5
- package/ios/attachments/ENRMMathInlineAttachment.h +0 -3
- package/ios/attachments/ENRMMathInlineAttachment.m +1 -2
- package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/Props.cpp +20 -0
- package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/Props.h +744 -36
- package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/RCTComponentViewHelpers.h +15 -0
- package/ios/input/ENRMFormattingStore.h +5 -0
- package/ios/input/ENRMFormattingStore.mm +34 -0
- package/ios/input/ENRMInputFormatter.h +0 -6
- package/ios/input/ENRMInputFormatter.mm +0 -2
- package/ios/input/ENRMInputTextView.h +2 -0
- package/ios/input/ENRMInputTextView.mm +8 -17
- package/ios/input/ENRMMarkdownSerializer.mm +1 -1
- package/ios/input/EnrichedMarkdownTextInput+ContextMenu.mm +71 -53
- package/ios/input/EnrichedMarkdownTextInput+Internal.h +26 -0
- package/ios/input/EnrichedMarkdownTextInput.h +1 -0
- package/ios/input/EnrichedMarkdownTextInput.mm +207 -12
- package/ios/input/InputStylePropsUtils.h +0 -8
- package/ios/input/styles/ENRMBoldStyleHandler.mm +3 -2
- package/ios/input/styles/ENRMItalicStyleHandler.mm +3 -2
- package/ios/math/ENRMRaTeXBridge.swift +2 -16
- package/ios/renderer/AttributedRenderer.m +51 -6
- package/ios/renderer/ENRMMathInlineRenderer.m +5 -2
- package/ios/styles/ENRMFontSlot.h +1 -1
- package/ios/styles/StyleConfig.h +0 -4
- package/ios/styles/StyleConfig.mm +0 -24
- package/ios/utils/ENRMAccessibilityLabels.h +36 -0
- package/ios/utils/ENRMAccessibilityLabels.m +5 -0
- package/ios/utils/EditMenuUtils+macOS.m +4 -5
- package/ios/utils/EditMenuUtils.h +70 -0
- package/ios/utils/EditMenuUtils.m +14 -11
- package/ios/utils/LastElementUtils.h +39 -2
- package/ios/utils/MarkdownAccessibilityElementBuilder.h +18 -16
- package/ios/utils/MarkdownAccessibilityElementBuilder.m +64 -32
- package/ios/utils/ParagraphStyleUtils.m +21 -2
- package/ios/utils/StylePropsUtils.h +0 -10
- package/ios/views/ENRMMathContainerView.h +8 -0
- package/ios/views/ENRMMathContainerView.m +8 -7
- package/ios/views/ENRMTableIOSGridView.h +40 -0
- package/ios/views/ENRMTableIOSGridView.m +216 -0
- package/ios/views/EnrichedMarkdownInternalText.h +2 -0
- package/ios/views/EnrichedMarkdownInternalText.m +2 -0
- package/ios/views/TableContainerView.h +8 -0
- package/ios/views/TableContainerView.m +72 -128
- package/lib/module/EnrichedMarkdownNativeComponent.ts +37 -2
- package/lib/module/EnrichedMarkdownTextInput.js +48 -1
- package/lib/module/EnrichedMarkdownTextInput.js.map +1 -1
- package/lib/module/EnrichedMarkdownTextInputNativeComponent.ts +35 -1
- package/lib/module/EnrichedMarkdownTextNativeComponent.ts +37 -2
- package/lib/module/accessibilityLabelDefaults.js +64 -0
- package/lib/module/accessibilityLabelDefaults.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/native/EnrichedMarkdownText.js +72 -4
- package/lib/module/native/EnrichedMarkdownText.js.map +1 -1
- package/lib/module/normalizeMarkdownStyle.js +2 -4
- package/lib/module/normalizeMarkdownStyle.js.map +1 -1
- package/lib/module/normalizeMarkdownStyle.web.js +2 -4
- package/lib/module/normalizeMarkdownStyle.web.js.map +1 -1
- package/lib/module/normalizeMarkdownTextInputStyle.js +3 -10
- package/lib/module/normalizeMarkdownTextInputStyle.js.map +1 -1
- package/lib/module/normalizeMenuItem.js +38 -0
- package/lib/module/normalizeMenuItem.js.map +1 -0
- package/lib/module/types/AccessibilityLabels.js +2 -0
- package/lib/module/types/AccessibilityLabels.js.map +1 -0
- package/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts +34 -2
- package/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/EnrichedMarkdownTextInput.d.ts +55 -13
- package/lib/typescript/src/EnrichedMarkdownTextInput.d.ts.map +1 -1
- package/lib/typescript/src/EnrichedMarkdownTextInputNativeComponent.d.ts +30 -1
- package/lib/typescript/src/EnrichedMarkdownTextInputNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts +34 -2
- package/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/accessibilityLabelDefaults.d.ts +16 -0
- package/lib/typescript/src/accessibilityLabelDefaults.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +4 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/native/EnrichedMarkdownText.d.ts +3 -3
- 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 +0 -2
- package/lib/typescript/src/normalizeMarkdownTextInputStyle.d.ts.map +1 -1
- package/lib/typescript/src/normalizeMenuItem.d.ts +7 -0
- package/lib/typescript/src/normalizeMenuItem.d.ts.map +1 -0
- package/lib/typescript/src/types/AccessibilityLabels.d.ts +114 -0
- package/lib/typescript/src/types/AccessibilityLabels.d.ts.map +1 -0
- package/lib/typescript/src/types/MarkdownStyle.d.ts +0 -14
- package/lib/typescript/src/types/MarkdownStyle.d.ts.map +1 -1
- package/lib/typescript/src/types/MarkdownStyleInternal.d.ts +0 -3
- package/lib/typescript/src/types/MarkdownStyleInternal.d.ts.map +1 -1
- package/lib/typescript/src/types/MarkdownTextProps.d.ts +78 -9
- package/lib/typescript/src/types/MarkdownTextProps.d.ts.map +1 -1
- package/package.json +4 -2
- package/plugin/build/withAndroidMath.js +19 -0
- package/plugin/build/withIosMath.js +28 -0
- package/plugin/build/withReactNativeEnrichedMarkdown.js +11 -0
- package/plugin/tsconfig.build.json +16 -0
- package/src/EnrichedMarkdownNativeComponent.ts +37 -2
- package/src/EnrichedMarkdownTextInput.tsx +117 -13
- package/src/EnrichedMarkdownTextInputNativeComponent.ts +35 -1
- package/src/EnrichedMarkdownTextNativeComponent.ts +37 -2
- package/src/accessibilityLabelDefaults.ts +83 -0
- package/src/index.tsx +11 -0
- package/src/native/EnrichedMarkdownText.tsx +120 -6
- package/src/normalizeMarkdownStyle.ts +1 -6
- package/src/normalizeMarkdownStyle.web.ts +1 -6
- package/src/normalizeMarkdownTextInputStyle.ts +0 -14
- package/src/normalizeMenuItem.ts +52 -0
- package/src/types/AccessibilityLabels.ts +118 -0
- package/src/types/MarkdownStyle.ts +0 -14
- package/src/types/MarkdownStyleInternal.ts +0 -4
- package/src/types/MarkdownTextProps.ts +74 -9
- package/android/src/math/java/com/swmansion/enriched/markdown/utils/math/LatexWeightWrapper.kt +0 -23
- package/lib/module/plugin/withAndroidMath.js +0 -20
- package/lib/module/plugin/withAndroidMath.js.map +0 -1
- package/lib/module/plugin/withIosMath.js +0 -23
- package/lib/module/plugin/withIosMath.js.map +0 -1
- package/lib/module/plugin/withReactNativeEnrichedMarkdown.js +0 -16
- package/lib/module/plugin/withReactNativeEnrichedMarkdown.js.map +0 -1
- package/lib/typescript/src/plugin/withAndroidMath.d.ts +0 -5
- package/lib/typescript/src/plugin/withAndroidMath.d.ts.map +0 -1
- package/lib/typescript/src/plugin/withIosMath.d.ts +0 -5
- package/lib/typescript/src/plugin/withIosMath.d.ts.map +0 -1
- package/lib/typescript/src/plugin/withReactNativeEnrichedMarkdown.d.ts +0 -6
- package/lib/typescript/src/plugin/withReactNativeEnrichedMarkdown.d.ts.map +0 -1
- /package/{src/plugin → plugin/src}/withAndroidMath.ts +0 -0
- /package/{src/plugin → plugin/src}/withIosMath.ts +0 -0
- /package/{src/plugin → plugin/src}/withReactNativeEnrichedMarkdown.ts +0 -0
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# Core View and Rendering
|
|
6
6
|
Lcom/swmansion/enriched/markdown/EnrichedMarkdown;
|
|
7
|
+
Lcom/swmansion/enriched/markdown/EnrichedMarkdown$DirtyFlag;
|
|
7
8
|
Lcom/swmansion/enriched/markdown/EnrichedMarkdownInternalText;
|
|
8
9
|
Lcom/swmansion/enriched/markdown/EnrichedMarkdownManager;
|
|
9
10
|
Lcom/swmansion/enriched/markdown/EnrichedMarkdownText;
|
|
@@ -11,10 +12,18 @@ Lcom/swmansion/enriched/markdown/EnrichedMarkdownTextLayoutManager;
|
|
|
11
12
|
Lcom/swmansion/enriched/markdown/EnrichedMarkdownTextManager;
|
|
12
13
|
Lcom/swmansion/enriched/markdown/EnrichedMarkdownTextPackage;
|
|
13
14
|
Lcom/swmansion/enriched/markdown/MeasurementStore;
|
|
15
|
+
Lcom/swmansion/enriched/markdown/MeasurementStore$FontScalingSettings;
|
|
16
|
+
Lcom/swmansion/enriched/markdown/MeasurementStore$MeasurementParams;
|
|
17
|
+
Lcom/swmansion/enriched/markdown/MeasurementStore$PaintParams;
|
|
14
18
|
|
|
15
19
|
# Accessibility
|
|
20
|
+
Lcom/swmansion/enriched/markdown/accessibility/AccessibilityLabels;
|
|
16
21
|
Lcom/swmansion/enriched/markdown/accessibility/AccessibleMarkdownTextView;
|
|
17
22
|
Lcom/swmansion/enriched/markdown/accessibility/MarkdownAccessibilityHelper;
|
|
23
|
+
Lcom/swmansion/enriched/markdown/accessibility/MarkdownAccessibilityHelper$AccessibilityItem;
|
|
24
|
+
Lcom/swmansion/enriched/markdown/accessibility/MarkdownAccessibilityHelper$ListItemInfo;
|
|
25
|
+
Lcom/swmansion/enriched/markdown/accessibility/MarkdownAccessibilityHelper$SpanRange;
|
|
26
|
+
Lcom/swmansion/enriched/markdown/accessibility/MarkdownAccessibilityHelperKt;
|
|
18
27
|
|
|
19
28
|
# Events
|
|
20
29
|
Lcom/swmansion/enriched/markdown/events/ContextMenuItemPressEvent;
|
|
@@ -25,12 +34,15 @@ Lcom/swmansion/enriched/markdown/events/TaskListItemPressEvent;
|
|
|
25
34
|
# Input - Core
|
|
26
35
|
Lcom/swmansion/enriched/markdown/input/EnrichedMarkdownTextInputManager;
|
|
27
36
|
Lcom/swmansion/enriched/markdown/input/EnrichedMarkdownTextInputView;
|
|
37
|
+
Lcom/swmansion/enriched/markdown/input/EnrichedMarkdownTextInputView$MentionCandidate;
|
|
38
|
+
Lcom/swmansion/enriched/markdown/input/EnrichedMarkdownTextInputViewKt;
|
|
28
39
|
|
|
29
40
|
# Input - Autolink
|
|
30
41
|
Lcom/swmansion/enriched/markdown/input/autolink/AutoDetectedLinkColorSpan;
|
|
31
42
|
Lcom/swmansion/enriched/markdown/input/autolink/AutoDetectedLinkMarkerSpan;
|
|
32
43
|
Lcom/swmansion/enriched/markdown/input/autolink/AutoDetectedLinkUnderlineSpan;
|
|
33
44
|
Lcom/swmansion/enriched/markdown/input/autolink/AutoLinkDetector;
|
|
45
|
+
Lcom/swmansion/enriched/markdown/input/autolink/AutoLinkDetectorKt;
|
|
34
46
|
Lcom/swmansion/enriched/markdown/input/autolink/LinkRegexConfig;
|
|
35
47
|
|
|
36
48
|
# Input - Detection
|
|
@@ -62,28 +74,48 @@ Lcom/swmansion/enriched/markdown/input/events/OnStartMentionEvent;
|
|
|
62
74
|
|
|
63
75
|
# Input - Formatting
|
|
64
76
|
Lcom/swmansion/enriched/markdown/input/formatting/FormattingStore;
|
|
77
|
+
Lcom/swmansion/enriched/markdown/input/formatting/FormattingStore$EditOverlap;
|
|
65
78
|
Lcom/swmansion/enriched/markdown/input/formatting/InputFormatter;
|
|
66
79
|
Lcom/swmansion/enriched/markdown/input/formatting/InputParser;
|
|
67
80
|
Lcom/swmansion/enriched/markdown/input/formatting/InputRemend;
|
|
81
|
+
Lcom/swmansion/enriched/markdown/input/formatting/InputRemend$DelimiterPair;
|
|
68
82
|
Lcom/swmansion/enriched/markdown/input/formatting/MarkdownSerializer;
|
|
83
|
+
Lcom/swmansion/enriched/markdown/input/formatting/MarkdownSerializer$BoundaryEvent;
|
|
69
84
|
Lcom/swmansion/enriched/markdown/input/formatting/MarkdownSpan;
|
|
85
|
+
Lcom/swmansion/enriched/markdown/input/formatting/MarkdownSpan$SpanDescriptor;
|
|
70
86
|
Lcom/swmansion/enriched/markdown/input/formatting/ParseResult;
|
|
87
|
+
Lcom/swmansion/enriched/markdown/input/formatting/ParseResult$ActiveStyle;
|
|
71
88
|
|
|
72
89
|
# Input - Layout
|
|
73
90
|
Lcom/swmansion/enriched/markdown/input/layout/InputEventEmitter;
|
|
74
91
|
Lcom/swmansion/enriched/markdown/input/layout/InputLayoutManager;
|
|
75
92
|
Lcom/swmansion/enriched/markdown/input/layout/InputMeasurementStore;
|
|
93
|
+
Lcom/swmansion/enriched/markdown/input/layout/InputMeasurementStore$MeasurementParams;
|
|
94
|
+
Lcom/swmansion/enriched/markdown/input/layout/InputMeasurementStore$PaintParams;
|
|
76
95
|
|
|
77
96
|
# Input - Model
|
|
78
97
|
Lcom/swmansion/enriched/markdown/input/model/CaretRect;
|
|
79
98
|
Lcom/swmansion/enriched/markdown/input/model/FormattingRange;
|
|
80
99
|
Lcom/swmansion/enriched/markdown/input/model/InputFormatterStyle;
|
|
100
|
+
Lcom/swmansion/enriched/markdown/input/model/InputLinkVariantStyle;
|
|
81
101
|
Lcom/swmansion/enriched/markdown/input/model/StyleType;
|
|
82
102
|
|
|
83
103
|
# Input - Styles
|
|
84
104
|
Lcom/swmansion/enriched/markdown/input/styles/BoldStyleHandler;
|
|
85
105
|
Lcom/swmansion/enriched/markdown/input/styles/ItalicStyleHandler;
|
|
86
106
|
Lcom/swmansion/enriched/markdown/input/styles/LinkStyleHandler;
|
|
107
|
+
Lcom/swmansion/enriched/markdown/input/styles/MarkdownBoldColorSpan;
|
|
108
|
+
Lcom/swmansion/enriched/markdown/input/styles/MarkdownBoldSpan;
|
|
109
|
+
Lcom/swmansion/enriched/markdown/input/styles/MarkdownItalicColorSpan;
|
|
110
|
+
Lcom/swmansion/enriched/markdown/input/styles/MarkdownItalicSpan;
|
|
111
|
+
Lcom/swmansion/enriched/markdown/input/styles/MarkdownLinkBackgroundColorSpan;
|
|
112
|
+
Lcom/swmansion/enriched/markdown/input/styles/MarkdownLinkColorSpan;
|
|
113
|
+
Lcom/swmansion/enriched/markdown/input/styles/MarkdownLinkColorSpan$ResolvedLinkStyle;
|
|
114
|
+
Lcom/swmansion/enriched/markdown/input/styles/MarkdownLinkUnderlineSpan;
|
|
115
|
+
Lcom/swmansion/enriched/markdown/input/styles/MarkdownSpoilerBackgroundSpan;
|
|
116
|
+
Lcom/swmansion/enriched/markdown/input/styles/MarkdownSpoilerColorSpan;
|
|
117
|
+
Lcom/swmansion/enriched/markdown/input/styles/MarkdownStrikethroughSpan;
|
|
118
|
+
Lcom/swmansion/enriched/markdown/input/styles/MarkdownUnderlineSpan;
|
|
87
119
|
Lcom/swmansion/enriched/markdown/input/styles/SpoilerStyleHandler;
|
|
88
120
|
Lcom/swmansion/enriched/markdown/input/styles/StrikethroughStyleHandler;
|
|
89
121
|
Lcom/swmansion/enriched/markdown/input/styles/StyleHandler;
|
|
@@ -91,33 +123,42 @@ Lcom/swmansion/enriched/markdown/input/styles/StyleMergingConfig;
|
|
|
91
123
|
Lcom/swmansion/enriched/markdown/input/styles/UnderlineStyleHandler;
|
|
92
124
|
|
|
93
125
|
# Input - Toolbar
|
|
126
|
+
Lcom/swmansion/enriched/markdown/input/toolbar/FormatMenuConfig;
|
|
94
127
|
Lcom/swmansion/enriched/markdown/input/toolbar/InputContextMenu;
|
|
128
|
+
Lcom/swmansion/enriched/markdown/input/toolbar/InputSelectionMenuConfig;
|
|
95
129
|
|
|
96
130
|
# Parser
|
|
97
131
|
Lcom/swmansion/enriched/markdown/parser/Md4cFlags;
|
|
98
132
|
Lcom/swmansion/enriched/markdown/parser/MarkdownASTNode;
|
|
99
133
|
Lcom/swmansion/enriched/markdown/parser/MarkdownASTNode$NodeType;
|
|
134
|
+
Lcom/swmansion/enriched/markdown/parser/MarkdownASTNodeKt;
|
|
100
135
|
Lcom/swmansion/enriched/markdown/parser/Parser;
|
|
101
136
|
|
|
102
137
|
# Renderer Classes
|
|
103
138
|
Lcom/swmansion/enriched/markdown/renderer/BaselineShiftRenderer;
|
|
104
139
|
Lcom/swmansion/enriched/markdown/renderer/BlockStyle;
|
|
105
140
|
Lcom/swmansion/enriched/markdown/renderer/BlockStyleContext;
|
|
141
|
+
Lcom/swmansion/enriched/markdown/renderer/BlockStyleEntry;
|
|
106
142
|
Lcom/swmansion/enriched/markdown/renderer/BlockType;
|
|
143
|
+
Lcom/swmansion/enriched/markdown/renderer/BlockType$ListType;
|
|
107
144
|
Lcom/swmansion/enriched/markdown/renderer/BlockquoteRenderer;
|
|
108
145
|
Lcom/swmansion/enriched/markdown/renderer/CodeBlockRenderer;
|
|
146
|
+
Lcom/swmansion/enriched/markdown/renderer/CodeBlockRenderer$CodeBlockBoundaryPaddingSpan;
|
|
109
147
|
Lcom/swmansion/enriched/markdown/renderer/CodeRenderer;
|
|
110
148
|
Lcom/swmansion/enriched/markdown/renderer/DocumentRenderer;
|
|
111
149
|
Lcom/swmansion/enriched/markdown/renderer/EmphasisRenderer;
|
|
112
150
|
Lcom/swmansion/enriched/markdown/renderer/HeadingRenderer;
|
|
151
|
+
Lcom/swmansion/enriched/markdown/renderer/HighlightRenderer;
|
|
113
152
|
Lcom/swmansion/enriched/markdown/renderer/ImageRenderer;
|
|
114
153
|
Lcom/swmansion/enriched/markdown/renderer/LineBreakRenderer;
|
|
115
154
|
Lcom/swmansion/enriched/markdown/renderer/LinkRenderer;
|
|
116
155
|
Lcom/swmansion/enriched/markdown/renderer/ListContextManager;
|
|
156
|
+
Lcom/swmansion/enriched/markdown/renderer/ListContextManager$ListEntryState;
|
|
117
157
|
Lcom/swmansion/enriched/markdown/renderer/ListItemRenderer;
|
|
118
158
|
Lcom/swmansion/enriched/markdown/renderer/ListRenderer;
|
|
119
159
|
Lcom/swmansion/enriched/markdown/renderer/MathInlineRenderer;
|
|
120
160
|
Lcom/swmansion/enriched/markdown/renderer/NodeRenderer;
|
|
161
|
+
Lcom/swmansion/enriched/markdown/renderer/NodeRenderer$DeferredSpan;
|
|
121
162
|
Lcom/swmansion/enriched/markdown/renderer/ParagraphRenderer;
|
|
122
163
|
Lcom/swmansion/enriched/markdown/renderer/Renderer;
|
|
123
164
|
Lcom/swmansion/enriched/markdown/renderer/RendererConfig;
|
|
@@ -126,12 +167,15 @@ Lcom/swmansion/enriched/markdown/renderer/SpanStyleCache;
|
|
|
126
167
|
Lcom/swmansion/enriched/markdown/renderer/SpoilerRenderer;
|
|
127
168
|
Lcom/swmansion/enriched/markdown/renderer/StrikethroughRenderer;
|
|
128
169
|
Lcom/swmansion/enriched/markdown/renderer/StrongRenderer;
|
|
170
|
+
Lcom/swmansion/enriched/markdown/renderer/SubscriptRenderer;
|
|
171
|
+
Lcom/swmansion/enriched/markdown/renderer/SuperscriptRenderer;
|
|
129
172
|
Lcom/swmansion/enriched/markdown/renderer/TextRenderer;
|
|
130
173
|
Lcom/swmansion/enriched/markdown/renderer/ThematicBreakRenderer;
|
|
131
174
|
Lcom/swmansion/enriched/markdown/renderer/UnderlineRenderer;
|
|
132
175
|
|
|
133
176
|
# Spans
|
|
134
177
|
Lcom/swmansion/enriched/markdown/spans/BaselineShiftSpan;
|
|
178
|
+
Lcom/swmansion/enriched/markdown/spans/BaselineShiftSpan$SpanType;
|
|
135
179
|
Lcom/swmansion/enriched/markdown/spans/BaseListSpan;
|
|
136
180
|
Lcom/swmansion/enriched/markdown/spans/BlockquoteSpan;
|
|
137
181
|
Lcom/swmansion/enriched/markdown/spans/CodeBackgroundSpan;
|
|
@@ -140,7 +184,10 @@ Lcom/swmansion/enriched/markdown/spans/CodeSpan;
|
|
|
140
184
|
Lcom/swmansion/enriched/markdown/spans/EmphasisSpan;
|
|
141
185
|
Lcom/swmansion/enriched/markdown/spans/FadeInSpan;
|
|
142
186
|
Lcom/swmansion/enriched/markdown/spans/HeadingSpan;
|
|
187
|
+
Lcom/swmansion/enriched/markdown/spans/HighlightSpan;
|
|
143
188
|
Lcom/swmansion/enriched/markdown/spans/ImageSpan;
|
|
189
|
+
Lcom/swmansion/enriched/markdown/spans/ImageSpan$CacheKey;
|
|
190
|
+
Lcom/swmansion/enriched/markdown/spans/ImageSpan$ScaledImageDrawable;
|
|
144
191
|
Lcom/swmansion/enriched/markdown/spans/LineHeightSpan;
|
|
145
192
|
Lcom/swmansion/enriched/markdown/spans/LinkSpan;
|
|
146
193
|
Lcom/swmansion/enriched/markdown/spans/MarginBottomSpan;
|
|
@@ -163,6 +210,7 @@ Lcom/swmansion/enriched/markdown/spoiler/ParticleStrategy;
|
|
|
163
210
|
Lcom/swmansion/enriched/markdown/spoiler/SegmentKey;
|
|
164
211
|
Lcom/swmansion/enriched/markdown/spoiler/SegmentRect;
|
|
165
212
|
Lcom/swmansion/enriched/markdown/spoiler/SolidStrategy;
|
|
213
|
+
Lcom/swmansion/enriched/markdown/spoiler/SolidStrategy$SegmentState;
|
|
166
214
|
Lcom/swmansion/enriched/markdown/spoiler/SpoilerAnimator;
|
|
167
215
|
Lcom/swmansion/enriched/markdown/spoiler/SpoilerCapable;
|
|
168
216
|
Lcom/swmansion/enriched/markdown/spoiler/SpoilerConstantsKt;
|
|
@@ -171,6 +219,8 @@ Lcom/swmansion/enriched/markdown/spoiler/SpoilerDrawUtilsKt;
|
|
|
171
219
|
Lcom/swmansion/enriched/markdown/spoiler/SpoilerOverlay;
|
|
172
220
|
Lcom/swmansion/enriched/markdown/spoiler/SpoilerOverlayDrawer;
|
|
173
221
|
Lcom/swmansion/enriched/markdown/spoiler/SpoilerParticleDrawable;
|
|
222
|
+
Lcom/swmansion/enriched/markdown/spoiler/SpoilerParticleDrawable$DotType;
|
|
223
|
+
Lcom/swmansion/enriched/markdown/spoiler/SpoilerStrategy;
|
|
174
224
|
Lcom/swmansion/enriched/markdown/spoiler/SpoilerStrategyKt;
|
|
175
225
|
|
|
176
226
|
# Style Configuration
|
|
@@ -180,6 +230,7 @@ Lcom/swmansion/enriched/markdown/styles/CodeBlockStyle;
|
|
|
180
230
|
Lcom/swmansion/enriched/markdown/styles/CodeStyle;
|
|
181
231
|
Lcom/swmansion/enriched/markdown/styles/EmphasisStyle;
|
|
182
232
|
Lcom/swmansion/enriched/markdown/styles/HeadingStyle;
|
|
233
|
+
Lcom/swmansion/enriched/markdown/styles/HighlightStyle;
|
|
183
234
|
Lcom/swmansion/enriched/markdown/styles/ImageStyle;
|
|
184
235
|
Lcom/swmansion/enriched/markdown/styles/InlineImageStyle;
|
|
185
236
|
Lcom/swmansion/enriched/markdown/styles/InlineMathStyle;
|
|
@@ -202,19 +253,26 @@ Lcom/swmansion/enriched/markdown/styles/ThematicBreakStyle;
|
|
|
202
253
|
Lcom/swmansion/enriched/markdown/styles/UnderlineStyle;
|
|
203
254
|
|
|
204
255
|
# Utilities - Common
|
|
256
|
+
Lcom/swmansion/enriched/markdown/utils/common/BreakStrategyUtils;
|
|
205
257
|
Lcom/swmansion/enriched/markdown/utils/common/FeatureFlags;
|
|
206
258
|
Lcom/swmansion/enriched/markdown/utils/common/MarkdownSegment;
|
|
207
259
|
Lcom/swmansion/enriched/markdown/utils/common/MarkdownSegment$Math;
|
|
208
260
|
Lcom/swmansion/enriched/markdown/utils/common/MarkdownSegment$Table;
|
|
209
261
|
Lcom/swmansion/enriched/markdown/utils/common/MarkdownSegment$Text;
|
|
210
262
|
Lcom/swmansion/enriched/markdown/utils/common/MarkdownSegmentKt;
|
|
263
|
+
Lcom/swmansion/enriched/markdown/utils/common/MarkdownSegmentRenderer;
|
|
211
264
|
Lcom/swmansion/enriched/markdown/utils/common/MarkdownViewManagerUtilsKt;
|
|
265
|
+
Lcom/swmansion/enriched/markdown/utils/common/MotionPreferencesKt;
|
|
212
266
|
Lcom/swmansion/enriched/markdown/utils/common/ReadableMapExtensionsKt;
|
|
267
|
+
Lcom/swmansion/enriched/markdown/utils/common/ReconciliationResult;
|
|
213
268
|
Lcom/swmansion/enriched/markdown/utils/common/RenderedSegment;
|
|
214
269
|
Lcom/swmansion/enriched/markdown/utils/common/RenderedSegment$Math;
|
|
215
270
|
Lcom/swmansion/enriched/markdown/utils/common/RenderedSegment$Table;
|
|
216
271
|
Lcom/swmansion/enriched/markdown/utils/common/RenderedSegment$Text;
|
|
217
|
-
Lcom/swmansion/enriched/markdown/utils/common/
|
|
272
|
+
Lcom/swmansion/enriched/markdown/utils/common/SegmentReconciler;
|
|
273
|
+
Lcom/swmansion/enriched/markdown/utils/common/SegmentSignature;
|
|
274
|
+
Lcom/swmansion/enriched/markdown/utils/common/StreamingMarkdownFilter;
|
|
275
|
+
Lcom/swmansion/enriched/markdown/utils/common/TableStreamingMode;
|
|
218
276
|
Lcom/swmansion/enriched/markdown/utils/common/layout/RTLUtilsKt;
|
|
219
277
|
Lcom/swmansion/enriched/markdown/utils/common/serialization/MarkdownASTSerializer;
|
|
220
278
|
|
|
@@ -228,27 +286,42 @@ Lcom/swmansion/enriched/markdown/utils/text/ImageCache;
|
|
|
228
286
|
Lcom/swmansion/enriched/markdown/utils/text/ImageDownloader;
|
|
229
287
|
Lcom/swmansion/enriched/markdown/utils/text/TailFadeInAnimator;
|
|
230
288
|
Lcom/swmansion/enriched/markdown/utils/text/conversion/HTMLGenerator;
|
|
289
|
+
Lcom/swmansion/enriched/markdown/utils/text/conversion/HTMLGenerator$CachedStyles;
|
|
290
|
+
Lcom/swmansion/enriched/markdown/utils/text/conversion/HTMLGenerator$GeneratorState;
|
|
291
|
+
Lcom/swmansion/enriched/markdown/utils/text/conversion/HTMLGenerator$ParagraphInfo;
|
|
231
292
|
Lcom/swmansion/enriched/markdown/utils/text/conversion/MarkdownExtractor;
|
|
293
|
+
Lcom/swmansion/enriched/markdown/utils/text/conversion/MarkdownExtractor$ExtractionState;
|
|
294
|
+
Lcom/swmansion/enriched/markdown/utils/text/conversion/MarkdownExtractor$HeadingAccumulator;
|
|
232
295
|
Lcom/swmansion/enriched/markdown/utils/text/extensions/ParagraphUtilsKt;
|
|
233
296
|
Lcom/swmansion/enriched/markdown/utils/text/extensions/SpannableExtensionsKt;
|
|
234
297
|
Lcom/swmansion/enriched/markdown/utils/text/extensions/TextPaintExtensionsKt;
|
|
235
298
|
Lcom/swmansion/enriched/markdown/utils/text/interaction/CheckboxTouchHelper;
|
|
236
299
|
Lcom/swmansion/enriched/markdown/utils/text/interaction/TaskListHitTestResult;
|
|
237
300
|
Lcom/swmansion/enriched/markdown/utils/text/interaction/TaskListTapUtils;
|
|
238
|
-
Lcom/swmansion/enriched/markdown/utils/text/interaction/TaskListTapUtilsKt;
|
|
239
301
|
Lcom/swmansion/enriched/markdown/utils/text/interaction/TaskListToggleUtils;
|
|
240
302
|
Lcom/swmansion/enriched/markdown/utils/text/span/BlockSpacingKt;
|
|
241
303
|
Lcom/swmansion/enriched/markdown/utils/text/span/SpanFlagsKt;
|
|
242
304
|
Lcom/swmansion/enriched/markdown/utils/text/view/LinkEventsKt;
|
|
243
305
|
Lcom/swmansion/enriched/markdown/utils/text/view/LinkLongPressMovementMethod;
|
|
244
306
|
Lcom/swmansion/enriched/markdown/utils/text/view/SelectionActionModeKt;
|
|
307
|
+
Lcom/swmansion/enriched/markdown/utils/text/view/SelectionMenuConfig;
|
|
308
|
+
Lcom/swmansion/enriched/markdown/utils/text/view/TextSelectionColorsKt;
|
|
245
309
|
Lcom/swmansion/enriched/markdown/utils/text/view/TextViewSetupKt;
|
|
246
310
|
|
|
247
311
|
# Views
|
|
248
312
|
Lcom/swmansion/enriched/markdown/views/BlockSegmentView;
|
|
249
313
|
Lcom/swmansion/enriched/markdown/views/ContextMenuPopup;
|
|
314
|
+
Lcom/swmansion/enriched/markdown/views/ContextMenuPopup$Builder;
|
|
315
|
+
Lcom/swmansion/enriched/markdown/views/ContextMenuPopup$Icon;
|
|
316
|
+
Lcom/swmansion/enriched/markdown/views/ContextMenuPopup$MenuItem;
|
|
250
317
|
Lcom/swmansion/enriched/markdown/views/MathContainerView;
|
|
251
318
|
Lcom/swmansion/enriched/markdown/views/TableContainerView;
|
|
319
|
+
Lcom/swmansion/enriched/markdown/views/TableContainerView$CellBackgroundView;
|
|
320
|
+
Lcom/swmansion/enriched/markdown/views/TableContainerView$CellTextView;
|
|
321
|
+
Lcom/swmansion/enriched/markdown/views/TableContainerView$GridContainerView;
|
|
322
|
+
Lcom/swmansion/enriched/markdown/views/TableContainerView$HeaderTypefaceSpan;
|
|
323
|
+
Lcom/swmansion/enriched/markdown/views/TableContainerView$TableCellData;
|
|
252
324
|
|
|
253
325
|
# Math (optional, from src/math source set)
|
|
254
326
|
Lcom/swmansion/enriched/markdown/spans/MathMeasureHelper;
|
|
327
|
+
Lcom/swmansion/enriched/markdown/views/MathContainerView$RaTeXCanvasView;
|
|
@@ -10,6 +10,7 @@ import android.util.Log
|
|
|
10
10
|
import android.view.View
|
|
11
11
|
import android.widget.FrameLayout
|
|
12
12
|
import com.facebook.react.bridge.ReadableMap
|
|
13
|
+
import com.swmansion.enriched.markdown.accessibility.AccessibilityLabels
|
|
13
14
|
import com.swmansion.enriched.markdown.parser.Md4cFlags
|
|
14
15
|
import com.swmansion.enriched.markdown.parser.Parser
|
|
15
16
|
import com.swmansion.enriched.markdown.spoiler.SpoilerOverlay
|
|
@@ -82,6 +83,7 @@ class EnrichedMarkdown
|
|
|
82
83
|
private var selectionColor: Int? = null
|
|
83
84
|
private var selectionHandleColor: Int? = null
|
|
84
85
|
private var selectionMenuConfig = SelectionMenuConfig()
|
|
86
|
+
private var accessibilityLabels = AccessibilityLabels()
|
|
85
87
|
private var textBreakStrategy: String = BreakStrategyUtils.DEFAULT_STRATEGY
|
|
86
88
|
|
|
87
89
|
private var onLinkPressCallback: ((String) -> Unit)? = null
|
|
@@ -232,6 +234,51 @@ class EnrichedMarkdown
|
|
|
232
234
|
segmentViews.filterIsInstance<EnrichedMarkdownInternalText>().forEach {
|
|
233
235
|
it.selectionMenuConfig = config
|
|
234
236
|
}
|
|
237
|
+
// Table and math views cache the copy labels, so re-push them on update
|
|
238
|
+
// (e.g. a language change without a remount) to avoid stale labels.
|
|
239
|
+
pushCopyLabelsToBlockSegments()
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
private fun pushCopyLabelsToBlockSegments() {
|
|
243
|
+
val copyLabel = selectionMenuConfig.copyLabel
|
|
244
|
+
val copyAsMarkdownLabel = selectionMenuConfig.copyAsMarkdownLabel
|
|
245
|
+
segmentViews.forEach { view ->
|
|
246
|
+
when {
|
|
247
|
+
view is TableContainerView -> {
|
|
248
|
+
view.copyLabel = copyLabel
|
|
249
|
+
view.copyAsMarkdownLabel = copyAsMarkdownLabel
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
isMathContainerView(view) -> {
|
|
253
|
+
runCatching {
|
|
254
|
+
view.javaClass.getMethod("setCopyLabel", String::class.java).invoke(view, copyLabel)
|
|
255
|
+
view.javaClass
|
|
256
|
+
.getMethod("setCopyAsMarkdownLabel", String::class.java)
|
|
257
|
+
.invoke(view, copyAsMarkdownLabel)
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
fun setAccessibilityLabels(labels: AccessibilityLabels) {
|
|
265
|
+
if (accessibilityLabels == labels) return
|
|
266
|
+
accessibilityLabels = labels
|
|
267
|
+
segmentViews.filterIsInstance<EnrichedMarkdownInternalText>().forEach {
|
|
268
|
+
it.accessibilityLabels = labels
|
|
269
|
+
}
|
|
270
|
+
segmentViews.filterIsInstance<TableContainerView>().forEach {
|
|
271
|
+
it.accessibilityLabels = labels
|
|
272
|
+
}
|
|
273
|
+
mathContainerClass?.let { mathClass ->
|
|
274
|
+
segmentViews.filter { mathClass.isInstance(it) }.forEach { view ->
|
|
275
|
+
runCatching {
|
|
276
|
+
mathClass
|
|
277
|
+
.getMethod("setAccessibilityLabels", AccessibilityLabels::class.java)
|
|
278
|
+
.invoke(view, labels)
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
235
282
|
}
|
|
236
283
|
|
|
237
284
|
private fun forwardContextMenuItemPress(
|
|
@@ -433,6 +480,7 @@ class EnrichedMarkdown
|
|
|
433
480
|
EnrichedMarkdownInternalText(context).apply {
|
|
434
481
|
spoilerOverlay = this@EnrichedMarkdown.spoilerOverlay
|
|
435
482
|
selectionMenuConfig = this@EnrichedMarkdown.selectionMenuConfig
|
|
483
|
+
accessibilityLabels = this@EnrichedMarkdown.accessibilityLabels
|
|
436
484
|
setIsSelectable(selectable)
|
|
437
485
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
438
486
|
breakStrategy = BreakStrategyUtils.resolveBreakStrategy(textBreakStrategy)
|
|
@@ -461,8 +509,11 @@ class EnrichedMarkdown
|
|
|
461
509
|
) = TableContainerView(context, style).apply {
|
|
462
510
|
allowFontScaling = this@EnrichedMarkdown.allowFontScaling
|
|
463
511
|
maxFontSizeMultiplier = this@EnrichedMarkdown.maxFontSizeMultiplier
|
|
512
|
+
accessibilityLabels = this@EnrichedMarkdown.accessibilityLabels
|
|
464
513
|
onLinkPress = onLinkPressCallback
|
|
465
514
|
onLinkLongPress = onLinkLongPressCallback
|
|
515
|
+
copyLabel = this@EnrichedMarkdown.selectionMenuConfig.copyLabel
|
|
516
|
+
copyAsMarkdownLabel = this@EnrichedMarkdown.selectionMenuConfig.copyAsMarkdownLabel
|
|
466
517
|
applyTableNode(segment.node)
|
|
467
518
|
}
|
|
468
519
|
|
|
@@ -477,6 +528,17 @@ class EnrichedMarkdown
|
|
|
477
528
|
resolvedClass
|
|
478
529
|
.getConstructor(Context::class.java, StyleConfig::class.java)
|
|
479
530
|
.newInstance(context, style) as View
|
|
531
|
+
runCatching {
|
|
532
|
+
resolvedClass
|
|
533
|
+
.getMethod("setAccessibilityLabels", AccessibilityLabels::class.java)
|
|
534
|
+
.invoke(view, accessibilityLabels)
|
|
535
|
+
}
|
|
536
|
+
resolvedClass
|
|
537
|
+
.getMethod("setCopyLabel", String::class.java)
|
|
538
|
+
.invoke(view, selectionMenuConfig.copyLabel)
|
|
539
|
+
resolvedClass
|
|
540
|
+
.getMethod("setCopyAsMarkdownLabel", String::class.java)
|
|
541
|
+
.invoke(view, selectionMenuConfig.copyAsMarkdownLabel)
|
|
480
542
|
resolvedClass.getMethod("applyLatex", String::class.java).invoke(view, segment.latex)
|
|
481
543
|
view
|
|
482
544
|
} catch (e: Exception) {
|
package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownInternalText.kt
CHANGED
|
@@ -6,6 +6,7 @@ import android.os.Build
|
|
|
6
6
|
import android.text.Layout
|
|
7
7
|
import android.util.AttributeSet
|
|
8
8
|
import android.view.MotionEvent
|
|
9
|
+
import com.swmansion.enriched.markdown.accessibility.AccessibilityLabels
|
|
9
10
|
import com.swmansion.enriched.markdown.accessibility.AccessibleMarkdownTextView
|
|
10
11
|
import com.swmansion.enriched.markdown.spoiler.SpoilerCapable
|
|
11
12
|
import com.swmansion.enriched.markdown.spoiler.SpoilerOverlay
|
|
@@ -17,6 +18,7 @@ import com.swmansion.enriched.markdown.utils.text.view.applySelectableState
|
|
|
17
18
|
import com.swmansion.enriched.markdown.utils.text.view.cancelJSTouchForCheckboxTap
|
|
18
19
|
import com.swmansion.enriched.markdown.utils.text.view.cancelJSTouchForLinkTap
|
|
19
20
|
import com.swmansion.enriched.markdown.utils.text.view.createSelectionActionModeCallback
|
|
21
|
+
import com.swmansion.enriched.markdown.utils.text.view.reallowParentInterceptIfLinkReleased
|
|
20
22
|
import com.swmansion.enriched.markdown.utils.text.view.setupAsMarkdownTextView
|
|
21
23
|
import com.swmansion.enriched.markdown.views.BlockSegmentView
|
|
22
24
|
|
|
@@ -47,6 +49,11 @@ class EnrichedMarkdownInternalText
|
|
|
47
49
|
private var contextMenuItemTexts: List<String> = emptyList()
|
|
48
50
|
private var onContextMenuItemPress: ((itemText: String, selectedText: String, selectionStart: Int, selectionEnd: Int) -> Unit)? = null
|
|
49
51
|
var selectionMenuConfig: SelectionMenuConfig = SelectionMenuConfig()
|
|
52
|
+
var accessibilityLabels: AccessibilityLabels = AccessibilityLabels()
|
|
53
|
+
set(value) {
|
|
54
|
+
field = value
|
|
55
|
+
accessibilityHelper.labels = value
|
|
56
|
+
}
|
|
50
57
|
|
|
51
58
|
init {
|
|
52
59
|
setupAsMarkdownTextView()
|
|
@@ -103,8 +110,9 @@ class EnrichedMarkdownInternalText
|
|
|
103
110
|
return true
|
|
104
111
|
}
|
|
105
112
|
val result = super.onTouchEvent(event)
|
|
106
|
-
|
|
107
|
-
cancelJSTouchForLinkTap(event)
|
|
113
|
+
when (event.action) {
|
|
114
|
+
MotionEvent.ACTION_DOWN -> cancelJSTouchForLinkTap(event)
|
|
115
|
+
else -> reallowParentInterceptIfLinkReleased()
|
|
108
116
|
}
|
|
109
117
|
return result
|
|
110
118
|
}
|
|
@@ -18,6 +18,7 @@ import com.swmansion.enriched.markdown.utils.common.emitLinkLongPress
|
|
|
18
18
|
import com.swmansion.enriched.markdown.utils.common.emitLinkPress
|
|
19
19
|
import com.swmansion.enriched.markdown.utils.common.emitTaskListItemPress
|
|
20
20
|
import com.swmansion.enriched.markdown.utils.common.markdownEventTypeConstants
|
|
21
|
+
import com.swmansion.enriched.markdown.utils.common.parseAccessibilityLabels
|
|
21
22
|
import com.swmansion.enriched.markdown.utils.common.parseContextMenuItems
|
|
22
23
|
import com.swmansion.enriched.markdown.utils.common.parseMd4cFlags
|
|
23
24
|
import com.swmansion.enriched.markdown.utils.common.parseSelectionMenuConfig
|
|
@@ -223,6 +224,15 @@ class EnrichedMarkdownManager :
|
|
|
223
224
|
view.setSelectionMenuConfig(parseSelectionMenuConfig(value))
|
|
224
225
|
}
|
|
225
226
|
|
|
227
|
+
@ReactProp(name = "accessibilityLabels")
|
|
228
|
+
override fun setAccessibilityLabels(
|
|
229
|
+
view: EnrichedMarkdown?,
|
|
230
|
+
value: ReadableMap?,
|
|
231
|
+
) {
|
|
232
|
+
if (view == null) return
|
|
233
|
+
view.setAccessibilityLabels(parseAccessibilityLabels(value))
|
|
234
|
+
}
|
|
235
|
+
|
|
226
236
|
override fun setPadding(
|
|
227
237
|
view: EnrichedMarkdown,
|
|
228
238
|
left: Int,
|
|
@@ -11,6 +11,7 @@ import android.util.AttributeSet
|
|
|
11
11
|
import android.util.Log
|
|
12
12
|
import android.view.MotionEvent
|
|
13
13
|
import com.facebook.react.bridge.ReadableMap
|
|
14
|
+
import com.swmansion.enriched.markdown.accessibility.AccessibilityLabels
|
|
14
15
|
import com.swmansion.enriched.markdown.accessibility.AccessibleMarkdownTextView
|
|
15
16
|
import com.swmansion.enriched.markdown.parser.Md4cFlags
|
|
16
17
|
import com.swmansion.enriched.markdown.parser.Parser
|
|
@@ -31,6 +32,7 @@ import com.swmansion.enriched.markdown.utils.text.view.cancelJSTouchForLinkTap
|
|
|
31
32
|
import com.swmansion.enriched.markdown.utils.text.view.createSelectionActionModeCallback
|
|
32
33
|
import com.swmansion.enriched.markdown.utils.text.view.emitLinkLongPressEvent
|
|
33
34
|
import com.swmansion.enriched.markdown.utils.text.view.emitLinkPressEvent
|
|
35
|
+
import com.swmansion.enriched.markdown.utils.text.view.reallowParentInterceptIfLinkReleased
|
|
34
36
|
import com.swmansion.enriched.markdown.utils.text.view.setupAsMarkdownTextView
|
|
35
37
|
import java.util.concurrent.Executors
|
|
36
38
|
|
|
@@ -275,6 +277,10 @@ class EnrichedMarkdownText
|
|
|
275
277
|
selectionMenuConfig = config
|
|
276
278
|
}
|
|
277
279
|
|
|
280
|
+
fun setAccessibilityLabels(labels: AccessibilityLabels) {
|
|
281
|
+
accessibilityHelper.labels = labels
|
|
282
|
+
}
|
|
283
|
+
|
|
278
284
|
fun setIsSelectable(selectable: Boolean) {
|
|
279
285
|
applySelectableState(selectable)
|
|
280
286
|
}
|
|
@@ -351,8 +357,9 @@ class EnrichedMarkdownText
|
|
|
351
357
|
return true
|
|
352
358
|
}
|
|
353
359
|
val result = super.onTouchEvent(event)
|
|
354
|
-
|
|
355
|
-
cancelJSTouchForLinkTap(event)
|
|
360
|
+
when (event.action) {
|
|
361
|
+
MotionEvent.ACTION_DOWN -> cancelJSTouchForLinkTap(event)
|
|
362
|
+
else -> reallowParentInterceptIfLinkReleased()
|
|
356
363
|
}
|
|
357
364
|
return result
|
|
358
365
|
}
|
package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownTextManager.kt
CHANGED
|
@@ -17,6 +17,7 @@ import com.swmansion.enriched.markdown.utils.common.emitLinkLongPress
|
|
|
17
17
|
import com.swmansion.enriched.markdown.utils.common.emitLinkPress
|
|
18
18
|
import com.swmansion.enriched.markdown.utils.common.emitTaskListItemPress
|
|
19
19
|
import com.swmansion.enriched.markdown.utils.common.markdownEventTypeConstants
|
|
20
|
+
import com.swmansion.enriched.markdown.utils.common.parseAccessibilityLabels
|
|
20
21
|
import com.swmansion.enriched.markdown.utils.common.parseContextMenuItems
|
|
21
22
|
import com.swmansion.enriched.markdown.utils.common.parseMd4cFlags
|
|
22
23
|
import com.swmansion.enriched.markdown.utils.common.parseSelectionMenuConfig
|
|
@@ -221,6 +222,15 @@ class EnrichedMarkdownTextManager :
|
|
|
221
222
|
view.setSelectionMenuConfig(parseSelectionMenuConfig(value))
|
|
222
223
|
}
|
|
223
224
|
|
|
225
|
+
@ReactProp(name = "accessibilityLabels")
|
|
226
|
+
override fun setAccessibilityLabels(
|
|
227
|
+
view: EnrichedMarkdownText?,
|
|
228
|
+
value: ReadableMap?,
|
|
229
|
+
) {
|
|
230
|
+
if (view == null) return
|
|
231
|
+
view.setAccessibilityLabels(parseAccessibilityLabels(value))
|
|
232
|
+
}
|
|
233
|
+
|
|
224
234
|
override fun setPadding(
|
|
225
235
|
view: EnrichedMarkdownText,
|
|
226
236
|
left: Int,
|
package/android/src/main/java/com/swmansion/enriched/markdown/accessibility/AccessibilityLabels.kt
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
package com.swmansion.enriched.markdown.accessibility
|
|
2
|
+
|
|
3
|
+
data class AccessibilityLabels(
|
|
4
|
+
val bulletPoint: String = "",
|
|
5
|
+
val nestedBulletPoint: String = "",
|
|
6
|
+
val orderedItem: String = "",
|
|
7
|
+
val nestedOrderedItem: String = "",
|
|
8
|
+
val blockquote: String = "",
|
|
9
|
+
val nestedBlockquote: String = "",
|
|
10
|
+
val tableRow: String = "",
|
|
11
|
+
val mathEquation: String = "",
|
|
12
|
+
val rotorHeadings: String = "",
|
|
13
|
+
val rotorLinks: String = "",
|
|
14
|
+
val rotorImages: String = "",
|
|
15
|
+
)
|
|
@@ -10,6 +10,7 @@ import androidx.core.view.ViewCompat
|
|
|
10
10
|
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
|
|
11
11
|
import androidx.customview.widget.ExploreByTouchHelper
|
|
12
12
|
import com.swmansion.enriched.markdown.spans.BaseListSpan
|
|
13
|
+
import com.swmansion.enriched.markdown.spans.BlockquoteSpan
|
|
13
14
|
import com.swmansion.enriched.markdown.spans.HeadingSpan
|
|
14
15
|
import com.swmansion.enriched.markdown.spans.ImageSpan
|
|
15
16
|
import com.swmansion.enriched.markdown.spans.LinkSpan
|
|
@@ -23,6 +24,13 @@ class MarkdownAccessibilityHelper(
|
|
|
23
24
|
private var lastLayoutHashCode = 0
|
|
24
25
|
private var pendingLayoutListener: ViewTreeObserver.OnGlobalLayoutListener? = null
|
|
25
26
|
|
|
27
|
+
var labels: AccessibilityLabels = AccessibilityLabels()
|
|
28
|
+
set(value) {
|
|
29
|
+
if (field == value) return
|
|
30
|
+
field = value
|
|
31
|
+
invalidateAccessibilityItems()
|
|
32
|
+
}
|
|
33
|
+
|
|
26
34
|
data class AccessibilityItem(
|
|
27
35
|
val id: Int,
|
|
28
36
|
val text: String,
|
|
@@ -184,7 +192,7 @@ class MarkdownAccessibilityHelper(
|
|
|
184
192
|
}
|
|
185
193
|
|
|
186
194
|
// The semantic span itself
|
|
187
|
-
val content = span.imageAltText
|
|
195
|
+
val content = span.imageAltText ?: spanned.substring(span.start, span.end).trim()
|
|
188
196
|
if (content.isNotEmpty()) {
|
|
189
197
|
items.add(createSpanItem(nextId++, content, span, spanned))
|
|
190
198
|
}
|
|
@@ -322,32 +330,61 @@ class MarkdownAccessibilityHelper(
|
|
|
322
330
|
)
|
|
323
331
|
}
|
|
324
332
|
|
|
333
|
+
val blockquoteAnnouncement = blockquoteAnnouncementFor(item)
|
|
325
334
|
when {
|
|
326
335
|
item.isHeading -> {
|
|
327
336
|
isHeading = true
|
|
328
|
-
|
|
337
|
+
if (blockquoteAnnouncement != null) {
|
|
338
|
+
roleDescription = blockquoteAnnouncement
|
|
339
|
+
}
|
|
329
340
|
}
|
|
330
341
|
|
|
331
342
|
item.isImage -> {
|
|
332
|
-
roleDescription = "image"
|
|
343
|
+
roleDescription = appendBlockquote("image", blockquoteAnnouncement)
|
|
333
344
|
}
|
|
334
345
|
|
|
335
346
|
item.isLink -> {
|
|
336
347
|
isClickable = true
|
|
337
348
|
addAction(AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CLICK)
|
|
338
|
-
|
|
349
|
+
val base = item.listInfo?.let { "link, ${it.listAnnouncement}" } ?: "link"
|
|
350
|
+
roleDescription = appendBlockquote(base, blockquoteAnnouncement)
|
|
339
351
|
}
|
|
340
352
|
|
|
341
353
|
item.isListItem -> {
|
|
342
|
-
roleDescription = item.listInfo!!.listAnnouncement
|
|
354
|
+
roleDescription = appendBlockquote(item.listInfo!!.listAnnouncement, blockquoteAnnouncement)
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
blockquoteAnnouncement != null -> {
|
|
358
|
+
roleDescription = blockquoteAnnouncement
|
|
343
359
|
}
|
|
344
360
|
}
|
|
345
361
|
}
|
|
346
362
|
|
|
363
|
+
private fun appendBlockquote(
|
|
364
|
+
base: String,
|
|
365
|
+
blockquoteAnnouncement: String?,
|
|
366
|
+
): String = if (blockquoteAnnouncement != null) "$base, $blockquoteAnnouncement" else base
|
|
367
|
+
|
|
368
|
+
private fun blockquoteAnnouncementFor(item: AccessibilityItem): String? {
|
|
369
|
+
val spanned = textView.text as? Spanned ?: return null
|
|
370
|
+
if (spanned.isEmpty()) return null
|
|
371
|
+
val pos = item.start.coerceIn(0, spanned.length - 1).coerceAtLeast(0)
|
|
372
|
+
if (pos >= spanned.length) return null
|
|
373
|
+
val spans = spanned.getSpans(pos, pos + 1, BlockquoteSpan::class.java)
|
|
374
|
+
if (spans.isEmpty()) return null
|
|
375
|
+
val maxDepth = spans.maxOf { it.depth }
|
|
376
|
+
return if (maxDepth >= 1) labels.nestedBlockquote else labels.blockquote
|
|
377
|
+
}
|
|
378
|
+
|
|
347
379
|
private val ListItemInfo.listAnnouncement: String
|
|
348
380
|
get() {
|
|
349
|
-
val
|
|
350
|
-
return if (isOrdered)
|
|
381
|
+
val nested = depth > 0
|
|
382
|
+
return if (isOrdered) {
|
|
383
|
+
val template = if (nested) labels.nestedOrderedItem else labels.orderedItem
|
|
384
|
+
template.replace("{n}", itemNumber.toString())
|
|
385
|
+
} else {
|
|
386
|
+
if (nested) labels.nestedBulletPoint else labels.bulletPoint
|
|
387
|
+
}
|
|
351
388
|
}
|
|
352
389
|
|
|
353
390
|
private fun boundsForItem(item: AccessibilityItem): Rect {
|