{"version":3,"file":"gridstack-all.js","mappings":"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","sources":["webpack://GridStack/webpack/universalModuleDefinition","webpack://GridStack/webpack/bootstrap","webpack://GridStack/webpack/runtime/define property getters","webpack://GridStack/webpack/runtime/hasOwnProperty shorthand","webpack://GridStack/./src/utils.ts","webpack://GridStack/./src/gridstack-engine.ts","webpack://GridStack/./src/types.ts","webpack://GridStack/./src/dd-manager.ts","webpack://GridStack/./src/dd-touch.ts","webpack://GridStack/./src/dd-resizable-handle.ts","webpack://GridStack/./src/dd-base-impl.ts","webpack://GridStack/./src/dd-resizable.ts","webpack://GridStack/./src/dd-draggable.ts","webpack://GridStack/./src/dd-droppable.ts","webpack://GridStack/./src/dd-element.ts","webpack://GridStack/./src/gridstack.ts","webpack://GridStack/./src/dd-gridstack.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"GridStack\"] = factory();\n\telse\n\t\troot[\"GridStack\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\r\n * utils.ts 10.2.0\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\n\r\nimport { GridStackElement, GridStackNode, GridStackOptions, numberOrString, GridStackPosition, GridStackWidget } from './types';\r\n\r\nexport interface HeightData {\r\n h: number;\r\n unit: string;\r\n}\r\n\r\nexport interface DragTransform {\r\n xScale: number;\r\n yScale: number;\r\n xOffset: number;\r\n yOffset: number;\r\n}\r\n\r\n/** checks for obsolete method names */\r\n// eslint-disable-next-line\r\nexport function obsolete(self, f, oldName: string, newName: string, rev: string): (...args: any[]) => any {\r\n let wrapper = (...args) => {\r\n console.warn('gridstack.js: Function `' + oldName + '` is deprecated in ' + rev + ' and has been replaced ' +\r\n 'with `' + newName + '`. It will be **removed** in a future release');\r\n return f.apply(self, args);\r\n }\r\n wrapper.prototype = f.prototype;\r\n return wrapper;\r\n}\r\n\r\n/** checks for obsolete grid options (can be used for any fields, but msg is about options) */\r\nexport function obsoleteOpts(opts: GridStackOptions, oldName: string, newName: string, rev: string): void {\r\n if (opts[oldName] !== undefined) {\r\n opts[newName] = opts[oldName];\r\n console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + ' and has been replaced with `' +\r\n newName + '`. It will be **removed** in a future release');\r\n }\r\n}\r\n\r\n/** checks for obsolete grid options which are gone */\r\nexport function obsoleteOptsDel(opts: GridStackOptions, oldName: string, rev: string, info: string): void {\r\n if (opts[oldName] !== undefined) {\r\n console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + info);\r\n }\r\n}\r\n\r\n/** checks for obsolete Jquery element attributes */\r\nexport function obsoleteAttr(el: HTMLElement, oldName: string, newName: string, rev: string): void {\r\n let oldAttr = el.getAttribute(oldName);\r\n if (oldAttr !== null) {\r\n el.setAttribute(newName, oldAttr);\r\n console.warn('gridstack.js: attribute `' + oldName + '`=' + oldAttr + ' is deprecated on this object in ' + rev + ' and has been replaced with `' +\r\n newName + '`. It will be **removed** in a future release');\r\n }\r\n}\r\n\r\n/**\r\n * Utility methods\r\n */\r\nexport class Utils {\r\n\r\n /** convert a potential selector into actual list of html elements. optional root which defaults to document (for shadow dom) */\r\n static getElements(els: GridStackElement, root: HTMLElement | Document = document): HTMLElement[] {\r\n if (typeof els === 'string') {\r\n const doc = ('getElementById' in root) ? root as Document : undefined;\r\n\r\n // Note: very common for people use to id='1,2,3' which is only legal as HTML5 id, but not CSS selectors\r\n // so if we start with a number, assume it's an id and just return that one item...\r\n // see https://github.com/gridstack/gridstack.js/issues/2234#issuecomment-1523796562\r\n if (doc && !isNaN(+els[0])) { // start with digit\r\n const el = doc.getElementById(els);\r\n return el ? [el] : [];\r\n }\r\n\r\n let list = root.querySelectorAll(els);\r\n if (!list.length && els[0] !== '.' && els[0] !== '#') {\r\n list = root.querySelectorAll('.' + els);\r\n if (!list.length) { list = root.querySelectorAll('#' + els) }\r\n }\r\n return Array.from(list) as HTMLElement[];\r\n }\r\n return [els];\r\n }\r\n\r\n /** convert a potential selector into actual single element. optional root which defaults to document (for shadow dom) */\r\n static getElement(els: GridStackElement, root: HTMLElement | Document = document): HTMLElement {\r\n if (typeof els === 'string') {\r\n const doc = ('getElementById' in root) ? root as Document : undefined;\r\n if (!els.length) return null;\r\n if (doc && els[0] === '#') {\r\n return doc.getElementById(els.substring(1));\r\n }\r\n if (els[0] === '#' || els[0] === '.' || els[0] === '[') {\r\n return root.querySelector(els);\r\n }\r\n\r\n // if we start with a digit, assume it's an id (error calling querySelector('#1')) as class are not valid CSS\r\n if (doc && !isNaN(+els[0])) { // start with digit\r\n return doc.getElementById(els);\r\n }\r\n\r\n // finally try string, then id, then class\r\n let el = root.querySelector(els);\r\n if (doc && !el) { el = doc.getElementById(els) }\r\n if (!el) { el = root.querySelector('.' + els) }\r\n return el as HTMLElement;\r\n }\r\n return els;\r\n }\r\n\r\n /** true if we should resize to content. strict=true when only 'sizeToContent:true' and not a number which lets user adjust */\r\n static shouldSizeToContent(n: GridStackNode | undefined, strict = false): boolean {\r\n return n?.grid && (strict ?\r\n (n.sizeToContent === true || (n.grid.opts.sizeToContent === true && n.sizeToContent === undefined)) :\r\n (!!n.sizeToContent || (n.grid.opts.sizeToContent && n.sizeToContent !== false)));\r\n }\r\n\r\n /** returns true if a and b overlap */\r\n static isIntercepted(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return !(a.y >= b.y + b.h || a.y + a.h <= b.y || a.x + a.w <= b.x || a.x >= b.x + b.w);\r\n }\r\n\r\n /** returns true if a and b touch edges or corners */\r\n static isTouching(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return Utils.isIntercepted(a, {x: b.x-0.5, y: b.y-0.5, w: b.w+1, h: b.h+1})\r\n }\r\n\r\n /** returns the area a and b overlap */\r\n static areaIntercept(a: GridStackPosition, b: GridStackPosition): number {\r\n let x0 = (a.x > b.x) ? a.x : b.x;\r\n let x1 = (a.x+a.w < b.x+b.w) ? a.x+a.w : b.x+b.w;\r\n if (x1 <= x0) return 0; // no overlap\r\n let y0 = (a.y > b.y) ? a.y : b.y;\r\n let y1 = (a.y+a.h < b.y+b.h) ? a.y+a.h : b.y+b.h;\r\n if (y1 <= y0) return 0; // no overlap\r\n return (x1-x0) * (y1-y0);\r\n }\r\n\r\n /** returns the area */\r\n static area(a: GridStackPosition): number {\r\n return a.w * a.h;\r\n }\r\n\r\n /**\r\n * Sorts array of nodes\r\n * @param nodes array to sort\r\n * @param dir 1 for ascending, -1 for descending (optional)\r\n **/\r\n static sort(nodes: GridStackNode[], dir: 1 | -1 = 1): GridStackNode[] {\r\n const und = 10000;\r\n return nodes.sort((a, b) => {\r\n let diffY = dir * ((a.y ?? und) - (b.y ?? und));\r\n if (diffY === 0) return dir * ((a.x ?? und) - (b.x ?? und));\r\n return diffY;\r\n });\r\n }\r\n\r\n /** find an item by id */\r\n static find(nodes: GridStackNode[], id: string): GridStackNode | undefined {\r\n return id ? nodes.find(n => n.id === id) : undefined;\r\n }\r\n\r\n /**\r\n * creates a style sheet with style id under given parent\r\n * @param id will set the 'gs-style-id' attribute to that id\r\n * @param parent to insert the stylesheet as first child,\r\n * if none supplied it will be appended to the document head instead.\r\n */\r\n static createStylesheet(id: string, parent?: HTMLElement, options?: { nonce?: string }): CSSStyleSheet {\r\n let style: HTMLStyleElement = document.createElement('style');\r\n const nonce = options?.nonce\r\n if (nonce) style.nonce = nonce\r\n style.setAttribute('type', 'text/css');\r\n style.setAttribute('gs-style-id', id);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if ((style as any).styleSheet) { // TODO: only CSSImportRule have that and different beast ??\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (style as any).styleSheet.cssText = '';\r\n } else {\r\n style.appendChild(document.createTextNode('')); // WebKit hack\r\n }\r\n if (!parent) {\r\n // default to head\r\n parent = document.getElementsByTagName('head')[0];\r\n parent.appendChild(style);\r\n } else {\r\n parent.insertBefore(style, parent.firstChild);\r\n }\r\n return style.sheet as CSSStyleSheet;\r\n }\r\n\r\n /** removed the given stylesheet id */\r\n static removeStylesheet(id: string, parent?: HTMLElement): void {\r\n const target = parent || document;\r\n let el = target.querySelector('STYLE[gs-style-id=' + id + ']');\r\n if (el && el.parentNode) el.remove();\r\n }\r\n\r\n /** inserts a CSS rule */\r\n static addCSSRule(sheet: CSSStyleSheet, selector: string, rules: string): void {\r\n if (typeof sheet.addRule === 'function') {\r\n sheet.addRule(selector, rules);\r\n } else if (typeof sheet.insertRule === 'function') {\r\n sheet.insertRule(`${selector}{${rules}}`);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n static toBool(v: unknown): boolean {\r\n if (typeof v === 'boolean') {\r\n return v;\r\n }\r\n if (typeof v === 'string') {\r\n v = v.toLowerCase();\r\n return !(v === '' || v === 'no' || v === 'false' || v === '0');\r\n }\r\n return Boolean(v);\r\n }\r\n\r\n static toNumber(value: null | string): number {\r\n return (value === null || value.length === 0) ? undefined : Number(value);\r\n }\r\n\r\n static parseHeight(val: numberOrString): HeightData {\r\n let h: number;\r\n let unit = 'px';\r\n if (typeof val === 'string') {\r\n if (val === 'auto' || val === '') h = 0;\r\n else {\r\n let match = val.match(/^(-[0-9]+\\.[0-9]+|[0-9]*\\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%|cm|mm)?$/);\r\n if (!match) {\r\n throw new Error(`Invalid height val = ${val}`);\r\n }\r\n unit = match[2] || 'px';\r\n h = parseFloat(match[1]);\r\n }\r\n } else {\r\n h = val;\r\n }\r\n return { h, unit };\r\n }\r\n\r\n /** copies unset fields in target to use the given default sources values */\r\n // eslint-disable-next-line\r\n static defaults(target, ...sources): {} {\r\n\r\n sources.forEach(source => {\r\n for (const key in source) {\r\n if (!source.hasOwnProperty(key)) return;\r\n if (target[key] === null || target[key] === undefined) {\r\n target[key] = source[key];\r\n } else if (typeof source[key] === 'object' && typeof target[key] === 'object') {\r\n // property is an object, recursively add it's field over... #1373\r\n this.defaults(target[key], source[key]);\r\n }\r\n }\r\n });\r\n\r\n return target;\r\n }\r\n\r\n /** given 2 objects return true if they have the same values. Checks for Object {} having same fields and values (just 1 level down) */\r\n static same(a: unknown, b: unknown): boolean {\r\n if (typeof a !== 'object') return a == b;\r\n if (typeof a !== typeof b) return false;\r\n // else we have object, check just 1 level deep for being same things...\r\n if (Object.keys(a).length !== Object.keys(b).length) return false;\r\n for (const key in a) {\r\n if (a[key] !== b[key]) return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** copies over b size & position (GridStackPosition), and optionally min/max as well */\r\n static copyPos(a: GridStackWidget, b: GridStackWidget, doMinMax = false): GridStackWidget {\r\n if (b.x !== undefined) a.x = b.x;\r\n if (b.y !== undefined) a.y = b.y;\r\n if (b.w !== undefined) a.w = b.w;\r\n if (b.h !== undefined) a.h = b.h;\r\n if (doMinMax) {\r\n if (b.minW) a.minW = b.minW;\r\n if (b.minH) a.minH = b.minH;\r\n if (b.maxW) a.maxW = b.maxW;\r\n if (b.maxH) a.maxH = b.maxH;\r\n }\r\n return a;\r\n }\r\n\r\n /** true if a and b has same size & position */\r\n static samePos(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return a && b && a.x === b.x && a.y === b.y && (a.w || 1) === (b.w || 1) && (a.h || 1) === (b.h || 1);\r\n }\r\n\r\n /** given a node, makes sure it's min/max are valid */\r\n static sanitizeMinMax(node: GridStackNode) {\r\n // remove 0, undefine, null\r\n if (!node.minW) { delete node.minW; }\r\n if (!node.minH) { delete node.minH; }\r\n if (!node.maxW) { delete node.maxW; }\r\n if (!node.maxH) { delete node.maxH; }\r\n }\r\n\r\n /** removes field from the first object if same as the second objects (like diffing) and internal '_' for saving */\r\n static removeInternalAndSame(a: unknown, b: unknown):void {\r\n if (typeof a !== 'object' || typeof b !== 'object') return;\r\n for (let key in a) {\r\n const aVal = a[key];\r\n const bVal = b[key];\r\n if (key[0] === '_' || aVal === bVal) {\r\n delete a[key]\r\n } else if (aVal && typeof aVal === 'object' && bVal !== undefined) {\r\n Utils.removeInternalAndSame(aVal, bVal);\r\n if (!Object.keys(aVal).length) { delete a[key] }\r\n }\r\n }\r\n }\r\n\r\n /** removes internal fields '_' and default values for saving */\r\n static removeInternalForSave(n: GridStackNode, removeEl = true): void {\r\n for (let key in n) { if (key[0] === '_' || n[key] === null || n[key] === undefined ) delete n[key]; }\r\n delete n.grid;\r\n if (removeEl) delete n.el;\r\n // delete default values (will be re-created on read)\r\n if (!n.autoPosition) delete n.autoPosition;\r\n if (!n.noResize) delete n.noResize;\r\n if (!n.noMove) delete n.noMove;\r\n if (!n.locked) delete n.locked;\r\n if (n.w === 1 || n.w === n.minW) delete n.w;\r\n if (n.h === 1 || n.h === n.minH) delete n.h;\r\n }\r\n\r\n /** return the closest parent (or itself) matching the given class */\r\n // static closestUpByClass(el: HTMLElement, name: string): HTMLElement {\r\n // while (el) {\r\n // if (el.classList.contains(name)) return el;\r\n // el = el.parentElement\r\n // }\r\n // return null;\r\n // }\r\n\r\n /** delay calling the given function for given delay, preventing new calls from happening while waiting */\r\n static throttle(func: () => void, delay: number): () => void {\r\n let isWaiting = false;\r\n return (...args) => {\r\n if (!isWaiting) {\r\n isWaiting = true;\r\n setTimeout(() => { func(...args); isWaiting = false; }, delay);\r\n }\r\n }\r\n }\r\n\r\n static removePositioningStyles(el: HTMLElement): void {\r\n let style = el.style;\r\n if (style.position) {\r\n style.removeProperty('position');\r\n }\r\n if (style.left) {\r\n style.removeProperty('left');\r\n }\r\n if (style.top) {\r\n style.removeProperty('top');\r\n }\r\n if (style.width) {\r\n style.removeProperty('width');\r\n }\r\n if (style.height) {\r\n style.removeProperty('height');\r\n }\r\n }\r\n\r\n /** @internal returns the passed element if scrollable, else the closest parent that will, up to the entire document scrolling element */\r\n static getScrollElement(el?: HTMLElement): HTMLElement {\r\n if (!el) return document.scrollingElement as HTMLElement || document.documentElement; // IE support\r\n const style = getComputedStyle(el);\r\n const overflowRegex = /(auto|scroll)/;\r\n\r\n if (overflowRegex.test(style.overflow + style.overflowY)) {\r\n return el;\r\n } else {\r\n return this.getScrollElement(el.parentElement);\r\n }\r\n }\r\n\r\n /** @internal */\r\n static updateScrollPosition(el: HTMLElement, position: {top: number}, distance: number): void {\r\n // is widget in view?\r\n let rect = el.getBoundingClientRect();\r\n let innerHeightOrClientHeight = (window.innerHeight || document.documentElement.clientHeight);\r\n if (rect.top < 0 ||\r\n rect.bottom > innerHeightOrClientHeight\r\n ) {\r\n // set scrollTop of first parent that scrolls\r\n // if parent is larger than el, set as low as possible\r\n // to get entire widget on screen\r\n let offsetDiffDown = rect.bottom - innerHeightOrClientHeight;\r\n let offsetDiffUp = rect.top;\r\n let scrollEl = this.getScrollElement(el);\r\n if (scrollEl !== null) {\r\n let prevScroll = scrollEl.scrollTop;\r\n if (rect.top < 0 && distance < 0) {\r\n // moving up\r\n if (el.offsetHeight > innerHeightOrClientHeight) {\r\n scrollEl.scrollTop += distance;\r\n } else {\r\n scrollEl.scrollTop += Math.abs(offsetDiffUp) > Math.abs(distance) ? distance : offsetDiffUp;\r\n }\r\n } else if (distance > 0) {\r\n // moving down\r\n if (el.offsetHeight > innerHeightOrClientHeight) {\r\n scrollEl.scrollTop += distance;\r\n } else {\r\n scrollEl.scrollTop += offsetDiffDown > distance ? distance : offsetDiffDown;\r\n }\r\n }\r\n // move widget y by amount scrolled\r\n position.top += scrollEl.scrollTop - prevScroll;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal Function used to scroll the page.\r\n *\r\n * @param event `MouseEvent` that triggers the resize\r\n * @param el `HTMLElement` that's being resized\r\n * @param distance Distance from the V edges to start scrolling\r\n */\r\n static updateScrollResize(event: MouseEvent, el: HTMLElement, distance: number): void {\r\n const scrollEl = this.getScrollElement(el);\r\n const height = scrollEl.clientHeight;\r\n // #1727 event.clientY is relative to viewport, so must compare this against position of scrollEl getBoundingClientRect().top\r\n // #1745 Special situation if scrollEl is document 'html': here browser spec states that\r\n // clientHeight is height of viewport, but getBoundingClientRect() is rectangle of html element;\r\n // this discrepancy arises because in reality scrollbar is attached to viewport, not html element itself.\r\n const offsetTop = (scrollEl === this.getScrollElement()) ? 0 : scrollEl.getBoundingClientRect().top;\r\n const pointerPosY = event.clientY - offsetTop;\r\n const top = pointerPosY < distance;\r\n const bottom = pointerPosY > height - distance;\r\n\r\n if (top) {\r\n // This also can be done with a timeout to keep scrolling while the mouse is\r\n // in the scrolling zone. (will have smoother behavior)\r\n scrollEl.scrollBy({ behavior: 'smooth', top: pointerPosY - distance});\r\n } else if (bottom) {\r\n scrollEl.scrollBy({ behavior: 'smooth', top: distance - (height - pointerPosY)});\r\n }\r\n }\r\n\r\n /** single level clone, returning a new object with same top fields. This will share sub objects and arrays */\r\n static clone(obj: T): T {\r\n if (obj === null || obj === undefined || typeof(obj) !== 'object') {\r\n return obj;\r\n }\r\n // return Object.assign({}, obj);\r\n if (obj instanceof Array) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return [...obj] as any;\r\n }\r\n return {...obj};\r\n }\r\n\r\n /**\r\n * Recursive clone version that returns a full copy, checking for nested objects and arrays ONLY.\r\n * Note: this will use as-is any key starting with double __ (and not copy inside) some lib have circular dependencies.\r\n */\r\n static cloneDeep(obj: T): T {\r\n // list of fields we will skip during cloneDeep (nested objects, other internal)\r\n const skipFields = ['parentGrid', 'el', 'grid', 'subGrid', 'engine'];\r\n // return JSON.parse(JSON.stringify(obj)); // doesn't work with date format ?\r\n const ret = Utils.clone(obj);\r\n for (const key in ret) {\r\n // NOTE: we don't support function/circular dependencies so skip those properties for now...\r\n if (ret.hasOwnProperty(key) && typeof(ret[key]) === 'object' && key.substring(0, 2) !== '__' && !skipFields.find(k => k === key)) {\r\n ret[key] = Utils.cloneDeep(obj[key]);\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n /** deep clone the given HTML node, removing teh unique id field */\r\n public static cloneNode(el: HTMLElement): HTMLElement {\r\n const node = el.cloneNode(true) as HTMLElement;\r\n node.removeAttribute('id');\r\n return node;\r\n }\r\n\r\n public static appendTo(el: HTMLElement, parent: string | HTMLElement): void {\r\n let parentNode: HTMLElement;\r\n if (typeof parent === 'string') {\r\n parentNode = Utils.getElement(parent);\r\n } else {\r\n parentNode = parent;\r\n }\r\n if (parentNode) {\r\n parentNode.appendChild(el);\r\n }\r\n }\r\n\r\n // public static setPositionRelative(el: HTMLElement): void {\r\n // if (!(/^(?:r|a|f)/).test(getComputedStyle(el).position)) {\r\n // el.style.position = \"relative\";\r\n // }\r\n // }\r\n\r\n public static addElStyles(el: HTMLElement, styles: { [prop: string]: string | string[] }): void {\r\n if (styles instanceof Object) {\r\n for (const s in styles) {\r\n if (styles.hasOwnProperty(s)) {\r\n if (Array.isArray(styles[s])) {\r\n // support fallback value\r\n (styles[s] as string[]).forEach(val => {\r\n el.style[s] = val;\r\n });\r\n } else {\r\n el.style[s] = styles[s];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public static initEvent(e: DragEvent | MouseEvent, info: { type: string; target?: EventTarget }): T {\r\n const evt = { type: info.type };\r\n const obj = {\r\n button: 0,\r\n which: 0,\r\n buttons: 1,\r\n bubbles: true,\r\n cancelable: true,\r\n target: info.target ? info.target : e.target\r\n };\r\n // don't check for `instanceof DragEvent` as Safari use MouseEvent #1540\r\n if ((e as DragEvent).dataTransfer) {\r\n evt['dataTransfer'] = (e as DragEvent).dataTransfer; // workaround 'readonly' field.\r\n }\r\n ['altKey','ctrlKey','metaKey','shiftKey'].forEach(p => evt[p] = e[p]); // keys\r\n ['pageX','pageY','clientX','clientY','screenX','screenY'].forEach(p => evt[p] = e[p]); // point info\r\n return {...evt, ...obj} as unknown as T;\r\n }\r\n\r\n /** copies the MouseEvent properties and sends it as another event to the given target */\r\n public static simulateMouseEvent(e: MouseEvent, simulatedType: string, target?: EventTarget): void {\r\n const simulatedEvent = document.createEvent('MouseEvents');\r\n simulatedEvent.initMouseEvent(\r\n 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 e.ctrlKey, // ctrlKey\r\n e.altKey, // altKey\r\n e.shiftKey, // shiftKey\r\n e.metaKey, // metaKey\r\n 0, // button\r\n e.target // relatedTarget\r\n );\r\n (target || e.target).dispatchEvent(simulatedEvent);\r\n }\r\n\r\n /**\r\n * defines an element that is used to get the offset and scale from grid transforms\r\n * returns the scale and offsets from said element\r\n */\r\n public static getValuesFromTransformedElement(parent: HTMLElement): DragTransform {\r\n const transformReference = document.createElement('div');\r\n Utils.addElStyles(transformReference, {\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(transformReference);\r\n const transformValues = transformReference.getBoundingClientRect();\r\n parent.removeChild(transformReference);\r\n transformReference.remove();\r\n return {\r\n xScale: 1 / transformValues.width,\r\n yScale: 1 / transformValues.height,\r\n xOffset: transformValues.left,\r\n yOffset: transformValues.top,\r\n }\r\n }\r\n\r\n /** swap the given object 2 field values */\r\n public static swap(o: unknown, a: string, b: string): void { const tmp = o[a]; o[a] = o[b]; o[b] = tmp; }\r\n\r\n /** returns true if event is inside the given element rectangle */\r\n // Note: Safari Mac has null event.relatedTarget which causes #1684 so check if DragEvent is inside the coordinates instead\r\n // this.el.contains(event.relatedTarget as HTMLElement)\r\n // public static inside(e: MouseEvent, el: HTMLElement): boolean {\r\n // // srcElement, toElement, target: all set to placeholder when leaving simple grid, so we can't use that (Chrome)\r\n // let target: HTMLElement = e.relatedTarget || (e as any).fromElement;\r\n // if (!target) {\r\n // const { bottom, left, right, top } = el.getBoundingClientRect();\r\n // return (e.x < right && e.x > left && e.y < bottom && e.y > top);\r\n // }\r\n // return el.contains(target);\r\n // }\r\n}\r\n","/**\n * gridstack-engine.ts 10.2.0\n * Copyright (c) 2021-2022 Alain Dumesny - see GridStack root license\n */\n\nimport { Utils } from './utils';\nimport { GridStackNode, ColumnOptions, GridStackPosition, GridStackMoveOpts, SaveFcn, CompactOptions } from './types';\n\n/** callback to update the DOM attributes since this class is generic (no HTML or other info) for items that changed - see _notify() */\ntype OnChangeCB = (nodes: GridStackNode[]) => void;\n\n/** options used during creation - similar to GridStackOptions */\nexport interface GridStackEngineOptions {\n column?: number;\n maxRow?: number;\n float?: boolean;\n nodes?: GridStackNode[];\n onChange?: OnChangeCB;\n}\n\n/**\n * Defines the GridStack engine that does most no DOM grid manipulation.\n * See GridStack methods and vars for descriptions.\n *\n * NOTE: values should not be modified directly - call the main GridStack API instead\n */\nexport class GridStackEngine {\n public column: number;\n public maxRow: number;\n public nodes: GridStackNode[];\n public addedNodes: GridStackNode[] = [];\n public removedNodes: GridStackNode[] = [];\n public batchMode: boolean;\n /** @internal callback to update the DOM attributes */\n protected onChange: OnChangeCB;\n /** @internal */\n protected _float: boolean;\n /** @internal */\n protected _prevFloat: boolean;\n /** @internal cached layouts of difference column count so we can restore back (eg 12 -> 1 -> 12) */\n protected _layouts?: GridStackNode[][]; // maps column # to array of values nodes\n /** @internal true while we are resizing widgets during column resize to skip certain parts */\n protected _inColumnResize?: boolean;\n /** @internal true if we have some items locked */\n protected _hasLocked: boolean;\n /** @internal unique global internal _id counter */\n public static _idSeq = 0;\n\n public constructor(opts: GridStackEngineOptions = {}) {\n this.column = opts.column || 12;\n this.maxRow = opts.maxRow;\n this._float = opts.float;\n this.nodes = opts.nodes || [];\n this.onChange = opts.onChange;\n }\n\n public batchUpdate(flag = true, doPack = true): GridStackEngine {\n if (!!this.batchMode === flag) return this;\n this.batchMode = flag;\n if (flag) {\n this._prevFloat = this._float;\n this._float = true; // let things go anywhere for now... will restore and possibly reposition later\n this.cleanNodes();\n this.saveInitial(); // since begin update (which is called multiple times) won't do this\n } else {\n this._float = this._prevFloat;\n delete this._prevFloat;\n if (doPack) this._packNodes();\n this._notify();\n }\n return this;\n }\n\n // use entire row for hitting area (will use bottom reverse sorted first) if we not actively moving DOWN and didn't already skip\n protected _useEntireRowArea(node: GridStackNode, nn: GridStackPosition): boolean {\n return (!this.float || this.batchMode && !this._prevFloat) && !this._hasLocked && (!node._moving || node._skipDown || nn.y <= node.y);\n }\n\n /** @internal fix collision on given 'node', going to given new location 'nn', with optional 'collide' node already found.\n * return true if we moved. */\n protected _fixCollisions(node: GridStackNode, nn = node, collide?: GridStackNode, opt: GridStackMoveOpts = {}): boolean {\n this.sortNodes(-1); // from last to first, so recursive collision move items in the right order\n\n collide = collide || this.collide(node, nn); // REAL area collide for swap and skip if none...\n if (!collide) return false;\n\n // swap check: if we're actively moving in gravity mode, see if we collide with an object the same size\n if (node._moving && !opt.nested && !this.float) {\n if (this.swap(node, collide)) return true;\n }\n\n // during while() collisions MAKE SURE to check entire row so larger items don't leap frog small ones (push them all down starting last in grid)\n let area = nn;\n if (this._useEntireRowArea(node, nn)) {\n area = {x: 0, w: this.column, y: nn.y, h: nn.h};\n collide = this.collide(node, area, opt.skip); // force new hit\n }\n\n let didMove = false;\n let newOpt: GridStackMoveOpts = {nested: true, pack: false};\n while (collide = collide || this.collide(node, area, opt.skip)) { // could collide with more than 1 item... so repeat for each\n let moved: boolean;\n // if colliding with a locked item OR moving down with top gravity (and collide could move up) -> skip past the collide,\n // but remember that skip down so we only do this once (and push others otherwise).\n if (collide.locked || node._moving && !node._skipDown && nn.y > node.y && !this.float &&\n // can take space we had, or before where we're going\n (!this.collide(collide, {...collide, y: node.y}, node) || !this.collide(collide, {...collide, y: nn.y - collide.h}, node))) {\n node._skipDown = (node._skipDown || nn.y > node.y);\n moved = this.moveNode(node, {...nn, y: collide.y + collide.h, ...newOpt});\n if (collide.locked && moved) {\n Utils.copyPos(nn, node); // moving after lock become our new desired location\n } else if (!collide.locked && moved && opt.pack) {\n // we moved after and will pack: do it now and keep the original drop location, but past the old collide to see what else we might push way\n this._packNodes();\n nn.y = collide.y + collide.h;\n Utils.copyPos(node, nn);\n }\n didMove = didMove || moved;\n } else {\n // move collide down *after* where we will be, ignoring where we are now (don't collide with us)\n moved = this.moveNode(collide, {...collide, y: nn.y + nn.h, skip: node, ...newOpt});\n }\n if (!moved) { return didMove; } // break inf loop if we couldn't move after all (ex: maxRow, fixed)\n collide = undefined;\n }\n return didMove;\n }\n\n /** return the nodes that intercept the given node. Optionally a different area can be used, as well as a second node to skip */\n public collide(skip: GridStackNode, area = skip, skip2?: GridStackNode): GridStackNode | undefined {\n const skipId = skip._id;\n const skip2Id = skip2?._id;\n return this.nodes.find(n => n._id !== skipId && n._id !== skip2Id && Utils.isIntercepted(n, area));\n }\n public collideAll(skip: GridStackNode, area = skip, skip2?: GridStackNode): GridStackNode[] {\n const skipId = skip._id;\n const skip2Id = skip2?._id;\n return this.nodes.filter(n => n._id !== skipId && n._id !== skip2Id && Utils.isIntercepted(n, area));\n }\n\n /** does a pixel coverage collision based on where we started, returning the node that has the most coverage that is >50% mid line */\n protected directionCollideCoverage(node: GridStackNode, o: GridStackMoveOpts, collides: GridStackNode[]): GridStackNode | undefined {\n if (!o.rect || !node._rect) return;\n let r0 = node._rect; // where started\n let r = {...o.rect}; // where we are\n\n // update dragged rect to show where it's coming from (above or below, etc...)\n if (r.y > r0.y) {\n r.h += r.y - r0.y;\n r.y = r0.y;\n } else {\n r.h += r0.y - r.y;\n }\n if (r.x > r0.x) {\n r.w += r.x - r0.x;\n r.x = r0.x;\n } else {\n r.w += r0.x - r.x;\n }\n\n let collide: GridStackNode;\n let overMax = 0.5; // need >50%\n for (let n of collides) {\n if (n.locked || !n._rect) {\n break;\n }\n let r2 = n._rect; // overlapping target\n let yOver = Number.MAX_VALUE, xOver = Number.MAX_VALUE;\n // depending on which side we started from, compute the overlap % of coverage\n // (ex: from above/below we only compute the max horizontal line coverage)\n if (r0.y < r2.y) { // from above\n yOver = ((r.y + r.h) - r2.y) / r2.h;\n } else if (r0.y + r0.h > r2.y + r2.h) { // from below\n yOver = ((r2.y + r2.h) - r.y) / r2.h;\n }\n if (r0.x < r2.x) { // from the left\n xOver = ((r.x + r.w) - r2.x) / r2.w;\n } else if (r0.x + r0.w > r2.x + r2.w) { // from the right\n xOver = ((r2.x + r2.w) - r.x) / r2.w;\n }\n let over = Math.min(xOver, yOver);\n if (over > overMax) {\n overMax = over;\n collide = n;\n }\n }\n o.collide = collide; // save it so we don't have to find it again\n return collide;\n }\n\n /** does a pixel coverage returning the node that has the most coverage by area */\n /*\n protected collideCoverage(r: GridStackPosition, collides: GridStackNode[]): {collide: GridStackNode, over: number} {\n let collide: GridStackNode;\n let overMax = 0;\n collides.forEach(n => {\n if (n.locked || !n._rect) return;\n let over = Utils.areaIntercept(r, n._rect);\n if (over > overMax) {\n overMax = over;\n collide = n;\n }\n });\n return {collide, over: overMax};\n }\n */\n\n /** called to cache the nodes pixel rectangles used for collision detection during drag */\n public cacheRects(w: number, h: number, top: number, right: number, bottom: number, left: number): GridStackEngine\n {\n this.nodes.forEach(n =>\n n._rect = {\n y: n.y * h + top,\n x: n.x * w + left,\n w: n.w * w - left - right,\n h: n.h * h - top - bottom\n }\n );\n return this;\n }\n\n /** called to possibly swap between 2 nodes (same size or column, not locked, touching), returning true if successful */\n public swap(a: GridStackNode, b: GridStackNode): boolean | undefined {\n if (!b || b.locked || !a || a.locked) return false;\n\n function _doSwap(): true { // assumes a is before b IFF they have different height (put after rather than exact swap)\n let x = b.x, y = b.y;\n b.x = a.x; b.y = a.y; // b -> a position\n if (a.h != b.h) {\n a.x = x; a.y = b.y + b.h; // a -> goes after b\n } else if (a.w != b.w) {\n a.x = b.x + b.w; a.y = y; // a -> goes after b\n } else {\n a.x = x; a.y = y; // a -> old b position\n }\n a._dirty = b._dirty = true;\n return true;\n }\n let touching: boolean; // remember if we called it (vs undefined)\n\n // same size and same row or column, and touching\n if (a.w === b.w && a.h === b.h && (a.x === b.x || a.y === b.y) && (touching = Utils.isTouching(a, b)))\n return _doSwap();\n if (touching === false) return; // IFF ran test and fail, bail out\n\n // check for taking same columns (but different height) and touching\n if (a.w === b.w && a.x === b.x && (touching || (touching = Utils.isTouching(a, b)))) {\n if (b.y < a.y) { let t = a; a = b; b = t; } // swap a <-> b vars so a is first\n return _doSwap();\n }\n if (touching === false) return;\n\n // check if taking same row (but different width) and touching\n if (a.h === b.h && a.y === b.y && (touching || (touching = Utils.isTouching(a, b)))) {\n if (b.x < a.x) { let t = a; a = b; b = t; } // swap a <-> b vars so a is first\n return _doSwap();\n }\n return false;\n }\n\n public isAreaEmpty(x: number, y: number, w: number, h: number): boolean {\n let nn: GridStackNode = {x: x || 0, y: y || 0, w: w || 1, h: h || 1};\n return !this.collide(nn);\n }\n\n /** re-layout grid items to reclaim any empty space - optionally keeping the sort order exactly the same ('list' mode) vs truly finding an empty spaces */\n public compact(layout: CompactOptions = 'compact', doSort = true): GridStackEngine {\n if (this.nodes.length === 0) return this;\n if (doSort) this.sortNodes();\n const wasBatch = this.batchMode;\n if (!wasBatch) this.batchUpdate();\n const wasColumnResize = this._inColumnResize;\n if (!wasColumnResize) this._inColumnResize = true; // faster addNode()\n let copyNodes = this.nodes;\n this.nodes = []; // pretend we have no nodes to conflict layout to start with...\n copyNodes.forEach((n, index, list) => {\n let after: GridStackNode;\n if (!n.locked) {\n n.autoPosition = true;\n if (layout === 'list' && index) after = list[index - 1];\n }\n this.addNode(n, false, after); // 'false' for add event trigger\n });\n if (!wasColumnResize) delete this._inColumnResize;\n if (!wasBatch) this.batchUpdate(false);\n return this;\n }\n\n /** enable/disable floating widgets (default: `false`) See [example](http://gridstackjs.com/demo/float.html) */\n public set float(val: boolean) {\n if (this._float === val) return;\n this._float = val || false;\n if (!val) {\n this._packNodes()._notify();\n }\n }\n\n /** float getter method */\n public get float(): boolean { return this._float || false; }\n\n /** sort the nodes array from first to last, or reverse. Called during collision/placement to force an order */\n public sortNodes(dir: 1 | -1 = 1): GridStackEngine {\n this.nodes = Utils.sort(this.nodes, dir);\n return this;\n }\n\n /** @internal called to top gravity pack the items back OR revert back to original Y positions when floating */\n protected _packNodes(): GridStackEngine {\n if (this.batchMode) { return this; }\n this.sortNodes(); // first to last\n\n if (this.float) {\n // restore original Y pos\n this.nodes.forEach(n => {\n if (n._updating || n._orig === undefined || n.y === n._orig.y) return;\n let newY = n.y;\n while (newY > n._orig.y) {\n --newY;\n let collide = this.collide(n, {x: n.x, y: newY, w: n.w, h: n.h});\n if (!collide) {\n n._dirty = true;\n n.y = newY;\n }\n }\n });\n } else {\n // top gravity pack\n this.nodes.forEach((n, i) => {\n if (n.locked) return;\n while (n.y > 0) {\n let newY = i === 0 ? 0 : n.y - 1;\n let canBeMoved = i === 0 || !this.collide(n, {x: n.x, y: newY, w: n.w, h: n.h});\n if (!canBeMoved) break;\n // Note: must be dirty (from last position) for GridStack::OnChange CB to update positions\n // and move items back. The user 'change' CB should detect changes from the original\n // starting position instead.\n n._dirty = (n.y !== newY);\n n.y = newY;\n }\n });\n }\n return this;\n }\n\n /**\n * given a random node, makes sure it's coordinates/values are valid in the current grid\n * @param node to adjust\n * @param resizing if out of bound, resize down or move into the grid to fit ?\n */\n public prepareNode(node: GridStackNode, resizing?: boolean): GridStackNode {\n node._id = node._id ?? GridStackEngine._idSeq++;\n\n // if we're missing position, have the grid position us automatically (before we set them to 0,0)\n if (node.x === undefined || node.y === undefined || node.x === null || node.y === null) {\n node.autoPosition = true;\n }\n\n // assign defaults for missing required fields\n let defaults: GridStackNode = { x: 0, y: 0, w: 1, h: 1};\n Utils.defaults(node, defaults);\n\n if (!node.autoPosition) { delete node.autoPosition; }\n if (!node.noResize) { delete node.noResize; }\n if (!node.noMove) { delete node.noMove; }\n Utils.sanitizeMinMax(node);\n\n // check for NaN (in case messed up strings were passed. can't do parseInt() || defaults.x above as 0 is valid #)\n if (typeof node.x == 'string') { node.x = Number(node.x); }\n if (typeof node.y == 'string') { node.y = Number(node.y); }\n if (typeof node.w == 'string') { node.w = Number(node.w); }\n if (typeof node.h == 'string') { node.h = Number(node.h); }\n if (isNaN(node.x)) { node.x = defaults.x; node.autoPosition = true; }\n if (isNaN(node.y)) { node.y = defaults.y; node.autoPosition = true; }\n if (isNaN(node.w)) { node.w = defaults.w; }\n if (isNaN(node.h)) { node.h = defaults.h; }\n\n this.nodeBoundFix(node, resizing);\n return node;\n }\n\n /** part2 of preparing a node to fit inside our grid - checks for x,y,w from grid dimensions */\n public nodeBoundFix(node: GridStackNode, resizing?: boolean): GridStackEngine {\n\n let before = node._orig || Utils.copyPos({}, node);\n\n if (node.maxW) { node.w = Math.min(node.w, node.maxW); }\n if (node.maxH) { node.h = Math.min(node.h, node.maxH); }\n if (node.minW && node.minW <= this.column) { node.w = Math.max(node.w, node.minW); }\n if (node.minH) { node.h = Math.max(node.h, node.minH); }\n\n // if user loaded a larger than allowed widget for current # of columns,\n // remember it's position & width so we can restore back (1 -> 12 column) #1655 #1985\n // IFF we're not in the middle of column resizing!\n const saveOrig = (node.x || 0) + (node.w || 1) > this.column;\n if (saveOrig && this.column < 12 && !this._inColumnResize && node._id && this.findCacheLayout(node, 12) === -1) {\n let copy = {...node}; // need _id + positions\n if (copy.autoPosition || copy.x === undefined) { delete copy.x; delete copy.y; }\n else copy.x = Math.min(11, copy.x);\n copy.w = Math.min(12, copy.w || 1);\n this.cacheOneLayout(copy, 12);\n }\n\n if (node.w > this.column) {\n node.w = this.column;\n } else if (node.w < 1) {\n node.w = 1;\n }\n\n if (this.maxRow && node.h > this.maxRow) {\n node.h = this.maxRow;\n } else if (node.h < 1) {\n node.h = 1;\n }\n\n if (node.x < 0) {\n node.x = 0;\n }\n if (node.y < 0) {\n node.y = 0;\n }\n\n if (node.x + node.w > this.column) {\n if (resizing) {\n node.w = this.column - node.x;\n } else {\n node.x = this.column - node.w;\n }\n }\n if (this.maxRow && node.y + node.h > this.maxRow) {\n if (resizing) {\n node.h = this.maxRow - node.y;\n } else {\n node.y = this.maxRow - node.h;\n }\n }\n\n if (!Utils.samePos(node, before)) {\n node._dirty = true;\n }\n\n return this;\n }\n\n /** returns a list of modified nodes from their original values */\n public getDirtyNodes(verify?: boolean): GridStackNode[] {\n // compare original x,y,w,h instead as _dirty can be a temporary state\n if (verify) {\n return this.nodes.filter(n => n._dirty && !Utils.samePos(n, n._orig));\n }\n return this.nodes.filter(n => n._dirty);\n }\n\n /** @internal call this to call onChange callback with dirty nodes so DOM can be updated */\n protected _notify(removedNodes?: GridStackNode[]): GridStackEngine {\n if (this.batchMode || !this.onChange) return this;\n let dirtyNodes = (removedNodes || []).concat(this.getDirtyNodes());\n this.onChange(dirtyNodes);\n return this;\n }\n\n /** @internal remove dirty and last tried info */\n public cleanNodes(): GridStackEngine {\n if (this.batchMode) return this;\n this.nodes.forEach(n => {\n delete n._dirty;\n delete n._lastTried;\n });\n return this;\n }\n\n /** @internal called to save initial position/size to track real dirty state.\n * Note: should be called right after we call change event (so next API is can detect changes)\n * as well as right before we start move/resize/enter (so we can restore items to prev values) */\n public saveInitial(): GridStackEngine {\n this.nodes.forEach(n => {\n n._orig = Utils.copyPos({}, n);\n delete n._dirty;\n });\n this._hasLocked = this.nodes.some(n => n.locked);\n return this;\n }\n\n /** @internal restore all the nodes back to initial values (called when we leave) */\n public restoreInitial(): GridStackEngine {\n this.nodes.forEach(n => {\n if (Utils.samePos(n, n._orig)) return;\n Utils.copyPos(n, n._orig);\n n._dirty = true;\n });\n this._notify();\n return this;\n }\n\n /** find the first available empty spot for the given node width/height, updating the x,y attributes. return true if found.\n * optionally you can pass your own existing node list and column count, otherwise defaults to that engine data.\n * Optionally pass a widget to start search AFTER, meaning the order will remain the same but possibly have empty slots we skipped\n */\n public findEmptyPosition(node: GridStackNode, nodeList = this.nodes, column = this.column, after?: GridStackNode): boolean {\n let start = after ? after.y * column + (after.x + after.w) : 0;\n let found = false;\n for (let i = start; !found; ++i) {\n let x = i % column;\n let y = Math.floor(i / column);\n if (x + node.w > column) {\n continue;\n }\n let box = {x, y, w: node.w, h: node.h};\n if (!nodeList.find(n => Utils.isIntercepted(box, n))) {\n if (node.x !== x || node.y !== y) node._dirty = true;\n node.x = x;\n node.y = y;\n delete node.autoPosition;\n found = true;\n }\n }\n return found;\n }\n\n /** call to add the given node to our list, fixing collision and re-packing */\n public addNode(node: GridStackNode, triggerAddEvent = false, after?: GridStackNode): GridStackNode {\n let dup = this.nodes.find(n => n._id === node._id);\n if (dup) return dup; // prevent inserting twice! return it instead.\n\n // skip prepareNode if we're in middle of column resize (not new) but do check for bounds!\n this._inColumnResize ? this.nodeBoundFix(node) : this.prepareNode(node);\n delete node._temporaryRemoved;\n delete node._removeDOM;\n\n let skipCollision: boolean;\n if (node.autoPosition && this.findEmptyPosition(node, this.nodes, this.column, after)) {\n delete node.autoPosition; // found our slot\n skipCollision = true;\n }\n\n this.nodes.push(node);\n if (triggerAddEvent) { this.addedNodes.push(node); }\n\n if (!skipCollision) this._fixCollisions(node);\n if (!this.batchMode) { this._packNodes()._notify(); }\n return node;\n }\n\n public removeNode(node: GridStackNode, removeDOM = true, triggerEvent = false): GridStackEngine {\n if (!this.nodes.find(n => n._id === node._id)) {\n // TEST console.log(`Error: GridStackEngine.removeNode() node._id=${node._id} not found!`)\n return this;\n }\n if (triggerEvent) { // we wait until final drop to manually track removed items (rather than during drag)\n this.removedNodes.push(node);\n }\n if (removeDOM) node._removeDOM = true; // let CB remove actual HTML (used to set _id to null, but then we loose layout info)\n // don't use 'faster' .splice(findIndex(),1) in case node isn't in our list, or in multiple times.\n this.nodes = this.nodes.filter(n => n._id !== node._id);\n if (!node._isAboutToRemove) this._packNodes(); // if dragged out, no need to relayout as already done...\n this._notify([node]);\n return this;\n }\n\n public removeAll(removeDOM = true, triggerEvent = true): GridStackEngine {\n delete this._layouts;\n if (!this.nodes.length) return this;\n removeDOM && this.nodes.forEach(n => n._removeDOM = true); // let CB remove actual HTML (used to set _id to null, but then we loose layout info)\n const removedNodes = this.nodes;\n this.removedNodes = triggerEvent ? removedNodes : [];\n this.nodes = [];\n return this._notify(removedNodes);\n }\n\n /** checks if item can be moved (layout constrain) vs moveNode(), returning true if was able to move.\n * In more complicated cases (maxRow) it will attempt at moving the item and fixing\n * others in a clone first, then apply those changes if still within specs. */\n public moveNodeCheck(node: GridStackNode, o: GridStackMoveOpts): boolean {\n // if (node.locked) return false;\n if (!this.changedPosConstrain(node, o)) return false;\n o.pack = true;\n\n // simpler case: move item directly...\n if (!this.maxRow) {\n return this.moveNode(node, o);\n }\n\n // complex case: create a clone with NO maxRow (will check for out of bounds at the end)\n let clonedNode: GridStackNode;\n let clone = new GridStackEngine({\n column: this.column,\n float: this.float,\n nodes: this.nodes.map(n => {\n if (n._id === node._id) {\n clonedNode = {...n};\n return clonedNode;\n }\n return {...n};\n })\n });\n if (!clonedNode) return false;\n\n // check if we're covering 50% collision and could move, while still being under maxRow or at least not making it worse\n // (case where widget was somehow added past our max #2449)\n let canMove = clone.moveNode(clonedNode, o) && clone.getRow() <= Math.max(this.getRow(), this.maxRow);\n // else check if we can force a swap (float=true, or different shapes) on non-resize\n if (!canMove && !o.resizing && o.collide) {\n let collide = o.collide.el.gridstackNode; // find the source node the clone collided with at 50%\n if (this.swap(node, collide)) { // swaps and mark dirty\n this._notify();\n return true;\n }\n }\n if (!canMove) return false;\n\n // if clone was able to move, copy those mods over to us now instead of caller trying to do this all over!\n // Note: we can't use the list directly as elements and other parts point to actual node, so copy content\n clone.nodes.filter(n => n._dirty).forEach(c => {\n let n = this.nodes.find(a => a._id === c._id);\n if (!n) return;\n Utils.copyPos(n, c);\n n._dirty = true;\n });\n this._notify();\n return true;\n }\n\n /** return true if can fit in grid height constrain only (always true if no maxRow) */\n public willItFit(node: GridStackNode): boolean {\n delete node._willFitPos;\n if (!this.maxRow) return true;\n // create a clone with NO maxRow and check if still within size\n let clone = new GridStackEngine({\n column: this.column,\n float: this.float,\n nodes: this.nodes.map(n => {return {...n}})\n });\n let n = {...node}; // clone node so we don't mod any settings on it but have full autoPosition and min/max as well! #1687\n this.cleanupNode(n);\n delete n.el; delete n._id; delete n.content; delete n.grid;\n clone.addNode(n);\n if (clone.getRow() <= this.maxRow) {\n node._willFitPos = Utils.copyPos({}, n);\n return true;\n }\n return false;\n }\n\n /** true if x,y or w,h are different after clamping to min/max */\n public changedPosConstrain(node: GridStackNode, p: GridStackPosition): boolean {\n // first make sure w,h are set for caller\n p.w = p.w || node.w;\n p.h = p.h || node.h;\n if (node.x !== p.x || node.y !== p.y) return true;\n // check constrained w,h\n if (node.maxW) { p.w = Math.min(p.w, node.maxW); }\n if (node.maxH) { p.h = Math.min(p.h, node.maxH); }\n if (node.minW) { p.w = Math.max(p.w, node.minW); }\n if (node.minH) { p.h = Math.max(p.h, node.minH); }\n return (node.w !== p.w || node.h !== p.h);\n }\n\n /** return true if the passed in node was actually moved (checks for no-op and locked) */\n public moveNode(node: GridStackNode, o: GridStackMoveOpts): boolean {\n if (!node || /*node.locked ||*/ !o) return false;\n let wasUndefinedPack: boolean;\n if (o.pack === undefined && !this.batchMode) {\n wasUndefinedPack = o.pack = true;\n }\n\n // constrain the passed in values and check if we're still changing our node\n if (typeof o.x !== 'number') { o.x = node.x; }\n if (typeof o.y !== 'number') { o.y = node.y; }\n if (typeof o.w !== 'number') { o.w = node.w; }\n if (typeof o.h !== 'number') { o.h = node.h; }\n let resizing = (node.w !== o.w || node.h !== o.h);\n let nn: GridStackNode = Utils.copyPos({}, node, true); // get min/max out first, then opt positions next\n Utils.copyPos(nn, o);\n this.nodeBoundFix(nn, resizing);\n Utils.copyPos(o, nn);\n\n if (!o.forceCollide && Utils.samePos(node, o)) return false;\n let prevPos: GridStackPosition = Utils.copyPos({}, node);\n\n // check if we will need to fix collision at our new location\n let collides = this.collideAll(node, nn, o.skip);\n let needToMove = true;\n if (collides.length) {\n let activeDrag = node._moving && !o.nested;\n // check to make sure we actually collided over 50% surface area while dragging\n let collide = activeDrag ? this.directionCollideCoverage(node, o, collides) : collides[0];\n // if we're enabling creation of sub-grids on the fly, see if we're covering 80% of either one, if we didn't already do that\n if (activeDrag && collide && node.grid?.opts?.subGridDynamic && !node.grid._isTemp) {\n let over = Utils.areaIntercept(o.rect, collide._rect);\n let a1 = Utils.area(o.rect);\n let a2 = Utils.area(collide._rect);\n let perc = over / (a1 < a2 ? a1 : a2);\n if (perc > .8) {\n collide.grid.makeSubGrid(collide.el, undefined, node);\n collide = undefined;\n }\n }\n\n if (collide) {\n needToMove = !this._fixCollisions(node, nn, collide, o); // check if already moved...\n } else {\n needToMove = false; // we didn't cover >50% for a move, skip...\n if (wasUndefinedPack) delete o.pack;\n }\n }\n\n // now move (to the original ask vs the collision version which might differ) and repack things\n if (needToMove) {\n node._dirty = true;\n Utils.copyPos(node, nn);\n }\n if (o.pack) {\n this._packNodes()\n ._notify();\n }\n return !Utils.samePos(node, prevPos); // pack might have moved things back\n }\n\n public getRow(): number {\n return this.nodes.reduce((row, n) => Math.max(row, n.y + n.h), 0);\n }\n\n public beginUpdate(node: GridStackNode): GridStackEngine {\n if (!node._updating) {\n node._updating = true;\n delete node._skipDown;\n if (!this.batchMode) this.saveInitial();\n }\n return this;\n }\n\n public endUpdate(): GridStackEngine {\n let n = this.nodes.find(n => n._updating);\n if (n) {\n delete n._updating;\n delete n._skipDown;\n }\n return this;\n }\n\n /** saves a copy of the largest column layout (eg 12 even when rendering oneColumnMode) so we don't loose orig layout,\n * returning a list of widgets for serialization */\n public save(saveElement = true, saveCB?: SaveFcn): GridStackNode[] {\n // use the highest layout for any saved info so we can have full detail on reload #1849\n let len = this._layouts?.length;\n let layout = len && this.column !== (len - 1) ? this._layouts[len - 1] : null;\n let list: GridStackNode[] = [];\n this.sortNodes();\n this.nodes.forEach(n => {\n let wl = layout?.find(l => l._id === n._id);\n // use layout info fields instead if set\n let w: GridStackNode = {...n, ...(wl || {})};\n Utils.removeInternalForSave(w, !saveElement);\n if (saveCB) saveCB(n, w);\n list.push(w);\n });\n return list;\n }\n\n /** @internal called whenever a node is added or moved - updates the cached layouts */\n public layoutsNodesChange(nodes: GridStackNode[]): GridStackEngine {\n if (!this._layouts || this._inColumnResize) return this;\n // remove smaller layouts - we will re-generate those on the fly... larger ones need to update\n this._layouts.forEach((layout, column) => {\n if (!layout || column === this.column) return this;\n if (column < this.column) {\n this._layouts[column] = undefined;\n }\n else {\n // we save the original x,y,w (h isn't cached) to see what actually changed to propagate better.\n // NOTE: we don't need to check against out of bound scaling/moving as that will be done when using those cache values. #1785\n let ratio = column / this.column;\n nodes.forEach(node => {\n if (!node._orig) return; // didn't change (newly added ?)\n let n = layout.find(l => l._id === node._id);\n if (!n) return; // no cache for new nodes. Will use those values.\n // Y changed, push down same amount\n // TODO: detect doing item 'swaps' will help instead of move (especially in 1 column mode)\n if (n.y >= 0 && node.y !== node._orig.y) {\n n.y += (node.y - node._orig.y);\n }\n // X changed, scale from new position\n if (node.x !== node._orig.x) {\n n.x = Math.round(node.x * ratio);\n }\n // width changed, scale from new width\n if (node.w !== node._orig.w) {\n n.w = Math.round(node.w * ratio);\n }\n // ...height always carries over from cache\n });\n }\n });\n return this;\n }\n\n /**\n * @internal Called to scale the widget width & position up/down based on the column change.\n * Note we store previous layouts (especially original ones) to make it possible to go\n * from say 12 -> 1 -> 12 and get back to where we were.\n *\n * @param prevColumn previous number of columns\n * @param column new column number\n * @param layout specify the type of re-layout that will happen (position, size, etc...).\n * Note: items will never be outside of the current column boundaries. default (moveScale). Ignored for 1 column\n */\n public columnChanged(prevColumn: number, column: number, layout: ColumnOptions = 'moveScale'): GridStackEngine {\n if (!this.nodes.length || !column || prevColumn === column) return this;\n\n // in this mode no layout is done whatsoever, up to the caller to handle it\n if (layout === 'none') return this;\n\n // simpler shortcuts layouts\n const doCompact = layout === 'compact' || layout === 'list';\n if (doCompact) {\n this.sortNodes(1); // sort with original layout once and only once (new column will affect order otherwise)\n }\n\n // cache the current layout in case they want to go back (like 12 -> 1 -> 12) as it requires original data IFF we're sizing down (see below)\n if (column < prevColumn) this.cacheLayout(this.nodes, prevColumn);\n this.batchUpdate(); // do this EARLY as it will call saveInitial() so we can detect where we started for _dirty and collision\n let newNodes: GridStackNode[] = [];\n let nodes = doCompact ? this.nodes : Utils.sort(this.nodes, -1); // current column reverse sorting so we can insert last to front (limit collision)\n\n // see if we have cached previous layout IFF we are going up in size (restore) otherwise always\n // generate next size down from where we are (looks more natural as you gradually size down).\n if (column > prevColumn && this._layouts) {\n const cacheNodes = this._layouts[column] || [];\n // ...if not, start with the largest layout (if not already there) as down-scaling is more accurate\n // by pretending we came from that larger column by assigning those values as starting point\n let lastIndex = this._layouts.length - 1;\n if (!cacheNodes.length && prevColumn !== lastIndex && this._layouts[lastIndex]?.length) {\n prevColumn = lastIndex;\n this._layouts[lastIndex].forEach(cacheNode => {\n let n = nodes.find(n => n._id === cacheNode._id);\n if (n) {\n // still current, use cache info positions\n if (!doCompact && !cacheNode.autoPosition) {\n n.x = cacheNode.x ?? n.x;\n n.y = cacheNode.y ?? n.y;\n }\n n.w = cacheNode.w ?? n.w;\n if (cacheNode.x == undefined || cacheNode.y === undefined) n.autoPosition = true;\n }\n });\n }\n\n // if we found cache re-use those nodes that are still current\n cacheNodes.forEach(cacheNode => {\n let j = nodes.findIndex(n => n._id === cacheNode._id);\n if (j !== -1) {\n const n = nodes[j];\n // still current, use cache info positions\n if (doCompact) {\n n.w = cacheNode.w; // only w is used, and don't trim the list\n return;\n }\n if (cacheNode.autoPosition || isNaN(cacheNode.x) || isNaN(cacheNode.y)) {\n this.findEmptyPosition(cacheNode, newNodes);\n }\n if (!cacheNode.autoPosition) {\n n.x = cacheNode.x ?? n.x;\n n.y = cacheNode.y ?? n.y;\n n.w = cacheNode.w ?? n.w;\n newNodes.push(n);\n }\n nodes.splice(j, 1);\n }\n });\n }\n\n // much simpler layout that just compacts\n if (doCompact) {\n this.compact(layout, false);\n } else {\n // ...and add any extra non-cached ones\n if (nodes.length) {\n if (typeof layout === 'function') {\n layout(column, prevColumn, newNodes, nodes);\n } else {\n let ratio = doCompact ? 1 : column / prevColumn;\n let move = (layout === 'move' || layout === 'moveScale');\n let scale = (layout === 'scale' || layout === 'moveScale');\n nodes.forEach(node => {\n // NOTE: x + w could be outside of the grid, but addNode() below will handle that\n node.x = (column === 1 ? 0 : (move ? Math.round(node.x * ratio) : Math.min(node.x, column - 1)));\n node.w = ((column === 1 || prevColumn === 1) ? 1 : scale ? (Math.round(node.w * ratio) || 1) : (Math.min(node.w, column)));\n newNodes.push(node);\n });\n nodes = [];\n }\n }\n\n // finally re-layout them in reverse order (to get correct placement)\n newNodes = Utils.sort(newNodes, -1);\n this._inColumnResize = true; // prevent cache update\n this.nodes = []; // pretend we have no nodes to start with (add() will use same structures) to simplify layout\n newNodes.forEach(node => {\n this.addNode(node, false); // 'false' for add event trigger\n delete node._orig; // make sure the commit doesn't try to restore things back to original\n });\n }\n\n this.nodes.forEach(n => delete n._orig); // clear _orig before batch=false so it doesn't handle float=true restore\n this.batchUpdate(false, !doCompact);\n delete this._inColumnResize;\n return this;\n }\n\n /**\n * call to cache the given layout internally to the given location so we can restore back when column changes size\n * @param nodes list of nodes\n * @param column corresponding column index to save it under\n * @param clear if true, will force other caches to be removed (default false)\n */\n public cacheLayout(nodes: GridStackNode[], column: number, clear = false): GridStackEngine {\n let copy: GridStackNode[] = [];\n nodes.forEach((n, i) => {\n // make sure we have an id in case this is new layout, else re-use id already set\n if (n._id === undefined) {\n const existing = n.id ? this.nodes.find(n2 => n2.id === n.id) : undefined; // find existing node using users id\n n._id = existing?._id ?? GridStackEngine._idSeq++;\n }\n copy[i] = {x: n.x, y: n.y, w: n.w, _id: n._id} // only thing we change is x,y,w and id to find it back\n });\n this._layouts = clear ? [] : this._layouts || []; // use array to find larger quick\n this._layouts[column] = copy;\n return this;\n }\n\n /**\n * call to cache the given node layout internally to the given location so we can restore back when column changes size\n * @param node single node to cache\n * @param column corresponding column index to save it under\n */\n public cacheOneLayout(n: GridStackNode, column: number): GridStackEngine {\n n._id = n._id ?? GridStackEngine._idSeq++;\n let l: GridStackNode = {x: n.x, y: n.y, w: n.w, _id: n._id}\n if (n.autoPosition || n.x === undefined) { delete l.x; delete l.y; if (n.autoPosition) l.autoPosition = true; }\n this._layouts = this._layouts || [];\n this._layouts[column] = this._layouts[column] || [];\n let index = this.findCacheLayout(n, column);\n if (index === -1)\n this._layouts[column].push(l);\n else\n this._layouts[column][index] = l;\n return this;\n }\n\n protected findCacheLayout(n: GridStackNode, column: number): number | undefined {\n return this._layouts?.[column]?.findIndex(l => l._id === n._id) ?? -1;\n }\n\n public removeNodeFromLayoutCache(n: GridStackNode) {\n if (!this._layouts) {\n return;\n }\n for (let i = 0; i < this._layouts.length; i++) {\n let index = this.findCacheLayout(n, i);\n if (index !== -1) {\n this._layouts[i].splice(index, 1);\n }\n }\n }\n\n /** called to remove all internal values but the _id */\n public cleanupNode(node: GridStackNode): GridStackEngine {\n for (let prop in node) {\n if (prop[0] === '_' && prop !== '_id') delete node[prop];\n }\n return this;\n }\n}\n","/**\r\n * types.ts 10.2.0\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\n\r\nimport { GridStack } from './gridstack';\r\nimport { GridStackEngine } from './gridstack-engine';\r\n\r\n// default values for grid options - used during init and when saving out\r\nexport const gridDefaults: GridStackOptions = {\r\n alwaysShowResizeHandle: 'mobile',\r\n animate: true,\r\n auto: true,\r\n cellHeight: 'auto',\r\n cellHeightThrottle: 100,\r\n cellHeightUnit: 'px',\r\n column: 12,\r\n draggable: { handle: '.grid-stack-item-content', appendTo: 'body', scroll: true },\r\n handle: '.grid-stack-item-content',\r\n itemClass: 'grid-stack-item',\r\n margin: 10,\r\n marginUnit: 'px',\r\n maxRow: 0,\r\n minRow: 0,\r\n placeholderClass: 'grid-stack-placeholder',\r\n placeholderText: '',\r\n removableOptions: { accept: 'grid-stack-item', decline: 'grid-stack-non-removable'},\r\n resizable: { handles: 'se' },\r\n rtl: 'auto',\r\n\r\n // **** same as not being set ****\r\n // disableDrag: false,\r\n // disableResize: false,\r\n // float: false,\r\n // handleClass: null,\r\n // removable: false,\r\n // staticGrid: false,\r\n // styleInHead: false,\r\n //removable\r\n};\r\n\r\n/** default dragIn options */\r\nexport const dragInDefaultOptions: DDDragInOpt = {\r\n handle: '.grid-stack-item-content',\r\n appendTo: 'body',\r\n // revert: 'invalid',\r\n // scroll: false,\r\n};\r\n\r\n/**\r\n * different layout options when changing # of columns, including a custom function that takes new/old column count, and array of new/old positions\r\n * Note: new list may be partially already filled if we have a cache of the layout at that size and new items were added later.\r\n * Options are:\r\n * 'list' - treat items as sorted list, keeping items (un-sized unless too big for column count) sequentially reflowing them\r\n * 'compact' - similar to list, but using compact() method which will possibly re-order items if an empty slots are available due to a larger item needing to be pushed to next row\r\n * 'moveScale' - will scale and move items by the ratio new newColumnCount / oldColumnCount\r\n * 'move' | 'scale' - will only size or move items\r\n * 'none' will leave items unchanged, unless they don't fit in column count\r\n */\r\nexport type ColumnOptions = 'list' | 'compact' | 'moveScale' | 'move' | 'scale' | 'none' |\r\n ((column: number, oldColumn: number, nodes: GridStackNode[], oldNodes: GridStackNode[]) => void);\r\nexport type CompactOptions = 'list' | 'compact';\r\nexport type numberOrString = number | string;\r\nexport interface GridItemHTMLElement extends HTMLElement {\r\n /** pointer to grid node instance */\r\n gridstackNode?: GridStackNode;\r\n /** @internal */\r\n _gridstackNodeOrig?: GridStackNode;\r\n}\r\n\r\nexport type GridStackElement = string | HTMLElement | GridItemHTMLElement;\r\n\r\n/** specific and general event handlers for the .on() method */\r\nexport type GridStackEventHandler = (event: Event) => void;\r\nexport type GridStackElementHandler = (event: Event, el: GridItemHTMLElement) => void;\r\nexport type GridStackNodesHandler = (event: Event, nodes: GridStackNode[]) => void;\r\nexport type GridStackDroppedHandler = (event: Event, previousNode: GridStackNode, newNode: GridStackNode) => void;\r\nexport type GridStackEventHandlerCallback = GridStackEventHandler | GridStackElementHandler | GridStackNodesHandler | GridStackDroppedHandler;\r\n\r\n/** optional function called during load() to callback the user on new added/remove grid items | grids */\r\nexport type AddRemoveFcn = (parent: HTMLElement, w: GridStackWidget, add: boolean, grid: boolean) => HTMLElement | undefined;\r\n\r\n/** optional function called during save() to let the caller add additional custom data to the GridStackWidget structure that will get returned */\r\nexport type SaveFcn = (node: GridStackNode, w: GridStackWidget) => void;\r\n\r\nexport type ResizeToContentFcn = (el: GridItemHTMLElement) => void;\r\n\r\n/** describes the responsive nature of the grid. NOTE: make sure to have correct extra CSS to support this. */\r\nexport interface Responsive {\r\n /** wanted width to maintain (+-50%) to dynamically pick a column count. NOTE: make sure to have correct extra CSS to support this. */\r\n columnWidth?: number;\r\n /** maximum number of columns allowed (default: 12). NOTE: make sure to have correct extra CSS to support this. */\r\n columnMax?: number;\r\n /** explicit width:column breakpoints instead of automatic 'columnWidth'. NOTE: make sure to have correct extra CSS to support this. */\r\n breakpoints?: Breakpoint[];\r\n /** specify if breakpoints are for window size or grid size (default:false = grid) */\r\n breakpointForWindow?: boolean;\r\n /** global re-layout mode when changing columns */\r\n layout?: ColumnOptions;\r\n}\r\n\r\nexport interface Breakpoint {\r\n /** <= width for the breakpoint to trigger */\r\n w?: number;\r\n /** column count */\r\n c: number;\r\n /** re-layout mode if different from global one */\r\n layout?: ColumnOptions;\r\n /** TODO: children layout, which spells out exact locations and could omit/add some children */\r\n // children?: GridStackWidget[];\r\n}\r\n\r\n/**\r\n * Defines the options for a Grid\r\n */\r\nexport interface GridStackOptions {\r\n /**\r\n * accept widgets dragged from other grids or from outside (default: `false`). Can be:\r\n * `true` (uses `'.grid-stack-item'` class filter) or `false`,\r\n * string for explicit class name,\r\n * function returning a boolean. See [example](http://gridstack.github.io/gridstack.js/demo/two.html)\r\n */\r\n acceptWidgets?: boolean | string | ((element: Element) => boolean);\r\n\r\n /** possible values (default: `mobile`) - does not apply to non-resizable widgets\r\n * `false` the resizing handles are only shown while hovering over a widget\r\n * `true` the resizing handles are always shown\r\n * 'mobile' if running on a mobile device, default to `true` (since there is no hovering per say), else `false`.\r\n See [example](http://gridstack.github.io/gridstack.js/demo/mobile.html) */\r\n alwaysShowResizeHandle?: true | false | 'mobile';\r\n\r\n /** turns animation on (default?: true) */\r\n animate?: boolean;\r\n\r\n /** if false gridstack will not initialize existing items (default?: true) */\r\n auto?: boolean;\r\n\r\n /**\r\n * one cell height (default?: 'auto'). Can be:\r\n * an integer (px)\r\n * a string (ex: '100px', '10em', '10rem'). Note: % doesn't work right - see demo/cell-height.html\r\n * 0, in which case the library will not generate styles for rows. Everything must be defined in your own CSS files.\r\n * 'auto' - height will be calculated for square cells (width / column) and updated live as you resize the window - also see `cellHeightThrottle`\r\n * 'initial' - similar to 'auto' (start at square cells) but stay that size during window resizing.\r\n */\r\n cellHeight?: numberOrString;\r\n\r\n /** throttle time delay (in ms) used when cellHeight='auto' to improve performance vs usability (default?: 100).\r\n * A value of 0 will make it instant at a cost of re-creating the CSS file at ever window resize event!\r\n * */\r\n cellHeightThrottle?: number;\r\n\r\n /** (internal) unit for cellHeight (default? 'px') which is set when a string cellHeight with a unit is passed (ex: '10rem') */\r\n cellHeightUnit?: string;\r\n\r\n /** list of children item to create when calling load() or addGrid() */\r\n children?: GridStackWidget[];\r\n\r\n /** number of columns (default?: 12). Note: IF you change this, CSS also have to change. See https://github.com/gridstack/gridstack.js#change-grid-columns.\r\n * Note: for nested grids, it is recommended to use 'auto' which will always match the container grid-item current width (in column) to keep inside and outside\r\n * items always to same. flag is not supported for regular non-nested grids.\r\n */\r\n column?: number | 'auto';\r\n\r\n /** responsive column layout for width:column behavior */\r\n columnOpts?: Responsive;\r\n\r\n /** additional class on top of '.grid-stack' (which is required for our CSS) to differentiate this instance.\r\n Note: only used by addGrid(), else your element should have the needed class */\r\n class?: string;\r\n\r\n /** disallows dragging of widgets (default?: false) */\r\n disableDrag?: boolean;\r\n\r\n /** disallows resizing of widgets (default?: false). */\r\n disableResize?: boolean;\r\n\r\n /** allows to override UI draggable options. (default?: { handle?: '.grid-stack-item-content', appendTo?: 'body' }) */\r\n draggable?: DDDragOpt;\r\n\r\n /** let user drag nested grid items out of a parent or not (default true - not supported yet) */\r\n //dragOut?: boolean;\r\n\r\n /** the type of engine to create (so you can subclass) default to GridStackEngine */\r\n engineClass?: typeof GridStackEngine;\r\n\r\n /** enable floating widgets (default?: false) See example (http://gridstack.github.io/gridstack.js/demo/float.html) */\r\n float?: boolean;\r\n\r\n /** draggable handle selector (default?: '.grid-stack-item-content') */\r\n handle?: string;\r\n\r\n /** draggable handle class (e.g. 'grid-stack-item-content'). If set 'handle' is ignored (default?: null) */\r\n handleClass?: string;\r\n\r\n /** additional widget class (default?: 'grid-stack-item') */\r\n itemClass?: string;\r\n\r\n /**\r\n * gap between grid item and content (default?: 10). This will set all 4 sides and support the CSS formats below\r\n * an integer (px)\r\n * a string with possible units (ex: '2em', '20px', '2rem')\r\n * string with space separated values (ex: '5px 10px 0 20px' for all 4 sides, or '5em 10em' for top/bottom and left/right pairs like CSS).\r\n * Note: all sides must have same units (last one wins, default px)\r\n */\r\n margin?: numberOrString;\r\n\r\n /** OLD way to optionally set each side - use margin: '5px 10px 0 20px' instead. Used internally to store each side. */\r\n marginTop?: numberOrString;\r\n marginRight?: numberOrString;\r\n marginBottom?: numberOrString;\r\n marginLeft?: numberOrString;\r\n\r\n /** (internal) unit for margin (default? 'px') set when `margin` is set as string with unit (ex: 2rem') */\r\n marginUnit?: string;\r\n\r\n /** maximum rows amount. Default? is 0 which means no maximum rows */\r\n maxRow?: number;\r\n\r\n /** minimum rows amount. Default is `0`. You can also do this with `min-height` CSS attribute\r\n * on the grid div in pixels, which will round to the closest row.\r\n */\r\n minRow?: number;\r\n\r\n /** If you are using a nonce-based Content Security Policy, pass your nonce here and\r\n * GridStack will add it to the