@ai-table/grid 0.0.73 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/angular-konva/components/container.component.d.ts.map +1 -1
- package/angular-konva/components/shape.component.d.ts.map +1 -1
- package/angular-konva/components/stage.component.d.ts.map +1 -1
- package/components/cell-editors/abstract-cell-editor.component.d.ts.map +1 -1
- package/components/cell-editors/date/date-editor.component.d.ts.map +1 -1
- package/components/cell-editors/link/edit-link/edit-link.component.d.ts.map +1 -1
- package/components/cell-editors/link/link-editor.component.d.ts.map +1 -1
- package/components/cell-editors/number/number-editor.component.d.ts.map +1 -1
- package/components/cell-editors/select/select-editor.component.d.ts.map +1 -1
- package/components/cell-editors/text/text-editor.component.d.ts.map +1 -1
- package/components/cell-views/select/option.component.d.ts.map +1 -1
- package/components/context-menu/context-menu.component.d.ts.map +1 -1
- package/components/drag/drag.component.d.ts.map +1 -1
- package/components/field-menu/field-menu.component.d.ts.map +1 -1
- package/components/field-setting/field-setting.component.d.ts.map +1 -1
- package/core/context.d.ts +2 -0
- package/core/context.d.ts.map +1 -1
- package/core/types/ai-table.d.ts.map +1 -1
- package/core/utils/field.d.ts.map +1 -1
- package/core/utils/queries.d.ts.map +1 -1
- package/core/utils/short-id.d.ts.map +1 -1
- package/dom-grid.component.d.ts.map +1 -1
- package/fesm2022/ai-table-grid.mjs +322 -310
- package/fesm2022/ai-table-grid.mjs.map +1 -1
- package/grid-base.component.d.ts +3 -1
- package/grid-base.component.d.ts.map +1 -1
- package/grid.component.d.ts +1 -1
- package/grid.component.d.ts.map +1 -1
- package/package.json +3 -5
- package/pipes/grid.pipe.d.ts.map +1 -1
- package/renderer/components/action-icon.component.d.ts.map +1 -1
- package/renderer/components/add-field-column.component.d.ts.map +1 -1
- package/renderer/components/cells/attachment.component.d.ts.map +1 -1
- package/renderer/components/cells/link.component.d.ts.map +1 -1
- package/renderer/components/cells/progress.component.d.ts.map +1 -1
- package/renderer/components/cells/rate.component.d.ts.map +1 -1
- package/renderer/components/cells/rich-text.component.d.ts.map +1 -1
- package/renderer/components/cells.component.d.ts.map +1 -1
- package/renderer/components/field-head.component.d.ts +2 -2
- package/renderer/components/field-head.component.d.ts.map +1 -1
- package/renderer/components/field-icon.component.d.ts.map +1 -1
- package/renderer/components/frozen-cells.component.d.ts.map +1 -1
- package/renderer/components/frozen-heads.component.d.ts +1 -1
- package/renderer/components/frozen-heads.component.d.ts.map +1 -1
- package/renderer/components/frozen-placeholder-cells.component.d.ts.map +1 -1
- package/renderer/components/heads.component.d.ts +1 -1
- package/renderer/components/heads.component.d.ts.map +1 -1
- package/renderer/components/hover-cell.component.d.ts.map +1 -1
- package/renderer/components/hover-row-heads.component.d.ts.map +1 -1
- package/renderer/components/icon.component.d.ts.map +1 -1
- package/renderer/components/other-rows.component.d.ts.map +1 -1
- package/renderer/components/placeholder-cells.component.d.ts.map +1 -1
- package/renderer/components/text.component.d.ts.map +1 -1
- package/renderer/creations/create-active-cell-border.d.ts.map +1 -1
- package/renderer/creations/create-cells.d.ts.map +1 -1
- package/renderer/creations/create-heads.d.ts.map +1 -1
- package/renderer/drawers/add-row-layout-drawer.d.ts +1 -1
- package/renderer/drawers/add-row-layout-drawer.d.ts.map +1 -1
- package/renderer/drawers/cell-drawer.d.ts.map +1 -1
- package/renderer/drawers/drawer.d.ts +1 -1
- package/renderer/renderer.component.d.ts +5 -4
- package/renderer/renderer.component.d.ts.map +1 -1
- package/types/cell.d.ts +2 -0
- package/types/cell.d.ts.map +1 -1
- package/types/component-config.d.ts +2 -0
- package/types/component-config.d.ts.map +1 -1
- package/types/grid.d.ts +4 -0
- package/types/grid.d.ts.map +1 -1
- package/types/row.d.ts +1 -0
- package/types/row.d.ts.map +1 -1
- package/utils/build.d.ts.map +1 -1
- package/utils/clipboard/clipboard.d.ts.map +1 -1
- package/utils/clipboard/copy.d.ts.map +1 -1
- package/utils/clipboard/paste.d.ts +5 -1
- package/utils/clipboard/paste.d.ts.map +1 -1
- package/utils/common.d.ts.map +1 -1
- package/utils/field/model/date.d.ts.map +1 -1
- package/utils/field/model/link.d.ts.map +1 -1
- package/utils/field/model/progress.d.ts.map +1 -1
- package/utils/field/model/text.d.ts.map +1 -1
- package/utils/get-text-width.d.ts.map +1 -1
- package/utils/i18n.d.ts +2 -0
- package/utils/i18n.d.ts.map +1 -1
- package/utils/match-keywords.d.ts.map +1 -1
- package/utils/position.d.ts.map +1 -1
- package/utils/style.d.ts.map +1 -1
- package/utils/text-measure.d.ts.map +1 -1
- package/utils/visible-range.d.ts.map +1 -1
- package/esm2022/ai-table-grid.mjs +0 -5
- package/esm2022/angular-konva/components/container.component.mjs +0 -29
- package/esm2022/angular-konva/components/container.token.mjs +0 -3
- package/esm2022/angular-konva/components/index.mjs +0 -4
- package/esm2022/angular-konva/components/shape.component.mjs +0 -142
- package/esm2022/angular-konva/components/stage.component.mjs +0 -123
- package/esm2022/angular-konva/index.mjs +0 -5
- package/esm2022/angular-konva/interfaces/component.mjs +0 -4
- package/esm2022/angular-konva/interfaces/config.mjs +0 -2
- package/esm2022/angular-konva/interfaces/event-object.mjs +0 -2
- package/esm2022/angular-konva/interfaces/index.mjs +0 -5
- package/esm2022/angular-konva/interfaces/shape.mjs +0 -42
- package/esm2022/angular-konva/utils/apply-node-props.mjs +0 -67
- package/esm2022/angular-konva/utils/common.mjs +0 -48
- package/esm2022/angular-konva/utils/index.mjs +0 -5
- package/esm2022/angular-konva/utils/types.mjs +0 -2
- package/esm2022/angular-konva/utils/update-picture.mjs +0 -7
- package/esm2022/components/cell-editors/abstract-cell-editor.component.mjs +0 -56
- package/esm2022/components/cell-editors/date/date-editor.component.mjs +0 -87
- package/esm2022/components/cell-editors/link/edit-link/edit-link.component.mjs +0 -81
- package/esm2022/components/cell-editors/link/link-editor.component.mjs +0 -122
- package/esm2022/components/cell-editors/number/number-editor.component.mjs +0 -41
- package/esm2022/components/cell-editors/select/select-editor.component.mjs +0 -74
- package/esm2022/components/cell-editors/text/text-editor.component.mjs +0 -76
- package/esm2022/components/cell-views/select/option.component.mjs +0 -28
- package/esm2022/components/context-menu/context-menu.component.mjs +0 -42
- package/esm2022/components/drag/drag.component.mjs +0 -300
- package/esm2022/components/field-menu/field-menu.component.mjs +0 -47
- package/esm2022/components/field-setting/field-setting.component.mjs +0 -142
- package/esm2022/components/index.mjs +0 -10
- package/esm2022/constants/colors.mjs +0 -19
- package/esm2022/constants/editor.mjs +0 -11
- package/esm2022/constants/file-icon.mjs +0 -342
- package/esm2022/constants/grid.mjs +0 -35
- package/esm2022/constants/icon.mjs +0 -30
- package/esm2022/constants/index.mjs +0 -7
- package/esm2022/constants/table.mjs +0 -78
- package/esm2022/constants/text.mjs +0 -23
- package/esm2022/core/constants/field.mjs +0 -107
- package/esm2022/core/context.mjs +0 -29
- package/esm2022/core/coordinate.mjs +0 -222
- package/esm2022/core/index.mjs +0 -6
- package/esm2022/core/types/ai-table.mjs +0 -57
- package/esm2022/core/types/core.mjs +0 -2
- package/esm2022/core/types/index.mjs +0 -3
- package/esm2022/core/utils/common.mjs +0 -45
- package/esm2022/core/utils/field.mjs +0 -64
- package/esm2022/core/utils/id-creator.mjs +0 -21
- package/esm2022/core/utils/index.mjs +0 -5
- package/esm2022/core/utils/queries.mjs +0 -80
- package/esm2022/core/utils/short-id.mjs +0 -53
- package/esm2022/dom-grid.component.mjs +0 -80
- package/esm2022/grid-base.component.mjs +0 -145
- package/esm2022/grid.component.mjs +0 -649
- package/esm2022/index.mjs +0 -2
- package/esm2022/pipes/grid.pipe.mjs +0 -110
- package/esm2022/pipes/index.mjs +0 -2
- package/esm2022/public-api.mjs +0 -12
- package/esm2022/renderer/components/action-icon.component.mjs +0 -117
- package/esm2022/renderer/components/add-field-column.component.mjs +0 -88
- package/esm2022/renderer/components/cells/attachment.component.mjs +0 -107
- package/esm2022/renderer/components/cells/cells.mjs +0 -6
- package/esm2022/renderer/components/cells/index.mjs +0 -7
- package/esm2022/renderer/components/cells/link.component.mjs +0 -89
- package/esm2022/renderer/components/cells/progress.component.mjs +0 -268
- package/esm2022/renderer/components/cells/rate.component.mjs +0 -153
- package/esm2022/renderer/components/cells/rich-text.component.mjs +0 -95
- package/esm2022/renderer/components/cells.component.mjs +0 -35
- package/esm2022/renderer/components/field-head.component.mjs +0 -146
- package/esm2022/renderer/components/field-icon.component.mjs +0 -72
- package/esm2022/renderer/components/frozen-cells.component.mjs +0 -36
- package/esm2022/renderer/components/frozen-heads.component.mjs +0 -214
- package/esm2022/renderer/components/frozen-placeholder-cells.component.mjs +0 -38
- package/esm2022/renderer/components/heads.component.mjs +0 -38
- package/esm2022/renderer/components/hover-cell.component.mjs +0 -104
- package/esm2022/renderer/components/hover-row-heads.component.mjs +0 -132
- package/esm2022/renderer/components/icon.component.mjs +0 -84
- package/esm2022/renderer/components/index.mjs +0 -15
- package/esm2022/renderer/components/other-rows.component.mjs +0 -68
- package/esm2022/renderer/components/placeholder-cells.component.mjs +0 -33
- package/esm2022/renderer/components/text.component.mjs +0 -67
- package/esm2022/renderer/creations/create-active-cell-border.mjs +0 -70
- package/esm2022/renderer/creations/create-cells.mjs +0 -190
- package/esm2022/renderer/creations/create-heads.mjs +0 -51
- package/esm2022/renderer/drawers/add-row-layout-drawer.mjs +0 -98
- package/esm2022/renderer/drawers/cell-drawer.mjs +0 -673
- package/esm2022/renderer/drawers/drawer.mjs +0 -947
- package/esm2022/renderer/drawers/layout-drawer.mjs +0 -64
- package/esm2022/renderer/drawers/record-row-layout-drawer.mjs +0 -131
- package/esm2022/renderer/index.mjs +0 -4
- package/esm2022/renderer/interfaces/hover-cell.mjs +0 -4
- package/esm2022/renderer/interfaces/index.mjs +0 -2
- package/esm2022/renderer/renderer.component.mjs +0 -197
- package/esm2022/services/event.service.mjs +0 -241
- package/esm2022/services/field.service.mjs +0 -56
- package/esm2022/services/index.mjs +0 -4
- package/esm2022/services/selection.service.mjs +0 -151
- package/esm2022/types/avatar.mjs +0 -27
- package/esm2022/types/canvas.mjs +0 -2
- package/esm2022/types/cell.mjs +0 -2
- package/esm2022/types/clipboard.mjs +0 -2
- package/esm2022/types/component-config.mjs +0 -7
- package/esm2022/types/field.mjs +0 -2
- package/esm2022/types/grid.mjs +0 -17
- package/esm2022/types/index.mjs +0 -10
- package/esm2022/types/layout.mjs +0 -2
- package/esm2022/types/row.mjs +0 -6
- package/esm2022/utils/build.mjs +0 -39
- package/esm2022/utils/cell.mjs +0 -80
- package/esm2022/utils/clear-cells.mjs +0 -23
- package/esm2022/utils/clipboard/clipboard.mjs +0 -88
- package/esm2022/utils/clipboard/copy.mjs +0 -99
- package/esm2022/utils/clipboard/extract.mjs +0 -38
- package/esm2022/utils/clipboard/index.mjs +0 -5
- package/esm2022/utils/clipboard/paste.mjs +0 -188
- package/esm2022/utils/common.mjs +0 -50
- package/esm2022/utils/field/field-operable.mjs +0 -2
- package/esm2022/utils/field/field.mjs +0 -20
- package/esm2022/utils/field/index.mjs +0 -4
- package/esm2022/utils/field/model/attachment.mjs +0 -56
- package/esm2022/utils/field/model/date.mjs +0 -141
- package/esm2022/utils/field/model/index.mjs +0 -12
- package/esm2022/utils/field/model/link.mjs +0 -56
- package/esm2022/utils/field/model/member.mjs +0 -81
- package/esm2022/utils/field/model/number.mjs +0 -59
- package/esm2022/utils/field/model/progress.mjs +0 -69
- package/esm2022/utils/field/model/rate.mjs +0 -58
- package/esm2022/utils/field/model/rich-text.mjs +0 -39
- package/esm2022/utils/field/model/select.mjs +0 -131
- package/esm2022/utils/field/model/text.mjs +0 -32
- package/esm2022/utils/field/operate.mjs +0 -73
- package/esm2022/utils/file.mjs +0 -116
- package/esm2022/utils/get-placeholder-cells.mjs +0 -66
- package/esm2022/utils/get-text-width.mjs +0 -30
- package/esm2022/utils/hover-cell.mjs +0 -25
- package/esm2022/utils/i18n.mjs +0 -87
- package/esm2022/utils/image-cache.mjs +0 -57
- package/esm2022/utils/index.mjs +0 -19
- package/esm2022/utils/match-keywords.mjs +0 -15
- package/esm2022/utils/os.mjs +0 -16
- package/esm2022/utils/position.mjs +0 -48
- package/esm2022/utils/style.mjs +0 -37
- package/esm2022/utils/text-measure.mjs +0 -122
- package/esm2022/utils/visible-range.mjs +0 -42
@@ -1,48 +0,0 @@
|
|
1
|
-
import { AI_TABLE_BLANK, AI_TABLE_CELL_ACTIVE_BORDER_WIDTH, AI_TABLE_OFFSET } from '../constants';
|
2
|
-
import { AITableAreaType } from '../types';
|
3
|
-
import { getTargetName } from './common';
|
4
|
-
import { scrollMax } from './visible-range';
|
5
|
-
export const getMousePosition = (aiTable, x, y, coordinate, fields, context, _targetName) => {
|
6
|
-
const { scrollTop, scrollLeft } = context.scrollState();
|
7
|
-
const { scrollMaxWidth, scrollMaxHeight } = scrollMax(aiTable, coordinate, fields);
|
8
|
-
const offsetTop = scrollTop + y;
|
9
|
-
const rowIndex = coordinate.getRowStartIndex(offsetTop);
|
10
|
-
const offsetLeft = isWithinFrozenColumnBoundary(x, coordinate.frozenColumnWidth, context.rowHeadWidth()) ? x : scrollLeft + x;
|
11
|
-
const columnIndex = coordinate.getColumnStartIndex(offsetLeft);
|
12
|
-
const areaType = offsetLeft <= scrollMaxWidth && offsetTop <= scrollMaxHeight ? AITableAreaType.grid : AITableAreaType.none;
|
13
|
-
const targetName = getTargetName(_targetName);
|
14
|
-
return {
|
15
|
-
areaType,
|
16
|
-
targetName, // As a simple operational identifier, with prefix name only
|
17
|
-
realTargetName: _targetName || AI_TABLE_BLANK, // Real name
|
18
|
-
rowIndex,
|
19
|
-
columnIndex,
|
20
|
-
offsetTop,
|
21
|
-
offsetLeft,
|
22
|
-
x,
|
23
|
-
y
|
24
|
-
};
|
25
|
-
};
|
26
|
-
export const isWithinFrozenColumnBoundary = (x, frozenColumnWidth, rowHeadWidth) => {
|
27
|
-
const max = rowHeadWidth + frozenColumnWidth;
|
28
|
-
const min = rowHeadWidth;
|
29
|
-
return x > min && x < max;
|
30
|
-
};
|
31
|
-
export const getEditorSpace = (widthOrHeight) => {
|
32
|
-
return widthOrHeight + AI_TABLE_OFFSET * 2;
|
33
|
-
};
|
34
|
-
export const getEditorBoxOffset = () => {
|
35
|
-
return -AI_TABLE_OFFSET;
|
36
|
-
};
|
37
|
-
export const getCellEditorBorderSpace = () => {
|
38
|
-
return AI_TABLE_CELL_ACTIVE_BORDER_WIDTH * 2 - AI_TABLE_OFFSET * 2;
|
39
|
-
};
|
40
|
-
export const getHoverEditorSpace = (widthOrHeight) => {
|
41
|
-
const borderSpace = getCellEditorBorderSpace();
|
42
|
-
return widthOrHeight - borderSpace;
|
43
|
-
};
|
44
|
-
export const getHoverEditorBoxOffset = () => {
|
45
|
-
const borderSpace = getCellEditorBorderSpace();
|
46
|
-
return borderSpace / 2;
|
47
|
-
};
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy91dGlscy9wb3NpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGlDQUFpQyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzVDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQzVCLE9BQWdCLEVBQ2hCLENBQVMsRUFDVCxDQUFTLEVBQ1QsVUFBc0IsRUFDdEIsTUFBc0IsRUFDdEIsT0FBd0IsRUFDeEIsV0FBb0IsRUFDdEIsRUFBRTtJQUNBLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hELE1BQU0sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkYsTUFBTSxTQUFTLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNoQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEQsTUFBTSxVQUFVLEdBQUcsNEJBQTRCLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQzlILE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvRCxNQUFNLFFBQVEsR0FBRyxVQUFVLElBQUksY0FBYyxJQUFJLFNBQVMsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDNUgsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLE9BQU87UUFDSCxRQUFRO1FBQ1IsVUFBVSxFQUFFLDREQUE0RDtRQUN4RSxjQUFjLEVBQUUsV0FBVyxJQUFJLGNBQWMsRUFBRSxZQUFZO1FBQzNELFFBQVE7UUFDUixXQUFXO1FBQ1gsU0FBUztRQUNULFVBQVU7UUFDVixDQUFDO1FBQ0QsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLENBQVMsRUFBRSxpQkFBeUIsRUFBRSxZQUFvQixFQUFFLEVBQUU7SUFDdkcsTUFBTSxHQUFHLEdBQUcsWUFBWSxHQUFHLGlCQUFpQixDQUFDO0lBQzdDLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQztJQUN6QixPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUM5QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxhQUFxQixFQUFFLEVBQUU7SUFDcEQsT0FBTyxhQUFhLEdBQUcsZUFBZSxHQUFHLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7SUFDbkMsT0FBTyxDQUFDLGVBQWUsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLEVBQUU7SUFDekMsT0FBTyxpQ0FBaUMsR0FBRyxDQUFDLEdBQUcsZUFBZSxHQUFHLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLGFBQXFCLEVBQUUsRUFBRTtJQUN6RCxNQUFNLFdBQVcsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO0lBQy9DLE9BQU8sYUFBYSxHQUFHLFdBQVcsQ0FBQztBQUN2QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLEVBQUU7SUFDeEMsTUFBTSxXQUFXLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztJQUMvQyxPQUFPLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlfVEFCTEVfQkxBTkssIEFJX1RBQkxFX0NFTExfQUNUSVZFX0JPUkRFUl9XSURUSCwgQUlfVEFCTEVfT0ZGU0VUIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFJVGFibGUsIENvb3JkaW5hdGUsIFJlbmRlcmVyQ29udGV4dCB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZUFyZWFUeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0VGFyZ2V0TmFtZSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IHNjcm9sbE1heCB9IGZyb20gJy4vdmlzaWJsZS1yYW5nZSc7XG5pbXBvcnQgeyBBSVRhYmxlRmllbGQgfSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgZ2V0TW91c2VQb3NpdGlvbiA9IChcbiAgICBhaVRhYmxlOiBBSVRhYmxlLFxuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gICAgY29vcmRpbmF0ZTogQ29vcmRpbmF0ZSxcbiAgICBmaWVsZHM6IEFJVGFibGVGaWVsZFtdLFxuICAgIGNvbnRleHQ6IFJlbmRlcmVyQ29udGV4dCxcbiAgICBfdGFyZ2V0TmFtZT86IHN0cmluZ1xuKSA9PiB7XG4gICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbExlZnQgfSA9IGNvbnRleHQuc2Nyb2xsU3RhdGUoKTtcbiAgICBjb25zdCB7IHNjcm9sbE1heFdpZHRoLCBzY3JvbGxNYXhIZWlnaHQgfSA9IHNjcm9sbE1heChhaVRhYmxlLCBjb29yZGluYXRlLCBmaWVsZHMpO1xuICAgIGNvbnN0IG9mZnNldFRvcCA9IHNjcm9sbFRvcCArIHk7XG4gICAgY29uc3Qgcm93SW5kZXggPSBjb29yZGluYXRlLmdldFJvd1N0YXJ0SW5kZXgob2Zmc2V0VG9wKTtcbiAgICBjb25zdCBvZmZzZXRMZWZ0ID0gaXNXaXRoaW5Gcm96ZW5Db2x1bW5Cb3VuZGFyeSh4LCBjb29yZGluYXRlLmZyb3plbkNvbHVtbldpZHRoLCBjb250ZXh0LnJvd0hlYWRXaWR0aCgpKSA/IHggOiBzY3JvbGxMZWZ0ICsgeDtcbiAgICBjb25zdCBjb2x1bW5JbmRleCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uU3RhcnRJbmRleChvZmZzZXRMZWZ0KTtcbiAgICBjb25zdCBhcmVhVHlwZSA9IG9mZnNldExlZnQgPD0gc2Nyb2xsTWF4V2lkdGggJiYgb2Zmc2V0VG9wIDw9IHNjcm9sbE1heEhlaWdodCA/IEFJVGFibGVBcmVhVHlwZS5ncmlkIDogQUlUYWJsZUFyZWFUeXBlLm5vbmU7XG4gICAgY29uc3QgdGFyZ2V0TmFtZSA9IGdldFRhcmdldE5hbWUoX3RhcmdldE5hbWUpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFyZWFUeXBlLFxuICAgICAgICB0YXJnZXROYW1lLCAvLyBBcyBhIHNpbXBsZSBvcGVyYXRpb25hbCBpZGVudGlmaWVyLCB3aXRoIHByZWZpeCBuYW1lIG9ubHlcbiAgICAgICAgcmVhbFRhcmdldE5hbWU6IF90YXJnZXROYW1lIHx8IEFJX1RBQkxFX0JMQU5LLCAvLyBSZWFsIG5hbWVcbiAgICAgICAgcm93SW5kZXgsXG4gICAgICAgIGNvbHVtbkluZGV4LFxuICAgICAgICBvZmZzZXRUb3AsXG4gICAgICAgIG9mZnNldExlZnQsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzV2l0aGluRnJvemVuQ29sdW1uQm91bmRhcnkgPSAoeDogbnVtYmVyLCBmcm96ZW5Db2x1bW5XaWR0aDogbnVtYmVyLCByb3dIZWFkV2lkdGg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG1heCA9IHJvd0hlYWRXaWR0aCArIGZyb3plbkNvbHVtbldpZHRoO1xuICAgIGNvbnN0IG1pbiA9IHJvd0hlYWRXaWR0aDtcbiAgICByZXR1cm4geCA+IG1pbiAmJiB4IDwgbWF4O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVkaXRvclNwYWNlID0gKHdpZHRoT3JIZWlnaHQ6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiB3aWR0aE9ySGVpZ2h0ICsgQUlfVEFCTEVfT0ZGU0VUICogMjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFZGl0b3JCb3hPZmZzZXQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIC1BSV9UQUJMRV9PRkZTRVQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2VsbEVkaXRvckJvcmRlclNwYWNlID0gKCkgPT4ge1xuICAgIHJldHVybiBBSV9UQUJMRV9DRUxMX0FDVElWRV9CT1JERVJfV0lEVEggKiAyIC0gQUlfVEFCTEVfT0ZGU0VUICogMjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIb3ZlckVkaXRvclNwYWNlID0gKHdpZHRoT3JIZWlnaHQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGJvcmRlclNwYWNlID0gZ2V0Q2VsbEVkaXRvckJvcmRlclNwYWNlKCk7XG4gICAgcmV0dXJuIHdpZHRoT3JIZWlnaHQgLSBib3JkZXJTcGFjZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIb3ZlckVkaXRvckJveE9mZnNldCA9ICgpID0+IHtcbiAgICBjb25zdCBib3JkZXJTcGFjZSA9IGdldENlbGxFZGl0b3JCb3JkZXJTcGFjZSgpO1xuICAgIHJldHVybiBib3JkZXJTcGFjZSAvIDI7XG59O1xuIl19
|
package/esm2022/utils/style.mjs
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
import { AI_TABLE_FIELD_ADD_BUTTON, AI_TABLE_FIELD_HEAD_MORE, AI_TABLE_FIELD_HEAD_OPACITY_LINE, AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX, AI_TABLE_ROW_ADD_BUTTON, AI_TABLE_ROW_DRAG, AI_TABLE_ROW_SELECT_CHECKBOX } from '../constants';
|
2
|
-
import { AITableAreaType } from '../types';
|
3
|
-
import { getDetailByTargetName } from './common';
|
4
|
-
export const handleMouseStyle = (realTargetName, areaType = AITableAreaType.grid, container, isReadOnly, isRowDragDisabled) => {
|
5
|
-
const { targetName, mouseStyle } = getDetailByTargetName(realTargetName);
|
6
|
-
if (mouseStyle)
|
7
|
-
return setMouseStyle(mouseStyle, container);
|
8
|
-
if (areaType === AITableAreaType.none)
|
9
|
-
return setMouseStyle('default', container);
|
10
|
-
switch (targetName) {
|
11
|
-
case AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX:
|
12
|
-
case AI_TABLE_FIELD_HEAD_MORE:
|
13
|
-
case AI_TABLE_ROW_SELECT_CHECKBOX:
|
14
|
-
case AI_TABLE_ROW_ADD_BUTTON:
|
15
|
-
case AI_TABLE_FIELD_ADD_BUTTON: {
|
16
|
-
return setMouseStyle('pointer', container);
|
17
|
-
}
|
18
|
-
case AI_TABLE_FIELD_HEAD_OPACITY_LINE: {
|
19
|
-
if (isReadOnly) {
|
20
|
-
return setMouseStyle('default', container);
|
21
|
-
}
|
22
|
-
return setMouseStyle('col-resize', container);
|
23
|
-
}
|
24
|
-
case AI_TABLE_ROW_DRAG: {
|
25
|
-
if (isReadOnly || isRowDragDisabled) {
|
26
|
-
return setMouseStyle('default', container);
|
27
|
-
}
|
28
|
-
return setMouseStyle('pointer', container);
|
29
|
-
}
|
30
|
-
default:
|
31
|
-
return setMouseStyle('default', container);
|
32
|
-
}
|
33
|
-
};
|
34
|
-
export const setMouseStyle = (mouseStyle, container) => {
|
35
|
-
container.style.cursor = mouseStyle;
|
36
|
-
};
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy91dGlscy9zdHlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4QixnQ0FBZ0MsRUFDaEMsbUNBQW1DLEVBQ25DLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsNEJBQTRCLEVBQy9CLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQzVCLGNBQXNCLEVBQ3RCLFdBQTRCLGVBQWUsQ0FBQyxJQUFJLEVBQ2hELFNBQXlCLEVBQ3pCLFVBQW9CLEVBQ3BCLGlCQUEyQixFQUM3QixFQUFFO0lBQ0EsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6RSxJQUFJLFVBQVU7UUFBRSxPQUFPLGFBQWEsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUQsSUFBSSxRQUFRLEtBQUssZUFBZSxDQUFDLElBQUk7UUFBRSxPQUFPLGFBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEYsUUFBUSxVQUFVLEVBQUUsQ0FBQztRQUNqQixLQUFLLG1DQUFtQyxDQUFDO1FBQ3pDLEtBQUssd0JBQXdCLENBQUM7UUFDOUIsS0FBSyw0QkFBNEIsQ0FBQztRQUNsQyxLQUFLLHVCQUF1QixDQUFDO1FBQzdCLEtBQUsseUJBQXlCLENBQUMsQ0FBQyxDQUFDO1lBQzdCLE9BQU8sYUFBYSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsS0FBSyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDYixPQUFPLGFBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUNELE9BQU8sYUFBYSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDckIsSUFBSSxVQUFVLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxhQUFhLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxPQUFPLGFBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVEO1lBQ0ksT0FBTyxhQUFhLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFNBQXlCLEVBQUUsRUFBRTtJQUMzRSxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7QUFDeEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBSV9UQUJMRV9GSUVMRF9BRERfQlVUVE9OLFxuICAgIEFJX1RBQkxFX0ZJRUxEX0hFQURfTU9SRSxcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFEX09QQUNJVFlfTElORSxcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFEX1NFTEVDVF9DSEVDS0JPWCxcbiAgICBBSV9UQUJMRV9ST1dfQUREX0JVVFRPTixcbiAgICBBSV9UQUJMRV9ST1dfRFJBRyxcbiAgICBBSV9UQUJMRV9ST1dfU0VMRUNUX0NIRUNLQk9YXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBSVRhYmxlQXJlYVR5cGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXREZXRhaWxCeVRhcmdldE5hbWUgfSBmcm9tICcuL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVNb3VzZVN0eWxlID0gKFxuICAgIHJlYWxUYXJnZXROYW1lOiBzdHJpbmcsXG4gICAgYXJlYVR5cGU6IEFJVGFibGVBcmVhVHlwZSA9IEFJVGFibGVBcmVhVHlwZS5ncmlkLFxuICAgIGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQsXG4gICAgaXNSZWFkT25seT86IGJvb2xlYW4sXG4gICAgaXNSb3dEcmFnRGlzYWJsZWQ/OiBib29sZWFuXG4pID0+IHtcbiAgICBjb25zdCB7IHRhcmdldE5hbWUsIG1vdXNlU3R5bGUgfSA9IGdldERldGFpbEJ5VGFyZ2V0TmFtZShyZWFsVGFyZ2V0TmFtZSk7XG4gICAgaWYgKG1vdXNlU3R5bGUpIHJldHVybiBzZXRNb3VzZVN0eWxlKG1vdXNlU3R5bGUsIGNvbnRhaW5lcik7XG4gICAgaWYgKGFyZWFUeXBlID09PSBBSVRhYmxlQXJlYVR5cGUubm9uZSkgcmV0dXJuIHNldE1vdXNlU3R5bGUoJ2RlZmF1bHQnLCBjb250YWluZXIpO1xuICAgIHN3aXRjaCAodGFyZ2V0TmFtZSkge1xuICAgICAgICBjYXNlIEFJX1RBQkxFX0ZJRUxEX0hFQURfU0VMRUNUX0NIRUNLQk9YOlxuICAgICAgICBjYXNlIEFJX1RBQkxFX0ZJRUxEX0hFQURfTU9SRTpcbiAgICAgICAgY2FzZSBBSV9UQUJMRV9ST1dfU0VMRUNUX0NIRUNLQk9YOlxuICAgICAgICBjYXNlIEFJX1RBQkxFX1JPV19BRERfQlVUVE9OOlxuICAgICAgICBjYXNlIEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT046IHtcbiAgICAgICAgICAgIHJldHVybiBzZXRNb3VzZVN0eWxlKCdwb2ludGVyJywgY29udGFpbmVyKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFJX1RBQkxFX0ZJRUxEX0hFQURfT1BBQ0lUWV9MSU5FOiB7XG4gICAgICAgICAgICBpZiAoaXNSZWFkT25seSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZXRNb3VzZVN0eWxlKCdkZWZhdWx0JywgY29udGFpbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZXRNb3VzZVN0eWxlKCdjb2wtcmVzaXplJywgY29udGFpbmVyKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFJX1RBQkxFX1JPV19EUkFHOiB7XG4gICAgICAgICAgICBpZiAoaXNSZWFkT25seSB8fCBpc1Jvd0RyYWdEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZXRNb3VzZVN0eWxlKCdkZWZhdWx0JywgY29udGFpbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZXRNb3VzZVN0eWxlKCdwb2ludGVyJywgY29udGFpbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gc2V0TW91c2VTdHlsZSgnZGVmYXVsdCcsIGNvbnRhaW5lcik7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHNldE1vdXNlU3R5bGUgPSAobW91c2VTdHlsZTogc3RyaW5nLCBjb250YWluZXI6IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgY29udGFpbmVyLnN0eWxlLmN1cnNvciA9IG1vdXNlU3R5bGU7XG59O1xuIl19
|
@@ -1,122 +0,0 @@
|
|
1
|
-
import { DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_FONT_STYLE, DEFAULT_FONT_WEIGHT, DEFAULT_TEXT_LINE_HEIGHT, DEFAULT_TEXT_SCALE } from '../constants';
|
2
|
-
import { castToString } from './common';
|
3
|
-
/**
|
4
|
-
* 在 Canvas 上测量文本的宽度和高度,以便在显示文本时能够动态调整布局或限制文本的显示区域
|
5
|
-
* @param defaults
|
6
|
-
* @returns
|
7
|
-
*/
|
8
|
-
export const TextMeasure = (defaults = {}) => {
|
9
|
-
const { fontFamily = DEFAULT_FONT_FAMILY, fontSize = DEFAULT_FONT_SIZE, fontWeight = DEFAULT_FONT_WEIGHT, fontStyle = DEFAULT_FONT_STYLE, lineHeight = DEFAULT_TEXT_LINE_HEIGHT, scale = DEFAULT_TEXT_SCALE } = defaults;
|
10
|
-
const o = {
|
11
|
-
fontFamily,
|
12
|
-
fontSize,
|
13
|
-
fontWeight,
|
14
|
-
fontStyle,
|
15
|
-
lineHeight,
|
16
|
-
scale
|
17
|
-
};
|
18
|
-
const canvas = document.createElement('canvas');
|
19
|
-
const context = canvas ? canvas.getContext('2d') : null;
|
20
|
-
const normalizeFontFamily = (fontFamily) => {
|
21
|
-
return fontFamily
|
22
|
-
.split(',')
|
23
|
-
.map((family) => {
|
24
|
-
family = family.trim();
|
25
|
-
const hasSpace = family.indexOf(' ') >= 0;
|
26
|
-
const hasQuotes = family.indexOf('"') >= 0 || family.indexOf("'") >= 0;
|
27
|
-
if (hasSpace && !hasQuotes) {
|
28
|
-
family = `"${family}"`;
|
29
|
-
}
|
30
|
-
return family;
|
31
|
-
})
|
32
|
-
.join(', ');
|
33
|
-
};
|
34
|
-
// 可以在运行时动态调整字体样式,从而影响后续的文本测量
|
35
|
-
const setFont = (options = {}) => {
|
36
|
-
for (const key in options) {
|
37
|
-
o[key] = options[key] ?? o[key];
|
38
|
-
}
|
39
|
-
if (context) {
|
40
|
-
context.font = `${o.fontWeight} ${o.fontSize * o.scale}px ${normalizeFontFamily(o.fontFamily)}`;
|
41
|
-
}
|
42
|
-
};
|
43
|
-
// 根据指定的最大宽度和行数来计算文本的显示方式。如果文本太长,它会自动换行或截断,并返回是否发生溢出的信息
|
44
|
-
const getWidthOfLongestText = (text, maxWidth, maxLineCount) => {
|
45
|
-
let width = 0;
|
46
|
-
let height = 0;
|
47
|
-
let lineCount = 0;
|
48
|
-
if (text == null) {
|
49
|
-
return { width, height, lastLineWidth: 0 };
|
50
|
-
}
|
51
|
-
const lines = text.split('\n');
|
52
|
-
for (let i = 0; i < lines.length; i++) {
|
53
|
-
const line = lines[i];
|
54
|
-
const lineWidth = context?.measureText(line).width ?? 0;
|
55
|
-
width = Math.max(width, lineWidth);
|
56
|
-
lineCount = maxWidth != null ? Math.ceil(lineWidth / maxWidth) || 1 : 1;
|
57
|
-
height += o.lineHeight * lineCount;
|
58
|
-
}
|
59
|
-
if (maxWidth == null || maxLineCount === 1 || (maxLineCount && lineCount <= maxLineCount)) {
|
60
|
-
return {
|
61
|
-
width: Math.ceil(width),
|
62
|
-
height: Math.ceil(height),
|
63
|
-
text,
|
64
|
-
isOverflow: Boolean(maxLineCount && lineCount > maxLineCount),
|
65
|
-
lastLineWidth: Math.ceil(width)
|
66
|
-
};
|
67
|
-
}
|
68
|
-
const arrText = text.split('');
|
69
|
-
let rowCount = 0; // 总行数
|
70
|
-
let textHeight = 0; // 文本最终占用的高度
|
71
|
-
let showText = ''; // 每行展示的文本
|
72
|
-
let totalText = '';
|
73
|
-
let isLimitRow = false;
|
74
|
-
const textLength = arrText.length;
|
75
|
-
for (let n = 0; n < textLength; n++) {
|
76
|
-
const singleText = arrText[n];
|
77
|
-
const composeText = showText + singleText;
|
78
|
-
// 如果没有超过 maxLineCount,就会继续换行
|
79
|
-
isLimitRow = maxLineCount ? rowCount === maxLineCount - 1 : false;
|
80
|
-
const measureText = isLimitRow ? composeText + '…' : composeText;
|
81
|
-
totalText += singleText;
|
82
|
-
const textWidth = context?.measureText(measureText).width ?? 0;
|
83
|
-
const isLineBreak = ['\n', '\r'].includes(singleText);
|
84
|
-
if (((maxWidth && textWidth > maxWidth) || isLineBreak) && (maxLineCount == null || rowCount < maxLineCount)) {
|
85
|
-
showText = isLineBreak ? '' : singleText;
|
86
|
-
textHeight += lineHeight;
|
87
|
-
rowCount++;
|
88
|
-
if (isLimitRow) {
|
89
|
-
if (n < textLength - 1) {
|
90
|
-
totalText = totalText.substring(0, totalText.length - 1) + '…';
|
91
|
-
}
|
92
|
-
break;
|
93
|
-
}
|
94
|
-
}
|
95
|
-
else {
|
96
|
-
showText = composeText;
|
97
|
-
}
|
98
|
-
}
|
99
|
-
return {
|
100
|
-
width: Math.ceil(width),
|
101
|
-
height: Math.ceil(maxLineCount == null || rowCount < maxLineCount ? textHeight + lineHeight : textHeight),
|
102
|
-
text: totalText,
|
103
|
-
isOverflow: isLimitRow,
|
104
|
-
lastLineWidth: context?.measureText(showText).width ?? 0
|
105
|
-
};
|
106
|
-
};
|
107
|
-
// 测量给定文本的宽度和高度。
|
108
|
-
// 支持指定最大宽度 (maxWidth) 和最大行数 (maxLineCount),从而能够处理多行文本的自动换行和截断(例如在文本超过行数限制时添加省略号 "…")
|
109
|
-
const measureText = (text, maxWidth, maxLineCount) => {
|
110
|
-
return getWidthOfLongestText(castToString(text), maxWidth, maxLineCount);
|
111
|
-
};
|
112
|
-
// 可以将字体样式重置为初始默认配置
|
113
|
-
const reset = () => setFont(defaults);
|
114
|
-
setFont(o);
|
115
|
-
return {
|
116
|
-
context,
|
117
|
-
measureText,
|
118
|
-
setFont,
|
119
|
-
reset
|
120
|
-
};
|
121
|
-
};
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1tZWFzdXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvdXRpbHMvdGV4dC1tZWFzdXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNyQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBV3hDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxXQUFzQyxFQUFFLEVBQUUsRUFBRTtJQUNwRSxNQUFNLEVBQ0YsVUFBVSxHQUFHLG1CQUFtQixFQUNoQyxRQUFRLEdBQUcsaUJBQWlCLEVBQzVCLFVBQVUsR0FBRyxtQkFBbUIsRUFDaEMsU0FBUyxHQUFHLGtCQUFrQixFQUM5QixVQUFVLEdBQUcsd0JBQXdCLEVBQ3JDLEtBQUssR0FBRyxrQkFBa0IsRUFDN0IsR0FBRyxRQUFRLENBQUM7SUFDYixNQUFNLENBQUMsR0FBd0M7UUFDM0MsVUFBVTtRQUNWLFFBQVE7UUFDUixVQUFVO1FBQ1YsU0FBUztRQUNULFVBQVU7UUFDVixLQUFLO0tBQ1IsQ0FBQztJQUNGLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFeEQsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFVBQWtCLEVBQUUsRUFBRTtRQUMvQyxPQUFPLFVBQVU7YUFDWixLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDWixN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Q0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzdFLENBQUMsQ0FBQztJQUVGLG1CQUFtQjtJQUNuQixNQUFNLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRVgsT0FBTztRQUNILE9BQU87UUFDUCxXQUFXO1FBQ1gsT0FBTztRQUNQLEtBQUs7S0FDUixDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBERUZBVUxUX0ZPTlRfRkFNSUxZLFxuICAgIERFRkFVTFRfRk9OVF9TSVpFLFxuICAgIERFRkFVTFRfRk9OVF9TVFlMRSxcbiAgICBERUZBVUxUX0ZPTlRfV0VJR0hULFxuICAgIERFRkFVTFRfVEVYVF9MSU5FX0hFSUdIVCxcbiAgICBERUZBVUxUX1RFWFRfU0NBTEVcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNhc3RUb1N0cmluZyB9IGZyb20gJy4vY29tbW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBBSVRhYmxlVGV4dE1lYXN1cmVPcHRpb25zIHtcbiAgICBmb250RmFtaWx5Pzogc3RyaW5nO1xuICAgIGZvbnRTaXplPzogbnVtYmVyO1xuICAgIGZvbnRXZWlnaHQ/OiBzdHJpbmc7XG4gICAgZm9udFN0eWxlPzogc3RyaW5nO1xuICAgIGxpbmVIZWlnaHQ/OiBudW1iZXI7XG4gICAgc2NhbGU/OiBudW1iZXI7XG59XG5cbi8qKlxuICog5ZyoIENhbnZhcyDkuIrmtYvph4/mlofmnKznmoTlrr3luqblkozpq5jluqbvvIzku6Xkvr/lnKjmmL7npLrmlofmnKzml7bog73lpJ/liqjmgIHosIPmlbTluIPlsYDmiJbpmZDliLbmlofmnKznmoTmmL7npLrljLrln59cbiAqIEBwYXJhbSBkZWZhdWx0c1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IFRleHRNZWFzdXJlID0gKGRlZmF1bHRzOiBBSVRhYmxlVGV4dE1lYXN1cmVPcHRpb25zID0ge30pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICAgIGZvbnRGYW1pbHkgPSBERUZBVUxUX0ZPTlRfRkFNSUxZLFxuICAgICAgICBmb250U2l6ZSA9IERFRkFVTFRfRk9OVF9TSVpFLFxuICAgICAgICBmb250V2VpZ2h0ID0gREVGQVVMVF9GT05UX1dFSUdIVCxcbiAgICAgICAgZm9udFN0eWxlID0gREVGQVVMVF9GT05UX1NUWUxFLFxuICAgICAgICBsaW5lSGVpZ2h0ID0gREVGQVVMVF9URVhUX0xJTkVfSEVJR0hULFxuICAgICAgICBzY2FsZSA9IERFRkFVTFRfVEVYVF9TQ0FMRVxuICAgIH0gPSBkZWZhdWx0cztcbiAgICBjb25zdCBvOiBSZXF1aXJlZDxBSVRhYmxlVGV4dE1lYXN1cmVPcHRpb25zPiA9IHtcbiAgICAgICAgZm9udEZhbWlseSxcbiAgICAgICAgZm9udFNpemUsXG4gICAgICAgIGZvbnRXZWlnaHQsXG4gICAgICAgIGZvbnRTdHlsZSxcbiAgICAgICAgbGluZUhlaWdodCxcbiAgICAgICAgc2NhbGVcbiAgICB9O1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMgPyBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSA6IG51bGw7XG5cbiAgICBjb25zdCBub3JtYWxpemVGb250RmFtaWx5ID0gKGZvbnRGYW1pbHk6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gZm9udEZhbWlseVxuICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoKGZhbWlseSkgPT4ge1xuICAgICAgICAgICAgICAgIGZhbWlseSA9IGZhbWlseS50cmltKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzU3BhY2UgPSBmYW1pbHkuaW5kZXhPZignICcpID49IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzUXVvdGVzID0gZmFtaWx5LmluZGV4T2YoJ1wiJykgPj0gMCB8fCBmYW1pbHkuaW5kZXhPZihcIidcIikgPj0gMDtcbiAgICAgICAgICAgICAgICBpZiAoaGFzU3BhY2UgJiYgIWhhc1F1b3Rlcykge1xuICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSBgXCIke2ZhbWlseX1cImA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYW1pbHk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgfTtcblxuICAgIC8vIOWPr+S7peWcqOi/kOihjOaXtuWKqOaAgeiwg+aVtOWtl+S9k+agt+W8j++8jOS7juiAjOW9seWTjeWQjue7reeahOaWh+acrOa1i+mHj1xuICAgIGNvbnN0IHNldEZvbnQgPSAob3B0aW9uczogQUlUYWJsZVRleHRNZWFzdXJlT3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIChvIGFzIGFueSlba2V5XSA9IChvcHRpb25zIGFzIGFueSlba2V5XSA/PyAobyBhcyBhbnkpW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZm9udCA9IGAke28uZm9udFdlaWdodH0gJHtvLmZvbnRTaXplICogby5zY2FsZX1weCAke25vcm1hbGl6ZUZvbnRGYW1pbHkoby5mb250RmFtaWx5KX1gO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8vIOagueaNruaMh+WumueahOacgOWkp+WuveW6puWSjOihjOaVsOadpeiuoeeul+aWh+acrOeahOaYvuekuuaWueW8j+OAguWmguaenOaWh+acrOWkqumVv++8jOWug+S8muiHquWKqOaNouihjOaIluaIquaWre+8jOW5tui/lOWbnuaYr+WQpuWPkeeUn+a6ouWHuueahOS/oeaBr1xuICAgIGNvbnN0IGdldFdpZHRoT2ZMb25nZXN0VGV4dCA9ICh0ZXh0OiBzdHJpbmcgfCBudWxsLCBtYXhXaWR0aD86IG51bWJlciwgbWF4TGluZUNvdW50PzogbnVtYmVyKSA9PiB7XG4gICAgICAgIGxldCB3aWR0aCA9IDA7XG4gICAgICAgIGxldCBoZWlnaHQgPSAwO1xuICAgICAgICBsZXQgbGluZUNvdW50ID0gMDtcbiAgICAgICAgaWYgKHRleHQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgd2lkdGgsIGhlaWdodCwgbGFzdExpbmVXaWR0aDogMCB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tpXSE7XG4gICAgICAgICAgICBjb25zdCBsaW5lV2lkdGggPSBjb250ZXh0Py5tZWFzdXJlVGV4dChsaW5lKS53aWR0aCA/PyAwO1xuICAgICAgICAgICAgd2lkdGggPSBNYXRoLm1heCh3aWR0aCwgbGluZVdpZHRoKTtcbiAgICAgICAgICAgIGxpbmVDb3VudCA9IG1heFdpZHRoICE9IG51bGwgPyBNYXRoLmNlaWwobGluZVdpZHRoIC8gbWF4V2lkdGgpIHx8IDEgOiAxO1xuICAgICAgICAgICAgaGVpZ2h0ICs9IG8ubGluZUhlaWdodCAqIGxpbmVDb3VudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF4V2lkdGggPT0gbnVsbCB8fCBtYXhMaW5lQ291bnQgPT09IDEgfHwgKG1heExpbmVDb3VudCAmJiBsaW5lQ291bnQgPD0gbWF4TGluZUNvdW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogTWF0aC5jZWlsKHdpZHRoKSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IE1hdGguY2VpbChoZWlnaHQpLFxuICAgICAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICAgICAgaXNPdmVyZmxvdzogQm9vbGVhbihtYXhMaW5lQ291bnQgJiYgbGluZUNvdW50ID4gbWF4TGluZUNvdW50KSxcbiAgICAgICAgICAgICAgICBsYXN0TGluZVdpZHRoOiBNYXRoLmNlaWwod2lkdGgpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXJyVGV4dCA9IHRleHQuc3BsaXQoJycpO1xuICAgICAgICBsZXQgcm93Q291bnQgPSAwOyAvLyDmgLvooYzmlbBcbiAgICAgICAgbGV0IHRleHRIZWlnaHQgPSAwOyAvLyDmlofmnKzmnIDnu4jljaDnlKjnmoTpq5jluqZcbiAgICAgICAgbGV0IHNob3dUZXh0ID0gJyc7IC8vIOavj+ihjOWxleekuueahOaWh+acrFxuICAgICAgICBsZXQgdG90YWxUZXh0ID0gJyc7XG4gICAgICAgIGxldCBpc0xpbWl0Um93ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHRleHRMZW5ndGggPSBhcnJUZXh0Lmxlbmd0aDtcblxuICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IHRleHRMZW5ndGg7IG4rKykge1xuICAgICAgICAgICAgY29uc3Qgc2luZ2xlVGV4dCA9IGFyclRleHRbbl0hO1xuICAgICAgICAgICAgY29uc3QgY29tcG9zZVRleHQgPSBzaG93VGV4dCArIHNpbmdsZVRleHQ7XG4gICAgICAgICAgICAvLyDlpoLmnpzmsqHmnInotoXov4cgbWF4TGluZUNvdW5077yM5bCx5Lya57un57ut5o2i6KGMXG4gICAgICAgICAgICBpc0xpbWl0Um93ID0gbWF4TGluZUNvdW50ID8gcm93Q291bnQgPT09IG1heExpbmVDb3VudCAtIDEgOiBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG1lYXN1cmVUZXh0ID0gaXNMaW1pdFJvdyA/IGNvbXBvc2VUZXh0ICsgJ+KApicgOiBjb21wb3NlVGV4dDtcbiAgICAgICAgICAgIHRvdGFsVGV4dCArPSBzaW5nbGVUZXh0O1xuICAgICAgICAgICAgY29uc3QgdGV4dFdpZHRoID0gY29udGV4dD8ubWVhc3VyZVRleHQobWVhc3VyZVRleHQpLndpZHRoID8/IDA7XG4gICAgICAgICAgICBjb25zdCBpc0xpbmVCcmVhayA9IFsnXFxuJywgJ1xcciddLmluY2x1ZGVzKHNpbmdsZVRleHQpO1xuICAgICAgICAgICAgaWYgKCgobWF4V2lkdGggJiYgdGV4dFdpZHRoID4gbWF4V2lkdGgpIHx8IGlzTGluZUJyZWFrKSAmJiAobWF4TGluZUNvdW50ID09IG51bGwgfHwgcm93Q291bnQgPCBtYXhMaW5lQ291bnQpKSB7XG4gICAgICAgICAgICAgICAgc2hvd1RleHQgPSBpc0xpbmVCcmVhayA/ICcnIDogc2luZ2xlVGV4dDtcbiAgICAgICAgICAgICAgICB0ZXh0SGVpZ2h0ICs9IGxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgcm93Q291bnQrKztcbiAgICAgICAgICAgICAgICBpZiAoaXNMaW1pdFJvdykge1xuICAgICAgICAgICAgICAgICAgICBpZiAobiA8IHRleHRMZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFRleHQgPSB0b3RhbFRleHQuc3Vic3RyaW5nKDAsIHRvdGFsVGV4dC5sZW5ndGggLSAxKSArICfigKYnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2hvd1RleHQgPSBjb21wb3NlVGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IE1hdGguY2VpbCh3aWR0aCksXG4gICAgICAgICAgICBoZWlnaHQ6IE1hdGguY2VpbChtYXhMaW5lQ291bnQgPT0gbnVsbCB8fCByb3dDb3VudCA8IG1heExpbmVDb3VudCA/IHRleHRIZWlnaHQgKyBsaW5lSGVpZ2h0IDogdGV4dEhlaWdodCksXG4gICAgICAgICAgICB0ZXh0OiB0b3RhbFRleHQsXG4gICAgICAgICAgICBpc092ZXJmbG93OiBpc0xpbWl0Um93LFxuICAgICAgICAgICAgbGFzdExpbmVXaWR0aDogY29udGV4dD8ubWVhc3VyZVRleHQoc2hvd1RleHQpLndpZHRoID8/IDBcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgLy8g5rWL6YeP57uZ5a6a5paH5pys55qE5a695bqm5ZKM6auY5bqm44CCXG4gICAgLy8g5pSv5oyB5oyH5a6a5pyA5aSn5a695bqmIChtYXhXaWR0aCkg5ZKM5pyA5aSn6KGM5pWwIChtYXhMaW5lQ291bnQp77yM5LuO6ICM6IO95aSf5aSE55CG5aSa6KGM5paH5pys55qE6Ieq5Yqo5o2i6KGM5ZKM5oiq5pat77yI5L6L5aaC5Zyo5paH5pys6LaF6L+H6KGM5pWw6ZmQ5Yi25pe25re75Yqg55yB55Wl5Y+3IFwi4oCmXCLvvIlcbiAgICBjb25zdCBtZWFzdXJlVGV4dCA9ICh0ZXh0OiBzdHJpbmcsIG1heFdpZHRoPzogbnVtYmVyLCBtYXhMaW5lQ291bnQ/OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIGdldFdpZHRoT2ZMb25nZXN0VGV4dChjYXN0VG9TdHJpbmcodGV4dCksIG1heFdpZHRoLCBtYXhMaW5lQ291bnQpO1xuICAgIH07XG5cbiAgICAvLyDlj6/ku6XlsIblrZfkvZPmoLflvI/ph43nva7kuLrliJ3lp4vpu5jorqTphY3nva5cbiAgICBjb25zdCByZXNldCA9ICgpID0+IHNldEZvbnQoZGVmYXVsdHMpO1xuXG4gICAgc2V0Rm9udChvKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIG1lYXN1cmVUZXh0LFxuICAgICAgICBzZXRGb250LFxuICAgICAgICByZXNldFxuICAgIH07XG59O1xuIl19
|
@@ -1,42 +0,0 @@
|
|
1
|
-
import { isNumber } from 'lodash';
|
2
|
-
import { AI_TABLE_FIELD_ADD_BUTTON_WIDTH } from '../constants';
|
3
|
-
export const getVisibleRangeInfo = (coordinate, scrollState) => {
|
4
|
-
const { scrollTop, scrollLeft } = scrollState;
|
5
|
-
const { rowCount, columnCount, frozenColumnCount } = coordinate;
|
6
|
-
// 获取要渲染的垂直可见区域
|
7
|
-
const getVerticalRangeInfo = () => {
|
8
|
-
const startIndex = coordinate.getRowStartIndex(scrollTop);
|
9
|
-
const stopIndex = coordinate.getRowStopIndex(startIndex, scrollTop);
|
10
|
-
return {
|
11
|
-
rowStartIndex: Math.max(0, startIndex - 1),
|
12
|
-
rowStopIndex: Math.max(0, Math.min(rowCount - 1, stopIndex + 1))
|
13
|
-
};
|
14
|
-
};
|
15
|
-
// 获取要渲染的水平可见区域
|
16
|
-
const getHorizontalRangeInfo = () => {
|
17
|
-
const startIndex = coordinate.getColumnStartIndex(scrollLeft);
|
18
|
-
const stopIndex = coordinate.getColumnStopIndex(startIndex, scrollLeft);
|
19
|
-
return {
|
20
|
-
columnStartIndex: Math.max(frozenColumnCount - 1, startIndex),
|
21
|
-
columnStopIndex: Math.max(frozenColumnCount - 1, Math.min(columnCount - 1, stopIndex))
|
22
|
-
};
|
23
|
-
};
|
24
|
-
const { rowStartIndex, rowStopIndex } = getVerticalRangeInfo();
|
25
|
-
const { columnStartIndex, columnStopIndex } = getHorizontalRangeInfo();
|
26
|
-
return {
|
27
|
-
rowStartIndex,
|
28
|
-
rowStopIndex,
|
29
|
-
columnStartIndex,
|
30
|
-
columnStopIndex
|
31
|
-
};
|
32
|
-
};
|
33
|
-
export const scrollMax = (aiTable, coordinate, visibleColumns) => {
|
34
|
-
const visibleColumnIndexMap = aiTable.context.visibleColumnsIndexMap();
|
35
|
-
const scrollMaxWidth = visibleColumns.reduce((pre, cur) => {
|
36
|
-
const index = visibleColumnIndexMap.get(cur._id);
|
37
|
-
return pre + (isNumber(index) ? coordinate.getColumnWidth(index) : 0);
|
38
|
-
}, aiTable.context.rowHeadWidth()) + AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
|
39
|
-
const scrollMaxHeight = coordinate.getRowOffset(coordinate.rowCount - 1) + 32;
|
40
|
-
return { scrollMaxWidth: Math.max(scrollMaxWidth, coordinate.containerWidth), scrollMaxHeight };
|
41
|
-
};
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJsZS1yYW5nZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3V0aWxzL3Zpc2libGUtcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFLL0QsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxVQUFzQixFQUFFLFdBQStCLEVBQUUsRUFBRTtJQUMzRixNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLFdBQVcsQ0FBQztJQUM5QyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLFVBQVUsQ0FBQztJQUVoRSxlQUFlO0lBQ2YsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDOUIsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXBFLE9BQU87WUFDSCxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUMxQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNuRSxDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRUYsZUFBZTtJQUNmLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxFQUFFO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5RCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXhFLE9BQU87WUFDSCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixHQUFHLENBQUMsRUFBRSxVQUFVLENBQUM7WUFDN0QsZUFBZSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN6RixDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRUYsTUFBTSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0lBQy9ELE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsR0FBRyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3ZFLE9BQU87UUFDSCxhQUFhO1FBQ2IsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixlQUFlO0tBQ2xCLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFnQixFQUFFLFVBQXNCLEVBQUUsY0FBOEIsRUFBRSxFQUFFO0lBQ2xHLE1BQU0scUJBQXFCLEdBQUcsT0FBTyxDQUFDLE9BQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBRXhFLE1BQU0sY0FBYyxHQUNoQixjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQy9CLE1BQU0sS0FBSyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakQsT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUMsRUFBRSxPQUFPLENBQUMsT0FBUSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsK0JBQStCLENBQUM7SUFDMUUsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQztBQUNwRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bWJlciB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBBSV9UQUJMRV9GSUVMRF9BRERfQlVUVE9OX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFJVGFibGUsIENvb3JkaW5hdGUgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVTY3JvbGxTdGF0ZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEFJVGFibGVGaWVsZCB9IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBnZXRWaXNpYmxlUmFuZ2VJbmZvID0gKGNvb3JkaW5hdGU6IENvb3JkaW5hdGUsIHNjcm9sbFN0YXRlOiBBSVRhYmxlU2Nyb2xsU3RhdGUpID0+IHtcbiAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsTGVmdCB9ID0gc2Nyb2xsU3RhdGU7XG4gICAgY29uc3QgeyByb3dDb3VudCwgY29sdW1uQ291bnQsIGZyb3plbkNvbHVtbkNvdW50IH0gPSBjb29yZGluYXRlO1xuXG4gICAgLy8g6I635Y+W6KaB5riy5p+T55qE5Z6C55u05Y+v6KeB5Yy65Z+fXG4gICAgY29uc3QgZ2V0VmVydGljYWxSYW5nZUluZm8gPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBjb29yZGluYXRlLmdldFJvd1N0YXJ0SW5kZXgoc2Nyb2xsVG9wKTtcbiAgICAgICAgY29uc3Qgc3RvcEluZGV4ID0gY29vcmRpbmF0ZS5nZXRSb3dTdG9wSW5kZXgoc3RhcnRJbmRleCwgc2Nyb2xsVG9wKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcm93U3RhcnRJbmRleDogTWF0aC5tYXgoMCwgc3RhcnRJbmRleCAtIDEpLFxuICAgICAgICAgICAgcm93U3RvcEluZGV4OiBNYXRoLm1heCgwLCBNYXRoLm1pbihyb3dDb3VudCAtIDEsIHN0b3BJbmRleCArIDEpKVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICAvLyDojrflj5bopoHmuLLmn5PnmoTmsLTlubPlj6/op4HljLrln59cbiAgICBjb25zdCBnZXRIb3Jpem9udGFsUmFuZ2VJbmZvID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5TdGFydEluZGV4KHNjcm9sbExlZnQpO1xuICAgICAgICBjb25zdCBzdG9wSW5kZXggPSBjb29yZGluYXRlLmdldENvbHVtblN0b3BJbmRleChzdGFydEluZGV4LCBzY3JvbGxMZWZ0KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sdW1uU3RhcnRJbmRleDogTWF0aC5tYXgoZnJvemVuQ29sdW1uQ291bnQgLSAxLCBzdGFydEluZGV4KSxcbiAgICAgICAgICAgIGNvbHVtblN0b3BJbmRleDogTWF0aC5tYXgoZnJvemVuQ29sdW1uQ291bnQgLSAxLCBNYXRoLm1pbihjb2x1bW5Db3VudCAtIDEsIHN0b3BJbmRleCkpXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IHsgcm93U3RhcnRJbmRleCwgcm93U3RvcEluZGV4IH0gPSBnZXRWZXJ0aWNhbFJhbmdlSW5mbygpO1xuICAgIGNvbnN0IHsgY29sdW1uU3RhcnRJbmRleCwgY29sdW1uU3RvcEluZGV4IH0gPSBnZXRIb3Jpem9udGFsUmFuZ2VJbmZvKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm93U3RhcnRJbmRleCxcbiAgICAgICAgcm93U3RvcEluZGV4LFxuICAgICAgICBjb2x1bW5TdGFydEluZGV4LFxuICAgICAgICBjb2x1bW5TdG9wSW5kZXhcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNjcm9sbE1heCA9IChhaVRhYmxlOiBBSVRhYmxlLCBjb29yZGluYXRlOiBDb29yZGluYXRlLCB2aXNpYmxlQ29sdW1uczogQUlUYWJsZUZpZWxkW10pID0+IHtcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1uSW5kZXhNYXAgPSBhaVRhYmxlLmNvbnRleHQhLnZpc2libGVDb2x1bW5zSW5kZXhNYXAoKTtcblxuICAgIGNvbnN0IHNjcm9sbE1heFdpZHRoID1cbiAgICAgICAgdmlzaWJsZUNvbHVtbnMucmVkdWNlKChwcmUsIGN1cikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB2aXNpYmxlQ29sdW1uSW5kZXhNYXAuZ2V0KGN1ci5faWQpO1xuICAgICAgICAgICAgcmV0dXJuIHByZSArIChpc051bWJlcihpbmRleCkgPyBjb29yZGluYXRlLmdldENvbHVtbldpZHRoKGluZGV4KSA6IDApO1xuICAgICAgICB9LCBhaVRhYmxlLmNvbnRleHQhLnJvd0hlYWRXaWR0aCgpKSArIEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT05fV0lEVEg7XG4gICAgY29uc3Qgc2Nyb2xsTWF4SGVpZ2h0ID0gY29vcmRpbmF0ZS5nZXRSb3dPZmZzZXQoY29vcmRpbmF0ZS5yb3dDb3VudCAtIDEpICsgMzI7XG4gICAgcmV0dXJuIHsgc2Nyb2xsTWF4V2lkdGg6IE1hdGgubWF4KHNjcm9sbE1heFdpZHRoLCBjb29yZGluYXRlLmNvbnRhaW5lcldpZHRoKSwgc2Nyb2xsTWF4SGVpZ2h0IH07XG59O1xuIl19
|