react-native-attachment-kit 1.1.1 → 1.1.2

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.
Files changed (25) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +2 -1
  3. package/android/src/main/libs/rnattachmentkit-release.aar +0 -0
  4. package/android/src/newarch/java/com/rnattachmentkit/RNAttachmentKitModule.kt +7 -0
  5. package/android/src/oldarch/java/com/rnattachmentkit/RNAttachmentKitModule.kt +7 -0
  6. package/ios/RNAttachmentKit.swift +17 -0
  7. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Assets.car +0 -0
  8. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios.abi.json +173 -45
  9. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios.private.swiftinterface +2 -0
  10. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios.swiftinterface +2 -0
  11. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/RNAttachmentKit +0 -0
  12. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/_CodeSignature/CodeDirectory +0 -0
  13. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/_CodeSignature/CodeResources +10 -10
  14. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/_CodeSignature/CodeSignature +0 -0
  15. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios-simulator.abi.json +173 -45
  16. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +2 -0
  17. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface +2 -0
  18. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/x86_64-apple-ios-simulator.abi.json +173 -45
  19. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +2 -0
  20. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +2 -0
  21. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/RNAttachmentKit +0 -0
  22. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/_CodeSignature/CodeDirectory +0 -0
  23. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/_CodeSignature/CodeResources +16 -16
  24. package/package.json +1 -1
  25. package/src/types.ts +9 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ - **Viewer (iOS): a video page with no poster image now shows the video**. The player layer sits inside the page's image view, and that view only got a size from a loaded image, so with an empty poster URL or a failed poster download the layer stayed 0×0: the video played (sound, position moving) on an empty page. `ViewerVideoItemView` now sizes the area from `presentationSize` (rotation metadata included), or the page size until that is known. Once a poster arrives its size is used, as before.
