dockview-angular 6.2.2 → 6.4.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;
@@ -408,6 +408,44 @@ class AngularTabGroupChipRenderer {
408
408
  }
409
409
  }
410
410
 
411
+ class AngularGroupDragGhostRenderer {
412
+ get element() {
413
+ return this._element;
414
+ }
415
+ constructor(component, injector, environmentInjector) {
416
+ this.component = component;
417
+ this.injector = injector;
418
+ this.environmentInjector = environmentInjector;
419
+ this.componentRef = null;
420
+ this._element = document.createElement('div');
421
+ this._element.className = 'dv-angular-part';
422
+ this._element.style.display = 'inline-flex';
423
+ this.appRef = injector.get(ApplicationRef);
424
+ }
425
+ init(params) {
426
+ this.componentRef = createComponent(this.component, {
427
+ environmentInjector: this.environmentInjector ||
428
+ this.injector,
429
+ elementInjector: this.injector,
430
+ });
431
+ const instance = this.componentRef.instance;
432
+ instance['group'] = params.group;
433
+ instance['api'] = params.api;
434
+ const hostView = this.componentRef.hostView;
435
+ const rootNode = hostView.rootNodes[0];
436
+ this._element.appendChild(rootNode);
437
+ this.appRef.attachView(hostView);
438
+ this.componentRef.changeDetectorRef.markForCheck();
439
+ }
440
+ dispose() {
441
+ if (this.componentRef) {
442
+ this.appRef.detachView(this.componentRef.hostView);
443
+ this.componentRef.destroy();
444
+ this.componentRef = null;
445
+ }
446
+ }
447
+ }
448
+
411
449
  class DockviewAngularComponent {
412
450
  constructor() {
413
451
  this.ready = new EventEmitter();
@@ -446,6 +484,15 @@ class DockviewAngularComponent {
446
484
  : undefined;
447
485
  hasChanges = true;
448
486
  }
487
+ // Handle groupDragGhostComponent → createGroupDragGhostComponent mapping
488
+ if (changes['groupDragGhostComponent'] &&
489
+ !changes['groupDragGhostComponent'].isFirstChange()) {
490
+ const ghostComponent = changes['groupDragGhostComponent'].currentValue;
491
+ coreChanges.createGroupDragGhostComponent = ghostComponent
492
+ ? () => new AngularGroupDragGhostRenderer(ghostComponent, this.injector, this.environmentInjector)
493
+ : undefined;
494
+ hasChanges = true;
495
+ }
449
496
  if (hasChanges) {
450
497
  this.dockviewApi.updateOptions(coreChanges);
451
498
  }
@@ -483,6 +530,12 @@ class DockviewAngularComponent {
483
530
  return new AngularTabGroupChipRenderer(chipComponent, this.injector, this.environmentInjector);
484
531
  };
485
532
  }
533
+ if (this.groupDragGhostComponent) {
534
+ const ghostComponent = this.groupDragGhostComponent;
535
+ coreOptions.createGroupDragGhostComponent = () => {
536
+ return new AngularGroupDragGhostRenderer(ghostComponent, this.injector, this.environmentInjector);
537
+ };
538
+ }
486
539
  return coreOptions;
487
540
  }
488
541
  createFrameworkOptions() {
@@ -558,7 +611,7 @@ class DockviewAngularComponent {
558
611
  }
559
612
  }
560
613
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DockviewAngularComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
561
- 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", className: "className", orientation: "orientation", hideBorders: "hideBorders", rootOverlayModel: "rootOverlayModel", defaultTabComponent_: "defaultTabComponent_", tabHeight: "tabHeight", disableFloatingGroups: "disableFloatingGroups", floatingGroupBounds: "floatingGroupBounds", popoutUrl: "popoutUrl", debug: "debug", locked: "locked", disableAutoResizing: "disableAutoResizing", singleTabMode: "singleTabMode", 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 }); }
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 }); }
562
615
  }
