@rbxts/app-forge 0.7.2-alpha.26 → 0.7.2-alpha.28
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/out/hooks/usePx.luau +1 -1
- package/out/renderManager.d.ts +13 -6
- package/out/renderManager.luau +89 -33
- package/out/ruleEngine/init.luau +0 -5
- package/out/types.d.ts +0 -2
- package/package.json +1 -1
package/out/hooks/usePx.luau
CHANGED
|
@@ -77,7 +77,7 @@ local function usePx(target, baseResolution, minScale)
|
|
|
77
77
|
if baseResolution then
|
|
78
78
|
BASE_RESOLUTION(baseResolution)
|
|
79
79
|
end
|
|
80
|
-
if minScale ~=
|
|
80
|
+
if minScale ~= 0 and minScale == minScale and minScale then
|
|
81
81
|
MIN_SCALE(minScale)
|
|
82
82
|
end
|
|
83
83
|
if target then
|
package/out/renderManager.d.ts
CHANGED
|
@@ -13,13 +13,20 @@ export default class Renders extends Rules {
|
|
|
13
13
|
* Decides render strategy based on props.
|
|
14
14
|
*/
|
|
15
15
|
protected renderMount(this: AppForge, props: Types.Props.Main): Vide.Node;
|
|
16
|
+
/**
|
|
17
|
+
* Render multiple apps by name, avoiding duplicates.
|
|
18
|
+
*/
|
|
16
19
|
private renderNames;
|
|
20
|
+
/**
|
|
21
|
+
* Render children of a parent app recursively inside parent container
|
|
22
|
+
*/
|
|
23
|
+
private renderChildren;
|
|
17
24
|
private collectByGroup;
|
|
18
25
|
private normalizeGroups;
|
|
19
|
-
protected renderApp(this: AppForge, props: Types.Props.Main): Vide.Node;
|
|
20
|
-
protected renderApps(this: AppForge, props: Types.Props.Main):
|
|
21
|
-
protected renderGroup(this: AppForge, props: Types.Props.Main):
|
|
22
|
-
protected renderGroupByName(this: AppForge, props: Types.Props.Main):
|
|
23
|
-
protected renderGroupByNames(this: AppForge, props: Types.Props.Main):
|
|
24
|
-
protected renderAll(this: AppForge, props: Types.Props.Main):
|
|
26
|
+
protected renderApp(this: AppForge, props: Types.Props.Main, renderedSet?: Set<AppNames>, parentContainer?: Instance): Vide.Node;
|
|
27
|
+
protected renderApps(this: AppForge, props: Types.Props.Main, renderedSet?: Set<AppNames>): Instance[];
|
|
28
|
+
protected renderGroup(this: AppForge, props: Types.Props.Main, renderedSet?: Set<AppNames>): Instance[];
|
|
29
|
+
protected renderGroupByName(this: AppForge, props: Types.Props.Main, renderedSet?: Set<AppNames>): Instance[];
|
|
30
|
+
protected renderGroupByNames(this: AppForge, props: Types.Props.Main, renderedSet?: Set<AppNames>): Instance[];
|
|
31
|
+
protected renderAll(this: AppForge, props: Types.Props.Main, renderedSet?: Set<AppNames>): Instance[];
|
|
25
32
|
}
|
package/out/renderManager.luau
CHANGED
|
@@ -58,39 +58,34 @@ do
|
|
|
58
58
|
else
|
|
59
59
|
forge.debug:logTag("px", "global", "Skipped duplicate px initialization")
|
|
60
60
|
end
|
|
61
|
+
local renderedSet = {}
|
|
61
62
|
if render then
|
|
62
63
|
local _condition = render.name
|
|
63
64
|
if _condition ~= "" and _condition then
|
|
64
65
|
_condition = render.group
|
|
65
66
|
end
|
|
66
67
|
if _condition ~= "" and _condition then
|
|
67
|
-
|
|
68
|
-
return forge:renderGroupByName(props)
|
|
68
|
+
return self:renderGroupByName(props, renderedSet)
|
|
69
69
|
end
|
|
70
70
|
local _value = render.names and render.group
|
|
71
71
|
if _value ~= "" and _value then
|
|
72
|
-
|
|
73
|
-
return forge:renderGroupByNames(props)
|
|
72
|
+
return self:renderGroupByNames(props, renderedSet)
|
|
74
73
|
end
|
|
75
74
|
local _value_1 = render.name
|
|
76
75
|
if _value_1 ~= "" and _value_1 then
|
|
77
|
-
|
|
78
|
-
return forge:renderApp(props)
|
|
76
|
+
return self:renderApp(props, renderedSet)
|
|
79
77
|
end
|
|
80
78
|
if render.names then
|
|
81
|
-
|
|
82
|
-
return forge:renderApps(props)
|
|
79
|
+
return self:renderApps(props, renderedSet)
|
|
83
80
|
end
|
|
84
81
|
local _value_2 = render.group
|
|
85
82
|
if _value_2 ~= "" and _value_2 then
|
|
86
|
-
|
|
87
|
-
return forge:renderGroup(props)
|
|
83
|
+
return self:renderGroup(props, renderedSet)
|
|
88
84
|
end
|
|
89
85
|
end
|
|
90
|
-
|
|
91
|
-
return self:renderAll(props)
|
|
86
|
+
return self:renderAll(props, renderedSet)
|
|
92
87
|
end
|
|
93
|
-
function Renders:renderNames(props, names, forge, context, details)
|
|
88
|
+
function Renders:renderNames(props, names, forge, context, renderedSet, details, parentContainer)
|
|
94
89
|
if not names then
|
|
95
90
|
local _logger = forge.logger
|
|
96
91
|
local _exp = `Renderer resolved 0 apps ({context})`
|
|
@@ -99,24 +94,60 @@ do
|
|
|
99
94
|
_condition = props.render
|
|
100
95
|
end
|
|
101
96
|
_logger:log("WARN", _exp, _condition)
|
|
102
|
-
return
|
|
97
|
+
return {}
|
|
103
98
|
end
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
99
|
+
local rendered = {}
|
|
100
|
+
for _, name in names do
|
|
101
|
+
if renderedSet[name] ~= nil then
|
|
102
|
+
continue
|
|
103
|
+
end
|
|
104
|
+
renderedSet[name] = true
|
|
107
105
|
local _forge = forge
|
|
108
106
|
local _object = table.clone(props)
|
|
109
107
|
setmetatable(_object, nil)
|
|
110
108
|
_object.render = {
|
|
111
109
|
name = name,
|
|
112
110
|
}
|
|
113
|
-
|
|
111
|
+
local appRender = _forge:renderApp(_object, renderedSet, parentContainer)
|
|
112
|
+
table.insert(rendered, appRender)
|
|
113
|
+
-- Render children inside this container
|
|
114
|
+
self:renderChildren(props, name, forge, renderedSet, rendered, appRender)
|
|
115
|
+
end
|
|
116
|
+
return rendered
|
|
117
|
+
end
|
|
118
|
+
function Renders:renderChildren(props, parentName, forge, renderedSet, accumulated, parentContainer)
|
|
119
|
+
-- ▼ ReadonlyMap.forEach ▼
|
|
120
|
+
local _callback = function(app, childName)
|
|
121
|
+
local _result = app.rules
|
|
122
|
+
if _result ~= nil then
|
|
123
|
+
_result = _result.parent
|
|
124
|
+
end
|
|
125
|
+
local _condition = _result == parentName
|
|
126
|
+
if _condition then
|
|
127
|
+
local _renderedSet = renderedSet
|
|
128
|
+
local _childName = childName
|
|
129
|
+
_condition = not (_renderedSet[_childName] ~= nil)
|
|
130
|
+
end
|
|
131
|
+
if _condition then
|
|
132
|
+
local _renderedSet = renderedSet
|
|
133
|
+
local _childName = childName
|
|
134
|
+
_renderedSet[_childName] = true
|
|
135
|
+
local _forge = forge
|
|
136
|
+
local _object = table.clone(props)
|
|
137
|
+
setmetatable(_object, nil)
|
|
138
|
+
_object.render = {
|
|
139
|
+
name = childName,
|
|
140
|
+
}
|
|
141
|
+
local childRender = _forge:renderApp(_object, renderedSet, parentContainer)
|
|
142
|
+
table.insert(accumulated, childRender)
|
|
143
|
+
-- recursively render grandchildren
|
|
144
|
+
self:renderChildren(props, childName, forge, renderedSet, accumulated, childRender)
|
|
145
|
+
end
|
|
114
146
|
end
|
|
115
|
-
for _k, _v in
|
|
116
|
-
|
|
147
|
+
for _k, _v in AppRegistry do
|
|
148
|
+
_callback(_v, _k, AppRegistry)
|
|
117
149
|
end
|
|
118
|
-
-- ▲
|
|
119
|
-
return _newValue
|
|
150
|
+
-- ▲ ReadonlyMap.forEach ▲
|
|
120
151
|
end
|
|
121
152
|
function Renders:collectByGroup(groups, filter)
|
|
122
153
|
local result = {}
|
|
@@ -154,7 +185,7 @@ do
|
|
|
154
185
|
end
|
|
155
186
|
return _result
|
|
156
187
|
end
|
|
157
|
-
function Renders:renderApp(props)
|
|
188
|
+
function Renders:renderApp(props, renderedSet, parentContainer)
|
|
158
189
|
local _name = props.render
|
|
159
190
|
if _name ~= nil then
|
|
160
191
|
_name = _name.name
|
|
@@ -170,6 +201,9 @@ do
|
|
|
170
201
|
self.debug:time("render", name)
|
|
171
202
|
if not (self.loaded[name] ~= nil) then
|
|
172
203
|
local render = appClass.constructor.new(props, name):render()
|
|
204
|
+
if not render then
|
|
205
|
+
error(`App "{name}" returned undefined from render()`, 2)
|
|
206
|
+
end
|
|
173
207
|
apply(render)({
|
|
174
208
|
Name = "Render",
|
|
175
209
|
})
|
|
@@ -181,6 +215,9 @@ do
|
|
|
181
215
|
Size = UDim2.fromScale(1, 1),
|
|
182
216
|
[0] = render,
|
|
183
217
|
})
|
|
218
|
+
if parentContainer then
|
|
219
|
+
container.Parent = parentContainer
|
|
220
|
+
end
|
|
184
221
|
local _loaded = self.loaded
|
|
185
222
|
local _arg1 = {
|
|
186
223
|
container = container,
|
|
@@ -190,11 +227,18 @@ do
|
|
|
190
227
|
else
|
|
191
228
|
self.debug:logTag("render", name, "Reusing existing render instance")
|
|
192
229
|
end
|
|
230
|
+
local _result = renderedSet
|
|
231
|
+
if _result ~= nil then
|
|
232
|
+
_result[name] = true
|
|
233
|
+
end
|
|
193
234
|
self:renderRules(name, props)
|
|
194
235
|
self.debug:timeEnd("render", name)
|
|
195
236
|
return self.loaded[name].container
|
|
196
237
|
end
|
|
197
|
-
function Renders:renderApps(props)
|
|
238
|
+
function Renders:renderApps(props, renderedSet)
|
|
239
|
+
if renderedSet == nil then
|
|
240
|
+
renderedSet = {}
|
|
241
|
+
end
|
|
198
242
|
local _names = props.render
|
|
199
243
|
if _names ~= nil then
|
|
200
244
|
_names = _names.names
|
|
@@ -203,9 +247,12 @@ do
|
|
|
203
247
|
if not names then
|
|
204
248
|
error("renderApps requires app names", 2)
|
|
205
249
|
end
|
|
206
|
-
return self:renderNames(props, names, self, "renderApps", names)
|
|
250
|
+
return self:renderNames(props, names, self, "renderApps", renderedSet, names)
|
|
207
251
|
end
|
|
208
|
-
function Renders:renderGroup(props)
|
|
252
|
+
function Renders:renderGroup(props, renderedSet)
|
|
253
|
+
if renderedSet == nil then
|
|
254
|
+
renderedSet = {}
|
|
255
|
+
end
|
|
209
256
|
local _group = props.render
|
|
210
257
|
if _group ~= nil then
|
|
211
258
|
_group = _group.group
|
|
@@ -215,9 +262,12 @@ do
|
|
|
215
262
|
error("renderGroup requires a group", 2)
|
|
216
263
|
end
|
|
217
264
|
local groups = self:normalizeGroups(group)
|
|
218
|
-
return self:renderNames(props, self:collectByGroup(groups), self, "renderGroup", group)
|
|
265
|
+
return self:renderNames(props, self:collectByGroup(groups), self, "renderGroup", renderedSet, group)
|
|
219
266
|
end
|
|
220
|
-
function Renders:renderGroupByName(props)
|
|
267
|
+
function Renders:renderGroupByName(props, renderedSet)
|
|
268
|
+
if renderedSet == nil then
|
|
269
|
+
renderedSet = {}
|
|
270
|
+
end
|
|
221
271
|
local _binding = props.render or {}
|
|
222
272
|
local group = _binding.group
|
|
223
273
|
local name = _binding.name
|
|
@@ -227,12 +277,15 @@ do
|
|
|
227
277
|
local groups = self:normalizeGroups(group)
|
|
228
278
|
return self:renderNames(props, self:collectByGroup(groups, function(n)
|
|
229
279
|
return n == name
|
|
230
|
-
end), self, "renderGroupByName", {
|
|
280
|
+
end), self, "renderGroupByName", renderedSet, {
|
|
231
281
|
group = group,
|
|
232
282
|
name = name,
|
|
233
283
|
})
|
|
234
284
|
end
|
|
235
|
-
function Renders:renderGroupByNames(props)
|
|
285
|
+
function Renders:renderGroupByNames(props, renderedSet)
|
|
286
|
+
if renderedSet == nil then
|
|
287
|
+
renderedSet = {}
|
|
288
|
+
end
|
|
236
289
|
local _binding = props.render or {}
|
|
237
290
|
local group = _binding.group
|
|
238
291
|
local names = _binding.names
|
|
@@ -243,12 +296,15 @@ do
|
|
|
243
296
|
return self:renderNames(props, self:collectByGroup(groups, function(n)
|
|
244
297
|
local _n = n
|
|
245
298
|
return table.find(names, _n) ~= nil
|
|
246
|
-
end), self, "renderGroupByNames", {
|
|
299
|
+
end), self, "renderGroupByNames", renderedSet, {
|
|
247
300
|
group = group,
|
|
248
301
|
names = names,
|
|
249
302
|
})
|
|
250
303
|
end
|
|
251
|
-
function Renders:renderAll(props)
|
|
304
|
+
function Renders:renderAll(props, renderedSet)
|
|
305
|
+
if renderedSet == nil then
|
|
306
|
+
renderedSet = {}
|
|
307
|
+
end
|
|
252
308
|
local names = {}
|
|
253
309
|
-- ▼ ReadonlyMap.forEach ▼
|
|
254
310
|
local _callback = function(_, name)
|
|
@@ -260,7 +316,7 @@ do
|
|
|
260
316
|
_callback(_v, _k, AppRegistry)
|
|
261
317
|
end
|
|
262
318
|
-- ▲ ReadonlyMap.forEach ▲
|
|
263
|
-
return self:renderNames(props, names, self, "renderAll")
|
|
319
|
+
return self:renderNames(props, names, self, "renderAll", renderedSet)
|
|
264
320
|
end
|
|
265
321
|
end
|
|
266
322
|
return {
|
package/out/ruleEngine/init.luau
CHANGED
|
@@ -42,11 +42,6 @@ do
|
|
|
42
42
|
})
|
|
43
43
|
self:anchor(name, rules.parent, props)
|
|
44
44
|
end
|
|
45
|
-
-- Index
|
|
46
|
-
if rules.zIndex ~= nil then
|
|
47
|
-
self.debug:logTag("rules", name, "Applying ZIndex", rules.zIndex)
|
|
48
|
-
self:index(name, rules.zIndex)
|
|
49
|
-
end
|
|
50
45
|
end
|
|
51
46
|
function Rules:checkRules(name)
|
|
52
47
|
local _processing = self.processing
|
package/out/types.d.ts
CHANGED
|
@@ -68,12 +68,10 @@ declare namespace Types {
|
|
|
68
68
|
|
|
69
69
|
export type Static = {
|
|
70
70
|
exclusiveGroup?: string;
|
|
71
|
-
zIndex?: number;
|
|
72
71
|
} & (WithParent<string> | WithoutParent);
|
|
73
72
|
|
|
74
73
|
export type Generic<N extends AppNames = AppNames> = {
|
|
75
74
|
exclusiveGroup?: AppGroups;
|
|
76
|
-
zIndex?: number;
|
|
77
75
|
} & (WithParent<Exclude<AppNames, N>> | WithoutParent);
|
|
78
76
|
}
|
|
79
77
|
}
|