@shortkitsdk/react-native 0.2.23 → 0.2.25

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 (46) hide show
  1. package/README.md +151 -0
  2. package/android/libs/shortkit-release.aar +0 -0
  3. package/android/src/main/java/com/shortkit/reactnative/ReactOverlayHost.kt +19 -1
  4. package/android/src/main/java/com/shortkit/reactnative/ShortKitBridge.kt +10 -7
  5. package/android/src/main/java/com/shortkit/reactnative/ShortKitModule.kt +43 -0
  6. package/ios/ReactCarouselOverlayHost.swift +51 -3
  7. package/ios/ReactOverlayHost.swift +67 -7
  8. package/ios/ReactVideoCarouselOverlayHost.swift +181 -19
  9. package/ios/SKFabricSurfaceWrapper.mm +7 -1
  10. package/ios/ShortKitBridge.swift +140 -3
  11. package/ios/ShortKitFeedView.swift +20 -0
  12. package/ios/ShortKitFeedViewManager.mm +1 -0
  13. package/ios/ShortKitModule.mm +56 -0
  14. package/ios/ShortKitSDK.xcframework/Info.plist +5 -5
  15. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Info.plist +2 -2
  16. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.abi.json +4745 -456
  17. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.private.swiftinterface +127 -5
  18. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  19. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios.swiftinterface +127 -5
  20. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/ShortKitSDK +0 -0
  21. package/ios/ShortKitSDK.xcframework/ios-arm64/ShortKitSDK.framework/_CodeSignature/CodeResources +9 -9
  22. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Info.plist +2 -2
  23. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +4745 -456
  24. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +127 -5
  25. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  26. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +127 -5
  27. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json +4745 -456
  28. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +127 -5
  29. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  30. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/Modules/ShortKitSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +127 -5
  31. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/ShortKitSDK +0 -0
  32. package/ios/ShortKitSDK.xcframework/ios-arm64_x86_64-simulator/ShortKitSDK.framework/_CodeSignature/CodeResources +17 -17
  33. package/package.json +1 -1
  34. package/src/ShortKitCarouselOverlaySurface.tsx +38 -10
  35. package/src/ShortKitCommands.ts +7 -0
  36. package/src/ShortKitContext.ts +6 -0
  37. package/src/ShortKitFeed.tsx +23 -7
  38. package/src/ShortKitOverlaySurface.tsx +59 -23
  39. package/src/ShortKitProvider.tsx +45 -1
  40. package/src/ShortKitVideoCarouselOverlaySurface.tsx +51 -5
  41. package/src/index.ts +4 -0
  42. package/src/serialization.ts +37 -1
  43. package/src/specs/NativeShortKitModule.ts +80 -2
  44. package/src/specs/ShortKitFeedViewNativeComponent.ts +8 -0
  45. package/src/types.ts +71 -2
  46. package/src/useShortKitCarousel.ts +80 -0
@@ -162,6 +162,43 @@ final public class SegmentPrefetcher : ShortKitSDK.SegmentPrefetcherProtocol {
162
162
  final public func resume()
163
163
  @objc deinit
164
164
  }
