@wonderlandlabs-pixi-ux/box 1.2.5 → 1.2.7

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 (112) hide show
  1. package/README.md +33 -264
  2. package/TODO.md +10 -0
  3. package/dist/BoxStore.d.ts +6 -55
  4. package/dist/BoxStore.js +48 -647
  5. package/dist/BoxStore.stories.d.ts +7 -0
  6. package/dist/BoxStore.stories.js +213 -0
  7. package/dist/ComputeAxis.d.ts +17 -0
  8. package/dist/ComputeAxis.js +202 -0
  9. package/dist/ComputeAxis.stories.d.ts +13 -0
  10. package/dist/ComputeAxis.stories.js +286 -0
  11. package/dist/_deprecated/BoxTree.d.ts +123 -0
  12. package/dist/_deprecated/BoxTree.helpers.d.ts +4 -0
  13. package/dist/_deprecated/BoxTree.helpers.js +166 -0
  14. package/dist/_deprecated/BoxTree.js +789 -0
  15. package/dist/_deprecated/BoxUx.d.ts +50 -0
  16. package/dist/_deprecated/BoxUx.js +360 -0
  17. package/dist/_deprecated/BoxUxBase.d.ts +24 -0
  18. package/dist/_deprecated/BoxUxBase.js +86 -0
  19. package/dist/_deprecated/BoxUxContextMap.d.ts +3 -0
  20. package/dist/_deprecated/BoxUxContextMap.js +10 -0
  21. package/dist/_deprecated/boxTreeRenderers.d.ts +4 -0
  22. package/dist/_deprecated/boxTreeRenderers.js +97 -0
  23. package/dist/_deprecated/constants.d.ts +86 -0
  24. package/dist/_deprecated/constants.js +131 -0
  25. package/dist/{boxTreeUx.constants.d.ts → _deprecated/constants.ux.d.ts} +6 -0
  26. package/dist/{boxTreeUx.constants.js → _deprecated/constants.ux.js} +6 -0
  27. package/dist/_deprecated/enumUtils.d.ts +1 -0
  28. package/dist/_deprecated/enumUtils.js +7 -0
  29. package/dist/_deprecated/index.d.ts +12 -0
  30. package/dist/_deprecated/index.js +11 -0
  31. package/dist/_deprecated/pathUtils.d.ts +5 -0
  32. package/dist/_deprecated/pathUtils.js +31 -0
  33. package/dist/_deprecated/pixiEnvironment.js +9 -0
  34. package/dist/_deprecated/sizeUtils.d.ts +13 -0
  35. package/dist/_deprecated/sizeUtils.js +39 -0
  36. package/dist/_deprecated/types.boxtree.d.ts +937 -0
  37. package/dist/_deprecated/types.boxtree.js +110 -0
  38. package/dist/_deprecated/types.d.ts +147 -550
  39. package/dist/_deprecated/types.js +57 -202
  40. package/dist/{types.boxtreeUx.d.ts → _deprecated/types.ux.d.ts} +0 -9
  41. package/dist/_deprecated/types.ux.js +1 -0
  42. package/dist/_deprecated/utils.ux.d.ts +13 -0
  43. package/dist/{boxTreeUx.utils.js → _deprecated/utils.ux.js} +22 -5
  44. package/dist/constants.d.ts +26 -81
  45. package/dist/constants.js +42 -126
  46. package/dist/helpers.d.ts +24 -0
  47. package/dist/helpers.js +116 -0
  48. package/dist/types.d.ts +199 -105
  49. package/dist/types.js +68 -53
  50. package/package.json +1 -1
  51. package/src/BoxStore.stories.ts +239 -0
  52. package/src/BoxStore.ts +69 -0
  53. package/src/ComputeAxis.stories.ts +319 -0
  54. package/src/ComputeAxis.ts +296 -0
  55. package/src/_deprecated/BoxTree.helpers.ts +216 -0
  56. package/src/{BoxTree.ts → _deprecated/BoxTree.ts} +201 -278
  57. package/src/{boxTreeRenderers.ts → _deprecated/boxTreeRenderers.ts} +2 -47
  58. package/src/_deprecated/constants.ts +153 -0
  59. package/src/{sizeUtils.ts → _deprecated/sizeUtils.ts} +9 -1
  60. package/src/_deprecated/types.ts +138 -0
  61. package/src/constants.ts +46 -144
  62. package/src/helpers.ts +162 -0
  63. package/src/types.ts +113 -74
  64. package/test/ComputeAxis.test.ts +168 -0
  65. package/test/helpers.test.ts +76 -0
  66. package/test.zip +0 -0
  67. package/tsconfig.json +2 -1
  68. package/dist/Box.stories.d.ts +0 -15
  69. package/dist/Box.stories.js +0 -103
  70. package/dist/BoxLeafStore.d.ts +0 -7
  71. package/dist/BoxLeafStore.js +0 -9
  72. package/dist/BoxListStore.d.ts +0 -7
  73. package/dist/BoxListStore.js +0 -10
  74. package/dist/BoxRenderContentMap.d.ts +0 -26
  75. package/dist/BoxRenderContentMap.js +0 -97
  76. package/dist/BoxTextStore.d.ts +0 -10
  77. package/dist/BoxTextStore.js +0 -6
  78. package/dist/BoxTreeRenderer.d.ts +0 -47
  79. package/dist/BoxTreeRenderer.js +0 -339
  80. package/dist/ProductCatalog.stories.d.ts +0 -10
  81. package/dist/ProductCatalog.stories.js +0 -221
  82. package/dist/_deprecated/Box.stories.d.ts +0 -15
  83. package/dist/_deprecated/Box.stories.js +0 -103
  84. package/dist/_deprecated/BoxLeafStore.d.ts +0 -7
  85. package/dist/_deprecated/BoxLeafStore.js +0 -9
  86. package/dist/_deprecated/BoxListStore.d.ts +0 -7
  87. package/dist/_deprecated/BoxListStore.js +0 -10
  88. package/dist/_deprecated/BoxStore.d.ts +0 -56
  89. package/dist/_deprecated/BoxStore.js +0 -654
  90. package/dist/_deprecated/BoxTextStore.d.ts +0 -10
  91. package/dist/_deprecated/BoxTextStore.js +0 -6
  92. package/dist/_deprecated/ProductCatalog.stories.d.ts +0 -10
  93. package/dist/_deprecated/ProductCatalog.stories.js +0 -222
  94. package/dist/boxTreeUx.utils.d.ts +0 -5
  95. package/dist/measurement.d.ts +0 -41
  96. package/dist/measurement.js +0 -52
  97. package/test/BoxTree.test.ts +0 -958
  98. package/test/BoxUx.test.ts +0 -436
  99. package/test/boxTreeRenderers.test.ts +0 -80
  100. package/test/sizeUtils.test.ts +0 -132
  101. /package/dist/{types.boxtreeUx.js → _deprecated/pixiEnvironment.d.ts} +0 -0
  102. /package/src/{BoxUx.ts → _deprecated/BoxUx.ts} +0 -0
  103. /package/src/{BoxUxBase.ts → _deprecated/BoxUxBase.ts} +0 -0
  104. /package/src/{BoxUxContextMap.ts → _deprecated/BoxUxContextMap.ts} +0 -0
  105. /package/src/{constants.ux.ts → _deprecated/constants.ux.ts} +0 -0
  106. /package/src/{enumUtils.ts → _deprecated/enumUtils.ts} +0 -0
  107. /package/src/{index.ts → _deprecated/index.ts} +0 -0
  108. /package/src/{pathUtils.ts → _deprecated/pathUtils.ts} +0 -0
  109. /package/src/{pixiEnvironment.ts → _deprecated/pixiEnvironment.ts} +0 -0
  110. /package/src/{types.boxtree.ts → _deprecated/types.boxtree.ts} +0 -0
  111. /package/src/{types.ux.ts → _deprecated/types.ux.ts} +0 -0
  112. /package/src/{utils.ux.ts → _deprecated/utils.ux.ts} +0 -0
