wuira 0.2.8 → 0.3.2

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.
@@ -4,6 +4,14 @@ local function __TS__NumberIsFinite(value)
4
4
  return type(value) == "number" and value == value and value ~= math.huge and value ~= -math.huge
5
5
  end
6
6
 
7
+ local function __TS__ArrayMap(self, callbackfn, thisArg)
8
+ local result = {}
9
+ for i = 1, #self do
10
+ result[i] = callbackfn(thisArg, self[i], i - 1, self)
11
+ end
12
+ return result
13
+ end
14
+
7
15
  local function __TS__ArrayIncludes(self, searchElement, fromIndex)
8
16
  if fromIndex == nil then
9
17
  fromIndex = 0
@@ -51,14 +59,6 @@ local function __TS__SparseArraySpread(sparseArray)
51
59
  return _unpack(sparseArray, 1, sparseArray.sparseLength)
52
60
  end
53
61
 
54
- local function __TS__ArrayMap(self, callbackfn, thisArg)
55
- local result = {}
56
- for i = 1, #self do
57
- result[i] = callbackfn(thisArg, self[i], i - 1, self)
58
- end
59
- return result
60
- end
61
-
62
62
  local function __TS__ObjectAssign(target, ...)
63
63
  local sources = {...}
64
64
  for i = 1, #sources do
@@ -73,15 +73,20 @@ local function __TS__ObjectAssign(target, ...)
73
73
  end
74
74
  -- End of Lua Library inline imports
75
75
  local ____exports = {}
76
+ local resolveSize, flowMainHorizontal, measureChildren
76
77
  local ____Spacing = require("types.Spacing")
77
78
  local resolveSpacing = ____Spacing.resolveSpacing
78
79
  local ____calculateFlow = require("ui.layout.calculateFlow")
79
80
  local calculateFlow = ____calculateFlow.calculateFlow
81
+ local flowSpacing = ____calculateFlow.flowSpacing
80
82
  local ____calculateGrid = require("ui.layout.calculateGrid")
81
83
  local calculateGrid = ____calculateGrid.calculateGrid
82
- local function resolveSize(self, value, available, margin)
83
- if value == "inherit" then
84
+ function resolveSize(self, value, available, margin)
85
+ if value == "inherit" or value == "fill" then
84
86
  if available == nil then
87
+ if value == "fill" then
88
+ return 0
89
+ end
85
90
  error("Cannot inherit a size from an unconstrained content-sized parent")
86
91
  end
87
92
  return math.max(0, available - margin)
@@ -91,6 +96,72 @@ local function resolveSize(self, value, available, margin)
91
96
  end
92
97
  return value
93
98
  end
