dockview-angular 6.3.0 → 6.5.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/README.md CHANGED
@@ -26,6 +26,7 @@ Please see the website: https://dockview.dev
26
26
  - Support for split-views, grid-views and 'dockable' views
27
27
  - Themeable and customizable
28
28
  - Tab and Group docking / Drag n' Drop
29
+ - Touch & mobile support
29
30
  - Popout Windows
30
31
  - Floating Groups
31
32
  - Edge Groups
package/dist/README.md CHANGED
@@ -26,6 +26,7 @@ Please see the website: https://dockview.dev
26
26
  - Support for split-views, grid-views and 'dockable' views
27
27
  - Themeable and customizable
28
28
  - Tab and Group docking / Drag n' Drop
29
+ - Touch & mobile support
29
30
  - Popout Windows
30
31
  - Floating Groups
31
32
  - Edge Groups
package/dist/dockview.css CHANGED
@@ -2344,6 +2344,16 @@
2344
2344
  /* Enhanced GPU acceleration during drag */
2345
2345
  will-change: transform, opacity;
2346
2346
  }
2347
+ .dv-resize-container .dv-resize-handle-top,
2348
+ .dv-resize-container .dv-resize-handle-bottom,
2349
+ .dv-resize-container .dv-resize-handle-left,
2350
+ .dv-resize-container .dv-resize-handle-right,
2351
+ .dv-resize-container .dv-resize-handle-topleft,
2352
+ .dv-resize-container .dv-resize-handle-topright,
2353
+ .dv-resize-container .dv-resize-handle-bottomleft,
2354
+ .dv-resize-container .dv-resize-handle-bottomright {
2355
+ touch-action: none;
2356
+ }
2347
2357
  .dv-resize-container .dv-resize-handle-top {
2348
2358
  height: 4px;
2349
2359
  width: calc(100% - 8px);
@@ -2416,6 +2426,55 @@
2416
2426
  position: absolute;
2417
2427
  cursor: se-resize;
2418
2428
  }
2429
+ @media (pointer: coarse) {
2430
+ .dv-resize-container .dv-resize-handle-top,
2431
+ .dv-resize-container .dv-resize-handle-bottom {
2432
+ height: 16px;
2433
+ width: calc(100% - 48px);
2434
+ left: 24px;
2435
+ }
2436
+ .dv-resize-container .dv-resize-handle-top {
2437
+ top: -10px;
2438
+ }
2439
+ .dv-resize-container .dv-resize-handle-bottom {
2440
+ bottom: -10px;
2441
+ }
2442
+ .dv-resize-container .dv-resize-handle-left,
2443
+ .dv-resize-container .dv-resize-handle-right {
2444
+ width: 16px;
2445
+ height: calc(100% - 48px);
2446
+ top: 24px;
2447
+ }
2448
+ .dv-resize-container .dv-resize-handle-left {
2449
+ left: -10px;
2450
+ }
2451
+ .dv-resize-container .dv-resize-handle-right {
2452
+ right: -10px;
2453
+ }
2454
+ .dv-resize-container .dv-resize-handle-topleft,
2455
+ .dv-resize-container .dv-resize-handle-topright,
2456
+ .dv-resize-container .dv-resize-handle-bottomleft,
2457
+ .dv-resize-container .dv-resize-handle-bottomright {
2458
+ height: 24px;
2459
+ width: 24px;
2460
+ }
2461
+ .dv-resize-container .dv-resize-handle-topleft {
2462
+ top: -12px;
2463
+ left: -12px;
2464
+ }
2465
+ .dv-resize-container .dv-resize-handle-topright {
2466
+ top: -12px;
2467
+ right: -12px;
2468
+ }
2469
+ .dv-resize-container .dv-resize-handle-bottomleft {
2470
+ bottom: -12px;
2471
+ left: -12px;
2472
+ }
2473
+ .dv-resize-container .dv-resize-handle-bottomright {
2474
+ bottom: -12px;
2475
+ right: -12px;
2476
+ }
2477
+ }
2419
2478
  .dv-render-overlay {
2420
2479
  --dv-overlay-z-index: var(--dv-overlay-z-index, 999);
2421
2480
  position: absolute;
@@ -2633,6 +2692,25 @@
2633
2692
  transition-duration: var(--dv-active-sash-transition-duration, 0.1s);
2634
2693
  transition-delay: var(--dv-active-sash-transition-delay, 0.5s);
2635
2694
  }
