dockview-vue 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
@@ -225,6 +225,32 @@ class VueTabGroupChipRenderer extends AbstractVueRenderer {
225
225
  this._renderDisposable?.dispose();
226
226
  }
227
227
  }
228
+ class VueGroupDragGhostRenderer extends AbstractVueRenderer {
229
+ _renderDisposable;
230
+ constructor(component, parent) {
231
+ super(component, parent);
232
+ this.element.style.height = "";
233
+ this.element.style.width = "";
234
+ this.element.style.display = "inline-flex";
235
+ }
236
+ init(params) {
237
+ this._renderDisposable?.dispose();
238
+ this._renderDisposable = mountVueComponent(
239
+ this.component,
240
+ this.parent,
241
+ {
242
+ params: {
243
+ group: params.group,
244
+ api: params.api
245
+ }
246
+ },
247
+ this.element
248
+ );
249
+ }
250
+ dispose() {
251
+ this._renderDisposable?.dispose();
252
+ }
253
+ }
228
254
  class VuePart {
229
255
  constructor(element, vueComponent, parent, props) {
230
256
  this.element = element;
@@ -263,12 +289,14 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
263
289
  disableFloatingGroups: { type: Boolean },
264
290
  floatingGroupBounds: {},
265
291
  popoutUrl: {},
292
+ nonce: { type: [String, Function] },
266
293
  defaultRenderer: {},
267
294
  defaultHeaderPosition: {},
268
295
  debug: { type: Boolean },
269
296
  dndEdges: { type: [Boolean, Object] },
270
297
  rootOverlayModel: {},
271
298
  disableDnd: { type: Boolean },
299
+ dndStrategy: {},
272
300
  locked: { type: Boolean },
273
301
  className: {},
274
302
  noPanelsOverlay: {},
@@ -278,6 +306,7 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
278
306
  getTabContextMenuItems: { type: Function },
279
307
  getTabGroupChipContextMenuItems: { type: Function },
280
308
  createTabGroupChipComponent: { type: Function },
309
+ createGroupDragGhostComponent: { type: Function },
281
310
  tabGroupColors: {},
282
311
  tabGroupAccent: {},
283
312
  watermarkComponent: {},
@@ -285,7 +314,8 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
285
314
  rightHeaderActionsComponent: {},
286
315
  leftHeaderActionsComponent: {},
287
316
  prefixHeaderActionsComponent: {},
288
- tabGroupChipComponent: {}
317
+ tabGroupChipComponent: {},
318
+ groupDragGhostComponent: {}
289
319
  },
290
320
  emits: ["ready", "didDrop", "willDrop"],
291
321
  setup(__props, { emit: __emit }) {
@@ -325,6 +355,22 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
325
355
  }
326
356
  }
327
357
  );
358
+ vue.watch(
359
+ () => props.groupDragGhostComponent,
360
+ (newValue) => {
361
+ if (instance.value) {
362
+ instance.value.updateOptions({
363
+ createGroupDragGhostComponent: newValue ? () => {
364
+ const component = findComponent(inst, newValue);
365
+ return new VueGroupDragGhostRenderer(
366
+ component,
367
+ inst
368
+ );
369
+ } : void 0
370
+ });
371
+ }
372
+ }
373
+ );
328
374
  vue.watch(
329
375
  () => props.defaultTabComponent,
330
376
  (newValue) => {
@@ -478,6 +524,13 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
478
524
  return new VueTabGroupChipRenderer(component, inst);
479
525
  };
480
526
  }
