@quenty/transitionmodel 7.19.3 → 7.19.4-canary.559.339cfa7.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.4-canary.559.339cfa7.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@7.19.3...@quenty/transitionmodel@7.19.4-canary.559.339cfa7.0) (2025-05-10)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * Additional type checking updates ([05ba29a](https://github.com/Quenty/NevermoreEngine/commit/05ba29a03efc9f3feed74b34f1d9dfb237496214))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [7.19.3](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@7.19.2...@quenty/transitionmodel@7.19.3) (2025-04-10)
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.3",
3
+ "version": "7.19.4-canary.559.339cfa7.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": "^10.8.3",
29
- "@quenty/basicpane": "^13.17.3",
30
- "@quenty/blend": "^12.18.3",
31
- "@quenty/ducktype": "^5.8.4",
32
- "@quenty/instanceutils": "^13.17.3",
33
- "@quenty/loader": "^10.8.3",
34
- "@quenty/maid": "^3.4.3",
35
- "@quenty/promise": "^10.10.4",
36
- "@quenty/rx": "^13.17.3",
37
- "@quenty/signal": "^7.10.3",
38
- "@quenty/spring": "^10.8.4",
39
- "@quenty/timedtween": "^7.18.3",
40
- "@quenty/valueobject": "^13.17.3"
28
+ "@quenty/baseobject": "10.8.4-canary.559.339cfa7.0",
29
+ "@quenty/basicpane": "13.17.4-canary.559.339cfa7.0",
30
+ "@quenty/blend": "12.18.4-canary.559.339cfa7.0",
31
+ "@quenty/ducktype": "5.8.5-canary.559.339cfa7.0",
32
+ "@quenty/instanceutils": "13.17.4-canary.559.339cfa7.0",
33
+ "@quenty/loader": "10.8.4-canary.559.339cfa7.0",
34
+ "@quenty/maid": "3.4.4-canary.559.339cfa7.0",
35
+ "@quenty/promise": "10.10.5-canary.559.339cfa7.0",
36
+ "@quenty/rx": "13.17.4-canary.559.339cfa7.0",
37
+ "@quenty/signal": "7.10.4-canary.559.339cfa7.0",
38
+ "@quenty/spring": "10.8.5-canary.559.339cfa7.0",
39
+ "@quenty/timedtween": "7.18.4-canary.559.339cfa7.0",
40
+ "@quenty/valueobject": "13.17.4-canary.559.339cfa7.0"
41
41
  },
42
42
  "publishConfig": {
43
43
  "access": "public"
44
44
  },
45
- "gitHead": "b06c070ae91d5dab7bd8de6e290ad2caabb15d8f"
45
+ "gitHead": "339cfa778736f08768ed7305041f6221faa35bfc"
46
46
  }
@@ -6,13 +6,12 @@
6
6
  local require = require(script.Parent.loader).load(script)
7
7
 
8
8
  local BasicPane = require("BasicPane")
9
- local TransitionModel = require("TransitionModel")
10
- local SpringObject = require("SpringObject")
11
- local Promise = require("Promise")
12
9
  local Maid = require("Maid")
10
+ local Observable = require("Observable")
11
+ local Promise = require("Promise")
12
+ local SpringObject = require("SpringObject")
13
13
  local SpringUtils = require("SpringUtils")
14
- local _Observable = require("Observable")
15
- local _Signal = require("Signal")
14
+ local TransitionModel = require("TransitionModel")
16
15
 
17
16
  local SpringTransitionModel = setmetatable({}, BasicPane)
18
17
  SpringTransitionModel.ClassName = "SpringTransitionModel"
@@ -110,7 +109,7 @@ end
110
109
  Observe is showing is complete
111
110
  @return Observable<boolean>
112
111
  ]=]
113
- function SpringTransitionModel.ObserveIsShowingComplete<T>(self: SpringTransitionModel<T>): _Observable.Observable<boolean>
112
+ function SpringTransitionModel.ObserveIsShowingComplete<T>(self: SpringTransitionModel<T>): Observable.Observable<boolean>
114
113
  return self._transitionModel:ObserveIsShowingComplete()