package/README.md CHANGED
@@ -1,284 +1,53 @@
1
1
  # @wonderlandlabs-pixi-ux/box
2
2
 
3
- Tree-first box layout model / graphic DSL built on Forestry branches.
4
- This emulates FlexBox based layout. This module is a data-model of a flex layout system.
5
- It was designed for Pixi; however, as an abstract DSL for visual trees it may have other uses.
3
+ `box` is a small parent-driven layout model for rectangular children.
6
4
 
7
- ## Installation
5
+ The current implementation is centered around:
8
6
 
9
- ```bash
10
- yarn add @wonderlandlabs-pixi-ux/box
11
- ```
7
+ - [`BoxStore`](/Users/bingomanatee/Documents/repos/wonderlandlabs-pixi-ux/packages/box/src/BoxStore.ts)
8
+ - [`ComputeAxis`](/Users/bingomanatee/Documents/repos/wonderlandlabs-pixi-ux/packages/box/src/ComputeAxis.ts)
12
9
 
13
- ## Basic Usage
10
+ ## Current Model
14
11
 
15
- ```ts
16
- import {
17
- ALIGN,
18
- BoxTree,
19
- UNIT_BASIS,
20
- } from '@wonderlandlabs-pixi-ux/box';
12
+ - The parent owns alignment.
13
+ - Children provide dimensions.
14
+ - Child `x` / `y` are not part of the happy-path alignment flow.
15
+ - Width and height are computed from the parent container.
16
+ - All units are relative to the parent in the dimension they address.
21
17
 
22
- const layout = new BoxTree({
23
- id: 'root',
24
- styleName: 'button',
25
- globalVerb: [],
26
- area: {
27
- x: 60,
28
- y: 50,
29
- width: { mode: UNIT_BASIS.PX, value: 720 },
30
- height: { mode: UNIT_BASIS.PX, value: 340 },
31
- px: 's',
32
- py: 's',
33
- },
34
- align: {
35
- x: ALIGN.START,
36
- y: ALIGN.START,
37
- direction: 'column',
38
- },
39
- children: {
40
- header: {
41
- styleName: 'header',
42
- area: {
43
- x: 0,
44
- y: 0,
45
- width: { mode: UNIT_BASIS.PERCENT, value: 1 },
46
- height: { mode: UNIT_BASIS.PX, value: 60 },
47
- px: 's',
48
- py: 's',
49
- },
50
- align: { x: 's', y: 's', direction: 'row' },
51
- },
52
- icon: {
53
- styleName: 'icon',
54
- modeVerb: ['hover'],
55
- area: {
56
- x: 0,
57
- y: 0,
58
- width: { mode: UNIT_BASIS.PX, value: 24 },
59
- height: { mode: UNIT_BASIS.PX, value: 24 },
60
- px: 's',
61
- py: 's',
62
- },
63
- align: { x: 's', y: 's', direction: 'column' },
64
- },
65
- },
66
- });
18
+ That means:
67
19
 
68
- const icon = layout.getChild('icon');
69
- icon?.toggleModeVerb('selected');
70
- layout.toggleGlobalVerb('disabled');
71
- ```
20
+ - width-like values resolve against the parent width
21
+ - height-like values resolve against the parent height
22
+ - percent values are always percentages of the parent dimension
23
+ - absolute pixel values are still interpreted within the parent container
72
24
 