527
+ if (props.groupDragGhostComponent) {
528
+ const ghostComponentName = props.groupDragGhostComponent;
529
+ coreOptions.createGroupDragGhostComponent = () => {
530
+ const component = findComponent(inst, ghostComponentName);
531
+ return new VueGroupDragGhostRenderer(component, inst);
532
+ };
533
+ }
481
534
  const api = dockviewCore.createDockview(el.value, {
482
535
  ...coreOptions,
483
536
  ...frameworkOptions
@@ -796,6 +849,7 @@ exports.GridviewVue = _sfc_main$1;
796
849
  exports.PaneviewVue = _sfc_main;
797
850
  exports.SplitviewVue = _sfc_main$2;
798
851
  exports.VueContextMenuItemRenderer = VueContextMenuItemRenderer;
852
+ exports.VueGroupDragGhostRenderer = VueGroupDragGhostRenderer;
799
853
  exports.VueHeaderActionsRenderer = VueHeaderActionsRenderer;
800
854
  exports.VuePart = VuePart;
801
855
  exports.VueRenderer = VueRenderer;
@@ -224,6 +224,32 @@ class VueTabGroupChipRenderer extends AbstractVueRenderer {
224
224
  this._renderDisposable?.dispose();
225
225
  }
226
226
  }
227
+ class VueGroupDragGhostRenderer extends AbstractVueRenderer {
228
+ _renderDisposable;
229
+ constructor(component, parent) {
230
+ super(component, parent);
231
+ this.element.style.height = "";
232
+ this.element.style.width = "";
233
+ this.element.style.display = "inline-flex";
234
+ }
235
+ init(params) {
236
+ this._renderDisposable?.dispose();
237
+ this._renderDisposable = mountVueComponent(
238
+ this.component,
239
+ this.parent,
240
+ {
241
+ params: {
242
+ group: params.group,
243
+ api: params.api
244
+ }
245
+ },
246
+ this.element
247
+ );
248
+ }
249
+ dispose() {
250
+ this._renderDisposable?.dispose();
251
+ }
252
+ }
227
253
  class VuePart {
228
254
  constructor(element, vueComponent, parent, props) {
229
255
  this.element = element;
@@ -262,12 +288,14 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
262
288
  disableFloatingGroups: { type: Boolean },
263
289
  floatingGroupBounds: {},
264
290
  popoutUrl: {},
291
+ nonce: { type: [String, Function] },
265
292
  defaultRenderer: {},
266
293
  defaultHeaderPosition: {},
267
294
  debug: { type: Boolean },
268
295
  dndEdges: { type: [Boolean, Object] },
269
296
  rootOverlayModel: {},
270
297
  disableDnd: { type: Boolean },
298
+ dndStrategy: {},
271
299
  locked: { type: Boolean },
272
300
  className: {},
273
301
  noPanelsOverlay: {},
@@ -277,6 +305,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
277
305
  getTabContextMenuItems: { type: Function },
278
306
  getTabGroupChipContextMenuItems: { type: Function },
279
307
  createTabGroupChipComponent: { type: Function },
308
+ createGroupDragGhostComponent: { type: Function },
280
309
  tabGroupColors: {},
281
310
  tabGroupAccent: {},
282
311
  watermarkComponent: {},
@@ -284,7 +313,8 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
284
313
  rightHeaderActionsComponent: {},
285
314
  leftHeaderActionsComponent: {},
286
315
  prefixHeaderActionsComponent: {},
287
- tabGroupChipComponent: {}
316
+ tabGroupChipComponent: {},
317
+ groupDragGhostComponent: {}
288
318
  },
289
319
  emits: ["ready", "didDrop", "willDrop"],
290
320
  setup(__props, { emit: __emit }) {
@@ -324,6 +354,22 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
324
354
  }
325
355
  }
326
356
  );
357
+ watch(
358
+ () => props.groupDragGhostComponent,
359
+ (newValue) => {
360
+ if (instance.value) {
361
+ instance.value.updateOptions({
362
+ createGroupDragGhostComponent: newValue ? () => {
363
+ const component = findComponent(inst, newValue);
364
+ return new VueGroupDragGhostRenderer(
365
+ component,
366
+ inst
367
+ );
368
+ } : void 0
369
+ });
370
+ }
371
+ }
372
+ );
327
373
  watch(
328
374
  () => props.defaultTabComponent,
329
375
  (newValue) => {
@@ -477,6 +523,13 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
477
523
  return new VueTabGroupChipRenderer(component, inst);
478
524
  };
479
525
  }
