{"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 12.3.3\r\n * Copyright (c) 2021-2025 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/**\r\n * @internal Checks for obsolete method names and provides deprecation warnings.\r\n * Creates a wrapper function that logs a deprecation warning when called.\r\n *\r\n * @param self the object context to apply the function to\r\n * @param f the new function to call\r\n * @param oldName the deprecated method name\r\n * @param newName the new method name to use instead\r\n * @param rev the version when the deprecation was introduced\r\n * @returns a wrapper function that warns about deprecation\r\n */\r\n// eslint-disable-next-line\r\nexport function obsolete(self, f, oldName: string, newName: string, rev: string): (...args: any[]) => any {\r\n const 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/**\r\n * @internal Checks for obsolete grid options and migrates them to new names.\r\n * Automatically copies old option values to new option names and shows deprecation warnings.\r\n *\r\n * @param opts the options object to check and migrate\r\n * @param oldName the deprecated option name\r\n * @param newName the new option name to use instead\r\n * @param rev the version when the deprecation was introduced\r\n */\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/**\r\n * @internal Checks for obsolete grid options that have been completely removed.\r\n * Shows deprecation warnings for options that are no longer supported.\r\n *\r\n * @param opts the options object to check\r\n * @param oldName the removed option name\r\n * @param rev the version when the option was removed\r\n * @param info additional information about the removal\r\n */\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/**\r\n * @internal Checks for obsolete HTML element attributes and migrates them.\r\n * Automatically copies old attribute values to new attribute names and shows deprecation warnings.\r\n *\r\n * @param el the HTML element to check and migrate\r\n * @param oldName the deprecated attribute name\r\n * @param newName the new attribute name to use instead\r\n * @param rev the version when the deprecation was introduced\r\n */\r\nexport function obsoleteAttr(el: HTMLElement, oldName: string, newName: string, rev: string): void {\r\n const 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 * Collection of utility methods used throughout GridStack.\r\n * These are general-purpose helper functions for DOM manipulation,\r\n * positioning calculations, object operations, and more.\r\n */\r\nexport class Utils {\r\n\r\n /**\r\n * Convert a potential selector into an actual list of HTML elements.\r\n * Supports CSS selectors, element references, and special ID handling.\r\n *\r\n * @param els selector string, HTMLElement, or array of elements\r\n * @param root optional root element to search within (defaults to document, useful for shadow DOM)\r\n * @returns array of HTML elements matching the selector\r\n *\r\n * @example\r\n * const elements = Utils.getElements('.grid-item');\r\n * const byId = Utils.getElements('#myWidget');\r\n * const fromShadow = Utils.getElements('.item', shadowRoot);\r\n */\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 /**\r\n * Convert a potential selector into a single HTML element.\r\n * Similar to getElements() but returns only the first match.\r\n *\r\n * @param els selector string or HTMLElement\r\n * @param root optional root element to search within (defaults to document)\r\n * @returns the first HTML element matching the selector, or null if not found\r\n *\r\n * @example\r\n * const element = Utils.getElement('#myWidget');\r\n * const first = Utils.getElement('.grid-item');\r\n */\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 /**\r\n * Check if a widget should be lazy loaded based on node or grid settings.\r\n *\r\n * @param n the grid node to check\r\n * @returns true if the item should be lazy loaded\r\n *\r\n * @example\r\n * if (Utils.lazyLoad(node)) {\r\n * // Set up intersection observer for lazy loading\r\n * }\r\n */\r\n static lazyLoad(n: GridStackNode): boolean {\r\n return n.lazyLoad || n.grid?.opts?.lazyLoad && n.lazyLoad !== false;\r\n }\r\n\r\n /**\r\n * Create a div element with the specified CSS classes.\r\n *\r\n * @param classes array of CSS class names to add\r\n * @param parent optional parent element to append the div to\r\n * @returns the created div element\r\n *\r\n * @example\r\n * const div = Utils.createDiv(['grid-item', 'draggable']);\r\n * const nested = Utils.createDiv(['content'], parentDiv);\r\n */\r\n static createDiv(classes: string[], parent?: HTMLElement): HTMLElement {\r\n const el = document.createElement('div');\r\n classes.forEach(c => {if (c) el.classList.add(c)});\r\n parent?.appendChild(el);\r\n return el;\r\n }\r\n\r\n /**\r\n * Check if a widget should resize to fit its content.\r\n *\r\n * @param n the grid node to check (can be undefined)\r\n * @param strict if true, only returns true for explicit sizeToContent:true (not numbers)\r\n * @returns true if the widget should resize to content\r\n *\r\n * @example\r\n * if (Utils.shouldSizeToContent(node)) {\r\n * // Trigger content-based resizing\r\n * }\r\n */\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 /**\r\n * Check if two grid positions overlap/intersect.\r\n *\r\n * @param a first position with x, y, w, h properties\r\n * @param b second position with x, y, w, h properties\r\n * @returns true if the positions overlap\r\n *\r\n * @example\r\n * const overlaps = Utils.isIntercepted(\r\n * {x: 0, y: 0, w: 2, h: 1},\r\n * {x: 1, y: 0, w: 2, h: 1}\r\n * ); // true - they overlap\r\n */\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 /**\r\n * Check if two grid positions are touching (edges or corners).\r\n *\r\n * @param a first position\r\n * @param b second position\r\n * @returns true if the positions are touching\r\n *\r\n * @example\r\n * const touching = Utils.isTouching(\r\n * {x: 0, y: 0, w: 2, h: 1},\r\n * {x: 2, y: 0, w: 1, h: 1}\r\n * ); // true - they share an edge\r\n */\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 /**\r\n * Calculate the overlapping area between two grid positions.\r\n *\r\n * @param a first position\r\n * @param b second position\r\n * @returns the area of overlap (0 if no overlap)\r\n *\r\n * @example\r\n * const overlap = Utils.areaIntercept(\r\n * {x: 0, y: 0, w: 3, h: 2},\r\n * {x: 1, y: 0, w: 3, h: 2}\r\n * ); // returns 4 (2x2 overlap)\r\n */\r\n static areaIntercept(a: GridStackPosition, b: GridStackPosition): number {\r\n const x0 = (a.x > b.x) ? a.x : b.x;\r\n const 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 const y0 = (a.y > b.y) ? a.y : b.y;\r\n const 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 /**\r\n * Calculate the total area of a grid position.\r\n *\r\n * @param a position with width and height\r\n * @returns the total area (width * height)\r\n *\r\n * @example\r\n * const area = Utils.area({x: 0, y: 0, w: 3, h: 2}); // returns 6\r\n */\r\n static area(a: GridStackPosition): number {\r\n return a.w * a.h;\r\n }\r\n\r\n /**\r\n * Sort an array of grid nodes by position (y first, then x).\r\n *\r\n * @param nodes array of nodes to sort\r\n * @param dir sort direction: 1 for ascending (top-left first), -1 for descending\r\n * @returns the sorted array (modifies original)\r\n *\r\n * @example\r\n * const sorted = Utils.sort(nodes); // Sort top-left to bottom-right\r\n * const reverse = Utils.sort(nodes, -1); // Sort bottom-right to top-left\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 const 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 /**\r\n * Find a grid node by its ID.\r\n *\r\n * @param nodes array of nodes to search\r\n * @param id the ID to search for\r\n * @returns the node with matching ID, or undefined if not found\r\n *\r\n * @example\r\n * const node = Utils.find(nodes, 'widget-1');\r\n * if (node) console.log('Found node at:', node.x, node.y);\r\n */\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 * Convert various value types to boolean.\r\n * Handles strings like 'false', 'no', '0' as false.\r\n *\r\n * @param v value to convert\r\n * @returns boolean representation\r\n *\r\n * @example\r\n * Utils.toBool('true'); // true\r\n * Utils.toBool('false'); // false\r\n * Utils.toBool('no'); // false\r\n * Utils.toBool('1'); // true\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 /**\r\n * Convert a string value to a number, handling null and empty strings.\r\n *\r\n * @param value string or null value to convert\r\n * @returns number value, or undefined for null/empty strings\r\n *\r\n * @example\r\n * Utils.toNumber('42'); // 42\r\n * Utils.toNumber(''); // undefined\r\n * Utils.toNumber(null); // undefined\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 /**\r\n * Parse a height value with units into numeric value and unit string.\r\n * Supports px, em, rem, vh, vw, %, cm, mm units.\r\n *\r\n * @param val height value as number or string with units\r\n * @returns object with h (height) and unit properties\r\n *\r\n * @example\r\n * Utils.parseHeight('100px'); // {h: 100, unit: 'px'}\r\n * Utils.parseHeight('2rem'); // {h: 2, unit: 'rem'}\r\n * Utils.parseHeight(50); // {h: 50, unit: 'px'}\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 const 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 /**\r\n * Copy unset fields from source objects to target object (shallow merge with defaults).\r\n * Similar to Object.assign but only sets undefined/null fields.\r\n *\r\n * @param target the object to copy defaults into\r\n * @param sources one or more source objects to copy defaults from\r\n * @returns the modified target object\r\n *\r\n * @example\r\n * const config = { width: 100 };\r\n * Utils.defaults(config, { width: 200, height: 50 });\r\n * // config is now { width: 100, height: 50 }\r\n */\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 Utils.defaults(target[key], source[key]);\r\n }\r\n }\r\n });\r\n\r\n return target;\r\n }\r\n\r\n /**\r\n * Compare two objects for equality (shallow comparison).\r\n * Checks if objects have the same fields and values at one level deep.\r\n *\r\n * @param a first object to compare\r\n * @param b second object to compare\r\n * @returns true if objects have the same values\r\n *\r\n * @example\r\n * Utils.same({x: 1, y: 2}, {x: 1, y: 2}); // true\r\n * Utils.same({x: 1}, {x: 1, y: 2}); // false\r\n */\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 /**\r\n * Copy position and size properties from one widget to another.\r\n * Copies x, y, w, h and optionally min/max constraints.\r\n *\r\n * @param a target widget to copy to\r\n * @param b source widget to copy from\r\n * @param doMinMax if true, also copy min/max width/height constraints\r\n * @returns the target widget (a)\r\n *\r\n * @example\r\n * Utils.copyPos(widget1, widget2); // Copy position/size\r\n * Utils.copyPos(widget1, widget2, true); // Also copy constraints\r\n */\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 // skip arrays as we don't know how to hydrate them (unlike object spread operator)\r\n if (Array.isArray(a) || Array.isArray(b)) return;\r\n for (let key in a) {\r\n const aVal = a[key];\r\n const bVal = b[key];\r\n if (key[0] === '_' || aVal === bVal) {\r\n delete a[key]\r\n } else if (aVal && typeof aVal === 'object' && bVal !== undefined) {\r\n Utils.removeInternalAndSame(aVal, bVal);\r\n if (!Object.keys(aVal).length) { delete a[key] }\r\n }\r\n }\r\n }\r\n\r\n /** removes internal fields '_' and default values for saving */\r\n static removeInternalForSave(n: GridStackNode, removeEl = true): void {\r\n for (let key in n) { if (key[0] === '_' || n[key] === null || n[key] === undefined ) delete n[key]; }\r\n delete n.grid;\r\n if (removeEl) delete n.el;\r\n // delete default values (will be re-created on read)\r\n if (!n.autoPosition) delete n.autoPosition;\r\n if (!n.noResize) delete n.noResize;\r\n if (!n.noMove) delete n.noMove;\r\n if (!n.locked) delete n.locked;\r\n if (n.w === 1 || n.w === n.minW) delete n.w;\r\n if (n.h === 1 || n.h === n.minH) delete n.h;\r\n }\r\n\r\n /** return the closest parent (or itself) matching the given class */\r\n // static closestUpByClass(el: HTMLElement, name: string): HTMLElement {\r\n // while (el) {\r\n // if (el.classList.contains(name)) return el;\r\n // el = el.parentElement\r\n // }\r\n // return null;\r\n // }\r\n\r\n /** delay calling the given function for given delay, preventing new calls from happening while waiting */\r\n static throttle(func: () => void, delay: number): () => void {\r\n let isWaiting = false;\r\n return (...args) => {\r\n if (!isWaiting) {\r\n isWaiting = true;\r\n setTimeout(() => { func(...args); isWaiting = false; }, delay);\r\n }\r\n }\r\n }\r\n\r\n static removePositioningStyles(el: HTMLElement): void {\r\n const 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 Utils.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 const scrollEl = Utils.getScrollElement(el);\r\n if (!scrollEl) return;\r\n\r\n const elRect = el.getBoundingClientRect();\r\n const scrollRect = scrollEl.getBoundingClientRect();\r\n const innerHeightOrClientHeight = (window.innerHeight || document.documentElement.clientHeight);\r\n\r\n const offsetDiffDown = elRect.bottom - Math.min(scrollRect.bottom, innerHeightOrClientHeight);\r\n const offsetDiffUp = elRect.top - Math.max(scrollRect.top, 0);\r\n const prevScroll = scrollEl.scrollTop;\r\n\r\n if (offsetDiffUp < 0 && distance < 0) {\r\n // scroll up\r\n if (el.offsetHeight > scrollRect.height) {\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 (offsetDiffDown > 0 && distance > 0) {\r\n // scroll down\r\n if (el.offsetHeight > scrollRect.height) {\r\n scrollEl.scrollTop += distance;\r\n } else {\r\n scrollEl.scrollTop += offsetDiffDown > distance ? distance : offsetDiffDown;\r\n }\r\n }\r\n\r\n position.top += scrollEl.scrollTop - prevScroll;\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 = Utils.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 === Utils.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 ['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 (or convert Touch) properties and sends it as another event to the given target */\r\n public static simulateMouseEvent(e: MouseEvent | Touch, simulatedType: string, target?: EventTarget): void {\r\n const me = e as MouseEvent;\r\n const simulatedEvent = new MouseEvent(simulatedType, {\r\n bubbles: true,\r\n composed: true,\r\n cancelable: true,\r\n view: window,\r\n detail: 1,\r\n screenX: e.screenX,\r\n screenY: e.screenY,\r\n clientX: e.clientX,\r\n clientY: e.clientY,\r\n ctrlKey: me.ctrlKey??false,\r\n altKey: me.altKey??false,\r\n shiftKey: me.shiftKey??false,\r\n metaKey: me.metaKey??false,\r\n button: 0,\r\n relatedTarget: e.target\r\n });\r\n\r\n (target || e.target).dispatchEvent(simulatedEvent);\r\n }\r\n\r\n /**\r\n * defines an element that is used to get the offset and scale from grid transforms\r\n * returns the scale and offsets from said element\r\n */\r\n public static getValuesFromTransformedElement(parent: HTMLElement): DragTransform {\r\n const transformReference = document.createElement('div');\r\n Utils.addElStyles(transformReference, {\r\n opacity: '0',\r\n position: 'fixed',\r\n top: 0 + 'px',\r\n left: 0 + 'px',\r\n width: '1px',\r\n height: '1px',\r\n zIndex: '-999999',\r\n });\r\n parent.appendChild(transformReference);\r\n const transformValues = transformReference.getBoundingClientRect();\r\n parent.removeChild(transformReference);\r\n transformReference.remove();\r\n return {\r\n xScale: 1 / transformValues.width,\r\n yScale: 1 / transformValues.height,\r\n xOffset: transformValues.left,\r\n yOffset: transformValues.top,\r\n }\r\n }\r\n\r\n /** swap the given object 2 field values */\r\n public static swap(o: unknown, a: string, b: string): void {\r\n if (!o) return;\r\n const tmp = o[a]; o[a] = o[b]; o[b] = tmp;\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 // Utils.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 // const 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 /** true if the item can be rotated (checking for prop, not space available) */\r\n public static canBeRotated(n: GridStackNode): boolean {\r\n return !(!n || n.w === n.h || n.locked || n.noResize || n.grid?.opts.disableResize || (n.minW && n.minW === n.maxW) || (n.minH && n.minH === n.maxH));\r\n }\r\n}","/**\n * gridstack-engine.ts 12.3.3\n * Copyright (c) 2021-2025 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 handles all grid layout calculations and node positioning.\n * This is the core engine that performs grid manipulation without any DOM operations.\n *\n * The engine manages:\n * - Node positioning and collision detection\n * - Layout algorithms (compact, float, etc.)\n * - Grid resizing and column changes\n * - Widget movement and resizing logic\n *\n * NOTE: Values should not be modified directly - use the main GridStack API instead\n * to ensure proper DOM updates and event triggers.\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 public defaultColumn = 12;\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 set during loading (which is sorted) so item gets added AFTER collision nodes */\n public _loading?: boolean\n /** @internal true while we are resizing widgets during column resize to skip certain parts */\n protected _inColumnResize?: boolean;\n /** true when grid.load() already cached the layout and can skip out of bound caching info */\n public skipCacheUpdate?: 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 || this.defaultColumn;\n if (this.column > this.defaultColumn) this.defaultColumn = this.column;\n this.maxRow = opts.maxRow;\n this._float = opts.float;\n this.nodes = opts.nodes || [];\n this.onChange = opts.onChange;\n }\n\n /**\n * Enable/disable batch mode for multiple operations to optimize performance.\n * When enabled, layout updates are deferred until batch mode is disabled.\n *\n * @param flag true to enable batch mode, false to disable and apply changes\n * @param doPack if true (default), pack/compact nodes when disabling batch mode\n * @returns the engine instance for chaining\n *\n * @example\n * // Start batch mode for multiple operations\n * engine.batchUpdate(true);\n * engine.addNode(node1);\n * engine.addNode(node2);\n * engine.batchUpdate(false); // Apply all changes at once\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._loading && 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 const newOpt: GridStackMoveOpts = {nested: true, pack: false};\n let counter = 0;\n while (collide = collide || this.collide(node, area, opt.skip)) { // could collide with more than 1 item... so repeat for each\n if (counter++ > this.nodes.length * 2) {\n throw new Error(\"Infinite collide check\");\n }\n let moved: boolean;\n // if colliding with a locked item OR loading (move after) 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 || this._loading || 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\n node._skipDown = (node._skipDown || nn.y > node.y);\n const newNN = {...nn, y: collide.y + collide.h, ...newOpt};\n // pretent we moved to where we are now so we can continue any collision checks #2492\n moved = this._loading && Utils.samePos(node, newNN) ? true : this.moveNode(node, newNN);\n\n if ((collide.locked || this._loading) && 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\n if (!moved) return didMove; // break inf loop if we couldn't move after all (ex: maxRow, fixed)\n\n collide = undefined;\n }\n return didMove;\n }\n\n /**\n * Return the first node that intercepts/collides with the given node or area.\n * Used for collision detection during drag and drop operations.\n *\n * @param skip the node to skip in collision detection (usually the node being moved)\n * @param area the area to check for collisions (defaults to skip node's area)\n * @param skip2 optional second node to skip in collision detection\n * @returns the first colliding node, or undefined if no collision\n *\n * @example\n * const colliding = engine.collide(draggedNode, {x: 2, y: 1, w: 2, h: 1});\n * if (colliding) {\n * console.log('Would collide with:', colliding.id);\n * }\n */\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 /**\n * Return all nodes that intercept/collide with the given node or area.\n * Similar to collide() but returns all colliding nodes instead of just the first.\n *\n * @param skip the node to skip in collision detection\n * @param area the area to check for collisions (defaults to skip node's area)\n * @param skip2 optional second node to skip in collision detection\n * @returns array of all colliding nodes\n *\n * @example\n * const allCollisions = engine.collideAll(draggedNode);\n * console.log('Colliding with', allCollisions.length, 'nodes');\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 const r0 = node._rect; // where started\n const 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 const 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 const 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 const collide: GridStackNode;\n const overMax = 0;\n collides.forEach(n => {\n if (n.locked || !n._rect) return;\n const 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 /**\n * Cache the pixel rectangles for all nodes used for collision detection during drag operations.\n * This optimization converts grid coordinates to pixel coordinates for faster collision detection.\n *\n * @param w width of a single grid cell in pixels\n * @param h height of a single grid cell in pixels\n * @param top top margin/padding in pixels\n * @param right right margin/padding in pixels\n * @param bottom bottom margin/padding in pixels\n * @param left left margin/padding in pixels\n * @returns the engine instance for chaining\n *\n * @internal This is typically called by GridStack during resize events\n */\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 /**\n * Attempt to swap the positions of two nodes if they meet swapping criteria.\n * Nodes can swap if they are the same size or in the same column/row, not locked, and touching.\n *\n * @param a first node to swap\n * @param b second node to swap\n * @returns true if swap was successful, false if not possible, undefined if not applicable\n *\n * @example\n * const swapped = engine.swap(nodeA, nodeB);\n * if (swapped) {\n * console.log('Nodes swapped successfully');\n * }\n */\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 const 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) { const 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) { const t = a; a = b; b = t; } // swap a <-> b vars so a is first\n return _doSwap();\n }\n return false;\n }\n\n /**\n * Check if the specified rectangular area is empty (no nodes occupy any part of it).\n *\n * @param x the x coordinate (column) of the area to check\n * @param y the y coordinate (row) of the area to check\n * @param w the width in columns of the area to check\n * @param h the height in rows of the area to check\n * @returns true if the area is completely empty, false if any node overlaps\n *\n * @example\n * if (engine.isAreaEmpty(2, 1, 3, 2)) {\n * console.log('Area is available for placement');\n * }\n */\n public isAreaEmpty(x: number, y: number, w: number, h: number): boolean {\n const nn: GridStackNode = {x: x || 0, y: y || 0, w: w || 1, h: h || 1};\n return !this.collide(nn);\n }\n\n /**\n * Re-layout grid items to reclaim any empty space.\n * This optimizes the grid layout by moving items to fill gaps.\n *\n * @param layout layout algorithm to use:\n * - 'compact' (default): find truly empty spaces, may reorder items\n * - 'list': keep the sort order exactly the same, move items up sequentially\n * @param doSort if true (default), sort nodes by position before compacting\n * @returns the engine instance for chaining\n *\n * @example\n * // Compact to fill empty spaces\n * engine.compact();\n *\n * // Compact preserving item order\n * engine.compact('list');\n */\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 const 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 /**\n * Enable/disable floating widgets (default: `false`).\n * When floating is enabled, widgets can move up to fill empty spaces.\n * See [example](http://gridstackjs.com/demo/float.html)\n *\n * @param val true to enable floating, false to disable\n *\n * @example\n * engine.float = true; // Enable floating\n * engine.float = false; // Disable floating (default)\n */\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 /**\n * Get the current floating mode setting.\n *\n * @returns true if floating is enabled, false otherwise\n *\n * @example\n * const isFloating = engine.float;\n * console.log('Floating enabled:', isFloating);\n */\n public get float(): boolean { return this._float || false; }\n\n /**\n * Sort the nodes array from first to last, or reverse.\n * This is called during collision/placement operations to enforce a specific order.\n *\n * @param dir sort direction: 1 for ascending (first to last), -1 for descending (last to first)\n * @returns the engine instance for chaining\n *\n * @example\n * engine.sortNodes(); // Sort ascending (default)\n * engine.sortNodes(-1); // Sort descending\n */\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 const 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 const newY = i === 0 ? 0 : n.y - 1;\n const 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 * Prepare and validate a node's coordinates and values for the current grid.\n * This ensures the node has valid position, size, and properties before being added to the grid.\n *\n * @param node the node to prepare and validate\n * @param resizing if true, resize the node down if it's out of bounds; if false, move it to fit\n * @returns the prepared node with valid coordinates\n *\n * @example\n * const node = { w: 3, h: 2, content: 'Hello' };\n * const prepared = engine.prepareNode(node);\n * console.log('Node prepared at:', prepared.x, prepared.y);\n */\n public prepareNode(node: GridStackNode, resizing?: boolean): GridStackNode {\n node._id = node._id ?? GridStackEngine._idSeq++;\n\n // make sure USER supplied id are unique in our list, else assign a new one as it will create issues during load/update/etc...\n const id = node.id;\n if (id) {\n let count = 1; // append nice _n rather than some random number\n while (this.nodes.find(n => n.id === node.id && n !== node)) {\n node.id = id + '_' + (count++);\n }\n }\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 const 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 /**\n * Part 2 of preparing a node to fit inside the grid - validates and fixes coordinates and dimensions.\n * This ensures the node fits within grid boundaries and respects min/max constraints.\n *\n * @param node the node to validate and fix\n * @param resizing if true, resize the node to fit; if false, move the node to fit\n * @returns the engine instance for chaining\n *\n * @example\n * // Fix a node that might be out of bounds\n * engine.nodeBoundFix(node, true); // Resize to fit\n * engine.nodeBoundFix(node, false); // Move to fit\n */\n public nodeBoundFix(node: GridStackNode, resizing?: boolean): GridStackEngine {\n\n const before = node._orig || Utils.copyPos({}, node);\n\n if (node.maxW) { node.w = Math.min(node.w || 1, node.maxW); }\n if (node.maxH) { node.h = Math.min(node.h || 1, node.maxH); }\n if (node.minW) { node.w = Math.max(node.w || 1, node.minW); }\n if (node.minH) { node.h = Math.max(node.h || 1, 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 < this.defaultColumn && !this._inColumnResize && !this.skipCacheUpdate && node._id != null && this.findCacheLayout(node, this.defaultColumn) === -1) {\n const copy = {...node}; // need _id + positions\n if (copy.autoPosition || copy.x === undefined) { delete copy.x; delete copy.y; }\n else copy.x = Math.min(this.defaultColumn - 1, copy.x);\n copy.w = Math.min(this.defaultColumn, copy.w || 1);\n this.cacheOneLayout(copy, this.defaultColumn);\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 /**\n * Returns a list of nodes that have been modified from their original values.\n * This is used to track which nodes need DOM updates.\n *\n * @param verify if true, performs additional verification by comparing current vs original positions\n * @returns array of nodes that have been modified\n *\n * @example\n * const changed = engine.getDirtyNodes();\n * console.log('Modified nodes:', changed.length);\n *\n * // Get verified dirty nodes\n * const verified = engine.getDirtyNodes(true);\n */\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 const dirtyNodes = (removedNodes || []).concat(this.getDirtyNodes());\n this.onChange(dirtyNodes);\n return this;\n }\n\n /**\n * Clean all dirty and last tried information from nodes.\n * This resets the dirty state tracking for all nodes.\n *\n * @returns the engine instance for chaining\n *\n * @internal\n */\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 /**\n * Save the initial position/size of all nodes to track real dirty state.\n * This creates a snapshot of current positions that can be restored later.\n *\n * Note: Should be called right after change events and before move/resize operations.\n *\n * @returns the engine instance for chaining\n *\n * @internal\n */\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 /**\n * Restore all nodes back to their initial values.\n * This is typically called when canceling an operation (e.g., Esc key during drag).\n *\n * @returns the engine instance for chaining\n *\n * @internal\n */\n public restoreInitial(): GridStackEngine {\n this.nodes.forEach(n => {\n if (!n._orig || 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 /**\n * Find the first available empty spot for the given node dimensions.\n * Updates the node's x,y attributes with the found position.\n *\n * @param node the node to find a position for (w,h must be set)\n * @param nodeList optional list of nodes to check against (defaults to engine nodes)\n * @param column optional column count (defaults to engine column count)\n * @param after optional node to start search after (maintains order)\n * @returns true if an empty position was found and node was updated\n *\n * @example\n * const node = { w: 2, h: 1 };\n * if (engine.findEmptyPosition(node)) {\n * console.log('Found position at:', node.x, node.y);\n * }\n */\n public findEmptyPosition(node: GridStackNode, nodeList = this.nodes, column = this.column, after?: GridStackNode): boolean {\n const start = after ? after.y * column + (after.x + after.w) : 0;\n let found = false;\n for (let i = start; !found; ++i) {\n const x = i % column;\n const y = Math.floor(i / column);\n if (x + node.w > column) {\n continue;\n }\n const 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 /**\n * Add the given node to the grid, handling collision detection and re-packing.\n * This is the main method for adding new widgets to the engine.\n *\n * @param node the node to add to the grid\n * @param triggerAddEvent if true, adds node to addedNodes list for event triggering\n * @param after optional node to place this node after (for ordering)\n * @returns the added node (or existing node if duplicate)\n *\n * @example\n * const node = { x: 0, y: 0, w: 2, h: 1, content: 'Hello' };\n * const added = engine.addNode(node, true);\n */\n public addNode(node: GridStackNode, triggerAddEvent = false, after?: GridStackNode): GridStackNode {\n const 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 /**\n * Remove the given node from the grid.\n *\n * @param node the node to remove\n * @param removeDOM if true (default), marks node for DOM removal\n * @param triggerEvent if true, adds node to removedNodes list for event triggering\n * @returns the engine instance for chaining\n *\n * @example\n * engine.removeNode(node, true, true);\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 /**\n * Remove all nodes from the grid.\n *\n * @param removeDOM if true (default), marks all nodes for DOM removal\n * @param triggerEvent if true (default), triggers removal events\n * @returns the engine instance for chaining\n *\n * @example\n * engine.removeAll(); // Remove all nodes\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 /**\n * Check if a node can be moved to a new position, considering layout constraints.\n * This is a safer version of moveNode() that validates the move first.\n *\n * For complex cases (like maxRow constraints), it simulates the move in a clone first,\n * then applies the changes only if they meet all specifications.\n *\n * @param node the node to move\n * @param o move options including target position\n * @returns true if the node was successfully moved\n *\n * @example\n * const canMove = engine.moveNodeCheck(node, { x: 2, y: 1 });\n * if (canMove) {\n * console.log('Node moved successfully');\n * }\n */\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 const 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 const 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 const 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 const 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 const clone = new GridStackEngine({\n column: this.column,\n float: this.float,\n nodes: this.nodes.map(n => {return {...n}})\n });\n const 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 const resizing = (node.w !== o.w || node.h !== o.h);\n const 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 const prevPos: GridStackPosition = Utils.copyPos({}, node);\n\n // check if we will need to fix collision at our new location\n const collides = this.collideAll(node, nn, o.skip);\n let needToMove = true;\n if (collides.length) {\n const 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 const over = Utils.areaIntercept(o.rect, collide._rect);\n const a1 = Utils.area(o.rect);\n const a2 = Utils.area(collide._rect);\n const 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 && !Utils.samePos(node, nn)) {\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 const 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 1 column) so we don't loose orig layout, unless explicity column\n * count to use is given. returning a list of widgets for serialization\n * @param saveElement if true (default), the element will be saved to GridStackWidget.el field, else it will be removed.\n * @param saveCB callback for each node -> widget, so application can insert additional data to be saved into the widget data structure.\n * @param column if provided, the grid will be saved for the given column count (IFF we have matching internal saved layout, or current layout).\n * Note: nested grids will ALWAYS save the container w to match overall layouts (parent + child) to be consistent.\n */\n public save(saveElement = true, saveCB?: SaveFcn, column?: number): GridStackNode[] {\n // use the highest layout for any saved info so we can have full detail on reload #1849\n // unless we're given a column to match (always set for nested grids)\n const len = this._layouts?.length || 0;\n let layout: GridStackNode[];\n if (len) {\n if (column) {\n if (column !== this.column) layout = this._layouts[column];\n } else if (this.column !== len - 1) {\n layout = this._layouts[len - 1];\n }\n }\n const list: GridStackNode[] = [];\n this.sortNodes();\n this.nodes.forEach(n => {\n const wl = layout?.find(l => l._id === n._id);\n // use layout info fields instead if set\n const 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 const ratio = column / this.column;\n nodes.forEach(node => {\n if (!node._orig) return; // didn't change (newly added ?)\n const 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 // 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 const 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 const 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 const 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 const ratio = (doCompact || layout === 'none') ? 1 : column / prevColumn;\n const move = (layout === 'move' || layout === 'moveScale');\n const 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 const 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 const 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 const 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 const 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 (const prop in node) {\n if (prop[0] === '_' && prop !== '_id') delete node[prop];\n }\n return this;\n }\n}\n","/**\r\n * types.ts 12.3.3\r\n * Copyright (c) 2021-2025 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/**\r\n * Default values for grid options - used during initialization and when saving out grid configuration.\r\n * These values are applied when options are not explicitly provided.\r\n */\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 //removable\r\n};\r\n\r\n/**\r\n * Different layout options when changing the number of columns.\r\n *\r\n * These options control how widgets are repositioned when the grid column count changes.\r\n * Note: The new list may be partially filled if there's a cached layout for that size.\r\n *\r\n * Options:\r\n * - `'list'`: Treat items as a sorted list, keeping them sequentially without resizing (unless too big)\r\n * - `'compact'`: Similar to list, but uses compact() method to fill empty slots by reordering\r\n * - `'moveScale'`: Scale and move items by the ratio of newColumnCount / oldColumnCount\r\n * - `'move'`: Only move items, keep their sizes\r\n * - `'scale'`: Only scale items, keep their positions\r\n * - `'none'`: Leave items unchanged unless they don't fit in the new column count\r\n * - Custom function: Provide your own layout logic\r\n */\r\nexport type ColumnOptions = 'list' | 'compact' | 'moveScale' | 'move' | 'scale' | 'none' |\r\n ((column: number, oldColumn: number, nodes: GridStackNode[], oldNodes: GridStackNode[]) => void);\r\n/**\r\n * Options for the compact() method to reclaim empty space.\r\n * - `'list'`: Keep items in order, move them up sequentially\r\n * - `'compact'`: Find truly empty spaces, may reorder items for optimal fit\r\n */\r\nexport type CompactOptions = 'list' | 'compact';\r\n/**\r\n * Type representing values that can be either numbers or strings (e.g., dimensions with units).\r\n * Used for properties like width, height, margins that accept both numeric and string values.\r\n */\r\nexport type numberOrString = number | string;\r\n/**\r\n * Extended HTMLElement interface for grid items.\r\n * All grid item DOM elements implement this interface to provide access to their grid data.\r\n */\r\nexport interface GridItemHTMLElement extends HTMLElement {\r\n /** Pointer to the associated grid node instance containing position, size, and other widget data */\r\n gridstackNode?: GridStackNode;\r\n /** @internal Original node data (used for restoring during drag operations) */\r\n _gridstackNodeOrig?: GridStackNode;\r\n}\r\n\r\n/**\r\n * Type representing various ways to specify grid elements.\r\n * Can be a CSS selector string, HTMLElement, or GridItemHTMLElement.\r\n */\r\nexport type GridStackElement = string | HTMLElement | GridItemHTMLElement;\r\n\r\n/**\r\n * Event handler function types for the .on() method.\r\n * Different handlers receive different parameters based on the event type.\r\n */\r\n\r\n/** General event handler that receives only the event */\r\nexport type GridStackEventHandler = (event: Event) => void;\r\n\r\n/** Element-specific event handler that receives event and affected element */\r\nexport type GridStackElementHandler = (event: Event, el: GridItemHTMLElement) => void;\r\n\r\n/** Node-based event handler that receives event and array of affected nodes */\r\nexport type GridStackNodesHandler = (event: Event, nodes: GridStackNode[]) => void;\r\n\r\n/** Drop event handler that receives previous and new node states */\r\nexport type GridStackDroppedHandler = (event: Event, previousNode: GridStackNode, newNode: GridStackNode) => void;\r\n\r\n/** Union type of all possible event handler types */\r\nexport type GridStackEventHandlerCallback = GridStackEventHandler | GridStackElementHandler | GridStackNodesHandler | GridStackDroppedHandler;\r\n\r\n/**\r\n * Optional callback function called during load() operations.\r\n * Allows custom handling of widget addition/removal for framework integration.\r\n *\r\n * @param parent - The parent HTML element\r\n * @param w - The widget definition\r\n * @param add - True if adding, false if removing\r\n * @param grid - True if this is a grid operation\r\n * @returns The created/modified HTML element, or undefined\r\n */\r\nexport type AddRemoveFcn = (parent: HTMLElement, w: GridStackWidget, add: boolean, grid: boolean) => HTMLElement | undefined;\r\n\r\n/**\r\n * Optional callback function called during save() operations.\r\n * Allows adding custom data to the saved widget structure.\r\n *\r\n * @param node - The internal grid node\r\n * @param w - The widget structure being saved (can be modified)\r\n */\r\nexport type SaveFcn = (node: GridStackNode, w: GridStackWidget) => void;\r\n\r\n/**\r\n * Optional callback function for custom widget content rendering.\r\n * Called during load()/addWidget() to create custom content beyond plain text.\r\n *\r\n * @param el - The widget's content container element\r\n * @param w - The widget definition with content and other properties\r\n */\r\nexport type RenderFcn = (el: HTMLElement, w: GridStackWidget) => void;\r\n\r\n/**\r\n * Optional callback function for custom resize-to-content behavior.\r\n * Called when a widget needs to resize to fit its content.\r\n *\r\n * @param el - The grid item element to resize\r\n */\r\nexport type ResizeToContentFcn = (el: GridItemHTMLElement) => void;\r\n\r\n/**\r\n * Configuration for responsive grid behavior.\r\n *\r\n * Defines how the grid responds to different screen sizes by changing column counts.\r\n * NOTE: Make sure to include the appropriate CSS (gridstack-extra.css) to support responsive behavior.\r\n */\r\nexport interface Responsive {\r\n /** wanted width to maintain (+-50%) to dynamically pick a column count. NOTE: make sure to have correct extra CSS to support this. */\r\n columnWidth?: number;\r\n /** maximum number of columns allowed (default: 12). NOTE: make sure to have correct extra CSS to support this. */\r\n columnMax?: number;\r\n /** explicit width:column breakpoints instead of automatic 'columnWidth'. NOTE: make sure to have correct extra CSS to support this. */\r\n breakpoints?: Breakpoint[];\r\n /** specify if breakpoints are for window size or grid size (default:false = grid) */\r\n breakpointForWindow?: boolean;\r\n /** global re-layout mode when changing columns */\r\n layout?: ColumnOptions;\r\n}\r\n\r\n/**\r\n * Defines a responsive breakpoint for automatic column count changes.\r\n * Used with the responsive.breakpoints option.\r\n */\r\nexport interface Breakpoint {\r\n /** Maximum width (in pixels) for this breakpoint to be active */\r\n w?: number;\r\n /** Number of columns to use when this breakpoint is active */\r\n c: number;\r\n /** Layout mode for this specific breakpoint (overrides global responsive.layout) */\r\n layout?: ColumnOptions;\r\n /** TODO: Future feature - specific children layout for this breakpoint */\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`: will accept HTML elements having 'grid-stack-item' as class attribute\r\n * - `false`: will not accept any external widgets\r\n * - string: explicit class name to accept instead of default\r\n * - function: callback called before an item will be accepted when entering a grid\r\n *\r\n * @example\r\n * // Accept all grid items\r\n * acceptWidgets: true\r\n *\r\n * // Accept only items with specific class\r\n * acceptWidgets: 'my-draggable-item'\r\n *\r\n * // Custom validation function\r\n * acceptWidgets: (el) => {\r\n * return el.getAttribute('data-accept') === 'true';\r\n * }\r\n *\r\n * @see {@link http://gridstack.github.io/gridstack.js/demo/two.html} for complete example\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): fixed pixel height\r\n * - a string (ex: '100px', '10em', '10rem'): CSS length value\r\n * - 0: library will not generate styles for rows (define your own CSS)\r\n * - 'auto': height calculated for square cells (width / column) and updated live on window resize\r\n * - 'initial': similar to 'auto' but stays fixed size during window resizing\r\n *\r\n * Note: % values don't work correctly - see demo/cell-height.html\r\n *\r\n * @example\r\n * // Fixed 100px height\r\n * cellHeight: 100\r\n *\r\n * // CSS units\r\n * cellHeight: '5rem'\r\n * cellHeight: '100px'\r\n *\r\n * // Auto-sizing for square cells\r\n * cellHeight: 'auto'\r\n *\r\n * // No CSS generation (custom styles)\r\n * cellHeight: 0\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 the 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 /** re-layout mode when we're a subgrid and we are being resized. default to 'list' */\r\n layout?: ColumnOptions;\r\n\r\n /** true when widgets are only created when they scroll into view (visible) */\r\n lazyLoad?: boolean;\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 which is handy to prevent grid from collapsing when empty. Default is `0`.\r\n * When no set the `min-height` CSS attribute on the grid div (in pixels) can be used, 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