165
+ public struct CarouselCompletionEvent : Swift.Equatable, Swift.Sendable {
166
+ public let contentItem: ShortKitSDK.ContentItem
167
+ public let indexInCarousel: Swift.Int
168
+ public let carouselItem: ShortKitSDK.VideoCarouselItem
169
+ public let wasLast: Swift.Bool
170
+ public let willAutoAdvance: Swift.Bool
171
+ public init(contentItem: ShortKitSDK.ContentItem, indexInCarousel: Swift.Int, carouselItem: ShortKitSDK.VideoCarouselItem, wasLast: Swift.Bool, willAutoAdvance: Swift.Bool)
172
+ public static func == (a: ShortKitSDK.CarouselCompletionEvent, b: ShortKitSDK.CarouselCompletionEvent) -> Swift.Bool
173
+ }
174
+ final public class ShortKitCarousel {
175
+ public init()
176
+ @discardableResult
177
+ final public func next() -> Swift.Bool
178
+ @discardableResult
179
+ final public func previous() -> Swift.Bool
180
+ @discardableResult
181
+ final public func setActiveIndex(_ index: Swift.Int) -> Swift.Bool
182
+ final public var activeIndexValue: Swift.Int? {
183
+ get
184
+ }
185
+ final public var videoCountValue: Swift.Int? {
186
+ get
187
+ }
188
+ final public var activeCarouselItemValue: ShortKitSDK.VideoCarouselItem? {
189
+ get
190
+ }
191
+ final public var activeIndex: Combine.AnyPublisher<Swift.Int?, Swift.Never> {
192
+ get
193
+ }
194
+ final public var activeCarouselChanged: Combine.AnyPublisher<ShortKitSDK.VideoCarouselItem?, Swift.Never> {
195
+ get
196
+ }
197
+ final public var activeVideoCompleted: Combine.AnyPublisher<ShortKitSDK.CarouselCompletionEvent, Swift.Never> {
198
+ get
199
+ }
200
+ @objc deinit
201
+ }
165
202
  public enum FeedHeight : Swift.Codable, Swift.Equatable, Swift.Sendable {
166
203
  case fullscreen
167
204
  case percentage(CoreFoundation.CGFloat)
@@ -206,6 +243,7 @@ public struct FeedConfig : Swift.Codable {
206
243
  public var videoCarouselOverlay: ShortKitSDK.VideoCarouselOverlayMode
207
244
  public var surveyOverlay: ShortKitSDK.SurveyOverlayMode
208
245
  public var adOverlay: ShortKitSDK.AdOverlayMode
246
+ public var liveOverlay: ShortKitSDK.LiveOverlayMode
209
247
  public var muteOnStart: Swift.Bool
210
248
  public var autoplay: Swift.Bool
211
249
  public var feedSource: ShortKitSDK.FeedSource
@@ -213,7 +251,7 @@ public struct FeedConfig : Swift.Codable {
213
251
  public var pullToRefreshEnabled: Swift.Bool
214
252
  public var filter: ShortKitSDK.FeedFilter?
215
253
  public var preload: ShortKitSDK.FeedPreload?
216
- public init(feedHeight: ShortKitSDK.FeedHeight = .fullscreen, scrollAxis: ShortKitSDK.ScrollAxis = .vertical, videoOverlay: ShortKitSDK.VideoOverlayMode = .none, carouselOverlay: ShortKitSDK.CarouselOverlayMode = .none, videoCarouselOverlay: ShortKitSDK.VideoCarouselOverlayMode = .none, surveyOverlay: ShortKitSDK.SurveyOverlayMode = .none, adOverlay: ShortKitSDK.AdOverlayMode = .none, muteOnStart: Swift.Bool = true, autoplay: Swift.Bool = true, feedSource: ShortKitSDK.FeedSource = .algorithmic, coldStartEnabled: Swift.Bool = false, pullToRefreshEnabled: Swift.Bool = true, filter: ShortKitSDK.FeedFilter? = nil, preload: ShortKitSDK.FeedPreload? = nil)
254
+ public init(feedHeight: ShortKitSDK.FeedHeight = .fullscreen, scrollAxis: ShortKitSDK.ScrollAxis = .vertical, videoOverlay: ShortKitSDK.VideoOverlayMode = .none, carouselOverlay: ShortKitSDK.CarouselOverlayMode = .none, videoCarouselOverlay: ShortKitSDK.VideoCarouselOverlayMode = .none, surveyOverlay: ShortKitSDK.SurveyOverlayMode = .none, adOverlay: ShortKitSDK.AdOverlayMode = .none, liveOverlay: ShortKitSDK.LiveOverlayMode = .default, muteOnStart: Swift.Bool = true, autoplay: Swift.Bool = true, feedSource: ShortKitSDK.FeedSource = .algorithmic, coldStartEnabled: Swift.Bool = false, pullToRefreshEnabled: Swift.Bool = true, filter: ShortKitSDK.FeedFilter? = nil, preload: ShortKitSDK.FeedPreload? = nil)
217
255
  public func encode(to encoder: any Swift.Encoder) throws
218
256
  public init(from decoder: any Swift.Decoder) throws
219
257
  }
@@ -282,6 +320,21 @@ extension ShortKitSDK.AdOverlayMode : Swift.Codable {
282
320
  public init(from decoder: any Swift.Decoder) throws
283
321
  public func encode(to encoder: any Swift.Encoder) throws
284
322
  }
323
+ public enum LiveOverlayMode {
324
+ case none
325
+ case `default`
326
+ case custom(@Sendable () -> any UIKit.UIView & ShortKitSDK.LiveOverlay)
327
+ }
328
+ extension ShortKitSDK.LiveOverlayMode {
329
+ public static func swiftUI<Content>(@SwiftUICore.ViewBuilder content: @escaping @Sendable (ShortKitSDK.ShortKitPlayer) -> Content) -> ShortKitSDK.LiveOverlayMode where Content : SwiftUICore.View
330
+ }
331
+ extension ShortKitSDK.LiveOverlayMode : Swift.Equatable {
332
+ public static func == (lhs: ShortKitSDK.LiveOverlayMode, rhs: ShortKitSDK.LiveOverlayMode) -> Swift.Bool
333
+ }
334
+ extension ShortKitSDK.LiveOverlayMode : Swift.Codable {
335
+ public init(from decoder: any Swift.Decoder) throws
336
+ public func encode(to encoder: any Swift.Encoder) throws
337
+ }
285
338
  public struct DebugMetrics {
286
339
  public var contentId: Swift.String?
287
340
  public var feedIndex: Swift.Int
@@ -385,6 +438,7 @@ public enum ShortKitDownloadError : Swift.Error {
385
438
  @_Concurrency.MainActor @preconcurrency public var onDismiss: (() -> Swift.Void)?
386
439
  @_Concurrency.MainActor @preconcurrency public var onRemainingContentCountChange: ((Swift.Int) -> Swift.Void)?
387
440
  @_Concurrency.MainActor @preconcurrency public var onFeedReady: (() -> Swift.Void)?
441
+ @_Concurrency.MainActor @preconcurrency public var seedThumbnail: UIKit.UIImage?
388
442
  @_Concurrency.MainActor @preconcurrency public init(shortKit: ShortKitSDK.ShortKit, config: ShortKitSDK.FeedConfig, startAtItemId: Swift.String? = nil)
389
443
  @_Concurrency.MainActor public func setFeedItems(_ items: [ShortKitSDK.FeedInput])
390
444
  @_Concurrency.MainActor public func appendFeedItems(_ items: [ShortKitSDK.FeedInput])
@@ -427,6 +481,9 @@ extension ShortKitSDK.ShortKitFeedViewController : ShortKitSDK.ShortKitAdDelegat
427
481
  @_Concurrency.MainActor @preconcurrency public func adDidFail(_ ad: ShortKitSDK.PreparedAd, error: ShortKitSDK.AdError)
428
482
  @_Concurrency.MainActor @preconcurrency public func adDidReceiveClick(_ ad: ShortKitSDK.PreparedAd)
429
483
  }
484
+ public enum SeedThumbnailResolver {
485
+ public static func resolveFromMemory(url: Swift.String) -> UIKit.UIImage?
486
+ }
430
487
  public enum ShortKitRefreshState : Swift.Sendable {
431
488
  case idle
432
489
  case pulling(progress: CoreFoundation.CGFloat)
@@ -491,6 +548,16 @@ public struct CaptionTrack : Swift.Codable, Swift.Equatable, Swift.Sendable {
491
548
  public func encode(to encoder: any Swift.Encoder) throws
492
549
  public init(from decoder: any Swift.Decoder) throws
493
550
  }
551
+ public enum LiveStreamStatus : Swift.String, Swift.Codable, Swift.Equatable, Swift.Sendable {
552
+ case idle
553
+ case active
554
+ case ended
555
+ public init?(rawValue: Swift.String)
556
+ public typealias RawValue = Swift.String
557
+ public var rawValue: Swift.String {
558
+ get
559
+ }
560
+ }
494
561
  public struct ContentItem : Swift.Codable, Swift.Equatable, @unchecked Swift.Sendable {
495
562
  public let id: Swift.String
496
563
  public var playbackId: Swift.String?
@@ -508,20 +575,35 @@ public struct ContentItem : Swift.Codable, Swift.Equatable, @unchecked Swift.Sen
508
575
  public let commentCount: Swift.Int?
509
576
  public var fallbackUrl: Swift.String?
510
577
  public var downloadUrl: Swift.String?
511
- public init(id: Swift.String, playbackId: Swift.String? = nil, title: Swift.String, description: Swift.String? = nil, duration: Swift.Double, streamingUrl: Swift.String, thumbnailUrl: Swift.String, captionTracks: [ShortKitSDK.CaptionTrack] = [], customMetadata: [Swift.String : ShortKitSDK.JSONValue]? = nil, author: Swift.String? = nil, articleUrl: Swift.String? = nil, commentCount: Swift.Int? = nil, fallbackUrl: Swift.String? = nil, downloadUrl: Swift.String? = nil)
578
+ public var isLive: Swift.Bool
579
+ public var liveStreamId: Swift.String?
580
+ public var liveStreamStatus: ShortKitSDK.LiveStreamStatus?
581
+ public var startedAt: Swift.String?
582
+ public init(id: Swift.String, playbackId: Swift.String? = nil, title: Swift.String, description: Swift.String? = nil, duration: Swift.Double, streamingUrl: Swift.String, thumbnailUrl: Swift.String, captionTracks: [ShortKitSDK.CaptionTrack] = [], customMetadata: [Swift.String : ShortKitSDK.JSONValue]? = nil, author: Swift.String? = nil, articleUrl: Swift.String? = nil, commentCount: Swift.Int? = nil, fallbackUrl: Swift.String? = nil, downloadUrl: Swift.String? = nil, isLive: Swift.Bool = false, liveStreamId: Swift.String? = nil, liveStreamStatus: ShortKitSDK.LiveStreamStatus? = nil, startedAt: Swift.String? = nil)
583
+ public init(from decoder: any Swift.Decoder) throws
512
584
  public static func == (a: ShortKitSDK.ContentItem, b: ShortKitSDK.ContentItem) -> Swift.Bool
513
585
  public func encode(to encoder: any Swift.Encoder) throws
514
- public init(from decoder: any Swift.Decoder) throws
515
586
  }
516
587
  extension ShortKitSDK.ContentItem {
517
588
  public var isDownloadable: Swift.Bool {
518
589
  get
519
590
  }
520
591
  }
592
+ public enum ContentOrigin : Swift.String, Swift.Codable, Swift.Sendable {
593
+ case iosUpload
594
+ case other
595
+ public init?(rawValue: Swift.String)
596
+ public typealias RawValue = Swift.String
597
+ public var rawValue: Swift.String {
598
+ get
599
+ }
600
+ }
521
601
  public enum FeedInput : Swift.Sendable {
522
- case video(playbackId: Swift.String, fallbackUrl: Swift.String? = nil)
602
+ case video(playbackId: Swift.String, origin: ShortKitSDK.ContentOrigin = .other, fallbackUrl: Swift.String? = nil)
603
+ case liveStream(playbackId: Swift.String)
523
604
  case imageCarousel(ShortKitSDK.ImageCarouselItem)
524
- case videoCarousel(ShortKitSDK.VideoCarouselItem)
605
+ case videoCarousel(ShortKitSDK.VideoCarouselInput)
606
+ case videoCarouselItem(ShortKitSDK.VideoCarouselItem)
525
607
  }
526
608
  public enum FeedItem : Swift.Sendable {
527
609
  case content(ShortKitSDK.ContentItem)
@@ -665,6 +747,19 @@ public struct VTTCue : Swift.Equatable, Swift.Sendable {
665
747
  public init(startTime: Swift.Double, endTime: Swift.Double, text: Swift.String)
666
748
  public static func == (a: ShortKitSDK.VTTCue, b: ShortKitSDK.VTTCue) -> Swift.Bool
667
749
  }
750
+ public struct VideoCarouselInput : Swift.Codable, Swift.Equatable, Swift.Sendable {
751
+ public let id: Swift.String
752
+ public let videos: [ShortKitSDK.VideoCarouselVideoInput]
753
+ public let title: Swift.String?
754
+ public let description: Swift.String?
755
+ public let author: Swift.String?
756
+ public let section: Swift.String?
757
+ public let articleUrl: Swift.String?
758
+ public init(id: Swift.String, videos: [ShortKitSDK.VideoCarouselVideoInput], title: Swift.String? = nil, description: Swift.String? = nil, author: Swift.String? = nil, section: Swift.String? = nil, articleUrl: Swift.String? = nil)
759
+ public static func == (a: ShortKitSDK.VideoCarouselInput, b: ShortKitSDK.VideoCarouselInput) -> Swift.Bool
760
+ public func encode(to encoder: any Swift.Encoder) throws
761
+ public init(from decoder: any Swift.Decoder) throws
762
+ }
668
763
  public struct VideoCarouselItem : Swift.Codable, Swift.Equatable, Swift.Sendable {
669
764
  public let id: Swift.String
670
765
  public let videos: [ShortKitSDK.ContentItem]
@@ -678,6 +773,15 @@ public struct VideoCarouselItem : Swift.Codable, Swift.Equatable, Swift.Sendable
678
773
  public func encode(to encoder: any Swift.Encoder) throws
679
774
  public init(from decoder: any Swift.Decoder) throws
680
775
  }
776
+ public struct VideoCarouselVideoInput : Swift.Codable, Swift.Equatable, Swift.Sendable {
777
+ public let playbackId: Swift.String
778
+ public let origin: ShortKitSDK.ContentOrigin
779
+ public let fallbackUrl: Swift.String?
780
+ public init(playbackId: Swift.String, origin: ShortKitSDK.ContentOrigin = .other, fallbackUrl: Swift.String? = nil)
781
+ public static func == (a: ShortKitSDK.VideoCarouselVideoInput, b: ShortKitSDK.VideoCarouselVideoInput) -> Swift.Bool
782
+ public func encode(to encoder: any Swift.Encoder) throws
783
+ public init(from decoder: any Swift.Decoder) throws
784
+ }
681
785
  public protocol AdOverlay : AnyObject {
682
786
  func configure(with content: ShortKitSDK.NativeAdContent)
683
787
  func resetState()
@@ -689,6 +793,7 @@ public protocol CarouselOverlay : AnyObject {
689
793
  var wantsNativeImagePrefetch: Swift.Bool { get }
690
794
  func activatePlayback()
691
795
  func updateActiveImage(index: Swift.Int)
796
+ func resetToFirstImage()
692
797
  }
693
798
  extension ShortKitSDK.CarouselOverlay {
694
799
  public var cachedImage: ((Swift.String) -> UIKit.UIImage?)? {
@@ -700,6 +805,7 @@ extension ShortKitSDK.CarouselOverlay {
700
805
  }
701
806
  public func activatePlayback()
702
807
  public func updateActiveImage(index: Swift.Int)
808
+ public func resetToFirstImage()
703
809
  }
704
810
  final public class CellContent : Combine.ObservableObject {
705
811
  @Combine.Published<ShortKitSDK.ContentItem?> @_projectedValueProperty($item) final public var item: ShortKitSDK.ContentItem? {
@@ -729,6 +835,16 @@ public protocol FeedOverlay : AnyObject {
729
835
  func configure(with item: ShortKitSDK.ContentItem)
730
836
  func activatePlayback()
731
837
  }
838
+ public protocol LiveOverlay : AnyObject {
839
+ func attach(player: ShortKitSDK.ShortKitPlayer)
840
+ func configure(with item: ShortKitSDK.ContentItem)
841
+ func activate()
842
+ func deactivate()
843
+ func showEnded()
844
+ }
845
+ extension ShortKitSDK.LiveOverlay {
846
+ public func showEnded()
847
+ }
732
848
  public protocol SurveyOverlay : AnyObject {
733
849
  var onSurveyResponse: ((Swift.String, ShortKitSDK.SurveyOption) -> Swift.Void)? { get set }
734
850
  var onAutoAdvance: (() -> Swift.Void)? { get set }
@@ -917,6 +1033,7 @@ public enum ShortKitVersion {
917
1033
  }
918
1034
  final public class ShortKit {
919
1035
  final public let player: ShortKitSDK.ShortKitPlayer
1036
+ final public let carousel: ShortKitSDK.ShortKitCarousel
920
1037
  final public let debugPanelEnabled: Swift.Bool
921
1038
  weak final public var delegate: (any ShortKitSDK.ShortKitDelegate)?
922
1039
  weak final public var downloadDelegate: (any ShortKitSDK.ShortKitDownloadDelegate)?
@@ -1028,6 +1145,11 @@ extension ShortKitSDK.ShortKitFeedView : Swift.Sendable {}
1028
1145
  extension ShortKitSDK.CaptionSource : Swift.Equatable {}
1029
1146
  extension ShortKitSDK.CaptionSource : Swift.Hashable {}
1030
1147
  extension ShortKitSDK.CaptionSource : Swift.RawRepresentable {}
1148
+ extension ShortKitSDK.LiveStreamStatus : Swift.Hashable {}
1149
+ extension ShortKitSDK.LiveStreamStatus : Swift.RawRepresentable {}
1150
+ extension ShortKitSDK.ContentOrigin : Swift.Equatable {}
1151
+ extension ShortKitSDK.ContentOrigin : Swift.Hashable {}
1152
+ extension ShortKitSDK.ContentOrigin : Swift.RawRepresentable {}
1031
1153
  extension ShortKitSDK.FeedTransitionEvent.Phase : Swift.Equatable {}
1032
1154
  extension ShortKitSDK.FeedTransitionEvent.Phase : Swift.Hashable {}
1033
1155
  extension ShortKitSDK.FeedTransitionEvent.Direction : Swift.Equatable {}
@@ -162,6 +162,43 @@ final public class SegmentPrefetcher : ShortKitSDK.SegmentPrefetcherProtocol {
162
162
  final public func resume()
163
163
  @objc deinit
164
164
  }
165
+ public struct CarouselCompletionEvent : Swift.Equatable, Swift.Sendable {
166
+ public let contentItem: ShortKitSDK.ContentItem
167
+ public let indexInCarousel: Swift.Int
168
+ public let carouselItem: ShortKitSDK.VideoCarouselItem
169
+ public let wasLast: Swift.Bool
170
+ public let willAutoAdvance: Swift.Bool
171
+ public init(contentItem: ShortKitSDK.ContentItem, indexInCarousel: Swift.Int, carouselItem: ShortKitSDK.VideoCarouselItem, wasLast: Swift.Bool, willAutoAdvance: Swift.Bool)
172
+ public static func == (a: ShortKitSDK.CarouselCompletionEvent, b: ShortKitSDK.CarouselCompletionEvent) -> Swift.Bool
173
+ }
174
+ final public class ShortKitCarousel {
175
+ public init()
176
+ @discardableResult
177
+ final public func next() -> Swift.Bool
178
+ @discardableResult
179
+ final public func previous() -> Swift.Bool
180
+ @discardableResult
181
+ final public func setActiveIndex(_ index: Swift.Int) -> Swift.Bool
182
+ final public var activeIndexValue: Swift.Int? {
183
+ get
184
+ }
185
+ final public var videoCountValue: Swift.Int? {
186
+ get
187
+ }
188
+ final public var activeCarouselItemValue: ShortKitSDK.VideoCarouselItem? {
189
+ get
190
+ }
191
+ final public var activeIndex: Combine.AnyPublisher<Swift.Int?, Swift.Never> {
192
+ get
193
+ }
194
+ final public var activeCarouselChanged: Combine.AnyPublisher<ShortKitSDK.VideoCarouselItem?, Swift.Never> {
195
+ get
196
+ }
197
+ final public var activeVideoCompleted: Combine.AnyPublisher<ShortKitSDK.CarouselCompletionEvent, Swift.Never> {
198
+ get
199
+ }
200
+ @objc deinit
201
+ }
165
202
  public enum FeedHeight : Swift.Codable, Swift.Equatable, Swift.Sendable {
166
203
  case fullscreen
167
204
  case percentage(CoreFoundation.CGFloat)
@@ -206,6 +243,7 @@ public struct FeedConfig : Swift.Codable {
206
243
  public var videoCarouselOverlay: ShortKitSDK.VideoCarouselOverlayMode
207
244
  public var surveyOverlay: ShortKitSDK.SurveyOverlayMode
208
245
  public var adOverlay: ShortKitSDK.AdOverlayMode
246
+ public var liveOverlay: ShortKitSDK.LiveOverlayMode
209
247
  public var muteOnStart: Swift.Bool
210
248
  public var autoplay: Swift.Bool
211
249
  public var feedSource: ShortKitSDK.FeedSource
@@ -213,7 +251,7 @@ public struct FeedConfig : Swift.Codable {
213
251
  public var pullToRefreshEnabled: Swift.Bool
214
252
  public var filter: ShortKitSDK.FeedFilter?
215
253
  public var preload: ShortKitSDK.FeedPreload?
216
- public init(feedHeight: ShortKitSDK.FeedHeight = .fullscreen, scrollAxis: ShortKitSDK.ScrollAxis = .vertical, videoOverlay: ShortKitSDK.VideoOverlayMode = .none, carouselOverlay: ShortKitSDK.CarouselOverlayMode = .none, videoCarouselOverlay: ShortKitSDK.VideoCarouselOverlayMode = .none, surveyOverlay: ShortKitSDK.SurveyOverlayMode = .none, adOverlay: ShortKitSDK.AdOverlayMode = .none, muteOnStart: Swift.Bool = true, autoplay: Swift.Bool = true, feedSource: ShortKitSDK.FeedSource = .algorithmic, coldStartEnabled: Swift.Bool = false, pullToRefreshEnabled: Swift.Bool = true, filter: ShortKitSDK.FeedFilter? = nil, preload: ShortKitSDK.FeedPreload? = nil)
254
+ public init(feedHeight: ShortKitSDK.FeedHeight = .fullscreen, scrollAxis: ShortKitSDK.ScrollAxis = .vertical, videoOverlay: ShortKitSDK.VideoOverlayMode = .none, carouselOverlay: ShortKitSDK.CarouselOverlayMode = .none, videoCarouselOverlay: ShortKitSDK.VideoCarouselOverlayMode = .none, surveyOverlay: ShortKitSDK.SurveyOverlayMode = .none, adOverlay: ShortKitSDK.AdOverlayMode = .none, liveOverlay: ShortKitSDK.LiveOverlayMode = .default, muteOnStart: Swift.Bool = true, autoplay: Swift.Bool = true, feedSource: ShortKitSDK.FeedSource = .algorithmic, coldStartEnabled: Swift.Bool = false, pullToRefreshEnabled: Swift.Bool = true, filter: ShortKitSDK.FeedFilter? = nil, preload: ShortKitSDK.FeedPreload? = nil)
217
255
  public func encode(to encoder: any Swift.Encoder) throws
218
256
  public init(from decoder: any Swift.Decoder) throws
219
257
  }
@@ -282,6 +320,21 @@ extension ShortKitSDK.AdOverlayMode : Swift.Codable {
282
320
  public init(from decoder: any Swift.Decoder) throws
283
321
  public func encode(to encoder: any Swift.Encoder) throws
284
322
  }
323
+ public enum LiveOverlayMode {
324
+ case none
325
+ case `default`
326
+ case custom(@Sendable () -> any UIKit.UIView & ShortKitSDK.LiveOverlay)
327
+ }
328
+ extension ShortKitSDK.LiveOverlayMode {
329
+ public static func swiftUI<Content>(@SwiftUICore.ViewBuilder content: @escaping @Sendable (ShortKitSDK.ShortKitPlayer) -> Content) -> ShortKitSDK.LiveOverlayMode where Content : SwiftUICore.View
330
+ }
331
+ extension ShortKitSDK.LiveOverlayMode : Swift.Equatable {
332
+ public static func == (lhs: ShortKitSDK.LiveOverlayMode, rhs: ShortKitSDK.LiveOverlayMode) -> Swift.Bool
333
+ }
334
+ extension ShortKitSDK.LiveOverlayMode : Swift.Codable {
335
+ public init(from decoder: any Swift.Decoder) throws
336
+ public func encode(to encoder: any Swift.Encoder) throws
337
+ }
285
338
  public struct DebugMetrics {
286
339
  public var contentId: Swift.String?
287
340
  public var feedIndex: Swift.Int
@@ -385,6 +438,7 @@ public enum ShortKitDownloadError : Swift.Error {
385
438
  @_Concurrency.MainActor @preconcurrency public var onDismiss: (() -> Swift.Void)?
386
439
  @_Concurrency.MainActor @preconcurrency public var onRemainingContentCountChange: ((Swift.Int) -> Swift.Void)?
387
440
  @_Concurrency.MainActor @preconcurrency public var onFeedReady: (() -> Swift.Void)?
441
+ @_Concurrency.MainActor @preconcurrency public var seedThumbnail: UIKit.UIImage?
388
442
  @_Concurrency.MainActor @preconcurrency public init(shortKit: ShortKitSDK.ShortKit, config: ShortKitSDK.FeedConfig, startAtItemId: Swift.String? = nil)
389
443
  @_Concurrency.MainActor public func setFeedItems(_ items: [ShortKitSDK.FeedInput])
390
444
  @_Concurrency.MainActor public func appendFeedItems(_ items: [ShortKitSDK.FeedInput])
@@ -427,6 +481,9 @@ extension ShortKitSDK.ShortKitFeedViewController : ShortKitSDK.ShortKitAdDelegat
427
481
  @_Concurrency.MainActor @preconcurrency public func adDidFail(_ ad: ShortKitSDK.PreparedAd, error: ShortKitSDK.AdError)
428
482
  @_Concurrency.MainActor @preconcurrency public func adDidReceiveClick(_ ad: ShortKitSDK.PreparedAd)
429
483
  }
484
+ public enum SeedThumbnailResolver {
485
+ public static func resolveFromMemory(url: Swift.String) -> UIKit.UIImage?
486
+ }
430
487
  public enum ShortKitRefreshState : Swift.Sendable {
431
488
  case idle
432
489
  case pulling(progress: CoreFoundation.CGFloat)
@@ -491,6 +548,16 @@ public struct CaptionTrack : Swift.Codable, Swift.Equatable, Swift.Sendable {
491
548
  public func encode(to encoder: any Swift.Encoder) throws
492
549
  public init(from decoder: any Swift.Decoder) throws
493
550
  }
551
+ public enum LiveStreamStatus : Swift.String, Swift.Codable, Swift.Equatable, Swift.Sendable {
552
+ case idle
553
+ case active
554
+ case ended
555
+ public init?(rawValue: Swift.String)
556
+ public typealias RawValue = Swift.String
557
+ public var rawValue: Swift.String {
558
+ get
559
+ }
560
+ }
494
561
  public struct ContentItem : Swift.Codable, Swift.Equatable, @unchecked Swift.Sendable {
495
562
  public let id: Swift.String
496
563
  public var playbackId: Swift.String?
@@ -508,20 +575,35 @@ public struct ContentItem : Swift.Codable, Swift.Equatable, @unchecked Swift.Sen
508
575
  public let commentCount: Swift.Int?
509
576
  public var fallbackUrl: Swift.String?
510
577
  public var downloadUrl: Swift.String?
511
- public init(id: Swift.String, playbackId: Swift.String? = nil, title: Swift.String, description: Swift.String? = nil, duration: Swift.Double, streamingUrl: Swift.String, thumbnailUrl: Swift.String, captionTracks: [ShortKitSDK.CaptionTrack] = [], customMetadata: [Swift.String : ShortKitSDK.JSONValue]? = nil, author: Swift.String? = nil, articleUrl: Swift.String? = nil, commentCount: Swift.Int? = nil, fallbackUrl: Swift.String? = nil, downloadUrl: Swift.String? = nil)
578
+ public var isLive: Swift.Bool
579
+ public var liveStreamId: Swift.String?
580
+ public var liveStreamStatus: ShortKitSDK.LiveStreamStatus?
581
+ public var startedAt: Swift.String?
582
+ public init(id: Swift.String, playbackId: Swift.String? = nil, title: Swift.String, description: Swift.String? = nil, duration: Swift.Double, streamingUrl: Swift.String, thumbnailUrl: Swift.String, captionTracks: [ShortKitSDK.CaptionTrack] = [], customMetadata: [Swift.String : ShortKitSDK.JSONValue]? = nil, author: Swift.String? = nil, articleUrl: Swift.String? = nil, commentCount: Swift.Int? = nil, fallbackUrl: Swift.String? = nil, downloadUrl: Swift.String? = nil, isLive: Swift.Bool = false, liveStreamId: Swift.String? = nil, liveStreamStatus: ShortKitSDK.LiveStreamStatus? = nil, startedAt: Swift.String? = nil)
583
+ public init(from decoder: any Swift.Decoder) throws
512
584
  public static func == (a: ShortKitSDK.ContentItem, b: ShortKitSDK.ContentItem) -> Swift.Bool
513
585
  public func encode(to encoder: any Swift.Encoder) throws
514
- public init(from decoder: any Swift.Decoder) throws
515
586
  }
516
587
  extension ShortKitSDK.ContentItem {
517
588
  public var isDownloadable: Swift.Bool {
518
589
  get
519
590
  }
520
591
  }
592
+ public enum ContentOrigin : Swift.String, Swift.Codable, Swift.Sendable {
593
+ case iosUpload
594
+ case other
595
+ public init?(rawValue: Swift.String)
596
+ public typealias RawValue = Swift.String
597
+ public var rawValue: Swift.String {
598
+ get
599
+ }
600
+ }
521
601
  public enum FeedInput : Swift.Sendable {
522
- case video(playbackId: Swift.String, fallbackUrl: Swift.String? = nil)
602
+ case video(playbackId: Swift.String, origin: ShortKitSDK.ContentOrigin = .other, fallbackUrl: Swift.String? = nil)
603
+ case liveStream(playbackId: Swift.String)
523
604
  case imageCarousel(ShortKitSDK.ImageCarouselItem)
524
- case videoCarousel(ShortKitSDK.VideoCarouselItem)
605
+ case videoCarousel(ShortKitSDK.VideoCarouselInput)
606
+ case videoCarouselItem(ShortKitSDK.VideoCarouselItem)
525
607
  }
526
608
  public enum FeedItem : Swift.Sendable {
527
609
  case content(ShortKitSDK.ContentItem)
@@ -665,6 +747,19 @@ public struct VTTCue : Swift.Equatable, Swift.Sendable {
665
747
  public init(startTime: Swift.Double, endTime: Swift.Double, text: Swift.String)
666
748
  public static func == (a: ShortKitSDK.VTTCue, b: ShortKitSDK.VTTCue) -> Swift.Bool
667
749
  }
750
+ public struct VideoCarouselInput : Swift.Codable, Swift.Equatable, Swift.Sendable {
751
+ public let id: Swift.String
752
+ public let videos: [ShortKitSDK.VideoCarouselVideoInput]
753
+ public let title: Swift.String?
754
+ public let description: Swift.String?
755
+ public let author: Swift.String?
756
+ public let section: Swift.String?
757
+ public let articleUrl: Swift.String?
758
+ public init(id: Swift.String, videos: [ShortKitSDK.VideoCarouselVideoInput], title: Swift.String? = nil, description: Swift.String? = nil, author: Swift.String? = nil, section: Swift.String? = nil, articleUrl: Swift.String? = nil)
759
+ public static func == (a: ShortKitSDK.VideoCarouselInput, b: ShortKitSDK.VideoCarouselInput) -> Swift.Bool
760
+ public func encode(to encoder: any Swift.Encoder) throws
761
+ public init(from decoder: any Swift.Decoder) throws
762
+ }
668
763
  public struct VideoCarouselItem : Swift.Codable, Swift.Equatable, Swift.Sendable {
669
764
  public let id: Swift.String
670
765
  public let videos: [ShortKitSDK.ContentItem]
@@ -678,6 +773,15 @@ public struct VideoCarouselItem : Swift.Codable, Swift.Equatable, Swift.Sendable
678
773
  public func encode(to encoder: any Swift.Encoder) throws
679
774
  public init(from decoder: any Swift.Decoder) throws
680
775
  }
776
+ public struct VideoCarouselVideoInput : Swift.Codable, Swift.Equatable, Swift.Sendable {
777
+ public let playbackId: Swift.String
778
+ public let origin: ShortKitSDK.ContentOrigin
779
+ public let fallbackUrl: Swift.String?
780
+ public init(playbackId: Swift.String, origin: ShortKitSDK.ContentOrigin = .other, fallbackUrl: Swift.String? = nil)
781
+ public static func == (a: ShortKitSDK.VideoCarouselVideoInput, b: ShortKitSDK.VideoCarouselVideoInput) -> Swift.Bool
782
+ public func encode(to encoder: any Swift.Encoder) throws
783
+ public init(from decoder: any Swift.Decoder) throws
784
+ }
681
785
  public protocol AdOverlay : AnyObject {
682
786
  func configure(with content: ShortKitSDK.NativeAdContent)
683
787
  func resetState()
@@ -689,6 +793,7 @@ public protocol CarouselOverlay : AnyObject {
689
793
  var wantsNativeImagePrefetch: Swift.Bool { get }
690
794
  func activatePlayback()
691
795
  func updateActiveImage(index: Swift.Int)
796
+ func resetToFirstImage()
692
797
  }
693
798
  extension ShortKitSDK.CarouselOverlay {
694
799
  public var cachedImage: ((Swift.String) -> UIKit.UIImage?)? {
@@ -700,6 +805,7 @@ extension ShortKitSDK.CarouselOverlay {
700
805
  }
701
806
  public func activatePlayback()
702
807
  public func updateActiveImage(index: Swift.Int)
808
+ public func resetToFirstImage()
703
809
  }
704
810
  final public class CellContent : Combine.ObservableObject {
705
811
  @Combine.Published<ShortKitSDK.ContentItem?> @_projectedValueProperty($item) final public var item: ShortKitSDK.ContentItem? {
@@ -729,6 +835,16 @@ public protocol FeedOverlay : AnyObject {
729
835
  func configure(with item: ShortKitSDK.ContentItem)
730
836
  func activatePlayback()
731
837
  }
838
+ public protocol LiveOverlay : AnyObject {
839
+ func attach(player: ShortKitSDK.ShortKitPlayer)
840
+ func configure(with item: ShortKitSDK.ContentItem)
841
+ func activate()
842
+ func deactivate()
843
+ func showEnded()
844
+ }
845
+ extension ShortKitSDK.LiveOverlay {
846
+ public func showEnded()
847
+ }
732
848
  public protocol SurveyOverlay : AnyObject {
733
849
  var onSurveyResponse: ((Swift.String, ShortKitSDK.SurveyOption) -> Swift.Void)? { get set }
734
850
  var onAutoAdvance: (() -> Swift.Void)? { get set }
@@ -917,6 +1033,7 @@ public enum ShortKitVersion {
917
1033
  }
918
1034
  final public class ShortKit {
919
1035
  final public let player: ShortKitSDK.ShortKitPlayer
1036
+ final public let carousel: ShortKitSDK.ShortKitCarousel
920
1037
  final public let debugPanelEnabled: Swift.Bool
921
1038
  weak final public var delegate: (any ShortKitSDK.ShortKitDelegate)?
922
1039
  weak final public var downloadDelegate: (any ShortKitSDK.ShortKitDownloadDelegate)?
@@ -1028,6 +1145,11 @@ extension ShortKitSDK.ShortKitFeedView : Swift.Sendable {}
1028
1145
  extension ShortKitSDK.CaptionSource : Swift.Equatable {}
1029
1146
  extension ShortKitSDK.CaptionSource : Swift.Hashable {}
1030
1147
  extension ShortKitSDK.CaptionSource : Swift.RawRepresentable {}
1148
+ extension ShortKitSDK.LiveStreamStatus : Swift.Hashable {}
1149
+ extension ShortKitSDK.LiveStreamStatus : Swift.RawRepresentable {}
1150
+ extension ShortKitSDK.ContentOrigin : Swift.Equatable {}
1151
+ extension ShortKitSDK.ContentOrigin : Swift.Hashable {}
1152
+ extension ShortKitSDK.ContentOrigin : Swift.RawRepresentable {}
1031
1153
  extension ShortKitSDK.FeedTransitionEvent.Phase : Swift.Equatable {}
1032
1154
  extension ShortKitSDK.FeedTransitionEvent.Phase : Swift.Hashable {}
1033
1155
  extension ShortKitSDK.FeedTransitionEvent.Direction : Swift.Equatable {}