115
114
  end
116
115
 
@@ -118,7 +117,7 @@ end
118
117
  Observe is hiding is complete
119
118
  @return Observable<boolean>
120
119
  ]=]
121
- function SpringTransitionModel.ObserveIsHidingComplete<T>(self: SpringTransitionModel<T>): _Observable.Observable<boolean>
120
+ function SpringTransitionModel.ObserveIsHidingComplete<T>(self: SpringTransitionModel<T>): Observable.Observable<boolean>
122
121
  return self._transitionModel:ObserveIsHidingComplete()
123
122
  end
124
123
 
@@ -179,7 +178,7 @@ end
179
178
 
180
179
  @param speed number
181
180
  ]=]
182
- function SpringTransitionModel.SetSpeed<T>(self: SpringTransitionModel<T>, speed: number | _Observable.Observable<T>)
181
+ function SpringTransitionModel.SetSpeed<T>(self: SpringTransitionModel<T>, speed: number | Observable.Observable<T>)
183
182
  assert(type(speed) == "number", "Bad speed")
184
183
 
185
184
  self._springObject.Speed = speed
@@ -190,7 +189,7 @@ end
190
189
 
191
190
  @param damper number
192
191
  ]=]
193
- function SpringTransitionModel.SetDamper<T>(self: SpringTransitionModel<T>, damper: number | _Observable.Observable<T>)
192
+ function SpringTransitionModel.SetDamper<T>(self: SpringTransitionModel<T>, damper: number | Observable.Observable<T>)
194
193
  assert(type(damper) == "number", "Bad damper")
195
194
 
196
195
  self._springObject.Damper = damper
@@ -200,7 +199,7 @@ end
200
199
  Observes the spring animating
201
200
  @return Observable<T>
202
201
  ]=]
203
- function SpringTransitionModel.ObserveRenderStepped<T>(self: SpringTransitionModel<T>): _Observable.Observable<T>
202
+ function SpringTransitionModel.ObserveRenderStepped<T>(self: SpringTransitionModel<T>): Observable.Observable<T>
204
203
  return self._springObject:ObserveRenderStepped()
205
204
  end
206
205
 
@@ -209,7 +208,7 @@ end
209
208
 
210
209
  @return Observable<T>
211
210
  ]=]
212
- function SpringTransitionModel.Observe<T>(self: SpringTransitionModel<T>): _Observable.Observable<T>
211
+ function SpringTransitionModel.Observe<T>(self: SpringTransitionModel<T>): Observable.Observable<T>
213
212
  return self._springObject:Observe()
214
213
  end
215
214
 
