@fendent/react-native-enriched 0.5.2-fork.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/LICENSE +20 -0
- package/README.md +343 -0
- package/ReactNativeEnriched.podspec +31 -0
- package/android/build.gradle +106 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerDelegate.java +197 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerInterface.java +72 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ComponentDescriptors.cpp +22 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ComponentDescriptors.h +24 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.cpp +434 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.h +391 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/Props.cpp +173 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/Props.h +833 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ShadowNodes.cpp +17 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ShadowNodes.h +23 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/States.cpp +16 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/States.h +20 -0
- package/android/gradle.properties +5 -0
- package/android/lint.gradle +70 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/swmansion/enriched/ReactNativeEnrichedPackage.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/common/AsyncDrawable.kt +126 -0
- package/android/src/main/java/com/swmansion/enriched/common/CheckboxDrawable.kt +81 -0
- package/android/src/main/java/com/swmansion/enriched/common/EnrichedConstants.kt +11 -0
- package/android/src/main/java/com/swmansion/enriched/common/EnrichedStyle.kt +57 -0
- package/android/src/main/java/com/swmansion/enriched/common/ForceRedrawSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/common/GumboNormalizer.kt +5 -0
- package/android/src/main/java/com/swmansion/enriched/common/MentionStyle.kt +7 -0
- package/android/src/main/java/com/swmansion/enriched/common/ResourceManager.kt +26 -0
- package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java +956 -0
- package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedSpanFactory.kt +79 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedBlockQuoteSpan.kt +53 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedBoldSpan.kt +12 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedCheckboxListSpan.kt +92 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedCodeBlockSpan.kt +81 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH1Span.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH2Span.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH3Span.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH4Span.kt +21 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH5Span.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH6Span.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedImageSpan.kt +184 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedInlineCodeSpan.kt +24 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedItalicSpan.kt +12 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedLinkSpan.kt +29 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedMentionSpan.kt +35 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedOrderedListSpan.kt +79 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedStrikeThroughSpan.kt +11 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedUnderlineSpan.kt +11 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedUnorderedListSpan.kt +62 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedBlockSpan.kt +5 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedHeadingSpan.kt +3 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedInlineSpan.kt +3 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedParagraphSpan.kt +5 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedSpan.kt +3 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedZeroWidthSpaceSpan.kt +4 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputConnectionWrapper.kt +140 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputSpannableFactory.kt +83 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt +1120 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputViewLayoutManager.kt +27 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputViewManager.kt +478 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/MeasurementStore.kt +225 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/MentionHandler.kt +55 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeHtmlEvent.kt +27 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeSelectionEvent.kt +30 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeStateEvent.kt +21 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeTextEvent.kt +30 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnContextMenuItemPressEvent.kt +35 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputBlurEvent.kt +25 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputFocusEvent.kt +25 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputKeyPressEvent.kt +27 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnLinkDetectedEvent.kt +32 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnMentionDetectedEvent.kt +30 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnMentionEvent.kt +34 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnPasteImagesEvent.kt +47 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnRequestHtmlResultEvent.kt +32 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnSubmitEditingEvent.kt +29 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputBlockQuoteSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputBoldSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputCheckboxListSpan.kt +15 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputCodeBlockSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH1Span.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH2Span.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH3Span.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH4Span.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH5Span.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH6Span.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputImageSpan.kt +36 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputInlineCodeSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputItalicSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputLinkSpan.kt +16 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputMentionSpan.kt +18 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputOrderedListSpan.kt +21 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputStrikeThroughSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputUnderlineSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputUnorderedListSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedLineHeightSpan.kt +44 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedSpans.kt +241 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/interfaces/EnrichedInputSpan.kt +10 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/HtmlStyle.kt +372 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/InlineStyles.kt +164 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/ListStyles.kt +263 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/ParagraphStyles.kt +434 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/ParametrizedStyles.kt +394 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedEditableFactory.kt +17 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSelection.kt +320 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpanState.kt +310 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannable.kt +106 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannableStringBuilder.kt +24 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/RichContentReceiver.kt +127 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/Utils.kt +106 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/watchers/EnrichedSpanWatcher.kt +107 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/watchers/EnrichedTextWatcher.kt +74 -0
- package/android/src/main/new_arch/CMakeLists.txt +62 -0
- package/android/src/main/new_arch/GumboNormalizerJni.cpp +14 -0
- package/android/src/main/new_arch/ReactNativeEnrichedSpec.cpp +11 -0
- package/android/src/main/new_arch/ReactNativeEnrichedSpec.h +15 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputComponentDescriptor.h +35 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputMeasurementManager.cpp +53 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputMeasurementManager.h +25 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputShadowNode.cpp +35 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputShadowNode.h +53 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputState.cpp +9 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputState.h +24 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/conversions.h +27 -0
- package/android/src/main/res/drawable/broken_image.xml +10 -0
- package/cpp/CMakeLists.txt +50 -0
- package/cpp/GumboParser/GumboParser.h +34043 -0
- package/cpp/README.md +59 -0
- package/cpp/parser/GumboNormalizer.c +915 -0
- package/cpp/parser/GumboParser.cpp +16 -0
- package/cpp/parser/GumboParser.hpp +23 -0
- package/cpp/tests/GumboParserTest.cpp +457 -0
- package/ios/EnrichedTextInputView.h +53 -0
- package/ios/EnrichedTextInputView.mm +2360 -0
- package/ios/EnrichedTextInputViewManager.mm +13 -0
- package/ios/attributesManager/AttributesManager.h +17 -0
- package/ios/attributesManager/AttributesManager.mm +195 -0
- package/ios/config/InputConfig.h +104 -0
- package/ios/config/InputConfig.mm +664 -0
- package/ios/extensions/ColorExtension.h +7 -0
- package/ios/extensions/ColorExtension.mm +38 -0
- package/ios/extensions/FontExtension.h +11 -0
- package/ios/extensions/FontExtension.mm +72 -0
- package/ios/extensions/ImageExtension.h +34 -0
- package/ios/extensions/ImageExtension.mm +165 -0
- package/ios/extensions/LayoutManagerExtension.h +6 -0
- package/ios/extensions/LayoutManagerExtension.mm +443 -0
- package/ios/extensions/StringExtension.h +15 -0
- package/ios/extensions/StringExtension.mm +69 -0
- package/ios/generated/ReactNativeEnrichedSpec/ComponentDescriptors.cpp +22 -0
- package/ios/generated/ReactNativeEnrichedSpec/ComponentDescriptors.h +24 -0
- package/ios/generated/ReactNativeEnrichedSpec/EventEmitters.cpp +434 -0
- package/ios/generated/ReactNativeEnrichedSpec/EventEmitters.h +391 -0
- package/ios/generated/ReactNativeEnrichedSpec/Props.cpp +173 -0
- package/ios/generated/ReactNativeEnrichedSpec/Props.h +833 -0
- package/ios/generated/ReactNativeEnrichedSpec/RCTComponentViewHelpers.h +582 -0
- package/ios/generated/ReactNativeEnrichedSpec/ShadowNodes.cpp +17 -0
- package/ios/generated/ReactNativeEnrichedSpec/ShadowNodes.h +23 -0
- package/ios/generated/ReactNativeEnrichedSpec/States.cpp +16 -0
- package/ios/generated/ReactNativeEnrichedSpec/States.h +20 -0
- package/ios/inputParser/InputParser.h +11 -0
- package/ios/inputParser/InputParser.mm +1463 -0
- package/ios/inputTextView/InputTextView.h +6 -0
- package/ios/inputTextView/InputTextView.mm +285 -0
- package/ios/interfaces/AttributeEntry.h +9 -0
- package/ios/interfaces/AttributeEntry.mm +4 -0
- package/ios/interfaces/BaseStyleProtocol.h +17 -0
- package/ios/interfaces/ImageAttachment.h +11 -0
- package/ios/interfaces/ImageAttachment.mm +107 -0
- package/ios/interfaces/ImageData.h +10 -0
- package/ios/interfaces/ImageData.mm +4 -0
- package/ios/interfaces/LinkData.h +11 -0
- package/ios/interfaces/LinkData.mm +29 -0
- package/ios/interfaces/LinkRegexConfig.h +19 -0
- package/ios/interfaces/LinkRegexConfig.mm +37 -0
- package/ios/interfaces/MediaAttachment.h +23 -0
- package/ios/interfaces/MediaAttachment.mm +31 -0
- package/ios/interfaces/MentionParams.h +8 -0
- package/ios/interfaces/MentionParams.mm +4 -0
- package/ios/interfaces/MentionStyleProps.h +13 -0
- package/ios/interfaces/MentionStyleProps.mm +63 -0
- package/ios/interfaces/StyleBase.h +36 -0
- package/ios/interfaces/StyleBase.mm +256 -0
- package/ios/interfaces/StyleHeaders.h +102 -0
- package/ios/interfaces/StylePair.h +9 -0
- package/ios/interfaces/StylePair.mm +4 -0
- package/ios/interfaces/StyleTypeEnum.h +26 -0
- package/ios/interfaces/TextDecorationLineEnum.h +6 -0
- package/ios/interfaces/TextDecorationLineEnum.mm +4 -0
- package/ios/internals/EnrichedTextInputViewComponentDescriptor.h +19 -0
- package/ios/internals/EnrichedTextInputViewShadowNode.h +44 -0
- package/ios/internals/EnrichedTextInputViewShadowNode.mm +103 -0
- package/ios/internals/EnrichedTextInputViewState.cpp +10 -0
- package/ios/internals/EnrichedTextInputViewState.h +22 -0
- package/ios/styles/BlockQuoteStyle.mm +55 -0
- package/ios/styles/BoldStyle.mm +37 -0
- package/ios/styles/CheckboxListStyle.mm +153 -0
- package/ios/styles/CodeBlockStyle.mm +49 -0
- package/ios/styles/H1Style.mm +20 -0
- package/ios/styles/H2Style.mm +20 -0
- package/ios/styles/H3Style.mm +20 -0
- package/ios/styles/H4Style.mm +20 -0
- package/ios/styles/H5Style.mm +20 -0
- package/ios/styles/H6Style.mm +20 -0
- package/ios/styles/HeadingStyleBase.mm +65 -0
- package/ios/styles/ImageStyle.mm +146 -0
- package/ios/styles/InlineCodeStyle.mm +65 -0
- package/ios/styles/ItalicStyle.mm +37 -0
- package/ios/styles/LinkStyle.mm +532 -0
- package/ios/styles/MentionStyle.mm +538 -0
- package/ios/styles/OrderedListStyle.mm +86 -0
- package/ios/styles/StrikethroughStyle.mm +25 -0
- package/ios/styles/UnderlineStyle.mm +24 -0
- package/ios/styles/UnorderedListStyle.mm +86 -0
- package/ios/utils/CheckboxHitTestUtils.h +10 -0
- package/ios/utils/CheckboxHitTestUtils.mm +122 -0
- package/ios/utils/DotReplacementUtils.h +10 -0
- package/ios/utils/DotReplacementUtils.mm +68 -0
- package/ios/utils/KeyboardUtils.h +7 -0
- package/ios/utils/KeyboardUtils.mm +31 -0
- package/ios/utils/OccurenceUtils.h +44 -0
- package/ios/utils/OccurenceUtils.mm +179 -0
- package/ios/utils/ParagraphAttributesUtils.h +15 -0
- package/ios/utils/ParagraphAttributesUtils.mm +257 -0
- package/ios/utils/RangeUtils.h +12 -0
- package/ios/utils/RangeUtils.mm +183 -0
- package/ios/utils/TextBlockTapGestureRecognizer.h +17 -0
- package/ios/utils/TextBlockTapGestureRecognizer.mm +56 -0
- package/ios/utils/TextInsertionUtils.h +17 -0
- package/ios/utils/TextInsertionUtils.mm +64 -0
- package/ios/utils/WordsUtils.h +7 -0
- package/ios/utils/WordsUtils.mm +98 -0
- package/ios/utils/ZeroWidthSpaceUtils.h +9 -0
- package/ios/utils/ZeroWidthSpaceUtils.mm +270 -0
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/native/EnrichedTextInput.js +304 -0
- package/lib/module/native/EnrichedTextInput.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/spec/EnrichedTextInputNativeComponent.ts +517 -0
- package/lib/module/types.js +4 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils/EnrichedTextInputDefaultProps.js +12 -0
- package/lib/module/utils/EnrichedTextInputDefaultProps.js.map +1 -0
- package/lib/module/utils/normalizeHtmlStyle.js +155 -0
- package/lib/module/utils/normalizeHtmlStyle.js.map +1 -0
- package/lib/module/utils/nullthrows.js +9 -0
- package/lib/module/utils/nullthrows.js.map +1 -0
- package/lib/module/utils/regexParser.js +46 -0
- package/lib/module/utils/regexParser.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/native/EnrichedTextInput.d.ts +3 -0
- package/lib/typescript/src/native/EnrichedTextInput.d.ts.map +1 -0
- package/lib/typescript/src/spec/EnrichedTextInputNativeComponent.d.ts +397 -0
- package/lib/typescript/src/spec/EnrichedTextInputNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +447 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/utils/EnrichedTextInputDefaultProps.d.ts +10 -0
- package/lib/typescript/src/utils/EnrichedTextInputDefaultProps.d.ts.map +1 -0
- package/lib/typescript/src/utils/normalizeHtmlStyle.d.ts +4 -0
- package/lib/typescript/src/utils/normalizeHtmlStyle.d.ts.map +1 -0
- package/lib/typescript/src/utils/nullthrows.d.ts +2 -0
- package/lib/typescript/src/utils/nullthrows.d.ts.map +1 -0
- package/lib/typescript/src/utils/regexParser.d.ts +3 -0
- package/lib/typescript/src/utils/regexParser.d.ts.map +1 -0
- package/package.json +226 -0
- package/react-native.config.js +13 -0
- package/src/index.tsx +20 -0
- package/src/native/EnrichedTextInput.tsx +370 -0
- package/src/spec/EnrichedTextInputNativeComponent.ts +517 -0
- package/src/types.ts +499 -0
- package/src/utils/EnrichedTextInputDefaultProps.ts +9 -0
- package/src/utils/normalizeHtmlStyle.ts +199 -0
- package/src/utils/nullthrows.ts +7 -0
- package/src/utils/regexParser.ts +56 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
package com.swmansion.enriched.common.spans
|
|
2
|
+
|
|
3
|
+
import android.text.TextPaint
|
|
4
|
+
import android.text.style.ClickableSpan
|
|
5
|
+
import android.view.View
|
|
6
|
+
import com.swmansion.enriched.common.EnrichedStyle
|
|
7
|
+
import com.swmansion.enriched.common.spans.interfaces.EnrichedInlineSpan
|
|
8
|
+
|
|
9
|
+
open class EnrichedLinkSpan(
|
|
10
|
+
private val url: String,
|
|
11
|
+
private val enrichedStyle: EnrichedStyle,
|
|
12
|
+
private val isManual: Boolean,
|
|
13
|
+
) : ClickableSpan(),
|
|
14
|
+
EnrichedInlineSpan {
|
|
15
|
+
override fun onClick(view: View) {
|
|
16
|
+
// Do nothing, links inside the input are not clickable.
|
|
17
|
+
// We are using `ClickableSpan` to allow the text to be styled as a link.
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override fun updateDrawState(textPaint: TextPaint) {
|
|
21
|
+
super.updateDrawState(textPaint)
|
|
22
|
+
textPaint.color = enrichedStyle.aColor
|
|
23
|
+
textPaint.isUnderlineText = enrichedStyle.aUnderline
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
fun getUrl(): String = url
|
|
27
|
+
|
|
28
|
+
fun getIsManual(): Boolean = isManual
|
|
29
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
package com.swmansion.enriched.common.spans
|
|
2
|
+
|
|
3
|
+
import android.text.TextPaint
|
|
4
|
+
import android.text.style.ClickableSpan
|
|
5
|
+
import android.view.View
|
|
6
|
+
import com.swmansion.enriched.common.EnrichedStyle
|
|
7
|
+
import com.swmansion.enriched.common.spans.interfaces.EnrichedInlineSpan
|
|
8
|
+
|
|
9
|
+
open class EnrichedMentionSpan(
|
|
10
|
+
private val text: String,
|
|
11
|
+
private val indicator: String,
|
|
12
|
+
private val attributes: Map<String, String>,
|
|
13
|
+
private val enrichedStyle: EnrichedStyle,
|
|
14
|
+
) : ClickableSpan(),
|
|
15
|
+
EnrichedInlineSpan {
|
|
16
|
+
override fun onClick(view: View) {
|
|
17
|
+
// Do nothing. Mentions inside the input are not clickable.
|
|
18
|
+
// We are using `ClickableSpan` to allow the text to be styled as a clickable element.
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
override fun updateDrawState(textPaint: TextPaint) {
|
|
22
|
+
super.updateDrawState(textPaint)
|
|
23
|
+
|
|
24
|
+
val mentionsStyle = enrichedStyle.mentionsStyle[indicator] ?: return
|
|
25
|
+
textPaint.color = mentionsStyle.color
|
|
26
|
+
textPaint.bgColor = mentionsStyle.backgroundColor
|
|
27
|
+
textPaint.isUnderlineText = mentionsStyle.underline
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
fun getAttributes(): Map<String, String> = attributes
|
|
31
|
+
|
|
32
|
+
fun getText(): String = text
|
|
33
|
+
|
|
34
|
+
fun getIndicator(): String = indicator
|
|
35
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
package com.swmansion.enriched.common.spans
|
|
2
|
+
|
|
3
|
+
import android.graphics.Canvas
|
|
4
|
+
import android.graphics.Paint
|
|
5
|
+
import android.graphics.Typeface
|
|
6
|
+
import android.os.Build
|
|
7
|
+
import android.text.Layout
|
|
8
|
+
import android.text.TextPaint
|
|
9
|
+
import android.text.style.LeadingMarginSpan
|
|
10
|
+
import android.text.style.MetricAffectingSpan
|
|
11
|
+
import com.swmansion.enriched.common.EnrichedStyle
|
|
12
|
+
import com.swmansion.enriched.common.spans.interfaces.EnrichedParagraphSpan
|
|
13
|
+
|
|
14
|
+
open class EnrichedOrderedListSpan(
|
|
15
|
+
var index: Int,
|
|
16
|
+
private val enrichedStyle: EnrichedStyle,
|
|
17
|
+
) : MetricAffectingSpan(),
|
|
18
|
+
LeadingMarginSpan,
|
|
19
|
+
EnrichedParagraphSpan {
|
|
20
|
+
override fun updateMeasureState(p0: TextPaint) {
|
|
21
|
+
// Do nothing, but inform layout that this span affects text metrics
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
override fun updateDrawState(p0: TextPaint?) {
|
|
25
|
+
// Do nothing, but inform layout that this span affects text metrics
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
override fun getLeadingMargin(first: Boolean): Int = enrichedStyle.olMarginLeft + enrichedStyle.olGapWidth
|
|
29
|
+
|
|
30
|
+
override fun drawLeadingMargin(
|
|
31
|
+
canvas: Canvas,
|
|
32
|
+
paint: Paint,
|
|
33
|
+
x: Int,
|
|
34
|
+
dir: Int,
|
|
35
|
+
top: Int,
|
|
36
|
+
baseline: Int,
|
|
37
|
+
bottom: Int,
|
|
38
|
+
t: CharSequence?,
|
|
39
|
+
start: Int,
|
|
40
|
+
end: Int,
|
|
41
|
+
first: Boolean,
|
|
42
|
+
layout: Layout?,
|
|
43
|
+
) {
|
|
44
|
+
if (first) {
|
|
45
|
+
val text = "$index."
|
|
46
|
+
val width = paint.measureText(text)
|
|
47
|
+
|
|
48
|
+
val yPosition = baseline.toFloat()
|
|
49
|
+
val xPosition = (enrichedStyle.olMarginLeft + x - width / 2) * dir
|
|
50
|
+
|
|
51
|
+
val originalColor = paint.color
|
|
52
|
+
val originalTypeface = paint.typeface
|
|
53
|
+
|
|
54
|
+
paint.color = enrichedStyle.olMarkerColor ?: originalColor
|
|
55
|
+
paint.typeface = getTypeface(enrichedStyle.olMarkerFontWeight, originalTypeface)
|
|
56
|
+
canvas.drawText(text, xPosition, yPosition, paint)
|
|
57
|
+
|
|
58
|
+
paint.color = originalColor
|
|
59
|
+
paint.typeface = originalTypeface
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private fun getTypeface(
|
|
64
|
+
fontWeight: Int?,
|
|
65
|
+
originalTypeface: Typeface,
|
|
66
|
+
): Typeface =
|
|
67
|
+
if (fontWeight == null) {
|
|
68
|
+
originalTypeface
|
|
69
|
+
} else if (Build.VERSION.SDK_INT >= 28) {
|
|
70
|
+
Typeface.create(originalTypeface, fontWeight, false)
|
|
71
|
+
} else {
|
|
72
|
+
// Fallback for API < 28: only bold/normal supported
|
|
73
|
+
if (fontWeight == Typeface.BOLD) {
|
|
74
|
+
Typeface.create(originalTypeface, Typeface.BOLD)
|
|
75
|
+
} else {
|
|
76
|
+
Typeface.create(originalTypeface, Typeface.NORMAL)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedStrikeThroughSpan.kt
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
package com.swmansion.enriched.common.spans
|
|
2
|
+
|
|
3
|
+
import android.text.style.StrikethroughSpan
|
|
4
|
+
import com.swmansion.enriched.common.EnrichedStyle
|
|
5
|
+
import com.swmansion.enriched.common.spans.interfaces.EnrichedInlineSpan
|
|
6
|
+
|
|
7
|
+
@Suppress("UNUSED_PARAMETER")
|
|
8
|
+
open class EnrichedStrikeThroughSpan(
|
|
9
|
+
private val enrichedStyle: EnrichedStyle,
|
|
10
|
+
) : StrikethroughSpan(),
|
|
11
|
+
EnrichedInlineSpan
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
package com.swmansion.enriched.common.spans
|
|
2
|
+
|
|
3
|
+
import android.text.style.UnderlineSpan
|
|
4
|
+
import com.swmansion.enriched.common.EnrichedStyle
|
|
5
|
+
import com.swmansion.enriched.common.spans.interfaces.EnrichedInlineSpan
|
|
6
|
+
|
|
7
|
+
@Suppress("UNUSED_PARAMETER")
|
|
8
|
+
open class EnrichedUnderlineSpan(
|
|
9
|
+
private val enrichedStyle: EnrichedStyle,
|
|
10
|
+
) : UnderlineSpan(),
|
|
11
|
+
EnrichedInlineSpan
|
package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedUnorderedListSpan.kt
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
package com.swmansion.enriched.common.spans
|
|
2
|
+
|
|
3
|
+
import android.graphics.Canvas
|
|
4
|
+
import android.graphics.Paint
|
|
5
|
+
import android.text.Layout
|
|
6
|
+
import android.text.Spanned
|
|
7
|
+
import android.text.TextPaint
|
|
8
|
+
import android.text.style.LeadingMarginSpan
|
|
9
|
+
import android.text.style.MetricAffectingSpan
|
|
10
|
+
import com.swmansion.enriched.common.EnrichedStyle
|
|
11
|
+
import com.swmansion.enriched.common.spans.interfaces.EnrichedParagraphSpan
|
|
12
|
+
|
|
13
|
+
// https://android.googlesource.com/platform/frameworks/base/+/refs/heads/main/core/java/android/text/style/BulletSpan.java
|
|
14
|
+
open class EnrichedUnorderedListSpan(
|
|
15
|
+
private val enrichedStyle: EnrichedStyle,
|
|
16
|
+
) : MetricAffectingSpan(),
|
|
17
|
+
LeadingMarginSpan,
|
|
18
|
+
EnrichedParagraphSpan {
|
|
19
|
+
override fun updateMeasureState(p0: TextPaint) {
|
|
20
|
+
// Do nothing, but inform layout that this span affects text metrics
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
override fun updateDrawState(p0: TextPaint?) {
|
|
24
|
+
// Do nothing, but inform layout that this span affects text metrics
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
override fun getLeadingMargin(p0: Boolean): Int = enrichedStyle.ulBulletSize + enrichedStyle.ulGapWidth + enrichedStyle.ulMarginLeft
|
|
28
|
+
|
|
29
|
+
override fun drawLeadingMargin(
|
|
30
|
+
canvas: Canvas,
|
|
31
|
+
paint: Paint,
|
|
32
|
+
x: Int,
|
|
33
|
+
dir: Int,
|
|
34
|
+
top: Int,
|
|
35
|
+
baseline: Int,
|
|
36
|
+
bottom: Int,
|
|
37
|
+
text: CharSequence,
|
|
38
|
+
start: Int,
|
|
39
|
+
end: Int,
|
|
40
|
+
first: Boolean,
|
|
41
|
+
layout: Layout?,
|
|
42
|
+
) {
|
|
43
|
+
val spannedText = text as Spanned
|
|
44
|
+
|
|
45
|
+
if (spannedText.getSpanStart(this) == start) {
|
|
46
|
+
val style = paint.style
|
|
47
|
+
val oldColor = paint.color
|
|
48
|
+
paint.color = enrichedStyle.ulBulletColor
|
|
49
|
+
paint.style = Paint.Style.FILL
|
|
50
|
+
|
|
51
|
+
val bulletRadius = enrichedStyle.ulBulletSize / 2f
|
|
52
|
+
val fm = paint.fontMetricsInt
|
|
53
|
+
val yPosition = baseline + (fm.ascent + fm.descent) / 2f
|
|
54
|
+
val xPosition = x + dir * bulletRadius + enrichedStyle.ulMarginLeft
|
|
55
|
+
|
|
56
|
+
canvas.drawCircle(xPosition, yPosition, bulletRadius, paint)
|
|
57
|
+
|
|
58
|
+
paint.color = oldColor
|
|
59
|
+
paint.style = style
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputConnectionWrapper.kt
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
package com.swmansion.enriched.textinput
|
|
2
|
+
|
|
3
|
+
import android.view.KeyEvent
|
|
4
|
+
import android.view.inputmethod.InputConnection
|
|
5
|
+
import android.view.inputmethod.InputConnectionWrapper
|
|
6
|
+
import com.facebook.react.bridge.ReactContext
|
|
7
|
+
import com.facebook.react.uimanager.UIManagerHelper
|
|
8
|
+
import com.swmansion.enriched.textinput.events.OnInputKeyPressEvent
|
|
9
|
+
|
|
10
|
+
// This class is based on the implementation from Facebook React Native to provide 'onKeyPress' API on android.
|
|
11
|
+
// Original source:
|
|
12
|
+
// https://github.com/facebook/react-native/blob/v0.83.1/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditTextInputConnectionWrapper.kt
|
|
13
|
+
class EnrichedTextInputConnectionWrapper(
|
|
14
|
+
target: InputConnection,
|
|
15
|
+
private val reactContext: ReactContext,
|
|
16
|
+
private val editText: EnrichedTextInputView,
|
|
17
|
+
private val experimentalSynchronousEvents: Boolean,
|
|
18
|
+
) : InputConnectionWrapper(target, false) {
|
|
19
|
+
private var isBatchEdit = false
|
|
20
|
+
private var key: String? = null
|
|
21
|
+
|
|
22
|
+
override fun beginBatchEdit(): Boolean {
|
|
23
|
+
isBatchEdit = true
|
|
24
|
+
return super.beginBatchEdit()
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
override fun endBatchEdit(): Boolean {
|
|
28
|
+
isBatchEdit = false
|
|
29
|
+
key?.let { k ->
|
|
30
|
+
dispatchKeyEvent(k)
|
|
31
|
+
key = null
|
|
32
|
+
}
|
|
33
|
+
return super.endBatchEdit()
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
override fun setComposingText(
|
|
37
|
+
text: CharSequence,
|
|
38
|
+
newCursorPosition: Int,
|
|
39
|
+
): Boolean {
|
|
40
|
+
val previousSelectionStart = editText.selectionStart
|
|
41
|
+
val previousSelectionEnd = editText.selectionEnd
|
|
42
|
+
|
|
43
|
+
val consumed = super.setComposingText(text, newCursorPosition)
|
|
44
|
+
|
|
45
|
+
val currentSelectionStart = editText.selectionStart
|
|
46
|
+
val noPreviousSelection = previousSelectionStart == previousSelectionEnd
|
|
47
|
+
val cursorDidNotMove = currentSelectionStart == previousSelectionStart
|
|
48
|
+
val cursorMovedBackwardsOrAtBeginningOfInput =
|
|
49
|
+
currentSelectionStart < previousSelectionStart || currentSelectionStart <= 0
|
|
50
|
+
|
|
51
|
+
val inputKey =
|
|
52
|
+
if (
|
|
53
|
+
cursorMovedBackwardsOrAtBeginningOfInput || (!noPreviousSelection && cursorDidNotMove)
|
|
54
|
+
) {
|
|
55
|
+
BACKSPACE_KEY_VALUE
|
|
56
|
+
} else {
|
|
57
|
+
editText.text?.get(currentSelectionStart - 1).toString()
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
dispatchKeyEventOrEnqueue(inputKey)
|
|
61
|
+
return consumed
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
override fun commitText(
|
|
65
|
+
text: CharSequence,
|
|
66
|
+
newCursorPosition: Int,
|
|
67
|
+
): Boolean {
|
|
68
|
+
var inputKey = text.toString()
|
|
69
|
+
// Assume not a keyPress if length > 1 (or 2 if unicode)
|
|
70
|
+
if (inputKey.length <= 2) {
|
|
71
|
+
if (inputKey.isEmpty()) {
|
|
72
|
+
inputKey = BACKSPACE_KEY_VALUE
|
|
73
|
+
}
|
|
74
|
+
dispatchKeyEventOrEnqueue(inputKey)
|
|
75
|
+
}
|
|
76
|
+
return super.commitText(text, newCursorPosition)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
override fun deleteSurroundingText(
|
|
80
|
+
beforeLength: Int,
|
|
81
|
+
afterLength: Int,
|
|
82
|
+
): Boolean {
|
|
83
|
+
dispatchKeyEvent(BACKSPACE_KEY_VALUE)
|
|
84
|
+
return super.deleteSurroundingText(beforeLength, afterLength)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Called by SwiftKey when cursor at beginning of input when there is a delete
|
|
88
|
+
// or when enter is pressed anywhere in the text. Whereas stock Android Keyboard calls
|
|
89
|
+
// [InputConnection.deleteSurroundingText] & [InputConnection.commitText]
|
|
90
|
+
// in each case, respectively.
|
|
91
|
+
override fun sendKeyEvent(event: KeyEvent): Boolean {
|
|
92
|
+
if (event.action == KeyEvent.ACTION_DOWN) {
|
|
93
|
+
val isNumberKey = event.unicodeChar in 48..57
|
|
94
|
+
when (event.keyCode) {
|
|
95
|
+
KeyEvent.KEYCODE_DEL -> {
|
|
96
|
+
dispatchKeyEvent(BACKSPACE_KEY_VALUE)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
KeyEvent.KEYCODE_ENTER -> {
|
|
100
|
+
dispatchKeyEvent(ENTER_KEY_VALUE)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
else -> {
|
|
104
|
+
if (isNumberKey) {
|
|
105
|
+
dispatchKeyEvent(event.number.toString())
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return super.sendKeyEvent(event)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
private fun dispatchKeyEventOrEnqueue(inputKey: String) {
|
|
114
|
+
if (isBatchEdit) {
|
|
115
|
+
key = inputKey
|
|
116
|
+
} else {
|
|
117
|
+
dispatchKeyEvent(inputKey)
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
private fun dispatchKeyEvent(inputKey: String) {
|
|
122
|
+
val resolvedKey = if (inputKey == NEWLINE_RAW_VALUE) ENTER_KEY_VALUE else inputKey
|
|
123
|
+
val surfaceId = UIManagerHelper.getSurfaceId(editText)
|
|
124
|
+
val eventDispatcher = UIManagerHelper.getEventDispatcherForReactTag(reactContext, editText.id)
|
|
125
|
+
eventDispatcher?.dispatchEvent(
|
|
126
|
+
OnInputKeyPressEvent(
|
|
127
|
+
surfaceId = surfaceId,
|
|
128
|
+
viewId = editText.id,
|
|
129
|
+
key = resolvedKey,
|
|
130
|
+
experimentalSynchronousEvents = experimentalSynchronousEvents,
|
|
131
|
+
),
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
companion object {
|
|
136
|
+
const val NEWLINE_RAW_VALUE: String = "\n"
|
|
137
|
+
const val BACKSPACE_KEY_VALUE: String = "Backspace"
|
|
138
|
+
const val ENTER_KEY_VALUE: String = "Enter"
|
|
139
|
+
}
|
|
140
|
+
}
|
package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputSpannableFactory.kt
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
package com.swmansion.enriched.textinput
|
|
2
|
+
|
|
3
|
+
import com.swmansion.enriched.common.parser.EnrichedSpanFactory
|
|
4
|
+
import com.swmansion.enriched.common.spans.EnrichedCheckboxListSpan
|
|
5
|
+
import com.swmansion.enriched.common.spans.EnrichedImageSpan
|
|
6
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputBlockQuoteSpan
|
|
7
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputBoldSpan
|
|
8
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputCheckboxListSpan
|
|
9
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputCodeBlockSpan
|
|
10
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputH1Span
|
|
11
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputH2Span
|
|
12
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputH3Span
|
|
13
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputH4Span
|
|
14
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputH5Span
|
|
15
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputH6Span
|
|
16
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputImageSpan
|
|
17
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputInlineCodeSpan
|
|
18
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputItalicSpan
|
|
19
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputLinkSpan
|
|
20
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputMentionSpan
|
|
21
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputOrderedListSpan
|
|
22
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputStrikeThroughSpan
|
|
23
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputUnderlineSpan
|
|
24
|
+
import com.swmansion.enriched.textinput.spans.EnrichedInputUnorderedListSpan
|
|
25
|
+
import com.swmansion.enriched.textinput.styles.HtmlStyle
|
|
26
|
+
|
|
27
|
+
class EnrichedTextInputSpannableFactory : EnrichedSpanFactory<HtmlStyle> {
|
|
28
|
+
override fun createBoldSpan(style: HtmlStyle) = EnrichedInputBoldSpan(style)
|
|
29
|
+
|
|
30
|
+
override fun createItalicSpan(style: HtmlStyle) = EnrichedInputItalicSpan(style)
|
|
31
|
+
|
|
32
|
+
override fun createUnderlineSpan(style: HtmlStyle) = EnrichedInputUnderlineSpan(style)
|
|
33
|
+
|
|
34
|
+
override fun createStrikeThroughSpan(style: HtmlStyle) = EnrichedInputStrikeThroughSpan(style)
|
|
35
|
+
|
|
36
|
+
override fun createInlineCodeSpan(style: HtmlStyle) = EnrichedInputInlineCodeSpan(style)
|
|
37
|
+
|
|
38
|
+
override fun createLinkSpan(
|
|
39
|
+
url: String,
|
|
40
|
+
style: HtmlStyle,
|
|
41
|
+
) = EnrichedInputLinkSpan(url, style, true)
|
|
42
|
+
|
|
43
|
+
override fun createMentionSpan(
|
|
44
|
+
text: String,
|
|
45
|
+
indicator: String,
|
|
46
|
+
attributes: Map<String, String>,
|
|
47
|
+
style: HtmlStyle,
|
|
48
|
+
) = EnrichedInputMentionSpan(text, indicator, attributes, style)
|
|
49
|
+
|
|
50
|
+
override fun createImageSpan(
|
|
51
|
+
source: String,
|
|
52
|
+
width: Int,
|
|
53
|
+
height: Int,
|
|
54
|
+
): EnrichedImageSpan = EnrichedInputImageSpan.createEnrichedImageSpan(source, width, height)
|
|
55
|
+
|
|
56
|
+
override fun createH1Span(style: HtmlStyle) = EnrichedInputH1Span(style)
|
|
57
|
+
|
|
58
|
+
override fun createH2Span(style: HtmlStyle) = EnrichedInputH2Span(style)
|
|
59
|
+
|
|
60
|
+
override fun createH3Span(style: HtmlStyle) = EnrichedInputH3Span(style)
|
|
61
|
+
|
|
62
|
+
override fun createH4Span(style: HtmlStyle) = EnrichedInputH4Span(style)
|
|
63
|
+
|
|
64
|
+
override fun createH5Span(style: HtmlStyle) = EnrichedInputH5Span(style)
|
|
65
|
+
|
|
66
|
+
override fun createH6Span(style: HtmlStyle) = EnrichedInputH6Span(style)
|
|
67
|
+
|
|
68
|
+
override fun createOrderedListSpan(
|
|
69
|
+
index: Int,
|
|
70
|
+
style: HtmlStyle,
|
|
71
|
+
) = EnrichedInputOrderedListSpan(index, style)
|
|
72
|
+
|
|
73
|
+
override fun createUnorderedListSpan(style: HtmlStyle) = EnrichedInputUnorderedListSpan(style)
|
|
74
|
+
|
|
75
|
+
override fun createCheckboxListSpan(
|
|
76
|
+
isChecked: Boolean,
|
|
77
|
+
style: HtmlStyle,
|
|
78
|
+
) = EnrichedInputCheckboxListSpan(isChecked, style)
|
|
79
|
+
|
|
80
|
+
override fun createBlockQuoteSpan(style: HtmlStyle) = EnrichedInputBlockQuoteSpan(style)
|
|
81
|
+
|
|
82
|
+
override fun createCodeBlockSpan(style: HtmlStyle) = EnrichedInputCodeBlockSpan(style)
|
|
83
|
+
}
|