react-native-enriched 0.2.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -16
- package/android/build.gradle +77 -72
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerDelegate.java +21 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerInterface.java +7 -0
- package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ComponentDescriptors.cpp +1 -1
- package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ComponentDescriptors.h +1 -1
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.cpp +276 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.h +239 -0
- package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/Props.cpp +10 -0
- package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/Props.h +251 -0
- package/android/gradle.properties +5 -5
- package/android/lint.gradle +70 -0
- package/android/src/main/java/com/swmansion/enriched/{EnrichedTextInputViewPackage.kt → ReactNativeEnrichedPackage.kt} +4 -5
- package/android/src/main/java/com/swmansion/enriched/{utils → common}/AsyncDrawable.kt +50 -15
- 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/{spans/utils → common}/ForceRedrawSpan.kt +3 -2
- package/android/src/main/java/com/swmansion/enriched/common/MentionStyle.kt +7 -0
- package/android/src/main/java/com/swmansion/enriched/{utils → common}/ResourceManager.kt +1 -1
- package/android/src/main/java/com/swmansion/enriched/{utils → common/parser}/EnrichedParser.java +228 -160
- 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 +91 -0
- package/android/src/main/java/com/swmansion/enriched/{spans → common/spans}/EnrichedCodeBlockSpan.kt +12 -14
- 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/{spans → common/spans}/EnrichedImageSpan.kt +68 -51
- 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 +26 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedMentionSpan.kt +35 -0
- package/android/src/main/java/com/swmansion/enriched/{spans → common/spans}/EnrichedOrderedListSpan.kt +21 -29
- 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/{spans → common/spans}/EnrichedUnorderedListSpan.kt +13 -17
- 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/{spans → common/spans}/interfaces/EnrichedZeroWidthSpaceSpan.kt +2 -3
- 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/{EnrichedTextInputView.kt → textinput/EnrichedTextInputView.kt} +322 -157
- package/android/src/main/java/com/swmansion/enriched/{EnrichedTextInputViewLayoutManager.kt → textinput/EnrichedTextInputViewLayoutManager.kt} +4 -2
- package/android/src/main/java/com/swmansion/enriched/{EnrichedTextInputViewManager.kt → textinput/EnrichedTextInputViewManager.kt} +182 -66
- package/android/src/main/java/com/swmansion/enriched/{MeasurementStore.kt → textinput/MeasurementStore.kt} +75 -25
- package/android/src/main/java/com/swmansion/enriched/{events → textinput/events}/MentionHandler.kt +22 -12
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeHtmlEvent.kt +27 -0
- package/android/src/main/java/com/swmansion/enriched/{events → textinput/events}/OnChangeSelectionEvent.kt +11 -10
- 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/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/{events → textinput/events}/OnMentionDetectedEvent.kt +11 -10
- package/android/src/main/java/com/swmansion/enriched/{events → textinput/events}/OnMentionEvent.kt +10 -9
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnPasteImagesEvent.kt +47 -0
- package/android/src/main/java/com/swmansion/enriched/{events → textinput/events}/OnRequestHtmlResultEvent.kt +2 -3
- 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 +15 -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/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/{styles → textinput/styles}/HtmlStyle.kt +129 -57
- package/android/src/main/java/com/swmansion/enriched/{styles → textinput/styles}/InlineStyles.kt +30 -13
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/ListStyles.kt +263 -0
- package/android/src/main/java/com/swmansion/enriched/{styles → textinput/styles}/ParagraphStyles.kt +94 -34
- package/android/src/main/java/com/swmansion/enriched/{styles → textinput/styles}/ParametrizedStyles.kt +143 -67
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedEditableFactory.kt +17 -0
- package/android/src/main/java/com/swmansion/enriched/{utils → textinput/utils}/EnrichedSelection.kt +84 -54
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpanState.kt +304 -0
- package/android/src/main/java/com/swmansion/enriched/{utils/Utils.kt → textinput/utils/EnrichedSpannable.kt} +22 -31
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannableStringBuilder.kt +16 -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/{watchers → textinput/watchers}/EnrichedSpanWatcher.kt +56 -24
- package/android/src/main/java/com/swmansion/enriched/{watchers → textinput/watchers}/EnrichedTextWatcher.kt +37 -14
- package/android/src/main/new_arch/CMakeLists.txt +7 -1
- 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/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputMeasurementManager.h +1 -1
- package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputShadowNode.h +2 -2
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/conversions.h +46 -0
- package/ios/EnrichedTextInputView.h +2 -1
- package/ios/EnrichedTextInputView.mm +603 -60
- package/ios/config/InputConfig.h +28 -0
- package/ios/config/InputConfig.mm +237 -8
- package/ios/extensions/ImageExtension.h +35 -0
- package/ios/extensions/ImageExtension.mm +156 -0
- package/ios/{utils → extensions}/LayoutManagerExtension.mm +115 -95
- package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ComponentDescriptors.cpp +1 -1
- package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ComponentDescriptors.h +1 -1
- package/ios/generated/ReactNativeEnrichedSpec/EventEmitters.cpp +276 -0
- package/ios/generated/ReactNativeEnrichedSpec/EventEmitters.h +239 -0
- package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/Props.cpp +10 -0
- package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/Props.h +251 -0
- package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/RCTComponentViewHelpers.h +95 -0
- package/ios/inputParser/InputParser.mm +218 -18
- package/ios/inputTextView/InputTextView.mm +118 -0
- package/ios/{attachments → interfaces}/ImageAttachment.h +1 -0
- package/ios/interfaces/ImageAttachment.mm +46 -0
- package/ios/interfaces/LinkRegexConfig.h +19 -0
- package/ios/interfaces/LinkRegexConfig.mm +37 -0
- package/ios/{utils → interfaces}/MentionStyleProps.mm +2 -2
- package/ios/{utils → interfaces}/StyleHeaders.h +22 -1
- package/ios/{utils → interfaces}/StyleTypeEnum.h +4 -0
- package/ios/internals/EnrichedTextInputViewState.cpp +6 -6
- package/ios/styles/BlockQuoteStyle.mm +5 -5
- package/ios/styles/BoldStyle.mm +21 -6
- package/ios/styles/CheckboxListStyle.mm +321 -0
- package/ios/styles/CodeBlockStyle.mm +5 -5
- package/ios/styles/H1Style.mm +3 -0
- package/ios/styles/H2Style.mm +3 -0
- package/ios/styles/H3Style.mm +3 -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 +161 -72
- package/ios/styles/ImageStyle.mm +5 -5
- package/ios/styles/InlineCodeStyle.mm +30 -19
- package/ios/styles/ItalicStyle.mm +5 -5
- package/ios/styles/LinkStyle.mm +98 -40
- package/ios/styles/MentionStyle.mm +4 -4
- package/ios/styles/OrderedListStyle.mm +5 -5
- package/ios/styles/StrikethroughStyle.mm +5 -5
- package/ios/styles/UnderlineStyle.mm +5 -5
- package/ios/styles/UnorderedListStyle.mm +5 -5
- package/ios/utils/CheckboxHitTestUtils.h +10 -0
- package/ios/utils/CheckboxHitTestUtils.mm +123 -0
- package/ios/utils/ParagraphAttributesUtils.h +4 -0
- package/ios/utils/ParagraphAttributesUtils.mm +142 -45
- package/ios/utils/ParagraphsUtils.mm +4 -4
- package/ios/utils/TextBlockTapGestureRecognizer.h +17 -0
- package/ios/utils/TextBlockTapGestureRecognizer.mm +56 -0
- package/ios/utils/ZeroWidthSpaceUtils.mm +14 -3
- package/lib/module/EnrichedTextInput.js +57 -11
- package/lib/module/EnrichedTextInput.js.map +1 -1
- package/lib/module/{EnrichedTextInputNativeComponent.ts → spec/EnrichedTextInputNativeComponent.ts} +175 -18
- package/lib/module/types.js +4 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/{normalizeHtmlStyle.js → utils/normalizeHtmlStyle.js} +18 -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/src/EnrichedTextInput.d.ts +20 -51
- package/lib/typescript/src/EnrichedTextInput.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +2 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/{EnrichedTextInputNativeComponent.d.ts → spec/EnrichedTextInputNativeComponent.d.ts} +154 -18
- package/lib/typescript/src/spec/EnrichedTextInputNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +58 -0
- package/lib/typescript/src/types.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 +13 -9
- package/src/EnrichedTextInput.tsx +88 -63
- package/src/index.tsx +5 -1
- package/src/{EnrichedTextInputNativeComponent.ts → spec/EnrichedTextInputNativeComponent.ts} +175 -18
- package/src/types.ts +59 -0
- package/src/{normalizeHtmlStyle.ts → utils/normalizeHtmlStyle.ts} +20 -5
- package/src/utils/nullthrows.ts +7 -0
- package/src/utils/regexParser.ts +56 -0
- package/android/generated/jni/react/renderer/components/RNEnrichedTextInputViewSpec/EventEmitters.cpp +0 -128
- package/android/generated/jni/react/renderer/components/RNEnrichedTextInputViewSpec/EventEmitters.h +0 -102
- package/android/src/main/java/com/swmansion/enriched/events/OnChangeHtmlEvent.kt +0 -28
- package/android/src/main/java/com/swmansion/enriched/events/OnChangeStateEvent.kt +0 -24
- package/android/src/main/java/com/swmansion/enriched/events/OnChangeTextEvent.kt +0 -30
- package/android/src/main/java/com/swmansion/enriched/events/OnInputBlurEvent.kt +0 -27
- package/android/src/main/java/com/swmansion/enriched/events/OnInputFocusEvent.kt +0 -27
- package/android/src/main/java/com/swmansion/enriched/events/OnLinkDetectedEvent.kt +0 -30
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedBlockQuoteSpan.kt +0 -44
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedBoldSpan.kt +0 -16
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH1Span.kt +0 -23
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH2Span.kt +0 -23
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH3Span.kt +0 -23
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedInlineCodeSpan.kt +0 -27
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedItalicSpan.kt +0 -15
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedLinkSpan.kt +0 -30
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedMentionSpan.kt +0 -42
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedSpans.kt +0 -136
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedStrikeThroughSpan.kt +0 -14
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedUnderlineSpan.kt +0 -14
- package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedBlockSpan.kt +0 -4
- package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedHeadingSpan.kt +0 -4
- package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedInlineSpan.kt +0 -4
- package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedParagraphSpan.kt +0 -4
- package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedSpan.kt +0 -8
- package/android/src/main/java/com/swmansion/enriched/styles/ListStyles.kt +0 -172
- package/android/src/main/java/com/swmansion/enriched/utils/EnrichedSpanState.kt +0 -204
- package/android/src/main/new_arch/RNEnrichedTextInputViewSpec.cpp +0 -22
- package/android/src/main/new_arch/RNEnrichedTextInputViewSpec.h +0 -26
- package/android/src/main/new_arch/react/renderer/components/RNEnrichedTextInputViewSpec/conversions.h +0 -26
- package/ios/attachments/ImageAttachment.mm +0 -34
- package/ios/generated/RNEnrichedTextInputViewSpec/EventEmitters.cpp +0 -128
- package/ios/generated/RNEnrichedTextInputViewSpec/EventEmitters.h +0 -102
- package/lib/module/normalizeHtmlStyle.js.map +0 -1
- package/lib/typescript/src/EnrichedTextInputNativeComponent.d.ts.map +0 -1
- package/lib/typescript/src/normalizeHtmlStyle.d.ts +0 -4
- package/lib/typescript/src/normalizeHtmlStyle.d.ts.map +0 -1
- /package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ShadowNodes.cpp +0 -0
- /package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ShadowNodes.h +0 -0
- /package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/States.cpp +0 -0
- /package/android/generated/jni/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/States.h +0 -0
- /package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputComponentDescriptor.h +0 -0
- /package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputMeasurementManager.cpp +0 -0
- /package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputShadowNode.cpp +0 -0
- /package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputState.cpp +0 -0
- /package/android/src/main/new_arch/react/renderer/components/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/EnrichedTextInputState.h +0 -0
- /package/ios/{utils → extensions}/ColorExtension.h +0 -0
- /package/ios/{utils → extensions}/ColorExtension.mm +0 -0
- /package/ios/{utils → extensions}/FontExtension.h +0 -0
- /package/ios/{utils → extensions}/FontExtension.mm +0 -0
- /package/ios/{utils → extensions}/LayoutManagerExtension.h +0 -0
- /package/ios/{utils → extensions}/StringExtension.h +0 -0
- /package/ios/{utils → extensions}/StringExtension.mm +0 -0
- /package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ShadowNodes.cpp +0 -0
- /package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/ShadowNodes.h +0 -0
- /package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/States.cpp +0 -0
- /package/ios/generated/{RNEnrichedTextInputViewSpec → ReactNativeEnrichedSpec}/States.h +0 -0
- /package/ios/{utils → interfaces}/BaseStyleProtocol.h +0 -0
- /package/ios/{utils → interfaces}/ImageData.h +0 -0
- /package/ios/{utils → interfaces}/ImageData.mm +0 -0
- /package/ios/{utils → interfaces}/LinkData.h +0 -0
- /package/ios/{utils → interfaces}/LinkData.mm +0 -0
- /package/ios/{attachments → interfaces}/MediaAttachment.h +0 -0
- /package/ios/{attachments → interfaces}/MediaAttachment.mm +0 -0
- /package/ios/{utils → interfaces}/MentionParams.h +0 -0
- /package/ios/{utils → interfaces}/MentionParams.mm +0 -0
- /package/ios/{utils → interfaces}/MentionStyleProps.h +0 -0
- /package/ios/{utils → interfaces}/StylePair.h +0 -0
- /package/ios/{utils → interfaces}/StylePair.mm +0 -0
- /package/ios/{utils → interfaces}/TextDecorationLineEnum.h +0 -0
- /package/ios/{utils → interfaces}/TextDecorationLineEnum.mm +0 -0
|
@@ -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
|
+
}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
package com.swmansion.enriched.spans
|
|
1
|
+
package com.swmansion.enriched.common.spans
|
|
2
2
|
|
|
3
3
|
import android.graphics.Canvas
|
|
4
4
|
import android.graphics.Paint
|
|
5
5
|
import android.graphics.Typeface
|
|
6
|
+
import android.os.Build
|
|
6
7
|
import android.text.Layout
|
|
7
8
|
import android.text.TextPaint
|
|
8
9
|
import android.text.style.LeadingMarginSpan
|
|
9
10
|
import android.text.style.MetricAffectingSpan
|
|
10
|
-
import com.swmansion.enriched.
|
|
11
|
-
import com.swmansion.enriched.
|
|
12
|
-
|
|
13
|
-
class EnrichedOrderedListSpan(private var index: Int, private val htmlStyle: HtmlStyle) : MetricAffectingSpan(), LeadingMarginSpan, EnrichedParagraphSpan {
|
|
14
|
-
override val dependsOnHtmlStyle: Boolean = true
|
|
11
|
+
import com.swmansion.enriched.common.EnrichedStyle
|
|
12
|
+
import com.swmansion.enriched.common.spans.interfaces.EnrichedParagraphSpan
|
|
15
13
|
|
|
14
|
+
open class EnrichedOrderedListSpan(
|
|
15
|
+
var index: Int,
|
|
16
|
+
private val enrichedStyle: EnrichedStyle,
|
|
17
|
+
) : MetricAffectingSpan(),
|
|
18
|
+
LeadingMarginSpan,
|
|
19
|
+
EnrichedParagraphSpan {
|
|
16
20
|
override fun updateMeasureState(p0: TextPaint) {
|
|
17
21
|
// Do nothing, but inform layout that this span affects text metrics
|
|
18
22
|
}
|
|
@@ -21,9 +25,7 @@ class EnrichedOrderedListSpan(private var index: Int, private val htmlStyle: Htm
|
|
|
21
25
|
// Do nothing, but inform layout that this span affects text metrics
|
|
22
26
|
}
|
|
23
27
|
|
|
24
|
-
override fun getLeadingMargin(first: Boolean): Int
|
|
25
|
-
return htmlStyle.olMarginLeft + htmlStyle.olGapWidth
|
|
26
|
-
}
|
|
28
|
+
override fun getLeadingMargin(first: Boolean): Int = enrichedStyle.olMarginLeft + enrichedStyle.olGapWidth
|
|
27
29
|
|
|
28
30
|
override fun drawLeadingMargin(
|
|
29
31
|
canvas: Canvas,
|
|
@@ -37,20 +39,20 @@ class EnrichedOrderedListSpan(private var index: Int, private val htmlStyle: Htm
|
|
|
37
39
|
start: Int,
|
|
38
40
|
end: Int,
|
|
39
41
|
first: Boolean,
|
|
40
|
-
layout: Layout
|
|
42
|
+
layout: Layout?,
|
|
41
43
|
) {
|
|
42
44
|
if (first) {
|
|
43
45
|
val text = "$index."
|
|
44
46
|
val width = paint.measureText(text)
|
|
45
47
|
|
|
46
48
|
val yPosition = baseline.toFloat()
|
|
47
|
-
val xPosition = (
|
|
49
|
+
val xPosition = (enrichedStyle.olMarginLeft + x - width / 2) * dir
|
|
48
50
|
|
|
49
51
|
val originalColor = paint.color
|
|
50
52
|
val originalTypeface = paint.typeface
|
|
51
53
|
|
|
52
|
-
paint.color =
|
|
53
|
-
paint.typeface = getTypeface(
|
|
54
|
+
paint.color = enrichedStyle.olMarkerColor ?: originalColor
|
|
55
|
+
paint.typeface = getTypeface(enrichedStyle.olMarkerFontWeight, originalTypeface)
|
|
54
56
|
canvas.drawText(text, xPosition, yPosition, paint)
|
|
55
57
|
|
|
56
58
|
paint.color = originalColor
|
|
@@ -58,10 +60,13 @@ class EnrichedOrderedListSpan(private var index: Int, private val htmlStyle: Htm
|
|
|
58
60
|
}
|
|
59
61
|
}
|
|
60
62
|
|
|
61
|
-
private fun getTypeface(
|
|
62
|
-
|
|
63
|
+
private fun getTypeface(
|
|
64
|
+
fontWeight: Int?,
|
|
65
|
+
originalTypeface: Typeface,
|
|
66
|
+
): Typeface =
|
|
67
|
+
if (fontWeight == null) {
|
|
63
68
|
originalTypeface
|
|
64
|
-
} else if (
|
|
69
|
+
} else if (Build.VERSION.SDK_INT >= 28) {
|
|
65
70
|
Typeface.create(originalTypeface, fontWeight, false)
|
|
66
71
|
} else {
|
|
67
72
|
// Fallback for API < 28: only bold/normal supported
|
|
@@ -71,17 +76,4 @@ class EnrichedOrderedListSpan(private var index: Int, private val htmlStyle: Htm
|
|
|
71
76
|
Typeface.create(originalTypeface, Typeface.NORMAL)
|
|
72
77
|
}
|
|
73
78
|
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
fun getIndex(): Int {
|
|
77
|
-
return index
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
fun setIndex(i: Int) {
|
|
81
|
-
index = i
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedOrderedListSpan {
|
|
85
|
-
return EnrichedOrderedListSpan(index, htmlStyle)
|
|
86
|
-
}
|
|
87
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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.enriched.spans
|
|
1
|
+
package com.swmansion.enriched.common.spans
|
|
2
2
|
|
|
3
3
|
import android.graphics.Canvas
|
|
4
4
|
import android.graphics.Paint
|
|
@@ -7,13 +7,15 @@ import android.text.Spanned
|
|
|
7
7
|
import android.text.TextPaint
|
|
8
8
|
import android.text.style.LeadingMarginSpan
|
|
9
9
|
import android.text.style.MetricAffectingSpan
|
|
10
|
-
import com.swmansion.enriched.
|
|
11
|
-
import com.swmansion.enriched.
|
|
10
|
+
import com.swmansion.enriched.common.EnrichedStyle
|
|
11
|
+
import com.swmansion.enriched.common.spans.interfaces.EnrichedParagraphSpan
|
|
12
12
|
|
|
13
13
|
// https://android.googlesource.com/platform/frameworks/base/+/refs/heads/main/core/java/android/text/style/BulletSpan.java
|
|
14
|
-
class EnrichedUnorderedListSpan(
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
open class EnrichedUnorderedListSpan(
|
|
15
|
+
private val enrichedStyle: EnrichedStyle,
|
|
16
|
+
) : MetricAffectingSpan(),
|
|
17
|
+
LeadingMarginSpan,
|
|
18
|
+
EnrichedParagraphSpan {
|
|
17
19
|
override fun updateMeasureState(p0: TextPaint) {
|
|
18
20
|
// Do nothing, but inform layout that this span affects text metrics
|
|
19
21
|
}
|
|
@@ -22,9 +24,7 @@ class EnrichedUnorderedListSpan(private val htmlStyle: HtmlStyle) : MetricAffect
|
|
|
22
24
|
// Do nothing, but inform layout that this span affects text metrics
|
|
23
25
|
}
|
|
24
26
|
|
|
25
|
-
override fun getLeadingMargin(p0: Boolean): Int
|
|
26
|
-
return htmlStyle.ulBulletSize + htmlStyle.ulGapWidth + htmlStyle.ulMarginLeft
|
|
27
|
-
}
|
|
27
|
+
override fun getLeadingMargin(p0: Boolean): Int = enrichedStyle.ulBulletSize + enrichedStyle.ulGapWidth + enrichedStyle.ulMarginLeft
|
|
28
28
|
|
|
29
29
|
override fun drawLeadingMargin(
|
|
30
30
|
canvas: Canvas,
|
|
@@ -38,19 +38,19 @@ class EnrichedUnorderedListSpan(private val htmlStyle: HtmlStyle) : MetricAffect
|
|
|
38
38
|
start: Int,
|
|
39
39
|
end: Int,
|
|
40
40
|
first: Boolean,
|
|
41
|
-
layout: Layout
|
|
41
|
+
layout: Layout?,
|
|
42
42
|
) {
|
|
43
43
|
val spannedText = text as Spanned
|
|
44
44
|
|
|
45
45
|
if (spannedText.getSpanStart(this) == start) {
|
|
46
46
|
val style = paint.style
|
|
47
47
|
val oldColor = paint.color
|
|
48
|
-
paint.color =
|
|
48
|
+
paint.color = enrichedStyle.ulBulletColor
|
|
49
49
|
paint.style = Paint.Style.FILL
|
|
50
50
|
|
|
51
|
-
val bulletRadius =
|
|
51
|
+
val bulletRadius = enrichedStyle.ulBulletSize / 2f
|
|
52
52
|
val yPosition = (top + bottom) / 2f
|
|
53
|
-
val xPosition = x + dir * bulletRadius +
|
|
53
|
+
val xPosition = x + dir * bulletRadius + enrichedStyle.ulMarginLeft
|
|
54
54
|
|
|
55
55
|
canvas.drawCircle(xPosition, yPosition, bulletRadius, paint)
|
|
56
56
|
|
|
@@ -58,8 +58,4 @@ class EnrichedUnorderedListSpan(private val htmlStyle: HtmlStyle) : MetricAffect
|
|
|
58
58
|
paint.style = style
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
|
|
62
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedUnorderedListSpan {
|
|
63
|
-
return EnrichedUnorderedListSpan(htmlStyle)
|
|
64
|
-
}
|
|
65
61
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
package com.swmansion.enriched.spans.interfaces
|
|
1
|
+
package com.swmansion.enriched.common.spans.interfaces
|
|
2
2
|
|
|
3
3
|
// Spans that are prefixed with zero-width space (\u200B) to ensure that they are visible even when empty.
|
|
4
|
-
interface EnrichedZeroWidthSpaceSpan
|
|
5
|
-
}
|
|
4
|
+
interface EnrichedZeroWidthSpaceSpan
|
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)
|
|
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
|
+
}
|