@@ -282,4 +281,4 @@ function SpringTransitionModel._computeHideTarget<T>(self: SpringTransitionModel
282
281
  end
283
282
  end
284
283
 
285
- return SpringTransitionModel
284
+ return SpringTransitionModel
@@ -1,3 +1,4 @@
1
+ --!strict
1
2
  --[=[
2
3
  A sustain model is much like a [TransitionModel] but is responsible for
3
4
  sustaining some animation or state. Useful to represent the sustained state
@@ -17,14 +18,25 @@ local SustainModel = setmetatable({}, BaseObject)
17
18
  SustainModel.ClassName = "SustainModel"
18
19
  SustainModel.__index = SustainModel
19
20
 
20
- function SustainModel.new()
21
- local self = setmetatable(BaseObject.new(), SustainModel)
21
+ export type SustainCallback = (Maid.Maid, boolean?) -> Promise.Promise<()> | any
22
+
23
+ export type SustainModel = typeof(setmetatable(
24
+ {} :: {
25
+ _isSustained: boolean,
26
+ _sustainCallback: SustainCallback?,
27
+ _maid: Maid.Maid,
28
+ SustainChanged: Signal.Signal<(boolean, boolean?)>,
29
+ },
30
+ {} :: typeof({ __index = SustainModel })
31
+ )) & BaseObject.BaseObject
32
+
33
+ function SustainModel.new(): SustainModel
34
+ local self: SustainModel = setmetatable(BaseObject.new() :: any, SustainModel)
22
35
 
23
36
  self._isSustained = false
24
37
  self._sustainCallback = nil
25
38
 
26
- self.SustainChanged = Signal.new() -- :Fire(isSustained, doNotAnimate)
27
- self._maid:GiveTask(self.SustainChanged)
39
+ self.SustainChanged = self._maid:Add(Signal.new() :: any) -- :Fire(isSustained, doNotAnimate)
28
40
 
29
41
  self._maid:GiveTask(self.SustainChanged:Connect(function(isSustained, doNotAnimate)
30
42
  if isSustained then
@@ -42,7 +54,7 @@ end
42
54
 
43
55
  @param sustainCallback function? -- Callback which should return a promise
44
56
  ]=]
45
- function SustainModel:SetPromiseSustain(sustainCallback)
57
+ function SustainModel.SetPromiseSustain(self: SustainModel, sustainCallback: SustainCallback?)
46
58
  assert(type(sustainCallback) == "function" or sustainCallback == nil, "Bad sustainCallback")
47
59
 
48
60
  self._sustainCallback = sustainCallback
@@ -54,7 +66,7 @@ end
54
66
  @param isSustained boolean
55
67
  @param doNotAnimate boolean? -- True if animation should be skipped
56
68
  ]=]
57
- function SustainModel:SetIsSustained(isSustained, doNotAnimate: boolean?)
69
+ function SustainModel.SetIsSustained(self: SustainModel, isSustained: boolean, doNotAnimate: boolean?)
58
70
  assert(type(isSustained) == "boolean", "Bad isSustained")
59
71
 
60
72
  if self._isSustained ~= isSustained then
@@ -68,7 +80,7 @@ end
68
80
 
69
81
  @param doNotAnimate boolean? -- True if animation should be skipped
70
82
  ]=]
71
- function SustainModel:Sustain(doNotAnimate: boolean?)
83
+ function SustainModel.Sustain(self: SustainModel, doNotAnimate: boolean?)
72
84
  self:SetIsSustained(true, doNotAnimate)
73
85
  end
74
86
 
@@ -77,7 +89,7 @@ end
77
89
 
78
90
  @param doNotAnimate boolean? -- True if animation should be skipped
79
91
  ]=]
80
- function SustainModel:Stop(doNotAnimate: boolean?)
92
+ function SustainModel.Stop(self: SustainModel, doNotAnimate: boolean?)
81
93
  self:SetIsSustained(false, doNotAnimate)
82
94
  end
83
95
 
@@ -89,13 +101,13 @@ end
89
101
  @param doNotAnimate boolean? -- True if animation should be skipped
90
102
  @return Promise
91
103
  ]=]
92
- function SustainModel:PromiseSustain(doNotAnimate: boolean?)
104
+ function SustainModel.PromiseSustain(self: SustainModel, doNotAnimate: boolean?): Promise.Promise<()>
93
105
  self:Sustain(doNotAnimate)
94
106
 
95
107
  return self:_promiseSustained()
96
108
  end
97
109
 
98
- function SustainModel:_promiseSustained()
110
+ function SustainModel._promiseSustained(self: SustainModel): Promise.Promise<()>
99
111
  if not self._isSustained then
100
112
  return Promise.resolved()
101
113
  end
@@ -118,11 +130,9 @@ function SustainModel:_promiseSustained()
118
130
  return promise
119
131
  end
120
132
 
121
- function SustainModel:_executeSustain(doNotAnimate: boolean?)
133
+ function SustainModel._executeSustain(self: SustainModel, doNotAnimate: boolean?): ()
122
134
  local maid = Maid.new()
123
-
124
- local promise = Promise.new()
125
- maid:GiveTask(promise)
135
+ local promise = maid:Add(Promise.new())
126
136
 
127
137
  if self._sustainCallback then
128
138
  local result = self._sustainCallback(maid, doNotAnimate)
@@ -130,7 +140,12 @@ function SustainModel:_executeSustain(doNotAnimate: boolean?)
130
140
  promise:Resolve(result)
131
141
  else
132
142
  promise:Reject()
