dockview-vue 5.2.0 → 6.0.1

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.
@@ -3,10 +3,7 @@
3
3
  })(this, function(exports2, dockviewCore, vue) {
4
4
  "use strict";var __defProp = Object.defineProperty;
5
5
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
- var __publicField = (obj, key, value) => {
7
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
- return value;
9
- };
6
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
7
 
11
8
  function findComponent(parent, name) {
12
9
  var _a, _b;
@@ -157,6 +154,9 @@ var __publicField = (obj, key, value) => {
157
154
  }),
158
155
  props.api.onDidActiveChange(() => {
159
156
  this.updateProps();
157
+ }),
158
+ props.api.onDidLocationChange((event) => {
159
+ this.updateLocation(event.location);
160
160
  })
161
161
  );
162
162
  (_a = this._renderDisposable) == null ? void 0 : _a.dispose();
@@ -179,13 +179,75 @@ var __publicField = (obj, key, value) => {
179
179
  activePanel: this.group.model.activePanel,
180
180
  isGroupActive: this.group.api.isActive,
181
181
  group: this.group,
182
- headerPosition: this.group.model.headerPosition
182
+ headerPosition: this.group.model.headerPosition,
183
+ location: this.group.api.location
183
184
  };
184
185
  }
185
186
  updateProps() {
186
187
  var _a;
187
188
  (_a = this._renderDisposable) == null ? void 0 : _a.update({ params: this.buildEnrichedProps() });
188
189
  }
190
+ updateLocation(location) {
191
+ var _a;
192
+ (_a = this._renderDisposable) == null ? void 0 : _a.update({ params: { location } });
193
+ }
194
+ }
195
+ class VueContextMenuItemRenderer extends AbstractVueRenderer {
196
+ constructor() {
197
+ super(...arguments);
198
+ __publicField(this, "_renderDisposable");
199
+ }
200
+ init(props) {
201
+ var _a;
202
+ (_a = this._renderDisposable) == null ? void 0 : _a.dispose();
203
+ this._renderDisposable = mountVueComponent(
204
+ this.component,
205
+ this.parent,
206
+ { params: props },
207
+ this.element
208
+ );
209
+ }
210
+ dispose() {
211
+ var _a;
212
+ (_a = this._renderDisposable) == null ? void 0 : _a.dispose();
213
+ }
214
+ }
215
+ class VueTabGroupChipRenderer extends AbstractVueRenderer {
216
+ constructor(component, parent) {
217
+ super(component, parent);
218
+ __publicField(this, "_renderDisposable");
219
+ this.element.style.height = "";
220
+ this.element.style.width = "";
221
+ this.element.style.display = "inline-flex";
222
+ }
223
+ get element() {
224
+ return this._element;
225
+ }
226
+ init(params) {
227
+ var _a;
228
+ (_a = this._renderDisposable) == null ? void 0 : _a.dispose();
229
+ this._renderDisposable = mountVueComponent(
230
+ this.component,
231
+ this.parent,
232
+ {
233
+ params: {
234
+ tabGroup: params.tabGroup,
235
+ api: params.api
236
+ }
237
+ },
238
+ this.element
239
+ );
240
+ }
241
+ update(params) {
242
+ var _a;
243
+ (_a = this._renderDisposable) == null ? void 0 : _a.update({
244
+ params: { tabGroup: params.tabGroup }
245
+ });
246
+ }
247
+ dispose() {
248
+ var _a;
249
+ (_a = this._renderDisposable) == null ? void 0 : _a.dispose();
250
+ }
189
251
  }
190
252
  class VuePart {
191
253
  constructor(element, vueComponent, parent, props) {
@@ -236,12 +298,17 @@ var __publicField = (obj, key, value) => {
236
298
  theme: {},
237
299
  disableTabsOverflowList: { type: Boolean },
238
300
  scrollbars: {},
239
- tabAnimation: {},
301
+ getTabContextMenuItems: { type: Function },
302
+ getTabGroupChipContextMenuItems: { type: Function },
303
+ createTabGroupChipComponent: { type: Function },
304
+ tabGroupColors: {},
305
+ tabGroupAccent: {},
240
306
  watermarkComponent: {},
241
307
  defaultTabComponent: {},
242
308
  rightHeaderActionsComponent: {},
243
309
  leftHeaderActionsComponent: {},
244
- prefixHeaderActionsComponent: {}
310
+ prefixHeaderActionsComponent: {},
311
+ tabGroupChipComponent: {}
245
312
  },
246
313
  emits: ["ready"],
247
314
  setup(__props, { emit: __emit }) {
@@ -266,11 +333,108 @@ var __publicField = (obj, key, value) => {
266
333
  }
267
334
  );
268
335
  });
