-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Expand file tree
/
Copy pathAnimationsOptions.kt
More file actions
57 lines (49 loc) · 2.15 KB
/
AnimationsOptions.kt
File metadata and controls
57 lines (49 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.reactnativenavigation.options
import org.json.JSONObject
class AnimationsOptions {
@JvmField var push = StackAnimationOptions()
@JvmField var pop = StackAnimationOptions()
@JvmField var setStackRoot = StackAnimationOptions()
@JvmField var setRoot = TransitionAnimationOptions()
@JvmField var showModal = TransitionAnimationOptions()
@JvmField var dismissModal = TransitionAnimationOptions()
fun mergeWith(other: AnimationsOptions) {
push.mergeWith(other.push)
pop.mergeWith(other.pop)
setRoot.mergeWith(other.setRoot)
setStackRoot.mergeWith(other.setStackRoot)
showModal.mergeWith(other.showModal)
dismissModal.mergeWith(other.dismissModal)
}
fun mergeWithDefault(defaultOptions: AnimationsOptions) {
push.mergeWithDefault(defaultOptions.push)
pop.mergeWithDefault(defaultOptions.pop)
setStackRoot.mergeWithDefault(defaultOptions.setStackRoot)
setRoot.mergeWithDefault(defaultOptions.setRoot)
showModal.mergeWithDefault(defaultOptions.showModal)
dismissModal.mergeWithDefault(defaultOptions.dismissModal)
}
companion object {
@JvmStatic
fun parse(json: JSONObject?): AnimationsOptions {
val options = AnimationsOptions()
if (json == null) return options
options.push = StackAnimationOptions(json.optJSONObject("push"))
options.pop = StackAnimationOptions(json.optJSONObject("pop"))
options.setStackRoot = StackAnimationOptions(json.optJSONObject("setStackRoot"))
val rootAnimJson = json.optJSONObject("setRoot")
rootAnimJson?.let {
options.setRoot = parseTransitionAnimationOptions(it)
}
val showModalJson = json.optJSONObject("showModal")
showModalJson?.let {
options.showModal = parseTransitionAnimationOptions(it)
}
val dismissModalJson = json.optJSONObject("dismissModal")
dismissModalJson?.let {
options.dismissModal = parseTransitionAnimationOptions(it)
}
return options
}
}
}