wuira 0.2.3 → 0.2.5
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 +38 -0
- package/README.md +62 -792
- package/data/icons/forever.json +90051 -0
- package/docs/icons.md +28 -0
- package/docs/source-converters.md +34 -0
- package/lib/datasources/DataSource.d.ts +8 -0
- package/lib/datasources/DataSource.lua +7 -0
- package/lib/datasources/GroupMembers.d.ts +6 -0
- package/lib/datasources/GroupMembers.lua +332 -0
- package/lib/datasources/GroupRoster.d.ts +28 -0
- package/lib/datasources/GroupRoster.lua +611 -0
- package/lib/datasources/MathConverter.d.ts +6 -0
- package/lib/datasources/MathConverter.lua +61 -0
- package/lib/datasources/MathExpression.d.ts +16 -0
- package/lib/datasources/MathExpression.lua +281 -0
- package/lib/datasources/Resources.d.ts +3 -2
- package/lib/datasources/Resources.lua +57 -48
- package/lib/datasources/SourceConverter.d.ts +39 -0
- package/lib/datasources/SourceConverter.lua +568 -0
- package/lib/datasources/UnitInfo.d.ts +6 -0
- package/lib/datasources/UnitInfo.lua +347 -15
- package/lib/datasources/UnitSource.d.ts +8 -3
- package/lib/datasources/UnitSource.lua +318 -5
- package/lib/datasources/index.d.ts +7 -1
- package/lib/datasources/index.lua +15 -0
- package/lib/icons/index.d.ts +45634 -0
- package/lib/icons/index.lua +3 -0
- package/lib/index.d.ts +1 -0
- package/lib/store/index.lua +20 -18
- package/lib/ui/Cell.d.ts +2 -0
- package/lib/ui/ForEach.d.ts +18 -4
- package/lib/ui/ForEach.lua +763 -13
- package/lib/ui/index.d.ts +1 -1
- package/package.json +20 -4
- package/tools/build-library.mjs +1 -1
- package/tools/generate-icons.mjs +10 -0
- package/tools/icon-data.mjs +59 -0
- package/tools/update-icons.mjs +36 -0
|
@@ -32,6 +32,284 @@ local function __TS__ClassExtends(target, base)
|
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
+
local __TS__Symbol, Symbol
|
|
36
|
+
do
|
|
37
|
+
local symbolMetatable = {__tostring = function(self)
|
|
38
|
+
return ("Symbol(" .. (self.description or "")) .. ")"
|
|
39
|
+
end}
|
|
40
|
+
function __TS__Symbol(description)
|
|
41
|
+
return setmetatable({description = description}, symbolMetatable)
|
|
42
|
+
end
|
|
43
|
+
Symbol = {
|
|
44
|
+
asyncDispose = __TS__Symbol("Symbol.asyncDispose"),
|
|
45
|
+
dispose = __TS__Symbol("Symbol.dispose"),
|
|
46
|
+
iterator = __TS__Symbol("Symbol.iterator"),
|
|
47
|
+
hasInstance = __TS__Symbol("Symbol.hasInstance"),
|
|
48
|
+
species = __TS__Symbol("Symbol.species"),
|
|
49
|
+
toStringTag = __TS__Symbol("Symbol.toStringTag")
|
|
50
|
+
}
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
local __TS__Iterator
|
|
54
|
+
do
|
|
55
|
+
local function iteratorGeneratorStep(self)
|
|
56
|
+
local co = self.____coroutine
|
|
57
|
+
local status, value = coroutine.resume(co)
|
|
58
|
+
if not status then
|
|
59
|
+
error(value, 0)
|
|
60
|
+
end
|
|
61
|
+
if coroutine.status(co) == "dead" then
|
|
62
|
+
return
|
|
63
|
+
end
|
|
64
|
+
return true, value
|
|
65
|
+
end
|
|
66
|
+
local function iteratorIteratorStep(self)
|
|
67
|
+
local result = self:next()
|
|
68
|
+
if result.done then
|
|
69
|
+
return
|
|
70
|
+
end
|
|
71
|
+
return true, result.value
|
|
72
|
+
end
|
|
73
|
+
local function iteratorStringStep(self, index)
|
|
74
|
+
index = index + 1
|
|
75
|
+
if index > #self then
|
|
76
|
+
return
|
|
77
|
+
end
|
|
78
|
+
return index, string.sub(self, index, index)
|
|
79
|
+
end
|
|
80
|
+
function __TS__Iterator(iterable)
|
|
81
|
+
if type(iterable) == "string" then
|
|
82
|
+
return iteratorStringStep, iterable, 0
|
|
83
|
+
elseif iterable.____coroutine ~= nil then
|
|
84
|
+
return iteratorGeneratorStep, iterable
|
|
85
|
+
elseif iterable[Symbol.iterator] then
|
|
86
|
+
local iterator = iterable[Symbol.iterator](iterable)
|
|
87
|
+
return iteratorIteratorStep, iterator
|
|
88
|
+
else
|
|
89
|
+
return ipairs(iterable)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
local function __TS__New(target, ...)
|
|
95
|
+
local instance = setmetatable({}, target.prototype)
|
|
96
|
+
instance:____constructor(...)
|
|
97
|
+
return instance
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
local Set
|
|
101
|
+
do
|
|
102
|
+
Set = __TS__Class()
|
|
103
|
+
Set.name = "Set"
|
|
104
|
+
function Set.prototype.____constructor(self, values)
|
|
105
|
+
self[Symbol.toStringTag] = "Set"
|
|
106
|
+
self.size = 0
|
|
107
|
+
self.nextKey = {}
|
|
108
|
+
self.previousKey = {}
|
|
109
|
+
if values == nil then
|
|
110
|
+
return
|
|
111
|
+
end
|
|
112
|
+
local iterable = values
|
|
113
|
+
if iterable[Symbol.iterator] then
|
|
114
|
+
local iterator = iterable[Symbol.iterator](iterable)
|
|
115
|
+
while true do
|
|
116
|
+
local result = iterator:next()
|
|
117
|
+
if result.done then
|
|
118
|
+
break
|
|
119
|
+
end
|
|
120
|
+
self:add(result.value)
|
|
121
|
+
end
|
|
122
|
+
else
|
|
123
|
+
local array = values
|
|
124
|
+
for ____, value in ipairs(array) do
|
|
125
|
+
self:add(value)
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
function Set.prototype.add(self, value)
|
|
130
|
+
local isNewValue = not self:has(value)
|
|
131
|
+
if isNewValue then
|
|
132
|
+
self.size = self.size + 1
|
|
133
|
+
end
|
|
134
|
+
if self.firstKey == nil then
|
|
135
|
+
self.firstKey = value
|
|
136
|
+
self.lastKey = value
|
|
137
|
+
elseif isNewValue then
|
|
138
|
+
self.nextKey[self.lastKey] = value
|
|
139
|
+
self.previousKey[value] = self.lastKey
|
|
140
|
+
self.lastKey = value
|
|
141
|
+
end
|
|
142
|
+
return self
|
|
143
|
+
end
|
|
144
|
+
function Set.prototype.clear(self)
|
|
145
|
+
self.nextKey = {}
|
|
146
|
+
self.previousKey = {}
|
|
147
|
+
self.firstKey = nil
|
|
148
|
+
self.lastKey = nil
|
|
149
|
+
self.size = 0
|
|
150
|
+
end
|
|
151
|
+
function Set.prototype.delete(self, value)
|
|
152
|
+
local contains = self:has(value)
|
|
153
|
+
if contains then
|
|
154
|
+
self.size = self.size - 1
|
|
155
|
+
local next = self.nextKey[value]
|
|
156
|
+
local previous = self.previousKey[value]
|
|
157
|
+
if next ~= nil and previous ~= nil then
|
|
158
|
+
self.nextKey[previous] = next
|
|
159
|
+
self.previousKey[next] = previous
|
|
160
|
+
elseif next ~= nil then
|
|
161
|
+
self.firstKey = next
|
|
162
|
+
self.previousKey[next] = nil
|
|
163
|
+
elseif previous ~= nil then
|
|
164
|
+
self.lastKey = previous
|
|
165
|
+
self.nextKey[previous] = nil
|
|
166
|
+
else
|
|
167
|
+
self.firstKey = nil
|
|
168
|
+
self.lastKey = nil
|
|
169
|
+
end
|
|
170
|
+
self.nextKey[value] = nil
|
|
171
|
+
self.previousKey[value] = nil
|
|
172
|
+
end
|
|
173
|
+
return contains
|
|
174
|
+
end
|
|
175
|
+
function Set.prototype.forEach(self, callback)
|
|
176
|
+
for ____, key in __TS__Iterator(self:keys()) do
|
|
177
|
+
callback(nil, key, key, self)
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
function Set.prototype.has(self, value)
|
|
181
|
+
return self.nextKey[value] ~= nil or self.lastKey == value
|
|
182
|
+
end
|
|
183
|
+
Set.prototype[Symbol.iterator] = function(self)
|
|
184
|
+
return self:values()
|
|
185
|
+
end
|
|
186
|
+
function Set.prototype.entries(self)
|
|
187
|
+
local function getFirstKey()
|
|
188
|
+
return self.firstKey
|
|
189
|
+
end
|
|
190
|
+
local nextKey = self.nextKey
|
|
191
|
+
local key
|
|
192
|
+
local started = false
|
|
193
|
+
return {
|
|
194
|
+
[Symbol.iterator] = function(self)
|
|
195
|
+
return self
|
|
196
|
+
end,
|
|
197
|
+
next = function(self)
|
|
198
|
+
if not started then
|
|
199
|
+
started = true
|
|
200
|
+
key = getFirstKey(nil)
|
|
201
|
+
else
|
|
202
|
+
key = nextKey[key]
|
|
203
|
+
end
|
|
204
|
+
return {done = not key, value = {key, key}}
|
|
205
|
+
end
|
|
206
|
+
}
|
|
207
|
+
end
|
|
208
|
+
function Set.prototype.keys(self)
|
|
209
|
+
local function getFirstKey()
|
|
210
|
+
return self.firstKey
|
|
211
|
+
end
|
|
212
|
+
local nextKey = self.nextKey
|
|
213
|
+
local key
|
|
214
|
+
local started = false
|
|
215
|
+
return {
|
|
216
|
+
[Symbol.iterator] = function(self)
|
|
217
|
+
return self
|
|
218
|
+
end,
|
|
219
|
+
next = function(self)
|
|
220
|
+
if not started then
|
|
221
|
+
started = true
|
|
222
|
+
key = getFirstKey(nil)
|
|
223
|
+
else
|
|
224
|
+
key = nextKey[key]
|
|
225
|
+
end
|
|
226
|
+
return {done = not key, value = key}
|
|
227
|
+
end
|
|
228
|
+
}
|
|
229
|
+
end
|
|
230
|
+
function Set.prototype.values(self)
|
|
231
|
+
local function getFirstKey()
|
|
232
|
+
return self.firstKey
|
|
233
|
+
end
|
|
234
|
+
local nextKey = self.nextKey
|
|
235
|
+
local key
|
|
236
|
+
local started = false
|
|
237
|
+
return {
|
|
238
|
+
[Symbol.iterator] = function(self)
|
|
239
|
+
return self
|
|
240
|
+
end,
|
|
241
|
+
next = function(self)
|
|
242
|
+
if not started then
|
|
243
|
+
started = true
|
|
244
|
+
key = getFirstKey(nil)
|
|
245
|
+
else
|
|
246
|
+
key = nextKey[key]
|
|
247
|
+
end
|
|
248
|
+
return {done = not key, value = key}
|
|
249
|
+
end
|
|
250
|
+
}
|
|
251
|
+
end
|
|
252
|
+
function Set.prototype.union(self, other)
|
|
253
|
+
local result = __TS__New(Set, self)
|
|
254
|
+
for ____, item in __TS__Iterator(other) do
|
|
255
|
+
result:add(item)
|
|
256
|
+
end
|
|
257
|
+
return result
|
|
258
|
+
end
|
|
259
|
+
function Set.prototype.intersection(self, other)
|
|
260
|
+
local result = __TS__New(Set)
|
|
261
|
+
for ____, item in __TS__Iterator(self) do
|
|
262
|
+
if other:has(item) then
|
|
263
|
+
result:add(item)
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
return result
|
|
267
|
+
end
|
|
268
|
+
function Set.prototype.difference(self, other)
|
|
269
|
+
local result = __TS__New(Set, self)
|
|
270
|
+
for ____, item in __TS__Iterator(other) do
|
|
271
|
+
result:delete(item)
|
|
272
|
+
end
|
|
273
|
+
return result
|
|
274
|
+
end
|
|
275
|
+
function Set.prototype.symmetricDifference(self, other)
|
|
276
|
+
local result = __TS__New(Set, self)
|
|
277
|
+
for ____, item in __TS__Iterator(other) do
|
|
278
|
+
if self:has(item) then
|
|
279
|
+
result:delete(item)
|
|
280
|
+
else
|
|
281
|
+
result:add(item)
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
return result
|
|
285
|
+
end
|
|
286
|
+
function Set.prototype.isSubsetOf(self, other)
|
|
287
|
+
for ____, item in __TS__Iterator(self) do
|
|
288
|
+
if not other:has(item) then
|
|
289
|
+
return false
|
|
290
|
+
end
|
|
291
|
+
end
|
|
292
|
+
return true
|
|
293
|
+
end
|
|
294
|
+
function Set.prototype.isSupersetOf(self, other)
|
|
295
|
+
for ____, item in __TS__Iterator(other) do
|
|
296
|
+
if not self:has(item) then
|
|
297
|
+
return false
|
|
298
|
+
end
|
|
299
|
+
end
|
|
300
|
+
return true
|
|
301
|
+
end
|
|
302
|
+
function Set.prototype.isDisjointFrom(self, other)
|
|
303
|
+
for ____, item in __TS__Iterator(self) do
|
|
304
|
+
if other:has(item) then
|
|
305
|
+
return false
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
return true
|
|
309
|
+
end
|
|
310
|
+
Set[Symbol.species] = Set
|
|
311
|
+
end
|
|
312
|
+
|
|
35
313
|
local function __TS__CloneDescriptor(____bindingPattern0)
|
|
36
314
|
local value
|
|
37
315
|
local writable
|
|
@@ -170,12 +448,6 @@ do
|
|
|
170
448
|
end
|
|
171
449
|
end
|
|
172
450
|
|
|
173
|
-
local function __TS__New(target, ...)
|
|
174
|
-
local instance = setmetatable({}, target.prototype)
|
|
175
|
-
instance:____constructor(...)
|
|
176
|
-
return instance
|
|
177
|
-
end
|
|
178
|
-
|
|
179
451
|
local function __TS__NumberIsFinite(value)
|
|
180
452
|
return type(value) == "number" and value == value and value ~= math.huge and value ~= -math.huge
|
|
181
453
|
end
|
|
@@ -205,6 +477,7 @@ __TS__ClassExtends(ClassSource, DataSource)
|
|
|
205
477
|
function ClassSource.prototype.____constructor(self, unit)
|
|
206
478
|
DataSource.prototype.____constructor(self, nil)
|
|
207
479
|
self.restricted = false
|
|
480
|
+
self.listeners = __TS__New(Set)
|
|
208
481
|
self.target = resolveUnit(nil, unit)
|
|
209
482
|
end
|
|
210
483
|
function ClassSource.prototype.HasSecretFields(self)
|
|
@@ -230,6 +503,65 @@ function ClassSource.prototype.GetValue(self)
|
|
|
230
503
|
end
|
|
231
504
|
return {name = name, token = token, id = id}
|
|
232
505
|
end
|
|
506
|
+
function ClassSource.prototype.onChange(self, listener)
|
|
507
|
+
self.listeners:add(listener)
|
|
508
|
+
if self.listeners.size == 1 then
|
|
509
|
+
local function refresh()
|
|
510
|
+
if not self:IsSecret() then
|
|
511
|
+
local value = self.Value
|
|
512
|
+
if self:CanEmit(value) then
|
|
513
|
+
for ____, callback in __TS__Iterator(self.listeners) do
|
|
514
|
+
callback(nil, value)
|
|
515
|
+
end
|
|
516
|
+
end
|
|
517
|
+
end
|
|
518
|
+
end
|
|
519
|
+
local events = CreateFrame("Frame", nil, UIParent)
|
|
520
|
+
self.events = events
|
|
521
|
+
for ____, event in ipairs({"UNIT_NAME_UPDATE", "GROUP_ROSTER_UPDATE", "PLAYER_ENTERING_WORLD"}) do
|
|
522
|
+
events:RegisterEvent(event)
|
|
523
|
+
end
|
|
524
|
+
events:SetScript(
|
|
525
|
+
"OnEvent",
|
|
526
|
+
function(_frame, event, unit)
|
|
527
|
+
if event ~= "UNIT_NAME_UPDATE" or not issecretvalue(unit) and unit == self.unit then
|
|
528
|
+
refresh(nil)
|
|
529
|
+
end
|
|
530
|
+
end
|
|
531
|
+
)
|
|
532
|
+
self.stopUnit = self.target:onChange(refresh)
|
|
533
|
+
end
|
|
534
|
+
return function()
|
|
535
|
+
self.listeners:delete(listener)
|
|
536
|
+
if self.listeners.size == 0 then
|
|
537
|
+
self:StopListening()
|
|
538
|
+
end
|
|
539
|
+
end
|
|
540
|
+
end
|
|
541
|
+
function ClassSource.prototype.StopListening(self)
|
|
542
|
+
local ____opt_0 = self.stopUnit
|
|
543
|
+
if ____opt_0 ~= nil then
|
|
544
|
+
____opt_0(self)
|
|
545
|
+
end
|
|
546
|
+
self.stopUnit = nil
|
|
547
|
+
local ____opt_2 = self.events
|
|
548
|
+
if ____opt_2 ~= nil then
|
|
549
|
+
____opt_2:UnregisterAllEvents()
|
|
550
|
+
end
|
|
551
|
+
local ____opt_4 = self.events
|
|
552
|
+
if ____opt_4 ~= nil then
|
|
553
|
+
____opt_4:SetScript("OnEvent", nil)
|
|
554
|
+
end
|
|
555
|
+
local ____opt_6 = self.events
|
|
556
|
+
if ____opt_6 ~= nil then
|
|
557
|
+
____opt_6:Hide()
|
|
558
|
+
end
|
|
559
|
+
self.events = nil
|
|
560
|
+
end
|
|
561
|
+
function ClassSource.prototype.Dispose(self)
|
|
562
|
+
self:StopListening()
|
|
563
|
+
self.listeners:clear()
|
|
564
|
+
end
|
|
233
565
|
__TS__SetDescriptor(
|
|
234
566
|
ClassSource.prototype,
|
|
235
567
|
"unit",
|
|
@@ -407,17 +739,17 @@ function SpecSource.prototype.RequestInspect(self)
|
|
|
407
739
|
return true
|
|
408
740
|
end
|
|
409
741
|
function SpecSource.prototype.StopListening(self)
|
|
410
|
-
local
|
|
411
|
-
if
|
|
412
|
-
|
|
742
|
+
local ____opt_12 = self.listener
|
|
743
|
+
if ____opt_12 ~= nil then
|
|
744
|
+
____opt_12:UnregisterAllEvents()
|
|
413
745
|
end
|
|
414
|
-
local
|
|
415
|
-
if
|
|
416
|
-
|
|
746
|
+
local ____opt_14 = self.listener
|
|
747
|
+
if ____opt_14 ~= nil then
|
|
748
|
+
____opt_14:SetScript("OnEvent", nil)
|
|
417
749
|
end
|
|
418
|
-
local
|
|
419
|
-
if
|
|
420
|
-
|
|
750
|
+
local ____opt_16 = self.listener
|
|
751
|
+
if ____opt_16 ~= nil then
|
|
752
|
+
____opt_16:Hide()
|
|
421
753
|
end
|
|
422
754
|
self.listener = nil
|
|
423
755
|
end
|
|
@@ -10,16 +10,21 @@ export interface UnitIdentity {
|
|
|
10
10
|
}
|
|
11
11
|
export declare class UnitPredicates {
|
|
12
12
|
private readonly token;
|
|
13
|
-
constructor(token: string);
|
|
13
|
+
constructor(token: () => string);
|
|
14
14
|
get PC(): boolean | undefined;
|
|
15
15
|
get Self(): boolean | undefined;
|
|
16
16
|
}
|
|
17
17
|
/** Shared live unit reference; identity is read again rather than cached by token. */
|
|
18
18
|
export declare class UnitSource extends DataSource<UnitIdentity | undefined> {
|
|
19
|
-
|
|
19
|
+
private token;
|
|
20
20
|
readonly Is: UnitPredicates;
|
|
21
21
|
private restricted;
|
|
22
|
-
|
|
22
|
+
private readonly listeners;
|
|
23
|
+
constructor(token: string);
|
|
24
|
+
get Token(): string;
|
|
25
|
+
/** Keep source objects/subscriptions while a stable identity moves to another unit slot. */
|
|
26
|
+
Retarget(token: string): void;
|
|
27
|
+
onChange(listener: () => void): () => void;
|
|
23
28
|
protected HasSecretFields(): boolean;
|
|
24
29
|
protected GetValue(): UnitIdentity | undefined;
|
|
25
30
|
}
|