@mintplayer/ng-bootstrap 21.25.0 → 21.26.0

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mintplayer/ng-bootstrap",
3
3
  "private": false,
4
- "version": "21.25.0",
4
+ "version": "21.26.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/MintPlayer/mintplayer-ng-bootstrap",
@@ -114,6 +114,7 @@ declare class MintDockManagerElement extends LitElement {
114
114
  private cornerSnapXTargets;
115
115
  private cornerSnapYTargets;
116
116
  private showSnapMarkers;
117
+ debugLayoutIntegrity: boolean;
117
118
  private renderSnapMarkersForCorner;
118
119
  private clearSnapMarkers;
119
120
  private pendingDragEndTimeout;
@@ -275,8 +276,6 @@ declare class MintDockManagerElement extends LitElement {
275
276
  private getNodeAtPath;
276
277
  private resolveSplitNode;
277
278
  private replaceNodeInTree;
278
- private cleanupEmptyStackInTree;
279
- private cleanupSplitIfNecessary;
280
279
  private dockNodeBeside;
281
280
  private forEachStack;
282
281
  private findStackContainingPane;
@@ -294,12 +293,42 @@ declare class MintDockManagerElement extends LitElement {
294
293
  private removePaneFromLocation;
295
294
  private addPaneToLocation;
296
295
  private setActivePaneForLocation;
297
- private cleanupLocation;
298
296
  private reorderPaneInLocation;
299
297
  private removeFloatingAt;
300
298
  private removePaneFromFloating;
301
299
  private normalizeSizesArray;
302
300
  private normalizeSplitNode;
301
+ /**
302
+ * Bottom-up layout sanitizer. Returns a normalized version of `node` where:
303
+ * - Empty stacks (panes.length === 0) are dropped (returned as null).
304
+ * - A stack's `activePane` is repaired if it no longer references one of `panes`.
305
+ * - Splits whose direction matches a child split are flattened, with sizes
306
+ * combined multiplicatively so the resulting on-screen pixel layout is
307
+ * identical to the pre-merge one.
308
+ * - Splits with 0 children become null. Splits with 1 child are unwrapped.
309
+ *
310
+ * Idempotent: passing the result back through this method yields the same
311
+ * structure. Mutates the input tree in place but only returns nodes that
312
+ * remain part of the layout.
313
+ */
314
+ private normalizeLayoutNode;
315
+ /**
316
+ * Apply `normalizeLayoutNode` to `rootLayout` and every floating window's
317
+ * root, drop floating windows whose root collapses to null, and repair
318
+ * stale `activePane` references on each floating window. Run this at the
319
+ * end of every public mutation entry point (drop handlers, layout setter,
320
+ * pane removal) so the tree the renderer sees is always in canonical form.
321
+ */
322
+ private normalizeAllLayouts;
323
+ /**
324
+ * Dev-mode integrity guard: walks every pane referenced by the current
325
+ * layout and asserts that the rendered shadow DOM contains a matching
326
+ * `<slot name="${pane}">`. A missing slot means the layout tree got into
327
+ * a state the renderer can't display — typically a missed normalize() call
328
+ * or a render bug. Opt in via the `debug-layout-integrity` attribute or
329
+ * the `debugLayoutIntegrity` property; off by default.
330
+ */
331
+ private verifyProjectionSlots;
303
332
  private dispatchLayoutChanged;
304
333
  private cloneLayoutNode;
305
334
  private cloneFloatingArray;
@@ -307,6 +336,14 @@ declare class MintDockManagerElement extends LitElement {
307
336
 
308
337
  declare class BsDockManagerComponent implements AfterViewInit {
309
338
  readonly layout: _angular_core.InputSignal<DockLayoutNode | DockLayout | null>;
339
+ /**
340
+ * Dev-mode integrity guard. When `true`, the inner web component throws
341
+ * after each render if any registered pane has no projection slot in the
342
+ * shadow DOM — a signal that the layout tree got corrupted. Off by default;
343
+ * enable in development to catch layout-logic bugs loudly.
344
+ */
345
+ readonly debugLayoutIntegrity: _angular_core.InputSignal<boolean>;
346
+ protected readonly debugLayoutIntegrityAttr: _angular_core.Signal<"" | null>;
310
347
  get layoutSnapshot(): DockLayoutSnapshot | null;
311
348
  readonly layoutChange: _angular_core.OutputEmitterRef<DockLayoutSnapshot | null>;
312
349
  readonly layoutSnapshotChange: _angular_core.OutputEmitterRef<DockLayoutSnapshot>;
@@ -324,7 +361,7 @@ declare class BsDockManagerComponent implements AfterViewInit {
324
361
  private stringifyLayout;
325
362
  private cloneLayout;
326
363
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BsDockManagerComponent, never>;
327
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsDockManagerComponent, "bs-dock-manager", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; }, { "layoutChange": "layoutChange"; "layoutSnapshotChange": "layoutSnapshotChange"; }, ["panes"], never, true, never>;
364
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BsDockManagerComponent, "bs-dock-manager", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "debugLayoutIntegrity": { "alias": "debugLayoutIntegrity"; "required": false; "isSignal": true; }; }, { "layoutChange": "layoutChange"; "layoutSnapshotChange": "layoutSnapshotChange"; }, ["panes"], never, true, never>;
328
365
  }
329
366
 
330
367
  export { BsDockManagerComponent, BsDockPaneComponent, MintDockManagerElement };