133
- error(string.format("[SustainModel] - Expected promise to be returned from sustainCallback, got %q", tostring(result)))
143
+ error(
144
+ string.format(
145
+ "[SustainModel] - Expected promise to be returned from sustainCallback, got %q",
146
+ tostring(result)
147
+ )
148
+ )
134
149
  end
135
150
  end
136
151
 
@@ -141,5 +156,4 @@ function SustainModel:_executeSustain(doNotAnimate: boolean?)
141
156
  self._maid._sustaining = maid
142
157
  end
143
158
 
144
-
145
- return SustainModel
159
+ return SustainModel
@@ -1,3 +1,4 @@
1
+ --!strict
1
2
  --[=[
2
3
  @class TimedTransitionModel
3
4
  ]=]
@@ -5,24 +6,33 @@
5
6
  local require = require(script.Parent.loader).load(script)
6
7
 
7
8
  local BasicPane = require("BasicPane")
8
- local TransitionModel = require("TransitionModel")
9
- local TimedTween = require("TimedTween")
10
- local Promise = require("Promise")
11
9
  local Maid = require("Maid")
10
+ local Observable = require("Observable")
11
+ local Promise = require("Promise")
12
+ local TimedTween = require("TimedTween")
13
+ local TransitionModel = require("TransitionModel")
12
14
 
13
15
  local TimedTransitionModel = setmetatable({}, BasicPane)
14
16
  TimedTransitionModel.ClassName = "TimedTransitionModel"
15
17
  TimedTransitionModel.__index = TimedTransitionModel
16
18
 
19
+ export type TimedTransitionModel = typeof(setmetatable(
20
+ {} :: {
21
+ _transitionModel: TransitionModel.TransitionModel,
22
+ _timedTween: TimedTween.TimedTween,
23
+ },
24
+ {} :: typeof({ __index = TimedTransitionModel })
25
+ )) & BasicPane.BasicPane
26
+
17
27
  --[=[
18
28
  A transition model that has a spring underlying it. Very useful
19
29
  for animations on tracks that need to be on a spring.
20
30
 
21
31
  @param transitionTime number? -- Optional
22
- @return TimedTransitionModel<T>
32
+ @return TimedTransitionModel
23
33
  ]=]
24
- function TimedTransitionModel.new(transitionTime: number?)
25
- local self = setmetatable(BasicPane.new(), TimedTransitionModel)
34
+ function TimedTransitionModel.new(transitionTime: number?): TimedTransitionModel
35
+ local self: TimedTransitionModel = setmetatable(BasicPane.new() :: any, TimedTransitionModel)
26
36
 
27
37
  self._transitionModel = self._maid:Add(TransitionModel.new())
28
38
  self._transitionModel:BindToPaneVisbility(self)
@@ -40,7 +50,12 @@ function TimedTransitionModel.new(transitionTime: number?)
40
50
  return self
41
51
  end
42
52
 
43
- function TimedTransitionModel:SetTransitionTime(transitionTime: number)
53
+ --[=[
54
+ Sets the transition time
55
+
56
+ @param transitionTime number
57
+ ]=]
58
+ function TimedTransitionModel.SetTransitionTime(self: TimedTransitionModel, transitionTime: number)
44
59
  self._timedTween:SetTransitionTime(transitionTime)
45
60
  end
46
61
 
@@ -48,7 +63,7 @@ end
48
63
  Returns true if showing is complete
49
64
  @return boolean
50
65
  ]=]
51
- function TimedTransitionModel:IsShowingComplete(): boolean
66
+ function TimedTransitionModel.IsShowingComplete(self: TimedTransitionModel): boolean
52
67
  return self._transitionModel:IsShowingComplete()
53
68
  end
54
69
 
@@ -56,7 +71,7 @@ end
56
71
  Returns true if hiding is complete
57
72
  @return boolean
58
73
  ]=]
59
- function TimedTransitionModel:IsHidingComplete(): boolean
74
+ function TimedTransitionModel.IsHidingComplete(self: TimedTransitionModel): boolean
60
75
  return self._transitionModel:IsHidingComplete()
61
76
  end
62
77
 
@@ -64,7 +79,7 @@ end
64
79
  Observe is showing is complete
65
80
  @return Observable<boolean>
