react-native-enriched 0.2.1 → 0.3.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 +15 -12
- package/android/build.gradle +77 -72
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerDelegate.java +18 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerInterface.java +6 -0
- package/android/generated/jni/react/renderer/components/RNEnrichedTextInputViewSpec/EventEmitters.cpp +146 -0
- package/android/generated/jni/react/renderer/components/RNEnrichedTextInputViewSpec/EventEmitters.h +140 -0
- package/android/generated/jni/react/renderer/components/RNEnrichedTextInputViewSpec/Props.cpp +10 -0
- package/android/generated/jni/react/renderer/components/RNEnrichedTextInputViewSpec/Props.h +194 -0
- package/android/lint.gradle +70 -0
- package/android/src/main/java/com/swmansion/enriched/EnrichedTextInputConnectionWrapper.kt +140 -0
- package/android/src/main/java/com/swmansion/enriched/EnrichedTextInputView.kt +245 -116
- package/android/src/main/java/com/swmansion/enriched/EnrichedTextInputViewLayoutManager.kt +3 -1
- package/android/src/main/java/com/swmansion/enriched/EnrichedTextInputViewManager.kt +162 -53
- package/android/src/main/java/com/swmansion/enriched/EnrichedTextInputViewPackage.kt +1 -3
- package/android/src/main/java/com/swmansion/enriched/MeasurementStore.kt +70 -21
- package/android/src/main/java/com/swmansion/enriched/events/MentionHandler.kt +20 -10
- package/android/src/main/java/com/swmansion/enriched/events/OnChangeHtmlEvent.kt +8 -9
- package/android/src/main/java/com/swmansion/enriched/events/OnChangeSelectionEvent.kt +10 -9
- package/android/src/main/java/com/swmansion/enriched/events/OnChangeStateDeprecatedEvent.kt +21 -0
- package/android/src/main/java/com/swmansion/enriched/events/OnChangeStateEvent.kt +9 -12
- package/android/src/main/java/com/swmansion/enriched/events/OnChangeTextEvent.kt +10 -10
- package/android/src/main/java/com/swmansion/enriched/events/OnInputBlurEvent.kt +7 -9
- package/android/src/main/java/com/swmansion/enriched/events/OnInputFocusEvent.kt +7 -9
- package/android/src/main/java/com/swmansion/enriched/events/OnInputKeyPressEvent.kt +27 -0
- package/android/src/main/java/com/swmansion/enriched/events/OnLinkDetectedEvent.kt +13 -11
- package/android/src/main/java/com/swmansion/enriched/events/OnMentionDetectedEvent.kt +10 -9
- package/android/src/main/java/com/swmansion/enriched/events/OnMentionEvent.kt +9 -8
- package/android/src/main/java/com/swmansion/enriched/events/OnRequestHtmlResultEvent.kt +1 -2
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedBlockQuoteSpan.kt +21 -8
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedBoldSpan.kt +5 -4
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedCodeBlockSpan.kt +7 -5
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH1Span.kt +5 -4
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH2Span.kt +5 -4
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH3Span.kt +5 -4
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH4Span.kt +24 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH5Span.kt +24 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedH6Span.kt +24 -0
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedImageSpan.kt +29 -17
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedInlineCodeSpan.kt +5 -4
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedItalicSpan.kt +5 -4
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedLinkSpan.kt +7 -7
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedMentionSpan.kt +11 -14
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedOrderedListSpan.kt +15 -14
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedSpans.kt +167 -71
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedStrikeThroughSpan.kt +5 -4
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedUnderlineSpan.kt +5 -4
- package/android/src/main/java/com/swmansion/enriched/spans/EnrichedUnorderedListSpan.kt +8 -8
- package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedBlockSpan.kt +3 -2
- package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedHeadingSpan.kt +1 -2
- package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedInlineSpan.kt +1 -2
- package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedParagraphSpan.kt +3 -2
- package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedSpan.kt +1 -0
- package/android/src/main/java/com/swmansion/enriched/spans/interfaces/EnrichedZeroWidthSpaceSpan.kt +1 -2
- package/android/src/main/java/com/swmansion/enriched/spans/utils/ForceRedrawSpan.kt +2 -1
- package/android/src/main/java/com/swmansion/enriched/styles/HtmlStyle.kt +78 -21
- package/android/src/main/java/com/swmansion/enriched/styles/InlineStyles.kt +25 -8
- package/android/src/main/java/com/swmansion/enriched/styles/ListStyles.kt +60 -20
- package/android/src/main/java/com/swmansion/enriched/styles/ParagraphStyles.kt +86 -26
- package/android/src/main/java/com/swmansion/enriched/styles/ParametrizedStyles.kt +128 -52
- package/android/src/main/java/com/swmansion/enriched/utils/AsyncDrawable.kt +10 -7
- package/android/src/main/java/com/swmansion/enriched/utils/EnrichedConstants.kt +11 -0
- package/android/src/main/java/com/swmansion/enriched/utils/EnrichedEditableFactory.kt +17 -0
- package/android/src/main/java/com/swmansion/enriched/utils/EnrichedParser.java +128 -87
- package/android/src/main/java/com/swmansion/enriched/utils/EnrichedSelection.kt +71 -42
- package/android/src/main/java/com/swmansion/enriched/utils/EnrichedSpanState.kt +183 -48
- package/android/src/main/java/com/swmansion/enriched/utils/EnrichedSpannable.kt +82 -0
- package/android/src/main/java/com/swmansion/enriched/utils/EnrichedSpannableStringBuilder.kt +15 -0
- package/android/src/main/java/com/swmansion/enriched/utils/Utils.kt +0 -70
- package/android/src/main/java/com/swmansion/enriched/watchers/EnrichedSpanWatcher.kt +46 -14
- package/android/src/main/java/com/swmansion/enriched/watchers/EnrichedTextWatcher.kt +34 -11
- package/android/src/main/new_arch/CMakeLists.txt +6 -0
- package/android/src/main/new_arch/react/renderer/components/RNEnrichedTextInputViewSpec/conversions.h +21 -1
- package/ios/EnrichedTextInputView.h +1 -1
- package/ios/EnrichedTextInputView.mm +381 -49
- package/ios/config/InputConfig.h +18 -0
- package/ios/config/InputConfig.mm +118 -8
- package/ios/generated/RNEnrichedTextInputViewSpec/EventEmitters.cpp +146 -0
- package/ios/generated/RNEnrichedTextInputViewSpec/EventEmitters.h +140 -0
- package/ios/generated/RNEnrichedTextInputViewSpec/Props.cpp +10 -0
- package/ios/generated/RNEnrichedTextInputViewSpec/Props.h +194 -0
- package/ios/generated/RNEnrichedTextInputViewSpec/RCTComponentViewHelpers.h +74 -0
- package/ios/inputParser/InputParser.mm +83 -10
- package/ios/{attachments → interfaces}/ImageAttachment.mm +3 -1
- 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 +10 -0
- package/ios/{utils → interfaces}/StyleTypeEnum.h +3 -0
- package/ios/styles/BlockQuoteStyle.mm +5 -5
- package/ios/styles/BoldStyle.mm +21 -6
- package/ios/styles/CodeBlockStyle.mm +5 -5
- package/ios/styles/H4Style.mm +17 -0
- package/ios/styles/H5Style.mm +17 -0
- package/ios/styles/H6Style.mm +17 -0
- package/ios/styles/HeadingStyleBase.mm +27 -10
- 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/ParagraphAttributesUtils.h +4 -0
- package/ios/utils/ParagraphAttributesUtils.mm +67 -0
- package/ios/utils/ParagraphsUtils.mm +4 -4
- package/lib/module/EnrichedTextInput.js +22 -1
- package/lib/module/EnrichedTextInput.js.map +1 -1
- package/lib/module/EnrichedTextInputNativeComponent.ts +138 -12
- package/lib/module/{normalizeHtmlStyle.js → utils/normalizeHtmlStyle.js} +12 -0
- package/lib/module/utils/normalizeHtmlStyle.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 +23 -14
- package/lib/typescript/src/EnrichedTextInput.d.ts.map +1 -1
- package/lib/typescript/src/EnrichedTextInputNativeComponent.d.ts +123 -12
- package/lib/typescript/src/EnrichedTextInputNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- 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/regexParser.d.ts +3 -0
- package/lib/typescript/src/utils/regexParser.d.ts.map +1 -0
- package/package.json +10 -6
- package/src/EnrichedTextInput.tsx +51 -13
- package/src/EnrichedTextInputNativeComponent.ts +138 -12
- package/src/index.tsx +2 -0
- package/src/{normalizeHtmlStyle.ts → utils/normalizeHtmlStyle.ts} +14 -2
- package/src/utils/regexParser.ts +56 -0
- package/lib/module/normalizeHtmlStyle.js.map +0 -1
- package/lib/typescript/src/normalizeHtmlStyle.d.ts +0 -4
- package/lib/typescript/src/normalizeHtmlStyle.d.ts.map +0 -1
- /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}/LayoutManagerExtension.mm +0 -0
- /package/ios/{utils → extensions}/StringExtension.h +0 -0
- /package/ios/{utils → extensions}/StringExtension.mm +0 -0
- /package/ios/{utils → interfaces}/BaseStyleProtocol.h +0 -0
- /package/ios/{attachments → interfaces}/ImageAttachment.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,21 @@
|
|
|
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 OnChangeStateDeprecatedEvent(
|
|
7
|
+
surfaceId: Int,
|
|
8
|
+
viewId: Int,
|
|
9
|
+
private val state: WritableMap,
|
|
10
|
+
private val experimentalSynchronousEvents: Boolean,
|
|
11
|
+
) : Event<OnChangeStateDeprecatedEvent>(surfaceId, viewId) {
|
|
12
|
+
override fun getEventName(): String = EVENT_NAME
|
|
13
|
+
|
|
14
|
+
override fun getEventData(): WritableMap = state
|
|
15
|
+
|
|
16
|
+
override fun experimental_isSynchronous(): Boolean = experimentalSynchronousEvents
|
|
17
|
+
|
|
18
|
+
companion object {
|
|
19
|
+
const val EVENT_NAME: String = "onChangeStateDeprecated"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -3,20 +3,17 @@ package com.swmansion.enriched.events
|
|
|
3
3
|
import com.facebook.react.bridge.WritableMap
|
|
4
4
|
import com.facebook.react.uimanager.events.Event
|
|
5
5
|
|
|
6
|
-
class OnChangeStateEvent(
|
|
7
|
-
|
|
6
|
+
class OnChangeStateEvent(
|
|
7
|
+
surfaceId: Int,
|
|
8
|
+
viewId: Int,
|
|
9
|
+
private val state: WritableMap,
|
|
10
|
+
private val experimentalSynchronousEvents: Boolean,
|
|
11
|
+
) : Event<OnChangeStateEvent>(surfaceId, viewId) {
|
|
12
|
+
override fun getEventName(): String = EVENT_NAME
|
|
8
13
|
|
|
9
|
-
override fun
|
|
10
|
-
return EVENT_NAME
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
override fun getEventData(): WritableMap {
|
|
14
|
-
return state
|
|
15
|
-
}
|
|
14
|
+
override fun getEventData(): WritableMap = state
|
|
16
15
|
|
|
17
|
-
override fun experimental_isSynchronous(): Boolean
|
|
18
|
-
return experimentalSynchronousEvents
|
|
19
|
-
}
|
|
16
|
+
override fun experimental_isSynchronous(): Boolean = experimentalSynchronousEvents
|
|
20
17
|
|
|
21
18
|
companion object {
|
|
22
19
|
const val EVENT_NAME: String = "onChangeState"
|
|
@@ -4,25 +4,25 @@ import android.text.Editable
|
|
|
4
4
|
import com.facebook.react.bridge.Arguments
|
|
5
5
|
import com.facebook.react.bridge.WritableMap
|
|
6
6
|
import com.facebook.react.uimanager.events.Event
|
|
7
|
+
import com.swmansion.enriched.utils.EnrichedConstants
|
|
7
8
|
|
|
8
|
-
class OnChangeTextEvent(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
class OnChangeTextEvent(
|
|
10
|
+
surfaceId: Int,
|
|
11
|
+
viewId: Int,
|
|
12
|
+
private val editable: Editable,
|
|
13
|
+
private val experimentalSynchronousEvents: Boolean,
|
|
14
|
+
) : Event<OnChangeTextEvent>(surfaceId, viewId) {
|
|
15
|
+
override fun getEventName(): String = EVENT_NAME
|
|
14
16
|
|
|
15
17
|
override fun getEventData(): WritableMap {
|
|
16
18
|
val eventData: WritableMap = Arguments.createMap()
|
|
17
19
|
val text = editable.toString()
|
|
18
|
-
val normalizedText = text.replace(Regex(
|
|
20
|
+
val normalizedText = text.replace(Regex(EnrichedConstants.ZWS_STRING), "")
|
|
19
21
|
eventData.putString("value", normalizedText)
|
|
20
22
|
return eventData
|
|
21
23
|
}
|
|
22
24
|
|
|
23
|
-
override fun experimental_isSynchronous(): Boolean
|
|
24
|
-
return experimentalSynchronousEvents
|
|
25
|
-
}
|
|
25
|
+
override fun experimental_isSynchronous(): Boolean = experimentalSynchronousEvents
|
|
26
26
|
|
|
27
27
|
companion object {
|
|
28
28
|
const val EVENT_NAME: String = "onChangeText"
|
|
@@ -4,12 +4,12 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class OnInputBlurEvent(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
class OnInputBlurEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
private val experimentalSynchronousEvents: Boolean,
|
|
11
|
+
) : Event<OnInputBlurEvent>(surfaceId, viewId) {
|
|
12
|
+
override fun getEventName(): String = EVENT_NAME
|
|
13
13
|
|
|
14
14
|
override fun getEventData(): WritableMap {
|
|
15
15
|
val eventData: WritableMap = Arguments.createMap()
|
|
@@ -17,9 +17,7 @@ class OnInputBlurEvent(surfaceId: Int, viewId: Int, private val experimentalSync
|
|
|
17
17
|
return eventData
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
override fun experimental_isSynchronous(): Boolean
|
|
21
|
-
return experimentalSynchronousEvents
|
|
22
|
-
}
|
|
20
|
+
override fun experimental_isSynchronous(): Boolean = experimentalSynchronousEvents
|
|
23
21
|
|
|
24
22
|
companion object {
|
|
25
23
|
const val EVENT_NAME: String = "onInputBlur"
|
|
@@ -4,12 +4,12 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class OnInputFocusEvent(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
class OnInputFocusEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
private val experimentalSynchronousEvents: Boolean,
|
|
11
|
+
) : Event<OnInputFocusEvent>(surfaceId, viewId) {
|
|
12
|
+
override fun getEventName(): String = EVENT_NAME
|
|
13
13
|
|
|
14
14
|
override fun getEventData(): WritableMap {
|
|
15
15
|
val eventData: WritableMap = Arguments.createMap()
|
|
@@ -17,9 +17,7 @@ class OnInputFocusEvent(surfaceId: Int, viewId: Int, private val experimentalSyn
|
|
|
17
17
|
return eventData
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
override fun experimental_isSynchronous(): Boolean
|
|
21
|
-
return experimentalSynchronousEvents
|
|
22
|
-
}
|
|
20
|
+
override fun experimental_isSynchronous(): Boolean = experimentalSynchronousEvents
|
|
23
21
|
|
|
24
22
|
companion object {
|
|
25
23
|
const val EVENT_NAME: String = "onInputFocus"
|
|
@@ -0,0 +1,27 @@
|
|
|
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 OnInputKeyPressEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
private val key: String,
|
|
11
|
+
private val experimentalSynchronousEvents: Boolean,
|
|
12
|
+
) : Event<OnInputKeyPressEvent>(surfaceId, viewId) {
|
|
13
|
+
override fun getEventName(): String = EVENT_NAME
|
|
14
|
+
|
|
15
|
+
override fun getEventData(): WritableMap {
|
|
16
|
+
val eventData: WritableMap = Arguments.createMap()
|
|
17
|
+
eventData.putString("key", key)
|
|
18
|
+
|
|
19
|
+
return eventData
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
override fun experimental_isSynchronous(): Boolean = experimentalSynchronousEvents
|
|
23
|
+
|
|
24
|
+
companion object {
|
|
25
|
+
const val EVENT_NAME: String = "onInputKeyPress"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -4,25 +4,27 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class OnLinkDetectedEvent(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
class OnLinkDetectedEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
private val text: String,
|
|
11
|
+
private val url: String,
|
|
12
|
+
private val start: Int,
|
|
13
|
+
private val end: Int,
|
|
14
|
+
private val experimentalSynchronousEvents: Boolean,
|
|
15
|
+
) : Event<OnLinkDetectedEvent>(surfaceId, viewId) {
|
|
16
|
+
override fun getEventName(): String = EVENT_NAME
|
|
13
17
|
|
|
14
18
|
override fun getEventData(): WritableMap {
|
|
15
19
|
val eventData: WritableMap = Arguments.createMap()
|
|
16
20
|
eventData.putString("text", text)
|
|
17
21
|
eventData.putString("url", url)
|
|
18
|
-
eventData.putInt("start", start)
|
|
19
|
-
eventData.putInt("end", end)
|
|
22
|
+
eventData.putInt("start", start)
|
|
23
|
+
eventData.putInt("end", end)
|
|
20
24
|
return eventData
|
|
21
25
|
}
|
|
22
26
|
|
|
23
|
-
override fun experimental_isSynchronous(): Boolean
|
|
24
|
-
return experimentalSynchronousEvents
|
|
25
|
-
}
|
|
27
|
+
override fun experimental_isSynchronous(): Boolean = experimentalSynchronousEvents
|
|
26
28
|
|
|
27
29
|
companion object {
|
|
28
30
|
const val EVENT_NAME: String = "onLinkDetected"
|
|
@@ -4,12 +4,15 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class OnMentionDetectedEvent(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
class OnMentionDetectedEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
private val text: String,
|
|
11
|
+
private val indicator: String,
|
|
12
|
+
private val payload: String,
|
|
13
|
+
private val experimentalSynchronousEvents: Boolean,
|
|
14
|
+
) : Event<OnMentionDetectedEvent>(surfaceId, viewId) {
|
|
15
|
+
override fun getEventName(): String = EVENT_NAME
|
|
13
16
|
|
|
14
17
|
override fun getEventData(): WritableMap {
|
|
15
18
|
val eventData: WritableMap = Arguments.createMap()
|
|
@@ -19,9 +22,7 @@ class OnMentionDetectedEvent(surfaceId: Int, viewId: Int, private val text: Stri
|
|
|
19
22
|
return eventData
|
|
20
23
|
}
|
|
21
24
|
|
|
22
|
-
override fun experimental_isSynchronous(): Boolean
|
|
23
|
-
return experimentalSynchronousEvents
|
|
24
|
-
}
|
|
25
|
+
override fun experimental_isSynchronous(): Boolean = experimentalSynchronousEvents
|
|
25
26
|
|
|
26
27
|
companion object {
|
|
27
28
|
const val EVENT_NAME: String = "onMentionDetected"
|
|
@@ -4,11 +4,14 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class OnMentionEvent(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
class OnMentionEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
private val indicator: String,
|
|
11
|
+
private val text: String?,
|
|
12
|
+
private val experimentalSynchronousEvents: Boolean,
|
|
13
|
+
) : Event<OnMentionEvent>(surfaceId, viewId) {
|
|
14
|
+
override fun getEventName(): String = EVENT_NAME
|
|
12
15
|
|
|
13
16
|
override fun getEventData(): WritableMap? {
|
|
14
17
|
val eventData: WritableMap = Arguments.createMap()
|
|
@@ -23,9 +26,7 @@ class OnMentionEvent(surfaceId: Int, viewId: Int, private val indicator: String,
|
|
|
23
26
|
return eventData
|
|
24
27
|
}
|
|
25
28
|
|
|
26
|
-
override fun experimental_isSynchronous(): Boolean
|
|
27
|
-
return experimentalSynchronousEvents
|
|
28
|
-
}
|
|
29
|
+
override fun experimental_isSynchronous(): Boolean = experimentalSynchronousEvents
|
|
29
30
|
|
|
30
31
|
companion object {
|
|
31
32
|
const val EVENT_NAME: String = "onMention"
|
|
@@ -9,9 +9,8 @@ class OnRequestHtmlResultEvent(
|
|
|
9
9
|
viewId: Int,
|
|
10
10
|
private val requestId: Int,
|
|
11
11
|
private val html: String?,
|
|
12
|
-
private val experimentalSynchronousEvents: Boolean
|
|
12
|
+
private val experimentalSynchronousEvents: Boolean,
|
|
13
13
|
) : Event<OnRequestHtmlResultEvent>(surfaceId, viewId) {
|
|
14
|
-
|
|
15
14
|
override fun getEventName(): String = EVENT_NAME
|
|
16
15
|
|
|
17
16
|
override fun getEventData(): WritableMap {
|
|
@@ -10,18 +10,33 @@ import com.swmansion.enriched.spans.interfaces.EnrichedBlockSpan
|
|
|
10
10
|
import com.swmansion.enriched.styles.HtmlStyle
|
|
11
11
|
|
|
12
12
|
// https://android.googlesource.com/platform/frameworks/base/+/refs/heads/main/core/java/android/text/style/QuoteSpan.java
|
|
13
|
-
class EnrichedBlockQuoteSpan(
|
|
13
|
+
class EnrichedBlockQuoteSpan(
|
|
14
|
+
private val htmlStyle: HtmlStyle,
|
|
15
|
+
) : MetricAffectingSpan(),
|
|
16
|
+
LeadingMarginSpan,
|
|
17
|
+
EnrichedBlockSpan {
|
|
14
18
|
override val dependsOnHtmlStyle: Boolean = true
|
|
15
19
|
|
|
16
20
|
override fun updateMeasureState(p0: TextPaint) {
|
|
17
21
|
// Do nothing, but inform layout that this span affects text metrics
|
|
18
22
|
}
|
|
19
23
|
|
|
20
|
-
override fun getLeadingMargin(p0: Boolean): Int
|
|
21
|
-
return htmlStyle.blockquoteStripeWidth + htmlStyle.blockquoteGapWidth
|
|
22
|
-
}
|
|
24
|
+
override fun getLeadingMargin(p0: Boolean): Int = htmlStyle.blockquoteStripeWidth + htmlStyle.blockquoteGapWidth
|
|
23
25
|
|
|
24
|
-
override fun drawLeadingMargin(
|
|
26
|
+
override fun drawLeadingMargin(
|
|
27
|
+
c: Canvas,
|
|
28
|
+
p: Paint,
|
|
29
|
+
x: Int,
|
|
30
|
+
dir: Int,
|
|
31
|
+
top: Int,
|
|
32
|
+
baseline: Int,
|
|
33
|
+
bottom: Int,
|
|
34
|
+
text: CharSequence?,
|
|
35
|
+
start: Int,
|
|
36
|
+
end: Int,
|
|
37
|
+
first: Boolean,
|
|
38
|
+
layout: Layout?,
|
|
39
|
+
) {
|
|
25
40
|
val style = p.style
|
|
26
41
|
val color = p.color
|
|
27
42
|
p.style = Paint.Style.FILL
|
|
@@ -38,7 +53,5 @@ class EnrichedBlockQuoteSpan(private val htmlStyle: HtmlStyle) : MetricAffecting
|
|
|
38
53
|
}
|
|
39
54
|
}
|
|
40
55
|
|
|
41
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedBlockQuoteSpan
|
|
42
|
-
return EnrichedBlockQuoteSpan(htmlStyle)
|
|
43
|
-
}
|
|
56
|
+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedBlockQuoteSpan = EnrichedBlockQuoteSpan(htmlStyle)
|
|
44
57
|
}
|
|
@@ -7,10 +7,11 @@ import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
|
|
|
7
7
|
import com.swmansion.enriched.styles.HtmlStyle
|
|
8
8
|
|
|
9
9
|
@Suppress("UNUSED_PARAMETER")
|
|
10
|
-
class EnrichedBoldSpan(
|
|
10
|
+
class EnrichedBoldSpan(
|
|
11
|
+
htmlStyle: HtmlStyle,
|
|
12
|
+
) : StyleSpan(Typeface.BOLD),
|
|
13
|
+
EnrichedInlineSpan {
|
|
11
14
|
override val dependsOnHtmlStyle: Boolean = false
|
|
12
15
|
|
|
13
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedBoldSpan
|
|
14
|
-
return EnrichedBoldSpan(htmlStyle)
|
|
15
|
-
}
|
|
16
|
+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedBoldSpan = EnrichedBoldSpan(htmlStyle)
|
|
16
17
|
}
|
|
@@ -12,7 +12,11 @@ import android.text.style.MetricAffectingSpan
|
|
|
12
12
|
import com.swmansion.enriched.spans.interfaces.EnrichedBlockSpan
|
|
13
13
|
import com.swmansion.enriched.styles.HtmlStyle
|
|
14
14
|
|
|
15
|
-
class EnrichedCodeBlockSpan(
|
|
15
|
+
class EnrichedCodeBlockSpan(
|
|
16
|
+
private val htmlStyle: HtmlStyle,
|
|
17
|
+
) : MetricAffectingSpan(),
|
|
18
|
+
LineBackgroundSpan,
|
|
19
|
+
EnrichedBlockSpan {
|
|
16
20
|
override val dependsOnHtmlStyle: Boolean = true
|
|
17
21
|
|
|
18
22
|
override fun updateDrawState(paint: TextPaint) {
|
|
@@ -35,7 +39,7 @@ class EnrichedCodeBlockSpan(private val htmlStyle: HtmlStyle) : MetricAffectingS
|
|
|
35
39
|
text: CharSequence,
|
|
36
40
|
start: Int,
|
|
37
41
|
end: Int,
|
|
38
|
-
lineNum: Int
|
|
42
|
+
lineNum: Int,
|
|
39
43
|
) {
|
|
40
44
|
if (text !is Spanned) {
|
|
41
45
|
return
|
|
@@ -77,7 +81,5 @@ class EnrichedCodeBlockSpan(private val htmlStyle: HtmlStyle) : MetricAffectingS
|
|
|
77
81
|
p.color = previousColor
|
|
78
82
|
}
|
|
79
83
|
|
|
80
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedCodeBlockSpan
|
|
81
|
-
return EnrichedCodeBlockSpan(htmlStyle)
|
|
82
|
-
}
|
|
84
|
+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedCodeBlockSpan = EnrichedCodeBlockSpan(htmlStyle)
|
|
83
85
|
}
|
|
@@ -6,7 +6,10 @@ import android.text.style.AbsoluteSizeSpan
|
|
|
6
6
|
import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
|
|
7
7
|
import com.swmansion.enriched.styles.HtmlStyle
|
|
8
8
|
|
|
9
|
-
class EnrichedH1Span(
|
|
9
|
+
class EnrichedH1Span(
|
|
10
|
+
private val style: HtmlStyle,
|
|
11
|
+
) : AbsoluteSizeSpan(style.h1FontSize),
|
|
12
|
+
EnrichedHeadingSpan {
|
|
10
13
|
override val dependsOnHtmlStyle: Boolean = true
|
|
11
14
|
|
|
12
15
|
override fun updateDrawState(tp: TextPaint) {
|
|
@@ -17,7 +20,5 @@ class EnrichedH1Span(private val style: HtmlStyle) : AbsoluteSizeSpan(style.h1Fo
|
|
|
17
20
|
}
|
|
18
21
|
}
|
|
19
22
|
|
|
20
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH1Span
|
|
21
|
-
return EnrichedH1Span(htmlStyle)
|
|
22
|
-
}
|
|
23
|
+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH1Span = EnrichedH1Span(htmlStyle)
|
|
23
24
|
}
|
|
@@ -6,7 +6,10 @@ import android.text.style.AbsoluteSizeSpan
|
|
|
6
6
|
import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
|
|
7
7
|
import com.swmansion.enriched.styles.HtmlStyle
|
|
8
8
|
|
|
9
|
-
class EnrichedH2Span(
|
|
9
|
+
class EnrichedH2Span(
|
|
10
|
+
private val htmlStyle: HtmlStyle,
|
|
11
|
+
) : AbsoluteSizeSpan(htmlStyle.h2FontSize),
|
|
12
|
+
EnrichedHeadingSpan {
|
|
10
13
|
override val dependsOnHtmlStyle: Boolean = true
|
|
11
14
|
|
|
12
15
|
override fun updateDrawState(tp: TextPaint) {
|
|
@@ -17,7 +20,5 @@ class EnrichedH2Span(private val htmlStyle: HtmlStyle) : AbsoluteSizeSpan(htmlSt
|
|
|
17
20
|
}
|
|
18
21
|
}
|
|
19
22
|
|
|
20
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH2Span
|
|
21
|
-
return EnrichedH2Span(htmlStyle)
|
|
22
|
-
}
|
|
23
|
+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH2Span = EnrichedH2Span(htmlStyle)
|
|
23
24
|
}
|
|
@@ -6,7 +6,10 @@ import android.text.style.AbsoluteSizeSpan
|
|
|
6
6
|
import com.swmansion.enriched.spans.interfaces.EnrichedHeadingSpan
|
|
7
7
|
import com.swmansion.enriched.styles.HtmlStyle
|
|
8
8
|
|
|
9
|
-
class EnrichedH3Span(
|
|
9
|
+
class EnrichedH3Span(
|
|
10
|
+
private val htmlStyle: HtmlStyle,
|
|
11
|
+
) : AbsoluteSizeSpan(htmlStyle.h3FontSize),
|
|
12
|
+
EnrichedHeadingSpan {
|
|
10
13
|
override val dependsOnHtmlStyle: Boolean = true
|
|
11
14
|
|
|
12
15
|
override fun updateDrawState(tp: TextPaint) {
|
|
@@ -17,7 +20,5 @@ class EnrichedH3Span(private val htmlStyle: HtmlStyle) : AbsoluteSizeSpan(htmlSt
|
|
|
17
20
|
}
|
|
18
21
|
}
|
|
19
22
|
|
|
20
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH3Span
|
|
21
|
-
return EnrichedH3Span(htmlStyle)
|
|
22
|
-
}
|
|
23
|
+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH3Span = EnrichedH3Span(htmlStyle)
|
|
23
24
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
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 EnrichedH4Span(
|
|
10
|
+
private val htmlStyle: HtmlStyle,
|
|
11
|
+
) : AbsoluteSizeSpan(htmlStyle.h4FontSize),
|
|
12
|
+
EnrichedHeadingSpan {
|
|
13
|
+
override val dependsOnHtmlStyle: Boolean = true
|
|
14
|
+
|
|
15
|
+
override fun updateDrawState(tp: TextPaint) {
|
|
16
|
+
super.updateDrawState(tp)
|
|
17
|
+
val bold = htmlStyle.h4Bold
|
|
18
|
+
if (bold) {
|
|
19
|
+
tp.typeface = Typeface.create(tp.typeface, Typeface.BOLD)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH4Span = EnrichedH4Span(htmlStyle)
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
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 EnrichedH5Span(
|
|
10
|
+
private val htmlStyle: HtmlStyle,
|
|
11
|
+
) : AbsoluteSizeSpan(htmlStyle.h5FontSize),
|
|
12
|
+
EnrichedHeadingSpan {
|
|
13
|
+
override val dependsOnHtmlStyle: Boolean = true
|
|
14
|
+
|
|
15
|
+
override fun updateDrawState(tp: TextPaint) {
|
|
16
|
+
super.updateDrawState(tp)
|
|
17
|
+
val bold = htmlStyle.h5Bold
|
|
18
|
+
if (bold) {
|
|
19
|
+
tp.typeface = Typeface.create(tp.typeface, Typeface.BOLD)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH5Span = EnrichedH5Span(htmlStyle)
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
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 EnrichedH6Span(
|
|
10
|
+
private val htmlStyle: HtmlStyle,
|
|
11
|
+
) : AbsoluteSizeSpan(htmlStyle.h6FontSize),
|
|
12
|
+
EnrichedHeadingSpan {
|
|
13
|
+
override val dependsOnHtmlStyle: Boolean = true
|
|
14
|
+
|
|
15
|
+
override fun updateDrawState(tp: TextPaint) {
|
|
16
|
+
super.updateDrawState(tp)
|
|
17
|
+
val bold = htmlStyle.h6Bold
|
|
18
|
+
if (bold) {
|
|
19
|
+
tp.typeface = Typeface.create(tp.typeface, Typeface.BOLD)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedH6Span = EnrichedH6Span(htmlStyle)
|
|
24
|
+
}
|
|
@@ -12,16 +12,18 @@ import android.text.Spannable
|
|
|
12
12
|
import android.text.style.ImageSpan
|
|
13
13
|
import android.util.Log
|
|
14
14
|
import androidx.core.graphics.drawable.DrawableCompat
|
|
15
|
-
import androidx.core.graphics.withSave
|
|
16
|
-
import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
|
|
17
|
-
import com.swmansion.enriched.utils.AsyncDrawable
|
|
18
15
|
import androidx.core.graphics.drawable.toDrawable
|
|
16
|
+
import androidx.core.graphics.withSave
|
|
19
17
|
import com.swmansion.enriched.R
|
|
18
|
+
import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
|
|
20
19
|
import com.swmansion.enriched.spans.utils.ForceRedrawSpan
|
|
21
20
|
import com.swmansion.enriched.styles.HtmlStyle
|
|
21
|
+
import com.swmansion.enriched.utils.AsyncDrawable
|
|
22
22
|
import com.swmansion.enriched.utils.ResourceManager
|
|
23
23
|
|
|
24
|
-
class EnrichedImageSpan :
|
|
24
|
+
class EnrichedImageSpan :
|
|
25
|
+
ImageSpan,
|
|
26
|
+
EnrichedInlineSpan {
|
|
25
27
|
override val dependsOnHtmlStyle: Boolean = false
|
|
26
28
|
|
|
27
29
|
private var width: Int = 0
|
|
@@ -33,11 +35,18 @@ class EnrichedImageSpan : ImageSpan, EnrichedInlineSpan {
|
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
override fun draw(
|
|
36
|
-
canvas: Canvas,
|
|
37
|
-
|
|
38
|
+
canvas: Canvas,
|
|
39
|
+
text: CharSequence?,
|
|
40
|
+
start: Int,
|
|
41
|
+
end: Int,
|
|
42
|
+
x: Float,
|
|
43
|
+
top: Int,
|
|
44
|
+
y: Int,
|
|
45
|
+
bottom: Int,
|
|
46
|
+
paint: Paint,
|
|
38
47
|
) {
|
|
39
48
|
val drawable = drawable
|
|
40
|
-
canvas.withSave
|
|
49
|
+
canvas.withSave {
|
|
41
50
|
val transY = bottom - drawable.bounds.bottom - paint.fontMetricsInt.descent
|
|
42
51
|
translate(x, transY.toFloat())
|
|
43
52
|
drawable.draw(this)
|
|
@@ -48,7 +57,7 @@ class EnrichedImageSpan : ImageSpan, EnrichedInlineSpan {
|
|
|
48
57
|
val drawable = super.getDrawable()
|
|
49
58
|
val scale = Resources.getSystem().displayMetrics.density
|
|
50
59
|
|
|
51
|
-
drawable.setBounds(0, 0, (width * scale).toInt()
|
|
60
|
+
drawable.setBounds(0, 0, (width * scale).toInt(), (height * scale).toInt())
|
|
52
61
|
return drawable
|
|
53
62
|
}
|
|
54
63
|
|
|
@@ -57,7 +66,7 @@ class EnrichedImageSpan : ImageSpan, EnrichedInlineSpan {
|
|
|
57
66
|
text: CharSequence?,
|
|
58
67
|
start: Int,
|
|
59
68
|
end: Int,
|
|
60
|
-
fm: Paint.FontMetricsInt
|
|
69
|
+
fm: Paint.FontMetricsInt?,
|
|
61
70
|
): Int {
|
|
62
71
|
val d = drawable
|
|
63
72
|
val rect = d.bounds
|
|
@@ -79,7 +88,10 @@ class EnrichedImageSpan : ImageSpan, EnrichedInlineSpan {
|
|
|
79
88
|
return rect.right
|
|
80
89
|
}
|
|
81
90
|
|
|
82
|
-
private fun registerDrawableLoadCallback
|
|
91
|
+
private fun registerDrawableLoadCallback(
|
|
92
|
+
d: AsyncDrawable,
|
|
93
|
+
text: Editable?,
|
|
94
|
+
) {
|
|
83
95
|
d.onLoaded = onLoaded@{
|
|
84
96
|
val spannable = text as? Spannable
|
|
85
97
|
|
|
@@ -114,18 +126,18 @@ class EnrichedImageSpan : ImageSpan, EnrichedInlineSpan {
|
|
|
114
126
|
}
|
|
115
127
|
}
|
|
116
128
|
|
|
117
|
-
fun getWidth(): Int
|
|
118
|
-
return width
|
|
119
|
-
}
|
|
129
|
+
fun getWidth(): Int = width
|
|
120
130
|
|
|
121
|
-
fun getHeight(): Int
|
|
122
|
-
return height
|
|
123
|
-
}
|
|
131
|
+
fun getHeight(): Int = height
|
|
124
132
|
|
|
125
133
|
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedImageSpan = this
|
|
126
134
|
|
|
127
135
|
companion object {
|
|
128
|
-
fun createEnrichedImageSpan(
|
|
136
|
+
fun createEnrichedImageSpan(
|
|
137
|
+
src: String,
|
|
138
|
+
width: Int,
|
|
139
|
+
height: Int,
|
|
140
|
+
): EnrichedImageSpan {
|
|
129
141
|
var imgDrawable = prepareDrawableForImage(src)
|
|
130
142
|
|
|
131
143
|
if (imgDrawable == null) {
|
|
@@ -6,7 +6,10 @@ import android.text.style.MetricAffectingSpan
|
|
|
6
6
|
import com.swmansion.enriched.spans.interfaces.EnrichedInlineSpan
|
|
7
7
|
import com.swmansion.enriched.styles.HtmlStyle
|
|
8
8
|
|
|
9
|
-
class EnrichedInlineCodeSpan(
|
|
9
|
+
class EnrichedInlineCodeSpan(
|
|
10
|
+
private val htmlStyle: HtmlStyle,
|
|
11
|
+
) : MetricAffectingSpan(),
|
|
12
|
+
EnrichedInlineSpan {
|
|
10
13
|
override val dependsOnHtmlStyle: Boolean = true
|
|
11
14
|
|
|
12
15
|
override fun updateDrawState(textPaint: TextPaint) {
|
|
@@ -21,7 +24,5 @@ class EnrichedInlineCodeSpan(private val htmlStyle: HtmlStyle) : MetricAffecting
|
|
|
21
24
|
textPaint.typeface = typeface
|
|
22
25
|
}
|
|
23
26
|
|
|
24
|
-
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedInlineCodeSpan
|
|
25
|
-
return EnrichedInlineCodeSpan(htmlStyle)
|
|
26
|
-
}
|
|
27
|
+
override fun rebuildWithStyle(htmlStyle: HtmlStyle): EnrichedInlineCodeSpan = EnrichedInlineCodeSpan(htmlStyle)
|
|
27
28
|
}
|