dockview-core 1.9.0 → 1.9.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.
Files changed (58) hide show
  1. package/dist/cjs/dnd/droptarget.d.ts +11 -12
  2. package/dist/cjs/dnd/droptarget.d.ts.map +1 -1
  3. package/dist/cjs/dnd/droptarget.js +37 -47
  4. package/dist/cjs/dnd/droptarget.js.map +1 -1
  5. package/dist/cjs/dockview/dockviewComponent.d.ts +2 -1
  6. package/dist/cjs/dockview/dockviewComponent.d.ts.map +1 -1
  7. package/dist/cjs/dockview/dockviewComponent.js +18 -12
  8. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  9. package/dist/cjs/dockview/options.d.ts +2 -1
  10. package/dist/cjs/dockview/options.d.ts.map +1 -1
  11. package/dist/cjs/dockview/options.js.map +1 -1
  12. package/dist/cjs/index.d.ts +1 -1
  13. package/dist/cjs/index.d.ts.map +1 -1
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/resizable.d.ts.map +1 -1
  16. package/dist/cjs/resizable.js +15 -0
  17. package/dist/cjs/resizable.js.map +1 -1
  18. package/dist/dockview-core.amd.js +72 -61
  19. package/dist/dockview-core.amd.js.map +1 -1
  20. package/dist/dockview-core.amd.min.js +2 -2
  21. package/dist/dockview-core.amd.min.js.map +1 -1
  22. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  23. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  24. package/dist/dockview-core.amd.noStyle.js +71 -60
  25. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  26. package/dist/dockview-core.cjs.js +72 -61
  27. package/dist/dockview-core.cjs.js.map +1 -1
  28. package/dist/dockview-core.esm.js +72 -61
  29. package/dist/dockview-core.esm.js.map +1 -1
  30. package/dist/dockview-core.esm.min.js +2 -2
  31. package/dist/dockview-core.esm.min.js.map +1 -1
  32. package/dist/dockview-core.js +72 -61
  33. package/dist/dockview-core.js.map +1 -1
  34. package/dist/dockview-core.min.js +2 -2
  35. package/dist/dockview-core.min.js.map +1 -1
  36. package/dist/dockview-core.min.noStyle.js +2 -2
  37. package/dist/dockview-core.min.noStyle.js.map +1 -1
  38. package/dist/dockview-core.noStyle.js +71 -60
  39. package/dist/dockview-core.noStyle.js.map +1 -1
  40. package/dist/esm/dnd/droptarget.d.ts +11 -12
  41. package/dist/esm/dnd/droptarget.d.ts.map +1 -1
  42. package/dist/esm/dnd/droptarget.js +37 -47
  43. package/dist/esm/dnd/droptarget.js.map +1 -1
  44. package/dist/esm/dockview/dockviewComponent.d.ts +2 -1
  45. package/dist/esm/dockview/dockviewComponent.d.ts.map +1 -1
  46. package/dist/esm/dockview/dockviewComponent.js +19 -13
  47. package/dist/esm/dockview/dockviewComponent.js.map +1 -1
  48. package/dist/esm/dockview/options.d.ts +2 -1
  49. package/dist/esm/dockview/options.d.ts.map +1 -1
  50. package/dist/esm/dockview/options.js.map +1 -1
  51. package/dist/esm/index.d.ts +1 -1
  52. package/dist/esm/index.d.ts.map +1 -1
  53. package/dist/esm/index.js.map +1 -1
  54. package/dist/esm/resizable.d.ts.map +1 -1
  55. package/dist/esm/resizable.js +15 -0
  56. package/dist/esm/resizable.js.map +1 -1
  57. package/dist/styles/dockview.css +5 -5
  58. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-core