563
616
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DockviewAngularComponent, decorators: [{
564
617
  type: Component,
@@ -582,6 +635,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
582
635
  type: Input
583
636
  }], tabGroupChipComponent: [{
584
637
  type: Input
638
+ }], groupDragGhostComponent: [{
639
+ type: Input
585
640
  }], className: [{
586
641
  type: Input
587
642
  }], orientation: [{
@@ -600,6 +655,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImpo
600
655
  type: Input
601
656
  }], popoutUrl: [{
602
657
  type: Input
658
+ }], nonce: [{
659
+ type: Input
603
660
  }], debug: [{
604
661
  type: Input
605
662
  }], locked: [{
@@ -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/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 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 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';\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\n // Core dockview options as inputs\n @Input() className?: string;\n @Input() orientation?: 'horizontal' | 'vertical';\n @Input() hideBorders?: boolean;\n @Input() rootOverlayModel?: 'always' | 'never';\n @Input() defaultTabComponent_?: string;\n @Input() tabHeight?: number;\n @Input() disableFloatingGroups?: boolean;\n @Input() floatingGroupBounds?: 'boundedWithinViewport';\n @Input() popoutUrl?: string;\n @Input() debug?: boolean;\n @Input() locked?: boolean;\n @Input() disableAutoResizing?: boolean;\n @Input() singleTabMode?: 'fullwidth' | 'default';\n @Input() 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 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 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 {\n GridviewAngularOptions,\n GridviewAngularEvents,\n GridviewAngularReadyEvent,\n} from './lib/gridview/types';\nexport {\n PaneviewAngularOptions,\n PaneviewAngularEvents,\n PaneviewAngularReadyEvent,\n} from './lib/paneview/types';\nexport {\n SplitviewAngularOptions,\n SplitviewAngularEvents,\n SplitviewAngularReadyEvent,\n} from './lib/splitview/types';\n\n// Utilities\nexport * from './lib/utils/angular-renderer';\nexport * from './lib/utils/component-factory';\nexport * from './lib/utils/lifecycle-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dockview-angular.mjs","sources":["../../src/lib/utils/angular-renderer.ts","../../src/lib/gridview/angular-gridview-panel.ts","../../src/lib/splitview/angular-splitview-panel.ts","../../src/lib/paneview/angular-pane-part.ts","../../src/lib/utils/component-factory.ts","../../src/lib/utils/lifecycle-utils.ts","../../src/lib/dockview/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,4 +1,4 @@
1
- import { GetTabContextMenuItemsParams, ContextMenuItem, GetTabGroupChipContextMenuItemsParams, BuiltInChipContextMenuItem, ContextMenuItemConfig, DockviewTabGroupColorEntry, DockviewReadyEvent, DockviewDidDropEvent, DockviewWillDropEvent, DockviewApi, GridviewApi, GridviewOptions, PaneviewApi, PaneviewDropEvent, PaneviewOptions, SplitviewApi, SplitviewOptions, DockviewOptions, IDockviewHeaderActionsProps, IDockviewPanelHeaderProps, IDockviewPanelProps, IWatermarkPanelProps, ITabGroup, IContentRenderer, IFrameworkPart, Parameters, CreateComponentOptions, GridviewPanel, SplitviewPanel, IPanePart, ITabRenderer, IWatermarkRenderer, IHeaderActionsRenderer, DockviewIDisposable } from 'dockview-core';
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';
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';
@@ -15,6 +15,7 @@ declare class DockviewAngularComponent implements OnInit, OnDestroy, OnChanges {
15
15
  rightHeaderActionsComponent?: Type<any> | TemplateRef<any>;
16
16
  prefixHeaderActionsComponent?: Type<any> | TemplateRef<any>;
17
17
  tabGroupChipComponent?: Type<any>;
18
+ groupDragGhostComponent?: Type<any>;
18
19
  className?: string;
19
20
  orientation?: 'horizontal' | 'vertical';
20
21
  hideBorders?: boolean;
@@ -24,6 +25,7 @@ declare class DockviewAngularComponent implements OnInit, OnDestroy, OnChanges {
24
25
  disableFloatingGroups?: boolean;
25
26
  floatingGroupBounds?: 'boundedWithinViewport';
26
27
  popoutUrl?: string;
28
+ nonce?: CspNonceProvider;
27
29
  debug?: boolean;
28
30
  locked?: boolean;
29
31
  disableAutoResizing?: boolean;
@@ -52,7 +54,7 @@ declare class DockviewAngularComponent implements OnInit, OnDestroy, OnChanges {
52
54
  private createFrameworkOptions;
53
55
  private setupEventListeners;
54
56
  static ɵfac: i0.ɵɵFactoryDeclaration<DockviewAngularComponent, never>;
55
- 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; }; "className": { "alias": "className"; "required": false; }; "orientation": { "alias": "orientation"; "required": false; }; "hideBorders": { "alias": "hideBorders"; "required": false; }; "rootOverlayModel": { "alias": "rootOverlayModel"; "required": false; }; "defaultTabComponent_": { "alias": "defaultTabComponent_"; "required": false; }; "tabHeight": { "alias": "tabHeight"; "required": false; }; "disableFloatingGroups": { "alias": "disableFloatingGroups"; "required": false; }; "floatingGroupBounds": { "alias": "floatingGroupBounds"; "required": false; }; "popoutUrl": { "alias": "popoutUrl"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "locked": { "alias": "locked"; "required": false; }; "disableAutoResizing": { "alias": "disableAutoResizing"; "required": false; }; "singleTabMode": { "alias": "singleTabMode"; "required": false; }; "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>;
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>;
56
58
  }
57
59
 
58
60
  interface GridviewAngularReadyEvent {
@@ -200,6 +202,11 @@ interface IDockviewAngularTabGroupChipProps {
200
202
  api: DockviewApi;
201
203
  }
202
204
 
205
+ interface IDockviewAngularGroupDragGhostProps {
206
+ group: IDockviewGroupPanel;
207
+ api: DockviewApi;
208
+ }
209
+
203
210
  interface AngularRendererOptions<T = unknown> {
204
211
  component: Type<T> | TemplateRef<T>;
205
212
  injector: Injector;
@@ -260,5 +267,5 @@ declare class AngularLifecycleManager {
260
267
  declare function createAngularDisposable(disposeCallback?: () => void): AngularDisposable;
261
268
 
262
269
  export { AngularDisposable, AngularFrameworkComponentFactory, AngularLifecycleManager, AngularRenderer, DockviewAngularComponent, DockviewAngularModule, GridviewAngularComponent, PaneviewAngularComponent, SplitviewAngularComponent, createAngularDisposable };
263
- export type { AngularRendererOptions, DockviewAngularComponentOptions, DockviewAngularEvents, DockviewAngularOptions, GridviewAngularEvents, GridviewAngularOptions, GridviewAngularReadyEvent, IDockviewAngularHeaderActionsProps, IDockviewAngularPanelHeaderProps, IDockviewAngularPanelProps, IDockviewAngularTabGroupChipProps, IDockviewAngularWatermarkProps, PaneviewAngularEvents, PaneviewAngularOptions, PaneviewAngularReadyEvent, SplitviewAngularEvents, SplitviewAngularOptions, SplitviewAngularReadyEvent };
270
+ export type { AngularRendererOptions, DockviewAngularComponentOptions, DockviewAngularEvents, DockviewAngularOptions, GridviewAngularEvents, GridviewAngularOptions, GridviewAngularReadyEvent, IDockviewAngularGroupDragGhostProps, IDockviewAngularHeaderActionsProps, IDockviewAngularPanelHeaderProps, IDockviewAngularPanelProps, IDockviewAngularTabGroupChipProps, IDockviewAngularWatermarkProps, PaneviewAngularEvents, PaneviewAngularOptions, PaneviewAngularReadyEvent, SplitviewAngularEvents, SplitviewAngularOptions, SplitviewAngularReadyEvent };
264
271
  //# sourceMappingURL=dockview-angular.d.ts.map
@@ -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/utils/angular-renderer.ts","../../src/lib/utils/component-factory.ts","../../src/lib/utils/lifecycle-utils.ts"],"mappings":";;;;;;;AAqDA,cAoBa,wBAAyB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;;AAIhE,gBAAa,MAAM,SAAS,IAAI,QAAQ,WAAW;AACnD,oBAAgB,MAAM,SAAS,IAAI,QAAQ,WAAW;yBACjC,IAAI,QAAQ,WAAW;0BACtB,IAAI,QAAQ,WAAW;iCAChB,IAAI,QAAQ,WAAW;kCACtB,IAAI,QAAQ,WAAW;mCACtB,IAAI,QAAQ,WAAW;AACtD,4BAAwB,IAAI;;AAI5B;;AAEA;;;;;;;;;AASA;sCAEG,4BAA4B,MAClC,eAAe;mBAAgB,IAAI,QAAQ,WAAW;AAAO;+CAEvD,qCAAqC,MAE3C,0BAA0B,GAC1B,qBAAqB;mBACR,IAAI,QAAQ,WAAW;AAAO;AAExC,qBAAiB,0BAA0B;AAC3C;AAEC,WAAK,YAAA,CAAA,kBAAA;AACL,aAAO,YAAA,CAAA,oBAAA;AACP,cAAQ,YAAA,CAAA,qBAAA;;;;;AAOlB;AAIA;AAOA,yBAAqB,aAAa;sBAqChB,WAAW;AAI7B;AAsBA;AAwBA;AA2EA;yCA9NS,wBAAwB;2CAAxB,wBAAwB;AAoPpC;;UC1TgB,yBAAyB;SACjC,WAAW;AACnB;AAEK,UAAW,sBAAuB,SAAQ,eAAe;AAC3D,gBAAY,MAAM,SAAS,IAAI,QAAQ,WAAW;AACrD;UAEgB,qBAAqB;WAC3B,yBAAyB;AACnC;;ACqBD,cAoBa,wBAAyB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;;AAIhE,gBAAa,MAAM,SAAS,IAAI,QAAQ,WAAW;;AAInD;;;;;AAMC,WAAK,YAAA,CAAA,yBAAA;;;;;AAOf;AAIA;AAOA,yBAAqB,aAAa;sBAmBhB,WAAW;AAI7B;AAmBA;AAaA;yCAvFS,wBAAwB;2CAAxB,wBAAwB;AAoGpC;;UCvJgB,yBAAyB;SACjC,WAAW;AACnB;AAEK,UAAW,sBAAuB,SAAQ,eAAe;AAC3D,gBAAY,MAAM,SAAS,IAAI,QAAQ,WAAW;AAClD,uBAAmB,MAAM,SAAS,IAAI,QAAQ,WAAW;AAC5D;UAEgB,qBAAqB;WAC3B,yBAAyB;UAC1B,iBAAiB;AAC1B;;ACsBD,cAoBa,wBAAyB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;;AAIhE,gBAAa,MAAM,SAAS,IAAI,QAAQ,WAAW;AACnD,uBAAmB,MAAM,SAAS,IAAI,QAAQ,WAAW;;AAIzD;;;;AAKC,WAAK,YAAA,CAAA,yBAAA;AACL,UAAI,YAAA,CAAA,iBAAA;;;;;AAOd;AAIA;AAOA,yBAAqB,aAAa;sBAmBhB,WAAW;AAI7B;AAsBA;AAaA;AAwBA;yCAnHS,wBAAwB;2CAAxB,wBAAwB;AAkIpC;;UCxLgB,0BAA0B;SAClC,YAAY;AACpB;AAEK,UAAW,uBAAwB,SAAQ,gBAAgB;AAC7D,gBAAY,MAAM,SAAS,IAAI,QAAQ,WAAW;AACrD;UAEgB,sBAAsB;WAC5B,0BAA0B;AACpC;;ACqBD,cAoBa,yBAA0B,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;;AAIjE,gBAAa,MAAM,SAAS,IAAI,QAAQ,WAAW;;AAInD;;;;;AAMC,WAAK,YAAA,CAAA,0BAAA;;;;;AAOf;AAIA;AAOA,yBAAqB,aAAa;uBAmBf,YAAY;AAI/B;AAmBA;AAaA;yCAvFS,yBAAyB;2CAAzB,yBAAyB;AAoGrC;;AClJD,cAea,qBAAqB;yCAArB,qBAAqB;0CAArB,qBAAqB,iBAAA,EAAA,CAAA,YAAA,SAAAA,wBAAA,SAAAC,wBAAA,SAAAC,wBAAA,SAAAC,yBAAA,WAAAH,wBAAA,SAAAC,wBAAA,SAAAC,wBAAA,SAAAC,yBAAA;0CAArB,qBAAqB;AAAG;;ACX/B,UAAW,0BAA2B,SAAQ,mBAAmB;AAEtE;AAEK,UAAW,gCAAiC,SAAQ,yBAAyB;AAElF;AAEK,UAAW,8BAA+B,SAAQ,oBAAoB;AAE3E;AAEK,UAAW,kCAAmC,SAAQ,2BAA2B;AAEtF;AAEK,UAAW,sBAAuB,SAAQ,eAAe;AAC3D,gBAAY,MAAM,SAAS,IAAI,QAAQ,WAAW;AAClD,oBAAgB,MAAM,SAAS,IAAI,QAAQ,WAAW;yBACjC,IAAI,QAAQ,WAAW;0BACtB,IAAI,QAAQ,WAAW;iCAChB,IAAI,QAAQ,WAAW;kCACtB,IAAI,QAAQ,WAAW;mCACtB,IAAI,QAAQ,WAAW;AACzD;AAGK,UAAW,+BAAgC,SAAQ,sBAAsB;AAAG;UAEjE,qBAAqB;WAC3B,kBAAkB;aAChB,oBAAoB;cACnB,qBAAqB;AAClC;;UClCgB,iCAAiC;cACpC,SAAS;SACd,WAAW;AACnB;;ACFK,UAAW,sBAAsB;eACxB,IAAI,MAAM,WAAW;cACtB,QAAQ;0BACI,mBAAmB;AAC5C;AAED,cAAa,eAAe,yBACb,gBAAgB,EAAE,cAAc;AAO/B;;;;;AAAQ,yBAAS,sBAAsB;mBAIpC,WAAW;qBAOT,YAAY;gBAGjB,eAAe;AAI3B,qBAAiB,UAAU;AAoC3B,mBAAe,UAAU;AAkBzB;AAaA;AAqBA;AAaA;AAeH;;AC3ID,cAAa,gCAAgC;AAErC;AACA;;;;;;AADQ,4BAAY,MAAM,SAAS,IAAI,QAAQ,WAAW,kBACxC,QAAQ,wBACI,mBAAmB,8BACzB,MAAM,SAAS,IAAI,QAAQ,WAAW,0CACjC,IAAI,QAAQ,WAAW,8CAClB,MAAM,SAEpC,IAAI,QAAQ,WAAW,2CAEG,IAAI,QAAQ,WAAW;AAIzD,qCAAiC,sBAAsB,GAAG,gBAAgB;AAmB1E,qCAAiC,sBAAsB,GAAG,aAAa;AAkBvE,sCAAkC,sBAAsB,GAAG,cAAc;AAkBzE,qCAAiC,sBAAsB,GAAG,SAAS;AAgBnE,6BAAyB,sBAAsB,GAAG,gBAAgB;AAIlE,gCACa,sBAAsB,GAChC,YAAY;AAqBf,gCAA4B,kBAAkB;AAe9C,gDAEG,sBAAsB;AAgB5B;;ACnKD,cAAa,iBAAkB,YAAW,mBAAmB;;;;AAQzD;AAQA;AAeH;AAED,cAAa,uBAAuB;;;AAIhC,oBAAgB,UAAU;AAI1B,8BAA0B,mBAAmB;AAI7C,oCAAgC,UAAU,QAAQ,UAAU;AAI5D;AAaH;AAED,iBAAgB,uBAAuB,gCAEpC,iBAAiB;;;;","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.2.2",
3
+ "version": "6.4.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.2.2"
66
+ "dockview-core": "^6.4.0"
65
67
  },
66
68
  "peerDependencies": {
67
69
  "@angular/common": ">=21.0.6",