99
+ function flowMainHorizontal(self, direction)
100
+ return direction == "horizontal" or direction == "ltr" or direction == "rtl" or direction == "horizontalReverse"
101
+ end
102
+ function measureChildren(self, layout, sourceChildren, contentWidth, contentHeight, path)
103
+ local box = {width = contentWidth, height = contentHeight}
104
+ if layout == nil or layout.kind ~= "flow" then
105
+ return __TS__ArrayMap(
106
+ sourceChildren,
107
+ function(____, child) return ____exports.measureLayout(nil, child, box, path) end
108
+ )
109
+ end
110
+ local horizontal = flowMainHorizontal(nil, layout.props.direction)
111
+ local gap = flowSpacing(nil, layout.props.direction, layout.props).main
112
+ local measured = {}
113
+ local fillIndexes = {}
114
+ do
115
+ local index = 0
116
+ while index < #sourceChildren do
117
+ local child = sourceChildren[index + 1]
118
+ if (horizontal and child.props.width or child.props.height) == "fill" then
119
+ fillIndexes[#fillIndexes + 1] = index
120
+ else
121
+ measured[index + 1] = ____exports.measureLayout(nil, child, box, path)
122
+ end
123
+ index = index + 1
124
+ end
125
+ end
126
+ local used = 0
127
+ do
128
+ local index = 0
129
+ while index < #measured do
130
+ do
131
+ local __continue16
132
+ repeat
133
+ local child = measured[index + 1]
134
+ if child == nil then
135
+ __continue16 = true
136
+ break
137
+ end
138
+ used = used + (horizontal and child.width + child.margin.left + child.margin.right or child.height + child.margin.top + child.margin.bottom)
139
+ __continue16 = true
140
+ until true
141
+ if not __continue16 then
142
+ break
143
+ end
144
+ end
145
+ index = index + 1
146
+ end
147
+ end
148
+ local ____horizontal_0
149
+ if horizontal then
150
+ ____horizontal_0 = contentWidth
151
+ else
152
+ ____horizontal_0 = contentHeight
153
+ end
154
+ local contentMain = ____horizontal_0
155
+ local leftover = contentMain == nil and 0 or math.max(
156
+ 0,
157
+ contentMain - used - math.max(0, #sourceChildren - 1) * gap
158
+ )
159
+ local share = #fillIndexes == 0 and 0 or leftover / #fillIndexes
160
+ for ____, index in ipairs(fillIndexes) do
161
+ measured[index + 1] = ____exports.measureLayout(nil, sourceChildren[index + 1], horizontal and ({width = share, height = contentHeight}) or ({width = contentWidth, height = share}), path)
162
+ end
163
+ return measured
164
+ end
94
165
  --- Resolve available space top-down and content bounds bottom-up.
95
166
  function ____exports.measureLayout(self, element, available, ancestors)
96
167
  if available == nil then
@@ -123,20 +194,20 @@ function ____exports.measureLayout(self, element, available, ancestors)
123
194
  local isLayout = element.kind == "flow" or element.kind == "grid"
124
195
  local layout = isLayout and element or nil
125
196
  local contentSizing = (layout and layout.props.sizing) == "content"
126
- local ____temp_2
197
+ local ____temp_3
127
198
  if contentSizing and props.width == 0 then
128
- ____temp_2 = nil
199
+ ____temp_3 = nil
129
200
  else
130
- ____temp_2 = math.max(0, width - padding.left - padding.right)
201
+ ____temp_3 = math.max(0, width - padding.left - padding.right)
131
202
  end
132
- local contentWidth = ____temp_2
133
- local ____temp_3
203
+ local contentWidth = ____temp_3
204
+ local ____temp_4
134
205
  if contentSizing and props.height == 0 then
135
- ____temp_3 = nil
206
+ ____temp_4 = nil
136
207
  else
137
- ____temp_3 = math.max(0, height - padding.top - padding.bottom)
208
+ ____temp_4 = math.max(0, height - padding.top - padding.bottom)
138
209
  end
139
- local contentHeight = ____temp_3
210
+ local contentHeight = ____temp_4
140
211
  local sourceChildren = layout ~= nil and layout.children or (cell.child == nil and ({}) or ({cell.child}))
141
212
  local childWidth = contentWidth
142
213
  local childHeight = contentHeight
@@ -149,47 +220,55 @@ function ____exports.measureLayout(self, element, available, ancestors)
149
220
  1,
150
221
  math.ceil(#sourceChildren / grid.columns)
151
222
  )
152
- local ____grid_cellWidth_7 = grid.cellWidth
153
- if ____grid_cellWidth_7 == nil then
154
- local ____temp_6
223
+ local ____grid_cellWidth_8 = grid.cellWidth
224
+ if ____grid_cellWidth_8 == nil then
225
+ local ____temp_7
155
226
  if contentWidth == nil then
156
- ____temp_6 = nil
227
+ ____temp_7 = nil
157
228
  else
158
- ____temp_6 = math.max(0, (contentWidth - (grid.columnGap or grid.gap or 0) * (grid.columns - 1)) / grid.columns)
229
+ ____temp_7 = math.max(0, (contentWidth - (grid.columnGap or grid.gap or 0) * (grid.columns - 1)) / grid.columns)
159
230
  end
160
- ____grid_cellWidth_7 = ____temp_6
231
+ ____grid_cellWidth_8 = ____temp_7
161
232
  end
162
- childWidth = ____grid_cellWidth_7
163
- local ____grid_cellHeight_9 = grid.cellHeight
164
- if ____grid_cellHeight_9 == nil then
165
- local ____temp_8
233
+ childWidth = ____grid_cellWidth_8
234
+ local ____grid_cellHeight_10 = grid.cellHeight
235
+ if ____grid_cellHeight_10 == nil then
236
+ local ____temp_9
166
237
  if contentHeight == nil then
167
- ____temp_8 = nil
238
+ ____temp_9 = nil
168
239
  else
169
- ____temp_8 = math.max(0, (contentHeight - (grid.rowGap or grid.gap or 0) * (rows - 1)) / rows)
240
+ ____temp_9 = math.max(0, (contentHeight - (grid.rowGap or grid.gap or 0) * (rows - 1)) / rows)
170
241
  end
171
- ____grid_cellHeight_9 = ____temp_8
242
+ ____grid_cellHeight_10 = ____temp_9
172
243
  end
173
- childHeight = ____grid_cellHeight_9
244
+ childHeight = ____grid_cellHeight_10
174
245
  end
175
- local ____array_10 = __TS__SparseArrayNew(__TS__Unpack(ancestors))
176
- __TS__SparseArrayPush(____array_10, element)
177
- local path = {__TS__SparseArraySpread(____array_10)}
178
- local children = __TS__ArrayMap(
246
+ local ____array_11 = __TS__SparseArrayNew(__TS__Unpack(ancestors))
247
+ __TS__SparseArrayPush(____array_11, element)
248
+ local path = {__TS__SparseArraySpread(____array_11)}
249
+ local children = measureChildren(
250
+ nil,
251
+ layout,
179
252
  sourceChildren,
180
- function(____, child) return ____exports.measureLayout(nil, child, {width = childWidth, height = childHeight}, path) end
253
+ childWidth,
254
+ childHeight,
255
+ path
181
256
  )
182
257
  local placements
183
258
  if layout ~= nil then
184
259
  local sizes = __TS__ArrayMap(
185
260
  children,
186
- function(____, child) return {width = child.width + child.margin.left + child.margin.right, height = child.height + child.margin.top + child.margin.bottom} end
261
+ function(____, child) return {width = child.width + child.margin.left + child.margin.right, height = child.height + child.margin.top + child.margin.bottom, anchor = child.cell.props.anchor} end
187
262
  )
188
263
  local positions = layout.kind == "flow" and calculateFlow(
189
264
  nil,
190
265
  __TS__ObjectAssign({}, layout.props, {width = contentWidth or 0, height = contentHeight or 0}),
191
266
  sizes
192
- ) or calculateGrid(nil, layout.props, sizes)
267
+ ) or calculateGrid(
268
+ nil,
269
+ __TS__ObjectAssign({}, layout.props, {width = contentWidth or 0, height = contentHeight or 0}),
270
+ sizes
271
+ )
193
272
  placements = __TS__ArrayMap(
194
273
  positions,
195
274
  function(____, point) return {x = point.x + padding.left, y = point.y + padding.top} end
@@ -0,0 +1,177 @@
1
+ /** Client files shipped with WoW. Names are catalog keys; paths are what the game resolves. */
2
+ export interface ClientMedia {
3
+ readonly label: string;
4
+ readonly path: string;
5
+ }
6
+ export interface ClientBorder extends ClientMedia {
7
+ readonly edgeSize: number;
8
+ }
9
+ export declare const progressTextures: {
10
+ readonly solid: {
11
+ readonly label: "Solid";
12
+ readonly path: "Interface\\Buttons\\WHITE8X8";
13
+ };
14
+ readonly blizzard: {
15
+ readonly label: "Blizzard";
16
+ readonly path: "Interface\\TargetingFrame\\UI-StatusBar";
17
+ };
18
+ readonly skills: {
19
+ readonly label: "Blizzard Character Skills Bar";
20
+ readonly path: "Interface\\PaperDollInfoFrame\\UI-Character-Skills-Bar";
21
+ };
22
+ readonly raid: {
23
+ readonly label: "Blizzard Raid Bar";
24
+ readonly path: "Interface\\RaidFrame\\Raid-Bar-Hp-Fill";
25
+ };
26
+ };
27
+ export declare const backgroundTextures: {
28
+ readonly solid: {
29
+ readonly label: "Solid";
30
+ readonly path: "Interface\\Buttons\\WHITE8X8";
31
+ };
32
+ readonly tooltip: {
33
+ readonly label: "Blizzard Tooltip";
34
+ readonly path: "Interface\\Tooltips\\UI-Tooltip-Background";
35
+ };
36
+ readonly dialog: {
37
+ readonly label: "Blizzard Dialog";
38
+ readonly path: "Interface\\DialogFrame\\UI-DialogBox-Background";
39
+ };
40
+ readonly dialogDark: {
41
+ readonly label: "Blizzard Dialog Dark";
42
+ readonly path: "Interface\\DialogFrame\\UI-DialogBox-Background-Dark";
43
+ };
44
+ readonly dialogGold: {
45
+ readonly label: "Blizzard Dialog Gold";
46
+ readonly path: "Interface\\DialogFrame\\UI-DialogBox-Gold-Background";
47
+ };
48
+ readonly collections: {
49
+ readonly label: "Blizzard Collections";
50
+ readonly path: "Interface\\Collections\\CollectionsBackgroundTile";
51
+ };
52
+ readonly garrison: {
53
+ readonly label: "Blizzard Garrison";
54
+ readonly path: "Interface\\Garrison\\GarrisonUIBackground";
55
+ };
56
+ readonly garrisonAlt: {
57
+ readonly label: "Blizzard Garrison 2";
58
+ readonly path: "Interface\\Garrison\\GarrisonUIBackground2";
59
+ };
60
+ readonly garrisonMission: {
61
+ readonly label: "Blizzard Garrison Mission";
62
+ readonly path: "Interface\\Garrison\\GarrisonMissionUIInfoBoxBackgroundTile";
63
+ };
64
+ readonly lowHealth: {
65
+ readonly label: "Blizzard Low Health";
66
+ readonly path: "Interface\\FullScreenTextures\\LowHealth";
67
+ };
68
+ readonly marble: {
69
+ readonly label: "Blizzard Marble";
70
+ readonly path: "Interface\\FrameGeneral\\UI-Background-Marble";
71
+ };
72
+ readonly outOfControl: {
73
+ readonly label: "Blizzard Out of Control";
74
+ readonly path: "Interface\\FullScreenTextures\\OutOfControl";
75
+ };
76
+ readonly parchment: {
77
+ readonly label: "Blizzard Parchment";
78
+ readonly path: "Interface\\AchievementFrame\\UI-Achievement-Parchment-Horizontal";
79
+ };
80
+ readonly parchmentGuild: {
81
+ readonly label: "Blizzard Parchment Guild";
82
+ readonly path: "Interface\\AchievementFrame\\UI-GuildAchievement-Parchment-Horizontal";
83
+ };
84
+ readonly rock: {
85
+ readonly label: "Blizzard Rock";
86
+ readonly path: "Interface\\FrameGeneral\\UI-Background-Rock";
87
+ };
88
+ readonly tabard: {
89
+ readonly label: "Blizzard Tabard";
90
+ readonly path: "Interface\\TabardFrame\\TabardFrameBackground";
91
+ };
92
+ };
93
+ export declare const borderTextures: {
94
+ readonly solid: {
95
+ readonly label: "Solid";
96
+ readonly path: "";
97
+ readonly edgeSize: 1;
98
+ };
99
+ readonly tooltip: {
100
+ readonly label: "Blizzard Tooltip";
101
+ readonly path: "Interface\\Tooltips\\UI-Tooltip-Border";
102
+ readonly edgeSize: 16;
103
+ };
104
+ readonly dialog: {
105
+ readonly label: "Blizzard Dialog";
106
+ readonly path: "Interface\\DialogFrame\\UI-DialogBox-Border";
107
+ readonly edgeSize: 32;
108
+ };
109
+ readonly dialogGold: {
110
+ readonly label: "Blizzard Dialog Gold";
111
+ readonly path: "Interface\\DialogFrame\\UI-DialogBox-Gold-Border";
112
+ readonly edgeSize: 32;
113
+ };
114
+ readonly achievementWood: {
115
+ readonly label: "Blizzard Achievement Wood";
116
+ readonly path: "Interface\\AchievementFrame\\UI-Achievement-WoodBorder";
117
+ readonly edgeSize: 16;
118
+ };
119
+ readonly chatBubble: {
120
+ readonly label: "Blizzard Chat Bubble";
121
+ readonly path: "Interface\\Tooltips\\ChatBubble-Backdrop";
122
+ readonly edgeSize: 16;
123
+ };
124
+ readonly party: {
125
+ readonly label: "Blizzard Party";
126
+ readonly path: "Interface\\CHARACTERFRAME\\UI-Party-Border";
127
+ readonly edgeSize: 16;
128
+ };
129
+ };
130
+ /** Latin-capable faces present in every client locale. Cyrillic duplicates stay out. */
131
+ export declare const clientFonts: {
132
+ readonly friz: {
133
+ readonly label: "Friz Quadrata";
134
+ readonly path: "Fonts\\FRIZQT__.TTF";
135
+ };
136
+ readonly arialNarrow: {
137
+ readonly label: "Arial Narrow";
138
+ readonly path: "Fonts\\ARIALN.TTF";
139
+ };
140
+ readonly morpheus: {
141
+ readonly label: "Morpheus";
142
+ readonly path: "Fonts\\MORPHEUS.TTF";
143
+ };
144
+ readonly skurri: {
145
+ readonly label: "Skurri";
146
+ readonly path: "Fonts\\SKURRI.TTF";
147
+ };
148
+ readonly twoThousand: {
149
+ readonly label: "2002";
150
+ readonly path: "Fonts\\2002.TTF";
151
+ };
152
+ readonly twoThousandBold: {
153
+ readonly label: "2002 Bold";
154
+ readonly path: "Fonts\\2002B.TTF";
155
+ };
156
+ readonly hei: {
157
+ readonly label: "AR CrystalzcuheiGBK Demibold";
158
+ readonly path: "Fonts\\ARHei.TTF";
159
+ };
160
+ readonly zhongkaiCombat: {
161
+ readonly label: "AR ZhongkaiGBK Medium (Combat)";
162
+ readonly path: "Fonts\\ARKai_C.TTF";
163
+ };
164
+ readonly zhongkai: {
165
+ readonly label: "AR ZhongkaiGBK Medium";
166
+ readonly path: "Fonts\\ARKai_T.TTF";
167
+ };
168
+ readonly mok: {
169
+ readonly label: "MoK";
170
+ readonly path: "Fonts\\K_Pagetext.TTF";
171
+ };
172
+ readonly nimrod: {
173
+ readonly label: "Nimrod MT";
174
+ readonly path: "Fonts\\NIM_____.ttf";
175
+ };
176
+ };
177
+ export declare function resolveMediaPath(catalog: Readonly<Record<string, ClientMedia>>, value: string): string;
@@ -0,0 +1,49 @@
1
+ --[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
2
+ local ____exports = {}
3
+ ____exports.progressTextures = {solid = {label = "Solid", path = "Interface\\Buttons\\WHITE8X8"}, blizzard = {label = "Blizzard", path = "Interface\\TargetingFrame\\UI-StatusBar"}, skills = {label = "Blizzard Character Skills Bar", path = "Interface\\PaperDollInfoFrame\\UI-Character-Skills-Bar"}, raid = {label = "Blizzard Raid Bar", path = "Interface\\RaidFrame\\Raid-Bar-Hp-Fill"}}
4
+ ____exports.backgroundTextures = {
5
+ solid = {label = "Solid", path = "Interface\\Buttons\\WHITE8X8"},
6
+ tooltip = {label = "Blizzard Tooltip", path = "Interface\\Tooltips\\UI-Tooltip-Background"},
7
+ dialog = {label = "Blizzard Dialog", path = "Interface\\DialogFrame\\UI-DialogBox-Background"},
8
+ dialogDark = {label = "Blizzard Dialog Dark", path = "Interface\\DialogFrame\\UI-DialogBox-Background-Dark"},
9
+ dialogGold = {label = "Blizzard Dialog Gold", path = "Interface\\DialogFrame\\UI-DialogBox-Gold-Background"},
10
+ collections = {label = "Blizzard Collections", path = "Interface\\Collections\\CollectionsBackgroundTile"},
11
+ garrison = {label = "Blizzard Garrison", path = "Interface\\Garrison\\GarrisonUIBackground"},
12
+ garrisonAlt = {label = "Blizzard Garrison 2", path = "Interface\\Garrison\\GarrisonUIBackground2"},
13
+ garrisonMission = {label = "Blizzard Garrison Mission", path = "Interface\\Garrison\\GarrisonMissionUIInfoBoxBackgroundTile"},
14
+ lowHealth = {label = "Blizzard Low Health", path = "Interface\\FullScreenTextures\\LowHealth"},
15
+ marble = {label = "Blizzard Marble", path = "Interface\\FrameGeneral\\UI-Background-Marble"},
16
+ outOfControl = {label = "Blizzard Out of Control", path = "Interface\\FullScreenTextures\\OutOfControl"},
17
+ parchment = {label = "Blizzard Parchment", path = "Interface\\AchievementFrame\\UI-Achievement-Parchment-Horizontal"},
18
+ parchmentGuild = {label = "Blizzard Parchment Guild", path = "Interface\\AchievementFrame\\UI-GuildAchievement-Parchment-Horizontal"},
19
+ rock = {label = "Blizzard Rock", path = "Interface\\FrameGeneral\\UI-Background-Rock"},
20
+ tabard = {label = "Blizzard Tabard", path = "Interface\\TabardFrame\\TabardFrameBackground"}
21
+ }
22
+ ____exports.borderTextures = {
23
+ solid = {label = "Solid", path = "", edgeSize = 1},
24
+ tooltip = {label = "Blizzard Tooltip", path = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16},
25
+ dialog = {label = "Blizzard Dialog", path = "Interface\\DialogFrame\\UI-DialogBox-Border", edgeSize = 32},
26
+ dialogGold = {label = "Blizzard Dialog Gold", path = "Interface\\DialogFrame\\UI-DialogBox-Gold-Border", edgeSize = 32},
27
+ achievementWood = {label = "Blizzard Achievement Wood", path = "Interface\\AchievementFrame\\UI-Achievement-WoodBorder", edgeSize = 16},
28
+ chatBubble = {label = "Blizzard Chat Bubble", path = "Interface\\Tooltips\\ChatBubble-Backdrop", edgeSize = 16},
29
+ party = {label = "Blizzard Party", path = "Interface\\CHARACTERFRAME\\UI-Party-Border", edgeSize = 16}
30
+ }
31
+ --- Latin-capable faces present in every client locale. Cyrillic duplicates stay out.
32
+ ____exports.clientFonts = {
33
+ friz = {label = "Friz Quadrata", path = "Fonts\\FRIZQT__.TTF"},
34
+ arialNarrow = {label = "Arial Narrow", path = "Fonts\\ARIALN.TTF"},
35
+ morpheus = {label = "Morpheus", path = "Fonts\\MORPHEUS.TTF"},
36
+ skurri = {label = "Skurri", path = "Fonts\\SKURRI.TTF"},
37
+ twoThousand = {label = "2002", path = "Fonts\\2002.TTF"},
38
+ twoThousandBold = {label = "2002 Bold", path = "Fonts\\2002B.TTF"},
39
+ hei = {label = "AR CrystalzcuheiGBK Demibold", path = "Fonts\\ARHei.TTF"},
40
+ zhongkaiCombat = {label = "AR ZhongkaiGBK Medium (Combat)", path = "Fonts\\ARKai_C.TTF"},
41
+ zhongkai = {label = "AR ZhongkaiGBK Medium", path = "Fonts\\ARKai_T.TTF"},
42
+ mok = {label = "MoK", path = "Fonts\\K_Pagetext.TTF"},
43
+ nimrod = {label = "Nimrod MT", path = "Fonts\\NIM_____.ttf"}
44
+ }
45
+ function ____exports.resolveMediaPath(self, catalog, value)
46
+ local ____opt_0 = catalog[value]
47
+ return ____opt_0 and ____opt_0.path or value
48
+ end
49
+ return ____exports
@@ -0,0 +1,21 @@
1
+ export type OverlayGlowKind = "buttonOverlay" | "Pixel" | "ACShine" | "Proc";
2
+ export interface OverlayGlowOptions {
3
+ kind: OverlayGlowKind;
4
+ color?: {
5
+ r: number;
6
+ g: number;
7
+ b: number;
8
+ a?: number;
9
+ };
10
+ lines?: number;
11
+ frequency?: number;
12
+ length?: number;
13
+ thickness?: number;
14
+ scale?: number;
15
+ border?: boolean;
16
+ x?: number;
17
+ y?: number;
18
+ duration?: number;
19
+ }
20
+ /** Additive overlay. Addon code cannot install a shader, so each style is drawn with colored textures. */
21
+ export declare function startOverlayGlow(frame: wuiraNativeFrame, options: OverlayGlowOptions): () => void;