{"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.0.1\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\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 */\r\n static shouldSizeToContent(n: GridStackNode | undefined): boolean {\r\n return n?.grid && (!!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 asc, -1 for desc (optional)\r\n * @param width width of the grid. If undefined the width will be calculated automatically (optional).\r\n **/\r\n static sort(nodes: GridStackNode[], dir: 1 | -1 = 1, column?: number): GridStackNode[] {\r\n column = column || nodes.reduce((col, n) => Math.max(n.x + n.w, col), 0) || 12;\r\n if (dir === -1)\r\n return nodes.sort((a, b) => ((b.x ?? 1000) + (b.y ?? 1000) * column)-((a.x ?? 1000) + (a.y ?? 1000) * column));\r\n else\r\n return nodes.sort((b, a) => ((b.x ?? 1000) + (b.y ?? 1000) * column)-((a.x ?? 1000) + (a.y ?? 1000) * column));\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|%)?$/);\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 let val = a[key];\r\n if (key[0] === '_' || val === b[key]) {\r\n delete a[key]\r\n } else if (val && typeof val === 'object' && b[key] !== undefined) {\r\n for (let i in val) {\r\n if (val[i] === b[key][i] || i[0] === '_') { delete val[i] }\r\n }\r\n if (!Object.keys(val).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 /** 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.0.1\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 collides.forEach(n => {\n if (n.locked || !n._rect) return;\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, column = this.column): GridStackEngine {\n this.nodes = Utils.sort(this.nodes, dir, column);\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): 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 this.removedNodes = this.nodes;\n this.nodes = [];\n return this._notify(this.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 nodes different sorted list (ex: DOM order) instead of current list\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, nodes: GridStackNode[], layout: ColumnOptions = 'moveScale'): GridStackEngine {\n if (!this.nodes.length || !column || prevColumn === column) return this;\n\n // simpler shortcuts layouts\n const doCompact = layout === 'compact' || layout === 'list';\n if (doCompact) {\n this.sortNodes(1, prevColumn); // 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\n // if we're going to 1 column and using DOM order (item passed in) rather than default sorting, then generate that layout\n let domOrder = false;\n if (column === 1 && nodes?.length) {\n domOrder = true;\n let top = 0;\n nodes.forEach(n => {\n n.x = 0;\n n.w = 1;\n n.y = Math.max(n.y, top);\n top = n.y + n.h;\n });\n newNodes = nodes;\n nodes = [];\n } else {\n nodes = doCompact ? this.nodes : Utils.sort(this.nodes, -1, prevColumn); // current column reverse sorting so we can insert last to front (limit collision)\n }\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 if (!domOrder) {\n let ratio = (doCompact || layout === 'none') ? 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 if (!domOrder) newNodes = Utils.sort(newNodes, -1, column);\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.0.1\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 */\r\nexport interface Responsive {\r\n /** wanted width to maintain (+-50%) to dynamically pick a column count */\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 /** global re-layout mode when changing columns */\r\n layout?: ColumnOptions;\r\n /** specify if breakpoints are for window size or grid size (default:false = grid) */\r\n breakpointForWindow?: boolean;\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}\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