gridstack 11.5.1 → 12.1.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.
Files changed (113) hide show
  1. package/README.md +16 -3
  2. package/dist/angular/README.md +0 -1
  3. package/dist/angular/esm2020/lib/base-widget.mjs +2 -2
  4. package/dist/angular/esm2020/lib/gridstack-item.component.mjs +2 -2
  5. package/dist/angular/esm2020/lib/gridstack.component.mjs +2 -2
  6. package/dist/angular/esm2020/lib/gridstack.module.mjs +2 -2
  7. package/dist/angular/esm2020/lib/types.mjs +2 -2
  8. package/dist/angular/fesm2015/gridstack-angular.mjs +4 -4
  9. package/dist/angular/fesm2015/gridstack-angular.mjs.map +1 -1
  10. package/dist/angular/fesm2020/gridstack-angular.mjs +5 -5
  11. package/dist/angular/fesm2020/gridstack-angular.mjs.map +1 -1
  12. package/dist/angular/lib/gridstack-item.component.d.ts +1 -1
  13. package/dist/angular/lib/gridstack.component.d.ts +1 -1
  14. package/dist/angular/lib/types.d.ts +1 -1
  15. package/dist/angular/src/base-widget.ts +1 -1
  16. package/dist/angular/src/gridstack-item.component.ts +1 -1
  17. package/dist/angular/src/gridstack.component.ts +1 -1
  18. package/dist/angular/src/gridstack.module.ts +1 -1
  19. package/dist/dd-base-impl.d.ts +1 -1
  20. package/dist/dd-base-impl.js +1 -1
  21. package/dist/dd-base-impl.js.map +1 -1
  22. package/dist/dd-draggable.d.ts +1 -1
  23. package/dist/dd-draggable.js +1 -1
  24. package/dist/dd-draggable.js.map +1 -1
  25. package/dist/dd-droppable.d.ts +1 -1
  26. package/dist/dd-droppable.js +1 -1
  27. package/dist/dd-droppable.js.map +1 -1
  28. package/dist/dd-element.d.ts +1 -1
  29. package/dist/dd-element.js +1 -1
  30. package/dist/dd-element.js.map +1 -1
  31. package/dist/dd-gridstack.d.ts +1 -1
  32. package/dist/dd-gridstack.js +1 -1
  33. package/dist/dd-gridstack.js.map +1 -1
  34. package/dist/dd-manager.d.ts +1 -1
  35. package/dist/dd-manager.js +1 -1
  36. package/dist/dd-manager.js.map +1 -1
  37. package/dist/dd-resizable-handle.d.ts +1 -1
  38. package/dist/dd-resizable-handle.js +1 -1
  39. package/dist/dd-resizable-handle.js.map +1 -1
  40. package/dist/dd-resizable.d.ts +1 -1
  41. package/dist/dd-resizable.js +3 -2
  42. package/dist/dd-resizable.js.map +1 -1
  43. package/dist/dd-touch.d.ts +1 -1
  44. package/dist/dd-touch.js +1 -1
  45. package/dist/dd-touch.js.map +1 -1
  46. package/dist/gridstack-all.js +1 -1
  47. package/dist/gridstack-all.js.LICENSE.txt +1 -1
  48. package/dist/gridstack-all.js.map +1 -1
  49. package/dist/gridstack-engine.d.ts +1 -1
  50. package/dist/gridstack-engine.js +1 -1
  51. package/dist/gridstack-engine.js.map +1 -1
  52. package/dist/gridstack.css +25 -79
  53. package/dist/gridstack.d.ts +6 -5
  54. package/dist/gridstack.js +132 -203
  55. package/dist/gridstack.js.map +1 -1
  56. package/dist/gridstack.min.css +1 -1
  57. package/dist/src/gridstack.scss +22 -21
  58. package/dist/types.d.ts +4 -2
  59. package/dist/types.js +1 -2
  60. package/dist/types.js.map +1 -1
  61. package/dist/utils.d.ts +1 -14
  62. package/dist/utils.js +1 -45
  63. package/dist/utils.js.map +1 -1
  64. package/doc/CHANGES.md +17 -0
  65. package/doc/README.md +0 -3
  66. package/package.json +2 -4
  67. package/dist/angular/node_modules/tslib/README.md +0 -164
  68. package/dist/es5/dd-base-impl.d.ts +0 -20
  69. package/dist/es5/dd-base-impl.js +0 -41
  70. package/dist/es5/dd-base-impl.js.map +0 -1
  71. package/dist/es5/dd-draggable.d.ts +0 -20
  72. package/dist/es5/dd-draggable.js +0 -408
  73. package/dist/es5/dd-draggable.js.map +0 -1
  74. package/dist/es5/dd-droppable.d.ts +0 -26
  75. package/dist/es5/dd-droppable.js +0 -185
  76. package/dist/es5/dd-droppable.js.map +0 -1
  77. package/dist/es5/dd-element.d.ts +0 -27
  78. package/dist/es5/dd-element.js +0 -96
  79. package/dist/es5/dd-element.js.map +0 -1
  80. package/dist/es5/dd-gridstack.d.ts +0 -34
  81. package/dist/es5/dd-gridstack.js +0 -154
  82. package/dist/es5/dd-gridstack.js.map +0 -1
  83. package/dist/es5/dd-manager.d.ts +0 -22
  84. package/dist/es5/dd-manager.js +0 -17
  85. package/dist/es5/dd-manager.js.map +0 -1
  86. package/dist/es5/dd-resizable-handle.d.ts +0 -18
  87. package/dist/es5/dd-resizable-handle.js +0 -117
  88. package/dist/es5/dd-resizable-handle.js.map +0 -1
  89. package/dist/es5/dd-resizable.d.ts +0 -30
  90. package/dist/es5/dd-resizable.js +0 -330
  91. package/dist/es5/dd-resizable.js.map +0 -1
  92. package/dist/es5/dd-touch.d.ts +0 -33
  93. package/dist/es5/dd-touch.js +0 -157
  94. package/dist/es5/dd-touch.js.map +0 -1
  95. package/dist/es5/gridstack-all.js +0 -3
  96. package/dist/es5/gridstack-all.js.LICENSE.txt +0 -7
  97. package/dist/es5/gridstack-all.js.map +0 -1
  98. package/dist/es5/gridstack-engine.d.ts +0 -107
  99. package/dist/es5/gridstack-engine.js +0 -1070
  100. package/dist/es5/gridstack-engine.js.map +0 -1
  101. package/dist/es5/gridstack-poly.js +0 -356
  102. package/dist/es5/gridstack.d.ts +0 -453
  103. package/dist/es5/gridstack.js +0 -2717
  104. package/dist/es5/gridstack.js.map +0 -1
  105. package/dist/es5/types.d.ts +0 -324
  106. package/dist/es5/types.js +0 -39
  107. package/dist/es5/types.js.map +0 -1
  108. package/dist/es5/utils.d.ts +0 -117
  109. package/dist/es5/utils.js +0 -677
  110. package/dist/es5/utils.js.map +0 -1
  111. package/dist/gridstack-extra.css +0 -373
  112. package/dist/gridstack-extra.min.css +0 -1
  113. package/dist/src/gridstack-extra.scss +0 -25