73
- ## Ux Assignment
25
+ ## Flow
74
26
 
75
- `BoxTree` defaults to the built-in Pixi UX map. Override with `assignUx(ux, applyToChildren?)`:
27
+ The current layout pass is:
76
28
 
77
- ```ts
78
- import { BoxUxPixi } from '@wonderlandlabs-pixi-ux/box';
29
+ 1. Resolve the main-axis spans for the children.
30
+ 2. Complete unresolved fractional spans.
31
+ 3. Place children from the parent alignment and the resolved spans.
79
32
 
80
- layout.styles = styles;
81
- layout.assignUx((box) => new BoxUxPixi(box));
82
- layout.render(); // calls ux.init() once, then ux.render()
83
- ```
33
+ `ComputeAxis` currently handles the green path for:
84
34
 
85
- `addChild()` inherits the parent UX map function automatically.
35
+ - absolute pixel dimensions
36
+ - percentage dimensions
37
+ - parent-owned start / center / end alignment
86
38
 
87
- Constructor shortcut:
39
+ ## Status
88
40
 
89
- ```ts
90
- const layout = new BoxTree({
91
- id: 'root',
92
- area: { x: 0, y: 0, width: 200, height: 100 },
93
- ux: (box) => new BoxUxPixi(box),
94
- });
95
- layout.styles = styles;
96
- ```
41
+ This package is mid-refactor.
97
42
 
