react-native-tapline 1.5.0 → 1.6.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.
- package/TaplineNative.podspec +3 -1
- package/dist/actions.d.ts +22 -2
- package/dist/actions.js +186 -16
- package/dist/actions.js.map +1 -1
- package/dist/alerts.d.ts +2 -0
- package/dist/alerts.js +5 -0
- package/dist/alerts.js.map +1 -1
- package/dist/anim.d.ts +25 -0
- package/dist/anim.js +311 -0
- package/dist/anim.js.map +1 -0
- package/dist/appinfo.d.ts +12 -0
- package/dist/appinfo.js +78 -0
- package/dist/appinfo.js.map +1 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.js +25 -2
- package/dist/client.js.map +1 -1
- package/dist/commands.js +28 -0
- package/dist/commands.js.map +1 -1
- package/dist/guard.d.ts +17 -0
- package/dist/guard.js +44 -0
- package/dist/guard.js.map +1 -0
- package/dist/idle.d.ts +43 -0
- package/dist/idle.js +379 -0
- package/dist/idle.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/inspect.d.ts +11 -0
- package/dist/inspect.js +36 -7
- package/dist/inspect.js.map +1 -1
- package/dist/loading.d.ts +17 -0
- package/dist/loading.js +96 -0
- package/dist/loading.js.map +1 -0
- package/dist/locale.js +1 -1
- package/dist/locale.js.map +1 -1
- package/dist/methods.js +8 -0
- package/dist/methods.js.map +1 -1
- package/dist/move.d.ts +40 -0
- package/dist/move.js +125 -0
- package/dist/move.js.map +1 -0
- package/dist/native.d.ts +5 -0
- package/dist/native.js.map +1 -1
- package/dist/network.d.ts +4 -0
- package/dist/network.js +29 -0
- package/dist/network.js.map +1 -1
- package/dist/place.d.ts +23 -0
- package/dist/place.js +66 -0
- package/dist/place.js.map +1 -0
- package/dist/placekey.d.ts +29 -0
- package/dist/placekey.js +134 -0
- package/dist/placekey.js.map +1 -0
- package/dist/routetree.d.ts +27 -0
- package/dist/routetree.js +216 -0
- package/dist/routetree.js.map +1 -0
- package/dist/types.d.ts +23 -2
- package/dist/types.js +5 -1
- package/dist/types.js.map +1 -1
- package/dist/wait.d.ts +5 -0
- package/dist/wait.js +4 -0
- package/dist/wait.js.map +1 -1
- package/ios/TaplineNativeModule.swift +61 -0
- package/package.json +1 -1
package/dist/wait.js
CHANGED
|
@@ -36,6 +36,7 @@ function parse(raw) {
|
|
|
36
36
|
throw new types_1.TaplineError('bad_params', `timeout is in seconds, above 0 and at most ${MAX_TIMEOUT_S}`);
|
|
37
37
|
}
|
|
38
38
|
return {
|
|
39
|
+
once: raw.once === true,
|
|
39
40
|
...(text !== undefined ? { text } : {}),
|
|
40
41
|
...(testID !== undefined ? { testID } : {}),
|
|
41
42
|
...(label !== undefined ? { label } : {}),
|
|
@@ -112,6 +113,9 @@ function describe(condition) {
|
|
|
112
113
|
}
|
|
113
114
|
async function waitFor(raw) {
|
|
114
115
|
const condition = parse(raw);
|
|
116
|
+
// Same matching as the polling path below, so the two never disagree about one screen.
|
|
117
|
+
if (condition.once)
|
|
118
|
+
return { found: await satisfied(condition) };
|
|
115
119
|
const started = Date.now();
|
|
116
120
|
for (;;) {
|
|
117
121
|
if (await satisfied(condition))
|
package/dist/wait.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../src/wait.ts"],"names":[],"mappings":";;AAkBA,wDAEC;
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../src/wait.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import UIKit
|
|
|
9
9
|
/// - `cover`: what UIKit presents over the app that React Native doesn't draw: an alert or action
|
|
10
10
|
/// sheet (`UIAlertController`, also the one `Alert.alert` shows) and the share sheet
|
|
11
11
|
/// (`UIActivityViewController`), with what an agent needs to name it.
|
|
12
|
+
/// - `setAnimationSpeed`: the speed of every window's layer, for fast-forwarded animations (1 is normal).
|
|
12
13
|
private enum TaplineWindows {
|
|
13
14
|
static func keyWindow() -> UIWindow? {
|
|
14
15
|
let scenes = UIApplication.shared.connectedScenes.compactMap { $0 as? UIWindowScene }
|
|
@@ -17,6 +18,52 @@ private enum TaplineWindows {
|
|
|
17
18
|
return windows.first { $0.isKeyWindow } ?? windows.first
|
|
18
19
|
}
|
|
19
20
|
|
|
21
|
+
/// Every window of the app's scenes (the key window and any other the app or UIKit opened).
|
|
22
|
+
static func allWindows() -> [UIWindow] {
|
|
23
|
+
UIApplication.shared.connectedScenes.compactMap { $0 as? UIWindowScene }.flatMap { $0.windows }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/// The speed the app's windows should have now (1 is normal); new windows get it too (see `setSpeed`).
|
|
27
|
+
private static var wanted: Float = 1
|
|
28
|
+
private static var visibleObserver: NSObjectProtocol?
|
|
29
|
+
|
|
30
|
+
/// Gives one window's layer `speed` without a jump or a freeze (Apple's QA1673 pattern for changing a layer's
|
|
31
|
+
/// timing). Changing `speed` alone moves the layer's local time, which stops repeating animations (an
|
|
32
|
+
/// ActivityIndicator) after a few flips. So the local time now is read first and kept: it becomes the time offset,
|
|
33
|
+
/// counted from now.
|
|
34
|
+
private static func apply(_ speed: Float, to window: UIWindow) {
|
|
35
|
+
let layer = window.layer
|
|
36
|
+
guard layer.speed != speed else { return }
|
|
37
|
+
let now = CACurrentMediaTime()
|
|
38
|
+
let local = layer.convertTime(now, from: nil)
|
|
39
|
+
CATransaction.begin()
|
|
40
|
+
CATransaction.setDisableActions(true)
|
|
41
|
+
layer.speed = speed
|
|
42
|
+
layer.timeOffset = local
|
|
43
|
+
layer.beginTime = now
|
|
44
|
+
CATransaction.commit()
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/// Sets every window's layer speed (1 is normal) from any thread. While the speed is not 1, a window that
|
|
48
|
+
/// becomes visible later (React Native's alert window, a scene's window) gets it too; at 1 the observer goes.
|
|
49
|
+
static func setSpeed(_ speed: Float) {
|
|
50
|
+
let run = {
|
|
51
|
+
wanted = speed
|
|
52
|
+
for window in allWindows() { apply(speed, to: window) }
|
|
53
|
+
if speed != 1 {
|
|
54
|
+
if visibleObserver == nil {
|
|
55
|
+
visibleObserver = NotificationCenter.default.addObserver(forName: UIWindow.didBecomeVisibleNotification, object: nil, queue: .main) { note in
|
|
56
|
+
if let window = note.object as? UIWindow { apply(wanted, to: window) }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
} else if let observer = visibleObserver {
|
|
60
|
+
NotificationCenter.default.removeObserver(observer)
|
|
61
|
+
visibleObserver = nil
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if Thread.isMainThread { run() } else { DispatchQueue.main.async(execute: run) }
|
|
65
|
+
}
|
|
66
|
+
|
|
20
67
|
/// The view controllers presented over the root, front last.
|
|
21
68
|
static func presented(from root: UIViewController?) -> [UIViewController] {
|
|
22
69
|
var chain: [UIViewController] = []
|
|
@@ -56,6 +103,20 @@ public final class TaplineNativeModule: Module {
|
|
|
56
103
|
}
|
|
57
104
|
}.runOnQueue(.main)
|
|
58
105
|
|
|
106
|
+
/// Sets the speed of the app's windows' layers (PLAN-1.6 F4; the trick EarlGrey and KIF use). 1 is normal; a
|
|
107
|
+
/// larger number makes every UIKit and Core Animation animation in those windows (native-stack pushes, sheets,
|
|
108
|
+
/// alerts) finish that many times sooner. Windows that open while the speed is not 1 get it as they appear.
|
|
109
|
+
/// Timers and JavaScript are not touched. The JavaScript side puts 1 back on `normal`, on a disconnect and when
|
|
110
|
+
/// the session ends.
|
|
111
|
+
AsyncFunction("setAnimationSpeed") { (speed: Double) in
|
|
112
|
+
let safe = speed.isFinite ? min(max(speed, 1), 1000) : 1
|
|
113
|
+
TaplineWindows.setSpeed(Float(safe))
|
|
114
|
+
}.runOnQueue(.main)
|
|
115
|
+
|
|
116
|
+
// A JavaScript reload (or a new runtime) makes a new module: the windows are never left fast-forwarded.
|
|
117
|
+
OnCreate { TaplineWindows.setSpeed(1) }
|
|
118
|
+
OnDestroy { TaplineWindows.setSpeed(1) }
|
|
119
|
+
|
|
59
120
|
/// What UIKit shows in front of the app: `kind` is "alert", "actionSheet", "share" or "" (nothing).
|
|
60
121
|
AsyncFunction("cover") { () -> [String: Any] in
|
|
61
122
|
let chain = TaplineWindows.presented(from: TaplineWindows.keyWindow()?.rootViewController)
|
package/package.json
CHANGED