66
81
  ]=]
67
- function TimedTransitionModel:ObserveIsShowingComplete()
82
+ function TimedTransitionModel.ObserveIsShowingComplete(self: TimedTransitionModel): Observable.Observable<boolean>
68
83
  return self._transitionModel:ObserveIsShowingComplete()
69
84
  end
70
85
 
@@ -72,7 +87,7 @@ end
72
87
  Observe is hiding is complete
73
88
  @return Observable<boolean>
74
89
  ]=]
75
- function TimedTransitionModel:ObserveIsHidingComplete()
90
+ function TimedTransitionModel.ObserveIsHidingComplete(self: TimedTransitionModel): Observable.Observable<boolean>
76
91
  return self._transitionModel:ObserveIsHidingComplete()
77
92
  end
78
93
 
@@ -82,7 +97,7 @@ end
82
97
  @param pane BasicPane
83
98
  @return function -- Cleanup function
84
99
  ]=]
85
- function TimedTransitionModel:BindToPaneVisbility(pane)
100
+ function TimedTransitionModel.BindToPaneVisbility(self: TimedTransitionModel, pane: BasicPane.BasicPane): () -> ()
86
101
  local maid = Maid.new()
87
102
 
88
103
  maid:GiveTask(pane.VisibleChanged:Connect(function(isVisible, doNotAnimate)
@@ -109,18 +124,18 @@ end
109
124
 
110
125
  --[=[
111
126
  Observes the spring animating
112
- @return Observable<T>
127
+ @return Observable<number>
113
128
  ]=]
114
- function TimedTransitionModel:ObserveRenderStepped()
129
+ function TimedTransitionModel.ObserveRenderStepped(self: TimedTransitionModel): Observable.Observable<number>
115
130
  return self._timedTween:ObserveRenderStepped()
116
131
  end
117
132
 
118
133
  --[=[
119
134
  Alias to spring transition model observation!
120
135
 
121
- @return Observable<T>
136
+ @return Observable<number>
122
137
  ]=]
123
- function TimedTransitionModel:Observe()
138
+ function TimedTransitionModel.Observe(self: TimedTransitionModel): Observable.Observable<number>
124
139
  return self._timedTween:Observe()
125
140
  end
126
141
 
@@ -130,7 +145,7 @@ end
130
145
  @param doNotAnimate boolean?
131
146
  @return Promise
132
147
  ]=]
133
- function TimedTransitionModel:PromiseShow(doNotAnimate: boolean?)
148
+ function TimedTransitionModel.PromiseShow(self: TimedTransitionModel, doNotAnimate: boolean?): Promise.Promise<()>
134
149
  return self._transitionModel:PromiseShow(doNotAnimate)
135
150
  end
136
151
 
@@ -140,7 +155,7 @@ end
140
155
  @param doNotAnimate boolean?
141
156
  @return Promise
142
157
  ]=]
143
- function TimedTransitionModel:PromiseHide(doNotAnimate: boolean?)
158
+ function TimedTransitionModel.PromiseHide(self: TimedTransitionModel, doNotAnimate: boolean?): Promise.Promise<()>
144
159
  return self._transitionModel:PromiseHide(doNotAnimate)
145
160
  end
146
161
 
@@ -150,11 +165,15 @@ end
150
165
  @param doNotAnimate boolean
151
166
  @return Promise
152
167
  ]=]
153
- function TimedTransitionModel:PromiseToggle(doNotAnimate: boolean?)
168
+ function TimedTransitionModel.PromiseToggle(self: TimedTransitionModel, doNotAnimate: boolean?): Promise.Promise<()>
154
169
  return self._transitionModel:PromiseToggle(doNotAnimate)
155
170
  end
156
171
 
157
- function TimedTransitionModel:_promiseShow(maid, doNotAnimate: boolean?)
172
+ function TimedTransitionModel._promiseShow(
173
+ self: TimedTransitionModel,
174
+ maid,
175
+ doNotAnimate: boolean?
176
+ ): Promise.Promise<()>
158
177
  self._timedTween:Show(doNotAnimate)
159
178
 
160
179
  if doNotAnimate then
