@mintplayer/ng-bootstrap 21.25.0 → 21.27.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/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs +272 -380
- package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +147 -81
- package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
- package/package.json +1 -1
- package/types/mintplayer-ng-bootstrap-color-picker.d.ts +72 -63
- package/types/mintplayer-ng-bootstrap-dock.d.ts +41 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, viewChild, TemplateRef, ChangeDetectionStrategy, Component, output, signal, contentChildren, inject, effect, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
2
|
+
import { input, viewChild, TemplateRef, ChangeDetectionStrategy, Component, computed, output, signal, contentChildren, inject, effect, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
3
3
|
import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
|
|
4
4
|
import { html, unsafeCSS, LitElement } from 'lit';
|
|
5
5
|
import '@mintplayer/ng-bootstrap/web-components/tab-control';
|
|
@@ -428,7 +428,7 @@ class MintDockManagerElement extends LitElement {
|
|
|
428
428
|
}
|
|
429
429
|
}
|
|
430
430
|
static get observedAttributes() {
|
|
431
|
-
return [...(super.observedAttributes ?? []), 'layout'];
|
|
431
|
+
return [...(super.observedAttributes ?? []), 'layout', 'debug-layout-integrity'];
|
|
432
432
|
}
|
|
433
433
|
static { this.instanceCounter = 0; }
|
|
434
434
|
// Touch tab-drag gesture: a finger that lands on a tab header must be able
|
|
@@ -517,6 +517,11 @@ class MintDockManagerElement extends LitElement {
|
|
|
517
517
|
this.cornerSnapYTargets = [];
|
|
518
518
|
// Debug: render snap markers while dragging
|
|
519
519
|
this.showSnapMarkers = false;
|
|
520
|
+
// Debug: assert every pane has a projection slot in shadow DOM after each
|
|
521
|
+
// render. Off by default so production hosts pay no overhead; demo enables
|
|
522
|
+
// it via the `debug-layout-integrity` attribute to catch layout-tree bugs
|
|
523
|
+
// loudly during development.
|
|
524
|
+
this.debugLayoutIntegrity = false;
|
|
520
525
|
this.pendingDragEndTimeout = null;
|
|
521
526
|
this.previousSplitSizes = new Map();
|
|
522
527
|
this.instanceId = `mint-dock-${++MintDockManagerElement.instanceCounter}`;
|
|
@@ -631,6 +636,9 @@ class MintDockManagerElement extends LitElement {
|
|
|
631
636
|
this.clearSnapMarkers();
|
|
632
637
|
}
|
|
633
638
|
}
|
|
639
|
+
else if (name === 'debug-layout-integrity') {
|
|
640
|
+
this.debugLayoutIntegrity = !(newValue === null || newValue === 'false' || newValue === '0');
|
|
641
|
+
}
|
|
634
642
|
}
|
|
635
643
|
get layout() {
|
|
636
644
|
return {
|
|
@@ -673,6 +681,9 @@ class MintDockManagerElement extends LitElement {
|
|
|
673
681
|
this.rootLayout = this.cloneLayoutNode(snapshot.root);
|
|
674
682
|
this.floatingLayouts = this.cloneFloatingArray(snapshot.floating);
|
|
675
683
|
this.titles = snapshot.titles ? { ...snapshot.titles } : {};
|
|
684
|
+
// Sanitize whatever the host fed us: empty stacks, 0/1-child splits, and
|
|
685
|
+
// nested same-direction splits get pruned/flattened before we render.
|
|
686
|
+
this.normalizeAllLayouts();
|
|
676
687
|
this.renderLayout();
|
|
677
688
|
}
|
|
678
689
|
/**
|
|
@@ -756,6 +767,7 @@ class MintDockManagerElement extends LitElement {
|
|
|
756
767
|
// wired up in firstUpdated (rootResizeObserver, dockedMutationObserver,
|
|
757
768
|
// and delegated 'resizing' / 'resize-end' events). The MutationObserver
|
|
758
769
|
// on dockedEl fires when the renderNode subtree above is appended.
|
|
770
|
+
this.verifyProjectionSlots();
|
|
759
771
|
}
|
|
760
772
|
renderNode(node, path, floatingIndex) {
|
|
761
773
|
if (node.kind === 'split') {
|
|
@@ -2735,16 +2747,14 @@ class MintDockManagerElement extends LitElement {
|
|
|
2735
2747
|
if (!source) {
|
|
2736
2748
|
return;
|
|
2737
2749
|
}
|
|
2738
|
-
|
|
2750
|
+
this.removePaneFromLocation(source, pane, true);
|
|
2739
2751
|
const newRoot = {
|
|
2740
2752
|
kind: 'stack',
|
|
2741
2753
|
panes: [pane],
|
|
2742
2754
|
activePane: pane,
|
|
2743
2755
|
};
|
|
2744
2756
|
this.rootLayout = newRoot;
|
|
2745
|
-
|
|
2746
|
-
this.cleanupLocation(source);
|
|
2747
|
-
}
|
|
2757
|
+
this.normalizeAllLayouts();
|
|
2748
2758
|
this.renderLayout();
|
|
2749
2759
|
this.dispatchLayoutChanged();
|
|
2750
2760
|
if (this.dragState) {
|
|
@@ -2760,6 +2770,7 @@ class MintDockManagerElement extends LitElement {
|
|
|
2760
2770
|
return;
|
|
2761
2771
|
}
|
|
2762
2772
|
this.reorderPaneInLocation(source, pane);
|
|
2773
|
+
this.normalizeAllLayouts();
|
|
2763
2774
|
this.renderLayout();
|
|
2764
2775
|
this.dispatchLayoutChanged();
|
|
2765
2776
|
if (this.dragState) {
|
|
@@ -2767,13 +2778,11 @@ class MintDockManagerElement extends LitElement {
|
|
|
2767
2778
|
}
|
|
2768
2779
|
return;
|
|
2769
2780
|
}
|
|
2770
|
-
|
|
2781
|
+
this.removePaneFromLocation(source, pane, true);
|
|
2771
2782
|
if (zone === 'center') {
|
|
2772
2783
|
this.addPaneToLocation(target, pane);
|
|
2773
2784
|
this.setActivePaneForLocation(target, pane);
|
|
2774
|
-
|
|
2775
|
-
this.cleanupLocation(source);
|
|
2776
|
-
}
|
|
2785
|
+
this.normalizeAllLayouts();
|
|
2777
2786
|
this.renderLayout();
|
|
2778
2787
|
this.dispatchLayoutChanged();
|
|
2779
2788
|
if (this.dragState) {
|
|
@@ -2792,9 +2801,7 @@ class MintDockManagerElement extends LitElement {
|
|
|
2792
2801
|
else {
|
|
2793
2802
|
const floating = this.floatingLayouts[target.index];
|
|
2794
2803
|
if (!floating) {
|
|
2795
|
-
|
|
2796
|
-
this.cleanupLocation(source);
|
|
2797
|
-
}
|
|
2804
|
+
this.normalizeAllLayouts();
|
|
2798
2805
|
this.renderLayout();
|
|
2799
2806
|
this.dispatchLayoutChanged();
|
|
2800
2807
|
return;
|
|
@@ -2802,9 +2809,7 @@ class MintDockManagerElement extends LitElement {
|
|
|
2802
2809
|
floating.root = this.dockNodeBeside(floating.root, target.node, newStack, zone);
|
|
2803
2810
|
floating.activePane = pane;
|
|
2804
2811
|
}
|
|
2805
|
-
|
|
2806
|
-
this.cleanupLocation(source);
|
|
2807
|
-
}
|
|
2812
|
+
this.normalizeAllLayouts();
|
|
2808
2813
|
this.renderLayout();
|
|
2809
2814
|
this.dispatchLayoutChanged();
|
|
2810
2815
|
if (this.dragState) {
|
|
@@ -2822,6 +2827,7 @@ class MintDockManagerElement extends LitElement {
|
|
|
2822
2827
|
if (!target && targetPath.type === 'docked' && !this.rootLayout) {
|
|
2823
2828
|
this.rootLayout = this.cloneLayoutNode(source.root);
|
|
2824
2829
|
this.removeFloatingAt(sourceIndex);
|
|
2830
|
+
this.normalizeAllLayouts();
|
|
2825
2831
|
this.renderLayout();
|
|
2826
2832
|
this.dispatchLayoutChanged();
|
|
2827
2833
|
return true;
|
|
@@ -2847,6 +2853,7 @@ class MintDockManagerElement extends LitElement {
|
|
|
2847
2853
|
this.setActivePaneForLocation(target, activePane);
|
|
2848
2854
|
}
|
|
2849
2855
|
this.removeFloatingAt(sourceIndex);
|
|
2856
|
+
this.normalizeAllLayouts();
|
|
2850
2857
|
this.renderLayout();
|
|
2851
2858
|
this.dispatchLayoutChanged();
|
|
2852
2859
|
return true;
|
|
@@ -2859,12 +2866,14 @@ class MintDockManagerElement extends LitElement {
|
|
|
2859
2866
|
floating.root = this.dockNodeBeside(floating.root, target.node, source.root, zone);
|
|
2860
2867
|
floating.activePane = source.activePane ?? this.findFirstPaneName(source.root) ?? undefined;
|
|
2861
2868
|
this.removeFloatingAt(sourceIndex);
|
|
2869
|
+
this.normalizeAllLayouts();
|
|
2862
2870
|
this.renderLayout();
|
|
2863
2871
|
this.dispatchLayoutChanged();
|
|
2864
2872
|
return true;
|
|
2865
2873
|
}
|
|
2866
2874
|
this.rootLayout = this.dockNodeBeside(this.rootLayout, target.node, source.root, zone);
|
|
2867
2875
|
this.removeFloatingAt(sourceIndex);
|
|
2876
|
+
this.normalizeAllLayouts();
|
|
2868
2877
|
this.renderLayout();
|
|
2869
2878
|
this.dispatchLayoutChanged();
|
|
2870
2879
|
return true;
|
|
@@ -2902,7 +2911,7 @@ class MintDockManagerElement extends LitElement {
|
|
|
2902
2911
|
if (skipCleanup) {
|
|
2903
2912
|
return true;
|
|
2904
2913
|
}
|
|
2905
|
-
this.
|
|
2914
|
+
this.normalizeAllLayouts();
|
|
2906
2915
|
return true;
|
|
2907
2916
|
}
|
|
2908
2917
|
findParentSplit(node, child) {
|
|
@@ -3275,48 +3284,6 @@ class MintDockManagerElement extends LitElement {
|
|
|
3275
3284
|
this.normalizeSplitNode(parentInfo.parent);
|
|
3276
3285
|
return root;
|
|
3277
3286
|
}
|
|
3278
|
-
cleanupEmptyStackInTree(root, stack) {
|
|
3279
|
-
if (!root || stack.panes.length > 0) {
|
|
3280
|
-
return root;
|
|
3281
|
-
}
|
|
3282
|
-
const parentInfo = this.findParentSplit(root, stack);
|
|
3283
|
-
if (!parentInfo) {
|
|
3284
|
-
return root === stack ? null : root;
|
|
3285
|
-
}
|
|
3286
|
-
const parent = parentInfo.parent;
|
|
3287
|
-
const index = parent.children.indexOf(stack);
|
|
3288
|
-
if (index === -1) {
|
|
3289
|
-
return root;
|
|
3290
|
-
}
|
|
3291
|
-
parent.children.splice(index, 1);
|
|
3292
|
-
if (Array.isArray(parent.sizes)) {
|
|
3293
|
-
parent.sizes.splice(index, 1);
|
|
3294
|
-
}
|
|
3295
|
-
this.normalizeSplitNode(parent);
|
|
3296
|
-
return this.cleanupSplitIfNecessary(root, parent);
|
|
3297
|
-
}
|
|
3298
|
-
cleanupSplitIfNecessary(root, split) {
|
|
3299
|
-
if (split.children.length === 1) {
|
|
3300
|
-
return this.replaceNodeInTree(root, split, split.children[0]);
|
|
3301
|
-
}
|
|
3302
|
-
if (split.children.length === 0) {
|
|
3303
|
-
const parentInfo = this.findParentSplit(root, split);
|
|
3304
|
-
if (!parentInfo) {
|
|
3305
|
-
return null;
|
|
3306
|
-
}
|
|
3307
|
-
const parent = parentInfo.parent;
|
|
3308
|
-
const index = parent.children.indexOf(split);
|
|
3309
|
-
if (index !== -1) {
|
|
3310
|
-
parent.children.splice(index, 1);
|
|
3311
|
-
if (Array.isArray(parent.sizes)) {
|
|
3312
|
-
parent.sizes.splice(index, 1);
|
|
3313
|
-
}
|
|
3314
|
-
this.normalizeSplitNode(parent);
|
|
3315
|
-
return this.cleanupSplitIfNecessary(root, parent);
|
|
3316
|
-
}
|
|
3317
|
-
}
|
|
3318
|
-
return root;
|
|
3319
|
-
}
|
|
3320
3287
|
dockNodeBeside(root, targetNode, newNode, zone) {
|
|
3321
3288
|
const orientation = zone === 'left' || zone === 'right' ? 'horizontal' : 'vertical';
|
|
3322
3289
|
const placeBefore = zone === 'left' || zone === 'top';
|
|
@@ -3537,21 +3504,6 @@ class MintDockManagerElement extends LitElement {
|
|
|
3537
3504
|
}
|
|
3538
3505
|
}
|
|
3539
3506
|
}
|
|
3540
|
-
cleanupLocation(location) {
|
|
3541
|
-
if (location.context === 'docked') {
|
|
3542
|
-
this.rootLayout = this.cleanupEmptyStackInTree(this.rootLayout, location.node);
|
|
3543
|
-
}
|
|
3544
|
-
else {
|
|
3545
|
-
const floating = this.floatingLayouts[location.index];
|
|
3546
|
-
if (!floating) {
|
|
3547
|
-
return;
|
|
3548
|
-
}
|
|
3549
|
-
floating.root = this.cleanupEmptyStackInTree(floating.root, location.node);
|
|
3550
|
-
if (!floating.root) {
|
|
3551
|
-
this.removeFloatingAt(location.index);
|
|
3552
|
-
}
|
|
3553
|
-
}
|
|
3554
|
-
}
|
|
3555
3507
|
reorderPaneInLocation(location, pane) {
|
|
3556
3508
|
const panes = location.node.panes;
|
|
3557
3509
|
const index = panes.indexOf(pane);
|
|
@@ -3607,10 +3559,7 @@ class MintDockManagerElement extends LitElement {
|
|
|
3607
3559
|
if (skipCleanup) {
|
|
3608
3560
|
return true;
|
|
3609
3561
|
}
|
|
3610
|
-
|
|
3611
|
-
if (!floating.root) {
|
|
3612
|
-
this.removeFloatingAt(index);
|
|
3613
|
-
}
|
|
3562
|
+
this.normalizeAllLayouts();
|
|
3614
3563
|
return true;
|
|
3615
3564
|
}
|
|
3616
3565
|
normalizeSizesArray(sizes, count) {
|
|
@@ -3630,6 +3579,115 @@ class MintDockManagerElement extends LitElement {
|
|
|
3630
3579
|
normalizeSplitNode(split) {
|
|
3631
3580
|
split.sizes = this.normalizeSizesArray(split.sizes, split.children.length);
|
|
3632
3581
|
}
|
|
3582
|
+
/**
|
|
3583
|
+
* Bottom-up layout sanitizer. Returns a normalized version of `node` where:
|
|
3584
|
+
* - Empty stacks (panes.length === 0) are dropped (returned as null).
|
|
3585
|
+
* - A stack's `activePane` is repaired if it no longer references one of `panes`.
|
|
3586
|
+
* - Splits whose direction matches a child split are flattened, with sizes
|
|
3587
|
+
* combined multiplicatively so the resulting on-screen pixel layout is
|
|
3588
|
+
* identical to the pre-merge one.
|
|
3589
|
+
* - Splits with 0 children become null. Splits with 1 child are unwrapped.
|
|
3590
|
+
*
|
|
3591
|
+
* Idempotent: passing the result back through this method yields the same
|
|
3592
|
+
* structure. Mutates the input tree in place but only returns nodes that
|
|
3593
|
+
* remain part of the layout.
|
|
3594
|
+
*/
|
|
3595
|
+
normalizeLayoutNode(node) {
|
|
3596
|
+
if (!node)
|
|
3597
|
+
return null;
|
|
3598
|
+
if (node.kind === 'stack') {
|
|
3599
|
+
if (node.panes.length === 0)
|
|
3600
|
+
return null;
|
|
3601
|
+
if (!node.activePane || !node.panes.includes(node.activePane)) {
|
|
3602
|
+
node.activePane = node.panes[0];
|
|
3603
|
+
}
|
|
3604
|
+
return node;
|
|
3605
|
+
}
|
|
3606
|
+
const slotSizes = this.normalizeSizesArray(node.sizes, node.children.length);
|
|
3607
|
+
// Pair each child with its slot weight, drop nulls, then expand any
|
|
3608
|
+
// same-direction child split into its grandchildren with sizes scaled
|
|
3609
|
+
// multiplicatively. A 0.4 slot containing [0.3, 0.7] becomes [0.12, 0.28].
|
|
3610
|
+
const survivors = node.children
|
|
3611
|
+
.map((child, i) => ({ child: this.normalizeLayoutNode(child), slot: slotSizes[i] }))
|
|
3612
|
+
.filter((p) => p.child !== null)
|
|
3613
|
+
.flatMap(({ child, slot }) => {
|
|
3614
|
+
if (child.kind === 'split' && child.direction === node.direction) {
|
|
3615
|
+
const innerSizes = this.normalizeSizesArray(child.sizes, child.children.length);
|
|
3616
|
+
return child.children.map((grandchild, idx) => ({
|
|
3617
|
+
child: grandchild,
|
|
3618
|
+
slot: slot * innerSizes[idx],
|
|
3619
|
+
}));
|
|
3620
|
+
}
|
|
3621
|
+
return [{ child, slot }];
|
|
3622
|
+
});
|
|
3623
|
+
if (survivors.length === 0)
|
|
3624
|
+
return null;
|
|
3625
|
+
if (survivors.length === 1)
|
|
3626
|
+
return survivors[0].child;
|
|
3627
|
+
node.children = survivors.map((s) => s.child);
|
|
3628
|
+
node.sizes = this.normalizeSizesArray(survivors.map((s) => s.slot), survivors.length);
|
|
3629
|
+
return node;
|
|
3630
|
+
}
|
|
3631
|
+
/**
|
|
3632
|
+
* Apply `normalizeLayoutNode` to `rootLayout` and every floating window's
|
|
3633
|
+
* root, drop floating windows whose root collapses to null, and repair
|
|
3634
|
+
* stale `activePane` references on each floating window. Run this at the
|
|
3635
|
+
* end of every public mutation entry point (drop handlers, layout setter,
|
|
3636
|
+
* pane removal) so the tree the renderer sees is always in canonical form.
|
|
3637
|
+
*/
|
|
3638
|
+
normalizeAllLayouts() {
|
|
3639
|
+
this.rootLayout = this.normalizeLayoutNode(this.rootLayout);
|
|
3640
|
+
this.floatingLayouts = this.floatingLayouts
|
|
3641
|
+
.map((floating) => {
|
|
3642
|
+
floating.root = this.normalizeLayoutNode(floating.root);
|
|
3643
|
+
if (!floating.root)
|
|
3644
|
+
return null;
|
|
3645
|
+
const panes = this.collectPaneNames(floating.root);
|
|
3646
|
+
if (!floating.activePane || !panes.includes(floating.activePane)) {
|
|
3647
|
+
const fallback = this.findFirstPaneName(floating.root);
|
|
3648
|
+
if (fallback) {
|
|
3649
|
+
floating.activePane = fallback;
|
|
3650
|
+
}
|
|
3651
|
+
else {
|
|
3652
|
+
delete floating.activePane;
|
|
3653
|
+
}
|
|
3654
|
+
}
|
|
3655
|
+
return floating;
|
|
3656
|
+
})
|
|
3657
|
+
.filter((f) => f !== null);
|
|
3658
|
+
}
|
|
3659
|
+
/**
|
|
3660
|
+
* Dev-mode integrity guard: walks every pane referenced by the current
|
|
3661
|
+
* layout and asserts that the rendered shadow DOM contains a matching
|
|
3662
|
+
* `<slot name="${pane}">`. A missing slot means the layout tree got into
|
|
3663
|
+
* a state the renderer can't display — typically a missed normalize() call
|
|
3664
|
+
* or a render bug. Opt in via the `debug-layout-integrity` attribute or
|
|
3665
|
+
* the `debugLayoutIntegrity` property; off by default.
|
|
3666
|
+
*/
|
|
3667
|
+
verifyProjectionSlots() {
|
|
3668
|
+
if (!this.debugLayoutIntegrity)
|
|
3669
|
+
return;
|
|
3670
|
+
const root = this.shadowRoot;
|
|
3671
|
+
if (!root)
|
|
3672
|
+
return;
|
|
3673
|
+
// Collect every slot the renderer produced. Walking the rendered DOM
|
|
3674
|
+
// (instead of building a CSS selector per pane) sidesteps environment
|
|
3675
|
+
// differences — e.g. jsdom does not expose `CSS.escape`, which would
|
|
3676
|
+
// crash the guard during unit tests before the assertion runs.
|
|
3677
|
+
const slotNames = new Set(Array.from(root.querySelectorAll('slot'))
|
|
3678
|
+
.map((slot) => slot.getAttribute('name'))
|
|
3679
|
+
.filter((name) => !!name));
|
|
3680
|
+
const panes = [
|
|
3681
|
+
...this.collectPaneNames(this.rootLayout),
|
|
3682
|
+
...this.floatingLayouts.flatMap((f) => this.collectPaneNames(f.root)),
|
|
3683
|
+
];
|
|
3684
|
+
const missing = panes.find((pane) => !slotNames.has(pane));
|
|
3685
|
+
if (missing) {
|
|
3686
|
+
throw new Error(`mint-dock-manager: pane "${missing}" has no projection slot in the shadow DOM. ` +
|
|
3687
|
+
`The layout tree got into a state the renderer can't display — likely a ` +
|
|
3688
|
+
`missing normalize() call or a render bug.`);
|
|
3689
|
+
}
|
|
3690
|
+
}
|
|
3633
3691
|
dispatchLayoutChanged() {
|
|
3634
3692
|
this.dispatchEvent(new CustomEvent('dock-layout-changed', {
|
|
3635
3693
|
detail: this.snapshot,
|
|
@@ -3661,6 +3719,14 @@ class BsDockManagerComponent {
|
|
|
3661
3719
|
}
|
|
3662
3720
|
constructor() {
|
|
3663
3721
|
this.layout = input(null, ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
|
|
3722
|
+
/**
|
|
3723
|
+
* Dev-mode integrity guard. When `true`, the inner web component throws
|
|
3724
|
+
* after each render if any registered pane has no projection slot in the
|
|
3725
|
+
* shadow DOM — a signal that the layout tree got corrupted. Off by default;
|
|
3726
|
+
* enable in development to catch layout-logic bugs loudly.
|
|
3727
|
+
*/
|
|
3728
|
+
this.debugLayoutIntegrity = input(false, ...(ngDevMode ? [{ debugName: "debugLayoutIntegrity" }] : /* istanbul ignore next */ []));
|
|
3729
|
+
this.debugLayoutIntegrityAttr = computed(() => this.debugLayoutIntegrity() ? '' : null, ...(ngDevMode ? [{ debugName: "debugLayoutIntegrityAttr" }] : /* istanbul ignore next */ []));
|
|
3664
3730
|
this.layoutChange = output();
|
|
3665
3731
|
this.layoutSnapshotChange = output();
|
|
3666
3732
|
this.layoutString = signal(null, ...(ngDevMode ? [{ debugName: "layoutString" }] : /* istanbul ignore next */ []));
|
|
@@ -3729,12 +3795,12 @@ class BsDockManagerComponent {
|
|
|
3729
3795
|
return JSON.parse(JSON.stringify(layout));
|
|
3730
3796
|
}
|
|
3731
3797
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsDockManagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3732
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: BsDockManagerComponent, isStandalone: true, selector: "bs-dock-manager", inputs: { layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { layoutChange: "layoutChange", layoutSnapshotChange: "layoutSnapshotChange" }, queries: [{ propertyName: "panes", predicate: BsDockPaneComponent, isSignal: true }], viewQueries: [{ propertyName: "managerRef", first: true, predicate: ["manager"], descendants: true, isSignal: true }], ngImport: i0, template: "<mint-dock-manager\n #manager\n class=\"bs-dock-manager\"\n [attr.layout]=\"layoutString()\"\n (dock-layout-changed)=\"onLayoutChanged($event)\"\n >\n @for (pane of panes(); track trackByPane($index, pane)) {\n <div class=\"bs-dock-pane\" [attr.slot]=\"pane.name()\">\n <ng-container *ngTemplateOutlet=\"pane.template()\"></ng-container>\n </div>\n }\n</mint-dock-manager>\n", styles: [":host{display:block;width:100%;height:100%}.bs-dock-manager{display:block;width:100%;height:100%}.bs-dock-pane{display:contents}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3798
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: BsDockManagerComponent, isStandalone: true, selector: "bs-dock-manager", inputs: { layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, debugLayoutIntegrity: { classPropertyName: "debugLayoutIntegrity", publicName: "debugLayoutIntegrity", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { layoutChange: "layoutChange", layoutSnapshotChange: "layoutSnapshotChange" }, queries: [{ propertyName: "panes", predicate: BsDockPaneComponent, isSignal: true }], viewQueries: [{ propertyName: "managerRef", first: true, predicate: ["manager"], descendants: true, isSignal: true }], ngImport: i0, template: "<mint-dock-manager\n #manager\n class=\"bs-dock-manager\"\n [attr.layout]=\"layoutString()\"\n [attr.debug-layout-integrity]=\"debugLayoutIntegrityAttr()\"\n (dock-layout-changed)=\"onLayoutChanged($event)\"\n >\n @for (pane of panes(); track trackByPane($index, pane)) {\n <div class=\"bs-dock-pane\" [attr.slot]=\"pane.name()\">\n <ng-container *ngTemplateOutlet=\"pane.template()\"></ng-container>\n </div>\n }\n</mint-dock-manager>\n", styles: [":host{display:block;width:100%;height:100%}.bs-dock-manager{display:block;width:100%;height:100%}.bs-dock-pane{display:contents}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3733
3799
|
}
|
|
3734
3800
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsDockManagerComponent, decorators: [{
|
|
3735
3801
|
type: Component,
|
|
3736
|
-
args: [{ selector: 'bs-dock-manager', imports: [NgTemplateOutlet], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mint-dock-manager\n #manager\n class=\"bs-dock-manager\"\n [attr.layout]=\"layoutString()\"\n (dock-layout-changed)=\"onLayoutChanged($event)\"\n >\n @for (pane of panes(); track trackByPane($index, pane)) {\n <div class=\"bs-dock-pane\" [attr.slot]=\"pane.name()\">\n <ng-container *ngTemplateOutlet=\"pane.template()\"></ng-container>\n </div>\n }\n</mint-dock-manager>\n", styles: [":host{display:block;width:100%;height:100%}.bs-dock-manager{display:block;width:100%;height:100%}.bs-dock-pane{display:contents}\n"] }]
|
|
3737
|
-
}], ctorParameters: () => [], propDecorators: { layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], layoutChange: [{ type: i0.Output, args: ["layoutChange"] }], layoutSnapshotChange: [{ type: i0.Output, args: ["layoutSnapshotChange"] }], panes: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => BsDockPaneComponent), { isSignal: true }] }], managerRef: [{ type: i0.ViewChild, args: ['manager', { isSignal: true }] }] } });
|
|
3802
|
+
args: [{ selector: 'bs-dock-manager', imports: [NgTemplateOutlet], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mint-dock-manager\n #manager\n class=\"bs-dock-manager\"\n [attr.layout]=\"layoutString()\"\n [attr.debug-layout-integrity]=\"debugLayoutIntegrityAttr()\"\n (dock-layout-changed)=\"onLayoutChanged($event)\"\n >\n @for (pane of panes(); track trackByPane($index, pane)) {\n <div class=\"bs-dock-pane\" [attr.slot]=\"pane.name()\">\n <ng-container *ngTemplateOutlet=\"pane.template()\"></ng-container>\n </div>\n }\n</mint-dock-manager>\n", styles: [":host{display:block;width:100%;height:100%}.bs-dock-manager{display:block;width:100%;height:100%}.bs-dock-pane{display:contents}\n"] }]
|
|
3803
|
+
}], ctorParameters: () => [], propDecorators: { layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], debugLayoutIntegrity: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugLayoutIntegrity", required: false }] }], layoutChange: [{ type: i0.Output, args: ["layoutChange"] }], layoutSnapshotChange: [{ type: i0.Output, args: ["layoutSnapshotChange"] }], panes: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => BsDockPaneComponent), { isSignal: true }] }], managerRef: [{ type: i0.ViewChild, args: ['manager', { isSignal: true }] }] } });
|
|
3738
3804
|
|
|
3739
3805
|
/**
|
|
3740
3806
|
* Generated bundle index. Do not edit.
|