wuira 0.1.3 → 0.1.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +181 -0
  3. package/lib/Spells.d.ts +10 -0
  4. package/lib/Spells.lua +19 -0
  5. package/lib/datasources/AuraTimer.d.ts +21 -0
  6. package/lib/datasources/AuraTimer.lua +322 -0
  7. package/lib/datasources/CastTimer.d.ts +9 -0
  8. package/lib/datasources/CastTimer.lua +240 -0
  9. package/lib/datasources/DataSource.d.ts +4 -0
  10. package/lib/datasources/DataSource.lua +24 -0
  11. package/lib/datasources/ProgressSource.d.ts +6 -2
  12. package/lib/datasources/ProgressSource.lua +20 -2
  13. package/lib/datasources/Resources.d.ts +21 -2
  14. package/lib/datasources/Resources.lua +473 -0
  15. package/lib/datasources/SpellCooldown.d.ts +10 -0
  16. package/lib/datasources/SpellCooldown.lua +207 -0
  17. package/lib/datasources/SwingTimer.d.ts +31 -0
  18. package/lib/datasources/SwingTimer.lua +641 -0
  19. package/lib/datasources/TextureSource.d.ts +10 -0
  20. package/lib/datasources/TextureSource.lua +83 -0
  21. package/lib/datasources/TimerSource.d.ts +18 -0
  22. package/lib/datasources/TimerSource.lua +284 -0
  23. package/lib/datasources/index.d.ts +9 -1
  24. package/lib/datasources/index.lua +27 -0
  25. package/lib/index.d.ts +5 -0
  26. package/lib/index.lua +13 -0
  27. package/lib/platform/BlizzardUI.d.ts +12 -0
  28. package/lib/platform/BlizzardUI.lua +352 -0
  29. package/lib/platform/forever.d.ts +40 -2
  30. package/lib/store/index.d.ts +37 -0
  31. package/lib/store/index.lua +921 -0
  32. package/lib/ui/Cell.d.ts +3 -1
  33. package/lib/ui/Icon.d.ts +8 -0
  34. package/lib/ui/Icon.lua +8 -0
  35. package/lib/ui/Label.d.ts +10 -0
  36. package/lib/ui/Label.lua +8 -0
  37. package/lib/ui/ProgressBar.d.ts +5 -1
  38. package/lib/ui/index.d.ts +4 -0
  39. package/lib/ui/index.lua +8 -0
  40. package/lib/ui/layout/measureLayout.lua +8 -1
  41. package/lib/ui/mount.lua +267 -45
  42. package/lib/ui/primitives/jsx.d.ts +7 -2
  43. package/package.json +8 -1
  44. package/tools/build-library.mjs +1 -1
@@ -32,6 +32,304 @@ 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
+
313
+ local function __TS__ArrayIncludes(self, searchElement, fromIndex)
314
+ if fromIndex == nil then
315
+ fromIndex = 0
316
+ end
317
+ local len = #self
318
+ local k = fromIndex
319
+ if fromIndex < 0 then
320
+ k = len + fromIndex
321
+ end
322
+ if k < 0 then
323
+ k = 0
324
+ end
325
+ for i = k + 1, len do
326
+ if self[i] == searchElement then
327
+ return true
328
+ end
329
+ end
330
+ return false
331
+ end
332
+
35
333
  local function __TS__CloneDescriptor(____bindingPattern0)
36
334
  local value
37
335
  local writable
@@ -169,12 +467,28 @@ do
169
467
  metatable.__newindex = descriptorNewIndex
170
468
  end
171
469
  end
470
+
471
+ local function __TS__ObjectAssign(target, ...)
472
+ local sources = {...}
473
+ for i = 1, #sources do
474
+ local source = sources[i]
475
+ if type(source) == "table" then
476
+ for key in pairs(source) do
477
+ target[key] = source[key]
478
+ end
479
+ end
480
+ end
481
+ return target
482
+ end
172
483
  -- End of Lua Library inline imports
173
484
  local ____exports = {}
174
485
  local ____ProgressSource = require("datasources.ProgressSource")
175
486
  local ProgressSource = ____ProgressSource.ProgressSource