3
- * @version 1.9.0
3
+ * @version 1.9.1
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -3078,9 +3078,6 @@ define(['exports'], (function (exports) { 'use strict';
3078
3078
  }
3079
3079
  }
3080
3080
 
3081
- function numberOrFallback(maybeNumber, fallback) {
3082
- return typeof maybeNumber === 'number' ? maybeNumber : fallback;
3083
- }
3084
3081
  function directionToPosition(direction) {
3085
3082
  switch (direction) {
3086
3083
  case 'above':
@@ -3113,6 +3110,16 @@ define(['exports'], (function (exports) { 'use strict';
3113
3110
  throw new Error(`invalid position '${position}'`);
3114
3111
  }
3115
3112
  }
3113
+ const DEFAULT_ACTIVATION_SIZE = {
3114
+ value: 20,
3115
+ type: 'percentage',
3116
+ };
3117
+ const DEFAULT_SIZE = {
3118
+ value: 50,
3119
+ type: 'percentage',
3120
+ };
3121
+ const SMALL_WIDTH_BOUNDARY = 100;
3122
+ const SMALL_HEIGHT_BOUNDARY = 100;
3116
3123
  class Droptarget extends CompositeDisposable {
3117
3124
  get state() {
3118
3125
  return this._state;
@@ -3173,7 +3180,7 @@ define(['exports'], (function (exports) { 'use strict';
3173
3180
  this.element.append(this.targetElement);
3174
3181
  }
3175
3182
  this.toggleClasses(quadrant, width, height);
3176
- this.setState(quadrant);
3183
+ this._state = quadrant;
3177
3184
  },
3178
3185
  onDragLeave: () => {
3179
3186
  this.removeDropTarget();
@@ -3198,6 +3205,9 @@ define(['exports'], (function (exports) { 'use strict';
3198
3205
  setTargetZones(acceptedTargetZones) {
3199
3206
  this._acceptedTargetZonesSet = new Set(acceptedTargetZones);
3200
3207
  }
3208
+ setOverlayModel(model) {
3209
+ this.options.overlayModel = model;
3210
+ }
3201
3211
  dispose() {
3202
3212
  this.removeDropTarget();
3203
3213
  super.dispose();
@@ -3209,19 +3219,19 @@ define(['exports'], (function (exports) { 'use strict';
3209
3219
  event[Droptarget.USED_EVENT_ID] = true;
3210
3220
  }
3211
3221
  /**
3212
- * Check is the event has already been used by another instance od DropTarget
3222
+ * Check is the event has already been used by another instance of DropTarget
3213
3223
  */
3214
3224
  isAlreadyUsed(event) {
3215
3225
  const value = event[Droptarget.USED_EVENT_ID];
3216
3226
  return typeof value === 'boolean' && value;
3217
3227
  }
3218
3228
  toggleClasses(quadrant, width, height) {
3219
- var _a, _b, _c, _d;
3229
+ var _a, _b;
3220
3230
  if (!this.overlayElement) {
3221
3231
  return;
3222
3232
  }
3223
- const isSmallX = width < 100;
3224
- const isSmallY = height < 100;
3233
+ const isSmallX = width < SMALL_WIDTH_BOUNDARY;
3234
+ const isSmallY = height < SMALL_HEIGHT_BOUNDARY;
3225
3235
  const isLeft = quadrant === 'left';
3226
3236
  const isRight = quadrant === 'right';
3227
3237
  const isTop = quadrant === 'top';
@@ -3230,20 +3240,17 @@ define(['exports'], (function (exports) { 'use strict';
3230
3240
  const leftClass = !isSmallX && isLeft;
3231
3241
  const topClass = !isSmallY && isTop;
3232
3242
  const bottomClass = !isSmallY && isBottom;
3233
- let size = 0.5;
3234
- if (((_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) === null || _b === void 0 ? void 0 : _b.type) === 'percentage') {
3235
- size = clamp(this.options.overlayModel.size.value, 0, 100) / 100;
3243
+ let size = 1;
3244
+ const sizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : DEFAULT_SIZE;
3245
+ if (sizeOptions.type === 'percentage') {
3246
+ size = clamp(sizeOptions.value, 0, 100) / 100;
3236
3247
  }
3237
- if (((_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) === null || _d === void 0 ? void 0 : _d.type) === 'pixels') {
3248
+ else {
3238
3249
  if (rightClass || leftClass) {
3239
- size =
3240
- clamp(0, this.options.overlayModel.size.value, width) /
3241
- width;
3250
+ size = clamp(0, sizeOptions.value, width) / width;
3242
3251
  }
3243
3252
  if (topClass || bottomClass) {
3244
- size =
3245
- clamp(0, this.options.overlayModel.size.value, height) /
3246
- height;
3253
+ size = clamp(0, sizeOptions.value, height) / height;
3247
3254
  }
3248
3255
  }
3249
3256
  const translate = (1 - size) / 2;
@@ -3265,39 +3272,22 @@ define(['exports'], (function (exports) { 'use strict';
3265
3272
  transform = '';
3266
3273
  }
3267
3274
  this.overlayElement.style.transform = transform;
3268
- toggleClass(this.overlayElement, 'small-right', isSmallX && isRight);
3269
- toggleClass(this.overlayElement, 'small-left', isSmallX && isLeft);
3270
- toggleClass(this.overlayElement, 'small-top', isSmallY && isTop);
3271
- toggleClass(this.overlayElement, 'small-bottom', isSmallY && isBottom);
3272
- }
3273
- setState(quadrant) {
3274
- switch (quadrant) {
3275
- case 'top':
3276
- this._state = 'top';
3277
- break;
3278
- case 'left':
3279
- this._state = 'left';
3280
- break;
3281
- case 'bottom':
3282
- this._state = 'bottom';
3283
- break;
3284
- case 'right':
3285
- this._state = 'right';
3286
- break;
3287
- case 'center':
3288
- this._state = 'center';
3289
- break;
3290
- }
3275
+ toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);
3276
+ toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);
3277
+ toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);
3278
+ toggleClass(this.overlayElement, 'dv-drop-target-right', isRight);
3279
+ toggleClass(this.overlayElement, 'dv-drop-target-top', isTop);
3280
+ toggleClass(this.overlayElement, 'dv-drop-target-bottom', isBottom);
3281
+ toggleClass(this.overlayElement, 'dv-drop-target-center', quadrant === 'center');
3291
3282
  }
3292
3283
  calculateQuadrant(overlayType, x, y, width, height) {
3293
- var _a, _b, _c, _d, _e, _f;
3294
- const isPercentage = ((_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) === undefined ||
3295
- ((_c = (_b = this.options.overlayModel) === null || _b === void 0 ? void 0 : _b.activationSize) === null || _c === void 0 ? void 0 : _c.type) === 'percentage';
3296
- const value = numberOrFallback((_f = (_e = (_d = this.options) === null || _d === void 0 ? void 0 : _d.overlayModel) === null || _e === void 0 ? void 0 : _e.activationSize) === null || _f === void 0 ? void 0 : _f.value, 20);
3284
+ var _a, _b;
3285
+ const activationSizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) !== null && _b !== void 0 ? _b : DEFAULT_ACTIVATION_SIZE;
3286
+ const isPercentage = activationSizeOptions.type === 'percentage';
3297
3287
  if (isPercentage) {
3298
- return calculateQuadrantAsPercentage(overlayType, x, y, width, height, value);
3288
+ return calculateQuadrantAsPercentage(overlayType, x, y, width, height, activationSizeOptions.value);
3299
3289
  }
3300
- return calculateQuadrantAsPixels(overlayType, x, y, width, height, value);
3290
+ return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);
3301
3291
  }
3302
3292
  removeDropTarget() {
3303
3293
  if (this.targetElement) {
@@ -4489,6 +4479,21 @@ define(['exports'], (function (exports) { 'use strict';
4489
4479
  if (this.disableResizing) {
4490
4480
  return;
4491
4481
  }
4482
+ if (!this._element.offsetParent) {
4483
+ /**
4484
+ * offsetParent === null is equivalent to display: none being set on the element or one
4485
+ * of it's parents. In the display: none case the size will become (0, 0) which we do
4486
+ * not want to propagate.
4487
+ *
4488
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent
4489
+ *
4490
+ * You could use checkVisibility() but at the time of writing it's not supported across
4491
+ * all Browsers
4492
+ *
4493
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility
4494
+ */
4495
+ return;
4496
+ }
4492
4497
  if (!isInDocument(this._element)) {
4493
4498
  /**
4494
4499
  * since the event is dispatched through requestAnimationFrame there is a small chance
@@ -6497,6 +6502,10 @@ define(['exports'], (function (exports) { 'use strict';
6497
6502
  }
6498
6503
  }
6499
6504
 
6505
+ const DEFAULT_ROOT_OVERLAY_MODEL = {
6506
+ activationSize: { type: 'pixels', value: 10 },
6507
+ size: { type: 'pixels', value: 20 },
6508
+ };
6500
6509
  function getTheme(element) {
6501
6510
  function toClassList(element) {
6502
6511
  const list = [];
@@ -6541,7 +6550,7 @@ define(['exports'], (function (exports) { 'use strict';
6541
6550
  return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisibile';
6542
6551
  }
6543
6552
  constructor(options) {
6544
- var _a;
6553
+ var _a, _b;
6545
6554
  super({
6546
6555
  proportionalLayout: true,
6547
6556
  orientation: (_a = options.orientation) !== null && _a !== void 0 ? _a : exports.Orientation.HORIZONTAL,
@@ -6605,7 +6614,7 @@ define(['exports'], (function (exports) { 'use strict';
6605
6614
  !this.options.watermarkFrameworkComponent) {
6606
6615
  this.options.watermarkComponent = Watermark;
6607
6616
  }
6608
- const dropTarget = new Droptarget(this.element, {
6617
+ this._rootDropTarget = new Droptarget(this.element, {
6609
6618
  canDisplayOverlay: (event, position) => {
6610
6619
  const data = getPanelData();
6611
6620
  if (data) {
@@ -6638,12 +6647,9 @@ define(['exports'], (function (exports) { 'use strict';
6638
6647
  return false;
6639
6648
  },
6640
6649
  acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
6641
- overlayModel: {
6642
- activationSize: { type: 'pixels', value: 10 },
6643
- size: { type: 'pixels', value: 20 },
6644
- },
6650
+ overlayModel: (_b = this.options.rootOverlayModel) !== null && _b !== void 0 ? _b : DEFAULT_ROOT_OVERLAY_MODEL,
6645
6651
  });
6646
- this.addDisposables(dropTarget.onDrop((event) => {
6652
+ this.addDisposables(this._rootDropTarget.onDrop((event) => {
6647
6653
  var _a;
6648
6654
  const data = getPanelData();
6649
6655
  if (data) {
@@ -6652,7 +6658,7 @@ define(['exports'], (function (exports) { 'use strict';
6652
6658
  else {
6653
6659
  this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));
6654
6660
  }
6655
- }), dropTarget);
6661
+ }), this._rootDropTarget);
6656
6662
  this._api = new DockviewApi(this);
6657
6663
  this.updateWatermark();
6658
6664
  }
@@ -6815,15 +6821,17 @@ define(['exports'], (function (exports) { 'use strict';
6815
6821
  }
6816
6822
  updateOptions(options) {
6817
6823
  var _a, _b;
6818
- const hasOrientationChanged = typeof options.orientation === 'string' &&
6824
+ const changed_orientation = typeof options.orientation === 'string' &&
6819
6825
  this.gridview.orientation !== options.orientation;
6820
- const hasFloatingGroupOptionsChanged = options.floatingGroupBounds !== undefined &&
6826
+ const changed_floatingGroupBounds = options.floatingGroupBounds !== undefined &&
6821
6827
  options.floatingGroupBounds !== this.options.floatingGroupBounds;
6828
+ const changed_rootOverlayOptions = options.rootOverlayModel !== undefined &&
6829
+ options.rootOverlayModel !== this.options.rootOverlayModel;
6822
6830
  this._options = Object.assign(Object.assign({}, this.options), options);
6823
- if (hasOrientationChanged) {
6831
+ if (changed_orientation) {
6824
6832
  this.gridview.orientation = options.orientation;
6825
6833
  }
6826
- if (hasFloatingGroupOptionsChanged) {
6834
+ if (changed_floatingGroupBounds) {
6827
6835
  for (const group of this._floatingGroups) {
6828
6836
  switch (this.options.floatingGroupBounds) {
6829
6837
  case 'boundedWithinViewport':
@@ -6845,6 +6853,9 @@ define(['exports'], (function (exports) { 'use strict';
6845
6853
  group.overlay.setBounds({});
6846
6854
  }
6847
6855
  }
6856
+ if (changed_rootOverlayOptions) {
6857
+ this._rootDropTarget.setOverlayModel(options.rootOverlayModel);
6858
+ }
6848
6859
  this.layout(this.gridview.width, this.gridview.height, true);
6849
6860
  }
6850
6861
  layout(width, height, forceResize) {