{"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.1.2\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 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 /**\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 /** 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.1.2\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.1.2\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