6
+ - Checked on the iOS simulator (test harness): empty poster and 404 poster with local / remote / download-to-`cacheFile` videos, landscape, portrait and 90°-rotation-metadata files. Poster pages have the same frames as before; a poster arriving late, swiping away and back, pinch zoom, and the zoom close from the current frame all work.
7
+
8
+ ## 1.1.2 — 2026-11-03
9
+
10
+ - **Viewer: `underlayViewTag` — the photo moves *behind* the app's translucent bar during the zoom open / close (iOS + Android `useOverlayViewer`)**. With 1.1.1's clip the moving photo was only cut at the bar, so the part under the bar was simply missing while it moved (and an app that kept its cell visible showed that part already in place). Now the app places an empty view right below the bar and passes its RN tag; the kit draws a copy of the moving photo and of the source mask inside that view: the bar's live blur shows the photo sliding under it and the source cell's under-bar part is hidden by the copied mask from the first frame until the close ends. The clipped photo in the viewer window stays as before (so it never covers the bar). The first version of this option (`closeBelowViewTag`, never published) inserted the copy into the bar's parent; that shifted React's child indexes and debug builds crashed with "Attempt to unmount a view which has a different index", so the copy now only goes inside the app's empty view.
11
+ - iOS: `ZoomTransitionAnimator.underView` (weak, the empty view) — under layer + copy mask (follows `updateMaskView`) + copy image animated with the same frames; removed when the close ends (zoom, fade or slide). The bridge resolves the tag with `viewWithTag` (Fabric sets component views' `tag` to the RN tag).
12
+ - Android: `ImageViewerOverlayView` finds the empty view by id (= RN tag) and adds a `FrameLayout` inside it, laid out by hand (RN view groups don't lay out foreign children); the copy image has `activityRoot`'s size/place so it reuses the dummy's matrix and outline each frame; the copy mask follows the mask (position, drawable, visibility). Removed in `cleanup()`.
13
+ - Android: the copy image also gets `clipBounds` = this frame's cell. The app's blur view captures the screen on a software canvas, where `clipToOutline` is ignored, so the whole uncut photo went into the blur and the bar turned lighter until the copy was removed at the end of the close (seen with a large single photo; iOS not affected). `clipBounds` applies in both drawing paths. Measured on an emulator, same card, dark mode, mean brightness of the title row: settled 24.1, last frames of the close 30.9 before; settled 24.6, last frames 24.7 – 24.9 after.
14
+ - Checked on the iOS simulator and an Android emulator (HeyTalk feed).
15
+
3
16
  ## 1.1.1 — 2026-11-03
4
17
 
5
18
  - **Viewer: `sourceClipInsets` / `sourceClipRect` options — the zoom open / close stays behind translucent bars (iOS + Android `useOverlayViewer`)**. The moving photo and the `hideSourceImage` mask are drawn in the window above the app, so a thumbnail half under the app's translucent top bar flew back *over* the bar and the mask covered the bar too. With a clip area (screen-edge insets, a rect in `sourceRect` coordinates, or both = intersection) they are drawn only inside it: on open the photo starts cut at the bar and the clip widens to the full screen during the second half (the viewer itself is never cut); on close it narrows back in the first 20 % (the viewer background turns transparent at once on close, so the photo never covers the bar), and the part under the bar disappears behind it. Checked on the iOS simulator (HeyTalk feed): a cell half under the translucent top bar opens from behind the bar and closes back behind it; a cell clear of the bar animates as before. `updateSourceRect` takes the same keys (changed only when passed, `null` = no clip) for paging to another thumbnail. Without the options nothing changes.
package/README.md CHANGED
@@ -343,6 +343,7 @@ ref.current?.measure((x, y, width, height, pageX, pageY) => {
343
343
  | `hideSourceImage` | `boolean` | A native mask hides the source thumbnail while the viewer is open. |
344
344
  | `sourceClipInsets` | `{ top?, bottom?, left?, right? }` | Screen-edge insets of the area where the **moving photo and the `hideSourceImage` mask** are drawn during the zoom open / close (e.g. `{ top: headerHeight, bottom: tabBarHeight }` for translucent bars). A thumbnail half under a translucent bar then slides **behind** the bar instead of over it. The clip widens to the full screen in the second half of the open (when the viewer background covers the bar) and narrows in the first 20 % of the close, so the viewer itself is never cut. iOS + Android `useOverlayViewer`. |
345
345
  | `sourceClipRect` | `SourceRect` | Same, as a rect in `sourceRect` coordinates (e.g. a list area inside a sheet). With both, the intersection is used. Omit both = no clipping (as before). |
346
+ | `underlayViewTag` | `number` | `findNodeHandle` of an **empty** view the app places right below its translucent bar: full screen, no children, `collapsable={false}`, `pointerEvents="none"`, rendered after the list and before the bar. During the zoom open / close a copy of the moving photo and of the source mask is drawn inside it, so the bar's live blur shows the photo sliding behind it — clipping alone only hides the part under the bar. Use with `sourceClipInsets` / `sourceClipRect`. Never pass a view that has React children: native views added there shift React's child indexes and the app can crash. iOS + Android `useOverlayViewer`. |
346
347
 
347
348
  **Actions**
348
349
 
@@ -371,7 +372,7 @@ ref.current?.measure((x, y, width, height, pageX, pageY) => {
371
372
  | `useOverlayViewer: true` | ⭐ View on top of the host Activity's window — no `AppState` blip, background changes render in real time. Wins over `useDialogViewer`. |
372
373
 
373
374
  #### `updateSourceRect(rect: ViewerSourceUpdate): Promise<void>`
374
- Updates where the viewer closes to (e.g. after paging to another thumbnail or scrolling). `ViewerSourceUpdate = SourceRect & { sourceBorderRadius?, sourceBorderCorners?, sourceClipRect?, sourceClipInsets? }` — the clip keys change only when passed (`null` = stop clipping).
375
+ Updates where the viewer closes to (e.g. after paging to another thumbnail or scrolling). `ViewerSourceUpdate = SourceRect & { sourceBorderRadius?, sourceBorderCorners?, sourceClipRect?, sourceClipInsets?, underlayViewTag? }` — the clip keys change only when passed (`null` = stop clipping).
375
376
 
376
377
  #### `injectImageCache(url: string, localPath: string): Promise<boolean>`
377
378
  Seeds the viewer's image cache with a local file for a remote URL, so it opens instantly without network.
@@ -215,6 +215,9 @@ class RNAttachmentKitModule(reactContext: ReactApplicationContext) :
215
215
  // 잘라내기 영역 — 넘긴 키만 바뀜 (useOverlayViewer 뷰어만 반영)
216
216
  clipArrayOf(options, "sourceClipRect")?.let { intent.putExtra("sourceClipRect", it) }
217
217
  clipArrayOf(options, "sourceClipInsets")?.let { intent.putExtra("sourceClipInsets", it) }
218
+ if (options.hasKey("underlayViewTag")) {
219
+ intent.putExtra("underlayViewTag", if (options.isNull("underlayViewTag")) 0 else options.getDouble("underlayViewTag").toInt())
220
+ }
218
221
  androidx.localbroadcastmanager.content.LocalBroadcastManager.getInstance(reactApplicationContext)
219
222
  .sendBroadcast(intent)
220
223
 
@@ -688,6 +691,10 @@ class RNAttachmentKitModule(reactContext: ReactApplicationContext) :
688
691
  // 잘라내기 영역 (열림·닫힘 중 사진과 가림 판이 그려지는 곳) — 이 오버레이 뷰어만
689
692
  clipArrayOf(options, "sourceClipRect")?.let { putFloatArray("sourceClipRect", it) }
690
693
  clipArrayOf(options, "sourceClipInsets")?.let { putFloatArray("sourceClipInsets", it) }
694
+ // 앱 쪽 사본을 그릴 자리 — 앱이 둔 빈 RN 뷰 (태그 = view id)
695
+ if (options.hasKey("underlayViewTag") && !options.isNull("underlayViewTag")) {
696
+ putInt("underlayViewTag", options.getDouble("underlayViewTag").toInt())
697
+ }
691
698
  // placeholderImages: 타입/뷰어 코드에는 있었지만 브릿지에서 한 번도 전달되지 않았던
692
699
  // 필드. 네이티브 뷰어가 onlyRetrieveFromCache(true)로 첫 프레임을 즉시 그리려 할 때
693
700
  // 쓰는 저해상도 대체 이미지 목록입니다(원본 다운로드 전 임시 표시용).
@@ -525,6 +525,9 @@ class RNAttachmentKitModule(reactContext: ReactApplicationContext) :
525
525
  // 잘라내기 영역 — 넘긴 키만 바뀜 (useOverlayViewer 뷰어만 반영)
526
526
  clipArrayOf(options, "sourceClipRect")?.let { intent.putExtra("sourceClipRect", it) }
527
527
  clipArrayOf(options, "sourceClipInsets")?.let { intent.putExtra("sourceClipInsets", it) }
528
+ if (options.hasKey("underlayViewTag")) {
529
+ intent.putExtra("underlayViewTag", if (options.isNull("underlayViewTag")) 0 else options.getDouble("underlayViewTag").toInt())
530
+ }
528
531
  androidx.localbroadcastmanager.content.LocalBroadcastManager.getInstance(reactApplicationContext).sendBroadcast(intent)
529
532
  promise.resolve(null)
530
533
  }
@@ -697,6 +700,10 @@ class RNAttachmentKitModule(reactContext: ReactApplicationContext) :
697
700
  // 잘라내기 영역 (열림·닫힘 중 사진과 가림 판이 그려지는 곳) — 이 오버레이 뷰어만
698
701
  clipArrayOf(options, "sourceClipRect")?.let { putFloatArray("sourceClipRect", it) }
699
702
  clipArrayOf(options, "sourceClipInsets")?.let { putFloatArray("sourceClipInsets", it) }
703
+ // 앱 쪽 사본을 그릴 자리 — 앱이 둔 빈 RN 뷰 (태그 = view id)
704
+ if (options.hasKey("underlayViewTag") && !options.isNull("underlayViewTag")) {
705
+ putInt("underlayViewTag", options.getDouble("underlayViewTag").toInt())
706
+ }
700
707
  // placeholderImages: 타입/뷰어 코드에는 있었지만 브릿지에서 한 번도 전달되지 않았던
701
708
  // 필드. 네이티브 뷰어가 onlyRetrieveFromCache(true)로 첫 프레임을 즉시 그리려 할 때
702
709
  // 쓰는 저해상도 대체 이미지 목록입니다(원본 다운로드 전 임시 표시용).
@@ -182,6 +182,9 @@ class RNAttachmentKit: RCTEventEmitter {
182
182
  if optDict.keys.contains("sourceClipInsets") {
183
183
  self.zoomAnimator.sourceClipInsets = RNAttachmentKit.parseInsets(optDict["sourceClipInsets"])
184
184
  }
185
+ if optDict.keys.contains("underlayViewTag") {
186
+ self.zoomAnimator.underView = RNAttachmentKit.viewForTag(optDict["underlayViewTag"])
187
+ }
185
188
  self.zoomAnimator.updateMaskView()
186
189
 
187
190
  resolve(true)
@@ -210,6 +213,19 @@ class RNAttachmentKit: RCTEventEmitter {
210
213
  return CGRect(x: x, y: y, width: w, height: h)
211
214
  }
212
215
 
216
+ /// RN 뷰 태그(findNodeHandle) → 앱 창의 네이티브 뷰. Fabric 은 컴포넌트 뷰의 tag 에 RN 태그를 넣음. 없으면 nil (메인 스레드)
217
+ private static func viewForTag(_ v: Any?) -> UIView? {
218
+ guard let n = v as? NSNumber, n.intValue > 0 else { return nil }
219
+ let tag = n.intValue
220
+ for scene in UIApplication.shared.connectedScenes {
221
+ guard let ws = scene as? UIWindowScene else { continue }
222
+ for w in ws.windows {
223
+ if let found = w.viewWithTag(tag) { return found }
224
+ }
225
+ }
226
+ return nil
227
+ }
228
+
213
229
  /// { top, bottom, left, right } (빠진 값 0). 객체가 아니면 nil
214
230
  private static func parseInsets(_ v: Any?) -> UIEdgeInsets? {
215
231
  guard let d = v as? NSDictionary else { return nil }
@@ -571,6 +587,7 @@ class RNAttachmentKit: RCTEventEmitter {
571
587
  // 애니메이터는 재사용되므로 이번 호출 값으로 덮어씀 (안 주면 자르지 않음)
572
588
  self.zoomAnimator.sourceClipRect = sourceClipRect
573
589
  self.zoomAnimator.sourceClipInsets = sourceClipInsets
590
+ self.zoomAnimator.underView = RNAttachmentKit.viewForTag(options["underlayViewTag"])
574
591
  // Reset any sourceImage left over from a previous openViewer() call - it's only
575
592
  // meant to carry this call's local placeholder (see below), and must not leak
576
593
  // into a later call that has no placeholder of its own.
@@ -34119,6 +34119,134 @@
34119
34119
  ],
34120
34120
  "funcSelfKind": "NonMutating"
34121
34121
  },
34122
+ {
34123
+ "kind": "Var",
34124
+ "name": "underView",
34125
+ "printedName": "underView",
34126
+ "children": [
34127
+ {
34128
+ "kind": "TypeNominal",
34129
+ "name": "WeakStorage",
34130
+ "printedName": "UIKit.UIView?"
34131
+ }
34132
+ ],
34133
+ "declKind": "Var",
34134
+ "usr": "s:15RNAttachmentKit22ZoomTransitionAnimatorC9underViewSo6UIViewCSgvp",
34135
+ "mangledName": "$s15RNAttachmentKit22ZoomTransitionAnimatorC9underViewSo6UIViewCSgvp",
34136
+ "moduleName": "RNAttachmentKit",
34137
+ "declAttributes": [
34138
+ "HasInitialValue",
34139
+ "Preconcurrency",
34140
+ "Custom",
34141
+ "HasStorage",
34142
+ "ReferenceOwnership",
34143
+ "AccessControl",
34144
+ "RawDocComment"
34145
+ ],
34146
+ "ownership": 1,
34147
+ "hasStorage": true,
34148
+ "accessors": [
34149
+ {
34150
+ "kind": "Accessor",
34151
+ "name": "Get",
34152
+ "printedName": "Get()",
34153
+ "children": [
34154
+ {
34155
+ "kind": "TypeNominal",
34156
+ "name": "Optional",
34157
+ "printedName": "UIKit.UIView?",
34158
+ "children": [
34159
+ {
34160
+ "kind": "TypeNominal",
34161
+ "name": "UIView",
34162
+ "printedName": "UIKit.UIView",
34163
+ "usr": "c:objc(cs)UIView"
34164
+ }
34165
+ ],
34166
+ "usr": "s:Sq"
34167
+ }
34168
+ ],
34169
+ "declKind": "Accessor",
34170
+ "usr": "s:15RNAttachmentKit22ZoomTransitionAnimatorC9underViewSo6UIViewCSgvg",
34171
+ "mangledName": "$s15RNAttachmentKit22ZoomTransitionAnimatorC9underViewSo6UIViewCSgvg",
34172
+ "moduleName": "RNAttachmentKit",
34173
+ "implicit": true,
34174
+ "accessorKind": "get"
34175
+ },
34176
+ {
34177
+ "kind": "Accessor",
34178
+ "name": "Set",
34179
+ "printedName": "Set()",
34180
+ "children": [
34181
+ {
34182
+ "kind": "TypeNominal",
34183
+ "name": "Void",
34184
+ "printedName": "()"
34185
+ },
34186
+ {
34187
+ "kind": "TypeNominal",
34188
+ "name": "Optional",
34189
+ "printedName": "UIKit.UIView?",
34190
+ "children": [
34191
+ {
34192
+ "kind": "TypeNominal",
34193
+ "name": "UIView",
34194
+ "printedName": "UIKit.UIView",
34195
+ "usr": "c:objc(cs)UIView"
34196
+ }
34197
+ ],
34198
+ "usr": "s:Sq"
34199
+ }
34200
+ ],
34201
+ "declKind": "Accessor",
34202
+ "usr": "s:15RNAttachmentKit22ZoomTransitionAnimatorC9underViewSo6UIViewCSgvs",
34203
+ "mangledName": "$s15RNAttachmentKit22ZoomTransitionAnimatorC9underViewSo6UIViewCSgvs",
34204
+ "moduleName": "RNAttachmentKit",
34205
+ "implicit": true,
34206
+ "accessorKind": "set"
34207
+ },
34208
+ {
34209
+ "kind": "Accessor",
34210
+ "name": "Modify",
34211
+ "printedName": "Modify()",
34212
+ "children": [
34213
+ {
34214
+ "kind": "TypeNominal",
34215
+ "name": "Void",
34216
+ "printedName": "()"
34217
+ }
34218
+ ],
34219
+ "declKind": "Accessor",
34220
+ "usr": "s:15RNAttachmentKit22ZoomTransitionAnimatorC9underViewSo6UIViewCSgvM",
34221
+ "mangledName": "$s15RNAttachmentKit22ZoomTransitionAnimatorC9underViewSo6UIViewCSgvM",
34222
+ "moduleName": "RNAttachmentKit",
34223
+ "implicit": true,
34224
+ "accessorKind": "_modify"
34225
+ }
34226
+ ]
34227
+ },
34228
+ {
34229
+ "kind": "Function",
34230
+ "name": "removeUnderLayer",
34231
+ "printedName": "removeUnderLayer()",
34232
+ "children": [
34233
+ {
34234
+ "kind": "TypeNominal",
34235
+ "name": "Void",
34236
+ "printedName": "()"
34237
+ }
34238
+ ],
34239
+ "declKind": "Func",
34240
+ "usr": "s:15RNAttachmentKit22ZoomTransitionAnimatorC16removeUnderLayeryyF",
34241
+ "mangledName": "$s15RNAttachmentKit22ZoomTransitionAnimatorC16removeUnderLayeryyF",
34242
+ "moduleName": "RNAttachmentKit",
34243
+ "declAttributes": [
34244
+ "Preconcurrency",
34245
+ "Custom",
34246
+ "AccessControl"
34247
+ ],
34248
+ "funcSelfKind": "NonMutating"
34249
+ },
34122
34250
  {
34123
34251
  "kind": "Function",
34124
34252
  "name": "updateMaskView",
@@ -63078,7 +63206,7 @@
63078
63206
  {
63079
63207
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/RemoteImageViewerViewController.swift",
63080
63208
  "kind": "BooleanLiteral",
63081
- "offset": 102668,
63209
+ "offset": 102974,
63082
63210
  "length": 5,
63083
63211
  "value": "false"
63084
63212
  },
@@ -63694,14 +63822,14 @@
63694
63822
  {
63695
63823
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ZoomTransitionAnimator.swift",
63696
63824
  "kind": "FloatLiteral",
63697
- "offset": 3644,
63825
+ "offset": 5793,
63698
63826
  "length": 4,
63699
63827
  "value": "0.37"
63700
63828
  },
63701
63829
  {
63702
63830
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ZoomTransitionAnimator.swift",
63703
63831
  "kind": "FloatLiteral",
63704
- "offset": 3694,
63832
+ "offset": 5843,
63705
63833
  "length": 4,
63706
63834
  "value": "0.37"
63707
63835
  },
@@ -66340,294 +66468,294 @@
66340
66468
  {
66341
66469
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66342
66470
  "kind": "BooleanLiteral",
66343
- "offset": 25082,
66471
+ "offset": 26383,
66344
66472
  "length": 5,
66345
66473
  "value": "false"
66346
66474
  },
66347
66475
  {
66348
66476
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66349
66477
  "kind": "BooleanLiteral",
66350
- "offset": 25210,
66478
+ "offset": 26511,
66351
66479
  "length": 5,
66352
66480
  "value": "false"
66353
66481
  },
66354
66482
  {
66355
66483
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66356
66484
  "kind": "IntegerLiteral",
66357
- "offset": 25422,
66485
+ "offset": 26723,
66358
66486
  "length": 1,
66359
66487
  "value": "0"
66360
66488
  },
66361
66489
  {
66362
66490
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66363
66491
  "kind": "IntegerLiteral",
66364
- "offset": 25574,
66492
+ "offset": 26875,
66365
66493
  "length": 1,
66366
66494
  "value": "0"
66367
66495
  },
66368
66496
  {
66369
66497
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66370
66498
  "kind": "BooleanLiteral",
66371
- "offset": 25726,
66499
+ "offset": 27027,
66372
66500
  "length": 5,
66373
66501
  "value": "false"
66374
66502
  },
66375
66503
  {
66376
66504
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66377
66505
  "kind": "FloatLiteral",
66378
- "offset": 28368,
66506
+ "offset": 29669,
66379
66507
  "length": 3,
66380
66508
  "value": "1.5"
66381
66509
  },
66382
66510
  {
66383
66511
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66384
66512
  "kind": "FloatLiteral",
66385
- "offset": 28412,
66513
+ "offset": 29713,
66386
66514
  "length": 3,
66387
66515
  "value": "1.0"
66388
66516
  },
66389
66517
  {
66390
66518
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66391
66519
  "kind": "IntegerLiteral",
66392
- "offset": 28418,
66520
+ "offset": 29719,
66393
66521
  "length": 2,
66394
66522
  "value": "60"
66395
66523
  },
66396
66524
  {
66397
66525
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66398
66526
  "kind": "BooleanLiteral",
66399
- "offset": 28431,
66527
+ "offset": 29732,
66400
66528
  "length": 4,
66401
66529
  "value": "true"
66402
66530
  },
66403
66531
  {
66404
66532
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66405
66533
  "kind": "FloatLiteral",
66406
- "offset": 28757,
66534
+ "offset": 30058,
66407
66535
  "length": 4,
66408
66536
  "value": "0.05"
66409
66537
  },
66410
66538
  {
66411
66539
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66412
66540
  "kind": "IntegerLiteral",
66413
- "offset": 28829,
66541
+ "offset": 30130,
66414
66542
  "length": 1,
66415
66543
  "value": "0"
66416
66544
  },
66417
66545
  {
66418
66546
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66419
66547
  "kind": "BooleanLiteral",
66420
- "offset": 29005,
66548
+ "offset": 30306,
66421
66549
  "length": 4,
66422
66550
  "value": "true"
66423
66551
  },
66424
66552
  {
66425
66553
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66426
66554
  "kind": "StringLiteral",
66427
- "offset": 32067,
66555
+ "offset": 33368,
66428
66556
  "length": 32,
66429
66557
  "value": "\"RNAttachmentKit.viewerVideoHDR\""
66430
66558
  },
66431
66559
  {
66432
66560
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66433
66561
  "kind": "BooleanLiteral",
66434
- "offset": 32995,
66562
+ "offset": 34296,
66435
66563
  "length": 5,
66436
66564
  "value": "false"
66437
66565
  },
66438
66566
  {
66439
66567
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66440
66568
  "kind": "FloatLiteral",
66441
- "offset": 34756,
66569
+ "offset": 36057,
66442
66570
  "length": 3,
66443
66571
  "value": "0.1"
66444
66572
  },
66445
66573
  {
66446
66574
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66447
66575
  "kind": "IntegerLiteral",
66448
- "offset": 34768,
66576
+ "offset": 36069,
66449
66577
  "length": 1,
66450
66578
  "value": "1"
66451
66579
  },
66452
66580
  {
66453
66581
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66454
66582
  "kind": "BooleanLiteral",
66455
- "offset": 35464,
66583
+ "offset": 36765,
66456
66584
  "length": 5,
66457
66585
  "value": "false"
66458
66586
  },
66459
66587
  {
66460
66588
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66461
66589
  "kind": "BooleanLiteral",
66462
- "offset": 37170,
66590
+ "offset": 38471,
66463
66591
  "length": 5,
66464
66592
  "value": "false"
66465
66593
  },
66466
66594
  {
66467
66595
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66468
66596
  "kind": "FloatLiteral",
66469
- "offset": 38886,
66597
+ "offset": 40187,
66470
66598
  "length": 4,
66471
66599
  "value": "0.75"
66472
66600
  },
66473
66601
  {
66474
66602
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66475
66603
  "kind": "IntegerLiteral",
66476
- "offset": 38893,
66604
+ "offset": 40194,
66477
66605
  "length": 1,
66478
66606
  "value": "1"
66479
66607
  },
66480
66608
  {
66481
66609
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66482
66610
  "kind": "StringLiteral",
66483
- "offset": 38960,
66611
+ "offset": 40261,
66484
66612
  "length": 12,
66485
66613
  "value": "\"pause.fill\""
66486
66614
  },
66487
66615
  {
66488
66616
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66489
66617
  "kind": "IntegerLiteral",
66490
- "offset": 39032,
66618
+ "offset": 40333,
66491
66619
  "length": 2,
66492
66620
  "value": "26"
66493
66621
  },
66494
66622
  {
66495
66623
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66496
66624
  "kind": "StringLiteral",
66497
- "offset": 39107,
66625
+ "offset": 40408,
66498
66626
  "length": 11,
66499
66627
  "value": "\"play.fill\""
66500
66628
  },
66501
66629
  {
66502
66630
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66503
66631
  "kind": "IntegerLiteral",
66504
- "offset": 39178,
66632
+ "offset": 40479,
66505
66633
  "length": 2,
66506
66634
  "value": "26"
66507
66635
  },
66508
66636
  {
66509
66637
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66510
66638
  "kind": "BooleanLiteral",
66511
- "offset": 39860,
66639
+ "offset": 41161,
66512
66640
  "length": 4,
66513
66641
  "value": "true"
66514
66642
  },
66515
66643
  {
66516
66644
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66517
66645
  "kind": "IntegerLiteral",
66518
- "offset": 41239,
66646
+ "offset": 42540,
66519
66647
  "length": 2,
66520
66648
  "value": "22"
66521
66649
  },
66522
66650
  {
66523
66651
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66524
66652
  "kind": "IntegerLiteral",
66525
- "offset": 43347,
66653
+ "offset": 44648,
66526
66654
  "length": 2,
66527
66655
  "value": "22"
66528
66656
  },
66529
66657
  {
66530
66658
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66531
66659
  "kind": "IntegerLiteral",
66532
- "offset": 44821,
66660
+ "offset": 46122,
66533
66661
  "length": 1,
66534
66662
  "value": "0"
66535
66663
  },
66536
66664
  {
66537
66665
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66538
66666
  "kind": "BooleanLiteral",
66539
- "offset": 49666,
66667
+ "offset": 50967,
66540
66668
  "length": 4,
66541
66669
  "value": "true"
66542
66670
  },
66543
66671
  {
66544
66672
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66545
66673
  "kind": "BooleanLiteral",
66546
- "offset": 50008,
66674
+ "offset": 51309,
66547
66675
  "length": 5,
66548
66676
  "value": "false"
66549
66677
  },
66550
66678
  {
66551
66679
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66552
66680
  "kind": "BooleanLiteral",
66553
- "offset": 50045,
66681
+ "offset": 51346,
66554
66682
  "length": 4,
66555
66683
  "value": "true"
66556
66684
  },
66557
66685
  {
66558
66686
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66559
66687
  "kind": "BooleanLiteral",
66560
- "offset": 50086,
66688
+ "offset": 51387,
66561
66689
  "length": 5,
66562
66690
  "value": "false"
66563
66691
  },
66564
66692
  {
66565
66693
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66566
66694
  "kind": "IntegerLiteral",
66567
- "offset": 50127,
66695
+ "offset": 51428,
66568
66696
  "length": 1,
66569
66697
  "value": "0"
66570
66698
  },
66571
66699
  {
66572
66700
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66573
66701
  "kind": "IntegerLiteral",
66574
- "offset": 50160,
66702
+ "offset": 51461,
66575
66703
  "length": 1,
66576
66704
  "value": "1"
66577
66705
  },
66578
66706
  {
66579
66707
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66580
66708
  "kind": "Array",
66581
- "offset": 50233,
66709
+ "offset": 51534,
66582
66710
  "length": 16,
66583
66711
  "value": "[0.5, 1, 1.5, 2]"
66584
66712
  },
66585
66713
  {
66586
66714
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66587
66715
  "kind": "IntegerLiteral",
66588
- "offset": 50383,
66716
+ "offset": 51684,
66589
66717
  "length": 2,
66590
66718
  "value": "16"
66591
66719
  },
66592
66720
  {
66593
66721
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66594
66722
  "kind": "IntegerLiteral",
66595
- "offset": 50547,
66723
+ "offset": 51848,
66596
66724
  "length": 2,
66597
66725
  "value": "16"
66598
66726
  },
66599
66727
  {
66600
66728
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66601
66729
  "kind": "IntegerLiteral",
66602
- "offset": 56507,
66730
+ "offset": 57808,
66603
66731
  "length": 2,
66604
66732
  "value": "-1"
66605
66733
  },
66606
66734
  {
66607
66735
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66608
66736
  "kind": "IntegerLiteral",
66609
- "offset": 56544,
66737
+ "offset": 57845,
66610
66738
  "length": 2,
66611
66739
  "value": "-1"
66612
66740
  },
66613
66741
  {
66614
66742
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66615
66743
  "kind": "IntegerLiteral",
66616
- "offset": 56749,
66744
+ "offset": 58050,
66617
66745
  "length": 1,
66618
66746
  "value": "1"
66619
66747
  },
66620
66748
  {
66621
66749
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66622
66750
  "kind": "BooleanLiteral",
66623
- "offset": 61231,
66751
+ "offset": 62532,
66624
66752
  "length": 5,
66625
66753
  "value": "false"
66626
66754
  },
66627
66755
  {
66628
66756
  "filePath": "\/Users\/mike\/source\/PaidModules\/RNAttachmentKit\/RNAttachmentKit\/ios\/RNAttachmentKit\/ViewerVideoSupport.swift",
66629
66757
  "kind": "BooleanLiteral",
66630
- "offset": 61266,
66758
+ "offset": 62567,
66631
66759
  "length": 5,
66632
66760
  "value": "false"
66633
66761
  },
@@ -703,6 +703,8 @@ extension RNAttachmentKit.MediaGalleryViewController : UIKit.UICollectionViewDat
703
703
  @_Concurrency.MainActor @preconcurrency public var sourceClipRect: CoreFoundation.CGRect?
704
704
  @_Concurrency.MainActor @preconcurrency public var sourceClipInsets: UIKit.UIEdgeInsets?
705
705
  @_Concurrency.MainActor @preconcurrency public func clipRect(in bounds: CoreFoundation.CGRect) -> CoreFoundation.CGRect?
706
+ @_Concurrency.MainActor @preconcurrency weak public var underView: UIKit.UIView?
707
+ @_Concurrency.MainActor @preconcurrency public func removeUnderLayer()
706
708
  @_Concurrency.MainActor @preconcurrency public func updateMaskView()
707
709
  @_Concurrency.MainActor @preconcurrency public var openDuration: Swift.Double
708
710
  @_Concurrency.MainActor @preconcurrency public var closeDuration: Swift.Double