{"version":3,"sources":["webpack:///./node_modules/gridstack/dist/dd-gridstack.js","webpack:///./node_modules/gridstack/dist/dd-draggable.js","webpack:///./node_modules/gridstack/dist/dd-droppable.js","webpack:///./node_modules/gopd/index.js","webpack:///./node_modules/gridstack/dist/dd-resizable-handle.js","webpack:///./node_modules/gridstack/dist/dd-resizable.js","webpack:///./node_modules/gridstack/dist/dd-touch.js","webpack:///./node_modules/gridstack/dist/dd-base-impl.js","webpack:///./node_modules/gridstack/dist/dd-element.js","webpack:///./node_modules/gridstack/dist/dd-manager.js"],"names":["Object","defineProperty","exports","value","DDGridStack","utils_1","dd_manager_1","dd_element_1","el","opts","key","this","_getDDElements","forEach","dEl","ddResizable","cleanResizable","setupResizable","grid","gridstackNode","handles","getAttribute","resizable","autoHide","alwaysShowResizeHandle","assign","start","stop","resize","ddDraggable","cleanDraggable","setupDraggable","draggable","drag","accept","_accept","ddDroppable","cleanDroppable","setupDroppable","ddElement","disabled","name","callback","on","event","DDManager","dragElement","target","helper","off","els","create","hosts","Utils","getElements","length","list","map","e","DDElement","init","filter","d","DDDraggable","dd_base_impl_1","dd_touch_1","DDBaseImplement","option","super","handleName","handle","substring","dragEl","classList","contains","querySelector","_mouseDown","bind","_mouseMove","_mouseUp","enable","addEventListener","isTouch","touchstart","pointerdown","remove","add","forDestroy","disable","removeEventListener","dragTimeout","window","clearTimeout","dragging","mouseDownEvent","destroy","keys","mouseHandled","button","nodeName","toLowerCase","find","skip","closest","dropElement","document","touchmove","touchend","preventDefault","activeElement","blur","ev","initEvent","type","ui","triggerEvent","_a","s","_dragFollow","pauseDrag","pause","Number","isInteger","setTimeout","_callDrag","Math","abs","x","y","_createHelper","_setupHelperContainmentStyle","dragOffset","_getDragOffset","helperContainment","_setupHelperStyle","parentElement","style","position","parentOriginStylePosition","_removeHelperStyle","drop","cloneNode","body","appendTo","parentNode","dragElementOriginStyle","originStyleProp","prop","pointerEvents","width","height","willChange","transition","node","_isAboutToRemove","containmentRect","offset","left","clientX","offsetLeft","top","clientY","offsetTop","getComputedStyle","match","parent","xformOffsetX","xformOffsetY","testEl","createElement","addElStyles","opacity","zIndex","appendChild","testElPosition","getBoundingClientRect","removeChild","targetOffset","DDDroppable","_mouseEnter","_mouseLeave","_setupAccept","pointerenter","pointerleave","_canDrop","stopPropagation","over","_ui","out","parentDrop","matches","$gOPD","GetIntrinsic","module","DDResizableHandle","host","direction","moving","dir","_init","prefix","userSelect","_triggerEvent","DDResizable","dd_resizable_handle_1","newRect","originalRect","scrolled","rect","temporalRect","size","_mouseOver","_mouseOut","_setupAutoHide","_setupHandlers","_removeHandlers","updateHandles","updateAutoHide","auto","overResizeElement","handlerDirection","handlers","split","trim","_resizeStart","_resizeStop","move","_resizing","scrollEl","getScrollElement","scrollY","scrollTop","startEvent","_setupHelper","_applyChange","_getChange","_cleanHelper","elOriginStyleVal","_originStyleProp","i","oEvent","offsetX","offsetY","indexOf","constrain","_constrainSize","round","oWidth","oHeight","maxWidth","MAX_SAFE_INTEGER","minWidth","maxHeight","minHeight","min","max","containmentEl","DocumentTouch","navigator","maxTouchPoints","msMaxTouchPoints","DDTouch","simulateMouseEvent","simulatedType","touches","cancelable","touch","changedTouches","simulatedEvent","createEvent","initMouseEvent","screenX","screenY","dispatchEvent","simulatePointerMouseEvent","touchHandled","pointerLeaveTimeout","wasDragging","releasePointerCapture","pointerId","_eventRegister","_disabled","eventName","dd_resizable_1","dd_draggable_1","dd_droppable_1","updateOption"],"mappings":"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","file":"vendors~37441139.e02e8fbfa3d2c9aefc4f.chunk.js","sourcesContent":["\"use strict\";\r\n/**\r\n * dd-gridstack.ts 7.3.0\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DDGridStack = void 0;\r\nconst utils_1 = require(\"./utils\");\r\nconst dd_manager_1 = require(\"./dd-manager\");\r\nconst dd_element_1 = require(\"./dd-element\");\r\n// let count = 0; // TEST\r\n/**\r\n * HTML Native Mouse and Touch Events Drag and Drop functionality.\r\n */\r\nclass DDGridStack {\r\n    resizable(el, opts, key, value) {\r\n        this._getDDElements(el).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            }\r\n            else if (opts === 'destroy') {\r\n                dEl.ddResizable && dEl.cleanResizable();\r\n            }\r\n            else if (opts === 'option') {\r\n                dEl.setupResizable({ [key]: value });\r\n            }\r\n            else {\r\n                const grid = dEl.el.gridstackNode.grid;\r\n                let handles = dEl.el.getAttribute('gs-resize-handles') ? dEl.el.getAttribute('gs-resize-handles') : grid.opts.resizable.handles;\r\n                let autoHide = !grid.opts.alwaysShowResizeHandle;\r\n                dEl.setupResizable(Object.assign(Object.assign(Object.assign({}, grid.opts.resizable), { handles, autoHide }), {\r\n                    start: opts.start,\r\n                    stop: opts.stop,\r\n                    resize: opts.resize\r\n                }));\r\n            }\r\n        });\r\n        return this;\r\n    }\r\n    draggable(el, opts, key, value) {\r\n        this._getDDElements(el).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            }\r\n            else if (opts === 'destroy') {\r\n                dEl.ddDraggable && dEl.cleanDraggable();\r\n            }\r\n            else if (opts === 'option') {\r\n                dEl.setupDraggable({ [key]: value });\r\n            }\r\n            else {\r\n                const grid = dEl.el.gridstackNode.grid;\r\n                dEl.setupDraggable(Object.assign(Object.assign({}, grid.opts.draggable), {\r\n                    // containment: (grid.parentGridItem && !grid.opts.dragOut) ? 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        return this;\r\n    }\r\n    dragIn(el, opts) {\r\n        this._getDDElements(el).forEach(dEl => dEl.setupDraggable(opts));\r\n        return this;\r\n    }\r\n    droppable(el, opts, key, value) {\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).forEach(dEl => {\r\n            if (opts === 'disable' || opts === 'enable') {\r\n                dEl.ddDroppable && dEl.ddDroppable[opts]();\r\n            }\r\n            else if (opts === 'destroy') {\r\n                if (dEl.ddDroppable) { // error to call destroy if not there\r\n                    dEl.cleanDroppable();\r\n                }\r\n            }\r\n            else if (opts === 'option') {\r\n                dEl.setupDroppable({ [key]: value });\r\n            }\r\n            else {\r\n                dEl.setupDroppable(opts);\r\n            }\r\n        });\r\n        return this;\r\n    }\r\n    /** true if element is droppable */\r\n    isDroppable(el) {\r\n        return !!(el && el.ddElement && el.ddElement.ddDroppable && !el.ddElement.ddDroppable.disabled);\r\n    }\r\n    /** true if element is draggable */\r\n    isDraggable(el) {\r\n        return !!(el && el.ddElement && el.ddElement.ddDraggable && !el.ddElement.ddDraggable.disabled);\r\n    }\r\n    /** true if element is draggable */\r\n    isResizable(el) {\r\n        return !!(el && el.ddElement && el.ddElement.ddResizable && !el.ddElement.ddResizable.disabled);\r\n    }\r\n    on(el, name, callback) {\r\n        this._getDDElements(el).forEach(dEl => dEl.on(name, (event) => {\r\n            callback(event, dd_manager_1.DDManager.dragElement ? dd_manager_1.DDManager.dragElement.el : event.target, dd_manager_1.DDManager.dragElement ? dd_manager_1.DDManager.dragElement.helper : null);\r\n        }));\r\n        return this;\r\n    }\r\n    off(el, name) {\r\n        this._getDDElements(el).forEach(dEl => dEl.off(name));\r\n        return this;\r\n    }\r\n    /** @internal returns a list of DD elements, creating them on the fly by default */\r\n    _getDDElements(els, create = true) {\r\n        let hosts = utils_1.Utils.getElements(els);\r\n        if (!hosts.length)\r\n            return [];\r\n        let list = hosts.map(e => e.ddElement || (create ? dd_element_1.DDElement.init(e) : null));\r\n        if (!create) {\r\n            list.filter(d => d);\r\n        } // remove nulls\r\n        return list;\r\n    }\r\n}\r\nexports.DDGridStack = DDGridStack;\r\n//# sourceMappingURL=dd-gridstack.js.map","\"use strict\";\r\n/**\r\n * dd-draggable.ts 7.3.0\r\n * Copyright (c) 2021-2022 Alain Dumesny - see GridStack root license\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DDDraggable = void 0;\r\nconst dd_manager_1 = require(\"./dd-manager\");\r\nconst utils_1 = require(\"./utils\");\r\nconst dd_base_impl_1 = require(\"./dd-base-impl\");\r\nconst dd_touch_1 = require(\"./dd-touch\");\r\n// let count = 0; // TEST\r\nclass DDDraggable extends dd_base_impl_1.DDBaseImplement {\r\n    constructor(el, option = {}) {\r\n        super();\r\n        this.el = el;\r\n        this.option = option;\r\n        // get the element that is actually supposed to be dragged by\r\n        let handleName = option.handle.substring(1);\r\n        this.dragEl = el.classList.contains(handleName) ? el : el.querySelector(option.handle) || el;\r\n        // create var event binding so we can easily remove and still look like TS methods (unlike anonymous functions)\r\n        this._mouseDown = this._mouseDown.bind(this);\r\n        this._mouseMove = this._mouseMove.bind(this);\r\n        this._mouseUp = this._mouseUp.bind(this);\r\n        this.enable();\r\n    }\r\n    on(event, callback) {\r\n        super.on(event, callback);\r\n    }\r\n    off(event) {\r\n        super.off(event);\r\n    }\r\n    enable() {\r\n        if (this.disabled === false)\r\n            return;\r\n        super.enable();\r\n        this.dragEl.addEventListener('mousedown', this._mouseDown);\r\n        if (dd_touch_1.isTouch) {\r\n            this.dragEl.addEventListener('touchstart', dd_touch_1.touchstart);\r\n            this.dragEl.addEventListener('pointerdown', dd_touch_1.pointerdown);\r\n            // this.dragEl.style.touchAction = 'none'; // not needed unlike pointerdown doc comment\r\n        }\r\n        this.el.classList.remove('ui-draggable-disabled');\r\n        this.el.classList.add('ui-draggable');\r\n    }\r\n    disable(forDestroy = false) {\r\n        if (this.disabled === true)\r\n            return;\r\n        super.disable();\r\n        this.dragEl.removeEventListener('mousedown', this._mouseDown);\r\n        if (dd_touch_1.isTouch) {\r\n            this.dragEl.removeEventListener('touchstart', dd_touch_1.touchstart);\r\n            this.dragEl.removeEventListener('pointerdown', dd_touch_1.pointerdown);\r\n        }\r\n        this.el.classList.remove('ui-draggable');\r\n        if (!forDestroy)\r\n            this.el.classList.add('ui-draggable-disabled');\r\n    }\r\n    destroy() {\r\n        if (this.dragTimeout)\r\n            window.clearTimeout(this.dragTimeout);\r\n        delete this.dragTimeout;\r\n        if (this.dragging)\r\n            this._mouseUp(this.mouseDownEvent);\r\n        this.disable(true);\r\n        delete this.el;\r\n        delete this.helper;\r\n        delete this.option;\r\n        super.destroy();\r\n    }\r\n    updateOption(opts) {\r\n        Object.keys(opts).forEach(key => this.option[key] = opts[key]);\r\n        return this;\r\n    }\r\n    /** @internal call when mouse goes down before a dragstart happens */\r\n    _mouseDown(e) {\r\n        // don't let more than one widget handle mouseStart\r\n        if (dd_manager_1.DDManager.mouseHandled)\r\n            return;\r\n        if (e.button !== 0)\r\n            return true; // only left click\r\n        // make sure we are not clicking on known object that handles mouseDown (TODO: make this extensible ?) #2054\r\n        const skipMouseDown = ['input', 'textarea', 'button', 'select', 'option'];\r\n        const name = e.target.nodeName.toLowerCase();\r\n        if (skipMouseDown.find(skip => skip === name))\r\n            return true;\r\n        // also check for content editable\r\n        if (e.target.closest('[contenteditable=\"true\"]'))\r\n            return true;\r\n        // REMOVE: why would we get the event if it wasn't for us or child ?\r\n        // make sure we are clicking on a drag handle or child of it...\r\n        // Note: we don't need to check that's handle is an immediate child, as mouseHandled will prevent parents from also handling it (lowest wins)\r\n        // let className = this.option.handle.substring(1);\r\n        // let el = e.target as HTMLElement;\r\n        // while (el && !el.classList.contains(className)) { el = el.parentElement; }\r\n        // if (!el) return;\r\n        this.mouseDownEvent = e;\r\n        delete this.dragging;\r\n        delete dd_manager_1.DDManager.dragElement;\r\n        delete dd_manager_1.DDManager.dropElement;\r\n        // document handler so we can continue receiving moves as the item is 'fixed' position, and capture=true so WE get a first crack\r\n        document.addEventListener('mousemove', this._mouseMove, true); // true=capture, not bubble\r\n        document.addEventListener('mouseup', this._mouseUp, true);\r\n        if (dd_touch_1.isTouch) {\r\n            this.dragEl.addEventListener('touchmove', dd_touch_1.touchmove);\r\n            this.dragEl.addEventListener('touchend', dd_touch_1.touchend);\r\n        }\r\n        e.preventDefault();\r\n        // preventDefault() prevents blur event which occurs just after mousedown event.\r\n        // if an editable content has focus, then blur must be call\r\n        if (document.activeElement)\r\n            document.activeElement.blur();\r\n        dd_manager_1.DDManager.mouseHandled = true;\r\n        return true;\r\n    }\r\n    /** @internal method to call actual drag event */\r\n    _callDrag(e) {\r\n        if (!this.dragging)\r\n            return;\r\n        const ev = utils_1.Utils.initEvent(e, { target: this.el, type: 'drag' });\r\n        if (this.option.drag) {\r\n            this.option.drag(ev, this.ui());\r\n        }\r\n        this.triggerEvent('drag', ev);\r\n    }\r\n    /** @internal called when the main page (after successful mousedown) receives a move event to drag the item around the screen */\r\n    _mouseMove(e) {\r\n        var _a;\r\n        // console.log(`${count++} move ${e.x},${e.y}`)\r\n        let s = this.mouseDownEvent;\r\n        if (this.dragging) {\r\n            this._dragFollow(e);\r\n            // delay actual grid handling drag until we pause for a while if set\r\n            if (dd_manager_1.DDManager.pauseDrag) {\r\n                const pause = Number.isInteger(dd_manager_1.DDManager.pauseDrag) ? dd_manager_1.DDManager.pauseDrag : 100;\r\n                if (this.dragTimeout)\r\n                    window.clearTimeout(this.dragTimeout);\r\n                this.dragTimeout = window.setTimeout(() => this._callDrag(e), pause);\r\n            }\r\n            else {\r\n                this._callDrag(e);\r\n            }\r\n        }\r\n        else if (Math.abs(e.x - s.x) + Math.abs(e.y - s.y) > 3) {\r\n            /**\r\n             * don't start unless we've moved at least 3 pixels\r\n             */\r\n            this.dragging = true;\r\n            dd_manager_1.DDManager.dragElement = this;\r\n            // if we're dragging an actual grid item, set the current drop as the grid (to detect enter/leave)\r\n            let grid = (_a = this.el.gridstackNode) === null || _a === void 0 ? void 0 : _a.grid;\r\n            if (grid) {\r\n                dd_manager_1.DDManager.dropElement = grid.el.ddElement.ddDroppable;\r\n            }\r\n            else {\r\n                delete dd_manager_1.DDManager.dropElement;\r\n            }\r\n            this.helper = this._createHelper(e);\r\n            this._setupHelperContainmentStyle();\r\n            this.dragOffset = this._getDragOffset(e, this.el, this.helperContainment);\r\n            const ev = utils_1.Utils.initEvent(e, { target: this.el, type: 'dragstart' });\r\n            this._setupHelperStyle(e);\r\n            if (this.option.start) {\r\n                this.option.start(ev, this.ui());\r\n            }\r\n            this.triggerEvent('dragstart', ev);\r\n        }\r\n        e.preventDefault(); // needed otherwise we get text sweep text selection as we drag around\r\n        return true;\r\n    }\r\n    /** @internal call when the mouse gets released to drop the item at current location */\r\n    _mouseUp(e) {\r\n        var _a;\r\n        document.removeEventListener('mousemove', this._mouseMove, true);\r\n        document.removeEventListener('mouseup', this._mouseUp, true);\r\n        if (dd_touch_1.isTouch) {\r\n            this.dragEl.removeEventListener('touchmove', dd_touch_1.touchmove, true);\r\n            this.dragEl.removeEventListener('touchend', dd_touch_1.touchend, true);\r\n        }\r\n        if (this.dragging) {\r\n            delete this.dragging;\r\n            // reset the drop target if dragging over ourself (already parented, just moving during stop callback below)\r\n            if (((_a = dd_manager_1.DDManager.dropElement) === null || _a === void 0 ? void 0 : _a.el) === this.el.parentElement) {\r\n                delete dd_manager_1.DDManager.dropElement;\r\n            }\r\n            this.helperContainment.style.position = this.parentOriginStylePosition || null;\r\n            if (this.helper === this.el) {\r\n                this._removeHelperStyle();\r\n            }\r\n            else {\r\n                this.helper.remove();\r\n            }\r\n            const ev = utils_1.Utils.initEvent(e, { target: this.el, type: 'dragstop' });\r\n            if (this.option.stop) {\r\n                this.option.stop(ev); // NOTE: destroy() will be called when removing item, so expect NULL ptr after!\r\n            }\r\n            this.triggerEvent('dragstop', ev);\r\n            // call the droppable method to receive the item\r\n            if (dd_manager_1.DDManager.dropElement) {\r\n                dd_manager_1.DDManager.dropElement.drop(e);\r\n            }\r\n        }\r\n        delete this.helper;\r\n        delete this.mouseDownEvent;\r\n        delete dd_manager_1.DDManager.dragElement;\r\n        delete dd_manager_1.DDManager.dropElement;\r\n        delete dd_manager_1.DDManager.mouseHandled;\r\n        e.preventDefault();\r\n    }\r\n    /** @internal create a clone copy (or user defined method) of the original drag item if set */\r\n    _createHelper(event) {\r\n        let helper = this.el;\r\n        if (typeof this.option.helper === 'function') {\r\n            helper = this.option.helper(event);\r\n        }\r\n        else if (this.option.helper === 'clone') {\r\n            helper = utils_1.Utils.cloneNode(this.el);\r\n        }\r\n        if (!document.body.contains(helper)) {\r\n            utils_1.Utils.appendTo(helper, this.option.appendTo === 'parent' ? this.el.parentNode : this.option.appendTo);\r\n        }\r\n        if (helper === this.el) {\r\n            this.dragElementOriginStyle = DDDraggable.originStyleProp.map(prop => this.el.style[prop]);\r\n        }\r\n        return helper;\r\n    }\r\n    /** @internal set the fix position of the dragged item */\r\n    _setupHelperStyle(e) {\r\n        this.helper.classList.add('ui-draggable-dragging');\r\n        // TODO: set all at once with style.cssText += ... ? https://stackoverflow.com/questions/3968593\r\n        const style = this.helper.style;\r\n        style.pointerEvents = 'none'; // needed for over items to get enter/leave\r\n        // style.cursor = 'move'; //  TODO: can't set with pointerEvents=none ! (done in CSS as well)\r\n        style['min-width'] = 0; // since we no longer relative to our parent and we don't resize anyway (normally 100/#column %)\r\n        style.width = this.dragOffset.width + 'px';\r\n        style.height = this.dragOffset.height + 'px';\r\n        style.willChange = 'left, top';\r\n        style.position = 'fixed'; // let us drag between grids by not clipping as parent .grid-stack is position: 'relative'\r\n        this._dragFollow(e); // now position it\r\n        style.transition = 'none'; // show up instantly\r\n        setTimeout(() => {\r\n            if (this.helper) {\r\n                style.transition = null; // recover animation\r\n            }\r\n        }, 0);\r\n        return this;\r\n    }\r\n    /** @internal restore back the original style before dragging */\r\n    _removeHelperStyle() {\r\n        var _a;\r\n        this.helper.classList.remove('ui-draggable-dragging');\r\n        let node = (_a = this.helper) === null || _a === void 0 ? void 0 : _a.gridstackNode;\r\n        // don't bother restoring styles if we're gonna remove anyway...\r\n        if (!(node === null || node === void 0 ? void 0 : node._isAboutToRemove) && this.dragElementOriginStyle) {\r\n            let helper = this.helper;\r\n            // don't animate, otherwise we animate offseted when switching back to 'absolute' from 'fixed'.\r\n            // TODO: this also removes resizing animation which doesn't have this issue, but others.\r\n            // Ideally both would animate ('move' would immediately restore 'absolute' and adjust coordinate to match,\r\n            // then trigger a delay (repaint) to restore to final dest with animate) but then we need to make sure 'resizestop'\r\n            // is called AFTER 'transitionend' event is received (see https://github.com/gridstack/gridstack.js/issues/2033)\r\n            let transition = this.dragElementOriginStyle['transition'] || null;\r\n            helper.style.transition = this.dragElementOriginStyle['transition'] = 'none'; // can't be NULL #1973\r\n            DDDraggable.originStyleProp.forEach(prop => helper.style[prop] = this.dragElementOriginStyle[prop] || null);\r\n            setTimeout(() => helper.style.transition = transition, 50); // recover animation from saved vars after a pause (0 isn't enough #1973)\r\n        }\r\n        delete this.dragElementOriginStyle;\r\n        return this;\r\n    }\r\n    /** @internal updates the top/left position to follow the mouse */\r\n    _dragFollow(e) {\r\n        let containmentRect = { left: 0, top: 0 };\r\n        // if (this.helper.style.position === 'absolute') { // we use 'fixed'\r\n        //   const { left, top } = this.helperContainment.getBoundingClientRect();\r\n        //   containmentRect = { left, top };\r\n        // }\r\n        const style = this.helper.style;\r\n        const offset = this.dragOffset;\r\n        style.left = e.clientX + offset.offsetLeft - containmentRect.left + 'px';\r\n        style.top = e.clientY + offset.offsetTop - containmentRect.top + 'px';\r\n    }\r\n    /** @internal */\r\n    _setupHelperContainmentStyle() {\r\n        this.helperContainment = this.helper.parentElement;\r\n        if (this.helper.style.position !== 'fixed') {\r\n            this.parentOriginStylePosition = this.helperContainment.style.position;\r\n            if (window.getComputedStyle(this.helperContainment).position.match(/static/)) {\r\n                this.helperContainment.style.position = 'relative';\r\n            }\r\n        }\r\n        return this;\r\n    }\r\n    /** @internal */\r\n    _getDragOffset(event, el, parent) {\r\n        // in case ancestor has transform/perspective css properties that change the viewpoint\r\n        let xformOffsetX = 0;\r\n        let xformOffsetY = 0;\r\n        if (parent) {\r\n            const testEl = document.createElement('div');\r\n            utils_1.Utils.addElStyles(testEl, {\r\n                opacity: '0',\r\n                position: 'fixed',\r\n                top: 0 + 'px',\r\n                left: 0 + 'px',\r\n                width: '1px',\r\n                height: '1px',\r\n                zIndex: '-999999',\r\n            });\r\n            parent.appendChild(testEl);\r\n            const testElPosition = testEl.getBoundingClientRect();\r\n            parent.removeChild(testEl);\r\n            xformOffsetX = testElPosition.left;\r\n            xformOffsetY = testElPosition.top;\r\n            // TODO: scale ?\r\n        }\r\n        const targetOffset = el.getBoundingClientRect();\r\n        return {\r\n            left: targetOffset.left,\r\n            top: targetOffset.top,\r\n            offsetLeft: -event.clientX + targetOffset.left - xformOffsetX,\r\n            offsetTop: -event.clientY + targetOffset.top - xformOffsetY,\r\n            width: targetOffset.width,\r\n            height: targetOffset.height\r\n        };\r\n    }\r\n    /** @internal TODO: set to public as called by DDDroppable! */\r\n    ui() {\r\n        const containmentEl = this.el.parentElement;\r\n        const containmentRect = containmentEl.getBoundingClientRect();\r\n        const offset = this.helper.getBoundingClientRect();\r\n        return {\r\n            position: {\r\n                top: offset.top - containmentRect.top,\r\n                left: offset.left - containmentRect.left\r\n            }\r\n            /* not used by GridStack for now...\r\n            helper: [this.helper], //The object arr representing the helper that's being dragged.\r\n            offset: { top: offset.top, left: offset.left } // Current offset position of the helper as { top, left } object.\r\n            */\r\n        };\r\n    }\r\n}\r\nexports.DDDraggable = DDDraggable;\r\n/** @internal properties we change during dragging, and restore back */\r\nDDDraggable.originStyleProp = ['transition', 'pointerEvents', 'position', 'left', 'top', 'minWidth', 'willChange'];\r\n//# sourceMappingURL=dd-draggable.js.map","\"use strict\";\r\n/**\r\n * dd-droppable.ts 7.3.0\r\n * Copyright (c) 2021-2022 Alain Dumesny - see GridStack root license\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DDDroppable = void 0;\r\nconst dd_manager_1 = require(\"./dd-manager\");\r\nconst dd_base_impl_1 = require(\"./dd-base-impl\");\r\nconst utils_1 = require(\"./utils\");\r\nconst dd_touch_1 = require(\"./dd-touch\");\r\n// let count = 0; // TEST\r\nclass DDDroppable extends dd_base_impl_1.DDBaseImplement {\r\n    constructor(el, opts = {}) {\r\n        super();\r\n        this.el = el;\r\n        this.option = opts;\r\n        // create var event binding so we can easily remove and still look like TS methods (unlike anonymous functions)\r\n        this._mouseEnter = this._mouseEnter.bind(this);\r\n        this._mouseLeave = this._mouseLeave.bind(this);\r\n        this.enable();\r\n        this._setupAccept();\r\n    }\r\n    on(event, callback) {\r\n        super.on(event, callback);\r\n    }\r\n    off(event) {\r\n        super.off(event);\r\n    }\r\n    enable() {\r\n        if (this.disabled === false)\r\n            return;\r\n        super.enable();\r\n        this.el.classList.add('ui-droppable');\r\n        this.el.classList.remove('ui-droppable-disabled');\r\n        this.el.addEventListener('mouseenter', this._mouseEnter);\r\n        this.el.addEventListener('mouseleave', this._mouseLeave);\r\n        if (dd_touch_1.isTouch) {\r\n            this.el.addEventListener('pointerenter', dd_touch_1.pointerenter);\r\n            this.el.addEventListener('pointerleave', dd_touch_1.pointerleave);\r\n        }\r\n    }\r\n    disable(forDestroy = false) {\r\n        if (this.disabled === true)\r\n            return;\r\n        super.disable();\r\n        this.el.classList.remove('ui-droppable');\r\n        if (!forDestroy)\r\n            this.el.classList.add('ui-droppable-disabled');\r\n        this.el.removeEventListener('mouseenter', this._mouseEnter);\r\n        this.el.removeEventListener('mouseleave', this._mouseLeave);\r\n        if (dd_touch_1.isTouch) {\r\n            this.el.removeEventListener('pointerenter', dd_touch_1.pointerenter);\r\n            this.el.removeEventListener('pointerleave', dd_touch_1.pointerleave);\r\n        }\r\n    }\r\n    destroy() {\r\n        this.disable(true);\r\n        this.el.classList.remove('ui-droppable');\r\n        this.el.classList.remove('ui-droppable-disabled');\r\n        super.destroy();\r\n    }\r\n    updateOption(opts) {\r\n        Object.keys(opts).forEach(key => this.option[key] = opts[key]);\r\n        this._setupAccept();\r\n        return this;\r\n    }\r\n    /** @internal called when the cursor enters our area - prepare for a possible drop and track leaving */\r\n    _mouseEnter(e) {\r\n        // console.log(`${count++} Enter ${this.el.id || (this.el as GridHTMLElement).gridstack.opts.id}`); // TEST\r\n        if (!dd_manager_1.DDManager.dragElement)\r\n            return;\r\n        if (!this._canDrop(dd_manager_1.DDManager.dragElement.el))\r\n            return;\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n        // make sure when we enter this, that the last one gets a leave FIRST to correctly cleanup as we don't always do\r\n        if (dd_manager_1.DDManager.dropElement && dd_manager_1.DDManager.dropElement !== this) {\r\n            dd_manager_1.DDManager.dropElement._mouseLeave(e);\r\n        }\r\n        dd_manager_1.DDManager.dropElement = this;\r\n        const ev = utils_1.Utils.initEvent(e, { target: this.el, type: 'dropover' });\r\n        if (this.option.over) {\r\n            this.option.over(ev, this._ui(dd_manager_1.DDManager.dragElement));\r\n        }\r\n        this.triggerEvent('dropover', ev);\r\n        this.el.classList.add('ui-droppable-over');\r\n        // console.log('tracking'); // TEST\r\n    }\r\n    /** @internal called when the item is leaving our area, stop tracking if we had moving item */\r\n    _mouseLeave(e) {\r\n        var _a;\r\n        // console.log(`${count++} Leave ${this.el.id || (this.el as GridHTMLElement).gridstack.opts.id}`); // TEST\r\n        if (!dd_manager_1.DDManager.dragElement || dd_manager_1.DDManager.dropElement !== this)\r\n            return;\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n        const ev = utils_1.Utils.initEvent(e, { target: this.el, type: 'dropout' });\r\n        if (this.option.out) {\r\n            this.option.out(ev, this._ui(dd_manager_1.DDManager.dragElement));\r\n        }\r\n        this.triggerEvent('dropout', ev);\r\n        if (dd_manager_1.DDManager.dropElement === this) {\r\n            delete dd_manager_1.DDManager.dropElement;\r\n            // console.log('not tracking'); // TEST\r\n            // if we're still over a parent droppable, send it an enter as we don't get one from leaving nested children\r\n            let parentDrop;\r\n            let parent = this.el.parentElement;\r\n            while (!parentDrop && parent) {\r\n                parentDrop = (_a = parent.ddElement) === null || _a === void 0 ? void 0 : _a.ddDroppable;\r\n                parent = parent.parentElement;\r\n            }\r\n            if (parentDrop) {\r\n                parentDrop._mouseEnter(e);\r\n            }\r\n        }\r\n    }\r\n    /** item is being dropped on us - called by the drag mouseup handler - this calls the client drop event */\r\n    drop(e) {\r\n        e.preventDefault();\r\n        const ev = utils_1.Utils.initEvent(e, { target: this.el, type: 'drop' });\r\n        if (this.option.drop) {\r\n            this.option.drop(ev, this._ui(dd_manager_1.DDManager.dragElement));\r\n        }\r\n        this.triggerEvent('drop', ev);\r\n    }\r\n    /** @internal true if element matches the string/method accept option */\r\n    _canDrop(el) {\r\n        return el && (!this.accept || this.accept(el));\r\n    }\r\n    /** @internal */\r\n    _setupAccept() {\r\n        if (!this.option.accept)\r\n            return this;\r\n        if (typeof this.option.accept === 'string') {\r\n            this.accept = (el) => el.matches(this.option.accept);\r\n        }\r\n        else {\r\n            this.accept = this.option.accept;\r\n        }\r\n        return this;\r\n    }\r\n    /** @internal */\r\n    _ui(drag) {\r\n        return Object.assign({ draggable: drag.el }, drag.ui());\r\n    }\r\n}\r\nexports.DDDroppable = DDDroppable;\r\n//# sourceMappingURL=dd-droppable.js.map","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","\"use strict\";\r\n/**\r\n * dd-resizable-handle.ts 7.3.0\r\n * Copyright (c) 2021-2022 Alain Dumesny - see GridStack root license\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DDResizableHandle = void 0;\r\nconst dd_touch_1 = require(\"./dd-touch\");\r\nclass DDResizableHandle {\r\n    constructor(host, direction, option) {\r\n        /** @internal true after we've moved enough pixels to start a resize */\r\n        this.moving = false;\r\n        this.host = host;\r\n        this.dir = direction;\r\n        this.option = option;\r\n        // create var event binding so we can easily remove and still look like TS methods (unlike anonymous functions)\r\n        this._mouseDown = this._mouseDown.bind(this);\r\n        this._mouseMove = this._mouseMove.bind(this);\r\n        this._mouseUp = this._mouseUp.bind(this);\r\n        this._init();\r\n    }\r\n    /** @internal */\r\n    _init() {\r\n        const el = document.createElement('div');\r\n        el.classList.add('ui-resizable-handle');\r\n        el.classList.add(`${DDResizableHandle.prefix}${this.dir}`);\r\n        el.style.zIndex = '100';\r\n        el.style.userSelect = 'none';\r\n        this.el = el;\r\n        this.host.appendChild(this.el);\r\n        this.el.addEventListener('mousedown', this._mouseDown);\r\n        if (dd_touch_1.isTouch) {\r\n            this.el.addEventListener('touchstart', dd_touch_1.touchstart);\r\n            this.el.addEventListener('pointerdown', dd_touch_1.pointerdown);\r\n            // this.el.style.touchAction = 'none'; // not needed unlike pointerdown doc comment\r\n        }\r\n        return this;\r\n    }\r\n    /** call this when resize handle needs to be removed and cleaned up */\r\n    destroy() {\r\n        if (this.moving)\r\n            this._mouseUp(this.mouseDownEvent);\r\n        this.el.removeEventListener('mousedown', this._mouseDown);\r\n        if (dd_touch_1.isTouch) {\r\n            this.el.removeEventListener('touchstart', dd_touch_1.touchstart);\r\n            this.el.removeEventListener('pointerdown', dd_touch_1.pointerdown);\r\n        }\r\n        this.host.removeChild(this.el);\r\n        delete this.el;\r\n        delete this.host;\r\n        return this;\r\n    }\r\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 */\r\n    _mouseDown(e) {\r\n        this.mouseDownEvent = e;\r\n        document.addEventListener('mousemove', this._mouseMove, true); // capture, not bubble\r\n        document.addEventListener('mouseup', this._mouseUp, true);\r\n        if (dd_touch_1.isTouch) {\r\n            this.el.addEventListener('touchmove', dd_touch_1.touchmove);\r\n            this.el.addEventListener('touchend', dd_touch_1.touchend);\r\n        }\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n    }\r\n    /** @internal */\r\n    _mouseMove(e) {\r\n        let s = this.mouseDownEvent;\r\n        if (this.moving) {\r\n            this._triggerEvent('move', e);\r\n        }\r\n        else if (Math.abs(e.x - s.x) + Math.abs(e.y - s.y) > 2) {\r\n            // don't start unless we've moved at least 3 pixels\r\n            this.moving = true;\r\n            this._triggerEvent('start', this.mouseDownEvent);\r\n            this._triggerEvent('move', e);\r\n        }\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n    }\r\n    /** @internal */\r\n    _mouseUp(e) {\r\n        if (this.moving) {\r\n            this._triggerEvent('stop', e);\r\n        }\r\n        document.removeEventListener('mousemove', this._mouseMove, true);\r\n        document.removeEventListener('mouseup', this._mouseUp, true);\r\n        if (dd_touch_1.isTouch) {\r\n            this.el.removeEventListener('touchmove', dd_touch_1.touchmove);\r\n            this.el.removeEventListener('touchend', dd_touch_1.touchend);\r\n        }\r\n        delete this.moving;\r\n        delete this.mouseDownEvent;\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n    }\r\n    /** @internal */\r\n    _triggerEvent(name, event) {\r\n        if (this.option[name])\r\n            this.option[name](event);\r\n        return this;\r\n    }\r\n}\r\nexports.DDResizableHandle = DDResizableHandle;\r\n/** @internal */\r\nDDResizableHandle.prefix = 'ui-resizable-';\r\n//# sourceMappingURL=dd-resizable-handle.js.map","\"use strict\";\r\n/**\r\n * dd-resizable.ts 7.3.0\r\n * Copyright (c) 2021-2022 Alain Dumesny - see GridStack root license\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DDResizable = void 0;\r\nconst dd_resizable_handle_1 = require(\"./dd-resizable-handle\");\r\nconst dd_base_impl_1 = require(\"./dd-base-impl\");\r\nconst utils_1 = require(\"./utils\");\r\nconst dd_manager_1 = require(\"./dd-manager\");\r\nclass DDResizable extends dd_base_impl_1.DDBaseImplement {\r\n    constructor(el, opts = {}) {\r\n        super();\r\n        /** @internal */\r\n        this._ui = () => {\r\n            const containmentEl = this.el.parentElement;\r\n            const containmentRect = containmentEl.getBoundingClientRect();\r\n            const newRect = {\r\n                width: this.originalRect.width,\r\n                height: this.originalRect.height + this.scrolled,\r\n                left: this.originalRect.left,\r\n                top: this.originalRect.top - this.scrolled\r\n            };\r\n            const rect = this.temporalRect || newRect;\r\n            return {\r\n                position: {\r\n                    left: rect.left - containmentRect.left,\r\n                    top: rect.top - containmentRect.top\r\n                },\r\n                size: {\r\n                    width: rect.width,\r\n                    height: rect.height\r\n                }\r\n                /* Gridstack ONLY needs position set above... keep around in case.\r\n                element: [this.el], // The object representing the element to be resized\r\n                helper: [], // TODO: not support yet - The object representing the helper that's being resized\r\n                originalElement: [this.el],// we don't wrap here, so simplify as this.el //The object representing the original element before it is wrapped\r\n                originalPosition: { // The position represented as { left, top } before the resizable is resized\r\n                  left: this.originalRect.left - containmentRect.left,\r\n                  top: this.originalRect.top - containmentRect.top\r\n                },\r\n                originalSize: { // The size represented as { width, height } before the resizable is resized\r\n                  width: this.originalRect.width,\r\n                  height: this.originalRect.height\r\n                }\r\n                */\r\n            };\r\n        };\r\n        this.el = el;\r\n        this.option = opts;\r\n        // create var event binding so we can easily remove and still look like TS methods (unlike anonymous functions)\r\n        this._mouseOver = this._mouseOver.bind(this);\r\n        this._mouseOut = this._mouseOut.bind(this);\r\n        this.enable();\r\n        this._setupAutoHide(this.option.autoHide);\r\n        this._setupHandlers();\r\n    }\r\n    on(event, callback) {\r\n        super.on(event, callback);\r\n    }\r\n    off(event) {\r\n        super.off(event);\r\n    }\r\n    enable() {\r\n        super.enable();\r\n        this.el.classList.add('ui-resizable');\r\n        this.el.classList.remove('ui-resizable-disabled');\r\n        this._setupAutoHide(this.option.autoHide);\r\n    }\r\n    disable() {\r\n        super.disable();\r\n        this.el.classList.add('ui-resizable-disabled');\r\n        this.el.classList.remove('ui-resizable');\r\n        this._setupAutoHide(false);\r\n    }\r\n    destroy() {\r\n        this._removeHandlers();\r\n        this._setupAutoHide(false);\r\n        this.el.classList.remove('ui-resizable');\r\n        delete this.el;\r\n        super.destroy();\r\n    }\r\n    updateOption(opts) {\r\n        let updateHandles = (opts.handles && opts.handles !== this.option.handles);\r\n        let updateAutoHide = (opts.autoHide && opts.autoHide !== this.option.autoHide);\r\n        Object.keys(opts).forEach(key => this.option[key] = opts[key]);\r\n        if (updateHandles) {\r\n            this._removeHandlers();\r\n            this._setupHandlers();\r\n        }\r\n        if (updateAutoHide) {\r\n            this._setupAutoHide(this.option.autoHide);\r\n        }\r\n        return this;\r\n    }\r\n    /** @internal turns auto hide on/off */\r\n    _setupAutoHide(auto) {\r\n        if (auto) {\r\n            this.el.classList.add('ui-resizable-autohide');\r\n            // use mouseover and not mouseenter to get better performance and track for nested cases\r\n            this.el.addEventListener('mouseover', this._mouseOver);\r\n            this.el.addEventListener('mouseout', this._mouseOut);\r\n        }\r\n        else {\r\n            this.el.classList.remove('ui-resizable-autohide');\r\n            this.el.removeEventListener('mouseover', this._mouseOver);\r\n            this.el.removeEventListener('mouseout', this._mouseOut);\r\n            if (dd_manager_1.DDManager.overResizeElement === this) {\r\n                delete dd_manager_1.DDManager.overResizeElement;\r\n            }\r\n        }\r\n        return this;\r\n    }\r\n    /** @internal */\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    _mouseOver(e) {\r\n        // console.log(`${count++} pre-enter ${(this.el as GridItemHTMLElement).gridstackNode._id}`)\r\n        // already over a child, ignore. Ideally we just call e.stopPropagation() but see https://github.com/gridstack/gridstack.js/issues/2018\r\n        if (dd_manager_1.DDManager.overResizeElement || dd_manager_1.DDManager.dragElement)\r\n            return;\r\n        dd_manager_1.DDManager.overResizeElement = this;\r\n        // console.log(`${count++} enter ${(this.el as GridItemHTMLElement).gridstackNode._id}`)\r\n        this.el.classList.remove('ui-resizable-autohide');\r\n    }\r\n    /** @internal */\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    _mouseOut(e) {\r\n        // console.log(`${count++} pre-leave ${(this.el as GridItemHTMLElement).gridstackNode._id}`)\r\n        if (dd_manager_1.DDManager.overResizeElement !== this)\r\n            return;\r\n        delete dd_manager_1.DDManager.overResizeElement;\r\n        // console.log(`${count++} leave ${(this.el as GridItemHTMLElement).gridstackNode._id}`)\r\n        this.el.classList.add('ui-resizable-autohide');\r\n    }\r\n    /** @internal */\r\n    _setupHandlers() {\r\n        let handlerDirection = this.option.handles || 'e,s,se';\r\n        if (handlerDirection === 'all') {\r\n            handlerDirection = 'n,e,s,w,se,sw,ne,nw';\r\n        }\r\n        this.handlers = handlerDirection.split(',')\r\n            .map(dir => dir.trim())\r\n            .map(dir => new dd_resizable_handle_1.DDResizableHandle(this.el, dir, {\r\n            start: (event) => {\r\n                this._resizeStart(event);\r\n            },\r\n            stop: (event) => {\r\n                this._resizeStop(event);\r\n            },\r\n            move: (event) => {\r\n                this._resizing(event, dir);\r\n            }\r\n        }));\r\n        return this;\r\n    }\r\n    /** @internal */\r\n    _resizeStart(event) {\r\n        this.originalRect = this.el.getBoundingClientRect();\r\n        this.scrollEl = utils_1.Utils.getScrollElement(this.el);\r\n        this.scrollY = this.scrollEl.scrollTop;\r\n        this.scrolled = 0;\r\n        this.startEvent = event;\r\n        this._setupHelper();\r\n        this._applyChange();\r\n        const ev = utils_1.Utils.initEvent(event, { type: 'resizestart', target: this.el });\r\n        if (this.option.start) {\r\n            this.option.start(ev, this._ui());\r\n        }\r\n        this.el.classList.add('ui-resizable-resizing');\r\n        this.triggerEvent('resizestart', ev);\r\n        return this;\r\n    }\r\n    /** @internal */\r\n    _resizing(event, dir) {\r\n        this.scrolled = this.scrollEl.scrollTop - this.scrollY;\r\n        this.temporalRect = this._getChange(event, dir);\r\n        this._applyChange();\r\n        const ev = utils_1.Utils.initEvent(event, { type: 'resize', target: this.el });\r\n        if (this.option.resize) {\r\n            this.option.resize(ev, this._ui());\r\n        }\r\n        this.triggerEvent('resize', ev);\r\n        return this;\r\n    }\r\n    /** @internal */\r\n    _resizeStop(event) {\r\n        const ev = utils_1.Utils.initEvent(event, { type: 'resizestop', target: this.el });\r\n        if (this.option.stop) {\r\n            this.option.stop(ev); // Note: ui() not used by gridstack so don't pass\r\n        }\r\n        this.el.classList.remove('ui-resizable-resizing');\r\n        this.triggerEvent('resizestop', ev);\r\n        this._cleanHelper();\r\n        delete this.startEvent;\r\n        delete this.originalRect;\r\n        delete this.temporalRect;\r\n        delete this.scrollY;\r\n        delete this.scrolled;\r\n        return this;\r\n    }\r\n    /** @internal */\r\n    _setupHelper() {\r\n        this.elOriginStyleVal = DDResizable._originStyleProp.map(prop => this.el.style[prop]);\r\n        this.parentOriginStylePosition = this.el.parentElement.style.position;\r\n        if (window.getComputedStyle(this.el.parentElement).position.match(/static/)) {\r\n            this.el.parentElement.style.position = 'relative';\r\n        }\r\n        this.el.style.position = 'absolute';\r\n        this.el.style.opacity = '0.8';\r\n        return this;\r\n    }\r\n    /** @internal */\r\n    _cleanHelper() {\r\n        DDResizable._originStyleProp.forEach((prop, i) => {\r\n            this.el.style[prop] = this.elOriginStyleVal[i] || null;\r\n        });\r\n        this.el.parentElement.style.position = this.parentOriginStylePosition || null;\r\n        return this;\r\n    }\r\n    /** @internal */\r\n    _getChange(event, dir) {\r\n        const oEvent = this.startEvent;\r\n        const newRect = {\r\n            width: this.originalRect.width,\r\n            height: this.originalRect.height + this.scrolled,\r\n            left: this.originalRect.left,\r\n            top: this.originalRect.top - this.scrolled\r\n        };\r\n        const offsetX = event.clientX - oEvent.clientX;\r\n        const offsetY = event.clientY - oEvent.clientY;\r\n        if (dir.indexOf('e') > -1) {\r\n            newRect.width += offsetX;\r\n        }\r\n        else if (dir.indexOf('w') > -1) {\r\n            newRect.width -= offsetX;\r\n            newRect.left += offsetX;\r\n        }\r\n        if (dir.indexOf('s') > -1) {\r\n            newRect.height += offsetY;\r\n        }\r\n        else if (dir.indexOf('n') > -1) {\r\n            newRect.height -= offsetY;\r\n            newRect.top += offsetY;\r\n        }\r\n        const constrain = this._constrainSize(newRect.width, newRect.height);\r\n        if (Math.round(newRect.width) !== Math.round(constrain.width)) { // round to ignore slight round-off errors\r\n            if (dir.indexOf('w') > -1) {\r\n                newRect.left += newRect.width - constrain.width;\r\n            }\r\n            newRect.width = constrain.width;\r\n        }\r\n        if (Math.round(newRect.height) !== Math.round(constrain.height)) {\r\n            if (dir.indexOf('n') > -1) {\r\n                newRect.top += newRect.height - constrain.height;\r\n            }\r\n            newRect.height = constrain.height;\r\n        }\r\n        return newRect;\r\n    }\r\n    /** @internal constrain the size to the set min/max values */\r\n    _constrainSize(oWidth, oHeight) {\r\n        const maxWidth = this.option.maxWidth || Number.MAX_SAFE_INTEGER;\r\n        const minWidth = this.option.minWidth || oWidth;\r\n        const maxHeight = this.option.maxHeight || Number.MAX_SAFE_INTEGER;\r\n        const minHeight = this.option.minHeight || oHeight;\r\n        const width = Math.min(maxWidth, Math.max(minWidth, oWidth));\r\n        const height = Math.min(maxHeight, Math.max(minHeight, oHeight));\r\n        return { width, height };\r\n    }\r\n    /** @internal */\r\n    _applyChange() {\r\n        let containmentRect = { left: 0, top: 0, width: 0, height: 0 };\r\n        if (this.el.style.position === 'absolute') {\r\n            const containmentEl = this.el.parentElement;\r\n            const { left, top } = containmentEl.getBoundingClientRect();\r\n            containmentRect = { left, top, width: 0, height: 0 };\r\n        }\r\n        if (!this.temporalRect)\r\n            return this;\r\n        Object.keys(this.temporalRect).forEach(key => {\r\n            const value = this.temporalRect[key];\r\n            this.el.style[key] = value - containmentRect[key] + 'px';\r\n        });\r\n        return this;\r\n    }\r\n    /** @internal */\r\n    _removeHandlers() {\r\n        this.handlers.forEach(handle => handle.destroy());\r\n        delete this.handlers;\r\n        return this;\r\n    }\r\n}\r\nexports.DDResizable = DDResizable;\r\n/** @internal */\r\nDDResizable._originStyleProp = ['width', 'height', 'position', 'left', 'top', 'opacity', 'zIndex'];\r\n//# sourceMappingURL=dd-resizable.js.map","\"use strict\";\r\n/**\r\n * touch.ts 7.3.0\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.pointerleave = exports.pointerenter = exports.pointerdown = exports.touchend = exports.touchmove = exports.touchstart = exports.isTouch = void 0;\r\nconst dd_manager_1 = require(\"./dd-manager\");\r\n/**\r\n * Detect touch support - Windows Surface devices and other touch devices\r\n * should we use this instead ? (what we had for always showing resize handles)\r\n * /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)\r\n */\r\nexports.isTouch = typeof window !== 'undefined' && typeof document !== 'undefined' &&\r\n    ('ontouchstart' in document\r\n        || 'ontouchstart' in window\r\n        // || !!window.TouchEvent // true on Windows 10 Chrome desktop so don't use this\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        || (window.DocumentTouch && document instanceof window.DocumentTouch)\r\n        || navigator.maxTouchPoints > 0\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        || navigator.msMaxTouchPoints > 0);\r\n// interface TouchCoord {x: number, y: number};\r\nclass DDTouch {\r\n}\r\n/**\r\n* Get the x,y position of a touch event\r\n*/\r\n// function getTouchCoords(e: TouchEvent): TouchCoord {\r\n//   return {\r\n//     x: e.changedTouches[0].pageX,\r\n//     y: e.changedTouches[0].pageY\r\n//   };\r\n// }\r\n/**\r\n * Simulate a mouse event based on a corresponding touch event\r\n * @param {Object} e A touch event\r\n * @param {String} simulatedType The corresponding mouse event\r\n */\r\nfunction simulateMouseEvent(e, simulatedType) {\r\n    // Ignore multi-touch events\r\n    if (e.touches.length > 1)\r\n        return;\r\n    // Prevent \"Ignored attempt to cancel a touchmove event with cancelable=false\" errors\r\n    if (e.cancelable)\r\n        e.preventDefault();\r\n    const touch = e.changedTouches[0], simulatedEvent = document.createEvent('MouseEvents');\r\n    // Initialize the simulated mouse event using the touch event's coordinates\r\n    simulatedEvent.initMouseEvent(simulatedType, // type\r\n    true, // bubbles\r\n    true, // cancelable\r\n    window, // view\r\n    1, // detail\r\n    touch.screenX, // screenX\r\n    touch.screenY, // screenY\r\n    touch.clientX, // clientX\r\n    touch.clientY, // clientY\r\n    false, // ctrlKey\r\n    false, // altKey\r\n    false, // shiftKey\r\n    false, // metaKey\r\n    0, // button\r\n    null // relatedTarget\r\n    );\r\n    // Dispatch the simulated event to the target element\r\n    e.target.dispatchEvent(simulatedEvent);\r\n}\r\n/**\r\n * Simulate a mouse event based on a corresponding Pointer event\r\n * @param {Object} e A pointer event\r\n * @param {String} simulatedType The corresponding mouse event\r\n */\r\nfunction simulatePointerMouseEvent(e, simulatedType) {\r\n    // Prevent \"Ignored attempt to cancel a touchmove event with cancelable=false\" errors\r\n    if (e.cancelable)\r\n        e.preventDefault();\r\n    const simulatedEvent = document.createEvent('MouseEvents');\r\n    // Initialize the simulated mouse event using the touch event's coordinates\r\n    simulatedEvent.initMouseEvent(simulatedType, // type\r\n    true, // bubbles\r\n    true, // cancelable\r\n    window, // view\r\n    1, // detail\r\n    e.screenX, // screenX\r\n    e.screenY, // screenY\r\n    e.clientX, // clientX\r\n    e.clientY, // clientY\r\n    false, // ctrlKey\r\n    false, // altKey\r\n    false, // shiftKey\r\n    false, // metaKey\r\n    0, // button\r\n    null // relatedTarget\r\n    );\r\n    // Dispatch the simulated event to the target element\r\n    e.target.dispatchEvent(simulatedEvent);\r\n}\r\n/**\r\n * Handle the touchstart events\r\n * @param {Object} e The widget element's touchstart event\r\n */\r\nfunction touchstart(e) {\r\n    // Ignore the event if another widget is already being handled\r\n    if (DDTouch.touchHandled)\r\n        return;\r\n    DDTouch.touchHandled = true;\r\n    // Simulate the mouse events\r\n    // simulateMouseEvent(e, 'mouseover');\r\n    // simulateMouseEvent(e, 'mousemove');\r\n    simulateMouseEvent(e, 'mousedown');\r\n}\r\nexports.touchstart = touchstart;\r\n/**\r\n * Handle the touchmove events\r\n * @param {Object} e The document's touchmove event\r\n */\r\nfunction touchmove(e) {\r\n    // Ignore event if not handled by us\r\n    if (!DDTouch.touchHandled)\r\n        return;\r\n    simulateMouseEvent(e, 'mousemove');\r\n}\r\nexports.touchmove = touchmove;\r\n/**\r\n * Handle the touchend events\r\n * @param {Object} e The document's touchend event\r\n */\r\nfunction touchend(e) {\r\n    // Ignore event if not handled\r\n    if (!DDTouch.touchHandled)\r\n        return;\r\n    // cancel delayed leave event when we release on ourself which happens BEFORE we get this!\r\n    if (DDTouch.pointerLeaveTimeout) {\r\n        window.clearTimeout(DDTouch.pointerLeaveTimeout);\r\n        delete DDTouch.pointerLeaveTimeout;\r\n    }\r\n    const wasDragging = !!dd_manager_1.DDManager.dragElement;\r\n    // Simulate the mouseup event\r\n    simulateMouseEvent(e, 'mouseup');\r\n    // simulateMouseEvent(event, 'mouseout');\r\n    // If the touch interaction did not move, it should trigger a click\r\n    if (!wasDragging) {\r\n        simulateMouseEvent(e, 'click');\r\n    }\r\n    // Unset the flag to allow other widgets to inherit the touch event\r\n    DDTouch.touchHandled = false;\r\n}\r\nexports.touchend = touchend;\r\n/**\r\n * Note we don't get touchenter/touchleave (which are deprecated)\r\n * see https://stackoverflow.com/questions/27908339/js-touch-equivalent-for-mouseenter\r\n * so instead of PointerEvent to still get enter/leave and send the matching mouse event.\r\n */\r\nfunction pointerdown(e) {\r\n    // console.log(\"pointer down\")\r\n    e.target.releasePointerCapture(e.pointerId); // <- Important!\r\n}\r\nexports.pointerdown = pointerdown;\r\nfunction pointerenter(e) {\r\n    // ignore the initial one we get on pointerdown on ourself\r\n    if (!dd_manager_1.DDManager.dragElement) {\r\n        // console.log('pointerenter ignored');\r\n        return;\r\n    }\r\n    // console.log('pointerenter');\r\n    simulatePointerMouseEvent(e, 'mouseenter');\r\n}\r\nexports.pointerenter = pointerenter;\r\nfunction pointerleave(e) {\r\n    // ignore the leave on ourself we get before releasing the mouse over ourself\r\n    // by delaying sending the event and having the up event cancel us\r\n    if (!dd_manager_1.DDManager.dragElement) {\r\n        // console.log('pointerleave ignored');\r\n        return;\r\n    }\r\n    DDTouch.pointerLeaveTimeout = window.setTimeout(() => {\r\n        delete DDTouch.pointerLeaveTimeout;\r\n        // console.log('pointerleave delayed');\r\n        simulatePointerMouseEvent(e, 'mouseleave');\r\n    }, 10);\r\n}\r\nexports.pointerleave = pointerleave;\r\n//# sourceMappingURL=dd-touch.js.map","\"use strict\";\r\n/**\r\n * dd-base-impl.ts 7.3.0\r\n * Copyright (c) 2021-2022 Alain Dumesny - see GridStack root license\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DDBaseImplement = void 0;\r\nclass DDBaseImplement {\r\n    constructor() {\r\n        /** @internal */\r\n        this._eventRegister = {};\r\n    }\r\n    /** returns the enable state, but you have to call enable()/disable() to change (as other things need to happen) */\r\n    get disabled() { return this._disabled; }\r\n    on(event, callback) {\r\n        this._eventRegister[event] = callback;\r\n    }\r\n    off(event) {\r\n        delete this._eventRegister[event];\r\n    }\r\n    enable() {\r\n        this._disabled = false;\r\n    }\r\n    disable() {\r\n        this._disabled = true;\r\n    }\r\n    destroy() {\r\n        delete this._eventRegister;\r\n    }\r\n    triggerEvent(eventName, event) {\r\n        if (!this.disabled && this._eventRegister && this._eventRegister[eventName])\r\n            return this._eventRegister[eventName](event);\r\n    }\r\n}\r\nexports.DDBaseImplement = DDBaseImplement;\r\n//# sourceMappingURL=dd-base-impl.js.map","\"use strict\";\r\n/**\r\n * dd-elements.ts 7.3.0\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DDElement = void 0;\r\nconst dd_resizable_1 = require(\"./dd-resizable\");\r\nconst dd_draggable_1 = require(\"./dd-draggable\");\r\nconst dd_droppable_1 = require(\"./dd-droppable\");\r\nclass DDElement {\r\n    constructor(el) {\r\n        this.el = el;\r\n    }\r\n    static init(el) {\r\n        if (!el.ddElement) {\r\n            el.ddElement = new DDElement(el);\r\n        }\r\n        return el.ddElement;\r\n    }\r\n    on(eventName, callback) {\r\n        if (this.ddDraggable && ['drag', 'dragstart', 'dragstop'].indexOf(eventName) > -1) {\r\n            this.ddDraggable.on(eventName, callback);\r\n        }\r\n        else if (this.ddDroppable && ['drop', 'dropover', 'dropout'].indexOf(eventName) > -1) {\r\n            this.ddDroppable.on(eventName, callback);\r\n        }\r\n        else if (this.ddResizable && ['resizestart', 'resize', 'resizestop'].indexOf(eventName) > -1) {\r\n            this.ddResizable.on(eventName, callback);\r\n        }\r\n        return this;\r\n    }\r\n    off(eventName) {\r\n        if (this.ddDraggable && ['drag', 'dragstart', 'dragstop'].indexOf(eventName) > -1) {\r\n            this.ddDraggable.off(eventName);\r\n        }\r\n        else if (this.ddDroppable && ['drop', 'dropover', 'dropout'].indexOf(eventName) > -1) {\r\n            this.ddDroppable.off(eventName);\r\n        }\r\n        else if (this.ddResizable && ['resizestart', 'resize', 'resizestop'].indexOf(eventName) > -1) {\r\n            this.ddResizable.off(eventName);\r\n        }\r\n        return this;\r\n    }\r\n    setupDraggable(opts) {\r\n        if (!this.ddDraggable) {\r\n            this.ddDraggable = new dd_draggable_1.DDDraggable(this.el, opts);\r\n        }\r\n        else {\r\n            this.ddDraggable.updateOption(opts);\r\n        }\r\n        return this;\r\n    }\r\n    cleanDraggable() {\r\n        if (this.ddDraggable) {\r\n            this.ddDraggable.destroy();\r\n            delete this.ddDraggable;\r\n        }\r\n        return this;\r\n    }\r\n    setupResizable(opts) {\r\n        if (!this.ddResizable) {\r\n            this.ddResizable = new dd_resizable_1.DDResizable(this.el, opts);\r\n        }\r\n        else {\r\n            this.ddResizable.updateOption(opts);\r\n        }\r\n        return this;\r\n    }\r\n    cleanResizable() {\r\n        if (this.ddResizable) {\r\n            this.ddResizable.destroy();\r\n            delete this.ddResizable;\r\n        }\r\n        return this;\r\n    }\r\n    setupDroppable(opts) {\r\n        if (!this.ddDroppable) {\r\n            this.ddDroppable = new dd_droppable_1.DDDroppable(this.el, opts);\r\n        }\r\n        else {\r\n            this.ddDroppable.updateOption(opts);\r\n        }\r\n        return this;\r\n    }\r\n    cleanDroppable() {\r\n        if (this.ddDroppable) {\r\n            this.ddDroppable.destroy();\r\n            delete this.ddDroppable;\r\n        }\r\n        return this;\r\n    }\r\n}\r\nexports.DDElement = DDElement;\r\n//# sourceMappingURL=dd-element.js.map","\"use strict\";\r\n/**\r\n * dd-manager.ts 7.3.0\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DDManager = void 0;\r\n/**\r\n * globals that are shared across Drag & Drop instances\r\n */\r\nclass DDManager {\r\n}\r\nexports.DDManager = DDManager;\r\n//# sourceMappingURL=dd-manager.js.map"],"sourceRoot":""}