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,56 @@
|
|
|
1
|
+
import type { LinkNativeRegex } from '../spec/EnrichedTextInputNativeComponent';
|
|
2
|
+
|
|
3
|
+
const DISABLED_REGEX: LinkNativeRegex = {
|
|
4
|
+
pattern: '',
|
|
5
|
+
caseInsensitive: false,
|
|
6
|
+
dotAll: false,
|
|
7
|
+
isDisabled: true,
|
|
8
|
+
isDefault: false,
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const DEFAULT_REGEX: LinkNativeRegex = {
|
|
12
|
+
pattern: '',
|
|
13
|
+
caseInsensitive: false,
|
|
14
|
+
dotAll: false,
|
|
15
|
+
isDisabled: false,
|
|
16
|
+
isDefault: true,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const toNativeRegexConfig = (
|
|
20
|
+
regex: RegExp | undefined | null
|
|
21
|
+
): LinkNativeRegex => {
|
|
22
|
+
if (regex === null) {
|
|
23
|
+
return DISABLED_REGEX;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (regex === undefined) {
|
|
27
|
+
return DEFAULT_REGEX;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const source = regex.source;
|
|
31
|
+
|
|
32
|
+
// iOS fails on variable-width lookbehinds like (?<=a+)
|
|
33
|
+
const hasLookbehind = source.includes('(?<=') || source.includes('(?<!');
|
|
34
|
+
|
|
35
|
+
if (hasLookbehind) {
|
|
36
|
+
// Basic detection for quantifiers inside a group
|
|
37
|
+
const lookbehindContent = source.match(/\(\?<[=!](.*?)\)/)?.[1] || '';
|
|
38
|
+
if (/[*+{]/.test(lookbehindContent)) {
|
|
39
|
+
if (__DEV__) {
|
|
40
|
+
console.error(
|
|
41
|
+
'Variable-width lookbehinds are not supported. Using default link regex.'
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return DEFAULT_REGEX;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
pattern: source,
|
|
51
|
+
caseInsensitive: regex.ignoreCase,
|
|
52
|
+
dotAll: regex.dotAll,
|
|
53
|
+
isDisabled: false,
|
|
54
|
+
isDefault: false,
|
|
55
|
+
};
|
|
56
|
+
};
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
-
*
|
|
5
|
-
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
-
* once the code is regenerated.
|
|
7
|
-
*
|
|
8
|
-
* @generated by codegen project: GenerateEventEmitterCpp.js
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
#include "EventEmitters.h"
|
|
12
|
-
#include <jsi/JSIDynamic.h>
|
|
13
|
-
|
|
14
|
-
namespace facebook::react {
|
|
15
|
-
|
|
16
|
-
void EnrichedTextInputViewEventEmitter::onInputFocus(OnInputFocus event) const {
|
|
17
|
-
dispatchEvent("inputFocus", [](jsi::Runtime &runtime) {
|
|
18
|
-
auto payload = jsi::Object(runtime);
|
|
19
|
-
|
|
20
|
-
return payload;
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
void EnrichedTextInputViewEventEmitter::onInputBlur(OnInputBlur event) const {
|
|
26
|
-
dispatchEvent("inputBlur", [](jsi::Runtime &runtime) {
|
|
27
|
-
auto payload = jsi::Object(runtime);
|
|
28
|
-
|
|
29
|
-
return payload;
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
void EnrichedTextInputViewEventEmitter::onChangeText(OnChangeText event) const {
|
|
35
|
-
dispatchEvent("changeText", [event=std::move(event)](jsi::Runtime &runtime) {
|
|
36
|
-
auto payload = jsi::Object(runtime);
|
|
37
|
-
payload.setProperty(runtime, "value", event.value);
|
|
38
|
-
return payload;
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
void EnrichedTextInputViewEventEmitter::onChangeHtml(OnChangeHtml event) const {
|
|
44
|
-
dispatchEvent("changeHtml", [event=std::move(event)](jsi::Runtime &runtime) {
|
|
45
|
-
auto payload = jsi::Object(runtime);
|
|
46
|
-
payload.setProperty(runtime, "value", event.value);
|
|
47
|
-
return payload;
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
void EnrichedTextInputViewEventEmitter::onChangeState(OnChangeState event) const {
|
|
53
|
-
dispatchEvent("changeState", [event=std::move(event)](jsi::Runtime &runtime) {
|
|
54
|
-
auto payload = jsi::Object(runtime);
|
|
55
|
-
payload.setProperty(runtime, "isBold", event.isBold);
|
|
56
|
-
payload.setProperty(runtime, "isItalic", event.isItalic);
|
|
57
|
-
payload.setProperty(runtime, "isUnderline", event.isUnderline);
|
|
58
|
-
payload.setProperty(runtime, "isStrikeThrough", event.isStrikeThrough);
|
|
59
|
-
payload.setProperty(runtime, "isInlineCode", event.isInlineCode);
|
|
60
|
-
payload.setProperty(runtime, "isH1", event.isH1);
|
|
61
|
-
payload.setProperty(runtime, "isH2", event.isH2);
|
|
62
|
-
payload.setProperty(runtime, "isH3", event.isH3);
|
|
63
|
-
payload.setProperty(runtime, "isCodeBlock", event.isCodeBlock);
|
|
64
|
-
payload.setProperty(runtime, "isBlockQuote", event.isBlockQuote);
|
|
65
|
-
payload.setProperty(runtime, "isOrderedList", event.isOrderedList);
|
|
66
|
-
payload.setProperty(runtime, "isUnorderedList", event.isUnorderedList);
|
|
67
|
-
payload.setProperty(runtime, "isLink", event.isLink);
|
|
68
|
-
payload.setProperty(runtime, "isImage", event.isImage);
|
|
69
|
-
payload.setProperty(runtime, "isMention", event.isMention);
|
|
70
|
-
return payload;
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
void EnrichedTextInputViewEventEmitter::onLinkDetected(OnLinkDetected event) const {
|
|
76
|
-
dispatchEvent("linkDetected", [event=std::move(event)](jsi::Runtime &runtime) {
|
|
77
|
-
auto payload = jsi::Object(runtime);
|
|
78
|
-
payload.setProperty(runtime, "text", event.text);
|
|
79
|
-
payload.setProperty(runtime, "url", event.url);
|
|
80
|
-
payload.setProperty(runtime, "start", event.start);
|
|
81
|
-
payload.setProperty(runtime, "end", event.end);
|
|
82
|
-
return payload;
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
void EnrichedTextInputViewEventEmitter::onMentionDetected(OnMentionDetected event) const {
|
|
88
|
-
dispatchEvent("mentionDetected", [event=std::move(event)](jsi::Runtime &runtime) {
|
|
89
|
-
auto payload = jsi::Object(runtime);
|
|
90
|
-
payload.setProperty(runtime, "text", event.text);
|
|
91
|
-
payload.setProperty(runtime, "indicator", event.indicator);
|
|
92
|
-
payload.setProperty(runtime, "payload", event.payload);
|
|
93
|
-
return payload;
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
void EnrichedTextInputViewEventEmitter::onMention(OnMention event) const {
|
|
99
|
-
dispatchEvent("mention", [event=std::move(event)](jsi::Runtime &runtime) {
|
|
100
|
-
auto payload = jsi::Object(runtime);
|
|
101
|
-
payload.setProperty(runtime, "indicator", event.indicator);
|
|
102
|
-
payload.setProperty(runtime, "text", jsi::valueFromDynamic(runtime, event.text));
|
|
103
|
-
return payload;
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
void EnrichedTextInputViewEventEmitter::onChangeSelection(OnChangeSelection event) const {
|
|
109
|
-
dispatchEvent("changeSelection", [event=std::move(event)](jsi::Runtime &runtime) {
|
|
110
|
-
auto payload = jsi::Object(runtime);
|
|
111
|
-
payload.setProperty(runtime, "start", event.start);
|
|
112
|
-
payload.setProperty(runtime, "end", event.end);
|
|
113
|
-
payload.setProperty(runtime, "text", event.text);
|
|
114
|
-
return payload;
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
void EnrichedTextInputViewEventEmitter::onRequestHtmlResult(OnRequestHtmlResult event) const {
|
|
120
|
-
dispatchEvent("requestHtmlResult", [event=std::move(event)](jsi::Runtime &runtime) {
|
|
121
|
-
auto payload = jsi::Object(runtime);
|
|
122
|
-
payload.setProperty(runtime, "requestId", event.requestId);
|
|
123
|
-
payload.setProperty(runtime, "html", jsi::valueFromDynamic(runtime, event.html));
|
|
124
|
-
return payload;
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
} // namespace facebook::react
|
package/android/generated/jni/react/renderer/components/RNEnrichedTextInputViewSpec/EventEmitters.h
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
-
*
|
|
5
|
-
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
-
* once the code is regenerated.
|
|
7
|
-
*
|
|
8
|
-
* @generated by codegen project: GenerateEventEmitterH.js
|
|
9
|
-
*/
|
|
10
|
-
#pragma once
|
|
11
|
-
|
|
12
|
-
#include <react/renderer/components/view/ViewEventEmitter.h>
|
|
13
|
-
#include <folly/dynamic.h>
|
|
14
|
-
|
|
15
|
-
namespace facebook::react {
|
|
16
|
-
class EnrichedTextInputViewEventEmitter : public ViewEventEmitter {
|
|
17
|
-
public:
|
|
18
|
-
using ViewEventEmitter::ViewEventEmitter;
|
|
19
|
-
|
|
20
|
-
struct OnInputFocus {
|
|
21
|
-
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
struct OnInputBlur {
|
|
25
|
-
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
struct OnChangeText {
|
|
29
|
-
std::string value;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
struct OnChangeHtml {
|
|
33
|
-
std::string value;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
struct OnChangeState {
|
|
37
|
-
bool isBold;
|
|
38
|
-
bool isItalic;
|
|
39
|
-
bool isUnderline;
|
|
40
|
-
bool isStrikeThrough;
|
|
41
|
-
bool isInlineCode;
|
|
42
|
-
bool isH1;
|
|
43
|
-
bool isH2;
|
|
44
|
-
bool isH3;
|
|
45
|
-
bool isCodeBlock;
|
|
46
|
-
bool isBlockQuote;
|
|
47
|
-
bool isOrderedList;
|
|
48
|
-
bool isUnorderedList;
|
|
49
|
-
bool isLink;
|
|
50
|
-
bool isImage;
|
|
51
|
-
bool isMention;
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
struct OnLinkDetected {
|
|
55
|
-
std::string text;
|
|
56
|
-
std::string url;
|
|
57
|
-
int start;
|
|
58
|
-
int end;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
struct OnMentionDetected {
|
|
62
|
-
std::string text;
|
|
63
|
-
std::string indicator;
|
|
64
|
-
std::string payload;
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
struct OnMention {
|
|
68
|
-
std::string indicator;
|
|
69
|
-
folly::dynamic text;
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
struct OnChangeSelection {
|
|
73
|
-
int start;
|
|
74
|
-
int end;
|
|
75
|
-
std::string text;
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
struct OnRequestHtmlResult {
|
|
79
|
-
int requestId;
|
|
80
|
-
folly::dynamic html;
|
|
81
|
-
};
|
|
82
|
-
void onInputFocus(OnInputFocus value) const;
|
|
83
|
-
|
|
84
|
-
void onInputBlur(OnInputBlur value) const;
|
|
85
|
-
|
|
86
|
-
void onChangeText(OnChangeText value) const;
|
|
87
|
-
|
|
88
|
-
void onChangeHtml(OnChangeHtml value) const;
|
|
89
|
-
|
|
90
|
-
void onChangeState(OnChangeState value) const;
|
|
91
|
-
|
|
92
|
-
void onLinkDetected(OnLinkDetected value) const;
|
|
93
|
-
|
|
94
|
-
void onMentionDetected(OnMentionDetected value) const;
|
|
95
|
-
|
|
96
|
-
void onMention(OnMention value) const;
|
|
97
|
-
|
|
98
|
-
void onChangeSelection(OnChangeSelection value) const;
|
|
99
|
-
|
|
100
|
-
void onRequestHtmlResult(OnRequestHtmlResult value) const;
|
|
101
|
-
};
|
|
102
|
-
} // namespace facebook::react
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.events
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.bridge.Arguments
|
|
4
|
-
import com.facebook.react.bridge.WritableMap
|
|
5
|
-
import com.facebook.react.uimanager.events.Event
|
|
6
|
-
|
|
7
|
-
class OnChangeHtmlEvent(surfaceId: Int, viewId: Int, private val html: String, private val experimentalSynchronousEvents: Boolean) :
|
|
8
|
-
Event<OnChangeHtmlEvent>(surfaceId, viewId) {
|
|
9
|
-
|
|
10
|
-
override fun getEventName(): String {
|
|
11
|
-
return EVENT_NAME
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
override fun getEventData(): WritableMap {
|
|
15
|
-
val eventData: WritableMap = Arguments.createMap()
|
|
16
|
-
eventData.putString("value", html)
|
|
17
|
-
|
|
18
|
-
return eventData
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
override fun experimental_isSynchronous(): Boolean {
|
|
22
|
-
return experimentalSynchronousEvents
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
companion object {
|
|
26
|
-
const val EVENT_NAME: String = "onChangeHtml"
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.events
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.bridge.WritableMap
|
|
4
|
-
import com.facebook.react.uimanager.events.Event
|
|
5
|
-
|
|
6
|
-
class OnChangeStateEvent(surfaceId: Int, viewId: Int, private val state: WritableMap, private val experimentalSynchronousEvents: Boolean) :
|
|
7
|
-
Event<OnChangeStateEvent>(surfaceId, viewId) {
|
|
8
|
-
|
|
9
|
-
override fun getEventName(): String {
|
|
10
|
-
return EVENT_NAME
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
override fun getEventData(): WritableMap {
|
|
14
|
-
return state
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
override fun experimental_isSynchronous(): Boolean {
|
|
18
|
-
return experimentalSynchronousEvents
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
companion object {
|
|
22
|
-
const val EVENT_NAME: String = "onChangeState"
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.events
|
|
2
|
-
|
|
3
|
-
import android.text.Editable
|
|
4
|
-
import com.facebook.react.bridge.Arguments
|
|
5
|
-
import com.facebook.react.bridge.WritableMap
|
|
6
|
-
import com.facebook.react.uimanager.events.Event
|
|
7
|
-
|
|
8
|
-
class OnChangeTextEvent(surfaceId: Int, viewId: Int, private val editable: Editable, private val experimentalSynchronousEvents: Boolean) :
|
|
9
|
-
Event<OnChangeTextEvent>(surfaceId, viewId) {
|
|
10
|
-
|
|
11
|
-
override fun getEventName(): String {
|
|
12
|
-
return EVENT_NAME
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
override fun getEventData(): WritableMap {
|
|
16
|
-
val eventData: WritableMap = Arguments.createMap()
|
|
17
|
-
val text = editable.toString()
|
|
18
|
-
val normalizedText = text.replace(Regex("\\u200B"), "")
|
|
19
|
-
eventData.putString("value", normalizedText)
|
|
20
|
-
return eventData
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
override fun experimental_isSynchronous(): Boolean {
|
|
24
|
-
return experimentalSynchronousEvents
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
companion object {
|
|
28
|
-
const val EVENT_NAME: String = "onChangeText"
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.events
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.bridge.Arguments
|
|
4
|
-
import com.facebook.react.bridge.WritableMap
|
|
5
|
-
import com.facebook.react.uimanager.events.Event
|
|
6
|
-
|
|
7
|
-
class OnInputBlurEvent(surfaceId: Int, viewId: Int, private val experimentalSynchronousEvents: Boolean) :
|
|
8
|
-
Event<OnInputBlurEvent>(surfaceId, viewId) {
|
|
9
|
-
|
|
10
|
-
override fun getEventName(): String {
|
|
11
|
-
return EVENT_NAME
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
override fun getEventData(): WritableMap {
|
|
15
|
-
val eventData: WritableMap = Arguments.createMap()
|
|
16
|
-
|
|
17
|
-
return eventData
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
override fun experimental_isSynchronous(): Boolean {
|
|
21
|
-
return experimentalSynchronousEvents
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
companion object {
|
|
25
|
-
const val EVENT_NAME: String = "onInputBlur"
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.events
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.bridge.Arguments
|
|
4
|
-
import com.facebook.react.bridge.WritableMap
|
|
5
|
-
import com.facebook.react.uimanager.events.Event
|
|
6
|
-
|
|
7
|
-
class OnInputFocusEvent(surfaceId: Int, viewId: Int, private val experimentalSynchronousEvents: Boolean) :
|
|
8
|
-
Event<OnInputFocusEvent>(surfaceId, viewId) {
|
|
9
|
-
|
|
10
|
-
override fun getEventName(): String {
|
|
11
|
-
return EVENT_NAME
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
override fun getEventData(): WritableMap {
|
|
15
|
-
val eventData: WritableMap = Arguments.createMap()
|
|
16
|
-
|
|
17
|
-
return eventData
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
override fun experimental_isSynchronous(): Boolean {
|
|
21
|
-
return experimentalSynchronousEvents
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
companion object {
|
|
25
|
-
const val EVENT_NAME: String = "onInputFocus"
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.events
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.bridge.Arguments
|
|
4
|
-
import com.facebook.react.bridge.WritableMap
|
|
5
|
-
import com.facebook.react.uimanager.events.Event
|
|
6
|
-
|
|
7
|
-
class OnLinkDetectedEvent(surfaceId: Int, viewId: Int, private val text: String, private val url: String, private val start: Int, private val end: Int, private val experimentalSynchronousEvents: Boolean) :
|
|
8
|
-
Event<OnLinkDetectedEvent>(surfaceId, viewId) {
|
|
9
|
-
|
|
10
|
-
override fun getEventName(): String {
|
|
11
|
-
return EVENT_NAME
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
override fun getEventData(): WritableMap {
|
|
15
|
-
val eventData: WritableMap = Arguments.createMap()
|
|
16
|
-
eventData.putString("text", text)
|
|
17
|
-
eventData.putString("url", url)
|
|
18
|
-
eventData.putInt("start", start);
|
|
19
|
-
eventData.putInt("end", end);
|
|
20
|
-
return eventData
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
override fun experimental_isSynchronous(): Boolean {
|
|
24
|
-
return experimentalSynchronousEvents
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
companion object {
|
|
28
|
-
const val EVENT_NAME: String = "onLinkDetected"
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.spans
|
|
2
|
-
|
|
3
|
-
import android.graphics.Canvas
|
|
4
|
-
import android.graphics.Paint
|
|
5
|
-
import android.text.Layout
|
|
6
|
-
import android.text.TextPaint
|
|
7
|
-
import android.text.style.LeadingMarginSpan
|
|
8
|
-
import android.text.style.MetricAffectingSpan
|
|
9
|
-
import com.swmansion.enriched.spans.interfaces.EnrichedBlockSpan
|
|
10
|
-
import com.swmansion.enriched.styles.HtmlStyle
|
|
11
|
-
|
|
12
|
-
// https://android.googlesource.com/platform/frameworks/base/+/refs/heads/main/core/java/android/text/style/QuoteSpan.java
|
|
13
|
-
class EnrichedBlockQuoteSpan(private val htmlStyle: HtmlStyle) : MetricAffectingSpan(), LeadingMarginSpan, EnrichedBlockSpan {
|
|
14
|
-
override val dependsOnHtmlStyle: Boolean = true
|
|
15
|
-
|
|
16
|
-
override fun updateMeasureState(p0: TextPaint) {
|
|
17
|
-
// Do nothing, but inform layout that this span affects text metrics
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
override fun getLeadingMargin(p0: Boolean): Int {
|
|
21
|
-
return htmlStyle.blockquoteStripeWidth + htmlStyle.blockquoteGapWidth
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
override fun drawLeadingMargin(c: Canvas, p: Paint, x: Int, dir: Int, top: Int, baseline: Int, bottom: Int, text: CharSequence?, start: Int, end: Int, first: Boolean, layout: Layout?) {
|
|
25
|
-
val style = p.style
|
|
26
|
-
val color = p.color
|
|
27
|
-
p.style = Paint.Style.FILL
|
|
28
|
-
p.color = htmlStyle.blockquoteBorderColor
|
|
29
|
-
c.drawRect(x.toFloat(), top.toFloat(), x + dir * htmlStyle.blockquoteStripeWidth.toFloat(), bottom.toFloat(), p)
|
|
30
|
-
p.style = style
|
|
31
|
-
p.color = color
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
override fun updateDrawState(textPaint: TextPaint?) {
|
|
35
|
-
val color = htmlStyle.blockquoteColor
|
|
36
|
-
if (color != null) {
|
|
37
|
-
textPaint?.color = color
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedBlockQuoteSpan {
|
|
42
|
-
return EnrichedBlockQuoteSpan(htmlStyle)
|
|
43
|
-
}
|
|
44
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.spans
|
|
2
|
-
|
|
3
|
-
import android.graphics.Typeface
|
|
4
|
-
import android.text.style.StyleSpan
|
|
5
|
-
import com.swmansion.enriched.spans.interfaces.EnrichedBlockSpan
|
|
6
|
-
import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
|
|
7
|
-
import com.swmansion.enriched.styles.HtmlStyle
|
|
8
|
-
|
|
9
|
-
@Suppress("UNUSED_PARAMETER")
|
|
10
|
-
class EnrichedBoldSpan(htmlStyle: HtmlStyle) : StyleSpan(Typeface.BOLD), EnrichedInlineSpan {
|
|
11
|
-
override val dependsOnHtmlStyle: Boolean = false
|
|
12
|
-
|
|
13
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedBoldSpan {
|
|
14
|
-
return EnrichedBoldSpan(htmlStyle)
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.spans
|
|
2
|
-
|
|
3
|
-
import android.graphics.Typeface
|
|
4
|
-
import android.text.TextPaint
|
|
5
|
-
import android.text.style.AbsoluteSizeSpan
|
|
6
|
-
import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
|
|
7
|
-
import com.swmansion.enriched.styles.HtmlStyle
|
|
8
|
-
|
|
9
|
-
class EnrichedH1Span(private val style: HtmlStyle) : AbsoluteSizeSpan(style.h1FontSize), EnrichedHeadingSpan {
|
|
10
|
-
override val dependsOnHtmlStyle: Boolean = true
|
|
11
|
-
|
|
12
|
-
override fun updateDrawState(tp: TextPaint) {
|
|
13
|
-
super.updateDrawState(tp)
|
|
14
|
-
val bold = style.h1Bold
|
|
15
|
-
if (bold) {
|
|
16
|
-
tp.typeface = Typeface.create(tp.typeface, Typeface.BOLD)
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH1Span {
|
|
21
|
-
return EnrichedH1Span(htmlStyle)
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.spans
|
|
2
|
-
|
|
3
|
-
import android.graphics.Typeface
|
|
4
|
-
import android.text.TextPaint
|
|
5
|
-
import android.text.style.AbsoluteSizeSpan
|
|
6
|
-
import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
|
|
7
|
-
import com.swmansion.enriched.styles.HtmlStyle
|
|
8
|
-
|
|
9
|
-
class EnrichedH2Span(private val htmlStyle: HtmlStyle) : AbsoluteSizeSpan(htmlStyle.h2FontSize), EnrichedHeadingSpan {
|
|
10
|
-
override val dependsOnHtmlStyle: Boolean = true
|
|
11
|
-
|
|
12
|
-
override fun updateDrawState(tp: TextPaint) {
|
|
13
|
-
super.updateDrawState(tp)
|
|
14
|
-
val bold = htmlStyle.h2Bold
|
|
15
|
-
if (bold) {
|
|
16
|
-
tp.typeface = Typeface.create(tp.typeface, Typeface.BOLD)
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH2Span {
|
|
21
|
-
return EnrichedH2Span(htmlStyle)
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.spans
|
|
2
|
-
|
|
3
|
-
import android.graphics.Typeface
|
|
4
|
-
import android.text.TextPaint
|
|
5
|
-
import android.text.style.AbsoluteSizeSpan
|
|
6
|
-
import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
|
|
7
|
-
import com.swmansion.enriched.styles.HtmlStyle
|
|
8
|
-
|
|
9
|
-
class EnrichedH3Span(private val htmlStyle: HtmlStyle) : AbsoluteSizeSpan(htmlStyle.h3FontSize), EnrichedHeadingSpan {
|
|
10
|
-
override val dependsOnHtmlStyle: Boolean = true
|
|
11
|
-
|
|
12
|
-
override fun updateDrawState(tp: TextPaint) {
|
|
13
|
-
super.updateDrawState(tp)
|
|
14
|
-
val bold = htmlStyle.h3Bold
|
|
15
|
-
if (bold) {
|
|
16
|
-
tp.typeface = Typeface.create(tp.typeface, Typeface.BOLD)
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH3Span {
|
|
21
|
-
return EnrichedH3Span(htmlStyle)
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.spans
|
|
2
|
-
|
|
3
|
-
import android.graphics.Typeface
|
|
4
|
-
import android.text.TextPaint
|
|
5
|
-
import android.text.style.MetricAffectingSpan
|
|
6
|
-
import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
|
|
7
|
-
import com.swmansion.enriched.styles.HtmlStyle
|
|
8
|
-
|
|
9
|
-
class EnrichedInlineCodeSpan(private val htmlStyle: HtmlStyle) : MetricAffectingSpan(), EnrichedInlineSpan {
|
|
10
|
-
override val dependsOnHtmlStyle: Boolean = true
|
|
11
|
-
|
|
12
|
-
override fun updateDrawState(textPaint: TextPaint) {
|
|
13
|
-
val typeface = Typeface.create(Typeface.MONOSPACE, Typeface.NORMAL)
|
|
14
|
-
textPaint.typeface = typeface
|
|
15
|
-
textPaint.color = htmlStyle.inlineCodeColor
|
|
16
|
-
textPaint.bgColor = htmlStyle.inlineCodeBackgroundColor
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
override fun updateMeasureState(textPaint: TextPaint) {
|
|
20
|
-
val typeface = Typeface.create(Typeface.MONOSPACE, Typeface.NORMAL)
|
|
21
|
-
textPaint.typeface = typeface
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedInlineCodeSpan {
|
|
25
|
-
return EnrichedInlineCodeSpan(htmlStyle)
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.spans
|
|
2
|
-
|
|
3
|
-
import android.graphics.Typeface
|
|
4
|
-
import android.text.style.StyleSpan
|
|
5
|
-
import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
|
|
6
|
-
import com.swmansion.enriched.styles.HtmlStyle
|
|
7
|
-
|
|
8
|
-
@Suppress("UNUSED_PARAMETER")
|
|
9
|
-
class EnrichedItalicSpan(private val htmlStyle: HtmlStyle) : StyleSpan(Typeface.ITALIC), EnrichedInlineSpan {
|
|
10
|
-
override val dependsOnHtmlStyle: Boolean = false
|
|
11
|
-
|
|
12
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedItalicSpan {
|
|
13
|
-
return EnrichedItalicSpan(htmlStyle)
|
|
14
|
-
}
|
|
15
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
package com.swmansion.enriched.spans
|
|
2
|
-
|
|
3
|
-
import android.text.TextPaint
|
|
4
|
-
import android.text.style.ClickableSpan
|
|
5
|
-
import android.view.View
|
|
6
|
-
import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
|
|
7
|
-
import com.swmansion.enriched.styles.HtmlStyle
|
|
8
|
-
|
|
9
|
-
class EnrichedLinkSpan(private val url: String, private val htmlStyle: HtmlStyle) : ClickableSpan(), EnrichedInlineSpan {
|
|
10
|
-
override val dependsOnHtmlStyle: Boolean = true
|
|
11
|
-
|
|
12
|
-
override fun onClick(view: View) {
|
|
13
|
-
// Do nothing, links inside the input are not clickable.
|
|
14
|
-
// We are using `ClickableSpan` to allow the text to be styled as a link.
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
override fun updateDrawState(textPaint: TextPaint) {
|
|
18
|
-
super.updateDrawState(textPaint)
|
|
19
|
-
textPaint.color = htmlStyle.aColor
|
|
20
|
-
textPaint.isUnderlineText = htmlStyle.aUnderline
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
fun getUrl(): String {
|
|
24
|
-
return url
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedLinkSpan {
|
|
28
|
-
return EnrichedLinkSpan(url, htmlStyle)
|
|
29
|
-
}
|
|
30
|
-
}
|