98
- ## Style Definitions
43
+ The active architecture is the simplified `BoxStore` / `ComputeAxis` path in `src/`.
44
+ Older `BoxTree`-style code still exists under [`src/_deprecated`](/Users/bingomanatee/Documents/repos/wonderlandlabs-pixi-ux/packages/box/src/_deprecated), but it is not the current direction.
99
45
 
100
- `BoxTree` integrates with a shared style manager by way of `styleName` and verbs:
46
+ ## Test Artifacts
101
47
 
102
- - `styleName` is the noun for that node (`button`, `icon`, `label`, ...)
103
- - `modeVerb` is node-local state (`hover`, `selected`, ...)
104
- - `globalVerb` is root-level state shared by all descendants (`disabled`, ...)
48
+ The `ComputeAxis` tests generate:
105
49
 
106
- Use `resolveStyle(styleManager, extraStates?)` to query styles. Resolution order is:
50
+ - SVG diagrams for layout inspection
51
+ - HTML tables for readable scenario metadata
107
52
 
108
- 1. Hierarchical nouns (`button.icon`, `toolbar.button.label`, ...)
109
- 2. Fallback to atomic noun (`icon`, `label`, ...)
110
-
111
- Combined state list is:
112
-
113
- - `globalVerb + modeVerb + extraStates`
114
-
115
- ```ts
116
- import { fromJSON } from '@wonderlandlabs-pixi-ux/style-tree';
117
-
118
- const styles = fromJSON({
119
- button: {
120
- icon: {
121
- fill: {
122
- $*: { color: { r: 0.2, g: 0.2, b: 0.2 }, alpha: 1 },
123
- $disabled: { color: { r: 0.45, g: 0.45, b: 0.45 }, alpha: 1 },
124
- },
125
- },
126
- },
127
- icon: {
128
- fill: {
129
- $*: { color: { r: 1, g: 1, b: 1 }, alpha: 1 },
130
- },
131
- },
132
- });
133
-
134
- const icon = layout.getChild('icon');
135
- const fillStyle = icon?.resolveStyle(styles, ['pressed']);
136
- ```
137
-
138
- ## Default Ux
139
-
140
- `box` ships with `BoxUxPixi`, a default Pixi UX implementation for `BoxTree`.
141
-
142
- Behavior:
143
-
144
- - Creates a container when `container` is not provided
145
- - Uses public `content: MapEnhanced` (a `Map<string, unknown>` subclass)
146
- - `content.$box` points at the owning `BoxTree`
147
- - Exposes `ux.getContainer(key): unknown` for renderer-to-renderer handoff:
148
- - `ROOT_CONTAINER`, `BACKGROUND_CONTAINER`, `CHILD_CONTAINER`, `CONTENT_CONTAINER`, `OVERLAY_CONTAINER`, `STROKE_CONTAINER`
149
- - Exposes `ux.attach(targetContainer?)`:
150
- - attaches root container to `targetContainer`
151
- - if omitted, uses `ux.app?.stage`
152
- - Pre-populates built-in layers if absent:
153
- - `BOX_RENDER_CONTENT_ORDER.BACKGROUND = 0`
154
- - `BOX_RENDER_CONTENT_ORDER.CHILDREN = 50`
155
- - `BOX_RENDER_CONTENT_ORDER.CONTENT = 75`
156
- - `BOX_RENDER_CONTENT_ORDER.OVERLAY = 100`
157
- - Supports named layer order lookups:
158
- - `BOX_UX_ORDER` (`ReadonlyMap<string, number>`)
159
- - `setUxOrder(name, zIndex)` with duplicate z-index protection
160
- - `getUxOrder(name)` for safe lookup
161
- - Rebuilds children layer each render by clearing and re-adding child UX containers
162
- - Draws a background graphic from style props:
163
- - `[stylePath].bgColor`
164
- - `[stylePath].bgAlpha`
165
- - `[stylePath].bgStrokeColor`
166
- - `[stylePath].bgStrokeAlpha`
167
- - `[stylePath].bgStrokeSize`
168
- - Exposes `ux.generateStyleMap(box)` with normalized shape:
169
- - `fill: { color, alpha }`
170
- - `stroke: { color, alpha, width }`
171
- - Honors `box.isVisible`:
172
- - when `false`, detaches (hides) the container without destroying render content
173
- - when `true` again, existing layers are reused on next render
174
- - Iterates `content` and injects non-empty items into root container sorted by each item's `zIndex`
175
-
176
- ```ts
177
- import { Graphics } from 'pixi.js';
178
- import {
179
- BOX_RENDER_CONTENT_ORDER,
180
- BoxTree,
181
- BoxUxPixi,
182
- } from '@wonderlandlabs-pixi-ux/box';
183
- import { fromJSON } from '@wonderlandlabs-pixi-ux/style-tree';
184
-
185
- const styles = fromJSON({
186
- button: {
187
- bgColor: { $*: 0x2d3a45 },
188
- bgStrokeColor: { $*: 0x8fd3ff },
189
- bgStrokeSize: { $*: 2 },
190
- icon: {
191
- bgColor: { $*: 0x3a4957 },
192
- },
193
- },
194
- icon: {
195
- bgColor: { $*: 0x222222 },
196
- },
197
- });
198
-
199
- const root = new BoxTree({
200
- id: 'root',
201
- styleName: 'button',
202
- area: { x: 40, y: 30, width: 200, height: 100 },
203
- children: {
204
- icon: {
205
- styleName: 'icon',
206
- order: 0,
207
- area: { width: 24, height: 24 },
208
- },
209
- },
210
- });
211
-
212
- root.styles = styles;
213
- const ux = new BoxUxPixi(root);
214
- root.render();
215
- // manual mount
216
- ux.attach(app.stage);
217
-
218
- // custom content layer example:
219
- const custom = new Graphics();
220
- custom.zIndex = 76;
221
- custom.visible = true;
222
- ux.content.set('CUSTOM', custom);
223
- ux.content.get('OVERLAY')?.visible = true;
224
- const ownerBox = ux.content.$box;
225
- ```
226
-
227
- ## Override Points
228
-
229
- `BoxUxBase` is the renderer-agnostic lifecycle base (`init`, `render`, `clear`, visible up/down flow).
230
- `BoxUxPixi` extends `BoxUxBase` and provides the Pixi-specific containers/graphics behavior.
231
-
232
- For custom behavior, return your own UX instance from `assignUx((box) => ...)`, either:
233
-
234
- - extending `BoxUxBase` for a new renderer, or
235
- - extending `BoxUxPixi` for Pixi-specific customization.
236
-
237
- Detailed style/composition docs:
238
-
239
- - [`README.STYLES.md`](./README.STYLES.md)
240
-
241
- ## Optional Pixi Debug Rendering
242
-
243
- If you just want geometry previews, you can use `boxTreeToPixi`:
244
-
245
- ```ts
246
- import { boxTreeToPixi } from '@wonderlandlabs-pixi-ux/box';
247
-
248
- const graphics = await boxTreeToPixi(layout, {
249
- includeRoot: true,
250
- fill: 0x2d3a45,
251
- fillAlpha: 0.35,
252
- stroke: 0x8fd3ff,
253
- strokeAlpha: 0.9,
254
- strokeWidth: 2,
255
- });
256
- ```
257
-
258
- ## Public API
259
-
260
- - `BoxTree`
261
- - `BoxUx` (UX object type)
262
- - `BoxUxMapFn`
263
- - `BoxRenderer` (legacy alias of `BoxUx`)
264
- - `BoxRenderMapFn` (legacy alias of `BoxUxMapFn`)
265
- - `MapEnhanced`
266
- - `BoxUxBase`
267
- - `BoxUxPixi`
268
- - `BoxTreeRenderer` (legacy alias of `BoxUxPixi`)
269
- - `BOX_UX_ORDER`, `getUxOrder`, `setUxOrder`
270
- - `BOX_RENDER_CONTENT_ORDER`
271
- - `createBoxTreeState`
272
- - `resolveTreeMeasurement`
273
- - `resolveMeasurementPx`
274
- - `resolveConstraintValuePx`
275
- - `applyAxisConstraints`
276
- - `boxTreeToPixi`
277
- - `boxTreeToSvg`
278
- - `pathToString`, `pathString`, `combinePaths`
279
- - `ALIGN`, `AXIS`, `UNIT_BASIS`, `SIZE_MODE`, `SIZE_MODE_INPUT`
280
- - `TreeStyleNameSchema`, `TreeVerbSchema`, `TreeVerbListSchema`
281
-
282
- ## Data Model
283
-
284
- Use exported BoxTree schemas/types in `src/types.boxtree.ts` and measurement schemas in `src/types.ts` as the source of truth.
53
+ These artifacts are written under [`packages/box/test/artifacts`](/Users/bingomanatee/Documents/repos/wonderlandlabs-pixi-ux/packages/box/test/artifacts) and are ignored by the package-level `.gitignore`.
package/TODO.md ADDED
@@ -0,0 +1,10 @@
1
+ # TODO
2
+
3
+ - Achieve recursive layout so each child can compute and apply layout to its own children.
4
+ - use Immer/diff to only recompute the children that have changed or the children of changed nodes.
5
+ - Properly compute fractional dimensions on the main axis.
6
+ - Replace the current no-op fractional completion step with remainder distribution across unresolved spans.
7
+ - Decide how overflow should resolve when content exceeds the parent container:
8
+ squash content to fit, crop content to the container, or allow overflow without intervention.
9
+ - Consider adding min/max sizing constraints, especially if fractional sizing makes alignment too inert.
10
+ - Keep the parent-owned alignment model strict: children define dimensions, parents place them.
@@ -1,56 +1,7 @@
1
- import { StoreParams } from '@wonderlandlabs/forestry4';
2
- import { TickerForest } from '@wonderlandlabs-pixi-ux/ticker-forest';
3
- import { Application, Container, Graphics, Text, type ContainerOptions, type Sprite, type TextStyleOptions } from 'pixi.js';
4
- import type { AxisDef, BaseBoxConfig, BoxProps, BoxState, BoxStyle, ContentArea, Padding, RgbColor } from './types';
5
- export declare class BoxStore extends TickerForest<BoxState> {
6
- #private;
7
- readonly id: string;
8
- protected _container: Container;
9
- protected _background: Graphics;
10
- protected _contentContainer: Container;
11
- maskGraphics: Graphics;
12
- protected _boxProps: BoxProps;
13
- constructor(configOrParams: BaseBoxConfig | StoreParams<BoxState>, app: Application, boxProps?: BoxProps, rootProps?: ContainerOptions);
14
- get container(): Container;
15
- get contentContainer(): Container;
16
- get rect(): {
17
- x: number;
18
- y: number;
19
- width: number;
20
- height: number;
21
- };
22
- get xDef(): AxisDef;
23
- get yDef(): AxisDef;
24
- get children(): readonly BoxStore[];
25
- get style(): BoxStyle | undefined;
26
- setStyle(style: Partial<BoxStyle>): void;
27
- get gap(): number;
28
- setGap(gap: number): void;
29
- get direction(): 'horizontal' | 'vertical';
30
- setDirection(direction: 'horizontal' | 'vertical'): void;
31
- get gapMode(): 'between' | 'before' | 'after' | 'all';
32
- setGapMode(gapMode: 'between' | 'before' | 'after' | 'all'): void;
33
- get text(): string;
34
- get textDisplay(): Text | null;
35
- setText(text: string): void;
36
- setTextStyle(style: TextStyleOptions): void;
37
- setPadding(padding: Partial<Padding>): void;
38
- setPosition(x: number, y: number): void;
39
- setSize(width: number, height: number): void;
40
- getContentArea(): ContentArea;
41
- setContent(content: Graphics | Sprite | Text | Container | null): void;
42
- get content(): Graphics | Sprite | Text | Container | null;
43
- addChild(config: BaseBoxConfig): BoxStore;
44
- removeChild(childOrId: string | BoxStore): void;
45
- getChild(id: string): BoxStore | undefined;
46
- toConfig(): BaseBoxConfig;
47
- protected _rgbToNumber(rgb: RgbColor): number;
48
- protected _renderBackground(): void;
49
- protected _updateMask(): void;
50
- protected _updateContentPosition(): void;
51
- protected isDirty(): boolean;
52
- protected clearDirty(): void;
53
- markDirty(): void;
54
- protected resolve(): void;
55
- cleanup(): void;
1
+ import { Forest } from '@wonderlandlabs/forestry4';
2
+ import type { BoxCellType, RectPXType } from './types.js';
3
+ export declare class BoxStore extends Forest<BoxCellType> {
4
+ update(): void;
5
+ get location(): RectPXType;
6
+ alignChildren(): void;
56
7
  }