@revolist/revogrid 3.6.8 → 3.6.10
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/custom-element/revo-grid.js +1 -0
- package/custom-element/revo-grid.js.map +1 -1
- package/custom-element/revogr-clipboard.js +1 -0
- package/custom-element/revogr-clipboard.js.map +1 -1
- package/custom-element/revogr-data2.js +1 -0
- package/custom-element/revogr-data2.js.map +1 -1
- package/custom-element/revogr-edit2.js +1 -0
- package/custom-element/revogr-edit2.js.map +1 -1
- package/custom-element/revogr-filter-panel.js +1 -0
- package/custom-element/revogr-filter-panel.js.map +1 -1
- package/custom-element/revogr-focus2.js +1 -0
- package/custom-element/revogr-focus2.js.map +1 -1
- package/custom-element/revogr-header2.js +1 -0
- package/custom-element/revogr-header2.js.map +1 -1
- package/custom-element/revogr-order-editor2.js +1 -0
- package/custom-element/revogr-order-editor2.js.map +1 -1
- package/custom-element/revogr-overlay-selection2.js +1 -0
- package/custom-element/revogr-overlay-selection2.js.map +1 -1
- package/custom-element/revogr-row-headers2.js +1 -0
- package/custom-element/revogr-row-headers2.js.map +1 -1
- package/custom-element/revogr-scroll-virtual2.js +1 -0
- package/custom-element/revogr-scroll-virtual2.js.map +1 -1
- package/custom-element/revogr-temp-range2.js +1 -0
- package/custom-element/revogr-temp-range2.js.map +1 -1
- package/custom-element/revogr-viewport-scroll2.js +1 -0
- package/custom-element/revogr-viewport-scroll2.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"revogr-header2.js","mappings":"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","names":["getNative","defineProperty","baseEach","isArray","arrayAggregator","baseAggregator","baseIteratee","createAggregator","baseAssignValue","findIndex","keyBy"],"sources":["src/plugins/dispatcher.ts","node_modules/lodash/_defineProperty.js","node_modules/lodash/_baseAssignValue.js","node_modules/lodash/_arrayAggregator.js","node_modules/lodash/_baseAggregator.js","node_modules/lodash/_createAggregator.js","node_modules/lodash/keyBy.js","src/plugins/sorting/sorting.sign.tsx","src/services/resizable.directive.tsx","src/components/header/headerCellRenderer.tsx","src/components/header/headerRenderer.tsx","src/plugins/groupingColumn/headerGroupRenderer.tsx","src/plugins/groupingColumn/columnGroupsRenderer.tsx","src/components/header/revogr-header-style.scss?tag=revogr-header","src/components/header/revogr-header.tsx"],"sourcesContent":["type Target = HTMLElement | Element | null;\n/**\n * Dispatch custom event to element\n */\nexport function dispatch(\n target: Target,\n eventName: string,\n detail?: any\n): CustomEvent {\n const event = new CustomEvent(eventName, {\n detail,\n cancelable: true,\n bubbles: true,\n });\n target?.dispatchEvent(event);\n return event;\n}\n\n/**\n * Dispatch event by other event target\n */\nexport function dispatchOnEvent(\n e: MouseEvent | CustomEvent,\n eventName: string,\n detail?: any\n ): CustomEvent {\n e.preventDefault();\n return dispatch(e.target as Target, eventName, detail);\n}\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n});\n\nmodule.exports = keyBy;\n","import { h } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\n\nexport const FILTER_BUTTON_CLASS = 'rv-filter';\nexport const FILTER_BUTTON_ACTIVE = 'active';\n\ntype Props = {\n column: RevoGrid.ColumnRegular;\n};\nexport const SortingSign = ({ column }: Props) => {\n return <i class={column.order} />;\n};\n","import { h, VNode } from '@stencil/core';\nimport { RevoGrid } from '../interfaces';\n\ntype Props = {\n active: ('r' | 'rb' | 'b' | 'lb' | 'l' | 'lt' | 't' | 'rt')[]; // all\n fitParent: boolean; // false\n minWidth: number; // 0\n minHeight: number; // 0\n\n disableAttributes: ('l' | 't' | 'w' | 'h')[]; // []\n maxWidth?: number;\n maxHeight?: number;\n\n onResize?(e: ResizeEvent): void;\n onDoubleClick?(): void;\n};\n\nexport type ResizeEvent = {\n eventName: string;\n changedX?: number;\n changedY?: number;\n width?: number;\n height?: number;\n};\n\nenum ResizeEvents {\n start = 'resize:start',\n move = 'resize:move',\n end = 'resize:end',\n}\n\nconst RESIZE_MASK: { [key: string]: any } = {\n 'resizable-r': { bit: 0b0001, cursor: 'ew-resize' },\n 'resizable-rb': { bit: 0b0011, cursor: 'se-resize' },\n 'resizable-b': { bit: 0b0010, cursor: 's-resize' },\n 'resizable-lb': { bit: 0b0110, cursor: 'sw-resize' },\n 'resizable-l': { bit: 0b0100, cursor: 'w-resize' },\n 'resizable-lt': { bit: 0b1100, cursor: 'nw-resize' },\n 'resizable-t': { bit: 0b1000, cursor: 'n-resize' },\n 'resizable-rt': { bit: 0b1001, cursor: 'ne-resize' },\n};\n\nconst DISABLE_MASK = {\n l: 0b0001,\n t: 0b0010,\n w: 0b0100,\n h: 0b1000,\n};\n\nconst defaultProps = (props: Partial<Props>): Props => {\n return {\n ...props,\n fitParent: props.fitParent || false,\n active: props.active || [],\n disableAttributes: props.disableAttributes || [],\n minWidth: props.minWidth || 0,\n minHeight: props.minHeight || 0,\n };\n};\n\nexport class ResizeDirective {\n private $el: HTMLElement;\n private props: Props;\n private minW: number;\n private minH: number;\n private maxW: number;\n private maxH: number;\n\n private mouseX: number = 0;\n private mouseY: number = 0;\n\n private width: number = 0;\n private height: number = 0;\n\n private changeX: number = 0;\n private changeY: number = 0;\n\n private parent: { width: number; height: number };\n private resizeState: number;\n private activeResizer: HTMLElement | null;\n private disableCalcMap: number = 0b1111;\n\n private mouseMoveFunc: () => void;\n private mouseUpFunc: () => void;\n\n constructor(private initialProps: Partial<Props>, private $event?: (e: ResizeEvent) => void) {\n this.props = defaultProps(initialProps);\n this.mouseMoveFunc = this.handleMove.bind(this);\n this.mouseUpFunc = this.handleUp.bind(this);\n\n this.minW = this.props.minWidth;\n this.minH = this.props.minHeight;\n this.maxW = this.props.maxWidth;\n this.maxH = this.props.maxHeight;\n this.parent = { width: 0, height: 0 };\n this.resizeState = 0;\n }\n\n set($el: HTMLElement) {\n this.$el = $el;\n this.props.disableAttributes.forEach(attr => {\n switch (attr) {\n case 'l':\n this.disableCalcMap &= ~DISABLE_MASK.l;\n break;\n case 't':\n this.disableCalcMap &= ~DISABLE_MASK.t;\n break;\n case 'w':\n this.disableCalcMap &= ~DISABLE_MASK.w;\n break;\n case 'h':\n this.disableCalcMap &= ~DISABLE_MASK.h;\n }\n });\n }\n emitEvent(eventName: string, additionalOptions?: any) {\n if (!this.$event) {\n return;\n }\n this.$event({\n eventName,\n width: this.width + this.changeX,\n height: this.height + this.changeY,\n changedX: this.changeX,\n changedY: this.changeY,\n ...additionalOptions,\n });\n }\n\n private static isTouchEvent(e: MouseEvent | TouchEvent): e is TouchEvent {\n const event = e as TouchEvent;\n return event.touches?.length >= 0;\n }\n\n handleMove(event: MouseEvent | TouchEvent) {\n if (!this.resizeState) {\n return;\n }\n let eventY, eventX;\n if (ResizeDirective.isTouchEvent(event)) {\n eventY = event.touches[0].clientY;\n eventX = event.touches[0].clientX;\n } else {\n eventY = event.clientY;\n eventX = event.clientX;\n }\n let isX = this.resizeState & RESIZE_MASK['resizable-r'].bit || this.resizeState & RESIZE_MASK['resizable-l'].bit;\n\n let isY = this.resizeState & RESIZE_MASK['resizable-t'].bit || this.resizeState & RESIZE_MASK['resizable-b'].bit;\n\n if (isY && this.disableCalcMap & DISABLE_MASK.h) {\n let diffY = eventY - this.mouseY;\n let changedY = this.changeY + diffY;\n const newHeight = this.height + changedY;\n // if overcrossed min height\n if (newHeight < this.minH) {\n changedY = -(this.height - this.minH);\n }\n // if overcrossed max heiht\n if (this.maxH && newHeight > this.maxH) {\n changedY = this.maxH - this.height;\n }\n\n this.changeY = changedY;\n this.mouseY = eventY;\n\n if (this.activeResizer) {\n this.activeResizer.style.bottom = `${-this.changeY}px`;\n }\n }\n if (isX && this.disableCalcMap & DISABLE_MASK.w) {\n let diffX = eventX - this.mouseX;\n let changedX = this.changeX + diffX;\n const newWidth = this.width + changedX;\n\n // if overcrossed min width\n if (newWidth < this.minW) {\n changedX = -(this.width - this.minW);\n }\n // if overcrossed max width\n if (this.maxW && newWidth > this.maxW) {\n changedX = this.maxW - this.width;\n }\n\n this.changeX = changedX;\n this.mouseX = eventX;\n\n if (this.activeResizer) {\n this.activeResizer.style.right = `${-this.changeX}px`;\n }\n }\n this.emitEvent(ResizeEvents.move);\n }\n\n handleDown(event: MouseEvent | TouchEvent) {\n if (event.defaultPrevented) {\n return;\n }\n // stop other events if resize in progress\n event.preventDefault();\n\n this.dropInitial();\n for (let elClass in RESIZE_MASK) {\n const target = event.target as HTMLElement | null;\n if (this.$el.contains(target) && target?.classList.contains(elClass)) {\n document.body.style.cursor = RESIZE_MASK[elClass].cursor;\n if (ResizeDirective.isTouchEvent(event)) {\n this.setInitials(event.touches[0], target);\n } else {\n event.preventDefault && event.preventDefault();\n this.setInitials(event, target);\n }\n this.resizeState = RESIZE_MASK[elClass].bit;\n const eventName = ResizeEvents.start;\n this.emitEvent(eventName);\n break;\n }\n }\n this.bindMove();\n }\n\n handleUp(e: MouseEvent) {\n e.preventDefault();\n if (this.resizeState !== 0) {\n this.resizeState = 0;\n document.body.style.cursor = '';\n const eventName = ResizeEvents.end;\n this.emitEvent(eventName);\n }\n this.dropInitial();\n this.unbindMove();\n }\n\n private setInitials({ clientX, clientY }: { clientX: number; clientY: number }, target?: HTMLElement) {\n const computedStyle = getComputedStyle(this.$el);\n this.$el.classList.add('active');\n this.activeResizer = target;\n\n if (this.disableCalcMap & DISABLE_MASK.w) {\n this.mouseX = clientX;\n this.width = this.$el.clientWidth;\n this.parent.width = this.$el.parentElement.clientWidth;\n\n // min width\n const minPaddingX = parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);\n this.minW = Math.max(minPaddingX, this.initialProps.minWidth || 0);\n\n // max width\n if (this.initialProps.maxWidth) {\n this.maxW = Math.max(this.width, this.initialProps.maxWidth);\n }\n }\n\n if (this.disableCalcMap & DISABLE_MASK.h) {\n this.mouseY = clientY;\n this.height = this.$el.clientHeight;\n this.parent.height = this.$el.parentElement.clientHeight;\n\n // min height\n const minPaddingY = parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom);\n this.minH = Math.max(minPaddingY, this.initialProps.minHeight || 0);\n // max height\n if (this.initialProps.maxHeight) {\n this.maxH = Math.max(this.height, this.initialProps.maxHeight);\n }\n }\n }\n\n private dropInitial() {\n this.changeX = this.changeY = this.minW = this.minH;\n this.width = this.height = 0;\n if (this.activeResizer) {\n this.activeResizer.removeAttribute('style');\n }\n this.$el.classList.remove('active');\n this.activeResizer = null;\n }\n\n private bindMove() {\n document.documentElement.addEventListener('mouseup', this.mouseUpFunc, true);\n document.documentElement.addEventListener('touchend', this.mouseUpFunc, true);\n document.documentElement.addEventListener('mousemove', this.mouseMoveFunc, true);\n document.documentElement.addEventListener('touchmove', this.mouseMoveFunc, true);\n document.documentElement.addEventListener('mouseleave', this.mouseUpFunc);\n }\n\n private unbindMove() {\n document.documentElement.removeEventListener('mouseup', this.mouseUpFunc, true);\n document.documentElement.removeEventListener('touchend', this.mouseUpFunc, true);\n document.documentElement.removeEventListener('mousemove', this.mouseMoveFunc, true);\n document.documentElement.removeEventListener('touchmove', this.mouseMoveFunc, true);\n document.documentElement.removeEventListener('mouseleave', this.mouseUpFunc);\n }\n}\n\nexport const ResizableElement = (props: Partial<Props> & RevoGrid.CellProps, children: VNode[]) => {\n const resizeEls: VNode[] = [];\n const directive =\n (props.canResize &&\n new ResizeDirective(props, e => {\n if (e.eventName === ResizeEvents.end) {\n props.onResize && props.onResize(e);\n }\n })) ||\n null;\n if (props.canResize) {\n if (props.active) {\n for (let p in props.active) {\n resizeEls.push(\n <div\n onClick={e => e.preventDefault()}\n onDblClick={e => {\n e.preventDefault();\n props.onDoubleClick && props.onDoubleClick();\n }}\n onMouseDown={(e: MouseEvent) => directive?.handleDown(e)}\n onTouchStart={(e: TouchEvent) => directive?.handleDown(e)}\n class={`resizable resizable-${props.active[p]}`}\n />,\n );\n }\n }\n } else {\n if (props.active) {\n for (let p in props.active) {\n resizeEls.push(\n <div\n onClick={e => e.preventDefault()}\n onDblClick={e => {\n e.preventDefault();\n props.onDoubleClick && props.onDoubleClick();\n }}\n class={`no-resize resizable resizable-${props.active[p]}`}\n />,\n );\n }\n }\n }\n return (\n <div {...props} ref={(e: HTMLElement) => directive?.set(e)}>\n {children}\n {resizeEls}\n </div>\n );\n};\n","import { h, VNode } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\nimport { dispatch } from '../../plugins/dispatcher';\nimport { ResizableElement } from '../../services/resizable.directive';\nimport ColumnService from '../data/columnService';\n\ntype Props = {\n data?: RevoGrid.ColumnRegular;\n props: RevoGrid.CellProps;\n};\n\nconst ON_COLUMN_CLICK = 'column-click';\n\nexport const HeaderCellRenderer = ({ data, props }: Props, children: VNode[]): VNode => {\n let colTemplate: VNode | VNode[] | string = data?.name || '';\n let cellProps = props;\n if (data?.columnTemplate) {\n colTemplate = data.columnTemplate(h, data);\n }\n if (data?.columnProperties) {\n const extra = data.columnProperties(data);\n if (extra && typeof extra === 'object') {\n cellProps = ColumnService.doMerge(props, extra);\n }\n }\n return (\n <ResizableElement {...cellProps} onMouseDown={(e: MouseEvent) => {\n dispatch(e.currentTarget as HTMLElement, ON_COLUMN_CLICK, {\n data,\n event: e,\n });\n }}>\n <div class=\"header-content\">{colTemplate}</div>\n {children}\n </ResizableElement>\n );\n};\n","import { h, VNode } from '@stencil/core';\nimport { RevoGrid, Selection } from '../../interfaces';\nimport { FilterButton } from '../../plugins/filter/filter.button';\nimport { SortingSign } from '../../plugins/sorting/sorting.sign';\nimport { ResizeEvent } from '../../services/resizable.directive';\nimport { DATA_COL, FOCUS_CLASS, HEADER_CLASS, HEADER_SORTABLE_CLASS, MIN_COL_SIZE } from '../../utils/consts';\nimport { HeaderCellRenderer } from './headerCellRenderer';\n\ntype Props = {\n column: RevoGrid.VirtualPositionItem;\n data?: RevoGrid.ColumnRegular;\n range?: Selection.RangeArea;\n canResize?: boolean;\n canFilter?: boolean;\n onResize?(e: ResizeEvent): void;\n onClick?(data: RevoGrid.InitialHeaderClick): void;\n onDoubleClick?(data: RevoGrid.InitialHeaderClick): void;\n};\n\nconst HeaderRenderer = (p: Props): VNode => {\n const cellClass: { [key: string]: boolean } = {\n [HEADER_CLASS]: true,\n [HEADER_SORTABLE_CLASS]: !!p.data?.sortable,\n };\n if (p.data?.order) {\n cellClass[p.data.order] = true;\n }\n const dataProps = {\n [DATA_COL]: p.column.itemIndex,\n canResize: p.canResize,\n minWidth: p.data?.minSize || MIN_COL_SIZE,\n maxWidth: p.data?.maxSize,\n active: ['r'],\n class: cellClass,\n style: { width: `${p.column.size}px`, transform: `translateX(${p.column.start}px)` },\n onResize: p.onResize,\n onDoubleClick(originalEvent: MouseEvent) {\n p.onDoubleClick({ column: p.data, index: p.column.itemIndex, originalEvent });\n },\n onClick(originalEvent: MouseEvent) {\n if (originalEvent.defaultPrevented || !p.onClick) {\n return;\n }\n p.onClick({ column: p.data, index: p.column.itemIndex, originalEvent });\n },\n };\n if (p.range) {\n if (p.column.itemIndex >= p.range.x && p.column.itemIndex <= p.range.x1) {\n if (typeof dataProps.class === 'object') {\n dataProps.class[FOCUS_CLASS] = true;\n }\n }\n }\n\n return (\n <HeaderCellRenderer data={p.data} props={dataProps}>\n {p.data?.order ? <SortingSign column={p.data} /> : ''}\n {p.canFilter && p.data?.filter !== false ? <FilterButton column={p.data} /> : ''}\n </HeaderCellRenderer>\n );\n};\n\nexport default HeaderRenderer;\n","import { h, VNode } from '@stencil/core';\nimport { ResizeEvent } from '../../services/resizable.directive';\nimport { Group } from '../../store/dataSource/data.store';\nimport { HEADER_CLASS, MIN_COL_SIZE } from '../../utils/consts';\nimport { HeaderCellRenderer } from '../../components/header/headerCellRenderer';\n\ntype Props = {\n start: number;\n end: number;\n group: Group;\n canResize?: boolean;\n onResize?(e: ResizeEvent): void;\n};\n\nconst GroupHeaderRenderer = (p: Props): VNode[] => {\n const groupProps = {\n canResize: p.canResize,\n minWidth: p.group.ids.length * MIN_COL_SIZE,\n maxWidth: 0,\n\n active: ['r'],\n class: {\n [HEADER_CLASS]: true,\n },\n style: {\n transform: `translateX(${p.start}px)`,\n width: `${p.end - p.start}px`,\n },\n onResize: p.onResize,\n };\n return <HeaderCellRenderer data={p.group} props={groupProps} />;\n};\n\nexport default GroupHeaderRenderer;\n","import { h, VNode } from '@stencil/core';\nimport findIndex from 'lodash/findIndex';\nimport { RevoGrid } from '../../interfaces';\nimport { Group } from '../../store/dataSource/data.store';\nimport { getItemByIndex } from '../../store/dimension/dimension.helpers';\nimport { HEADER_ROW_CLASS } from '../../utils/consts';\nimport GroupHeaderRenderer from './headerGroupRenderer';\n\ntype Props = {\n visibleProps: { [prop: string]: number };\n groups: Record<number, Group[]>;\n dimensionCol: Pick<RevoGrid.DimensionSettingsState, 'indexes' | 'originItemSize' | 'indexToItem'>;\n depth: number;\n canResize: boolean;\n onResize(changedX: number, startIndex: number, endIndex: number): void;\n};\n\nconst ColumnGroupsRenderer = ({ depth, groups, visibleProps, dimensionCol, canResize, onResize }: Props): VNode[] => {\n // render group columns\n const groupRow: VNode[] = [];\n for (let i = 0; i < depth; i++) {\n if (groups[i]) {\n for (let group of groups[i]) {\n // if group in visible range\n // find first visible group prop in visible columns range\n const indexFirstVisibleCol: number | undefined = findIndex(group.ids, id => typeof visibleProps[id] === 'number');\n if (indexFirstVisibleCol > -1) {\n const colVisibleIndex = visibleProps[group.ids[indexFirstVisibleCol]]; // get column index\n const groupStartIndex = colVisibleIndex - indexFirstVisibleCol; // first column index in group\n const groupEndIndex = groupStartIndex + group.ids.length - 1; // last column index in group\n\n // coordinates\n const groupStart = getItemByIndex(dimensionCol, groupStartIndex).start;\n const groupEnd = getItemByIndex(dimensionCol, groupEndIndex).end;\n groupRow.push(\n <GroupHeaderRenderer start={groupStart} end={groupEnd} group={group} canResize={canResize} onResize={e => onResize(e.changedX, groupStartIndex, groupEndIndex)} />,\n );\n }\n }\n }\n groupRow.push(<div class={`${HEADER_ROW_CLASS} group`} />);\n }\n return groupRow;\n};\n\nexport default ColumnGroupsRenderer;\n","revogr-header {\n position: relative;\n z-index: 5;\n display: block;\n\n .rgHeaderCell {\n display: flex;\n\n &.align-center {\n text-align: center;\n }\n &.align-left {\n text-align: left;\n }\n &.align-right {\n text-align: right;\n }\n &.sortable {\n cursor: pointer;\n }\n\n i {\n &.asc,\n &.desc {\n &:after {\n font-size: 13px;\n }\n }\n &.asc {\n &:after {\n content: '↑';\n }\n }\n &.desc {\n &:after {\n content: '↓';\n }\n }\n }\n }\n\n .rgHeaderCell,\n .grouped-cell {\n position: absolute;\n box-sizing: border-box;\n height: 100%;\n z-index: 1;\n }\n\n .header-rgRow {\n display: block;\n position: relative;\n\n &.group {\n z-index: 0;\n }\n }\n\n .group-rgRow {\n position: relative;\n }\n\n .rgHeaderCell {\n &.active {\n z-index: 10;\n\n .resizable {\n background-color: deepskyblue;\n }\n }\n .header-content {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-grow: 1;\n }\n .resizable {\n display: block;\n position: absolute;\n z-index: 90;\n touch-action: none;\n user-select: none;\n &:hover {\n background-color: deepskyblue;\n }\n }\n $size: 6px;\n > .resizable-r {\n cursor: ew-resize;\n width: $size;\n right: 0;\n top: 0;\n height: 100%;\n }\n > .resizable-rb {\n cursor: se-resize;\n width: $size;\n height: $size;\n right: 0;\n bottom: 0;\n }\n\n > .resizable-b {\n cursor: s-resize;\n height: $size;\n bottom: 0;\n width: 100%;\n left: 0;\n }\n\n > .resizable-lb {\n cursor: sw-resize;\n width: $size;\n height: $size;\n left: 0;\n bottom: 0;\n }\n\n > .resizable-l {\n cursor: w-resize;\n width: $size;\n left: 0;\n height: 100%;\n top: 0;\n }\n\n > .resizable-lt {\n cursor: nw-resize;\n width: $size;\n height: $size;\n left: 0;\n top: 0;\n }\n\n > .resizable-t {\n cursor: n-resize;\n height: $size;\n top: 0;\n width: 100%;\n left: 0;\n }\n\n > .resizable-rt {\n cursor: ne-resize;\n width: $size;\n height: $size;\n right: 0;\n top: 0;\n }\n }\n .rv-filter {\n visibility: hidden;\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Prop } from '@stencil/core';\nimport { HTMLStencilElement, VNode } from '@stencil/core/internal';\nimport keyBy from 'lodash/keyBy';\n\nimport { HEADER_ACTUAL_ROW_CLASS, HEADER_ROW_CLASS } from '../../utils/consts';\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport { Groups } from '../../store/dataSource/data.store';\nimport HeaderRenderer from './headerRenderer';\nimport ColumnGroupsRenderer from '../../plugins/groupingColumn/columnGroupsRenderer';\n\n@Component({\n tag: 'revogr-header',\n styleUrl: 'revogr-header-style.scss',\n})\nexport class RevogrHeaderComponent {\n @Element() element!: HTMLStencilElement;\n @Prop() viewportCol: Observable<RevoGrid.ViewportState>;\n @Prop() dimensionCol: Observable<RevoGrid.DimensionSettingsState>;\n @Prop() selectionStore: Observable<Selection.SelectionStoreState>;\n\n @Prop() parent: string = '';\n @Prop() groups: Groups;\n @Prop() groupingDepth: number = 0;\n @Prop() canResize: boolean;\n @Prop() colData: RevoGrid.ColumnRegular[];\n @Prop() columnFilter: boolean;\n\n @Event() initialHeaderClick: EventEmitter<RevoGrid.InitialHeaderClick>;\n @Event() headerresize: EventEmitter<RevoGrid.ViewSettingSizeProp>;\n @Event() headerdblClick: EventEmitter<RevoGrid.InitialHeaderClick>;\n\n private onResize({ width }: { width?: number }, index: number): void {\n this.headerresize.emit({ [index]: width || 0 });\n }\n\n private onResizeGroup(changedX: number, startIndex: number, endIndex: number): void {\n const sizes: RevoGrid.ViewSettingSizeProp = {};\n const cols = keyBy(this.viewportCol.get('items'), 'itemIndex');\n const change = changedX / (endIndex - startIndex + 1);\n for (let i = startIndex; i <= endIndex; i++) {\n const item = cols[i];\n if (item) {\n sizes[i] = item.size + change;\n }\n }\n this.headerresize.emit(sizes);\n }\n\n render() {\n const cols = this.viewportCol.get('items');\n const range = this.selectionStore?.get('range');\n const cells: VNode[] = [];\n const visibleProps: { [prop: string]: number } = {};\n\n // render header columns\n for (let rgCol of cols) {\n const colData = this.colData[rgCol.itemIndex];\n cells.push(\n <HeaderRenderer\n range={range}\n column={rgCol}\n data={colData}\n canFilter={!!this.columnFilter}\n canResize={this.canResize}\n onResize={e => this.onResize(e, rgCol.itemIndex)}\n onDoubleClick={e => this.headerdblClick.emit(e)}\n onClick={e => this.initialHeaderClick.emit(e)}\n />,\n );\n visibleProps[colData?.prop] = rgCol.itemIndex;\n }\n\n return [\n <div class=\"group-rgRow\">\n <ColumnGroupsRenderer\n canResize={this.canResize}\n visibleProps={visibleProps}\n groups={this.groups}\n dimensionCol={this.dimensionCol.state}\n depth={this.groupingDepth}\n onResize={(changedX, startIndex, endIndex) => this.onResizeGroup(changedX, startIndex, endIndex)}\n />\n </div>,\n <div class={`${HEADER_ROW_CLASS} ${HEADER_ACTUAL_ROW_CLASS}`}>{cells}</div>,\n ];\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"revogr-header2.js","mappings":"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","names":["getNative","defineProperty","baseEach","isArray","arrayAggregator","baseAggregator","baseIteratee","createAggregator","baseAssignValue","findIndex","keyBy"],"sources":["src/plugins/dispatcher.ts","node_modules/lodash/_defineProperty.js","node_modules/lodash/_baseAssignValue.js","node_modules/lodash/_arrayAggregator.js","node_modules/lodash/_baseAggregator.js","node_modules/lodash/_createAggregator.js","node_modules/lodash/keyBy.js","src/plugins/sorting/sorting.sign.tsx","src/services/resizable.directive.tsx","src/components/header/headerCellRenderer.tsx","src/components/header/headerRenderer.tsx","src/plugins/groupingColumn/headerGroupRenderer.tsx","src/plugins/groupingColumn/columnGroupsRenderer.tsx","src/components/header/revogr-header-style.scss?tag=revogr-header","src/components/header/revogr-header.tsx"],"sourcesContent":["type Target = HTMLElement | Element | null;\n/**\n * Dispatch custom event to element\n */\nexport function dispatch(\n target: Target,\n eventName: string,\n detail?: any\n): CustomEvent {\n const event = new CustomEvent(eventName, {\n detail,\n cancelable: true,\n bubbles: true,\n });\n target?.dispatchEvent(event);\n return event;\n}\n\n/**\n * Dispatch event by other event target\n */\nexport function dispatchOnEvent(\n e: MouseEvent | CustomEvent,\n eventName: string,\n detail?: any\n ): CustomEvent {\n e.preventDefault();\n return dispatch(e.target as Target, eventName, detail);\n}\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n});\n\nmodule.exports = keyBy;\n","import { h } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\n\nexport const FILTER_BUTTON_CLASS = 'rv-filter';\nexport const FILTER_BUTTON_ACTIVE = 'active';\n\ntype Props = {\n column: RevoGrid.ColumnRegular;\n};\nexport const SortingSign = ({ column }: Props) => {\n return <i class={column.order} />;\n};\n","import { h, VNode } from '@stencil/core';\nimport { RevoGrid } from '../interfaces';\n\ntype Props = {\n active: ('r' | 'rb' | 'b' | 'lb' | 'l' | 'lt' | 't' | 'rt')[]; // all\n fitParent: boolean; // false\n minWidth: number; // 0\n minHeight: number; // 0\n\n disableAttributes: ('l' | 't' | 'w' | 'h')[]; // []\n maxWidth?: number;\n maxHeight?: number;\n\n onResize?(e: ResizeEvent): void;\n onDoubleClick?(): void;\n};\n\nexport type ResizeEvent = {\n eventName: string;\n changedX?: number;\n changedY?: number;\n width?: number;\n height?: number;\n};\n\nenum ResizeEvents {\n start = 'resize:start',\n move = 'resize:move',\n end = 'resize:end',\n}\n\nconst RESIZE_MASK: { [key: string]: any } = {\n 'resizable-r': { bit: 0b0001, cursor: 'ew-resize' },\n 'resizable-rb': { bit: 0b0011, cursor: 'se-resize' },\n 'resizable-b': { bit: 0b0010, cursor: 's-resize' },\n 'resizable-lb': { bit: 0b0110, cursor: 'sw-resize' },\n 'resizable-l': { bit: 0b0100, cursor: 'w-resize' },\n 'resizable-lt': { bit: 0b1100, cursor: 'nw-resize' },\n 'resizable-t': { bit: 0b1000, cursor: 'n-resize' },\n 'resizable-rt': { bit: 0b1001, cursor: 'ne-resize' },\n};\n\nconst DISABLE_MASK = {\n l: 0b0001,\n t: 0b0010,\n w: 0b0100,\n h: 0b1000,\n};\n\nconst defaultProps = (props: Partial<Props>): Props => {\n return {\n ...props,\n fitParent: props.fitParent || false,\n active: props.active || [],\n disableAttributes: props.disableAttributes || [],\n minWidth: props.minWidth || 0,\n minHeight: props.minHeight || 0,\n };\n};\n\nexport class ResizeDirective {\n private $el: HTMLElement;\n private props: Props;\n private minW: number;\n private minH: number;\n private maxW: number;\n private maxH: number;\n\n private mouseX: number = 0;\n private mouseY: number = 0;\n\n private width: number = 0;\n private height: number = 0;\n\n private changeX: number = 0;\n private changeY: number = 0;\n\n private parent: { width: number; height: number };\n private resizeState: number;\n private activeResizer: HTMLElement | null;\n private disableCalcMap: number = 0b1111;\n\n private mouseMoveFunc: () => void;\n private mouseUpFunc: () => void;\n\n constructor(private initialProps: Partial<Props>, private $event?: (e: ResizeEvent) => void) {\n this.props = defaultProps(initialProps);\n this.mouseMoveFunc = this.handleMove.bind(this);\n this.mouseUpFunc = this.handleUp.bind(this);\n\n this.minW = this.props.minWidth;\n this.minH = this.props.minHeight;\n this.maxW = this.props.maxWidth;\n this.maxH = this.props.maxHeight;\n this.parent = { width: 0, height: 0 };\n this.resizeState = 0;\n }\n\n set($el: HTMLElement) {\n this.$el = $el;\n this.props.disableAttributes.forEach(attr => {\n switch (attr) {\n case 'l':\n this.disableCalcMap &= ~DISABLE_MASK.l;\n break;\n case 't':\n this.disableCalcMap &= ~DISABLE_MASK.t;\n break;\n case 'w':\n this.disableCalcMap &= ~DISABLE_MASK.w;\n break;\n case 'h':\n this.disableCalcMap &= ~DISABLE_MASK.h;\n }\n });\n }\n emitEvent(eventName: string, additionalOptions?: any) {\n if (!this.$event) {\n return;\n }\n this.$event({\n eventName,\n width: this.width + this.changeX,\n height: this.height + this.changeY,\n changedX: this.changeX,\n changedY: this.changeY,\n ...additionalOptions,\n });\n }\n\n private static isTouchEvent(e: MouseEvent | TouchEvent): e is TouchEvent {\n const event = e as TouchEvent;\n return event.touches?.length >= 0;\n }\n\n handleMove(event: MouseEvent | TouchEvent) {\n if (!this.resizeState) {\n return;\n }\n let eventY, eventX;\n if (ResizeDirective.isTouchEvent(event)) {\n eventY = event.touches[0].clientY;\n eventX = event.touches[0].clientX;\n } else {\n eventY = event.clientY;\n eventX = event.clientX;\n }\n let isX = this.resizeState & RESIZE_MASK['resizable-r'].bit || this.resizeState & RESIZE_MASK['resizable-l'].bit;\n\n let isY = this.resizeState & RESIZE_MASK['resizable-t'].bit || this.resizeState & RESIZE_MASK['resizable-b'].bit;\n\n if (isY && this.disableCalcMap & DISABLE_MASK.h) {\n let diffY = eventY - this.mouseY;\n let changedY = this.changeY + diffY;\n const newHeight = this.height + changedY;\n // if overcrossed min height\n if (newHeight < this.minH) {\n changedY = -(this.height - this.minH);\n }\n // if overcrossed max heiht\n if (this.maxH && newHeight > this.maxH) {\n changedY = this.maxH - this.height;\n }\n\n this.changeY = changedY;\n this.mouseY = eventY;\n\n if (this.activeResizer) {\n this.activeResizer.style.bottom = `${-this.changeY}px`;\n }\n }\n if (isX && this.disableCalcMap & DISABLE_MASK.w) {\n let diffX = eventX - this.mouseX;\n let changedX = this.changeX + diffX;\n const newWidth = this.width + changedX;\n\n // if overcrossed min width\n if (newWidth < this.minW) {\n changedX = -(this.width - this.minW);\n }\n // if overcrossed max width\n if (this.maxW && newWidth > this.maxW) {\n changedX = this.maxW - this.width;\n }\n\n this.changeX = changedX;\n this.mouseX = eventX;\n\n if (this.activeResizer) {\n this.activeResizer.style.right = `${-this.changeX}px`;\n }\n }\n this.emitEvent(ResizeEvents.move);\n }\n\n handleDown(event: MouseEvent | TouchEvent) {\n if (event.defaultPrevented) {\n return;\n }\n // stop other events if resize in progress\n event.preventDefault();\n\n this.dropInitial();\n for (let elClass in RESIZE_MASK) {\n const target = event.target as HTMLElement | null;\n if (this.$el.contains(target) && target?.classList.contains(elClass)) {\n document.body.style.cursor = RESIZE_MASK[elClass].cursor;\n if (ResizeDirective.isTouchEvent(event)) {\n this.setInitials(event.touches[0], target);\n } else {\n event.preventDefault && event.preventDefault();\n this.setInitials(event, target);\n }\n this.resizeState = RESIZE_MASK[elClass].bit;\n const eventName = ResizeEvents.start;\n this.emitEvent(eventName);\n break;\n }\n }\n this.bindMove();\n }\n\n handleUp(e: MouseEvent) {\n e.preventDefault();\n if (this.resizeState !== 0) {\n this.resizeState = 0;\n document.body.style.cursor = '';\n const eventName = ResizeEvents.end;\n this.emitEvent(eventName);\n }\n this.dropInitial();\n this.unbindMove();\n }\n\n private setInitials({ clientX, clientY }: { clientX: number; clientY: number }, target?: HTMLElement) {\n const computedStyle = getComputedStyle(this.$el);\n this.$el.classList.add('active');\n this.activeResizer = target;\n\n if (this.disableCalcMap & DISABLE_MASK.w) {\n this.mouseX = clientX;\n this.width = this.$el.clientWidth;\n this.parent.width = this.$el.parentElement.clientWidth;\n\n // min width\n const minPaddingX = parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);\n this.minW = Math.max(minPaddingX, this.initialProps.minWidth || 0);\n\n // max width\n if (this.initialProps.maxWidth) {\n this.maxW = Math.max(this.width, this.initialProps.maxWidth);\n }\n }\n\n if (this.disableCalcMap & DISABLE_MASK.h) {\n this.mouseY = clientY;\n this.height = this.$el.clientHeight;\n this.parent.height = this.$el.parentElement.clientHeight;\n\n // min height\n const minPaddingY = parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom);\n this.minH = Math.max(minPaddingY, this.initialProps.minHeight || 0);\n // max height\n if (this.initialProps.maxHeight) {\n this.maxH = Math.max(this.height, this.initialProps.maxHeight);\n }\n }\n }\n\n private dropInitial() {\n this.changeX = this.changeY = this.minW = this.minH;\n this.width = this.height = 0;\n if (this.activeResizer) {\n this.activeResizer.removeAttribute('style');\n }\n this.$el.classList.remove('active');\n this.activeResizer = null;\n }\n\n private bindMove() {\n document.documentElement.addEventListener('mouseup', this.mouseUpFunc, true);\n document.documentElement.addEventListener('touchend', this.mouseUpFunc, true);\n document.documentElement.addEventListener('mousemove', this.mouseMoveFunc, true);\n document.documentElement.addEventListener('touchmove', this.mouseMoveFunc, true);\n document.documentElement.addEventListener('mouseleave', this.mouseUpFunc);\n }\n\n private unbindMove() {\n document.documentElement.removeEventListener('mouseup', this.mouseUpFunc, true);\n document.documentElement.removeEventListener('touchend', this.mouseUpFunc, true);\n document.documentElement.removeEventListener('mousemove', this.mouseMoveFunc, true);\n document.documentElement.removeEventListener('touchmove', this.mouseMoveFunc, true);\n document.documentElement.removeEventListener('mouseleave', this.mouseUpFunc);\n }\n}\n\nexport const ResizableElement = (props: Partial<Props> & RevoGrid.CellProps, children: VNode[]) => {\n const resizeEls: VNode[] = [];\n const directive =\n (props.canResize &&\n new ResizeDirective(props, e => {\n if (e.eventName === ResizeEvents.end) {\n props.onResize && props.onResize(e);\n }\n })) ||\n null;\n if (props.canResize) {\n if (props.active) {\n for (let p in props.active) {\n resizeEls.push(\n <div\n onClick={e => e.preventDefault()}\n onDblClick={e => {\n e.preventDefault();\n props.onDoubleClick && props.onDoubleClick();\n }}\n onMouseDown={(e: MouseEvent) => directive?.handleDown(e)}\n onTouchStart={(e: TouchEvent) => directive?.handleDown(e)}\n class={`resizable resizable-${props.active[p]}`}\n />,\n );\n }\n }\n } else {\n if (props.active) {\n for (let p in props.active) {\n resizeEls.push(\n <div\n onClick={e => e.preventDefault()}\n onDblClick={e => {\n e.preventDefault();\n props.onDoubleClick && props.onDoubleClick();\n }}\n class={`no-resize resizable resizable-${props.active[p]}`}\n />,\n );\n }\n }\n }\n return (\n <div {...props} ref={(e: HTMLElement) => directive?.set(e)}>\n {children}\n {resizeEls}\n </div>\n );\n};\n","import { h, VNode } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\nimport { dispatch } from '../../plugins/dispatcher';\nimport { ResizableElement } from '../../services/resizable.directive';\nimport ColumnService from '../data/columnService';\n\ntype Props = {\n data?: RevoGrid.ColumnRegular;\n props: RevoGrid.CellProps;\n};\n\nconst ON_COLUMN_CLICK = 'column-click';\n\nexport const HeaderCellRenderer = ({ data, props }: Props, children: VNode[]): VNode => {\n let colTemplate: VNode | VNode[] | string = data?.name || '';\n let cellProps = props;\n if (data?.columnTemplate) {\n colTemplate = data.columnTemplate(h, data);\n }\n if (data?.columnProperties) {\n const extra = data.columnProperties(data);\n if (extra && typeof extra === 'object') {\n cellProps = ColumnService.doMerge(props, extra);\n }\n }\n return (\n <ResizableElement {...cellProps} onMouseDown={(e: MouseEvent) => {\n dispatch(e.currentTarget as HTMLElement, ON_COLUMN_CLICK, {\n data,\n event: e,\n });\n }}>\n <div class=\"header-content\">{colTemplate}</div>\n {children}\n </ResizableElement>\n );\n};\n","import { h, VNode } from '@stencil/core';\nimport { RevoGrid, Selection } from '../../interfaces';\nimport { FilterButton } from '../../plugins/filter/filter.button';\nimport { SortingSign } from '../../plugins/sorting/sorting.sign';\nimport { ResizeEvent } from '../../services/resizable.directive';\nimport { DATA_COL, FOCUS_CLASS, HEADER_CLASS, HEADER_SORTABLE_CLASS, MIN_COL_SIZE } from '../../utils/consts';\nimport { HeaderCellRenderer } from './headerCellRenderer';\n\ntype Props = {\n column: RevoGrid.VirtualPositionItem;\n data?: RevoGrid.ColumnRegular;\n range?: Selection.RangeArea;\n canResize?: boolean;\n canFilter?: boolean;\n onResize?(e: ResizeEvent): void;\n onClick?(data: RevoGrid.InitialHeaderClick): void;\n onDoubleClick?(data: RevoGrid.InitialHeaderClick): void;\n};\n\nconst HeaderRenderer = (p: Props): VNode => {\n const cellClass: { [key: string]: boolean } = {\n [HEADER_CLASS]: true,\n [HEADER_SORTABLE_CLASS]: !!p.data?.sortable,\n };\n if (p.data?.order) {\n cellClass[p.data.order] = true;\n }\n const dataProps = {\n [DATA_COL]: p.column.itemIndex,\n canResize: p.canResize,\n minWidth: p.data?.minSize || MIN_COL_SIZE,\n maxWidth: p.data?.maxSize,\n active: ['r'],\n class: cellClass,\n style: { width: `${p.column.size}px`, transform: `translateX(${p.column.start}px)` },\n onResize: p.onResize,\n onDoubleClick(originalEvent: MouseEvent) {\n p.onDoubleClick({ column: p.data, index: p.column.itemIndex, originalEvent });\n },\n onClick(originalEvent: MouseEvent) {\n if (originalEvent.defaultPrevented || !p.onClick) {\n return;\n }\n p.onClick({ column: p.data, index: p.column.itemIndex, originalEvent });\n },\n };\n if (p.range) {\n if (p.column.itemIndex >= p.range.x && p.column.itemIndex <= p.range.x1) {\n if (typeof dataProps.class === 'object') {\n dataProps.class[FOCUS_CLASS] = true;\n }\n }\n }\n\n return (\n <HeaderCellRenderer data={p.data} props={dataProps}>\n {p.data?.order ? <SortingSign column={p.data} /> : ''}\n {p.canFilter && p.data?.filter !== false ? <FilterButton column={p.data} /> : ''}\n </HeaderCellRenderer>\n );\n};\n\nexport default HeaderRenderer;\n","import { h, VNode } from '@stencil/core';\nimport { ResizeEvent } from '../../services/resizable.directive';\nimport { Group } from '../../store/dataSource/data.store';\nimport { HEADER_CLASS, MIN_COL_SIZE } from '../../utils/consts';\nimport { HeaderCellRenderer } from '../../components/header/headerCellRenderer';\n\ntype Props = {\n start: number;\n end: number;\n group: Group;\n canResize?: boolean;\n onResize?(e: ResizeEvent): void;\n};\n\nconst GroupHeaderRenderer = (p: Props): VNode[] => {\n const groupProps = {\n canResize: p.canResize,\n minWidth: p.group.ids.length * MIN_COL_SIZE,\n maxWidth: 0,\n\n active: ['r'],\n class: {\n [HEADER_CLASS]: true,\n },\n style: {\n transform: `translateX(${p.start}px)`,\n width: `${p.end - p.start}px`,\n },\n onResize: p.onResize,\n };\n return <HeaderCellRenderer data={p.group} props={groupProps} />;\n};\n\nexport default GroupHeaderRenderer;\n","import { h, VNode } from '@stencil/core';\nimport findIndex from 'lodash/findIndex';\nimport { RevoGrid } from '../../interfaces';\nimport { Group } from '../../store/dataSource/data.store';\nimport { getItemByIndex } from '../../store/dimension/dimension.helpers';\nimport { HEADER_ROW_CLASS } from '../../utils/consts';\nimport GroupHeaderRenderer from './headerGroupRenderer';\n\ntype Props = {\n visibleProps: { [prop: string]: number };\n groups: Record<number, Group[]>;\n dimensionCol: Pick<RevoGrid.DimensionSettingsState, 'indexes' | 'originItemSize' | 'indexToItem'>;\n depth: number;\n canResize: boolean;\n onResize(changedX: number, startIndex: number, endIndex: number): void;\n};\n\nconst ColumnGroupsRenderer = ({ depth, groups, visibleProps, dimensionCol, canResize, onResize }: Props): VNode[] => {\n // render group columns\n const groupRow: VNode[] = [];\n for (let i = 0; i < depth; i++) {\n if (groups[i]) {\n for (let group of groups[i]) {\n // if group in visible range\n // find first visible group prop in visible columns range\n const indexFirstVisibleCol: number | undefined = findIndex(group.ids, id => typeof visibleProps[id] === 'number');\n if (indexFirstVisibleCol > -1) {\n const colVisibleIndex = visibleProps[group.ids[indexFirstVisibleCol]]; // get column index\n const groupStartIndex = colVisibleIndex - indexFirstVisibleCol; // first column index in group\n const groupEndIndex = groupStartIndex + group.ids.length - 1; // last column index in group\n\n // coordinates\n const groupStart = getItemByIndex(dimensionCol, groupStartIndex).start;\n const groupEnd = getItemByIndex(dimensionCol, groupEndIndex).end;\n groupRow.push(\n <GroupHeaderRenderer start={groupStart} end={groupEnd} group={group} canResize={canResize} onResize={e => onResize(e.changedX, groupStartIndex, groupEndIndex)} />,\n );\n }\n }\n }\n groupRow.push(<div class={`${HEADER_ROW_CLASS} group`} />);\n }\n return groupRow;\n};\n\nexport default ColumnGroupsRenderer;\n","revogr-header {\n position: relative;\n z-index: 5;\n display: block;\n\n .rgHeaderCell {\n display: flex;\n\n &.align-center {\n text-align: center;\n }\n &.align-left {\n text-align: left;\n }\n &.align-right {\n text-align: right;\n }\n &.sortable {\n cursor: pointer;\n }\n\n i {\n &.asc,\n &.desc {\n &:after {\n font-size: 13px;\n }\n }\n &.asc {\n &:after {\n content: '↑';\n }\n }\n &.desc {\n &:after {\n content: '↓';\n }\n }\n }\n }\n\n .rgHeaderCell,\n .grouped-cell {\n position: absolute;\n box-sizing: border-box;\n height: 100%;\n z-index: 1;\n }\n\n .header-rgRow {\n display: block;\n position: relative;\n\n &.group {\n z-index: 0;\n }\n }\n\n .group-rgRow {\n position: relative;\n }\n\n .rgHeaderCell {\n &.active {\n z-index: 10;\n\n .resizable {\n background-color: deepskyblue;\n }\n }\n .header-content {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-grow: 1;\n }\n .resizable {\n display: block;\n position: absolute;\n z-index: 90;\n touch-action: none;\n user-select: none;\n &:hover {\n background-color: deepskyblue;\n }\n }\n $size: 6px;\n > .resizable-r {\n cursor: ew-resize;\n width: $size;\n right: 0;\n top: 0;\n height: 100%;\n }\n > .resizable-rb {\n cursor: se-resize;\n width: $size;\n height: $size;\n right: 0;\n bottom: 0;\n }\n\n > .resizable-b {\n cursor: s-resize;\n height: $size;\n bottom: 0;\n width: 100%;\n left: 0;\n }\n\n > .resizable-lb {\n cursor: sw-resize;\n width: $size;\n height: $size;\n left: 0;\n bottom: 0;\n }\n\n > .resizable-l {\n cursor: w-resize;\n width: $size;\n left: 0;\n height: 100%;\n top: 0;\n }\n\n > .resizable-lt {\n cursor: nw-resize;\n width: $size;\n height: $size;\n left: 0;\n top: 0;\n }\n\n > .resizable-t {\n cursor: n-resize;\n height: $size;\n top: 0;\n width: 100%;\n left: 0;\n }\n\n > .resizable-rt {\n cursor: ne-resize;\n width: $size;\n height: $size;\n right: 0;\n top: 0;\n }\n }\n .rv-filter {\n visibility: hidden;\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Prop } from '@stencil/core';\nimport { HTMLStencilElement, VNode } from '@stencil/core/internal';\nimport keyBy from 'lodash/keyBy';\n\nimport { HEADER_ACTUAL_ROW_CLASS, HEADER_ROW_CLASS } from '../../utils/consts';\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport { Groups } from '../../store/dataSource/data.store';\nimport HeaderRenderer from './headerRenderer';\nimport ColumnGroupsRenderer from '../../plugins/groupingColumn/columnGroupsRenderer';\n\n@Component({\n tag: 'revogr-header',\n styleUrl: 'revogr-header-style.scss',\n})\nexport class RevogrHeaderComponent {\n @Element() element!: HTMLStencilElement;\n @Prop() viewportCol: Observable<RevoGrid.ViewportState>;\n @Prop() dimensionCol: Observable<RevoGrid.DimensionSettingsState>;\n @Prop() selectionStore: Observable<Selection.SelectionStoreState>;\n\n @Prop() parent: string = '';\n @Prop() groups: Groups;\n @Prop() groupingDepth: number = 0;\n @Prop() canResize: boolean;\n @Prop() colData: RevoGrid.ColumnRegular[];\n @Prop() columnFilter: boolean;\n\n @Event() initialHeaderClick: EventEmitter<RevoGrid.InitialHeaderClick>;\n @Event() headerresize: EventEmitter<RevoGrid.ViewSettingSizeProp>;\n @Event() headerdblClick: EventEmitter<RevoGrid.InitialHeaderClick>;\n\n private onResize({ width }: { width?: number }, index: number): void {\n this.headerresize.emit({ [index]: width || 0 });\n }\n\n private onResizeGroup(changedX: number, startIndex: number, endIndex: number): void {\n const sizes: RevoGrid.ViewSettingSizeProp = {};\n const cols = keyBy(this.viewportCol.get('items'), 'itemIndex');\n const change = changedX / (endIndex - startIndex + 1);\n for (let i = startIndex; i <= endIndex; i++) {\n const item = cols[i];\n if (item) {\n sizes[i] = item.size + change;\n }\n }\n this.headerresize.emit(sizes);\n }\n\n render() {\n const cols = this.viewportCol.get('items');\n const range = this.selectionStore?.get('range');\n const cells: VNode[] = [];\n const visibleProps: { [prop: string]: number } = {};\n\n // render header columns\n for (let rgCol of cols) {\n const colData = this.colData[rgCol.itemIndex];\n cells.push(\n <HeaderRenderer\n range={range}\n column={rgCol}\n data={colData}\n canFilter={!!this.columnFilter}\n canResize={this.canResize}\n onResize={e => this.onResize(e, rgCol.itemIndex)}\n onDoubleClick={e => this.headerdblClick.emit(e)}\n onClick={e => this.initialHeaderClick.emit(e)}\n />,\n );\n visibleProps[colData?.prop] = rgCol.itemIndex;\n }\n\n return [\n <div class=\"group-rgRow\">\n <ColumnGroupsRenderer\n canResize={this.canResize}\n visibleProps={visibleProps}\n groups={this.groups}\n dimensionCol={this.dimensionCol.state}\n depth={this.groupingDepth}\n onResize={(changedX, startIndex, endIndex) => this.onResizeGroup(changedX, startIndex, endIndex)}\n />\n </div>,\n <div class={`${HEADER_ROW_CLASS} ${HEADER_ACTUAL_ROW_CLASS}`}>{cells}</div>,\n ];\n }\n}\n"],"version":3}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"revogr-order-editor2.js","mappings":"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","names":["debounce"],"sources":["src/components/order/rowOrderService.ts","src/components/order/revogr-order-editor.tsx"],"sourcesContent":["import { RevoGrid, Selection } from '../../interfaces';\nimport { getItemByPosition } from '../../store/dimension/dimension.helpers';\n\ntype EventData = { el: HTMLElement; rows: RevoGrid.DimensionSettingsState; cols: RevoGrid.DimensionSettingsState };\ninterface Config {\n positionChanged(from: number, to: number): void;\n}\n\nexport default class RowOrderService {\n private currentCell: Selection.Cell | null = null;\n private previousRow: number | null = null;\n\n constructor(private config: Config) {}\n\n /** Drag finished, calculate and apply changes */\n endOrder(e: MouseEvent, data: EventData): void {\n if (this.currentCell === null) {\n return;\n }\n const newRow = this.getCell(e, data);\n\n // if position changed\n if (newRow.y !== this.currentCell.y) {\n // rgRow dragged out table\n if (newRow.y < 0) {\n newRow.y = 0;\n }\n // rgRow dragged to the top\n else if (newRow.y < this.currentCell.y) {\n newRow.y++;\n }\n this.config.positionChanged(this.currentCell.y, newRow.y);\n }\n this.clear();\n }\n\n /** Drag started, reserve initial cell for farther use */\n startOrder(e: MouseEvent, data: EventData): Selection.Cell {\n this.currentCell = this.getCell(e, data);\n return this.currentCell;\n }\n\n move(y: number, data: EventData): RevoGrid.PositionItem | null {\n const rgRow = this.getRow(y, data);\n // if rgRow same as previous or below range (-1 = 0) do nothing\n if (this.previousRow === rgRow.itemIndex || rgRow.itemIndex < -1) {\n return null;\n }\n this.previousRow = rgRow.itemIndex;\n return rgRow;\n }\n\n /** Drag stopped, probably cursor outside of document area */\n clear(): void {\n this.currentCell = null;\n this.previousRow = null;\n }\n\n /** Calculate cell based on x, y position */\n getRow(y: number, { el, rows }: EventData): RevoGrid.PositionItem {\n const { top } = el.getBoundingClientRect();\n const topRelative = y - top;\n const rgRow = getItemByPosition(rows, topRelative);\n const absolutePosition = {\n itemIndex: rgRow.itemIndex,\n start: rgRow.start + top,\n end: rgRow.end + top,\n };\n return absolutePosition;\n }\n\n /** Calculate cell based on x, y position */\n getCell({ x, y }: Selection.Cell, { el, rows, cols }: EventData): Selection.Cell {\n const { top, left } = el.getBoundingClientRect();\n const topRelative = y - top;\n const leftRelative = x - left;\n const rgRow = getItemByPosition(rows, topRelative);\n const rgCol = getItemByPosition(cols, leftRelative);\n return { x: rgCol.itemIndex, y: rgRow.itemIndex };\n }\n}\n","import { Component, Method, Event, EventEmitter, Prop, Listen } from '@stencil/core';\nimport debounce from 'lodash/debounce';\n\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport { DataSourceState, setItems } from '../../store/dataSource/data.store';\nimport { DRAGG_TEXT } from '../../utils/consts';\nimport RowOrderService from './rowOrderService';\n\n@Component({ tag: 'revogr-order-editor' })\nexport class OrderEditor {\n private rowOrderService: RowOrderService;\n private moveFunc: ((e: Selection.Cell) => void) | null;\n private rowMoveFunc = debounce((y: number) => {\n const rgRow = this.rowOrderService.move(y, this.getData());\n if (rgRow !== null) {\n this.internalRowDrag.emit(rgRow);\n }\n }, 5);\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n @Prop() parent: HTMLElement;\n @Prop() dimensionRow: Observable<RevoGrid.DimensionSettingsState>;\n @Prop() dimensionCol: Observable<RevoGrid.DimensionSettingsState>;\n\n /** Static stores, not expected to change during component lifetime */\n @Prop() dataStore: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>;\n\n // --------------------------------------------------------------------------\n //\n // Events\n //\n // --------------------------------------------------------------------------\n\n /** Row drag started */\n @Event({ cancelable: true }) internalRowDragStart: EventEmitter<{\n cell: Selection.Cell;\n text: string;\n pos: RevoGrid.PositionItem;\n event: MouseEvent;\n }>;\n\n /** Row drag ended */\n @Event({ cancelable: true }) internalRowDragEnd: EventEmitter;\n\n /** Row move */\n @Event({ cancelable: true }) internalRowDrag: EventEmitter<RevoGrid.PositionItem>;\n\n /** Row mouse move */\n @Event({ cancelable: true }) internalRowMouseMove: EventEmitter<Selection.Cell>;\n\n /** Row dragged, new range ready to be applied */\n @Event({ cancelable: true }) initialRowDropped: EventEmitter<{ from: number; to: number }>;\n\n // --------------------------------------------------------------------------\n //\n // Listeners\n //\n // --------------------------------------------------------------------------\n\n @Listen('mouseleave', { target: 'document' })\n onMouseOut(): void {\n this.clearOrder();\n }\n\n /** Action finished inside of the document */\n @Listen('mouseup', { target: 'document' })\n onMouseUp(e: MouseEvent): void {\n this.endOrder(e);\n }\n\n // --------------------------------------------------------------------------\n //\n // Methods\n //\n // --------------------------------------------------------------------------\n\n @Method() async dragStart(e: MouseEvent): Promise<void> {\n e.preventDefault();\n\n // extra check if previous ended\n if (this.moveFunc) {\n this.clearOrder();\n }\n\n const data = this.getData();\n const cell = this.rowOrderService.startOrder(e, data);\n const pos = this.rowOrderService.getRow(e.y, data);\n const dragStartEvent = this.internalRowDragStart.emit({ cell, text: DRAGG_TEXT, pos, event: e });\n if (dragStartEvent.defaultPrevented) {\n return;\n }\n\n this.moveFunc = (e: MouseEvent) => this.move(e);\n document.addEventListener('mousemove', this.moveFunc);\n }\n\n @Method() async endOrder(e: MouseEvent): Promise<void> {\n this.rowOrderService.endOrder(e, this.getData());\n this.clearOrder();\n }\n\n @Method() async clearOrder(): Promise<void> {\n this.rowOrderService.clear();\n document.removeEventListener('mousemove', this.moveFunc);\n this.moveFunc = null;\n this.internalRowDragEnd.emit();\n }\n\n // --------------------------------------------------------------------------\n //\n // Component methods\n //\n // --------------------------------------------------------------------------\n\n move({ x, y }: { x: number; y: number }): void {\n this.internalRowMouseMove.emit({ x, y });\n this.rowMoveFunc(y);\n }\n\n connectedCallback(): void {\n this.rowOrderService = new RowOrderService({ positionChanged: (f, t) => this.onPositionChanged(f, t) });\n }\n\n private onPositionChanged(from: number, to: number) {\n const dropEvent = this.initialRowDropped.emit({ from, to });\n if (dropEvent.defaultPrevented) {\n return;\n }\n const items = [...this.dataStore.get('items')];\n const toMove = items.splice(from, 1);\n items.splice(to, 0, ...toMove);\n setItems(this.dataStore, items);\n }\n\n private getData() {\n return {\n el: this.parent,\n rows: this.dimensionRow.state,\n cols: this.dimensionCol.state,\n };\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"revogr-order-editor2.js","mappings":"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","names":["debounce"],"sources":["src/components/order/rowOrderService.ts","src/components/order/revogr-order-editor.tsx"],"sourcesContent":["import { RevoGrid, Selection } from '../../interfaces';\nimport { getItemByPosition } from '../../store/dimension/dimension.helpers';\n\ntype EventData = { el: HTMLElement; rows: RevoGrid.DimensionSettingsState; cols: RevoGrid.DimensionSettingsState };\ninterface Config {\n positionChanged(from: number, to: number): void;\n}\n\nexport default class RowOrderService {\n private currentCell: Selection.Cell | null = null;\n private previousRow: number | null = null;\n\n constructor(private config: Config) {}\n\n /** Drag finished, calculate and apply changes */\n endOrder(e: MouseEvent, data: EventData): void {\n if (this.currentCell === null) {\n return;\n }\n const newRow = this.getCell(e, data);\n\n // if position changed\n if (newRow.y !== this.currentCell.y) {\n // rgRow dragged out table\n if (newRow.y < 0) {\n newRow.y = 0;\n }\n // rgRow dragged to the top\n else if (newRow.y < this.currentCell.y) {\n newRow.y++;\n }\n this.config.positionChanged(this.currentCell.y, newRow.y);\n }\n this.clear();\n }\n\n /** Drag started, reserve initial cell for farther use */\n startOrder(e: MouseEvent, data: EventData): Selection.Cell {\n this.currentCell = this.getCell(e, data);\n return this.currentCell;\n }\n\n move(y: number, data: EventData): RevoGrid.PositionItem | null {\n const rgRow = this.getRow(y, data);\n // if rgRow same as previous or below range (-1 = 0) do nothing\n if (this.previousRow === rgRow.itemIndex || rgRow.itemIndex < -1) {\n return null;\n }\n this.previousRow = rgRow.itemIndex;\n return rgRow;\n }\n\n /** Drag stopped, probably cursor outside of document area */\n clear(): void {\n this.currentCell = null;\n this.previousRow = null;\n }\n\n /** Calculate cell based on x, y position */\n getRow(y: number, { el, rows }: EventData): RevoGrid.PositionItem {\n const { top } = el.getBoundingClientRect();\n const topRelative = y - top;\n const rgRow = getItemByPosition(rows, topRelative);\n const absolutePosition = {\n itemIndex: rgRow.itemIndex,\n start: rgRow.start + top,\n end: rgRow.end + top,\n };\n return absolutePosition;\n }\n\n /** Calculate cell based on x, y position */\n getCell({ x, y }: Selection.Cell, { el, rows, cols }: EventData): Selection.Cell {\n const { top, left } = el.getBoundingClientRect();\n const topRelative = y - top;\n const leftRelative = x - left;\n const rgRow = getItemByPosition(rows, topRelative);\n const rgCol = getItemByPosition(cols, leftRelative);\n return { x: rgCol.itemIndex, y: rgRow.itemIndex };\n }\n}\n","import { Component, Method, Event, EventEmitter, Prop, Listen } from '@stencil/core';\nimport debounce from 'lodash/debounce';\n\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport { DataSourceState, setItems } from '../../store/dataSource/data.store';\nimport { DRAGG_TEXT } from '../../utils/consts';\nimport RowOrderService from './rowOrderService';\n\n@Component({ tag: 'revogr-order-editor' })\nexport class OrderEditor {\n private rowOrderService: RowOrderService;\n private moveFunc: ((e: Selection.Cell) => void) | null;\n private rowMoveFunc = debounce((y: number) => {\n const rgRow = this.rowOrderService.move(y, this.getData());\n if (rgRow !== null) {\n this.internalRowDrag.emit(rgRow);\n }\n }, 5);\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n @Prop() parent: HTMLElement;\n @Prop() dimensionRow: Observable<RevoGrid.DimensionSettingsState>;\n @Prop() dimensionCol: Observable<RevoGrid.DimensionSettingsState>;\n\n /** Static stores, not expected to change during component lifetime */\n @Prop() dataStore: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>;\n\n // --------------------------------------------------------------------------\n //\n // Events\n //\n // --------------------------------------------------------------------------\n\n /** Row drag started */\n @Event({ cancelable: true }) internalRowDragStart: EventEmitter<{\n cell: Selection.Cell;\n text: string;\n pos: RevoGrid.PositionItem;\n event: MouseEvent;\n }>;\n\n /** Row drag ended */\n @Event({ cancelable: true }) internalRowDragEnd: EventEmitter;\n\n /** Row move */\n @Event({ cancelable: true }) internalRowDrag: EventEmitter<RevoGrid.PositionItem>;\n\n /** Row mouse move */\n @Event({ cancelable: true }) internalRowMouseMove: EventEmitter<Selection.Cell>;\n\n /** Row dragged, new range ready to be applied */\n @Event({ cancelable: true }) initialRowDropped: EventEmitter<{ from: number; to: number }>;\n\n // --------------------------------------------------------------------------\n //\n // Listeners\n //\n // --------------------------------------------------------------------------\n\n @Listen('mouseleave', { target: 'document' })\n onMouseOut(): void {\n this.clearOrder();\n }\n\n /** Action finished inside of the document */\n @Listen('mouseup', { target: 'document' })\n onMouseUp(e: MouseEvent): void {\n this.endOrder(e);\n }\n\n // --------------------------------------------------------------------------\n //\n // Methods\n //\n // --------------------------------------------------------------------------\n\n @Method() async dragStart(e: MouseEvent): Promise<void> {\n e.preventDefault();\n\n // extra check if previous ended\n if (this.moveFunc) {\n this.clearOrder();\n }\n\n const data = this.getData();\n const cell = this.rowOrderService.startOrder(e, data);\n const pos = this.rowOrderService.getRow(e.y, data);\n const dragStartEvent = this.internalRowDragStart.emit({ cell, text: DRAGG_TEXT, pos, event: e });\n if (dragStartEvent.defaultPrevented) {\n return;\n }\n\n this.moveFunc = (e: MouseEvent) => this.move(e);\n document.addEventListener('mousemove', this.moveFunc);\n }\n\n @Method() async endOrder(e: MouseEvent): Promise<void> {\n this.rowOrderService.endOrder(e, this.getData());\n this.clearOrder();\n }\n\n @Method() async clearOrder(): Promise<void> {\n this.rowOrderService.clear();\n document.removeEventListener('mousemove', this.moveFunc);\n this.moveFunc = null;\n this.internalRowDragEnd.emit();\n }\n\n // --------------------------------------------------------------------------\n //\n // Component methods\n //\n // --------------------------------------------------------------------------\n\n move({ x, y }: { x: number; y: number }): void {\n this.internalRowMouseMove.emit({ x, y });\n this.rowMoveFunc(y);\n }\n\n connectedCallback(): void {\n this.rowOrderService = new RowOrderService({ positionChanged: (f, t) => this.onPositionChanged(f, t) });\n }\n\n private onPositionChanged(from: number, to: number) {\n const dropEvent = this.initialRowDropped.emit({ from, to });\n if (dropEvent.defaultPrevented) {\n return;\n }\n const items = [...this.dataStore.get('items')];\n const toMove = items.splice(from, 1);\n items.splice(to, 0, ...toMove);\n setItems(this.dataStore, items);\n }\n\n private getData() {\n return {\n el: this.parent,\n rows: this.dimensionRow.state,\n cols: this.dimensionCol.state,\n };\n }\n}\n"],"version":3}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"revogr-overlay-selection2.js","mappings":"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","names":["isIterateeCall","toInteger","baseSlice","debounce","slice"],"sources":["src/store/selection/selection.store.service.ts","src/components/overlay/editors/edit.utils.ts","src/components/overlay/keyboard.service.ts","node_modules/lodash/_baseSlice.js","node_modules/lodash/slice.js","src/components/overlay/autofill.service.tsx","src/components/overlay/clipboard.service.tsx","src/components/overlay/revogr-overlay-style.scss?tag=revogr-overlay-selection","src/components/overlay/revogr-overlay-selection.tsx"],"sourcesContent":["import { Edition, Observable, Selection } from '../../interfaces';\nimport { getRange } from './selection.helpers';\nimport Cell = Selection.Cell;\nimport Range = Selection.RangeArea;\n\ninterface Config {\n changeRange(range: Range): boolean;\n focus(focus: Cell, end: Cell): boolean;\n}\n\nexport default class SelectionStoreService {\n constructor(public store: Observable<Selection.SelectionStoreState>, private config: Config) {\n this.store = store;\n }\n\n get edited(): Edition.EditCellStore | null {\n return this.store.get('edit');\n }\n\n get focused(): Cell | null {\n return this.store.get('focus');\n }\n\n get ranged(): Range | null {\n return this.store.get('range');\n }\n\n changeRange(range: Range) {\n return this.config.changeRange(range);\n }\n\n focus(cell?: Cell, isMulti = false) {\n if (!cell) {\n return false;\n }\n let end: Cell = cell;\n\n // range edit\n if (isMulti) {\n let start: Cell | null = this.store.get('focus');\n if (start) {\n return this.config.changeRange(getRange(start, end));\n }\n }\n\n // single focus\n return this.config.focus(cell, end);\n }\n}\n","import { EDIT_INPUT_WR } from '../../../utils/consts';\n\n// is edit input\nexport function isEditInput(el?: HTMLElement) {\n return !!el?.closest(`.${EDIT_INPUT_WR}`);\n}\n","import { Observable, Selection } from '../../interfaces';\nimport { getRange } from '../../store/selection/selection.helpers';\nimport SelectionStoreService from '../../store/selection/selection.store.service';\nimport { codesLetter } from '../../utils/keyCodes';\nimport { isClear, isCtrlKey, isEnterKey, isLetterKey } from '../../utils/keyCodes.utils';\nimport { timeout } from '../../utils/utils';\nimport { EventData, getCoordinate, isAfterLast, isBeforeFirst } from './selection.utils';\n\ntype Config = {\n selectionStoreService: SelectionStoreService;\n selectionStore: Observable<Selection.SelectionStoreState>;\n doEdit(val?: any): void;\n cancelEdit(): void;\n clearCell(): void;\n getData(): any;\n internalPaste(): void;\n};\n\nexport class KeyboardService {\n private ctrlDown = false;\n\n constructor(private sv: Config) {}\n\n async keyDown(e: KeyboardEvent, canRange: boolean) {\n if (!this.sv.selectionStoreService.focused) {\n return;\n }\n if (isCtrlKey(e.keyCode, navigator.platform)) {\n this.ctrlDown = true;\n }\n\n // tab key means same as arrow right\n if (codesLetter.TAB === e.code) {\n this.keyChangeSelection(e, canRange);\n return;\n }\n\n /**\n * IF EDIT MODE\n */\n if (this.sv.selectionStoreService.edited) {\n switch (e.code) {\n case codesLetter.ESCAPE:\n this.sv.cancelEdit();\n break;\n }\n return;\n }\n\n /**\n * IF NOT EDIT MODE\n */\n\n // pressed clear key\n if (isClear(e.code)) {\n this.sv.clearCell();\n return;\n }\n\n // pressed enter\n if (isEnterKey(e.code)) {\n this.sv.doEdit();\n return;\n }\n\n // copy operation\n if (this.isCopy(e)) {\n return;\n }\n\n // paste operation\n if (this.isPaste(e)) {\n this.sv.internalPaste();\n return;\n }\n\n // pressed letter key\n if (isLetterKey(e.keyCode)) {\n this.sv.doEdit(e.key);\n return;\n }\n\n // pressed arrow, change selection position\n if (await this.keyChangeSelection(e, canRange)) {\n return;\n }\n }\n\n async keyChangeSelection(e: KeyboardEvent, canRange: boolean) {\n const data = this.changeDirectionKey(e, canRange);\n if (!data) {\n return false;\n }\n await timeout();\n\n const range = this.sv.selectionStore.get('range');\n const focus = this.sv.selectionStore.get('focus');\n return this.keyPositionChange(data.changes, this.sv.getData(), range, focus, data.isMulti);\n }\n\n keyPositionChange(changes: Partial<Selection.Cell>, eData: EventData, range?: Selection.RangeArea, focus?: Selection.Cell, isMulti = false) {\n if (!range || !focus) {\n return false;\n }\n const data = getCoordinate(range, focus, changes, isMulti);\n if (!data) {\n return false;\n }\n if (isMulti) {\n if (isAfterLast(data.end, eData) || isBeforeFirst(data.start)) {\n return false;\n }\n const range = getRange(data.start, data.end);\n return this.sv.selectionStoreService.changeRange(range);\n }\n return this.sv.selectionStoreService.focus(data.start);\n }\n\n keyUp(e: KeyboardEvent): void {\n if (isCtrlKey(e.keyCode, navigator.platform)) {\n this.ctrlDown = false;\n }\n }\n\n isCopy(e: KeyboardEvent): boolean {\n return this.ctrlDown && e.code == codesLetter.C;\n }\n isPaste(e: KeyboardEvent): boolean {\n return this.ctrlDown && e.code == codesLetter.V;\n }\n\n /** Monitor key direction changes */\n changeDirectionKey(e: KeyboardEvent, canRange: boolean): { changes: Partial<Selection.Cell>; isMulti?: boolean } | void {\n const isMulti: boolean = canRange && e.shiftKey;\n switch (e.code) {\n case codesLetter.TAB:\n case codesLetter.ARROW_UP:\n case codesLetter.ARROW_DOWN:\n case codesLetter.ARROW_LEFT:\n case codesLetter.ARROW_RIGHT:\n e.preventDefault();\n break;\n }\n switch (e.code) {\n case codesLetter.ARROW_UP:\n return { changes: { y: -1 }, isMulti };\n case codesLetter.ARROW_DOWN:\n return { changes: { y: 1 }, isMulti };\n case codesLetter.ARROW_LEFT:\n return { changes: { x: -1 }, isMulti };\n case codesLetter.TAB:\n case codesLetter.ARROW_RIGHT:\n return { changes: { x: 1 }, isMulti };\n }\n }\n}\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n}\n\nmodule.exports = slice;\n","import debounce from 'lodash/debounce';\nimport { DebouncedFunc } from 'lodash';\nimport slice from 'lodash/slice';\n\nimport { h } from '@stencil/core';\nimport { CELL_HANDLER_CLASS } from '../../utils/consts';\nimport { Observable, Selection, RevoGrid, Edition } from '../../interfaces';\nimport { EventData, getCell, getCurrentCell, isAfterLast } from './selection.utils';\nimport { getRange } from '../../store/selection/selection.helpers';\nimport SelectionStoreService from '../../store/selection/selection.store.service';\nimport ColumnService from '../data/columnService';\nimport { DataSourceState, getSourceItem } from '../../store/dataSource/data.store';\n\ntype Config = {\n selectionStoreService: SelectionStoreService;\n dimensionRow: Observable<RevoGrid.DimensionSettingsState>;\n dimensionCol: Observable<RevoGrid.DimensionSettingsState>;\n columnService: ColumnService;\n dataStore: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>;\n\n setTempRange(e: Selection.TempRange | null): Event;\n internalSelectionChanged(e: Selection.ChangedRange): Event;\n internalRangeDataApply(e: Edition.BeforeRangeSaveDataDetails): Event;\n setRange(e: Selection.RangeArea): Event;\n\n getData(): any;\n};\n\nenum AutoFillType {\n selection = 'Selection',\n autoFill = 'AutoFill',\n}\n\nexport class AutoFillService {\n private autoFillType: AutoFillType | null = null;\n private autoFillInitial: Selection.Cell | null = null;\n private autoFillStart: Selection.Cell | null = null;\n private autoFillLast: Selection.Cell | null = null;\n\n private onMouseMoveAutofill: DebouncedFunc<(e: MouseEvent, data: EventData) => void>;\n\n constructor(private sv: Config) {\n\n }\n\n /**\n * Render autofill box\n * @param range\n * @param selectionFocus\n */\n renderAutofill(range: Selection.RangeArea, selectionFocus: Selection.Cell) {\n let handlerStyle;\n if (range) {\n handlerStyle = getCell(range, this.sv.dimensionRow.state, this.sv.dimensionCol.state);\n } else {\n handlerStyle = getCell(\n {\n ...selectionFocus,\n x1: selectionFocus.x,\n y1: selectionFocus.y,\n },\n this.sv.dimensionRow.state,\n this.sv.dimensionCol.state,\n );\n }\n return (\n <div\n class={CELL_HANDLER_CLASS}\n style={{ left: `${handlerStyle.right}px`, top: `${handlerStyle.bottom}px` }}\n onMouseDown={(e: MouseEvent) => this.selectionStart(e, this.sv.getData(), AutoFillType.autoFill)}\n />\n );\n }\n\n get isAutoFill() {\n return !!this.autoFillType;\n }\n\n /** Process mouse move events */\n selectionMouseMove(e: MouseEvent) {\n // initiate mouse move debounce if not present\n if (!this.onMouseMoveAutofill) {\n this.onMouseMoveAutofill = debounce((e: MouseEvent, data: EventData) => this.doAutofillMouseMove(e, data), 5);\n }\n if (this.isAutoFill) {\n this.onMouseMoveAutofill(e, this.sv.getData());\n }\n }\n\n private getFocus() {\n let focus = this.sv.selectionStoreService.focused;\n const range = this.sv.selectionStoreService.ranged;\n if (range) {\n focus = { x: range.x, y: range.y };\n }\n if (!focus && !range) {\n return null;\n }\n return focus;\n }\n\n /**\n * Autofill logic:\n * on mouse move apply based on previous direction (if present)\n */\n private doAutofillMouseMove({ x, y }: MouseEvent, data: EventData) {\n if (!this.autoFillInitial) {\n return;\n }\n let current = getCurrentCell({ x, y }, data);\n\n // first time or direction equal to start(same as first time)\n if (!this.autoFillLast) {\n if (!this.autoFillLast) {\n this.autoFillLast = this.autoFillStart;\n }\n }\n\n // check if not the latest, if latest - do nothing\n if (isAfterLast(current, data)) {\n return;\n }\n this.autoFillLast = current;\n\n const isSame = current.x === this.autoFillInitial.x && current.y === this.autoFillInitial.y;\n // if same as initial - clear\n if (isSame) {\n this.sv.setTempRange(null);\n } else {\n this.sv.setTempRange({\n area: getRange(this.autoFillInitial, this.autoFillLast),\n type: this.autoFillType,\n });\n }\n }\n\n /**\n * Range selection started\n * Mode @param type:\n * Can be triggered from MouseDown selection on element\n * Or can be triggered on corner square drag\n */\n selectionStart(e: MouseEvent, data: EventData, type = AutoFillType.selection) {\n /** Get cell by autofill element */\n const { top, left } = (e.target as HTMLElement).getBoundingClientRect();\n this.autoFillInitial = this.getFocus();\n this.autoFillType = type;\n this.autoFillStart = getCurrentCell({ x: left, y: top }, data);\n e.preventDefault();\n }\n\n /** Clear current range selection */\n clearAutoFillSelection() {\n // Apply autofill values on mouse up\n if (this.autoFillInitial) {\n // Get latest\n this.autoFillInitial = this.getFocus();\n if (this.autoFillType === AutoFillType.autoFill) {\n this.applyRangeWithData(this.autoFillInitial, this.autoFillLast);\n } else {\n this.applyRangeOnly(this.autoFillInitial, this.autoFillLast);\n }\n }\n\n this.autoFillType = null;\n this.autoFillInitial = null;\n this.autoFillLast = null;\n this.autoFillStart = null;\n }\n\n /** Trigger range apply events and handle responses */\n onRangeApply(data: RevoGrid.DataLookup, range: Selection.RangeArea): void {\n const models: RevoGrid.DataLookup = {};\n for (let rowIndex in data) {\n models[rowIndex] = getSourceItem(this.sv.dataStore, parseInt(rowIndex, 10));\n }\n const dataEvent = this.sv.internalRangeDataApply({\n data,\n models,\n type: this.sv.dataStore.get('type'),\n });\n if (!dataEvent.defaultPrevented) {\n this.sv.columnService.applyRangeData(data);\n }\n this.sv.setRange(range);\n }\n\n /** Apply range and copy data during range application */\n private applyRangeWithData(start?: Selection.Cell, end?: Selection.Cell) {\n // no changes to apply\n if (!start || !end) {\n return;\n }\n\n const oldRange = this.sv.selectionStoreService.ranged;\n const newRange = getRange(start, end);\n const columns = [...this.sv.columnService.columns];\n const rangeData: Selection.ChangedRange = {\n type: this.sv.dataStore.get('type'),\n newData: {},\n newRange,\n oldRange,\n newProps: slice(columns, newRange.x, newRange.x1 + 1).map(v => v.prop),\n oldProps: slice(columns, oldRange.x, oldRange.x1 + 1).map(v => v.prop),\n };\n\n rangeData.newData = this.sv.columnService.getRangeData(rangeData);\n const selectionEndEvent = this.sv.internalSelectionChanged(rangeData);\n if (selectionEndEvent.defaultPrevented) {\n this.sv.setTempRange(null);\n return;\n }\n this.onRangeApply(rangeData.newData, newRange);\n }\n\n /** Update range selection ony, no data change (mouse selection) */\n private applyRangeOnly(start?: Selection.Cell, end?: Selection.Cell) {\n // no changes to apply\n if (!start || !end) {\n return;\n }\n\n const newRange = getRange(start, end);\n this.sv.setRange(newRange);\n }\n}\n","import slice from 'lodash/slice';\nimport { h } from '@stencil/core';\nimport SelectionStoreService from '../../store/selection/selection.store.service';\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport { getRange } from '../../store/selection/selection.helpers';\nimport ColumnService from '../data/columnService';\nimport { DataSourceState } from '../../store/dataSource/data.store';\n\ntype Config = {\n selectionStoreService: SelectionStoreService;\n columnService: ColumnService;\n dataStore: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>;\n onRangeApply(data: RevoGrid.DataLookup, range: Selection.RangeArea): void;\n internalCopy(): Event;\n};\n\nexport class ClipboardService {\n private clipboard: HTMLRevogrClipboardElement;\n constructor(private sv: Config) {}\n private onCopy(e: DataTransfer) {\n const canCopy = this.sv.internalCopy();\n if (canCopy.defaultPrevented) {\n return false;\n }\n let focus = this.sv.selectionStoreService.focused;\n let range = this.sv.selectionStoreService.ranged;\n let data: RevoGrid.DataFormat[][];\n if (!range) {\n range = getRange(focus, focus);\n }\n if (range) {\n const columns = [...this.sv.columnService.columns];\n const props = slice(columns, range.x, range.x1 + 1).map(v => v.prop);\n data = this.sv.columnService.copyRangeArray(range, props, this.sv.dataStore);\n }\n this.clipboard.doCopy(e, data);\n return true;\n }\n\n renderClipboard() {\n return <revogr-clipboard onCopyRegion={e => this.onCopy(e.detail)} ref={e => (this.clipboard = e)} onPasteRegion={e => this.onPaste(e.detail)} />;\n }\n\n private onPaste(data: string[][]) {\n const focus = this.sv.selectionStoreService.focused;\n const isEditing = this.sv.selectionStoreService.edited !== null;\n if (!focus || isEditing) {\n return;\n }\n const { changed, range } = this.sv.columnService.getTransformedDataToApply(focus, data);\n this.sv.onRangeApply(changed, range);\n }\n}\n","revogr-overlay-selection {\n display: block;\n position: relative;\n width: 100%;\n\n .autofill-handle {\n $handler-size: 10px;\n position: absolute;\n width: $handler-size;\n height: $handler-size;\n background: $selection-border;\n margin-left: -$handler-size + 1;\n margin-top: -$handler-size + 1;\n border: 1px solid white;\n box-sizing: border-box;\n z-index: 10;\n cursor: crosshair;\n }\n\n .selection-border-range {\n position: absolute;\n pointer-events: none;\n z-index: 9;\n }\n\n .selection-border-range {\n @include selection();\n }\n\n revogr-edit {\n z-index: 10;\n }\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Prop, VNode, Element, Watch } from '@stencil/core';\n\nimport { Edition, Observable, RevoGrid, Selection } from '../../interfaces';\nimport ColumnService from '../data/columnService';\nimport SelectionStoreService from '../../store/selection/selection.store.service';\nimport { codesLetter } from '../../utils/keyCodes';\nimport { SELECTION_BORDER_CLASS } from '../../utils/consts';\nimport { DataSourceState } from '../../store/dataSource/data.store';\nimport { isRangeSingleCell } from '../../store/selection/selection.helpers';\nimport { getCurrentCell, getElStyle } from './selection.utils';\nimport { isEditInput } from './editors/edit.utils';\nimport { KeyboardService } from './keyboard.service';\nimport { AutoFillService } from './autofill.service';\nimport { ClipboardService } from './clipboard.service';\n\n@Component({\n tag: 'revogr-overlay-selection',\n styleUrl: 'revogr-overlay-style.scss',\n})\nexport class OverlaySelection {\n protected columnService: ColumnService;\n\n protected selectionStoreService: SelectionStoreService;\n private keyboardService: KeyboardService | null = null;\n private autoFillService: AutoFillService | null = null;\n private clipboardService: ClipboardService | null = null;\n private orderEditor: HTMLRevogrOrderEditorElement;\n\n @Element() element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n @Prop() readonly: boolean;\n @Prop() range: boolean;\n @Prop() canDrag: boolean;\n @Prop() useClipboard: boolean;\n\n /** Dynamic stores */\n @Prop() selectionStore: Observable<Selection.SelectionStoreState>;\n @Prop() dimensionRow: Observable<RevoGrid.DimensionSettingsState>;\n @Prop() dimensionCol: Observable<RevoGrid.DimensionSettingsState>;\n\n /** Static stores, not expected to change during component lifetime */\n @Prop() dataStore: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>;\n\n @Prop() colData: Observable<DataSourceState<RevoGrid.ColumnRegular, RevoGrid.DimensionCols>>;\n /** Last cell position */\n @Prop() lastCell: Selection.Cell;\n /** Custom editors register */\n @Prop() editors: Edition.Editors;\n\n // --------------------------------------------------------------------------\n //\n // Events\n //\n // --------------------------------------------------------------------------\n\n @Event({ cancelable: true }) internalCopy: EventEmitter;\n @Event({ cancelable: true }) internalPaste: EventEmitter;\n\n @Event({ cancelable: true }) internalCellEdit: EventEmitter<Edition.BeforeSaveDataDetails>;\n @Event({ cancelable: true }) internalFocusCell: EventEmitter<Edition.BeforeSaveDataDetails>;\n\n @Event({ bubbles: false }) setEdit: EventEmitter<Edition.BeforeEdit>;\n /**\n * Used for editors support when close requested\n */\n @Event() cancelEdit: EventEmitter;\n @Event() setRange: EventEmitter<Selection.RangeArea>;\n @Event() setTempRange: EventEmitter<Selection.TempRange | null>;\n\n @Event({ bubbles: false }) focusCell: EventEmitter<Selection.FocusedCells>;\n /** Selection range changed */\n @Event({ cancelable: true }) internalSelectionChanged: EventEmitter<Selection.ChangedRange>;\n\n /** Range data apply */\n @Event({ cancelable: true }) internalRangeDataApply: EventEmitter<Edition.BeforeRangeSaveDataDetails>;\n\n // --------------------------------------------------------------------------\n //\n // Listeners\n //\n // --------------------------------------------------------------------------\n\n @Listen('mousemove', { target: 'document' }) onMouseMove(e: MouseEvent) {\n if (this.selectionStoreService.focused) {\n this.autoFillService.selectionMouseMove(e);\n }\n }\n\n /** Pointer left document, clear any active operation */\n @Listen('mouseleave', { target: 'document' }) onMouseOut() {\n this.autoFillService.clearAutoFillSelection();\n }\n\n /** Action finished inside of the document */\n @Listen('mouseup', { target: 'document' }) onMouseUp() {\n this.autoFillService.clearAutoFillSelection();\n }\n\n /** Row drag started */\n @Listen('dragStartCell') onCellDrag(e: CustomEvent<MouseEvent>) {\n this.orderEditor?.dragStart(e.detail);\n }\n\n /** Recived keyboard down from element */\n @Listen('keyup', { target: 'document' }) onKeyUp(e: KeyboardEvent) {\n this.keyboardService?.keyUp(e);\n }\n\n /** Recived keyboard down from element */\n @Listen('keydown', { target: 'document' }) onKeyDown(e: KeyboardEvent) {\n if (e.defaultPrevented) {\n return;\n }\n this.keyboardService?.keyDown(e, this.range);\n }\n\n /** Create selection store */\n @Watch('selectionStore') selectionServiceSet(s: Observable<Selection.SelectionStoreState>) {\n this.selectionStoreService = new SelectionStoreService(s, {\n changeRange: range => !this.setRange.emit(range)?.defaultPrevented,\n focus: (focus, end) => {\n const focused = { focus, end };\n const { defaultPrevented } = this.internalFocusCell.emit(this.columnService.getSaveData(focus.y, focus.x));\n if (defaultPrevented) {\n return false;\n }\n return !this.focusCell.emit(focused)?.defaultPrevented;\n },\n });\n\n this.keyboardService = new KeyboardService({\n selectionStoreService: this.selectionStoreService,\n selectionStore: s,\n doEdit: (v) => this.doEdit(v),\n cancelEdit: () => this.closeEdit(),\n clearCell: () => this.clearCell(),\n getData: () => this.getData(),\n internalPaste: () => this.internalPaste.emit()\n });\n this.createAutoFillService();\n this.createClipboardService();\n }\n\n @Watch('dimensionRow')\n @Watch('dimensionCol')\n createAutoFillService() {\n this.autoFillService = new AutoFillService({\n selectionStoreService: this.selectionStoreService,\n dimensionRow: this.dimensionRow,\n dimensionCol: this.dimensionCol,\n columnService: this.columnService,\n dataStore: this.dataStore,\n\n setTempRange: (e) => this.setTempRange.emit(e),\n internalSelectionChanged: (e) => this.internalSelectionChanged.emit(e),\n internalRangeDataApply: (e) => this.internalRangeDataApply.emit(e),\n setRange: (e) => this.setRange.emit(e),\n getData: () => this.getData(),\n });\n }\n\n @Watch('dataStore')\n @Watch('colData')\n columnServiceSet() {\n this.columnService?.destroy();\n this.columnService = new ColumnService(this.dataStore, this.colData);\n this.createAutoFillService();\n this.createClipboardService();\n }\n\n createClipboardService() {\n this.clipboardService = new ClipboardService({\n selectionStoreService: this.selectionStoreService,\n columnService: this.columnService,\n dataStore: this.dataStore,\n onRangeApply: (d, r) => this.autoFillService.onRangeApply(d, r),\n internalCopy: () => this.internalCopy.emit()\n });\n }\n\n connectedCallback() {\n this.columnServiceSet();\n this.selectionServiceSet(this.selectionStore);\n }\n\n disconnectedCallback() {\n this.columnService?.destroy();\n }\n\n private renderRange(range: Selection.RangeArea) {\n const style = getElStyle(range, this.dimensionRow.state, this.dimensionCol.state);\n return [<div class={SELECTION_BORDER_CLASS} style={style} />];\n }\n\n private renderEditCell() {\n // if can edit\n const editCell = this.selectionStore.get('edit');\n if (this.readonly || !editCell) {\n return;\n }\n const val = editCell.val || this.columnService.getCellData(editCell.y, editCell.x);\n const editable = {\n ...editCell,\n ...this.columnService.getSaveData(editCell.y, editCell.x, val),\n };\n\n const style = getElStyle({ ...editCell, x1: editCell.x, y1: editCell.y }, this.dimensionRow.state, this.dimensionCol.state);\n return (\n <revogr-edit\n onCellEdit={e => this.onCellEdit(e.detail)}\n onCloseEdit={e => this.closeEdit(e)}\n editCell={editable}\n column={this.columnService.columns[editCell.x]}\n editor={this.columnService.getCellEditor(editCell.y, editCell.x, this.editors)}\n style={style}\n />\n );\n }\n\n render() {\n const range = this.selectionStoreService.ranged;\n const selectionFocus = this.selectionStoreService.focused;\n const els: VNode[] = [];\n if ((range || selectionFocus) && this.useClipboard) {\n els.push(this.clipboardService.renderClipboard());\n }\n\n if (range) {\n els.push(...this.renderRange(range));\n }\n\n const editCell = this.renderEditCell();\n if (editCell) {\n els.push(editCell);\n }\n if (selectionFocus && !this.readonly && !editCell && this.range) {\n els.push(this.autoFillService.renderAutofill(range, selectionFocus));\n }\n\n if (this.canDrag) {\n els.push(\n <revogr-order-editor\n ref={e => (this.orderEditor = e)}\n dataStore={this.dataStore}\n dimensionRow={this.dimensionRow}\n dimensionCol={this.dimensionCol}\n parent={this.element}\n onInternalRowDragStart={e => this.onRowDragStart(e)}\n />,\n );\n }\n return (\n <Host onDblClick={() => this.doEdit()} onMouseDown={(e: MouseEvent) => this.onElementMouseDown(e)}>\n {els}\n <slot name=\"data\" />\n </Host>\n );\n }\n\n protected onElementMouseDown(e: MouseEvent) {\n // Ignore focus if clicked input\n if (isEditInput(e.target as HTMLElement | undefined)) {\n return;\n }\n const data = this.getData();\n if (e.defaultPrevented) {\n return;\n }\n // Regular cell click\n const focusCell = getCurrentCell({ x: e.x, y: e.y }, data);\n this.selectionStoreService.focus(focusCell, this.range && e.shiftKey);\n\n // Initiate autofill selection\n if (this.range) {\n this.autoFillService.selectionStart(e, data);\n }\n }\n\n protected doEdit(val = '') {\n if (this.canEdit()) {\n const editCell = this.selectionStore.get('focus');\n const data = this.columnService.getSaveData(editCell.y, editCell.x);\n this.setEdit?.emit({\n ...data,\n val,\n });\n }\n }\n\n /**\n * Close editor event triggered\n * @param details - if requires focus next\n */\n private closeEdit(e?: CustomEvent<boolean>) {\n this.cancelEdit.emit();\n if (e?.detail) {\n this.focusNext();\n }\n }\n\n private async focusNext() {\n const canFocus = await this.keyboardService.keyChangeSelection(\n new KeyboardEvent('keydown', {\n code: codesLetter.ARROW_DOWN,\n }),\n this.range\n );\n if (!canFocus) {\n this.closeEdit();\n }\n }\n\n protected clearCell() {\n if (this.selectionStoreService.ranged && !isRangeSingleCell(this.selectionStoreService.ranged)) {\n const data = this.columnService.getRangeStaticData(this.selectionStoreService.ranged, '');\n this.autoFillService.onRangeApply(data, this.selectionStoreService.ranged);\n } else if (this.canEdit()) {\n const focused = this.selectionStoreService.focused;\n this.onCellEdit({ rgRow: focused.y, rgCol: focused.x, val: '' }, true);\n }\n }\n\n /** Edit finished, close cell and save */\n protected onCellEdit(e: Edition.SaveDataDetails, clear = false) {\n const dataToSave = this.columnService.getSaveData(e.rgRow, e.rgCol, e.val);\n this.internalCellEdit.emit(dataToSave);\n // if not clear navigate to next cell after edit\n if (!clear && !e.preventFocus) {\n this.focusNext();\n }\n }\n\n private onRowDragStart({ detail }: CustomEvent<{ cell: Selection.Cell; text: string }>) {\n detail.text = this.columnService.getCellData(detail.cell.y, detail.cell.x);\n }\n\n /** Check if edit possible */\n protected canEdit() {\n if (this.readonly) {\n return false;\n }\n const editCell = this.selectionStoreService.focused;\n return editCell && !this.columnService?.isReadOnly(editCell.y, editCell.x);\n }\n\n /** Collect data from element */\n protected getData() {\n return {\n el: this.element,\n rows: this.dimensionRow.state,\n cols: this.dimensionCol.state,\n lastCell: this.lastCell,\n };\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"revogr-overlay-selection2.js","mappings":"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","names":["isIterateeCall","toInteger","baseSlice","debounce","slice"],"sources":["src/store/selection/selection.store.service.ts","src/components/overlay/editors/edit.utils.ts","src/components/overlay/keyboard.service.ts","node_modules/lodash/_baseSlice.js","node_modules/lodash/slice.js","src/components/overlay/autofill.service.tsx","src/components/overlay/clipboard.service.tsx","src/components/overlay/revogr-overlay-style.scss?tag=revogr-overlay-selection","src/components/overlay/revogr-overlay-selection.tsx"],"sourcesContent":["import { Edition, Observable, Selection } from '../../interfaces';\nimport { getRange } from './selection.helpers';\nimport Cell = Selection.Cell;\nimport Range = Selection.RangeArea;\n\ninterface Config {\n changeRange(range: Range): boolean;\n focus(focus: Cell, end: Cell): boolean;\n}\n\nexport default class SelectionStoreService {\n constructor(public store: Observable<Selection.SelectionStoreState>, private config: Config) {\n this.store = store;\n }\n\n get edited(): Edition.EditCellStore | null {\n return this.store.get('edit');\n }\n\n get focused(): Cell | null {\n return this.store.get('focus');\n }\n\n get ranged(): Range | null {\n return this.store.get('range');\n }\n\n changeRange(range: Range) {\n return this.config.changeRange(range);\n }\n\n focus(cell?: Cell, isMulti = false) {\n if (!cell) {\n return false;\n }\n let end: Cell = cell;\n\n // range edit\n if (isMulti) {\n let start: Cell | null = this.store.get('focus');\n if (start) {\n return this.config.changeRange(getRange(start, end));\n }\n }\n\n // single focus\n return this.config.focus(cell, end);\n }\n}\n","import { EDIT_INPUT_WR } from '../../../utils/consts';\n\n// is edit input\nexport function isEditInput(el?: HTMLElement) {\n return !!el?.closest(`.${EDIT_INPUT_WR}`);\n}\n","import { Observable, Selection } from '../../interfaces';\nimport { getRange } from '../../store/selection/selection.helpers';\nimport SelectionStoreService from '../../store/selection/selection.store.service';\nimport { codesLetter } from '../../utils/keyCodes';\nimport { isClear, isCtrlKey, isEnterKey, isLetterKey } from '../../utils/keyCodes.utils';\nimport { timeout } from '../../utils/utils';\nimport { EventData, getCoordinate, isAfterLast, isBeforeFirst } from './selection.utils';\n\ntype Config = {\n selectionStoreService: SelectionStoreService;\n selectionStore: Observable<Selection.SelectionStoreState>;\n doEdit(val?: any): void;\n cancelEdit(): void;\n clearCell(): void;\n getData(): any;\n internalPaste(): void;\n};\n\nexport class KeyboardService {\n private ctrlDown = false;\n\n constructor(private sv: Config) {}\n\n async keyDown(e: KeyboardEvent, canRange: boolean) {\n if (!this.sv.selectionStoreService.focused) {\n return;\n }\n if (isCtrlKey(e.keyCode, navigator.platform)) {\n this.ctrlDown = true;\n }\n\n // tab key means same as arrow right\n if (codesLetter.TAB === e.code) {\n this.keyChangeSelection(e, canRange);\n return;\n }\n\n /**\n * IF EDIT MODE\n */\n if (this.sv.selectionStoreService.edited) {\n switch (e.code) {\n case codesLetter.ESCAPE:\n this.sv.cancelEdit();\n break;\n }\n return;\n }\n\n /**\n * IF NOT EDIT MODE\n */\n\n // pressed clear key\n if (isClear(e.code)) {\n this.sv.clearCell();\n return;\n }\n\n // pressed enter\n if (isEnterKey(e.code)) {\n this.sv.doEdit();\n return;\n }\n\n // copy operation\n if (this.isCopy(e)) {\n return;\n }\n\n // paste operation\n if (this.isPaste(e)) {\n this.sv.internalPaste();\n return;\n }\n\n // pressed letter key\n if (isLetterKey(e.keyCode)) {\n this.sv.doEdit(e.key);\n return;\n }\n\n // pressed arrow, change selection position\n if (await this.keyChangeSelection(e, canRange)) {\n return;\n }\n }\n\n async keyChangeSelection(e: KeyboardEvent, canRange: boolean) {\n const data = this.changeDirectionKey(e, canRange);\n if (!data) {\n return false;\n }\n await timeout();\n\n const range = this.sv.selectionStore.get('range');\n const focus = this.sv.selectionStore.get('focus');\n return this.keyPositionChange(data.changes, this.sv.getData(), range, focus, data.isMulti);\n }\n\n keyPositionChange(changes: Partial<Selection.Cell>, eData: EventData, range?: Selection.RangeArea, focus?: Selection.Cell, isMulti = false) {\n if (!range || !focus) {\n return false;\n }\n const data = getCoordinate(range, focus, changes, isMulti);\n if (!data) {\n return false;\n }\n if (isMulti) {\n if (isAfterLast(data.end, eData) || isBeforeFirst(data.start)) {\n return false;\n }\n const range = getRange(data.start, data.end);\n return this.sv.selectionStoreService.changeRange(range);\n }\n return this.sv.selectionStoreService.focus(data.start);\n }\n\n keyUp(e: KeyboardEvent): void {\n if (isCtrlKey(e.keyCode, navigator.platform)) {\n this.ctrlDown = false;\n }\n }\n\n isCopy(e: KeyboardEvent): boolean {\n return this.ctrlDown && e.code == codesLetter.C;\n }\n isPaste(e: KeyboardEvent): boolean {\n return this.ctrlDown && e.code == codesLetter.V;\n }\n\n /** Monitor key direction changes */\n changeDirectionKey(e: KeyboardEvent, canRange: boolean): { changes: Partial<Selection.Cell>; isMulti?: boolean } | void {\n const isMulti: boolean = canRange && e.shiftKey;\n switch (e.code) {\n case codesLetter.TAB:\n case codesLetter.ARROW_UP:\n case codesLetter.ARROW_DOWN:\n case codesLetter.ARROW_LEFT:\n case codesLetter.ARROW_RIGHT:\n e.preventDefault();\n break;\n }\n switch (e.code) {\n case codesLetter.ARROW_UP:\n return { changes: { y: -1 }, isMulti };\n case codesLetter.ARROW_DOWN:\n return { changes: { y: 1 }, isMulti };\n case codesLetter.ARROW_LEFT:\n return { changes: { x: -1 }, isMulti };\n case codesLetter.TAB:\n case codesLetter.ARROW_RIGHT:\n return { changes: { x: 1 }, isMulti };\n }\n }\n}\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n}\n\nmodule.exports = slice;\n","import debounce from 'lodash/debounce';\nimport { DebouncedFunc } from 'lodash';\nimport slice from 'lodash/slice';\n\nimport { h } from '@stencil/core';\nimport { CELL_HANDLER_CLASS } from '../../utils/consts';\nimport { Observable, Selection, RevoGrid, Edition } from '../../interfaces';\nimport { EventData, getCell, getCurrentCell, isAfterLast } from './selection.utils';\nimport { getRange } from '../../store/selection/selection.helpers';\nimport SelectionStoreService from '../../store/selection/selection.store.service';\nimport ColumnService from '../data/columnService';\nimport { DataSourceState, getSourceItem } from '../../store/dataSource/data.store';\n\ntype Config = {\n selectionStoreService: SelectionStoreService;\n dimensionRow: Observable<RevoGrid.DimensionSettingsState>;\n dimensionCol: Observable<RevoGrid.DimensionSettingsState>;\n columnService: ColumnService;\n dataStore: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>;\n\n setTempRange(e: Selection.TempRange | null): Event;\n internalSelectionChanged(e: Selection.ChangedRange): Event;\n internalRangeDataApply(e: Edition.BeforeRangeSaveDataDetails): Event;\n setRange(e: Selection.RangeArea): Event;\n\n getData(): any;\n};\n\nenum AutoFillType {\n selection = 'Selection',\n autoFill = 'AutoFill',\n}\n\nexport class AutoFillService {\n private autoFillType: AutoFillType | null = null;\n private autoFillInitial: Selection.Cell | null = null;\n private autoFillStart: Selection.Cell | null = null;\n private autoFillLast: Selection.Cell | null = null;\n\n private onMouseMoveAutofill: DebouncedFunc<(e: MouseEvent, data: EventData) => void>;\n\n constructor(private sv: Config) {\n\n }\n\n /**\n * Render autofill box\n * @param range\n * @param selectionFocus\n */\n renderAutofill(range: Selection.RangeArea, selectionFocus: Selection.Cell) {\n let handlerStyle;\n if (range) {\n handlerStyle = getCell(range, this.sv.dimensionRow.state, this.sv.dimensionCol.state);\n } else {\n handlerStyle = getCell(\n {\n ...selectionFocus,\n x1: selectionFocus.x,\n y1: selectionFocus.y,\n },\n this.sv.dimensionRow.state,\n this.sv.dimensionCol.state,\n );\n }\n return (\n <div\n class={CELL_HANDLER_CLASS}\n style={{ left: `${handlerStyle.right}px`, top: `${handlerStyle.bottom}px` }}\n onMouseDown={(e: MouseEvent) => this.selectionStart(e, this.sv.getData(), AutoFillType.autoFill)}\n />\n );\n }\n\n get isAutoFill() {\n return !!this.autoFillType;\n }\n\n /** Process mouse move events */\n selectionMouseMove(e: MouseEvent) {\n // initiate mouse move debounce if not present\n if (!this.onMouseMoveAutofill) {\n this.onMouseMoveAutofill = debounce((e: MouseEvent, data: EventData) => this.doAutofillMouseMove(e, data), 5);\n }\n if (this.isAutoFill) {\n this.onMouseMoveAutofill(e, this.sv.getData());\n }\n }\n\n private getFocus() {\n let focus = this.sv.selectionStoreService.focused;\n const range = this.sv.selectionStoreService.ranged;\n if (range) {\n focus = { x: range.x, y: range.y };\n }\n if (!focus && !range) {\n return null;\n }\n return focus;\n }\n\n /**\n * Autofill logic:\n * on mouse move apply based on previous direction (if present)\n */\n private doAutofillMouseMove({ x, y }: MouseEvent, data: EventData) {\n if (!this.autoFillInitial) {\n return;\n }\n let current = getCurrentCell({ x, y }, data);\n\n // first time or direction equal to start(same as first time)\n if (!this.autoFillLast) {\n if (!this.autoFillLast) {\n this.autoFillLast = this.autoFillStart;\n }\n }\n\n // check if not the latest, if latest - do nothing\n if (isAfterLast(current, data)) {\n return;\n }\n this.autoFillLast = current;\n\n const isSame = current.x === this.autoFillInitial.x && current.y === this.autoFillInitial.y;\n // if same as initial - clear\n if (isSame) {\n this.sv.setTempRange(null);\n } else {\n this.sv.setTempRange({\n area: getRange(this.autoFillInitial, this.autoFillLast),\n type: this.autoFillType,\n });\n }\n }\n\n /**\n * Range selection started\n * Mode @param type:\n * Can be triggered from MouseDown selection on element\n * Or can be triggered on corner square drag\n */\n selectionStart(e: MouseEvent, data: EventData, type = AutoFillType.selection) {\n /** Get cell by autofill element */\n const { top, left } = (e.target as HTMLElement).getBoundingClientRect();\n this.autoFillInitial = this.getFocus();\n this.autoFillType = type;\n this.autoFillStart = getCurrentCell({ x: left, y: top }, data);\n e.preventDefault();\n }\n\n /** Clear current range selection */\n clearAutoFillSelection() {\n // Apply autofill values on mouse up\n if (this.autoFillInitial) {\n // Get latest\n this.autoFillInitial = this.getFocus();\n if (this.autoFillType === AutoFillType.autoFill) {\n this.applyRangeWithData(this.autoFillInitial, this.autoFillLast);\n } else {\n this.applyRangeOnly(this.autoFillInitial, this.autoFillLast);\n }\n }\n\n this.autoFillType = null;\n this.autoFillInitial = null;\n this.autoFillLast = null;\n this.autoFillStart = null;\n }\n\n /** Trigger range apply events and handle responses */\n onRangeApply(data: RevoGrid.DataLookup, range: Selection.RangeArea): void {\n const models: RevoGrid.DataLookup = {};\n for (let rowIndex in data) {\n models[rowIndex] = getSourceItem(this.sv.dataStore, parseInt(rowIndex, 10));\n }\n const dataEvent = this.sv.internalRangeDataApply({\n data,\n models,\n type: this.sv.dataStore.get('type'),\n });\n if (!dataEvent.defaultPrevented) {\n this.sv.columnService.applyRangeData(data);\n }\n this.sv.setRange(range);\n }\n\n /** Apply range and copy data during range application */\n private applyRangeWithData(start?: Selection.Cell, end?: Selection.Cell) {\n // no changes to apply\n if (!start || !end) {\n return;\n }\n\n const oldRange = this.sv.selectionStoreService.ranged;\n const newRange = getRange(start, end);\n const columns = [...this.sv.columnService.columns];\n const rangeData: Selection.ChangedRange = {\n type: this.sv.dataStore.get('type'),\n newData: {},\n newRange,\n oldRange,\n newProps: slice(columns, newRange.x, newRange.x1 + 1).map(v => v.prop),\n oldProps: slice(columns, oldRange.x, oldRange.x1 + 1).map(v => v.prop),\n };\n\n rangeData.newData = this.sv.columnService.getRangeData(rangeData);\n const selectionEndEvent = this.sv.internalSelectionChanged(rangeData);\n if (selectionEndEvent.defaultPrevented) {\n this.sv.setTempRange(null);\n return;\n }\n this.onRangeApply(rangeData.newData, newRange);\n }\n\n /** Update range selection ony, no data change (mouse selection) */\n private applyRangeOnly(start?: Selection.Cell, end?: Selection.Cell) {\n // no changes to apply\n if (!start || !end) {\n return;\n }\n\n const newRange = getRange(start, end);\n this.sv.setRange(newRange);\n }\n}\n","import slice from 'lodash/slice';\nimport { h } from '@stencil/core';\nimport SelectionStoreService from '../../store/selection/selection.store.service';\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport { getRange } from '../../store/selection/selection.helpers';\nimport ColumnService from '../data/columnService';\nimport { DataSourceState } from '../../store/dataSource/data.store';\n\ntype Config = {\n selectionStoreService: SelectionStoreService;\n columnService: ColumnService;\n dataStore: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>;\n onRangeApply(data: RevoGrid.DataLookup, range: Selection.RangeArea): void;\n internalCopy(): Event;\n};\n\nexport class ClipboardService {\n private clipboard: HTMLRevogrClipboardElement;\n constructor(private sv: Config) {}\n private onCopy(e: DataTransfer) {\n const canCopy = this.sv.internalCopy();\n if (canCopy.defaultPrevented) {\n return false;\n }\n let focus = this.sv.selectionStoreService.focused;\n let range = this.sv.selectionStoreService.ranged;\n let data: RevoGrid.DataFormat[][];\n if (!range) {\n range = getRange(focus, focus);\n }\n if (range) {\n const columns = [...this.sv.columnService.columns];\n const props = slice(columns, range.x, range.x1 + 1).map(v => v.prop);\n data = this.sv.columnService.copyRangeArray(range, props, this.sv.dataStore);\n }\n this.clipboard.doCopy(e, data);\n return true;\n }\n\n renderClipboard() {\n return <revogr-clipboard onCopyRegion={e => this.onCopy(e.detail)} ref={e => (this.clipboard = e)} onPasteRegion={e => this.onPaste(e.detail)} />;\n }\n\n private onPaste(data: string[][]) {\n const focus = this.sv.selectionStoreService.focused;\n const isEditing = this.sv.selectionStoreService.edited !== null;\n if (!focus || isEditing) {\n return;\n }\n const { changed, range } = this.sv.columnService.getTransformedDataToApply(focus, data);\n this.sv.onRangeApply(changed, range);\n }\n}\n","revogr-overlay-selection {\n display: block;\n position: relative;\n width: 100%;\n\n .autofill-handle {\n $handler-size: 10px;\n position: absolute;\n width: $handler-size;\n height: $handler-size;\n background: $selection-border;\n margin-left: -$handler-size + 1;\n margin-top: -$handler-size + 1;\n border: 1px solid white;\n box-sizing: border-box;\n z-index: 10;\n cursor: crosshair;\n }\n\n .selection-border-range {\n position: absolute;\n pointer-events: none;\n z-index: 9;\n }\n\n .selection-border-range {\n @include selection();\n }\n\n revogr-edit {\n z-index: 10;\n }\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Prop, VNode, Element, Watch } from '@stencil/core';\n\nimport { Edition, Observable, RevoGrid, Selection } from '../../interfaces';\nimport ColumnService from '../data/columnService';\nimport SelectionStoreService from '../../store/selection/selection.store.service';\nimport { codesLetter } from '../../utils/keyCodes';\nimport { SELECTION_BORDER_CLASS } from '../../utils/consts';\nimport { DataSourceState } from '../../store/dataSource/data.store';\nimport { isRangeSingleCell } from '../../store/selection/selection.helpers';\nimport { getCurrentCell, getElStyle } from './selection.utils';\nimport { isEditInput } from './editors/edit.utils';\nimport { KeyboardService } from './keyboard.service';\nimport { AutoFillService } from './autofill.service';\nimport { ClipboardService } from './clipboard.service';\n\n@Component({\n tag: 'revogr-overlay-selection',\n styleUrl: 'revogr-overlay-style.scss',\n})\nexport class OverlaySelection {\n protected columnService: ColumnService;\n\n protected selectionStoreService: SelectionStoreService;\n private keyboardService: KeyboardService | null = null;\n private autoFillService: AutoFillService | null = null;\n private clipboardService: ClipboardService | null = null;\n private orderEditor: HTMLRevogrOrderEditorElement;\n\n @Element() element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n @Prop() readonly: boolean;\n @Prop() range: boolean;\n @Prop() canDrag: boolean;\n @Prop() useClipboard: boolean;\n\n /** Dynamic stores */\n @Prop() selectionStore: Observable<Selection.SelectionStoreState>;\n @Prop() dimensionRow: Observable<RevoGrid.DimensionSettingsState>;\n @Prop() dimensionCol: Observable<RevoGrid.DimensionSettingsState>;\n\n /** Static stores, not expected to change during component lifetime */\n @Prop() dataStore: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>;\n\n @Prop() colData: Observable<DataSourceState<RevoGrid.ColumnRegular, RevoGrid.DimensionCols>>;\n /** Last cell position */\n @Prop() lastCell: Selection.Cell;\n /** Custom editors register */\n @Prop() editors: Edition.Editors;\n\n // --------------------------------------------------------------------------\n //\n // Events\n //\n // --------------------------------------------------------------------------\n\n @Event({ cancelable: true }) internalCopy: EventEmitter;\n @Event({ cancelable: true }) internalPaste: EventEmitter;\n\n @Event({ cancelable: true }) internalCellEdit: EventEmitter<Edition.BeforeSaveDataDetails>;\n @Event({ cancelable: true }) internalFocusCell: EventEmitter<Edition.BeforeSaveDataDetails>;\n\n @Event({ bubbles: false }) setEdit: EventEmitter<Edition.BeforeEdit>;\n /**\n * Used for editors support when close requested\n */\n @Event() cancelEdit: EventEmitter;\n @Event() setRange: EventEmitter<Selection.RangeArea>;\n @Event() setTempRange: EventEmitter<Selection.TempRange | null>;\n\n @Event({ bubbles: false }) focusCell: EventEmitter<Selection.FocusedCells>;\n /** Selection range changed */\n @Event({ cancelable: true }) internalSelectionChanged: EventEmitter<Selection.ChangedRange>;\n\n /** Range data apply */\n @Event({ cancelable: true }) internalRangeDataApply: EventEmitter<Edition.BeforeRangeSaveDataDetails>;\n\n // --------------------------------------------------------------------------\n //\n // Listeners\n //\n // --------------------------------------------------------------------------\n\n @Listen('mousemove', { target: 'document' }) onMouseMove(e: MouseEvent) {\n if (this.selectionStoreService.focused) {\n this.autoFillService.selectionMouseMove(e);\n }\n }\n\n /** Pointer left document, clear any active operation */\n @Listen('mouseleave', { target: 'document' }) onMouseOut() {\n this.autoFillService.clearAutoFillSelection();\n }\n\n /** Action finished inside of the document */\n @Listen('mouseup', { target: 'document' }) onMouseUp() {\n this.autoFillService.clearAutoFillSelection();\n }\n\n /** Row drag started */\n @Listen('dragStartCell') onCellDrag(e: CustomEvent<MouseEvent>) {\n this.orderEditor?.dragStart(e.detail);\n }\n\n /** Recived keyboard down from element */\n @Listen('keyup', { target: 'document' }) onKeyUp(e: KeyboardEvent) {\n this.keyboardService?.keyUp(e);\n }\n\n /** Recived keyboard down from element */\n @Listen('keydown', { target: 'document' }) onKeyDown(e: KeyboardEvent) {\n if (e.defaultPrevented) {\n return;\n }\n this.keyboardService?.keyDown(e, this.range);\n }\n\n /** Create selection store */\n @Watch('selectionStore') selectionServiceSet(s: Observable<Selection.SelectionStoreState>) {\n this.selectionStoreService = new SelectionStoreService(s, {\n changeRange: range => !this.setRange.emit(range)?.defaultPrevented,\n focus: (focus, end) => {\n const focused = { focus, end };\n const { defaultPrevented } = this.internalFocusCell.emit(this.columnService.getSaveData(focus.y, focus.x));\n if (defaultPrevented) {\n return false;\n }\n return !this.focusCell.emit(focused)?.defaultPrevented;\n },\n });\n\n this.keyboardService = new KeyboardService({\n selectionStoreService: this.selectionStoreService,\n selectionStore: s,\n doEdit: (v) => this.doEdit(v),\n cancelEdit: () => this.closeEdit(),\n clearCell: () => this.clearCell(),\n getData: () => this.getData(),\n internalPaste: () => this.internalPaste.emit()\n });\n this.createAutoFillService();\n this.createClipboardService();\n }\n\n @Watch('dimensionRow')\n @Watch('dimensionCol')\n createAutoFillService() {\n this.autoFillService = new AutoFillService({\n selectionStoreService: this.selectionStoreService,\n dimensionRow: this.dimensionRow,\n dimensionCol: this.dimensionCol,\n columnService: this.columnService,\n dataStore: this.dataStore,\n\n setTempRange: (e) => this.setTempRange.emit(e),\n internalSelectionChanged: (e) => this.internalSelectionChanged.emit(e),\n internalRangeDataApply: (e) => this.internalRangeDataApply.emit(e),\n setRange: (e) => this.setRange.emit(e),\n getData: () => this.getData(),\n });\n }\n\n @Watch('dataStore')\n @Watch('colData')\n columnServiceSet() {\n this.columnService?.destroy();\n this.columnService = new ColumnService(this.dataStore, this.colData);\n this.createAutoFillService();\n this.createClipboardService();\n }\n\n createClipboardService() {\n this.clipboardService = new ClipboardService({\n selectionStoreService: this.selectionStoreService,\n columnService: this.columnService,\n dataStore: this.dataStore,\n onRangeApply: (d, r) => this.autoFillService.onRangeApply(d, r),\n internalCopy: () => this.internalCopy.emit()\n });\n }\n\n connectedCallback() {\n this.columnServiceSet();\n this.selectionServiceSet(this.selectionStore);\n }\n\n disconnectedCallback() {\n this.columnService?.destroy();\n }\n\n private renderRange(range: Selection.RangeArea) {\n const style = getElStyle(range, this.dimensionRow.state, this.dimensionCol.state);\n return [<div class={SELECTION_BORDER_CLASS} style={style} />];\n }\n\n private renderEditCell() {\n // if can edit\n const editCell = this.selectionStore.get('edit');\n if (this.readonly || !editCell) {\n return;\n }\n const val = editCell.val || this.columnService.getCellData(editCell.y, editCell.x);\n const editable = {\n ...editCell,\n ...this.columnService.getSaveData(editCell.y, editCell.x, val),\n };\n\n const style = getElStyle({ ...editCell, x1: editCell.x, y1: editCell.y }, this.dimensionRow.state, this.dimensionCol.state);\n return (\n <revogr-edit\n onCellEdit={e => this.onCellEdit(e.detail)}\n onCloseEdit={e => this.closeEdit(e)}\n editCell={editable}\n column={this.columnService.columns[editCell.x]}\n editor={this.columnService.getCellEditor(editCell.y, editCell.x, this.editors)}\n style={style}\n />\n );\n }\n\n render() {\n const range = this.selectionStoreService.ranged;\n const selectionFocus = this.selectionStoreService.focused;\n const els: VNode[] = [];\n if ((range || selectionFocus) && this.useClipboard) {\n els.push(this.clipboardService.renderClipboard());\n }\n\n if (range) {\n els.push(...this.renderRange(range));\n }\n\n const editCell = this.renderEditCell();\n if (editCell) {\n els.push(editCell);\n }\n if (selectionFocus && !this.readonly && !editCell && this.range) {\n els.push(this.autoFillService.renderAutofill(range, selectionFocus));\n }\n\n if (this.canDrag) {\n els.push(\n <revogr-order-editor\n ref={e => (this.orderEditor = e)}\n dataStore={this.dataStore}\n dimensionRow={this.dimensionRow}\n dimensionCol={this.dimensionCol}\n parent={this.element}\n onInternalRowDragStart={e => this.onRowDragStart(e)}\n />,\n );\n }\n return (\n <Host onDblClick={() => this.doEdit()} onMouseDown={(e: MouseEvent) => this.onElementMouseDown(e)}>\n {els}\n <slot name=\"data\" />\n </Host>\n );\n }\n\n protected onElementMouseDown(e: MouseEvent) {\n // Ignore focus if clicked input\n if (isEditInput(e.target as HTMLElement | undefined)) {\n return;\n }\n const data = this.getData();\n if (e.defaultPrevented) {\n return;\n }\n // Regular cell click\n const focusCell = getCurrentCell({ x: e.x, y: e.y }, data);\n this.selectionStoreService.focus(focusCell, this.range && e.shiftKey);\n\n // Initiate autofill selection\n if (this.range) {\n this.autoFillService.selectionStart(e, data);\n }\n }\n\n protected doEdit(val = '') {\n if (this.canEdit()) {\n const editCell = this.selectionStore.get('focus');\n const data = this.columnService.getSaveData(editCell.y, editCell.x);\n this.setEdit?.emit({\n ...data,\n val,\n });\n }\n }\n\n /**\n * Close editor event triggered\n * @param details - if requires focus next\n */\n private closeEdit(e?: CustomEvent<boolean>) {\n this.cancelEdit.emit();\n if (e?.detail) {\n this.focusNext();\n }\n }\n\n private async focusNext() {\n const canFocus = await this.keyboardService.keyChangeSelection(\n new KeyboardEvent('keydown', {\n code: codesLetter.ARROW_DOWN,\n }),\n this.range\n );\n if (!canFocus) {\n this.closeEdit();\n }\n }\n\n protected clearCell() {\n if (this.selectionStoreService.ranged && !isRangeSingleCell(this.selectionStoreService.ranged)) {\n const data = this.columnService.getRangeStaticData(this.selectionStoreService.ranged, '');\n this.autoFillService.onRangeApply(data, this.selectionStoreService.ranged);\n } else if (this.canEdit()) {\n const focused = this.selectionStoreService.focused;\n this.onCellEdit({ rgRow: focused.y, rgCol: focused.x, val: '' }, true);\n }\n }\n\n /** Edit finished, close cell and save */\n protected onCellEdit(e: Edition.SaveDataDetails, clear = false) {\n const dataToSave = this.columnService.getSaveData(e.rgRow, e.rgCol, e.val);\n this.internalCellEdit.emit(dataToSave);\n // if not clear navigate to next cell after edit\n if (!clear && !e.preventFocus) {\n this.focusNext();\n }\n }\n\n private onRowDragStart({ detail }: CustomEvent<{ cell: Selection.Cell; text: string }>) {\n detail.text = this.columnService.getCellData(detail.cell.y, detail.cell.x);\n }\n\n /** Check if edit possible */\n protected canEdit() {\n if (this.readonly) {\n return false;\n }\n const editCell = this.selectionStoreService.focused;\n return editCell && !this.columnService?.isReadOnly(editCell.y, editCell.x);\n }\n\n /** Collect data from element */\n protected getData() {\n return {\n el: this.element,\n rows: this.dimensionRow.state,\n cols: this.dimensionCol.state,\n lastCell: this.lastCell,\n };\n }\n}\n"],"version":3}
|