@dxos/lit-grid 0.6.12-main.78ddbdf → 0.6.12-main.89e9959
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/dist/lib/browser/index.mjs +522 -217
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/types/src/dx-grid-axis-resize-handle.d.ts +2 -1
- package/dist/types/src/dx-grid-axis-resize-handle.d.ts.map +1 -1
- package/dist/types/src/dx-grid.d.ts +30 -6
- package/dist/types/src/dx-grid.d.ts.map +1 -1
- package/dist/types/src/dx-grid.lit-stories.d.ts +23 -1
- package/dist/types/src/dx-grid.lit-stories.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +42 -10
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +2 -0
- package/dist/types/src/util.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/dx-grid-axis-resize-handle.ts +6 -2
- package/src/dx-grid.lit-stories.ts +140 -16
- package/src/dx-grid.pcss +37 -62
- package/src/dx-grid.ts +553 -237
- package/src/types.ts +52 -8
- package/src/util.ts +15 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/dx-grid.ts", "../../../src/dx-grid-axis-resize-handle.ts", "../../../src/util.ts", "../../../src/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { LitElement, html, nothing } from 'lit';\nimport { customElement, state, property, eventOptions } from 'lit/decorators.js';\nimport { ref, createRef, type Ref } from 'lit/directives/ref.js';\n\n// eslint-disable-next-line unused-imports/no-unused-imports\nimport './dx-grid-axis-resize-handle';\nimport {\n type AxisMeta,\n type CellIndex,\n DxAxisResize,\n type DxAxisResizeInternal,\n DxEditRequest,\n type DxGridAxis,\n type DxGridAxisMeta,\n type DxGridCells,\n DxGridCellsSelect,\n type DxGridMode,\n type DxGridPointer,\n type DxGridPosition,\n type DxGridPositionNullable,\n type DxGridRange,\n} from './types';\nimport { separator, toCellIndex } from './util';\n\n/**\n * The size in pixels of the gap between cells\n */\nconst gap = 1;\n\n/**\n * This should be about the width of the `1` numeral so resize is triggered as the row header column’s intrinsic size\n * changes when scrolling vertically.\n */\nconst resizeTolerance = 8;\n\n//\n// `overscan` is the number of columns or rows to render outside of the viewport\n//\nconst overscanCol = 1;\nconst overscanRow = 1;\n\n//\n// `size`, when suffixed with ‘row’ or ‘col’, are limits on size applied when resizing\n//\nconst sizeColMin = 32;\nconst sizeColMax = 1024;\nconst sizeRowMin = 16;\nconst sizeRowMax = 1024;\n\n//\n// A1 notation is the fallback for numbering columns and rows.\n//\n\nconst colToA1Notation = (col: number): string => {\n return (\n (col >= 26 ? String.fromCharCode('A'.charCodeAt(0) + Math.floor(col / 26) - 1) : '') +\n String.fromCharCode('A'.charCodeAt(0) + (col % 26))\n );\n};\n\nconst rowToA1Notation = (row: number): string => {\n return `${row + 1}`;\n};\n\nconst closestAction = (target: EventTarget | null): { action: string | null; actionEl: HTMLElement | null } => {\n const actionEl: HTMLElement | null = (target as HTMLElement | null)?.closest('[data-dx-grid-action]') ?? null;\n return { actionEl, action: actionEl?.getAttribute('data-dx-grid-action') ?? null };\n};\n\nconst closestCell = (target: EventTarget | null, actionEl?: HTMLElement | null): DxGridPositionNullable => {\n let cellElement = actionEl;\n if (!cellElement) {\n const { action, actionEl } = closestAction(target);\n if (action === 'cell') {\n cellElement = actionEl as HTMLElement;\n }\n }\n if (cellElement) {\n const col = parseInt(cellElement.getAttribute('aria-colindex') ?? 'never');\n const row = parseInt(cellElement.getAttribute('aria-rowindex') ?? 'never');\n return { col, row };\n } else {\n return null;\n }\n};\n\nconst isSameCell = (a: DxGridPositionNullable, b: DxGridPositionNullable) =>\n a && b && Number.isFinite(a.col) && Number.isFinite(a.row) && a.col === b.col && a.row === b.row;\n\nconst localChId = (c0: number) => `ch--${c0}`;\nconst localRhId = (r0: number) => `rh--${r0}`;\n\nconst getPage = (axis: string, event: PointerEvent) => (axis === 'col' ? event.pageX : event.pageY);\n\n@customElement('dx-grid')\nexport class DxGrid extends LitElement {\n constructor() {\n super();\n this.addEventListener('dx-axis-resize-internal', this.handleAxisResizeInternal as EventListener);\n this.addEventListener('wheel', this.handleWheel);\n this.addEventListener('pointerdown', this.handlePointerDown);\n this.addEventListener('pointermove', this.handlePointerMove);\n this.addEventListener('pointerup', this.handlePointerUp);\n this.addEventListener('pointerleave', this.handlePointerUp);\n this.addEventListener('focus', this.handleFocus, { capture: true });\n this.addEventListener('blur', this.handleBlur, { capture: true });\n this.addEventListener('keydown', this.handleKeydown);\n }\n\n @property({ type: String })\n gridId: string = 'default-grid-id';\n\n @property({ type: Object })\n rowDefault: AxisMeta = { size: 32 };\n\n @property({ type: Object })\n columnDefault: AxisMeta = { size: 180 };\n\n @property({ type: Object })\n rows: DxGridAxisMeta = {};\n\n @property({ type: Object })\n columns: DxGridAxisMeta = {};\n\n @property({ type: Object })\n initialCells: DxGridCells = {};\n\n @property({ type: String })\n mode: DxGridMode = 'browse';\n\n /**\n * When this function is defined, it is used first to try to get a value for a cell, and otherwise will fall back\n * to `cells`.\n */\n getCells: ((nextRange: DxGridRange) => DxGridCells) | null = null;\n\n @state()\n private cells: DxGridCells = {};\n\n //\n // `pos`, short for ‘position’, is the position in pixels of the viewport from the origin.\n //\n\n @state()\n private posInline = 0;\n\n @state()\n private posBlock = 0;\n\n //\n // `size` (when not suffixed with ‘row’ or ‘col’, see above) is the size in pixels of the viewport.\n //\n\n @state()\n private sizeInline = 0;\n\n @state()\n private sizeBlock = 0;\n\n //\n // `overscan` is the amount in pixels to offset the grid content due to the number of overscanned columns or rows.\n //\n\n @state()\n private overscanInline = 0;\n\n @state()\n private overscanBlock = 0;\n\n //\n // `bin`, not short for anything, is the range in pixels within which virtualization does not need to reassess.\n //\n\n @state()\n private binInlineMin = 0;\n\n @state()\n private binInlineMax = this.colSize(0);\n\n @state()\n private binBlockMin = 0;\n\n @state()\n private binBlockMax = this.rowSize(0);\n\n //\n // `vis`, short for ‘visible’, is the range in numeric index of the columns or rows which should be rendered within\n // the viewport. These start with naïve values that are updated before first contentful render.\n //\n\n @state()\n private visColMin = 0;\n\n @state()\n private visColMax = 1;\n\n @state()\n private visRowMin = 0;\n\n @state()\n private visRowMax = 1;\n\n //\n // `template` is the rendered value of `grid-{axis}-template`.\n //\n @state()\n private templateColumns = `${this.colSize(0)}px`;\n\n @state()\n private templateRows = `${this.rowSize(0)}px`;\n\n //\n // Focus, selection, and resize states\n //\n\n @state()\n private pointer: DxGridPointer = null;\n\n @state()\n private colSizes: Record<string, number> = {};\n\n @state()\n private rowSizes: Record<string, number> = {};\n\n @state()\n private focusActive: boolean = false;\n\n @state()\n private focusedCell: DxGridPosition = { col: 0, row: 0 };\n\n @state()\n private selectionStart: DxGridPosition = { col: 0, row: 0 };\n\n @state()\n private selectionEnd: DxGridPosition = { col: 0, row: 0 };\n\n //\n // Primary pointer and keyboard handlers\n //\n\n private dispatchEditRequest(initialContent?: string) {\n this.snapPosToFocusedCell();\n // Without deferring, the event dispatches before `focusedCellBox` can get updated bounds of the cell, hence:\n queueMicrotask(() =>\n this.dispatchEvent(\n new DxEditRequest({\n cellIndex: toCellIndex(this.focusedCell),\n cellBox: this.focusedCellBox(),\n initialContent,\n }),\n ),\n );\n }\n\n private handlePointerDown = (event: PointerEvent) => {\n if (event.isPrimary) {\n const { action, actionEl } = closestAction(event.target);\n if (action) {\n if (action.startsWith('resize') && this.mode === 'browse') {\n const [resize, index] = action.split(',');\n const [_, axis] = resize.split('-');\n this.pointer = {\n state: 'resizing',\n axis: axis as DxGridAxis,\n size: axis === 'col' ? this.colSize(index) : this.rowSize(index),\n page: getPage(axis, event),\n index,\n };\n } else if (action === 'cell') {\n const cellCoords = closestCell(event.target, actionEl);\n if (cellCoords) {\n this.pointer = { state: 'selecting' };\n this.selectionStart = cellCoords;\n }\n if (this.mode === 'edit') {\n event.preventDefault();\n } else {\n if (this.focusActive && isSameCell(this.focusedCell, cellCoords)) {\n this.dispatchEditRequest();\n }\n }\n }\n }\n }\n };\n\n private handlePointerUp = (event: PointerEvent) => {\n if (this.pointer?.state === 'resizing') {\n // do nothing, todo: remove\n } else {\n const cell = closestCell(event.target);\n if (cell) {\n this.selectionEnd = cell;\n this.dispatchEvent(\n new DxGridCellsSelect({\n start: this.selectionStart,\n end: this.selectionEnd,\n }),\n );\n }\n }\n this.pointer = null;\n };\n\n private handlePointerMove = (event: PointerEvent) => {\n if (this.pointer?.state === 'selecting') {\n const cell = closestCell(event.target);\n if (cell && (cell.col !== this.selectionEnd.col || cell.row !== this.selectionEnd.row)) {\n this.selectionEnd = cell;\n }\n }\n };\n\n private handleKeydown(event: KeyboardEvent) {\n if (this.focusActive && this.mode === 'browse') {\n // Adjust state\n switch (event.key) {\n case 'ArrowDown':\n this.focusedCell = { ...this.focusedCell, row: this.focusedCell.row + 1 };\n break;\n case 'ArrowUp':\n this.focusedCell = { ...this.focusedCell, row: Math.max(0, this.focusedCell.row - 1) };\n break;\n case 'ArrowRight':\n this.focusedCell = { ...this.focusedCell, col: this.focusedCell.col + 1 };\n break;\n case 'ArrowLeft':\n this.focusedCell = { ...this.focusedCell, col: Math.max(0, this.focusedCell.col - 1) };\n break;\n }\n // Emit edit request if relevant\n switch (event.key) {\n case 'Enter':\n this.dispatchEditRequest();\n break;\n default:\n if (event.key.length === 1 && event.key.match(/\\P{Cc}/u)) {\n this.dispatchEditRequest(event.key);\n }\n break;\n }\n // Handle virtualization & focus consequences\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'ArrowRight':\n case 'ArrowLeft':\n event.preventDefault();\n this.snapPosToFocusedCell();\n break;\n }\n }\n }\n\n //\n // Accessors\n //\n\n private colSize(c: number | string) {\n return this.colSizes?.[c] ?? this.columnDefault.size;\n }\n\n private rowSize(r: number | string) {\n return this.rowSizes?.[r] ?? this.rowDefault.size;\n }\n\n private cell(c: number | string, r: number | string) {\n const index: CellIndex = `${c}${separator}${r}`;\n return this.cells[index] ?? this.initialCells[index];\n }\n\n private focusedCellBox(): DxEditRequest['cellBox'] {\n const cellElement = this.focusedCellElement();\n const cellSize = { inlineSize: this.colSize(this.focusedCell.col), blockSize: this.rowSize(this.focusedCell.row) };\n if (!cellElement) {\n return { insetInlineStart: NaN, insetBlockStart: NaN, ...cellSize };\n }\n const contentElement = cellElement.offsetParent as HTMLElement;\n // Note that storing `offset` in state causes performance issues, so instead the transform is parsed here.\n const [_translate3d, inlineStr, blockStr] = contentElement.style.transform.split(/[()]|px,?\\s?/);\n const contentOffsetInline = parseFloat(inlineStr);\n const contentOffsetBlock = parseFloat(blockStr);\n const offsetParent = contentElement.offsetParent as HTMLElement;\n return {\n insetInlineStart: cellElement.offsetLeft + contentOffsetInline + offsetParent.offsetLeft,\n insetBlockStart: cellElement.offsetTop + contentOffsetBlock + offsetParent.offsetTop,\n ...cellSize,\n };\n }\n\n //\n // Resize & reposition handlers, observer, ref\n //\n\n @state()\n private observer = new ResizeObserver((entries) => {\n const { inlineSize, blockSize } = entries?.[0]?.contentBoxSize?.[0] ?? {\n inlineSize: 0,\n blockSize: 0,\n };\n if (\n Math.abs(inlineSize - this.sizeInline) > resizeTolerance ||\n Math.abs(blockSize - this.sizeBlock) > resizeTolerance\n ) {\n // console.info('[updating bounds]', 'resize', [inlineSize - this.sizeInline, blockSize - this.sizeBlock]);\n this.sizeInline = inlineSize;\n this.sizeBlock = blockSize;\n this.updateVis();\n }\n });\n\n private viewportRef: Ref<HTMLDivElement> = createRef();\n\n private maybeUpdateVis = () => {\n if (\n this.posInline >= this.binInlineMin &&\n this.posInline < this.binInlineMax &&\n this.posBlock >= this.binBlockMin &&\n this.posBlock < this.binBlockMax\n ) {\n // do nothing\n } else {\n // console.info(\n // '[updating bounds]',\n // 'wheel',\n // [this.binInlineMin, this.posInline, this.binInlineMax],\n // [this.binBlockMin, this.posBlock, this.binBlockMax],\n // );\n this.updateVis();\n }\n };\n\n private handleWheel = ({ deltaX, deltaY }: WheelEvent) => {\n if (this.mode === 'browse') {\n this.posInline = Math.max(0, this.posInline + deltaX);\n this.posBlock = Math.max(0, this.posBlock + deltaY);\n this.maybeUpdateVis();\n }\n };\n\n private updateVisInline() {\n // todo: avoid starting from zero\n let colIndex = 0;\n let pxInline = this.colSize(colIndex);\n\n while (pxInline < this.posInline) {\n colIndex += 1;\n pxInline += this.colSize(colIndex) + gap;\n }\n\n this.visColMin = colIndex - overscanCol;\n\n this.binInlineMin = pxInline - this.colSize(colIndex) - gap;\n this.binInlineMax = pxInline + gap;\n\n this.overscanInline =\n [...Array(overscanCol)].reduce((acc, _, c0) => {\n acc += this.colSize(this.visColMin + c0);\n return acc;\n }, 0) +\n gap * (overscanCol - 1);\n\n while (pxInline < this.binInlineMax + this.sizeInline + gap) {\n colIndex += 1;\n pxInline += this.colSize(colIndex) + gap;\n }\n\n this.visColMax = colIndex + overscanCol;\n\n this.templateColumns = [...Array(this.visColMax - this.visColMin)]\n .map((_, c0) => `${this.colSize(this.visColMin + c0)}px`)\n .join(' ');\n }\n\n private updateVisBlock() {\n // todo: avoid starting from zero\n let rowIndex = 0;\n let pxBlock = this.rowSize(rowIndex);\n\n while (pxBlock < this.posBlock) {\n rowIndex += 1;\n pxBlock += this.rowSize(rowIndex) + gap;\n }\n\n this.visRowMin = rowIndex - overscanRow;\n\n this.binBlockMin = pxBlock - this.rowSize(rowIndex) - gap;\n this.binBlockMax = pxBlock + gap;\n\n this.overscanBlock =\n [...Array(overscanRow)].reduce((acc, _, r0) => {\n acc += this.rowSize(this.visRowMin + r0);\n return acc;\n }, 0) +\n gap * (overscanRow - 1);\n\n while (pxBlock < this.binBlockMax + this.sizeBlock) {\n rowIndex += 1;\n pxBlock += this.rowSize(rowIndex) + gap;\n }\n\n this.visRowMax = rowIndex + overscanRow;\n\n this.templateRows = [...Array(this.visRowMax - this.visRowMin)]\n .map((_, r0) => `${this.rowSize(this.visRowMin + r0)}px`)\n .join(' ');\n }\n\n private updateVis() {\n this.updateVisInline();\n this.updateVisBlock();\n }\n\n // Focus handlers\n\n @eventOptions({ capture: true })\n private handleFocus(event: FocusEvent) {\n const cellCoords = closestCell(event.target);\n if (cellCoords) {\n this.focusedCell = cellCoords;\n this.focusActive = true;\n }\n }\n\n @eventOptions({ capture: true })\n private handleBlur(event: FocusEvent) {\n // Only unset `focusActive` if focus is not moving to an element within the grid.\n if (!event.relatedTarget || !(event.relatedTarget as HTMLElement).closest(`[data-grid=\"${this.gridId}\"]`)) {\n this.focusActive = false;\n }\n }\n\n private focusedCellElement() {\n return this.viewportRef.value?.querySelector(\n `[aria-colindex=\"${this.focusedCell.col}\"][aria-rowindex=\"${this.focusedCell.row}\"]`,\n ) as HTMLElement | null;\n }\n\n /**\n * Moves focus to the cell with actual focus, otherwise moves focus to the viewport.\n */\n refocus(increment?: 'col' | 'row', delta: 1 | -1 = 1) {\n switch (increment) {\n case 'row':\n this.focusedCell = { ...this.focusedCell, row: this.focusedCell.row + delta };\n break;\n case 'col':\n this.focusedCell = { ...this.focusedCell, col: this.focusedCell.col + delta };\n }\n (this.focusedCell.row < this.visRowMin ||\n this.focusedCell.row > this.visRowMax ||\n this.focusedCell.col < this.visColMin ||\n this.focusedCell.col > this.visColMax\n ? this.viewportRef.value\n : this.focusedCellElement()\n )?.focus({ preventScroll: true });\n if (increment) {\n this.snapPosToFocusedCell();\n }\n }\n\n /**\n * Updates `pos` so that a cell in focus is fully within the viewport\n */\n snapPosToFocusedCell() {\n if (\n this.focusedCell.col < this.visColMin ||\n this.focusedCell.col > this.visColMax ||\n this.focusedCell.row < this.visRowMin ||\n this.focusedCell.row > this.visRowMax\n ) {\n // console.warn('Snapping position to a focused cell that is not already mounted is unsupported.');\n } else if (\n this.focusedCell.col > this.visColMin + overscanCol &&\n this.focusedCell.col < this.visColMax - overscanCol - 1 &&\n this.focusedCell.row > this.visRowMin + overscanRow &&\n this.focusedCell.row < this.visRowMax - overscanRow - 1\n ) {\n // console.log(\n // '[within bounds]',\n // this.focusedCell,\n // [this.visColMin, this.visColMax, overscanCol],\n // [this.visRowMin, this.visRowMax, overscanRow],\n // );\n } else {\n if (this.focusedCell.col <= this.visColMin + overscanCol) {\n this.posInline = this.binInlineMin;\n this.updateVisInline();\n } else if (this.focusedCell.col >= this.visColMax - overscanCol - 1) {\n const sizeSumCol = [...Array(this.focusedCell.col - this.visColMin)].reduce((acc, _, c0) => {\n acc += this.colSize(this.visColMin + overscanCol + c0) + gap;\n return acc;\n }, 0);\n this.posInline = Math.max(0, this.binInlineMin + sizeSumCol + gap * 2 - this.sizeInline);\n this.updateVisInline();\n }\n\n if (this.focusedCell.row <= this.visRowMin + overscanRow) {\n this.posBlock = this.binBlockMin;\n this.updateVisBlock();\n } else if (this.focusedCell.row >= this.visRowMax - overscanRow - 1) {\n const sizeSumRow = [...Array(this.focusedCell.row - this.visRowMin)].reduce((acc, _, r0) => {\n acc += this.rowSize(this.visRowMin + overscanRow + r0) + gap;\n return acc;\n }, 0);\n this.posBlock = Math.max(0, this.binBlockMin + sizeSumRow + gap * 2 - this.sizeBlock);\n this.updateVisBlock();\n }\n }\n }\n\n //\n // Map scroll DOM methods to virtualized value.\n //\n\n override get scrollLeft() {\n return this.posInline;\n }\n\n override set scrollLeft(nextValue: number) {\n this.posInline = nextValue;\n this.maybeUpdateVis();\n }\n\n override get scrollTop() {\n return this.posBlock;\n }\n\n override set scrollTop(nextValue: number) {\n this.posBlock = nextValue;\n this.maybeUpdateVis();\n }\n\n //\n // Resize handlers\n //\n private handleAxisResizeInternal(event: DxAxisResizeInternal) {\n event.stopPropagation();\n const { axis, delta, size, index, type } = event;\n if (axis === 'col') {\n const nextSize = Math.max(sizeColMin, Math.min(sizeColMax, size + delta));\n this.colSizes = { ...this.colSizes, [index]: nextSize };\n this.updateVisInline();\n } else {\n const nextSize = Math.max(sizeRowMin, Math.min(sizeRowMax, size + delta));\n this.rowSizes = { ...this.rowSizes, [index]: nextSize };\n this.updateVisBlock();\n }\n if (type === 'dropped') {\n this.dispatchEvent(\n new DxAxisResize({\n axis,\n index,\n size: this[axis === 'col' ? 'colSize' : 'rowSize'](index),\n }),\n );\n }\n }\n\n //\n // Render and other lifecycle methods\n //\n\n override render() {\n const visibleCols = this.visColMax - this.visColMin;\n const visibleRows = this.visRowMax - this.visRowMin;\n const offsetInline = this.binInlineMin - this.posInline - this.overscanInline;\n const offsetBlock = this.binBlockMin - this.posBlock - this.overscanBlock;\n\n const selectColMin = Math.min(this.selectionStart.col, this.selectionEnd.col);\n const selectColMax = Math.max(this.selectionStart.col, this.selectionEnd.col);\n const selectRowMin = Math.min(this.selectionStart.row, this.selectionEnd.row);\n const selectRowMax = Math.max(this.selectionStart.row, this.selectionEnd.row);\n const selectVisible = selectColMin !== selectColMax || selectRowMin !== selectRowMax;\n\n return html`<div\n role=\"none\"\n class=\"dx-grid\"\n data-grid=${this.gridId}\n data-grid-mode=${this.mode}\n ?data-grid-select=${selectVisible}\n >\n <div role=\"none\" class=\"dx-grid__corner\"></div>\n <div role=\"none\" class=\"dx-grid__columnheader\">\n <div\n role=\"none\"\n class=\"dx-grid__columnheader__content\"\n style=\"transform:translate3d(${offsetInline}px,0,0);grid-template-columns:${this.templateColumns};\"\n >\n ${[...Array(visibleCols)].map((_, c0) => {\n const c = this.visColMin + c0;\n return html`<div\n role=\"columnheader\"\n ?inert=${c < 0}\n style=\"block-size:${this.rowDefault.size}px;grid-column:${c0 + 1}/${c0 + 2};\"\n >\n <span id=${localChId(c0)}>${colToA1Notation(c)}</span>\n ${(this.columns[c]?.resizeable ?? this.columnDefault.resizeable) &&\n html`<dx-grid-axis-resize-handle\n axis=\"col\"\n index=${c}\n size=${this.colSize(c)}\n @dxaxisresizeinternal=${this.handleAxisResizeInternal}\n ></dx-grid-axis-resize-handle>`}\n </div>`;\n })}\n </div>\n </div>\n <div role=\"none\" class=\"dx-grid__corner\"></div>\n <div role=\"none\" class=\"dx-grid__rowheader\">\n <div\n role=\"none\"\n class=\"dx-grid__rowheader__content\"\n style=\"transform:translate3d(0,${offsetBlock}px,0);grid-template-rows:${this.templateRows};\"\n >\n ${[...Array(visibleRows)].map((_, r0) => {\n const r = this.visRowMin + r0;\n return html`<div role=\"rowheader\" ?inert=${r < 0} style=\"grid-row:${r0 + 1}/${r0 + 2}\">\n <span id=${localRhId(r0)}>${rowToA1Notation(r)}</span>\n ${(this.rows[r]?.resizeable ?? this.rowDefault.resizeable) &&\n html`<dx-grid-axis-resize-handle\n axis=\"row\"\n index=${r}\n size=${this.rowSize(r)}\n ></dx-grid-axis-resize-handle>`}\n </div>`;\n })}\n </div>\n </div>\n <div role=\"grid\" class=\"dx-grid__viewport\" tabindex=\"0\" @wheel=${this.handleWheel} ${ref(this.viewportRef)}>\n <div\n role=\"none\"\n class=\"dx-grid__content\"\n style=\"transform:translate3d(${offsetInline}px,${offsetBlock}px,0);grid-template-columns:${this\n .templateColumns};grid-template-rows:${this.templateRows};\"\n >\n ${[...Array(visibleCols)].map((_, c0) => {\n return [...Array(visibleRows)].map((_, r0) => {\n const c = c0 + this.visColMin;\n const r = r0 + this.visRowMin;\n const cell = this.cell(c, r);\n const active = this.focusActive && this.focusedCell.col === c && this.focusedCell.row === r;\n const selected = c >= selectColMin && c <= selectColMax && r >= selectRowMin && r <= selectRowMax;\n return html`<div\n role=\"gridcell\"\n tabindex=\"0\"\n ?inert=${c < 0 || r < 0}\n ?aria-selected=${selected}\n class=${cell || active\n ? (cell?.className ? cell.className + ' ' : '') + (active ? 'dx-grid__cell--active' : '')\n : nothing}\n aria-rowindex=${r}\n aria-colindex=${c}\n data-dx-grid-action=\"cell\"\n style=\"grid-column:${c0 + 1};grid-row:${r0 + 1}\"\n >\n ${cell?.value}\n </div>`;\n });\n })}\n </div>\n </div>\n <div role=\"none\" class=\"dx-grid__scrollbar\" aria-orientation=\"vertical\">\n <div role=\"none\" class=\"dx-grid__scrollbar__thumb\"></div>\n </div>\n <div role=\"none\" class=\"dx-grid__corner\"></div>\n <div role=\"none\" class=\"dx-grid__scrollbar\" aria-orientation=\"horizontal\">\n <div role=\"none\" class=\"dx-grid__scrollbar__thumb\"></div>\n </div>\n <div role=\"none\" class=\"dx-grid__corner\"></div>\n </div>`;\n }\n\n override firstUpdated() {\n if (this.getCells) {\n this.cells = this.getCells({\n start: { col: this.visColMin, row: this.visRowMin },\n end: { col: this.visColMax, row: this.visRowMax },\n });\n }\n this.observer.observe(this.viewportRef.value!);\n this.colSizes = Object.entries(this.columns).reduce((acc: Record<string, number>, [colId, colMeta]) => {\n if (colMeta?.size) {\n acc[colId] = colMeta.size;\n }\n return acc;\n }, {});\n this.rowSizes = Object.entries(this.rows).reduce((acc: Record<string, number>, [rowId, rowMeta]) => {\n if (rowMeta?.size) {\n acc[rowId] = rowMeta.size;\n }\n return acc;\n }, {});\n }\n\n override willUpdate(changedProperties: Map<string, any>) {\n if (\n this.getCells &&\n (changedProperties.has('initialCells') ||\n changedProperties.has('visColMin') ||\n changedProperties.has('visColMax') ||\n changedProperties.has('visRowMin') ||\n changedProperties.has('visRowMax'))\n ) {\n this.cells = this.getCells({\n start: { col: this.visColMin, row: this.visRowMin },\n end: { col: this.visColMax, row: this.visRowMax },\n });\n }\n }\n\n override updated(changedProperties: Map<string, any>) {\n // Update the focused element if there is a change in bounds (otherwise Lit keeps focus on the relative element).\n if (\n this.focusActive &&\n (changedProperties.has('visRowMin') || changedProperties.has('visColMin') || changedProperties.has('focusedCell'))\n ) {\n this.refocus();\n }\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n // console.log('[disconnected]', this.viewportRef.value);\n // TODO(thure): Will this even work?\n if (this.viewportRef.value) {\n this.observer.unobserve(this.viewportRef.value);\n }\n }\n\n override createRenderRoot() {\n return this;\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';\nimport { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';\nimport { type CleanupFn, type DragLocationHistory } from '@atlaskit/pragmatic-drag-and-drop/types';\nimport { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ref } from 'lit/directives/ref.js';\n\nimport { DxAxisResizeInternal, type DxGridAxis } from './types';\n\n@customElement('dx-grid-axis-resize-handle')\nexport class DxGridAxisResizeHandle extends LitElement {\n @property({ type: String })\n axis: DxGridAxis = 'row';\n\n @property({ type: String })\n index: string = '-1';\n\n @property({ type: Number })\n size: number = 128;\n\n private dragStartSize: number = 128;\n\n override render() {\n return html`<button class=\"dx-grid__resize-handle\" ${ref(this.mount)}>\n <span class=\"sr-only\">Resize</span>\n </button>`;\n }\n\n private cleanup: CleanupFn | null = null;\n\n private dispatchResize(location: DragLocationHistory, state: 'dragging' | 'dropped') {\n const client = this.axis === 'row' ? 'clientY' : 'clientX';\n const event = new DxAxisResizeInternal({\n axis: this.axis,\n size: this.dragStartSize,\n index: this.index,\n delta: location.current.input[client] - location.initial.input[client],\n state,\n });\n this.dispatchEvent(event);\n }\n\n private mount(element?: Element) {\n this.cleanup?.();\n const host = this;\n if (element) {\n this.cleanup = draggable({\n element: element as HTMLButtonElement,\n onGenerateDragPreview: ({ nativeSetDragImage }) => {\n // we will be moving the line to indicate a drag\n // we can disable the native drag preview\n disableNativeDragPreview({ nativeSetDragImage });\n // we don't want any native drop animation for when the user\n // does not drop on a drop target. we want the drag to finish immediately\n preventUnhandled.start();\n },\n onDragStart() {\n host.dragStartSize = host.size;\n },\n onDrag({ location }) {\n host.dispatchResize(location, 'dragging');\n },\n onDrop({ location }) {\n host.dispatchResize(location, 'dropped');\n },\n });\n }\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.cleanup?.();\n }\n\n override createRenderRoot() {\n return this;\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type CellIndex, type DxGridPosition } from './types';\n\n/**\n * Separator for serializing cell position vectors\n */\nexport const separator = ',';\n\nexport const toCellIndex = (cellCoords: DxGridPosition): CellIndex => `${cellCoords.col}${separator}${cellCoords.row}`;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type DxGrid } from './dx-grid';\nimport { toCellIndex } from './util';\n\nexport type CellIndex = `${string},${string}`;\n\nexport type DxGridAxis = 'row' | 'col';\n\nexport type DxGridPosition = Record<DxGridAxis, number>;\nexport type DxGridPositionNullable = DxGridPosition | null;\n\nexport type DxGridCells = Record<CellIndex, CellValue>;\n\nexport type DxGridAxisMeta = Record<string, AxisMeta>;\n\nexport type DxGridPointer = null | ({ state: 'resizing'; page: number } & DxAxisResizeProps) | { state: 'selecting' };\n\nexport type DxAxisResizeProps = Pick<DxAxisResize, 'axis' | 'index' | 'size'>;\nexport type DxAxisResizeInternalProps = DxAxisResizeProps & { delta: number; state: 'dragging' | 'dropped' };\n\nexport type DxGridMode = 'browse' | 'edit';\n\nexport type CellValue = {\n /**\n * The content value\n */\n value: string;\n /**\n * If this is a merged cell, the bottomright-most of the range in numeric notation, otherwise undefined.\n */\n end?: string;\n /**\n * `class` attribute value to apply to the gridcell element\n */\n className?: string;\n};\n\nexport type AxisMeta = {\n size: number;\n description?: string;\n resizeable?: boolean;\n};\n\nexport type DxGridProps = Partial<Pick<DxGrid, 'initialCells' | 'rows' | 'columns' | 'rowDefault' | 'columnDefault'>>;\n\nexport class DxAxisResize extends Event {\n public readonly axis: DxGridAxis;\n public readonly index: string;\n public readonly size: number;\n constructor(props: DxAxisResizeProps) {\n super('dx-axis-resize');\n this.axis = props.axis;\n this.index = props.index;\n this.size = props.size;\n }\n}\n\nexport class DxAxisResizeInternal extends Event {\n public readonly axis: DxGridAxis;\n public readonly index: string;\n public readonly size: number;\n public readonly delta: number;\n public readonly state: 'dragging' | 'dropped';\n constructor(props: DxAxisResizeInternalProps) {\n super('dx-axis-resize-internal', { composed: true, bubbles: true });\n this.axis = props.axis;\n this.index = props.index;\n this.size = props.size;\n this.delta = props.delta;\n this.state = props.state;\n }\n}\n\nexport type DxEditRequestProps = Pick<DxEditRequest, 'cellIndex' | 'cellBox' | 'initialContent'>;\n\nexport class DxEditRequest extends Event {\n public readonly cellIndex: CellIndex;\n public readonly cellBox: Record<'insetInlineStart' | 'insetBlockStart' | 'inlineSize' | 'blockSize', number>;\n public readonly initialContent?: string;\n constructor(props: DxEditRequestProps) {\n super('dx-edit-request');\n this.cellIndex = props.cellIndex;\n this.cellBox = props.cellBox;\n this.initialContent = props.initialContent;\n }\n}\n\nexport type DxGridRange = { start: DxGridPosition; end: DxGridPosition };\n\nexport class DxGridCellsSelect extends Event {\n public readonly start: string;\n public readonly end: string;\n public readonly minCol: number;\n public readonly maxCol: number;\n public readonly minRow: number;\n public readonly maxRow: number;\n constructor({ start, end }: DxGridRange) {\n super('dx-grid-cells-select');\n this.start = toCellIndex(start);\n this.end = toCellIndex(end);\n this.minCol = Math.min(start.col, end.col);\n this.maxCol = Math.max(start.col, end.col);\n this.minRow = Math.min(start.row, end.row);\n this.maxRow = Math.max(start.row, end.row);\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["LitElement", "html", "nothing", "customElement", "state", "property", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { LitElement, html, nothing } from 'lit';\nimport { customElement, state, property } from 'lit/decorators.js';\nimport { ref, createRef, type Ref } from 'lit/directives/ref.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\n// eslint-disable-next-line unused-imports/no-unused-imports\nimport './dx-grid-axis-resize-handle';\nimport {\n type AxisMeta,\n type AxisSizes,\n type CellIndex,\n type DxGridCellValue,\n DxAxisResize,\n type DxAxisResizeInternal,\n DxEditRequest,\n type DxGridAxisMeta,\n type DxGridCells,\n DxGridCellsSelect,\n type DxGridFixedPlane,\n type DxGridFrozenAxes,\n type DxGridFrozenColsPlane,\n type DxGridFrozenPlane,\n type DxGridFrozenRowsPlane,\n type DxGridMode,\n type DxGridPlane,\n type DxGridPlaneCells,\n type DxGridPlaneRange,\n type DxGridPlaneRecord,\n type DxGridPointer,\n type DxGridPosition,\n type DxGridPositionNullable,\n type DxGridAxis,\n type DxGridSelectionProps,\n} from './types';\nimport { separator, toCellIndex } from './util';\n\n/**\n * The size in pixels of the gap between cells\n */\nconst gap = 1;\n\n/**\n * ResizeObserver notices even subpixel changes, only respond to changes of at least 1px.\n */\nconst resizeTolerance = 1;\n\n/**\n * The amount of pixels the primary pointer has to move after PointerDown to engage in selection.\n */\nconst selectTolerance = 4;\n\n//\n// `overscan` is the number of columns or rows to render outside of the viewport\n//\nconst overscanCol = 1;\nconst overscanRow = 1;\n\n//\n// `size`, when suffixed with ‘row’ or ‘col’, are limits on size applied when resizing\n//\nconst sizeColMin = 32;\nconst sizeColMax = 1024;\nconst sizeRowMin = 16;\nconst sizeRowMax = 1024;\n\nconst shouldSelect = (pointer: DxGridPointer, { pageX, pageY }: PointerEvent) => {\n if (pointer?.state === 'maybeSelecting') {\n return Math.hypot(Math.abs(pointer.pageX - pageX), Math.abs(pointer.pageY - pageY)) >= selectTolerance;\n } else {\n return false;\n }\n};\n\nconst selectionProps = (selectionStart: DxGridPosition, selectionEnd: DxGridPosition): DxGridSelectionProps => {\n const colMin = Math.min(selectionStart.col, selectionEnd.col);\n const colMax = Math.max(selectionStart.col, selectionEnd.col);\n const rowMin = Math.min(selectionStart.row, selectionEnd.row);\n const rowMax = Math.max(selectionStart.row, selectionEnd.row);\n const plane = selectionStart.plane;\n const visible = colMin !== colMax || rowMin !== rowMax;\n return { colMin, colMax, rowMin, rowMax, plane, visible };\n};\n\nconst cellSelected = (col: number, row: number, plane: DxGridPlane, selection: DxGridSelectionProps): boolean => {\n return (\n plane === selection.plane &&\n col >= selection.colMin &&\n col <= selection.colMax &&\n row >= selection.rowMin &&\n row <= selection.rowMax\n );\n};\n\nconst closestAction = (target: EventTarget | null): { action: string | null; actionEl: HTMLElement | null } => {\n const actionEl: HTMLElement | null = (target as HTMLElement | null)?.closest('[data-dx-grid-action]') ?? null;\n return { actionEl, action: actionEl?.getAttribute('data-dx-grid-action') ?? null };\n};\n\nconst closestCell = (target: EventTarget | null, actionEl?: HTMLElement | null): DxGridPositionNullable => {\n let cellElement = actionEl;\n if (!cellElement) {\n const { action, actionEl } = closestAction(target);\n if (action === 'cell') {\n cellElement = actionEl as HTMLElement;\n }\n }\n if (cellElement) {\n const col = parseInt(cellElement.getAttribute('aria-colindex') ?? 'never');\n const row = parseInt(cellElement.getAttribute('aria-rowindex') ?? 'never');\n const plane = (cellElement.closest('[data-dx-grid-plane]')?.getAttribute('data-dx-grid-plane') ??\n 'grid') as DxGridPlane;\n return { plane, col, row };\n } else {\n return null;\n }\n};\n\nconst resolveRowPlane = (plane: DxGridPlane): 'grid' | DxGridFrozenRowsPlane => {\n switch (plane) {\n case 'fixedStartStart':\n case 'fixedStartEnd':\n case 'frozenRowsStart':\n return 'frozenRowsStart';\n case 'fixedEndStart':\n case 'fixedEndEnd':\n case 'frozenRowsEnd':\n return 'frozenRowsEnd';\n default:\n return 'grid';\n }\n};\n\nconst resolveColPlane = (plane: DxGridPlane): 'grid' | DxGridFrozenColsPlane => {\n switch (plane) {\n case 'fixedStartStart':\n case 'fixedEndStart':\n case 'frozenColsStart':\n return 'frozenColsStart';\n case 'fixedStartEnd':\n case 'fixedEndEnd':\n case 'frozenColsEnd':\n return 'frozenColsEnd';\n default:\n return 'grid';\n }\n};\n\nconst resolveResizePlane = (resizeAxis: DxGridAxis, cellPlane: DxGridPlane): 'grid' | DxGridFrozenPlane => {\n switch (cellPlane) {\n case 'fixedStartStart':\n return resizeAxis === 'col' ? 'frozenColsStart' : 'frozenRowsStart';\n case 'fixedStartEnd':\n return resizeAxis === 'col' ? 'frozenColsEnd' : 'frozenRowsStart';\n case 'fixedEndStart':\n return resizeAxis === 'col' ? 'frozenColsStart' : 'frozenRowsEnd';\n case 'fixedEndEnd':\n return resizeAxis === 'col' ? 'frozenColsEnd' : 'frozenRowsEnd';\n case 'frozenColsStart':\n case 'frozenColsEnd':\n return resizeAxis === 'col' ? cellPlane : 'grid';\n case 'frozenRowsStart':\n case 'frozenRowsEnd':\n return resizeAxis === 'row' ? cellPlane : 'grid';\n default:\n return cellPlane;\n }\n};\n\nconst isSameCell = (a: DxGridPositionNullable, b: DxGridPositionNullable) =>\n a &&\n b &&\n a.plane === b.plane &&\n Number.isFinite(a.col) &&\n Number.isFinite(a.row) &&\n a.col === b.col &&\n a.row === b.row;\n\nconst defaultRowSize = 32;\n\nconst defaultColSize = 180;\n\n@customElement('dx-grid')\nexport class DxGrid extends LitElement {\n constructor() {\n super();\n this.addEventListener('dx-axis-resize-internal', this.handleAxisResizeInternal as EventListener);\n this.addEventListener('wheel', this.handleWheel, { passive: true });\n this.addEventListener('pointerdown', this.handlePointerDown);\n this.addEventListener('pointermove', this.handlePointerMove);\n this.addEventListener('pointerup', this.handlePointerUp);\n this.addEventListener('pointerleave', this.handlePointerUp);\n this.addEventListener('focus', this.handleFocus, { capture: true });\n this.addEventListener('blur', this.handleBlur, { capture: true });\n this.addEventListener('keydown', this.handleKeydown);\n }\n\n @property({ type: String })\n gridId: string = 'default-grid-id';\n\n @property({ type: Object })\n rowDefault: DxGridPlaneRecord<DxGridFrozenRowsPlane, AxisMeta> = {\n grid: { size: defaultRowSize },\n };\n\n @property({ type: Object })\n columnDefault: DxGridPlaneRecord<DxGridFrozenColsPlane, AxisMeta> = {\n grid: { size: defaultColSize },\n };\n\n @property({ type: Object })\n rows: DxGridAxisMeta = { grid: {} };\n\n @property({ type: Object })\n columns: DxGridAxisMeta = { grid: {} };\n\n @property({ type: Object })\n initialCells: DxGridCells = { grid: {} };\n\n @property({ type: String })\n mode: DxGridMode = 'browse';\n\n @property({ type: Number })\n limitColumns: number = Infinity;\n\n @property({ type: Number })\n limitRows: number = Infinity;\n\n @property({ type: Object })\n frozen: DxGridFrozenAxes = {};\n\n /**\n * When this function is defined, it is used first to try to get a value for a cell, and otherwise will fall back\n * to `cells`.\n */\n getCells: ((nextRange: DxGridPlaneRange, plane: DxGridPlane) => DxGridPlaneCells) | null = null;\n\n @state()\n private cells: DxGridCells = { grid: {} };\n\n //\n // `pos`, short for ‘position’, is the position in pixels of the viewport from the origin.\n //\n\n @state()\n private posInline = 0;\n\n @state()\n private posBlock = 0;\n\n //\n // `size` (when not suffixed with ‘row’ or ‘col’, see above) is the size in pixels of the viewport.\n //\n\n @state()\n private sizeInline = 0;\n\n @state()\n private sizeBlock = 0;\n\n //\n // `overscan` is the amount in pixels to offset the grid content due to the number of overscanned columns or rows.\n //\n\n @state()\n private overscanInline = 0;\n\n @state()\n private overscanBlock = 0;\n\n //\n // `bin`, not short for anything, is the range in pixels within which virtualization does not need to reassess.\n //\n\n @state()\n private binInlineMin = 0;\n\n @state()\n private binInlineMax = defaultColSize;\n\n @state()\n private binBlockMin = 0;\n\n @state()\n private binBlockMax = defaultRowSize;\n\n //\n // `vis`, short for ‘visible’, is the range in numeric index of the columns or rows which should be rendered within\n // the viewport. These start with naïve values that are updated before first contentful render.\n //\n\n @state()\n private visColMin = 0;\n\n @state()\n private visColMax = 1;\n\n @state()\n private visRowMin = 0;\n\n @state()\n private visRowMax = 1;\n\n //\n // `template` is the rendered value of `grid-{axis}-template`.\n //\n @state()\n private templateGridColumns = '0';\n\n @state()\n private templatefrozenColsStart = '';\n\n @state()\n private templatefrozenColsEnd = '';\n\n @state()\n private templateGridRows = '0';\n\n @state()\n private templatefrozenRowsStart = '';\n\n @state()\n private templatefrozenRowsEnd = '';\n\n //\n // Focus, selection, and resize states\n //\n\n @state()\n private pointer: DxGridPointer = null;\n\n @state()\n private colSizes: AxisSizes = { grid: {} };\n\n @state()\n private rowSizes: AxisSizes = { grid: {} };\n\n @state()\n private focusActive: boolean = false;\n\n @state()\n private focusedCell: DxGridPosition = { plane: 'grid', col: 0, row: 0 };\n\n @state()\n private selectionStart: DxGridPosition = { plane: 'grid', col: 0, row: 0 };\n\n @state()\n private selectionEnd: DxGridPosition = { plane: 'grid', col: 0, row: 0 };\n\n //\n // Limits\n //\n\n @state()\n private intrinsicInlineSize: number = Infinity;\n\n @state()\n private intrinsicBlockSize: number = Infinity;\n\n //\n // Primary pointer and keyboard handlers\n //\n\n private dispatchEditRequest(initialContent?: string) {\n this.snapPosToFocusedCell();\n // Without deferring, the event dispatches before `focusedCellBox` can get updated bounds of the cell, hence:\n queueMicrotask(() =>\n this.dispatchEvent(\n new DxEditRequest({\n cellIndex: toCellIndex(this.focusedCell),\n cellBox: this.focusedCellBox(),\n initialContent,\n }),\n ),\n );\n }\n\n private handlePointerDown = (event: PointerEvent) => {\n if (event.isPrimary) {\n const { action, actionEl } = closestAction(event.target);\n if (action) {\n if (action === 'cell') {\n const cellCoords = closestCell(event.target, actionEl);\n if (cellCoords) {\n this.pointer = { state: 'maybeSelecting', pageX: event.pageX, pageY: event.pageY };\n this.selectionStart = cellCoords;\n this.selectionEnd = cellCoords;\n }\n if (this.mode === 'edit') {\n event.preventDefault();\n } else {\n if (this.focusActive && isSameCell(this.focusedCell, cellCoords)) {\n this.dispatchEditRequest();\n }\n }\n }\n }\n }\n };\n\n private handlePointerUp = (event: PointerEvent) => {\n const cell = closestCell(event.target);\n if (cell) {\n this.selectionEnd = cell;\n this.dispatchEvent(\n new DxGridCellsSelect({\n start: this.selectionStart,\n end: this.selectionEnd,\n }),\n );\n }\n this.pointer = null;\n };\n\n private handlePointerMove = (event: PointerEvent) => {\n if (shouldSelect(this.pointer, event)) {\n this.pointer = { state: 'selecting' };\n } else if (this.pointer?.state === 'selecting') {\n const cell = closestCell(event.target);\n if (\n cell &&\n cell.plane === this.selectionStart.plane &&\n (cell.col !== this.selectionEnd.col || cell.row !== this.selectionEnd.row)\n ) {\n this.selectionEnd = cell;\n }\n }\n };\n\n private handleKeydown(event: KeyboardEvent) {\n if (this.focusActive && this.mode === 'browse') {\n // Adjust state\n switch (event.key) {\n case 'ArrowDown':\n this.focusedCell = { ...this.focusedCell, row: Math.min(this.limitRows - 1, this.focusedCell.row + 1) };\n break;\n case 'ArrowUp':\n this.focusedCell = { ...this.focusedCell, row: Math.max(0, this.focusedCell.row - 1) };\n break;\n case 'ArrowRight':\n this.focusedCell = { ...this.focusedCell, col: Math.min(this.limitColumns - 1, this.focusedCell.col + 1) };\n break;\n case 'ArrowLeft':\n this.focusedCell = { ...this.focusedCell, col: Math.max(0, this.focusedCell.col - 1) };\n break;\n }\n // Emit edit request if relevant\n switch (event.key) {\n case 'Enter':\n this.dispatchEditRequest();\n break;\n default:\n if (event.key.length === 1 && event.key.match(/\\P{Cc}/u)) {\n this.dispatchEditRequest(event.key);\n }\n break;\n }\n // Handle virtualization & focus consequences\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'ArrowRight':\n case 'ArrowLeft':\n event.preventDefault();\n this.snapPosToFocusedCell();\n break;\n }\n }\n }\n\n //\n // Accessors\n //\n\n private colSize(c: number | string, plane: DxGridPlane) {\n const resolvedPlane = resolveColPlane(plane);\n return this.colSizes?.[resolvedPlane]?.[c] ?? this.columnDefault[resolvedPlane]?.size ?? defaultColSize;\n }\n\n private rowSize(r: number | string, plane: DxGridPlane) {\n const resolvedPlane = resolveRowPlane(plane);\n return this.rowSizes?.[resolvedPlane]?.[r] ?? this.rowDefault[resolvedPlane]?.size ?? defaultRowSize;\n }\n\n private cell(c: number | string, r: number | string, plane: DxGridPlane): DxGridCellValue | undefined {\n const index: CellIndex = `${c}${separator}${r}`;\n return this.cells?.[plane]?.[index] ?? this.initialCells?.[plane]?.[index];\n }\n\n private cellActive(c: number | string, r: number | string, plane: DxGridPlane): boolean {\n return (\n this.focusActive && this.focusedCell.plane === plane && this.focusedCell.col === c && this.focusedCell.row === r\n );\n }\n\n private focusedCellBox(): DxEditRequest['cellBox'] {\n const cellElement = this.focusedCellElement();\n const cellSize = {\n inlineSize: this.colSize(this.focusedCell.col, this.focusedCell.plane),\n blockSize: this.rowSize(this.focusedCell.row, this.focusedCell.plane),\n };\n if (!cellElement) {\n return { insetInlineStart: NaN, insetBlockStart: NaN, ...cellSize };\n }\n const contentElement = cellElement.offsetParent as HTMLElement;\n // Note that storing `offset` in state causes performance issues, so instead the transform is parsed here.\n const [_translate3d, inlineStr, blockStr] = contentElement.style.transform.split(/[()]|px,?\\s?/);\n const contentOffsetInline = parseFloat(inlineStr);\n const contentOffsetBlock = parseFloat(blockStr);\n const offsetParent = contentElement.offsetParent as HTMLElement;\n return {\n insetInlineStart: cellElement.offsetLeft + contentOffsetInline + offsetParent.offsetLeft,\n insetBlockStart: cellElement.offsetTop + contentOffsetBlock + offsetParent.offsetTop,\n ...cellSize,\n };\n }\n\n //\n // Resize & reposition handlers, observer, ref\n //\n\n @state()\n private observer = new ResizeObserver((entries) => {\n const { inlineSize, blockSize } = entries?.[0]?.contentBoxSize?.[0] ?? {\n inlineSize: 0,\n blockSize: 0,\n };\n if (\n Math.abs(inlineSize - this.sizeInline) > resizeTolerance ||\n Math.abs(blockSize - this.sizeBlock) > resizeTolerance\n ) {\n // console.info('[updating bounds]', 'resize', [inlineSize - this.sizeInline, blockSize - this.sizeBlock]);\n this.sizeInline = inlineSize;\n this.sizeBlock = blockSize;\n this.updateVis();\n queueMicrotask(() => this.updatePos());\n }\n });\n\n private viewportRef: Ref<HTMLDivElement> = createRef();\n\n private maybeUpdateVis = () => {\n if (\n this.posInline >= this.binInlineMin &&\n this.posInline < this.binInlineMax &&\n this.posBlock >= this.binBlockMin &&\n this.posBlock < this.binBlockMax\n ) {\n // do nothing\n } else {\n // console.info(\n // '[updating bounds]',\n // 'wheel',\n // [this.binInlineMin, this.posInline, this.binInlineMax],\n // [this.binBlockMin, this.posBlock, this.binBlockMax],\n // );\n this.updateVis();\n }\n };\n\n private updatePos(inline?: number, block?: number) {\n this.posInline = Math.max(0, Math.min(this.intrinsicInlineSize - this.sizeInline, inline ?? this.posInline));\n this.posBlock = Math.max(0, Math.min(this.intrinsicBlockSize - this.sizeBlock, block ?? this.posBlock));\n this.maybeUpdateVis();\n }\n\n private handleWheel = ({ deltaX, deltaY }: Pick<WheelEvent, 'deltaX' | 'deltaY'>) => {\n if (this.mode === 'browse') {\n this.updatePos(this.posInline + deltaX, this.posBlock + deltaY);\n }\n };\n\n private updateVisInline() {\n // todo: avoid starting from zero\n let colIndex = 0;\n let pxInline = this.colSize(colIndex, 'grid');\n\n while (pxInline < this.posInline) {\n colIndex += 1;\n pxInline += this.colSize(colIndex, 'grid') + gap;\n }\n\n this.visColMin = colIndex - overscanCol;\n\n this.binInlineMin = pxInline - this.colSize(colIndex, 'grid') - gap;\n this.binInlineMax = pxInline + gap;\n\n this.overscanInline =\n [...Array(overscanCol)].reduce((acc, _, c0) => {\n acc += this.colSize(this.visColMin + c0, 'grid');\n return acc;\n }, 0) +\n gap * (overscanCol - 1);\n\n while (pxInline < this.binInlineMax + this.sizeInline + gap) {\n colIndex += 1;\n pxInline += this.colSize(colIndex, 'grid') + gap;\n }\n\n this.visColMax = Math.min(this.limitColumns, colIndex + overscanCol);\n\n this.templateGridColumns = [...Array(this.visColMax - this.visColMin)]\n .map((_, c0) => `${this.colSize(this.visColMin + c0, 'grid')}px`)\n .join(' ');\n\n this.templatefrozenColsStart = [...Array(this.frozen.frozenColsStart ?? 0)]\n .map((_, c0) => `${this.colSize(c0, 'frozenColsStart')}px`)\n .join(' ');\n\n this.templatefrozenColsEnd = [...Array(this.frozen.frozenColsEnd ?? 0)]\n .map((_, c0) => `${this.colSize(c0, 'frozenColsEnd')}px`)\n .join(' ');\n }\n\n private updateVisBlock() {\n // todo: avoid starting from zero\n let rowIndex = 0;\n let pxBlock = this.rowSize(rowIndex, 'grid');\n\n while (pxBlock < this.posBlock) {\n rowIndex += 1;\n pxBlock += this.rowSize(rowIndex, 'grid') + gap;\n }\n\n this.visRowMin = rowIndex - overscanRow;\n\n this.binBlockMin = pxBlock - this.rowSize(rowIndex, 'grid') - gap;\n this.binBlockMax = pxBlock + gap;\n\n this.overscanBlock =\n [...Array(overscanRow)].reduce((acc, _, r0) => {\n acc += this.rowSize(this.visRowMin + r0, 'grid');\n return acc;\n }, 0) +\n gap * (overscanRow - 1);\n\n while (pxBlock < this.binBlockMax + this.sizeBlock) {\n rowIndex += 1;\n pxBlock += this.rowSize(rowIndex, 'grid') + gap;\n }\n\n this.visRowMax = Math.min(this.limitRows, rowIndex + overscanRow);\n\n this.templateGridRows = [...Array(this.visRowMax - this.visRowMin)]\n .map((_, r0) => `${this.rowSize(this.visRowMin + r0, 'grid')}px`)\n .join(' ');\n\n this.templatefrozenRowsStart = [...Array(this.frozen.frozenRowsStart ?? 0)]\n .map((_, r0) => `${this.rowSize(r0, 'frozenRowsStart')}px`)\n .join(' ');\n\n this.templatefrozenRowsEnd = [...Array(this.frozen.frozenRowsEnd ?? 0)]\n .map((_, r0) => `${this.rowSize(r0, 'frozenRowsEnd')}px`)\n .join(' ');\n }\n\n private updateVis() {\n this.updateVisInline();\n this.updateVisBlock();\n }\n\n private updateCells(includeFixed?: boolean) {\n this.cells.grid = this.getCells!(\n {\n start: { col: this.visColMin, row: this.visRowMin },\n end: { col: this.visColMax, row: this.visRowMax },\n },\n 'grid',\n );\n Object.entries(this.frozen)\n .filter(([_, limit]) => limit && limit > 0)\n .forEach(([plane, limit]) => {\n this.cells[plane as DxGridFrozenPlane] = this.getCells!(\n plane.startsWith('frozenRows')\n ? {\n start: { col: this.visColMin, row: 0 },\n end: { col: this.visColMax, row: limit },\n }\n : {\n start: { col: 0, row: this.visRowMin },\n end: { col: limit, row: this.visRowMax },\n },\n plane as DxGridFrozenPlane,\n );\n });\n if (includeFixed) {\n if ((this.frozen.frozenColsStart ?? 0) > 0 && (this.frozen.frozenRowsStart ?? 0) > 0) {\n this.cells.fixedStartStart = this.getCells!(\n {\n start: { col: 0, row: 0 },\n end: { col: this.frozen.frozenColsStart!, row: this.frozen.frozenRowsStart! },\n },\n 'fixedStartStart',\n );\n }\n if ((this.frozen.frozenColsEnd ?? 0) > 0 && (this.frozen.frozenRowsStart ?? 0) > 0) {\n this.cells.fixedStartEnd = this.getCells!(\n {\n start: { col: 0, row: 0 },\n end: { col: this.frozen.frozenColsEnd!, row: this.frozen.frozenRowsStart! },\n },\n 'fixedStartEnd',\n );\n }\n if ((this.frozen.frozenColsStart ?? 0) > 0 && (this.frozen.frozenRowsEnd ?? 0) > 0) {\n this.cells.fixedEndStart = this.getCells!(\n {\n start: { col: 0, row: 0 },\n end: { col: this.frozen.frozenColsStart!, row: this.frozen.frozenRowsEnd! },\n },\n 'fixedEndStart',\n );\n }\n if ((this.frozen.frozenColsEnd ?? 0) > 0 && (this.frozen.frozenRowsEnd ?? 0) > 0) {\n this.cells.fixedEndEnd = this.getCells!(\n {\n start: { col: 0, row: 0 },\n end: { col: this.frozen.frozenColsEnd!, row: this.frozen.frozenRowsEnd! },\n },\n 'fixedEndEnd',\n );\n }\n }\n }\n\n // Focus handlers\n\n private handleFocus(event: FocusEvent) {\n const cellCoords = closestCell(event.target);\n if (cellCoords) {\n this.focusedCell = cellCoords;\n this.focusActive = true;\n }\n }\n\n private handleBlur(event: FocusEvent) {\n // Only unset `focusActive` if focus is not moving to an element within the grid.\n if (!event.relatedTarget || !(event.relatedTarget as HTMLElement).closest(`[data-grid=\"${this.gridId}\"]`)) {\n this.focusActive = false;\n }\n }\n\n private focusedCellElement() {\n return this.viewportRef.value?.querySelector(\n `[data-dx-grid-plane=${this.focusedCell.plane}] > [aria-colindex=\"${this.focusedCell.col}\"][aria-rowindex=\"${this.focusedCell.row}\"]`,\n ) as HTMLElement | null;\n }\n\n private focusedCellRowOutOfVis(minDelta = 0, maxDelta = minDelta) {\n return this.focusedCell.row < this.visRowMin + minDelta || this.focusedCell.row > this.visRowMax - maxDelta;\n }\n\n private focusedCellColOutOfVis(minDelta = 0, maxDelta = minDelta) {\n return this.focusedCell.col < this.visColMin + minDelta || this.focusedCell.col > this.visColMax - maxDelta;\n }\n\n private focusedCellOutOfVis(colDelta = 0, rowDelta = colDelta) {\n switch (this.focusedCell.plane) {\n case 'grid':\n return this.focusedCellRowOutOfVis(rowDelta) || this.focusedCellColOutOfVis(colDelta);\n case 'frozenRowsStart':\n case 'frozenRowsEnd':\n return this.focusedCellColOutOfVis(colDelta);\n case 'frozenColsStart':\n case 'frozenColsEnd':\n return this.focusedCellRowOutOfVis(rowDelta);\n default:\n return false;\n }\n }\n\n /**\n * Moves focus to the cell with actual focus, otherwise moves focus to the viewport.\n */\n refocus(increment?: 'col' | 'row', delta: 1 | -1 = 1) {\n switch (increment) {\n case 'row':\n this.focusedCell = { ...this.focusedCell, row: this.focusedCell.row + delta };\n break;\n case 'col':\n this.focusedCell = { ...this.focusedCell, col: this.focusedCell.col + delta };\n }\n if (increment) {\n this.snapPosToFocusedCell();\n }\n queueMicrotask(() =>\n (this.focusedCellOutOfVis() ? this.viewportRef.value : this.focusedCellElement())?.focus({ preventScroll: true }),\n );\n }\n\n /**\n * Updates `pos` so that a cell in focus is fully within the viewport\n */\n snapPosToFocusedCell() {\n if (this.focusedCellOutOfVis(overscanCol + 1, overscanRow + 1)) {\n if (this.focusedCell.col <= this.visColMin + overscanCol) {\n this.posInline = this.binInlineMin;\n this.updateVisInline();\n } else if (this.focusedCell.col >= this.visColMax - overscanCol - 1) {\n const sizeSumCol = [...Array(this.focusedCell.col - this.visColMin)].reduce((acc, _, c0) => {\n acc += this.colSize(this.visColMin + overscanCol + c0, 'grid') + gap;\n return acc;\n }, 0);\n this.posInline = Math.max(\n 0,\n Math.min(this.intrinsicInlineSize - this.sizeInline, this.binInlineMin + sizeSumCol - this.sizeInline),\n );\n this.updateVisInline();\n }\n\n if (this.focusedCell.row <= this.visRowMin + overscanRow) {\n this.posBlock = this.binBlockMin;\n this.updateVisBlock();\n } else if (this.focusedCell.row >= this.visRowMax - overscanRow - 1) {\n const sizeSumRow = [...Array(this.focusedCell.row - this.visRowMin)].reduce((acc, _, r0) => {\n acc += this.rowSize(this.visRowMin + overscanRow + r0, 'grid') + gap;\n return acc;\n }, 0);\n this.posBlock = Math.max(\n 0,\n Math.min(this.intrinsicBlockSize - this.sizeBlock, this.binBlockMin + sizeSumRow - this.sizeBlock),\n );\n this.updateVisBlock();\n }\n }\n }\n\n //\n // Map scroll DOM methods to virtualized value.\n //\n\n override get scrollLeft() {\n return this.posInline;\n }\n\n override set scrollLeft(nextValue: number) {\n this.posInline = nextValue;\n this.maybeUpdateVis();\n }\n\n override get scrollTop() {\n return this.posBlock;\n }\n\n override set scrollTop(nextValue: number) {\n this.posBlock = nextValue;\n this.maybeUpdateVis();\n }\n\n //\n // Resize handlers\n //\n\n private axisResizeable(plane: 'grid' | DxGridFrozenPlane, axis: DxGridAxis, index: number | string) {\n return axis === 'col'\n ? !!(this.columns[plane]?.[index]?.resizeable ?? this.columnDefault[plane as DxGridFrozenColsPlane]?.resizeable)\n : !!(this.rows[plane]?.[index]?.resizeable ?? this.rowDefault[plane as DxGridFrozenRowsPlane]?.resizeable);\n }\n\n private handleAxisResizeInternal(event: DxAxisResizeInternal) {\n event.stopPropagation();\n const { plane, axis, delta, size, index, type } = event;\n if (axis === 'col') {\n const nextSize = Math.max(sizeColMin, Math.min(sizeColMax, size + delta));\n this.colSizes = { ...this.colSizes, [plane]: { ...this.colSizes[plane], [index]: nextSize } };\n this.updateVisInline();\n this.updateIntrinsicInlineSize();\n } else {\n const nextSize = Math.max(sizeRowMin, Math.min(sizeRowMax, size + delta));\n this.rowSizes = { ...this.colSizes, [plane]: { ...this.rowSizes[plane], [index]: nextSize } };\n this.updateVisBlock();\n this.updateIntrinsicBlockSize();\n }\n if (type === 'dropped') {\n this.dispatchEvent(\n new DxAxisResize({\n plane,\n axis,\n index,\n size: this[`${axis}Size`](index, plane),\n }),\n );\n }\n }\n\n //\n // Render and other lifecycle methods\n //\n\n private renderFixed(plane: DxGridFixedPlane, selection: DxGridSelectionProps) {\n const colPlane = resolveColPlane(plane) as DxGridFrozenPlane;\n const rowPlane = resolveRowPlane(plane) as DxGridFrozenPlane;\n const cols = this.frozen[colPlane];\n const rows = this.frozen[rowPlane];\n return (cols ?? 0) > 0 && (rows ?? 0) > 0\n ? html`<div\n role=\"none\"\n data-dx-grid-plane=${plane}\n class=\"dx-grid__plane--fixed\"\n style=${styleMap({\n 'grid-template-columns': this[`template${colPlane}`],\n 'grid-template-rows': this[`template${rowPlane}`],\n })}\n >\n ${[...Array(cols)].map((_, c) => {\n return [...Array(rows)].map((_, r) => {\n return this.renderCell(c, r, plane, cellSelected(c, r, plane, selection));\n });\n })}\n </div>`\n : null;\n }\n\n private renderFrozenRows(\n plane: DxGridFrozenRowsPlane,\n visibleCols: number,\n offsetInline: number,\n selection: DxGridSelectionProps,\n ) {\n const rowPlane = resolveRowPlane(plane) as DxGridFrozenPlane;\n const rows = this.frozen[rowPlane];\n return (rows ?? 0) > 0\n ? html`<div role=\"none\" class=\"dx-grid__plane--frozen-row\">\n <div\n role=\"none\"\n data-dx-grid-plane=${plane}\n class=\"dx-grid__plane--frozen-row__content\"\n style=\"transform:translate3d(${offsetInline}px,0,0);grid-template-columns:${this\n .templateGridColumns};grid-template-rows:${this[`template${rowPlane}`]}\"\n >\n ${[...Array(visibleCols)].map((_, c0) => {\n return [...Array(rows)].map((_, r) => {\n const c = this.visColMin + c0;\n return this.renderCell(c, r, plane, cellSelected(c, r, plane, selection), c0, r);\n });\n })}\n </div>\n </div>`\n : null;\n }\n\n private renderFrozenColumns(\n plane: DxGridFrozenColsPlane,\n visibleRows: number,\n offsetBlock: number,\n selection: DxGridSelectionProps,\n ) {\n const colPlane = resolveColPlane(plane) as DxGridFrozenPlane;\n const cols = this.frozen[colPlane];\n return (cols ?? 0) > 0\n ? html`<div role=\"none\" class=\"dx-grid__plane--frozen-col\">\n <div\n role=\"none\"\n data-dx-grid-plane=${plane}\n class=\"dx-grid__plane--frozen-col__content\"\n style=\"transform:translate3d(0,${offsetBlock}px,0);grid-template-rows:${this\n .templateGridRows};grid-template-columns:${this[`template${colPlane}`]}\"\n >\n ${[...Array(cols)].map((_, c) => {\n return [...Array(visibleRows)].map((_, r0) => {\n const r = this.visRowMin + r0;\n return this.renderCell(c, r, plane, cellSelected(c, r, plane, selection), c, r0);\n });\n })}\n </div>\n </div>`\n : null;\n }\n\n private renderCell(col: number, row: number, plane: DxGridPlane, selected?: boolean, visCol = col, visRow = row) {\n const cell = this.cell(col, row, plane);\n const active = this.cellActive(col, row, plane);\n const resizeIndex = cell?.resizeHandle ? (cell.resizeHandle === 'col' ? col : row) : undefined;\n const resizePlane = cell?.resizeHandle ? resolveResizePlane(cell.resizeHandle, plane) : undefined;\n return html`<div\n role=\"gridcell\"\n tabindex=\"0\"\n ?inert=${col < 0 || row < 0}\n ?aria-selected=${selected}\n class=${cell || active\n ? (cell?.className ? cell.className + ' ' : '') + (active ? 'dx-grid__cell--active' : '')\n : nothing}\n aria-colindex=${col}\n aria-rowindex=${row}\n data-dx-grid-action=\"cell\"\n style=\"grid-column:${visCol + 1};grid-row:${visRow + 1}\"\n >\n ${cell?.value}${cell?.resizeHandle && this.axisResizeable(resizePlane!, cell.resizeHandle, resizeIndex!)\n ? html`<dx-grid-axis-resize-handle\n axis=${cell.resizeHandle}\n plane=${resizePlane}\n index=${resizeIndex}\n size=${this[`${cell.resizeHandle}Size`](resizeIndex!, plane)}\n ></dx-grid-axis-resize-handle>`\n : null}\n </div>`;\n }\n\n override render() {\n const visibleCols = this.visColMax - this.visColMin;\n const visibleRows = this.visRowMax - this.visRowMin;\n const offsetInline = this.binInlineMin - this.posInline - this.overscanInline;\n const offsetBlock = this.binBlockMin - this.posBlock - this.overscanBlock;\n const selection = selectionProps(this.selectionStart, this.selectionEnd);\n\n return html`<div\n role=\"none\"\n class=\"dx-grid\"\n style=${styleMap({\n 'grid-template-columns': `${this.templatefrozenColsStart ? 'min-content ' : ''}minmax(0, ${\n Number.isFinite(this.limitColumns) ? `${this.intrinsicInlineSize}px` : '1fr'\n })${this.templatefrozenColsEnd ? ' min-content' : ''}`,\n 'grid-template-rows': `${this.templatefrozenRowsStart ? 'min-content ' : ''}minmax(0, ${\n Number.isFinite(this.limitRows) ? `${this.intrinsicBlockSize}px` : '1fr'\n })${this.templatefrozenRowsEnd ? ' min-content' : ''}`,\n })}\n data-grid=${this.gridId}\n data-grid-mode=${this.mode}\n ?data-grid-select=${selection.visible}\n >\n ${this.renderFixed('fixedStartStart', selection)}${this.renderFrozenRows(\n 'frozenRowsStart',\n visibleCols,\n offsetInline,\n selection,\n )}${this.renderFixed('fixedStartEnd', selection)}${this.renderFrozenColumns(\n 'frozenColsStart',\n visibleRows,\n offsetBlock,\n selection,\n )}\n <div role=\"grid\" class=\"dx-grid__plane--grid\" tabindex=\"0\" ${ref(this.viewportRef)}>\n <div\n role=\"none\"\n class=\"dx-grid__plane--grid__content\"\n data-dx-grid-plane=\"grid\"\n style=\"transform:translate3d(${offsetInline}px,${offsetBlock}px,0);grid-template-columns:${this\n .templateGridColumns};grid-template-rows:${this.templateGridRows};\"\n >\n ${[...Array(visibleCols)].map((_, c0) => {\n return [...Array(visibleRows)].map((_, r0) => {\n const c = c0 + this.visColMin;\n const r = r0 + this.visRowMin;\n return this.renderCell(c, r, 'grid', cellSelected(c, r, 'grid', selection), c0, r0);\n });\n })}\n </div>\n </div>\n ${this.renderFrozenColumns('frozenColsEnd', visibleRows, offsetBlock, selection)}${this.renderFixed(\n 'fixedEndStart',\n selection,\n )}${this.renderFrozenRows('frozenRowsEnd', visibleCols, offsetInline, selection)}${this.renderFixed(\n 'fixedEndEnd',\n selection,\n )}\n </div>`;\n }\n\n private updateIntrinsicInlineSize() {\n this.intrinsicInlineSize = Number.isFinite(this.limitColumns)\n ? [...Array(this.limitColumns)].reduce((acc, _, c0) => acc + this.colSize(c0, 'grid'), 0) +\n gap * (this.limitColumns - 1)\n : Infinity;\n }\n\n private updateIntrinsicBlockSize() {\n this.intrinsicBlockSize = Number.isFinite(this.limitRows)\n ? [...Array(this.limitRows)].reduce((acc, _, r0) => acc + this.rowSize(r0, 'grid'), 0) +\n gap * (this.limitRows - 1)\n : Infinity;\n }\n\n private updateIntrinsicSizes() {\n this.updateIntrinsicInlineSize();\n this.updateIntrinsicBlockSize();\n }\n\n override firstUpdated() {\n if (this.getCells) {\n this.updateCells(true);\n }\n this.observer.observe(this.viewportRef.value!);\n this.colSizes = Object.entries(this.columns).reduce(\n (acc: AxisSizes, [plane, planeColMeta]) => {\n acc[plane as 'grid' | DxGridFrozenPlane] = Object.entries(planeColMeta).reduce(\n (planeAcc: Record<string, number>, [col, colMeta]) => {\n if (colMeta?.size) {\n planeAcc[col] = colMeta.size;\n }\n return planeAcc;\n },\n {},\n );\n return acc;\n },\n { grid: {} },\n );\n this.rowSizes = Object.entries(this.rows).reduce(\n (acc: AxisSizes, [plane, planeRowMeta]) => {\n acc[plane as 'grid' | DxGridFrozenPlane] = Object.entries(planeRowMeta).reduce(\n (planeAcc: Record<string, number>, [row, rowMeta]) => {\n if (rowMeta?.size) {\n planeAcc[row] = rowMeta.size;\n }\n return planeAcc;\n },\n {},\n );\n return acc;\n },\n { grid: {} },\n );\n this.updateIntrinsicSizes();\n }\n\n override willUpdate(changedProperties: Map<string, any>) {\n if (\n this.getCells &&\n (changedProperties.has('initialCells') ||\n changedProperties.has('visColMin') ||\n changedProperties.has('visColMax') ||\n changedProperties.has('visRowMin') ||\n changedProperties.has('visRowMax'))\n ) {\n this.updateCells();\n }\n }\n\n override updated(changedProperties: Map<string, any>) {\n // Update the focused element if there is a change in bounds (otherwise Lit keeps focus on the relative element).\n if (\n this.focusActive &&\n (changedProperties.has('visRowMin') || changedProperties.has('visColMin') || changedProperties.has('focusedCell'))\n ) {\n this.refocus();\n }\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n if (this.viewportRef.value) {\n this.observer.unobserve(this.viewportRef.value);\n }\n }\n\n override createRenderRoot() {\n return this;\n }\n}\n\nexport { rowToA1Notation, colToA1Notation } from './util';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';\nimport { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';\nimport { type CleanupFn, type DragLocationHistory } from '@atlaskit/pragmatic-drag-and-drop/types';\nimport { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ref } from 'lit/directives/ref.js';\n\nimport { DxAxisResizeInternal, type DxGridAxis, type DxGridFrozenPlane } from './types';\n\n@customElement('dx-grid-axis-resize-handle')\nexport class DxGridAxisResizeHandle extends LitElement {\n @property({ type: String })\n axis: DxGridAxis = 'row';\n\n @property({ type: String })\n plane: 'grid' | DxGridFrozenPlane = 'grid';\n\n @property({ type: String })\n index: string = '-1';\n\n @property({ type: Number })\n size: number = 128;\n\n private dragStartSize: number = 128;\n\n override render() {\n return html`<button class=\"dx-grid__resize-handle\" data-dx-grid-axis=${this.axis} ${ref(this.mount)}>\n <span class=\"sr-only\">Resize</span>\n </button>`;\n }\n\n private cleanup: CleanupFn | null = null;\n\n private dispatchResize(location: DragLocationHistory, state: 'dragging' | 'dropped') {\n const client = this.axis === 'row' ? 'clientY' : 'clientX';\n const event = new DxAxisResizeInternal({\n axis: this.axis,\n plane: this.plane,\n size: this.dragStartSize,\n index: this.index,\n delta: location.current.input[client] - location.initial.input[client],\n state,\n });\n this.dispatchEvent(event);\n }\n\n private mount(element?: Element) {\n this.cleanup?.();\n const host = this;\n if (element) {\n this.cleanup = draggable({\n element: element as HTMLButtonElement,\n onGenerateDragPreview: ({ nativeSetDragImage }) => {\n // we will be moving the line to indicate a drag\n // we can disable the native drag preview\n disableNativeDragPreview({ nativeSetDragImage });\n // we don't want any native drop animation for when the user\n // does not drop on a drop target. we want the drag to finish immediately\n preventUnhandled.start();\n },\n onDragStart() {\n host.dragStartSize = host.size;\n },\n onDrag({ location }) {\n host.dispatchResize(location, 'dragging');\n },\n onDrop({ location }) {\n host.dispatchResize(location, 'dropped');\n },\n });\n }\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.cleanup?.();\n }\n\n override createRenderRoot() {\n return this;\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type CellIndex, type DxGridPosition } from './types';\n\n/**\n * Separator for serializing cell position vectors\n */\nexport const separator = ',';\n\nexport const toCellIndex = (cellCoords: DxGridPosition): CellIndex => `${cellCoords.col}${separator}${cellCoords.row}`;\n\n//\n// A1 notation is the fallback for numbering columns and rows.\n//\n\nexport const colToA1Notation = (col: number): string => {\n return (\n (col >= 26 ? String.fromCharCode('A'.charCodeAt(0) + Math.floor(col / 26) - 1) : '') +\n String.fromCharCode('A'.charCodeAt(0) + (col % 26))\n );\n};\n\nexport const rowToA1Notation = (row: number): string => {\n return `${row + 1}`;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type DxGrid } from './dx-grid';\nimport { toCellIndex } from './util';\n\nexport type CellIndex = `${string},${string}`;\n\nexport type DxGridAxis = 'row' | 'col';\n\nexport type DxGridFrozenColsPlane = `frozenCols${'Start' | 'End'}`;\nexport type DxGridFrozenRowsPlane = `frozenRows${'Start' | 'End'}`;\n\nexport type DxGridFrozenPlane = DxGridFrozenColsPlane | DxGridFrozenRowsPlane;\nexport type DxGridFixedPlane = `fixed${'Start' | 'End'}${'Start' | 'End'}`;\n\nexport type DxGridPlane = 'grid' | DxGridFrozenPlane | DxGridFixedPlane;\nexport type DxGridPlaneRecord<P extends Exclude<DxGridPlane, 'grid'>, T> = Record<'grid', T> & Partial<Record<P, T>>;\n\nexport type DxGridPlanePosition = Record<DxGridAxis, number>;\nexport type DxGridPosition = DxGridPlanePosition & { plane: DxGridPlane };\nexport type DxGridPositionNullable = DxGridPosition | null;\n\nexport type DxGridPlaneCells = Record<CellIndex, DxGridCellValue>;\nexport type DxGridCells = { grid: DxGridPlaneCells } & Partial<\n Record<DxGridFixedPlane | DxGridFrozenPlane, DxGridPlaneCells>\n>;\n\nexport type DxGridPlaneAxisMeta = Record<string, AxisMeta>;\nexport type DxGridAxisMeta = DxGridPlaneRecord<DxGridFrozenPlane, DxGridPlaneAxisMeta>;\n\nexport type DxGridPointer =\n | null\n | ({ state: 'maybeSelecting' } & Pick<PointerEvent, 'pageX' | 'pageY'>)\n | { state: 'selecting' };\n\nexport type DxAxisResizeProps = Pick<DxAxisResize, 'axis' | 'plane' | 'index' | 'size'>;\nexport type DxAxisResizeInternalProps = DxAxisResizeProps & { delta: number; state: 'dragging' | 'dropped' };\n\nexport type DxGridMode = 'browse' | 'edit';\n\nexport type DxGridFrozenAxes = Partial<Record<DxGridFrozenPlane, number>>;\n\nexport type DxGridCellValue = {\n /**\n * The content value\n */\n value: string;\n /**\n * If this is a merged cell, the bottomright-most of the range in numeric notation, otherwise undefined.\n */\n end?: string;\n /**\n * `class` attribute value to apply to the gridcell element.\n */\n className?: string;\n /**\n * Whether to render a resize handle for this cell’s row or column.\n */\n resizeHandle?: DxGridAxis;\n};\n\nexport type AxisMeta = {\n size: number;\n description?: string;\n resizeable?: boolean;\n};\n\nexport type AxisSizes = DxGridPlaneRecord<DxGridFrozenPlane, Record<string, number>>;\n\nexport type DxGridProps = Partial<\n Pick<\n DxGrid,\n 'initialCells' | 'rows' | 'columns' | 'rowDefault' | 'columnDefault' | 'limitRows' | 'limitColumns' | 'frozen'\n >\n>;\n\nexport type DxGridSelectionProps = {\n plane: DxGridPlane;\n colMin: number;\n colMax: number;\n rowMin: number;\n rowMax: number;\n visible?: boolean;\n};\n\nexport class DxAxisResize extends Event {\n public readonly axis: DxGridAxis;\n public readonly plane: 'grid' | DxGridFrozenPlane;\n public readonly index: string;\n public readonly size: number;\n constructor(props: DxAxisResizeProps) {\n super('dx-axis-resize');\n this.axis = props.axis;\n this.plane = props.plane;\n this.index = props.index;\n this.size = props.size;\n }\n}\n\nexport class DxAxisResizeInternal extends Event {\n public readonly axis: DxGridAxis;\n public readonly plane: 'grid' | DxGridFrozenPlane;\n public readonly index: string;\n public readonly size: number;\n public readonly delta: number;\n public readonly state: 'dragging' | 'dropped';\n constructor(props: DxAxisResizeInternalProps) {\n super('dx-axis-resize-internal', { composed: true, bubbles: true });\n this.axis = props.axis;\n this.plane = props.plane;\n this.index = props.index;\n this.size = props.size;\n this.delta = props.delta;\n this.state = props.state;\n }\n}\n\nexport type DxEditRequestProps = Pick<DxEditRequest, 'cellIndex' | 'cellBox' | 'initialContent'>;\n\nexport class DxEditRequest extends Event {\n public readonly cellIndex: CellIndex;\n public readonly cellBox: Record<'insetInlineStart' | 'insetBlockStart' | 'inlineSize' | 'blockSize', number>;\n public readonly initialContent?: string;\n constructor(props: DxEditRequestProps) {\n super('dx-edit-request');\n this.cellIndex = props.cellIndex;\n this.cellBox = props.cellBox;\n this.initialContent = props.initialContent;\n }\n}\n\nexport type DxGridPlaneRange = { start: DxGridPlanePosition; end: DxGridPlanePosition };\nexport type DxGridRange = { start: DxGridPosition; end: DxGridPosition };\n\nexport class DxGridCellsSelect extends Event {\n public readonly start: string;\n public readonly end: string;\n public readonly minCol: number;\n public readonly maxCol: number;\n public readonly minRow: number;\n public readonly maxRow: number;\n constructor({ start, end }: DxGridRange) {\n super('dx-grid-cells-select');\n this.start = toCellIndex(start);\n this.end = toCellIndex(end);\n this.minCol = Math.min(start.col, end.col);\n this.maxCol = Math.max(start.col, end.col);\n this.minRow = Math.min(start.row, end.row);\n this.maxRow = Math.max(start.row, end.row);\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,cAAAA,aAAYC,QAAAA,OAAMC,eAAe;AAC1C,SAASC,iBAAAA,gBAAeC,OAAOC,YAAAA,iBAAgB;AAC/C,SAASC,OAAAA,MAAKC,iBAA2B;AACzC,SAASC,gBAAgB;;;ACHzB,SAASC,iBAAiB;AAC1B,SAASC,gCAAgC;AACzC,SAASC,wBAAwB;AAEjC,SAASC,MAAMC,kBAAkB;AACjC,SAASC,eAAeC,gBAAgB;AACxC,SAASC,WAAW;;;ACDb,IAAMC,YAAY;AAElB,IAAMC,cAAc,CAACC,eAA0C,GAAGA,WAAWC,GAAG,GAAGH,SAAAA,GAAYE,WAAWE,GAAG;AAM7G,IAAMC,kBAAkB,CAACF,QAAAA;AAC9B,UACGA,OAAO,KAAKG,OAAOC,aAAa,IAAIC,WAAW,CAAA,IAAKC,KAAKC,MAAMP,MAAM,EAAA,IAAM,CAAA,IAAK,MACjFG,OAAOC,aAAa,IAAIC,WAAW,CAAA,IAAML,MAAM,EAAA;AAEnD;AAEO,IAAMQ,kBAAkB,CAACP,QAAAA;AAC9B,SAAO,GAAGA,MAAM,CAAA;AAClB;;;AC6DO,IAAMQ,eAAN,cAA2BC,MAAAA;EAKhCC,YAAYC,OAA0B;AACpC,UAAM,gBAAA;AACN,SAAKC,OAAOD,MAAMC;AAClB,SAAKC,QAAQF,MAAME;AACnB,SAAKC,QAAQH,MAAMG;AACnB,SAAKC,OAAOJ,MAAMI;EACpB;AACF;AAEO,IAAMC,uBAAN,cAAmCP,MAAAA;EAOxCC,YAAYC,OAAkC;AAC5C,UAAM,2BAA2B;MAAEM,UAAU;MAAMC,SAAS;IAAK,CAAA;AACjE,SAAKN,OAAOD,MAAMC;AAClB,SAAKC,QAAQF,MAAME;AACnB,SAAKC,QAAQH,MAAMG;AACnB,SAAKC,OAAOJ,MAAMI;AAClB,SAAKI,QAAQR,MAAMQ;AACnB,SAAKC,QAAQT,MAAMS;EACrB;AACF;AAIO,IAAMC,gBAAN,cAA4BZ,MAAAA;EAIjCC,YAAYC,OAA2B;AACrC,UAAM,iBAAA;AACN,SAAKW,YAAYX,MAAMW;AACvB,SAAKC,UAAUZ,MAAMY;AACrB,SAAKC,iBAAiBb,MAAMa;EAC9B;AACF;AAKO,IAAMC,oBAAN,cAAgChB,MAAAA;EAOrCC,YAAY,EAAEgB,OAAOC,IAAG,GAAiB;AACvC,UAAM,sBAAA;AACN,SAAKD,QAAQE,YAAYF,KAAAA;AACzB,SAAKC,MAAMC,YAAYD,GAAAA;AACvB,SAAKE,SAASC,KAAKC,IAAIL,MAAMM,KAAKL,IAAIK,GAAG;AACzC,SAAKC,SAASH,KAAKI,IAAIR,MAAMM,KAAKL,IAAIK,GAAG;AACzC,SAAKG,SAASL,KAAKC,IAAIL,MAAMU,KAAKT,IAAIS,GAAG;AACzC,SAAKC,SAASP,KAAKI,IAAIR,MAAMU,KAAKT,IAAIS,GAAG;EAC3C;AACF;;;;;;;;;AFzIO,IAAME,yBAAN,cAAqCC,WAAAA;EAArC;;AAELC,gBAAmB;AAGnBC,iBAAoC;AAGpCC,iBAAgB;AAGhBC,gBAAe;AAEPC,yBAAwB;AAQxBC,mBAA4B;;EAN3BC,SAAS;AAChB,WAAOC,gEAAgE,KAAKP,IAAI,IAAIQ,IAAI,KAAKC,KAAK,CAAA;;;EAGpG;EAIQC,eAAeC,UAA+BC,QAA+B;AACnF,UAAMC,SAAS,KAAKb,SAAS,QAAQ,YAAY;AACjD,UAAMc,QAAQ,IAAIC,qBAAqB;MACrCf,MAAM,KAAKA;MACXC,OAAO,KAAKA;MACZE,MAAM,KAAKC;MACXF,OAAO,KAAKA;MACZc,OAAOL,SAASM,QAAQC,MAAML,MAAAA,IAAUF,SAASQ,QAAQD,MAAML,MAAAA;MAC/DD,OAAAA;IACF,CAAA;AACA,SAAKQ,cAAcN,KAAAA;EACrB;EAEQL,MAAMY,SAAmB;AAC/B,SAAKhB,UAAO;AACZ,UAAMiB,OAAO;AACb,QAAID,SAAS;AACX,WAAKhB,UAAUkB,UAAU;QACvBF;QACAG,uBAAuB,CAAC,EAAEC,mBAAkB,MAAE;AAG5CC,mCAAyB;YAAED;UAAmB,CAAA;AAG9CE,2BAAiBC,MAAK;QACxB;QACAC,cAAAA;AACEP,eAAKlB,gBAAgBkB,KAAKnB;QAC5B;QACA2B,OAAO,EAAEnB,SAAQ,GAAE;AACjBW,eAAKZ,eAAeC,UAAU,UAAA;QAChC;QACAoB,OAAO,EAAEpB,SAAQ,GAAE;AACjBW,eAAKZ,eAAeC,UAAU,SAAA;QAChC;MACF,CAAA;IACF;EACF;EAESqB,uBAAuB;AAC9B,UAAMA,qBAAAA;AACN,SAAK3B,UAAO;EACd;EAES4B,mBAAmB;AAC1B,WAAO;EACT;AACF;;EAtEGC,SAAS;IAAEC,MAAMC;EAAO,CAAA;GADdtC,uBAAAA,WAAAA,QAAAA,MAAAA;;EAIVoC,SAAS;IAAEC,MAAMC;EAAO,CAAA;GAJdtC,uBAAAA,WAAAA,SAAAA,MAAAA;;EAOVoC,SAAS;IAAEC,MAAMC;EAAO,CAAA;GAPdtC,uBAAAA,WAAAA,SAAAA,MAAAA;;EAUVoC,SAAS;IAAEC,MAAME;EAAO,CAAA;GAVdvC,uBAAAA,WAAAA,QAAAA,MAAAA;AAAAA,yBAAAA,aAAAA;EADZwC,cAAc,4BAAA;GACFxC,sBAAAA;;;;;;;;;AD4Bb,IAAMyC,MAAM;AAKZ,IAAMC,kBAAkB;AAKxB,IAAMC,kBAAkB;AAKxB,IAAMC,cAAc;AACpB,IAAMC,cAAc;AAKpB,IAAMC,aAAa;AACnB,IAAMC,aAAa;AACnB,IAAMC,aAAa;AACnB,IAAMC,aAAa;AAEnB,IAAMC,eAAe,CAACC,SAAwB,EAAEC,OAAOC,MAAK,MAAgB;AAC1E,MAAIF,SAASG,UAAU,kBAAkB;AACvC,WAAOC,KAAKC,MAAMD,KAAKE,IAAIN,QAAQC,QAAQA,KAAAA,GAAQG,KAAKE,IAAIN,QAAQE,QAAQA,KAAAA,CAAAA,KAAWV;EACzF,OAAO;AACL,WAAO;EACT;AACF;AAEA,IAAMe,iBAAiB,CAACC,gBAAgCC,iBAAAA;AACtD,QAAMC,SAASN,KAAKO,IAAIH,eAAeI,KAAKH,aAAaG,GAAG;AAC5D,QAAMC,SAAST,KAAKU,IAAIN,eAAeI,KAAKH,aAAaG,GAAG;AAC5D,QAAMG,SAASX,KAAKO,IAAIH,eAAeQ,KAAKP,aAAaO,GAAG;AAC5D,QAAMC,SAASb,KAAKU,IAAIN,eAAeQ,KAAKP,aAAaO,GAAG;AAC5D,QAAME,QAAQV,eAAeU;AAC7B,QAAMC,UAAUT,WAAWG,UAAUE,WAAWE;AAChD,SAAO;IAAEP;IAAQG;IAAQE;IAAQE;IAAQC;IAAOC;EAAQ;AAC1D;AAEA,IAAMC,eAAe,CAACR,KAAaI,KAAaE,OAAoBG,cAAAA;AAClE,SACEH,UAAUG,UAAUH,SACpBN,OAAOS,UAAUX,UACjBE,OAAOS,UAAUR,UACjBG,OAAOK,UAAUN,UACjBC,OAAOK,UAAUJ;AAErB;AAEA,IAAMK,gBAAgB,CAACC,WAAAA;AACrB,QAAMC,WAAgCD,QAA+BE,QAAQ,uBAAA,KAA4B;AACzG,SAAO;IAAED;IAAUE,QAAQF,UAAUG,aAAa,qBAAA,KAA0B;EAAK;AACnF;AAEA,IAAMC,cAAc,CAACL,QAA4BC,aAAAA;AAC/C,MAAIK,cAAcL;AAClB,MAAI,CAACK,aAAa;AAChB,UAAM,EAAEH,QAAQF,UAAAA,UAAQ,IAAKF,cAAcC,MAAAA;AAC3C,QAAIG,WAAW,QAAQ;AACrBG,oBAAcL;IAChB;EACF;AACA,MAAIK,aAAa;AACf,UAAMjB,MAAMkB,SAASD,YAAYF,aAAa,eAAA,KAAoB,OAAA;AAClE,UAAMX,MAAMc,SAASD,YAAYF,aAAa,eAAA,KAAoB,OAAA;AAClE,UAAMT,QAASW,YAAYJ,QAAQ,sBAAA,GAAyBE,aAAa,oBAAA,KACvE;AACF,WAAO;MAAET;MAAON;MAAKI;IAAI;EAC3B,OAAO;AACL,WAAO;EACT;AACF;AAEA,IAAMe,kBAAkB,CAACb,UAAAA;AACvB,UAAQA,OAAAA;IACN,KAAK;IACL,KAAK;IACL,KAAK;AACH,aAAO;IACT,KAAK;IACL,KAAK;IACL,KAAK;AACH,aAAO;IACT;AACE,aAAO;EACX;AACF;AAEA,IAAMc,kBAAkB,CAACd,UAAAA;AACvB,UAAQA,OAAAA;IACN,KAAK;IACL,KAAK;IACL,KAAK;AACH,aAAO;IACT,KAAK;IACL,KAAK;IACL,KAAK;AACH,aAAO;IACT;AACE,aAAO;EACX;AACF;AAEA,IAAMe,qBAAqB,CAACC,YAAwBC,cAAAA;AAClD,UAAQA,WAAAA;IACN,KAAK;AACH,aAAOD,eAAe,QAAQ,oBAAoB;IACpD,KAAK;AACH,aAAOA,eAAe,QAAQ,kBAAkB;IAClD,KAAK;AACH,aAAOA,eAAe,QAAQ,oBAAoB;IACpD,KAAK;AACH,aAAOA,eAAe,QAAQ,kBAAkB;IAClD,KAAK;IACL,KAAK;AACH,aAAOA,eAAe,QAAQC,YAAY;IAC5C,KAAK;IACL,KAAK;AACH,aAAOD,eAAe,QAAQC,YAAY;IAC5C;AACE,aAAOA;EACX;AACF;AAEA,IAAMC,aAAa,CAACC,GAA2BC,MAC7CD,KACAC,KACAD,EAAEnB,UAAUoB,EAAEpB,SACdqB,OAAOC,SAASH,EAAEzB,GAAG,KACrB2B,OAAOC,SAASH,EAAErB,GAAG,KACrBqB,EAAEzB,QAAQ0B,EAAE1B,OACZyB,EAAErB,QAAQsB,EAAEtB;AAEd,IAAMyB,iBAAiB;AAEvB,IAAMC,iBAAiB;AAGhB,IAAMC,SAAN,cAAqBC,YAAAA;EAC1BC,cAAc;AACZ,UAAK;AAaPC,kBAAiB;AAGjBC,sBAAiE;MAC/DC,MAAM;QAAEC,MAAMR;MAAe;IAC/B;AAGAS,yBAAoE;MAClEF,MAAM;QAAEC,MAAMP;MAAe;IAC/B;AAGAS,gBAAuB;MAAEH,MAAM,CAAC;IAAE;AAGlCI,mBAA0B;MAAEJ,MAAM,CAAC;IAAE;AAGrCK,wBAA4B;MAAEL,MAAM,CAAC;IAAE;AAGvCM,gBAAmB;AAGnBC,wBAAuBC;AAGvBC,qBAAoBD;AAGpBE,kBAA2B,CAAC;AAM5BC;;;;oBAA2F;AAGnFC,iBAAqB;MAAEZ,MAAM,CAAC;IAAE;AAOhCa;;;qBAAY;AAGZC,oBAAW;AAOXC;;;sBAAa;AAGbC,qBAAY;AAOZC;;;0BAAiB;AAGjBC,yBAAgB;AAOhBC;;;wBAAe;AAGfC,wBAAe1B;AAGf2B,uBAAc;AAGdC,uBAAc7B;AAQd8B;;;;qBAAY;AAGZC,qBAAY;AAGZC,qBAAY;AAGZC,qBAAY;AAMZC;;;+BAAsB;AAGtBC,mCAA0B;AAG1BC,iCAAwB;AAGxBC,4BAAmB;AAGnBC,mCAA0B;AAG1BC,iCAAwB;AAOxBhF;;;mBAAyB;AAGzBiF,oBAAsB;MAAEjC,MAAM,CAAC;IAAE;AAGjCkC,oBAAsB;MAAElC,MAAM,CAAC;IAAE;AAGjCmC,uBAAuB;AAGvBC,uBAA8B;MAAElE,OAAO;MAAQN,KAAK;MAAGI,KAAK;IAAE;AAG9DR,0BAAiC;MAAEU,OAAO;MAAQN,KAAK;MAAGI,KAAK;IAAE;AAGjEP,wBAA+B;MAAES,OAAO;MAAQN,KAAK;MAAGI,KAAK;IAAE;AAO/DqE;;;+BAA8B7B;AAG9B8B,8BAA6B9B;AAoB7B+B,6BAAoB,CAACC,UAAAA;AAC3B,UAAIA,MAAMC,WAAW;AACnB,cAAM,EAAE/D,QAAQF,SAAQ,IAAKF,cAAckE,MAAMjE,MAAM;AACvD,YAAIG,QAAQ;AACV,cAAIA,WAAW,QAAQ;AACrB,kBAAMgE,aAAa9D,YAAY4D,MAAMjE,QAAQC,QAAAA;AAC7C,gBAAIkE,YAAY;AACd,mBAAK1F,UAAU;gBAAEG,OAAO;gBAAkBF,OAAOuF,MAAMvF;gBAAOC,OAAOsF,MAAMtF;cAAM;AACjF,mBAAKM,iBAAiBkF;AACtB,mBAAKjF,eAAeiF;YACtB;AACA,gBAAI,KAAKpC,SAAS,QAAQ;AACxBkC,oBAAMG,eAAc;YACtB,OAAO;AACL,kBAAI,KAAKR,eAAe/C,WAAW,KAAKgD,aAAaM,UAAAA,GAAa;AAChE,qBAAKE,oBAAmB;cAC1B;YACF;UACF;QACF;MACF;IACF;AAEQC,2BAAkB,CAACL,UAAAA;AACzB,YAAMM,OAAOlE,YAAY4D,MAAMjE,MAAM;AACrC,UAAIuE,MAAM;AACR,aAAKrF,eAAeqF;AACpB,aAAKC,cACH,IAAIC,kBAAkB;UACpBC,OAAO,KAAKzF;UACZ0F,KAAK,KAAKzF;QACZ,CAAA,CAAA;MAEJ;AACA,WAAKT,UAAU;IACjB;AAEQmG,6BAAoB,CAACX,UAAAA;AAC3B,UAAIzF,aAAa,KAAKC,SAASwF,KAAAA,GAAQ;AACrC,aAAKxF,UAAU;UAAEG,OAAO;QAAY;MACtC,WAAW,KAAKH,SAASG,UAAU,aAAa;AAC9C,cAAM2F,OAAOlE,YAAY4D,MAAMjE,MAAM;AACrC,YACEuE,QACAA,KAAK5E,UAAU,KAAKV,eAAeU,UAClC4E,KAAKlF,QAAQ,KAAKH,aAAaG,OAAOkF,KAAK9E,QAAQ,KAAKP,aAAaO,MACtE;AACA,eAAKP,eAAeqF;QACtB;MACF;IACF;AA+FQM;;;oBAAW,IAAIC,eAAe,CAACC,YAAAA;AACrC,YAAM,EAAEC,YAAYC,UAAS,IAAKF,UAAU,CAAA,GAAIG,iBAAiB,CAAA,KAAM;QACrEF,YAAY;QACZC,WAAW;MACb;AACA,UACEpG,KAAKE,IAAIiG,aAAa,KAAKxC,UAAU,IAAIxE,mBACzCa,KAAKE,IAAIkG,YAAY,KAAKxC,SAAS,IAAIzE,iBACvC;AAEA,aAAKwE,aAAawC;AAClB,aAAKvC,YAAYwC;AACjB,aAAKE,UAAS;AACdC,uBAAe,MAAM,KAAKC,UAAS,CAAA;MACrC;IACF,CAAA;AAEQC,uBAAmCC,UAAAA;AAEnCC,0BAAiB,MAAA;AACvB,UACE,KAAKlD,aAAa,KAAKM,gBACvB,KAAKN,YAAY,KAAKO,gBACtB,KAAKN,YAAY,KAAKO,eACtB,KAAKP,WAAW,KAAKQ,aACrB;MAEF,OAAO;AAOL,aAAKoC,UAAS;MAChB;IACF;AAQQM,uBAAc,CAAC,EAAEC,QAAQC,OAAM,MAAyC;AAC9E,UAAI,KAAK5D,SAAS,UAAU;AAC1B,aAAKsD,UAAU,KAAK/C,YAAYoD,QAAQ,KAAKnD,WAAWoD,MAAAA;MAC1D;IACF;AAhYE,SAAKC,iBAAiB,2BAA2B,KAAKC,wBAAwB;AAC9E,SAAKD,iBAAiB,SAAS,KAAKH,aAAa;MAAEK,SAAS;IAAK,CAAA;AACjE,SAAKF,iBAAiB,eAAe,KAAK5B,iBAAiB;AAC3D,SAAK4B,iBAAiB,eAAe,KAAKhB,iBAAiB;AAC3D,SAAKgB,iBAAiB,aAAa,KAAKtB,eAAe;AACvD,SAAKsB,iBAAiB,gBAAgB,KAAKtB,eAAe;AAC1D,SAAKsB,iBAAiB,SAAS,KAAKG,aAAa;MAAEC,SAAS;IAAK,CAAA;AACjE,SAAKJ,iBAAiB,QAAQ,KAAKK,YAAY;MAAED,SAAS;IAAK,CAAA;AAC/D,SAAKJ,iBAAiB,WAAW,KAAKM,aAAa;EACrD;;;;EAwKQ7B,oBAAoB8B,gBAAyB;AACnD,SAAKC,qBAAoB;AAEzBhB,mBAAe,MACb,KAAKZ,cACH,IAAI6B,cAAc;MAChBC,WAAWC,YAAY,KAAK1C,WAAW;MACvC2C,SAAS,KAAKC,eAAc;MAC5BN;IACF,CAAA,CAAA,CAAA;EAGN;EAsDQD,cAAcjC,OAAsB;AAC1C,QAAI,KAAKL,eAAe,KAAK7B,SAAS,UAAU;AAE9C,cAAQkC,MAAMyC,KAAG;QACf,KAAK;AACH,eAAK7C,cAAc;YAAE,GAAG,KAAKA;YAAapE,KAAKZ,KAAKO,IAAI,KAAK8C,YAAY,GAAG,KAAK2B,YAAYpE,MAAM,CAAA;UAAG;AACtG;QACF,KAAK;AACH,eAAKoE,cAAc;YAAE,GAAG,KAAKA;YAAapE,KAAKZ,KAAKU,IAAI,GAAG,KAAKsE,YAAYpE,MAAM,CAAA;UAAG;AACrF;QACF,KAAK;AACH,eAAKoE,cAAc;YAAE,GAAG,KAAKA;YAAaxE,KAAKR,KAAKO,IAAI,KAAK4C,eAAe,GAAG,KAAK6B,YAAYxE,MAAM,CAAA;UAAG;AACzG;QACF,KAAK;AACH,eAAKwE,cAAc;YAAE,GAAG,KAAKA;YAAaxE,KAAKR,KAAKU,IAAI,GAAG,KAAKsE,YAAYxE,MAAM,CAAA;UAAG;AACrF;MACJ;AAEA,cAAQ4E,MAAMyC,KAAG;QACf,KAAK;AACH,eAAKrC,oBAAmB;AACxB;QACF;AACE,cAAIJ,MAAMyC,IAAIC,WAAW,KAAK1C,MAAMyC,IAAIE,MAAM,SAAA,GAAY;AACxD,iBAAKvC,oBAAoBJ,MAAMyC,GAAG;UACpC;AACA;MACJ;AAEA,cAAQzC,MAAMyC,KAAG;QACf,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;AACHzC,gBAAMG,eAAc;AACpB,eAAKgC,qBAAoB;AACzB;MACJ;IACF;EACF;;;;EAMQS,QAAQC,GAAoBnH,OAAoB;AACtD,UAAMoH,gBAAgBtG,gBAAgBd,KAAAA;AACtC,WAAO,KAAK+D,WAAWqD,aAAAA,IAAiBD,CAAAA,KAAM,KAAKnF,cAAcoF,aAAAA,GAAgBrF,QAAQP;EAC3F;EAEQ6F,QAAQC,GAAoBtH,OAAoB;AACtD,UAAMoH,gBAAgBvG,gBAAgBb,KAAAA;AACtC,WAAO,KAAKgE,WAAWoD,aAAAA,IAAiBE,CAAAA,KAAM,KAAKzF,WAAWuF,aAAAA,GAAgBrF,QAAQR;EACxF;EAEQqD,KAAKuC,GAAoBG,GAAoBtH,OAAiD;AACpG,UAAMuH,QAAmB,GAAGJ,CAAAA,GAAIK,SAAAA,GAAYF,CAAAA;AAC5C,WAAO,KAAK5E,QAAQ1C,KAAAA,IAASuH,KAAAA,KAAU,KAAKpF,eAAenC,KAAAA,IAASuH,KAAAA;EACtE;EAEQE,WAAWN,GAAoBG,GAAoBtH,OAA6B;AACtF,WACE,KAAKiE,eAAe,KAAKC,YAAYlE,UAAUA,SAAS,KAAKkE,YAAYxE,QAAQyH,KAAK,KAAKjD,YAAYpE,QAAQwH;EAEnH;EAEQR,iBAA2C;AACjD,UAAMnG,cAAc,KAAK+G,mBAAkB;AAC3C,UAAMC,WAAW;MACftC,YAAY,KAAK6B,QAAQ,KAAKhD,YAAYxE,KAAK,KAAKwE,YAAYlE,KAAK;MACrEsF,WAAW,KAAK+B,QAAQ,KAAKnD,YAAYpE,KAAK,KAAKoE,YAAYlE,KAAK;IACtE;AACA,QAAI,CAACW,aAAa;AAChB,aAAO;QAAEiH,kBAAkBC;QAAKC,iBAAiBD;QAAK,GAAGF;MAAS;IACpE;AACA,UAAMI,iBAAiBpH,YAAYqH;AAEnC,UAAM,CAACC,cAAcC,WAAWC,QAAAA,IAAYJ,eAAeK,MAAMC,UAAUC,MAAM,cAAA;AACjF,UAAMC,sBAAsBC,WAAWN,SAAAA;AACvC,UAAMO,qBAAqBD,WAAWL,QAAAA;AACtC,UAAMH,eAAeD,eAAeC;AACpC,WAAO;MACLJ,kBAAkBjH,YAAY+H,aAAaH,sBAAsBP,aAAaU;MAC9EZ,iBAAiBnH,YAAYgI,YAAYF,qBAAqBT,aAAaW;MAC3E,GAAGhB;IACL;EACF;EA6CQjC,UAAUkD,QAAiBC,OAAgB;AACjD,SAAKlG,YAAYzD,KAAKU,IAAI,GAAGV,KAAKO,IAAI,KAAK0E,sBAAsB,KAAKtB,YAAY+F,UAAU,KAAKjG,SAAS,CAAA;AAC1G,SAAKC,WAAW1D,KAAKU,IAAI,GAAGV,KAAKO,IAAI,KAAK2E,qBAAqB,KAAKtB,WAAW+F,SAAS,KAAKjG,QAAQ,CAAA;AACrG,SAAKiD,eAAc;EACrB;EAQQiD,kBAAkB;AAExB,QAAIC,WAAW;AACf,QAAIC,WAAW,KAAK9B,QAAQ6B,UAAU,MAAA;AAEtC,WAAOC,WAAW,KAAKrG,WAAW;AAChCoG,kBAAY;AACZC,kBAAY,KAAK9B,QAAQ6B,UAAU,MAAA,IAAU3K;IAC/C;AAEA,SAAKiF,YAAY0F,WAAWxK;AAE5B,SAAK0E,eAAe+F,WAAW,KAAK9B,QAAQ6B,UAAU,MAAA,IAAU3K;AAChE,SAAK8E,eAAe8F,WAAW5K;AAE/B,SAAK2E,iBACH;SAAIkG,MAAM1K,WAAAA;MAAc2K,OAAO,CAACC,KAAKC,GAAGC,OAAAA;AACtCF,aAAO,KAAKjC,QAAQ,KAAK7D,YAAYgG,IAAI,MAAA;AACzC,aAAOF;IACT,GAAG,CAAA,IACH/K,OAAOG,cAAc;AAEvB,WAAOyK,WAAW,KAAK9F,eAAe,KAAKL,aAAazE,KAAK;AAC3D2K,kBAAY;AACZC,kBAAY,KAAK9B,QAAQ6B,UAAU,MAAA,IAAU3K;IAC/C;AAEA,SAAKkF,YAAYpE,KAAKO,IAAI,KAAK4C,cAAc0G,WAAWxK,WAAAA;AAExD,SAAKkF,sBAAsB;SAAIwF,MAAM,KAAK3F,YAAY,KAAKD,SAAS;MACjEiG,IAAI,CAACF,GAAGC,OAAO,GAAG,KAAKnC,QAAQ,KAAK7D,YAAYgG,IAAI,MAAA,CAAA,IAAW,EAC/DE,KAAK,GAAA;AAER,SAAK7F,0BAA0B;SAAIuF,MAAM,KAAKzG,OAAOgH,mBAAmB,CAAA;MACrEF,IAAI,CAACF,GAAGC,OAAO,GAAG,KAAKnC,QAAQmC,IAAI,iBAAA,CAAA,IAAsB,EACzDE,KAAK,GAAA;AAER,SAAK5F,wBAAwB;SAAIsF,MAAM,KAAKzG,OAAOiH,iBAAiB,CAAA;MACjEH,IAAI,CAACF,GAAGC,OAAO,GAAG,KAAKnC,QAAQmC,IAAI,eAAA,CAAA,IAAoB,EACvDE,KAAK,GAAA;EACV;EAEQG,iBAAiB;AAEvB,QAAIC,WAAW;AACf,QAAIC,UAAU,KAAKvC,QAAQsC,UAAU,MAAA;AAErC,WAAOC,UAAU,KAAKhH,UAAU;AAC9B+G,kBAAY;AACZC,iBAAW,KAAKvC,QAAQsC,UAAU,MAAA,IAAUvL;IAC9C;AAEA,SAAKmF,YAAYoG,WAAWnL;AAE5B,SAAK2E,cAAcyG,UAAU,KAAKvC,QAAQsC,UAAU,MAAA,IAAUvL;AAC9D,SAAKgF,cAAcwG,UAAUxL;AAE7B,SAAK4E,gBACH;SAAIiG,MAAMzK,WAAAA;MAAc0K,OAAO,CAACC,KAAKC,GAAGS,OAAAA;AACtCV,aAAO,KAAK9B,QAAQ,KAAK9D,YAAYsG,IAAI,MAAA;AACzC,aAAOV;IACT,GAAG,CAAA,IACH/K,OAAOI,cAAc;AAEvB,WAAOoL,UAAU,KAAKxG,cAAc,KAAKN,WAAW;AAClD6G,kBAAY;AACZC,iBAAW,KAAKvC,QAAQsC,UAAU,MAAA,IAAUvL;IAC9C;AAEA,SAAKoF,YAAYtE,KAAKO,IAAI,KAAK8C,WAAWoH,WAAWnL,WAAAA;AAErD,SAAKoF,mBAAmB;SAAIqF,MAAM,KAAKzF,YAAY,KAAKD,SAAS;MAC9D+F,IAAI,CAACF,GAAGS,OAAO,GAAG,KAAKxC,QAAQ,KAAK9D,YAAYsG,IAAI,MAAA,CAAA,IAAW,EAC/DN,KAAK,GAAA;AAER,SAAK1F,0BAA0B;SAAIoF,MAAM,KAAKzG,OAAOsH,mBAAmB,CAAA;MACrER,IAAI,CAACF,GAAGS,OAAO,GAAG,KAAKxC,QAAQwC,IAAI,iBAAA,CAAA,IAAsB,EACzDN,KAAK,GAAA;AAER,SAAKzF,wBAAwB;SAAImF,MAAM,KAAKzG,OAAOuH,iBAAiB,CAAA;MACjET,IAAI,CAACF,GAAGS,OAAO,GAAG,KAAKxC,QAAQwC,IAAI,eAAA,CAAA,IAAoB,EACvDN,KAAK,GAAA;EACV;EAEQ/D,YAAY;AAClB,SAAKsD,gBAAe;AACpB,SAAKY,eAAc;EACrB;EAEQM,YAAYC,cAAwB;AAC1C,SAAKvH,MAAMZ,OAAO,KAAKW,SACrB;MACEsC,OAAO;QAAErF,KAAK,KAAK2D;QAAWvD,KAAK,KAAKyD;MAAU;MAClDyB,KAAK;QAAEtF,KAAK,KAAK4D;QAAWxD,KAAK,KAAK0D;MAAU;IAClD,GACA,MAAA;AAEF0G,WAAO9E,QAAQ,KAAK5C,MAAM,EACvB2H,OAAO,CAAC,CAACf,GAAGgB,KAAAA,MAAWA,SAASA,QAAQ,CAAA,EACxCC,QAAQ,CAAC,CAACrK,OAAOoK,KAAAA,MAAM;AACtB,WAAK1H,MAAM1C,KAAAA,IAA8B,KAAKyC,SAC5CzC,MAAMsK,WAAW,YAAA,IACb;QACEvF,OAAO;UAAErF,KAAK,KAAK2D;UAAWvD,KAAK;QAAE;QACrCkF,KAAK;UAAEtF,KAAK,KAAK4D;UAAWxD,KAAKsK;QAAM;MACzC,IACA;QACErF,OAAO;UAAErF,KAAK;UAAGI,KAAK,KAAKyD;QAAU;QACrCyB,KAAK;UAAEtF,KAAK0K;UAAOtK,KAAK,KAAK0D;QAAU;MACzC,GACJxD,KAAAA;IAEJ,CAAA;AACF,QAAIiK,cAAc;AAChB,WAAK,KAAKzH,OAAOgH,mBAAmB,KAAK,MAAM,KAAKhH,OAAOsH,mBAAmB,KAAK,GAAG;AACpF,aAAKpH,MAAM6H,kBAAkB,KAAK9H,SAChC;UACEsC,OAAO;YAAErF,KAAK;YAAGI,KAAK;UAAE;UACxBkF,KAAK;YAAEtF,KAAK,KAAK8C,OAAOgH;YAAkB1J,KAAK,KAAK0C,OAAOsH;UAAiB;QAC9E,GACA,iBAAA;MAEJ;AACA,WAAK,KAAKtH,OAAOiH,iBAAiB,KAAK,MAAM,KAAKjH,OAAOsH,mBAAmB,KAAK,GAAG;AAClF,aAAKpH,MAAM8H,gBAAgB,KAAK/H,SAC9B;UACEsC,OAAO;YAAErF,KAAK;YAAGI,KAAK;UAAE;UACxBkF,KAAK;YAAEtF,KAAK,KAAK8C,OAAOiH;YAAgB3J,KAAK,KAAK0C,OAAOsH;UAAiB;QAC5E,GACA,eAAA;MAEJ;AACA,WAAK,KAAKtH,OAAOgH,mBAAmB,KAAK,MAAM,KAAKhH,OAAOuH,iBAAiB,KAAK,GAAG;AAClF,aAAKrH,MAAM+H,gBAAgB,KAAKhI,SAC9B;UACEsC,OAAO;YAAErF,KAAK;YAAGI,KAAK;UAAE;UACxBkF,KAAK;YAAEtF,KAAK,KAAK8C,OAAOgH;YAAkB1J,KAAK,KAAK0C,OAAOuH;UAAe;QAC5E,GACA,eAAA;MAEJ;AACA,WAAK,KAAKvH,OAAOiH,iBAAiB,KAAK,MAAM,KAAKjH,OAAOuH,iBAAiB,KAAK,GAAG;AAChF,aAAKrH,MAAMgI,cAAc,KAAKjI,SAC5B;UACEsC,OAAO;YAAErF,KAAK;YAAGI,KAAK;UAAE;UACxBkF,KAAK;YAAEtF,KAAK,KAAK8C,OAAOiH;YAAgB3J,KAAK,KAAK0C,OAAOuH;UAAe;QAC1E,GACA,aAAA;MAEJ;IACF;EACF;;EAIQ3D,YAAY9B,OAAmB;AACrC,UAAME,aAAa9D,YAAY4D,MAAMjE,MAAM;AAC3C,QAAImE,YAAY;AACd,WAAKN,cAAcM;AACnB,WAAKP,cAAc;IACrB;EACF;EAEQqC,WAAWhC,OAAmB;AAEpC,QAAI,CAACA,MAAMqG,iBAAiB,CAAErG,MAAMqG,cAA8BpK,QAAQ,eAAe,KAAKqB,MAAM,IAAI,GAAG;AACzG,WAAKqC,cAAc;IACrB;EACF;EAEQyD,qBAAqB;AAC3B,WAAO,KAAK/B,YAAYiF,OAAOC,cAC7B,uBAAuB,KAAK3G,YAAYlE,KAAK,uBAAuB,KAAKkE,YAAYxE,GAAG,qBAAqB,KAAKwE,YAAYpE,GAAG,IAAI;EAEzI;EAEQgL,uBAAuBC,WAAW,GAAGC,WAAWD,UAAU;AAChE,WAAO,KAAK7G,YAAYpE,MAAM,KAAKyD,YAAYwH,YAAY,KAAK7G,YAAYpE,MAAM,KAAK0D,YAAYwH;EACrG;EAEQC,uBAAuBF,WAAW,GAAGC,WAAWD,UAAU;AAChE,WAAO,KAAK7G,YAAYxE,MAAM,KAAK2D,YAAY0H,YAAY,KAAK7G,YAAYxE,MAAM,KAAK4D,YAAY0H;EACrG;EAEQE,oBAAoBC,WAAW,GAAGC,WAAWD,UAAU;AAC7D,YAAQ,KAAKjH,YAAYlE,OAAK;MAC5B,KAAK;AACH,eAAO,KAAK8K,uBAAuBM,QAAAA,KAAa,KAAKH,uBAAuBE,QAAAA;MAC9E,KAAK;MACL,KAAK;AACH,eAAO,KAAKF,uBAAuBE,QAAAA;MACrC,KAAK;MACL,KAAK;AACH,eAAO,KAAKL,uBAAuBM,QAAAA;MACrC;AACE,eAAO;IACX;EACF;;;;EAKAC,QAAQC,WAA2BC,QAAgB,GAAG;AACpD,YAAQD,WAAAA;MACN,KAAK;AACH,aAAKpH,cAAc;UAAE,GAAG,KAAKA;UAAapE,KAAK,KAAKoE,YAAYpE,MAAMyL;QAAM;AAC5E;MACF,KAAK;AACH,aAAKrH,cAAc;UAAE,GAAG,KAAKA;UAAaxE,KAAK,KAAKwE,YAAYxE,MAAM6L;QAAM;IAChF;AACA,QAAID,WAAW;AACb,WAAK7E,qBAAoB;IAC3B;AACAhB,mBAAe,OACZ,KAAKyF,oBAAmB,IAAK,KAAKvF,YAAYiF,QAAQ,KAAKlD,mBAAkB,IAAK8D,MAAM;MAAEC,eAAe;IAAK,CAAA,CAAA;EAEnH;;;;EAKAhF,uBAAuB;AACrB,QAAI,KAAKyE,oBAAoB3M,cAAc,GAAGC,cAAc,CAAA,GAAI;AAC9D,UAAI,KAAK0F,YAAYxE,OAAO,KAAK2D,YAAY9E,aAAa;AACxD,aAAKoE,YAAY,KAAKM;AACtB,aAAK6F,gBAAe;MACtB,WAAW,KAAK5E,YAAYxE,OAAO,KAAK4D,YAAY/E,cAAc,GAAG;AACnE,cAAMmN,aAAa;aAAIzC,MAAM,KAAK/E,YAAYxE,MAAM,KAAK2D,SAAS;UAAG6F,OAAO,CAACC,KAAKC,GAAGC,OAAAA;AACnFF,iBAAO,KAAKjC,QAAQ,KAAK7D,YAAY9E,cAAc8K,IAAI,MAAA,IAAUjL;AACjE,iBAAO+K;QACT,GAAG,CAAA;AACH,aAAKxG,YAAYzD,KAAKU,IACpB,GACAV,KAAKO,IAAI,KAAK0E,sBAAsB,KAAKtB,YAAY,KAAKI,eAAeyI,aAAa,KAAK7I,UAAU,CAAA;AAEvG,aAAKiG,gBAAe;MACtB;AAEA,UAAI,KAAK5E,YAAYpE,OAAO,KAAKyD,YAAY/E,aAAa;AACxD,aAAKoE,WAAW,KAAKO;AACrB,aAAKuG,eAAc;MACrB,WAAW,KAAKxF,YAAYpE,OAAO,KAAK0D,YAAYhF,cAAc,GAAG;AACnE,cAAMmN,aAAa;aAAI1C,MAAM,KAAK/E,YAAYpE,MAAM,KAAKyD,SAAS;UAAG2F,OAAO,CAACC,KAAKC,GAAGS,OAAAA;AACnFV,iBAAO,KAAK9B,QAAQ,KAAK9D,YAAY/E,cAAcqL,IAAI,MAAA,IAAUzL;AACjE,iBAAO+K;QACT,GAAG,CAAA;AACH,aAAKvG,WAAW1D,KAAKU,IACnB,GACAV,KAAKO,IAAI,KAAK2E,qBAAqB,KAAKtB,WAAW,KAAKK,cAAcwI,aAAa,KAAK7I,SAAS,CAAA;AAEnG,aAAK4G,eAAc;MACrB;IACF;EACF;;;;EAMA,IAAakC,aAAa;AACxB,WAAO,KAAKjJ;EACd;EAEA,IAAaiJ,WAAWC,WAAmB;AACzC,SAAKlJ,YAAYkJ;AACjB,SAAKhG,eAAc;EACrB;EAEA,IAAaiG,YAAY;AACvB,WAAO,KAAKlJ;EACd;EAEA,IAAakJ,UAAUD,WAAmB;AACxC,SAAKjJ,WAAWiJ;AAChB,SAAKhG,eAAc;EACrB;;;;EAMQkG,eAAe/L,OAAmCgM,MAAkBzE,OAAwB;AAClG,WAAOyE,SAAS,QACZ,CAAC,EAAE,KAAK9J,QAAQlC,KAAAA,IAASuH,KAAAA,GAAQ0E,cAAc,KAAKjK,cAAchC,KAAAA,GAAiCiM,cACnG,CAAC,EAAE,KAAKhK,KAAKjC,KAAAA,IAASuH,KAAAA,GAAQ0E,cAAc,KAAKpK,WAAW7B,KAAAA,GAAiCiM;EACnG;EAEQ/F,yBAAyB5B,OAA6B;AAC5DA,UAAM4H,gBAAe;AACrB,UAAM,EAAElM,OAAOgM,MAAMT,OAAOxJ,MAAMwF,OAAO4E,KAAI,IAAK7H;AAClD,QAAI0H,SAAS,OAAO;AAClB,YAAMI,WAAWlN,KAAKU,IAAInB,YAAYS,KAAKO,IAAIf,YAAYqD,OAAOwJ,KAAAA,CAAAA;AAClE,WAAKxH,WAAW;QAAE,GAAG,KAAKA;QAAU,CAAC/D,KAAAA,GAAQ;UAAE,GAAG,KAAK+D,SAAS/D,KAAAA;UAAQ,CAACuH,KAAAA,GAAQ6E;QAAS;MAAE;AAC5F,WAAKtD,gBAAe;AACpB,WAAKuD,0BAAyB;IAChC,OAAO;AACL,YAAMD,WAAWlN,KAAKU,IAAIjB,YAAYO,KAAKO,IAAIb,YAAYmD,OAAOwJ,KAAAA,CAAAA;AAClE,WAAKvH,WAAW;QAAE,GAAG,KAAKD;QAAU,CAAC/D,KAAAA,GAAQ;UAAE,GAAG,KAAKgE,SAAShE,KAAAA;UAAQ,CAACuH,KAAAA,GAAQ6E;QAAS;MAAE;AAC5F,WAAK1C,eAAc;AACnB,WAAK4C,yBAAwB;IAC/B;AACA,QAAIH,SAAS,WAAW;AACtB,WAAKtH,cACH,IAAI0H,aAAa;QACfvM;QACAgM;QACAzE;QACAxF,MAAM,KAAK,GAAGiK,IAAAA,MAAU,EAAEzE,OAAOvH,KAAAA;MACnC,CAAA,CAAA;IAEJ;EACF;;;;EAMQwM,YAAYxM,OAAyBG,WAAiC;AAC5E,UAAMsM,WAAW3L,gBAAgBd,KAAAA;AACjC,UAAM0M,WAAW7L,gBAAgBb,KAAAA;AACjC,UAAM2M,OAAO,KAAKnK,OAAOiK,QAAAA;AACzB,UAAMxK,OAAO,KAAKO,OAAOkK,QAAAA;AACzB,YAAQC,QAAQ,KAAK,MAAM1K,QAAQ,KAAK,IACpC2K;;+BAEuB5M,KAAAA;;kBAEb6M,SAAS;MACf,yBAAyB,KAAK,WAAWJ,QAAAA,EAAU;MACnD,sBAAsB,KAAK,WAAWC,QAAAA,EAAU;IAClD,CAAA,CAAA;;YAEE;SAAIzD,MAAM0D,IAAAA;MAAOrD,IAAI,CAACF,GAAGjC,MAAAA;AACzB,aAAO;WAAI8B,MAAMhH,IAAAA;QAAOqH,IAAI,CAACF,IAAG9B,MAAAA;AAC9B,eAAO,KAAKwF,WAAW3F,GAAGG,GAAGtH,OAAOE,aAAaiH,GAAGG,GAAGtH,OAAOG,SAAAA,CAAAA;MAChE,CAAA;IACF,CAAA,CAAA;kBAEF;EACN;EAEQ4M,iBACN/M,OACAgN,aACAC,cACA9M,WACA;AACA,UAAMuM,WAAW7L,gBAAgBb,KAAAA;AACjC,UAAMiC,OAAO,KAAKO,OAAOkK,QAAAA;AACzB,YAAQzK,QAAQ,KAAK,IACjB2K;;;iCAGyB5M,KAAAA;;2CAEUiN,YAAAA,iCAA6C,KACzExJ,mBAAmB,uBAAuB,KAAK,WAAWiJ,QAAAA,EAAU,CAAC;;cAEtE;SAAIzD,MAAM+D,WAAAA;MAAc1D,IAAI,CAACF,GAAGC,OAAAA;AAChC,aAAO;WAAIJ,MAAMhH,IAAAA;QAAOqH,IAAI,CAACF,IAAG9B,MAAAA;AAC9B,cAAMH,IAAI,KAAK9D,YAAYgG;AAC3B,eAAO,KAAKyD,WAAW3F,GAAGG,GAAGtH,OAAOE,aAAaiH,GAAGG,GAAGtH,OAAOG,SAAAA,GAAYkJ,IAAI/B,CAAAA;MAChF,CAAA;IACF,CAAA,CAAA;;kBAGJ;EACN;EAEQ4F,oBACNlN,OACAmN,aACAC,aACAjN,WACA;AACA,UAAMsM,WAAW3L,gBAAgBd,KAAAA;AACjC,UAAM2M,OAAO,KAAKnK,OAAOiK,QAAAA;AACzB,YAAQE,QAAQ,KAAK,IACjBC;;;iCAGyB5M,KAAAA;;6CAEYoN,WAAAA,4BAAuC,KACrExJ,gBAAgB,0BAA0B,KAAK,WAAW6I,QAAAA,EAAU,CAAC;;cAEtE;SAAIxD,MAAM0D,IAAAA;MAAOrD,IAAI,CAACF,GAAGjC,MAAAA;AACzB,aAAO;WAAI8B,MAAMkE,WAAAA;QAAc7D,IAAI,CAACF,IAAGS,OAAAA;AACrC,cAAMvC,IAAI,KAAK/D,YAAYsG;AAC3B,eAAO,KAAKiD,WAAW3F,GAAGG,GAAGtH,OAAOE,aAAaiH,GAAGG,GAAGtH,OAAOG,SAAAA,GAAYgH,GAAG0C,EAAAA;MAC/E,CAAA;IACF,CAAA,CAAA;;kBAGJ;EACN;EAEQiD,WAAWpN,KAAaI,KAAaE,OAAoBqN,UAAoBC,SAAS5N,KAAK6N,SAASzN,KAAK;AAC/G,UAAM8E,OAAO,KAAKA,KAAKlF,KAAKI,KAAKE,KAAAA;AACjC,UAAMwN,SAAS,KAAK/F,WAAW/H,KAAKI,KAAKE,KAAAA;AACzC,UAAMyN,cAAc7I,MAAM8I,eAAgB9I,KAAK8I,iBAAiB,QAAQhO,MAAMI,MAAO6N;AACrF,UAAMC,cAAchJ,MAAM8I,eAAe3M,mBAAmB6D,KAAK8I,cAAc1N,KAAAA,IAAS2N;AACxF,WAAOf;;;eAGIlN,MAAM,KAAKI,MAAM,CAAA;uBACTuN,QAAAA;cACTzI,QAAQ4I,UACX5I,MAAMiJ,YAAYjJ,KAAKiJ,YAAY,MAAM,OAAOL,SAAS,0BAA0B,MACpFM,OAAAA;sBACYpO,GAAAA;sBACAI,GAAAA;;2BAEKwN,SAAS,CAAA,aAAcC,SAAS,CAAA;;QAEnD3I,MAAMgG,KAAAA,GAAQhG,MAAM8I,gBAAgB,KAAK3B,eAAe6B,aAAchJ,KAAK8I,cAAcD,WAAAA,IACvFb;mBACShI,KAAK8I,YAAY;oBAChBE,WAAAA;oBACAH,WAAAA;mBACD,KAAK,GAAG7I,KAAK8I,YAAY,MAAM,EAAED,aAAczN,KAAAA,CAAAA;4CAExD,IAAA;;EAER;EAES+N,SAAS;AAChB,UAAMf,cAAc,KAAK1J,YAAY,KAAKD;AAC1C,UAAM8J,cAAc,KAAK3J,YAAY,KAAKD;AAC1C,UAAM0J,eAAe,KAAKhK,eAAe,KAAKN,YAAY,KAAKI;AAC/D,UAAMqK,cAAc,KAAKjK,cAAc,KAAKP,WAAW,KAAKI;AAC5D,UAAM7C,YAAYd,eAAe,KAAKC,gBAAgB,KAAKC,YAAY;AAEvE,WAAOqN;;;cAGGC,SAAS;MACf,yBAAyB,GAAG,KAAKnJ,0BAA0B,iBAAiB,EAAA,aAC1ErC,OAAOC,SAAS,KAAKe,YAAY,IAAI,GAAG,KAAK8B,mBAAmB,OAAO,KAAA,IACrE,KAAKR,wBAAwB,iBAAiB,EAAA;MAClD,sBAAsB,GAAG,KAAKE,0BAA0B,iBAAiB,EAAA,aACvExC,OAAOC,SAAS,KAAKiB,SAAS,IAAI,GAAG,KAAK6B,kBAAkB,OAAO,KAAA,IACjE,KAAKN,wBAAwB,iBAAiB,EAAA;IACpD,CAAA,CAAA;kBACY,KAAKlC,MAAM;uBACN,KAAKQ,IAAI;0BACNjC,UAAUF,OAAO;;QAEnC,KAAKuM,YAAY,mBAAmBrM,SAAAA,CAAAA,GAAa,KAAK4M,iBACtD,mBACAC,aACAC,cACA9M,SAAAA,CAAAA,GACE,KAAKqM,YAAY,iBAAiBrM,SAAAA,CAAAA,GAAa,KAAK+M,oBACtD,mBACAC,aACAC,aACAjN,SAAAA,CAAAA;mEAE2D6N,KAAI,KAAKrI,WAAW,CAAA;;;;;yCAK9CsH,YAAAA,MAAkBG,WAAAA,+BAA0C,KACxF3J,mBAAmB,uBAAuB,KAAKG,gBAAgB;;YAEhE;SAAIqF,MAAM+D,WAAAA;MAAc1D,IAAI,CAACF,GAAGC,OAAAA;AAChC,aAAO;WAAIJ,MAAMkE,WAAAA;QAAc7D,IAAI,CAACF,IAAGS,OAAAA;AACrC,cAAM1C,IAAIkC,KAAK,KAAKhG;AACpB,cAAMiE,IAAIuC,KAAK,KAAKtG;AACpB,eAAO,KAAKuJ,WAAW3F,GAAGG,GAAG,QAAQpH,aAAaiH,GAAGG,GAAG,QAAQnH,SAAAA,GAAYkJ,IAAIQ,EAAAA;MAClF,CAAA;IACF,CAAA,CAAA;;;QAGF,KAAKqD,oBAAoB,iBAAiBC,aAAaC,aAAajN,SAAAA,CAAAA,GAAa,KAAKqM,YACtF,iBACArM,SAAAA,CAAAA,GACE,KAAK4M,iBAAiB,iBAAiBC,aAAaC,cAAc9M,SAAAA,CAAAA,GAAa,KAAKqM,YACtF,eACArM,SAAAA,CAAAA;;EAGN;EAEQkM,4BAA4B;AAClC,SAAKlI,sBAAsB9C,OAAOC,SAAS,KAAKe,YAAY,IACxD;SAAI4G,MAAM,KAAK5G,YAAY;MAAG6G,OAAO,CAACC,KAAKC,GAAGC,OAAOF,MAAM,KAAKjC,QAAQmC,IAAI,MAAA,GAAS,CAAA,IACrFjL,OAAO,KAAKiE,eAAe,KAC3BC;EACN;EAEQgK,2BAA2B;AACjC,SAAKlI,qBAAqB/C,OAAOC,SAAS,KAAKiB,SAAS,IACpD;SAAI0G,MAAM,KAAK1G,SAAS;MAAG2G,OAAO,CAACC,KAAKC,GAAGS,OAAOV,MAAM,KAAK9B,QAAQwC,IAAI,MAAA,GAAS,CAAA,IAClFzL,OAAO,KAAKmE,YAAY,KACxBD;EACN;EAEQ2L,uBAAuB;AAC7B,SAAK5B,0BAAyB;AAC9B,SAAKC,yBAAwB;EAC/B;EAES4B,eAAe;AACtB,QAAI,KAAKzL,UAAU;AACjB,WAAKuH,YAAY,IAAA;IACnB;AACA,SAAK9E,SAASiJ,QAAQ,KAAKxI,YAAYiF,KAAK;AAC5C,SAAK7G,WAAWmG,OAAO9E,QAAQ,KAAKlD,OAAO,EAAEgH,OAC3C,CAACC,KAAgB,CAACnJ,OAAOoO,YAAAA,MAAa;AACpCjF,UAAInJ,KAAAA,IAAuCkK,OAAO9E,QAAQgJ,YAAAA,EAAclF,OACtE,CAACmF,UAAkC,CAAC3O,KAAK4O,OAAAA,MAAQ;AAC/C,YAAIA,SAASvM,MAAM;AACjBsM,mBAAS3O,GAAAA,IAAO4O,QAAQvM;QAC1B;AACA,eAAOsM;MACT,GACA,CAAC,CAAA;AAEH,aAAOlF;IACT,GACA;MAAErH,MAAM,CAAC;IAAE,CAAA;AAEb,SAAKkC,WAAWkG,OAAO9E,QAAQ,KAAKnD,IAAI,EAAEiH,OACxC,CAACC,KAAgB,CAACnJ,OAAOuO,YAAAA,MAAa;AACpCpF,UAAInJ,KAAAA,IAAuCkK,OAAO9E,QAAQmJ,YAAAA,EAAcrF,OACtE,CAACmF,UAAkC,CAACvO,KAAK0O,OAAAA,MAAQ;AAC/C,YAAIA,SAASzM,MAAM;AACjBsM,mBAASvO,GAAAA,IAAO0O,QAAQzM;QAC1B;AACA,eAAOsM;MACT,GACA,CAAC,CAAA;AAEH,aAAOlF;IACT,GACA;MAAErH,MAAM,CAAC;IAAE,CAAA;AAEb,SAAKmM,qBAAoB;EAC3B;EAESQ,WAAWC,mBAAqC;AACvD,QACE,KAAKjM,aACJiM,kBAAkBC,IAAI,cAAA,KACrBD,kBAAkBC,IAAI,WAAA,KACtBD,kBAAkBC,IAAI,WAAA,KACtBD,kBAAkBC,IAAI,WAAA,KACtBD,kBAAkBC,IAAI,WAAA,IACxB;AACA,WAAK3E,YAAW;IAClB;EACF;EAES4E,QAAQF,mBAAqC;AAEpD,QACE,KAAKzK,gBACJyK,kBAAkBC,IAAI,WAAA,KAAgBD,kBAAkBC,IAAI,WAAA,KAAgBD,kBAAkBC,IAAI,aAAA,IACnG;AACA,WAAKtD,QAAO;IACd;EACF;EAESwD,uBAAuB;AAC9B,UAAMA,qBAAAA;AACN,QAAI,KAAKlJ,YAAYiF,OAAO;AAC1B,WAAK1F,SAAS4J,UAAU,KAAKnJ,YAAYiF,KAAK;IAChD;EACF;EAESmE,mBAAmB;AAC1B,WAAO;EACT;AACF;;EAv7BGC,UAAS;IAAE7C,MAAM8C;EAAO,CAAA;GAddxN,OAAAA,WAAAA,UAAAA,MAAAA;;EAiBVuN,UAAS;IAAE7C,MAAMjC;EAAO,CAAA;GAjBdzI,OAAAA,WAAAA,cAAAA,MAAAA;;EAsBVuN,UAAS;IAAE7C,MAAMjC;EAAO,CAAA;GAtBdzI,OAAAA,WAAAA,iBAAAA,MAAAA;;EA2BVuN,UAAS;IAAE7C,MAAMjC;EAAO,CAAA;GA3BdzI,OAAAA,WAAAA,QAAAA,MAAAA;;EA8BVuN,UAAS;IAAE7C,MAAMjC;EAAO,CAAA;GA9BdzI,OAAAA,WAAAA,WAAAA,MAAAA;;EAiCVuN,UAAS;IAAE7C,MAAMjC;EAAO,CAAA;GAjCdzI,OAAAA,WAAAA,gBAAAA,MAAAA;;EAoCVuN,UAAS;IAAE7C,MAAM8C;EAAO,CAAA;GApCdxN,OAAAA,WAAAA,QAAAA,MAAAA;;EAuCVuN,UAAS;IAAE7C,MAAM9K;EAAO,CAAA;GAvCdI,OAAAA,WAAAA,gBAAAA,MAAAA;;EA0CVuN,UAAS;IAAE7C,MAAM9K;EAAO,CAAA;GA1CdI,OAAAA,WAAAA,aAAAA,MAAAA;;EA6CVuN,UAAS;IAAE7C,MAAMjC;EAAO,CAAA;GA7CdzI,OAAAA,WAAAA,UAAAA,MAAAA;;EAsDVxC,MAAAA;GAtDUwC,OAAAA,WAAAA,SAAAA,MAAAA;;EA6DVxC,MAAAA;GA7DUwC,OAAAA,WAAAA,aAAAA,MAAAA;;EAgEVxC,MAAAA;GAhEUwC,OAAAA,WAAAA,YAAAA,MAAAA;;EAuEVxC,MAAAA;GAvEUwC,OAAAA,WAAAA,cAAAA,MAAAA;;EA0EVxC,MAAAA;GA1EUwC,OAAAA,WAAAA,aAAAA,MAAAA;;EAiFVxC,MAAAA;GAjFUwC,OAAAA,WAAAA,kBAAAA,MAAAA;;EAoFVxC,MAAAA;GApFUwC,OAAAA,WAAAA,iBAAAA,MAAAA;;EA2FVxC,MAAAA;GA3FUwC,OAAAA,WAAAA,gBAAAA,MAAAA;;EA8FVxC,MAAAA;GA9FUwC,OAAAA,WAAAA,gBAAAA,MAAAA;;EAiGVxC,MAAAA;GAjGUwC,OAAAA,WAAAA,eAAAA,MAAAA;;EAoGVxC,MAAAA;GApGUwC,OAAAA,WAAAA,eAAAA,MAAAA;;EA4GVxC,MAAAA;GA5GUwC,OAAAA,WAAAA,aAAAA,MAAAA;;EA+GVxC,MAAAA;GA/GUwC,OAAAA,WAAAA,aAAAA,MAAAA;;EAkHVxC,MAAAA;GAlHUwC,OAAAA,WAAAA,aAAAA,MAAAA;;EAqHVxC,MAAAA;GArHUwC,OAAAA,WAAAA,aAAAA,MAAAA;;EA2HVxC,MAAAA;GA3HUwC,OAAAA,WAAAA,uBAAAA,MAAAA;;EA8HVxC,MAAAA;GA9HUwC,OAAAA,WAAAA,2BAAAA,MAAAA;;EAiIVxC,MAAAA;GAjIUwC,OAAAA,WAAAA,yBAAAA,MAAAA;;EAoIVxC,MAAAA;GApIUwC,OAAAA,WAAAA,oBAAAA,MAAAA;;EAuIVxC,MAAAA;GAvIUwC,OAAAA,WAAAA,2BAAAA,MAAAA;;EA0IVxC,MAAAA;GA1IUwC,OAAAA,WAAAA,yBAAAA,MAAAA;;EAiJVxC,MAAAA;GAjJUwC,OAAAA,WAAAA,WAAAA,MAAAA;;EAoJVxC,MAAAA;GApJUwC,OAAAA,WAAAA,YAAAA,MAAAA;;EAuJVxC,MAAAA;GAvJUwC,OAAAA,WAAAA,YAAAA,MAAAA;;EA0JVxC,MAAAA;GA1JUwC,OAAAA,WAAAA,eAAAA,MAAAA;;EA6JVxC,MAAAA;GA7JUwC,OAAAA,WAAAA,eAAAA,MAAAA;;EAgKVxC,MAAAA;GAhKUwC,OAAAA,WAAAA,kBAAAA,MAAAA;;EAmKVxC,MAAAA;GAnKUwC,OAAAA,WAAAA,gBAAAA,MAAAA;;EA0KVxC,MAAAA;GA1KUwC,OAAAA,WAAAA,uBAAAA,MAAAA;;EA6KVxC,MAAAA;GA7KUwC,OAAAA,WAAAA,sBAAAA,MAAAA;;EAkVVxC,MAAAA;GAlVUwC,OAAAA,WAAAA,YAAAA,MAAAA;AAAAA,SAAAA,cAAAA;EADZyN,eAAc,SAAA;GACFzN,MAAAA;",
|
|
6
|
+
"names": ["LitElement", "html", "nothing", "customElement", "state", "property", "ref", "createRef", "styleMap", "draggable", "disableNativeDragPreview", "preventUnhandled", "html", "LitElement", "customElement", "property", "ref", "separator", "toCellIndex", "cellCoords", "col", "row", "colToA1Notation", "String", "fromCharCode", "charCodeAt", "Math", "floor", "rowToA1Notation", "DxAxisResize", "Event", "constructor", "props", "axis", "plane", "index", "size", "DxAxisResizeInternal", "composed", "bubbles", "delta", "state", "DxEditRequest", "cellIndex", "cellBox", "initialContent", "DxGridCellsSelect", "start", "end", "toCellIndex", "minCol", "Math", "min", "col", "maxCol", "max", "minRow", "row", "maxRow", "DxGridAxisResizeHandle", "LitElement", "axis", "plane", "index", "size", "dragStartSize", "cleanup", "render", "html", "ref", "mount", "dispatchResize", "location", "state", "client", "event", "DxAxisResizeInternal", "delta", "current", "input", "initial", "dispatchEvent", "element", "host", "draggable", "onGenerateDragPreview", "nativeSetDragImage", "disableNativeDragPreview", "preventUnhandled", "start", "onDragStart", "onDrag", "onDrop", "disconnectedCallback", "createRenderRoot", "property", "type", "String", "Number", "customElement", "gap", "resizeTolerance", "selectTolerance", "overscanCol", "overscanRow", "sizeColMin", "sizeColMax", "sizeRowMin", "sizeRowMax", "shouldSelect", "pointer", "pageX", "pageY", "state", "Math", "hypot", "abs", "selectionProps", "selectionStart", "selectionEnd", "colMin", "min", "col", "colMax", "max", "rowMin", "row", "rowMax", "plane", "visible", "cellSelected", "selection", "closestAction", "target", "actionEl", "closest", "action", "getAttribute", "closestCell", "cellElement", "parseInt", "resolveRowPlane", "resolveColPlane", "resolveResizePlane", "resizeAxis", "cellPlane", "isSameCell", "a", "b", "Number", "isFinite", "defaultRowSize", "defaultColSize", "DxGrid", "LitElement", "constructor", "gridId", "rowDefault", "grid", "size", "columnDefault", "rows", "columns", "initialCells", "mode", "limitColumns", "Infinity", "limitRows", "frozen", "getCells", "cells", "posInline", "posBlock", "sizeInline", "sizeBlock", "overscanInline", "overscanBlock", "binInlineMin", "binInlineMax", "binBlockMin", "binBlockMax", "visColMin", "visColMax", "visRowMin", "visRowMax", "templateGridColumns", "templatefrozenColsStart", "templatefrozenColsEnd", "templateGridRows", "templatefrozenRowsStart", "templatefrozenRowsEnd", "colSizes", "rowSizes", "focusActive", "focusedCell", "intrinsicInlineSize", "intrinsicBlockSize", "handlePointerDown", "event", "isPrimary", "cellCoords", "preventDefault", "dispatchEditRequest", "handlePointerUp", "cell", "dispatchEvent", "DxGridCellsSelect", "start", "end", "handlePointerMove", "observer", "ResizeObserver", "entries", "inlineSize", "blockSize", "contentBoxSize", "updateVis", "queueMicrotask", "updatePos", "viewportRef", "createRef", "maybeUpdateVis", "handleWheel", "deltaX", "deltaY", "addEventListener", "handleAxisResizeInternal", "passive", "handleFocus", "capture", "handleBlur", "handleKeydown", "initialContent", "snapPosToFocusedCell", "DxEditRequest", "cellIndex", "toCellIndex", "cellBox", "focusedCellBox", "key", "length", "match", "colSize", "c", "resolvedPlane", "rowSize", "r", "index", "separator", "cellActive", "focusedCellElement", "cellSize", "insetInlineStart", "NaN", "insetBlockStart", "contentElement", "offsetParent", "_translate3d", "inlineStr", "blockStr", "style", "transform", "split", "contentOffsetInline", "parseFloat", "contentOffsetBlock", "offsetLeft", "offsetTop", "inline", "block", "updateVisInline", "colIndex", "pxInline", "Array", "reduce", "acc", "_", "c0", "map", "join", "frozenColsStart", "frozenColsEnd", "updateVisBlock", "rowIndex", "pxBlock", "r0", "frozenRowsStart", "frozenRowsEnd", "updateCells", "includeFixed", "Object", "filter", "limit", "forEach", "startsWith", "fixedStartStart", "fixedStartEnd", "fixedEndStart", "fixedEndEnd", "relatedTarget", "value", "querySelector", "focusedCellRowOutOfVis", "minDelta", "maxDelta", "focusedCellColOutOfVis", "focusedCellOutOfVis", "colDelta", "rowDelta", "refocus", "increment", "delta", "focus", "preventScroll", "sizeSumCol", "sizeSumRow", "scrollLeft", "nextValue", "scrollTop", "axisResizeable", "axis", "resizeable", "stopPropagation", "type", "nextSize", "updateIntrinsicInlineSize", "updateIntrinsicBlockSize", "DxAxisResize", "renderFixed", "colPlane", "rowPlane", "cols", "html", "styleMap", "renderCell", "renderFrozenRows", "visibleCols", "offsetInline", "renderFrozenColumns", "visibleRows", "offsetBlock", "selected", "visCol", "visRow", "active", "resizeIndex", "resizeHandle", "undefined", "resizePlane", "className", "nothing", "render", "ref", "updateIntrinsicSizes", "firstUpdated", "observe", "planeColMeta", "planeAcc", "colMeta", "planeRowMeta", "rowMeta", "willUpdate", "changedProperties", "has", "updated", "disconnectedCallback", "unobserve", "createRenderRoot", "property", "String", "customElement"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/ui/lit-grid/src/util.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/ui/lit-grid/src/util.ts":{"bytes":2616,"imports":[],"format":"esm"},"packages/ui/lit-grid/src/types.ts":{"bytes":11124,"imports":[{"path":"packages/ui/lit-grid/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/ui/lit-grid/src/dx-grid-axis-resize-handle.ts":{"bytes":10768,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/prevent-unhandled","kind":"import-statement","external":true},{"path":"lit","kind":"import-statement","external":true},{"path":"lit/decorators.js","kind":"import-statement","external":true},{"path":"lit/directives/ref.js","kind":"import-statement","external":true},{"path":"packages/ui/lit-grid/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/ui/lit-grid/src/dx-grid.ts":{"bytes":135032,"imports":[{"path":"lit","kind":"import-statement","external":true},{"path":"lit/decorators.js","kind":"import-statement","external":true},{"path":"lit/directives/ref.js","kind":"import-statement","external":true},{"path":"lit/directives/style-map.js","kind":"import-statement","external":true},{"path":"packages/ui/lit-grid/src/dx-grid-axis-resize-handle.ts","kind":"import-statement","original":"./dx-grid-axis-resize-handle"},{"path":"packages/ui/lit-grid/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/ui/lit-grid/src/util.ts","kind":"import-statement","original":"./util"},{"path":"packages/ui/lit-grid/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/ui/lit-grid/src/index.ts":{"bytes":572,"imports":[{"path":"packages/ui/lit-grid/src/dx-grid.ts","kind":"import-statement","original":"./dx-grid"},{"path":"packages/ui/lit-grid/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"}},"outputs":{"packages/ui/lit-grid/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":77738},"packages/ui/lit-grid/dist/lib/browser/index.mjs":{"imports":[{"path":"lit","kind":"import-statement","external":true},{"path":"lit/decorators.js","kind":"import-statement","external":true},{"path":"lit/directives/ref.js","kind":"import-statement","external":true},{"path":"lit/directives/style-map.js","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/prevent-unhandled","kind":"import-statement","external":true},{"path":"lit","kind":"import-statement","external":true},{"path":"lit/decorators.js","kind":"import-statement","external":true},{"path":"lit/directives/ref.js","kind":"import-statement","external":true}],"exports":["DxAxisResize","DxAxisResizeInternal","DxEditRequest","DxGrid","DxGridCellsSelect","colToA1Notation","rowToA1Notation"],"entryPoint":"packages/ui/lit-grid/src/index.ts","inputs":{"packages/ui/lit-grid/src/dx-grid.ts":{"bytesInOutput":35388},"packages/ui/lit-grid/src/dx-grid-axis-resize-handle.ts":{"bytesInOutput":3053},"packages/ui/lit-grid/src/util.ts":{"bytesInOutput":347},"packages/ui/lit-grid/src/types.ts":{"bytesInOutput":1164},"packages/ui/lit-grid/src/index.ts":{"bytesInOutput":0}},"bytes":40396}}}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
|
-
import { type DxGridAxis } from './types';
|
|
2
|
+
import { type DxGridAxis, type DxGridFrozenPlane } from './types';
|
|
3
3
|
export declare class DxGridAxisResizeHandle extends LitElement {
|
|
4
4
|
axis: DxGridAxis;
|
|
5
|
+
plane: 'grid' | DxGridFrozenPlane;
|
|
5
6
|
index: string;
|
|
6
7
|
size: number;
|
|
7
8
|
private dragStartSize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dx-grid-axis-resize-handle.d.ts","sourceRoot":"","sources":["../../../src/dx-grid-axis-resize-handle.ts"],"names":[],"mappings":"AAQA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAIvC,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"dx-grid-axis-resize-handle.d.ts","sourceRoot":"","sources":["../../../src/dx-grid-axis-resize-handle.ts"],"names":[],"mappings":"AAQA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAIvC,OAAO,EAAwB,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAExF,qBACa,sBAAuB,SAAQ,UAAU;IAEpD,IAAI,EAAE,UAAU,CAAS;IAGzB,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAU;IAG3C,KAAK,EAAE,MAAM,CAAQ;IAGrB,IAAI,EAAE,MAAM,CAAO;IAEnB,OAAO,CAAC,aAAa,CAAe;IAE3B,MAAM;IAMf,OAAO,CAAC,OAAO,CAA0B;IAEzC,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,KAAK;IA2BJ,oBAAoB;IAKpB,gBAAgB;CAG1B"}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
2
|
import './dx-grid-axis-resize-handle';
|
|
3
|
-
import { type AxisMeta, type DxGridAxisMeta, type DxGridCells, type DxGridMode, type
|
|
3
|
+
import { type AxisMeta, type DxGridAxisMeta, type DxGridCells, type DxGridFrozenAxes, type DxGridFrozenColsPlane, type DxGridFrozenRowsPlane, type DxGridMode, type DxGridPlane, type DxGridPlaneCells, type DxGridPlaneRange, type DxGridPlaneRecord } from './types';
|
|
4
4
|
export declare class DxGrid extends LitElement {
|
|
5
5
|
constructor();
|
|
6
6
|
gridId: string;
|
|
7
|
-
rowDefault: AxisMeta
|
|
8
|
-
columnDefault: AxisMeta
|
|
7
|
+
rowDefault: DxGridPlaneRecord<DxGridFrozenRowsPlane, AxisMeta>;
|
|
8
|
+
columnDefault: DxGridPlaneRecord<DxGridFrozenColsPlane, AxisMeta>;
|
|
9
9
|
rows: DxGridAxisMeta;
|
|
10
10
|
columns: DxGridAxisMeta;
|
|
11
11
|
initialCells: DxGridCells;
|
|
12
12
|
mode: DxGridMode;
|
|
13
|
+
limitColumns: number;
|
|
14
|
+
limitRows: number;
|
|
15
|
+
frozen: DxGridFrozenAxes;
|
|
13
16
|
/**
|
|
14
17
|
* When this function is defined, it is used first to try to get a value for a cell, and otherwise will fall back
|
|
15
18
|
* to `cells`.
|
|
16
19
|
*/
|
|
17
|
-
getCells: ((nextRange:
|
|
20
|
+
getCells: ((nextRange: DxGridPlaneRange, plane: DxGridPlane) => DxGridPlaneCells) | null;
|
|
18
21
|
private cells;
|
|
19
22
|
private posInline;
|
|
20
23
|
private posBlock;
|
|
@@ -30,8 +33,12 @@ export declare class DxGrid extends LitElement {
|
|
|
30
33
|
private visColMax;
|
|
31
34
|
private visRowMin;
|
|
32
35
|
private visRowMax;
|
|
33
|
-
private
|
|
34
|
-
private
|
|
36
|
+
private templateGridColumns;
|
|
37
|
+
private templatefrozenColsStart;
|
|
38
|
+
private templatefrozenColsEnd;
|
|
39
|
+
private templateGridRows;
|
|
40
|
+
private templatefrozenRowsStart;
|
|
41
|
+
private templatefrozenRowsEnd;
|
|
35
42
|
private pointer;
|
|
36
43
|
private colSizes;
|
|
37
44
|
private rowSizes;
|
|
@@ -39,6 +46,8 @@ export declare class DxGrid extends LitElement {
|
|
|
39
46
|
private focusedCell;
|
|
40
47
|
private selectionStart;
|
|
41
48
|
private selectionEnd;
|
|
49
|
+
private intrinsicInlineSize;
|
|
50
|
+
private intrinsicBlockSize;
|
|
42
51
|
private dispatchEditRequest;
|
|
43
52
|
private handlePointerDown;
|
|
44
53
|
private handlePointerUp;
|
|
@@ -47,17 +56,23 @@ export declare class DxGrid extends LitElement {
|
|
|
47
56
|
private colSize;
|
|
48
57
|
private rowSize;
|
|
49
58
|
private cell;
|
|
59
|
+
private cellActive;
|
|
50
60
|
private focusedCellBox;
|
|
51
61
|
private observer;
|
|
52
62
|
private viewportRef;
|
|
53
63
|
private maybeUpdateVis;
|
|
64
|
+
private updatePos;
|
|
54
65
|
private handleWheel;
|
|
55
66
|
private updateVisInline;
|
|
56
67
|
private updateVisBlock;
|
|
57
68
|
private updateVis;
|
|
69
|
+
private updateCells;
|
|
58
70
|
private handleFocus;
|
|
59
71
|
private handleBlur;
|
|
60
72
|
private focusedCellElement;
|
|
73
|
+
private focusedCellRowOutOfVis;
|
|
74
|
+
private focusedCellColOutOfVis;
|
|
75
|
+
private focusedCellOutOfVis;
|
|
61
76
|
/**
|
|
62
77
|
* Moves focus to the cell with actual focus, otherwise moves focus to the viewport.
|
|
63
78
|
*/
|
|
@@ -70,12 +85,21 @@ export declare class DxGrid extends LitElement {
|
|
|
70
85
|
set scrollLeft(nextValue: number);
|
|
71
86
|
get scrollTop(): number;
|
|
72
87
|
set scrollTop(nextValue: number);
|
|
88
|
+
private axisResizeable;
|
|
73
89
|
private handleAxisResizeInternal;
|
|
90
|
+
private renderFixed;
|
|
91
|
+
private renderFrozenRows;
|
|
92
|
+
private renderFrozenColumns;
|
|
93
|
+
private renderCell;
|
|
74
94
|
render(): import("lit").TemplateResult<1>;
|
|
95
|
+
private updateIntrinsicInlineSize;
|
|
96
|
+
private updateIntrinsicBlockSize;
|
|
97
|
+
private updateIntrinsicSizes;
|
|
75
98
|
firstUpdated(): void;
|
|
76
99
|
willUpdate(changedProperties: Map<string, any>): void;
|
|
77
100
|
updated(changedProperties: Map<string, any>): void;
|
|
78
101
|
disconnectedCallback(): void;
|
|
79
102
|
createRenderRoot(): this;
|
|
80
103
|
}
|
|
104
|
+
export { rowToA1Notation, colToA1Notation } from './util';
|
|
81
105
|
//# sourceMappingURL=dx-grid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dx-grid.d.ts","sourceRoot":"","sources":["../../../src/dx-grid.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"dx-grid.d.ts","sourceRoot":"","sources":["../../../src/dx-grid.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,29 @@ export default _default;
|
|
|
11
11
|
export declare const Basic: {
|
|
12
12
|
(props: DxGridProps): import("lit").TemplateResult<1>;
|
|
13
13
|
args: {
|
|
14
|
-
|
|
14
|
+
initialCells: string;
|
|
15
|
+
columnDefault: string;
|
|
16
|
+
rowDefault: string;
|
|
17
|
+
columns: string;
|
|
18
|
+
frozen: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export declare const Frozen: {
|
|
22
|
+
(props: DxGridProps): import("lit").TemplateResult<1>;
|
|
23
|
+
args: {
|
|
24
|
+
initialCells: string;
|
|
25
|
+
columnDefault: string;
|
|
26
|
+
rowDefault: string;
|
|
27
|
+
columns: string;
|
|
28
|
+
rows: string;
|
|
29
|
+
frozen: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export declare const Limits: {
|
|
33
|
+
(props: DxGridProps): import("lit").TemplateResult<1>;
|
|
34
|
+
args: {
|
|
35
|
+
limitRows: string;
|
|
36
|
+
limitColumns: string;
|
|
15
37
|
columnDefault: string;
|
|
16
38
|
rowDefault: string;
|
|
17
39
|
columns: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dx-grid.lit-stories.d.ts","sourceRoot":"","sources":["../../../src/dx-grid.lit-stories.ts"],"names":[],"mappings":"AAIA,OAAO,cAAc,CAAC;AACtB,OAAO,gBAAgB,CAAC;AAIxB,OAAO,
|
|
1
|
+
{"version":3,"file":"dx-grid.lit-stories.d.ts","sourceRoot":"","sources":["../../../src/dx-grid.lit-stories.ts"],"names":[],"mappings":"AAIA,OAAO,cAAc,CAAC;AACtB,OAAO,gBAAgB,CAAC;AAIxB,OAAO,EAAiD,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;;;;;;;AAG1F,wBAGE;AAEF,eAAO,MAAM,KAAK;YAAW,WAAW;;;;;;;;CAUvC,CAAC;AA6DF,eAAO,MAAM,MAAM;YAAW,WAAW;;;;;;;;;CAUxC,CAAC;AAuCF,eAAO,MAAM,MAAM;YAAW,WAAW;;;;;;;;CAUxC,CAAC"}
|