@@ -164,7 +183,11 @@ function TimedTransitionModel:_promiseShow(maid, doNotAnimate: boolean?)
164
183
  end
165
184
  end
166
185
 
167
- function TimedTransitionModel:_promiseHide(maid, doNotAnimate: boolean?)
186
+ function TimedTransitionModel._promiseHide(
187
+ self: TimedTransitionModel,
188
+ maid: Maid.Maid,
189
+ doNotAnimate: boolean?
190
+ ): Promise.Promise<()>
168
191
  self._timedTween:Hide(doNotAnimate)
169
192
 
170
193
  if doNotAnimate then
@@ -174,5 +197,4 @@ function TimedTransitionModel:_promiseHide(maid, doNotAnimate: boolean?)
174
197
  end
175
198
  end
176
199
 
177
-
178
- return TimedTransitionModel
200
+ return TimedTransitionModel
@@ -9,12 +9,11 @@
9
9
  local require = require(script.Parent.loader).load(script)
10
10
 
11
11
  local BasicPane = require("BasicPane")
12
- local Promise = require("Promise")
12
+ local DuckTypeUtils = require("DuckTypeUtils")
13
13
  local Maid = require("Maid")
14
+ local Observable = require("Observable")
15
+ local Promise = require("Promise")
14
16
  local ValueObject = require("ValueObject")
15
- local DuckTypeUtils = require("DuckTypeUtils")
16
- local _Signal = require("Signal")
17
- local _Observable = require("Observable")
18
17
 
19
18
  local TransitionModel = setmetatable({}, BasicPane)
20
19
  TransitionModel.ClassName = "TransitionModel"
@@ -132,7 +131,7 @@ end
132
131
  Observe is showing is complete
133
132
  @return Observable<boolean>
134
133
  ]=]
135
- function TransitionModel.ObserveIsShowingComplete(self: TransitionModel): _Observable.Observable<boolean>
134
+ function TransitionModel.ObserveIsShowingComplete(self: TransitionModel): Observable.Observable<boolean>
136
135
  return self._isShowingComplete:Observe()
137
136
  end
138
137
 
@@ -140,7 +139,7 @@ end
140
139
  Observe is hiding is complete
141
140
  @return Observable<boolean>
142
141
  ]=]
143
- function TransitionModel.ObserveIsHidingComplete(self: TransitionModel): _Observable.Observable<boolean>
142
+ function TransitionModel.ObserveIsHidingComplete(self: TransitionModel): Observable.Observable<boolean>
144
143
  return self._isHidingComplete:Observe()
145
144
  end
146
145
 
@@ -304,7 +303,12 @@ function TransitionModel._executeHide(self: TransitionModel, doNotAnimate: boole
304
303
  promise:Resolve(result)
305
304
  else
306
305
  promise:Reject()
307
- error(string.format("[TransitionModel] - Expected promise to be returned from hideCallback, got %q", tostring(result)))
306
+ error(
307
+ string.format(
308
+ "[TransitionModel] - Expected promise to be returned from hideCallback, got %q",
309
+ tostring(result)
310
+ )
311
+ )
308
312
  end
309
313
  else
310
314
  -- Immediately resolve
@@ -322,4 +326,4 @@ function TransitionModel._executeHide(self: TransitionModel, doNotAnimate: boole
322
326
  end
323
327
  end
324
328
 
325
- return TransitionModel
329
+ return TransitionModel
@@ -1,3 +1,4 @@
1
+ --!strict
1
2
  --[=[
2
3
  @class TransitionUtils
3
4
  ]=]
@@ -19,11 +20,11 @@ local TransitionUtils = {}
19
20
  @param value any
20
21
  @return boolean
21
22
  ]=]
22
- function TransitionUtils.isTransition(value)
23
+ function TransitionUtils.isTransition(value: any): boolean
23
24
  return BasicPane.isBasicPane(value)
24
25
  and type(value.PromiseShow) == "function"
25
26
  and type(value.PromiseHide) == "function"
26
27
  and type(value.PromiseToggle) == "function"
27
28
  end
28
29
 
29
- return TransitionUtils
30
+ return TransitionUtils