526
+ if (props.groupDragGhostComponent) {
527
+ const ghostComponentName = props.groupDragGhostComponent;
528
+ coreOptions.createGroupDragGhostComponent = () => {
529
+ const component = findComponent(inst, ghostComponentName);
530
+ return new VueGroupDragGhostRenderer(component, inst);
531
+ };
532
+ }
480
533
  const api = createDockview(el.value, {
481
534
  ...coreOptions,
482
535
  ...frameworkOptions
@@ -796,6 +849,7 @@ export {
796
849
  _sfc_main as PaneviewVue,
797
850
  _sfc_main$2 as SplitviewVue,
798
851
  VueContextMenuItemRenderer,
852
+ VueGroupDragGhostRenderer,
799
853
  VueHeaderActionsRenderer,
800
854
  VuePart,
801
855
  VueRenderer,
@@ -225,6 +225,32 @@
225
225
  this._renderDisposable?.dispose();
226
226
  }
227
227
  }
228
+ class VueGroupDragGhostRenderer extends AbstractVueRenderer {
229
+ _renderDisposable;
230
+ constructor(component, parent) {
231
+ super(component, parent);
232
+ this.element.style.height = "";
233
+ this.element.style.width = "";
234
+ this.element.style.display = "inline-flex";
235
+ }
236
+ init(params) {
237
+ this._renderDisposable?.dispose();
238
+ this._renderDisposable = mountVueComponent(
239
+ this.component,
240
+ this.parent,
241
+ {
242
+ params: {
243
+ group: params.group,
244
+ api: params.api
245
+ }
246
+ },
247
+ this.element
248
+ );
249
+ }
250
+ dispose() {
251
+ this._renderDisposable?.dispose();
252
+ }
253
+ }
228
254
  class VuePart {
229
255
  constructor(element, vueComponent, parent, props) {
230
256
  this.element = element;
@@ -263,12 +289,14 @@
263
289
  disableFloatingGroups: { type: Boolean },
264
290
  floatingGroupBounds: {},
265
291
  popoutUrl: {},
292
+ nonce: { type: [String, Function] },
266
293
  defaultRenderer: {},
267
294
  defaultHeaderPosition: {},
268
295
  debug: { type: Boolean },
269
296
  dndEdges: { type: [Boolean, Object] },
270
297
  rootOverlayModel: {},
271
298
  disableDnd: { type: Boolean },
299
+ dndStrategy: {},
272
300
  locked: { type: Boolean },
273
301
  className: {},
274
302
  noPanelsOverlay: {},
@@ -278,6 +306,7 @@
278
306
  getTabContextMenuItems: { type: Function },
279
307
  getTabGroupChipContextMenuItems: { type: Function },
280
308
  createTabGroupChipComponent: { type: Function },
309
+ createGroupDragGhostComponent: { type: Function },
281
310
  tabGroupColors: {},
282
311
  tabGroupAccent: {},
283
312
  watermarkComponent: {},
@@ -285,7 +314,8 @@
285
314
  rightHeaderActionsComponent: {},
286
315
  leftHeaderActionsComponent: {},
287
316
  prefixHeaderActionsComponent: {},
288
- tabGroupChipComponent: {}
317
+ tabGroupChipComponent: {},
318
+ groupDragGhostComponent: {}
289
319
  },
290
320
  emits: ["ready", "didDrop", "willDrop"],
291
321
  setup(__props, { emit: __emit }) {
@@ -325,6 +355,22 @@
325
355
  }
326
356
  }
327
357
  );
358
+ vue.watch(
359
+ () => props.groupDragGhostComponent,
360
+ (newValue) => {
361
+ if (instance.value) {
362
+ instance.value.updateOptions({
363
+ createGroupDragGhostComponent: newValue ? () => {
364
+ const component = findComponent(inst, newValue);
365
+ return new VueGroupDragGhostRenderer(
366
+ component,
367
+ inst
368
+ );
369
+ } : void 0
370
+ });
371
+ }
372
+ }
373
+ );
328
374
  vue.watch(
329
375
  () => props.defaultTabComponent,
330
376
  (newValue) => {
@@ -478,6 +524,13 @@
478
524
  return new VueTabGroupChipRenderer(component, inst);
479
525
  };
480
526
  }
