{ "version": 3, "sources": ["../../../src/plugins/slick.cellrangedecorator.ts"], "sourcesContent": ["import type { CSSStyleDeclarationWritable, CellRangeDecoratorOption, SlickPlugin } from '../models/index';\nimport { Utils as Utils_, SlickRange } from '../slick.core';\nimport type { SlickGrid } from '../slick.grid';\n\n// for (iife) load Slick methods from global Slick object, or use imports for (esm)\nconst Utils = IIFE_ONLY ? Slick.Utils : Utils_;\n\n/***\n * Displays an overlay on top of a given cell range.\n *\n * TODO:\n * Currently, it blocks mouse events to DOM nodes behind it.\n * Use FF and WebKit-specific \"pointer-events\" CSS style, or some kind of event forwarding.\n * Could also construct the borders separately using 4 individual DIVs.\n *\n * @param {Grid} grid\n * @param {Object} options\n */\nexport class SlickCellRangeDecorator implements SlickPlugin {\n // --\n // public API\n pluginName = 'CellRangeDecorator' as const;\n\n // --\n // protected props\n protected _options: CellRangeDecoratorOption;\n protected _elem?: HTMLDivElement | null;\n protected _defaults = {\n selectionCssClass: 'slick-range-decorator',\n selectionCss: {\n zIndex: '9999',\n border: '2px dashed red'\n },\n offset: { top: -1, left: -1, height: -2, width: -2 }\n } as CellRangeDecoratorOption;\n\n constructor(protected readonly grid: SlickGrid, options?: Partial) {\n this._options = Utils.extend(true, {}, this._defaults, options);\n }\n\n destroy() {\n this.hide();\n }\n\n init() { }\n\n hide() {\n this._elem?.remove();\n this._elem = null;\n }\n\n show(range: SlickRange) {\n if (!this._elem) {\n this._elem = document.createElement('div');\n this._elem.className = this._options.selectionCssClass;\n Object.keys(this._options.selectionCss as CSSStyleDeclaration).forEach((cssStyleKey) => {\n this._elem!.style[cssStyleKey as CSSStyleDeclarationWritable] = this._options.selectionCss[cssStyleKey as CSSStyleDeclarationWritable];\n });\n this._elem.style.position = 'absolute';\n const canvasNode = this.grid.getActiveCanvasNode();\n if (canvasNode) {\n canvasNode.appendChild(this._elem);\n }\n }\n\n const from = this.grid.getCellNodeBox(range.fromRow, range.fromCell);\n const to = this.grid.getCellNodeBox(range.toRow, range.toCell);\n\n if (from && to && this._options?.offset) {\n this._elem.style.top = `${from.top + this._options.offset.top}px`;\n this._elem.style.left = `${from.left + this._options.offset.left}px`;\n this._elem.style.height = `${to.bottom - from.top + this._options.offset.height}px`;\n this._elem.style.width = `${to.right - from.left + this._options.offset.width}px`;\n }\n\n return this._elem;\n }\n}\n\n// extend Slick namespace on window object when building as iife\nif (IIFE_ONLY && window.Slick) {\n Utils.extend(true, window, {\n Slick: {\n CellRangeDecorator: SlickCellRangeDecorator\n }\n });\n}\n"], "mappings": ";;;;;;;AAKA,MAAM,QAAoB,MAAM,OAanB,0BAAN,MAAqD;AAAA,IAkB1D,YAA+B,MAAiB,SAA6C;AAA9D;AAf/B;AAAA;AAAA,wCAAa;AAIb;AAAA;AAAA,0BAAU;AACV,0BAAU;AACV,0BAAU,aAAY;AAAA,QACpB,mBAAmB;AAAA,QACnB,cAAc;AAAA,UACZ,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AAAA,QACA,QAAQ,EAAE,KAAK,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,GAAG;AAAA,MACrD;AAGE,WAAK,WAAW,MAAM,OAAO,IAAM,CAAC,GAAG,KAAK,WAAW,OAAO;AAAA,IAChE;AAAA,IAEA,UAAU;AACR,WAAK,KAAK;AAAA,IACZ;AAAA,IAEA,OAAO;AAAA,IAAE;AAAA,IAET,OAAO;AA9CT;AA+CI,iBAAK,UAAL,WAAY,UACZ,KAAK,QAAQ;AAAA,IACf;AAAA,IAEA,KAAK,OAAmB;AAnD1B;AAoDI,UAAI,CAAC,KAAK,OAAO;AACf,aAAK,QAAQ,SAAS,cAAc,KAAK,GACzC,KAAK,MAAM,YAAY,KAAK,SAAS,mBACrC,OAAO,KAAK,KAAK,SAAS,YAAmC,EAAE,QAAQ,CAAC,gBAAgB;AACtF,eAAK,MAAO,MAAM,WAA0C,IAAI,KAAK,SAAS,aAAa,WAA0C;AAAA,QACvI,CAAC,GACD,KAAK,MAAM,MAAM,WAAW;AAC5B,YAAM,aAAa,KAAK,KAAK,oBAAoB;AACjD,QAAI,cACF,WAAW,YAAY,KAAK,KAAK;AAAA,MAErC;AAEA,UAAM,OAAO,KAAK,KAAK,eAAe,MAAM,SAAS,MAAM,QAAQ,GAC7D,KAAK,KAAK,KAAK,eAAe,MAAM,OAAO,MAAM,MAAM;AAE7D,aAAI,QAAQ,QAAM,UAAK,aAAL,WAAe,YAC/B,KAAK,MAAM,MAAM,MAAM,GAAG,KAAK,MAAM,KAAK,SAAS,OAAO,GAAG,MAC7D,KAAK,MAAM,MAAM,OAAO,GAAG,KAAK,OAAO,KAAK,SAAS,OAAO,IAAI,MAChE,KAAK,MAAM,MAAM,SAAS,GAAG,GAAG,SAAS,KAAK,MAAM,KAAK,SAAS,OAAO,MAAM,MAC/E,KAAK,MAAM,MAAM,QAAQ,GAAG,GAAG,QAAQ,KAAK,OAAO,KAAK,SAAS,OAAO,KAAK,OAGxE,KAAK;AAAA,IACd;AAAA,EACF;AAGA,EAAiB,OAAO,SACtB,MAAM,OAAO,IAAM,QAAQ;AAAA,IACzB,OAAO;AAAA,MACL,oBAAoB;AAAA,IACtB;AAAA,EACF,CAAC;", "names": [] }