@ai-table/grid 0.0.12 → 0.0.14
Sign up to get free protection for your applications and to get access to all the features.
- package/angular-konva/components/container.component.d.ts +7 -0
- package/angular-konva/components/container.component.d.ts.map +1 -0
- package/angular-konva/components/container.token.d.ts +3 -0
- package/angular-konva/components/container.token.d.ts.map +1 -0
- package/angular-konva/components/index.d.ts +4 -0
- package/angular-konva/components/index.d.ts.map +1 -0
- package/angular-konva/components/shape.component.d.ts +61 -0
- package/angular-konva/components/shape.component.d.ts.map +1 -0
- package/angular-konva/components/stage.component.d.ts +40 -0
- package/angular-konva/components/stage.component.d.ts.map +1 -0
- package/angular-konva/index.d.ts +5 -0
- package/angular-konva/index.d.ts.map +1 -0
- package/angular-konva/interfaces/component.d.ts +49 -0
- package/angular-konva/interfaces/component.d.ts.map +1 -0
- package/angular-konva/interfaces/config.d.ts +26 -0
- package/angular-konva/interfaces/config.d.ts.map +1 -0
- package/angular-konva/interfaces/event-object.d.ts +7 -0
- package/angular-konva/interfaces/event-object.d.ts.map +1 -0
- package/angular-konva/interfaces/index.d.ts +5 -0
- package/angular-konva/interfaces/index.d.ts.map +1 -0
- package/angular-konva/interfaces/shape.d.ts +42 -0
- package/angular-konva/interfaces/shape.d.ts.map +1 -0
- package/angular-konva/utils/apply-node-props.d.ts +4 -0
- package/angular-konva/utils/apply-node-props.d.ts.map +1 -0
- package/angular-konva/utils/common.d.ts +8 -0
- package/angular-konva/utils/common.d.ts.map +1 -0
- package/angular-konva/utils/index.d.ts +5 -0
- package/angular-konva/utils/index.d.ts.map +1 -0
- package/angular-konva/utils/types.d.ts +4 -0
- package/angular-konva/utils/types.d.ts.map +1 -0
- package/angular-konva/utils/update-picture.d.ts +4 -0
- package/angular-konva/utils/update-picture.d.ts.map +1 -0
- package/components/cell-editors/abstract-cell-editor.component.d.ts +7 -5
- package/components/cell-editors/abstract-cell-editor.component.d.ts.map +1 -1
- package/components/cell-editors/cell-editor.scss +38 -25
- package/components/cell-editors/cell-editor.variables.scss +5 -0
- 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 +33 -0
- package/components/cell-editors/link/edit-link/edit-link.component.d.ts.map +1 -0
- package/components/cell-editors/link/link-editor.component.d.ts +36 -0
- package/components/cell-editors/link/link-editor.component.d.ts.map +1 -0
- package/components/cell-editors/link/link-editor.component.scss +21 -0
- package/components/cell-editors/progress/progress-editor.component.d.ts +0 -1
- package/components/cell-editors/progress/progress-editor.component.d.ts.map +1 -1
- package/components/cell-editors/progress/progress-editor.component.scss +12 -4
- package/components/cell-editors/rating/rating-editor.component.d.ts +0 -1
- package/components/cell-editors/rating/rating-editor.component.d.ts.map +1 -1
- package/components/cell-editors/rating/rating-editor.component.scss +10 -0
- package/components/cell-editors/select/select-editor.component.d.ts +3 -4
- package/components/cell-editors/select/select-editor.component.d.ts.map +1 -1
- package/components/cell-editors/text/text-editor.component.d.ts +0 -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/cell-views/select/option.scss +10 -0
- package/components/field-menu/field-menu.component.d.ts +8 -3
- package/components/field-menu/field-menu.component.d.ts.map +1 -1
- package/components/field-property-editor/field-property-editor.component.d.ts +4 -2
- package/components/field-property-editor/field-property-editor.component.d.ts.map +1 -1
- package/components/index.d.ts +3 -1
- package/components/index.d.ts.map +1 -1
- package/constants/colors.d.ts +18 -0
- package/constants/colors.d.ts.map +1 -0
- package/constants/grid.d.ts +17 -1
- package/constants/grid.d.ts.map +1 -1
- package/constants/icon.d.ts +19 -0
- package/constants/icon.d.ts.map +1 -0
- package/constants/index.d.ts +5 -1
- package/constants/index.d.ts.map +1 -1
- package/constants/table.d.ts +60 -0
- package/constants/table.d.ts.map +1 -0
- package/constants/text.d.ts +22 -0
- package/constants/text.d.ts.map +1 -0
- package/core/context.d.ts +14 -0
- package/core/context.d.ts.map +1 -0
- package/core/coordinate.d.ts +96 -0
- package/core/coordinate.d.ts.map +1 -0
- package/core/index.d.ts +3 -2
- package/core/index.d.ts.map +1 -1
- package/core/types/ai-table.d.ts +56 -0
- package/core/types/ai-table.d.ts.map +1 -0
- package/core/types/core.d.ts +29 -23
- package/core/types/core.d.ts.map +1 -1
- package/core/types/index.d.ts +1 -1
- package/core/types/index.d.ts.map +1 -1
- package/core/utils/common.d.ts +1 -2
- package/core/utils/common.d.ts.map +1 -1
- package/core/utils/field.d.ts +3 -1
- package/core/utils/field.d.ts.map +1 -1
- package/core/utils/index.d.ts +0 -1
- package/core/utils/index.d.ts.map +1 -1
- package/core/utils/queries.d.ts +5 -5
- package/core/utils/queries.d.ts.map +1 -1
- package/dom-grid.component.d.ts +11 -0
- package/dom-grid.component.d.ts.map +1 -0
- package/esm2022/angular-konva/components/container.component.mjs +29 -0
- package/esm2022/angular-konva/components/container.token.mjs +3 -0
- package/esm2022/angular-konva/components/index.mjs +4 -0
- package/esm2022/angular-konva/components/shape.component.mjs +142 -0
- package/esm2022/angular-konva/components/stage.component.mjs +123 -0
- package/esm2022/angular-konva/index.mjs +5 -0
- package/esm2022/angular-konva/interfaces/component.mjs +4 -0
- package/esm2022/angular-konva/interfaces/config.mjs +2 -0
- package/esm2022/angular-konva/interfaces/event-object.mjs +2 -0
- package/esm2022/angular-konva/interfaces/index.mjs +5 -0
- package/esm2022/angular-konva/interfaces/shape.mjs +42 -0
- package/esm2022/angular-konva/utils/apply-node-props.mjs +67 -0
- package/esm2022/angular-konva/utils/common.mjs +48 -0
- package/esm2022/angular-konva/utils/index.mjs +5 -0
- package/esm2022/angular-konva/utils/types.mjs +2 -0
- package/esm2022/angular-konva/utils/update-picture.mjs +7 -0
- package/esm2022/components/cell-editors/abstract-cell-editor.component.mjs +15 -7
- package/esm2022/components/cell-editors/date/date-editor.component.mjs +6 -3
- package/esm2022/components/cell-editors/link/edit-link/edit-link.component.mjs +66 -0
- package/esm2022/components/cell-editors/link/link-editor.component.mjs +117 -0
- package/esm2022/components/cell-editors/number/number-editor.component.mjs +2 -2
- package/esm2022/components/cell-editors/progress/progress-editor.component.mjs +3 -6
- package/esm2022/components/cell-editors/rating/rating-editor.component.mjs +4 -7
- package/esm2022/components/cell-editors/select/select-editor.component.mjs +19 -17
- package/esm2022/components/cell-editors/text/text-editor.component.mjs +10 -11
- package/esm2022/components/cell-views/select/option.component.mjs +6 -5
- package/esm2022/components/field-menu/field-menu.component.mjs +11 -8
- package/esm2022/components/field-property-editor/field-property-editor.component.mjs +17 -12
- package/esm2022/components/index.mjs +4 -2
- package/esm2022/constants/colors.mjs +18 -0
- package/esm2022/constants/editor.mjs +2 -3
- package/esm2022/constants/grid.mjs +22 -4
- package/esm2022/constants/icon.mjs +26 -0
- package/esm2022/constants/index.mjs +6 -2
- package/esm2022/constants/table.mjs +62 -0
- package/esm2022/constants/text.mjs +23 -0
- package/esm2022/core/context.mjs +25 -0
- package/esm2022/core/coordinate.mjs +222 -0
- package/esm2022/core/index.mjs +4 -3
- package/esm2022/core/types/ai-table.mjs +44 -0
- package/esm2022/core/types/core.mjs +6 -1
- package/esm2022/core/types/index.mjs +2 -2
- package/esm2022/core/utils/common.mjs +3 -20
- package/esm2022/core/utils/field.mjs +18 -5
- package/esm2022/core/utils/index.mjs +1 -2
- package/esm2022/core/utils/queries.mjs +4 -4
- package/esm2022/dom-grid.component.mjs +82 -0
- package/esm2022/grid-base.component.mjs +154 -0
- package/esm2022/grid.component.mjs +337 -160
- package/esm2022/public-api.mjs +9 -5
- package/esm2022/renderer/components/add-field-column.component.mjs +68 -0
- package/esm2022/renderer/components/cells.component.mjs +35 -0
- package/esm2022/renderer/components/field-head.component.mjs +130 -0
- package/esm2022/renderer/components/field-icon.component.mjs +66 -0
- package/esm2022/renderer/components/frozen-cells.component.mjs +36 -0
- package/esm2022/renderer/components/frozen-heads.component.mjs +117 -0
- package/esm2022/renderer/components/frozen-placeholder-cells.component.mjs +38 -0
- package/esm2022/renderer/components/heads.component.mjs +38 -0
- package/esm2022/renderer/components/hover-row-heads.component.mjs +107 -0
- package/esm2022/renderer/components/icon.component.mjs +80 -0
- package/esm2022/renderer/components/index.mjs +14 -0
- package/esm2022/renderer/components/other-rows.component.mjs +68 -0
- package/esm2022/renderer/components/placeholder-cells.component.mjs +33 -0
- package/esm2022/renderer/components/text.component.mjs +45 -0
- package/esm2022/renderer/creations/create-active-cell-border.mjs +68 -0
- package/esm2022/renderer/creations/create-cells.mjs +135 -0
- package/esm2022/renderer/creations/create-heads.mjs +45 -0
- package/esm2022/renderer/drawers/add-row-layout-drawer.mjs +97 -0
- package/esm2022/renderer/drawers/cell-drawer.mjs +587 -0
- package/esm2022/renderer/drawers/drawer.mjs +936 -0
- package/esm2022/renderer/drawers/layout-drawer.mjs +58 -0
- package/esm2022/renderer/drawers/record-row-layout-drawer.mjs +101 -0
- package/esm2022/renderer/index.mjs +4 -0
- package/esm2022/renderer/renderer.component.mjs +174 -0
- package/esm2022/services/event.service.mjs +120 -11
- package/esm2022/services/field.service.mjs +28 -5
- package/esm2022/services/index.mjs +4 -0
- package/esm2022/services/selection.service.mjs +8 -1
- package/esm2022/types/avatar.mjs +27 -0
- package/esm2022/types/canvas.mjs +2 -0
- package/esm2022/types/cell.mjs +2 -0
- package/esm2022/types/component-config.mjs +7 -0
- package/esm2022/types/field.mjs +1 -1
- package/esm2022/types/grid.mjs +16 -2
- package/esm2022/types/index.mjs +8 -2
- package/esm2022/types/layout.mjs +2 -0
- package/esm2022/types/row.mjs +6 -0
- package/esm2022/utils/build.mjs +39 -0
- package/esm2022/utils/cell.mjs +71 -0
- package/esm2022/utils/common.mjs +49 -0
- package/esm2022/utils/get-placeholder-cells.mjs +66 -0
- package/esm2022/utils/get-text-width.mjs +30 -0
- package/esm2022/utils/image-cache.mjs +57 -0
- package/esm2022/utils/index.mjs +12 -0
- package/esm2022/utils/os.mjs +16 -0
- package/esm2022/utils/position.mjs +48 -0
- package/esm2022/utils/style.mjs +25 -0
- package/esm2022/utils/text-measure.mjs +122 -0
- package/esm2022/utils/visible-range.mjs +38 -0
- package/fesm2022/ai-table-grid.mjs +5549 -690
- package/fesm2022/ai-table-grid.mjs.map +1 -1
- package/grid-base.component.d.ts +52 -0
- package/grid-base.component.d.ts.map +1 -0
- package/grid.component.d.ts +43 -40
- package/grid.component.d.ts.map +1 -1
- package/package.json +5 -2
- package/public-api.d.ts +8 -4
- package/public-api.d.ts.map +1 -1
- package/renderer/components/add-field-column.component.d.ts +16 -0
- package/renderer/components/add-field-column.component.d.ts.map +1 -0
- package/renderer/components/cells.component.d.ts +14 -0
- package/renderer/components/cells.component.d.ts.map +1 -0
- package/renderer/components/field-head.component.d.ts +73 -0
- package/renderer/components/field-head.component.d.ts.map +1 -0
- package/renderer/components/field-icon.component.d.ts +17 -0
- package/renderer/components/field-icon.component.d.ts.map +1 -0
- package/renderer/components/frozen-cells.component.d.ts +14 -0
- package/renderer/components/frozen-cells.component.d.ts.map +1 -0
- package/renderer/components/frozen-heads.component.d.ts +47 -0
- package/renderer/components/frozen-heads.component.d.ts.map +1 -0
- package/renderer/components/frozen-placeholder-cells.component.d.ts +22 -0
- package/renderer/components/frozen-placeholder-cells.component.d.ts.map +1 -0
- package/renderer/components/heads.component.d.ts +9 -0
- package/renderer/components/heads.component.d.ts.map +1 -0
- package/renderer/components/hover-row-heads.component.d.ts +11 -0
- package/renderer/components/hover-row-heads.component.d.ts.map +1 -0
- package/renderer/components/icon.component.d.ts +37 -0
- package/renderer/components/icon.component.d.ts.map +1 -0
- package/renderer/components/index.d.ts +14 -0
- package/renderer/components/index.d.ts.map +1 -0
- package/renderer/components/other-rows.component.d.ts +31 -0
- package/renderer/components/other-rows.component.d.ts.map +1 -0
- package/renderer/components/placeholder-cells.component.d.ts +22 -0
- package/renderer/components/placeholder-cells.component.d.ts.map +1 -0
- package/renderer/components/text.component.d.ts +99 -0
- package/renderer/components/text.component.d.ts.map +1 -0
- package/renderer/creations/create-active-cell-border.d.ts +7 -0
- package/renderer/creations/create-active-cell-border.d.ts.map +1 -0
- package/renderer/creations/create-cells.d.ts +8 -0
- package/renderer/creations/create-cells.d.ts.map +1 -0
- package/renderer/creations/create-heads.d.ts +3 -0
- package/renderer/creations/create-heads.d.ts.map +1 -0
- package/renderer/drawers/add-row-layout-drawer.d.ts +12 -0
- package/renderer/drawers/add-row-layout-drawer.d.ts.map +1 -0
- package/renderer/drawers/cell-drawer.d.ts +22 -0
- package/renderer/drawers/cell-drawer.d.ts.map +1 -0
- package/renderer/drawers/drawer.d.ts +136 -0
- package/renderer/drawers/drawer.d.ts.map +1 -0
- package/renderer/drawers/layout-drawer.d.ts +22 -0
- package/renderer/drawers/layout-drawer.d.ts.map +1 -0
- package/renderer/drawers/record-row-layout-drawer.d.ts +14 -0
- package/renderer/drawers/record-row-layout-drawer.d.ts.map +1 -0
- package/renderer/index.d.ts +4 -0
- package/renderer/index.d.ts.map +1 -0
- package/renderer/renderer.component.d.ts +64 -0
- package/renderer/renderer.component.d.ts.map +1 -0
- package/services/event.service.d.ts +17 -3
- package/services/event.service.d.ts.map +1 -1
- package/services/field.service.d.ts +5 -4
- package/services/field.service.d.ts.map +1 -1
- package/services/index.d.ts +4 -0
- package/services/index.d.ts.map +1 -0
- package/services/selection.service.d.ts.map +1 -1
- package/styles/styles.scss +71 -11
- package/types/avatar.d.ts +24 -0
- package/types/avatar.d.ts.map +1 -0
- package/types/canvas.d.ts +83 -0
- package/types/canvas.d.ts.map +1 -0
- package/types/cell.d.ts +43 -0
- package/types/cell.d.ts.map +1 -0
- package/types/component-config.d.ts +50 -0
- package/types/component-config.d.ts.map +1 -0
- package/types/field.d.ts +27 -1
- package/types/field.d.ts.map +1 -1
- package/types/grid.d.ts +81 -2
- package/types/grid.d.ts.map +1 -1
- package/types/index.d.ts +7 -1
- package/types/index.d.ts.map +1 -1
- package/types/layout.d.ts +11 -0
- package/types/layout.d.ts.map +1 -0
- package/types/row.d.ts +27 -0
- package/types/row.d.ts.map +1 -0
- package/utils/build.d.ts +5 -0
- package/utils/build.d.ts.map +1 -0
- package/utils/cell.d.ts +19 -0
- package/utils/cell.d.ts.map +1 -0
- package/utils/common.d.ts +20 -0
- package/utils/common.d.ts.map +1 -0
- package/utils/get-placeholder-cells.d.ts +16 -0
- package/utils/get-placeholder-cells.d.ts.map +1 -0
- package/utils/get-text-width.d.ts +9 -0
- package/utils/get-text-width.d.ts.map +1 -0
- package/utils/image-cache.d.ts +16 -0
- package/utils/image-cache.d.ts.map +1 -0
- package/utils/index.d.ts +12 -0
- package/utils/index.d.ts.map +1 -0
- package/utils/os.d.ts +4 -0
- package/utils/os.d.ts.map +1 -0
- package/utils/position.d.ts +20 -0
- package/utils/position.d.ts.map +1 -0
- package/utils/style.d.ts +4 -0
- package/utils/style.d.ts.map +1 -0
- package/utils/text-measure.d.ts +32 -0
- package/utils/text-measure.d.ts.map +1 -0
- package/utils/visible-range.d.ts +13 -0
- package/utils/visible-range.d.ts.map +1 -0
- package/components/cell-editors/link/number-editor.component.d.ts +0 -8
- package/components/cell-editors/link/number-editor.component.d.ts.map +0 -1
- package/constants/field.d.ts +0 -20
- package/constants/field.d.ts.map +0 -1
- package/core/action/field.d.ts +0 -12
- package/core/action/field.d.ts.map +0 -1
- package/core/action/general.d.ts +0 -5
- package/core/action/general.d.ts.map +0 -1
- package/core/action/index.d.ts +0 -12
- package/core/action/index.d.ts.map +0 -1
- package/core/action/record.d.ts +0 -12
- package/core/action/record.d.ts.map +0 -1
- package/core/types/action.d.ts +0 -64
- package/core/types/action.d.ts.map +0 -1
- package/core/utils/weak-map.d.ts +0 -3
- package/core/utils/weak-map.d.ts.map +0 -1
- package/esm2022/components/cell-editors/link/number-editor.component.mjs +0 -25
- package/esm2022/constants/field.mjs +0 -25
- package/esm2022/core/action/field.mjs +0 -57
- package/esm2022/core/action/general.mjs +0 -116
- package/esm2022/core/action/index.mjs +0 -9
- package/esm2022/core/action/record.mjs +0 -44
- package/esm2022/core/types/action.mjs +0 -18
- package/esm2022/core/utils/weak-map.mjs +0 -2
@@ -0,0 +1,71 @@
|
|
1
|
+
import { getFieldOptionByField } from '../core';
|
2
|
+
import { AI_TABLE_GRID_FIELD_SERVICE_MAP } from '../services';
|
3
|
+
export function getColumnIndicesMap(fields) {
|
4
|
+
const columnIndicesMap = {};
|
5
|
+
fields?.forEach((field, index) => {
|
6
|
+
columnIndicesMap[index] = field.width ?? getFieldOptionByField(field).width;
|
7
|
+
});
|
8
|
+
return columnIndicesMap;
|
9
|
+
}
|
10
|
+
/**
|
11
|
+
* 获取单元格位置
|
12
|
+
* 根据单元格是否是第一列/最后一列确定单元格所在的位置
|
13
|
+
*/
|
14
|
+
export function getCellHorizontalPosition(options) {
|
15
|
+
const { columnWidth } = options;
|
16
|
+
return { width: columnWidth, offset: 0 };
|
17
|
+
}
|
18
|
+
export function transformCellValue(aiTable, field, cellValue) {
|
19
|
+
const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);
|
20
|
+
if (!fieldService) {
|
21
|
+
return cellValue;
|
22
|
+
}
|
23
|
+
const fieldRenderers = fieldService.aiFieldConfig?.fieldRenderers;
|
24
|
+
if (!fieldRenderers) {
|
25
|
+
return cellValue;
|
26
|
+
}
|
27
|
+
const cellTransform = fieldRenderers[field.type]?.transform;
|
28
|
+
if (!cellTransform) {
|
29
|
+
return cellValue;
|
30
|
+
}
|
31
|
+
const cellText = cellTransform(field, cellValue);
|
32
|
+
if (cellText == null) {
|
33
|
+
return cellValue;
|
34
|
+
}
|
35
|
+
return cellText;
|
36
|
+
}
|
37
|
+
/**
|
38
|
+
* `\u4e00`: https://www.compart.com/en/unicode/U+4E00
|
39
|
+
* `\u9fa5`: https://www.compart.com/en/unicode/U+9FA5
|
40
|
+
*/
|
41
|
+
const UNIFIED_IDEOGRAPHS_REGEX = /^[\u4e00-\u9fa5]+$/;
|
42
|
+
const SET_OF_LETTERS_REGEX = /^[a-zA-Z\/ ]+$/;
|
43
|
+
export function getAvatarShortName(name) {
|
44
|
+
if (!name) {
|
45
|
+
return '';
|
46
|
+
}
|
47
|
+
name = name.trim();
|
48
|
+
if (UNIFIED_IDEOGRAPHS_REGEX.test(name) && name.length > 2) {
|
49
|
+
return name.slice(name.length - 2);
|
50
|
+
}
|
51
|
+
if (SET_OF_LETTERS_REGEX.test(name) && name.indexOf(' ') > 0) {
|
52
|
+
const words = name.split(' ');
|
53
|
+
return (words[0].slice(0, 1) + words[1].slice(0, 1)).toUpperCase();
|
54
|
+
}
|
55
|
+
return name.length > 2 ? name.slice(0, 2).toUpperCase() : name.toUpperCase();
|
56
|
+
}
|
57
|
+
export function getAvatarBgColor(name) {
|
58
|
+
if (!name) {
|
59
|
+
return;
|
60
|
+
}
|
61
|
+
const colors = ['#56abfb', '#5dcfff', '#84e17e', '#73d897', '#ff9f73', '#fa8888', '#fb7fb7', '#9a7ef4', '#868af6'];
|
62
|
+
const nameArray = name.split('');
|
63
|
+
const code = name && name.length > 0
|
64
|
+
? nameArray.reduce(function (result, item) {
|
65
|
+
result.value += item.charCodeAt(0);
|
66
|
+
return result;
|
67
|
+
}, { value: 0 }).value
|
68
|
+
: 0;
|
69
|
+
return colors[code % 9];
|
70
|
+
}
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3V0aWxzL2NlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5RCxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2RyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHOUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE1BQXNCO0lBQ3RELE1BQU0sZ0JBQWdCLEdBQW1CLEVBQUUsQ0FBQztJQUM1QyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzdCLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUsscUJBQXFCLENBQUMsS0FBSyxDQUF3QixDQUFDLEtBQUssQ0FBQztJQUN4RyxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sZ0JBQWdCLENBQUM7QUFDNUIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxPQUEwRTtJQUNoSCxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFVLE9BQWdCLEVBQUUsS0FBbUIsRUFBRSxTQUFxQjtJQUNwRyxNQUFNLFlBQVksR0FBRywrQkFBK0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbEUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hCLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQztJQUNsRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFD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ZWxkLCBBSVRhYmxlRmllbGRPcHRpb24sIEZpZWxkVmFsdWUsIGdldEZpZWxkT3B0aW9uQnlGaWVsZCB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgQUlfVEFCTEVfR1JJRF9GSUVMRF9TRVJWSUNFX01BUCB9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEFJVGFibGVTaXplTWFwIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sdW1uSW5kaWNlc01hcChmaWVsZHM6IEFJVGFibGVGaWVsZFtdKSB7XG4gICAgY29uc3QgY29sdW1uSW5kaWNlc01hcDogQUlUYWJsZVNpemVNYXAgPSB7fTtcbiAgICBmaWVsZHM/LmZvckVhY2goKGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgICBjb2x1bW5JbmRpY2VzTWFwW2luZGV4XSA9IGZpZWxkLndpZHRoID8/IChnZXRGaWVsZE9wdGlvbkJ5RmllbGQoZmllbGQpIGFzIEFJVGFibGVGaWVsZE9wdGlvbikud2lkdGg7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbHVtbkluZGljZXNNYXA7XG59XG5cbi8qKlxuICog6I635Y+W5Y2V5YWD5qC85L2N572uXG4gKiDmoLnmja7ljZXlhYPmoLzmmK/lkKbmmK/nrKzkuIDliJcv5pyA5ZCO5LiA5YiX56Gu5a6a5Y2V5YWD5qC85omA5Zyo55qE5L2N572uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDZWxsSG9yaXpvbnRhbFBvc2l0aW9uKG9wdGlvbnM6IHsgY29sdW1uV2lkdGg6IG51bWJlcjsgY29sdW1uSW5kZXg6IG51bWJlcjsgY29sdW1uQ291bnQ6IG51bWJlciB9KSB7XG4gICAgY29uc3QgeyBjb2x1bW5XaWR0aCB9ID0gb3B0aW9ucztcbiAgICByZXR1cm4geyB3aWR0aDogY29sdW1uV2lkdGgsIG9mZnNldDogMCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtQ2VsbFZhbHVlPFQgPSBhbnk+KGFpVGFibGU6IEFJVGFibGUsIGZpZWxkOiBBSVRhYmxlRmllbGQsIGNlbGxWYWx1ZTogRmllbGRWYWx1ZSk6IFQge1xuICAgIGNvbnN0IGZpZWxkU2VydmljZSA9IEFJX1RBQkxFX0dSSURfRklFTERfU0VSVklDRV9NQVAuZ2V0KGFpVGFibGUpO1xuXG4gICAgaWYgKCFmaWVsZFNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIGNlbGxWYWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZFJlbmRlcmVycyA9IGZpZWxkU2VydmljZS5haUZpZWxkQ29uZmlnPy5maWVsZFJlbmRlcmVycztcbiAgICBpZiAoIWZpZWxkUmVuZGVyZXJzKSB7XG4gICAgICAgIHJldHVybiBjZWxsVmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgY2VsbFRyYW5zZm9ybSA9IGZpZWxkUmVuZGVyZXJzW2ZpZWxkLnR5cGVdPy50cmFuc2Zvcm07XG4gICAgaWYgKCFjZWxsVHJhbnNmb3JtKSB7XG4gICAgICAgIHJldHVybiBjZWxsVmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgY2VsbFRleHQgPSBjZWxsVHJhbnNmb3JtKGZpZWxkLCBjZWxsVmFsdWUpO1xuXG4gICAgaWYgKGNlbGxUZXh0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGNlbGxWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2VsbFRleHQ7XG59XG5cbi8qKlxuICogYFxcdTRlMDBgOiBodHRwczovL3d3dy5jb21wYXJ0LmNvbS9lbi91bmljb2RlL1UrNEUwMFxuICogYFxcdTlmYTVgOiBodHRwczovL3d3dy5jb21wYXJ0LmNvbS9lbi91bmljb2RlL1UrOUZBNVxuICovXG5jb25zdCBVTklGSUVEX0lERU9HUkFQSFNfUkVHRVggPSAvXltcXHU0ZTAwLVxcdTlmYTVdKyQvO1xuXG5jb25zdCBTRVRfT0ZfTEVUVEVSU19SRUdFWCA9IC9eW2EtekEtWlxcLyBdKyQvO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXZhdGFyU2hvcnROYW1lKG5hbWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghbmFtZSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgbmFtZSA9IG5hbWUudHJpbSgpO1xuXG4gICAgaWYgKFVOSUZJRURfSURFT0dSQVBIU19SRUdFWC50ZXN0KG5hbWUpICYmIG5hbWUubGVuZ3RoID4gMikge1xuICAgICAgICByZXR1cm4gbmFtZS5zbGljZShuYW1lLmxlbmd0aCAtIDIpO1xuICAgIH1cblxuICAgIGlmIChTRVRfT0ZfTEVUVEVSU19SRUdFWC50ZXN0KG5hbWUpICYmIG5hbWUuaW5kZXhPZignICcpID4gMCkge1xuICAgICAgICBjb25zdCB3b3Jkczogc3RyaW5nW10gPSBuYW1lLnNwbGl0KCcgJyk7XG4gICAgICAgIHJldHVybiAod29yZHNbMF0uc2xpY2UoMCwgMSkgKyB3b3Jkc1sxXS5zbGljZSgwLCAxKSkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZS5sZW5ndGggPiAyID8gbmFtZS5zbGljZSgwLCAyKS50b1VwcGVyQ2FzZSgpIDogbmFtZS50b1VwcGVyQ2FzZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXZhdGFyQmdDb2xvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb2xvcnMgPSBbJyM1NmFiZmInLCAnIzVkY2ZmZicsICcjODRlMTdlJywgJyM3M2Q4OTcnLCAnI2ZmOWY3MycsICcjZmE4ODg4JywgJyNmYjdmYjcnLCAnIzlhN2VmNCcsICcjODY4YWY2J107XG4gICAgY29uc3QgbmFtZUFycmF5OiBzdHJpbmdbXSA9IG5hbWUuc3BsaXQoJycpO1xuICAgIGNvbnN0IGNvZGU6IG51bWJlciA9XG4gICAgICAgIG5hbWUgJiYgbmFtZS5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IG5hbWVBcnJheS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbiAocmVzdWx0LCBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnZhbHVlICs9IGl0ZW0uY2hhckNvZGVBdCgwKTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDAgfVxuICAgICAgICAgICAgICApLnZhbHVlXG4gICAgICAgICAgICA6IDA7XG4gICAgcmV0dXJuIGNvbG9yc1tjb2RlICUgOV07XG59XG4iXX0=
|
@@ -0,0 +1,49 @@
|
|
1
|
+
import { AI_TABLE_BLANK } from '../constants';
|
2
|
+
/**
|
3
|
+
* 生成目标名称
|
4
|
+
*/
|
5
|
+
export const generateTargetName = ({ targetName, fieldId, recordId, mouseStyle }) => {
|
6
|
+
const flag = '$';
|
7
|
+
return `${targetName}.${fieldId || flag}.${recordId || flag}.${mouseStyle || flag}`;
|
8
|
+
};
|
9
|
+
/**
|
10
|
+
* 取目标名称
|
11
|
+
*/
|
12
|
+
export const getTargetName = (targetName) => {
|
13
|
+
if (targetName == null || targetName === '')
|
14
|
+
return AI_TABLE_BLANK;
|
15
|
+
return targetName.split('.')[0];
|
16
|
+
};
|
17
|
+
/**
|
18
|
+
* Parse targetName for built-in information
|
19
|
+
*/
|
20
|
+
export const getDetailByTargetName = (_targetName) => {
|
21
|
+
if (_targetName == null) {
|
22
|
+
return {
|
23
|
+
targetName: null,
|
24
|
+
fieldId: null,
|
25
|
+
recordId: null,
|
26
|
+
mouseStyle: null
|
27
|
+
};
|
28
|
+
}
|
29
|
+
const flag = '$';
|
30
|
+
const [targetName, fieldId, recordId, mouseStyle] = _targetName.split('.');
|
31
|
+
return {
|
32
|
+
targetName,
|
33
|
+
fieldId: fieldId === flag ? null : fieldId,
|
34
|
+
recordId: recordId === flag ? null : recordId,
|
35
|
+
mouseStyle: mouseStyle === flag ? null : mouseStyle
|
36
|
+
};
|
37
|
+
};
|
38
|
+
/**
|
39
|
+
* 转换为字符串
|
40
|
+
* @param value
|
41
|
+
* @returns
|
42
|
+
*/
|
43
|
+
export const castToString = (value) => {
|
44
|
+
if (value == null) {
|
45
|
+
return null;
|
46
|
+
}
|
47
|
+
return typeof value !== 'string' ? String(value) : value;
|
48
|
+
};
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvdXRpbHMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHOUM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUE0QixFQUFFLEVBQUU7SUFDMUcsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLE9BQU8sR0FBRyxVQUFVLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxRQUFRLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUN4RixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLFVBQTBCLEVBQUUsRUFBRTtJQUN4RCxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUksVUFBVSxLQUFLLEVBQUU7UUFBRSxPQUFPLGNBQWMsQ0FBQztJQUNuRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFdBQTBCLEVBQTJCLEVBQUU7SUFDekYsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdEIsT0FBTztZQUNILFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLElBQUk7WUFDZCxVQUFVLEVBQUUsSUFBSTtTQUNuQixDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNqQixNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzRSxPQUFPO1FBQ0gsVUFBVTtRQUNWLE9BQU8sRUFBRSxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU87UUFDMUMsUUFBUSxFQUFFLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUM3QyxVQUFVLEVBQUUsVUFBVSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVO0tBQ3RELENBQUM7QUFDTixDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBYSxFQUFpQixFQUFFO0lBQ3pELElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDN0QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlfVEFCTEVfQkxBTksgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQUlUYWJsZVRhcmdldE5hbWVEZXRhaWwsIEFJVGFibGVUYXJnZXROYW1lT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiDnlJ/miJDnm67moIflkI3np7BcbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVGFyZ2V0TmFtZSA9ICh7IHRhcmdldE5hbWUsIGZpZWxkSWQsIHJlY29yZElkLCBtb3VzZVN0eWxlIH06IEFJVGFibGVUYXJnZXROYW1lT3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGZsYWcgPSAnJCc7XG4gICAgcmV0dXJuIGAke3RhcmdldE5hbWV9LiR7ZmllbGRJZCB8fCBmbGFnfS4ke3JlY29yZElkIHx8IGZsYWd9LiR7bW91c2VTdHlsZSB8fCBmbGFnfWA7XG59O1xuXG4vKipcbiAqICDlj5bnm67moIflkI3np7BcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRhcmdldE5hbWUgPSAodGFyZ2V0TmFtZT86IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICBpZiAodGFyZ2V0TmFtZSA9PSBudWxsIHx8IHRhcmdldE5hbWUgPT09ICcnKSByZXR1cm4gQUlfVEFCTEVfQkxBTks7XG4gICAgcmV0dXJuIHRhcmdldE5hbWUuc3BsaXQoJy4nKVswXTtcbn07XG5cbi8qKlxuICogUGFyc2UgdGFyZ2V0TmFtZSBmb3IgYnVpbHQtaW4gaW5mb3JtYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGdldERldGFpbEJ5VGFyZ2V0TmFtZSA9IChfdGFyZ2V0TmFtZTogc3RyaW5nIHwgbnVsbCk6IEFJVGFibGVUYXJnZXROYW1lRGV0YWlsID0+IHtcbiAgICBpZiAoX3RhcmdldE5hbWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFyZ2V0TmFtZTogbnVsbCxcbiAgICAgICAgICAgIGZpZWxkSWQ6IG51bGwsXG4gICAgICAgICAgICByZWNvcmRJZDogbnVsbCxcbiAgICAgICAgICAgIG1vdXNlU3R5bGU6IG51bGxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBmbGFnID0gJyQnO1xuICAgIGNvbnN0IFt0YXJnZXROYW1lLCBmaWVsZElkLCByZWNvcmRJZCwgbW91c2VTdHlsZV0gPSBfdGFyZ2V0TmFtZS5zcGxpdCgnLicpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHRhcmdldE5hbWUsXG4gICAgICAgIGZpZWxkSWQ6IGZpZWxkSWQgPT09IGZsYWcgPyBudWxsIDogZmllbGRJZCxcbiAgICAgICAgcmVjb3JkSWQ6IHJlY29yZElkID09PSBmbGFnID8gbnVsbCA6IHJlY29yZElkLFxuICAgICAgICBtb3VzZVN0eWxlOiBtb3VzZVN0eWxlID09PSBmbGFnID8gbnVsbCA6IG1vdXNlU3R5bGVcbiAgICB9O1xufTtcblxuLyoqXG4gKiDovazmjaLkuLrlrZfnrKbkuLJcbiAqIEBwYXJhbSB2YWx1ZVxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNhc3RUb1N0cmluZyA9ICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnID8gU3RyaW5nKHZhbHVlKSA6IHZhbHVlO1xufTtcbiJdfQ==
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import { AI_TABLE_CELL, AI_TABLE_OFFSET, Colors } from '../constants';
|
2
|
+
import { AITable } from '../core';
|
3
|
+
import { AITableRowType } from '../types';
|
4
|
+
import { getCellHorizontalPosition } from './cell';
|
5
|
+
import { generateTargetName } from './common';
|
6
|
+
export function getPlaceHolderCellsConfigs(options) {
|
7
|
+
const { aiTable, coordinate, columnStartIndex, columnStopIndex, rowStartIndex, rowStopIndex } = options;
|
8
|
+
const { linearRows } = aiTable.context;
|
9
|
+
const { rowHeight, columnCount, rowCount } = coordinate;
|
10
|
+
const visibleColumns = AITable.getVisibleFields(aiTable);
|
11
|
+
let configs = [];
|
12
|
+
for (let columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {
|
13
|
+
// 当前列索引超出总列数范围,返回空
|
14
|
+
if (columnIndex > columnCount - 1) {
|
15
|
+
return [];
|
16
|
+
}
|
17
|
+
const field = visibleColumns[columnIndex];
|
18
|
+
const fieldId = field._id;
|
19
|
+
// 当前列不存在,返回空
|
20
|
+
if (field == null) {
|
21
|
+
return [];
|
22
|
+
}
|
23
|
+
// 当前列的 X 轴偏移量和列宽度
|
24
|
+
const x = coordinate.getColumnOffset(columnIndex) + AI_TABLE_OFFSET;
|
25
|
+
const columnWidth = coordinate.getColumnWidth(columnIndex);
|
26
|
+
for (let rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {
|
27
|
+
// 当前行索引是否超出总行数范围,超出则退出循环
|
28
|
+
if (rowIndex > rowCount - 1) {
|
29
|
+
break;
|
30
|
+
}
|
31
|
+
const row = linearRows()[rowIndex];
|
32
|
+
const { _id: recordId, type } = row;
|
33
|
+
if (type !== AITableRowType.record) {
|
34
|
+
continue;
|
35
|
+
}
|
36
|
+
// 当前行的 Y 轴偏移量,并根据列宽和列索引获取单元格的水平位置(宽度和偏移量)
|
37
|
+
const y = coordinate.getRowOffset(rowIndex) + AI_TABLE_OFFSET;
|
38
|
+
const { width, offset } = getCellHorizontalPosition({
|
39
|
+
columnWidth,
|
40
|
+
columnIndex,
|
41
|
+
columnCount
|
42
|
+
});
|
43
|
+
const height = rowHeight;
|
44
|
+
configs.unshift({
|
45
|
+
key: `placeholder-cell-${fieldId}-${recordId}`,
|
46
|
+
name: generateTargetName({
|
47
|
+
targetName: AI_TABLE_CELL,
|
48
|
+
fieldId,
|
49
|
+
recordId
|
50
|
+
}),
|
51
|
+
x: x + offset,
|
52
|
+
y,
|
53
|
+
width,
|
54
|
+
height,
|
55
|
+
fill: Colors.transparent,
|
56
|
+
strokeEnabled: false,
|
57
|
+
hitStrokeWidth: 0,
|
58
|
+
transformsEnabled: 'position',
|
59
|
+
perfectDrawEnabled: false,
|
60
|
+
shadowEnabled: false
|
61
|
+
});
|
62
|
+
}
|
63
|
+
}
|
64
|
+
return configs;
|
65
|
+
}
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBsYWNlaG9sZGVyLWNlbGxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvdXRpbHMvZ2V0LXBsYWNlaG9sZGVyLWNlbGxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBc0IsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzlELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFOUMsTUFBTSxVQUFVLDBCQUEwQixDQUFDLE9BQTJCO0lBQ2xFLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3hHLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBUSxDQUFDO0lBQ3hDLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLFVBQVUsQ0FBQztJQUN4RCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekQsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLEtBQUssSUFBSSxXQUFXLEdBQUcsZ0JBQWdCLEVBQUUsV0FBVyxJQUFJLGVBQWUsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQ3JGLG1CQUFtQjtRQUNuQixJQUFJLFdBQVcsR0FBRyxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFMUIsYUFBYTtRQUNiLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELGtCQUFrQjtRQUNsQixNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLGVBQWUsQ0FBQztRQUNwRSxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTNELEtBQUssSUFBSSxRQUFRLEdBQUcsYUFBYSxFQUFFLFFBQVEsSUFBSSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN0RSx5QkFBeUI7WUFDekIsSUFBSSxRQUFRLEdBQUcsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixNQUFNO1lBQ1YsQ0FBQztZQUVELE1BQU0sR0FBRyxHQUFHLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUNwQyxJQUFJLElBQUksS0FBSyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2pDLFNBQVM7WUFDYixDQUFDO1lBRUQsMENBQTBDO1lBQzFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsZUFBZSxDQUFDO1lBQzlELE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcseUJBQXlCLENBQUM7Z0JBQ2hELFdBQVc7Z0JBQ1gsV0FBVztnQkFDWCxXQUFXO2FBQ2QsQ0FBQyxDQUFDO1lBRUgsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxPQUFPLENBQUM7Z0JBQ1osR0FBRyxFQUFFLG9CQUFvQixPQUFPLElBQUksUUFBUSxFQUFFO2dCQUM5QyxJQUFJLEVBQUUsa0JBQWtCLENBQUM7b0JBQ3JCLFVBQVUsRUFBRSxhQUFhO29CQUN6QixPQUFPO29CQUNQLFFBQVE7aUJBQ1gsQ0FBQztnQkFDRixDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU07Z0JBQ2IsQ0FBQztnQkFDRCxLQUFLO2dCQUNMLE1BQU07Z0JBQ04sSUFBSSxFQUFFLE1BQU0sQ0FBQyxXQUFXO2dCQUN4QixhQUFhLEVBQUUsS0FBSztnQkFDcEIsY0FBYyxFQUFFLENBQUM7Z0JBQ2pCLGlCQUFpQixFQUFFLFVBQVU7Z0JBQzdCLGtCQUFrQixFQUFFLEtBQUs7Z0JBQ3pCLGFBQWEsRUFBRSxLQUFLO2FBQ3ZCLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJX1RBQkxFX0NFTEwsIEFJX1RBQkxFX09GRlNFVCwgQ29sb3JzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFJVGFibGUgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVDZWxsc0NvbmZpZywgQUlUYWJsZVJvd1R5cGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRDZWxsSG9yaXpvbnRhbFBvc2l0aW9uIH0gZnJvbSAnLi9jZWxsJztcbmltcG9ydCB7IGdlbmVyYXRlVGFyZ2V0TmFtZSB9IGZyb20gJy4vY29tbW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBsYWNlSG9sZGVyQ2VsbHNDb25maWdzKG9wdGlvbnM6IEFJVGFibGVDZWxsc0NvbmZpZykge1xuICAgIGNvbnN0IHsgYWlUYWJsZSwgY29vcmRpbmF0ZSwgY29sdW1uU3RhcnRJbmRleCwgY29sdW1uU3RvcEluZGV4LCByb3dTdGFydEluZGV4LCByb3dTdG9wSW5kZXggfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgeyBsaW5lYXJSb3dzIH0gPSBhaVRhYmxlLmNvbnRleHQhO1xuICAgIGNvbnN0IHsgcm93SGVpZ2h0LCBjb2x1bW5Db3VudCwgcm93Q291bnQgfSA9IGNvb3JkaW5hdGU7XG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBBSVRhYmxlLmdldFZpc2libGVGaWVsZHMoYWlUYWJsZSk7XG5cbiAgICBsZXQgY29uZmlncyA9IFtdO1xuICAgIGZvciAobGV0IGNvbHVtbkluZGV4ID0gY29sdW1uU3RhcnRJbmRleDsgY29sdW1uSW5kZXggPD0gY29sdW1uU3RvcEluZGV4OyBjb2x1bW5JbmRleCsrKSB7XG4gICAgICAgIC8vIOW9k+WJjeWIl+e0ouW8lei2heWHuuaAu+WIl+aVsOiMg+WbtO+8jOi/lOWbnuepulxuICAgICAgICBpZiAoY29sdW1uSW5kZXggPiBjb2x1bW5Db3VudCAtIDEpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWVsZCA9IHZpc2libGVDb2x1bW5zW2NvbHVtbkluZGV4XTtcbiAgICAgICAgY29uc3QgZmllbGRJZCA9IGZpZWxkLl9pZDtcblxuICAgICAgICAvLyDlvZPliY3liJfkuI3lrZjlnKjvvIzov5Tlm57nqbpcbiAgICAgICAgaWYgKGZpZWxkID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOW9k+WJjeWIl+eahCBYIOi9tOWBj+enu+mHj+WSjOWIl+WuveW6plxuICAgICAgICBjb25zdCB4ID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5PZmZzZXQoY29sdW1uSW5kZXgpICsgQUlfVEFCTEVfT0ZGU0VUO1xuICAgICAgICBjb25zdCBjb2x1bW5XaWR0aCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uV2lkdGgoY29sdW1uSW5kZXgpO1xuXG4gICAgICAgIGZvciAobGV0IHJvd0luZGV4ID0gcm93U3RhcnRJbmRleDsgcm93SW5kZXggPD0gcm93U3RvcEluZGV4OyByb3dJbmRleCsrKSB7XG4gICAgICAgICAgICAvLyDlvZPliY3ooYzntKLlvJXmmK/lkKbotoXlh7rmgLvooYzmlbDojIPlm7TvvIzotoXlh7rliJnpgIDlh7rlvqrnjq9cbiAgICAgICAgICAgIGlmIChyb3dJbmRleCA+IHJvd0NvdW50IC0gMSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByb3cgPSBsaW5lYXJSb3dzKClbcm93SW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgeyBfaWQ6IHJlY29yZElkLCB0eXBlIH0gPSByb3c7XG4gICAgICAgICAgICBpZiAodHlwZSAhPT0gQUlUYWJsZVJvd1R5cGUucmVjb3JkKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOW9k+WJjeihjOeahCBZIOi9tOWBj+enu+mHj++8jOW5tuagueaNruWIl+WuveWSjOWIl+e0ouW8leiOt+WPluWNleWFg+agvOeahOawtOW5s+S9jee9ru+8iOWuveW6puWSjOWBj+enu+mHj++8iVxuICAgICAgICAgICAgY29uc3QgeSA9IGNvb3JkaW5hdGUuZ2V0Um93T2Zmc2V0KHJvd0luZGV4KSArIEFJX1RBQkxFX09GRlNFVDtcbiAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIG9mZnNldCB9ID0gZ2V0Q2VsbEhvcml6b250YWxQb3NpdGlvbih7XG4gICAgICAgICAgICAgICAgY29sdW1uV2lkdGgsXG4gICAgICAgICAgICAgICAgY29sdW1uSW5kZXgsXG4gICAgICAgICAgICAgICAgY29sdW1uQ291bnRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSByb3dIZWlnaHQ7XG4gICAgICAgICAgICBjb25maWdzLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgIGtleTogYHBsYWNlaG9sZGVyLWNlbGwtJHtmaWVsZElkfS0ke3JlY29yZElkfWAsXG4gICAgICAgICAgICAgICAgbmFtZTogZ2VuZXJhdGVUYXJnZXROYW1lKHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogQUlfVEFCTEVfQ0VMTCxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRJZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkSWRcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB4OiB4ICsgb2Zmc2V0LFxuICAgICAgICAgICAgICAgIHksXG4gICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICAgIGZpbGw6IENvbG9ycy50cmFuc3BhcmVudCxcbiAgICAgICAgICAgICAgICBzdHJva2VFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBoaXRTdHJva2VXaWR0aDogMCxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zRW5hYmxlZDogJ3Bvc2l0aW9uJyxcbiAgICAgICAgICAgICAgICBwZXJmZWN0RHJhd0VuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNoYWRvd0VuYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29uZmlncztcbn1cbiJdfQ==
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import { LRUCache } from 'lru-cache';
|
2
|
+
import { DEFAULT_TEXT_MAX_CACHE } from '../constants';
|
3
|
+
const fontCache = {};
|
4
|
+
export const textDataCache = new LRUCache({
|
5
|
+
max: DEFAULT_TEXT_MAX_CACHE
|
6
|
+
});
|
7
|
+
/**
|
8
|
+
* 计算给定文本在指定字体和 Canvas 环境下的宽度。
|
9
|
+
* 它通过缓存机制来优化性能,避免重复计算相同文本的宽度
|
10
|
+
*/
|
11
|
+
export const getTextWidth = (ctx, text, font) => {
|
12
|
+
let width = 0;
|
13
|
+
if (!text || typeof text !== 'string') {
|
14
|
+
return width;
|
15
|
+
}
|
16
|
+
let cacheOfFont = fontCache[font];
|
17
|
+
if (!cacheOfFont) {
|
18
|
+
cacheOfFont = fontCache[font] = new LRUCache({
|
19
|
+
max: 500
|
20
|
+
});
|
21
|
+
}
|
22
|
+
width = cacheOfFont.get(text);
|
23
|
+
if (width == null) {
|
24
|
+
ctx.font = font;
|
25
|
+
width = ctx.measureText(text).width;
|
26
|
+
cacheOfFont.set(text, width);
|
27
|
+
}
|
28
|
+
return width;
|
29
|
+
};
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRleHQtd2lkdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy91dGlscy9nZXQtdGV4dC13aWR0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd0RCxNQUFNLFNBQVMsR0FBZ0QsRUFBRSxDQUFDO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLFFBQVEsQ0FBZ0M7SUFDckUsR0FBRyxFQUFFLHNCQUFzQjtDQUM5QixDQUFDLENBQUM7QUFFSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUE2QixFQUFFLElBQVksRUFBRSxJQUFZLEVBQUUsRUFBRTtJQUN0RixJQUFJLEtBQUssR0FBdUIsQ0FBQyxDQUFDO0lBQ2xDLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDcEMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELElBQUksV0FBVyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDZixXQUFXLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDO1lBQ3pDLEdBQUcsRUFBRSxHQUFHO1NBQ1gsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLEtBQUssR0FBRyxHQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNyQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTFJVQ2FjaGUgfSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHsgREVGQVVMVF9URVhUX01BWF9DQUNIRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBSVRhYmxlV3JhcFRleHRSZXN1bHQgfSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IGZvbnRDYWNoZTogeyBba2V5OiBzdHJpbmddOiBMUlVDYWNoZTxzdHJpbmcsIG51bWJlcj4gfSA9IHt9O1xuZXhwb3J0IGNvbnN0IHRleHREYXRhQ2FjaGUgPSBuZXcgTFJVQ2FjaGU8c3RyaW5nLCBBSVRhYmxlV3JhcFRleHRSZXN1bHQ+KHtcbiAgICBtYXg6IERFRkFVTFRfVEVYVF9NQVhfQ0FDSEVcbn0pO1xuXG4vKipcbiAqIOiuoeeul+e7meWumuaWh+acrOWcqOaMh+WumuWtl+S9k+WSjCBDYW52YXMg546v5aKD5LiL55qE5a695bqm44CCXG4gKiDlroPpgJrov4fnvJPlrZjmnLrliLbmnaXkvJjljJbmgKfog73vvIzpgb/lhY3ph43lpI3orqHnrpfnm7jlkIzmlofmnKznmoTlrr3luqZcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRleHRXaWR0aCA9IChjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdGV4dDogc3RyaW5nLCBmb250OiBzdHJpbmcpID0+IHtcbiAgICBsZXQgd2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZCA9IDA7XG4gICAgaWYgKCF0ZXh0IHx8IHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gd2lkdGg7XG4gICAgfVxuICAgIGxldCBjYWNoZU9mRm9udCA9IGZvbnRDYWNoZVtmb250XTtcbiAgICBpZiAoIWNhY2hlT2ZGb250KSB7XG4gICAgICAgIGNhY2hlT2ZGb250ID0gZm9udENhY2hlW2ZvbnRdID0gbmV3IExSVUNhY2hlKHtcbiAgICAgICAgICAgIG1heDogNTAwXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB3aWR0aCA9IGNhY2hlT2ZGb250LmdldCh0ZXh0KTtcbiAgICBpZiAod2lkdGggPT0gbnVsbCkge1xuICAgICAgICBjdHguZm9udCA9IGZvbnQ7XG4gICAgICAgIHdpZHRoID0gY3R4IS5tZWFzdXJlVGV4dCh0ZXh0KS53aWR0aDtcbiAgICAgICAgY2FjaGVPZkZvbnQuc2V0KHRleHQsIHdpZHRoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd2lkdGg7XG59O1xuIl19
|
@@ -0,0 +1,57 @@
|
|
1
|
+
export const imageCache = (() => {
|
2
|
+
const imageMap = {};
|
3
|
+
const imgPromises = [];
|
4
|
+
function loadImage(name, src, option) {
|
5
|
+
imgPromises.push(new Promise((resolve, reject) => {
|
6
|
+
const img = new Image();
|
7
|
+
img.src = src;
|
8
|
+
img.referrerPolicy = 'no-referrer';
|
9
|
+
if (!option?.crossOrigin) {
|
10
|
+
img.crossOrigin = 'Anonymous';
|
11
|
+
}
|
12
|
+
imageMap[name] = {
|
13
|
+
img,
|
14
|
+
success: false
|
15
|
+
};
|
16
|
+
try {
|
17
|
+
img.onload = () => {
|
18
|
+
imageMap[name] = {
|
19
|
+
img,
|
20
|
+
success: true
|
21
|
+
};
|
22
|
+
resolve({
|
23
|
+
name,
|
24
|
+
img
|
25
|
+
});
|
26
|
+
};
|
27
|
+
}
|
28
|
+
catch (err) {
|
29
|
+
imageMap[name] = {
|
30
|
+
img,
|
31
|
+
success: false
|
32
|
+
};
|
33
|
+
reject(err);
|
34
|
+
}
|
35
|
+
}));
|
36
|
+
}
|
37
|
+
function imageMapOnload(callback) {
|
38
|
+
Promise.all(imgPromises).then(callback);
|
39
|
+
}
|
40
|
+
function getImage(name) {
|
41
|
+
const imgInfo = imageMap[name];
|
42
|
+
if (imgInfo == null) {
|
43
|
+
return null;
|
44
|
+
}
|
45
|
+
const { img, success } = imgInfo;
|
46
|
+
if (!success)
|
47
|
+
return false;
|
48
|
+
return img;
|
49
|
+
}
|
50
|
+
return {
|
51
|
+
loadImage,
|
52
|
+
getImage,
|
53
|
+
imageMapOnload,
|
54
|
+
imageMap
|
55
|
+
};
|
56
|
+
})();
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy91dGlscy9pbWFnZS1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUU7SUFDNUIsTUFBTSxRQUFRLEdBS1YsRUFBRSxDQUFDO0lBQ1AsTUFBTSxXQUFXLEdBQVEsRUFBRSxDQUFDO0lBRTVCLFNBQVMsU0FBUyxDQUFDLElBQVksRUFBRSxHQUFXLEVBQUUsTUFBMkI7UUFDckUsV0FBVyxDQUFDLElBQUksQ0FDWixJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUM1QixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBRXhCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ2QsR0FBRyxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7WUFFbkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQztnQkFDdkIsR0FBRyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7WUFDbEMsQ0FBQztZQUVELFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFDYixHQUFHO2dCQUNILE9BQU8sRUFBRSxLQUFLO2FBQ2pCLENBQUM7WUFFRixJQUFJLENBQUM7Z0JBQ0QsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7b0JBQ2QsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHO3dCQUNiLEdBQUc7d0JBQ0gsT0FBTyxFQUFFLElBQUk7cUJBQ2hCLENBQUM7b0JBQ0YsT0FBTyxDQUFDO3dCQUNKLElBQUk7d0JBQ0osR0FBRztxQkFDTixDQUFDLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDO1lBQ04sQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ1gsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHO29CQUNiLEdBQUc7b0JBQ0gsT0FBTyxFQUFFLEtBQUs7aUJBQ2pCLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVMsY0FBYyxDQUFDLFFBQWE7UUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFNBQVMsUUFBUSxDQUFDLElBQVk7UUFDMUIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9CLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUVqQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzNCLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU87UUFDSCxTQUFTO1FBQ1QsUUFBUTtRQUNSLGNBQWM7UUFDZCxRQUFRO0tBQ1gsQ0FBQztBQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgQUlUYWJsZUltYWdlT3B0aW9uIHtcbiAgICBjcm9zc09yaWdpbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBpbWFnZUNhY2hlID0gKCgpID0+IHtcbiAgICBjb25zdCBpbWFnZU1hcDoge1xuICAgICAgICBbbmFtZTogc3RyaW5nXToge1xuICAgICAgICAgICAgaW1nOiBIVE1MSW1hZ2VFbGVtZW50O1xuICAgICAgICAgICAgc3VjY2VzczogYm9vbGVhbjtcbiAgICAgICAgfTtcbiAgICB9ID0ge307XG4gICAgY29uc3QgaW1nUHJvbWlzZXM6IGFueSA9IFtdO1xuXG4gICAgZnVuY3Rpb24gbG9hZEltYWdlKG5hbWU6IHN0cmluZywgc3JjOiBzdHJpbmcsIG9wdGlvbj86IEFJVGFibGVJbWFnZU9wdGlvbikge1xuICAgICAgICBpbWdQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuXG4gICAgICAgICAgICAgICAgaW1nLnNyYyA9IHNyYztcbiAgICAgICAgICAgICAgICBpbWcucmVmZXJyZXJQb2xpY3kgPSAnbm8tcmVmZXJyZXInO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb24/LmNyb3NzT3JpZ2luKSB7XG4gICAgICAgICAgICAgICAgICAgIGltZy5jcm9zc09yaWdpbiA9ICdBbm9ueW1vdXMnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGltYWdlTWFwW25hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZU1hcFtuYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VNYXBbbmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGltYWdlTWFwT25sb2FkKGNhbGxiYWNrOiBhbnkpIHtcbiAgICAgICAgUHJvbWlzZS5hbGwoaW1nUHJvbWlzZXMpLnRoZW4oY2FsbGJhY2spO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEltYWdlKG5hbWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBpbWdJbmZvID0gaW1hZ2VNYXBbbmFtZV07XG5cbiAgICAgICAgaWYgKGltZ0luZm8gPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGltZywgc3VjY2VzcyB9ID0gaW1nSW5mbztcblxuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGltZztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBsb2FkSW1hZ2UsXG4gICAgICAgIGdldEltYWdlLFxuICAgICAgICBpbWFnZU1hcE9ubG9hZCxcbiAgICAgICAgaW1hZ2VNYXBcbiAgICB9O1xufSkoKTtcbiJdfQ==
|
@@ -0,0 +1,12 @@
|
|
1
|
+
export * from './build';
|
2
|
+
export * from './cell';
|
3
|
+
export * from './common';
|
4
|
+
export * from './get-placeholder-cells';
|
5
|
+
export * from './get-text-width';
|
6
|
+
export * from './image-cache';
|
7
|
+
export * from './os';
|
8
|
+
export * from './position';
|
9
|
+
export * from './style';
|
10
|
+
export * from './text-measure';
|
11
|
+
export * from './visible-range';
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxNQUFNLENBQUM7QUFDckIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9idWlsZCc7XG5leHBvcnQgKiBmcm9tICcuL2NlbGwnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tb24nO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtcGxhY2Vob2xkZXItY2VsbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtdGV4dC13aWR0aCc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlLWNhY2hlJztcbmV4cG9ydCAqIGZyb20gJy4vb3MnO1xuZXhwb3J0ICogZnJvbSAnLi9wb3NpdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3N0eWxlJztcbmV4cG9ydCAqIGZyb20gJy4vdGV4dC1tZWFzdXJlJztcbmV4cG9ydCAqIGZyb20gJy4vdmlzaWJsZS1yYW5nZSc7XG4iXX0=
|
@@ -0,0 +1,16 @@
|
|
1
|
+
export const isWindowsOS = () => {
|
2
|
+
const agent = navigator.userAgent.toLowerCase();
|
3
|
+
if (agent.indexOf('win32') >= 0 || agent.indexOf('wow32') >= 0) {
|
4
|
+
return true;
|
5
|
+
}
|
6
|
+
if (agent.indexOf('win64') >= 0 || agent.indexOf('wow64') >= 0) {
|
7
|
+
return true;
|
8
|
+
}
|
9
|
+
return false;
|
10
|
+
};
|
11
|
+
export const isWindows = isWindowsOS();
|
12
|
+
export const isMac = () => {
|
13
|
+
const agent = navigator.userAgent;
|
14
|
+
return /macintosh/i.test(agent);
|
15
|
+
};
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy91dGlscy9vcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFO0lBQzVCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxXQUFXLEVBQUUsQ0FBQztBQUd2QyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFO0lBQ3RCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDbEMsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBpc1dpbmRvd3NPUyA9ICgpID0+IHtcbiAgICBjb25zdCBhZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoYWdlbnQuaW5kZXhPZignd2luMzInKSA+PSAwIHx8IGFnZW50LmluZGV4T2YoJ3dvdzMyJykgPj0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGFnZW50LmluZGV4T2YoJ3dpbjY0JykgPj0gMCB8fCBhZ2VudC5pbmRleE9mKCd3b3c2NCcpID49IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1dpbmRvd3MgPSBpc1dpbmRvd3NPUygpO1xuXG5cbmV4cG9ydCBjb25zdCBpc01hYyA9ICgpID0+IHtcbiAgICBjb25zdCBhZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgcmV0dXJuIC9tYWNpbnRvc2gvaS50ZXN0KGFnZW50KTtcbn07XG4iXX0=
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import { AI_TABLE_BLANK, AI_TABLE_CELL_ACTIVE_BORDER_WIDTH, AI_TABLE_OFFSET, AI_TABLE_ROW_HEAD_WIDTH } from '../constants';
|
2
|
+
import { AITableAreaType } from '../types';
|
3
|
+
import { getTargetName } from './common';
|
4
|
+
import { scrollMax } from './visible-range';
|
5
|
+
export const getMousePosition = (x, y, coordinate, fields, context, _targetName) => {
|
6
|
+
const { scrollTop, scrollLeft } = context.scrollState();
|
7
|
+
const { scrollMaxWidth, scrollMaxHeight } = scrollMax(coordinate, fields);
|
8
|
+
const offsetTop = scrollTop + y;
|
9
|
+
const rowIndex = coordinate.getRowStartIndex(offsetTop);
|
10
|
+
const offsetLeft = isWithinFrozenColumnBoundary(x, coordinate.frozenColumnWidth) ? 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) => {
|
27
|
+
const max = AI_TABLE_ROW_HEAD_WIDTH + frozenColumnWidth;
|
28
|
+
const min = AI_TABLE_ROW_HEAD_WIDTH;
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy91dGlscy9wb3NpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGlDQUFpQyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQzVCLENBQVMsRUFDVCxDQUFTLEVBQ1QsVUFBc0IsRUFDdEIsTUFBc0IsRUFDdEIsT0FBd0IsRUFDeEIsV0FBb0IsRUFDdEIsRUFBRTtJQUNBLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hELE1BQU0sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRSxNQUFNLFNBQVMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RCxNQUFNLFVBQVUsR0FBRyw0QkFBNEIsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUN0RyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0QsTUFBTSxRQUFRLEdBQUcsVUFBVSxJQUFJLGNBQWMsSUFBSSxTQUFTLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO0lBQzVILE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QyxPQUFPO1FBQ0gsUUFBUTtRQUNSLFVBQVUsRUFBRSw0REFBNEQ7UUFDeEUsY0FBYyxFQUFFLFdBQVcsSUFBSSxjQUFjLEVBQUUsWUFBWTtRQUMzRCxRQUFRO1FBQ1IsV0FBVztRQUNYLFNBQVM7UUFDVCxVQUFVO1FBQ1YsQ0FBQztRQUNELENBQUM7S0FDSixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxDQUFTLEVBQUUsaUJBQXlCLEVBQUUsRUFBRTtJQUNqRixNQUFNLEdBQUcsR0FBRyx1QkFBdUIsR0FBRyxpQkFBaUIsQ0FBQztJQUN4RCxNQUFNLEdBQUcsR0FBRyx1QkFBdUIsQ0FBQztJQUNwQyxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUM5QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxhQUFxQixFQUFFLEVBQUU7SUFDcEQsT0FBTyxhQUFhLEdBQUcsZUFBZSxHQUFHLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7SUFDbkMsT0FBTyxDQUFDLGVBQWUsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLEVBQUU7SUFDekMsT0FBTyxpQ0FBaUMsR0FBRyxDQUFDLEdBQUcsZUFBZSxHQUFHLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLGFBQXFCLEVBQUUsRUFBRTtJQUN6RCxNQUFNLFdBQVcsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO0lBQy9DLE9BQU8sYUFBYSxHQUFHLFdBQVcsQ0FBQztBQUN2QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLEVBQUU7SUFDeEMsTUFBTSxXQUFXLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztJQUMvQyxPQUFPLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUlfVEFCTEVfQkxBTkssIEFJX1RBQkxFX0NFTExfQUNUSVZFX0JPUkRFUl9XSURUSCwgQUlfVEFCTEVfT0ZGU0VULCBBSV9UQUJMRV9ST1dfSEVBRF9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBSVRhYmxlRmllbGQsIENvb3JkaW5hdGUsIFJlbmRlcmVyQ29udGV4dCB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZUFyZWFUeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0VGFyZ2V0TmFtZSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IHNjcm9sbE1heCB9IGZyb20gJy4vdmlzaWJsZS1yYW5nZSc7XG5cbmV4cG9ydCBjb25zdCBnZXRNb3VzZVBvc2l0aW9uID0gKFxuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gICAgY29vcmRpbmF0ZTogQ29vcmRpbmF0ZSxcbiAgICBmaWVsZHM6IEFJVGFibGVGaWVsZFtdLFxuICAgIGNvbnRleHQ6IFJlbmRlcmVyQ29udGV4dCxcbiAgICBfdGFyZ2V0TmFtZT86IHN0cmluZ1xuKSA9PiB7XG4gICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbExlZnQgfSA9IGNvbnRleHQuc2Nyb2xsU3RhdGUoKTtcbiAgICBjb25zdCB7IHNjcm9sbE1heFdpZHRoLCBzY3JvbGxNYXhIZWlnaHQgfSA9IHNjcm9sbE1heChjb29yZGluYXRlLCBmaWVsZHMpO1xuICAgIGNvbnN0IG9mZnNldFRvcCA9IHNjcm9sbFRvcCArIHk7XG4gICAgY29uc3Qgcm93SW5kZXggPSBjb29yZGluYXRlLmdldFJvd1N0YXJ0SW5kZXgob2Zmc2V0VG9wKTtcbiAgICBjb25zdCBvZmZzZXRMZWZ0ID0gaXNXaXRoaW5Gcm96ZW5Db2x1bW5Cb3VuZGFyeSh4LCBjb29yZGluYXRlLmZyb3plbkNvbHVtbldpZHRoKSA/IHggOiBzY3JvbGxMZWZ0ICsgeDtcbiAgICBjb25zdCBjb2x1bW5JbmRleCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uU3RhcnRJbmRleChvZmZzZXRMZWZ0KTtcbiAgICBjb25zdCBhcmVhVHlwZSA9IG9mZnNldExlZnQgPD0gc2Nyb2xsTWF4V2lkdGggJiYgb2Zmc2V0VG9wIDw9IHNjcm9sbE1heEhlaWdodCA/IEFJVGFibGVBcmVhVHlwZS5ncmlkIDogQUlUYWJsZUFyZWFUeXBlLm5vbmU7XG4gICAgY29uc3QgdGFyZ2V0TmFtZSA9IGdldFRhcmdldE5hbWUoX3RhcmdldE5hbWUpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFyZWFUeXBlLFxuICAgICAgICB0YXJnZXROYW1lLCAvLyBBcyBhIHNpbXBsZSBvcGVyYXRpb25hbCBpZGVudGlmaWVyLCB3aXRoIHByZWZpeCBuYW1lIG9ubHlcbiAgICAgICAgcmVhbFRhcmdldE5hbWU6IF90YXJnZXROYW1lIHx8IEFJX1RBQkxFX0JMQU5LLCAvLyBSZWFsIG5hbWVcbiAgICAgICAgcm93SW5kZXgsXG4gICAgICAgIGNvbHVtbkluZGV4LFxuICAgICAgICBvZmZzZXRUb3AsXG4gICAgICAgIG9mZnNldExlZnQsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzV2l0aGluRnJvemVuQ29sdW1uQm91bmRhcnkgPSAoeDogbnVtYmVyLCBmcm96ZW5Db2x1bW5XaWR0aDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbWF4ID0gQUlfVEFCTEVfUk9XX0hFQURfV0lEVEggKyBmcm96ZW5Db2x1bW5XaWR0aDtcbiAgICBjb25zdCBtaW4gPSBBSV9UQUJMRV9ST1dfSEVBRF9XSURUSDtcbiAgICByZXR1cm4geCA+IG1pbiAmJiB4IDwgbWF4O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVkaXRvclNwYWNlID0gKHdpZHRoT3JIZWlnaHQ6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiB3aWR0aE9ySGVpZ2h0ICsgQUlfVEFCTEVfT0ZGU0VUICogMjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFZGl0b3JCb3hPZmZzZXQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIC1BSV9UQUJMRV9PRkZTRVQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2VsbEVkaXRvckJvcmRlclNwYWNlID0gKCkgPT4ge1xuICAgIHJldHVybiBBSV9UQUJMRV9DRUxMX0FDVElWRV9CT1JERVJfV0lEVEggKiAyIC0gQUlfVEFCTEVfT0ZGU0VUICogMjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIb3ZlckVkaXRvclNwYWNlID0gKHdpZHRoT3JIZWlnaHQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGJvcmRlclNwYWNlID0gZ2V0Q2VsbEVkaXRvckJvcmRlclNwYWNlKCk7XG4gICAgcmV0dXJuIHdpZHRoT3JIZWlnaHQgLSBib3JkZXJTcGFjZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIb3ZlckVkaXRvckJveE9mZnNldCA9ICgpID0+IHtcbiAgICBjb25zdCBib3JkZXJTcGFjZSA9IGdldENlbGxFZGl0b3JCb3JkZXJTcGFjZSgpO1xuICAgIHJldHVybiBib3JkZXJTcGFjZSAvIDI7XG59OyJdfQ==
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import { AI_TABLE_FIELD_ADD_BUTTON, AI_TABLE_FIELD_HEAD_MORE, AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX, AI_TABLE_ROW_ADD_BUTTON, 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) => {
|
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
|
+
default:
|
19
|
+
return setMouseStyle('default', container);
|
20
|
+
}
|
21
|
+
};
|
22
|
+
export const setMouseStyle = (mouseStyle, container) => {
|
23
|
+
container.style.cursor = mouseStyle;
|
24
|
+
};
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy91dGlscy9zdHlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4QixtQ0FBbUMsRUFDbkMsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUMvQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGNBQXNCLEVBQUUsV0FBNEIsZUFBZSxDQUFDLElBQUksRUFBRSxTQUF5QixFQUFFLEVBQUU7SUFDcEksTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6RSxJQUFJLFVBQVU7UUFBRSxPQUFPLGFBQWEsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUQsSUFBSSxRQUFRLEtBQUssZUFBZSxDQUFDLElBQUk7UUFBRSxPQUFPLGFBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEYsUUFBUSxVQUFVLEVBQUUsQ0FBQztRQUNqQixLQUFLLG1DQUFtQyxDQUFDO1FBQ3pDLEtBQUssd0JBQXdCLENBQUM7UUFDOUIsS0FBSyw0QkFBNEIsQ0FBQztRQUNsQyxLQUFLLHVCQUF1QixDQUFDO1FBQzdCLEtBQUsseUJBQXlCLENBQUMsQ0FBQyxDQUFDO1lBQzdCLE9BQU8sYUFBYSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0Q7WUFDSSxPQUFPLGFBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLFVBQWtCLEVBQUUsU0FBeUIsRUFBRSxFQUFFO0lBQzNFLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztBQUN4QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT04sXG4gICAgQUlfVEFCTEVfRklFTERfSEVBRF9NT1JFLFxuICAgIEFJX1RBQkxFX0ZJRUxEX0hFQURfU0VMRUNUX0NIRUNLQk9YLFxuICAgIEFJX1RBQkxFX1JPV19BRERfQlVUVE9OLFxuICAgIEFJX1RBQkxFX1JPV19TRUxFQ1RfQ0hFQ0tCT1hcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFJVGFibGVBcmVhVHlwZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGdldERldGFpbEJ5VGFyZ2V0TmFtZSB9IGZyb20gJy4vY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IGhhbmRsZU1vdXNlU3R5bGUgPSAocmVhbFRhcmdldE5hbWU6IHN0cmluZywgYXJlYVR5cGU6IEFJVGFibGVBcmVhVHlwZSA9IEFJVGFibGVBcmVhVHlwZS5ncmlkLCBjb250YWluZXI6IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgeyB0YXJnZXROYW1lLCBtb3VzZVN0eWxlIH0gPSBnZXREZXRhaWxCeVRhcmdldE5hbWUocmVhbFRhcmdldE5hbWUpO1xuICAgIGlmIChtb3VzZVN0eWxlKSByZXR1cm4gc2V0TW91c2VTdHlsZShtb3VzZVN0eWxlLCBjb250YWluZXIpO1xuICAgIGlmIChhcmVhVHlwZSA9PT0gQUlUYWJsZUFyZWFUeXBlLm5vbmUpIHJldHVybiBzZXRNb3VzZVN0eWxlKCdkZWZhdWx0JywgY29udGFpbmVyKTtcbiAgICBzd2l0Y2ggKHRhcmdldE5hbWUpIHtcbiAgICAgICAgY2FzZSBBSV9UQUJMRV9GSUVMRF9IRUFEX1NFTEVDVF9DSEVDS0JPWDpcbiAgICAgICAgY2FzZSBBSV9UQUJMRV9GSUVMRF9IRUFEX01PUkU6XG4gICAgICAgIGNhc2UgQUlfVEFCTEVfUk9XX1NFTEVDVF9DSEVDS0JPWDpcbiAgICAgICAgY2FzZSBBSV9UQUJMRV9ST1dfQUREX0JVVFRPTjpcbiAgICAgICAgY2FzZSBBSV9UQUJMRV9GSUVMRF9BRERfQlVUVE9OOiB7XG4gICAgICAgICAgICByZXR1cm4gc2V0TW91c2VTdHlsZSgncG9pbnRlcicsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBzZXRNb3VzZVN0eWxlKCdkZWZhdWx0JywgY29udGFpbmVyKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0TW91c2VTdHlsZSA9IChtb3VzZVN0eWxlOiBzdHJpbmcsIGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQpID0+IHtcbiAgICBjb250YWluZXIuc3R5bGUuY3Vyc29yID0gbW91c2VTdHlsZTtcbn07XG4iXX0=
|
@@ -0,0 +1,122 @@
|
|
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
|