527
+ if (props.groupDragGhostComponent) {
528
+ const ghostComponentName = props.groupDragGhostComponent;
529
+ coreOptions.createGroupDragGhostComponent = () => {
530
+ const component = findComponent(inst, ghostComponentName);
531
+ return new VueGroupDragGhostRenderer(component, inst);
532
+ };
533
+ }
481
534
  const api = dockviewCore.createDockview(el.value, {
482
535
  ...coreOptions,
483
536
  ...frameworkOptions
@@ -796,6 +849,7 @@
796
849
  exports2.PaneviewVue = _sfc_main;
797
850
  exports2.SplitviewVue = _sfc_main$2;
798
851
  exports2.VueContextMenuItemRenderer = VueContextMenuItemRenderer;
852
+ exports2.VueGroupDragGhostRenderer = VueGroupDragGhostRenderer;
799
853
  exports2.VueHeaderActionsRenderer = VueHeaderActionsRenderer;
800
854
  exports2.VuePart = VuePart;
801
855
  exports2.VueRenderer = VueRenderer;
@@ -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;
@@ -6,6 +6,7 @@ export interface VueProps {
6
6
  leftHeaderActionsComponent?: string;
7
7
  prefixHeaderActionsComponent?: string;
8
8
  tabGroupChipComponent?: string;
9
+ groupDragGhostComponent?: string;
9
10
  }
10
11
  export type VueEvents = {
11
12
  ready: [event: DockviewReadyEvent];
@@ -1,4 +1,4 @@
1
- import type { DockviewApi, DockviewGroupPanel, IContentRenderer, IGroupHeaderProps, IHeaderActionsRenderer, ITabGroupChipRenderer, ITabGroup, ITabRenderer, IWatermarkRenderer, IContextMenuItemRenderer, IContextMenuItemComponentProps, PanelUpdateEvent, Parameters, TabPartInitParameters, WatermarkRendererInitParameters } from 'dockview-core';
1
+ import type { DockviewApi, DockviewGroupPanel, IContentRenderer, IDockviewGroupPanel, IGroupDragGhostRenderer, IGroupHeaderProps, IHeaderActionsRenderer, ITabGroupChipRenderer, ITabGroup, ITabRenderer, IWatermarkRenderer, IContextMenuItemRenderer, IContextMenuItemComponentProps, PanelUpdateEvent, Parameters, TabPartInitParameters, WatermarkRendererInitParameters } from 'dockview-core';
2
2
  import { type ComponentOptionsBase, type DefineComponent, type ComponentInternalInstance } from 'vue';
3
3
  export type ComponentInterface = ComponentOptionsBase<any, any, any, any, any, any, any, any>;
4
4
  export type VueComponent<T = any> = DefineComponent<T>;
@@ -64,6 +64,15 @@ export declare class VueTabGroupChipRenderer extends AbstractVueRenderer impleme
64
64
  }): void;
65
65
  dispose(): void;
66
66
  }
67
+ export declare class VueGroupDragGhostRenderer extends AbstractVueRenderer implements IGroupDragGhostRenderer {
68
+ private _renderDisposable;
69
+ constructor(component: VueComponent, parent: ComponentInternalInstance);
70
+ init(params: {
71
+ group: IDockviewGroupPanel;
72
+ api: DockviewApi;
73
+ }): void;
74
+ dispose(): void;
75
+ }
67
76
  export declare class VuePart<T extends Record<string, any> = any> {
68
77
  private readonly element;
69
78
  private readonly vueComponent;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dockview-vue",
3
- "version": "6.2.2",
3
+ "version": "6.4.0",
4
4
  "description": "Vue 3 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",
@@ -67,7 +69,7 @@
67
69
  "format:check": "prettier --check 'src/**/*.{ts,tsx,js,jsx,vue}'"
68
70
  },
69
71
  "dependencies": {
70
- "dockview-core": "^6.2.2"
72
+ "dockview-core": "^6.4.0"
71
73
  },
72
74
  "peerDependencies": {
73
75
  "vue": "^3.4.0"