@@ -1 +0,0 @@
1
- {"version":3,"file":"dd-gridstack.js","sourceRoot":"","sources":["../../src/dd-gridstack.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * dd-gridstack.ts 11.5.1\r\n * Copyright (c) 2021-2024 Alain Dumesny - see GridStack root license\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport { GridItemHTMLElement, GridStackElement, DDDragOpt } from './types';\r\nimport { Utils } from './utils';\r\nimport { DDManager } from './dd-manager';\r\nimport { DDElement, DDElementHost } from './dd-element';\r\nimport { GridHTMLElement } from './gridstack';\r\n\r\n/** Drag&Drop drop options */\r\nexport type DDDropOpt = {\r\n /** function or class type that this grid will accept as dropped items (see GridStackOptions.acceptWidgets) */\r\n accept?: (el: GridItemHTMLElement) => boolean;\r\n}\r\n\r\n/** drag&drop options currently called from the main code, but others can be passed in grid options */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport type DDOpts = 'enable' | 'disable' | 'destroy' | 'option' | string | any;\r\nexport type DDKey = 'minWidth' | 'minHeight' | 'maxWidth' | 'maxHeight' | 'maxHeightMoveUp' | 'maxWidthMoveLeft';\r\nexport type DDValue = number | string;\r\n\r\n/** drag&drop events callbacks */\r\nexport type DDCallback = (event: Event, arg2: GridItemHTMLElement, helper?: GridItemHTMLElement) => void;\r\n\r\n// let count = 0; // TEST\r\n\r\n/**\r\n * HTML Native Mouse and Touch Events Drag and Drop functionality.\r\n */\r\nexport class DDGridStack {\r\n\r\n public resizable(el: GridItemHTMLElement, opts: DDOpts, key?: DDKey, value?: DDValue): DDGridStack {\r\n this._getDDElements(el, opts).forEach(dEl => {\r\n if (opts === 'disable' || opts === 'enable') {\r\n dEl.ddResizable && dEl.ddResizable[opts](); // can't create DD as it requires options for setupResizable()\r\n } else if (opts === 'destroy') {\r\n dEl.ddResizable && dEl.cleanResizable();\r\n } else if (opts === 'option') {\r\n dEl.setupResizable({ [key]: value });\r\n } else {\r\n const n = dEl.el.gridstackNode;\r\n const grid = n.grid;\r\n let handles = dEl.el.getAttribute('gs-resize-handles') || grid.opts.resizable.handles || 'e,s,se';\r\n if (handles === 'all') handles = 'n,e,s,w,se,sw,ne,nw';\r\n // NOTE: keep the resize handles as e,w don't have enough space (10px) to show resize corners anyway. limit during drag instead\r\n // restrict vertical resize if height is done to match content anyway... odd to have it spring back\r\n // if (Utils.shouldSizeToContent(n, true)) {\r\n // const doE = handles.indexOf('e') !== -1;\r\n // const doW = handles.indexOf('w') !== -1;\r\n // handles = doE ? (doW ? 'e,w' : 'e') : (doW ? 'w' : '');\r\n // }\r\n const autoHide = !grid.opts.alwaysShowResizeHandle;\r\n dEl.setupResizable({\r\n ...grid.opts.resizable,\r\n ...{ handles, autoHide },\r\n ...{\r\n start: opts.start,\r\n stop: opts.stop,\r\n resize: opts.resize\r\n }\r\n });\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n public draggable(el: GridItemHTMLElement, opts: DDOpts, key?: DDKey, value?: DDValue): DDGridStack {\r\n this._getDDElements(el, opts).forEach(dEl => {\r\n if (opts === 'disable' || opts === 'enable') {\r\n dEl.ddDraggable && dEl.ddDraggable[opts](); // can't create DD as it requires options for setupDraggable()\r\n } else if (opts === 'destroy') {\r\n dEl.ddDraggable && dEl.cleanDraggable();\r\n } else if (opts === 'option') {\r\n dEl.setupDraggable({ [key]: value });\r\n } else {\r\n const grid = dEl.el.gridstackNode.grid;\r\n dEl.setupDraggable({\r\n ...grid.opts.draggable,\r\n ...{\r\n // containment: (grid.parentGridNode && grid.opts.dragOut === false) ? grid.el.parentElement : (grid.opts.draggable.containment || null),\r\n start: opts.start,\r\n stop: opts.stop,\r\n drag: opts.drag\r\n }\r\n });\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n public dragIn(el: GridStackElement, opts: DDDragOpt): DDGridStack {\r\n this._getDDElements(el).forEach(dEl => dEl.setupDraggable(opts));\r\n return this;\r\n }\r\n\r\n public droppable(el: GridItemHTMLElement, opts: DDOpts | DDDropOpt, key?: DDKey, value?: DDValue): DDGridStack {\r\n if (typeof opts.accept === 'function' && !opts._accept) {\r\n opts._accept = opts.accept;\r\n opts.accept = (el) => opts._accept(el);\r\n }\r\n this._getDDElements(el, opts).forEach(dEl => {\r\n if (opts === 'disable' || opts === 'enable') {\r\n dEl.ddDroppable && dEl.ddDroppable[opts]();\r\n } else if (opts === 'destroy') {\r\n dEl.ddDroppable && dEl.cleanDroppable();\r\n } else if (opts === 'option') {\r\n dEl.setupDroppable({ [key]: value });\r\n } else {\r\n dEl.setupDroppable(opts);\r\n }\r\n });\r\n return this;\r\n }\r\n\r\n /** true if element is droppable */\r\n public isDroppable(el: DDElementHost): boolean {\r\n return !!(el?.ddElement?.ddDroppable && !el.ddElement.ddDroppable.disabled);\r\n }\r\n\r\n /** true if element is draggable */\r\n public isDraggable(el: DDElementHost): boolean {\r\n return !!(el?.ddElement?.ddDraggable && !el.ddElement.ddDraggable.disabled);\r\n }\r\n\r\n /** true if element is draggable */\r\n public isResizable(el: DDElementHost): boolean {\r\n return !!(el?.ddElement?.ddResizable && !el.ddElement.ddResizable.disabled);\r\n }\r\n\r\n public on(el: GridItemHTMLElement, name: string, callback: DDCallback): DDGridStack {\r\n this._getDDElements(el).forEach(dEl =>\r\n dEl.on(name, (event: Event) => {\r\n callback(\r\n event,\r\n DDManager.dragElement ? DDManager.dragElement.el : event.target as GridItemHTMLElement,\r\n DDManager.dragElement ? DDManager.dragElement.helper : null)\r\n })\r\n );\r\n return this;\r\n }\r\n\r\n public off(el: GridItemHTMLElement, name: string): DDGridStack {\r\n this._getDDElements(el).forEach(dEl => dEl.off(name));\r\n return this;\r\n }\r\n\r\n /** @internal returns a list of DD elements, creating them on the fly by default unless option is to destroy or disable */\r\n protected _getDDElements(els: GridStackElement, opts?: DDOpts): DDElement[] {\r\n // don't force create if we're going to destroy it, unless it's a grid which is used as drop target for it's children\r\n const create = (els as GridHTMLElement).gridstack || opts !== 'destroy' && opts !== 'disable';\r\n const hosts = Utils.getElements(els) as DDElementHost[];\r\n if (!hosts.length) return [];\r\n const list = hosts.map(e => e.ddElement || (create ? DDElement.init(e) : null)).filter(d => d); // remove nulls\r\n return list;\r\n }\r\n}\r\n"]}
@@ -1,22 +0,0 @@
1
- /**
2
- * dd-manager.ts 11.5.1
3
- * Copyright (c) 2021-2024 Alain Dumesny - see GridStack root license
4
- */
5
- import { DDDraggable } from './dd-draggable';
6
- import { DDDroppable } from './dd-droppable';
7
- import { DDResizable } from './dd-resizable';
8
- /**
9
- * globals that are shared across Drag & Drop instances
10
- */
11
- export declare class DDManager {
12
- /** if set (true | in msec), dragging placement (collision) will only happen after a pause by the user*/
13
- static pauseDrag: boolean | number;
14
- /** true if a mouse down event was handled */
15
- static mouseHandled: boolean;
16
- /** item being dragged */
17
- static dragElement: DDDraggable;
18
- /** item we are currently over as drop target */
19
- static dropElement: DDDroppable;
20
- /** current item we're over for resizing purpose (ignore nested grid resize handles) */
21
- static overResizeElement: DDResizable;
22
- }
@@ -1,17 +0,0 @@
1
- "use strict";
2
- /**
3
- * dd-manager.ts 11.5.1
4
- * Copyright (c) 2021-2024 Alain Dumesny - see GridStack root license
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.DDManager = void 0;
8
- /**
9
- * globals that are shared across Drag & Drop instances
10
- */
11
- var DDManager = /** @class */ (function () {
12
- function DDManager() {
13
- }
14
- return DDManager;
15
- }());
16
- exports.DDManager = DDManager;
17
- //# sourceMappingURL=dd-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dd-manager.js","sourceRoot":"","sources":["../../src/dd-manager.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAMH;;GAEG;AACH;IAAA;IAgBA,CAAC;IAAD,gBAAC;AAAD,CAAC,AAhBD,IAgBC;AAhBY,8BAAS","sourcesContent":["/**\n * dd-manager.ts 11.5.1\n * Copyright (c) 2021-2024 Alain Dumesny - see GridStack root license\n */\n\nimport { DDDraggable } from './dd-draggable';\nimport { DDDroppable } from './dd-droppable';\nimport { DDResizable } from './dd-resizable';\n\n/**\n * globals that are shared across Drag & Drop instances\n */\nexport class DDManager {\n /** if set (true | in msec), dragging placement (collision) will only happen after a pause by the user*/\n public static pauseDrag: boolean | number;\n\n /** true if a mouse down event was handled */\n public static mouseHandled: boolean;\n\n /** item being dragged */\n public static dragElement: DDDraggable;\n\n /** item we are currently over as drop target */\n public static dropElement: DDDroppable;\n\n /** current item we're over for resizing purpose (ignore nested grid resize handles) */\n public static overResizeElement: DDResizable;\n\n}\n"]}
@@ -1,18 +0,0 @@
1
- /**
2
- * dd-resizable-handle.ts 11.5.1
3
- * Copyright (c) 2021-2024 Alain Dumesny - see GridStack root license
4
- */
5
- import { GridItemHTMLElement } from './gridstack';
6
- export interface DDResizableHandleOpt {
7
- start?: (event: any) => void;
8
- move?: (event: any) => void;
9
- stop?: (event: any) => void;
10
- }
11
- export declare class DDResizableHandle {
12
- protected host: GridItemHTMLElement;
13
- protected dir: string;
14
- protected option: DDResizableHandleOpt;
15
- constructor(host: GridItemHTMLElement, dir: string, option: DDResizableHandleOpt);
16
- /** call this when resize handle needs to be removed and cleaned up */
17
- destroy(): DDResizableHandle;
18
- }
@@ -1,117 +0,0 @@
1
- "use strict";
2
- /**
3
- * dd-resizable-handle.ts 11.5.1
4
- * Copyright (c) 2021-2024 Alain Dumesny - see GridStack root license
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.DDResizableHandle = void 0;
8
- var dd_touch_1 = require("./dd-touch");
9
- var DDResizableHandle = exports.DDResizableHandle = /** @class */ (function () {
10
- function DDResizableHandle(host, dir, option) {
11
- this.host = host;
12
- this.dir = dir;
13
- this.option = option;
14
- /** @internal true after we've moved enough pixels to start a resize */
15
- this.moving = false;
16
- // create var event binding so we can easily remove and still look like TS methods (unlike anonymous functions)
17
- this._mouseDown = this._mouseDown.bind(this);
18
- this._mouseMove = this._mouseMove.bind(this);
19
- this._mouseUp = this._mouseUp.bind(this);
20
- this._keyEvent = this._keyEvent.bind(this);
21
- this._init();
22
- }
23
- /** @internal */
24
- DDResizableHandle.prototype._init = function () {
25
- var el = this.el = document.createElement('div');
26
- el.classList.add('ui-resizable-handle');
27
- el.classList.add("".concat(DDResizableHandle.prefix).concat(this.dir));
28
- el.style.zIndex = '100';
29
- el.style.userSelect = 'none';
30
- this.host.appendChild(this.el);
31
- this.el.addEventListener('mousedown', this._mouseDown);
32
- if (dd_touch_1.isTouch) {
33
- this.el.addEventListener('touchstart', dd_touch_1.touchstart);
34
- this.el.addEventListener('pointerdown', dd_touch_1.pointerdown);
35
- // this.el.style.touchAction = 'none'; // not needed unlike pointerdown doc comment
36
- }
37
- return this;
38
- };
39
- /** call this when resize handle needs to be removed and cleaned up */
40
- DDResizableHandle.prototype.destroy = function () {
41
- if (this.moving)
42
- this._mouseUp(this.mouseDownEvent);
43
- this.el.removeEventListener('mousedown', this._mouseDown);
44
- if (dd_touch_1.isTouch) {
45
- this.el.removeEventListener('touchstart', dd_touch_1.touchstart);
46
- this.el.removeEventListener('pointerdown', dd_touch_1.pointerdown);
47
- }
48
- this.host.removeChild(this.el);
49
- delete this.el;
50
- delete this.host;
51
- return this;
52
- };
53
- /** @internal called on mouse down on us: capture move on the entire document (mouse might not stay on us) until we release the mouse */
54
- DDResizableHandle.prototype._mouseDown = function (e) {
55
- this.mouseDownEvent = e;
56
- document.addEventListener('mousemove', this._mouseMove, { capture: true, passive: true }); // capture, not bubble
57
- document.addEventListener('mouseup', this._mouseUp, true);
58
- if (dd_touch_1.isTouch) {
59
- this.el.addEventListener('touchmove', dd_touch_1.touchmove);
60
- this.el.addEventListener('touchend', dd_touch_1.touchend);
61
- }
62
- e.stopPropagation();
63
- e.preventDefault();
64
- };
65
- /** @internal */
66
- DDResizableHandle.prototype._mouseMove = function (e) {
67
- var s = this.mouseDownEvent;
68
- if (this.moving) {
69
- this._triggerEvent('move', e);
70
- }
71
- else if (Math.abs(e.x - s.x) + Math.abs(e.y - s.y) > 2) {
72
- // don't start unless we've moved at least 3 pixels
73
- this.moving = true;
74
- this._triggerEvent('start', this.mouseDownEvent);
75
- this._triggerEvent('move', e);
76
- // now track keyboard events to cancel
77
- document.addEventListener('keydown', this._keyEvent);
78
- }
79
- e.stopPropagation();
80
- // e.preventDefault(); passive = true
81
- };
82
- /** @internal */
83
- DDResizableHandle.prototype._mouseUp = function (e) {
84
- if (this.moving) {
85
- this._triggerEvent('stop', e);
86
- document.removeEventListener('keydown', this._keyEvent);
87
- }
88
- document.removeEventListener('mousemove', this._mouseMove, true);
89
- document.removeEventListener('mouseup', this._mouseUp, true);
90
- if (dd_touch_1.isTouch) {
91
- this.el.removeEventListener('touchmove', dd_touch_1.touchmove);
92
- this.el.removeEventListener('touchend', dd_touch_1.touchend);
93
- }
94
- delete this.moving;
95
- delete this.mouseDownEvent;
96
- e.stopPropagation();
97
- e.preventDefault();
98
- };
99
- /** @internal call when keys are being pressed - use Esc to cancel */
100
- DDResizableHandle.prototype._keyEvent = function (e) {
101
- var _a, _b;
102
- if (e.key === 'Escape') {
103
- (_b = (_a = this.host.gridstackNode) === null || _a === void 0 ? void 0 : _a.grid) === null || _b === void 0 ? void 0 : _b.engine.restoreInitial();
104
- this._mouseUp(this.mouseDownEvent);
105
- }
106
- };
107
- /** @internal */
108
- DDResizableHandle.prototype._triggerEvent = function (name, event) {
109
- if (this.option[name])
110
- this.option[name](event);
111
- return this;
112
- };
113
- /** @internal */
114
- DDResizableHandle.prefix = 'ui-resizable-';
115
- return DDResizableHandle;
116
- }());
117
- //# sourceMappingURL=dd-resizable-handle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dd-resizable-handle.js","sourceRoot":"","sources":["../../src/dd-resizable-handle.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * dd-resizable-handle.ts 11.5.1\n * Copyright (c) 2021-2024 Alain Dumesny - see GridStack root license\n */\n\nimport { isTouch, pointerdown, touchend, touchmove, touchstart } from './dd-touch';\nimport { GridItemHTMLElement } from './gridstack';\n\nexport interface DDResizableHandleOpt {\n start?: (event) => void;\n move?: (event) => void;\n stop?: (event) => void;\n}\n\nexport class DDResizableHandle {\n /** @internal */\n protected el: HTMLElement;\n /** @internal true after we've moved enough pixels to start a resize */\n protected moving = false;\n /** @internal */\n protected mouseDownEvent: MouseEvent;\n /** @internal */\n protected static prefix = 'ui-resizable-';\n\n constructor(protected host: GridItemHTMLElement, protected dir: string, protected option: DDResizableHandleOpt) {\n // create var event binding so we can easily remove and still look like TS methods (unlike anonymous functions)\n this._mouseDown = this._mouseDown.bind(this);\n this._mouseMove = this._mouseMove.bind(this);\n this._mouseUp = this._mouseUp.bind(this);\n this._keyEvent = this._keyEvent.bind(this);\n\n this._init();\n }\n\n /** @internal */\n protected _init(): DDResizableHandle {\n const el = this.el = document.createElement('div');\n el.classList.add('ui-resizable-handle');\n el.classList.add(`${DDResizableHandle.prefix}${this.dir}`);\n el.style.zIndex = '100';\n el.style.userSelect = 'none';\n this.host.appendChild(this.el);\n this.el.addEventListener('mousedown', this._mouseDown);\n if (isTouch) {\n this.el.addEventListener('touchstart', touchstart);\n this.el.addEventListener('pointerdown', pointerdown);\n // this.el.style.touchAction = 'none'; // not needed unlike pointerdown doc comment\n }\n return this;\n }\n\n /** call this when resize handle needs to be removed and cleaned up */\n public destroy(): DDResizableHandle {\n if (this.moving) this._mouseUp(this.mouseDownEvent);\n this.el.removeEventListener('mousedown', this._mouseDown);\n if (isTouch) {\n this.el.removeEventListener('touchstart', touchstart);\n this.el.removeEventListener('pointerdown', pointerdown);\n }\n this.host.removeChild(this.el);\n delete this.el;\n delete this.host;\n return this;\n }\n\n /** @internal called on mouse down on us: capture move on the entire document (mouse might not stay on us) until we release the mouse */\n protected _mouseDown(e: MouseEvent): void {\n this.mouseDownEvent = e;\n document.addEventListener('mousemove', this._mouseMove, { capture: true, passive: true}); // capture, not bubble\n document.addEventListener('mouseup', this._mouseUp, true);\n if (isTouch) {\n this.el.addEventListener('touchmove', touchmove);\n this.el.addEventListener('touchend', touchend);\n }\n e.stopPropagation();\n e.preventDefault();\n }\n\n /** @internal */\n protected _mouseMove(e: MouseEvent): void {\n const s = this.mouseDownEvent;\n if (this.moving) {\n this._triggerEvent('move', e);\n } else if (Math.abs(e.x - s.x) + Math.abs(e.y - s.y) > 2) {\n // don't start unless we've moved at least 3 pixels\n this.moving = true;\n this._triggerEvent('start', this.mouseDownEvent);\n this._triggerEvent('move', e);\n // now track keyboard events to cancel\n document.addEventListener('keydown', this._keyEvent);\n }\n e.stopPropagation();\n // e.preventDefault(); passive = true\n }\n\n /** @internal */\n protected _mouseUp(e: MouseEvent): void {\n if (this.moving) {\n this._triggerEvent('stop', e);\n document.removeEventListener('keydown', this._keyEvent);\n }\n document.removeEventListener('mousemove', this._mouseMove, true);\n document.removeEventListener('mouseup', this._mouseUp, true);\n if (isTouch) {\n this.el.removeEventListener('touchmove', touchmove);\n this.el.removeEventListener('touchend', touchend);\n }\n delete this.moving;\n delete this.mouseDownEvent;\n e.stopPropagation();\n e.preventDefault();\n }\n\n /** @internal call when keys are being pressed - use Esc to cancel */\n protected _keyEvent(e: KeyboardEvent): void {\n if (e.key === 'Escape') {\n this.host.gridstackNode?.grid?.engine.restoreInitial();\n this._mouseUp(this.mouseDownEvent);\n }\n }\n\n\n\n /** @internal */\n protected _triggerEvent(name: string, event: MouseEvent): DDResizableHandle {\n if (this.option[name]) this.option[name](event);\n return this;\n }\n}\n"]}
@@ -1,30 +0,0 @@
1
- /**
2
- * dd-resizable.ts 11.5.1
3
- * Copyright (c) 2021-2024 Alain Dumesny - see GridStack root license
4
- */
5
- import { DDBaseImplement, HTMLElementExtendOpt } from './dd-base-impl';
6
- import { DDUIData, GridItemHTMLElement } from './types';
7
- export interface DDResizableOpt {
8
- autoHide?: boolean;
9
- handles?: string;
10
- maxHeight?: number;
11
- maxHeightMoveUp?: number;
12
- maxWidth?: number;
13
- maxWidthMoveLeft?: number;
14
- minHeight?: number;
15
- minWidth?: number;
16
- start?: (event: Event, ui: DDUIData) => void;
17
- stop?: (event: Event) => void;
18
- resize?: (event: Event, ui: DDUIData) => void;
19
- }
20
- export declare class DDResizable extends DDBaseImplement implements HTMLElementExtendOpt<DDResizableOpt> {
21
- el: GridItemHTMLElement;
22
- option: DDResizableOpt;
23
- constructor(el: GridItemHTMLElement, option?: DDResizableOpt);
24
- on(event: 'resizestart' | 'resize' | 'resizestop', callback: (event: DragEvent) => void): void;
25
- off(event: 'resizestart' | 'resize' | 'resizestop'): void;
26
- enable(): void;
27
- disable(): void;
28
- destroy(): void;
29
- updateOption(opts: DDResizableOpt): DDResizable;
30
- }
@@ -1,330 +0,0 @@
1
- "use strict";
2
- /**
3
- * dd-resizable.ts 11.5.1
4
- * Copyright (c) 2021-2024 Alain Dumesny - see GridStack root license
5
- */
6
- var __extends = (this && this.__extends) || (function () {
7
- var extendStatics = function (d, b) {
8
- extendStatics = Object.setPrototypeOf ||
9
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
10
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
11
- return extendStatics(d, b);
12
- };
13
- return function (d, b) {
14
- if (typeof b !== "function" && b !== null)
15
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
16
- extendStatics(d, b);
17
- function __() { this.constructor = d; }
18
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
19
- };
20
- })();
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.DDResizable = void 0;
23
- var dd_resizable_handle_1 = require("./dd-resizable-handle");
24
- var dd_base_impl_1 = require("./dd-base-impl");
25
- var utils_1 = require("./utils");
26
- var dd_manager_1 = require("./dd-manager");
27
- var DDResizable = exports.DDResizable = /** @class */ (function (_super) {
28
- __extends(DDResizable, _super);
29
- // have to be public else complains for HTMLElementExtendOpt ?
30
- function DDResizable(el, option) {
31
- if (option === void 0) { option = {}; }
32
- var _this = _super.call(this) || this;
33
- _this.el = el;
34
- _this.option = option;
35
- /** @internal */
36
- _this.rectScale = { x: 1, y: 1 };
37
- /** @internal */
38
- _this._ui = function () {
39
- var containmentEl = _this.el.parentElement;
40
- var containmentRect = containmentEl.getBoundingClientRect();
41
- var newRect = {
42
- width: _this.originalRect.width,
43
- height: _this.originalRect.height + _this.scrolled,
44
- left: _this.originalRect.left,
45
- top: _this.originalRect.top - _this.scrolled
46
- };
47
- var rect = _this.temporalRect || newRect;
48
- return {
49
- position: {
50
- left: (rect.left - containmentRect.left) * _this.rectScale.x,
51
- top: (rect.top - containmentRect.top) * _this.rectScale.y
52
- },
53
- size: {
54
- width: rect.width * _this.rectScale.x,
55
- height: rect.height * _this.rectScale.y
56
- }
57
- /* Gridstack ONLY needs position set above... keep around in case.
58
- element: [this.el], // The object representing the element to be resized
59
- helper: [], // TODO: not support yet - The object representing the helper that's being resized
60
- originalElement: [this.el],// we don't wrap here, so simplify as this.el //The object representing the original element before it is wrapped
61
- originalPosition: { // The position represented as { left, top } before the resizable is resized
62
- left: this.originalRect.left - containmentRect.left,
63
- top: this.originalRect.top - containmentRect.top
64
- },
65
- originalSize: { // The size represented as { width, height } before the resizable is resized
66
- width: this.originalRect.width,
67
- height: this.originalRect.height
68
- }
69
- */
70
- };
71
- };
72
- // create var event binding so we can easily remove and still look like TS methods (unlike anonymous functions)
73
- _this._mouseOver = _this._mouseOver.bind(_this);
74
- _this._mouseOut = _this._mouseOut.bind(_this);
75
- _this.enable();
76
- _this._setupAutoHide(_this.option.autoHide);
77
- _this._setupHandlers();
78
- return _this;
79
- }
80
- DDResizable.prototype.on = function (event, callback) {
81
- _super.prototype.on.call(this, event, callback);
82
- };
83
- DDResizable.prototype.off = function (event) {
84
- _super.prototype.off.call(this, event);
85
- };
86
- DDResizable.prototype.enable = function () {
87
- _super.prototype.enable.call(this);
88
- this.el.classList.remove('ui-resizable-disabled');
89
- this._setupAutoHide(this.option.autoHide);
90
- };
91
- DDResizable.prototype.disable = function () {
92
- _super.prototype.disable.call(this);
93
- this.el.classList.add('ui-resizable-disabled');
94
- this._setupAutoHide(false);
95
- };
96
- DDResizable.prototype.destroy = function () {
97
- this._removeHandlers();
98
- this._setupAutoHide(false);
99
- delete this.el;
100
- _super.prototype.destroy.call(this);
101
- };
102
- DDResizable.prototype.updateOption = function (opts) {
103
- var _this = this;
104
- var updateHandles = (opts.handles && opts.handles !== this.option.handles);
105
- var updateAutoHide = (opts.autoHide && opts.autoHide !== this.option.autoHide);
106
- Object.keys(opts).forEach(function (key) { return _this.option[key] = opts[key]; });
107
- if (updateHandles) {
108
- this._removeHandlers();
109
- this._setupHandlers();
110
- }
111
- if (updateAutoHide) {
112
- this._setupAutoHide(this.option.autoHide);
113
- }
114
- return this;
115
- };
116
- /** @internal turns auto hide on/off */
117
- DDResizable.prototype._setupAutoHide = function (auto) {
118
- if (auto) {
119
- this.el.classList.add('ui-resizable-autohide');
120
- // use mouseover and not mouseenter to get better performance and track for nested cases
121
- this.el.addEventListener('mouseover', this._mouseOver);
122
- this.el.addEventListener('mouseout', this._mouseOut);
123
- }
124
- else {
125
- this.el.classList.remove('ui-resizable-autohide');
126
- this.el.removeEventListener('mouseover', this._mouseOver);
127
- this.el.removeEventListener('mouseout', this._mouseOut);
128
- if (dd_manager_1.DDManager.overResizeElement === this) {
129
- delete dd_manager_1.DDManager.overResizeElement;
130
- }
131
- }
132
- return this;
133
- };
134
- /** @internal */
135
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
136
- DDResizable.prototype._mouseOver = function (e) {
137
- // console.log(`${count++} pre-enter ${(this.el as GridItemHTMLElement).gridstackNode._id}`)
138
- // already over a child, ignore. Ideally we just call e.stopPropagation() but see https://github.com/gridstack/gridstack.js/issues/2018
139
- if (dd_manager_1.DDManager.overResizeElement || dd_manager_1.DDManager.dragElement)
140
- return;
141
- dd_manager_1.DDManager.overResizeElement = this;
142
- // console.log(`${count++} enter ${(this.el as GridItemHTMLElement).gridstackNode._id}`)
143
- this.el.classList.remove('ui-resizable-autohide');
144
- };
145
- /** @internal */
146
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
147
- DDResizable.prototype._mouseOut = function (e) {
148
- // console.log(`${count++} pre-leave ${(this.el as GridItemHTMLElement).gridstackNode._id}`)
149
- if (dd_manager_1.DDManager.overResizeElement !== this)
150
- return;
151
- delete dd_manager_1.DDManager.overResizeElement;
152
- // console.log(`${count++} leave ${(this.el as GridItemHTMLElement).gridstackNode._id}`)
153
- this.el.classList.add('ui-resizable-autohide');
154
- };
155
- /** @internal */
156
- DDResizable.prototype._setupHandlers = function () {
157
- var _this = this;
158
- this.handlers = this.option.handles.split(',')
159
- .map(function (dir) { return dir.trim(); })
160
- .map(function (dir) { return new dd_resizable_handle_1.DDResizableHandle(_this.el, dir, {
161
- start: function (event) {
162
- _this._resizeStart(event);
163
- },
164
- stop: function (event) {
165
- _this._resizeStop(event);
166
- },
167
- move: function (event) {
168
- _this._resizing(event, dir);
169
- }
170
- }); });
171
- return this;
172
- };
173
- /** @internal */
174
- DDResizable.prototype._resizeStart = function (event) {
175
- this.sizeToContent = utils_1.Utils.shouldSizeToContent(this.el.gridstackNode, true); // strick true only and not number
176
- this.originalRect = this.el.getBoundingClientRect();
177
- this.scrollEl = utils_1.Utils.getScrollElement(this.el);
178
- this.scrollY = this.scrollEl.scrollTop;
179
- this.scrolled = 0;
180
- this.startEvent = event;
181
- this._setupHelper();
182
- this._applyChange();
183
- var ev = utils_1.Utils.initEvent(event, { type: 'resizestart', target: this.el });
184
- if (this.option.start) {
185
- this.option.start(ev, this._ui());
186
- }
187
- this.el.classList.add('ui-resizable-resizing');
188
- this.triggerEvent('resizestart', ev);
189
- return this;
190
- };
191
- /** @internal */
192
- DDResizable.prototype._resizing = function (event, dir) {
193
- this.scrolled = this.scrollEl.scrollTop - this.scrollY;
194
- this.temporalRect = this._getChange(event, dir);
195
- this._applyChange();
196
- var ev = utils_1.Utils.initEvent(event, { type: 'resize', target: this.el });
197
- if (this.option.resize) {
198
- this.option.resize(ev, this._ui());
199
- }
200
- this.triggerEvent('resize', ev);
201
- return this;
202
- };
203
- /** @internal */
204
- DDResizable.prototype._resizeStop = function (event) {
205
- var ev = utils_1.Utils.initEvent(event, { type: 'resizestop', target: this.el });
206
- if (this.option.stop) {
207
- this.option.stop(ev); // Note: ui() not used by gridstack so don't pass
208
- }
209
- this.el.classList.remove('ui-resizable-resizing');
210
- this.triggerEvent('resizestop', ev);
211
- this._cleanHelper();
212
- delete this.startEvent;
213
- delete this.originalRect;
214
- delete this.temporalRect;
215
- delete this.scrollY;
216
- delete this.scrolled;
217
- return this;
218
- };
219
- /** @internal */
220
- DDResizable.prototype._setupHelper = function () {
221
- var _this = this;
222
- this.elOriginStyleVal = DDResizable._originStyleProp.map(function (prop) { return _this.el.style[prop]; });
223
- this.parentOriginStylePosition = this.el.parentElement.style.position;
224
- var parent = this.el.parentElement;
225
- var dragTransform = utils_1.Utils.getValuesFromTransformedElement(parent);
226
- this.rectScale = {
227
- x: dragTransform.xScale,
228
- y: dragTransform.yScale
229
- };
230
- if (getComputedStyle(this.el.parentElement).position.match(/static/)) {
231
- this.el.parentElement.style.position = 'relative';
232
- }
233
- this.el.style.position = 'absolute';
234
- this.el.style.opacity = '0.8';
235
- return this;
236
- };
237
- /** @internal */
238
- DDResizable.prototype._cleanHelper = function () {
239
- var _this = this;
240
- DDResizable._originStyleProp.forEach(function (prop, i) {
241
- _this.el.style[prop] = _this.elOriginStyleVal[i] || null;
242
- });
243
- this.el.parentElement.style.position = this.parentOriginStylePosition || null;
244
- return this;
245
- };
246
- /** @internal */
247
- DDResizable.prototype._getChange = function (event, dir) {
248
- var oEvent = this.startEvent;
249
- var newRect = {
250
- width: this.originalRect.width,
251
- height: this.originalRect.height + this.scrolled,
252
- left: this.originalRect.left,
253
- top: this.originalRect.top - this.scrolled
254
- };
255
- var offsetX = event.clientX - oEvent.clientX;
256
- var offsetY = this.sizeToContent ? 0 : event.clientY - oEvent.clientY; // prevent vert resize
257
- var moveLeft;
258
- var moveUp;
259
- if (dir.indexOf('e') > -1) {
260
- newRect.width += offsetX;
261
- }
262
- else if (dir.indexOf('w') > -1) {
263
- newRect.width -= offsetX;
264
- newRect.left += offsetX;
265
- moveLeft = true;
266
- }
267
- if (dir.indexOf('s') > -1) {
268
- newRect.height += offsetY;
269
- }
270
- else if (dir.indexOf('n') > -1) {
271
- newRect.height -= offsetY;
272
- newRect.top += offsetY;
273
- moveUp = true;
274
- }
275
- var constrain = this._constrainSize(newRect.width, newRect.height, moveLeft, moveUp);
276
- if (Math.round(newRect.width) !== Math.round(constrain.width)) { // round to ignore slight round-off errors
277
- if (dir.indexOf('w') > -1) {
278
- newRect.left += newRect.width - constrain.width;
279
- }
280
- newRect.width = constrain.width;
281
- }
282
- if (Math.round(newRect.height) !== Math.round(constrain.height)) {
283
- if (dir.indexOf('n') > -1) {
284
- newRect.top += newRect.height - constrain.height;
285
- }
286
- newRect.height = constrain.height;
287
- }
288
- return newRect;
289
- };
290
- /** @internal constrain the size to the set min/max values */
291
- DDResizable.prototype._constrainSize = function (oWidth, oHeight, moveLeft, moveUp) {
292
- var o = this.option;
293
- var maxWidth = (moveLeft ? o.maxWidthMoveLeft : o.maxWidth) || Number.MAX_SAFE_INTEGER;
294
- var minWidth = o.minWidth / this.rectScale.x || oWidth;
295
- var maxHeight = (moveUp ? o.maxHeightMoveUp : o.maxHeight) || Number.MAX_SAFE_INTEGER;
296
- var minHeight = o.minHeight / this.rectScale.y || oHeight;
297
- var width = Math.min(maxWidth, Math.max(minWidth, oWidth));
298
- var height = Math.min(maxHeight, Math.max(minHeight, oHeight));
299
- return { width: width, height: height };
300
- };
301
- /** @internal */
302
- DDResizable.prototype._applyChange = function () {
303
- var _a;
304
- var _this = this;
305
- var containmentRect = { left: 0, top: 0, width: 0, height: 0 };
306
- if (this.el.style.position === 'absolute') {
307
- var containmentEl = this.el.parentElement;
308
- var left = (_a = containmentEl.getBoundingClientRect(), _a.left), top_1 = _a.top;
309
- containmentRect = { left: left, top: top_1, width: 0, height: 0 };
310
- }
311
- if (!this.temporalRect)
312
- return this;
313
- Object.keys(this.temporalRect).forEach(function (key) {
314
- var value = _this.temporalRect[key];
315
- var scaleReciprocal = key === 'width' || key === 'left' ? _this.rectScale.x : key === 'height' || key === 'top' ? _this.rectScale.y : 1;
316
- _this.el.style[key] = (value - containmentRect[key]) * scaleReciprocal + 'px';
317
- });
318
- return this;
319
- };
320
- /** @internal */
321
- DDResizable.prototype._removeHandlers = function () {
322
- this.handlers.forEach(function (handle) { return handle.destroy(); });
323
- delete this.handlers;
324
- return this;
325
- };
326
- /** @internal */
327
- DDResizable._originStyleProp = ['width', 'height', 'position', 'left', 'top', 'opacity', 'zIndex'];
328
- return DDResizable;
329
- }(dd_base_impl_1.DDBaseImplement));
330
- //# sourceMappingURL=dd-resizable.js.map