@revolist/revogrid 4.10.12 → 4.10.13

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.
Files changed (33) hide show
  1. package/dist/cjs/index.cjs.js +1 -1
  2. package/dist/cjs/index.cjs.js.map +1 -1
  3. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
  4. package/dist/cjs/revogr-attribution_7.cjs.entry.js +11 -2
  5. package/dist/cjs/revogr-attribution_7.cjs.entry.js.map +1 -1
  6. package/dist/collection/components/overlay/revogr-overlay-selection.js +41 -27
  7. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
  8. package/dist/collection/components/revoGrid/revo-grid.js +11 -11
  9. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
  10. package/dist/collection/types/events.js +1 -1
  11. package/dist/collection/types/events.js.map +1 -1
  12. package/dist/esm/index.js +1 -1
  13. package/dist/esm/index.js.map +1 -1
  14. package/dist/esm/revo-grid.entry.js.map +1 -1
  15. package/dist/esm/revogr-attribution_7.entry.js +11 -2
  16. package/dist/esm/revogr-attribution_7.entry.js.map +1 -1
  17. package/dist/revo-grid/index.esm.js +1 -1
  18. package/dist/revo-grid/index.esm.js.map +1 -1
  19. package/dist/revo-grid/revo-grid.entry.js.map +1 -1
  20. package/dist/revo-grid/revogr-attribution_7.entry.js +1 -1
  21. package/dist/revo-grid/revogr-attribution_7.entry.js.map +1 -1
  22. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +13 -10
  23. package/dist/types/components/revoGrid/revo-grid.d.ts +11 -11
  24. package/dist/types/components.d.ts +18 -18
  25. package/dist/types/types/events.d.ts +1 -1
  26. package/hydrate/index.js +11 -2
  27. package/hydrate/index.mjs +11 -2
  28. package/package.json +1 -1
  29. package/standalone/index.js +1 -1
  30. package/standalone/index.js.map +1 -1
  31. package/standalone/revo-grid.js.map +1 -1
  32. package/standalone/revogr-overlay-selection2.js +11 -2
  33. package/standalone/revogr-overlay-selection2.js.map +1 -1
@@ -237,22 +237,25 @@ export class OverlaySelection {
237
237
  nodes.push(h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, rowType: this.types.rowType, onRowdragstartinit: e => this.rowDragStart(e) }));
238
238
  }
239
239
  }
