@chaitrabhairappa/react-native-rich-text-editor 3.3.0 → 3.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.
@@ -11,6 +11,11 @@ import kotlin.math.ceil
11
11
  data class MediaAttachmentData(
12
12
  val kind: String,
13
13
  val uri: String,
14
+ val sourceUri: String? = null,
15
+ val fileName: String? = null,
16
+ val extension: String? = null,
17
+ val contentType: String? = null,
18
+ val fileSize: Long? = null,
14
19
  val widthDp: Int,
15
20
  val heightDp: Int,
16
21
  val alt: String
@@ -4,9 +4,11 @@ import android.content.Context
4
4
  import android.graphics.Bitmap
5
5
  import android.graphics.BitmapFactory
6
6
  import android.net.Uri
7
+ import android.provider.OpenableColumns
7
8
  import android.text.Editable
8
9
  import android.text.SpannableStringBuilder
9
10
  import android.text.Spanned
11
+ import android.webkit.MimeTypeMap
10
12
  import com.facebook.react.bridge.Arguments
11
13
  import com.facebook.react.bridge.WritableMap
12
14
  import org.json.JSONObject
@@ -32,9 +34,16 @@ class MediaAttachmentSupport(
32
34
  if (blockType != "mediaAttachment") return null
33
35
 
34
36
  val mediaInfo = block["mediaAttachment"] as? Map<*, *>
37
+ val uri = mediaInfo?.get("uri") as? String ?: ""
38
+ val sourceUri = mediaInfo?.get("sourceUri") as? String ?: uri
35
39
  return MediaAttachmentData(
36
40
  kind = mediaInfo?.get("kind") as? String ?: "image",
37
- uri = mediaInfo?.get("uri") as? String ?: "",
41
+ uri = uri,
42
+ sourceUri = sourceUri,
43
+ fileName = mediaInfo?.get("fileName") as? String,
44
+ extension = mediaInfo?.get("extension") as? String,
45
+ contentType = mediaInfo?.get("contentType") as? String,
46
+ fileSize = (mediaInfo?.get("fileSize") as? Number)?.toLong(),
38
47
  widthDp = (mediaInfo?.get("width") as? Number)?.toInt() ?: 100,
39
48
  heightDp = (mediaInfo?.get("height") as? Number)?.toInt() ?: 100,
40
49
  alt = mediaInfo?.get("alt") as? String ?: ""
@@ -76,6 +85,11 @@ class MediaAttachmentSupport(
76
85
  val mediaMap = Arguments.createMap()
77
86
  mediaMap.putString("kind", mediaData.kind)
78
87
  mediaMap.putString("uri", mediaData.uri)
88
+ mediaMap.putString("sourceUri", mediaData.sourceUri ?: mediaData.uri)
89
+ mediaData.fileName?.let { mediaMap.putString("fileName", it) }
90
+ mediaData.extension?.let { mediaMap.putString("extension", it) }
91
+ mediaData.contentType?.let { mediaMap.putString("contentType", it) }
92
+ mediaData.fileSize?.let { mediaMap.putDouble("fileSize", it.toDouble()) }
79
93
  mediaMap.putInt("width", mediaData.widthDp)
80
94
  mediaMap.putInt("height", mediaData.heightDp)
81
95
  mediaMap.putString("alt", mediaData.alt)
@@ -93,6 +107,11 @@ class MediaAttachmentSupport(
93
107
  val mediaObj = JSONObject()
94
108
  mediaObj.put("kind", mediaData.kind)
95
109
  mediaObj.put("uri", mediaData.uri)
110
+ mediaObj.put("sourceUri", mediaData.sourceUri ?: mediaData.uri)
111
+ mediaData.fileName?.let { mediaObj.put("fileName", it) }
112
+ mediaData.extension?.let { mediaObj.put("extension", it) }
113
+ mediaData.contentType?.let { mediaObj.put("contentType", it) }
114
+ mediaData.fileSize?.let { mediaObj.put("fileSize", it) }
96
115
  mediaObj.put("width", mediaData.widthDp)
97
116
  mediaObj.put("height", mediaData.heightDp)
98
117
  mediaObj.put("alt", mediaData.alt)
@@ -127,14 +146,12 @@ class MediaAttachmentSupport(
127
146
  }
128
147
 
129
148
  fun insertMediaAttachmentBlock(editable: Editable, insertPos: Int, uri: String): Int {
149
+ val mediaData = createMediaDataForUri(uri)
150
+ return insertMediaAttachmentBlock(editable, insertPos, mediaData)
151
+ }
152
+
153
+ fun insertMediaAttachmentBlock(editable: Editable, insertPos: Int, mediaData: MediaAttachmentData): Int {
130
154
  var mutableInsertPos = insertPos.coerceIn(0, editable.length)
131
- val mediaData = MediaAttachmentData(
132
- kind = "image",
133
- uri = uri,
134
- widthDp = 100,
135
- heightDp = 100,
136
- alt = "Selected image"
137
- )
138
155
 
139
156
  if (mutableInsertPos > 0 && editable[mutableInsertPos - 1] != '\n') {
140
157
  editable.insert(mutableInsertPos, "\n")
@@ -160,6 +177,75 @@ class MediaAttachmentSupport(
160
177
  return nextPos.coerceAtMost(editable.length)
161
178
  }
162
179
 
180
+ fun createMediaDataForUri(uri: String): MediaAttachmentData {
181
+ val inferredMeta = inferMediaMetadata(uri)
182
+ return MediaAttachmentData(
183
+ kind = "image",
184
+ uri = uri,
185
+ sourceUri = uri,
186
+ fileName = inferredMeta.fileName,
187
+ extension = inferredMeta.extension,
188
+ contentType = inferredMeta.contentType,
189
+ fileSize = inferredMeta.fileSize,
190
+ widthDp = 100,
191
+ heightDp = 100,
192
+ alt = "Selected image"
193
+ )
194
+ }
195
+
196
+ private data class InferredMediaMetadata(
197
+ val fileName: String?,
198
+ val extension: String?,
199
+ val contentType: String?,
200
+ val fileSize: Long?
201
+ )
202
+
203
+ private fun inferMediaMetadata(uriString: String): InferredMediaMetadata {
204
+ val parsed = runCatching { Uri.parse(uriString) }.getOrNull()
205
+ ?: return InferredMediaMetadata(null, null, null, null)
206
+
207
+ val extension = runCatching {
208
+ MimeTypeMap.getFileExtensionFromUrl(parsed.toString())
209
+ }.getOrNull()?.takeIf { it.isNotBlank() }?.lowercase()
210
+
211
+ val contentType = runCatching {
212
+ context.contentResolver.getType(parsed)
213
+ }.getOrNull() ?: extension?.let {
214
+ MimeTypeMap.getSingleton().getMimeTypeFromExtension(it)
215
+ }
216
+
217
+ var fileName: String? = null
218
+ var fileSize: Long? = null
219
+
220
+ if (parsed.scheme == "content") {
221
+ runCatching {
222
+ context.contentResolver.query(parsed, null, null, null, null)
223
+ }.getOrNull()?.use { cursor ->
224
+ val nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)
225
+ val sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE)
226
+ if (cursor.moveToFirst()) {
227
+ if (nameIndex >= 0) {
228
+ fileName = cursor.getString(nameIndex)
229
+ }
230
+ if (sizeIndex >= 0 && !cursor.isNull(sizeIndex)) {
231
+ fileSize = cursor.getLong(sizeIndex)
232
+ }
233
+ }
234
+ }
235
+ }
236
+
237
+ if (fileName.isNullOrBlank()) {
238
+ fileName = parsed.lastPathSegment
239
+ }
240
+
241
+ val resolvedExtension = extension ?: fileName
242
+ ?.substringAfterLast('.', "")
243
+ ?.takeIf { it.isNotBlank() }
244
+ ?.lowercase()
245
+
246
+ return InferredMediaMetadata(fileName, resolvedExtension, contentType, fileSize)
247
+ }
248
+
163
249
  private fun normalizeMediaDimensions(mediaData: MediaAttachmentData, targetWidthPx: Int): MediaAttachmentData {
164
250
  val targetWidthDp = (targetWidthPx / density).toInt().coerceAtLeast(1)
165
251
  val fallbackHeightDp = if (mediaData.widthDp > 0 && mediaData.heightDp > 0) {
@@ -1943,12 +1943,12 @@ class RichTextEditorView(context: Context) : androidx.appcompat.widget.AppCompat
1943
1943
  imagePickerLauncher?.launch("image/*")
1944
1944
  }
1945
1945
 
1946
- private fun insertMediaAttachmentBlock(uri: String) {
1946
+ private fun insertMediaAttachmentBlock(mediaData: MediaAttachmentData) {
1947
1947
  val editable = text ?: return
1948
1948
  var insertPos = selectionStart.coerceIn(0, editable.length)
1949
1949
 
1950
1950
  isInternalChange = true
1951
- val nextPos = mediaAttachmentSupport.insertMediaAttachmentBlock(editable, insertPos, uri)
1951
+ val nextPos = mediaAttachmentSupport.insertMediaAttachmentBlock(editable, insertPos, mediaData)
1952
1952
  setSelection(nextPos.coerceAtMost(editable.length))
1953
1953
 
1954
1954
  isInternalChange = false
@@ -1957,10 +1957,60 @@ class RichTextEditorView(context: Context) : androidx.appcompat.widget.AppCompat
1957
1957
  post { updateContentSize() }
1958
1958
  }
1959
1959
 
1960
- fun insertMediaAttachment(uri: String?) {
1961
- val safeUri = uri?.trim().orEmpty()
1960
+ private fun insertMediaAttachmentBlock(uri: String) {
1961
+ val safeUri = uri.trim()
1962
1962
  if (safeUri.isEmpty()) return
1963
- insertMediaAttachmentBlock(safeUri)
1963
+ val mediaData = mediaAttachmentSupport.createMediaDataForUri(safeUri)
1964
+ insertMediaAttachmentBlock(mediaData)
1965
+ }
1966
+
1967
+ private fun parseMediaAttachmentPayload(payload: String): MediaAttachmentData? {
1968
+ val trimmed = payload.trim()
1969
+ if (trimmed.isEmpty()) return null
1970
+
1971
+ return try {
1972
+ if (trimmed.startsWith("{")) {
1973
+ val obj = org.json.JSONObject(trimmed)
1974
+ val uri = obj.optString("uri", "").trim()
1975
+ if (uri.isEmpty()) {
1976
+ null
1977
+ } else {
1978
+ val sourceUri = obj.optString("sourceUri", uri).ifBlank { uri }
1979
+ val kind = obj.optString("kind", "image")
1980
+ val fileName = obj.optString("fileName", "").ifBlank { null }
1981
+ val extension = obj.optString("extension", "").ifBlank { null }
1982
+ val contentType = obj.optString("contentType", "").ifBlank { null }
1983
+ val fileSize = if (obj.has("fileSize")) obj.optLong("fileSize", -1L) else -1L
1984
+ val width = obj.optInt("width", 100).coerceAtLeast(1)
1985
+ val height = obj.optInt("height", 100).coerceAtLeast(1)
1986
+ val alt = obj.optString("alt", "Selected image")
1987
+
1988
+ MediaAttachmentData(
1989
+ kind = kind,
1990
+ uri = uri,
1991
+ sourceUri = sourceUri,
1992
+ fileName = fileName,
1993
+ extension = extension,
1994
+ contentType = contentType,
1995
+ fileSize = fileSize.takeIf { it >= 0L },
1996
+ widthDp = width,
1997
+ heightDp = height,
1998
+ alt = alt
1999
+ )
2000
+ }
2001
+ } else {
2002
+ mediaAttachmentSupport.createMediaDataForUri(trimmed)
2003
+ }
2004
+ } catch (_: Exception) {
2005
+ mediaAttachmentSupport.createMediaDataForUri(trimmed)
2006
+ }
2007
+ }
2008
+
2009
+ fun insertMediaAttachment(payload: String?) {
2010
+ val safePayload = payload?.trim().orEmpty()
2011
+ if (safePayload.isEmpty()) return
2012
+ val mediaData = parseMediaAttachmentPayload(safePayload) ?: return
2013
+ insertMediaAttachmentBlock(mediaData)
1964
2014
  }
1965
2015
 
1966
2016
  private fun promptInsertLink() {
@@ -29,8 +29,8 @@ class RichTextEditorViewManager : SimpleViewManager<RichTextEditorView>() {
29
29
  override fun receiveCommand(view: RichTextEditorView, commandId: String?, args: ReadableArray?) {
30
30
  when (commandId) {
31
31
  "insertMediaAttachment" -> {
32
- val uri = args?.getString(0)
33
- view.insertMediaAttachment(uri)
32
+ val payload = args?.getString(0)
33
+ view.insertMediaAttachment(payload)
34
34
  }
35
35
  }
36
36
  }
@@ -38,8 +38,8 @@ class RichTextEditorViewManager : SimpleViewManager<RichTextEditorView>() {
38
38
  override fun receiveCommand(view: RichTextEditorView, commandId: Int, args: ReadableArray?) {
39
39
  when (commandId) {
40
40
  COMMAND_INSERT_MEDIA_ATTACHMENT -> {
41
- val uri = args?.getString(0)
42
- view.insertMediaAttachment(uri)
41
+ val payload = args?.getString(0)
42
+ view.insertMediaAttachment(payload)
43
43
  }
44
44
  }
45
45
  }
@@ -174,6 +174,22 @@ class RichTextEditorViewManager : SimpleViewManager<RichTextEditorView>() {
174
174
  val mediaMap = mutableMapOf<String, Any>()
175
175
  mediaMap["kind"] = mediaAttachment.optString("kind", "image")
176
176
  mediaMap["uri"] = mediaAttachment.optString("uri", "")
177
+ mediaMap["sourceUri"] = mediaAttachment.optString(
178
+ "sourceUri",
179
+ mediaAttachment.optString("uri", "")
180
+ )
181
+ if (mediaAttachment.has("fileName")) {
182
+ mediaMap["fileName"] = mediaAttachment.optString("fileName", "")
183
+ }
184
+ if (mediaAttachment.has("extension")) {
185
+ mediaMap["extension"] = mediaAttachment.optString("extension", "")
186
+ }
187
+ if (mediaAttachment.has("contentType")) {
188
+ mediaMap["contentType"] = mediaAttachment.optString("contentType", "")
189
+ }
190
+ if (mediaAttachment.has("fileSize")) {
191
+ mediaMap["fileSize"] = mediaAttachment.optLong("fileSize", 0)
192
+ }
177
193
  mediaMap["width"] = mediaAttachment.optInt("width", 100)
178
194
  mediaMap["height"] = mediaAttachment.optInt("height", 100)
179
195
  mediaMap["alt"] = mediaAttachment.optString("alt", "")
@@ -2035,7 +2035,12 @@ class RichTextEditorView: UIView, UITextViewDelegate, PHPickerViewControllerDele
2035
2035
 
2036
2036
  private func insertPickedImage(_ image: UIImage) {
2037
2037
  guard let imageUrl = writeImageToTemporaryURL(image) else { return }
2038
- insertMediaAttachmentBlock(uri: imageUrl.absoluteString, image: image)
2038
+ let mediaAttachment = createMediaAttachmentInfoFromUri(
2039
+ imageUrl.absoluteString,
2040
+ kind: "image",
2041
+ alt: "Selected image"
2042
+ )
2043
+ insertMediaAttachmentBlock(mediaAttachment: mediaAttachment, image: image)
2039
2044
  }
2040
2045
 
2041
2046
  private func writeImageToTemporaryURL(_ image: UIImage) -> URL? {
@@ -2051,7 +2056,12 @@ class RichTextEditorView: UIView, UITextViewDelegate, PHPickerViewControllerDele
2051
2056
  }
2052
2057
  }
2053
2058
 
2054
- private func insertMediaAttachmentBlock(uri: String, image: UIImage?) {
2059
+ private func insertMediaAttachmentBlock(mediaAttachment: [String: Any], image: UIImage?) {
2060
+ guard let uri = mediaAttachment["uri"] as? String,
2061
+ !uri.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
2062
+ return
2063
+ }
2064
+
2055
2065
  let mutable = NSMutableAttributedString(attributedString: textView.attributedText)
2056
2066
  var insertPos = textView.selectedRange.location
2057
2067
  insertPos = max(0, min(insertPos, mutable.length))
@@ -2066,7 +2076,12 @@ class RichTextEditorView: UIView, UITextViewDelegate, PHPickerViewControllerDele
2066
2076
  }
2067
2077
  }
2068
2078
 
2069
- let attachmentString = createMediaAttachmentAttributedString(uri: uri, image: image, width: nil, height: nil, alt: "Selected image")
2079
+ let attachmentString = createMediaAttachmentAttributedString(
2080
+ mediaAttachment: mediaAttachment,
2081
+ image: image,
2082
+ width: nil,
2083
+ height: nil
2084
+ )
2070
2085
  mutable.insert(attachmentString, at: insertPos)
2071
2086
 
2072
2087
  var nextPos = insertPos + attachmentString.length
@@ -2090,13 +2105,30 @@ class RichTextEditorView: UIView, UITextViewDelegate, PHPickerViewControllerDele
2090
2105
  updateContentSize()
2091
2106
  }
2092
2107
 
2093
- private func createMediaAttachmentAttributedString(uri: String, image: UIImage?, width: CGFloat?, height: CGFloat?, alt: String) -> NSAttributedString {
2108
+ private func insertMediaAttachmentBlock(uri: String, image: UIImage?) {
2109
+ let safeUri = uri.trimmingCharacters(in: .whitespacesAndNewlines)
2110
+ guard !safeUri.isEmpty else { return }
2111
+ let mediaAttachment = createMediaAttachmentInfoFromUri(safeUri, kind: "image", alt: "Selected image")
2112
+ insertMediaAttachmentBlock(mediaAttachment: mediaAttachment, image: image)
2113
+ }
2114
+
2115
+ private func createMediaAttachmentAttributedString(mediaAttachment: [String: Any], image: UIImage?, width: CGFloat?, height: CGFloat?) -> NSAttributedString {
2116
+ let uri = (mediaAttachment["uri"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines) ?? ""
2117
+ let sourceUri = (mediaAttachment["sourceUri"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines)
2118
+ .flatMap { $0.isEmpty ? nil : $0 } ?? uri
2119
+ let kind = (mediaAttachment["kind"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines)
2120
+ .flatMap { $0.isEmpty ? nil : $0 } ?? "image"
2121
+ let alt = (mediaAttachment["alt"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines)
2122
+ .flatMap { $0.isEmpty ? nil : $0 } ?? "Selected image"
2123
+
2124
+ let widthFromPayload = numberValue(mediaAttachment["width"]).map { CGFloat(truncating: $0) }
2125
+ let heightFromPayload = numberValue(mediaAttachment["height"]).map { CGFloat(truncating: $0) }
2094
2126
  let textContainerWidth = max(
2095
2127
  120,
2096
2128
  textView.bounds.width - textView.textContainerInset.left - textView.textContainerInset.right - textView.textContainer.lineFragmentPadding * 2
2097
2129
  )
2098
2130
 
2099
- let fallbackWidth = width ?? textContainerWidth
2131
+ let fallbackWidth = width ?? widthFromPayload ?? textContainerWidth
2100
2132
  let normalizedWidth = max(1, min(textContainerWidth, fallbackWidth))
2101
2133
 
2102
2134
  let sourceImage = image ?? loadImageFromUri(uri)
@@ -2104,7 +2136,7 @@ class RichTextEditorView: UIView, UITextViewDelegate, PHPickerViewControllerDele
2104
2136
  if let sourceImage = sourceImage, sourceImage.size.width > 0 {
2105
2137
  normalizedHeight = max(1, normalizedWidth * (sourceImage.size.height / sourceImage.size.width))
2106
2138
  } else {
2107
- normalizedHeight = max(1, height ?? normalizedWidth)
2139
+ normalizedHeight = max(1, height ?? heightFromPayload ?? normalizedWidth)
2108
2140
  }
2109
2141
 
2110
2142
  let targetSize = CGSize(width: normalizedWidth, height: normalizedHeight)
@@ -2113,15 +2145,32 @@ class RichTextEditorView: UIView, UITextViewDelegate, PHPickerViewControllerDele
2113
2145
  attachment.image = renderMediaImage(sourceImage, targetSize: targetSize)
2114
2146
 
2115
2147
  let attributed = NSMutableAttributedString(attachment: attachment)
2148
+
2149
+ var normalizedAttachment: [String: Any] = [
2150
+ "kind": kind,
2151
+ "uri": uri,
2152
+ "sourceUri": sourceUri,
2153
+ "width": Int(normalizedWidth.rounded()),
2154
+ "height": Int(normalizedHeight.rounded()),
2155
+ "alt": alt
2156
+ ]
2157
+
2158
+ if let fileName = (mediaAttachment["fileName"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines), !fileName.isEmpty {
2159
+ normalizedAttachment["fileName"] = fileName
2160
+ }
2161
+ if let fileExtension = (mediaAttachment["extension"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines), !fileExtension.isEmpty {
2162
+ normalizedAttachment["extension"] = fileExtension
2163
+ }
2164
+ if let contentType = (mediaAttachment["contentType"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines), !contentType.isEmpty {
2165
+ normalizedAttachment["contentType"] = contentType
2166
+ }
2167
+ if let fileSize = numberValue(mediaAttachment["fileSize"]) {
2168
+ normalizedAttachment["fileSize"] = fileSize
2169
+ }
2170
+
2116
2171
  attributed.addAttribute(
2117
2172
  RichTextEditorView.mediaAttachmentAttributeKey,
2118
- value: [
2119
- "kind": "image",
2120
- "uri": uri,
2121
- "width": Int(normalizedWidth.rounded()),
2122
- "height": Int(normalizedHeight.rounded()),
2123
- "alt": alt
2124
- ],
2173
+ value: normalizedAttachment,
2125
2174
  range: NSRange(location: 0, length: attributed.length)
2126
2175
  )
2127
2176
 
@@ -2172,6 +2221,137 @@ class RichTextEditorView: UIView, UITextViewDelegate, PHPickerViewControllerDele
2172
2221
  return UIImage(data: data)
2173
2222
  }
2174
2223
 
2224
+ private func createMediaAttachmentInfoFromUri(_ uri: String, kind: String = "image", alt: String = "Selected image") -> [String: Any] {
2225
+ let normalizedUri = uri.trimmingCharacters(in: .whitespacesAndNewlines)
2226
+ var mediaAttachment: [String: Any] = [
2227
+ "kind": kind,
2228
+ "uri": normalizedUri,
2229
+ "sourceUri": normalizedUri,
2230
+ "alt": alt
2231
+ ]
2232
+
2233
+ let inferred = inferMediaMetadata(from: normalizedUri)
2234
+ if let fileName = inferred.fileName {
2235
+ mediaAttachment["fileName"] = fileName
2236
+ }
2237
+ if let fileExtension = inferred.fileExtension {
2238
+ mediaAttachment["extension"] = fileExtension
2239
+ }
2240
+ if let contentType = inferred.contentType {
2241
+ mediaAttachment["contentType"] = contentType
2242
+ }
2243
+ if let fileSize = inferred.fileSize {
2244
+ mediaAttachment["fileSize"] = fileSize
2245
+ }
2246
+
2247
+ return mediaAttachment
2248
+ }
2249
+
2250
+ private func numberValue(_ value: Any?) -> NSNumber? {
2251
+ if let number = value as? NSNumber {
2252
+ return number
2253
+ }
2254
+ if let intValue = value as? Int {
2255
+ return NSNumber(value: intValue)
2256
+ }
2257
+ if let int64Value = value as? Int64 {
2258
+ return NSNumber(value: int64Value)
2259
+ }
2260
+ if let doubleValue = value as? Double {
2261
+ return NSNumber(value: doubleValue)
2262
+ }
2263
+ if let floatValue = value as? Float {
2264
+ return NSNumber(value: floatValue)
2265
+ }
2266
+ return nil
2267
+ }
2268
+
2269
+ private func parseMediaAttachmentPayload(_ payload: String) -> [String: Any]? {
2270
+ let trimmed = payload.trimmingCharacters(in: .whitespacesAndNewlines)
2271
+ guard !trimmed.isEmpty else { return nil }
2272
+
2273
+ if trimmed.first == "{" {
2274
+ guard let data = trimmed.data(using: .utf8),
2275
+ let raw = try? JSONSerialization.jsonObject(with: data) as? [String: Any],
2276
+ let uriValue = raw["uri"] as? String else {
2277
+ return nil
2278
+ }
2279
+
2280
+ let uri = uriValue.trimmingCharacters(in: .whitespacesAndNewlines)
2281
+ guard !uri.isEmpty else { return nil }
2282
+
2283
+ var normalized = createMediaAttachmentInfoFromUri(uri)
2284
+
2285
+ if let kind = (raw["kind"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines), !kind.isEmpty {
2286
+ normalized["kind"] = kind
2287
+ }
2288
+ if let sourceUri = (raw["sourceUri"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines), !sourceUri.isEmpty {
2289
+ normalized["sourceUri"] = sourceUri
2290
+ }
2291
+ if let alt = (raw["alt"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines), !alt.isEmpty {
2292
+ normalized["alt"] = alt
2293
+ }
2294
+ if let fileName = (raw["fileName"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines), !fileName.isEmpty {
2295
+ normalized["fileName"] = fileName
2296
+ }
2297
+ if let fileExtension = (raw["extension"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines), !fileExtension.isEmpty {
2298
+ normalized["extension"] = fileExtension
2299
+ }
2300
+ if let contentType = (raw["contentType"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines), !contentType.isEmpty {
2301
+ normalized["contentType"] = contentType
2302
+ }
2303
+ if let fileSize = numberValue(raw["fileSize"]) {
2304
+ normalized["fileSize"] = fileSize
2305
+ }
2306
+ if let width = numberValue(raw["width"]) {
2307
+ normalized["width"] = max(1, width.intValue)
2308
+ }
2309
+ if let height = numberValue(raw["height"]) {
2310
+ normalized["height"] = max(1, height.intValue)
2311
+ }
2312
+
2313
+ return normalized
2314
+ }
2315
+
2316
+ return createMediaAttachmentInfoFromUri(trimmed)
2317
+ }
2318
+
2319
+ private func inferMediaMetadata(from uri: String) -> (fileName: String?, fileExtension: String?, contentType: String?, fileSize: NSNumber?) {
2320
+ guard let url = URL(string: uri) else {
2321
+ return (nil, nil, nil, nil)
2322
+ }
2323
+
2324
+ let fileName = url.lastPathComponent.isEmpty ? nil : url.lastPathComponent
2325
+ let fileExtension = url.pathExtension.isEmpty ? nil : url.pathExtension.lowercased()
2326
+
2327
+ var fileSize: NSNumber?
2328
+ if url.isFileURL,
2329
+ let attributes = try? FileManager.default.attributesOfItem(atPath: url.path),
2330
+ let size = attributes[.size] as? NSNumber {
2331
+ fileSize = size
2332
+ }
2333
+
2334
+ let contentType = fileExtension.flatMap { mimeType(forExtension: $0) }
2335
+
2336
+ return (fileName, fileExtension, contentType, fileSize)
2337
+ }
2338
+
2339
+ private func mimeType(forExtension fileExtension: String) -> String? {
2340
+ let lower = fileExtension.lowercased()
2341
+ switch lower {
2342
+ case "jpg", "jpeg": return "image/jpeg"
2343
+ case "png": return "image/png"
2344
+ case "gif": return "image/gif"
2345
+ case "webp": return "image/webp"
2346
+ case "bmp": return "image/bmp"
2347
+ case "heic": return "image/heic"
2348
+ case "heif": return "image/heif"
2349
+ case "mp4": return "video/mp4"
2350
+ case "mov": return "video/quicktime"
2351
+ default: return nil
2352
+ }
2353
+ }
2354
+
2175
2355
  private func isImageURL(_ url: URL) -> Bool {
2176
2356
  let lowercasedPath = url.path.lowercased()
2177
2357
  return lowercasedPath.hasSuffix(".png") ||
@@ -2365,9 +2545,38 @@ class RichTextEditorView: UIView, UITextViewDelegate, PHPickerViewControllerDele
2365
2545
  let uri = mediaAttachment["uri"] as? String {
2366
2546
  let width = (mediaAttachment["width"] as? NSNumber).map { CGFloat(truncating: $0) }
2367
2547
  let height = (mediaAttachment["height"] as? NSNumber).map { CGFloat(truncating: $0) }
2368
- let alt = mediaAttachment["alt"] as? String ?? "Selected image"
2548
+ var normalizedMediaAttachment = createMediaAttachmentInfoFromUri(uri)
2549
+
2550
+ if let kind = mediaAttachment["kind"] as? String {
2551
+ normalizedMediaAttachment["kind"] = kind
2552
+ }
2553
+ if let sourceUri = mediaAttachment["sourceUri"] as? String, !sourceUri.isEmpty {
2554
+ normalizedMediaAttachment["sourceUri"] = sourceUri
2555
+ }
2556
+ if let alt = mediaAttachment["alt"] as? String, !alt.isEmpty {
2557
+ normalizedMediaAttachment["alt"] = alt
2558
+ }
2559
+ if let fileName = mediaAttachment["fileName"] as? String, !fileName.isEmpty {
2560
+ normalizedMediaAttachment["fileName"] = fileName
2561
+ }
2562
+ if let fileExtension = mediaAttachment["extension"] as? String, !fileExtension.isEmpty {
2563
+ normalizedMediaAttachment["extension"] = fileExtension
2564
+ }
2565
+ if let contentType = mediaAttachment["contentType"] as? String, !contentType.isEmpty {
2566
+ normalizedMediaAttachment["contentType"] = contentType
2567
+ }
2568
+ if let fileSize = numberValue(mediaAttachment["fileSize"]) {
2569
+ normalizedMediaAttachment["fileSize"] = fileSize
2570
+ }
2369
2571
 
2370
- attributedString.append(createMediaAttachmentAttributedString(uri: uri, image: nil, width: width, height: height, alt: alt))
2572
+ attributedString.append(
2573
+ createMediaAttachmentAttributedString(
2574
+ mediaAttachment: normalizedMediaAttachment,
2575
+ image: nil,
2576
+ width: width,
2577
+ height: height
2578
+ )
2579
+ )
2371
2580
 
2372
2581
  if blockIndex < blocks.count - 1 {
2373
2582
  attributedString.append(NSAttributedString(string: "\n", attributes: [
@@ -2589,10 +2798,16 @@ class RichTextEditorView: UIView, UITextViewDelegate, PHPickerViewControllerDele
2589
2798
  }
2590
2799
 
2591
2800
  func insertMediaAttachment(uri: String) {
2592
- let safeUri = uri.trimmingCharacters(in: .whitespacesAndNewlines)
2593
- guard !safeUri.isEmpty else { return }
2594
- let image = loadImageFromUri(safeUri)
2595
- insertMediaAttachmentBlock(uri: safeUri, image: image)
2801
+ let safePayload = uri.trimmingCharacters(in: .whitespacesAndNewlines)
2802
+ guard !safePayload.isEmpty,
2803
+ let mediaAttachment = parseMediaAttachmentPayload(safePayload),
2804
+ let mediaUri = mediaAttachment["uri"] as? String,
2805
+ !mediaUri.isEmpty else {
2806
+ return
2807
+ }
2808
+
2809
+ let image = loadImageFromUri(mediaUri)
2810
+ insertMediaAttachmentBlock(mediaAttachment: mediaAttachment, image: image)
2596
2811
  }
2597
2812
 
2598
2813
  func undo() {
@@ -33,10 +33,16 @@ const RichTextEditor = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
33
33
  if (commandId == null) return;
34
34
  _reactNative.UIManager.dispatchViewManagerCommand(nativeTag, commandId, args);
35
35
  }, []);
36
- const dispatchInsertMediaAttachment = _react.default.useCallback(uri => {
37
- if (typeof uri !== "string" || uri.trim().length === 0) return;
36
+ const dispatchInsertMediaAttachment = _react.default.useCallback(mediaAttachment => {
37
+ if (!mediaAttachment || typeof mediaAttachment !== "object" || typeof mediaAttachment.uri !== "string" || mediaAttachment.uri.trim().length === 0) {
38
+ return;
39
+ }
40
+ const normalizedMediaAttachment = {
41
+ ...mediaAttachment,
42
+ sourceUri: mediaAttachment.sourceUri ?? mediaAttachment.uri
43
+ };
38
44
  if (_reactNative.Platform.OS === "android") {
39
- dispatchAndroidCommand("insertMediaAttachment", [uri]);
45
+ dispatchAndroidCommand("insertMediaAttachment", [JSON.stringify(normalizedMediaAttachment)]);
40
46
  return;
41
47
  }
42
48
  if (_reactNative.Platform.OS === "ios") {
@@ -44,7 +50,7 @@ const RichTextEditor = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
44
50
  if (nativeTag == null) return;
45
51
  const manager = _reactNative.NativeModules ? _reactNative.NativeModules["RichTextEditorViewManager"] : null;
46
52
  if (manager && typeof manager === "object" && typeof manager.insertMediaAttachment === "function") {
47
- manager.insertMediaAttachment(nativeTag, uri);
53
+ manager.insertMediaAttachment(nativeTag, JSON.stringify(normalizedMediaAttachment));
48
54
  }
49
55
  }
50
56
  }, [dispatchAndroidCommand]);
@@ -105,9 +111,7 @@ const RichTextEditor = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
105
111
  /* Native toolbar handles this */
106
112
  },
107
113
  insertMediaAttachment: mediaAttachment => {
108
- if (mediaAttachment && typeof mediaAttachment === "object" && typeof mediaAttachment.uri === "string") {
109
- dispatchInsertMediaAttachment(mediaAttachment.uri);
110
- }
114
+ dispatchInsertMediaAttachment(mediaAttachment);
111
115
  },
112
116
  undo: () => {
113
117
  /* Native toolbar handles this */
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_RichTextEditorViewNativeComponent","_types","e","__esModule","default","RichTextEditor","React","forwardRef","props","ref","nativeRef","useRef","height","setHeight","useState","handleSizeChange","useCallback","event","newHeight","nativeEvent","dispatchAndroidCommand","commandName","args","Platform","OS","nativeTag","findNodeHandle","current","commandConfig","UIManager","getViewManagerConfig","Commands","commandId","dispatchViewManagerCommand","dispatchInsertMediaAttachment","uri","trim","length","manager","NativeModules","insertMediaAttachment","useImperativeHandle","setContent","_blocks","getText","getBlocks","clear","focus","blur","toggleBold","toggleItalic","toggleUnderline","toggleStrikethrough","toggleCode","toggleHighlight","_color","setHeading","setBulletList","setNumberedList","setQuote","setChecklist","setParagraph","insertLink","_url","_text","mediaAttachment","undo","redo","clearFormatting","indent","outdent","setAlignment","_alignment","toggleChecklistItem","handleContentChange","blocks","blocksJson","JSON","parse","contentEvent","text","delta","onContentChange","handleSelectionChange","selectionEvent","start","end","onSelectionChange","handleFocus","onFocus","handleBlur","onBlur","handleActiveStylesChange","onActiveStylesChange","combinedStyle","StyleSheet","flatten","style","createElement","placeholder","initialContentJson","initialContent","stringify","undefined","editable","readOnly","selectable","maxHeight","numberOfLines","showToolbar","toolbarOptions","variant","fontFamily","fontSize","onEditorFocus","onEditorBlur","onSizeChange","displayName","_default","exports"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_RichTextEditorViewNativeComponent","_types","e","__esModule","default","RichTextEditor","React","forwardRef","props","ref","nativeRef","useRef","height","setHeight","useState","handleSizeChange","useCallback","event","newHeight","nativeEvent","dispatchAndroidCommand","commandName","args","Platform","OS","nativeTag","findNodeHandle","current","commandConfig","UIManager","getViewManagerConfig","Commands","commandId","dispatchViewManagerCommand","dispatchInsertMediaAttachment","mediaAttachment","uri","trim","length","normalizedMediaAttachment","sourceUri","JSON","stringify","manager","NativeModules","insertMediaAttachment","useImperativeHandle","setContent","_blocks","getText","getBlocks","clear","focus","blur","toggleBold","toggleItalic","toggleUnderline","toggleStrikethrough","toggleCode","toggleHighlight","_color","setHeading","setBulletList","setNumberedList","setQuote","setChecklist","setParagraph","insertLink","_url","_text","undo","redo","clearFormatting","indent","outdent","setAlignment","_alignment","toggleChecklistItem","handleContentChange","blocks","blocksJson","parse","contentEvent","text","delta","onContentChange","handleSelectionChange","selectionEvent","start","end","onSelectionChange","handleFocus","onFocus","handleBlur","onBlur","handleActiveStylesChange","onActiveStylesChange","combinedStyle","StyleSheet","flatten","style","createElement","placeholder","initialContentJson","initialContent","undefined","editable","readOnly","selectable","maxHeight","numberOfLines","showToolbar","toolbarOptions","variant","fontFamily","fontSize","onEditorFocus","onEditorBlur","onSizeChange","displayName","_default","exports"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_TOOLBAR_OPTIONS","exports"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;AA+FO,MAAMA,uBAAwC,GAAAC,OAAA,CAAAD,uBAAA,GAAG,CACtD,MAAM,EACN,QAAQ,EACR,WAAW,EACX,eAAe,EACf,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACV,OAAO,EACP,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,CACb","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_TOOLBAR_OPTIONS","exports"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;AAqGO,MAAMA,uBAAwC,GAAAC,OAAA,CAAAD,uBAAA,GAAG,CACtD,MAAM,EACN,QAAQ,EACR,WAAW,EACX,eAAe,EACf,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACV,OAAO,EACP,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,CACb","ignoreList":[]}
@@ -19,10 +19,16 @@ const RichTextEditor = /*#__PURE__*/React.forwardRef((props, ref) => {
19
19
  if (commandId == null) return;
20
20
  UIManager.dispatchViewManagerCommand(nativeTag, commandId, args);
21
21
  }, []);
22
- const dispatchInsertMediaAttachment = React.useCallback(uri => {
23
- if (typeof uri !== "string" || uri.trim().length === 0) return;
22
+ const dispatchInsertMediaAttachment = React.useCallback(mediaAttachment => {
23
+ if (!mediaAttachment || typeof mediaAttachment !== "object" || typeof mediaAttachment.uri !== "string" || mediaAttachment.uri.trim().length === 0) {
24
+ return;
25
+ }
26
+ const normalizedMediaAttachment = {
27
+ ...mediaAttachment,
28
+ sourceUri: mediaAttachment.sourceUri ?? mediaAttachment.uri
29
+ };
24
30
  if (Platform.OS === "android") {
25
- dispatchAndroidCommand("insertMediaAttachment", [uri]);
31
+ dispatchAndroidCommand("insertMediaAttachment", [JSON.stringify(normalizedMediaAttachment)]);
26
32
  return;
27
33
  }
28
34
  if (Platform.OS === "ios") {
@@ -30,7 +36,7 @@ const RichTextEditor = /*#__PURE__*/React.forwardRef((props, ref) => {
30
36
  if (nativeTag == null) return;
31
37
  const manager = NativeModules ? NativeModules["RichTextEditorViewManager"] : null;
32
38
  if (manager && typeof manager === "object" && typeof manager.insertMediaAttachment === "function") {
33
- manager.insertMediaAttachment(nativeTag, uri);
39
+ manager.insertMediaAttachment(nativeTag, JSON.stringify(normalizedMediaAttachment));
34
40
  }
35
41
  }
36
42
  }, [dispatchAndroidCommand]);
@@ -91,9 +97,7 @@ const RichTextEditor = /*#__PURE__*/React.forwardRef((props, ref) => {
91
97
  /* Native toolbar handles this */
92
98
  },
93
99
  insertMediaAttachment: mediaAttachment => {
94
- if (mediaAttachment && typeof mediaAttachment === "object" && typeof mediaAttachment.uri === "string") {
95
- dispatchInsertMediaAttachment(mediaAttachment.uri);
96
- }
100
+ dispatchInsertMediaAttachment(mediaAttachment);
97
101
  },
98
102
  undo: () => {
99
103
  /* Native toolbar handles this */
@@ -1 +1 @@
1
- {"version":3,"names":["React","findNodeHandle","NativeModules","Platform","StyleSheet","UIManager","RichTextEditorViewNative","RichTextEditor","forwardRef","props","ref","nativeRef","useRef","height","setHeight","useState","handleSizeChange","useCallback","event","newHeight","nativeEvent","dispatchAndroidCommand","commandName","args","OS","nativeTag","current","commandConfig","getViewManagerConfig","Commands","commandId","dispatchViewManagerCommand","dispatchInsertMediaAttachment","uri","trim","length","manager","insertMediaAttachment","useImperativeHandle","setContent","_blocks","getText","getBlocks","clear","focus","blur","toggleBold","toggleItalic","toggleUnderline","toggleStrikethrough","toggleCode","toggleHighlight","_color","setHeading","setBulletList","setNumberedList","setQuote","setChecklist","setParagraph","insertLink","_url","_text","mediaAttachment","undo","redo","clearFormatting","indent","outdent","setAlignment","_alignment","toggleChecklistItem","handleContentChange","blocks","blocksJson","JSON","parse","contentEvent","text","delta","onContentChange","handleSelectionChange","selectionEvent","start","end","onSelectionChange","handleFocus","onFocus","handleBlur","onBlur","handleActiveStylesChange","onActiveStylesChange","combinedStyle","flatten","style","createElement","placeholder","initialContentJson","initialContent","stringify","undefined","editable","readOnly","selectable","maxHeight","numberOfLines","showToolbar","toolbarOptions","variant","fontFamily","fontSize","onEditorFocus","onEditorBlur","onSizeChange","displayName","DEFAULT_TOOLBAR_OPTIONS"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,cAAc,EACdC,aAAa,EACbC,QAAQ,EACRC,UAAU,EACVC,SAAS,QACJ,cAAc;AAUrB,OAAOC,wBAAwB,MAAM,qCAAqC;AA2B1E,MAAMC,cAAc,gBAAGP,KAAK,CAACQ,UAAU,CAGrC,CAACC,KAAK,EAAEC,GAAG,KAAK;EAChB,MAAMC,SAAS,GACbX,KAAK,CAACY,MAAM,CAAoD,IAAI,CAAC;EACvE,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGd,KAAK,CAACe,QAAQ,CAAS,EAAE,CAAC;EAEtD,MAAMC,gBAAgB,GAAGhB,KAAK,CAACiB,WAAW,CAAEC,KAAsB,IAAK;IACrE,MAAMC,SAAS,GAAGD,KAAK,CAACE,WAAW,EAAEP,MAAM;IAC3C,IAAIM,SAAS,IAAIA,SAAS,GAAG,CAAC,EAAE;MAC9BL,SAAS,CAACK,SAAS,CAAC;IACtB;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,sBAAsB,GAAGrB,KAAK,CAACiB,WAAW,CAC9C,CAACK,WAAmB,EAAEC,IAAmC,GAAG,EAAE,KAAK;IACjE,IAAIpB,QAAQ,CAACqB,EAAE,KAAK,SAAS,EAAE;IAE/B,MAAMC,SAAS,GAAGxB,cAAc,CAACU,SAAS,CAACe,OAAO,CAAC;IACnD,IAAID,SAAS,IAAI,IAAI,EAAE;IAEvB,MAAME,aAAa,GACjBtB,SAAS,CAACuB,oBAAoB,CAAC,oBAAoB,CAAC,EAAEC,QAAQ;IAChE,MAAMC,SAAS,GAAGH,aAAa,GAAGL,WAAW,CAAC;IAE9C,IAAIQ,SAAS,IAAI,IAAI,EAAE;IAEvBzB,SAAS,CAAC0B,0BAA0B,CAACN,SAAS,EAAEK,SAAS,EAAEP,IAAI,CAAC;EAClE,CAAC,EACD,EACF,CAAC;EAED,MAAMS,6BAA6B,GAAGhC,KAAK,CAACiB,WAAW,CACpDgB,GAAW,IAAK;IACf,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACC,IAAI,CAAC,CAAC,CAACC,MAAM,KAAK,CAAC,EAAE;IAExD,IAAIhC,QAAQ,CAACqB,EAAE,KAAK,SAAS,EAAE;MAC7BH,sBAAsB,CAAC,uBAAuB,EAAE,CAACY,GAAG,CAAC,CAAC;MACtD;IACF;IAEA,IAAI9B,QAAQ,CAACqB,EAAE,KAAK,KAAK,EAAE;MACzB,MAAMC,SAAS,GAAGxB,cAAc,CAACU,SAAS,CAACe,OAAO,CAAC;MACnD,IAAID,SAAS,IAAI,IAAI,EAAE;MAEvB,MAAMW,OAAO,GAAGlC,aAAa,GACxBA,aAAa,CACZ,2BAA2B,CAC5B,GACD,IAAI;MAER,IACEkC,OAAO,IACP,OAAOA,OAAO,KAAK,QAAQ,IAC3B,OAAQA,OAAO,CACZC,qBAAqB,KAAK,UAAU,EACvC;QAEED,OAAO,CAGPC,qBAAqB,CAACZ,SAAS,EAAEQ,GAAG,CAAC;MACzC;IACF;EACF,CAAC,EACD,CAACZ,sBAAsB,CACzB,CAAC;;EAED;EACArB,KAAK,CAACsC,mBAAmB,CACvB5B,GAAG,EACH,OAAO;IACL6B,UAAU,EAAGC,OAAgB,IAAK;MAChC;IAAA,CACD;IACDC,OAAO,EAAE,MAAAA,CAAA,KAA6B,EAAE;IACxCC,SAAS,EAAE,MAAAA,CAAA,KAA8B,EAAE;IAC3CC,KAAK,EAAEA,CAAA,KAAM;MACX;IAAA,CACD;IACDC,KAAK,EAAEA,CAAA,KAAM;MACX;IAAA,CACD;IACDC,IAAI,EAAEA,CAAA,KAAM;MACV;IAAA,CACD;IACDC,UAAU,EAAEA,CAAA,KAAM;MAChB;IAAA,CACD;IACDC,YAAY,EAAEA,CAAA,KAAM;MAClB;IAAA,CACD;IACDC,eAAe,EAAEA,CAAA,KAAM;MACrB;IAAA,CACD;IACDC,mBAAmB,EAAEA,CAAA,KAAM;MACzB;IAAA,CACD;IACDC,UAAU,EAAEA,CAAA,KAAM;MAChB;IAAA,CACD;IACDC,eAAe,EAAGC,MAAe,IAAK;MACpC;IAAA,CACD;IACDC,UAAU,EAAEA,CAAA,KAAM;MAChB;IAAA,CACD;IACDC,aAAa,EAAEA,CAAA,KAAM;MACnB;IAAA,CACD;IACDC,eAAe,EAAEA,CAAA,KAAM;MACrB;IAAA,CACD;IACDC,QAAQ,EAAEA,CAAA,KAAM;MACd;IAAA,CACD;IACDC,YAAY,EAAEA,CAAA,KAAM;MAClB;IAAA,CACD;IACDC,YAAY,EAAEA,CAAA,KAAM;MAClB;IAAA,CACD;IACDC,UAAU,EAAEA,CAACC,IAAY,EAAEC,KAAa,KAAK;MAC3C;IAAA,CACD;IACDxB,qBAAqB,EAAGyB,eAAgC,IAAK;MAC3D,IACEA,eAAe,IACf,OAAOA,eAAe,KAAK,QAAQ,IACnC,OAAOA,eAAe,CAAC7B,GAAG,KAAK,QAAQ,EACvC;QACAD,6BAA6B,CAAC8B,eAAe,CAAC7B,GAAG,CAAC;MACpD;IACF,CAAC;IACD8B,IAAI,EAAEA,CAAA,KAAM;MACV;IAAA,CACD;IACDC,IAAI,EAAEA,CAAA,KAAM;MACV;IAAA,CACD;IACDC,eAAe,EAAEA,CAAA,KAAM;MACrB;IAAA,CACD;IACDC,MAAM,EAAEA,CAAA,KAAM;MACZ;IAAA,CACD;IACDC,OAAO,EAAEA,CAAA,KAAM;MACb;IAAA,CACD;IACDC,YAAY,EAAGC,UAAyB,IAAK;MAC3C;IAAA,CACD;IACDC,mBAAmB,EAAEA,CAAA,KAAM;MACzB;IAAA;EAEJ,CAAC,CAAC,EACF,CAACtC,6BAA6B,CAChC,CAAC;;EAED;EACA,MAAMuC,mBAAmB,GAAGvE,KAAK,CAACiB,WAAW,CAC1CC,KAAU,IAAK;IACd;IACA,IAAIsD,MAAe,GAAG,EAAE;IACxB,IAAI;MACF,IAAItD,KAAK,CAACE,WAAW,CAACqD,UAAU,EAAE;QAChCD,MAAM,GAAGE,IAAI,CAACC,KAAK,CAACzD,KAAK,CAACE,WAAW,CAACqD,UAAU,CAAC;MACnD,CAAC,MAAM,IAAIvD,KAAK,CAACE,WAAW,CAACoD,MAAM,EAAE;QACnC;QACAA,MAAM,GAAG,CAAC,GAAGtD,KAAK,CAACE,WAAW,CAACoD,MAAM,CAAC;MACxC;IACF,CAAC,CAAC,MAAM;MACNA,MAAM,GAAG,EAAE;IACb;;IAEA;IACA,MAAMI,YAAgC,GAAG;MACvCxD,WAAW,EAAE;QACXyD,IAAI,EAAE3D,KAAK,CAACE,WAAW,CAACyD,IAAI;QAC5BL,MAAM;QACNM,KAAK,EAAE5D,KAAK,CAACE,WAAW,CAAC0D;MAC3B;IACF,CAAC;IACDrE,KAAK,CAACsE,eAAe,GAAGH,YAAY,CAAC;EACvC,CAAC,EACD,CAACnE,KAAK,CAACsE,eAAe,CACxB,CAAC;;EAED;EACA,MAAMC,qBAAqB,GAAGhF,KAAK,CAACiB,WAAW,CAC5CC,KAAU,IAAK;IACd,MAAM+D,cAAoC,GAAG;MAC3C7D,WAAW,EAAE;QACX8D,KAAK,EAAEhE,KAAK,CAACE,WAAW,CAAC8D,KAAK;QAC9BC,GAAG,EAAEjE,KAAK,CAACE,WAAW,CAAC+D;MACzB;IACF,CAAC;IACD1E,KAAK,CAAC2E,iBAAiB,GAAGH,cAAc,CAAC;EAC3C,CAAC,EACD,CAACxE,KAAK,CAAC2E,iBAAiB,CAC1B,CAAC;EAED,MAAMC,WAAW,GAAGrF,KAAK,CAACiB,WAAW,CAAC,MAAM;IAC1CR,KAAK,CAAC6E,OAAO,GAAG,CAAC;EACnB,CAAC,EAAE,CAAC7E,KAAK,CAAC6E,OAAO,CAAC,CAAC;EAEnB,MAAMC,UAAU,GAAGvF,KAAK,CAACiB,WAAW,CAAC,MAAM;IACzCR,KAAK,CAAC+E,MAAM,GAAG,CAAC;EAClB,CAAC,EAAE,CAAC/E,KAAK,CAAC+E,MAAM,CAAC,CAAC;EAElB,MAAMC,wBAAwB,GAAGzF,KAAK,CAACiB,WAAW,CAC/CC,KAA8B,IAAK;IAClCT,KAAK,CAACiF,oBAAoB,GAAGxE,KAAK,CAACE,WAAW,CAAC;EACjD,CAAC,EACD,CAACX,KAAK,CAACiF,oBAAoB,CAC7B,CAAC;EAED,MAAMC,aAAa,GAAGvF,UAAU,CAACwF,OAAO,CAAC,CAACnF,KAAK,CAACoF,KAAK,EAAE;IAAEhF;EAAO,CAAC,CAAC,CAAC;EAEnE,oBACEb,KAAA,CAAA8F,aAAA,CAACxF,wBAAwB;IACvBI,GAAG,EAAEC,SAAU;IACfkF,KAAK,EAAEF,aAAc;IACrBI,WAAW,EAAEtF,KAAK,CAACsF,WAAY;IAC/BC,kBAAkB,EAChBvF,KAAK,CAACwF,cAAc,GAAGvB,IAAI,CAACwB,SAAS,CAACzF,KAAK,CAACwF,cAAc,CAAC,GAAGE,SAC/D;IACDC,QAAQ,EAAE3F,KAAK,CAAC4F,QAAQ,KAAKF,SAAS,GAAG,CAAC1F,KAAK,CAAC4F,QAAQ,GAAG,IAAK;IAChEC,UAAU,EAAE7F,KAAK,CAAC6F,UAAU,IAAI,IAAK;IACrCC,SAAS,EAAE9F,KAAK,CAAC8F,SAAU;IAC3BC,aAAa,EAAE/F,KAAK,CAAC+F,aAAc;IACnCC,WAAW,EAAEhG,KAAK,CAAC4F,QAAQ,GAAG,KAAK,GAAI5F,KAAK,CAACgG,WAAW,IAAI,IAAM;IAClEC,cAAc,EAAEjG,KAAK,CAACiG,cAAe;IACrCC,OAAO,EAAElG,KAAK,CAACkG,OAAO,IAAI,UAAW;IACrCC,UAAU,EAAEnG,KAAK,CAACmG,UAAW;IAC7BC,QAAQ,EAAEpG,KAAK,CAACoG,QAAS;IACzB9B,eAAe,EAAER,mBAAoB;IACrCa,iBAAiB,EAAEJ,qBAAsB;IACzC8B,aAAa,EAAEzB,WAAY;IAC3B0B,YAAY,EAAExB,UAAW;IACzByB,YAAY,EAAEhG,gBAAiB;IAC/B0E,oBAAoB,EAAED;EAAyB,CAChD,CAAC;AAEN,CAAC,CAAC;AAEFlF,cAAc,CAAC0G,WAAW,GAAG,gBAAgB;AAE7C,eAAe1G,cAAc;AAC7B,SAAS2G,uBAAuB,QAAQ,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["React","findNodeHandle","NativeModules","Platform","StyleSheet","UIManager","RichTextEditorViewNative","RichTextEditor","forwardRef","props","ref","nativeRef","useRef","height","setHeight","useState","handleSizeChange","useCallback","event","newHeight","nativeEvent","dispatchAndroidCommand","commandName","args","OS","nativeTag","current","commandConfig","getViewManagerConfig","Commands","commandId","dispatchViewManagerCommand","dispatchInsertMediaAttachment","mediaAttachment","uri","trim","length","normalizedMediaAttachment","sourceUri","JSON","stringify","manager","insertMediaAttachment","useImperativeHandle","setContent","_blocks","getText","getBlocks","clear","focus","blur","toggleBold","toggleItalic","toggleUnderline","toggleStrikethrough","toggleCode","toggleHighlight","_color","setHeading","setBulletList","setNumberedList","setQuote","setChecklist","setParagraph","insertLink","_url","_text","undo","redo","clearFormatting","indent","outdent","setAlignment","_alignment","toggleChecklistItem","handleContentChange","blocks","blocksJson","parse","contentEvent","text","delta","onContentChange","handleSelectionChange","selectionEvent","start","end","onSelectionChange","handleFocus","onFocus","handleBlur","onBlur","handleActiveStylesChange","onActiveStylesChange","combinedStyle","flatten","style","createElement","placeholder","initialContentJson","initialContent","undefined","editable","readOnly","selectable","maxHeight","numberOfLines","showToolbar","toolbarOptions","variant","fontFamily","fontSize","onEditorFocus","onEditorBlur","onSizeChange","displayName","DEFAULT_TOOLBAR_OPTIONS"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_TOOLBAR_OPTIONS"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"AA+FA,OAAO,MAAMA,uBAAwC,GAAG,CACtD,MAAM,EACN,QAAQ,EACR,WAAW,EACX,eAAe,EACf,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACV,OAAO,EACP,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,CACb","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_TOOLBAR_OPTIONS"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"AAqGA,OAAO,MAAMA,uBAAwC,GAAG,CACtD,MAAM,EACN,QAAQ,EACR,WAAW,EACX,eAAe,EACf,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACV,OAAO,EACP,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,CACb","ignoreList":[]}
@@ -16,5 +16,5 @@ export interface RichTextEditorPropsExtended extends RichTextEditorProps {
16
16
  declare const RichTextEditor: React.ForwardRefExoticComponent<RichTextEditorPropsExtended & React.RefAttributes<RichTextEditorRef>>;
17
17
  export default RichTextEditor;
18
18
  export { DEFAULT_TOOLBAR_OPTIONS } from "./types";
19
- export type { Block, BlockType, StyleRange, MediaAttachment, TextAlignment, EditorVariant, ContentChangeEvent, SelectionChangeEvent, RichTextEditorRef, RichTextEditorProps, ToolbarOption, ContentDelta, DeltaType, } from "./types";
19
+ export type { Block, BlockType, StyleRange, MediaKind, MediaAttachment, TextAlignment, EditorVariant, ContentChangeEvent, SelectionChangeEvent, RichTextEditorRef, RichTextEditorProps, ToolbarOption, ContentDelta, DeltaType, } from "./types";
20
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,KAAK,EAMV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AASjB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC5D;AAED,QAAA,MAAM,cAAc,uGAqPlB,CAAC;AAIH,eAAe,cAAc,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,YAAY,EACV,KAAK,EACL,SAAS,EACT,UAAU,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,SAAS,GACV,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,KAAK,EAMV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AASjB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC5D;AAED,QAAA,MAAM,cAAc,uGAgQlB,CAAC;AAIH,eAAe,cAAc,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,YAAY,EACV,KAAK,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,eAAe,EACf,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,SAAS,GACV,MAAM,SAAS,CAAC"}
@@ -9,9 +9,15 @@ export interface StyleRange {
9
9
  export type BlockType = "paragraph" | "bullet" | "numbered" | "heading" | "quote" | "checklist" | "mediaAttachment";
10
10
  export type TextAlignment = "left" | "center" | "right";
11
11
  export type EditorVariant = "outlined" | "flat" | "plain";
12
+ export type MediaKind = "image" | "video";
12
13
  export interface MediaAttachment {
13
- kind: "image";
14
+ kind: MediaKind;
14
15
  uri: string;
16
+ sourceUri?: string;
17
+ fileName?: string;
18
+ extension?: string;
19
+ contentType?: string;
20
+ fileSize?: number;
15
21
  width?: number;
16
22
  height?: number;
17
23
  alt?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chaitrabhairappa/react-native-rich-text-editor",
3
- "version": "3.3.0",
3
+ "version": "3.4.0",
4
4
  "description": "A high-performance native rich text editor for React Native (New Architecture / Fabric only)",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
package/src/index.tsx CHANGED
@@ -76,11 +76,25 @@ const RichTextEditor = React.forwardRef<
76
76
  );
77
77
 
78
78
  const dispatchInsertMediaAttachment = React.useCallback(
79
- (uri: string) => {
80
- if (typeof uri !== "string" || uri.trim().length === 0) return;
79
+ (mediaAttachment: MediaAttachment) => {
80
+ if (
81
+ !mediaAttachment ||
82
+ typeof mediaAttachment !== "object" ||
83
+ typeof mediaAttachment.uri !== "string" ||
84
+ mediaAttachment.uri.trim().length === 0
85
+ ) {
86
+ return;
87
+ }
88
+
89
+ const normalizedMediaAttachment: MediaAttachment = {
90
+ ...mediaAttachment,
91
+ sourceUri: mediaAttachment.sourceUri ?? mediaAttachment.uri,
92
+ };
81
93
 
82
94
  if (Platform.OS === "android") {
83
- dispatchAndroidCommand("insertMediaAttachment", [uri]);
95
+ dispatchAndroidCommand("insertMediaAttachment", [
96
+ JSON.stringify(normalizedMediaAttachment),
97
+ ]);
84
98
  return;
85
99
  }
86
100
 
@@ -104,7 +118,10 @@ const RichTextEditor = React.forwardRef<
104
118
  manager as {
105
119
  insertMediaAttachment: (tag: number, value: string) => void;
106
120
  }
107
- ).insertMediaAttachment(nativeTag, uri);
121
+ ).insertMediaAttachment(
122
+ nativeTag,
123
+ JSON.stringify(normalizedMediaAttachment),
124
+ );
108
125
  }
109
126
  }
110
127
  },
@@ -169,13 +186,7 @@ const RichTextEditor = React.forwardRef<
169
186
  /* Native toolbar handles this */
170
187
  },
171
188
  insertMediaAttachment: (mediaAttachment: MediaAttachment) => {
172
- if (
173
- mediaAttachment &&
174
- typeof mediaAttachment === "object" &&
175
- typeof mediaAttachment.uri === "string"
176
- ) {
177
- dispatchInsertMediaAttachment(mediaAttachment.uri);
178
- }
189
+ dispatchInsertMediaAttachment(mediaAttachment);
179
190
  },
180
191
  undo: () => {
181
192
  /* Native toolbar handles this */
@@ -297,6 +308,7 @@ export type {
297
308
  Block,
298
309
  BlockType,
299
310
  StyleRange,
311
+ MediaKind,
300
312
  MediaAttachment,
301
313
  TextAlignment,
302
314
  EditorVariant,
package/src/types.ts CHANGED
@@ -25,10 +25,16 @@ export type BlockType =
25
25
  | "mediaAttachment";
26
26
  export type TextAlignment = "left" | "center" | "right";
27
27
  export type EditorVariant = "outlined" | "flat" | "plain";
28
+ export type MediaKind = "image" | "video";
28
29
 
29
30
  export interface MediaAttachment {
30
- kind: "image";
31
+ kind: MediaKind;
31
32
  uri: string;
33
+ sourceUri?: string;
34
+ fileName?: string;
35
+ extension?: string;
36
+ contentType?: string;
37
+ fileSize?: number;
32
38
  width?: number;
33
39
  height?: number;
34
40
  alt?: string;