@applicaster/quick-brick-native-apple 6.2.3 → 6.2.4
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "QuickBrickApple",
|
|
3
|
-
"version": "6.2.
|
|
3
|
+
"version": "6.2.4",
|
|
4
4
|
"platforms": {
|
|
5
5
|
"ios": "14.0",
|
|
6
6
|
"tvos": "14.0"
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"authors": "Applicaster LTD.",
|
|
17
17
|
"source": {
|
|
18
18
|
"git": "https://github.com/applicaster/Zapp-Frameworks.git",
|
|
19
|
-
"tag": "@@applicaster/quick-brick-native-apple/6.2.
|
|
19
|
+
"tag": "@@applicaster/quick-brick-native-apple/6.2.4"
|
|
20
20
|
},
|
|
21
21
|
"requires_arc": true,
|
|
22
22
|
"source_files": "universal/**/*.{m,swift}",
|
|
@@ -10,6 +10,13 @@
|
|
|
10
10
|
#import <AVFoundation/AVFoundation.h>
|
|
11
11
|
#import <React/RCTViewManager.h>
|
|
12
12
|
|
|
13
|
+
@interface RCT_EXTERN_MODULE (TrackedView, RCTViewManager)
|
|
14
|
+
|
|
15
|
+
RCT_EXPORT_VIEW_PROPERTY(groupId, NSString);
|
|
16
|
+
RCT_EXPORT_VIEW_PROPERTY(onPositionUpdated, RCTBubblingEventBlock);
|
|
17
|
+
|
|
18
|
+
@end
|
|
19
|
+
|
|
13
20
|
@interface RCT_EXTERN_MODULE (QuickBrickCommunicationModule, NSObject)
|
|
14
21
|
|
|
15
22
|
RCT_EXTERN_METHOD(quickBrickEvent:(NSString *)eventName
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
//
|
|
2
|
+
// TrackedComponentView.swift
|
|
3
|
+
// AccordionSwift
|
|
4
|
+
//
|
|
5
|
+
// Created by Anton Kononenko on 9/1/23.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import React
|
|
10
|
+
|
|
11
|
+
public class TrackedComponentView: RCTView {
|
|
12
|
+
@objc public var onPositionUpdated: RCTBubblingEventBlock?
|
|
13
|
+
|
|
14
|
+
/// Convert the view frame to the window's coordinate system
|
|
15
|
+
private func getViewFrameInWindow() -> CGRect {
|
|
16
|
+
convert(bounds, to: window)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Check if the view is completely within the window's bounds
|
|
20
|
+
private var isCompletelyVisibleOnScreen: Bool {
|
|
21
|
+
guard let window else { return false }
|
|
22
|
+
return window.bounds.contains(getViewFrameInWindow())
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
deinit {
|
|
26
|
+
stopObserver()
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
override public init(frame: CGRect) {
|
|
30
|
+
super.init(frame: frame)
|
|
31
|
+
startObserver()
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@available(*, unavailable)
|
|
35
|
+
required init?(coder _: NSCoder) {
|
|
36
|
+
fatalError("init(coder:) has not been implemented")
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
var previousState: CGRect?
|
|
40
|
+
var timer: Timer?
|
|
41
|
+
func createReactEvent(rect: CGRect) -> [String: CGFloat] {
|
|
42
|
+
["left": rect.minX,
|
|
43
|
+
"right": rect.maxX,
|
|
44
|
+
"top": rect.minY,
|
|
45
|
+
"bottom": rect.maxY]
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
func startObserver() {
|
|
49
|
+
timer = Timer.scheduledTimer(withTimeInterval: 1.0,
|
|
50
|
+
repeats: true) { [weak self] _ in
|
|
51
|
+
guard let self else { return }
|
|
52
|
+
let viewFrameInWindow = getViewFrameInWindow()
|
|
53
|
+
|
|
54
|
+
if previousState != viewFrameInWindow {
|
|
55
|
+
previousState = viewFrameInWindow
|
|
56
|
+
|
|
57
|
+
onPositionUpdated?(isCompletelyVisibleOnScreen ?
|
|
58
|
+
["rect": createReactEvent(rect: viewFrameInWindow)] :
|
|
59
|
+
nil)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
func stopObserver() {
|
|
65
|
+
timer?.invalidate()
|
|
66
|
+
timer = nil
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//
|
|
2
|
+
// TrackedViewModule.swift
|
|
3
|
+
// QuickBrickApple
|
|
4
|
+
//
|
|
5
|
+
// Created by Anton Kononenko on 9/1/23.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import AVFoundation
|
|
9
|
+
import Foundation
|
|
10
|
+
import React
|
|
11
|
+
|
|
12
|
+
@objc(TrackedView)
|
|
13
|
+
public class TrackedView: RCTViewManager {
|
|
14
|
+
override public static func moduleName() -> String? {
|
|
15
|
+
"TrackedView"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
override public static func requiresMainQueueSetup() -> Bool {
|
|
19
|
+
true
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
override public func view() -> UIView! {
|
|
23
|
+
TrackedComponentView()
|
|
24
|
+
}
|
|
25
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applicaster/quick-brick-native-apple",
|
|
3
|
-
"version": "6.2.
|
|
3
|
+
"version": "6.2.4",
|
|
4
4
|
"description": "iOS and tvOS native code for QuickBrick applications. This package is used to provide native logic for QuickBrick",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "echo \"Error: no test specified\" && exit 1"
|