240
- return (h(Host, { key: 'fe9c7bb8df05ef24ede6772e56e84ec3c28b2a77', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, h("slot", { key: '3c690297a8916109adcec9170526c3288bfbf05e', name: "data" })));
240
+ return (h(Host, { key: '2161c0a1ef09270235a7026ca48ff4034808b73d', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, h("slot", { key: '0c0ca6a20c9cda79ac0b47b833ae8d5d4fc586e4', name: "data" })));
241
241
  }
242
242
  /**
243
243
  * Executes the focus operation on the specified range of cells.
244
244
  */
245
245
  doFocus(focus, end, changes) {
246
+ // 1. Trigger beforeFocus event
246
247
  const { defaultPrevented } = this.beforeFocusCell.emit(this.columnService.getSaveData(focus.y, focus.x));
247
248
  if (defaultPrevented) {
248
249
  return false;
249
250
  }
250
251
  const evData = Object.assign(Object.assign({ range: Object.assign(Object.assign({}, focus), { x1: end.x, y1: end.y }), next: changes }, this.types), { rowDimension: Object.assign({}, this.dimensionRow.state), colDimension: Object.assign({}, this.dimensionCol.state) });
252
+ // 2. Trigger apply focus event
251
253
  const applyEvent = this.applyFocus.emit(evData);
252
254
  if (applyEvent.defaultPrevented) {
253
255
  return false;
254
256
  }
255
257
  const { range } = applyEvent.detail;
258
+ // 3. Trigger focus event
256
259
  return !this.focusCell.emit(Object.assign({ focus: {
257
260
  x: range.x,
258
261
  y: range.y,
@@ -263,12 +266,18 @@ export class OverlaySelection {
263
266
  }
264
267
  triggerRangeEvent(range) {
265
268
  const type = this.types.rowType;
269
+ // 1. Apply range
266
270
  const applyEvent = this.beforeApplyRange.emit(Object.assign(Object.assign({ range: Object.assign({}, range) }, this.types), { rowDimension: Object.assign({}, this.dimensionRow.state), colDimension: Object.assign({}, this.dimensionCol.state) }));
267
271
  if (applyEvent.defaultPrevented) {
268
272
  return false;
269
273
  }
270
274
  const data = this.columnService.getRangeTransformedToProps(applyEvent.detail.range, this.dataStore);
275
+ // 2. Before set range
271
276
  let e = this.beforeSetRange.emit(data);
277
+ if (e.defaultPrevented) {
278
+ return false;
279
+ }
280
+ // 3. Set range
272
281
  e = this.setRange.emit(Object.assign(Object.assign({}, applyEvent.detail.range), { type }));
273
282
  if (e.defaultPrevented) {
274
283
  return false;
@@ -934,7 +943,7 @@ export class OverlaySelection {
934
943
  "composed": true,
935
944
  "docs": {
936
945
  "tags": [],
937
- "text": "Before range applied. First step in triggerRangeEvent."
946
+ "text": "Before range applied.\nFirst step in triggerRangeEvent."
938
947
  },
939
948
  "complexType": {
940
949
  "original": "FocusRenderEvent",
@@ -955,7 +964,7 @@ export class OverlaySelection {
955
964
  "composed": true,
956
965
  "docs": {
957
966
  "tags": [],
958
- "text": "Before range selection applied. Second step in triggerRangeEvent."
967
+ "text": "Before range selection applied.\nSecond step in triggerRangeEvent."
959
968
  },
960
969
  "complexType": {
961
970
  "original": "any",
@@ -963,49 +972,49 @@ export class OverlaySelection {
963
972
  "references": {}
964
973
  }
965
974
  }, {
966
- "method": "beforeEditRender",
967
- "name": "beforeeditrender",
975
+ "method": "setRange",
976
+ "name": "setrange",
968
977
  "bubbles": true,
969
978
  "cancelable": true,
970
979
  "composed": true,
971
980
  "docs": {
972
981
  "tags": [],
973
- "text": "Before editor render."
982
+ "text": "Set range.\nThird step in triggerRangeEvent."
974
983
  },
975
984
  "complexType": {
976
- "original": "FocusRenderEvent",
977
- "resolved": "FocusRenderEvent",
985
+ "original": "RangeArea & { type: MultiDimensionType }",
986
+ "resolved": "RangeArea & { type: MultiDimensionType; }",
978
987
  "references": {
979
- "FocusRenderEvent": {
988
+ "RangeArea": {
980
989
  "location": "import",
981
990
  "path": "@type",
982
- "id": "src/types/index.ts::FocusRenderEvent"
991
+ "id": "src/types/index.ts::RangeArea"
992
+ },
993
+ "MultiDimensionType": {
994
+ "location": "import",
995
+ "path": "@type",
996
+ "id": "src/types/index.ts::MultiDimensionType"
983
997
  }
984
998
  }
985
999
  }
986
1000
  }, {
987
- "method": "setRange",
988
- "name": "setrange",
1001
+ "method": "beforeEditRender",
1002
+ "name": "beforeeditrender",
989
1003
  "bubbles": true,
990
1004
  "cancelable": true,
991
1005
  "composed": true,
992
1006
  "docs": {
993
1007
  "tags": [],
994
- "text": "Set range."
1008
+ "text": "Before editor render."
995
1009
  },
996
1010
  "complexType": {
997
- "original": "RangeArea & { type: MultiDimensionType }",
998
- "resolved": "RangeArea & { type: MultiDimensionType; }",
1011
+ "original": "FocusRenderEvent",
1012
+ "resolved": "FocusRenderEvent",
999
1013
  "references": {
1000
- "RangeArea": {
1001
- "location": "import",
1002
- "path": "@type",
1003
- "id": "src/types/index.ts::RangeArea"
1004
- },
1005
- "MultiDimensionType": {
1014
+ "FocusRenderEvent": {
1006
1015
  "location": "import",
1007
1016
  "path": "@type",
1008
- "id": "src/types/index.ts::MultiDimensionType"
1017
+ "id": "src/types/index.ts::FocusRenderEvent"
1009
1018
  }
1010
1019
  }
1011
1020
  }
@@ -1017,7 +1026,7 @@ export class OverlaySelection {
1017
1026
  "composed": true,
1018
1027
  "docs": {
1019
1028
  "tags": [],
1020
- "text": "Select all."
1029
+ "text": "Select all cells from keyboard."
1021
1030
  },
1022
1031
  "complexType": {
1023
1032
  "original": "any",
@@ -1032,7 +1041,7 @@ export class OverlaySelection {
1032
1041
  "composed": true,
1033
1042
  "docs": {
1034
1043
  "tags": [],
1035
- "text": "Used for editors support when editor close requested."
1044
+ "text": "Cancel edit. Used for editors support when editor close requested."
1036
1045
  },
1037
1046
  "complexType": {
1038
1047
  "original": "any",
@@ -1133,13 +1142,18 @@ export class OverlaySelection {
1133
1142
  "text": "Cell get focused.\nTo prevent the default behavior of applying the edit data, you can call `e.preventDefault()`."
1134
1143
  },
1135
1144
  "complexType": {
1136
- "original": "ApplyFocusEvent",
1137
- "resolved": "ApplyFocusEvent",
1145
+ "original": "ApplyFocusEvent & FocusRenderEvent",
1146
+ "resolved": "ApplyFocusEvent & FocusRenderEvent",
1138
1147
  "references": {
1139
1148
  "ApplyFocusEvent": {
1140
1149
  "location": "import",
1141
1150
  "path": "@type",
1142
1151
  "id": "src/types/index.ts::ApplyFocusEvent"
1152
+ },
1153
+ "FocusRenderEvent": {
1154
+ "location": "import",
1155
+ "path": "@type",
1156
+ "id": "src/types/index.ts::FocusRenderEvent"
1143
1157
  }
1144
1158
  }
1145
1159
  }
@@ -1172,7 +1186,7 @@ export class OverlaySelection {
1172
1186
  "composed": true,
1173
1187
  "docs": {
1174
1188
  "tags": [],
1175
- "text": "Selection range changed."
1189
+ "text": "Autofill data in range. First step in applyRangeWithData"
1176
1190
  },
1177
1191
  "complexType": {
1178
1192
  "original": "ChangedRange",
@@ -1 +1 @@
1
- {"version":3,"file":"revogr-overlay-selection.js","sourceRoot":"","sources":["../../../src/components/overlay/revogr-overlay-selection.tsx"],"names":[],"mappings":"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AC,GAAG,CAAC,MAAM,CAAC;SACtC,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n VNode,\n Element,\n Watch,\n} from '@stencil/core';\nimport ColumnService from '../data/column.service';\nimport { codesLetter } from '../../utils/key.codes';\nimport { MOBILE_CLASS, SELECTION_BORDER_CLASS } from '../../utils/consts';\nimport { type DSourceState, getRange, isRangeSingleCell } from '@store';\nimport {\n collectModelsOfRange,\n EventData,\n getCell,\n getFocusCellBasedOnEvent,\n styleByCellProps,\n} from './selection.utils';\nimport { isEditInput } from '../editors/edit.utils';\nimport { KeyboardService } from './keyboard.service';\nimport { AutoFillService } from './autofill.service';\nimport { verifyTouchTarget } from '../../utils/events';\nimport { getCellData } from '../../utils';\nimport {\n Observable,\n SelectionStoreState,\n DimensionSettingsState,\n DataType,\n DimensionRows,\n ColumnRegular,\n DimensionCols,\n Cell,\n DragStartEvent,\n} from '../../components';\nimport type {\n MultiDimensionType,\n Nullable,\n RangeClipboardCopyEventProps,\n RangeClipboardPasteEvent,\n FocusRenderEvent,\n ApplyFocusEvent,\n AllDimensionType,\n DataFormat,\n Editors,\n BeforeSaveDataDetails,\n BeforeEdit,\n RangeArea,\n TempRange,\n ChangedRange,\n BeforeRangeSaveDataDetails,\n SaveDataDetails,\n} from '@type';\n\n/**\n * Component for overlaying the grid with the selection.\n */\n@Component({\n tag: 'revogr-overlay-selection',\n styleUrl: 'revogr-overlay-style.scss',\n})\nexport class OverlaySelection {\n // #region Properties\n /**\n * Readonly mode.\n */\n @Prop() readonly: boolean;\n /**\n * Range selection allowed.\n */\n @Prop() range: boolean;\n /**\n * Enable revogr-order-editor component (read more in revogr-order-editor component).\n * Allows D&D.\n */\n @Prop() canDrag: boolean;\n\n /**\n * Enable revogr-clipboard component (read more in revogr-clipboard component).\n * Allows copy/paste.\n */\n @Prop() useClipboard: boolean;\n\n /** Stores */\n /** Selection, range, focus. */\n @Prop() selectionStore: Observable<SelectionStoreState>;\n /** Dimension settings Y. */\n @Prop() dimensionRow: Observable<DimensionSettingsState>;\n /** Dimension settings X. */\n @Prop() dimensionCol!: Observable<DimensionSettingsState>;\n\n // --------------------------------------------------------------------------\n //\n // Static stores, not expected to change during component lifetime\n //\n // --------------------------------------------------------------------------\n\n /**\n * Row data store.\n */\n @Prop() dataStore: Observable<DSourceState<DataType, DimensionRows>>;\n\n /**\n * Column data store.\n */\n @Prop() colData: Observable<DSourceState<ColumnRegular, DimensionCols>>;\n /**\n * Last real coordinates positions + 1.\n */\n @Prop() lastCell: Cell;\n /**\n * Custom editors register.\n */\n @Prop() editors: Editors;\n /**\n * If true applys changes when cell closes if not Escape.\n */\n @Prop() applyChangesOnClose = false;\n /**\n * Additional data to pass to renderer.\n */\n @Prop() additionalData: any;\n\n /**\n * Is mobile view mode.\n */\n @Prop() isMobileDevice: boolean;\n\n // #endregion\n\n // #region Events\n /**\n * Before clipboard copy happened. Validate data before copy.\n * To prevent the default behavior of editing data and use your own implementation, call `e.preventDefault()`.\n */\n @Event({ eventName: 'beforecopyregion', cancelable: true })\n beforeCopyRegion: EventEmitter;\n /**\n * Before region paste happened.\n */\n @Event({ eventName: 'beforepasteregion', cancelable: true })\n beforeRegionPaste: EventEmitter;\n\n /**\n * Cell edit apply to the data source.\n * Triggers datasource edit on the root level.\n */\n @Event({ eventName: 'celleditapply', cancelable: true })\n cellEditApply: EventEmitter<BeforeSaveDataDetails>;\n\n /**\n * Before cell focus.\n */\n @Event({ eventName: 'beforecellfocusinit', cancelable: true })\n beforeFocusCell: EventEmitter<BeforeSaveDataDetails>;\n\n /**\n * Fired when change of viewport happens.\n * Usually when we switch between pinned regions.\n */\n @Event({ eventName: 'beforenextvpfocus', cancelable: true })\n beforeNextViewportFocus: EventEmitter<Cell>;\n\n /**\n * Set edit cell.\n */\n @Event({ eventName: 'setedit' }) setEdit: EventEmitter<BeforeEdit>;\n\n /**\n * Before range applied. First step in triggerRangeEvent.\n */\n @Event({ eventName: 'beforeapplyrange' })\n beforeApplyRange: EventEmitter<FocusRenderEvent>;\n /**\n * Before range selection applied. Second step in triggerRangeEvent.\n */\n @Event({ eventName: 'beforesetrange' }) beforeSetRange: EventEmitter;\n\n /**\n * Before editor render.\n */\n @Event({ eventName: 'beforeeditrender' })\n beforeEditRender: EventEmitter<FocusRenderEvent>;\n\n /**\n * Set range.\n */\n @Event({ eventName: 'setrange' }) setRange: EventEmitter<\n RangeArea & { type: MultiDimensionType }\n >;\n\n /** Select all. */\n @Event({ eventName: 'selectall' }) selectAll: EventEmitter;\n /**\n * Used for editors support when editor close requested.\n */\n @Event({ eventName: 'canceledit' }) cancelEdit: EventEmitter;\n\n /**\n * Set temp range area during autofill.\n */\n @Event({ eventName: 'settemprange' })\n setTempRange: EventEmitter<Nullable<TempRange> | null>;\n\n /**\n * Before set temp range area during autofill.\n */\n @Event({ eventName: 'beforesettemprange' })\n beforeSetTempRange: EventEmitter<\n { tempRange: Nullable<TempRange> | null } & EventData & AllDimensionType\n >;\n\n /**\n * Before cell get focused.\n * To prevent the default behavior of applying the edit data, you can call `e.preventDefault()`.\n */\n @Event({ eventName: 'applyfocus' })\n applyFocus: EventEmitter<FocusRenderEvent>;\n\n /**\n * Cell get focused.\n * To prevent the default behavior of applying the edit data, you can call `e.preventDefault()`.\n */\n @Event({ eventName: 'focuscell' }) focusCell: EventEmitter<ApplyFocusEvent>;\n /** Range data apply. */\n @Event({ eventName: 'beforerangedataapply' })\n beforeRangeDataApply: EventEmitter<FocusRenderEvent>;\n /** Selection range changed. */\n @Event({ eventName: 'selectionchangeinit', cancelable: true })\n selectionChange: EventEmitter<ChangedRange>;\n /** Before range copy. */\n @Event({ eventName: 'beforerangecopyapply', cancelable: true, bubbles: true })\n beforeRangeCopyApply: EventEmitter<ChangedRange>;\n\n /** Range data apply.\n * Triggers datasource edit on the root level.\n */\n @Event({ eventName: 'rangeeditapply', cancelable: true })\n rangeEditApply: EventEmitter<BeforeRangeSaveDataDetails>;\n /** Range copy. */\n @Event({ eventName: 'clipboardrangecopy', cancelable: true })\n /**\n * Range copy event.\n * This event is triggered when data is ready to be copied to the clipboard.\n * If you want to prevent the default behavior of copying data, you can call `e.preventDefault()`.\n * If you want to modify the data that will be copied to the clipboard, modify the `data` property of the event object.\n */\n rangeClipboardCopy: EventEmitter<RangeClipboardCopyEventProps>;\n\n /**\n * Range paste event.\n */\n @Event({ eventName: 'clipboardrangepaste', cancelable: true })\n rangeClipboardPaste: EventEmitter<RangeClipboardPasteEvent>;\n\n /**\n * Before key up event proxy, used to prevent key up trigger.\n * If you have some custom behaviour event, use this event to check if it wasn't processed by internal logic.\n * Call preventDefault().\n */\n @Event({ eventName: 'beforekeydown' })\n beforeKeyDown: EventEmitter<{ original: KeyboardEvent } & EventData>;\n /**\n * Before key down event proxy, used to prevent key down trigger.\n * If you have some custom behaviour event, use this event to check if it wasn't processed by internal logic.\n * Call preventDefault().\n */\n @Event({ eventName: 'beforekeyup' }) beforeKeyUp: EventEmitter<\n { original: KeyboardEvent } & EventData\n >;\n /**\n * Runs before cell save.\n * Can be used to override or cancel original save.\n */\n @Event({ eventName: 'beforecellsave', cancelable: true })\n beforeCellSave: EventEmitter;\n\n // #endregion\n\n // #region Private Properties\n @Element() element: HTMLElement;\n private clipboard?: HTMLRevogrClipboardElement;\n\n protected columnService: ColumnService;\n private keyboardService: KeyboardService | null = null;\n private autoFillService: AutoFillService | null = null;\n private orderEditor?: HTMLRevogrOrderEditorElement;\n private revogrEdit?: HTMLRevogrEditElement;\n private unsubscribeSelectionStore: { (): void }[] = [];\n // #endregion\n\n // #region Listeners\n @Listen('touchmove', { target: 'document' })\n @Listen('mousemove', { target: 'document' })\n onMouseMove(e: MouseEvent | TouchEvent) {\n if (this.selectionStore.get('focus')) {\n this.autoFillService?.selectionMouseMove(e);\n }\n }\n\n /**\n * Action finished inside the document.\n * Pointer left document, clear any active operation.\n */\n @Listen('touchend', { target: 'document' })\n @Listen('mouseup', { target: 'document' })\n @Listen('mouseleave', { target: 'document' })\n onMouseUp() {\n // Clear autofill selection\n // when pointer left document,\n // clear any active operation.\n this.autoFillService?.clearAutoFillSelection(\n this.selectionStore.get('focus'),\n this.selectionStore.get('range'),\n );\n }\n\n /**\n * Row drag started.\n * This event is fired when drag action started on cell.\n */\n @Listen('dragstartcell') onCellDrag(e: CustomEvent<DragStartEvent>) {\n // Invoke drag start on order editor.\n this.orderEditor?.dragStart(e.detail);\n }\n\n /**\n * Get keyboard down from element.\n * This event is fired when keyboard key is released.\n */\n @Listen('keyup', { target: 'document' }) onKeyUp(e: KeyboardEvent) {\n // Emit before key up event.\n this.beforeKeyUp.emit({ original: e, ...this.getData() });\n }\n\n /**\n * Get keyboard down from element.\n * This event is fired when keyboard key is pressed.\n */\n @Listen('keydown', { target: 'document' }) onKeyDown(e: KeyboardEvent) {\n // Emit before key down event and check if default prevention is set.\n const proxy = this.beforeKeyDown.emit({ original: e, ...this.getData() });\n if (e.defaultPrevented || proxy.defaultPrevented) {\n return;\n }\n // Invoke key down on keyboard service.\n this.keyboardService?.keyDown(\n e,\n this.range,\n !!this.selectionStore.get('edit'),\n {\n focus: this.selectionStore.get('focus'),\n range: this.selectionStore.get('range'),\n },\n );\n }\n // #endregion\n\n /**\n * Selection & Keyboard\n */\n @Watch('selectionStore') selectionServiceSet(\n s: Observable<SelectionStoreState>,\n ) {\n // clear subscriptions\n this.unsubscribeSelectionStore.forEach(v => v());\n this.unsubscribeSelectionStore.length = 0;\n this.unsubscribeSelectionStore.push(\n s.onChange('nextFocus', v => v && this.doFocus(v, v)),\n );\n\n this.keyboardService = new KeyboardService({\n selectionStore: s,\n range: r => !!r && this.triggerRangeEvent(r),\n focus: (f, changes, focusNextViewport) => {\n if (focusNextViewport) {\n this.beforeNextViewportFocus.emit(f);\n return false;\n } else {\n return this.doFocus(f, f, changes);\n }\n },\n change: val => {\n if (this.readonly) {\n return;\n }\n this.doEdit(val);\n },\n cancel: async () => {\n await this.revogrEdit?.cancelChanges();\n this.closeEdit();\n },\n clearCell: () => !this.readonly && this.clearCell(),\n internalPaste: () => !this.readonly && this.beforeRegionPaste.emit(),\n getData: () => this.getData(),\n selectAll: () => this.selectAll.emit(),\n });\n this.createAutoFillService();\n }\n /** Autofill */\n @Watch('dimensionRow')\n @Watch('dimensionCol')\n createAutoFillService() {\n this.autoFillService = new AutoFillService({\n dimensionRow: this.dimensionRow,\n dimensionCol: this.dimensionCol,\n columnService: this.columnService,\n dataStore: this.dataStore,\n\n clearRangeDataApply: e =>\n this.beforeRangeDataApply.emit({\n ...e,\n ...this.types,\n rowDimension: { ...this.dimensionRow.state },\n colDimension: { ...this.dimensionCol.state },\n }),\n setTempRange: e => {\n const tempRangeEvent = this.beforeSetTempRange.emit({\n tempRange: e,\n ...this.getData(),\n ...this.types,\n });\n if (tempRangeEvent.defaultPrevented) {\n return null;\n }\n return this.setTempRange.emit(tempRangeEvent.detail.tempRange);\n },\n selectionChanged: e => this.selectionChange.emit(e),\n\n rangeCopy: e => this.beforeRangeCopyApply.emit(e),\n rangeDataApply: e => this.rangeEditApply.emit(e),\n\n setRange: e => !!e && this.triggerRangeEvent(e),\n getData: () => this.getData(),\n });\n }\n\n /** Columns */\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 }\n\n connectedCallback() {\n this.columnServiceSet();\n this.selectionServiceSet(this.selectionStore);\n }\n\n disconnectedCallback() {\n // clear subscriptions\n this.unsubscribeSelectionStore.forEach(v => v());\n this.unsubscribeSelectionStore.length = 0;\n this.columnService?.destroy();\n }\n\n async componentWillRender() {\n const editCell = this.selectionStore.get('edit');\n if (!editCell) {\n await this.revogrEdit?.beforeDisconnect?.();\n }\n }\n\n private renderRange(range: RangeArea) {\n const cell = getCell(\n range,\n this.dimensionRow.state,\n this.dimensionCol.state,\n );\n const styles = styleByCellProps(cell);\n return [\n <div class={SELECTION_BORDER_CLASS} style={styles}>\n {this.isMobileDevice && (\n <div class=\"range-handlers\">\n <span class={MOBILE_CLASS}></span>\n <span class={MOBILE_CLASS}></span>\n </div>\n )}\n </div>,\n ];\n }\n\n private renderEditor() {\n // Check if edit access\n const editCell = this.selectionStore.get('edit');\n // Readonly or Editor closed\n if (this.readonly || !editCell) {\n return null;\n }\n const enteredOrModelValue =\n editCell.val ||\n getCellData(\n this.columnService.rowDataModel(editCell.y, editCell.x).value\n );\n const editable = {\n ...editCell,\n ...this.columnService.getSaveData(\n editCell.y,\n editCell.x,\n enteredOrModelValue,\n ),\n };\n const renderEvent = this.beforeEditRender.emit({\n range: {\n ...editCell,\n x1: editCell.x,\n y1: editCell.y,\n },\n ...this.types,\n rowDimension: { ...this.dimensionRow.state },\n colDimension: { ...this.dimensionCol.state },\n });\n\n // Render prevented\n if (renderEvent.defaultPrevented) {\n return null;\n }\n\n const cell = getCell(\n renderEvent.detail.range,\n renderEvent.detail.rowDimension,\n renderEvent.detail.colDimension,\n );\n const styles = styleByCellProps(cell);\n return (\n <revogr-edit\n style={styles}\n ref={el => (this.revogrEdit = el)}\n additionalData={this.additionalData}\n editCell={editable}\n saveOnClose={this.applyChangesOnClose}\n column={this.columnService.rowDataModel(editCell.y, editCell.x)}\n editor={this.columnService.getCellEditor(\n editCell.y,\n editCell.x,\n this.editors,\n )}\n onCloseedit={e => this.closeEdit(e)}\n onCelledit={e => {\n const saveEv = this.beforeCellSave.emit(e.detail);\n if (!saveEv.defaultPrevented) {\n this.cellEdit(saveEv.detail);\n }\n\n // if not clear navigate to next cell after edit\n if (!saveEv.detail.preventFocus) {\n this.focusNext();\n }\n }}\n />\n );\n }\n\n render() {\n const nodes: VNode[] = [];\n const editCell = this.renderEditor();\n\n // Editor\n if (editCell) {\n nodes.push(editCell);\n } else {\n const range = this.selectionStore.get('range');\n const focus = this.selectionStore.get('focus');\n\n // Clipboard\n if ((range || focus) && this.useClipboard) {\n nodes.push(\n <revogr-clipboard\n readonly={this.readonly}\n onCopyregion={e => this.onCopy(e.detail)}\n onClearregion={() => !this.readonly && this.clearCell()}\n ref={e => (this.clipboard = e)}\n onPasteregion={e => this.onPaste(e.detail)}\n />,\n );\n }\n\n // Range\n if (range) {\n nodes.push(...this.renderRange(range));\n }\n // Autofill\n if (focus && !this.readonly && this.range) {\n nodes.push(this.autoFillService?.renderAutofill(range, focus));\n }\n\n // Order\n if (this.canDrag) {\n nodes.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 rowType={this.types.rowType}\n onRowdragstartinit={e => this.rowDragStart(e)}\n />,\n );\n }\n }\n return (\n <Host\n class={{ mobile: this.isMobileDevice }}\n onDblClick={(e: MouseEvent) => this.onElementDblClick(e)}\n onMouseDown={(e: MouseEvent) => this.onElementMouseDown(e)}\n onTouchStart={(e: TouchEvent) => this.onElementMouseDown(e, true)}\n >\n {nodes}\n <slot name=\"data\" />\n </Host>\n );\n }\n\n /**\n * Executes the focus operation on the specified range of cells.\n */\n private doFocus(focus: Cell, end: Cell, changes?: Partial<Cell>) {\n const { defaultPrevented } = this.beforeFocusCell.emit(\n this.columnService.getSaveData(focus.y, focus.x),\n );\n if (defaultPrevented) {\n return false;\n }\n const evData: FocusRenderEvent = {\n range: {\n ...focus,\n x1: end.x,\n y1: end.y,\n },\n next: changes,\n ...this.types,\n rowDimension: { ...this.dimensionRow.state },\n colDimension: { ...this.dimensionCol.state },\n };\n const applyEvent = this.applyFocus.emit(evData);\n if (applyEvent.defaultPrevented) {\n return false;\n }\n const { range } = applyEvent.detail;\n return !this.focusCell.emit({\n focus: {\n x: range.x,\n y: range.y,\n },\n end: {\n x: range.x1,\n y: range.y1,\n },\n ...applyEvent.detail,\n }).defaultPrevented;\n }\n\n private triggerRangeEvent(range: RangeArea) {\n const type = this.types.rowType;\n const applyEvent = this.beforeApplyRange.emit({\n range: { ...range },\n ...this.types,\n rowDimension: { ...this.dimensionRow.state },\n colDimension: { ...this.dimensionCol.state },\n });\n if (applyEvent.defaultPrevented) {\n return false;\n }\n const data = this.columnService.getRangeTransformedToProps(\n applyEvent.detail.range,\n this.dataStore,\n );\n let e = this.beforeSetRange.emit(data);\n e = this.setRange.emit({ ...applyEvent.detail.range, type });\n if (e.defaultPrevented) {\n return false;\n }\n return !e.defaultPrevented;\n }\n\n /**\n * Open Editor on DblClick\n */\n private onElementDblClick(e: MouseEvent) {\n // DblClick prevented outside - Editor will not open\n if (e.defaultPrevented) {\n return;\n }\n\n // Get data from the component\n const data = this.getData();\n const focusCell = getFocusCellBasedOnEvent(e, data);\n if (!focusCell) {\n return;\n }\n this.doEdit();\n }\n\n /**\n * Handle mouse down event on Host element\n */\n private onElementMouseDown(e: MouseEvent | TouchEvent, touch = false) {\n // Get the target element from the event object\n const targetElement = e.target as HTMLElement | undefined;\n // Ignore focus if clicked input\n if (isEditInput(targetElement) || e.defaultPrevented) {\n return;\n }\n\n // Get data from the component\n const data = this.getData();\n const focusCell = getFocusCellBasedOnEvent(e, data);\n if (!focusCell) {\n return;\n }\n\n // Set focus on the current cell\n this.focus(focusCell, this.range && e.shiftKey);\n\n // Initiate autofill selection\n if (this.range) {\n targetElement &&\n this.autoFillService?.selectionStart(targetElement, this.getData());\n\n // Prevent default behavior for mouse events,\n // but only if target element is not a mobile input\n if (!touch) {\n e.preventDefault();\n } else if (\n verifyTouchTarget((e as TouchEvent).touches[0], MOBILE_CLASS)\n ) {\n // Prevent default behavior for touch events\n // if target element is a mobile input\n e.preventDefault();\n }\n }\n }\n\n /**\n * Start cell editing\n */\n protected doEdit(val = '') {\n if (this.canEdit()) {\n const focus = this.selectionStore.get('focus');\n if (!focus) {\n return;\n }\n const data = this.columnService.getSaveData(focus.y, focus.x);\n this.setEdit?.emit({\n ...data,\n val,\n });\n }\n }\n\n /**\n * Close editor event triggered\n * @param details - if it requires focus next\n */\n private async closeEdit(e?: CustomEvent<boolean | undefined>) {\n this.cancelEdit.emit();\n if (e?.detail) {\n await this.focusNext();\n }\n }\n\n /**\n * Edit finished.\n * Close Editor and save.\n */\n protected cellEdit(e: SaveDataDetails) {\n const dataToSave = this.columnService.getSaveData(e.rgRow, e.rgCol, e.val);\n this.cellEditApply.emit(dataToSave);\n }\n\n private getRegion() {\n const focus = this.selectionStore.get('focus');\n let range = this.selectionStore.get('range');\n if (!range) {\n range = getRange(focus, focus);\n }\n return range;\n }\n private onCopy(e: DataTransfer) {\n const range = this.getRegion();\n const canCopyEvent = this.beforeCopyRegion.emit(range);\n if (canCopyEvent.defaultPrevented) {\n return false;\n }\n let rangeData: DataFormat[][] | undefined;\n\n if (range) {\n const { data, mapping } = this.columnService.copyRangeArray(\n range,\n this.dataStore,\n );\n const event = this.rangeClipboardCopy.emit({\n range,\n data,\n mapping,\n ...this.types,\n });\n if (!event.defaultPrevented) {\n rangeData = event.detail.data;\n }\n }\n\n this.clipboard?.doCopy(e, rangeData);\n return true;\n }\n\n private onPaste(data: string[][]) {\n const focus = this.selectionStore.get('focus');\n const isEditing = this.selectionStore.get('edit') !== null;\n if (!focus || isEditing) {\n return;\n }\n let { changed, range } = this.columnService.getTransformedDataToApply(\n focus,\n data,\n );\n const { defaultPrevented: canPaste } = this.rangeClipboardPaste.emit({\n data: changed,\n models: collectModelsOfRange(changed, this.dataStore),\n range,\n ...this.types,\n });\n\n if (canPaste) {\n return;\n }\n this.autoFillService?.onRangeApply(changed, range);\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 const range = this.selectionStore.get('range');\n if (range && !isRangeSingleCell(range)) {\n const data = this.columnService.getRangeStaticData(range, '');\n this.autoFillService?.onRangeApply(data, range);\n } else if (this.canEdit()) {\n const focused = this.selectionStore.get('focus');\n if (!focused) {\n return;\n }\n const cell = this.columnService.getSaveData(focused.y, focused.x);\n this.cellEdit({\n rgRow: focused.y,\n rgCol: focused.x,\n val: '',\n type: cell.type,\n prop: cell.prop,\n });\n }\n }\n\n private rowDragStart({ detail }: CustomEvent<{ cell: Cell; text: string }>) {\n detail.text = getCellData(\n this.columnService.rowDataModel(detail.cell.y, detail.cell.x).value\n );\n }\n\n /**\n * Verify if edit allowed.\n */\n protected canEdit() {\n if (this.readonly) {\n return false;\n }\n const focus = this.selectionStore.get('focus');\n return focus && !this.columnService?.isReadOnly(focus.y, focus.x);\n }\n\n get edited() {\n return this.selectionStore.get('edit');\n }\n\n /**\n * Sets the focus on a cell and optionally edits a range.\n */\n focus(cell?: Cell, isRangeEdit = false) {\n if (!cell) return false;\n\n const end = cell;\n const start = this.selectionStore.get('focus');\n\n if (isRangeEdit && start) {\n const range = getRange(start, end);\n if (range) {\n return this.triggerRangeEvent(range);\n }\n }\n\n return this.doFocus(cell, end);\n }\n\n get types(): AllDimensionType {\n return {\n rowType: this.dataStore.get('type'),\n colType: this.columnService.type,\n };\n }\n\n /**\n * Collect data\n */\n protected getData(): EventData {\n return {\n el: this.element,\n rows: this.dimensionRow.state,\n cols: this.dimensionCol.state,\n lastCell: this.lastCell,\n focus: this.selectionStore.get('focus'),\n range: this.selectionStore.get('range'),\n edit: this.selectionStore.get('edit'),\n };\n }\n}\n"]}
1
+ {"version":3,"file":"revogr-overlay-selection.js","sourceRoot":"","sources":["../../../src/components/overlay/revogr-overlay-selection.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n VNode,\n Element,\n Watch,\n} from '@stencil/core';\nimport ColumnService from '../data/column.service';\nimport { codesLetter } from '../../utils/key.codes';\nimport { MOBILE_CLASS, SELECTION_BORDER_CLASS } from '../../utils/consts';\nimport { type DSourceState, getRange, isRangeSingleCell } from '@store';\nimport {\n collectModelsOfRange,\n EventData,\n getCell,\n getFocusCellBasedOnEvent,\n styleByCellProps,\n} from './selection.utils';\nimport { isEditInput } from '../editors/edit.utils';\nimport { KeyboardService } from './keyboard.service';\nimport { AutoFillService } from './autofill.service';\nimport { verifyTouchTarget } from '../../utils/events';\nimport { getCellData } from '../../utils';\nimport {\n Observable,\n SelectionStoreState,\n DimensionSettingsState,\n DataType,\n DimensionRows,\n ColumnRegular,\n DimensionCols,\n Cell,\n DragStartEvent,\n} from '../../components';\nimport type {\n MultiDimensionType,\n Nullable,\n RangeClipboardCopyEventProps,\n RangeClipboardPasteEvent,\n FocusRenderEvent,\n ApplyFocusEvent,\n AllDimensionType,\n DataFormat,\n Editors,\n BeforeSaveDataDetails,\n BeforeEdit,\n RangeArea,\n TempRange,\n ChangedRange,\n BeforeRangeSaveDataDetails,\n SaveDataDetails,\n} from '@type';\n\n/**\n * Component for overlaying the grid with the selection.\n */\n@Component({\n tag: 'revogr-overlay-selection',\n styleUrl: 'revogr-overlay-style.scss',\n})\nexport class OverlaySelection {\n // #region Properties\n /**\n * Readonly mode.\n */\n @Prop() readonly: boolean;\n /**\n * Range selection allowed.\n */\n @Prop() range: boolean;\n /**\n * Enable revogr-order-editor component (read more in revogr-order-editor component).\n * Allows D&D.\n */\n @Prop() canDrag: boolean;\n\n /**\n * Enable revogr-clipboard component (read more in revogr-clipboard component).\n * Allows copy/paste.\n */\n @Prop() useClipboard: boolean;\n\n /** Stores */\n /** Selection, range, focus. */\n @Prop() selectionStore: Observable<SelectionStoreState>;\n /** Dimension settings Y. */\n @Prop() dimensionRow: Observable<DimensionSettingsState>;\n /** Dimension settings X. */\n @Prop() dimensionCol!: Observable<DimensionSettingsState>;\n\n // --------------------------------------------------------------------------\n //\n // Static stores, not expected to change during component lifetime\n //\n // --------------------------------------------------------------------------\n\n /**\n * Row data store.\n */\n @Prop() dataStore: Observable<DSourceState<DataType, DimensionRows>>;\n\n /**\n * Column data store.\n */\n @Prop() colData: Observable<DSourceState<ColumnRegular, DimensionCols>>;\n /**\n * Last real coordinates positions + 1.\n */\n @Prop() lastCell: Cell;\n /**\n * Custom editors register.\n */\n @Prop() editors: Editors;\n /**\n * If true applys changes when cell closes if not Escape.\n */\n @Prop() applyChangesOnClose = false;\n /**\n * Additional data to pass to renderer.\n */\n @Prop() additionalData: any;\n\n /**\n * Is mobile view mode.\n */\n @Prop() isMobileDevice: boolean;\n\n // #endregion\n\n // #region Events\n /**\n * Before clipboard copy happened. Validate data before copy.\n * To prevent the default behavior of editing data and use your own implementation, call `e.preventDefault()`.\n */\n @Event({ eventName: 'beforecopyregion', cancelable: true })\n beforeCopyRegion: EventEmitter;\n /**\n * Before region paste happened.\n */\n @Event({ eventName: 'beforepasteregion', cancelable: true })\n beforeRegionPaste: EventEmitter;\n\n /**\n * Cell edit apply to the data source.\n * Triggers datasource edit on the root level.\n */\n @Event({ eventName: 'celleditapply', cancelable: true })\n cellEditApply: EventEmitter<BeforeSaveDataDetails>;\n\n /**\n * Before cell focus.\n */\n @Event({ eventName: 'beforecellfocusinit', cancelable: true })\n beforeFocusCell: EventEmitter<BeforeSaveDataDetails>;\n\n /**\n * Fired when change of viewport happens.\n * Usually when we switch between pinned regions.\n */\n @Event({ eventName: 'beforenextvpfocus', cancelable: true })\n beforeNextViewportFocus: EventEmitter<Cell>;\n\n /**\n * Set edit cell.\n */\n @Event({ eventName: 'setedit' }) setEdit: EventEmitter<BeforeEdit>;\n\n /**\n * Before range applied.\n * First step in triggerRangeEvent.\n */\n @Event({ eventName: 'beforeapplyrange' })\n beforeApplyRange: EventEmitter<FocusRenderEvent>;\n /**\n * Before range selection applied.\n * Second step in triggerRangeEvent.\n */\n @Event({ eventName: 'beforesetrange' }) beforeSetRange: EventEmitter;\n\n /**\n * Set range.\n * Third step in triggerRangeEvent.\n */\n @Event({ eventName: 'setrange' }) setRange: EventEmitter<\n RangeArea & { type: MultiDimensionType }\n >;\n\n /**\n * Before editor render.\n */\n @Event({ eventName: 'beforeeditrender' })\n beforeEditRender: EventEmitter<FocusRenderEvent>;\n\n\n /** Select all cells from keyboard. */\n @Event({ eventName: 'selectall' }) selectAll: EventEmitter;\n /**\n * Cancel edit. Used for editors support when editor close requested.\n */\n @Event({ eventName: 'canceledit' }) cancelEdit: EventEmitter;\n\n /**\n * Set temp range area during autofill.\n */\n @Event({ eventName: 'settemprange' })\n setTempRange: EventEmitter<Nullable<TempRange> | null>;\n\n /**\n * Before set temp range area during autofill.\n */\n @Event({ eventName: 'beforesettemprange' })\n beforeSetTempRange: EventEmitter<\n { tempRange: Nullable<TempRange> | null } & EventData & AllDimensionType\n >;\n\n /**\n * Before cell get focused.\n * To prevent the default behavior of applying the edit data, you can call `e.preventDefault()`.\n */\n @Event({ eventName: 'applyfocus' })\n applyFocus: EventEmitter<FocusRenderEvent>;\n\n /**\n * Cell get focused.\n * To prevent the default behavior of applying the edit data, you can call `e.preventDefault()`.\n */\n @Event({ eventName: 'focuscell' }) focusCell: EventEmitter<ApplyFocusEvent & FocusRenderEvent>;\n /** Range data apply. */\n @Event({ eventName: 'beforerangedataapply' })\n beforeRangeDataApply: EventEmitter<FocusRenderEvent>;\n /** Autofill data in range. First step in applyRangeWithData */\n @Event({ eventName: 'selectionchangeinit', cancelable: true })\n selectionChange: EventEmitter<ChangedRange>;\n /** Before range copy. */\n @Event({ eventName: 'beforerangecopyapply', cancelable: true, bubbles: true })\n beforeRangeCopyApply: EventEmitter<ChangedRange>;\n\n /** Range data apply.\n * Triggers datasource edit on the root level.\n */\n @Event({ eventName: 'rangeeditapply', cancelable: true })\n rangeEditApply: EventEmitter<BeforeRangeSaveDataDetails>;\n /** Range copy. */\n @Event({ eventName: 'clipboardrangecopy', cancelable: true })\n /**\n * Range copy event.\n * This event is triggered when data is ready to be copied to the clipboard.\n * If you want to prevent the default behavior of copying data, you can call `e.preventDefault()`.\n * If you want to modify the data that will be copied to the clipboard, modify the `data` property of the event object.\n */\n rangeClipboardCopy: EventEmitter<RangeClipboardCopyEventProps>;\n\n /**\n * Range paste event.\n */\n @Event({ eventName: 'clipboardrangepaste', cancelable: true })\n rangeClipboardPaste: EventEmitter<RangeClipboardPasteEvent>;\n\n /**\n * Before key up event proxy, used to prevent key up trigger.\n * If you have some custom behaviour event, use this event to check if it wasn't processed by internal logic.\n * Call preventDefault().\n */\n @Event({ eventName: 'beforekeydown' })\n beforeKeyDown: EventEmitter<{ original: KeyboardEvent } & EventData>;\n /**\n * Before key down event proxy, used to prevent key down trigger.\n * If you have some custom behaviour event, use this event to check if it wasn't processed by internal logic.\n * Call preventDefault().\n */\n @Event({ eventName: 'beforekeyup' }) beforeKeyUp: EventEmitter<\n { original: KeyboardEvent } & EventData\n >;\n /**\n * Runs before cell save.\n * Can be used to override or cancel original save.\n */\n @Event({ eventName: 'beforecellsave', cancelable: true })\n beforeCellSave: EventEmitter;\n\n // #endregion\n\n // #region Private Properties\n @Element() element: HTMLElement;\n private clipboard?: HTMLRevogrClipboardElement;\n\n protected columnService: ColumnService;\n private keyboardService: KeyboardService | null = null;\n private autoFillService: AutoFillService | null = null;\n private orderEditor?: HTMLRevogrOrderEditorElement;\n private revogrEdit?: HTMLRevogrEditElement;\n private unsubscribeSelectionStore: { (): void }[] = [];\n // #endregion\n\n // #region Listeners\n @Listen('touchmove', { target: 'document' })\n @Listen('mousemove', { target: 'document' })\n onMouseMove(e: MouseEvent | TouchEvent) {\n if (this.selectionStore.get('focus')) {\n this.autoFillService?.selectionMouseMove(e);\n }\n }\n\n /**\n * Action finished inside the document.\n * Pointer left document, clear any active operation.\n */\n @Listen('touchend', { target: 'document' })\n @Listen('mouseup', { target: 'document' })\n @Listen('mouseleave', { target: 'document' })\n onMouseUp() {\n // Clear autofill selection\n // when pointer left document,\n // clear any active operation.\n this.autoFillService?.clearAutoFillSelection(\n this.selectionStore.get('focus'),\n this.selectionStore.get('range'),\n );\n }\n\n /**\n * Row drag started.\n * This event is fired when drag action started on cell.\n */\n @Listen('dragstartcell') onCellDrag(e: CustomEvent<DragStartEvent>) {\n // Invoke drag start on order editor.\n this.orderEditor?.dragStart(e.detail);\n }\n\n /**\n * Get keyboard down from element.\n * This event is fired when keyboard key is released.\n */\n @Listen('keyup', { target: 'document' }) onKeyUp(e: KeyboardEvent) {\n // Emit before key up event.\n this.beforeKeyUp.emit({ original: e, ...this.getData() });\n }\n\n /**\n * Get keyboard down from element.\n * This event is fired when keyboard key is pressed.\n */\n @Listen('keydown', { target: 'document' }) onKeyDown(e: KeyboardEvent) {\n // Emit before key down event and check if default prevention is set.\n const proxy = this.beforeKeyDown.emit({ original: e, ...this.getData() });\n if (e.defaultPrevented || proxy.defaultPrevented) {\n return;\n }\n // Invoke key down on keyboard service.\n this.keyboardService?.keyDown(\n e,\n this.range,\n !!this.selectionStore.get('edit'),\n {\n focus: this.selectionStore.get('focus'),\n range: this.selectionStore.get('range'),\n },\n );\n }\n // #endregion\n\n /**\n * Selection & Keyboard\n */\n @Watch('selectionStore') selectionServiceSet(\n s: Observable<SelectionStoreState>,\n ) {\n // clear subscriptions\n this.unsubscribeSelectionStore.forEach(v => v());\n this.unsubscribeSelectionStore.length = 0;\n this.unsubscribeSelectionStore.push(\n s.onChange('nextFocus', v => v && this.doFocus(v, v)),\n );\n\n this.keyboardService = new KeyboardService({\n selectionStore: s,\n range: r => !!r && this.triggerRangeEvent(r),\n focus: (f, changes, focusNextViewport) => {\n if (focusNextViewport) {\n this.beforeNextViewportFocus.emit(f);\n return false;\n } else {\n return this.doFocus(f, f, changes);\n }\n },\n change: val => {\n if (this.readonly) {\n return;\n }\n this.doEdit(val);\n },\n cancel: async () => {\n await this.revogrEdit?.cancelChanges();\n this.closeEdit();\n },\n clearCell: () => !this.readonly && this.clearCell(),\n internalPaste: () => !this.readonly && this.beforeRegionPaste.emit(),\n getData: () => this.getData(),\n selectAll: () => this.selectAll.emit(),\n });\n this.createAutoFillService();\n }\n /** Autofill */\n @Watch('dimensionRow')\n @Watch('dimensionCol')\n createAutoFillService() {\n this.autoFillService = new AutoFillService({\n dimensionRow: this.dimensionRow,\n dimensionCol: this.dimensionCol,\n columnService: this.columnService,\n dataStore: this.dataStore,\n\n clearRangeDataApply: e =>\n this.beforeRangeDataApply.emit({\n ...e,\n ...this.types,\n rowDimension: { ...this.dimensionRow.state },\n colDimension: { ...this.dimensionCol.state },\n }),\n setTempRange: e => {\n const tempRangeEvent = this.beforeSetTempRange.emit({\n tempRange: e,\n ...this.getData(),\n ...this.types,\n });\n if (tempRangeEvent.defaultPrevented) {\n return null;\n }\n return this.setTempRange.emit(tempRangeEvent.detail.tempRange);\n },\n selectionChanged: e => this.selectionChange.emit(e),\n\n rangeCopy: e => this.beforeRangeCopyApply.emit(e),\n rangeDataApply: e => this.rangeEditApply.emit(e),\n\n setRange: e => !!e && this.triggerRangeEvent(e),\n getData: () => this.getData(),\n });\n }\n\n /** Columns */\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 }\n\n connectedCallback() {\n this.columnServiceSet();\n this.selectionServiceSet(this.selectionStore);\n }\n\n disconnectedCallback() {\n // clear subscriptions\n this.unsubscribeSelectionStore.forEach(v => v());\n this.unsubscribeSelectionStore.length = 0;\n this.columnService?.destroy();\n }\n\n async componentWillRender() {\n const editCell = this.selectionStore.get('edit');\n if (!editCell) {\n await this.revogrEdit?.beforeDisconnect?.();\n }\n }\n\n private renderRange(range: RangeArea) {\n const cell = getCell(\n range,\n this.dimensionRow.state,\n this.dimensionCol.state,\n );\n const styles = styleByCellProps(cell);\n return [\n <div class={SELECTION_BORDER_CLASS} style={styles}>\n {this.isMobileDevice && (\n <div class=\"range-handlers\">\n <span class={MOBILE_CLASS}></span>\n <span class={MOBILE_CLASS}></span>\n </div>\n )}\n </div>,\n ];\n }\n\n private renderEditor() {\n // Check if edit access\n const editCell = this.selectionStore.get('edit');\n // Readonly or Editor closed\n if (this.readonly || !editCell) {\n return null;\n }\n const enteredOrModelValue =\n editCell.val ||\n getCellData(\n this.columnService.rowDataModel(editCell.y, editCell.x).value\n );\n const editable = {\n ...editCell,\n ...this.columnService.getSaveData(\n editCell.y,\n editCell.x,\n enteredOrModelValue,\n ),\n };\n const renderEvent = this.beforeEditRender.emit({\n range: {\n ...editCell,\n x1: editCell.x,\n y1: editCell.y,\n },\n ...this.types,\n rowDimension: { ...this.dimensionRow.state },\n colDimension: { ...this.dimensionCol.state },\n });\n\n // Render prevented\n if (renderEvent.defaultPrevented) {\n return null;\n }\n\n const cell = getCell(\n renderEvent.detail.range,\n renderEvent.detail.rowDimension,\n renderEvent.detail.colDimension,\n );\n const styles = styleByCellProps(cell);\n return (\n <revogr-edit\n style={styles}\n ref={el => (this.revogrEdit = el)}\n additionalData={this.additionalData}\n editCell={editable}\n saveOnClose={this.applyChangesOnClose}\n column={this.columnService.rowDataModel(editCell.y, editCell.x)}\n editor={this.columnService.getCellEditor(\n editCell.y,\n editCell.x,\n this.editors,\n )}\n onCloseedit={e => this.closeEdit(e)}\n onCelledit={e => {\n const saveEv = this.beforeCellSave.emit(e.detail);\n if (!saveEv.defaultPrevented) {\n this.cellEdit(saveEv.detail);\n }\n\n // if not clear navigate to next cell after edit\n if (!saveEv.detail.preventFocus) {\n this.focusNext();\n }\n }}\n />\n );\n }\n\n render() {\n const nodes: VNode[] = [];\n const editCell = this.renderEditor();\n\n // Editor\n if (editCell) {\n nodes.push(editCell);\n } else {\n const range = this.selectionStore.get('range');\n const focus = this.selectionStore.get('focus');\n\n // Clipboard\n if ((range || focus) && this.useClipboard) {\n nodes.push(\n <revogr-clipboard\n readonly={this.readonly}\n onCopyregion={e => this.onCopy(e.detail)}\n onClearregion={() => !this.readonly && this.clearCell()}\n ref={e => (this.clipboard = e)}\n onPasteregion={e => this.onPaste(e.detail)}\n />,\n );\n }\n\n // Range\n if (range) {\n nodes.push(...this.renderRange(range));\n }\n // Autofill\n if (focus && !this.readonly && this.range) {\n nodes.push(this.autoFillService?.renderAutofill(range, focus));\n }\n\n // Order\n if (this.canDrag) {\n nodes.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 rowType={this.types.rowType}\n onRowdragstartinit={e => this.rowDragStart(e)}\n />,\n );\n }\n }\n return (\n <Host\n class={{ mobile: this.isMobileDevice }}\n onDblClick={(e: MouseEvent) => this.onElementDblClick(e)}\n onMouseDown={(e: MouseEvent) => this.onElementMouseDown(e)}\n onTouchStart={(e: TouchEvent) => this.onElementMouseDown(e, true)}\n >\n {nodes}\n <slot name=\"data\" />\n </Host>\n );\n }\n\n /**\n * Executes the focus operation on the specified range of cells.\n */\n private doFocus(focus: Cell, end: Cell, changes?: Partial<Cell>) {\n // 1. Trigger beforeFocus event\n const { defaultPrevented } = this.beforeFocusCell.emit(\n this.columnService.getSaveData(focus.y, focus.x),\n );\n if (defaultPrevented) {\n return false;\n }\n const evData: FocusRenderEvent = {\n range: {\n ...focus,\n x1: end.x,\n y1: end.y,\n },\n next: changes,\n ...this.types,\n rowDimension: { ...this.dimensionRow.state },\n colDimension: { ...this.dimensionCol.state },\n };\n\n // 2. Trigger apply focus event\n const applyEvent = this.applyFocus.emit(evData);\n if (applyEvent.defaultPrevented) {\n return false;\n }\n const { range } = applyEvent.detail;\n\n // 3. Trigger focus event\n return !this.focusCell.emit({\n focus: {\n x: range.x,\n y: range.y,\n },\n end: {\n x: range.x1,\n y: range.y1,\n },\n ...applyEvent.detail,\n }).defaultPrevented;\n }\n\n private triggerRangeEvent(range: RangeArea) {\n const type = this.types.rowType;\n // 1. Apply range\n const applyEvent = this.beforeApplyRange.emit({\n range: { ...range },\n ...this.types,\n rowDimension: { ...this.dimensionRow.state },\n colDimension: { ...this.dimensionCol.state },\n });\n if (applyEvent.defaultPrevented) {\n return false;\n }\n const data = this.columnService.getRangeTransformedToProps(\n applyEvent.detail.range,\n this.dataStore,\n );\n // 2. Before set range\n let e = this.beforeSetRange.emit(data);\n if (e.defaultPrevented) {\n return false;\n }\n // 3. Set range\n e = this.setRange.emit({ ...applyEvent.detail.range, type });\n if (e.defaultPrevented) {\n return false;\n }\n return !e.defaultPrevented;\n }\n\n /**\n * Open Editor on DblClick\n */\n private onElementDblClick(e: MouseEvent) {\n // DblClick prevented outside - Editor will not open\n if (e.defaultPrevented) {\n return;\n }\n\n // Get data from the component\n const data = this.getData();\n const focusCell = getFocusCellBasedOnEvent(e, data);\n if (!focusCell) {\n return;\n }\n this.doEdit();\n }\n\n /**\n * Handle mouse down event on Host element\n */\n private onElementMouseDown(e: MouseEvent | TouchEvent, touch = false) {\n // Get the target element from the event object\n const targetElement = e.target as HTMLElement | undefined;\n // Ignore focus if clicked input\n if (isEditInput(targetElement) || e.defaultPrevented) {\n return;\n }\n\n // Get data from the component\n const data = this.getData();\n const focusCell = getFocusCellBasedOnEvent(e, data);\n if (!focusCell) {\n return;\n }\n\n // Set focus on the current cell\n this.focus(focusCell, this.range && e.shiftKey);\n\n // Initiate autofill selection\n if (this.range) {\n targetElement &&\n this.autoFillService?.selectionStart(targetElement, this.getData());\n\n // Prevent default behavior for mouse events,\n // but only if target element is not a mobile input\n if (!touch) {\n e.preventDefault();\n } else if (\n verifyTouchTarget((e as TouchEvent).touches[0], MOBILE_CLASS)\n ) {\n // Prevent default behavior for touch events\n // if target element is a mobile input\n e.preventDefault();\n }\n }\n }\n\n /**\n * Start cell editing\n */\n protected doEdit(val = '') {\n if (this.canEdit()) {\n const focus = this.selectionStore.get('focus');\n if (!focus) {\n return;\n }\n const data = this.columnService.getSaveData(focus.y, focus.x);\n this.setEdit?.emit({\n ...data,\n val,\n });\n }\n }\n\n /**\n * Close editor event triggered\n * @param details - if it requires focus next\n */\n private async closeEdit(e?: CustomEvent<boolean | undefined>) {\n this.cancelEdit.emit();\n if (e?.detail) {\n await this.focusNext();\n }\n }\n\n /**\n * Edit finished.\n * Close Editor and save.\n */\n protected cellEdit(e: SaveDataDetails) {\n const dataToSave = this.columnService.getSaveData(e.rgRow, e.rgCol, e.val);\n this.cellEditApply.emit(dataToSave);\n }\n\n private getRegion() {\n const focus = this.selectionStore.get('focus');\n let range = this.selectionStore.get('range');\n if (!range) {\n range = getRange(focus, focus);\n }\n return range;\n }\n private onCopy(e: DataTransfer) {\n const range = this.getRegion();\n const canCopyEvent = this.beforeCopyRegion.emit(range);\n if (canCopyEvent.defaultPrevented) {\n return false;\n }\n let rangeData: DataFormat[][] | undefined;\n\n if (range) {\n const { data, mapping } = this.columnService.copyRangeArray(\n range,\n this.dataStore,\n );\n const event = this.rangeClipboardCopy.emit({\n range,\n data,\n mapping,\n ...this.types,\n });\n if (!event.defaultPrevented) {\n rangeData = event.detail.data;\n }\n }\n\n this.clipboard?.doCopy(e, rangeData);\n return true;\n }\n\n private onPaste(data: string[][]) {\n const focus = this.selectionStore.get('focus');\n const isEditing = this.selectionStore.get('edit') !== null;\n if (!focus || isEditing) {\n return;\n }\n let { changed, range } = this.columnService.getTransformedDataToApply(\n focus,\n data,\n );\n const { defaultPrevented: canPaste } = this.rangeClipboardPaste.emit({\n data: changed,\n models: collectModelsOfRange(changed, this.dataStore),\n range,\n ...this.types,\n });\n\n if (canPaste) {\n return;\n }\n this.autoFillService?.onRangeApply(changed, range);\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 const range = this.selectionStore.get('range');\n if (range && !isRangeSingleCell(range)) {\n const data = this.columnService.getRangeStaticData(range, '');\n this.autoFillService?.onRangeApply(data, range);\n } else if (this.canEdit()) {\n const focused = this.selectionStore.get('focus');\n if (!focused) {\n return;\n }\n const cell = this.columnService.getSaveData(focused.y, focused.x);\n this.cellEdit({\n rgRow: focused.y,\n rgCol: focused.x,\n val: '',\n type: cell.type,\n prop: cell.prop,\n });\n }\n }\n\n private rowDragStart({ detail }: CustomEvent<{ cell: Cell; text: string }>) {\n detail.text = getCellData(\n this.columnService.rowDataModel(detail.cell.y, detail.cell.x).value\n );\n }\n\n /**\n * Verify if edit allowed.\n */\n protected canEdit() {\n if (this.readonly) {\n return false;\n }\n const focus = this.selectionStore.get('focus');\n return focus && !this.columnService?.isReadOnly(focus.y, focus.x);\n }\n\n get edited() {\n return this.selectionStore.get('edit');\n }\n\n /**\n * Sets the focus on a cell and optionally edits a range.\n */\n focus(cell?: Cell, isRangeEdit = false) {\n if (!cell) return false;\n\n const end = cell;\n const start = this.selectionStore.get('focus');\n\n if (isRangeEdit && start) {\n const range = getRange(start, end);\n if (range) {\n return this.triggerRangeEvent(range);\n }\n }\n\n return this.doFocus(cell, end);\n }\n\n get types(): AllDimensionType {\n return {\n rowType: this.dataStore.get('type'),\n colType: this.columnService.type,\n };\n }\n\n /**\n * Collect data\n */\n protected getData(): EventData {\n return {\n el: this.element,\n rows: this.dimensionRow.state,\n cols: this.dimensionCol.state,\n lastCell: this.lastCell,\n focus: this.selectionStore.get('focus'),\n range: this.selectionStore.get('range'),\n edit: this.selectionStore.get('edit'),\n };\n }\n}\n"]}
@@ -1594,7 +1594,7 @@ export class RevoGridComponent {
1594
1594
  "composed": true,
1595
1595
  "docs": {
1596
1596
  "tags": [],
1597
- "text": "This event is triggered before the data is edited.\nTo prevent the default behavior of editing data and use your own implementation, call `e.preventDefault()`.\nTo override the edit result with your own value, set the `e.val` property to your desired value."
1597
+ "text": "Before the data is edited.\nTo prevent the default behavior of editing data and use your own implementation, call `e.preventDefault()`.\nTo override the edit result with your own value, set the `e.val` property to your desired value."
1598
1598
  },
1599
1599
  "complexType": {
1600
1600
  "original": "BeforeSaveDataDetails",
@@ -1615,7 +1615,7 @@ export class RevoGridComponent {
1615
1615
  "composed": true,
1616
1616
  "docs": {
1617
1617
  "tags": [],
1618
- "text": "This event is triggered before applying range data, specifically when a range selection occurs.\nTo customize the data and prevent the default edit data from being set, you can call `e.preventDefault()`."
1618
+ "text": "Before applying range data, specifically when a range selection occurs.\nTo customize the data and prevent the default edit data from being set, you can call `e.preventDefault()`."
1619
1619
  },
1620
1620
  "complexType": {
1621
1621
  "original": "BeforeRangeSaveDataDetails",
@@ -1636,7 +1636,7 @@ export class RevoGridComponent {
1636
1636
  "composed": true,
1637
1637
  "docs": {
1638
1638
  "tags": [],
1639
- "text": "Triggered after data applied or range changed."
1639
+ "text": "After data applied or range changed."
1640
1640
  },
1641
1641
  "complexType": {
1642
1642
  "original": "AfterEditEvent",
@@ -1657,7 +1657,7 @@ export class RevoGridComponent {
1657
1657
  "composed": true,
1658
1658
  "docs": {
1659
1659
  "tags": [],
1660
- "text": "This event is triggered before autofill is applied.\nTo prevent the default behavior of applying the edit data, you can call `e.preventDefault()`."
1660
+ "text": "Before autofill is applied.\nTo prevent the default behavior of applying the edit data, you can call `e.preventDefault()`."
1661
1661
  },
1662
1662
  "complexType": {
1663
1663
  "original": "ChangedRange",
@@ -1678,7 +1678,7 @@ export class RevoGridComponent {
1678
1678
  "composed": true,
1679
1679
  "docs": {
1680
1680
  "tags": [],
1681
- "text": "Triggered before range applied.\nUse e.preventDefault() to prevent range."
1681
+ "text": "Before autofill is applied. Runs before beforeautofill event.\nUse e.preventDefault() to prevent range."
1682
1682
  },
1683
1683
  "complexType": {
1684
1684
  "original": "ChangedRange",
@@ -1699,7 +1699,7 @@ export class RevoGridComponent {
1699
1699
  "composed": true,
1700
1700
  "docs": {
1701
1701
  "tags": [],
1702
- "text": "Triggered after focus render finished.\nCan be used to access a focus element through `event.target`.\nThis is just a duplicate of `afterfocus` from `revogr-focus.tsx`."
1702
+ "text": "After focus render finished.\nCan be used to access a focus element through `event.target`.\nThis is just a duplicate of `afterfocus` from `revogr-focus.tsx`."
1703
1703
  },
1704
1704
  "complexType": {
1705
1705
  "original": "FocusAfterRenderEvent",
@@ -1720,7 +1720,7 @@ export class RevoGridComponent {
1720
1720
  "composed": true,
1721
1721
  "docs": {
1722
1722
  "tags": [],
1723
- "text": "This event is triggered before the order of `rgRow` is applied.\nTo prevent the default behavior of changing the order of `rgRow`, you can call `e.preventDefault()`."
1723
+ "text": "Before the order of `rgRow` is applied.\nTo prevent the default behavior of changing the order of `rgRow`, you can call `e.preventDefault()`."
1724
1724
  },
1725
1725
  "complexType": {
1726
1726
  "original": "{ from: number; to: number }",
@@ -1735,7 +1735,7 @@ export class RevoGridComponent {
1735
1735
  "composed": true,
1736
1736
  "docs": {
1737
1737
  "tags": [],
1738
- "text": "Triggered by sorting.plugin.ts\nBefore sorting apply.\nUse e.preventDefault() to prevent sorting data change."
1738
+ "text": "By sorting.plugin.ts\nBefore sorting apply.\nUse e.preventDefault() to prevent sorting data change."
1739
1739
  },
1740
1740
  "complexType": {
1741
1741
  "original": "{\n column: ColumnRegular;\n order: 'desc' | 'asc';\n additive: boolean;\n }",
@@ -1756,7 +1756,7 @@ export class RevoGridComponent {
1756
1756
  "composed": true,
1757
1757
  "docs": {
1758
1758
  "tags": [],
1759
- "text": "Triggered by sorting.plugin.ts\nBefore sorting event.\nInitial sorting triggered, if this event stops no other event called.\nUse e.preventDefault() to prevent sorting."
1759
+ "text": "By sorting.plugin.ts\nBefore sorting event.\nInitial sorting triggered, if this event stops no other event called.\nUse e.preventDefault() to prevent sorting."
1760
1760
  },
1761
1761
  "complexType": {
1762
1762
  "original": "{\n column: ColumnRegular;\n order: 'desc' | 'asc';\n additive: boolean;\n }",
@@ -1819,7 +1819,7 @@ export class RevoGridComponent {
1819
1819
  "composed": true,
1820
1820
  "docs": {
1821
1821
  "tags": [],
1822
- "text": "This event is triggered before the cell focus is changed.\nTo prevent the default behavior of changing the cell focus, you can call `e.preventDefault()`."
1822
+ "text": "Before the cell focus is changed.\nTo prevent the default behavior of changing the cell focus, you can call `e.preventDefault()`."
1823
1823
  },
1824
1824
  "complexType": {
1825
1825
  "original": "BeforeSaveDataDetails",
@@ -1840,7 +1840,7 @@ export class RevoGridComponent {
1840
1840
  "composed": true,
1841
1841
  "docs": {
1842
1842
  "tags": [],
1843
- "text": "This event is triggered before the grid focus is lost.\nTo prevent the default behavior of changing the cell focus, you can call `e.preventDefault()`."
1843
+ "text": "Before the grid focus is lost.\nTo prevent the default behavior of changing the cell focus, you can call `e.preventDefault()`."
1844
1844
  },
1845
1845
  "complexType": {
1846
1846
  "original": "FocusedData | null",