@quenty/transitionmodel 7.19.0 → 7.19.1-canary.545.2374fb2.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/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [7.19.1-canary.545.2374fb2.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@7.19.0...@quenty/transitionmodel@7.19.1-canary.545.2374fb2.0) (2025-04-05)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* Add types to packages ([2374fb2](https://github.com/Quenty/NevermoreEngine/commit/2374fb2b043cfbe0e9b507b3316eec46a4e353a0))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# [7.19.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@7.18.2...@quenty/transitionmodel@7.19.0) (2025-04-02)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @quenty/transitionmodel
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/transitionmodel",
|
|
3
|
-
"version": "7.19.0",
|
|
3
|
+
"version": "7.19.1-canary.545.2374fb2.0",
|
|
4
4
|
"description": "Helps with Gui visiblity showing and hiding",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -25,22 +25,22 @@
|
|
|
25
25
|
"Quenty"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@quenty/baseobject": "
|
|
29
|
-
"@quenty/basicpane": "
|
|
30
|
-
"@quenty/blend": "
|
|
31
|
-
"@quenty/ducktype": "
|
|
32
|
-
"@quenty/instanceutils": "
|
|
33
|
-
"@quenty/loader": "
|
|
34
|
-
"@quenty/maid": "
|
|
35
|
-
"@quenty/promise": "
|
|
36
|
-
"@quenty/rx": "
|
|
37
|
-
"@quenty/signal": "
|
|
38
|
-
"@quenty/spring": "
|
|
39
|
-
"@quenty/timedtween": "
|
|
40
|
-
"@quenty/valueobject": "
|
|
28
|
+
"@quenty/baseobject": "10.8.1-canary.545.2374fb2.0",
|
|
29
|
+
"@quenty/basicpane": "13.17.1-canary.545.2374fb2.0",
|
|
30
|
+
"@quenty/blend": "12.18.1-canary.545.2374fb2.0",
|
|
31
|
+
"@quenty/ducktype": "5.8.2-canary.545.2374fb2.0",
|
|
32
|
+
"@quenty/instanceutils": "13.17.1-canary.545.2374fb2.0",
|
|
33
|
+
"@quenty/loader": "10.8.1-canary.545.2374fb2.0",
|
|
34
|
+
"@quenty/maid": "3.4.1-canary.545.2374fb2.0",
|
|
35
|
+
"@quenty/promise": "10.10.2-canary.545.2374fb2.0",
|
|
36
|
+
"@quenty/rx": "13.17.1-canary.545.2374fb2.0",
|
|
37
|
+
"@quenty/signal": "7.10.1-canary.545.2374fb2.0",
|
|
38
|
+
"@quenty/spring": "10.8.2-canary.545.2374fb2.0",
|
|
39
|
+
"@quenty/timedtween": "7.18.1-canary.545.2374fb2.0",
|
|
40
|
+
"@quenty/valueobject": "13.17.1-canary.545.2374fb2.0"
|
|
41
41
|
},
|
|
42
42
|
"publishConfig": {
|
|
43
43
|
"access": "public"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "2374fb2b043cfbe0e9b507b3316eec46a4e353a0"
|
|
46
46
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
--!strict
|
|
1
2
|
--[=[
|
|
2
3
|
@class SpringTransitionModel
|
|
3
4
|
]=]
|
|
@@ -10,11 +11,30 @@ local SpringObject = require("SpringObject")
|
|
|
10
11
|
local Promise = require("Promise")
|
|
11
12
|
local Maid = require("Maid")
|
|
12
13
|
local SpringUtils = require("SpringUtils")
|
|
14
|
+
local _Observable = require("Observable")
|
|
15
|
+
local _Signal = require("Signal")
|
|
13
16
|
|
|
14
17
|
local SpringTransitionModel = setmetatable({}, BasicPane)
|
|
15
18
|
SpringTransitionModel.ClassName = "SpringTransitionModel"
|
|
16
19
|
SpringTransitionModel.__index = SpringTransitionModel
|
|
17
20
|
|
|
21
|
+
export type SpringTransitionModel<T> = typeof(setmetatable(
|
|
22
|
+
{} :: {
|
|
23
|
+
_maid: Maid.Maid,
|
|
24
|
+
_showTarget: any,
|
|
25
|
+
_hideTarget: any,
|
|
26
|
+
_springObject: any,
|
|
27
|
+
_transitionModel: TransitionModel.TransitionModel,
|
|
28
|
+
|
|
29
|
+
-- From BasicPane
|
|
30
|
+
IsVisible: (self: SpringTransitionModel<T>) -> boolean,
|
|
31
|
+
SetVisible: (self: SpringTransitionModel<T>, isVisible: boolean, doNotAnimate: boolean?) -> (),
|
|
32
|
+
VisibleChanged: _Signal.Signal<boolean, boolean>,
|
|
33
|
+
Destroy: (self: SpringTransitionModel<T>) -> (),
|
|
34
|
+
},
|
|
35
|
+
SpringTransitionModel
|
|
36
|
+
))
|
|
37
|
+
|
|
18
38
|
--[=[
|
|
19
39
|
A transition model that has a spring underlying it. Very useful
|
|
20
40
|
for animations on tracks that need to be on a spring.
|
|
@@ -23,8 +43,8 @@ SpringTransitionModel.__index = SpringTransitionModel
|
|
|
23
43
|
@param hideTarget T? -- Defaults to 0*showTarget
|
|
24
44
|
@return SpringTransitionModel<T>
|
|
25
45
|
]=]
|
|
26
|
-
function SpringTransitionModel.new(showTarget
|
|
27
|
-
local self = setmetatable(BasicPane.new(), SpringTransitionModel)
|
|
46
|
+
function SpringTransitionModel.new<T>(showTarget: T?, hideTarget: T?): SpringTransitionModel<T>
|
|
47
|
+
local self = setmetatable(BasicPane.new() :: any, SpringTransitionModel)
|
|
28
48
|
|
|
29
49
|
self._showTarget = showTarget or 1
|
|
30
50
|
self._hideTarget = hideTarget
|
|
@@ -51,7 +71,7 @@ end
|
|
|
51
71
|
@param showTarget T?
|
|
52
72
|
@param doNotAnimate boolean?
|
|
53
73
|
]=]
|
|
54
|
-
function SpringTransitionModel
|
|
74
|
+
function SpringTransitionModel.SetShowTarget<T>(self: SpringTransitionModel<T>, showTarget: T?, doNotAnimate: boolean?)
|
|
55
75
|
self._showTarget = SpringUtils.toLinearIfNeeded(showTarget or 1)
|
|
56
76
|
|
|
57
77
|
if self:IsVisible() then
|
|
@@ -67,7 +87,7 @@ end
|
|
|
67
87
|
@param hideTarget T?
|
|
68
88
|
@param doNotAnimate boolean?
|
|
69
89
|
]=]
|
|
70
|
-
function SpringTransitionModel
|
|
90
|
+
function SpringTransitionModel.SetHideTarget<T>(self: SpringTransitionModel<T>, hideTarget: T?, doNotAnimate: boolean?)
|
|
71
91
|
self._hideTarget = hideTarget
|
|
72
92
|
|
|
73
93
|
if self:IsVisible() then
|
|
@@ -81,7 +101,7 @@ end
|
|
|
81
101
|
Returns true if showing is complete
|
|
82
102
|
@return boolean
|
|
83
103
|
]=]
|
|
84
|
-
function SpringTransitionModel
|
|
104
|
+
function SpringTransitionModel.IsShowingComplete<T>(self: SpringTransitionModel<T>): boolean
|
|
85
105
|
return self._transitionModel:IsShowingComplete()
|
|
86
106
|
end
|
|
87
107
|
|
|
@@ -89,7 +109,7 @@ end
|
|
|
89
109
|
Returns true if hiding is complete
|
|
90
110
|
@return boolean
|
|
91
111
|
]=]
|
|
92
|
-
function SpringTransitionModel
|
|
112
|
+
function SpringTransitionModel.IsHidingComplete<T>(self: SpringTransitionModel<T>): boolean
|
|
93
113
|
return self._transitionModel:IsHidingComplete()
|
|
94
114
|
end
|
|
95
115
|
|
|
@@ -97,7 +117,7 @@ end
|
|
|
97
117
|
Observe is showing is complete
|
|
98
118
|
@return Observable<boolean>
|
|
99
119
|
]=]
|
|
100
|
-
function SpringTransitionModel
|
|
120
|
+
function SpringTransitionModel.ObserveIsShowingComplete<T>(self: SpringTransitionModel<T>): _Observable.Observable<boolean>
|
|
101
121
|
return self._transitionModel:ObserveIsShowingComplete()
|
|
102
122
|
end
|
|
103
123
|
|
|
@@ -105,7 +125,7 @@ end
|
|
|
105
125
|
Observe is hiding is complete
|
|
106
126
|
@return Observable<boolean>
|
|
107
127
|
]=]
|
|
108
|
-
function SpringTransitionModel
|
|
128
|
+
function SpringTransitionModel.ObserveIsHidingComplete<T>(self: SpringTransitionModel<T>): _Observable.Observable<boolean>
|
|
109
129
|
return self._transitionModel:ObserveIsHidingComplete()
|
|
110
130
|
end
|
|
111
131
|
|
|
@@ -115,7 +135,7 @@ end
|
|
|
115
135
|
@param pane BasicPane
|
|
116
136
|
@return function -- Cleanup function
|
|
117
137
|
]=]
|
|
118
|
-
function SpringTransitionModel
|
|
138
|
+
function SpringTransitionModel.BindToPaneVisbility<T>(self: SpringTransitionModel<T>, pane: BasicPane.BasicPane): () -> ()
|
|
119
139
|
local maid = Maid.new()
|
|
120
140
|
|
|
121
141
|
maid:GiveTask(pane.VisibleChanged:Connect(function(isVisible, doNotAnimate)
|
|
@@ -145,7 +165,7 @@ end
|
|
|
145
165
|
|
|
146
166
|
@return T
|
|
147
167
|
]=]
|
|
148
|
-
function SpringTransitionModel
|
|
168
|
+
function SpringTransitionModel.GetVelocity<T>(self: SpringTransitionModel<T>)
|
|
149
169
|
return self._springObject.Velocity
|
|
150
170
|
end
|
|
151
171
|
|
|
@@ -155,7 +175,7 @@ end
|
|
|
155
175
|
|
|
156
176
|
@param epsilon number
|
|
157
177
|
]=]
|
|
158
|
-
function SpringTransitionModel
|
|
178
|
+
function SpringTransitionModel.SetEpsilon<T>(self: SpringTransitionModel<T>, epsilon: number)
|
|
159
179
|
assert(type(epsilon) == "number", "Bad epsilon")
|
|
160
180
|
|
|
161
181
|
self._springObject.Epsilon = epsilon
|
|
@@ -166,7 +186,7 @@ end
|
|
|
166
186
|
|
|
167
187
|
@param speed number
|
|
168
188
|
]=]
|
|
169
|
-
function SpringTransitionModel
|
|
189
|
+
function SpringTransitionModel.SetSpeed<T>(self: SpringTransitionModel<T>, speed: number | _Observable.Observable<T>)
|
|
170
190
|
assert(type(speed) == "number", "Bad speed")
|
|
171
191
|
|
|
172
192
|
self._springObject.Speed = speed
|
|
@@ -177,7 +197,7 @@ end
|
|
|
177
197
|
|
|
178
198
|
@param damper number
|
|
179
199
|
]=]
|
|
180
|
-
function SpringTransitionModel
|
|
200
|
+
function SpringTransitionModel.SetDamper<T>(self: SpringTransitionModel<T>, damper: number | _Observable.Observable<T>)
|
|
181
201
|
assert(type(damper) == "number", "Bad damper")
|
|
182
202
|
|
|
183
203
|
self._springObject.Damper = damper
|
|
@@ -187,7 +207,7 @@ end
|
|
|
187
207
|
Observes the spring animating
|
|
188
208
|
@return Observable<T>
|
|
189
209
|
]=]
|
|
190
|
-
function SpringTransitionModel
|
|
210
|
+
function SpringTransitionModel.ObserveRenderStepped<T>(self: SpringTransitionModel<T>): _Observable.Observable<T>
|
|
191
211
|
return self._springObject:ObserveRenderStepped()
|
|
192
212
|
end
|
|
193
213
|
|
|
@@ -196,7 +216,7 @@ end
|
|
|
196
216
|
|
|
197
217
|
@return Observable<T>
|
|
198
218
|
]=]
|
|
199
|
-
function SpringTransitionModel
|
|
219
|
+
function SpringTransitionModel.Observe<T>(self: SpringTransitionModel<T>): _Observable.Observable<T>
|
|
200
220
|
return self._springObject:Observe()
|
|
201
221
|
end
|
|
202
222
|
|
|
@@ -206,7 +226,7 @@ end
|
|
|
206
226
|
@param doNotAnimate boolean
|
|
207
227
|
@return Promise
|
|
208
228
|
]=]
|
|
209
|
-
function SpringTransitionModel
|
|
229
|
+
function SpringTransitionModel.PromiseShow<T>(self: SpringTransitionModel<T>, doNotAnimate: boolean?): Promise.Promise<()>
|
|
210
230
|
return self._transitionModel:PromiseShow(doNotAnimate)
|
|
211
231
|
end
|
|
212
232
|
|
|
@@ -216,7 +236,7 @@ end
|
|
|
216
236
|
@param doNotAnimate boolean
|
|
217
237
|
@return Promise
|
|
218
238
|
]=]
|
|
219
|
-
function SpringTransitionModel
|
|
239
|
+
function SpringTransitionModel.PromiseHide<T>(self: SpringTransitionModel<T>, doNotAnimate: boolean?): Promise.Promise<()>
|
|
220
240
|
return self._transitionModel:PromiseHide(doNotAnimate)
|
|
221
241
|
end
|
|
222
242
|
|
|
@@ -226,11 +246,18 @@ end
|
|
|
226
246
|
@param doNotAnimate boolean
|
|
227
247
|
@return Promise
|
|
228
248
|
]=]
|
|
229
|
-
function SpringTransitionModel
|
|
249
|
+
function SpringTransitionModel.PromiseToggle<T>(
|
|
250
|
+
self: SpringTransitionModel<T>,
|
|
251
|
+
doNotAnimate: boolean?
|
|
252
|
+
): Promise.Promise<()>
|
|
230
253
|
return self._transitionModel:PromiseToggle(doNotAnimate)
|
|
231
254
|
end
|
|
232
255
|
|
|
233
|
-
function SpringTransitionModel
|
|
256
|
+
function SpringTransitionModel._promiseShow<T>(
|
|
257
|
+
self: SpringTransitionModel<T>,
|
|
258
|
+
maid: Maid.Maid,
|
|
259
|
+
doNotAnimate: boolean?
|
|
260
|
+
): Promise.Promise<()>
|
|
234
261
|
self._springObject:SetTarget(self._showTarget, doNotAnimate)
|
|
235
262
|
|
|
236
263
|
if doNotAnimate then
|
|
@@ -240,7 +267,11 @@ function SpringTransitionModel:_promiseShow(maid, doNotAnimate)
|
|
|
240
267
|
end
|
|
241
268
|
end
|
|
242
269
|
|
|
243
|
-
function SpringTransitionModel
|
|
270
|
+
function SpringTransitionModel._promiseHide<T>(
|
|
271
|
+
self: SpringTransitionModel<T>,
|
|
272
|
+
maid: Maid.Maid,
|
|
273
|
+
doNotAnimate: boolean?
|
|
274
|
+
): Promise.Promise<()>
|
|
244
275
|
self._springObject:SetTarget(self:_computeHideTarget(), doNotAnimate)
|
|
245
276
|
|
|
246
277
|
if doNotAnimate then
|
|
@@ -250,11 +281,11 @@ function SpringTransitionModel:_promiseHide(maid, doNotAnimate)
|
|
|
250
281
|
end
|
|
251
282
|
end
|
|
252
283
|
|
|
253
|
-
function SpringTransitionModel
|
|
284
|
+
function SpringTransitionModel._computeHideTarget<T>(self: SpringTransitionModel<T>): any
|
|
254
285
|
if self._hideTarget then
|
|
255
286
|
return SpringUtils.toLinearIfNeeded(self._hideTarget)
|
|
256
287
|
else
|
|
257
|
-
return 0*SpringUtils.toLinearIfNeeded(self._showTarget)
|
|
288
|
+
return 0 * SpringUtils.toLinearIfNeeded(self._showTarget) :: any
|
|
258
289
|
end
|
|
259
290
|
end
|
|
260
291
|
|
|
@@ -54,7 +54,7 @@ end
|
|
|
54
54
|
@param isSustained boolean
|
|
55
55
|
@param doNotAnimate boolean? -- True if animation should be skipped
|
|
56
56
|
]=]
|
|
57
|
-
function SustainModel:SetIsSustained(isSustained, doNotAnimate)
|
|
57
|
+
function SustainModel:SetIsSustained(isSustained, doNotAnimate: boolean?)
|
|
58
58
|
assert(type(isSustained) == "boolean", "Bad isSustained")
|
|
59
59
|
|
|
60
60
|
if self._isSustained ~= isSustained then
|
|
@@ -68,7 +68,7 @@ end
|
|
|
68
68
|
|
|
69
69
|
@param doNotAnimate boolean? -- True if animation should be skipped
|
|
70
70
|
]=]
|
|
71
|
-
function SustainModel:Sustain(doNotAnimate)
|
|
71
|
+
function SustainModel:Sustain(doNotAnimate: boolean?)
|
|
72
72
|
self:SetIsSustained(true, doNotAnimate)
|
|
73
73
|
end
|
|
74
74
|
|
|
@@ -77,7 +77,7 @@ end
|
|
|
77
77
|
|
|
78
78
|
@param doNotAnimate boolean? -- True if animation should be skipped
|
|
79
79
|
]=]
|
|
80
|
-
function SustainModel:Stop(doNotAnimate)
|
|
80
|
+
function SustainModel:Stop(doNotAnimate: boolean?)
|
|
81
81
|
self:SetIsSustained(false, doNotAnimate)
|
|
82
82
|
end
|
|
83
83
|
|
|
@@ -89,7 +89,7 @@ end
|
|
|
89
89
|
@param doNotAnimate boolean? -- True if animation should be skipped
|
|
90
90
|
@return Promise
|
|
91
91
|
]=]
|
|
92
|
-
function SustainModel:PromiseSustain(doNotAnimate)
|
|
92
|
+
function SustainModel:PromiseSustain(doNotAnimate: boolean?)
|
|
93
93
|
self:Sustain(doNotAnimate)
|
|
94
94
|
|
|
95
95
|
return self:_promiseSustained()
|
|
@@ -118,7 +118,7 @@ function SustainModel:_promiseSustained()
|
|
|
118
118
|
return promise
|
|
119
119
|
end
|
|
120
120
|
|
|
121
|
-
function SustainModel:_executeSustain(doNotAnimate)
|
|
121
|
+
function SustainModel:_executeSustain(doNotAnimate: boolean?)
|
|
122
122
|
local maid = Maid.new()
|
|
123
123
|
|
|
124
124
|
local promise = Promise.new()
|
|
@@ -21,7 +21,7 @@ TimedTransitionModel.__index = TimedTransitionModel
|
|
|
21
21
|
@param transitionTime number? -- Optional
|
|
22
22
|
@return TimedTransitionModel<T>
|
|
23
23
|
]=]
|
|
24
|
-
function TimedTransitionModel.new(transitionTime)
|
|
24
|
+
function TimedTransitionModel.new(transitionTime: number?)
|
|
25
25
|
local self = setmetatable(BasicPane.new(), TimedTransitionModel)
|
|
26
26
|
|
|
27
27
|
self._transitionModel = self._maid:Add(TransitionModel.new())
|
|
@@ -40,7 +40,7 @@ function TimedTransitionModel.new(transitionTime)
|
|
|
40
40
|
return self
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
function TimedTransitionModel:SetTransitionTime(transitionTime)
|
|
43
|
+
function TimedTransitionModel:SetTransitionTime(transitionTime: number)
|
|
44
44
|
self._timedTween:SetTransitionTime(transitionTime)
|
|
45
45
|
end
|
|
46
46
|
|
|
@@ -48,7 +48,7 @@ end
|
|
|
48
48
|
Returns true if showing is complete
|
|
49
49
|
@return boolean
|
|
50
50
|
]=]
|
|
51
|
-
function TimedTransitionModel:IsShowingComplete()
|
|
51
|
+
function TimedTransitionModel:IsShowingComplete(): boolean
|
|
52
52
|
return self._transitionModel:IsShowingComplete()
|
|
53
53
|
end
|
|
54
54
|
|
|
@@ -56,7 +56,7 @@ end
|
|
|
56
56
|
Returns true if hiding is complete
|
|
57
57
|
@return boolean
|
|
58
58
|
]=]
|
|
59
|
-
function TimedTransitionModel:IsHidingComplete()
|
|
59
|
+
function TimedTransitionModel:IsHidingComplete(): boolean
|
|
60
60
|
return self._transitionModel:IsHidingComplete()
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -127,20 +127,20 @@ end
|
|
|
127
127
|
--[=[
|
|
128
128
|
Shows the model and promises when the showing is complete.
|
|
129
129
|
|
|
130
|
-
@param doNotAnimate boolean
|
|
130
|
+
@param doNotAnimate boolean?
|
|
131
131
|
@return Promise
|
|
132
132
|
]=]
|
|
133
|
-
function TimedTransitionModel:PromiseShow(doNotAnimate)
|
|
133
|
+
function TimedTransitionModel:PromiseShow(doNotAnimate: boolean?)
|
|
134
134
|
return self._transitionModel:PromiseShow(doNotAnimate)
|
|
135
135
|
end
|
|
136
136
|
|
|
137
137
|
--[=[
|
|
138
138
|
Hides the model and promises when the showing is complete.
|
|
139
139
|
|
|
140
|
-
@param doNotAnimate boolean
|
|
140
|
+
@param doNotAnimate boolean?
|
|
141
141
|
@return Promise
|
|
142
142
|
]=]
|
|
143
|
-
function TimedTransitionModel:PromiseHide(doNotAnimate)
|
|
143
|
+
function TimedTransitionModel:PromiseHide(doNotAnimate: boolean?)
|
|
144
144
|
return self._transitionModel:PromiseHide(doNotAnimate)
|
|
145
145
|
end
|
|
146
146
|
|
|
@@ -150,11 +150,11 @@ end
|
|
|
150
150
|
@param doNotAnimate boolean
|
|
151
151
|
@return Promise
|
|
152
152
|
]=]
|
|
153
|
-
function TimedTransitionModel:PromiseToggle(doNotAnimate)
|
|
153
|
+
function TimedTransitionModel:PromiseToggle(doNotAnimate: boolean?)
|
|
154
154
|
return self._transitionModel:PromiseToggle(doNotAnimate)
|
|
155
155
|
end
|
|
156
156
|
|
|
157
|
-
function TimedTransitionModel:_promiseShow(maid, doNotAnimate)
|
|
157
|
+
function TimedTransitionModel:_promiseShow(maid, doNotAnimate: boolean?)
|
|
158
158
|
self._timedTween:Show(doNotAnimate)
|
|
159
159
|
|
|
160
160
|
if doNotAnimate then
|
|
@@ -164,7 +164,7 @@ function TimedTransitionModel:_promiseShow(maid, doNotAnimate)
|
|
|
164
164
|
end
|
|
165
165
|
end
|
|
166
166
|
|
|
167
|
-
function TimedTransitionModel:_promiseHide(maid, doNotAnimate)
|
|
167
|
+
function TimedTransitionModel:_promiseHide(maid, doNotAnimate: boolean?)
|
|
168
168
|
self._timedTween:Hide(doNotAnimate)
|
|
169
169
|
|
|
170
170
|
if doNotAnimate then
|
|
@@ -12,11 +12,28 @@ local Promise = require("Promise")
|
|
|
12
12
|
local Maid = require("Maid")
|
|
13
13
|
local ValueObject = require("ValueObject")
|
|
14
14
|
local DuckTypeUtils = require("DuckTypeUtils")
|
|
15
|
+
local _Signal = require("Signal")
|
|
16
|
+
local _Observable = require("Observable")
|
|
15
17
|
|
|
16
18
|
local TransitionModel = setmetatable({}, BasicPane)
|
|
17
19
|
TransitionModel.ClassName = "TransitionModel"
|
|
18
20
|
TransitionModel.__index = TransitionModel
|
|
19
21
|
|
|
22
|
+
export type TransitionModel = typeof(setmetatable(
|
|
23
|
+
{} :: {
|
|
24
|
+
_isShowingComplete: ValueObject.ValueObject<boolean>,
|
|
25
|
+
_isHidingComplete: ValueObject.ValueObject<boolean>,
|
|
26
|
+
|
|
27
|
+
-- From BasicPane
|
|
28
|
+
_maid: Maid.Maid,
|
|
29
|
+
IsVisible: (self: TransitionModel) -> boolean,
|
|
30
|
+
SetVisible: (self: TransitionModel, isVisible: boolean, doNotAnimate: boolean?) -> (),
|
|
31
|
+
VisibleChanged: _Signal.Signal<boolean, boolean>,
|
|
32
|
+
Destroy: (self: TransitionModel) -> (),
|
|
33
|
+
},
|
|
34
|
+
TransitionModel
|
|
35
|
+
))
|
|
36
|
+
|
|
20
37
|
--[=[
|
|
21
38
|
A transition model that takes a set amount of time to show
|
|
22
39
|
and hide. Can be used just like a [BasicPane] (in fact, it
|
|
@@ -25,7 +42,7 @@ TransitionModel.__index = TransitionModel
|
|
|
25
42
|
|
|
26
43
|
@return TransitionModel
|
|
27
44
|
]=]
|
|
28
|
-
function TransitionModel.new()
|
|
45
|
+
function TransitionModel.new(): TransitionModel
|
|
29
46
|
local self = setmetatable(BasicPane.new(), TransitionModel)
|
|
30
47
|
|
|
31
48
|
self._isShowingComplete = self._maid:Add(ValueObject.new(false, "boolean"))
|
|
@@ -51,7 +68,7 @@ end
|
|
|
51
68
|
@param value any
|
|
52
69
|
@return boolean
|
|
53
70
|
]=]
|
|
54
|
-
function TransitionModel.isTransitionModel(value)
|
|
71
|
+
function TransitionModel.isTransitionModel(value: any): boolean
|
|
55
72
|
return DuckTypeUtils.isImplementation(TransitionModel, value)
|
|
56
73
|
end
|
|
57
74
|
|
|
@@ -61,7 +78,7 @@ end
|
|
|
61
78
|
@param doNotAnimate boolean
|
|
62
79
|
@return Promise
|
|
63
80
|
]=]
|
|
64
|
-
function TransitionModel:PromiseShow(doNotAnimate)
|
|
81
|
+
function TransitionModel:PromiseShow(doNotAnimate: boolean?): Promise.Promise<()>
|
|
65
82
|
local promise = self:_promiseIsShown()
|
|
66
83
|
|
|
67
84
|
self:Show(doNotAnimate)
|
|
@@ -75,7 +92,7 @@ end
|
|
|
75
92
|
@param doNotAnimate boolean
|
|
76
93
|
@return Promise
|
|
77
94
|
]=]
|
|
78
|
-
function TransitionModel:PromiseHide(doNotAnimate)
|
|
95
|
+
function TransitionModel:PromiseHide(doNotAnimate: boolean?): Promise.Promise<()>
|
|
79
96
|
local promise = self:_promiseIsHidden()
|
|
80
97
|
|
|
81
98
|
self:Hide(doNotAnimate)
|
|
@@ -89,7 +106,7 @@ end
|
|
|
89
106
|
@param doNotAnimate boolean
|
|
90
107
|
@return Promise
|
|
91
108
|
]=]
|
|
92
|
-
function TransitionModel:PromiseToggle(doNotAnimate)
|
|
109
|
+
function TransitionModel:PromiseToggle(doNotAnimate: boolean?): Promise.Promise<()>
|
|
93
110
|
if self:IsVisible() then
|
|
94
111
|
return self:PromiseShow(doNotAnimate)
|
|
95
112
|
else
|
|
@@ -99,17 +116,17 @@ end
|
|
|
99
116
|
|
|
100
117
|
--[=[
|
|
101
118
|
Returns true if showing is complete
|
|
102
|
-
@return boolean
|
|
119
|
+
@return boolean?
|
|
103
120
|
]=]
|
|
104
|
-
function TransitionModel:IsShowingComplete()
|
|
121
|
+
function TransitionModel:IsShowingComplete(): boolean
|
|
105
122
|
return self._isShowingComplete.Value
|
|
106
123
|
end
|
|
107
124
|
|
|
108
125
|
--[=[
|
|
109
126
|
Returns true if hiding is complete
|
|
110
|
-
@return boolean
|
|
127
|
+
@return boolean?
|
|
111
128
|
]=]
|
|
112
|
-
function TransitionModel:IsHidingComplete()
|
|
129
|
+
function TransitionModel:IsHidingComplete(): boolean?
|
|
113
130
|
return self._isHidingComplete.Value
|
|
114
131
|
end
|
|
115
132
|
|
|
@@ -117,7 +134,7 @@ end
|
|
|
117
134
|
Observe is showing is complete
|
|
118
135
|
@return Observable<boolean>
|
|
119
136
|
]=]
|
|
120
|
-
function TransitionModel:ObserveIsShowingComplete()
|
|
137
|
+
function TransitionModel:ObserveIsShowingComplete(): _Observable.Observable<boolean>
|
|
121
138
|
return self._isShowingComplete:Observe()
|
|
122
139
|
end
|
|
123
140
|
|
|
@@ -125,7 +142,7 @@ end
|
|
|
125
142
|
Observe is hiding is complete
|
|
126
143
|
@return Observable<boolean>
|
|
127
144
|
]=]
|
|
128
|
-
function TransitionModel:ObserveIsHidingComplete()
|
|
145
|
+
function TransitionModel:ObserveIsHidingComplete(): _Observable.Observable<boolean>
|
|
129
146
|
return self._isHidingComplete:Observe()
|
|
130
147
|
end
|
|
131
148
|
|
|
@@ -135,7 +152,7 @@ end
|
|
|
135
152
|
@param pane BasicPane
|
|
136
153
|
@return function -- Cleanup function
|
|
137
154
|
]=]
|
|
138
|
-
function TransitionModel:BindToPaneVisbility(pane)
|
|
155
|
+
function TransitionModel:BindToPaneVisbility(pane: BasicPane.BasicPane): () -> ()
|
|
139
156
|
local maid = Maid.new()
|
|
140
157
|
|
|
141
158
|
maid:GiveTask(pane.VisibleChanged:Connect(function(isVisible, doNotAnimate)
|
|
@@ -178,7 +195,7 @@ function TransitionModel:SetPromiseHide(hideCallback)
|
|
|
178
195
|
self._hideCallback = hideCallback
|
|
179
196
|
end
|
|
180
197
|
|
|
181
|
-
function TransitionModel:_promiseIsShown()
|
|
198
|
+
function TransitionModel:_promiseIsShown(): Promise.Promise<()>
|
|
182
199
|
if self._isShowingComplete.Value then
|
|
183
200
|
return Promise.resolved()
|
|
184
201
|
end
|
|
@@ -207,8 +224,7 @@ function TransitionModel:_promiseIsShown()
|
|
|
207
224
|
return promise
|
|
208
225
|
end
|
|
209
226
|
|
|
210
|
-
|
|
211
|
-
function TransitionModel:_promiseIsHidden()
|
|
227
|
+
function TransitionModel:_promiseIsHidden(): Promise.Promise<()>
|
|
212
228
|
if self._isHidingComplete.Value then
|
|
213
229
|
return Promise.resolved()
|
|
214
230
|
end
|
|
@@ -237,7 +253,7 @@ function TransitionModel:_promiseIsHidden()
|
|
|
237
253
|
return promise
|
|
238
254
|
end
|
|
239
255
|
|
|
240
|
-
function TransitionModel:_executeShow(doNotAnimate)
|
|
256
|
+
function TransitionModel:_executeShow(doNotAnimate: boolean?)
|
|
241
257
|
self._maid._transition = nil
|
|
242
258
|
|
|
243
259
|
local maid = Maid.new()
|
|
@@ -252,7 +268,12 @@ function TransitionModel:_executeShow(doNotAnimate)
|
|
|
252
268
|
promise:Resolve(result)
|
|
253
269
|
else
|
|
254
270
|
promise:Reject()
|
|
255
|
-
error(
|
|
271
|
+
error(
|
|
272
|
+
string.format(
|
|
273
|
+
"[TransitionModel] - Expected promise to be returned from showCallback, got %q",
|
|
274
|
+
tostring(result)
|
|
275
|
+
)
|
|
276
|
+
)
|
|
256
277
|
end
|
|
257
278
|
else
|
|
258
279
|
-- Immediately resolve
|
|
@@ -270,7 +291,7 @@ function TransitionModel:_executeShow(doNotAnimate)
|
|
|
270
291
|
end
|
|
271
292
|
end
|
|
272
293
|
|
|
273
|
-
function TransitionModel:_executeHide(doNotAnimate)
|
|
294
|
+
function TransitionModel:_executeHide(doNotAnimate: boolean?)
|
|
274
295
|
self._maid._transition = nil
|
|
275
296
|
|
|
276
297
|
local maid = Maid.new()
|