176
487
  local ____UnitSource = require("datasources.UnitSource")
488
+ local Unit = ____UnitSource.Unit
177
489
  local resolveUnit = ____UnitSource.resolveUnit
490
+ local ____DataSource = require("datasources.DataSource")
491
+ local DataSource = ____DataSource.DataSource
178
492
  do
179
493
  local ____UnitSource = require("datasources.UnitSource")
180
494
  ____exports.Unit = ____UnitSource.Unit
@@ -195,8 +509,33 @@ function Resource.prototype.____constructor(self, current, maximum, percent, uni
195
509
  )
196
510
  self.unitToken = unitToken
197
511
  self.events = events
512
+ self.listeners = __TS__New(Set)
513
+ end
514
+ function Resource.prototype.AddEvents(self, ...)
515
+ local events = {...}
516
+ for ____, event in ipairs(events) do
517
+ do
518
+ local __continue5
519
+ repeat
520
+ if __TS__ArrayIncludes(self.events, event) then
521
+ __continue5 = true
522
+ break
523
+ end
524
+ local ____self_events_0 = self.events
525
+ ____self_events_0[#____self_events_0 + 1] = event
526
+ for ____, frame in __TS__Iterator(self.listeners) do
527
+ frame:RegisterEvent(event)
528
+ end
529
+ __continue5 = true
530
+ until true
531
+ if not __continue5 then
532
+ break
533
+ end
534
+ end
535
+ end
198
536
  end
199
537
  function Resource.prototype.Listen(self, frame, refresh)
538
+ self.listeners:add(frame)
200
539
  frame:SetScript(
201
540
  "OnEvent",
202
541
  function(_frame, event, unit)
@@ -209,12 +548,59 @@ function Resource.prototype.Listen(self, frame, refresh)
209
548
  for ____, event in ipairs(self.events) do
210
549
  frame:RegisterEvent(event)
211
550
  end
551
+ return function()
552
+ self.listeners:delete(frame)
553
+ frame:UnregisterAllEvents()
554
+ frame:SetScript("OnEvent", nil)
555
+ end
212
556
  end
557
+ --- Live optional prediction channel. Secret amounts only travel to native sinks.
558
+ ____exports.HealthPrediction = __TS__Class()
559
+ local HealthPrediction = ____exports.HealthPrediction
560
+ HealthPrediction.name = "HealthPrediction"
561
+ __TS__ClassExtends(HealthPrediction, DataSource)
562
+ function HealthPrediction.prototype.____constructor(self, read)
563
+ DataSource.prototype.____constructor(self, 0)
564
+ self.read = read
565
+ end
566
+ function HealthPrediction.prototype.GetValue(self)
567
+ local ____opt_1 = self.read
568
+ local value = ____opt_1 and ____opt_1(self)
569
+ if issecretvalue(value) then
570
+ return value
571
+ end
572
+ return value or 0
573
+ end
574
+ function HealthPrediction.prototype.ApplyTo(self, frame, maximum)
575
+ if not self.IsAvailable then
576
+ frame:Hide()
577
+ return
578
+ end
579
+ local value = self:GetValue()
580
+ if not self:CanEmit(value) then
581
+ frame:Hide()
582
+ return
583
+ end
584
+ frame:SetMinMaxValues(0, maximum)
585
+ frame:SetValue(value)
586
+ frame:Show()
587
+ end
588
+ __TS__SetDescriptor(
589
+ HealthPrediction.prototype,
590
+ "IsAvailable",
591
+ {get = function(self)
592
+ return self.read ~= nil
593
+ end},
594
+ true
595
+ )
213
596
  ____exports.HP = __TS__Class()
214
597
  local HP = ____exports.HP
215
598
  HP.name = "HP"
216
599
  __TS__ClassExtends(HP, Resource)
217
600
  function HP.prototype.____constructor(self, unit)
601
+ if unit == nil then
602
+ unit = Unit.Player
603
+ end
218
604
  local target = resolveUnit(nil, unit)
219
605
  Resource.prototype.____constructor(
220
606
  self,
@@ -226,6 +612,93 @@ function HP.prototype.____constructor(self, unit)
226
612
  )
227
613
  self.target = target
228
614
  end
615
+ function HP.prototype.UseHealPrediction(self)
616
+ if self.healPrediction == nil then
617
+ local ____exports_HealthPrediction_4 = ____exports.HealthPrediction
618
+ local ____temp_3
619
+ if UnitGetIncomingHeals == nil then
620
+ ____temp_3 = nil
621
+ else
622
+ ____temp_3 = function() return UnitGetIncomingHeals(self.unit) end
623
+ end
624
+ self.healPrediction = __TS__New(____exports_HealthPrediction_4, ____temp_3)
625
+ if self.healPrediction.IsAvailable then
626
+ self:AddEvents("UNIT_HEAL_PREDICTION")
627
+ end
628
+ end
629
+ return self
630
+ end
631
+ function HP.prototype.UseAbsorbPrediction(self)
632
+ if self.absorbPrediction == nil then
633
+ local ____exports_HealthPrediction_6 = ____exports.HealthPrediction
634
+ local ____temp_5
635
+ if UnitGetTotalAbsorbs == nil then
636
+ ____temp_5 = nil
637
+ else
638
+ ____temp_5 = function() return UnitGetTotalAbsorbs(self.unit) end
639
+ end
640
+ self.absorbPrediction = __TS__New(____exports_HealthPrediction_6, ____temp_5)
641
+ if self.absorbPrediction.IsAvailable then
642
+ self:AddEvents("UNIT_ABSORB_AMOUNT_CHANGED")
643
+ end
644
+ end
645
+ return self
646
+ end
647
+ function HP.prototype.BindTo(self, frame, options)
648
+ if options == nil then
649
+ options = {}
650
+ end
651
+ if (options.healPredictionBar ~= nil or options.absorbPredictionBar ~= nil) and (options.min ~= nil or options.max ~= nil or options.current ~= nil) then
652
+ error("HP: prediction overlays require the native health scale without min/max/current overrides")
653
+ end
654
+ return Resource.prototype.BindTo(
655
+ self,
656
+ frame,
657
+ __TS__ObjectAssign(
658
+ {},
659
+ options,
660
+ {onRefresh = function()
661
+ if options.healPredictionBar ~= nil or options.absorbPredictionBar ~= nil then
662
+ local maximum = UnitHealthMax(self.unit)
663
+ if options.healPredictionBar ~= nil then
664
+ local ____opt_7 = self.healPrediction
665
+ if ____opt_7 ~= nil then
666
+ ____opt_7:ApplyTo(options.healPredictionBar, maximum)
667
+ end
668
+ end
669
+ if options.absorbPredictionBar ~= nil then
670
+ local ____opt_9 = self.absorbPrediction
671
+ if ____opt_9 ~= nil then
672
+ ____opt_9:ApplyTo(options.absorbPredictionBar, maximum)
673
+ end
674
+ end
675
+ end
676
+ local ____this_12
677
+ ____this_12 = options
678
+ local ____opt_11 = ____this_12.onRefresh
679
+ if ____opt_11 ~= nil then
680
+ ____opt_11(____this_12)
681
+ end
682
+ end}
683
+ )
684
+ )
685
+ end
686
+ __TS__SetDescriptor(
687
+ HP.prototype,
688
+ "HealPrediction",
689
+ {get = function(self)
690
+ return self.healPrediction
691
+ end},
692
+ true
693
+ )
694
+ __TS__SetDescriptor(
695
+ HP.prototype,
696
+ "AbsorbPrediction",
697
+ {get = function(self)
698
+ return self.absorbPrediction
699
+ end},
700
+ true
701
+ )
229
702
  __TS__SetDescriptor(
230
703
  HP.prototype,
231
704
  "unit",
@@ -0,0 +1,10 @@
1
+ import { TimerSource } from "./TimerSource";
2
+ /** Native cooldown duration, including opaque timings during combat. */
3
+ export declare class SpellCooldown extends TimerSource {
4
+ readonly spellId: number;
5
+ constructor(spellId: number);
6
+ get IsAvailable(): boolean;
7
+ }
8
+ export declare class GlobalCooldown extends SpellCooldown {
9
+ constructor();
10
+ }