2695
+ @media (pointer: coarse) {
2696
+ .dv-split-view-container .dv-sash-container > .dv-sash:not(.dv-disabled)::before {
2697
+ content: "";
2698
+ position: absolute;
2699
+ background: transparent;
2700
+ }
2701
+ .dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash:not(.dv-disabled)::before {
2702
+ top: 0;
2703
+ bottom: 0;
2704
+ left: -10px;
2705
+ right: -10px;
2706
+ }
2707
+ .dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash:not(.dv-disabled)::before {
2708
+ left: 0;
2709
+ right: 0;
2710
+ top: -10px;
2711
+ bottom: -10px;
2712
+ }
2713
+ }
2636
2714
  .dv-split-view-container .dv-view-container {
2637
2715
  position: relative;
2638
2716
  height: 100%;
@@ -2704,6 +2782,11 @@
2704
2782
  .dv-tab.dv-inactive-tab .dv-default-tab:hover .dv-default-tab-action {
2705
2783
  visibility: visible;
2706
2784
  }
2785
+ @media (hover: none) {
2786
+ .dv-tab.dv-inactive-tab .dv-default-tab .dv-default-tab-action {
2787
+ visibility: visible;
2788
+ }
2789
+ }
2707
2790
  .dv-tab .dv-default-tab {
2708
2791
  position: relative;
2709
2792
  height: 100%;
@@ -2728,6 +2811,11 @@
2728
2811
  border-radius: 2px;
2729
2812
  background-color: var(--dv-icon-hover-background-color);
2730
2813
  }
2814
+ @media (pointer: coarse) {
2815
+ .dv-tab .dv-default-tab .dv-default-tab-action {
2816
+ padding: 8px;
2817
+ }
2818
+ }
2731
2819
  .dv-tabs-overflow-dropdown-default {
2732
2820
  height: 100%;
2733
2821
  color: var(--dv-activegroup-hiddenpanel-tab-color);
@@ -2748,6 +2836,7 @@
2748
2836
  border-radius: 2px;
2749
2837
  background-color: var(--dv-icon-hover-background-color);
2750
2838
  }
2839
+ @charset "UTF-8";
2751
2840
  .dv-tabs-container {
2752
2841
  display: flex;
2753
2842
  position: relative;
@@ -2757,12 +2846,29 @@
2757
2846
  /* GPU optimizations for smooth scrolling */
2758
2847
  will-change: scroll-position;
2759
2848
  transform: translate3d(0, 0, 0);
2849
+ /**
2850
+ * Stop scroll-chaining at the tab strip so that wheel / trackpad
2851
+ * overscroll past the strip's edges doesn't trigger the browser's
2852
+ * swipe-to-go-back-or-forward gesture (and doesn't scroll the page
2853
+ * either). `contain` keeps the native bounce visuals; `none` would
2854
+ * also disable them.
2855
+ */
2856
+ overscroll-behavior: contain;
2857
+ /**
2858
+ * Empty space between tabs (and the scrollbar lane) keeps pan-x so a
2859
+ * flick on those areas produces native momentum scroll. The tab and
2860
+ * chip elements themselves opt out (`touch-action: none`) so the
2861
+ * pointer drag source owns the gesture from pointerdown — a flick on
2862
+ * a tab or chip always becomes a drag, regardless of direction.
2863
+ */
2864
+ touch-action: pan-x;
2760
2865
  }
2761
2866
  .dv-tabs-container.dv-tabs-container-vertical {
2762
2867
  width: 100%;
2763
2868
  height: fit-content;
2764
2869
  max-height: 100%;
2765
2870
  writing-mode: vertical-rl;
2871
+ touch-action: pan-y;
2766
2872
  }
2767
2873
  .dv-tabs-container.dv-horizontal .dv-tab:not(:first-child)::before, .dv-tabs-container.dv-vertical .dv-tab:not(:first-child)::before {
2768
2874
  content: " ";
@@ -2802,7 +2908,10 @@
2802
2908
  }
2803
2909
 
2804
2910
  .dv-tab {
2805
- -webkit-user-drag: element;
2911
+ user-select: none;
2912
+ -webkit-user-select: none;
2913
+ -moz-user-select: none;
2914
+ -ms-user-select: none;
2806
2915
  outline: none;
2807
2916
  padding: 0.25rem 0.5rem;
2808
2917
  cursor: pointer;
@@ -2810,6 +2919,7 @@
2810
2919
  box-sizing: border-box;
2811
2920
  font-size: var(--dv-tab-font-size);
2812
2921
  margin: var(--dv-tab-margin);
2922
+ touch-action: none;
2813
2923
  }
2814
2924
  .dv-tab.dv-tab--shifting {
2815
2925
  will-change: transform, margin-left, margin-right, margin-top, margin-bottom;
@@ -2860,6 +2970,7 @@
2860
2970
  white-space: nowrap;
2861
2971
  box-sizing: border-box;
2862
2972
  line-height: 1;
2973
+ touch-action: none;
2863
2974
  background-color: var(--dv-tab-group-color);
2864
2975
  color: white;
2865
2976
  }
@@ -3037,6 +3148,11 @@
3037
3148
  .dv-tabs-and-actions-container .dv-void-container {
3038
3149
  display: flex;
3039
3150
  flex-grow: 1;
3151
+ user-select: none;
3152
+ -webkit-user-select: none;
3153
+ -moz-user-select: none;
3154
+ -ms-user-select: none;
3155
+ touch-action: none;
3040
3156
  }
3041
3157
  .dv-tabs-and-actions-container .dv-void-container.dv-draggable {
3042
3158
  cursor: grab;
@@ -1,4 +1,4 @@
1
- import { GridviewPanel, SplitviewPanel, PROPERTY_KEYS_DOCKVIEW, createDockview, PROPERTY_KEYS_GRIDVIEW, createGridview, PROPERTY_KEYS_PANEVIEW, createPaneview, PROPERTY_KEYS_SPLITVIEW, createSplitview } from 'dockview-core';
1
+ import { DockviewCompositeDisposable, GridviewPanel, SplitviewPanel, PROPERTY_KEYS_DOCKVIEW, createDockview, PROPERTY_KEYS_GRIDVIEW, createGridview, PROPERTY_KEYS_PANEVIEW, createPaneview, PROPERTY_KEYS_SPLITVIEW, createSplitview } from 'dockview-core';
2
2
  export * from 'dockview-core';
3
3
  import * as i0 from '@angular/core';
4
4
  import { ApplicationRef, TemplateRef, createComponent, EventEmitter, inject, Injector, EnvironmentInjector, Output, Input, ViewChild, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
@@ -130,6 +130,105 @@ class AngularRenderer {
130
130
  }
131
131
  }
132
132
 
133
+ /**
134
+ * Angular implementation of a header-actions renderer. Mirrors the React
135
+ * `ReactHeaderActionsRendererPart`: dockview-core only provides `api`,
136
+ * `containerApi`, and `group` at init time, so this renderer augments the
137
+ * component instance with the rest of `IDockviewHeaderActionsProps`
138
+ * (`panels`, `activePanel`, `isGroupActive`, `headerPosition`, `location`)
139
+ * and subscribes to the relevant events to keep them up to date.
140
+ */
141
+ class AngularHeaderActionsRenderer {
142
+ get element() {
143
+ return this._element;
144
+ }
145
+ constructor(component, group, injector, environmentInjector) {
146
+ this.component = component;
147
+ this.group = group;
148
+ this.injector = injector;
149
+ this.environmentInjector = environmentInjector;
150
+ this.componentRef = null;
151
+ this.viewRef = null;
152
+ this.subscriptions = null;
153
+ this._element = document.createElement('div');
154
+ this._element.className = 'dv-angular-part';
155
+ this._element.style.height = '100%';
156
+ this._element.style.width = '100%';
157
+ this.appRef = injector.get(ApplicationRef);
158
+ }
159
+ init(parameters) {
160
+ if (this.component instanceof TemplateRef) {
161
+ // TemplateRef-based header actions cannot receive @Input()s;
162
+ // render the template once and leave it static.
163
+ this.viewRef = this.component.createEmbeddedView({}, this.injector);
164
+ this._element.appendChild(this.viewRef.rootNodes[0]);
165
+ this.appRef.attachView(this.viewRef);
166
+ this.viewRef.markForCheck();
167
+ return;
168
+ }
169
+ this.componentRef = createComponent(this.component, {
170
+ environmentInjector: this.environmentInjector ||
171
+ this.injector,
172
+ elementInjector: this.injector,
173
+ });
174
+ const initialProps = {
175
+ api: parameters.api,
176
+ containerApi: parameters.containerApi,
177
+ panels: this.group.model.panels,
178
+ activePanel: this.group.model.activePanel,
179
+ isGroupActive: this.group.api.isActive,
180
+ group: this.group,
181
+ headerPosition: this.group.model.headerPosition,
182
+ location: parameters.api.location,
183
+ };
184
+ this.assign(initialProps);
185
+ const hostView = this.componentRef.hostView;
186
+ const rootNode = hostView.rootNodes[0];
187
+ this._element.appendChild(rootNode);
188
+ this.appRef.attachView(hostView);
189
+ this.componentRef.changeDetectorRef.markForCheck();
190
+ this.subscriptions = new DockviewCompositeDisposable(this.group.model.onDidAddPanel(() => {
191
+ this.assign({ panels: this.group.model.panels });
192
+ }), this.group.model.onDidRemovePanel(() => {
193
+ this.assign({ panels: this.group.model.panels });
194
+ }), this.group.model.onDidActivePanelChange(() => {
195
+ this.assign({
196
+ activePanel: this.group.model.activePanel,
197
+ });
198
+ }), parameters.api.onDidActiveChange(() => {
199
+ this.assign({ isGroupActive: this.group.api.isActive });
200
+ }), parameters.api.onDidLocationChange((event) => {
201
+ this.assign({
202
+ location: event.location,
203
+ });
204
+ }));
205
+ }
206
+ dispose() {
207
+ this.subscriptions?.dispose();
208
+ this.subscriptions = null;
209
+ if (this.componentRef) {
210
+ this.appRef.detachView(this.componentRef.hostView);
211
+ this.componentRef.destroy();
212
+ this.componentRef = null;
213
+ }
214
+ if (this.viewRef) {
215
+ this.appRef.detachView(this.viewRef);
216
+ this.viewRef.destroy();
217
+ this.viewRef = null;
218
+ }
219
+ }
220
+ assign(partial) {
221
+ if (!this.componentRef) {
222
+ return;
223
+ }
224
+ const instance = this.componentRef.instance;
225
+ for (const key of Object.keys(partial)) {
226
+ instance[key] = partial[key];
227
+ }
228
+ this.componentRef.changeDetectorRef.markForCheck();
229
+ }
230
+ }
231
+
133
232
  class AngularGridviewPanel extends GridviewPanel {
134
233
  constructor(id, component, angularComponent, injector, environmentInjector) {
135
234
  super(id, component);
@@ -279,19 +378,15 @@ class AngularFrameworkComponentFactory {
279
378
  renderer.init({});
280
379
  return renderer;
281
380
  }
282
- createHeaderActionsComponent(name) {
381
+ createHeaderActionsComponent(name, group) {
283
382
  const component = this.headerActionsComponents?.[name];
284
383
  if (!component) {
285
384
  return undefined;
286
385
  }
287
- const renderer = new AngularRenderer({
288
- component,
289
- injector: this.injector,
290
- environmentInjector: this.environmentInjector,
291
- });
292
- // Initialize with empty props - dockview-core will call init() again with actual IGroupHeaderProps
293
- renderer.init({});
294
- return renderer;
386
+ // Dedicated renderer (not AngularRenderer) so the component instance
387
+ // receives the full IDockviewHeaderActionsProps surface and stays in
388
+ // sync with group/panel state via event subscriptions.
389
+ return new AngularHeaderActionsRenderer(component, group, this.injector, this.environmentInjector);
295
390
  }
296
391
  }
297
392
 
@@ -565,17 +660,17 @@ class DockviewAngularComponent {
565
660
  : undefined,
566
661
  createLeftHeaderActionComponent: this.leftHeaderActionsComponent
567
662
  ? (group) => {
568
- return componentFactory.createHeaderActionsComponent('left');
663
+ return componentFactory.createHeaderActionsComponent('left', group);
569
664
  }
570
665
  : undefined,
571
666
  createRightHeaderActionComponent: this.rightHeaderActionsComponent
572
667
  ? (group) => {
573
- return componentFactory.createHeaderActionsComponent('right');
668
+ return componentFactory.createHeaderActionsComponent('right', group);
574
669
  }
575
670
  : undefined,
576
671
  createPrefixHeaderActionComponent: this.prefixHeaderActionsComponent
577
672
  ? (group) => {
578
- return componentFactory.createHeaderActionsComponent('prefix');
673
+ return componentFactory.createHeaderActionsComponent('prefix', group);
579
674
  }
580
675
  : undefined,
581
676
  createContextMenuItemComponent: (options) => {
@@ -611,7 +706,7 @@ class DockviewAngularComponent {
611
706
  }
612
707
  }
613
708
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DockviewAngularComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
614
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.12", type: DockviewAngularComponent, isStandalone: true, selector: "dv-dockview", inputs: { components: "components", tabComponents: "tabComponents", watermarkComponent: "watermarkComponent", defaultTabComponent: "defaultTabComponent", leftHeaderActionsComponent: "leftHeaderActionsComponent", rightHeaderActionsComponent: "rightHeaderActionsComponent", prefixHeaderActionsComponent: "prefixHeaderActionsComponent", tabGroupChipComponent: "tabGroupChipComponent", groupDragGhostComponent: "groupDragGhostComponent", className: "className", orientation: "orientation", hideBorders: "hideBorders", rootOverlayModel: "rootOverlayModel", defaultTabComponent_: "defaultTabComponent_", tabHeight: "tabHeight", disableFloatingGroups: "disableFloatingGroups", floatingGroupBounds: "floatingGroupBounds", popoutUrl: "popoutUrl", nonce: "nonce", debug: "debug", locked: "locked", disableAutoResizing: "disableAutoResizing", singleTabMode: "singleTabMode", getTabContextMenuItems: "getTabContextMenuItems", getTabGroupChipContextMenuItems: "getTabGroupChipContextMenuItems", tabGroupColors: "tabGroupColors", tabGroupAccent: "tabGroupAccent" }, 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 }); }
709
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.12", type: DockviewAngularComponent, isStandalone: true, selector: "dv-dockview", inputs: { components: "components", tabComponents: "tabComponents", watermarkComponent: "watermarkComponent", defaultTabComponent: "defaultTabComponent", leftHeaderActionsComponent: "leftHeaderActionsComponent", rightHeaderActionsComponent: "rightHeaderActionsComponent", prefixHeaderActionsComponent: "prefixHeaderActionsComponent", tabGroupChipComponent: "tabGroupChipComponent", groupDragGhostComponent: "groupDragGhostComponent", className: "className", orientation: "orientation", hideBorders: "hideBorders", rootOverlayModel: "rootOverlayModel", defaultTabComponent_: "defaultTabComponent_", tabHeight: "tabHeight", disableFloatingGroups: "disableFloatingGroups", floatingGroupBounds: "floatingGroupBounds", popoutUrl: "popoutUrl", nonce: "nonce", debug: "debug", locked: "locked", disableAutoResizing: "disableAutoResizing", singleTabMode: "singleTabMode", theme: "theme", scrollbars: "scrollbars", disableTabsOverflowList: "disableTabsOverflowList", defaultRenderer: "defaultRenderer", defaultHeaderPosition: "defaultHeaderPosition", disableDnd: "disableDnd", dndStrategy: "dndStrategy", dndEdges: "dndEdges", noPanelsOverlay: "noPanelsOverlay", getTabContextMenuItems: "getTabContextMenuItems", getTabGroupChipContextMenuItems: "getTabGroupChipContextMenuItems", tabGroupColors: "tabGroupColors", tabGroupAccent: "tabGroupAccent" }, 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 }); }
615
710
  }
616
711
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DockviewAngularComponent, decorators: [{
617
712
  type: Component,
@@ -665,6 +760,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
665
760
  type: Input
666
761
  }], singleTabMode: [{
667
762
  type: Input
763
+ }], theme: [{
764
+ type: Input
765
+ }], scrollbars: [{
766
+ type: Input
767
+ }], disableTabsOverflowList: [{
768
+ type: Input
769
+ }], defaultRenderer: [{
770
+ type: Input
771
+ }], defaultHeaderPosition: [{
772
+ type: Input
773
+ }], disableDnd: [{
774
+ type: Input
775
+ }], dndStrategy: [{
776
+ type: Input
777
+ }], dndEdges: [{
778
+ type: Input
779
+ }], noPanelsOverlay: [{
780
+ type: Input
668
781
  }], getTabContextMenuItems: [{
669
782
  type: Input
670
783
  }], getTabGroupChipContextMenuItems: [{
@@ -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/angular-tab-group-chip-renderer.ts","../../src/lib/dockview/angular-group-drag-ghost-renderer.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 ApplicationRef,\n ComponentRef,\n createComponent,\n EmbeddedViewRef,\n EnvironmentInjector,\n Injector,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { IContentRenderer, IFrameworkPart, Parameters } from 'dockview-core';\n\nexport interface AngularRendererOptions<T = unknown> {\n component: Type<T> | TemplateRef<T>;\n injector: Injector;\n environmentInjector?: EnvironmentInjector;\n}\n\nexport class AngularRenderer<T = unknown>\n implements IContentRenderer, IFrameworkPart\n{\n private componentRef: ComponentRef<T> | null = null;\n private viewRef: EmbeddedViewRef<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 get view(): EmbeddedViewRef<T> | null {\n return this.viewRef;\n }\n\n init(parameters: Parameters): void {\n // Forward the known user-facing fields from panel/tab renderers\n // and context menu item renderers. Other internal fields (e.g. 'title')\n // are excluded here; update() further guards with `key in instance`.\n const filtered: Record<string, unknown> = {};\n // Panel / tab renderer fields\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 // Context menu item renderer fields (IContextMenuItemComponentProps)\n if ('panel' in parameters) {\n filtered['panel'] = parameters['panel'];\n }\n if ('group' in parameters) {\n filtered['group'] = parameters['group'];\n }\n if ('close' in parameters) {\n filtered['close'] = parameters['close'];\n }\n if ('componentProps' in parameters) {\n filtered['componentProps'] = parameters['componentProps'];\n }\n\n if (this._element) {\n this.update(filtered);\n } else {\n this.render(filtered);\n }\n }\n\n update(params: Parameters): void {\n // Only component can have parameters\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 instance[key] = params[key];\n }\n\n // Trigger change detection\n if (this.viewRef) {\n this.viewRef.markForCheck();\n }\n }\n\n private render(parameters: Parameters): void {\n try {\n if (this.options.component instanceof TemplateRef) {\n this.setupView(this.options.component);\n } else {\n this.setupComponent(this.options.component, parameters);\n }\n } catch (error) {\n console.error('dockview: error creating Angular component', error);\n throw error;\n }\n }\n\n private setupComponent(component: Type<T>, parameters: Parameters): void {\n // Create the component using modern Angular API\n this.componentRef = createComponent(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 this.viewRef = this.componentRef.hostView as EmbeddedViewRef<T>;\n this._element = this.viewRef.rootNodes[0] as HTMLElement;\n\n // always attach for now\n this.appRef.attachView(this.viewRef);\n this.viewRef.markForCheck();\n }\n\n private setupView(template: TemplateRef<T>): void {\n // Create embedded view from template\n this.viewRef = template.createEmbeddedView(\n <never>{},\n this.options.injector\n );\n this._element = this.viewRef.rootNodes[0] as HTMLElement;\n\n // always attach for now\n this.appRef.attachView(this.viewRef);\n this.viewRef.markForCheck();\n }\n\n dispose(): void {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n if (this.viewRef) {\n this.viewRef.destroy();\n this.viewRef = null;\n }\n // Intentionally retain `_element` after dispose. Dockview's overlay\n // teardown reads `panel.view.content.element` while removing the node\n // from its overlay parent — nulling here would make the getter throw\n // mid-cascade. The HTMLElement reference is cheap and will be GC'd\n // when the renderer itself is collected.\n }\n}\n","import {\n Type,\n Injector,\n EnvironmentInjector,\n TemplateRef,\n} 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> | TemplateRef<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 {\n Type,\n Injector,\n EnvironmentInjector,\n TemplateRef,\n} 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> | TemplateRef<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 {\n Type,\n Injector,\n EnvironmentInjector,\n TemplateRef,\n} 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> | TemplateRef<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 {\n Type,\n Injector,\n EnvironmentInjector,\n TemplateRef,\n} 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> | TemplateRef<any>>,\n private injector: Injector,\n private environmentInjector?: EnvironmentInjector,\n private tabComponents?: Record<string, Type<any> | TemplateRef<any>>,\n private watermarkComponent?: Type<any> | TemplateRef<any>,\n private headerActionsComponents?: Record<\n string,\n Type<any> | TemplateRef<any>\n >,\n private defaultTabComponent?: Type<any> | TemplateRef<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('dockview: 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('dockview: 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 Type,\n Injector,\n EnvironmentInjector,\n ApplicationRef,\n ComponentRef,\n EmbeddedViewRef,\n createComponent,\n} from '@angular/core';\nimport { ITabGroupChipRenderer, ITabGroup, DockviewApi } from 'dockview-core';\n\nexport interface IDockviewAngularTabGroupChipProps {\n tabGroup: ITabGroup;\n api: DockviewApi;\n}\n\nexport class AngularTabGroupChipRenderer implements ITabGroupChipRenderer {\n private readonly _element: HTMLElement;\n private componentRef: ComponentRef<any> | null = null;\n private readonly appRef: ApplicationRef;\n\n get element(): HTMLElement {\n return this._element;\n }\n\n constructor(\n private readonly component: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n this._element = document.createElement('div');\n this._element.className = 'dv-angular-part';\n this._element.style.display = 'inline-flex';\n this.appRef = injector.get(ApplicationRef);\n }\n\n init(params: { tabGroup: ITabGroup; api: DockviewApi }): void {\n this.componentRef = createComponent(this.component, {\n environmentInjector:\n this.environmentInjector ||\n (this.injector as EnvironmentInjector),\n elementInjector: this.injector,\n });\n\n const instance = this.componentRef.instance as Record<string, unknown>;\n instance['tabGroup'] = params.tabGroup;\n instance['api'] = params.api;\n\n const hostView = this.componentRef.hostView as EmbeddedViewRef<any>;\n const rootNode = hostView.rootNodes[0] as HTMLElement;\n this._element.appendChild(rootNode);\n\n this.appRef.attachView(hostView);\n this.componentRef.changeDetectorRef.markForCheck();\n }\n\n update(params: { tabGroup: ITabGroup }): void {\n if (!this.componentRef) {\n return;\n }\n\n const instance = this.componentRef.instance as Record<string, unknown>;\n instance['tabGroup'] = params.tabGroup;\n this.componentRef.changeDetectorRef.markForCheck();\n }\n\n dispose(): void {\n if (this.componentRef) {\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n}\n","import {\n Type,\n Injector,\n EnvironmentInjector,\n ApplicationRef,\n ComponentRef,\n EmbeddedViewRef,\n createComponent,\n} from '@angular/core';\nimport {\n IGroupDragGhostRenderer,\n IDockviewGroupPanel,\n DockviewApi,\n} from 'dockview-core';\n\nexport interface IDockviewAngularGroupDragGhostProps {\n group: IDockviewGroupPanel;\n api: DockviewApi;\n}\n\nexport class AngularGroupDragGhostRenderer implements IGroupDragGhostRenderer {\n private readonly _element: HTMLElement;\n private componentRef: ComponentRef<any> | null = null;\n private readonly appRef: ApplicationRef;\n\n get element(): HTMLElement {\n return this._element;\n }\n\n constructor(\n private readonly component: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n this._element = document.createElement('div');\n this._element.className = 'dv-angular-part';\n this._element.style.display = 'inline-flex';\n this.appRef = injector.get(ApplicationRef);\n }\n\n init(params: { group: IDockviewGroupPanel; api: DockviewApi }): void {\n this.componentRef = createComponent(this.component, {\n environmentInjector:\n this.environmentInjector ||\n (this.injector as EnvironmentInjector),\n elementInjector: this.injector,\n });\n\n const instance = this.componentRef.instance as Record<string, unknown>;\n instance['group'] = params.group;\n instance['api'] = params.api;\n\n const hostView = this.componentRef.hostView as EmbeddedViewRef<any>;\n const rootNode = hostView.rootNodes[0] as HTMLElement;\n this._element.appendChild(rootNode);\n\n this.appRef.attachView(hostView);\n this.componentRef.changeDetectorRef.markForCheck();\n }\n\n dispose(): void {\n if (this.componentRef) {\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.componentRef = null;\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 TemplateRef,\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 CspNonceProvider,\n GetTabContextMenuItemsParams,\n GetTabGroupChipContextMenuItemsParams,\n BuiltInChipContextMenuItem,\n ContextMenuItemConfig,\n ContextMenuItem,\n DockviewTabGroupColorEntry,\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularRenderer } from '../utils/angular-renderer';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\nimport { AngularTabGroupChipRenderer } from './angular-tab-group-chip-renderer';\nimport { AngularGroupDragGhostRenderer } from './angular-group-drag-ghost-renderer';\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 getTabContextMenuItems?: (\n params: GetTabContextMenuItemsParams\n ) => (ContextMenuItem | { component: 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> | TemplateRef<any>>;\n @Input() tabComponents?: Record<string, Type<any> | TemplateRef<any>>;\n @Input() watermarkComponent?: Type<any> | TemplateRef<any>;\n @Input() defaultTabComponent?: Type<any> | TemplateRef<any>;\n @Input() leftHeaderActionsComponent?: Type<any> | TemplateRef<any>;\n @Input() rightHeaderActionsComponent?: Type<any> | TemplateRef<any>;\n @Input() prefixHeaderActionsComponent?: Type<any> | TemplateRef<any>;\n @Input() tabGroupChipComponent?: Type<any>;\n @Input() groupDragGhostComponent?: 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() nonce?: CspNonceProvider;\n @Input() debug?: boolean;\n @Input() locked?: boolean;\n @Input() disableAutoResizing?: boolean;\n @Input() singleTabMode?: 'fullwidth' | 'default';\n @Input() getTabContextMenuItems?: (\n params: GetTabContextMenuItemsParams\n ) => (ContextMenuItem | { component: Type<any> | TemplateRef<any> })[];\n @Input() getTabGroupChipContextMenuItems?: (\n params: GetTabGroupChipContextMenuItemsParams\n ) => (\n | BuiltInChipContextMenuItem\n | ContextMenuItemConfig\n | { component: Type<any> | TemplateRef<any> }\n )[];\n @Input() tabGroupColors?: DockviewTabGroupColorEntry[];\n @Input() tabGroupAccent?: 'palette' | 'off';\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 // Handle tabGroupChipComponent → createTabGroupChipComponent mapping\n if (\n changes['tabGroupChipComponent'] &&\n !changes['tabGroupChipComponent'].isFirstChange()\n ) {\n const chipComponent =\n changes['tabGroupChipComponent'].currentValue;\n coreChanges.createTabGroupChipComponent = chipComponent\n ? () =>\n new AngularTabGroupChipRenderer(\n chipComponent,\n this.injector,\n this.environmentInjector\n )\n : undefined;\n hasChanges = true;\n }\n\n // Handle groupDragGhostComponent → createGroupDragGhostComponent mapping\n if (\n changes['groupDragGhostComponent'] &&\n !changes['groupDragGhostComponent'].isFirstChange()\n ) {\n const ghostComponent =\n changes['groupDragGhostComponent'].currentValue;\n coreChanges.createGroupDragGhostComponent = ghostComponent\n ? () =>\n new AngularGroupDragGhostRenderer(\n ghostComponent,\n this.injector,\n this.environmentInjector\n )\n : undefined;\n hasChanges = true;\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 if (this.tabGroupChipComponent) {\n const chipComponent = this.tabGroupChipComponent;\n coreOptions.createTabGroupChipComponent = () => {\n return new AngularTabGroupChipRenderer(\n chipComponent,\n this.injector,\n this.environmentInjector\n );\n };\n }\n\n if (this.groupDragGhostComponent) {\n const ghostComponent = this.groupDragGhostComponent;\n coreOptions.createGroupDragGhostComponent = () => {\n return new AngularGroupDragGhostRenderer(\n ghostComponent,\n this.injector,\n this.environmentInjector\n );\n };\n }\n\n return coreOptions as DockviewOptions;\n }\n\n private createFrameworkOptions(): DockviewFrameworkOptions {\n const headerActionsComponents: Record<\n string,\n Type<any> | TemplateRef<any>\n > = {};\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 createContextMenuItemComponent: (options) => {\n if (!options.component) {\n return undefined;\n }\n const renderer = new AngularRenderer({\n component: options.component as\n | Type<any>\n | TemplateRef<any>,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n return renderer;\n },\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 TemplateRef,\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> | TemplateRef<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> | TemplateRef<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 TemplateRef,\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> | TemplateRef<any>>;\n headerComponents?: Record<string, Type<any> | TemplateRef<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> | TemplateRef<any>>;\n @Input() headerComponents?: Record<string, Type<any> | TemplateRef<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 TemplateRef,\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> | TemplateRef<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> | TemplateRef<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 { IDockviewAngularTabGroupChipProps } from './lib/dockview/angular-tab-group-chip-renderer';\nexport { IDockviewAngularGroupDragGhostProps } from './lib/dockview/angular-group-drag-ghost-renderer';\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/dockview/angular-header-actions-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/angular-tab-group-chip-renderer.ts","../../src/lib/dockview/angular-group-drag-ghost-renderer.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 ApplicationRef,\n ComponentRef,\n createComponent,\n EmbeddedViewRef,\n EnvironmentInjector,\n Injector,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { IContentRenderer, IFrameworkPart, Parameters } from 'dockview-core';\n\nexport interface AngularRendererOptions<T = unknown> {\n component: Type<T> | TemplateRef<T>;\n injector: Injector;\n environmentInjector?: EnvironmentInjector;\n}\n\nexport class AngularRenderer<T = unknown>\n implements IContentRenderer, IFrameworkPart\n{\n private componentRef: ComponentRef<T> | null = null;\n private viewRef: EmbeddedViewRef<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 get view(): EmbeddedViewRef<T> | null {\n return this.viewRef;\n }\n\n init(parameters: Parameters): void {\n // Forward the known user-facing fields from panel/tab renderers\n // and context menu item renderers. Other internal fields (e.g. 'title')\n // are excluded here; update() further guards with `key in instance`.\n const filtered: Record<string, unknown> = {};\n // Panel / tab renderer fields\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 // Context menu item renderer fields (IContextMenuItemComponentProps)\n if ('panel' in parameters) {\n filtered['panel'] = parameters['panel'];\n }\n if ('group' in parameters) {\n filtered['group'] = parameters['group'];\n }\n if ('close' in parameters) {\n filtered['close'] = parameters['close'];\n }\n if ('componentProps' in parameters) {\n filtered['componentProps'] = parameters['componentProps'];\n }\n\n if (this._element) {\n this.update(filtered);\n } else {\n this.render(filtered);\n }\n }\n\n update(params: Parameters): void {\n // Only component can have parameters\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 instance[key] = params[key];\n }\n\n // Trigger change detection\n if (this.viewRef) {\n this.viewRef.markForCheck();\n }\n }\n\n private render(parameters: Parameters): void {\n try {\n if (this.options.component instanceof TemplateRef) {\n this.setupView(this.options.component);\n } else {\n this.setupComponent(this.options.component, parameters);\n }\n } catch (error) {\n console.error('dockview: error creating Angular component', error);\n throw error;\n }\n }\n\n private setupComponent(component: Type<T>, parameters: Parameters): void {\n // Create the component using modern Angular API\n this.componentRef = createComponent(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 this.viewRef = this.componentRef.hostView as EmbeddedViewRef<T>;\n this._element = this.viewRef.rootNodes[0] as HTMLElement;\n\n // always attach for now\n this.appRef.attachView(this.viewRef);\n this.viewRef.markForCheck();\n }\n\n private setupView(template: TemplateRef<T>): void {\n // Create embedded view from template\n this.viewRef = template.createEmbeddedView(\n <never>{},\n this.options.injector\n );\n this._element = this.viewRef.rootNodes[0] as HTMLElement;\n\n // always attach for now\n this.appRef.attachView(this.viewRef);\n this.viewRef.markForCheck();\n }\n\n dispose(): void {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n if (this.viewRef) {\n this.viewRef.destroy();\n this.viewRef = null;\n }\n // Intentionally retain `_element` after dispose. Dockview's overlay\n // teardown reads `panel.view.content.element` while removing the node\n // from its overlay parent — nulling here would make the getter throw\n // mid-cascade. The HTMLElement reference is cheap and will be GC'd\n // when the renderer itself is collected.\n }\n}\n","import {\n Type,\n Injector,\n EnvironmentInjector,\n ApplicationRef,\n ComponentRef,\n EmbeddedViewRef,\n TemplateRef,\n createComponent,\n} from '@angular/core';\nimport {\n DockviewApi,\n DockviewCompositeDisposable,\n DockviewGroupLocation,\n DockviewGroupPanel,\n DockviewGroupPanelApi,\n IDockviewHeaderActionsProps,\n IDockviewPanel,\n IHeaderActionsRenderer,\n} from 'dockview-core';\n\n/**\n * Angular implementation of a header-actions renderer. Mirrors the React\n * `ReactHeaderActionsRendererPart`: dockview-core only provides `api`,\n * `containerApi`, and `group` at init time, so this renderer augments the\n * component instance with the rest of `IDockviewHeaderActionsProps`\n * (`panels`, `activePanel`, `isGroupActive`, `headerPosition`, `location`)\n * and subscribes to the relevant events to keep them up to date.\n */\nexport class AngularHeaderActionsRenderer implements IHeaderActionsRenderer {\n private readonly _element: HTMLElement;\n private componentRef: ComponentRef<unknown> | null = null;\n private viewRef: EmbeddedViewRef<unknown> | null = null;\n private readonly appRef: ApplicationRef;\n private subscriptions: DockviewCompositeDisposable | null = null;\n\n get element(): HTMLElement {\n return this._element;\n }\n\n constructor(\n private readonly component: Type<unknown> | TemplateRef<unknown>,\n private readonly group: DockviewGroupPanel,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n this._element = document.createElement('div');\n this._element.className = 'dv-angular-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n this.appRef = injector.get(ApplicationRef);\n }\n\n init(parameters: {\n containerApi: DockviewApi;\n api: DockviewGroupPanelApi;\n }): void {\n if (this.component instanceof TemplateRef) {\n // TemplateRef-based header actions cannot receive @Input()s;\n // render the template once and leave it static.\n this.viewRef = this.component.createEmbeddedView({}, this.injector);\n this._element.appendChild(this.viewRef.rootNodes[0] as HTMLElement);\n this.appRef.attachView(this.viewRef);\n this.viewRef.markForCheck();\n return;\n }\n\n this.componentRef = createComponent(this.component, {\n environmentInjector:\n this.environmentInjector ||\n (this.injector as EnvironmentInjector),\n elementInjector: this.injector,\n });\n\n const initialProps: IDockviewHeaderActionsProps = {\n api: parameters.api,\n containerApi: parameters.containerApi,\n panels: this.group.model.panels,\n activePanel: this.group.model.activePanel,\n isGroupActive: this.group.api.isActive,\n group: this.group,\n headerPosition: this.group.model.headerPosition,\n location: parameters.api.location,\n };\n this.assign(initialProps);\n\n const hostView = this.componentRef.hostView as EmbeddedViewRef<unknown>;\n const rootNode = hostView.rootNodes[0] as HTMLElement;\n this._element.appendChild(rootNode);\n this.appRef.attachView(hostView);\n this.componentRef.changeDetectorRef.markForCheck();\n\n this.subscriptions = new DockviewCompositeDisposable(\n this.group.model.onDidAddPanel(() => {\n this.assign({ panels: this.group.model.panels });\n }),\n this.group.model.onDidRemovePanel(() => {\n this.assign({ panels: this.group.model.panels });\n }),\n this.group.model.onDidActivePanelChange(() => {\n this.assign({\n activePanel: this.group.model.activePanel as\n | IDockviewPanel\n | undefined,\n });\n }),\n parameters.api.onDidActiveChange(() => {\n this.assign({ isGroupActive: this.group.api.isActive });\n }),\n parameters.api.onDidLocationChange((event) => {\n this.assign({\n location: event.location as DockviewGroupLocation,\n });\n })\n );\n }\n\n dispose(): void {\n this.subscriptions?.dispose();\n this.subscriptions = null;\n if (this.componentRef) {\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n if (this.viewRef) {\n this.appRef.detachView(this.viewRef);\n this.viewRef.destroy();\n this.viewRef = null;\n }\n }\n\n private assign(partial: Partial<IDockviewHeaderActionsProps>): void {\n if (!this.componentRef) {\n return;\n }\n const instance = this.componentRef.instance as Record<string, unknown>;\n for (const key of Object.keys(partial) as Array<\n keyof IDockviewHeaderActionsProps\n >) {\n instance[key] = partial[key];\n }\n this.componentRef.changeDetectorRef.markForCheck();\n }\n}\n","import {\n Type,\n Injector,\n EnvironmentInjector,\n TemplateRef,\n} 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> | TemplateRef<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 {\n Type,\n Injector,\n EnvironmentInjector,\n TemplateRef,\n} 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> | TemplateRef<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 {\n Type,\n Injector,\n EnvironmentInjector,\n TemplateRef,\n} 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> | TemplateRef<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 {\n Type,\n Injector,\n EnvironmentInjector,\n TemplateRef,\n} from '@angular/core';\nimport {\n IContentRenderer,\n ITabRenderer,\n IWatermarkRenderer,\n IHeaderActionsRenderer,\n CreateComponentOptions,\n DockviewGroupPanel,\n GridviewPanel,\n SplitviewPanel,\n IPanePart,\n} from 'dockview-core';\nimport { AngularRenderer } from './angular-renderer';\nimport { AngularHeaderActionsRenderer } from '../dockview/angular-header-actions-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> | TemplateRef<any>>,\n private injector: Injector,\n private environmentInjector?: EnvironmentInjector,\n private tabComponents?: Record<string, Type<any> | TemplateRef<any>>,\n private watermarkComponent?: Type<any> | TemplateRef<any>,\n private headerActionsComponents?: Record<\n string,\n Type<any> | TemplateRef<any>\n >,\n private defaultTabComponent?: Type<any> | TemplateRef<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 group: DockviewGroupPanel\n ): IHeaderActionsRenderer | undefined {\n const component = this.headerActionsComponents?.[name];\n if (!component) {\n return undefined;\n }\n\n // Dedicated renderer (not AngularRenderer) so the component instance\n // receives the full IDockviewHeaderActionsProps surface and stays in\n // sync with group/panel state via event subscriptions.\n return new AngularHeaderActionsRenderer(\n component,\n group,\n this.injector,\n this.environmentInjector\n );\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('dockview: 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('dockview: 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 Type,\n Injector,\n EnvironmentInjector,\n ApplicationRef,\n ComponentRef,\n EmbeddedViewRef,\n createComponent,\n} from '@angular/core';\nimport { ITabGroupChipRenderer, ITabGroup, DockviewApi } from 'dockview-core';\n\nexport interface IDockviewAngularTabGroupChipProps {\n tabGroup: ITabGroup;\n api: DockviewApi;\n}\n\nexport class AngularTabGroupChipRenderer implements ITabGroupChipRenderer {\n private readonly _element: HTMLElement;\n private componentRef: ComponentRef<any> | null = null;\n private readonly appRef: ApplicationRef;\n\n get element(): HTMLElement {\n return this._element;\n }\n\n constructor(\n private readonly component: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n this._element = document.createElement('div');\n this._element.className = 'dv-angular-part';\n this._element.style.display = 'inline-flex';\n this.appRef = injector.get(ApplicationRef);\n }\n\n init(params: { tabGroup: ITabGroup; api: DockviewApi }): void {\n this.componentRef = createComponent(this.component, {\n environmentInjector:\n this.environmentInjector ||\n (this.injector as EnvironmentInjector),\n elementInjector: this.injector,\n });\n\n const instance = this.componentRef.instance as Record<string, unknown>;\n instance['tabGroup'] = params.tabGroup;\n instance['api'] = params.api;\n\n const hostView = this.componentRef.hostView as EmbeddedViewRef<any>;\n const rootNode = hostView.rootNodes[0] as HTMLElement;\n this._element.appendChild(rootNode);\n\n this.appRef.attachView(hostView);\n this.componentRef.changeDetectorRef.markForCheck();\n }\n\n update(params: { tabGroup: ITabGroup }): void {\n if (!this.componentRef) {\n return;\n }\n\n const instance = this.componentRef.instance as Record<string, unknown>;\n instance['tabGroup'] = params.tabGroup;\n this.componentRef.changeDetectorRef.markForCheck();\n }\n\n dispose(): void {\n if (this.componentRef) {\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n}\n","import {\n Type,\n Injector,\n EnvironmentInjector,\n ApplicationRef,\n ComponentRef,\n EmbeddedViewRef,\n createComponent,\n} from '@angular/core';\nimport {\n IGroupDragGhostRenderer,\n IDockviewGroupPanel,\n DockviewApi,\n} from 'dockview-core';\n\nexport interface IDockviewAngularGroupDragGhostProps {\n group: IDockviewGroupPanel;\n api: DockviewApi;\n}\n\nexport class AngularGroupDragGhostRenderer implements IGroupDragGhostRenderer {\n private readonly _element: HTMLElement;\n private componentRef: ComponentRef<any> | null = null;\n private readonly appRef: ApplicationRef;\n\n get element(): HTMLElement {\n return this._element;\n }\n\n constructor(\n private readonly component: Type<any>,\n private readonly injector: Injector,\n private readonly environmentInjector?: EnvironmentInjector\n ) {\n this._element = document.createElement('div');\n this._element.className = 'dv-angular-part';\n this._element.style.display = 'inline-flex';\n this.appRef = injector.get(ApplicationRef);\n }\n\n init(params: { group: IDockviewGroupPanel; api: DockviewApi }): void {\n this.componentRef = createComponent(this.component, {\n environmentInjector:\n this.environmentInjector ||\n (this.injector as EnvironmentInjector),\n elementInjector: this.injector,\n });\n\n const instance = this.componentRef.instance as Record<string, unknown>;\n instance['group'] = params.group;\n instance['api'] = params.api;\n\n const hostView = this.componentRef.hostView as EmbeddedViewRef<any>;\n const rootNode = hostView.rootNodes[0] as HTMLElement;\n this._element.appendChild(rootNode);\n\n this.appRef.attachView(hostView);\n this.componentRef.changeDetectorRef.markForCheck();\n }\n\n dispose(): void {\n if (this.componentRef) {\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.componentRef = null;\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 TemplateRef,\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 CspNonceProvider,\n GetTabContextMenuItemsParams,\n GetTabGroupChipContextMenuItemsParams,\n BuiltInChipContextMenuItem,\n ContextMenuItemConfig,\n ContextMenuItem,\n DockviewTabGroupColorEntry,\n DockviewHeaderPosition,\n DockviewDndStrategy,\n DockviewPanelRenderer,\n DockviewTheme,\n DroptargetOverlayModel,\n} from 'dockview-core';\nimport { AngularFrameworkComponentFactory } from '../utils/component-factory';\nimport { AngularRenderer } from '../utils/angular-renderer';\nimport { AngularLifecycleManager } from '../utils/lifecycle-utils';\nimport { AngularTabGroupChipRenderer } from './angular-tab-group-chip-renderer';\nimport { AngularGroupDragGhostRenderer } from './angular-group-drag-ghost-renderer';\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 getTabContextMenuItems?: (\n params: GetTabContextMenuItemsParams\n ) => (ContextMenuItem | { component: 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> | TemplateRef<any>>;\n @Input() tabComponents?: Record<string, Type<any> | TemplateRef<any>>;\n @Input() watermarkComponent?: Type<any> | TemplateRef<any>;\n @Input() defaultTabComponent?: Type<any> | TemplateRef<any>;\n @Input() leftHeaderActionsComponent?: Type<any> | TemplateRef<any>;\n @Input() rightHeaderActionsComponent?: Type<any> | TemplateRef<any>;\n @Input() prefixHeaderActionsComponent?: Type<any> | TemplateRef<any>;\n @Input() tabGroupChipComponent?: Type<any>;\n @Input() groupDragGhostComponent?: 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() nonce?: CspNonceProvider;\n @Input() debug?: boolean;\n @Input() locked?: boolean;\n @Input() disableAutoResizing?: boolean;\n @Input() singleTabMode?: 'fullwidth' | 'default';\n @Input() theme?: DockviewTheme;\n @Input() scrollbars?: 'native' | 'custom';\n @Input() disableTabsOverflowList?: boolean;\n @Input() defaultRenderer?: DockviewPanelRenderer;\n @Input() defaultHeaderPosition?: DockviewHeaderPosition;\n @Input() disableDnd?: boolean;\n @Input() dndStrategy?: DockviewDndStrategy;\n @Input() dndEdges?: false | DroptargetOverlayModel;\n @Input() noPanelsOverlay?: 'emptyGroup' | 'watermark';\n @Input() getTabContextMenuItems?: (\n params: GetTabContextMenuItemsParams\n ) => (ContextMenuItem | { component: Type<any> | TemplateRef<any> })[];\n @Input() getTabGroupChipContextMenuItems?: (\n params: GetTabGroupChipContextMenuItemsParams\n ) => (\n | BuiltInChipContextMenuItem\n | ContextMenuItemConfig\n | { component: Type<any> | TemplateRef<any> }\n )[];\n @Input() tabGroupColors?: DockviewTabGroupColorEntry[];\n @Input() tabGroupAccent?: 'palette' | 'off';\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 // Handle tabGroupChipComponent → createTabGroupChipComponent mapping\n if (\n changes['tabGroupChipComponent'] &&\n !changes['tabGroupChipComponent'].isFirstChange()\n ) {\n const chipComponent =\n changes['tabGroupChipComponent'].currentValue;\n coreChanges.createTabGroupChipComponent = chipComponent\n ? () =>\n new AngularTabGroupChipRenderer(\n chipComponent,\n this.injector,\n this.environmentInjector\n )\n : undefined;\n hasChanges = true;\n }\n\n // Handle groupDragGhostComponent → createGroupDragGhostComponent mapping\n if (\n changes['groupDragGhostComponent'] &&\n !changes['groupDragGhostComponent'].isFirstChange()\n ) {\n const ghostComponent =\n changes['groupDragGhostComponent'].currentValue;\n coreChanges.createGroupDragGhostComponent = ghostComponent\n ? () =>\n new AngularGroupDragGhostRenderer(\n ghostComponent,\n this.injector,\n this.environmentInjector\n )\n : undefined;\n hasChanges = true;\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 if (this.tabGroupChipComponent) {\n const chipComponent = this.tabGroupChipComponent;\n coreOptions.createTabGroupChipComponent = () => {\n return new AngularTabGroupChipRenderer(\n chipComponent,\n this.injector,\n this.environmentInjector\n );\n };\n }\n\n if (this.groupDragGhostComponent) {\n const ghostComponent = this.groupDragGhostComponent;\n coreOptions.createGroupDragGhostComponent = () => {\n return new AngularGroupDragGhostRenderer(\n ghostComponent,\n this.injector,\n this.environmentInjector\n );\n };\n }\n\n return coreOptions as DockviewOptions;\n }\n\n private createFrameworkOptions(): DockviewFrameworkOptions {\n const headerActionsComponents: Record<\n string,\n Type<any> | TemplateRef<any>\n > = {};\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 group\n )!;\n }\n : undefined,\n createRightHeaderActionComponent: this.rightHeaderActionsComponent\n ? (group) => {\n return componentFactory.createHeaderActionsComponent(\n 'right',\n group\n )!;\n }\n : undefined,\n createPrefixHeaderActionComponent: this.prefixHeaderActionsComponent\n ? (group) => {\n return componentFactory.createHeaderActionsComponent(\n 'prefix',\n group\n )!;\n }\n : undefined,\n createContextMenuItemComponent: (options) => {\n if (!options.component) {\n return undefined;\n }\n const renderer = new AngularRenderer({\n component: options.component as\n | Type<any>\n | TemplateRef<any>,\n injector: this.injector,\n environmentInjector: this.environmentInjector,\n });\n return renderer;\n },\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 TemplateRef,\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> | TemplateRef<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> | TemplateRef<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 TemplateRef,\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> | TemplateRef<any>>;\n headerComponents?: Record<string, Type<any> | TemplateRef<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> | TemplateRef<any>>;\n @Input() headerComponents?: Record<string, Type<any> | TemplateRef<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 TemplateRef,\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> | TemplateRef<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> | TemplateRef<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 { IDockviewAngularTabGroupChipProps } from './lib/dockview/angular-tab-group-chip-renderer';\nexport { IDockviewAngularGroupDragGhostProps } from './lib/dockview/angular-group-drag-ghost-renderer';\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,4 +1,4 @@
1
- import { CspNonceProvider, GetTabContextMenuItemsParams, ContextMenuItem, GetTabGroupChipContextMenuItemsParams, BuiltInChipContextMenuItem, ContextMenuItemConfig, DockviewTabGroupColorEntry, DockviewReadyEvent, DockviewDidDropEvent, DockviewWillDropEvent, DockviewApi, GridviewApi, GridviewOptions, PaneviewApi, PaneviewDropEvent, PaneviewOptions, SplitviewApi, SplitviewOptions, DockviewOptions, IDockviewHeaderActionsProps, IDockviewPanelHeaderProps, IDockviewPanelProps, IWatermarkPanelProps, ITabGroup, IDockviewGroupPanel, IContentRenderer, IFrameworkPart, Parameters, CreateComponentOptions, GridviewPanel, SplitviewPanel, IPanePart, ITabRenderer, IWatermarkRenderer, IHeaderActionsRenderer, DockviewIDisposable } from 'dockview-core';
1
+ import { CspNonceProvider, DockviewTheme, DockviewPanelRenderer, DockviewHeaderPosition, DockviewDndStrategy, DroptargetOverlayModel, GetTabContextMenuItemsParams, ContextMenuItem, GetTabGroupChipContextMenuItemsParams, BuiltInChipContextMenuItem, ContextMenuItemConfig, DockviewTabGroupColorEntry, DockviewReadyEvent, DockviewDidDropEvent, DockviewWillDropEvent, DockviewApi, GridviewApi, GridviewOptions, PaneviewApi, PaneviewDropEvent, PaneviewOptions, SplitviewApi, SplitviewOptions, DockviewOptions, IDockviewHeaderActionsProps, IDockviewPanelHeaderProps, IDockviewPanelProps, IWatermarkPanelProps, ITabGroup, IDockviewGroupPanel, IContentRenderer, IFrameworkPart, Parameters, CreateComponentOptions, GridviewPanel, SplitviewPanel, IPanePart, ITabRenderer, IWatermarkRenderer, DockviewGroupPanel, IHeaderActionsRenderer, DockviewIDisposable } from 'dockview-core';
2
2
  export * from 'dockview-core';
3
3
  import * as i0 from '@angular/core';
4
4
  import { OnInit, OnDestroy, OnChanges, Type, TemplateRef, EventEmitter, SimpleChanges, Injector, EnvironmentInjector, ComponentRef, EmbeddedViewRef } from '@angular/core';
@@ -30,6 +30,15 @@ declare class DockviewAngularComponent implements OnInit, OnDestroy, OnChanges {
30
30
  locked?: boolean;
31
31
  disableAutoResizing?: boolean;
32
32
  singleTabMode?: 'fullwidth' | 'default';
33
+ theme?: DockviewTheme;
34
+ scrollbars?: 'native' | 'custom';
35
+ disableTabsOverflowList?: boolean;
36
+ defaultRenderer?: DockviewPanelRenderer;
37
+ defaultHeaderPosition?: DockviewHeaderPosition;
38
+ disableDnd?: boolean;
39
+ dndStrategy?: DockviewDndStrategy;
40
+ dndEdges?: false | DroptargetOverlayModel;
41
+ noPanelsOverlay?: 'emptyGroup' | 'watermark';
33
42
  getTabContextMenuItems?: (params: GetTabContextMenuItemsParams) => (ContextMenuItem | {
34
43
  component: Type<any> | TemplateRef<any>;
35
44
  })[];
@@ -54,7 +63,7 @@ declare class DockviewAngularComponent implements OnInit, OnDestroy, OnChanges {
54
63
  private createFrameworkOptions;
55
64
  private setupEventListeners;
56
65
  static ɵfac: i0.ɵɵFactoryDeclaration<DockviewAngularComponent, never>;
57
- 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; }; "tabGroupChipComponent": { "alias": "tabGroupChipComponent"; "required": false; }; "groupDragGhostComponent": { "alias": "groupDragGhostComponent"; "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; }; "nonce": { "alias": "nonce"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "locked": { "alias": "locked"; "required": false; }; "disableAutoResizing": { "alias": "disableAutoResizing"; "required": false; }; "singleTabMode": { "alias": "singleTabMode"; "required": false; }; "getTabContextMenuItems": { "alias": "getTabContextMenuItems"; "required": false; }; "getTabGroupChipContextMenuItems": { "alias": "getTabGroupChipContextMenuItems"; "required": false; }; "tabGroupColors": { "alias": "tabGroupColors"; "required": false; }; "tabGroupAccent": { "alias": "tabGroupAccent"; "required": false; }; }, { "ready": "ready"; "didDrop": "didDrop"; "willDrop": "willDrop"; }, never, never, true, never>;
66
+ 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; }; "tabGroupChipComponent": { "alias": "tabGroupChipComponent"; "required": false; }; "groupDragGhostComponent": { "alias": "groupDragGhostComponent"; "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; }; "nonce": { "alias": "nonce"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "locked": { "alias": "locked"; "required": false; }; "disableAutoResizing": { "alias": "disableAutoResizing"; "required": false; }; "singleTabMode": { "alias": "singleTabMode"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "scrollbars": { "alias": "scrollbars"; "required": false; }; "disableTabsOverflowList": { "alias": "disableTabsOverflowList"; "required": false; }; "defaultRenderer": { "alias": "defaultRenderer"; "required": false; }; "defaultHeaderPosition": { "alias": "defaultHeaderPosition"; "required": false; }; "disableDnd": { "alias": "disableDnd"; "required": false; }; "dndStrategy": { "alias": "dndStrategy"; "required": false; }; "dndEdges": { "alias": "dndEdges"; "required": false; }; "noPanelsOverlay": { "alias": "noPanelsOverlay"; "required": false; }; "getTabContextMenuItems": { "alias": "getTabContextMenuItems"; "required": false; }; "getTabGroupChipContextMenuItems": { "alias": "getTabGroupChipContextMenuItems"; "required": false; }; "tabGroupColors": { "alias": "tabGroupColors"; "required": false; }; "tabGroupAccent": { "alias": "tabGroupAccent"; "required": false; }; }, { "ready": "ready"; "didDrop": "didDrop"; "willDrop": "willDrop"; }, never, never, true, never>;
58
67
  }
59
68
 
60
69
  interface GridviewAngularReadyEvent {
@@ -246,7 +255,7 @@ declare class AngularFrameworkComponentFactory {
246
255
  createComponent(options: CreateComponentOptions): IContentRenderer;
247
256
  createTabComponent(options: CreateComponentOptions): ITabRenderer | undefined;
248
257
  createWatermarkComponent(): IWatermarkRenderer;
249
- createHeaderActionsComponent(name: string): IHeaderActionsRenderer | undefined;
258
+ createHeaderActionsComponent(name: string, group: DockviewGroupPanel): IHeaderActionsRenderer | undefined;
250
259
  }
251
260
 
252
261
  declare class AngularDisposable implements DockviewIDisposable {
@@ -1 +1 @@
1
- {"version":3,"file":"dockview-angular.d.ts","sources":["../../src/lib/dockview/dockview-angular.component.ts","../../src/lib/gridview/types.ts","../../src/lib/gridview/gridview-angular.component.ts","../../src/lib/paneview/types.ts","../../src/lib/paneview/paneview-angular.component.ts","../../src/lib/splitview/types.ts","../../src/lib/splitview/splitview-angular.component.ts","../../src/lib/dockview-angular.module.ts","../../src/lib/dockview/types.ts","../../src/lib/dockview/angular-tab-group-chip-renderer.ts","../../src/lib/dockview/angular-group-drag-ghost-renderer.ts","../../src/lib/utils/angular-renderer.ts","../../src/lib/utils/component-factory.ts","../../src/lib/utils/lifecycle-utils.ts"],"mappings":"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","names":["i2.DockviewAngularComponent","i3.GridviewAngularComponent","i4.PaneviewAngularComponent","i5.SplitviewAngularComponent"]}
1
+ {"version":3,"file":"dockview-angular.d.ts","sources":["../../src/lib/dockview/dockview-angular.component.ts","../../src/lib/gridview/types.ts","../../src/lib/gridview/gridview-angular.component.ts","../../src/lib/paneview/types.ts","../../src/lib/paneview/paneview-angular.component.ts","../../src/lib/splitview/types.ts","../../src/lib/splitview/splitview-angular.component.ts","../../src/lib/dockview-angular.module.ts","../../src/lib/dockview/types.ts","../../src/lib/dockview/angular-tab-group-chip-renderer.ts","../../src/lib/dockview/angular-group-drag-ghost-renderer.ts","../../src/lib/utils/angular-renderer.ts","../../src/lib/utils/component-factory.ts","../../src/lib/utils/lifecycle-utils.ts"],"mappings":"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","names":["i2.DockviewAngularComponent","i3.GridviewAngularComponent","i4.PaneviewAngularComponent","i5.SplitviewAngularComponent"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dockview-angular",
3
- "version": "6.3.0",
3
+ "version": "6.5.0",
4
4
  "description": "Angular docking layout manager — tabs, groups, grids, splitviews, drag and drop, floating panels",
5
5
  "keywords": [
6
6
  "splitview",
@@ -20,6 +20,8 @@
20
20
  "drag-and-drop",
21
21
  "drag",
22
22
  "drop",
23
+ "touch",
24
+ "mobile",
23
25
  "typescript",
24
26
  "zero-dependency",
25
27
  "ide-layout",
@@ -61,7 +63,7 @@
61
63
  "format:check": "prettier --check 'src/**/*.{ts,tsx,js,jsx}'"
62
64
  },
63
65
  "dependencies": {
64
- "dockview-core": "^6.3.0"
66
+ "dockview-core": "^6.5.0"
65
67
  },
66
68
  "peerDependencies": {
67
69
  "@angular/common": ">=21.0.6",