@quenty/transitionmodel 2.0.0-canary.367.e9fdcbc.0 → 2.0.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,7 +3,109 @@
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
- # [2.0.0-canary.367.e9fdcbc.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.9.0...@quenty/transitionmodel@2.0.0-canary.367.e9fdcbc.0) (2023-06-05)
6
+ # [2.0.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.20.0...@quenty/transitionmodel@2.0.0) (2023-10-11)
7
+
8
+ **Note:** Version bump only for package @quenty/transitionmodel
9
+
10
+
11
+
12
+
13
+
14
+ # [1.20.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.19.0...@quenty/transitionmodel@1.20.0) (2023-09-21)
15
+
16
+ **Note:** Version bump only for package @quenty/transitionmodel
17
+
18
+
19
+
20
+
21
+
22
+ # [1.19.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.18.0...@quenty/transitionmodel@1.19.0) (2023-09-04)
23
+
24
+ **Note:** Version bump only for package @quenty/transitionmodel
25
+
26
+
27
+
28
+
29
+
30
+ # [1.18.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.17.0...@quenty/transitionmodel@1.18.0) (2023-08-23)
31
+
32
+
33
+ ### Features
34
+
35
+ * Add TimedTransitionModel.new() ([4d582f0](https://github.com/Quenty/NevermoreEngine/commit/4d582f0b290fca4cf3ef9b65ca4d526f0d8061ab))
36
+
37
+
38
+
39
+
40
+
41
+ # [1.17.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.16.0...@quenty/transitionmodel@1.17.0) (2023-08-01)
42
+
43
+ **Note:** Version bump only for package @quenty/transitionmodel
44
+
45
+
46
+
47
+
48
+
49
+ # [1.16.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.15.0...@quenty/transitionmodel@1.16.0) (2023-07-28)
50
+
51
+ **Note:** Version bump only for package @quenty/transitionmodel
52
+
53
+
54
+
55
+
56
+
57
+ # [1.15.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.14.0...@quenty/transitionmodel@1.15.0) (2023-07-25)
58
+
59
+ **Note:** Version bump only for package @quenty/transitionmodel
60
+
61
+
62
+
63
+
64
+
65
+ # [1.14.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.13.0...@quenty/transitionmodel@1.14.0) (2023-07-23)
66
+
67
+
68
+ ### Features
69
+
70
+ * Add :Observe() to SpringTransitionModel so it can be passed directly into Blend ([2d9fb45](https://github.com/Quenty/NevermoreEngine/commit/2d9fb45af5f9dfdfeb2b4a2933e553d9efb63a8a))
71
+
72
+
73
+
74
+
75
+
76
+ # [1.13.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.12.1...@quenty/transitionmodel@1.13.0) (2023-07-15)
77
+
78
+ **Note:** Version bump only for package @quenty/transitionmodel
79
+
80
+
81
+
82
+
83
+
84
+ ## [1.12.1](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.12.0...@quenty/transitionmodel@1.12.1) (2023-07-11)
85
+
86
+ **Note:** Version bump only for package @quenty/transitionmodel
87
+
88
+
89
+
90
+
91
+
92
+ # [1.12.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.11.0...@quenty/transitionmodel@1.12.0) (2023-07-10)
93
+
94
+ **Note:** Version bump only for package @quenty/transitionmodel
95
+
96
+
97
+
98
+
99
+
100
+ # [1.11.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.10.0...@quenty/transitionmodel@1.11.0) (2023-06-17)
101
+
102
+ **Note:** Version bump only for package @quenty/transitionmodel
103
+
104
+
105
+
106
+
107
+
108
+ # [1.10.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/transitionmodel@1.9.0...@quenty/transitionmodel@1.10.0) (2023-06-05)
7
109
 
8
110
  **Note:** Version bump only for package @quenty/transitionmodel
9
111
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenty/transitionmodel",
3
- "version": "2.0.0-canary.367.e9fdcbc.0",
3
+ "version": "2.0.0",
4
4
  "description": "Helps with Gui visiblity showing and hiding",
5
5
  "keywords": [
6
6
  "Roblox",
@@ -25,19 +25,20 @@
25
25
  "Quenty"
26
26
  ],
27
27
  "dependencies": {
28
- "@quenty/baseobject": "6.2.1",
29
- "@quenty/basicpane": "7.14.0",
30
- "@quenty/blend": "7.0.0-canary.367.e9fdcbc.0",
31
- "@quenty/instanceutils": "7.14.0",
32
- "@quenty/loader": "6.2.1",
33
- "@quenty/maid": "2.5.0",
34
- "@quenty/promise": "6.5.0",
35
- "@quenty/rx": "7.11.0",
36
- "@quenty/signal": "2.4.0",
37
- "@quenty/valueobject": "8.0.0-canary.367.e9fdcbc.0"
28
+ "@quenty/baseobject": "^7.0.0",
29
+ "@quenty/basicpane": "^8.0.0",
30
+ "@quenty/blend": "^7.0.0",
31
+ "@quenty/instanceutils": "^8.0.0",
32
+ "@quenty/loader": "^7.0.0",
33
+ "@quenty/maid": "^2.6.0",
34
+ "@quenty/promise": "^7.0.0",
35
+ "@quenty/rx": "^8.0.0",
36
+ "@quenty/signal": "^3.0.0",
37
+ "@quenty/timedtween": "^2.0.0",
38
+ "@quenty/valueobject": "^8.0.0"
38
39
  },
39
40
  "publishConfig": {
40
41
  "access": "public"
41
42
  },
42
- "gitHead": "e9fdcbc6ea1d46e068bf42a08b833099e9005259"
43
+ "gitHead": "fdeae46099587019ec5fc15317dc673aed379400"
43
44
  }
@@ -103,6 +103,10 @@ function SpringTransitionModel:BindToPaneVisbility(pane)
103
103
  self._maid._visibleBinding = maid
104
104
 
105
105
  return function()
106
+ if not self.Destroy then
107
+ return
108
+ end
109
+
106
110
  if self._maid._visibleBinding == maid then
107
111
  self._maid._visibleBinding = nil
108
112
  end
@@ -160,6 +164,15 @@ function SpringTransitionModel:ObserveRenderStepped()
160
164
  return self._springObject:ObserveRenderStepped()
161
165
  end
162
166
 
167
+ --[=[
168
+ Alias to spring transition model observation!
169
+
170
+ @return Observable<T>
171
+ ]=]
172
+ function SpringTransitionModel:Observe()
173
+ return self._springObject:Observe()
174
+ end
175
+
163
176
  --[=[
164
177
  Shows the model and promises when the showing is complete.
165
178
 
@@ -0,0 +1,180 @@
1
+ --[=[
2
+ @class TimedTransitionModel
3
+ ]=]
4
+
5
+ local require = require(script.Parent.loader).load(script)
6
+
7
+ local BasicPane = require("BasicPane")
8
+ local TransitionModel = require("TransitionModel")
9
+ local TimedTween = require("TimedTween")
10
+ local Promise = require("Promise")
11
+ local Maid = require("Maid")
12
+
13
+ local TimedTransitionModel = setmetatable({}, BasicPane)
14
+ TimedTransitionModel.ClassName = "TimedTransitionModel"
15
+ TimedTransitionModel.__index = TimedTransitionModel
16
+
17
+ --[=[
18
+ A transition model that has a spring underlying it. Very useful
19
+ for animations on tracks that need to be on a spring.
20
+
21
+ @return TimedTransitionModel<T>
22
+ ]=]
23
+ function TimedTransitionModel.new()
24
+ local self = setmetatable(BasicPane.new(), TimedTransitionModel)
25
+
26
+ self._transitionModel = TransitionModel.new()
27
+ self._transitionModel:BindToPaneVisbility(self)
28
+ self._maid:GiveTask(self._transitionModel)
29
+
30
+
31
+ self._timedTween = TimedTween.new(0.15)
32
+ self._maid:GiveTask(self._timedTween)
33
+
34
+ -- State
35
+ self._transitionModel:SetPromiseShow(function(maid, doNotAnimate)
36
+ return self:_promiseShow(maid, doNotAnimate)
37
+ end)
38
+ self._transitionModel:SetPromiseHide(function(maid, doNotAnimate)
39
+ return self:_promiseHide(maid, doNotAnimate)
40
+ end)
41
+
42
+ return self
43
+ end
44
+
45
+ function TimedTransitionModel:SetTransitionTime(transitionTime)
46
+ self._timedTween:SetTransitionTime(transitionTime)
47
+ end
48
+
49
+ --[=[
50
+ Returns true if showing is complete
51
+ @return boolean
52
+ ]=]
53
+ function TimedTransitionModel:IsShowingComplete()
54
+ return self._transitionModel:IsShowingComplete()
55
+ end
56
+
57
+ --[=[
58
+ Returns true if hiding is complete
59
+ @return boolean
60
+ ]=]
61
+ function TimedTransitionModel:IsHidingComplete()
62
+ return self._transitionModel:IsHidingComplete()
63
+ end
64
+
65
+ --[=[
66
+ Observe is showing is complete
67
+ @return Observable<boolean>
68
+ ]=]
69
+ function TimedTransitionModel:ObserveIsShowingComplete()
70
+ return self._transitionModel:ObserveIsShowingComplete()
71
+ end
72
+
73
+ --[=[
74
+ Observe is hiding is complete
75
+ @return Observable<boolean>
76
+ ]=]
77
+ function TimedTransitionModel:ObserveIsHidingComplete()
78
+ return self._transitionModel:ObserveIsHidingComplete()
79
+ end
80
+
81
+ --[=[
82
+ Binds the transition model to the actual visiblity of the pane
83
+
84
+ @param pane BasicPane
85
+ @return function -- Cleanup function
86
+ ]=]
87
+ function TimedTransitionModel:BindToPaneVisbility(pane)
88
+ local maid = Maid.new()
89
+
90
+ maid:GiveTask(pane.VisibleChanged:Connect(function(isVisible, doNotAnimate)
91
+ self:SetVisible(isVisible, doNotAnimate)
92
+ end))
93
+ maid:GiveTask(self.VisibleChanged:Connect(function(isVisible, doNotAnimate)
94
+ pane:SetVisible(isVisible, doNotAnimate)
95
+ end))
96
+
97
+ self:SetVisible(pane:IsVisible())
98
+
99
+ self._maid._visibleBinding = maid
100
+
101
+ return function()
102
+ if not self.Destroy then
103
+ return
104
+ end
105
+
106
+ if self._maid._visibleBinding == maid then
107
+ self._maid._visibleBinding = nil
108
+ end
109
+ end
110
+ end
111
+
112
+ --[=[
113
+ Observes the spring animating
114
+ @return Observable<T>
115
+ ]=]
116
+ function TimedTransitionModel:ObserveRenderStepped()
117
+ return self._timedTween:ObserveRenderStepped()
118
+ end
119
+
120
+ --[=[
121
+ Alias to spring transition model observation!
122
+
123
+ @return Observable<T>
124
+ ]=]
125
+ function TimedTransitionModel:Observe()
126
+ return self._timedTween:Observe()
127
+ end
128
+
129
+ --[=[
130
+ Shows the model and promises when the showing is complete.
131
+
132
+ @param doNotAnimate boolean
133
+ @return Promise
134
+ ]=]
135
+ function TimedTransitionModel:PromiseShow(doNotAnimate)
136
+ return self._transitionModel:PromiseShow(doNotAnimate)
137
+ end
138
+
139
+ --[=[
140
+ Hides the model and promises when the showing is complete.
141
+
142
+ @param doNotAnimate boolean
143
+ @return Promise
144
+ ]=]
145
+ function TimedTransitionModel:PromiseHide(doNotAnimate)
146
+ return self._transitionModel:PromiseHide(doNotAnimate)
147
+ end
148
+
149
+ --[=[
150
+ Toggles the model and promises when the transition is complete.
151
+
152
+ @param doNotAnimate boolean
153
+ @return Promise
154
+ ]=]
155
+ function TimedTransitionModel:PromiseToggle(doNotAnimate)
156
+ return self._transitionModel:PromiseToggle(doNotAnimate)
157
+ end
158
+
159
+ function TimedTransitionModel:_promiseShow(maid, doNotAnimate)
160
+ self._timedTween:Show(doNotAnimate)
161
+
162
+ if doNotAnimate then
163
+ return Promise.resolved()
164
+ else
165
+ return maid:GivePromise(self._timedTween:PromiseFinished())
166
+ end
167
+ end
168
+
169
+ function TimedTransitionModel:_promiseHide(maid, doNotAnimate)
170
+ self._timedTween:Hide(doNotAnimate)
171
+
172
+ if doNotAnimate then
173
+ return Promise.resolved()
174
+ else
175
+ return maid:GivePromise(self._timedTween:PromiseFinished())
176
+ end
177
+ end
178
+
179
+
180
+ return TimedTransitionModel