gridstack 10.3.1 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -3
- package/dist/angular/README.md +47 -25
- package/dist/angular/{esm2020 → esm2022}/gridstack-angular.mjs +5 -5
- package/dist/angular/esm2022/index.mjs +8 -0
- package/dist/angular/esm2022/lib/base-widget.mjs +34 -0
- package/dist/angular/esm2022/lib/gridstack-item.component.mjs +72 -0
- package/dist/angular/esm2022/lib/gridstack.component.mjs +300 -0
- package/dist/angular/esm2022/lib/gridstack.module.mjs +39 -0
- package/dist/angular/{fesm2020 → fesm2022}/gridstack-angular.mjs +400 -369
- package/dist/angular/fesm2022/gridstack-angular.mjs.map +1 -0
- package/dist/angular/index.d.ts +4 -5
- package/dist/angular/lib/base-widget.d.ts +18 -16
- package/dist/angular/lib/gridstack-item.component.d.ts +37 -37
- package/dist/angular/lib/gridstack.component.d.ts +135 -129
- package/dist/angular/lib/gridstack.module.d.ts +10 -10
- package/dist/angular/src/base-widget.ts +10 -2
- package/dist/angular/src/gridstack-item.component.ts +11 -7
- package/dist/angular/src/gridstack.component.ts +67 -44
- package/dist/angular/src/gridstack.module.ts +2 -2
- package/dist/dd-base-impl.d.ts +2 -2
- package/dist/dd-base-impl.js +2 -2
- package/dist/dd-base-impl.js.map +1 -1
- package/dist/dd-draggable.d.ts +7 -16
- package/dist/dd-draggable.js +22 -34
- package/dist/dd-draggable.js.map +1 -1
- package/dist/dd-droppable.d.ts +2 -2
- package/dist/dd-droppable.js +2 -2
- package/dist/dd-droppable.js.map +1 -1
- package/dist/dd-element.d.ts +5 -5
- package/dist/dd-element.js +2 -2
- package/dist/dd-element.js.map +1 -1
- package/dist/dd-gridstack.d.ts +4 -4
- package/dist/dd-gridstack.js +8 -8
- package/dist/dd-gridstack.js.map +1 -1
- package/dist/dd-manager.d.ts +2 -2
- package/dist/dd-manager.js +2 -2
- package/dist/dd-manager.js.map +1 -1
- package/dist/dd-resizable-handle.d.ts +2 -2
- package/dist/dd-resizable-handle.js +3 -3
- package/dist/dd-resizable-handle.js.map +1 -1
- package/dist/dd-resizable.d.ts +2 -2
- package/dist/dd-resizable.js +4 -4
- package/dist/dd-resizable.js.map +1 -1
- package/dist/dd-touch.d.ts +2 -2
- package/dist/dd-touch.js +2 -2
- package/dist/dd-touch.js.map +1 -1
- package/dist/es5/dd-base-impl.d.ts +2 -2
- package/dist/es5/dd-base-impl.js +2 -2
- package/dist/es5/dd-base-impl.js.map +1 -1
- package/dist/es5/dd-draggable.d.ts +7 -16
- package/dist/es5/dd-draggable.js +19 -29
- package/dist/es5/dd-draggable.js.map +1 -1
- package/dist/es5/dd-droppable.d.ts +2 -2
- package/dist/es5/dd-droppable.js +2 -2
- package/dist/es5/dd-droppable.js.map +1 -1
- package/dist/es5/dd-element.d.ts +5 -5
- package/dist/es5/dd-element.js +2 -2
- package/dist/es5/dd-element.js.map +1 -1
- package/dist/es5/dd-gridstack.d.ts +4 -4
- package/dist/es5/dd-gridstack.js +9 -6
- package/dist/es5/dd-gridstack.js.map +1 -1
- package/dist/es5/dd-manager.d.ts +2 -2
- package/dist/es5/dd-manager.js +2 -2
- package/dist/es5/dd-manager.js.map +1 -1
- package/dist/es5/dd-resizable-handle.d.ts +2 -2
- package/dist/es5/dd-resizable-handle.js +2 -2
- package/dist/es5/dd-resizable-handle.js.map +1 -1
- package/dist/es5/dd-resizable.d.ts +2 -2
- package/dist/es5/dd-resizable.js +2 -2
- package/dist/es5/dd-resizable.js.map +1 -1
- package/dist/es5/dd-touch.d.ts +2 -2
- package/dist/es5/dd-touch.js +2 -2
- package/dist/es5/dd-touch.js.map +1 -1
- package/dist/es5/gridstack-all.js +1 -1
- package/dist/es5/gridstack-all.js.LICENSE.txt +2 -2
- package/dist/es5/gridstack-all.js.map +1 -1
- package/dist/es5/gridstack-engine.d.ts +2 -2
- package/dist/es5/gridstack-engine.js +5 -5
- package/dist/es5/gridstack-engine.js.map +1 -1
- package/dist/es5/gridstack-poly.js +2 -2
- package/dist/es5/gridstack.d.ts +22 -17
- package/dist/es5/gridstack.js +158 -141
- package/dist/es5/gridstack.js.map +1 -1
- package/dist/es5/types.d.ts +16 -8
- package/dist/es5/types.js +3 -10
- package/dist/es5/types.js.map +1 -1
- package/dist/es5/utils.d.ts +6 -2
- package/dist/es5/utils.js +36 -3
- package/dist/es5/utils.js.map +1 -1
- package/dist/gridstack-all.js +1 -1
- package/dist/gridstack-all.js.LICENSE.txt +2 -2
- package/dist/gridstack-all.js.map +1 -1
- package/dist/gridstack-engine.d.ts +2 -2
- package/dist/gridstack-engine.js +61 -61
- package/dist/gridstack-engine.js.map +1 -1
- package/dist/gridstack-extra.css +1 -1
- package/dist/gridstack.css +2 -2
- package/dist/gridstack.d.ts +22 -17
- package/dist/gridstack.js +244 -226
- package/dist/gridstack.js.map +1 -1
- package/dist/src/gridstack-extra.scss +1 -1
- package/dist/src/gridstack.scss +2 -2
- package/dist/types.d.ts +16 -8
- package/dist/types.js +2 -9
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +6 -2
- package/dist/utils.js +50 -20
- package/dist/utils.js.map +1 -1
- package/doc/CHANGES.md +8 -0
- package/doc/README.md +18 -23
- package/package.json +1 -1
- package/dist/angular/esm2020/lib/base-widget.mjs +0 -30
- package/dist/angular/esm2020/lib/gridstack-item.component.mjs +0 -68
- package/dist/angular/esm2020/lib/gridstack.component.mjs +0 -280
- package/dist/angular/esm2020/lib/gridstack.module.mjs +0 -39
- package/dist/angular/esm2020/public-api.mjs +0 -8
- package/dist/angular/fesm2015/gridstack-angular.mjs +0 -420
- package/dist/angular/fesm2015/gridstack-angular.mjs.map +0 -1
- package/dist/angular/fesm2020/gridstack-angular.mjs.map +0 -1
- package/dist/angular/package.json +0 -31
- package/dist/angular/public-api.d.ts +0 -4
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * utils.ts 10.3.1\r\n * Copyright (c) 2021 Alain Dumesny - see GridStack root license\r\n */\r\n\r\nimport { GridStackElement, GridStackNode, GridStackOptions, numberOrString, GridStackPosition, GridStackWidget } from './types';\r\n\r\nexport interface HeightData {\r\n h: number;\r\n unit: string;\r\n}\r\n\r\nexport interface DragTransform {\r\n xScale: number;\r\n yScale: number;\r\n xOffset: number;\r\n yOffset: number;\r\n}\r\n\r\n/** checks for obsolete method names */\r\n// eslint-disable-next-line\r\nexport function obsolete(self, f, oldName: string, newName: string, rev: string): (...args: any[]) => any {\r\n let wrapper = (...args) => {\r\n console.warn('gridstack.js: Function `' + oldName + '` is deprecated in ' + rev + ' and has been replaced ' +\r\n 'with `' + newName + '`. It will be **removed** in a future release');\r\n return f.apply(self, args);\r\n }\r\n wrapper.prototype = f.prototype;\r\n return wrapper;\r\n}\r\n\r\n/** checks for obsolete grid options (can be used for any fields, but msg is about options) */\r\nexport function obsoleteOpts(opts: GridStackOptions, oldName: string, newName: string, rev: string): void {\r\n if (opts[oldName] !== undefined) {\r\n opts[newName] = opts[oldName];\r\n console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + ' and has been replaced with `' +\r\n newName + '`. It will be **removed** in a future release');\r\n }\r\n}\r\n\r\n/** checks for obsolete grid options which are gone */\r\nexport function obsoleteOptsDel(opts: GridStackOptions, oldName: string, rev: string, info: string): void {\r\n if (opts[oldName] !== undefined) {\r\n console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + info);\r\n }\r\n}\r\n\r\n/** checks for obsolete Jquery element attributes */\r\nexport function obsoleteAttr(el: HTMLElement, oldName: string, newName: string, rev: string): void {\r\n let oldAttr = el.getAttribute(oldName);\r\n if (oldAttr !== null) {\r\n el.setAttribute(newName, oldAttr);\r\n console.warn('gridstack.js: attribute `' + oldName + '`=' + oldAttr + ' is deprecated on this object in ' + rev + ' and has been replaced with `' +\r\n newName + '`. It will be **removed** in a future release');\r\n }\r\n}\r\n\r\n/**\r\n * Utility methods\r\n */\r\nexport class Utils {\r\n\r\n /** convert a potential selector into actual list of html elements. optional root which defaults to document (for shadow dom) */\r\n static getElements(els: GridStackElement, root: HTMLElement | Document = document): HTMLElement[] {\r\n if (typeof els === 'string') {\r\n const doc = ('getElementById' in root) ? root as Document : undefined;\r\n\r\n // Note: very common for people use to id='1,2,3' which is only legal as HTML5 id, but not CSS selectors\r\n // so if we start with a number, assume it's an id and just return that one item...\r\n // see https://github.com/gridstack/gridstack.js/issues/2234#issuecomment-1523796562\r\n if (doc && !isNaN(+els[0])) { // start with digit\r\n const el = doc.getElementById(els);\r\n return el ? [el] : [];\r\n }\r\n\r\n let list = root.querySelectorAll(els);\r\n if (!list.length && els[0] !== '.' && els[0] !== '#') {\r\n list = root.querySelectorAll('.' + els);\r\n if (!list.length) { list = root.querySelectorAll('#' + els) }\r\n }\r\n return Array.from(list) as HTMLElement[];\r\n }\r\n return [els];\r\n }\r\n\r\n /** convert a potential selector into actual single element. optional root which defaults to document (for shadow dom) */\r\n static getElement(els: GridStackElement, root: HTMLElement | Document = document): HTMLElement {\r\n if (typeof els === 'string') {\r\n const doc = ('getElementById' in root) ? root as Document : undefined;\r\n if (!els.length) return null;\r\n if (doc && els[0] === '#') {\r\n return doc.getElementById(els.substring(1));\r\n }\r\n if (els[0] === '#' || els[0] === '.' || els[0] === '[') {\r\n return root.querySelector(els);\r\n }\r\n\r\n // if we start with a digit, assume it's an id (error calling querySelector('#1')) as class are not valid CSS\r\n if (doc && !isNaN(+els[0])) { // start with digit\r\n return doc.getElementById(els);\r\n }\r\n\r\n // finally try string, then id, then class\r\n let el = root.querySelector(els);\r\n if (doc && !el) { el = doc.getElementById(els) }\r\n if (!el) { el = root.querySelector('.' + els) }\r\n return el as HTMLElement;\r\n }\r\n return els;\r\n }\r\n\r\n /** true if we should resize to content. strict=true when only 'sizeToContent:true' and not a number which lets user adjust */\r\n static shouldSizeToContent(n: GridStackNode | undefined, strict = false): boolean {\r\n return n?.grid && (strict ?\r\n (n.sizeToContent === true || (n.grid.opts.sizeToContent === true && n.sizeToContent === undefined)) :\r\n (!!n.sizeToContent || (n.grid.opts.sizeToContent && n.sizeToContent !== false)));\r\n }\r\n\r\n /** returns true if a and b overlap */\r\n static isIntercepted(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return !(a.y >= b.y + b.h || a.y + a.h <= b.y || a.x + a.w <= b.x || a.x >= b.x + b.w);\r\n }\r\n\r\n /** returns true if a and b touch edges or corners */\r\n static isTouching(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return Utils.isIntercepted(a, {x: b.x-0.5, y: b.y-0.5, w: b.w+1, h: b.h+1})\r\n }\r\n\r\n /** returns the area a and b overlap */\r\n static areaIntercept(a: GridStackPosition, b: GridStackPosition): number {\r\n let x0 = (a.x > b.x) ? a.x : b.x;\r\n let x1 = (a.x+a.w < b.x+b.w) ? a.x+a.w : b.x+b.w;\r\n if (x1 <= x0) return 0; // no overlap\r\n let y0 = (a.y > b.y) ? a.y : b.y;\r\n let y1 = (a.y+a.h < b.y+b.h) ? a.y+a.h : b.y+b.h;\r\n if (y1 <= y0) return 0; // no overlap\r\n return (x1-x0) * (y1-y0);\r\n }\r\n\r\n /** returns the area */\r\n static area(a: GridStackPosition): number {\r\n return a.w * a.h;\r\n }\r\n\r\n /**\r\n * Sorts array of nodes\r\n * @param nodes array to sort\r\n * @param dir 1 for ascending, -1 for descending (optional)\r\n **/\r\n static sort(nodes: GridStackNode[], dir: 1 | -1 = 1): GridStackNode[] {\r\n const und = 10000;\r\n return nodes.sort((a, b) => {\r\n let diffY = dir * ((a.y ?? und) - (b.y ?? und));\r\n if (diffY === 0) return dir * ((a.x ?? und) - (b.x ?? und));\r\n return diffY;\r\n });\r\n }\r\n\r\n /** find an item by id */\r\n static find(nodes: GridStackNode[], id: string): GridStackNode | undefined {\r\n return id ? nodes.find(n => n.id === id) : undefined;\r\n }\r\n\r\n /**\r\n * creates a style sheet with style id under given parent\r\n * @param id will set the 'gs-style-id' attribute to that id\r\n * @param parent to insert the stylesheet as first child,\r\n * if none supplied it will be appended to the document head instead.\r\n */\r\n static createStylesheet(id: string, parent?: HTMLElement, options?: { nonce?: string }): CSSStyleSheet {\r\n let style: HTMLStyleElement = document.createElement('style');\r\n const nonce = options?.nonce\r\n if (nonce) style.nonce = nonce\r\n style.setAttribute('type', 'text/css');\r\n style.setAttribute('gs-style-id', id);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if ((style as any).styleSheet) { // TODO: only CSSImportRule have that and different beast ??\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (style as any).styleSheet.cssText = '';\r\n } else {\r\n style.appendChild(document.createTextNode('')); // WebKit hack\r\n }\r\n if (!parent) {\r\n // default to head\r\n parent = document.getElementsByTagName('head')[0];\r\n parent.appendChild(style);\r\n } else {\r\n parent.insertBefore(style, parent.firstChild);\r\n }\r\n return style.sheet as CSSStyleSheet;\r\n }\r\n\r\n /** removed the given stylesheet id */\r\n static removeStylesheet(id: string, parent?: HTMLElement): void {\r\n const target = parent || document;\r\n let el = target.querySelector('STYLE[gs-style-id=' + id + ']');\r\n if (el && el.parentNode) el.remove();\r\n }\r\n\r\n /** inserts a CSS rule */\r\n static addCSSRule(sheet: CSSStyleSheet, selector: string, rules: string): void {\r\n if (typeof sheet.addRule === 'function') {\r\n sheet.addRule(selector, rules);\r\n } else if (typeof sheet.insertRule === 'function') {\r\n sheet.insertRule(`${selector}{${rules}}`);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n static toBool(v: unknown): boolean {\r\n if (typeof v === 'boolean') {\r\n return v;\r\n }\r\n if (typeof v === 'string') {\r\n v = v.toLowerCase();\r\n return !(v === '' || v === 'no' || v === 'false' || v === '0');\r\n }\r\n return Boolean(v);\r\n }\r\n\r\n static toNumber(value: null | string): number {\r\n return (value === null || value.length === 0) ? undefined : Number(value);\r\n }\r\n\r\n static parseHeight(val: numberOrString): HeightData {\r\n let h: number;\r\n let unit = 'px';\r\n if (typeof val === 'string') {\r\n if (val === 'auto' || val === '') h = 0;\r\n else {\r\n let match = val.match(/^(-[0-9]+\\.[0-9]+|[0-9]*\\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%|cm|mm)?$/);\r\n if (!match) {\r\n throw new Error(`Invalid height val = ${val}`);\r\n }\r\n unit = match[2] || 'px';\r\n h = parseFloat(match[1]);\r\n }\r\n } else {\r\n h = val;\r\n }\r\n return { h, unit };\r\n }\r\n\r\n /** copies unset fields in target to use the given default sources values */\r\n // eslint-disable-next-line\r\n static defaults(target, ...sources): {} {\r\n\r\n sources.forEach(source => {\r\n for (const key in source) {\r\n if (!source.hasOwnProperty(key)) return;\r\n if (target[key] === null || target[key] === undefined) {\r\n target[key] = source[key];\r\n } else if (typeof source[key] === 'object' && typeof target[key] === 'object') {\r\n // property is an object, recursively add it's field over... #1373\r\n this.defaults(target[key], source[key]);\r\n }\r\n }\r\n });\r\n\r\n return target;\r\n }\r\n\r\n /** given 2 objects return true if they have the same values. Checks for Object {} having same fields and values (just 1 level down) */\r\n static same(a: unknown, b: unknown): boolean {\r\n if (typeof a !== 'object') return a == b;\r\n if (typeof a !== typeof b) return false;\r\n // else we have object, check just 1 level deep for being same things...\r\n if (Object.keys(a).length !== Object.keys(b).length) return false;\r\n for (const key in a) {\r\n if (a[key] !== b[key]) return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** copies over b size & position (GridStackPosition), and optionally min/max as well */\r\n static copyPos(a: GridStackWidget, b: GridStackWidget, doMinMax = false): GridStackWidget {\r\n if (b.x !== undefined) a.x = b.x;\r\n if (b.y !== undefined) a.y = b.y;\r\n if (b.w !== undefined) a.w = b.w;\r\n if (b.h !== undefined) a.h = b.h;\r\n if (doMinMax) {\r\n if (b.minW) a.minW = b.minW;\r\n if (b.minH) a.minH = b.minH;\r\n if (b.maxW) a.maxW = b.maxW;\r\n if (b.maxH) a.maxH = b.maxH;\r\n }\r\n return a;\r\n }\r\n\r\n /** true if a and b has same size & position */\r\n static samePos(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return a && b && a.x === b.x && a.y === b.y && (a.w || 1) === (b.w || 1) && (a.h || 1) === (b.h || 1);\r\n }\r\n\r\n /** given a node, makes sure it's min/max are valid */\r\n static sanitizeMinMax(node: GridStackNode) {\r\n // remove 0, undefine, null\r\n if (!node.minW) { delete node.minW; }\r\n if (!node.minH) { delete node.minH; }\r\n if (!node.maxW) { delete node.maxW; }\r\n if (!node.maxH) { delete node.maxH; }\r\n }\r\n\r\n /** removes field from the first object if same as the second objects (like diffing) and internal '_' for saving */\r\n static removeInternalAndSame(a: unknown, b: unknown):void {\r\n if (typeof a !== 'object' || typeof b !== 'object') return;\r\n for (let key in a) {\r\n const aVal = a[key];\r\n const bVal = b[key];\r\n if (key[0] === '_' || aVal === bVal) {\r\n delete a[key]\r\n } else if (aVal && typeof aVal === 'object' && bVal !== undefined) {\r\n Utils.removeInternalAndSame(aVal, bVal);\r\n if (!Object.keys(aVal).length) { delete a[key] }\r\n }\r\n }\r\n }\r\n\r\n /** removes internal fields '_' and default values for saving */\r\n static removeInternalForSave(n: GridStackNode, removeEl = true): void {\r\n for (let key in n) { if (key[0] === '_' || n[key] === null || n[key] === undefined ) delete n[key]; }\r\n delete n.grid;\r\n if (removeEl) delete n.el;\r\n // delete default values (will be re-created on read)\r\n if (!n.autoPosition) delete n.autoPosition;\r\n if (!n.noResize) delete n.noResize;\r\n if (!n.noMove) delete n.noMove;\r\n if (!n.locked) delete n.locked;\r\n if (n.w === 1 || n.w === n.minW) delete n.w;\r\n if (n.h === 1 || n.h === n.minH) delete n.h;\r\n }\r\n\r\n /** return the closest parent (or itself) matching the given class */\r\n // static closestUpByClass(el: HTMLElement, name: string): HTMLElement {\r\n // while (el) {\r\n // if (el.classList.contains(name)) return el;\r\n // el = el.parentElement\r\n // }\r\n // return null;\r\n // }\r\n\r\n /** delay calling the given function for given delay, preventing new calls from happening while waiting */\r\n static throttle(func: () => void, delay: number): () => void {\r\n let isWaiting = false;\r\n return (...args) => {\r\n if (!isWaiting) {\r\n isWaiting = true;\r\n setTimeout(() => { func(...args); isWaiting = false; }, delay);\r\n }\r\n }\r\n }\r\n\r\n static removePositioningStyles(el: HTMLElement): void {\r\n let style = el.style;\r\n if (style.position) {\r\n style.removeProperty('position');\r\n }\r\n if (style.left) {\r\n style.removeProperty('left');\r\n }\r\n if (style.top) {\r\n style.removeProperty('top');\r\n }\r\n if (style.width) {\r\n style.removeProperty('width');\r\n }\r\n if (style.height) {\r\n style.removeProperty('height');\r\n }\r\n }\r\n\r\n /** @internal returns the passed element if scrollable, else the closest parent that will, up to the entire document scrolling element */\r\n static getScrollElement(el?: HTMLElement): HTMLElement {\r\n if (!el) return document.scrollingElement as HTMLElement || document.documentElement; // IE support\r\n const style = getComputedStyle(el);\r\n const overflowRegex = /(auto|scroll)/;\r\n\r\n if (overflowRegex.test(style.overflow + style.overflowY)) {\r\n return el;\r\n } else {\r\n return this.getScrollElement(el.parentElement);\r\n }\r\n }\r\n\r\n /** @internal */\r\n static updateScrollPosition(el: HTMLElement, position: {top: number}, distance: number): void {\r\n // is widget in view?\r\n let rect = el.getBoundingClientRect();\r\n let innerHeightOrClientHeight = (window.innerHeight || document.documentElement.clientHeight);\r\n if (rect.top < 0 ||\r\n rect.bottom > innerHeightOrClientHeight\r\n ) {\r\n // set scrollTop of first parent that scrolls\r\n // if parent is larger than el, set as low as possible\r\n // to get entire widget on screen\r\n let offsetDiffDown = rect.bottom - innerHeightOrClientHeight;\r\n let offsetDiffUp = rect.top;\r\n let scrollEl = this.getScrollElement(el);\r\n if (scrollEl !== null) {\r\n let prevScroll = scrollEl.scrollTop;\r\n if (rect.top < 0 && distance < 0) {\r\n // moving up\r\n if (el.offsetHeight > innerHeightOrClientHeight) {\r\n scrollEl.scrollTop += distance;\r\n } else {\r\n scrollEl.scrollTop += Math.abs(offsetDiffUp) > Math.abs(distance) ? distance : offsetDiffUp;\r\n }\r\n } else if (distance > 0) {\r\n // moving down\r\n if (el.offsetHeight > innerHeightOrClientHeight) {\r\n scrollEl.scrollTop += distance;\r\n } else {\r\n scrollEl.scrollTop += offsetDiffDown > distance ? distance : offsetDiffDown;\r\n }\r\n }\r\n // move widget y by amount scrolled\r\n position.top += scrollEl.scrollTop - prevScroll;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal Function used to scroll the page.\r\n *\r\n * @param event `MouseEvent` that triggers the resize\r\n * @param el `HTMLElement` that's being resized\r\n * @param distance Distance from the V edges to start scrolling\r\n */\r\n static updateScrollResize(event: MouseEvent, el: HTMLElement, distance: number): void {\r\n const scrollEl = this.getScrollElement(el);\r\n const height = scrollEl.clientHeight;\r\n // #1727 event.clientY is relative to viewport, so must compare this against position of scrollEl getBoundingClientRect().top\r\n // #1745 Special situation if scrollEl is document 'html': here browser spec states that\r\n // clientHeight is height of viewport, but getBoundingClientRect() is rectangle of html element;\r\n // this discrepancy arises because in reality scrollbar is attached to viewport, not html element itself.\r\n const offsetTop = (scrollEl === this.getScrollElement()) ? 0 : scrollEl.getBoundingClientRect().top;\r\n const pointerPosY = event.clientY - offsetTop;\r\n const top = pointerPosY < distance;\r\n const bottom = pointerPosY > height - distance;\r\n\r\n if (top) {\r\n // This also can be done with a timeout to keep scrolling while the mouse is\r\n // in the scrolling zone. (will have smoother behavior)\r\n scrollEl.scrollBy({ behavior: 'smooth', top: pointerPosY - distance});\r\n } else if (bottom) {\r\n scrollEl.scrollBy({ behavior: 'smooth', top: distance - (height - pointerPosY)});\r\n }\r\n }\r\n\r\n /** single level clone, returning a new object with same top fields. This will share sub objects and arrays */\r\n static clone<T>(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<T>(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<T>(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 properties and sends it as another event to the given target */\r\n public static simulateMouseEvent(e: MouseEvent, simulatedType: string, target?: EventTarget): void {\r\n const simulatedEvent = document.createEvent('MouseEvents');\r\n simulatedEvent.initMouseEvent(\r\n simulatedType, // type\r\n true, // bubbles\r\n true, // cancelable\r\n window, // view\r\n 1, // detail\r\n e.screenX, // screenX\r\n e.screenY, // screenY\r\n e.clientX, // clientX\r\n e.clientY, // clientY\r\n e.ctrlKey, // ctrlKey\r\n e.altKey, // altKey\r\n e.shiftKey, // shiftKey\r\n e.metaKey, // metaKey\r\n 0, // button\r\n e.target // relatedTarget\r\n );\r\n (target || e.target).dispatchEvent(simulatedEvent);\r\n }\r\n\r\n /**\r\n * defines an element that is used to get the offset and scale from grid transforms\r\n * returns the scale and offsets from said element\r\n */\r\n public static getValuesFromTransformedElement(parent: HTMLElement): DragTransform {\r\n const transformReference = document.createElement('div');\r\n Utils.addElStyles(transformReference, {\r\n opacity: '0',\r\n position: 'fixed',\r\n top: 0 + 'px',\r\n left: 0 + 'px',\r\n width: '1px',\r\n height: '1px',\r\n zIndex: '-999999',\r\n });\r\n parent.appendChild(transformReference);\r\n const transformValues = transformReference.getBoundingClientRect();\r\n parent.removeChild(transformReference);\r\n transformReference.remove();\r\n return {\r\n xScale: 1 / transformValues.width,\r\n yScale: 1 / transformValues.height,\r\n xOffset: transformValues.left,\r\n yOffset: transformValues.top,\r\n }\r\n }\r\n\r\n /** swap the given object 2 field values */\r\n public static swap(o: unknown, a: string, b: string): void {\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 // this.el.contains(event.relatedTarget as HTMLElement)\r\n // public static inside(e: MouseEvent, el: HTMLElement): boolean {\r\n // // srcElement, toElement, target: all set to placeholder when leaving simple grid, so we can't use that (Chrome)\r\n // let target: HTMLElement = e.relatedTarget || (e as any).fromElement;\r\n // if (!target) {\r\n // const { bottom, left, right, top } = el.getBoundingClientRect();\r\n // return (e.x < right && e.x > left && e.y < bottom && e.y > top);\r\n // }\r\n // return el.contains(target);\r\n // }\r\n\r\n /** 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}"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * utils.ts 11.0.0\r\n * Copyright (c) 2021-2024 Alain Dumesny - see GridStack root license\r\n */\r\n\r\nimport { GridStack } from './gridstack';\r\nimport { GridStackElement, GridStackNode, GridStackOptions, numberOrString, GridStackPosition, GridStackWidget } from './types';\r\n\r\nexport interface HeightData {\r\n h: number;\r\n unit: string;\r\n}\r\n\r\nexport interface DragTransform {\r\n xScale: number;\r\n yScale: number;\r\n xOffset: number;\r\n yOffset: number;\r\n}\r\n\r\n/** checks for obsolete method names */\r\n// eslint-disable-next-line\r\nexport function obsolete(self, f, oldName: string, newName: string, rev: string): (...args: any[]) => any {\r\n 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/** checks for obsolete grid options (can be used for any fields, but msg is about options) */\r\nexport function obsoleteOpts(opts: GridStackOptions, oldName: string, newName: string, rev: string): void {\r\n if (opts[oldName] !== undefined) {\r\n opts[newName] = opts[oldName];\r\n console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + ' and has been replaced with `' +\r\n newName + '`. It will be **removed** in a future release');\r\n }\r\n}\r\n\r\n/** checks for obsolete grid options which are gone */\r\nexport function obsoleteOptsDel(opts: GridStackOptions, oldName: string, rev: string, info: string): void {\r\n if (opts[oldName] !== undefined) {\r\n console.warn('gridstack.js: Option `' + oldName + '` is deprecated in ' + rev + info);\r\n }\r\n}\r\n\r\n/** checks for obsolete Jquery element attributes */\r\nexport function obsoleteAttr(el: HTMLElement, oldName: string, newName: string, rev: string): void {\r\n 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 * Utility methods\r\n */\r\nexport class Utils {\r\n\r\n /** convert a potential selector into actual list of html elements. optional root which defaults to document (for shadow dom) */\r\n static getElements(els: GridStackElement, root: HTMLElement | Document = document): HTMLElement[] {\r\n if (typeof els === 'string') {\r\n const doc = ('getElementById' in root) ? root as Document : undefined;\r\n\r\n // Note: very common for people use to id='1,2,3' which is only legal as HTML5 id, but not CSS selectors\r\n // so if we start with a number, assume it's an id and just return that one item...\r\n // see https://github.com/gridstack/gridstack.js/issues/2234#issuecomment-1523796562\r\n if (doc && !isNaN(+els[0])) { // start with digit\r\n const el = doc.getElementById(els);\r\n return el ? [el] : [];\r\n }\r\n\r\n let list = root.querySelectorAll(els);\r\n if (!list.length && els[0] !== '.' && els[0] !== '#') {\r\n list = root.querySelectorAll('.' + els);\r\n if (!list.length) { list = root.querySelectorAll('#' + els) }\r\n }\r\n return Array.from(list) as HTMLElement[];\r\n }\r\n return [els];\r\n }\r\n\r\n /** convert a potential selector into actual single element. optional root which defaults to document (for shadow dom) */\r\n static getElement(els: GridStackElement, root: HTMLElement | Document = document): HTMLElement {\r\n if (typeof els === 'string') {\r\n const doc = ('getElementById' in root) ? root as Document : undefined;\r\n if (!els.length) return null;\r\n if (doc && els[0] === '#') {\r\n return doc.getElementById(els.substring(1));\r\n }\r\n if (els[0] === '#' || els[0] === '.' || els[0] === '[') {\r\n return root.querySelector(els);\r\n }\r\n\r\n // if we start with a digit, assume it's an id (error calling querySelector('#1')) as class are not valid CSS\r\n if (doc && !isNaN(+els[0])) { // start with digit\r\n return doc.getElementById(els);\r\n }\r\n\r\n // finally try string, then id, then class\r\n let el = root.querySelector(els);\r\n if (doc && !el) { el = doc.getElementById(els) }\r\n if (!el) { el = root.querySelector('.' + els) }\r\n return el as HTMLElement;\r\n }\r\n return els;\r\n }\r\n\r\n /** create the default grid item divs, and content possibly lazy loaded calling GridStack.renderCB */\r\n static createWidgetDivs(itemClass: string, n: GridStackNode): HTMLElement {\r\n const el = Utils.createDiv(['grid-stack-item', itemClass]);\r\n const cont = Utils.createDiv(['grid-stack-item-content'], el);\r\n\r\n const lazyLoad = n.lazyLoad || n.grid?.opts?.lazyLoad && n.lazyLoad !== false;\r\n if (lazyLoad) {\r\n if (!n.visibleObservable) {\r\n n.visibleObservable = new IntersectionObserver(([entry]) => { if (entry.isIntersecting) {\r\n n.visibleObservable?.disconnect();\r\n delete n.visibleObservable;\r\n GridStack.renderCB(cont, n)\r\n }});\r\n window.setTimeout(() => n.visibleObservable?.observe(el)); // wait until callee sets position attributes\r\n }\r\n } else GridStack.renderCB(cont, n);\r\n\r\n return el;\r\n }\r\n\r\n /** create a div with the given classes */\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 /** true if we should resize to content. strict=true when only 'sizeToContent:true' and not a number which lets user adjust */\r\n static shouldSizeToContent(n: GridStackNode | undefined, strict = false): boolean {\r\n return n?.grid && (strict ?\r\n (n.sizeToContent === true || (n.grid.opts.sizeToContent === true && n.sizeToContent === undefined)) :\r\n (!!n.sizeToContent || (n.grid.opts.sizeToContent && n.sizeToContent !== false)));\r\n }\r\n\r\n /** returns true if a and b overlap */\r\n static isIntercepted(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return !(a.y >= b.y + b.h || a.y + a.h <= b.y || a.x + a.w <= b.x || a.x >= b.x + b.w);\r\n }\r\n\r\n /** returns true if a and b touch edges or corners */\r\n static isTouching(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return Utils.isIntercepted(a, {x: b.x-0.5, y: b.y-0.5, w: b.w+1, h: b.h+1})\r\n }\r\n\r\n /** returns the area a and b overlap */\r\n static areaIntercept(a: GridStackPosition, b: GridStackPosition): number {\r\n 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 /** returns the area */\r\n static area(a: GridStackPosition): number {\r\n return a.w * a.h;\r\n }\r\n\r\n /**\r\n * Sorts array of nodes\r\n * @param nodes array to sort\r\n * @param dir 1 for ascending, -1 for descending (optional)\r\n **/\r\n static sort(nodes: GridStackNode[], dir: 1 | -1 = 1): GridStackNode[] {\r\n const und = 10000;\r\n return nodes.sort((a, b) => {\r\n 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 /** find an item by id */\r\n static find(nodes: GridStackNode[], id: string): GridStackNode | undefined {\r\n return id ? nodes.find(n => n.id === id) : undefined;\r\n }\r\n\r\n /**\r\n * creates a style sheet with style id under given parent\r\n * @param id will set the 'gs-style-id' attribute to that id\r\n * @param parent to insert the stylesheet as first child,\r\n * if none supplied it will be appended to the document head instead.\r\n */\r\n static createStylesheet(id: string, parent?: HTMLElement, options?: { nonce?: string }): CSSStyleSheet {\r\n const style: HTMLStyleElement = document.createElement('style');\r\n const nonce = options?.nonce\r\n if (nonce) style.nonce = nonce\r\n style.setAttribute('type', 'text/css');\r\n style.setAttribute('gs-style-id', id);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if ((style as any).styleSheet) { // TODO: only CSSImportRule have that and different beast ??\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (style as any).styleSheet.cssText = '';\r\n } else {\r\n style.appendChild(document.createTextNode('')); // WebKit hack\r\n }\r\n if (!parent) {\r\n // default to head\r\n parent = document.getElementsByTagName('head')[0];\r\n parent.appendChild(style);\r\n } else {\r\n parent.insertBefore(style, parent.firstChild);\r\n }\r\n return style.sheet as CSSStyleSheet;\r\n }\r\n\r\n /** removed the given stylesheet id */\r\n static removeStylesheet(id: string, parent?: HTMLElement): void {\r\n const target = parent || document;\r\n const el = target.querySelector('STYLE[gs-style-id=' + id + ']');\r\n if (el && el.parentNode) el.remove();\r\n }\r\n\r\n /** inserts a CSS rule */\r\n static addCSSRule(sheet: CSSStyleSheet, selector: string, rules: string): void {\r\n if (typeof sheet.addRule === 'function') {\r\n sheet.addRule(selector, rules);\r\n } else if (typeof sheet.insertRule === 'function') {\r\n sheet.insertRule(`${selector}{${rules}}`);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n static toBool(v: unknown): boolean {\r\n if (typeof v === 'boolean') {\r\n return v;\r\n }\r\n if (typeof v === 'string') {\r\n v = v.toLowerCase();\r\n return !(v === '' || v === 'no' || v === 'false' || v === '0');\r\n }\r\n return Boolean(v);\r\n }\r\n\r\n static toNumber(value: null | string): number {\r\n return (value === null || value.length === 0) ? undefined : Number(value);\r\n }\r\n\r\n static parseHeight(val: numberOrString): HeightData {\r\n let h: number;\r\n let unit = 'px';\r\n if (typeof val === 'string') {\r\n if (val === 'auto' || val === '') h = 0;\r\n else {\r\n 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 /** copies unset fields in target to use the given default sources values */\r\n // eslint-disable-next-line\r\n static defaults(target, ...sources): {} {\r\n\r\n sources.forEach(source => {\r\n for (const key in source) {\r\n if (!source.hasOwnProperty(key)) return;\r\n if (target[key] === null || target[key] === undefined) {\r\n target[key] = source[key];\r\n } else if (typeof source[key] === 'object' && typeof target[key] === 'object') {\r\n // property is an object, recursively add it's field over... #1373\r\n this.defaults(target[key], source[key]);\r\n }\r\n }\r\n });\r\n\r\n return target;\r\n }\r\n\r\n /** given 2 objects return true if they have the same values. Checks for Object {} having same fields and values (just 1 level down) */\r\n static same(a: unknown, b: unknown): boolean {\r\n if (typeof a !== 'object') return a == b;\r\n if (typeof a !== typeof b) return false;\r\n // else we have object, check just 1 level deep for being same things...\r\n if (Object.keys(a).length !== Object.keys(b).length) return false;\r\n for (const key in a) {\r\n if (a[key] !== b[key]) return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** copies over b size & position (GridStackPosition), and optionally min/max as well */\r\n static copyPos(a: GridStackWidget, b: GridStackWidget, doMinMax = false): GridStackWidget {\r\n if (b.x !== undefined) a.x = b.x;\r\n if (b.y !== undefined) a.y = b.y;\r\n if (b.w !== undefined) a.w = b.w;\r\n if (b.h !== undefined) a.h = b.h;\r\n if (doMinMax) {\r\n if (b.minW) a.minW = b.minW;\r\n if (b.minH) a.minH = b.minH;\r\n if (b.maxW) a.maxW = b.maxW;\r\n if (b.maxH) a.maxH = b.maxH;\r\n }\r\n return a;\r\n }\r\n\r\n /** true if a and b has same size & position */\r\n static samePos(a: GridStackPosition, b: GridStackPosition): boolean {\r\n return a && b && a.x === b.x && a.y === b.y && (a.w || 1) === (b.w || 1) && (a.h || 1) === (b.h || 1);\r\n }\r\n\r\n /** given a node, makes sure it's min/max are valid */\r\n static sanitizeMinMax(node: GridStackNode) {\r\n // remove 0, undefine, null\r\n if (!node.minW) { delete node.minW; }\r\n if (!node.minH) { delete node.minH; }\r\n if (!node.maxW) { delete node.maxW; }\r\n if (!node.maxH) { delete node.maxH; }\r\n }\r\n\r\n /** removes field from the first object if same as the second objects (like diffing) and internal '_' for saving */\r\n static removeInternalAndSame(a: unknown, b: unknown):void {\r\n if (typeof a !== 'object' || typeof b !== 'object') return;\r\n for (let key in a) {\r\n const aVal = a[key];\r\n const bVal = b[key];\r\n if (key[0] === '_' || aVal === bVal) {\r\n delete a[key]\r\n } else if (aVal && typeof aVal === 'object' && bVal !== undefined) {\r\n Utils.removeInternalAndSame(aVal, bVal);\r\n if (!Object.keys(aVal).length) { delete a[key] }\r\n }\r\n }\r\n }\r\n\r\n /** removes internal fields '_' and default values for saving */\r\n static removeInternalForSave(n: GridStackNode, removeEl = true): void {\r\n for (let key in n) { if (key[0] === '_' || n[key] === null || n[key] === undefined ) delete n[key]; }\r\n delete n.grid;\r\n if (removeEl) delete n.el;\r\n // delete default values (will be re-created on read)\r\n if (!n.autoPosition) delete n.autoPosition;\r\n if (!n.noResize) delete n.noResize;\r\n if (!n.noMove) delete n.noMove;\r\n if (!n.locked) delete n.locked;\r\n if (n.w === 1 || n.w === n.minW) delete n.w;\r\n if (n.h === 1 || n.h === n.minH) delete n.h;\r\n }\r\n\r\n /** return the closest parent (or itself) matching the given class */\r\n // static closestUpByClass(el: HTMLElement, name: string): HTMLElement {\r\n // while (el) {\r\n // if (el.classList.contains(name)) return el;\r\n // el = el.parentElement\r\n // }\r\n // return null;\r\n // }\r\n\r\n /** delay calling the given function for given delay, preventing new calls from happening while waiting */\r\n static throttle(func: () => void, delay: number): () => void {\r\n let isWaiting = false;\r\n return (...args) => {\r\n if (!isWaiting) {\r\n isWaiting = true;\r\n setTimeout(() => { func(...args); isWaiting = false; }, delay);\r\n }\r\n }\r\n }\r\n\r\n static removePositioningStyles(el: HTMLElement): void {\r\n 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 this.getScrollElement(el.parentElement);\r\n }\r\n }\r\n\r\n /** @internal */\r\n static updateScrollPosition(el: HTMLElement, position: {top: number}, distance: number): void {\r\n // is widget in view?\r\n const rect = el.getBoundingClientRect();\r\n const innerHeightOrClientHeight = (window.innerHeight || document.documentElement.clientHeight);\r\n if (rect.top < 0 ||\r\n rect.bottom > innerHeightOrClientHeight\r\n ) {\r\n // set scrollTop of first parent that scrolls\r\n // if parent is larger than el, set as low as possible\r\n // to get entire widget on screen\r\n const offsetDiffDown = rect.bottom - innerHeightOrClientHeight;\r\n const offsetDiffUp = rect.top;\r\n const scrollEl = this.getScrollElement(el);\r\n if (scrollEl !== null) {\r\n const prevScroll = scrollEl.scrollTop;\r\n if (rect.top < 0 && distance < 0) {\r\n // moving up\r\n if (el.offsetHeight > innerHeightOrClientHeight) {\r\n scrollEl.scrollTop += distance;\r\n } else {\r\n scrollEl.scrollTop += Math.abs(offsetDiffUp) > Math.abs(distance) ? distance : offsetDiffUp;\r\n }\r\n } else if (distance > 0) {\r\n // moving down\r\n if (el.offsetHeight > innerHeightOrClientHeight) {\r\n scrollEl.scrollTop += distance;\r\n } else {\r\n scrollEl.scrollTop += offsetDiffDown > distance ? distance : offsetDiffDown;\r\n }\r\n }\r\n // move widget y by amount scrolled\r\n position.top += scrollEl.scrollTop - prevScroll;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal Function used to scroll the page.\r\n *\r\n * @param event `MouseEvent` that triggers the resize\r\n * @param el `HTMLElement` that's being resized\r\n * @param distance Distance from the V edges to start scrolling\r\n */\r\n static updateScrollResize(event: MouseEvent, el: HTMLElement, distance: number): void {\r\n const scrollEl = this.getScrollElement(el);\r\n const height = scrollEl.clientHeight;\r\n // #1727 event.clientY is relative to viewport, so must compare this against position of scrollEl getBoundingClientRect().top\r\n // #1745 Special situation if scrollEl is document 'html': here browser spec states that\r\n // clientHeight is height of viewport, but getBoundingClientRect() is rectangle of html element;\r\n // this discrepancy arises because in reality scrollbar is attached to viewport, not html element itself.\r\n const offsetTop = (scrollEl === this.getScrollElement()) ? 0 : scrollEl.getBoundingClientRect().top;\r\n const pointerPosY = event.clientY - offsetTop;\r\n const top = pointerPosY < distance;\r\n const bottom = pointerPosY > height - distance;\r\n\r\n if (top) {\r\n // This also can be done with a timeout to keep scrolling while the mouse is\r\n // in the scrolling zone. (will have smoother behavior)\r\n scrollEl.scrollBy({ behavior: 'smooth', top: pointerPosY - distance});\r\n } else if (bottom) {\r\n scrollEl.scrollBy({ behavior: 'smooth', top: distance - (height - pointerPosY)});\r\n }\r\n }\r\n\r\n /** single level clone, returning a new object with same top fields. This will share sub objects and arrays */\r\n static clone<T>(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<T>(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<T>(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 properties and sends it as another event to the given target */\r\n public static simulateMouseEvent(e: MouseEvent, simulatedType: string, target?: EventTarget): void {\r\n const simulatedEvent = document.createEvent('MouseEvents');\r\n simulatedEvent.initMouseEvent(\r\n simulatedType, // type\r\n true, // bubbles\r\n true, // cancelable\r\n window, // view\r\n 1, // detail\r\n e.screenX, // screenX\r\n e.screenY, // screenY\r\n e.clientX, // clientX\r\n e.clientY, // clientY\r\n e.ctrlKey, // ctrlKey\r\n e.altKey, // altKey\r\n e.shiftKey, // shiftKey\r\n e.metaKey, // metaKey\r\n 0, // button\r\n e.target // relatedTarget\r\n );\r\n (target || e.target).dispatchEvent(simulatedEvent);\r\n }\r\n\r\n /**\r\n * defines an element that is used to get the offset and scale from grid transforms\r\n * returns the scale and offsets from said element\r\n */\r\n public static getValuesFromTransformedElement(parent: HTMLElement): DragTransform {\r\n const transformReference = document.createElement('div');\r\n Utils.addElStyles(transformReference, {\r\n opacity: '0',\r\n position: 'fixed',\r\n top: 0 + 'px',\r\n left: 0 + 'px',\r\n width: '1px',\r\n height: '1px',\r\n zIndex: '-999999',\r\n });\r\n parent.appendChild(transformReference);\r\n const transformValues = transformReference.getBoundingClientRect();\r\n parent.removeChild(transformReference);\r\n transformReference.remove();\r\n return {\r\n xScale: 1 / transformValues.width,\r\n yScale: 1 / transformValues.height,\r\n xOffset: transformValues.left,\r\n yOffset: transformValues.top,\r\n }\r\n }\r\n\r\n /** swap the given object 2 field values */\r\n public static swap(o: unknown, a: string, b: string): void {\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 // this.el.contains(event.relatedTarget as HTMLElement)\r\n // public static inside(e: MouseEvent, el: HTMLElement): boolean {\r\n // // srcElement, toElement, target: all set to placeholder when leaving simple grid, so we can't use that (Chrome)\r\n // 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}"]}
|
package/doc/CHANGES.md
CHANGED
|
@@ -5,6 +5,7 @@ Change log
|
|
|
5
5
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
|
6
6
|
**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
|
|
7
7
|
|
|
8
|
+
- [11.0.0 (2024-10-20)](#1100-2024-10-20)
|
|
8
9
|
- [10.3.1 (2024-07-21)](#1031-2024-07-21)
|
|
9
10
|
- [10.3.0 (2024-06-26)](#1030-2024-06-26)
|
|
10
11
|
- [10.2.1 (2024-06-23)](#1021-2024-06-23)
|
|
@@ -113,6 +114,13 @@ Change log
|
|
|
113
114
|
|
|
114
115
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
|
115
116
|
|
|
117
|
+
## 11.0.0 (2024-10-20)
|
|
118
|
+
* feat: [#2826](https://github.com/gridstack/gridstack.js/pull/2826) Lazy loading of widget content until visible (`GridStackOptions.lazyLoad` and `GridStackWidget.lazyLoad`)
|
|
119
|
+
* feat: [#2818](https://github.com/gridstack/gridstack.js/pull/2818) support for Angular Component hosting true sub-grids (that size according to parent) without requring them to be only child of grid-item-content.
|
|
120
|
+
* fix: [#2231](https://github.com/gridstack/gridstack.js/bug/2231),[#1840](https://github.com/gridstack/gridstack.js/bug/1840),[#2354](https://github.com/gridstack/gridstack.js/bug/2354)
|
|
121
|
+
big overall to how we do sidepanel drag&drop helper. see release notes.
|
|
122
|
+
* fix: [#2736](https://github.com/gridstack/gridstack.js/bug/2736) safe practices around GridStackWidget.content no longer setting innerHTML
|
|
123
|
+
|
|
116
124
|
## 10.3.1 (2024-07-21)
|
|
117
125
|
* fix: [#2734](https://github.com/gridstack/gridstack.js/bug/2734) rotate() JS error
|
|
118
126
|
* fix: [#2741](https://github.com/gridstack/gridstack.js/pull/2741) resizeToContent JS error with nested grid
|
package/doc/README.md
CHANGED
|
@@ -9,9 +9,8 @@ gridstack.js API
|
|
|
9
9
|
- [Responsive](#responsive)
|
|
10
10
|
- [Breakpoint](#breakpoint)
|
|
11
11
|
- [DDDragOpt](#dddragopt)
|
|
12
|
-
- [DDDragInOpt extends DDDragOpt](#dddraginopt-extends-dddragopt)
|
|
13
12
|
- [Grid attributes](#grid-attributes)
|
|
14
|
-
- [Item Options](#item-options)
|
|
13
|
+
- [Item Options - GridStackWidget](#item-options---gridstackwidget)
|
|
15
14
|
- [Item attributes](#item-attributes)
|
|
16
15
|
- [Events](#events)
|
|
17
16
|
- [added(event, items)](#addedevent-items)
|
|
@@ -30,10 +29,10 @@ gridstack.js API
|
|
|
30
29
|
- [`init(options: GridStackOptions = {}, elOrString: GridStackElement = '.grid-stack'): GridStack`](#initoptions-gridstackoptions---elorstring-gridstackelement--grid-stack-gridstack)
|
|
31
30
|
- [`initAll(options: GridStackOptions = {}, selector = '.grid-stack'): GridStack[]`](#initalloptions-gridstackoptions---selector--grid-stack-gridstack)
|
|
32
31
|
- [`addGrid(parent: HTMLElement, opt: GridStackOptions = {}): GridStack `](#addgridparent-htmlelement-opt-gridstackoptions---gridstack-)
|
|
33
|
-
- [`setupDragIn(dragIn?: string | HTMLElement[], dragInOptions?:
|
|
32
|
+
- [`setupDragIn(dragIn?: string | HTMLElement[], dragInOptions?: DDDragOpt, widgets?: GridStackWidget[], root = HTMLElement | Document)`](#setupdragindragin-string--htmlelement-draginoptions-dddragopt-widgets-gridstackwidget-root--htmlelement--document)
|
|
34
33
|
- [`GridStack.registerEngine(engineClass: typeof GridStackEngine)`](#gridstackregisterengineengineclass-typeof-gridstackengine)
|
|
35
34
|
- [API](#api)
|
|
36
|
-
- [`addWidget(
|
|
35
|
+
- [`addWidget(w: GridStackWidget): GridItemHTMLElement`](#addwidgetw-gridstackwidget-griditemhtmlelement)
|
|
37
36
|
- [`batchUpdate(flag = true)`](#batchupdateflag--true)
|
|
38
37
|
- [`compact(layout: CompactOptions = 'compact', doSort = true)`](#compactlayout-compactoptions--compact-dosort--true)
|
|
39
38
|
- [`cellHeight(val: number, update = true)`](#cellheightval-number-update--true)
|
|
@@ -107,6 +106,7 @@ gridstack.js API
|
|
|
107
106
|
- `handle` - draggable handle selector (default: `'.grid-stack-item-content'`)
|
|
108
107
|
- `handleClass` - draggable handle class (e.g. `'grid-stack-item-content'`). If set `handle` is ignored (default: `null`)
|
|
109
108
|
- `itemClass` - widget class (default: `'grid-stack-item'`)
|
|
109
|
+
- `lazyLoad?`: boolean - true when widgets are only created when they scroll into view (visible). also overridable per widget in `GridStackWidget`
|
|
110
110
|
- `margin` - gap size around grid item and content (default: `10`). Can be:
|
|
111
111
|
* an integer (px)
|
|
112
112
|
* a string (ex: '2em', '20px', '2rem')
|
|
@@ -147,9 +147,7 @@ v10.x supports a much richer responsive behavior, you can have breakpoints of wi
|
|
|
147
147
|
- `pause`?: boolean | number - if set (true | msec), dragging placement (collision) will only happen after a pause by the user. Note: this is Global
|
|
148
148
|
- `scroll`?: boolean - default to 'true', enable or disable the scroll when an element is dragged on bottom or top of the grid.
|
|
149
149
|
- `cancel`?: string - prevents dragging from starting on specified elements, listed as comma separated selectors (eg: '.no-drag'). default built in is 'input,textarea,button,select,option'
|
|
150
|
-
|
|
151
|
-
### DDDragInOpt extends DDDragOpt
|
|
152
|
-
- `helper`?: 'clone' | ((event: Event) => HTMLElement) - helper function when dropping (ex: 'clone' or your own method)
|
|
150
|
+
- `helper`?: 'clone' | ((el: HTMLElement) => HTMLElement) - helper function when dragging side panel items that need to be cloned before dropping (ex: 'clone' or your own method)
|
|
153
151
|
|
|
154
152
|
## Grid attributes
|
|
155
153
|
|
|
@@ -158,7 +156,7 @@ most of the above options are also available as HTML attributes using the `gs-`
|
|
|
158
156
|
Extras:
|
|
159
157
|
- `gs-current-row` - (internal) current rows amount. Set by the library only. Can be used by the CSS rules.
|
|
160
158
|
|
|
161
|
-
## Item Options
|
|
159
|
+
## Item Options - GridStackWidget
|
|
162
160
|
|
|
163
161
|
options you can pass when calling `addWidget()`, `update()`, `load()` and many others
|
|
164
162
|
|
|
@@ -177,6 +175,7 @@ You need to add `noResize` and `noMove` attributes to completely lock the widget
|
|
|
177
175
|
Note: This also allow you to set a maximum h value (but user changeable during normal resizing) to prevent unlimited content from taking too much space (get scrollbar)
|
|
178
176
|
- `subGrid`?: GridStackOptions - optional nested grid options and list of children
|
|
179
177
|
- `subGridDynamic`?: boolean - enable/disable the creation of sub-grids on the fly by dragging items completely over others (nest) vs partially (push). Forces `DDDragOpt.pause=true` to accomplish that.
|
|
178
|
+
- `lazyLoad?`: boolean - true when widgets are only created when they scroll into view (visible). also optin on entire grid.
|
|
180
179
|
|
|
181
180
|
## Item attributes
|
|
182
181
|
|
|
@@ -341,28 +340,27 @@ grids.forEach(...)
|
|
|
341
340
|
* @param opt grids options used to initialize the grid, and list of children
|
|
342
341
|
* see [nested.html](https://github.com/gridstack/gridstack.js/tree/master/demo/nested.html) demo
|
|
343
342
|
|
|
344
|
-
### `setupDragIn(dragIn?: string | HTMLElement[], dragInOptions?:
|
|
343
|
+
### `setupDragIn(dragIn?: string | HTMLElement[], dragInOptions?: DDDragOpt, widgets?: GridStackWidget[], root = HTMLElement | Document)`
|
|
345
344
|
|
|
346
345
|
* call to setup dragging in from the outside (say toolbar), by specifying the class selection and options.
|
|
347
346
|
Called during `GridStack.init()` as options, but can also be called directly (last param are cached) in case the toolbar is dynamically create and needs to change later.
|
|
348
|
-
* @param dragIn string selector (ex: `'.sidebar
|
|
349
|
-
* @param dragInOptions options - see `
|
|
350
|
-
* @param
|
|
351
|
-
|
|
347
|
+
* @param `dragIn` string selector (ex: `'.sidebar-item'`) or list of dom elements
|
|
348
|
+
* @param `dragInOptions` options - see `DDDragOpt`. default: `{appendTo: 'body', helper: 'clone'}`
|
|
349
|
+
* @param `widgets` GridStackWidget def to assign to each element which defines what to create on drop
|
|
350
|
+
* @param `root` optional root which defaults to document (for shadow dom pass the parent HTMLDocument)
|
|
352
351
|
|
|
353
352
|
### `GridStack.registerEngine(engineClass: typeof GridStackEngine)`
|
|
354
353
|
|
|
355
354
|
* call to specify global custom engine subclass - see instead `GridStackOptions.engineClass` if you only need to replace just one instance.
|
|
356
355
|
## API
|
|
357
356
|
|
|
358
|
-
### `addWidget(
|
|
357
|
+
### `addWidget(w: GridStackWidget): GridItemHTMLElement`
|
|
359
358
|
|
|
360
|
-
Creates new widget and returns it.
|
|
359
|
+
Creates new widget and returns it.
|
|
361
360
|
|
|
362
361
|
Parameters:
|
|
363
362
|
|
|
364
|
-
- `
|
|
365
|
-
- `options`: GridStackWidget - widget position/size options (optional, and ignore if first param is already option) - see GridStackWidget
|
|
363
|
+
- `w`: GridStackWidget - widget position/size options - see GridStackWidget
|
|
366
364
|
|
|
367
365
|
Widget will be always placed even if result height is more than actual grid height. You need to use `willItFit` method
|
|
368
366
|
before calling `addWidget` for additional check.
|
|
@@ -370,8 +368,6 @@ before calling `addWidget` for additional check.
|
|
|
370
368
|
```js
|
|
371
369
|
let grid = GridStack.init();
|
|
372
370
|
grid.addWidget({w: 3, content: 'hello'});
|
|
373
|
-
// or
|
|
374
|
-
grid.addWidget('<div class="grid-stack-item"><div class="grid-stack-item-content">hello</div></div>', {w: 3});
|
|
375
371
|
```
|
|
376
372
|
|
|
377
373
|
### `batchUpdate(flag = true)`
|
|
@@ -528,10 +524,9 @@ Used to add a subgrid into an existing grid.
|
|
|
528
524
|
const grid = Gridstack.init()
|
|
529
525
|
grid.el.appendChild(`
|
|
530
526
|
<div id="gsi-1" gs-x="0" gs-y="0" gs-w="3" gs-h="2" gs-auto-position="true">
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
</div>
|
|
527
|
+
<div class="grid-stack" id="nested-grid">
|
|
528
|
+
<div id="gsi-2" gs-x="0" gs-y="0" gs-w="3" gs-h="2" gs-auto-position="true"></div>
|
|
529
|
+
</div>
|
|
535
530
|
</div>`)
|
|
536
531
|
grid.makeSubGrid(grid.el.getElementById('nested-grid'))
|
|
537
532
|
```
|
package/package.json
CHANGED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* gridstack-item.component.ts 10.3.1
|
|
3
|
-
* Copyright (c) 2022 Alain Dumesny - see GridStack root license
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Base interface that all widgets need to implement in order for GridstackItemComponent to correctly save/load/delete/..
|
|
7
|
-
*/
|
|
8
|
-
import { Injectable } from '@angular/core';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
export class BaseWidget {
|
|
11
|
-
/**
|
|
12
|
-
* REDEFINE to return an object representing the data needed to re-create yourself, other than `selector` already handled.
|
|
13
|
-
* This should map directly to the @Input() fields of this objects on create, so a simple apply can be used on read
|
|
14
|
-
*/
|
|
15
|
-
serialize() { return; }
|
|
16
|
-
/**
|
|
17
|
-
* REDEFINE this if your widget needs to read from saved data and transform it to create itself - you do this for
|
|
18
|
-
* things that are not mapped directly into @Input() fields for example.
|
|
19
|
-
*/
|
|
20
|
-
deserialize(w) {
|
|
21
|
-
if (w.input)
|
|
22
|
-
Object.assign(this, w.input);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
BaseWidget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BaseWidget, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26
|
-
BaseWidget.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BaseWidget });
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BaseWidget, decorators: [{
|
|
28
|
-
type: Injectable
|
|
29
|
-
}] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS13aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hbmd1bGFyL3Byb2plY3RzL2xpYi9zcmMvbGliL2Jhc2Utd2lkZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVIOztHQUVHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJMUMsTUFBTSxPQUFnQixVQUFVO0lBQy9COzs7T0FHRztJQUNJLFNBQVMsS0FBZ0MsT0FBTyxDQUFDLENBQUM7SUFFekQ7OztPQUdHO0lBQ0ksV0FBVyxDQUFDLENBQW9CO1FBQ3JDLElBQUksQ0FBQyxDQUFDLEtBQUs7WUFBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7dUdBYm9CLFVBQVU7MkdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIGdyaWRzdGFjay1pdGVtLmNvbXBvbmVudC50cyAxMC4zLjFcclxuICogQ29weXJpZ2h0IChjKSAyMDIyIEFsYWluIER1bWVzbnkgLSBzZWUgR3JpZFN0YWNrIHJvb3QgbGljZW5zZVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBCYXNlIGludGVyZmFjZSB0aGF0IGFsbCB3aWRnZXRzIG5lZWQgdG8gaW1wbGVtZW50IGluIG9yZGVyIGZvciBHcmlkc3RhY2tJdGVtQ29tcG9uZW50IHRvIGNvcnJlY3RseSBzYXZlL2xvYWQvZGVsZXRlLy4uXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0NvbXBJbnB1dHMsIE5nR3JpZFN0YWNrV2lkZ2V0IH0gZnJvbSAnLi9ncmlkc3RhY2suY29tcG9uZW50JztcclxuXHJcbiBASW5qZWN0YWJsZSgpXHJcbiBleHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVdpZGdldCB7XHJcbiAgLyoqXHJcbiAgICogUkVERUZJTkUgdG8gcmV0dXJuIGFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGRhdGEgbmVlZGVkIHRvIHJlLWNyZWF0ZSB5b3Vyc2VsZiwgb3RoZXIgdGhhbiBgc2VsZWN0b3JgIGFscmVhZHkgaGFuZGxlZC5cclxuICAgKiBUaGlzIHNob3VsZCBtYXAgZGlyZWN0bHkgdG8gdGhlIEBJbnB1dCgpIGZpZWxkcyBvZiB0aGlzIG9iamVjdHMgb24gY3JlYXRlLCBzbyBhIHNpbXBsZSBhcHBseSBjYW4gYmUgdXNlZCBvbiByZWFkXHJcbiAgICovXHJcbiAgcHVibGljIHNlcmlhbGl6ZSgpOiBOZ0NvbXBJbnB1dHMgfCB1bmRlZmluZWQgIHsgcmV0dXJuOyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJFREVGSU5FIHRoaXMgaWYgeW91ciB3aWRnZXQgbmVlZHMgdG8gcmVhZCBmcm9tIHNhdmVkIGRhdGEgYW5kIHRyYW5zZm9ybSBpdCB0byBjcmVhdGUgaXRzZWxmIC0geW91IGRvIHRoaXMgZm9yXHJcbiAgICogdGhpbmdzIHRoYXQgYXJlIG5vdCBtYXBwZWQgZGlyZWN0bHkgaW50byBASW5wdXQoKSBmaWVsZHMgZm9yIGV4YW1wbGUuXHJcbiAgICovXHJcbiAgcHVibGljIGRlc2VyaWFsaXplKHc6IE5nR3JpZFN0YWNrV2lkZ2V0KSAge1xyXG4gICAgaWYgKHcuaW5wdXQpICBPYmplY3QuYXNzaWduKHRoaXMsIHcuaW5wdXQpO1xyXG4gIH1cclxuIH1cclxuIl19
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* gridstack-item.component.ts 10.3.1
|
|
3
|
-
* Copyright (c) 2022 Alain Dumesny - see GridStack root license
|
|
4
|
-
*/
|
|
5
|
-
import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
/**
|
|
8
|
-
* HTML Component Wrapper for gridstack items, in combination with GridstackComponent for parent grid
|
|
9
|
-
*/
|
|
10
|
-
export class GridstackItemComponent {
|
|
11
|
-
constructor(elementRef) {
|
|
12
|
-
this.elementRef = elementRef;
|
|
13
|
-
this.el._gridItemComp = this;
|
|
14
|
-
}
|
|
15
|
-
/** list of options for creating/updating this item */
|
|
16
|
-
set options(val) {
|
|
17
|
-
if (this.el.gridstackNode?.grid) {
|
|
18
|
-
// already built, do an update...
|
|
19
|
-
this.el.gridstackNode.grid.update(this.el, val);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
// store our custom element in options so we can update it and not re-create a generic div!
|
|
23
|
-
this._options = { ...val, el: this.el };
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
/** return the latest grid options (from GS once built, otherwise initial values) */
|
|
27
|
-
get options() {
|
|
28
|
-
return this.el.gridstackNode || this._options || { el: this.el };
|
|
29
|
-
}
|
|
30
|
-
/** return the native element that contains grid specific fields as well */
|
|
31
|
-
get el() { return this.elementRef.nativeElement; }
|
|
32
|
-
/** clears the initial options now that we've built */
|
|
33
|
-
clearOptions() {
|
|
34
|
-
delete this._options;
|
|
35
|
-
}
|
|
36
|
-
ngOnDestroy() {
|
|
37
|
-
delete this.ref;
|
|
38
|
-
delete this.el._gridItemComp;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
GridstackItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GridstackItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
42
|
-
GridstackItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GridstackItemComponent, selector: "gridstack-item", inputs: { options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `
|
|
43
|
-
<div class="grid-stack-item-content">
|
|
44
|
-
<!-- where dynamic items go based on component types, or sub-grids, etc...) -->
|
|
45
|
-
<ng-template #container></ng-template>
|
|
46
|
-
<!-- any static (defined in dom) content goes here -->
|
|
47
|
-
<ng-content></ng-content>
|
|
48
|
-
<!-- fallback HTML content from GridStackWidget content field if used instead -->
|
|
49
|
-
{{options.content}}
|
|
50
|
-
</div>`, isInline: true, styles: [":host{display:block}\n"] });
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GridstackItemComponent, decorators: [{
|
|
52
|
-
type: Component,
|
|
53
|
-
args: [{ selector: 'gridstack-item', template: `
|
|
54
|
-
<div class="grid-stack-item-content">
|
|
55
|
-
<!-- where dynamic items go based on component types, or sub-grids, etc...) -->
|
|
56
|
-
<ng-template #container></ng-template>
|
|
57
|
-
<!-- any static (defined in dom) content goes here -->
|
|
58
|
-
<ng-content></ng-content>
|
|
59
|
-
<!-- fallback HTML content from GridStackWidget content field if used instead -->
|
|
60
|
-
{{options.content}}
|
|
61
|
-
</div>`, styles: [":host{display:block}\n"] }]
|
|
62
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { container: [{
|
|
63
|
-
type: ViewChild,
|
|
64
|
-
args: ['container', { read: ViewContainerRef, static: true }]
|
|
65
|
-
}], options: [{
|
|
66
|
-
type: Input
|
|
67
|
-
}] } });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZHN0YWNrLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYW5ndWxhci9wcm9qZWN0cy9saWIvc3JjL2xpYi9ncmlkc3RhY2staXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUEyQixNQUFNLGVBQWUsQ0FBQzs7QUFTbkg7O0dBRUc7QUFpQkgsTUFBTSxPQUFPLHNCQUFzQjtJQW9DakMsWUFBNkIsVUFBMkM7UUFBM0MsZUFBVSxHQUFWLFVBQVUsQ0FBaUM7UUFDdEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUEzQkQsc0RBQXNEO0lBQ3RELElBQW9CLE9BQU8sQ0FBQyxHQUFrQjtRQUM1QyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRTtZQUMvQixpQ0FBaUM7WUFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2pEO2FBQU07WUFDTCwyRkFBMkY7WUFDM0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBQ0Qsb0ZBQW9GO0lBQ3BGLElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksRUFBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBQyxDQUFDO0lBQ2pFLENBQUM7SUFJRCwyRUFBMkU7SUFDM0UsSUFBVyxFQUFFLEtBQThCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBRWxGLHNEQUFzRDtJQUMvQyxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBTU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDaEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUMvQixDQUFDOzttSEEzQ1Usc0JBQXNCO3VHQUF0QixzQkFBc0IseUtBR0QsZ0JBQWdCLDJDQWpCdEM7Ozs7Ozs7O1dBUUQ7MkZBTUUsc0JBQXNCO2tCQWhCbEMsU0FBUzsrQkFDRSxnQkFBZ0IsWUFDaEI7Ozs7Ozs7O1dBUUQ7aUdBUytELFNBQVM7c0JBQWhGLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBUzNDLE9BQU87c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGdyaWRzdGFjay1pdGVtLmNvbXBvbmVudC50cyAxMC4zLjFcbiAqIENvcHlyaWdodCAoYykgMjAyMiBBbGFpbiBEdW1lc255IC0gc2VlIEdyaWRTdGFjayByb290IGxpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIE9uRGVzdHJveSwgQ29tcG9uZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcmlkSXRlbUhUTUxFbGVtZW50LCBHcmlkU3RhY2tOb2RlIH0gZnJvbSAnZ3JpZHN0YWNrJztcbmltcG9ydCB7IEJhc2VXaWRnZXQgfSBmcm9tICcuL2Jhc2Utd2lkZ2V0JztcblxuLyoqIHN0b3JlIGVsZW1lbnQgdG8gTmcgQ2xhc3MgcG9pbnRlciBiYWNrICovXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRJdGVtQ29tcEhUTUxFbGVtZW50IGV4dGVuZHMgR3JpZEl0ZW1IVE1MRWxlbWVudCB7XG4gIF9ncmlkSXRlbUNvbXA/OiBHcmlkc3RhY2tJdGVtQ29tcG9uZW50O1xufVxuXG4vKipcbiAqIEhUTUwgQ29tcG9uZW50IFdyYXBwZXIgZm9yIGdyaWRzdGFjayBpdGVtcywgaW4gY29tYmluYXRpb24gd2l0aCBHcmlkc3RhY2tDb21wb25lbnQgZm9yIHBhcmVudCBncmlkXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyaWRzdGFjay1pdGVtJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1zdGFjay1pdGVtLWNvbnRlbnRcIj5cbiAgICAgIDwhLS0gd2hlcmUgZHluYW1pYyBpdGVtcyBnbyBiYXNlZCBvbiBjb21wb25lbnQgdHlwZXMsIG9yIHN1Yi1ncmlkcywgZXRjLi4uKSAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29udGFpbmVyPjwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIGFueSBzdGF0aWMgKGRlZmluZWQgaW4gZG9tKSBjb250ZW50IGdvZXMgaGVyZSAtLT5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwhLS0gZmFsbGJhY2sgSFRNTCBjb250ZW50IGZyb20gR3JpZFN0YWNrV2lkZ2V0IGNvbnRlbnQgZmllbGQgaWYgdXNlZCBpbnN0ZWFkIC0tPlxuICAgICAge3tvcHRpb25zLmNvbnRlbnR9fVxuICAgIDwvZGl2PmAsXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIGBdLFxuICAvLyBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCwgLy8gSUZGIHlvdSB3YW50IHRvIG9wdGltaXplIGFuZCBjb250cm9sIHdoZW4gQ2hhbmdlRGV0ZWN0aW9uIG5lZWRzIHRvIGhhcHBlbi4uLlxufSlcbmV4cG9ydCBjbGFzcyBHcmlkc3RhY2tJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAvKiogY29udGFpbmVyIHRvIGFwcGVuZCBpdGVtcyBkeW5hbWljYWxseSAqL1xuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZX0pIHB1YmxpYyBjb250YWluZXI/OiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIC8qKiBDb21wb25lbnRSZWYgb2Ygb3Vyc2VsZiAtIHVzZWQgYnkgZHluYW1pYyBvYmplY3QgdG8gY29ycmVjdGx5IGdldCByZW1vdmVkICovXG4gIHB1YmxpYyByZWY6IENvbXBvbmVudFJlZjxHcmlkc3RhY2tJdGVtQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICAvKiogY2hpbGQgY29tcG9uZW50IHNvIHdlIGNhbiBzYXZlL3Jlc3RvcmUgYWRkaXRpb25hbCBkYXRhIHRvIGJlIHNhdmVkIGFsb25nICovXG4gIHB1YmxpYyBjaGlsZFdpZGdldDogQmFzZVdpZGdldCB8IHVuZGVmaW5lZDtcblxuICAvKiogbGlzdCBvZiBvcHRpb25zIGZvciBjcmVhdGluZy91cGRhdGluZyB0aGlzIGl0ZW0gKi9cbiAgQElucHV0KCkgcHVibGljIHNldCBvcHRpb25zKHZhbDogR3JpZFN0YWNrTm9kZSkge1xuICAgIGlmICh0aGlzLmVsLmdyaWRzdGFja05vZGU/LmdyaWQpIHtcbiAgICAgIC8vIGFscmVhZHkgYnVpbHQsIGRvIGFuIHVwZGF0ZS4uLlxuICAgICAgdGhpcy5lbC5ncmlkc3RhY2tOb2RlLmdyaWQudXBkYXRlKHRoaXMuZWwsIHZhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHN0b3JlIG91ciBjdXN0b20gZWxlbWVudCBpbiBvcHRpb25zIHNvIHdlIGNhbiB1cGRhdGUgaXQgYW5kIG5vdCByZS1jcmVhdGUgYSBnZW5lcmljIGRpdiFcbiAgICAgIHRoaXMuX29wdGlvbnMgPSB7Li4udmFsLCBlbDogdGhpcy5lbH07XG4gICAgfVxuICB9XG4gIC8qKiByZXR1cm4gdGhlIGxhdGVzdCBncmlkIG9wdGlvbnMgKGZyb20gR1Mgb25jZSBidWlsdCwgb3RoZXJ3aXNlIGluaXRpYWwgdmFsdWVzKSAqL1xuICBwdWJsaWMgZ2V0IG9wdGlvbnMoKTogR3JpZFN0YWNrTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMuZWwuZ3JpZHN0YWNrTm9kZSB8fCB0aGlzLl9vcHRpb25zIHx8IHtlbDogdGhpcy5lbH07XG4gIH1cblxuICBwcml2YXRlIF9vcHRpb25zPzogR3JpZFN0YWNrTm9kZTtcblxuICAvKiogcmV0dXJuIHRoZSBuYXRpdmUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIGdyaWQgc3BlY2lmaWMgZmllbGRzIGFzIHdlbGwgKi9cbiAgcHVibGljIGdldCBlbCgpOiBHcmlkSXRlbUNvbXBIVE1MRWxlbWVudCB7IHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDsgfVxuXG4gIC8qKiBjbGVhcnMgdGhlIGluaXRpYWwgb3B0aW9ucyBub3cgdGhhdCB3ZSd2ZSBidWlsdCAqL1xuICBwdWJsaWMgY2xlYXJPcHRpb25zKCkge1xuICAgIGRlbGV0ZSB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEdyaWRJdGVtSFRNTEVsZW1lbnQ+KSB7XG4gICAgdGhpcy5lbC5fZ3JpZEl0ZW1Db21wID0gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBkZWxldGUgdGhpcy5yZWY7XG4gICAgZGVsZXRlIHRoaXMuZWwuX2dyaWRJdGVtQ29tcDtcbiAgfVxufVxuIl19
|