UNPKG

1.89 kBPlain TextView Raw
1#if canImport(React)
2import React
3#endif
4
5import Lottie
6
7@objc(LottieAnimationView)
8class AnimationViewManagerModule: RCTViewManager {
9 override func view() -> UIView! {
10 return ContainerView()
11 }
12
13 @objc override func constantsToExport() -> [AnyHashable : Any]! {
14 return ["VERSION": 1]
15 }
16
17
18 @objc(play:fromFrame:toFrame:)
19 public func play(_ reactTag: NSNumber, startFrame: NSNumber, endFrame: NSNumber) {
20
21 self.bridge.uiManager.addUIBlock { (uiManager, viewRegistry) in
22 guard let view = viewRegistry?[reactTag] as? ContainerView else {
23 if (RCT_DEV == 1) {
24 print("Invalid view returned from registry, expecting ContainerView")
25 }
26 return
27 }
28
29 let callback: LottieCompletionBlock = { animationFinished in
30 if let onFinish = view.onAnimationFinish {
31 onFinish(["isCancelled": animationFinished])
32 }
33 }
34
35 if (startFrame.intValue != -1 && endFrame.intValue != -1) {
36 view.play(fromFrame: AnimationFrameTime(truncating: startFrame), toFrame: AnimationFrameTime(truncating: endFrame), completion: callback)
37 } else {
38 view.play(completion: callback)
39 }
40 }
41 }
42
43 @objc(reset:)
44 public func reset(_ reactTag: NSNumber) {
45 self.bridge.uiManager.addUIBlock { uiManager, viewRegistry in
46 guard let view = viewRegistry?[reactTag] as? ContainerView else {
47 if (RCT_DEV == 1) {
48 print("Invalid view returned from registry, expecting ContainerView")
49 }
50 return
51 }
52
53 view.reset()
54 }
55 }
56
57 override static func requiresMainQueueSetup() -> Bool {
58 return true
59 }
60
61}