wuira 0.3.0 → 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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,22 @@ with the release date and highlight breaking changes explicitly.
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 0.3.2 — 2026-10-19
11
+
12
+ ### Fixed
13
+
14
+ - Older `justify` uses only leftover space. A line wider than its container stays at the start instead of being pulled backward.
15
+
16
+ ## 0.3.1 — 2026-10-19
17
+
18
+ ### Added
19
+
20
+ - `width` and `height` accept `"fill"`. Fill children share the space left after fixed siblings. `"inherit"` still takes the whole parent.
21
+ - Flow and grid accept `ltr`, `rtl`, `ttb`, and `btt`, plus `alignX` and `alignY`. A child's anchor places it inside its slot. Older `horizontal`, `vertical`, and `justify` values still apply.
22
+ - Flow `columnGap` and `rowGap` set horizontal and vertical spacing independently. Older `gap` and `lineGap` still apply when the matching axis is unset.
23
+ - `startOverlayGlow` draws Pixel, button overlay, autocast shine, and proc styles with additive textures. It returns a stop function and does not depend on another addon.
24
+ - Static client catalogs for progress textures, backgrounds, borders, and fonts. A catalog key resolves to a Blizzard path; any other string remains a custom path.
25
+
10
26
  ## 0.3.0 — 2026-10-17
11
27
 
12
28
  ### Breaking
