dockview-angular 5.0.0 → 5.2.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/dist/dockview.css +25 -1
- package/dist/esm2022/lib/dockview/dockview-angular.component.mjs +4 -2
- package/dist/fesm2022/dockview-angular.mjs +3 -1
- package/dist/fesm2022/dockview-angular.mjs.map +1 -1
- package/dist/lib/dockview/dockview-angular.component.d.ts +3 -2
- package/dist/lib/dockview/dockview-angular.component.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/dockview.css
CHANGED
|
@@ -611,7 +611,7 @@
|
|
|
611
611
|
transform: translate3d(0, 0, 0);
|
|
612
612
|
backface-visibility: hidden;
|
|
613
613
|
contain: layout paint;
|
|
614
|
-
transition: opacity var(--dv-transition-duration) ease-in,
|
|
614
|
+
transition: opacity var(--dv-transition-duration) ease-in, top var(--dv-transition-duration) ease-out, left var(--dv-transition-duration) ease-out, width var(--dv-transition-duration) ease-out, height var(--dv-transition-duration) ease-out;
|
|
615
615
|
}
|
|
616
616
|
.dv-drop-target {
|
|
617
617
|
position: relative;
|
|
@@ -1145,6 +1145,10 @@
|
|
|
1145
1145
|
.dv-tabs-overflow-dropdown-default > svg {
|
|
1146
1146
|
transform: rotate(90deg);
|
|
1147
1147
|
}
|
|
1148
|
+
.dv-tabs-overflow-dropdown-default:hover {
|
|
1149
|
+
border-radius: 2px;
|
|
1150
|
+
background-color: var(--dv-icon-hover-background-color);
|
|
1151
|
+
}
|
|
1148
1152
|
.dv-tabs-container {
|
|
1149
1153
|
display: flex;
|
|
1150
1154
|
height: 100%;
|
|
@@ -1203,7 +1207,26 @@
|
|
|
1203
1207
|
font-size: var(--dv-tab-font-size);
|
|
1204
1208
|
margin: var(--dv-tab-margin);
|
|
1205
1209
|
}
|
|
1210
|
+
.dv-tab.dv-tab--shifting {
|
|
1211
|
+
will-change: margin-left;
|
|
1212
|
+
transition: transform var(--dv-transition-duration, 200ms) ease-out, margin-left var(--dv-transition-duration, 200ms) ease-out;
|
|
1213
|
+
}
|
|
1214
|
+
.dv-tab.dv-tab--dragging {
|
|
1215
|
+
width: 0 !important;
|
|
1216
|
+
min-width: 0 !important;
|
|
1217
|
+
padding: 0 !important;
|
|
1218
|
+
margin: 0 !important;
|
|
1219
|
+
overflow: hidden;
|
|
1220
|
+
opacity: 0;
|
|
1221
|
+
pointer-events: none;
|
|
1222
|
+
transition: width var(--dv-transition-duration, 200ms) ease-out, padding var(--dv-transition-duration, 200ms) ease-out, margin var(--dv-transition-duration, 200ms) ease-out, opacity var(--dv-transition-duration, 200ms) ease-out;
|
|
1223
|
+
}
|
|
1206
1224
|
|
|
1225
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1226
|
+
.dv-tab {
|
|
1227
|
+
transition: none !important;
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1207
1230
|
.dv-tabs-container-vertical .dv-tab {
|
|
1208
1231
|
padding: 0.5rem 0.25rem;
|
|
1209
1232
|
}
|
|
@@ -1211,6 +1234,7 @@
|
|
|
1211
1234
|
.dv-tabs-overflow-container {
|
|
1212
1235
|
flex-direction: column;
|
|
1213
1236
|
height: unset;
|
|
1237
|
+
font-size: var(--dv-tabs-and-actions-container-font-size);
|
|
1214
1238
|
max-height: min(50vh, 400px);
|
|
1215
1239
|
overflow-y: auto;
|
|
1216
1240
|
border: 1px solid var(--dv-tab-divider-color);
|
|
@@ -127,7 +127,7 @@ export class DockviewAngularComponent {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DockviewAngularComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
130
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DockviewAngularComponent, isStandalone: true, selector: "dv-dockview", inputs: { components: "components", tabComponents: "tabComponents", watermarkComponent: "watermarkComponent", defaultTabComponent: "defaultTabComponent", leftHeaderActionsComponent: "leftHeaderActionsComponent", rightHeaderActionsComponent: "rightHeaderActionsComponent", prefixHeaderActionsComponent: "prefixHeaderActionsComponent", className: "className", orientation: "orientation", hideBorders: "hideBorders", rootOverlayModel: "rootOverlayModel", defaultTabComponent_: "defaultTabComponent_", tabHeight: "tabHeight", disableFloatingGroups: "disableFloatingGroups", floatingGroupBounds: "floatingGroupBounds", popoutUrl: "popoutUrl", debug: "debug", locked: "locked", disableAutoResizing: "disableAutoResizing", singleTabMode: "singleTabMode" }, outputs: { ready: "ready", didDrop: "didDrop", willDrop: "willDrop" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["dockviewContainer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #dockviewContainer class="dockview-container"></div>', isInline: true, styles: [":host{display:block;width:100%;height:100%}.dockview-container{width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
130
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DockviewAngularComponent, isStandalone: true, selector: "dv-dockview", inputs: { components: "components", tabComponents: "tabComponents", watermarkComponent: "watermarkComponent", defaultTabComponent: "defaultTabComponent", leftHeaderActionsComponent: "leftHeaderActionsComponent", rightHeaderActionsComponent: "rightHeaderActionsComponent", prefixHeaderActionsComponent: "prefixHeaderActionsComponent", className: "className", orientation: "orientation", hideBorders: "hideBorders", rootOverlayModel: "rootOverlayModel", defaultTabComponent_: "defaultTabComponent_", tabHeight: "tabHeight", disableFloatingGroups: "disableFloatingGroups", floatingGroupBounds: "floatingGroupBounds", popoutUrl: "popoutUrl", debug: "debug", locked: "locked", disableAutoResizing: "disableAutoResizing", singleTabMode: "singleTabMode", tabAnimation: "tabAnimation" }, outputs: { ready: "ready", didDrop: "didDrop", willDrop: "willDrop" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["dockviewContainer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #dockviewContainer class="dockview-container"></div>', isInline: true, styles: [":host{display:block;width:100%;height:100%}.dockview-container{width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
131
131
|
}
|
|
132
132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DockviewAngularComponent, decorators: [{
|
|
133
133
|
type: Component,
|
|
@@ -175,6 +175,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
175
175
|
type: Input
|
|
176
176
|
}], singleTabMode: [{
|
|
177
177
|
type: Input
|
|
178
|
+
}], tabAnimation: [{
|
|
179
|
+
type: Input
|
|
178
180
|
}], ready: [{
|
|
179
181
|
type: Output
|
|
180
182
|
}], didDrop: [{
|
|
@@ -182,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
182
184
|
}], willDrop: [{
|
|
183
185
|
type: Output
|
|
184
186
|
}] } });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja3ZpZXctYW5ndWxhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RvY2t2aWV3L2RvY2t2aWV3LWFuZ3VsYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNULHVCQUF1QixFQUd2QixtQkFBbUIsRUFDbkIsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFNSCxjQUFjLEVBQ2Qsc0JBQXNCLEdBR3pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQWdDbkUsTUFBTSxPQUFPLHdCQUF3QjtJQXBCckM7UUErQ2MsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQy9DLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUNuRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFHdkQscUJBQWdCLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBQ2pELGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0F3SjdEO0lBdEpHLFFBQVE7UUFDSixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLE1BQU0sV0FBVyxHQUE2QixFQUFFLENBQUM7WUFDakQsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBRXZCLGdEQUFnRDtZQUNoRCxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztvQkFDL0MsV0FBbUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDO29CQUN0RCxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQ1gsd0RBQXdELENBQzNELENBQUM7UUFDTixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUV2RCxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTtZQUMvRCxHQUFHLFdBQVc7WUFDZCxHQUFHLGdCQUFnQjtTQUN0QixDQUFDLENBQUM7UUFFSCx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFM0IsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsTUFBTSxXQUFXLEdBQXNDLEVBQUUsQ0FBQztRQUUxRCxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNuQyxNQUFNLEtBQUssR0FBSSxJQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLFdBQW1CLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sV0FBOEIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sc0JBQXNCO1FBQzFCLE1BQU0sdUJBQXVCLEdBQThCLEVBQUUsQ0FBQztRQUM5RCxJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ2xDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUNuQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUM7UUFDeEUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDcEMsdUJBQXVCLENBQUMsUUFBUSxDQUFDO2dCQUM3QixJQUFJLENBQUMsNEJBQTRCLENBQUM7UUFDMUMsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxnQ0FBZ0MsQ0FDekQsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxtQkFBbUIsRUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFDbEIsSUFBSSxDQUFDLGtCQUFrQixFQUN2Qix1QkFBdUIsRUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUMzQixDQUFDO1FBRUYsT0FBTztZQUNILGVBQWUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN6QixPQUFPLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdELENBQUM7WUFDRCxrQkFBa0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUM1QixPQUFPLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFDRCx3QkFBd0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO2dCQUM3QyxDQUFDLENBQUMsR0FBRyxFQUFFO29CQUNELE9BQU8sZ0JBQWdCLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztnQkFDdkQsQ0FBQztnQkFDSCxDQUFDLENBQUMsU0FBUztZQUNmLCtCQUErQixFQUFFLElBQUksQ0FBQywwQkFBMEI7Z0JBQzVELENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNOLE9BQU8sZ0JBQWdCLENBQUMsNEJBQTRCLENBQ2hELE1BQU0sQ0FDUixDQUFDO2dCQUNQLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVM7WUFDZixnQ0FBZ0MsRUFBRSxJQUFJLENBQUMsMkJBQTJCO2dCQUM5RCxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDTixPQUFPLGdCQUFnQixDQUFDLDRCQUE0QixDQUNoRCxPQUFPLENBQ1QsQ0FBQztnQkFDUCxDQUFDO2dCQUNILENBQUMsQ0FBQyxTQUFTO1lBQ2YsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLDRCQUE0QjtnQkFDaEUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ04sT0FBTyxnQkFBZ0IsQ0FBQyw0QkFBNEIsQ0FDaEQsUUFBUSxDQUNWLENBQUM7Z0JBQ1AsQ0FBQztnQkFDSCxDQUFDLENBQUMsU0FBUztTQUNsQixDQUFDO0lBQ04sQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDWCxDQUFDO1FBRUQscURBQXFEO1FBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDTCxDQUFDOytHQXpMUSx3QkFBd0I7bUdBQXhCLHdCQUF3QixraENBakJ2QiwyREFBMkQ7OzRGQWlCNUQsd0JBQXdCO2tCQXBCcEMsU0FBUzsrQkFDSSxhQUFhLGNBQ1gsSUFBSSxZQUNOLDJEQUEyRCxtQkFlcEQsdUJBQXVCLENBQUMsTUFBTTs4QkFJdkMsWUFBWTtzQkFEbkIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR3ZDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVHlwZSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEb2Nrdmlld0FwaSxcbiAgICBEb2Nrdmlld09wdGlvbnMsXG4gICAgRG9ja3ZpZXdSZWFkeUV2ZW50LFxuICAgIERvY2t2aWV3RGlkRHJvcEV2ZW50LFxuICAgIERvY2t2aWV3V2lsbERyb3BFdmVudCxcbiAgICBjcmVhdGVEb2NrdmlldyxcbiAgICBQUk9QRVJUWV9LRVlTX0RPQ0tWSUVXLFxuICAgIERvY2t2aWV3RnJhbWV3b3JrT3B0aW9ucyxcbiAgICBEb2Nrdmlld0NvbXBvbmVudE9wdGlvbnMsXG59IGZyb20gJ2RvY2t2aWV3LWNvcmUnO1xuaW1wb3J0IHsgQW5ndWxhckZyYW1ld29ya0NvbXBvbmVudEZhY3RvcnkgfSBmcm9tICcuLi91dGlscy9jb21wb25lbnQtZmFjdG9yeSc7XG5pbXBvcnQgeyBBbmd1bGFyTGlmZWN5Y2xlTWFuYWdlciB9IGZyb20gJy4uL3V0aWxzL2xpZmVjeWNsZS11dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja3ZpZXdBbmd1bGFyT3B0aW9ucyBleHRlbmRzIERvY2t2aWV3T3B0aW9ucyB7XG4gICAgY29tcG9uZW50czogUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+PjtcbiAgICB0YWJDb21wb25lbnRzPzogUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+PjtcbiAgICB3YXRlcm1hcmtDb21wb25lbnQ/OiBUeXBlPGFueT47XG4gICAgZGVmYXVsdFRhYkNvbXBvbmVudD86IFR5cGU8YW55PjtcbiAgICBsZWZ0SGVhZGVyQWN0aW9uc0NvbXBvbmVudD86IFR5cGU8YW55PjtcbiAgICByaWdodEhlYWRlckFjdGlvbnNDb21wb25lbnQ/OiBUeXBlPGFueT47XG4gICAgcHJlZml4SGVhZGVyQWN0aW9uc0NvbXBvbmVudD86IFR5cGU8YW55Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkdi1kb2NrdmlldycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogJzxkaXYgI2RvY2t2aWV3Q29udGFpbmVyIGNsYXNzPVwiZG9ja3ZpZXctY29udGFpbmVyXCI+PC9kaXY+JyxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmRvY2t2aWV3LWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICBgLFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERvY2t2aWV3QW5ndWxhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGQoJ2RvY2t2aWV3Q29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIGNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgQElucHV0KCkgY29tcG9uZW50cyE6IFJlY29yZDxzdHJpbmcsIFR5cGU8YW55Pj47XG4gICAgQElucHV0KCkgdGFiQ29tcG9uZW50cz86IFJlY29yZDxzdHJpbmcsIFR5cGU8YW55Pj47XG4gICAgQElucHV0KCkgd2F0ZXJtYXJrQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAgIEBJbnB1dCgpIGRlZmF1bHRUYWJDb21wb25lbnQ/OiBUeXBlPGFueT47XG4gICAgQElucHV0KCkgbGVmdEhlYWRlckFjdGlvbnNDb21wb25lbnQ/OiBUeXBlPGFueT47XG4gICAgQElucHV0KCkgcmlnaHRIZWFkZXJBY3Rpb25zQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAgIEBJbnB1dCgpIHByZWZpeEhlYWRlckFjdGlvbnNDb21wb25lbnQ/OiBUeXBlPGFueT47XG5cbiAgICAvLyBDb3JlIGRvY2t2aWV3IG9wdGlvbnMgYXMgaW5wdXRzXG4gICAgQElucHV0KCkgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9yaWVudGF0aW9uPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJztcbiAgICBASW5wdXQoKSBoaWRlQm9yZGVycz86IGJvb2xlYW47XG4gICAgQElucHV0KCkgcm9vdE92ZXJsYXlNb2RlbD86ICdhbHdheXMnIHwgJ25ldmVyJztcbiAgICBASW5wdXQoKSBkZWZhdWx0VGFiQ29tcG9uZW50Xz86IHN0cmluZztcbiAgICBASW5wdXQoKSB0YWJIZWlnaHQ/OiBudW1iZXI7XG4gICAgQElucHV0KCkgZGlzYWJsZUZsb2F0aW5nR3JvdXBzPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBmbG9hdGluZ0dyb3VwQm91bmRzPzogJ2JvdW5kZWRXaXRoaW5WaWV3cG9ydCc7XG4gICAgQElucHV0KCkgcG9wb3V0VXJsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlYnVnPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBsb2NrZWQ/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRpc2FibGVBdXRvUmVzaXppbmc/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNpbmdsZVRhYk1vZGU/OiAnZnVsbHdpZHRoJyB8ICdkZWZhdWx0JztcblxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8RG9ja3ZpZXdSZWFkeUV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBkaWREcm9wID0gbmV3IEV2ZW50RW1pdHRlcjxEb2Nrdmlld0RpZERyb3BFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgd2lsbERyb3AgPSBuZXcgRXZlbnRFbWl0dGVyPERvY2t2aWV3V2lsbERyb3BFdmVudD4oKTtcblxuICAgIHByaXZhdGUgZG9ja3ZpZXdBcGk/OiBEb2Nrdmlld0FwaTtcbiAgICBwcml2YXRlIGxpZmVjeWNsZU1hbmFnZXIgPSBuZXcgQW5ndWxhckxpZmVjeWNsZU1hbmFnZXIoKTtcbiAgICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICBwcml2YXRlIGVudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRG9ja3ZpZXcoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5saWZlY3ljbGVNYW5hZ2VyLmRlc3Ryb3koKTtcbiAgICAgICAgaWYgKHRoaXMuZG9ja3ZpZXdBcGkpIHtcbiAgICAgICAgICAgIHRoaXMuZG9ja3ZpZXdBcGkuZGlzcG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kb2Nrdmlld0FwaSkge1xuICAgICAgICAgICAgY29uc3QgY29yZUNoYW5nZXM6IFBhcnRpYWw8RG9ja3ZpZXdPcHRpb25zPiA9IHt9O1xuICAgICAgICAgICAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNoYW5nZXMgaW4gY29yZSBkb2NrdmlldyBwcm9wZXJ0aWVzXG4gICAgICAgICAgICBQUk9QRVJUWV9LRVlTX0RPQ0tWSUVXLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VzW2tleV0gJiYgIWNoYW5nZXNba2V5XS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgKGNvcmVDaGFuZ2VzIGFzIGFueSlba2V5XSA9IGNoYW5nZXNba2V5XS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9ja3ZpZXdBcGkudXBkYXRlT3B0aW9ucyhjb3JlQ2hhbmdlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXREb2Nrdmlld0FwaSgpOiBEb2Nrdmlld0FwaSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvY2t2aWV3QXBpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZURvY2t2aWV3KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50cykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICdEb2Nrdmlld0FuZ3VsYXJDb21wb25lbnQ6IGNvbXBvbmVudHMgaW5wdXQgaXMgcmVxdWlyZWQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29yZU9wdGlvbnMgPSB0aGlzLmV4dHJhY3RDb3JlT3B0aW9ucygpO1xuICAgICAgICBjb25zdCBmcmFtZXdvcmtPcHRpb25zID0gdGhpcy5jcmVhdGVGcmFtZXdvcmtPcHRpb25zKCk7XG5cbiAgICAgICAgdGhpcy5kb2Nrdmlld0FwaSA9IGNyZWF0ZURvY2t2aWV3KHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgIC4uLmNvcmVPcHRpb25zLFxuICAgICAgICAgICAgLi4uZnJhbWV3b3JrT3B0aW9ucyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2V0IHVwIGV2ZW50IGxpc3RlbmVyc1xuICAgICAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgICAgICAvLyBFbWl0IHJlYWR5IGV2ZW50XG4gICAgICAgIHRoaXMucmVhZHkuZW1pdCh7IGFwaTogdGhpcy5kb2Nrdmlld0FwaSB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dHJhY3RDb3JlT3B0aW9ucygpOiBEb2Nrdmlld09wdGlvbnMge1xuICAgICAgICBjb25zdCBjb3JlT3B0aW9uczogUGFydGlhbDxEb2Nrdmlld0NvbXBvbmVudE9wdGlvbnM+ID0ge307XG5cbiAgICAgICAgUFJPUEVSVFlfS0VZU19ET0NLVklFVy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHRoaXMgYXMgYW55KVtrZXldO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAoY29yZU9wdGlvbnMgYXMgYW55KVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb3JlT3B0aW9ucyBhcyBEb2Nrdmlld09wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVGcmFtZXdvcmtPcHRpb25zKCk6IERvY2t2aWV3RnJhbWV3b3JrT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IGhlYWRlckFjdGlvbnNDb21wb25lbnRzOiBSZWNvcmQ8c3RyaW5nLCBUeXBlPGFueT4+ID0ge307XG4gICAgICAgIGlmICh0aGlzLmxlZnRIZWFkZXJBY3Rpb25zQ29tcG9uZW50KSB7XG4gICAgICAgICAgICBoZWFkZXJBY3Rpb25zQ29tcG9uZW50c1snbGVmdCddID0gdGhpcy5sZWZ0SGVhZGVyQWN0aW9uc0NvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yaWdodEhlYWRlckFjdGlvbnNDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGhlYWRlckFjdGlvbnNDb21wb25lbnRzWydyaWdodCddID0gdGhpcy5yaWdodEhlYWRlckFjdGlvbnNDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJlZml4SGVhZGVyQWN0aW9uc0NvbXBvbmVudCkge1xuICAgICAgICAgICAgaGVhZGVyQWN0aW9uc0NvbXBvbmVudHNbJ3ByZWZpeCddID1cbiAgICAgICAgICAgICAgICB0aGlzLnByZWZpeEhlYWRlckFjdGlvbnNDb21wb25lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gbmV3IEFuZ3VsYXJGcmFtZXdvcmtDb21wb25lbnRGYWN0b3J5KFxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRzLFxuICAgICAgICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgIHRoaXMuZW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgICAgICAgIHRoaXMudGFiQ29tcG9uZW50cyxcbiAgICAgICAgICAgIHRoaXMud2F0ZXJtYXJrQ29tcG9uZW50LFxuICAgICAgICAgICAgaGVhZGVyQWN0aW9uc0NvbXBvbmVudHMsXG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRUYWJDb21wb25lbnRcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3JlYXRlQ29tcG9uZW50OiAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZURvY2t2aWV3Q29tcG9uZW50KG9wdGlvbnMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNyZWF0ZVRhYkNvbXBvbmVudDogKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50RmFjdG9yeS5jcmVhdGVUYWJDb21wb25lbnQob3B0aW9ucyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3JlYXRlV2F0ZXJtYXJrQ29tcG9uZW50OiB0aGlzLndhdGVybWFya0NvbXBvbmVudFxuICAgICAgICAgICAgICAgID8gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZVdhdGVybWFya0NvbXBvbmVudCgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY3JlYXRlTGVmdEhlYWRlckFjdGlvbkNvbXBvbmVudDogdGhpcy5sZWZ0SGVhZGVyQWN0aW9uc0NvbXBvbmVudFxuICAgICAgICAgICAgICAgID8gKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEZhY3RvcnkuY3JlYXRlSGVhZGVyQWN0aW9uc0NvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgKSE7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjcmVhdGVSaWdodEhlYWRlckFjdGlvbkNvbXBvbmVudDogdGhpcy5yaWdodEhlYWRlckFjdGlvbnNDb21wb25lbnRcbiAgICAgICAgICAgICAgICA/IChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZUhlYWRlckFjdGlvbnNDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICApITtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNyZWF0ZVByZWZpeEhlYWRlckFjdGlvbkNvbXBvbmVudDogdGhpcy5wcmVmaXhIZWFkZXJBY3Rpb25zQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgPyAoZ3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50RmFjdG9yeS5jcmVhdGVIZWFkZXJBY3Rpb25zQ29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJlZml4J1xuICAgICAgICAgICAgICAgICAgICAgICkhO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY2t2aWV3QXBpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdXAgZXZlbnQgc3Vic2NyaXB0aW9ucyB1c2luZyBsaWZlY3ljbGUgbWFuYWdlclxuICAgICAgICBjb25zdCBhcGkgPSB0aGlzLmRvY2t2aWV3QXBpO1xuXG4gICAgICAgIGlmICh0aGlzLmRpZERyb3Aub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3Bvc2FibGUgPSBhcGkub25EaWREcm9wKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlkRHJvcC5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5saWZlY3ljbGVNYW5hZ2VyLmFkZERpc3Bvc2FibGUoZGlzcG9zYWJsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy53aWxsRHJvcC5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgZGlzcG9zYWJsZSA9IGFwaS5vbldpbGxEcm9wKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMud2lsbERyb3AuZW1pdChldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMubGlmZWN5Y2xlTWFuYWdlci5hZGREaXNwb3NhYmxlKGRpc3Bvc2FibGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja3ZpZXctYW5ndWxhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RvY2t2aWV3L2RvY2t2aWV3LWFuZ3VsYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNULHVCQUF1QixFQUd2QixtQkFBbUIsRUFDbkIsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFNSCxjQUFjLEVBQ2Qsc0JBQXNCLEdBSXpCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQWdDbkUsTUFBTSxPQUFPLHdCQUF3QjtJQXBCckM7UUFnRGMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQy9DLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUNuRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFHdkQscUJBQWdCLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBQ2pELGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0F3SjdEO0lBdEpHLFFBQVE7UUFDSixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLE1BQU0sV0FBVyxHQUE2QixFQUFFLENBQUM7WUFDakQsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBRXZCLGdEQUFnRDtZQUNoRCxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztvQkFDL0MsV0FBbUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDO29CQUN0RCxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQ1gsd0RBQXdELENBQzNELENBQUM7UUFDTixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUV2RCxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTtZQUMvRCxHQUFHLFdBQVc7WUFDZCxHQUFHLGdCQUFnQjtTQUN0QixDQUFDLENBQUM7UUFFSCx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFM0IsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsTUFBTSxXQUFXLEdBQXNDLEVBQUUsQ0FBQztRQUUxRCxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNuQyxNQUFNLEtBQUssR0FBSSxJQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLFdBQW1CLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sV0FBOEIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sc0JBQXNCO1FBQzFCLE1BQU0sdUJBQXVCLEdBQThCLEVBQUUsQ0FBQztRQUM5RCxJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ2xDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUNuQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUM7UUFDeEUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDcEMsdUJBQXVCLENBQUMsUUFBUSxDQUFDO2dCQUM3QixJQUFJLENBQUMsNEJBQTRCLENBQUM7UUFDMUMsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxnQ0FBZ0MsQ0FDekQsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxtQkFBbUIsRUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFDbEIsSUFBSSxDQUFDLGtCQUFrQixFQUN2Qix1QkFBdUIsRUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUMzQixDQUFDO1FBRUYsT0FBTztZQUNILGVBQWUsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN6QixPQUFPLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdELENBQUM7WUFDRCxrQkFBa0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUM1QixPQUFPLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFDRCx3QkFBd0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO2dCQUM3QyxDQUFDLENBQUMsR0FBRyxFQUFFO29CQUNELE9BQU8sZ0JBQWdCLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztnQkFDdkQsQ0FBQztnQkFDSCxDQUFDLENBQUMsU0FBUztZQUNmLCtCQUErQixFQUFFLElBQUksQ0FBQywwQkFBMEI7Z0JBQzVELENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNOLE9BQU8sZ0JBQWdCLENBQUMsNEJBQTRCLENBQ2hELE1BQU0sQ0FDUixDQUFDO2dCQUNQLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVM7WUFDZixnQ0FBZ0MsRUFBRSxJQUFJLENBQUMsMkJBQTJCO2dCQUM5RCxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDTixPQUFPLGdCQUFnQixDQUFDLDRCQUE0QixDQUNoRCxPQUFPLENBQ1QsQ0FBQztnQkFDUCxDQUFDO2dCQUNILENBQUMsQ0FBQyxTQUFTO1lBQ2YsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLDRCQUE0QjtnQkFDaEUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ04sT0FBTyxnQkFBZ0IsQ0FBQyw0QkFBNEIsQ0FDaEQsUUFBUSxDQUNWLENBQUM7Z0JBQ1AsQ0FBQztnQkFDSCxDQUFDLENBQUMsU0FBUztTQUNsQixDQUFDO0lBQ04sQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDWCxDQUFDO1FBRUQscURBQXFEO1FBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDTCxDQUFDOytHQTFMUSx3QkFBd0I7bUdBQXhCLHdCQUF3QixnakNBakJ2QiwyREFBMkQ7OzRGQWlCNUQsd0JBQXdCO2tCQXBCcEMsU0FBUzsrQkFDSSxhQUFhLGNBQ1gsSUFBSSxZQUNOLDJEQUEyRCxtQkFlcEQsdUJBQXVCLENBQUMsTUFBTTs4QkFJdkMsWUFBWTtzQkFEbkIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR3ZDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBUeXBlLFxuICAgIFZpZXdDaGlsZCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIERvY2t2aWV3QXBpLFxuICAgIERvY2t2aWV3T3B0aW9ucyxcbiAgICBEb2Nrdmlld1JlYWR5RXZlbnQsXG4gICAgRG9ja3ZpZXdEaWREcm9wRXZlbnQsXG4gICAgRG9ja3ZpZXdXaWxsRHJvcEV2ZW50LFxuICAgIGNyZWF0ZURvY2t2aWV3LFxuICAgIFBST1BFUlRZX0tFWVNfRE9DS1ZJRVcsXG4gICAgRG9ja3ZpZXdGcmFtZXdvcmtPcHRpb25zLFxuICAgIERvY2t2aWV3Q29tcG9uZW50T3B0aW9ucyxcbiAgICBUYWJBbmltYXRpb24sXG59IGZyb20gJ2RvY2t2aWV3LWNvcmUnO1xuaW1wb3J0IHsgQW5ndWxhckZyYW1ld29ya0NvbXBvbmVudEZhY3RvcnkgfSBmcm9tICcuLi91dGlscy9jb21wb25lbnQtZmFjdG9yeSc7XG5pbXBvcnQgeyBBbmd1bGFyTGlmZWN5Y2xlTWFuYWdlciB9IGZyb20gJy4uL3V0aWxzL2xpZmVjeWNsZS11dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja3ZpZXdBbmd1bGFyT3B0aW9ucyBleHRlbmRzIERvY2t2aWV3T3B0aW9ucyB7XG4gICAgY29tcG9uZW50czogUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+PjtcbiAgICB0YWJDb21wb25lbnRzPzogUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+PjtcbiAgICB3YXRlcm1hcmtDb21wb25lbnQ/OiBUeXBlPGFueT47XG4gICAgZGVmYXVsdFRhYkNvbXBvbmVudD86IFR5cGU8YW55PjtcbiAgICBsZWZ0SGVhZGVyQWN0aW9uc0NvbXBvbmVudD86IFR5cGU8YW55PjtcbiAgICByaWdodEhlYWRlckFjdGlvbnNDb21wb25lbnQ/OiBUeXBlPGFueT47XG4gICAgcHJlZml4SGVhZGVyQWN0aW9uc0NvbXBvbmVudD86IFR5cGU8YW55Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkdi1kb2NrdmlldycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogJzxkaXYgI2RvY2t2aWV3Q29udGFpbmVyIGNsYXNzPVwiZG9ja3ZpZXctY29udGFpbmVyXCI+PC9kaXY+JyxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmRvY2t2aWV3LWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICBgLFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERvY2t2aWV3QW5ndWxhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGQoJ2RvY2t2aWV3Q29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIGNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgQElucHV0KCkgY29tcG9uZW50cyE6IFJlY29yZDxzdHJpbmcsIFR5cGU8YW55Pj47XG4gICAgQElucHV0KCkgdGFiQ29tcG9uZW50cz86IFJlY29yZDxzdHJpbmcsIFR5cGU8YW55Pj47XG4gICAgQElucHV0KCkgd2F0ZXJtYXJrQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAgIEBJbnB1dCgpIGRlZmF1bHRUYWJDb21wb25lbnQ/OiBUeXBlPGFueT47XG4gICAgQElucHV0KCkgbGVmdEhlYWRlckFjdGlvbnNDb21wb25lbnQ/OiBUeXBlPGFueT47XG4gICAgQElucHV0KCkgcmlnaHRIZWFkZXJBY3Rpb25zQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuICAgIEBJbnB1dCgpIHByZWZpeEhlYWRlckFjdGlvbnNDb21wb25lbnQ/OiBUeXBlPGFueT47XG5cbiAgICAvLyBDb3JlIGRvY2t2aWV3IG9wdGlvbnMgYXMgaW5wdXRzXG4gICAgQElucHV0KCkgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9yaWVudGF0aW9uPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJztcbiAgICBASW5wdXQoKSBoaWRlQm9yZGVycz86IGJvb2xlYW47XG4gICAgQElucHV0KCkgcm9vdE92ZXJsYXlNb2RlbD86ICdhbHdheXMnIHwgJ25ldmVyJztcbiAgICBASW5wdXQoKSBkZWZhdWx0VGFiQ29tcG9uZW50Xz86IHN0cmluZztcbiAgICBASW5wdXQoKSB0YWJIZWlnaHQ/OiBudW1iZXI7XG4gICAgQElucHV0KCkgZGlzYWJsZUZsb2F0aW5nR3JvdXBzPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBmbG9hdGluZ0dyb3VwQm91bmRzPzogJ2JvdW5kZWRXaXRoaW5WaWV3cG9ydCc7XG4gICAgQElucHV0KCkgcG9wb3V0VXJsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlYnVnPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBsb2NrZWQ/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRpc2FibGVBdXRvUmVzaXppbmc/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNpbmdsZVRhYk1vZGU/OiAnZnVsbHdpZHRoJyB8ICdkZWZhdWx0JztcbiAgICBASW5wdXQoKSB0YWJBbmltYXRpb24/OiBUYWJBbmltYXRpb247XG5cbiAgICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPERvY2t2aWV3UmVhZHlFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgZGlkRHJvcCA9IG5ldyBFdmVudEVtaXR0ZXI8RG9ja3ZpZXdEaWREcm9wRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIHdpbGxEcm9wID0gbmV3IEV2ZW50RW1pdHRlcjxEb2Nrdmlld1dpbGxEcm9wRXZlbnQ+KCk7XG5cbiAgICBwcml2YXRlIGRvY2t2aWV3QXBpPzogRG9ja3ZpZXdBcGk7XG4gICAgcHJpdmF0ZSBsaWZlY3ljbGVNYW5hZ2VyID0gbmV3IEFuZ3VsYXJMaWZlY3ljbGVNYW5hZ2VyKCk7XG4gICAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZURvY2t2aWV3KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGlmZWN5Y2xlTWFuYWdlci5kZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLmRvY2t2aWV3QXBpKSB7XG4gICAgICAgICAgICB0aGlzLmRvY2t2aWV3QXBpLmRpc3Bvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZG9ja3ZpZXdBcGkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvcmVDaGFuZ2VzOiBQYXJ0aWFsPERvY2t2aWV3T3B0aW9ucz4gPSB7fTtcbiAgICAgICAgICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGZvciBjaGFuZ2VzIGluIGNvcmUgZG9ja3ZpZXcgcHJvcGVydGllc1xuICAgICAgICAgICAgUFJPUEVSVFlfS0VZU19ET0NLVklFVy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlc1trZXldICYmICFjaGFuZ2VzW2tleV0uaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIChjb3JlQ2hhbmdlcyBhcyBhbnkpW2tleV0gPSBjaGFuZ2VzW2tleV0uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvY2t2aWV3QXBpLnVwZGF0ZU9wdGlvbnMoY29yZUNoYW5nZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RG9ja3ZpZXdBcGkoKTogRG9ja3ZpZXdBcGkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2Nrdmlld0FwaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVEb2NrdmlldygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAnRG9ja3ZpZXdBbmd1bGFyQ29tcG9uZW50OiBjb21wb25lbnRzIGlucHV0IGlzIHJlcXVpcmVkJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvcmVPcHRpb25zID0gdGhpcy5leHRyYWN0Q29yZU9wdGlvbnMoKTtcbiAgICAgICAgY29uc3QgZnJhbWV3b3JrT3B0aW9ucyA9IHRoaXMuY3JlYXRlRnJhbWV3b3JrT3B0aW9ucygpO1xuXG4gICAgICAgIHRoaXMuZG9ja3ZpZXdBcGkgPSBjcmVhdGVEb2Nrdmlldyh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAuLi5jb3JlT3B0aW9ucyxcbiAgICAgICAgICAgIC4uLmZyYW1ld29ya09wdGlvbnMsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNldCB1cCBldmVudCBsaXN0ZW5lcnNcbiAgICAgICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICAgICAgLy8gRW1pdCByZWFkeSBldmVudFxuICAgICAgICB0aGlzLnJlYWR5LmVtaXQoeyBhcGk6IHRoaXMuZG9ja3ZpZXdBcGkgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0Q29yZU9wdGlvbnMoKTogRG9ja3ZpZXdPcHRpb25zIHtcbiAgICAgICAgY29uc3QgY29yZU9wdGlvbnM6IFBhcnRpYWw8RG9ja3ZpZXdDb21wb25lbnRPcHRpb25zPiA9IHt9O1xuXG4gICAgICAgIFBST1BFUlRZX0tFWVNfRE9DS1ZJRVcuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICh0aGlzIGFzIGFueSlba2V5XTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgKGNvcmVPcHRpb25zIGFzIGFueSlba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY29yZU9wdGlvbnMgYXMgRG9ja3ZpZXdPcHRpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRnJhbWV3b3JrT3B0aW9ucygpOiBEb2Nrdmlld0ZyYW1ld29ya09wdGlvbnMge1xuICAgICAgICBjb25zdCBoZWFkZXJBY3Rpb25zQ29tcG9uZW50czogUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+PiA9IHt9O1xuICAgICAgICBpZiAodGhpcy5sZWZ0SGVhZGVyQWN0aW9uc0NvbXBvbmVudCkge1xuICAgICAgICAgICAgaGVhZGVyQWN0aW9uc0NvbXBvbmVudHNbJ2xlZnQnXSA9IHRoaXMubGVmdEhlYWRlckFjdGlvbnNDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmlnaHRIZWFkZXJBY3Rpb25zQ29tcG9uZW50KSB7XG4gICAgICAgICAgICBoZWFkZXJBY3Rpb25zQ29tcG9uZW50c1sncmlnaHQnXSA9IHRoaXMucmlnaHRIZWFkZXJBY3Rpb25zQ29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByZWZpeEhlYWRlckFjdGlvbnNDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGhlYWRlckFjdGlvbnNDb21wb25lbnRzWydwcmVmaXgnXSA9XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVmaXhIZWFkZXJBY3Rpb25zQ29tcG9uZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IG5ldyBBbmd1bGFyRnJhbWV3b3JrQ29tcG9uZW50RmFjdG9yeShcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50cyxcbiAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICB0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgICAgICB0aGlzLnRhYkNvbXBvbmVudHMsXG4gICAgICAgICAgICB0aGlzLndhdGVybWFya0NvbXBvbmVudCxcbiAgICAgICAgICAgIGhlYWRlckFjdGlvbnNDb21wb25lbnRzLFxuICAgICAgICAgICAgdGhpcy5kZWZhdWx0VGFiQ29tcG9uZW50XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNyZWF0ZUNvbXBvbmVudDogKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50RmFjdG9yeS5jcmVhdGVEb2Nrdmlld0NvbXBvbmVudChvcHRpb25zKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjcmVhdGVUYWJDb21wb25lbnQ6IChvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEZhY3RvcnkuY3JlYXRlVGFiQ29tcG9uZW50KG9wdGlvbnMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNyZWF0ZVdhdGVybWFya0NvbXBvbmVudDogdGhpcy53YXRlcm1hcmtDb21wb25lbnRcbiAgICAgICAgICAgICAgICA/ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50RmFjdG9yeS5jcmVhdGVXYXRlcm1hcmtDb21wb25lbnQoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNyZWF0ZUxlZnRIZWFkZXJBY3Rpb25Db21wb25lbnQ6IHRoaXMubGVmdEhlYWRlckFjdGlvbnNDb21wb25lbnRcbiAgICAgICAgICAgICAgICA/IChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZUhlYWRlckFjdGlvbnNDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICkhO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY3JlYXRlUmlnaHRIZWFkZXJBY3Rpb25Db21wb25lbnQ6IHRoaXMucmlnaHRIZWFkZXJBY3Rpb25zQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgPyAoZ3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50RmFjdG9yeS5jcmVhdGVIZWFkZXJBY3Rpb25zQ29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgKSE7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjcmVhdGVQcmVmaXhIZWFkZXJBY3Rpb25Db21wb25lbnQ6IHRoaXMucHJlZml4SGVhZGVyQWN0aW9uc0NvbXBvbmVudFxuICAgICAgICAgICAgICAgID8gKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudEZhY3RvcnkuY3JlYXRlSGVhZGVyQWN0aW9uc0NvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByZWZpeCdcbiAgICAgICAgICAgICAgICAgICAgICApITtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kb2Nrdmlld0FwaSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHVwIGV2ZW50IHN1YnNjcmlwdGlvbnMgdXNpbmcgbGlmZWN5Y2xlIG1hbmFnZXJcbiAgICAgICAgY29uc3QgYXBpID0gdGhpcy5kb2Nrdmlld0FwaTtcblxuICAgICAgICBpZiAodGhpcy5kaWREcm9wLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBkaXNwb3NhYmxlID0gYXBpLm9uRGlkRHJvcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpZERyb3AuZW1pdChldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMubGlmZWN5Y2xlTWFuYWdlci5hZGREaXNwb3NhYmxlKGRpc3Bvc2FibGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMud2lsbERyb3Aub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3Bvc2FibGUgPSBhcGkub25XaWxsRHJvcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLndpbGxEcm9wLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmxpZmVjeWNsZU1hbmFnZXIuYWRkRGlzcG9zYWJsZShkaXNwb3NhYmxlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -444,7 +444,7 @@ class DockviewAngularComponent {
|
|
|
444
444
|
}
|
|
445
445
|
}
|
|
446
446
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DockviewAngularComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
447
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DockviewAngularComponent, isStandalone: true, selector: "dv-dockview", inputs: { components: "components", tabComponents: "tabComponents", watermarkComponent: "watermarkComponent", defaultTabComponent: "defaultTabComponent", leftHeaderActionsComponent: "leftHeaderActionsComponent", rightHeaderActionsComponent: "rightHeaderActionsComponent", prefixHeaderActionsComponent: "prefixHeaderActionsComponent", className: "className", orientation: "orientation", hideBorders: "hideBorders", rootOverlayModel: "rootOverlayModel", defaultTabComponent_: "defaultTabComponent_", tabHeight: "tabHeight", disableFloatingGroups: "disableFloatingGroups", floatingGroupBounds: "floatingGroupBounds", popoutUrl: "popoutUrl", debug: "debug", locked: "locked", disableAutoResizing: "disableAutoResizing", singleTabMode: "singleTabMode" }, outputs: { ready: "ready", didDrop: "didDrop", willDrop: "willDrop" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["dockviewContainer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #dockviewContainer class="dockview-container"></div>', isInline: true, styles: [":host{display:block;width:100%;height:100%}.dockview-container{width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
447
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DockviewAngularComponent, isStandalone: true, selector: "dv-dockview", inputs: { components: "components", tabComponents: "tabComponents", watermarkComponent: "watermarkComponent", defaultTabComponent: "defaultTabComponent", leftHeaderActionsComponent: "leftHeaderActionsComponent", rightHeaderActionsComponent: "rightHeaderActionsComponent", prefixHeaderActionsComponent: "prefixHeaderActionsComponent", className: "className", orientation: "orientation", hideBorders: "hideBorders", rootOverlayModel: "rootOverlayModel", defaultTabComponent_: "defaultTabComponent_", tabHeight: "tabHeight", disableFloatingGroups: "disableFloatingGroups", floatingGroupBounds: "floatingGroupBounds", popoutUrl: "popoutUrl", debug: "debug", locked: "locked", disableAutoResizing: "disableAutoResizing", singleTabMode: "singleTabMode", tabAnimation: "tabAnimation" }, outputs: { ready: "ready", didDrop: "didDrop", willDrop: "willDrop" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["dockviewContainer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #dockviewContainer class="dockview-container"></div>', isInline: true, styles: [":host{display:block;width:100%;height:100%}.dockview-container{width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
448
448
|
}
|
|
449
449
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DockviewAngularComponent, decorators: [{
|
|
450
450
|
type: Component,
|
|
@@ -492,6 +492,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
492
492
|
type: Input
|
|
493
493
|
}], singleTabMode: [{
|
|
494
494
|
type: Input
|
|
495
|
+
}], tabAnimation: [{
|
|
496
|
+
type: Input
|
|
495
497
|
}], ready: [{
|
|
496
498
|
type: Output
|
|
497
499
|
}], didDrop: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dockview-angular.mjs","sources":["../../src/lib/utils/angular-renderer.ts","../../src/lib/gridview/angular-gridview-panel.ts","../../src/lib/splitview/angular-splitview-panel.ts","../../src/lib/paneview/angular-pane-part.ts","../../src/lib/utils/component-factory.ts","../../src/lib/utils/lifecycle-utils.ts","../../src/lib/dockview/dockview-angular.component.ts","../../src/lib/gridview/gridview-angular.component.ts","../../src/lib/paneview/paneview-angular.component.ts","../../src/lib/splitview/splitview-angular.component.ts","../../src/lib/dockview-angular.module.ts","../../src/public-api.ts","../../src/dockview-angular.ts"],"sourcesContent":["import {\n ComponentRef,\n Injector,\n Type,\n EmbeddedViewRef,\n createComponent,\n EnvironmentInjector,\n ApplicationRef,\n} from '@angular/core';\nimport { IContentRenderer, IFrameworkPart, Parameters } from 'dockview-core';\n\nexport interface AngularRendererOptions<T = any> {\n component: Type<T>;\n injector: Injector;\n environmentInjector?: EnvironmentInjector;\n}\n\nexport class AngularRenderer<T = any>\n implements IContentRenderer, IFrameworkPart\n{\n private componentRef: ComponentRef<T> | null = null;\n private _element: HTMLElement | null = null;\n private appRef: ApplicationRef;\n\n constructor(private options: AngularRendererOptions<T>) {\n this.appRef = options.injector.get(ApplicationRef);\n }\n\n get element(): HTMLElement {\n if (!this._element) {\n throw new Error('Angular renderer not initialized');\n }\n return this._element;\n }\n\n get component(): ComponentRef<T> | null {\n return this.componentRef;\n }\n\n init(parameters: Parameters): void {\n // Only forward params, api, and containerApi to the component\n // (matching the React renderer). Other init parameters like\n // 'title' are internal to the framework.\n const filtered: Record<string, unknown> = {};\n if ('params' in parameters) {\n filtered['params'] = parameters['params'];\n }\n if ('api' in parameters) {\n filtered['api'] = parameters['api'];\n }\n if ('containerApi' in parameters) {\n filtered['containerApi'] = parameters['containerApi'];\n }\n\n if (this.componentRef) {\n this.update(filtered);\n } else {\n this.render(filtered);\n }\n }\n\n update(params: Parameters): void {\n if (!this.componentRef) {\n return;\n }\n\n const instance = this.componentRef.instance as Record<string, unknown>;\n\n for (const key of Object.keys(params)) {\n if (key in instance) {\n instance[key] = params[key];\n }\n }\n\n // trigger change detection\n this.componentRef.changeDetectorRef.markForCheck();\n }\n\n private render(parameters: Parameters): void {\n try {\n // Create the component using modern Angular API\n this.componentRef = createComponent(this.options.component, {\n environmentInjector:\n this.options.environmentInjector ||\n (this.options.injector as EnvironmentInjector),\n elementInjector: this.options.injector,\n });\n\n // Set initial parameters\n this.update(parameters);\n\n // Get the DOM element\n const hostView = this.componentRef.hostView as EmbeddedViewRef<any>;\n this._element = hostView.rootNodes[0] as HTMLElement;\n\n // attach to change detection\n this.appRef.attachView(hostView);\n\n // trigger change detection\n this.componentRef.changeDetectorRef.markForCheck();\n } catch (error) {\n console.error('Error creating Angular component:', error);\n throw error;\n }\n }\n\n dispose(): void {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n this._element = null;\n }\n}\n","import { Type, Injector, EnvironmentInjector } from '@angular/core';\nimport { GridviewPanel, IFrameworkPart } from 'dockview-core';\nimport { AngularRenderer } from '../utils/angular-renderer';\n\nexport class AngularGridviewPanel extends GridviewPanel {\n constructor(\n id: string,\n component: string,\n private readonly angularComponent: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n super(id, component);\n }\n\n getComponent(): IFrameworkPart {\n const renderer = new AngularRenderer({\n component: this.angularComponent,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n renderer.init({\n params: this._params?.params ?? {},\n api: this.api,\n });\n this.element.appendChild(renderer.element);\n return renderer;\n }\n}\n","import { Type, Injector, EnvironmentInjector } from '@angular/core';\nimport { SplitviewPanel, IFrameworkPart } from 'dockview-core';\nimport { AngularRenderer } from '../utils/angular-renderer';\n\nexport class AngularSplitviewPanel extends SplitviewPanel {\n constructor(\n id: string,\n component: string,\n private readonly angularComponent: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n super(id, component);\n }\n\n getComponent(): IFrameworkPart {\n const renderer = new AngularRenderer({\n component: this.angularComponent,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n renderer.init({\n params: this._params?.params ?? {},\n api: this.api,\n });\n this.element.appendChild(renderer.element);\n return renderer;\n }\n}\n","import { Type, Injector, EnvironmentInjector } from '@angular/core';\nimport {\n IPanePart,\n PanelUpdateEvent,\n PanePanelComponentInitParameter,\n} from 'dockview-core';\nimport { AngularRenderer } from '../utils/angular-renderer';\n\nexport class AngularPanePart implements IPanePart {\n private renderer: AngularRenderer;\n\n constructor(\n private readonly angularComponent: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n this.renderer = new AngularRenderer({\n component: this.angularComponent,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n }\n\n get element(): HTMLElement {\n return this.renderer.element;\n }\n\n init(parameters: PanePanelComponentInitParameter): void {\n this.renderer.init(parameters);\n }\n\n update(params: PanelUpdateEvent): void {\n this.renderer.update(params);\n }\n\n dispose(): void {\n this.renderer.dispose();\n }\n}\n","import { Type, Injector, EnvironmentInjector } from '@angular/core';\nimport {\n IContentRenderer,\n ITabRenderer,\n IWatermarkRenderer,\n IHeaderActionsRenderer,\n CreateComponentOptions,\n GridviewPanel,\n SplitviewPanel,\n IPanePart,\n} from 'dockview-core';\nimport { AngularRenderer } from './angular-renderer';\nimport { AngularGridviewPanel } from '../gridview/angular-gridview-panel';\nimport { AngularSplitviewPanel } from '../splitview/angular-splitview-panel';\nimport { AngularPanePart } from '../paneview/angular-pane-part';\n\nexport class AngularFrameworkComponentFactory {\n constructor(\n private components: Record<string, Type<any>>,\n private injector: Injector,\n private environmentInjector?: EnvironmentInjector,\n private tabComponents?: Record<string, Type<any>>,\n private watermarkComponent?: Type<any>,\n private headerActionsComponents?: Record<string, Type<any>>,\n private defaultTabComponent?: Type<any>\n ) {}\n\n // For DockviewComponent\n createDockviewComponent(options: CreateComponentOptions): IContentRenderer {\n const component = this.components[options.name];\n if (!component) {\n throw new Error(\n `Component '${options.name}' not found in component registry`\n );\n }\n\n const renderer = new AngularRenderer({\n component,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n\n renderer.init(options);\n return renderer;\n }\n\n // For GridviewComponent\n createGridviewComponent(options: CreateComponentOptions): GridviewPanel {\n const component = this.components[options.name];\n if (!component) {\n throw new Error(\n `Component '${options.name}' not found in component registry`\n );\n }\n\n return new AngularGridviewPanel(\n options.id,\n options.name,\n component,\n this.injector,\n this.environmentInjector\n );\n }\n\n // For SplitviewComponent\n createSplitviewComponent(options: CreateComponentOptions): SplitviewPanel {\n const component = this.components[options.name];\n if (!component) {\n throw new Error(\n `Component '${options.name}' not found in component registry`\n );\n }\n\n return new AngularSplitviewPanel(\n options.id,\n options.name,\n component,\n this.injector,\n this.environmentInjector\n );\n }\n\n // For PaneviewComponent\n createPaneviewComponent(options: CreateComponentOptions): IPanePart {\n const component = this.components[options.name];\n if (!component) {\n throw new Error(\n `Component '${options.name}' not found in component registry`\n );\n }\n\n return new AngularPanePart(\n component,\n this.injector,\n this.environmentInjector\n );\n }\n\n // Legacy method for backward compatibility\n createComponent(options: CreateComponentOptions): IContentRenderer {\n return this.createDockviewComponent(options);\n }\n\n createTabComponent(\n options: CreateComponentOptions\n ): ITabRenderer | undefined {\n let component = this.tabComponents?.[options.name];\n\n if (!component && this.defaultTabComponent) {\n component = this.defaultTabComponent;\n }\n\n if (!component) {\n return undefined;\n }\n\n const renderer = new AngularRenderer({\n component,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n\n renderer.init(options);\n return renderer;\n }\n\n createWatermarkComponent(): IWatermarkRenderer {\n if (!this.watermarkComponent) {\n throw new Error('Watermark component not provided');\n }\n\n const renderer = new AngularRenderer({\n component: this.watermarkComponent,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n\n renderer.init({});\n return renderer;\n }\n\n createHeaderActionsComponent(\n name: string\n ): IHeaderActionsRenderer | undefined {\n const component = this.headerActionsComponents?.[name];\n if (!component) {\n return undefined;\n }\n\n const renderer = new AngularRenderer({\n component,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n\n // Initialize with empty props - dockview-core will call init() again with actual IGroupHeaderProps\n renderer.init({});\n return renderer;\n }\n}\n","import { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DockviewIDisposable } from 'dockview-core';\n\nexport class AngularDisposable implements DockviewIDisposable {\n private _isDisposed = false;\n private disposeCallbacks: (() => void)[] = [];\n\n get isDisposed(): boolean {\n return this._isDisposed;\n }\n\n addDisposeCallback(callback: () => void): void {\n if (this._isDisposed) {\n callback();\n return;\n }\n this.disposeCallbacks.push(callback);\n }\n\n dispose(): void {\n if (this._isDisposed) {\n return;\n }\n\n this._isDisposed = true;\n this.disposeCallbacks.forEach((callback) => {\n try {\n callback();\n } catch (error) {\n console.error('Error in dispose callback:', error);\n }\n });\n this.disposeCallbacks = [];\n }\n}\n\nexport class AngularLifecycleManager {\n private destroySubject = new Subject<void>();\n private disposables: DockviewIDisposable[] = [];\n\n get destroy$(): Observable<void> {\n return this.destroySubject.asObservable();\n }\n\n addDisposable(disposable: DockviewIDisposable): void {\n this.disposables.push(disposable);\n }\n\n takeUntilDestroy<T>(): (source: Observable<T>) => Observable<T> {\n return takeUntil(this.destroySubject);\n }\n\n destroy(): void {\n this.destroySubject.next();\n this.destroySubject.complete();\n\n this.disposables.forEach((disposable) => {\n try {\n disposable.dispose();\n } catch (error) {\n console.error('Error disposing resource:', error);\n }\n });\n this.disposables = [];\n }\n}\n\nexport function createAngularDisposable(\n disposeCallback?: () => void\n): AngularDisposable {\n const disposable = new AngularDisposable();\n if (disposeCallback) {\n disposable.addDisposeCallback(disposeCallback);\n }\n return disposable;\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n EnvironmentInjector,\n inject,\n} from '@angular/core';\nimport {\n DockviewApi,\n DockviewOptions,\n DockviewReadyEvent,\n DockviewDidDropEvent,\n DockviewWillDropEvent,\n createDockview,\n PROPERTY_KEYS_DOCKVIEW,\n DockviewFrameworkOptions,\n DockviewComponentOptions,\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\n\nexport interface DockviewAngularOptions extends DockviewOptions {\n components: Record<string, Type<any>>;\n tabComponents?: Record<string, Type<any>>;\n watermarkComponent?: Type<any>;\n defaultTabComponent?: Type<any>;\n leftHeaderActionsComponent?: Type<any>;\n rightHeaderActionsComponent?: Type<any>;\n prefixHeaderActionsComponent?: Type<any>;\n}\n\n@Component({\n selector: 'dv-dockview',\n standalone: true,\n template: '<div #dockviewContainer class=\"dockview-container\"></div>',\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .dockview-container {\n width: 100%;\n height: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DockviewAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('dockviewContainer', { static: true })\n private containerRef!: ElementRef<HTMLDivElement>;\n\n @Input() components!: Record<string, Type<any>>;\n @Input() tabComponents?: Record<string, Type<any>>;\n @Input() watermarkComponent?: Type<any>;\n @Input() defaultTabComponent?: Type<any>;\n @Input() leftHeaderActionsComponent?: Type<any>;\n @Input() rightHeaderActionsComponent?: Type<any>;\n @Input() prefixHeaderActionsComponent?: Type<any>;\n\n // Core dockview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() hideBorders?: boolean;\n @Input() rootOverlayModel?: 'always' | 'never';\n @Input() defaultTabComponent_?: string;\n @Input() tabHeight?: number;\n @Input() disableFloatingGroups?: boolean;\n @Input() floatingGroupBounds?: 'boundedWithinViewport';\n @Input() popoutUrl?: string;\n @Input() debug?: boolean;\n @Input() locked?: boolean;\n @Input() disableAutoResizing?: boolean;\n @Input() singleTabMode?: 'fullwidth' | 'default';\n\n @Output() ready = new EventEmitter<DockviewReadyEvent>();\n @Output() didDrop = new EventEmitter<DockviewDidDropEvent>();\n @Output() willDrop = new EventEmitter<DockviewWillDropEvent>();\n\n private dockviewApi?: DockviewApi;\n private lifecycleManager = new AngularLifecycleManager();\n private injector = inject(Injector);\n private environmentInjector = inject(EnvironmentInjector);\n\n ngOnInit(): void {\n this.initializeDockview();\n }\n\n ngOnDestroy(): void {\n this.lifecycleManager.destroy();\n if (this.dockviewApi) {\n this.dockviewApi.dispose();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.dockviewApi) {\n const coreChanges: Partial<DockviewOptions> = {};\n let hasChanges = false;\n\n // Check for changes in core dockview properties\n PROPERTY_KEYS_DOCKVIEW.forEach((key) => {\n if (changes[key] && !changes[key].isFirstChange()) {\n (coreChanges as any)[key] = changes[key].currentValue;\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.dockviewApi.updateOptions(coreChanges);\n }\n }\n }\n\n getDockviewApi(): DockviewApi | undefined {\n return this.dockviewApi;\n }\n\n private initializeDockview(): void {\n if (!this.components) {\n throw new Error(\n 'DockviewAngularComponent: components input is required'\n );\n }\n\n const coreOptions = this.extractCoreOptions();\n const frameworkOptions = this.createFrameworkOptions();\n\n this.dockviewApi = createDockview(this.containerRef.nativeElement, {\n ...coreOptions,\n ...frameworkOptions,\n });\n\n // Set up event listeners\n this.setupEventListeners();\n\n // Emit ready event\n this.ready.emit({ api: this.dockviewApi });\n }\n\n private extractCoreOptions(): DockviewOptions {\n const coreOptions: Partial<DockviewComponentOptions> = {};\n\n PROPERTY_KEYS_DOCKVIEW.forEach((key) => {\n const value = (this as any)[key];\n if (value !== undefined) {\n (coreOptions as any)[key] = value;\n }\n });\n\n return coreOptions as DockviewOptions;\n }\n\n private createFrameworkOptions(): DockviewFrameworkOptions {\n const headerActionsComponents: Record<string, Type<any>> = {};\n if (this.leftHeaderActionsComponent) {\n headerActionsComponents['left'] = this.leftHeaderActionsComponent;\n }\n if (this.rightHeaderActionsComponent) {\n headerActionsComponents['right'] = this.rightHeaderActionsComponent;\n }\n if (this.prefixHeaderActionsComponent) {\n headerActionsComponents['prefix'] =\n this.prefixHeaderActionsComponent;\n }\n\n const componentFactory = new AngularFrameworkComponentFactory(\n this.components,\n this.injector,\n this.environmentInjector,\n this.tabComponents,\n this.watermarkComponent,\n headerActionsComponents,\n this.defaultTabComponent\n );\n\n return {\n createComponent: (options) => {\n return componentFactory.createDockviewComponent(options);\n },\n createTabComponent: (options) => {\n return componentFactory.createTabComponent(options);\n },\n createWatermarkComponent: this.watermarkComponent\n ? () => {\n return componentFactory.createWatermarkComponent();\n }\n : undefined,\n createLeftHeaderActionComponent: this.leftHeaderActionsComponent\n ? (group) => {\n return componentFactory.createHeaderActionsComponent(\n 'left'\n )!;\n }\n : undefined,\n createRightHeaderActionComponent: this.rightHeaderActionsComponent\n ? (group) => {\n return componentFactory.createHeaderActionsComponent(\n 'right'\n )!;\n }\n : undefined,\n createPrefixHeaderActionComponent: this.prefixHeaderActionsComponent\n ? (group) => {\n return componentFactory.createHeaderActionsComponent(\n 'prefix'\n )!;\n }\n : undefined,\n };\n }\n\n private setupEventListeners(): void {\n if (!this.dockviewApi) {\n return;\n }\n\n // Set up event subscriptions using lifecycle manager\n const api = this.dockviewApi;\n\n if (this.didDrop.observers.length > 0) {\n const disposable = api.onDidDrop((event) => {\n this.didDrop.emit(event);\n });\n this.lifecycleManager.addDisposable(disposable);\n }\n\n if (this.willDrop.observers.length > 0) {\n const disposable = api.onWillDrop((event) => {\n this.willDrop.emit(event);\n });\n this.lifecycleManager.addDisposable(disposable);\n }\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n EnvironmentInjector,\n inject,\n} from '@angular/core';\nimport {\n GridviewApi,\n GridviewOptions,\n createGridview,\n PROPERTY_KEYS_GRIDVIEW,\n GridviewFrameworkOptions,\n GridviewComponentOptions,\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\nimport { GridviewAngularReadyEvent } from './types';\n\nexport interface GridviewAngularOptions extends GridviewOptions {\n components: Record<string, Type<any>>;\n}\n\n@Component({\n selector: 'dv-gridview',\n standalone: true,\n template: '<div #gridviewContainer class=\"gridview-container\"></div>',\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .gridview-container {\n width: 100%;\n height: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GridviewAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('gridviewContainer', { static: true })\n private containerRef!: ElementRef<HTMLDivElement>;\n\n @Input() components!: Record<string, Type<any>>;\n\n // Core gridview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() proportionalLayout?: boolean;\n @Input() hideBorders?: boolean;\n @Input() debug?: boolean;\n @Input() disableAutoResizing?: boolean;\n\n @Output() ready = new EventEmitter<GridviewAngularReadyEvent>();\n\n private gridviewApi?: GridviewApi;\n private lifecycleManager = new AngularLifecycleManager();\n private injector = inject(Injector);\n private environmentInjector = inject(EnvironmentInjector);\n\n ngOnInit(): void {\n this.initializeGridview();\n }\n\n ngOnDestroy(): void {\n this.lifecycleManager.destroy();\n if (this.gridviewApi) {\n this.gridviewApi.dispose();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.gridviewApi) {\n const coreChanges: Partial<GridviewOptions> = {};\n let hasChanges = false;\n\n // Check for changes in core gridview properties\n PROPERTY_KEYS_GRIDVIEW.forEach((key) => {\n if (changes[key] && !changes[key].isFirstChange()) {\n (coreChanges as any)[key] = changes[key].currentValue;\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.gridviewApi.updateOptions(coreChanges);\n }\n }\n }\n\n getGridviewApi(): GridviewApi | undefined {\n return this.gridviewApi;\n }\n\n private initializeGridview(): void {\n if (!this.components) {\n throw new Error(\n 'GridviewAngularComponent: components input is required'\n );\n }\n\n const coreOptions = this.extractCoreOptions();\n const frameworkOptions = this.createFrameworkOptions();\n\n this.gridviewApi = createGridview(this.containerRef.nativeElement, {\n ...coreOptions,\n ...frameworkOptions,\n });\n\n // Emit ready event\n this.ready.emit({ api: this.gridviewApi });\n }\n\n private extractCoreOptions(): GridviewOptions {\n const coreOptions: Partial<GridviewComponentOptions> = {};\n\n PROPERTY_KEYS_GRIDVIEW.forEach((key) => {\n const value = (this as any)[key];\n if (value !== undefined) {\n (coreOptions as any)[key] = value;\n }\n });\n\n return coreOptions as GridviewOptions;\n }\n\n private createFrameworkOptions(): GridviewFrameworkOptions {\n const componentFactory = new AngularFrameworkComponentFactory(\n this.components,\n this.injector,\n this.environmentInjector\n );\n\n return {\n createComponent: (options) => {\n return componentFactory.createGridviewComponent(options);\n },\n };\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n EnvironmentInjector,\n inject,\n} from '@angular/core';\nimport {\n PaneviewApi,\n PaneviewOptions,\n PaneviewDropEvent,\n createPaneview,\n PROPERTY_KEYS_PANEVIEW,\n PaneviewFrameworkOptions,\n PaneviewComponentOptions,\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\nimport { PaneviewAngularReadyEvent } from './types';\nimport { AngularPanePart } from './angular-pane-part';\n\nexport interface PaneviewAngularOptions extends PaneviewOptions {\n components: Record<string, Type<any>>;\n headerComponents?: Record<string, Type<any>>;\n}\n\n@Component({\n selector: 'dv-paneview',\n standalone: true,\n template: '<div #paneviewContainer class=\"paneview-container\"></div>',\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .paneview-container {\n width: 100%;\n height: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaneviewAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('paneviewContainer', { static: true })\n private containerRef!: ElementRef<HTMLDivElement>;\n\n @Input() components!: Record<string, Type<any>>;\n @Input() headerComponents?: Record<string, Type<any>>;\n\n // Core paneview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() hideBorders?: boolean;\n @Input() debug?: boolean;\n @Input() disableAutoResizing?: boolean;\n\n @Output() ready = new EventEmitter<PaneviewAngularReadyEvent>();\n @Output() drop = new EventEmitter<PaneviewDropEvent>();\n\n private paneviewApi?: PaneviewApi;\n private lifecycleManager = new AngularLifecycleManager();\n private injector = inject(Injector);\n private environmentInjector = inject(EnvironmentInjector);\n\n ngOnInit(): void {\n this.initializePaneview();\n }\n\n ngOnDestroy(): void {\n this.lifecycleManager.destroy();\n if (this.paneviewApi) {\n this.paneviewApi.dispose();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.paneviewApi) {\n const coreChanges: Partial<PaneviewOptions> = {};\n let hasChanges = false;\n\n // Check for changes in core paneview properties\n PROPERTY_KEYS_PANEVIEW.forEach((key) => {\n if (changes[key] && !changes[key].isFirstChange()) {\n (coreChanges as any)[key] = changes[key].currentValue;\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.paneviewApi.updateOptions(coreChanges);\n }\n }\n }\n\n getPaneviewApi(): PaneviewApi | undefined {\n return this.paneviewApi;\n }\n\n private initializePaneview(): void {\n if (!this.components) {\n throw new Error(\n 'PaneviewAngularComponent: components input is required'\n );\n }\n\n const coreOptions = this.extractCoreOptions();\n const frameworkOptions = this.createFrameworkOptions();\n\n this.paneviewApi = createPaneview(this.containerRef.nativeElement, {\n ...coreOptions,\n ...frameworkOptions,\n });\n\n // Set up event listeners\n this.setupEventListeners();\n\n // Emit ready event\n this.ready.emit({ api: this.paneviewApi });\n }\n\n private extractCoreOptions(): PaneviewOptions {\n const coreOptions: Partial<PaneviewComponentOptions> = {};\n\n PROPERTY_KEYS_PANEVIEW.forEach((key) => {\n const value = (this as any)[key];\n if (value !== undefined) {\n (coreOptions as any)[key] = value;\n }\n });\n\n return coreOptions as PaneviewOptions;\n }\n\n private createFrameworkOptions(): PaneviewFrameworkOptions {\n const componentFactory = new AngularFrameworkComponentFactory(\n this.components,\n this.injector,\n this.environmentInjector,\n this.headerComponents\n );\n\n return {\n createComponent: (options) => {\n return componentFactory.createPaneviewComponent(options);\n },\n createHeaderComponent: this.headerComponents\n ? (options) => {\n return new AngularPanePart(\n this.headerComponents![options.name],\n this.injector,\n this.environmentInjector\n );\n }\n : undefined,\n };\n }\n\n private setupEventListeners(): void {\n if (!this.paneviewApi) {\n return;\n }\n\n // Set up event subscriptions using lifecycle manager\n const api = this.paneviewApi;\n\n if (this.drop.observers.length > 0) {\n const disposable = api.onDidDrop((event) => {\n this.drop.emit(event);\n });\n this.lifecycleManager.addDisposable(disposable);\n }\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n EnvironmentInjector,\n inject,\n} from '@angular/core';\nimport {\n SplitviewApi,\n SplitviewOptions,\n createSplitview,\n PROPERTY_KEYS_SPLITVIEW,\n SplitviewFrameworkOptions,\n SplitviewComponentOptions,\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\nimport { SplitviewAngularReadyEvent } from './types';\n\nexport interface SplitviewAngularOptions extends SplitviewOptions {\n components: Record<string, Type<any>>;\n}\n\n@Component({\n selector: 'dv-splitview',\n standalone: true,\n template: '<div #splitviewContainer class=\"splitview-container\"></div>',\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .splitview-container {\n width: 100%;\n height: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SplitviewAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('splitviewContainer', { static: true })\n private containerRef!: ElementRef<HTMLDivElement>;\n\n @Input() components!: Record<string, Type<any>>;\n\n // Core splitview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() proportionalLayout?: boolean;\n @Input() hideBorders?: boolean;\n @Input() debug?: boolean;\n @Input() disableAutoResizing?: boolean;\n\n @Output() ready = new EventEmitter<SplitviewAngularReadyEvent>();\n\n private splitviewApi?: SplitviewApi;\n private lifecycleManager = new AngularLifecycleManager();\n private injector = inject(Injector);\n private environmentInjector = inject(EnvironmentInjector);\n\n ngOnInit(): void {\n this.initializeSplitview();\n }\n\n ngOnDestroy(): void {\n this.lifecycleManager.destroy();\n if (this.splitviewApi) {\n this.splitviewApi.dispose();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.splitviewApi) {\n const coreChanges: Partial<SplitviewOptions> = {};\n let hasChanges = false;\n\n // Check for changes in core splitview properties\n PROPERTY_KEYS_SPLITVIEW.forEach((key) => {\n if (changes[key] && !changes[key].isFirstChange()) {\n (coreChanges as any)[key] = changes[key].currentValue;\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.splitviewApi.updateOptions(coreChanges);\n }\n }\n }\n\n getSplitviewApi(): SplitviewApi | undefined {\n return this.splitviewApi;\n }\n\n private initializeSplitview(): void {\n if (!this.components) {\n throw new Error(\n 'SplitviewAngularComponent: components input is required'\n );\n }\n\n const coreOptions = this.extractCoreOptions();\n const frameworkOptions = this.createFrameworkOptions();\n\n this.splitviewApi = createSplitview(this.containerRef.nativeElement, {\n ...coreOptions,\n ...frameworkOptions,\n });\n\n // Emit ready event\n this.ready.emit({ api: this.splitviewApi });\n }\n\n private extractCoreOptions(): SplitviewOptions {\n const coreOptions: Partial<SplitviewComponentOptions> = {};\n\n PROPERTY_KEYS_SPLITVIEW.forEach((key) => {\n const value = (this as any)[key];\n if (value !== undefined) {\n (coreOptions as any)[key] = value;\n }\n });\n\n return coreOptions as SplitviewOptions;\n }\n\n private createFrameworkOptions(): SplitviewFrameworkOptions {\n const componentFactory = new AngularFrameworkComponentFactory(\n this.components,\n this.injector,\n this.environmentInjector\n );\n\n return {\n createComponent: (options) => {\n return componentFactory.createSplitviewComponent(options);\n },\n };\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { DockviewAngularComponent } from './dockview/dockview-angular.component';\nimport { GridviewAngularComponent } from './gridview/gridview-angular.component';\nimport { PaneviewAngularComponent } from './paneview/paneview-angular.component';\nimport { SplitviewAngularComponent } from './splitview/splitview-angular.component';\n\n@NgModule({\n imports: [\n CommonModule,\n DockviewAngularComponent,\n GridviewAngularComponent,\n PaneviewAngularComponent,\n SplitviewAngularComponent,\n ],\n exports: [\n DockviewAngularComponent,\n GridviewAngularComponent,\n PaneviewAngularComponent,\n SplitviewAngularComponent,\n ],\n})\nexport class DockviewAngularModule {}\n","/*\n * Public API Surface of dockview-angular\n */\n\n// Re-export everything from dockview-core\nexport * from 'dockview-core';\n\n// Angular module\nexport * from './lib/dockview-angular.module';\n\n// Components\nexport * from './lib/dockview/dockview-angular.component';\nexport * from './lib/gridview/gridview-angular.component';\nexport * from './lib/paneview/paneview-angular.component';\nexport * from './lib/splitview/splitview-angular.component';\n\n// Types\nexport {\n DockviewAngularOptions,\n DockviewAngularEvents,\n IDockviewAngularPanelProps,\n IDockviewAngularPanelHeaderProps,\n IDockviewAngularWatermarkProps,\n IDockviewAngularHeaderActionsProps,\n DockviewAngularComponentOptions,\n} from './lib/dockview/types';\nexport {\n GridviewAngularOptions,\n GridviewAngularEvents,\n GridviewAngularReadyEvent,\n} from './lib/gridview/types';\nexport {\n PaneviewAngularOptions,\n PaneviewAngularEvents,\n PaneviewAngularReadyEvent,\n} from './lib/paneview/types';\nexport {\n SplitviewAngularOptions,\n SplitviewAngularEvents,\n SplitviewAngularReadyEvent,\n} from './lib/splitview/types';\n\n// Utilities\nexport * from './lib/utils/angular-renderer';\nexport * from './lib/utils/component-factory';\nexport * from './lib/utils/lifecycle-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dockview-angular.mjs","sources":["../../src/lib/utils/angular-renderer.ts","../../src/lib/gridview/angular-gridview-panel.ts","../../src/lib/splitview/angular-splitview-panel.ts","../../src/lib/paneview/angular-pane-part.ts","../../src/lib/utils/component-factory.ts","../../src/lib/utils/lifecycle-utils.ts","../../src/lib/dockview/dockview-angular.component.ts","../../src/lib/gridview/gridview-angular.component.ts","../../src/lib/paneview/paneview-angular.component.ts","../../src/lib/splitview/splitview-angular.component.ts","../../src/lib/dockview-angular.module.ts","../../src/public-api.ts","../../src/dockview-angular.ts"],"sourcesContent":["import {\n ComponentRef,\n Injector,\n Type,\n EmbeddedViewRef,\n createComponent,\n EnvironmentInjector,\n ApplicationRef,\n} from '@angular/core';\nimport { IContentRenderer, IFrameworkPart, Parameters } from 'dockview-core';\n\nexport interface AngularRendererOptions<T = any> {\n component: Type<T>;\n injector: Injector;\n environmentInjector?: EnvironmentInjector;\n}\n\nexport class AngularRenderer<T = any>\n implements IContentRenderer, IFrameworkPart\n{\n private componentRef: ComponentRef<T> | null = null;\n private _element: HTMLElement | null = null;\n private appRef: ApplicationRef;\n\n constructor(private options: AngularRendererOptions<T>) {\n this.appRef = options.injector.get(ApplicationRef);\n }\n\n get element(): HTMLElement {\n if (!this._element) {\n throw new Error('Angular renderer not initialized');\n }\n return this._element;\n }\n\n get component(): ComponentRef<T> | null {\n return this.componentRef;\n }\n\n init(parameters: Parameters): void {\n // Only forward params, api, and containerApi to the component\n // (matching the React renderer). Other init parameters like\n // 'title' are internal to the framework.\n const filtered: Record<string, unknown> = {};\n if ('params' in parameters) {\n filtered['params'] = parameters['params'];\n }\n if ('api' in parameters) {\n filtered['api'] = parameters['api'];\n }\n if ('containerApi' in parameters) {\n filtered['containerApi'] = parameters['containerApi'];\n }\n\n if (this.componentRef) {\n this.update(filtered);\n } else {\n this.render(filtered);\n }\n }\n\n update(params: Parameters): void {\n if (!this.componentRef) {\n return;\n }\n\n const instance = this.componentRef.instance as Record<string, unknown>;\n\n for (const key of Object.keys(params)) {\n if (key in instance) {\n instance[key] = params[key];\n }\n }\n\n // trigger change detection\n this.componentRef.changeDetectorRef.markForCheck();\n }\n\n private render(parameters: Parameters): void {\n try {\n // Create the component using modern Angular API\n this.componentRef = createComponent(this.options.component, {\n environmentInjector:\n this.options.environmentInjector ||\n (this.options.injector as EnvironmentInjector),\n elementInjector: this.options.injector,\n });\n\n // Set initial parameters\n this.update(parameters);\n\n // Get the DOM element\n const hostView = this.componentRef.hostView as EmbeddedViewRef<any>;\n this._element = hostView.rootNodes[0] as HTMLElement;\n\n // attach to change detection\n this.appRef.attachView(hostView);\n\n // trigger change detection\n this.componentRef.changeDetectorRef.markForCheck();\n } catch (error) {\n console.error('Error creating Angular component:', error);\n throw error;\n }\n }\n\n dispose(): void {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n this._element = null;\n }\n}\n","import { Type, Injector, EnvironmentInjector } from '@angular/core';\nimport { GridviewPanel, IFrameworkPart } from 'dockview-core';\nimport { AngularRenderer } from '../utils/angular-renderer';\n\nexport class AngularGridviewPanel extends GridviewPanel {\n constructor(\n id: string,\n component: string,\n private readonly angularComponent: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n super(id, component);\n }\n\n getComponent(): IFrameworkPart {\n const renderer = new AngularRenderer({\n component: this.angularComponent,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n renderer.init({\n params: this._params?.params ?? {},\n api: this.api,\n });\n this.element.appendChild(renderer.element);\n return renderer;\n }\n}\n","import { Type, Injector, EnvironmentInjector } from '@angular/core';\nimport { SplitviewPanel, IFrameworkPart } from 'dockview-core';\nimport { AngularRenderer } from '../utils/angular-renderer';\n\nexport class AngularSplitviewPanel extends SplitviewPanel {\n constructor(\n id: string,\n component: string,\n private readonly angularComponent: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n super(id, component);\n }\n\n getComponent(): IFrameworkPart {\n const renderer = new AngularRenderer({\n component: this.angularComponent,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n renderer.init({\n params: this._params?.params ?? {},\n api: this.api,\n });\n this.element.appendChild(renderer.element);\n return renderer;\n }\n}\n","import { Type, Injector, EnvironmentInjector } from '@angular/core';\nimport {\n IPanePart,\n PanelUpdateEvent,\n PanePanelComponentInitParameter,\n} from 'dockview-core';\nimport { AngularRenderer } from '../utils/angular-renderer';\n\nexport class AngularPanePart implements IPanePart {\n private renderer: AngularRenderer;\n\n constructor(\n private readonly angularComponent: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n this.renderer = new AngularRenderer({\n component: this.angularComponent,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n }\n\n get element(): HTMLElement {\n return this.renderer.element;\n }\n\n init(parameters: PanePanelComponentInitParameter): void {\n this.renderer.init(parameters);\n }\n\n update(params: PanelUpdateEvent): void {\n this.renderer.update(params);\n }\n\n dispose(): void {\n this.renderer.dispose();\n }\n}\n","import { Type, Injector, EnvironmentInjector } from '@angular/core';\nimport {\n IContentRenderer,\n ITabRenderer,\n IWatermarkRenderer,\n IHeaderActionsRenderer,\n CreateComponentOptions,\n GridviewPanel,\n SplitviewPanel,\n IPanePart,\n} from 'dockview-core';\nimport { AngularRenderer } from './angular-renderer';\nimport { AngularGridviewPanel } from '../gridview/angular-gridview-panel';\nimport { AngularSplitviewPanel } from '../splitview/angular-splitview-panel';\nimport { AngularPanePart } from '../paneview/angular-pane-part';\n\nexport class AngularFrameworkComponentFactory {\n constructor(\n private components: Record<string, Type<any>>,\n private injector: Injector,\n private environmentInjector?: EnvironmentInjector,\n private tabComponents?: Record<string, Type<any>>,\n private watermarkComponent?: Type<any>,\n private headerActionsComponents?: Record<string, Type<any>>,\n private defaultTabComponent?: Type<any>\n ) {}\n\n // For DockviewComponent\n createDockviewComponent(options: CreateComponentOptions): IContentRenderer {\n const component = this.components[options.name];\n if (!component) {\n throw new Error(\n `Component '${options.name}' not found in component registry`\n );\n }\n\n const renderer = new AngularRenderer({\n component,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n\n renderer.init(options);\n return renderer;\n }\n\n // For GridviewComponent\n createGridviewComponent(options: CreateComponentOptions): GridviewPanel {\n const component = this.components[options.name];\n if (!component) {\n throw new Error(\n `Component '${options.name}' not found in component registry`\n );\n }\n\n return new AngularGridviewPanel(\n options.id,\n options.name,\n component,\n this.injector,\n this.environmentInjector\n );\n }\n\n // For SplitviewComponent\n createSplitviewComponent(options: CreateComponentOptions): SplitviewPanel {\n const component = this.components[options.name];\n if (!component) {\n throw new Error(\n `Component '${options.name}' not found in component registry`\n );\n }\n\n return new AngularSplitviewPanel(\n options.id,\n options.name,\n component,\n this.injector,\n this.environmentInjector\n );\n }\n\n // For PaneviewComponent\n createPaneviewComponent(options: CreateComponentOptions): IPanePart {\n const component = this.components[options.name];\n if (!component) {\n throw new Error(\n `Component '${options.name}' not found in component registry`\n );\n }\n\n return new AngularPanePart(\n component,\n this.injector,\n this.environmentInjector\n );\n }\n\n // Legacy method for backward compatibility\n createComponent(options: CreateComponentOptions): IContentRenderer {\n return this.createDockviewComponent(options);\n }\n\n createTabComponent(\n options: CreateComponentOptions\n ): ITabRenderer | undefined {\n let component = this.tabComponents?.[options.name];\n\n if (!component && this.defaultTabComponent) {\n component = this.defaultTabComponent;\n }\n\n if (!component) {\n return undefined;\n }\n\n const renderer = new AngularRenderer({\n component,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n\n renderer.init(options);\n return renderer;\n }\n\n createWatermarkComponent(): IWatermarkRenderer {\n if (!this.watermarkComponent) {\n throw new Error('Watermark component not provided');\n }\n\n const renderer = new AngularRenderer({\n component: this.watermarkComponent,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n\n renderer.init({});\n return renderer;\n }\n\n createHeaderActionsComponent(\n name: string\n ): IHeaderActionsRenderer | undefined {\n const component = this.headerActionsComponents?.[name];\n if (!component) {\n return undefined;\n }\n\n const renderer = new AngularRenderer({\n component,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n\n // Initialize with empty props - dockview-core will call init() again with actual IGroupHeaderProps\n renderer.init({});\n return renderer;\n }\n}\n","import { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DockviewIDisposable } from 'dockview-core';\n\nexport class AngularDisposable implements DockviewIDisposable {\n private _isDisposed = false;\n private disposeCallbacks: (() => void)[] = [];\n\n get isDisposed(): boolean {\n return this._isDisposed;\n }\n\n addDisposeCallback(callback: () => void): void {\n if (this._isDisposed) {\n callback();\n return;\n }\n this.disposeCallbacks.push(callback);\n }\n\n dispose(): void {\n if (this._isDisposed) {\n return;\n }\n\n this._isDisposed = true;\n this.disposeCallbacks.forEach((callback) => {\n try {\n callback();\n } catch (error) {\n console.error('Error in dispose callback:', error);\n }\n });\n this.disposeCallbacks = [];\n }\n}\n\nexport class AngularLifecycleManager {\n private destroySubject = new Subject<void>();\n private disposables: DockviewIDisposable[] = [];\n\n get destroy$(): Observable<void> {\n return this.destroySubject.asObservable();\n }\n\n addDisposable(disposable: DockviewIDisposable): void {\n this.disposables.push(disposable);\n }\n\n takeUntilDestroy<T>(): (source: Observable<T>) => Observable<T> {\n return takeUntil(this.destroySubject);\n }\n\n destroy(): void {\n this.destroySubject.next();\n this.destroySubject.complete();\n\n this.disposables.forEach((disposable) => {\n try {\n disposable.dispose();\n } catch (error) {\n console.error('Error disposing resource:', error);\n }\n });\n this.disposables = [];\n }\n}\n\nexport function createAngularDisposable(\n disposeCallback?: () => void\n): AngularDisposable {\n const disposable = new AngularDisposable();\n if (disposeCallback) {\n disposable.addDisposeCallback(disposeCallback);\n }\n return disposable;\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n EnvironmentInjector,\n inject,\n} from '@angular/core';\nimport {\n DockviewApi,\n DockviewOptions,\n DockviewReadyEvent,\n DockviewDidDropEvent,\n DockviewWillDropEvent,\n createDockview,\n PROPERTY_KEYS_DOCKVIEW,\n DockviewFrameworkOptions,\n DockviewComponentOptions,\n TabAnimation,\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\n\nexport interface DockviewAngularOptions extends DockviewOptions {\n components: Record<string, Type<any>>;\n tabComponents?: Record<string, Type<any>>;\n watermarkComponent?: Type<any>;\n defaultTabComponent?: Type<any>;\n leftHeaderActionsComponent?: Type<any>;\n rightHeaderActionsComponent?: Type<any>;\n prefixHeaderActionsComponent?: Type<any>;\n}\n\n@Component({\n selector: 'dv-dockview',\n standalone: true,\n template: '<div #dockviewContainer class=\"dockview-container\"></div>',\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .dockview-container {\n width: 100%;\n height: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DockviewAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('dockviewContainer', { static: true })\n private containerRef!: ElementRef<HTMLDivElement>;\n\n @Input() components!: Record<string, Type<any>>;\n @Input() tabComponents?: Record<string, Type<any>>;\n @Input() watermarkComponent?: Type<any>;\n @Input() defaultTabComponent?: Type<any>;\n @Input() leftHeaderActionsComponent?: Type<any>;\n @Input() rightHeaderActionsComponent?: Type<any>;\n @Input() prefixHeaderActionsComponent?: Type<any>;\n\n // Core dockview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() hideBorders?: boolean;\n @Input() rootOverlayModel?: 'always' | 'never';\n @Input() defaultTabComponent_?: string;\n @Input() tabHeight?: number;\n @Input() disableFloatingGroups?: boolean;\n @Input() floatingGroupBounds?: 'boundedWithinViewport';\n @Input() popoutUrl?: string;\n @Input() debug?: boolean;\n @Input() locked?: boolean;\n @Input() disableAutoResizing?: boolean;\n @Input() singleTabMode?: 'fullwidth' | 'default';\n @Input() tabAnimation?: TabAnimation;\n\n @Output() ready = new EventEmitter<DockviewReadyEvent>();\n @Output() didDrop = new EventEmitter<DockviewDidDropEvent>();\n @Output() willDrop = new EventEmitter<DockviewWillDropEvent>();\n\n private dockviewApi?: DockviewApi;\n private lifecycleManager = new AngularLifecycleManager();\n private injector = inject(Injector);\n private environmentInjector = inject(EnvironmentInjector);\n\n ngOnInit(): void {\n this.initializeDockview();\n }\n\n ngOnDestroy(): void {\n this.lifecycleManager.destroy();\n if (this.dockviewApi) {\n this.dockviewApi.dispose();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.dockviewApi) {\n const coreChanges: Partial<DockviewOptions> = {};\n let hasChanges = false;\n\n // Check for changes in core dockview properties\n PROPERTY_KEYS_DOCKVIEW.forEach((key) => {\n if (changes[key] && !changes[key].isFirstChange()) {\n (coreChanges as any)[key] = changes[key].currentValue;\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.dockviewApi.updateOptions(coreChanges);\n }\n }\n }\n\n getDockviewApi(): DockviewApi | undefined {\n return this.dockviewApi;\n }\n\n private initializeDockview(): void {\n if (!this.components) {\n throw new Error(\n 'DockviewAngularComponent: components input is required'\n );\n }\n\n const coreOptions = this.extractCoreOptions();\n const frameworkOptions = this.createFrameworkOptions();\n\n this.dockviewApi = createDockview(this.containerRef.nativeElement, {\n ...coreOptions,\n ...frameworkOptions,\n });\n\n // Set up event listeners\n this.setupEventListeners();\n\n // Emit ready event\n this.ready.emit({ api: this.dockviewApi });\n }\n\n private extractCoreOptions(): DockviewOptions {\n const coreOptions: Partial<DockviewComponentOptions> = {};\n\n PROPERTY_KEYS_DOCKVIEW.forEach((key) => {\n const value = (this as any)[key];\n if (value !== undefined) {\n (coreOptions as any)[key] = value;\n }\n });\n\n return coreOptions as DockviewOptions;\n }\n\n private createFrameworkOptions(): DockviewFrameworkOptions {\n const headerActionsComponents: Record<string, Type<any>> = {};\n if (this.leftHeaderActionsComponent) {\n headerActionsComponents['left'] = this.leftHeaderActionsComponent;\n }\n if (this.rightHeaderActionsComponent) {\n headerActionsComponents['right'] = this.rightHeaderActionsComponent;\n }\n if (this.prefixHeaderActionsComponent) {\n headerActionsComponents['prefix'] =\n this.prefixHeaderActionsComponent;\n }\n\n const componentFactory = new AngularFrameworkComponentFactory(\n this.components,\n this.injector,\n this.environmentInjector,\n this.tabComponents,\n this.watermarkComponent,\n headerActionsComponents,\n this.defaultTabComponent\n );\n\n return {\n createComponent: (options) => {\n return componentFactory.createDockviewComponent(options);\n },\n createTabComponent: (options) => {\n return componentFactory.createTabComponent(options);\n },\n createWatermarkComponent: this.watermarkComponent\n ? () => {\n return componentFactory.createWatermarkComponent();\n }\n : undefined,\n createLeftHeaderActionComponent: this.leftHeaderActionsComponent\n ? (group) => {\n return componentFactory.createHeaderActionsComponent(\n 'left'\n )!;\n }\n : undefined,\n createRightHeaderActionComponent: this.rightHeaderActionsComponent\n ? (group) => {\n return componentFactory.createHeaderActionsComponent(\n 'right'\n )!;\n }\n : undefined,\n createPrefixHeaderActionComponent: this.prefixHeaderActionsComponent\n ? (group) => {\n return componentFactory.createHeaderActionsComponent(\n 'prefix'\n )!;\n }\n : undefined,\n };\n }\n\n private setupEventListeners(): void {\n if (!this.dockviewApi) {\n return;\n }\n\n // Set up event subscriptions using lifecycle manager\n const api = this.dockviewApi;\n\n if (this.didDrop.observers.length > 0) {\n const disposable = api.onDidDrop((event) => {\n this.didDrop.emit(event);\n });\n this.lifecycleManager.addDisposable(disposable);\n }\n\n if (this.willDrop.observers.length > 0) {\n const disposable = api.onWillDrop((event) => {\n this.willDrop.emit(event);\n });\n this.lifecycleManager.addDisposable(disposable);\n }\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n EnvironmentInjector,\n inject,\n} from '@angular/core';\nimport {\n GridviewApi,\n GridviewOptions,\n createGridview,\n PROPERTY_KEYS_GRIDVIEW,\n GridviewFrameworkOptions,\n GridviewComponentOptions,\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\nimport { GridviewAngularReadyEvent } from './types';\n\nexport interface GridviewAngularOptions extends GridviewOptions {\n components: Record<string, Type<any>>;\n}\n\n@Component({\n selector: 'dv-gridview',\n standalone: true,\n template: '<div #gridviewContainer class=\"gridview-container\"></div>',\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .gridview-container {\n width: 100%;\n height: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GridviewAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('gridviewContainer', { static: true })\n private containerRef!: ElementRef<HTMLDivElement>;\n\n @Input() components!: Record<string, Type<any>>;\n\n // Core gridview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() proportionalLayout?: boolean;\n @Input() hideBorders?: boolean;\n @Input() debug?: boolean;\n @Input() disableAutoResizing?: boolean;\n\n @Output() ready = new EventEmitter<GridviewAngularReadyEvent>();\n\n private gridviewApi?: GridviewApi;\n private lifecycleManager = new AngularLifecycleManager();\n private injector = inject(Injector);\n private environmentInjector = inject(EnvironmentInjector);\n\n ngOnInit(): void {\n this.initializeGridview();\n }\n\n ngOnDestroy(): void {\n this.lifecycleManager.destroy();\n if (this.gridviewApi) {\n this.gridviewApi.dispose();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.gridviewApi) {\n const coreChanges: Partial<GridviewOptions> = {};\n let hasChanges = false;\n\n // Check for changes in core gridview properties\n PROPERTY_KEYS_GRIDVIEW.forEach((key) => {\n if (changes[key] && !changes[key].isFirstChange()) {\n (coreChanges as any)[key] = changes[key].currentValue;\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.gridviewApi.updateOptions(coreChanges);\n }\n }\n }\n\n getGridviewApi(): GridviewApi | undefined {\n return this.gridviewApi;\n }\n\n private initializeGridview(): void {\n if (!this.components) {\n throw new Error(\n 'GridviewAngularComponent: components input is required'\n );\n }\n\n const coreOptions = this.extractCoreOptions();\n const frameworkOptions = this.createFrameworkOptions();\n\n this.gridviewApi = createGridview(this.containerRef.nativeElement, {\n ...coreOptions,\n ...frameworkOptions,\n });\n\n // Emit ready event\n this.ready.emit({ api: this.gridviewApi });\n }\n\n private extractCoreOptions(): GridviewOptions {\n const coreOptions: Partial<GridviewComponentOptions> = {};\n\n PROPERTY_KEYS_GRIDVIEW.forEach((key) => {\n const value = (this as any)[key];\n if (value !== undefined) {\n (coreOptions as any)[key] = value;\n }\n });\n\n return coreOptions as GridviewOptions;\n }\n\n private createFrameworkOptions(): GridviewFrameworkOptions {\n const componentFactory = new AngularFrameworkComponentFactory(\n this.components,\n this.injector,\n this.environmentInjector\n );\n\n return {\n createComponent: (options) => {\n return componentFactory.createGridviewComponent(options);\n },\n };\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n EnvironmentInjector,\n inject,\n} from '@angular/core';\nimport {\n PaneviewApi,\n PaneviewOptions,\n PaneviewDropEvent,\n createPaneview,\n PROPERTY_KEYS_PANEVIEW,\n PaneviewFrameworkOptions,\n PaneviewComponentOptions,\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\nimport { PaneviewAngularReadyEvent } from './types';\nimport { AngularPanePart } from './angular-pane-part';\n\nexport interface PaneviewAngularOptions extends PaneviewOptions {\n components: Record<string, Type<any>>;\n headerComponents?: Record<string, Type<any>>;\n}\n\n@Component({\n selector: 'dv-paneview',\n standalone: true,\n template: '<div #paneviewContainer class=\"paneview-container\"></div>',\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .paneview-container {\n width: 100%;\n height: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaneviewAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('paneviewContainer', { static: true })\n private containerRef!: ElementRef<HTMLDivElement>;\n\n @Input() components!: Record<string, Type<any>>;\n @Input() headerComponents?: Record<string, Type<any>>;\n\n // Core paneview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() hideBorders?: boolean;\n @Input() debug?: boolean;\n @Input() disableAutoResizing?: boolean;\n\n @Output() ready = new EventEmitter<PaneviewAngularReadyEvent>();\n @Output() drop = new EventEmitter<PaneviewDropEvent>();\n\n private paneviewApi?: PaneviewApi;\n private lifecycleManager = new AngularLifecycleManager();\n private injector = inject(Injector);\n private environmentInjector = inject(EnvironmentInjector);\n\n ngOnInit(): void {\n this.initializePaneview();\n }\n\n ngOnDestroy(): void {\n this.lifecycleManager.destroy();\n if (this.paneviewApi) {\n this.paneviewApi.dispose();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.paneviewApi) {\n const coreChanges: Partial<PaneviewOptions> = {};\n let hasChanges = false;\n\n // Check for changes in core paneview properties\n PROPERTY_KEYS_PANEVIEW.forEach((key) => {\n if (changes[key] && !changes[key].isFirstChange()) {\n (coreChanges as any)[key] = changes[key].currentValue;\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.paneviewApi.updateOptions(coreChanges);\n }\n }\n }\n\n getPaneviewApi(): PaneviewApi | undefined {\n return this.paneviewApi;\n }\n\n private initializePaneview(): void {\n if (!this.components) {\n throw new Error(\n 'PaneviewAngularComponent: components input is required'\n );\n }\n\n const coreOptions = this.extractCoreOptions();\n const frameworkOptions = this.createFrameworkOptions();\n\n this.paneviewApi = createPaneview(this.containerRef.nativeElement, {\n ...coreOptions,\n ...frameworkOptions,\n });\n\n // Set up event listeners\n this.setupEventListeners();\n\n // Emit ready event\n this.ready.emit({ api: this.paneviewApi });\n }\n\n private extractCoreOptions(): PaneviewOptions {\n const coreOptions: Partial<PaneviewComponentOptions> = {};\n\n PROPERTY_KEYS_PANEVIEW.forEach((key) => {\n const value = (this as any)[key];\n if (value !== undefined) {\n (coreOptions as any)[key] = value;\n }\n });\n\n return coreOptions as PaneviewOptions;\n }\n\n private createFrameworkOptions(): PaneviewFrameworkOptions {\n const componentFactory = new AngularFrameworkComponentFactory(\n this.components,\n this.injector,\n this.environmentInjector,\n this.headerComponents\n );\n\n return {\n createComponent: (options) => {\n return componentFactory.createPaneviewComponent(options);\n },\n createHeaderComponent: this.headerComponents\n ? (options) => {\n return new AngularPanePart(\n this.headerComponents![options.name],\n this.injector,\n this.environmentInjector\n );\n }\n : undefined,\n };\n }\n\n private setupEventListeners(): void {\n if (!this.paneviewApi) {\n return;\n }\n\n // Set up event subscriptions using lifecycle manager\n const api = this.paneviewApi;\n\n if (this.drop.observers.length > 0) {\n const disposable = api.onDidDrop((event) => {\n this.drop.emit(event);\n });\n this.lifecycleManager.addDisposable(disposable);\n }\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n EnvironmentInjector,\n inject,\n} from '@angular/core';\nimport {\n SplitviewApi,\n SplitviewOptions,\n createSplitview,\n PROPERTY_KEYS_SPLITVIEW,\n SplitviewFrameworkOptions,\n SplitviewComponentOptions,\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\nimport { SplitviewAngularReadyEvent } from './types';\n\nexport interface SplitviewAngularOptions extends SplitviewOptions {\n components: Record<string, Type<any>>;\n}\n\n@Component({\n selector: 'dv-splitview',\n standalone: true,\n template: '<div #splitviewContainer class=\"splitview-container\"></div>',\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .splitview-container {\n width: 100%;\n height: 100%;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SplitviewAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('splitviewContainer', { static: true })\n private containerRef!: ElementRef<HTMLDivElement>;\n\n @Input() components!: Record<string, Type<any>>;\n\n // Core splitview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() proportionalLayout?: boolean;\n @Input() hideBorders?: boolean;\n @Input() debug?: boolean;\n @Input() disableAutoResizing?: boolean;\n\n @Output() ready = new EventEmitter<SplitviewAngularReadyEvent>();\n\n private splitviewApi?: SplitviewApi;\n private lifecycleManager = new AngularLifecycleManager();\n private injector = inject(Injector);\n private environmentInjector = inject(EnvironmentInjector);\n\n ngOnInit(): void {\n this.initializeSplitview();\n }\n\n ngOnDestroy(): void {\n this.lifecycleManager.destroy();\n if (this.splitviewApi) {\n this.splitviewApi.dispose();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.splitviewApi) {\n const coreChanges: Partial<SplitviewOptions> = {};\n let hasChanges = false;\n\n // Check for changes in core splitview properties\n PROPERTY_KEYS_SPLITVIEW.forEach((key) => {\n if (changes[key] && !changes[key].isFirstChange()) {\n (coreChanges as any)[key] = changes[key].currentValue;\n hasChanges = true;\n }\n });\n\n if (hasChanges) {\n this.splitviewApi.updateOptions(coreChanges);\n }\n }\n }\n\n getSplitviewApi(): SplitviewApi | undefined {\n return this.splitviewApi;\n }\n\n private initializeSplitview(): void {\n if (!this.components) {\n throw new Error(\n 'SplitviewAngularComponent: components input is required'\n );\n }\n\n const coreOptions = this.extractCoreOptions();\n const frameworkOptions = this.createFrameworkOptions();\n\n this.splitviewApi = createSplitview(this.containerRef.nativeElement, {\n ...coreOptions,\n ...frameworkOptions,\n });\n\n // Emit ready event\n this.ready.emit({ api: this.splitviewApi });\n }\n\n private extractCoreOptions(): SplitviewOptions {\n const coreOptions: Partial<SplitviewComponentOptions> = {};\n\n PROPERTY_KEYS_SPLITVIEW.forEach((key) => {\n const value = (this as any)[key];\n if (value !== undefined) {\n (coreOptions as any)[key] = value;\n }\n });\n\n return coreOptions as SplitviewOptions;\n }\n\n private createFrameworkOptions(): SplitviewFrameworkOptions {\n const componentFactory = new AngularFrameworkComponentFactory(\n this.components,\n this.injector,\n this.environmentInjector\n );\n\n return {\n createComponent: (options) => {\n return componentFactory.createSplitviewComponent(options);\n },\n };\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { DockviewAngularComponent } from './dockview/dockview-angular.component';\nimport { GridviewAngularComponent } from './gridview/gridview-angular.component';\nimport { PaneviewAngularComponent } from './paneview/paneview-angular.component';\nimport { SplitviewAngularComponent } from './splitview/splitview-angular.component';\n\n@NgModule({\n imports: [\n CommonModule,\n DockviewAngularComponent,\n GridviewAngularComponent,\n PaneviewAngularComponent,\n SplitviewAngularComponent,\n ],\n exports: [\n DockviewAngularComponent,\n GridviewAngularComponent,\n PaneviewAngularComponent,\n SplitviewAngularComponent,\n ],\n})\nexport class DockviewAngularModule {}\n","/*\n * Public API Surface of dockview-angular\n */\n\n// Re-export everything from dockview-core\nexport * from 'dockview-core';\n\n// Angular module\nexport * from './lib/dockview-angular.module';\n\n// Components\nexport * from './lib/dockview/dockview-angular.component';\nexport * from './lib/gridview/gridview-angular.component';\nexport * from './lib/paneview/paneview-angular.component';\nexport * from './lib/splitview/splitview-angular.component';\n\n// Types\nexport {\n DockviewAngularOptions,\n DockviewAngularEvents,\n IDockviewAngularPanelProps,\n IDockviewAngularPanelHeaderProps,\n IDockviewAngularWatermarkProps,\n IDockviewAngularHeaderActionsProps,\n DockviewAngularComponentOptions,\n} from './lib/dockview/types';\nexport {\n GridviewAngularOptions,\n GridviewAngularEvents,\n GridviewAngularReadyEvent,\n} from './lib/gridview/types';\nexport {\n PaneviewAngularOptions,\n PaneviewAngularEvents,\n PaneviewAngularReadyEvent,\n} from './lib/paneview/types';\nexport {\n SplitviewAngularOptions,\n SplitviewAngularEvents,\n SplitviewAngularReadyEvent,\n} from './lib/splitview/types';\n\n// Utilities\nexport * from './lib/utils/angular-renderer';\nexport * from './lib/utils/component-factory';\nexport * from './lib/utils/lifecycle-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;MAiBa,eAAe,CAAA;AAOxB,IAAA,WAAA,CAAoB,OAAkC,EAAA;QAAlC,IAAA,CAAA,OAAO,GAAP,OAAO;QAJnB,IAAA,CAAA,YAAY,GAA2B,IAAI;QAC3C,IAAA,CAAA,QAAQ,GAAuB,IAAI;QAIvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC;IACtD;AAEA,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;QACvD;QACA,OAAO,IAAI,CAAC,QAAQ;IACxB;AAEA,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,YAAY;IAC5B;AAEA,IAAA,IAAI,CAAC,UAAsB,EAAA;;;;QAIvB,MAAM,QAAQ,GAA4B,EAAE;AAC5C,QAAA,IAAI,QAAQ,IAAI,UAAU,EAAE;YACxB,QAAQ,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC7C;AACA,QAAA,IAAI,KAAK,IAAI,UAAU,EAAE;YACrB,QAAQ,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;QACvC;AACA,QAAA,IAAI,cAAc,IAAI,UAAU,EAAE;YAC9B,QAAQ,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC;QACzD;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QACzB;aAAO;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QACzB;IACJ;AAEA,IAAA,MAAM,CAAC,MAAkB,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB;QACJ;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAmC;QAEtE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACnC,YAAA,IAAI,GAAG,IAAI,QAAQ,EAAE;gBACjB,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;YAC/B;QACJ;;AAGA,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACtD;AAEQ,IAAA,MAAM,CAAC,UAAsB,EAAA;AACjC,QAAA,IAAI;;YAEA,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AACxD,gBAAA,mBAAmB,EACf,IAAI,CAAC,OAAO,CAAC,mBAAmB;oBAC/B,IAAI,CAAC,OAAO,CAAC,QAAgC;AAClD,gBAAA,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AACzC,aAAA,CAAC;;AAGF,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;;AAGvB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAgC;YACnE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAgB;;AAGpD,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;;AAGhC,YAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,EAAE;QACtD;QAAE,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC;AACzD,YAAA,MAAM,KAAK;QACf;IACJ;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC5B;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACxB;AACH;;AC7GK,MAAO,oBAAqB,SAAQ,aAAa,CAAA;IACnD,WAAA,CACI,EAAU,EACV,SAAiB,EACA,gBAA2B,EAC3B,QAAkB,EAClB,mBAAyC,EAAA;AAE1D,QAAA,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC;QAJH,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;IAGxC;IAEA,YAAY,GAAA;AACR,QAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC;YACjC,SAAS,EAAE,IAAI,CAAC,gBAAgB;YAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAChD,SAAA,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC;AACV,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE;YAClC,GAAG,EAAE,IAAI,CAAC,GAAG;AAChB,SAAA,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC1C,QAAA,OAAO,QAAQ;IACnB;AACH;;ACxBK,MAAO,qBAAsB,SAAQ,cAAc,CAAA;IACrD,WAAA,CACI,EAAU,EACV,SAAiB,EACA,gBAA2B,EAC3B,QAAkB,EAClB,mBAAyC,EAAA;AAE1D,QAAA,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC;QAJH,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;IAGxC;IAEA,YAAY,GAAA;AACR,QAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC;YACjC,SAAS,EAAE,IAAI,CAAC,gBAAgB;YAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAChD,SAAA,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC;AACV,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE;YAClC,GAAG,EAAE,IAAI,CAAC,GAAG;AAChB,SAAA,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC1C,QAAA,OAAO,QAAQ;IACnB;AACH;;MCpBY,eAAe,CAAA;AAGxB,IAAA,WAAA,CACqB,gBAA2B,EAC3B,QAAkB,EAClB,mBAAyC,EAAA;QAFzC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;AAEpC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC;YAChC,SAAS,EAAE,IAAI,CAAC,gBAAgB;YAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAChD,SAAA,CAAC;IACN;AAEA,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;IAChC;AAEA,IAAA,IAAI,CAAC,UAA2C,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;IAClC;AAEA,IAAA,MAAM,CAAC,MAAwB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAChC;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;IAC3B;AACH;;MCtBY,gCAAgC,CAAA;AACzC,IAAA,WAAA,CACY,UAAqC,EACrC,QAAkB,EAClB,mBAAyC,EACzC,aAAyC,EACzC,kBAA8B,EAC9B,uBAAmD,EACnD,mBAA+B,EAAA;QAN/B,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACvB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;IAC5B;;AAGH,IAAA,uBAAuB,CAAC,OAA+B,EAAA;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,KAAK,CACX,CAAA,WAAA,EAAc,OAAO,CAAC,IAAI,CAAA,iCAAA,CAAmC,CAChE;QACL;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC;YACjC,SAAS;YACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAChD,SAAA,CAAC;AAEF,QAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,QAAA,OAAO,QAAQ;IACnB;;AAGA,IAAA,uBAAuB,CAAC,OAA+B,EAAA;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,KAAK,CACX,CAAA,WAAA,EAAc,OAAO,CAAC,IAAI,CAAA,iCAAA,CAAmC,CAChE;QACL;QAEA,OAAO,IAAI,oBAAoB,CAC3B,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,IAAI,EACZ,SAAS,EACT,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,mBAAmB,CAC3B;IACL;;AAGA,IAAA,wBAAwB,CAAC,OAA+B,EAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,KAAK,CACX,CAAA,WAAA,EAAc,OAAO,CAAC,IAAI,CAAA,iCAAA,CAAmC,CAChE;QACL;QAEA,OAAO,IAAI,qBAAqB,CAC5B,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,IAAI,EACZ,SAAS,EACT,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,mBAAmB,CAC3B;IACL;;AAGA,IAAA,uBAAuB,CAAC,OAA+B,EAAA;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,KAAK,CACX,CAAA,WAAA,EAAc,OAAO,CAAC,IAAI,CAAA,iCAAA,CAAmC,CAChE;QACL;AAEA,QAAA,OAAO,IAAI,eAAe,CACtB,SAAS,EACT,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,mBAAmB,CAC3B;IACL;;AAGA,IAAA,eAAe,CAAC,OAA+B,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;IAChD;AAEA,IAAA,kBAAkB,CACd,OAA+B,EAAA;QAE/B,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;AAElD,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACxC,YAAA,SAAS,GAAG,IAAI,CAAC,mBAAmB;QACxC;QAEA,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,OAAO,SAAS;QACpB;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC;YACjC,SAAS;YACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAChD,SAAA,CAAC;AAEF,QAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,QAAA,OAAO,QAAQ;IACnB;IAEA,wBAAwB,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;QACvD;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC;YACjC,SAAS,EAAE,IAAI,CAAC,kBAAkB;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAChD,SAAA,CAAC;AAEF,QAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACjB,QAAA,OAAO,QAAQ;IACnB;AAEA,IAAA,4BAA4B,CACxB,IAAY,EAAA;QAEZ,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,OAAO,SAAS;QACpB;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC;YACjC,SAAS;YACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAChD,SAAA,CAAC;;AAGF,QAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACjB,QAAA,OAAO,QAAQ;IACnB;AACH;;MC3JY,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;QACY,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,gBAAgB,GAAmB,EAAE;IA6BjD;AA3BI,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW;IAC3B;AAEA,IAAA,kBAAkB,CAAC,QAAoB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,QAAQ,EAAE;YACV;QACJ;AACA,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACxC;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AACvC,YAAA,IAAI;AACA,gBAAA,QAAQ,EAAE;YACd;YAAE,OAAO,KAAK,EAAE;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC;YACtD;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAC9B;AACH;MAEY,uBAAuB,CAAA;AAApC,IAAA,WAAA,GAAA;AACY,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;QACpC,IAAA,CAAA,WAAW,GAA0B,EAAE;IA2BnD;AAzBI,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;IAC7C;AAEA,IAAA,aAAa,CAAC,UAA+B,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;IACrC;IAEA,gBAAgB,GAAA;AACZ,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;IACzC;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;QAE9B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AACpC,YAAA,IAAI;gBACA,UAAU,CAAC,OAAO,EAAE;YACxB;YAAE,OAAO,KAAK,EAAE;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC;YACrD;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACzB;AACH;AAEK,SAAU,uBAAuB,CACnC,eAA4B,EAAA;AAE5B,IAAA,MAAM,UAAU,GAAG,IAAI,iBAAiB,EAAE;IAC1C,IAAI,eAAe,EAAE;AACjB,QAAA,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC;IAClD;AACA,IAAA,OAAO,UAAU;AACrB;;MCda,wBAAwB,CAAA;AApBrC,IAAA,WAAA,GAAA;AAgDc,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAsB;AAC9C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAwB;AAClD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAyB;AAGtD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,uBAAuB,EAAE;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAwJ5D,IAAA;IAtJG,QAAQ,GAAA;QACJ,IAAI,CAAC,kBAAkB,EAAE;IAC7B;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAC/B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;QAC9B;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,MAAM,WAAW,GAA6B,EAAE;YAChD,IAAI,UAAU,GAAG,KAAK;;AAGtB,YAAA,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnC,gBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;oBAC9C,WAAmB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY;oBACrD,UAAU,GAAG,IAAI;gBACrB;AACJ,YAAA,CAAC,CAAC;YAEF,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;YAC/C;QACJ;IACJ;IAEA,cAAc,GAAA;QACV,OAAO,IAAI,CAAC,WAAW;IAC3B;IAEQ,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CACX,wDAAwD,CAC3D;QACL;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC7C,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAEtD,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;AAC/D,YAAA,GAAG,WAAW;AACd,YAAA,GAAG,gBAAgB;AACtB,SAAA,CAAC;;QAGF,IAAI,CAAC,mBAAmB,EAAE;;AAG1B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9C;IAEQ,kBAAkB,GAAA;QACtB,MAAM,WAAW,GAAsC,EAAE;AAEzD,QAAA,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnC,YAAA,MAAM,KAAK,GAAI,IAAY,CAAC,GAAG,CAAC;AAChC,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACpB,gBAAA,WAAmB,CAAC,GAAG,CAAC,GAAG,KAAK;YACrC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,WAA8B;IACzC;IAEQ,sBAAsB,GAAA;QAC1B,MAAM,uBAAuB,GAA8B,EAAE;AAC7D,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACjC,YAAA,uBAAuB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,0BAA0B;QACrE;AACA,QAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE;AAClC,YAAA,uBAAuB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,2BAA2B;QACvE;AACA,QAAA,IAAI,IAAI,CAAC,4BAA4B,EAAE;YACnC,uBAAuB,CAAC,QAAQ,CAAC;gBAC7B,IAAI,CAAC,4BAA4B;QACzC;AAEA,QAAA,MAAM,gBAAgB,GAAG,IAAI,gCAAgC,CACzD,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,EACvB,uBAAuB,EACvB,IAAI,CAAC,mBAAmB,CAC3B;QAED,OAAO;AACH,YAAA,eAAe,EAAE,CAAC,OAAO,KAAI;AACzB,gBAAA,OAAO,gBAAgB,CAAC,uBAAuB,CAAC,OAAO,CAAC;YAC5D,CAAC;AACD,YAAA,kBAAkB,EAAE,CAAC,OAAO,KAAI;AAC5B,gBAAA,OAAO,gBAAgB,CAAC,kBAAkB,CAAC,OAAO,CAAC;YACvD,CAAC;YACD,wBAAwB,EAAE,IAAI,CAAC;kBACzB,MAAK;AACD,oBAAA,OAAO,gBAAgB,CAAC,wBAAwB,EAAE;gBACtD;AACF,kBAAE,SAAS;YACf,+BAA+B,EAAE,IAAI,CAAC;AAClC,kBAAE,CAAC,KAAK,KAAI;AACN,oBAAA,OAAO,gBAAgB,CAAC,4BAA4B,CAChD,MAAM,CACR;gBACN;AACF,kBAAE,SAAS;YACf,gCAAgC,EAAE,IAAI,CAAC;AACnC,kBAAE,CAAC,KAAK,KAAI;AACN,oBAAA,OAAO,gBAAgB,CAAC,4BAA4B,CAChD,OAAO,CACT;gBACN;AACF,kBAAE,SAAS;YACf,iCAAiC,EAAE,IAAI,CAAC;AACpC,kBAAE,CAAC,KAAK,KAAI;AACN,oBAAA,OAAO,gBAAgB,CAAC,4BAA4B,CAChD,QAAQ,CACV;gBACN;AACF,kBAAE,SAAS;SAClB;IACL;IAEQ,mBAAmB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB;QACJ;;AAGA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW;QAE5B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACvC,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC;QACnD;QAEA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,KAAI;AACxC,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC;QACnD;IACJ;+GA1LS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,gjCAjBvB,2DAA2D,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0FAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAiB5D,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBApBpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cACX,IAAI,EAAA,QAAA,EACN,2DAA2D,EAAA,eAAA,EAepD,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,0FAAA,CAAA,EAAA;8BAIvC,YAAY,EAAA,CAAA;sBADnB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAGvC,UAAU,EAAA,CAAA;sBAAlB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,0BAA0B,EAAA,CAAA;sBAAlC;gBACQ,2BAA2B,EAAA,CAAA;sBAAnC;gBACQ,4BAA4B,EAAA,CAAA;sBAApC;gBAGQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBAES,KAAK,EAAA,CAAA;sBAAd;gBACS,OAAO,EAAA,CAAA;sBAAhB;gBACS,QAAQ,EAAA,CAAA;sBAAjB;;;MCvCQ,wBAAwB,CAAA;AApBrC,IAAA,WAAA,GAAA;AAkCc,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAA6B;AAGvD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,uBAAuB,EAAE;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAiF5D,IAAA;IA/EG,QAAQ,GAAA;QACJ,IAAI,CAAC,kBAAkB,EAAE;IAC7B;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAC/B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;QAC9B;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,MAAM,WAAW,GAA6B,EAAE;YAChD,IAAI,UAAU,GAAG,KAAK;;AAGtB,YAAA,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnC,gBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;oBAC9C,WAAmB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY;oBACrD,UAAU,GAAG,IAAI;gBACrB;AACJ,YAAA,CAAC,CAAC;YAEF,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;YAC/C;QACJ;IACJ;IAEA,cAAc,GAAA;QACV,OAAO,IAAI,CAAC,WAAW;IAC3B;IAEQ,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CACX,wDAAwD,CAC3D;QACL;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC7C,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAEtD,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;AAC/D,YAAA,GAAG,WAAW;AACd,YAAA,GAAG,gBAAgB;AACtB,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9C;IAEQ,kBAAkB,GAAA;QACtB,MAAM,WAAW,GAAsC,EAAE;AAEzD,QAAA,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnC,YAAA,MAAM,KAAK,GAAI,IAAY,CAAC,GAAG,CAAC;AAChC,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACpB,gBAAA,WAAmB,CAAC,GAAG,CAAC,GAAG,KAAK;YACrC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,WAA8B;IACzC;IAEQ,sBAAsB,GAAA;AAC1B,QAAA,MAAM,gBAAgB,GAAG,IAAI,gCAAgC,CACzD,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,mBAAmB,CAC3B;QAED,OAAO;AACH,YAAA,eAAe,EAAE,CAAC,OAAO,KAAI;AACzB,gBAAA,OAAO,gBAAgB,CAAC,uBAAuB,CAAC,OAAO,CAAC;YAC5D,CAAC;SACJ;IACL;+GAnGS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,sdAjBvB,2DAA2D,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0FAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAiB5D,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBApBpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cACX,IAAI,EAAA,QAAA,EACN,2DAA2D,EAAA,eAAA,EAepD,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,0FAAA,CAAA,EAAA;8BAIvC,YAAY,EAAA,CAAA;sBADnB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAGvC,UAAU,EAAA,CAAA;sBAAlB;gBAGQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAES,KAAK,EAAA,CAAA;sBAAd;;;MCXQ,wBAAwB,CAAA;AApBrC,IAAA,WAAA,GAAA;AAkCc,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAA6B;AACrD,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAqB;AAG9C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,uBAAuB,EAAE;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AA8G5D,IAAA;IA5GG,QAAQ,GAAA;QACJ,IAAI,CAAC,kBAAkB,EAAE;IAC7B;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAC/B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;QAC9B;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,MAAM,WAAW,GAA6B,EAAE;YAChD,IAAI,UAAU,GAAG,KAAK;;AAGtB,YAAA,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnC,gBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;oBAC9C,WAAmB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY;oBACrD,UAAU,GAAG,IAAI;gBACrB;AACJ,YAAA,CAAC,CAAC;YAEF,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;YAC/C;QACJ;IACJ;IAEA,cAAc,GAAA;QACV,OAAO,IAAI,CAAC,WAAW;IAC3B;IAEQ,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CACX,wDAAwD,CAC3D;QACL;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC7C,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAEtD,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;AAC/D,YAAA,GAAG,WAAW;AACd,YAAA,GAAG,gBAAgB;AACtB,SAAA,CAAC;;QAGF,IAAI,CAAC,mBAAmB,EAAE;;AAG1B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9C;IAEQ,kBAAkB,GAAA;QACtB,MAAM,WAAW,GAAsC,EAAE;AAEzD,QAAA,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnC,YAAA,MAAM,KAAK,GAAI,IAAY,CAAC,GAAG,CAAC;AAChC,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACpB,gBAAA,WAAmB,CAAC,GAAG,CAAC,GAAG,KAAK;YACrC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,WAA8B;IACzC;IAEQ,sBAAsB,GAAA;QAC1B,MAAM,gBAAgB,GAAG,IAAI,gCAAgC,CACzD,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,gBAAgB,CACxB;QAED,OAAO;AACH,YAAA,eAAe,EAAE,CAAC,OAAO,KAAI;AACzB,gBAAA,OAAO,gBAAgB,CAAC,uBAAuB,CAAC,OAAO,CAAC;YAC5D,CAAC;YACD,qBAAqB,EAAE,IAAI,CAAC;AACxB,kBAAE,CAAC,OAAO,KAAI;oBACR,OAAO,IAAI,eAAe,CACtB,IAAI,CAAC,gBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EACpC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,mBAAmB,CAC3B;gBACL;AACF,kBAAE,SAAS;SAClB;IACL;IAEQ,mBAAmB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB;QACJ;;AAGA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW;QAE5B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACvC,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC;QACnD;IACJ;+GAjIS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,geAjBvB,2DAA2D,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0FAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAiB5D,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBApBpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cACX,IAAI,EAAA,QAAA,EACN,2DAA2D,EAAA,eAAA,EAepD,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,0FAAA,CAAA,EAAA;8BAIvC,YAAY,EAAA,CAAA;sBADnB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAGvC,UAAU,EAAA,CAAA;sBAAlB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAGQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAES,KAAK,EAAA,CAAA;sBAAd;gBACS,IAAI,EAAA,CAAA;sBAAb;;;MClBQ,yBAAyB,CAAA;AApBtC,IAAA,WAAA,GAAA;AAkCc,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAA8B;AAGxD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,uBAAuB,EAAE;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAiF5D,IAAA;IA/EG,QAAQ,GAAA;QACJ,IAAI,CAAC,mBAAmB,EAAE;IAC9B;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAC/B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QAC/B;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,MAAM,WAAW,GAA8B,EAAE;YACjD,IAAI,UAAU,GAAG,KAAK;;AAGtB,YAAA,uBAAuB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACpC,gBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;oBAC9C,WAAmB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY;oBACrD,UAAU,GAAG,IAAI;gBACrB;AACJ,YAAA,CAAC,CAAC;YAEF,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC;YAChD;QACJ;IACJ;IAEA,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,YAAY;IAC5B;IAEQ,mBAAmB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CACX,yDAAyD,CAC5D;QACL;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC7C,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAEtD,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;AACjE,YAAA,GAAG,WAAW;AACd,YAAA,GAAG,gBAAgB;AACtB,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IAC/C;IAEQ,kBAAkB,GAAA;QACtB,MAAM,WAAW,GAAuC,EAAE;AAE1D,QAAA,uBAAuB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACpC,YAAA,MAAM,KAAK,GAAI,IAAY,CAAC,GAAG,CAAC;AAChC,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACpB,gBAAA,WAAmB,CAAC,GAAG,CAAC,GAAG,KAAK;YACrC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,WAA+B;IAC1C;IAEQ,sBAAsB,GAAA;AAC1B,QAAA,MAAM,gBAAgB,GAAG,IAAI,gCAAgC,CACzD,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,mBAAmB,CAC3B;QAED,OAAO;AACH,YAAA,eAAe,EAAE,CAAC,OAAO,KAAI;AACzB,gBAAA,OAAO,gBAAgB,CAAC,wBAAwB,CAAC,OAAO,CAAC;YAC7D,CAAC;SACJ;IACL;+GAnGS,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,wdAjBxB,6DAA6D,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAiB9D,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBApBrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,QAAA,EACN,6DAA6D,EAAA,eAAA,EAetD,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA;8BAIvC,YAAY,EAAA,CAAA;sBADnB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAGxC,UAAU,EAAA,CAAA;sBAAlB;gBAGQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAES,KAAK,EAAA,CAAA;sBAAd;;;MC5CQ,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAb1B,YAAY;YACZ,wBAAwB;YACxB,wBAAwB;YACxB,wBAAwB;AACxB,YAAA,yBAAyB,aAGzB,wBAAwB;YACxB,wBAAwB;YACxB,wBAAwB;YACxB,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAGpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAb1B,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAaP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,wBAAwB;wBACxB,wBAAwB;wBACxB,wBAAwB;wBACxB,yBAAyB;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,wBAAwB;wBACxB,wBAAwB;wBACxB,wBAAwB;wBACxB,yBAAyB;AAC5B,qBAAA;AACJ,iBAAA;;;ACtBD;;AAEG;AAEH;;ACJA;;AAEG;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter, OnDestroy, OnInit, Type, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
-
import { DockviewApi, DockviewOptions, DockviewReadyEvent, DockviewDidDropEvent, DockviewWillDropEvent } from 'dockview-core';
|
|
2
|
+
import { DockviewApi, DockviewOptions, DockviewReadyEvent, DockviewDidDropEvent, DockviewWillDropEvent, TabAnimation } from 'dockview-core';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export interface DockviewAngularOptions extends DockviewOptions {
|
|
5
5
|
components: Record<string, Type<any>>;
|
|
@@ -32,6 +32,7 @@ export declare class DockviewAngularComponent implements OnInit, OnDestroy, OnCh
|
|
|
32
32
|
locked?: boolean;
|
|
33
33
|
disableAutoResizing?: boolean;
|
|
34
34
|
singleTabMode?: 'fullwidth' | 'default';
|
|
35
|
+
tabAnimation?: TabAnimation;
|
|
35
36
|
ready: EventEmitter<DockviewReadyEvent>;
|
|
36
37
|
didDrop: EventEmitter<DockviewDidDropEvent>;
|
|
37
38
|
willDrop: EventEmitter<DockviewWillDropEvent>;
|
|
@@ -48,6 +49,6 @@ export declare class DockviewAngularComponent implements OnInit, OnDestroy, OnCh
|
|
|
48
49
|
private createFrameworkOptions;
|
|
49
50
|
private setupEventListeners;
|
|
50
51
|
static ɵfac: i0.ɵɵFactoryDeclaration<DockviewAngularComponent, never>;
|
|
51
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DockviewAngularComponent, "dv-dockview", never, { "components": { "alias": "components"; "required": false; }; "tabComponents": { "alias": "tabComponents"; "required": false; }; "watermarkComponent": { "alias": "watermarkComponent"; "required": false; }; "defaultTabComponent": { "alias": "defaultTabComponent"; "required": false; }; "leftHeaderActionsComponent": { "alias": "leftHeaderActionsComponent"; "required": false; }; "rightHeaderActionsComponent": { "alias": "rightHeaderActionsComponent"; "required": false; }; "prefixHeaderActionsComponent": { "alias": "prefixHeaderActionsComponent"; "required": false; }; "className": { "alias": "className"; "required": false; }; "orientation": { "alias": "orientation"; "required": false; }; "hideBorders": { "alias": "hideBorders"; "required": false; }; "rootOverlayModel": { "alias": "rootOverlayModel"; "required": false; }; "defaultTabComponent_": { "alias": "defaultTabComponent_"; "required": false; }; "tabHeight": { "alias": "tabHeight"; "required": false; }; "disableFloatingGroups": { "alias": "disableFloatingGroups"; "required": false; }; "floatingGroupBounds": { "alias": "floatingGroupBounds"; "required": false; }; "popoutUrl": { "alias": "popoutUrl"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "locked": { "alias": "locked"; "required": false; }; "disableAutoResizing": { "alias": "disableAutoResizing"; "required": false; }; "singleTabMode": { "alias": "singleTabMode"; "required": false; }; }, { "ready": "ready"; "didDrop": "didDrop"; "willDrop": "willDrop"; }, never, never, true, never>;
|
|
52
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DockviewAngularComponent, "dv-dockview", never, { "components": { "alias": "components"; "required": false; }; "tabComponents": { "alias": "tabComponents"; "required": false; }; "watermarkComponent": { "alias": "watermarkComponent"; "required": false; }; "defaultTabComponent": { "alias": "defaultTabComponent"; "required": false; }; "leftHeaderActionsComponent": { "alias": "leftHeaderActionsComponent"; "required": false; }; "rightHeaderActionsComponent": { "alias": "rightHeaderActionsComponent"; "required": false; }; "prefixHeaderActionsComponent": { "alias": "prefixHeaderActionsComponent"; "required": false; }; "className": { "alias": "className"; "required": false; }; "orientation": { "alias": "orientation"; "required": false; }; "hideBorders": { "alias": "hideBorders"; "required": false; }; "rootOverlayModel": { "alias": "rootOverlayModel"; "required": false; }; "defaultTabComponent_": { "alias": "defaultTabComponent_"; "required": false; }; "tabHeight": { "alias": "tabHeight"; "required": false; }; "disableFloatingGroups": { "alias": "disableFloatingGroups"; "required": false; }; "floatingGroupBounds": { "alias": "floatingGroupBounds"; "required": false; }; "popoutUrl": { "alias": "popoutUrl"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "locked": { "alias": "locked"; "required": false; }; "disableAutoResizing": { "alias": "disableAutoResizing"; "required": false; }; "singleTabMode": { "alias": "singleTabMode"; "required": false; }; "tabAnimation": { "alias": "tabAnimation"; "required": false; }; }, { "ready": "ready"; "didDrop": "didDrop"; "willDrop": "willDrop"; }, never, never, true, never>;
|
|
52
53
|
}
|
|
53
54
|
//# sourceMappingURL=dockview-angular.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dockview-angular.component.d.ts","sourceRoot":"","sources":["../../../src/lib/dockview/dockview-angular.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,YAAY,EAGZ,SAAS,EACT,MAAM,EAEN,IAAI,EAGJ,SAAS,EACT,aAAa,EAGhB,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"dockview-angular.component.d.ts","sourceRoot":"","sources":["../../../src/lib/dockview/dockview-angular.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,YAAY,EAGZ,SAAS,EACT,MAAM,EAEN,IAAI,EAGJ,SAAS,EACT,aAAa,EAGhB,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EAKrB,YAAY,EACf,MAAM,eAAe,CAAC;;AAIvB,MAAM,WAAW,sBAAuB,SAAQ,eAAe;IAC3D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,kBAAkB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,mBAAmB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,0BAA0B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,2BAA2B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,4BAA4B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CAC5C;AAED,qBAoBa,wBAAyB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;IAEzE,OAAO,CAAC,YAAY,CAA8B;IAEzC,UAAU,EAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,kBAAkB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,mBAAmB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,0BAA0B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,2BAA2B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,4BAA4B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAGzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACxC,YAAY,CAAC,EAAE,YAAY,CAAC;IAE3B,KAAK,mCAA0C;IAC/C,OAAO,qCAA4C;IACnD,QAAQ,sCAA6C;IAE/D,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,mBAAmB,CAA+B;IAE1D,QAAQ,IAAI,IAAI;IAIhB,WAAW,IAAI,IAAI;IAOnB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAmBzC,cAAc,IAAI,WAAW,GAAG,SAAS;IAIzC,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,sBAAsB;IA2D9B,OAAO,CAAC,mBAAmB;yCArKlB,wBAAwB;2CAAxB,wBAAwB;CA2LpC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dockview-angular",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.2.0",
|
|
4
4
|
"description": "Angular docking layout manager — tabs, groups, grids, splitviews, drag and drop, floating panels",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"splitview",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"format:check": "prettier --check 'src/**/*.{ts,tsx,js,jsx}'"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"dockview-core": "^5.
|
|
62
|
+
"dockview-core": "^5.2.0"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"@angular/common": ">=21.0.6",
|