@ai-table/grid 0.0.47 → 0.0.49
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/components/drag/drag.component.d.ts +4 -4
- package/components/drag/drag.component.d.ts.map +1 -1
- package/components/drag/drag.component.scss +1 -1
- package/constants/icon.d.ts +2 -0
- package/constants/icon.d.ts.map +1 -1
- package/constants/table.d.ts +1 -0
- package/constants/table.d.ts.map +1 -1
- package/core/constants/field.d.ts.map +1 -1
- package/core/coordinate.d.ts.map +1 -1
- package/core/types/core.d.ts +2 -1
- package/core/types/core.d.ts.map +1 -1
- package/core/utils/field.d.ts +1 -1
- package/esm2022/components/cell-editors/link/edit-link/edit-link.component.mjs +3 -3
- package/esm2022/components/drag/drag.component.mjs +41 -49
- package/esm2022/constants/icon.mjs +3 -1
- package/esm2022/constants/table.mjs +2 -1
- package/esm2022/core/constants/field.mjs +7 -1
- package/esm2022/core/coordinate.mjs +3 -3
- package/esm2022/core/types/core.mjs +1 -1
- package/esm2022/core/utils/field.mjs +2 -2
- package/esm2022/grid.component.mjs +27 -32
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/renderer/components/add-field-column.component.mjs +5 -2
- package/esm2022/renderer/components/cells/index.mjs +2 -1
- package/esm2022/renderer/components/cells/richtext.component.mjs +90 -0
- package/esm2022/renderer/components/field-icon.component.mjs +5 -2
- package/esm2022/renderer/creations/create-cells.mjs +2 -2
- package/esm2022/renderer/drawers/cell-drawer.mjs +5 -3
- package/esm2022/utils/i18n.mjs +3 -1
- package/esm2022/utils/style.mjs +9 -3
- package/fesm2022/ai-table-grid.mjs +728 -633
- package/fesm2022/ai-table-grid.mjs.map +1 -1
- package/grid.component.d.ts +1 -0
- package/grid.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -1
- package/renderer/components/add-field-column.component.d.ts.map +1 -1
- package/renderer/components/cells/index.d.ts +1 -0
- package/renderer/components/cells/index.d.ts.map +1 -1
- package/renderer/components/cells/richtext.component.d.ts +14 -0
- package/renderer/components/cells/richtext.component.d.ts.map +1 -0
- package/renderer/components/field-icon.component.d.ts +1 -1
- package/renderer/components/field-icon.component.d.ts.map +1 -1
- package/renderer/drawers/cell-drawer.d.ts.map +1 -1
- package/utils/i18n.d.ts +1 -0
- package/utils/i18n.d.ts.map +1 -1
- package/utils/style.d.ts +1 -1
- package/utils/style.d.ts.map +1 -1
@@ -1,5 +1,28 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import {
|
2
|
+
import { InjectionToken, input, EventEmitter, inject, ElementRef, effect, Component, ChangeDetectionStrategy, Output, signal, computed, output, Input, ChangeDetectorRef, ViewChild, HostListener, Renderer2, Pipe, model, booleanAttribute, Injectable, DestroyRef, NgZone, ViewContainerRef, viewChild, afterNextRender, untracked } from '@angular/core';
|
3
|
+
import Konva from 'konva';
|
4
|
+
import { Shape } from 'konva/lib/Shape';
|
5
|
+
import { Sprite } from 'konva/lib/shapes/Sprite';
|
6
|
+
import { Stage } from 'konva/lib/Stage';
|
7
|
+
import { FastLayer } from 'konva/lib/FastLayer';
|
8
|
+
import { Group } from 'konva/lib/Group';
|
9
|
+
import { Layer } from 'konva/lib/Layer';
|
10
|
+
import { Arc } from 'konva/lib/shapes/Arc';
|
11
|
+
import { Arrow } from 'konva/lib/shapes/Arrow';
|
12
|
+
import { Circle } from 'konva/lib/shapes/Circle';
|
13
|
+
import { Ellipse } from 'konva/lib/shapes/Ellipse';
|
14
|
+
import { Image as Image$1 } from 'konva/lib/shapes/Image';
|
15
|
+
import { Label, Tag } from 'konva/lib/shapes/Label';
|
16
|
+
import { Line } from 'konva/lib/shapes/Line';
|
17
|
+
import { Path } from 'konva/lib/shapes/Path';
|
18
|
+
import { Rect } from 'konva/lib/shapes/Rect';
|
19
|
+
import { RegularPolygon } from 'konva/lib/shapes/RegularPolygon';
|
20
|
+
import { Ring } from 'konva/lib/shapes/Ring';
|
21
|
+
import { Star } from 'konva/lib/shapes/Star';
|
22
|
+
import { Text } from 'konva/lib/shapes/Text';
|
23
|
+
import { TextPath } from 'konva/lib/shapes/TextPath';
|
24
|
+
import { Transformer } from 'konva/lib/shapes/Transformer';
|
25
|
+
import { Wedge } from 'konva/lib/shapes/Wedge';
|
3
26
|
import * as i1$1 from 'ngx-tethys/popover';
|
4
27
|
import { ThyPopoverRef, ThyPopover, ThyPopoverModule } from 'ngx-tethys/popover';
|
5
28
|
import ObjectID from 'bson-objectid';
|
@@ -45,30 +68,431 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
45
68
|
import { LRUCache } from 'lru-cache';
|
46
69
|
import { fromUnixTime, subDays } from 'date-fns';
|
47
70
|
import { DEFAULT_COLORS } from 'ngx-tethys/color-picker';
|
48
|
-
import Konva from 'konva';
|
49
|
-
import { Shape } from 'konva/lib/Shape';
|
50
|
-
import { Sprite } from 'konva/lib/shapes/Sprite';
|
51
71
|
import GraphemeSplitter from 'grapheme-splitter';
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
+
|
73
|
+
const KO_CONTAINER_TOKEN = new InjectionToken('KO_CONTAINER_TOKEN');
|
74
|
+
|
75
|
+
function updatePicture(node) {
|
76
|
+
const drawingNode = node.getLayer() || node.getStage();
|
77
|
+
if (drawingNode) {
|
78
|
+
drawingNode.batchDraw();
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
// adapted FROM: https://github.com/lavrton/react-konva/blob/master/src/react-konva-fiber.js
|
83
|
+
function applyNodeProps(component, props = {}, oldProps = {}) {
|
84
|
+
if ('id' in props) {
|
85
|
+
const message = `You are using "id" attribute for Konva node. In some very rare cases it may produce bugs. Currently we recommend not to use it and use "name" attribute instead.`;
|
86
|
+
console.warn(message);
|
87
|
+
}
|
88
|
+
const instance = component.getNode();
|
89
|
+
const updatedProps = {};
|
90
|
+
let hasUpdates = false;
|
91
|
+
Object.keys(oldProps).forEach((key) => {
|
92
|
+
const isEvent = key.slice(0, 2) === 'ko';
|
93
|
+
const propChanged = oldProps[key] !== props[key];
|
94
|
+
if (isEvent && propChanged) {
|
95
|
+
let eventName = key.slice(2).toLowerCase();
|
96
|
+
if (eventName.slice(0, 7) === 'content') {
|
97
|
+
eventName = 'content' + eventName.slice(7, 8).toUpperCase() + eventName.slice(8);
|
98
|
+
}
|
99
|
+
instance.off(eventName, oldProps[key]);
|
100
|
+
}
|
101
|
+
const toRemove = !Object.hasOwn(props, key);
|
102
|
+
if (toRemove) {
|
103
|
+
instance.setAttr(key, undefined);
|
104
|
+
}
|
105
|
+
});
|
106
|
+
Object.keys(props).forEach((key) => {
|
107
|
+
const isEvent = key.slice(0, 2) === 'ko';
|
108
|
+
const toAdd = oldProps[key] !== props[key];
|
109
|
+
if (isEvent && toAdd) {
|
110
|
+
let eventName = key.slice(2).toLowerCase();
|
111
|
+
if (eventName.slice(0, 7) === 'content') {
|
112
|
+
eventName = 'content' + eventName.slice(7, 8).toUpperCase() + eventName.slice(8);
|
113
|
+
}
|
114
|
+
if (props[key]) {
|
115
|
+
instance.off(eventName);
|
116
|
+
instance.on(eventName, (event) => {
|
117
|
+
props[key]({
|
118
|
+
angularComponent: component,
|
119
|
+
event
|
120
|
+
});
|
121
|
+
});
|
122
|
+
}
|
123
|
+
}
|
124
|
+
if (!isEvent && (props[key] !== oldProps[key] || props[key] !== instance.getAttr(key))) {
|
125
|
+
hasUpdates = true;
|
126
|
+
updatedProps[key] = props[key];
|
127
|
+
}
|
128
|
+
});
|
129
|
+
if (hasUpdates) {
|
130
|
+
instance.setAttrs(updatedProps);
|
131
|
+
updatePicture(instance);
|
132
|
+
let val;
|
133
|
+
Object.keys(updatedProps).forEach((prop) => {
|
134
|
+
val = updatedProps[prop];
|
135
|
+
if (val instanceof Image && !val.complete) {
|
136
|
+
const node = instance;
|
137
|
+
val.addEventListener('load', function () {
|
138
|
+
const layer = node.getLayer();
|
139
|
+
if (layer) {
|
140
|
+
layer.batchDraw();
|
141
|
+
}
|
142
|
+
});
|
143
|
+
}
|
144
|
+
});
|
145
|
+
}
|
146
|
+
}
|
147
|
+
|
148
|
+
function camelize(str) {
|
149
|
+
return str
|
150
|
+
.replace(/^\w|[A-Z]|\b\w/g, function (letter, index) {
|
151
|
+
return index == 0 ? letter.toLowerCase() : letter.toUpperCase();
|
152
|
+
})
|
153
|
+
.replace(/\s+/g, '');
|
154
|
+
}
|
155
|
+
function capitalizeFirstLetter(string) {
|
156
|
+
return string.charAt(0).toUpperCase() + string.slice(1);
|
157
|
+
}
|
158
|
+
function getName(componentTag) {
|
159
|
+
return capitalizeFirstLetter(camelize(componentTag.slice(3).replace('-', ' ')));
|
160
|
+
}
|
161
|
+
function createListener(instance) {
|
162
|
+
const output = {};
|
163
|
+
[
|
164
|
+
'koMouseover',
|
165
|
+
'koMousemove',
|
166
|
+
'koMouseout',
|
167
|
+
'koMouseenter',
|
168
|
+
'koMouseleave',
|
169
|
+
'koMousedown',
|
170
|
+
'koMouseup',
|
171
|
+
'koWheel',
|
172
|
+
'koContextmenu',
|
173
|
+
'koClick',
|
174
|
+
'koDblclick',
|
175
|
+
'koTouchstart',
|
176
|
+
'koTouchmove',
|
177
|
+
'koTouchend',
|
178
|
+
'koTap',
|
179
|
+
'koDbltap',
|
180
|
+
'koDragstart',
|
181
|
+
'koDragmove',
|
182
|
+
'koDragend'
|
183
|
+
].forEach((eventName) => {
|
184
|
+
const name = eventName;
|
185
|
+
const eventEmitter = instance[name];
|
186
|
+
if (eventEmitter.observed) {
|
187
|
+
output[eventName] = eventEmitter.emit.bind(eventEmitter);
|
188
|
+
}
|
189
|
+
});
|
190
|
+
return output;
|
191
|
+
}
|
192
|
+
|
193
|
+
class KoShape {
|
194
|
+
constructor() {
|
195
|
+
this.config = input();
|
196
|
+
this.koMouseover = new EventEmitter();
|
197
|
+
this.koMousemove = new EventEmitter();
|
198
|
+
this.koMouseout = new EventEmitter();
|
199
|
+
this.koMouseenter = new EventEmitter();
|
200
|
+
this.koMouseleave = new EventEmitter();
|
201
|
+
this.koMousedown = new EventEmitter();
|
202
|
+
this.koMouseup = new EventEmitter();
|
203
|
+
this.koWheel = new EventEmitter();
|
204
|
+
this.koContextmenu = new EventEmitter();
|
205
|
+
this.koClick = new EventEmitter();
|
206
|
+
this.koDblclick = new EventEmitter();
|
207
|
+
this.koTouchstart = new EventEmitter();
|
208
|
+
this.koTouchmove = new EventEmitter();
|
209
|
+
this.koTouchend = new EventEmitter();
|
210
|
+
this.koTap = new EventEmitter();
|
211
|
+
this.koDbltap = new EventEmitter();
|
212
|
+
this.koDragstart = new EventEmitter();
|
213
|
+
this.koDragmove = new EventEmitter();
|
214
|
+
this.koDragend = new EventEmitter();
|
215
|
+
this.elementRef = inject((ElementRef));
|
216
|
+
this.container = inject(KO_CONTAINER_TOKEN, { skipSelf: true });
|
217
|
+
this.cacheProps = {};
|
218
|
+
this.nameNode = getName(this.elementRef.nativeElement.localName);
|
219
|
+
effect(() => {
|
220
|
+
if (this.config()) {
|
221
|
+
this.updateNode(this.config());
|
222
|
+
}
|
223
|
+
});
|
224
|
+
}
|
225
|
+
getNode() {
|
226
|
+
return this._node;
|
227
|
+
}
|
228
|
+
ngOnInit() {
|
229
|
+
this.initKonva();
|
230
|
+
}
|
231
|
+
initKonva() {
|
232
|
+
if (!this._node) {
|
233
|
+
this._node = new Shape();
|
234
|
+
}
|
235
|
+
if (this.nameNode === 'Shape') {
|
236
|
+
this._node = new Shape();
|
237
|
+
}
|
238
|
+
else if (this.nameNode === 'Sprite') {
|
239
|
+
this._node = new Sprite(this.config());
|
240
|
+
}
|
241
|
+
else {
|
242
|
+
this._node = new Konva[this.nameNode](undefined);
|
243
|
+
}
|
244
|
+
const animationStage = this._node.to.bind(this._node);
|
245
|
+
this._node.to = (newConfig) => {
|
246
|
+
animationStage(newConfig);
|
247
|
+
setTimeout(() => {
|
248
|
+
Object.keys(this._node.attrs).forEach((key) => {
|
249
|
+
if (typeof this._node.attrs[key] !== 'function') {
|
250
|
+
this.config()[key] = this._node.attrs[key];
|
251
|
+
}
|
252
|
+
});
|
253
|
+
}, 200);
|
254
|
+
};
|
255
|
+
if (this.config()) {
|
256
|
+
this.updateNode(this.config());
|
257
|
+
}
|
258
|
+
}
|
259
|
+
updateNode(config) {
|
260
|
+
if (!this._node)
|
261
|
+
return;
|
262
|
+
const props = {
|
263
|
+
...config,
|
264
|
+
...createListener(this)
|
265
|
+
};
|
266
|
+
applyNodeProps(this, props, this.cacheProps);
|
267
|
+
this.cacheProps = props;
|
268
|
+
}
|
269
|
+
ngAfterViewInit() {
|
270
|
+
const container = this.container.getNode();
|
271
|
+
container.add(this.getNode());
|
272
|
+
updatePicture(this.container.getNode());
|
273
|
+
}
|
274
|
+
ngOnDestroy() {
|
275
|
+
this._node?.destroy();
|
276
|
+
}
|
277
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KoShape, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
278
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: KoShape, isStandalone: true, selector: "ko-shape, ko-circle, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow, ko-transformer", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { koMouseover: "koMouseover", koMousemove: "koMousemove", koMouseout: "koMouseout", koMouseenter: "koMouseenter", koMouseleave: "koMouseleave", koMousedown: "koMousedown", koMouseup: "koMouseup", koWheel: "koWheel", koContextmenu: "koContextmenu", koClick: "koClick", koDblclick: "koDblclick", koTouchstart: "koTouchstart", koTouchmove: "koTouchmove", koTouchend: "koTouchend", koTap: "koTap", koDbltap: "koDbltap", koDragstart: "koDragstart", koDragmove: "koDragmove", koDragend: "koDragend" }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
279
|
+
}
|
280
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KoShape, decorators: [{
|
281
|
+
type: Component,
|
282
|
+
args: [{
|
283
|
+
selector: 'ko-shape, ko-circle, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow, ko-transformer',
|
284
|
+
standalone: true,
|
285
|
+
template: `<ng-content></ng-content>`,
|
286
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
287
|
+
}]
|
288
|
+
}], ctorParameters: () => [], propDecorators: { koMouseover: [{
|
289
|
+
type: Output
|
290
|
+
}], koMousemove: [{
|
291
|
+
type: Output
|
292
|
+
}], koMouseout: [{
|
293
|
+
type: Output
|
294
|
+
}], koMouseenter: [{
|
295
|
+
type: Output
|
296
|
+
}], koMouseleave: [{
|
297
|
+
type: Output
|
298
|
+
}], koMousedown: [{
|
299
|
+
type: Output
|
300
|
+
}], koMouseup: [{
|
301
|
+
type: Output
|
302
|
+
}], koWheel: [{
|
303
|
+
type: Output
|
304
|
+
}], koContextmenu: [{
|
305
|
+
type: Output
|
306
|
+
}], koClick: [{
|
307
|
+
type: Output
|
308
|
+
}], koDblclick: [{
|
309
|
+
type: Output
|
310
|
+
}], koTouchstart: [{
|
311
|
+
type: Output
|
312
|
+
}], koTouchmove: [{
|
313
|
+
type: Output
|
314
|
+
}], koTouchend: [{
|
315
|
+
type: Output
|
316
|
+
}], koTap: [{
|
317
|
+
type: Output
|
318
|
+
}], koDbltap: [{
|
319
|
+
type: Output
|
320
|
+
}], koDragstart: [{
|
321
|
+
type: Output
|
322
|
+
}], koDragmove: [{
|
323
|
+
type: Output
|
324
|
+
}], koDragend: [{
|
325
|
+
type: Output
|
326
|
+
}] } });
|
327
|
+
|
328
|
+
class KoContainer extends KoShape {
|
329
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KoContainer, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
330
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: KoContainer, isStandalone: true, selector: "ko-layer, ko-fastlayer, ko-group", providers: [
|
331
|
+
{
|
332
|
+
provide: KO_CONTAINER_TOKEN,
|
333
|
+
useExisting: KoContainer
|
334
|
+
}
|
335
|
+
], usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
336
|
+
}
|
337
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KoContainer, decorators: [{
|
338
|
+
type: Component,
|
339
|
+
args: [{
|
340
|
+
selector: 'ko-layer, ko-fastlayer, ko-group',
|
341
|
+
standalone: true,
|
342
|
+
template: `<ng-content></ng-content>`,
|
343
|
+
providers: [
|
344
|
+
{
|
345
|
+
provide: KO_CONTAINER_TOKEN,
|
346
|
+
useExisting: KoContainer
|
347
|
+
}
|
348
|
+
],
|
349
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
350
|
+
}]
|
351
|
+
}] });
|
352
|
+
|
353
|
+
class KoStage {
|
354
|
+
constructor() {
|
355
|
+
this.config = input();
|
356
|
+
this.koMouseover = new EventEmitter();
|
357
|
+
this.koMousemove = new EventEmitter();
|
358
|
+
this.koMouseout = new EventEmitter();
|
359
|
+
this.koMouseenter = new EventEmitter();
|
360
|
+
this.koMouseleave = new EventEmitter();
|
361
|
+
this.koMousedown = new EventEmitter();
|
362
|
+
this.koMouseup = new EventEmitter();
|
363
|
+
this.koWheel = new EventEmitter();
|
364
|
+
this.koContextmenu = new EventEmitter();
|
365
|
+
this.koClick = new EventEmitter();
|
366
|
+
this.koDblclick = new EventEmitter();
|
367
|
+
this.koTouchstart = new EventEmitter();
|
368
|
+
this.koTouchmove = new EventEmitter();
|
369
|
+
this.koTouchend = new EventEmitter();
|
370
|
+
this.koTap = new EventEmitter();
|
371
|
+
this.koDbltap = new EventEmitter();
|
372
|
+
this.koDragstart = new EventEmitter();
|
373
|
+
this.koDragmove = new EventEmitter();
|
374
|
+
this.koDragend = new EventEmitter();
|
375
|
+
this.cacheProps = {};
|
376
|
+
this.nodeContainer = inject(ElementRef).nativeElement;
|
377
|
+
effect(() => {
|
378
|
+
if (this.config()) {
|
379
|
+
if (!this._stage) {
|
380
|
+
this.initStage();
|
381
|
+
}
|
382
|
+
this.updateNode(this.config());
|
383
|
+
}
|
384
|
+
});
|
385
|
+
}
|
386
|
+
ngOnInit() {
|
387
|
+
this.initStage();
|
388
|
+
}
|
389
|
+
getNode() {
|
390
|
+
return this._stage;
|
391
|
+
}
|
392
|
+
initStage() {
|
393
|
+
this._stage = new Stage({
|
394
|
+
...this.config(),
|
395
|
+
container: this.nodeContainer
|
396
|
+
});
|
397
|
+
}
|
398
|
+
updateNode(config) {
|
399
|
+
const props = {
|
400
|
+
...config,
|
401
|
+
...createListener(this)
|
402
|
+
};
|
403
|
+
applyNodeProps(this, props, this.cacheProps);
|
404
|
+
this.cacheProps = props;
|
405
|
+
}
|
406
|
+
ngOnDestroy() {
|
407
|
+
this._stage?.destroy();
|
408
|
+
}
|
409
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KoStage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
410
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: KoStage, isStandalone: true, selector: "ko-stage", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { koMouseover: "koMouseover", koMousemove: "koMousemove", koMouseout: "koMouseout", koMouseenter: "koMouseenter", koMouseleave: "koMouseleave", koMousedown: "koMousedown", koMouseup: "koMouseup", koWheel: "koWheel", koContextmenu: "koContextmenu", koClick: "koClick", koDblclick: "koDblclick", koTouchstart: "koTouchstart", koTouchmove: "koTouchmove", koTouchend: "koTouchend", koTap: "koTap", koDbltap: "koDbltap", koDragstart: "koDragstart", koDragmove: "koDragmove", koDragend: "koDragend" }, providers: [
|
411
|
+
{
|
412
|
+
provide: KO_CONTAINER_TOKEN,
|
413
|
+
useExisting: KoStage
|
414
|
+
}
|
415
|
+
], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
416
|
+
}
|
417
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KoStage, decorators: [{
|
418
|
+
type: Component,
|
419
|
+
args: [{
|
420
|
+
selector: 'ko-stage',
|
421
|
+
standalone: true,
|
422
|
+
template: `<ng-content></ng-content>`,
|
423
|
+
providers: [
|
424
|
+
{
|
425
|
+
provide: KO_CONTAINER_TOKEN,
|
426
|
+
useExisting: KoStage
|
427
|
+
}
|
428
|
+
],
|
429
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
430
|
+
}]
|
431
|
+
}], ctorParameters: () => [], propDecorators: { koMouseover: [{
|
432
|
+
type: Output
|
433
|
+
}], koMousemove: [{
|
434
|
+
type: Output
|
435
|
+
}], koMouseout: [{
|
436
|
+
type: Output
|
437
|
+
}], koMouseenter: [{
|
438
|
+
type: Output
|
439
|
+
}], koMouseleave: [{
|
440
|
+
type: Output
|
441
|
+
}], koMousedown: [{
|
442
|
+
type: Output
|
443
|
+
}], koMouseup: [{
|
444
|
+
type: Output
|
445
|
+
}], koWheel: [{
|
446
|
+
type: Output
|
447
|
+
}], koContextmenu: [{
|
448
|
+
type: Output
|
449
|
+
}], koClick: [{
|
450
|
+
type: Output
|
451
|
+
}], koDblclick: [{
|
452
|
+
type: Output
|
453
|
+
}], koTouchstart: [{
|
454
|
+
type: Output
|
455
|
+
}], koTouchmove: [{
|
456
|
+
type: Output
|
457
|
+
}], koTouchend: [{
|
458
|
+
type: Output
|
459
|
+
}], koTap: [{
|
460
|
+
type: Output
|
461
|
+
}], koDbltap: [{
|
462
|
+
type: Output
|
463
|
+
}], koDragstart: [{
|
464
|
+
type: Output
|
465
|
+
}], koDragmove: [{
|
466
|
+
type: Output
|
467
|
+
}], koDragend: [{
|
468
|
+
type: Output
|
469
|
+
}] } });
|
470
|
+
|
471
|
+
class KoComponent extends Component {
|
472
|
+
}
|
473
|
+
|
474
|
+
const KoShapeTypes = {
|
475
|
+
Arc,
|
476
|
+
Arrow,
|
477
|
+
Circle,
|
478
|
+
Ellipse,
|
479
|
+
Image: Image$1,
|
480
|
+
Label,
|
481
|
+
Tag,
|
482
|
+
Line,
|
483
|
+
Path,
|
484
|
+
Rect,
|
485
|
+
RegularPolygon,
|
486
|
+
Ring,
|
487
|
+
Star,
|
488
|
+
Text,
|
489
|
+
TextPath,
|
490
|
+
Transformer,
|
491
|
+
Wedge,
|
492
|
+
Group,
|
493
|
+
Layer,
|
494
|
+
FastLayer
|
495
|
+
};
|
72
496
|
|
73
497
|
const Colors = {
|
74
498
|
primary: '#6698FF',
|
@@ -225,6 +649,7 @@ var AITableGridI18nKey;
|
|
225
649
|
AITableGridI18nKey["copiedCells"] = "copiedCells";
|
226
650
|
AITableGridI18nKey["invalidPasteContent"] = "invalidPasteContent";
|
227
651
|
AITableGridI18nKey["fieldTypeText"] = "fieldTypeText";
|
652
|
+
AITableGridI18nKey["fieldTypeRichtext"] = "fieldTypeRichtext";
|
228
653
|
AITableGridI18nKey["fieldTypeSelect"] = "fieldTypeSelect";
|
229
654
|
AITableGridI18nKey["fieldTypeMultiSelect"] = "fieldTypeMultiSelect";
|
230
655
|
AITableGridI18nKey["fieldTypeNumber"] = "fieldTypeNumber";
|
@@ -260,6 +685,7 @@ const AITableI18nText = {
|
|
260
685
|
[AITableGridI18nKey.copiedCells]: '已复制 {count} 个单元格',
|
261
686
|
[AITableGridI18nKey.invalidPasteContent]: '粘贴内容不符合当前类型', // 新增
|
262
687
|
[AITableGridI18nKey.fieldTypeText]: '单行文本',
|
688
|
+
[AITableGridI18nKey.fieldTypeRichtext]: '多行文本',
|
263
689
|
[AITableGridI18nKey.fieldTypeSelect]: '单选',
|
264
690
|
[AITableGridI18nKey.fieldTypeMultiSelect]: '多选',
|
265
691
|
[AITableGridI18nKey.fieldTypeNumber]: '数字',
|
@@ -300,6 +726,12 @@ function getFieldOptions(aiTable) {
|
|
300
726
|
icon: 'font',
|
301
727
|
width: AI_TABLE_FIELD_MAX_WIDTH
|
302
728
|
},
|
729
|
+
{
|
730
|
+
type: AITableFieldType.richText,
|
731
|
+
name: getI18nTextByKey(aiTable, AITableGridI18nKey.fieldTypeRichtext),
|
732
|
+
icon: 'multiline-text',
|
733
|
+
width: AI_TABLE_FIELD_MAX_WIDTH
|
734
|
+
},
|
303
735
|
{
|
304
736
|
type: AITableFieldType.select,
|
305
737
|
name: getI18nTextByKey(aiTable, AITableGridI18nKey.fieldTypeSelect),
|
@@ -524,7 +956,7 @@ class Coordinate {
|
|
524
956
|
* 根据 columnIndex 获取对应列宽
|
525
957
|
*/
|
526
958
|
getColumnWidth(index) {
|
527
|
-
return this.columnIndicesSizeMap[index];
|
959
|
+
return this.columnIndicesSizeMap[index] ?? 0;
|
528
960
|
}
|
529
961
|
/**
|
530
962
|
* 获取每个 cell 垂直/水平方向的坐标信息
|
@@ -548,7 +980,7 @@ class Coordinate {
|
|
548
980
|
offset = itemMetadata.offset + itemMetadata.size;
|
549
981
|
}
|
550
982
|
for (let i = lastMeasuredIndex + 1; i <= index; i++) {
|
551
|
-
const size = isColumnType ? this.columnIndicesSizeMap[i] : (this.rowIndicesSizeMap[i] ?? this.rowHeight);
|
983
|
+
const size = isColumnType ? (this.columnIndicesSizeMap[i] ?? 0) : (this.rowIndicesSizeMap[i] ?? this.rowHeight);
|
552
984
|
cellMetadataMap[i] = {
|
553
985
|
offset,
|
554
986
|
size
|
@@ -820,7 +1252,7 @@ function getDefaultFieldValue(field) {
|
|
820
1252
|
if (isArrayField(field)) {
|
821
1253
|
return [];
|
822
1254
|
}
|
823
|
-
if (isNumberFiled(field)) {
|
1255
|
+
if (isNumberFiled(field) || field.type === AITableFieldType.richText) {
|
824
1256
|
return null;
|
825
1257
|
}
|
826
1258
|
return '';
|
@@ -1143,7 +1575,7 @@ class LinkEditComponent {
|
|
1143
1575
|
this.confirm.emit(link);
|
1144
1576
|
}
|
1145
1577
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LinkEditComponent, deps: [{ token: i1$1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
1146
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: LinkEditComponent, isStandalone: true, selector: "link-edit", inputs: { url: { classPropertyName: "url", publicName: "url", isSignal: false, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: false, isRequired: false, transformFunction: null }, aiTable: { classPropertyName: "aiTable", publicName: "aiTable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { confirm: "confirm" }, ngImport: i0, template: "<form\n thyLayout=\"vertical\"\n thyStopPropagation\n thyForm\n #linkForm=\"thyForm\"\n [thyFormValidatorConfig]=\"validatorConfig()\"\n name=\"linkForm\"\n class=\"p-5\"\n>\n <thy-form-group [thyLabelText]=\"i18nTexts().linkText\">\n <input thyInput [placeholder]=\"i18nTexts().textPlaceholder\" />\n </thy-form-group>\n <thy-form-group [thyLabelText]=\"i18nTexts().urlLabel\">\n <input name=\"url\" thyInput [placeholder]=\"i18nTexts().urlPlaceholder\" [pattern]=\"URLRegex\" type=\"text\" [(ngModel)]=\"url\" />\n </thy-form-group>\n <thy-form-group-footer thyAlign=\"right\">\n <div class=\"btn-pair\">\n <button thyStopPropagation thyButton=\"link-secondary\" thySize=\"sm\" (click)=\"close()\">{{i18nTexts().cancel}}</button>\n <button thyStopPropagation thyButton=\"primary\" thySize=\"sm\" (thyFormSubmit)=\"apply(linkForm)\">{{i18nTexts().apply}}</button>\n </div>\n </thy-form-group-footer>\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: ThyStopPropagationDirective, selector: "[thyStopPropagation]", inputs: ["thyStopPropagation"] }, { kind: "directive", type: ThyInputDirective, selector: "input[thyInput], select[thyInput], textarea[thyInput]", inputs: ["thySize"], exportAs: ["thyInput"] }, { kind: "component", type: ThyButton, selector: "thy-button,[thy-button],[thyButton]", inputs: ["thyButton", "thyType", "thyLoading", "thyLoadingText", "thySize", "thyIcon", "thyBlock"] }, { kind: "directive", type: ThyFormSubmitDirective, selector: "[thyFormSubmit],[thy-form-submit]", outputs: ["thyFormSubmit"] }, { kind: "ngmodule", type: ThyFormModule }, { kind: "directive", type: i2.ThyFormDirective, selector: "[thyForm],[thy-form]", inputs: ["thyLayout", "thyEnterKeyMode", "thyFormValidatorConfig"], exportAs: ["thyForm"] }, { kind: "component", type: i2.ThyFormGroup, selector: "thy-form-group", inputs: ["thyLabelText", "thyLabelTextTranslateKey", "thyLabelRequired", "thyLabelPaddingTopClear", "thyFeedbackIcon", "thyTipsMode", "thyTips", "thyTipsTranslateKey", "thyRowFill"] }, { kind: "component", type: i2.ThyFormGroupFooter, selector: "thy-form-group-footer", inputs: ["thyAlign"] }] }); }
|
1578
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: LinkEditComponent, isStandalone: true, selector: "link-edit", inputs: { url: { classPropertyName: "url", publicName: "url", isSignal: false, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: false, isRequired: false, transformFunction: null }, aiTable: { classPropertyName: "aiTable", publicName: "aiTable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { confirm: "confirm" }, ngImport: i0, template: "<form\n thyLayout=\"vertical\"\n thyStopPropagation\n thyForm\n #linkForm=\"thyForm\"\n [thyFormValidatorConfig]=\"validatorConfig()\"\n name=\"linkForm\"\n class=\"p-5\"\n>\n <thy-form-group [thyLabelText]=\"i18nTexts().linkText\">\n <input thyInput [placeholder]=\"i18nTexts().textPlaceholder\" name=\"text\" [(ngModel)]=\"text\" />\n </thy-form-group>\n <thy-form-group [thyLabelText]=\"i18nTexts().urlLabel\">\n <input name=\"url\" thyInput [placeholder]=\"i18nTexts().urlPlaceholder\" [pattern]=\"URLRegex\" type=\"text\" [(ngModel)]=\"url\" />\n </thy-form-group>\n <thy-form-group-footer thyAlign=\"right\">\n <div class=\"btn-pair\">\n <button thyStopPropagation thyButton=\"link-secondary\" thySize=\"sm\" (click)=\"close()\">{{ i18nTexts().cancel }}</button>\n <button thyStopPropagation thyButton=\"primary\" thySize=\"sm\" (thyFormSubmit)=\"apply(linkForm)\">{{ i18nTexts().apply }}</button>\n </div>\n </thy-form-group-footer>\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: ThyStopPropagationDirective, selector: "[thyStopPropagation]", inputs: ["thyStopPropagation"] }, { kind: "directive", type: ThyInputDirective, selector: "input[thyInput], select[thyInput], textarea[thyInput]", inputs: ["thySize"], exportAs: ["thyInput"] }, { kind: "component", type: ThyButton, selector: "thy-button,[thy-button],[thyButton]", inputs: ["thyButton", "thyType", "thyLoading", "thyLoadingText", "thySize", "thyIcon", "thyBlock"] }, { kind: "directive", type: ThyFormSubmitDirective, selector: "[thyFormSubmit],[thy-form-submit]", outputs: ["thyFormSubmit"] }, { kind: "ngmodule", type: ThyFormModule }, { kind: "directive", type: i2.ThyFormDirective, selector: "[thyForm],[thy-form]", inputs: ["thyLayout", "thyEnterKeyMode", "thyFormValidatorConfig"], exportAs: ["thyForm"] }, { kind: "component", type: i2.ThyFormGroup, selector: "thy-form-group", inputs: ["thyLabelText", "thyLabelTextTranslateKey", "thyLabelRequired", "thyLabelPaddingTopClear", "thyFeedbackIcon", "thyTipsMode", "thyTips", "thyTipsTranslateKey", "thyRowFill"] }, { kind: "component", type: i2.ThyFormGroupFooter, selector: "thy-form-group-footer", inputs: ["thyAlign"] }] }); }
|
1147
1579
|
}
|
1148
1580
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LinkEditComponent, decorators: [{
|
1149
1581
|
type: Component,
|
@@ -1155,7 +1587,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
1155
1587
|
ThyButton,
|
1156
1588
|
ThyFormSubmitDirective,
|
1157
1589
|
ThyFormModule
|
1158
|
-
], template: "<form\n thyLayout=\"vertical\"\n thyStopPropagation\n thyForm\n #linkForm=\"thyForm\"\n [thyFormValidatorConfig]=\"validatorConfig()\"\n name=\"linkForm\"\n class=\"p-5\"\n>\n <thy-form-group [thyLabelText]=\"i18nTexts().linkText\">\n <input thyInput [placeholder]=\"i18nTexts().textPlaceholder\" />\n </thy-form-group>\n <thy-form-group [thyLabelText]=\"i18nTexts().urlLabel\">\n <input name=\"url\" thyInput [placeholder]=\"i18nTexts().urlPlaceholder\" [pattern]=\"URLRegex\" type=\"text\" [(ngModel)]=\"url\" />\n </thy-form-group>\n <thy-form-group-footer thyAlign=\"right\">\n <div class=\"btn-pair\">\n <button thyStopPropagation thyButton=\"link-secondary\" thySize=\"sm\" (click)=\"close()\">{{i18nTexts().cancel}}</button>\n <button thyStopPropagation thyButton=\"primary\" thySize=\"sm\" (thyFormSubmit)=\"apply(linkForm)\">{{i18nTexts().apply}}</button>\n </div>\n </thy-form-group-footer>\n</form>\n" }]
|
1590
|
+
], template: "<form\n thyLayout=\"vertical\"\n thyStopPropagation\n thyForm\n #linkForm=\"thyForm\"\n [thyFormValidatorConfig]=\"validatorConfig()\"\n name=\"linkForm\"\n class=\"p-5\"\n>\n <thy-form-group [thyLabelText]=\"i18nTexts().linkText\">\n <input thyInput [placeholder]=\"i18nTexts().textPlaceholder\" name=\"text\" [(ngModel)]=\"text\" />\n </thy-form-group>\n <thy-form-group [thyLabelText]=\"i18nTexts().urlLabel\">\n <input name=\"url\" thyInput [placeholder]=\"i18nTexts().urlPlaceholder\" [pattern]=\"URLRegex\" type=\"text\" [(ngModel)]=\"url\" />\n </thy-form-group>\n <thy-form-group-footer thyAlign=\"right\">\n <div class=\"btn-pair\">\n <button thyStopPropagation thyButton=\"link-secondary\" thySize=\"sm\" (click)=\"close()\">{{ i18nTexts().cancel }}</button>\n <button thyStopPropagation thyButton=\"primary\" thySize=\"sm\" (thyFormSubmit)=\"apply(linkForm)\">{{ i18nTexts().apply }}</button>\n </div>\n </thy-form-group-footer>\n</form>\n" }]
|
1159
1591
|
}], ctorParameters: () => [{ type: i1$1.ThyPopoverRef }], propDecorators: { url: [{
|
1160
1592
|
type: Input
|
1161
1593
|
}], text: [{
|
@@ -1971,6 +2403,7 @@ const AI_TABLE_ROW_HEIGHT = 44; // 默认行高基准
|
|
1971
2403
|
const AI_TABLE_CELL_ACTIVE_BORDER_WIDTH = 2; // 选中单元格的边框宽度
|
1972
2404
|
const AI_TABLE_CELL_ATTACHMENT_ADD = 'AI_TABLE_CELL_ATTACHMENT_ADD'; // 附件cell中新增图标名称
|
1973
2405
|
const AI_TABLE_CELL_ATTACHMENT_FILE = 'AI_TABLE_CELL_ATTACHMENT_FILE'; // 附件cell中文件
|
2406
|
+
const AI_TABLE_CELL_EDIT = 'AI_TABLE_CELL_EDIT'; // 附件cell中编辑图标名称
|
1974
2407
|
const AI_TABLE_FIELD_HEAD_TEXT_MIN_WIDTH = 30; // 字段列头文本的最小宽度
|
1975
2408
|
const AI_TABLE_ROW_SELECT_CHECKBOX = 'AI_TABLE_ROW_SELECT_CHECKBOX'; // 行 checkbox
|
1976
2409
|
const AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX = 'AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX'; // 表头 checkbox 标识
|
@@ -2069,6 +2502,7 @@ const Unchecked = `
|
|
2069
2502
|
M15.7,3.3v11.4c0,0.5-0.5,1-1,1H3.3c-0.5,0-1-0.5-1-1V3.3c0-0.5,0.5-1,1-1h11.4C15.2,2.3,15.7,2.8,15.7,3.3z
|
2070
2503
|
`;
|
2071
2504
|
const ColumnTextFilledPath = `M7.268 8.674l-2.076-4.86-2.076 4.86h4.152zm0.513 1.2H2.603l-1.294 3.03L0 12.902L4.49 2.4H5.894l4.484 10.486-1.31 0.002-1.287-3.014zm2.86 1.111c0-1.423 1.246-2.193 4.21-2.49 0-0.89-0.235-1.72-1.362-1.72-0.772 0-1.484 0.356-2.017 0.711l-0.475-0.771c0.653-0.415 1.602-0.889 2.669-0.889 1.602 0 2.313 1.127 2.313 2.787v4.151h-0.948l-0.12-0.83h-0.06c-0.651 0.534-1.422 0.949-2.252 0.949-1.127 0-1.957-0.652-1.957-1.898zm4.113-1.778c-2.253 0.296-3.024 0.83-3.024 1.72 0 0.77 0.534 1.067 1.186 1.067 0.652 0 1.186-0.297 1.838-0.89V9.207z`;
|
2505
|
+
const ColumnRichTextFilledPath = `M14.5526,11.7084 C14.8845231,11.7084 15.1536,11.9774769 15.1536,12.3094 C15.1536,12.6413231 14.8845231,12.9104 14.5526,12.9104 L14.5526,12.9104 L11.7546,12.9104 C11.4226769,12.9104 11.1536,12.6413231 11.1536,12.3094 C11.1536,11.9774769 11.4226769,11.7084 11.7546,11.7084 L11.7546,11.7084 Z M5.894,2.4 L10.378,12.886 L9.068,12.888 L7.779,9.873 L2.603,9.873 L1.309,12.904 L2.84217094e-14,12.902 L4.49,2.4 L5.894,2.4 Z M5.191,3.814 L3.116,8.673 L7.267,8.673 L5.191,3.814 Z M14.5526,7.17723172 C14.8845231,7.17723172 15.1536,7.44630859 15.1536,7.77823172 C15.1536,8.11015486 14.8845231,8.37923172 14.5526,8.37923172 L14.5526,8.37923172 L10.7546,8.37923172 C10.4226769,8.37923172 10.1536,8.11015486 10.1536,7.77823172 C10.1536,7.44630859 10.4226769,7.17723172 10.7546,7.17723172 L10.7546,7.17723172 Z M14.5526,2.3094 C14.8845231,2.3094 15.1536,2.57847687 15.1536,2.9104 C15.1536,3.24232313 14.8845231,3.5114 14.5526,3.5114 L14.5526,3.5114 L9.7546,3.5114 C9.42267687,3.5114 9.1536,3.24232313 9.1536,2.9104 C9.1536,2.57847687 9.42267687,2.3094 9.7546,2.3094 L9.7546,2.3094 Z`;
|
2072
2506
|
const ColumnSelectFilledPath = `M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-1.2A6.8 6.8 0 1 0 8 1.2a6.8 6.8 0 0 0 0 13.6zM5.666 7.207l1.8 1.845 3.482-3.554.857.84-4.34 4.43-2.658-2.723.86-.838z`;
|
2073
2507
|
const ColumnMultipleFillPath = `M2 2.551L3.576.976l.848.848L2 4.25.576 2.824l.848-.848L2 2.55zm0 5.425L3.576 6.4l.848.849L2 9.673.576 8.249l.848-.849.576.576zm0 5.4L3.576 11.8l.848.849L2 15.073.576 13.649l.848-.849.576.576zM5.663 2.6a.6.6 0 1 1 0-1.2H15.4a.6.6 0 0 1 0 1.2H5.663zm0 11.8a.6.6 0 0 1 0-1.2H15.4a.6.6 0 0 1 0 1.2H5.663zm0-6.2a.6.6 0 1 1 0-1.2H15.4a.6.6 0 0 1 0 1.2H5.663z`;
|
2074
2508
|
const ColumnCalendarFilledPath = `M10.9 3.2H5.1v1.6H3.9V3.2H1.2v3.2h13.6V3.2h-2.7v1.6h-1.2V3.2zM12.1 2H15a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h2.9V.4h1.2V2h5.8V.4h1.2V2zm2.7 5.6H1.2v7.2h13.6V7.6z`;
|
@@ -2083,6 +2517,7 @@ const StarFill = `M9.186 2.12l1.02 2.769c.073.292.365.437.656.437l2.915.146c1.16
|
|
2083
2517
|
const WebOutlinedPath = `M1 8C1 4.13401 4.13401 1 8 1C11.866 1 15 4.13401 15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8ZM6.04798 2.85646C4.19852 3.55874 2.82616 5.22986 2.55071 7.25H5.26373C5.31861 5.76009 5.53564 4.40148 5.87147 3.352C5.92605 3.18143 5.98481 3.0157 6.04798 2.85646ZM5.87147 12.648C5.53564 11.5985 5.31861 10.2399 5.26373 8.75H2.55071C2.82616 10.7701 4.19852 12.4413 6.04798 13.1435C5.98481 12.9843 5.92605 12.8186 5.87147 12.648ZM10.1285 12.648C10.0739 12.8186 10.0152 12.9843 9.95202 13.1435C11.8015 12.4413 13.1738 10.7701 13.4493 8.75H10.7363C10.6814 10.2399 10.4644 11.5985 10.1285 12.648ZM8.6999 12.1908C8.98163 11.3104 9.18095 10.1118 9.23518 8.75H6.76482C6.81905 10.1118 7.01837 11.3104 7.3001 12.1908C7.46768 12.7145 7.65131 13.0839 7.81962 13.3063C7.90746 13.4224 7.9686 13.4711 8 13.4906C8.0314 13.4711 8.09254 13.4224 8.18038 13.3063C8.34869 13.0839 8.53232 12.7145 8.6999 12.1908ZM7.3001 3.80916C7.01837 4.68959 6.81905 5.88818 6.76482 7.25H9.23518C9.18095 5.88818 8.98163 4.68959 8.6999 3.80916C8.53232 3.28548 8.34869 2.91612 8.18038 2.69367C8.09254 2.57756 8.0314 2.52893 8 2.50944C7.9686 2.52893 7.90746 2.57756 7.81962 2.69367C7.65131 2.91612 7.46768 3.28548 7.3001 3.80916ZM10.1285 3.352C10.4644 4.40148 10.6814 5.76009 10.7363 7.25H13.4493C13.1738 5.22986 11.8015 3.55874 9.95203 2.85646C10.0152 3.0157 10.0739 3.18143 10.1285 3.352Z`;
|
2084
2518
|
const DepartmentOutlinedPath = `M3 5.5C3 3.567 4.567 2 6.5 2C8.433 2 10 3.567 10 5.5C10 6.49548 9.5844 7.3939 8.91724 8.0312C10.7204 8.86779 12.017 10.6115 12.2217 12.6767C12.2976 13.4424 11.6682 14 11 14H2C1.33185 14 0.702358 13.4424 0.778277 12.6767C0.983033 10.6115 2.27961 8.86779 4.08276 8.0312C3.4156 7.3939 3 6.49548 3 5.5ZM8.5 5.5C8.5 4.39543 7.60457 3.5 6.5 3.5C5.39543 3.5 4.5 4.39543 4.5 5.5C4.5 6.60457 5.39543 7.5 6.5 7.5C7.60457 7.5 8.5 6.60457 8.5 5.5ZM2.31585 12.5H10.6841C10.3303 10.5108 8.59114 9 6.5 9C4.40886 9 2.66975 10.5108 2.31585 12.5Z', 'M11 3C10.5858 3 10.25 3.33579 10.25 3.75C10.25 4.16421 10.5858 4.5 11 4.5C11.6904 4.5 12.25 5.05964 12.25 5.75C12.25 6.44036 11.6904 7 11 7C10.5858 7 10.25 7.33579 10.25 7.75C10.25 8.16421 10.5858 8.5 11 8.5C12.6569 8.5 14 9.84315 14 11.5C14 11.9142 14.3358 12.25 14.75 12.25C15.1642 12.25 15.5 11.9142 15.5 11.5C15.5 9.77473 14.5291 8.27622 13.1038 7.52106C13.507 7.0426 13.75 6.42467 13.75 5.75C13.75 4.23122 12.5188 3 11 3Z`;
|
2085
2519
|
const AttachmentPath = `M9.1 6.5V10a3.1 3.1 0 0 1-6.2.006l-.047-4.979a.6.6 0 0 1 1.2-.011L4.1 10a1.9 1.9 0 0 0 3.8 0V4.48C7.9 2.9 6.5 1.6 4.75 1.6S1.6 2.9 1.6 4.48v5.728c0 2.413 1.97 4.371 4.4 4.371 2.43 0 4.4-1.958 4.4-4.37v-5.16a.6.6 0 0 1 1.2 0v5.16c0 3.077-2.508 5.57-5.6 5.57-3.092 0-5.6-2.493-5.6-5.57V4.48C.4 2.216 2.357.4 4.75.4S9.1 2.216 9.1 4.48V6.5z`;
|
2520
|
+
const EditPath = `M2,8.33918294 L10.7095952,0 L15,4.17020474 L6.53816398,13 L2,13 L2,8.33918294 Z M3.2,8.85157902 L3.2,11.8 L6.02608482,11.8 L13.3091776,4.20020516 L10.7033283,1.66736141 L3.2,8.85157902 Z M0,16 L0,14.8 L16,14.8 L16,16 L0,16 Z`;
|
2086
2521
|
|
2087
2522
|
const DEFAULT_FONT_SIZE = 14;
|
2088
2523
|
const DEFAULT_FONT_FAMILY = '-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Helvetica Neue,Noto Sans,Noto Sans CJK SC,Microsoft Yahei,Arial,Hiragino Sans GB,sans-serif';
|
@@ -3776,7 +4211,7 @@ const getHoverEditorBoxOffset = () => {
|
|
3776
4211
|
return borderSpace / 2;
|
3777
4212
|
};
|
3778
4213
|
|
3779
|
-
const handleMouseStyle = (realTargetName, areaType = AITableAreaType.grid, container) => {
|
4214
|
+
const handleMouseStyle = (realTargetName, areaType = AITableAreaType.grid, container, isReadOnly) => {
|
3780
4215
|
const { targetName, mouseStyle } = getDetailByTargetName(realTargetName);
|
3781
4216
|
if (mouseStyle)
|
3782
4217
|
return setMouseStyle(mouseStyle, container);
|
@@ -3790,6 +4225,12 @@ const handleMouseStyle = (realTargetName, areaType = AITableAreaType.grid, conta
|
|
3790
4225
|
case AI_TABLE_FIELD_ADD_BUTTON: {
|
3791
4226
|
return setMouseStyle('pointer', container);
|
3792
4227
|
}
|
4228
|
+
case AI_TABLE_FIELD_HEAD_OPACITY_LINE: {
|
4229
|
+
if (isReadOnly) {
|
4230
|
+
return setMouseStyle('default', container);
|
4231
|
+
}
|
4232
|
+
return setMouseStyle('col-resize', container);
|
4233
|
+
}
|
3793
4234
|
default:
|
3794
4235
|
return setMouseStyle('default', container);
|
3795
4236
|
}
|
@@ -3860,351 +4301,71 @@ const TextMeasure = (defaults = {}) => {
|
|
3860
4301
|
height: Math.ceil(height),
|
3861
4302
|
text,
|
3862
4303
|
isOverflow: Boolean(maxLineCount && lineCount > maxLineCount),
|
3863
|
-
lastLineWidth: Math.ceil(width)
|
3864
|
-
};
|
3865
|
-
}
|
3866
|
-
const arrText = text.split('');
|
3867
|
-
let rowCount = 0; // 总行数
|
3868
|
-
let textHeight = 0; // 文本最终占用的高度
|
3869
|
-
let showText = ''; // 每行展示的文本
|
3870
|
-
let totalText = '';
|
3871
|
-
let isLimitRow = false;
|
3872
|
-
const textLength = arrText.length;
|
3873
|
-
for (let n = 0; n < textLength; n++) {
|
3874
|
-
const singleText = arrText[n];
|
3875
|
-
const composeText = showText + singleText;
|
3876
|
-
// 如果没有超过 maxLineCount,就会继续换行
|
3877
|
-
isLimitRow = maxLineCount ? rowCount === maxLineCount - 1 : false;
|
3878
|
-
const measureText = isLimitRow ? composeText + '…' : composeText;
|
3879
|
-
totalText += singleText;
|
3880
|
-
const textWidth = context?.measureText(measureText).width ?? 0;
|
3881
|
-
const isLineBreak = ['\n', '\r'].includes(singleText);
|
3882
|
-
if (((maxWidth && textWidth > maxWidth) || isLineBreak) && (maxLineCount == null || rowCount < maxLineCount)) {
|
3883
|
-
showText = isLineBreak ? '' : singleText;
|
3884
|
-
textHeight += lineHeight;
|
3885
|
-
rowCount++;
|
3886
|
-
if (isLimitRow) {
|
3887
|
-
if (n < textLength - 1) {
|
3888
|
-
totalText = totalText.substring(0, totalText.length - 1) + '…';
|
3889
|
-
}
|
3890
|
-
break;
|
3891
|
-
}
|
3892
|
-
}
|
3893
|
-
else {
|
3894
|
-
showText = composeText;
|
3895
|
-
}
|
3896
|
-
}
|
3897
|
-
return {
|
3898
|
-
width: Math.ceil(width),
|
3899
|
-
height: Math.ceil(maxLineCount == null || rowCount < maxLineCount ? textHeight + lineHeight : textHeight),
|
3900
|
-
text: totalText,
|
3901
|
-
isOverflow: isLimitRow,
|
3902
|
-
lastLineWidth: context?.measureText(showText).width ?? 0
|
3903
|
-
};
|
3904
|
-
};
|
3905
|
-
// 测量给定文本的宽度和高度。
|
3906
|
-
// 支持指定最大宽度 (maxWidth) 和最大行数 (maxLineCount),从而能够处理多行文本的自动换行和截断(例如在文本超过行数限制时添加省略号 "…")
|
3907
|
-
const measureText = (text, maxWidth, maxLineCount) => {
|
3908
|
-
return getWidthOfLongestText(castToString(text), maxWidth, maxLineCount);
|
3909
|
-
};
|
3910
|
-
// 可以将字体样式重置为初始默认配置
|
3911
|
-
const reset = () => setFont(defaults);
|
3912
|
-
setFont(o);
|
3913
|
-
return {
|
3914
|
-
context,
|
3915
|
-
measureText,
|
3916
|
-
setFont,
|
3917
|
-
reset
|
3918
|
-
};
|
3919
|
-
};
|
3920
|
-
|
3921
|
-
const isCellMatchKeywords = (aiTable, field, recordId, keywords, references) => {
|
3922
|
-
const cellValue = AITableQueries.getFieldValue(aiTable, [recordId, field._id]);
|
3923
|
-
const transformValue = transformCellValue(aiTable, field, cellValue);
|
3924
|
-
const fieldMethod = FieldModelMap[field.type];
|
3925
|
-
let cellFullText = fieldMethod.cellFullText(transformValue, field, references);
|
3926
|
-
return keywords && cellFullText.length && cellFullText.some((text) => text.toLowerCase().includes(keywords.toLowerCase()));
|
3927
|
-
};
|
3928
|
-
|
3929
|
-
function updatePicture(node) {
|
3930
|
-
const drawingNode = node.getLayer() || node.getStage();
|
3931
|
-
if (drawingNode) {
|
3932
|
-
drawingNode.batchDraw();
|
3933
|
-
}
|
3934
|
-
}
|
3935
|
-
|
3936
|
-
// adapted FROM: https://github.com/lavrton/react-konva/blob/master/src/react-konva-fiber.js
|
3937
|
-
function applyNodeProps(component, props = {}, oldProps = {}) {
|
3938
|
-
if ('id' in props) {
|
3939
|
-
const message = `You are using "id" attribute for Konva node. In some very rare cases it may produce bugs. Currently we recommend not to use it and use "name" attribute instead.`;
|
3940
|
-
console.warn(message);
|
3941
|
-
}
|
3942
|
-
const instance = component.getNode();
|
3943
|
-
const updatedProps = {};
|
3944
|
-
let hasUpdates = false;
|
3945
|
-
Object.keys(oldProps).forEach((key) => {
|
3946
|
-
const isEvent = key.slice(0, 2) === 'ko';
|
3947
|
-
const propChanged = oldProps[key] !== props[key];
|
3948
|
-
if (isEvent && propChanged) {
|
3949
|
-
let eventName = key.slice(2).toLowerCase();
|
3950
|
-
if (eventName.slice(0, 7) === 'content') {
|
3951
|
-
eventName = 'content' + eventName.slice(7, 8).toUpperCase() + eventName.slice(8);
|
3952
|
-
}
|
3953
|
-
instance.off(eventName, oldProps[key]);
|
3954
|
-
}
|
3955
|
-
const toRemove = !Object.hasOwn(props, key);
|
3956
|
-
if (toRemove) {
|
3957
|
-
instance.setAttr(key, undefined);
|
3958
|
-
}
|
3959
|
-
});
|
3960
|
-
Object.keys(props).forEach((key) => {
|
3961
|
-
const isEvent = key.slice(0, 2) === 'ko';
|
3962
|
-
const toAdd = oldProps[key] !== props[key];
|
3963
|
-
if (isEvent && toAdd) {
|
3964
|
-
let eventName = key.slice(2).toLowerCase();
|
3965
|
-
if (eventName.slice(0, 7) === 'content') {
|
3966
|
-
eventName = 'content' + eventName.slice(7, 8).toUpperCase() + eventName.slice(8);
|
3967
|
-
}
|
3968
|
-
if (props[key]) {
|
3969
|
-
instance.off(eventName);
|
3970
|
-
instance.on(eventName, (event) => {
|
3971
|
-
props[key]({
|
3972
|
-
angularComponent: component,
|
3973
|
-
event
|
3974
|
-
});
|
3975
|
-
});
|
3976
|
-
}
|
3977
|
-
}
|
3978
|
-
if (!isEvent && (props[key] !== oldProps[key] || props[key] !== instance.getAttr(key))) {
|
3979
|
-
hasUpdates = true;
|
3980
|
-
updatedProps[key] = props[key];
|
3981
|
-
}
|
3982
|
-
});
|
3983
|
-
if (hasUpdates) {
|
3984
|
-
instance.setAttrs(updatedProps);
|
3985
|
-
updatePicture(instance);
|
3986
|
-
let val;
|
3987
|
-
Object.keys(updatedProps).forEach((prop) => {
|
3988
|
-
val = updatedProps[prop];
|
3989
|
-
if (val instanceof Image && !val.complete) {
|
3990
|
-
const node = instance;
|
3991
|
-
val.addEventListener('load', function () {
|
3992
|
-
const layer = node.getLayer();
|
3993
|
-
if (layer) {
|
3994
|
-
layer.batchDraw();
|
3995
|
-
}
|
3996
|
-
});
|
3997
|
-
}
|
3998
|
-
});
|
3999
|
-
}
|
4000
|
-
}
|
4001
|
-
|
4002
|
-
function camelize(str) {
|
4003
|
-
return str
|
4004
|
-
.replace(/^\w|[A-Z]|\b\w/g, function (letter, index) {
|
4005
|
-
return index == 0 ? letter.toLowerCase() : letter.toUpperCase();
|
4006
|
-
})
|
4007
|
-
.replace(/\s+/g, '');
|
4008
|
-
}
|
4009
|
-
function capitalizeFirstLetter(string) {
|
4010
|
-
return string.charAt(0).toUpperCase() + string.slice(1);
|
4011
|
-
}
|
4012
|
-
function getName(componentTag) {
|
4013
|
-
return capitalizeFirstLetter(camelize(componentTag.slice(3).replace('-', ' ')));
|
4014
|
-
}
|
4015
|
-
function createListener(instance) {
|
4016
|
-
const output = {};
|
4017
|
-
[
|
4018
|
-
'koMouseover',
|
4019
|
-
'koMousemove',
|
4020
|
-
'koMouseout',
|
4021
|
-
'koMouseenter',
|
4022
|
-
'koMouseleave',
|
4023
|
-
'koMousedown',
|
4024
|
-
'koMouseup',
|
4025
|
-
'koWheel',
|
4026
|
-
'koContextmenu',
|
4027
|
-
'koClick',
|
4028
|
-
'koDblclick',
|
4029
|
-
'koTouchstart',
|
4030
|
-
'koTouchmove',
|
4031
|
-
'koTouchend',
|
4032
|
-
'koTap',
|
4033
|
-
'koDbltap',
|
4034
|
-
'koDragstart',
|
4035
|
-
'koDragmove',
|
4036
|
-
'koDragend'
|
4037
|
-
].forEach((eventName) => {
|
4038
|
-
const name = eventName;
|
4039
|
-
const eventEmitter = instance[name];
|
4040
|
-
if (eventEmitter.observed) {
|
4041
|
-
output[eventName] = eventEmitter.emit.bind(eventEmitter);
|
4042
|
-
}
|
4043
|
-
});
|
4044
|
-
return output;
|
4045
|
-
}
|
4046
|
-
|
4047
|
-
const KO_CONTAINER_TOKEN = new InjectionToken('KO_CONTAINER_TOKEN');
|
4048
|
-
|
4049
|
-
class KoShape {
|
4050
|
-
constructor() {
|
4051
|
-
this.config = input();
|
4052
|
-
this.koMouseover = new EventEmitter();
|
4053
|
-
this.koMousemove = new EventEmitter();
|
4054
|
-
this.koMouseout = new EventEmitter();
|
4055
|
-
this.koMouseenter = new EventEmitter();
|
4056
|
-
this.koMouseleave = new EventEmitter();
|
4057
|
-
this.koMousedown = new EventEmitter();
|
4058
|
-
this.koMouseup = new EventEmitter();
|
4059
|
-
this.koWheel = new EventEmitter();
|
4060
|
-
this.koContextmenu = new EventEmitter();
|
4061
|
-
this.koClick = new EventEmitter();
|
4062
|
-
this.koDblclick = new EventEmitter();
|
4063
|
-
this.koTouchstart = new EventEmitter();
|
4064
|
-
this.koTouchmove = new EventEmitter();
|
4065
|
-
this.koTouchend = new EventEmitter();
|
4066
|
-
this.koTap = new EventEmitter();
|
4067
|
-
this.koDbltap = new EventEmitter();
|
4068
|
-
this.koDragstart = new EventEmitter();
|
4069
|
-
this.koDragmove = new EventEmitter();
|
4070
|
-
this.koDragend = new EventEmitter();
|
4071
|
-
this.elementRef = inject((ElementRef));
|
4072
|
-
this.container = inject(KO_CONTAINER_TOKEN, { skipSelf: true });
|
4073
|
-
this.cacheProps = {};
|
4074
|
-
this.nameNode = getName(this.elementRef.nativeElement.localName);
|
4075
|
-
effect(() => {
|
4076
|
-
if (this.config()) {
|
4077
|
-
this.updateNode(this.config());
|
4078
|
-
}
|
4079
|
-
});
|
4080
|
-
}
|
4081
|
-
getNode() {
|
4082
|
-
return this._node;
|
4083
|
-
}
|
4084
|
-
ngOnInit() {
|
4085
|
-
this.initKonva();
|
4086
|
-
}
|
4087
|
-
initKonva() {
|
4088
|
-
if (!this._node) {
|
4089
|
-
this._node = new Shape();
|
4090
|
-
}
|
4091
|
-
if (this.nameNode === 'Shape') {
|
4092
|
-
this._node = new Shape();
|
4093
|
-
}
|
4094
|
-
else if (this.nameNode === 'Sprite') {
|
4095
|
-
this._node = new Sprite(this.config());
|
4096
|
-
}
|
4097
|
-
else {
|
4098
|
-
this._node = new Konva[this.nameNode](undefined);
|
4304
|
+
lastLineWidth: Math.ceil(width)
|
4305
|
+
};
|
4099
4306
|
}
|
4100
|
-
const
|
4101
|
-
|
4102
|
-
|
4103
|
-
|
4104
|
-
|
4105
|
-
|
4106
|
-
|
4307
|
+
const arrText = text.split('');
|
4308
|
+
let rowCount = 0; // 总行数
|
4309
|
+
let textHeight = 0; // 文本最终占用的高度
|
4310
|
+
let showText = ''; // 每行展示的文本
|
4311
|
+
let totalText = '';
|
4312
|
+
let isLimitRow = false;
|
4313
|
+
const textLength = arrText.length;
|
4314
|
+
for (let n = 0; n < textLength; n++) {
|
4315
|
+
const singleText = arrText[n];
|
4316
|
+
const composeText = showText + singleText;
|
4317
|
+
// 如果没有超过 maxLineCount,就会继续换行
|
4318
|
+
isLimitRow = maxLineCount ? rowCount === maxLineCount - 1 : false;
|
4319
|
+
const measureText = isLimitRow ? composeText + '…' : composeText;
|
4320
|
+
totalText += singleText;
|
4321
|
+
const textWidth = context?.measureText(measureText).width ?? 0;
|
4322
|
+
const isLineBreak = ['\n', '\r'].includes(singleText);
|
4323
|
+
if (((maxWidth && textWidth > maxWidth) || isLineBreak) && (maxLineCount == null || rowCount < maxLineCount)) {
|
4324
|
+
showText = isLineBreak ? '' : singleText;
|
4325
|
+
textHeight += lineHeight;
|
4326
|
+
rowCount++;
|
4327
|
+
if (isLimitRow) {
|
4328
|
+
if (n < textLength - 1) {
|
4329
|
+
totalText = totalText.substring(0, totalText.length - 1) + '…';
|
4107
4330
|
}
|
4108
|
-
|
4109
|
-
|
4110
|
-
|
4111
|
-
|
4112
|
-
|
4331
|
+
break;
|
4332
|
+
}
|
4333
|
+
}
|
4334
|
+
else {
|
4335
|
+
showText = composeText;
|
4336
|
+
}
|
4113
4337
|
}
|
4114
|
-
|
4115
|
-
|
4116
|
-
|
4117
|
-
|
4118
|
-
|
4119
|
-
|
4120
|
-
...createListener(this)
|
4338
|
+
return {
|
4339
|
+
width: Math.ceil(width),
|
4340
|
+
height: Math.ceil(maxLineCount == null || rowCount < maxLineCount ? textHeight + lineHeight : textHeight),
|
4341
|
+
text: totalText,
|
4342
|
+
isOverflow: isLimitRow,
|
4343
|
+
lastLineWidth: context?.measureText(showText).width ?? 0
|
4121
4344
|
};
|
4122
|
-
|
4123
|
-
|
4124
|
-
|
4125
|
-
|
4126
|
-
|
4127
|
-
|
4128
|
-
|
4129
|
-
|
4130
|
-
|
4131
|
-
|
4132
|
-
|
4133
|
-
|
4134
|
-
|
4135
|
-
|
4136
|
-
|
4137
|
-
|
4138
|
-
args: [{
|
4139
|
-
selector: 'ko-shape, ko-circle, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow, ko-transformer',
|
4140
|
-
standalone: true,
|
4141
|
-
template: `<ng-content></ng-content>`,
|
4142
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
4143
|
-
}]
|
4144
|
-
}], ctorParameters: () => [], propDecorators: { koMouseover: [{
|
4145
|
-
type: Output
|
4146
|
-
}], koMousemove: [{
|
4147
|
-
type: Output
|
4148
|
-
}], koMouseout: [{
|
4149
|
-
type: Output
|
4150
|
-
}], koMouseenter: [{
|
4151
|
-
type: Output
|
4152
|
-
}], koMouseleave: [{
|
4153
|
-
type: Output
|
4154
|
-
}], koMousedown: [{
|
4155
|
-
type: Output
|
4156
|
-
}], koMouseup: [{
|
4157
|
-
type: Output
|
4158
|
-
}], koWheel: [{
|
4159
|
-
type: Output
|
4160
|
-
}], koContextmenu: [{
|
4161
|
-
type: Output
|
4162
|
-
}], koClick: [{
|
4163
|
-
type: Output
|
4164
|
-
}], koDblclick: [{
|
4165
|
-
type: Output
|
4166
|
-
}], koTouchstart: [{
|
4167
|
-
type: Output
|
4168
|
-
}], koTouchmove: [{
|
4169
|
-
type: Output
|
4170
|
-
}], koTouchend: [{
|
4171
|
-
type: Output
|
4172
|
-
}], koTap: [{
|
4173
|
-
type: Output
|
4174
|
-
}], koDbltap: [{
|
4175
|
-
type: Output
|
4176
|
-
}], koDragstart: [{
|
4177
|
-
type: Output
|
4178
|
-
}], koDragmove: [{
|
4179
|
-
type: Output
|
4180
|
-
}], koDragend: [{
|
4181
|
-
type: Output
|
4182
|
-
}] } });
|
4345
|
+
};
|
4346
|
+
// 测量给定文本的宽度和高度。
|
4347
|
+
// 支持指定最大宽度 (maxWidth) 和最大行数 (maxLineCount),从而能够处理多行文本的自动换行和截断(例如在文本超过行数限制时添加省略号 "…")
|
4348
|
+
const measureText = (text, maxWidth, maxLineCount) => {
|
4349
|
+
return getWidthOfLongestText(castToString(text), maxWidth, maxLineCount);
|
4350
|
+
};
|
4351
|
+
// 可以将字体样式重置为初始默认配置
|
4352
|
+
const reset = () => setFont(defaults);
|
4353
|
+
setFont(o);
|
4354
|
+
return {
|
4355
|
+
context,
|
4356
|
+
measureText,
|
4357
|
+
setFont,
|
4358
|
+
reset
|
4359
|
+
};
|
4360
|
+
};
|
4183
4361
|
|
4184
|
-
|
4185
|
-
|
4186
|
-
|
4187
|
-
|
4188
|
-
|
4189
|
-
|
4190
|
-
|
4191
|
-
], usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
4192
|
-
}
|
4193
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KoContainer, decorators: [{
|
4194
|
-
type: Component,
|
4195
|
-
args: [{
|
4196
|
-
selector: 'ko-layer, ko-fastlayer, ko-group',
|
4197
|
-
standalone: true,
|
4198
|
-
template: `<ng-content></ng-content>`,
|
4199
|
-
providers: [
|
4200
|
-
{
|
4201
|
-
provide: KO_CONTAINER_TOKEN,
|
4202
|
-
useExisting: KoContainer
|
4203
|
-
}
|
4204
|
-
],
|
4205
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
4206
|
-
}]
|
4207
|
-
}] });
|
4362
|
+
const isCellMatchKeywords = (aiTable, field, recordId, keywords, references) => {
|
4363
|
+
const cellValue = AITableQueries.getFieldValue(aiTable, [recordId, field._id]);
|
4364
|
+
const transformValue = transformCellValue(aiTable, field, cellValue);
|
4365
|
+
const fieldMethod = FieldModelMap[field.type];
|
4366
|
+
let cellFullText = fieldMethod.cellFullText(transformValue, field, references);
|
4367
|
+
return keywords && cellFullText.length && cellFullText.some((text) => text.toLowerCase().includes(keywords.toLowerCase()));
|
4368
|
+
};
|
4208
4369
|
|
4209
4370
|
class AITableText {
|
4210
4371
|
constructor() {
|
@@ -5712,187 +5873,43 @@ function getFileThumbnailSvgString(ext) {
|
|
5712
5873
|
case 'html':
|
5713
5874
|
result = html;
|
5714
5875
|
break;
|
5715
|
-
case 'ipa':
|
5716
|
-
result = ipa;
|
5717
|
-
break;
|
5718
|
-
case 'java':
|
5719
|
-
result = java;
|
5720
|
-
break;
|
5721
|
-
case 'js':
|
5722
|
-
result = js;
|
5723
|
-
break;
|
5724
|
-
case 'php':
|
5725
|
-
result = php;
|
5726
|
-
break;
|
5727
|
-
case 'rar':
|
5728
|
-
result = rar;
|
5729
|
-
break;
|
5730
|
-
case 'swf':
|
5731
|
-
result = swf;
|
5732
|
-
break;
|
5733
|
-
case 'ttf':
|
5734
|
-
result = ttf;
|
5735
|
-
break;
|
5736
|
-
case 'vss':
|
5737
|
-
result = vss;
|
5738
|
-
break;
|
5739
|
-
case 'xsd':
|
5740
|
-
result = xsd;
|
5741
|
-
break;
|
5742
|
-
case 'zip':
|
5743
|
-
result = zip;
|
5744
|
-
break;
|
5745
|
-
default:
|
5746
|
-
result = defaultFile;
|
5747
|
-
break;
|
5748
|
-
}
|
5749
|
-
return result;
|
5750
|
-
}
|
5751
|
-
|
5752
|
-
class KoStage {
|
5753
|
-
constructor() {
|
5754
|
-
this.config = input();
|
5755
|
-
this.koMouseover = new EventEmitter();
|
5756
|
-
this.koMousemove = new EventEmitter();
|
5757
|
-
this.koMouseout = new EventEmitter();
|
5758
|
-
this.koMouseenter = new EventEmitter();
|
5759
|
-
this.koMouseleave = new EventEmitter();
|
5760
|
-
this.koMousedown = new EventEmitter();
|
5761
|
-
this.koMouseup = new EventEmitter();
|
5762
|
-
this.koWheel = new EventEmitter();
|
5763
|
-
this.koContextmenu = new EventEmitter();
|
5764
|
-
this.koClick = new EventEmitter();
|
5765
|
-
this.koDblclick = new EventEmitter();
|
5766
|
-
this.koTouchstart = new EventEmitter();
|
5767
|
-
this.koTouchmove = new EventEmitter();
|
5768
|
-
this.koTouchend = new EventEmitter();
|
5769
|
-
this.koTap = new EventEmitter();
|
5770
|
-
this.koDbltap = new EventEmitter();
|
5771
|
-
this.koDragstart = new EventEmitter();
|
5772
|
-
this.koDragmove = new EventEmitter();
|
5773
|
-
this.koDragend = new EventEmitter();
|
5774
|
-
this.cacheProps = {};
|
5775
|
-
this.nodeContainer = inject(ElementRef).nativeElement;
|
5776
|
-
effect(() => {
|
5777
|
-
if (this.config()) {
|
5778
|
-
if (!this._stage) {
|
5779
|
-
this.initStage();
|
5780
|
-
}
|
5781
|
-
this.updateNode(this.config());
|
5782
|
-
}
|
5783
|
-
});
|
5784
|
-
}
|
5785
|
-
ngOnInit() {
|
5786
|
-
this.initStage();
|
5787
|
-
}
|
5788
|
-
getNode() {
|
5789
|
-
return this._stage;
|
5790
|
-
}
|
5791
|
-
initStage() {
|
5792
|
-
this._stage = new Stage({
|
5793
|
-
...this.config(),
|
5794
|
-
container: this.nodeContainer
|
5795
|
-
});
|
5796
|
-
}
|
5797
|
-
updateNode(config) {
|
5798
|
-
const props = {
|
5799
|
-
...config,
|
5800
|
-
...createListener(this)
|
5801
|
-
};
|
5802
|
-
applyNodeProps(this, props, this.cacheProps);
|
5803
|
-
this.cacheProps = props;
|
5804
|
-
}
|
5805
|
-
ngOnDestroy() {
|
5806
|
-
this._stage?.destroy();
|
5876
|
+
case 'ipa':
|
5877
|
+
result = ipa;
|
5878
|
+
break;
|
5879
|
+
case 'java':
|
5880
|
+
result = java;
|
5881
|
+
break;
|
5882
|
+
case 'js':
|
5883
|
+
result = js;
|
5884
|
+
break;
|
5885
|
+
case 'php':
|
5886
|
+
result = php;
|
5887
|
+
break;
|
5888
|
+
case 'rar':
|
5889
|
+
result = rar;
|
5890
|
+
break;
|
5891
|
+
case 'swf':
|
5892
|
+
result = swf;
|
5893
|
+
break;
|
5894
|
+
case 'ttf':
|
5895
|
+
result = ttf;
|
5896
|
+
break;
|
5897
|
+
case 'vss':
|
5898
|
+
result = vss;
|
5899
|
+
break;
|
5900
|
+
case 'xsd':
|
5901
|
+
result = xsd;
|
5902
|
+
break;
|
5903
|
+
case 'zip':
|
5904
|
+
result = zip;
|
5905
|
+
break;
|
5906
|
+
default:
|
5907
|
+
result = defaultFile;
|
5908
|
+
break;
|
5807
5909
|
}
|
5808
|
-
|
5809
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: KoStage, isStandalone: true, selector: "ko-stage", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { koMouseover: "koMouseover", koMousemove: "koMousemove", koMouseout: "koMouseout", koMouseenter: "koMouseenter", koMouseleave: "koMouseleave", koMousedown: "koMousedown", koMouseup: "koMouseup", koWheel: "koWheel", koContextmenu: "koContextmenu", koClick: "koClick", koDblclick: "koDblclick", koTouchstart: "koTouchstart", koTouchmove: "koTouchmove", koTouchend: "koTouchend", koTap: "koTap", koDbltap: "koDbltap", koDragstart: "koDragstart", koDragmove: "koDragmove", koDragend: "koDragend" }, providers: [
|
5810
|
-
{
|
5811
|
-
provide: KO_CONTAINER_TOKEN,
|
5812
|
-
useExisting: KoStage
|
5813
|
-
}
|
5814
|
-
], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
5815
|
-
}
|
5816
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KoStage, decorators: [{
|
5817
|
-
type: Component,
|
5818
|
-
args: [{
|
5819
|
-
selector: 'ko-stage',
|
5820
|
-
standalone: true,
|
5821
|
-
template: `<ng-content></ng-content>`,
|
5822
|
-
providers: [
|
5823
|
-
{
|
5824
|
-
provide: KO_CONTAINER_TOKEN,
|
5825
|
-
useExisting: KoStage
|
5826
|
-
}
|
5827
|
-
],
|
5828
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
5829
|
-
}]
|
5830
|
-
}], ctorParameters: () => [], propDecorators: { koMouseover: [{
|
5831
|
-
type: Output
|
5832
|
-
}], koMousemove: [{
|
5833
|
-
type: Output
|
5834
|
-
}], koMouseout: [{
|
5835
|
-
type: Output
|
5836
|
-
}], koMouseenter: [{
|
5837
|
-
type: Output
|
5838
|
-
}], koMouseleave: [{
|
5839
|
-
type: Output
|
5840
|
-
}], koMousedown: [{
|
5841
|
-
type: Output
|
5842
|
-
}], koMouseup: [{
|
5843
|
-
type: Output
|
5844
|
-
}], koWheel: [{
|
5845
|
-
type: Output
|
5846
|
-
}], koContextmenu: [{
|
5847
|
-
type: Output
|
5848
|
-
}], koClick: [{
|
5849
|
-
type: Output
|
5850
|
-
}], koDblclick: [{
|
5851
|
-
type: Output
|
5852
|
-
}], koTouchstart: [{
|
5853
|
-
type: Output
|
5854
|
-
}], koTouchmove: [{
|
5855
|
-
type: Output
|
5856
|
-
}], koTouchend: [{
|
5857
|
-
type: Output
|
5858
|
-
}], koTap: [{
|
5859
|
-
type: Output
|
5860
|
-
}], koDbltap: [{
|
5861
|
-
type: Output
|
5862
|
-
}], koDragstart: [{
|
5863
|
-
type: Output
|
5864
|
-
}], koDragmove: [{
|
5865
|
-
type: Output
|
5866
|
-
}], koDragend: [{
|
5867
|
-
type: Output
|
5868
|
-
}] } });
|
5869
|
-
|
5870
|
-
class KoComponent extends Component {
|
5910
|
+
return result;
|
5871
5911
|
}
|
5872
5912
|
|
5873
|
-
const KoShapeTypes = {
|
5874
|
-
Arc,
|
5875
|
-
Arrow,
|
5876
|
-
Circle,
|
5877
|
-
Ellipse,
|
5878
|
-
Image: Image$1,
|
5879
|
-
Label,
|
5880
|
-
Tag,
|
5881
|
-
Line,
|
5882
|
-
Path,
|
5883
|
-
Rect,
|
5884
|
-
RegularPolygon,
|
5885
|
-
Ring,
|
5886
|
-
Star,
|
5887
|
-
Text,
|
5888
|
-
TextPath,
|
5889
|
-
Transformer,
|
5890
|
-
Wedge,
|
5891
|
-
Group,
|
5892
|
-
Layer,
|
5893
|
-
FastLayer
|
5894
|
-
};
|
5895
|
-
|
5896
5913
|
class AITableActionIcon {
|
5897
5914
|
constructor() {
|
5898
5915
|
this.onClick = output();
|
@@ -6111,12 +6128,95 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
6111
6128
|
}]
|
6112
6129
|
}] });
|
6113
6130
|
|
6131
|
+
class AITableCellRichtext {
|
6132
|
+
constructor() {
|
6133
|
+
this.config = input();
|
6134
|
+
this.textConfig = computed(() => {
|
6135
|
+
const render = this.config()?.render;
|
6136
|
+
if (render) {
|
6137
|
+
const { x, y, transformValue, field, columnWidth, rowHeight, style, zIndex } = render;
|
6138
|
+
let textRender = transformValue;
|
6139
|
+
if (textRender == null) {
|
6140
|
+
return;
|
6141
|
+
}
|
6142
|
+
textRender = textRender.replace(/\r|\n/g, ' ');
|
6143
|
+
const fontWeight = style?.fontWeight;
|
6144
|
+
const textMaxWidth = columnWidth - AI_TABLE_CELL_PADDING - AI_TABLE_ACTION_COMMON_RIGHT_PADDING - AI_TABLE_ACTION_COMMON_SIZE;
|
6145
|
+
const { text, textWidth } = drawer.textEllipsis({
|
6146
|
+
text: textRender,
|
6147
|
+
maxWidth: textMaxWidth,
|
6148
|
+
fontWeight
|
6149
|
+
});
|
6150
|
+
return {
|
6151
|
+
x,
|
6152
|
+
y,
|
6153
|
+
text,
|
6154
|
+
wrap: 'none',
|
6155
|
+
width: textWidth,
|
6156
|
+
fillStyle: Colors.primary,
|
6157
|
+
height: rowHeight + 2,
|
6158
|
+
lineHeight: 1.84,
|
6159
|
+
listening: false,
|
6160
|
+
ellipsis: true,
|
6161
|
+
zIndex
|
6162
|
+
};
|
6163
|
+
}
|
6164
|
+
return;
|
6165
|
+
});
|
6166
|
+
this.iconConfig = computed(() => {
|
6167
|
+
const { coordinate, render, field, recordId, readonly } = this.config();
|
6168
|
+
const offsetX = render.columnWidth - AI_TABLE_ACTION_COMMON_SIZE - AI_TABLE_ACTION_COMMON_RIGHT_PADDING;
|
6169
|
+
const offsetY = (coordinate.rowInitSize - AI_TABLE_ACTION_COMMON_SIZE) / 2;
|
6170
|
+
return {
|
6171
|
+
coordinate,
|
6172
|
+
readonly,
|
6173
|
+
name: generateTargetName({
|
6174
|
+
targetName: AI_TABLE_CELL,
|
6175
|
+
fieldId: field._id,
|
6176
|
+
recordId,
|
6177
|
+
source: AI_TABLE_CELL_EDIT,
|
6178
|
+
mouseStyle: readonly ? 'default' : 'pointer'
|
6179
|
+
}),
|
6180
|
+
x: offsetX,
|
6181
|
+
y: offsetY,
|
6182
|
+
data: EditPath,
|
6183
|
+
fill: Colors.gray600,
|
6184
|
+
hoverFill: Colors.primary,
|
6185
|
+
backgroundWidth: AI_TABLE_ACTION_COMMON_SIZE,
|
6186
|
+
backgroundHeight: AI_TABLE_ACTION_COMMON_SIZE,
|
6187
|
+
cornerRadius: AI_TABLE_ACTION_COMMON_RADIUS,
|
6188
|
+
listening: true
|
6189
|
+
};
|
6190
|
+
});
|
6191
|
+
}
|
6192
|
+
static { this.fieldType = AITableFieldType.richText; }
|
6193
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableCellRichtext, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
6194
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: AITableCellRichtext, isStandalone: true, selector: "ai-table-richtext", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
6195
|
+
<ai-table-text [config]="textConfig()!"></ai-table-text>
|
6196
|
+
<ai-table-action-icon [config]="iconConfig()"></ai-table-action-icon>
|
6197
|
+
`, isInline: true, dependencies: [{ kind: "component", type: AITableText, selector: "ai-table-text", inputs: ["config"], outputs: ["koClick", "koMouseMove"] }, { kind: "component", type: AITableActionIcon, selector: "ai-table-action-icon", inputs: ["config"], outputs: ["onClick", "onMousemove", "onMouseenter", "onMouseleave"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
6198
|
+
}
|
6199
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableCellRichtext, decorators: [{
|
6200
|
+
type: Component,
|
6201
|
+
args: [{
|
6202
|
+
selector: 'ai-table-richtext',
|
6203
|
+
template: `
|
6204
|
+
<ai-table-text [config]="textConfig()!"></ai-table-text>
|
6205
|
+
<ai-table-action-icon [config]="iconConfig()"></ai-table-action-icon>
|
6206
|
+
`,
|
6207
|
+
standalone: true,
|
6208
|
+
imports: [AITableText, AITableActionIcon],
|
6209
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
6210
|
+
}]
|
6211
|
+
}] });
|
6212
|
+
|
6114
6213
|
// TODO: components下的cells组件考虑移出 components ,这些组件都属于
|
6115
6214
|
|
6116
6215
|
var cellComponents = /*#__PURE__*/Object.freeze({
|
6117
6216
|
__proto__: null,
|
6118
6217
|
AITableCellAttachment: AITableCellAttachment,
|
6119
|
-
AITableCellLink: AITableCellLink
|
6218
|
+
AITableCellLink: AITableCellLink,
|
6219
|
+
AITableCellRichtext: AITableCellRichtext
|
6120
6220
|
});
|
6121
6221
|
|
6122
6222
|
const componentMap = {};
|
@@ -6678,10 +6778,13 @@ class AITableAddField {
|
|
6678
6778
|
this.rectConfig = computed(() => {
|
6679
6779
|
const { pointPosition: { targetName }, readonly } = this.config();
|
6680
6780
|
const fill = targetName === AI_TABLE_FIELD_ADD_BUTTON ? Colors.gray80 : Colors.white;
|
6781
|
+
const fields = this.config().fields || [];
|
6782
|
+
const index = this.config().columnStopIndex;
|
6783
|
+
const fieldId = fields.length && index < fields.length ? fields[index]._id : '';
|
6681
6784
|
return {
|
6682
6785
|
name: generateTargetName({
|
6683
6786
|
targetName: AI_TABLE_FIELD_ADD_BUTTON,
|
6684
|
-
fieldId
|
6787
|
+
fieldId,
|
6685
6788
|
mouseStyle: readonly ? 'default' : 'pointer'
|
6686
6789
|
}),
|
6687
6790
|
x: AI_TABLE_OFFSET,
|
@@ -6928,6 +7031,7 @@ class CellDrawer extends Drawer {
|
|
6928
7031
|
const fieldType = field.type;
|
6929
7032
|
switch (fieldType) {
|
6930
7033
|
case AITableFieldType.text:
|
7034
|
+
case AITableFieldType.richText:
|
6931
7035
|
case AITableFieldType.number:
|
6932
7036
|
case AITableFieldType.link:
|
6933
7037
|
return this.renderCellText(render, ctx);
|
@@ -6958,8 +7062,9 @@ class CellDrawer extends Drawer {
|
|
6958
7062
|
if (renderText == null) {
|
6959
7063
|
return;
|
6960
7064
|
}
|
6961
|
-
const isSingleLine = !columnWidth;
|
6962
|
-
const
|
7065
|
+
// const isSingleLine = !columnWidth;
|
7066
|
+
const isSingleLine = true;
|
7067
|
+
const isTextField = fieldType === AITableFieldType.text || fieldType === AITableFieldType.richText;
|
6963
7068
|
const isNumberField = fieldType === AITableFieldType.number;
|
6964
7069
|
if (isTextField && isSingleLine) {
|
6965
7070
|
renderText = renderText.replace(/\r|\n/g, ' ');
|
@@ -7714,7 +7819,7 @@ const createCells = (config) => {
|
|
7714
7819
|
// 获取该列对应的宽度
|
7715
7820
|
const columnWidth = coordinate.getColumnWidth(columnIndex);
|
7716
7821
|
const x = coordinate.getColumnOffset(columnIndex) + AI_TABLE_OFFSET;
|
7717
|
-
const isLastColumn = columnIndex === aiTable.fields
|
7822
|
+
const isLastColumn = columnIndex === aiTable.gridData().fields?.length - 1;
|
7718
7823
|
if (columnIndex === 1) {
|
7719
7824
|
cellDrawer.initStyle(field, { fontWeight: DEFAULT_FONT_STYLE });
|
7720
7825
|
}
|
@@ -7906,6 +8011,9 @@ class AITableFieldIcon {
|
|
7906
8011
|
case AITableFieldType.text:
|
7907
8012
|
data = ColumnTextFilledPath;
|
7908
8013
|
break;
|
8014
|
+
case AITableFieldType.richText:
|
8015
|
+
data = ColumnRichTextFilledPath;
|
8016
|
+
break;
|
7909
8017
|
case AITableFieldType.select:
|
7910
8018
|
data = field.settings?.is_multiple ? ColumnMultipleFillPath : ColumnSelectFilledPath;
|
7911
8019
|
break;
|
@@ -8894,6 +9002,8 @@ class AITableDragComponent {
|
|
8894
9002
|
this.draggedData = null;
|
8895
9003
|
this.mouseStartPosition = null;
|
8896
9004
|
this.aiTableDrag = null;
|
9005
|
+
this.mouseDownTimeout = null;
|
9006
|
+
this.isDraggingEnabled = false;
|
8897
9007
|
effect(() => this.handleDragStateChange());
|
8898
9008
|
}
|
8899
9009
|
ngOnInit() {
|
@@ -8903,15 +9013,22 @@ class AITableDragComponent {
|
|
8903
9013
|
initElements() {
|
8904
9014
|
this.rect = this.elementRef.nativeElement.querySelector('.rect');
|
8905
9015
|
this.auxiliaryLine = this.elementRef.nativeElement.querySelector('.auxiliary-line');
|
8906
|
-
this.colResizeLine = this.elementRef.nativeElement.querySelector('.col-resize-line');
|
8907
9016
|
}
|
8908
9017
|
setupEventListeners() {
|
8909
9018
|
this.mousedownListener = this.render2.listen('window', 'mousedown', (e) => {
|
8910
9019
|
this.mouseStartPosition = { x: e.x, y: e.y };
|
8911
|
-
|
9020
|
+
if (this.mouseDownTimeout) {
|
9021
|
+
clearTimeout(this.mouseDownTimeout);
|
9022
|
+
}
|
9023
|
+
this.isDraggingEnabled = false;
|
9024
|
+
this.mouseDownTimeout = setTimeout(() => {
|
9025
|
+
this.isDraggingEnabled = true;
|
9026
|
+
}, 200);
|
8912
9027
|
});
|
8913
9028
|
this.mousemoveListener = this.render2.listen('window', 'mousemove', (e) => {
|
8914
|
-
|
9029
|
+
if (!this.isDraggingEnabled) {
|
9030
|
+
return;
|
9031
|
+
}
|
8915
9032
|
if (this.timer) {
|
8916
9033
|
cancelAnimationFrame(this.timer);
|
8917
9034
|
}
|
@@ -8922,6 +9039,11 @@ class AITableDragComponent {
|
|
8922
9039
|
});
|
8923
9040
|
});
|
8924
9041
|
this.mouseupListener = this.render2.listen('window', 'mouseup', () => {
|
9042
|
+
if (this.mouseDownTimeout) {
|
9043
|
+
clearTimeout(this.mouseDownTimeout);
|
9044
|
+
this.mouseDownTimeout = null;
|
9045
|
+
}
|
9046
|
+
this.isDraggingEnabled = false;
|
8925
9047
|
this.mouseStartPosition = null;
|
8926
9048
|
this.aiTableDrag = null;
|
8927
9049
|
this.handleDragEnd();
|
@@ -8936,10 +9058,6 @@ class AITableDragComponent {
|
|
8936
9058
|
if (drag.type === DragType.none || !this.rect || !this.auxiliaryLine) {
|
8937
9059
|
return;
|
8938
9060
|
}
|
8939
|
-
if (drag.type === DragType.columnWidth) {
|
8940
|
-
this.setDisplayStyle('block');
|
8941
|
-
this.showColResize(drag);
|
8942
|
-
}
|
8943
9061
|
this.aiTableDrag = drag;
|
8944
9062
|
}
|
8945
9063
|
handleDrag(e, drag) {
|
@@ -9017,6 +9135,7 @@ class AITableDragComponent {
|
|
9017
9135
|
}
|
9018
9136
|
}
|
9019
9137
|
movingColumnWidth(drag, moveX) {
|
9138
|
+
this.setCursorStyle('col-resize');
|
9020
9139
|
const aiTable = this.aiTableGridSelectionService.aiTable;
|
9021
9140
|
const visibleColumnIndexMap = aiTable.context.visibleColumnsIndexMap();
|
9022
9141
|
const sourceColumnIndex = visibleColumnIndexMap.get(drag.sourceIds.values().next().value) || 0;
|
@@ -9038,42 +9157,27 @@ class AITableDragComponent {
|
|
9038
9157
|
width: Math.max(MIN_COLUMN_WIDTH, sourceColumnWidth + moveX)
|
9039
9158
|
};
|
9040
9159
|
}
|
9041
|
-
showColResize(drag) {
|
9042
|
-
const aiTable = this.aiTableGridSelectionService.aiTable;
|
9043
|
-
const visibleColumnIndexMap = aiTable.context.visibleColumnsIndexMap();
|
9044
|
-
const sourceColumnIndex = visibleColumnIndexMap.get(drag.sourceIds.values().next().value) || 0;
|
9045
|
-
const coordinate = drag.coordinate;
|
9046
|
-
const sourceColumnStartX = coordinate.getColumnOffset(sourceColumnIndex);
|
9047
|
-
const scroll = drag.scroll || { x: 0, y: 0 };
|
9048
|
-
let targetColumnIndex = coordinate.getColumnStartIndex(sourceColumnStartX + scroll.x);
|
9049
|
-
let targetColumnStartX = coordinate.getColumnOffset(targetColumnIndex);
|
9050
|
-
const sourceColumnWidth = drag.coordinate.getColumnWidth(sourceColumnIndex);
|
9051
|
-
const opacityLineWidth = 4;
|
9052
|
-
// 重置样式
|
9053
|
-
this.setRectStyles({ width: 0 });
|
9054
|
-
this.resetAuxiliaryLine();
|
9055
|
-
this.setDisplayStyle('block');
|
9056
|
-
this.render2.setStyle(this.elementRef.nativeElement, 'cursor', 'col-resize');
|
9057
|
-
// 隐藏列宽调整线,用于监听鼠标离开此区域后结束宽度调整
|
9058
|
-
this.setColResizeLine({
|
9059
|
-
opacity: 0,
|
9060
|
-
height: '100%',
|
9061
|
-
width: `${opacityLineWidth}px`,
|
9062
|
-
left: `${targetColumnStartX + sourceColumnWidth - opacityLineWidth / 2}px`,
|
9063
|
-
zIndex: 10
|
9064
|
-
});
|
9065
|
-
this.lineMouseLeaveListener = this.render2.listen(this.colResizeLine, 'mouseleave', () => {
|
9066
|
-
this.setDisplayStyle('none');
|
9067
|
-
this.lineMouseLeaveListener?.();
|
9068
|
-
this.lineMouseLeaveListener = undefined;
|
9069
|
-
});
|
9070
|
-
}
|
9071
9160
|
handleDragEnd() {
|
9072
|
-
this.setDisplayStyle('none');
|
9073
9161
|
if (this.draggedData) {
|
9074
9162
|
this.dragEnd.emit({ ...this.draggedData });
|
9075
|
-
this.draggedData = null;
|
9076
9163
|
}
|
9164
|
+
this.clearDragState();
|
9165
|
+
}
|
9166
|
+
clearDragState() {
|
9167
|
+
this.setDisplayStyle('none');
|
9168
|
+
this.setRectStyles({
|
9169
|
+
width: '0',
|
9170
|
+
height: '0',
|
9171
|
+
top: '0',
|
9172
|
+
left: '0'
|
9173
|
+
});
|
9174
|
+
this.setAuxiliaryLineStyles({
|
9175
|
+
width: '0',
|
9176
|
+
height: '0',
|
9177
|
+
top: '0',
|
9178
|
+
left: '0'
|
9179
|
+
});
|
9180
|
+
this.draggedData = null;
|
9077
9181
|
}
|
9078
9182
|
calculateDragWidth(fields, coordinate, drag) {
|
9079
9183
|
let width = 0;
|
@@ -9087,6 +9191,9 @@ class AITableDragComponent {
|
|
9087
9191
|
setDisplayStyle(display) {
|
9088
9192
|
this.render2.setStyle(this.elementRef.nativeElement, 'display', display);
|
9089
9193
|
}
|
9194
|
+
setCursorStyle(cursor) {
|
9195
|
+
this.render2.setStyle(this.elementRef.nativeElement, 'cursor', cursor);
|
9196
|
+
}
|
9090
9197
|
setRectStyles(styles) {
|
9091
9198
|
Object.entries(styles).forEach(([prop, value]) => {
|
9092
9199
|
this.render2.setStyle(this.rect, prop, value);
|
@@ -9097,11 +9204,6 @@ class AITableDragComponent {
|
|
9097
9204
|
this.render2.setStyle(this.auxiliaryLine, prop, value);
|
9098
9205
|
});
|
9099
9206
|
}
|
9100
|
-
setColResizeLine(styles) {
|
9101
|
-
Object.entries(styles).forEach(([prop, value]) => {
|
9102
|
-
this.render2.setStyle(this.colResizeLine, prop, value);
|
9103
|
-
});
|
9104
|
-
}
|
9105
9207
|
resetAuxiliaryLine() {
|
9106
9208
|
this.setAuxiliaryLineStyles({ width: 0 });
|
9107
9209
|
}
|
@@ -9112,21 +9214,19 @@ class AITableDragComponent {
|
|
9112
9214
|
this.mousemoveListener();
|
9113
9215
|
if (this.mouseupListener)
|
9114
9216
|
this.mouseupListener();
|
9115
|
-
if (this.lineMouseLeaveListener)
|
9116
|
-
this.lineMouseLeaveListener();
|
9117
9217
|
if (this.timer) {
|
9118
9218
|
cancelAnimationFrame(this.timer);
|
9119
9219
|
this.timer = null;
|
9120
9220
|
}
|
9121
9221
|
}
|
9122
9222
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableDragComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
9123
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AITableDragComponent, isStandalone: true, selector: "ai-table-drag", outputs: { dragEnd: "dragEnd" }, host: { classAttribute: "drag-container" }, ngImport: i0, template: "<div class=\"rect\"></div>\n<div class=\"auxiliary-line\"></div
|
9223
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AITableDragComponent, isStandalone: true, selector: "ai-table-drag", outputs: { dragEnd: "dragEnd" }, host: { classAttribute: "drag-container" }, ngImport: i0, template: "<div class=\"rect\"></div>\n<div class=\"auxiliary-line\"></div>", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
9124
9224
|
}
|
9125
9225
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AITableDragComponent, decorators: [{
|
9126
9226
|
type: Component,
|
9127
9227
|
args: [{ selector: 'ai-table-drag', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
9128
9228
|
class: 'drag-container'
|
9129
|
-
}, template: "<div class=\"rect\"></div>\n<div class=\"auxiliary-line\"></div
|
9229
|
+
}, template: "<div class=\"rect\"></div>\n<div class=\"auxiliary-line\"></div>" }]
|
9130
9230
|
}], ctorParameters: () => [] });
|
9131
9231
|
|
9132
9232
|
class AITableGrid extends AITableGridBase {
|
@@ -9311,7 +9411,7 @@ class AITableGrid extends AITableGridBase {
|
|
9311
9411
|
const { context } = this.aiTable;
|
9312
9412
|
const { x, y } = pos;
|
9313
9413
|
const curMousePosition = getMousePosition(this.aiTable, x, y, this.coordinate(), AITable.getVisibleFields(this.aiTable), context, targetName);
|
9314
|
-
handleMouseStyle(curMousePosition.realTargetName, curMousePosition.areaType, this.containerElement());
|
9414
|
+
handleMouseStyle(curMousePosition.realTargetName, curMousePosition.areaType, this.containerElement(), this.aiReadonly());
|
9315
9415
|
context.setPointPosition(curMousePosition);
|
9316
9416
|
this.timer = null;
|
9317
9417
|
if (this.isDragSelecting) {
|
@@ -9324,18 +9424,6 @@ class AITableGrid extends AITableGridBase {
|
|
9324
9424
|
}
|
9325
9425
|
}
|
9326
9426
|
}
|
9327
|
-
const { targetName: _targetName, fieldId } = getDetailByTargetName(targetName);
|
9328
|
-
if (_targetName === AI_TABLE_FIELD_HEAD_OPACITY_LINE && fieldId) {
|
9329
|
-
this.aiTableGridSelectionService.drag({
|
9330
|
-
type: DragType.columnWidth,
|
9331
|
-
sourceIds: new Set([fieldId]),
|
9332
|
-
scroll: this.getScrollPosition(),
|
9333
|
-
coordinate: this.coordinate()
|
9334
|
-
});
|
9335
|
-
}
|
9336
|
-
else if (this.aiTableGridSelectionService.getDragStateType() === DragType.columnWidth) {
|
9337
|
-
this.aiTableGridSelectionService.clearDrag();
|
9338
|
-
}
|
9339
9427
|
});
|
9340
9428
|
}
|
9341
9429
|
stageMousedown(e) {
|
@@ -9356,6 +9444,12 @@ class AITableGrid extends AITableGridBase {
|
|
9356
9444
|
this.aiTableGridSelectionService.selectField(fieldId);
|
9357
9445
|
this.handleFieldDragStart();
|
9358
9446
|
return;
|
9447
|
+
case AI_TABLE_FIELD_HEAD_OPACITY_LINE:
|
9448
|
+
mouseEvent.preventDefault();
|
9449
|
+
if (!fieldId)
|
9450
|
+
return;
|
9451
|
+
this.handleFieldWidthDragStart(fieldId);
|
9452
|
+
return;
|
9359
9453
|
case AI_TABLE_CELL:
|
9360
9454
|
if (!recordId || !fieldId)
|
9361
9455
|
return;
|
@@ -9406,6 +9500,11 @@ class AITableGrid extends AITableGridBase {
|
|
9406
9500
|
});
|
9407
9501
|
}
|
9408
9502
|
stageClick(e) {
|
9503
|
+
const targetNameDetail = getDetailByTargetName(e.event.target.name());
|
9504
|
+
this.aiClick.emit({
|
9505
|
+
...e,
|
9506
|
+
targetNameDetail
|
9507
|
+
});
|
9409
9508
|
const mouseEvent = e.event.evt;
|
9410
9509
|
mouseEvent.preventDefault();
|
9411
9510
|
this.aiTableGridEventService.closeCellEditor();
|
@@ -9467,23 +9566,15 @@ class AITableGrid extends AITableGridBase {
|
|
9467
9566
|
}
|
9468
9567
|
break;
|
9469
9568
|
}
|
9470
|
-
const targetNameDetail = getDetailByTargetName(e.event.target.name());
|
9471
|
-
this.aiClick.emit({
|
9472
|
-
...e,
|
9473
|
-
targetNameDetail
|
9474
|
-
});
|
9475
9569
|
return;
|
9476
9570
|
}
|
9477
9571
|
stageDblclick(e) {
|
9478
9572
|
const _targetName = e.event.target.name();
|
9479
9573
|
const targetNameDetail = getDetailByTargetName(_targetName);
|
9480
|
-
|
9481
|
-
|
9482
|
-
|
9483
|
-
|
9484
|
-
});
|
9485
|
-
return;
|
9486
|
-
}
|
9574
|
+
this.aiDbClick.emit({
|
9575
|
+
...e,
|
9576
|
+
targetNameDetail
|
9577
|
+
});
|
9487
9578
|
const { fieldId, recordId } = targetNameDetail;
|
9488
9579
|
if (!recordId || !fieldId) {
|
9489
9580
|
return;
|
@@ -9505,12 +9596,6 @@ class AITableGrid extends AITableGridBase {
|
|
9505
9596
|
});
|
9506
9597
|
}, 0);
|
9507
9598
|
}
|
9508
|
-
else {
|
9509
|
-
this.aiDbClick.emit({
|
9510
|
-
...e,
|
9511
|
-
targetNameDetail
|
9512
|
-
});
|
9513
|
-
}
|
9514
9599
|
}
|
9515
9600
|
bindWheel() {
|
9516
9601
|
fromEvent(this.containerElement(), 'wheel', { passive: false })
|
@@ -9678,6 +9763,16 @@ class AITableGrid extends AITableGridBase {
|
|
9678
9763
|
});
|
9679
9764
|
}
|
9680
9765
|
}
|
9766
|
+
handleFieldWidthDragStart(fieldId) {
|
9767
|
+
if (!this.aiReadonly() && fieldId) {
|
9768
|
+
this.aiTableGridSelectionService.drag({
|
9769
|
+
type: DragType.columnWidth,
|
9770
|
+
sourceIds: new Set([fieldId]),
|
9771
|
+
scroll: this.getScrollPosition(),
|
9772
|
+
coordinate: this.coordinate()
|
9773
|
+
});
|
9774
|
+
}
|
9775
|
+
}
|
9681
9776
|
getScrollPosition() {
|
9682
9777
|
const horizontalBar = this.horizontalBarRef()?.nativeElement;
|
9683
9778
|
const verticalBar = this.verticalBarRef()?.nativeElement;
|
@@ -9725,5 +9820,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
9725
9820
|
* Generated bundle index. Do not edit.
|
9726
9821
|
*/
|
9727
9822
|
|
9728
|
-
export { AITable, AITableAreaType, AITableAvatarSize, AITableAvatarType, AITableCheckType, AITableContextMenu, AITableDomGrid, AITableFieldIsSameOptionPipe, AITableFieldSetting, AITableFieldType, AITableFilterOperation, AITableGrid, AITableGridEventService, AITableGridFieldService, AITableGridI18nKey, AITableGridSelectionService, AITableMemberType, AITableMouseDownType, AITableQueries, AITableRenderer, AITableRowColumnType, AITableRowType, AITableSelectAllState, AITableSelectOptionStyle, AITableStatType, AI_TABLE_ACTION_COMMON_RADIUS, AI_TABLE_ACTION_COMMON_RIGHT_PADDING, AI_TABLE_ACTION_COMMON_SIZE, AI_TABLE_BLANK, AI_TABLE_CELL, AI_TABLE_CELL_ACTIVE_BORDER_WIDTH, AI_TABLE_CELL_ADD_ITEM_BUTTON_SIZE, AI_TABLE_CELL_ATTACHMENT_ADD, AI_TABLE_CELL_ATTACHMENT_FILE, AI_TABLE_CELL_BORDER, AI_TABLE_CELL_DELETE_ITEM_BUTTON_SIZE, AI_TABLE_CELL_DELETE_ITEM_BUTTON_SIZE_OFFSET, AI_TABLE_CELL_EMOJI_PADDING, AI_TABLE_CELL_EMOJI_SIZE, AI_TABLE_CELL_FIELD_ITEM_HEIGHT, AI_TABLE_CELL_MAX_ROW_COUNT, AI_TABLE_CELL_MEMBER_ITEM_HEIGHT, AI_TABLE_CELL_MEMBER_ITEM_PADDING, AI_TABLE_CELL_MEMBER_MAX_HEIGHT, AI_TABLE_CELL_MULTI_DOT_RADIUS, AI_TABLE_CELL_MULTI_ITEM_MARGIN_LEFT, AI_TABLE_CELL_MULTI_ITEM_MARGIN_TOP, AI_TABLE_CELL_MULTI_ITEM_MIN_WIDTH, AI_TABLE_CELL_MULTI_PADDING_LEFT, AI_TABLE_CELL_MULTI_PADDING_TOP, AI_TABLE_CELL_PADDING, AI_TABLE_COMMON_FONT_SIZE, AI_TABLE_DEFAULT_COLUMN_WIDTH, AI_TABLE_DOT_RADIUS, AI_TABLE_FIELD_ADD_BUTTON, AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_FIELD_HEAD_ICON_GAP_SIZE, AI_TABLE_FIELD_HEAD_MORE, AI_TABLE_FIELD_HEAD_OPACITY_LINE, AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX, AI_TABLE_FIELD_HEAD_TEXT_MIN_WIDTH, AI_TABLE_FIELD_ITEM_MARGIN_RIGHT, AI_TABLE_FIELD_MAX_WIDTH, AI_TABLE_FIELD_MIDDLE_WIDTH, AI_TABLE_FIELD_MINI_WIDTH, AI_TABLE_FIELD_MIN_WIDTH, AI_TABLE_FILE_ICON_ITEM_HEIGHT, AI_TABLE_FILE_ICON_SIZE, AI_TABLE_GRID_FIELD_SERVICE_MAP, AI_TABLE_ICON_COMMON_SIZE, AI_TABLE_MEMBER_AVATAR_SIZE, AI_TABLE_MEMBER_ITEM_AVATAR_MARGIN_RIGHT, AI_TABLE_MEMBER_ITEM_PADDING_RIGHT, AI_TABLE_MIN_TEXT_WIDTH, AI_TABLE_OFFSET, AI_TABLE_OPTION_ITEM_FONT_SIZE, AI_TABLE_OPTION_ITEM_HEIGHT, AI_TABLE_OPTION_ITEM_PADDING, AI_TABLE_OPTION_ITEM_RADIUS, AI_TABLE_PIECE_RADIUS, AI_TABLE_PIECE_WIDTH, AI_TABLE_POPOVER_LEFT_OFFSET, AI_TABLE_PREVENT_CLEAR_SELECTION_CLASS, AI_TABLE_PROGRESS_BAR_HEIGHT, AI_TABLE_PROGRESS_BAR_RADIUS, AI_TABLE_PROGRESS_TEXT_Width, AI_TABLE_ROW_ADD_BUTTON, AI_TABLE_ROW_BLANK_HEIGHT, AI_TABLE_ROW_HEAD, AI_TABLE_ROW_HEAD_SIZE, AI_TABLE_ROW_HEAD_WIDTH, AI_TABLE_ROW_HEIGHT, AI_TABLE_ROW_SELECT_CHECKBOX, AI_TABLE_SCROLL_BAR_PADDING, AI_TABLE_TAG_FONT_SIZE, AI_TABLE_TAG_PADDING, AI_TABLE_TEXT_GAP, AbstractEditCellEditor, AddOutlinedPath, AttachmentPath, Check, Colors, ColumnCalendarFilledPath, ColumnLinkOutlinedPath, ColumnMemberFilledPath, ColumnMultipleFillPath, ColumnNumberFilledPath, ColumnProgressFilledPath, ColumnRatingFilledPath, ColumnSelectFilledPath, ColumnTextFilledPath, Coordinate, DBL_CLICK_EDIT_TYPE, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_FONT_STYLE, DEFAULT_FONT_WEIGHT, DEFAULT_ICON_SHAPE, DEFAULT_ICON_SIZE, DEFAULT_POINT_POSITION, DEFAULT_SCROLL_STATE, DEFAULT_TEXT_ALIGN_CENTER, DEFAULT_TEXT_ALIGN_LEFT, DEFAULT_TEXT_ALIGN_RIGHT, DEFAULT_TEXT_DECORATION, DEFAULT_TEXT_ELLIPSIS, DEFAULT_TEXT_FILL, DEFAULT_TEXT_LINE_HEIGHT, DEFAULT_TEXT_LISTENING, DEFAULT_TEXT_MAX_CACHE, DEFAULT_TEXT_MAX_HEIGHT, DEFAULT_TEXT_SCALE, DEFAULT_TEXT_TRANSFORMS_ENABLED, DEFAULT_TEXT_VERTICAL_ALIGN_MIDDLE, DEFAULT_TEXT_VERTICAL_ALIGN_TOP, DEFAULT_TEXT_WRAP, DEFAULT_WRAP_TEXT_MAX_ROW, DateCellEditorComponent, DepartmentOutlinedPath, Direction, DragType, FONT_SIZE_SM, FieldModelMap, GRID_CELL_EDITOR_MAP, IsSelectRecordPipe, LinkCellEditorComponent, MIN_COLUMN_WIDTH, MOUSEOVER_EDIT_TYPE, MemberSettingPipe, MoreStandOutlinedPath, NumberCellEditorComponent, ProgressEditorComponent, RatingCellEditorComponent, RendererContext, RowHeight, SelectCellEditorComponent, SelectOptionComponent, SelectOptionPipe, SelectOptionsPipe, SelectSettingPipe, StarFill, TextCellEditorComponent, TextMeasure, Unchecked, UserPipe, WebOutlinedPath, aiTableFragmentAttribute, buildClipboardData, buildGridData, buildGridLinearRows, castToString, compareNumber, compareString, createAITable, createActiveCellBorder, createCells, createDefaultField, createDefaultFieldName, extractLinkUrl, extractText, generateNewName, generateTargetName, getAvatarBgColor, getAvatarShortName, getCellEditorBorderSpace, getCellHorizontalPosition, getColumnIndicesSizeMap, getDefaultFieldValue, getDefaultI18nTextByKey, getDetailByTargetName, getEditorBoxOffset, getEditorSpace, getFieldOptionByField, getFieldOptions, getFieldValue, getHoverCell, getHoverEditorBoxOffset, getHoverEditorSpace, getI18nTextByKey, getMousePosition, getPlaceHolderCellsConfigs, getSystemFieldValue, getTargetName, getTextWidth, getVisibleRangeInfo, handleMouseStyle, hasIntersect, idCreator, idsCreator, imageCache, isArrayField, isCellMatchKeywords, isClipboardReadSupported, isClipboardReadTextSupported, isClipboardWriteSupported, isClipboardWriteTextSupported, isEmpty, isMac, isNumberFiled, isSameFieldOption, isSelectedField, isSystemField, isWindows, isWindowsOS, isWithinFrozenColumnBoundary, readFromClipboard, scrollMax, setMouseStyle, shortIdCreator, shortIdsCreator, stringInclude, textDataCache, transformCellValue, writeToAITable, writeToClipboard, zhIntlCollator };
|
9823
|
+
export { AITable, AITableAreaType, AITableAvatarSize, AITableAvatarType, AITableCheckType, AITableContextMenu, AITableDomGrid, AITableFieldIsSameOptionPipe, AITableFieldSetting, AITableFieldType, AITableFilterOperation, AITableGrid, AITableGridEventService, AITableGridFieldService, AITableGridI18nKey, AITableGridSelectionService, AITableMemberType, AITableMouseDownType, AITableQueries, AITableRenderer, AITableRowColumnType, AITableRowType, AITableSelectAllState, AITableSelectOptionStyle, AITableStatType, AI_TABLE_ACTION_COMMON_RADIUS, AI_TABLE_ACTION_COMMON_RIGHT_PADDING, AI_TABLE_ACTION_COMMON_SIZE, AI_TABLE_BLANK, AI_TABLE_CELL, AI_TABLE_CELL_ACTIVE_BORDER_WIDTH, AI_TABLE_CELL_ADD_ITEM_BUTTON_SIZE, AI_TABLE_CELL_ATTACHMENT_ADD, AI_TABLE_CELL_ATTACHMENT_FILE, AI_TABLE_CELL_BORDER, AI_TABLE_CELL_DELETE_ITEM_BUTTON_SIZE, AI_TABLE_CELL_DELETE_ITEM_BUTTON_SIZE_OFFSET, AI_TABLE_CELL_EDIT, AI_TABLE_CELL_EMOJI_PADDING, AI_TABLE_CELL_EMOJI_SIZE, AI_TABLE_CELL_FIELD_ITEM_HEIGHT, AI_TABLE_CELL_MAX_ROW_COUNT, AI_TABLE_CELL_MEMBER_ITEM_HEIGHT, AI_TABLE_CELL_MEMBER_ITEM_PADDING, AI_TABLE_CELL_MEMBER_MAX_HEIGHT, AI_TABLE_CELL_MULTI_DOT_RADIUS, AI_TABLE_CELL_MULTI_ITEM_MARGIN_LEFT, AI_TABLE_CELL_MULTI_ITEM_MARGIN_TOP, AI_TABLE_CELL_MULTI_ITEM_MIN_WIDTH, AI_TABLE_CELL_MULTI_PADDING_LEFT, AI_TABLE_CELL_MULTI_PADDING_TOP, AI_TABLE_CELL_PADDING, AI_TABLE_COMMON_FONT_SIZE, AI_TABLE_DEFAULT_COLUMN_WIDTH, AI_TABLE_DOT_RADIUS, AI_TABLE_FIELD_ADD_BUTTON, AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_FIELD_HEAD_ICON_GAP_SIZE, AI_TABLE_FIELD_HEAD_MORE, AI_TABLE_FIELD_HEAD_OPACITY_LINE, AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX, AI_TABLE_FIELD_HEAD_TEXT_MIN_WIDTH, AI_TABLE_FIELD_ITEM_MARGIN_RIGHT, AI_TABLE_FIELD_MAX_WIDTH, AI_TABLE_FIELD_MIDDLE_WIDTH, AI_TABLE_FIELD_MINI_WIDTH, AI_TABLE_FIELD_MIN_WIDTH, AI_TABLE_FILE_ICON_ITEM_HEIGHT, AI_TABLE_FILE_ICON_SIZE, AI_TABLE_GRID_FIELD_SERVICE_MAP, AI_TABLE_ICON_COMMON_SIZE, AI_TABLE_MEMBER_AVATAR_SIZE, AI_TABLE_MEMBER_ITEM_AVATAR_MARGIN_RIGHT, AI_TABLE_MEMBER_ITEM_PADDING_RIGHT, AI_TABLE_MIN_TEXT_WIDTH, AI_TABLE_OFFSET, AI_TABLE_OPTION_ITEM_FONT_SIZE, AI_TABLE_OPTION_ITEM_HEIGHT, AI_TABLE_OPTION_ITEM_PADDING, AI_TABLE_OPTION_ITEM_RADIUS, AI_TABLE_PIECE_RADIUS, AI_TABLE_PIECE_WIDTH, AI_TABLE_POPOVER_LEFT_OFFSET, AI_TABLE_PREVENT_CLEAR_SELECTION_CLASS, AI_TABLE_PROGRESS_BAR_HEIGHT, AI_TABLE_PROGRESS_BAR_RADIUS, AI_TABLE_PROGRESS_TEXT_Width, AI_TABLE_ROW_ADD_BUTTON, AI_TABLE_ROW_BLANK_HEIGHT, AI_TABLE_ROW_HEAD, AI_TABLE_ROW_HEAD_SIZE, AI_TABLE_ROW_HEAD_WIDTH, AI_TABLE_ROW_HEIGHT, AI_TABLE_ROW_SELECT_CHECKBOX, AI_TABLE_SCROLL_BAR_PADDING, AI_TABLE_TAG_FONT_SIZE, AI_TABLE_TAG_PADDING, AI_TABLE_TEXT_GAP, AbstractEditCellEditor, AddOutlinedPath, AttachmentPath, Check, Colors, ColumnCalendarFilledPath, ColumnLinkOutlinedPath, ColumnMemberFilledPath, ColumnMultipleFillPath, ColumnNumberFilledPath, ColumnProgressFilledPath, ColumnRatingFilledPath, ColumnRichTextFilledPath, ColumnSelectFilledPath, ColumnTextFilledPath, Coordinate, DBL_CLICK_EDIT_TYPE, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_FONT_STYLE, DEFAULT_FONT_WEIGHT, DEFAULT_ICON_SHAPE, DEFAULT_ICON_SIZE, DEFAULT_POINT_POSITION, DEFAULT_SCROLL_STATE, DEFAULT_TEXT_ALIGN_CENTER, DEFAULT_TEXT_ALIGN_LEFT, DEFAULT_TEXT_ALIGN_RIGHT, DEFAULT_TEXT_DECORATION, DEFAULT_TEXT_ELLIPSIS, DEFAULT_TEXT_FILL, DEFAULT_TEXT_LINE_HEIGHT, DEFAULT_TEXT_LISTENING, DEFAULT_TEXT_MAX_CACHE, DEFAULT_TEXT_MAX_HEIGHT, DEFAULT_TEXT_SCALE, DEFAULT_TEXT_TRANSFORMS_ENABLED, DEFAULT_TEXT_VERTICAL_ALIGN_MIDDLE, DEFAULT_TEXT_VERTICAL_ALIGN_TOP, DEFAULT_TEXT_WRAP, DEFAULT_WRAP_TEXT_MAX_ROW, DateCellEditorComponent, DepartmentOutlinedPath, Direction, DragType, EditPath, FONT_SIZE_SM, FieldModelMap, GRID_CELL_EDITOR_MAP, IsSelectRecordPipe, KO_CONTAINER_TOKEN, KoComponent, KoContainer, KoShape, KoShapeTypes, KoStage, LinkCellEditorComponent, MIN_COLUMN_WIDTH, MOUSEOVER_EDIT_TYPE, MemberSettingPipe, MoreStandOutlinedPath, NumberCellEditorComponent, ProgressEditorComponent, RatingCellEditorComponent, RendererContext, RowHeight, SelectCellEditorComponent, SelectOptionComponent, SelectOptionPipe, SelectOptionsPipe, SelectSettingPipe, StarFill, TextCellEditorComponent, TextMeasure, Unchecked, UserPipe, WebOutlinedPath, aiTableFragmentAttribute, applyNodeProps, buildClipboardData, buildGridData, buildGridLinearRows, castToString, compareNumber, compareString, createAITable, createActiveCellBorder, createCells, createDefaultField, createDefaultFieldName, createListener, extractLinkUrl, extractText, generateNewName, generateTargetName, getAvatarBgColor, getAvatarShortName, getCellEditorBorderSpace, getCellHorizontalPosition, getColumnIndicesSizeMap, getDefaultFieldValue, getDefaultI18nTextByKey, getDetailByTargetName, getEditorBoxOffset, getEditorSpace, getFieldOptionByField, getFieldOptions, getFieldValue, getHoverCell, getHoverEditorBoxOffset, getHoverEditorSpace, getI18nTextByKey, getMousePosition, getName, getPlaceHolderCellsConfigs, getSystemFieldValue, getTargetName, getTextWidth, getVisibleRangeInfo, handleMouseStyle, hasIntersect, idCreator, idsCreator, imageCache, isArrayField, isCellMatchKeywords, isClipboardReadSupported, isClipboardReadTextSupported, isClipboardWriteSupported, isClipboardWriteTextSupported, isEmpty, isMac, isNumberFiled, isSameFieldOption, isSelectedField, isSystemField, isWindows, isWindowsOS, isWithinFrozenColumnBoundary, readFromClipboard, scrollMax, setMouseStyle, shortIdCreator, shortIdsCreator, stringInclude, textDataCache, transformCellValue, updatePicture, writeToAITable, writeToClipboard, zhIntlCollator };
|
9729
9824
|
//# sourceMappingURL=ai-table-grid.mjs.map
|