@@ -7,6 +7,7 @@ interface wuiraNativeTexture {
7
7
  SetAllPoints(frame: wuiraNativeFrame): void;
8
8
  SetColorTexture(red: number, green: number, blue: number, alpha: number): void;
9
9
  SetTexture(path: string | number | undefined): void;
10
+ SetAtlas(atlas: string): void;
10
11
  SetVertexColor(red: number, green: number, blue: number, alpha: number): void;
11
12
  SetBlendMode(mode: import("../types/Texture").BlendMode): void;
12
13
  SetHorizTile(enabled: boolean): void;
@@ -101,7 +102,7 @@ interface wuiraNativeStatusBar extends wuiraNativeFrame {
101
102
  GetStatusBarTexture(): wuiraNativeTexture;
102
103
  SetMinMaxValues(min: number, max: number): void;
103
104
  SetValue(value: number): void;
104
- SetStatusBarTexture(path: string): void;
105
+ SetStatusBarTexture(path: string | number): void;
105
106
  SetStatusBarColor(red: number, green: number, blue: number, alpha: number): void;
106
107
  SetOrientation(orientation: "HORIZONTAL" | "VERTICAL"): void;
107
108
  SetReverseFill(reverse: boolean): void;
@@ -463,8 +463,8 @@ function ____exports.prepareLayout(self, element, parent, mountedFrames)
463
463
  nil,
464
464
  element,
465
465
  {
466
- width = rootProps.width == "inherit" and parent:GetWidth() or nil,
467
- height = rootProps.height == "inherit" and parent:GetHeight() or nil
466
+ width = (rootProps.width == "inherit" or rootProps.width == "fill") and parent:GetWidth() or nil,
467
+ height = (rootProps.height == "inherit" or rootProps.height == "fill") and parent:GetHeight() or nil
468
468
  }
469
469
  )
470
470
  local ____temp_3 = parent ~= UIParent
@@ -54,16 +54,18 @@ local ____exports = {}
54
54
  local ____Resources = require("datasources.Resources")
55
55
  local HP = ____Resources.HP
56
56
  local ____statusBarTextures = require("ui.decorations.statusBarTextures")
57
+ local applyStatusBarTexture = ____statusBarTextures.applyStatusBarTexture
57
58
  local resolveStatusBarTexture = ____statusBarTextures.resolveStatusBarTexture
58
59
  function ____exports.renderProgress(self, item, tree, onActiveChange)
59
60
  local props = item.cell.props
60
61
  local bar = item.frame
61
62
  local ____opt_0 = props.foreground
62
63
  local color = ____opt_0 and ____opt_0.color or props.color
63
- local ____bar_SetStatusBarTexture_5 = bar.SetStatusBarTexture
64
+ local ____applyStatusBarTexture_5 = applyStatusBarTexture
64
65
  local ____resolveStatusBarTexture_4 = resolveStatusBarTexture
65
66
  local ____opt_2 = props.foreground
66
- ____bar_SetStatusBarTexture_5(
67
+ ____applyStatusBarTexture_5(
68
+ nil,
67
69
  bar,
68
70
  ____resolveStatusBarTexture_4(nil, ____opt_2 and ____opt_2.texture or props.texture or "solid")
69
71
  )
@@ -107,7 +109,11 @@ function ____exports.renderProgress(self, item, tree, onActiveChange)
107
109
  layer:EnableMouse(false)
108
110
  layer:SetFrameLevel(bar:GetFrameLevel())
109
111
  layer:SetSize(item.width, item.height)
110
- layer:SetStatusBarTexture(resolveStatusBarTexture(nil, style.texture or "solid"))
112
+ applyStatusBarTexture(
113
+ nil,
114
+ layer,
115
+ resolveStatusBarTexture(nil, style.texture or "solid")
116
+ )
111
117
  local tint = style.color
112
118
  layer:SetStatusBarColor(tint.r, tint.g, tint.b, tint.a or 0.5)
113
119
  local texture = layer:GetStatusBarTexture()
@@ -6,6 +6,9 @@ local ____secureButton = require("rendering.secureButton")
6
6
  local renderSecureButton = ____secureButton.renderSecureButton
7
7
  local ____progress = require("rendering.progress")
8
8
  local renderProgress = ____progress.renderProgress
9
+ local ____clientMedia = require("ui.media.clientMedia")
10
+ local resolveMediaPath = ____clientMedia.resolveMediaPath
11
+ local clientFonts = ____clientMedia.clientFonts
9
12
  function ____exports.createWidget(self, cell, parent)
10
13
  local frame = cell.kind == "progress" and CreateFrame("StatusBar", nil, parent) or (cell.kind == "secureButton" and createSecureButton(nil, parent, cell.props) or (cell.kind == "button" and CreateFrame("Button", nil, parent) or CreateFrame("Frame", nil, parent)))
11
14
  frame:Hide()
@@ -43,7 +46,11 @@ function ____exports.renderWidget(self, item, tree, updates, onActiveChange)
43
46
  local props = item.cell.props
44
47
  local label = item.frame:CreateFontString(nil, "OVERLAY")
45
48
  label:SetAllPoints(item.frame)
46
- label:SetFont(props.font or "Fonts\\FRIZQT__.TTF", props.fontSize or 12, "OUTLINE")
49
+ label:SetFont(
50
+ resolveMediaPath(nil, clientFonts, props.font or "friz"),
51
+ props.fontSize or 12,
52
+ "OUTLINE"
53
+ )
47
54
  label:SetJustifyH(props.align or "LEFT")
48
55
  label:SetJustifyV("MIDDLE")
49
56
  local color = props.color
package/lib/ui/Cell.d.ts CHANGED
@@ -2,7 +2,7 @@ import type { Element } from "./primitives/jsx";
2
2
  import type { Decorations } from "./decorations/Decorations";
3
3
  import type { Position } from "../types/Position";
4
4
  import type { Spacing } from "../types/Spacing";
5
- export type Size = number | "inherit";
5
+ export type Size = number | "inherit" | "fill";
6
6
  /** Common visual descriptor accepted by the mounting API. */
7
7
  export interface Cell extends Element {
8
8
  }
@@ -1,12 +1,24 @@
1
1
  import type { LayoutProps, ILayout } from "./Layout";
2
2
  import type { Element, Children } from "./primitives/jsx";
3
+ export type FlowDirection = "ltr" | "rtl" | "ttb" | "btt" | "horizontal" | "vertical" | "horizontalReverse" | "verticalReverse";
3
4
  export interface FlowOptions {
4
- direction: "horizontal" | "vertical";
5
- /** Wrap to another row (horizontal) or column (vertical) when full. */
5
+ /** ltr packs left to right. rtl packs right to left. ttb packs top to bottom. btt packs bottom to top. horizontal and vertical remain readable. */
6
+ direction: FlowDirection;
7
+ /** Wrap to another row or column when full. */
6
8
  grow?: boolean;
7
- /** Space between rows/columns; defaults to gap. */
9
+ /** Horizontal space between children. Falls back to gap or lineGap, depending on direction. */
10
+ columnGap?: number;
11
+ /** Vertical space between children. Falls back to gap or lineGap, depending on direction. */
12
+ rowGap?: number;
13
+ /** Older shared spacing, used when columnGap or rowGap is unset. */
14
+ gap?: number;
15
+ /** Older cross-axis spacing, used when the matching axis gap is unset. */
8
16
  lineGap?: number;
9
- /** Align each row/column along the flow direction. Defaults to start. */
17
+ /** Places the arranged lines on the horizontal axis. */
18
+ alignX?: "left" | "center" | "right";
19
+ /** Places the arranged lines on the vertical axis. */
20
+ alignY?: "top" | "center" | "bottom";
21
+ /** Older main-axis alignment, used when the matching axis position is unset. */
10
22
  justify?: "start" | "center" | "end";
11
23
  }
12
24
  export type FlowLayoutProps = LayoutProps & FlowOptions;
@@ -1,9 +1,18 @@
1
1
  import type { LayoutProps, ILayout } from "./Layout";
2
+ import type { FlowDirection } from "./FlowLayout";
2
3
  import type { Element, Children } from "./primitives/jsx";
3
4
  export interface GridOptions {
4
5
  columns: number;
5
- rowGap?: number;
6
+ /** ltr fills rows left to right. ttb fills columns top to bottom. Older horizontal and vertical values remain readable. */
7
+ direction?: FlowDirection;
8
+ /** Places the whole grid on the horizontal axis. */
9
+ alignX?: "left" | "center" | "right";
10
+ /** Places the whole grid on the vertical axis. */
11
+ alignY?: "top" | "center" | "bottom";
12
+ /** Horizontal space between columns. Falls back to gap. */
6
13
  columnGap?: number;
14
+ /** Vertical space between rows. Falls back to gap. */
15
+ rowGap?: number;
7
16
  /** Defaults to the maximum child width/height. Does not resize children. */
8
17
  cellWidth?: number;
9
18
  cellHeight?: number;
@@ -21,7 +21,12 @@ function ScrollHost.prototype.____constructor(self, parent, onScroll)
21
21
  parent:GetHeight()
22
22
  )
23
23
  self.Frame:SetAllPoints(parent)
24
- self.Frame:EnableMouse(true)
24
+ self.Frame:EnableMouse(false)
25
+ local wheel = self.Frame
26
+ local ____opt_0 = wheel.EnableMouseWheel
27
+ if ____opt_0 ~= nil then
28
+ ____opt_0(wheel, true)
29
+ end
25
30
  self.Frame:SetScript(
26
31
  "OnMouseWheel",
27
32
  function(_frame, delta) return self:ScrollBy(-delta * 32) end
@@ -51,9 +56,9 @@ function ScrollHost.prototype.ScrollTo(self, offset)
51
56
  )
52
57
  )
53
58
  self.Frame:SetVerticalScroll(value)
54
- local ____opt_0 = self.onScroll
55
- if ____opt_0 ~= nil then
56
- ____opt_0(self, value)
59
+ local ____opt_2 = self.onScroll
60
+ if ____opt_2 ~= nil then
61
+ ____opt_2(self, value)
57
62
  end
58
63
  end
59
64
  function ScrollHost.prototype.Dispose(self)
@@ -1,25 +1,5 @@
1
- export declare const backgroundTextures: {
2
- readonly solid: {
3
- readonly label: "Solid";
4
- readonly path: "Interface\\Buttons\\WHITE8X8";
5
- };
6
- readonly tooltip: {
7
- readonly label: "Blizzard Tooltip";
8
- readonly path: "Interface\\Tooltips\\UI-Tooltip-Background";
9
- };
10
- readonly dialog: {
11
- readonly label: "Blizzard Dialog";
12
- readonly path: "Interface\\DialogFrame\\UI-DialogBox-Background";
13
- };
14
- readonly dialogDark: {
15
- readonly label: "Blizzard Dialog Dark";
16
- readonly path: "Interface\\DialogFrame\\UI-DialogBox-Background-Dark";
17
- };
18
- readonly dialogGold: {
19
- readonly label: "Blizzard Dialog Gold";
20
- readonly path: "Interface\\DialogFrame\\UI-DialogBox-Gold-Background";
21
- };
22
- };
1
+ import { backgroundTextures } from "../media/clientMedia";
2
+ export { backgroundTextures };
23
3
  export type BackgroundTexture = keyof typeof backgroundTextures | {
24
4
  path: string;
25
5
  };
@@ -1,10 +1,6 @@
1
1
  --[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
2
2
  local ____exports = {}
3
- ____exports.backgroundTextures = {
4
- solid = {label = "Solid", path = "Interface\\Buttons\\WHITE8X8"},
5
- tooltip = {label = "Blizzard Tooltip", path = "Interface\\Tooltips\\UI-Tooltip-Background"},
6
- dialog = {label = "Blizzard Dialog", path = "Interface\\DialogFrame\\UI-DialogBox-Background"},
7
- dialogDark = {label = "Blizzard Dialog Dark", path = "Interface\\DialogFrame\\UI-DialogBox-Background-Dark"},
8
- dialogGold = {label = "Blizzard Dialog Gold", path = "Interface\\DialogFrame\\UI-DialogBox-Gold-Background"}
9
- }
3
+ local ____clientMedia = require("ui.media.clientMedia")
4
+ local backgroundTextures = ____clientMedia.backgroundTextures
5
+ ____exports.backgroundTextures = backgroundTextures
10
6
  return ____exports
@@ -1,40 +1,5 @@
1
- export declare const borderTextures: {
2
- readonly solid: {
3
- readonly label: "Solid";
4
- readonly path: "";
5
- readonly edgeSize: 1;
6
- };
7
- readonly tooltip: {
8
- readonly label: "Blizzard Tooltip";
9
- readonly path: "Interface\\Tooltips\\UI-Tooltip-Border";
10
- readonly edgeSize: 16;
11
- };
12
- readonly dialog: {
13
- readonly label: "Blizzard Dialog";
14
- readonly path: "Interface\\DialogFrame\\UI-DialogBox-Border";
15
- readonly edgeSize: 32;
16
- };
17
- readonly dialogGold: {
18
- readonly label: "Blizzard Dialog Gold";
19
- readonly path: "Interface\\DialogFrame\\UI-DialogBox-Gold-Border";
20
- readonly edgeSize: 32;
21
- };
22
- readonly achievementWood: {
23
- readonly label: "Blizzard Achievement Wood";
24
- readonly path: "Interface\\AchievementFrame\\UI-Achievement-WoodBorder";
25
- readonly edgeSize: 16;
26
- };
27
- readonly chatBubble: {
28
- readonly label: "Blizzard Chat Bubble";
29
- readonly path: "Interface\\Tooltips\\ChatBubble-Backdrop";
30
- readonly edgeSize: 16;
31
- };
32
- readonly party: {
33
- readonly label: "Blizzard Party";
34
- readonly path: "Interface\\CHARACTERFRAME\\UI-Party-Border";
35
- readonly edgeSize: 16;
36
- };
37
- };
1
+ import { borderTextures } from "../media/clientMedia";
2
+ export { borderTextures };
38
3
  export type BorderTexture = keyof typeof borderTextures | {
39
4
  path: string;
40
5
  edgeSize: number;
@@ -1,12 +1,6 @@
1
1
  --[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
2
2
  local ____exports = {}
3
- ____exports.borderTextures = {
4
- solid = {label = "Solid", path = "", edgeSize = 1},
5
- tooltip = {label = "Blizzard Tooltip", path = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16},
6
- dialog = {label = "Blizzard Dialog", path = "Interface\\DialogFrame\\UI-DialogBox-Border", edgeSize = 32},
7
- dialogGold = {label = "Blizzard Dialog Gold", path = "Interface\\DialogFrame\\UI-DialogBox-Gold-Border", edgeSize = 32},
8
- achievementWood = {label = "Blizzard Achievement Wood", path = "Interface\\AchievementFrame\\UI-Achievement-WoodBorder", edgeSize = 16},
9
- chatBubble = {label = "Blizzard Chat Bubble", path = "Interface\\Tooltips\\ChatBubble-Backdrop", edgeSize = 16},
10
- party = {label = "Blizzard Party", path = "Interface\\CHARACTERFRAME\\UI-Party-Border", edgeSize = 16}
11
- }
3
+ local ____clientMedia = require("ui.media.clientMedia")
4
+ local borderTextures = ____clientMedia.borderTextures
5
+ ____exports.borderTextures = borderTextures
12
6
  return ____exports
@@ -1,12 +1,5 @@
1
- export declare const statusBarTextures: {
2
- readonly solid: {
3
- readonly label: "Solid";
4
- readonly path: "Interface\\Buttons\\WHITE8X8";
5
- };
6
- readonly blizzard: {
7
- readonly label: "Blizzard Status Bar";
8
- readonly path: "Interface\\TargetingFrame\\UI-StatusBar";
9
- };
10
- };
11
- /** Accepts catalog names or a native/custom texture path. */
12
- export declare function resolveStatusBarTexture(texture: string): string;
1
+ export { progressTextures as statusBarTextures } from "../media/clientMedia";
2
+ /** Accepts a catalog name, a texture path, a status-bar atlas, or a numeric client file id. */
3
+ export declare function resolveStatusBarTexture(texture: string): string | number;
4
+ /** Power-bar entries from the client are atlases. A file path stays on SetStatusBarTexture. */
5
+ export declare function applyStatusBarTexture(bar: wuiraNativeStatusBar, texture: string | number): void;
@@ -1,9 +1,88 @@
1
1
  --[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
2
+ -- Lua Library inline imports
3
+ local function __TS__StringCharCodeAt(self, index)
4
+ if index ~= index then
5
+ index = 0
6
+ end
7
+ if index < 0 then
8
+ return 0 / 0
9
+ end
10
+ return string.byte(self, index + 1) or 0 / 0
11
+ end
12
+
13
+ local function __TS__Number(value)
14
+ local valueType = type(value)
15
+ if valueType == "number" then
16
+ return value
17
+ elseif valueType == "string" then
18
+ local numberValue = tonumber(value)
19
+ if numberValue then
20
+ return numberValue
21
+ end
22
+ if value == "Infinity" then
23
+ return math.huge
24
+ end
25
+ if value == "-Infinity" then
26
+ return -math.huge
27
+ end
28
+ local stringWithoutSpaces = string.gsub(value, "%s", "")
29
+ if stringWithoutSpaces == "" then
30
+ return 0
31
+ end
32
+ return 0 / 0
33
+ elseif valueType == "boolean" then
34
+ return value and 1 or 0
35
+ else
36
+ return 0 / 0
37
+ end
38
+ end
39
+ -- End of Lua Library inline imports
2
40
  local ____exports = {}
3
- ____exports.statusBarTextures = {solid = {label = "Solid", path = "Interface\\Buttons\\WHITE8X8"}, blizzard = {label = "Blizzard Status Bar", path = "Interface\\TargetingFrame\\UI-StatusBar"}}
4
- --- Accepts catalog names or a native/custom texture path.
41
+ local ____clientMedia = require("ui.media.clientMedia")
42
+ local progressTextures = ____clientMedia.progressTextures
43
+ do
44
+ local ____clientMedia = require("ui.media.clientMedia")
45
+ ____exports.statusBarTextures = ____clientMedia.progressTextures
46
+ end
47
+ local function fileId(self, value)
48
+ if #value == 0 then
49
+ return nil
50
+ end
51
+ local index = 0
52
+ while index < #value do
53
+ local code = __TS__StringCharCodeAt(value, index)
54
+ if code < 48 or code > 57 then
55
+ return nil
56
+ end
57
+ index = index + 1
58
+ end
59
+ return __TS__Number(value)
60
+ end
61
+ --- Accepts a catalog name, a texture path, a status-bar atlas, or a numeric client file id.
5
62
  function ____exports.resolveStatusBarTexture(self, texture)
6
- local preset = ____exports.statusBarTextures[texture]
7
- return preset == nil and texture or preset.path
63
+ local preset = progressTextures[texture]
64
+ if preset ~= nil then
65
+ return preset.path
66
+ end
67
+ return fileId(nil, texture) or texture
68
+ end
69
+ local function isAtlas(self, name)
70
+ if type(GetAtlasInfo) == "function" and GetAtlasInfo(name) ~= nil then
71
+ return true
72
+ end
73
+ local textures = C_Texture
74
+ return textures ~= nil and textures.GetAtlasInfo ~= nil and textures.GetAtlasInfo(name) ~= nil
75
+ end
76
+ --- Power-bar entries from the client are atlases. A file path stays on SetStatusBarTexture.
77
+ function ____exports.applyStatusBarTexture(self, bar, texture)
78
+ if type(texture) == "string" and isAtlas(nil, texture) then
79
+ bar:SetStatusBarTexture("Interface\\Buttons\\WHITE8X8")
80
+ local fill = bar:GetStatusBarTexture()
81
+ if fill ~= nil and fill.SetAtlas ~= nil then
82
+ fill:SetAtlas(texture)
83
+ end
84
+ return
85
+ end
86
+ bar:SetStatusBarTexture(texture)
8
87
  end
9
88
  return ____exports
package/lib/ui/index.d.ts CHANGED
@@ -24,8 +24,13 @@ export { ProgressBar } from "./ProgressBar";
24
24
  export { Background } from "./decorations/Background";
25
25
  export { Border } from "./decorations/Border";
26
26
  export { Glow } from "./decorations/Glow";
27
+ export { startOverlayGlow } from "./overlayGlow";
28
+ export type { OverlayGlowKind, OverlayGlowOptions } from "./overlayGlow";
27
29
  export { Tooltip } from "./decorations/Tooltip";
28
30
  export type { TooltipProps, TooltipAnchor, TooltipLine, NativeTooltip } from "./decorations/Tooltip";
31
+ export { progressTextures, backgroundTextures, borderTextures, clientFonts } from "./media/clientMedia";
32
+ export type { ClientMedia, ClientBorder } from "./media/clientMedia";
33
+ export { resolveMediaPath } from "./media/clientMedia";
29
34
  export { Label } from "./Label";
30
35
  export type { LabelProps } from "./Label";
31
36
  export { Icon } from "./Icon";
package/lib/ui/index.lua CHANGED
@@ -68,10 +68,25 @@ do
68
68
  local ____Glow = require("ui.decorations.Glow")
69
69
  ____exports.Glow = ____Glow.Glow
70
70
  end
71
+ do
72
+ local ____overlayGlow = require("ui.overlayGlow")
73
+ ____exports.startOverlayGlow = ____overlayGlow.startOverlayGlow
74
+ end
71
75
  do
72
76
  local ____Tooltip = require("ui.decorations.Tooltip")
73
77
  ____exports.Tooltip = ____Tooltip.Tooltip
74
78
  end
79
+ do
80
+ local ____clientMedia = require("ui.media.clientMedia")
81
+ ____exports.progressTextures = ____clientMedia.progressTextures
82
+ ____exports.backgroundTextures = ____clientMedia.backgroundTextures
83
+ ____exports.borderTextures = ____clientMedia.borderTextures
84
+ ____exports.clientFonts = ____clientMedia.clientFonts
85
+ end
86
+ do
87
+ local ____clientMedia = require("ui.media.clientMedia")
88
+ ____exports.resolveMediaPath = ____clientMedia.resolveMediaPath
89
+ end
75
90
  do
76
91
  local ____Label = require("ui.Label")
77
92
  ____exports.Label = ____Label.Label
@@ -1,12 +1,24 @@
1
1
  import type { FlowLayoutProps } from "../FlowLayout";
2
- /** Pure layout calculation in top-left UI coordinates. */
3
- export declare function calculateFlow(props: FlowLayoutProps & {
2
+ export interface FlowChild {
4
3
  width: number;
5
4
  height: number;
6
- }, children: readonly {
5
+ anchor?: string;
6
+ }
7
+ /** Horizontal space is columnGap. Vertical space is rowGap. Older gap and lineGap fill whichever axis is unset. */
8
+ export declare function flowSpacing(direction: string | undefined, props: {
9
+ gap?: number;
10
+ lineGap?: number;
11
+ columnGap?: number;
12
+ rowGap?: number;
13
+ }): {
14
+ main: number;
15
+ cross: number;
16
+ };
17
+ /** Pack children along one direction, then place the group and each child separately. */
18
+ export declare function calculateFlow(props: FlowLayoutProps & {
7
19
  width: number;
8
20
  height: number;
9
- }[]): {
21
+ }, children: readonly FlowChild[]): {
10
22
  x: number;
11
23
  y: number;
12
24
  }[];