336
+ const inst = vue.getCurrentInstance();
337
+ vue.watch(
338
+ () => props.tabGroupChipComponent,
339
+ (newValue) => {
340
+ if (instance.value) {
341
+ instance.value.updateOptions({
342
+ createTabGroupChipComponent: newValue ? () => {
343
+ const component = findComponent(inst, newValue);
344
+ return new VueTabGroupChipRenderer(component, inst);
345
+ } : void 0
346
+ });
347
+ }
348
+ }
349
+ );
350
+ vue.watch(
351
+ () => props.defaultTabComponent,
352
+ (newValue) => {
353
+ if (instance.value) {
354
+ instance.value.updateOptions({
355
+ defaultTabComponent: newValue,
356
+ createTabComponent(options) {
357
+ let component = findComponent(inst, options.name);
358
+ if (!component && newValue) {
359
+ component = findComponent(inst, newValue);
360
+ }
361
+ if (component) {
362
+ return new VueRenderer(component, inst);
363
+ }
364
+ return void 0;
365
+ }
366
+ });
367
+ }
368
+ }
369
+ );
370
+ vue.watch(
371
+ () => props.watermarkComponent,
372
+ (newValue) => {
373
+ if (instance.value) {
374
+ instance.value.updateOptions({
375
+ createWatermarkComponent: newValue ? () => {
376
+ const component = findComponent(inst, newValue);
377
+ return new VueWatermarkRenderer(component, inst);
378
+ } : void 0
379
+ });
380
+ }
381
+ }
382
+ );
383
+ vue.watch(
384
+ () => props.rightHeaderActionsComponent,
385
+ (newValue) => {
386
+ if (instance.value) {
387
+ instance.value.updateOptions({
388
+ createRightHeaderActionComponent: newValue ? (group) => {
389
+ const component = findComponent(inst, newValue);
390
+ return new VueHeaderActionsRenderer(
391
+ component,
392
+ inst,
393
+ group
394
+ );
395
+ } : void 0
396
+ });
397
+ }
398
+ }
399
+ );
400
+ vue.watch(
401
+ () => props.leftHeaderActionsComponent,
402
+ (newValue) => {
403
+ if (instance.value) {
404
+ instance.value.updateOptions({
405
+ createLeftHeaderActionComponent: newValue ? (group) => {
406
+ const component = findComponent(inst, newValue);
407
+ return new VueHeaderActionsRenderer(
408
+ component,
409
+ inst,
410
+ group
411
+ );
412
+ } : void 0
413
+ });
414
+ }
415
+ }
416
+ );
417
+ vue.watch(
418
+ () => props.prefixHeaderActionsComponent,
419
+ (newValue) => {
420
+ if (instance.value) {
421
+ instance.value.updateOptions({
422
+ createPrefixHeaderActionComponent: newValue ? (group) => {
423
+ const component = findComponent(inst, newValue);
424
+ return new VueHeaderActionsRenderer(
425
+ component,
426
+ inst,
427
+ group
428
+ );
429
+ } : void 0
430
+ });
431
+ }
432
+ }
433
+ );
269
434
  vue.onMounted(() => {
270
435
  if (!el.value) {
271
436
  throw new Error("dockview-vue: element is not mounted");
272
437
  }
273
- const inst = vue.getCurrentInstance();
274
438
  if (!inst) {
275
439
  throw new Error("dockview-vue: getCurrentInstance() returned null");
276
440
  }
@@ -316,10 +480,28 @@ var __publicField = (obj, key, value) => {
316
480
  props.rightHeaderActionsComponent
317
481
  );
318
482
  return new VueHeaderActionsRenderer(component, inst, group);
319
- } : void 0
483
+ } : void 0,
484
+ createContextMenuItemComponent: (options) => {
485
+ if (!options.component) {
486
+ return void 0;
487
+ }
488
+ const component = findComponent(inst, options.component);
489
+ return new VueContextMenuItemRenderer(component, inst);
490
+ }
320
491
  };
492
+ const coreOptions = extractCoreOptions(props);
493
+ if (props.defaultTabComponent) {
494
+ frameworkOptions.defaultTabComponent = props.defaultTabComponent;
495
+ }
496
+ if (props.tabGroupChipComponent) {
497
+ const chipComponentName = props.tabGroupChipComponent;
498
+ coreOptions.createTabGroupChipComponent = () => {
499
+ const component = findComponent(inst, chipComponentName);
500
+ return new VueTabGroupChipRenderer(component, inst);
501
+ };
502
+ }
321
503
  const api = dockviewCore.createDockview(el.value, {
322
- ...extractCoreOptions(props),
504
+ ...coreOptions,
323
505
  ...frameworkOptions
324
506
  });
325
507
  const { clientWidth, clientHeight } = el.value;
@@ -617,18 +799,19 @@ var __publicField = (obj, key, value) => {
617
799
  exports2.GridviewVue = _sfc_main$1;
618
800
  exports2.PaneviewVue = _sfc_main;
619
801
  exports2.SplitviewVue = _sfc_main$2;
802
+ exports2.VueContextMenuItemRenderer = VueContextMenuItemRenderer;
620
803
  exports2.VueHeaderActionsRenderer = VueHeaderActionsRenderer;
621
804
  exports2.VuePart = VuePart;
622
805
  exports2.VueRenderer = VueRenderer;
806
+ exports2.VueTabGroupChipRenderer = VueTabGroupChipRenderer;
623
807
  exports2.VueWatermarkRenderer = VueWatermarkRenderer;
624
808
  exports2.findComponent = findComponent;
625
809
  exports2.mountVueComponent = mountVueComponent;
626
810
  Object.keys(dockviewCore).forEach((k) => {
627
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k))
628
- Object.defineProperty(exports2, k, {
629
- enumerable: true,
630
- get: () => dockviewCore[k]
631
- });
811
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, {
812
+ enumerable: true,
813
+ get: () => dockviewCore[k]
814
+ });
632
815
  });
633
816
  Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
634
817
  });